{
  "version": 3,
  "sources": ["../../../WebApps/node_modules/base64-js/index.js", "../../../WebApps/node_modules/ieee754/index.js", "../../../WebApps/node_modules/buffer/index.js", "../../../WebApps/node_modules/react/cjs/react.development.js", "../../../WebApps/node_modules/react/index.js", "../../../WebApps/node_modules/i18next/dist/esm/i18next.js", "../../../WebApps/node_modules/styled-components/node_modules/stylis/stylis.js", "../../../WebApps/node_modules/styled-components/node_modules/stylis-rule-sheet/index.js", "../../../WebApps/node_modules/styled-components/node_modules/@emotion/unitless/dist/unitless.browser.esm.js", "../../../WebApps/node_modules/styled-components/node_modules/react-is/cjs/react-is.development.js", "../../../WebApps/node_modules/styled-components/node_modules/react-is/index.js", "../../../WebApps/node_modules/memoize-one/dist/memoize-one.esm.js", "../../../WebApps/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js", "../../../WebApps/node_modules/prop-types/node_modules/react-is/index.js", "../../../WebApps/node_modules/object-assign/index.js", "../../../WebApps/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../WebApps/node_modules/prop-types/lib/has.js", "../../../WebApps/node_modules/prop-types/checkPropTypes.js", "../../../WebApps/node_modules/prop-types/factoryWithTypeCheckers.js", "../../../WebApps/node_modules/prop-types/index.js", "../../../WebApps/node_modules/styled-components/node_modules/@emotion/memoize/dist/memoize.browser.esm.js", "../../../WebApps/node_modules/styled-components/node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js", "../../../WebApps/node_modules/is-what/dist/index.esm.js", "../../../WebApps/node_modules/merge-anything/dist/index.esm.js", "../../../WebApps/node_modules/styled-components/src/models/StyleTags.js", "../../../WebApps/node_modules/styled-components/src/models/ThemeProvider.js", "../../../WebApps/node_modules/styled-components/src/models/StyleSheetManager.js", "../../../WebApps/node_modules/styled-components/src/models/StyledComponent.js", "../../../WebApps/node_modules/styled-components/src/models/GlobalStyle.js", "../../../WebApps/react-components/src/values/colors/colors.ts", "../../../WebApps/react-components/src/values/fonts/fonts.ts", "../../../WebApps/node_modules/@mui/material/colors/common.js", "../../../WebApps/node_modules/@mui/material/colors/red.js", "../../../WebApps/node_modules/@mui/material/colors/purple.js", "../../../WebApps/node_modules/@mui/material/colors/blue.js", "../../../WebApps/node_modules/@mui/material/colors/lightBlue.js", "../../../WebApps/node_modules/@mui/material/colors/green.js", "../../../WebApps/node_modules/@mui/material/colors/orange.js", "../../../WebApps/node_modules/@mui/material/colors/grey.js", "../../../WebApps/node_modules/@mui/material/colors/index.js", "../../../WebApps/node_modules/@mui/utils/esm/chainPropTypes/chainPropTypes.js", "../../../WebApps/node_modules/@mui/utils/esm/chainPropTypes/index.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../WebApps/node_modules/@mui/utils/esm/deepmerge/deepmerge.js", "../../../WebApps/node_modules/@mui/utils/esm/deepmerge/index.js", "../../../WebApps/node_modules/@mui/utils/esm/elementAcceptingRef/elementAcceptingRef.js", "../../../WebApps/node_modules/@mui/utils/esm/elementAcceptingRef/index.js", "../../../WebApps/node_modules/@mui/utils/esm/elementTypeAcceptingRef/elementTypeAcceptingRef.js", "../../../WebApps/node_modules/@mui/utils/esm/elementTypeAcceptingRef/index.js", "../../../WebApps/node_modules/@mui/utils/esm/exactProp/exactProp.js", "../../../WebApps/node_modules/@mui/utils/esm/exactProp/index.js", "../../../WebApps/node_modules/@mui/utils/node_modules/react-is/cjs/react-is.development.js", "../../../WebApps/node_modules/@mui/utils/node_modules/react-is/index.js", "../../../WebApps/node_modules/@mui/utils/esm/getDisplayName/getDisplayName.js", "../../../WebApps/node_modules/@mui/utils/esm/getDisplayName/index.js", "../../../WebApps/node_modules/@mui/utils/esm/HTMLElementType/HTMLElementType.js", "../../../WebApps/node_modules/@mui/utils/esm/HTMLElementType/index.js", "../../../WebApps/node_modules/@mui/utils/esm/refType/refType.js", "../../../WebApps/node_modules/@mui/utils/esm/refType/index.js", "../../../WebApps/node_modules/@mui/utils/esm/capitalize/capitalize.js", "../../../WebApps/node_modules/@mui/utils/esm/capitalize/index.js", "../../../WebApps/node_modules/@mui/utils/esm/createChainedFunction/createChainedFunction.js", "../../../WebApps/node_modules/@mui/utils/esm/createChainedFunction/index.js", "../../../WebApps/node_modules/@mui/utils/esm/debounce/debounce.js", "../../../WebApps/node_modules/@mui/utils/esm/debounce/index.js", "../../../WebApps/node_modules/@mui/utils/esm/isMuiElement/isMuiElement.js", "../../../WebApps/node_modules/@mui/utils/esm/isMuiElement/index.js", "../../../WebApps/node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js", "../../../WebApps/node_modules/@mui/utils/esm/ownerDocument/index.js", "../../../WebApps/node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js", "../../../WebApps/node_modules/@mui/utils/esm/ownerWindow/index.js", "../../../WebApps/node_modules/@mui/utils/esm/requirePropFactory/requirePropFactory.js", "../../../WebApps/node_modules/@mui/utils/esm/requirePropFactory/index.js", "../../../WebApps/node_modules/@mui/utils/esm/setRef/setRef.js", "../../../WebApps/node_modules/@mui/utils/esm/setRef/index.js", "../../../WebApps/node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js", "../../../WebApps/node_modules/@mui/utils/esm/useEnhancedEffect/index.js", "../../../WebApps/node_modules/@mui/utils/esm/useId/useId.js", "../../../WebApps/node_modules/@mui/utils/esm/useId/index.js", "../../../WebApps/node_modules/@mui/utils/esm/unsupportedProp/unsupportedProp.js", "../../../WebApps/node_modules/@mui/utils/esm/unsupportedProp/index.js", "../../../WebApps/node_modules/@mui/utils/esm/useControlled/useControlled.js", "../../../WebApps/node_modules/@mui/utils/esm/useControlled/index.js", "../../../WebApps/node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js", "../../../WebApps/node_modules/@mui/utils/esm/useEventCallback/index.js", "../../../WebApps/node_modules/@mui/utils/esm/useForkRef/useForkRef.js", "../../../WebApps/node_modules/@mui/utils/esm/useForkRef/index.js", "../../../WebApps/node_modules/@mui/utils/esm/useTimeout/useTimeout.js", "../../../WebApps/node_modules/@mui/utils/esm/useIsFocusVisible/useIsFocusVisible.js", "../../../WebApps/node_modules/@mui/utils/esm/useIsFocusVisible/index.js", "../../../WebApps/node_modules/@mui/utils/esm/getScrollbarSize/getScrollbarSize.js", "../../../WebApps/node_modules/@mui/utils/esm/getScrollbarSize/index.js", "../../../WebApps/node_modules/@mui/utils/esm/usePreviousProps/usePreviousProps.js", "../../../WebApps/node_modules/@mui/utils/esm/usePreviousProps/index.js", "../../../WebApps/node_modules/@mui/utils/esm/visuallyHidden/visuallyHidden.js", "../../../WebApps/node_modules/@mui/utils/esm/visuallyHidden/index.js", "../../../WebApps/node_modules/@mui/utils/esm/integerPropType/integerPropType.js", "../../../WebApps/node_modules/@mui/utils/esm/integerPropType/index.js", "../../../WebApps/node_modules/@mui/utils/esm/resolveProps/resolveProps.js", "../../../WebApps/node_modules/@mui/utils/esm/resolveProps/index.js", "../../../WebApps/node_modules/@mui/utils/esm/composeClasses/composeClasses.js", "../../../WebApps/node_modules/@mui/utils/esm/composeClasses/index.js", "../../../WebApps/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js", "../../../WebApps/node_modules/@mui/utils/esm/ClassNameGenerator/index.js", "../../../WebApps/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js", "../../../WebApps/node_modules/@mui/utils/esm/generateUtilityClass/index.js", "../../../WebApps/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js", "../../../WebApps/node_modules/@mui/utils/esm/generateUtilityClasses/index.js", "../../../WebApps/node_modules/@mui/utils/esm/clamp/clamp.js", "../../../WebApps/node_modules/@mui/utils/esm/clamp/index.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../WebApps/node_modules/@mui/utils/esm/types.js", "../../../WebApps/node_modules/@mui/utils/esm/index.js", "../../../WebApps/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js", "../../../WebApps/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js", "../../../WebApps/node_modules/@emotion/sheet/dist/emotion-sheet.esm.js", "../../../WebApps/node_modules/stylis/src/Enum.js", "../../../WebApps/node_modules/stylis/src/Utility.js", "../../../WebApps/node_modules/stylis/src/Tokenizer.js", "../../../WebApps/node_modules/stylis/src/Parser.js", "../../../WebApps/node_modules/stylis/src/Prefixer.js", "../../../WebApps/node_modules/stylis/src/Serializer.js", "../../../WebApps/node_modules/stylis/src/Middleware.js", "../../../WebApps/node_modules/stylis/index.js", "../../../WebApps/node_modules/@emotion/cache/node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js", "../../../WebApps/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js", "../../../WebApps/node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js", "../../../WebApps/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js", "../../../WebApps/node_modules/hoist-non-react-statics/node_modules/react-is/index.js", "../../../WebApps/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js", "../../../WebApps/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js", "../../../WebApps/node_modules/@emotion/hash/dist/emotion-hash.esm.js", "../../../WebApps/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js", "../../../WebApps/node_modules/@emotion/serialize/dist/emotion-serialize.esm.js", "../../../WebApps/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js", "../../../WebApps/node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js", "../../../WebApps/node_modules/@emotion/react/dist/emotion-react.browser.esm.js", "../../../WebApps/node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js", "../../../WebApps/node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js", "../../../WebApps/node_modules/react/cjs/react-jsx-runtime.development.js", "../../../WebApps/node_modules/react/jsx-runtime.js", "../../../WebApps/node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js", "../../../WebApps/node_modules/@mui/styled-engine/GlobalStyles/index.js", "../../../WebApps/node_modules/@mui/styled-engine/index.js", "../../../WebApps/node_modules/@mui/system/esm/createTheme/createBreakpoints.js", "../../../WebApps/node_modules/@mui/system/esm/createTheme/shape.js", "../../../WebApps/node_modules/@mui/system/esm/responsivePropType.js", "../../../WebApps/node_modules/@mui/system/esm/merge.js", "../../../WebApps/node_modules/@mui/system/esm/breakpoints.js", "../../../WebApps/node_modules/@mui/system/esm/style.js", "../../../WebApps/node_modules/@mui/system/esm/memoize.js", "../../../WebApps/node_modules/@mui/system/esm/spacing.js", "../../../WebApps/node_modules/@mui/system/esm/createTheme/createSpacing.js", "../../../WebApps/node_modules/@mui/system/esm/compose.js", "../../../WebApps/node_modules/@mui/system/esm/borders.js", "../../../WebApps/node_modules/@mui/system/esm/cssGrid.js", "../../../WebApps/node_modules/@mui/system/esm/palette.js", "../../../WebApps/node_modules/@mui/system/esm/sizing.js", "../../../WebApps/node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js", "../../../WebApps/node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js", "../../../WebApps/node_modules/@mui/system/esm/createTheme/applyStyles.js", "../../../WebApps/node_modules/@mui/system/esm/createTheme/createTheme.js", "../../../WebApps/node_modules/@mui/system/esm/createTheme/index.js", "../../../WebApps/node_modules/@mui/system/esm/useThemeWithoutDefault.js", "../../../WebApps/node_modules/@mui/system/esm/useTheme.js", "../../../WebApps/node_modules/@mui/system/esm/GlobalStyles/GlobalStyles.js", "../../../WebApps/node_modules/@mui/system/esm/GlobalStyles/index.js", "../../../WebApps/node_modules/@mui/system/esm/flexbox.js", "../../../WebApps/node_modules/@mui/system/esm/positions.js", "../../../WebApps/node_modules/@mui/system/esm/typography.js", "../../../WebApps/node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js", "../../../WebApps/node_modules/@mui/system/esm/styleFunctionSx/index.js", "../../../WebApps/node_modules/@mui/system/node_modules/clsx/dist/clsx.mjs", "../../../WebApps/node_modules/@mui/system/esm/createBox.js", "../../../WebApps/node_modules/@mui/system/esm/createStyled.js", "../../../WebApps/node_modules/@mui/system/esm/useThemeProps/getThemeProps.js", "../../../WebApps/node_modules/@mui/system/esm/useThemeProps/useThemeProps.js", "../../../WebApps/node_modules/@mui/system/esm/useThemeProps/index.js", "../../../WebApps/node_modules/@mui/system/esm/colorManipulator.js", "../../../WebApps/node_modules/@mui/private-theming/useTheme/ThemeContext.js", "../../../WebApps/node_modules/@mui/private-theming/useTheme/useTheme.js", "../../../WebApps/node_modules/@mui/private-theming/useTheme/index.js", "../../../WebApps/node_modules/@mui/private-theming/ThemeProvider/nested.js", "../../../WebApps/node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js", "../../../WebApps/node_modules/@mui/private-theming/ThemeProvider/index.js", "../../../WebApps/node_modules/@mui/private-theming/index.js", "../../../WebApps/node_modules/@mui/system/esm/RtlProvider/index.js", "../../../WebApps/node_modules/@mui/system/esm/DefaultPropsProvider/DefaultPropsProvider.js", "../../../WebApps/node_modules/@mui/system/esm/DefaultPropsProvider/index.js", "../../../WebApps/node_modules/@mui/system/esm/ThemeProvider/useLayerOrder.js", "../../../WebApps/node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js", "../../../WebApps/node_modules/@mui/system/esm/ThemeProvider/index.js", "../../../WebApps/node_modules/@mui/system/esm/InitColorSchemeScript/InitColorSchemeScript.js", "../../../WebApps/node_modules/@mui/system/esm/cssVars/useCurrentColorScheme.js", "../../../WebApps/node_modules/@mui/system/esm/cssVars/createCssVarsProvider.js", "../../../WebApps/node_modules/@mui/system/esm/cssVars/createGetCssVar.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../../WebApps/node_modules/@mui/system/esm/version/index.js", "../../../WebApps/node_modules/@mui/system/esm/Container/containerClasses.js", "../../../WebApps/node_modules/@mui/system/esm/Container/index.js", "../../../WebApps/node_modules/@mui/system/esm/Unstable_Grid/GridProps.js", "../../../WebApps/node_modules/@mui/system/esm/Unstable_Grid/gridClasses.js", "../../../WebApps/node_modules/@mui/system/esm/Unstable_Grid/index.js", "../../../WebApps/node_modules/@mui/system/esm/Stack/StackProps.js", "../../../WebApps/node_modules/@mui/system/esm/Stack/stackClasses.js", "../../../WebApps/node_modules/@mui/system/esm/Stack/index.js", "../../../WebApps/node_modules/@mui/system/esm/index.js", "../../../WebApps/node_modules/@mui/material/generateUtilityClass/index.js", "../../../WebApps/node_modules/@mui/material/styles/createMixins.js", "../../../WebApps/node_modules/@mui/material/styles/createPalette.js", "../../../WebApps/node_modules/@mui/material/styles/createTypography.js", "../../../WebApps/node_modules/@mui/material/styles/shadows.js", "../../../WebApps/node_modules/@mui/material/styles/createTransitions.js", "../../../WebApps/node_modules/@mui/material/styles/zIndex.js", "../../../WebApps/node_modules/@mui/material/styles/createTheme.js", "../../../WebApps/node_modules/@mui/material/styles/cssUtils.js", "../../../WebApps/node_modules/@mui/material/styles/defaultTheme.js", "../../../WebApps/node_modules/@mui/material/styles/useTheme.js", "../../../WebApps/node_modules/@mui/material/styles/useThemeProps.js", "../../../WebApps/node_modules/@mui/material/styles/styled.js", "../../../WebApps/node_modules/@mui/material/styles/ThemeProvider.js", "../../../WebApps/node_modules/@mui/material/styles/getOverlayAlpha.js", "../../../WebApps/node_modules/@mui/material/styles/experimental_extendTheme.js", "../../../WebApps/node_modules/@mui/material/styles/excludeVariablesFromRoot.js", "../../../WebApps/node_modules/@mui/material/styles/CssVarsProvider.js", "../../../WebApps/node_modules/@mui/material/styles/index.js", "../../../WebApps/node_modules/@mui/material/utils/capitalize.js", "../../../WebApps/node_modules/clsx/dist/clsx.m.js", "../../../WebApps/node_modules/@mui/base/utils/isHostComponent.js", "../../../WebApps/node_modules/@mui/base/utils/appendOwnerState.js", "../../../WebApps/node_modules/@mui/base/utils/extractEventHandlers.js", "../../../WebApps/node_modules/@mui/base/utils/resolveComponentProps.js", "../../../WebApps/node_modules/@mui/base/utils/omitEventHandlers.js", "../../../WebApps/node_modules/@mui/base/utils/mergeSlotProps.js", "../../../WebApps/node_modules/@mui/base/utils/useSlotProps.js", "../../../WebApps/node_modules/@mui/base/utils/types.js", "../../../WebApps/node_modules/@mui/base/utils/index.js", "../../../WebApps/node_modules/@mui/base/AutocompleteUnstyled/useAutocomplete.js", "../../../WebApps/node_modules/@mui/base/AutocompleteUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/composeClasses/index.js", "../../../WebApps/node_modules/@mui/base/BadgeUnstyled/useBadge.js", "../../../WebApps/node_modules/@mui/base/generateUtilityClasses/index.js", "../../../WebApps/node_modules/@mui/base/generateUtilityClass/index.js", "../../../WebApps/node_modules/@mui/base/BadgeUnstyled/badgeUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/BadgeUnstyled/BadgeUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/BadgeUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/ButtonUnstyled/ButtonUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/ButtonUnstyled/useButton.types.js", "../../../WebApps/node_modules/@mui/base/ButtonUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/ClickAwayListener/ClickAwayListener.js", "../../../WebApps/node_modules/@mui/base/ClickAwayListener/index.js", "../../../WebApps/node_modules/@mui/base/FocusTrap/FocusTrap.js", "../../../WebApps/node_modules/@mui/base/FocusTrap/FocusTrap.types.js", "../../../WebApps/node_modules/@mui/base/FocusTrap/index.js", "../../../WebApps/node_modules/@mui/base/FormControlUnstyled/formControlUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/FormControlUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/InputUnstyled/inputUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/InputUnstyled/InputUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/InputUnstyled/useInput.types.js", "../../../WebApps/node_modules/@mui/base/InputUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/ListboxUnstyled/useListbox.types.js", "../../../WebApps/node_modules/@mui/base/ListboxUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/MenuUnstyled/MenuUnstyledContext.js", "../../../WebApps/node_modules/@mui/base/MenuUnstyled/menuUnstyledClasses.js", "../../../WebApps/node_modules/@popperjs/core/lib/enums.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../../../WebApps/node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/math.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/userAgent.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/contains.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/within.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../../../WebApps/node_modules/@popperjs/core/lib/modifiers/arrow.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/getVariation.js", "../../../WebApps/node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../../../WebApps/node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../../../WebApps/node_modules/@popperjs/core/lib/modifiers/flip.js", "../../../WebApps/node_modules/@popperjs/core/lib/modifiers/hide.js", "../../../WebApps/node_modules/@popperjs/core/lib/modifiers/offset.js", "../../../WebApps/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../../../WebApps/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../../../WebApps/node_modules/@popperjs/core/lib/modifiers/index.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../../../WebApps/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/debounce.js", "../../../WebApps/node_modules/@popperjs/core/lib/utils/mergeByName.js", "../../../WebApps/node_modules/@popperjs/core/lib/createPopper.js", "../../../WebApps/node_modules/@popperjs/core/lib/popper.js", "../../../WebApps/node_modules/@popperjs/core/lib/index.js", "../../../WebApps/node_modules/scheduler/cjs/scheduler.development.js", "../../../WebApps/node_modules/scheduler/index.js", "../../../WebApps/node_modules/react-dom/cjs/react-dom.development.js", "../../../WebApps/node_modules/react-dom/index.js", "../../../WebApps/node_modules/@mui/base/Portal/Portal.js", "../../../WebApps/node_modules/@mui/base/Portal/Portal.types.js", "../../../WebApps/node_modules/@mui/base/Portal/index.js", "../../../WebApps/node_modules/@mui/base/PopperUnstyled/popperUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/PopperUnstyled/PopperUnstyled.js", "../../../WebApps/node_modules/@mui/base/PopperUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/MenuUnstyled/MenuUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/MenuUnstyled/useMenu.types.js", "../../../WebApps/node_modules/@mui/base/MenuUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/MenuItemUnstyled/menuItemUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/MenuItemUnstyled/MenuItemUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/MenuItemUnstyled/useMenuItem.types.js", "../../../WebApps/node_modules/@mui/base/MenuItemUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/ModalUnstyled/ModalManager.js", "../../../WebApps/node_modules/@mui/base/ModalUnstyled/modalUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/ModalUnstyled/ModalUnstyled.js", "../../../WebApps/node_modules/@mui/base/ModalUnstyled/ModalUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/ModalUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/SelectUnstyled/useSelect.types.js", "../../../WebApps/node_modules/@mui/base/SelectUnstyled/utils.js", "../../../WebApps/node_modules/@mui/base/SelectUnstyled/SelectUnstyledContext.js", "../../../WebApps/node_modules/@mui/base/SelectUnstyled/selectUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/MultiSelectUnstyled/MultiSelectUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/MultiSelectUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/OptionGroupUnstyled/optionGroupUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/OptionGroupUnstyled/OptionGroupUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/OptionGroupUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/OptionUnstyled/optionUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/OptionUnstyled/OptionUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/OptionUnstyled/useOption.types.js", "../../../WebApps/node_modules/@mui/base/OptionUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/SelectUnstyled/SelectUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/SelectUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/SliderUnstyled/sliderUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/SliderUnstyled/useSlider.js", "../../../WebApps/node_modules/@mui/base/SliderUnstyled/SliderUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/SliderUnstyled/useSlider.types.js", "../../../WebApps/node_modules/@mui/base/SliderUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/SnackbarUnstyled/snackbarUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/SnackbarUnstyled/SnackbarUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/SnackbarUnstyled/useSnackbar.types.js", "../../../WebApps/node_modules/@mui/base/SnackbarUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/SwitchUnstyled/switchUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/SwitchUnstyled/SwitchUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/SwitchUnstyled/useSwitch.types.js", "../../../WebApps/node_modules/@mui/base/SwitchUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/TablePaginationUnstyled/tablePaginationUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/TablePaginationUnstyled/TablePaginationUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/TablePaginationUnstyled/TablePaginationActionsUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/TablePaginationUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/TabPanelUnstyled/tabPanelUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/TabsUnstyled/tabsUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/TabsUnstyled/useTabs.js", "../../../WebApps/node_modules/@mui/base/TabsUnstyled/TabsContext.js", "../../../WebApps/node_modules/@mui/base/TabsUnstyled/TabsUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/TabsUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/TabPanelUnstyled/TabPanelUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/TabPanelUnstyled/useTabPanel.types.js", "../../../WebApps/node_modules/@mui/base/TabPanelUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/TabsListUnstyled/tabsListUnstyledClasses.js", "../../../WebApps/node_modules/react-is/cjs/react-is.development.js", "../../../WebApps/node_modules/react-is/index.js", "../../../WebApps/node_modules/@mui/base/TabsListUnstyled/TabsListUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/TabsListUnstyled/useTabsList.types.js", "../../../WebApps/node_modules/@mui/base/TabsListUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/TabUnstyled/tabUnstyledClasses.js", "../../../WebApps/node_modules/@mui/base/TabUnstyled/TabUnstyled.types.js", "../../../WebApps/node_modules/@mui/base/TabUnstyled/useTab.types.js", "../../../WebApps/node_modules/@mui/base/TabUnstyled/index.js", "../../../WebApps/node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js", "../../../WebApps/node_modules/@mui/base/TextareaAutosize/index.js", "../../../WebApps/node_modules/@mui/base/index.js", "../../../WebApps/node_modules/@mui/material/SvgIcon/svgIconClasses.js", "../../../WebApps/node_modules/@mui/material/SvgIcon/SvgIcon.js", "../../../WebApps/node_modules/@mui/material/SvgIcon/index.js", "../../../WebApps/node_modules/@mui/material/utils/createSvgIcon.js", "../../../WebApps/node_modules/@mui/material/utils/debounce.js", "../../../WebApps/node_modules/@mui/material/utils/isMuiElement.js", "../../../WebApps/node_modules/@mui/material/utils/ownerDocument.js", "../../../WebApps/node_modules/@mui/material/utils/ownerWindow.js", "../../../WebApps/node_modules/@mui/material/utils/requirePropFactory.js", "../../../WebApps/node_modules/@mui/material/utils/useEnhancedEffect.js", "../../../WebApps/node_modules/@mui/material/utils/useId.js", "../../../WebApps/node_modules/@mui/material/utils/unsupportedProp.js", "../../../WebApps/node_modules/@mui/material/utils/useControlled.js", "../../../WebApps/node_modules/@mui/material/utils/useEventCallback.js", "../../../WebApps/node_modules/@mui/material/utils/useForkRef.js", "../../../WebApps/node_modules/@mui/material/utils/useIsFocusVisible.js", "../../../WebApps/node_modules/@mui/material/utils/index.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js", "../../../WebApps/node_modules/dom-helpers/esm/hasClass.js", "../../../WebApps/node_modules/dom-helpers/esm/addClass.js", "../../../WebApps/node_modules/dom-helpers/esm/removeClass.js", "../../../WebApps/node_modules/react-transition-group/esm/config.js", "../../../WebApps/node_modules/react-transition-group/esm/utils/PropTypes.js", "../../../WebApps/node_modules/react-transition-group/esm/TransitionGroupContext.js", "../../../WebApps/node_modules/react-transition-group/esm/utils/reflow.js", "../../../WebApps/node_modules/react-transition-group/esm/Transition.js", "../../../WebApps/node_modules/react-transition-group/esm/CSSTransition.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js", "../../../WebApps/node_modules/react-transition-group/esm/utils/ChildMapping.js", "../../../WebApps/node_modules/react-transition-group/esm/TransitionGroup.js", "../../../WebApps/node_modules/react-transition-group/esm/index.js", "../../../WebApps/node_modules/@mui/material/transitions/utils.js", "../../../WebApps/node_modules/@mui/material/Collapse/collapseClasses.js", "../../../WebApps/node_modules/@mui/material/Collapse/Collapse.js", "../../../WebApps/node_modules/@mui/material/Collapse/index.js", "../../../WebApps/node_modules/@mui/material/Paper/paperClasses.js", "../../../WebApps/node_modules/@mui/material/Paper/Paper.js", "../../../WebApps/node_modules/@mui/material/Paper/index.js", "../../../WebApps/node_modules/@mui/material/Accordion/AccordionContext.js", "../../../WebApps/node_modules/@mui/material/Accordion/accordionClasses.js", "../../../WebApps/node_modules/@mui/material/Accordion/Accordion.js", "../../../WebApps/node_modules/@mui/material/Accordion/index.js", "../../../WebApps/node_modules/@mui/material/AccordionActions/accordionActionsClasses.js", "../../../WebApps/node_modules/@mui/material/AccordionActions/index.js", "../../../WebApps/node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js", "../../../WebApps/node_modules/@mui/material/AccordionDetails/AccordionDetails.js", "../../../WebApps/node_modules/@mui/material/AccordionDetails/index.js", "../../../WebApps/node_modules/@mui/material/ButtonBase/Ripple.js", "../../../WebApps/node_modules/@mui/material/ButtonBase/touchRippleClasses.js", "../../../WebApps/node_modules/@mui/material/ButtonBase/TouchRipple.js", "../../../WebApps/node_modules/@mui/material/ButtonBase/buttonBaseClasses.js", "../../../WebApps/node_modules/@mui/material/ButtonBase/ButtonBase.js", "../../../WebApps/node_modules/@mui/material/ButtonBase/index.js", "../../../WebApps/node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js", "../../../WebApps/node_modules/@mui/material/AccordionSummary/AccordionSummary.js", "../../../WebApps/node_modules/@mui/material/AccordionSummary/index.js", "../../../WebApps/node_modules/@mui/material/Alert/alertClasses.js", "../../../WebApps/node_modules/@mui/material/IconButton/iconButtonClasses.js", "../../../WebApps/node_modules/@mui/material/IconButton/IconButton.js", "../../../WebApps/node_modules/@mui/material/IconButton/index.js", "../../../WebApps/node_modules/@mui/material/internal/svg-icons/Close.js", "../../../WebApps/node_modules/@mui/material/Alert/index.js", "../../../WebApps/node_modules/@mui/material/Typography/typographyClasses.js", "../../../WebApps/node_modules/@mui/material/Typography/Typography.js", "../../../WebApps/node_modules/@mui/material/Typography/index.js", "../../../WebApps/node_modules/@mui/material/AlertTitle/alertTitleClasses.js", "../../../WebApps/node_modules/@mui/material/AlertTitle/index.js", "../../../WebApps/node_modules/@mui/material/AppBar/appBarClasses.js", "../../../WebApps/node_modules/@mui/material/AppBar/index.js", "../../../WebApps/node_modules/@mui/material/Popper/Popper.js", "../../../WebApps/node_modules/@mui/material/Popper/index.js", "../../../WebApps/node_modules/@mui/material/ListSubheader/listSubheaderClasses.js", "../../../WebApps/node_modules/@mui/material/ListSubheader/ListSubheader.js", "../../../WebApps/node_modules/@mui/material/ListSubheader/index.js", "../../../WebApps/node_modules/@mui/material/internal/svg-icons/Cancel.js", "../../../WebApps/node_modules/@mui/material/Chip/chipClasses.js", "../../../WebApps/node_modules/@mui/material/Chip/Chip.js", "../../../WebApps/node_modules/@mui/material/Chip/index.js", "../../../WebApps/node_modules/@mui/material/FormControl/formControlState.js", "../../../WebApps/node_modules/@mui/material/FormControl/FormControlContext.js", "../../../WebApps/node_modules/@mui/material/FormControl/useFormControl.js", "../../../WebApps/node_modules/@mui/material/GlobalStyles/GlobalStyles.js", "../../../WebApps/node_modules/@mui/material/GlobalStyles/index.js", "../../../WebApps/node_modules/@mui/material/InputBase/utils.js", "../../../WebApps/node_modules/@mui/material/InputBase/inputBaseClasses.js", "../../../WebApps/node_modules/@mui/material/InputBase/InputBase.js", "../../../WebApps/node_modules/@mui/material/InputBase/index.js", "../../../WebApps/node_modules/@mui/material/Input/inputClasses.js", "../../../WebApps/node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js", "../../../WebApps/node_modules/@mui/material/FilledInput/filledInputClasses.js", "../../../WebApps/node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js", "../../../WebApps/node_modules/@mui/material/Autocomplete/autocompleteClasses.js", "../../../WebApps/node_modules/@mui/material/Autocomplete/Autocomplete.js", "../../../WebApps/node_modules/@mui/material/Autocomplete/index.js", "../../../WebApps/node_modules/@mui/material/Avatar/avatarClasses.js", "../../../WebApps/node_modules/@mui/material/Avatar/index.js", "../../../WebApps/node_modules/@mui/material/AvatarGroup/avatarGroupClasses.js", "../../../WebApps/node_modules/@mui/material/AvatarGroup/index.js", "../../../WebApps/node_modules/@mui/material/Fade/Fade.js", "../../../WebApps/node_modules/@mui/material/Fade/index.js", "../../../WebApps/node_modules/@mui/material/Backdrop/backdropClasses.js", "../../../WebApps/node_modules/@mui/material/Backdrop/Backdrop.js", "../../../WebApps/node_modules/@mui/material/Backdrop/index.js", "../../../WebApps/node_modules/@mui/material/Badge/badgeClasses.js", "../../../WebApps/node_modules/@mui/material/Badge/index.js", "../../../WebApps/node_modules/@mui/material/BottomNavigation/bottomNavigationClasses.js", "../../../WebApps/node_modules/@mui/material/BottomNavigation/index.js", "../../../WebApps/node_modules/@mui/material/BottomNavigationAction/bottomNavigationActionClasses.js", "../../../WebApps/node_modules/@mui/material/BottomNavigationAction/index.js", "../../../WebApps/node_modules/@mui/material/className/index.js", "../../../WebApps/node_modules/@mui/material/Box/Box.js", "../../../WebApps/node_modules/@mui/material/Box/index.js", "../../../WebApps/node_modules/@mui/material/Breadcrumbs/breadcrumbsClasses.js", "../../../WebApps/node_modules/@mui/material/Breadcrumbs/index.js", "../../../WebApps/node_modules/@mui/material/Button/buttonClasses.js", "../../../WebApps/node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js", "../../../WebApps/node_modules/@mui/material/Button/Button.js", "../../../WebApps/node_modules/@mui/material/Button/index.js", "../../../WebApps/node_modules/@mui/material/ButtonGroup/buttonGroupClasses.js", "../../../WebApps/node_modules/@mui/material/ButtonGroup/index.js", "../../../WebApps/node_modules/@mui/material/Card/cardClasses.js", "../../../WebApps/node_modules/@mui/material/Card/index.js", "../../../WebApps/node_modules/@mui/material/CardActionArea/cardActionAreaClasses.js", "../../../WebApps/node_modules/@mui/material/CardActionArea/index.js", "../../../WebApps/node_modules/@mui/material/CardActions/cardActionsClasses.js", "../../../WebApps/node_modules/@mui/material/CardActions/index.js", "../../../WebApps/node_modules/@mui/material/CardContent/cardContentClasses.js", "../../../WebApps/node_modules/@mui/material/CardContent/index.js", "../../../WebApps/node_modules/@mui/material/CardHeader/cardHeaderClasses.js", "../../../WebApps/node_modules/@mui/material/CardHeader/index.js", "../../../WebApps/node_modules/@mui/material/CardMedia/cardMediaClasses.js", "../../../WebApps/node_modules/@mui/material/CardMedia/index.js", "../../../WebApps/node_modules/@mui/material/internal/switchBaseClasses.js", "../../../WebApps/node_modules/@mui/material/internal/SwitchBase.js", "../../../WebApps/node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js", "../../../WebApps/node_modules/@mui/material/internal/svg-icons/CheckBox.js", "../../../WebApps/node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js", "../../../WebApps/node_modules/@mui/material/Checkbox/checkboxClasses.js", "../../../WebApps/node_modules/@mui/material/Checkbox/Checkbox.js", "../../../WebApps/node_modules/@mui/material/Checkbox/index.js", "../../../WebApps/node_modules/@mui/material/CircularProgress/circularProgressClasses.js", "../../../WebApps/node_modules/@mui/material/CircularProgress/CircularProgress.js", "../../../WebApps/node_modules/@mui/material/CircularProgress/index.js", "../../../WebApps/node_modules/@mui/material/ClickAwayListener/index.js", "../../../WebApps/node_modules/@mui/material/Container/containerClasses.js", "../../../WebApps/node_modules/@mui/material/Container/index.js", "../../../WebApps/node_modules/@mui/material/CssBaseline/index.js", "../../../WebApps/node_modules/@mui/material/darkScrollbar/index.js", "../../../WebApps/node_modules/@mui/material/Modal/Modal.js", "../../../WebApps/node_modules/@mui/material/Modal/index.js", "../../../WebApps/node_modules/@mui/material/Dialog/dialogClasses.js", "../../../WebApps/node_modules/@mui/material/Dialog/index.js", "../../../WebApps/node_modules/@mui/material/DialogActions/dialogActionsClasses.js", "../../../WebApps/node_modules/@mui/material/DialogActions/index.js", "../../../WebApps/node_modules/@mui/material/DialogContent/dialogContentClasses.js", "../../../WebApps/node_modules/@mui/material/DialogTitle/dialogTitleClasses.js", "../../../WebApps/node_modules/@mui/material/DialogContent/index.js", "../../../WebApps/node_modules/@mui/material/DialogContentText/dialogContentTextClasses.js", "../../../WebApps/node_modules/@mui/material/DialogContentText/index.js", "../../../WebApps/node_modules/@mui/material/DialogTitle/index.js", "../../../WebApps/node_modules/@mui/material/Divider/dividerClasses.js", "../../../WebApps/node_modules/@mui/material/Divider/Divider.js", "../../../WebApps/node_modules/@mui/material/Divider/index.js", "../../../WebApps/node_modules/@mui/material/Slide/index.js", "../../../WebApps/node_modules/@mui/material/Drawer/drawerClasses.js", "../../../WebApps/node_modules/@mui/material/Drawer/index.js", "../../../WebApps/node_modules/@mui/material/Fab/fabClasses.js", "../../../WebApps/node_modules/@mui/material/Fab/index.js", "../../../WebApps/node_modules/@mui/material/FilledInput/FilledInput.js", "../../../WebApps/node_modules/@mui/material/FilledInput/index.js", "../../../WebApps/node_modules/@mui/material/FormControl/formControlClasses.js", "../../../WebApps/node_modules/@mui/material/FormControl/FormControl.js", "../../../WebApps/node_modules/@mui/material/FormControl/index.js", "../../../WebApps/node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js", "../../../WebApps/node_modules/@mui/material/FormControlLabel/index.js", "../../../WebApps/node_modules/@mui/material/FormGroup/formGroupClasses.js", "../../../WebApps/node_modules/@mui/material/FormGroup/index.js", "../../../WebApps/node_modules/@mui/material/FormHelperText/formHelperTextClasses.js", "../../../WebApps/node_modules/@mui/material/FormHelperText/FormHelperText.js", "../../../WebApps/node_modules/@mui/material/FormHelperText/index.js", "../../../WebApps/node_modules/@mui/material/FormLabel/formLabelClasses.js", "../../../WebApps/node_modules/@mui/material/FormLabel/FormLabel.js", "../../../WebApps/node_modules/@mui/material/FormLabel/index.js", "../../../WebApps/node_modules/@mui/material/Grid/GridContext.js", "../../../WebApps/node_modules/@mui/material/Grid/gridClasses.js", "../../../WebApps/node_modules/@mui/material/Grid/Grid.js", "../../../WebApps/node_modules/@mui/material/Grid/index.js", "../../../WebApps/node_modules/@mui/material/Unstable_Grid2/Grid2Props.js", "../../../WebApps/node_modules/@mui/material/Unstable_Grid2/grid2Classes.js", "../../../WebApps/node_modules/@mui/material/Unstable_Grid2/index.js", "../../../WebApps/node_modules/@mui/material/Grow/Grow.js", "../../../WebApps/node_modules/@mui/material/Grow/index.js", "../../../WebApps/node_modules/@mui/material/useMediaQuery/useMediaQuery.js", "../../../WebApps/node_modules/@mui/material/useMediaQuery/index.js", "../../../WebApps/node_modules/@mui/material/Hidden/index.js", "../../../WebApps/node_modules/@mui/material/Icon/iconClasses.js", "../../../WebApps/node_modules/@mui/material/Icon/index.js", "../../../WebApps/node_modules/@mui/material/ImageList/imageListClasses.js", "../../../WebApps/node_modules/@mui/material/ImageList/index.js", "../../../WebApps/node_modules/@mui/material/ImageListItem/imageListItemClasses.js", "../../../WebApps/node_modules/@mui/material/ImageListItem/index.js", "../../../WebApps/node_modules/@mui/material/ImageListItemBar/imageListItemBarClasses.js", "../../../WebApps/node_modules/@mui/material/ImageListItemBar/index.js", "../../../WebApps/node_modules/@mui/material/Input/Input.js", "../../../WebApps/node_modules/@mui/material/Input/index.js", "../../../WebApps/node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js", "../../../WebApps/node_modules/@mui/material/InputAdornment/index.js", "../../../WebApps/node_modules/@mui/material/InputLabel/inputLabelClasses.js", "../../../WebApps/node_modules/@mui/material/InputLabel/InputLabel.js", "../../../WebApps/node_modules/@mui/material/InputLabel/index.js", "../../../WebApps/node_modules/@mui/material/LinearProgress/linearProgressClasses.js", "../../../WebApps/node_modules/@mui/material/LinearProgress/LinearProgress.js", "../../../WebApps/node_modules/@mui/material/LinearProgress/index.js", "../../../WebApps/node_modules/@mui/material/Link/linkClasses.js", "../../../WebApps/node_modules/@mui/material/Link/index.js", "../../../WebApps/node_modules/@mui/material/List/ListContext.js", "../../../WebApps/node_modules/@mui/material/List/listClasses.js", "../../../WebApps/node_modules/@mui/material/List/List.js", "../../../WebApps/node_modules/@mui/material/List/index.js", "../../../WebApps/node_modules/@mui/material/ListItem/listItemClasses.js", "../../../WebApps/node_modules/@mui/material/ListItemButton/listItemButtonClasses.js", "../../../WebApps/node_modules/@mui/material/ListItemButton/index.js", "../../../WebApps/node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js", "../../../WebApps/node_modules/@mui/material/ListItemSecondaryAction/index.js", "../../../WebApps/node_modules/@mui/material/ListItem/index.js", "../../../WebApps/node_modules/@mui/material/ListItemAvatar/listItemAvatarClasses.js", "../../../WebApps/node_modules/@mui/material/ListItemAvatar/index.js", "../../../WebApps/node_modules/@mui/material/ListItemIcon/listItemIconClasses.js", "../../../WebApps/node_modules/@mui/material/ListItemIcon/index.js", "../../../WebApps/node_modules/@mui/material/ListItemText/listItemTextClasses.js", "../../../WebApps/node_modules/@mui/material/ListItemText/index.js", "../../../WebApps/node_modules/@mui/material/utils/getScrollbarSize.js", "../../../WebApps/node_modules/@mui/material/MenuList/MenuList.js", "../../../WebApps/node_modules/@mui/material/MenuList/index.js", "../../../WebApps/node_modules/@mui/material/Popover/popoverClasses.js", "../../../WebApps/node_modules/@mui/material/Popover/Popover.js", "../../../WebApps/node_modules/@mui/material/Popover/index.js", "../../../WebApps/node_modules/@mui/material/Menu/menuClasses.js", "../../../WebApps/node_modules/@mui/material/Menu/Menu.js", "../../../WebApps/node_modules/@mui/material/Menu/index.js", "../../../WebApps/node_modules/@mui/material/MenuItem/menuItemClasses.js", "../../../WebApps/node_modules/@mui/material/MenuItem/index.js", "../../../WebApps/node_modules/@mui/material/MobileStepper/mobileStepperClasses.js", "../../../WebApps/node_modules/@mui/material/MobileStepper/index.js", "../../../WebApps/node_modules/@mui/material/NativeSelect/nativeSelectClasses.js", "../../../WebApps/node_modules/@mui/material/NativeSelect/NativeSelectInput.js", "../../../WebApps/node_modules/@mui/material/NativeSelect/index.js", "../../../WebApps/node_modules/@mui/material/NoSsr/index.js", "../../../WebApps/node_modules/@mui/material/OutlinedInput/NotchedOutline.js", "../../../WebApps/node_modules/@mui/material/OutlinedInput/OutlinedInput.js", "../../../WebApps/node_modules/@mui/material/OutlinedInput/index.js", "../../../WebApps/node_modules/@mui/material/Pagination/paginationClasses.js", "../../../WebApps/node_modules/@mui/material/usePagination/usePagination.js", "../../../WebApps/node_modules/@mui/material/usePagination/index.js", "../../../WebApps/node_modules/@mui/material/PaginationItem/paginationItemClasses.js", "../../../WebApps/node_modules/@mui/material/internal/svg-icons/FirstPage.js", "../../../WebApps/node_modules/@mui/material/internal/svg-icons/LastPage.js", "../../../WebApps/node_modules/@mui/material/internal/svg-icons/NavigateBefore.js", "../../../WebApps/node_modules/@mui/material/internal/svg-icons/NavigateNext.js", "../../../WebApps/node_modules/@mui/material/PaginationItem/PaginationItem.js", "../../../WebApps/node_modules/@mui/material/PaginationItem/index.js", "../../../WebApps/node_modules/@mui/material/Pagination/Pagination.js", "../../../WebApps/node_modules/@mui/material/Pagination/index.js", "../../../WebApps/node_modules/@mui/material/Portal/index.js", "../../../WebApps/node_modules/@mui/material/Radio/radioClasses.js", "../../../WebApps/node_modules/@mui/material/Radio/index.js", "../../../WebApps/node_modules/@mui/material/RadioGroup/index.js", "../../../WebApps/node_modules/@mui/material/Rating/ratingClasses.js", "../../../WebApps/node_modules/@mui/material/Rating/index.js", "../../../WebApps/node_modules/@mui/material/ScopedCssBaseline/scopedCssBaselineClasses.js", "../../../WebApps/node_modules/@mui/material/ScopedCssBaseline/index.js", "../../../WebApps/node_modules/@mui/material/Select/selectClasses.js", "../../../WebApps/node_modules/@mui/material/Select/SelectInput.js", "../../../WebApps/node_modules/@mui/material/Select/Select.js", "../../../WebApps/node_modules/@mui/material/Select/index.js", "../../../WebApps/node_modules/@mui/material/Skeleton/skeletonClasses.js", "../../../WebApps/node_modules/@mui/material/Skeleton/Skeleton.js", "../../../WebApps/node_modules/@mui/material/Skeleton/index.js", "../../../WebApps/node_modules/@mui/material/utils/shouldSpreadAdditionalProps.js", "../../../WebApps/node_modules/@mui/material/Slider/sliderClasses.js", "../../../WebApps/node_modules/@mui/material/Slider/SliderValueLabel.js", "../../../WebApps/node_modules/@mui/material/Slider/Slider.js", "../../../WebApps/node_modules/@mui/material/Slider/index.js", "../../../WebApps/node_modules/@mui/material/SnackbarContent/snackbarContentClasses.js", "../../../WebApps/node_modules/@mui/material/SnackbarContent/index.js", "../../../WebApps/node_modules/@mui/material/Snackbar/snackbarClasses.js", "../../../WebApps/node_modules/@mui/material/Snackbar/index.js", "../../../WebApps/node_modules/@mui/material/Zoom/index.js", "../../../WebApps/node_modules/@mui/material/SpeedDial/speedDialClasses.js", "../../../WebApps/node_modules/@mui/material/SpeedDial/index.js", "../../../WebApps/node_modules/@mui/material/Tooltip/tooltipClasses.js", "../../../WebApps/node_modules/@mui/material/Tooltip/Tooltip.js", "../../../WebApps/node_modules/@mui/material/Tooltip/index.js", "../../../WebApps/node_modules/@mui/material/SpeedDialAction/speedDialActionClasses.js", "../../../WebApps/node_modules/@mui/material/SpeedDialAction/index.js", "../../../WebApps/node_modules/@mui/material/SpeedDialIcon/speedDialIconClasses.js", "../../../WebApps/node_modules/@mui/material/SpeedDialIcon/index.js", "../../../WebApps/node_modules/@mui/material/Stack/index.js", "../../../WebApps/node_modules/@mui/material/Stepper/StepperContext.js", "../../../WebApps/node_modules/@mui/material/Step/StepContext.js", "../../../WebApps/node_modules/@mui/material/Step/stepClasses.js", "../../../WebApps/node_modules/@mui/material/Step/index.js", "../../../WebApps/node_modules/@mui/material/StepIcon/stepIconClasses.js", "../../../WebApps/node_modules/@mui/material/StepIcon/index.js", "../../../WebApps/node_modules/@mui/material/StepLabel/stepLabelClasses.js", "../../../WebApps/node_modules/@mui/material/StepLabel/index.js", "../../../WebApps/node_modules/@mui/material/StepButton/stepButtonClasses.js", "../../../WebApps/node_modules/@mui/material/StepButton/index.js", "../../../WebApps/node_modules/@mui/material/StepConnector/stepConnectorClasses.js", "../../../WebApps/node_modules/@mui/material/StepConnector/index.js", "../../../WebApps/node_modules/@mui/material/StepContent/stepContentClasses.js", "../../../WebApps/node_modules/@mui/material/StepContent/index.js", "../../../WebApps/node_modules/@mui/material/Stepper/stepperClasses.js", "../../../WebApps/node_modules/@mui/material/Stepper/index.js", "../../../WebApps/node_modules/@mui/material/SwipeableDrawer/index.js", "../../../WebApps/node_modules/@mui/material/Switch/switchClasses.js", "../../../WebApps/node_modules/@mui/material/Switch/index.js", "../../../WebApps/node_modules/@mui/material/Tab/tabClasses.js", "../../../WebApps/node_modules/@mui/material/Tab/index.js", "../../../WebApps/node_modules/@mui/material/Table/TableContext.js", "../../../WebApps/node_modules/@mui/material/Table/tableClasses.js", "../../../WebApps/node_modules/@mui/material/Table/Table.js", "../../../WebApps/node_modules/@mui/material/Table/index.js", "../../../WebApps/node_modules/@mui/material/Table/Tablelvl2Context.js", "../../../WebApps/node_modules/@mui/material/TableBody/tableBodyClasses.js", "../../../WebApps/node_modules/@mui/material/TableBody/TableBody.js", "../../../WebApps/node_modules/@mui/material/TableBody/index.js", "../../../WebApps/node_modules/@mui/material/TableCell/tableCellClasses.js", "../../../WebApps/node_modules/@mui/material/TableCell/TableCell.js", "../../../WebApps/node_modules/@mui/material/TableCell/index.js", "../../../WebApps/node_modules/@mui/material/TableContainer/tableContainerClasses.js", "../../../WebApps/node_modules/@mui/material/TableContainer/TableContainer.js", "../../../WebApps/node_modules/@mui/material/TableContainer/index.js", "../../../WebApps/node_modules/@mui/material/TableFooter/tableFooterClasses.js", "../../../WebApps/node_modules/@mui/material/TableFooter/index.js", "../../../WebApps/node_modules/@mui/material/TableHead/tableHeadClasses.js", "../../../WebApps/node_modules/@mui/material/TableHead/TableHead.js", "../../../WebApps/node_modules/@mui/material/TableHead/index.js", "../../../WebApps/node_modules/@mui/material/Toolbar/toolbarClasses.js", "../../../WebApps/node_modules/@mui/material/Toolbar/index.js", "../../../WebApps/node_modules/@mui/material/TablePagination/tablePaginationClasses.js", "../../../WebApps/node_modules/@mui/material/TablePagination/index.js", "../../../WebApps/node_modules/@mui/material/TableRow/tableRowClasses.js", "../../../WebApps/node_modules/@mui/material/TableRow/TableRow.js", "../../../WebApps/node_modules/@mui/material/TableRow/index.js", "../../../WebApps/node_modules/@mui/material/TableSortLabel/tableSortLabelClasses.js", "../../../WebApps/node_modules/@mui/material/TableSortLabel/index.js", "../../../WebApps/node_modules/@mui/material/TabScrollButton/tabScrollButtonClasses.js", "../../../WebApps/node_modules/@mui/material/TabScrollButton/index.js", "../../../WebApps/node_modules/@mui/material/Tabs/tabsClasses.js", "../../../WebApps/node_modules/@mui/material/Tabs/index.js", "../../../WebApps/node_modules/@mui/material/TextField/textFieldClasses.js", "../../../WebApps/node_modules/@mui/material/TextField/TextField.js", "../../../WebApps/node_modules/@mui/material/TextField/index.js", "../../../WebApps/node_modules/@mui/material/TextareaAutosize/index.js", "../../../WebApps/node_modules/@mui/material/ToggleButton/toggleButtonClasses.js", "../../../WebApps/node_modules/@mui/material/ToggleButton/index.js", "../../../WebApps/node_modules/@mui/material/ToggleButtonGroup/toggleButtonGroupClasses.js", "../../../WebApps/node_modules/@mui/material/ToggleButtonGroup/index.js", "../../../WebApps/node_modules/@mui/material/useScrollTrigger/index.js", "../../../WebApps/node_modules/@mui/material/index.js", "../../../WebApps/node_modules/languagedetect/data/lang.json", "../../../WebApps/node_modules/languagedetect/data/unicode_blocks.json", "../../../WebApps/node_modules/languagedetect/lib/Parser.js", "../../../WebApps/node_modules/languagedetect/lib/ISO639.js", "../../../WebApps/node_modules/languagedetect/lib/LanguageDetect.js", "../../../WebApps/node_modules/languagedetect/index.js", "../../../WebApps/node_modules/@postalsys/gettext/lib/plurals.js", "../../../WebApps/node_modules/@postalsys/gettext/lib/gettext.js", "../../../WebApps/node_modules/safer-buffer/safer.js", "../../../WebApps/node_modules/iconv-lite/lib/bom-handling.js", "../../../WebApps/node_modules/safe-buffer/index.js", "../../../WebApps/node_modules/string_decoder/lib/string_decoder.js", "../../../WebApps/node_modules/iconv-lite/encodings/internal.js", "../../../WebApps/node_modules/iconv-lite/encodings/utf32.js", "../../../WebApps/node_modules/iconv-lite/encodings/utf16.js", "../../../WebApps/node_modules/iconv-lite/encodings/utf7.js", "../../../WebApps/node_modules/iconv-lite/encodings/sbcs-codec.js", "../../../WebApps/node_modules/iconv-lite/encodings/sbcs-data.js", "../../../WebApps/node_modules/iconv-lite/encodings/sbcs-data-generated.js", "../../../WebApps/node_modules/iconv-lite/encodings/dbcs-codec.js", "../../../WebApps/node_modules/iconv-lite/encodings/tables/shiftjis.json", "../../../WebApps/node_modules/iconv-lite/encodings/tables/eucjp.json", "../../../WebApps/node_modules/iconv-lite/encodings/tables/cp936.json", "../../../WebApps/node_modules/iconv-lite/encodings/tables/gbk-added.json", "../../../WebApps/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json", "../../../WebApps/node_modules/iconv-lite/encodings/tables/cp949.json", "../../../WebApps/node_modules/iconv-lite/encodings/tables/cp950.json", "../../../WebApps/node_modules/iconv-lite/encodings/tables/big5-added.json", "../../../WebApps/node_modules/iconv-lite/encodings/dbcs-data.js", "../../../WebApps/node_modules/iconv-lite/encodings/index.js", "../../../WebApps/node_modules/iconv-lite/lib/streams.js", "../../../WebApps/node_modules/iconv-lite/lib/index.js", "../../../WebApps/node_modules/encoding/lib/encoding.js", "../../../WebApps/node_modules/readable-stream/lib/ours/primordials.js", "../../../WebApps/node_modules/readable-stream/lib/ours/util/inspect.js", "../../../WebApps/node_modules/readable-stream/lib/ours/errors.js", "../../../WebApps/node_modules/abort-controller/browser.js", "../../../WebApps/node_modules/events/events.js", "../../../WebApps/node_modules/readable-stream/lib/ours/util.js", "../../../WebApps/node_modules/readable-stream/lib/internal/validators.js", "../../../WebApps/node_modules/process/browser.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/utils.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/legacy.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/add-abort-signal.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/state.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/from.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/readable.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/writable.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/duplexify.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/duplex.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/transform.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/passthrough.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/compose.js", "../../../WebApps/node_modules/readable-stream/lib/internal/streams/operators.js", "../../../WebApps/node_modules/readable-stream/lib/stream/promises.js", "../../../WebApps/node_modules/readable-stream/lib/stream.js", "../../../WebApps/node_modules/readable-stream/lib/ours/browser.js", "../../../WebApps/node_modules/has-symbols/shams.js", "../../../WebApps/node_modules/has-tostringtag/shams.js", "../../../WebApps/node_modules/es-object-atoms/index.js", "../../../WebApps/node_modules/es-errors/index.js", "../../../WebApps/node_modules/es-errors/eval.js", "../../../WebApps/node_modules/es-errors/range.js", "../../../WebApps/node_modules/es-errors/ref.js", "../../../WebApps/node_modules/es-errors/syntax.js", "../../../WebApps/node_modules/es-errors/type.js", "../../../WebApps/node_modules/es-errors/uri.js", "../../../WebApps/node_modules/math-intrinsics/abs.js", "../../../WebApps/node_modules/math-intrinsics/floor.js", "../../../WebApps/node_modules/math-intrinsics/max.js", "../../../WebApps/node_modules/math-intrinsics/min.js", "../../../WebApps/node_modules/math-intrinsics/pow.js", "../../../WebApps/node_modules/math-intrinsics/round.js", "../../../WebApps/node_modules/math-intrinsics/isNaN.js", "../../../WebApps/node_modules/math-intrinsics/sign.js", "../../../WebApps/node_modules/gopd/gOPD.js", "../../../WebApps/node_modules/gopd/index.js", "../../../WebApps/node_modules/es-define-property/index.js", "../../../WebApps/node_modules/has-symbols/index.js", "../../../WebApps/node_modules/get-proto/Reflect.getPrototypeOf.js", "../../../WebApps/node_modules/get-proto/Object.getPrototypeOf.js", "../../../WebApps/node_modules/function-bind/implementation.js", "../../../WebApps/node_modules/function-bind/index.js", "../../../WebApps/node_modules/call-bind-apply-helpers/functionCall.js", "../../../WebApps/node_modules/call-bind-apply-helpers/functionApply.js", "../../../WebApps/node_modules/call-bind-apply-helpers/reflectApply.js", "../../../WebApps/node_modules/call-bind-apply-helpers/actualApply.js", "../../../WebApps/node_modules/call-bind-apply-helpers/index.js", "../../../WebApps/node_modules/dunder-proto/get.js", "../../../WebApps/node_modules/get-proto/index.js", "../../../WebApps/node_modules/hasown/index.js", "../../../WebApps/node_modules/get-intrinsic/index.js", "../../../WebApps/node_modules/call-bound/index.js", "../../../WebApps/node_modules/is-arguments/index.js", "../../../WebApps/node_modules/is-regex/index.js", "../../../WebApps/node_modules/safe-regex-test/index.js", "../../../WebApps/node_modules/generator-function/index.js", "../../../WebApps/node_modules/is-generator-function/index.js", "../../../WebApps/node_modules/is-callable/index.js", "../../../WebApps/node_modules/for-each/index.js", "../../../WebApps/node_modules/possible-typed-array-names/index.js", "../../../WebApps/node_modules/available-typed-arrays/index.js", "../../../WebApps/node_modules/define-data-property/index.js", "../../../WebApps/node_modules/has-property-descriptors/index.js", "../../../WebApps/node_modules/set-function-length/index.js", "../../../WebApps/node_modules/call-bind-apply-helpers/applyBind.js", "../../../WebApps/node_modules/call-bind/index.js", "../../../WebApps/node_modules/which-typed-array/index.js", "../../../WebApps/node_modules/is-typed-array/index.js", "../../../WebApps/node_modules/util/support/types.js", "../../../WebApps/node_modules/util/support/isBufferBrowser.js", "../../../WebApps/node_modules/inherits/inherits_browser.js", "../../../WebApps/node_modules/util/util.js", "../../../WebApps/node_modules/content-type/index.js", "../../../WebApps/node_modules/arrify/index.js", "../../../WebApps/node_modules/lodash/lodash.js", "../../../WebApps/node_modules/ua-parser-js/dist/ua-parser.min.js", "../../../WebApps/node_modules/react-device-detect/dist/lib.js", "../../../WebApps/node_modules/react-dom/client.js", "../../../WebApps/react-components/src/buttons/Button.tsx", "../../../WebApps/react-components/src/misc/Tooltip.tsx", "../../../WebApps/react-components/src/icons/Close.tsx", "../../../WebApps/Frontend/Studio/OnBoarding/OnBoardingWidget.tsx", "../../../WebApps/Frontend/Studio/OnBoarding/OnBoardingStageData/0_Introduction.tsx", "../../../WebApps/Frontend/Studio/OnBoarding/OnBoarding.tsx", "../../../WebApps/node_modules/lodash/_listCacheClear.js", "../../../WebApps/node_modules/lodash/eq.js", "../../../WebApps/node_modules/lodash/_assocIndexOf.js", "../../../WebApps/node_modules/lodash/_listCacheDelete.js", "../../../WebApps/node_modules/lodash/_listCacheGet.js", "../../../WebApps/node_modules/lodash/_listCacheHas.js", "../../../WebApps/node_modules/lodash/_listCacheSet.js", "../../../WebApps/node_modules/lodash/_ListCache.js", "../../../WebApps/node_modules/lodash/_stackClear.js", "../../../WebApps/node_modules/lodash/_stackDelete.js", "../../../WebApps/node_modules/lodash/_stackGet.js", "../../../WebApps/node_modules/lodash/_stackHas.js", "../../../WebApps/node_modules/lodash/_freeGlobal.js", "../../../WebApps/node_modules/lodash/_root.js", "../../../WebApps/node_modules/lodash/_Symbol.js", "../../../WebApps/node_modules/lodash/_getRawTag.js", "../../../WebApps/node_modules/lodash/_objectToString.js", "../../../WebApps/node_modules/lodash/_baseGetTag.js", "../../../WebApps/node_modules/lodash/isObject.js", "../../../WebApps/node_modules/lodash/isFunction.js", "../../../WebApps/node_modules/lodash/_coreJsData.js", "../../../WebApps/node_modules/lodash/_isMasked.js", "../../../WebApps/node_modules/lodash/_toSource.js", "../../../WebApps/node_modules/lodash/_baseIsNative.js", "../../../WebApps/node_modules/lodash/_getValue.js", "../../../WebApps/node_modules/lodash/_getNative.js", "../../../WebApps/node_modules/lodash/_Map.js", "../../../WebApps/node_modules/lodash/_nativeCreate.js", "../../../WebApps/node_modules/lodash/_hashClear.js", "../../../WebApps/node_modules/lodash/_hashDelete.js", "../../../WebApps/node_modules/lodash/_hashGet.js", "../../../WebApps/node_modules/lodash/_hashHas.js", "../../../WebApps/node_modules/lodash/_hashSet.js", "../../../WebApps/node_modules/lodash/_Hash.js", "../../../WebApps/node_modules/lodash/_mapCacheClear.js", "../../../WebApps/node_modules/lodash/_isKeyable.js", "../../../WebApps/node_modules/lodash/_getMapData.js", "../../../WebApps/node_modules/lodash/_mapCacheDelete.js", "../../../WebApps/node_modules/lodash/_mapCacheGet.js", "../../../WebApps/node_modules/lodash/_mapCacheHas.js", "../../../WebApps/node_modules/lodash/_mapCacheSet.js", "../../../WebApps/node_modules/lodash/_MapCache.js", "../../../WebApps/node_modules/lodash/_stackSet.js", "../../../WebApps/node_modules/lodash/_Stack.js", "../../../WebApps/node_modules/lodash/_setCacheAdd.js", "../../../WebApps/node_modules/lodash/_setCacheHas.js", "../../../WebApps/node_modules/lodash/_SetCache.js", "../../../WebApps/node_modules/lodash/_arraySome.js", "../../../WebApps/node_modules/lodash/_cacheHas.js", "../../../WebApps/node_modules/lodash/_equalArrays.js", "../../../WebApps/node_modules/lodash/_Uint8Array.js", "../../../WebApps/node_modules/lodash/_mapToArray.js", "../../../WebApps/node_modules/lodash/_setToArray.js", "../../../WebApps/node_modules/lodash/_equalByTag.js", "../../../WebApps/node_modules/lodash/_arrayPush.js", "../../../WebApps/node_modules/lodash/isArray.js", "../../../WebApps/node_modules/lodash/_baseGetAllKeys.js", "../../../WebApps/node_modules/lodash/_arrayFilter.js", "../../../WebApps/node_modules/lodash/stubArray.js", "../../../WebApps/node_modules/lodash/_getSymbols.js", "../../../WebApps/node_modules/lodash/_baseTimes.js", "../../../WebApps/node_modules/lodash/isObjectLike.js", "../../../WebApps/node_modules/lodash/_baseIsArguments.js", "../../../WebApps/node_modules/lodash/isArguments.js", "../../../WebApps/node_modules/lodash/stubFalse.js", "../../../WebApps/node_modules/lodash/isBuffer.js", "../../../WebApps/node_modules/lodash/_isIndex.js", "../../../WebApps/node_modules/lodash/isLength.js", "../../../WebApps/node_modules/lodash/_baseIsTypedArray.js", "../../../WebApps/node_modules/lodash/_baseUnary.js", "../../../WebApps/node_modules/lodash/_nodeUtil.js", "../../../WebApps/node_modules/lodash/isTypedArray.js", "../../../WebApps/node_modules/lodash/_arrayLikeKeys.js", "../../../WebApps/node_modules/lodash/_isPrototype.js", "../../../WebApps/node_modules/lodash/_overArg.js", "../../../WebApps/node_modules/lodash/_nativeKeys.js", "../../../WebApps/node_modules/lodash/_baseKeys.js", "../../../WebApps/node_modules/lodash/isArrayLike.js", "../../../WebApps/node_modules/lodash/keys.js", "../../../WebApps/node_modules/lodash/_getAllKeys.js", "../../../WebApps/node_modules/lodash/_equalObjects.js", "../../../WebApps/node_modules/lodash/_DataView.js", "../../../WebApps/node_modules/lodash/_Promise.js", "../../../WebApps/node_modules/lodash/_Set.js", "../../../WebApps/node_modules/lodash/_WeakMap.js", "../../../WebApps/node_modules/lodash/_getTag.js", "../../../WebApps/node_modules/lodash/_baseIsEqualDeep.js", "../../../WebApps/node_modules/lodash/_baseIsEqual.js", "../../../WebApps/node_modules/lodash/isEqual.js", "../../../WebApps/node_modules/isarray/index.js", "../../../WebApps/node_modules/path-to-regexp/index.js", "../../../WebApps/node_modules/react-router/node_modules/react-is/cjs/react-is.development.js", "../../../WebApps/node_modules/react-router/node_modules/react-is/index.js", "../../../WebApps/node_modules/dayjs/dayjs.min.js", "../../../WebApps/node_modules/dayjs/plugin/weekOfYear.js", "../../../WebApps/node_modules/dayjs/plugin/customParseFormat.js", "../../../WebApps/node_modules/dayjs/plugin/localizedFormat.js", "../../../WebApps/node_modules/dayjs/plugin/isBetween.js", "../../../WebApps/node_modules/dayjs/locale/fr.js", "../../../WebApps/node_modules/dayjs/locale/es.js", "../../../WebApps/node_modules/classnames/index.js", "../../../WebApps/node_modules/lodash/_baseIsMatch.js", "../../../WebApps/node_modules/lodash/_isStrictComparable.js", "../../../WebApps/node_modules/lodash/_getMatchData.js", "../../../WebApps/node_modules/lodash/_matchesStrictComparable.js", "../../../WebApps/node_modules/lodash/_baseMatches.js", "../../../WebApps/node_modules/lodash/isSymbol.js", "../../../WebApps/node_modules/lodash/_isKey.js", "../../../WebApps/node_modules/lodash/memoize.js", "../../../WebApps/node_modules/lodash/_memoizeCapped.js", "../../../WebApps/node_modules/lodash/_stringToPath.js", "../../../WebApps/node_modules/lodash/_arrayMap.js", "../../../WebApps/node_modules/lodash/_baseToString.js", "../../../WebApps/node_modules/lodash/toString.js", "../../../WebApps/node_modules/lodash/_castPath.js", "../../../WebApps/node_modules/lodash/_toKey.js", "../../../WebApps/node_modules/lodash/_baseGet.js", "../../../WebApps/node_modules/lodash/get.js", "../../../WebApps/node_modules/lodash/_baseHasIn.js", "../../../WebApps/node_modules/lodash/_hasPath.js", "../../../WebApps/node_modules/lodash/hasIn.js", "../../../WebApps/node_modules/lodash/_baseMatchesProperty.js", "../../../WebApps/node_modules/lodash/identity.js", "../../../WebApps/node_modules/lodash/_baseProperty.js", "../../../WebApps/node_modules/lodash/_basePropertyDeep.js", "../../../WebApps/node_modules/lodash/property.js", "../../../WebApps/node_modules/lodash/_baseIteratee.js", "../../../WebApps/node_modules/lodash/_baseFindIndex.js", "../../../WebApps/node_modules/lodash/_baseIsNaN.js", "../../../WebApps/node_modules/lodash/_strictIndexOf.js", "../../../WebApps/node_modules/lodash/_baseIndexOf.js", "../../../WebApps/node_modules/lodash/_arrayIncludes.js", "../../../WebApps/node_modules/lodash/_arrayIncludesWith.js", "../../../WebApps/node_modules/lodash/noop.js", "../../../WebApps/node_modules/lodash/_createSet.js", "../../../WebApps/node_modules/lodash/_baseUniq.js", "../../../WebApps/node_modules/lodash/uniqBy.js", "../../../WebApps/node_modules/lodash/_baseSlice.js", "../../../WebApps/node_modules/lodash/_castSlice.js", "../../../WebApps/node_modules/lodash/_hasUnicode.js", "../../../WebApps/node_modules/lodash/_asciiToArray.js", "../../../WebApps/node_modules/lodash/_unicodeToArray.js", "../../../WebApps/node_modules/lodash/_stringToArray.js", "../../../WebApps/node_modules/lodash/_createCaseFirst.js", "../../../WebApps/node_modules/lodash/upperFirst.js", "../../../WebApps/node_modules/lodash/isNumber.js", "../../../WebApps/node_modules/lodash/isNaN.js", "../../../WebApps/node_modules/lodash/isString.js", "../../../WebApps/node_modules/lodash/isNil.js", "../../../WebApps/node_modules/@babel/runtime/helpers/interopRequireDefault.js", "../../../WebApps/node_modules/react-smooth/node_modules/dom-helpers/class/hasClass.js", "../../../WebApps/node_modules/react-smooth/node_modules/dom-helpers/class/addClass.js", "../../../WebApps/node_modules/react-smooth/node_modules/dom-helpers/class/removeClass.js", "../../../WebApps/node_modules/react-lifecycles-compat/react-lifecycles-compat.cjs.js", "../../../WebApps/node_modules/react-smooth/node_modules/react-transition-group/utils/PropTypes.js", "../../../WebApps/node_modules/react-smooth/node_modules/react-transition-group/Transition.js", "../../../WebApps/node_modules/react-smooth/node_modules/react-transition-group/CSSTransition.js", "../../../WebApps/node_modules/react-smooth/node_modules/react-transition-group/utils/ChildMapping.js", "../../../WebApps/node_modules/react-smooth/node_modules/react-transition-group/TransitionGroup.js", "../../../WebApps/node_modules/react-smooth/node_modules/react-transition-group/ReplaceTransition.js", "../../../WebApps/node_modules/react-smooth/node_modules/react-transition-group/index.js", "../../../WebApps/node_modules/lodash/_isFlattenable.js", "../../../WebApps/node_modules/lodash/_baseFlatten.js", "../../../WebApps/node_modules/lodash/_createBaseFor.js", "../../../WebApps/node_modules/lodash/_baseFor.js", "../../../WebApps/node_modules/lodash/_baseForOwn.js", "../../../WebApps/node_modules/lodash/_createBaseEach.js", "../../../WebApps/node_modules/lodash/_baseEach.js", "../../../WebApps/node_modules/lodash/_baseMap.js", "../../../WebApps/node_modules/lodash/_baseSortBy.js", "../../../WebApps/node_modules/lodash/_compareAscending.js", "../../../WebApps/node_modules/lodash/_compareMultiple.js", "../../../WebApps/node_modules/lodash/_baseOrderBy.js", "../../../WebApps/node_modules/lodash/_apply.js", "../../../WebApps/node_modules/lodash/_overRest.js", "../../../WebApps/node_modules/lodash/constant.js", "../../../WebApps/node_modules/lodash/_defineProperty.js", "../../../WebApps/node_modules/lodash/_baseSetToString.js", "../../../WebApps/node_modules/lodash/_shortOut.js", "../../../WebApps/node_modules/lodash/_setToString.js", "../../../WebApps/node_modules/lodash/_baseRest.js", "../../../WebApps/node_modules/lodash/_isIterateeCall.js", "../../../WebApps/node_modules/lodash/sortBy.js", "../../../WebApps/node_modules/lodash/now.js", "../../../WebApps/node_modules/lodash/_trimmedEndIndex.js", "../../../WebApps/node_modules/lodash/_baseTrim.js", "../../../WebApps/node_modules/lodash/toNumber.js", "../../../WebApps/node_modules/lodash/debounce.js", "../../../WebApps/node_modules/postcss-value-parser/lib/parse.js", "../../../WebApps/node_modules/postcss-value-parser/lib/walk.js", "../../../WebApps/node_modules/postcss-value-parser/lib/stringify.js", "../../../WebApps/node_modules/postcss-value-parser/lib/unit.js", "../../../WebApps/node_modules/postcss-value-parser/lib/index.js", "../../../WebApps/node_modules/reduce-css-calc/dist/parser.js", "../../../WebApps/node_modules/css-unit-converter/index.js", "../../../WebApps/node_modules/reduce-css-calc/dist/lib/convert.js", "../../../WebApps/node_modules/reduce-css-calc/dist/lib/reducer.js", "../../../WebApps/node_modules/reduce-css-calc/dist/lib/stringifier.js", "../../../WebApps/node_modules/reduce-css-calc/dist/index.js", "../../../WebApps/node_modules/recharts/node_modules/react-is/cjs/react-is.development.js", "../../../WebApps/node_modules/recharts/node_modules/react-is/index.js", "../../../WebApps/node_modules/lodash/_baseExtremum.js", "../../../WebApps/node_modules/lodash/_baseGt.js", "../../../WebApps/node_modules/lodash/max.js", "../../../WebApps/node_modules/lodash/_baseLt.js", "../../../WebApps/node_modules/lodash/min.js", "../../../WebApps/node_modules/lodash/map.js", "../../../WebApps/node_modules/lodash/flatMap.js", "../../../WebApps/node_modules/decimal.js-light/decimal.js", "../../../WebApps/node_modules/lodash/last.js", "../../../WebApps/node_modules/lodash/minBy.js", "../../../WebApps/node_modules/lodash/maxBy.js", "../../../WebApps/node_modules/lodash/_getPrototype.js", "../../../WebApps/node_modules/lodash/isPlainObject.js", "../../../WebApps/node_modules/lodash/_baseRange.js", "../../../WebApps/node_modules/lodash/toFinite.js", "../../../WebApps/node_modules/lodash/_createRange.js", "../../../WebApps/node_modules/lodash/range.js", "../../../WebApps/node_modules/lodash/_baseSome.js", "../../../WebApps/node_modules/lodash/some.js", "../../../WebApps/node_modules/lodash/_arrayEvery.js", "../../../WebApps/node_modules/lodash/_baseEvery.js", "../../../WebApps/node_modules/lodash/every.js", "../../../WebApps/node_modules/lodash/_baseAssignValue.js", "../../../WebApps/node_modules/lodash/mapValues.js", "../../../WebApps/node_modules/lodash/_createFind.js", "../../../WebApps/node_modules/lodash/toInteger.js", "../../../WebApps/node_modules/lodash/findIndex.js", "../../../WebApps/node_modules/lodash/find.js", "../../../WebApps/node_modules/lodash/throttle.js", "../../../WebApps/node_modules/lodash/isBoolean.js", "../../../WebApps/node_modules/eventemitter3/index.js", "../../../WebApps/node_modules/react-grid-system/build/config.js", "../../../WebApps/node_modules/react-grid-system/build/primitives/Div/index.js", "../../../WebApps/node_modules/react-grid-system/build/primitives/Span/index.js", "../../../WebApps/node_modules/react-grid-system/build/primitives/Window/index.js", "../../../WebApps/node_modules/react-grid-system/build/primitives/index.js", "../../../WebApps/node_modules/react-grid-system/build/utils.js", "../../../WebApps/node_modules/react-grid-system/build/grid/Col/style.js", "../../../WebApps/node_modules/react-grid-system/build/grid/Row/style.js", "../../../WebApps/node_modules/react-grid-system/build/grid/Row/index.js", "../../../WebApps/node_modules/react-grid-system/build/context/ScreenClassProvider/index.js", "../../../WebApps/node_modules/react-grid-system/build/context/ScreenClassResolver/index.js", "../../../WebApps/node_modules/react-grid-system/build/grid/Col/index.js", "../../../WebApps/node_modules/react-grid-system/build/grid/Container/style.js", "../../../WebApps/node_modules/react-grid-system/build/grid/Container/index.js", "../../../WebApps/node_modules/react-grid-system/build/utilities/Hidden/style.js", "../../../WebApps/node_modules/react-grid-system/build/utilities/Hidden/index.js", "../../../WebApps/node_modules/react-grid-system/build/utilities/Visible/style.js", "../../../WebApps/node_modules/react-grid-system/build/utilities/Visible/index.js", "../../../WebApps/node_modules/react-grid-system/build/utilities/ScreenClassRender/index.js", "../../../WebApps/node_modules/react-grid-system/build/index.js", "../../../WebApps/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js", "../../../WebApps/node_modules/react-dom/cjs/react-dom-server.browser.development.js", "../../../WebApps/node_modules/react-dom/server.browser.js", "../../../WebApps/node_modules/html2canvas/node_modules/tslib/tslib.es6.js", "../../../WebApps/node_modules/src/css/layout/bounds.ts", "../../../WebApps/node_modules/html2canvas/node_modules/src/Util.ts", "../../../WebApps/node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Util.ts", "../../../WebApps/node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Trie.ts", "../../../WebApps/node_modules/html2canvas/node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts", "../../../WebApps/node_modules/html2canvas/node_modules/src/linebreak-trie.ts", "../../../WebApps/node_modules/html2canvas/node_modules/src/LineBreak.ts", "../../../WebApps/node_modules/src/css/syntax/tokenizer.ts", "../../../WebApps/node_modules/src/css/syntax/parser.ts", "../../../WebApps/node_modules/src/css/types/length.ts", "../../../WebApps/node_modules/src/css/types/length-percentage.ts", "../../../WebApps/node_modules/src/css/types/angle.ts", "../../../WebApps/node_modules/src/css/types/color.ts", "../../../WebApps/node_modules/src/css/property-descriptors/background-clip.ts", "../../../WebApps/node_modules/src/css/property-descriptors/background-color.ts", "../../../WebApps/node_modules/src/css/types/functions/gradient.ts", "../../../WebApps/node_modules/src/css/types/functions/linear-gradient.ts", "../../../WebApps/node_modules/src/css/types/functions/-prefix-linear-gradient.ts", "../../../WebApps/node_modules/src/css/types/functions/-webkit-gradient.ts", "../../../WebApps/node_modules/src/css/types/functions/radial-gradient.ts", "../../../WebApps/node_modules/src/css/types/functions/-prefix-radial-gradient.ts", "../../../WebApps/node_modules/src/css/types/image.ts", "../../../WebApps/node_modules/src/css/property-descriptors/background-image.ts", "../../../WebApps/node_modules/src/css/property-descriptors/background-origin.ts", "../../../WebApps/node_modules/src/css/property-descriptors/background-position.ts", "../../../WebApps/node_modules/src/css/property-descriptors/background-repeat.ts", "../../../WebApps/node_modules/src/css/property-descriptors/background-size.ts", "../../../WebApps/node_modules/src/css/property-descriptors/border-color.ts", "../../../WebApps/node_modules/src/css/property-descriptors/border-radius.ts", "../../../WebApps/node_modules/src/css/property-descriptors/border-style.ts", "../../../WebApps/node_modules/src/css/property-descriptors/border-width.ts", "../../../WebApps/node_modules/src/css/property-descriptors/color.ts", "../../../WebApps/node_modules/src/css/property-descriptors/direction.ts", "../../../WebApps/node_modules/src/css/property-descriptors/display.ts", "../../../WebApps/node_modules/src/css/property-descriptors/float.ts", "../../../WebApps/node_modules/src/css/property-descriptors/letter-spacing.ts", "../../../WebApps/node_modules/src/css/property-descriptors/line-break.ts", "../../../WebApps/node_modules/src/css/property-descriptors/line-height.ts", "../../../WebApps/node_modules/src/css/property-descriptors/list-style-image.ts", "../../../WebApps/node_modules/src/css/property-descriptors/list-style-position.ts", "../../../WebApps/node_modules/src/css/property-descriptors/list-style-type.ts", "../../../WebApps/node_modules/src/css/property-descriptors/margin.ts", "../../../WebApps/node_modules/src/css/property-descriptors/overflow.ts", "../../../WebApps/node_modules/src/css/property-descriptors/overflow-wrap.ts", "../../../WebApps/node_modules/src/css/property-descriptors/padding.ts", "../../../WebApps/node_modules/src/css/property-descriptors/text-align.ts", "../../../WebApps/node_modules/src/css/property-descriptors/position.ts", "../../../WebApps/node_modules/src/css/property-descriptors/text-shadow.ts", "../../../WebApps/node_modules/src/css/property-descriptors/text-transform.ts", "../../../WebApps/node_modules/src/css/property-descriptors/transform.ts", "../../../WebApps/node_modules/src/css/property-descriptors/transform-origin.ts", "../../../WebApps/node_modules/src/css/property-descriptors/visibility.ts", "../../../WebApps/node_modules/src/css/property-descriptors/word-break.ts", "../../../WebApps/node_modules/src/css/property-descriptors/z-index.ts", "../../../WebApps/node_modules/src/css/types/time.ts", "../../../WebApps/node_modules/src/css/property-descriptors/opacity.ts", "../../../WebApps/node_modules/src/css/property-descriptors/text-decoration-color.ts", "../../../WebApps/node_modules/src/css/property-descriptors/text-decoration-line.ts", "../../../WebApps/node_modules/src/css/property-descriptors/font-family.ts", "../../../WebApps/node_modules/src/css/property-descriptors/font-size.ts", "../../../WebApps/node_modules/src/css/property-descriptors/font-weight.ts", "../../../WebApps/node_modules/src/css/property-descriptors/font-variant.ts", "../../../WebApps/node_modules/src/css/property-descriptors/font-style.ts", "../../../WebApps/node_modules/src/core/bitwise.ts", "../../../WebApps/node_modules/src/css/property-descriptors/content.ts", "../../../WebApps/node_modules/src/css/property-descriptors/counter-increment.ts", "../../../WebApps/node_modules/src/css/property-descriptors/counter-reset.ts", "../../../WebApps/node_modules/src/css/property-descriptors/duration.ts", "../../../WebApps/node_modules/src/css/property-descriptors/quotes.ts", "../../../WebApps/node_modules/src/css/property-descriptors/box-shadow.ts", "../../../WebApps/node_modules/src/css/property-descriptors/paint-order.ts", "../../../WebApps/node_modules/src/css/property-descriptors/webkit-text-stroke-color.ts", "../../../WebApps/node_modules/src/css/property-descriptors/webkit-text-stroke-width.ts", "../../../WebApps/node_modules/src/css/index.ts", "../../../WebApps/node_modules/src/core/debugger.ts", "../../../WebApps/node_modules/src/dom/element-container.ts", "../../../WebApps/node_modules/html2canvas/node_modules/src/grapheme-break-trie.ts", "../../../WebApps/node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Util.ts", "../../../WebApps/node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Trie.ts", "../../../WebApps/node_modules/html2canvas/node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts", "../../../WebApps/node_modules/html2canvas/node_modules/src/GraphemeBreak.ts", "../../../WebApps/node_modules/src/core/features.ts", "../../../WebApps/node_modules/src/css/layout/text.ts", "../../../WebApps/node_modules/src/dom/text-container.ts", "../../../WebApps/node_modules/src/dom/replaced-elements/image-element-container.ts", "../../../WebApps/node_modules/src/dom/replaced-elements/canvas-element-container.ts", "../../../WebApps/node_modules/src/dom/replaced-elements/svg-element-container.ts", "../../../WebApps/node_modules/src/dom/elements/li-element-container.ts", "../../../WebApps/node_modules/src/dom/elements/ol-element-container.ts", "../../../WebApps/node_modules/src/dom/replaced-elements/input-element-container.ts", "../../../WebApps/node_modules/src/dom/elements/select-element-container.ts", "../../../WebApps/node_modules/src/dom/elements/textarea-element-container.ts", "../../../WebApps/node_modules/src/dom/replaced-elements/iframe-element-container.ts", "../../../WebApps/node_modules/src/dom/node-parser.ts", "../../../WebApps/node_modules/src/css/types/functions/counter.ts", "../../../WebApps/node_modules/src/dom/document-cloner.ts", "../../../WebApps/node_modules/src/core/cache-storage.ts", "../../../WebApps/node_modules/src/render/vector.ts", "../../../WebApps/node_modules/src/render/bezier-curve.ts", "../../../WebApps/node_modules/src/render/bound-curves.ts", "../../../WebApps/node_modules/src/render/effects.ts", "../../../WebApps/node_modules/src/render/path.ts", "../../../WebApps/node_modules/src/render/stacking-context.ts", "../../../WebApps/node_modules/src/render/border.ts", "../../../WebApps/node_modules/src/render/box-sizing.ts", "../../../WebApps/node_modules/src/render/background.ts", "../../../WebApps/node_modules/src/core/util.ts", "../../../WebApps/node_modules/src/render/font-metrics.ts", "../../../WebApps/node_modules/src/render/renderer.ts", "../../../WebApps/node_modules/src/render/canvas/canvas-renderer.ts", "../../../WebApps/node_modules/src/render/canvas/foreignobject-renderer.ts", "../../../WebApps/node_modules/src/core/logger.ts", "../../../WebApps/node_modules/src/core/context.ts", "../../../WebApps/node_modules/src/index.ts", "../../../WebApps/node_modules/dompurify/src/utils.ts", "../../../WebApps/node_modules/dompurify/src/tags.ts", "../../../WebApps/node_modules/dompurify/src/attrs.ts", "../../../WebApps/node_modules/dompurify/src/regexp.ts", "../../../WebApps/node_modules/dompurify/src/purify.ts", "../../../WebApps/node_modules/core-js/internals/global-this.js", "../../../WebApps/node_modules/core-js/internals/fails.js", "../../../WebApps/node_modules/core-js/internals/descriptors.js", "../../../WebApps/node_modules/core-js/internals/function-bind-native.js", "../../../WebApps/node_modules/core-js/internals/function-call.js", "../../../WebApps/node_modules/core-js/internals/object-property-is-enumerable.js", "../../../WebApps/node_modules/core-js/internals/create-property-descriptor.js", "../../../WebApps/node_modules/core-js/internals/function-uncurry-this.js", "../../../WebApps/node_modules/core-js/internals/classof-raw.js", "../../../WebApps/node_modules/core-js/internals/indexed-object.js", "../../../WebApps/node_modules/core-js/internals/is-null-or-undefined.js", "../../../WebApps/node_modules/core-js/internals/require-object-coercible.js", "../../../WebApps/node_modules/core-js/internals/to-indexed-object.js", "../../../WebApps/node_modules/core-js/internals/is-callable.js", "../../../WebApps/node_modules/core-js/internals/is-object.js", "../../../WebApps/node_modules/core-js/internals/get-built-in.js", "../../../WebApps/node_modules/core-js/internals/object-is-prototype-of.js", "../../../WebApps/node_modules/core-js/internals/environment-user-agent.js", "../../../WebApps/node_modules/core-js/internals/environment-v8-version.js", "../../../WebApps/node_modules/core-js/internals/symbol-constructor-detection.js", "../../../WebApps/node_modules/core-js/internals/use-symbol-as-uid.js", "../../../WebApps/node_modules/core-js/internals/is-symbol.js", "../../../WebApps/node_modules/core-js/internals/try-to-string.js", "../../../WebApps/node_modules/core-js/internals/a-callable.js", "../../../WebApps/node_modules/core-js/internals/get-method.js", "../../../WebApps/node_modules/core-js/internals/ordinary-to-primitive.js", "../../../WebApps/node_modules/core-js/internals/is-pure.js", "../../../WebApps/node_modules/core-js/internals/define-global-property.js", "../../../WebApps/node_modules/core-js/internals/shared-store.js", "../../../WebApps/node_modules/core-js/internals/shared.js", "../../../WebApps/node_modules/core-js/internals/to-object.js", "../../../WebApps/node_modules/core-js/internals/has-own-property.js", "../../../WebApps/node_modules/core-js/internals/uid.js", "../../../WebApps/node_modules/core-js/internals/well-known-symbol.js", "../../../WebApps/node_modules/core-js/internals/to-primitive.js", "../../../WebApps/node_modules/core-js/internals/to-property-key.js", "../../../WebApps/node_modules/core-js/internals/document-create-element.js", "../../../WebApps/node_modules/core-js/internals/ie8-dom-define.js", "../../../WebApps/node_modules/core-js/internals/object-get-own-property-descriptor.js", "../../../WebApps/node_modules/core-js/internals/v8-prototype-define-bug.js", "../../../WebApps/node_modules/core-js/internals/an-object.js", "../../../WebApps/node_modules/core-js/internals/object-define-property.js", "../../../WebApps/node_modules/core-js/internals/create-non-enumerable-property.js", "../../../WebApps/node_modules/core-js/internals/function-name.js", "../../../WebApps/node_modules/core-js/internals/inspect-source.js", "../../../WebApps/node_modules/core-js/internals/weak-map-basic-detection.js", "../../../WebApps/node_modules/core-js/internals/shared-key.js", "../../../WebApps/node_modules/core-js/internals/hidden-keys.js", "../../../WebApps/node_modules/core-js/internals/internal-state.js", "../../../WebApps/node_modules/core-js/internals/make-built-in.js", "../../../WebApps/node_modules/core-js/internals/define-built-in.js", "../../../WebApps/node_modules/core-js/internals/math-trunc.js", "../../../WebApps/node_modules/core-js/internals/to-integer-or-infinity.js", "../../../WebApps/node_modules/core-js/internals/to-absolute-index.js", "../../../WebApps/node_modules/core-js/internals/to-length.js", "../../../WebApps/node_modules/core-js/internals/length-of-array-like.js", "../../../WebApps/node_modules/core-js/internals/array-includes.js", "../../../WebApps/node_modules/core-js/internals/object-keys-internal.js", "../../../WebApps/node_modules/core-js/internals/enum-bug-keys.js", "../../../WebApps/node_modules/core-js/internals/object-get-own-property-names.js", "../../../WebApps/node_modules/core-js/internals/object-get-own-property-symbols.js", "../../../WebApps/node_modules/core-js/internals/own-keys.js", "../../../WebApps/node_modules/core-js/internals/copy-constructor-properties.js", "../../../WebApps/node_modules/core-js/internals/is-forced.js", "../../../WebApps/node_modules/core-js/internals/export.js", "../../../WebApps/node_modules/core-js/internals/environment.js", "../../../WebApps/node_modules/core-js/internals/environment-is-node.js", "../../../WebApps/node_modules/core-js/internals/path.js", "../../../WebApps/node_modules/core-js/internals/function-uncurry-this-accessor.js", "../../../WebApps/node_modules/core-js/internals/is-possible-prototype.js", "../../../WebApps/node_modules/core-js/internals/a-possible-prototype.js", "../../../WebApps/node_modules/core-js/internals/object-set-prototype-of.js", "../../../WebApps/node_modules/core-js/internals/set-to-string-tag.js", "../../../WebApps/node_modules/core-js/internals/define-built-in-accessor.js", "../../../WebApps/node_modules/core-js/internals/set-species.js", "../../../WebApps/node_modules/core-js/internals/an-instance.js", "../../../WebApps/node_modules/core-js/internals/to-string-tag-support.js", "../../../WebApps/node_modules/core-js/internals/classof.js", "../../../WebApps/node_modules/core-js/internals/is-constructor.js", "../../../WebApps/node_modules/core-js/internals/a-constructor.js", "../../../WebApps/node_modules/core-js/internals/species-constructor.js", "../../../WebApps/node_modules/core-js/internals/function-apply.js", "../../../WebApps/node_modules/core-js/internals/function-uncurry-this-clause.js", "../../../WebApps/node_modules/core-js/internals/function-bind-context.js", "../../../WebApps/node_modules/core-js/internals/html.js", "../../../WebApps/node_modules/core-js/internals/array-slice.js", "../../../WebApps/node_modules/core-js/internals/validate-arguments-length.js", "../../../WebApps/node_modules/core-js/internals/environment-is-ios.js", "../../../WebApps/node_modules/core-js/internals/task.js", "../../../WebApps/node_modules/core-js/internals/safe-get-built-in.js", "../../../WebApps/node_modules/core-js/internals/queue.js", "../../../WebApps/node_modules/core-js/internals/environment-is-ios-pebble.js", "../../../WebApps/node_modules/core-js/internals/environment-is-webos-webkit.js", "../../../WebApps/node_modules/core-js/internals/microtask.js", "../../../WebApps/node_modules/core-js/internals/host-report-errors.js", "../../../WebApps/node_modules/core-js/internals/perform.js", "../../../WebApps/node_modules/core-js/internals/promise-native-constructor.js", "../../../WebApps/node_modules/core-js/internals/promise-constructor-detection.js", "../../../WebApps/node_modules/core-js/internals/new-promise-capability.js", "../../../WebApps/node_modules/core-js/modules/es.promise.constructor.js", "../../../WebApps/node_modules/core-js/internals/iterators.js", "../../../WebApps/node_modules/core-js/internals/is-array-iterator-method.js", "../../../WebApps/node_modules/core-js/internals/get-iterator-method.js", "../../../WebApps/node_modules/core-js/internals/get-iterator.js", "../../../WebApps/node_modules/core-js/internals/iterator-close.js", "../../../WebApps/node_modules/core-js/internals/iterate.js", "../../../WebApps/node_modules/core-js/internals/check-correctness-of-iteration.js", "../../../WebApps/node_modules/core-js/internals/promise-statics-incorrect-iteration.js", "../../../WebApps/node_modules/core-js/modules/es.promise.all.js", "../../../WebApps/node_modules/core-js/modules/es.promise.catch.js", "../../../WebApps/node_modules/core-js/modules/es.promise.race.js", "../../../WebApps/node_modules/core-js/modules/es.promise.reject.js", "../../../WebApps/node_modules/core-js/internals/promise-resolve.js", "../../../WebApps/node_modules/core-js/modules/es.promise.resolve.js", "../../../WebApps/node_modules/core-js/modules/es.promise.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js", "../../../WebApps/node_modules/core-js/internals/to-string.js", "../../../WebApps/node_modules/core-js/internals/regexp-flags.js", "../../../WebApps/node_modules/core-js/internals/regexp-sticky-helpers.js", "../../../WebApps/node_modules/core-js/internals/object-keys.js", "../../../WebApps/node_modules/core-js/internals/object-define-properties.js", "../../../WebApps/node_modules/core-js/internals/object-create.js", "../../../WebApps/node_modules/core-js/internals/regexp-unsupported-dot-all.js", "../../../WebApps/node_modules/core-js/internals/regexp-unsupported-ncg.js", "../../../WebApps/node_modules/core-js/internals/regexp-exec.js", "../../../WebApps/node_modules/core-js/modules/es.regexp.exec.js", "../../../WebApps/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js", "../../../WebApps/node_modules/core-js/internals/string-multibyte.js", "../../../WebApps/node_modules/core-js/internals/advance-string-index.js", "../../../WebApps/node_modules/core-js/internals/regexp-flags-detection.js", "../../../WebApps/node_modules/core-js/internals/regexp-get-flags.js", "../../../WebApps/node_modules/core-js/internals/regexp-exec-abstract.js", "../../../WebApps/node_modules/core-js/modules/es.string.match.js", "../../../WebApps/node_modules/core-js/internals/get-substitution.js", "../../../WebApps/node_modules/core-js/modules/es.string.replace.js", "../../../WebApps/node_modules/core-js/internals/is-regexp.js", "../../../WebApps/node_modules/core-js/internals/not-a-regexp.js", "../../../WebApps/node_modules/core-js/internals/correct-is-regexp-logic.js", "../../../WebApps/node_modules/core-js/modules/es.string.starts-with.js", "../../../WebApps/node_modules/core-js/internals/add-to-unscopables.js", "../../../WebApps/node_modules/core-js/internals/correct-prototype-getter.js", "../../../WebApps/node_modules/core-js/internals/object-get-prototype-of.js", "../../../WebApps/node_modules/core-js/internals/iterators-core.js", "../../../WebApps/node_modules/core-js/internals/iterator-create-constructor.js", "../../../WebApps/node_modules/core-js/internals/iterator-define.js", "../../../WebApps/node_modules/core-js/internals/create-iter-result-object.js", "../../../WebApps/node_modules/core-js/modules/es.array.iterator.js", "../../../WebApps/node_modules/core-js/internals/dom-iterables.js", "../../../WebApps/node_modules/core-js/internals/dom-token-list-prototype.js", "../../../WebApps/node_modules/core-js/modules/web.dom-collections.iterator.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../WebApps/node_modules/core-js/internals/array-reduce.js", "../../../WebApps/node_modules/core-js/internals/array-method-is-strict.js", "../../../WebApps/node_modules/core-js/modules/es.array.reduce.js", "../../../WebApps/node_modules/core-js/modules/es.string.ends-with.js", "../../../WebApps/node_modules/core-js/modules/es.string.split.js", "../../../WebApps/node_modules/performance-now/src/performance-now.coffee", "../../../WebApps/node_modules/raf/index.js", "../../../WebApps/node_modules/core-js/internals/whitespaces.js", "../../../WebApps/node_modules/core-js/internals/string-trim.js", "../../../WebApps/node_modules/core-js/internals/string-trim-forced.js", "../../../WebApps/node_modules/core-js/modules/es.string.trim.js", "../../../WebApps/node_modules/rgbcolor/index.js", "../../../WebApps/node_modules/core-js/modules/es.array.index-of.js", "../../../WebApps/node_modules/core-js/modules/es.string.includes.js", "../../../WebApps/node_modules/core-js/internals/is-array.js", "../../../WebApps/node_modules/core-js/modules/es.array.reverse.js", "../../../WebApps/node_modules/svg-pathdata/node_modules/tslib/tslib.es6.js", "../../../WebApps/node_modules/svg-pathdata/src/SVGPathDataEncoder.ts", "../../../WebApps/node_modules/svg-pathdata/src/mathUtils.ts", "../../../WebApps/node_modules/svg-pathdata/src/SVGPathDataTransformer.ts", "../../../WebApps/node_modules/svg-pathdata/src/TransformableSVG.ts", "../../../WebApps/node_modules/svg-pathdata/src/SVGPathDataParser.ts", "../../../WebApps/node_modules/svg-pathdata/src/SVGPathData.ts", "../../../WebApps/node_modules/core-js/modules/es.regexp.to-string.js", "../../../WebApps/node_modules/stackblur-canvas/dist/stackblur-es.js", "../../../WebApps/node_modules/canvg/lib/index.es.js", "../../../WebApps/Frontend/global.tsx", "../../../WebApps/Frontend/Studio/index.tsx", "../../../WebApps/react-components/src/logo/Loading.tsx", "../../../WebApps/react-components/src/logo/LogoParts.tsx", "../../../WebApps/Frontend/Studio/UnsupportedBrowser.tsx", "../../../WebApps/react-components/src/logo/Logo.tsx", "../../../WebApps/Frontend/utils/utils.tsx", "../../../WebApps/react-components/src/misc/Toast.tsx", "../../../WebApps/node_modules/i18next-conv/lib/gettext2json.js", "../../../WebApps/node_modules/gettext-parser/lib/poparser.js", "../../../WebApps/node_modules/gettext-parser/lib/shared.js", "../../../WebApps/node_modules/gettext-parser/lib/pocompiler.js", "../../../WebApps/node_modules/gettext-parser/lib/moparser.js", "../../../WebApps/node_modules/gettext-parser/lib/mocompiler.js", "../../../WebApps/node_modules/gettext-parser/index.js", "../../../WebApps/node_modules/gettext-converter/esm/poParser.js", "../../../WebApps/node_modules/gettext-converter/esm/shared.js", "../../../WebApps/node_modules/gettext-converter/esm/poCompiler.js", "../../../WebApps/node_modules/gettext-converter/esm/plurals.js", "../../../WebApps/node_modules/gettext-converter/esm/options.js", "../../../WebApps/node_modules/gettext-converter/esm/cldrConv.js", "../../../WebApps/node_modules/gettext-converter/esm/js2i18next.js", "../../../WebApps/node_modules/gettext-converter/esm/i18next2js.js", "../../../WebApps/node_modules/p-from-callback/index.js", "../../Types/Role.ts", "../../../WebApps/node_modules/bson/src/parser/utils.ts", "../../../WebApps/node_modules/bson/src/constants.ts", "../../../WebApps/node_modules/bson/src/error.ts", "../../../WebApps/node_modules/bson/src/utils/node_byte_utils.ts", "../../../WebApps/node_modules/bson/src/utils/web_byte_utils.ts", "../../../WebApps/node_modules/bson/src/utils/byte_utils.ts", "../../../WebApps/node_modules/bson/src/bson_value.ts", "../../../WebApps/node_modules/bson/src/binary.ts", "../../../WebApps/node_modules/bson/src/code.ts", "../../../WebApps/node_modules/bson/src/db_ref.ts", "../../../WebApps/node_modules/bson/src/long.ts", "../../../WebApps/node_modules/bson/src/decimal128.ts", "../../../WebApps/node_modules/bson/src/double.ts", "../../../WebApps/node_modules/bson/src/int_32.ts", "../../../WebApps/node_modules/bson/src/max_key.ts", "../../../WebApps/node_modules/bson/src/min_key.ts", "../../../WebApps/node_modules/bson/src/objectid.ts", "../../../WebApps/node_modules/bson/src/parser/calculate_size.ts", "../../../WebApps/node_modules/bson/src/regexp.ts", "../../../WebApps/node_modules/bson/src/symbol.ts", "../../../WebApps/node_modules/bson/src/timestamp.ts", "../../../WebApps/node_modules/bson/src/validate_utf8.ts", "../../../WebApps/node_modules/bson/src/parser/deserializer.ts", "../../../WebApps/node_modules/bson/src/parser/serializer.ts", "../../../WebApps/node_modules/bson/src/extended_json.ts", "../../../WebApps/node_modules/bson/src/bson.ts", "../../Types/OwnerType.ts", "../../Types/Video.ts", "../../Types/Document.ts", "../../Utils/UtilsShared.ts", "../../Types/Language.ts", "../../../WebApps/Frontend/Studio/App.tsx", "../../../WebApps/Frontend/Studio/Components/Toolbar/Toolbar.tsx", "../../../WebApps/Frontend/Studio/Components/Toolbar/InfoPane.tsx", "../../../WebApps/react-components/src/icons/Warning.tsx", "../../../WebApps/react-components/src/inputs/InputText.tsx", "../../../WebApps/react-components/src/misc/Label.tsx", "../../../WebApps/Frontend/Studio/Components/Toolbar/InfoPane/MissingTexturesDialog.tsx", "../../../WebApps/react-components/src/inputs/InputFile.tsx", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/AdapterStudio.tsx", "../../../WebApps/node_modules/@sentry/src/is.ts", "../../../WebApps/node_modules/@sentry/src/string.ts", "../../../WebApps/node_modules/@sentry/src/aggregate-errors.ts", "../../../WebApps/node_modules/@sentry/src/worldwide.ts", "../../../WebApps/node_modules/@sentry/src/browser.ts", "../../../WebApps/node_modules/@sentry/src/debug-build.ts", "../../../WebApps/node_modules/@sentry/src/logger.ts", "../../../WebApps/node_modules/@sentry/src/dsn.ts", "../../../WebApps/node_modules/@sentry/src/error.ts", "../../../WebApps/node_modules/@sentry/src/object.ts", "../../../WebApps/node_modules/@sentry/src/stacktrace.ts", "../../../WebApps/node_modules/@sentry/src/instrument/_handlers.ts", "../../../WebApps/node_modules/@sentry/src/instrument/console.ts", "../../../WebApps/node_modules/@sentry/src/misc.ts", "../../../WebApps/node_modules/@sentry/src/instrument/dom.ts", "../../../WebApps/node_modules/@sentry/src/supports.ts", "../../../WebApps/node_modules/@sentry/src/instrument/fetch.ts", "../../../WebApps/node_modules/@sentry/src/instrument/globalError.ts", "../../../WebApps/node_modules/@sentry/src/instrument/globalUnhandledRejection.ts", "../../../WebApps/node_modules/@sentry/src/vendor/supportsHistory.ts", "../../../WebApps/node_modules/@sentry/src/instrument/history.ts", "../../../WebApps/node_modules/@sentry/src/instrument/xhr.ts", "../../../WebApps/node_modules/@sentry/src/env.ts", "../../../WebApps/node_modules/@sentry/src/memo.ts", "../../../WebApps/node_modules/@sentry/src/normalize.ts", "../../../WebApps/node_modules/@sentry/src/syncpromise.ts", "../../../WebApps/node_modules/@sentry/src/promisebuffer.ts", "../../../WebApps/node_modules/@sentry/src/url.ts", "../../../WebApps/node_modules/@sentry/src/severity.ts", "../../../WebApps/node_modules/@sentry/src/time.ts", "../../../WebApps/node_modules/@sentry/src/envelope.ts", "../../../WebApps/node_modules/@sentry/src/clientreport.ts", "../../../WebApps/node_modules/@sentry/src/ratelimit.ts", "../../../WebApps/node_modules/@sentry/src/eventbuilder.ts", "../../../WebApps/node_modules/@sentry/src/debug-build.ts", "../../../WebApps/node_modules/@sentry/src/constants.ts", "../../../WebApps/node_modules/@sentry/src/eventProcessors.ts", "../../../WebApps/node_modules/@sentry/src/session.ts", "../../../WebApps/node_modules/@sentry/src/utils/spanUtils.ts", "../../../WebApps/node_modules/@sentry/src/utils/prepareEvent.ts", "../../../WebApps/node_modules/@sentry/src/exports.ts", "../../../WebApps/node_modules/@sentry/src/utils/getRootSpan.ts", "../../../WebApps/node_modules/@sentry/src/tracing/dynamicSamplingContext.ts", "../../../WebApps/node_modules/@sentry/src/utils/applyScopeDataToEvent.ts", "../../../WebApps/node_modules/@sentry/src/scope.ts", "../../../WebApps/node_modules/@sentry/src/version.ts", "../../../WebApps/node_modules/@sentry/src/hub.ts", "../../../WebApps/node_modules/@sentry/src/envelope.ts", "../../../WebApps/node_modules/@sentry/src/api.ts", "../../../WebApps/node_modules/@sentry/src/integration.ts", "../../../WebApps/node_modules/@sentry/src/metrics/utils.ts", "../../../WebApps/node_modules/@sentry/src/metrics/envelope.ts", "../../../WebApps/node_modules/@sentry/src/baseclient.ts", "../../../WebApps/node_modules/@sentry/src/sdk.ts", "../../../WebApps/node_modules/@sentry/src/transports/base.ts", "../../../WebApps/node_modules/@sentry/src/utils/sdkMetadata.ts", "../../../WebApps/node_modules/@sentry/src/integrations/inboundfilters.ts", "../../../WebApps/node_modules/@sentry/src/integrations/functiontostring.ts", "../../../WebApps/node_modules/@sentry/src/integrations/linkederrors.ts", "../../../WebApps/node_modules/@sentry/src/index.ts", "../../../WebApps/node_modules/src/helpers.ts", "../../../WebApps/node_modules/src/debug-build.ts", "../../../WebApps/node_modules/src/eventbuilder.ts", "../../../WebApps/node_modules/src/userfeedback.ts", "../../../WebApps/node_modules/src/client.ts", "../../../WebApps/node_modules/src/transports/utils.ts", "../../../WebApps/node_modules/src/transports/fetch.ts", "../../../WebApps/node_modules/src/transports/xhr.ts", "../../../WebApps/node_modules/src/stack-parsers.ts", "../../../WebApps/node_modules/src/integrations/breadcrumbs.ts", "../../../WebApps/node_modules/src/integrations/dedupe.ts", "../../../WebApps/node_modules/src/integrations/globalhandlers.ts", "../../../WebApps/node_modules/src/integrations/httpcontext.ts", "../../../WebApps/node_modules/src/integrations/linkederrors.ts", "../../../WebApps/node_modules/src/integrations/trycatch.ts", "../../../WebApps/node_modules/src/sdk.ts", "../../../WebApps/node_modules/src/index.ts", "../../../WebApps/node_modules/@sentry/src/sdk.ts", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/AdapterLog.tsx", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList.ts", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/Steps.tsx", "../../Types/Step.ts", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/AdapterUtils.ts", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequence.ts", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/AdapterText.ts", "../../../WebApps/Frontend/Studio/Engine/utils.tsx", "../../Utils/UtilsBSON.ts", "../../Types/AssetType.ts", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly.tsx", "../../../WebApps/Frontend/Studio/DialogContainer.tsx", "../../../WebApps/react-components/src/icons/Rename.tsx", "../../../WebApps/react-components/src/icons/Check.tsx", "../../../WebApps/Frontend/Studio/Components/Toolbar/ModelPane/ModelPane.tsx", "../../../WebApps/react-components/src/inputs/slider/SliderController.tsx", "../../../WebApps/react-components/src/inputs/slider/Slider.tsx", "../../../WebApps/Frontend/Studio/Components/Toolbar/ModelPane/RescaleDialog.tsx", "../../../WebApps/Frontend/Studio/Components/Toolbar/RescaleForm.tsx", "../../../WebApps/react-components/src/misc/CenteredLoading.tsx", "../../../WebApps/Frontend/Studio/Components/Toolbar/ModelPane/ModelPaneSliders.tsx", "../../../WebApps/Frontend/Studio/Components/Toolbar/ModelPane/SliderWrapper.tsx", "../../../WebApps/react-components/src/icons/Chevron.tsx", "../../../WebApps/Frontend/Studio/Components/Toolbar/ModelPane/TextAreaSlider.tsx", "../../../WebApps/Frontend/theme.ts", "../../../WebApps/Frontend/Studio/Components/Toolbar/AppInformation/AppInformation.tsx", "../../../WebApps/Frontend/Studio/Components/Toolbar/AppInformation/WarningDialog.tsx", "../../../WebApps/Frontend/Studio/layouts/LeftPanels.tsx", "../../../WebApps/Frontend/Studio/layouts/Panel.tsx", "../../../WebApps/react-components/src/icons/CircleArrow.tsx", "../../../Apple/DeepSight/Settings.bundle/en.lproj/Acknowledgements.strings", "../../../WebApps/Frontend/Studio/Components/Toolbar/VideoEditor/VideoEditor.tsx", "../../../WebApps/Frontend/Studio/Contexts/VideoEditorContext.tsx", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/Sequences.tsx", "../../../WebApps/react-components/src/misc/LoadingOverlay.tsx", "../../../WebApps/Frontend/Studio/Components/Toolbar/VideoEditor/ClippedVideo.tsx", "../../../WebApps/react-components/src/icons/Plus.tsx", "../../../WebApps/Frontend/Studio/Types/MTConnect.ts", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/Assets.tsx", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/Video.tsx", "../../../WebApps/react-components/src/icons/CreateWorld.tsx", "../../../WebApps/Frontend/Studio/Components/Toolbar/VideoEditor/ClippedVideosList.tsx", "../../../WebApps/node_modules/react-window/src/timer.js", "../../../WebApps/node_modules/react-window/src/domHelpers.js", "../../../WebApps/node_modules/react-window/src/createGridComponent.js", "../../../WebApps/node_modules/react-window/src/VariableSizeGrid.js", "../../../WebApps/node_modules/react-window/src/createListComponent.js", "../../../WebApps/node_modules/react-window/src/VariableSizeList.js", "../../../WebApps/node_modules/react-window/src/FixedSizeGrid.js", "../../../WebApps/node_modules/react-window/src/FixedSizeList.js", "../../../WebApps/node_modules/react-window/src/shallowDiffers.js", "../../../WebApps/node_modules/react-window/src/areEqual.js", "../../../WebApps/node_modules/react-window/src/shouldComponentUpdate.js", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/AdapterCloud.ts", "../../../WebApps/Frontend/Studio/Components/Video/VideoScrubber.tsx", "../../../WebApps/react-components/src/icons/Play.tsx", "../../../WebApps/react-components/src/icons/Pause.tsx", "../../../WebApps/react-components/src/icons/Volume.tsx", "../../../WebApps/react-components/src/icons/Muted.tsx", "../../../WebApps/react-components/src/icons/VideoEdit.tsx", "../../../WebApps/Frontend/Studio/Components/Video/VideoFeed.tsx", "../../../WebApps/Frontend/Studio/Components/Video/VideoClipper.tsx", "../../../WebApps/Frontend/Studio/Components/Video/ScrubberImagesList.tsx", "../../../WebApps/Frontend/Studio/Components/Video/ScrubberImage.tsx", "../../../WebApps/react-components/src/icons/VideoLarge.tsx", "../../../WebApps/react-components/src/icons/VideoSmall.tsx", "../../../WebApps/Frontend/Studio/Components/Video/LayersDropdown.tsx", "../../../WebApps/react-components/src/inputs/MultipleSelect.tsx", "../../../WebApps/react-components/src/icons/DownArrow.tsx", "../../../WebApps/react-components/src/icons/Layers.tsx", "../../../WebApps/react-components/src/icons/Video.tsx", "../../../WebApps/react-components/src/misc/VideoSubtitle.tsx", "../../../WebApps/react-components/src/icons/ExpandLess.tsx", "../../../WebApps/react-components/src/icons/ExpandMore.tsx", "../../../WebApps/Frontend/Studio/Views/QuickActions/QuickActions.tsx", "../../../WebApps/Frontend/Studio/Views/QuickActions/ActionIcon.tsx", "../../../WebApps/react-components/src/icons/CloudChecked.tsx", "../../../WebApps/react-components/src/icons/Undo.tsx", "../../../WebApps/react-components/src/icons/Redo.tsx", "../../../WebApps/react-components/src/icons/CubeViews.tsx", "../../../WebApps/Frontend/Studio/Views/WorldPermissions/WorldPermissions.tsx", "../../../WebApps/Frontend/utils/SmartComponent.tsx", "../../../WebApps/react-components/src/inputs/SegmentedControl.tsx", "../../../WebApps/react-components/src/inputs/InputSelect.tsx", "../../../WebApps/react-components/src/icons/Caret.tsx", "../../../WebApps/Frontend/Studio/Views/WorldPermissions/WorldMemberList.tsx", "../../../WebApps/Frontend/Studio/Views/WorldPermissions/GroupItem.tsx", "../../../WebApps/Frontend/Studio/Views/WorldPermissions/ListItem.tsx", "../../../WebApps/Frontend/Console/components/RadioButtons.tsx", "../../../WebApps/Frontend/Studio/Views/WorldPermissions/PeerItem.tsx", "../../../WebApps/Frontend/Studio/Views/WorldPermissions/AddMemberInput.tsx", "../../../WebApps/Frontend/Studio/Views/WorldPermissions/RemoveMember.tsx", "../../../WebApps/react-components/src/icons/Share.tsx", "../../../WebApps/Frontend/Studio/Views/EmbedOverlay/WorldInfos.tsx", "../../../WebApps/react-components/src/icons/Tools.tsx", "../../../WebApps/react-components/src/icons/PrinterIcon.tsx", "../../../WebApps/react-components/src/icons/GoToConsole.tsx", "../../../WebApps/react-components/src/icons/GoToDocumentation.tsx", "../../../WebApps/react-components/src/icons/World.tsx", "../../../WebApps/react-components/src/icons/Navigation.tsx", "../../../WebApps/Frontend/Studio/Views/QuickActions/Avatar.tsx", "../../../WebApps/react-components/src/icons/Exclamation.tsx", "../../../WebApps/react-components/src/icons/PreviewMode.tsx", "../../../WebApps/react-components/src/icons/EditorMode.tsx", "../../../WebApps/react-components/src/icons/SettingsIcon.tsx", "../../../WebApps/react-components/src/icons/Back.tsx", "../../../WebApps/Frontend/Studio/Engine/PeerConnectionWeb.ts", "../../../WebApps/Frontend/Studio/Engine/VideoStreamTrackGenerator.ts", "../../../WebApps/Frontend/Studio/Views/DeepSightConnect/VideoOverlay.tsx", "../../../WebApps/Frontend/Studio/Views/DeepSightConnect/VideoStreamTrackProcessor.ts", "../../../WebApps/Frontend/Studio/Engine/FacadeWeb/FacadeWeb.tsx", "../../../WebApps/Frontend/Studio/Engine/WebAssembly.mjs", "../../../WebApps/Frontend/Studio/Engine/FactoryEngine.tsx", "../../../WebApps/Frontend/Studio/Components/EngineCanvas/EngineCanvas.tsx", "../../../WebApps/Frontend/Studio/Views/DragAndDrop/DragAndDrop.tsx", "../../../WebApps/react-components/src/prompts/Prompt.tsx", "../../../WebApps/Frontend/Studio/Views/WorldsLibrary/WorldsLibrary.tsx", "../../../WebApps/Frontend/Studio/Views/WorldsLibrary/WorldsCollection.tsx", "../../../WebApps/Frontend/Studio/Views/WorldsLibrary/WorldItem.tsx", "../../../WebApps/react-components/src/icons/Delete.tsx", "../../../WebApps/react-components/src/icons/Duplicate.tsx", "../../../WebApps/react-components/src/icons/Info.tsx", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/AdapterWorld.ts", "../../../WebApps/node_modules/react-virtualized-auto-sizer/dist/react-virtualized-auto-sizer.esm.js", "../../../WebApps/Frontend/Studio/Views/WorldsLibrary/WorldLibraryFilters.tsx", "../../../WebApps/react-components/src/inputs/SearchBar.tsx", "../../../WebApps/react-components/src/icons/Search.tsx", "../../../WebApps/react-components/src/inputs/Select.tsx", "../../../WebApps/Frontend/Studio/Components/Sorting.tsx", "../../../WebApps/react-components/src/icons/ArrowLine.tsx", "../../../WebApps/react-components/src/icons/SortingArrows.tsx", "../../../WebApps/Frontend/Studio/Views/WorldsLibrary/WorldLibraryParsingPopover.tsx", "../../../WebApps/react-components/src/icons/Filter.tsx", "../../../WebApps/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/CreateWorld.tsx", "../../../WebApps/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/WorldSidePanel.tsx", "../../../WebApps/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/WorldInformation.tsx", "../../../WebApps/react-components/src/inputs/Autocomplete.tsx", "../../../WebApps/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/WorldDimensionsSliders.tsx", "../../../WebApps/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/DeleteWorld.tsx", "../../../WebApps/Frontend/Studio/Views/ProgressBar/ProgressBar.tsx", "../../../WebApps/Frontend/Studio/Interface/View.tsx", "../../../WebApps/Frontend/Studio/Views/ProgressBar/ProgressBarWidget.tsx", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSession.tsx", "../../../WebApps/Frontend/Studio/Views/EmbedOverlay/EmbedOverlay.tsx", "../../../WebApps/Frontend/Login/AppLogin.tsx", "../../../WebApps/Frontend/Login/Views/Login.tsx", "../../../WebApps/Frontend/Login/LoginWithMicrosoftButton.tsx", "../../../WebApps/node_modules/@azure/msal-browser/dist/_virtual/_tslib.js", "../../../WebApps/node_modules/@azure/msal-common/dist/_virtual/_tslib.js", "../../../WebApps/node_modules/@azure/msal-common/src/utils/Constants.ts", "../../../WebApps/node_modules/@azure/msal-common/src/error/AuthError.ts", "../../../WebApps/node_modules/@azure/msal-common/src/crypto/ICrypto.ts", "../../../WebApps/node_modules/@azure/msal-common/src/error/ClientAuthError.ts", "../../../WebApps/node_modules/@azure/msal-common/src/utils/StringUtils.ts", "../../../WebApps/node_modules/@azure/msal-common/src/logger/Logger.ts", "../../../WebApps/node_modules/@azure/msal-common/src/packageMetadata.ts", "../../../WebApps/node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts", "../../../WebApps/node_modules/@azure/msal-common/src/cache/entities/CredentialEntity.ts", "../../../WebApps/node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts", "../../../WebApps/node_modules/@azure/msal-common/src/request/ScopeSet.ts", "../../../WebApps/node_modules/@azure/msal-common/src/account/ClientInfo.ts", "../../../WebApps/node_modules/@azure/msal-common/src/authority/AuthorityType.ts", "../../../WebApps/node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts", "../../../WebApps/node_modules/@azure/msal-common/src/account/AuthToken.ts", "../../../WebApps/node_modules/@azure/msal-common/src/cache/CacheManager.ts", "../../../WebApps/node_modules/@azure/msal-common/src/config/ClientConfiguration.ts", "../../../WebApps/node_modules/@azure/msal-common/src/error/ServerError.ts", "../../../WebApps/node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts", "../../../WebApps/node_modules/@azure/msal-common/src/network/NetworkManager.ts", "../../../WebApps/node_modules/@azure/msal-common/src/account/CcsCredential.ts", "../../../WebApps/node_modules/@azure/msal-common/src/client/BaseClient.ts", "../../../WebApps/node_modules/@azure/msal-common/src/request/RequestValidator.ts", "../../../WebApps/node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts", "../../../WebApps/node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.ts", "../../../WebApps/node_modules/@azure/msal-common/src/utils/TimeUtils.ts", "../../../WebApps/node_modules/@azure/msal-common/src/cache/entities/AccessTokenEntity.ts", "../../../WebApps/node_modules/@azure/msal-common/src/cache/entities/RefreshTokenEntity.ts", "../../../WebApps/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts", "../../../WebApps/node_modules/@azure/msal-common/src/cache/entities/CacheRecord.ts", "../../../WebApps/node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts", "../../../WebApps/node_modules/@azure/msal-common/src/url/UrlString.ts", "../../../WebApps/node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts", "../../../WebApps/node_modules/@azure/msal-common/src/cache/entities/AppMetadataEntity.ts", "../../../WebApps/node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts", "../../../WebApps/node_modules/@azure/msal-common/src/response/ResponseHandler.ts", "../../../WebApps/node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts", "../../../WebApps/node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts", "../../../WebApps/node_modules/@azure/msal-common/src/client/SilentFlowClient.ts", "../../../WebApps/node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts", "../../../WebApps/node_modules/@azure/msal-common/src/authority/ProtocolMode.ts", "../../../WebApps/node_modules/@azure/msal-common/src/cache/entities/AuthorityMetadataEntity.ts", "../../../WebApps/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts", "../../../WebApps/node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts", "../../../WebApps/node_modules/@azure/msal-common/src/authority/Authority.ts", "../../../WebApps/node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts", "../../../WebApps/node_modules/@azure/msal-common/src/cache/entities/ServerTelemetryEntity.ts", "../../../WebApps/node_modules/@azure/msal-common/src/cache/entities/ThrottlingEntity.ts", "../../../WebApps/node_modules/@azure/msal-common/src/network/INetworkModule.ts", "../../../WebApps/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/utils/BrowserConstants.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/utils/MathUtils.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/crypto/GuidGenerator.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/utils/BrowserStringUtils.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/encode/Base64Encode.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/encode/Base64Decode.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/error/BrowserAuthError.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/crypto/PkceGenerator.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/crypto/BrowserCrypto.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/cache/DatabaseStorage.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/cache/MemoryStorage.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/cache/AsyncMemoryStorage.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/crypto/CryptoOps.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthError.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/cache/BrowserStorage.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/utils/BrowserProtocolUtils.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/cache/BrowserCacheManager.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/network/FetchClient.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/network/XhrClient.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/utils/BrowserUtils.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/navigation/NavigationClient.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/config/Configuration.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/packageMetadata.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/event/EventType.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/event/EventHandler.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_client/BaseInteractionClient.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_client/StandardInteractionClient.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/utils/PopupUtils.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_handler/InteractionHandler.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_handler/PopupHandler.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_client/PopupClient.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_handler/RedirectHandler.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_client/RedirectClient.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_handler/SilentHandler.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_client/SilentIframeClient.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_client/SilentRefreshClient.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/cache/TokenCache.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_client/HybridSpaAuthorizationCodeClient.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_client/SilentAuthCodeClient.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/app/ClientApplication.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/interaction_client/SilentCacheClient.ts", "../../../WebApps/node_modules/@azure/msal-browser/src/app/PublicClientApplication.ts", "../../../WebApps/react-components/src/inputs/Switch.tsx", "../../../WebApps/Frontend/Login/AADAuthConfig.ts", "../../../WebApps/Frontend/Login/Views/UsernameChangeAlert.tsx", "../../../WebApps/Frontend/Console/components/PasswordInput.tsx", "../../../WebApps/react-components/src/icons/Unhide.tsx", "../../../WebApps/react-components/src/icons/Hide.tsx", "../../../WebApps/react-components/src/misc/InfoIcon.tsx", "../../../WebApps/react-components/src/icons/Regenerate.tsx", "../../../WebApps/react-components/src/inputs/SelectRegion.tsx", "../../../WebApps/Frontend/Login/Views/SignUp.tsx", "../../../WebApps/Frontend/Login/Views/EmailVerification.tsx", "../../../WebApps/react-components/src/inputs/InputSixDigitCode.tsx", "../../../WebApps/Frontend/Login/Views/LoggedIn.tsx", "../../Types/Plan.ts", "../../../WebApps/Frontend/Login/Views/LoginDeviceLink.tsx", "../../../WebApps/react-components/src/icons/DeviceIcon.tsx", "../../../WebApps/react-components/src/icons/ExternalLink.tsx", "../../../VERSION.txt", "../../../WebApps/Frontend/utils/Authentication.ts", "../../../WebApps/Frontend/Login/Views/ForgotPassword.tsx", "../../Types/Peer.ts", "../../../WebApps/Frontend/Console/AppConsole.tsx", "../../../WebApps/node_modules/history/esm/history.js", "../../../WebApps/node_modules/resolve-pathname/esm/resolve-pathname.js", "../../../WebApps/node_modules/value-equal/esm/value-equal.js", "../../../WebApps/node_modules/tiny-warning/dist/tiny-warning.esm.js", "../../../WebApps/node_modules/tiny-invariant/dist/esm/tiny-invariant.js", "../../../WebApps/node_modules/react-router/modules/miniCreateReactContext.js", "../../../WebApps/node_modules/react-router/modules/createContext.js", "../../../WebApps/node_modules/react-router/modules/createNamedContext.js", "../../../WebApps/node_modules/react-router/modules/HistoryContext.js", "../../../WebApps/node_modules/react-router/modules/RouterContext.js", "../../../WebApps/node_modules/react-router/modules/Router.js", "../../../WebApps/node_modules/react-router/modules/MemoryRouter.js", "../../../WebApps/node_modules/react-router/modules/Lifecycle.js", "../../../WebApps/node_modules/react-router/modules/Prompt.js", "../../../WebApps/node_modules/react-router/modules/generatePath.js", "../../../WebApps/node_modules/react-router/modules/Redirect.js", "../../../WebApps/node_modules/react-router/modules/matchPath.js", "../../../WebApps/node_modules/react-router/modules/Route.js", "../../../WebApps/node_modules/react-router/modules/StaticRouter.js", "../../../WebApps/node_modules/react-router/modules/Switch.js", "../../../WebApps/node_modules/react-router/modules/withRouter.js", "../../../WebApps/node_modules/react-router/modules/hooks.js", "../../../WebApps/node_modules/react-router/modules/index.js", "../../../WebApps/node_modules/react-router-dom/modules/BrowserRouter.js", "../../../WebApps/node_modules/react-router-dom/modules/HashRouter.js", "../../../WebApps/node_modules/react-router-dom/modules/utils/locationUtils.js", "../../../WebApps/node_modules/react-router-dom/modules/Link.js", "../../../WebApps/node_modules/react-router-dom/modules/NavLink.js", "../../../WebApps/Frontend/Console/SideNav.tsx", "../../../WebApps/Frontend/Console/Views/Dashboard/Dashboard.tsx", "../../../WebApps/Frontend/Console/components/ViewTitle.tsx", "../../../WebApps/Frontend/Console/components/ViewSubtitle.tsx", "../../../WebApps/Frontend/Console/widgets/FiltersRow.tsx", "../../Types/TypeOS.ts", "../../../WebApps/Frontend/Console/Types/FiltersDate.ts", "../../../WebApps/node_modules/@mui/x-date-pickers/AdapterDayjs/AdapterDayjs.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/utils/warning.js", "../../../WebApps/node_modules/@mui/x-date-pickers/node_modules/clsx/dist/clsx.mjs", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/hooks/useUtils.js", "../../../WebApps/node_modules/@mui/x-date-pickers/LocalizationProvider/LocalizationProvider.js", "../../../WebApps/node_modules/@mui/x-date-pickers/locales/utils/getPickersLocalization.js", "../../../WebApps/node_modules/@mui/x-date-pickers/locales/enUS.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js", "../../../WebApps/node_modules/@mui/x-date-pickers/node_modules/@mui/base/utils/isHostComponent.js", "../../../WebApps/node_modules/@mui/x-date-pickers/node_modules/@mui/base/utils/appendOwnerState.js", "../../../WebApps/node_modules/@mui/x-date-pickers/node_modules/@mui/base/utils/extractEventHandlers.js", "../../../WebApps/node_modules/@mui/x-date-pickers/node_modules/@mui/base/utils/resolveComponentProps.js", "../../../WebApps/node_modules/@mui/x-date-pickers/node_modules/@mui/base/node_modules/@mui/utils/esm/useForkRef/useForkRef.js", "../../../WebApps/node_modules/@mui/x-date-pickers/node_modules/@mui/base/utils/omitEventHandlers.js", "../../../WebApps/node_modules/@mui/x-date-pickers/node_modules/@mui/base/utils/mergeSlotProps.js", "../../../WebApps/node_modules/@mui/x-date-pickers/node_modules/@mui/base/utils/useSlotProps.js", "../../../WebApps/node_modules/@mui/x-date-pickers/icons/index.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/components/PickersArrowSwitcher/pickersArrowSwitcherClasses.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/utils/time-utils.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/hooks/useViews.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/hooks/date-helpers-hooks.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/components/PickerViewRoot/PickerViewRoot.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/constants/dimensions.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/utils/date-utils.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/hooks/useValueWithTimezone.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/utils/valueManagers.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/utils/getDefaultReferenceDate.js", "../../../WebApps/node_modules/@mui/x-date-pickers/PickersDay/PickersDay.js", "../../../WebApps/node_modules/@mui/x-date-pickers/PickersDay/pickersDayClasses.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/utils/validation/validateDate.js", "../../../WebApps/node_modules/@mui/x-date-pickers/internals/hooks/useDefaultReduceAnimations.js", "../../../WebApps/node_modules/@mui/x-date-pickers/DateCalendar/DayCalendar.js", "../../../WebApps/node_modules/@mui/x-date-pickers/DateCalendar/PickersSlideTransition.js", "../../../WebApps/node_modules/@mui/x-date-pickers/DateCalendar/pickersSlideTransitionClasses.js", "../../../WebApps/node_modules/@mui/x-date-pickers/DateCalendar/useIsDateDisabled.js", "../../../WebApps/node_modules/@mui/x-date-pickers/DateCalendar/dayCalendarClasses.js", "../../../WebApps/node_modules/@mui/x-date-pickers/DateCalendar/useCalendarState.js", "../../../WebApps/node_modules/@mui/x-date-pickers/DateCalendar/DateCalendar.js", "../../../WebApps/node_modules/@mui/x-date-pickers/DateCalendar/PickersFadeTransitionGroup.js", "../../../WebApps/node_modules/@mui/x-date-pickers/DateCalendar/pickersFadeTransitionGroupClasses.js", "../../../WebApps/node_modules/@mui/x-date-pickers/MonthCalendar/MonthCalendar.js", "../../../WebApps/node_modules/@mui/x-date-pickers/MonthCalendar/PickersMonth.js", "../../../WebApps/node_modules/@mui/x-date-pickers/MonthCalendar/pickersMonthClasses.js", "../../../WebApps/node_modules/@mui/x-date-pickers/MonthCalendar/monthCalendarClasses.js", "../../../WebApps/node_modules/@mui/x-date-pickers/YearCalendar/YearCalendar.js", "../../../WebApps/node_modules/@mui/x-date-pickers/YearCalendar/PickersYear.js", "../../../WebApps/node_modules/@mui/x-date-pickers/YearCalendar/pickersYearClasses.js", "../../../WebApps/node_modules/@mui/x-date-pickers/YearCalendar/yearCalendarClasses.js", "../../../WebApps/node_modules/@mui/x-date-pickers/PickersCalendarHeader/pickersCalendarHeaderClasses.js", "../../../WebApps/node_modules/@mui/x-date-pickers/PickersCalendarHeader/PickersCalendarHeader.js", "../../../WebApps/node_modules/@mui/x-date-pickers/DateCalendar/dateCalendarClasses.js", "../../../WebApps/react-components/src/inputs/DateRangePicker.tsx", "../../Utils/UtilsStats.ts", "../../../WebApps/Frontend/Console/utils/UtilsWorlds.ts", "../../../WebApps/Frontend/Console/utils/UtilsFilters.ts", "../../../WebApps/Frontend/Console/widgets/AttemptsByTimeGraph.tsx", "../../../WebApps/node_modules/recharts/es6/container/Surface.js", "../../../WebApps/node_modules/recharts/es6/util/types.js", "../../../WebApps/node_modules/recharts/es6/container/Layer.js", "../../../WebApps/node_modules/recharts/es6/component/Legend.js", "../../../WebApps/node_modules/recharts/es6/component/DefaultLegendContent.js", "../../../WebApps/node_modules/recharts/es6/shape/Symbols.js", "../../../WebApps/node_modules/d3-path/src/path.js", "../../../WebApps/node_modules/d3-shape/src/constant.js", "../../../WebApps/node_modules/d3-shape/src/math.js", "../../../WebApps/node_modules/d3-shape/src/array.js", "../../../WebApps/node_modules/d3-shape/src/curve/linear.js", "../../../WebApps/node_modules/d3-shape/src/point.js", "../../../WebApps/node_modules/d3-shape/src/line.js", "../../../WebApps/node_modules/d3-shape/src/area.js", "../../../WebApps/node_modules/d3-shape/src/symbol/circle.js", "../../../WebApps/node_modules/d3-shape/src/symbol/cross.js", "../../../WebApps/node_modules/d3-shape/src/symbol/diamond.js", "../../../WebApps/node_modules/d3-shape/src/symbol/star.js", "../../../WebApps/node_modules/d3-shape/src/symbol/square.js", "../../../WebApps/node_modules/d3-shape/src/symbol/triangle.js", "../../../WebApps/node_modules/d3-shape/src/symbol/wye.js", "../../../WebApps/node_modules/d3-shape/src/symbol.js", "../../../WebApps/node_modules/d3-shape/src/noop.js", "../../../WebApps/node_modules/d3-shape/src/curve/basis.js", "../../../WebApps/node_modules/d3-shape/src/curve/basisClosed.js", "../../../WebApps/node_modules/d3-shape/src/curve/basisOpen.js", "../../../WebApps/node_modules/d3-shape/src/curve/linearClosed.js", "../../../WebApps/node_modules/d3-shape/src/curve/monotone.js", "../../../WebApps/node_modules/d3-shape/src/curve/natural.js", "../../../WebApps/node_modules/d3-shape/src/curve/step.js", "../../../WebApps/node_modules/d3-shape/src/offset/none.js", "../../../WebApps/node_modules/d3-shape/src/order/none.js", "../../../WebApps/node_modules/d3-shape/src/stack.js", "../../../WebApps/node_modules/d3-shape/src/offset/expand.js", "../../../WebApps/node_modules/d3-shape/src/offset/silhouette.js", "../../../WebApps/node_modules/d3-shape/src/offset/wiggle.js", "../../../WebApps/node_modules/recharts/es6/util/DataUtils.js", "../../../WebApps/node_modules/recharts/es6/component/Tooltip.js", "../../../WebApps/node_modules/react-smooth/es6/Animate.js", "../../../WebApps/node_modules/src/utils.ts", "../../../WebApps/node_modules/src/equals.ts", "../../../WebApps/node_modules/src/comparator.ts", "../../../WebApps/node_modules/src/index.ts", "../../../WebApps/node_modules/react-smooth/es6/setRafTimeout.js", "../../../WebApps/node_modules/react-smooth/es6/AnimateManager.js", "../../../WebApps/node_modules/react-smooth/es6/util.js", "../../../WebApps/node_modules/react-smooth/es6/easing.js", "../../../WebApps/node_modules/react-smooth/es6/configUpdate.js", "../../../WebApps/node_modules/react-smooth/es6/AnimateGroup.js", "../../../WebApps/node_modules/react-smooth/es6/AnimateGroupChild.js", "../../../WebApps/node_modules/react-smooth/es6/index.js", "../../../WebApps/node_modules/recharts/es6/component/DefaultTooltipContent.js", "../../../WebApps/node_modules/recharts/es6/util/Global.js", "../../../WebApps/node_modules/recharts/es6/component/ResponsiveContainer.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/tslib/tslib.es6.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/isObject.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/_freeGlobal.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/_root.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/now.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/_trimmedEndIndex.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/_baseTrim.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/_Symbol.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/_getRawTag.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/_objectToString.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/_baseGetTag.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/isObjectLike.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/isSymbol.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/toNumber.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/debounce.js", "../../../WebApps/node_modules/react-resize-detector/node_modules/lodash/throttle.js", "../../../WebApps/node_modules/react-resize-detector/src/utils.ts", "../../../WebApps/node_modules/react-resize-detector/src/ResizeDetector.tsx", "../../../WebApps/node_modules/react-resize-detector/src/withResizeDetector.tsx", "../../../WebApps/node_modules/react-resize-detector/src/useResizeDetector.ts", "../../../WebApps/node_modules/recharts/es6/util/LogUtils.js", "../../../WebApps/node_modules/recharts/es6/component/Cell.js", "../../../WebApps/node_modules/recharts/es6/component/Text.js", "../../../WebApps/node_modules/recharts/es6/util/DOMUtils.js", "../../../WebApps/node_modules/recharts/es6/component/Label.js", "../../../WebApps/node_modules/recharts/es6/util/ReactUtils.js", "../../../WebApps/node_modules/recharts/es6/util/ShallowEqual.js", "../../../WebApps/node_modules/recharts/es6/util/PolarUtils.js", "../../../WebApps/node_modules/recharts/es6/util/ChartUtils.js", "../../../WebApps/node_modules/recharts-scale/es6/getNiceTickValues.js", "../../../WebApps/node_modules/recharts-scale/es6/util/utils.js", "../../../WebApps/node_modules/recharts-scale/es6/util/arithmetic.js", "../../../WebApps/node_modules/d3-scale/src/index.js", "../../../WebApps/node_modules/d3-array/src/ascending.js", "../../../WebApps/node_modules/d3-array/src/bisector.js", "../../../WebApps/node_modules/d3-array/src/number.js", "../../../WebApps/node_modules/d3-array/src/bisect.js", "../../../WebApps/node_modules/d3-array/src/ticks.js", "../../../WebApps/node_modules/d3-array/src/max.js", "../../../WebApps/node_modules/d3-array/src/min.js", "../../../WebApps/node_modules/d3-array/src/quickselect.js", "../../../WebApps/node_modules/d3-array/src/quantile.js", "../../../WebApps/node_modules/d3-array/src/range.js", "../../../WebApps/node_modules/d3-scale/src/init.js", "../../../WebApps/node_modules/d3-scale/src/ordinal.js", "../../../WebApps/node_modules/d3-scale/src/band.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-color/src/define.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-color/src/color.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/basis.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/basisClosed.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/constant.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/color.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/rgb.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/numberArray.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/array.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/date.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/number.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/object.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/string.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/value.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/round.js", "../../../WebApps/node_modules/d3-scale/node_modules/d3-interpolate/src/piecewise.js", "../../../WebApps/node_modules/d3-scale/src/constant.js", "../../../WebApps/node_modules/d3-scale/src/number.js", "../../../WebApps/node_modules/d3-scale/src/continuous.js", "../../../WebApps/node_modules/d3-format/src/formatDecimal.js", "../../../WebApps/node_modules/d3-format/src/exponent.js", "../../../WebApps/node_modules/d3-format/src/formatGroup.js", "../../../WebApps/node_modules/d3-format/src/formatNumerals.js", "../../../WebApps/node_modules/d3-format/src/formatSpecifier.js", "../../../WebApps/node_modules/d3-format/src/formatTrim.js", "../../../WebApps/node_modules/d3-format/src/formatPrefixAuto.js", "../../../WebApps/node_modules/d3-format/src/formatRounded.js", "../../../WebApps/node_modules/d3-format/src/formatTypes.js", "../../../WebApps/node_modules/d3-format/src/identity.js", "../../../WebApps/node_modules/d3-format/src/locale.js", "../../../WebApps/node_modules/d3-format/src/defaultLocale.js", "../../../WebApps/node_modules/d3-format/src/precisionFixed.js", "../../../WebApps/node_modules/d3-format/src/precisionPrefix.js", "../../../WebApps/node_modules/d3-format/src/precisionRound.js", "../../../WebApps/node_modules/d3-scale/src/tickFormat.js", "../../../WebApps/node_modules/d3-scale/src/linear.js", "../../../WebApps/node_modules/d3-scale/src/identity.js", "../../../WebApps/node_modules/d3-scale/src/nice.js", "../../../WebApps/node_modules/d3-scale/src/log.js", "../../../WebApps/node_modules/d3-scale/src/symlog.js", "../../../WebApps/node_modules/d3-scale/src/pow.js", "../../../WebApps/node_modules/d3-scale/src/radial.js", "../../../WebApps/node_modules/d3-scale/src/quantile.js", "../../../WebApps/node_modules/d3-scale/src/quantize.js", "../../../WebApps/node_modules/d3-scale/src/threshold.js", "../../../WebApps/node_modules/d3-time/src/interval.js", "../../../WebApps/node_modules/d3-time/src/millisecond.js", "../../../WebApps/node_modules/d3-time/src/duration.js", "../../../WebApps/node_modules/d3-time/src/second.js", "../../../WebApps/node_modules/d3-time/src/minute.js", "../../../WebApps/node_modules/d3-time/src/hour.js", "../../../WebApps/node_modules/d3-time/src/day.js", "../../../WebApps/node_modules/d3-time/src/week.js", "../../../WebApps/node_modules/d3-time/src/month.js", "../../../WebApps/node_modules/d3-time/src/year.js", "../../../WebApps/node_modules/d3-time/src/utcMinute.js", "../../../WebApps/node_modules/d3-time/src/utcHour.js", "../../../WebApps/node_modules/d3-time/src/utcDay.js", "../../../WebApps/node_modules/d3-time/src/utcWeek.js", "../../../WebApps/node_modules/d3-time/src/utcMonth.js", "../../../WebApps/node_modules/d3-time/src/utcYear.js", "../../../WebApps/node_modules/d3-time/src/ticks.js", "../../../WebApps/node_modules/d3-time-format/src/locale.js", "../../../WebApps/node_modules/d3-time-format/src/defaultLocale.js", "../../../WebApps/node_modules/d3-scale/src/time.js", "../../../WebApps/node_modules/d3-scale/src/utcTime.js", "../../../WebApps/node_modules/d3-scale/src/sequential.js", "../../../WebApps/node_modules/d3-scale/src/sequentialQuantile.js", "../../../WebApps/node_modules/d3-scale/src/diverging.js", "../../../WebApps/node_modules/recharts/es6/component/LabelList.js", "../../../WebApps/node_modules/recharts/es6/shape/Sector.js", "../../../WebApps/node_modules/recharts/es6/shape/Curve.js", "../../../WebApps/node_modules/recharts/es6/shape/Rectangle.js", "../../../WebApps/node_modules/recharts/es6/shape/Polygon.js", "../../../WebApps/node_modules/recharts/es6/shape/Dot.js", "../../../WebApps/node_modules/recharts/es6/shape/Cross.js", "../../../WebApps/node_modules/recharts/es6/polar/PolarRadiusAxis.js", "../../../WebApps/node_modules/recharts/es6/polar/PolarAngleAxis.js", "../../../WebApps/node_modules/recharts/es6/polar/Pie.js", "../../../WebApps/node_modules/recharts/es6/cartesian/Brush.js", "../../../WebApps/node_modules/recharts/es6/util/CssPrefixUtils.js", "../../../WebApps/node_modules/recharts/es6/cartesian/ReferenceLine.js", "../../../WebApps/node_modules/recharts/es6/util/IfOverflowMatches.js", "../../../WebApps/node_modules/recharts/es6/util/CartesianUtils.js", "../../../WebApps/node_modules/recharts/es6/cartesian/ReferenceDot.js", "../../../WebApps/node_modules/recharts/es6/cartesian/ReferenceArea.js", "../../../WebApps/node_modules/recharts/es6/cartesian/CartesianAxis.js", "../../../WebApps/node_modules/recharts/es6/cartesian/CartesianGrid.js", "../../../WebApps/node_modules/recharts/es6/cartesian/Line.js", "../../../WebApps/node_modules/recharts/es6/cartesian/ErrorBar.js", "../../../WebApps/node_modules/recharts/es6/cartesian/Bar.js", "../../../WebApps/node_modules/recharts/es6/cartesian/XAxis.js", "../../../WebApps/node_modules/recharts/es6/cartesian/YAxis.js", "../../../WebApps/node_modules/recharts/es6/chart/generateCategoricalChart.js", "../../../WebApps/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js", "../../../WebApps/node_modules/recharts/es6/util/Events.js", "../../../WebApps/node_modules/recharts/es6/chart/LineChart.js", "../../../WebApps/node_modules/recharts/es6/chart/BarChart.js", "../../../WebApps/node_modules/recharts/es6/chart/PieChart.js", "../../../WebApps/Frontend/Console/components/NoDataToDisplay.tsx", "../../../WebApps/Frontend/Console/Views/Dashboard/MostActive/MostActivePeers.tsx", "../../../WebApps/Frontend/Console/Views/Management/Management.tsx", "../../../WebApps/Frontend/Console/components/BreadcrumbNavigation.tsx", "../../../WebApps/Frontend/Console/Views/Management/GroupsList/GroupsList.tsx", "../../../WebApps/Frontend/Console/Views/Management/GroupsList/GroupItem.tsx", "../../../WebApps/Frontend/Console/Views/Management/GroupsList/EditGroupDialog.tsx", "../../../WebApps/react-components/src/inputs/InputNumber.tsx", "../../../WebApps/react-components/src/icons/Minus.tsx", "../../../WebApps/Frontend/Console/Views/Management/DialogChangeRegion.tsx", "../../../WebApps/Frontend/Console/Views/Management/GroupsList/FlexibilityBarSegment.tsx", "../../../WebApps/Frontend/Console/Views/Management/GroupsList/GroupItemActions.tsx", "../../../WebApps/react-components/src/misc/IconMenu.tsx", "../../../WebApps/react-components/src/icons/ThreeDotsV.tsx", "../../../WebApps/react-components/src/misc/MenuOption.tsx", "../../../WebApps/Frontend/Console/Views/Management/GroupsList/GroupLoadingBar.tsx", "../../../WebApps/Frontend/Console/Views/RouterView.tsx", "../../../WebApps/Frontend/Console/components/ListView/ListView.tsx", "../../../WebApps/Frontend/Console/Views/Management/GroupsList/GroupExportCSV.tsx", "../../../WebApps/Frontend/Console/utils/UtilsAttempts.ts", "../../../WebApps/Frontend/Console/utils/UtilsGroups.ts", "../../../WebApps/Frontend/Console/Views/Management/PeersList/PeersList.tsx", "../../../WebApps/Frontend/Console/Views/Management/PeersList/CreatePeerForm.tsx", "../../../WebApps/Frontend/Console/components/RadioButton.tsx", "../../../WebApps/Frontend/Console/Views/Management/PeersList/AddPeerInput.tsx", "../../../WebApps/Frontend/Console/Views/Management/PeersList/ImportPeers.tsx", "../../../WebApps/Frontend/Console/Views/Management/PeersList/PeerItem.tsx", "../../../WebApps/react-components/src/icons/User.tsx", "../../../WebApps/react-components/src/icons/CheckMark.tsx", "../../../WebApps/Frontend/Console/components/ListView/ListViewItem.tsx", "../../../WebApps/react-components/src/icons/Diamond.tsx", "../../../WebApps/react-components/src/icons/Clock.tsx", "../../../WebApps/Frontend/Console/Views/Management/PeersList/EditPeerEmailDialog.tsx", "../../../WebApps/Frontend/Console/Views/Management/PeersList/AssignPasswordDialog.tsx", "../../../WebApps/Frontend/Console/components/ResponsiveActions.tsx", "../../../WebApps/Frontend/Console/Views/Management/PeersList/EditPeerFullName.tsx", "../../../WebApps/Frontend/Console/Views/Management/PeersList/ConvertToDeepSightActiveDirectoryDialog.tsx", "../../../WebApps/react-components/src/inputs/Checkbox.tsx", "../../../WebApps/Frontend/Console/Views/Management/PeersList/CreatePeersLoadingDialog.tsx", "../../../WebApps/react-components/src/icons/Users.tsx", "../../../WebApps/Frontend/Console/Views/Management/PeersGroupsSwitch.tsx", "../../../WebApps/Frontend/Console/Views/Management/Group/GroupView.tsx", "../../../WebApps/Frontend/Console/widgets/AttemptsPerWorldGraph.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/WorldsList/WorldItem.tsx", "../../../WebApps/Frontend/Console/Views/Management/Group/PeerItem/PeerItem.tsx", "../../../WebApps/Frontend/Console/Views/Management/Group/PeerItem/PeerRoleSwitch.tsx", "../../../WebApps/react-components/src/icons/Star.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/Analytics.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/WorldsList/WorldsView.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/WorldsList/WorldsList.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/WorldsList/DefaultWorldItemActions.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/WorldsList/WorldsAnalyticsSummary.tsx", "../../../WebApps/Frontend/Console/components/LargeNumberDisplay.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/World/WorldView.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/SequencesList/SequenceItem.tsx", "../../../WebApps/react-components/src/icons/OldVersion.tsx", "../../../WebApps/react-components/src/icons/Attempt.tsx", "../../../WebApps/Frontend/Console/widgets/AttemptsPerSequenceGraph.tsx", "../../../WebApps/Frontend/Console/Views/Entities/EntityList/EntityItem.tsx", "../../../WebApps/Frontend/Console/utils/UseIsMounted.ts", "../../../WebApps/Frontend/Console/Views/Entities/EntityList/RenamingEntityDialog.tsx", "../../Types/Entity.ts", "../../../WebApps/react-components/src/icons/Entities.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/World/ManageEntitiesDialog.tsx", "../../../WebApps/Frontend/Console/utils/UtilsEntities.ts", "../../../WebApps/Frontend/Console/Views/Entities/Entities.tsx", "../../../WebApps/Frontend/Console/Views/Entities/EntityList/EntityList.tsx", "../../../WebApps/Frontend/Console/Views/Entities/EntityList/CreateEntityForm.tsx", "../../../WebApps/Frontend/Console/Views/Entities/EntityView/EntityView.tsx", "../../../WebApps/Frontend/Console/Views/Entities/EntityView/EntityWorldsAssociations.tsx", "../../../WebApps/Frontend/Console/Views/Entities/EntityView/ManageWorldAssociationsDialog.tsx", "../../../WebApps/Frontend/Console/Views/Entities/EntityView/EntityAttemptsList.tsx", "../../../WebApps/Frontend/Console/widgets/lists/AttemptItem.tsx", "../../../WebApps/Frontend/Console/Views/Entities/EntityAttemptsListView.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/World/WorldAnalyticsSummary.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/SequencesList/SequencesList.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/SequenceView/SequenceView.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/SequenceView/SequenceUsageSummary.tsx", "../../../WebApps/Frontend/Console/widgets/MedianTimePerStepWaterfallGraph.tsx", "../../../WebApps/react-components/src/icons/InfoCircle.tsx", "../../../WebApps/react-components/src/svg/GreenArrow.tsx", "../../../WebApps/react-components/src/svg/Mustache.tsx", "../../../WebApps/react-components/src/svg/RedArrow.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/SequenceView/StepListSection.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepsList/StepItem.tsx", "../../../WebApps/Frontend/Console/utils/UtilsPdf.ts", "../../../WebApps/node_modules/fflate/esm/browser.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js", "../../../WebApps/node_modules/@babel/runtime/helpers/esm/slicedToArray.js", "../../../WebApps/node_modules/iobuffer/src/text.ts", "../../../WebApps/node_modules/iobuffer/src/IOBuffer.ts", "../../../WebApps/node_modules/fast-png/node_modules/pako/dist/pako.esm.mjs", "../../../WebApps/node_modules/fast-png/src/helpers/crc.ts", "../../../WebApps/node_modules/fast-png/src/helpers/unfilter.ts", "../../../WebApps/node_modules/fast-png/src/helpers/applyUnfilter.ts", "../../../WebApps/node_modules/fast-png/src/helpers/decodeInterlaceAdam7.ts", "../../../WebApps/node_modules/fast-png/src/helpers/decodeInterlaceNull.ts", "../../../WebApps/node_modules/fast-png/src/helpers/signature.ts", "../../../WebApps/node_modules/fast-png/src/helpers/text.ts", "../../../WebApps/node_modules/fast-png/src/internalTypes.ts", "../../../WebApps/node_modules/fast-png/src/PngDecoder.ts", "../../../WebApps/node_modules/fast-png/src/types.ts", "../../../WebApps/node_modules/fast-png/src/index.ts", "../../../WebApps/node_modules/jspdf/src/libs/globalObject.js", "../../../WebApps/node_modules/jspdf/src/libs/console.js", "../../../WebApps/node_modules/jspdf/src/libs/FileSaver.js", "../../../WebApps/node_modules/jspdf/src/libs/rgbcolor.js", "../../../WebApps/node_modules/jspdf/src/libs/AtobBtoa.js", "../../../WebApps/node_modules/jspdf/src/libs/md5.js", "../../../WebApps/node_modules/jspdf/src/libs/rc4.js", "../../../WebApps/node_modules/jspdf/src/libs/pdfsecurity.js", "../../../WebApps/node_modules/jspdf/src/libs/pdfname.js", "../../../WebApps/node_modules/jspdf/src/jspdf.js", "../../../WebApps/node_modules/jspdf/src/modules/acroform.js", "../../../WebApps/node_modules/jspdf/src/libs/fontFace.js", "../../../WebApps/node_modules/jspdf/src/modules/addimage.js", "../../../WebApps/node_modules/jspdf/src/modules/annotations.js", "../../../WebApps/node_modules/jspdf/src/modules/arabic.js", "../../../WebApps/node_modules/jspdf/src/modules/autoprint.js", "../../../WebApps/node_modules/jspdf/src/modules/canvas.js", "../../../WebApps/node_modules/jspdf/src/modules/cell.js", "../../../WebApps/node_modules/jspdf/src/modules/split_text_to_size.js", "../../../WebApps/node_modules/jspdf/src/modules/png_support.js", "../../../WebApps/node_modules/jspdf/src/libs/omggif.js", "../../../WebApps/node_modules/jspdf/src/libs/JPEGEncoder.js", "../../../WebApps/node_modules/jspdf/src/libs/BMPDecoder.js", "../../../WebApps/node_modules/jspdf/src/libs/WebPDecoder.js", "../../../WebApps/node_modules/jspdf/src/modules/xmp_metadata.js", "../../../WebApps/node_modules/jspdf/src/modules/context2d.js", "../../../WebApps/node_modules/jspdf/src/modules/filters.js", "../../../WebApps/node_modules/jspdf/src/modules/fileloading.js", "../../../WebApps/node_modules/jspdf/src/modules/html.js", "../../../WebApps/node_modules/jspdf/src/modules/javascript.js", "../../../WebApps/node_modules/jspdf/src/modules/outline.js", "../../../WebApps/node_modules/jspdf/src/modules/jpeg_support.js", "../../../WebApps/node_modules/jspdf/src/modules/gif_support.js", "../../../WebApps/node_modules/jspdf/src/modules/bmp_support.js", "../../../WebApps/node_modules/jspdf/src/modules/webp_support.js", "../../../WebApps/node_modules/jspdf/src/modules/rgba_support.js", "../../../WebApps/node_modules/jspdf/src/modules/setlanguage.js", "../../../WebApps/node_modules/jspdf/src/modules/standard_fonts_metrics.js", "../../../WebApps/node_modules/jspdf/src/modules/ttfsupport.js", "../../../WebApps/node_modules/jspdf/src/modules/svg.js", "../../../WebApps/node_modules/jspdf/src/modules/total_pages.js", "../../../WebApps/node_modules/jspdf/src/modules/viewerpreferences.js", "../../../WebApps/node_modules/jspdf/src/modules/utf8.js", "../../../WebApps/node_modules/jspdf/src/modules/vfs.js", "../../../WebApps/node_modules/jspdf/src/libs/bidiEngine.js", "../../../WebApps/node_modules/jspdf/src/libs/ttffont.js", "../../../WebApps/Frontend/Console/Views/Analytics/SequenceView/ExporterSequencePDF.ts", "../../../WebApps/node_modules/jspdf-autotable/dist/jspdf.plugin.autotable.mjs", "../../../WebApps/react-components/src/icons/ArrowRight.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/SequenceView/AttemptsListSection.tsx", "../../../WebApps/Frontend/Console/widgets/lists/AttemptsList.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/SequenceView/VersioningSequenceFilter.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepsList/StepList.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/StepView.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/StepPhotoView.tsx", "../../../WebApps/Frontend/Console/contexts/WindowDimensionsContext.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/StepQuestion/StepQuestionView.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/StepQuestion/StepQuestionPieChart.tsx", "../../../WebApps/react-components/src/icons/EmptyAnswer.tsx", "../../../WebApps/react-components/src/icons/CorrectAnswer.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/AnswersList.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/AnswerItem.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/StepVideoView.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/StepVideo/VideoCell.tsx", "../../../WebApps/Frontend/Console/components/FullScreenVideo.tsx", "../../../WebApps/Frontend/Console/components/FullScreenOverlay.tsx", "../../../WebApps/Frontend/Console/utils/UtilsVideos.ts", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/StepAnimatedView/StepAnimatedView.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/StepAnimatedView/MedianTable.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/StepAnimatedView/MedianBar.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/StepBranching/StepBranchingView.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/StepBranching/StepBranchingPieChart.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/StepView/StepInputView.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/AttemptView/AttemptView.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/AttemptView/Header.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/AttemptView/StepCard/StepCard.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/AttemptView/StepCard/Answers/AttemptQuestion.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/AttemptView/StepCard/Answers/ChipAnswer.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/AttemptView/StepCard/Answers/AttemptConfirm.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/AttemptView/StepCard/Media/AttemptPhoto.tsx", "../../../WebApps/react-components/src/icons/ExpandContent.tsx", "../../../WebApps/Frontend/Console/components/FullScreenImage.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/AttemptView/StepCard/Media/AttemptVideo.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/AttemptView/StepCard/Answers/AttemptInput.tsx", "../../../WebApps/Frontend/Console/Views/Analytics/AttemptsList/AttemptListView.tsx", "../../../WebApps/Frontend/Console/Views/Management/Group/InvitePeer/InvitePeerForm.tsx", "../../../WebApps/Frontend/Console/Views/Management/Group/InvitePeer/UserEmailInput.tsx", "../../../WebApps/Frontend/Console/Views/Management/Group/InvitePeer/SelectFromInput.tsx", "../../../WebApps/Frontend/Console/Views/Management/Group/InvitePeer/GroupMembersAutocomplete.tsx", "../../../WebApps/Frontend/Console/Views/Management/Group/InvitePeer/InviteesChips.tsx", "../../../WebApps/Frontend/Console/widgets/lists/DSConnectCallsList.tsx", "../../../WebApps/Frontend/Console/widgets/lists/SessionPreviewItem.tsx", "../../../WebApps/Frontend/Console/Views/Management/Group/GroupInformation.tsx", "../../../WebApps/react-components/src/icons/Cube.tsx", "../../../WebApps/react-components/src/icons/HoloGlasses.tsx", "../../../WebApps/react-components/src/icons/Download.tsx", "../../../WebApps/react-components/src/icons/Upload.tsx", "../../../WebApps/react-components/src/icons/Cloud.tsx", "../../../WebApps/Frontend/Console/Views/Management/Group/GroupPeersList.tsx", "../../../WebApps/Frontend/Console/Views/Management/Peer/PeerView.tsx", "../../../WebApps/Frontend/Console/Views/Management/Peer/Profile/ProfileCard.tsx", "../../../WebApps/Frontend/Console/Views/Management/Peer/Profile/ProfileSection.tsx", "../../../WebApps/Frontend/Console/Views/Management/Peer/GroupCard.tsx", "../../../WebApps/Frontend/Console/components/CardList.tsx", "../../../WebApps/Frontend/Console/components/CardListRow.tsx", "../../../WebApps/Frontend/Console/Views/Management/Peer/LatestSequenceTable.tsx", "../../../WebApps/Frontend/Console/Views/Management/Peer/LatestSequenceRow.tsx", "../../../WebApps/Frontend/Console/widgets/TimeSpentByTimeStampChart.tsx", "../../../WebApps/Frontend/Console/Views/Management/Peer/WorldCard.tsx", "../../../WebApps/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixContainer.tsx", "../../../WebApps/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrix.tsx", "../../../WebApps/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/HeaderCell.tsx", "../../../WebApps/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/FirstColumnCell.tsx", "../../../WebApps/react-components/src/icons/TextSnippet.tsx", "../../../WebApps/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/MatrixCell.tsx", "../../../WebApps/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/CellDialog/MatrixCellDialog.tsx", "../../../WebApps/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/CellDialog/SignatureInput.tsx", "../../../WebApps/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/CellDialog/Signature.tsx", "../../../WebApps/Frontend/Console/components/PartialDonut.tsx", "../../../WebApps/Frontend/Console/Views/Management/SkillsMatrix/MatrixFilters.tsx", "../../../WebApps/react-components/src/inputs/MultipleSelectWithSearch.tsx", "../../../WebApps/Frontend/Console/Views/Management/SkillsMatrix/LearningPathEditor.tsx", "../../Types/Sequence.ts", "../../../WebApps/Frontend/Console/Views/Management/SkillsMatrix/LearningPathSequenceRow.tsx", "../../../WebApps/react-components/src/icons/Menu.tsx", "../../../WebApps/Frontend/Console/Views/Dashboard/MostActive/MostActiveGroups.tsx", "../../../WebApps/Frontend/Console/Views/Dashboard/MostActive/MostActiveWorlds.tsx", "../../../WebApps/Frontend/Console/Views/Dashboard/AnalyticsSummary.tsx", "../../../WebApps/Frontend/Console/Views/Dashboard/StatCard.tsx", "../../../WebApps/react-components/src/icons/Home.tsx", "../../../WebApps/Frontend/DataSources/DataSourceGroups.ts", "../../../WebApps/Frontend/DataSources/DataSourceStorage.ts", "../../Types/World.ts", "../../../WebApps/Frontend/DataSources/DataSourceWorlds.ts", "../../Types/StepAction.ts", "../../Types/AttemptLogs.ts", "../../../WebApps/Frontend/DataSources/DataSourceAttemptLogs.ts", "../../Types/SequenceLogs.ts", "../../../WebApps/Frontend/DataSources/DataSourceSequence.ts", "../../../WebApps/Frontend/DataSources/DataSourceSteps.ts", "../../../WebApps/Frontend/DataSources/DataSourcePlans.ts", "../../../WebApps/Frontend/DataSources/DataSourceVideo.ts", "../../../SENTRY_DSN.txt", "../../../WebApps/Frontend/Console/Views/Insights/Insights.tsx", "../../../WebApps/Frontend/Console/Views/Insights/UnclearSteps.tsx", "../../../WebApps/Frontend/Console/Views/Insights/InsightsTypeItem.tsx", "../../../WebApps/react-components/src/inputs/Accordion.tsx", "../../Utils/UtilsInsights.ts", "../../../WebApps/Frontend/Console/Views/Insights/ProblematicStepItem.tsx", "../../../WebApps/Frontend/Console/Views/Insights/TimeConsumingSteps.tsx", "../../../WebApps/Frontend/Console/Views/Insights/InsightsSummary.tsx", "../../../WebApps/Frontend/Console/Views/Insights/SkippedSteps.tsx", "../../../WebApps/react-components/src/icons/Bulb.tsx", "../../../WebApps/Frontend/DataSources/DataSourceEntities.ts", "../../../WebApps/Frontend/DataSources/DataSourceSpeech.ts", "../../../WebApps/Frontend/Login/AppLoginDialog.tsx", "../../../WebApps/Frontend/DataSources/DataSourceSessions.ts", "../../../WebApps/Frontend/DataSources/DataSourceText.ts", "../../../WebApps/react-components/Announcements/AnnouncementDialog.tsx", "../../../WebApps/node_modules/marked/src/defaults.ts", "../../../WebApps/node_modules/marked/src/helpers.ts", "../../../WebApps/node_modules/marked/src/Tokenizer.ts", "../../../WebApps/node_modules/marked/src/rules.ts", "../../../WebApps/node_modules/marked/src/Lexer.ts", "../../../WebApps/node_modules/marked/src/Renderer.ts", "../../../WebApps/node_modules/marked/src/TextRenderer.ts", "../../../WebApps/node_modules/marked/src/Slugger.ts", "../../../WebApps/node_modules/marked/src/Parser.ts", "../../../WebApps/node_modules/marked/src/Hooks.ts", "../../../WebApps/node_modules/marked/src/Instance.ts", "../../../WebApps/node_modules/marked/src/marked.ts", "../../../WebApps/react-components/Announcements/MarkdownCustomStyle.ts", "../../Types/Announcement.ts", "../../../WebApps/Frontend/DataSources/DataSourceAnnouncements.ts", "../../../WebApps/Frontend/DataSources/DataSourcePeers.ts", "../../../WebApps/Frontend/Login/HelperLogin.ts", "../../../WebApps/Frontend/Studio/Views/DeepSightConnect/DeepSightConnect.tsx", "../../../WebApps/Frontend/Studio/Views/DeepSightConnect/DeepSightConnectWidget.tsx", "../../../WebApps/react-components/src/icons/DeepSightConnect.tsx", "../../../WebApps/Frontend/Studio/Views/DeepSightConnect/ConnectDialog.tsx", "../../../WebApps/Frontend/Studio/Views/DeepSightConnect/SessionCode.tsx", "../../../WebApps/Frontend/Studio/Views/DeepSightConnect/ConnectedHeader.tsx", "../../../WebApps/react-components/src/icons/Logout.tsx", "../../../WebApps/react-components/src/icons/Pointer.tsx", "../../../WebApps/react-components/src/icons/AddImage.tsx", "../../../WebApps/Frontend/Studio/Views/DeepSightConnect/RemotePeerRow.tsx", "../../../WebApps/Frontend/Studio/Views/DeepSightConnect/ConnectionLoading.tsx", "../../../WebApps/react-components/src/icons/Computer.tsx", "../../../WebApps/react-components/src/icons/AppleLogo.tsx", "../../../WebApps/Frontend/Studio/Views/PartsList/AssetPanel.tsx", "../../../WebApps/Frontend/Studio/Views/PartsList/PartsList.tsx", "../../../WebApps/Frontend/Studio/Views/PartsList/PartsVirtualized/Part/Part.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/AddAssetButton.tsx", "../../../WebApps/Frontend/Studio/Views/Anchors/AnchorsButton.tsx", "../../../WebApps/Frontend/Studio/Views/Anchors/AnchorsDialog.tsx", "../../../WebApps/Frontend/Studio/Views/Anchors/AnchorsCollection.tsx", "../../../WebApps/Frontend/Studio/Engine/AdapterWeb/Anchors.tsx", "../../../WebApps/react-components/src/misc/Item.tsx", "../../../WebApps/Frontend/Studio/Views/Anchors/AnchorSettings.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/AssetDialog.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/DocumentsLibrary/DocumentsLibrary.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/DocumentsLibrary/DocumentsCollection.tsx", "../../../WebApps/react-components/src/misc/ArrowPopup.tsx", "../../../WebApps/react-components/src/utils.ts", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/DocumentsLibrary/DocumentItem.tsx", "../../../WebApps/Frontend/Studio/Components/TagsPopup.tsx", "../../../WebApps/Frontend/Studio/Components/TabsCategories.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/DocumentsLibrary/DocumentsFilters.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepEditor/StepEditorDialog.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepEditor/Views/StepAnimatedEditor.tsx", "../../../WebApps/Frontend/Studio/Contexts/SelectedStepContext.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoLibrary.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoItem.tsx", "../../../WebApps/react-components/src/icons/Tag.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/VideoAsset/DeleteVideoWarning.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoFilters.tsx", "../../../WebApps/Frontend/Studio/Components/MediaPreview.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepEditor/Views/InputTextTranslation.tsx", "../../../WebApps/react-components/src/inputs/InputTextarea.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepEditor/Views/StepBranchingEditor.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepEditor/Views/Branching/JumpDestinationSelection.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepEditor/Views/StepQuestionEditor.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepEditor/Views/StepPhotoEditor.tsx", "../../../WebApps/node_modules/react-image-crop/dist/index.js", "../../../WebApps/Frontend/Studio/Views/StepsList/StepEditor/Views/StepVideoEditor.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepEditor/Views/StepInputEditor.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/DocumentsLibrary/ImportDocumentButton.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/TextAssetCreator.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/ImageAssetCreator.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoAssetCreator.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoAssetForm.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/MTConnectAssetCreator.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/MTConnect/AvailableDataItemsList.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/MTConnect/AvailableDataItem.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/MTConnect/ObservedDataItemsList.tsx", "../../../WebApps/Frontend/Studio/Views/AssetsDialog/MTConnect/ObservedDataItem.tsx", "../../../WebApps/react-components/src/icons/Mobile.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepsPanel.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepsContainer.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepsList/StepsList.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepsList/Step/StepItem.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepsList/Step/UtilsStepRenderer.tsx", "../../../WebApps/react-components/src/icons/QuestionMark.tsx", "../../../WebApps/react-components/src/icons/Camera.tsx", "../../../WebApps/react-components/src/icons/StepInputIcon.tsx", "../../../WebApps/react-components/src/icons/Branching.tsx", "../../../WebApps/react-components/src/icons/DragIcon.tsx", "../../../WebApps/react-components/src/icons/ImageIcon.tsx", "../../../WebApps/react-components/src/icons/VideoAutoPlayer.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepsList/Step/AddStep.tsx", "../../../WebApps/react-components/src/icons/Add.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepsList/GenerateStepsDialog.tsx", "../../../WebApps/Frontend/Studio/Views/StepsList/StepsPlayer.tsx", "../../../WebApps/react-components/src/icons/ChevronBar.tsx", "../../../WebApps/react-components/src/icons/Stop.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequencesPanel.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceList.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceItem.tsx", "../../../WebApps/react-components/src/icons/Arrow.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/Tags/SequenceTagsContainer.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/Tags/SequenceTag.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/NewSequenceDialog.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/Tags/SequenceTagsFilter.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceInformation.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceLanguageSelect.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceObjectives.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceObjectiveGradeDialog.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceNotes.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceCritical.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceLevel.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceExpiration.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceTagsInformation.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceTagsEditorDialog.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/SequenceActions.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/GroupsExclusiveDialog.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/PublishDialog.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/VersioningSequence.tsx", "../../../WebApps/react-components/src/icons/Draft.tsx", "../../../WebApps/react-components/src/icons/CurrentVersion.tsx", "../../../WebApps/Frontend/Studio/Views/SequencesPanel/CloneSequenceLoading.tsx"],
  "sourcesContent": ["'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\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst 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\nconst 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    const arr = new Uint8Array(1)\n    const 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  const 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  const valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  const 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(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\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  const length = byteLength(string, encoding) | 0\n  let buf = createBuffer(length)\n\n  const 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  const length = array.length < 0 ? 0 : checked(array.length) | 0\n  const buf = createBuffer(length)\n  for (let 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    const 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  let 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    const len = checked(obj.length) | 0\n    const 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  let x = a.length\n  let y = b.length\n\n  for (let 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  let 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  const buffer = Buffer.allocUnsafe(length)\n  let pos = 0\n  for (i = 0; i < list.length; ++i) {\n    let buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n        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  const len = string.length\n  const mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  let 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  let 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  const i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  const len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (let i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  const len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (let 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  const len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (let 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  const 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  let str = ''\n  const 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  let x = thisEnd - thisStart\n  let y = end - start\n  const len = Math.min(x, y)\n\n  const thisCopy = this.slice(thisStart, thisEnd)\n  const targetCopy = target.slice(start, end)\n\n  for (let 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  let indexSize = 1\n  let arrLength = arr.length\n  let 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  let i\n  if (dir) {\n    let 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      let found = true\n      for (let 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  const 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  const strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  let i\n  for (i = 0; i < length; ++i) {\n    const 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  const 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  let 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  const res = []\n\n  let i = start\n  while (i < end) {\n    const firstByte = buf[i]\n    let codePoint = null\n    let bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      let 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\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  const 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  let res = ''\n  let 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  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  const len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  let out = ''\n  for (let i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  const bytes = buf.slice(start, end)\n  let res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (let 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  const 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  const 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  let val = this[offset]\n  let mul = 1\n  let 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  let val = this[offset + --byteLength]\n  let 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.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const lo = first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24\n\n  const hi = this[++offset] +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    last * 2 ** 24\n\n  return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const hi = first * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  const lo = this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last\n\n  return (BigInt(hi) << BigInt(32)) + BigInt(lo)\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  let val = this[offset]\n  let mul = 1\n  let 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  let i = byteLength\n  let mul = 1\n  let 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  const 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  const 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.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = this[offset + 4] +\n    this[offset + 5] * 2 ** 8 +\n    this[offset + 6] * 2 ** 16 +\n    (last << 24) // Overflow\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = (first << 24) + // Overflow\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last)\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    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let mul = 1\n  let 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    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let i = byteLength - 1\n  let 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\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset + 7] = lo\n  lo = lo >> 8\n  buf[offset + 6] = lo\n  lo = lo >> 8\n  buf[offset + 5] = lo\n  lo = lo >> 8\n  buf[offset + 4] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset + 3] = hi\n  hi = hi >> 8\n  buf[offset + 2] = hi\n  hi = hi >> 8\n  buf[offset + 1] = hi\n  hi = hi >> 8\n  buf[offset] = hi\n  return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = 0\n  let mul = 1\n  let 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    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  let 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\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\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  const 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      const 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  let i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    const bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    const 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// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n  errors[sym] = class NodeError extends Base {\n    constructor () {\n      super()\n\n      Object.defineProperty(this, 'message', {\n        value: getMessage.apply(this, arguments),\n        writable: true,\n        configurable: true\n      })\n\n      // Add the error code to the name to include it in the stack trace.\n      this.name = `${this.name} [${sym}]`\n      // Access the stack to generate the error message including the error code\n      // from the name.\n      this.stack // eslint-disable-line no-unused-expressions\n      // Reset the name to the actual name.\n      delete this.name\n    }\n\n    get code () {\n      return sym\n    }\n\n    set code (value) {\n      Object.defineProperty(this, 'code', {\n        configurable: true,\n        enumerable: true,\n        value,\n        writable: true\n      })\n    }\n\n    toString () {\n      return `${this.name} [${sym}]: ${this.message}`\n    }\n  }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n  function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`\n    }\n\n    return 'Attempt to access memory outside buffer bounds'\n  }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n  function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n  }, TypeError)\nE('ERR_OUT_OF_RANGE',\n  function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`\n    let received = input\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input))\n    } else if (typeof input === 'bigint') {\n      received = String(input)\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received)\n      }\n      received += 'n'\n    }\n    msg += ` It must be ${range}. Received ${received}`\n    return msg\n  }, RangeError)\n\nfunction addNumericalSeparator (val) {\n  let res = ''\n  let i = val.length\n  const start = val[0] === '-' ? 1 : 0\n  for (; i >= start + 4; i -= 3) {\n    res = `_${val.slice(i - 3, i)}${res}`\n  }\n  return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n  validateNumber(offset, 'offset')\n  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n    boundsError(offset, buf.length - (byteLength + 1))\n  }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n  if (value > max || value < min) {\n    const n = typeof min === 'bigint' ? 'n' : ''\n    let range\n    if (byteLength > 3) {\n      if (min === 0 || min === BigInt(0)) {\n        range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n      } else {\n        range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n                `${(byteLength + 1) * 8 - 1}${n}`\n      }\n    } else {\n      range = `>= ${min}${n} and <= ${max}${n}`\n    }\n    throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n  }\n  checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n  if (typeof value !== 'number') {\n    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n}\n\nfunction boundsError (value, length, type) {\n  if (Math.floor(value) !== value) {\n    validateNumber(value, type)\n    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n  }\n\n  if (length < 0) {\n    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n  }\n\n  throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n                                    `>= ${type ? 1 : 0} and <= ${length}`,\n                                    value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst 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  let codePoint\n  const length = string.length\n  let leadSurrogate = null\n  const bytes = []\n\n  for (let 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  const byteArray = []\n  for (let 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  let c, hi, lo\n  const byteArray = []\n  for (let 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  let i\n  for (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\nconst hexSliceLookupTable = (function () {\n  const alphabet = '0123456789abcdef'\n  const table = new Array(256)\n  for (let i = 0; i < 16; ++i) {\n    const i16 = i * 16\n    for (let j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n  throw new Error('BigInt not supported')\n}\n", "/**\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.0.0-fc46dba67-20220329';\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 = Symbol.for('react.module.reference');\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", "const isString = obj => typeof obj === 'string';\nconst defer = () => {\n  let res;\n  let rej;\n  const promise = new Promise((resolve, reject) => {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n};\nconst makeString = object => {\n  if (object == null) return '';\n  return '' + object;\n};\nconst copy = (a, s, t) => {\n  a.forEach(m => {\n    if (s[m]) t[m] = s[m];\n  });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n  const stack = !isString(path) ? path : path.split('.');\n  let stackIndex = 0;\n  while (stackIndex < stack.length - 1) {\n    if (canNotTraverseDeeper(object)) return {};\n    const key = cleanKey(stack[stackIndex]);\n    if (!object[key] && Empty) object[key] = new Empty();\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n    ++stackIndex;\n  }\n  if (canNotTraverseDeeper(object)) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack[stackIndex])\n  };\n};\nconst setPath = (object, path, newValue) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  if (obj !== undefined || path.length === 1) {\n    obj[k] = newValue;\n    return;\n  }\n  let e = path[path.length - 1];\n  let p = path.slice(0, path.length - 1);\n  let last = getLastOfPath(object, p, Object);\n  while (last.obj === undefined && p.length) {\n    e = `${p[p.length - 1]}.${e}`;\n    p = p.slice(0, p.length - 1);\n    last = getLastOfPath(object, p, Object);\n    if (last && last.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n      last.obj = undefined;\n    }\n  }\n  last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  obj[k] = obj[k] || [];\n  obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path);\n  if (!obj) return undefined;\n  return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n  const value = getPath(data, key);\n  if (value !== undefined) {\n    return value;\n  }\n  return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n  for (const prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (prop in target) {\n        if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n          if (overwrite) target[prop] = source[prop];\n        } else {\n          deepExtend(target[prop], source[prop], overwrite);\n        }\n      } else {\n        target[prop] = source[prop];\n      }\n    }\n  }\n  return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nvar _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\nconst escape = data => {\n  if (isString(data)) {\n    return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n  }\n  return data;\n};\nclass RegExpCache {\n  constructor(capacity) {\n    this.capacity = capacity;\n    this.regExpMap = new Map();\n    this.regExpQueue = [];\n  }\n  getRegExp(pattern) {\n    const regExpFromCache = this.regExpMap.get(pattern);\n    if (regExpFromCache !== undefined) {\n      return regExpFromCache;\n    }\n    const regExpNew = new RegExp(pattern);\n    if (this.regExpQueue.length === this.capacity) {\n      this.regExpMap.delete(this.regExpQueue.shift());\n    }\n    this.regExpMap.set(pattern, regExpNew);\n    this.regExpQueue.push(pattern);\n    return regExpNew;\n  }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n  nsSeparator = nsSeparator || '';\n  keySeparator = keySeparator || '';\n  const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n  if (possibleChars.length === 0) return true;\n  const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n  let matched = !r.test(key);\n  if (!matched) {\n    const ki = key.indexOf(keySeparator);\n    if (ki > 0 && !r.test(key.substring(0, ki))) {\n      matched = true;\n    }\n  }\n  return matched;\n};\nconst deepFind = function (obj, path) {\n  let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n  if (!obj) return undefined;\n  if (obj[path]) return obj[path];\n  const tokens = path.split(keySeparator);\n  let current = obj;\n  for (let i = 0; i < tokens.length;) {\n    if (!current || typeof current !== 'object') {\n      return undefined;\n    }\n    let next;\n    let nextPath = '';\n    for (let j = i; j < tokens.length; ++j) {\n      if (j !== i) {\n        nextPath += keySeparator;\n      }\n      nextPath += tokens[j];\n      next = current[nextPath];\n      if (next !== undefined) {\n        if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n          continue;\n        }\n        i += j - i + 1;\n        break;\n      }\n    }\n    current = next;\n  }\n  return current;\n};\nconst getCleanedCode = code => code && code.replace('_', '-');\n\nconst consoleLogger = {\n  type: 'logger',\n  log(args) {\n    this.output('log', args);\n  },\n  warn(args) {\n    this.output('warn', args);\n  },\n  error(args) {\n    this.output('error', args);\n  },\n  output(type, args) {\n    if (console && console[type]) console[type].apply(console, args);\n  }\n};\nclass Logger {\n  constructor(concreteLogger) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.init(concreteLogger, options);\n  }\n  init(concreteLogger) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.prefix = options.prefix || 'i18next:';\n    this.logger = concreteLogger || consoleLogger;\n    this.options = options;\n    this.debug = options.debug;\n  }\n  log() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return this.forward(args, 'log', '', true);\n  }\n  warn() {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    return this.forward(args, 'warn', '', true);\n  }\n  error() {\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n    return this.forward(args, 'error', '');\n  }\n  deprecate() {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n    return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n  }\n  forward(args, lvl, prefix, debugOnly) {\n    if (debugOnly && !this.debug) return null;\n    if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n    return this.logger[lvl](args);\n  }\n  create(moduleName) {\n    return new Logger(this.logger, {\n      ...{\n        prefix: `${this.prefix}:${moduleName}:`\n      },\n      ...this.options\n    });\n  }\n  clone(options) {\n    options = options || this.options;\n    options.prefix = options.prefix || this.prefix;\n    return new Logger(this.logger, options);\n  }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n  constructor() {\n    this.observers = {};\n  }\n  on(events, listener) {\n    events.split(' ').forEach(event => {\n      if (!this.observers[event]) this.observers[event] = new Map();\n      const numListeners = this.observers[event].get(listener) || 0;\n      this.observers[event].set(listener, numListeners + 1);\n    });\n    return this;\n  }\n  off(event, listener) {\n    if (!this.observers[event]) return;\n    if (!listener) {\n      delete this.observers[event];\n      return;\n    }\n    this.observers[event].delete(listener);\n  }\n  emit(event) {\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    if (this.observers[event]) {\n      const cloned = Array.from(this.observers[event].entries());\n      cloned.forEach(_ref => {\n        let [observer, numTimesAdded] = _ref;\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer(...args);\n        }\n      });\n    }\n    if (this.observers['*']) {\n      const cloned = Array.from(this.observers['*'].entries());\n      cloned.forEach(_ref2 => {\n        let [observer, numTimesAdded] = _ref2;\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer.apply(observer, [event, ...args]);\n        }\n      });\n    }\n  }\n}\n\nclass ResourceStore extends EventEmitter {\n  constructor(data) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      ns: ['translation'],\n      defaultNS: 'translation'\n    };\n    super();\n    this.data = data || {};\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    if (this.options.ignoreJSONStructure === undefined) {\n      this.options.ignoreJSONStructure = true;\n    }\n  }\n  addNamespaces(ns) {\n    if (this.options.ns.indexOf(ns) < 0) {\n      this.options.ns.push(ns);\n    }\n  }\n  removeNamespaces(ns) {\n    const index = this.options.ns.indexOf(ns);\n    if (index > -1) {\n      this.options.ns.splice(index, 1);\n    }\n  }\n  getResource(lng, ns, key) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n    let path;\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n    } else {\n      path = [lng, ns];\n      if (key) {\n        if (Array.isArray(key)) {\n          path.push(...key);\n        } else if (isString(key) && keySeparator) {\n          path.push(...key.split(keySeparator));\n        } else {\n          path.push(key);\n        }\n      }\n    }\n    const result = getPath(this.data, path);\n    if (!result && !ns && !key && lng.indexOf('.') > -1) {\n      lng = path[0];\n      ns = path[1];\n      key = path.slice(2).join('.');\n    }\n    if (result || !ignoreJSONStructure || !isString(key)) return result;\n    return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n  }\n  addResource(lng, ns, key, value) {\n    let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n      silent: false\n    };\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    let path = [lng, ns];\n    if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      value = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    setPath(this.data, path, value);\n    if (!options.silent) this.emit('added', lng, ns, key, value);\n  }\n  addResources(lng, ns, resources) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n      silent: false\n    };\n    for (const m in resources) {\n      if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n        silent: true\n      });\n    }\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  addResourceBundle(lng, ns, resources, deep, overwrite) {\n    let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n      silent: false,\n      skipCopy: false\n    };\n    let path = [lng, ns];\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      deep = resources;\n      resources = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    let pack = getPath(this.data, path) || {};\n    if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n    if (deep) {\n      deepExtend(pack, resources, overwrite);\n    } else {\n      pack = {\n        ...pack,\n        ...resources\n      };\n    }\n    setPath(this.data, path, pack);\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  removeResourceBundle(lng, ns) {\n    if (this.hasResourceBundle(lng, ns)) {\n      delete this.data[lng][ns];\n    }\n    this.removeNamespaces(ns);\n    this.emit('removed', lng, ns);\n  }\n  hasResourceBundle(lng, ns) {\n    return this.getResource(lng, ns) !== undefined;\n  }\n  getResourceBundle(lng, ns) {\n    if (!ns) ns = this.options.defaultNS;\n    if (this.options.compatibilityAPI === 'v1') return {\n      ...{},\n      ...this.getResource(lng, ns)\n    };\n    return this.getResource(lng, ns);\n  }\n  getDataByLanguage(lng) {\n    return this.data[lng];\n  }\n  hasLanguageSomeTranslations(lng) {\n    const data = this.getDataByLanguage(lng);\n    const n = data && Object.keys(data) || [];\n    return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n  }\n  toJSON() {\n    return this.data;\n  }\n}\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle(processors, value, key, options, translator) {\n    processors.forEach(processor => {\n      if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n    });\n    return value;\n  }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n  constructor(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super();\n    copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    this.logger = baseLogger.create('translator');\n  }\n  changeLanguage(lng) {\n    if (lng) this.language = lng;\n  }\n  exists(key) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      interpolation: {}\n    };\n    if (key === undefined || key === null) {\n      return false;\n    }\n    const resolved = this.resolve(key, options);\n    return resolved && resolved.res !== undefined;\n  }\n  extractFromKey(key, options) {\n    let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n    if (nsSeparator === undefined) nsSeparator = ':';\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    let namespaces = options.ns || this.options.defaultNS || [];\n    const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n    const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n    if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n      const m = key.match(this.interpolator.nestingRegexp);\n      if (m && m.length > 0) {\n        return {\n          key,\n          namespaces: isString(namespaces) ? [namespaces] : namespaces\n        };\n      }\n      const parts = key.split(nsSeparator);\n      if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n      key = parts.join(keySeparator);\n    }\n    return {\n      key,\n      namespaces: isString(namespaces) ? [namespaces] : namespaces\n    };\n  }\n  translate(keys, options, lastKey) {\n    if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n      options = this.options.overloadTranslationOptionHandler(arguments);\n    }\n    if (typeof options === 'object') options = {\n      ...options\n    };\n    if (!options) options = {};\n    if (keys === undefined || keys === null) return '';\n    if (!Array.isArray(keys)) keys = [String(keys)];\n    const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    const {\n      key,\n      namespaces\n    } = this.extractFromKey(keys[keys.length - 1], options);\n    const namespace = namespaces[namespaces.length - 1];\n    const lng = options.lng || this.language;\n    const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n    if (lng && lng.toLowerCase() === 'cimode') {\n      if (appendNamespaceToCIMode) {\n        const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n        if (returnDetails) {\n          return {\n            res: `${namespace}${nsSeparator}${key}`,\n            usedKey: key,\n            exactUsedKey: key,\n            usedLng: lng,\n            usedNS: namespace,\n            usedParams: this.getUsedParamsDetails(options)\n          };\n        }\n        return `${namespace}${nsSeparator}${key}`;\n      }\n      if (returnDetails) {\n        return {\n          res: key,\n          usedKey: key,\n          exactUsedKey: key,\n          usedLng: lng,\n          usedNS: namespace,\n          usedParams: this.getUsedParamsDetails(options)\n        };\n      }\n      return key;\n    }\n    const resolved = this.resolve(keys, options);\n    let res = resolved && resolved.res;\n    const resUsedKey = resolved && resolved.usedKey || key;\n    const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n    const resType = Object.prototype.toString.apply(res);\n    const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n    const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n    const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n    const handleAsObject = !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\n    if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(isString(joinArrays) && Array.isArray(res))) {\n      if (!options.returnObjects && !this.options.returnObjects) {\n        if (!this.options.returnedObjectHandler) {\n          this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n        }\n        const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n          ...options,\n          ns: namespaces\n        }) : `key '${key} (${this.language})' returned an object instead of string.`;\n        if (returnDetails) {\n          resolved.res = r;\n          resolved.usedParams = this.getUsedParamsDetails(options);\n          return resolved;\n        }\n        return r;\n      }\n      if (keySeparator) {\n        const resTypeIsArray = Array.isArray(res);\n        const copy = resTypeIsArray ? [] : {};\n        const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n        for (const m in res) {\n          if (Object.prototype.hasOwnProperty.call(res, m)) {\n            const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n            copy[m] = this.translate(deepKey, {\n              ...options,\n              ...{\n                joinArrays: false,\n                ns: namespaces\n              }\n            });\n            if (copy[m] === deepKey) copy[m] = res[m];\n          }\n        }\n        res = copy;\n      }\n    } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n      res = res.join(joinArrays);\n      if (res) res = this.extendTranslation(res, keys, options, lastKey);\n    } else {\n      let usedDefault = false;\n      let usedKey = false;\n      const needsPluralHandling = options.count !== undefined && !isString(options.count);\n      const hasDefaultValue = Translator.hasDefaultValue(options);\n      const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n      const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n        ordinal: false\n      }) : '';\n      const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n      const defaultValue = needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] || options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n      if (!this.isValidLookup(res) && hasDefaultValue) {\n        usedDefault = true;\n        res = defaultValue;\n      }\n      if (!this.isValidLookup(res)) {\n        usedKey = true;\n        res = key;\n      }\n      const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n      const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n      const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n      if (usedKey || usedDefault || updateMissing) {\n        this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n        if (keySeparator) {\n          const fk = this.resolve(key, {\n            ...options,\n            keySeparator: false\n          });\n          if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n        }\n        let lngs = [];\n        const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n        if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n          for (let i = 0; i < fallbackLngs.length; i++) {\n            lngs.push(fallbackLngs[i]);\n          }\n        } else if (this.options.saveMissingTo === 'all') {\n          lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n        } else {\n          lngs.push(options.lng || this.language);\n        }\n        const send = (l, k, specificDefaultValue) => {\n          const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n          if (this.options.missingKeyHandler) {\n            this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n          } else if (this.backendConnector && this.backendConnector.saveMissing) {\n            this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n          }\n          this.emit('missingKey', l, namespace, k, res);\n        };\n        if (this.options.saveMissing) {\n          if (this.options.saveMissingPlurals && needsPluralHandling) {\n            lngs.forEach(language => {\n              const suffixes = this.pluralResolver.getSuffixes(language, options);\n              if (needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n                suffixes.push(`${this.options.pluralSeparator}zero`);\n              }\n              suffixes.forEach(suffix => {\n                send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n              });\n            });\n          } else {\n            send(lngs, key, defaultValue);\n          }\n        }\n      }\n      res = this.extendTranslation(res, keys, options, resolved, lastKey);\n      if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n      if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n        if (this.options.compatibilityAPI !== 'v1') {\n          res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n        } else {\n          res = this.options.parseMissingKeyHandler(res);\n        }\n      }\n    }\n    if (returnDetails) {\n      resolved.res = res;\n      resolved.usedParams = this.getUsedParamsDetails(options);\n      return resolved;\n    }\n    return res;\n  }\n  extendTranslation(res, key, options, resolved, lastKey) {\n    var _this = this;\n    if (this.i18nFormat && this.i18nFormat.parse) {\n      res = this.i18nFormat.parse(res, {\n        ...this.options.interpolation.defaultVariables,\n        ...options\n      }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n        resolved\n      });\n    } else if (!options.skipInterpolation) {\n      if (options.interpolation) this.interpolator.init({\n        ...options,\n        ...{\n          interpolation: {\n            ...this.options.interpolation,\n            ...options.interpolation\n          }\n        }\n      });\n      const skipOnVariables = isString(res) && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n      let nestBef;\n      if (skipOnVariables) {\n        const nb = res.match(this.interpolator.nestingRegexp);\n        nestBef = nb && nb.length;\n      }\n      let data = options.replace && !isString(options.replace) ? options.replace : options;\n      if (this.options.interpolation.defaultVariables) data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n      res = this.interpolator.interpolate(res, data, options.lng || this.language || resolved.usedLng, options);\n      if (skipOnVariables) {\n        const na = res.match(this.interpolator.nestingRegexp);\n        const nestAft = na && na.length;\n        if (nestBef < nestAft) options.nest = false;\n      }\n      if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = this.language || resolved.usedLng;\n      if (options.nest !== false) res = this.interpolator.nest(res, function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        if (lastKey && lastKey[0] === args[0] && !options.context) {\n          _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n          return null;\n        }\n        return _this.translate(...args, key);\n      }, options);\n      if (options.interpolation) this.interpolator.reset();\n    }\n    const postProcess = options.postProcess || this.options.postProcess;\n    const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n    if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n      res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n        i18nResolved: {\n          ...resolved,\n          usedParams: this.getUsedParamsDetails(options)\n        },\n        ...options\n      } : options, this);\n    }\n    return res;\n  }\n  resolve(keys) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let found;\n    let usedKey;\n    let exactUsedKey;\n    let usedLng;\n    let usedNS;\n    if (isString(keys)) keys = [keys];\n    keys.forEach(k => {\n      if (this.isValidLookup(found)) return;\n      const extracted = this.extractFromKey(k, options);\n      const key = extracted.key;\n      usedKey = key;\n      let namespaces = extracted.namespaces;\n      if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n      const needsPluralHandling = options.count !== undefined && !isString(options.count);\n      const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n      const needsContextHandling = options.context !== undefined && (isString(options.context) || typeof options.context === 'number') && options.context !== '';\n      const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n      namespaces.forEach(ns => {\n        if (this.isValidLookup(found)) return;\n        usedNS = ns;\n        if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n          checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n          this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n        }\n        codes.forEach(code => {\n          if (this.isValidLookup(found)) return;\n          usedLng = code;\n          const finalKeys = [key];\n          if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n            this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n          } else {\n            let pluralSuffix;\n            if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n            const zeroSuffix = `${this.options.pluralSeparator}zero`;\n            const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n            if (needsPluralHandling) {\n              finalKeys.push(key + pluralSuffix);\n              if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n                finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n              }\n              if (needsZeroSuffixLookup) {\n                finalKeys.push(key + zeroSuffix);\n              }\n            }\n            if (needsContextHandling) {\n              const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n              finalKeys.push(contextKey);\n              if (needsPluralHandling) {\n                finalKeys.push(contextKey + pluralSuffix);\n                if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n                  finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n                }\n                if (needsZeroSuffixLookup) {\n                  finalKeys.push(contextKey + zeroSuffix);\n                }\n              }\n            }\n          }\n          let possibleKey;\n          while (possibleKey = finalKeys.pop()) {\n            if (!this.isValidLookup(found)) {\n              exactUsedKey = possibleKey;\n              found = this.getResource(code, ns, possibleKey, options);\n            }\n          }\n        });\n      });\n    });\n    return {\n      res: found,\n      usedKey,\n      exactUsedKey,\n      usedLng,\n      usedNS\n    };\n  }\n  isValidLookup(res) {\n    return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n  }\n  getResource(code, ns, key) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n    return this.resourceStore.getResource(code, ns, key, options);\n  }\n  getUsedParamsDetails() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n    const useOptionsReplaceForData = options.replace && !isString(options.replace);\n    let data = useOptionsReplaceForData ? options.replace : options;\n    if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n      data.count = options.count;\n    }\n    if (this.options.interpolation.defaultVariables) {\n      data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n    }\n    if (!useOptionsReplaceForData) {\n      data = {\n        ...data\n      };\n      for (const key of optionsKeys) {\n        delete data[key];\n      }\n    }\n    return data;\n  }\n  static hasDefaultValue(options) {\n    const prefix = 'defaultValue';\n    for (const option in options) {\n      if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n        return true;\n      }\n    }\n    return false;\n  }\n}\n\nconst capitalize = string => string.charAt(0).toUpperCase() + string.slice(1);\nclass LanguageUtil {\n  constructor(options) {\n    this.options = options;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n  getScriptPartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || code.indexOf('-') < 0) return null;\n    const p = code.split('-');\n    if (p.length === 2) return null;\n    p.pop();\n    if (p[p.length - 1].toLowerCase() === 'x') return null;\n    return this.formatLanguageCode(p.join('-'));\n  }\n  getLanguagePartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || code.indexOf('-') < 0) return code;\n    const p = code.split('-');\n    return this.formatLanguageCode(p[0]);\n  }\n  formatLanguageCode(code) {\n    if (isString(code) && code.indexOf('-') > -1) {\n      if (typeof Intl !== 'undefined' && typeof Intl.getCanonicalLocales !== 'undefined') {\n        try {\n          let formattedCode = Intl.getCanonicalLocales(code)[0];\n          if (formattedCode && this.options.lowerCaseLng) {\n            formattedCode = formattedCode.toLowerCase();\n          }\n          if (formattedCode) return formattedCode;\n        } catch (e) {}\n      }\n      const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n      let p = code.split('-');\n      if (this.options.lowerCaseLng) {\n        p = p.map(part => part.toLowerCase());\n      } else if (p.length === 2) {\n        p[0] = p[0].toLowerCase();\n        p[1] = p[1].toUpperCase();\n        if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n      } else if (p.length === 3) {\n        p[0] = p[0].toLowerCase();\n        if (p[1].length === 2) p[1] = p[1].toUpperCase();\n        if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n        if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n        if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n      }\n      return p.join('-');\n    }\n    return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n  }\n  isSupportedCode(code) {\n    if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n      code = this.getLanguagePartFromCode(code);\n    }\n    return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n  }\n  getBestMatchFromCodes(codes) {\n    if (!codes) return null;\n    let found;\n    codes.forEach(code => {\n      if (found) return;\n      const cleanedLng = this.formatLanguageCode(code);\n      if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n    });\n    if (!found && this.options.supportedLngs) {\n      codes.forEach(code => {\n        if (found) return;\n        const lngOnly = this.getLanguagePartFromCode(code);\n        if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n        found = this.options.supportedLngs.find(supportedLng => {\n          if (supportedLng === lngOnly) return supportedLng;\n          if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n          if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n          if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n        });\n      });\n    }\n    if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n    return found;\n  }\n  getFallbackCodes(fallbacks, code) {\n    if (!fallbacks) return [];\n    if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n    if (isString(fallbacks)) fallbacks = [fallbacks];\n    if (Array.isArray(fallbacks)) return fallbacks;\n    if (!code) return fallbacks.default || [];\n    let found = fallbacks[code];\n    if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n    if (!found) found = fallbacks[this.formatLanguageCode(code)];\n    if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n    if (!found) found = fallbacks.default;\n    return found || [];\n  }\n  toResolveHierarchy(code, fallbackCode) {\n    const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n    const codes = [];\n    const addCode = c => {\n      if (!c) return;\n      if (this.isSupportedCode(c)) {\n        codes.push(c);\n      } else {\n        this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n      }\n    };\n    if (isString(code) && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n      if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n      if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n      if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n    } else if (isString(code)) {\n      addCode(this.formatLanguageCode(code));\n    }\n    fallbackCodes.forEach(fc => {\n      if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n    });\n    return codes;\n  }\n}\n\nlet sets = [{\n  lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n  nr: [1, 2],\n  fc: 1\n}, {\n  lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n  nr: [1, 2],\n  fc: 2\n}, {\n  lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n  nr: [1],\n  fc: 3\n}, {\n  lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n  nr: [1, 2, 5],\n  fc: 4\n}, {\n  lngs: ['ar'],\n  nr: [0, 1, 2, 3, 11, 100],\n  fc: 5\n}, {\n  lngs: ['cs', 'sk'],\n  nr: [1, 2, 5],\n  fc: 6\n}, {\n  lngs: ['csb', 'pl'],\n  nr: [1, 2, 5],\n  fc: 7\n}, {\n  lngs: ['cy'],\n  nr: [1, 2, 3, 8],\n  fc: 8\n}, {\n  lngs: ['fr'],\n  nr: [1, 2],\n  fc: 9\n}, {\n  lngs: ['ga'],\n  nr: [1, 2, 3, 7, 11],\n  fc: 10\n}, {\n  lngs: ['gd'],\n  nr: [1, 2, 3, 20],\n  fc: 11\n}, {\n  lngs: ['is'],\n  nr: [1, 2],\n  fc: 12\n}, {\n  lngs: ['jv'],\n  nr: [0, 1],\n  fc: 13\n}, {\n  lngs: ['kw'],\n  nr: [1, 2, 3, 4],\n  fc: 14\n}, {\n  lngs: ['lt'],\n  nr: [1, 2, 10],\n  fc: 15\n}, {\n  lngs: ['lv'],\n  nr: [1, 2, 0],\n  fc: 16\n}, {\n  lngs: ['mk'],\n  nr: [1, 2],\n  fc: 17\n}, {\n  lngs: ['mnk'],\n  nr: [0, 1, 2],\n  fc: 18\n}, {\n  lngs: ['mt'],\n  nr: [1, 2, 11, 20],\n  fc: 19\n}, {\n  lngs: ['or'],\n  nr: [2, 1],\n  fc: 2\n}, {\n  lngs: ['ro'],\n  nr: [1, 2, 20],\n  fc: 20\n}, {\n  lngs: ['sl'],\n  nr: [5, 1, 2, 3],\n  fc: 21\n}, {\n  lngs: ['he', 'iw'],\n  nr: [1, 2, 20, 21],\n  fc: 22\n}];\nlet _rulesPluralsTypes = {\n  1: n => Number(n > 1),\n  2: n => Number(n != 1),\n  3: n => 0,\n  4: n => Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2),\n  5: n => Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5),\n  6: n => Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2),\n  7: n => Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2),\n  8: n => Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3),\n  9: n => Number(n >= 2),\n  10: n => Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4),\n  11: n => Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3),\n  12: n => Number(n % 10 != 1 || n % 100 == 11),\n  13: n => Number(n !== 0),\n  14: n => Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3),\n  15: n => Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2),\n  16: n => Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2),\n  17: n => Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1),\n  18: n => Number(n == 0 ? 0 : n == 1 ? 1 : 2),\n  19: n => Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3),\n  20: n => Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2),\n  21: n => Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0),\n  22: n => Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3)\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n  zero: 0,\n  one: 1,\n  two: 2,\n  few: 3,\n  many: 4,\n  other: 5\n};\nconst createRules = () => {\n  const rules = {};\n  sets.forEach(set => {\n    set.lngs.forEach(l => {\n      rules[l] = {\n        numbers: set.nr,\n        plurals: _rulesPluralsTypes[set.fc]\n      };\n    });\n  });\n  return rules;\n};\nclass PluralResolver {\n  constructor(languageUtils) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n    if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n      this.options.compatibilityJSON = 'v3';\n      this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n    }\n    this.rules = createRules();\n    this.pluralRulesCache = {};\n  }\n  addRule(lng, obj) {\n    this.rules[lng] = obj;\n  }\n  clearCache() {\n    this.pluralRulesCache = {};\n  }\n  getRule(code) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    if (this.shouldUseIntlApi()) {\n      const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n      const type = options.ordinal ? 'ordinal' : 'cardinal';\n      const cacheKey = JSON.stringify({\n        cleanedCode,\n        type\n      });\n      if (cacheKey in this.pluralRulesCache) {\n        return this.pluralRulesCache[cacheKey];\n      }\n      let rule;\n      try {\n        rule = new Intl.PluralRules(cleanedCode, {\n          type\n        });\n      } catch (err) {\n        if (!code.match(/-|_/)) return;\n        const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n        rule = this.getRule(lngPart, options);\n      }\n      this.pluralRulesCache[cacheKey] = rule;\n      return rule;\n    }\n    return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n  }\n  needsPlural(code) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const rule = this.getRule(code, options);\n    if (this.shouldUseIntlApi()) {\n      return rule && rule.resolvedOptions().pluralCategories.length > 1;\n    }\n    return rule && rule.numbers.length > 1;\n  }\n  getPluralFormsOfKey(code, key) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n  }\n  getSuffixes(code) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const rule = this.getRule(code, options);\n    if (!rule) {\n      return [];\n    }\n    if (this.shouldUseIntlApi()) {\n      return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n    }\n    return rule.numbers.map(number => this.getSuffix(code, number, options));\n  }\n  getSuffix(code, count) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    const rule = this.getRule(code, options);\n    if (rule) {\n      if (this.shouldUseIntlApi()) {\n        return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n      }\n      return this.getSuffixRetroCompatible(rule, count);\n    }\n    this.logger.warn(`no plural rule found for: ${code}`);\n    return '';\n  }\n  getSuffixRetroCompatible(rule, count) {\n    const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n    let suffix = rule.numbers[idx];\n    if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n      if (suffix === 2) {\n        suffix = 'plural';\n      } else if (suffix === 1) {\n        suffix = '';\n      }\n    }\n    const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n    if (this.options.compatibilityJSON === 'v1') {\n      if (suffix === 1) return '';\n      if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n      return returnSuffix();\n    } else if (this.options.compatibilityJSON === 'v2') {\n      return returnSuffix();\n    } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n      return returnSuffix();\n    }\n    return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n  }\n  shouldUseIntlApi() {\n    return !nonIntlVersions.includes(this.options.compatibilityJSON);\n  }\n}\n\nconst deepFindWithDefaults = function (data, defaultData, key) {\n  let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n  let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n  let path = getPathWithDefaults(data, defaultData, key);\n  if (!path && ignoreJSONStructure && isString(key)) {\n    path = deepFind(data, key, keySeparator);\n    if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n  }\n  return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n  constructor() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n    this.format = options.interpolation && options.interpolation.format || (value => value);\n    this.init(options);\n  }\n  init() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (!options.interpolation) options.interpolation = {\n      escapeValue: true\n    };\n    const {\n      escape: escape$1,\n      escapeValue,\n      useRawValueToEscape,\n      prefix,\n      prefixEscaped,\n      suffix,\n      suffixEscaped,\n      formatSeparator,\n      unescapeSuffix,\n      unescapePrefix,\n      nestingPrefix,\n      nestingPrefixEscaped,\n      nestingSuffix,\n      nestingSuffixEscaped,\n      nestingOptionsSeparator,\n      maxReplaces,\n      alwaysFormat\n    } = options.interpolation;\n    this.escape = escape$1 !== undefined ? escape$1 : escape;\n    this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n    this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n    this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n    this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n    this.formatSeparator = formatSeparator || ',';\n    this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n    this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n    this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n    this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n    this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n    this.maxReplaces = maxReplaces || 1000;\n    this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n    this.resetRegExp();\n  }\n  reset() {\n    if (this.options) this.init(this.options);\n  }\n  resetRegExp() {\n    const getOrResetRegExp = (existingRegExp, pattern) => {\n      if (existingRegExp && existingRegExp.source === pattern) {\n        existingRegExp.lastIndex = 0;\n        return existingRegExp;\n      }\n      return new RegExp(pattern, 'g');\n    };\n    this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n    this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n    this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n  }\n  interpolate(str, data, lng, options) {\n    let match;\n    let value;\n    let replaces;\n    const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n    const handleFormat = key => {\n      if (key.indexOf(this.formatSeparator) < 0) {\n        const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n        return this.alwaysFormat ? this.format(path, undefined, lng, {\n          ...options,\n          ...data,\n          interpolationkey: key\n        }) : path;\n      }\n      const p = key.split(this.formatSeparator);\n      const k = p.shift().trim();\n      const f = p.join(this.formatSeparator).trim();\n      return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n        ...options,\n        ...data,\n        interpolationkey: k\n      });\n    };\n    this.resetRegExp();\n    const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n    const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n    const todos = [{\n      regex: this.regexpUnescape,\n      safeValue: val => regexSafe(val)\n    }, {\n      regex: this.regexp,\n      safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n    }];\n    todos.forEach(todo => {\n      replaces = 0;\n      while (match = todo.regex.exec(str)) {\n        const matchedVar = match[1].trim();\n        value = handleFormat(matchedVar);\n        if (value === undefined) {\n          if (typeof missingInterpolationHandler === 'function') {\n            const temp = missingInterpolationHandler(str, match, options);\n            value = isString(temp) ? temp : '';\n          } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n            value = '';\n          } else if (skipOnVariables) {\n            value = match[0];\n            continue;\n          } else {\n            this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n            value = '';\n          }\n        } else if (!isString(value) && !this.useRawValueToEscape) {\n          value = makeString(value);\n        }\n        const safeValue = todo.safeValue(value);\n        str = str.replace(match[0], safeValue);\n        if (skipOnVariables) {\n          todo.regex.lastIndex += value.length;\n          todo.regex.lastIndex -= match[0].length;\n        } else {\n          todo.regex.lastIndex = 0;\n        }\n        replaces++;\n        if (replaces >= this.maxReplaces) {\n          break;\n        }\n      }\n    });\n    return str;\n  }\n  nest(str, fc) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    let match;\n    let value;\n    let clonedOptions;\n    const handleHasOptions = (key, inheritedOptions) => {\n      const sep = this.nestingOptionsSeparator;\n      if (key.indexOf(sep) < 0) return key;\n      const c = key.split(new RegExp(`${sep}[ ]*{`));\n      let optionsString = `{${c[1]}`;\n      key = c[0];\n      optionsString = this.interpolate(optionsString, clonedOptions);\n      const matchedSingleQuotes = optionsString.match(/'/g);\n      const matchedDoubleQuotes = optionsString.match(/\"/g);\n      if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n        optionsString = optionsString.replace(/'/g, '\"');\n      }\n      try {\n        clonedOptions = JSON.parse(optionsString);\n        if (inheritedOptions) clonedOptions = {\n          ...inheritedOptions,\n          ...clonedOptions\n        };\n      } catch (e) {\n        this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n        return `${key}${sep}${optionsString}`;\n      }\n      if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n      return key;\n    };\n    while (match = this.nestingRegexp.exec(str)) {\n      let formatters = [];\n      clonedOptions = {\n        ...options\n      };\n      clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n      clonedOptions.applyPostProcessor = false;\n      delete clonedOptions.defaultValue;\n      let doReduce = false;\n      if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n        const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n        match[1] = r.shift();\n        formatters = r;\n        doReduce = true;\n      }\n      value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n      if (value && match[0] === str && !isString(value)) return value;\n      if (!isString(value)) value = makeString(value);\n      if (!value) {\n        this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n        value = '';\n      }\n      if (doReduce) {\n        value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n          ...options,\n          interpolationkey: match[1].trim()\n        }), value.trim());\n      }\n      str = str.replace(match[0], value);\n      this.regexp.lastIndex = 0;\n    }\n    return str;\n  }\n}\n\nconst parseFormatStr = formatStr => {\n  let formatName = formatStr.toLowerCase().trim();\n  const formatOptions = {};\n  if (formatStr.indexOf('(') > -1) {\n    const p = formatStr.split('(');\n    formatName = p[0].toLowerCase().trim();\n    const optStr = p[1].substring(0, p[1].length - 1);\n    if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n    } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.range) formatOptions.range = optStr.trim();\n    } else {\n      const opts = optStr.split(';');\n      opts.forEach(opt => {\n        if (opt) {\n          const [key, ...rest] = opt.split(':');\n          const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n          const trimmedKey = key.trim();\n          if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n          if (val === 'false') formatOptions[trimmedKey] = false;\n          if (val === 'true') formatOptions[trimmedKey] = true;\n          if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n        }\n      });\n    }\n  }\n  return {\n    formatName,\n    formatOptions\n  };\n};\nconst createCachedFormatter = fn => {\n  const cache = {};\n  return (val, lng, options) => {\n    let optForCache = options;\n    if (options && options.interpolationkey && options.formatParams && options.formatParams[options.interpolationkey] && options[options.interpolationkey]) {\n      optForCache = {\n        ...optForCache,\n        [options.interpolationkey]: undefined\n      };\n    }\n    const key = lng + JSON.stringify(optForCache);\n    let formatter = cache[key];\n    if (!formatter) {\n      formatter = fn(getCleanedCode(lng), options);\n      cache[key] = formatter;\n    }\n    return formatter(val);\n  };\n};\nclass Formatter {\n  constructor() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.logger = baseLogger.create('formatter');\n    this.options = options;\n    this.formats = {\n      number: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      currency: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt,\n          style: 'currency'\n        });\n        return val => formatter.format(val);\n      }),\n      datetime: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.DateTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      relativetime: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.RelativeTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val, opt.range || 'day');\n      }),\n      list: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.ListFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      })\n    };\n    this.init(options);\n  }\n  init(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      interpolation: {}\n    };\n    this.formatSeparator = options.interpolation.formatSeparator || ',';\n  }\n  add(name, fc) {\n    this.formats[name.toLowerCase().trim()] = fc;\n  }\n  addCached(name, fc) {\n    this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n  }\n  format(value, format, lng) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    const formats = format.split(this.formatSeparator);\n    if (formats.length > 1 && formats[0].indexOf('(') > 1 && formats[0].indexOf(')') < 0 && formats.find(f => f.indexOf(')') > -1)) {\n      const lastIndex = formats.findIndex(f => f.indexOf(')') > -1);\n      formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n    }\n    const result = formats.reduce((mem, f) => {\n      const {\n        formatName,\n        formatOptions\n      } = parseFormatStr(f);\n      if (this.formats[formatName]) {\n        let formatted = mem;\n        try {\n          const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n          const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n          formatted = this.formats[formatName](mem, l, {\n            ...formatOptions,\n            ...options,\n            ...valOptions\n          });\n        } catch (error) {\n          this.logger.warn(error);\n        }\n        return formatted;\n      } else {\n        this.logger.warn(`there was no format function for ${formatName}`);\n      }\n      return mem;\n    }, value);\n    return result;\n  }\n}\n\nconst removePending = (q, name) => {\n  if (q.pending[name] !== undefined) {\n    delete q.pending[name];\n    q.pendingCount--;\n  }\n};\nclass Connector extends EventEmitter {\n  constructor(backend, store, services) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    super();\n    this.backend = backend;\n    this.store = store;\n    this.services = services;\n    this.languageUtils = services.languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('backendConnector');\n    this.waitingReads = [];\n    this.maxParallelReads = options.maxParallelReads || 10;\n    this.readingCalls = 0;\n    this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n    this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n    this.state = {};\n    this.queue = [];\n    if (this.backend && this.backend.init) {\n      this.backend.init(services, options.backend, options);\n    }\n  }\n  queueLoad(languages, namespaces, options, callback) {\n    const toLoad = {};\n    const pending = {};\n    const toLoadLanguages = {};\n    const toLoadNamespaces = {};\n    languages.forEach(lng => {\n      let hasAllNamespaces = true;\n      namespaces.forEach(ns => {\n        const name = `${lng}|${ns}`;\n        if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n          this.state[name] = 2;\n        } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n          if (pending[name] === undefined) pending[name] = true;\n        } else {\n          this.state[name] = 1;\n          hasAllNamespaces = false;\n          if (pending[name] === undefined) pending[name] = true;\n          if (toLoad[name] === undefined) toLoad[name] = true;\n          if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n        }\n      });\n      if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n    });\n    if (Object.keys(toLoad).length || Object.keys(pending).length) {\n      this.queue.push({\n        pending,\n        pendingCount: Object.keys(pending).length,\n        loaded: {},\n        errors: [],\n        callback\n      });\n    }\n    return {\n      toLoad: Object.keys(toLoad),\n      pending: Object.keys(pending),\n      toLoadLanguages: Object.keys(toLoadLanguages),\n      toLoadNamespaces: Object.keys(toLoadNamespaces)\n    };\n  }\n  loaded(name, err, data) {\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    if (err) this.emit('failedLoading', lng, ns, err);\n    if (!err && data) {\n      this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n        skipCopy: true\n      });\n    }\n    this.state[name] = err ? -1 : 2;\n    if (err && data) this.state[name] = 0;\n    const loaded = {};\n    this.queue.forEach(q => {\n      pushPath(q.loaded, [lng], ns);\n      removePending(q, name);\n      if (err) q.errors.push(err);\n      if (q.pendingCount === 0 && !q.done) {\n        Object.keys(q.loaded).forEach(l => {\n          if (!loaded[l]) loaded[l] = {};\n          const loadedKeys = q.loaded[l];\n          if (loadedKeys.length) {\n            loadedKeys.forEach(n => {\n              if (loaded[l][n] === undefined) loaded[l][n] = true;\n            });\n          }\n        });\n        q.done = true;\n        if (q.errors.length) {\n          q.callback(q.errors);\n        } else {\n          q.callback();\n        }\n      }\n    });\n    this.emit('loaded', loaded);\n    this.queue = this.queue.filter(q => !q.done);\n  }\n  read(lng, ns, fcName) {\n    let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n    let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n    let callback = arguments.length > 5 ? arguments[5] : undefined;\n    if (!lng.length) return callback(null, {});\n    if (this.readingCalls >= this.maxParallelReads) {\n      this.waitingReads.push({\n        lng,\n        ns,\n        fcName,\n        tried,\n        wait,\n        callback\n      });\n      return;\n    }\n    this.readingCalls++;\n    const resolver = (err, data) => {\n      this.readingCalls--;\n      if (this.waitingReads.length > 0) {\n        const next = this.waitingReads.shift();\n        this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n      }\n      if (err && data && tried < this.maxRetries) {\n        setTimeout(() => {\n          this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n        }, wait);\n        return;\n      }\n      callback(err, data);\n    };\n    const fc = this.backend[fcName].bind(this.backend);\n    if (fc.length === 2) {\n      try {\n        const r = fc(lng, ns);\n        if (r && typeof r.then === 'function') {\n          r.then(data => resolver(null, data)).catch(resolver);\n        } else {\n          resolver(null, r);\n        }\n      } catch (err) {\n        resolver(err);\n      }\n      return;\n    }\n    return fc(lng, ns, resolver);\n  }\n  prepareLoading(languages, namespaces) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    let callback = arguments.length > 3 ? arguments[3] : undefined;\n    if (!this.backend) {\n      this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n      return callback && callback();\n    }\n    if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n    if (isString(namespaces)) namespaces = [namespaces];\n    const toLoad = this.queueLoad(languages, namespaces, options, callback);\n    if (!toLoad.toLoad.length) {\n      if (!toLoad.pending.length) callback();\n      return null;\n    }\n    toLoad.toLoad.forEach(name => {\n      this.loadOne(name);\n    });\n  }\n  load(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {}, callback);\n  }\n  reload(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {\n      reload: true\n    }, callback);\n  }\n  loadOne(name) {\n    let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n      if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n      if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n      this.loaded(name, err, data);\n    });\n  }\n  saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n    let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n    let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n    if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n      this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n      return;\n    }\n    if (key === undefined || key === null || key === '') return;\n    if (this.backend && this.backend.create) {\n      const opts = {\n        ...options,\n        isUpdate\n      };\n      const fc = this.backend.create.bind(this.backend);\n      if (fc.length < 6) {\n        try {\n          let r;\n          if (fc.length === 5) {\n            r = fc(languages, namespace, key, fallbackValue, opts);\n          } else {\n            r = fc(languages, namespace, key, fallbackValue);\n          }\n          if (r && typeof r.then === 'function') {\n            r.then(data => clb(null, data)).catch(clb);\n          } else {\n            clb(null, r);\n          }\n        } catch (err) {\n          clb(err);\n        }\n      } else {\n        fc(languages, namespace, key, fallbackValue, clb, opts);\n      }\n    }\n    if (!languages || !languages[0]) return;\n    this.store.addResource(languages[0], namespace, key, fallbackValue);\n  }\n}\n\nconst get = () => ({\n  debug: false,\n  initImmediate: true,\n  ns: ['translation'],\n  defaultNS: ['translation'],\n  fallbackLng: ['dev'],\n  fallbackNS: false,\n  supportedLngs: false,\n  nonExplicitSupportedLngs: false,\n  load: 'all',\n  preload: false,\n  simplifyPluralSuffix: true,\n  keySeparator: '.',\n  nsSeparator: ':',\n  pluralSeparator: '_',\n  contextSeparator: '_',\n  partialBundledLanguages: false,\n  saveMissing: false,\n  updateMissing: false,\n  saveMissingTo: 'fallback',\n  saveMissingPlurals: true,\n  missingKeyHandler: false,\n  missingInterpolationHandler: false,\n  postProcess: false,\n  postProcessPassResolved: false,\n  returnNull: false,\n  returnEmptyString: true,\n  returnObjects: false,\n  joinArrays: false,\n  returnedObjectHandler: false,\n  parseMissingKeyHandler: false,\n  appendNamespaceToMissingKey: false,\n  appendNamespaceToCIMode: false,\n  overloadTranslationOptionHandler: args => {\n    let ret = {};\n    if (typeof args[1] === 'object') ret = args[1];\n    if (isString(args[1])) ret.defaultValue = args[1];\n    if (isString(args[2])) ret.tDescription = args[2];\n    if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n      const options = args[3] || args[2];\n      Object.keys(options).forEach(key => {\n        ret[key] = options[key];\n      });\n    }\n    return ret;\n  },\n  interpolation: {\n    escapeValue: true,\n    format: value => value,\n    prefix: '{{',\n    suffix: '}}',\n    formatSeparator: ',',\n    unescapePrefix: '-',\n    nestingPrefix: '$t(',\n    nestingSuffix: ')',\n    nestingOptionsSeparator: ',',\n    maxReplaces: 1000,\n    skipOnVariables: true\n  }\n});\nconst transformOptions = options => {\n  if (isString(options.ns)) options.ns = [options.ns];\n  if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n  if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n  if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n  return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n  const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n  mems.forEach(mem => {\n    if (typeof inst[mem] === 'function') {\n      inst[mem] = inst[mem].bind(inst);\n    }\n  });\n};\nclass I18n extends EventEmitter {\n  constructor() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 ? arguments[1] : undefined;\n    super();\n    this.options = transformOptions(options);\n    this.services = {};\n    this.logger = baseLogger;\n    this.modules = {\n      external: []\n    };\n    bindMemberFunctions(this);\n    if (callback && !this.isInitialized && !options.isClone) {\n      if (!this.options.initImmediate) {\n        this.init(options, callback);\n        return this;\n      }\n      setTimeout(() => {\n        this.init(options, callback);\n      }, 0);\n    }\n  }\n  init() {\n    var _this = this;\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 ? arguments[1] : undefined;\n    this.isInitializing = true;\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n    if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n      if (isString(options.ns)) {\n        options.defaultNS = options.ns;\n      } else if (options.ns.indexOf('translation') < 0) {\n        options.defaultNS = options.ns[0];\n      }\n    }\n    const defOpts = get();\n    this.options = {\n      ...defOpts,\n      ...this.options,\n      ...transformOptions(options)\n    };\n    if (this.options.compatibilityAPI !== 'v1') {\n      this.options.interpolation = {\n        ...defOpts.interpolation,\n        ...this.options.interpolation\n      };\n    }\n    if (options.keySeparator !== undefined) {\n      this.options.userDefinedKeySeparator = options.keySeparator;\n    }\n    if (options.nsSeparator !== undefined) {\n      this.options.userDefinedNsSeparator = options.nsSeparator;\n    }\n    const createClassOnDemand = ClassOrObject => {\n      if (!ClassOrObject) return null;\n      if (typeof ClassOrObject === 'function') return new ClassOrObject();\n      return ClassOrObject;\n    };\n    if (!this.options.isClone) {\n      if (this.modules.logger) {\n        baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n      } else {\n        baseLogger.init(null, this.options);\n      }\n      let formatter;\n      if (this.modules.formatter) {\n        formatter = this.modules.formatter;\n      } else if (typeof Intl !== 'undefined') {\n        formatter = Formatter;\n      }\n      const lu = new LanguageUtil(this.options);\n      this.store = new ResourceStore(this.options.resources, this.options);\n      const s = this.services;\n      s.logger = baseLogger;\n      s.resourceStore = this.store;\n      s.languageUtils = lu;\n      s.pluralResolver = new PluralResolver(lu, {\n        prepend: this.options.pluralSeparator,\n        compatibilityJSON: this.options.compatibilityJSON,\n        simplifyPluralSuffix: this.options.simplifyPluralSuffix\n      });\n      if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n        s.formatter = createClassOnDemand(formatter);\n        s.formatter.init(s, this.options);\n        this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n      }\n      s.interpolator = new Interpolator(this.options);\n      s.utils = {\n        hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n      };\n      s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n      s.backendConnector.on('*', function (event) {\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        _this.emit(event, ...args);\n      });\n      if (this.modules.languageDetector) {\n        s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n        if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n      }\n      if (this.modules.i18nFormat) {\n        s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n        if (s.i18nFormat.init) s.i18nFormat.init(this);\n      }\n      this.translator = new Translator(this.services, this.options);\n      this.translator.on('*', function (event) {\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        _this.emit(event, ...args);\n      });\n      this.modules.external.forEach(m => {\n        if (m.init) m.init(this);\n      });\n    }\n    this.format = this.options.interpolation.format;\n    if (!callback) callback = noop;\n    if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n      const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n      if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n    }\n    if (!this.services.languageDetector && !this.options.lng) {\n      this.logger.warn('init: no languageDetector is used and no lng is defined');\n    }\n    const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n    storeApi.forEach(fcName => {\n      this[fcName] = function () {\n        return _this.store[fcName](...arguments);\n      };\n    });\n    const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n    storeApiChained.forEach(fcName => {\n      this[fcName] = function () {\n        _this.store[fcName](...arguments);\n        return _this;\n      };\n    });\n    const deferred = defer();\n    const load = () => {\n      const finish = (err, t) => {\n        this.isInitializing = false;\n        if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n        this.isInitialized = true;\n        if (!this.options.isClone) this.logger.log('initialized', this.options);\n        this.emit('initialized', this.options);\n        deferred.resolve(t);\n        callback(err, t);\n      };\n      if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n      this.changeLanguage(this.options.lng, finish);\n    };\n    if (this.options.resources || !this.options.initImmediate) {\n      load();\n    } else {\n      setTimeout(load, 0);\n    }\n    return deferred;\n  }\n  loadResources(language) {\n    let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n    let usedCallback = callback;\n    const usedLng = isString(language) ? language : this.language;\n    if (typeof language === 'function') usedCallback = language;\n    if (!this.options.resources || this.options.partialBundledLanguages) {\n      if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n      const toLoad = [];\n      const append = lng => {\n        if (!lng) return;\n        if (lng === 'cimode') return;\n        const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(l => {\n          if (l === 'cimode') return;\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n      if (!usedLng) {\n        const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        fallbacks.forEach(l => append(l));\n      } else {\n        append(usedLng);\n      }\n      if (this.options.preload) {\n        this.options.preload.forEach(l => append(l));\n      }\n      this.services.backendConnector.load(toLoad, this.options.ns, e => {\n        if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n        usedCallback(e);\n      });\n    } else {\n      usedCallback(null);\n    }\n  }\n  reloadResources(lngs, ns, callback) {\n    const deferred = defer();\n    if (typeof lngs === 'function') {\n      callback = lngs;\n      lngs = undefined;\n    }\n    if (typeof ns === 'function') {\n      callback = ns;\n      ns = undefined;\n    }\n    if (!lngs) lngs = this.languages;\n    if (!ns) ns = this.options.ns;\n    if (!callback) callback = noop;\n    this.services.backendConnector.reload(lngs, ns, err => {\n      deferred.resolve();\n      callback(err);\n    });\n    return deferred;\n  }\n  use(module) {\n    if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n    if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n    if (module.type === 'backend') {\n      this.modules.backend = module;\n    }\n    if (module.type === 'logger' || module.log && module.warn && module.error) {\n      this.modules.logger = module;\n    }\n    if (module.type === 'languageDetector') {\n      this.modules.languageDetector = module;\n    }\n    if (module.type === 'i18nFormat') {\n      this.modules.i18nFormat = module;\n    }\n    if (module.type === 'postProcessor') {\n      postProcessor.addPostProcessor(module);\n    }\n    if (module.type === 'formatter') {\n      this.modules.formatter = module;\n    }\n    if (module.type === '3rdParty') {\n      this.modules.external.push(module);\n    }\n    return this;\n  }\n  setResolvedLanguage(l) {\n    if (!l || !this.languages) return;\n    if (['cimode', 'dev'].indexOf(l) > -1) return;\n    for (let li = 0; li < this.languages.length; li++) {\n      const lngInLngs = this.languages[li];\n      if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n      if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n        this.resolvedLanguage = lngInLngs;\n        break;\n      }\n    }\n  }\n  changeLanguage(lng, callback) {\n    var _this2 = this;\n    this.isLanguageChangingTo = lng;\n    const deferred = defer();\n    this.emit('languageChanging', lng);\n    const setLngProps = l => {\n      this.language = l;\n      this.languages = this.services.languageUtils.toResolveHierarchy(l);\n      this.resolvedLanguage = undefined;\n      this.setResolvedLanguage(l);\n    };\n    const done = (err, l) => {\n      if (l) {\n        setLngProps(l);\n        this.translator.changeLanguage(l);\n        this.isLanguageChangingTo = undefined;\n        this.emit('languageChanged', l);\n        this.logger.log('languageChanged', l);\n      } else {\n        this.isLanguageChangingTo = undefined;\n      }\n      deferred.resolve(function () {\n        return _this2.t(...arguments);\n      });\n      if (callback) callback(err, function () {\n        return _this2.t(...arguments);\n      });\n    };\n    const setLng = lngs => {\n      if (!lng && !lngs && this.services.languageDetector) lngs = [];\n      const l = isString(lngs) ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n      if (l) {\n        if (!this.language) {\n          setLngProps(l);\n        }\n        if (!this.translator.language) this.translator.changeLanguage(l);\n        if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n      }\n      this.loadResources(l, err => {\n        done(err, l);\n      });\n    };\n    if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n      setLng(this.services.languageDetector.detect());\n    } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n      if (this.services.languageDetector.detect.length === 0) {\n        this.services.languageDetector.detect().then(setLng);\n      } else {\n        this.services.languageDetector.detect(setLng);\n      }\n    } else {\n      setLng(lng);\n    }\n    return deferred;\n  }\n  getFixedT(lng, ns, keyPrefix) {\n    var _this3 = this;\n    const fixedT = function (key, opts) {\n      let options;\n      if (typeof opts !== 'object') {\n        for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n          rest[_key3 - 2] = arguments[_key3];\n        }\n        options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n      } else {\n        options = {\n          ...opts\n        };\n      }\n      options.lng = options.lng || fixedT.lng;\n      options.lngs = options.lngs || fixedT.lngs;\n      options.ns = options.ns || fixedT.ns;\n      if (options.keyPrefix !== '') options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n      const keySeparator = _this3.options.keySeparator || '.';\n      let resultKey;\n      if (options.keyPrefix && Array.isArray(key)) {\n        resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n      } else {\n        resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n      }\n      return _this3.t(resultKey, options);\n    };\n    if (isString(lng)) {\n      fixedT.lng = lng;\n    } else {\n      fixedT.lngs = lng;\n    }\n    fixedT.ns = ns;\n    fixedT.keyPrefix = keyPrefix;\n    return fixedT;\n  }\n  t() {\n    return this.translator && this.translator.translate(...arguments);\n  }\n  exists() {\n    return this.translator && this.translator.exists(...arguments);\n  }\n  setDefaultNamespace(ns) {\n    this.options.defaultNS = ns;\n  }\n  hasLoadedNamespace(ns) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    if (!this.isInitialized) {\n      this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n      return false;\n    }\n    if (!this.languages || !this.languages.length) {\n      this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n      return false;\n    }\n    const lng = options.lng || this.resolvedLanguage || this.languages[0];\n    const fallbackLng = this.options ? this.options.fallbackLng : false;\n    const lastLng = this.languages[this.languages.length - 1];\n    if (lng.toLowerCase() === 'cimode') return true;\n    const loadNotPending = (l, n) => {\n      const loadState = this.services.backendConnector.state[`${l}|${n}`];\n      return loadState === -1 || loadState === 0 || loadState === 2;\n    };\n    if (options.precheck) {\n      const preResult = options.precheck(this, loadNotPending);\n      if (preResult !== undefined) return preResult;\n    }\n    if (this.hasResourceBundle(lng, ns)) return true;\n    if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n    if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n    return false;\n  }\n  loadNamespaces(ns, callback) {\n    const deferred = defer();\n    if (!this.options.ns) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    if (isString(ns)) ns = [ns];\n    ns.forEach(n => {\n      if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n    });\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  loadLanguages(lngs, callback) {\n    const deferred = defer();\n    if (isString(lngs)) lngs = [lngs];\n    const preloaded = this.options.preload || [];\n    const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n    if (!newLngs.length) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    this.options.preload = preloaded.concat(newLngs);\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  dir(lng) {\n    if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n    if (!lng) return 'rtl';\n    const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n    const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n    return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n  }\n  static createInstance() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 ? arguments[1] : undefined;\n    return new I18n(options, callback);\n  }\n  cloneInstance() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n    const forkResourceStore = options.forkResourceStore;\n    if (forkResourceStore) delete options.forkResourceStore;\n    const mergedOptions = {\n      ...this.options,\n      ...options,\n      ...{\n        isClone: true\n      }\n    };\n    const clone = new I18n(mergedOptions);\n    if (options.debug !== undefined || options.prefix !== undefined) {\n      clone.logger = clone.logger.clone(options);\n    }\n    const membersToCopy = ['store', 'services', 'language'];\n    membersToCopy.forEach(m => {\n      clone[m] = this[m];\n    });\n    clone.services = {\n      ...this.services\n    };\n    clone.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    if (forkResourceStore) {\n      clone.store = new ResourceStore(this.store.data, mergedOptions);\n      clone.services.resourceStore = clone.store;\n    }\n    clone.translator = new Translator(clone.services, mergedOptions);\n    clone.translator.on('*', function (event) {\n      for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n        args[_key4 - 1] = arguments[_key4];\n      }\n      clone.emit(event, ...args);\n    });\n    clone.init(mergedOptions, callback);\n    clone.translator.options = mergedOptions;\n    clone.translator.backendConnector.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    return clone;\n  }\n  toJSON() {\n    return {\n      options: this.options,\n      store: this.store,\n      language: this.language,\n      languages: this.languages,\n      resolvedLanguage: this.resolvedLanguage\n    };\n  }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n", "/*\n *          __        ___\n *    _____/ /___  __/ (_)____\n *   / ___/ __/ / / / / / ___/\n *  (__  ) /_/ /_/ / / (__  )\n * /____/\\__/\\__, /_/_/____/\n *          /____/\n *\n * light - weight css preprocessor @licence MIT\n */\n(function (factory) {/* eslint-disable */\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? (module['exports'] = factory(null)) :\n\t\ttypeof define === 'function' && define['amd'] ? define(factory(null)) :\n\t\t\t(window['stylis'] = factory(null))\n}(/** @param {*=} options */function factory (options) {/* eslint-disable */\n\n\t'use strict'\n\n\t/**\n\t * Notes\n\t *\n\t * The ['<method name>'] pattern is used to support closure compiler\n\t * the jsdoc signatures are also used to the same effect\n\t *\n\t * ----\n\t *\n\t * int + int + int === n4 [faster]\n\t *\n\t * vs\n\t *\n\t * int === n1 && int === n2 && int === n3\n\t *\n\t * ----\n\t *\n\t * switch (int) { case ints...} [faster]\n\t *\n\t * vs\n\t *\n\t * if (int == 1 && int === 2 ...)\n\t *\n\t * ----\n\t *\n\t * The (first*n1 + second*n2 + third*n3) format used in the property parser\n\t * is a simple way to hash the sequence of characters\n\t * taking into account the index they occur in\n\t * since any number of 3 character sequences could produce duplicates.\n\t *\n\t * On the other hand sequences that are directly tied to the index of the character\n\t * resolve a far more accurate measure, it's also faster\n\t * to evaluate one condition in a switch statement\n\t * than three in an if statement regardless of the added math.\n\t *\n\t * This allows the vendor prefixer to be both small and fast.\n\t */\n\n\tvar nullptn = /^\\0+/g /* matches leading null characters */\n\tvar formatptn = /[\\0\\r\\f]/g /* matches new line, null and formfeed characters */\n\tvar colonptn = /: */g /* splits animation rules */\n\tvar cursorptn = /zoo|gra/ /* assert cursor varient */\n\tvar transformptn = /([,: ])(transform)/g /* vendor prefix transform, older webkit */\n\tvar animationptn = /,+\\s*(?![^(]*[)])/g /* splits multiple shorthand notation animations */\n\tvar propertiesptn = / +\\s*(?![^(]*[)])/g /* animation properties */\n\tvar elementptn = / *[\\0] */g /* selector elements */\n\tvar selectorptn = /,\\r+?/g /* splits selectors */\n\tvar andptn = /([\\t\\r\\n ])*\\f?&/g /* match & */\n\tvar escapeptn = /:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g /* matches :global(.*) */\n\tvar invalidptn = /\\W+/g /* removes invalid characters from keyframes */\n\tvar keyframeptn = /@(k\\w+)\\s*(\\S*)\\s*/ /* matches @keyframes $1 */\n\tvar plcholdrptn = /::(place)/g /* match ::placeholder varient */\n\tvar readonlyptn = /:(read-only)/g /* match :read-only varient */\n\tvar beforeptn = /\\s+(?=[{\\];=:>])/g /* matches \\s before ] ; = : */\n\tvar afterptn = /([[}=:>])\\s+/g /* matches \\s after characters [ } = : */\n\tvar tailptn = /(\\{[^{]+?);(?=\\})/g /* matches tail semi-colons ;} */\n\tvar whiteptn = /\\s{2,}/g /* matches repeating whitespace */\n\tvar pseudoptn = /([^\\(])(:+) */g /* pseudo element */\n\tvar writingptn = /[svh]\\w+-[tblr]{2}/ /* match writing mode property values */\n\tvar gradientptn = /([\\w-]+t\\()/g /* match *gradient property */\n\tvar supportsptn = /\\(\\s*(.*)\\s*\\)/g /* match supports (groups) */\n\tvar propertyptn = /([\\s\\S]*?);/g /* match properties leading semicolon */\n\tvar selfptn = /-self|flex-/g /* match flex- and -self in align-self: flex-*; */\n\tvar pseudofmt = /[^]*?(:[rp][el]a[\\w-]+)[^]*/ /* extrats :readonly or :placholder from selector */\n\tvar trimptn = /[ \\t]+$/ /* match tail whitspace */\n\tvar dimensionptn = /stretch|:\\s*\\w+\\-(?:conte|avail)/ /* match max/min/fit-content, fill-available */\n\tvar imgsrcptn = /([^-])(image-set\\()/\n\n\t/* vendors */\n\tvar webkit = '-webkit-'\n\tvar moz = '-moz-'\n\tvar ms = '-ms-'\n\n\t/* character codes */\n\tvar SEMICOLON = 59 /* ; */\n\tvar CLOSEBRACES = 125 /* } */\n\tvar OPENBRACES = 123 /* { */\n\tvar OPENPARENTHESES = 40 /* ( */\n\tvar CLOSEPARENTHESES = 41 /* ) */\n\tvar OPENBRACKET = 91 /* [ */\n\tvar CLOSEBRACKET = 93 /* ] */\n\tvar NEWLINE = 10 /* \\n */\n\tvar CARRIAGE = 13 /* \\r */\n\tvar TAB = 9 /* \\t */\n\tvar AT = 64 /* @ */\n\tvar SPACE = 32 /*   */\n\tvar AND = 38 /* & */\n\tvar DASH = 45 /* - */\n\tvar UNDERSCORE = 95 /* _ */\n\tvar STAR = 42 /* * */\n\tvar COMMA = 44 /* , */\n\tvar COLON = 58 /* : */\n\tvar SINGLEQUOTE = 39 /* ' */\n\tvar DOUBLEQUOTE = 34 /* \" */\n\tvar FOWARDSLASH = 47 /* / */\n\tvar GREATERTHAN = 62 /* > */\n\tvar PLUS = 43 /* + */\n\tvar TILDE = 126 /* ~ */\n\tvar NULL = 0 /* \\0 */\n\tvar FORMFEED = 12 /* \\f */\n\tvar VERTICALTAB = 11 /* \\v */\n\n\t/* special identifiers */\n\tvar KEYFRAME = 107 /* k */\n\tvar MEDIA = 109 /* m */\n\tvar SUPPORTS = 115 /* s */\n\tvar PLACEHOLDER = 112 /* p */\n\tvar READONLY = 111 /* o */\n\tvar IMPORT = 105 /* <at>i */\n\tvar CHARSET = 99 /* <at>c */\n\tvar DOCUMENT = 100 /* <at>d */\n\tvar PAGE = 112 /* <at>p */\n\n\tvar column = 1 /* current column */\n\tvar line = 1 /* current line numebr */\n\tvar pattern = 0 /* :pattern */\n\n\tvar cascade = 1 /* #id h1 h2 vs h1#id h2#id  */\n\tvar prefix = 1 /* vendor prefix */\n\tvar escape = 1 /* escape :global() pattern */\n\tvar compress = 0 /* compress output */\n\tvar semicolon = 0 /* no/semicolon option */\n\tvar preserve = 0 /* preserve empty selectors */\n\n\t/* empty reference */\n\tvar array = []\n\n\t/* plugins */\n\tvar plugins = []\n\tvar plugged = 0\n\tvar should = null\n\n\t/* plugin context */\n\tvar POSTS = -2\n\tvar PREPS = -1\n\tvar UNKWN = 0\n\tvar PROPS = 1\n\tvar BLCKS = 2\n\tvar ATRUL = 3\n\n\t/* plugin newline context */\n\tvar unkwn = 0\n\n\t/* keyframe animation */\n\tvar keyed = 1\n\tvar key = ''\n\n\t/* selector namespace */\n\tvar nscopealt = ''\n\tvar nscope = ''\n\n\t/**\n\t * Compile\n\t *\n\t * @param {Array<string>} parent\n\t * @param {Array<string>} current\n\t * @param {string} body\n\t * @param {number} id\n\t * @param {number} depth\n\t * @return {string}\n\t */\n\tfunction compile (parent, current, body, id, depth) {\n\t\tvar bracket = 0 /* brackets [] */\n\t\tvar comment = 0 /* comments /* // or /* */\n\t\tvar parentheses = 0 /* functions () */\n\t\tvar quote = 0 /* quotes '', \"\" */\n\n\t\tvar first = 0 /* first character code */\n\t\tvar second = 0 /* second character code */\n\t\tvar code = 0 /* current character code */\n\t\tvar tail = 0 /* previous character code */\n\t\tvar trail = 0 /* character before previous code */\n\t\tvar peak = 0 /* previous non-whitespace code */\n\n\t\tvar counter = 0 /* count sequence termination */\n\t\tvar context = 0 /* track current context */\n\t\tvar atrule = 0 /* track @at-rule context */\n\t\tvar pseudo = 0 /* track pseudo token index */\n\t\tvar caret = 0 /* current character index */\n\t\tvar format = 0 /* control character formating context */\n\t\tvar insert = 0 /* auto semicolon insertion */\n\t\tvar invert = 0 /* inverted selector pattern */\n\t\tvar length = 0 /* generic length address */\n\t\tvar eof = body.length /* end of file(length) */\n\t\tvar eol = eof - 1 /* end of file(characters) */\n\n\t\tvar char = '' /* current character */\n\t\tvar chars = '' /* current buffer of characters */\n\t\tvar child = '' /* next buffer of characters */\n\t\tvar out = '' /* compiled body */\n\t\tvar children = '' /* compiled children */\n\t\tvar flat = '' /* compiled leafs */\n\t\tvar selector /* generic selector address */\n\t\tvar result /* generic address */\n\n\t\t// ...build body\n\t\twhile (caret < eof) {\n\t\t\tcode = body.charCodeAt(caret)\n\n\t\t\t// eof varient\n\t\t\tif (caret === eol) {\n\t\t\t\t// last character + noop context, add synthetic padding for noop context to terminate\n\t\t\t\tif (comment + quote + parentheses + bracket !== 0) {\n\t\t\t\t\tif (comment !== 0) {\n\t\t\t\t\t\tcode = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH\n\t\t\t\t\t}\n\n\t\t\t\t\tquote = parentheses = bracket = 0\n\t\t\t\t\teof++\n\t\t\t\t\teol++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t// eof varient\n\t\t\t\tif (caret === eol) {\n\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chars.trim().length > 0) {\n\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchars += body.charAt(caret)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode = SEMICOLON\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// auto semicolon insertion\n\t\t\t\tif (insert === 1) {\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t// false flags\n\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\tcase OPENPARENTHESES:\n\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// valid\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\tfirst = code\n\t\t\t\t\t\t\tcaret--\n\t\t\t\t\t\t\tcode = SEMICOLON\n\n\t\t\t\t\t\t\twhile (length < eof) {\n\t\t\t\t\t\t\t\tswitch (body.charCodeAt(length++)) {\n\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\t\t\t\t\t++caret\n\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\t\t\t++caret\n\t\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\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\n\t\t\t\t// token varient\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\tchars = chars.trim()\n\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\tcounter = 1\n\t\t\t\t\t\tlength = ++caret\n\n\t\t\t\t\t\twhile (caret < eof) {\n\t\t\t\t\t\t\tswitch (code = body.charCodeAt(caret)) {\n\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\tcounter++\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\t\tcounter--\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\t\t\tswitch (second = body.charCodeAt(caret + 1)) {\n\t\t\t\t\t\t\t\t\t\t// /*, //\n\t\t\t\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\t\t\t\t\tcaret = delimited(second, caret, eol, body)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// given \"[\" === 91 & \"]\" === 93 hence forth 91 + 1 + 1 === 93\n\t\t\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\t\t\tcode++\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// given \"(\" === 40 & \")\" === 41 hence forth 40 + 1 === 41\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tcode++\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// quote tail delimiter is identical to the head delimiter hence noop,\n\t\t\t\t\t\t\t\t// fallthrough clauses have been shifted to the correct tail delimiter\n\t\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\t\t\twhile (caret++ < eol) {\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(caret) === code) {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (counter === 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcaret++\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchild = body.substring(length, caret)\n\n\t\t\t\t\t\tif (first === NULL) {\n\t\t\t\t\t\t\tfirst = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t// @at-rule\n\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\tcase SUPPORTS:\n\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\tselector = current\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tselector = array\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tchild = compile(current, selector, child, second, depth+1)\n\t\t\t\t\t\t\t\tlength = child.length\n\n\t\t\t\t\t\t\t\t// preserve empty @at-rule\n\t\t\t\t\t\t\t\tif (preserve > 0 && length === 0) {\n\t\t\t\t\t\t\t\t\tlength = chars.length\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// execute plugins, @at-rule context\n\t\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\t\tselector = select(array, chars, invert)\n\t\t\t\t\t\t\t\t\tresult = proxy(ATRUL, child, selector, current, line, column, length, second, depth, id)\n\t\t\t\t\t\t\t\t\tchars = selector.join('')\n\n\t\t\t\t\t\t\t\t\tif (result !== void 0) {\n\t\t\t\t\t\t\t\t\t\tif ((length = (child = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\t\tsecond = 0\n\t\t\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (length > 0) {\n\t\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\t\tcase SUPPORTS: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(supportsptn, supports)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase KEYFRAME: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : ''))\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\n\t\t\t\t\t\t\t\t\t\t\tif (prefix === 1 || (prefix === 2 && vendor('@'+child, 3))) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + webkit + child + '@' + child\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + child\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + child\n\n\t\t\t\t\t\t\t\t\t\t\tif (id === PAGE) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = (out += child, '')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// selector\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchild = compile(current, select(current, chars, invert), child, id, depth+1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchildren += child\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tatrule = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\tchars = (format > 0 ? chars.replace(formatptn, '') : chars).trim()\n\n\t\t\t\t\t\tif ((length = chars.length) > 1) {\n\t\t\t\t\t\t\t// monkey-patch missing colon\n\t\t\t\t\t\t\tif (pseudo === 0) {\n\t\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\n\t\t\t\t\t\t\t\t// first character is a letter or dash, buffer has a space character\n\t\t\t\t\t\t\t\tif ((first === DASH || first > 96 && first < 123)) {\n\t\t\t\t\t\t\t\t\tlength = (chars = chars.replace(' ', ':')).length\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// execute plugins, property context\n\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\tif ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth, id)) !== void 0) {\n\t\t\t\t\t\t\t\t\tif ((length = (chars = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\tchars = '\\0\\0'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\t\tif (second === IMPORT || second === CHARSET) {\n\t\t\t\t\t\t\t\t\t\tflat += chars + body.charAt(caret)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\tif (chars.charCodeAt(length-1) === COLON) {\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tout += property(chars, first, second, chars.charCodeAt(2))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// parse characters\n\t\t\tswitch (code) {\n\t\t\t\tcase CARRIAGE:\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t// auto insert semicolon\n\t\t\t\t\tif (comment + quote + parentheses + bracket + semicolon === 0) {\n\t\t\t\t\t\t// valid non-whitespace characters that\n\t\t\t\t\t\t// may precede a newline\n\t\t\t\t\t\tswitch (peak) {\n\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\tcase AT:\n\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\tcase FOWARDSLASH:\n\t\t\t\t\t\t\tcase DASH:\n\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t// current buffer has a colon\n\t\t\t\t\t\t\t\tif (pseudo > 0) {\n\t\t\t\t\t\t\t\t\tinsert = 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// terminate line comment\n\t\t\t\t\tif (comment === FOWARDSLASH) {\n\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t} else if (cascade + context === 0 && id !== KEYFRAME && chars.length > 0) {\n\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\tchars += '\\0'\n\t\t\t\t\t}\n\n\t\t\t\t\t// execute plugins, newline context\n\t\t\t\t\tif (plugged * unkwn > 0) {\n\t\t\t\t\t\tproxy(UNKWN, chars, current, parent, line, column, out.length, id, depth, id)\n\t\t\t\t\t}\n\n\t\t\t\t\t// next line, reset column position\n\t\t\t\t\tcolumn = 1\n\t\t\t\t\tline++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase SEMICOLON:\n\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t\t\tcolumn++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\t// increment column position\n\t\t\t\t\tcolumn++\n\n\t\t\t\t\t// current character\n\t\t\t\t\tchar = body.charAt(caret)\n\n\t\t\t\t\t// remove comments, escape functions, strings, attributes and prepare selectors\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tif (quote + bracket + comment === 0) {\n\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tif (code !== SPACE) {\n\t\t\t\t\t\t\t\t\t\t\tchar = ' '\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// escape breaking control characters\n\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\tchar = '\\\\0'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase FORMFEED: {\n\t\t\t\t\t\t\tchar = '\\\\f'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase VERTICALTAB: {\n\t\t\t\t\t\t\tchar = '\\\\v'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// &\n\t\t\t\t\t\tcase AND: {\n\t\t\t\t\t\t\t// inverted selector pattern i.e html &\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0 && cascade > 0) {\n\t\t\t\t\t\t\t\tinvert = 1\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar = '\\f' + char\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ::p<l>aceholder, l\n\t\t\t\t\t\t// :read-on<l>y, l\n\t\t\t\t\t\tcase 108: {\n\t\t\t\t\t\t\tif (quote + comment + bracket + pattern === 0 && pseudo > 0) {\n\t\t\t\t\t\t\t\tswitch (caret - pseudo) {\n\t\t\t\t\t\t\t\t\t// ::placeholder\n\t\t\t\t\t\t\t\t\tcase 2: {\n\t\t\t\t\t\t\t\t\t\tif (tail === PLACEHOLDER && body.charCodeAt(caret-3) === COLON) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = tail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// :read-only\n\t\t\t\t\t\t\t\t\tcase 8: {\n\t\t\t\t\t\t\t\t\t\tif (trail === READONLY) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = trail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// :<pattern>\n\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tpseudo = caret\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectors\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket === 0) {\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar += '\\r'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// quotes\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t\t\tquote = quote === code ? 0 : (quote === 0 ? code : quote)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// attributes\n\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase CLOSEBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// functions\n\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tparentheses--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\tswitch (tail*2 + trail*3) {\n\t\t\t\t\t\t\t\t\t\t// :matches\n\t\t\t\t\t\t\t\t\t\tcase 533: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// :global, :not, :nth-child etc...\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tcounter = 0\n\t\t\t\t\t\t\t\t\t\t\tcontext = 1\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tparentheses++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket + pseudo + atrule === 0) {\n\t\t\t\t\t\t\t\tatrule = 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// block/line comments\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\tif (quote + bracket + parentheses > 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tswitch (comment) {\n\t\t\t\t\t\t\t\t// initialize line/block comment context\n\t\t\t\t\t\t\t\tcase 0: {\n\t\t\t\t\t\t\t\t\tswitch (code*2 + body.charCodeAt(caret+1)*3) {\n\t\t\t\t\t\t\t\t\t\t// //\n\t\t\t\t\t\t\t\t\t\tcase 235: {\n\t\t\t\t\t\t\t\t\t\t\tcomment = FOWARDSLASH\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// /*\n\t\t\t\t\t\t\t\t\t\tcase 220: {\n\t\t\t\t\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\t\t\t\t\tcomment = STAR\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// end block comment context\n\t\t\t\t\t\t\t\tcase STAR: {\n\t\t\t\t\t\t\t\t\tif (code === FOWARDSLASH && tail === STAR && length + 2 !== caret) {\n\t\t\t\t\t\t\t\t\t\t// /*<!> ... */, !\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(length+2) === 33) {\n\t\t\t\t\t\t\t\t\t\t\tout += body.substring(length, caret+1)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ignore comment blocks\n\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t// aggressive isolation mode, divide each individual selector\n\t\t\t\t\t\t// including selectors in :not function but excluding selectors in :global function\n\t\t\t\t\t\tif (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) {\n\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t// outside of an isolated context i.e nth-child(<...>)\n\t\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = char + '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = '\\0' + char + (code === COMMA ? '' : '\\0')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// within an isolated context, sleep untill it's terminated\n\t\t\t\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\t// :globa<l>(\n\t\t\t\t\t\t\t\t\t\t\t\tif (pseudo + 7 === caret && tail === 108) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tcontext = ++counter\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\tif ((context = --counter) === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\tcase NULL:\n\t\t\t\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\t\tcase FORMFEED:\n\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t// ignore in isolated contexts\n\t\t\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// concat buffer of characters\n\t\t\t\t\t\tchars += char\n\n\t\t\t\t\t\t// previous non-whitespace character code\n\t\t\t\t\t\tif (code !== SPACE && code !== TAB) {\n\t\t\t\t\t\t\tpeak = code\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// tail character codes\n\t\t\ttrail = tail\n\t\t\ttail = code\n\n\t\t\t// visit every character\n\t\t\tcaret++\n\t\t}\n\n\t\tlength = out.length\n\n\t\t// preserve empty selector\n \t\tif (preserve > 0) {\n \t\t\tif (length === 0 && children.length === 0 && (current[0].length === 0) === false) {\n \t\t\t\tif (id !== MEDIA || (current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0])) {\n\t\t\t\t\tlength = current.join(',').length + 2\n \t\t\t\t}\n \t\t\t}\n\t\t}\n\n\t\tif (length > 0) {\n\t\t\t// cascade isolation mode?\n\t\t\tselector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current\n\n\t\t\t// execute plugins, block context\n\t\t\tif (plugged > 0) {\n\t\t\t\tresult = proxy(BLCKS, out, selector, parent, line, column, length, id, depth, id)\n\n\t\t\t\tif (result !== void 0 && (out = result).length === 0) {\n\t\t\t\t\treturn flat + out + children\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tout = selector.join(',') + '{' + out + '}'\n\n\t\t\tif (prefix*pattern !== 0) {\n\t\t\t\tif (prefix === 2 && !vendor(out, 2))\n\t\t\t\t\tpattern = 0\n\n\t\t\t\tswitch (pattern) {\n\t\t\t\t\t// ::read-only\n\t\t\t\t\tcase READONLY: {\n\t\t\t\t\t\tout = out.replace(readonlyptn, ':'+moz+'$1')+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// ::placeholder\n\t\t\t\t\tcase PLACEHOLDER: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + webkit + 'input-$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + moz + '$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, ':' + ms + 'input-$1') + out\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\n\t\t\t\tpattern = 0\n\t\t\t}\n\t\t}\n\n\t\treturn flat + out + children\n\t}\n\n\t/**\n\t * Select\n\t *\n\t * @param {Array<string>} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @return {Array<string>}\n\t */\n\tfunction select (parent, current, invert) {\n\t\tvar selectors = current.trim().split(selectorptn)\n\t\tvar out = selectors\n\n\t\tvar length = selectors.length\n\t\tvar l = parent.length\n\n\t\tswitch (l) {\n\t\t\t// 0-1 parent selectors\n\t\t\tcase 0:\n\t\t\tcase 1: {\n\t\t\t\tfor (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) {\n\t\t\t\t\tout[i] = scope(selector, out[i], invert, l).trim()\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// >2 parent selectors, nested\n\t\t\tdefault: {\n\t\t\t\tfor (var i = 0, j = 0, out = []; i < length; ++i) {\n\t\t\t\t\tfor (var k = 0; k < l; ++k) {\n\t\t\t\t\t\tout[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Scope\n\t *\n\t * @param {string} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @param {number} level\n\t * @return {string}\n\t */\n\tfunction scope (parent, current, invert, level) {\n\t\tvar selector = current\n\t\tvar code = selector.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (selector = selector.trim()).charCodeAt(0)\n\t\t}\n\n\t\tswitch (code) {\n\t\t\t// &\n\t\t\tcase AND: {\n\t\t\t\tswitch (cascade + level) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\tcase 1: {\n\t\t\t\t\t\tif (parent.trim().length === 0) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// :\n\t\t\tcase COLON: {\n\t\t\t\tswitch (selector.charCodeAt(1)) {\n\t\t\t\t\t// g in :global\n\t\t\t\t\tcase 103: {\n\t\t\t\t\t\tif (escape > 0 && cascade > 0) {\n\t\t\t\t\t\t\treturn selector.replace(escapeptn, '$1').replace(andptn, '$1'+nscope)\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\tdefault: {\n\t\t\t\t\t\t// :hover\n\t\t\t\t\t\treturn parent.trim() + selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\t// html &\n\t\t\t\tif (invert*cascade > 0 && selector.indexOf('\\f') > 0) {\n\t\t\t\t\treturn selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1')+parent.trim())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn parent + selector\n\t}\n\n\t/**\n\t * Property\n\t *\n\t * @param {string} input\n\t * @param {number} first\n\t * @param {number} second\n\t * @param {number} third\n\t * @return {string}\n\t */\n\tfunction property (input, first, second, third) {\n\t\tvar index = 0\n\t\tvar out = input + ';'\n\t\tvar hash = (first*2) + (second*3) + (third*4)\n\t\tvar cache\n\n\t\t// animation: a, n, i characters\n\t\tif (hash === 944) {\n\t\t\treturn animation(out)\n\t\t} else if (prefix === 0 || (prefix === 2 && !vendor(out, 1))) {\n\t\t\treturn out\n\t\t}\n\n\t\t// vendor prefix\n\t\tswitch (hash) {\n\t\t\t// text-decoration/text-size-adjust/text-shadow/text-align/text-transform: t, e, x\n\t\t\tcase 1015: {\n\t\t\t\t// text-shadow/text-align/text-transform, a\n\t\t\t\treturn out.charCodeAt(10) === 97 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// filter/fill f, i, l\n\t\t\tcase 951: {\n\t\t\t\t// filter, t\n\t\t\t\treturn out.charCodeAt(3) === 116 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// color/column, c, o, l\n\t\t\tcase 963: {\n\t\t\t\t// column, n\n\t\t\t\treturn out.charCodeAt(5) === 110 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// box-decoration-break, b, o, x\n\t\t\tcase 1009: {\n\t\t\t\tif (out.charCodeAt(4) !== 100) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// mask, m, a, s\n\t\t\t// clip-path, c, l, i\n\t\t\tcase 969:\n\t\t\tcase 942: {\n\t\t\t\treturn webkit + out + out\n\t\t\t}\n\t\t\t// appearance: a, p, p\n\t\t\tcase 978: {\n\t\t\t\treturn webkit + out + moz + out + out\n\t\t\t}\n\t\t\t// hyphens: h, y, p\n\t\t\t// user-select: u, s, e\n\t\t\tcase 1019:\n\t\t\tcase 983: {\n\t\t\t\treturn webkit + out + moz + out + ms + out + out\n\t\t\t}\n\t\t\t// background/backface-visibility, b, a, c\n\t\t\tcase 883: {\n\t\t\t\t// backface-visibility, -\n\t\t\t\tif (out.charCodeAt(8) === DASH) {\n\t\t\t\t\treturn webkit + out + out\n\t\t\t\t}\n\n\t\t\t\t// image-set(...)\n\t\t\t\tif (out.indexOf('image-set(', 11) > 0) {\n\t\t\t\t\treturn out.replace(imgsrcptn, '$1'+webkit+'$2') + out\n\t\t\t\t}\n\n\t\t\t\treturn out\n\t\t\t}\n\t\t\t// flex: f, l, e\n\t\t\tcase 932: {\n\t\t\t\tif (out.charCodeAt(4) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(5)) {\n\t\t\t\t\t\t// flex-grow, g\n\t\t\t\t\t\tcase 103: {\n\t\t\t\t\t\t\treturn webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-shrink, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('shrink', 'negative') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-basis, b\n\t\t\t\t\t\tcase 98: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('basis', 'preferred-size') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + out + out\n\t\t\t}\n\t\t\t// order: o, r, d\n\t\t\tcase 964: {\n\t\t\t\treturn webkit + out + ms + 'flex' + '-' + out + out\n\t\t\t}\n\t\t\t// justify-items/justify-content, j, u, s\n\t\t\tcase 1023: {\n\t\t\t\t// justify-content, c\n\t\t\t\tif (out.charCodeAt(8) !== 99) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify')\n\t\t\t\treturn webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out\n\t\t\t}\n\t\t\t// cursor, c, u, r\n\t\t\tcase 1005: {\n\t\t\t\treturn cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out\n\t\t\t}\n\t\t\t// writing-mode, w, r, i\n\t\t\tcase 1000: {\n\t\t\t\tcache = out.substring(13).trim()\n\t\t\t\tindex = cache.indexOf('-') + 1\n\n\t\t\t\tswitch (cache.charCodeAt(0)+cache.charCodeAt(index)) {\n\t\t\t\t\t// vertical-lr\n\t\t\t\t\tcase 226: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// vertical-rl\n\t\t\t\t\tcase 232: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb-rl')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// horizontal-tb\n\t\t\t\t\tcase 220: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'lr')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn out\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + cache + out\n\t\t\t}\n\t\t\t// position: sticky\n\t\t\tcase 1017: {\n\t\t\t\tif (out.indexOf('sticky', 9) === -1) {\n\t\t\t\t\treturn out\n\t\t\t\t}\n\t\t\t}\n\t\t\t// display(flex/inline-flex/inline-box): d, i, s\n\t\t\tcase 975: {\n\t\t\t\tindex = (out = input).length - 10\n\t\t\t\tcache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim()\n\n\t\t\t\tswitch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7)|0)) {\n\t\t\t\t\t// inline-\n\t\t\t\t\tcase 203: {\n\t\t\t\t\t\t// inline-box\n\t\t\t\t\t\tif (cache.charCodeAt(8) < 111) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// inline-box/sticky\n\t\t\t\t\tcase 115: {\n\t\t\t\t\t\tout = out.replace(cache, webkit+cache)+';'+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// inline-flex\n\t\t\t\t\t// flex\n\t\t\t\t\tcase 207:\n\t\t\t\t\tcase 102: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(cache, webkit+(hash > 102 ? 'inline-' : '')+'box')+';'+\n\t\t\t\t\t\t\tout.replace(cache, webkit+cache)+';'+\n\t\t\t\t\t\t\tout.replace(cache, ms+cache+'box')+';'+\n\t\t\t\t\t\t\tout\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn out + ';'\n\t\t\t}\n\t\t\t// align-items, align-center, align-self: a, l, i, -\n\t\t\tcase 938: {\n\t\t\t\tif (out.charCodeAt(5) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(6)) {\n\t\t\t\t\t\t// align-items, i\n\t\t\t\t\t\tcase 105: {\n\t\t\t\t\t\t\tcache = out.replace('-items', '')\n\t\t\t\t\t\t\treturn webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-self, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-content\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '').replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// min/max\n\t\t\tcase 973:\n\t\t\tcase 989: {\n\t\t\t\t// min-/max- height/width/block-size/inline-size\n\t\t\t\tif (out.charCodeAt(3) !== DASH || out.charCodeAt(4) === 122) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// height/width: min-content / width: max-content\n\t\t\tcase 931:\n\t\t\tcase 953: {\n\t\t\t\tif (dimensionptn.test(input) === true) {\n\t\t\t\t\t// stretch\n\t\t\t\t\tif ((cache = input.substring(input.indexOf(':') + 1)).charCodeAt(0) === 115)\n\t\t\t\t\t\treturn property(input.replace('stretch', 'fill-available'), first, second, third).replace(':fill-available', ':stretch')\n\t\t\t\t\telse\n\t\t\t\t\t\treturn out.replace(cache, webkit + cache) + out.replace(cache, moz + cache.replace('fill-', '')) + out\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// transform, transition: t, r, a\n\t\t\tcase 962: {\n\t\t\t\tout = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out\n\n\t\t\t\t// transitions\n\t\t\t\tif (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) {\n\t\t\t\t\treturn out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out\n\t\t\t\t}\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Vendor\n\t *\n\t * @param {string} content\n\t * @param {number} context\n\t * @return {boolean}\n\t */\n\tfunction vendor (content, context) {\n\t\tvar index = content.indexOf(context === 1 ? ':' : '{')\n\t\tvar key = content.substring(0, context !== 3 ? index : 10)\n\t\tvar value = content.substring(index + 1, content.length - 1)\n\n\t\treturn should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context)\n\t}\n\n\t/**\n\t * Supports\n\t *\n\t * @param {string} match\n\t * @param {string} group\n\t * @return {string}\n\t */\n\tfunction supports (match, group) {\n\t\tvar out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2))\n\n\t\treturn out !== group+';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '('+group+')'\n\t}\n\n\t/**\n\t * Animation\n\t *\n\t * @param {string} input\n\t * @return {string}\n\t */\n\tfunction animation (input) {\n\t\tvar length = input.length\n\t\tvar index = input.indexOf(':', 9) + 1\n\t\tvar declare = input.substring(0, index).trim()\n\t\tvar out = input.substring(index, length-1).trim()\n\n\t\tswitch (input.charCodeAt(9)*keyed) {\n\t\t\tcase 0: {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// animation-*, -\n\t\t\tcase DASH: {\n\t\t\t\t// animation-name, n\n\t\t\t\tif (input.charCodeAt(10) !== 110) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// animation/animation-name\n\t\t\tdefault: {\n\t\t\t\t// split in case of multiple animations\n\t\t\t\tvar list = out.split((out = '', animationptn))\n\n\t\t\t\tfor (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) {\n\t\t\t\t\tvar value = list[i]\n\t\t\t\t\tvar items = value.split(propertiesptn)\n\n\t\t\t\t\twhile (value = items[index]) {\n\t\t\t\t\t\tvar peak = value.charCodeAt(0)\n\n\t\t\t\t\t\tif (keyed === 1 && (\n\t\t\t\t\t\t\t// letters\n\t\t\t\t\t\t\t(peak > AT && peak < 90) || (peak > 96 && peak < 123) || peak === UNDERSCORE ||\n\t\t\t\t\t\t\t// dash but not in sequence i.e --\n\t\t\t\t\t\t\t(peak === DASH && value.charCodeAt(1) !== DASH)\n\t\t\t\t\t\t)) {\n\t\t\t\t\t\t\t// not a number/function\n\t\t\t\t\t\t\tswitch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) {\n\t\t\t\t\t\t\t\tcase 1: {\n\t\t\t\t\t\t\t\t\tswitch (value) {\n\t\t\t\t\t\t\t\t\t\t// not a valid reserved keyword\n\t\t\t\t\t\t\t\t\t\tcase 'infinite': case 'alternate': case 'backwards': case 'running':\n\t\t\t\t\t\t\t\t\t\tcase 'normal': case 'forwards': case 'both': case 'none': case 'linear':\n\t\t\t\t\t\t\t\t\t\tcase 'ease': case 'ease-in': case 'ease-out': case 'ease-in-out':\n\t\t\t\t\t\t\t\t\t\tcase 'paused': case 'reverse': case 'alternate-reverse': case 'inherit':\n\t\t\t\t\t\t\t\t\t\tcase 'initial': case 'unset': case 'step-start': case 'step-end': {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tvalue += key\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titems[index++] = value\n\t\t\t\t\t}\n\n\t\t\t\t\tout += (i === 0 ? '' : ',') + items.join(' ')\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tout = declare + out + ';'\n\n\t\tif (prefix === 1 || (prefix === 2 && vendor(out, 1)))\n\t\t\treturn webkit + out + out\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Isolate\n\t *\n\t * @param {Array<string>} current\n\t */\n\tfunction isolate (current) {\n\t\tfor (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) {\n\t\t\t// split individual elements in a selector i.e h1 h2 === [h1, h2]\n\t\t\tvar elements = current[i].split(elementptn)\n\t\t\tvar out = ''\n\n\t\t\tfor (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) {\n\t\t\t\t// empty element\n\t\t\t\tif ((size = (element = elements[j]).length) === 0 && l > 1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\ttail = out.charCodeAt(out.length-1)\n\t\t\t\tcode = element.charCodeAt(0)\n\t\t\t\tpadding = ''\n\n\t\t\t\tif (j !== 0) {\n\t\t\t\t\t// determine if we need padding\n\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\tcase OPENPARENTHESES:  {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tpadding = ' '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase AND: {\n\t\t\t\t\t\telement = padding + nscopealt\n\t\t\t\t\t}\n\t\t\t\t\tcase TILDE:\n\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\tcase PLUS:\n\t\t\t\t\tcase SPACE:\n\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\tswitch (element.charCodeAt(1)*2 + element.charCodeAt(2)*3) {\n\t\t\t\t\t\t\t// :global\n\t\t\t\t\t\t\tcase 530: {\n\t\t\t\t\t\t\t\tif (escape > 0) {\n\t\t\t\t\t\t\t\t\telement = padding + element.substring(8, size - 1)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// :hover, :nth-child(), ...\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tif (j < 1 || elements[j-1].length < 1) {\n\t\t\t\t\t\t\t\t\telement = padding + nscopealt + element\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\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\tcase COMMA: {\n\t\t\t\t\t\tpadding = ''\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tif (size > 1 && element.indexOf(':') > 0) {\n\t\t\t\t\t\t\telement = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tout += element\n\t\t\t}\n\n\t\t\tselector[i] = out.replace(formatptn, '').trim()\n\t\t}\n\n\t\treturn selector\n\t}\n\n\t/**\n\t * Proxy\n\t *\n\t * @param {number} context\n\t * @param {string} content\n\t * @param {Array<string>} selectors\n\t * @param {Array<string>} parents\n\t * @param {number} line\n\t * @param {number} column\n\t * @param {number} length\n\t * @param {number} id\n\t * @param {number} depth\n\t * @param {number} at\n\t * @return {(string|void|*)}\n\t */\n\tfunction proxy (context, content, selectors, parents, line, column, length, id, depth, at) {\n\t\tfor (var i = 0, out = content, next; i < plugged; ++i) {\n\t\t\tswitch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth, at)) {\n\t\t\t\tcase void 0:\n\t\t\t\tcase false:\n\t\t\t\tcase true:\n\t\t\t\tcase null: {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tout = next\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (out !== content) {\n\t\t  return out\n\t\t}\n\t}\n\n\t/**\n\t * @param {number} code\n\t * @param {number} index\n\t * @param {number} length\n\t * @param {string} body\n\t * @return {number}\n\t */\n\tfunction delimited (code, index, length, body) {\n\t\tfor (var i = index + 1; i < length; ++i) {\n\t\t\tswitch (body.charCodeAt(i)) {\n\t\t\t\t// /*\n\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\tif (code === STAR) {\n\t\t\t\t\t\tif (body.charCodeAt(i - 1) === STAR &&  index + 2 !== i) {\n\t\t\t\t\t\t\treturn i + 1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// //\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\tif (code === FOWARDSLASH) {\n\t\t\t\t\t\treturn i + 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn i\n\t}\n\n\t/**\n\t * @param {number} type\n\t * @param {number} index\n\t * @param {number} length\n\t * @param {number} find\n\t * @param {string} body\n\t * @return {number}\n\t */\n\tfunction match (type, index, length, body) {\n\t\tfor (var i = index + 1; i < length; ++i) {\n\t\t\tswitch (body.charCodeAt(i)) {\n\t\t\t\tcase type: {\n\t\t\t\t\treturn i\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn i\n\t}\n\n\t/**\n\t * Minify\n\t *\n\t * @param {(string|*)} output\n\t * @return {string}\n\t */\n\tfunction minify (output) {\n\t\treturn output\n\t\t\t.replace(formatptn, '')\n\t\t\t.replace(beforeptn, '')\n\t\t\t.replace(afterptn, '$1')\n\t\t\t.replace(tailptn, '$1')\n\t\t\t.replace(whiteptn, ' ')\n\t}\n\n\t/**\n\t * Use\n\t *\n\t * @param {(Array<function(...?)>|function(...?)|number|void)?} plugin\n\t */\n\tfunction use (plugin) {\n\t\tswitch (plugin) {\n\t\t\tcase void 0:\n\t\t\tcase null: {\n\t\t\t\tplugged = plugins.length = 0\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tif (typeof plugin === 'function') {\n\t\t\t\t\tplugins[plugged++] = plugin\n\t\t\t\t}\telse if (typeof plugin === 'object') {\n\t\t\t\t\tfor (var i = 0, length = plugin.length; i < length; ++i) {\n\t\t\t\t\t\tuse(plugin[i])\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tunkwn = !!plugin|0\n\t\t\t\t}\n\t\t\t}\n \t\t}\n\n \t\treturn use\n\t}\n\n\t/**\n\t * Set\n\t *\n\t * @param {*} options\n\t */\n\tfunction set (options) {\n\t\tfor (var name in options) {\n\t\t\tvar value = options[name]\n\t\t\tswitch (name) {\n\t\t\t\tcase 'keyframe': keyed = value|0; break\n\t\t\t\tcase 'global': escape = value|0; break\n\t\t\t\tcase 'cascade': cascade = value|0; break\n\t\t\t\tcase 'compress': compress = value|0; break\n\t\t\t\tcase 'semicolon': semicolon = value|0; break\n\t\t\t\tcase 'preserve': preserve = value|0; break\n\t\t\t\tcase 'prefix':\n\t\t\t\t\tshould = null\n\n\t\t\t\t\tif (!value) {\n\t\t\t\t\t\tprefix = 0\n\t\t\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\t\t\tprefix = 1\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprefix = 2\n\t\t\t\t\t\tshould = value\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn set\n\t}\n\n\t/**\n\t * Stylis\n\t *\n\t * @param {string} selector\n\t * @param {string} input\n\t * @return {*}\n\t */\n\tfunction stylis (selector, input) {\n\t\tif (this !== void 0 && this.constructor === stylis) {\n\t\t\treturn factory(selector)\n\t\t}\n\n\t\t// setup\n\t\tvar ns = selector\n\t\tvar code = ns.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (ns = ns.trim()).charCodeAt(0)\n\t\t}\n\n\t\t// keyframe/animation namespace\n\t\tif (keyed > 0) {\n\t\t\tkey = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-')\n\t\t}\n\n\t\t// reset, used to assert if a plugin is moneky-patching the return value\n\t\tcode = 1\n\n\t\t// cascade/isolate\n\t\tif (cascade === 1) {\n\t\t\tnscope = ns\n\t\t} else {\n\t\t\tnscopealt = ns\n\t\t}\n\n\t\tvar selectors = [nscope]\n\t\tvar result\n\n\t\t// execute plugins, pre-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0, 0)\n\n\t\t\tif (result !== void 0 && typeof result === 'string') {\n\t\t\t\tinput = result\n\t\t\t}\n\t\t}\n\n\t\t// build\n\t\tvar output = compile(array, selectors, input, 0, 0)\n\n\t\t// execute plugins, post-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0, 0)\n\n\t\t\t// bypass minification\n\t\t\tif (result !== void 0 && typeof(output = result) !== 'string') {\n\t\t\t\tcode = 0\n\t\t\t}\n\t\t}\n\n\t\t// reset\n\t\tkey = ''\n\t\tnscope = ''\n\t\tnscopealt = ''\n\t\tpattern = 0\n\t\tline = 1\n\t\tcolumn = 1\n\n\t\treturn compress*code === 0 ? output : minify(output)\n\t}\n\n\tstylis['use'] = use\n\tstylis['set'] = set\n\n\tif (options !== void 0) {\n\t\tset(options)\n\t}\n\n\treturn stylis\n}));\n", "(function (factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? (module['exports'] = factory()) :\n\t\ttypeof define === 'function' && define['amd'] ? define(factory()) :\n\t\t\t(window['stylisRuleSheet'] = factory())\n}(function () {\n\n\t'use strict'\n\n\treturn function (insertRule) {\n\t\tvar delimiter = '/*|*/'\n\t\tvar needle = delimiter+'}'\n\n\t\tfunction toSheet (block) {\n\t\t\tif (block)\n\t\t\t\ttry {\n\t\t\t\t\tinsertRule(block + '}')\n\t\t\t\t} catch (e) {}\n\t\t}\n\n\t\treturn function ruleSheet (context, content, selectors, parents, line, column, length, ns, depth, at) {\n\t\t\tswitch (context) {\n\t\t\t\t// property\n\t\t\t\tcase 1:\n\t\t\t\t\t// @import\n\t\t\t\t\tif (depth === 0 && content.charCodeAt(0) === 64)\n\t\t\t\t\t\treturn insertRule(content+';'), ''\n\t\t\t\t\tbreak\n\t\t\t\t// selector\n\t\t\t\tcase 2:\n\t\t\t\t\tif (ns === 0)\n\t\t\t\t\t\treturn content + delimiter\n\t\t\t\t\tbreak\n\t\t\t\t// at-rule\n\t\t\t\tcase 3:\n\t\t\t\t\tswitch (ns) {\n\t\t\t\t\t\t// @font-face, @page\n\t\t\t\t\t\tcase 102:\n\t\t\t\t\t\tcase 112:\n\t\t\t\t\t\t\treturn insertRule(selectors[0]+content), ''\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn content + (at === 0 ? delimiter : '')\n\t\t\t\t\t}\n\t\t\t\tcase -2:\n\t\t\t\t\tcontent.split(needle).forEach(toSheet)\n\t\t\t}\n\t\t}\n\t}\n}))\n", "var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\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", "var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\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", "/*\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 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", "/**\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", "function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n", "import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n", "/**\r\n * Returns the object type of the given payload\r\n *\r\n * @param {*} payload\r\n * @returns {string}\r\n */\r\nfunction getType(payload) {\r\n    return Object.prototype.toString.call(payload).slice(8, -1);\r\n}\r\n/**\r\n * Returns whether the payload is undefined\r\n *\r\n * @param {*} payload\r\n * @returns {payload is undefined}\r\n */\r\nfunction isUndefined(payload) {\r\n    return getType(payload) === 'Undefined';\r\n}\r\n/**\r\n * Returns whether the payload is null\r\n *\r\n * @param {*} payload\r\n * @returns {payload is null}\r\n */\r\nfunction isNull(payload) {\r\n    return getType(payload) === 'Null';\r\n}\r\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isPlainObject(payload) {\r\n    if (getType(payload) !== 'Object')\r\n        return false;\r\n    return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype;\r\n}\r\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isObject(payload) {\r\n    return isPlainObject(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is { [K in any]: never }}\r\n */\r\nfunction isEmptyObject(payload) {\r\n    return isPlainObject(payload) && Object.keys(payload).length === 0;\r\n}\r\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isFullObject(payload) {\r\n    return isPlainObject(payload) && Object.keys(payload).length > 0;\r\n}\r\n/**\r\n * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isAnyObject(payload) {\r\n    return getType(payload) === 'Object';\r\n}\r\n/**\r\n * Returns whether the payload is an object like a type passed in < >\r\n *\r\n * Usage: isObjectLike<{id: any}>(payload) // will make sure it's an object and has an `id` prop.\r\n *\r\n * @template T this must be passed in < >\r\n * @param {*} payload\r\n * @returns {payload is T}\r\n */\r\nfunction isObjectLike(payload) {\r\n    return isAnyObject(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a function (regular or async)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is AnyFunction}\r\n */\r\nfunction isFunction(payload) {\r\n    return typeof payload === 'function';\r\n}\r\n/**\r\n * Returns whether the payload is an array\r\n *\r\n * @param {any} payload\r\n * @returns {payload is any[]}\r\n */\r\nfunction isArray(payload) {\r\n    return getType(payload) === 'Array';\r\n}\r\n/**\r\n * Returns whether the payload is a an array with at least 1 item\r\n *\r\n * @param {*} payload\r\n * @returns {payload is any[]}\r\n */\r\nfunction isFullArray(payload) {\r\n    return isArray(payload) && payload.length > 0;\r\n}\r\n/**\r\n * Returns whether the payload is a an empty array\r\n *\r\n * @param {*} payload\r\n * @returns {payload is []}\r\n */\r\nfunction isEmptyArray(payload) {\r\n    return isArray(payload) && payload.length === 0;\r\n}\r\n/**\r\n * Returns whether the payload is a string\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isString(payload) {\r\n    return getType(payload) === 'String';\r\n}\r\n/**\r\n * Returns whether the payload is a string, BUT returns false for ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isFullString(payload) {\r\n    return isString(payload) && payload !== '';\r\n}\r\n/**\r\n * Returns whether the payload is ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isEmptyString(payload) {\r\n    return payload === '';\r\n}\r\n/**\r\n * Returns whether the payload is a number (but not NaN)\r\n *\r\n * This will return `false` for `NaN`!!\r\n *\r\n * @param {*} payload\r\n * @returns {payload is number}\r\n */\r\nfunction isNumber(payload) {\r\n    return getType(payload) === 'Number' && !isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a boolean\r\n *\r\n * @param {*} payload\r\n * @returns {payload is boolean}\r\n */\r\nfunction isBoolean(payload) {\r\n    return getType(payload) === 'Boolean';\r\n}\r\n/**\r\n * Returns whether the payload is a regular expression (RegExp)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is RegExp}\r\n */\r\nfunction isRegExp(payload) {\r\n    return getType(payload) === 'RegExp';\r\n}\r\n/**\r\n * Returns whether the payload is a Map\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Map<any, any>}\r\n */\r\nfunction isMap(payload) {\r\n    return getType(payload) === 'Map';\r\n}\r\n/**\r\n * Returns whether the payload is a WeakMap\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakMap<any, any>}\r\n */\r\nfunction isWeakMap(payload) {\r\n    return getType(payload) === 'WeakMap';\r\n}\r\n/**\r\n * Returns whether the payload is a Set\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Set<any>}\r\n */\r\nfunction isSet(payload) {\r\n    return getType(payload) === 'Set';\r\n}\r\n/**\r\n * Returns whether the payload is a WeakSet\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakSet<any>}\r\n */\r\nfunction isWeakSet(payload) {\r\n    return getType(payload) === 'WeakSet';\r\n}\r\n/**\r\n * Returns whether the payload is a Symbol\r\n *\r\n * @param {*} payload\r\n * @returns {payload is symbol}\r\n */\r\nfunction isSymbol(payload) {\r\n    return getType(payload) === 'Symbol';\r\n}\r\n/**\r\n * Returns whether the payload is a Date, and that the date is valid\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Date}\r\n */\r\nfunction isDate(payload) {\r\n    return getType(payload) === 'Date' && !isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a Blob\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Blob}\r\n */\r\nfunction isBlob(payload) {\r\n    return getType(payload) === 'Blob';\r\n}\r\n/**\r\n * Returns whether the payload is a File\r\n *\r\n * @param {*} payload\r\n * @returns {payload is File}\r\n */\r\nfunction isFile(payload) {\r\n    return getType(payload) === 'File';\r\n}\r\n/**\r\n * Returns whether the payload is a Promise\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Promise<any>}\r\n */\r\nfunction isPromise(payload) {\r\n    return getType(payload) === 'Promise';\r\n}\r\n/**\r\n * Returns whether the payload is an Error\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Error}\r\n */\r\nfunction isError(payload) {\r\n    return getType(payload) === 'Error';\r\n}\r\n/**\r\n * Returns whether the payload is literally the value `NaN` (it's `NaN` and also a `number`)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is typeof NaN}\r\n */\r\nfunction isNaNValue(payload) {\r\n    return getType(payload) === 'Number' && isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is boolean | null | undefined | number | string | symbol)}\r\n */\r\nfunction isPrimitive(payload) {\r\n    return (isBoolean(payload) ||\r\n        isNull(payload) ||\r\n        isUndefined(payload) ||\r\n        isNumber(payload) ||\r\n        isString(payload) ||\r\n        isSymbol(payload));\r\n}\r\n/**\r\n * Returns true whether the payload is null or undefined\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is null | undefined)}\r\n */\r\nvar isNullOrUndefined = isOneOf(isNull, isUndefined);\r\nfunction isOneOf(a, b, c, d, e) {\r\n    return function (value) {\r\n        return a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value));\r\n    };\r\n}\r\n/**\r\n * Does a generic check to check that the given payload is of a given type.\r\n * In cases like Number, it will return true for NaN as NaN is a Number (thanks javascript!);\r\n * It will, however, differentiate between object and null\r\n *\r\n * @template T\r\n * @param {*} payload\r\n * @param {T} type\r\n * @throws {TypeError} Will throw type error if type is an invalid type\r\n * @returns {payload is T}\r\n */\r\nfunction isType(payload, type) {\r\n    if (!(type instanceof Function)) {\r\n        throw new TypeError('Type must be a function');\r\n    }\r\n    if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {\r\n        throw new TypeError('Type is not a class');\r\n    }\r\n    // Classes usually have names (as functions usually have names)\r\n    var name = type.name;\r\n    return getType(payload) === name || Boolean(payload && payload.constructor === type);\r\n}\n\nexport { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullArray, isFullObject, isFullString, isFunction, isMap, isNaNValue, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isOneOf, isPlainObject, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet };\n", "import { isPlainObject, isArray, isSymbol } from 'is-what';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\n\nfunction assignProp(carry, key, newVal, originalObject) {\r\n    var propType = originalObject.propertyIsEnumerable(key)\r\n        ? 'enumerable'\r\n        : 'nonenumerable';\r\n    if (propType === 'enumerable')\r\n        carry[key] = newVal;\r\n    if (propType === 'nonenumerable') {\r\n        Object.defineProperty(carry, key, {\r\n            value: newVal,\r\n            enumerable: false,\r\n            writable: true,\r\n            configurable: true\r\n        });\r\n    }\r\n}\r\nfunction mergeRecursively(origin, newComer, extensions) {\r\n    // work directly on newComer if its not an object\r\n    if (!isPlainObject(newComer)) {\r\n        // extend merge rules\r\n        if (extensions && isArray(extensions)) {\r\n            extensions.forEach(function (extend) {\r\n                newComer = extend(origin, newComer);\r\n            });\r\n        }\r\n        return newComer;\r\n    }\r\n    // define newObject to merge all values upon\r\n    var newObject = {};\r\n    if (isPlainObject(origin)) {\r\n        var props_1 = Object.getOwnPropertyNames(origin);\r\n        var symbols_1 = Object.getOwnPropertySymbols(origin);\r\n        newObject = __spreadArrays(props_1, symbols_1).reduce(function (carry, key) {\r\n            // @ts-ignore\r\n            var targetVal = origin[key];\r\n            if ((!isSymbol(key) && !Object.getOwnPropertyNames(newComer).includes(key)) ||\r\n                (isSymbol(key) && !Object.getOwnPropertySymbols(newComer).includes(key))) {\r\n                assignProp(carry, key, targetVal, origin);\r\n            }\r\n            return carry;\r\n        }, {});\r\n    }\r\n    var props = Object.getOwnPropertyNames(newComer);\r\n    var symbols = Object.getOwnPropertySymbols(newComer);\r\n    var result = __spreadArrays(props, symbols).reduce(function (carry, key) {\r\n        // re-define the origin and newComer as targetVal and newVal\r\n        var newVal = newComer[key];\r\n        var targetVal = (isPlainObject(origin))\r\n            // @ts-ignore\r\n            ? origin[key]\r\n            : undefined;\r\n        // extend merge rules\r\n        if (extensions && isArray(extensions)) {\r\n            extensions.forEach(function (extend) {\r\n                newVal = extend(targetVal, newVal);\r\n            });\r\n        }\r\n        // When newVal is an object do the merge recursively\r\n        if (targetVal !== undefined && isPlainObject(newVal)) {\r\n            newVal = mergeRecursively(targetVal, newVal, extensions);\r\n        }\r\n        assignProp(carry, key, newVal, newComer);\r\n        return carry;\r\n    }, newObject);\r\n    return result;\r\n}\r\n/**\r\n * Merge anything recursively.\r\n * Objects get merged, special objects (classes etc.) are re-assigned \"as is\".\r\n * Basic types overwrite objects or other basic types.\r\n *\r\n * @param {(IConfig | any)} origin\r\n * @param {...any[]} newComers\r\n * @returns the result\r\n */\r\nfunction merge(origin) {\r\n    var newComers = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        newComers[_i - 1] = arguments[_i];\r\n    }\r\n    var extensions = null;\r\n    var base = origin;\r\n    if (isPlainObject(origin) && origin.extensions && Object.keys(origin).length === 1) {\r\n        base = {};\r\n        extensions = origin.extensions;\r\n    }\r\n    return newComers.reduce(function (result, newComer) {\r\n        return mergeRecursively(result, newComer, extensions);\r\n    }, base);\r\n}\n\nfunction concatArrays(originVal, newVal) {\r\n    if (isArray(originVal) && isArray(newVal)) {\r\n        // concat logic\r\n        return originVal.concat(newVal);\r\n    }\r\n    return newVal; // always return newVal as fallback!!\r\n}\n\nexport default merge;\nexport { concatArrays, merge };\n", "// @flow\n/* eslint-disable flowtype/object-type-delimiter */\n/* eslint-disable react/prop-types */\n\nimport React, { type Element } from 'react';\nimport { IS_BROWSER, DISABLE_SPEEDY, SC_ATTR, SC_VERSION_ATTR } from '../constants';\nimport StyledError from '../utils/error';\nimport { type ExtractedComp } from '../utils/extractCompsFromCSS';\nimport { splitByRules } from '../utils/stringifyRules';\nimport getNonce from '../utils/nonce';\n\nimport {\n  type Names,\n  addNameForId,\n  resetIdNames,\n  hasNameForId,\n  stringifyNames,\n  cloneNames,\n} from '../utils/styleNames';\n\nimport { sheetForTag, safeInsertRule, deleteRules } from '../utils/insertRuleHelpers';\n\ndeclare var __VERSION__: string;\n\nexport interface Tag<T> {\n  // $FlowFixMe: Doesn't seem to accept any combination w/ HTMLStyleElement for some reason\n  styleTag: HTMLStyleElement | null;\n  /* lists all ids of the tag */\n  getIds(): string[];\n  /* checks whether `name` is already injected for `id` */\n  hasNameForId(id: string, name: string): boolean;\n  /* inserts a marker to ensure the id's correct position in the sheet */\n  insertMarker(id: string): T;\n  /* inserts rules according to the ids markers */\n  insertRules(id: string, cssRules: string[], name: ?string): void;\n  /* removes all rules belonging to the id, keeping the marker around */\n  removeRules(id: string): void;\n  css(): string;\n  toHTML(additionalAttrs: ?string): string;\n  toElement(): Element<*>;\n  clone(): Tag<T>;\n  /* used in server side rendering to indicate that the rules in the tag have been flushed to HTML */\n  sealed: boolean;\n}\n\n/* this marker separates component styles and is important for rehydration */\nconst makeTextMarker = id => `\\n/* sc-component-id: ${id} */\\n`;\n\n/* add up all numbers in array up until and including the index */\nconst addUpUntilIndex = (sizes: number[], index: number): number => {\n  let totalUpToIndex = 0;\n  for (let i = 0; i <= index; i += 1) {\n    totalUpToIndex += sizes[i];\n  }\n\n  return totalUpToIndex;\n};\n\n/* create a new style tag after lastEl */\nconst makeStyleTag = (target: ?HTMLElement, tagEl: ?Node, insertBefore: ?boolean) => {\n  let targetDocument = document;\n  if(target) targetDocument = target.ownerDocument;\n  else if(tagEl) targetDocument = tagEl.ownerDocument;\n\n  const el = targetDocument.createElement('style');\n  el.setAttribute(SC_ATTR, '');\n  el.setAttribute(SC_VERSION_ATTR, __VERSION__);\n\n  const nonce = getNonce();\n  if (nonce) {\n    el.setAttribute('nonce', nonce);\n  }\n\n  /* Work around insertRule quirk in EdgeHTML */\n  el.appendChild(targetDocument.createTextNode(''));\n\n  if (target && !tagEl) {\n    /* Append to target when no previous element was passed */\n    target.appendChild(el);\n  } else {\n    if (!tagEl || !target || !tagEl.parentNode) {\n      throw new StyledError(6);\n    }\n\n    /* Insert new style tag after the previous one */\n    tagEl.parentNode.insertBefore(el, insertBefore ? tagEl : tagEl.nextSibling);\n  }\n\n  return el;\n};\n\n/* takes a css factory function and outputs an html styled tag factory */\nconst wrapAsHtmlTag = (css: () => string, names: Names) => (additionalAttrs: ?string): string => {\n  const nonce = getNonce();\n  const attrs = [\n    nonce && `nonce=\"${nonce}\"`,\n    `${SC_ATTR}=\"${stringifyNames(names)}\"`,\n    `${SC_VERSION_ATTR}=\"${__VERSION__}\"`,\n    additionalAttrs,\n  ];\n\n  const htmlAttr = attrs.filter(Boolean).join(' ');\n  return `<style ${htmlAttr}>${css()}</style>`;\n};\n\n/* takes a css factory function and outputs an element factory */\nconst wrapAsElement = (css: () => string, names: Names) => () => {\n  const props = {\n    [SC_ATTR]: stringifyNames(names),\n    [SC_VERSION_ATTR]: __VERSION__,\n  };\n\n  const nonce = getNonce();\n  if (nonce) {\n    // $FlowFixMe\n    props.nonce = nonce;\n  }\n\n  // eslint-disable-next-line react/no-danger\n  return <style {...props} dangerouslySetInnerHTML={{ __html: css() }} />;\n};\n\nconst getIdsFromMarkersFactory = (markers: Object) => (): string[] => Object.keys(markers);\n\n/* speedy tags utilise insertRule */\nconst makeSpeedyTag = (el: HTMLStyleElement, getImportRuleTag: ?() => Tag<any>): Tag<number> => {\n  const names: Names = (Object.create(null): Object);\n  const markers = Object.create(null);\n  const sizes: number[] = [];\n\n  const extractImport = getImportRuleTag !== undefined;\n  /* indicates whether getImportRuleTag was called */\n  let usedImportRuleTag = false;\n\n  const insertMarker = id => {\n    const prev = markers[id];\n    if (prev !== undefined) {\n      return prev;\n    }\n\n    markers[id] = sizes.length;\n    sizes.push(0);\n    resetIdNames(names, id);\n\n    return markers[id];\n  };\n\n  const insertRules = (id, cssRules, name) => {\n    const marker = insertMarker(id);\n    const sheet = sheetForTag(el);\n    const insertIndex = addUpUntilIndex(sizes, marker);\n\n    let injectedRules = 0;\n    const importRules = [];\n    const cssRulesSize = cssRules.length;\n\n    for (let i = 0; i < cssRulesSize; i += 1) {\n      const cssRule = cssRules[i];\n      let mayHaveImport = extractImport; /* @import rules are reordered to appear first */\n      if (mayHaveImport && cssRule.indexOf('@import') !== -1) {\n        importRules.push(cssRule);\n      } else if (safeInsertRule(sheet, cssRule, insertIndex + injectedRules)) {\n        mayHaveImport = false;\n        injectedRules += 1;\n      }\n    }\n\n    if (extractImport && importRules.length > 0) {\n      usedImportRuleTag = true;\n      // $FlowFixMe\n      getImportRuleTag().insertRules(`${id}-import`, importRules);\n    }\n\n    sizes[marker] += injectedRules; /* add up no of injected rules */\n    addNameForId(names, id, name);\n  };\n\n  const removeRules = id => {\n    const marker = markers[id];\n    if (marker === undefined) return;\n    // $FlowFixMe\n    if (el.isConnected === false) return;\n\n    const size = sizes[marker];\n    const sheet = sheetForTag(el);\n    const removalIndex = addUpUntilIndex(sizes, marker) - 1;\n    deleteRules(sheet, removalIndex, size);\n    sizes[marker] = 0;\n    resetIdNames(names, id);\n\n    if (extractImport && usedImportRuleTag) {\n      // $FlowFixMe\n      getImportRuleTag().removeRules(`${id}-import`);\n    }\n  };\n\n  const css = () => {\n    const { cssRules } = sheetForTag(el);\n    let str = '';\n\n    // eslint-disable-next-line guard-for-in\n    for (const id in markers) {\n      str += makeTextMarker(id);\n      const marker = markers[id];\n      const end = addUpUntilIndex(sizes, marker);\n      const size = sizes[marker];\n      for (let i = end - size; i < end; i += 1) {\n        const rule = cssRules[i];\n        if (rule !== undefined) {\n          str += rule.cssText;\n        }\n      }\n    }\n\n    return str;\n  };\n\n  return {\n    clone() {\n      throw new StyledError(5);\n    },\n    css,\n    getIds: getIdsFromMarkersFactory(markers),\n    hasNameForId: hasNameForId(names),\n    insertMarker,\n    insertRules,\n    removeRules,\n    sealed: false,\n    styleTag: el,\n    toElement: wrapAsElement(css, names),\n    toHTML: wrapAsHtmlTag(css, names),\n  };\n};\n\nconst makeTextNode = (targetDocument, id) => targetDocument.createTextNode(makeTextMarker(id));\n\nconst makeBrowserTag = (el: HTMLStyleElement, getImportRuleTag: ?() => Tag<any>): Tag<Text> => {\n  const names = (Object.create(null): Object);\n  const markers = Object.create(null);\n\n  const extractImport = getImportRuleTag !== undefined;\n\n  /* indicates whether getImportRuleTag was called */\n  let usedImportRuleTag = false;\n\n  const insertMarker = id => {\n    const prev = markers[id];\n    if (prev !== undefined) {\n      return prev;\n    }\n\n    markers[id] = makeTextNode(el.ownerDocument, id);\n    el.appendChild(markers[id]);\n    names[id] = Object.create(null);\n\n    return markers[id];\n  };\n\n  const insertRules = (id, cssRules, name) => {\n    const marker = insertMarker(id);\n    const importRules = [];\n    const cssRulesSize = cssRules.length;\n\n    for (let i = 0; i < cssRulesSize; i += 1) {\n      const rule = cssRules[i];\n      let mayHaveImport = extractImport;\n      if (mayHaveImport && rule.indexOf('@import') !== -1) {\n        importRules.push(rule);\n      } else {\n        mayHaveImport = false;\n        const separator = i === cssRulesSize - 1 ? '' : ' ';\n        marker.appendData(`${rule}${separator}`);\n      }\n    }\n\n    addNameForId(names, id, name);\n\n    if (extractImport && importRules.length > 0) {\n      usedImportRuleTag = true;\n      // $FlowFixMe\n      getImportRuleTag().insertRules(`${id}-import`, importRules);\n    }\n  };\n\n  const removeRules = id => {\n    const marker = markers[id];\n    if (marker === undefined) return;\n\n    /* create new empty text node and replace the current one */\n    const newMarker = makeTextNode(el.ownerDocument, id);\n    el.replaceChild(newMarker, marker);\n    markers[id] = newMarker;\n    resetIdNames(names, id);\n\n    if (extractImport && usedImportRuleTag) {\n      // $FlowFixMe\n      getImportRuleTag().removeRules(`${id}-import`);\n    }\n  };\n\n  const css = () => {\n    let str = '';\n\n    // eslint-disable-next-line guard-for-in\n    for (const id in markers) {\n      str += markers[id].data;\n    }\n\n    return str;\n  };\n\n  return {\n    clone() {\n      throw new StyledError(5);\n    },\n    css,\n    getIds: getIdsFromMarkersFactory(markers),\n    hasNameForId: hasNameForId(names),\n    insertMarker,\n    insertRules,\n    removeRules,\n    sealed: false,\n    styleTag: el,\n    toElement: wrapAsElement(css, names),\n    toHTML: wrapAsHtmlTag(css, names),\n  };\n};\n\nconst makeServerTag = (namesArg, markersArg): Tag<[string]> => {\n  const names = namesArg === undefined ? (Object.create(null): Object) : namesArg;\n  const markers = markersArg === undefined ? Object.create(null) : markersArg;\n\n  const insertMarker = id => {\n    const prev = markers[id];\n    if (prev !== undefined) {\n      return prev;\n    }\n\n    return (markers[id] = ['']);\n  };\n\n  const insertRules = (id, cssRules, name) => {\n    const marker = insertMarker(id);\n    marker[0] += cssRules.join(' ');\n    addNameForId(names, id, name);\n  };\n\n  const removeRules = id => {\n    const marker = markers[id];\n    if (marker === undefined) return;\n    marker[0] = '';\n    resetIdNames(names, id);\n  };\n\n  const css = () => {\n    let str = '';\n    // eslint-disable-next-line guard-for-in\n    for (const id in markers) {\n      const cssForId = markers[id][0];\n      if (cssForId) {\n        str += makeTextMarker(id) + cssForId;\n      }\n    }\n    return str;\n  };\n\n  const clone = () => {\n    const namesClone = cloneNames(names);\n    const markersClone = Object.create(null);\n\n    // eslint-disable-next-line guard-for-in\n    for (const id in markers) {\n      markersClone[id] = [markers[id][0]];\n    }\n\n    return makeServerTag(namesClone, markersClone);\n  };\n\n  const tag = {\n    clone,\n    css,\n    getIds: getIdsFromMarkersFactory(markers),\n    hasNameForId: hasNameForId(names),\n    insertMarker,\n    insertRules,\n    removeRules,\n    sealed: false,\n    styleTag: null,\n    toElement: wrapAsElement(css, names),\n    toHTML: wrapAsHtmlTag(css, names),\n  };\n\n  return tag;\n};\n\nexport const makeTag = (\n  target: ?HTMLElement,\n  tagEl: ?HTMLStyleElement,\n  forceServer?: boolean,\n  insertBefore?: boolean,\n  getImportRuleTag?: () => Tag<any>\n): Tag<any> => {\n  if (IS_BROWSER && !forceServer) {\n    const el = makeStyleTag(target, tagEl, insertBefore);\n\n    if (DISABLE_SPEEDY) {\n      return makeBrowserTag(el, getImportRuleTag);\n    } else {\n      return makeSpeedyTag(el, getImportRuleTag);\n    }\n  }\n\n  return makeServerTag();\n};\n\nexport const rehydrate = (\n  tag: Tag<any>,\n  els: HTMLStyleElement[],\n  extracted: ExtractedComp[]\n): void => {\n  /* add all extracted components to the new tag */\n  for (let i = 0, len = extracted.length; i < len; i += 1) {\n    const { componentId, cssFromDOM } = extracted[i];\n    const cssRules = splitByRules(cssFromDOM);\n    tag.insertRules(componentId, cssRules);\n  }\n\n  /* remove old HTMLStyleElements, since they have been rehydrated */\n  for (let i = 0, len = els.length; i < len; i += 1) {\n    const el = els[i];\n    if (el.parentNode) {\n      el.parentNode.removeChild(el);\n    }\n  }\n};\n", "// @flow\nimport React, { createContext, Component, type Element } from 'react';\nimport memoize from 'memoize-one';\nimport StyledError from '../utils/error';\nimport isFunction from '../utils/isFunction';\n\nexport type Theme = { [key: string]: mixed };\n\ntype Props = {\n  children?: Element<any>,\n  theme: Theme | ((outerTheme: Theme) => void),\n};\n\nexport const ThemeContext = createContext();\n\nexport const ThemeConsumer = ThemeContext.Consumer;\n\n/**\n * Provide a theme to an entire react component tree via context\n */\nexport default class ThemeProvider extends Component<Props> {\n  getContext: (theme: Theme | ((outerTheme: Theme) => void), outerTheme?: Theme) => Theme;\n\n  renderInner: Function;\n\n  constructor(props: Props) {\n    super(props);\n    this.getContext = memoize(this.getContext.bind(this));\n    this.renderInner = this.renderInner.bind(this);\n  }\n\n  render() {\n    if (!this.props.children) return null;\n\n    return <ThemeContext.Consumer>{this.renderInner}</ThemeContext.Consumer>;\n  }\n\n  renderInner(outerTheme?: Theme) {\n    const context = this.getContext(this.props.theme, outerTheme);\n\n    return (\n      <ThemeContext.Provider value={context}>\n        {this.props.children}\n      </ThemeContext.Provider>\n    );\n  }\n\n  /**\n   * Get the theme from the props, supporting both (outerTheme) => {}\n   * as well as object notation\n   */\n  getTheme(theme: (outerTheme: ?Theme) => void, outerTheme: ?Theme) {\n    if (isFunction(theme)) {\n      const mergedTheme = theme(outerTheme);\n\n      if (\n        process.env.NODE_ENV !== 'production' &&\n        (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')\n      ) {\n        throw new StyledError(7);\n      }\n\n      return mergedTheme;\n    }\n\n    if (theme === null || Array.isArray(theme) || typeof theme !== 'object') {\n      throw new StyledError(8);\n    }\n\n    return { ...outerTheme, ...theme };\n  }\n\n  getContext(theme: (outerTheme: ?Theme) => void, outerTheme?: Theme) {\n    return this.getTheme(theme, outerTheme);\n  }\n}\n", "// @flow\nimport React, { createContext, Component, type Element } from 'react';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoize-one';\nimport StyleSheet from './StyleSheet';\nimport ServerStyleSheet from './ServerStyleSheet';\nimport StyledError from '../utils/error';\n\ntype Props = {\n  children?: Element<any>,\n  sheet?: StyleSheet,\n  target?: HTMLElement,\n};\n\nexport const StyleSheetContext = createContext();\nexport const StyleSheetConsumer = StyleSheetContext.Consumer;\n\nexport default class StyleSheetManager extends Component<Props> {\n  static propTypes = {\n    sheet: PropTypes.oneOfType([\n      PropTypes.instanceOf(StyleSheet),\n      PropTypes.instanceOf(ServerStyleSheet),\n    ]),\n\n    target: PropTypes.shape({\n      appendChild: PropTypes.func.isRequired,\n    }),\n  };\n\n  getContext: (sheet: ?StyleSheet, target: ?HTMLElement) => StyleSheet;\n\n  constructor(props: Props) {\n    super(props);\n    this.getContext = memoize(this.getContext);\n  }\n\n  getContext(sheet: ?StyleSheet, target: ?HTMLElement) {\n    if (sheet) {\n      return sheet;\n    } else if (target) {\n      return new StyleSheet(target);\n    } else {\n      throw new StyledError(4);\n    }\n  }\n\n  render() {\n    const { children, sheet, target } = this.props;\n\n    return (\n      <StyleSheetContext.Provider value={this.getContext(sheet, target)}>\n        {process.env.NODE_ENV !== 'production' ? React.Children.only(children) : children}\n      </StyleSheetContext.Provider>\n    );\n  }\n}\n", "// @flow\nimport validAttr from '@emotion/is-prop-valid';\nimport merge from 'merge-anything';\nimport React, { createElement, Component } from 'react';\nimport ComponentStyle from './ComponentStyle';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport escape from '../utils/escape';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport getComponentName from '../utils/getComponentName';\nimport hoist from '../utils/hoist';\nimport isFunction from '../utils/isFunction';\nimport isTag from '../utils/isTag';\nimport isDerivedReactComponent from '../utils/isDerivedReactComponent';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport once from '../utils/once';\nimport StyleSheet from './StyleSheet';\nimport { ThemeConsumer, type Theme } from './ThemeProvider';\nimport { StyleSheetConsumer } from './StyleSheetManager';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\n\nimport type { Attrs, RuleSet, Target } from '../types';\n\nconst identifiers = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(_ComponentStyle: Function, _displayName: string, parentComponentId: string) {\n  const displayName = typeof _displayName !== 'string' ? 'sc' : escape(_displayName);\n\n  /**\n   * This ensures uniqueness if two components happen to share\n   * the same displayName.\n   */\n  const nr = (identifiers[displayName] || 0) + 1;\n  identifiers[displayName] = nr;\n\n  const componentId = `${displayName}-${_ComponentStyle.generateName(displayName + nr)}`;\n\n  return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\n// $FlowFixMe\nclass StyledComponent extends Component<*> {\n  renderOuter: Function;\n\n  renderInner: Function;\n\n  styleSheet: ?StyleSheet;\n\n  warnInnerRef: Function;\n\n  warnAttrsFnObjectKeyDeprecated: Function;\n\n  warnNonStyledComponentAttrsObjectKey: Function;\n\n  attrs = {};\n\n  constructor() {\n    super();\n    this.renderOuter = this.renderOuter.bind(this);\n    this.renderInner = this.renderInner.bind(this);\n\n    if (process.env.NODE_ENV !== 'production') {\n      this.warnInnerRef = once(displayName =>\n        // eslint-disable-next-line no-console\n        console.warn(\n          `The \"innerRef\" API has been removed in styled-components v4 in favor of React 16 ref forwarding, use \"ref\" instead like a typical component. \"innerRef\" was detected on component \"${displayName}\".`\n        )\n      );\n\n      this.warnAttrsFnObjectKeyDeprecated = once(\n        (key, displayName): void =>\n          // eslint-disable-next-line no-console\n          console.warn(\n            `Functions as object-form attrs({}) keys are now deprecated and will be removed in a future version of styled-components. Switch to the new attrs(props => ({})) syntax instead for easier and more powerful composition. The attrs key in question is \"${key}\" on component \"${displayName}\".`,\n            `\\n ${new Error().stack}`\n          )\n      );\n\n      this.warnNonStyledComponentAttrsObjectKey = once(\n        (key, displayName): void =>\n          // eslint-disable-next-line no-console\n          console.warn(\n            `It looks like you've used a non styled-component as the value for the \"${key}\" prop in an object-form attrs constructor of \"${displayName}\".\\n` +\n              'You should use the new function-form attrs constructor which avoids this issue: attrs(props => ({ yourStuff }))\\n' +\n              \"To continue using the deprecated object syntax, you'll need to wrap your component prop in a function to make it available inside the styled component (you'll still get the deprecation warning though.)\\n\" +\n              `For example, { ${key}: () => InnerComponent } instead of { ${key}: InnerComponent }`\n          )\n      );\n    }\n  }\n\n  render() {\n    return <StyleSheetConsumer>{this.renderOuter}</StyleSheetConsumer>;\n  }\n\n  renderOuter(styleSheet?: StyleSheet = StyleSheet.master) {\n    this.styleSheet = styleSheet;\n\n    // No need to subscribe a static component to theme changes, it won't change anything\n    if (this.props.forwardedComponent.componentStyle.isStatic) return this.renderInner();\n\n    return <ThemeConsumer>{this.renderInner}</ThemeConsumer>;\n  }\n\n  renderInner(theme?: Theme) {\n    const {\n      componentStyle,\n      defaultProps,\n      displayName,\n      foldedComponentIds,\n      styledComponentId,\n      target,\n    } = this.props.forwardedComponent;\n\n    let generatedClassName;\n    if (componentStyle.isStatic) {\n      generatedClassName = this.generateAndInjectStyles(EMPTY_OBJECT, this.props);\n    } else {\n      generatedClassName = this.generateAndInjectStyles(\n        determineTheme(this.props, theme, defaultProps) || EMPTY_OBJECT,\n        this.props\n      );\n    }\n\n    const elementToBeCreated = this.props.as || this.attrs.as || target;\n    const isTargetTag = isTag(elementToBeCreated);\n\n    const propsForElement = {};\n    const computedProps = { ...this.props, ...this.attrs };\n\n    let key;\n    // eslint-disable-next-line guard-for-in\n    for (key in computedProps) {\n      if (process.env.NODE_ENV !== 'production' && key === 'innerRef' && isTargetTag) {\n        this.warnInnerRef(displayName);\n      }\n\n      if (key === 'forwardedComponent' || key === 'as') {\n        continue;\n      } else if (key === 'forwardedRef') propsForElement.ref = computedProps[key];\n      else if (key === 'forwardedAs') propsForElement.as = computedProps[key];\n      else if (!isTargetTag || validAttr(key)) {\n        // Don't pass through non HTML tags through to HTML elements\n        propsForElement[key] = computedProps[key];\n      }\n    }\n\n    if (this.props.style && this.attrs.style) {\n      propsForElement.style = { ...this.attrs.style, ...this.props.style };\n    }\n\n    propsForElement.className = Array.prototype\n      .concat(\n        foldedComponentIds,\n        styledComponentId,\n        generatedClassName !== styledComponentId ? generatedClassName : null,\n        this.props.className,\n        this.attrs.className\n      )\n      .filter(Boolean)\n      .join(' ');\n\n    return createElement(elementToBeCreated, propsForElement);\n  }\n\n  buildExecutionContext(theme: ?Object, props: Object, attrs: Attrs) {\n    const context = { ...props, theme };\n\n    if (!attrs.length) return context;\n\n    this.attrs = {};\n\n    attrs.forEach(attrDef => {\n      let resolvedAttrDef = attrDef;\n      let attrDefWasFn = false;\n      let attr;\n      let key;\n\n      if (isFunction(resolvedAttrDef)) {\n        // $FlowFixMe\n        resolvedAttrDef = resolvedAttrDef(context);\n        attrDefWasFn = true;\n      }\n\n      /* eslint-disable guard-for-in */\n      // $FlowFixMe\n      for (key in resolvedAttrDef) {\n        attr = resolvedAttrDef[key];\n\n        if (!attrDefWasFn) {\n          if (isFunction(attr) && !isDerivedReactComponent(attr) && !isStyledComponent(attr)) {\n            if (process.env.NODE_ENV !== 'production') {\n              this.warnAttrsFnObjectKeyDeprecated(key, props.forwardedComponent.displayName);\n            }\n\n            attr = attr(context);\n\n            if (process.env.NODE_ENV !== 'production' && React.isValidElement(attr)) {\n              this.warnNonStyledComponentAttrsObjectKey(key, props.forwardedComponent.displayName);\n            }\n          }\n        }\n\n        this.attrs[key] = attr;\n        context[key] = attr;\n      }\n      /* eslint-enable */\n    });\n\n    return context;\n  }\n\n  generateAndInjectStyles(theme: any, props: any) {\n    const { attrs, componentStyle, warnTooManyClasses } = props.forwardedComponent;\n\n    // statically styled-components don't need to build an execution context object,\n    // and shouldn't be increasing the number of class names\n    if (componentStyle.isStatic && !attrs.length) {\n      return componentStyle.generateAndInjectStyles(EMPTY_OBJECT, this.styleSheet);\n    }\n\n    const className = componentStyle.generateAndInjectStyles(\n      this.buildExecutionContext(theme, props, attrs),\n      this.styleSheet\n    );\n\n    if (process.env.NODE_ENV !== 'production' && warnTooManyClasses) warnTooManyClasses(className);\n\n    return className;\n  }\n}\n\nexport default function createStyledComponent(target: Target, options: Object, rules: RuleSet) {\n  const isTargetStyledComp = isStyledComponent(target);\n  const isClass = !isTag(target);\n\n  const {\n    displayName = generateDisplayName(target),\n    componentId = generateId(ComponentStyle, options.displayName, options.parentComponentId),\n    ParentComponent = StyledComponent,\n    attrs = EMPTY_ARRAY,\n  } = options;\n\n  const styledComponentId =\n    options.displayName && options.componentId\n      ? `${escape(options.displayName)}-${options.componentId}`\n      : options.componentId || componentId;\n\n  // fold the underlying StyledComponent attrs up (implicit extend)\n  const finalAttrs =\n    // $FlowFixMe\n    isTargetStyledComp && target.attrs\n      ? Array.prototype.concat(target.attrs, attrs).filter(Boolean)\n      : attrs;\n\n  const componentStyle = new ComponentStyle(\n    isTargetStyledComp\n      ? // fold the underlying StyledComponent rules up (implicit extend)\n        // $FlowFixMe\n        target.componentStyle.rules.concat(rules)\n      : rules,\n    finalAttrs,\n    styledComponentId\n  );\n\n  /**\n   * forwardRef creates a new interim component, which we'll take advantage of\n   * instead of extending ParentComponent to create _another_ interim class\n   */\n  let WrappedStyledComponent;\n  const forwardRef = (props, ref) => (\n    <ParentComponent {...props} forwardedComponent={WrappedStyledComponent} forwardedRef={ref} />\n  );\n  forwardRef.displayName = displayName;\n  WrappedStyledComponent = React.forwardRef(forwardRef);\n  WrappedStyledComponent.displayName = displayName;\n\n  // $FlowFixMe\n  WrappedStyledComponent.attrs = finalAttrs;\n  // $FlowFixMe\n  WrappedStyledComponent.componentStyle = componentStyle;\n\n  // $FlowFixMe\n  WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n    ? // $FlowFixMe\n      Array.prototype.concat(target.foldedComponentIds, target.styledComponentId)\n    : EMPTY_ARRAY;\n\n  // $FlowFixMe\n  WrappedStyledComponent.styledComponentId = styledComponentId;\n\n  // fold the underlying StyledComponent target up since we folded the styles\n  // $FlowFixMe\n  WrappedStyledComponent.target = isTargetStyledComp ? target.target : target;\n\n  // $FlowFixMe\n  WrappedStyledComponent.withComponent = function withComponent(tag: Target) {\n    const { componentId: previousComponentId, ...optionsToCopy } = options;\n\n    const newComponentId =\n      previousComponentId &&\n      `${previousComponentId}-${isTag(tag) ? tag : escape(getComponentName(tag))}`;\n\n    const newOptions = {\n      ...optionsToCopy,\n      attrs: finalAttrs,\n      componentId: newComponentId,\n      ParentComponent,\n    };\n\n    return createStyledComponent(tag, newOptions, rules);\n  };\n\n  // $FlowFixMe\n  Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n    get() {\n      return this._foldedDefaultProps;\n    },\n\n    set(obj) {\n      // $FlowFixMe\n      this._foldedDefaultProps = isTargetStyledComp ? merge(target.defaultProps, obj) : obj;\n    },\n  });\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(displayName);\n  }\n\n  // $FlowFixMe\n  WrappedStyledComponent.toString = () => `.${WrappedStyledComponent.styledComponentId}`;\n\n  if (isClass) {\n    hoist(WrappedStyledComponent, target, {\n      // all SC-specific things should not be hoisted\n      attrs: true,\n      componentStyle: true,\n      displayName: true,\n      foldedComponentIds: true,\n      styledComponentId: true,\n      target: true,\n      withComponent: true,\n    });\n  }\n\n  return WrappedStyledComponent;\n}\n", "// @flow\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\nimport stringifyRules from '../utils/stringifyRules';\nimport StyleSheet from './StyleSheet';\n\nimport type { RuleSet } from '../types';\n\nexport default class GlobalStyle {\n  componentId: string;\n\n  isStatic: boolean;\n\n  rules: RuleSet;\n\n  constructor(rules: RuleSet, componentId: string) {\n    this.rules = rules;\n    this.componentId = componentId;\n    this.isStatic = isStaticRules(rules, EMPTY_ARRAY);\n\n    if (!StyleSheet.master.hasId(componentId)) {\n      StyleSheet.master.deferredInject(componentId, []);\n    }\n  }\n\n  createStyles(executionContext: Object, styleSheet: StyleSheet) {\n    const flatCSS = flatten(this.rules, executionContext, styleSheet);\n    const css = stringifyRules(flatCSS, '');\n\n    styleSheet.inject(this.componentId, css);\n  }\n\n  removeStyles(styleSheet: StyleSheet) {\n    const { componentId } = this;\n    if (styleSheet.hasId(componentId)) {\n      styleSheet.remove(componentId);\n    }\n  }\n\n  // TODO: overwrite in-place instead of remove+create?\n  renderStyles(executionContext: Object, styleSheet: StyleSheet) {\n    this.removeStyles(styleSheet);\n    this.createStyles(executionContext, styleSheet);\n  }\n}\n", "export const dark = \"#23292F\";\nexport const lightDark = \"#363E47\";\nexport const lighterDark = \"#6C7782\";\n\nexport const lightGrey = \"#cccccc\";\nexport const grey = \"#D8D8D8\";\nexport const darkenGrey = \"#AAACAD\";\nexport const darkGrey = \"#6E767C\";\n\nexport const lightWhite = \"#FBFCFF\";\nexport const white = \"#F1F7FF\";\nexport const darkenWhite = \"#DDE7F4\";\n\nexport const lightPrimary = \"#63BCF8\";\nexport const primary = \"#2780BB\";\nexport const darkenPrimary = \"#135B8A\";\n\n//TODO: rename red to lightRed and contrastRed to red\nexport const red = \"#FB6C6C\";\nexport const darkenRed = \"#B31919\";\nexport const contrastRed = \"#E50000\";\n\nexport const blueGradient = `linear-gradient(to right, ${lightPrimary} , ${darkenPrimary})`;\nexport const redGradient = `linear-gradient(to right, ${darkenRed} , ${red})`;\n\nexport const yellow = \"#F6B141\";\nexport const orange = \"#E87725\";\n\nexport const lightGreen = \"#5AC85A\";\nexport const green = \"#44BB27\";\nexport const darkGreen = \"#2E8115\";\n\nexport const overlay = \"rgba(35, 41, 47, 0.5)\";\n\nexport const shadowBlue = \"0px 2px 10px 2px rgba(14, 36, 51, 0.2)\";\nexport const shadowWhite = \"0px 2px 10px 2px rgba(23, 25, 27, 0.1)\";\nexport const shadowDark = \"0px 2px 10px 2px rgba(23, 25, 27, 0.3)\";", "const fonts = {\n    primary : \"'hind', \\\"Arial Black\\\", Gadget, sans-serif\",\n    secondary : \"'rubik', Arial, Helvetica, sans-serif\"\n};\n\nconst fontSize = [\n    \"10px\",\n    \"11px\",\n    \"12px\",\n    \"14px\",\n    \"18px\",\n    \"20px\"\n];\n\nconst primaryLineHeight = \"/1.5\"\n\nexport const primaryFontXSmall = fontSize[0] + primaryLineHeight + \" \" + fonts.primary;\nexport const primaryFontSmall =  fontSize[1] + primaryLineHeight + \" \" + fonts.primary;\nexport const primaryFontMedium = fontSize[2] + primaryLineHeight + \" \" + fonts.primary;\nexport const primaryFontLarge = fontSize[3] + primaryLineHeight + \" \" + fonts.primary;\nexport const primaryFontXLarge = fontSize[4] + primaryLineHeight + \" \" + fonts.primary;\n\nconst secondaryLineHeight = \"/1.2\"\n\nexport const secondaryFontXSmall =  fontSize[0] + secondaryLineHeight + \" \" + fonts.secondary;\nexport const secondaryFontSmall =  fontSize[1] + secondaryLineHeight + \" \" + fonts.secondary;\nexport const secondaryFontMedium =  fontSize[2] + secondaryLineHeight + \" \" + fonts.secondary;\nexport const secondaryFontLarge =  fontSize[3] + secondaryLineHeight + \" \" + fonts.secondary;\nexport const secondaryFontXLarge =  fontSize[4] + secondaryLineHeight + \" \" + fonts.secondary;\nexport const secondaryFontXXLarge =  fontSize[5] + secondaryLineHeight + \" \" + fonts.secondary;\n", "const common = {\n  black: '#000',\n  white: '#fff'\n};\nexport default common;", "const red = {\n  50: '#ffebee',\n  100: '#ffcdd2',\n  200: '#ef9a9a',\n  300: '#e57373',\n  400: '#ef5350',\n  500: '#f44336',\n  600: '#e53935',\n  700: '#d32f2f',\n  800: '#c62828',\n  900: '#b71c1c',\n  A100: '#ff8a80',\n  A200: '#ff5252',\n  A400: '#ff1744',\n  A700: '#d50000'\n};\nexport default red;", "const purple = {\n  50: '#f3e5f5',\n  100: '#e1bee7',\n  200: '#ce93d8',\n  300: '#ba68c8',\n  400: '#ab47bc',\n  500: '#9c27b0',\n  600: '#8e24aa',\n  700: '#7b1fa2',\n  800: '#6a1b9a',\n  900: '#4a148c',\n  A100: '#ea80fc',\n  A200: '#e040fb',\n  A400: '#d500f9',\n  A700: '#aa00ff'\n};\nexport default purple;", "const blue = {\n  50: '#e3f2fd',\n  100: '#bbdefb',\n  200: '#90caf9',\n  300: '#64b5f6',\n  400: '#42a5f5',\n  500: '#2196f3',\n  600: '#1e88e5',\n  700: '#1976d2',\n  800: '#1565c0',\n  900: '#0d47a1',\n  A100: '#82b1ff',\n  A200: '#448aff',\n  A400: '#2979ff',\n  A700: '#2962ff'\n};\nexport default blue;", "const lightBlue = {\n  50: '#e1f5fe',\n  100: '#b3e5fc',\n  200: '#81d4fa',\n  300: '#4fc3f7',\n  400: '#29b6f6',\n  500: '#03a9f4',\n  600: '#039be5',\n  700: '#0288d1',\n  800: '#0277bd',\n  900: '#01579b',\n  A100: '#80d8ff',\n  A200: '#40c4ff',\n  A400: '#00b0ff',\n  A700: '#0091ea'\n};\nexport default lightBlue;", "const green = {\n  50: '#e8f5e9',\n  100: '#c8e6c9',\n  200: '#a5d6a7',\n  300: '#81c784',\n  400: '#66bb6a',\n  500: '#4caf50',\n  600: '#43a047',\n  700: '#388e3c',\n  800: '#2e7d32',\n  900: '#1b5e20',\n  A100: '#b9f6ca',\n  A200: '#69f0ae',\n  A400: '#00e676',\n  A700: '#00c853'\n};\nexport default green;", "const orange = {\n  50: '#fff3e0',\n  100: '#ffe0b2',\n  200: '#ffcc80',\n  300: '#ffb74d',\n  400: '#ffa726',\n  500: '#ff9800',\n  600: '#fb8c00',\n  700: '#f57c00',\n  800: '#ef6c00',\n  900: '#e65100',\n  A100: '#ffd180',\n  A200: '#ffab40',\n  A400: '#ff9100',\n  A700: '#ff6d00'\n};\nexport default orange;", "const grey = {\n  50: '#fafafa',\n  100: '#f5f5f5',\n  200: '#eeeeee',\n  300: '#e0e0e0',\n  400: '#bdbdbd',\n  500: '#9e9e9e',\n  600: '#757575',\n  700: '#616161',\n  800: '#424242',\n  900: '#212121',\n  A100: '#f5f5f5',\n  A200: '#eeeeee',\n  A400: '#bdbdbd',\n  A700: '#616161'\n};\nexport default grey;", "export { default as common } from './common';\nexport { default as red } from './red';\nexport { default as pink } from './pink';\nexport { default as purple } from './purple';\nexport { default as deepPurple } from './deepPurple';\nexport { default as indigo } from './indigo';\nexport { default as blue } from './blue';\nexport { default as lightBlue } from './lightBlue';\nexport { default as cyan } from './cyan';\nexport { default as teal } from './teal';\nexport { default as green } from './green';\nexport { default as lightGreen } from './lightGreen';\nexport { default as lime } from './lime';\nexport { default as yellow } from './yellow';\nexport { default as amber } from './amber';\nexport { default as orange } from './orange';\nexport { default as deepOrange } from './deepOrange';\nexport { default as brown } from './brown';\nexport { default as grey } from './grey';\nexport { default as blueGrey } from './blueGrey';", "export default function chainPropTypes(propType1, propType2) {\n  if (process.env.NODE_ENV === 'production') {\n    return () => null;\n  }\n  return function validate(...args) {\n    return propType1(...args) || propType2(...args);\n  };\n}", "export { default } from './chainPropTypes';", "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/esm/extends\";\nimport * as React from 'react';\n\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n  if (typeof item !== 'object' || item === null) {\n    return false;\n  }\n  const prototype = Object.getPrototypeOf(item);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n  if ( /*#__PURE__*/React.isValidElement(source) || !isPlainObject(source)) {\n    return source;\n  }\n  const output = {};\n  Object.keys(source).forEach(key => {\n    output[key] = deepClone(source[key]);\n  });\n  return output;\n}\nexport default function deepmerge(target, source, options = {\n  clone: true\n}) {\n  const output = options.clone ? _extends({}, target) : target;\n  if (isPlainObject(target) && isPlainObject(source)) {\n    Object.keys(source).forEach(key => {\n      if ( /*#__PURE__*/React.isValidElement(source[key])) {\n        output[key] = source[key];\n      } else if (isPlainObject(source[key]) &&\n      // Avoid prototype pollution\n      Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n        // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n        output[key] = deepmerge(target[key], source[key], options);\n      } else if (options.clone) {\n        output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n      } else {\n        output[key] = source[key];\n      }\n    });\n  }\n  return output;\n}", "export { default } from './deepmerge';\nexport * from './deepmerge';", "import PropTypes from 'prop-types';\nimport chainPropTypes from '../chainPropTypes';\nfunction isClassComponent(elementType) {\n  // elementType.prototype?.isReactComponent\n  const {\n    prototype = {}\n  } = elementType;\n  return Boolean(prototype.isReactComponent);\n}\nfunction acceptingRef(props, propName, componentName, location, propFullName) {\n  const element = props[propName];\n  const safePropName = propFullName || propName;\n  if (element == null ||\n  // When server-side rendering React doesn't warn either.\n  // This is not an accurate check for SSR.\n  // This is only in place for Emotion compat.\n  // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n  typeof window === 'undefined') {\n    return null;\n  }\n  let warningHint;\n  const elementType = element.type;\n  /**\n   * Blacklisting instead of whitelisting\n   *\n   * Blacklisting will miss some components, such as React.Fragment. Those will at least\n   * trigger a warning in React.\n   * We can't whitelist because there is no safe way to detect React.forwardRef\n   * or class components. \"Safe\" means there's no public API.\n   *\n   */\n  if (typeof elementType === 'function' && !isClassComponent(elementType)) {\n    warningHint = 'Did you accidentally use a plain function component for an element instead?';\n  }\n  if (warningHint !== undefined) {\n    return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n  }\n  return null;\n}\nconst elementAcceptingRef = chainPropTypes(PropTypes.element, acceptingRef);\nelementAcceptingRef.isRequired = chainPropTypes(PropTypes.element.isRequired, acceptingRef);\nexport default elementAcceptingRef;", "export { default } from './elementAcceptingRef';", "import PropTypes from 'prop-types';\nimport chainPropTypes from '../chainPropTypes';\nfunction isClassComponent(elementType) {\n  // elementType.prototype?.isReactComponent\n  const {\n    prototype = {}\n  } = elementType;\n  return Boolean(prototype.isReactComponent);\n}\nfunction elementTypeAcceptingRef(props, propName, componentName, location, propFullName) {\n  const propValue = props[propName];\n  const safePropName = propFullName || propName;\n  if (propValue == null ||\n  // When server-side rendering React doesn't warn either.\n  // This is not an accurate check for SSR.\n  // This is only in place for emotion compat.\n  // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n  typeof window === 'undefined') {\n    return null;\n  }\n  let warningHint;\n\n  /**\n   * Blacklisting instead of whitelisting\n   *\n   * Blacklisting will miss some components, such as React.Fragment. Those will at least\n   * trigger a warning in React.\n   * We can't whitelist because there is no safe way to detect React.forwardRef\n   * or class components. \"Safe\" means there's no public API.\n   *\n   */\n  if (typeof propValue === 'function' && !isClassComponent(propValue)) {\n    warningHint = 'Did you accidentally provide a plain function component instead?';\n  }\n  if (warningHint !== undefined) {\n    return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element type that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n  }\n  return null;\n}\nexport default chainPropTypes(PropTypes.elementType, elementTypeAcceptingRef);", "export { default } from './elementTypeAcceptingRef';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\n// This module is based on https://github.com/airbnb/prop-types-exact repository.\n// However, in order to reduce the number of dependencies and to remove some extra safe checks\n// the module was forked.\n\nconst specialProperty = 'exact-prop: \\u200b';\nexport default function exactProp(propTypes) {\n  if (process.env.NODE_ENV === 'production') {\n    return propTypes;\n  }\n  return _extends({}, propTypes, {\n    [specialProperty]: props => {\n      const unsupportedProps = Object.keys(props).filter(prop => !propTypes.hasOwnProperty(prop));\n      if (unsupportedProps.length > 0) {\n        return new Error(`The following props are not supported: ${unsupportedProps.map(prop => `\\`${prop}\\``).join(', ')}. Please remove them.`);\n      }\n      return null;\n    }\n  });\n}", "export { default } from './exactProp';", "/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function typeOf(object) {\n      if (\"object\" === typeof object && null !== object) {\n        var $$typeof = object.$$typeof;\n        switch ($$typeof) {\n          case REACT_ELEMENT_TYPE:\n            switch (((object = object.type), object)) {\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              case REACT_VIEW_TRANSITION_TYPE:\n                return object;\n              default:\n                switch (((object = object && object.$$typeof), object)) {\n                  case REACT_CONTEXT_TYPE:\n                  case REACT_FORWARD_REF_TYPE:\n                  case REACT_LAZY_TYPE:\n                  case REACT_MEMO_TYPE:\n                    return object;\n                  case REACT_CONSUMER_TYPE:\n                    return object;\n                  default:\n                    return $$typeof;\n                }\n            }\n          case REACT_PORTAL_TYPE:\n            return $$typeof;\n        }\n      }\n    }\n    var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n      REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n      REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n      REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n      REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n      REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n      REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n      REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n      REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n      REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n      REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n      REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n      REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n      REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\n    exports.ContextConsumer = REACT_CONSUMER_TYPE;\n    exports.ContextProvider = REACT_CONTEXT_TYPE;\n    exports.Element = REACT_ELEMENT_TYPE;\n    exports.ForwardRef = REACT_FORWARD_REF_TYPE;\n    exports.Fragment = REACT_FRAGMENT_TYPE;\n    exports.Lazy = REACT_LAZY_TYPE;\n    exports.Memo = REACT_MEMO_TYPE;\n    exports.Portal = REACT_PORTAL_TYPE;\n    exports.Profiler = REACT_PROFILER_TYPE;\n    exports.StrictMode = REACT_STRICT_MODE_TYPE;\n    exports.Suspense = REACT_SUSPENSE_TYPE;\n    exports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\n    exports.isContextConsumer = function (object) {\n      return typeOf(object) === REACT_CONSUMER_TYPE;\n    };\n    exports.isContextProvider = function (object) {\n      return typeOf(object) === REACT_CONTEXT_TYPE;\n    };\n    exports.isElement = function (object) {\n      return (\n        \"object\" === typeof object &&\n        null !== object &&\n        object.$$typeof === REACT_ELEMENT_TYPE\n      );\n    };\n    exports.isForwardRef = function (object) {\n      return typeOf(object) === REACT_FORWARD_REF_TYPE;\n    };\n    exports.isFragment = function (object) {\n      return typeOf(object) === REACT_FRAGMENT_TYPE;\n    };\n    exports.isLazy = function (object) {\n      return typeOf(object) === REACT_LAZY_TYPE;\n    };\n    exports.isMemo = function (object) {\n      return typeOf(object) === REACT_MEMO_TYPE;\n    };\n    exports.isPortal = function (object) {\n      return typeOf(object) === REACT_PORTAL_TYPE;\n    };\n    exports.isProfiler = function (object) {\n      return typeOf(object) === REACT_PROFILER_TYPE;\n    };\n    exports.isStrictMode = function (object) {\n      return typeOf(object) === REACT_STRICT_MODE_TYPE;\n    };\n    exports.isSuspense = function (object) {\n      return typeOf(object) === REACT_SUSPENSE_TYPE;\n    };\n    exports.isSuspenseList = function (object) {\n      return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n    };\n    exports.isValidElementType = function (type) {\n      return \"string\" === typeof type ||\n        \"function\" === typeof type ||\n        type === REACT_FRAGMENT_TYPE ||\n        type === REACT_PROFILER_TYPE ||\n        type === REACT_STRICT_MODE_TYPE ||\n        type === REACT_SUSPENSE_TYPE ||\n        type === REACT_SUSPENSE_LIST_TYPE ||\n        (\"object\" === typeof type &&\n          null !== type &&\n          (type.$$typeof === REACT_LAZY_TYPE ||\n            type.$$typeof === REACT_MEMO_TYPE ||\n            type.$$typeof === REACT_CONTEXT_TYPE ||\n            type.$$typeof === REACT_CONSUMER_TYPE ||\n            type.$$typeof === REACT_FORWARD_REF_TYPE ||\n            type.$$typeof === REACT_CLIENT_REFERENCE ||\n            void 0 !== type.getModuleId))\n        ? !0\n        : !1;\n    };\n    exports.typeOf = typeOf;\n  })();\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n", "import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n  const match = `${fn}`.match(fnNameMatchRegex);\n  const name = match && match[1];\n  return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n  return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  const functionName = getFunctionComponentName(innerType);\n  return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n  if (Component == null) {\n    return undefined;\n  }\n  if (typeof Component === 'string') {\n    return Component;\n  }\n  if (typeof Component === 'function') {\n    return getFunctionComponentName(Component, 'Component');\n  }\n\n  // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n  if (typeof Component === 'object') {\n    switch (Component.$$typeof) {\n      case ForwardRef:\n        return getWrappedName(Component, Component.render, 'ForwardRef');\n      case Memo:\n        return getWrappedName(Component, Component.type, 'memo');\n      default:\n        return undefined;\n    }\n  }\n  return undefined;\n}", "export { default } from './getDisplayName';\nexport * from './getDisplayName';", "export default function HTMLElementType(props, propName, componentName, location, propFullName) {\n  if (process.env.NODE_ENV === 'production') {\n    return null;\n  }\n  const propValue = props[propName];\n  const safePropName = propFullName || propName;\n  if (propValue == null) {\n    return null;\n  }\n  if (propValue && propValue.nodeType !== 1) {\n    return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an HTMLElement.`);\n  }\n  return null;\n}", "export { default } from './HTMLElementType';", "import PropTypes from 'prop-types';\nconst refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);\nexport default refType;", "export { default } from './refType';", "import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n  if (typeof string !== 'string') {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n  }\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}", "export { default } from './capitalize';", "/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n  return funcs.reduce((acc, func) => {\n    if (func == null) {\n      return acc;\n    }\n    return function chainedFunction(...args) {\n      acc.apply(this, args);\n      func.apply(this, args);\n    };\n  }, () => {});\n}", "export { default } from './createChainedFunction';", "// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n  let timeout;\n  function debounced(...args) {\n    const later = () => {\n      // @ts-ignore\n      func.apply(this, args);\n    };\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n  }\n  debounced.clear = () => {\n    clearTimeout(timeout);\n  };\n  return debounced;\n}", "export { default } from './debounce';\nexport * from './debounce';", "import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n  var _muiName, _element$type;\n  return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n  // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n  // eslint-disable-next-line no-underscore-dangle\n  (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}", "export { default } from './isMuiElement';", "export default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}", "export { default } from './ownerDocument';", "import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n  const doc = ownerDocument(node);\n  return doc.defaultView || window;\n}", "export { default } from './ownerWindow';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n  if (process.env.NODE_ENV === 'production') {\n    return () => null;\n  }\n\n  // eslint-disable-next-line react/forbid-foreign-prop-types\n  const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n  const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n    const propFullNameSafe = propFullName || propName;\n    const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n    if (defaultTypeChecker) {\n      const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n      if (typeCheckerResult) {\n        return typeCheckerResult;\n      }\n    }\n    if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n      return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n    }\n    return null;\n  };\n  return requireProp;\n}", "export { default } from './requirePropFactory';", "/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n}", "export { default } from './setRef';", "'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;", "export { default } from './useEnhancedEffect';", "'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n  const [defaultId, setDefaultId] = React.useState(idOverride);\n  const id = idOverride || defaultId;\n  React.useEffect(() => {\n    if (defaultId == null) {\n      // Fallback to this default id when possible.\n      // Use the incrementing value for client-side rendering only.\n      // We can't use it server-side.\n      // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n      globalId += 1;\n      setDefaultId(`mui-${globalId}`);\n    }\n  }, [defaultId]);\n  return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n  if (maybeReactUseId !== undefined) {\n    const reactId = maybeReactUseId();\n    return idOverride != null ? idOverride : reactId;\n  }\n  // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n  return useGlobalId(idOverride);\n}", "export { default } from './useId';", "export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n  if (process.env.NODE_ENV === 'production') {\n    return null;\n  }\n  const propFullNameSafe = propFullName || propName;\n  if (typeof props[propName] !== 'undefined') {\n    return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n  }\n  return null;\n}", "export { default } from './unsupportedProp';", "'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n  controlled,\n  default: defaultProp,\n  name,\n  state = 'value'\n}) {\n  // isControlled is ignored in the hook dependency lists as it should never change.\n  const {\n    current: isControlled\n  } = React.useRef(controlled !== undefined);\n  const [valueState, setValue] = React.useState(defaultProp);\n  const value = isControlled ? controlled : valueState;\n  if (process.env.NODE_ENV !== 'production') {\n    React.useEffect(() => {\n      if (isControlled !== (controlled !== undefined)) {\n        console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n      }\n    }, [state, name, controlled]);\n    const {\n      current: defaultValue\n    } = React.useRef(defaultProp);\n    React.useEffect(() => {\n      if (!isControlled && !Object.is(defaultValue, defaultProp)) {\n        console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n      }\n    }, [JSON.stringify(defaultProp)]);\n  }\n  const setValueIfUncontrolled = React.useCallback(newValue => {\n    if (!isControlled) {\n      setValue(newValue);\n    }\n  }, []);\n  return [value, setValueIfUncontrolled];\n}", "export { default } from './useControlled';", "'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n  const ref = React.useRef(fn);\n  useEnhancedEffect(() => {\n    ref.current = fn;\n  });\n  return React.useRef((...args) =>\n  // @ts-expect-error hide `this`\n  (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;", "export { default } from './useEventCallback';", "'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n  /**\n   * This will create a new function if the refs passed to this hook change and are all defined.\n   * This means react will call the old forkRef with `null` and the new forkRef\n   * with the ref. Cleanup naturally emerges from this behavior.\n   */\n  return React.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return instance => {\n      refs.forEach(ref => {\n        setRef(ref, instance);\n      });\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}", "export { default } from './useForkRef';", "'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n  constructor() {\n    this.currentId = null;\n    this.clear = () => {\n      if (this.currentId !== null) {\n        clearTimeout(this.currentId);\n        this.currentId = null;\n      }\n    };\n    this.disposeEffect = () => {\n      return this.clear;\n    };\n  }\n  static create() {\n    return new Timeout();\n  }\n  /**\n   * Executes `fn` after `delay`, clearing any previously scheduled call.\n   */\n  start(delay, fn) {\n    this.clear();\n    this.currentId = setTimeout(() => {\n      this.currentId = null;\n      fn();\n    }, delay);\n  }\n}\nexport default function useTimeout() {\n  const timeout = useLazyRef(Timeout.create).current;\n  useOnMount(timeout.disposeEffect);\n  return timeout;\n}", "'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n  text: true,\n  search: true,\n  url: true,\n  tel: true,\n  email: true,\n  password: true,\n  number: true,\n  date: true,\n  month: true,\n  week: true,\n  time: true,\n  datetime: true,\n  'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n  const {\n    type,\n    tagName\n  } = node;\n  if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n    return true;\n  }\n  if (tagName === 'TEXTAREA' && !node.readOnly) {\n    return true;\n  }\n  if (node.isContentEditable) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n  if (event.metaKey || event.altKey || event.ctrlKey) {\n    return;\n  }\n  hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n  hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n  if (this.visibilityState === 'hidden') {\n    // If the tab becomes active again, the browser will handle calling focus\n    // on the element (Safari actually calls it twice).\n    // If this tab change caused a blur on an element with focus-visible,\n    // re-apply the class when the user switches back to the tab.\n    if (hadFocusVisibleRecently) {\n      hadKeyboardEvent = true;\n    }\n  }\n}\nfunction prepare(doc) {\n  doc.addEventListener('keydown', handleKeyDown, true);\n  doc.addEventListener('mousedown', handlePointerDown, true);\n  doc.addEventListener('pointerdown', handlePointerDown, true);\n  doc.addEventListener('touchstart', handlePointerDown, true);\n  doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n  doc.removeEventListener('keydown', handleKeyDown, true);\n  doc.removeEventListener('mousedown', handlePointerDown, true);\n  doc.removeEventListener('pointerdown', handlePointerDown, true);\n  doc.removeEventListener('touchstart', handlePointerDown, true);\n  doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n  const {\n    target\n  } = event;\n  try {\n    return target.matches(':focus-visible');\n  } catch (error) {\n    // Browsers not implementing :focus-visible will throw a SyntaxError.\n    // We use our own heuristic for those browsers.\n    // Rethrow might be better if it's not the expected error but do we really\n    // want to crash if focus-visible malfunctioned?\n  }\n\n  // No need for validFocusTarget check. The user does that by attaching it to\n  // focusable events only.\n  return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n  const ref = React.useCallback(node => {\n    if (node != null) {\n      prepare(node.ownerDocument);\n    }\n  }, []);\n  const isFocusVisibleRef = React.useRef(false);\n\n  /**\n   * Should be called if a blur event is fired\n   */\n  function handleBlurVisible() {\n    // checking against potential state variable does not suffice if we focus and blur synchronously.\n    // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n    // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n    // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n    // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n    if (isFocusVisibleRef.current) {\n      // To detect a tab/window switch, we look for a blur event followed\n      // rapidly by a visibility change.\n      // If we don't see a visibility change within 100ms, it's probably a\n      // regular focus change.\n      hadFocusVisibleRecently = true;\n      hadFocusVisibleRecentlyTimeout.start(100, () => {\n        hadFocusVisibleRecently = false;\n      });\n      isFocusVisibleRef.current = false;\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Should be called if a blur event is fired\n   */\n  function handleFocusVisible(event) {\n    if (isFocusVisible(event)) {\n      isFocusVisibleRef.current = true;\n      return true;\n    }\n    return false;\n  }\n  return {\n    isFocusVisibleRef,\n    onFocus: handleFocusVisible,\n    onBlur: handleBlurVisible,\n    ref\n  };\n}", "export { default } from './useIsFocusVisible';\nexport * from './useIsFocusVisible';", "// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/488fd8afc535ca3a6ad4dc581f5e89217b6a36ac/js/src/util/scrollbar.js#L14-L18\nexport default function getScrollbarSize(doc) {\n  // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n  const documentWidth = doc.documentElement.clientWidth;\n  return Math.abs(window.innerWidth - documentWidth);\n}", "export { default } from './getScrollbarSize';", "'use client';\n\nimport * as React from 'react';\nconst usePreviousProps = value => {\n  const ref = React.useRef({});\n  React.useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n};\nexport default usePreviousProps;", "export { default } from './usePreviousProps';", "const visuallyHidden = {\n  border: 0,\n  clip: 'rect(0 0 0 0)',\n  height: '1px',\n  margin: '-1px',\n  overflow: 'hidden',\n  padding: 0,\n  position: 'absolute',\n  whiteSpace: 'nowrap',\n  width: '1px'\n};\nexport default visuallyHidden;", "export { default } from './visuallyHidden';", "export function getTypeByValue(value) {\n  const valueType = typeof value;\n  switch (valueType) {\n    case 'number':\n      if (Number.isNaN(value)) {\n        return 'NaN';\n      }\n      if (!Number.isFinite(value)) {\n        return 'Infinity';\n      }\n      if (value !== Math.floor(value)) {\n        return 'float';\n      }\n      return 'number';\n    case 'object':\n      if (value === null) {\n        return 'null';\n      }\n      return value.constructor.name;\n    default:\n      return valueType;\n  }\n}\n\n// IE 11 support\nfunction ponyfillIsInteger(x) {\n  // eslint-disable-next-line no-restricted-globals\n  return typeof x === 'number' && isFinite(x) && Math.floor(x) === x;\n}\nconst isInteger = Number.isInteger || ponyfillIsInteger;\nfunction requiredInteger(props, propName, componentName, location) {\n  const propValue = props[propName];\n  if (propValue == null || !isInteger(propValue)) {\n    const propType = getTypeByValue(propValue);\n    return new RangeError(`Invalid ${location} \\`${propName}\\` of type \\`${propType}\\` supplied to \\`${componentName}\\`, expected \\`integer\\`.`);\n  }\n  return null;\n}\nfunction validator(props, propName, ...other) {\n  const propValue = props[propName];\n  if (propValue === undefined) {\n    return null;\n  }\n  return requiredInteger(props, propName, ...other);\n}\nfunction validatorNoop() {\n  return null;\n}\nvalidator.isRequired = requiredInteger;\nvalidatorNoop.isRequired = validatorNoop;\nexport default process.env.NODE_ENV === 'production' ? validatorNoop : validator;", "export { default } from './integerPropType';\nexport * from './integerPropType';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n  const output = _extends({}, props);\n  Object.keys(defaultProps).forEach(propName => {\n    if (propName.toString().match(/^(components|slots)$/)) {\n      output[propName] = _extends({}, defaultProps[propName], output[propName]);\n    } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n      const defaultSlotProps = defaultProps[propName] || {};\n      const slotProps = props[propName];\n      output[propName] = {};\n      if (!slotProps || !Object.keys(slotProps)) {\n        // Reduce the iteration if the slot props is empty\n        output[propName] = defaultSlotProps;\n      } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n        // Reduce the iteration if the default slot props is empty\n        output[propName] = slotProps;\n      } else {\n        output[propName] = _extends({}, slotProps);\n        Object.keys(defaultSlotProps).forEach(slotPropName => {\n          output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n        });\n      }\n    } else if (output[propName] === undefined) {\n      output[propName] = defaultProps[propName];\n    }\n  });\n  return output;\n}", "export { default } from './resolveProps';", "export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n  const output = {};\n  Object.keys(slots).forEach(\n  // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n  // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n  slot => {\n    output[slot] = slots[slot].reduce((acc, key) => {\n      if (key) {\n        const utilityClass = getUtilityClass(key);\n        if (utilityClass !== '') {\n          acc.push(utilityClass);\n        }\n        if (classes && classes[key]) {\n          acc.push(classes[key]);\n        }\n      }\n      return acc;\n    }, []).join(' ');\n  });\n  return output;\n}", "export { default } from './composeClasses';", "const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n  let generate = defaultGenerator;\n  return {\n    configure(generator) {\n      generate = generator;\n    },\n    generate(componentName) {\n      return generate(componentName);\n    },\n    reset() {\n      generate = defaultGenerator;\n    }\n  };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;", "export { default } from './ClassNameGenerator';", "import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n  active: 'active',\n  checked: 'checked',\n  completed: 'completed',\n  disabled: 'disabled',\n  error: 'error',\n  expanded: 'expanded',\n  focused: 'focused',\n  focusVisible: 'focusVisible',\n  open: 'open',\n  readOnly: 'readOnly',\n  required: 'required',\n  selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n  const globalStateClass = globalStateClasses[slot];\n  return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n  return globalStateClasses[slot] !== undefined;\n}", "export { default } from './generateUtilityClass';\nexport * from './generateUtilityClass';", "import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n  const result = {};\n  slots.forEach(slot => {\n    result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n  });\n  return result;\n}", "export { default } from './generateUtilityClasses';", "function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n  return Math.max(min, Math.min(val, max));\n}\nexport default clamp;", "export { default } from './clamp';", "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 };", "export {};", "export { default as chainPropTypes } from './chainPropTypes';\nexport { default as deepmerge } from './deepmerge';\nexport { isPlainObject } from './deepmerge';\nexport { default as elementAcceptingRef } from './elementAcceptingRef';\nexport { default as elementTypeAcceptingRef } from './elementTypeAcceptingRef';\nexport { default as exactProp } from './exactProp';\nexport { default as formatMuiErrorMessage } from './formatMuiErrorMessage';\nexport { default as getDisplayName } from './getDisplayName';\nexport { default as HTMLElementType } from './HTMLElementType';\nexport { default as ponyfillGlobal } from './ponyfillGlobal';\nexport { default as refType } from './refType';\nexport { default as unstable_capitalize } from './capitalize';\nexport { default as unstable_createChainedFunction } from './createChainedFunction';\nexport { default as unstable_debounce } from './debounce';\nexport { default as unstable_deprecatedPropType } from './deprecatedPropType';\nexport { default as unstable_isMuiElement } from './isMuiElement';\nexport { default as unstable_ownerDocument } from './ownerDocument';\nexport { default as unstable_ownerWindow } from './ownerWindow';\nexport { default as unstable_requirePropFactory } from './requirePropFactory';\nexport { default as unstable_setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unstable_unsupportedProp } from './unsupportedProp';\nexport { default as unstable_useControlled } from './useControlled';\nexport { default as unstable_useEventCallback } from './useEventCallback';\nexport { default as unstable_useForkRef } from './useForkRef';\nexport { default as unstable_useLazyRef } from './useLazyRef';\nexport { default as unstable_useTimeout, Timeout as unstable_Timeout } from './useTimeout';\nexport { default as unstable_useOnMount } from './useOnMount';\nexport { default as unstable_useIsFocusVisible } from './useIsFocusVisible';\nexport { default as unstable_getScrollbarSize } from './getScrollbarSize';\nexport { detectScrollType as unstable_detectScrollType, getNormalizedScrollLeft as unstable_getNormalizedScrollLeft } from './scrollLeft';\nexport { default as usePreviousProps } from './usePreviousProps';\nexport { default as getValidReactChildren } from './getValidReactChildren';\nexport { default as visuallyHidden } from './visuallyHidden';\nexport { default as integerPropType } from './integerPropType';\nexport { default as internal_resolveProps } from './resolveProps';\nexport { default as unstable_composeClasses } from './composeClasses';\nexport { default as unstable_generateUtilityClass } from './generateUtilityClass';\nexport { isGlobalState as unstable_isGlobalState } from './generateUtilityClass';\nexport * from './generateUtilityClass';\nexport { default as unstable_generateUtilityClasses } from './generateUtilityClasses';\nexport { default as unstable_ClassNameGenerator } from './ClassNameGenerator';\nexport { default as clamp } from './clamp';\nexport { default as unstable_useSlotProps } from './useSlotProps';\nexport { default as unstable_resolveComponentProps } from './resolveComponentProps';\nexport { default as unstable_extractEventHandlers } from './extractEventHandlers';\nexport { default as unstable_getReactElementRef } from './getReactElementRef';\nexport * from './types';", "function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport { memoize as default };\n", "import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n", "var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil \u2764\uFE0F\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      return document.styleSheets[i];\n    }\n  } // this function should always return with a value\n  // TS can't understand it though so we make it stop complaining here\n\n\n  return undefined;\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  // Using Node instead of HTMLElement since container may be a ShadowRoot\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    this.tags.forEach(function (tag) {\n      var _tag$parentNode;\n\n      return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n", "export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n", "/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n", "import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n", "import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n", "import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace, substr, match} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @param {object[]} children\n * @return {string}\n */\nexport function prefix (value, length, children) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599: case 4855:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t\treturn WEBKIT + value + value\n\t\t// tab-size\n\t\tcase 4789:\n\t\t\treturn MOZ + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t\t// default: fallthrough to below\n\t\t\t}\n\t\t// flex, flex-direction, scroll-snap-type, writing-mode\n\t\tcase 6828: case 4268: case 2903:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/g, '') + (!match(value, /flex-|baseline/) ? MS + 'grid-row-' + replace(value, /flex-|-self/g, '') : '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/g, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value\n\t\t// justify-self\n\t\tcase 4200:\n\t\t\tif (!match(value, /flex-|baseline/)) return MS + 'grid-column-align' + substr(value, length) + value\n\t\t\tbreak\n\t\t// grid-template-(columns|rows)\n\t\tcase 2592: case 3360:\n\t\t\treturn MS + replace(value, 'template-', '') + value\n\t\t// grid-(row|column)-start\n\t\tcase 4384: case 3616:\n\t\t\tif (children && children.some(function (element, index) { return length = index, match(element.props, /grid-\\w+-end/) })) {\n\t\t\t\treturn ~indexof(value + (children = children[length].value), 'span') ? value : (MS + replace(value, '-start', '') + value + MS + 'grid-row-span:' + (~indexof(children, 'span') ? match(children, /\\d+/) : +match(children, /\\d+/) - +match(value, /\\d+/)) + ';')\n\t\t\t}\n\t\t\treturn MS + replace(value, '-start', '') + value\n\t\t// grid-(row|column)-end\n\t\tcase 4896: case 4128:\n\t\t\treturn (children && children.some(function (element) { return match(element.props, /grid-\\w+-start/) })) ? value : MS + replace(replace(value, '-end', '-span'), 'span ', '') + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length, children) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// grid-(column|row)\n\t\tcase 5152: case 5920:\n\t\t\treturn replace(value, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (MS + a + ':' + b + f) + (c ? (MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// stick(y)?\n\t\t\tif (charat(value, length + 6) === 121)\n\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\tbreak\n\t\t// display: (flex|inline-flex|grid|inline-grid)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, charat(value, 14) === 45 ? 18 : 11)) {\n\t\t\t\t// (inline-)?fle(x)\n\t\t\t\tcase 120:\n\t\t\t\t\treturn replace(value, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t\t// (inline-)?gri(d)\n\t\t\t\tcase 100:\n\t\t\t\t\treturn replace(value, ':', ':' + MS) + value\n\t\t\t}\n\t\t\tbreak\n\t\t// scroll-margin, scroll-margin-(top|right|bottom|left)\n\t\tcase 5719: case 2647: case 2135: case 3927: case 2391:\n\t\t\treturn replace(value, 'scroll-', 'scroll-snap-') + value\n\t}\n\n\treturn value\n}\n", "import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n", "import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n", "export * from './src/Enum.js'\nexport * from './src/Utility.js'\nexport * from './src/Parser.js'\nexport * from './src/Prefixer.js'\nexport * from './src/Tokenizer.js'\nexport * from './src/Serializer.js'\nexport * from './src/Middleware.js'\n", "var weakMemoize = function weakMemoize(func) {\n  var cache = new WeakMap();\n  return function (arg) {\n    if (cache.has(arg)) {\n      // Use non-null assertion because we just checked that the cache `has` it\n      // This allows us to remove `undefined` from the return value\n      return cache.get(arg);\n    }\n\n    var ret = func(arg);\n    cache.set(arg, ret);\n    return ret;\n  };\n};\n\nexport { weakMemoize as default };\n", "import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n  var previous = 0;\n  var character = 0;\n\n  while (true) {\n    previous = character;\n    character = peek(); // &\\f\n\n    if (previous === 38 && character === 12) {\n      points[index] = 1;\n    }\n\n    if (token(character)) {\n      break;\n    }\n\n    next();\n  }\n\n  return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifierWithPointTracking(position - 1, points, index);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n\n  var value = element.value;\n  var parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n  switch (hash(value, length)) {\n    // color-adjust\n    case 5103:\n      return WEBKIT + 'print-' + value + value;\n    // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return WEBKIT + value + value;\n    // appearance, user-select, transform, hyphens, text-size-adjust\n\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return WEBKIT + value + MOZ + value + MS + value + value;\n    // flex, flex-direction\n\n    case 6828:\n    case 4268:\n      return WEBKIT + value + MS + value + value;\n    // order\n\n    case 6165:\n      return WEBKIT + value + MS + 'flex-' + value + value;\n    // align-items\n\n    case 5187:\n      return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n    // align-self\n\n    case 5443:\n      return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n    // align-content\n\n    case 4675:\n      return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n    // flex-shrink\n\n    case 5548:\n      return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n    // flex-basis\n\n    case 5292:\n      return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n    // flex-grow\n\n    case 6060:\n      return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n    // transition\n\n    case 4554:\n      return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n    // cursor\n\n    case 6187:\n      return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n    // background, background-image\n\n    case 5495:\n    case 3959:\n      return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n    // justify-content\n\n    case 4968:\n      return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n    // (margin|padding)-inline-(start|end)\n\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n    // (min|max)?(width|height|inline-size|block-size)\n\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      // stretch, max-content, min-content, fill-available\n      if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n        // (m)ax-content, (m)in-content\n        case 109:\n          // -\n          if (charat(value, length + 4) !== 45) break;\n        // (f)ill-available, (f)it-content\n\n        case 102:\n          return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n        // (s)tretch\n\n        case 115:\n          return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n      }\n      break;\n    // position: sticky\n\n    case 4949:\n      // (s)ticky?\n      if (charat(value, length + 1) !== 115) break;\n    // display: (flex|inline-flex)\n\n    case 6444:\n      switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n        // stic(k)y\n        case 107:\n          return replace(value, ':', ':' + WEBKIT) + value;\n        // (inline-)?fl(e)x\n\n        case 101:\n          return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n      }\n\n      break;\n    // writing-mode\n\n    case 5936:\n      switch (charat(value, length + 11)) {\n        // vertical-l(r)\n        case 114:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n        // vertical-r(l)\n\n        case 108:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n        // horizontal(-)tb\n\n        case 45:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n      }\n\n      return WEBKIT + value + MS + value + value;\n  }\n\n  return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n  if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n    case DECLARATION:\n      element[\"return\"] = prefix(element.value, element.length);\n      break;\n\n    case KEYFRAMES:\n      return serialize([copy(element, {\n        value: replace(element.value, '@', '@' + WEBKIT)\n      })], callback);\n\n    case RULESET:\n      if (element.length) return combine(element.props, function (value) {\n        switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n          // :read-(only|write)\n          case ':read-only':\n          case ':read-write':\n            return serialize([copy(element, {\n              props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n            })], callback);\n          // :placeholder\n\n          case '::placeholder':\n            return serialize([copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n            })], callback);\n        }\n\n        return '';\n      });\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n  var key = options.key;\n\n  if (key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  var inserted = {};\n  var container;\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      currentSheet = sheet;\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\nexport { createCache as default };\n", "var weakMemoize = function weakMemoize(func) {\n  // $FlowFixMe flow doesn't include all non-primitive types as allowed for weakmaps\n  var cache = new WeakMap();\n  return function (arg) {\n    if (cache.has(arg)) {\n      // $FlowFixMe\n      return cache.get(arg);\n    }\n\n    var ret = func(arg);\n    cache.set(arg, ret);\n    return ret;\n  };\n};\n\nexport { weakMemoize as default };\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", "var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className] + \";\");\n    } else if (className) {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false ) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n", "/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n", "var unitlessKeys = {\n  animationIterationCount: 1,\n  aspectRatio: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  scale: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n", "import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  var componentSelector = interpolation;\n\n  if (componentSelector.__emotion_styles !== undefined) {\n\n    return componentSelector;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        var keyframes = interpolation;\n\n        if (keyframes.anim === 1) {\n          cursor = {\n            name: keyframes.name,\n            styles: keyframes.styles,\n            next: cursor\n          };\n          return keyframes.name;\n        }\n\n        var serializedStyles = interpolation;\n\n        if (serializedStyles.styles !== undefined) {\n          var next = serializedStyles.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = serializedStyles.styles + \";\";\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        }\n\n        break;\n      }\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  var asString = interpolation;\n\n  if (registered == null) {\n    return asString;\n  }\n\n  var cached = registered[asString];\n  return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var key in obj) {\n      var value = obj[key];\n\n      if (typeof value !== 'object') {\n        var asString = value;\n\n        if (registered != null && registered[asString] !== undefined) {\n          string += key + \"{\" + registered[asString] + \"}\";\n        } else if (isProcessableValue(asString)) {\n          string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n        }\n      } else {\n        if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n          throw new Error(noComponentSelectorMessage);\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n\n                string += key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    var asTemplateStringsArr = strings;\n\n    styles += asTemplateStringsArr[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      var templateStringsArr = strings;\n\n      styles += templateStringsArr[i];\n    }\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n}\n\nexport { serializeStyles };\n", "import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n  return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n", "import { createContext, useContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n  EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n  return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n  // $FlowFixMe\n  return /*#__PURE__*/forwardRef(function (props, ref) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n  ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n  return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n      throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n    }\n\n    return mergedTheme;\n  }\n\n  if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n    throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n  }\n\n  return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n  var theme = useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme(Component) {\n  var componentName = Component.displayName || Component.name || 'Component';\n\n  var render = function render(props, ref) {\n    var theme = useContext(ThemeContext);\n    return /*#__PURE__*/createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  }; // $FlowFixMe\n\n\n  var WithTheme = /*#__PURE__*/forwardRef(render);\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n  // The match may be something like 'Object.createEmotionProps' or\n  // 'Loader.prototype.render'\n  var parts = functionName.split('.');\n  return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n  // V8\n  var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n  if (match) return getLastPart(match[1]); // Safari / Firefox\n\n  match = /^([A-Za-z0-9$.]+)@/.exec(line);\n  if (match) return getLastPart(match[1]);\n  return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n  if (!stackTrace) return undefined;\n  var lines = stackTrace.split('\\n');\n\n  for (var i = 0; i < lines.length; i++) {\n    var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n    if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n    if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n    // uppercase letter\n\n    if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n  }\n\n  return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n  // the label hasn't already been computed\n\n  if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n    var label = getLabelFromStackTrace(new Error().stack);\n    if (label) newProps[labelPropName] = label;\n  }\n\n  return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var WrappedComponent = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles, undefined, useContext(ThemeContext));\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n    cache: cache,\n    serialized: serialized,\n    isStringTag: typeof WrappedComponent === 'string'\n  }), /*#__PURE__*/createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, useTheme as u, withEmotionCache as w };\n", "import { createElement, useContext, useRef, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-6a883da9.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-6a883da9.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.10.6\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": \"./macro.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.10.6\",\n\t\t\"@emotion/cache\": \"^11.10.5\",\n\t\t\"@emotion/serialize\": \"^1.1.1\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.0\",\n\t\t\"@emotion/utils\": \"^1.2.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.0\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.10.6\",\n\t\t\"@emotion/css-prettifier\": \"1.1.1\",\n\t\t\"@emotion/server\": \"11.10.0\",\n\t\t\"@emotion/styled\": \"11.10.6\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": \"./macro.js\"\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], undefined, useContext(ThemeContext));\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = useRef();\n  useInsertionEffectWithLayoutFallback(function () {\n    var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n    var sheet = new cache.sheet.constructor({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false; // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useInsertionEffectWithLayoutFallback(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n              console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n            }\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serializedArr = _ref.serializedArr;\n  var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n\n    for (var i = 0; i < serializedArr.length; i++) {\n      var res = insertStyles(cache, serializedArr[i], false);\n    }\n  });\n\n  return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\n\n  var css = function css() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('css can only be used during render');\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var serialized = serializeStyles(args, cache.registered);\n    serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n    registerStyles(cache, serialized, false);\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n    cache: cache,\n    serializedArr: serializedArr\n  }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n  var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n  if (isBrowser && !isTestEnv) {\n    // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n    var globalContext = // $FlowIgnore\n    typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n    : isBrowser ? window : global;\n    var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n    if (globalContext[globalKey]) {\n      console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n    }\n\n    globalContext[globalKey] = true;\n  }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n", "import _extends from '@babel/runtime/helpers/esm/extends';\nimport { useContext, createElement, Fragment } from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n  return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n  return typeof tag === 'string' && // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n  var shouldForwardProp;\n\n  if (options) {\n    var optionsShouldForwardProp = options.shouldForwardProp;\n    shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n      return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n    } : optionsShouldForwardProp;\n  }\n\n  if (typeof shouldForwardProp !== 'function' && isReal) {\n    shouldForwardProp = tag.__emotion_forwardProp;\n  }\n\n  return shouldForwardProp;\n};\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (tag === undefined) {\n      throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n    }\n  }\n\n  var isReal = tag.__emotion_real === tag;\n  var baseTag = isReal && tag.__emotion_base || tag;\n  var identifierName;\n  var targetClassName;\n\n  if (options !== undefined) {\n    identifierName = options.label;\n    targetClassName = options.target;\n  }\n\n  var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n  var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n  var shouldUseAs = !defaultShouldForwardProp('as');\n  return function () {\n    var args = arguments;\n    var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n    if (identifierName !== undefined) {\n      styles.push(\"label:\" + identifierName + \";\");\n    }\n\n    if (args[0] == null || args[0].raw === undefined) {\n      styles.push.apply(styles, args);\n    } else {\n      if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles.push(args[0][0]);\n      var len = args.length;\n      var i = 1;\n\n      for (; i < len; i++) {\n        if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n          console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n        }\n\n        styles.push(args[i], args[0][i]);\n      }\n    } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n    var Styled = withEmotionCache(function (props, cache, ref) {\n      var FinalTag = shouldUseAs && props.as || baseTag;\n      var className = '';\n      var classInterpolations = [];\n      var mergedProps = props;\n\n      if (props.theme == null) {\n        mergedProps = {};\n\n        for (var key in props) {\n          mergedProps[key] = props[key];\n        }\n\n        mergedProps.theme = useContext(ThemeContext);\n      }\n\n      if (typeof props.className === 'string') {\n        className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n      } else if (props.className != null) {\n        className = props.className + \" \";\n      }\n\n      var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n      className += cache.key + \"-\" + serialized.name;\n\n      if (targetClassName !== undefined) {\n        className += \" \" + targetClassName;\n      }\n\n      var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n      var newProps = {};\n\n      for (var _key in props) {\n        if (shouldUseAs && _key === 'as') continue;\n\n        if ( // $FlowFixMe\n        finalShouldForwardProp(_key)) {\n          newProps[_key] = props[_key];\n        }\n      }\n\n      newProps.className = className;\n      newProps.ref = ref;\n      return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n        cache: cache,\n        serialized: serialized,\n        isStringTag: typeof FinalTag === 'string'\n      }), /*#__PURE__*/createElement(FinalTag, newProps));\n    });\n    Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n    Styled.defaultProps = tag.defaultProps;\n    Styled.__emotion_real = Styled;\n    Styled.__emotion_base = baseTag;\n    Styled.__emotion_styles = styles;\n    Styled.__emotion_forwardProp = shouldForwardProp;\n    Object.defineProperty(Styled, 'toString', {\n      value: function value() {\n        if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n          return 'NO_COMPONENT_SELECTOR';\n        } // $FlowFixMe: coerce undefined to string\n\n\n        return \".\" + targetClassName;\n      }\n    });\n\n    Styled.withComponent = function (nextTag, nextOptions) {\n      return createStyled(nextTag, _extends({}, options, nextOptions, {\n        shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n      })).apply(void 0, styles);\n    };\n\n    return Styled;\n  };\n};\n\nexport default createStyled;\n", "import '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n  // $FlowFixMe: we can ignore this because its exposed type is defined by the CreateStyled type\n  newStyled[tagName] = newStyled(tagName);\n});\n\nexport default newStyled;\n", "/**\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 = Symbol.for('react.module.reference');\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", "'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isEmpty(obj) {\n  return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nexport default function GlobalStyles(props) {\n  const {\n    styles,\n    defaultTheme = {}\n  } = props;\n  const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n  return /*#__PURE__*/_jsx(Global, {\n    styles: globalStyles\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n  defaultTheme: PropTypes.object,\n  styles: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;", "'use client';\n\nexport { default } from './GlobalStyles';", "/**\n * @mui/styled-engine v5.18.0\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nimport { serializeStyles as emSerializeStyles } from '@emotion/serialize';\nexport default function styled(tag, options) {\n  const stylesFactory = emStyled(tag, options);\n  if (process.env.NODE_ENV !== 'production') {\n    return (...styles) => {\n      const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n      if (styles.length === 0) {\n        console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n      } else if (styles.some(style => style === undefined)) {\n        console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n      }\n      return stylesFactory(...styles);\n    };\n  }\n  return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n  // Emotion attaches all the styles as `__emotion_styles`.\n  // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n  if (Array.isArray(tag.__emotion_styles)) {\n    tag.__emotion_styles = processor(tag.__emotion_styles);\n  }\n};\n\n// Emotion only accepts an array, but we want to avoid allocations\nconst wrapper = [];\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_serializeStyles(styles) {\n  wrapper[0] = styles;\n  return emSerializeStyles(wrapper);\n}\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n  const breakpointsAsArray = Object.keys(values).map(key => ({\n    key,\n    val: values[key]\n  })) || [];\n  // Sort in ascending order\n  breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n  return breakpointsAsArray.reduce((acc, obj) => {\n    return _extends({}, acc, {\n      [obj.key]: obj.val\n    });\n  }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n  const {\n      // The breakpoint **start** at this value.\n      // For instance with the first breakpoint xs: [xs, sm).\n      values = {\n        xs: 0,\n        // phone\n        sm: 600,\n        // tablet\n        md: 900,\n        // small laptop\n        lg: 1200,\n        // desktop\n        xl: 1536 // large screen\n      },\n      unit = 'px',\n      step = 5\n    } = breakpoints,\n    other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n  const sortedValues = sortBreakpointsValues(values);\n  const keys = Object.keys(sortedValues);\n  function up(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (min-width:${value}${unit})`;\n  }\n  function down(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (max-width:${value - step / 100}${unit})`;\n  }\n  function between(start, end) {\n    const endIndex = keys.indexOf(end);\n    return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n  }\n  function only(key) {\n    if (keys.indexOf(key) + 1 < keys.length) {\n      return between(key, keys[keys.indexOf(key) + 1]);\n    }\n    return up(key);\n  }\n  function not(key) {\n    // handle first and last key separately, for better readability\n    const keyIndex = keys.indexOf(key);\n    if (keyIndex === 0) {\n      return up(keys[1]);\n    }\n    if (keyIndex === keys.length - 1) {\n      return down(keys[keyIndex]);\n    }\n    return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n  }\n  return _extends({\n    keys,\n    values: sortedValues,\n    up,\n    down,\n    between,\n    only,\n    not,\n    unit\n  }, other);\n}", "const shape = {\n  borderRadius: 4\n};\nexport default shape;", "import PropTypes from 'prop-types';\nconst responsivePropType = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object, PropTypes.array]) : {};\nexport default responsivePropType;", "import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n  if (!item) {\n    return acc;\n  }\n  return deepmerge(acc, item, {\n    clone: false // No need to clone deep, it's way faster.\n  });\n}\nexport default merge;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n  xs: 0,\n  // phone\n  sm: 600,\n  // tablet\n  md: 900,\n  // small laptop\n  lg: 1200,\n  // desktop\n  xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n  // Sorted ASC by size. That's important.\n  // It can't be configured as it's used statically for propTypes.\n  keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n  up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n  const theme = props.theme || {};\n  if (Array.isArray(propValue)) {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return propValue.reduce((acc, item, index) => {\n      acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n      return acc;\n    }, {});\n  }\n  if (typeof propValue === 'object') {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return Object.keys(propValue).reduce((acc, breakpoint) => {\n      // key is breakpoint\n      if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n        const mediaKey = themeBreakpoints.up(breakpoint);\n        acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n      } else {\n        const cssKey = breakpoint;\n        acc[cssKey] = propValue[cssKey];\n      }\n      return acc;\n    }, {});\n  }\n  const output = styleFromPropValue(propValue);\n  return output;\n}\nfunction breakpoints(styleFunction) {\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const newStyleFunction = props => {\n    const theme = props.theme || {};\n    const base = styleFunction(props);\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    const extended = themeBreakpoints.keys.reduce((acc, key) => {\n      if (props[key]) {\n        acc = acc || {};\n        acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n          theme\n        }, props[key]));\n      }\n      return acc;\n    }, null);\n    return merge(base, extended);\n  };\n  newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n    xs: PropTypes.object,\n    sm: PropTypes.object,\n    md: PropTypes.object,\n    lg: PropTypes.object,\n    xl: PropTypes.object\n  }) : {};\n  newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n  return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n  var _breakpointsInput$key;\n  const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n    const breakpointStyleKey = breakpointsInput.up(key);\n    acc[breakpointStyleKey] = {};\n    return acc;\n  }, {});\n  return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n  return breakpointKeys.reduce((acc, key) => {\n    const breakpointOutput = acc[key];\n    const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n    if (isBreakpointUnused) {\n      delete acc[key];\n    }\n    return acc;\n  }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n  const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n  const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n  return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n  // fixed value\n  if (typeof breakpointValues !== 'object') {\n    return {};\n  }\n  const base = {};\n  const breakpointsKeys = Object.keys(themeBreakpoints);\n  if (Array.isArray(breakpointValues)) {\n    breakpointsKeys.forEach((breakpoint, i) => {\n      if (i < breakpointValues.length) {\n        base[breakpoint] = true;\n      }\n    });\n  } else {\n    breakpointsKeys.forEach(breakpoint => {\n      if (breakpointValues[breakpoint] != null) {\n        base[breakpoint] = true;\n      }\n    });\n  }\n  return base;\n}\nexport function resolveBreakpointValues({\n  values: breakpointValues,\n  breakpoints: themeBreakpoints,\n  base: customBase\n}) {\n  const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n  const keys = Object.keys(base);\n  if (keys.length === 0) {\n    return breakpointValues;\n  }\n  let previous;\n  return keys.reduce((acc, breakpoint, i) => {\n    if (Array.isArray(breakpointValues)) {\n      acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n      previous = i;\n    } else if (typeof breakpointValues === 'object') {\n      acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n      previous = breakpoint;\n    } else {\n      acc[breakpoint] = breakpointValues;\n    }\n    return acc;\n  }, {});\n}\nexport default breakpoints;", "import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n  if (!path || typeof path !== 'string') {\n    return null;\n  }\n\n  // Check if CSS variables are used\n  if (obj && obj.vars && checkVars) {\n    const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n    if (val != null) {\n      return val;\n    }\n  }\n  return path.split('.').reduce((acc, item) => {\n    if (acc && acc[item] != null) {\n      return acc[item];\n    }\n    return null;\n  }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n  let value;\n  if (typeof themeMapping === 'function') {\n    value = themeMapping(propValueFinal);\n  } else if (Array.isArray(themeMapping)) {\n    value = themeMapping[propValueFinal] || userValue;\n  } else {\n    value = getPath(themeMapping, propValueFinal) || userValue;\n  }\n  if (transform) {\n    value = transform(value, userValue, themeMapping);\n  }\n  return value;\n}\nfunction style(options) {\n  const {\n    prop,\n    cssProperty = options.prop,\n    themeKey,\n    transform\n  } = options;\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    if (props[prop] == null) {\n      return null;\n    }\n    const propValue = props[prop];\n    const theme = props.theme;\n    const themeMapping = getPath(theme, themeKey) || {};\n    const styleFromPropValue = propValueFinal => {\n      let value = getStyleValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, propValue, styleFromPropValue);\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n    [prop]: responsivePropType\n  } : {};\n  fn.filterProps = [prop];\n  return fn;\n}\nexport default style;", "export default function memoize(fn) {\n  const cache = {};\n  return arg => {\n    if (cache[arg] === undefined) {\n      cache[arg] = fn(arg);\n    }\n    return cache[arg];\n  };\n}", "import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n  m: 'margin',\n  p: 'padding'\n};\nconst directions = {\n  t: 'Top',\n  r: 'Right',\n  b: 'Bottom',\n  l: 'Left',\n  x: ['Left', 'Right'],\n  y: ['Top', 'Bottom']\n};\nconst aliases = {\n  marginX: 'mx',\n  marginY: 'my',\n  paddingX: 'px',\n  paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n  // It's not a shorthand notation.\n  if (prop.length > 2) {\n    if (aliases[prop]) {\n      prop = aliases[prop];\n    } else {\n      return [prop];\n    }\n  }\n  const [a, b] = prop.split('');\n  const property = properties[a];\n  const direction = directions[b] || '';\n  return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n  var _getPath;\n  const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n  if (typeof themeSpacing === 'number') {\n    return abs => {\n      if (typeof abs === 'string') {\n        return abs;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof abs !== 'number') {\n          console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n        }\n      }\n      return themeSpacing * abs;\n    };\n  }\n  if (Array.isArray(themeSpacing)) {\n    return abs => {\n      if (typeof abs === 'string') {\n        return abs;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        if (!Number.isInteger(abs)) {\n          console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n        } else if (abs > themeSpacing.length - 1) {\n          console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n        }\n      }\n      return themeSpacing[abs];\n    };\n  }\n  if (typeof themeSpacing === 'function') {\n    return themeSpacing;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n  }\n  return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n  return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n  if (typeof propValue === 'string' || propValue == null) {\n    return propValue;\n  }\n  const abs = Math.abs(propValue);\n  const transformed = transformer(abs);\n  if (propValue >= 0) {\n    return transformed;\n  }\n  if (typeof transformed === 'number') {\n    return -transformed;\n  }\n  return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n  return propValue => cssProperties.reduce((acc, cssProperty) => {\n    acc[cssProperty] = getValue(transformer, propValue);\n    return acc;\n  }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n  // Using a hash computation over an array iteration could be faster, but with only 28 items,\n  // it's doesn't worth the bundle size.\n  if (keys.indexOf(prop) === -1) {\n    return null;\n  }\n  const cssProperties = getCssProperties(prop);\n  const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n  const propValue = props[prop];\n  return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n  const transformer = createUnarySpacing(props.theme);\n  return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n  return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n  return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n  return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;", "import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n  // Already transformed.\n  if (spacingInput.mui) {\n    return spacingInput;\n  }\n\n  // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n  // Smaller components, such as icons, can align to a 4dp grid.\n  // https://m2.material.io/design/layout/understanding-layout.html\n  const transform = createUnarySpacing({\n    spacing: spacingInput\n  });\n  const spacing = (...argsInput) => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!(argsInput.length <= 4)) {\n        console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n      }\n    }\n    const args = argsInput.length === 0 ? [1] : argsInput;\n    return args.map(argument => {\n      const output = transform(argument);\n      return typeof output === 'number' ? `${output}px` : output;\n    }).join(' ');\n  };\n  spacing.mui = true;\n  return spacing;\n}", "import merge from './merge';\nfunction compose(...styles) {\n  const handlers = styles.reduce((acc, style) => {\n    style.filterProps.forEach(prop => {\n      acc[prop] = style;\n    });\n    return acc;\n  }, {});\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    return Object.keys(props).reduce((acc, prop) => {\n      if (handlers[prop]) {\n        return merge(acc, handlers[prop](props));\n      }\n      return acc;\n    }, {});\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n  fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n  return fn;\n}\nexport default compose;", "import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n  if (typeof value !== 'number') {\n    return value;\n  }\n  return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n  return style({\n    prop,\n    themeKey: 'borders',\n    transform\n  });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n  if (props.borderRadius !== undefined && props.borderRadius !== null) {\n    const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n    const styleFromPropValue = propValue => ({\n      borderRadius: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n  }\n  return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n  borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;", "import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n  if (props.gap !== undefined && props.gap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n    const styleFromPropValue = propValue => ({\n      gap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.gap, styleFromPropValue);\n  }\n  return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n  if (props.columnGap !== undefined && props.columnGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n    const styleFromPropValue = propValue => ({\n      columnGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n  }\n  return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n  if (props.rowGap !== undefined && props.rowGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n    const styleFromPropValue = propValue => ({\n      rowGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n  }\n  return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n  prop: 'gridColumn'\n});\nexport const gridRow = style({\n  prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n  prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n  prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n  prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n  prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n  prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n  prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n  prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;", "import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n  if (userValue === 'grey') {\n    return userValue;\n  }\n  return value;\n}\nexport const color = style({\n  prop: 'color',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const bgcolor = style({\n  prop: 'bgcolor',\n  cssProperty: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const backgroundColor = style({\n  prop: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;", "import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n  return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n  prop: 'width',\n  transform: sizingTransform\n});\nexport const maxWidth = props => {\n  if (props.maxWidth !== undefined && props.maxWidth !== null) {\n    const styleFromPropValue = propValue => {\n      var _props$theme, _props$theme2;\n      const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n      if (!breakpoint) {\n        return {\n          maxWidth: sizingTransform(propValue)\n        };\n      }\n      if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n        return {\n          maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n        };\n      }\n      return {\n        maxWidth: breakpoint\n      };\n    };\n    return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n  }\n  return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n  prop: 'minWidth',\n  transform: sizingTransform\n});\nexport const height = style({\n  prop: 'height',\n  transform: sizingTransform\n});\nexport const maxHeight = style({\n  prop: 'maxHeight',\n  transform: sizingTransform\n});\nexport const minHeight = style({\n  prop: 'minHeight',\n  transform: sizingTransform\n});\nexport const sizeWidth = style({\n  prop: 'size',\n  cssProperty: 'width',\n  transform: sizingTransform\n});\nexport const sizeHeight = style({\n  prop: 'size',\n  cssProperty: 'height',\n  transform: sizingTransform\n});\nexport const boxSizing = style({\n  prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;", "import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n  // borders\n  border: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderTop: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderRight: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderBottom: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderLeft: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderColor: {\n    themeKey: 'palette'\n  },\n  borderTopColor: {\n    themeKey: 'palette'\n  },\n  borderRightColor: {\n    themeKey: 'palette'\n  },\n  borderBottomColor: {\n    themeKey: 'palette'\n  },\n  borderLeftColor: {\n    themeKey: 'palette'\n  },\n  outline: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  outlineColor: {\n    themeKey: 'palette'\n  },\n  borderRadius: {\n    themeKey: 'shape.borderRadius',\n    style: borderRadius\n  },\n  // palette\n  color: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  bgcolor: {\n    themeKey: 'palette',\n    cssProperty: 'backgroundColor',\n    transform: paletteTransform\n  },\n  backgroundColor: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  // spacing\n  p: {\n    style: padding\n  },\n  pt: {\n    style: padding\n  },\n  pr: {\n    style: padding\n  },\n  pb: {\n    style: padding\n  },\n  pl: {\n    style: padding\n  },\n  px: {\n    style: padding\n  },\n  py: {\n    style: padding\n  },\n  padding: {\n    style: padding\n  },\n  paddingTop: {\n    style: padding\n  },\n  paddingRight: {\n    style: padding\n  },\n  paddingBottom: {\n    style: padding\n  },\n  paddingLeft: {\n    style: padding\n  },\n  paddingX: {\n    style: padding\n  },\n  paddingY: {\n    style: padding\n  },\n  paddingInline: {\n    style: padding\n  },\n  paddingInlineStart: {\n    style: padding\n  },\n  paddingInlineEnd: {\n    style: padding\n  },\n  paddingBlock: {\n    style: padding\n  },\n  paddingBlockStart: {\n    style: padding\n  },\n  paddingBlockEnd: {\n    style: padding\n  },\n  m: {\n    style: margin\n  },\n  mt: {\n    style: margin\n  },\n  mr: {\n    style: margin\n  },\n  mb: {\n    style: margin\n  },\n  ml: {\n    style: margin\n  },\n  mx: {\n    style: margin\n  },\n  my: {\n    style: margin\n  },\n  margin: {\n    style: margin\n  },\n  marginTop: {\n    style: margin\n  },\n  marginRight: {\n    style: margin\n  },\n  marginBottom: {\n    style: margin\n  },\n  marginLeft: {\n    style: margin\n  },\n  marginX: {\n    style: margin\n  },\n  marginY: {\n    style: margin\n  },\n  marginInline: {\n    style: margin\n  },\n  marginInlineStart: {\n    style: margin\n  },\n  marginInlineEnd: {\n    style: margin\n  },\n  marginBlock: {\n    style: margin\n  },\n  marginBlockStart: {\n    style: margin\n  },\n  marginBlockEnd: {\n    style: margin\n  },\n  // display\n  displayPrint: {\n    cssProperty: false,\n    transform: value => ({\n      '@media print': {\n        display: value\n      }\n    })\n  },\n  display: {},\n  overflow: {},\n  textOverflow: {},\n  visibility: {},\n  whiteSpace: {},\n  // flexbox\n  flexBasis: {},\n  flexDirection: {},\n  flexWrap: {},\n  justifyContent: {},\n  alignItems: {},\n  alignContent: {},\n  order: {},\n  flex: {},\n  flexGrow: {},\n  flexShrink: {},\n  alignSelf: {},\n  justifyItems: {},\n  justifySelf: {},\n  // grid\n  gap: {\n    style: gap\n  },\n  rowGap: {\n    style: rowGap\n  },\n  columnGap: {\n    style: columnGap\n  },\n  gridColumn: {},\n  gridRow: {},\n  gridAutoFlow: {},\n  gridAutoColumns: {},\n  gridAutoRows: {},\n  gridTemplateColumns: {},\n  gridTemplateRows: {},\n  gridTemplateAreas: {},\n  gridArea: {},\n  // positions\n  position: {},\n  zIndex: {\n    themeKey: 'zIndex'\n  },\n  top: {},\n  right: {},\n  bottom: {},\n  left: {},\n  // shadows\n  boxShadow: {\n    themeKey: 'shadows'\n  },\n  // sizing\n  width: {\n    transform: sizingTransform\n  },\n  maxWidth: {\n    style: maxWidth\n  },\n  minWidth: {\n    transform: sizingTransform\n  },\n  height: {\n    transform: sizingTransform\n  },\n  maxHeight: {\n    transform: sizingTransform\n  },\n  minHeight: {\n    transform: sizingTransform\n  },\n  boxSizing: {},\n  // typography\n  fontFamily: {\n    themeKey: 'typography'\n  },\n  fontSize: {\n    themeKey: 'typography'\n  },\n  fontStyle: {\n    themeKey: 'typography'\n  },\n  fontWeight: {\n    themeKey: 'typography'\n  },\n  letterSpacing: {},\n  textTransform: {},\n  lineHeight: {},\n  textAlign: {},\n  typography: {\n    cssProperty: false,\n    themeKey: 'typography'\n  }\n};\nexport default defaultSxConfig;", "import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n  const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n  const union = new Set(allKeys);\n  return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n  return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n  function getThemeValue(prop, val, theme, config) {\n    const props = {\n      [prop]: val,\n      theme\n    };\n    const options = config[prop];\n    if (!options) {\n      return {\n        [prop]: val\n      };\n    }\n    const {\n      cssProperty = prop,\n      themeKey,\n      transform,\n      style\n    } = options;\n    if (val == null) {\n      return null;\n    }\n\n    // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n    if (themeKey === 'typography' && val === 'inherit') {\n      return {\n        [prop]: val\n      };\n    }\n    const themeMapping = getPath(theme, themeKey) || {};\n    if (style) {\n      return style(props);\n    }\n    const styleFromPropValue = propValueFinal => {\n      let value = getValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, val, styleFromPropValue);\n  }\n  function styleFunctionSx(props) {\n    var _theme$unstable_sxCon;\n    const {\n      sx,\n      theme = {},\n      nested\n    } = props || {};\n    if (!sx) {\n      return null; // Emotion & styled-components will neglect null\n    }\n    const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n    /*\n     * Receive `sxInput` as object or callback\n     * and then recursively check keys & values to create media query object styles.\n     * (the result will be used in `styled`)\n     */\n    function traverse(sxInput) {\n      let sxObject = sxInput;\n      if (typeof sxInput === 'function') {\n        sxObject = sxInput(theme);\n      } else if (typeof sxInput !== 'object') {\n        // value\n        return sxInput;\n      }\n      if (!sxObject) {\n        return null;\n      }\n      const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n      const breakpointsKeys = Object.keys(emptyBreakpoints);\n      let css = emptyBreakpoints;\n      Object.keys(sxObject).forEach(styleKey => {\n        const value = callIfFn(sxObject[styleKey], theme);\n        if (value !== null && value !== undefined) {\n          if (typeof value === 'object') {\n            if (config[styleKey]) {\n              css = merge(css, getThemeValue(styleKey, value, theme, config));\n            } else {\n              const breakpointsValues = handleBreakpoints({\n                theme\n              }, value, x => ({\n                [styleKey]: x\n              }));\n              if (objectsHaveSameKeys(breakpointsValues, value)) {\n                css[styleKey] = styleFunctionSx({\n                  sx: value,\n                  theme,\n                  nested: true\n                });\n              } else {\n                css = merge(css, breakpointsValues);\n              }\n            }\n          } else {\n            css = merge(css, getThemeValue(styleKey, value, theme, config));\n          }\n        }\n      });\n      if (!nested && theme.modularCssLayers) {\n        return {\n          '@layer sx': removeUnusedBreakpoints(breakpointsKeys, css)\n        };\n      }\n      return removeUnusedBreakpoints(breakpointsKeys, css);\n    }\n    return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n  }\n  return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;", "/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n *  - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n *  - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n *  - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * \u2705 [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * \uD83D\uDEAB { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n *   const Component = styled('div')(({ theme }) => [\n *     { background: '#e5e5e5' },\n *     theme.applyStyles('dark', {\n *       background: '#1c1c1c',\n *       color: '#fff',\n *     }),\n *   ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n *   <Box sx={theme => [\n *     { background: '#e5e5e5' },\n *     theme.applyStyles('dark', {\n *        background: '#1c1c1c',\n *        color: '#fff',\n *      }),\n *     ]}\n *   />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n *   extendTheme({\n *     components: {\n *       MuiButton: {\n *         styleOverrides: {\n *           root: ({ theme }) => [\n *             { background: '#e5e5e5' },\n *             theme.applyStyles('dark', {\n *               background: '#1c1c1c',\n *               color: '#fff',\n *             }),\n *           ],\n *         },\n *       }\n *     }\n *   })\n *```\n */\nexport default function applyStyles(key, styles) {\n  // @ts-expect-error this is 'any' type\n  const theme = this;\n  if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n    // If CssVarsProvider is used as a provider,\n    // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n    const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n    return {\n      [selector]: styles\n    };\n  }\n  if (theme.palette.mode === key) {\n    return styles;\n  }\n  return {};\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n  const {\n      breakpoints: breakpointsInput = {},\n      palette: paletteInput = {},\n      spacing: spacingInput,\n      shape: shapeInput = {}\n    } = options,\n    other = _objectWithoutPropertiesLoose(options, _excluded);\n  const breakpoints = createBreakpoints(breakpointsInput);\n  const spacing = createSpacing(spacingInput);\n  let muiTheme = deepmerge({\n    breakpoints,\n    direction: 'ltr',\n    components: {},\n    // Inject component definitions.\n    palette: _extends({\n      mode: 'light'\n    }, paletteInput),\n    spacing,\n    shape: _extends({}, shape, shapeInput)\n  }, other);\n  muiTheme.applyStyles = applyStyles;\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nexport default createTheme;", "export { default } from './createTheme';\nexport { default as private_createBreakpoints } from './createBreakpoints';\nexport { default as unstable_applyStyles } from './applyStyles';", "'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n  const contextTheme = React.useContext(ThemeContext);\n  return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;", "'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n  return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;", "'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as MuiGlobalStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';\nimport useTheme from '../useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction wrapGlobalLayer(styles) {\n  const serialized = serializeStyles(styles);\n  if (styles !== serialized && serialized.styles) {\n    if (!serialized.styles.match(/^@layer\\s+[^{]*$/)) {\n      // If the styles are not already wrapped in a layer, wrap them in a global layer.\n      serialized.styles = `@layer global{${serialized.styles}}`;\n    }\n    return serialized;\n  }\n  return styles;\n}\nfunction GlobalStyles({\n  styles,\n  themeId,\n  defaultTheme = {}\n}) {\n  const upperTheme = useTheme(defaultTheme);\n  const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;\n  let globalStyles = typeof styles === 'function' ? styles(resolvedTheme) : styles;\n  if (resolvedTheme.modularCssLayers) {\n    if (Array.isArray(globalStyles)) {\n      globalStyles = globalStyles.map(styleArg => {\n        if (typeof styleArg === 'function') {\n          return wrapGlobalLayer(styleArg(resolvedTheme));\n        }\n        return wrapGlobalLayer(styleArg);\n      });\n    } else {\n      globalStyles = wrapGlobalLayer(globalStyles);\n    }\n  }\n  return /*#__PURE__*/_jsx(MuiGlobalStyles, {\n    styles: globalStyles\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n  // \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Warning \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n  // \u2502 These PropTypes are generated from the TypeScript type definitions. \u2502\n  // \u2502 To update them, edit the TypeScript types and run `pnpm proptypes`. \u2502\n  // \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n  /**\n   * @ignore\n   */\n  defaultTheme: PropTypes.object,\n  /**\n   * @ignore\n   */\n  styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool]),\n  /**\n   * @ignore\n   */\n  themeId: PropTypes.string\n} : void 0;\nexport default GlobalStyles;", "'use client';\n\nexport { default } from './GlobalStyles';\nexport * from './GlobalStyles';", "import style from './style';\nimport compose from './compose';\nexport const flexBasis = style({\n  prop: 'flexBasis'\n});\nexport const flexDirection = style({\n  prop: 'flexDirection'\n});\nexport const flexWrap = style({\n  prop: 'flexWrap'\n});\nexport const justifyContent = style({\n  prop: 'justifyContent'\n});\nexport const alignItems = style({\n  prop: 'alignItems'\n});\nexport const alignContent = style({\n  prop: 'alignContent'\n});\nexport const order = style({\n  prop: 'order'\n});\nexport const flex = style({\n  prop: 'flex'\n});\nexport const flexGrow = style({\n  prop: 'flexGrow'\n});\nexport const flexShrink = style({\n  prop: 'flexShrink'\n});\nexport const alignSelf = style({\n  prop: 'alignSelf'\n});\nexport const justifyItems = style({\n  prop: 'justifyItems'\n});\nexport const justifySelf = style({\n  prop: 'justifySelf'\n});\nconst flexbox = compose(flexBasis, flexDirection, flexWrap, justifyContent, alignItems, alignContent, order, flex, flexGrow, flexShrink, alignSelf, justifyItems, justifySelf);\nexport default flexbox;", "import style from './style';\nimport compose from './compose';\nexport const position = style({\n  prop: 'position'\n});\nexport const zIndex = style({\n  prop: 'zIndex',\n  themeKey: 'zIndex'\n});\nexport const top = style({\n  prop: 'top'\n});\nexport const right = style({\n  prop: 'right'\n});\nexport const bottom = style({\n  prop: 'bottom'\n});\nexport const left = style({\n  prop: 'left'\n});\nexport default compose(position, zIndex, top, right, bottom, left);", "import style from './style';\nimport compose from './compose';\nexport const fontFamily = style({\n  prop: 'fontFamily',\n  themeKey: 'typography'\n});\nexport const fontSize = style({\n  prop: 'fontSize',\n  themeKey: 'typography'\n});\nexport const fontStyle = style({\n  prop: 'fontStyle',\n  themeKey: 'typography'\n});\nexport const fontWeight = style({\n  prop: 'fontWeight',\n  themeKey: 'typography'\n});\nexport const letterSpacing = style({\n  prop: 'letterSpacing'\n});\nexport const textTransform = style({\n  prop: 'textTransform'\n});\nexport const lineHeight = style({\n  prop: 'lineHeight'\n});\nexport const textAlign = style({\n  prop: 'textAlign'\n});\nexport const typographyVariant = style({\n  prop: 'typography',\n  cssProperty: false,\n  themeKey: 'typography'\n});\nconst typography = compose(typographyVariant, fontFamily, fontSize, fontStyle, fontWeight, letterSpacing, lineHeight, textAlign, textTransform);\nexport default typography;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sx\"];\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from './defaultSxConfig';\nconst splitProps = props => {\n  var _props$theme$unstable, _props$theme;\n  const result = {\n    systemProps: {},\n    otherProps: {}\n  };\n  const config = (_props$theme$unstable = props == null || (_props$theme = props.theme) == null ? void 0 : _props$theme.unstable_sxConfig) != null ? _props$theme$unstable : defaultSxConfig;\n  Object.keys(props).forEach(prop => {\n    if (config[prop]) {\n      result.systemProps[prop] = props[prop];\n    } else {\n      result.otherProps[prop] = props[prop];\n    }\n  });\n  return result;\n};\nexport default function extendSxProp(props) {\n  const {\n      sx: inSx\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    systemProps,\n    otherProps\n  } = splitProps(other);\n  let finalSx;\n  if (Array.isArray(inSx)) {\n    finalSx = [systemProps, ...inSx];\n  } else if (typeof inSx === 'function') {\n    finalSx = (...args) => {\n      const result = inSx(...args);\n      if (!isPlainObject(result)) {\n        return systemProps;\n      }\n      return _extends({}, systemProps, result);\n    };\n  } else {\n    finalSx = _extends({}, systemProps, inSx);\n  }\n  return _extends({}, otherProps, {\n    sx: finalSx\n  });\n}", "export { default } from './styleFunctionSx';\nexport { unstable_createStyleFunctionSx } from './styleFunctionSx';\nexport { default as extendSxProp } from './extendSxProp';\nexport { default as unstable_defaultSxConfig } from './defaultSxConfig';", "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;", "'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from './styleFunctionSx';\nimport useTheme from './useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n  const {\n    themeId,\n    defaultTheme,\n    defaultClassName = 'MuiBox-root',\n    generateClassName\n  } = options;\n  const BoxRoot = styled('div', {\n    shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n  })(styleFunctionSx);\n  const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n    const theme = useTheme(defaultTheme);\n    const _extendSxProp = extendSxProp(inProps),\n      {\n        className,\n        component = 'div'\n      } = _extendSxProp,\n      other = _objectWithoutPropertiesLoose(_extendSxProp, _excluded);\n    return /*#__PURE__*/_jsx(BoxRoot, _extends({\n      as: component,\n      ref: ref,\n      className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n      theme: themeId ? theme[themeId] || theme : theme\n    }, other));\n  });\n  return Box;\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ownerState\"],\n  _excluded2 = [\"variants\"],\n  _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nimport styledEngineStyled, { internal_processStyles as processStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from './createTheme';\nimport styleFunctionSx from './styleFunctionSx';\nfunction isEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n  return typeof tag === 'string' &&\n  // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nfunction shallowLayer(serialized, layerName) {\n  if (layerName && serialized && typeof serialized === 'object' && serialized.styles && !serialized.styles.startsWith('@layer') // only add the layer if it is not already there.\n  ) {\n    serialized.styles = `@layer ${layerName}{${String(serialized.styles)}}`;\n  }\n  return serialized;\n}\nexport const systemDefaultTheme = createTheme();\nconst lowercaseFirstLetter = string => {\n  if (!string) {\n    return string;\n  }\n  return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n  defaultTheme,\n  theme,\n  themeId\n}) {\n  return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n  if (!slot) {\n    return null;\n  }\n  return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref, layerName) {\n  let {\n      ownerState\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle(_extends({\n    ownerState\n  }, props)) : callableStyle;\n  if (Array.isArray(resolvedStylesArg)) {\n    return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, _extends({\n      ownerState\n    }, props), layerName));\n  }\n  if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n    const {\n        variants = []\n      } = resolvedStylesArg,\n      otherStyles = _objectWithoutPropertiesLoose(resolvedStylesArg, _excluded2);\n    let result = otherStyles;\n    variants.forEach(variant => {\n      let isMatch = true;\n      if (typeof variant.props === 'function') {\n        isMatch = variant.props(_extends({\n          ownerState\n        }, props, ownerState));\n      } else {\n        Object.keys(variant.props).forEach(key => {\n          if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n            isMatch = false;\n          }\n        });\n      }\n      if (isMatch) {\n        if (!Array.isArray(result)) {\n          result = [result];\n        }\n        const variantStyle = typeof variant.style === 'function' ? variant.style(_extends({\n          ownerState\n        }, props, ownerState)) : variant.style;\n        result.push(layerName ? shallowLayer(serializeStyles(variantStyle), layerName) : variantStyle);\n      }\n    });\n    return result;\n  }\n  return layerName ? shallowLayer(serializeStyles(resolvedStylesArg), layerName) : resolvedStylesArg;\n}\nexport default function createStyled(input = {}) {\n  const {\n    themeId,\n    defaultTheme = systemDefaultTheme,\n    rootShouldForwardProp = shouldForwardProp,\n    slotShouldForwardProp = shouldForwardProp\n  } = input;\n  const systemSx = props => {\n    return styleFunctionSx(_extends({}, props, {\n      theme: resolveTheme(_extends({}, props, {\n        defaultTheme,\n        themeId\n      }))\n    }));\n  };\n  systemSx.__mui_systemSx = true;\n  return (tag, inputOptions = {}) => {\n    // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n    processStyles(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n    const {\n        name: componentName,\n        slot: componentSlot,\n        skipVariantsResolver: inputSkipVariantsResolver,\n        skipSx: inputSkipSx,\n        // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n        // For more details: https://github.com/mui/material-ui/pull/37908\n        overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n      } = inputOptions,\n      options = _objectWithoutPropertiesLoose(inputOptions, _excluded3);\n    const layerName = componentName && componentName.startsWith('Mui') || !!componentSlot ? 'components' : 'custom';\n\n    // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n    const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n    // TODO v6: remove `Root` in the next major release\n    // For more details: https://github.com/mui/material-ui/pull/37908\n    componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n    const skipSx = inputSkipSx || false;\n    let label;\n    if (process.env.NODE_ENV !== 'production') {\n      if (componentName) {\n        // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n        // For more details: https://github.com/mui/material-ui/pull/37908\n        label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n      }\n    }\n    let shouldForwardPropOption = shouldForwardProp;\n\n    // TODO v6: remove `Root` in the next major release\n    // For more details: https://github.com/mui/material-ui/pull/37908\n    if (componentSlot === 'Root' || componentSlot === 'root') {\n      shouldForwardPropOption = rootShouldForwardProp;\n    } else if (componentSlot) {\n      // any other slot specified\n      shouldForwardPropOption = slotShouldForwardProp;\n    } else if (isStringTag(tag)) {\n      // for string (html) tag, preserve the behavior in emotion & styled-components.\n      shouldForwardPropOption = undefined;\n    }\n    const defaultStyledResolver = styledEngineStyled(tag, _extends({\n      shouldForwardProp: shouldForwardPropOption,\n      label\n    }, options));\n    const transformStyleArg = stylesArg => {\n      // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n      // component stays as a function. This condition makes sure that we do not interpolate functions\n      // which are basically components used as a selectors.\n      if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || isPlainObject(stylesArg)) {\n        return props => {\n          const theme = resolveTheme({\n            theme: props.theme,\n            defaultTheme,\n            themeId\n          });\n          return processStyleArg(stylesArg, _extends({}, props, {\n            theme\n          }), theme.modularCssLayers ? layerName : undefined);\n        };\n      }\n      return stylesArg;\n    };\n    const muiStyledResolver = (styleArg, ...expressions) => {\n      let transformedStyleArg = transformStyleArg(styleArg);\n      const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n      if (componentName && overridesResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          const theme = resolveTheme(_extends({}, props, {\n            defaultTheme,\n            themeId\n          }));\n          if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n            return null;\n          }\n          const styleOverrides = theme.components[componentName].styleOverrides;\n          const resolvedStyleOverrides = {};\n          // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n          Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n            resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, _extends({}, props, {\n              theme\n            }), theme.modularCssLayers ? 'theme' : undefined);\n          });\n          return overridesResolver(props, resolvedStyleOverrides);\n        });\n      }\n      if (componentName && !skipVariantsResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          var _theme$components;\n          const theme = resolveTheme(_extends({}, props, {\n            defaultTheme,\n            themeId\n          }));\n          const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n          return processStyleArg({\n            variants: themeVariants\n          }, _extends({}, props, {\n            theme\n          }), theme.modularCssLayers ? 'theme' : undefined);\n        });\n      }\n      if (!skipSx) {\n        expressionsWithDefaultTheme.push(systemSx);\n      }\n      const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n      if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n        const placeholders = new Array(numOfCustomFnsApplied).fill('');\n        // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n        transformedStyleArg = [...styleArg, ...placeholders];\n        transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n      }\n      const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n      if (process.env.NODE_ENV !== 'production') {\n        let displayName;\n        if (componentName) {\n          displayName = `${componentName}${capitalize(componentSlot || '')}`;\n        }\n        if (displayName === undefined) {\n          displayName = `Styled(${getDisplayName(tag)})`;\n        }\n        Component.displayName = displayName;\n      }\n      if (tag.muiName) {\n        Component.muiName = tag.muiName;\n      }\n      return Component;\n    };\n    if (defaultStyledResolver.withConfig) {\n      muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n    }\n    return muiStyledResolver;\n  };\n}", "import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n  const {\n    theme,\n    name,\n    props\n  } = params;\n  if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n    return props;\n  }\n  return resolveProps(theme.components[name].defaultProps, props);\n}", "'use client';\n\nimport getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n  props,\n  name,\n  defaultTheme,\n  themeId\n}) {\n  let theme = useTheme(defaultTheme);\n  if (themeId) {\n    theme = theme[themeId] || theme;\n  }\n  const mergedProps = getThemeProps({\n    theme,\n    name,\n    props\n  });\n  return mergedProps;\n}", "'use client';\n\nexport { default } from './useThemeProps';\nexport { default as getThemeProps } from './getThemeProps';", "import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (value < min || value > max) {\n      console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n    }\n  }\n  return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n  color = color.slice(1);\n  const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n  let colors = color.match(re);\n  if (colors && colors[0].length === 1) {\n    colors = colors.map(n => n + n);\n  }\n  return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n    return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n  }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n  const hex = int.toString(16);\n  return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n  // Idempotent\n  if (color.type) {\n    return color;\n  }\n  if (color.charAt(0) === '#') {\n    return decomposeColor(hexToRgb(color));\n  }\n  const marker = color.indexOf('(');\n  const type = color.substring(0, marker);\n  if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n  }\n  let values = color.substring(marker + 1, color.length - 1);\n  let colorSpace;\n  if (type === 'color') {\n    values = values.split(' ');\n    colorSpace = values.shift();\n    if (values.length === 4 && values[3].charAt(0) === '/') {\n      values[3] = values[3].slice(1);\n    }\n    if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n    }\n  } else {\n    values = values.split(',');\n  }\n  values = values.map(value => parseFloat(value));\n  return {\n    type,\n    values,\n    colorSpace\n  };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n  const decomposedColor = decomposeColor(color);\n  return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n  try {\n    return colorChannel(color);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n  const {\n    type,\n    colorSpace\n  } = color;\n  let {\n    values\n  } = color;\n  if (type.indexOf('rgb') !== -1) {\n    // Only convert the first 3 values to int (i.e. not alpha)\n    values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n  } else if (type.indexOf('hsl') !== -1) {\n    values[1] = `${values[1]}%`;\n    values[2] = `${values[2]}%`;\n  }\n  if (type.indexOf('color') !== -1) {\n    values = `${colorSpace} ${values.join(' ')}`;\n  } else {\n    values = `${values.join(', ')}`;\n  }\n  return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n  // Idempotent\n  if (color.indexOf('#') === 0) {\n    return color;\n  }\n  const {\n    values\n  } = decomposeColor(color);\n  return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n  color = decomposeColor(color);\n  const {\n    values\n  } = color;\n  const h = values[0];\n  const s = values[1] / 100;\n  const l = values[2] / 100;\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  let type = 'rgb';\n  const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n  if (color.type === 'hsla') {\n    type += 'a';\n    rgb.push(values[3]);\n  }\n  return recomposeColor({\n    type,\n    values: rgb\n  });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n  color = decomposeColor(color);\n  let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n  rgb = rgb.map(val => {\n    if (color.type !== 'color') {\n      val /= 255; // normalized\n    }\n    return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n  });\n\n  // Truncate at 3 digits\n  return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n  const lumA = getLuminance(foreground);\n  const lumB = getLuminance(background);\n  return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n  color = decomposeColor(color);\n  value = clampWrapper(value);\n  if (color.type === 'rgb' || color.type === 'hsl') {\n    color.type += 'a';\n  }\n  if (color.type === 'color') {\n    color.values[3] = `/${value}`;\n  } else {\n    color.values[3] = value;\n  }\n  return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n  try {\n    return alpha(color, value);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clampWrapper(coefficient);\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] *= 1 - coefficient;\n  } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] *= 1 - coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n  try {\n    return darken(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clampWrapper(coefficient);\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] += (100 - color.values[2]) * coefficient;\n  } else if (color.type.indexOf('rgb') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (255 - color.values[i]) * coefficient;\n    }\n  } else if (color.type.indexOf('color') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (1 - color.values[i]) * coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n  try {\n    return lighten(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n  return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n  try {\n    return emphasize(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n  const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n  const backgroundColor = decomposeColor(background);\n  const overlayColor = decomposeColor(overlay);\n  const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n  return recomposeColor({\n    type: 'rgb',\n    values: rgb\n  });\n}", "import * as React from 'react';\nconst ThemeContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n  ThemeContext.displayName = 'ThemeContext';\n}\nexport default ThemeContext;", "import * as React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n  const theme = React.useContext(ThemeContext);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useDebugValue(theme);\n  }\n  return theme;\n}", "export { default } from './useTheme';", "const hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@mui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested';\n\n// To support composition of theme.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n  if (typeof localTheme === 'function') {\n    const mergedTheme = localTheme(outerTheme);\n    if (process.env.NODE_ENV !== 'production') {\n      if (!mergedTheme) {\n        console.error(['MUI: You should return an object from your theme function, i.e.', '<ThemeProvider theme={() => ({})} />'].join('\\n'));\n      }\n    }\n    return mergedTheme;\n  }\n  return _extends({}, outerTheme, localTheme);\n}\n\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\nfunction ThemeProvider(props) {\n  const {\n    children,\n    theme: localTheme\n  } = props;\n  const outerTheme = useTheme();\n  if (process.env.NODE_ENV !== 'production') {\n    if (outerTheme === null && typeof localTheme === 'function') {\n      console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n    }\n  }\n  const theme = React.useMemo(() => {\n    const output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n    if (output != null) {\n      output[nested] = outerTheme !== null;\n    }\n    return output;\n  }, [localTheme, outerTheme]);\n  return /*#__PURE__*/_jsx(ThemeContext.Provider, {\n    value: theme,\n    children: children\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * A theme object. You can provide a function to extend the outer theme.\n   */\n  theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;", "export { default } from './ThemeProvider';\nexport { default as unstable_nested } from './nested';", "/**\n * @mui/private-theming v5.17.1\n *\n * @license MIT\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 */\nexport { default as ThemeProvider } from './ThemeProvider';\nexport * from './ThemeProvider';\nexport { default as useTheme } from './useTheme';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RtlContext = /*#__PURE__*/React.createContext();\nfunction RtlProvider(_ref) {\n  let {\n      value\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  return /*#__PURE__*/_jsx(RtlContext.Provider, _extends({\n    value: value != null ? value : true\n  }, props));\n}\nprocess.env.NODE_ENV !== \"production\" ? RtlProvider.propTypes = {\n  children: PropTypes.node,\n  value: PropTypes.bool\n} : void 0;\nexport const useRtl = () => {\n  const value = React.useContext(RtlContext);\n  return value != null ? value : false;\n};\nexport default RtlProvider;", "'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveProps from '@mui/utils/resolveProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PropsContext = /*#__PURE__*/React.createContext(undefined);\nfunction DefaultPropsProvider({\n  value,\n  children\n}) {\n  return /*#__PURE__*/_jsx(PropsContext.Provider, {\n    value: value,\n    children: children\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n  // \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Warning \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n  // \u2502 These PropTypes are generated from the TypeScript type definitions. \u2502\n  // \u2502 To update them, edit the TypeScript types and run `pnpm proptypes`. \u2502\n  // \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  value: PropTypes.object\n} : void 0;\nfunction getThemeProps(params) {\n  const {\n    theme,\n    name,\n    props\n  } = params;\n  if (!theme || !theme.components || !theme.components[name]) {\n    return props;\n  }\n  const config = theme.components[name];\n  if (config.defaultProps) {\n    // compatible with v5 signature\n    return resolveProps(config.defaultProps, props);\n  }\n  if (!config.styleOverrides && !config.variants) {\n    // v6 signature, no property 'defaultProps'\n    return resolveProps(config, props);\n  }\n  return props;\n}\nexport function useDefaultProps({\n  props,\n  name\n}) {\n  const ctx = React.useContext(PropsContext);\n  return getThemeProps({\n    props,\n    name,\n    theme: {\n      components: ctx\n    }\n  });\n}\nexport default DefaultPropsProvider;", "export { default, useDefaultProps } from './DefaultPropsProvider';", "'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport useId from '@mui/utils/useId';\nimport GlobalStyles from '../GlobalStyles';\nimport useThemeWithoutDefault from '../useThemeWithoutDefault';\n\n/**\n * This hook returns a `GlobalStyles` component that sets the CSS layer order (for server-side rendering).\n * Then on client-side, it injects the CSS layer order into the document head to ensure that the layer order is always present first before other Emotion styles.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function useLayerOrder(theme) {\n  const upperTheme = useThemeWithoutDefault();\n  const id = useId() || '';\n  const {\n    modularCssLayers\n  } = theme;\n  let layerOrder = 'mui.global, mui.components, mui.theme, mui.custom, mui.sx';\n  if (!modularCssLayers || upperTheme !== null) {\n    // skip this hook if upper theme exists.\n    layerOrder = '';\n  } else if (typeof modularCssLayers === 'string') {\n    layerOrder = modularCssLayers.replace(/mui(?!\\.)/g, layerOrder);\n  } else {\n    layerOrder = `@layer ${layerOrder};`;\n  }\n  useEnhancedEffect(() => {\n    const head = document.querySelector('head');\n    if (!head) {\n      return;\n    }\n    const firstChild = head.firstChild;\n    if (layerOrder) {\n      var _firstChild$hasAttrib;\n      // Only insert if first child doesn't have data-mui-layer-order attribute\n      if (firstChild && (_firstChild$hasAttrib = firstChild.hasAttribute) != null && _firstChild$hasAttrib.call(firstChild, 'data-mui-layer-order') && firstChild.getAttribute('data-mui-layer-order') === id) {\n        return;\n      }\n      const styleElement = document.createElement('style');\n      styleElement.setAttribute('data-mui-layer-order', id);\n      styleElement.textContent = layerOrder;\n      head.prepend(styleElement);\n    } else {\n      var _head$querySelector;\n      (_head$querySelector = head.querySelector(`style[data-mui-layer-order=\"${id}\"]`)) == null || _head$querySelector.remove();\n    }\n  }, [layerOrder, id]);\n  if (!layerOrder) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(GlobalStyles, {\n    styles: layerOrder\n  });\n}", "'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider as MuiThemeProvider, useTheme as usePrivateTheme } from '@mui/private-theming';\nimport exactProp from '@mui/utils/exactProp';\nimport { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';\nimport useThemeWithoutDefault from '../useThemeWithoutDefault';\nimport RtlProvider from '../RtlProvider';\nimport DefaultPropsProvider from '../DefaultPropsProvider';\nimport useLayerOrder from './useLayerOrder';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst EMPTY_THEME = {};\nfunction useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {\n  return React.useMemo(() => {\n    const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;\n    if (typeof localTheme === 'function') {\n      const mergedTheme = localTheme(resolvedTheme);\n      const result = themeId ? _extends({}, upperTheme, {\n        [themeId]: mergedTheme\n      }) : mergedTheme;\n      // must return a function for the private theme to NOT merge with the upper theme.\n      // see the test case \"use provided theme from a callback\" in ThemeProvider.test.js\n      if (isPrivate) {\n        return () => result;\n      }\n      return result;\n    }\n    return themeId ? _extends({}, upperTheme, {\n      [themeId]: localTheme\n    }) : _extends({}, upperTheme, localTheme);\n  }, [themeId, upperTheme, localTheme, isPrivate]);\n}\n\n/**\n * This component makes the `theme` available down the React tree.\n * It should preferably be used at **the root of your component tree**.\n *\n * <ThemeProvider theme={theme}> // existing use case\n * <ThemeProvider theme={{ id: theme }}> // theme scoping\n */\nfunction ThemeProvider(props) {\n  const {\n    children,\n    theme: localTheme,\n    themeId\n  } = props;\n  const upperTheme = useThemeWithoutDefault(EMPTY_THEME);\n  const upperPrivateTheme = usePrivateTheme() || EMPTY_THEME;\n  if (process.env.NODE_ENV !== 'production') {\n    if (upperTheme === null && typeof localTheme === 'function' || themeId && upperTheme && !upperTheme[themeId] && typeof localTheme === 'function') {\n      console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n    }\n  }\n  const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);\n  const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);\n  const rtlValue = engineTheme.direction === 'rtl';\n  const layerOrder = useLayerOrder(engineTheme);\n  return /*#__PURE__*/_jsx(MuiThemeProvider, {\n    theme: privateTheme,\n    children: /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {\n      value: engineTheme,\n      children: /*#__PURE__*/_jsx(RtlProvider, {\n        value: rtlValue,\n        children: /*#__PURE__*/_jsxs(DefaultPropsProvider, {\n          value: engineTheme == null ? void 0 : engineTheme.components,\n          children: [layerOrder, children]\n        })\n      })\n    })\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes /* remove-proptypes */ = {\n  // \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Warning \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n  // \u2502 These PropTypes are generated from the TypeScript type definitions. \u2502\n  // \u2502    To update them, edit the d.ts file and run `pnpm proptypes`.     \u2502\n  // \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * A theme object. You can provide a function to extend the outer theme.\n   */\n  theme: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n  /**\n   * The design system's unique id for getting the corresponded theme when there are multiple design systems.\n   */\n  themeId: PropTypes.string\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;", "'use client';\n\nexport { default } from './ThemeProvider';", "/**\n * Split this component for RSC import\n */\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DEFAULT_MODE_STORAGE_KEY = 'mode';\nexport const DEFAULT_COLOR_SCHEME_STORAGE_KEY = 'color-scheme';\nexport const DEFAULT_ATTRIBUTE = 'data-color-scheme';\nexport default function InitColorSchemeScript(options) {\n  const {\n    defaultMode = 'light',\n    defaultLightColorScheme = 'light',\n    defaultDarkColorScheme = 'dark',\n    modeStorageKey = DEFAULT_MODE_STORAGE_KEY,\n    colorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,\n    attribute = DEFAULT_ATTRIBUTE,\n    colorSchemeNode = 'document.documentElement',\n    nonce\n  } = options || {};\n  return /*#__PURE__*/_jsx(\"script\", {\n    suppressHydrationWarning: true,\n    nonce: typeof window === 'undefined' ? nonce : ''\n    // eslint-disable-next-line react/no-danger\n    ,\n    dangerouslySetInnerHTML: {\n      __html: `(function() {\ntry {\n  var mode = localStorage.getItem('${modeStorageKey}') || '${defaultMode}';\n  var colorScheme = '';\n  if (mode === 'system') {\n    // handle system mode\n    var mql = window.matchMedia('(prefers-color-scheme: dark)');\n    if (mql.matches) {\n      colorScheme = localStorage.getItem('${colorSchemeStorageKey}-dark') || '${defaultDarkColorScheme}';\n    } else {\n      colorScheme = localStorage.getItem('${colorSchemeStorageKey}-light') || '${defaultLightColorScheme}';\n    }\n  }\n  if (mode === 'light') {\n    colorScheme = localStorage.getItem('${colorSchemeStorageKey}-light') || '${defaultLightColorScheme}';\n  }\n  if (mode === 'dark') {\n    colorScheme = localStorage.getItem('${colorSchemeStorageKey}-dark') || '${defaultDarkColorScheme}';\n  }\n  if (colorScheme) {\n    ${colorSchemeNode}.setAttribute('${attribute}', colorScheme);\n  }\n} catch(e){}})();`\n    }\n  }, \"mui-color-scheme-init\");\n}", "'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { DEFAULT_MODE_STORAGE_KEY, DEFAULT_COLOR_SCHEME_STORAGE_KEY } from '../InitColorSchemeScript/InitColorSchemeScript';\nexport function getSystemMode(mode) {\n  if (typeof window !== 'undefined' && mode === 'system') {\n    const mql = window.matchMedia('(prefers-color-scheme: dark)');\n    if (mql.matches) {\n      return 'dark';\n    }\n    return 'light';\n  }\n  return undefined;\n}\nfunction processState(state, callback) {\n  if (state.mode === 'light' || state.mode === 'system' && state.systemMode === 'light') {\n    return callback('light');\n  }\n  if (state.mode === 'dark' || state.mode === 'system' && state.systemMode === 'dark') {\n    return callback('dark');\n  }\n  return undefined;\n}\nexport function getColorScheme(state) {\n  return processState(state, mode => {\n    if (mode === 'light') {\n      return state.lightColorScheme;\n    }\n    if (mode === 'dark') {\n      return state.darkColorScheme;\n    }\n    return undefined;\n  });\n}\nfunction initializeValue(key, defaultValue) {\n  if (typeof window === 'undefined') {\n    return undefined;\n  }\n  let value;\n  try {\n    value = localStorage.getItem(key) || undefined;\n    if (!value) {\n      // the first time that user enters the site.\n      localStorage.setItem(key, defaultValue);\n    }\n  } catch (e) {\n    // Unsupported\n  }\n  return value || defaultValue;\n}\nexport default function useCurrentColorScheme(options) {\n  const {\n    defaultMode = 'light',\n    defaultLightColorScheme,\n    defaultDarkColorScheme,\n    supportedColorSchemes = [],\n    modeStorageKey = DEFAULT_MODE_STORAGE_KEY,\n    colorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,\n    storageWindow = typeof window === 'undefined' ? undefined : window\n  } = options;\n  const joinedColorSchemes = supportedColorSchemes.join(',');\n  const [state, setState] = React.useState(() => {\n    const initialMode = initializeValue(modeStorageKey, defaultMode);\n    const lightColorScheme = initializeValue(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);\n    const darkColorScheme = initializeValue(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);\n    return {\n      mode: initialMode,\n      systemMode: getSystemMode(initialMode),\n      lightColorScheme,\n      darkColorScheme\n    };\n  });\n  const colorScheme = getColorScheme(state);\n  const setMode = React.useCallback(mode => {\n    setState(currentState => {\n      if (mode === currentState.mode) {\n        // do nothing if mode does not change\n        return currentState;\n      }\n      const newMode = mode != null ? mode : defaultMode;\n      try {\n        localStorage.setItem(modeStorageKey, newMode);\n      } catch (e) {\n        // Unsupported\n      }\n      return _extends({}, currentState, {\n        mode: newMode,\n        systemMode: getSystemMode(newMode)\n      });\n    });\n  }, [modeStorageKey, defaultMode]);\n  const setColorScheme = React.useCallback(value => {\n    if (!value) {\n      setState(currentState => {\n        try {\n          localStorage.setItem(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);\n          localStorage.setItem(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);\n        } catch (e) {\n          // Unsupported\n        }\n        return _extends({}, currentState, {\n          lightColorScheme: defaultLightColorScheme,\n          darkColorScheme: defaultDarkColorScheme\n        });\n      });\n    } else if (typeof value === 'string') {\n      if (value && !joinedColorSchemes.includes(value)) {\n        console.error(`\\`${value}\\` does not exist in \\`theme.colorSchemes\\`.`);\n      } else {\n        setState(currentState => {\n          const newState = _extends({}, currentState);\n          processState(currentState, mode => {\n            try {\n              localStorage.setItem(`${colorSchemeStorageKey}-${mode}`, value);\n            } catch (e) {\n              // Unsupported\n            }\n            if (mode === 'light') {\n              newState.lightColorScheme = value;\n            }\n            if (mode === 'dark') {\n              newState.darkColorScheme = value;\n            }\n          });\n          return newState;\n        });\n      }\n    } else {\n      setState(currentState => {\n        const newState = _extends({}, currentState);\n        const newLightColorScheme = value.light === null ? defaultLightColorScheme : value.light;\n        const newDarkColorScheme = value.dark === null ? defaultDarkColorScheme : value.dark;\n        if (newLightColorScheme) {\n          if (!joinedColorSchemes.includes(newLightColorScheme)) {\n            console.error(`\\`${newLightColorScheme}\\` does not exist in \\`theme.colorSchemes\\`.`);\n          } else {\n            newState.lightColorScheme = newLightColorScheme;\n            try {\n              localStorage.setItem(`${colorSchemeStorageKey}-light`, newLightColorScheme);\n            } catch (error) {\n              // Unsupported\n            }\n          }\n        }\n        if (newDarkColorScheme) {\n          if (!joinedColorSchemes.includes(newDarkColorScheme)) {\n            console.error(`\\`${newDarkColorScheme}\\` does not exist in \\`theme.colorSchemes\\`.`);\n          } else {\n            newState.darkColorScheme = newDarkColorScheme;\n            try {\n              localStorage.setItem(`${colorSchemeStorageKey}-dark`, newDarkColorScheme);\n            } catch (error) {\n              // Unsupported\n            }\n          }\n        }\n        return newState;\n      });\n    }\n  }, [joinedColorSchemes, colorSchemeStorageKey, defaultLightColorScheme, defaultDarkColorScheme]);\n  const handleMediaQuery = React.useCallback(event => {\n    if (state.mode === 'system') {\n      setState(currentState => {\n        const systemMode = event != null && event.matches ? 'dark' : 'light';\n\n        // Early exit, nothing changed.\n        if (currentState.systemMode === systemMode) {\n          return currentState;\n        }\n        return _extends({}, currentState, {\n          systemMode\n        });\n      });\n    }\n  }, [state.mode]);\n\n  // Ref hack to avoid adding handleMediaQuery as a dep\n  const mediaListener = React.useRef(handleMediaQuery);\n  mediaListener.current = handleMediaQuery;\n  React.useEffect(() => {\n    const handler = (...args) => mediaListener.current(...args);\n\n    // Always listen to System preference\n    const media = window.matchMedia('(prefers-color-scheme: dark)');\n\n    // Intentionally use deprecated listener methods to support iOS & old browsers\n    media.addListener(handler);\n    handler(media);\n    return () => {\n      media.removeListener(handler);\n    };\n  }, []);\n\n  // Handle when localStorage has changed\n  React.useEffect(() => {\n    if (storageWindow) {\n      const handleStorage = event => {\n        const value = event.newValue;\n        if (typeof event.key === 'string' && event.key.startsWith(colorSchemeStorageKey) && (!value || joinedColorSchemes.match(value))) {\n          // If the key is deleted, value will be null then reset color scheme to the default one.\n          if (event.key.endsWith('light')) {\n            setColorScheme({\n              light: value\n            });\n          }\n          if (event.key.endsWith('dark')) {\n            setColorScheme({\n              dark: value\n            });\n          }\n        }\n        if (event.key === modeStorageKey && (!value || ['light', 'dark', 'system'].includes(value))) {\n          setMode(value || defaultMode);\n        }\n      };\n      // For syncing color-scheme changes between iframes\n      storageWindow.addEventListener('storage', handleStorage);\n      return () => {\n        storageWindow.removeEventListener('storage', handleStorage);\n      };\n    }\n    return undefined;\n  }, [setColorScheme, setMode, modeStorageKey, colorSchemeStorageKey, joinedColorSchemes, defaultMode, storageWindow]);\n  return _extends({}, state, {\n    colorScheme,\n    setMode,\n    setColorScheme\n  });\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"colorSchemes\", \"components\", \"generateCssVars\", \"cssVarPrefix\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport { GlobalStyles } from '@mui/styled-engine';\nimport { useTheme as muiUseTheme } from '@mui/private-theming';\nimport ThemeProvider from '../ThemeProvider';\nimport InitColorSchemeScript, { DEFAULT_ATTRIBUTE, DEFAULT_COLOR_SCHEME_STORAGE_KEY, DEFAULT_MODE_STORAGE_KEY } from '../InitColorSchemeScript/InitColorSchemeScript';\nimport useCurrentColorScheme from './useCurrentColorScheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const DISABLE_CSS_TRANSITION = '*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}';\nexport default function createCssVarsProvider(options) {\n  const {\n    themeId,\n    /**\n     * This `theme` object needs to follow a certain structure to\n     * be used correctly by the finel `CssVarsProvider`. It should have a\n     * `colorSchemes` key with the light and dark (and any other) palette.\n     * It should also ideally have a vars object created using `prepareCssVars`.\n     */\n    theme: defaultTheme = {},\n    attribute: defaultAttribute = DEFAULT_ATTRIBUTE,\n    modeStorageKey: defaultModeStorageKey = DEFAULT_MODE_STORAGE_KEY,\n    colorSchemeStorageKey: defaultColorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,\n    defaultMode: designSystemMode = 'light',\n    defaultColorScheme: designSystemColorScheme,\n    disableTransitionOnChange: designSystemTransitionOnChange = false,\n    resolveTheme,\n    excludeVariablesFromRoot\n  } = options;\n  if (!defaultTheme.colorSchemes || typeof designSystemColorScheme === 'string' && !defaultTheme.colorSchemes[designSystemColorScheme] || typeof designSystemColorScheme === 'object' && !defaultTheme.colorSchemes[designSystemColorScheme == null ? void 0 : designSystemColorScheme.light] || typeof designSystemColorScheme === 'object' && !defaultTheme.colorSchemes[designSystemColorScheme == null ? void 0 : designSystemColorScheme.dark]) {\n    console.error(`MUI: \\`${designSystemColorScheme}\\` does not exist in \\`theme.colorSchemes\\`.`);\n  }\n  const ColorSchemeContext = /*#__PURE__*/React.createContext(undefined);\n  if (process.env.NODE_ENV !== 'production') {\n    ColorSchemeContext.displayName = 'ColorSchemeContext';\n  }\n  const useColorScheme = () => {\n    const value = React.useContext(ColorSchemeContext);\n    if (!value) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`useColorScheme\\` must be called under <CssVarsProvider />` : _formatMuiErrorMessage(19));\n    }\n    return value;\n  };\n  function CssVarsProvider(props) {\n    const {\n      children,\n      theme: themeProp = defaultTheme,\n      modeStorageKey = defaultModeStorageKey,\n      colorSchemeStorageKey = defaultColorSchemeStorageKey,\n      attribute = defaultAttribute,\n      defaultMode = designSystemMode,\n      defaultColorScheme = designSystemColorScheme,\n      disableTransitionOnChange = designSystemTransitionOnChange,\n      storageWindow = typeof window === 'undefined' ? undefined : window,\n      documentNode = typeof document === 'undefined' ? undefined : document,\n      colorSchemeNode = typeof document === 'undefined' ? undefined : document.documentElement,\n      colorSchemeSelector = ':root',\n      disableNestedContext = false,\n      disableStyleSheetGeneration = false\n    } = props;\n    const hasMounted = React.useRef(false);\n    const upperTheme = muiUseTheme();\n    const ctx = React.useContext(ColorSchemeContext);\n    const nested = !!ctx && !disableNestedContext;\n    const scopedTheme = themeProp[themeId];\n    const _ref = scopedTheme || themeProp,\n      {\n        colorSchemes = {},\n        components = {},\n        generateCssVars = () => ({\n          vars: {},\n          css: {}\n        }),\n        cssVarPrefix\n      } = _ref,\n      restThemeProp = _objectWithoutPropertiesLoose(_ref, _excluded);\n    const allColorSchemes = Object.keys(colorSchemes);\n    const defaultLightColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.light;\n    const defaultDarkColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.dark;\n\n    // 1. Get the data about the `mode`, `colorScheme`, and setter functions.\n    const {\n      mode: stateMode,\n      setMode,\n      systemMode,\n      lightColorScheme,\n      darkColorScheme,\n      colorScheme: stateColorScheme,\n      setColorScheme\n    } = useCurrentColorScheme({\n      supportedColorSchemes: allColorSchemes,\n      defaultLightColorScheme,\n      defaultDarkColorScheme,\n      modeStorageKey,\n      colorSchemeStorageKey,\n      defaultMode,\n      storageWindow\n    });\n    let mode = stateMode;\n    let colorScheme = stateColorScheme;\n    if (nested) {\n      mode = ctx.mode;\n      colorScheme = ctx.colorScheme;\n    }\n    const calculatedMode = (() => {\n      if (mode) {\n        return mode;\n      }\n      // This scope occurs on the server\n      if (defaultMode === 'system') {\n        return designSystemMode;\n      }\n      return defaultMode;\n    })();\n    const calculatedColorScheme = (() => {\n      if (!colorScheme) {\n        // This scope occurs on the server\n        if (calculatedMode === 'dark') {\n          return defaultDarkColorScheme;\n        }\n        // use light color scheme, if default mode is 'light' | 'system'\n        return defaultLightColorScheme;\n      }\n      return colorScheme;\n    })();\n\n    // 2. Create CSS variables and store them in objects (to be generated in stylesheets in the final step)\n    const {\n      css: rootCss,\n      vars: rootVars\n    } = generateCssVars();\n\n    // 3. Start composing the theme object\n    const theme = _extends({}, restThemeProp, {\n      components,\n      colorSchemes,\n      cssVarPrefix,\n      vars: rootVars,\n      getColorSchemeSelector: targetColorScheme => `[${attribute}=\"${targetColorScheme}\"] &`\n    });\n\n    // 4. Create color CSS variables and store them in objects (to be generated in stylesheets in the final step)\n    //    The default color scheme stylesheet is constructed to have the least CSS specificity.\n    //    The other color schemes uses selector, default as data attribute, to increase the CSS specificity so that they can override the default color scheme stylesheet.\n    const defaultColorSchemeStyleSheet = {};\n    const otherColorSchemesStyleSheet = {};\n    Object.entries(colorSchemes).forEach(([key, scheme]) => {\n      const {\n        css,\n        vars\n      } = generateCssVars(key);\n      theme.vars = deepmerge(theme.vars, vars);\n      if (key === calculatedColorScheme) {\n        // 4.1 Merge the selected color scheme to the theme\n        Object.keys(scheme).forEach(schemeKey => {\n          if (scheme[schemeKey] && typeof scheme[schemeKey] === 'object') {\n            // shallow merge the 1st level structure of the theme.\n            theme[schemeKey] = _extends({}, theme[schemeKey], scheme[schemeKey]);\n          } else {\n            theme[schemeKey] = scheme[schemeKey];\n          }\n        });\n        if (theme.palette) {\n          theme.palette.colorScheme = key;\n        }\n      }\n      const resolvedDefaultColorScheme = (() => {\n        if (typeof defaultColorScheme === 'string') {\n          return defaultColorScheme;\n        }\n        if (defaultMode === 'dark') {\n          return defaultColorScheme.dark;\n        }\n        return defaultColorScheme.light;\n      })();\n      if (key === resolvedDefaultColorScheme) {\n        if (excludeVariablesFromRoot) {\n          const excludedVariables = {};\n          excludeVariablesFromRoot(cssVarPrefix).forEach(cssVar => {\n            excludedVariables[cssVar] = css[cssVar];\n            delete css[cssVar];\n          });\n          defaultColorSchemeStyleSheet[`[${attribute}=\"${key}\"]`] = excludedVariables;\n        }\n        defaultColorSchemeStyleSheet[`${colorSchemeSelector}, [${attribute}=\"${key}\"]`] = css;\n      } else {\n        otherColorSchemesStyleSheet[`${colorSchemeSelector === ':root' ? '' : colorSchemeSelector}[${attribute}=\"${key}\"]`] = css;\n      }\n    });\n    theme.vars = deepmerge(theme.vars, rootVars);\n\n    // 5. Declaring effects\n    // 5.1 Updates the selector value to use the current color scheme which tells CSS to use the proper stylesheet.\n    React.useEffect(() => {\n      if (colorScheme && colorSchemeNode) {\n        // attaches attribute to <html> because the css variables are attached to :root (html)\n        colorSchemeNode.setAttribute(attribute, colorScheme);\n      }\n    }, [colorScheme, attribute, colorSchemeNode]);\n\n    // 5.2 Remove the CSS transition when color scheme changes to create instant experience.\n    // credit: https://github.com/pacocoursey/next-themes/blob/b5c2bad50de2d61ad7b52a9c5cdc801a78507d7a/index.tsx#L313\n    React.useEffect(() => {\n      let timer;\n      if (disableTransitionOnChange && hasMounted.current && documentNode) {\n        const css = documentNode.createElement('style');\n        css.appendChild(documentNode.createTextNode(DISABLE_CSS_TRANSITION));\n        documentNode.head.appendChild(css);\n\n        // Force browser repaint\n        (() => window.getComputedStyle(documentNode.body))();\n        timer = setTimeout(() => {\n          documentNode.head.removeChild(css);\n        }, 1);\n      }\n      return () => {\n        clearTimeout(timer);\n      };\n    }, [colorScheme, disableTransitionOnChange, documentNode]);\n    React.useEffect(() => {\n      hasMounted.current = true;\n      return () => {\n        hasMounted.current = false;\n      };\n    }, []);\n    const contextValue = React.useMemo(() => ({\n      allColorSchemes,\n      colorScheme,\n      darkColorScheme,\n      lightColorScheme,\n      mode,\n      setColorScheme,\n      setMode,\n      systemMode\n    }), [allColorSchemes, colorScheme, darkColorScheme, lightColorScheme, mode, setColorScheme, setMode, systemMode]);\n    let shouldGenerateStyleSheet = true;\n    if (disableStyleSheetGeneration || nested && (upperTheme == null ? void 0 : upperTheme.cssVarPrefix) === cssVarPrefix) {\n      shouldGenerateStyleSheet = false;\n    }\n    const element = /*#__PURE__*/_jsxs(React.Fragment, {\n      children: [shouldGenerateStyleSheet && /*#__PURE__*/_jsxs(React.Fragment, {\n        children: [/*#__PURE__*/_jsx(GlobalStyles, {\n          styles: {\n            [colorSchemeSelector]: rootCss\n          }\n        }), /*#__PURE__*/_jsx(GlobalStyles, {\n          styles: defaultColorSchemeStyleSheet\n        }), /*#__PURE__*/_jsx(GlobalStyles, {\n          styles: otherColorSchemesStyleSheet\n        })]\n      }), /*#__PURE__*/_jsx(ThemeProvider, {\n        themeId: scopedTheme ? themeId : undefined,\n        theme: resolveTheme ? resolveTheme(theme) : theme,\n        children: children\n      })]\n    });\n    if (nested) {\n      return element;\n    }\n    return /*#__PURE__*/_jsx(ColorSchemeContext.Provider, {\n      value: contextValue,\n      children: element\n    });\n  }\n  process.env.NODE_ENV !== \"production\" ? CssVarsProvider.propTypes = {\n    /**\n     * The body attribute name to attach colorScheme.\n     */\n    attribute: PropTypes.string,\n    /**\n     * The component tree.\n     */\n    children: PropTypes.node,\n    /**\n     * The node used to attach the color-scheme attribute\n     */\n    colorSchemeNode: PropTypes.any,\n    /**\n     * The CSS selector for attaching the generated custom properties\n     */\n    colorSchemeSelector: PropTypes.string,\n    /**\n     * localStorage key used to store `colorScheme`\n     */\n    colorSchemeStorageKey: PropTypes.string,\n    /**\n     * The initial color scheme used.\n     */\n    defaultColorScheme: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n    /**\n     * The initial mode used.\n     */\n    defaultMode: PropTypes.string,\n    /**\n     * If `true`, the provider creates its own context and generate stylesheet as if it is a root `CssVarsProvider`.\n     */\n    disableNestedContext: PropTypes.bool,\n    /**\n     * If `true`, the style sheet won't be generated.\n     *\n     * This is useful for controlling nested CssVarsProvider behavior.\n     */\n    disableStyleSheetGeneration: PropTypes.bool,\n    /**\n     * Disable CSS transitions when switching between modes or color schemes.\n     */\n    disableTransitionOnChange: PropTypes.bool,\n    /**\n     * The document to attach the attribute to.\n     */\n    documentNode: PropTypes.any,\n    /**\n     * The key in the local storage used to store current color scheme.\n     */\n    modeStorageKey: PropTypes.string,\n    /**\n     * The window that attaches the 'storage' event listener.\n     * @default window\n     */\n    storageWindow: PropTypes.any,\n    /**\n     * The calculated theme object that will be passed through context.\n     */\n    theme: PropTypes.object\n  } : void 0;\n  const defaultLightColorScheme = typeof designSystemColorScheme === 'string' ? designSystemColorScheme : designSystemColorScheme.light;\n  const defaultDarkColorScheme = typeof designSystemColorScheme === 'string' ? designSystemColorScheme : designSystemColorScheme.dark;\n  const getInitColorSchemeScript = params => InitColorSchemeScript(_extends({\n    attribute: defaultAttribute,\n    colorSchemeStorageKey: defaultColorSchemeStorageKey,\n    defaultMode: designSystemMode,\n    defaultLightColorScheme,\n    defaultDarkColorScheme,\n    modeStorageKey: defaultModeStorageKey\n  }, params));\n  return {\n    CssVarsProvider,\n    useColorScheme,\n    getInitColorSchemeScript\n  };\n}", "/**\n * The benefit of this function is to help developers get CSS var from theme without specifying the whole variable\n * and they does not need to remember the prefix (defined once).\n */\nexport default function createGetCssVar(prefix = '') {\n  function appendVar(...vars) {\n    if (!vars.length) {\n      return '';\n    }\n    const value = vars[0];\n    if (typeof value === 'string' && !value.match(/(#|\\(|\\)|(-?(\\d*\\.)?\\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\\d*\\.)?\\d+)$|(\\d+ \\d+ \\d+)/)) {\n      return `, var(--${prefix ? `${prefix}-` : ''}${value}${appendVar(...vars.slice(1))})`;\n    }\n    return `, ${value}`;\n  }\n\n  // AdditionalVars makes `getCssVar` less strict, so it can be use like this `getCssVar('non-mui-variable')` without type error.\n  const getCssVar = (field, ...fallbacks) => {\n    return `var(--${prefix ? `${prefix}-` : ''}${field}${appendVar(...fallbacks)})`;\n  };\n  return getCssVar;\n}", "function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };", "import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };", "export const version = \"5.18.0\";\nexport const major = Number(\"5\");\nexport const minor = Number(\"18\");\nexport const patch = Number(\"0\");\nexport const preReleaseLabel = undefined || null;\nexport const preReleaseNumber = Number(undefined) || null;\nexport default version;", "import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getContainerUtilityClass(slot) {\n  return generateUtilityClass('MuiContainer', slot);\n}\nconst containerClasses = generateUtilityClasses('MuiContainer', ['root', 'disableGutters', 'fixed', 'maxWidthXs', 'maxWidthSm', 'maxWidthMd', 'maxWidthLg', 'maxWidthXl']);\nexport default containerClasses;", "'use client';\n\nexport { default } from './Container';\nexport { default as containerClasses } from './containerClasses';\nexport * from './containerClasses';", "export {};", "import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getGridUtilityClass(slot) {\n  return generateUtilityClass('MuiGrid', slot);\n}\nconst SPACINGS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nconst DIRECTIONS = ['column-reverse', 'column', 'row-reverse', 'row'];\nconst WRAPS = ['nowrap', 'wrap-reverse', 'wrap'];\nconst GRID_SIZES = ['auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\nconst gridClasses = generateUtilityClasses('MuiGrid', ['root', 'container', 'item',\n// spacings\n...SPACINGS.map(spacing => `spacing-xs-${spacing}`),\n// direction values\n...DIRECTIONS.map(direction => `direction-xs-${direction}`),\n// wrap values\n...WRAPS.map(wrap => `wrap-xs-${wrap}`),\n// grid sizes for all breakpoints\n...GRID_SIZES.map(size => `grid-xs-${size}`), ...GRID_SIZES.map(size => `grid-sm-${size}`), ...GRID_SIZES.map(size => `grid-md-${size}`), ...GRID_SIZES.map(size => `grid-lg-${size}`), ...GRID_SIZES.map(size => `grid-xl-${size}`)]);\nexport default gridClasses;", "'use client';\n\nexport { default } from './Grid';\nexport { default as createGrid } from './createGrid';\nexport * from './GridProps';\nexport { default as gridClasses } from './gridClasses';\nexport * from './gridClasses';\nexport { traverseBreakpoints as unstable_traverseBreakpoints } from './traverseBreakpoints';", "export {};", "import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getStackUtilityClass(slot) {\n  return generateUtilityClass('MuiStack', slot);\n}\nconst stackClasses = generateUtilityClasses('MuiStack', ['root']);\nexport default stackClasses;", "'use client';\n\nexport { default } from './Stack';\nexport { default as createStack } from './createStack';\nexport * from './StackProps';\nexport { default as stackClasses } from './stackClasses';\nexport * from './stackClasses';", "import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nexport { css, keyframes, StyledEngineProvider } from '@mui/styled-engine';\nexport { default as GlobalStyles } from './GlobalStyles';\nexport { default as borders } from './borders';\nexport * from './borders';\nexport { default as breakpoints } from './breakpoints';\nexport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues as unstable_resolveBreakpointValues } from './breakpoints';\nexport { default as compose } from './compose';\nexport { default as display } from './display';\nexport { default as flexbox } from './flexbox';\nexport * from './flexbox';\nexport { default as grid } from './cssGrid';\nexport * from './cssGrid';\nexport { default as palette } from './palette';\nexport * from './palette';\nexport { default as positions } from './positions';\nexport * from './positions';\nexport { default as shadows } from './shadows';\nexport { default as sizing } from './sizing';\nexport * from './sizing';\nexport { default as spacing } from './spacing';\nexport * from './spacing';\nexport { default as style, getPath, getStyleValue } from './style';\nexport { default as typography } from './typography';\nexport * from './typography';\nexport { default as unstable_styleFunctionSx, unstable_createStyleFunctionSx, extendSxProp as unstable_extendSxProp, unstable_defaultSxConfig } from './styleFunctionSx';\n// TODO: Remove this function in v6\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function experimental_sx() {\n  throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`experimental_sx\\` has been moved to \\`theme.unstable_sx\\`.For more details, see https://github.com/mui/material-ui/pull/35150.` : _formatMuiErrorMessage(20));\n}\nexport { default as unstable_getThemeValue } from './getThemeValue';\nexport { default as Box } from './Box';\nexport { default as createBox } from './createBox';\nexport { default as createStyled } from './createStyled';\nexport * from './createStyled';\nexport { default as styled } from './styled';\nexport { default as createTheme } from './createTheme';\nexport { default as createBreakpoints } from './createTheme/createBreakpoints';\nexport { default as createSpacing } from './createTheme/createSpacing';\nexport { default as shape } from './createTheme/shape';\nexport { default as useThemeProps, getThemeProps } from './useThemeProps';\nexport { default as useTheme } from './useTheme';\nexport { default as useThemeWithoutDefault } from './useThemeWithoutDefault';\nexport { default as useMediaQuery } from './useMediaQuery';\nexport * from './colorManipulator';\nexport { default as ThemeProvider } from './ThemeProvider';\nexport { default as unstable_createCssVarsProvider } from './cssVars/createCssVarsProvider';\nexport { default as unstable_createGetCssVar } from './cssVars/createGetCssVar';\nexport { default as unstable_cssVarsParser } from './cssVars/cssVarsParser';\nexport { default as unstable_prepareCssVars } from './cssVars/prepareCssVars';\nexport { default as unstable_createCssVarsTheme } from './cssVars/createCssVarsTheme';\nexport { default as responsivePropType } from './responsivePropType';\nexport { default as RtlProvider } from './RtlProvider';\nexport * from './RtlProvider';\nexport * from './version';\n\n/** ----------------- */\n/** Layout components */\nexport { default as createContainer } from './Container/createContainer';\nexport { default as Container } from './Container';\nexport * from './Container';\nexport { default as Unstable_Grid } from './Unstable_Grid/Grid';\nexport * from './Unstable_Grid';\nexport { default as Stack } from './Stack/Stack';\nexport * from './Stack';", "export { unstable_generateUtilityClass as default } from '@mui/utils';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n  return _extends({\n    toolbar: {\n      minHeight: 56,\n      [breakpoints.up('xs')]: {\n        '@media (orientation: landscape)': {\n          minHeight: 48\n        }\n      },\n      [breakpoints.up('sm')]: {\n        minHeight: 64\n      }\n    }\n  }, mixins);\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport { deepmerge } from '@mui/utils';\nimport { darken, getContrastRatio, lighten } from '@mui/system';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n  // The colors used to style the text.\n  text: {\n    // The most important text.\n    primary: 'rgba(0, 0, 0, 0.87)',\n    // Secondary text.\n    secondary: 'rgba(0, 0, 0, 0.6)',\n    // Disabled text have even lower visual prominence.\n    disabled: 'rgba(0, 0, 0, 0.38)'\n  },\n  // The color used to divide different elements.\n  divider: 'rgba(0, 0, 0, 0.12)',\n  // The background colors used to style the surfaces.\n  // Consistency between these values is important.\n  background: {\n    paper: common.white,\n    default: common.white\n  },\n  // The colors used to style the action elements.\n  action: {\n    // The color of an active action like an icon button.\n    active: 'rgba(0, 0, 0, 0.54)',\n    // The color of an hovered action.\n    hover: 'rgba(0, 0, 0, 0.04)',\n    hoverOpacity: 0.04,\n    // The color of a selected action.\n    selected: 'rgba(0, 0, 0, 0.08)',\n    selectedOpacity: 0.08,\n    // The color of a disabled action.\n    disabled: 'rgba(0, 0, 0, 0.26)',\n    // The background color of a disabled action.\n    disabledBackground: 'rgba(0, 0, 0, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(0, 0, 0, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.12\n  }\n};\nexport const dark = {\n  text: {\n    primary: common.white,\n    secondary: 'rgba(255, 255, 255, 0.7)',\n    disabled: 'rgba(255, 255, 255, 0.5)',\n    icon: 'rgba(255, 255, 255, 0.5)'\n  },\n  divider: 'rgba(255, 255, 255, 0.12)',\n  background: {\n    paper: '#121212',\n    default: '#121212'\n  },\n  action: {\n    active: common.white,\n    hover: 'rgba(255, 255, 255, 0.08)',\n    hoverOpacity: 0.08,\n    selected: 'rgba(255, 255, 255, 0.16)',\n    selectedOpacity: 0.16,\n    disabled: 'rgba(255, 255, 255, 0.3)',\n    disabledBackground: 'rgba(255, 255, 255, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(255, 255, 255, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.24\n  }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n  const tonalOffsetLight = tonalOffset.light || tonalOffset;\n  const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n  if (!intent[direction]) {\n    if (intent.hasOwnProperty(shade)) {\n      intent[direction] = intent[shade];\n    } else if (direction === 'light') {\n      intent.light = lighten(intent.main, tonalOffsetLight);\n    } else if (direction === 'dark') {\n      intent.dark = darken(intent.main, tonalOffsetDark);\n    }\n  }\n}\nfunction getDefaultPrimary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: blue[200],\n      light: blue[50],\n      dark: blue[400]\n    };\n  }\n  return {\n    main: blue[700],\n    light: blue[400],\n    dark: blue[800]\n  };\n}\nfunction getDefaultSecondary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: purple[200],\n      light: purple[50],\n      dark: purple[400]\n    };\n  }\n  return {\n    main: purple[500],\n    light: purple[300],\n    dark: purple[700]\n  };\n}\nfunction getDefaultError(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: red[500],\n      light: red[300],\n      dark: red[700]\n    };\n  }\n  return {\n    main: red[700],\n    light: red[400],\n    dark: red[800]\n  };\n}\nfunction getDefaultInfo(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: lightBlue[400],\n      light: lightBlue[300],\n      dark: lightBlue[700]\n    };\n  }\n  return {\n    main: lightBlue[700],\n    light: lightBlue[500],\n    dark: lightBlue[900]\n  };\n}\nfunction getDefaultSuccess(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: green[400],\n      light: green[300],\n      dark: green[700]\n    };\n  }\n  return {\n    main: green[800],\n    light: green[500],\n    dark: green[900]\n  };\n}\nfunction getDefaultWarning(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: orange[400],\n      light: orange[300],\n      dark: orange[700]\n    };\n  }\n  return {\n    main: '#ed6c02',\n    // closest to orange[800] that pass 3:1.\n    light: orange[500],\n    dark: orange[900]\n  };\n}\nexport default function createPalette(palette) {\n  const {\n      mode = 'light',\n      contrastThreshold = 3,\n      tonalOffset = 0.2\n    } = palette,\n    other = _objectWithoutPropertiesLoose(palette, _excluded);\n  const primary = palette.primary || getDefaultPrimary(mode);\n  const secondary = palette.secondary || getDefaultSecondary(mode);\n  const error = palette.error || getDefaultError(mode);\n  const info = palette.info || getDefaultInfo(mode);\n  const success = palette.success || getDefaultSuccess(mode);\n  const warning = palette.warning || getDefaultWarning(mode);\n\n  // Use the same logic as\n  // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n  // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n  function getContrastText(background) {\n    const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n    if (process.env.NODE_ENV !== 'production') {\n      const contrast = getContrastRatio(background, contrastText);\n      if (contrast < 3) {\n        console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n      }\n    }\n    return contrastText;\n  }\n  const augmentColor = ({\n    color,\n    name,\n    mainShade = 500,\n    lightShade = 300,\n    darkShade = 700\n  }) => {\n    color = _extends({}, color);\n    if (!color.main && color[mainShade]) {\n      color.main = color[mainShade];\n    }\n    if (!color.hasOwnProperty('main')) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n    }\n    if (typeof color.main !== 'string') {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n  primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n  primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n    }\n    addLightOrDark(color, 'light', lightShade, tonalOffset);\n    addLightOrDark(color, 'dark', darkShade, tonalOffset);\n    if (!color.contrastText) {\n      color.contrastText = getContrastText(color.main);\n    }\n    return color;\n  };\n  const modes = {\n    dark,\n    light\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    if (!modes[mode]) {\n      console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n    }\n  }\n  const paletteOutput = deepmerge(_extends({\n    // A collection of common colors.\n    common: _extends({}, common),\n    // prevent mutable object.\n    // The palette mode, can be light or dark.\n    mode,\n    // The colors used to represent primary interface elements for a user.\n    primary: augmentColor({\n      color: primary,\n      name: 'primary'\n    }),\n    // The colors used to represent secondary interface elements for a user.\n    secondary: augmentColor({\n      color: secondary,\n      name: 'secondary',\n      mainShade: 'A400',\n      lightShade: 'A200',\n      darkShade: 'A700'\n    }),\n    // The colors used to represent interface elements that the user should be made aware of.\n    error: augmentColor({\n      color: error,\n      name: 'error'\n    }),\n    // The colors used to represent potentially dangerous actions or important messages.\n    warning: augmentColor({\n      color: warning,\n      name: 'warning'\n    }),\n    // The colors used to present information to the user that is neutral and not necessarily important.\n    info: augmentColor({\n      color: info,\n      name: 'info'\n    }),\n    // The colors used to indicate the successful completion of an action that user triggered.\n    success: augmentColor({\n      color: success,\n      name: 'success'\n    }),\n    // The grey colors.\n    grey,\n    // Used by `getContrastText()` to maximize the contrast between\n    // the background and the text.\n    contrastThreshold,\n    // Takes a background color and returns the text color that maximizes the contrast.\n    getContrastText,\n    // Generate a rich color object.\n    augmentColor,\n    // Used by the functions below to shift a color's luminance by approximately\n    // two indexes within its tonal palette.\n    // E.g., shift from Red 500 to Red 300 or Red 700.\n    tonalOffset\n  }, modes[mode]), other);\n  return paletteOutput;\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport { deepmerge } from '@mui/utils';\nfunction round(value) {\n  return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n  textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n  const _ref = typeof typography === 'function' ? typography(palette) : typography,\n    {\n      fontFamily = defaultFontFamily,\n      // The default font size of the Material Specification.\n      fontSize = 14,\n      // px\n      fontWeightLight = 300,\n      fontWeightRegular = 400,\n      fontWeightMedium = 500,\n      fontWeightBold = 700,\n      // Tell MUI what's the font-size on the html element.\n      // 16px is the default font-size used by browsers.\n      htmlFontSize = 16,\n      // Apply the CSS properties to all the variants.\n      allVariants,\n      pxToRem: pxToRem2\n    } = _ref,\n    other = _objectWithoutPropertiesLoose(_ref, _excluded);\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof fontSize !== 'number') {\n      console.error('MUI: `fontSize` is required to be a number.');\n    }\n    if (typeof htmlFontSize !== 'number') {\n      console.error('MUI: `htmlFontSize` is required to be a number.');\n    }\n  }\n  const coef = fontSize / 14;\n  const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n  const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n    fontFamily,\n    fontWeight,\n    fontSize: pxToRem(size),\n    // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n    lineHeight\n  }, fontFamily === defaultFontFamily ? {\n    letterSpacing: `${round(letterSpacing / size)}em`\n  } : {}, casing, allVariants);\n  const variants = {\n    h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n    h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n    h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n    h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n    h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n    h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n    subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n    subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n    body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n    body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n    button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n    caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n    overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps)\n  };\n  return deepmerge(_extends({\n    htmlFontSize,\n    pxToRem,\n    fontFamily,\n    fontSize,\n    fontWeightLight,\n    fontWeightRegular,\n    fontWeightMedium,\n    fontWeightBold\n  }, variants), other, {\n    clone: false // No need to clone deep\n  });\n}", "const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n  return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n  // This is the most common easing curve.\n  easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n  // Objects enter the screen at full velocity from off-screen and\n  // slowly decelerate to a resting point.\n  easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n  // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n  easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n  // The sharp curve is used by objects that may return to the screen at any time.\n  sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n  shortest: 150,\n  shorter: 200,\n  short: 250,\n  // most basic recommended timing\n  standard: 300,\n  // this is to be used in complex animations\n  complex: 375,\n  // recommended when something is entering screen\n  enteringScreen: 225,\n  // recommended when something is leaving screen\n  leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n  return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n  if (!height) {\n    return 0;\n  }\n  const constant = height / 36;\n\n  // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n  return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n  const mergedEasing = _extends({}, easing, inputTransitions.easing);\n  const mergedDuration = _extends({}, duration, inputTransitions.duration);\n  const create = (props = ['all'], options = {}) => {\n    const {\n        duration: durationOption = mergedDuration.standard,\n        easing: easingOption = mergedEasing.easeInOut,\n        delay = 0\n      } = options,\n      other = _objectWithoutPropertiesLoose(options, _excluded);\n    if (process.env.NODE_ENV !== 'production') {\n      const isString = value => typeof value === 'string';\n      // IE11 support, replace with Number.isNaN\n      // eslint-disable-next-line no-restricted-globals\n      const isNumber = value => !isNaN(parseFloat(value));\n      if (!isString(props) && !Array.isArray(props)) {\n        console.error('MUI: Argument \"props\" must be a string or Array.');\n      }\n      if (!isNumber(durationOption) && !isString(durationOption)) {\n        console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n      }\n      if (!isString(easingOption)) {\n        console.error('MUI: Argument \"easing\" must be a string.');\n      }\n      if (!isNumber(delay) && !isString(delay)) {\n        console.error('MUI: Argument \"delay\" must be a number or a string.');\n      }\n      if (Object.keys(other).length !== 0) {\n        console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n      }\n    }\n    return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n  };\n  return _extends({\n    getAutoHeightDuration,\n    create\n  }, inputTransitions, {\n    easing: mergedEasing,\n    duration: mergedDuration\n  });\n}", "// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n  mobileStepper: 1000,\n  fab: 1050,\n  speedDial: 1050,\n  appBar: 1100,\n  drawer: 1200,\n  modal: 1300,\n  snackbar: 1400,\n  tooltip: 1500\n};\nexport default zIndex;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport { createTheme as systemCreateTheme, unstable_defaultSxConfig as defaultSxConfig, unstable_styleFunctionSx as styleFunctionSx } from '@mui/system';\nimport generateUtilityClass from '../generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n  const {\n      mixins: mixinsInput = {},\n      palette: paletteInput = {},\n      transitions: transitionsInput = {},\n      typography: typographyInput = {}\n    } = options,\n    other = _objectWithoutPropertiesLoose(options, _excluded);\n  if (options.vars) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n  }\n  const palette = createPalette(paletteInput);\n  const systemTheme = systemCreateTheme(options);\n  let muiTheme = deepmerge(systemTheme, {\n    mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n    palette,\n    // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n    shadows: shadows.slice(),\n    typography: createTypography(palette, typographyInput),\n    transitions: createTransitions(transitionsInput),\n    zIndex: _extends({}, zIndex)\n  });\n  muiTheme = deepmerge(muiTheme, other);\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  if (process.env.NODE_ENV !== 'production') {\n    const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n    const traverse = (node, component) => {\n      let key;\n\n      // eslint-disable-next-line guard-for-in, no-restricted-syntax\n      for (key in node) {\n        const child = node[key];\n        if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n          if (process.env.NODE_ENV !== 'production') {\n            const stateClass = generateUtilityClass('', key);\n            console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n              root: {\n                [`&.${stateClass}`]: child\n              }\n            }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n          }\n          // Remove the style to prevent global conflicts.\n          node[key] = {};\n        }\n      }\n    };\n    Object.keys(muiTheme.components).forEach(component => {\n      const styleOverrides = muiTheme.components[component].styleOverrides;\n      if (styleOverrides && component.indexOf('Mui') === 0) {\n        traverse(styleOverrides, component);\n      }\n    });\n  }\n  muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!warnedOnce) {\n      warnedOnce = true;\n      console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n    }\n  }\n  return createTheme(...args);\n}\nexport default createTheme;", "export function isUnitless(value) {\n  return String(parseFloat(value)).length === String(value).length;\n}\n\n// Ported from Compass\n// https://github.com/Compass/compass/blob/master/core/stylesheets/compass/typography/_units.scss\n// Emulate the sass function \"unit\"\nexport function getUnit(input) {\n  return String(input).match(/[\\d.\\-+]*\\s*(.*)/)[1] || '';\n}\n\n// Emulate the sass function \"unitless\"\nexport function toUnitless(length) {\n  return parseFloat(length);\n}\n\n// Convert any CSS <length> or <percentage> value to any another.\n// From https://github.com/KyleAMathews/convert-css-length\nexport function convertLength(baseFontSize) {\n  return (length, toUnit) => {\n    const fromUnit = getUnit(length);\n\n    // Optimize for cases where `from` and `to` units are accidentally the same.\n    if (fromUnit === toUnit) {\n      return length;\n    }\n\n    // Convert input length to pixels.\n    let pxLength = toUnitless(length);\n    if (fromUnit !== 'px') {\n      if (fromUnit === 'em') {\n        pxLength = toUnitless(length) * toUnitless(baseFontSize);\n      } else if (fromUnit === 'rem') {\n        pxLength = toUnitless(length) * toUnitless(baseFontSize);\n      }\n    }\n\n    // Convert length in pixels to the output unit\n    let outputLength = pxLength;\n    if (toUnit !== 'px') {\n      if (toUnit === 'em') {\n        outputLength = pxLength / toUnitless(baseFontSize);\n      } else if (toUnit === 'rem') {\n        outputLength = pxLength / toUnitless(baseFontSize);\n      } else {\n        return length;\n      }\n    }\n    return parseFloat(outputLength.toFixed(5)) + toUnit;\n  };\n}\nexport function alignProperty({\n  size,\n  grid\n}) {\n  const sizeBelow = size - size % grid;\n  const sizeAbove = sizeBelow + grid;\n  return size - sizeBelow < sizeAbove - size ? sizeBelow : sizeAbove;\n}\n\n// fontGrid finds a minimal grid (in rem) for the fontSize values so that the\n// lineHeight falls under a x pixels grid, 4px in the case of Material Design,\n// without changing the relative line height\nexport function fontGrid({\n  lineHeight,\n  pixels,\n  htmlFontSize\n}) {\n  return pixels / (lineHeight * htmlFontSize);\n}\n\n/**\n * generate a responsive version of a given CSS property\n * @example\n * responsiveProperty({\n *   cssProperty: 'fontSize',\n *   min: 15,\n *   max: 20,\n *   unit: 'px',\n *   breakpoints: [300, 600],\n * })\n *\n * // this returns\n *\n * {\n *   fontSize: '15px',\n *   '@media (min-width:300px)': {\n *     fontSize: '17.5px',\n *   },\n *   '@media (min-width:600px)': {\n *     fontSize: '20px',\n *   },\n * }\n * @param {Object} params\n * @param {string} params.cssProperty - The CSS property to be made responsive\n * @param {number} params.min - The smallest value of the CSS property\n * @param {number} params.max - The largest value of the CSS property\n * @param {string} [params.unit] - The unit to be used for the CSS property\n * @param {Array.number} [params.breakpoints]  - An array of breakpoints\n * @param {number} [params.alignStep] - Round scaled value to fall under this grid\n * @returns {Object} responsive styles for {params.cssProperty}\n */\nexport function responsiveProperty({\n  cssProperty,\n  min,\n  max,\n  unit = 'rem',\n  breakpoints = [600, 900, 1200],\n  transform = null\n}) {\n  const output = {\n    [cssProperty]: `${min}${unit}`\n  };\n  const factor = (max - min) / breakpoints[breakpoints.length - 1];\n  breakpoints.forEach(breakpoint => {\n    let value = min + factor * breakpoint;\n    if (transform !== null) {\n      value = transform(value);\n    }\n    output[`@media (min-width:${breakpoint}px)`] = {\n      [cssProperty]: `${Math.round(value * 10000) / 10000}${unit}`\n    };\n  });\n  return output;\n}", "import createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;", "import * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport default function useTheme() {\n  const theme = useThemeSystem(defaultTheme);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useDebugValue(theme);\n  }\n  return theme;\n}", "import { useThemeProps as systemUseThemeProps } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport default function useThemeProps({\n  props,\n  name\n}) {\n  return systemUseThemeProps({\n    props,\n    name,\n    defaultTheme\n  });\n}", "import { createStyled, shouldForwardProp } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport const rootShouldForwardProp = prop => shouldForwardProp(prop) && prop !== 'classes';\nexport const slotShouldForwardProp = shouldForwardProp;\nconst styled = createStyled({\n  defaultTheme,\n  rootShouldForwardProp\n});\nexport default styled;", "export { ThemeProvider as default } from '@mui/system';", "// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\nconst getOverlayAlpha = elevation => {\n  let alphaValue;\n  if (elevation < 1) {\n    alphaValue = 5.11916 * elevation ** 2;\n  } else {\n    alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n  }\n  return (alphaValue / 100).toFixed(2);\n};\nexport default getOverlayAlpha;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"colorSchemes\", \"cssVarPrefix\"],\n  _excluded2 = [\"palette\"];\nimport { deepmerge } from '@mui/utils';\nimport { private_safeColorChannel as safeColorChannel, private_safeAlpha as safeAlpha, private_safeDarken as safeDarken, private_safeLighten as safeLighten, private_safeEmphasize as safeEmphasize, unstable_createGetCssVar as systemCreateGetCssVar, unstable_defaultSxConfig as defaultSxConfig, unstable_styleFunctionSx as styleFunctionSx } from '@mui/system';\nimport createThemeWithoutVars from './createTheme';\nimport getOverlayAlpha from './getOverlayAlpha';\nconst defaultDarkOverlays = [...Array(25)].map((_, index) => {\n  if (index === 0) {\n    return undefined;\n  }\n  const overlay = getOverlayAlpha(index);\n  return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;\n});\nfunction assignNode(obj, keys) {\n  keys.forEach(k => {\n    if (!obj[k]) {\n      obj[k] = {};\n    }\n  });\n}\nfunction setColor(obj, key, defaultValue) {\n  if (!obj[key] && defaultValue) {\n    obj[key] = defaultValue;\n  }\n}\nfunction setColorChannel(obj, key) {\n  if (!(`${key}Channel` in obj)) {\n    // custom channel token is not provided, generate one.\n    // if channel token can't be generated, show a warning.\n    obj[`${key}Channel`] = safeColorChannel(obj[key], `MUI: Can't create \\`palette.${key}Channel\\` because \\`palette.${key}\\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` + '\\n' + `To suppress this warning, you need to explicitly provide the \\`palette.${key}Channel\\` as a string (in rgb format, e.g. \"12 12 12\") or undefined if you want to remove the channel token.`);\n  }\n}\nconst silent = fn => {\n  try {\n    return fn();\n  } catch (error) {\n    // ignore error\n  }\n  return undefined;\n};\nexport const createGetCssVar = (cssVarPrefix = 'mui') => systemCreateGetCssVar(cssVarPrefix);\nexport default function extendTheme(options = {}, ...args) {\n  var _colorSchemesInput$li, _colorSchemesInput$da, _colorSchemesInput$li2, _colorSchemesInput$li3, _colorSchemesInput$da2, _colorSchemesInput$da3;\n  const {\n      colorSchemes: colorSchemesInput = {},\n      cssVarPrefix = 'mui'\n    } = options,\n    input = _objectWithoutPropertiesLoose(options, _excluded);\n  const getCssVar = createGetCssVar(cssVarPrefix);\n  const _createThemeWithoutVa = createThemeWithoutVars(_extends({}, input, colorSchemesInput.light && {\n      palette: (_colorSchemesInput$li = colorSchemesInput.light) == null ? void 0 : _colorSchemesInput$li.palette\n    })),\n    {\n      palette: lightPalette\n    } = _createThemeWithoutVa,\n    muiTheme = _objectWithoutPropertiesLoose(_createThemeWithoutVa, _excluded2);\n  const {\n    palette: darkPalette\n  } = createThemeWithoutVars({\n    palette: _extends({\n      mode: 'dark'\n    }, (_colorSchemesInput$da = colorSchemesInput.dark) == null ? void 0 : _colorSchemesInput$da.palette)\n  });\n  let theme = _extends({}, muiTheme, {\n    cssVarPrefix,\n    getCssVar,\n    colorSchemes: _extends({}, colorSchemesInput, {\n      light: _extends({}, colorSchemesInput.light, {\n        palette: lightPalette,\n        opacity: _extends({\n          inputPlaceholder: 0.42,\n          inputUnderline: 0.42,\n          switchTrackDisabled: 0.12,\n          switchTrack: 0.38\n        }, (_colorSchemesInput$li2 = colorSchemesInput.light) == null ? void 0 : _colorSchemesInput$li2.opacity),\n        overlays: ((_colorSchemesInput$li3 = colorSchemesInput.light) == null ? void 0 : _colorSchemesInput$li3.overlays) || []\n      }),\n      dark: _extends({}, colorSchemesInput.dark, {\n        palette: darkPalette,\n        opacity: _extends({\n          inputPlaceholder: 0.5,\n          inputUnderline: 0.7,\n          switchTrackDisabled: 0.2,\n          switchTrack: 0.3\n        }, (_colorSchemesInput$da2 = colorSchemesInput.dark) == null ? void 0 : _colorSchemesInput$da2.opacity),\n        overlays: ((_colorSchemesInput$da3 = colorSchemesInput.dark) == null ? void 0 : _colorSchemesInput$da3.overlays) || defaultDarkOverlays\n      })\n    })\n  });\n  Object.keys(theme.colorSchemes).forEach(key => {\n    const palette = theme.colorSchemes[key].palette;\n\n    // attach black & white channels to common node\n    if (key === 'light') {\n      setColor(palette.common, 'background', '#fff');\n      setColor(palette.common, 'onBackground', '#000');\n    } else {\n      setColor(palette.common, 'background', '#000');\n      setColor(palette.common, 'onBackground', '#fff');\n    }\n\n    // assign component variables\n    assignNode(palette, ['Alert', 'AppBar', 'Avatar', 'Chip', 'FilledInput', 'LinearProgress', 'Skeleton', 'Slider', 'SnackbarContent', 'SpeedDialAction', 'StepConnector', 'StepContent', 'Switch', 'TableCell', 'Tooltip']);\n    if (key === 'light') {\n      setColor(palette.Alert, 'errorColor', safeDarken(palette.error.light, 0.6));\n      setColor(palette.Alert, 'infoColor', safeDarken(palette.info.light, 0.6));\n      setColor(palette.Alert, 'successColor', safeDarken(palette.success.light, 0.6));\n      setColor(palette.Alert, 'warningColor', safeDarken(palette.warning.light, 0.6));\n      setColor(palette.Alert, 'errorFilledBg', getCssVar('palette-error-main'));\n      setColor(palette.Alert, 'infoFilledBg', getCssVar('palette-info-main'));\n      setColor(palette.Alert, 'successFilledBg', getCssVar('palette-success-main'));\n      setColor(palette.Alert, 'warningFilledBg', getCssVar('palette-warning-main'));\n      setColor(palette.Alert, 'errorFilledColor', silent(() => lightPalette.getContrastText(palette.error.main)));\n      setColor(palette.Alert, 'infoFilledColor', silent(() => lightPalette.getContrastText(palette.info.main)));\n      setColor(palette.Alert, 'successFilledColor', silent(() => lightPalette.getContrastText(palette.success.main)));\n      setColor(palette.Alert, 'warningFilledColor', silent(() => lightPalette.getContrastText(palette.warning.main)));\n      setColor(palette.Alert, 'errorStandardBg', safeLighten(palette.error.light, 0.9));\n      setColor(palette.Alert, 'infoStandardBg', safeLighten(palette.info.light, 0.9));\n      setColor(palette.Alert, 'successStandardBg', safeLighten(palette.success.light, 0.9));\n      setColor(palette.Alert, 'warningStandardBg', safeLighten(palette.warning.light, 0.9));\n      setColor(palette.Alert, 'errorIconColor', getCssVar('palette-error-main'));\n      setColor(palette.Alert, 'infoIconColor', getCssVar('palette-info-main'));\n      setColor(palette.Alert, 'successIconColor', getCssVar('palette-success-main'));\n      setColor(palette.Alert, 'warningIconColor', getCssVar('palette-warning-main'));\n      setColor(palette.AppBar, 'defaultBg', getCssVar('palette-grey-100'));\n      setColor(palette.Avatar, 'defaultBg', getCssVar('palette-grey-400'));\n      setColor(palette.Chip, 'defaultBorder', getCssVar('palette-grey-400'));\n      setColor(palette.Chip, 'defaultAvatarColor', getCssVar('palette-grey-700'));\n      setColor(palette.Chip, 'defaultIconColor', getCssVar('palette-grey-700'));\n      setColor(palette.FilledInput, 'bg', 'rgba(0, 0, 0, 0.06)');\n      setColor(palette.FilledInput, 'hoverBg', 'rgba(0, 0, 0, 0.09)');\n      setColor(palette.FilledInput, 'disabledBg', 'rgba(0, 0, 0, 0.12)');\n      setColor(palette.LinearProgress, 'primaryBg', safeLighten(palette.primary.main, 0.62));\n      setColor(palette.LinearProgress, 'secondaryBg', safeLighten(palette.secondary.main, 0.62));\n      setColor(palette.LinearProgress, 'errorBg', safeLighten(palette.error.main, 0.62));\n      setColor(palette.LinearProgress, 'infoBg', safeLighten(palette.info.main, 0.62));\n      setColor(palette.LinearProgress, 'successBg', safeLighten(palette.success.main, 0.62));\n      setColor(palette.LinearProgress, 'warningBg', safeLighten(palette.warning.main, 0.62));\n      setColor(palette.Skeleton, 'bg', `rgba(${getCssVar('palette-text-primaryChannel')} / 0.11)`);\n      setColor(palette.Slider, 'primaryTrack', safeLighten(palette.primary.main, 0.62));\n      setColor(palette.Slider, 'secondaryTrack', safeLighten(palette.secondary.main, 0.62));\n      setColor(palette.Slider, 'errorTrack', safeLighten(palette.error.main, 0.62));\n      setColor(palette.Slider, 'infoTrack', safeLighten(palette.info.main, 0.62));\n      setColor(palette.Slider, 'successTrack', safeLighten(palette.success.main, 0.62));\n      setColor(palette.Slider, 'warningTrack', safeLighten(palette.warning.main, 0.62));\n      const snackbarContentBackground = safeEmphasize(palette.background.default, 0.8);\n      setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n      setColor(palette.SnackbarContent, 'color', silent(() => lightPalette.getContrastText(snackbarContentBackground)));\n      setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n      setColor(palette.StepConnector, 'border', getCssVar('palette-grey-400'));\n      setColor(palette.StepContent, 'border', getCssVar('palette-grey-400'));\n      setColor(palette.Switch, 'defaultColor', getCssVar('palette-common-white'));\n      setColor(palette.Switch, 'defaultDisabledColor', getCssVar('palette-grey-100'));\n      setColor(palette.Switch, 'primaryDisabledColor', safeLighten(palette.primary.main, 0.62));\n      setColor(palette.Switch, 'secondaryDisabledColor', safeLighten(palette.secondary.main, 0.62));\n      setColor(palette.Switch, 'errorDisabledColor', safeLighten(palette.error.main, 0.62));\n      setColor(palette.Switch, 'infoDisabledColor', safeLighten(palette.info.main, 0.62));\n      setColor(palette.Switch, 'successDisabledColor', safeLighten(palette.success.main, 0.62));\n      setColor(palette.Switch, 'warningDisabledColor', safeLighten(palette.warning.main, 0.62));\n      setColor(palette.TableCell, 'border', safeLighten(safeAlpha(palette.divider, 1), 0.88));\n      setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));\n    } else {\n      setColor(palette.Alert, 'errorColor', safeLighten(palette.error.light, 0.6));\n      setColor(palette.Alert, 'infoColor', safeLighten(palette.info.light, 0.6));\n      setColor(palette.Alert, 'successColor', safeLighten(palette.success.light, 0.6));\n      setColor(palette.Alert, 'warningColor', safeLighten(palette.warning.light, 0.6));\n      setColor(palette.Alert, 'errorFilledBg', getCssVar('palette-error-dark'));\n      setColor(palette.Alert, 'infoFilledBg', getCssVar('palette-info-dark'));\n      setColor(palette.Alert, 'successFilledBg', getCssVar('palette-success-dark'));\n      setColor(palette.Alert, 'warningFilledBg', getCssVar('palette-warning-dark'));\n      setColor(palette.Alert, 'errorFilledColor', silent(() => darkPalette.getContrastText(palette.error.dark)));\n      setColor(palette.Alert, 'infoFilledColor', silent(() => darkPalette.getContrastText(palette.info.dark)));\n      setColor(palette.Alert, 'successFilledColor', silent(() => darkPalette.getContrastText(palette.success.dark)));\n      setColor(palette.Alert, 'warningFilledColor', silent(() => darkPalette.getContrastText(palette.warning.dark)));\n      setColor(palette.Alert, 'errorStandardBg', safeDarken(palette.error.light, 0.9));\n      setColor(palette.Alert, 'infoStandardBg', safeDarken(palette.info.light, 0.9));\n      setColor(palette.Alert, 'successStandardBg', safeDarken(palette.success.light, 0.9));\n      setColor(palette.Alert, 'warningStandardBg', safeDarken(palette.warning.light, 0.9));\n      setColor(palette.Alert, 'errorIconColor', getCssVar('palette-error-main'));\n      setColor(palette.Alert, 'infoIconColor', getCssVar('palette-info-main'));\n      setColor(palette.Alert, 'successIconColor', getCssVar('palette-success-main'));\n      setColor(palette.Alert, 'warningIconColor', getCssVar('palette-warning-main'));\n      setColor(palette.AppBar, 'defaultBg', getCssVar('palette-grey-900'));\n      setColor(palette.AppBar, 'darkBg', getCssVar('palette-background-paper')); // specific for dark mode\n      setColor(palette.AppBar, 'darkColor', getCssVar('palette-text-primary')); // specific for dark mode\n      setColor(palette.Avatar, 'defaultBg', getCssVar('palette-grey-600'));\n      setColor(palette.Chip, 'defaultBorder', getCssVar('palette-grey-700'));\n      setColor(palette.Chip, 'defaultAvatarColor', getCssVar('palette-grey-300'));\n      setColor(palette.Chip, 'defaultIconColor', getCssVar('palette-grey-300'));\n      setColor(palette.FilledInput, 'bg', 'rgba(255, 255, 255, 0.09)');\n      setColor(palette.FilledInput, 'hoverBg', 'rgba(255, 255, 255, 0.13)');\n      setColor(palette.FilledInput, 'disabledBg', 'rgba(255, 255, 255, 0.12)');\n      setColor(palette.LinearProgress, 'primaryBg', safeDarken(palette.primary.main, 0.5));\n      setColor(palette.LinearProgress, 'secondaryBg', safeDarken(palette.secondary.main, 0.5));\n      setColor(palette.LinearProgress, 'errorBg', safeDarken(palette.error.main, 0.5));\n      setColor(palette.LinearProgress, 'infoBg', safeDarken(palette.info.main, 0.5));\n      setColor(palette.LinearProgress, 'successBg', safeDarken(palette.success.main, 0.5));\n      setColor(palette.LinearProgress, 'warningBg', safeDarken(palette.warning.main, 0.5));\n      setColor(palette.Skeleton, 'bg', `rgba(${getCssVar('palette-text-primaryChannel')} / 0.13)`);\n      setColor(palette.Slider, 'primaryTrack', safeDarken(palette.primary.main, 0.5));\n      setColor(palette.Slider, 'secondaryTrack', safeDarken(palette.secondary.main, 0.5));\n      setColor(palette.Slider, 'errorTrack', safeDarken(palette.error.main, 0.5));\n      setColor(palette.Slider, 'infoTrack', safeDarken(palette.info.main, 0.5));\n      setColor(palette.Slider, 'successTrack', safeDarken(palette.success.main, 0.5));\n      setColor(palette.Slider, 'warningTrack', safeDarken(palette.warning.main, 0.5));\n      const snackbarContentBackground = safeEmphasize(palette.background.default, 0.98);\n      setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n      setColor(palette.SnackbarContent, 'color', silent(() => darkPalette.getContrastText(snackbarContentBackground)));\n      setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n      setColor(palette.StepConnector, 'border', getCssVar('palette-grey-600'));\n      setColor(palette.StepContent, 'border', getCssVar('palette-grey-600'));\n      setColor(palette.Switch, 'defaultColor', getCssVar('palette-grey-300'));\n      setColor(palette.Switch, 'defaultDisabledColor', getCssVar('palette-grey-600'));\n      setColor(palette.Switch, 'primaryDisabledColor', safeDarken(palette.primary.main, 0.55));\n      setColor(palette.Switch, 'secondaryDisabledColor', safeDarken(palette.secondary.main, 0.55));\n      setColor(palette.Switch, 'errorDisabledColor', safeDarken(palette.error.main, 0.55));\n      setColor(palette.Switch, 'infoDisabledColor', safeDarken(palette.info.main, 0.55));\n      setColor(palette.Switch, 'successDisabledColor', safeDarken(palette.success.main, 0.55));\n      setColor(palette.Switch, 'warningDisabledColor', safeDarken(palette.warning.main, 0.55));\n      setColor(palette.TableCell, 'border', safeDarken(safeAlpha(palette.divider, 1), 0.68));\n      setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));\n    }\n\n    // MUI X - DataGrid needs this token.\n    setColorChannel(palette.background, 'default');\n    setColorChannel(palette.common, 'background');\n    setColorChannel(palette.common, 'onBackground');\n    setColorChannel(palette, 'divider');\n    Object.keys(palette).forEach(color => {\n      const colors = palette[color];\n\n      // The default palettes (primary, secondary, error, info, success, and warning) errors are handled by the above `createTheme(...)`.\n\n      if (colors && typeof colors === 'object') {\n        // Silent the error for custom palettes.\n        if (colors.main) {\n          setColor(palette[color], 'mainChannel', safeColorChannel(colors.main));\n        }\n        if (colors.light) {\n          setColor(palette[color], 'lightChannel', safeColorChannel(colors.light));\n        }\n        if (colors.dark) {\n          setColor(palette[color], 'darkChannel', safeColorChannel(colors.dark));\n        }\n        if (colors.contrastText) {\n          setColor(palette[color], 'contrastTextChannel', safeColorChannel(colors.contrastText));\n        }\n        if (color === 'text') {\n          // Text colors: text.primary, text.secondary\n          setColorChannel(palette[color], 'primary');\n          setColorChannel(palette[color], 'secondary');\n        }\n        if (color === 'action') {\n          // Action colors: action.active, action.selected\n          if (colors.active) {\n            setColorChannel(palette[color], 'active');\n          }\n          if (colors.selected) {\n            setColorChannel(palette[color], 'selected');\n          }\n        }\n      }\n    });\n  });\n  theme = args.reduce((acc, argument) => deepmerge(acc, argument), theme);\n  theme.unstable_sxConfig = _extends({}, defaultSxConfig, input == null ? void 0 : input.unstable_sxConfig);\n  theme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return theme;\n}", "/**\n * @internal These variables should not appear in the :root stylesheet when the `defaultMode=\"dark\"`\n */\nconst excludeVariablesFromRoot = cssVarPrefix => [...[...Array(24)].map((_, index) => `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}overlays-${index + 1}`), `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkBg`, `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkColor`];\nexport default excludeVariablesFromRoot;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { unstable_createCssVarsProvider as createCssVarsProvider, unstable_styleFunctionSx as styleFunctionSx } from '@mui/system';\nimport experimental_extendTheme from './experimental_extendTheme';\nimport createTypography from './createTypography';\nimport excludeVariablesFromRoot from './excludeVariablesFromRoot';\nconst shouldSkipGeneratingVar = keys => {\n  var _keys$;\n  return !!keys[0].match(/(typography|mixins|breakpoints|direction|transitions)/) || !!keys[0].match(/sxConfig$/) ||\n  // ends with sxConfig\n  keys[0] === 'palette' && !!((_keys$ = keys[1]) != null && _keys$.match(/(mode|contrastThreshold|tonalOffset)/));\n};\nconst defaultTheme = experimental_extendTheme();\nconst {\n  CssVarsProvider,\n  useColorScheme,\n  getInitColorSchemeScript\n} = createCssVarsProvider({\n  theme: defaultTheme,\n  attribute: 'data-mui-color-scheme',\n  modeStorageKey: 'mui-mode',\n  colorSchemeStorageKey: 'mui-color-scheme',\n  defaultColorScheme: {\n    light: 'light',\n    dark: 'dark'\n  },\n  resolveTheme: theme => {\n    const newTheme = _extends({}, theme, {\n      typography: createTypography(theme.palette, theme.typography)\n    });\n    newTheme.unstable_sx = function sx(props) {\n      return styleFunctionSx({\n        sx: props,\n        theme: this\n      });\n    };\n    return newTheme;\n  },\n  shouldSkipGeneratingVar,\n  excludeVariablesFromRoot\n});\nexport { useColorScheme, getInitColorSchemeScript, shouldSkipGeneratingVar, CssVarsProvider as Experimental_CssVarsProvider };", "import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nexport { default as adaptV4Theme } from './adaptV4Theme';\nexport { hexToRgb, rgbToHex, hslToRgb, decomposeColor, recomposeColor, getContrastRatio, getLuminance, emphasize, alpha, darken, lighten, css, keyframes } from '@mui/system';\n// TODO: Remove this function in v6.\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function experimental_sx() {\n  throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`experimental_sx\\` has been moved to \\`theme.unstable_sx\\`.For more details, see https://github.com/mui/material-ui/pull/35150.` : _formatMuiErrorMessage(20));\n}\nexport { default as createTheme, createMuiTheme } from './createTheme';\nexport { default as unstable_createMuiStrictModeTheme } from './createMuiStrictModeTheme';\nexport { default as createStyles } from './createStyles';\nexport { getUnit as unstable_getUnit, toUnitless as unstable_toUnitless } from './cssUtils';\nexport { default as responsiveFontSizes } from './responsiveFontSizes';\nexport { duration, easing } from './createTransitions';\nexport { default as useTheme } from './useTheme';\nexport { default as useThemeProps } from './useThemeProps';\nexport { default as styled } from './styled';\nexport { default as experimentalStyled } from './styled';\nexport { default as ThemeProvider } from './ThemeProvider';\nexport { StyledEngineProvider } from '@mui/system';\n// The legacy utilities from @mui/styles\n// These are just empty functions that throws when invoked\nexport { default as makeStyles } from './makeStyles';\nexport { default as withStyles } from './withStyles';\nexport { default as withTheme } from './withTheme';\nexport * from './CssVarsProvider';\nexport { default as experimental_extendTheme } from './experimental_extendTheme';\nexport { default as getOverlayAlpha } from './getOverlayAlpha';\n\n// Private methods for creating parts of the theme\nexport { default as private_createTypography } from './createTypography';\nexport { default as private_excludeVariablesFromRoot } from './excludeVariablesFromRoot';", "import { unstable_capitalize as capitalize } from '@mui/utils';\nexport default capitalize;", "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))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;", "/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n  return typeof element === 'string';\n}\nexport default isHostComponent;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport isHostComponent from './isHostComponent';\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nexport default function appendOwnerState(elementType, otherProps, ownerState) {\n  if (elementType === undefined || isHostComponent(elementType)) {\n    return otherProps;\n  }\n  return _extends({}, otherProps, {\n    ownerState: _extends({}, otherProps.ownerState, ownerState)\n  });\n}", "/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nexport default function extractEventHandlers(object, excludeKeys = []) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}", "/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nexport default function resolveComponentProps(componentProps, ownerState) {\n  if (typeof componentProps === 'function') {\n    return componentProps(ownerState);\n  }\n  return componentProps;\n}", "/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nexport default function omitEventHandlers(object) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport clsx from 'clsx';\nimport extractEventHandlers from './extractEventHandlers';\nimport omitEventHandlers from './omitEventHandlers';\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on an unstyled component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nexport default function mergeSlotProps(parameters) {\n  const {\n    getSlotProps,\n    additionalProps,\n    externalSlotProps,\n    externalForwardedProps,\n    className\n  } = parameters;\n  if (!getSlotProps) {\n    // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n    // so we can simply merge all the props without having to worry about extracting event handlers.\n    const joinedClasses = clsx(externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className, className, additionalProps == null ? void 0 : additionalProps.className);\n    const mergedStyle = _extends({}, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n    const props = _extends({}, additionalProps, externalForwardedProps, externalSlotProps);\n    if (joinedClasses.length > 0) {\n      props.className = joinedClasses;\n    }\n    if (Object.keys(mergedStyle).length > 0) {\n      props.style = mergedStyle;\n    }\n    return {\n      props,\n      internalRef: undefined\n    };\n  }\n\n  // In this case, getSlotProps is responsible for calling the external event handlers.\n  // We don't need to include them in the merged props because of this.\n\n  const eventHandlers = extractEventHandlers(_extends({}, externalForwardedProps, externalSlotProps));\n  const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n  const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n  const internalSlotProps = getSlotProps(eventHandlers);\n\n  // The order of classes is important here.\n  // Emotion (that we use in libraries consuming MUI Base) depends on this order\n  // to properly override style. It requires the most important classes to be last\n  // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n  const joinedClasses = clsx(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n  const mergedStyle = _extends({}, internalSlotProps == null ? void 0 : internalSlotProps.style, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n  const props = _extends({}, internalSlotProps, additionalProps, otherPropsWithoutEventHandlers, componentsPropsWithoutEventHandlers);\n  if (joinedClasses.length > 0) {\n    props.className = joinedClasses;\n  }\n  if (Object.keys(mergedStyle).length > 0) {\n    props.style = mergedStyle;\n  }\n  return {\n    props,\n    internalRef: internalSlotProps.ref\n  };\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"elementType\", \"externalSlotProps\", \"ownerState\"];\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport appendOwnerState from './appendOwnerState';\nimport mergeSlotProps from './mergeSlotProps';\nimport resolveComponentProps from './resolveComponentProps';\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nexport default function useSlotProps(parameters) {\n  var _parameters$additiona;\n  const {\n      elementType,\n      externalSlotProps,\n      ownerState\n    } = parameters,\n    rest = _objectWithoutPropertiesLoose(parameters, _excluded);\n  const resolvedComponentsProps = resolveComponentProps(externalSlotProps, ownerState);\n  const {\n    props: mergedProps,\n    internalRef\n  } = mergeSlotProps(_extends({}, rest, {\n    externalSlotProps: resolvedComponentsProps\n  }));\n  const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_parameters$additiona = parameters.additionalProps) == null ? void 0 : _parameters$additiona.ref);\n  const props = appendOwnerState(elementType, _extends({}, mergedProps, {\n    ref\n  }), ownerState);\n  return props;\n}", "export {};", "export { default as appendOwnerState } from './appendOwnerState';\nexport { default as areArraysEqual } from './areArraysEqual';\nexport { default as extractEventHandlers } from './extractEventHandlers';\nexport { default as isHostComponent } from './isHostComponent';\nexport { default as resolveComponentProps } from './resolveComponentProps';\nexport { default as useSlotProps } from './useSlotProps';\nexport { default as mergeSlotProps } from './mergeSlotProps';\nexport * from './types';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\n/* eslint-disable no-constant-condition */\nimport * as React from 'react';\nimport { unstable_setRef as setRef, unstable_useEventCallback as useEventCallback, unstable_useControlled as useControlled, unstable_useId as useId, usePreviousProps } from '@mui/utils';\n\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\n// Give up on IE11 support for this feature\nfunction stripDiacritics(string) {\n  return typeof string.normalize !== 'undefined' ? string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : string;\n}\nexport function createFilterOptions(config = {}) {\n  const {\n    ignoreAccents = true,\n    ignoreCase = true,\n    limit,\n    matchFrom = 'any',\n    stringify,\n    trim = false\n  } = config;\n  return (options, {\n    inputValue,\n    getOptionLabel\n  }) => {\n    let input = trim ? inputValue.trim() : inputValue;\n    if (ignoreCase) {\n      input = input.toLowerCase();\n    }\n    if (ignoreAccents) {\n      input = stripDiacritics(input);\n    }\n    const filteredOptions = !input ? options : options.filter(option => {\n      let candidate = (stringify || getOptionLabel)(option);\n      if (ignoreCase) {\n        candidate = candidate.toLowerCase();\n      }\n      if (ignoreAccents) {\n        candidate = stripDiacritics(candidate);\n      }\n      return matchFrom === 'start' ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;\n    });\n    return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;\n  };\n}\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n  for (let i = 0; i < array.length; i += 1) {\n    if (comp(array[i])) {\n      return i;\n    }\n  }\n  return -1;\n}\nconst defaultFilterOptions = createFilterOptions();\n\n// Number of options to jump in list box when `Page Up` and `Page Down` keys are used.\nconst pageSize = 5;\nconst defaultIsActiveElementInListbox = listboxRef => {\n  var _listboxRef$current$p;\n  return listboxRef.current !== null && ((_listboxRef$current$p = listboxRef.current.parentElement) == null ? void 0 : _listboxRef$current$p.contains(document.activeElement));\n};\nexport default function useAutocomplete(props) {\n  const {\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    unstable_isActiveElementInListbox = defaultIsActiveElementInListbox,\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    unstable_classNamePrefix = 'Mui',\n    autoComplete = false,\n    autoHighlight = false,\n    autoSelect = false,\n    blurOnSelect = false,\n    clearOnBlur = !props.freeSolo,\n    clearOnEscape = false,\n    componentName = 'useAutocomplete',\n    defaultValue = props.multiple ? [] : null,\n    disableClearable = false,\n    disableCloseOnSelect = false,\n    disabled: disabledProp,\n    disabledItemsFocusable = false,\n    disableListWrap = false,\n    filterOptions = defaultFilterOptions,\n    filterSelectedOptions = false,\n    freeSolo = false,\n    getOptionDisabled,\n    getOptionLabel: getOptionLabelProp = option => {\n      var _option$label;\n      return (_option$label = option.label) != null ? _option$label : option;\n    },\n    groupBy,\n    handleHomeEndKeys = !props.freeSolo,\n    id: idProp,\n    includeInputInList = false,\n    inputValue: inputValueProp,\n    isOptionEqualToValue = (option, value) => option === value,\n    multiple = false,\n    onChange,\n    onClose,\n    onHighlightChange,\n    onInputChange,\n    onOpen,\n    open: openProp,\n    openOnFocus = false,\n    options,\n    readOnly = false,\n    selectOnFocus = !props.freeSolo,\n    value: valueProp\n  } = props;\n  const id = useId(idProp);\n  let getOptionLabel = getOptionLabelProp;\n  getOptionLabel = option => {\n    const optionLabel = getOptionLabelProp(option);\n    if (typeof optionLabel !== 'string') {\n      if (process.env.NODE_ENV !== 'production') {\n        const erroneousReturn = optionLabel === undefined ? 'undefined' : `${typeof optionLabel} (${optionLabel})`;\n        console.error(`MUI: The \\`getOptionLabel\\` method of ${componentName} returned ${erroneousReturn} instead of a string for ${JSON.stringify(option)}.`);\n      }\n      return String(optionLabel);\n    }\n    return optionLabel;\n  };\n  const ignoreFocus = React.useRef(false);\n  const firstFocus = React.useRef(true);\n  const inputRef = React.useRef(null);\n  const listboxRef = React.useRef(null);\n  const [anchorEl, setAnchorEl] = React.useState(null);\n  const [focusedTag, setFocusedTag] = React.useState(-1);\n  const defaultHighlighted = autoHighlight ? 0 : -1;\n  const highlightedIndexRef = React.useRef(defaultHighlighted);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: componentName\n  });\n  const [inputValue, setInputValueState] = useControlled({\n    controlled: inputValueProp,\n    default: '',\n    name: componentName,\n    state: 'inputValue'\n  });\n  const [focused, setFocused] = React.useState(false);\n  const resetInputValue = React.useCallback((event, newValue) => {\n    // retain current `inputValue` if new option isn't selected and `clearOnBlur` is false\n    // When `multiple` is enabled, `newValue` is an array of all selected items including the newly selected item\n    const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;\n    if (!isOptionSelected && !clearOnBlur) {\n      return;\n    }\n    let newInputValue;\n    if (multiple) {\n      newInputValue = '';\n    } else if (newValue == null) {\n      newInputValue = '';\n    } else {\n      const optionLabel = getOptionLabel(newValue);\n      newInputValue = typeof optionLabel === 'string' ? optionLabel : '';\n    }\n    if (inputValue === newInputValue) {\n      return;\n    }\n    setInputValueState(newInputValue);\n    if (onInputChange) {\n      onInputChange(event, newInputValue, 'reset');\n    }\n  }, [getOptionLabel, inputValue, multiple, onInputChange, setInputValueState, clearOnBlur, value]);\n  const [open, setOpenState] = useControlled({\n    controlled: openProp,\n    default: false,\n    name: componentName,\n    state: 'open'\n  });\n  const [inputPristine, setInputPristine] = React.useState(true);\n  const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n  const popupOpen = open && !readOnly;\n  const filteredOptions = popupOpen ? filterOptions(options.filter(option => {\n    if (filterSelectedOptions && (multiple ? value : [value]).some(value2 => value2 !== null && isOptionEqualToValue(option, value2))) {\n      return false;\n    }\n    return true;\n  }),\n  // we use the empty string to manipulate `filterOptions` to not filter any options\n  // i.e. the filter predicate always returns true\n  {\n    inputValue: inputValueIsSelectedValue && inputPristine ? '' : inputValue,\n    getOptionLabel\n  }) : [];\n  const previousProps = usePreviousProps({\n    filteredOptions,\n    value\n  });\n  React.useEffect(() => {\n    const valueChange = value !== previousProps.value;\n    if (focused && !valueChange) {\n      return;\n    }\n\n    // Only reset the input's value when freeSolo if the component's value changes.\n    if (freeSolo && !valueChange) {\n      return;\n    }\n    resetInputValue(null, value);\n  }, [value, resetInputValue, focused, previousProps.value, freeSolo]);\n  const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;\n  if (process.env.NODE_ENV !== 'production') {\n    if (value !== null && !freeSolo && options.length > 0) {\n      const missingValue = (multiple ? value : [value]).filter(value2 => !options.some(option => isOptionEqualToValue(option, value2)));\n      if (missingValue.length > 0) {\n        console.warn([`MUI: The value provided to ${componentName} is invalid.`, `None of the options match with \\`${missingValue.length > 1 ? JSON.stringify(missingValue) : JSON.stringify(missingValue[0])}\\`.`, 'You can use the `isOptionEqualToValue` prop to customize the equality test.'].join('\\n'));\n      }\n    }\n  }\n  const focusTag = useEventCallback(tagToFocus => {\n    if (tagToFocus === -1) {\n      inputRef.current.focus();\n    } else {\n      anchorEl.querySelector(`[data-tag-index=\"${tagToFocus}\"]`).focus();\n    }\n  });\n\n  // Ensure the focusedTag is never inconsistent\n  React.useEffect(() => {\n    if (multiple && focusedTag > value.length - 1) {\n      setFocusedTag(-1);\n      focusTag(-1);\n    }\n  }, [value, multiple, focusedTag, focusTag]);\n  function validOptionIndex(index, direction) {\n    if (!listboxRef.current || index === -1) {\n      return -1;\n    }\n    let nextFocus = index;\n    while (true) {\n      // Out of range\n      if (direction === 'next' && nextFocus === filteredOptions.length || direction === 'previous' && nextFocus === -1) {\n        return -1;\n      }\n      const option = listboxRef.current.querySelector(`[data-option-index=\"${nextFocus}\"]`);\n\n      // Same logic as MenuList.js\n      const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute('aria-disabled') === 'true';\n      if (option && !option.hasAttribute('tabindex') || nextFocusDisabled) {\n        // Move to the next element.\n        nextFocus += direction === 'next' ? 1 : -1;\n      } else {\n        return nextFocus;\n      }\n    }\n  }\n  const setHighlightedIndex = useEventCallback(({\n    event,\n    index,\n    reason = 'auto'\n  }) => {\n    highlightedIndexRef.current = index;\n\n    // does the index exist?\n    if (index === -1) {\n      inputRef.current.removeAttribute('aria-activedescendant');\n    } else {\n      inputRef.current.setAttribute('aria-activedescendant', `${id}-option-${index}`);\n    }\n    if (onHighlightChange) {\n      onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n    }\n    if (!listboxRef.current) {\n      return;\n    }\n    const prev = listboxRef.current.querySelector(`[role=\"option\"].${unstable_classNamePrefix}-focused`);\n    if (prev) {\n      prev.classList.remove(`${unstable_classNamePrefix}-focused`);\n      prev.classList.remove(`${unstable_classNamePrefix}-focusVisible`);\n    }\n    const listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]');\n\n    // \"No results\"\n    if (!listboxNode) {\n      return;\n    }\n    if (index === -1) {\n      listboxNode.scrollTop = 0;\n      return;\n    }\n    const option = listboxRef.current.querySelector(`[data-option-index=\"${index}\"]`);\n    if (!option) {\n      return;\n    }\n    option.classList.add(`${unstable_classNamePrefix}-focused`);\n    if (reason === 'keyboard') {\n      option.classList.add(`${unstable_classNamePrefix}-focusVisible`);\n    }\n\n    // Scroll active descendant into view.\n    // Logic copied from https://www.w3.org/WAI/content-assets/wai-aria-practices/patterns/combobox/examples/js/select-only.js\n    //\n    // Consider this API instead once it has a better browser support:\n    // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n    if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse') {\n      const element = option;\n      const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n      const elementBottom = element.offsetTop + element.offsetHeight;\n      if (elementBottom > scrollBottom) {\n        listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n      } else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {\n        listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n      }\n    }\n  });\n  const changeHighlightedIndex = useEventCallback(({\n    event,\n    diff,\n    direction = 'next',\n    reason = 'auto'\n  }) => {\n    if (!popupOpen) {\n      return;\n    }\n    const getNextIndex = () => {\n      const maxIndex = filteredOptions.length - 1;\n      if (diff === 'reset') {\n        return defaultHighlighted;\n      }\n      if (diff === 'start') {\n        return 0;\n      }\n      if (diff === 'end') {\n        return maxIndex;\n      }\n      const newIndex = highlightedIndexRef.current + diff;\n      if (newIndex < 0) {\n        if (newIndex === -1 && includeInputInList) {\n          return -1;\n        }\n        if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {\n          return 0;\n        }\n        return maxIndex;\n      }\n      if (newIndex > maxIndex) {\n        if (newIndex === maxIndex + 1 && includeInputInList) {\n          return -1;\n        }\n        if (disableListWrap || Math.abs(diff) > 1) {\n          return maxIndex;\n        }\n        return 0;\n      }\n      return newIndex;\n    };\n    const nextIndex = validOptionIndex(getNextIndex(), direction);\n    setHighlightedIndex({\n      index: nextIndex,\n      reason,\n      event\n    });\n\n    // Sync the content of the input with the highlighted option.\n    if (autoComplete && diff !== 'reset') {\n      if (nextIndex === -1) {\n        inputRef.current.value = inputValue;\n      } else {\n        const option = getOptionLabel(filteredOptions[nextIndex]);\n        inputRef.current.value = option;\n\n        // The portion of the selected suggestion that has not been typed by the user,\n        // a completion string, appears inline after the input cursor in the textbox.\n        const index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n        if (index === 0 && inputValue.length > 0) {\n          inputRef.current.setSelectionRange(inputValue.length, option.length);\n        }\n      }\n    }\n  });\n  const checkHighlightedOptionExists = () => {\n    const isSameValue = (value1, value2) => {\n      const label1 = value1 ? getOptionLabel(value1) : '';\n      const label2 = value2 ? getOptionLabel(value2) : '';\n      return label1 === label2;\n    };\n    if (highlightedIndexRef.current !== -1 && previousProps.filteredOptions && previousProps.filteredOptions.length !== filteredOptions.length && (multiple ? value.length === previousProps.value.length && previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val)) : isSameValue(previousProps.value, value))) {\n      const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];\n      if (previousHighlightedOption) {\n        const previousHighlightedOptionExists = filteredOptions.some(option => {\n          return getOptionLabel(option) === getOptionLabel(previousHighlightedOption);\n        });\n        if (previousHighlightedOptionExists) {\n          return true;\n        }\n      }\n    }\n    return false;\n  };\n  const syncHighlightedIndex = React.useCallback(() => {\n    if (!popupOpen) {\n      return;\n    }\n\n    // Check if the previously highlighted option still exists in the updated filtered options list and if the value hasn't changed\n    // If it exists and the value hasn't changed, return, otherwise continue execution\n    if (checkHighlightedOptionExists()) {\n      return;\n    }\n    const valueItem = multiple ? value[0] : value;\n\n    // The popup is empty, reset\n    if (filteredOptions.length === 0 || valueItem == null) {\n      changeHighlightedIndex({\n        diff: 'reset'\n      });\n      return;\n    }\n    if (!listboxRef.current) {\n      return;\n    }\n\n    // Synchronize the value with the highlighted index\n    if (valueItem != null) {\n      const currentOption = filteredOptions[highlightedIndexRef.current];\n\n      // Keep the current highlighted index if possible\n      if (multiple && currentOption && findIndex(value, val => isOptionEqualToValue(currentOption, val)) !== -1) {\n        return;\n      }\n      const itemIndex = findIndex(filteredOptions, optionItem => isOptionEqualToValue(optionItem, valueItem));\n      if (itemIndex === -1) {\n        changeHighlightedIndex({\n          diff: 'reset'\n        });\n      } else {\n        setHighlightedIndex({\n          index: itemIndex\n        });\n      }\n      return;\n    }\n\n    // Prevent the highlighted index to leak outside the boundaries.\n    if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n      setHighlightedIndex({\n        index: filteredOptions.length - 1\n      });\n      return;\n    }\n\n    // Restore the focus to the previous index.\n    setHighlightedIndex({\n      index: highlightedIndexRef.current\n    });\n    // Ignore filteredOptions (and options, isOptionEqualToValue, getOptionLabel) not to break the scroll position\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [\n  // Only sync the highlighted index when the option switch between empty and not\n  filteredOptions.length,\n  // Don't sync the highlighted index with the value when multiple\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  multiple ? false : value, filterSelectedOptions, changeHighlightedIndex, setHighlightedIndex, popupOpen, inputValue, multiple]);\n  const handleListboxRef = useEventCallback(node => {\n    setRef(listboxRef, node);\n    if (!node) {\n      return;\n    }\n    syncHighlightedIndex();\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (!inputRef.current || inputRef.current.nodeName !== 'INPUT') {\n        if (inputRef.current && inputRef.current.nodeName === 'TEXTAREA') {\n          console.warn([`A textarea element was provided to ${componentName} where input was expected.`, `This is not a supported scenario but it may work under certain conditions.`, `A textarea keyboard navigation may conflict with Autocomplete controls (e.g. enter and arrow keys).`, `Make sure to test keyboard navigation and add custom event handlers if necessary.`].join('\\n'));\n        } else {\n          console.error([`MUI: Unable to find the input element. It was resolved to ${inputRef.current} while an HTMLInputElement was expected.`, `Instead, ${componentName} expects an input element.`, '', componentName === 'useAutocomplete' ? 'Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed.' : 'Make sure you have customized the input component correctly.'].join('\\n'));\n        }\n      }\n    }, [componentName]);\n  }\n  React.useEffect(() => {\n    syncHighlightedIndex();\n  }, [syncHighlightedIndex]);\n  const handleOpen = event => {\n    if (open) {\n      return;\n    }\n    setOpenState(true);\n    setInputPristine(true);\n    if (onOpen) {\n      onOpen(event);\n    }\n  };\n  const handleClose = (event, reason) => {\n    if (!open) {\n      return;\n    }\n    setOpenState(false);\n    if (onClose) {\n      onClose(event, reason);\n    }\n  };\n  const handleValue = (event, newValue, reason, details) => {\n    if (multiple) {\n      if (value.length === newValue.length && value.every((val, i) => val === newValue[i])) {\n        return;\n      }\n    } else if (value === newValue) {\n      return;\n    }\n    if (onChange) {\n      onChange(event, newValue, reason, details);\n    }\n    setValueState(newValue);\n  };\n  const isTouch = React.useRef(false);\n  const selectNewValue = (event, option, reasonProp = 'selectOption', origin = 'options') => {\n    let reason = reasonProp;\n    let newValue = option;\n    if (multiple) {\n      newValue = Array.isArray(value) ? value.slice() : [];\n      if (process.env.NODE_ENV !== 'production') {\n        const matches = newValue.filter(val => isOptionEqualToValue(option, val));\n        if (matches.length > 1) {\n          console.error([`MUI: The \\`isOptionEqualToValue\\` method of ${componentName} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${matches.length} matches.`].join('\\n'));\n        }\n      }\n      const itemIndex = findIndex(newValue, valueItem => isOptionEqualToValue(option, valueItem));\n      if (itemIndex === -1) {\n        newValue.push(option);\n      } else if (origin !== 'freeSolo') {\n        newValue.splice(itemIndex, 1);\n        reason = 'removeOption';\n      }\n    }\n    resetInputValue(event, newValue);\n    handleValue(event, newValue, reason, {\n      option\n    });\n    if (!disableCloseOnSelect && (!event || !event.ctrlKey && !event.metaKey)) {\n      handleClose(event, reason);\n    }\n    if (blurOnSelect === true || blurOnSelect === 'touch' && isTouch.current || blurOnSelect === 'mouse' && !isTouch.current) {\n      inputRef.current.blur();\n    }\n  };\n  function validTagIndex(index, direction) {\n    if (index === -1) {\n      return -1;\n    }\n    let nextFocus = index;\n    while (true) {\n      // Out of range\n      if (direction === 'next' && nextFocus === value.length || direction === 'previous' && nextFocus === -1) {\n        return -1;\n      }\n      const option = anchorEl.querySelector(`[data-tag-index=\"${nextFocus}\"]`);\n\n      // Same logic as MenuList.js\n      if (!option || !option.hasAttribute('tabindex') || option.disabled || option.getAttribute('aria-disabled') === 'true') {\n        nextFocus += direction === 'next' ? 1 : -1;\n      } else {\n        return nextFocus;\n      }\n    }\n  }\n  const handleFocusTag = (event, direction) => {\n    if (!multiple) {\n      return;\n    }\n    if (inputValue === '') {\n      handleClose(event, 'toggleInput');\n    }\n    let nextTag = focusedTag;\n    if (focusedTag === -1) {\n      if (inputValue === '' && direction === 'previous') {\n        nextTag = value.length - 1;\n      }\n    } else {\n      nextTag += direction === 'next' ? 1 : -1;\n      if (nextTag < 0) {\n        nextTag = 0;\n      }\n      if (nextTag === value.length) {\n        nextTag = -1;\n      }\n    }\n    nextTag = validTagIndex(nextTag, direction);\n    setFocusedTag(nextTag);\n    focusTag(nextTag);\n  };\n  const handleClear = event => {\n    ignoreFocus.current = true;\n    setInputValueState('');\n    if (onInputChange) {\n      onInputChange(event, '', 'clear');\n    }\n    handleValue(event, multiple ? [] : null, 'clear');\n  };\n  const handleKeyDown = other => event => {\n    if (other.onKeyDown) {\n      other.onKeyDown(event);\n    }\n    if (event.defaultMuiPrevented) {\n      return;\n    }\n    if (focusedTag !== -1 && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) === -1) {\n      setFocusedTag(-1);\n      focusTag(-1);\n    }\n\n    // Wait until IME is settled.\n    if (event.which !== 229) {\n      switch (event.key) {\n        case 'Home':\n          if (popupOpen && handleHomeEndKeys) {\n            // Prevent scroll of the page\n            event.preventDefault();\n            changeHighlightedIndex({\n              diff: 'start',\n              direction: 'next',\n              reason: 'keyboard',\n              event\n            });\n          }\n          break;\n        case 'End':\n          if (popupOpen && handleHomeEndKeys) {\n            // Prevent scroll of the page\n            event.preventDefault();\n            changeHighlightedIndex({\n              diff: 'end',\n              direction: 'previous',\n              reason: 'keyboard',\n              event\n            });\n          }\n          break;\n        case 'PageUp':\n          // Prevent scroll of the page\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: -pageSize,\n            direction: 'previous',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'PageDown':\n          // Prevent scroll of the page\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: pageSize,\n            direction: 'next',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowDown':\n          // Prevent cursor move\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: 1,\n            direction: 'next',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowUp':\n          // Prevent cursor move\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: -1,\n            direction: 'previous',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowLeft':\n          handleFocusTag(event, 'previous');\n          break;\n        case 'ArrowRight':\n          handleFocusTag(event, 'next');\n          break;\n        case 'Enter':\n          if (highlightedIndexRef.current !== -1 && popupOpen) {\n            const option = filteredOptions[highlightedIndexRef.current];\n            const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n\n            // Avoid early form validation, let the end-users continue filling the form.\n            event.preventDefault();\n            if (disabled) {\n              return;\n            }\n            selectNewValue(event, option, 'selectOption');\n\n            // Move the selection to the end.\n            if (autoComplete) {\n              inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n            }\n          } else if (freeSolo && inputValue !== '' && inputValueIsSelectedValue === false) {\n            if (multiple) {\n              // Allow people to add new values before they submit the form.\n              event.preventDefault();\n            }\n            selectNewValue(event, inputValue, 'createOption', 'freeSolo');\n          }\n          break;\n        case 'Escape':\n          if (popupOpen) {\n            // Avoid Opera to exit fullscreen mode.\n            event.preventDefault();\n            // Avoid the Modal to handle the event.\n            event.stopPropagation();\n            handleClose(event, 'escape');\n          } else if (clearOnEscape && (inputValue !== '' || multiple && value.length > 0)) {\n            // Avoid Opera to exit fullscreen mode.\n            event.preventDefault();\n            // Avoid the Modal to handle the event.\n            event.stopPropagation();\n            handleClear(event);\n          }\n          break;\n        case 'Backspace':\n          if (multiple && !readOnly && inputValue === '' && value.length > 0) {\n            const index = focusedTag === -1 ? value.length - 1 : focusedTag;\n            const newValue = value.slice();\n            newValue.splice(index, 1);\n            handleValue(event, newValue, 'removeOption', {\n              option: value[index]\n            });\n          }\n          break;\n        case 'Delete':\n          if (multiple && !readOnly && inputValue === '' && value.length > 0 && focusedTag !== -1) {\n            const index = focusedTag;\n            const newValue = value.slice();\n            newValue.splice(index, 1);\n            handleValue(event, newValue, 'removeOption', {\n              option: value[index]\n            });\n          }\n          break;\n        default:\n      }\n    }\n  };\n  const handleFocus = event => {\n    setFocused(true);\n    if (openOnFocus && !ignoreFocus.current) {\n      handleOpen(event);\n    }\n  };\n  const handleBlur = event => {\n    // Ignore the event when using the scrollbar with IE11\n    if (unstable_isActiveElementInListbox(listboxRef)) {\n      inputRef.current.focus();\n      return;\n    }\n    setFocused(false);\n    firstFocus.current = true;\n    ignoreFocus.current = false;\n    if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {\n      selectNewValue(event, filteredOptions[highlightedIndexRef.current], 'blur');\n    } else if (autoSelect && freeSolo && inputValue !== '') {\n      selectNewValue(event, inputValue, 'blur', 'freeSolo');\n    } else if (clearOnBlur) {\n      resetInputValue(event, value);\n    }\n    handleClose(event, 'blur');\n  };\n  const handleInputChange = event => {\n    const newValue = event.target.value;\n    if (inputValue !== newValue) {\n      setInputValueState(newValue);\n      setInputPristine(false);\n      if (onInputChange) {\n        onInputChange(event, newValue, 'input');\n      }\n    }\n    if (newValue === '') {\n      if (!disableClearable && !multiple) {\n        handleValue(event, null, 'clear');\n      }\n    } else {\n      handleOpen(event);\n    }\n  };\n  const handleOptionMouseOver = event => {\n    setHighlightedIndex({\n      event,\n      index: Number(event.currentTarget.getAttribute('data-option-index')),\n      reason: 'mouse'\n    });\n  };\n  const handleOptionTouchStart = () => {\n    isTouch.current = true;\n  };\n  const handleOptionClick = event => {\n    const index = Number(event.currentTarget.getAttribute('data-option-index'));\n    selectNewValue(event, filteredOptions[index], 'selectOption');\n    isTouch.current = false;\n  };\n  const handleTagDelete = index => event => {\n    const newValue = value.slice();\n    newValue.splice(index, 1);\n    handleValue(event, newValue, 'removeOption', {\n      option: value[index]\n    });\n  };\n  const handlePopupIndicator = event => {\n    if (open) {\n      handleClose(event, 'toggleInput');\n    } else {\n      handleOpen(event);\n    }\n  };\n\n  // Prevent input blur when interacting with the combobox\n  const handleMouseDown = event => {\n    if (event.target.getAttribute('id') !== id) {\n      event.preventDefault();\n    }\n  };\n\n  // Focus the input when interacting with the combobox\n  const handleClick = () => {\n    inputRef.current.focus();\n    if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {\n      inputRef.current.select();\n    }\n    firstFocus.current = false;\n  };\n  const handleInputMouseDown = event => {\n    if (inputValue === '' || !open) {\n      handlePopupIndicator(event);\n    }\n  };\n  let dirty = freeSolo && inputValue.length > 0;\n  dirty = dirty || (multiple ? value.length > 0 : value !== null);\n  let groupedOptions = filteredOptions;\n  if (groupBy) {\n    // used to keep track of key and indexes in the result array\n    const indexBy = new Map();\n    let warn = false;\n    groupedOptions = filteredOptions.reduce((acc, option, index) => {\n      const group = groupBy(option);\n      if (acc.length > 0 && acc[acc.length - 1].group === group) {\n        acc[acc.length - 1].options.push(option);\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          if (indexBy.get(group) && !warn) {\n            console.warn(`MUI: The options provided combined with the \\`groupBy\\` method of ${componentName} returns duplicated headers.`, 'You can solve the issue by sorting the options with the output of `groupBy`.');\n            warn = true;\n          }\n          indexBy.set(group, true);\n        }\n        acc.push({\n          key: index,\n          index,\n          group,\n          options: [option]\n        });\n      }\n      return acc;\n    }, []);\n  }\n  if (disabledProp && focused) {\n    handleBlur();\n  }\n  return {\n    getRootProps: (other = {}) => _extends({\n      'aria-owns': listboxAvailable ? `${id}-listbox` : null\n    }, other, {\n      onKeyDown: handleKeyDown(other),\n      onMouseDown: handleMouseDown,\n      onClick: handleClick\n    }),\n    getInputLabelProps: () => ({\n      id: `${id}-label`,\n      htmlFor: id\n    }),\n    getInputProps: () => ({\n      id,\n      value: inputValue,\n      onBlur: handleBlur,\n      onFocus: handleFocus,\n      onChange: handleInputChange,\n      onMouseDown: handleInputMouseDown,\n      // if open then this is handled imperativeley so don't let react override\n      // only have an opinion about this when closed\n      'aria-activedescendant': popupOpen ? '' : null,\n      'aria-autocomplete': autoComplete ? 'both' : 'list',\n      'aria-controls': listboxAvailable ? `${id}-listbox` : undefined,\n      'aria-expanded': listboxAvailable,\n      // Disable browser's suggestion that might overlap with the popup.\n      // Handle autocomplete but not autofill.\n      autoComplete: 'off',\n      ref: inputRef,\n      autoCapitalize: 'none',\n      spellCheck: 'false',\n      role: 'combobox',\n      disabled: disabledProp\n    }),\n    getClearProps: () => ({\n      tabIndex: -1,\n      onClick: handleClear\n    }),\n    getPopupIndicatorProps: () => ({\n      tabIndex: -1,\n      onClick: handlePopupIndicator\n    }),\n    getTagProps: ({\n      index\n    }) => _extends({\n      key: index,\n      'data-tag-index': index,\n      tabIndex: -1\n    }, !readOnly && {\n      onDelete: handleTagDelete(index)\n    }),\n    getListboxProps: () => ({\n      role: 'listbox',\n      id: `${id}-listbox`,\n      'aria-labelledby': `${id}-label`,\n      ref: handleListboxRef,\n      onMouseDown: event => {\n        // Prevent blur\n        event.preventDefault();\n      }\n    }),\n    getOptionProps: ({\n      index,\n      option\n    }) => {\n      const selected = (multiple ? value : [value]).some(value2 => value2 != null && isOptionEqualToValue(option, value2));\n      const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n      return {\n        key: getOptionLabel(option),\n        tabIndex: -1,\n        role: 'option',\n        id: `${id}-option-${index}`,\n        onMouseOver: handleOptionMouseOver,\n        onClick: handleOptionClick,\n        onTouchStart: handleOptionTouchStart,\n        'data-option-index': index,\n        'aria-disabled': disabled,\n        'aria-selected': selected\n      };\n    },\n    id,\n    inputValue,\n    value,\n    dirty,\n    popupOpen,\n    focused: focused || focusedTag !== -1,\n    anchorEl,\n    setAnchorEl,\n    focusedTag,\n    groupedOptions\n  };\n}", "export { default as useAutocomplete, createFilterOptions } from './useAutocomplete';", "export { unstable_composeClasses as default } from '@mui/utils';", "import { usePreviousProps } from '@mui/utils';\n/**\n *\n * Demos:\n *\n * - [Unstyled badge](https://mui.com/base/react-badge/#hook)\n *\n * API:\n *\n * - [useBadge API](https://mui.com/base/api/use-badge/)\n */\nexport default function useBadge(parameters) {\n  const {\n    badgeContent: badgeContentProp,\n    invisible: invisibleProp = false,\n    max: maxProp = 99,\n    showZero = false\n  } = parameters;\n  const prevProps = usePreviousProps({\n    badgeContent: badgeContentProp,\n    max: maxProp\n  });\n  let invisible = invisibleProp;\n  if (invisibleProp === false && badgeContentProp === 0 && !showZero) {\n    invisible = true;\n  }\n  const {\n    badgeContent,\n    max = maxProp\n  } = invisible ? prevProps : parameters;\n  const displayValue = badgeContent && Number(badgeContent) > max ? `${max}+` : badgeContent;\n  return {\n    badgeContent,\n    invisible,\n    max,\n    displayValue\n  };\n}", "export { unstable_generateUtilityClasses as default } from '@mui/utils';", "export { unstable_generateUtilityClass as default } from '@mui/utils';", "import generateUtilityClasses from '../generateUtilityClasses';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getBadgeUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiBadge', slot);\n}\nconst badgeUnstyledClasses = generateUtilityClasses('MuiBadge', ['root', 'badge', 'invisible']);\nexport default badgeUnstyledClasses;", "export {};", "export { default } from './BadgeUnstyled';\nexport { default as useBadge } from './useBadge';\nexport * from './useBadge';\nexport * from './BadgeUnstyled.types';\nexport { default as badgeUnstyledClasses } from './badgeUnstyledClasses';\nexport * from './badgeUnstyledClasses';", "export {};", "export {};", "export { default } from './ButtonUnstyled';\nexport { default as buttonUnstyledClasses, getButtonUnstyledUtilityClass } from './buttonUnstyledClasses';\nexport * from './ButtonUnstyled.types';\nexport { default as useButton } from './useButton';\nexport * from './useButton.types';", "import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n  return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/base/react-click-away-listener/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/base/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n  const {\n    children,\n    disableReactTree = false,\n    mouseEvent = 'onClick',\n    onClickAway,\n    touchEvent = 'onTouchEnd'\n  } = props;\n  const movedRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  React.useEffect(() => {\n    // Ensure that this component is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    setTimeout(() => {\n      activatedRef.current = true;\n    }, 0);\n    return () => {\n      activatedRef.current = false;\n    };\n  }, []);\n  const handleRef = useForkRef(\n  // @ts-expect-error TODO upstream fix\n  children.ref, nodeRef);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n    } else {\n      insideDOM = !doc.documentElement.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target) || nodeRef.current.contains(\n      // @ts-expect-error returns `false` as intended when not dispatched from a Node\n      event.target);\n    }\n    if (!insideDOM && (disableReactTree || !insideReactTree)) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const createHandleSynthetic = handlerName => event => {\n    syntheticEventRef.current = true;\n    const childrenPropsHandler = children.props[handlerName];\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const childrenProps = {\n    ref: handleRef\n  };\n  if (touchEvent !== false) {\n    childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n  }\n  React.useEffect(() => {\n    if (touchEvent !== false) {\n      const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener(mappedTouchEvent, handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener(mappedTouchEvent, handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, touchEvent]);\n  if (mouseEvent !== false) {\n    childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n  }\n  React.useEffect(() => {\n    if (mouseEvent !== false) {\n      const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener(mappedMouseEvent, handleClickAway);\n      return () => {\n        doc.removeEventListener(mappedMouseEvent, handleClickAway);\n      };\n    }\n    return undefined;\n  }, [handleClickAway, mouseEvent]);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The wrapped element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * If `true`, the React tree is ignored and only the DOM tree is considered.\n   * This prop changes how portaled elements are handled.\n   * @default false\n   */\n  disableReactTree: PropTypes.bool,\n  /**\n   * The mouse event to listen to. You can disable the listener by providing `false`.\n   * @default 'onClick'\n   */\n  mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n  /**\n   * Callback fired when a \"click away\" event is detected.\n   */\n  onClickAway: PropTypes.func.isRequired,\n  /**\n   * The touch event to listen to. You can disable the listener by providing `false`.\n   * @default 'onTouchEnd'\n   */\n  touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport default ClickAwayListener;", "export { default } from './ClickAwayListener';\nexport * from './ClickAwayListener';", "/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp, elementAcceptingRef, unstable_useForkRef as useForkRef, unstable_ownerDocument as ownerDocument } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n// Inspired by https://github.com/focus-trap/tabbable\nconst candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'].join(',');\nfunction getTabIndex(node) {\n  const tabindexAttr = parseInt(node.getAttribute('tabindex') || '', 10);\n  if (!Number.isNaN(tabindexAttr)) {\n    return tabindexAttr;\n  }\n\n  // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=661108&q=contenteditable%20tabindex&can=2\n  // so if they don't have a tabindex attribute specifically set, assume it's 0.\n  // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n  //  `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n  //  yet they are still part of the regular tab order; in FF, they get a default\n  //  `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n  //  order, consider their tab index to be 0.\n  if (node.contentEditable === 'true' || (node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {\n    return 0;\n  }\n  return node.tabIndex;\n}\nfunction isNonTabbableRadio(node) {\n  if (node.tagName !== 'INPUT' || node.type !== 'radio') {\n    return false;\n  }\n  if (!node.name) {\n    return false;\n  }\n  const getRadio = selector => node.ownerDocument.querySelector(`input[type=\"radio\"]${selector}`);\n  let roving = getRadio(`[name=\"${node.name}\"]:checked`);\n  if (!roving) {\n    roving = getRadio(`[name=\"${node.name}\"]`);\n  }\n  return roving !== node;\n}\nfunction isNodeMatchingSelectorFocusable(node) {\n  if (node.disabled || node.tagName === 'INPUT' && node.type === 'hidden' || isNonTabbableRadio(node)) {\n    return false;\n  }\n  return true;\n}\nfunction defaultGetTabbable(root) {\n  const regularTabNodes = [];\n  const orderedTabNodes = [];\n  Array.from(root.querySelectorAll(candidatesSelector)).forEach((node, i) => {\n    const nodeTabIndex = getTabIndex(node);\n    if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node)) {\n      return;\n    }\n    if (nodeTabIndex === 0) {\n      regularTabNodes.push(node);\n    } else {\n      orderedTabNodes.push({\n        documentOrder: i,\n        tabIndex: nodeTabIndex,\n        node: node\n      });\n    }\n  });\n  return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map(a => a.node).concat(regularTabNodes);\n}\nfunction defaultIsEnabled() {\n  return true;\n}\n\n/**\n * Utility component that locks focus inside the component.\n *\n * Demos:\n *\n * - [Focus Trap](https://mui.com/base/react-focus-trap/)\n *\n * API:\n *\n * - [FocusTrap API](https://mui.com/base/api/focus-trap/)\n */\nfunction FocusTrap(props) {\n  const {\n    children,\n    disableAutoFocus = false,\n    disableEnforceFocus = false,\n    disableRestoreFocus = false,\n    getTabbable = defaultGetTabbable,\n    isEnabled = defaultIsEnabled,\n    open\n  } = props;\n  const ignoreNextEnforceFocus = React.useRef(false);\n  const sentinelStart = React.useRef(null);\n  const sentinelEnd = React.useRef(null);\n  const nodeToRestore = React.useRef(null);\n  const reactFocusEventTarget = React.useRef(null);\n  // This variable is useful when disableAutoFocus is true.\n  // It waits for the active element to move into the component to activate.\n  const activated = React.useRef(false);\n  const rootRef = React.useRef(null);\n  // @ts-expect-error TODO upstream fix\n  const handleRef = useForkRef(children.ref, rootRef);\n  const lastKeydown = React.useRef(null);\n  React.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    activated.current = !disableAutoFocus;\n  }, [disableAutoFocus, open]);\n  React.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    const doc = ownerDocument(rootRef.current);\n    if (!rootRef.current.contains(doc.activeElement)) {\n      if (!rootRef.current.hasAttribute('tabIndex')) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.error(['MUI: The modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to \"-1\".'].join('\\n'));\n        }\n        rootRef.current.setAttribute('tabIndex', '-1');\n      }\n      if (activated.current) {\n        rootRef.current.focus();\n      }\n    }\n    return () => {\n      // restoreLastFocus()\n      if (!disableRestoreFocus) {\n        // In IE11 it is possible for document.activeElement to be null resulting\n        // in nodeToRestore.current being null.\n        // Not all elements in IE11 have a focus method.\n        // Once IE11 support is dropped the focus() call can be unconditional.\n        if (nodeToRestore.current && nodeToRestore.current.focus) {\n          ignoreNextEnforceFocus.current = true;\n          nodeToRestore.current.focus();\n        }\n        nodeToRestore.current = null;\n      }\n    };\n    // Missing `disableRestoreFocus` which is fine.\n    // We don't support changing that prop on an open FocusTrap\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [open]);\n  React.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    const doc = ownerDocument(rootRef.current);\n    const contain = nativeEvent => {\n      const {\n        current: rootElement\n      } = rootRef;\n\n      // Cleanup functions are executed lazily in React 17.\n      // Contain can be called between the component being unmounted and its cleanup function being run.\n      if (rootElement === null) {\n        return;\n      }\n      if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {\n        ignoreNextEnforceFocus.current = false;\n        return;\n      }\n      if (!rootElement.contains(doc.activeElement)) {\n        // if the focus event is not coming from inside the children's react tree, reset the refs\n        if (nativeEvent && reactFocusEventTarget.current !== nativeEvent.target || doc.activeElement !== reactFocusEventTarget.current) {\n          reactFocusEventTarget.current = null;\n        } else if (reactFocusEventTarget.current !== null) {\n          return;\n        }\n        if (!activated.current) {\n          return;\n        }\n        let tabbable = [];\n        if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {\n          tabbable = getTabbable(rootRef.current);\n        }\n        if (tabbable.length > 0) {\n          var _lastKeydown$current, _lastKeydown$current2;\n          const isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');\n          const focusNext = tabbable[0];\n          const focusPrevious = tabbable[tabbable.length - 1];\n          if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {\n            if (isShiftTab) {\n              focusPrevious.focus();\n            } else {\n              focusNext.focus();\n            }\n          }\n        } else {\n          rootElement.focus();\n        }\n      }\n    };\n    const loopFocus = nativeEvent => {\n      lastKeydown.current = nativeEvent;\n      if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {\n        return;\n      }\n\n      // Make sure the next tab starts from the right place.\n      // doc.activeElement refers to the origin.\n      if (doc.activeElement === rootRef.current && nativeEvent.shiftKey) {\n        // We need to ignore the next contain as\n        // it will try to move the focus back to the rootRef element.\n        ignoreNextEnforceFocus.current = true;\n        if (sentinelEnd.current) {\n          sentinelEnd.current.focus();\n        }\n      }\n    };\n    doc.addEventListener('focusin', contain);\n    doc.addEventListener('keydown', loopFocus, true);\n\n    // With Edge, Safari and Firefox, no focus related events are fired when the focused area stops being a focused area.\n    // e.g. https://bugzilla.mozilla.org/show_bug.cgi?id=559561.\n    // Instead, we can look if the active element was restored on the BODY element.\n    //\n    // The whatwg spec defines how the browser should behave but does not explicitly mention any events:\n    // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.\n    const interval = setInterval(() => {\n      if (doc.activeElement && doc.activeElement.tagName === 'BODY') {\n        contain(null);\n      }\n    }, 50);\n    return () => {\n      clearInterval(interval);\n      doc.removeEventListener('focusin', contain);\n      doc.removeEventListener('keydown', loopFocus, true);\n    };\n  }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open, getTabbable]);\n  const onFocus = event => {\n    if (nodeToRestore.current === null) {\n      nodeToRestore.current = event.relatedTarget;\n    }\n    activated.current = true;\n    reactFocusEventTarget.current = event.target;\n    const childrenPropsHandler = children.props.onFocus;\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const handleFocusSentinel = event => {\n    if (nodeToRestore.current === null) {\n      nodeToRestore.current = event.relatedTarget;\n    }\n    activated.current = true;\n  };\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"div\", {\n      tabIndex: open ? 0 : -1,\n      onFocus: handleFocusSentinel,\n      ref: sentinelStart,\n      \"data-testid\": \"sentinelStart\"\n    }), /*#__PURE__*/React.cloneElement(children, {\n      ref: handleRef,\n      onFocus\n    }), /*#__PURE__*/_jsx(\"div\", {\n      tabIndex: open ? 0 : -1,\n      onFocus: handleFocusSentinel,\n      ref: sentinelEnd,\n      \"data-testid\": \"sentinelEnd\"\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? FocusTrap.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef,\n  /**\n   * If `true`, the focus trap will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any focus trap children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the focus trap less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableAutoFocus: PropTypes.bool,\n  /**\n   * If `true`, the focus trap will not prevent focus from leaving the focus trap while open.\n   *\n   * Generally this should never be set to `true` as it makes the focus trap less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableEnforceFocus: PropTypes.bool,\n  /**\n   * If `true`, the focus trap will not restore focus to previously focused element once\n   * focus trap is hidden or unmounted.\n   * @default false\n   */\n  disableRestoreFocus: PropTypes.bool,\n  /**\n   * Returns an array of ordered tabbable nodes (i.e. in tab order) within the root.\n   * For instance, you can provide the \"tabbable\" npm dependency.\n   * @param {HTMLElement} root\n   */\n  getTabbable: PropTypes.func,\n  /**\n   * This prop extends the `open` prop.\n   * It allows to toggle the open state without having to wait for a rerender when changing the `open` prop.\n   * This prop should be memoized.\n   * It can be used to support multiple focus trap mounted at the same time.\n   * @default function defaultIsEnabled(): boolean {\n   *   return true;\n   * }\n   */\n  isEnabled: PropTypes.func,\n  /**\n   * If `true`, focus is locked.\n   */\n  open: PropTypes.bool.isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  FocusTrap['propTypes' + ''] = exactProp(FocusTrap.propTypes);\n}\nexport default FocusTrap;", "export {};", "export { default } from './FocusTrap';\nexport * from './FocusTrap.types';", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getFormControlUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiFormControl', slot);\n}\nconst formControlUnstyledClasses = generateUtilityClasses('MuiFormControl', ['root', 'disabled', 'error', 'filled', 'focused', 'required']);\nexport default formControlUnstyledClasses;", "export { default } from './FormControlUnstyled';\nexport { default as FormControlUnstyledContext } from './FormControlUnstyledContext';\nexport { default as formControlUnstyledClasses } from './formControlUnstyledClasses';\nexport * from './formControlUnstyledClasses';\nexport { default as useFormControlUnstyledContext } from './useFormControlUnstyledContext';", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getInputUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiInput', slot);\n}\nconst inputUnstyledClasses = generateUtilityClasses('MuiInput', ['root', 'formControl', 'focused', 'disabled', 'error', 'multiline', 'input', 'inputMultiline', 'inputTypeSearch', 'adornedStart', 'adornedEnd']);\nexport default inputUnstyledClasses;", "export {};", "export {};", "export { default } from './InputUnstyled';\nexport * from './InputUnstyled.types';\nexport { default as useInput } from './useInput';\nexport * from './useInput.types';\nexport { default as inputUnstyledClasses } from './inputUnstyledClasses';\nexport * from './inputUnstyledClasses';", "var ActionTypes; // split declaration and export due to https://github.com/codesandbox/codesandbox-client/issues/6435\n(function (ActionTypes) {\n  ActionTypes[\"blur\"] = \"blur\";\n  ActionTypes[\"focus\"] = \"focus\";\n  ActionTypes[\"keyDown\"] = \"keyDown\";\n  ActionTypes[\"optionClick\"] = \"optionClick\";\n  ActionTypes[\"optionHover\"] = \"optionHover\";\n  ActionTypes[\"optionsChange\"] = \"optionsChange\";\n  ActionTypes[\"setValue\"] = \"setValue\";\n  ActionTypes[\"setHighlight\"] = \"setHighlight\";\n  ActionTypes[\"textNavigation\"] = \"textNagivation\";\n})(ActionTypes || (ActionTypes = {}));\nexport { ActionTypes };", "export { default as useListbox } from './useListbox';\nexport { default as defaultListboxReducer } from './defaultListboxReducer';\nexport * from './useListbox.types';", "import * as React from 'react';\nconst MenuUnstyledContext = /*#__PURE__*/React.createContext(null);\nMenuUnstyledContext.displayName = 'MenuUnstyledContext';\nexport default MenuUnstyledContext;", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getMenuUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiMenu', slot);\n}\nconst menuUnstyledClasses = generateUtilityClasses('MuiMenu', ['root', 'listbox', 'expanded']);\nexport default menuUnstyledClasses;", "export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];", "export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}", "export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}", "import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };", "import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};", "import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}", "export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;", "export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}", "import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}", "import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}", "import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}", "import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}", "import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}", "import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}", "import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}", "import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}", "export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}", "import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}", "export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}", "import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}", "export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};", "export default function getVariation(placement) {\n  return placement.split('-')[1];\n}", "import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};", "import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};", "var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}", "var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}", "import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}", "import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}", "import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}", "import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}", "import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}", "import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}", "export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}", "import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}", "import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}", "import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}", "import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}", "import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases \u2013 research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};", "import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};", "import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};", "export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}", "import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};", "export { default as applyStyles } from \"./applyStyles.js\";\nexport { default as arrow } from \"./arrow.js\";\nexport { default as computeStyles } from \"./computeStyles.js\";\nexport { default as eventListeners } from \"./eventListeners.js\";\nexport { default as flip } from \"./flip.js\";\nexport { default as hide } from \"./hide.js\";\nexport { default as offset } from \"./offset.js\";\nexport { default as popperOffsets } from \"./popperOffsets.js\";\nexport { default as preventOverflow } from \"./preventOverflow.js\";", "export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}", "import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}", "import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}", "export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}", "export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}", "import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update \u2013 it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update \u2013 it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";", "export * from \"./enums.js\";\nexport * from \"./modifiers/index.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { popperGenerator, detectOverflow, createPopper as createPopperBase } from \"./createPopper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper } from \"./popper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\";", "/**\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// -----------------------------------------------------------------------------\nvar enableClientRenderFallbackOnTextMismatch = true; // Recoil still uses useMutableSource in www, need to delete\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    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) {\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  } // If the prop isn't in the special list, treat it as a simple attribute.\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 = getCurrentFiberStackInDev;\n    current = fiber;\n    isRendering = false;\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 PlacementAndUpdate =\n/*           */\nPlacement | Update;\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 HydratingAndUpdate =\n/*           */\nHydrating | Update;\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 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) !== 0;\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) === 0) {\n    nextTransitionLane = TransitionLane1;\n  }\n\n  return lane;\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n\n  if ((nextRetryLane & RetryLanes) === 0) {\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 = 0;\n  root.pingedLanes = 0;\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}\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 synchronouslyHydratedEvents = ['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 synchronouslyHydratedEvents.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} // Resets the replaying for this type of continuous event to no event.\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 _fiber = getInstanceFromNode(blockedOn);\n\n      if (_fiber !== null) {\n        // Attempt to increase the priority of this target.\n        attemptContinuousHydration(_fiber);\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  {\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}\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      var nativeEvent = queuedEvent.nativeEvent;\n      var nativeEventClone = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n      setReplayingEvent(nativeEventClone);\n      nativeEvent.target.dispatchEvent(nativeEventClone);\n      resetReplayingEvent();\n    } else {\n      // We're still blocked. Try again later.\n      var _fiber2 = getInstanceFromNode(nextBlockedOn);\n\n      if (_fiber2 !== null) {\n        attemptContinuousHydration(_fiber2);\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; // Next replay any continuous events.\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?\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  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 suppressHydrationWarning;\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    suppressHydrationWarning = rawProps[SUPPRESS_HYDRATION_WARNING] === true;\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 (!suppressHydrationWarning) {\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 (!suppressHydrationWarning) {\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 (suppressHydrationWarning) ; 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      // $FlowFixMe - Should be inferred as not undefined.\n      if (extraAttributeNames.size > 0 && !suppressHydrationWarning) {\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;\n\n{\n  SUPPRESS_HYDRATION_WARNING$1 = 'suppressHydrationWarning';\n}\n\nvar SUSPENSE_START_DATA = '$';\nvar SUSPENSE_END_DATA = '/$';\nvar SUSPENSE_PENDING_START_DATA = '$?';\nvar SUSPENSE_FALLBACK_START_DATA = '$!';\nvar STYLE$1 = 'style';\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  selectionInformation = getSelectionInformation();\n  var activeInstance = null;\n  return activeInstance;\n}\nfunction resetAfterCommit(containerInfo) {\n  restoreSelection(selectionInformation);\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    var body = container.body;\n\n    if (body != null) {\n      body.textContent = '';\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 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    {\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\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) {\n  if ( 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}\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) {\n  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n    warnForInsertedHydratedElement(parentInstance, type);\n  }\n}\nfunction didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, text) {\n  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n    warnForInsertedHydratedText(parentInstance, text);\n  }\n}\nfunction didNotFindHydratableSuspenseInstance(parentType, parentProps, parentInstance) {\n  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) ;\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\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// An array of all update queues that received updates during the current\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.\nvar interleavedQueues = null;\nfunction pushInterleavedQueue(queue) {\n  if (interleavedQueues === null) {\n    interleavedQueues = [queue];\n  } else {\n    interleavedQueues.push(queue);\n  }\n}\nfunction enqueueInterleavedUpdates() {\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 (interleavedQueues !== null) {\n    for (var i = 0; i < interleavedQueues.length; i++) {\n      var queue = interleavedQueues[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    interleavedQueues = 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;\n  }\n\n  var sharedQueue = updateQueue.shared;\n\n  if (isInterleavedUpdate(fiber)) {\n    var interleaved = sharedQueue.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      pushInterleavedQueue(sharedQueue);\n    } else {\n      update.next = interleaved.next;\n      interleaved.next = update;\n    }\n\n    sharedQueue.interleaved = update;\n  } else {\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    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}\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    enqueueUpdate(fiber, update);\n    var root = scheduleUpdateOnFiber(fiber, lane, eventTime);\n\n    if (root !== null) {\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    enqueueUpdate(fiber, update);\n    var root = scheduleUpdateOnFiber(fiber, lane, eventTime);\n\n    if (root !== null) {\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    enqueueUpdate(fiber, update);\n    var root = scheduleUpdateOnFiber(fiber, lane, eventTime);\n\n    if (root !== null) {\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\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;\nvar didSuspend = 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 markDidSuspendWhileHydratingDEV() {\n  {\n    didSuspend = true;\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  didSuspend = 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  didSuspend = 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        didNotHydrateInstanceWithinContainer(returnFiber.stateNode.containerInfo, instance);\n        break;\n\n      case HostComponent:\n        didNotHydrateInstance(returnFiber.type, returnFiber.memoizedProps, returnFiber.stateNode, instance);\n        break;\n\n      case SuspenseComponent:\n        var suspenseState = returnFiber.memoizedState;\n        if (suspenseState.dehydrated !== null) didNotHydrateInstanceWithinSuspenseInstance(suspenseState.dehydrated, instance);\n        break;\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 (didSuspend) {\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              var _type = fiber.type;\n              var _props = fiber.pendingProps;\n              didNotFindHydratableInstance(parentType, parentProps, parentInstance, _type);\n              break;\n\n            case HostText:\n              var _text = fiber.pendingProps;\n              didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, _text);\n              break;\n\n            case SuspenseComponent:\n              didNotFindHydratableSuspenseInstance(parentType, parentProps);\n              break;\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        {\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\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 = !didSuspend;\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      var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n\n      switch (returnFiber.tag) {\n        case HostRoot:\n          {\n            var parentContainer = returnFiber.stateNode.containerInfo;\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            didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, textContent, // TODO: Delete this argument when we remove the legacy root API.\n            isConcurrentMode);\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  didSuspend = 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 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            {\n              var payload = newChild._payload;\n              var init = newChild._init;\n              return createChild(returnFiber, init(payload), lanes);\n            }\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            {\n              var payload = newChild._payload;\n              var init = newChild._init;\n              return updateSlot(returnFiber, oldFiber, init(payload), lanes);\n            }\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          {\n            var payload = newChild._payload;\n            var init = newChild._init;\n            return updateFromMap(existingChildren, returnFiber, newIdx, init(payload), lanes);\n          }\n\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          {\n            var payload = child._payload;\n            var init = child._init;\n            warnOnInvalidKey(init(payload), knownKeys, returnFiber);\n            break;\n          }\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          {\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      }\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  scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\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 _mountState = mountState(value),\n      prevValue = _mountState[0],\n      setValue = _mountState[1];\n\n  mountEffect(function () {\n    var prevTransition = ReactCurrentBatchConfig$2.transition;\n    ReactCurrentBatchConfig$2.transition = {};\n\n    try {\n      setValue(value);\n    } finally {\n      ReactCurrentBatchConfig$2.transition = prevTransition;\n    }\n  }, [value]);\n  return prevValue;\n}\n\nfunction updateDeferredValue(value) {\n  var _updateState = updateState(),\n      prevValue = _updateState[0],\n      setValue = _updateState[1];\n\n  updateEffect(function () {\n    var prevTransition = ReactCurrentBatchConfig$2.transition;\n    ReactCurrentBatchConfig$2.transition = {};\n\n    try {\n      setValue(value);\n    } finally {\n      ReactCurrentBatchConfig$2.transition = prevTransition;\n    }\n  }, [value]);\n  return prevValue;\n}\n\nfunction rerenderDeferredValue(value) {\n  var _rerenderState = rerenderState(),\n      prevValue = _rerenderState[0],\n      setValue = _rerenderState[1];\n\n  updateEffect(function () {\n    var prevTransition = ReactCurrentBatchConfig$2.transition;\n    ReactCurrentBatchConfig$2.transition = {};\n\n    try {\n      setValue(value);\n    } finally {\n      ReactCurrentBatchConfig$2.transition = prevTransition;\n    }\n  }, [value]);\n  return prevValue;\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 _mountState2 = mountState(false),\n      isPending = _mountState2[0],\n      setPending = _mountState2[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 _updateState2 = updateState(),\n      isPending = _updateState2[0];\n\n  var hook = updateWorkInProgressHook();\n  var start = hook.memoizedState;\n  return [isPending, start];\n}\n\nfunction rerenderTransition() {\n  var _rerenderState2 = rerenderState(),\n      isPending = _rerenderState2[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    enqueueUpdate$1(fiber, queue, update);\n    var eventTime = requestEventTime();\n    var root = scheduleUpdateOnFiber(fiber, lane, eventTime);\n\n    if (root !== null) {\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    enqueueUpdate$1(fiber, queue, update);\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            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 eventTime = requestEventTime();\n    var root = scheduleUpdateOnFiber(fiber, lane, eventTime);\n\n    if (root !== null) {\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}\n\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n  if (isInterleavedUpdate(fiber)) {\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      pushInterleavedQueue(queue);\n    } else {\n      update.next = interleaved.next;\n      interleaved.next = update;\n    }\n\n    queue.interleaved = update;\n  } else {\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  }\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 createCapturedValue(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  };\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);\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    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      markDidSuspendWhileHydratingDEV();\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(value);\n        return;\n      }\n    }\n  } // 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\n  renderDidError(value);\n  value = createCapturedValue(value, sourceFiber);\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\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(workInProgress) {\n  workInProgress.flags |= Ref;\n\n  {\n    workInProgress.flags |= RefStatic;\n  }\n}\n\nvar appendAllChildren;\nvar updateHostContainer;\nvar updateHostComponent;\nvar updateHostText;\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 = 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 = 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 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\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        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(current, workInProgress, type, newProps, rootContainerInstance);\n\n          if (current.ref !== workInProgress.ref) {\n            markRef(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(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(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;\n\n        {\n          if ( hasUnhydratedTailNodes() && (workInProgress.mode & ConcurrentMode) !== NoMode && (workInProgress.flags & DidCapture) === NoFlags) {\n            warnIfUnhydratedTailNodes(workInProgress);\n            resetHydrationState();\n            workInProgress.flags |= ForceClientRender | Incomplete | ShouldCapture;\n            return workInProgress;\n          }\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            var _wasHydrated3 = popHydrationState(workInProgress);\n\n            if (current === null) {\n              if (!_wasHydrated3) {\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 null;\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 null;\n            }\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\n\n          upgradeHydrationErrorsToRecoverable();\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 = false;\n\n        if (current === null) {\n          popHydrationState(workInProgress);\n        } else {\n          var _prevState = current.memoizedState;\n          prevDidTimeout = _prevState !== null;\n        }\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 && !prevDidTimeout) {\n          var _offscreenFiber = workInProgress.child;\n          _offscreenFiber.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        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 _primaryChildFragment2 = workInProgress.child;\n\n              if (_primaryChildFragment2 !== null) {\n                // $FlowFixMe Flow doesn't support type casting in combination with the -= operator\n                workInProgress.treeBaseDuration -= _primaryChildFragment2.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 _prevState2 = current.memoizedState;\n          var prevIsHidden = _prevState2 !== 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\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\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;\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      var nextState = {\n        baseLanes: NoLanes,\n        cachePool: 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      };\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      };\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\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  {\n    reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n    return workInProgress.child;\n  }\n}\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$1(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, createCapturedValue(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    if (current !== null) {\n      // A class component without an instance only mounts if it suspended\n      // inside a non-concurrent tree, in an inconsistent state. We want to\n      // treat it like a new mount, even though an empty version of it already\n      // committed. 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    } // In the initial pass we might need to construct the instance.\n\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$1(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      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 = 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.');\n      return mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, recoverableError);\n    } else if (nextChildren !== prevChildren) {\n      var _recoverableError = new Error('This root received an early update, before anything was able ' + 'hydrate. Switched the entire root to client rendering.');\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$1(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$1(current, workInProgress);\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateHostText$1(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  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  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  if (_current !== null) {\n    // An incomplete 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  } // Promote the fiber to a class and try rendering again.\n\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  if (_current !== null) {\n    // An indeterminate 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  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  };\n}\n\nfunction updateSuspenseOffscreenState(prevOffscreenState, renderLanes) {\n  var cachePool = null;\n\n  return {\n    baseLanes: mergeLanes(prevOffscreenState.baseLanes, renderLanes),\n    cachePool: cachePool\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    // If we're currently hydrating, try to hydrate this boundary.\n    tryToClaimNextHydratableInstance(workInProgress); // This could've been a dehydrated suspense component.\n\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\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      return fallbackFragment;\n    } else {\n      return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n    }\n  } else {\n    // This is an update.\n    // If the current fiber has a SuspenseState, that means it's already showing\n    // a fallback.\n    var prevState = current.memoizedState;\n\n    if (prevState !== null) {\n      // The current tree is already showing a fallback\n      // Special path for hydration\n      {\n        var _dehydrated = prevState.dehydrated;\n\n        if (_dehydrated !== null) {\n          if (!didSuspend) {\n            return updateDehydratedSuspenseComponent(current, workInProgress, _dehydrated, prevState, renderLanes);\n          } else if (workInProgress.flags & ForceClientRender) {\n            // Something errored during hydration. Try again without hydrating.\n            workInProgress.flags &= ~ForceClientRender;\n            return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, new Error('There was an error while hydrating this Suspense boundary. ' + 'Switched to client rendering.'));\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 _primaryChildFragment2 = workInProgress.child;\n            _primaryChildFragment2.memoizedState = mountSuspenseOffscreenState(renderLanes);\n            workInProgress.memoizedState = SUSPENDED_MARKER;\n            return fallbackChildFragment;\n          }\n        }\n      }\n\n      if (showFallback) {\n        var _nextFallbackChildren2 = nextProps.fallback;\n        var _nextPrimaryChildren2 = nextProps.children;\n\n        var _fallbackChildFragment = updateSuspenseFallbackChildren(current, workInProgress, _nextPrimaryChildren2, _nextFallbackChildren2, renderLanes);\n\n        var _primaryChildFragment3 = workInProgress.child;\n        var prevOffscreenState = current.child.memoizedState;\n        _primaryChildFragment3.memoizedState = prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes) : updateSuspenseOffscreenState(prevOffscreenState, renderLanes);\n        _primaryChildFragment3.childLanes = getRemainingWorkInPrimaryTree(current, renderLanes);\n        workInProgress.memoizedState = SUSPENDED_MARKER;\n        return _fallbackChildFragment;\n      } else {\n        var _nextPrimaryChildren3 = nextProps.children;\n\n        var _primaryChildFragment4 = updateSuspensePrimaryChildren(current, workInProgress, _nextPrimaryChildren3, renderLanes);\n\n        workInProgress.memoizedState = null;\n        return _primaryChildFragment4;\n      }\n    } else {\n      // The current tree is not already showing a fallback.\n      if (showFallback) {\n        // Timed out.\n        var _nextFallbackChildren3 = nextProps.fallback;\n        var _nextPrimaryChildren4 = nextProps.children;\n\n        var _fallbackChildFragment2 = updateSuspenseFallbackChildren(current, workInProgress, _nextPrimaryChildren4, _nextFallbackChildren3, renderLanes);\n\n        var _primaryChildFragment5 = workInProgress.child;\n        var _prevOffscreenState = current.child.memoizedState;\n        _primaryChildFragment5.memoizedState = _prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes) : updateSuspenseOffscreenState(_prevOffscreenState, renderLanes);\n        _primaryChildFragment5.childLanes = getRemainingWorkInPrimaryTree(current, renderLanes); // Skip the primary children, and continue working on the\n        // fallback children.\n\n        workInProgress.memoizedState = SUSPENDED_MARKER;\n        return _fallbackChildFragment2;\n      } else {\n        // Still haven't timed out. Continue rendering the children, like we\n        // normally do.\n        var _nextPrimaryChildren5 = nextProps.children;\n\n        var _primaryChildFragment6 = updateSuspensePrimaryChildren(current, workInProgress, _nextPrimaryChildren5, renderLanes);\n\n        workInProgress.memoizedState = null;\n        return _primaryChildFragment6;\n      }\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    }\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);\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\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, suspenseInstance, suspenseState, renderLanes) {\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    return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, // TODO: The server should serialize the error message so we can log it\n    // here on the client. Or, in production, a hash/id that corresponds to\n    // the error.\n    new Error('The server could not finish this Suspense boundary, likely ' + 'due to an error during server rendering. Switched to ' + 'client rendering.'));\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        scheduleUpdateOnFiber(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    return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, 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  } 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 nextProps = workInProgress.pendingProps;\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}\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 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          {\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            }\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$1(current, workInProgress, renderLanes);\n\n    case HostText:\n      return updateHostText$1(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 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\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\n        {\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\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\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\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\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;\n\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    reportUncaughtErrorInDEV(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    reportUncaughtErrorInDEV(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    reportUncaughtErrorInDEV(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    reportUncaughtErrorInDEV(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        reportUncaughtErrorInDEV(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    reportUncaughtErrorInDEV(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      ensureCorrectReturnPointer(child, 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      reportUncaughtErrorInDEV(error);\n      captureCommitPhaseError(fiber, fiber.return, error);\n    }\n\n    resetCurrentFiber();\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      ensureCorrectReturnPointer(sibling, 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          safelyCallDestroy(finishedWork, nearestMountedAncestor, destroy);\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        effect.destroy = create();\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        {\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          var instance = node.stateNode;\n\n          if (isHidden) {\n            hideInstance(instance);\n          } else {\n            unhideInstance(node.stateNode, node.memoizedProps);\n          }\n        }\n      } else if (node.tag === HostText) {\n        if (hostSubtreeRoot === null) {\n          var _instance3 = node.stateNode;\n\n          if (isHidden) {\n            hideTextInstance(_instance3);\n          } else {\n            unhideTextInstance(_instance3, node.memoizedProps);\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 commitDetachRef(current) {\n  var currentRef = current.ref;\n\n  if (currentRef !== null) {\n    if (typeof currentRef === 'function') {\n      if ( current.mode & ProfileMode) {\n        try {\n          startLayoutEffectTimer();\n          currentRef(null);\n        } finally {\n          recordLayoutEffectDuration(current);\n        }\n      } else {\n        currentRef(null);\n      }\n    } else {\n      currentRef.current = null;\n    }\n  }\n} // User-originating errors (lifecycles and refs) should not interrupt\n// deletion, so don't let them throw. Host-originating errors should\n// interrupt deletion, so it's okay\n\n\nfunction commitUnmount(finishedRoot, current, nearestMountedAncestor) {\n  onCommitUnmount(current);\n\n  switch (current.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case MemoComponent:\n    case SimpleMemoComponent:\n      {\n        var updateQueue = current.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(current, nearestMountedAncestor, destroy);\n                } else if ((tag & Layout) !== NoFlags$1) {\n                  {\n                    markComponentLayoutEffectUnmountStarted(current);\n                  }\n\n                  if ( current.mode & ProfileMode) {\n                    startLayoutEffectTimer();\n                    safelyCallDestroy(current, nearestMountedAncestor, destroy);\n                    recordLayoutEffectDuration(current);\n                  } else {\n                    safelyCallDestroy(current, nearestMountedAncestor, destroy);\n                  }\n\n                  {\n                    markComponentLayoutEffectUnmountStopped();\n                  }\n                }\n              }\n\n              effect = effect.next;\n            } while (effect !== firstEffect);\n          }\n        }\n\n        return;\n      }\n\n    case ClassComponent:\n      {\n        safelyDetachRef(current, nearestMountedAncestor);\n        var instance = current.stateNode;\n\n        if (typeof instance.componentWillUnmount === 'function') {\n          safelyCallComponentWillUnmount(current, nearestMountedAncestor, instance);\n        }\n\n        return;\n      }\n\n    case HostComponent:\n      {\n        safelyDetachRef(current, nearestMountedAncestor);\n        return;\n      }\n\n    case HostPortal:\n      {\n        // TODO: this is recursive.\n        // We are also not using this parent because\n        // the portal will get pushed immediately.\n        {\n          unmountHostComponents(finishedRoot, current, nearestMountedAncestor);\n        }\n\n        return;\n      }\n\n    case DehydratedFragment:\n      {\n\n        return;\n      }\n\n    case ScopeComponent:\n      {\n\n        return;\n      }\n  }\n}\n\nfunction commitNestedUnmounts(finishedRoot, root, nearestMountedAncestor) {\n  // While we're inside a removed host node we don't want to call\n  // removeChild on the inner nodes because they're removed by the top\n  // call anyway. We also want to call componentWillUnmount on all\n  // composites before this host node is removed from the tree. Therefore\n  // we do an inner loop while we're still inside the host node.\n  var node = root;\n\n  while (true) {\n    commitUnmount(finishedRoot, node, nearestMountedAncestor); // Visit children because they may contain more composite or host nodes.\n    // Skip portals because commitUnmount() currently visits them recursively.\n\n    if (node.child !== null && ( // If we use mutation we drill down into portals using commitUnmount above.\n    // If we don't use mutation we drill down into portals here instead.\n     node.tag !== HostPortal)) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n\n    if (node === root) {\n      return;\n    }\n\n    while (node.sibling === null) {\n      if (node.return === null || node.return === root) {\n        return;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\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}\n\nfunction unmountHostComponents(finishedRoot, current, nearestMountedAncestor) {\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  var node = current; // Each iteration, currentParent is populated with node's host parent if not\n  // currentParentIsValid.\n\n  var currentParentIsValid = false; // Note: these two variables *must* always be updated together.\n\n  var currentParent;\n  var currentParentIsContainer;\n\n  while (true) {\n    if (!currentParentIsValid) {\n      var parent = node.return;\n\n      findParent: while (true) {\n        if (parent === 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        var parentStateNode = parent.stateNode;\n\n        switch (parent.tag) {\n          case HostComponent:\n            currentParent = parentStateNode;\n            currentParentIsContainer = false;\n            break findParent;\n\n          case HostRoot:\n            currentParent = parentStateNode.containerInfo;\n            currentParentIsContainer = true;\n            break findParent;\n\n          case HostPortal:\n            currentParent = parentStateNode.containerInfo;\n            currentParentIsContainer = true;\n            break findParent;\n        }\n\n        parent = parent.return;\n      }\n\n      currentParentIsValid = true;\n    }\n\n    if (node.tag === HostComponent || node.tag === HostText) {\n      commitNestedUnmounts(finishedRoot, node, nearestMountedAncestor); // After all the children have unmounted, it is now safe to remove the\n      // node from the tree.\n\n      if (currentParentIsContainer) {\n        removeChildFromContainer(currentParent, node.stateNode);\n      } else {\n        removeChild(currentParent, node.stateNode);\n      } // Don't visit children because we already visited them.\n\n    } else if ( node.tag === DehydratedFragment) {\n\n\n      if (currentParentIsContainer) {\n        clearSuspenseBoundaryFromContainer(currentParent, node.stateNode);\n      } else {\n        clearSuspenseBoundary(currentParent, node.stateNode);\n      }\n    } else if (node.tag === HostPortal) {\n      if (node.child !== null) {\n        // When we go into a portal, it becomes the parent to remove from.\n        // We will reassign it back when we pop the portal on the way up.\n        currentParent = node.stateNode.containerInfo;\n        currentParentIsContainer = true; // Visit children because portals might contain host components.\n\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n    } else {\n      commitUnmount(finishedRoot, node, nearestMountedAncestor); // Visit children because we may find more host components below.\n\n      if (node.child !== null) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n    }\n\n    if (node === current) {\n      return;\n    }\n\n    while (node.sibling === null) {\n      if (node.return === null || node.return === current) {\n        return;\n      }\n\n      node = node.return;\n\n      if (node.tag === HostPortal) {\n        // When we go out of the portal, we need to restore the parent.\n        // Since we don't keep a stack of them, we will search for it.\n        currentParentIsValid = false;\n      }\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n}\n\nfunction commitDeletion(finishedRoot, current, nearestMountedAncestor) {\n  {\n    // Recursively delete all host nodes from the parent.\n    // Detach refs and call componentWillUnmount() on the whole subtree.\n    unmountHostComponents(finishedRoot, current, nearestMountedAncestor);\n  }\n\n  detachFiberMutation(current);\n}\n\nfunction commitWork(current, finishedWork) {\n\n  switch (finishedWork.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case MemoComponent:\n    case SimpleMemoComponent:\n      {\n        commitHookEffectListUnmount(Insertion | HasEffect, finishedWork, finishedWork.return);\n        commitHookEffectListMount(Insertion | HasEffect, finishedWork); // 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        if ( finishedWork.mode & ProfileMode) {\n          try {\n            startLayoutEffectTimer();\n            commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n          } finally {\n            recordLayoutEffectDuration(finishedWork);\n          }\n        } else {\n          commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n        }\n\n        return;\n      }\n\n    case ClassComponent:\n      {\n        return;\n      }\n\n    case HostComponent:\n      {\n        var instance = finishedWork.stateNode;\n\n        if (instance != 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            commitUpdate(instance, updatePayload, type, oldProps, newProps);\n          }\n        }\n\n        return;\n      }\n\n    case HostText:\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        commitTextUpdate(textInstance, oldText, newText);\n        return;\n      }\n\n    case HostRoot:\n      {\n        {\n          if (current !== null) {\n            var _prevRootState = current.memoizedState;\n\n            if (_prevRootState.isDehydrated) {\n              var _root = finishedWork.stateNode;\n              commitHydratedContainer(_root.containerInfo);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case Profiler:\n      {\n        return;\n      }\n\n    case SuspenseComponent:\n      {\n        commitSuspenseCallback(finishedWork);\n        attachSuspenseRetryListeners(finishedWork);\n        return;\n      }\n\n    case SuspenseListComponent:\n      {\n        attachSuspenseRetryListeners(finishedWork);\n        return;\n      }\n\n    case IncompleteClassComponent:\n      {\n        return;\n      }\n  }\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\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.\n\nfunction commitResetTextContent(current) {\n\n  resetTextContent(current.stateNode);\n}\n\nfunction commitMutationEffects(root, firstChild, committedLanes) {\n  inProgressLanes = committedLanes;\n  inProgressRoot = root;\n  nextEffect = firstChild;\n  commitMutationEffects_begin(root, committedLanes);\n  inProgressLanes = null;\n  inProgressRoot = null;\n}\n\nfunction commitMutationEffects_begin(root, lanes) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect; // TODO: Should wrap this in flags check, too, as optimization\n\n    var deletions = fiber.deletions;\n\n    if (deletions !== null) {\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n\n        try {\n          commitDeletion(root, childToDelete, fiber);\n        } catch (error) {\n          reportUncaughtErrorInDEV(error);\n          captureCommitPhaseError(childToDelete, fiber, error);\n        }\n      }\n    }\n\n    var child = fiber.child;\n\n    if ((fiber.subtreeFlags & MutationMask) !== NoFlags && child !== null) {\n      ensureCorrectReturnPointer(child, fiber);\n      nextEffect = child;\n    } else {\n      commitMutationEffects_complete(root, lanes);\n    }\n  }\n}\n\nfunction commitMutationEffects_complete(root, lanes) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    setCurrentFiber(fiber);\n\n    try {\n      commitMutationEffectsOnFiber(fiber, root, lanes);\n    } catch (error) {\n      reportUncaughtErrorInDEV(error);\n      captureCommitPhaseError(fiber, fiber.return, error);\n    }\n\n    resetCurrentFiber();\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      ensureCorrectReturnPointer(sibling, fiber.return);\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitMutationEffectsOnFiber(finishedWork, root, lanes) {\n  // TODO: The factoring of this phase could probably be improved. Consider\n  // switching on the type of work before checking the flags. That's what\n  // we do in all the other phases. I think this one is only different\n  // because of the shared reconciliation logic below.\n  var flags = finishedWork.flags;\n\n  if (flags & ContentReset) {\n    commitResetTextContent(finishedWork);\n  }\n\n  if (flags & Ref) {\n    var current = finishedWork.alternate;\n\n    if (current !== null) {\n      commitDetachRef(current);\n    }\n  }\n\n  if (flags & Visibility) {\n    switch (finishedWork.tag) {\n      case SuspenseComponent:\n        {\n          var newState = finishedWork.memoizedState;\n          var isHidden = newState !== null;\n\n          if (isHidden) {\n            var _current = finishedWork.alternate;\n            var wasHidden = _current !== null && _current.memoizedState !== null;\n\n            if (!wasHidden) {\n              // TODO: Move to passive phase\n              markCommitTimeOfFallback();\n            }\n          }\n\n          break;\n        }\n\n      case OffscreenComponent:\n        {\n          var _newState = finishedWork.memoizedState;\n\n          var _isHidden = _newState !== null;\n\n          var _current2 = finishedWork.alternate;\n\n          var _wasHidden = _current2 !== null && _current2.memoizedState !== null;\n\n          var offscreenBoundary = finishedWork;\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            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            break;\n          }\n        }\n    }\n  } // The following switch statement is only concerned about placement,\n  // updates, and deletions. To avoid needing to add a case for every possible\n  // bitmap value, we remove the secondary effects from the effect tag and\n  // switch on that value.\n\n\n  var primaryFlags = flags & (Placement | Update | Hydrating);\n\n   switch (primaryFlags) {\n    case Placement:\n      {\n        commitPlacement(finishedWork); // 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        finishedWork.flags &= ~Placement;\n        break;\n      }\n\n    case PlacementAndUpdate:\n      {\n        // Placement\n        commitPlacement(finishedWork); // Clear the \"placement\" from effect tag so that we know that this is\n        // inserted, before any life-cycles like componentDidMount gets called.\n\n        finishedWork.flags &= ~Placement; // Update\n\n        var _current3 = finishedWork.alternate;\n        commitWork(_current3, finishedWork);\n        break;\n      }\n\n    case Hydrating:\n      {\n        finishedWork.flags &= ~Hydrating;\n        break;\n      }\n\n    case HydratingAndUpdate:\n      {\n        finishedWork.flags &= ~Hydrating; // Update\n\n        var _current4 = finishedWork.alternate;\n        commitWork(_current4, finishedWork);\n        break;\n      }\n\n    case Update:\n      {\n        var _current5 = finishedWork.alternate;\n        commitWork(_current5, finishedWork);\n        break;\n      }\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      ensureCorrectReturnPointer(firstChild, 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        reportUncaughtErrorInDEV(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      ensureCorrectReturnPointer(sibling, 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      reportUncaughtErrorInDEV(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) {\n  nextEffect = finishedWork;\n  commitPassiveMountEffects_begin(finishedWork, root);\n}\n\nfunction commitPassiveMountEffects_begin(subtreeRoot, root) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child;\n\n    if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && firstChild !== null) {\n      ensureCorrectReturnPointer(firstChild, fiber);\n      nextEffect = firstChild;\n    } else {\n      commitPassiveMountEffects_complete(subtreeRoot, root);\n    }\n  }\n}\n\nfunction commitPassiveMountEffects_complete(subtreeRoot, root) {\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);\n      } catch (error) {\n        reportUncaughtErrorInDEV(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      ensureCorrectReturnPointer(sibling, fiber.return);\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitPassiveMountOnFiber(finishedRoot, finishedWork) {\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      ensureCorrectReturnPointer(child, 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      ensureCorrectReturnPointer(sibling, 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      ensureCorrectReturnPointer(child, 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      ensureCorrectReturnPointer(sibling, 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}\n\nvar didWarnWrongReturnPointer = false;\n\nfunction ensureCorrectReturnPointer(fiber, expectedReturnFiber) {\n  {\n    if (!didWarnWrongReturnPointer && fiber.return !== expectedReturnFiber) {\n      didWarnWrongReturnPointer = true;\n\n      error('Internal React error: Return pointer is inconsistent ' + 'with parent.');\n    }\n  } // TODO: Remove this assignment once we're confident that it won't break\n  // anything, by checking the warning logs for the above invariant\n\n\n  fiber.return = expectedReturnFiber;\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            reportUncaughtErrorInDEV(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            reportUncaughtErrorInDEV(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            reportUncaughtErrorInDEV(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            reportUncaughtErrorInDEV(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            reportUncaughtErrorInDEV(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;\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 = [];\n\nvar NESTED_UPDATE_LIMIT = 50;\nvar nestedUpdateCount = 0;\nvar rootWithNestedUpdates = null;\nvar NESTED_PASSIVE_UPDATE_LIMIT = 50;\nvar nestedPassiveUpdateCount = 0; // 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;\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(fiber, lane, eventTime) {\n  checkForNestedUpdates();\n  var root = markUpdateLaneFromFiberToRoot(fiber, lane);\n\n  if (root === null) {\n    return null;\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      // TODO: Consolidate with `isInterleavedUpdate` check\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\n  return root;\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} // This is split into a separate function so we can mark a fiber with pending\n// work without treating it as a typical update that originates from an event;\n// e.g. retrying a Suspense boundary isn't an update, but it does schedule work\n// on a fiber.\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\nfunction isInterleavedUpdate(fiber, lane) {\n  return (// TODO: Optimize slightly by comparing to root that fiber belongs to.\n    // Requires some refactoring. Not a big deal though since it's rare for\n    // concurrent apps to have more than a single root.\n    workInProgressRoot !== null && (fiber.mode & ConcurrentMode) !== NoMode && ( // If this is a render phase update (i.e. UNSAFE_componentWillReceiveProps),\n    // then don't treat this as an interleaved update. This pattern is\n    // accompanied by a warning but we haven't fully deprecated it yet. We can\n    // remove once the deferRenderPhaseUpdateToNextBatch flag is enabled.\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 === NoContext) {\n            // It's only safe to do this conditionally because we always\n            // check for pending work before we exit the task.\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);\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), msUntilTimeout);\n            break;\n          }\n        } // The work expired. Commit immediately.\n\n\n        commitRoot(root, workInProgressRootRecoverableErrors);\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), _msUntilTimeout);\n            break;\n          }\n        } // Commit the placeholder.\n\n\n        commitRoot(root, workInProgressRootRecoverableErrors);\n        break;\n      }\n\n    case RootCompleted:\n      {\n        // The work completed. Ready to commit.\n        commitRoot(root, workInProgressRootRecoverableErrors);\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); // 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  enqueueInterleavedUpdates();\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    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    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) {\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, previousUpdateLanePriority);\n  } finally {\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n    setCurrentUpdatePriority(previousUpdateLanePriority);\n  }\n\n  return null;\n}\n\nfunction commitRootImpl(root, recoverableErrors, 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      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  } // 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      onRecoverableError(recoverableError);\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  }\n\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    markPassiveEffectsStarted(lanes);\n  }\n\n  var prevExecutionContext = executionContext;\n  executionContext |= CommitContext;\n  commitPassiveUnmountEffects(root.current);\n  commitPassiveMountEffects(root, root.current); // 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(); // If additional passive effects were scheduled, increment a counter. If this\n  // exceeds the limit, we'll fire a warning.\n\n  nestedPassiveUpdateCount = rootWithPendingPassiveEffects === null ? 0 : nestedPassiveUpdateCount + 1; // TODO: Move to commitPassiveMountEffects\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 = createCapturedValue(error, sourceFiber);\n  var update = createRootErrorUpdate(rootFiber, errorInfo, SyncLane);\n  enqueueUpdate(rootFiber, update);\n  var eventTime = requestEventTime();\n  var root = markUpdateLaneFromFiberToRoot(rootFiber, SyncLane);\n\n  if (root !== null) {\n    markRootUpdated(root, SyncLane, eventTime);\n    ensureRootIsScheduled(root, eventTime);\n  }\n}\n\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error$1) {\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 = createCapturedValue(error$1, sourceFiber);\n        var update = createClassErrorUpdate(fiber, errorInfo, SyncLane);\n        enqueueUpdate(fiber, update);\n        var eventTime = requestEventTime();\n        var root = markUpdateLaneFromFiberToRoot(fiber, SyncLane);\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 = markUpdateLaneFromFiberToRoot(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  {\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\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\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;\n\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}\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 (originalError !== null && typeof originalError === 'object' && typeof originalError.then === 'function') {\n        // Don't replay promises. Treat everything else like 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\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      scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\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  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    };\n    uninitializedFiber.memoizedState = _initialState;\n  }\n\n  initializeUpdateQueue(uninitializedFiber);\n  return root;\n}\n\nvar ReactVersion = '18.0.0-fc46dba67-20220329';\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);\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  enqueueUpdate(current$1, update);\n  var root = scheduleUpdateOnFiber(current$1, lane, eventTime);\n\n  if (root !== null) {\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      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    case SuspenseComponent:\n      var eventTime = requestEventTime();\n      flushSync(function () {\n        return scheduleUpdateOnFiber(fiber, SyncLane, eventTime);\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\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}\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 eventTime = requestEventTime();\n  var lane = SelectiveHydrationLane;\n  scheduleUpdateOnFiber(fiber, lane, eventTime);\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 eventTime = requestEventTime();\n  var lane = requestUpdateLane(fiber);\n  scheduleUpdateOnFiber(fiber, lane, eventTime);\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      scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\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      scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\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      scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\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    scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\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    scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\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    scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n  };\n\n  scheduleUpdate = function (fiber) {\n    scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\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) {\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) {\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", "import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getContainer(container) {\n  return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://mui.com/base/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://mui.com/base/api/portal/)\n */\nconst Portal = /*#__PURE__*/React.forwardRef(function Portal(props, ref) {\n  const {\n    children,\n    container,\n    disablePortal = false\n  } = props;\n  const [mountNode, setMountNode] = React.useState(null);\n  // @ts-expect-error TODO upstream fix\n  const handleRef = useForkRef( /*#__PURE__*/React.isValidElement(children) ? children.ref : null, ref);\n  useEnhancedEffect(() => {\n    if (!disablePortal) {\n      setMountNode(getContainer(container) || document.body);\n    }\n  }, [container, disablePortal]);\n  useEnhancedEffect(() => {\n    if (mountNode && !disablePortal) {\n      setRef(ref, mountNode);\n      return () => {\n        setRef(ref, null);\n      };\n    }\n    return undefined;\n  }, [ref, mountNode, disablePortal]);\n  if (disablePortal) {\n    if ( /*#__PURE__*/React.isValidElement(children)) {\n      const newProps = {\n        ref: handleRef\n      };\n      return /*#__PURE__*/React.cloneElement(children, newProps);\n    }\n    return /*#__PURE__*/_jsx(React.Fragment, {\n      children: children\n    });\n  }\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The children to render into the `container`.\n   */\n  children: PropTypes.node,\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport default Portal;", "export {};", "export { default } from './Portal';\nexport * from './Portal.types';", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getPopperUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiPopperUnstyled', slot);\n}\nconst popperUnstyledClasses = generateUtilityClasses('MuiPopperUnstyled', ['root']);\nexport default popperUnstyledClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"children\", \"component\", \"direction\", \"disablePortal\", \"modifiers\", \"open\", \"ownerState\", \"placement\", \"popperOptions\", \"popperRef\", \"slotProps\", \"slots\", \"TransitionProps\"],\n  _excluded2 = [\"anchorEl\", \"children\", \"container\", \"direction\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"style\", \"transition\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { createPopper } from '@popperjs/core';\nimport PropTypes from 'prop-types';\nimport composeClasses from '../composeClasses';\nimport Portal from '../Portal';\nimport { getPopperUnstyledUtilityClass } from './popperUnstyledClasses';\nimport { useSlotProps } from '../utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction flipPlacement(placement, direction) {\n  if (direction === 'ltr') {\n    return placement;\n  }\n  switch (placement) {\n    case 'bottom-end':\n      return 'bottom-start';\n    case 'bottom-start':\n      return 'bottom-end';\n    case 'top-end':\n      return 'top-start';\n    case 'top-start':\n      return 'top-end';\n    default:\n      return placement;\n  }\n}\nfunction resolveAnchorEl(anchorEl) {\n  return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nfunction isHTMLElement(element) {\n  return element.nodeType !== undefined;\n}\nfunction isVirtualElement(element) {\n  return !isHTMLElement(element);\n}\nconst useUtilityClasses = () => {\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getPopperUnstyledUtilityClass, {});\n};\nconst defaultPopperOptions = {};\nconst PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, ref) {\n  var _ref;\n  const {\n      anchorEl,\n      children,\n      component,\n      direction,\n      disablePortal,\n      modifiers,\n      open,\n      ownerState,\n      placement: initialPlacement,\n      popperOptions,\n      popperRef: popperRefProp,\n      slotProps = {},\n      slots = {},\n      TransitionProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const tooltipRef = React.useRef(null);\n  const ownRef = useForkRef(tooltipRef, ref);\n  const popperRef = React.useRef(null);\n  const handlePopperRef = useForkRef(popperRef, popperRefProp);\n  const handlePopperRefRef = React.useRef(handlePopperRef);\n  useEnhancedEffect(() => {\n    handlePopperRefRef.current = handlePopperRef;\n  }, [handlePopperRef]);\n  React.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n  const rtlPlacement = flipPlacement(initialPlacement, direction);\n  /**\n   * placement initialized from prop but can change during lifetime if modifiers.flip.\n   * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n   */\n  const [placement, setPlacement] = React.useState(rtlPlacement);\n  const [resolvedAnchorElement, setResolvedAnchorElement] = React.useState(resolveAnchorEl(anchorEl));\n  React.useEffect(() => {\n    if (popperRef.current) {\n      popperRef.current.forceUpdate();\n    }\n  });\n  React.useEffect(() => {\n    if (anchorEl) {\n      setResolvedAnchorElement(resolveAnchorEl(anchorEl));\n    }\n  }, [anchorEl]);\n  useEnhancedEffect(() => {\n    if (!resolvedAnchorElement || !open) {\n      return undefined;\n    }\n    const handlePopperUpdate = data => {\n      setPlacement(data.placement);\n    };\n    if (process.env.NODE_ENV !== 'production') {\n      if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {\n        const box = resolvedAnchorElement.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      }\n    }\n    let popperModifiers = [{\n      name: 'preventOverflow',\n      options: {\n        altBoundary: disablePortal\n      }\n    }, {\n      name: 'flip',\n      options: {\n        altBoundary: disablePortal\n      }\n    }, {\n      name: 'onUpdate',\n      enabled: true,\n      phase: 'afterWrite',\n      fn: ({\n        state\n      }) => {\n        handlePopperUpdate(state);\n      }\n    }];\n    if (modifiers != null) {\n      popperModifiers = popperModifiers.concat(modifiers);\n    }\n    if (popperOptions && popperOptions.modifiers != null) {\n      popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n    }\n    const popper = createPopper(resolvedAnchorElement, tooltipRef.current, _extends({\n      placement: rtlPlacement\n    }, popperOptions, {\n      modifiers: popperModifiers\n    }));\n    handlePopperRefRef.current(popper);\n    return () => {\n      popper.destroy();\n      handlePopperRefRef.current(null);\n    };\n  }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n  const childProps = {\n    placement: placement\n  };\n  if (TransitionProps !== null) {\n    childProps.TransitionProps = TransitionProps;\n  }\n  const classes = useUtilityClasses();\n  const Root = (_ref = component != null ? component : slots.root) != null ? _ref : 'div';\n  const rootProps = useSlotProps({\n    elementType: Root,\n    externalSlotProps: slotProps.root,\n    externalForwardedProps: other,\n    additionalProps: {\n      role: 'tooltip',\n      ref: ownRef\n    },\n    ownerState: _extends({}, props, ownerState),\n    className: classes.root\n  });\n  return /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {\n    children: typeof children === 'function' ? children(childProps) : children\n  }));\n});\n\n/**\n * Poppers rely on the 3rd party library [Popper.js](https://popper.js.org/docs/v2/) for positioning.\n *\n * Demos:\n *\n * - [Unstyled Popper](https://mui.com/base/react-popper/)\n *\n * API:\n *\n * - [PopperUnstyled API](https://mui.com/base/api/popper-unstyled/)\n */\nconst PopperUnstyled = /*#__PURE__*/React.forwardRef(function PopperUnstyled(props, ref) {\n  const {\n      anchorEl,\n      children,\n      container: containerProp,\n      direction = 'ltr',\n      disablePortal = false,\n      keepMounted = false,\n      modifiers,\n      open,\n      placement = 'bottom',\n      popperOptions = defaultPopperOptions,\n      popperRef,\n      style,\n      transition = false,\n      slotProps = {},\n      slots = {}\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  const [exited, setExited] = React.useState(true);\n  const handleEnter = () => {\n    setExited(false);\n  };\n  const handleExited = () => {\n    setExited(true);\n  };\n  if (!keepMounted && !open && (!transition || exited)) {\n    return null;\n  }\n\n  // If the container prop is provided, use that\n  // If the anchorEl prop is provided, use its parent body element as the container\n  // If neither are provided let the Modal take care of choosing the container\n  let container;\n  if (containerProp) {\n    container = containerProp;\n  } else if (anchorEl) {\n    const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n    container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;\n  }\n  const display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;\n  const transitionProps = transition ? {\n    in: open,\n    onEnter: handleEnter,\n    onExited: handleExited\n  } : undefined;\n  return /*#__PURE__*/_jsx(Portal, {\n    disablePortal: disablePortal,\n    container: container,\n    children: /*#__PURE__*/_jsx(PopperTooltip, _extends({\n      anchorEl: anchorEl,\n      direction: direction,\n      disablePortal: disablePortal,\n      modifiers: modifiers,\n      ref: ref,\n      open: transition ? !exited : open,\n      placement: placement,\n      popperOptions: popperOptions,\n      popperRef: popperRef,\n      slotProps: slotProps,\n      slots: slots\n    }, other, {\n      style: _extends({\n        // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n        position: 'fixed',\n        // Fix Popper.js display issue\n        top: 0,\n        left: 0,\n        display\n      }, style),\n      TransitionProps: transitionProps,\n      children: children\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? PopperUnstyled.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n   * or a function that returns either.\n   * It's used to set the position of the popper.\n   * The return value will passed as the reference object of the Popper instance.\n   */\n  anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), props => {\n    if (props.open) {\n      const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n      if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {\n        const box = resolvedAnchorEl.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n        return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n      }\n    }\n    return null;\n  }),\n  /**\n   * Popper render function or node.\n   */\n  children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * Direction of the text.\n   * @default 'ltr'\n   */\n  direction: PropTypes.oneOf(['ltr', 'rtl']),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Popper.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Popper.js is based on a \"plugin-like\" architecture,\n   * most of its features are fully encapsulated \"modifiers\".\n   *\n   * A modifier is a function that is called each time Popper.js needs to\n   * compute the position of the popper.\n   * For this reason, modifiers should be very performant to avoid bottlenecks.\n   * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n   */\n  modifiers: PropTypes.arrayOf(PropTypes.shape({\n    data: PropTypes.object,\n    effect: PropTypes.func,\n    enabled: PropTypes.bool,\n    fn: PropTypes.func,\n    name: PropTypes.any,\n    options: PropTypes.object,\n    phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n    requires: PropTypes.arrayOf(PropTypes.string),\n    requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n  })),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * Popper placement.\n   * @default 'bottom'\n   */\n  placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n   * @default {}\n   */\n  popperOptions: PropTypes.shape({\n    modifiers: PropTypes.array,\n    onFirstUpdate: PropTypes.func,\n    placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n    strategy: PropTypes.oneOf(['absolute', 'fixed'])\n  }),\n  /**\n   * A ref that points to the used popper instance.\n   */\n  popperRef: refType,\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * Help supporting a react-transition-group/Transition component.\n   * @default false\n   */\n  transition: PropTypes.bool\n} : void 0;\nexport default PopperUnstyled;", "export { default } from './PopperUnstyled';\nexport { default as popperUnstyledClasses, getPopperUnstyledUtilityClass } from './popperUnstyledClasses';", "export {};", "export {};", "export { default } from './MenuUnstyled';\nexport { default as MenuUnstyledContext } from './MenuUnstyledContext';\nexport * from './MenuUnstyledContext';\nexport { default as menuUnstyledClasses } from './menuUnstyledClasses';\nexport * from './menuUnstyledClasses';\nexport * from './MenuUnstyled.types';\nexport { default as useMenu } from './useMenu';\nexport * from './useMenu.types';", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getMenuItemUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiMenuItem', slot);\n}\nconst menuItemUnstyledClasses = generateUtilityClasses('MuiMenuItem', ['root', 'disabled', 'focusVisible']);\nexport default menuItemUnstyledClasses;", "export {};", "export {};", "export { default } from './MenuItemUnstyled';\nexport * from './MenuItemUnstyled.types';\nexport { default as menuItemUnstyledClasses } from './menuItemUnstyledClasses';\nexport * from './menuItemUnstyledClasses';\nexport { default as useMenuItem } from './useMenuItem';\nexport * from './useMenuItem.types';", "import { unstable_ownerWindow as ownerWindow, unstable_ownerDocument as ownerDocument, unstable_getScrollbarSize as getScrollbarSize } from '@mui/utils';\n// Is a vertical scrollbar displayed?\nfunction isOverflowing(container) {\n  const doc = ownerDocument(container);\n  if (doc.body === container) {\n    return ownerWindow(container).innerWidth > doc.documentElement.clientWidth;\n  }\n  return container.scrollHeight > container.clientHeight;\n}\nexport function ariaHidden(element, show) {\n  if (show) {\n    element.setAttribute('aria-hidden', 'true');\n  } else {\n    element.removeAttribute('aria-hidden');\n  }\n}\nfunction getPaddingRight(element) {\n  return parseInt(ownerWindow(element).getComputedStyle(element).paddingRight, 10) || 0;\n}\nfunction isAriaHiddenForbiddenOnElement(element) {\n  // The forbidden HTML tags are the ones from ARIA specification that\n  // can be children of body and can't have aria-hidden attribute.\n  // cf. https://www.w3.org/TR/html-aria/#docconformance\n  const forbiddenTagNames = ['TEMPLATE', 'SCRIPT', 'STYLE', 'LINK', 'MAP', 'META', 'NOSCRIPT', 'PICTURE', 'COL', 'COLGROUP', 'PARAM', 'SLOT', 'SOURCE', 'TRACK'];\n  const isForbiddenTagName = forbiddenTagNames.indexOf(element.tagName) !== -1;\n  const isInputHidden = element.tagName === 'INPUT' && element.getAttribute('type') === 'hidden';\n  return isForbiddenTagName || isInputHidden;\n}\nfunction ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude, show) {\n  const blacklist = [mountElement, currentElement, ...elementsToExclude];\n  [].forEach.call(container.children, element => {\n    const isNotExcludedElement = blacklist.indexOf(element) === -1;\n    const isNotForbiddenElement = !isAriaHiddenForbiddenOnElement(element);\n    if (isNotExcludedElement && isNotForbiddenElement) {\n      ariaHidden(element, show);\n    }\n  });\n}\nfunction findIndexOf(items, callback) {\n  let idx = -1;\n  items.some((item, index) => {\n    if (callback(item)) {\n      idx = index;\n      return true;\n    }\n    return false;\n  });\n  return idx;\n}\nfunction handleContainer(containerInfo, props) {\n  const restoreStyle = [];\n  const container = containerInfo.container;\n  if (!props.disableScrollLock) {\n    if (isOverflowing(container)) {\n      // Compute the size before applying overflow hidden to avoid any scroll jumps.\n      const scrollbarSize = getScrollbarSize(ownerDocument(container));\n      restoreStyle.push({\n        value: container.style.paddingRight,\n        property: 'padding-right',\n        el: container\n      });\n      // Use computed style, here to get the real padding to add our scrollbar width.\n      container.style.paddingRight = `${getPaddingRight(container) + scrollbarSize}px`;\n\n      // .mui-fixed is a global helper.\n      const fixedElements = ownerDocument(container).querySelectorAll('.mui-fixed');\n      [].forEach.call(fixedElements, element => {\n        restoreStyle.push({\n          value: element.style.paddingRight,\n          property: 'padding-right',\n          el: element\n        });\n        element.style.paddingRight = `${getPaddingRight(element) + scrollbarSize}px`;\n      });\n    }\n    let scrollContainer;\n    if (container.parentNode instanceof DocumentFragment) {\n      scrollContainer = ownerDocument(container).body;\n    } else {\n      // Improve Gatsby support\n      // https://css-tricks.com/snippets/css/force-vertical-scrollbar/\n      const parent = container.parentElement;\n      const containerWindow = ownerWindow(container);\n      scrollContainer = (parent == null ? void 0 : parent.nodeName) === 'HTML' && containerWindow.getComputedStyle(parent).overflowY === 'scroll' ? parent : container;\n    }\n\n    // Block the scroll even if no scrollbar is visible to account for mobile keyboard\n    // screensize shrink.\n    restoreStyle.push({\n      value: scrollContainer.style.overflow,\n      property: 'overflow',\n      el: scrollContainer\n    }, {\n      value: scrollContainer.style.overflowX,\n      property: 'overflow-x',\n      el: scrollContainer\n    }, {\n      value: scrollContainer.style.overflowY,\n      property: 'overflow-y',\n      el: scrollContainer\n    });\n    scrollContainer.style.overflow = 'hidden';\n  }\n  const restore = () => {\n    restoreStyle.forEach(({\n      value,\n      el,\n      property\n    }) => {\n      if (value) {\n        el.style.setProperty(property, value);\n      } else {\n        el.style.removeProperty(property);\n      }\n    });\n  };\n  return restore;\n}\nfunction getHiddenSiblings(container) {\n  const hiddenSiblings = [];\n  [].forEach.call(container.children, element => {\n    if (element.getAttribute('aria-hidden') === 'true') {\n      hiddenSiblings.push(element);\n    }\n  });\n  return hiddenSiblings;\n}\n/**\n * @ignore - do not document.\n *\n * Proper state management for containers and the modals in those containers.\n * Simplified, but inspired by react-overlay's ModalManager class.\n * Used by the Modal to ensure proper styling of containers.\n */\nexport default class ModalManager {\n  constructor() {\n    this.containers = void 0;\n    this.modals = void 0;\n    this.modals = [];\n    this.containers = [];\n  }\n  add(modal, container) {\n    let modalIndex = this.modals.indexOf(modal);\n    if (modalIndex !== -1) {\n      return modalIndex;\n    }\n    modalIndex = this.modals.length;\n    this.modals.push(modal);\n\n    // If the modal we are adding is already in the DOM.\n    if (modal.modalRef) {\n      ariaHidden(modal.modalRef, false);\n    }\n    const hiddenSiblings = getHiddenSiblings(container);\n    ariaHiddenSiblings(container, modal.mount, modal.modalRef, hiddenSiblings, true);\n    const containerIndex = findIndexOf(this.containers, item => item.container === container);\n    if (containerIndex !== -1) {\n      this.containers[containerIndex].modals.push(modal);\n      return modalIndex;\n    }\n    this.containers.push({\n      modals: [modal],\n      container,\n      restore: null,\n      hiddenSiblings\n    });\n    return modalIndex;\n  }\n  mount(modal, props) {\n    const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n    const containerInfo = this.containers[containerIndex];\n    if (!containerInfo.restore) {\n      containerInfo.restore = handleContainer(containerInfo, props);\n    }\n  }\n  remove(modal, ariaHiddenState = true) {\n    const modalIndex = this.modals.indexOf(modal);\n    if (modalIndex === -1) {\n      return modalIndex;\n    }\n    const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n    const containerInfo = this.containers[containerIndex];\n    containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);\n    this.modals.splice(modalIndex, 1);\n\n    // If that was the last modal in a container, clean up the container.\n    if (containerInfo.modals.length === 0) {\n      // The modal might be closed before it had the chance to be mounted in the DOM.\n      if (containerInfo.restore) {\n        containerInfo.restore();\n      }\n      if (modal.modalRef) {\n        // In case the modal wasn't in the DOM yet.\n        ariaHidden(modal.modalRef, ariaHiddenState);\n      }\n      ariaHiddenSiblings(containerInfo.container, modal.mount, modal.modalRef, containerInfo.hiddenSiblings, false);\n      this.containers.splice(containerIndex, 1);\n    } else {\n      // Otherwise make sure the next top modal is visible to a screen reader.\n      const nextTop = containerInfo.modals[containerInfo.modals.length - 1];\n      // as soon as a modal is adding its modalRef is undefined. it can't set\n      // aria-hidden because the dom element doesn't exist either\n      // when modal was unmounted before modalRef gets null\n      if (nextTop.modalRef) {\n        ariaHidden(nextTop.modalRef, false);\n      }\n    }\n    return modalIndex;\n  }\n  isTopModal(modal) {\n    return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;\n  }\n}", "import generateUtilityClasses from '../generateUtilityClasses';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getModalUtilityClass(slot) {\n  return generateUtilityClass('MuiModal', slot);\n}\nconst modalUnstyledClasses = generateUtilityClasses('MuiModal', ['root', 'hidden']);\nexport default modalUnstyledClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"classes\", \"closeAfterTransition\", \"component\", \"container\", \"disableAutoFocus\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"manager\", \"onBackdropClick\", \"onClose\", \"onKeyDown\", \"open\", \"onTransitionEnter\", \"onTransitionExited\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, HTMLElementType, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_createChainedFunction as createChainedFunction, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport composeClasses from '../composeClasses';\nimport Portal from '../Portal';\nimport ModalManager, { ariaHidden } from './ModalManager';\nimport FocusTrap from '../FocusTrap';\nimport { getModalUtilityClass } from './modalUnstyledClasses';\nimport { useSlotProps } from '../utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    open,\n    exited,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', !open && exited && 'hidden'],\n    backdrop: ['backdrop']\n  };\n  return composeClasses(slots, getModalUtilityClass, classes);\n};\nfunction getContainer(container) {\n  return typeof container === 'function' ? container() : container;\n}\nfunction getHasTransition(children) {\n  return children ? children.props.hasOwnProperty('in') : false;\n}\n\n// A modal manager used to track and manage the state of open Modals.\n// Modals don't open on the server so this won't conflict with concurrent requests.\nconst defaultManager = new ModalManager();\n\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * *   [Dialog](https://mui.com/material-ui/api/dialog/)\n * *   [Drawer](https://mui.com/material-ui/api/drawer/)\n * *   [Menu](https://mui.com/material-ui/api/menu/)\n * *   [Popover](https://mui.com/material-ui/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](https://mui.com/material-ui/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n *\n * Demos:\n *\n * - [Unstyled Modal](https://mui.com/base/react-modal/)\n *\n * API:\n *\n * - [ModalUnstyled API](https://mui.com/base/api/modal-unstyled/)\n */\nconst ModalUnstyled = /*#__PURE__*/React.forwardRef(function ModalUnstyled(props, forwardedRef) {\n  var _props$ariaHidden, _ref;\n  const {\n      children,\n      classes: classesProp,\n      closeAfterTransition = false,\n      component,\n      container,\n      disableAutoFocus = false,\n      disableEnforceFocus = false,\n      disableEscapeKeyDown = false,\n      disablePortal = false,\n      disableRestoreFocus = false,\n      disableScrollLock = false,\n      hideBackdrop = false,\n      keepMounted = false,\n      // private\n      manager = defaultManager,\n      onBackdropClick,\n      onClose,\n      onKeyDown,\n      open,\n      onTransitionEnter,\n      onTransitionExited,\n      slotProps = {},\n      slots = {}\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [exited, setExited] = React.useState(!open);\n  const modal = React.useRef({});\n  const mountNodeRef = React.useRef(null);\n  const modalRef = React.useRef(null);\n  const handleRef = useForkRef(modalRef, forwardedRef);\n  const hasTransition = getHasTransition(children);\n  const ariaHiddenProp = (_props$ariaHidden = props['aria-hidden']) != null ? _props$ariaHidden : true;\n  const getDoc = () => ownerDocument(mountNodeRef.current);\n  const getModal = () => {\n    modal.current.modalRef = modalRef.current;\n    modal.current.mountNode = mountNodeRef.current;\n    return modal.current;\n  };\n  const handleMounted = () => {\n    manager.mount(getModal(), {\n      disableScrollLock\n    });\n\n    // Fix a bug on Chrome where the scroll isn't initially 0.\n    if (modalRef.current) {\n      modalRef.current.scrollTop = 0;\n    }\n  };\n  const handleOpen = useEventCallback(() => {\n    const resolvedContainer = getContainer(container) || getDoc().body;\n    manager.add(getModal(), resolvedContainer);\n\n    // The element was already mounted.\n    if (modalRef.current) {\n      handleMounted();\n    }\n  });\n  const isTopModal = React.useCallback(() => manager.isTopModal(getModal()), [manager]);\n  const handlePortalRef = useEventCallback(node => {\n    mountNodeRef.current = node;\n    if (!node || !modalRef.current) {\n      return;\n    }\n    if (open && isTopModal()) {\n      handleMounted();\n    } else {\n      ariaHidden(modalRef.current, ariaHiddenProp);\n    }\n  });\n  const handleClose = React.useCallback(() => {\n    manager.remove(getModal(), ariaHiddenProp);\n  }, [manager, ariaHiddenProp]);\n  React.useEffect(() => {\n    return () => {\n      handleClose();\n    };\n  }, [handleClose]);\n  React.useEffect(() => {\n    if (open) {\n      handleOpen();\n    } else if (!hasTransition || !closeAfterTransition) {\n      handleClose();\n    }\n  }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);\n  const ownerState = _extends({}, props, {\n    classes: classesProp,\n    closeAfterTransition,\n    disableAutoFocus,\n    disableEnforceFocus,\n    disableEscapeKeyDown,\n    disablePortal,\n    disableRestoreFocus,\n    disableScrollLock,\n    exited,\n    hideBackdrop,\n    keepMounted\n  });\n  const classes = useUtilityClasses(ownerState);\n  const handleEnter = () => {\n    setExited(false);\n    if (onTransitionEnter) {\n      onTransitionEnter();\n    }\n  };\n  const handleExited = () => {\n    setExited(true);\n    if (onTransitionExited) {\n      onTransitionExited();\n    }\n    if (closeAfterTransition) {\n      handleClose();\n    }\n  };\n  const handleBackdropClick = event => {\n    if (event.target !== event.currentTarget) {\n      return;\n    }\n    if (onBackdropClick) {\n      onBackdropClick(event);\n    }\n    if (onClose) {\n      onClose(event, 'backdropClick');\n    }\n  };\n  const handleKeyDown = event => {\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n\n    // The handler doesn't take event.defaultPrevented into account:\n    //\n    // event.preventDefault() is meant to stop default behaviors like\n    // clicking a checkbox to check it, hitting a button to submit a form,\n    // and hitting left arrow to move the cursor in a text input etc.\n    // Only special HTML elements have these default behaviors.\n    if (event.key !== 'Escape' || !isTopModal()) {\n      return;\n    }\n    if (!disableEscapeKeyDown) {\n      // Swallow the event, in case someone is listening for the escape key on the body.\n      event.stopPropagation();\n      if (onClose) {\n        onClose(event, 'escapeKeyDown');\n      }\n    }\n  };\n  const childProps = {};\n  if (children.props.tabIndex === undefined) {\n    childProps.tabIndex = '-1';\n  }\n\n  // It's a Transition like component\n  if (hasTransition) {\n    childProps.onEnter = createChainedFunction(handleEnter, children.props.onEnter);\n    childProps.onExited = createChainedFunction(handleExited, children.props.onExited);\n  }\n  const Root = (_ref = component != null ? component : slots.root) != null ? _ref : 'div';\n  const rootProps = useSlotProps({\n    elementType: Root,\n    externalSlotProps: slotProps.root,\n    externalForwardedProps: other,\n    additionalProps: {\n      ref: handleRef,\n      role: 'presentation',\n      onKeyDown: handleKeyDown\n    },\n    className: classes.root,\n    ownerState\n  });\n  const BackdropComponent = slots.backdrop;\n  const backdropProps = useSlotProps({\n    elementType: BackdropComponent,\n    externalSlotProps: slotProps.backdrop,\n    additionalProps: {\n      'aria-hidden': true,\n      onClick: handleBackdropClick,\n      open\n    },\n    className: classes.backdrop,\n    ownerState\n  });\n  if (!keepMounted && !open && (!hasTransition || exited)) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(Portal\n  // @ts-expect-error TODO: include ref to MUI Base Portal props\n  , {\n    ref: handlePortalRef,\n    container: container,\n    disablePortal: disablePortal,\n    children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {\n      children: [!hideBackdrop && BackdropComponent ? /*#__PURE__*/_jsx(BackdropComponent, _extends({}, backdropProps)) : null, /*#__PURE__*/_jsx(FocusTrap, {\n        disableEnforceFocus: disableEnforceFocus,\n        disableAutoFocus: disableAutoFocus,\n        disableRestoreFocus: disableRestoreFocus,\n        isEnabled: isTopModal,\n        open: open,\n        children: /*#__PURE__*/React.cloneElement(children, childProps)\n      })]\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ModalUnstyled.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * When set to true the Modal waits until a nested Transition is completed before closing.\n   * @default false\n   */\n  closeAfterTransition: PropTypes.bool,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * If `true`, the modal will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableAutoFocus: PropTypes.bool,\n  /**\n   * If `true`, the modal will not prevent focus from leaving the modal while open.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableEnforceFocus: PropTypes.bool,\n  /**\n   * If `true`, hitting escape will not fire the `onClose` callback.\n   * @default false\n   */\n  disableEscapeKeyDown: PropTypes.bool,\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * If `true`, the modal will not restore focus to previously focused element once\n   * modal is hidden or unmounted.\n   * @default false\n   */\n  disableRestoreFocus: PropTypes.bool,\n  /**\n   * Disable the scroll lock behavior.\n   * @default false\n   */\n  disableScrollLock: PropTypes.bool,\n  /**\n   * If `true`, the backdrop is not rendered.\n   * @default false\n   */\n  hideBackdrop: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Modal.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Callback fired when the backdrop is clicked.\n   * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n   */\n  onBackdropClick: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The props used for each slot inside the Modal.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Modal.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    backdrop: PropTypes.elementType,\n    root: PropTypes.elementType\n  })\n} : void 0;\nexport default ModalUnstyled;", "export {};", "export { default } from './ModalUnstyled';\nexport * from './ModalUnstyled.types';\nexport { default as ModalManager } from './ModalManager';\nexport * from './ModalManager';\nexport { default as modalUnstyledClasses, getModalUtilityClass } from './modalUnstyledClasses';", "export function isOptionGroup(child) {\n  return !!child.options;\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { isOptionGroup } from './useSelect.types';\nexport function areOptionsEqual(option1, option2) {\n  return option1.label === option2.label && option1.value === option2.value && option1.disabled === option2.disabled;\n}\nexport function getOptionsFromChildren(children) {\n  if (children == null) {\n    return [];\n  }\n  const selectChildren = [];\n  React.Children.forEach(children, node => {\n    var _props, _props2, _element$props$disabl2;\n    const nodeChildren = node == null ? void 0 : (_props = node.props) == null ? void 0 : _props.children;\n    if ((node == null ? void 0 : (_props2 = node.props) == null ? void 0 : _props2.value) === undefined) {\n      if (nodeChildren != null) {\n        var _element$props$disabl;\n        const element = node;\n        const group = {\n          options: getOptionsFromChildren(nodeChildren),\n          label: element.props.label,\n          disabled: (_element$props$disabl = element.props.disabled) != null ? _element$props$disabl : false\n        };\n        selectChildren.push(group);\n      }\n      return;\n    }\n    const element = node;\n    const option = {\n      value: element.props.value,\n      label: element.props.label || element.props.children,\n      disabled: (_element$props$disabl2 = element.props.disabled) != null ? _element$props$disabl2 : false\n    };\n    selectChildren.push(option);\n  });\n  return selectChildren != null ? selectChildren : [];\n}\nexport function flattenOptionGroups(groupedOptions, isGroupDisabled = false) {\n  let flatOptions = [];\n  groupedOptions.forEach(optionOrGroup => {\n    if (isOptionGroup(optionOrGroup)) {\n      flatOptions = flatOptions.concat(flattenOptionGroups(optionOrGroup.options, optionOrGroup.disabled));\n    } else {\n      flatOptions.push(_extends({}, optionOrGroup, {\n        disabled: isGroupDisabled || optionOrGroup.disabled\n      }));\n    }\n  });\n  return flatOptions;\n}", "import * as React from 'react';\nexport const SelectUnstyledContext = /*#__PURE__*/React.createContext(undefined);", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getSelectUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiSelect', slot);\n}\nconst selectUnstyledClasses = generateUtilityClasses('MuiSelect', ['root', 'button', 'listbox', 'popper', 'active', 'expanded', 'disabled', 'focusVisible']);\nexport default selectUnstyledClasses;", "export {};", "export { default } from './MultiSelectUnstyled';\nexport * from './MultiSelectUnstyled.types';", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getOptionGroupUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiOptionGroup', slot);\n}\nconst optionGroupUnstyledClasses = generateUtilityClasses('MuiOptionGroup', ['root', 'label', 'list']);\nexport default optionGroupUnstyledClasses;", "export {};", "export { default } from './OptionGroupUnstyled';\nexport * from './OptionGroupUnstyled.types';\nexport { default as optionGroupUnstyledClasses } from './optionGroupUnstyledClasses';\nexport * from './optionGroupUnstyledClasses';", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getOptionUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiOption', slot);\n}\nconst optionUnstyledClasses = generateUtilityClasses('MuiOption', ['root', 'disabled', 'selected', 'highlighted']);\nexport default optionUnstyledClasses;", "export {};", "export {};", "export { default } from './OptionUnstyled';\nexport * from './OptionUnstyled.types';\nexport { default as optionUnstyledClasses } from './optionUnstyledClasses';\nexport * from './optionUnstyledClasses';\nexport { default as useOption } from './useOption';\nexport * from './useOption.types';", "export {};", "export { default } from './SelectUnstyled';\nexport * from './SelectUnstyledContext';\nexport { default as selectUnstyledClasses } from './selectUnstyledClasses';\nexport * from './selectUnstyledClasses';\nexport * from './SelectUnstyled.types';\nexport { default as useSelect } from './useSelect';\nexport * from './useSelect.types';\nexport * from './utils';", "import generateUtilityClasses from '../generateUtilityClasses';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSliderUtilityClass(slot) {\n  return generateUtilityClass('MuiSlider', slot);\n}\nconst sliderUnstyledClasses = generateUtilityClasses('MuiSlider', ['root', 'active', 'focusVisible', 'disabled', 'dragging', 'marked', 'vertical', 'trackInverted', 'trackFalse', 'rail', 'track', 'mark', 'markActive', 'markLabel', 'markLabelActive', 'thumb']);\nexport default sliderUnstyledClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_useIsFocusVisible as useIsFocusVisible, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerDocument as ownerDocument, unstable_useEventCallback as useEventCallback, unstable_useForkRef as useForkRef, unstable_useControlled as useControlled, visuallyHidden } from '@mui/utils';\nconst INTENTIONAL_DRAG_COUNT_THRESHOLD = 2;\nfunction asc(a, b) {\n  return a - b;\n}\nfunction clamp(value, min, max) {\n  if (value == null) {\n    return min;\n  }\n  return Math.min(Math.max(min, value), max);\n}\nfunction findClosest(values, currentValue) {\n  var _values$reduce;\n  const {\n    index: closestIndex\n  } = (_values$reduce = values.reduce((acc, value, index) => {\n    const distance = Math.abs(currentValue - value);\n    if (acc === null || distance < acc.distance || distance === acc.distance) {\n      return {\n        distance,\n        index\n      };\n    }\n    return acc;\n  }, null)) != null ? _values$reduce : {};\n  return closestIndex;\n}\nfunction trackFinger(event, touchId) {\n  // The event is TouchEvent\n  if (touchId.current !== undefined && event.changedTouches) {\n    const touchEvent = event;\n    for (let i = 0; i < touchEvent.changedTouches.length; i += 1) {\n      const touch = touchEvent.changedTouches[i];\n      if (touch.identifier === touchId.current) {\n        return {\n          x: touch.clientX,\n          y: touch.clientY\n        };\n      }\n    }\n    return false;\n  }\n\n  // The event is MouseEvent\n  return {\n    x: event.clientX,\n    y: event.clientY\n  };\n}\nexport function valueToPercent(value, min, max) {\n  return (value - min) * 100 / (max - min);\n}\nfunction percentToValue(percent, min, max) {\n  return (max - min) * percent + min;\n}\nfunction getDecimalPrecision(num) {\n  // This handles the case when num is very small (0.00000001), js will turn this into 1e-8.\n  // When num is bigger than 1 or less than -1 it won't get converted to this notation so it's fine.\n  if (Math.abs(num) < 1) {\n    const parts = num.toExponential().split('e-');\n    const matissaDecimalPart = parts[0].split('.')[1];\n    return (matissaDecimalPart ? matissaDecimalPart.length : 0) + parseInt(parts[1], 10);\n  }\n  const decimalPart = num.toString().split('.')[1];\n  return decimalPart ? decimalPart.length : 0;\n}\nfunction roundValueToStep(value, step, min) {\n  const nearest = Math.round((value - min) / step) * step + min;\n  return Number(nearest.toFixed(getDecimalPrecision(step)));\n}\nfunction setValueIndex({\n  values,\n  newValue,\n  index\n}) {\n  const output = values.slice();\n  output[index] = newValue;\n  return output.sort(asc);\n}\nfunction focusThumb({\n  sliderRef,\n  activeIndex,\n  setActive\n}) {\n  var _sliderRef$current, _doc$activeElement;\n  const doc = ownerDocument(sliderRef.current);\n  if (!((_sliderRef$current = sliderRef.current) != null && _sliderRef$current.contains(doc.activeElement)) || Number(doc == null ? void 0 : (_doc$activeElement = doc.activeElement) == null ? void 0 : _doc$activeElement.getAttribute('data-index')) !== activeIndex) {\n    var _sliderRef$current2;\n    (_sliderRef$current2 = sliderRef.current) == null ? void 0 : _sliderRef$current2.querySelector(`[type=\"range\"][data-index=\"${activeIndex}\"]`).focus();\n  }\n  if (setActive) {\n    setActive(activeIndex);\n  }\n}\nconst axisProps = {\n  horizontal: {\n    offset: percent => ({\n      left: `${percent}%`\n    }),\n    leap: percent => ({\n      width: `${percent}%`\n    })\n  },\n  'horizontal-reverse': {\n    offset: percent => ({\n      right: `${percent}%`\n    }),\n    leap: percent => ({\n      width: `${percent}%`\n    })\n  },\n  vertical: {\n    offset: percent => ({\n      bottom: `${percent}%`\n    }),\n    leap: percent => ({\n      height: `${percent}%`\n    })\n  }\n};\nexport const Identity = x => x;\n\n// TODO: remove support for Safari < 13.\n// https://caniuse.com/#search=touch-action\n//\n// Safari, on iOS, supports touch action since v13.\n// Over 80% of the iOS phones are compatible\n// in August 2020.\n// Utilizing the CSS.supports method to check if touch-action is supported.\n// Since CSS.supports is supported on all but Edge@12 and IE and touch-action\n// is supported on both Edge@12 and IE if CSS.supports is not available that means that\n// touch-action will be supported\nlet cachedSupportsTouchActionNone;\nfunction doesSupportTouchActionNone() {\n  if (cachedSupportsTouchActionNone === undefined) {\n    if (typeof CSS !== 'undefined' && typeof CSS.supports === 'function') {\n      cachedSupportsTouchActionNone = CSS.supports('touch-action', 'none');\n    } else {\n      cachedSupportsTouchActionNone = true;\n    }\n  }\n  return cachedSupportsTouchActionNone;\n}\n/**\n *\n * Demos:\n *\n * - [Unstyled Slider](https://mui.com/base/react-slider/#hook)\n *\n * API:\n *\n * - [useSlider API](https://mui.com/base/api/use-slider/)\n */\nexport default function useSlider(parameters) {\n  const {\n    'aria-labelledby': ariaLabelledby,\n    defaultValue,\n    disabled = false,\n    disableSwap = false,\n    isRtl = false,\n    marks: marksProp = false,\n    max = 100,\n    min = 0,\n    name,\n    onChange,\n    onChangeCommitted,\n    orientation = 'horizontal',\n    ref,\n    scale = Identity,\n    step = 1,\n    tabIndex,\n    value: valueProp\n  } = parameters;\n  const touchId = React.useRef();\n  // We can't use the :active browser pseudo-classes.\n  // - The active state isn't triggered when clicking on the rail.\n  // - The active state isn't transferred when inversing a range slider.\n  const [active, setActive] = React.useState(-1);\n  const [open, setOpen] = React.useState(-1);\n  const [dragging, setDragging] = React.useState(false);\n  const moveCount = React.useRef(0);\n  const [valueDerived, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue != null ? defaultValue : min,\n    name: 'Slider'\n  });\n  const handleChange = onChange && ((event, value, thumbIndex) => {\n    // Redefine target to allow name and value to be read.\n    // This allows seamless integration with the most popular form libraries.\n    // https://github.com/mui/material-ui/issues/13485#issuecomment-676048492\n    // Clone the event to not override `target` of the original event.\n    const nativeEvent = event.nativeEvent || event;\n    // @ts-ignore The nativeEvent is function, not object\n    const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n    Object.defineProperty(clonedEvent, 'target', {\n      writable: true,\n      value: {\n        value,\n        name\n      }\n    });\n    onChange(clonedEvent, value, thumbIndex);\n  });\n  const range = Array.isArray(valueDerived);\n  let values = range ? valueDerived.slice().sort(asc) : [valueDerived];\n  values = values.map(value => clamp(value, min, max));\n  const marks = marksProp === true && step !== null ? [...Array(Math.floor((max - min) / step) + 1)].map((_, index) => ({\n    value: min + step * index\n  })) : marksProp || [];\n  const marksValues = marks.map(mark => mark.value);\n  const {\n    isFocusVisibleRef,\n    onBlur: handleBlurVisible,\n    onFocus: handleFocusVisible,\n    ref: focusVisibleRef\n  } = useIsFocusVisible();\n  const [focusedThumbIndex, setFocusedThumbIndex] = React.useState(-1);\n  const sliderRef = React.useRef();\n  const handleFocusRef = useForkRef(focusVisibleRef, sliderRef);\n  const handleRef = useForkRef(ref, handleFocusRef);\n  const createHandleHiddenInputFocus = otherHandlers => event => {\n    var _otherHandlers$onFocu;\n    const index = Number(event.currentTarget.getAttribute('data-index'));\n    handleFocusVisible(event);\n    if (isFocusVisibleRef.current === true) {\n      setFocusedThumbIndex(index);\n    }\n    setOpen(index);\n    otherHandlers == null ? void 0 : (_otherHandlers$onFocu = otherHandlers.onFocus) == null ? void 0 : _otherHandlers$onFocu.call(otherHandlers, event);\n  };\n  const createHandleHiddenInputBlur = otherHandlers => event => {\n    var _otherHandlers$onBlur;\n    handleBlurVisible(event);\n    if (isFocusVisibleRef.current === false) {\n      setFocusedThumbIndex(-1);\n    }\n    setOpen(-1);\n    otherHandlers == null ? void 0 : (_otherHandlers$onBlur = otherHandlers.onBlur) == null ? void 0 : _otherHandlers$onBlur.call(otherHandlers, event);\n  };\n  useEnhancedEffect(() => {\n    if (disabled && sliderRef.current.contains(document.activeElement)) {\n      var _document$activeEleme;\n      // This is necessary because Firefox and Safari will keep focus\n      // on a disabled element:\n      // https://codesandbox.io/s/mui-pr-22247-forked-h151h?file=/src/App.js\n      // @ts-ignore\n      (_document$activeEleme = document.activeElement) == null ? void 0 : _document$activeEleme.blur();\n    }\n  }, [disabled]);\n  if (disabled && active !== -1) {\n    setActive(-1);\n  }\n  if (disabled && focusedThumbIndex !== -1) {\n    setFocusedThumbIndex(-1);\n  }\n  const createHandleHiddenInputChange = otherHandlers => event => {\n    var _otherHandlers$onChan;\n    (_otherHandlers$onChan = otherHandlers.onChange) == null ? void 0 : _otherHandlers$onChan.call(otherHandlers, event);\n    const index = Number(event.currentTarget.getAttribute('data-index'));\n    const value = values[index];\n    const marksIndex = marksValues.indexOf(value);\n\n    // @ts-ignore\n    let newValue = event.target.valueAsNumber;\n    if (marks && step == null) {\n      newValue = newValue < value ? marksValues[marksIndex - 1] : marksValues[marksIndex + 1];\n    }\n    newValue = clamp(newValue, min, max);\n    if (marks && step == null) {\n      const currentMarkIndex = marksValues.indexOf(values[index]);\n      newValue = newValue < values[index] ? marksValues[currentMarkIndex - 1] : marksValues[currentMarkIndex + 1];\n    }\n    if (range) {\n      // Bound the new value to the thumb's neighbours.\n      if (disableSwap) {\n        newValue = clamp(newValue, values[index - 1] || -Infinity, values[index + 1] || Infinity);\n      }\n      const previousValue = newValue;\n      newValue = setValueIndex({\n        values,\n        newValue,\n        index\n      });\n      let activeIndex = index;\n\n      // Potentially swap the index if needed.\n      if (!disableSwap) {\n        activeIndex = newValue.indexOf(previousValue);\n      }\n      focusThumb({\n        sliderRef,\n        activeIndex\n      });\n    }\n    setValueState(newValue);\n    setFocusedThumbIndex(index);\n    if (handleChange) {\n      handleChange(event, newValue, index);\n    }\n    if (onChangeCommitted) {\n      onChangeCommitted(event, newValue);\n    }\n  };\n  const previousIndex = React.useRef();\n  let axis = orientation;\n  if (isRtl && orientation === 'horizontal') {\n    axis += '-reverse';\n  }\n  const getFingerNewValue = ({\n    finger,\n    move = false\n  }) => {\n    const {\n      current: slider\n    } = sliderRef;\n    const {\n      width,\n      height,\n      bottom,\n      left\n    } = slider.getBoundingClientRect();\n    let percent;\n    if (axis.indexOf('vertical') === 0) {\n      percent = (bottom - finger.y) / height;\n    } else {\n      percent = (finger.x - left) / width;\n    }\n    if (axis.indexOf('-reverse') !== -1) {\n      percent = 1 - percent;\n    }\n    let newValue;\n    newValue = percentToValue(percent, min, max);\n    if (step) {\n      newValue = roundValueToStep(newValue, step, min);\n    } else {\n      const closestIndex = findClosest(marksValues, newValue);\n      newValue = marksValues[closestIndex];\n    }\n    newValue = clamp(newValue, min, max);\n    let activeIndex = 0;\n    if (range) {\n      if (!move) {\n        activeIndex = findClosest(values, newValue);\n      } else {\n        activeIndex = previousIndex.current;\n      }\n\n      // Bound the new value to the thumb's neighbours.\n      if (disableSwap) {\n        newValue = clamp(newValue, values[activeIndex - 1] || -Infinity, values[activeIndex + 1] || Infinity);\n      }\n      const previousValue = newValue;\n      newValue = setValueIndex({\n        values,\n        newValue,\n        index: activeIndex\n      });\n\n      // Potentially swap the index if needed.\n      if (!(disableSwap && move)) {\n        activeIndex = newValue.indexOf(previousValue);\n        previousIndex.current = activeIndex;\n      }\n    }\n    return {\n      newValue,\n      activeIndex\n    };\n  };\n  const handleTouchMove = useEventCallback(nativeEvent => {\n    const finger = trackFinger(nativeEvent, touchId);\n    if (!finger) {\n      return;\n    }\n    moveCount.current += 1;\n\n    // Cancel move in case some other element consumed a mouseup event and it was not fired.\n    // @ts-ignore buttons doesn't not exists on touch event\n    if (nativeEvent.type === 'mousemove' && nativeEvent.buttons === 0) {\n      // eslint-disable-next-line @typescript-eslint/no-use-before-define\n      handleTouchEnd(nativeEvent);\n      return;\n    }\n    const {\n      newValue,\n      activeIndex\n    } = getFingerNewValue({\n      finger,\n      move: true\n    });\n    focusThumb({\n      sliderRef,\n      activeIndex,\n      setActive\n    });\n    setValueState(newValue);\n    if (!dragging && moveCount.current > INTENTIONAL_DRAG_COUNT_THRESHOLD) {\n      setDragging(true);\n    }\n    if (handleChange && newValue !== valueDerived) {\n      handleChange(nativeEvent, newValue, activeIndex);\n    }\n  });\n  const handleTouchEnd = useEventCallback(nativeEvent => {\n    const finger = trackFinger(nativeEvent, touchId);\n    setDragging(false);\n    if (!finger) {\n      return;\n    }\n    const {\n      newValue\n    } = getFingerNewValue({\n      finger,\n      move: true\n    });\n    setActive(-1);\n    if (nativeEvent.type === 'touchend') {\n      setOpen(-1);\n    }\n    if (onChangeCommitted) {\n      onChangeCommitted(nativeEvent, newValue);\n    }\n    touchId.current = undefined;\n\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    stopListening();\n  });\n  const handleTouchStart = useEventCallback(nativeEvent => {\n    if (disabled) {\n      return;\n    }\n    // If touch-action: none; is not supported we need to prevent the scroll manually.\n    if (!doesSupportTouchActionNone()) {\n      nativeEvent.preventDefault();\n    }\n    const touch = nativeEvent.changedTouches[0];\n    if (touch != null) {\n      // A number that uniquely identifies the current finger in the touch session.\n      touchId.current = touch.identifier;\n    }\n    const finger = trackFinger(nativeEvent, touchId);\n    if (finger !== false) {\n      const {\n        newValue,\n        activeIndex\n      } = getFingerNewValue({\n        finger\n      });\n      focusThumb({\n        sliderRef,\n        activeIndex,\n        setActive\n      });\n      setValueState(newValue);\n      if (handleChange) {\n        handleChange(nativeEvent, newValue, activeIndex);\n      }\n    }\n    moveCount.current = 0;\n    const doc = ownerDocument(sliderRef.current);\n    doc.addEventListener('touchmove', handleTouchMove);\n    doc.addEventListener('touchend', handleTouchEnd);\n  });\n  const stopListening = React.useCallback(() => {\n    const doc = ownerDocument(sliderRef.current);\n    doc.removeEventListener('mousemove', handleTouchMove);\n    doc.removeEventListener('mouseup', handleTouchEnd);\n    doc.removeEventListener('touchmove', handleTouchMove);\n    doc.removeEventListener('touchend', handleTouchEnd);\n  }, [handleTouchEnd, handleTouchMove]);\n  React.useEffect(() => {\n    const {\n      current: slider\n    } = sliderRef;\n    slider.addEventListener('touchstart', handleTouchStart, {\n      passive: doesSupportTouchActionNone()\n    });\n    return () => {\n      // @ts-ignore\n      slider.removeEventListener('touchstart', handleTouchStart, {\n        passive: doesSupportTouchActionNone()\n      });\n      stopListening();\n    };\n  }, [stopListening, handleTouchStart]);\n  React.useEffect(() => {\n    if (disabled) {\n      stopListening();\n    }\n  }, [disabled, stopListening]);\n  const createHandleMouseDown = otherHandlers => event => {\n    var _otherHandlers$onMous;\n    (_otherHandlers$onMous = otherHandlers.onMouseDown) == null ? void 0 : _otherHandlers$onMous.call(otherHandlers, event);\n    if (disabled) {\n      return;\n    }\n    if (event.defaultPrevented) {\n      return;\n    }\n\n    // Only handle left clicks\n    if (event.button !== 0) {\n      return;\n    }\n\n    // Avoid text selection\n    event.preventDefault();\n    const finger = trackFinger(event, touchId);\n    if (finger !== false) {\n      const {\n        newValue,\n        activeIndex\n      } = getFingerNewValue({\n        finger\n      });\n      focusThumb({\n        sliderRef,\n        activeIndex,\n        setActive\n      });\n      setValueState(newValue);\n      if (handleChange) {\n        handleChange(event, newValue, activeIndex);\n      }\n    }\n    moveCount.current = 0;\n    const doc = ownerDocument(sliderRef.current);\n    doc.addEventListener('mousemove', handleTouchMove);\n    doc.addEventListener('mouseup', handleTouchEnd);\n  };\n  const trackOffset = valueToPercent(range ? values[0] : min, min, max);\n  const trackLeap = valueToPercent(values[values.length - 1], min, max) - trackOffset;\n  const getRootProps = (otherHandlers = {}) => {\n    const ownEventHandlers = {\n      onMouseDown: createHandleMouseDown(otherHandlers || {})\n    };\n    const mergedEventHandlers = _extends({}, otherHandlers, ownEventHandlers);\n    return _extends({\n      ref: handleRef\n    }, mergedEventHandlers);\n  };\n  const createHandleMouseOver = otherHandlers => event => {\n    var _otherHandlers$onMous2;\n    (_otherHandlers$onMous2 = otherHandlers.onMouseOver) == null ? void 0 : _otherHandlers$onMous2.call(otherHandlers, event);\n    const index = Number(event.currentTarget.getAttribute('data-index'));\n    setOpen(index);\n  };\n  const createHandleMouseLeave = otherHandlers => event => {\n    var _otherHandlers$onMous3;\n    (_otherHandlers$onMous3 = otherHandlers.onMouseLeave) == null ? void 0 : _otherHandlers$onMous3.call(otherHandlers, event);\n    setOpen(-1);\n  };\n  const getThumbProps = (otherHandlers = {}) => {\n    const ownEventHandlers = {\n      onMouseOver: createHandleMouseOver(otherHandlers || {}),\n      onMouseLeave: createHandleMouseLeave(otherHandlers || {})\n    };\n    return _extends({}, otherHandlers, ownEventHandlers);\n  };\n  const getHiddenInputProps = (otherHandlers = {}) => {\n    var _parameters$step;\n    const ownEventHandlers = {\n      onChange: createHandleHiddenInputChange(otherHandlers || {}),\n      onFocus: createHandleHiddenInputFocus(otherHandlers || {}),\n      onBlur: createHandleHiddenInputBlur(otherHandlers || {})\n    };\n    const mergedEventHandlers = _extends({}, otherHandlers, ownEventHandlers);\n    return _extends({\n      tabIndex,\n      'aria-labelledby': ariaLabelledby,\n      'aria-orientation': orientation,\n      'aria-valuemax': scale(max),\n      'aria-valuemin': scale(min),\n      name,\n      type: 'range',\n      min: parameters.min,\n      max: parameters.max,\n      step: (_parameters$step = parameters.step) != null ? _parameters$step : undefined,\n      disabled\n    }, mergedEventHandlers, {\n      style: _extends({}, visuallyHidden, {\n        direction: isRtl ? 'rtl' : 'ltr',\n        // So that VoiceOver's focus indicator matches the thumb's dimensions\n        width: '100%',\n        height: '100%'\n      })\n    });\n  };\n  return {\n    active,\n    axis: axis,\n    axisProps,\n    dragging,\n    focusedThumbIndex,\n    getHiddenInputProps,\n    getRootProps,\n    getThumbProps,\n    marks: marks,\n    open,\n    range,\n    trackLeap,\n    trackOffset,\n    values\n  };\n}", "export {};", "export {};", "export { default } from './SliderUnstyled';\nexport * from './SliderUnstyled.types';\nexport { default as useSlider } from './useSlider';\nexport * from './useSlider';\nexport * from './useSlider.types';\nexport { default as sliderUnstyledClasses } from './sliderUnstyledClasses';\nexport * from './sliderUnstyledClasses';", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getSnackbarUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiSnackbar', slot);\n}\nconst snackbarUnstyledClasses = generateUtilityClasses('MuiSnackbar', ['root']);\nexport default snackbarUnstyledClasses;", "export {};", "export {};", "export { default } from './SnackbarUnstyled';\nexport * from './SnackbarUnstyled.types';\nexport { default as snackbarUnstyledClasses } from './snackbarUnstyledClasses';\nexport * from './snackbarUnstyledClasses';\nexport { default as useSnackbar } from './useSnackbar';\nexport * from './useSnackbar.types';", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getSwitchUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiSwitch', slot);\n}\nconst switchUnstyledClasses = generateUtilityClasses('MuiSwitch', ['root', 'input', 'track', 'thumb', 'checked', 'disabled', 'focusVisible', 'readOnly']);\nexport default switchUnstyledClasses;", "export {};", "export {};", "export { default } from './SwitchUnstyled';\nexport * from './SwitchUnstyled.types';\nexport { default as useSwitch } from './useSwitch';\nexport * from './useSwitch.types';\nexport { default as switchUnstyledClasses } from './switchUnstyledClasses';\nexport * from './switchUnstyledClasses';", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getTablePaginationUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiTablePagination', slot);\n}\nconst tablePaginationUnstyledClasses = generateUtilityClasses('MuiTablePagination', ['root', 'toolbar', 'spacer', 'selectLabel', 'selectRoot', 'select', 'selectIcon', 'input', 'menuItem', 'displayedRows', 'actions']);\nexport default tablePaginationUnstyledClasses;", "export {};", "export {};", "export { default } from './TablePaginationUnstyled';\nexport * from './TablePaginationUnstyled.types';\nexport { default as TablePaginationActionsUnstyled } from './TablePaginationActionsUnstyled';\nexport * from './TablePaginationActionsUnstyled.types';\nexport { default as tablePaginationUnstyledClasses } from './tablePaginationUnstyledClasses';\nexport * from './tablePaginationUnstyledClasses';", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getTabPanelUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiTabPanel', slot);\n}\nconst tabPanelUnstyledClasses = generateUtilityClasses('MuiTabPanel', ['root', 'hidden']);\nexport default tabPanelUnstyledClasses;", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getTabsUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiTabs', slot);\n}\nconst tabsUnstyledClasses = generateUtilityClasses('MuiTabs', ['root', 'horizontal', 'vertical']);\nexport default tabsUnstyledClasses;", "import * as React from 'react';\nimport { unstable_useControlled as useControlled, unstable_useId as useId } from '@mui/utils';\n/**\n *\n * Demos:\n *\n * - [Unstyled Tabs](https://mui.com/base/react-tabs/#hooks)\n *\n * API:\n *\n * - [useTabs API](https://mui.com/base/api/use-tabs/)\n */\nfunction useTabs(parameters) {\n  const {\n    value: valueProp,\n    defaultValue,\n    onChange,\n    orientation,\n    direction,\n    selectionFollowsFocus\n  } = parameters;\n  const [value, setValue] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'Tabs',\n    state: 'value'\n  });\n  const idPrefix = useId();\n  const onSelected = React.useCallback((e, newValue) => {\n    setValue(newValue);\n    if (onChange) {\n      onChange(e, newValue);\n    }\n  }, [onChange, setValue]);\n  const tabsContextValue = React.useMemo(() => {\n    return {\n      idPrefix,\n      value,\n      onSelected,\n      orientation,\n      direction,\n      selectionFollowsFocus\n    };\n  }, [idPrefix, value, onSelected, orientation, direction, selectionFollowsFocus]);\n  return {\n    tabsContextValue\n  };\n}\nexport default useTabs;", "import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst Context = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n  Context.displayName = 'TabsContext';\n}\n\n/**\n * @returns {unknown}\n */\nexport function useTabContext() {\n  return React.useContext(Context);\n}\nexport function getPanelId(context, value) {\n  const {\n    idPrefix\n  } = context;\n  if (idPrefix === null) {\n    return null;\n  }\n  return `${context.idPrefix}-P-${value}`;\n}\nexport function getTabId(context, value) {\n  const {\n    idPrefix\n  } = context;\n  if (idPrefix === null) {\n    return null;\n  }\n  return `${context.idPrefix}-T-${value}`;\n}\nexport default Context;", "export {};", "export { default } from './TabsUnstyled';\nexport { default as TabsContext } from './TabsContext';\nexport * from './TabsContext';\nexport { default as tabsUnstyledClasses } from './tabsUnstyledClasses';\nexport * from './tabsUnstyledClasses';\nexport * from './TabsUnstyled.types';\nexport { default as useTabs } from './useTabs';\nexport * from './useTabs';", "export {};", "export {};", "export { default } from './TabPanelUnstyled';\nexport * from './TabPanelUnstyled.types';\nexport { default as tabPanelUnstyledClasses } from './tabPanelUnstyledClasses';\nexport * from './tabPanelUnstyledClasses';\nexport { default as useTabPanel } from './useTabPanel';\nexport * from './useTabPanel.types';", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getTabsListUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiTabsList', slot);\n}\nconst tabsListUnstyledClasses = generateUtilityClasses('MuiTabsList', ['root', 'horizontal', 'vertical']);\nexport default tabsListUnstyledClasses;", "/**\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", "export {};", "export {};", "export { default } from './TabsListUnstyled';\nexport * from './TabsListUnstyled.types';\nexport { default as tabsListUnstyledClasses } from './tabsListUnstyledClasses';\nexport * from './tabsListUnstyledClasses';\nexport { default as useTabsList } from './useTabsList';\nexport * from './useTabsList.types';", "import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getTabUnstyledUtilityClass(slot) {\n  return generateUtilityClass('MuiTab', slot);\n}\nconst tabUnstyledClasses = generateUtilityClasses('MuiTab', ['root', 'selected', 'disabled']);\nexport default tabUnstyledClasses;", "export {};", "export {};", "export { default } from './TabUnstyled';\nexport * from './TabUnstyled.types';\nexport { default as tabUnstyledClasses } from './tabUnstyledClasses';\nexport * from './tabUnstyledClasses';\nexport { default as useTab } from './useTab';\nexport * from './useTab.types';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"maxRows\", \"minRows\", \"style\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { flushSync } from 'react-dom';\nimport { unstable_debounce as debounce, unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getStyleValue(computedStyle, property) {\n  return parseInt(computedStyle[property], 10) || 0;\n}\nconst styles = {\n  shadow: {\n    // Visibility needed to hide the extra text area on iPads\n    visibility: 'hidden',\n    // Remove from the content flow\n    position: 'absolute',\n    // Ignore the scrollbar width\n    overflow: 'hidden',\n    height: 0,\n    top: 0,\n    left: 0,\n    // Create a new layer, increase the isolation of the computed values\n    transform: 'translateZ(0)'\n  }\n};\nfunction isEmpty(obj) {\n  return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nconst TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize(props, ref) {\n  const {\n      onChange,\n      maxRows,\n      minRows = 1,\n      style,\n      value\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    current: isControlled\n  } = React.useRef(value != null);\n  const inputRef = React.useRef(null);\n  const handleRef = useForkRef(ref, inputRef);\n  const shadowRef = React.useRef(null);\n  const renders = React.useRef(0);\n  const [state, setState] = React.useState({});\n  const getUpdatedState = React.useCallback(() => {\n    const input = inputRef.current;\n    const containerWindow = ownerWindow(input);\n    const computedStyle = containerWindow.getComputedStyle(input);\n\n    // If input's width is shrunk and it's not visible, don't sync height.\n    if (computedStyle.width === '0px') {\n      return {};\n    }\n    const inputShallow = shadowRef.current;\n    inputShallow.style.width = computedStyle.width;\n    inputShallow.value = input.value || props.placeholder || 'x';\n    if (inputShallow.value.slice(-1) === '\\n') {\n      // Certain fonts which overflow the line height will cause the textarea\n      // to report a different scrollHeight depending on whether the last line\n      // is empty. Make it non-empty to avoid this issue.\n      inputShallow.value += ' ';\n    }\n    const boxSizing = computedStyle['box-sizing'];\n    const padding = getStyleValue(computedStyle, 'padding-bottom') + getStyleValue(computedStyle, 'padding-top');\n    const border = getStyleValue(computedStyle, 'border-bottom-width') + getStyleValue(computedStyle, 'border-top-width');\n\n    // The height of the inner content\n    const innerHeight = inputShallow.scrollHeight;\n\n    // Measure height of a textarea with a single row\n    inputShallow.value = 'x';\n    const singleRowHeight = inputShallow.scrollHeight;\n\n    // The height of the outer content\n    let outerHeight = innerHeight;\n    if (minRows) {\n      outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);\n    }\n    if (maxRows) {\n      outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);\n    }\n    outerHeight = Math.max(outerHeight, singleRowHeight);\n\n    // Take the box sizing into account for applying this value as a style.\n    const outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);\n    const overflow = Math.abs(outerHeight - innerHeight) <= 1;\n    return {\n      outerHeightStyle,\n      overflow\n    };\n  }, [maxRows, minRows, props.placeholder]);\n  const updateState = (prevState, newState) => {\n    const {\n      outerHeightStyle,\n      overflow\n    } = newState;\n    // Need a large enough difference to update the height.\n    // This prevents infinite rendering loop.\n    if (renders.current < 20 && (outerHeightStyle > 0 && Math.abs((prevState.outerHeightStyle || 0) - outerHeightStyle) > 1 || prevState.overflow !== overflow)) {\n      renders.current += 1;\n      return {\n        overflow,\n        outerHeightStyle\n      };\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (renders.current === 20) {\n        console.error(['MUI: Too many re-renders. The layout is unstable.', 'TextareaAutosize limits the number of renders to prevent an infinite loop.'].join('\\n'));\n      }\n    }\n    return prevState;\n  };\n  const syncHeight = React.useCallback(() => {\n    const newState = getUpdatedState();\n    if (isEmpty(newState)) {\n      return;\n    }\n    setState(prevState => {\n      return updateState(prevState, newState);\n    });\n  }, [getUpdatedState]);\n  const syncHeightWithFlushSycn = () => {\n    const newState = getUpdatedState();\n    if (isEmpty(newState)) {\n      return;\n    }\n\n    // In React 18, state updates in a ResizeObserver's callback are happening after the paint which causes flickering\n    // when doing some visual updates in it. Using flushSync ensures that the dom will be painted after the states updates happen\n    // Related issue - https://github.com/facebook/react/issues/24331\n    flushSync(() => {\n      setState(prevState => {\n        return updateState(prevState, newState);\n      });\n    });\n  };\n  React.useEffect(() => {\n    const handleResize = debounce(() => {\n      renders.current = 0;\n\n      // If the TextareaAutosize component is replaced by Suspense with a fallback, the last\n      // ResizeObserver's handler that runs because of the change in the layout is trying to\n      // access a dom node that is no longer there (as the fallback component is being shown instead).\n      // See https://github.com/mui/material-ui/issues/32640\n      if (inputRef.current) {\n        syncHeightWithFlushSycn();\n      }\n    });\n    const containerWindow = ownerWindow(inputRef.current);\n    containerWindow.addEventListener('resize', handleResize);\n    let resizeObserver;\n    if (typeof ResizeObserver !== 'undefined') {\n      resizeObserver = new ResizeObserver(handleResize);\n      resizeObserver.observe(inputRef.current);\n    }\n    return () => {\n      handleResize.clear();\n      containerWindow.removeEventListener('resize', handleResize);\n      if (resizeObserver) {\n        resizeObserver.disconnect();\n      }\n    };\n  });\n  useEnhancedEffect(() => {\n    syncHeight();\n  });\n  React.useEffect(() => {\n    renders.current = 0;\n  }, [value]);\n  const handleChange = event => {\n    renders.current = 0;\n    if (!isControlled) {\n      syncHeight();\n    }\n    if (onChange) {\n      onChange(event);\n    }\n  };\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"textarea\", _extends({\n      value: value,\n      onChange: handleChange,\n      ref: handleRef\n      // Apply the rows prop to get a \"correct\" first SSR paint\n      ,\n      rows: minRows,\n      style: _extends({\n        height: state.outerHeightStyle,\n        // Need a large enough difference to allow scrolling.\n        // This prevents infinite rendering loop.\n        overflow: state.overflow ? 'hidden' : null\n      }, style)\n    }, other)), /*#__PURE__*/_jsx(\"textarea\", {\n      \"aria-hidden\": true,\n      className: props.className,\n      readOnly: true,\n      ref: shadowRef,\n      tabIndex: -1,\n      style: _extends({}, styles.shadow, style, {\n        padding: 0\n      })\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Maximum number of rows to display.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display.\n   * @default 1\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  placeholder: PropTypes.string,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * @ignore\n   */\n  value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.number, PropTypes.string])\n} : void 0;\nexport default TextareaAutosize;", "export { default } from './TextareaAutosize';", "/**\n * @mui/base v5.0.0-alpha.118\n *\n * @license MIT\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 */\nexport * from './utils';\nexport * from './AutocompleteUnstyled';\nexport { default as BadgeUnstyled } from './BadgeUnstyled';\nexport * from './BadgeUnstyled';\nexport { default as ButtonUnstyled } from './ButtonUnstyled';\nexport * from './ButtonUnstyled';\nexport { default as ClickAwayListener } from './ClickAwayListener';\nexport { default as unstable_composeClasses } from './composeClasses';\nexport { default as FocusTrap } from './FocusTrap';\nexport { default as FormControlUnstyled } from './FormControlUnstyled';\nexport * from './FormControlUnstyled';\nexport { default as InputUnstyled } from './InputUnstyled';\nexport * from './InputUnstyled';\nexport * from './ListboxUnstyled';\nexport { default as MenuUnstyled } from './MenuUnstyled';\nexport * from './MenuUnstyled';\nexport { default as MenuItemUnstyled } from './MenuItemUnstyled';\nexport * from './MenuItemUnstyled';\nexport { default as ModalUnstyled } from './ModalUnstyled';\nexport * from './ModalUnstyled';\nexport { default as MultiSelectUnstyled } from './MultiSelectUnstyled';\nexport * from './MultiSelectUnstyled';\nexport { default as NoSsr } from './NoSsr';\nexport { default as OptionGroupUnstyled } from './OptionGroupUnstyled';\nexport * from './OptionGroupUnstyled';\nexport { default as OptionUnstyled } from './OptionUnstyled';\nexport * from './OptionUnstyled';\nexport { default as PopperUnstyled } from './PopperUnstyled';\nexport { default as Portal } from './Portal';\nexport { default as SelectUnstyled } from './SelectUnstyled';\nexport * from './SelectUnstyled';\nexport { default as SliderUnstyled } from './SliderUnstyled';\nexport * from './SliderUnstyled';\nexport { default as SnackbarUnstyled } from './SnackbarUnstyled';\nexport * from './SnackbarUnstyled';\nexport { default as SwitchUnstyled } from './SwitchUnstyled';\nexport * from './SwitchUnstyled';\nexport { default as TablePaginationUnstyled } from './TablePaginationUnstyled';\nexport * from './TablePaginationUnstyled';\nexport { default as TabPanelUnstyled } from './TabPanelUnstyled';\nexport * from './TabPanelUnstyled';\nexport { default as TabsListUnstyled } from './TabsListUnstyled';\nexport * from './TabsListUnstyled';\nexport { default as TabsUnstyled } from './TabsUnstyled';\nexport * from './TabsUnstyled';\nexport { default as TabUnstyled } from './TabUnstyled';\nexport * from './TabUnstyled';\nexport { default as TextareaAutosize } from './TextareaAutosize';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n  return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getSvgIconUtilityClass } from './svgIconClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    fontSize,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n  };\n  return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n  name: 'MuiSvgIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$transitions2$d, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette$ownerState$c2, _palette2, _palette2$action, _palette3, _palette3$action;\n  return {\n    userSelect: 'none',\n    width: '1em',\n    height: '1em',\n    display: 'inline-block',\n    fill: 'currentColor',\n    flexShrink: 0,\n    transition: (_theme$transitions = theme.transitions) == null ? void 0 : (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n      duration: (_theme$transitions2 = theme.transitions) == null ? void 0 : (_theme$transitions2$d = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2$d.shorter\n    }),\n    fontSize: {\n      inherit: 'inherit',\n      small: ((_theme$typography = theme.typography) == null ? void 0 : (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n      medium: ((_theme$typography2 = theme.typography) == null ? void 0 : (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n      large: ((_theme$typography3 = theme.typography) == null ? void 0 : (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n    }[ownerState.fontSize],\n    // TODO v5 deprecate, v6 remove for sx\n    color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null ? void 0 : (_palette$ownerState$c2 = _palette[ownerState.color]) == null ? void 0 : _palette$ownerState$c2.main) != null ? _palette$ownerState$c : {\n      action: (_palette2 = (theme.vars || theme).palette) == null ? void 0 : (_palette2$action = _palette2.action) == null ? void 0 : _palette2$action.active,\n      disabled: (_palette3 = (theme.vars || theme).palette) == null ? void 0 : (_palette3$action = _palette3.action) == null ? void 0 : _palette3$action.disabled,\n      inherit: undefined\n    }[ownerState.color]\n  };\n});\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiSvgIcon'\n  });\n  const {\n      children,\n      className,\n      color = 'inherit',\n      component = 'svg',\n      fontSize = 'medium',\n      htmlColor,\n      inheritViewBox = false,\n      titleAccess,\n      viewBox = '0 0 24 24'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    fontSize,\n    instanceFontSize: inProps.fontSize,\n    inheritViewBox,\n    viewBox\n  });\n  const more = {};\n  if (!inheritViewBox) {\n    more.viewBox = viewBox;\n  }\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(SvgIconRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    focusable: \"false\",\n    color: htmlColor,\n    \"aria-hidden\": titleAccess ? undefined : true,\n    role: titleAccess ? 'img' : undefined,\n    ref: ref\n  }, more, other, {\n    ownerState: ownerState,\n    children: [children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n      children: titleAccess\n    }) : null]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Node passed into the SVG element.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n   * @default 'inherit'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n   * @default 'medium'\n   */\n  fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n  /**\n   * Applies a color attribute to the SVG element.\n   */\n  htmlColor: PropTypes.string,\n  /**\n   * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n   * prop will be ignored.\n   * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n   * `component`'s viewBox to the root node.\n   * @default false\n   */\n  inheritViewBox: PropTypes.bool,\n  /**\n   * The shape-rendering attribute. The behavior of the different options is described on the\n   * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n   * If you are having issues with blurry icons you should investigate this prop.\n   */\n  shapeRendering: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Provides a human-readable title for the element that contains it.\n   * https://www.w3.org/TR/SVG-access/#Equivalent\n   */\n  titleAccess: PropTypes.string,\n  /**\n   * Allows you to redefine what the coordinates without units mean inside an SVG element.\n   * For example, if the SVG element is 500 (width) by 200 (height),\n   * and you pass viewBox=\"0 0 50 20\",\n   * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n   * to bottom right (50,20) and each unit will be worth 10px.\n   * @default '0 0 24 24'\n   */\n  viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default SvgIcon;", "export { default } from './SvgIcon';\nexport { default as svgIconClasses } from './svgIconClasses';\nexport * from './svgIconClasses';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n  function Component(props, ref) {\n    return /*#__PURE__*/_jsx(SvgIcon, _extends({\n      \"data-testid\": `${displayName}Icon`,\n      ref: ref\n    }, props, {\n      children: path\n    }));\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // Need to set `displayName` on the inner component for React.memo.\n    // React prior to 16.14 ignores `displayName` on the wrapper.\n    Component.displayName = `${displayName}Icon`;\n  }\n  Component.muiName = SvgIcon.muiName;\n  return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}", "import { unstable_debounce as debounce } from '@mui/utils';\nexport default debounce;", "import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;", "import { unstable_ownerDocument as ownerDocument } from '@mui/utils';\nexport default ownerDocument;", "import { unstable_ownerWindow as ownerWindow } from '@mui/utils';\nexport default ownerWindow;", "import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;", "import { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nexport default useEnhancedEffect;", "import { unstable_useId as useId } from '@mui/utils';\nexport default useId;", "import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;", "import { unstable_useControlled as useControlled } from '@mui/utils';\nexport default useControlled;", "import { unstable_useEventCallback as useEventCallback } from '@mui/utils';\nexport default useEventCallback;", "import { unstable_useForkRef as useForkRef } from '@mui/utils';\nexport default useForkRef;", "import { unstable_useIsFocusVisible as useIsFocusVisible } from '@mui/utils';\nexport default useIsFocusVisible;", "import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/className';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n  configure: generator => {\n    if (process.env.NODE_ENV !== 'production') {\n      console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n    }\n    ClassNameGenerator.configure(generator);\n  }\n};", "function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };", "import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };", "/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);\n  return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}", "import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}", "function replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n  if (element.classList) {\n    element.classList.remove(className);\n  } else if (typeof element.className === 'string') {\n    element.className = replaceClassName(element.className, className);\n  } else {\n    element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n  }\n}", "export default {\n  disabled: false\n};", "import PropTypes from 'prop-types';\nexport var timeoutsShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n  enter: PropTypes.number,\n  exit: PropTypes.number,\n  appear: PropTypes.number\n}).isRequired]) : null;\nexport var classNamesShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n  enter: PropTypes.string,\n  exit: PropTypes.string,\n  active: PropTypes.string\n}), PropTypes.shape({\n  enter: PropTypes.string,\n  enterDone: PropTypes.string,\n  enterActive: PropTypes.string,\n  exit: PropTypes.string,\n  exitDone: PropTypes.string,\n  exitActive: PropTypes.string\n})]) : null;", "import React from 'react';\nexport default React.createContext(null);", "export var forceReflow = function forceReflow(node) {\n  return node.scrollTop;\n};", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        if (this.props.unmountOnExit || this.props.mountOnEnter) {\n          var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n          // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n          // To make the animation happen,  we have to separate each rendering and avoid being processed as batched.\n\n          if (node) forceReflow(node);\n        }\n\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n      var value = propValue[key];\n      return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n    }\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\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    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return addOneClass(node, c);\n  });\n};\n\nvar removeClass = function removeClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return removeOneClass(node, c);\n  });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n *         <div>\n *           {\"I'll receive my-node-* classes\"}\n *         </div>\n *       </CSSTransition>\n *       <button type=\"button\" onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n *   opacity: 0;\n * }\n * .my-node-enter-active {\n *   opacity: 1;\n *   transition: opacity 200ms;\n * }\n * .my-node-exit {\n *   opacity: 1;\n * }\n * .my-node-exit-active {\n *   opacity: 0;\n *   transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(CSSTransition, _React$Component);\n\n  function CSSTransition() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.appliedClasses = {\n      appear: {},\n      enter: {},\n      exit: {}\n    };\n\n    _this.onEnter = function (maybeNode, maybeAppearing) {\n      var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n          node = _this$resolveArgument[0],\n          appearing = _this$resolveArgument[1];\n\n      _this.removeClasses(node, 'exit');\n\n      _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n      if (_this.props.onEnter) {\n        _this.props.onEnter(maybeNode, maybeAppearing);\n      }\n    };\n\n    _this.onEntering = function (maybeNode, maybeAppearing) {\n      var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n          node = _this$resolveArgument2[0],\n          appearing = _this$resolveArgument2[1];\n\n      var type = appearing ? 'appear' : 'enter';\n\n      _this.addClass(node, type, 'active');\n\n      if (_this.props.onEntering) {\n        _this.props.onEntering(maybeNode, maybeAppearing);\n      }\n    };\n\n    _this.onEntered = function (maybeNode, maybeAppearing) {\n      var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n          node = _this$resolveArgument3[0],\n          appearing = _this$resolveArgument3[1];\n\n      var type = appearing ? 'appear' : 'enter';\n\n      _this.removeClasses(node, type);\n\n      _this.addClass(node, type, 'done');\n\n      if (_this.props.onEntered) {\n        _this.props.onEntered(maybeNode, maybeAppearing);\n      }\n    };\n\n    _this.onExit = function (maybeNode) {\n      var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n          node = _this$resolveArgument4[0];\n\n      _this.removeClasses(node, 'appear');\n\n      _this.removeClasses(node, 'enter');\n\n      _this.addClass(node, 'exit', 'base');\n\n      if (_this.props.onExit) {\n        _this.props.onExit(maybeNode);\n      }\n    };\n\n    _this.onExiting = function (maybeNode) {\n      var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n          node = _this$resolveArgument5[0];\n\n      _this.addClass(node, 'exit', 'active');\n\n      if (_this.props.onExiting) {\n        _this.props.onExiting(maybeNode);\n      }\n    };\n\n    _this.onExited = function (maybeNode) {\n      var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n          node = _this$resolveArgument6[0];\n\n      _this.removeClasses(node, 'exit');\n\n      _this.addClass(node, 'exit', 'done');\n\n      if (_this.props.onExited) {\n        _this.props.onExited(maybeNode);\n      }\n    };\n\n    _this.resolveArguments = function (maybeNode, maybeAppearing) {\n      return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n      : [maybeNode, maybeAppearing];\n    };\n\n    _this.getClassNames = function (type) {\n      var classNames = _this.props.classNames;\n      var isStringClassNames = typeof classNames === 'string';\n      var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n      var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n      var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n      var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n      return {\n        baseClassName: baseClassName,\n        activeClassName: activeClassName,\n        doneClassName: doneClassName\n      };\n    };\n\n    return _this;\n  }\n\n  var _proto = CSSTransition.prototype;\n\n  _proto.addClass = function addClass(node, type, phase) {\n    var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n    var _this$getClassNames = this.getClassNames('enter'),\n        doneClassName = _this$getClassNames.doneClassName;\n\n    if (type === 'appear' && phase === 'done' && doneClassName) {\n      className += \" \" + doneClassName;\n    } // This is to force a repaint,\n    // which is necessary in order to transition styles when adding a class name.\n\n\n    if (phase === 'active') {\n      if (node) forceReflow(node);\n    }\n\n    if (className) {\n      this.appliedClasses[type][phase] = className;\n\n      _addClass(node, className);\n    }\n  };\n\n  _proto.removeClasses = function removeClasses(node, type) {\n    var _this$appliedClasses$ = this.appliedClasses[type],\n        baseClassName = _this$appliedClasses$.base,\n        activeClassName = _this$appliedClasses$.active,\n        doneClassName = _this$appliedClasses$.done;\n    this.appliedClasses[type] = {};\n\n    if (baseClassName) {\n      removeClass(node, baseClassName);\n    }\n\n    if (activeClassName) {\n      removeClass(node, activeClassName);\n    }\n\n    if (doneClassName) {\n      removeClass(node, doneClassName);\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        _ = _this$props.classNames,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n    return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n      onEnter: this.onEnter,\n      onEntered: this.onEntered,\n      onEntering: this.onEntering,\n      onExit: this.onExit,\n      onExiting: this.onExiting,\n      onExited: this.onExited\n    }));\n  };\n\n  return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n  classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n  /**\n   * The animation classNames applied to the component as it appears, enters,\n   * exits or has finished the transition. A single name can be provided, which\n   * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n   *\n   * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n   * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n   * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n   *\n   * A few details to note about how these classes are applied:\n   *\n   * 1. They are _joined_ with the ones that are already defined on the child\n   *    component, so if you want to add some base styles, you can use\n   *    `className` without worrying that it will be overridden.\n   *\n   * 2. If the transition component mounts with `in={false}`, no classes are\n   *    applied yet. You might be expecting `*-exit-done`, but if you think\n   *    about it, a component cannot finish exiting if it hasn't entered yet.\n   *\n   * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n   *    allows you to define different behavior for when appearing is done and\n   *    when regular entering is done, using selectors like\n   *    `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n   *    an epic entrance animation when element first appears in the DOM using\n   *    [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n   *    simply use `fade-enter-done` for defining both cases.\n   *\n   * Each individual classNames can also be specified independently like:\n   *\n   * ```js\n   * classNames={{\n   *  appear: 'my-appear',\n   *  appearActive: 'my-active-appear',\n   *  appearDone: 'my-done-appear',\n   *  enter: 'my-enter',\n   *  enterActive: 'my-active-enter',\n   *  enterDone: 'my-done-enter',\n   *  exit: 'my-exit',\n   *  exitActive: 'my-active-exit',\n   *  exitDone: 'my-done-exit',\n   * }}\n   * ```\n   *\n   * If you want to set these classes using CSS Modules:\n   *\n   * ```js\n   * import styles from './styles.css';\n   * ```\n   *\n   * you might want to use camelCase in your CSS file, that way could simply\n   * spread them instead of listing them one by one:\n   *\n   * ```js\n   * classNames={{ ...styles }}\n   * ```\n   *\n   * @type {string | {\n   *  appear?: string,\n   *  appearActive?: string,\n   *  appearDone?: string,\n   *  enter?: string,\n   *  enterActive?: string,\n   *  enterDone?: string,\n   *  exit?: string,\n   *  exitActive?: string,\n   *  exitDone?: string,\n   * }}\n   */\n  classNames: classNamesShape,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n   * applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter-active' or\n   * 'appear-active' class is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or\n   * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' class is\n   * applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' classes\n   * are **removed** and the `exit-done` class is added to the DOM node.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;", "function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };", "import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && isValidElement(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return cloneElement(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!isValidElement(child)) return;\n    var hasPrev = (key in prevChildMapping);\n    var hasNext = (key in nextChildMapping);\n    var prevChild = prevChildMapping[key];\n    var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = cloneElement(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>`  does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      contextValue: {\n        isMounting: true\n      },\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.mounted = true;\n    this.setState({\n      contextValue: {\n        isMounting: false\n      }\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  } // node is `undefined` when user provided `nodeRef` prop\n  ;\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = getChildMapping(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = _extends({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var contextValue = this.state.contextValue;\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n        value: contextValue\n      }, children);\n    }\n\n    return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n      value: contextValue\n    }, /*#__PURE__*/React.createElement(Component, props, children));\n  };\n\n  return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: PropTypes.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: PropTypes.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;", "export { default as CSSTransition } from './CSSTransition';\nexport { default as ReplaceTransition } from './ReplaceTransition';\nexport { default as SwitchTransition } from './SwitchTransition';\nexport { default as TransitionGroup } from './TransitionGroup';\nexport { default as Transition } from './Transition';\nexport { default as config } from './config';", "export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n  var _style$transitionDura, _style$transitionTimi;\n  const {\n    timeout,\n    easing,\n    style = {}\n  } = props;\n  return {\n    duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n    easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === 'object' ? easing[options.mode] : easing,\n    delay: style.transitionDelay\n  };\n}", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCollapseUtilityClass(slot) {\n  return generateUtilityClass('MuiCollapse', slot);\n}\nconst collapseClasses = generateUtilityClasses('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\nexport default collapseClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"addEndListener\", \"children\", \"className\", \"collapsedSize\", \"component\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"orientation\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { duration } from '../styles/createTransitions';\nimport { getTransitionProps } from '../transitions/utils';\nimport useTheme from '../styles/useTheme';\nimport { useForkRef } from '../utils';\nimport { getCollapseUtilityClass } from './collapseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    orientation,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', `${orientation}`],\n    entered: ['entered'],\n    hidden: ['hidden'],\n    wrapper: ['wrapper', `${orientation}`],\n    wrapperInner: ['wrapperInner', `${orientation}`]\n  };\n  return composeClasses(slots, getCollapseUtilityClass, classes);\n};\nconst CollapseRoot = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  height: 0,\n  overflow: 'hidden',\n  transition: theme.transitions.create('height')\n}, ownerState.orientation === 'horizontal' && {\n  height: 'auto',\n  width: 0,\n  transition: theme.transitions.create('width')\n}, ownerState.state === 'entered' && _extends({\n  height: 'auto',\n  overflow: 'visible'\n}, ownerState.orientation === 'horizontal' && {\n  width: 'auto'\n}), ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && {\n  visibility: 'hidden'\n}));\nconst CollapseWrapper = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'Wrapper',\n  overridesResolver: (props, styles) => styles.wrapper\n})(({\n  ownerState\n}) => _extends({\n  // Hack to get children with a negative margin to not falsify the height computation.\n  display: 'flex',\n  width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n  width: 'auto',\n  height: '100%'\n}));\nconst CollapseWrapperInner = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'WrapperInner',\n  overridesResolver: (props, styles) => styles.wrapperInner\n})(({\n  ownerState\n}) => _extends({\n  width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n  width: 'auto',\n  height: '100%'\n}));\n\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/material-ui/react-stepper/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Collapse = /*#__PURE__*/React.forwardRef(function Collapse(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiCollapse'\n  });\n  const {\n      addEndListener,\n      children,\n      className,\n      collapsedSize: collapsedSizeProp = '0px',\n      component,\n      easing,\n      in: inProp,\n      onEnter,\n      onEntered,\n      onEntering,\n      onExit,\n      onExited,\n      onExiting,\n      orientation = 'vertical',\n      style,\n      timeout = duration.standard,\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = Transition\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    orientation,\n    collapsedSize: collapsedSizeProp\n  });\n  const classes = useUtilityClasses(ownerState);\n  const theme = useTheme();\n  const timer = React.useRef();\n  const wrapperRef = React.useRef(null);\n  const autoTransitionDuration = React.useRef();\n  const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n  const isHorizontal = orientation === 'horizontal';\n  const size = isHorizontal ? 'width' : 'height';\n  React.useEffect(() => {\n    return () => {\n      clearTimeout(timer.current);\n    };\n  }, []);\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(ref, nodeRef);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    if (wrapperRef.current && isHorizontal) {\n      // Set absolute position to get the size of collapsed content\n      wrapperRef.current.style.position = 'absolute';\n    }\n    node.style[size] = collapsedSize;\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n    const wrapperSize = getWrapperSize();\n    if (wrapperRef.current && isHorizontal) {\n      // After the size is read reset the position back to default\n      wrapperRef.current.style.position = '';\n    }\n    const {\n      duration: transitionDuration,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    if (timeout === 'auto') {\n      const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n      node.style.transitionDuration = `${duration2}ms`;\n      autoTransitionDuration.current = duration2;\n    } else {\n      node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n    }\n    node.style[size] = `${wrapperSize}px`;\n    node.style.transitionTimingFunction = transitionTimingFunction;\n    if (onEntering) {\n      onEntering(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n    node.style[size] = 'auto';\n    if (onEntered) {\n      onEntered(node, isAppearing);\n    }\n  });\n  const handleExit = normalizedTransitionCallback(node => {\n    node.style[size] = `${getWrapperSize()}px`;\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleExiting = normalizedTransitionCallback(node => {\n    const wrapperSize = getWrapperSize();\n    const {\n      duration: transitionDuration,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    if (timeout === 'auto') {\n      // TODO: rename getAutoHeightDuration to something more generic (width support)\n      // Actually it just calculates animation duration based on size\n      const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n      node.style.transitionDuration = `${duration2}ms`;\n      autoTransitionDuration.current = duration2;\n    } else {\n      node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n    }\n    node.style[size] = collapsedSize;\n    node.style.transitionTimingFunction = transitionTimingFunction;\n    if (onExiting) {\n      onExiting(node);\n    }\n  });\n  const handleAddEndListener = next => {\n    if (timeout === 'auto') {\n      timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n    }\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    in: inProp,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    nodeRef: nodeRef,\n    timeout: timeout === 'auto' ? null : timeout\n  }, other, {\n    children: (state, childProps) => /*#__PURE__*/_jsx(CollapseRoot, _extends({\n      as: component,\n      className: clsx(classes.root, className, {\n        'entered': classes.entered,\n        'exited': !inProp && collapsedSize === '0px' && classes.hidden\n      }[state]),\n      style: _extends({\n        [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize\n      }, style),\n      ownerState: _extends({}, ownerState, {\n        state\n      }),\n      ref: handleRef\n    }, childProps, {\n      children: /*#__PURE__*/_jsx(CollapseWrapper, {\n        ownerState: _extends({}, ownerState, {\n          state\n        }),\n        className: classes.wrapper,\n        ref: wrapperRef,\n        children: /*#__PURE__*/_jsx(CollapseWrapperInner, {\n          ownerState: _extends({}, ownerState, {\n            state\n          }),\n          className: classes.wrapperInner,\n          children: children\n        })\n      })\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * The content node to be collapsed.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The width (horizontal) or height (vertical) of the container when collapsed.\n   * @default '0px'\n   */\n  collapsedSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * The transition orientation.\n   * @default 'vertical'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default duration.standard\n   */\n  timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nCollapse.muiSupportAuto = true;\nexport default Collapse;", "export { default } from './Collapse';\nexport { default as collapseClasses } from './collapseClasses';\nexport * from './collapseClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getPaperUtilityClass(slot) {\n  return generateUtilityClass('MuiPaper', slot);\n}\nconst paperClasses = generateUtilityClasses('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);\nexport default paperClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"component\", \"elevation\", \"square\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport getOverlayAlpha from '../styles/getOverlayAlpha';\nimport useThemeProps from '../styles/useThemeProps';\nimport useTheme from '../styles/useTheme';\nimport { getPaperUtilityClass } from './paperClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    square,\n    elevation,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, !square && 'rounded', variant === 'elevation' && `elevation${elevation}`]\n  };\n  return composeClasses(slots, getPaperUtilityClass, classes);\n};\nconst PaperRoot = styled('div', {\n  name: 'MuiPaper',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles[`elevation${ownerState.elevation}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$vars$overlays;\n  return _extends({\n    backgroundColor: (theme.vars || theme).palette.background.paper,\n    color: (theme.vars || theme).palette.text.primary,\n    transition: theme.transitions.create('box-shadow')\n  }, !ownerState.square && {\n    borderRadius: theme.shape.borderRadius\n  }, ownerState.variant === 'outlined' && {\n    border: `1px solid ${(theme.vars || theme).palette.divider}`\n  }, ownerState.variant === 'elevation' && _extends({\n    boxShadow: (theme.vars || theme).shadows[ownerState.elevation]\n  }, !theme.vars && theme.palette.mode === 'dark' && {\n    backgroundImage: `linear-gradient(${alpha('#fff', getOverlayAlpha(ownerState.elevation))}, ${alpha('#fff', getOverlayAlpha(ownerState.elevation))})`\n  }, theme.vars && {\n    backgroundImage: (_theme$vars$overlays = theme.vars.overlays) == null ? void 0 : _theme$vars$overlays[ownerState.elevation]\n  }));\n});\nconst Paper = /*#__PURE__*/React.forwardRef(function Paper(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPaper'\n  });\n  const {\n      className,\n      component = 'div',\n      elevation = 1,\n      square = false,\n      variant = 'elevation'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component,\n    elevation,\n    square,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const theme = useTheme();\n    if (theme.shadows[elevation] === undefined) {\n      console.error([`MUI: The elevation provided <Paper elevation={${elevation}}> is not available in the theme.`, `Please make sure that \\`theme.shadows[${elevation}]\\` is defined.`].join('\\n'));\n    }\n  }\n  return /*#__PURE__*/_jsx(PaperRoot, _extends({\n    as: component,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Paper.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Shadow depth, corresponds to `dp` in the spec.\n   * It accepts values between 0 and 24 inclusive.\n   * @default 1\n   */\n  elevation: chainPropTypes(integerPropType, props => {\n    const {\n      elevation,\n      variant\n    } = props;\n    if (elevation > 0 && variant === 'outlined') {\n      return new Error(`MUI: Combining \\`elevation={${elevation}}\\` with \\`variant=\"${variant}\"\\` has no effect. Either use \\`elevation={0}\\` or use a different \\`variant\\`.`);\n    }\n    return null;\n  }),\n  /**\n   * If `true`, rounded corners are disabled.\n   * @default false\n   */\n  square: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'elevation'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['elevation', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Paper;", "export { default } from './Paper';\nexport { default as paperClasses } from './paperClasses';\nexport * from './paperClasses';", "import * as React from 'react';\n\n/**\n * @ignore - internal component.\n * @type {React.Context<{} | {expanded: boolean, disabled: boolean, toggle: () => void}>}\n */\nconst AccordionContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  AccordionContext.displayName = 'AccordionContext';\n}\nexport default AccordionContext;", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAccordionUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordion', slot);\n}\nconst accordionClasses = generateUtilityClasses('MuiAccordion', ['root', 'rounded', 'expanded', 'disabled', 'gutters', 'region']);\nexport default accordionClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"defaultExpanded\", \"disabled\", \"disableGutters\", \"expanded\", \"onChange\", \"square\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Collapse from '../Collapse';\nimport Paper from '../Paper';\nimport AccordionContext from './AccordionContext';\nimport useControlled from '../utils/useControlled';\nimport accordionClasses, { getAccordionUtilityClass } from './accordionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    square,\n    expanded,\n    disabled,\n    disableGutters\n  } = ownerState;\n  const slots = {\n    root: ['root', !square && 'rounded', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n    region: ['region']\n  };\n  return composeClasses(slots, getAccordionUtilityClass, classes);\n};\nconst AccordionRoot = styled(Paper, {\n  name: 'MuiAccordion',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${accordionClasses.region}`]: styles.region\n    }, styles.root, !ownerState.square && styles.rounded, !ownerState.disableGutters && styles.gutters];\n  }\n})(({\n  theme\n}) => {\n  const transition = {\n    duration: theme.transitions.duration.shortest\n  };\n  return {\n    position: 'relative',\n    transition: theme.transitions.create(['margin'], transition),\n    overflowAnchor: 'none',\n    // Keep the same scrolling position\n    '&:before': {\n      position: 'absolute',\n      left: 0,\n      top: -1,\n      right: 0,\n      height: 1,\n      content: '\"\"',\n      opacity: 1,\n      backgroundColor: (theme.vars || theme).palette.divider,\n      transition: theme.transitions.create(['opacity', 'background-color'], transition)\n    },\n    '&:first-of-type': {\n      '&:before': {\n        display: 'none'\n      }\n    },\n    [`&.${accordionClasses.expanded}`]: {\n      '&:before': {\n        opacity: 0\n      },\n      '&:first-of-type': {\n        marginTop: 0\n      },\n      '&:last-of-type': {\n        marginBottom: 0\n      },\n      '& + &': {\n        '&:before': {\n          display: 'none'\n        }\n      }\n    },\n    [`&.${accordionClasses.disabled}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n    }\n  };\n}, ({\n  theme,\n  ownerState\n}) => _extends({}, !ownerState.square && {\n  borderRadius: 0,\n  '&:first-of-type': {\n    borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n    borderTopRightRadius: (theme.vars || theme).shape.borderRadius\n  },\n  '&:last-of-type': {\n    borderBottomLeftRadius: (theme.vars || theme).shape.borderRadius,\n    borderBottomRightRadius: (theme.vars || theme).shape.borderRadius,\n    // Fix a rendering issue on Edge\n    '@supports (-ms-ime-align: auto)': {\n      borderBottomLeftRadius: 0,\n      borderBottomRightRadius: 0\n    }\n  }\n}, !ownerState.disableGutters && {\n  [`&.${accordionClasses.expanded}`]: {\n    margin: '16px 0'\n  }\n}));\nconst Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiAccordion'\n  });\n  const {\n      children: childrenProp,\n      className,\n      defaultExpanded = false,\n      disabled = false,\n      disableGutters = false,\n      expanded: expandedProp,\n      onChange,\n      square = false,\n      TransitionComponent = Collapse,\n      TransitionProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [expanded, setExpandedState] = useControlled({\n    controlled: expandedProp,\n    default: defaultExpanded,\n    name: 'Accordion',\n    state: 'expanded'\n  });\n  const handleChange = React.useCallback(event => {\n    setExpandedState(!expanded);\n    if (onChange) {\n      onChange(event, !expanded);\n    }\n  }, [expanded, onChange, setExpandedState]);\n  const [summary, ...children] = React.Children.toArray(childrenProp);\n  const contextValue = React.useMemo(() => ({\n    expanded,\n    disabled,\n    disableGutters,\n    toggle: handleChange\n  }), [expanded, disabled, disableGutters, handleChange]);\n  const ownerState = _extends({}, props, {\n    square,\n    disabled,\n    disableGutters,\n    expanded\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(AccordionRoot, _extends({\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState,\n    square: square\n  }, other, {\n    children: [/*#__PURE__*/_jsx(AccordionContext.Provider, {\n      value: contextValue,\n      children: summary\n    }), /*#__PURE__*/_jsx(TransitionComponent, _extends({\n      in: expanded,\n      timeout: \"auto\"\n    }, TransitionProps, {\n      children: /*#__PURE__*/_jsx(\"div\", {\n        \"aria-labelledby\": summary.props.id,\n        id: summary.props['aria-controls'],\n        role: \"region\",\n        className: classes.region,\n        children: children\n      })\n    }))]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Accordion.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: chainPropTypes(PropTypes.node.isRequired, props => {\n    const summary = React.Children.toArray(props.children)[0];\n    if (isFragment(summary)) {\n      return new Error(\"MUI: The Accordion doesn't accept a Fragment as a child. \" + 'Consider providing an array instead.');\n    }\n    if (! /*#__PURE__*/React.isValidElement(summary)) {\n      return new Error('MUI: Expected the first child of Accordion to be a valid element.');\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, expands the accordion by default.\n   * @default false\n   */\n  defaultExpanded: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, it removes the margin between two expanded accordion items and the increase of height.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, expands the accordion, otherwise collapse it.\n   * Setting this prop enables control over the accordion.\n   */\n  expanded: PropTypes.bool,\n  /**\n   * Callback fired when the expand/collapse state is changed.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n   * @param {boolean} expanded The `expanded` state of the accordion.\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, rounded corners are disabled.\n   * @default false\n   */\n  square: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Collapse\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Accordion;", "export { default } from './Accordion';\nexport { default as accordionClasses } from './accordionClasses';\nexport * from './accordionClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAccordionActionsUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionActions', slot);\n}\nconst accordionActionsClasses = generateUtilityClasses('MuiAccordionActions', ['root', 'spacing']);\nexport default accordionActionsClasses;", "export { default } from './AccordionActions';\nexport { default as accordionActionsClasses } from './accordionActionsClasses';\nexport * from './accordionActionsClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAccordionDetailsUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionDetails', slot);\n}\nconst accordionDetailsClasses = generateUtilityClasses('MuiAccordionDetails', ['root']);\nexport default accordionDetailsClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getAccordionDetailsUtilityClass } from './accordionDetailsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getAccordionDetailsUtilityClass, classes);\n};\nconst AccordionDetailsRoot = styled('div', {\n  name: 'MuiAccordionDetails',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(({\n  theme\n}) => ({\n  padding: theme.spacing(1, 2, 2)\n}));\nconst AccordionDetails = /*#__PURE__*/React.forwardRef(function AccordionDetails(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiAccordionDetails'\n  });\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(AccordionDetailsRoot, _extends({\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionDetails.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionDetails;", "export { default } from './AccordionDetails';\nexport { default as accordionDetailsClasses } from './accordionDetailsClasses';\nexport * from './accordionDetailsClasses';", "import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n  const {\n    className,\n    classes,\n    pulsate = false,\n    rippleX,\n    rippleY,\n    rippleSize,\n    in: inProp,\n    onExited,\n    timeout\n  } = props;\n  const [leaving, setLeaving] = React.useState(false);\n  const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n  const rippleStyles = {\n    width: rippleSize,\n    height: rippleSize,\n    top: -(rippleSize / 2) + rippleY,\n    left: -(rippleSize / 2) + rippleX\n  };\n  const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n  if (!inProp && !leaving) {\n    setLeaving(true);\n  }\n  React.useEffect(() => {\n    if (!inProp && onExited != null) {\n      // react-transition-group#onExited\n      const timeoutId = setTimeout(onExited, timeout);\n      return () => {\n        clearTimeout(timeoutId);\n      };\n    }\n    return undefined;\n  }, [onExited, inProp, timeout]);\n  return /*#__PURE__*/_jsx(\"span\", {\n    className: rippleClassName,\n    style: rippleStyles,\n    children: /*#__PURE__*/_jsx(\"span\", {\n      className: childClassName\n    })\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object.isRequired,\n  className: PropTypes.string,\n  /**\n   * @ignore - injected from TransitionGroup\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore - injected from TransitionGroup\n   */\n  onExited: PropTypes.func,\n  /**\n   * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n   */\n  pulsate: PropTypes.bool,\n  /**\n   * Diameter of the ripple.\n   */\n  rippleSize: PropTypes.number,\n  /**\n   * Horizontal position of the ripple center.\n   */\n  rippleX: PropTypes.number,\n  /**\n   * Vertical position of the ripple center.\n   */\n  rippleY: PropTypes.number,\n  /**\n   * exit delay\n   */\n  timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n  return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"center\", \"classes\", \"className\"];\nlet _ = t => t,\n  _t,\n  _t2,\n  _t3,\n  _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { keyframes } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Ripple from './Ripple';\nimport touchRippleClasses from './touchRippleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes(_t || (_t = _`\n  0% {\n    transform: scale(0);\n    opacity: 0.1;\n  }\n\n  100% {\n    transform: scale(1);\n    opacity: 0.3;\n  }\n`));\nconst exitKeyframe = keyframes(_t2 || (_t2 = _`\n  0% {\n    opacity: 1;\n  }\n\n  100% {\n    opacity: 0;\n  }\n`));\nconst pulsateKeyframe = keyframes(_t3 || (_t3 = _`\n  0% {\n    transform: scale(1);\n  }\n\n  50% {\n    transform: scale(0.92);\n  }\n\n  100% {\n    transform: scale(1);\n  }\n`));\nexport const TouchRippleRoot = styled('span', {\n  name: 'MuiTouchRipple',\n  slot: 'Root'\n})({\n  overflow: 'hidden',\n  pointerEvents: 'none',\n  position: 'absolute',\n  zIndex: 0,\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0,\n  borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n  name: 'MuiTouchRipple',\n  slot: 'Ripple'\n})(_t4 || (_t4 = _`\n  opacity: 0;\n  position: absolute;\n\n  &.${0} {\n    opacity: 0.3;\n    transform: scale(1);\n    animation-name: ${0};\n    animation-duration: ${0}ms;\n    animation-timing-function: ${0};\n  }\n\n  &.${0} {\n    animation-duration: ${0}ms;\n  }\n\n  & .${0} {\n    opacity: 1;\n    display: block;\n    width: 100%;\n    height: 100%;\n    border-radius: 50%;\n    background-color: currentColor;\n  }\n\n  & .${0} {\n    opacity: 0;\n    animation-name: ${0};\n    animation-duration: ${0}ms;\n    animation-timing-function: ${0};\n  }\n\n  & .${0} {\n    position: absolute;\n    /* @noflip */\n    left: 0px;\n    top: 0;\n    animation-name: ${0};\n    animation-duration: 2500ms;\n    animation-timing-function: ${0};\n    animation-iteration-count: infinite;\n    animation-delay: 200ms;\n  }\n`), touchRippleClasses.rippleVisible, enterKeyframe, DURATION, ({\n  theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.ripplePulsate, ({\n  theme\n}) => theme.transitions.duration.shorter, touchRippleClasses.child, touchRippleClasses.childLeaving, exitKeyframe, DURATION, ({\n  theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.childPulsate, pulsateKeyframe, ({\n  theme\n}) => theme.transitions.easing.easeInOut);\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiTouchRipple'\n  });\n  const {\n      center: centerProp = false,\n      classes = {},\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [ripples, setRipples] = React.useState([]);\n  const nextKey = React.useRef(0);\n  const rippleCallback = React.useRef(null);\n  React.useEffect(() => {\n    if (rippleCallback.current) {\n      rippleCallback.current();\n      rippleCallback.current = null;\n    }\n  }, [ripples]);\n\n  // Used to filter out mouse emulated events on mobile.\n  const ignoringMouseDown = React.useRef(false);\n  // We use a timer in order to only show the ripples for touch \"click\" like events.\n  // We don't want to display the ripple for touch scroll events.\n  const startTimer = React.useRef(null);\n\n  // This is the hook called once the previous timeout is ready.\n  const startTimerCommit = React.useRef(null);\n  const container = React.useRef(null);\n  React.useEffect(() => {\n    return () => {\n      clearTimeout(startTimer.current);\n    };\n  }, []);\n  const startCommit = React.useCallback(params => {\n    const {\n      pulsate,\n      rippleX,\n      rippleY,\n      rippleSize,\n      cb\n    } = params;\n    setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n      classes: {\n        ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n        rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n        ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n        child: clsx(classes.child, touchRippleClasses.child),\n        childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n        childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n      },\n      timeout: DURATION,\n      pulsate: pulsate,\n      rippleX: rippleX,\n      rippleY: rippleY,\n      rippleSize: rippleSize\n    }, nextKey.current)]);\n    nextKey.current += 1;\n    rippleCallback.current = cb;\n  }, [classes]);\n  const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n    const {\n      pulsate = false,\n      center = centerProp || options.pulsate,\n      fakeElement = false // For test purposes\n    } = options;\n    if ((event == null ? void 0 : event.type) === 'mousedown' && ignoringMouseDown.current) {\n      ignoringMouseDown.current = false;\n      return;\n    }\n    if ((event == null ? void 0 : event.type) === 'touchstart') {\n      ignoringMouseDown.current = true;\n    }\n    const element = fakeElement ? null : container.current;\n    const rect = element ? element.getBoundingClientRect() : {\n      width: 0,\n      height: 0,\n      left: 0,\n      top: 0\n    };\n\n    // Get the size of the ripple\n    let rippleX;\n    let rippleY;\n    let rippleSize;\n    if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n      rippleX = Math.round(rect.width / 2);\n      rippleY = Math.round(rect.height / 2);\n    } else {\n      const {\n        clientX,\n        clientY\n      } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n      rippleX = Math.round(clientX - rect.left);\n      rippleY = Math.round(clientY - rect.top);\n    }\n    if (center) {\n      rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n      // For some reason the animation is broken on Mobile Chrome if the size is even.\n      if (rippleSize % 2 === 0) {\n        rippleSize += 1;\n      }\n    } else {\n      const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n      const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n      rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n    }\n\n    // Touche devices\n    if (event != null && event.touches) {\n      // check that this isn't another touchstart due to multitouch\n      // otherwise we will only clear a single timer when unmounting while two\n      // are running\n      if (startTimerCommit.current === null) {\n        // Prepare the ripple effect.\n        startTimerCommit.current = () => {\n          startCommit({\n            pulsate,\n            rippleX,\n            rippleY,\n            rippleSize,\n            cb\n          });\n        };\n        // Delay the execution of the ripple effect.\n        startTimer.current = setTimeout(() => {\n          if (startTimerCommit.current) {\n            startTimerCommit.current();\n            startTimerCommit.current = null;\n          }\n        }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n      }\n    } else {\n      startCommit({\n        pulsate,\n        rippleX,\n        rippleY,\n        rippleSize,\n        cb\n      });\n    }\n  }, [centerProp, startCommit]);\n  const pulsate = React.useCallback(() => {\n    start({}, {\n      pulsate: true\n    });\n  }, [start]);\n  const stop = React.useCallback((event, cb) => {\n    clearTimeout(startTimer.current);\n\n    // The touch interaction occurs too quickly.\n    // We still want to show ripple effect.\n    if ((event == null ? void 0 : event.type) === 'touchend' && startTimerCommit.current) {\n      startTimerCommit.current();\n      startTimerCommit.current = null;\n      startTimer.current = setTimeout(() => {\n        stop(event, cb);\n      });\n      return;\n    }\n    startTimerCommit.current = null;\n    setRipples(oldRipples => {\n      if (oldRipples.length > 0) {\n        return oldRipples.slice(1);\n      }\n      return oldRipples;\n    });\n    rippleCallback.current = cb;\n  }, []);\n  React.useImperativeHandle(ref, () => ({\n    pulsate,\n    start,\n    stop\n  }), [pulsate, start, stop]);\n  return /*#__PURE__*/_jsx(TouchRippleRoot, _extends({\n    className: clsx(touchRippleClasses.root, classes.root, className),\n    ref: container\n  }, other, {\n    children: /*#__PURE__*/_jsx(TransitionGroup, {\n      component: null,\n      exit: true,\n      children: ripples\n    })\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n  /**\n   * If `true`, the ripple starts at the center of the component\n   * rather than at the point of interaction.\n   */\n  center: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string\n} : void 0;\nexport default TouchRipple;", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n  return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@mui/utils';\nimport composeClasses from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    focusVisible,\n    focusVisibleClassName,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n  };\n  const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n  if (focusVisible && focusVisibleClassName) {\n    composedClasses.root += ` ${focusVisibleClassName}`;\n  }\n  return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n  name: 'MuiButtonBase',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'inline-flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  position: 'relative',\n  boxSizing: 'border-box',\n  WebkitTapHighlightColor: 'transparent',\n  backgroundColor: 'transparent',\n  // Reset default value\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0,\n  border: 0,\n  margin: 0,\n  // Remove the margin in Safari\n  borderRadius: 0,\n  padding: 0,\n  // Remove the padding in Firefox\n  cursor: 'pointer',\n  userSelect: 'none',\n  verticalAlign: 'middle',\n  MozAppearance: 'none',\n  // Reset\n  WebkitAppearance: 'none',\n  // Reset\n  textDecoration: 'none',\n  // So we take precedent over the style of a native <a /> element.\n  color: 'inherit',\n  '&::-moz-focus-inner': {\n    borderStyle: 'none' // Remove Firefox dotted outline.\n  },\n\n  [`&.${buttonBaseClasses.disabled}`]: {\n    pointerEvents: 'none',\n    // Disable link interactions\n    cursor: 'default'\n  },\n  '@media print': {\n    colorAdjust: 'exact'\n  }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiButtonBase'\n  });\n  const {\n      action,\n      centerRipple = false,\n      children,\n      className,\n      component = 'button',\n      disabled = false,\n      disableRipple = false,\n      disableTouchRipple = false,\n      focusRipple = false,\n      LinkComponent = 'a',\n      onBlur,\n      onClick,\n      onContextMenu,\n      onDragLeave,\n      onFocus,\n      onFocusVisible,\n      onKeyDown,\n      onKeyUp,\n      onMouseDown,\n      onMouseLeave,\n      onMouseUp,\n      onTouchEnd,\n      onTouchMove,\n      onTouchStart,\n      tabIndex = 0,\n      TouchRippleProps,\n      touchRippleRef,\n      type\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const buttonRef = React.useRef(null);\n  const rippleRef = React.useRef(null);\n  const handleRippleRef = useForkRef(rippleRef, touchRippleRef);\n  const {\n    isFocusVisibleRef,\n    onFocus: handleFocusVisible,\n    onBlur: handleBlurVisible,\n    ref: focusVisibleRef\n  } = useIsFocusVisible();\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  if (disabled && focusVisible) {\n    setFocusVisible(false);\n  }\n  React.useImperativeHandle(action, () => ({\n    focusVisible: () => {\n      setFocusVisible(true);\n      buttonRef.current.focus();\n    }\n  }), []);\n  const [mountedState, setMountedState] = React.useState(false);\n  React.useEffect(() => {\n    setMountedState(true);\n  }, []);\n  const enableTouchRipple = mountedState && !disableRipple && !disabled;\n  React.useEffect(() => {\n    if (focusVisible && focusRipple && !disableRipple && mountedState) {\n      rippleRef.current.pulsate();\n    }\n  }, [disableRipple, focusRipple, focusVisible, mountedState]);\n  function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n    return useEventCallback(event => {\n      if (eventCallback) {\n        eventCallback(event);\n      }\n      const ignore = skipRippleAction;\n      if (!ignore && rippleRef.current) {\n        rippleRef.current[rippleAction](event);\n      }\n      return true;\n    });\n  }\n  const handleMouseDown = useRippleHandler('start', onMouseDown);\n  const handleContextMenu = useRippleHandler('stop', onContextMenu);\n  const handleDragLeave = useRippleHandler('stop', onDragLeave);\n  const handleMouseUp = useRippleHandler('stop', onMouseUp);\n  const handleMouseLeave = useRippleHandler('stop', event => {\n    if (focusVisible) {\n      event.preventDefault();\n    }\n    if (onMouseLeave) {\n      onMouseLeave(event);\n    }\n  });\n  const handleTouchStart = useRippleHandler('start', onTouchStart);\n  const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n  const handleTouchMove = useRippleHandler('stop', onTouchMove);\n  const handleBlur = useRippleHandler('stop', event => {\n    handleBlurVisible(event);\n    if (isFocusVisibleRef.current === false) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  }, false);\n  const handleFocus = useEventCallback(event => {\n    // Fix for https://github.com/facebook/react/issues/7769\n    if (!buttonRef.current) {\n      buttonRef.current = event.currentTarget;\n    }\n    handleFocusVisible(event);\n    if (isFocusVisibleRef.current === true) {\n      setFocusVisible(true);\n      if (onFocusVisible) {\n        onFocusVisible(event);\n      }\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  });\n  const isNonNativeButton = () => {\n    const button = buttonRef.current;\n    return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n  };\n\n  /**\n   * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n   */\n  const keydownRef = React.useRef(false);\n  const handleKeyDown = useEventCallback(event => {\n    // Check if key is already down to avoid repeats being counted as multiple activations\n    if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n      keydownRef.current = true;\n      rippleRef.current.stop(event, () => {\n        rippleRef.current.start(event);\n      });\n    }\n    if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n      event.preventDefault();\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n\n    // Keyboard accessibility for non interactive elements\n    if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n      event.preventDefault();\n      if (onClick) {\n        onClick(event);\n      }\n    }\n  });\n  const handleKeyUp = useEventCallback(event => {\n    // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n    // https://codesandbox.io/s/button-keyup-preventdefault-dn7f0\n    if (focusRipple && event.key === ' ' && rippleRef.current && focusVisible && !event.defaultPrevented) {\n      keydownRef.current = false;\n      rippleRef.current.stop(event, () => {\n        rippleRef.current.pulsate(event);\n      });\n    }\n    if (onKeyUp) {\n      onKeyUp(event);\n    }\n\n    // Keyboard accessibility for non interactive elements\n    if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === ' ' && !event.defaultPrevented) {\n      onClick(event);\n    }\n  });\n  let ComponentProp = component;\n  if (ComponentProp === 'button' && (other.href || other.to)) {\n    ComponentProp = LinkComponent;\n  }\n  const buttonProps = {};\n  if (ComponentProp === 'button') {\n    buttonProps.type = type === undefined ? 'button' : type;\n    buttonProps.disabled = disabled;\n  } else {\n    if (!other.href && !other.to) {\n      buttonProps.role = 'button';\n    }\n    if (disabled) {\n      buttonProps['aria-disabled'] = disabled;\n    }\n  }\n  const handleRef = useForkRef(ref, focusVisibleRef, buttonRef);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (enableTouchRipple && !rippleRef.current) {\n        console.error(['MUI: The `component` prop provided to ButtonBase is invalid.', 'Please make sure the children prop is rendered in this custom component.'].join('\\n'));\n      }\n    }, [enableTouchRipple]);\n  }\n  const ownerState = _extends({}, props, {\n    centerRipple,\n    component,\n    disabled,\n    disableRipple,\n    disableTouchRipple,\n    focusRipple,\n    tabIndex,\n    focusVisible\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(ButtonBaseRoot, _extends({\n    as: ComponentProp,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    onBlur: handleBlur,\n    onClick: onClick,\n    onContextMenu: handleContextMenu,\n    onFocus: handleFocus,\n    onKeyDown: handleKeyDown,\n    onKeyUp: handleKeyUp,\n    onMouseDown: handleMouseDown,\n    onMouseLeave: handleMouseLeave,\n    onMouseUp: handleMouseUp,\n    onDragLeave: handleDragLeave,\n    onTouchEnd: handleTouchEnd,\n    onTouchMove: handleTouchMove,\n    onTouchStart: handleTouchStart,\n    ref: handleRef,\n    tabIndex: disabled ? -1 : tabIndex,\n    type: type\n  }, buttonProps, other, {\n    children: [children, enableTouchRipple ?\n    /*#__PURE__*/\n    /* TouchRipple is only needed client-side, x2 boost on the server. */\n    _jsx(TouchRipple, _extends({\n      ref: handleRippleRef,\n      center: centerRipple\n    }, TouchRippleProps)) : null]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ButtonBase.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * A ref for imperative actions.\n   * It currently only supports `focusVisible()` action.\n   */\n  action: refType,\n  /**\n   * If `true`, the ripples are centered.\n   * They won't start at the cursor interaction position.\n   * @default false\n   */\n  centerRipple: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * \u26A0\uFE0F Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If `true`, the touch ripple effect is disabled.\n   * @default false\n   */\n  disableTouchRipple: PropTypes.bool,\n  /**\n   * If `true`, the base button will have a keyboard focus ripple.\n   * @default false\n   */\n  focusRipple: PropTypes.bool,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  href: PropTypes /* @typescript-to-proptypes-ignore */.any,\n  /**\n   * The component used to render a link when the `href` prop is provided.\n   * @default 'a'\n   */\n  LinkComponent: PropTypes.elementType,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onContextMenu: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onDragLeave: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the component is focused with a keyboard.\n   * We trigger a `onFocus` callback too.\n   */\n  onFocusVisible: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyUp: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseLeave: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseUp: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onTouchEnd: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onTouchMove: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onTouchStart: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @default 0\n   */\n  tabIndex: PropTypes.number,\n  /**\n   * Props applied to the `TouchRipple` element.\n   */\n  TouchRippleProps: PropTypes.object,\n  /**\n   * A ref that points to the `TouchRipple` element.\n   */\n  touchRippleRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      pulsate: PropTypes.func.isRequired,\n      start: PropTypes.func.isRequired,\n      stop: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * @ignore\n   */\n  type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string])\n} : void 0;\nexport default ButtonBase;", "export { default } from './ButtonBase';\nexport { default as buttonBaseClasses } from './buttonBaseClasses';\nexport * from './buttonBaseClasses';\nexport { default as touchRippleClasses } from './touchRippleClasses';\nexport * from './touchRippleClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAccordionSummaryUtilityClass(slot) {\n  return generateUtilityClass('MuiAccordionSummary', slot);\n}\nconst accordionSummaryClasses = generateUtilityClasses('MuiAccordionSummary', ['root', 'expanded', 'focusVisible', 'disabled', 'gutters', 'contentGutters', 'content', 'expandIconWrapper']);\nexport default accordionSummaryClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"expandIcon\", \"focusVisibleClassName\", \"onClick\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport AccordionContext from '../Accordion/AccordionContext';\nimport accordionSummaryClasses, { getAccordionSummaryUtilityClass } from './accordionSummaryClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    expanded,\n    disabled,\n    disableGutters\n  } = ownerState;\n  const slots = {\n    root: ['root', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n    focusVisible: ['focusVisible'],\n    content: ['content', expanded && 'expanded', !disableGutters && 'contentGutters'],\n    expandIconWrapper: ['expandIconWrapper', expanded && 'expanded']\n  };\n  return composeClasses(slots, getAccordionSummaryUtilityClass, classes);\n};\nconst AccordionSummaryRoot = styled(ButtonBase, {\n  name: 'MuiAccordionSummary',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(({\n  theme,\n  ownerState\n}) => {\n  const transition = {\n    duration: theme.transitions.duration.shortest\n  };\n  return _extends({\n    display: 'flex',\n    minHeight: 48,\n    padding: theme.spacing(0, 2),\n    transition: theme.transitions.create(['min-height', 'background-color'], transition),\n    [`&.${accordionSummaryClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.focus\n    },\n    [`&.${accordionSummaryClasses.disabled}`]: {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity\n    },\n    [`&:hover:not(.${accordionSummaryClasses.disabled})`]: {\n      cursor: 'pointer'\n    }\n  }, !ownerState.disableGutters && {\n    [`&.${accordionSummaryClasses.expanded}`]: {\n      minHeight: 64\n    }\n  });\n});\nconst AccordionSummaryContent = styled('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'Content',\n  overridesResolver: (props, styles) => styles.content\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  display: 'flex',\n  flexGrow: 1,\n  margin: '12px 0'\n}, !ownerState.disableGutters && {\n  transition: theme.transitions.create(['margin'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${accordionSummaryClasses.expanded}`]: {\n    margin: '20px 0'\n  }\n}));\nconst AccordionSummaryExpandIconWrapper = styled('div', {\n  name: 'MuiAccordionSummary',\n  slot: 'ExpandIconWrapper',\n  overridesResolver: (props, styles) => styles.expandIconWrapper\n})(({\n  theme\n}) => ({\n  display: 'flex',\n  color: (theme.vars || theme).palette.action.active,\n  transform: 'rotate(0deg)',\n  transition: theme.transitions.create('transform', {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${accordionSummaryClasses.expanded}`]: {\n    transform: 'rotate(180deg)'\n  }\n}));\nconst AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiAccordionSummary'\n  });\n  const {\n      children,\n      className,\n      expandIcon,\n      focusVisibleClassName,\n      onClick\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    disabled = false,\n    disableGutters,\n    expanded,\n    toggle\n  } = React.useContext(AccordionContext);\n  const handleChange = event => {\n    if (toggle) {\n      toggle(event);\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  const ownerState = _extends({}, props, {\n    expanded,\n    disabled,\n    disableGutters\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(AccordionSummaryRoot, _extends({\n    focusRipple: false,\n    disableRipple: true,\n    disabled: disabled,\n    component: \"div\",\n    \"aria-expanded\": expanded,\n    className: clsx(classes.root, className),\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    onClick: handleChange,\n    ref: ref,\n    ownerState: ownerState\n  }, other, {\n    children: [/*#__PURE__*/_jsx(AccordionSummaryContent, {\n      className: classes.content,\n      ownerState: ownerState,\n      children: children\n    }), expandIcon && /*#__PURE__*/_jsx(AccordionSummaryExpandIconWrapper, {\n      className: classes.expandIconWrapper,\n      ownerState: ownerState,\n      children: expandIcon\n    })]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionSummary.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon to display as the expand indicator.\n   */\n  expandIcon: PropTypes.node,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionSummary;", "export { default } from './AccordionSummary';\nexport { default as accordionSummaryClasses } from './accordionSummaryClasses';\nexport * from './accordionSummaryClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAlertUtilityClass(slot) {\n  return generateUtilityClass('MuiAlert', slot);\n}\nconst alertClasses = generateUtilityClasses('MuiAlert', ['root', 'action', 'icon', 'message', 'filled', 'filledSuccess', 'filledInfo', 'filledWarning', 'filledError', 'outlined', 'outlinedSuccess', 'outlinedInfo', 'outlinedWarning', 'outlinedError', 'standard', 'standardSuccess', 'standardInfo', 'standardWarning', 'standardError']);\nexport default alertClasses;", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getIconButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiIconButton', slot);\n}\nconst iconButtonClasses = generateUtilityClasses('MuiIconButton', ['root', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'edgeStart', 'edgeEnd', 'sizeSmall', 'sizeMedium', 'sizeLarge']);\nexport default iconButtonClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"edge\", \"children\", \"className\", \"color\", \"disabled\", \"disableFocusRipple\", \"size\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport iconButtonClasses, { getIconButtonUtilityClass } from './iconButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    color,\n    edge,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', color !== 'default' && `color${capitalize(color)}`, edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`]\n  };\n  return composeClasses(slots, getIconButtonUtilityClass, classes);\n};\nconst IconButtonRoot = styled(ButtonBase, {\n  name: 'MuiIconButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  textAlign: 'center',\n  flex: '0 0 auto',\n  fontSize: theme.typography.pxToRem(24),\n  padding: 8,\n  borderRadius: '50%',\n  overflow: 'visible',\n  // Explicitly set the default value to solve a bug on IE11.\n  color: (theme.vars || theme).palette.action.active,\n  transition: theme.transitions.create('background-color', {\n    duration: theme.transitions.duration.shortest\n  })\n}, !ownerState.disableRipple && {\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  }\n}, ownerState.edge === 'start' && {\n  marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n  marginRight: ownerState.size === 'small' ? -3 : -12\n}), ({\n  theme,\n  ownerState\n}) => {\n  var _palette;\n  const palette = (_palette = (theme.vars || theme).palette) == null ? void 0 : _palette[ownerState.color];\n  return _extends({}, ownerState.color === 'inherit' && {\n    color: 'inherit'\n  }, ownerState.color !== 'inherit' && ownerState.color !== 'default' && _extends({\n    color: palette == null ? void 0 : palette.main\n  }, !ownerState.disableRipple && {\n    '&:hover': _extends({}, palette && {\n      backgroundColor: theme.vars ? `rgba(${palette.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(palette.main, theme.palette.action.hoverOpacity)\n    }, {\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    })\n  }), ownerState.size === 'small' && {\n    padding: 5,\n    fontSize: theme.typography.pxToRem(18)\n  }, ownerState.size === 'large' && {\n    padding: 12,\n    fontSize: theme.typography.pxToRem(28)\n  }, {\n    [`&.${iconButtonClasses.disabled}`]: {\n      backgroundColor: 'transparent',\n      color: (theme.vars || theme).palette.action.disabled\n    }\n  });\n});\n\n/**\n * Refer to the [Icons](/material-ui/icons/) section of the documentation\n * regarding the available icon options.\n */\nconst IconButton = /*#__PURE__*/React.forwardRef(function IconButton(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiIconButton'\n  });\n  const {\n      edge = false,\n      children,\n      className,\n      color = 'default',\n      disabled = false,\n      disableFocusRipple = false,\n      size = 'medium'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    edge,\n    color,\n    disabled,\n    disableFocusRipple,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(IconButtonRoot, _extends({\n    className: clsx(classes.root, className),\n    centerRipple: true,\n    focusRipple: !disableFocusRipple,\n    disabled: disabled,\n    ref: ref,\n    ownerState: ownerState\n  }, other, {\n    children: children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? IconButton.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The icon to display.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    const found = React.Children.toArray(props.children).some(child => /*#__PURE__*/React.isValidElement(child) && child.props.onClick);\n    if (found) {\n      return new Error(['MUI: You are providing an onClick event listener to a child of a button element.', 'Prefer applying it to the IconButton directly.', 'This guarantees that the whole <button> will be responsive to click events.'].join('\\n'));\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * \u26A0\uFE0F Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: PropTypes.oneOf(['end', 'start', false]),\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default IconButton;", "export { default } from './IconButton';\nexport { default as iconButtonClasses } from './iconButtonClasses';\nexport * from './iconButtonClasses';", "import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n *\n * Alias to `Clear`.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');", "export { default } from './Alert';\nexport { default as alertClasses } from './alertClasses';\nexport * from './alertClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTypographyUtilityClass(slot) {\n  return generateUtilityClass('MuiTypography', slot);\n}\nconst typographyClasses = generateUtilityClasses('MuiTypography', ['root', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'inherit', 'button', 'caption', 'overline', 'alignLeft', 'alignRight', 'alignCenter', 'alignJustify', 'noWrap', 'gutterBottom', 'paragraph']);\nexport default typographyClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"align\", \"className\", \"component\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_extendSxProp as extendSxProp } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getTypographyUtilityClass } from './typographyClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    align,\n    gutterBottom,\n    noWrap,\n    paragraph,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, ownerState.align !== 'inherit' && `align${capitalize(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph']\n  };\n  return composeClasses(slots, getTypographyUtilityClass, classes);\n};\nexport const TypographyRoot = styled('span', {\n  name: 'MuiTypography',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  margin: 0\n}, ownerState.variant && theme.typography[ownerState.variant], ownerState.align !== 'inherit' && {\n  textAlign: ownerState.align\n}, ownerState.noWrap && {\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  whiteSpace: 'nowrap'\n}, ownerState.gutterBottom && {\n  marginBottom: '0.35em'\n}, ownerState.paragraph && {\n  marginBottom: 16\n}));\nconst defaultVariantMapping = {\n  h1: 'h1',\n  h2: 'h2',\n  h3: 'h3',\n  h4: 'h4',\n  h5: 'h5',\n  h6: 'h6',\n  subtitle1: 'h6',\n  subtitle2: 'h6',\n  body1: 'p',\n  body2: 'p',\n  inherit: 'p'\n};\n\n// TODO v6: deprecate these color values in v5.x and remove the transformation in v6\nconst colorTransformations = {\n  primary: 'primary.main',\n  textPrimary: 'text.primary',\n  secondary: 'secondary.main',\n  textSecondary: 'text.secondary',\n  error: 'error.main'\n};\nconst transformDeprecatedColors = color => {\n  return colorTransformations[color] || color;\n};\nconst Typography = /*#__PURE__*/React.forwardRef(function Typography(inProps, ref) {\n  const themeProps = useThemeProps({\n    props: inProps,\n    name: 'MuiTypography'\n  });\n  const color = transformDeprecatedColors(themeProps.color);\n  const props = extendSxProp(_extends({}, themeProps, {\n    color\n  }));\n  const {\n      align = 'inherit',\n      className,\n      component,\n      gutterBottom = false,\n      noWrap = false,\n      paragraph = false,\n      variant = 'body1',\n      variantMapping = defaultVariantMapping\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    align,\n    color,\n    className,\n    component,\n    gutterBottom,\n    noWrap,\n    paragraph,\n    variant,\n    variantMapping\n  });\n  const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(TypographyRoot, _extends({\n    as: Component,\n    ref: ref,\n    ownerState: ownerState,\n    className: clsx(classes.root, className)\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Set the text-align on the component.\n   * @default 'inherit'\n   */\n  align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the text will have a bottom margin.\n   * @default false\n   */\n  gutterBottom: PropTypes.bool,\n  /**\n   * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n   *\n   * Note that text overflow can only happen with block or inline-block level elements\n   * (the element needs to have a width in order to overflow).\n   * @default false\n   */\n  noWrap: PropTypes.bool,\n  /**\n   * If `true`, the element will be a paragraph element.\n   * @default false\n   */\n  paragraph: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Applies the theme typography styles.\n   * @default 'body1'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string]),\n  /**\n   * The component maps the variant prop to a range of different HTML element types.\n   * For instance, subtitle1 to `<h6>`.\n   * If you wish to change that mapping, you can provide your own.\n   * Alternatively, you can use the `component` prop.\n   * @default {\n   *   h1: 'h1',\n   *   h2: 'h2',\n   *   h3: 'h3',\n   *   h4: 'h4',\n   *   h5: 'h5',\n   *   h6: 'h6',\n   *   subtitle1: 'h6',\n   *   subtitle2: 'h6',\n   *   body1: 'p',\n   *   body2: 'p',\n   *   inherit: 'p',\n   * }\n   */\n  variantMapping: PropTypes /* @typescript-to-proptypes-ignore */.object\n} : void 0;\nexport default Typography;", "export { default } from './Typography';\nexport { default as typographyClasses } from './typographyClasses';\nexport * from './typographyClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAlertTitleUtilityClass(slot) {\n  return generateUtilityClass('MuiAlertTitle', slot);\n}\nconst alertTitleClasses = generateUtilityClasses('MuiAlertTitle', ['root']);\nexport default alertTitleClasses;", "export { default } from './AlertTitle';\nexport { default as alertTitleClasses } from './alertTitleClasses';\nexport * from './alertTitleClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAppBarUtilityClass(slot) {\n  return generateUtilityClass('MuiAppBar', slot);\n}\nconst appBarClasses = generateUtilityClasses('MuiAppBar', ['root', 'positionFixed', 'positionAbsolute', 'positionSticky', 'positionStatic', 'positionRelative', 'colorDefault', 'colorPrimary', 'colorSecondary', 'colorInherit', 'colorTransparent']);\nexport default appBarClasses;", "export { default } from './AppBar';\nexport { default as appBarClasses } from './appBarClasses';\nexport * from './appBarClasses';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"components\", \"componentsProps\", \"slots\", \"slotProps\"];\nimport PopperUnstyled from '@mui/base/PopperUnstyled';\nimport { useThemeWithoutDefault as useTheme } from '@mui/system';\nimport { HTMLElementType, refType } from '@mui/utils';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { styled, useThemeProps } from '../styles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopperRoot = styled(PopperUnstyled, {\n  name: 'MuiPopper',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://mui.com/material-ui/react-autocomplete/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n * - [Popper](https://mui.com/material-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/material-ui/api/popper/)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(inProps, ref) {\n  var _slots$root;\n  const theme = useTheme();\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPopper'\n  });\n  const {\n      components,\n      componentsProps,\n      slots,\n      slotProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const RootComponent = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components == null ? void 0 : components.Root;\n  return /*#__PURE__*/_jsx(PopperRoot, _extends({\n    direction: theme == null ? void 0 : theme.direction,\n    slots: {\n      root: RootComponent\n    },\n    slotProps: slotProps != null ? slotProps : componentsProps\n  }, other, {\n    ref: ref\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n   * or a function that returns either.\n   * It's used to set the position of the popper.\n   * The return value will passed as the reference object of the Popper instance.\n   */\n  anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]),\n  /**\n   * Popper render function or node.\n   */\n  children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n  /**\n   * @ignore\n   */\n  component: PropTypes /* @typescript-to-proptypes-ignore */.elementType,\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Popper.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Popper.js is based on a \"plugin-like\" architecture,\n   * most of its features are fully encapsulated \"modifiers\".\n   *\n   * A modifier is a function that is called each time Popper.js needs to\n   * compute the position of the popper.\n   * For this reason, modifiers should be very performant to avoid bottlenecks.\n   * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n   */\n  modifiers: PropTypes.arrayOf(PropTypes.shape({\n    data: PropTypes.object,\n    effect: PropTypes.func,\n    enabled: PropTypes.bool,\n    fn: PropTypes.func,\n    name: PropTypes.any,\n    options: PropTypes.object,\n    phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n    requires: PropTypes.arrayOf(PropTypes.string),\n    requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n  })),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * @ignore\n   */\n  ownerState: PropTypes.any,\n  /**\n   * Popper placement.\n   * @default 'bottom'\n   */\n  placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n   * @default {}\n   */\n  popperOptions: PropTypes.shape({\n    modifiers: PropTypes.array,\n    onFirstUpdate: PropTypes.func,\n    placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n    strategy: PropTypes.oneOf(['absolute', 'fixed'])\n  }),\n  /**\n   * A ref that points to the used popper instance.\n   */\n  popperRef: refType,\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Help supporting a react-transition-group/Transition component.\n   * @default false\n   */\n  transition: PropTypes.bool\n} : void 0;\nexport default Popper;", "export { default } from './Popper';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListSubheaderUtilityClass(slot) {\n  return generateUtilityClass('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = generateUtilityClasses('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\nexport default listSubheaderClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getListSubheaderUtilityClass } from './listSubheaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disableGutters,\n    inset,\n    disableSticky\n  } = ownerState;\n  const slots = {\n    root: ['root', color !== 'default' && `color${capitalize(color)}`, !disableGutters && 'gutters', inset && 'inset', !disableSticky && 'sticky']\n  };\n  return composeClasses(slots, getListSubheaderUtilityClass, classes);\n};\nconst ListSubheaderRoot = styled('li', {\n  name: 'MuiListSubheader',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], !ownerState.disableGutters && styles.gutters, ownerState.inset && styles.inset, !ownerState.disableSticky && styles.sticky];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  boxSizing: 'border-box',\n  lineHeight: '48px',\n  listStyle: 'none',\n  color: (theme.vars || theme).palette.text.secondary,\n  fontFamily: theme.typography.fontFamily,\n  fontWeight: theme.typography.fontWeightMedium,\n  fontSize: theme.typography.pxToRem(14)\n}, ownerState.color === 'primary' && {\n  color: (theme.vars || theme).palette.primary.main\n}, ownerState.color === 'inherit' && {\n  color: 'inherit'\n}, !ownerState.disableGutters && {\n  paddingLeft: 16,\n  paddingRight: 16\n}, ownerState.inset && {\n  paddingLeft: 72\n}, !ownerState.disableSticky && {\n  position: 'sticky',\n  top: 0,\n  zIndex: 1,\n  backgroundColor: (theme.vars || theme).palette.background.paper\n}));\nconst ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiListSubheader'\n  });\n  const {\n      className,\n      color = 'default',\n      component = 'li',\n      disableGutters = false,\n      disableSticky = false,\n      inset = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    disableGutters,\n    disableSticky,\n    inset\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListSubheaderRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   * @default 'default'\n   */\n  color: PropTypes.oneOf(['default', 'inherit', 'primary']),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the List Subheader will not have gutters.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, the List Subheader will not stick to the top during scroll.\n   * @default false\n   */\n  disableSticky: PropTypes.bool,\n  /**\n   * If `true`, the List Subheader is indented.\n   * @default false\n   */\n  inset: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListSubheader;", "export { default } from './ListSubheader';\nexport { default as listSubheaderClasses } from './listSubheaderClasses';\nexport * from './listSubheaderClasses';", "import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getChipUtilityClass(slot) {\n  return generateUtilityClass('MuiChip', slot);\n}\nconst chipClasses = generateUtilityClasses('MuiChip', ['root', 'sizeSmall', 'sizeMedium', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'disabled', 'clickable', 'clickableColorPrimary', 'clickableColorSecondary', 'deletable', 'deletableColorPrimary', 'deletableColorSecondary', 'outlined', 'filled', 'outlinedPrimary', 'outlinedSecondary', 'filledPrimary', 'filledSecondary', 'avatar', 'avatarSmall', 'avatarMedium', 'avatarColorPrimary', 'avatarColorSecondary', 'icon', 'iconSmall', 'iconMedium', 'iconColorPrimary', 'iconColorSecondary', 'label', 'labelSmall', 'labelMedium', 'deleteIcon', 'deleteIconSmall', 'deleteIconMedium', 'deleteIconColorPrimary', 'deleteIconColorSecondary', 'deleteIconOutlinedColorPrimary', 'deleteIconOutlinedColorSecondary', 'deleteIconFilledColorPrimary', 'deleteIconFilledColorSecondary', 'focusVisible']);\nexport default chipClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"avatar\", \"className\", \"clickable\", \"color\", \"component\", \"deleteIcon\", \"disabled\", \"icon\", \"label\", \"onClick\", \"onDelete\", \"onKeyDown\", \"onKeyUp\", \"size\", \"variant\", \"tabIndex\", \"skipFocusWhenDisabled\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport CancelIcon from '../internal/svg-icons/Cancel';\nimport useForkRef from '../utils/useForkRef';\nimport unsupportedProp from '../utils/unsupportedProp';\nimport capitalize from '../utils/capitalize';\nimport ButtonBase from '../ButtonBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport chipClasses, { getChipUtilityClass } from './chipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    size,\n    color,\n    iconColor,\n    onDelete,\n    clickable,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, disabled && 'disabled', `size${capitalize(size)}`, `color${capitalize(color)}`, clickable && 'clickable', clickable && `clickableColor${capitalize(color)}`, onDelete && 'deletable', onDelete && `deletableColor${capitalize(color)}`, `${variant}${capitalize(color)}`],\n    label: ['label', `label${capitalize(size)}`],\n    avatar: ['avatar', `avatar${capitalize(size)}`, `avatarColor${capitalize(color)}`],\n    icon: ['icon', `icon${capitalize(size)}`, `iconColor${capitalize(iconColor)}`],\n    deleteIcon: ['deleteIcon', `deleteIcon${capitalize(size)}`, `deleteIconColor${capitalize(color)}`, `deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n  };\n  return composeClasses(slots, getChipUtilityClass, classes);\n};\nconst ChipRoot = styled('div', {\n  name: 'MuiChip',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      color,\n      iconColor,\n      clickable,\n      onDelete,\n      size,\n      variant\n    } = ownerState;\n    return [{\n      [`& .${chipClasses.avatar}`]: styles.avatar\n    }, {\n      [`& .${chipClasses.avatar}`]: styles[`avatar${capitalize(size)}`]\n    }, {\n      [`& .${chipClasses.avatar}`]: styles[`avatarColor${capitalize(color)}`]\n    }, {\n      [`& .${chipClasses.icon}`]: styles.icon\n    }, {\n      [`& .${chipClasses.icon}`]: styles[`icon${capitalize(size)}`]\n    }, {\n      [`& .${chipClasses.icon}`]: styles[`iconColor${capitalize(iconColor)}`]\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles.deleteIcon\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(size)}`]\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles[`deleteIconColor${capitalize(color)}`]\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n    }, styles.root, styles[`size${capitalize(size)}`], styles[`color${capitalize(color)}`], clickable && styles.clickable, clickable && color !== 'default' && styles[`clickableColor${capitalize(color)})`], onDelete && styles.deletable, onDelete && color !== 'default' && styles[`deletableColor${capitalize(color)}`], styles[variant], styles[`${variant}${capitalize(color)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  const deleteIconColor = alpha(theme.palette.text.primary, 0.26);\n  const textColor = theme.palette.mode === 'light' ? theme.palette.grey[700] : theme.palette.grey[300];\n  return _extends({\n    maxWidth: '100%',\n    fontFamily: theme.typography.fontFamily,\n    fontSize: theme.typography.pxToRem(13),\n    display: 'inline-flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n    height: 32,\n    color: (theme.vars || theme).palette.text.primary,\n    backgroundColor: (theme.vars || theme).palette.action.selected,\n    borderRadius: 32 / 2,\n    whiteSpace: 'nowrap',\n    transition: theme.transitions.create(['background-color', 'box-shadow']),\n    // label will inherit this from root, then `clickable` class overrides this for both\n    cursor: 'default',\n    // We disable the focus ring for mouse, touch and keyboard users.\n    outline: 0,\n    textDecoration: 'none',\n    border: 0,\n    // Remove `button` border\n    padding: 0,\n    // Remove `button` padding\n    verticalAlign: 'middle',\n    boxSizing: 'border-box',\n    [`&.${chipClasses.disabled}`]: {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity,\n      pointerEvents: 'none'\n    },\n    [`& .${chipClasses.avatar}`]: {\n      marginLeft: 5,\n      marginRight: -6,\n      width: 24,\n      height: 24,\n      color: theme.vars ? theme.vars.palette.Chip.defaultAvatarColor : textColor,\n      fontSize: theme.typography.pxToRem(12)\n    },\n    [`& .${chipClasses.avatarColorPrimary}`]: {\n      color: (theme.vars || theme).palette.primary.contrastText,\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    },\n    [`& .${chipClasses.avatarColorSecondary}`]: {\n      color: (theme.vars || theme).palette.secondary.contrastText,\n      backgroundColor: (theme.vars || theme).palette.secondary.dark\n    },\n    [`& .${chipClasses.avatarSmall}`]: {\n      marginLeft: 4,\n      marginRight: -4,\n      width: 18,\n      height: 18,\n      fontSize: theme.typography.pxToRem(10)\n    },\n    [`& .${chipClasses.icon}`]: _extends({\n      marginLeft: 5,\n      marginRight: -6\n    }, ownerState.size === 'small' && {\n      fontSize: 18,\n      marginLeft: 4,\n      marginRight: -4\n    }, ownerState.iconColor === ownerState.color && _extends({\n      color: theme.vars ? theme.vars.palette.Chip.defaultIconColor : textColor\n    }, ownerState.color !== 'default' && {\n      color: 'inherit'\n    })),\n    [`& .${chipClasses.deleteIcon}`]: _extends({\n      WebkitTapHighlightColor: 'transparent',\n      color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.26)` : deleteIconColor,\n      fontSize: 22,\n      cursor: 'pointer',\n      margin: '0 5px 0 -6px',\n      '&:hover': {\n        color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(deleteIconColor, 0.4)\n      }\n    }, ownerState.size === 'small' && {\n      fontSize: 16,\n      marginRight: 4,\n      marginLeft: -4\n    }, ownerState.color !== 'default' && {\n      color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].contrastTextChannel} / 0.7)` : alpha(theme.palette[ownerState.color].contrastText, 0.7),\n      '&:hover, &:active': {\n        color: (theme.vars || theme).palette[ownerState.color].contrastText\n      }\n    })\n  }, ownerState.size === 'small' && {\n    height: 24\n  }, ownerState.color !== 'default' && {\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].main,\n    color: (theme.vars || theme).palette[ownerState.color].contrastText\n  }, ownerState.onDelete && {\n    [`&.${chipClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  }, ownerState.onDelete && ownerState.color !== 'default' && {\n    [`&.${chipClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n    }\n  });\n}, ({\n  theme,\n  ownerState\n}) => _extends({}, ownerState.clickable && {\n  userSelect: 'none',\n  WebkitTapHighlightColor: 'transparent',\n  cursor: 'pointer',\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n  },\n  [`&.${chipClasses.focusVisible}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n  },\n  '&:active': {\n    boxShadow: (theme.vars || theme).shadows[1]\n  }\n}, ownerState.clickable && ownerState.color !== 'default' && {\n  [`&:hover, &.${chipClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n  }\n}), ({\n  theme,\n  ownerState\n}) => _extends({}, ownerState.variant === 'outlined' && {\n  backgroundColor: 'transparent',\n  border: theme.vars ? `1px solid ${theme.vars.palette.Chip.defaultBorder}` : `1px solid ${theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[700]}`,\n  [`&.${chipClasses.clickable}:hover`]: {\n    backgroundColor: (theme.vars || theme).palette.action.hover\n  },\n  [`&.${chipClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`& .${chipClasses.avatar}`]: {\n    marginLeft: 4\n  },\n  [`& .${chipClasses.avatarSmall}`]: {\n    marginLeft: 2\n  },\n  [`& .${chipClasses.icon}`]: {\n    marginLeft: 4\n  },\n  [`& .${chipClasses.iconSmall}`]: {\n    marginLeft: 2\n  },\n  [`& .${chipClasses.deleteIcon}`]: {\n    marginRight: 5\n  },\n  [`& .${chipClasses.deleteIconSmall}`]: {\n    marginRight: 3\n  }\n}, ownerState.variant === 'outlined' && ownerState.color !== 'default' && {\n  color: (theme.vars || theme).palette[ownerState.color].main,\n  border: `1px solid ${theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : alpha(theme.palette[ownerState.color].main, 0.7)}`,\n  [`&.${chipClasses.clickable}:hover`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity)\n  },\n  [`&.${chipClasses.focusVisible}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.focusOpacity)\n  },\n  [`& .${chipClasses.deleteIcon}`]: {\n    color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : alpha(theme.palette[ownerState.color].main, 0.7),\n    '&:hover, &:active': {\n      color: (theme.vars || theme).palette[ownerState.color].main\n    }\n  }\n}));\nconst ChipLabel = styled('span', {\n  name: 'MuiChip',\n  slot: 'Label',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      size\n    } = ownerState;\n    return [styles.label, styles[`label${capitalize(size)}`]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  paddingLeft: 12,\n  paddingRight: 12,\n  whiteSpace: 'nowrap'\n}, ownerState.size === 'small' && {\n  paddingLeft: 8,\n  paddingRight: 8\n}));\nfunction isDeleteKeyboardEvent(keyboardEvent) {\n  return keyboardEvent.key === 'Backspace' || keyboardEvent.key === 'Delete';\n}\n\n/**\n * Chips represent complex entities in small blocks, such as a contact.\n */\nconst Chip = /*#__PURE__*/React.forwardRef(function Chip(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiChip'\n  });\n  const {\n      avatar: avatarProp,\n      className,\n      clickable: clickableProp,\n      color = 'default',\n      component: ComponentProp,\n      deleteIcon: deleteIconProp,\n      disabled = false,\n      icon: iconProp,\n      label,\n      onClick,\n      onDelete,\n      onKeyDown,\n      onKeyUp,\n      size = 'medium',\n      variant = 'filled',\n      tabIndex,\n      skipFocusWhenDisabled = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const chipRef = React.useRef(null);\n  const handleRef = useForkRef(chipRef, ref);\n  const handleDeleteIconClick = event => {\n    // Stop the event from bubbling up to the `Chip`\n    event.stopPropagation();\n    if (onDelete) {\n      onDelete(event);\n    }\n  };\n  const handleKeyDown = event => {\n    // Ignore events from children of `Chip`.\n    if (event.currentTarget === event.target && isDeleteKeyboardEvent(event)) {\n      // Will be handled in keyUp, otherwise some browsers\n      // might init navigation\n      event.preventDefault();\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n  };\n  const handleKeyUp = event => {\n    // Ignore events from children of `Chip`.\n    if (event.currentTarget === event.target) {\n      if (onDelete && isDeleteKeyboardEvent(event)) {\n        onDelete(event);\n      } else if (event.key === 'Escape' && chipRef.current) {\n        chipRef.current.blur();\n      }\n    }\n    if (onKeyUp) {\n      onKeyUp(event);\n    }\n  };\n  const clickable = clickableProp !== false && onClick ? true : clickableProp;\n  const component = clickable || onDelete ? ButtonBase : ComponentProp || 'div';\n  const ownerState = _extends({}, props, {\n    component,\n    disabled,\n    size,\n    color,\n    iconColor: /*#__PURE__*/React.isValidElement(iconProp) ? iconProp.props.color || color : color,\n    onDelete: !!onDelete,\n    clickable,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const moreProps = component === ButtonBase ? _extends({\n    component: ComponentProp || 'div',\n    focusVisibleClassName: classes.focusVisible\n  }, onDelete && {\n    disableRipple: true\n  }) : {};\n  let deleteIcon = null;\n  if (onDelete) {\n    deleteIcon = deleteIconProp && /*#__PURE__*/React.isValidElement(deleteIconProp) ? /*#__PURE__*/React.cloneElement(deleteIconProp, {\n      className: clsx(deleteIconProp.props.className, classes.deleteIcon),\n      onClick: handleDeleteIconClick\n    }) : /*#__PURE__*/_jsx(CancelIcon, {\n      className: clsx(classes.deleteIcon),\n      onClick: handleDeleteIconClick\n    });\n  }\n  let avatar = null;\n  if (avatarProp && /*#__PURE__*/React.isValidElement(avatarProp)) {\n    avatar = /*#__PURE__*/React.cloneElement(avatarProp, {\n      className: clsx(classes.avatar, avatarProp.props.className)\n    });\n  }\n  let icon = null;\n  if (iconProp && /*#__PURE__*/React.isValidElement(iconProp)) {\n    icon = /*#__PURE__*/React.cloneElement(iconProp, {\n      className: clsx(classes.icon, iconProp.props.className)\n    });\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    if (avatar && icon) {\n      console.error('MUI: The Chip component can not handle the avatar ' + 'and the icon prop at the same time. Pick one.');\n    }\n  }\n  return /*#__PURE__*/_jsxs(ChipRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    disabled: clickable && disabled ? true : undefined,\n    onClick: onClick,\n    onKeyDown: handleKeyDown,\n    onKeyUp: handleKeyUp,\n    ref: handleRef,\n    tabIndex: skipFocusWhenDisabled && disabled ? -1 : tabIndex,\n    ownerState: ownerState\n  }, moreProps, other, {\n    children: [avatar || icon, /*#__PURE__*/_jsx(ChipLabel, {\n      className: clsx(classes.label),\n      ownerState: ownerState,\n      children: label\n    }), deleteIcon]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Chip.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The Avatar element to display.\n   */\n  avatar: PropTypes.element,\n  /**\n   * This prop isn't supported.\n   * Use the `component` prop if you need to change the children structure.\n   */\n  children: unsupportedProp,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the chip will appear clickable, and will raise when pressed,\n   * even if the onClick prop is not defined.\n   * If `false`, the chip will not appear clickable, even if onClick prop is defined.\n   * This can be used, for example,\n   * along with the component prop to indicate an anchor Chip is clickable.\n   * Note: this controls the UI and does not affect the onClick event.\n   */\n  clickable: PropTypes.bool,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Override the default delete icon element. Shown only if `onDelete` is set.\n   */\n  deleteIcon: PropTypes.element,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * Icon element.\n   */\n  icon: PropTypes.element,\n  /**\n   * The content of the component.\n   */\n  label: PropTypes.node,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * Callback fired when the delete icon is clicked.\n   * If set, the delete icon will be shown.\n   */\n  onDelete: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyUp: PropTypes.func,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * If `true`, allows the disabled chip to escape focus.\n   * If `false`, allows the disabled chip to receive focus.\n   * @default false\n   */\n  skipFocusWhenDisabled: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @ignore\n   */\n  tabIndex: PropTypes.number,\n  /**\n   * The variant to use.\n   * @default 'filled'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Chip;", "export { default } from './Chip';\nexport { default as chipClasses } from './chipClasses';\nexport * from './chipClasses';", "export default function formControlState({\n  props,\n  states,\n  muiFormControl\n}) {\n  return states.reduce((acc, state) => {\n    acc[state] = props[state];\n    if (muiFormControl) {\n      if (typeof props[state] === 'undefined') {\n        acc[state] = muiFormControl[state];\n      }\n    }\n    return acc;\n  }, {});\n}", "import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;", "import * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n  return React.useContext(FormControlContext);\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as SystemGlobalStyles } from '@mui/system';\nimport defaultTheme from '../styles/defaultTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles(props) {\n  return /*#__PURE__*/_jsx(SystemGlobalStyles, _extends({}, props, {\n    defaultTheme: defaultTheme\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The styles you want to apply globally.\n   */\n  styles: PropTypes.oneOfType([PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.shape({\n    __emotion_styles: PropTypes.any.isRequired\n  }), PropTypes.string, PropTypes.bool])\n} : void 0;\nexport default GlobalStyles;", "export { default } from './GlobalStyles';", "// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nexport function hasValue(value) {\n  return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n//                    True when any number or string with length.\nexport function isFilled(obj, SSR = false) {\n  return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n}\n\n// Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n//                    True when adorned at the start.\nexport function isAdornedStart(obj) {\n  return obj.startAdornment;\n}", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputBaseUtilityClass(slot) {\n  return generateUtilityClass('MuiInputBase', slot);\n}\nconst inputBaseClasses = generateUtilityClasses('MuiInputBase', ['root', 'formControl', 'focused', 'disabled', 'adornedStart', 'adornedEnd', 'error', 'sizeSmall', 'multiline', 'colorSecondary', 'fullWidth', 'hiddenLabel', 'readOnly', 'input', 'inputSizeSmall', 'inputMultiline', 'inputTypeSearch', 'inputAdornedStart', 'inputAdornedEnd', 'inputHiddenLabel']);\nexport default inputBaseClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nconst _excluded = [\"aria-describedby\", \"autoComplete\", \"autoFocus\", \"className\", \"color\", \"components\", \"componentsProps\", \"defaultValue\", \"disabled\", \"disableInjectingGlobalStyles\", \"endAdornment\", \"error\", \"fullWidth\", \"id\", \"inputComponent\", \"inputProps\", \"inputRef\", \"margin\", \"maxRows\", \"minRows\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onClick\", \"onFocus\", \"onKeyDown\", \"onKeyUp\", \"placeholder\", \"readOnly\", \"renderSuffix\", \"rows\", \"size\", \"slotProps\", \"slots\", \"startAdornment\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType, elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, isHostComponent, TextareaAutosize } from '@mui/base';\nimport formControlState from '../FormControl/formControlState';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport GlobalStyles from '../GlobalStyles';\nimport { isFilled } from './utils';\nimport inputBaseClasses, { getInputBaseUtilityClass } from './inputBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const rootOverridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.formControl && styles.formControl, ownerState.startAdornment && styles.adornedStart, ownerState.endAdornment && styles.adornedEnd, ownerState.error && styles.error, ownerState.size === 'small' && styles.sizeSmall, ownerState.multiline && styles.multiline, ownerState.color && styles[`color${capitalize(ownerState.color)}`], ownerState.fullWidth && styles.fullWidth, ownerState.hiddenLabel && styles.hiddenLabel];\n};\nexport const inputOverridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.input, ownerState.size === 'small' && styles.inputSizeSmall, ownerState.multiline && styles.inputMultiline, ownerState.type === 'search' && styles.inputTypeSearch, ownerState.startAdornment && styles.inputAdornedStart, ownerState.endAdornment && styles.inputAdornedEnd, ownerState.hiddenLabel && styles.inputHiddenLabel];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disabled,\n    error,\n    endAdornment,\n    focused,\n    formControl,\n    fullWidth,\n    hiddenLabel,\n    multiline,\n    readOnly,\n    size,\n    startAdornment,\n    type\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', fullWidth && 'fullWidth', focused && 'focused', formControl && 'formControl', size === 'small' && 'sizeSmall', multiline && 'multiline', startAdornment && 'adornedStart', endAdornment && 'adornedEnd', hiddenLabel && 'hiddenLabel', readOnly && 'readOnly'],\n    input: ['input', disabled && 'disabled', type === 'search' && 'inputTypeSearch', multiline && 'inputMultiline', size === 'small' && 'inputSizeSmall', hiddenLabel && 'inputHiddenLabel', startAdornment && 'inputAdornedStart', endAdornment && 'inputAdornedEnd', readOnly && 'readOnly']\n  };\n  return composeClasses(slots, getInputBaseUtilityClass, classes);\n};\nexport const InputBaseRoot = styled('div', {\n  name: 'MuiInputBase',\n  slot: 'Root',\n  overridesResolver: rootOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({}, theme.typography.body1, {\n  color: (theme.vars || theme).palette.text.primary,\n  lineHeight: '1.4375em',\n  // 23px\n  boxSizing: 'border-box',\n  // Prevent padding issue with fullWidth.\n  position: 'relative',\n  cursor: 'text',\n  display: 'inline-flex',\n  alignItems: 'center',\n  [`&.${inputBaseClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled,\n    cursor: 'default'\n  }\n}, ownerState.multiline && _extends({\n  padding: '4px 0 5px'\n}, ownerState.size === 'small' && {\n  paddingTop: 1\n}), ownerState.fullWidth && {\n  width: '100%'\n}));\nexport const InputBaseComponent = styled('input', {\n  name: 'MuiInputBase',\n  slot: 'Input',\n  overridesResolver: inputOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => {\n  const light = theme.palette.mode === 'light';\n  const placeholder = _extends({\n    color: 'currentColor'\n  }, theme.vars ? {\n    opacity: theme.vars.opacity.inputPlaceholder\n  } : {\n    opacity: light ? 0.42 : 0.5\n  }, {\n    transition: theme.transitions.create('opacity', {\n      duration: theme.transitions.duration.shorter\n    })\n  });\n  const placeholderHidden = {\n    opacity: '0 !important'\n  };\n  const placeholderVisible = theme.vars ? {\n    opacity: theme.vars.opacity.inputPlaceholder\n  } : {\n    opacity: light ? 0.42 : 0.5\n  };\n  return _extends({\n    font: 'inherit',\n    letterSpacing: 'inherit',\n    color: 'currentColor',\n    padding: '4px 0 5px',\n    border: 0,\n    boxSizing: 'content-box',\n    background: 'none',\n    height: '1.4375em',\n    // Reset 23pxthe native input line-height\n    margin: 0,\n    // Reset for Safari\n    WebkitTapHighlightColor: 'transparent',\n    display: 'block',\n    // Make the flex item shrink with Firefox\n    minWidth: 0,\n    width: '100%',\n    // Fix IE11 width issue\n    animationName: 'mui-auto-fill-cancel',\n    animationDuration: '10ms',\n    '&::-webkit-input-placeholder': placeholder,\n    '&::-moz-placeholder': placeholder,\n    // Firefox 19+\n    '&:-ms-input-placeholder': placeholder,\n    // IE11\n    '&::-ms-input-placeholder': placeholder,\n    // Edge\n    '&:focus': {\n      outline: 0\n    },\n    // Reset Firefox invalid required input style\n    '&:invalid': {\n      boxShadow: 'none'\n    },\n    '&::-webkit-search-decoration': {\n      // Remove the padding when type=search.\n      WebkitAppearance: 'none'\n    },\n    // Show and hide the placeholder logic\n    [`label[data-shrink=false] + .${inputBaseClasses.formControl} &`]: {\n      '&::-webkit-input-placeholder': placeholderHidden,\n      '&::-moz-placeholder': placeholderHidden,\n      // Firefox 19+\n      '&:-ms-input-placeholder': placeholderHidden,\n      // IE11\n      '&::-ms-input-placeholder': placeholderHidden,\n      // Edge\n      '&:focus::-webkit-input-placeholder': placeholderVisible,\n      '&:focus::-moz-placeholder': placeholderVisible,\n      // Firefox 19+\n      '&:focus:-ms-input-placeholder': placeholderVisible,\n      // IE11\n      '&:focus::-ms-input-placeholder': placeholderVisible // Edge\n    },\n\n    [`&.${inputBaseClasses.disabled}`]: {\n      opacity: 1,\n      // Reset iOS opacity\n      WebkitTextFillColor: (theme.vars || theme).palette.text.disabled // Fix opacity Safari bug\n    },\n\n    '&:-webkit-autofill': {\n      animationDuration: '5000s',\n      animationName: 'mui-auto-fill'\n    }\n  }, ownerState.size === 'small' && {\n    paddingTop: 1\n  }, ownerState.multiline && {\n    height: 'auto',\n    resize: 'none',\n    padding: 0,\n    paddingTop: 0\n  }, ownerState.type === 'search' && {\n    // Improve type search style.\n    MozAppearance: 'textfield'\n  });\n});\nconst inputGlobalStyles = /*#__PURE__*/_jsx(GlobalStyles, {\n  styles: {\n    '@keyframes mui-auto-fill': {\n      from: {\n        display: 'block'\n      }\n    },\n    '@keyframes mui-auto-fill-cancel': {\n      from: {\n        display: 'block'\n      }\n    }\n  }\n});\n\n/**\n * `InputBase` contains as few styles as possible.\n * It aims to be a simple building block for creating an input.\n * It contains a load of style reset and some state logic.\n */\nconst InputBase = /*#__PURE__*/React.forwardRef(function InputBase(inProps, ref) {\n  var _slotProps$input;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiInputBase'\n  });\n  const {\n      'aria-describedby': ariaDescribedby,\n      autoComplete,\n      autoFocus,\n      className,\n      components = {},\n      componentsProps = {},\n      defaultValue,\n      disabled,\n      disableInjectingGlobalStyles,\n      endAdornment,\n      fullWidth = false,\n      id,\n      inputComponent = 'input',\n      inputProps: inputPropsProp = {},\n      inputRef: inputRefProp,\n      maxRows,\n      minRows,\n      multiline = false,\n      name,\n      onBlur,\n      onChange,\n      onClick,\n      onFocus,\n      onKeyDown,\n      onKeyUp,\n      placeholder,\n      readOnly,\n      renderSuffix,\n      rows,\n      slotProps = {},\n      slots = {},\n      startAdornment,\n      type = 'text',\n      value: valueProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;\n  const {\n    current: isControlled\n  } = React.useRef(value != null);\n  const inputRef = React.useRef();\n  const handleInputRefWarning = React.useCallback(instance => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (instance && instance.nodeName !== 'INPUT' && !instance.focus) {\n        console.error(['MUI: You have provided a `inputComponent` to the input component', 'that does not correctly handle the `ref` prop.', 'Make sure the `ref` prop is called with a HTMLInputElement.'].join('\\n'));\n      }\n    }\n  }, []);\n  const handleInputRef = useForkRef(inputRef, inputRefProp, inputPropsProp.ref, handleInputRefWarning);\n  const [focused, setFocused] = React.useState(false);\n  const muiFormControl = useFormControl();\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (muiFormControl) {\n        return muiFormControl.registerEffect();\n      }\n      return undefined;\n    }, [muiFormControl]);\n  }\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['color', 'disabled', 'error', 'hiddenLabel', 'size', 'required', 'filled']\n  });\n  fcs.focused = muiFormControl ? muiFormControl.focused : focused;\n\n  // The blur won't fire when the disabled state is set on a focused input.\n  // We need to book keep the focused state manually.\n  React.useEffect(() => {\n    if (!muiFormControl && disabled && focused) {\n      setFocused(false);\n      if (onBlur) {\n        onBlur();\n      }\n    }\n  }, [muiFormControl, disabled, focused, onBlur]);\n  const onFilled = muiFormControl && muiFormControl.onFilled;\n  const onEmpty = muiFormControl && muiFormControl.onEmpty;\n  const checkDirty = React.useCallback(obj => {\n    if (isFilled(obj)) {\n      if (onFilled) {\n        onFilled();\n      }\n    } else if (onEmpty) {\n      onEmpty();\n    }\n  }, [onFilled, onEmpty]);\n  useEnhancedEffect(() => {\n    if (isControlled) {\n      checkDirty({\n        value\n      });\n    }\n  }, [value, checkDirty, isControlled]);\n  const handleFocus = event => {\n    // Fix a bug with IE11 where the focus/blur events are triggered\n    // while the component is disabled.\n    if (fcs.disabled) {\n      event.stopPropagation();\n      return;\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n    if (inputPropsProp.onFocus) {\n      inputPropsProp.onFocus(event);\n    }\n    if (muiFormControl && muiFormControl.onFocus) {\n      muiFormControl.onFocus(event);\n    } else {\n      setFocused(true);\n    }\n  };\n  const handleBlur = event => {\n    if (onBlur) {\n      onBlur(event);\n    }\n    if (inputPropsProp.onBlur) {\n      inputPropsProp.onBlur(event);\n    }\n    if (muiFormControl && muiFormControl.onBlur) {\n      muiFormControl.onBlur(event);\n    } else {\n      setFocused(false);\n    }\n  };\n  const handleChange = (event, ...args) => {\n    if (!isControlled) {\n      const element = event.target || inputRef.current;\n      if (element == null) {\n        throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Expected valid input target. Did you use a custom \\`inputComponent\\` and forget to forward refs? See https://mui.com/r/input-component-ref-interface for more info.` : _formatMuiErrorMessage(1));\n      }\n      checkDirty({\n        value: element.value\n      });\n    }\n    if (inputPropsProp.onChange) {\n      inputPropsProp.onChange(event, ...args);\n    }\n\n    // Perform in the willUpdate\n    if (onChange) {\n      onChange(event, ...args);\n    }\n  };\n\n  // Check the input state on mount, in case it was filled by the user\n  // or auto filled by the browser before the hydration (for SSR).\n  React.useEffect(() => {\n    checkDirty(inputRef.current);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  const handleClick = event => {\n    if (inputRef.current && event.currentTarget === event.target) {\n      inputRef.current.focus();\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  let InputComponent = inputComponent;\n  let inputProps = inputPropsProp;\n  if (multiline && InputComponent === 'input') {\n    if (rows) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (minRows || maxRows) {\n          console.warn('MUI: You can not use the `minRows` or `maxRows` props when the input `rows` prop is set.');\n        }\n      }\n      inputProps = _extends({\n        type: undefined,\n        minRows: rows,\n        maxRows: rows\n      }, inputProps);\n    } else {\n      inputProps = _extends({\n        type: undefined,\n        maxRows,\n        minRows\n      }, inputProps);\n    }\n    InputComponent = TextareaAutosize;\n  }\n  const handleAutoFill = event => {\n    // Provide a fake value as Chrome might not let you access it for security reasons.\n    checkDirty(event.animationName === 'mui-auto-fill-cancel' ? inputRef.current : {\n      value: 'x'\n    });\n  };\n  React.useEffect(() => {\n    if (muiFormControl) {\n      muiFormControl.setAdornedStart(Boolean(startAdornment));\n    }\n  }, [muiFormControl, startAdornment]);\n  const ownerState = _extends({}, props, {\n    color: fcs.color || 'primary',\n    disabled: fcs.disabled,\n    endAdornment,\n    error: fcs.error,\n    focused: fcs.focused,\n    formControl: muiFormControl,\n    fullWidth,\n    hiddenLabel: fcs.hiddenLabel,\n    multiline,\n    size: fcs.size,\n    startAdornment,\n    type\n  });\n  const classes = useUtilityClasses(ownerState);\n  const Root = slots.root || components.Root || InputBaseRoot;\n  const rootProps = slotProps.root || componentsProps.root || {};\n  const Input = slots.input || components.Input || InputBaseComponent;\n  inputProps = _extends({}, inputProps, (_slotProps$input = slotProps.input) != null ? _slotProps$input : componentsProps.input);\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [!disableInjectingGlobalStyles && inputGlobalStyles, /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, !isHostComponent(Root) && {\n      ownerState: _extends({}, ownerState, rootProps.ownerState)\n    }, {\n      ref: ref,\n      onClick: handleClick\n    }, other, {\n      className: clsx(classes.root, rootProps.className, className),\n      children: [startAdornment, /*#__PURE__*/_jsx(FormControlContext.Provider, {\n        value: null,\n        children: /*#__PURE__*/_jsx(Input, _extends({\n          ownerState: ownerState,\n          \"aria-invalid\": fcs.error,\n          \"aria-describedby\": ariaDescribedby,\n          autoComplete: autoComplete,\n          autoFocus: autoFocus,\n          defaultValue: defaultValue,\n          disabled: fcs.disabled,\n          id: id,\n          onAnimationStart: handleAutoFill,\n          name: name,\n          placeholder: placeholder,\n          readOnly: readOnly,\n          required: fcs.required,\n          rows: rows,\n          value: value,\n          onKeyDown: onKeyDown,\n          onKeyUp: onKeyUp,\n          type: type\n        }, inputProps, !isHostComponent(Input) && {\n          as: InputComponent,\n          ownerState: _extends({}, ownerState, inputProps.ownerState)\n        }, {\n          ref: handleInputRef,\n          className: clsx(classes.input, inputProps.className),\n          onBlur: handleBlur,\n          onChange: handleChange,\n          onFocus: handleFocus\n        }))\n      }), endAdornment, renderSuffix ? renderSuffix(_extends({}, fcs, {\n        startAdornment\n      })) : null]\n    }))]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputBase.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  'aria-describedby': PropTypes.string,\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, GlobalStyles for the auto-fill keyframes will not be injected/removed on mount/unmount. Make sure to inject them at the top of your application.\n   * This option is intended to help with boosting the initial rendering performance if you are loading a big amount of Input components at once.\n   * @default false\n   */\n  disableInjectingGlobalStyles: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: elementTypeAcceptingRef,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the `input` is blurred.\n   *\n   * Notice that the first argument (event) might be undefined.\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the `input` doesn't satisfy its constraints.\n   */\n  onInvalid: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyUp: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  renderSuffix: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The size of the component.\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default InputBase;", "export { default } from './InputBase';\nexport { default as inputBaseClasses } from './inputBaseClasses';\nexport * from './inputBaseClasses';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getInputUtilityClass(slot) {\n  return generateUtilityClass('MuiInput', slot);\n}\nconst inputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiInput', ['root', 'underline', 'input']));\nexport default inputClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getOutlinedInputUtilityClass(slot) {\n  return generateUtilityClass('MuiOutlinedInput', slot);\n}\nconst outlinedInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiOutlinedInput', ['root', 'notchedOutline', 'input']));\nexport default outlinedInputClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getFilledInputUtilityClass(slot) {\n  return generateUtilityClass('MuiFilledInput', slot);\n}\nconst filledInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiFilledInput', ['root', 'underline', 'input']));\nexport default filledInputClasses;", "import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAutocompleteUtilityClass(slot) {\n  return generateUtilityClass('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = generateUtilityClasses('MuiAutocomplete', ['root', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\nexport default autocompleteClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _ClearIcon, _ArrowDropDownIcon;\nconst _excluded = [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"className\", \"clearIcon\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeText\", \"componentsProps\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionLabel\", \"isOptionEqualToValue\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"readOnly\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"slotProps\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, useAutocomplete, createFilterOptions } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport Popper from '../Popper';\nimport ListSubheader from '../ListSubheader';\nimport Paper from '../Paper';\nimport IconButton from '../IconButton';\nimport Chip from '../Chip';\nimport inputClasses from '../Input/inputClasses';\nimport inputBaseClasses from '../InputBase/inputBaseClasses';\nimport outlinedInputClasses from '../OutlinedInput/outlinedInputClasses';\nimport filledInputClasses from '../FilledInput/filledInputClasses';\nimport ClearIcon from '../internal/svg-icons/Close';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport autocompleteClasses, { getAutocompleteUtilityClass } from './autocompleteClasses';\nimport capitalize from '../utils/capitalize';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disablePortal,\n    focused,\n    fullWidth,\n    hasClearIcon,\n    hasPopupIcon,\n    inputFocused,\n    popupOpen,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n    inputRoot: ['inputRoot'],\n    input: ['input', inputFocused && 'inputFocused'],\n    tag: ['tag', `tagSize${capitalize(size)}`],\n    endAdornment: ['endAdornment'],\n    clearIndicator: ['clearIndicator'],\n    popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n    popper: ['popper', disablePortal && 'popperDisablePortal'],\n    paper: ['paper'],\n    listbox: ['listbox'],\n    loading: ['loading'],\n    noOptions: ['noOptions'],\n    option: ['option'],\n    groupLabel: ['groupLabel'],\n    groupUl: ['groupUl']\n  };\n  return composeClasses(slots, getAutocompleteUtilityClass, classes);\n};\nconst AutocompleteRoot = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      fullWidth,\n      hasClearIcon,\n      hasPopupIcon,\n      inputFocused,\n      size\n    } = ownerState;\n    return [{\n      [`& .${autocompleteClasses.tag}`]: styles.tag\n    }, {\n      [`& .${autocompleteClasses.tag}`]: styles[`tagSize${capitalize(size)}`]\n    }, {\n      [`& .${autocompleteClasses.inputRoot}`]: styles.inputRoot\n    }, {\n      [`& .${autocompleteClasses.input}`]: styles.input\n    }, {\n      [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused\n    }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n  }\n})(({\n  ownerState\n}) => _extends({\n  [`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {\n    visibility: 'visible'\n  },\n  /* Avoid double tap issue on iOS */\n  '@media (pointer: fine)': {\n    [`&:hover .${autocompleteClasses.clearIndicator}`]: {\n      visibility: 'visible'\n    }\n  }\n}, ownerState.fullWidth && {\n  width: '100%'\n}, {\n  [`& .${autocompleteClasses.tag}`]: _extends({\n    margin: 3,\n    maxWidth: 'calc(100% - 6px)'\n  }, ownerState.size === 'small' && {\n    margin: 2,\n    maxWidth: 'calc(100% - 4px)'\n  }),\n  [`& .${autocompleteClasses.inputRoot}`]: {\n    flexWrap: 'wrap',\n    [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 26 + 4\n    },\n    [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 52 + 4\n    },\n    [`& .${autocompleteClasses.input}`]: {\n      width: 0,\n      minWidth: 30\n    }\n  },\n  [`& .${inputClasses.root}`]: {\n    paddingBottom: 1,\n    '& .MuiInput-input': {\n      padding: '4px 4px 4px 0px'\n    }\n  },\n  [`& .${inputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n    [`& .${inputClasses.input}`]: {\n      padding: '2px 4px 3px 0'\n    }\n  },\n  [`& .${outlinedInputClasses.root}`]: {\n    padding: 9,\n    [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 26 + 4 + 9\n    },\n    [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 52 + 4 + 9\n    },\n    [`& .${autocompleteClasses.input}`]: {\n      padding: '7.5px 4px 7.5px 6px'\n    },\n    [`& .${autocompleteClasses.endAdornment}`]: {\n      right: 9\n    }\n  },\n  [`& .${outlinedInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n    // Don't specify paddingRight, as it overrides the default value set when there is only\n    // one of the popup or clear icon as the specificity is equal so the latter one wins\n    paddingTop: 6,\n    paddingBottom: 6,\n    paddingLeft: 6,\n    [`& .${autocompleteClasses.input}`]: {\n      padding: '2.5px 4px 2.5px 6px'\n    }\n  },\n  [`& .${filledInputClasses.root}`]: {\n    paddingTop: 19,\n    paddingLeft: 8,\n    [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 26 + 4 + 9\n    },\n    [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 52 + 4 + 9\n    },\n    [`& .${filledInputClasses.input}`]: {\n      padding: '7px 4px'\n    },\n    [`& .${autocompleteClasses.endAdornment}`]: {\n      right: 9\n    }\n  },\n  [`& .${filledInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n    paddingBottom: 1,\n    [`& .${filledInputClasses.input}`]: {\n      padding: '2.5px 4px'\n    }\n  },\n  [`& .${inputBaseClasses.hiddenLabel}`]: {\n    paddingTop: 8\n  },\n  [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}`]: {\n    paddingTop: 0,\n    paddingBottom: 0,\n    [`& .${autocompleteClasses.input}`]: {\n      paddingTop: 16,\n      paddingBottom: 17\n    }\n  },\n  [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}.${inputBaseClasses.sizeSmall}`]: {\n    [`& .${autocompleteClasses.input}`]: {\n      paddingTop: 8,\n      paddingBottom: 9\n    }\n  },\n  [`& .${autocompleteClasses.input}`]: _extends({\n    flexGrow: 1,\n    textOverflow: 'ellipsis',\n    opacity: 0\n  }, ownerState.inputFocused && {\n    opacity: 1\n  })\n}));\nconst AutocompleteEndAdornment = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'EndAdornment',\n  overridesResolver: (props, styles) => styles.endAdornment\n})({\n  // We use a position absolute to support wrapping tags.\n  position: 'absolute',\n  right: 0,\n  top: 'calc(50% - 14px)' // Center vertically\n});\n\nconst AutocompleteClearIndicator = styled(IconButton, {\n  name: 'MuiAutocomplete',\n  slot: 'ClearIndicator',\n  overridesResolver: (props, styles) => styles.clearIndicator\n})({\n  marginRight: -2,\n  padding: 4,\n  visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = styled(IconButton, {\n  name: 'MuiAutocomplete',\n  slot: 'PopupIndicator',\n  overridesResolver: ({\n    ownerState\n  }, styles) => _extends({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})(({\n  ownerState\n}) => _extends({\n  padding: 2,\n  marginRight: -2\n}, ownerState.popupOpen && {\n  transform: 'rotate(180deg)'\n}));\nconst AutocompletePopper = styled(Popper, {\n  name: 'MuiAutocomplete',\n  slot: 'Popper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${autocompleteClasses.option}`]: styles.option\n    }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  zIndex: (theme.vars || theme).zIndex.modal\n}, ownerState.disablePortal && {\n  position: 'absolute'\n}));\nconst AutocompletePaper = styled(Paper, {\n  name: 'MuiAutocomplete',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})(({\n  theme\n}) => _extends({}, theme.typography.body1, {\n  overflow: 'auto'\n}));\nconst AutocompleteLoading = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Loading',\n  overridesResolver: (props, styles) => styles.loading\n})(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  padding: '14px 16px'\n}));\nconst AutocompleteNoOptions = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'NoOptions',\n  overridesResolver: (props, styles) => styles.noOptions\n})(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  padding: '14px 16px'\n}));\nconst AutocompleteListbox = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Listbox',\n  overridesResolver: (props, styles) => styles.listbox\n})(({\n  theme\n}) => ({\n  listStyle: 'none',\n  margin: 0,\n  padding: '8px 0',\n  maxHeight: '40vh',\n  overflow: 'auto',\n  position: 'relative',\n  [`& .${autocompleteClasses.option}`]: {\n    minHeight: 48,\n    display: 'flex',\n    overflow: 'hidden',\n    justifyContent: 'flex-start',\n    alignItems: 'center',\n    cursor: 'pointer',\n    paddingTop: 6,\n    boxSizing: 'border-box',\n    outline: '0',\n    WebkitTapHighlightColor: 'transparent',\n    paddingBottom: 6,\n    paddingLeft: 16,\n    paddingRight: 16,\n    [theme.breakpoints.up('sm')]: {\n      minHeight: 'auto'\n    },\n    [`&.${autocompleteClasses.focused}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.hover,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    },\n    '&[aria-disabled=\"true\"]': {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity,\n      pointerEvents: 'none'\n    },\n    [`&.${autocompleteClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.focus\n    },\n    '&[aria-selected=\"true\"]': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n      [`&.${autocompleteClasses.focused}`]: {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: (theme.vars || theme).palette.action.selected\n        }\n      },\n      [`&.${autocompleteClasses.focusVisible}`]: {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n      }\n    }\n  }\n}));\nconst AutocompleteGroupLabel = styled(ListSubheader, {\n  name: 'MuiAutocomplete',\n  slot: 'GroupLabel',\n  overridesResolver: (props, styles) => styles.groupLabel\n})(({\n  theme\n}) => ({\n  backgroundColor: (theme.vars || theme).palette.background.paper,\n  top: -8\n}));\nconst AutocompleteGroupUl = styled('ul', {\n  name: 'MuiAutocomplete',\n  slot: 'GroupUl',\n  overridesResolver: (props, styles) => styles.groupUl\n})({\n  padding: 0,\n  [`& .${autocompleteClasses.option}`]: {\n    paddingLeft: 24\n  }\n});\nexport { createFilterOptions };\nconst Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {\n  var _slotProps$clearIndic, _slotProps$paper, _slotProps$popper, _slotProps$popupIndic;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiAutocomplete'\n  });\n  /* eslint-disable @typescript-eslint/no-unused-vars */\n  const {\n      autoComplete = false,\n      autoHighlight = false,\n      autoSelect = false,\n      blurOnSelect = false,\n      ChipProps,\n      className,\n      clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/_jsx(ClearIcon, {\n        fontSize: \"small\"\n      })),\n      clearOnBlur = !props.freeSolo,\n      clearOnEscape = false,\n      clearText = 'Clear',\n      closeText = 'Close',\n      componentsProps = {},\n      defaultValue = props.multiple ? [] : null,\n      disableClearable = false,\n      disableCloseOnSelect = false,\n      disabled = false,\n      disabledItemsFocusable = false,\n      disableListWrap = false,\n      disablePortal = false,\n      filterSelectedOptions = false,\n      forcePopupIcon = 'auto',\n      freeSolo = false,\n      fullWidth = false,\n      getLimitTagsText = more => `+${more}`,\n      getOptionLabel = option => {\n        var _option$label;\n        return (_option$label = option.label) != null ? _option$label : option;\n      },\n      groupBy,\n      handleHomeEndKeys = !props.freeSolo,\n      includeInputInList = false,\n      limitTags = -1,\n      ListboxComponent = 'ul',\n      ListboxProps,\n      loading = false,\n      loadingText = 'Loading\u2026',\n      multiple = false,\n      noOptionsText = 'No options',\n      openOnFocus = false,\n      openText = 'Open',\n      PaperComponent = Paper,\n      PopperComponent = Popper,\n      popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/_jsx(ArrowDropDownIcon, {})),\n      readOnly = false,\n      renderGroup: renderGroupProp,\n      renderInput,\n      renderOption: renderOptionProp,\n      renderTags,\n      selectOnFocus = !props.freeSolo,\n      size = 'medium',\n      slotProps = {}\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  /* eslint-enable @typescript-eslint/no-unused-vars */\n\n  const {\n    getRootProps,\n    getInputProps,\n    getInputLabelProps,\n    getPopupIndicatorProps,\n    getClearProps,\n    getTagProps,\n    getListboxProps,\n    getOptionProps,\n    value,\n    dirty,\n    id,\n    popupOpen,\n    focused,\n    focusedTag,\n    anchorEl,\n    setAnchorEl,\n    inputValue,\n    groupedOptions\n  } = useAutocomplete(_extends({}, props, {\n    componentName: 'Autocomplete'\n  }));\n  const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n  const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n\n  // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n  const ownerState = _extends({}, props, {\n    disablePortal,\n    focused,\n    fullWidth,\n    hasClearIcon,\n    hasPopupIcon,\n    inputFocused: focusedTag === -1,\n    popupOpen,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  let startAdornment;\n  if (multiple && value.length > 0) {\n    const getCustomizedTagProps = params => _extends({\n      className: classes.tag,\n      disabled\n    }, getTagProps(params));\n    if (renderTags) {\n      startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n    } else {\n      startAdornment = value.map((option, index) => /*#__PURE__*/_jsx(Chip, _extends({\n        label: getOptionLabel(option),\n        size: size\n      }, getCustomizedTagProps({\n        index\n      }), ChipProps)));\n    }\n  }\n  if (limitTags > -1 && Array.isArray(startAdornment)) {\n    const more = startAdornment.length - limitTags;\n    if (!focused && more > 0) {\n      startAdornment = startAdornment.splice(0, limitTags);\n      startAdornment.push( /*#__PURE__*/_jsx(\"span\", {\n        className: classes.tag,\n        children: getLimitTagsText(more)\n      }, startAdornment.length));\n    }\n  }\n  const defaultRenderGroup = params => /*#__PURE__*/_jsxs(\"li\", {\n    children: [/*#__PURE__*/_jsx(AutocompleteGroupLabel, {\n      className: classes.groupLabel,\n      ownerState: ownerState,\n      component: \"div\",\n      children: params.group\n    }), /*#__PURE__*/_jsx(AutocompleteGroupUl, {\n      className: classes.groupUl,\n      ownerState: ownerState,\n      children: params.children\n    })]\n  }, params.key);\n  const renderGroup = renderGroupProp || defaultRenderGroup;\n  const defaultRenderOption = (props2, option) => /*#__PURE__*/_jsx(\"li\", _extends({}, props2, {\n    children: getOptionLabel(option)\n  }));\n  const renderOption = renderOptionProp || defaultRenderOption;\n  const renderListOption = (option, index) => {\n    const optionProps = getOptionProps({\n      option,\n      index\n    });\n    return renderOption(_extends({}, optionProps, {\n      className: classes.option\n    }), option, {\n      selected: optionProps['aria-selected'],\n      index,\n      inputValue\n    });\n  };\n  const clearIndicatorSlotProps = (_slotProps$clearIndic = slotProps.clearIndicator) != null ? _slotProps$clearIndic : componentsProps.clearIndicator;\n  const paperSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : componentsProps.paper;\n  const popperSlotProps = (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper;\n  const popupIndicatorSlotProps = (_slotProps$popupIndic = slotProps.popupIndicator) != null ? _slotProps$popupIndic : componentsProps.popupIndicator;\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(AutocompleteRoot, _extends({\n      ref: ref,\n      className: clsx(classes.root, className),\n      ownerState: ownerState\n    }, getRootProps(other), {\n      children: renderInput({\n        id,\n        disabled,\n        fullWidth: true,\n        size: size === 'small' ? 'small' : undefined,\n        InputLabelProps: getInputLabelProps(),\n        InputProps: _extends({\n          ref: setAnchorEl,\n          className: classes.inputRoot,\n          startAdornment\n        }, (hasClearIcon || hasPopupIcon) && {\n          endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {\n            className: classes.endAdornment,\n            ownerState: ownerState,\n            children: [hasClearIcon ? /*#__PURE__*/_jsx(AutocompleteClearIndicator, _extends({}, getClearProps(), {\n              \"aria-label\": clearText,\n              title: clearText,\n              ownerState: ownerState\n            }, clearIndicatorSlotProps, {\n              className: clsx(classes.clearIndicator, clearIndicatorSlotProps == null ? void 0 : clearIndicatorSlotProps.className),\n              children: clearIcon\n            })) : null, hasPopupIcon ? /*#__PURE__*/_jsx(AutocompletePopupIndicator, _extends({}, getPopupIndicatorProps(), {\n              disabled: disabled,\n              \"aria-label\": popupOpen ? closeText : openText,\n              title: popupOpen ? closeText : openText,\n              ownerState: ownerState\n            }, popupIndicatorSlotProps, {\n              className: clsx(classes.popupIndicator, popupIndicatorSlotProps == null ? void 0 : popupIndicatorSlotProps.className),\n              children: popupIcon\n            })) : null]\n          })\n        }),\n        inputProps: _extends({\n          className: classes.input,\n          disabled,\n          readOnly\n        }, getInputProps())\n      })\n    })), anchorEl ? /*#__PURE__*/_jsx(AutocompletePopper, _extends({\n      as: PopperComponent,\n      disablePortal: disablePortal,\n      style: {\n        width: anchorEl ? anchorEl.clientWidth : null\n      },\n      ownerState: ownerState,\n      role: \"presentation\",\n      anchorEl: anchorEl,\n      open: popupOpen\n    }, popperSlotProps, {\n      className: clsx(classes.popper, popperSlotProps == null ? void 0 : popperSlotProps.className),\n      children: /*#__PURE__*/_jsxs(AutocompletePaper, _extends({\n        ownerState: ownerState,\n        as: PaperComponent\n      }, paperSlotProps, {\n        className: clsx(classes.paper, paperSlotProps == null ? void 0 : paperSlotProps.className),\n        children: [loading && groupedOptions.length === 0 ? /*#__PURE__*/_jsx(AutocompleteLoading, {\n          className: classes.loading,\n          ownerState: ownerState,\n          children: loadingText\n        }) : null, groupedOptions.length === 0 && !freeSolo && !loading ? /*#__PURE__*/_jsx(AutocompleteNoOptions, {\n          className: classes.noOptions,\n          ownerState: ownerState,\n          role: \"presentation\",\n          onMouseDown: event => {\n            // Prevent input blur when interacting with the \"no options\" content\n            event.preventDefault();\n          },\n          children: noOptionsText\n        }) : null, groupedOptions.length > 0 ? /*#__PURE__*/_jsx(AutocompleteListbox, _extends({\n          as: ListboxComponent,\n          className: classes.listbox,\n          ownerState: ownerState\n        }, getListboxProps(), ListboxProps, {\n          children: groupedOptions.map((option, index) => {\n            if (groupBy) {\n              return renderGroup({\n                key: option.key,\n                group: option.group,\n                children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n              });\n            }\n            return renderListOption(option, index);\n          })\n        })) : null]\n      }))\n    })) : null]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Autocomplete.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the portion of the selected suggestion that has not been typed by the user,\n   * known as the completion string, appears inline after the input cursor in the textbox.\n   * The inline completion string is visually highlighted and has a selected state.\n   * @default false\n   */\n  autoComplete: PropTypes.bool,\n  /**\n   * If `true`, the first option is automatically highlighted.\n   * @default false\n   */\n  autoHighlight: PropTypes.bool,\n  /**\n   * If `true`, the selected option becomes the value of the input\n   * when the Autocomplete loses focus unless the user chooses\n   * a different option or changes the character string in the input.\n   * @default false\n   */\n  autoSelect: PropTypes.bool,\n  /**\n   * Control if the input should be blurred when an option is selected:\n   *\n   * - `false` the input is not blurred.\n   * - `true` the input is always blurred.\n   * - `touch` the input is blurred after a touch event.\n   * - `mouse` the input is blurred after a mouse event.\n   * @default false\n   */\n  blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]),\n  /**\n   * Props applied to the [`Chip`](/material-ui/api/chip/) element.\n   */\n  ChipProps: PropTypes.object,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon to display in place of the default clear icon.\n   * @default <ClearIcon fontSize=\"small\" />\n   */\n  clearIcon: PropTypes.node,\n  /**\n   * If `true`, the input's text is cleared on blur if no value is selected.\n   *\n   * Set to `true` if you want to help the user enter a new value.\n   * Set to `false` if you want to help the user resume their search.\n   * @default !props.freeSolo\n   */\n  clearOnBlur: PropTypes.bool,\n  /**\n   * If `true`, clear all values when the user presses escape and the popup is closed.\n   * @default false\n   */\n  clearOnEscape: PropTypes.bool,\n  /**\n   * Override the default text for the *clear* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Clear'\n   */\n  clearText: PropTypes.string,\n  /**\n   * Override the default text for the *close popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Close'\n   */\n  closeText: PropTypes.string,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    clearIndicator: PropTypes.object,\n    paper: PropTypes.object,\n    popper: PropTypes.object,\n    popupIndicator: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   * @default props.multiple ? [] : null\n   */\n  defaultValue: chainPropTypes(PropTypes.any, props => {\n    if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n      return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n    }\n    return null;\n  }),\n  /**\n   * If `true`, the input can't be cleared.\n   * @default false\n   */\n  disableClearable: PropTypes.bool,\n  /**\n   * If `true`, the popup won't close when a value is selected.\n   * @default false\n   */\n  disableCloseOnSelect: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, will allow focus on disabled items.\n   * @default false\n   */\n  disabledItemsFocusable: PropTypes.bool,\n  /**\n   * If `true`, the list box in the popup will not wrap focus.\n   * @default false\n   */\n  disableListWrap: PropTypes.bool,\n  /**\n   * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * A function that determines the filtered options to be rendered on search.\n   *\n   * @param {T[]} options The options to render.\n   * @param {object} state The state of the component.\n   * @returns {T[]}\n   */\n  filterOptions: PropTypes.func,\n  /**\n   * If `true`, hide the selected options from the list box.\n   * @default false\n   */\n  filterSelectedOptions: PropTypes.bool,\n  /**\n   * Force the visibility display of the popup icon.\n   * @default 'auto'\n   */\n  forcePopupIcon: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.bool]),\n  /**\n   * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n   * @default false\n   */\n  freeSolo: PropTypes.bool,\n  /**\n   * If `true`, the input will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The label to display when the tags are truncated (`limitTags`).\n   *\n   * @param {number} more The number of truncated tags.\n   * @returns {ReactNode}\n   * @default (more) => `+${more}`\n   */\n  getLimitTagsText: PropTypes.func,\n  /**\n   * Used to determine the disabled state for a given option.\n   *\n   * @param {T} option The option to test.\n   * @returns {boolean}\n   */\n  getOptionDisabled: PropTypes.func,\n  /**\n   * Used to determine the string value for a given option.\n   * It's used to fill the input (and the list box options if `renderOption` is not provided).\n   *\n   * If used in free solo mode, it must accept both the type of the options and a string.\n   *\n   * @param {T} option\n   * @returns {string}\n   * @default (option) => option.label ?? option\n   */\n  getOptionLabel: PropTypes.func,\n  /**\n   * If provided, the options will be grouped under the returned string.\n   * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n   *\n   * @param {T} options The options to group.\n   * @returns {string}\n   */\n  groupBy: PropTypes.func,\n  /**\n   * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n   * It should move focus to the first option and last option, respectively.\n   * @default !props.freeSolo\n   */\n  handleHomeEndKeys: PropTypes.bool,\n  /**\n   * This prop is used to help implement the accessibility logic.\n   * If you don't provide an id it will fall back to a randomly generated one.\n   */\n  id: PropTypes.string,\n  /**\n   * If `true`, the highlight can move to the input.\n   * @default false\n   */\n  includeInputInList: PropTypes.bool,\n  /**\n   * The input value.\n   */\n  inputValue: PropTypes.string,\n  /**\n   * Used to determine if the option represents the given value.\n   * Uses strict equality by default.\n   * \u26A0\uFE0F Both arguments need to be handled, an option can only match with one value.\n   *\n   * @param {T} option The option to test.\n   * @param {T} value The value to test against.\n   * @returns {boolean}\n   */\n  isOptionEqualToValue: PropTypes.func,\n  /**\n   * The maximum number of tags that will be visible when not focused.\n   * Set `-1` to disable the limit.\n   * @default -1\n   */\n  limitTags: integerPropType,\n  /**\n   * The component used to render the listbox.\n   * @default 'ul'\n   */\n  ListboxComponent: PropTypes.elementType,\n  /**\n   * Props applied to the Listbox element.\n   */\n  ListboxProps: PropTypes.object,\n  /**\n   * If `true`, the component is in a loading state.\n   * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, e.g. `options` are empty).\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Text to display when in a loading state.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Loading\u2026'\n   */\n  loadingText: PropTypes.node,\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   * @default false\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Text to display when there are no options.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'No options'\n   */\n  noOptionsText: PropTypes.node,\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {T|T[]} value The new value of the component.\n   * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n   * @param {string} [details]\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be closed.\n   * Use in controlled mode (see open).\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the highlight option changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {T} option The highlighted option.\n   * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`.\n   */\n  onHighlightChange: PropTypes.func,\n  /**\n   * Callback fired when the input value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {string} value The new value of the text input.\n   * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`.\n   */\n  onInputChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be opened.\n   * Use in controlled mode (see open).\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * If `true`, the popup will open on input focus.\n   * @default false\n   */\n  openOnFocus: PropTypes.bool,\n  /**\n   * Override the default text for the *open popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Open'\n   */\n  openText: PropTypes.string,\n  /**\n   * Array of options.\n   */\n  options: PropTypes.array.isRequired,\n  /**\n   * The component used to render the body of the popup.\n   * @default Paper\n   */\n  PaperComponent: PropTypes.elementType,\n  /**\n   * The component used to position the popup.\n   * @default Popper\n   */\n  PopperComponent: PropTypes.elementType,\n  /**\n   * The icon to display in place of the default popup icon.\n   * @default <ArrowDropDownIcon />\n   */\n  popupIcon: PropTypes.node,\n  /**\n   * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * Render the group.\n   *\n   * @param {AutocompleteRenderGroupParams} params The group to render.\n   * @returns {ReactNode}\n   */\n  renderGroup: PropTypes.func,\n  /**\n   * Render the input.\n   *\n   * @param {object} params\n   * @returns {ReactNode}\n   */\n  renderInput: PropTypes.func.isRequired,\n  /**\n   * Render the option, use `getOptionLabel` by default.\n   *\n   * @param {object} props The props to apply on the li element.\n   * @param {T} option The option to render.\n   * @param {object} state The state of the component.\n   * @returns {ReactNode}\n   */\n  renderOption: PropTypes.func,\n  /**\n   * Render the selected value.\n   *\n   * @param {T[]} value The `value` provided to the component.\n   * @param {function} getTagProps A tag props getter.\n   * @param {object} ownerState The state of the Autocomplete component.\n   * @returns {ReactNode}\n   */\n  renderTags: PropTypes.func,\n  /**\n   * If `true`, the input's text is selected on focus.\n   * It helps the user clear the selected value.\n   * @default !props.freeSolo\n   */\n  selectOnFocus: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    clearIndicator: PropTypes.object,\n    paper: PropTypes.object,\n    popper: PropTypes.object,\n    popupIndicator: PropTypes.object\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the autocomplete.\n   *\n   * The value must have reference equality with the option in order to be selected.\n   * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n   */\n  value: chainPropTypes(PropTypes.any, props => {\n    if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n      return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n    }\n    return null;\n  })\n} : void 0;\nexport default Autocomplete;", "export { default, createFilterOptions } from './Autocomplete';\nexport { default as autocompleteClasses } from './autocompleteClasses';\nexport * from './autocompleteClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAvatarUtilityClass(slot) {\n  return generateUtilityClass('MuiAvatar', slot);\n}\nconst avatarClasses = generateUtilityClasses('MuiAvatar', ['root', 'colorDefault', 'circular', 'rounded', 'square', 'img', 'fallback']);\nexport default avatarClasses;", "export { default } from './Avatar';\nexport { default as avatarClasses } from './avatarClasses';\nexport * from './avatarClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAvatarGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiAvatarGroup', slot);\n}\nconst avatarGroupClasses = generateUtilityClasses('MuiAvatarGroup', ['root', 'avatar']);\nexport default avatarGroupClasses;", "export { default } from './AvatarGroup';\nexport { default as avatarGroupClasses } from './avatarGroupClasses';\nexport * from './avatarGroupClasses';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { elementAcceptingRef } from '@mui/utils';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n  entering: {\n    opacity: 1\n  },\n  entered: {\n    opacity: 1\n  }\n};\n\n/**\n * The Fade transition is used by the [Modal](/material-ui/react-modal/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {\n  const theme = useTheme();\n  const defaultTimeout = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n      addEndListener,\n      appear = true,\n      children,\n      easing,\n      in: inProp,\n      onEnter,\n      onEntered,\n      onEntering,\n      onExit,\n      onExited,\n      onExiting,\n      style,\n      timeout = defaultTimeout,\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = Transition\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const enableStrictModeCompat = true;\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(nodeRef, children.ref, ref);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const handleEntering = normalizedTransitionCallback(onEntering);\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    reflow(node); // So the animation always start from the start.\n\n    const transitionProps = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n    node.style.transition = theme.transitions.create('opacity', transitionProps);\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const transitionProps = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n    node.style.transition = theme.transitions.create('opacity', transitionProps);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleAddEndListener = next => {\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    appear: appear,\n    in: inProp,\n    nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    timeout: timeout\n  }, other, {\n    children: (state, childProps) => {\n      return /*#__PURE__*/React.cloneElement(children, _extends({\n        style: _extends({\n          opacity: 0,\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n        }, styles[state], style, children.props.style),\n        ref: handleRef\n      }, childProps));\n    }\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Fade.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: PropTypes.bool,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nexport default Fade;", "export { default } from './Fade';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getBackdropUtilityClass(slot) {\n  return generateUtilityClass('MuiBackdrop', slot);\n}\nconst backdropClasses = generateUtilityClasses('MuiBackdrop', ['root', 'invisible']);\nexport default backdropClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"components\", \"componentsProps\", \"invisible\", \"open\", \"slotProps\", \"slots\", \"TransitionComponent\", \"transitionDuration\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Fade from '../Fade';\nimport { getBackdropUtilityClass } from './backdropClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    invisible\n  } = ownerState;\n  const slots = {\n    root: ['root', invisible && 'invisible']\n  };\n  return composeClasses(slots, getBackdropUtilityClass, classes);\n};\nconst BackdropRoot = styled('div', {\n  name: 'MuiBackdrop',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.invisible && styles.invisible];\n  }\n})(({\n  ownerState\n}) => _extends({\n  position: 'fixed',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  right: 0,\n  bottom: 0,\n  top: 0,\n  left: 0,\n  backgroundColor: 'rgba(0, 0, 0, 0.5)',\n  WebkitTapHighlightColor: 'transparent'\n}, ownerState.invisible && {\n  backgroundColor: 'transparent'\n}));\nconst Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(inProps, ref) {\n  var _slotProps$root, _ref, _slots$root;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiBackdrop'\n  });\n  const {\n      children,\n      className,\n      component = 'div',\n      components = {},\n      componentsProps = {},\n      invisible = false,\n      open,\n      slotProps = {},\n      slots = {},\n      TransitionComponent = Fade,\n      transitionDuration\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component,\n    invisible\n  });\n  const classes = useUtilityClasses(ownerState);\n  const rootSlotProps = (_slotProps$root = slotProps.root) != null ? _slotProps$root : componentsProps.root;\n  return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    in: open,\n    timeout: transitionDuration\n  }, other, {\n    children: /*#__PURE__*/_jsx(BackdropRoot, _extends({\n      \"aria-hidden\": true\n    }, rootSlotProps, {\n      as: (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : component,\n      className: clsx(classes.root, className, rootSlotProps == null ? void 0 : rootSlotProps.className),\n      ownerState: _extends({}, ownerState, rootSlotProps == null ? void 0 : rootSlotProps.ownerState),\n      classes: classes,\n      ref: ref,\n      children: children\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Backdrop.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * If `true`, the backdrop is invisible.\n   * It can be used when rendering a popover or a custom select component.\n   * @default false\n   */\n  invisible: PropTypes.bool,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Fade\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nexport default Backdrop;", "export { default } from './Backdrop';\nexport { default as backdropClasses } from './backdropClasses';\nexport * from './backdropClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getBadgeUtilityClass(slot) {\n  return generateUtilityClass('MuiBadge', slot);\n}\nconst badgeClasses = generateUtilityClasses('MuiBadge', ['root', 'badge', 'dot', 'standard', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft', 'invisible', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'overlapRectangular', 'overlapCircular',\n// TODO: v6 remove the overlap value from these class keys\n'anchorOriginTopLeftCircular', 'anchorOriginTopLeftRectangular', 'anchorOriginTopRightCircular', 'anchorOriginTopRightRectangular', 'anchorOriginBottomLeftCircular', 'anchorOriginBottomLeftRectangular', 'anchorOriginBottomRightCircular', 'anchorOriginBottomRightRectangular']);\nexport default badgeClasses;", "export { default } from './Badge';\nexport { default as badgeClasses } from './badgeClasses';\nexport * from './badgeClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getBottomNavigationUtilityClass(slot) {\n  return generateUtilityClass('MuiBottomNavigation', slot);\n}\nconst bottomNavigationClasses = generateUtilityClasses('MuiBottomNavigation', ['root']);\nexport default bottomNavigationClasses;", "export { default } from './BottomNavigation';\nexport { default as bottomNavigationClasses } from './bottomNavigationClasses';\nexport * from './bottomNavigationClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getBottomNavigationActionUtilityClass(slot) {\n  return generateUtilityClass('MuiBottomNavigationAction', slot);\n}\nconst bottomNavigationActionClasses = generateUtilityClasses('MuiBottomNavigationAction', ['root', 'iconOnly', 'selected', 'label']);\nexport default bottomNavigationActionClasses;", "export { default } from './BottomNavigationAction';\nexport { default as bottomNavigationActionClasses } from './bottomNavigationActionClasses';\nexport * from './bottomNavigationActionClasses';", "// eslint-disable-next-line import/prefer-default-export\nexport { unstable_ClassNameGenerator } from '@mui/utils';", "import { createBox } from '@mui/system';\nimport PropTypes from 'prop-types';\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '../className';\nimport { createTheme } from '../styles';\nconst defaultTheme = createTheme();\nconst Box = createBox({\n  defaultTheme,\n  defaultClassName: 'MuiBox-root',\n  generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;", "export { default } from './Box';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getBreadcrumbsUtilityClass(slot) {\n  return generateUtilityClass('MuiBreadcrumbs', slot);\n}\nconst breadcrumbsClasses = generateUtilityClasses('MuiBreadcrumbs', ['root', 'ol', 'li', 'separator']);\nexport default breadcrumbsClasses;", "export { default } from './Breadcrumbs';\nexport { default as breadcrumbsClasses } from './breadcrumbsClasses';\nexport * from './breadcrumbsClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiButton', slot);\n}\nconst buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);\nexport default buttonClasses;", "import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  ButtonGroupContext.displayName = 'ButtonGroupContext';\n}\nexport default ButtonGroupContext;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"color\", \"component\", \"className\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"endIcon\", \"focusVisibleClassName\", \"fullWidth\", \"size\", \"startIcon\", \"type\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { internal_resolveProps as resolveProps } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport buttonClasses, { getButtonUtilityClass } from './buttonClasses';\nimport ButtonGroupContext from '../ButtonGroup/ButtonGroupContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    disableElevation,\n    fullWidth,\n    size,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `${variant}${capitalize(color)}`, `size${capitalize(size)}`, `${variant}Size${capitalize(size)}`, color === 'inherit' && 'colorInherit', disableElevation && 'disableElevation', fullWidth && 'fullWidth'],\n    label: ['label'],\n    startIcon: ['startIcon', `iconSize${capitalize(size)}`],\n    endIcon: ['endIcon', `iconSize${capitalize(size)}`]\n  };\n  const composedClasses = composeClasses(slots, getButtonUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst commonIconStyles = ownerState => _extends({}, ownerState.size === 'small' && {\n  '& > *:nth-of-type(1)': {\n    fontSize: 18\n  }\n}, ownerState.size === 'medium' && {\n  '& > *:nth-of-type(1)': {\n    fontSize: 20\n  }\n}, ownerState.size === 'large' && {\n  '& > *:nth-of-type(1)': {\n    fontSize: 22\n  }\n});\nconst ButtonRoot = styled(ButtonBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color)}`], styles[`size${capitalize(ownerState.size)}`], styles[`${ownerState.variant}Size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, ownerState.disableElevation && styles.disableElevation, ownerState.fullWidth && styles.fullWidth];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$palette$getCon, _theme$palette;\n  return _extends({}, theme.typography.button, {\n    minWidth: 64,\n    padding: '6px 16px',\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color', 'color'], {\n      duration: theme.transitions.duration.short\n    }),\n    '&:hover': _extends({\n      textDecoration: 'none',\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n      border: `1px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    }, ownerState.variant === 'contained' && {\n      backgroundColor: (theme.vars || theme).palette.grey.A100,\n      boxShadow: (theme.vars || theme).shadows[4],\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        boxShadow: (theme.vars || theme).shadows[2],\n        backgroundColor: (theme.vars || theme).palette.grey[300]\n      }\n    }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n      backgroundColor: (theme.vars || theme).palette[ownerState.color].dark,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n      }\n    }),\n    '&:active': _extends({}, ownerState.variant === 'contained' && {\n      boxShadow: (theme.vars || theme).shadows[8]\n    }),\n    [`&.${buttonClasses.focusVisible}`]: _extends({}, ownerState.variant === 'contained' && {\n      boxShadow: (theme.vars || theme).shadows[6]\n    }),\n    [`&.${buttonClasses.disabled}`]: _extends({\n      color: (theme.vars || theme).palette.action.disabled\n    }, ownerState.variant === 'outlined' && {\n      border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`\n    }, ownerState.variant === 'contained' && {\n      color: (theme.vars || theme).palette.action.disabled,\n      boxShadow: (theme.vars || theme).shadows[0],\n      backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n    })\n  }, ownerState.variant === 'text' && {\n    padding: '6px 8px'\n  }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n    color: (theme.vars || theme).palette[ownerState.color].main\n  }, ownerState.variant === 'outlined' && {\n    padding: '5px 15px',\n    border: '1px solid currentColor'\n  }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n    color: (theme.vars || theme).palette[ownerState.color].main,\n    border: theme.vars ? `1px solid rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.5)` : `1px solid ${alpha(theme.palette[ownerState.color].main, 0.5)}`\n  }, ownerState.variant === 'contained' && {\n    color: theme.vars ?\n    // this is safe because grey does not change between default light/dark mode\n    theme.vars.palette.text.primary : (_theme$palette$getCon = (_theme$palette = theme.palette).getContrastText) == null ? void 0 : _theme$palette$getCon.call(_theme$palette, theme.palette.grey[300]),\n    backgroundColor: (theme.vars || theme).palette.grey[300],\n    boxShadow: (theme.vars || theme).shadows[2]\n  }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n    color: (theme.vars || theme).palette[ownerState.color].contrastText,\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n  }, ownerState.color === 'inherit' && {\n    color: 'inherit',\n    borderColor: 'currentColor'\n  }, ownerState.size === 'small' && ownerState.variant === 'text' && {\n    padding: '4px 5px',\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && ownerState.variant === 'text' && {\n    padding: '8px 11px',\n    fontSize: theme.typography.pxToRem(15)\n  }, ownerState.size === 'small' && ownerState.variant === 'outlined' && {\n    padding: '3px 9px',\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && ownerState.variant === 'outlined' && {\n    padding: '7px 21px',\n    fontSize: theme.typography.pxToRem(15)\n  }, ownerState.size === 'small' && ownerState.variant === 'contained' && {\n    padding: '4px 10px',\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && ownerState.variant === 'contained' && {\n    padding: '8px 22px',\n    fontSize: theme.typography.pxToRem(15)\n  }, ownerState.fullWidth && {\n    width: '100%'\n  });\n}, ({\n  ownerState\n}) => ownerState.disableElevation && {\n  boxShadow: 'none',\n  '&:hover': {\n    boxShadow: 'none'\n  },\n  [`&.${buttonClasses.focusVisible}`]: {\n    boxShadow: 'none'\n  },\n  '&:active': {\n    boxShadow: 'none'\n  },\n  [`&.${buttonClasses.disabled}`]: {\n    boxShadow: 'none'\n  }\n});\nconst ButtonStartIcon = styled('span', {\n  name: 'MuiButton',\n  slot: 'StartIcon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.startIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'inherit',\n  marginRight: 8,\n  marginLeft: -4\n}, ownerState.size === 'small' && {\n  marginLeft: -2\n}, commonIconStyles(ownerState)));\nconst ButtonEndIcon = styled('span', {\n  name: 'MuiButton',\n  slot: 'EndIcon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.endIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'inherit',\n  marginRight: -4,\n  marginLeft: 8\n}, ownerState.size === 'small' && {\n  marginRight: -2\n}, commonIconStyles(ownerState)));\nconst Button = /*#__PURE__*/React.forwardRef(function Button(inProps, ref) {\n  // props priority: `inProps` > `contextProps` > `themeDefaultProps`\n  const contextProps = React.useContext(ButtonGroupContext);\n  const resolvedProps = resolveProps(contextProps, inProps);\n  const props = useThemeProps({\n    props: resolvedProps,\n    name: 'MuiButton'\n  });\n  const {\n      children,\n      color = 'primary',\n      component = 'button',\n      className,\n      disabled = false,\n      disableElevation = false,\n      disableFocusRipple = false,\n      endIcon: endIconProp,\n      focusVisibleClassName,\n      fullWidth = false,\n      size = 'medium',\n      startIcon: startIconProp,\n      type,\n      variant = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    disabled,\n    disableElevation,\n    disableFocusRipple,\n    fullWidth,\n    size,\n    type,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const startIcon = startIconProp && /*#__PURE__*/_jsx(ButtonStartIcon, {\n    className: classes.startIcon,\n    ownerState: ownerState,\n    children: startIconProp\n  });\n  const endIcon = endIconProp && /*#__PURE__*/_jsx(ButtonEndIcon, {\n    className: classes.endIcon,\n    ownerState: ownerState,\n    children: endIconProp\n  });\n  return /*#__PURE__*/_jsxs(ButtonRoot, _extends({\n    ownerState: ownerState,\n    className: clsx(contextProps.className, classes.root, className),\n    component: component,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    ref: ref,\n    type: type\n  }, other, {\n    classes: classes,\n    children: [startIcon, children, endIcon]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Button.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, no elevation is used.\n   * @default false\n   */\n  disableElevation: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * \u26A0\uFE0F Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * Element placed after the children.\n   */\n  endIcon: PropTypes.node,\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * If `true`, the button will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: PropTypes.string,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * Element placed before the children.\n   */\n  startIcon: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @ignore\n   */\n  type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string]),\n  /**\n   * The variant to use.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['contained', 'outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default Button;", "export { default } from './Button';\nexport { default as buttonClasses } from './buttonClasses';\nexport * from './buttonClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getButtonGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiButtonGroup', slot);\n}\nconst buttonGroupClasses = generateUtilityClasses('MuiButtonGroup', ['root', 'contained', 'outlined', 'text', 'disableElevation', 'disabled', 'fullWidth', 'vertical', 'grouped', 'groupedHorizontal', 'groupedVertical', 'groupedText', 'groupedTextHorizontal', 'groupedTextVertical', 'groupedTextPrimary', 'groupedTextSecondary', 'groupedOutlined', 'groupedOutlinedHorizontal', 'groupedOutlinedVertical', 'groupedOutlinedPrimary', 'groupedOutlinedSecondary', 'groupedContained', 'groupedContainedHorizontal', 'groupedContainedVertical', 'groupedContainedPrimary', 'groupedContainedSecondary']);\nexport default buttonGroupClasses;", "export { default } from './ButtonGroup';\nexport { default as buttonGroupClasses } from './buttonGroupClasses';\nexport * from './buttonGroupClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCardUtilityClass(slot) {\n  return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;", "export { default } from './Card';\nexport { default as cardClasses } from './cardClasses';\nexport * from './cardClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCardActionAreaUtilityClass(slot) {\n  return generateUtilityClass('MuiCardActionArea', slot);\n}\nconst cardActionAreaClasses = generateUtilityClasses('MuiCardActionArea', ['root', 'focusVisible', 'focusHighlight']);\nexport default cardActionAreaClasses;", "export { default } from './CardActionArea';\nexport { default as cardActionAreaClasses } from './cardActionAreaClasses';\nexport * from './cardActionAreaClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCardActionsUtilityClass(slot) {\n  return generateUtilityClass('MuiCardActions', slot);\n}\nconst cardActionsClasses = generateUtilityClasses('MuiCardActions', ['root', 'spacing']);\nexport default cardActionsClasses;", "export { default } from './CardActions';\nexport { default as cardActionsClasses } from './cardActionsClasses';\nexport * from './cardActionsClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCardContentUtilityClass(slot) {\n  return generateUtilityClass('MuiCardContent', slot);\n}\nconst cardContentClasses = generateUtilityClasses('MuiCardContent', ['root']);\nexport default cardContentClasses;", "export { default } from './CardContent';\nexport { default as cardContentClasses } from './cardContentClasses';\nexport * from './cardContentClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCardHeaderUtilityClass(slot) {\n  return generateUtilityClass('MuiCardHeader', slot);\n}\nconst cardHeaderClasses = generateUtilityClasses('MuiCardHeader', ['root', 'avatar', 'action', 'content', 'title', 'subheader']);\nexport default cardHeaderClasses;", "export { default } from './CardHeader';\nexport { default as cardHeaderClasses } from './cardHeaderClasses';\nexport * from './cardHeaderClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCardMediaUtilityClass(slot) {\n  return generateUtilityClass('MuiCardMedia', slot);\n}\nconst cardMediaClasses = generateUtilityClasses('MuiCardMedia', ['root', 'media', 'img']);\nexport default cardMediaClasses;", "export { default } from './CardMedia';\nexport { default as cardMediaClasses } from './cardMediaClasses';\nexport * from './cardMediaClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSwitchBaseUtilityClass(slot) {\n  return generateUtilityClass('PrivateSwitchBase', slot);\n}\nconst switchBaseClasses = generateUtilityClasses('PrivateSwitchBase', ['root', 'checked', 'disabled', 'input', 'edgeStart', 'edgeEnd']);\nexport default switchBaseClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"checked\", \"checkedIcon\", \"className\", \"defaultChecked\", \"disabled\", \"disableFocusRipple\", \"edge\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"readOnly\", \"required\", \"tabIndex\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport useControlled from '../utils/useControlled';\nimport useFormControl from '../FormControl/useFormControl';\nimport ButtonBase from '../ButtonBase';\nimport { getSwitchBaseUtilityClass } from './switchBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    checked,\n    disabled,\n    edge\n  } = ownerState;\n  const slots = {\n    root: ['root', checked && 'checked', disabled && 'disabled', edge && `edge${capitalize(edge)}`],\n    input: ['input']\n  };\n  return composeClasses(slots, getSwitchBaseUtilityClass, classes);\n};\nconst SwitchBaseRoot = styled(ButtonBase)(({\n  ownerState\n}) => _extends({\n  padding: 9,\n  borderRadius: '50%'\n}, ownerState.edge === 'start' && {\n  marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n  marginRight: ownerState.size === 'small' ? -3 : -12\n}));\nconst SwitchBaseInput = styled('input')({\n  cursor: 'inherit',\n  position: 'absolute',\n  opacity: 0,\n  width: '100%',\n  height: '100%',\n  top: 0,\n  left: 0,\n  margin: 0,\n  padding: 0,\n  zIndex: 1\n});\n\n/**\n * @ignore - internal component.\n */\nconst SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) {\n  const {\n      autoFocus,\n      checked: checkedProp,\n      checkedIcon,\n      className,\n      defaultChecked,\n      disabled: disabledProp,\n      disableFocusRipple = false,\n      edge = false,\n      icon,\n      id,\n      inputProps,\n      inputRef,\n      name,\n      onBlur,\n      onChange,\n      onFocus,\n      readOnly,\n      required = false,\n      tabIndex,\n      type,\n      value\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [checked, setCheckedState] = useControlled({\n    controlled: checkedProp,\n    default: Boolean(defaultChecked),\n    name: 'SwitchBase',\n    state: 'checked'\n  });\n  const muiFormControl = useFormControl();\n  const handleFocus = event => {\n    if (onFocus) {\n      onFocus(event);\n    }\n    if (muiFormControl && muiFormControl.onFocus) {\n      muiFormControl.onFocus(event);\n    }\n  };\n  const handleBlur = event => {\n    if (onBlur) {\n      onBlur(event);\n    }\n    if (muiFormControl && muiFormControl.onBlur) {\n      muiFormControl.onBlur(event);\n    }\n  };\n  const handleInputChange = event => {\n    // Workaround for https://github.com/facebook/react/issues/9023\n    if (event.nativeEvent.defaultPrevented) {\n      return;\n    }\n    const newChecked = event.target.checked;\n    setCheckedState(newChecked);\n    if (onChange) {\n      // TODO v6: remove the second argument.\n      onChange(event, newChecked);\n    }\n  };\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  const hasLabelFor = type === 'checkbox' || type === 'radio';\n  const ownerState = _extends({}, props, {\n    checked,\n    disabled,\n    disableFocusRipple,\n    edge\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(SwitchBaseRoot, _extends({\n    component: \"span\",\n    className: clsx(classes.root, className),\n    centerRipple: true,\n    focusRipple: !disableFocusRipple,\n    disabled: disabled,\n    tabIndex: null,\n    role: undefined,\n    onFocus: handleFocus,\n    onBlur: handleBlur,\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    children: [/*#__PURE__*/_jsx(SwitchBaseInput, _extends({\n      autoFocus: autoFocus,\n      checked: checkedProp,\n      defaultChecked: defaultChecked,\n      className: classes.input,\n      disabled: disabled,\n      id: hasLabelFor ? id : undefined,\n      name: name,\n      onChange: handleInputChange,\n      readOnly: readOnly,\n      ref: inputRef,\n      required: required,\n      ownerState: ownerState,\n      tabIndex: tabIndex,\n      type: type\n    }, type === 'checkbox' && value === undefined ? {} : {\n      value\n    }, inputProps)), checked ? checkedIcon : icon]\n  }));\n});\n\n// NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\nprocess.env.NODE_ENV !== \"production\" ? SwitchBase.propTypes = {\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   */\n  checkedIcon: PropTypes.node.isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * @ignore\n   */\n  defaultChecked: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: PropTypes.oneOf(['end', 'start', false]),\n  /**\n   * The icon to display when the component is unchecked.\n   */\n  icon: PropTypes.node.isRequired,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /*\n   * @ignore\n   */\n  name: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   */\n  required: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.object,\n  /**\n   * @ignore\n   */\n  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The input component prop `type`.\n   */\n  type: PropTypes.string.isRequired,\n  /**\n   * The value of the component.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default SwitchBase;", "import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');", "import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');", "import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n  return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);\nexport default checkboxClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"size\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport SwitchBase from '../internal/SwitchBase';\nimport CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    indeterminate,\n    color\n  } = ownerState;\n  const slots = {\n    root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`]\n  };\n  const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiCheckbox',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.indeterminate && styles.indeterminate, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  color: (theme.vars || theme).palette.text.secondary\n}, !ownerState.disableRipple && {\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${ownerState.color === 'default' ? theme.vars.palette.action.activeChannel : theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  }\n}, ownerState.color !== 'default' && {\n  [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n    color: (theme.vars || theme).palette[ownerState.color].main\n  },\n  [`&.${checkboxClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n  var _icon$props$fontSize, _indeterminateIcon$pr;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiCheckbox'\n  });\n  const {\n      checkedIcon = defaultCheckedIcon,\n      color = 'primary',\n      icon: iconProp = defaultIcon,\n      indeterminate = false,\n      indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n      inputProps,\n      size = 'medium',\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const icon = indeterminate ? indeterminateIconProp : iconProp;\n  const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n  const ownerState = _extends({}, props, {\n    color,\n    indeterminate,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n    type: \"checkbox\",\n    inputProps: _extends({\n      'data-indeterminate': indeterminate\n    }, inputProps),\n    icon: /*#__PURE__*/React.cloneElement(icon, {\n      fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n    }),\n    checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n      fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n    }),\n    ownerState: ownerState,\n    ref: ref,\n    className: clsx(classes.root, className)\n  }, other, {\n    classes: classes\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   * @default <CheckBoxIcon />\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The default checked state. Use when the component is not controlled.\n   */\n  defaultChecked: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <CheckBoxOutlineBlankIcon />\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * If `true`, the component appears indeterminate.\n   * This does not set the native input element to indeterminate due\n   * to inconsistent behavior across browsers.\n   * However, we set a `data-indeterminate` attribute on the `input`.\n   * @default false\n   */\n  indeterminate: PropTypes.bool,\n  /**\n   * The icon to display when the component is indeterminate.\n   * @default <IndeterminateCheckBoxIcon />\n   */\n  indeterminateIcon: PropTypes.node,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense checkbox styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   * The browser uses \"on\" as the default value.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Checkbox;", "export { default } from './Checkbox';\nexport { default as checkboxClasses } from './checkboxClasses';\nexport * from './checkboxClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"disableShrink\", \"size\", \"style\", \"thickness\", \"value\", \"variant\"];\nlet _ = t => t,\n  _t,\n  _t2,\n  _t3,\n  _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { keyframes, css } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getCircularProgressUtilityClass } from './circularProgressClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes(_t || (_t = _`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`));\nconst circularDashKeyframe = keyframes(_t2 || (_t2 = _`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`));\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  display: 'inline-block'\n}, ownerState.variant === 'determinate' && {\n  transition: theme.transitions.create('transform')\n}, ownerState.color !== 'inherit' && {\n  color: (theme.vars || theme).palette[ownerState.color].main\n}), ({\n  ownerState\n}) => ownerState.variant === 'indeterminate' && css(_t3 || (_t3 = _`\n      animation: ${0} 1.4s linear infinite;\n    `), circularRotateKeyframe));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\n\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  stroke: 'currentColor'\n}, ownerState.variant === 'determinate' && {\n  transition: theme.transitions.create('stroke-dashoffset')\n}, ownerState.variant === 'indeterminate' && {\n  // Some default value that looks fine waiting for the animation to kicks in.\n  strokeDasharray: '80px, 200px',\n  strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n}), ({\n  ownerState\n}) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink && css(_t4 || (_t4 = _`\n      animation: ${0} 1.4s ease-in-out infinite;\n    `), circularDashKeyframe));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n      className,\n      color = 'primary',\n      disableShrink = false,\n      size = 40,\n      style,\n      thickness = 3.6,\n      value = 0,\n      variant = 'indeterminate'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, _extends({\n    className: clsx(classes.root, className),\n    style: _extends({\n      width: size,\n      height: size\n    }, rootStyle, style),\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\"\n  }, rootProps, other, {\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, e.g '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;", "export { default } from './CircularProgress';\nexport { default as circularProgressClasses } from './circularProgressClasses';\nexport * from './circularProgressClasses';", "export { default } from '@mui/base/ClickAwayListener';\nexport * from '@mui/base/ClickAwayListener';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getContainerUtilityClass(slot) {\n  return generateUtilityClass('MuiContainer', slot);\n}\nconst containerClasses = generateUtilityClasses('MuiContainer', ['root', 'disableGutters', 'fixed', 'maxWidthXs', 'maxWidthSm', 'maxWidthMd', 'maxWidthLg', 'maxWidthXl']);\nexport default containerClasses;", "export { default } from './Container';\nexport { default as containerClasses } from './containerClasses';\nexport * from './containerClasses';", "export { default } from './CssBaseline';", "// track, thumb and active are derieved from macOS 10.15.7\nconst scrollBar = {\n  track: '#2b2b2b',\n  thumb: '#6b6b6b',\n  active: '#959595'\n};\nexport default function darkScrollbar(options = scrollBar) {\n  return {\n    scrollbarColor: `${options.thumb} ${options.track}`,\n    '&::-webkit-scrollbar, & *::-webkit-scrollbar': {\n      backgroundColor: options.track\n    },\n    '&::-webkit-scrollbar-thumb, & *::-webkit-scrollbar-thumb': {\n      borderRadius: 8,\n      backgroundColor: options.thumb,\n      minHeight: 24,\n      border: `3px solid ${options.track}`\n    },\n    '&::-webkit-scrollbar-thumb:focus, & *::-webkit-scrollbar-thumb:focus': {\n      backgroundColor: options.active\n    },\n    '&::-webkit-scrollbar-thumb:active, & *::-webkit-scrollbar-thumb:active': {\n      backgroundColor: options.active\n    },\n    '&::-webkit-scrollbar-thumb:hover, & *::-webkit-scrollbar-thumb:hover': {\n      backgroundColor: options.active\n    },\n    '&::-webkit-scrollbar-corner, & *::-webkit-scrollbar-corner': {\n      backgroundColor: options.track\n    }\n  };\n}", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"BackdropComponent\", \"BackdropProps\", \"closeAfterTransition\", \"children\", \"component\", \"components\", \"componentsProps\", \"disableAutoFocus\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"slotProps\", \"slots\", \"theme\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport ModalUnstyled, { modalUnstyledClasses } from '@mui/base/ModalUnstyled';\nimport { isHostComponent, resolveComponentProps } from '@mui/base/utils';\nimport { elementAcceptingRef, HTMLElementType } from '@mui/utils';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Backdrop from '../Backdrop';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const modalClasses = modalUnstyledClasses;\nconst extendUtilityClasses = ownerState => {\n  return ownerState.classes;\n};\nconst ModalRoot = styled('div', {\n  name: 'MuiModal',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.open && ownerState.exited && styles.hidden];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  position: 'fixed',\n  zIndex: (theme.vars || theme).zIndex.modal,\n  right: 0,\n  bottom: 0,\n  top: 0,\n  left: 0\n}, !ownerState.open && ownerState.exited && {\n  visibility: 'hidden'\n}));\nconst ModalBackdrop = styled(Backdrop, {\n  name: 'MuiModal',\n  slot: 'Backdrop',\n  overridesResolver: (props, styles) => {\n    return styles.backdrop;\n  }\n})({\n  zIndex: -1\n});\n\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * - [Dialog](/material-ui/api/dialog/)\n * - [Drawer](/material-ui/api/drawer/)\n * - [Menu](/material-ui/api/menu/)\n * - [Popover](/material-ui/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](/material-ui/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n */\nconst Modal = /*#__PURE__*/React.forwardRef(function Modal(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$backdrop, _slotProps$root, _slotProps$backdrop;\n  const props = useThemeProps({\n    name: 'MuiModal',\n    props: inProps\n  });\n  const {\n      BackdropComponent = ModalBackdrop,\n      BackdropProps,\n      closeAfterTransition = false,\n      children,\n      component,\n      components = {},\n      componentsProps = {},\n      disableAutoFocus = false,\n      disableEnforceFocus = false,\n      disableEscapeKeyDown = false,\n      disablePortal = false,\n      disableRestoreFocus = false,\n      disableScrollLock = false,\n      hideBackdrop = false,\n      keepMounted = false,\n      slotProps,\n      slots,\n      // eslint-disable-next-line react/prop-types\n      theme\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [exited, setExited] = React.useState(true);\n  const commonProps = {\n    closeAfterTransition,\n    disableAutoFocus,\n    disableEnforceFocus,\n    disableEscapeKeyDown,\n    disablePortal,\n    disableRestoreFocus,\n    disableScrollLock,\n    hideBackdrop,\n    keepMounted\n  };\n  const ownerState = _extends({}, props, commonProps, {\n    exited\n  });\n  const classes = extendUtilityClasses(ownerState);\n  const RootSlot = (_ref = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref : ModalRoot;\n  const BackdropSlot = (_ref2 = (_slots$backdrop = slots == null ? void 0 : slots.backdrop) != null ? _slots$backdrop : components.Backdrop) != null ? _ref2 : BackdropComponent;\n  const rootSlotProps = (_slotProps$root = slotProps == null ? void 0 : slotProps.root) != null ? _slotProps$root : componentsProps.root;\n  const backdropSlotProps = (_slotProps$backdrop = slotProps == null ? void 0 : slotProps.backdrop) != null ? _slotProps$backdrop : componentsProps.backdrop;\n  return /*#__PURE__*/_jsx(ModalUnstyled, _extends({\n    slots: {\n      root: RootSlot,\n      backdrop: BackdropSlot\n    },\n    slotProps: {\n      root: () => _extends({}, resolveComponentProps(rootSlotProps, ownerState), !isHostComponent(RootSlot) && {\n        as: component,\n        theme\n      }),\n      backdrop: () => _extends({}, BackdropProps, resolveComponentProps(backdropSlotProps, ownerState))\n    },\n    onTransitionEnter: () => setExited(false),\n    onTransitionExited: () => setExited(true),\n    ref: ref\n  }, other, {\n    classes: classes\n  }, commonProps, {\n    children: children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Modal.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * A backdrop component. This prop enables custom backdrop rendering.\n   * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n   * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n   * @default styled(Backdrop, {\n   *   name: 'MuiModal',\n   *   slot: 'Backdrop',\n   *   overridesResolver: (props, styles) => {\n   *     return styles.backdrop;\n   *   },\n   * })({\n   *   zIndex: -1,\n   * })\n   */\n  BackdropComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`Backdrop`](/material-ui/api/backdrop/) element.\n   * @deprecated Use `slotProps.backdrop` instead.\n   */\n  BackdropProps: PropTypes.object,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * When set to true the Modal waits until a nested Transition is completed before closing.\n   * @default false\n   */\n  closeAfterTransition: PropTypes.bool,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Backdrop: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * If `true`, the modal will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableAutoFocus: PropTypes.bool,\n  /**\n   * If `true`, the modal will not prevent focus from leaving the modal while open.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableEnforceFocus: PropTypes.bool,\n  /**\n   * If `true`, hitting escape will not fire the `onClose` callback.\n   * @default false\n   */\n  disableEscapeKeyDown: PropTypes.bool,\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * If `true`, the modal will not restore focus to previously focused element once\n   * modal is hidden or unmounted.\n   * @default false\n   */\n  disableRestoreFocus: PropTypes.bool,\n  /**\n   * Disable the scroll lock behavior.\n   * @default false\n   */\n  disableScrollLock: PropTypes.bool,\n  /**\n   * If `true`, the backdrop is not rendered.\n   * @default false\n   */\n  hideBackdrop: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Modal.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Callback fired when the backdrop is clicked.\n   * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n   */\n  onBackdropClick: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The props used for each slot inside the Modal.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Modal.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    backdrop: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Modal;", "export * from '@mui/base/ModalUnstyled';\nexport { default } from './Modal';\nexport * from './Modal';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogUtilityClass(slot) {\n  return generateUtilityClass('MuiDialog', slot);\n}\nconst dialogClasses = generateUtilityClasses('MuiDialog', ['root', 'scrollPaper', 'scrollBody', 'container', 'paper', 'paperScrollPaper', 'paperScrollBody', 'paperWidthFalse', 'paperWidthXs', 'paperWidthSm', 'paperWidthMd', 'paperWidthLg', 'paperWidthXl', 'paperFullWidth', 'paperFullScreen']);\nexport default dialogClasses;", "export { default } from './Dialog';\nexport { default as dialogClasses } from './dialogClasses';\nexport * from './dialogClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogActionsUtilityClass(slot) {\n  return generateUtilityClass('MuiDialogActions', slot);\n}\nconst dialogActionsClasses = generateUtilityClasses('MuiDialogActions', ['root', 'spacing']);\nexport default dialogActionsClasses;", "export { default } from './DialogActions';\nexport { default as dialogActionsClasses } from './dialogActionsClasses';\nexport * from './dialogActionsClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogContentUtilityClass(slot) {\n  return generateUtilityClass('MuiDialogContent', slot);\n}\nconst dialogContentClasses = generateUtilityClasses('MuiDialogContent', ['root', 'dividers']);\nexport default dialogContentClasses;", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogTitleUtilityClass(slot) {\n  return generateUtilityClass('MuiDialogTitle', slot);\n}\nconst dialogTitleClasses = generateUtilityClasses('MuiDialogTitle', ['root']);\nexport default dialogTitleClasses;", "export { default } from './DialogContent';\nexport { default as dialogContentClasses } from './dialogContentClasses';\nexport * from './dialogContentClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogContentTextUtilityClass(slot) {\n  return generateUtilityClass('MuiDialogContentText', slot);\n}\nconst dialogContentTextClasses = generateUtilityClasses('MuiDialogContentText', ['root']);\nexport default dialogContentTextClasses;", "export { default } from './DialogContentText';\nexport { default as dialogContentTextClasses } from './dialogContentTextClasses';\nexport * from './dialogContentTextClasses';", "export { default } from './DialogTitle';\nexport { default as dialogTitleClasses } from './dialogTitleClasses';\nexport * from './dialogTitleClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDividerUtilityClass(slot) {\n  return generateUtilityClass('MuiDivider', slot);\n}\nconst dividerClasses = generateUtilityClasses('MuiDivider', ['root', 'absolute', 'fullWidth', 'inset', 'middle', 'flexItem', 'light', 'vertical', 'withChildren', 'withChildrenVertical', 'textAlignRight', 'textAlignLeft', 'wrapper', 'wrapperVertical']);\nexport default dividerClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"absolute\", \"children\", \"className\", \"component\", \"flexItem\", \"light\", \"orientation\", \"role\", \"textAlign\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDividerUtilityClass } from './dividerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    absolute,\n    children,\n    classes,\n    flexItem,\n    light,\n    orientation,\n    textAlign,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', absolute && 'absolute', variant, light && 'light', orientation === 'vertical' && 'vertical', flexItem && 'flexItem', children && 'withChildren', children && orientation === 'vertical' && 'withChildrenVertical', textAlign === 'right' && orientation !== 'vertical' && 'textAlignRight', textAlign === 'left' && orientation !== 'vertical' && 'textAlignLeft'],\n    wrapper: ['wrapper', orientation === 'vertical' && 'wrapperVertical']\n  };\n  return composeClasses(slots, getDividerUtilityClass, classes);\n};\nconst DividerRoot = styled('div', {\n  name: 'MuiDivider',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.absolute && styles.absolute, styles[ownerState.variant], ownerState.light && styles.light, ownerState.orientation === 'vertical' && styles.vertical, ownerState.flexItem && styles.flexItem, ownerState.children && styles.withChildren, ownerState.children && ownerState.orientation === 'vertical' && styles.withChildrenVertical, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && styles.textAlignRight, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && styles.textAlignLeft];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  margin: 0,\n  // Reset browser default style.\n  flexShrink: 0,\n  borderWidth: 0,\n  borderStyle: 'solid',\n  borderColor: (theme.vars || theme).palette.divider,\n  borderBottomWidth: 'thin'\n}, ownerState.absolute && {\n  position: 'absolute',\n  bottom: 0,\n  left: 0,\n  width: '100%'\n}, ownerState.light && {\n  borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : alpha(theme.palette.divider, 0.08)\n}, ownerState.variant === 'inset' && {\n  marginLeft: 72\n}, ownerState.variant === 'middle' && ownerState.orientation === 'horizontal' && {\n  marginLeft: theme.spacing(2),\n  marginRight: theme.spacing(2)\n}, ownerState.variant === 'middle' && ownerState.orientation === 'vertical' && {\n  marginTop: theme.spacing(1),\n  marginBottom: theme.spacing(1)\n}, ownerState.orientation === 'vertical' && {\n  height: '100%',\n  borderBottomWidth: 0,\n  borderRightWidth: 'thin'\n}, ownerState.flexItem && {\n  alignSelf: 'stretch',\n  height: 'auto'\n}), ({\n  theme,\n  ownerState\n}) => _extends({}, ownerState.children && {\n  display: 'flex',\n  whiteSpace: 'nowrap',\n  textAlign: 'center',\n  border: 0,\n  '&::before, &::after': {\n    position: 'relative',\n    width: '100%',\n    borderTop: `thin solid ${(theme.vars || theme).palette.divider}`,\n    top: '50%',\n    content: '\"\"',\n    transform: 'translateY(50%)'\n  }\n}), ({\n  theme,\n  ownerState\n}) => _extends({}, ownerState.children && ownerState.orientation === 'vertical' && {\n  flexDirection: 'column',\n  '&::before, &::after': {\n    height: '100%',\n    top: '0%',\n    left: '50%',\n    borderTop: 0,\n    borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`,\n    transform: 'translateX(0%)'\n  }\n}), ({\n  ownerState\n}) => _extends({}, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && {\n  '&::before': {\n    width: '90%'\n  },\n  '&::after': {\n    width: '10%'\n  }\n}, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && {\n  '&::before': {\n    width: '10%'\n  },\n  '&::after': {\n    width: '90%'\n  }\n}));\nconst DividerWrapper = styled('span', {\n  name: 'MuiDivider',\n  slot: 'Wrapper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.wrapper, ownerState.orientation === 'vertical' && styles.wrapperVertical];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  display: 'inline-block',\n  paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n  paddingRight: `calc(${theme.spacing(1)} * 1.2)`\n}, ownerState.orientation === 'vertical' && {\n  paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n  paddingBottom: `calc(${theme.spacing(1)} * 1.2)`\n}));\nconst Divider = /*#__PURE__*/React.forwardRef(function Divider(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiDivider'\n  });\n  const {\n      absolute = false,\n      children,\n      className,\n      component = children ? 'div' : 'hr',\n      flexItem = false,\n      light = false,\n      orientation = 'horizontal',\n      role = component !== 'hr' ? 'separator' : undefined,\n      textAlign = 'center',\n      variant = 'fullWidth'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    absolute,\n    component,\n    flexItem,\n    light,\n    orientation,\n    role,\n    textAlign,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(DividerRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    role: role,\n    ref: ref,\n    ownerState: ownerState\n  }, other, {\n    children: children ? /*#__PURE__*/_jsx(DividerWrapper, {\n      className: classes.wrapper,\n      ownerState: ownerState,\n      children: children\n    }) : null\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Divider.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Absolutely position the element.\n   * @default false\n   */\n  absolute: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, a vertical divider will have the correct height when used in flex container.\n   * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n   * @default false\n   */\n  flexItem: PropTypes.bool,\n  /**\n   * If `true`, the divider will have a lighter color.\n   * @default false\n   */\n  light: PropTypes.bool,\n  /**\n   * The component orientation.\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * @ignore\n   */\n  role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The text alignment.\n   * @default 'center'\n   */\n  textAlign: PropTypes.oneOf(['center', 'left', 'right']),\n  /**\n   * The variant to use.\n   * @default 'fullWidth'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['fullWidth', 'inset', 'middle']), PropTypes.string])\n} : void 0;\nexport default Divider;", "export { default } from './Divider';\nexport { default as dividerClasses } from './dividerClasses';\nexport * from './dividerClasses';", "export { default } from './Slide';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDrawerUtilityClass(slot) {\n  return generateUtilityClass('MuiDrawer', slot);\n}\nconst drawerClasses = generateUtilityClasses('MuiDrawer', ['root', 'docked', 'paper', 'paperAnchorLeft', 'paperAnchorRight', 'paperAnchorTop', 'paperAnchorBottom', 'paperAnchorDockedLeft', 'paperAnchorDockedRight', 'paperAnchorDockedTop', 'paperAnchorDockedBottom', 'modal']);\nexport default drawerClasses;", "export { default } from './Drawer';\nexport { default as drawerClasses } from './drawerClasses';\nexport * from './drawerClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFabUtilityClass(slot) {\n  return generateUtilityClass('MuiFab', slot);\n}\nconst fabClasses = generateUtilityClasses('MuiFab', ['root', 'primary', 'secondary', 'extended', 'circular', 'focusVisible', 'disabled', 'colorInherit', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'info', 'error', 'warning', 'success']);\nexport default fabClasses;", "export { default } from './Fab';\nexport { default as fabClasses } from './fabClasses';\nexport * from './fabClasses';", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"hiddenLabel\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport { refType, deepmerge } from '@mui/utils';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport InputBase from '../InputBase';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport filledInputClasses, { getFilledInputUtilityClass } from './filledInputClasses';\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableUnderline\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableUnderline && 'underline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getFilledInputUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst FilledInputRoot = styled(InputBaseRoot, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiFilledInput',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _palette;\n  const light = theme.palette.mode === 'light';\n  const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)';\n  const hoverBackground = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.13)';\n  const disabledBackground = light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)';\n  return _extends({\n    position: 'relative',\n    backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,\n    borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n    borderTopRightRadius: (theme.vars || theme).shape.borderRadius,\n    transition: theme.transitions.create('background-color', {\n      duration: theme.transitions.duration.shorter,\n      easing: theme.transitions.easing.easeOut\n    }),\n    '&:hover': {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.hoverBg : hoverBackground,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n      }\n    },\n    [`&.${filledInputClasses.focused}`]: {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n    },\n    [`&.${filledInputClasses.disabled}`]: {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground\n    }\n  }, !ownerState.disableUnderline && {\n    '&:after': {\n      borderBottom: `2px solid ${(_palette = (theme.vars || theme).palette[ownerState.color || 'primary']) == null ? void 0 : _palette.main}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\"',\n      position: 'absolute',\n      right: 0,\n      transform: 'scaleX(0)',\n      transition: theme.transitions.create('transform', {\n        duration: theme.transitions.duration.shorter,\n        easing: theme.transitions.easing.easeOut\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n\n    [`&.${filledInputClasses.focused}:after`]: {\n      // translateX(0) is a workaround for Safari transform scale bug\n      // See https://github.com/mui/material-ui/issues/31766\n      transform: 'scaleX(1) translateX(0)'\n    },\n    [`&.${filledInputClasses.error}`]: {\n      '&:before, &:after': {\n        borderBottomColor: (theme.vars || theme).palette.error.main\n      }\n    },\n    '&:before': {\n      borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\\\\00a0\"',\n      position: 'absolute',\n      right: 0,\n      transition: theme.transitions.create('border-bottom-color', {\n        duration: theme.transitions.duration.shorter\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n\n    [`&:hover:not(.${filledInputClasses.disabled}, .${filledInputClasses.error}):before`]: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`\n    },\n    [`&.${filledInputClasses.disabled}:before`]: {\n      borderBottomStyle: 'dotted'\n    }\n  }, ownerState.startAdornment && {\n    paddingLeft: 12\n  }, ownerState.endAdornment && {\n    paddingRight: 12\n  }, ownerState.multiline && _extends({\n    padding: '25px 12px 8px'\n  }, ownerState.size === 'small' && {\n    paddingTop: 21,\n    paddingBottom: 4\n  }, ownerState.hiddenLabel && {\n    paddingTop: 16,\n    paddingBottom: 17\n  }));\n});\nconst FilledInputInput = styled(InputBaseInput, {\n  name: 'MuiFilledInput',\n  slot: 'Input',\n  overridesResolver: inputBaseInputOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  paddingTop: 25,\n  paddingRight: 12,\n  paddingBottom: 8,\n  paddingLeft: 12\n}, !theme.vars && {\n  '&:-webkit-autofill': {\n    WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n    WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n    caretColor: theme.palette.mode === 'light' ? null : '#fff',\n    borderTopLeftRadius: 'inherit',\n    borderTopRightRadius: 'inherit'\n  }\n}, theme.vars && {\n  '&:-webkit-autofill': {\n    borderTopLeftRadius: 'inherit',\n    borderTopRightRadius: 'inherit'\n  },\n  [theme.getColorSchemeSelector('dark')]: {\n    '&:-webkit-autofill': {\n      WebkitBoxShadow: '0 0 0 100px #266798 inset',\n      WebkitTextFillColor: '#fff',\n      caretColor: '#fff'\n    }\n  }\n}, ownerState.size === 'small' && {\n  paddingTop: 21,\n  paddingBottom: 4\n}, ownerState.hiddenLabel && {\n  paddingTop: 16,\n  paddingBottom: 17\n}, ownerState.multiline && {\n  paddingTop: 0,\n  paddingBottom: 0,\n  paddingLeft: 0,\n  paddingRight: 0\n}, ownerState.startAdornment && {\n  paddingLeft: 0\n}, ownerState.endAdornment && {\n  paddingRight: 0\n}, ownerState.hiddenLabel && ownerState.size === 'small' && {\n  paddingTop: 8,\n  paddingBottom: 9\n}));\nconst FilledInput = /*#__PURE__*/React.forwardRef(function FilledInput(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$input;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiFilledInput'\n  });\n  const {\n      components = {},\n      componentsProps: componentsPropsProp,\n      fullWidth = false,\n      // declare here to prevent spreading to DOM\n      inputComponent = 'input',\n      multiline = false,\n      slotProps,\n      slots = {},\n      type = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    fullWidth,\n    inputComponent,\n    multiline,\n    type\n  });\n  const classes = useUtilityClasses(props);\n  const filledInputComponentsProps = {\n    root: {\n      ownerState\n    },\n    input: {\n      ownerState\n    }\n  };\n  const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(slotProps != null ? slotProps : componentsPropsProp, filledInputComponentsProps) : filledInputComponentsProps;\n  const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : FilledInputRoot;\n  const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : FilledInputInput;\n  return /*#__PURE__*/_jsx(InputBase, _extends({\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    componentsProps: componentsProps,\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type\n  }, other, {\n    classes: classes\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FilledInput.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the input will not have an underline.\n   */\n  disableUnderline: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nFilledInput.muiName = 'Input';\nexport default FilledInput;", "export { default } from './FilledInput';\nexport { default as filledInputClasses } from './filledInputClasses';\nexport * from './filledInputClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormControlUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormControl', slot);\n}\nconst formControlClasses = generateUtilityClasses('MuiFormControl', ['root', 'marginNone', 'marginNormal', 'marginDense', 'fullWidth', 'disabled']);\nexport default formControlClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"focused\", \"fullWidth\", \"hiddenLabel\", \"margin\", \"required\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { isFilled, isAdornedStart } from '../InputBase/utils';\nimport capitalize from '../utils/capitalize';\nimport isMuiElement from '../utils/isMuiElement';\nimport FormControlContext from './FormControlContext';\nimport { getFormControlUtilityClasses } from './formControlClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    margin,\n    fullWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', margin !== 'none' && `margin${capitalize(margin)}`, fullWidth && 'fullWidth']\n  };\n  return composeClasses(slots, getFormControlUtilityClasses, classes);\n};\nconst FormControlRoot = styled('div', {\n  name: 'MuiFormControl',\n  slot: 'Root',\n  overridesResolver: ({\n    ownerState\n  }, styles) => {\n    return _extends({}, styles.root, styles[`margin${capitalize(ownerState.margin)}`], ownerState.fullWidth && styles.fullWidth);\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'inline-flex',\n  flexDirection: 'column',\n  position: 'relative',\n  // Reset fieldset default style.\n  minWidth: 0,\n  padding: 0,\n  margin: 0,\n  border: 0,\n  verticalAlign: 'top'\n}, ownerState.margin === 'normal' && {\n  marginTop: 16,\n  marginBottom: 8\n}, ownerState.margin === 'dense' && {\n  marginTop: 8,\n  marginBottom: 4\n}, ownerState.fullWidth && {\n  width: '100%'\n}));\n\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibility and ensures that the state always stays\n * consistent across the children of the `FormControl`.\n * This context is used by the following components:\n *\n *  - FormLabel\n *  - FormHelperText\n *  - Input\n *  - InputLabel\n *\n * You can find one composition example below and more going to [the demos](/material-ui/react-text-field/#components).\n *\n * ```jsx\n * <FormControl>\n *   <InputLabel htmlFor=\"my-input\">Email address</InputLabel>\n *   <Input id=\"my-input\" aria-describedby=\"my-helper-text\" />\n *   <FormHelperText id=\"my-helper-text\">We'll never share your email.</FormHelperText>\n * </FormControl>\n * ```\n *\n * \u26A0\uFE0F Only one `InputBase` can be used within a FormControl because it creates visual inconsistencies.\n * For instance, only one input can be focused at the same time, the state shouldn't be shared.\n */\nconst FormControl = /*#__PURE__*/React.forwardRef(function FormControl(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiFormControl'\n  });\n  const {\n      children,\n      className,\n      color = 'primary',\n      component = 'div',\n      disabled = false,\n      error = false,\n      focused: visuallyFocused,\n      fullWidth = false,\n      hiddenLabel = false,\n      margin = 'none',\n      required = false,\n      size = 'medium',\n      variant = 'outlined'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    disabled,\n    error,\n    fullWidth,\n    hiddenLabel,\n    margin,\n    required,\n    size,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const [adornedStart, setAdornedStart] = React.useState(() => {\n    // We need to iterate through the children and find the Input in order\n    // to fully support server-side rendering.\n    let initialAdornedStart = false;\n    if (children) {\n      React.Children.forEach(children, child => {\n        if (!isMuiElement(child, ['Input', 'Select'])) {\n          return;\n        }\n        const input = isMuiElement(child, ['Select']) ? child.props.input : child;\n        if (input && isAdornedStart(input.props)) {\n          initialAdornedStart = true;\n        }\n      });\n    }\n    return initialAdornedStart;\n  });\n  const [filled, setFilled] = React.useState(() => {\n    // We need to iterate through the children and find the Input in order\n    // to fully support server-side rendering.\n    let initialFilled = false;\n    if (children) {\n      React.Children.forEach(children, child => {\n        if (!isMuiElement(child, ['Input', 'Select'])) {\n          return;\n        }\n        if (isFilled(child.props, true)) {\n          initialFilled = true;\n        }\n      });\n    }\n    return initialFilled;\n  });\n  const [focusedState, setFocused] = React.useState(false);\n  if (disabled && focusedState) {\n    setFocused(false);\n  }\n  const focused = visuallyFocused !== undefined && !disabled ? visuallyFocused : focusedState;\n  let registerEffect;\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const registeredInput = React.useRef(false);\n    registerEffect = () => {\n      if (registeredInput.current) {\n        console.error(['MUI: There are multiple `InputBase` components inside a FormControl.', 'This creates visual inconsistencies, only use one `InputBase`.'].join('\\n'));\n      }\n      registeredInput.current = true;\n      return () => {\n        registeredInput.current = false;\n      };\n    };\n  }\n  const childContext = React.useMemo(() => {\n    return {\n      adornedStart,\n      setAdornedStart,\n      color,\n      disabled,\n      error,\n      filled,\n      focused,\n      fullWidth,\n      hiddenLabel,\n      size,\n      onBlur: () => {\n        setFocused(false);\n      },\n      onEmpty: () => {\n        setFilled(false);\n      },\n      onFilled: () => {\n        setFilled(true);\n      },\n      onFocus: () => {\n        setFocused(true);\n      },\n      registerEffect,\n      required,\n      variant\n    };\n  }, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, required, size, variant]);\n  return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsx(FormControlRoot, _extends({\n      as: component,\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      ref: ref\n    }, other, {\n      children: children\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControl.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the label, input and helper text should be displayed in a disabled state.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the component is displayed in focused state.\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `true`, the component will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: PropTypes.bool,\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   * @default 'none'\n   */\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  /**\n   * If `true`, the label will indicate that the `input` is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default FormControl;", "export { default } from './FormControl';\nexport { default as useFormControl } from './useFormControl';\nexport { default as formControlClasses } from './formControlClasses';\nexport * from './formControlClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormControlLabelUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormControlLabel', slot);\n}\nconst formControlLabelClasses = generateUtilityClasses('MuiFormControlLabel', ['root', 'labelPlacementStart', 'labelPlacementTop', 'labelPlacementBottom', 'disabled', 'label', 'error']);\nexport default formControlLabelClasses;", "export { default } from './FormControlLabel';\nexport { default as formControlLabelClasses } from './formControlLabelClasses';\nexport * from './formControlLabelClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiFormGroup', slot);\n}\nconst formGroupClasses = generateUtilityClasses('MuiFormGroup', ['root', 'row', 'error']);\nexport default formGroupClasses;", "export { default } from './FormGroup';\nexport { default as formGroupClasses } from './formGroupClasses';\nexport * from './formGroupClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormHelperTextUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormHelperText', slot);\n}\nconst formHelperTextClasses = generateUtilityClasses('MuiFormHelperText', ['root', 'error', 'disabled', 'sizeSmall', 'sizeMedium', 'contained', 'focused', 'filled', 'required']);\nexport default formHelperTextClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"margin\", \"required\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport capitalize from '../utils/capitalize';\nimport formHelperTextClasses, { getFormHelperTextUtilityClasses } from './formHelperTextClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    contained,\n    size,\n    disabled,\n    error,\n    filled,\n    focused,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', error && 'error', size && `size${capitalize(size)}`, contained && 'contained', focused && 'focused', filled && 'filled', required && 'required']\n  };\n  return composeClasses(slots, getFormHelperTextUtilityClasses, classes);\n};\nconst FormHelperTextRoot = styled('p', {\n  name: 'MuiFormHelperText',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.size && styles[`size${capitalize(ownerState.size)}`], ownerState.contained && styles.contained, ownerState.filled && styles.filled];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.caption, {\n  textAlign: 'left',\n  marginTop: 3,\n  marginRight: 0,\n  marginBottom: 0,\n  marginLeft: 0,\n  [`&.${formHelperTextClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  },\n  [`&.${formHelperTextClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n}, ownerState.size === 'small' && {\n  marginTop: 4\n}, ownerState.contained && {\n  marginLeft: 14,\n  marginRight: 14\n}));\nconst FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiFormHelperText'\n  });\n  const {\n      children,\n      className,\n      component = 'p'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['variant', 'size', 'disabled', 'error', 'filled', 'focused', 'required']\n  });\n  const ownerState = _extends({}, props, {\n    component,\n    contained: fcs.variant === 'filled' || fcs.variant === 'outlined',\n    variant: fcs.variant,\n    size: fcs.size,\n    disabled: fcs.disabled,\n    error: fcs.error,\n    filled: fcs.filled,\n    focused: fcs.focused,\n    required: fcs.required\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(FormHelperTextRoot, _extends({\n    as: component,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref\n  }, other, {\n    children: children === ' ' ? // notranslate needed while Google Translate will not fix zero-width space issue\n    _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n      className: \"notranslate\",\n      children: \"\\u200B\"\n    })) : children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormHelperText.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   *\n   * If `' '` is provided, the component reserves one line height for displaying a future message.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the helper text should be displayed in a disabled state.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, helper text should be displayed in an error state.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the helper text should use filled classes key.\n   */\n  filled: PropTypes.bool,\n  /**\n   * If `true`, the helper text should use focused classes key.\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   */\n  margin: PropTypes.oneOf(['dense']),\n  /**\n   * If `true`, the helper text should use required classes key.\n   */\n  required: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined', 'standard']), PropTypes.string])\n} : void 0;\nexport default FormHelperText;", "export { default } from './FormHelperText';\nexport { default as formHelperTextClasses } from './formHelperTextClasses';\nexport * from './formHelperTextClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    focused,\n    disabled,\n    error,\n    filled,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n    asterisk: ['asterisk', error && 'error']\n  };\n  return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n  name: 'MuiFormLabel',\n  slot: 'Root',\n  overridesResolver: ({\n    ownerState\n  }, styles) => {\n    return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n  lineHeight: '1.4375em',\n  padding: 0,\n  position: 'relative',\n  [`&.${formLabelClasses.focused}`]: {\n    color: (theme.vars || theme).palette[ownerState.color].main\n  },\n  [`&.${formLabelClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  },\n  [`&.${formLabelClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n}));\nconst AsteriskComponent = styled('span', {\n  name: 'MuiFormLabel',\n  slot: 'Asterisk',\n  overridesResolver: (props, styles) => styles.asterisk\n})(({\n  theme\n}) => ({\n  [`&.${formLabelClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiFormLabel'\n  });\n  const {\n      children,\n      className,\n      component = 'label'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n  });\n  const ownerState = _extends({}, props, {\n    color: fcs.color || 'primary',\n    component,\n    disabled: fcs.disabled,\n    error: fcs.error,\n    filled: fcs.filled,\n    focused: fcs.focused,\n    required: fcs.required\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n    as: component,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref\n  }, other, {\n    children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n      ownerState: ownerState,\n      \"aria-hidden\": true,\n      className: classes.asterisk,\n      children: [\"\\u2009\", '*']\n    })]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the label should be displayed in a disabled state.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the label should use filled classes key.\n   */\n  filled: PropTypes.bool,\n  /**\n   * If `true`, the input of this label is focused (used by `FormGroup` components).\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `true`, the label will indicate that the `input` is required.\n   */\n  required: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;", "export { default } from './FormLabel';\nexport * from './FormLabel';\nexport { default as formLabelClasses } from './formLabelClasses';\nexport * from './formLabelClasses';", "import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst GridContext = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  GridContext.displayName = 'GridContext';\n}\nexport default GridContext;", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getGridUtilityClass(slot) {\n  return generateUtilityClass('MuiGrid', slot);\n}\nconst SPACINGS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nconst DIRECTIONS = ['column-reverse', 'column', 'row-reverse', 'row'];\nconst WRAPS = ['nowrap', 'wrap-reverse', 'wrap'];\nconst GRID_SIZES = ['auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\nconst gridClasses = generateUtilityClasses('MuiGrid', ['root', 'container', 'item', 'zeroMinWidth',\n// spacings\n...SPACINGS.map(spacing => `spacing-xs-${spacing}`),\n// direction values\n...DIRECTIONS.map(direction => `direction-xs-${direction}`),\n// wrap values\n...WRAPS.map(wrap => `wrap-xs-${wrap}`),\n// grid sizes for all breakpoints\n...GRID_SIZES.map(size => `grid-xs-${size}`), ...GRID_SIZES.map(size => `grid-sm-${size}`), ...GRID_SIZES.map(size => `grid-md-${size}`), ...GRID_SIZES.map(size => `grid-lg-${size}`), ...GRID_SIZES.map(size => `grid-xl-${size}`)]);\nexport default gridClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"columns\", \"columnSpacing\", \"component\", \"container\", \"direction\", \"item\", \"rowSpacing\", \"spacing\", \"wrap\", \"zeroMinWidth\"];\n// A grid component using the following libs as inspiration.\n//\n// For the implementation:\n// - https://getbootstrap.com/docs/4.3/layout/grid/\n// - https://github.com/kristoferjoseph/flexboxgrid/blob/master/src/css/flexboxgrid.css\n// - https://github.com/roylee0704/react-flexbox-grid\n// - https://material.angularjs.org/latest/layout/introduction\n//\n// Follow this flexbox Guide to better understand the underlying model:\n// - https://css-tricks.com/snippets/css/a-guide-to-flexbox/\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_extendSxProp as extendSxProp, handleBreakpoints, unstable_resolveBreakpointValues as resolveBreakpointValues } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport requirePropFactory from '../utils/requirePropFactory';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useTheme from '../styles/useTheme';\nimport GridContext from './GridContext';\nimport gridClasses, { getGridUtilityClass } from './gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getOffset(val) {\n  const parse = parseFloat(val);\n  return `${parse}${String(val).replace(String(parse), '') || 'px'}`;\n}\nexport function generateGrid({\n  theme,\n  ownerState\n}) {\n  let size;\n  return theme.breakpoints.keys.reduce((globalStyles, breakpoint) => {\n    // Use side effect over immutability for better performance.\n    let styles = {};\n    if (ownerState[breakpoint]) {\n      size = ownerState[breakpoint];\n    }\n    if (!size) {\n      return globalStyles;\n    }\n    if (size === true) {\n      // For the auto layouting\n      styles = {\n        flexBasis: 0,\n        flexGrow: 1,\n        maxWidth: '100%'\n      };\n    } else if (size === 'auto') {\n      styles = {\n        flexBasis: 'auto',\n        flexGrow: 0,\n        flexShrink: 0,\n        maxWidth: 'none',\n        width: 'auto'\n      };\n    } else {\n      const columnsBreakpointValues = resolveBreakpointValues({\n        values: ownerState.columns,\n        breakpoints: theme.breakpoints.values\n      });\n      const columnValue = typeof columnsBreakpointValues === 'object' ? columnsBreakpointValues[breakpoint] : columnsBreakpointValues;\n      if (columnValue === undefined || columnValue === null) {\n        return globalStyles;\n      }\n      // Keep 7 significant numbers.\n      const width = `${Math.round(size / columnValue * 10e7) / 10e5}%`;\n      let more = {};\n      if (ownerState.container && ownerState.item && ownerState.columnSpacing !== 0) {\n        const themeSpacing = theme.spacing(ownerState.columnSpacing);\n        if (themeSpacing !== '0px') {\n          const fullWidth = `calc(${width} + ${getOffset(themeSpacing)})`;\n          more = {\n            flexBasis: fullWidth,\n            maxWidth: fullWidth\n          };\n        }\n      }\n\n      // Close to the bootstrap implementation:\n      // https://github.com/twbs/bootstrap/blob/8fccaa2439e97ec72a4b7dc42ccc1f649790adb0/scss/mixins/_grid.scss#L41\n      styles = _extends({\n        flexBasis: width,\n        flexGrow: 0,\n        maxWidth: width\n      }, more);\n    }\n\n    // No need for a media query for the first size.\n    if (theme.breakpoints.values[breakpoint] === 0) {\n      Object.assign(globalStyles, styles);\n    } else {\n      globalStyles[theme.breakpoints.up(breakpoint)] = styles;\n    }\n    return globalStyles;\n  }, {});\n}\nexport function generateDirection({\n  theme,\n  ownerState\n}) {\n  const directionValues = resolveBreakpointValues({\n    values: ownerState.direction,\n    breakpoints: theme.breakpoints.values\n  });\n  return handleBreakpoints({\n    theme\n  }, directionValues, propValue => {\n    const output = {\n      flexDirection: propValue\n    };\n    if (propValue.indexOf('column') === 0) {\n      output[`& > .${gridClasses.item}`] = {\n        maxWidth: 'none'\n      };\n    }\n    return output;\n  });\n}\n\n/**\n * Extracts zero value breakpoint keys before a non-zero value breakpoint key.\n * @example { xs: 0, sm: 0, md: 2, lg: 0, xl: 0 } or [0, 0, 2, 0, 0]\n * @returns [xs, sm]\n */\nfunction extractZeroValueBreakpointKeys({\n  breakpoints,\n  values\n}) {\n  let nonZeroKey = '';\n  Object.keys(values).forEach(key => {\n    if (nonZeroKey !== '') {\n      return;\n    }\n    if (values[key] !== 0) {\n      nonZeroKey = key;\n    }\n  });\n  const sortedBreakpointKeysByValue = Object.keys(breakpoints).sort((a, b) => {\n    return breakpoints[a] - breakpoints[b];\n  });\n  return sortedBreakpointKeysByValue.slice(0, sortedBreakpointKeysByValue.indexOf(nonZeroKey));\n}\nexport function generateRowGap({\n  theme,\n  ownerState\n}) {\n  const {\n    container,\n    rowSpacing\n  } = ownerState;\n  let styles = {};\n  if (container && rowSpacing !== 0) {\n    const rowSpacingValues = resolveBreakpointValues({\n      values: rowSpacing,\n      breakpoints: theme.breakpoints.values\n    });\n    let zeroValueBreakpointKeys;\n    if (typeof rowSpacingValues === 'object') {\n      zeroValueBreakpointKeys = extractZeroValueBreakpointKeys({\n        breakpoints: theme.breakpoints.values,\n        values: rowSpacingValues\n      });\n    }\n    styles = handleBreakpoints({\n      theme\n    }, rowSpacingValues, (propValue, breakpoint) => {\n      var _zeroValueBreakpointK;\n      const themeSpacing = theme.spacing(propValue);\n      if (themeSpacing !== '0px') {\n        return {\n          marginTop: `-${getOffset(themeSpacing)}`,\n          [`& > .${gridClasses.item}`]: {\n            paddingTop: getOffset(themeSpacing)\n          }\n        };\n      }\n      if ((_zeroValueBreakpointK = zeroValueBreakpointKeys) != null && _zeroValueBreakpointK.includes(breakpoint)) {\n        return {};\n      }\n      return {\n        marginTop: 0,\n        [`& > .${gridClasses.item}`]: {\n          paddingTop: 0\n        }\n      };\n    });\n  }\n  return styles;\n}\nexport function generateColumnGap({\n  theme,\n  ownerState\n}) {\n  const {\n    container,\n    columnSpacing\n  } = ownerState;\n  let styles = {};\n  if (container && columnSpacing !== 0) {\n    const columnSpacingValues = resolveBreakpointValues({\n      values: columnSpacing,\n      breakpoints: theme.breakpoints.values\n    });\n    let zeroValueBreakpointKeys;\n    if (typeof columnSpacingValues === 'object') {\n      zeroValueBreakpointKeys = extractZeroValueBreakpointKeys({\n        breakpoints: theme.breakpoints.values,\n        values: columnSpacingValues\n      });\n    }\n    styles = handleBreakpoints({\n      theme\n    }, columnSpacingValues, (propValue, breakpoint) => {\n      var _zeroValueBreakpointK2;\n      const themeSpacing = theme.spacing(propValue);\n      if (themeSpacing !== '0px') {\n        return {\n          width: `calc(100% + ${getOffset(themeSpacing)})`,\n          marginLeft: `-${getOffset(themeSpacing)}`,\n          [`& > .${gridClasses.item}`]: {\n            paddingLeft: getOffset(themeSpacing)\n          }\n        };\n      }\n      if ((_zeroValueBreakpointK2 = zeroValueBreakpointKeys) != null && _zeroValueBreakpointK2.includes(breakpoint)) {\n        return {};\n      }\n      return {\n        width: '100%',\n        marginLeft: 0,\n        [`& > .${gridClasses.item}`]: {\n          paddingLeft: 0\n        }\n      };\n    });\n  }\n  return styles;\n}\nexport function resolveSpacingStyles(spacing, breakpoints, styles = {}) {\n  // undefined/null or `spacing` <= 0\n  if (!spacing || spacing <= 0) {\n    return [];\n  }\n  // in case of string/number `spacing`\n  if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {\n    return [styles[`spacing-xs-${String(spacing)}`]];\n  }\n  // in case of object `spacing`\n  const spacingStyles = [];\n  breakpoints.forEach(breakpoint => {\n    const value = spacing[breakpoint];\n    if (Number(value) > 0) {\n      spacingStyles.push(styles[`spacing-${breakpoint}-${String(value)}`]);\n    }\n  });\n  return spacingStyles;\n}\n\n// Default CSS values\n// flex: '0 1 auto',\n// flexDirection: 'row',\n// alignItems: 'flex-start',\n// flexWrap: 'nowrap',\n// justifyContent: 'flex-start',\nconst GridRoot = styled('div', {\n  name: 'MuiGrid',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      container,\n      direction,\n      item,\n      spacing,\n      wrap,\n      zeroMinWidth,\n      breakpoints\n    } = ownerState;\n    let spacingStyles = [];\n\n    // in case of grid item\n    if (container) {\n      spacingStyles = resolveSpacingStyles(spacing, breakpoints, styles);\n    }\n    const breakpointsStyles = [];\n    breakpoints.forEach(breakpoint => {\n      const value = ownerState[breakpoint];\n      if (value) {\n        breakpointsStyles.push(styles[`grid-${breakpoint}-${String(value)}`]);\n      }\n    });\n    return [styles.root, container && styles.container, item && styles.item, zeroMinWidth && styles.zeroMinWidth, ...spacingStyles, direction !== 'row' && styles[`direction-xs-${String(direction)}`], wrap !== 'wrap' && styles[`wrap-xs-${String(wrap)}`], ...breakpointsStyles];\n  }\n})(({\n  ownerState\n}) => _extends({\n  boxSizing: 'border-box'\n}, ownerState.container && {\n  display: 'flex',\n  flexWrap: 'wrap',\n  width: '100%'\n}, ownerState.item && {\n  margin: 0 // For instance, it's useful when used with a `figure` element.\n}, ownerState.zeroMinWidth && {\n  minWidth: 0\n}, ownerState.wrap !== 'wrap' && {\n  flexWrap: ownerState.wrap\n}), generateDirection, generateRowGap, generateColumnGap, generateGrid);\nexport function resolveSpacingClasses(spacing, breakpoints) {\n  // undefined/null or `spacing` <= 0\n  if (!spacing || spacing <= 0) {\n    return [];\n  }\n  // in case of string/number `spacing`\n  if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {\n    return [`spacing-xs-${String(spacing)}`];\n  }\n  // in case of object `spacing`\n  const classes = [];\n  breakpoints.forEach(breakpoint => {\n    const value = spacing[breakpoint];\n    if (Number(value) > 0) {\n      const className = `spacing-${breakpoint}-${String(value)}`;\n      classes.push(className);\n    }\n  });\n  return classes;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    container,\n    direction,\n    item,\n    spacing,\n    wrap,\n    zeroMinWidth,\n    breakpoints\n  } = ownerState;\n  let spacingClasses = [];\n\n  // in case of grid item\n  if (container) {\n    spacingClasses = resolveSpacingClasses(spacing, breakpoints);\n  }\n  const breakpointsClasses = [];\n  breakpoints.forEach(breakpoint => {\n    const value = ownerState[breakpoint];\n    if (value) {\n      breakpointsClasses.push(`grid-${breakpoint}-${String(value)}`);\n    }\n  });\n  const slots = {\n    root: ['root', container && 'container', item && 'item', zeroMinWidth && 'zeroMinWidth', ...spacingClasses, direction !== 'row' && `direction-xs-${String(direction)}`, wrap !== 'wrap' && `wrap-xs-${String(wrap)}`, ...breakpointsClasses]\n  };\n  return composeClasses(slots, getGridUtilityClass, classes);\n};\nconst Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n  const themeProps = useThemeProps({\n    props: inProps,\n    name: 'MuiGrid'\n  });\n  const {\n    breakpoints\n  } = useTheme();\n  const props = extendSxProp(themeProps);\n  const {\n      className,\n      columns: columnsProp,\n      columnSpacing: columnSpacingProp,\n      component = 'div',\n      container = false,\n      direction = 'row',\n      item = false,\n      rowSpacing: rowSpacingProp,\n      spacing = 0,\n      wrap = 'wrap',\n      zeroMinWidth = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rowSpacing = rowSpacingProp || spacing;\n  const columnSpacing = columnSpacingProp || spacing;\n  const columnsContext = React.useContext(GridContext);\n\n  // columns set with default breakpoint unit of 12\n  const columns = container ? columnsProp || 12 : columnsContext;\n  const breakpointsValues = {};\n  const otherFiltered = _extends({}, other);\n  breakpoints.keys.forEach(breakpoint => {\n    if (other[breakpoint] != null) {\n      breakpointsValues[breakpoint] = other[breakpoint];\n      delete otherFiltered[breakpoint];\n    }\n  });\n  const ownerState = _extends({}, props, {\n    columns,\n    container,\n    direction,\n    item,\n    rowSpacing,\n    columnSpacing,\n    wrap,\n    zeroMinWidth,\n    spacing\n  }, breakpointsValues, {\n    breakpoints: breakpoints.keys\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(GridContext.Provider, {\n    value: columns,\n    children: /*#__PURE__*/_jsx(GridRoot, _extends({\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      as: component,\n      ref: ref\n    }, otherFiltered))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Grid.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The number of columns.\n   * @default 12\n   */\n  columns: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number, PropTypes.object]),\n  /**\n   * Defines the horizontal space between the type `item` components.\n   * It overrides the value of the `spacing` prop.\n   */\n  columnSpacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component will have the flex *container* behavior.\n   * You should be wrapping *items* with a *container*.\n   * @default false\n   */\n  container: PropTypes.bool,\n  /**\n   * Defines the `flex-direction` style property.\n   * It is applied for all screen sizes.\n   * @default 'row'\n   */\n  direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n  /**\n   * If `true`, the component will have the flex *item* behavior.\n   * You should be wrapping *items* with a *container*.\n   * @default false\n   */\n  item: PropTypes.bool,\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `lg` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  lg: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `md` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  md: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * Defines the vertical space between the type `item` components.\n   * It overrides the value of the `spacing` prop.\n   */\n  rowSpacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `sm` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  sm: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * Defines the space between the type `item` components.\n   * It can only be used on a type `container` component.\n   * @default 0\n   */\n  spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Defines the `flex-wrap` style property.\n   * It's applied for all screen sizes.\n   * @default 'wrap'\n   */\n  wrap: PropTypes.oneOf(['nowrap', 'wrap-reverse', 'wrap']),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `xl` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  xl: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for all the screen sizes with the lowest priority.\n   * @default false\n   */\n  xs: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * If `true`, it sets `min-width: 0` on the item.\n   * Refer to the limitations section of the documentation to better understand the use case.\n   * @default false\n   */\n  zeroMinWidth: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  const requireProp = requirePropFactory('Grid', Grid);\n  // eslint-disable-next-line no-useless-concat\n  Grid['propTypes' + ''] = _extends({}, Grid.propTypes, {\n    direction: requireProp('container'),\n    lg: requireProp('item'),\n    md: requireProp('item'),\n    sm: requireProp('item'),\n    spacing: requireProp('container'),\n    wrap: requireProp('container'),\n    xs: requireProp('item'),\n    zeroMinWidth: requireProp('item')\n  });\n}\nexport default Grid;", "export { default } from './Grid';\nexport { default as gridClasses } from './gridClasses';\nexport * from './gridClasses';", "export {};", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getGrid2UtilityClass(slot) {\n  return generateUtilityClass('MuiGrid2', slot);\n}\nconst SPACINGS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nconst DIRECTIONS = ['column-reverse', 'column', 'row-reverse', 'row'];\nconst WRAPS = ['nowrap', 'wrap-reverse', 'wrap'];\nconst GRID_SIZES = ['auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\nconst grid2Classes = generateUtilityClasses('MuiGrid2', ['root', 'container', 'item', 'zeroMinWidth',\n// spacings\n...SPACINGS.map(spacing => `spacing-xs-${spacing}`),\n// direction values\n...DIRECTIONS.map(direction => `direction-xs-${direction}`),\n// wrap values\n...WRAPS.map(wrap => `wrap-xs-${wrap}`),\n// grid sizes for all breakpoints\n...GRID_SIZES.map(size => `grid-xs-${size}`), ...GRID_SIZES.map(size => `grid-sm-${size}`), ...GRID_SIZES.map(size => `grid-md-${size}`), ...GRID_SIZES.map(size => `grid-lg-${size}`), ...GRID_SIZES.map(size => `grid-xl-${size}`)]);\nexport default grid2Classes;", "export { default } from './Grid2';\nexport * from './Grid2Props';\nexport { default as grid2Classes } from './grid2Classes';\nexport * from './grid2Classes';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef } from '@mui/utils';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { getTransitionProps, reflow } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n  return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n  entering: {\n    opacity: 1,\n    transform: getScale(1)\n  },\n  entered: {\n    opacity: 1,\n    transform: 'none'\n  }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n  const {\n      addEndListener,\n      appear = true,\n      children,\n      easing,\n      in: inProp,\n      onEnter,\n      onEntered,\n      onEntering,\n      onExit,\n      onExited,\n      onExiting,\n      style,\n      timeout = 'auto',\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = Transition\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const timer = React.useRef();\n  const autoTimeout = React.useRef();\n  const theme = useTheme();\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(nodeRef, children.ref, ref);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const handleEntering = normalizedTransitionCallback(onEntering);\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    reflow(node); // So the animation always start from the start.\n\n    const {\n      duration: transitionDuration,\n      delay,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    let duration;\n    if (timeout === 'auto') {\n      duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n      autoTimeout.current = duration;\n    } else {\n      duration = transitionDuration;\n    }\n    node.style.transition = [theme.transitions.create('opacity', {\n      duration,\n      delay\n    }), theme.transitions.create('transform', {\n      duration: isWebKit154 ? duration : duration * 0.666,\n      delay,\n      easing: transitionTimingFunction\n    })].join(',');\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const {\n      duration: transitionDuration,\n      delay,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    let duration;\n    if (timeout === 'auto') {\n      duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n      autoTimeout.current = duration;\n    } else {\n      duration = transitionDuration;\n    }\n    node.style.transition = [theme.transitions.create('opacity', {\n      duration,\n      delay\n    }), theme.transitions.create('transform', {\n      duration: isWebKit154 ? duration : duration * 0.666,\n      delay: isWebKit154 ? delay : delay || duration * 0.333,\n      easing: transitionTimingFunction\n    })].join(',');\n    node.style.opacity = 0;\n    node.style.transform = getScale(0.75);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleAddEndListener = next => {\n    if (timeout === 'auto') {\n      timer.current = setTimeout(next, autoTimeout.current || 0);\n    }\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  React.useEffect(() => {\n    return () => {\n      clearTimeout(timer.current);\n    };\n  }, []);\n  return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    appear: appear,\n    in: inProp,\n    nodeRef: nodeRef,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    timeout: timeout === 'auto' ? null : timeout\n  }, other, {\n    children: (state, childProps) => {\n      return /*#__PURE__*/React.cloneElement(children, _extends({\n        style: _extends({\n          opacity: 0,\n          transform: getScale(0.75),\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n        }, styles[state], style, children.props.style),\n        ref: handleRef\n      }, childProps));\n    }\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: PropTypes.bool,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default 'auto'\n   */\n  timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;", "export { default } from './Grow';", "import * as React from 'react';\nimport { getThemeProps, useThemeWithoutDefault as useTheme } from '@mui/system';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\n\n/**\n * @deprecated Not used internally. Use `MediaQueryListEvent` from lib.dom.d.ts instead.\n */\n\nfunction useMediaQueryOld(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n  const [match, setMatch] = React.useState(() => {\n    if (noSsr && matchMedia) {\n      return matchMedia(query).matches;\n    }\n    if (ssrMatchMedia) {\n      return ssrMatchMedia(query).matches;\n    }\n\n    // Once the component is mounted, we rely on the\n    // event listeners to return the correct matches value.\n    return defaultMatches;\n  });\n  useEnhancedEffect(() => {\n    let active = true;\n    if (!matchMedia) {\n      return undefined;\n    }\n    const queryList = matchMedia(query);\n    const updateMatch = () => {\n      // Workaround Safari wrong implementation of matchMedia\n      // TODO can we remove it?\n      // https://github.com/mui/material-ui/pull/17315#issuecomment-528286677\n      if (active) {\n        setMatch(queryList.matches);\n      }\n    };\n    updateMatch();\n    // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n    queryList.addListener(updateMatch);\n    return () => {\n      active = false;\n      queryList.removeListener(updateMatch);\n    };\n  }, [query, matchMedia]);\n  return match;\n}\n\n// eslint-disable-next-line no-useless-concat -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseSyncExternalStore = React['useSyncExternalStore' + ''];\nfunction useMediaQueryNew(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n  const getDefaultSnapshot = React.useCallback(() => defaultMatches, [defaultMatches]);\n  const getServerSnapshot = React.useMemo(() => {\n    if (noSsr && matchMedia) {\n      return () => matchMedia(query).matches;\n    }\n    if (ssrMatchMedia !== null) {\n      const {\n        matches\n      } = ssrMatchMedia(query);\n      return () => matches;\n    }\n    return getDefaultSnapshot;\n  }, [getDefaultSnapshot, query, ssrMatchMedia, noSsr, matchMedia]);\n  const [getSnapshot, subscribe] = React.useMemo(() => {\n    if (matchMedia === null) {\n      return [getDefaultSnapshot, () => () => {}];\n    }\n    const mediaQueryList = matchMedia(query);\n    return [() => mediaQueryList.matches, notify => {\n      // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n      mediaQueryList.addListener(notify);\n      return () => {\n        mediaQueryList.removeListener(notify);\n      };\n    }];\n  }, [getDefaultSnapshot, matchMedia, query]);\n  const match = maybeReactUseSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n  return match;\n}\nexport default function useMediaQuery(queryInput, options = {}) {\n  const theme = useTheme();\n  // Wait for jsdom to support the match media feature.\n  // All the browsers MUI support have this built-in.\n  // This defensive check is here for simplicity.\n  // Most of the time, the match media logic isn't central to people tests.\n  const supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';\n  const {\n    defaultMatches = false,\n    matchMedia = supportMatchMedia ? window.matchMedia : null,\n    ssrMatchMedia = null,\n    noSsr = false\n  } = getThemeProps({\n    name: 'MuiUseMediaQuery',\n    props: options,\n    theme\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof queryInput === 'function' && theme === null) {\n      console.error(['MUI: The `query` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n    }\n  }\n  let query = typeof queryInput === 'function' ? queryInput(theme) : queryInput;\n  query = query.replace(/^@media( ?)/m, '');\n\n  // TODO: Drop `useMediaQueryOld` and use  `use-sync-external-store` shim in `useMediaQueryNew` once the package is stable\n  const useMediaQueryImplementation = maybeReactUseSyncExternalStore !== undefined ? useMediaQueryNew : useMediaQueryOld;\n  const match = useMediaQueryImplementation(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useDebugValue({\n      query,\n      match\n    });\n  }\n  return match;\n}", "export { default } from './useMediaQuery';", "export { default } from './Hidden';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getIconUtilityClass(slot) {\n  return generateUtilityClass('MuiIcon', slot);\n}\nconst iconClasses = generateUtilityClasses('MuiIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default iconClasses;", "export { default } from './Icon';\nexport { default as iconClasses } from './iconClasses';\nexport * from './iconClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getImageListUtilityClass(slot) {\n  return generateUtilityClass('MuiImageList', slot);\n}\nconst imageListClasses = generateUtilityClasses('MuiImageList', ['root', 'masonry', 'quilted', 'standard', 'woven']);\nexport default imageListClasses;", "export { default } from './ImageList';\nexport * from './imageListClasses';\nexport { default as imageListClasses } from './imageListClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getImageListItemUtilityClass(slot) {\n  return generateUtilityClass('MuiImageListItem', slot);\n}\nconst imageListItemClasses = generateUtilityClasses('MuiImageListItem', ['root', 'img', 'standard', 'woven', 'masonry', 'quilted']);\nexport default imageListItemClasses;", "export { default } from './ImageListItem';\nexport * from './imageListItemClasses';\nexport { default as imageListItemClasses } from './imageListItemClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getImageListItemBarUtilityClass(slot) {\n  return generateUtilityClass('MuiImageListItemBar', slot);\n}\nconst imageListItemBarClasses = generateUtilityClasses('MuiImageListItemBar', ['root', 'positionBottom', 'positionTop', 'positionBelow', 'titleWrap', 'titleWrapBottom', 'titleWrapTop', 'titleWrapBelow', 'titleWrapActionPosLeft', 'titleWrapActionPosRight', 'title', 'subtitle', 'actionIcon', 'actionIconActionPosLeft', 'actionIconActionPosRight']);\nexport default imageListItemBarClasses;", "export { default } from './ImageListItemBar';\nexport * from './imageListItemBarClasses';\nexport { default as imageListItemBarClasses } from './imageListItemBarClasses';", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { refType, deepmerge } from '@mui/utils';\nimport InputBase from '../InputBase';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport inputClasses, { getInputUtilityClass } from './inputClasses';\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableUnderline\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableUnderline && 'underline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getInputUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst InputRoot = styled(InputBaseRoot, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiInput',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  const light = theme.palette.mode === 'light';\n  let bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  if (theme.vars) {\n    bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;\n  }\n  return _extends({\n    position: 'relative'\n  }, ownerState.formControl && {\n    'label + &': {\n      marginTop: 16\n    }\n  }, !ownerState.disableUnderline && {\n    '&:after': {\n      borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\"',\n      position: 'absolute',\n      right: 0,\n      transform: 'scaleX(0)',\n      transition: theme.transitions.create('transform', {\n        duration: theme.transitions.duration.shorter,\n        easing: theme.transitions.easing.easeOut\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n\n    [`&.${inputClasses.focused}:after`]: {\n      // translateX(0) is a workaround for Safari transform scale bug\n      // See https://github.com/mui/material-ui/issues/31766\n      transform: 'scaleX(1) translateX(0)'\n    },\n    [`&.${inputClasses.error}`]: {\n      '&:before, &:after': {\n        borderBottomColor: (theme.vars || theme).palette.error.main\n      }\n    },\n    '&:before': {\n      borderBottom: `1px solid ${bottomLineColor}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\\\\00a0\"',\n      position: 'absolute',\n      right: 0,\n      transition: theme.transitions.create('border-bottom-color', {\n        duration: theme.transitions.duration.shorter\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n\n    [`&:hover:not(.${inputClasses.disabled}, .${inputClasses.error}):before`]: {\n      borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        borderBottom: `1px solid ${bottomLineColor}`\n      }\n    },\n    [`&.${inputClasses.disabled}:before`]: {\n      borderBottomStyle: 'dotted'\n    }\n  });\n});\nconst InputInput = styled(InputBaseInput, {\n  name: 'MuiInput',\n  slot: 'Input',\n  overridesResolver: inputBaseInputOverridesResolver\n})({});\nconst Input = /*#__PURE__*/React.forwardRef(function Input(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$input;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiInput'\n  });\n  const {\n      disableUnderline,\n      components = {},\n      componentsProps: componentsPropsProp,\n      fullWidth = false,\n      inputComponent = 'input',\n      multiline = false,\n      slotProps,\n      slots = {},\n      type = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const classes = useUtilityClasses(props);\n  const ownerState = {\n    disableUnderline\n  };\n  const inputComponentsProps = {\n    root: {\n      ownerState\n    }\n  };\n  const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(slotProps != null ? slotProps : componentsPropsProp, inputComponentsProps) : inputComponentsProps;\n  const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : InputRoot;\n  const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : InputInput;\n  return /*#__PURE__*/_jsx(InputBase, _extends({\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    slotProps: componentsProps,\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type\n  }, other, {\n    classes: classes\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Input.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the `input` will not have an underline.\n   */\n  disableUnderline: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nInput.muiName = 'Input';\nexport default Input;", "export { default } from './Input';\nexport { default as inputClasses } from './inputClasses';\nexport * from './inputClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputAdornmentUtilityClass(slot) {\n  return generateUtilityClass('MuiInputAdornment', slot);\n}\nconst inputAdornmentClasses = generateUtilityClasses('MuiInputAdornment', ['root', 'filled', 'standard', 'outlined', 'positionStart', 'positionEnd', 'disablePointerEvents', 'hiddenLabel', 'sizeSmall']);\nexport default inputAdornmentClasses;", "export { default } from './InputAdornment';\nexport { default as inputAdornmentClasses } from './inputAdornmentClasses';\nexport * from './inputAdornmentClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n  return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableAnimation\", \"margin\", \"shrink\", \"variant\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport FormLabel, { formLabelClasses } from '../FormLabel';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getInputLabelUtilityClasses } from './inputLabelClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    formControl,\n    size,\n    shrink,\n    disableAnimation,\n    variant,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size === 'small' && 'sizeSmall', variant],\n    asterisk: [required && 'asterisk']\n  };\n  const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst InputLabelRoot = styled(FormLabel, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiInputLabel',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n    }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, styles[ownerState.variant]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  display: 'block',\n  transformOrigin: 'top left',\n  whiteSpace: 'nowrap',\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  maxWidth: '100%'\n}, ownerState.formControl && {\n  position: 'absolute',\n  left: 0,\n  top: 0,\n  // slight alteration to spec spacing to match visual spec result\n  transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n  // Compensation for the `Input.inputSizeSmall` style.\n  transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n  transform: 'translate(0, -1.5px) scale(0.75)',\n  transformOrigin: 'top left',\n  maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n  transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n    duration: theme.transitions.duration.shorter,\n    easing: theme.transitions.easing.easeOut\n  })\n}, ownerState.variant === 'filled' && _extends({\n  // Chrome's autofill feature gives the input field a yellow background.\n  // Since the input field is behind the label in the HTML tree,\n  // the input field is drawn last and hides the label with an opaque background color.\n  // zIndex: 1 will raise the label above opaque background-colors of input.\n  zIndex: 1,\n  pointerEvents: 'none',\n  transform: 'translate(12px, 16px) scale(1)',\n  maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n  transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && _extends({\n  userSelect: 'none',\n  pointerEvents: 'auto',\n  transform: 'translate(12px, 7px) scale(0.75)',\n  maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n  transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && _extends({\n  // see comment above on filled.zIndex\n  zIndex: 1,\n  pointerEvents: 'none',\n  transform: 'translate(14px, 16px) scale(1)',\n  maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n  transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n  userSelect: 'none',\n  pointerEvents: 'auto',\n  maxWidth: 'calc(133% - 24px)',\n  transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n  const props = useThemeProps({\n    name: 'MuiInputLabel',\n    props: inProps\n  });\n  const {\n      disableAnimation = false,\n      shrink: shrinkProp,\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const muiFormControl = useFormControl();\n  let shrink = shrinkProp;\n  if (typeof shrink === 'undefined' && muiFormControl) {\n    shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n  }\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['size', 'variant', 'required']\n  });\n  const ownerState = _extends({}, props, {\n    disableAnimation,\n    formControl: muiFormControl,\n    shrink,\n    size: fcs.size,\n    variant: fcs.variant,\n    required: fcs.required\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(InputLabelRoot, _extends({\n    \"data-shrink\": shrink,\n    ownerState: ownerState,\n    ref: ref,\n    className: clsx(classes.root, className)\n  }, other, {\n    classes: classes\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the transition animation is disabled.\n   * @default false\n   */\n  disableAnimation: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` of this label is focused.\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   */\n  margin: PropTypes.oneOf(['dense']),\n  /**\n   * if `true`, the label will indicate that the `input` is required.\n   */\n  required: PropTypes.bool,\n  /**\n   * If `true`, the label is shrunk.\n   */\n  shrink: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'normal'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;", "export { default } from './InputLabel';\nexport { default as inputLabelClasses } from './inputLabelClasses';\nexport * from './inputLabelClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getLinearProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiLinearProgress', slot);\n}\nconst linearProgressClasses = generateUtilityClasses('MuiLinearProgress', ['root', 'colorPrimary', 'colorSecondary', 'determinate', 'indeterminate', 'buffer', 'query', 'dashed', 'dashedColorPrimary', 'dashedColorSecondary', 'bar', 'barColorPrimary', 'barColorSecondary', 'bar1Indeterminate', 'bar1Determinate', 'bar1Buffer', 'bar2Indeterminate', 'bar2Buffer']);\nexport default linearProgressClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"value\", \"valueBuffer\", \"variant\"];\nlet _ = t => t,\n  _t,\n  _t2,\n  _t3,\n  _t4,\n  _t5,\n  _t6;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { keyframes, css, darken, lighten } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport useTheme from '../styles/useTheme';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getLinearProgressUtilityClass } from './linearProgressClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst TRANSITION_DURATION = 4; // seconds\nconst indeterminate1Keyframe = keyframes(_t || (_t = _`\n  0% {\n    left: -35%;\n    right: 100%;\n  }\n\n  60% {\n    left: 100%;\n    right: -90%;\n  }\n\n  100% {\n    left: 100%;\n    right: -90%;\n  }\n`));\nconst indeterminate2Keyframe = keyframes(_t2 || (_t2 = _`\n  0% {\n    left: -200%;\n    right: 100%;\n  }\n\n  60% {\n    left: 107%;\n    right: -8%;\n  }\n\n  100% {\n    left: 107%;\n    right: -8%;\n  }\n`));\nconst bufferKeyframe = keyframes(_t3 || (_t3 = _`\n  0% {\n    opacity: 1;\n    background-position: 0 -23px;\n  }\n\n  60% {\n    opacity: 0;\n    background-position: 0 -23px;\n  }\n\n  100% {\n    opacity: 1;\n    background-position: -200px -23px;\n  }\n`));\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, variant],\n    dashed: ['dashed', `dashedColor${capitalize(color)}`],\n    bar1: ['bar', `barColor${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar1Indeterminate', variant === 'determinate' && 'bar1Determinate', variant === 'buffer' && 'bar1Buffer'],\n    bar2: ['bar', variant !== 'buffer' && `barColor${capitalize(color)}`, variant === 'buffer' && `color${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar2Indeterminate', variant === 'buffer' && 'bar2Buffer']\n  };\n  return composeClasses(slots, getLinearProgressUtilityClass, classes);\n};\nconst getColorShade = (theme, color) => {\n  if (color === 'inherit') {\n    return 'currentColor';\n  }\n  if (theme.vars) {\n    return theme.vars.palette.LinearProgress[`${color}Bg`];\n  }\n  return theme.palette.mode === 'light' ? lighten(theme.palette[color].main, 0.62) : darken(theme.palette[color].main, 0.5);\n};\nconst LinearProgressRoot = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`color${capitalize(ownerState.color)}`], styles[ownerState.variant]];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  position: 'relative',\n  overflow: 'hidden',\n  display: 'block',\n  height: 4,\n  zIndex: 0,\n  // Fix Safari's bug during composition of different paint.\n  '@media print': {\n    colorAdjust: 'exact'\n  },\n  backgroundColor: getColorShade(theme, ownerState.color)\n}, ownerState.color === 'inherit' && ownerState.variant !== 'buffer' && {\n  backgroundColor: 'none',\n  '&::before': {\n    content: '\"\"',\n    position: 'absolute',\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0,\n    backgroundColor: 'currentColor',\n    opacity: 0.3\n  }\n}, ownerState.variant === 'buffer' && {\n  backgroundColor: 'transparent'\n}, ownerState.variant === 'query' && {\n  transform: 'rotate(180deg)'\n}));\nconst LinearProgressDashed = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Dashed',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.dashed, styles[`dashedColor${capitalize(ownerState.color)}`]];\n  }\n})(({\n  ownerState,\n  theme\n}) => {\n  const backgroundColor = getColorShade(theme, ownerState.color);\n  return _extends({\n    position: 'absolute',\n    marginTop: 0,\n    height: '100%',\n    width: '100%'\n  }, ownerState.color === 'inherit' && {\n    opacity: 0.3\n  }, {\n    backgroundImage: `radial-gradient(${backgroundColor} 0%, ${backgroundColor} 16%, transparent 42%)`,\n    backgroundSize: '10px 10px',\n    backgroundPosition: '0 -23px'\n  });\n}, css(_t4 || (_t4 = _`\n    animation: ${0} 3s infinite linear;\n  `), bufferKeyframe));\nconst LinearProgressBar1 = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Bar1',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar1Indeterminate, ownerState.variant === 'determinate' && styles.bar1Determinate, ownerState.variant === 'buffer' && styles.bar1Buffer];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  width: '100%',\n  position: 'absolute',\n  left: 0,\n  bottom: 0,\n  top: 0,\n  transition: 'transform 0.2s linear',\n  transformOrigin: 'left',\n  backgroundColor: ownerState.color === 'inherit' ? 'currentColor' : (theme.vars || theme).palette[ownerState.color].main\n}, ownerState.variant === 'determinate' && {\n  transition: `transform .${TRANSITION_DURATION}s linear`\n}, ownerState.variant === 'buffer' && {\n  zIndex: 1,\n  transition: `transform .${TRANSITION_DURATION}s linear`\n}), ({\n  ownerState\n}) => (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && css(_t5 || (_t5 = _`\n      width: auto;\n      animation: ${0} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n    `), indeterminate1Keyframe));\nconst LinearProgressBar2 = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Bar2',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar2Indeterminate, ownerState.variant === 'buffer' && styles.bar2Buffer];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  width: '100%',\n  position: 'absolute',\n  left: 0,\n  bottom: 0,\n  top: 0,\n  transition: 'transform 0.2s linear',\n  transformOrigin: 'left'\n}, ownerState.variant !== 'buffer' && {\n  backgroundColor: ownerState.color === 'inherit' ? 'currentColor' : (theme.vars || theme).palette[ownerState.color].main\n}, ownerState.color === 'inherit' && {\n  opacity: 0.3\n}, ownerState.variant === 'buffer' && {\n  backgroundColor: getColorShade(theme, ownerState.color),\n  transition: `transform .${TRANSITION_DURATION}s linear`\n}), ({\n  ownerState\n}) => (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && css(_t6 || (_t6 = _`\n      width: auto;\n      animation: ${0} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;\n    `), indeterminate2Keyframe));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst LinearProgress = /*#__PURE__*/React.forwardRef(function LinearProgress(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiLinearProgress'\n  });\n  const {\n      className,\n      color = 'primary',\n      value,\n      valueBuffer,\n      variant = 'indeterminate'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const theme = useTheme();\n  const rootProps = {};\n  const inlineStyles = {\n    bar1: {},\n    bar2: {}\n  };\n  if (variant === 'determinate' || variant === 'buffer') {\n    if (value !== undefined) {\n      rootProps['aria-valuenow'] = Math.round(value);\n      rootProps['aria-valuemin'] = 0;\n      rootProps['aria-valuemax'] = 100;\n      let transform = value - 100;\n      if (theme.direction === 'rtl') {\n        transform = -transform;\n      }\n      inlineStyles.bar1.transform = `translateX(${transform}%)`;\n    } else if (process.env.NODE_ENV !== 'production') {\n      console.error('MUI: You need to provide a value prop ' + 'when using the determinate or buffer variant of LinearProgress .');\n    }\n  }\n  if (variant === 'buffer') {\n    if (valueBuffer !== undefined) {\n      let transform = (valueBuffer || 0) - 100;\n      if (theme.direction === 'rtl') {\n        transform = -transform;\n      }\n      inlineStyles.bar2.transform = `translateX(${transform}%)`;\n    } else if (process.env.NODE_ENV !== 'production') {\n      console.error('MUI: You need to provide a valueBuffer prop ' + 'when using the buffer variant of LinearProgress.');\n    }\n  }\n  return /*#__PURE__*/_jsxs(LinearProgressRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    role: \"progressbar\"\n  }, rootProps, {\n    ref: ref\n  }, other, {\n    children: [variant === 'buffer' ? /*#__PURE__*/_jsx(LinearProgressDashed, {\n      className: classes.dashed,\n      ownerState: ownerState\n    }) : null, /*#__PURE__*/_jsx(LinearProgressBar1, {\n      className: classes.bar1,\n      ownerState: ownerState,\n      style: inlineStyles.bar1\n    }), variant === 'determinate' ? null : /*#__PURE__*/_jsx(LinearProgressBar2, {\n      className: classes.bar2,\n      ownerState: ownerState,\n      style: inlineStyles.bar2\n    })]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? LinearProgress.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the progress indicator for the determinate and buffer variants.\n   * Value between 0 and 100.\n   */\n  value: PropTypes.number,\n  /**\n   * The value for the buffer variant.\n   * Value between 0 and 100.\n   */\n  valueBuffer: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate or query when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['buffer', 'determinate', 'indeterminate', 'query'])\n} : void 0;\nexport default LinearProgress;", "export { default } from './LinearProgress';\nexport { default as linearProgressClasses } from './linearProgressClasses';\nexport * from './linearProgressClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getLinkUtilityClass(slot) {\n  return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;", "export { default } from './Link';\nexport { default as linkClasses } from './linkClasses';\nexport * from './linkClasses';", "import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst ListContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  ListContext.displayName = 'ListContext';\n}\nexport default ListContext;", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListUtilityClass(slot) {\n  return generateUtilityClass('MuiList', slot);\n}\nconst listClasses = generateUtilityClasses('MuiList', ['root', 'padding', 'dense', 'subheader']);\nexport default listClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from './ListContext';\nimport { getListUtilityClass } from './listClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disablePadding,\n    dense,\n    subheader\n  } = ownerState;\n  const slots = {\n    root: ['root', !disablePadding && 'padding', dense && 'dense', subheader && 'subheader']\n  };\n  return composeClasses(slots, getListUtilityClass, classes);\n};\nconst ListRoot = styled('ul', {\n  name: 'MuiList',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disablePadding && styles.padding, ownerState.dense && styles.dense, ownerState.subheader && styles.subheader];\n  }\n})(({\n  ownerState\n}) => _extends({\n  listStyle: 'none',\n  margin: 0,\n  padding: 0,\n  position: 'relative'\n}, !ownerState.disablePadding && {\n  paddingTop: 8,\n  paddingBottom: 8\n}, ownerState.subheader && {\n  paddingTop: 0\n}));\nconst List = /*#__PURE__*/React.forwardRef(function List(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiList'\n  });\n  const {\n      children,\n      className,\n      component = 'ul',\n      dense = false,\n      disablePadding = false,\n      subheader\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const context = React.useMemo(() => ({\n    dense\n  }), [dense]);\n  const ownerState = _extends({}, props, {\n    component,\n    dense,\n    disablePadding\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: context,\n    children: /*#__PURE__*/_jsxs(ListRoot, _extends({\n      as: component,\n      className: clsx(classes.root, className),\n      ref: ref,\n      ownerState: ownerState\n    }, other, {\n      children: [subheader, children]\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n   * the list and list items.\n   * The prop is available to descendant components as the `dense` context.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, vertical padding is removed from the list.\n   * @default false\n   */\n  disablePadding: PropTypes.bool,\n  /**\n   * The content of the subheader, normally `ListSubheader`.\n   */\n  subheader: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default List;", "export { default } from './List';\nexport { default as listClasses } from './listClasses';\nexport * from './listClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemUtilityClass(slot) {\n  return generateUtilityClass('MuiListItem', slot);\n}\nconst listItemClasses = generateUtilityClasses('MuiListItem', ['root', 'container', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'padding', 'button', 'secondaryAction', 'selected']);\nexport default listItemClasses;", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemButton', slot);\n}\nconst listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);\nexport default listItemButtonClasses;", "export { default } from './ListItemButton';\nexport { default as listItemButtonClasses } from './listItemButtonClasses';\nexport * from './listItemButtonClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;", "export { default } from './ListItemSecondaryAction';\nexport { default as listItemSecondaryActionClasses } from './listItemSecondaryActionClasses';\nexport * from './listItemSecondaryActionClasses';", "export { default } from './ListItem';\nexport { default as listItemClasses } from './listItemClasses';\nexport * from './listItemClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemAvatarUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemAvatar', slot);\n}\nconst listItemAvatarClasses = generateUtilityClasses('MuiListItemAvatar', ['root', 'alignItemsFlexStart']);\nexport default listItemAvatarClasses;", "export { default } from './ListItemAvatar';\nexport { default as listItemAvatarClasses } from './listItemAvatarClasses';\nexport * from './listItemAvatarClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemIconUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemIcon', slot);\n}\nconst listItemIconClasses = generateUtilityClasses('MuiListItemIcon', ['root', 'alignItemsFlexStart']);\nexport default listItemIconClasses;", "export { default } from './ListItemIcon';\nexport { default as listItemIconClasses } from './listItemIconClasses';\nexport * from './listItemIconClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemTextUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemText', slot);\n}\nconst listItemTextClasses = generateUtilityClasses('MuiListItemText', ['root', 'multiline', 'dense', 'inset', 'primary', 'secondary']);\nexport default listItemTextClasses;", "export { default } from './ListItemText';\nexport { default as listItemTextClasses } from './listItemTextClasses';\nexport * from './listItemTextClasses';", "import { unstable_getScrollbarSize as getScrollbarSize } from '@mui/utils';\nexport default getScrollbarSize;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"disabledItemsFocusable\", \"disableListWrap\", \"onKeyDown\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport ownerDocument from '../utils/ownerDocument';\nimport List from '../List';\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction nextItem(list, item, disableListWrap) {\n  if (list === item) {\n    return list.firstChild;\n  }\n  if (item && item.nextElementSibling) {\n    return item.nextElementSibling;\n  }\n  return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n  if (list === item) {\n    return disableListWrap ? list.firstChild : list.lastChild;\n  }\n  if (item && item.previousElementSibling) {\n    return item.previousElementSibling;\n  }\n  return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n  if (textCriteria === undefined) {\n    return true;\n  }\n  let text = nextFocus.innerText;\n  if (text === undefined) {\n    // jsdom doesn't support innerText\n    text = nextFocus.textContent;\n  }\n  text = text.trim().toLowerCase();\n  if (text.length === 0) {\n    return false;\n  }\n  if (textCriteria.repeating) {\n    return text[0] === textCriteria.keys[0];\n  }\n  return text.indexOf(textCriteria.keys.join('')) === 0;\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n  let wrappedOnce = false;\n  let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n  while (nextFocus) {\n    // Prevent infinite loop.\n    if (nextFocus === list.firstChild) {\n      if (wrappedOnce) {\n        return false;\n      }\n      wrappedOnce = true;\n    }\n\n    // Same logic as useAutocomplete.js\n    const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n    if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n      // Move to the next element.\n      nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n    } else {\n      nextFocus.focus();\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * A permanently displayed menu following https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/.\n * It's exposed to help customization of the [`Menu`](/material-ui/api/menu/) component if you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\nconst MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n  const {\n      // private\n      // eslint-disable-next-line react/prop-types\n      actions,\n      autoFocus = false,\n      autoFocusItem = false,\n      children,\n      className,\n      disabledItemsFocusable = false,\n      disableListWrap = false,\n      onKeyDown,\n      variant = 'selectedMenu'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const listRef = React.useRef(null);\n  const textCriteriaRef = React.useRef({\n    keys: [],\n    repeating: true,\n    previousKeyMatched: true,\n    lastTime: null\n  });\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      listRef.current.focus();\n    }\n  }, [autoFocus]);\n  React.useImperativeHandle(actions, () => ({\n    adjustStyleForScrollbar: (containerElement, theme) => {\n      // Let's ignore that piece of logic if users are already overriding the width\n      // of the menu.\n      const noExplicitWidth = !listRef.current.style.width;\n      if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n        const scrollbarSize = `${getScrollbarSize(ownerDocument(containerElement))}px`;\n        listRef.current.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n        listRef.current.style.width = `calc(100% + ${scrollbarSize})`;\n      }\n      return listRef.current;\n    }\n  }), []);\n  const handleKeyDown = event => {\n    const list = listRef.current;\n    const key = event.key;\n    /**\n     * @type {Element} - will always be defined since we are in a keydown handler\n     * attached to an element. A keydown event is either dispatched to the activeElement\n     * or document.body or document.documentElement. Only the first case will\n     * trigger this specific handler.\n     */\n    const currentFocus = ownerDocument(list).activeElement;\n    if (key === 'ArrowDown') {\n      // Prevent scroll of the page\n      event.preventDefault();\n      moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n    } else if (key === 'ArrowUp') {\n      event.preventDefault();\n      moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n    } else if (key === 'Home') {\n      event.preventDefault();\n      moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n    } else if (key === 'End') {\n      event.preventDefault();\n      moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n    } else if (key.length === 1) {\n      const criteria = textCriteriaRef.current;\n      const lowerKey = key.toLowerCase();\n      const currTime = performance.now();\n      if (criteria.keys.length > 0) {\n        // Reset\n        if (currTime - criteria.lastTime > 500) {\n          criteria.keys = [];\n          criteria.repeating = true;\n          criteria.previousKeyMatched = true;\n        } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n          criteria.repeating = false;\n        }\n      }\n      criteria.lastTime = currTime;\n      criteria.keys.push(lowerKey);\n      const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n      if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n        event.preventDefault();\n      } else {\n        criteria.previousKeyMatched = false;\n      }\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n  };\n  const handleRef = useForkRef(listRef, ref);\n\n  /**\n   * the index of the item should receive focus\n   * in a `variant=\"selectedMenu\"` it's the first `selected` item\n   * otherwise it's the very first item.\n   */\n  let activeItemIndex = -1;\n  // since we inject focus related props into children we have to do a lookahead\n  // to check if there is a `selected` item. We're looking for the last `selected`\n  // item and use the first valid item as a fallback\n  React.Children.forEach(children, (child, index) => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    if (!child.props.disabled) {\n      if (variant === 'selectedMenu' && child.props.selected) {\n        activeItemIndex = index;\n      } else if (activeItemIndex === -1) {\n        activeItemIndex = index;\n      }\n    }\n  });\n  const items = React.Children.map(children, (child, index) => {\n    if (index === activeItemIndex) {\n      const newChildProps = {};\n      if (autoFocusItem) {\n        newChildProps.autoFocus = true;\n      }\n      if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n        newChildProps.tabIndex = 0;\n      }\n      return /*#__PURE__*/React.cloneElement(child, newChildProps);\n    }\n    return child;\n  });\n  return /*#__PURE__*/_jsx(List, _extends({\n    role: \"menu\",\n    ref: handleRef,\n    className: className,\n    onKeyDown: handleKeyDown,\n    tabIndex: autoFocus ? 0 : -1\n  }, other, {\n    children: items\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n   * if `variant=\"selectedMenu\"`.\n   * @default false\n   */\n  autoFocusItem: PropTypes.bool,\n  /**\n   * MenuList contents, normally `MenuItem`s.\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, will allow focus on disabled items.\n   * @default false\n   */\n  disabledItemsFocusable: PropTypes.bool,\n  /**\n   * If `true`, the menu items will not wrap focus.\n   * @default false\n   */\n  disableListWrap: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n   * and the vertical alignment relative to the anchor element.\n   * @default 'selectedMenu'\n   */\n  variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;", "export { default } from './MenuList';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getPopoverUtilityClass(slot) {\n  return generateUtilityClass('MuiPopover', slot);\n}\nconst popoverClasses = generateUtilityClasses('MuiPopover', ['root', 'paper']);\nexport default popoverClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onEntering\"],\n  _excluded2 = [\"action\", \"anchorEl\", \"anchorOrigin\", \"anchorPosition\", \"anchorReference\", \"children\", \"className\", \"container\", \"elevation\", \"marginThreshold\", \"open\", \"PaperProps\", \"transformOrigin\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { chainPropTypes, integerPropType, elementTypeAcceptingRef, refType, HTMLElementType } from '@mui/utils';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport debounce from '../utils/debounce';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport useForkRef from '../utils/useForkRef';\nimport Grow from '../Grow';\nimport Modal from '../Modal';\nimport Paper from '../Paper';\nimport { getPopoverUtilityClass } from './popoverClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getOffsetTop(rect, vertical) {\n  let offset = 0;\n  if (typeof vertical === 'number') {\n    offset = vertical;\n  } else if (vertical === 'center') {\n    offset = rect.height / 2;\n  } else if (vertical === 'bottom') {\n    offset = rect.height;\n  }\n  return offset;\n}\nexport function getOffsetLeft(rect, horizontal) {\n  let offset = 0;\n  if (typeof horizontal === 'number') {\n    offset = horizontal;\n  } else if (horizontal === 'center') {\n    offset = rect.width / 2;\n  } else if (horizontal === 'right') {\n    offset = rect.width;\n  }\n  return offset;\n}\nfunction getTransformOriginValue(transformOrigin) {\n  return [transformOrigin.horizontal, transformOrigin.vertical].map(n => typeof n === 'number' ? `${n}px` : n).join(' ');\n}\nfunction resolveAnchorEl(anchorEl) {\n  return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    paper: ['paper']\n  };\n  return composeClasses(slots, getPopoverUtilityClass, classes);\n};\nconst PopoverRoot = styled(Modal, {\n  name: 'MuiPopover',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\nconst PopoverPaper = styled(Paper, {\n  name: 'MuiPopover',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})({\n  position: 'absolute',\n  overflowY: 'auto',\n  overflowX: 'hidden',\n  // So we see the popover when it's empty.\n  // It's most likely on issue on userland.\n  minWidth: 16,\n  minHeight: 16,\n  maxWidth: 'calc(100% - 32px)',\n  maxHeight: 'calc(100% - 32px)',\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n});\nconst Popover = /*#__PURE__*/React.forwardRef(function Popover(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPopover'\n  });\n  const {\n      action,\n      anchorEl,\n      anchorOrigin = {\n        vertical: 'top',\n        horizontal: 'left'\n      },\n      anchorPosition,\n      anchorReference = 'anchorEl',\n      children,\n      className,\n      container: containerProp,\n      elevation = 8,\n      marginThreshold = 16,\n      open,\n      PaperProps = {},\n      transformOrigin = {\n        vertical: 'top',\n        horizontal: 'left'\n      },\n      TransitionComponent = Grow,\n      transitionDuration: transitionDurationProp = 'auto',\n      TransitionProps: {\n        onEntering\n      } = {}\n    } = props,\n    TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  const paperRef = React.useRef();\n  const handlePaperRef = useForkRef(paperRef, PaperProps.ref);\n  const ownerState = _extends({}, props, {\n    anchorOrigin,\n    anchorReference,\n    elevation,\n    marginThreshold,\n    PaperProps,\n    transformOrigin,\n    TransitionComponent,\n    transitionDuration: transitionDurationProp,\n    TransitionProps\n  });\n  const classes = useUtilityClasses(ownerState);\n\n  // Returns the top/left offset of the position\n  // to attach to on the anchor element (or body if none is provided)\n  const getAnchorOffset = React.useCallback(() => {\n    if (anchorReference === 'anchorPosition') {\n      if (process.env.NODE_ENV !== 'production') {\n        if (!anchorPosition) {\n          console.error('MUI: You need to provide a `anchorPosition` prop when using ' + '<Popover anchorReference=\"anchorPosition\" />.');\n        }\n      }\n      return anchorPosition;\n    }\n    const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n\n    // If an anchor element wasn't provided, just use the parent body element of this Popover\n    const anchorElement = resolvedAnchorEl && resolvedAnchorEl.nodeType === 1 ? resolvedAnchorEl : ownerDocument(paperRef.current).body;\n    const anchorRect = anchorElement.getBoundingClientRect();\n    if (process.env.NODE_ENV !== 'production') {\n      const box = anchorElement.getBoundingClientRect();\n      if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n        console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n      }\n    }\n    return {\n      top: anchorRect.top + getOffsetTop(anchorRect, anchorOrigin.vertical),\n      left: anchorRect.left + getOffsetLeft(anchorRect, anchorOrigin.horizontal)\n    };\n  }, [anchorEl, anchorOrigin.horizontal, anchorOrigin.vertical, anchorPosition, anchorReference]);\n\n  // Returns the base transform origin using the element\n  const getTransformOrigin = React.useCallback(elemRect => {\n    return {\n      vertical: getOffsetTop(elemRect, transformOrigin.vertical),\n      horizontal: getOffsetLeft(elemRect, transformOrigin.horizontal)\n    };\n  }, [transformOrigin.horizontal, transformOrigin.vertical]);\n  const getPositioningStyle = React.useCallback(element => {\n    const elemRect = {\n      width: element.offsetWidth,\n      height: element.offsetHeight\n    };\n\n    // Get the transform origin point on the element itself\n    const elemTransformOrigin = getTransformOrigin(elemRect);\n    if (anchorReference === 'none') {\n      return {\n        top: null,\n        left: null,\n        transformOrigin: getTransformOriginValue(elemTransformOrigin)\n      };\n    }\n\n    // Get the offset of the anchoring element\n    const anchorOffset = getAnchorOffset();\n\n    // Calculate element positioning\n    let top = anchorOffset.top - elemTransformOrigin.vertical;\n    let left = anchorOffset.left - elemTransformOrigin.horizontal;\n    const bottom = top + elemRect.height;\n    const right = left + elemRect.width;\n\n    // Use the parent window of the anchorEl if provided\n    const containerWindow = ownerWindow(resolveAnchorEl(anchorEl));\n\n    // Window thresholds taking required margin into account\n    const heightThreshold = containerWindow.innerHeight - marginThreshold;\n    const widthThreshold = containerWindow.innerWidth - marginThreshold;\n\n    // Check if the vertical axis needs shifting\n    if (top < marginThreshold) {\n      const diff = top - marginThreshold;\n      top -= diff;\n      elemTransformOrigin.vertical += diff;\n    } else if (bottom > heightThreshold) {\n      const diff = bottom - heightThreshold;\n      top -= diff;\n      elemTransformOrigin.vertical += diff;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (elemRect.height > heightThreshold && elemRect.height && heightThreshold) {\n        console.error(['MUI: The popover component is too tall.', `Some part of it can not be seen on the screen (${elemRect.height - heightThreshold}px).`, 'Please consider adding a `max-height` to improve the user-experience.'].join('\\n'));\n      }\n    }\n\n    // Check if the horizontal axis needs shifting\n    if (left < marginThreshold) {\n      const diff = left - marginThreshold;\n      left -= diff;\n      elemTransformOrigin.horizontal += diff;\n    } else if (right > widthThreshold) {\n      const diff = right - widthThreshold;\n      left -= diff;\n      elemTransformOrigin.horizontal += diff;\n    }\n    return {\n      top: `${Math.round(top)}px`,\n      left: `${Math.round(left)}px`,\n      transformOrigin: getTransformOriginValue(elemTransformOrigin)\n    };\n  }, [anchorEl, anchorReference, getAnchorOffset, getTransformOrigin, marginThreshold]);\n  const [isPositioned, setIsPositioned] = React.useState(open);\n  const setPositioningStyles = React.useCallback(() => {\n    const element = paperRef.current;\n    if (!element) {\n      return;\n    }\n    const positioning = getPositioningStyle(element);\n    if (positioning.top !== null) {\n      element.style.top = positioning.top;\n    }\n    if (positioning.left !== null) {\n      element.style.left = positioning.left;\n    }\n    element.style.transformOrigin = positioning.transformOrigin;\n    setIsPositioned(true);\n  }, [getPositioningStyle]);\n  const handleEntering = (element, isAppearing) => {\n    if (onEntering) {\n      onEntering(element, isAppearing);\n    }\n    setPositioningStyles();\n  };\n  const handleExited = () => {\n    setIsPositioned(false);\n  };\n  React.useEffect(() => {\n    if (open) {\n      setPositioningStyles();\n    }\n  });\n  React.useImperativeHandle(action, () => open ? {\n    updatePosition: () => {\n      setPositioningStyles();\n    }\n  } : null, [open, setPositioningStyles]);\n  React.useEffect(() => {\n    if (!open) {\n      return undefined;\n    }\n    const handleResize = debounce(() => {\n      setPositioningStyles();\n    });\n    const containerWindow = ownerWindow(anchorEl);\n    containerWindow.addEventListener('resize', handleResize);\n    return () => {\n      handleResize.clear();\n      containerWindow.removeEventListener('resize', handleResize);\n    };\n  }, [anchorEl, open, setPositioningStyles]);\n  let transitionDuration = transitionDurationProp;\n  if (transitionDurationProp === 'auto' && !TransitionComponent.muiSupportAuto) {\n    transitionDuration = undefined;\n  }\n\n  // If the container prop is provided, use that\n  // If the anchorEl prop is provided, use its parent body element as the container\n  // If neither are provided let the Modal take care of choosing the container\n  const container = containerProp || (anchorEl ? ownerDocument(resolveAnchorEl(anchorEl)).body : undefined);\n  return /*#__PURE__*/_jsx(PopoverRoot, _extends({\n    BackdropProps: {\n      invisible: true\n    },\n    className: clsx(classes.root, className),\n    container: container,\n    open: open,\n    ref: ref,\n    ownerState: ownerState\n  }, other, {\n    children: /*#__PURE__*/_jsx(TransitionComponent, _extends({\n      appear: true,\n      in: open,\n      onEntering: handleEntering,\n      onExited: handleExited,\n      timeout: transitionDuration\n    }, TransitionProps, {\n      children: /*#__PURE__*/_jsx(PopoverPaper, _extends({\n        elevation: elevation\n      }, PaperProps, {\n        ref: handlePaperRef,\n        className: clsx(classes.paper, PaperProps.className)\n      }, isPositioned ? undefined : {\n        style: _extends({}, PaperProps.style, {\n          opacity: 0\n        })\n      }, {\n        ownerState: ownerState,\n        children: children\n      }))\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popover.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * A ref for imperative actions.\n   * It currently only supports updatePosition() action.\n   */\n  action: refType,\n  /**\n   * An HTML element, or a function that returns one.\n   * It's used to set the position of the popover.\n   */\n  anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.func]), props => {\n    if (props.open && (!props.anchorReference || props.anchorReference === 'anchorEl')) {\n      const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n      if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {\n        const box = resolvedAnchorEl.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      } else {\n        return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', `It should be an Element instance but it's \\`${resolvedAnchorEl}\\` instead.`].join('\\n'));\n      }\n    }\n    return null;\n  }),\n  /**\n   * This is the point on the anchor where the popover's\n   * `anchorEl` will attach to. This is not used when the\n   * anchorReference is 'anchorPosition'.\n   *\n   * Options:\n   * vertical: [top, center, bottom];\n   * horizontal: [left, center, right].\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'left',\n   * }\n   */\n  anchorOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n    vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n  }),\n  /**\n   * This is the position that may be used to set the position of the popover.\n   * The coordinates are relative to the application's client area.\n   */\n  anchorPosition: PropTypes.shape({\n    left: PropTypes.number.isRequired,\n    top: PropTypes.number.isRequired\n  }),\n  /**\n   * This determines which anchor prop to refer to when setting\n   * the position of the popover.\n   * @default 'anchorEl'\n   */\n  anchorReference: PropTypes.oneOf(['anchorEl', 'anchorPosition', 'none']),\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * An HTML element, component instance, or function that returns either.\n   * The `container` will passed to the Modal component.\n   *\n   * By default, it uses the body of the anchorEl's top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * The elevation of the popover.\n   * @default 8\n   */\n  elevation: integerPropType,\n  /**\n   * Specifies how close to the edge of the window the popover can appear.\n   * @default 16\n   */\n  marginThreshold: PropTypes.number,\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * Props applied to the [`Paper`](/material-ui/api/paper/) element.\n   * @default {}\n   */\n  PaperProps: PropTypes /* @typescript-to-proptypes-ignore */.shape({\n    component: elementTypeAcceptingRef\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * This is the point on the popover which\n   * will attach to the anchor's origin.\n   *\n   * Options:\n   * vertical: [top, center, bottom, x(px)];\n   * horizontal: [left, center, right, x(px)].\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'left',\n   * }\n   */\n  transformOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n    vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n  }),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Grow\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default 'auto'\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n   * @default {}\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Popover;", "export { default } from './Popover';\nexport * from './Popover';\nexport { default as popoverClasses } from './popoverClasses';\nexport * from './popoverClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getMenuUtilityClass(slot) {\n  return generateUtilityClass('MuiMenu', slot);\n}\nconst menuClasses = generateUtilityClasses('MuiMenu', ['root', 'paper', 'list']);\nexport default menuClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onEntering\"],\n  _excluded2 = [\"autoFocus\", \"children\", \"disableAutoFocusItem\", \"MenuListProps\", \"onClose\", \"open\", \"PaperProps\", \"PopoverClasses\", \"transitionDuration\", \"TransitionProps\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { HTMLElementType } from '@mui/utils';\nimport MenuList from '../MenuList';\nimport Paper from '../Paper';\nimport Popover from '../Popover';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getMenuUtilityClass } from './menuClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RTL_ORIGIN = {\n  vertical: 'top',\n  horizontal: 'right'\n};\nconst LTR_ORIGIN = {\n  vertical: 'top',\n  horizontal: 'left'\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    paper: ['paper'],\n    list: ['list']\n  };\n  return composeClasses(slots, getMenuUtilityClass, classes);\n};\nconst MenuRoot = styled(Popover, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiMenu',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\nconst MenuPaper = styled(Paper, {\n  name: 'MuiMenu',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})({\n  // specZ: The maximum height of a simple menu should be one or more rows less than the view\n  // height. This ensures a tapable area outside of the simple menu with which to dismiss\n  // the menu.\n  maxHeight: 'calc(100% - 96px)',\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch'\n});\nconst MenuMenuList = styled(MenuList, {\n  name: 'MuiMenu',\n  slot: 'List',\n  overridesResolver: (props, styles) => styles.list\n})({\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n});\nconst Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiMenu'\n  });\n  const {\n      autoFocus = true,\n      children,\n      disableAutoFocusItem = false,\n      MenuListProps = {},\n      onClose,\n      open,\n      PaperProps = {},\n      PopoverClasses,\n      transitionDuration = 'auto',\n      TransitionProps: {\n        onEntering\n      } = {},\n      variant = 'selectedMenu'\n    } = props,\n    TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  const theme = useTheme();\n  const isRtl = theme.direction === 'rtl';\n  const ownerState = _extends({}, props, {\n    autoFocus,\n    disableAutoFocusItem,\n    MenuListProps,\n    onEntering,\n    PaperProps,\n    transitionDuration,\n    TransitionProps,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const autoFocusItem = autoFocus && !disableAutoFocusItem && open;\n  const menuListActionsRef = React.useRef(null);\n  const handleEntering = (element, isAppearing) => {\n    if (menuListActionsRef.current) {\n      menuListActionsRef.current.adjustStyleForScrollbar(element, theme);\n    }\n    if (onEntering) {\n      onEntering(element, isAppearing);\n    }\n  };\n  const handleListKeyDown = event => {\n    if (event.key === 'Tab') {\n      event.preventDefault();\n      if (onClose) {\n        onClose(event, 'tabKeyDown');\n      }\n    }\n  };\n\n  /**\n   * the index of the item should receive focus\n   * in a `variant=\"selectedMenu\"` it's the first `selected` item\n   * otherwise it's the very first item.\n   */\n  let activeItemIndex = -1;\n  // since we inject focus related props into children we have to do a lookahead\n  // to check if there is a `selected` item. We're looking for the last `selected`\n  // item and use the first valid item as a fallback\n  React.Children.map(children, (child, index) => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    if (!child.props.disabled) {\n      if (variant === 'selectedMenu' && child.props.selected) {\n        activeItemIndex = index;\n      } else if (activeItemIndex === -1) {\n        activeItemIndex = index;\n      }\n    }\n  });\n  return /*#__PURE__*/_jsx(MenuRoot, _extends({\n    onClose: onClose,\n    anchorOrigin: {\n      vertical: 'bottom',\n      horizontal: isRtl ? 'right' : 'left'\n    },\n    transformOrigin: isRtl ? RTL_ORIGIN : LTR_ORIGIN,\n    PaperProps: _extends({\n      component: MenuPaper\n    }, PaperProps, {\n      classes: _extends({}, PaperProps.classes, {\n        root: classes.paper\n      })\n    }),\n    className: classes.root,\n    open: open,\n    ref: ref,\n    transitionDuration: transitionDuration,\n    TransitionProps: _extends({\n      onEntering: handleEntering\n    }, TransitionProps),\n    ownerState: ownerState\n  }, other, {\n    classes: PopoverClasses,\n    children: /*#__PURE__*/_jsx(MenuMenuList, _extends({\n      onKeyDown: handleListKeyDown,\n      actions: menuListActionsRef,\n      autoFocus: autoFocus && (activeItemIndex === -1 || disableAutoFocusItem),\n      autoFocusItem: autoFocusItem,\n      variant: variant\n    }, MenuListProps, {\n      className: clsx(classes.list, MenuListProps.className),\n      children: children\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Menu.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * An HTML element, or a function that returns one.\n   * It's used to set the position of the menu.\n   */\n  anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * If `true` (Default) will focus the `[role=\"menu\"]` if no focusable child is found. Disabled\n   * children are not focusable. If you set this prop to `false` focus will be placed\n   * on the parent modal container. This has severe accessibility implications\n   * and should only be considered if you manage focus otherwise.\n   * @default true\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Menu contents, normally `MenuItem`s.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * When opening the menu will not focus the active item but the `[role=\"menu\"]`\n   * unless `autoFocus` is also set to `false`. Not using the default means not\n   * following WAI-ARIA authoring practices. Please be considerate about possible\n   * accessibility implications.\n   * @default false\n   */\n  disableAutoFocusItem: PropTypes.bool,\n  /**\n   * Props applied to the [`MenuList`](/material-ui/api/menu-list/) element.\n   * @default {}\n   */\n  MenuListProps: PropTypes.object,\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`, `\"tabKeyDown\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * @ignore\n   */\n  PaperProps: PropTypes.object,\n  /**\n   * `classes` prop applied to the [`Popover`](/material-ui/api/popover/) element.\n   */\n  PopoverClasses: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The length of the transition in `ms`, or 'auto'\n   * @default 'auto'\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n   * @default {}\n   */\n  TransitionProps: PropTypes.object,\n  /**\n   * The variant to use. Use `menu` to prevent selected items from impacting the initial focus.\n   * @default 'selectedMenu'\n   */\n  variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default Menu;", "export { default } from './Menu';\nexport { default as menuClasses } from './menuClasses';\nexport * from './menuClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getMenuItemUtilityClass(slot) {\n  return generateUtilityClass('MuiMenuItem', slot);\n}\nconst menuItemClasses = generateUtilityClasses('MuiMenuItem', ['root', 'focusVisible', 'dense', 'disabled', 'divider', 'gutters', 'selected']);\nexport default menuItemClasses;", "export { default } from './MenuItem';\nexport * from './menuItemClasses';\nexport { default as menuItemClasses } from './menuItemClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getMobileStepperUtilityClass(slot) {\n  return generateUtilityClass('MuiMobileStepper', slot);\n}\nconst mobileStepperClasses = generateUtilityClasses('MuiMobileStepper', ['root', 'positionBottom', 'positionTop', 'positionStatic', 'dots', 'dot', 'dotActive', 'progress']);\nexport default mobileStepperClasses;", "export { default } from './MobileStepper';\nexport { default as mobileStepperClasses } from './mobileStepperClasses';\nexport * from './mobileStepperClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getNativeSelectUtilityClasses(slot) {\n  return generateUtilityClass('MuiNativeSelect', slot);\n}\nconst nativeSelectClasses = generateUtilityClasses('MuiNativeSelect', ['root', 'select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput']);\nexport default nativeSelectClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disabled\", \"IconComponent\", \"inputRef\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport nativeSelectClasses, { getNativeSelectUtilityClasses } from './nativeSelectClasses';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    disabled,\n    multiple,\n    open\n  } = ownerState;\n  const slots = {\n    select: ['select', variant, disabled && 'disabled', multiple && 'multiple'],\n    icon: ['icon', `icon${capitalize(variant)}`, open && 'iconOpen', disabled && 'disabled']\n  };\n  return composeClasses(slots, getNativeSelectUtilityClasses, classes);\n};\nexport const nativeSelectSelectStyles = ({\n  ownerState,\n  theme\n}) => _extends({\n  MozAppearance: 'none',\n  // Reset\n  WebkitAppearance: 'none',\n  // Reset\n  // When interacting quickly, the text can end up selected.\n  // Native select can't be selected either.\n  userSelect: 'none',\n  borderRadius: 0,\n  // Reset\n  cursor: 'pointer',\n  '&:focus': _extends({}, theme.vars ? {\n    backgroundColor: `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.05)`\n  } : {\n    backgroundColor: theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.05)' : 'rgba(255, 255, 255, 0.05)'\n  }, {\n    borderRadius: 0 // Reset Chrome style\n  }),\n\n  // Remove IE11 arrow\n  '&::-ms-expand': {\n    display: 'none'\n  },\n  [`&.${nativeSelectClasses.disabled}`]: {\n    cursor: 'default'\n  },\n  '&[multiple]': {\n    height: 'auto'\n  },\n  '&:not([multiple]) option, &:not([multiple]) optgroup': {\n    backgroundColor: (theme.vars || theme).palette.background.paper\n  },\n  // Bump specificity to allow extending custom inputs\n  '&&&': {\n    paddingRight: 24,\n    minWidth: 16 // So it doesn't collapse.\n  }\n}, ownerState.variant === 'filled' && {\n  '&&&': {\n    paddingRight: 32\n  }\n}, ownerState.variant === 'outlined' && {\n  borderRadius: (theme.vars || theme).shape.borderRadius,\n  '&:focus': {\n    borderRadius: (theme.vars || theme).shape.borderRadius // Reset the reset for Chrome style\n  },\n\n  '&&&': {\n    paddingRight: 32\n  }\n});\nconst NativeSelectSelect = styled('select', {\n  name: 'MuiNativeSelect',\n  slot: 'Select',\n  shouldForwardProp: rootShouldForwardProp,\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.select, styles[ownerState.variant], {\n      [`&.${nativeSelectClasses.multiple}`]: styles.multiple\n    }];\n  }\n})(nativeSelectSelectStyles);\nexport const nativeSelectIconStyles = ({\n  ownerState,\n  theme\n}) => _extends({\n  // We use a position absolute over a flexbox in order to forward the pointer events\n  // to the input and to support wrapping tags..\n  position: 'absolute',\n  right: 0,\n  top: 'calc(50% - .5em)',\n  // Center vertically, height is 1em\n  pointerEvents: 'none',\n  // Don't block pointer events on the select under the icon.\n  color: (theme.vars || theme).palette.action.active,\n  [`&.${nativeSelectClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  }\n}, ownerState.open && {\n  transform: 'rotate(180deg)'\n}, ownerState.variant === 'filled' && {\n  right: 7\n}, ownerState.variant === 'outlined' && {\n  right: 7\n});\nconst NativeSelectIcon = styled('svg', {\n  name: 'MuiNativeSelect',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, ownerState.variant && styles[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n  }\n})(nativeSelectIconStyles);\n\n/**\n * @ignore - internal component.\n */\nconst NativeSelectInput = /*#__PURE__*/React.forwardRef(function NativeSelectInput(props, ref) {\n  const {\n      className,\n      disabled,\n      IconComponent,\n      inputRef,\n      variant = 'standard'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    disabled,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(NativeSelectSelect, _extends({\n      ownerState: ownerState,\n      className: clsx(classes.select, className),\n      disabled: disabled,\n      ref: inputRef || ref\n    }, other)), props.multiple ? null : /*#__PURE__*/_jsx(NativeSelectIcon, {\n      as: IconComponent,\n      ownerState: ownerState,\n      className: classes.icon\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? NativeSelectInput.propTypes = {\n  /**\n   * The option elements to populate the select with.\n   * Can be some `<option>` elements.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object,\n  /**\n   * The CSS class name of the select element.\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the select is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * The icon that displays the arrow.\n   */\n  IconComponent: PropTypes.elementType.isRequired,\n  /**\n   * Use that prop to pass a ref to the native select element.\n   * @deprecated\n   */\n  inputRef: refType,\n  /**\n   * @ignore\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Name attribute of the `select` or hidden `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The input value.\n   */\n  value: PropTypes.any,\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default NativeSelectInput;", "export { default } from './NativeSelect';\nexport { default as nativeSelectClasses } from './nativeSelectClasses';\nexport * from './nativeSelectClasses';", "export { default } from '@mui/base/NoSsr';", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"classes\", \"className\", \"label\", \"notched\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NotchedOutlineRoot = styled('fieldset')({\n  textAlign: 'left',\n  position: 'absolute',\n  bottom: 0,\n  right: 0,\n  top: -5,\n  left: 0,\n  margin: 0,\n  padding: '0 8px',\n  pointerEvents: 'none',\n  borderRadius: 'inherit',\n  borderStyle: 'solid',\n  borderWidth: 1,\n  overflow: 'hidden',\n  minWidth: '0%'\n});\nconst NotchedOutlineLegend = styled('legend')(({\n  ownerState,\n  theme\n}) => _extends({\n  float: 'unset',\n  // Fix conflict with bootstrap\n  width: 'auto',\n  // Fix conflict with bootstrap\n  overflow: 'hidden'\n}, !ownerState.withLabel && {\n  padding: 0,\n  lineHeight: '11px',\n  // sync with `height` in `legend` styles\n  transition: theme.transitions.create('width', {\n    duration: 150,\n    easing: theme.transitions.easing.easeOut\n  })\n}, ownerState.withLabel && _extends({\n  display: 'block',\n  // Fix conflict with normalize.css and sanitize.css\n  padding: 0,\n  height: 11,\n  // sync with `lineHeight` in `legend` styles\n  fontSize: '0.75em',\n  visibility: 'hidden',\n  maxWidth: 0.01,\n  transition: theme.transitions.create('max-width', {\n    duration: 50,\n    easing: theme.transitions.easing.easeOut\n  }),\n  whiteSpace: 'nowrap',\n  '& > span': {\n    paddingLeft: 5,\n    paddingRight: 5,\n    display: 'inline-block',\n    opacity: 0,\n    visibility: 'visible'\n  }\n}, ownerState.notched && {\n  maxWidth: '100%',\n  transition: theme.transitions.create('max-width', {\n    duration: 100,\n    easing: theme.transitions.easing.easeOut,\n    delay: 50\n  })\n})));\n\n/**\n * @ignore - internal component.\n */\nexport default function NotchedOutline(props) {\n  const {\n      className,\n      label,\n      notched\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const withLabel = label != null && label !== '';\n  const ownerState = _extends({}, props, {\n    notched,\n    withLabel\n  });\n  return /*#__PURE__*/_jsx(NotchedOutlineRoot, _extends({\n    \"aria-hidden\": true,\n    className: className,\n    ownerState: ownerState\n  }, other, {\n    children: /*#__PURE__*/_jsx(NotchedOutlineLegend, {\n      ownerState: ownerState,\n      children: withLabel ? /*#__PURE__*/_jsx(\"span\", {\n        children: label\n      }) : // notranslate needed while Google Translate will not fix zero-width space issue\n      _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n        className: \"notranslate\",\n        children: \"\\u200B\"\n      }))\n    })\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? NotchedOutline.propTypes = {\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The label.\n   */\n  label: PropTypes.node,\n  /**\n   * If `true`, the outline is notched to accommodate the label.\n   */\n  notched: PropTypes.bool.isRequired,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object\n} : void 0;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"components\", \"fullWidth\", \"inputComponent\", \"label\", \"multiline\", \"notched\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport NotchedOutline from './NotchedOutline';\nimport useFormControl from '../FormControl/useFormControl';\nimport formControlState from '../FormControl/formControlState';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport outlinedInputClasses, { getOutlinedInputUtilityClass } from './outlinedInputClasses';\nimport InputBase, { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    notchedOutline: ['notchedOutline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getOutlinedInputUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst OutlinedInputRoot = styled(InputBaseRoot, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiOutlinedInput',\n  slot: 'Root',\n  overridesResolver: inputBaseRootOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n  return _extends({\n    position: 'relative',\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.text.primary\n    },\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n        borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n      }\n    },\n    [`&.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette[ownerState.color].main,\n      borderWidth: 2\n    },\n    [`&.${outlinedInputClasses.error} .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.error.main\n    },\n    [`&.${outlinedInputClasses.disabled} .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.action.disabled\n    }\n  }, ownerState.startAdornment && {\n    paddingLeft: 14\n  }, ownerState.endAdornment && {\n    paddingRight: 14\n  }, ownerState.multiline && _extends({\n    padding: '16.5px 14px'\n  }, ownerState.size === 'small' && {\n    padding: '8.5px 14px'\n  }));\n});\nconst NotchedOutlineRoot = styled(NotchedOutline, {\n  name: 'MuiOutlinedInput',\n  slot: 'NotchedOutline',\n  overridesResolver: (props, styles) => styles.notchedOutline\n})(({\n  theme\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n  return {\n    borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n  };\n});\nconst OutlinedInputInput = styled(InputBaseInput, {\n  name: 'MuiOutlinedInput',\n  slot: 'Input',\n  overridesResolver: inputBaseInputOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  padding: '16.5px 14px'\n}, !theme.vars && {\n  '&:-webkit-autofill': {\n    WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n    WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n    caretColor: theme.palette.mode === 'light' ? null : '#fff',\n    borderRadius: 'inherit'\n  }\n}, theme.vars && {\n  '&:-webkit-autofill': {\n    borderRadius: 'inherit'\n  },\n  [theme.getColorSchemeSelector('dark')]: {\n    '&:-webkit-autofill': {\n      WebkitBoxShadow: '0 0 0 100px #266798 inset',\n      WebkitTextFillColor: '#fff',\n      caretColor: '#fff'\n    }\n  }\n}, ownerState.size === 'small' && {\n  padding: '8.5px 14px'\n}, ownerState.multiline && {\n  padding: 0\n}, ownerState.startAdornment && {\n  paddingLeft: 0\n}, ownerState.endAdornment && {\n  paddingRight: 0\n}));\nconst OutlinedInput = /*#__PURE__*/React.forwardRef(function OutlinedInput(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$input, _React$Fragment;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiOutlinedInput'\n  });\n  const {\n      components = {},\n      fullWidth = false,\n      inputComponent = 'input',\n      label,\n      multiline = false,\n      notched,\n      slots = {},\n      type = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const classes = useUtilityClasses(props);\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['required']\n  });\n  const ownerState = _extends({}, props, {\n    color: fcs.color || 'primary',\n    disabled: fcs.disabled,\n    error: fcs.error,\n    focused: fcs.focused,\n    formControl: muiFormControl,\n    fullWidth,\n    hiddenLabel: fcs.hiddenLabel,\n    multiline,\n    size: fcs.size,\n    type\n  });\n  const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : OutlinedInputRoot;\n  const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : OutlinedInputInput;\n  return /*#__PURE__*/_jsx(InputBase, _extends({\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    renderSuffix: state => /*#__PURE__*/_jsx(NotchedOutlineRoot, {\n      ownerState: ownerState,\n      className: classes.notchedOutline,\n      label: label != null && label !== '' && fcs.required ? _React$Fragment || (_React$Fragment = /*#__PURE__*/_jsxs(React.Fragment, {\n        children: [label, \"\\xA0\", '*']\n      })) : label,\n      notched: typeof notched !== 'undefined' ? notched : Boolean(state.startAdornment || state.filled || state.focused)\n    }),\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type\n  }, other, {\n    classes: _extends({}, classes, {\n      notchedOutline: null\n    })\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? OutlinedInput.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label of the `input`. It is only used for layout. The actual labelling\n   * is handled by `InputLabel`.\n   */\n  label: PropTypes.node,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * If `true`, the outline is notched to accommodate the label.\n   */\n  notched: PropTypes.bool,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nOutlinedInput.muiName = 'Input';\nexport default OutlinedInput;", "export { default } from './OutlinedInput';\nexport { default as outlinedInputClasses } from './outlinedInputClasses';\nexport * from './outlinedInputClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getPaginationUtilityClass(slot) {\n  return generateUtilityClass('MuiPagination', slot);\n}\nconst paginationClasses = generateUtilityClasses('MuiPagination', ['root', 'ul', 'outlined', 'text']);\nexport default paginationClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"boundaryCount\", \"componentName\", \"count\", \"defaultPage\", \"disabled\", \"hideNextButton\", \"hidePrevButton\", \"onChange\", \"page\", \"showFirstButton\", \"showLastButton\", \"siblingCount\"];\nimport { unstable_useControlled as useControlled } from '@mui/utils';\nexport default function usePagination(props = {}) {\n  // keep default values in sync with @default tags in Pagination.propTypes\n  const {\n      boundaryCount = 1,\n      componentName = 'usePagination',\n      count = 1,\n      defaultPage = 1,\n      disabled = false,\n      hideNextButton = false,\n      hidePrevButton = false,\n      onChange: handleChange,\n      page: pageProp,\n      showFirstButton = false,\n      showLastButton = false,\n      siblingCount = 1\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [page, setPageState] = useControlled({\n    controlled: pageProp,\n    default: defaultPage,\n    name: componentName,\n    state: 'page'\n  });\n  const handleClick = (event, value) => {\n    if (!pageProp) {\n      setPageState(value);\n    }\n    if (handleChange) {\n      handleChange(event, value);\n    }\n  };\n\n  // https://dev.to/namirsab/comment/2050\n  const range = (start, end) => {\n    const length = end - start + 1;\n    return Array.from({\n      length\n    }, (_, i) => start + i);\n  };\n  const startPages = range(1, Math.min(boundaryCount, count));\n  const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);\n  const siblingsStart = Math.max(Math.min(\n  // Natural start\n  page - siblingCount,\n  // Lower boundary when page is high\n  count - boundaryCount - siblingCount * 2 - 1),\n  // Greater than startPages\n  boundaryCount + 2);\n  const siblingsEnd = Math.min(Math.max(\n  // Natural end\n  page + siblingCount,\n  // Upper boundary when page is low\n  boundaryCount + siblingCount * 2 + 2),\n  // Less than endPages\n  endPages.length > 0 ? endPages[0] - 2 : count - 1);\n\n  // Basic list of items to render\n  // e.g. itemList = ['first', 'previous', 1, 'ellipsis', 4, 5, 6, 'ellipsis', 10, 'next', 'last']\n  const itemList = [...(showFirstButton ? ['first'] : []), ...(hidePrevButton ? [] : ['previous']), ...startPages,\n  // Start ellipsis\n  // eslint-disable-next-line no-nested-ternary\n  ...(siblingsStart > boundaryCount + 2 ? ['start-ellipsis'] : boundaryCount + 1 < count - boundaryCount ? [boundaryCount + 1] : []),\n  // Sibling pages\n  ...range(siblingsStart, siblingsEnd),\n  // End ellipsis\n  // eslint-disable-next-line no-nested-ternary\n  ...(siblingsEnd < count - boundaryCount - 1 ? ['end-ellipsis'] : count - boundaryCount > boundaryCount ? [count - boundaryCount] : []), ...endPages, ...(hideNextButton ? [] : ['next']), ...(showLastButton ? ['last'] : [])];\n\n  // Map the button type to its page number\n  const buttonPage = type => {\n    switch (type) {\n      case 'first':\n        return 1;\n      case 'previous':\n        return page - 1;\n      case 'next':\n        return page + 1;\n      case 'last':\n        return count;\n      default:\n        return null;\n    }\n  };\n\n  // Convert the basic item list to PaginationItem props objects\n  const items = itemList.map(item => {\n    return typeof item === 'number' ? {\n      onClick: event => {\n        handleClick(event, item);\n      },\n      type: 'page',\n      page: item,\n      selected: item === page,\n      disabled,\n      'aria-current': item === page ? 'true' : undefined\n    } : {\n      onClick: event => {\n        handleClick(event, buttonPage(item));\n      },\n      type: item,\n      page: buttonPage(item),\n      selected: false,\n      disabled: disabled || item.indexOf('ellipsis') === -1 && (item === 'next' || item === 'last' ? page >= count : page <= 1)\n    };\n  });\n  return _extends({\n    items\n  }, other);\n}", "export { default } from './usePagination';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getPaginationItemUtilityClass(slot) {\n  return generateUtilityClass('MuiPaginationItem', slot);\n}\nconst paginationItemClasses = generateUtilityClasses('MuiPaginationItem', ['root', 'page', 'sizeSmall', 'sizeLarge', 'text', 'textPrimary', 'textSecondary', 'outlined', 'outlinedPrimary', 'outlinedSecondary', 'rounded', 'ellipsis', 'firstLast', 'previousNext', 'focusVisible', 'disabled', 'selected', 'icon']);\nexport default paginationItemClasses;", "import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z\"\n}), 'FirstPage');", "import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\"\n}), 'LastPage');", "import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"\n}), 'NavigateBefore');", "import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\n}), 'NavigateNext');", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"components\", \"disabled\", \"page\", \"selected\", \"shape\", \"size\", \"slots\", \"type\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport useThemeProps from '../styles/useThemeProps';\nimport paginationItemClasses, { getPaginationItemUtilityClass } from './paginationItemClasses';\nimport useTheme from '../styles/useTheme';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport FirstPageIcon from '../internal/svg-icons/FirstPage';\nimport LastPageIcon from '../internal/svg-icons/LastPage';\nimport NavigateBeforeIcon from '../internal/svg-icons/NavigateBefore';\nimport NavigateNextIcon from '../internal/svg-icons/NavigateNext';\nimport styled from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.variant === 'text' && styles[`text${capitalize(ownerState.color)}`], ownerState.variant === 'outlined' && styles[`outlined${capitalize(ownerState.color)}`], ownerState.shape === 'rounded' && styles.rounded, ownerState.type === 'page' && styles.page, (ownerState.type === 'start-ellipsis' || ownerState.type === 'end-ellipsis') && styles.ellipsis, (ownerState.type === 'previous' || ownerState.type === 'next') && styles.previousNext, (ownerState.type === 'first' || ownerState.type === 'last') && styles.firstLast];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disabled,\n    selected,\n    size,\n    shape,\n    type,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', `size${capitalize(size)}`, variant, shape, color !== 'standard' && `${variant}${capitalize(color)}`, disabled && 'disabled', selected && 'selected', {\n      page: 'page',\n      first: 'firstLast',\n      last: 'firstLast',\n      'start-ellipsis': 'ellipsis',\n      'end-ellipsis': 'ellipsis',\n      previous: 'previousNext',\n      next: 'previousNext'\n    }[type]],\n    icon: ['icon']\n  };\n  return composeClasses(slots, getPaginationItemUtilityClass, classes);\n};\nconst PaginationItemEllipsis = styled('div', {\n  name: 'MuiPaginationItem',\n  slot: 'Root',\n  overridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({}, theme.typography.body2, {\n  borderRadius: 32 / 2,\n  textAlign: 'center',\n  boxSizing: 'border-box',\n  minWidth: 32,\n  padding: '0 6px',\n  margin: '0 3px',\n  color: (theme.vars || theme).palette.text.primary,\n  height: 'auto',\n  [`&.${paginationItemClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  }\n}, ownerState.size === 'small' && {\n  minWidth: 26,\n  borderRadius: 26 / 2,\n  margin: '0 1px',\n  padding: '0 4px'\n}, ownerState.size === 'large' && {\n  minWidth: 40,\n  borderRadius: 40 / 2,\n  padding: '0 10px',\n  fontSize: theme.typography.pxToRem(15)\n}));\nconst PaginationItemPage = styled(ButtonBase, {\n  name: 'MuiPaginationItem',\n  slot: 'Root',\n  overridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({}, theme.typography.body2, {\n  borderRadius: 32 / 2,\n  textAlign: 'center',\n  boxSizing: 'border-box',\n  minWidth: 32,\n  height: 32,\n  padding: '0 6px',\n  margin: '0 3px',\n  color: (theme.vars || theme).palette.text.primary,\n  [`&.${paginationItemClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`&.${paginationItemClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  },\n  transition: theme.transitions.create(['color', 'background-color'], {\n    duration: theme.transitions.duration.short\n  }),\n  '&:hover': {\n    backgroundColor: (theme.vars || theme).palette.action.hover,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  [`&.${paginationItemClasses.selected}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.selected,\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selected} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: (theme.vars || theme).palette.action.selected\n      }\n    },\n    [`&.${paginationItemClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selected} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    },\n    [`&.${paginationItemClasses.disabled}`]: {\n      opacity: 1,\n      color: (theme.vars || theme).palette.action.disabled,\n      backgroundColor: (theme.vars || theme).palette.action.selected\n    }\n  }\n}, ownerState.size === 'small' && {\n  minWidth: 26,\n  height: 26,\n  borderRadius: 26 / 2,\n  margin: '0 1px',\n  padding: '0 4px'\n}, ownerState.size === 'large' && {\n  minWidth: 40,\n  height: 40,\n  borderRadius: 40 / 2,\n  padding: '0 10px',\n  fontSize: theme.typography.pxToRem(15)\n}, ownerState.shape === 'rounded' && {\n  borderRadius: (theme.vars || theme).shape.borderRadius\n}), ({\n  theme,\n  ownerState\n}) => _extends({}, ownerState.variant === 'text' && {\n  [`&.${paginationItemClasses.selected}`]: _extends({}, ownerState.color !== 'standard' && {\n    color: (theme.vars || theme).palette[ownerState.color].contrastText,\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].main,\n    '&:hover': {\n      backgroundColor: (theme.vars || theme).palette[ownerState.color].dark,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n      }\n    },\n    [`&.${paginationItemClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n    }\n  }, {\n    [`&.${paginationItemClasses.disabled}`]: {\n      color: (theme.vars || theme).palette.action.disabled\n    }\n  })\n}, ownerState.variant === 'outlined' && {\n  border: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,\n  [`&.${paginationItemClasses.selected}`]: _extends({}, ownerState.color !== 'standard' && {\n    color: (theme.vars || theme).palette[ownerState.color].main,\n    border: `1px solid ${theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.5)` : alpha(theme.palette[ownerState.color].main, 0.5)}`,\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.activatedOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.activatedOpacity),\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / calc(${theme.vars.palette.action.activatedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette[ownerState.color].main, theme.palette.action.activatedOpacity + theme.palette.action.focusOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    },\n    [`&.${paginationItemClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / calc(${theme.vars.palette.action.activatedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette[ownerState.color].main, theme.palette.action.activatedOpacity + theme.palette.action.focusOpacity)\n    }\n  }, {\n    [`&.${paginationItemClasses.disabled}`]: {\n      borderColor: (theme.vars || theme).palette.action.disabledBackground,\n      color: (theme.vars || theme).palette.action.disabled\n    }\n  })\n}));\nconst PaginationItemPageIcon = styled('div', {\n  name: 'MuiPaginationItem',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => styles.icon\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  fontSize: theme.typography.pxToRem(20),\n  margin: '0 -8px'\n}, ownerState.size === 'small' && {\n  fontSize: theme.typography.pxToRem(18)\n}, ownerState.size === 'large' && {\n  fontSize: theme.typography.pxToRem(22)\n}));\nconst PaginationItem = /*#__PURE__*/React.forwardRef(function PaginationItem(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPaginationItem'\n  });\n  const {\n      className,\n      color = 'standard',\n      component,\n      components = {},\n      disabled = false,\n      page,\n      selected = false,\n      shape = 'circular',\n      size = 'medium',\n      slots = {},\n      type = 'page',\n      variant = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    disabled,\n    selected,\n    shape,\n    size,\n    type,\n    variant\n  });\n  const theme = useTheme();\n  const classes = useUtilityClasses(ownerState);\n  const normalizedIcons = theme.direction === 'rtl' ? {\n    previous: slots.next || components.next || NavigateNextIcon,\n    next: slots.previous || components.previous || NavigateBeforeIcon,\n    last: slots.first || components.first || FirstPageIcon,\n    first: slots.last || components.last || LastPageIcon\n  } : {\n    previous: slots.previous || components.previous || NavigateBeforeIcon,\n    next: slots.next || components.next || NavigateNextIcon,\n    first: slots.first || components.first || FirstPageIcon,\n    last: slots.last || components.last || LastPageIcon\n  };\n  const Icon = normalizedIcons[type];\n  return type === 'start-ellipsis' || type === 'end-ellipsis' ? /*#__PURE__*/_jsx(PaginationItemEllipsis, {\n    ref: ref,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    children: \"\\u2026\"\n  }) : /*#__PURE__*/_jsxs(PaginationItemPage, _extends({\n    ref: ref,\n    ownerState: ownerState,\n    component: component,\n    disabled: disabled,\n    className: clsx(classes.root, className)\n  }, other, {\n    children: [type === 'page' && page, Icon ? /*#__PURE__*/_jsx(PaginationItemPageIcon, {\n      as: Icon,\n      ownerState: ownerState,\n      className: classes.icon\n    }) : null]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? PaginationItem.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The active color.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'standard'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'standard']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    first: PropTypes.elementType,\n    last: PropTypes.elementType,\n    next: PropTypes.elementType,\n    previous: PropTypes.elementType\n  }),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * The current page number.\n   */\n  page: PropTypes.node,\n  /**\n   * If `true` the pagination item is selected.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The shape of the pagination item.\n   * @default 'circular'\n   */\n  shape: PropTypes.oneOf(['circular', 'rounded']),\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    first: PropTypes.elementType,\n    last: PropTypes.elementType,\n    next: PropTypes.elementType,\n    previous: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The type of pagination item.\n   * @default 'page'\n   */\n  type: PropTypes.oneOf(['end-ellipsis', 'first', 'last', 'next', 'page', 'previous', 'start-ellipsis']),\n  /**\n   * The variant to use.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default PaginationItem;", "export { default } from './PaginationItem';\nexport { default as paginationItemClasses } from './paginationItemClasses';\nexport * from './paginationItemClasses';", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"boundaryCount\", \"className\", \"color\", \"count\", \"defaultPage\", \"disabled\", \"getItemAriaLabel\", \"hideNextButton\", \"hidePrevButton\", \"onChange\", \"page\", \"renderItem\", \"shape\", \"showFirstButton\", \"showLastButton\", \"siblingCount\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { integerPropType } from '@mui/utils';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getPaginationUtilityClass } from './paginationClasses';\nimport usePagination from '../usePagination';\nimport PaginationItem from '../PaginationItem';\nimport styled from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', variant],\n    ul: ['ul']\n  };\n  return composeClasses(slots, getPaginationUtilityClass, classes);\n};\nconst PaginationRoot = styled('nav', {\n  name: 'MuiPagination',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant]];\n  }\n})({});\nconst PaginationUl = styled('ul', {\n  name: 'MuiPagination',\n  slot: 'Ul',\n  overridesResolver: (props, styles) => styles.ul\n})({\n  display: 'flex',\n  flexWrap: 'wrap',\n  alignItems: 'center',\n  padding: 0,\n  margin: 0,\n  listStyle: 'none'\n});\nfunction defaultGetAriaLabel(type, page, selected) {\n  if (type === 'page') {\n    return `${selected ? '' : 'Go to '}page ${page}`;\n  }\n  return `Go to ${type} page`;\n}\nconst Pagination = /*#__PURE__*/React.forwardRef(function Pagination(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPagination'\n  });\n  const {\n      boundaryCount = 1,\n      className,\n      color = 'standard',\n      count = 1,\n      defaultPage = 1,\n      disabled = false,\n      getItemAriaLabel = defaultGetAriaLabel,\n      hideNextButton = false,\n      hidePrevButton = false,\n      renderItem = item => /*#__PURE__*/_jsx(PaginationItem, _extends({}, item)),\n      shape = 'circular',\n      showFirstButton = false,\n      showLastButton = false,\n      siblingCount = 1,\n      size = 'medium',\n      variant = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    items\n  } = usePagination(_extends({}, props, {\n    componentName: 'Pagination'\n  }));\n  const ownerState = _extends({}, props, {\n    boundaryCount,\n    color,\n    count,\n    defaultPage,\n    disabled,\n    getItemAriaLabel,\n    hideNextButton,\n    hidePrevButton,\n    renderItem,\n    shape,\n    showFirstButton,\n    showLastButton,\n    siblingCount,\n    size,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(PaginationRoot, _extends({\n    \"aria-label\": \"pagination navigation\",\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    children: /*#__PURE__*/_jsx(PaginationUl, {\n      className: classes.ul,\n      ownerState: ownerState,\n      children: items.map((item, index) => /*#__PURE__*/_jsx(\"li\", {\n        children: renderItem(_extends({}, item, {\n          color,\n          'aria-label': getItemAriaLabel(item.type, item.page, item.selected),\n          shape,\n          size,\n          variant\n        }))\n      }, index))\n    })\n  }));\n});\n\n// @default tags synced with default values from usePagination\n\nprocess.env.NODE_ENV !== \"production\" ? Pagination.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Number of always visible pages at the beginning and end.\n   * @default 1\n   */\n  boundaryCount: integerPropType,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The active color.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'standard'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'standard']), PropTypes.string]),\n  /**\n   * The total number of pages.\n   * @default 1\n   */\n  count: integerPropType,\n  /**\n   * The page selected by default when the component is uncontrolled.\n   * @default 1\n   */\n  defaultPage: integerPropType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * Accepts a function which returns a string value that provides a user-friendly name for the current page.\n   * This is important for screen reader users.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @param {string} type The link or button type to format ('page' | 'first' | 'last' | 'next' | 'previous'). Defaults to 'page'.\n   * @param {number} page The page number to format.\n   * @param {bool} selected If true, the current page is selected.\n   * @returns {string}\n   */\n  getItemAriaLabel: PropTypes.func,\n  /**\n   * If `true`, hide the next-page button.\n   * @default false\n   */\n  hideNextButton: PropTypes.bool,\n  /**\n   * If `true`, hide the previous-page button.\n   * @default false\n   */\n  hidePrevButton: PropTypes.bool,\n  /**\n   * Callback fired when the page is changed.\n   *\n   * @param {React.ChangeEvent<unknown>} event The event source of the callback.\n   * @param {number} page The page selected.\n   */\n  onChange: PropTypes.func,\n  /**\n   * The current page.\n   */\n  page: integerPropType,\n  /**\n   * Render the item.\n   * @param {PaginationRenderItemParams} params The props to spread on a PaginationItem.\n   * @returns {ReactNode}\n   * @default (item) => <PaginationItem {...item} />\n   */\n  renderItem: PropTypes.func,\n  /**\n   * The shape of the pagination items.\n   * @default 'circular'\n   */\n  shape: PropTypes.oneOf(['circular', 'rounded']),\n  /**\n   * If `true`, show the first-page button.\n   * @default false\n   */\n  showFirstButton: PropTypes.bool,\n  /**\n   * If `true`, show the last-page button.\n   * @default false\n   */\n  showLastButton: PropTypes.bool,\n  /**\n   * Number of always visible pages before and after the current page.\n   * @default 1\n   */\n  siblingCount: integerPropType,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default Pagination;", "export { default } from './Pagination';\nexport { default as paginationClasses } from './paginationClasses';\nexport * from './paginationClasses';", "export { default } from '@mui/base/Portal';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getRadioUtilityClass(slot) {\n  return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary']);\nexport default radioClasses;", "export { default } from './Radio';\nexport { default as radioClasses } from './radioClasses';\nexport * from './radioClasses';", "export { default } from './RadioGroup';\nexport { default as useRadioGroup } from './useRadioGroup';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getRatingUtilityClass(slot) {\n  return generateUtilityClass('MuiRating', slot);\n}\nconst ratingClasses = generateUtilityClasses('MuiRating', ['root', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'readOnly', 'disabled', 'focusVisible', 'visuallyHidden', 'pristine', 'label', 'labelEmptyValueActive', 'icon', 'iconEmpty', 'iconFilled', 'iconHover', 'iconFocus', 'iconActive', 'decimal']);\nexport default ratingClasses;", "export { default } from './Rating';\nexport { default as ratingClasses } from './ratingClasses';\nexport * from './ratingClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getScopedCssBaselineUtilityClass(slot) {\n  return generateUtilityClass('MuiScopedCssBaseline', slot);\n}\nconst scopedCssBaselineClasses = generateUtilityClasses('MuiScopedCssBaseline', ['root']);\nexport default scopedCssBaselineClasses;", "export { default } from './ScopedCssBaseline';\nexport { default as scopedCssBaselineClasses } from './scopedCssBaselineClasses';\nexport * from './scopedCssBaselineClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSelectUtilityClasses(slot) {\n  return generateUtilityClass('MuiSelect', slot);\n}\nconst selectClasses = generateUtilityClasses('MuiSelect', ['select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'focused', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput']);\nexport default selectClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nvar _span;\nconst _excluded = [\"aria-describedby\", \"aria-label\", \"autoFocus\", \"autoWidth\", \"children\", \"className\", \"defaultOpen\", \"defaultValue\", \"disabled\", \"displayEmpty\", \"IconComponent\", \"inputRef\", \"labelId\", \"MenuProps\", \"multiple\", \"name\", \"onBlur\", \"onChange\", \"onClose\", \"onFocus\", \"onOpen\", \"open\", \"readOnly\", \"renderValue\", \"SelectDisplayProps\", \"tabIndex\", \"type\", \"value\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { refType } from '@mui/utils';\nimport ownerDocument from '../utils/ownerDocument';\nimport capitalize from '../utils/capitalize';\nimport Menu from '../Menu/Menu';\nimport { nativeSelectSelectStyles, nativeSelectIconStyles } from '../NativeSelect/NativeSelectInput';\nimport { isFilled } from '../InputBase/utils';\nimport styled, { slotShouldForwardProp } from '../styles/styled';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\nimport selectClasses, { getSelectUtilityClasses } from './selectClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst SelectSelect = styled('div', {\n  name: 'MuiSelect',\n  slot: 'Select',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [\n    // Win specificity over the input base\n    {\n      [`&.${selectClasses.select}`]: styles.select\n    }, {\n      [`&.${selectClasses.select}`]: styles[ownerState.variant]\n    }, {\n      [`&.${selectClasses.multiple}`]: styles.multiple\n    }];\n  }\n})(nativeSelectSelectStyles, {\n  // Win specificity over the input base\n  [`&.${selectClasses.select}`]: {\n    height: 'auto',\n    // Resets for multiple select with chips\n    minHeight: '1.4375em',\n    // Required for select\\text-field height consistency\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    overflow: 'hidden'\n  }\n});\nconst SelectIcon = styled('svg', {\n  name: 'MuiSelect',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, ownerState.variant && styles[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n  }\n})(nativeSelectIconStyles);\nconst SelectNativeInput = styled('input', {\n  shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'classes',\n  name: 'MuiSelect',\n  slot: 'NativeInput',\n  overridesResolver: (props, styles) => styles.nativeInput\n})({\n  bottom: 0,\n  left: 0,\n  position: 'absolute',\n  opacity: 0,\n  pointerEvents: 'none',\n  width: '100%',\n  boxSizing: 'border-box'\n});\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nfunction isEmpty(display) {\n  return display == null || typeof display === 'string' && !display.trim();\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    disabled,\n    multiple,\n    open\n  } = ownerState;\n  const slots = {\n    select: ['select', variant, disabled && 'disabled', multiple && 'multiple'],\n    icon: ['icon', `icon${capitalize(variant)}`, open && 'iconOpen', disabled && 'disabled'],\n    nativeInput: ['nativeInput']\n  };\n  return composeClasses(slots, getSelectUtilityClasses, classes);\n};\n\n/**\n * @ignore - internal component.\n */\nconst SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {\n  const {\n      'aria-describedby': ariaDescribedby,\n      'aria-label': ariaLabel,\n      autoFocus,\n      autoWidth,\n      children,\n      className,\n      defaultOpen,\n      defaultValue,\n      disabled,\n      displayEmpty,\n      IconComponent,\n      inputRef: inputRefProp,\n      labelId,\n      MenuProps = {},\n      multiple,\n      name,\n      onBlur,\n      onChange,\n      onClose,\n      onFocus,\n      onOpen,\n      open: openProp,\n      readOnly,\n      renderValue,\n      SelectDisplayProps = {},\n      tabIndex: tabIndexProp,\n      value: valueProp,\n      variant = 'standard'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'Select'\n  });\n  const [openState, setOpenState] = useControlled({\n    controlled: openProp,\n    default: defaultOpen,\n    name: 'Select'\n  });\n  const inputRef = React.useRef(null);\n  const displayRef = React.useRef(null);\n  const [displayNode, setDisplayNode] = React.useState(null);\n  const {\n    current: isOpenControlled\n  } = React.useRef(openProp != null);\n  const [menuMinWidthState, setMenuMinWidthState] = React.useState();\n  const handleRef = useForkRef(ref, inputRefProp);\n  const handleDisplayRef = React.useCallback(node => {\n    displayRef.current = node;\n    if (node) {\n      setDisplayNode(node);\n    }\n  }, []);\n  const anchorElement = displayNode == null ? void 0 : displayNode.parentNode;\n  React.useImperativeHandle(handleRef, () => ({\n    focus: () => {\n      displayRef.current.focus();\n    },\n    node: inputRef.current,\n    value\n  }), [value]);\n\n  // Resize menu on `defaultOpen` automatic toggle.\n  React.useEffect(() => {\n    if (defaultOpen && openState && displayNode && !isOpenControlled) {\n      setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);\n      displayRef.current.focus();\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [displayNode, autoWidth]);\n  // `isOpenControlled` is ignored because the component should never switch between controlled and uncontrolled modes.\n  // `defaultOpen` and `openState` are ignored to avoid unnecessary callbacks.\n  React.useEffect(() => {\n    if (autoFocus) {\n      displayRef.current.focus();\n    }\n  }, [autoFocus]);\n  React.useEffect(() => {\n    if (!labelId) {\n      return undefined;\n    }\n    const label = ownerDocument(displayRef.current).getElementById(labelId);\n    if (label) {\n      const handler = () => {\n        if (getSelection().isCollapsed) {\n          displayRef.current.focus();\n        }\n      };\n      label.addEventListener('click', handler);\n      return () => {\n        label.removeEventListener('click', handler);\n      };\n    }\n    return undefined;\n  }, [labelId]);\n  const update = (open, event) => {\n    if (open) {\n      if (onOpen) {\n        onOpen(event);\n      }\n    } else if (onClose) {\n      onClose(event);\n    }\n    if (!isOpenControlled) {\n      setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);\n      setOpenState(open);\n    }\n  };\n  const handleMouseDown = event => {\n    // Ignore everything but left-click\n    if (event.button !== 0) {\n      return;\n    }\n    // Hijack the default focus behavior.\n    event.preventDefault();\n    displayRef.current.focus();\n    update(true, event);\n  };\n  const handleClose = event => {\n    update(false, event);\n  };\n  const childrenArray = React.Children.toArray(children);\n\n  // Support autofill.\n  const handleChange = event => {\n    const index = childrenArray.map(child => child.props.value).indexOf(event.target.value);\n    if (index === -1) {\n      return;\n    }\n    const child = childrenArray[index];\n    setValueState(child.props.value);\n    if (onChange) {\n      onChange(event, child);\n    }\n  };\n  const handleItemClick = child => event => {\n    let newValue;\n\n    // We use the tabindex attribute to signal the available options.\n    if (!event.currentTarget.hasAttribute('tabindex')) {\n      return;\n    }\n    if (multiple) {\n      newValue = Array.isArray(value) ? value.slice() : [];\n      const itemIndex = value.indexOf(child.props.value);\n      if (itemIndex === -1) {\n        newValue.push(child.props.value);\n      } else {\n        newValue.splice(itemIndex, 1);\n      }\n    } else {\n      newValue = child.props.value;\n    }\n    if (child.props.onClick) {\n      child.props.onClick(event);\n    }\n    if (value !== newValue) {\n      setValueState(newValue);\n      if (onChange) {\n        // Redefine target to allow name and value to be read.\n        // This allows seamless integration with the most popular form libraries.\n        // https://github.com/mui/material-ui/issues/13485#issuecomment-676048492\n        // Clone the event to not override `target` of the original event.\n        const nativeEvent = event.nativeEvent || event;\n        const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n        Object.defineProperty(clonedEvent, 'target', {\n          writable: true,\n          value: {\n            value: newValue,\n            name\n          }\n        });\n        onChange(clonedEvent, child);\n      }\n    }\n    if (!multiple) {\n      update(false, event);\n    }\n  };\n  const handleKeyDown = event => {\n    if (!readOnly) {\n      const validKeys = [' ', 'ArrowUp', 'ArrowDown',\n      // The native select doesn't respond to enter on macOS, but it's recommended by\n      // https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/\n      'Enter'];\n      if (validKeys.indexOf(event.key) !== -1) {\n        event.preventDefault();\n        update(true, event);\n      }\n    }\n  };\n  const open = displayNode !== null && openState;\n  const handleBlur = event => {\n    // if open event.stopImmediatePropagation\n    if (!open && onBlur) {\n      // Preact support, target is read only property on a native event.\n      Object.defineProperty(event, 'target', {\n        writable: true,\n        value: {\n          value,\n          name\n        }\n      });\n      onBlur(event);\n    }\n  };\n  delete other['aria-invalid'];\n  let display;\n  let displaySingle;\n  const displayMultiple = [];\n  let computeDisplay = false;\n  let foundMatch = false;\n\n  // No need to display any value if the field is empty.\n  if (isFilled({\n    value\n  }) || displayEmpty) {\n    if (renderValue) {\n      display = renderValue(value);\n    } else {\n      computeDisplay = true;\n    }\n  }\n  const items = childrenArray.map((child, index, arr) => {\n    var _arr$, _arr$$props, _arr$2, _arr$2$props;\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return null;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Select component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    let selected;\n    if (multiple) {\n      if (!Array.isArray(value)) {\n        throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`value\\` prop must be an array when using the \\`Select\\` component with \\`multiple\\`.` : _formatMuiErrorMessage(2));\n      }\n      selected = value.some(v => areEqualValues(v, child.props.value));\n      if (selected && computeDisplay) {\n        displayMultiple.push(child.props.children);\n      }\n    } else {\n      selected = areEqualValues(value, child.props.value);\n      if (selected && computeDisplay) {\n        displaySingle = child.props.children;\n      }\n    }\n    if (selected) {\n      foundMatch = true;\n    }\n    if (child.props.value === undefined) {\n      return /*#__PURE__*/React.cloneElement(child, {\n        'aria-readonly': true,\n        role: 'option'\n      });\n    }\n    const isFirstSelectableElement = () => {\n      if (value) {\n        return selected;\n      }\n      const firstSelectableElement = arr.find(item => {\n        var _item$props;\n        return (item == null ? void 0 : (_item$props = item.props) == null ? void 0 : _item$props.value) !== undefined && item.props.disabled !== true;\n      });\n      if (child === firstSelectableElement) {\n        return true;\n      }\n      return selected;\n    };\n    return /*#__PURE__*/React.cloneElement(child, {\n      'aria-selected': selected ? 'true' : 'false',\n      onClick: handleItemClick(child),\n      onKeyUp: event => {\n        if (event.key === ' ') {\n          // otherwise our MenuItems dispatches a click event\n          // it's not behavior of the native <option> and causes\n          // the select to close immediately since we open on space keydown\n          event.preventDefault();\n        }\n        if (child.props.onKeyUp) {\n          child.props.onKeyUp(event);\n        }\n      },\n      role: 'option',\n      selected: ((_arr$ = arr[0]) == null ? void 0 : (_arr$$props = _arr$.props) == null ? void 0 : _arr$$props.value) === undefined || ((_arr$2 = arr[0]) == null ? void 0 : (_arr$2$props = _arr$2.props) == null ? void 0 : _arr$2$props.disabled) === true ? isFirstSelectableElement() : selected,\n      value: undefined,\n      // The value is most likely not a valid HTML attribute.\n      'data-value': child.props.value // Instead, we provide it as a data attribute.\n    });\n  });\n\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (!foundMatch && !multiple && value !== '') {\n        const values = childrenArray.map(child => child.props.value);\n        console.warn([`MUI: You have provided an out-of-range value \\`${value}\\` for the select ${name ? `(name=\"${name}\") ` : ''}component.`, \"Consider providing a value that matches one of the available options or ''.\", `The available values are ${values.filter(x => x != null).map(x => `\\`${x}\\``).join(', ') || '\"\"'}.`].join('\\n'));\n      }\n    }, [foundMatch, childrenArray, multiple, name, value]);\n  }\n  if (computeDisplay) {\n    if (multiple) {\n      if (displayMultiple.length === 0) {\n        display = null;\n      } else {\n        display = displayMultiple.reduce((output, child, index) => {\n          output.push(child);\n          if (index < displayMultiple.length - 1) {\n            output.push(', ');\n          }\n          return output;\n        }, []);\n      }\n    } else {\n      display = displaySingle;\n    }\n  }\n\n  // Avoid performing a layout computation in the render method.\n  let menuMinWidth = menuMinWidthState;\n  if (!autoWidth && isOpenControlled && displayNode) {\n    menuMinWidth = anchorElement.clientWidth;\n  }\n  let tabIndex;\n  if (typeof tabIndexProp !== 'undefined') {\n    tabIndex = tabIndexProp;\n  } else {\n    tabIndex = disabled ? null : 0;\n  }\n  const buttonId = SelectDisplayProps.id || (name ? `mui-component-select-${name}` : undefined);\n  const ownerState = _extends({}, props, {\n    variant,\n    value,\n    open\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(SelectSelect, _extends({\n      ref: handleDisplayRef,\n      tabIndex: tabIndex,\n      role: \"button\",\n      \"aria-disabled\": disabled ? 'true' : undefined,\n      \"aria-expanded\": open ? 'true' : 'false',\n      \"aria-haspopup\": \"listbox\",\n      \"aria-label\": ariaLabel,\n      \"aria-labelledby\": [labelId, buttonId].filter(Boolean).join(' ') || undefined,\n      \"aria-describedby\": ariaDescribedby,\n      onKeyDown: handleKeyDown,\n      onMouseDown: disabled || readOnly ? null : handleMouseDown,\n      onBlur: handleBlur,\n      onFocus: onFocus\n    }, SelectDisplayProps, {\n      ownerState: ownerState,\n      className: clsx(SelectDisplayProps.className, classes.select, className)\n      // The id is required for proper a11y\n      ,\n      id: buttonId,\n      children: isEmpty(display) ? // notranslate needed while Google Translate will not fix zero-width space issue\n      _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n        className: \"notranslate\",\n        children: \"\\u200B\"\n      })) : display\n    })), /*#__PURE__*/_jsx(SelectNativeInput, _extends({\n      value: Array.isArray(value) ? value.join(',') : value,\n      name: name,\n      ref: inputRef,\n      \"aria-hidden\": true,\n      onChange: handleChange,\n      tabIndex: -1,\n      disabled: disabled,\n      className: classes.nativeInput,\n      autoFocus: autoFocus,\n      ownerState: ownerState\n    }, other)), /*#__PURE__*/_jsx(SelectIcon, {\n      as: IconComponent,\n      className: classes.icon,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(Menu, _extends({\n      id: `menu-${name || ''}`,\n      anchorEl: anchorElement,\n      open: open,\n      onClose: handleClose,\n      anchorOrigin: {\n        vertical: 'bottom',\n        horizontal: 'center'\n      },\n      transformOrigin: {\n        vertical: 'top',\n        horizontal: 'center'\n      }\n    }, MenuProps, {\n      MenuListProps: _extends({\n        'aria-labelledby': labelId,\n        role: 'listbox',\n        disableListWrap: true\n      }, MenuProps.MenuListProps),\n      PaperProps: _extends({}, MenuProps.PaperProps, {\n        style: _extends({\n          minWidth: menuMinWidth\n        }, MenuProps.PaperProps != null ? MenuProps.PaperProps.style : null)\n      }),\n      children: items\n    }))]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? SelectInput.propTypes = {\n  /**\n   * @ignore\n   */\n  'aria-describedby': PropTypes.string,\n  /**\n   * @ignore\n   */\n  'aria-label': PropTypes.string,\n  /**\n   * @ignore\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, the width of the popover will automatically be set according to the items inside the\n   * menu, otherwise it will be at least the width of the select input.\n   */\n  autoWidth: PropTypes.bool,\n  /**\n   * The option elements to populate the select with.\n   * Can be some `<MenuItem>` elements.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object,\n  /**\n   * The CSS class name of the select element.\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the component is toggled on mount. Use when the component open state is not controlled.\n   * You can only use it when the `native` prop is `false` (default).\n   */\n  defaultOpen: PropTypes.bool,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the select is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the selected item is displayed even if its value is empty.\n   */\n  displayEmpty: PropTypes.bool,\n  /**\n   * The icon that displays the arrow.\n   */\n  IconComponent: PropTypes.elementType.isRequired,\n  /**\n   * Imperative handle implementing `{ value: T, node: HTMLElement, focus(): void }`\n   * Equivalent to `ref`\n   */\n  inputRef: refType,\n  /**\n   * The ID of an element that acts as an additional label. The Select will\n   * be labelled by the additional label and the selected value.\n   */\n  labelId: PropTypes.string,\n  /**\n   * Props applied to the [`Menu`](/material-ui/api/menu/) element.\n   */\n  MenuProps: PropTypes.object,\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Name attribute of the `select` or hidden `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (any).\n   * @param {object} [child] The react element that was selected.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * Use in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be opened.\n   * Use in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * Render the selected value.\n   *\n   * @param {any} value The `value` provided to the component.\n   * @returns {ReactNode}\n   */\n  renderValue: PropTypes.func,\n  /**\n   * Props applied to the clickable div element.\n   */\n  SelectDisplayProps: PropTypes.object,\n  /**\n   * @ignore\n   */\n  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  type: PropTypes.any,\n  /**\n   * The input value.\n   */\n  value: PropTypes.any,\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default SelectInput;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _StyledInput, _StyledFilledInput;\nconst _excluded = [\"autoWidth\", \"children\", \"classes\", \"className\", \"defaultOpen\", \"displayEmpty\", \"IconComponent\", \"id\", \"input\", \"inputProps\", \"label\", \"labelId\", \"MenuProps\", \"multiple\", \"native\", \"onClose\", \"onOpen\", \"open\", \"renderValue\", \"SelectDisplayProps\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge } from '@mui/utils';\nimport SelectInput from './SelectInput';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport Input from '../Input';\nimport NativeSelectInput from '../NativeSelect/NativeSelectInput';\nimport FilledInput from '../FilledInput';\nimport OutlinedInput from '../OutlinedInput';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  return classes;\n};\nconst styledRootConfig = {\n  name: 'MuiSelect',\n  overridesResolver: (props, styles) => styles.root,\n  shouldForwardProp: prop => rootShouldForwardProp(prop) && prop !== 'variant',\n  slot: 'Root'\n};\nconst StyledInput = styled(Input, styledRootConfig)('');\nconst StyledOutlinedInput = styled(OutlinedInput, styledRootConfig)('');\nconst StyledFilledInput = styled(FilledInput, styledRootConfig)('');\nconst Select = /*#__PURE__*/React.forwardRef(function Select(inProps, ref) {\n  const props = useThemeProps({\n    name: 'MuiSelect',\n    props: inProps\n  });\n  const {\n      autoWidth = false,\n      children,\n      classes: classesProp = {},\n      className,\n      defaultOpen = false,\n      displayEmpty = false,\n      IconComponent = ArrowDropDownIcon,\n      id,\n      input,\n      inputProps,\n      label,\n      labelId,\n      MenuProps,\n      multiple = false,\n      native = false,\n      onClose,\n      onOpen,\n      open,\n      renderValue,\n      SelectDisplayProps,\n      variant: variantProp = 'outlined'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const inputComponent = native ? NativeSelectInput : SelectInput;\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['variant']\n  });\n  const variant = fcs.variant || variantProp;\n  const InputComponent = input || {\n    standard: _StyledInput || (_StyledInput = /*#__PURE__*/_jsx(StyledInput, {})),\n    outlined: /*#__PURE__*/_jsx(StyledOutlinedInput, {\n      label: label\n    }),\n    filled: _StyledFilledInput || (_StyledFilledInput = /*#__PURE__*/_jsx(StyledFilledInput, {}))\n  }[variant];\n  const ownerState = _extends({}, props, {\n    variant,\n    classes: classesProp\n  });\n  const classes = useUtilityClasses(ownerState);\n  const inputComponentRef = useForkRef(ref, InputComponent.ref);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(InputComponent, _extends({\n      // Most of the logic is implemented in `SelectInput`.\n      // The `Select` component is a simple API wrapper to expose something better to play with.\n      inputComponent,\n      inputProps: _extends({\n        children,\n        IconComponent,\n        variant,\n        type: undefined,\n        // We render a select. We can ignore the type provided by the `Input`.\n        multiple\n      }, native ? {\n        id\n      } : {\n        autoWidth,\n        defaultOpen,\n        displayEmpty,\n        labelId,\n        MenuProps,\n        onClose,\n        onOpen,\n        open,\n        renderValue,\n        SelectDisplayProps: _extends({\n          id\n        }, SelectDisplayProps)\n      }, inputProps, {\n        classes: inputProps ? deepmerge(classes, inputProps.classes) : classes\n      }, input ? input.props.inputProps : {})\n    }, multiple && native && variant === 'outlined' ? {\n      notched: true\n    } : {}, {\n      ref: inputComponentRef,\n      className: clsx(InputComponent.props.className, className)\n    }, !input && {\n      variant\n    }, other))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Select.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the width of the popover will automatically be set according to the items inside the\n   * menu, otherwise it will be at least the width of the select input.\n   * @default false\n   */\n  autoWidth: PropTypes.bool,\n  /**\n   * The option elements to populate the select with.\n   * Can be some `MenuItem` when `native` is false and `option` when `native` is true.\n   *\n   * \u26A0\uFE0FThe `MenuItem` elements **must** be direct descendants when `native` is false.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   * @default {}\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the component is initially open. Use when the component open state is not controlled (i.e. the `open` prop is not defined).\n   * You can only use it when the `native` prop is `false` (default).\n   * @default false\n   */\n  defaultOpen: PropTypes.bool,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, a value is displayed even if no items are selected.\n   *\n   * In order to display a meaningful value, a function can be passed to the `renderValue` prop which\n   * returns the value to be displayed when no items are selected.\n   *\n   * \u26A0\uFE0F When using this prop, make sure the label doesn't overlap with the empty displayed value.\n   * The label should either be hidden or forced to a shrunk state.\n   * @default false\n   */\n  displayEmpty: PropTypes.bool,\n  /**\n   * The icon that displays the arrow.\n   * @default ArrowDropDownIcon\n   */\n  IconComponent: PropTypes.elementType,\n  /**\n   * The `id` of the wrapper element or the `select` element when `native`.\n   */\n  id: PropTypes.string,\n  /**\n   * An `Input` element; does not have to be a material-ui specific `Input`.\n   */\n  input: PropTypes.element,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * When `native` is `true`, the attributes are applied on the `select` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * See [OutlinedInput#label](/material-ui/api/outlined-input/#props)\n   */\n  label: PropTypes.node,\n  /**\n   * The ID of an element that acts as an additional label. The Select will\n   * be labelled by the additional label and the selected value.\n   */\n  labelId: PropTypes.string,\n  /**\n   * Props applied to the [`Menu`](/material-ui/api/menu/) element.\n   */\n  MenuProps: PropTypes.object,\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   * @default false\n   */\n  multiple: PropTypes.bool,\n  /**\n   * If `true`, the component uses a native `select` element.\n   * @default false\n   */\n  native: PropTypes.bool,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {SelectChangeEvent<T>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (any).\n   * **Warning**: This is a generic event, not a change event, unless the change event is caused by browser autofill.\n   * @param {object} [child] The react element that was selected when `native` is `false` (default).\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select collapes).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be opened.\n   * Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select expands).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   * You can only use it when the `native` prop is `false` (default).\n   */\n  open: PropTypes.bool,\n  /**\n   * Render the selected value.\n   * You can only use it when the `native` prop is `false` (default).\n   *\n   * @param {any} value The `value` provided to the component.\n   * @returns {ReactNode}\n   */\n  renderValue: PropTypes.func,\n  /**\n   * Props applied to the clickable div element.\n   */\n  SelectDisplayProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The `input` value. Providing an empty string will select no options.\n   * Set to an empty string `''` if you don't want any of the available options to be selected.\n   *\n   * If the value is an object it must have reference equality with the option in order to be selected.\n   * If the value is not an object, the string representation must match with the string representation of the option in order to be selected.\n   */\n  value: PropTypes.oneOfType([PropTypes.oneOf(['']), PropTypes.any]),\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nSelect.muiName = 'Select';\nexport default Select;", "export { default } from './Select';\nexport { default as selectClasses } from './selectClasses';\nexport * from './selectClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSkeletonUtilityClass(slot) {\n  return generateUtilityClass('MuiSkeleton', slot);\n}\nconst skeletonClasses = generateUtilityClasses('MuiSkeleton', ['root', 'text', 'rectangular', 'rounded', 'circular', 'pulse', 'wave', 'withChildren', 'fitContent', 'heightAuto']);\nexport default skeletonClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"animation\", \"className\", \"component\", \"height\", \"style\", \"variant\", \"width\"];\nlet _ = t => t,\n  _t,\n  _t2,\n  _t3,\n  _t4;\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { keyframes, css } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha, unstable_getUnit as getUnit, unstable_toUnitless as toUnitless } from '../styles';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getSkeletonUtilityClass } from './skeletonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    animation,\n    hasChildren,\n    width,\n    height\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, animation, hasChildren && 'withChildren', hasChildren && !width && 'fitContent', hasChildren && !height && 'heightAuto']\n  };\n  return composeClasses(slots, getSkeletonUtilityClass, classes);\n};\nconst pulseKeyframe = keyframes(_t || (_t = _`\n  0% {\n    opacity: 1;\n  }\n\n  50% {\n    opacity: 0.4;\n  }\n\n  100% {\n    opacity: 1;\n  }\n`));\nconst waveKeyframe = keyframes(_t2 || (_t2 = _`\n  0% {\n    transform: translateX(-100%);\n  }\n\n  50% {\n    /* +0.5s of delay between each loop */\n    transform: translateX(100%);\n  }\n\n  100% {\n    transform: translateX(100%);\n  }\n`));\nconst SkeletonRoot = styled('span', {\n  name: 'MuiSkeleton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], ownerState.animation !== false && styles[ownerState.animation], ownerState.hasChildren && styles.withChildren, ownerState.hasChildren && !ownerState.width && styles.fitContent, ownerState.hasChildren && !ownerState.height && styles.heightAuto];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  const radiusUnit = getUnit(theme.shape.borderRadius) || 'px';\n  const radiusValue = toUnitless(theme.shape.borderRadius);\n  return _extends({\n    display: 'block',\n    // Create a \"on paper\" color with sufficient contrast retaining the color\n    backgroundColor: theme.vars ? theme.vars.palette.Skeleton.bg : alpha(theme.palette.text.primary, theme.palette.mode === 'light' ? 0.11 : 0.13),\n    height: '1.2em'\n  }, ownerState.variant === 'text' && {\n    marginTop: 0,\n    marginBottom: 0,\n    height: 'auto',\n    transformOrigin: '0 55%',\n    transform: 'scale(1, 0.60)',\n    borderRadius: `${radiusValue}${radiusUnit}/${Math.round(radiusValue / 0.6 * 10) / 10}${radiusUnit}`,\n    '&:empty:before': {\n      content: '\"\\\\00a0\"'\n    }\n  }, ownerState.variant === 'circular' && {\n    borderRadius: '50%'\n  }, ownerState.variant === 'rounded' && {\n    borderRadius: (theme.vars || theme).shape.borderRadius\n  }, ownerState.hasChildren && {\n    '& > *': {\n      visibility: 'hidden'\n    }\n  }, ownerState.hasChildren && !ownerState.width && {\n    maxWidth: 'fit-content'\n  }, ownerState.hasChildren && !ownerState.height && {\n    height: 'auto'\n  });\n}, ({\n  ownerState\n}) => ownerState.animation === 'pulse' && css(_t3 || (_t3 = _`\n      animation: ${0} 1.5s ease-in-out 0.5s infinite;\n    `), pulseKeyframe), ({\n  ownerState,\n  theme\n}) => ownerState.animation === 'wave' && css(_t4 || (_t4 = _`\n      position: relative;\n      overflow: hidden;\n\n      /* Fix bug in Safari https://bugs.webkit.org/show_bug.cgi?id=68196 */\n      -webkit-mask-image: -webkit-radial-gradient(white, black);\n\n      &::after {\n        animation: ${0} 1.6s linear 0.5s infinite;\n        background: linear-gradient(\n          90deg,\n          transparent,\n          ${0},\n          transparent\n        );\n        content: '';\n        position: absolute;\n        transform: translateX(-100%); /* Avoid flash during server-side hydration */\n        bottom: 0;\n        left: 0;\n        right: 0;\n        top: 0;\n      }\n    `), waveKeyframe, (theme.vars || theme).palette.action.hover));\nconst Skeleton = /*#__PURE__*/React.forwardRef(function Skeleton(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiSkeleton'\n  });\n  const {\n      animation = 'pulse',\n      className,\n      component = 'span',\n      height,\n      style,\n      variant = 'text',\n      width\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    animation,\n    component,\n    variant,\n    hasChildren: Boolean(other.children)\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(SkeletonRoot, _extends({\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState\n  }, other, {\n    style: _extends({\n      width,\n      height\n    }, style)\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Skeleton.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The animation.\n   * If `false` the animation effect is disabled.\n   * @default 'pulse'\n   */\n  animation: PropTypes.oneOf(['pulse', 'wave', false]),\n  /**\n   * Optional children to infer width and height from.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Height of the skeleton.\n   * Useful when you don't want to adapt the skeleton to a text element but for instance a card.\n   */\n  height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The type of content that will be rendered.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rectangular', 'rounded', 'text']), PropTypes.string]),\n  /**\n   * Width of the skeleton.\n   * Useful when the skeleton is inside an inline element with no width of its own.\n   */\n  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : void 0;\nexport default Skeleton;", "export { default } from './Skeleton';\nexport * from './skeletonClasses';\nexport { default as skeletonClasses } from './skeletonClasses';", "import { isHostComponent } from '@mui/base';\nconst shouldSpreadAdditionalProps = Slot => {\n  return !Slot || !isHostComponent(Slot);\n};\nexport default shouldSpreadAdditionalProps;", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSliderUtilityClass(slot) {\n  return generateUtilityClass('MuiSlider', slot);\n}\nconst sliderClasses = generateUtilityClasses('MuiSlider', ['root', 'active', 'colorPrimary', 'colorSecondary', 'disabled', 'dragging', 'focusVisible', 'mark', 'markActive', 'marked', 'markLabel', 'markLabelActive', 'rail', 'sizeSmall', 'thumb', 'thumbColorPrimary', 'thumbColorSecondary', 'track', 'trackInverted', 'trackFalse', 'thumbSizeSmall', 'valueLabel', 'valueLabelOpen', 'valueLabelCircle', 'valueLabelLabel', 'vertical']);\nexport default sliderClasses;", "import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport sliderClasses from './sliderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useValueLabelClasses = props => {\n  const {\n    open\n  } = props;\n  const utilityClasses = {\n    offset: clsx(open && sliderClasses.valueLabelOpen),\n    circle: sliderClasses.valueLabelCircle,\n    label: sliderClasses.valueLabelLabel\n  };\n  return utilityClasses;\n};\n\n/**\n * @ignore - internal component.\n */\nexport default function SliderValueLabel(props) {\n  const {\n    children,\n    className,\n    value\n  } = props;\n  const classes = useValueLabelClasses(props);\n  if (!children) {\n    return null;\n  }\n  return /*#__PURE__*/React.cloneElement(children, {\n    className: clsx(children.props.className)\n  }, /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [children.props.children, /*#__PURE__*/_jsx(\"span\", {\n      className: clsx(classes.offset, className),\n      \"aria-hidden\": true,\n      children: /*#__PURE__*/_jsx(\"span\", {\n        className: classes.circle,\n        children: /*#__PURE__*/_jsx(\"span\", {\n          className: classes.label,\n          children: value\n        })\n      })\n    })]\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? SliderValueLabel.propTypes = {\n  children: PropTypes.element.isRequired,\n  className: PropTypes.string,\n  value: PropTypes.node\n} : void 0;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-label\", \"aria-valuetext\", \"aria-labelledby\", \"component\", \"components\", \"componentsProps\", \"color\", \"classes\", \"className\", \"disableSwap\", \"disabled\", \"getAriaLabel\", \"getAriaValueText\", \"marks\", \"max\", \"min\", \"name\", \"onChange\", \"onChangeCommitted\", \"orientation\", \"size\", \"step\", \"scale\", \"slotProps\", \"slots\", \"tabIndex\", \"track\", \"value\", \"valueLabelDisplay\", \"valueLabelFormat\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { isHostComponent, useSlotProps, unstable_composeClasses as composeClasses } from '@mui/base';\nimport { useSlider } from '@mui/base/SliderUnstyled';\nimport { alpha, lighten, darken } from '@mui/system';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { slotShouldForwardProp } from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport shouldSpreadAdditionalProps from '../utils/shouldSpreadAdditionalProps';\nimport capitalize from '../utils/capitalize';\nimport SliderValueLabel from './SliderValueLabel';\nimport sliderClasses, { getSliderUtilityClass } from './sliderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst valueToPercent = (value, min, max) => (value - min) * 100 / (max - min);\nfunction Identity(x) {\n  return x;\n}\nconst SliderRoot = styled('span', {\n  name: 'MuiSlider',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`color${capitalize(ownerState.color)}`], ownerState.size !== 'medium' && styles[`size${capitalize(ownerState.size)}`], ownerState.marked && styles.marked, ownerState.orientation === 'vertical' && styles.vertical, ownerState.track === 'inverted' && styles.trackInverted, ownerState.track === false && styles.trackFalse];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  borderRadius: 12,\n  boxSizing: 'content-box',\n  display: 'inline-block',\n  position: 'relative',\n  cursor: 'pointer',\n  touchAction: 'none',\n  color: (theme.vars || theme).palette[ownerState.color].main,\n  WebkitTapHighlightColor: 'transparent'\n}, ownerState.orientation === 'horizontal' && _extends({\n  height: 4,\n  width: '100%',\n  padding: '13px 0',\n  // The primary input mechanism of the device includes a pointing device of limited accuracy.\n  '@media (pointer: coarse)': {\n    // Reach 42px touch target, about ~8mm on screen.\n    padding: '20px 0'\n  }\n}, ownerState.size === 'small' && {\n  height: 2\n}, ownerState.marked && {\n  marginBottom: 20\n}), ownerState.orientation === 'vertical' && _extends({\n  height: '100%',\n  width: 4,\n  padding: '0 13px',\n  // The primary input mechanism of the device includes a pointing device of limited accuracy.\n  '@media (pointer: coarse)': {\n    // Reach 42px touch target, about ~8mm on screen.\n    padding: '0 20px'\n  }\n}, ownerState.size === 'small' && {\n  width: 2\n}, ownerState.marked && {\n  marginRight: 44\n}), {\n  '@media print': {\n    colorAdjust: 'exact'\n  },\n  [`&.${sliderClasses.disabled}`]: {\n    pointerEvents: 'none',\n    cursor: 'default',\n    color: (theme.vars || theme).palette.grey[400]\n  },\n  [`&.${sliderClasses.dragging}`]: {\n    [`& .${sliderClasses.thumb}, & .${sliderClasses.track}`]: {\n      transition: 'none'\n    }\n  }\n}));\nprocess.env.NODE_ENV !== \"production\" ? SliderRoot.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  children: PropTypes.node\n} : void 0;\nexport { SliderRoot };\nconst SliderRail = styled('span', {\n  name: 'MuiSlider',\n  slot: 'Rail',\n  overridesResolver: (props, styles) => styles.rail\n})(({\n  ownerState\n}) => _extends({\n  display: 'block',\n  position: 'absolute',\n  borderRadius: 'inherit',\n  backgroundColor: 'currentColor',\n  opacity: 0.38\n}, ownerState.orientation === 'horizontal' && {\n  width: '100%',\n  height: 'inherit',\n  top: '50%',\n  transform: 'translateY(-50%)'\n}, ownerState.orientation === 'vertical' && {\n  height: '100%',\n  width: 'inherit',\n  left: '50%',\n  transform: 'translateX(-50%)'\n}, ownerState.track === 'inverted' && {\n  opacity: 1\n}));\nprocess.env.NODE_ENV !== \"production\" ? SliderRail.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  children: PropTypes.node\n} : void 0;\nexport { SliderRail };\nconst SliderTrack = styled('span', {\n  name: 'MuiSlider',\n  slot: 'Track',\n  overridesResolver: (props, styles) => styles.track\n})(({\n  theme,\n  ownerState\n}) => {\n  const color =\n  // Same logic as the LinearProgress track color\n  theme.palette.mode === 'light' ? lighten(theme.palette[ownerState.color].main, 0.62) : darken(theme.palette[ownerState.color].main, 0.5);\n  return _extends({\n    display: 'block',\n    position: 'absolute',\n    borderRadius: 'inherit',\n    border: '1px solid currentColor',\n    backgroundColor: 'currentColor',\n    transition: theme.transitions.create(['left', 'width', 'bottom', 'height'], {\n      duration: theme.transitions.duration.shortest\n    })\n  }, ownerState.size === 'small' && {\n    border: 'none'\n  }, ownerState.orientation === 'horizontal' && {\n    height: 'inherit',\n    top: '50%',\n    transform: 'translateY(-50%)'\n  }, ownerState.orientation === 'vertical' && {\n    width: 'inherit',\n    left: '50%',\n    transform: 'translateX(-50%)'\n  }, ownerState.track === false && {\n    display: 'none'\n  }, ownerState.track === 'inverted' && {\n    backgroundColor: theme.vars ? theme.vars.palette.Slider[`${ownerState.color}Track`] : color,\n    borderColor: theme.vars ? theme.vars.palette.Slider[`${ownerState.color}Track`] : color\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? SliderTrack.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  children: PropTypes.node\n} : void 0;\nexport { SliderTrack };\nconst SliderThumb = styled('span', {\n  name: 'MuiSlider',\n  slot: 'Thumb',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.thumb, styles[`thumbColor${capitalize(ownerState.color)}`], ownerState.size !== 'medium' && styles[`thumbSize${capitalize(ownerState.size)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  position: 'absolute',\n  width: 20,\n  height: 20,\n  boxSizing: 'border-box',\n  borderRadius: '50%',\n  outline: 0,\n  backgroundColor: 'currentColor',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  transition: theme.transitions.create(['box-shadow', 'left', 'bottom'], {\n    duration: theme.transitions.duration.shortest\n  })\n}, ownerState.size === 'small' && {\n  width: 12,\n  height: 12\n}, ownerState.orientation === 'horizontal' && {\n  top: '50%',\n  transform: 'translate(-50%, -50%)'\n}, ownerState.orientation === 'vertical' && {\n  left: '50%',\n  transform: 'translate(-50%, 50%)'\n}, {\n  '&:before': _extends({\n    position: 'absolute',\n    content: '\"\"',\n    borderRadius: 'inherit',\n    width: '100%',\n    height: '100%',\n    boxShadow: (theme.vars || theme).shadows[2]\n  }, ownerState.size === 'small' && {\n    boxShadow: 'none'\n  }),\n  '&::after': {\n    position: 'absolute',\n    content: '\"\"',\n    borderRadius: '50%',\n    // 42px is the hit target\n    width: 42,\n    height: 42,\n    top: '50%',\n    left: '50%',\n    transform: 'translate(-50%, -50%)'\n  },\n  [`&:hover, &.${sliderClasses.focusVisible}`]: {\n    boxShadow: `0px 0px 0px 8px ${theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.16)` : alpha(theme.palette[ownerState.color].main, 0.16)}`,\n    '@media (hover: none)': {\n      boxShadow: 'none'\n    }\n  },\n  [`&.${sliderClasses.active}`]: {\n    boxShadow: `0px 0px 0px 14px ${theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.16)` : alpha(theme.palette[ownerState.color].main, 0.16)}`\n  },\n  [`&.${sliderClasses.disabled}`]: {\n    '&:hover': {\n      boxShadow: 'none'\n    }\n  }\n}));\nprocess.env.NODE_ENV !== \"production\" ? SliderThumb.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  children: PropTypes.node\n} : void 0;\nexport { SliderThumb };\nconst StyledSliderValueLabel = styled(SliderValueLabel, {\n  name: 'MuiSlider',\n  slot: 'ValueLabel',\n  overridesResolver: (props, styles) => styles.valueLabel\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  [`&.${sliderClasses.valueLabelOpen}`]: {\n    transform: 'translateY(-100%) scale(1)'\n  },\n  zIndex: 1,\n  whiteSpace: 'nowrap'\n}, theme.typography.body2, {\n  fontWeight: 500,\n  transition: theme.transitions.create(['transform'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  transform: 'translateY(-100%) scale(0)',\n  position: 'absolute',\n  backgroundColor: (theme.vars || theme).palette.grey[600],\n  borderRadius: 2,\n  color: (theme.vars || theme).palette.common.white,\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  padding: '0.25rem 0.75rem'\n}, ownerState.orientation === 'horizontal' && {\n  top: '-10px',\n  transformOrigin: 'bottom center',\n  '&:before': {\n    position: 'absolute',\n    content: '\"\"',\n    width: 8,\n    height: 8,\n    transform: 'translate(-50%, 50%) rotate(45deg)',\n    backgroundColor: 'inherit',\n    bottom: 0,\n    left: '50%'\n  }\n}, ownerState.orientation === 'vertical' && {\n  right: '30px',\n  top: '24px',\n  transformOrigin: 'right center',\n  '&:before': {\n    position: 'absolute',\n    content: '\"\"',\n    width: 8,\n    height: 8,\n    transform: 'translate(-50%, 50%) rotate(45deg)',\n    backgroundColor: 'inherit',\n    right: '-20%',\n    top: '25%'\n  }\n}, ownerState.size === 'small' && {\n  fontSize: theme.typography.pxToRem(12),\n  padding: '0.25rem 0.5rem'\n}));\nprocess.env.NODE_ENV !== \"production\" ? StyledSliderValueLabel.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  children: PropTypes.node\n} : void 0;\nexport { StyledSliderValueLabel as SliderValueLabel };\nconst SliderMark = styled('span', {\n  name: 'MuiSlider',\n  slot: 'Mark',\n  shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'markActive',\n  overridesResolver: (props, styles) => {\n    const {\n      markActive\n    } = props;\n    return [styles.mark, markActive && styles.markActive];\n  }\n})(({\n  theme,\n  ownerState,\n  markActive\n}) => _extends({\n  position: 'absolute',\n  width: 2,\n  height: 2,\n  borderRadius: 1,\n  backgroundColor: 'currentColor'\n}, ownerState.orientation === 'horizontal' && {\n  top: '50%',\n  transform: 'translate(-1px, -50%)'\n}, ownerState.orientation === 'vertical' && {\n  left: '50%',\n  transform: 'translate(-50%, 1px)'\n}, markActive && {\n  backgroundColor: (theme.vars || theme).palette.background.paper,\n  opacity: 0.8\n}));\nprocess.env.NODE_ENV !== \"production\" ? SliderMark.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  children: PropTypes.node\n} : void 0;\nexport { SliderMark };\nconst SliderMarkLabel = styled('span', {\n  name: 'MuiSlider',\n  slot: 'MarkLabel',\n  shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'markLabelActive',\n  overridesResolver: (props, styles) => styles.markLabel\n})(({\n  theme,\n  ownerState,\n  markLabelActive\n}) => _extends({}, theme.typography.body2, {\n  color: (theme.vars || theme).palette.text.secondary,\n  position: 'absolute',\n  whiteSpace: 'nowrap'\n}, ownerState.orientation === 'horizontal' && {\n  top: 30,\n  transform: 'translateX(-50%)',\n  '@media (pointer: coarse)': {\n    top: 40\n  }\n}, ownerState.orientation === 'vertical' && {\n  left: 36,\n  transform: 'translateY(50%)',\n  '@media (pointer: coarse)': {\n    left: 44\n  }\n}, markLabelActive && {\n  color: (theme.vars || theme).palette.text.primary\n}));\nprocess.env.NODE_ENV !== \"production\" ? SliderMarkLabel.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * @ignore\n   */\n  children: PropTypes.node\n} : void 0;\nexport { SliderMarkLabel };\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    dragging,\n    marked,\n    orientation,\n    track,\n    classes,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', dragging && 'dragging', marked && 'marked', orientation === 'vertical' && 'vertical', track === 'inverted' && 'trackInverted', track === false && 'trackFalse', color && `color${capitalize(color)}`, size && `size${capitalize(size)}`],\n    rail: ['rail'],\n    track: ['track'],\n    mark: ['mark'],\n    markActive: ['markActive'],\n    markLabel: ['markLabel'],\n    markLabelActive: ['markLabelActive'],\n    valueLabel: ['valueLabel'],\n    thumb: ['thumb', disabled && 'disabled', size && `thumbSize${capitalize(size)}`, color && `thumbColor${capitalize(color)}`],\n    active: ['active'],\n    disabled: ['disabled'],\n    focusVisible: ['focusVisible']\n  };\n  return composeClasses(slots, getSliderUtilityClass, classes);\n};\nconst Forward = ({\n  children\n}) => children;\nconst Slider = /*#__PURE__*/React.forwardRef(function Slider(inputProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$rail, _ref3, _slots$track, _ref4, _slots$thumb, _ref5, _slots$valueLabel, _ref6, _slots$mark, _ref7, _slots$markLabel, _ref8, _slots$input, _slotProps$root, _slotProps$rail, _slotProps$track, _slotProps$thumb, _slotProps$valueLabel, _slotProps$mark, _slotProps$markLabel, _slotProps$input;\n  const props = useThemeProps({\n    props: inputProps,\n    name: 'MuiSlider'\n  });\n  const theme = useTheme();\n  const isRtl = theme.direction === 'rtl';\n  const {\n      'aria-label': ariaLabel,\n      'aria-valuetext': ariaValuetext,\n      'aria-labelledby': ariaLabelledby,\n      // eslint-disable-next-line react/prop-types\n      component = 'span',\n      components = {},\n      componentsProps = {},\n      color = 'primary',\n      classes: classesProp,\n      // eslint-disable-next-line react/prop-types\n      className,\n      disableSwap = false,\n      disabled = false,\n      getAriaLabel,\n      getAriaValueText,\n      marks: marksProp = false,\n      max = 100,\n      min = 0,\n      orientation = 'horizontal',\n      size = 'medium',\n      step = 1,\n      scale = Identity,\n      slotProps,\n      slots,\n      track = 'normal',\n      valueLabelDisplay = 'off',\n      valueLabelFormat = Identity\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    isRtl,\n    max,\n    min,\n    classes: classesProp,\n    disabled,\n    disableSwap,\n    orientation,\n    marks: marksProp,\n    color,\n    size,\n    step,\n    scale,\n    track,\n    valueLabelDisplay,\n    valueLabelFormat\n  });\n  const {\n    axisProps,\n    getRootProps,\n    getHiddenInputProps,\n    getThumbProps,\n    open,\n    active,\n    axis,\n    focusedThumbIndex,\n    range,\n    dragging,\n    marks,\n    values,\n    trackOffset,\n    trackLeap\n  } = useSlider(_extends({}, ownerState, {\n    ref\n  }));\n  ownerState.marked = marks.length > 0 && marks.some(mark => mark.label);\n  ownerState.dragging = dragging;\n  ownerState.focusedThumbIndex = focusedThumbIndex;\n  const classes = useUtilityClasses(ownerState);\n\n  // support both `slots` and `components` for backward compatibility\n  const RootSlot = (_ref = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref : SliderRoot;\n  const RailSlot = (_ref2 = (_slots$rail = slots == null ? void 0 : slots.rail) != null ? _slots$rail : components.Rail) != null ? _ref2 : SliderRail;\n  const TrackSlot = (_ref3 = (_slots$track = slots == null ? void 0 : slots.track) != null ? _slots$track : components.Track) != null ? _ref3 : SliderTrack;\n  const ThumbSlot = (_ref4 = (_slots$thumb = slots == null ? void 0 : slots.thumb) != null ? _slots$thumb : components.Thumb) != null ? _ref4 : SliderThumb;\n  const ValueLabelSlot = (_ref5 = (_slots$valueLabel = slots == null ? void 0 : slots.valueLabel) != null ? _slots$valueLabel : components.ValueLabel) != null ? _ref5 : StyledSliderValueLabel;\n  const MarkSlot = (_ref6 = (_slots$mark = slots == null ? void 0 : slots.mark) != null ? _slots$mark : components.Mark) != null ? _ref6 : SliderMark;\n  const MarkLabelSlot = (_ref7 = (_slots$markLabel = slots == null ? void 0 : slots.markLabel) != null ? _slots$markLabel : components.MarkLabel) != null ? _ref7 : SliderMarkLabel;\n  const InputSlot = (_ref8 = (_slots$input = slots == null ? void 0 : slots.input) != null ? _slots$input : components.Input) != null ? _ref8 : 'input';\n  const rootSlotProps = (_slotProps$root = slotProps == null ? void 0 : slotProps.root) != null ? _slotProps$root : componentsProps.root;\n  const railSlotProps = (_slotProps$rail = slotProps == null ? void 0 : slotProps.rail) != null ? _slotProps$rail : componentsProps.rail;\n  const trackSlotProps = (_slotProps$track = slotProps == null ? void 0 : slotProps.track) != null ? _slotProps$track : componentsProps.track;\n  const thumbSlotProps = (_slotProps$thumb = slotProps == null ? void 0 : slotProps.thumb) != null ? _slotProps$thumb : componentsProps.thumb;\n  const valueLabelSlotProps = (_slotProps$valueLabel = slotProps == null ? void 0 : slotProps.valueLabel) != null ? _slotProps$valueLabel : componentsProps.valueLabel;\n  const markSlotProps = (_slotProps$mark = slotProps == null ? void 0 : slotProps.mark) != null ? _slotProps$mark : componentsProps.mark;\n  const markLabelSlotProps = (_slotProps$markLabel = slotProps == null ? void 0 : slotProps.markLabel) != null ? _slotProps$markLabel : componentsProps.markLabel;\n  const inputSlotProps = (_slotProps$input = slotProps == null ? void 0 : slotProps.input) != null ? _slotProps$input : componentsProps.input;\n  const rootProps = useSlotProps({\n    elementType: RootSlot,\n    getSlotProps: getRootProps,\n    externalSlotProps: rootSlotProps,\n    externalForwardedProps: other,\n    additionalProps: _extends({}, shouldSpreadAdditionalProps(RootSlot) && {\n      as: component\n    }),\n    ownerState: _extends({}, ownerState, rootSlotProps == null ? void 0 : rootSlotProps.ownerState),\n    className: [classes.root, className]\n  });\n  const railProps = useSlotProps({\n    elementType: RailSlot,\n    externalSlotProps: railSlotProps,\n    ownerState,\n    className: classes.rail\n  });\n  const trackProps = useSlotProps({\n    elementType: TrackSlot,\n    externalSlotProps: trackSlotProps,\n    additionalProps: {\n      style: _extends({}, axisProps[axis].offset(trackOffset), axisProps[axis].leap(trackLeap))\n    },\n    ownerState: _extends({}, ownerState, trackSlotProps == null ? void 0 : trackSlotProps.ownerState),\n    className: classes.track\n  });\n  const thumbProps = useSlotProps({\n    elementType: ThumbSlot,\n    getSlotProps: getThumbProps,\n    externalSlotProps: thumbSlotProps,\n    ownerState: _extends({}, ownerState, thumbSlotProps == null ? void 0 : thumbSlotProps.ownerState)\n  });\n  const valueLabelProps = useSlotProps({\n    elementType: ValueLabelSlot,\n    externalSlotProps: valueLabelSlotProps,\n    ownerState: _extends({}, ownerState, valueLabelSlotProps == null ? void 0 : valueLabelSlotProps.ownerState),\n    className: classes.valueLabel\n  });\n  const markProps = useSlotProps({\n    elementType: MarkSlot,\n    externalSlotProps: markSlotProps,\n    ownerState,\n    className: classes.mark\n  });\n  const markLabelProps = useSlotProps({\n    elementType: MarkLabelSlot,\n    externalSlotProps: markLabelSlotProps,\n    ownerState\n  });\n  const inputSliderProps = useSlotProps({\n    elementType: InputSlot,\n    getSlotProps: getHiddenInputProps,\n    externalSlotProps: inputSlotProps,\n    ownerState\n  });\n  return /*#__PURE__*/_jsxs(RootSlot, _extends({}, rootProps, {\n    children: [/*#__PURE__*/_jsx(RailSlot, _extends({}, railProps)), /*#__PURE__*/_jsx(TrackSlot, _extends({}, trackProps)), marks.filter(mark => mark.value >= min && mark.value <= max).map((mark, index) => {\n      const percent = valueToPercent(mark.value, min, max);\n      const style = axisProps[axis].offset(percent);\n      let markActive;\n      if (track === false) {\n        markActive = values.indexOf(mark.value) !== -1;\n      } else {\n        markActive = track === 'normal' && (range ? mark.value >= values[0] && mark.value <= values[values.length - 1] : mark.value <= values[0]) || track === 'inverted' && (range ? mark.value <= values[0] || mark.value >= values[values.length - 1] : mark.value >= values[0]);\n      }\n      return /*#__PURE__*/_jsxs(React.Fragment, {\n        children: [/*#__PURE__*/_jsx(MarkSlot, _extends({\n          \"data-index\": index\n        }, markProps, !isHostComponent(MarkSlot) && {\n          markActive\n        }, {\n          style: _extends({}, style, markProps.style),\n          className: clsx(markProps.className, markActive && classes.markActive)\n        })), mark.label != null ? /*#__PURE__*/_jsx(MarkLabelSlot, _extends({\n          \"aria-hidden\": true,\n          \"data-index\": index\n        }, markLabelProps, !isHostComponent(MarkLabelSlot) && {\n          markLabelActive: markActive\n        }, {\n          style: _extends({}, style, markLabelProps.style),\n          className: clsx(classes.markLabel, markLabelProps.className, markActive && classes.markLabelActive),\n          children: mark.label\n        })) : null]\n      }, index);\n    }), values.map((value, index) => {\n      const percent = valueToPercent(value, min, max);\n      const style = axisProps[axis].offset(percent);\n      const ValueLabelComponent = valueLabelDisplay === 'off' ? Forward : ValueLabelSlot;\n      return /*#__PURE__*/_jsx(React.Fragment, {\n        children: /*#__PURE__*/_jsx(ValueLabelComponent, _extends({}, !isHostComponent(ValueLabelComponent) && {\n          valueLabelFormat,\n          valueLabelDisplay,\n          value: typeof valueLabelFormat === 'function' ? valueLabelFormat(scale(value), index) : valueLabelFormat,\n          index,\n          open: open === index || active === index || valueLabelDisplay === 'on',\n          disabled\n        }, valueLabelProps, {\n          children: /*#__PURE__*/_jsx(ThumbSlot, _extends({\n            \"data-index\": index,\n            \"data-focusvisible\": focusedThumbIndex === index\n          }, thumbProps, {\n            className: clsx(classes.thumb, thumbProps.className, active === index && classes.active, focusedThumbIndex === index && classes.focusVisible),\n            style: _extends({}, style, {\n              pointerEvents: disableSwap && active !== index ? 'none' : undefined\n            }, thumbProps.style),\n            children: /*#__PURE__*/_jsx(InputSlot, _extends({\n              \"data-index\": index,\n              \"aria-label\": getAriaLabel ? getAriaLabel(index) : ariaLabel,\n              \"aria-valuenow\": scale(value),\n              \"aria-labelledby\": ariaLabelledby,\n              \"aria-valuetext\": getAriaValueText ? getAriaValueText(scale(value), index) : ariaValuetext,\n              value: values[index]\n            }, inputSliderProps))\n          }))\n        }))\n      }, index);\n    })]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Slider.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The label of the slider.\n   */\n  'aria-label': chainPropTypes(PropTypes.string, props => {\n    const range = Array.isArray(props.value || props.defaultValue);\n    if (range && props['aria-label'] != null) {\n      return new Error('MUI: You need to use the `getAriaLabel` prop instead of `aria-label` when using a range slider.');\n    }\n    return null;\n  }),\n  /**\n   * The id of the element containing a label for the slider.\n   */\n  'aria-labelledby': PropTypes.string,\n  /**\n   * A string value that provides a user-friendly name for the current value of the slider.\n   */\n  'aria-valuetext': chainPropTypes(PropTypes.string, props => {\n    const range = Array.isArray(props.value || props.defaultValue);\n    if (range && props['aria-valuetext'] != null) {\n      return new Error('MUI: You need to use the `getAriaValueText` prop instead of `aria-valuetext` when using a range slider.');\n    }\n    return null;\n  }),\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Mark: PropTypes.elementType,\n    MarkLabel: PropTypes.elementType,\n    Rail: PropTypes.elementType,\n    Root: PropTypes.elementType,\n    Thumb: PropTypes.elementType,\n    Track: PropTypes.elementType,\n    ValueLabel: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    mark: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    markLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    rail: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    thumb: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    track: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    valueLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n      children: PropTypes.element,\n      className: PropTypes.string,\n      open: PropTypes.bool,\n      style: PropTypes.object,\n      value: PropTypes.number,\n      valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on'])\n    })])\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the active thumb doesn't swap when moving pointer over a thumb while dragging another thumb.\n   * @default false\n   */\n  disableSwap: PropTypes.bool,\n  /**\n   * Accepts a function which returns a string value that provides a user-friendly name for the thumb labels of the slider.\n   * This is important for screen reader users.\n   * @param {number} index The thumb label's index to format.\n   * @returns {string}\n   */\n  getAriaLabel: PropTypes.func,\n  /**\n   * Accepts a function which returns a string value that provides a user-friendly name for the current value of the slider.\n   * This is important for screen reader users.\n   * @param {number} value The thumb label's value to format.\n   * @param {number} index The thumb label's index to format.\n   * @returns {string}\n   */\n  getAriaValueText: PropTypes.func,\n  /**\n   * Marks indicate predetermined values to which the user can move the slider.\n   * If `true` the marks are spaced according the value of the `step` prop.\n   * If an array, it should contain objects with `value` and an optional `label` keys.\n   * @default false\n   */\n  marks: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape({\n    label: PropTypes.node,\n    value: PropTypes.number.isRequired\n  })), PropTypes.bool]),\n  /**\n   * The maximum allowed value of the slider.\n   * Should not be equal to min.\n   * @default 100\n   */\n  max: PropTypes.number,\n  /**\n   * The minimum allowed value of the slider.\n   * Should not be equal to max.\n   * @default 0\n   */\n  min: PropTypes.number,\n  /**\n   * Name attribute of the hidden `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback function that is fired when the slider's value changed.\n   *\n   * @param {Event} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (any).\n   * **Warning**: This is a generic event not a change event.\n   * @param {number | number[]} value The new value.\n   * @param {number} activeThumb Index of the currently moved thumb.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback function that is fired when the `mouseup` is triggered.\n   *\n   * @param {React.SyntheticEvent | Event} event The event source of the callback. **Warning**: This is a generic event not a change event.\n   * @param {number | number[]} value The new value.\n   */\n  onChangeCommitted: PropTypes.func,\n  /**\n   * The component orientation.\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * A transformation function, to change the scale of the slider.\n   * @param {any} x\n   * @returns {any}\n   * @default function Identity(x) {\n   *   return x;\n   * }\n   */\n  scale: PropTypes.func,\n  /**\n   * The size of the slider.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n  /**\n   * The props used for each slot inside the Slider.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    mark: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    markLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    rail: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    thumb: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    track: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    valueLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n      children: PropTypes.element,\n      className: PropTypes.string,\n      open: PropTypes.bool,\n      style: PropTypes.object,\n      value: PropTypes.number,\n      valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on'])\n    })])\n  }),\n  /**\n   * The components used for each slot inside the Slider.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    mark: PropTypes.elementType,\n    markLabel: PropTypes.elementType,\n    rail: PropTypes.elementType,\n    root: PropTypes.elementType,\n    thumb: PropTypes.elementType,\n    track: PropTypes.elementType,\n    valueLabel: PropTypes.elementType\n  }),\n  /**\n   * The granularity with which the slider can step through values. (A \"discrete\" slider.)\n   * The `min` prop serves as the origin for the valid values.\n   * We recommend (max - min) to be evenly divisible by the step.\n   *\n   * When step is `null`, the thumb can only be slid onto marks provided with the `marks` prop.\n   * @default 1\n   */\n  step: PropTypes.number,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Tab index attribute of the hidden `input` element.\n   */\n  tabIndex: PropTypes.number,\n  /**\n   * The track presentation:\n   *\n   * - `normal` the track will render a bar representing the slider value.\n   * - `inverted` the track will render a bar representing the remaining slider value.\n   * - `false` the track will render without a bar.\n   * @default 'normal'\n   */\n  track: PropTypes.oneOf(['inverted', 'normal', false]),\n  /**\n   * The value of the slider.\n   * For ranged sliders, provide an array with two values.\n   */\n  value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),\n  /**\n   * Controls when the value label is displayed:\n   *\n   * - `auto` the value label will display when the thumb is hovered or focused.\n   * - `on` will display persistently.\n   * - `off` will never display.\n   * @default 'off'\n   */\n  valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on']),\n  /**\n   * The format function the value label's value.\n   *\n   * When a function is provided, it should have the following signature:\n   *\n   * - {number} value The value label's value to format\n   * - {number} index The value label's index to format\n   * @param {any} x\n   * @returns {any}\n   * @default function Identity(x) {\n   *   return x;\n   * }\n   */\n  valueLabelFormat: PropTypes.oneOfType([PropTypes.func, PropTypes.string])\n} : void 0;\nexport default Slider;", "export { default } from './Slider';\nexport * from './Slider';\nexport { default as sliderClasses } from './sliderClasses';\nexport * from './sliderClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSnackbarContentUtilityClass(slot) {\n  return generateUtilityClass('MuiSnackbarContent', slot);\n}\nconst snackbarContentClasses = generateUtilityClasses('MuiSnackbarContent', ['root', 'message', 'action']);\nexport default snackbarContentClasses;", "export { default } from './SnackbarContent';\nexport { default as snackbarContentClasses } from './snackbarContentClasses';\nexport * from './snackbarContentClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSnackbarUtilityClass(slot) {\n  return generateUtilityClass('MuiSnackbar', slot);\n}\nconst snackbarClasses = generateUtilityClasses('MuiSnackbar', ['root', 'anchorOriginTopCenter', 'anchorOriginBottomCenter', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft']);\nexport default snackbarClasses;", "export { default } from './Snackbar';\nexport { default as snackbarClasses } from './snackbarClasses';\nexport * from './snackbarClasses';", "export { default } from './Zoom';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSpeedDialUtilityClass(slot) {\n  return generateUtilityClass('MuiSpeedDial', slot);\n}\nconst speedDialClasses = generateUtilityClasses('MuiSpeedDial', ['root', 'fab', 'directionUp', 'directionDown', 'directionLeft', 'directionRight', 'actions', 'actionsClosed']);\nexport default speedDialClasses;", "export { default } from './SpeedDial';\nexport { default as speedDialClasses } from './speedDialClasses';\nexport * from './speedDialClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTooltipUtilityClass(slot) {\n  return generateUtilityClass('MuiTooltip', slot);\n}\nconst tooltipClasses = generateUtilityClasses('MuiTooltip', ['popper', 'popperInteractive', 'popperArrow', 'popperClose', 'tooltip', 'tooltipArrow', 'touch', 'tooltipPlacementLeft', 'tooltipPlacementRight', 'tooltipPlacementTop', 'tooltipPlacementBottom', 'arrow']);\nexport default tooltipClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"arrow\", \"children\", \"classes\", \"components\", \"componentsProps\", \"describeChild\", \"disableFocusListener\", \"disableHoverListener\", \"disableInteractive\", \"disableTouchListener\", \"enterDelay\", \"enterNextDelay\", \"enterTouchDelay\", \"followCursor\", \"id\", \"leaveDelay\", \"leaveTouchDelay\", \"onClose\", \"onOpen\", \"open\", \"placement\", \"PopperComponent\", \"PopperProps\", \"slotProps\", \"slots\", \"title\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, appendOwnerState } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport Grow from '../Grow';\nimport Popper from '../Popper';\nimport useEventCallback from '../utils/useEventCallback';\nimport useForkRef from '../utils/useForkRef';\nimport useId from '../utils/useId';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useControlled from '../utils/useControlled';\nimport tooltipClasses, { getTooltipUtilityClass } from './tooltipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction round(value) {\n  return Math.round(value * 1e5) / 1e5;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableInteractive,\n    arrow,\n    touch,\n    placement\n  } = ownerState;\n  const slots = {\n    popper: ['popper', !disableInteractive && 'popperInteractive', arrow && 'popperArrow'],\n    tooltip: ['tooltip', arrow && 'tooltipArrow', touch && 'touch', `tooltipPlacement${capitalize(placement.split('-')[0])}`],\n    arrow: ['arrow']\n  };\n  return composeClasses(slots, getTooltipUtilityClass, classes);\n};\nconst TooltipPopper = styled(Popper, {\n  name: 'MuiTooltip',\n  slot: 'Popper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.popper, !ownerState.disableInteractive && styles.popperInteractive, ownerState.arrow && styles.popperArrow, !ownerState.open && styles.popperClose];\n  }\n})(({\n  theme,\n  ownerState,\n  open\n}) => _extends({\n  zIndex: (theme.vars || theme).zIndex.tooltip,\n  pointerEvents: 'none'\n}, !ownerState.disableInteractive && {\n  pointerEvents: 'auto'\n}, !open && {\n  pointerEvents: 'none'\n}, ownerState.arrow && {\n  [`&[data-popper-placement*=\"bottom\"] .${tooltipClasses.arrow}`]: {\n    top: 0,\n    marginTop: '-0.71em',\n    '&::before': {\n      transformOrigin: '0 100%'\n    }\n  },\n  [`&[data-popper-placement*=\"top\"] .${tooltipClasses.arrow}`]: {\n    bottom: 0,\n    marginBottom: '-0.71em',\n    '&::before': {\n      transformOrigin: '100% 0'\n    }\n  },\n  [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n    left: 0,\n    marginLeft: '-0.71em'\n  } : {\n    right: 0,\n    marginRight: '-0.71em'\n  }, {\n    height: '1em',\n    width: '0.71em',\n    '&::before': {\n      transformOrigin: '100% 100%'\n    }\n  }),\n  [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n    right: 0,\n    marginRight: '-0.71em'\n  } : {\n    left: 0,\n    marginLeft: '-0.71em'\n  }, {\n    height: '1em',\n    width: '0.71em',\n    '&::before': {\n      transformOrigin: '0 0'\n    }\n  })\n}));\nconst TooltipTooltip = styled('div', {\n  name: 'MuiTooltip',\n  slot: 'Tooltip',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.tooltip, ownerState.touch && styles.touch, ownerState.arrow && styles.tooltipArrow, styles[`tooltipPlacement${capitalize(ownerState.placement.split('-')[0])}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.92),\n  borderRadius: (theme.vars || theme).shape.borderRadius,\n  color: (theme.vars || theme).palette.common.white,\n  fontFamily: theme.typography.fontFamily,\n  padding: '4px 8px',\n  fontSize: theme.typography.pxToRem(11),\n  maxWidth: 300,\n  margin: 2,\n  wordWrap: 'break-word',\n  fontWeight: theme.typography.fontWeightMedium\n}, ownerState.arrow && {\n  position: 'relative',\n  margin: 0\n}, ownerState.touch && {\n  padding: '8px 16px',\n  fontSize: theme.typography.pxToRem(14),\n  lineHeight: `${round(16 / 14)}em`,\n  fontWeight: theme.typography.fontWeightRegular\n}, {\n  [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: _extends({\n    transformOrigin: 'right center'\n  }, !ownerState.isRtl ? _extends({\n    marginRight: '14px'\n  }, ownerState.touch && {\n    marginRight: '24px'\n  }) : _extends({\n    marginLeft: '14px'\n  }, ownerState.touch && {\n    marginLeft: '24px'\n  })),\n  [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: _extends({\n    transformOrigin: 'left center'\n  }, !ownerState.isRtl ? _extends({\n    marginLeft: '14px'\n  }, ownerState.touch && {\n    marginLeft: '24px'\n  }) : _extends({\n    marginRight: '14px'\n  }, ownerState.touch && {\n    marginRight: '24px'\n  })),\n  [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: _extends({\n    transformOrigin: 'center bottom',\n    marginBottom: '14px'\n  }, ownerState.touch && {\n    marginBottom: '24px'\n  }),\n  [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: _extends({\n    transformOrigin: 'center top',\n    marginTop: '14px'\n  }, ownerState.touch && {\n    marginTop: '24px'\n  })\n}));\nconst TooltipArrow = styled('span', {\n  name: 'MuiTooltip',\n  slot: 'Arrow',\n  overridesResolver: (props, styles) => styles.arrow\n})(({\n  theme\n}) => ({\n  overflow: 'hidden',\n  position: 'absolute',\n  width: '1em',\n  height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n  boxSizing: 'border-box',\n  color: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.9),\n  '&::before': {\n    content: '\"\"',\n    margin: 'auto',\n    display: 'block',\n    width: '100%',\n    height: '100%',\n    backgroundColor: 'currentColor',\n    transform: 'rotate(45deg)'\n  }\n}));\nlet hystersisOpen = false;\nlet hystersisTimer = null;\nlet cursorPosition = {\n  x: 0,\n  y: 0\n};\nexport function testReset() {\n  hystersisOpen = false;\n  clearTimeout(hystersisTimer);\n}\nfunction composeEventHandler(handler, eventHandler) {\n  return event => {\n    if (eventHandler) {\n      eventHandler(event);\n    }\n    handler(event);\n  };\n}\n\n// TODO v6: Remove PopperComponent, PopperProps, TransitionComponent and TransitionProps.\nconst Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(inProps, ref) {\n  var _ref, _slots$popper, _ref2, _ref3, _slots$transition, _ref4, _slots$tooltip, _ref5, _slots$arrow, _slotProps$popper, _ref6, _slotProps$popper2, _slotProps$transition, _slotProps$tooltip, _ref7, _slotProps$tooltip2, _slotProps$arrow, _ref8, _slotProps$arrow2;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiTooltip'\n  });\n  const {\n      arrow = false,\n      children,\n      components = {},\n      componentsProps = {},\n      describeChild = false,\n      disableFocusListener = false,\n      disableHoverListener = false,\n      disableInteractive: disableInteractiveProp = false,\n      disableTouchListener = false,\n      enterDelay = 100,\n      enterNextDelay = 0,\n      enterTouchDelay = 700,\n      followCursor = false,\n      id: idProp,\n      leaveDelay = 0,\n      leaveTouchDelay = 1500,\n      onClose,\n      onOpen,\n      open: openProp,\n      placement = 'bottom',\n      PopperComponent: PopperComponentProp,\n      PopperProps = {},\n      slotProps = {},\n      slots = {},\n      title,\n      TransitionComponent: TransitionComponentProp = Grow,\n      TransitionProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const theme = useTheme();\n  const isRtl = theme.direction === 'rtl';\n  const [childNode, setChildNode] = React.useState();\n  const [arrowRef, setArrowRef] = React.useState(null);\n  const ignoreNonTouchEvents = React.useRef(false);\n  const disableInteractive = disableInteractiveProp || followCursor;\n  const closeTimer = React.useRef();\n  const enterTimer = React.useRef();\n  const leaveTimer = React.useRef();\n  const touchTimer = React.useRef();\n  const [openState, setOpenState] = useControlled({\n    controlled: openProp,\n    default: false,\n    name: 'Tooltip',\n    state: 'open'\n  });\n  let open = openState;\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const {\n      current: isControlled\n    } = React.useRef(openProp !== undefined);\n\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (childNode && childNode.disabled && !isControlled && title !== '' && childNode.tagName.toLowerCase() === 'button') {\n        console.error(['MUI: You are providing a disabled `button` child to the Tooltip component.', 'A disabled element does not fire events.', \"Tooltip needs to listen to the child element's events to display the title.\", '', 'Add a simple wrapper element, such as a `span`.'].join('\\n'));\n      }\n    }, [title, childNode, isControlled]);\n  }\n  const id = useId(idProp);\n  const prevUserSelect = React.useRef();\n  const stopTouchInteraction = React.useCallback(() => {\n    if (prevUserSelect.current !== undefined) {\n      document.body.style.WebkitUserSelect = prevUserSelect.current;\n      prevUserSelect.current = undefined;\n    }\n    clearTimeout(touchTimer.current);\n  }, []);\n  React.useEffect(() => {\n    return () => {\n      clearTimeout(closeTimer.current);\n      clearTimeout(enterTimer.current);\n      clearTimeout(leaveTimer.current);\n      stopTouchInteraction();\n    };\n  }, [stopTouchInteraction]);\n  const handleOpen = event => {\n    clearTimeout(hystersisTimer);\n    hystersisOpen = true;\n\n    // The mouseover event will trigger for every nested element in the tooltip.\n    // We can skip rerendering when the tooltip is already open.\n    // We are using the mouseover event instead of the mouseenter event to fix a hide/show issue.\n    setOpenState(true);\n    if (onOpen && !open) {\n      onOpen(event);\n    }\n  };\n  const handleClose = useEventCallback(\n  /**\n   * @param {React.SyntheticEvent | Event} event\n   */\n  event => {\n    clearTimeout(hystersisTimer);\n    hystersisTimer = setTimeout(() => {\n      hystersisOpen = false;\n    }, 800 + leaveDelay);\n    setOpenState(false);\n    if (onClose && open) {\n      onClose(event);\n    }\n    clearTimeout(closeTimer.current);\n    closeTimer.current = setTimeout(() => {\n      ignoreNonTouchEvents.current = false;\n    }, theme.transitions.duration.shortest);\n  });\n  const handleEnter = event => {\n    if (ignoreNonTouchEvents.current && event.type !== 'touchstart') {\n      return;\n    }\n\n    // Remove the title ahead of time.\n    // We don't want to wait for the next render commit.\n    // We would risk displaying two tooltips at the same time (native + this one).\n    if (childNode) {\n      childNode.removeAttribute('title');\n    }\n    clearTimeout(enterTimer.current);\n    clearTimeout(leaveTimer.current);\n    if (enterDelay || hystersisOpen && enterNextDelay) {\n      enterTimer.current = setTimeout(() => {\n        handleOpen(event);\n      }, hystersisOpen ? enterNextDelay : enterDelay);\n    } else {\n      handleOpen(event);\n    }\n  };\n  const handleLeave = event => {\n    clearTimeout(enterTimer.current);\n    clearTimeout(leaveTimer.current);\n    leaveTimer.current = setTimeout(() => {\n      handleClose(event);\n    }, leaveDelay);\n  };\n  const {\n    isFocusVisibleRef,\n    onBlur: handleBlurVisible,\n    onFocus: handleFocusVisible,\n    ref: focusVisibleRef\n  } = useIsFocusVisible();\n  // We don't necessarily care about the focusVisible state (which is safe to access via ref anyway).\n  // We just need to re-render the Tooltip if the focus-visible state changes.\n  const [, setChildIsFocusVisible] = React.useState(false);\n  const handleBlur = event => {\n    handleBlurVisible(event);\n    if (isFocusVisibleRef.current === false) {\n      setChildIsFocusVisible(false);\n      handleLeave(event);\n    }\n  };\n  const handleFocus = event => {\n    // Workaround for https://github.com/facebook/react/issues/7769\n    // The autoFocus of React might trigger the event before the componentDidMount.\n    // We need to account for this eventuality.\n    if (!childNode) {\n      setChildNode(event.currentTarget);\n    }\n    handleFocusVisible(event);\n    if (isFocusVisibleRef.current === true) {\n      setChildIsFocusVisible(true);\n      handleEnter(event);\n    }\n  };\n  const detectTouchStart = event => {\n    ignoreNonTouchEvents.current = true;\n    const childrenProps = children.props;\n    if (childrenProps.onTouchStart) {\n      childrenProps.onTouchStart(event);\n    }\n  };\n  const handleMouseOver = handleEnter;\n  const handleMouseLeave = handleLeave;\n  const handleTouchStart = event => {\n    detectTouchStart(event);\n    clearTimeout(leaveTimer.current);\n    clearTimeout(closeTimer.current);\n    stopTouchInteraction();\n    prevUserSelect.current = document.body.style.WebkitUserSelect;\n    // Prevent iOS text selection on long-tap.\n    document.body.style.WebkitUserSelect = 'none';\n    touchTimer.current = setTimeout(() => {\n      document.body.style.WebkitUserSelect = prevUserSelect.current;\n      handleEnter(event);\n    }, enterTouchDelay);\n  };\n  const handleTouchEnd = event => {\n    if (children.props.onTouchEnd) {\n      children.props.onTouchEnd(event);\n    }\n    stopTouchInteraction();\n    clearTimeout(leaveTimer.current);\n    leaveTimer.current = setTimeout(() => {\n      handleClose(event);\n    }, leaveTouchDelay);\n  };\n  React.useEffect(() => {\n    if (!open) {\n      return undefined;\n    }\n\n    /**\n     * @param {KeyboardEvent} nativeEvent\n     */\n    function handleKeyDown(nativeEvent) {\n      // IE11, Edge (prior to using Bink?) use 'Esc'\n      if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {\n        handleClose(nativeEvent);\n      }\n    }\n    document.addEventListener('keydown', handleKeyDown);\n    return () => {\n      document.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [handleClose, open]);\n  const handleRef = useForkRef(children.ref, focusVisibleRef, setChildNode, ref);\n\n  // There is no point in displaying an empty tooltip.\n  if (!title && title !== 0) {\n    open = false;\n  }\n  const popperRef = React.useRef();\n  const handleMouseMove = event => {\n    const childrenProps = children.props;\n    if (childrenProps.onMouseMove) {\n      childrenProps.onMouseMove(event);\n    }\n    cursorPosition = {\n      x: event.clientX,\n      y: event.clientY\n    };\n    if (popperRef.current) {\n      popperRef.current.update();\n    }\n  };\n  const nameOrDescProps = {};\n  const titleIsString = typeof title === 'string';\n  if (describeChild) {\n    nameOrDescProps.title = !open && titleIsString && !disableHoverListener ? title : null;\n    nameOrDescProps['aria-describedby'] = open ? id : null;\n  } else {\n    nameOrDescProps['aria-label'] = titleIsString ? title : null;\n    nameOrDescProps['aria-labelledby'] = open && !titleIsString ? id : null;\n  }\n  const childrenProps = _extends({}, nameOrDescProps, other, children.props, {\n    className: clsx(other.className, children.props.className),\n    onTouchStart: detectTouchStart,\n    ref: handleRef\n  }, followCursor ? {\n    onMouseMove: handleMouseMove\n  } : {});\n  if (process.env.NODE_ENV !== 'production') {\n    childrenProps['data-mui-internal-clone-element'] = true;\n\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (childNode && !childNode.getAttribute('data-mui-internal-clone-element')) {\n        console.error(['MUI: The `children` component of the Tooltip is not forwarding its props correctly.', 'Please make sure that props are spread on the same element that the ref is applied to.'].join('\\n'));\n      }\n    }, [childNode]);\n  }\n  const interactiveWrapperListeners = {};\n  if (!disableTouchListener) {\n    childrenProps.onTouchStart = handleTouchStart;\n    childrenProps.onTouchEnd = handleTouchEnd;\n  }\n  if (!disableHoverListener) {\n    childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);\n    childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);\n    if (!disableInteractive) {\n      interactiveWrapperListeners.onMouseOver = handleMouseOver;\n      interactiveWrapperListeners.onMouseLeave = handleMouseLeave;\n    }\n  }\n  if (!disableFocusListener) {\n    childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);\n    childrenProps.onBlur = composeEventHandler(handleBlur, childrenProps.onBlur);\n    if (!disableInteractive) {\n      interactiveWrapperListeners.onFocus = handleFocus;\n      interactiveWrapperListeners.onBlur = handleBlur;\n    }\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    if (children.props.title) {\n      console.error(['MUI: You have provided a `title` prop to the child of <Tooltip />.', `Remove this title prop \\`${children.props.title}\\` or the Tooltip component.`].join('\\n'));\n    }\n  }\n  const popperOptions = React.useMemo(() => {\n    var _PopperProps$popperOp;\n    let tooltipModifiers = [{\n      name: 'arrow',\n      enabled: Boolean(arrowRef),\n      options: {\n        element: arrowRef,\n        padding: 4\n      }\n    }];\n    if ((_PopperProps$popperOp = PopperProps.popperOptions) != null && _PopperProps$popperOp.modifiers) {\n      tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);\n    }\n    return _extends({}, PopperProps.popperOptions, {\n      modifiers: tooltipModifiers\n    });\n  }, [arrowRef, PopperProps]);\n  const ownerState = _extends({}, props, {\n    isRtl,\n    arrow,\n    disableInteractive,\n    placement,\n    PopperComponentProp,\n    touch: ignoreNonTouchEvents.current\n  });\n  const classes = useUtilityClasses(ownerState);\n  const PopperComponent = (_ref = (_slots$popper = slots.popper) != null ? _slots$popper : components.Popper) != null ? _ref : TooltipPopper;\n  const TransitionComponent = (_ref2 = (_ref3 = (_slots$transition = slots.transition) != null ? _slots$transition : components.Transition) != null ? _ref3 : TransitionComponentProp) != null ? _ref2 : Grow;\n  const TooltipComponent = (_ref4 = (_slots$tooltip = slots.tooltip) != null ? _slots$tooltip : components.Tooltip) != null ? _ref4 : TooltipTooltip;\n  const ArrowComponent = (_ref5 = (_slots$arrow = slots.arrow) != null ? _slots$arrow : components.Arrow) != null ? _ref5 : TooltipArrow;\n  const popperProps = appendOwnerState(PopperComponent, _extends({}, PopperProps, (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper, {\n    className: clsx(classes.popper, PopperProps == null ? void 0 : PopperProps.className, (_ref6 = (_slotProps$popper2 = slotProps.popper) != null ? _slotProps$popper2 : componentsProps.popper) == null ? void 0 : _ref6.className)\n  }), ownerState);\n  const transitionProps = appendOwnerState(TransitionComponent, _extends({}, TransitionProps, (_slotProps$transition = slotProps.transition) != null ? _slotProps$transition : componentsProps.transition), ownerState);\n  const tooltipProps = appendOwnerState(TooltipComponent, _extends({}, (_slotProps$tooltip = slotProps.tooltip) != null ? _slotProps$tooltip : componentsProps.tooltip, {\n    className: clsx(classes.tooltip, (_ref7 = (_slotProps$tooltip2 = slotProps.tooltip) != null ? _slotProps$tooltip2 : componentsProps.tooltip) == null ? void 0 : _ref7.className)\n  }), ownerState);\n  const tooltipArrowProps = appendOwnerState(ArrowComponent, _extends({}, (_slotProps$arrow = slotProps.arrow) != null ? _slotProps$arrow : componentsProps.arrow, {\n    className: clsx(classes.arrow, (_ref8 = (_slotProps$arrow2 = slotProps.arrow) != null ? _slotProps$arrow2 : componentsProps.arrow) == null ? void 0 : _ref8.className)\n  }), ownerState);\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/React.cloneElement(children, childrenProps), /*#__PURE__*/_jsx(PopperComponent, _extends({\n      as: PopperComponentProp != null ? PopperComponentProp : Popper,\n      placement: placement,\n      anchorEl: followCursor ? {\n        getBoundingClientRect: () => ({\n          top: cursorPosition.y,\n          left: cursorPosition.x,\n          right: cursorPosition.x,\n          bottom: cursorPosition.y,\n          width: 0,\n          height: 0\n        })\n      } : childNode,\n      popperRef: popperRef,\n      open: childNode ? open : false,\n      id: id,\n      transition: true\n    }, interactiveWrapperListeners, popperProps, {\n      popperOptions: popperOptions,\n      children: ({\n        TransitionProps: TransitionPropsInner\n      }) => /*#__PURE__*/_jsx(TransitionComponent, _extends({\n        timeout: theme.transitions.duration.shorter\n      }, TransitionPropsInner, transitionProps, {\n        children: /*#__PURE__*/_jsxs(TooltipComponent, _extends({}, tooltipProps, {\n          children: [title, arrow ? /*#__PURE__*/_jsx(ArrowComponent, _extends({}, tooltipArrowProps, {\n            ref: setArrowRef\n          })) : null]\n        }))\n      }))\n    }))]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Tooltip.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, adds an arrow to the tooltip.\n   * @default false\n   */\n  arrow: PropTypes.bool,\n  /**\n   * Tooltip reference element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Arrow: PropTypes.elementType,\n    Popper: PropTypes.elementType,\n    Tooltip: PropTypes.elementType,\n    Transition: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    arrow: PropTypes.object,\n    popper: PropTypes.object,\n    tooltip: PropTypes.object,\n    transition: PropTypes.object\n  }),\n  /**\n   * Set to `true` if the `title` acts as an accessible description.\n   * By default the `title` acts as an accessible label for the child.\n   * @default false\n   */\n  describeChild: PropTypes.bool,\n  /**\n   * Do not respond to focus-visible events.\n   * @default false\n   */\n  disableFocusListener: PropTypes.bool,\n  /**\n   * Do not respond to hover events.\n   * @default false\n   */\n  disableHoverListener: PropTypes.bool,\n  /**\n   * Makes a tooltip not interactive, i.e. it will close when the user\n   * hovers over the tooltip before the `leaveDelay` is expired.\n   * @default false\n   */\n  disableInteractive: PropTypes.bool,\n  /**\n   * Do not respond to long press touch events.\n   * @default false\n   */\n  disableTouchListener: PropTypes.bool,\n  /**\n   * The number of milliseconds to wait before showing the tooltip.\n   * This prop won't impact the enter touch delay (`enterTouchDelay`).\n   * @default 100\n   */\n  enterDelay: PropTypes.number,\n  /**\n   * The number of milliseconds to wait before showing the tooltip when one was already recently opened.\n   * @default 0\n   */\n  enterNextDelay: PropTypes.number,\n  /**\n   * The number of milliseconds a user must touch the element before showing the tooltip.\n   * @default 700\n   */\n  enterTouchDelay: PropTypes.number,\n  /**\n   * If `true`, the tooltip follow the cursor over the wrapped element.\n   * @default false\n   */\n  followCursor: PropTypes.bool,\n  /**\n   * This prop is used to help implement the accessibility logic.\n   * If you don't provide this prop. It falls back to a randomly generated id.\n   */\n  id: PropTypes.string,\n  /**\n   * The number of milliseconds to wait before hiding the tooltip.\n   * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n   * @default 0\n   */\n  leaveDelay: PropTypes.number,\n  /**\n   * The number of milliseconds after the user stops touching an element before hiding the tooltip.\n   * @default 1500\n   */\n  leaveTouchDelay: PropTypes.number,\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be open.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * Tooltip placement.\n   * @default 'bottom'\n   */\n  placement: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * The component used for the popper.\n   * @default Popper\n   */\n  PopperComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`Popper`](/material-ui/api/popper/) element.\n   * @default {}\n   */\n  PopperProps: PropTypes.object,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    arrow: PropTypes.object,\n    popper: PropTypes.object,\n    tooltip: PropTypes.object,\n    transition: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    arrow: PropTypes.elementType,\n    popper: PropTypes.elementType,\n    tooltip: PropTypes.elementType,\n    transition: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.\n   */\n  title: PropTypes.node,\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Grow\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Tooltip;", "export { default } from './Tooltip';\nexport { default as tooltipClasses } from './tooltipClasses';\nexport * from './tooltipClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSpeedDialActionUtilityClass(slot) {\n  return generateUtilityClass('MuiSpeedDialAction', slot);\n}\nconst speedDialActionClasses = generateUtilityClasses('MuiSpeedDialAction', ['fab', 'fabClosed', 'staticTooltip', 'staticTooltipClosed', 'staticTooltipLabel', 'tooltipPlacementLeft', 'tooltipPlacementRight']);\nexport default speedDialActionClasses;", "export { default } from './SpeedDialAction';\nexport { default as speedDialActionClasses } from './speedDialActionClasses';\nexport * from './speedDialActionClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSpeedDialIconUtilityClass(slot) {\n  return generateUtilityClass('MuiSpeedDialIcon', slot);\n}\nconst speedDialIconClasses = generateUtilityClasses('MuiSpeedDialIcon', ['root', 'icon', 'iconOpen', 'iconWithOpenIconOpen', 'openIcon', 'openIconOpen']);\nexport default speedDialIconClasses;", "export { default } from './SpeedDialIcon';\nexport { default as speedDialIconClasses } from './speedDialIconClasses';\nexport * from './speedDialIconClasses';", "export { default } from './Stack';", "import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepperContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepperContext.displayName = 'StepperContext';\n}\n\n/**\n * Returns the current StepperContext or an empty object if no StepperContext\n * has been defined in the component tree.\n */\nexport function useStepperContext() {\n  return React.useContext(StepperContext);\n}\nexport default StepperContext;", "import * as React from 'react';\n/**\n * Provides information about the current step in Stepper.\n */\nconst StepContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  StepContext.displayName = 'StepContext';\n}\n\n/**\n * Returns the current StepContext or an empty object if no StepContext\n * has been defined in the component tree.\n */\nexport function useStepContext() {\n  return React.useContext(StepContext);\n}\nexport default StepContext;", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getStepUtilityClass(slot) {\n  return generateUtilityClass('MuiStep', slot);\n}\nconst stepClasses = generateUtilityClasses('MuiStep', ['root', 'horizontal', 'vertical', 'alternativeLabel', 'completed']);\nexport default stepClasses;", "export { default } from './Step';\nexport { default as stepClasses } from './stepClasses';\nexport * from './stepClasses';\nexport { default as StepContext } from './StepContext';\nexport * from './StepContext';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getStepIconUtilityClass(slot) {\n  return generateUtilityClass('MuiStepIcon', slot);\n}\nconst stepIconClasses = generateUtilityClasses('MuiStepIcon', ['root', 'active', 'completed', 'error', 'text']);\nexport default stepIconClasses;", "export { default } from './StepIcon';\nexport { default as stepIconClasses } from './stepIconClasses';\nexport * from './stepIconClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getStepLabelUtilityClass(slot) {\n  return generateUtilityClass('MuiStepLabel', slot);\n}\nconst stepLabelClasses = generateUtilityClasses('MuiStepLabel', ['root', 'horizontal', 'vertical', 'label', 'active', 'completed', 'error', 'disabled', 'iconContainer', 'alternativeLabel', 'labelContainer']);\nexport default stepLabelClasses;", "export { default } from './StepLabel';\nexport { default as stepLabelClasses } from './stepLabelClasses';\nexport * from './stepLabelClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getStepButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiStepButton', slot);\n}\nconst stepButtonClasses = generateUtilityClasses('MuiStepButton', ['root', 'horizontal', 'vertical', 'touchRipple']);\nexport default stepButtonClasses;", "export { default } from './StepButton';\nexport { default as stepButtonClasses } from './stepButtonClasses';\nexport * from './stepButtonClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getStepConnectorUtilityClass(slot) {\n  return generateUtilityClass('MuiStepConnector', slot);\n}\nconst stepConnectorClasses = generateUtilityClasses('MuiStepConnector', ['root', 'horizontal', 'vertical', 'alternativeLabel', 'active', 'completed', 'disabled', 'line', 'lineHorizontal', 'lineVertical']);\nexport default stepConnectorClasses;", "export { default } from './StepConnector';\nexport { default as stepConnectorClasses } from './stepConnectorClasses';\nexport * from './stepConnectorClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getStepContentUtilityClass(slot) {\n  return generateUtilityClass('MuiStepContent', slot);\n}\nconst stepContentClasses = generateUtilityClasses('MuiStepContent', ['root', 'last', 'transition']);\nexport default stepContentClasses;", "export { default } from './StepContent';\nexport { default as stepContentClasses } from './stepContentClasses';\nexport * from './stepContentClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getStepperUtilityClass(slot) {\n  return generateUtilityClass('MuiStepper', slot);\n}\nconst stepperClasses = generateUtilityClasses('MuiStepper', ['root', 'horizontal', 'vertical', 'alternativeLabel']);\nexport default stepperClasses;", "export { default } from './Stepper';\nexport { default as stepperClasses } from './stepperClasses';\nexport * from './stepperClasses';\nexport { default as StepperContext } from './StepperContext';\nexport * from './StepperContext';", "export { default } from './SwipeableDrawer';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSwitchUtilityClass(slot) {\n  return generateUtilityClass('MuiSwitch', slot);\n}\nconst switchClasses = generateUtilityClasses('MuiSwitch', ['root', 'edgeStart', 'edgeEnd', 'switchBase', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium', 'checked', 'disabled', 'input', 'thumb', 'track']);\nexport default switchClasses;", "export { default } from './Switch';\nexport { default as switchClasses } from './switchClasses';\nexport * from './switchClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTabUtilityClass(slot) {\n  return generateUtilityClass('MuiTab', slot);\n}\nconst tabClasses = generateUtilityClasses('MuiTab', ['root', 'labelIcon', 'textColorInherit', 'textColorPrimary', 'textColorSecondary', 'selected', 'disabled', 'fullWidth', 'wrapped', 'iconWrapper']);\nexport default tabClasses;", "export { default } from './Tab';\nexport { default as tabClasses } from './tabClasses';\nexport * from './tabClasses';", "import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst TableContext = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  TableContext.displayName = 'TableContext';\n}\nexport default TableContext;", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableUtilityClass(slot) {\n  return generateUtilityClass('MuiTable', slot);\n}\nconst tableClasses = generateUtilityClasses('MuiTable', ['root', 'stickyHeader']);\nexport default tableClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"component\", \"padding\", \"size\", \"stickyHeader\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport TableContext from './TableContext';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableUtilityClass } from './tableClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    stickyHeader\n  } = ownerState;\n  const slots = {\n    root: ['root', stickyHeader && 'stickyHeader']\n  };\n  return composeClasses(slots, getTableUtilityClass, classes);\n};\nconst TableRoot = styled('table', {\n  name: 'MuiTable',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.stickyHeader && styles.stickyHeader];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  display: 'table',\n  width: '100%',\n  borderCollapse: 'collapse',\n  borderSpacing: 0,\n  '& caption': _extends({}, theme.typography.body2, {\n    padding: theme.spacing(2),\n    color: (theme.vars || theme).palette.text.secondary,\n    textAlign: 'left',\n    captionSide: 'bottom'\n  })\n}, ownerState.stickyHeader && {\n  borderCollapse: 'separate'\n}));\nconst defaultComponent = 'table';\nconst Table = /*#__PURE__*/React.forwardRef(function Table(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiTable'\n  });\n  const {\n      className,\n      component = defaultComponent,\n      padding = 'normal',\n      size = 'medium',\n      stickyHeader = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component,\n    padding,\n    size,\n    stickyHeader\n  });\n  const classes = useUtilityClasses(ownerState);\n  const table = React.useMemo(() => ({\n    padding,\n    size,\n    stickyHeader\n  }), [padding, size, stickyHeader]);\n  return /*#__PURE__*/_jsx(TableContext.Provider, {\n    value: table,\n    children: /*#__PURE__*/_jsx(TableRoot, _extends({\n      as: component,\n      role: component === defaultComponent ? null : 'table',\n      ref: ref,\n      className: clsx(classes.root, className),\n      ownerState: ownerState\n    }, other))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Table.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the table, normally `TableHead` and `TableBody`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Allows TableCells to inherit padding of the Table.\n   * @default 'normal'\n   */\n  padding: PropTypes.oneOf(['checkbox', 'none', 'normal']),\n  /**\n   * Allows TableCells to inherit size of the Table.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * Set the header sticky.\n   *\n   * \u26A0\uFE0F It doesn't work with IE11.\n   * @default false\n   */\n  stickyHeader: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Table;", "export { default } from './Table';\nexport { default as tableClasses } from './tableClasses';\nexport * from './tableClasses';", "import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst Tablelvl2Context = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\nexport default Tablelvl2Context;", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableBodyUtilityClass(slot) {\n  return generateUtilityClass('MuiTableBody', slot);\n}\nconst tableBodyClasses = generateUtilityClasses('MuiTableBody', ['root']);\nexport default tableBodyClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableBodyUtilityClass } from './tableBodyClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableBodyUtilityClass, classes);\n};\nconst TableBodyRoot = styled('tbody', {\n  name: 'MuiTableBody',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'table-row-group'\n});\nconst tablelvl2 = {\n  variant: 'body'\n};\nconst defaultComponent = 'tbody';\nconst TableBody = /*#__PURE__*/React.forwardRef(function TableBody(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiTableBody'\n  });\n  const {\n      className,\n      component = defaultComponent\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(Tablelvl2Context.Provider, {\n    value: tablelvl2,\n    children: /*#__PURE__*/_jsx(TableBodyRoot, _extends({\n      className: clsx(classes.root, className),\n      as: component,\n      ref: ref,\n      role: component === defaultComponent ? null : 'rowgroup',\n      ownerState: ownerState\n    }, other))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableBody.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableBody;", "export { default } from './TableBody';\nexport { default as tableBodyClasses } from './tableBodyClasses';\nexport * from './tableBodyClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableCellUtilityClass(slot) {\n  return generateUtilityClass('MuiTableCell', slot);\n}\nconst tableCellClasses = generateUtilityClasses('MuiTableCell', ['root', 'head', 'body', 'footer', 'sizeSmall', 'sizeMedium', 'paddingCheckbox', 'paddingNone', 'alignLeft', 'alignCenter', 'alignRight', 'alignJustify', 'stickyHeader']);\nexport default tableCellClasses;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"align\", \"className\", \"component\", \"padding\", \"scope\", \"size\", \"sortDirection\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { darken, alpha, lighten } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport TableContext from '../Table/TableContext';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport tableCellClasses, { getTableCellUtilityClass } from './tableCellClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    align,\n    padding,\n    size,\n    stickyHeader\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, stickyHeader && 'stickyHeader', align !== 'inherit' && `align${capitalize(align)}`, padding !== 'normal' && `padding${capitalize(padding)}`, `size${capitalize(size)}`]\n  };\n  return composeClasses(slots, getTableCellUtilityClass, classes);\n};\nconst TableCellRoot = styled('td', {\n  name: 'MuiTableCell',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.padding !== 'normal' && styles[`padding${capitalize(ownerState.padding)}`], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.stickyHeader && styles.stickyHeader];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({}, theme.typography.body2, {\n  display: 'table-cell',\n  verticalAlign: 'inherit',\n  // Workaround for a rendering bug with spanned columns in Chrome 62.0.\n  // Removes the alpha (sets it to 1), and lightens or darkens the theme color.\n  borderBottom: theme.vars ? `1px solid ${theme.vars.palette.TableCell.border}` : `1px solid\n    ${theme.palette.mode === 'light' ? lighten(alpha(theme.palette.divider, 1), 0.88) : darken(alpha(theme.palette.divider, 1), 0.68)}`,\n  textAlign: 'left',\n  padding: 16\n}, ownerState.variant === 'head' && {\n  color: (theme.vars || theme).palette.text.primary,\n  lineHeight: theme.typography.pxToRem(24),\n  fontWeight: theme.typography.fontWeightMedium\n}, ownerState.variant === 'body' && {\n  color: (theme.vars || theme).palette.text.primary\n}, ownerState.variant === 'footer' && {\n  color: (theme.vars || theme).palette.text.secondary,\n  lineHeight: theme.typography.pxToRem(21),\n  fontSize: theme.typography.pxToRem(12)\n}, ownerState.size === 'small' && {\n  padding: '6px 16px',\n  [`&.${tableCellClasses.paddingCheckbox}`]: {\n    width: 24,\n    // prevent the checkbox column from growing\n    padding: '0 12px 0 16px',\n    '& > *': {\n      padding: 0\n    }\n  }\n}, ownerState.padding === 'checkbox' && {\n  width: 48,\n  // prevent the checkbox column from growing\n  padding: '0 0 0 4px'\n}, ownerState.padding === 'none' && {\n  padding: 0\n}, ownerState.align === 'left' && {\n  textAlign: 'left'\n}, ownerState.align === 'center' && {\n  textAlign: 'center'\n}, ownerState.align === 'right' && {\n  textAlign: 'right',\n  flexDirection: 'row-reverse'\n}, ownerState.align === 'justify' && {\n  textAlign: 'justify'\n}, ownerState.stickyHeader && {\n  position: 'sticky',\n  top: 0,\n  zIndex: 2,\n  backgroundColor: (theme.vars || theme).palette.background.default\n}));\n\n/**\n * The component renders a `<th>` element when the parent context is a header\n * or otherwise a `<td>` element.\n */\nconst TableCell = /*#__PURE__*/React.forwardRef(function TableCell(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiTableCell'\n  });\n  const {\n      align = 'inherit',\n      className,\n      component: componentProp,\n      padding: paddingProp,\n      scope: scopeProp,\n      size: sizeProp,\n      sortDirection,\n      variant: variantProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const table = React.useContext(TableContext);\n  const tablelvl2 = React.useContext(Tablelvl2Context);\n  const isHeadCell = tablelvl2 && tablelvl2.variant === 'head';\n  let component;\n  if (componentProp) {\n    component = componentProp;\n  } else {\n    component = isHeadCell ? 'th' : 'td';\n  }\n  let scope = scopeProp;\n  // scope is not a valid attribute for <td/> elements.\n  // source: https://html.spec.whatwg.org/multipage/tables.html#the-td-element\n  if (component === 'td') {\n    scope = undefined;\n  } else if (!scope && isHeadCell) {\n    scope = 'col';\n  }\n  const variant = variantProp || tablelvl2 && tablelvl2.variant;\n  const ownerState = _extends({}, props, {\n    align,\n    component,\n    padding: paddingProp || (table && table.padding ? table.padding : 'normal'),\n    size: sizeProp || (table && table.size ? table.size : 'medium'),\n    sortDirection,\n    stickyHeader: variant === 'head' && table && table.stickyHeader,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  let ariaSort = null;\n  if (sortDirection) {\n    ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n  }\n  return /*#__PURE__*/_jsx(TableCellRoot, _extends({\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    \"aria-sort\": ariaSort,\n    scope: scope,\n    ownerState: ownerState\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableCell.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Set the text-align on the table cell content.\n   *\n   * Monetary or generally number fields **should be right aligned** as that allows\n   * you to add them up quickly in your head without having to worry about decimals.\n   * @default 'inherit'\n   */\n  align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Sets the padding applied to the cell.\n   * The prop defaults to the value (`'default'`) inherited from the parent Table component.\n   */\n  padding: PropTypes.oneOf(['checkbox', 'none', 'normal']),\n  /**\n   * Set scope attribute.\n   */\n  scope: PropTypes.string,\n  /**\n   * Specify the size of the cell.\n   * The prop defaults to the value (`'medium'`) inherited from the parent Table component.\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * Set aria-sort direction.\n   */\n  sortDirection: PropTypes.oneOf(['asc', 'desc', false]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Specify the cell type.\n   * The prop defaults to the value inherited from the parent TableHead, TableBody, or TableFooter components.\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body', 'footer', 'head']), PropTypes.string])\n} : void 0;\nexport default TableCell;", "export { default } from './TableCell';\nexport { default as tableCellClasses } from './tableCellClasses';\nexport * from './tableCellClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableContainerUtilityClass(slot) {\n  return generateUtilityClass('MuiTableContainer', slot);\n}\nconst tableContainerClasses = generateUtilityClasses('MuiTableContainer', ['root']);\nexport default tableContainerClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableContainerUtilityClass } from './tableContainerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableContainerUtilityClass, classes);\n};\nconst TableContainerRoot = styled('div', {\n  name: 'MuiTableContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  width: '100%',\n  overflowX: 'auto'\n});\nconst TableContainer = /*#__PURE__*/React.forwardRef(function TableContainer(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiTableContainer'\n  });\n  const {\n      className,\n      component = 'div'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(TableContainerRoot, _extends({\n    ref: ref,\n    as: component,\n    className: clsx(classes.root, className),\n    ownerState: ownerState\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableContainer.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component, normally `Table`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableContainer;", "export { default } from './TableContainer';\nexport { default as tableContainerClasses } from './tableContainerClasses';\nexport * from './tableContainerClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableFooterUtilityClass(slot) {\n  return generateUtilityClass('MuiTableFooter', slot);\n}\nconst tableFooterClasses = generateUtilityClasses('MuiTableFooter', ['root']);\nexport default tableFooterClasses;", "export { default } from './TableFooter';\nexport { default as tableFooterClasses } from './tableFooterClasses';\nexport * from './tableFooterClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableHeadUtilityClass(slot) {\n  return generateUtilityClass('MuiTableHead', slot);\n}\nconst tableHeadClasses = generateUtilityClasses('MuiTableHead', ['root']);\nexport default tableHeadClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableHeadUtilityClass } from './tableHeadClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTableHeadUtilityClass, classes);\n};\nconst TableHeadRoot = styled('thead', {\n  name: 'MuiTableHead',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'table-header-group'\n});\nconst tablelvl2 = {\n  variant: 'head'\n};\nconst defaultComponent = 'thead';\nconst TableHead = /*#__PURE__*/React.forwardRef(function TableHead(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiTableHead'\n  });\n  const {\n      className,\n      component = defaultComponent\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(Tablelvl2Context.Provider, {\n    value: tablelvl2,\n    children: /*#__PURE__*/_jsx(TableHeadRoot, _extends({\n      as: component,\n      className: clsx(classes.root, className),\n      ref: ref,\n      role: component === defaultComponent ? null : 'rowgroup',\n      ownerState: ownerState\n    }, other))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableHead.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableHead;", "export { default } from './TableHead';\nexport { default as tableHeadClasses } from './tableHeadClasses';\nexport * from './tableHeadClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;", "export { default } from './Toolbar';\nexport { default as toolbarClasses } from './toolbarClasses';\nexport * from './toolbarClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTablePaginationUtilityClass(slot) {\n  return generateUtilityClass('MuiTablePagination', slot);\n}\nconst tablePaginationClasses = generateUtilityClasses('MuiTablePagination', ['root', 'toolbar', 'spacer', 'selectLabel', 'selectRoot', 'select', 'selectIcon', 'input', 'menuItem', 'displayedRows', 'actions']);\nexport default tablePaginationClasses;", "export { default } from './TablePagination';\nexport { default as tablePaginationClasses } from './tablePaginationClasses';\nexport * from './tablePaginationClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableRowUtilityClass(slot) {\n  return generateUtilityClass('MuiTableRow', slot);\n}\nconst tableRowClasses = generateUtilityClasses('MuiTableRow', ['root', 'selected', 'hover', 'head', 'footer']);\nexport default tableRowClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\", \"hover\", \"selected\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport tableRowClasses, { getTableRowUtilityClass } from './tableRowClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    selected,\n    hover,\n    head,\n    footer\n  } = ownerState;\n  const slots = {\n    root: ['root', selected && 'selected', hover && 'hover', head && 'head', footer && 'footer']\n  };\n  return composeClasses(slots, getTableRowUtilityClass, classes);\n};\nconst TableRowRoot = styled('tr', {\n  name: 'MuiTableRow',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.head && styles.head, ownerState.footer && styles.footer];\n  }\n})(({\n  theme\n}) => ({\n  color: 'inherit',\n  display: 'table-row',\n  verticalAlign: 'middle',\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0,\n  [`&.${tableRowClasses.hover}:hover`]: {\n    backgroundColor: (theme.vars || theme).palette.action.hover\n  },\n  [`&.${tableRowClasses.selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n    }\n  }\n}));\nconst defaultComponent = 'tr';\n/**\n * Will automatically set dynamic row height\n * based on the material table element parent (head, body, etc).\n */\nconst TableRow = /*#__PURE__*/React.forwardRef(function TableRow(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiTableRow'\n  });\n  const {\n      className,\n      component = defaultComponent,\n      hover = false,\n      selected = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const tablelvl2 = React.useContext(Tablelvl2Context);\n  const ownerState = _extends({}, props, {\n    component,\n    hover,\n    selected,\n    head: tablelvl2 && tablelvl2.variant === 'head',\n    footer: tablelvl2 && tablelvl2.variant === 'footer'\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(TableRowRoot, _extends({\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    role: component === defaultComponent ? null : 'row',\n    ownerState: ownerState\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableRow.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Should be valid <tr> children such as `TableCell`.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the table row will shade on hover.\n   * @default false\n   */\n  hover: PropTypes.bool,\n  /**\n   * If `true`, the table row will have the selected shading.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableRow;", "export { default } from './TableRow';\nexport { default as tableRowClasses } from './tableRowClasses';\nexport * from './tableRowClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableSortLabelUtilityClass(slot) {\n  return generateUtilityClass('MuiTableSortLabel', slot);\n}\nconst tableSortLabelClasses = generateUtilityClasses('MuiTableSortLabel', ['root', 'active', 'icon', 'iconDirectionDesc', 'iconDirectionAsc']);\nexport default tableSortLabelClasses;", "export { default } from './TableSortLabel';\nexport { default as tableSortLabelClasses } from './tableSortLabelClasses';\nexport * from './tableSortLabelClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTabScrollButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiTabScrollButton', slot);\n}\nconst tabScrollButtonClasses = generateUtilityClasses('MuiTabScrollButton', ['root', 'vertical', 'horizontal', 'disabled']);\nexport default tabScrollButtonClasses;", "export { default } from './TabScrollButton';\nexport { default as tabScrollButtonClasses } from './tabScrollButtonClasses';\nexport * from './tabScrollButtonClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTabsUtilityClass(slot) {\n  return generateUtilityClass('MuiTabs', slot);\n}\nconst tabsClasses = generateUtilityClasses('MuiTabs', ['root', 'vertical', 'flexContainer', 'flexContainerVertical', 'centered', 'scroller', 'fixed', 'scrollableX', 'scrollableY', 'hideScrollbar', 'scrollButtons', 'scrollButtonsHideMobile', 'indicator']);\nexport default tabsClasses;", "export { default } from './Tabs';\nexport { default as tabsClasses } from './tabsClasses';\nexport * from './tabsClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTextFieldUtilityClass(slot) {\n  return generateUtilityClass('MuiTextField', slot);\n}\nconst textFieldClasses = generateUtilityClasses('MuiTextField', ['root']);\nexport default textFieldClasses;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"autoComplete\", \"autoFocus\", \"children\", \"className\", \"color\", \"defaultValue\", \"disabled\", \"error\", \"FormHelperTextProps\", \"fullWidth\", \"helperText\", \"id\", \"InputLabelProps\", \"inputProps\", \"InputProps\", \"inputRef\", \"label\", \"maxRows\", \"minRows\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"placeholder\", \"required\", \"rows\", \"select\", \"SelectProps\", \"type\", \"value\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { refType, unstable_useId as useId } from '@mui/utils';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Input from '../Input';\nimport FilledInput from '../FilledInput';\nimport OutlinedInput from '../OutlinedInput';\nimport InputLabel from '../InputLabel';\nimport FormControl from '../FormControl';\nimport FormHelperText from '../FormHelperText';\nimport Select from '../Select';\nimport { getTextFieldUtilityClass } from './textFieldClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst variantComponent = {\n  standard: Input,\n  filled: FilledInput,\n  outlined: OutlinedInput\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTextFieldUtilityClass, classes);\n};\nconst TextFieldRoot = styled(FormControl, {\n  name: 'MuiTextField',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n * The `TextField` is a convenience wrapper for the most common cases (80%).\n * It cannot be all things to all people, otherwise the API would grow out of control.\n *\n * ## Advanced Configuration\n *\n * It's important to understand that the text field is a simple abstraction\n * on top of the following components:\n *\n * - [FormControl](/material-ui/api/form-control/)\n * - [InputLabel](/material-ui/api/input-label/)\n * - [FilledInput](/material-ui/api/filled-input/)\n * - [OutlinedInput](/material-ui/api/outlined-input/)\n * - [Input](/material-ui/api/input/)\n * - [FormHelperText](/material-ui/api/form-helper-text/)\n *\n * If you wish to alter the props applied to the `input` element, you can do so as follows:\n *\n * ```jsx\n * const inputProps = {\n *   step: 300,\n * };\n *\n * return <TextField id=\"time\" type=\"time\" inputProps={inputProps} />;\n * ```\n *\n * For advanced cases, please look at the source of TextField by clicking on the\n * \"Edit this page\" button above. Consider either:\n *\n * - using the upper case props for passing values directly to the components\n * - using the underlying components directly as shown in the demos\n */\nconst TextField = /*#__PURE__*/React.forwardRef(function TextField(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiTextField'\n  });\n  const {\n      autoComplete,\n      autoFocus = false,\n      children,\n      className,\n      color = 'primary',\n      defaultValue,\n      disabled = false,\n      error = false,\n      FormHelperTextProps,\n      fullWidth = false,\n      helperText,\n      id: idOverride,\n      InputLabelProps,\n      inputProps,\n      InputProps,\n      inputRef,\n      label,\n      maxRows,\n      minRows,\n      multiline = false,\n      name,\n      onBlur,\n      onChange,\n      onFocus,\n      placeholder,\n      required = false,\n      rows,\n      select = false,\n      SelectProps,\n      type,\n      value,\n      variant = 'outlined'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    autoFocus,\n    color,\n    disabled,\n    error,\n    fullWidth,\n    multiline,\n    required,\n    select,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  if (process.env.NODE_ENV !== 'production') {\n    if (select && !children) {\n      console.error('MUI: `children` must be passed when using the `TextField` component with `select`.');\n    }\n  }\n  const InputMore = {};\n  if (variant === 'outlined') {\n    if (InputLabelProps && typeof InputLabelProps.shrink !== 'undefined') {\n      InputMore.notched = InputLabelProps.shrink;\n    }\n    InputMore.label = label;\n  }\n  if (select) {\n    // unset defaults from textbox inputs\n    if (!SelectProps || !SelectProps.native) {\n      InputMore.id = undefined;\n    }\n    InputMore['aria-describedby'] = undefined;\n  }\n  const id = useId(idOverride);\n  const helperTextId = helperText && id ? `${id}-helper-text` : undefined;\n  const inputLabelId = label && id ? `${id}-label` : undefined;\n  const InputComponent = variantComponent[variant];\n  const InputElement = /*#__PURE__*/_jsx(InputComponent, _extends({\n    \"aria-describedby\": helperTextId,\n    autoComplete: autoComplete,\n    autoFocus: autoFocus,\n    defaultValue: defaultValue,\n    fullWidth: fullWidth,\n    multiline: multiline,\n    name: name,\n    rows: rows,\n    maxRows: maxRows,\n    minRows: minRows,\n    type: type,\n    value: value,\n    id: id,\n    inputRef: inputRef,\n    onBlur: onBlur,\n    onChange: onChange,\n    onFocus: onFocus,\n    placeholder: placeholder,\n    inputProps: inputProps\n  }, InputMore, InputProps));\n  return /*#__PURE__*/_jsxs(TextFieldRoot, _extends({\n    className: clsx(classes.root, className),\n    disabled: disabled,\n    error: error,\n    fullWidth: fullWidth,\n    ref: ref,\n    required: required,\n    color: color,\n    variant: variant,\n    ownerState: ownerState\n  }, other, {\n    children: [label != null && label !== '' && /*#__PURE__*/_jsx(InputLabel, _extends({\n      htmlFor: id,\n      id: inputLabelId\n    }, InputLabelProps, {\n      children: label\n    })), select ? /*#__PURE__*/_jsx(Select, _extends({\n      \"aria-describedby\": helperTextId,\n      id: id,\n      labelId: inputLabelId,\n      value: value,\n      input: InputElement\n    }, SelectProps, {\n      children: children\n    })) : InputElement, helperText && /*#__PURE__*/_jsx(FormHelperText, _extends({\n      id: helperTextId\n    }, FormHelperTextProps, {\n      children: helperText\n    }))]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TextField.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * Props applied to the [`FormHelperText`](/material-ui/api/form-helper-text/) element.\n   */\n  FormHelperTextProps: PropTypes.object,\n  /**\n   * If `true`, the input will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The helper text content.\n   */\n  helperText: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   * Use this prop to make `label` and `helperText` accessible for screen readers.\n   */\n  id: PropTypes.string,\n  /**\n   * Props applied to the [`InputLabel`](/material-ui/api/input-label/) element.\n   * Pointer events like `onClick` are enabled if and only if `shrink` is `true`.\n   */\n  InputLabelProps: PropTypes.object,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Props applied to the Input element.\n   * It will be a [`FilledInput`](/material-ui/api/filled-input/),\n   * [`OutlinedInput`](/material-ui/api/outlined-input/) or [`Input`](/material-ui/api/input/)\n   * component depending on the `variant` prop value.\n   */\n  InputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label content.\n   */\n  label: PropTypes.node,\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   * @default 'none'\n   */\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a `textarea` element is rendered instead of an input.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * If `true`, the label is displayed as required and the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Render a [`Select`](/material-ui/api/select/) element while passing the Input element to `Select` as `input` parameter.\n   * If this option is set you must pass the options of the select as children.\n   * @default false\n   */\n  select: PropTypes.bool,\n  /**\n   * Props applied to the [`Select`](/material-ui/api/select/) element.\n   */\n  SelectProps: PropTypes.object,\n  /**\n   * The size of the component.\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   */\n  type: PropTypes /* @typescript-to-proptypes-ignore */.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any,\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default TextField;", "export { default } from './TextField';\nexport { default as textFieldClasses } from './textFieldClasses';\nexport * from './textFieldClasses';", "export { default } from '@mui/base/TextareaAutosize';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getToggleButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiToggleButton', slot);\n}\nconst toggleButtonClasses = generateUtilityClasses('MuiToggleButton', ['root', 'disabled', 'selected', 'standard', 'primary', 'secondary', 'sizeSmall', 'sizeMedium', 'sizeLarge']);\nexport default toggleButtonClasses;", "export { default } from './ToggleButton';\nexport { default as toggleButtonClasses } from './toggleButtonClasses';\nexport * from './toggleButtonClasses';", "import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getToggleButtonGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiToggleButtonGroup', slot);\n}\nconst toggleButtonGroupClasses = generateUtilityClasses('MuiToggleButtonGroup', ['root', 'selected', 'vertical', 'disabled', 'grouped', 'groupedHorizontal', 'groupedVertical']);\nexport default toggleButtonGroupClasses;", "export { default } from './ToggleButtonGroup';\nexport { default as toggleButtonGroupClasses } from './toggleButtonGroupClasses';\nexport * from './toggleButtonGroupClasses';", "export { default } from './useScrollTrigger';", "/**\n * @mui/material v5.11.10\n *\n * @license MIT\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/* eslint-disable import/export */\nimport * as colors from './colors';\nexport { colors };\nexport * from './styles';\nexport * from './utils';\nexport { default as Accordion } from './Accordion';\nexport * from './Accordion';\nexport { default as AccordionActions } from './AccordionActions';\nexport * from './AccordionActions';\nexport { default as AccordionDetails } from './AccordionDetails';\nexport * from './AccordionDetails';\nexport { default as AccordionSummary } from './AccordionSummary';\nexport * from './AccordionSummary';\nexport { default as Alert } from './Alert';\nexport * from './Alert';\nexport { default as AlertTitle } from './AlertTitle';\nexport * from './AlertTitle';\nexport { default as AppBar } from './AppBar';\nexport * from './AppBar';\nexport { default as Autocomplete } from './Autocomplete';\nexport * from './Autocomplete';\nexport { default as Avatar } from './Avatar';\nexport * from './Avatar';\nexport { default as AvatarGroup } from './AvatarGroup';\nexport * from './AvatarGroup';\nexport { default as Backdrop } from './Backdrop';\nexport * from './Backdrop';\nexport { default as Badge } from './Badge';\nexport * from './Badge';\nexport { default as BottomNavigation } from './BottomNavigation';\nexport * from './BottomNavigation';\nexport { default as BottomNavigationAction } from './BottomNavigationAction';\nexport * from './BottomNavigationAction';\nexport { default as Box } from './Box';\nexport * from './Box';\nexport { default as Breadcrumbs } from './Breadcrumbs';\nexport * from './Breadcrumbs';\nexport { default as Button } from './Button';\nexport * from './Button';\nexport { default as ButtonBase } from './ButtonBase';\nexport * from './ButtonBase';\nexport { default as ButtonGroup } from './ButtonGroup';\nexport * from './ButtonGroup';\nexport { default as Card } from './Card';\nexport * from './Card';\nexport { default as CardActionArea } from './CardActionArea';\nexport * from './CardActionArea';\nexport { default as CardActions } from './CardActions';\nexport * from './CardActions';\nexport { default as CardContent } from './CardContent';\nexport * from './CardContent';\nexport { default as CardHeader } from './CardHeader';\nexport * from './CardHeader';\nexport { default as CardMedia } from './CardMedia';\nexport * from './CardMedia';\nexport { default as Checkbox } from './Checkbox';\nexport * from './Checkbox';\nexport { default as Chip } from './Chip';\nexport * from './Chip';\nexport { default as CircularProgress } from './CircularProgress';\nexport * from './CircularProgress';\nexport { default as ClickAwayListener } from './ClickAwayListener';\nexport * from './ClickAwayListener';\nexport { default as Collapse } from './Collapse';\nexport * from './Collapse';\nexport { default as Container } from './Container';\nexport * from './Container';\nexport { default as CssBaseline } from './CssBaseline';\nexport * from './CssBaseline';\nexport { default as darkScrollbar } from './darkScrollbar';\nexport * from './darkScrollbar';\nexport { default as Dialog } from './Dialog';\nexport * from './Dialog';\nexport { default as DialogActions } from './DialogActions';\nexport * from './DialogActions';\nexport { default as DialogContent } from './DialogContent';\nexport * from './DialogContent';\nexport { default as DialogContentText } from './DialogContentText';\nexport * from './DialogContentText';\nexport { default as DialogTitle } from './DialogTitle';\nexport * from './DialogTitle';\nexport { default as Divider } from './Divider';\nexport * from './Divider';\nexport { default as Drawer } from './Drawer';\nexport * from './Drawer';\nexport { default as Fab } from './Fab';\nexport * from './Fab';\nexport { default as Fade } from './Fade';\nexport * from './Fade';\nexport { default as FilledInput } from './FilledInput';\nexport * from './FilledInput';\nexport { default as FormControl } from './FormControl';\nexport * from './FormControl';\nexport { default as FormControlLabel } from './FormControlLabel';\nexport * from './FormControlLabel';\nexport { default as FormGroup } from './FormGroup';\nexport * from './FormGroup';\nexport { default as FormHelperText } from './FormHelperText';\nexport * from './FormHelperText';\nexport { default as FormLabel } from './FormLabel';\nexport * from './FormLabel';\nexport { default as Grid } from './Grid';\nexport * from './Grid';\nexport { default as Unstable_Grid2 } from './Unstable_Grid2';\nexport * from './Unstable_Grid2';\nexport { default as Grow } from './Grow';\nexport * from './Grow';\nexport { default as Hidden } from './Hidden';\nexport * from './Hidden';\nexport { default as Icon } from './Icon';\nexport * from './Icon';\nexport { default as IconButton } from './IconButton';\nexport * from './IconButton';\nexport { default as ImageList } from './ImageList';\nexport * from './ImageList';\nexport { default as ImageListItem } from './ImageListItem';\nexport * from './ImageListItem';\nexport { default as ImageListItemBar } from './ImageListItemBar';\nexport * from './ImageListItemBar';\nexport { default as Input } from './Input';\nexport * from './Input';\nexport { default as InputAdornment } from './InputAdornment';\nexport * from './InputAdornment';\nexport { default as InputBase } from './InputBase';\nexport * from './InputBase';\nexport { default as InputLabel } from './InputLabel';\nexport * from './InputLabel';\nexport { default as LinearProgress } from './LinearProgress';\nexport * from './LinearProgress';\nexport { default as Link } from './Link';\nexport * from './Link';\nexport { default as List } from './List';\nexport * from './List';\nexport { default as ListItem } from './ListItem';\nexport * from './ListItem';\nexport { default as ListItemAvatar } from './ListItemAvatar';\nexport * from './ListItemAvatar';\nexport { default as ListItemButton } from './ListItemButton';\nexport * from './ListItemButton';\nexport { default as ListItemIcon } from './ListItemIcon';\nexport * from './ListItemIcon';\nexport { default as ListItemSecondaryAction } from './ListItemSecondaryAction';\nexport * from './ListItemSecondaryAction';\nexport { default as ListItemText } from './ListItemText';\nexport * from './ListItemText';\nexport { default as ListSubheader } from './ListSubheader';\nexport * from './ListSubheader';\nexport { default as Menu } from './Menu';\nexport * from './Menu';\nexport { default as MenuItem } from './MenuItem';\nexport * from './MenuItem';\nexport { default as MenuList } from './MenuList';\nexport * from './MenuList';\nexport { default as MobileStepper } from './MobileStepper';\nexport * from './MobileStepper';\nexport { default as Modal } from './Modal';\nexport * from './Modal';\nexport { default as NativeSelect } from './NativeSelect';\nexport * from './NativeSelect';\nexport { default as NoSsr } from './NoSsr';\nexport * from './NoSsr';\nexport { default as OutlinedInput } from './OutlinedInput';\nexport * from './OutlinedInput';\nexport { default as Pagination } from './Pagination';\nexport * from './Pagination';\nexport { default as PaginationItem } from './PaginationItem';\nexport * from './PaginationItem';\nexport { default as Paper } from './Paper';\nexport * from './Paper';\nexport { default as Popover } from './Popover';\nexport * from './Popover';\nexport { default as Popper } from './Popper';\nexport * from './Popper';\nexport { default as Portal } from './Portal';\nexport * from './Portal';\nexport { default as Radio } from './Radio';\nexport * from './Radio';\nexport { default as RadioGroup } from './RadioGroup';\nexport * from './RadioGroup';\nexport { default as Rating } from './Rating';\nexport * from './Rating';\nexport { default as ScopedCssBaseline } from './ScopedCssBaseline';\nexport * from './ScopedCssBaseline';\nexport { default as Select } from './Select';\nexport * from './Select';\nexport { default as Skeleton } from './Skeleton';\nexport * from './Skeleton';\nexport { default as Slide } from './Slide';\nexport * from './Slide';\nexport { default as Slider } from './Slider';\nexport * from './Slider';\nexport { default as Snackbar } from './Snackbar';\nexport * from './Snackbar';\nexport { default as SnackbarContent } from './SnackbarContent';\nexport * from './SnackbarContent';\nexport { default as SpeedDial } from './SpeedDial';\nexport * from './SpeedDial';\nexport { default as SpeedDialAction } from './SpeedDialAction';\nexport * from './SpeedDialAction';\nexport { default as SpeedDialIcon } from './SpeedDialIcon';\nexport * from './SpeedDialIcon';\nexport { default as Stack } from './Stack';\nexport * from './Stack';\nexport { default as Step } from './Step';\nexport * from './Step';\nexport { default as StepButton } from './StepButton';\nexport * from './StepButton';\nexport { default as StepConnector } from './StepConnector';\nexport * from './StepConnector';\nexport { default as StepContent } from './StepContent';\nexport * from './StepContent';\nexport { default as StepIcon } from './StepIcon';\nexport * from './StepIcon';\nexport { default as StepLabel } from './StepLabel';\nexport * from './StepLabel';\nexport { default as Stepper } from './Stepper';\nexport * from './Stepper';\nexport { default as SvgIcon } from './SvgIcon';\nexport * from './SvgIcon';\nexport { default as SwipeableDrawer } from './SwipeableDrawer';\nexport * from './SwipeableDrawer';\nexport { default as Switch } from './Switch';\nexport * from './Switch';\nexport { default as Tab } from './Tab';\nexport * from './Tab';\nexport { default as Table } from './Table';\nexport * from './Table';\nexport { default as TableBody } from './TableBody';\nexport * from './TableBody';\nexport { default as TableCell } from './TableCell';\nexport * from './TableCell';\nexport { default as TableContainer } from './TableContainer';\nexport * from './TableContainer';\nexport { default as TableFooter } from './TableFooter';\nexport * from './TableFooter';\nexport { default as TableHead } from './TableHead';\nexport * from './TableHead';\nexport { default as TablePagination } from './TablePagination';\nexport * from './TablePagination';\nexport { default as TableRow } from './TableRow';\nexport * from './TableRow';\nexport { default as TableSortLabel } from './TableSortLabel';\nexport * from './TableSortLabel';\nexport { default as Tabs } from './Tabs';\nexport * from './Tabs';\nexport { default as TabScrollButton } from './TabScrollButton';\nexport * from './TabScrollButton';\nexport { default as TextField } from './TextField';\nexport * from './TextField';\nexport { default as TextareaAutosize } from './TextareaAutosize';\nexport * from './TextareaAutosize';\nexport { default as ToggleButton } from './ToggleButton';\nexport * from './ToggleButton';\nexport { default as ToggleButtonGroup } from './ToggleButtonGroup';\nexport * from './ToggleButtonGroup';\nexport { default as Toolbar } from './Toolbar';\nexport * from './Toolbar';\nexport { default as Tooltip } from './Tooltip';\nexport * from './Tooltip';\nexport { default as Typography } from './Typography';\nexport * from './Typography';\nexport { default as useMediaQuery } from './useMediaQuery';\nexport * from './useMediaQuery';\nexport { default as usePagination } from './usePagination';\nexport * from './usePagination';\nexport { default as useScrollTrigger } from './useScrollTrigger';\nexport * from './useScrollTrigger';\nexport { default as Zoom } from './Zoom';\nexport * from './Zoom';\n\n// createFilterOptions is exported from Autocomplete\nexport { default as useAutocomplete } from './useAutocomplete';\nexport { default as GlobalStyles } from './GlobalStyles';\nexport * from './GlobalStyles';\nexport { StyledEngineProvider } from './styles';\nexport { default as unstable_composeClasses } from '@mui/base/composeClasses';\nexport { default as generateUtilityClass } from './generateUtilityClass';\nexport * from './generateUtilityClass';\nexport { default as generateUtilityClasses } from './generateUtilityClasses';\nexport { default as Unstable_TrapFocus } from './Unstable_TrapFocus';", "{\"trigram\":{\"albanian\":{\"t\\u00eb \":\"0\",\" t\\u00eb\":\"1\",\"n\\u00eb \":\"2\",\"p\\u00ebr\":\"3\",\" p\\u00eb\":\"4\",\" e \":\"5\",\"sht\":\"6\",\" n\\u00eb\":\"7\",\" sh\":\"8\",\"se \":\"9\",\"et \":\"10\",\"\\u00eb s\":\"11\",\"\\u00eb t\":\"12\",\" se\":\"13\",\"he \":\"14\",\"j\\u00eb \":\"15\",\"\\u00ebr \":\"16\",\"dhe\":\"17\",\" pa\":\"18\",\"\\u00eb n\":\"19\",\"\\u00eb p\":\"20\",\" q\\u00eb\":\"21\",\" dh\":\"22\",\"nj\\u00eb\":\"23\",\"\\u00eb m\":\"24\",\" nj\":\"25\",\"\\u00ebsh\":\"26\",\"in \":\"27\",\" me\":\"28\",\"q\\u00eb \":\"29\",\" po\":\"30\",\"e n\":\"31\",\"e t\":\"32\",\"ish\":\"33\",\"m\\u00eb \":\"34\",\"s\\u00eb \":\"35\",\"me \":\"36\",\"ht\\u00eb\":\"37\",\" ka\":\"38\",\" si\":\"39\",\"e k\":\"40\",\"e p\":\"41\",\" i \":\"42\",\"an\\u00eb\":\"43\",\"ar \":\"44\",\" nu\":\"45\",\"und\":\"46\",\"ve \":\"47\",\" \\u00ebs\":\"48\",\"e s\":\"49\",\" m\\u00eb\":\"50\",\"nuk\":\"51\",\"par\":\"52\",\"uar\":\"53\",\"uk \":\"54\",\"jo \":\"55\",\"r\\u00eb \":\"56\",\"ta \":\"57\",\"\\u00eb f\":\"58\",\"en \":\"59\",\"it \":\"60\",\"min\":\"61\",\"het\":\"62\",\"n e\":\"63\",\"ri \":\"64\",\"shq\":\"65\",\"\\u00eb d\":\"66\",\" do\":\"67\",\" nd\":\"68\",\"sh \":\"69\",\"\\u00ebn \":\"70\",\"at\\u00eb\":\"71\",\"hqi\":\"72\",\"ist\":\"73\",\"\\u00eb q\":\"74\",\" gj\":\"75\",\" ng\":\"76\",\" th\":\"77\",\"a n\":\"78\",\"do \":\"79\",\"end\":\"80\",\"imi\":\"81\",\"ndi\":\"82\",\"r t\":\"83\",\"rat\":\"84\",\"\\u00eb b\":\"85\",\"\\u00ebri\":\"86\",\" mu\":\"87\",\"art\":\"88\",\"ash\":\"89\",\"qip\":\"90\",\" ko\":\"91\",\"e m\":\"92\",\"edh\":\"93\",\"eri\":\"94\",\"je \":\"95\",\"ka \":\"96\",\"nga\":\"97\",\"si \":\"98\",\"te \":\"99\",\"\\u00eb k\":\"100\",\"\\u00ebsi\":\"101\",\" ma\":\"102\",\" ti\":\"103\",\"eve\":\"104\",\"hje\":\"105\",\"ira\":\"106\",\"mun\":\"107\",\"on \":\"108\",\"po \":\"109\",\"re \":\"110\",\" pr\":\"111\",\"im \":\"112\",\"lit\":\"113\",\"o t\":\"114\",\"ur \":\"115\",\"\\u00eb e\":\"116\",\"\\u00eb v\":\"117\",\"\\u00ebt \":\"118\",\" ku\":\"119\",\" s\\u00eb\":\"120\",\"e d\":\"121\",\"es \":\"122\",\"ga \":\"123\",\"iti\":\"124\",\"jet\":\"125\",\"nd\\u00eb\":\"126\",\"oli\":\"127\",\"shi\":\"128\",\"tje\":\"129\",\" b\\u00eb\":\"130\",\" z \":\"131\",\"gje\":\"132\",\"kan\":\"133\",\"shk\":\"134\",\"\\u00ebnd\":\"135\",\"\\u00ebs \":\"136\",\" de\":\"137\",\" kj\":\"138\",\" ru\":\"139\",\" vi\":\"140\",\"ara\":\"141\",\"gov\":\"142\",\"kjo\":\"143\",\"or \":\"144\",\"r p\":\"145\",\"rto\":\"146\",\"rug\":\"147\",\"tet\":\"148\",\"ugo\":\"149\",\"ali\":\"150\",\"arr\":\"151\",\"at \":\"152\",\"d t\":\"153\",\"ht \":\"154\",\"i p\":\"155\",\"ip\\u00eb\":\"156\",\"izi\":\"157\",\"jn\\u00eb\":\"158\",\"n n\":\"159\",\"ohe\":\"160\",\"shu\":\"161\",\"sh\\u00eb\":\"162\",\"t e\":\"163\",\"tik\":\"164\",\"a e\":\"165\",\"ar\\u00eb\":\"166\",\"et\\u00eb\":\"167\",\"hum\":\"168\",\"nd \":\"169\",\"ndr\":\"170\",\"osh\":\"171\",\"ova\":\"172\",\"rim\":\"173\",\"tos\":\"174\",\"va \":\"175\",\" fa\":\"176\",\" fi\":\"177\",\"a s\":\"178\",\"hen\":\"179\",\"i n\":\"180\",\"mar\":\"181\",\"ndo\":\"182\",\"por\":\"183\",\"ris\":\"184\",\"sa \":\"185\",\"sis\":\"186\",\"t\\u00ebs\":\"187\",\"um\\u00eb\":\"188\",\"viz\":\"189\",\"zit\":\"190\",\" di\":\"191\",\" mb\":\"192\",\"aj \":\"193\",\"ana\":\"194\",\"ata\":\"195\",\"d\\u00ebr\":\"196\",\"e a\":\"197\",\"esh\":\"198\",\"ime\":\"199\",\"jes\":\"200\",\"lar\":\"201\",\"n s\":\"202\",\"nte\":\"203\",\"pol\":\"204\",\"r n\":\"205\",\"ran\":\"206\",\"res\":\"207\",\"rr\\u00eb\":\"208\",\"tar\":\"209\",\"\\u00eb a\":\"210\",\"\\u00eb i\":\"211\",\" at\":\"212\",\" jo\":\"213\",\" k\\u00eb\":\"214\",\" re\":\"215\",\"a k\":\"216\",\"ai \":\"217\",\"akt\":\"218\",\"h\\u00eb \":\"219\",\"h\\u00ebn\":\"220\",\"i i\":\"221\",\"i m\":\"222\",\"ia \":\"223\",\"men\":\"224\",\"nis\":\"225\",\"shm\":\"226\",\"str\":\"227\",\"t k\":\"228\",\"t n\":\"229\",\"t s\":\"230\",\"\\u00eb g\":\"231\",\"\\u00ebrk\":\"232\",\"\\u00ebve\":\"233\",\" ai\":\"234\",\" ci\":\"235\",\" ed\":\"236\",\" ja\":\"237\",\" kr\":\"238\",\" qe\":\"239\",\" ta\":\"240\",\" ve\":\"241\",\"a p\":\"242\",\"cil\":\"243\",\"el \":\"244\",\"er\\u00eb\":\"245\",\"gji\":\"246\",\"hte\":\"247\",\"i t\":\"248\",\"jen\":\"249\",\"jit\":\"250\",\"k d\":\"251\",\"m\\u00ebn\":\"252\",\"n t\":\"253\",\"nyr\":\"254\",\"ori\":\"255\",\"pas\":\"256\",\"ra \":\"257\",\"rie\":\"258\",\"r\\u00ebs\":\"259\",\"tor\":\"260\",\"uaj\":\"261\",\"yre\":\"262\",\"\\u00ebm \":\"263\",\"\\u00ebny\":\"264\",\" ar\":\"265\",\" du\":\"266\",\" ga\":\"267\",\" je\":\"268\",\"d\\u00ebs\":\"269\",\"e e\":\"270\",\"e z\":\"271\",\"ha \":\"272\",\"hme\":\"273\",\"ika\":\"274\",\"ini\":\"275\",\"ite\":\"276\",\"ith\":\"277\",\"koh\":\"278\",\"kra\":\"279\",\"ku \":\"280\",\"lim\":\"281\",\"lis\":\"282\",\"q\\u00ebn\":\"283\",\"r\\u00ebn\":\"284\",\"s s\":\"285\",\"t d\":\"286\",\"t t\":\"287\",\"tir\":\"288\",\"t\\u00ebn\":\"289\",\"ver\":\"290\",\"\\u00eb j\":\"291\",\" ba\":\"292\",\" in\":\"293\",\" tr\":\"294\",\" zg\":\"295\",\"a a\":\"296\",\"a m\":\"297\",\"a t\":\"298\",\"abr\":\"299\"},\"arabic\":{\" \\u0627\\u0644\":\"0\",\"\\u0627\\u0644\\u0639\":\"1\",\"\\u0644\\u0639\\u0631\":\"2\",\"\\u0639\\u0631\\u0627\":\"3\",\"\\u0631\\u0627\\u0642\":\"4\",\" \\u0641\\u064a\":\"5\",\"\\u0641\\u064a \":\"6\",\"\\u064a\\u0646 \":\"7\",\"\\u064a\\u0629 \":\"8\",\"\\u0646 \\u0627\":\"9\",\"\\u0627\\u0644\\u0645\":\"10\",\"\\u0627\\u062a \":\"11\",\"\\u0645\\u0646 \":\"12\",\"\\u064a \\u0627\":\"13\",\" \\u0645\\u0646\":\"14\",\"\\u0627\\u0644\\u0623\":\"15\",\"\\u0629 \\u0627\":\"16\",\"\\u0627\\u0642 \":\"17\",\" \\u0648\\u0627\":\"18\",\"\\u0627\\u0621 \":\"19\",\"\\u0627\\u0644\\u0625\":\"20\",\" \\u0623\\u0646\":\"21\",\"\\u0648\\u0627\\u0644\":\"22\",\"\\u0645\\u0627 \":\"23\",\" \\u0639\\u0644\":\"24\",\"\\u0644\\u0649 \":\"25\",\"\\u062a \\u0627\":\"26\",\"\\u0648\\u0646 \":\"27\",\"\\u0647\\u0645 \":\"28\",\"\\u0627\\u0642\\u064a\":\"29\",\"\\u0627\\u0645 \":\"30\",\"\\u0644 \\u0627\":\"31\",\"\\u0623\\u0646 \":\"32\",\"\\u0645 \\u0627\":\"33\",\"\\u0627\\u0644\\u062a\":\"34\",\"\\u0644\\u0627 \":\"35\",\"\\u0627\\u0644\\u0627\":\"36\",\"\\u0627\\u0646 \":\"37\",\"\\u0647\\u0627 \":\"38\",\"\\u0627\\u0644 \":\"39\",\"\\u0629 \\u0648\":\"40\",\"\\u0627 \\u0627\":\"41\",\"\\u0631\\u0647\\u0627\":\"42\",\"\\u0644\\u0627\\u0645\":\"43\",\"\\u064a\\u064a\\u0646\":\"44\",\" \\u0648\\u0644\":\"45\",\"\\u0644\\u0623\\u0645\":\"46\",\"\\u0646\\u0627 \":\"47\",\"\\u0639\\u0644\\u0649\":\"48\",\"\\u0646 \\u064a\":\"49\",\"\\u0627\\u0644\\u0628\":\"50\",\"\\u0627\\u062f \":\"51\",\"\\u0627\\u0644\\u0642\":\"52\",\"\\u062f \\u0627\":\"53\",\"\\u0630\\u0627 \":\"54\",\"\\u0647 \\u0627\":\"55\",\" \\u0628\\u0627\":\"56\",\"\\u0627\\u0644\\u062f\":\"57\",\"\\u0628 \\u0627\":\"58\",\"\\u0645\\u0631\\u064a\":\"59\",\"\\u0644\\u0645 \":\"60\",\" \\u0625\\u0646\":\"61\",\" \\u0644\\u0644\":\"62\",\"\\u0633\\u0644\\u0627\":\"63\",\"\\u0623\\u0645\\u0631\":\"64\",\"\\u0631\\u064a\\u0643\":\"65\",\"\\u0645\\u0629 \":\"66\",\"\\u0649 \\u0627\":\"67\",\"\\u0627 \\u064a\":\"68\",\" \\u0639\\u0646\":\"69\",\" \\u0647\\u0630\":\"70\",\"\\u0621 \\u0627\":\"71\",\"\\u0631 \\u0627\":\"72\",\"\\u0643\\u0627\\u0646\":\"73\",\"\\u0642\\u062a\\u0644\":\"74\",\"\\u0625\\u0633\\u0644\":\"75\",\"\\u0627\\u0644\\u062d\":\"76\",\"\\u0648\\u0627 \":\"77\",\" \\u0625\\u0644\":\"78\",\"\\u0627 \\u0623\":\"79\",\"\\u0628\\u0627\\u0644\":\"80\",\"\\u0646 \\u0645\":\"81\",\"\\u0627\\u0644\\u0633\":\"82\",\"\\u0631\\u0629 \":\"83\",\"\\u0644\\u0625\\u0633\":\"84\",\"\\u0646 \\u0648\":\"85\",\"\\u0647\\u0627\\u0628\":\"86\",\"\\u064a \\u0648\":\"87\",\"\\u064a\\u0631 \":\"88\",\" \\u0643\\u0627\":\"89\",\"\\u0644\\u0629 \":\"90\",\"\\u064a\\u0627\\u062a\":\"91\",\" \\u0644\\u0627\":\"92\",\"\\u0627\\u0646\\u062a\":\"93\",\"\\u0646 \\u0623\":\"94\",\"\\u064a\\u0643\\u064a\":\"95\",\"\\u0627\\u0644\\u0631\":\"96\",\"\\u0627\\u0644\\u0648\":\"97\",\"\\u0629 \\u0641\":\"98\",\"\\u062f\\u0629 \":\"99\",\"\\u0627\\u0644\\u062c\":\"100\",\"\\u0642\\u064a \":\"101\",\"\\u0648\\u064a \":\"102\",\"\\u0627\\u0644\\u0630\":\"103\",\"\\u0627\\u0644\\u0634\":\"104\",\"\\u0627\\u0645\\u064a\":\"105\",\"\\u0627\\u0646\\u064a\":\"106\",\"\\u0630\\u0647 \":\"107\",\"\\u0639\\u0646 \":\"108\",\"\\u0644\\u0645\\u0627\":\"109\",\"\\u0647\\u0630\\u0647\":\"110\",\"\\u0648\\u0644 \":\"111\",\"\\u0627\\u0641 \":\"112\",\"\\u0627\\u0648\\u064a\":\"113\",\"\\u0628\\u0631\\u064a\":\"114\",\"\\u0629 \\u0644\":\"115\",\" \\u0623\\u0645\":\"116\",\" \\u0644\\u0645\":\"117\",\" \\u0645\\u0627\":\"118\",\"\\u064a\\u062f \":\"119\",\" \\u0623\\u064a\":\"120\",\"\\u0625\\u0631\\u0647\":\"121\",\"\\u0639 \\u0627\":\"122\",\"\\u0639\\u0645\\u0644\":\"123\",\"\\u0648\\u0644\\u0627\":\"124\",\"\\u0625\\u0644\\u0649\":\"125\",\"\\u0627\\u0628\\u064a\":\"126\",\"\\u0646 \\u0641\":\"127\",\"\\u062e\\u062a\\u0637\":\"128\",\"\\u0644\\u0643 \":\"129\",\"\\u0646\\u0647 \":\"130\",\"\\u0646\\u064a \":\"131\",\"\\u0625\\u0646 \":\"132\",\"\\u062f\\u064a\\u0646\":\"133\",\"\\u0641 \\u0627\":\"134\",\"\\u0644\\u0630\\u064a\":\"135\",\"\\u064a \\u0623\":\"136\",\"\\u064a \\u0628\":\"137\",\" \\u0648\\u0623\":\"138\",\"\\u0627 \\u0639\":\"139\",\"\\u0627\\u0644\\u062e\":\"140\",\"\\u062a\\u0644 \":\"141\",\"\\u062a\\u064a \":\"142\",\"\\u0642\\u062f \":\"143\",\"\\u0644\\u062f\\u064a\":\"144\",\" \\u0643\\u0644\":\"145\",\" \\u0645\\u0639\":\"146\",\"\\u0627\\u0628 \":\"147\",\"\\u0627\\u062e\\u062a\":\"148\",\"\\u0627\\u0631 \":\"149\",\"\\u0627\\u0644\\u0646\":\"150\",\"\\u0639\\u0644\\u0627\":\"151\",\"\\u0645 \\u0648\":\"152\",\"\\u0645\\u0639 \":\"153\",\"\\u0633 \\u0627\":\"154\",\"\\u0643\\u0644 \":\"155\",\"\\u0644\\u0627\\u0621\":\"156\",\"\\u0646 \\u0628\":\"157\",\"\\u0646 \\u062a\":\"158\",\"\\u064a \\u0645\":\"159\",\"\\u0639\\u0631\\u0628\":\"160\",\"\\u0645 \\u0628\":\"161\",\" \\u0648\\u0642\":\"162\",\" \\u064a\\u0642\":\"163\",\"\\u0627 \\u0644\":\"164\",\"\\u0627 \\u0645\":\"165\",\"\\u0627\\u0644\\u0641\":\"166\",\"\\u062a\\u0637\\u0627\":\"167\",\"\\u062f\\u0627\\u062f\":\"168\",\"\\u0644\\u0645\\u0633\":\"169\",\"\\u0644\\u0647 \":\"170\",\"\\u0647\\u0630\\u0627\":\"171\",\" \\u0645\\u062d\":\"172\",\"\\u0624\\u0644\\u0627\":\"173\",\"\\u0628\\u064a \":\"174\",\"\\u0629 \\u0645\":\"175\",\"\\u0646 \\u0644\":\"176\",\"\\u0647\\u0624\\u0644\":\"177\",\"\\u0643\\u0646 \":\"178\",\"\\u0644\\u0625\\u0631\":\"179\",\"\\u0644\\u062a\\u064a\":\"180\",\" \\u0623\\u0648\":\"181\",\" \\u0627\\u0646\":\"182\",\" \\u0639\\u0645\":\"183\",\"\\u0627 \\u0641\":\"184\",\"\\u0629 \\u0623\":\"185\",\"\\u0637\\u0627\\u0641\":\"186\",\"\\u0639\\u0628 \":\"187\",\"\\u0644 \\u0645\":\"188\",\"\\u0646 \\u0639\":\"189\",\"\\u0648\\u0631 \":\"190\",\"\\u064a\\u0627 \":\"191\",\" \\u064a\\u0633\":\"192\",\"\\u0627 \\u062a\":\"193\",\"\\u0629 \\u0628\":\"194\",\"\\u0631\\u0627\\u0621\":\"195\",\"\\u0639\\u0627\\u0644\":\"196\",\"\\u0642\\u0648\\u0627\":\"197\",\"\\u0642\\u064a\\u0629\":\"198\",\"\\u0644\\u0639\\u0627\":\"199\",\"\\u0645 \\u064a\":\"200\",\"\\u0645\\u064a \":\"201\",\"\\u0645\\u064a\\u0629\":\"202\",\"\\u0646\\u064a\\u0629\":\"203\",\"\\u0623\\u064a \":\"204\",\"\\u0627\\u0628\\u0627\":\"205\",\"\\u0628\\u063a\\u062f\":\"206\",\"\\u0628\\u0644 \":\"207\",\"\\u0631\\u0628 \":\"208\",\"\\u0639\\u0645\\u0627\":\"209\",\"\\u063a\\u062f\\u0627\":\"210\",\"\\u0645\\u0627\\u0644\":\"211\",\"\\u0645\\u0644\\u064a\":\"212\",\"\\u064a\\u0633 \":\"213\",\" \\u0628\\u0623\":\"214\",\" \\u0628\\u0639\":\"215\",\" \\u0628\\u063a\":\"216\",\" \\u0648\\u0645\":\"217\",\"\\u0628\\u0627\\u062a\":\"218\",\"\\u0628\\u064a\\u0629\":\"219\",\"\\u0630\\u0644\\u0643\":\"220\",\"\\u0639\\u0629 \":\"221\",\"\\u0642\\u0627\\u0648\":\"222\",\"\\u0642\\u064a\\u064a\":\"223\",\"\\u0643\\u064a \":\"224\",\"\\u0645 \\u0645\":\"225\",\"\\u064a \\u0639\":\"226\",\" \\u0639\\u0631\":\"227\",\" \\u0642\\u0627\":\"228\",\"\\u0627 \\u0648\":\"229\",\"\\u0631\\u0649 \":\"230\",\"\\u0642 \\u0627\":\"231\",\"\\u0648\\u0627\\u062a\":\"232\",\"\\u0648\\u0645 \":\"233\",\" \\u0647\\u0624\":\"234\",\"\\u0627 \\u0628\":\"235\",\"\\u062f\\u0627\\u0645\":\"236\",\"\\u062f\\u064a \":\"237\",\"\\u0631\\u0627\\u062a\":\"238\",\"\\u0634\\u0639\\u0628\":\"239\",\"\\u0644\\u0627\\u0646\":\"240\",\"\\u0644\\u0634\\u0639\":\"241\",\"\\u0644\\u0642\\u0648\":\"242\",\"\\u0644\\u064a\\u0627\":\"243\",\"\\u0646 \\u0647\":\"244\",\"\\u064a \\u062a\":\"245\",\"\\u064a \\u064a\":\"246\",\" \\u0648\\u0647\":\"247\",\" \\u064a\\u062d\":\"248\",\"\\u062c\\u0631\\u0627\":\"249\",\"\\u062c\\u0645\\u0627\":\"250\",\"\\u062d\\u0645\\u062f\":\"251\",\"\\u062f\\u0645 \":\"252\",\"\\u0643\\u0645 \":\"253\",\"\\u0644\\u0627\\u0648\":\"254\",\"\\u0644\\u0631\\u0647\":\"255\",\"\\u0645\\u0627\\u0639\":\"256\",\"\\u0646 \\u0642\":\"257\",\"\\u0646\\u0629 \":\"258\",\"\\u0647\\u064a \":\"259\",\" \\u0628\\u0644\":\"260\",\" \\u0628\\u0647\":\"261\",\" \\u0644\\u0647\":\"262\",\" \\u0648\\u064a\":\"263\",\"\\u0627 \\u0643\":\"264\",\"\\u0627\\u0630\\u0627\":\"265\",\"\\u0627\\u0639 \":\"266\",\"\\u062a \\u0645\":\"267\",\"\\u062a\\u062e\\u0627\":\"268\",\"\\u062e\\u0627\\u0628\":\"269\",\"\\u0631 \\u0645\":\"270\",\"\\u0644\\u0645\\u062a\":\"271\",\"\\u0645\\u0633\\u0644\":\"272\",\"\\u0649 \\u0623\":\"273\",\"\\u064a\\u0633\\u062a\":\"274\",\"\\u064a\\u0637\\u0627\":\"275\",\" \\u0644\\u0623\":\"276\",\" \\u0644\\u064a\":\"277\",\"\\u0623\\u0645\\u0646\":\"278\",\"\\u0627\\u0633\\u062a\":\"279\",\"\\u0628\\u0639\\u0636\":\"280\",\"\\u0629 \\u062a\":\"281\",\"\\u0631\\u064a \":\"282\",\"\\u0635\\u062f\\u0627\":\"283\",\"\\u0642 \\u0648\":\"284\",\"\\u0642\\u0648\\u0644\":\"285\",\"\\u0645\\u062f \":\"286\",\"\\u0646\\u062a\\u062e\":\"287\",\"\\u0646\\u0641\\u0633\":\"288\",\"\\u0646\\u0647\\u0627\":\"289\",\"\\u0647\\u0646\\u0627\":\"290\",\"\\u0623\\u0639\\u0645\":\"291\",\"\\u0623\\u0646\\u0647\":\"292\",\"\\u0627\\u0626\\u0646\":\"293\",\"\\u0627\\u0644\\u0622\":\"294\",\"\\u0627\\u0644\\u0643\":\"295\",\"\\u062d\\u0629 \":\"296\",\"\\u062f \\u0645\":\"297\",\"\\u0631 \\u0639\":\"298\",\"\\u0631\\u0628\\u064a\":\"299\"},\"azeri\":{\"l\\u0259r\":\"0\",\"in \":\"1\",\"\\u0131n \":\"2\",\"lar\":\"3\",\"da \":\"4\",\"an \":\"5\",\"ir \":\"6\",\"d\\u0259 \":\"7\",\"ki \":\"8\",\" bi\":\"9\",\"\\u0259n \":\"10\",\"\\u0259ri\":\"11\",\"ar\\u0131\":\"12\",\"\\u0259r \":\"13\",\"dir\":\"14\",\"nda\":\"15\",\" ki\":\"16\",\"rin\":\"17\",\"n\\u0131n\":\"18\",\"\\u0259si\":\"19\",\"ini\":\"20\",\" ed\":\"21\",\" qa\":\"22\",\" t\\u0259\":\"23\",\" ba\":\"24\",\" ol\":\"25\",\"as\\u0131\":\"26\",\"il\\u0259\":\"27\",\"r\\u0131n\":\"28\",\" ya\":\"29\",\"an\\u0131\":\"30\",\" v\\u0259\":\"31\",\"nd\\u0259\":\"32\",\"ni \":\"33\",\"ara\":\"34\",\"\\u0131n\\u0131\":\"35\",\"\\u0131nd\":\"36\",\" bu\":\"37\",\"si \":\"38\",\"ib \":\"39\",\"aq \":\"40\",\"d\\u0259n\":\"41\",\"iya\":\"42\",\"n\\u0259 \":\"43\",\"r\\u0259 \":\"44\",\"n b\":\"45\",\"s\\u0131n\":\"46\",\"v\\u0259 \":\"47\",\"iri\":\"48\",\"l\\u0259 \":\"49\",\"nin\":\"50\",\"\\u0259li\":\"51\",\" de\":\"52\",\" m\\u00fc\":\"53\",\"bir\":\"54\",\"n s\":\"55\",\"ri \":\"56\",\"\\u0259k \":\"57\",\" az\":\"58\",\" s\\u0259\":\"59\",\"ar \":\"60\",\"bil\":\"61\",\"z\\u0259r\":\"62\",\"bu \":\"63\",\"dan\":\"64\",\"edi\":\"65\",\"ind\":\"66\",\"man\":\"67\",\"un \":\"68\",\"\\u0259r\\u0259\":\"69\",\" ha\":\"70\",\"lan\":\"71\",\"yy\\u0259\":\"72\",\"iyy\":\"73\",\" il\":\"74\",\" ne\":\"75\",\"r k\":\"76\",\"\\u0259 b\":\"77\",\" is\":\"78\",\"na \":\"79\",\"nun\":\"80\",\"\\u0131r \":\"81\",\" da\":\"82\",\" h\\u0259\":\"83\",\"a b\":\"84\",\"in\\u0259\":\"85\",\"sin\":\"86\",\"yan\":\"87\",\"\\u0259rb\":\"88\",\" d\\u0259\":\"89\",\" m\\u0259\":\"90\",\" q\\u0259\":\"91\",\"d\\u0131r\":\"92\",\"li \":\"93\",\"ola\":\"94\",\"rba\":\"95\",\"az\\u0259\":\"96\",\"can\":\"97\",\"l\\u0131 \":\"98\",\"nla\":\"99\",\" et\":\"100\",\" g\\u00f6\":\"101\",\"al\\u0131\":\"102\",\"ayc\":\"103\",\"bay\":\"104\",\"eft\":\"105\",\"ist\":\"106\",\"n i\":\"107\",\"nef\":\"108\",\"tl\\u0259\":\"109\",\"yca\":\"110\",\"y\\u0259t\":\"111\",\"\\u0259c\\u0259\":\"112\",\" la\":\"113\",\"ild\":\"114\",\"n\\u0131 \":\"115\",\"tin\":\"116\",\"ldi\":\"117\",\"lik\":\"118\",\"n h\":\"119\",\"n m\":\"120\",\"oyu\":\"121\",\"raq\":\"122\",\"ya \":\"123\",\"\\u0259ti\":\"124\",\" ar\":\"125\",\"ada\":\"126\",\"ed\\u0259\":\"127\",\"mas\":\"128\",\"s\\u0131 \":\"129\",\"\\u0131na\":\"130\",\"\\u0259 d\":\"131\",\"\\u0259l\\u0259\":\"132\",\"ay\\u0131\":\"133\",\"iyi\":\"134\",\"lma\":\"135\",\"m\\u0259k\":\"136\",\"n d\":\"137\",\"ti \":\"138\",\"yin\":\"139\",\"yun\":\"140\",\"\\u0259t \":\"141\",\"az\\u0131\":\"142\",\"ft \":\"143\",\"i t\":\"144\",\"lli\":\"145\",\"n a\":\"146\",\"ra \":\"147\",\" c\\u0259\":\"148\",\" g\\u0259\":\"149\",\" ko\":\"150\",\" n\\u0259\":\"151\",\" oy\":\"152\",\"a d\":\"153\",\"ana\":\"154\",\"c\\u0259k\":\"155\",\"eyi\":\"156\",\"ilm\":\"157\",\"irl\":\"158\",\"lay\":\"159\",\"liy\":\"160\",\"lub\":\"161\",\"n \\u0259\":\"162\",\"ril\":\"163\",\"rl\\u0259\":\"164\",\"unu\":\"165\",\"ver\":\"166\",\"\\u00fcn \":\"167\",\"\\u0259 o\":\"168\",\"\\u0259ni\":\"169\",\" he\":\"170\",\" ma\":\"171\",\" on\":\"172\",\" pa\":\"173\",\"ala\":\"174\",\"dey\":\"175\",\"i m\":\"176\",\"ima\":\"177\",\"lm\\u0259\":\"178\",\"m\\u0259t\":\"179\",\"par\":\"180\",\"y\\u0259 \":\"181\",\"\\u0259tl\":\"182\",\" al\":\"183\",\" mi\":\"184\",\" sa\":\"185\",\" \\u0259l\":\"186\",\"ad\\u0131\":\"187\",\"ak\\u0131\":\"188\",\"and\":\"189\",\"ard\":\"190\",\"art\":\"191\",\"ayi\":\"192\",\"i a\":\"193\",\"i q\":\"194\",\"i y\":\"195\",\"ili\":\"196\",\"ill\":\"197\",\"is\\u0259\":\"198\",\"n o\":\"199\",\"n q\":\"200\",\"olu\":\"201\",\"rla\":\"202\",\"st\\u0259\":\"203\",\"s\\u0259 \":\"204\",\"tan\":\"205\",\"tel\":\"206\",\"yar\":\"207\",\"\\u0259d\\u0259\":\"208\",\" me\":\"209\",\" r\\u0259\":\"210\",\" ve\":\"211\",\" ye\":\"212\",\"a k\":\"213\",\"at \":\"214\",\"ba\\u015f\":\"215\",\"diy\":\"216\",\"ent\":\"217\",\"eti\":\"218\",\"h\\u0259s\":\"219\",\"i i\":\"220\",\"ik \":\"221\",\"la \":\"222\",\"mi\\u015f\":\"223\",\"n n\":\"224\",\"nu \":\"225\",\"qar\":\"226\",\"ran\":\"227\",\"t\\u0259r\":\"228\",\"xan\":\"229\",\"\\u0259 a\":\"230\",\"\\u0259 g\":\"231\",\"\\u0259 t\":\"232\",\" d\\u00fc\":\"233\",\"ama\":\"234\",\"b k\":\"235\",\"dil\":\"236\",\"era\":\"237\",\"etm\":\"238\",\"i b\":\"239\",\"kil\":\"240\",\"mil\":\"241\",\"n r\":\"242\",\"qla\":\"243\",\"r s\":\"244\",\"ras\":\"245\",\"siy\":\"246\",\"son\":\"247\",\"tim\":\"248\",\"yer\":\"249\",\"\\u0259 k\":\"250\",\" g\\u00fc\":\"251\",\" so\":\"252\",\" s\\u00f6\":\"253\",\" te\":\"254\",\" xa\":\"255\",\"ai \":\"256\",\"bar\":\"257\",\"cti\":\"258\",\"di \":\"259\",\"eri\":\"260\",\"g\\u00f6r\":\"261\",\"g\\u00fcn\":\"262\",\"g\\u0259l\":\"263\",\"hb\\u0259\":\"264\",\"ih\\u0259\":\"265\",\"iki\":\"266\",\"isi\":\"267\",\"lin\":\"268\",\"mai\":\"269\",\"maq\":\"270\",\"n k\":\"271\",\"n t\":\"272\",\"n v\":\"273\",\"onu\":\"274\",\"qan\":\"275\",\"q\\u0259z\":\"276\",\"t\\u0259 \":\"277\",\"xal\":\"278\",\"yib\":\"279\",\"yih\":\"280\",\"zet\":\"281\",\"z\\u0131r\":\"282\",\"\\u0131b \":\"283\",\"\\u0259 m\":\"284\",\"\\u0259ze\":\"285\",\" br\":\"286\",\" in\":\"287\",\" i\\u0307\":\"288\",\" pr\":\"289\",\" ta\":\"290\",\" to\":\"291\",\" \\u00fc\\u00e7\":\"292\",\"a o\":\"293\",\"ali\":\"294\",\"ani\":\"295\",\"anl\":\"296\",\"aql\":\"297\",\"azi\":\"298\",\"bri\":\"299\"},\"bengali\":{\"\\u09be\\u09b0 \":\"0\",\"\\u09af\\u09bc \":\"1\",\"\\u09c7\\u09af\\u09bc\":\"2\",\"\\u09af\\u09bc\\u09be\":\"3\",\" \\u0995\\u09b0\":\"4\",\"\\u09c7\\u09a4 \":\"5\",\" \\u0995\\u09be\":\"6\",\" \\u09aa\\u09be\":\"7\",\" \\u09a4\\u09be\":\"8\",\"\\u09a8\\u09be \":\"9\",\"\\u09be\\u09af\\u09bc\":\"10\",\"\\u09c7\\u09b0 \":\"11\",\"\\u09af\\u09bc\\u09c7\":\"12\",\" \\u09ac\\u09be\":\"13\",\"\\u09c7\\u09ac \":\"14\",\" \\u09af\\u09be\":\"15\",\" \\u09b9\\u09c7\":\"16\",\" \\u09b8\\u09be\":\"17\",\"\\u09be\\u09a8 \":\"18\",\"\\u09c7\\u099b \":\"19\",\" \\u09bf\\u09a8\":\"20\",\"\\u09c7\\u09b2 \":\"21\",\" \\u09bf\\u09a6\":\"22\",\" \\u09a8\\u09be\":\"23\",\" \\u09bf\\u09ac\":\"24\",\"\\u09c7\\u0995 \":\"25\",\"\\u09b2\\u09be \":\"26\",\"\\u09a4\\u09be \":\"27\",\" \\u09ac\\u0a98\":\"28\",\" \\u09bf\\u0995\":\"29\",\"\\u0995\\u09b0\\u09c7\":\"30\",\" \\u09aa\\u0a9a\":\"31\",\"\\u09be\\u09c7\\u09b0\":\"32\",\"\\u09bf\\u09a8\\u09c7\":\"33\",\"\\u09b0\\u09be \":\"34\",\" \\u09cb\\u09ac\":\"35\",\"\\u0995\\u09be \":\"36\",\" \\u0995\\u09c7\":\"37\",\" \\u099f\\u09be\":\"38\",\"\\u09b0 \\u0995\":\"39\",\"\\u09c7\\u09b2\\u09be\":\"40\",\" \\u09cb\\u0995\":\"41\",\" \\u09ae\\u09be\":\"42\",\" \\u09cb\\u09a6\":\"43\",\" \\u09cb\\u09ae\":\"44\",\"\\u09a6\\u09b0 \":\"45\",\"\\u09bc\\u09be \":\"46\",\"\\u09bf\\u09a6\\u09c7\":\"47\",\"\\u09be\\u0995\\u09be\":\"48\",\"\\u09bc\\u09c7\\u099b\":\"49\",\"\\u09c7\\u09a6\\u09b0\":\"50\",\" \\u0986\\u09c7\":\"51\",\" \\u0993 \":\"52\",\"\\u09be\\u09b2 \":\"53\",\"\\u09bf\\u099f \":\"54\",\" \\u09ae\\u09c1\":\"55\",\"\\u0995\\u09c7\\u09b0\":\"56\",\"\\u09b9\\u09af\\u09bc\":\"57\",\"\\u0995\\u09b0\\u09be\":\"58\",\"\\u09aa\\u09b0 \":\"59\",\"\\u09aa\\u09be\\u09c7\":\"60\",\" \\u098f\\u0995\":\"61\",\" \\u09aa\\u09a6\":\"62\",\"\\u099f\\u09be\\u0995\":\"63\",\"\\u09a1\\u09bc \":\"64\",\"\\u0995\\u09be\\u09a8\":\"65\",\"\\u099f\\u09be \":\"66\",\"\\u09a6\\u0a97\\u09be\":\"67\",\"\\u09aa\\u09a6\\u0a97\":\"68\",\"\\u09be\\u09a1\\u09bc\":\"69\",\"\\u09cb\\u0995\\u09be\":\"70\",\"\\u0993\\u09af\\u09bc\":\"71\",\"\\u0995\\u09be\\u09aa\":\"72\",\"\\u09b9\\u09c7\\u09af\":\"73\",\"\\u09c7\\u09a8\\u09b0\":\"74\",\" \\u09b9\\u09af\":\"75\",\"\\u09a6\\u09c7\\u09af\":\"76\",\"\\u09a8\\u09b0 \":\"77\",\"\\u09be\\u09a8\\u09be\":\"78\",\"\\u09be\\u09c7\\u09b2\":\"79\",\" \\u0986\\u09b0\":\"80\",\" \\u09bc \":\"81\",\"\\u09ac\\u0a98\\u09ac\":\"82\",\"\\u09bf\\u09af\\u09bc\":\"83\",\" \\u09a6\\u09be\":\"84\",\" \\u09b8\\u09ae\":\"85\",\"\\u0995\\u09be\\u09b0\":\"86\",\"\\u09b9\\u09be\\u09b0\":\"87\",\"\\u09be\\u0987 \":\"88\",\"\\u09a1\\u09bc\\u09be\":\"89\",\"\\u09bf\\u09ac\\u09bf\":\"90\",\" \\u09b0\\u09be\":\"91\",\" \\u09b2\\u09be\":\"92\",\"\\u09a8\\u09be\\u09b0\":\"93\",\"\\u09ac\\u09b9\\u09be\":\"94\",\"\\u09ac\\u09be \":\"95\",\"\\u09af\\u09be\\u09af\":\"96\",\"\\u09c7\\u09a8 \":\"97\",\"\\u0a98\\u09ac\\u09b9\":\"98\",\" \\u09ad\\u09be\":\"99\",\" \\u09b8\\u09c7\":\"100\",\" \\u09cb\\u09af\":\"101\",\"\\u09b0\\u09b0 \":\"102\",\"\\u09bc\\u09be\\u09b0\":\"103\",\"\\u09bc\\u09be\\u09b2\":\"104\",\"\\u0a97\\u09be \":\"105\",\"\\u09a5\\u09c7\\u0995\":\"106\",\"\\u09ad\\u09be\\u09c7\":\"107\",\"\\u09bc\\u09c7 \":\"108\",\"\\u09c7\\u09b0\\u09b0\":\"109\",\" \\u09a7\\u09b0\":\"110\",\" \\u09b9\\u09be\":\"111\",\"\\u09a8\\u0a98 \":\"112\",\"\\u09b0\\u09c7\\u09a8\":\"113\",\"\\u09be\\u09c7\\u09ac\":\"114\",\"\\u09bf\\u09a1\\u09bc\":\"115\",\"\\u09bf\\u09b0 \":\"116\",\" \\u09cb\\u09a5\":\"117\",\"\\u09a4\\u09be\\u09b0\":\"118\",\"\\u09ac\\u09bf\\u09ad\":\"119\",\"\\u09b0\\u09c7\\u09a4\":\"120\",\"\\u09b8\\u09be\\u09c7\":\"121\",\"\\u09be\\u0995\\u09c7\":\"122\",\"\\u09be\\u09c7\\u09a4\":\"123\",\"\\u09bf\\u09ad\\u0a2d\":\"124\",\"\\u09c7 \\u09ac\":\"125\",\"\\u09cb\\u09a5\\u09c7\":\"126\",\" \\u09cb\\u09aa\":\"127\",\" \\u09cb\\u09b8\":\"128\",\"\\u09ac\\u09be\\u09b0\":\"129\",\"\\u09ad\\u0a2d \":\"130\",\"\\u09b0\\u09a8 \":\"131\",\"\\u09be\\u09ae \":\"132\",\" \\u098f\\u0996\":\"133\",\"\\u0986\\u09b0 \":\"134\",\"\\u0995\\u09be\\u09c7\":\"135\",\"\\u09a6\\u09a8 \":\"136\",\"\\u09b8\\u09be\\u099c\":\"137\",\"\\u09be\\u09c7\\u0995\":\"138\",\"\\u09be\\u09c7\\u09a8\":\"139\",\"\\u09c7\\u09a8\\u09be\":\"140\",\" \\u0998\\u09c7\":\"141\",\" \\u09a4\\u09c7\":\"142\",\" \\u09b0\\u09c7\":\"143\",\"\\u09a4\\u09c7\\u09ac\":\"144\",\"\\u09ac\\u09a8 \":\"145\",\"\\u09ac\\u0a98\\u09be\":\"146\",\"\\u09c7\\u09a1\\u09bc\":\"147\",\"\\u09c7\\u09ac\\u09a8\":\"148\",\" \\u0996\\u09c1\":\"149\",\" \\u099a\\u09be\":\"150\",\" \\u09b8\\u09c1\":\"151\",\"\\u0995\\u09c7 \":\"152\",\"\\u09a7\\u09b0\\u09c7\":\"153\",\"\\u09b0 \\u09cb\":\"154\",\"\\u09bc \\u09bf\":\"155\",\"\\u09be \\u09bf\":\"156\",\"\\u09be\\u09c7\\u09a5\":\"157\",\"\\u09be\\u0a20\\u09be\":\"158\",\"\\u09bf\\u09a6 \":\"159\",\"\\u09bf\\u09a8 \":\"160\",\" \\u0985\\u09a8\":\"161\",\" \\u0986\\u09aa\":\"162\",\" \\u0986\\u09ae\":\"163\",\" \\u09a5\\u09be\":\"164\",\" \\u09ac\\u0a9a\":\"165\",\" \\u09cb\\u09ab\":\"166\",\" \\u09cc\\u09a4\":\"167\",\"\\u0998\\u09c7\\u09b0\":\"168\",\"\\u09a4\\u09c7 \":\"169\",\"\\u09ae\\u09af\\u09bc\":\"170\",\"\\u09af\\u09be\\u0a20\":\"171\",\"\\u09b0 \\u09b8\":\"172\",\"\\u09b0\\u09be\\u0996\":\"173\",\"\\u09be \\u09ac\":\"174\",\"\\u09be \\u09cb\":\"175\",\"\\u09be\\u09b2\\u09be\":\"176\",\"\\u09bf\\u0995 \":\"177\",\"\\u09bf\\u09b6 \":\"178\",\"\\u09c7\\u0996 \":\"179\",\" \\u098f\\u09b0\":\"180\",\" \\u099a\\u0a93\":\"181\",\" \\u09bf\\u09a1\":\"182\",\"\\u0996\\u09a8 \":\"183\",\"\\u09a1\\u09bc\\u09c7\":\"184\",\"\\u09b0 \\u09ac\":\"185\",\"\\u09bc\\u09b0 \":\"186\",\"\\u09be\\u0987\\u09c7\":\"187\",\"\\u09be\\u09c7\\u09a6\":\"188\",\"\\u09bf\\u09a6\\u09a8\":\"189\",\"\\u09c7\\u09b0\\u09a8\":\"190\",\" \\u09a4\\u0a74\":\"191\",\"\\u099b\\u09be\\u09a1\":\"192\",\"\\u099c\\u09a8\\u0a98\":\"193\",\"\\u09a4\\u09be\\u0987\":\"194\",\"\\u09ae\\u09be \":\"195\",\"\\u09ae\\u09be\\u09c7\":\"196\",\"\\u09b2\\u09be\\u09b0\":\"197\",\"\\u09be\\u099c \":\"198\",\"\\u09be\\u09a4\\u09be\":\"199\",\"\\u09be\\u09ae\\u09be\":\"200\",\"\\u0a0a\\u09c7\\u09b2\":\"201\",\"\\u0a97\\u09be\\u09b0\":\"202\",\" \\u09b8\\u09ac\":\"203\",\"\\u0986\\u09aa\\u09a8\":\"204\",\"\\u098f\\u0995\\u099f\":\"205\",\"\\u0995\\u09be\\u09bf\":\"206\",\"\\u099c\\u09be\\u0987\":\"207\",\"\\u099f\\u09b0 \":\"208\",\"\\u09a1\\u099c\\u09be\":\"209\",\"\\u09a6\\u09c7\\u0996\":\"210\",\"\\u09aa\\u09a8\\u09be\":\"211\",\"\\u09b0\\u0993 \":\"212\",\"\\u09b2\\u09c7 \":\"213\",\"\\u09b9\\u09c7\\u09ac\":\"214\",\"\\u09be\\u099c\\u09be\":\"215\",\"\\u09be\\u09bf\\u099f\":\"216\",\"\\u09bf\\u09a1\\u099c\":\"217\",\"\\u09c7\\u09a5 \":\"218\",\" \\u098f\\u09ac\":\"219\",\" \\u099c\\u09a8\":\"220\",\" \\u099c\\u09be\":\"221\",\"\\u0986\\u09ae\\u09be\":\"222\",\"\\u0997\\u09c7\\u09b2\":\"223\",\"\\u099c\\u09be\\u09a8\":\"224\",\"\\u09a8\\u09c7\\u09a4\":\"225\",\"\\u09ac\\u09bf\\u09b6\":\"226\",\"\\u09ae\\u09c1\\u09c7\":\"227\",\"\\u09ae\\u09c7\\u09af\":\"228\",\"\\u09b0 \\u09aa\":\"229\",\"\\u09b8\\u09c7 \":\"230\",\"\\u09b9\\u09c7\\u09b2\":\"231\",\"\\u09bc \\u09cb\":\"232\",\"\\u09be \\u09b9\":\"233\",\"\\u09be\\u0993\\u09af\":\"234\",\"\\u09cb\\u09ae\\u0995\":\"235\",\"\\u0a98\\u09be\\u09bf\":\"236\",\" \\u0985\\u09c7\":\"237\",\" \\u099f \":\"238\",\" \\u09cb\\u0997\":\"239\",\" \\u09cb\\u09a8\":\"240\",\"\\u099c\\u09b0 \":\"241\",\"\\u09a4\\u09bf\\u09b0\":\"242\",\"\\u09a6\\u09be\\u09ae\":\"243\",\"\\u09aa\\u09a1\\u09bc\":\"244\",\"\\u09aa\\u09be\\u09b0\":\"245\",\"\\u09ac\\u09be\\u0998\":\"246\",\"\\u09ae\\u0995\\u09be\":\"247\",\"\\u09ae\\u09be\\u09ae\":\"248\",\"\\u09af\\u09bc\\u09b0\":\"249\",\"\\u09af\\u09be\\u09c7\":\"250\",\"\\u09b0 \\u09ae\":\"251\",\"\\u09b0\\u09c7 \":\"252\",\"\\u09b2\\u09b0 \":\"253\",\"\\u09be \\u0995\":\"254\",\"\\u09be\\u0997 \":\"255\",\"\\u09be\\u09ac\\u09be\":\"256\",\"\\u09be\\u09b0\\u09be\":\"257\",\"\\u09be\\u09bf\\u09a8\":\"258\",\"\\u09c7 \\u0997\":\"259\",\"\\u09c7\\u0997 \":\"260\",\"\\u09c7\\u09b2\\u09b0\":\"261\",\"\\u09cb\\u09a6\\u0996\":\"262\",\"\\u09cb\\u09ac\\u09bf\":\"263\",\"\\u0a93\\u09b2 \":\"264\",\" \\u09a6\\u09c7\":\"265\",\" \\u09aa\\u09c1\":\"266\",\" \\u09ac\\u09c7\":\"267\",\"\\u0985\\u09c7\\u09a8\":\"268\",\"\\u098f\\u0996\\u09a8\":\"269\",\"\\u0995\\u099b\\u09c1\":\"270\",\"\\u0995\\u09be\\u09b2\":\"271\",\"\\u0997\\u09c7\\u09af\":\"272\",\"\\u099b\\u09a8 \":\"273\",\"\\u09a4 \\u09aa\":\"274\",\"\\u09a8\\u09c7\\u09af\":\"275\",\"\\u09aa\\u09be\\u09bf\":\"276\",\"\\u09ae\\u09a8 \":\"277\",\"\\u09b0 \\u0986\":\"278\",\"\\u09b0\\u09be\\u09b0\":\"279\",\"\\u09be\\u0993 \":\"280\",\"\\u09be\\u09aa \":\"281\",\"\\u09bf\\u0995\\u099b\":\"282\",\"\\u09bf\\u0997\\u09c7\":\"283\",\"\\u09c7\\u099b\\u09a8\":\"284\",\"\\u09c7\\u099c\\u09b0\":\"285\",\"\\u09cb\\u09ae\\u09be\":\"286\",\"\\u09cb\\u09ae\\u09c7\":\"287\",\"\\u09cc\\u09a4\\u09bf\":\"288\",\"\\u0a98\\u09be\\u09c7\":\"289\",\" ' \":\"290\",\" \\u098f\\u099b\":\"291\",\" \\u099b\\u09be\":\"292\",\" \\u09ac\\u09b2\":\"293\",\" \\u09af\\u09bf\":\"294\",\" \\u09b6\\u09bf\":\"295\",\" \\u09bf\\u09ae\":\"296\",\" \\u09cb\\u09b2\":\"297\",\"\\u098f\\u099b\\u09be\":\"298\",\"\\u0996\\u09be \":\"299\"},\"bulgarian\":{\"\\u043d\\u0430 \":\"0\",\" \\u043d\\u0430\":\"1\",\"\\u0442\\u043e \":\"2\",\" \\u043f\\u0440\":\"3\",\" \\u0437\\u0430\":\"4\",\"\\u0442\\u0430 \":\"5\",\" \\u043f\\u043e\":\"6\",\"\\u0438\\u0442\\u0435\":\"7\",\"\\u0442\\u0435 \":\"8\",\"\\u0430 \\u043f\":\"9\",\"\\u0430 \\u0441\":\"10\",\" \\u043e\\u0442\":\"11\",\"\\u0437\\u0430 \":\"12\",\"\\u0430\\u0442\\u0430\":\"13\",\"\\u0438\\u044f \":\"14\",\" \\u0432 \":\"15\",\"\\u0435 \\u043d\":\"16\",\" \\u0434\\u0430\":\"17\",\"\\u0430 \\u043d\":\"18\",\" \\u0441\\u0435\":\"19\",\" \\u043a\\u043e\":\"20\",\"\\u0434\\u0430 \":\"21\",\"\\u043e\\u0442 \":\"22\",\"\\u0430\\u043d\\u0438\":\"23\",\"\\u043f\\u0440\\u0435\":\"24\",\"\\u043d\\u0435 \":\"25\",\"\\u0435\\u043d\\u0438\":\"26\",\"\\u043e \\u043d\":\"27\",\"\\u043d\\u0438 \":\"28\",\"\\u0441\\u0435 \":\"29\",\" \\u0438 \":\"30\",\"\\u043d\\u043e \":\"31\",\"\\u0430\\u043d\\u0435\":\"32\",\"\\u0435\\u0442\\u043e\":\"33\",\"\\u0430 \\u0432\":\"34\",\"\\u0432\\u0430 \":\"35\",\"\\u0432\\u0430\\u043d\":\"36\",\"\\u0435 \\u043f\":\"37\",\"\\u0430 \\u043e\":\"38\",\"\\u043e\\u0442\\u043e\":\"39\",\"\\u0440\\u0430\\u043d\":\"40\",\"\\u0430\\u0442 \":\"41\",\"\\u0440\\u0435\\u0434\":\"42\",\" \\u043d\\u0435\":\"43\",\"\\u0430 \\u0434\":\"44\",\"\\u0438 \\u043f\":\"45\",\" \\u0434\\u043e\":\"46\",\"\\u043f\\u0440\\u043e\":\"47\",\" \\u0441\\u044a\":\"48\",\"\\u043b\\u0438 \":\"49\",\"\\u043f\\u0440\\u0438\":\"50\",\"\\u043d\\u0438\\u044f\":\"51\",\"\\u0441\\u043a\\u0438\":\"52\",\"\\u0442\\u0435\\u043b\":\"53\",\"\\u0430 \\u0438\":\"54\",\"\\u043f\\u043e \":\"55\",\"\\u0440\\u0438 \":\"56\",\" \\u0435 \":\"57\",\" \\u043a\\u0430\":\"58\",\"\\u0438\\u0440\\u0430\":\"59\",\"\\u043a\\u0430\\u0442\":\"60\",\"\\u043d\\u0438\\u0435\":\"61\",\"\\u043d\\u0438\\u0442\":\"62\",\"\\u0435 \\u0437\":\"63\",\"\\u0438 \\u0441\":\"64\",\"\\u043e \\u0441\":\"65\",\"\\u043e\\u0441\\u0442\":\"66\",\"\\u0447\\u0435 \":\"67\",\" \\u0440\\u0430\":\"68\",\"\\u0438\\u0441\\u0442\":\"69\",\"\\u043e \\u043f\":\"70\",\" \\u0438\\u0437\":\"71\",\" \\u0441\\u0430\":\"72\",\"\\u0435 \\u0434\":\"73\",\"\\u0438\\u043d\\u0438\":\"74\",\"\\u043a\\u0438 \":\"75\",\"\\u043c\\u0438\\u043d\":\"76\",\" \\u043c\\u0438\":\"77\",\"\\u0430 \\u0431\":\"78\",\"\\u0430\\u0432\\u0430\":\"79\",\"\\u0435 \\u0432\":\"80\",\"\\u0438\\u0435 \":\"81\",\"\\u043f\\u043e\\u043b\":\"82\",\"\\u0441\\u0442\\u0432\":\"83\",\"\\u0442 \\u043d\":\"84\",\" \\u0432\\u044a\":\"85\",\" \\u0441\\u0442\":\"86\",\" \\u0442\\u043e\":\"87\",\"\\u0430\\u0437\\u0430\":\"88\",\"\\u0435 \\u043e\":\"89\",\"\\u043e\\u0432 \":\"90\",\"\\u0441\\u0442 \":\"91\",\"\\u044a\\u0442 \":\"92\",\"\\u0438 \\u043d\":\"93\",\"\\u0438\\u044f\\u0442\":\"94\",\"\\u043d\\u0430\\u0442\":\"95\",\"\\u0440\\u0430 \":\"96\",\" \\u0431\\u044a\":\"97\",\" \\u0447\\u0435\":\"98\",\"\\u0430\\u043b\\u043d\":\"99\",\"\\u0435 \\u0441\":\"100\",\"\\u0435\\u043d \":\"101\",\"\\u0435\\u0441\\u0442\":\"102\",\"\\u0438 \\u0434\":\"103\",\"\\u043b\\u0435\\u043d\":\"104\",\"\\u043d\\u0438\\u0441\":\"105\",\"\\u043e \\u043e\":\"106\",\"\\u043e\\u0432\\u0438\":\"107\",\" \\u043e\\u0431\":\"108\",\" \\u0441\\u043b\":\"109\",\"\\u0430 \\u0440\":\"110\",\"\\u0430\\u0442\\u043e\":\"111\",\"\\u043a\\u043e\\u043d\":\"112\",\"\\u043d\\u043e\\u0441\":\"113\",\"\\u0440\\u043e\\u0432\":\"114\",\"\\u0449\\u0435 \":\"115\",\" \\u0440\\u0435\":\"116\",\" \\u0441 \":\"117\",\" \\u0441\\u043f\":\"118\",\"\\u0432\\u0430\\u0442\":\"119\",\"\\u0435\\u0448\\u0435\":\"120\",\"\\u0438 \\u0432\":\"121\",\"\\u0438\\u0435\\u0442\":\"122\",\"\\u043e \\u0432\":\"123\",\"\\u043e\\u0432\\u0435\":\"124\",\"\\u0441\\u0442\\u0430\":\"125\",\"\\u0430 \\u043a\":\"126\",\"\\u0430 \\u0442\":\"127\",\"\\u0434\\u0430\\u0442\":\"128\",\"\\u0435\\u043d\\u0442\":\"129\",\"\\u043a\\u0430 \":\"130\",\"\\u043b\\u0435\\u0434\":\"131\",\"\\u043d\\u0435\\u0442\":\"132\",\"\\u043e\\u0440\\u0438\":\"133\",\"\\u0441\\u0442\\u0440\":\"134\",\"\\u0441\\u0442\\u044a\":\"135\",\"\\u0442\\u0438 \":\"136\",\"\\u0442\\u044a\\u0440\":\"137\",\" \\u0442\\u0435\":\"138\",\"\\u0430 \\u0437\":\"139\",\"\\u0430 \\u043c\":\"140\",\"\\u0430\\u0434 \":\"141\",\"\\u0430\\u043d\\u0430\":\"142\",\"\\u0435\\u043d\\u043e\":\"143\",\"\\u0438 \\u043e\":\"144\",\"\\u0438\\u043d\\u0430\":\"145\",\"\\u0438\\u0442\\u0438\":\"146\",\"\\u043c\\u0430 \":\"147\",\"\\u0441\\u043a\\u0430\":\"148\",\"\\u0441\\u043b\\u0435\":\"149\",\"\\u0442\\u0432\\u043e\":\"150\",\"\\u0442\\u0435\\u0440\":\"151\",\"\\u0446\\u0438\\u044f\":\"152\",\"\\u044f\\u0442 \":\"153\",\" \\u0431\\u0435\":\"154\",\" \\u0434\\u0435\":\"155\",\" \\u043f\\u0430\":\"156\",\"\\u0430\\u0442\\u0435\":\"157\",\"\\u0432\\u0435\\u043d\":\"158\",\"\\u0432\\u0438 \":\"159\",\"\\u0432\\u0438\\u0442\":\"160\",\"\\u0438 \\u0437\":\"161\",\"\\u0438 \\u0438\":\"162\",\"\\u043d\\u0430\\u0440\":\"163\",\"\\u043d\\u043e\\u0432\":\"164\",\"\\u043e\\u0432\\u0430\":\"165\",\"\\u043f\\u043e\\u0432\":\"166\",\"\\u0440\\u0435\\u0437\":\"167\",\"\\u0440\\u0438\\u0442\":\"168\",\"\\u0441\\u0430 \":\"169\",\"\\u044f\\u0442\\u0430\":\"170\",\" \\u0433\\u043e\":\"171\",\" \\u0449\\u0435\":\"172\",\"\\u0430\\u043b\\u0438\":\"173\",\"\\u0432 \\u043f\":\"174\",\"\\u0433\\u0440\\u0430\":\"175\",\"\\u0435 \\u0438\":\"176\",\"\\u0435\\u0434\\u0438\":\"177\",\"\\u0435\\u043b\\u0438\":\"178\",\"\\u0438\\u043b\\u0438\":\"179\",\"\\u043a\\u0430\\u0437\":\"180\",\"\\u043a\\u0438\\u0442\":\"181\",\"\\u043b\\u043d\\u043e\":\"182\",\"\\u043c\\u0435\\u043d\":\"183\",\"\\u043e\\u043b\\u0438\":\"184\",\"\\u0440\\u0430\\u0437\":\"185\",\" \\u0432\\u0435\":\"186\",\" \\u0433\\u0440\":\"187\",\" \\u0438\\u043c\":\"188\",\" \\u043c\\u0435\":\"189\",\" \\u043f\\u044a\":\"190\",\"\\u0430\\u0432\\u0438\":\"191\",\"\\u0430\\u043a\\u043e\":\"192\",\"\\u0430\\u0447\\u0430\":\"193\",\"\\u0432\\u0438\\u043d\":\"194\",\"\\u0432\\u043e \":\"195\",\"\\u0433\\u043e\\u0432\":\"196\",\"\\u0434\\u0430\\u043d\":\"197\",\"\\u0434\\u0438 \":\"198\",\"\\u0434\\u043e \":\"199\",\"\\u0435\\u0434 \":\"200\",\"\\u0435\\u0440\\u0438\":\"201\",\"\\u0435\\u0440\\u043e\":\"202\",\"\\u0436\\u0434\\u0430\":\"203\",\"\\u0438\\u0442\\u043e\":\"204\",\"\\u043a\\u043e\\u0432\":\"205\",\"\\u043a\\u043e\\u043b\":\"206\",\"\\u043b\\u043d\\u0438\":\"207\",\"\\u043c\\u0435\\u0440\":\"208\",\"\\u043d\\u0430\\u0447\":\"209\",\"\\u043e \\u0437\":\"210\",\"\\u043e\\u043b\\u0430\":\"211\",\"\\u043e\\u043d \":\"212\",\"\\u043e\\u043d\\u0430\":\"213\",\"\\u043f\\u0440\\u0430\":\"214\",\"\\u0440\\u0430\\u0432\":\"215\",\"\\u0440\\u0435\\u043c\":\"216\",\"\\u0441\\u0438\\u044f\":\"217\",\"\\u0441\\u0442\\u0438\":\"218\",\"\\u0442 \\u043f\":\"219\",\"\\u0442\\u0430\\u043d\":\"220\",\"\\u0445\\u0430 \":\"221\",\"\\u0448\\u0435 \":\"222\",\"\\u0448\\u0435\\u043d\":\"223\",\"\\u044a\\u043b\\u0433\":\"224\",\" \\u0431\\u0430\":\"225\",\" \\u0441\\u0438\":\"226\",\"\\u0430\\u0440\\u043e\":\"227\",\"\\u0431\\u044a\\u043b\":\"228\",\"\\u0432 \\u0440\":\"229\",\"\\u0433\\u0430\\u0440\":\"230\",\"\\u0435 \\u0435\":\"231\",\"\\u0435\\u043b\\u043d\":\"232\",\"\\u0435\\u043c\\u0435\":\"233\",\"\\u0438\\u043a\\u043e\":\"234\",\"\\u0438\\u043c\\u0430\":\"235\",\"\\u043a\\u043e \":\"236\",\"\\u043a\\u043e\\u0438\":\"237\",\"\\u043b\\u0430 \":\"238\",\"\\u043b\\u0433\\u0430\":\"239\",\"\\u043e \\u0434\":\"240\",\"\\u043e\\u0437\\u0438\":\"241\",\"\\u043e\\u0438\\u0442\":\"242\",\"\\u043f\\u043e\\u0434\":\"243\",\"\\u0440\\u0435\\u0441\":\"244\",\"\\u0440\\u0438\\u0435\":\"245\",\"\\u0441\\u0442\\u043e\":\"246\",\"\\u0442 \\u043a\":\"247\",\"\\u0442 \\u043c\":\"248\",\"\\u0442 \\u0441\":\"249\",\"\\u0443\\u0441\\u0442\":\"250\",\" \\u0431\\u0438\":\"251\",\" \\u0434\\u0432\":\"252\",\" \\u0434\\u044a\":\"253\",\" \\u043c\\u0430\":\"254\",\" \\u043c\\u043e\":\"255\",\" \\u043d\\u0438\":\"256\",\" \\u043e\\u0441\":\"257\",\"\\u0430\\u043b\\u0430\":\"258\",\"\\u0430\\u043d\\u0441\":\"259\",\"\\u0430\\u0440\\u0430\":\"260\",\"\\u0430\\u0442\\u0438\":\"261\",\"\\u0430\\u0446\\u0438\":\"262\",\"\\u0431\\u0435\\u0448\":\"263\",\"\\u0432\\u044a\\u0440\":\"264\",\"\\u0435 \\u0440\":\"265\",\"\\u0435\\u0434\\u0432\":\"266\",\"\\u0435\\u043c\\u0430\":\"267\",\"\\u0436\\u0430\\u0432\":\"268\",\"\\u0438 \\u043a\":\"269\",\"\\u0438\\u0430\\u043b\":\"270\",\"\\u0438\\u0446\\u0430\":\"271\",\"\\u0438\\u0447\\u0435\":\"272\",\"\\u043a\\u0438\\u044f\":\"273\",\"\\u043b\\u0438\\u0442\":\"274\",\"\\u043e \\u0431\":\"275\",\"\\u043e\\u0432\\u043e\":\"276\",\"\\u043e\\u0434\\u0438\":\"277\",\"\\u043e\\u043a\\u0430\":\"278\",\"\\u043f\\u043e\\u0441\":\"279\",\"\\u0440\\u043e\\u0434\":\"280\",\"\\u0441\\u0435\\u0434\":\"281\",\"\\u0441\\u043b\\u0443\":\"282\",\"\\u0442 \\u0438\":\"283\",\"\\u0442\\u043e\\u0432\":\"284\",\"\\u0443\\u0432\\u0430\":\"285\",\"\\u0446\\u0438\\u0430\":\"286\",\"\\u0447\\u0435\\u0441\":\"287\",\"\\u044f \\u0437\":\"288\",\" \\u0432\\u043e\":\"289\",\" \\u0438\\u043b\":\"290\",\" \\u0441\\u043a\":\"291\",\" \\u0442\\u0440\":\"292\",\" \\u0446\\u0435\":\"293\",\"\\u0430\\u043c\\u0438\":\"294\",\"\\u0430\\u0440\\u0438\":\"295\",\"\\u0431\\u0430\\u0442\":\"296\",\"\\u0431\\u0438 \":\"297\",\"\\u0431\\u0440\\u0430\":\"298\",\"\\u0431\\u044a\\u0434\":\"299\"},\"cebuano\":{\"ng \":\"0\",\"sa \":\"1\",\" sa\":\"2\",\"ang\":\"3\",\"ga \":\"4\",\"nga\":\"5\",\" ka\":\"6\",\" ng\":\"7\",\"an \":\"8\",\" an\":\"9\",\" na\":\"10\",\" ma\":\"11\",\" ni\":\"12\",\"a s\":\"13\",\"a n\":\"14\",\"on \":\"15\",\" pa\":\"16\",\" si\":\"17\",\"a k\":\"18\",\"a m\":\"19\",\" ba\":\"20\",\"ong\":\"21\",\"a i\":\"22\",\"ila\":\"23\",\" mg\":\"24\",\"mga\":\"25\",\"a p\":\"26\",\"iya\":\"27\",\"a a\":\"28\",\"ay \":\"29\",\"ka \":\"30\",\"ala\":\"31\",\"ing\":\"32\",\"g m\":\"33\",\"n s\":\"34\",\"g n\":\"35\",\"lan\":\"36\",\" gi\":\"37\",\"na \":\"38\",\"ni \":\"39\",\"o s\":\"40\",\"g p\":\"41\",\"n n\":\"42\",\" da\":\"43\",\"ag \":\"44\",\"pag\":\"45\",\"g s\":\"46\",\"yan\":\"47\",\"ayo\":\"48\",\"o n\":\"49\",\"si \":\"50\",\" mo\":\"51\",\"a b\":\"52\",\"g a\":\"53\",\"ail\":\"54\",\"g b\":\"55\",\"han\":\"56\",\"a d\":\"57\",\"asu\":\"58\",\"nag\":\"59\",\"ya \":\"60\",\"man\":\"61\",\"ne \":\"62\",\"pan\":\"63\",\"kon\":\"64\",\" il\":\"65\",\" la\":\"66\",\"aka\":\"67\",\"ako\":\"68\",\"ana\":\"69\",\"bas\":\"70\",\"ko \":\"71\",\"od \":\"72\",\"yo \":\"73\",\" di\":\"74\",\" ko\":\"75\",\" ug\":\"76\",\"a u\":\"77\",\"g k\":\"78\",\"kan\":\"79\",\"la \":\"80\",\"len\":\"81\",\"sur\":\"82\",\"ug \":\"83\",\" ai\":\"84\",\"apa\":\"85\",\"aw \":\"86\",\"d s\":\"87\",\"g d\":\"88\",\"g g\":\"89\",\"ile\":\"90\",\"nin\":\"91\",\" iy\":\"92\",\" su\":\"93\",\"ene\":\"94\",\"og \":\"95\",\"ot \":\"96\",\"aba\":\"97\",\"aha\":\"98\",\"as \":\"99\",\"imo\":\"100\",\" ki\":\"101\",\"a t\":\"102\",\"aga\":\"103\",\"ban\":\"104\",\"ero\":\"105\",\"nan\":\"106\",\"o k\":\"107\",\"ran\":\"108\",\"ron\":\"109\",\"sil\":\"110\",\"una\":\"111\",\"usa\":\"112\",\" us\":\"113\",\"a g\":\"114\",\"ahi\":\"115\",\"ani\":\"116\",\"er \":\"117\",\"ha \":\"118\",\"i a\":\"119\",\"rer\":\"120\",\"yon\":\"121\",\" pu\":\"122\",\"ini\":\"123\",\"nak\":\"124\",\"ro \":\"125\",\"to \":\"126\",\"ure\":\"127\",\" ed\":\"128\",\" og\":\"129\",\" wa\":\"130\",\"ili\":\"131\",\"mo \":\"132\",\"n a\":\"133\",\"nd \":\"134\",\"o a\":\"135\",\" ad\":\"136\",\" du\":\"137\",\" pr\":\"138\",\"aro\":\"139\",\"i s\":\"140\",\"ma \":\"141\",\"n m\":\"142\",\"ulo\":\"143\",\"und\":\"144\",\" ta\":\"145\",\"ara\":\"146\",\"asa\":\"147\",\"ato\":\"148\",\"awa\":\"149\",\"dmu\":\"150\",\"e n\":\"151\",\"edm\":\"152\",\"ina\":\"153\",\"mak\":\"154\",\"mun\":\"155\",\"niy\":\"156\",\"san\":\"157\",\"wa \":\"158\",\" tu\":\"159\",\" un\":\"160\",\"a l\":\"161\",\"bay\":\"162\",\"iga\":\"163\",\"ika\":\"164\",\"ita\":\"165\",\"kin\":\"166\",\"lis\":\"167\",\"may\":\"168\",\"os \":\"169\",\" ar\":\"170\",\"ad \":\"171\",\"ali\":\"172\",\"ama\":\"173\",\"ers\":\"174\",\"ipa\":\"175\",\"isa\":\"176\",\"mao\":\"177\",\"nim\":\"178\",\"t s\":\"179\",\"tin\":\"180\",\" ak\":\"181\",\" ap\":\"182\",\" hi\":\"183\",\"abo\":\"184\",\"agp\":\"185\",\"ano\":\"186\",\"ata\":\"187\",\"g i\":\"188\",\"gan\":\"189\",\"gka\":\"190\",\"gpa\":\"191\",\"i m\":\"192\",\"iha\":\"193\",\"k s\":\"194\",\"law\":\"195\",\"or \":\"196\",\"rs \":\"197\",\"siy\":\"198\",\"tag\":\"199\",\" al\":\"200\",\" at\":\"201\",\" ha\":\"202\",\" hu\":\"203\",\" im\":\"204\",\"a h\":\"205\",\"bu \":\"206\",\"e s\":\"207\",\"gma\":\"208\",\"kas\":\"209\",\"lag\":\"210\",\"mon\":\"211\",\"nah\":\"212\",\"ngo\":\"213\",\"r s\":\"214\",\"ra \":\"215\",\"sab\":\"216\",\"sam\":\"217\",\"sul\":\"218\",\"uba\":\"219\",\"uha\":\"220\",\" lo\":\"221\",\" re\":\"222\",\"ada\":\"223\",\"aki\":\"224\",\"aya\":\"225\",\"bah\":\"226\",\"ce \":\"227\",\"d n\":\"228\",\"lab\":\"229\",\"pa \":\"230\",\"pak\":\"231\",\"s n\":\"232\",\"s s\":\"233\",\"tan\":\"234\",\"taw\":\"235\",\"te \":\"236\",\"uma\":\"237\",\"ura\":\"238\",\" in\":\"239\",\" lu\":\"240\",\"a c\":\"241\",\"abi\":\"242\",\"at \":\"243\",\"awo\":\"244\",\"bat\":\"245\",\"dal\":\"246\",\"dla\":\"247\",\"ele\":\"248\",\"g t\":\"249\",\"g u\":\"250\",\"gay\":\"251\",\"go \":\"252\",\"hab\":\"253\",\"hin\":\"254\",\"i e\":\"255\",\"i n\":\"256\",\"kab\":\"257\",\"kap\":\"258\",\"lay\":\"259\",\"lin\":\"260\",\"nil\":\"261\",\"pam\":\"262\",\"pas\":\"263\",\"pro\":\"264\",\"pul\":\"265\",\"ta \":\"266\",\"ton\":\"267\",\"uga\":\"268\",\"ugm\":\"269\",\"unt\":\"270\",\" co\":\"271\",\" gu\":\"272\",\" mi\":\"273\",\" pi\":\"274\",\" ti\":\"275\",\"a o\":\"276\",\"abu\":\"277\",\"adl\":\"278\",\"ado\":\"279\",\"agh\":\"280\",\"agk\":\"281\",\"ao \":\"282\",\"art\":\"283\",\"bal\":\"284\",\"cit\":\"285\",\"di \":\"286\",\"dto\":\"287\",\"dun\":\"288\",\"ent\":\"289\",\"g e\":\"290\",\"gon\":\"291\",\"gug\":\"292\",\"ia \":\"293\",\"iba\":\"294\",\"ice\":\"295\",\"in \":\"296\",\"inu\":\"297\",\"it \":\"298\",\"kaa\":\"299\"},\"croatian\":{\"je \":\"0\",\" na\":\"1\",\" pr\":\"2\",\" po\":\"3\",\"na \":\"4\",\" je\":\"5\",\" za\":\"6\",\"ije\":\"7\",\"ne \":\"8\",\" i \":\"9\",\"ti \":\"10\",\"da \":\"11\",\" ko\":\"12\",\" ne\":\"13\",\"li \":\"14\",\" bi\":\"15\",\" da\":\"16\",\" u \":\"17\",\"ma \":\"18\",\"mo \":\"19\",\"a n\":\"20\",\"ih \":\"21\",\"za \":\"22\",\"a s\":\"23\",\"ko \":\"24\",\"i s\":\"25\",\"a p\":\"26\",\"koj\":\"27\",\"pro\":\"28\",\"ju \":\"29\",\"se \":\"30\",\" go\":\"31\",\"ost\":\"32\",\"to \":\"33\",\"va \":\"34\",\" do\":\"35\",\" to\":\"36\",\"e n\":\"37\",\"i p\":\"38\",\" od\":\"39\",\" ra\":\"40\",\"no \":\"41\",\"ako\":\"42\",\"ka \":\"43\",\"ni \":\"44\",\" ka\":\"45\",\" se\":\"46\",\" mo\":\"47\",\" st\":\"48\",\"i n\":\"49\",\"ima\":\"50\",\"ja \":\"51\",\"pri\":\"52\",\"vat\":\"53\",\"sta\":\"54\",\" su\":\"55\",\"ati\":\"56\",\"e p\":\"57\",\"ta \":\"58\",\"tsk\":\"59\",\"e i\":\"60\",\"nij\":\"61\",\" tr\":\"62\",\"cij\":\"63\",\"jen\":\"64\",\"nos\":\"65\",\"o s\":\"66\",\" iz\":\"67\",\"om \":\"68\",\"tro\":\"69\",\"ili\":\"70\",\"iti\":\"71\",\"pos\":\"72\",\" al\":\"73\",\"a i\":\"74\",\"a o\":\"75\",\"e s\":\"76\",\"ija\":\"77\",\"ini\":\"78\",\"pre\":\"79\",\"str\":\"80\",\"la \":\"81\",\"og \":\"82\",\"ovo\":\"83\",\" sv\":\"84\",\"ekt\":\"85\",\"nje\":\"86\",\"o p\":\"87\",\"odi\":\"88\",\"rva\":\"89\",\" ni\":\"90\",\"ali\":\"91\",\"min\":\"92\",\"rij\":\"93\",\"a t\":\"94\",\"a z\":\"95\",\"ats\":\"96\",\"iva\":\"97\",\"o t\":\"98\",\"od \":\"99\",\"oje\":\"100\",\"ra \":\"101\",\" hr\":\"102\",\"a m\":\"103\",\"a u\":\"104\",\"hrv\":\"105\",\"im \":\"106\",\"ke \":\"107\",\"o i\":\"108\",\"ovi\":\"109\",\"red\":\"110\",\"riv\":\"111\",\"te \":\"112\",\"bi \":\"113\",\"e o\":\"114\",\"god\":\"115\",\"i d\":\"116\",\"lek\":\"117\",\"umi\":\"118\",\"zvo\":\"119\",\"din\":\"120\",\"e u\":\"121\",\"ene\":\"122\",\"jed\":\"123\",\"ji \":\"124\",\"lje\":\"125\",\"nog\":\"126\",\"su \":\"127\",\" a \":\"128\",\" el\":\"129\",\" mi\":\"130\",\" o \":\"131\",\"a d\":\"132\",\"alu\":\"133\",\"ele\":\"134\",\"i u\":\"135\",\"izv\":\"136\",\"ktr\":\"137\",\"lum\":\"138\",\"o d\":\"139\",\"ori\":\"140\",\"rad\":\"141\",\"sto\":\"142\",\"a k\":\"143\",\"anj\":\"144\",\"ava\":\"145\",\"e k\":\"146\",\"men\":\"147\",\"nic\":\"148\",\"o j\":\"149\",\"oj \":\"150\",\"ove\":\"151\",\"ski\":\"152\",\"tvr\":\"153\",\"una\":\"154\",\"vor\":\"155\",\" di\":\"156\",\" no\":\"157\",\" s \":\"158\",\" ta\":\"159\",\" tv\":\"160\",\"i i\":\"161\",\"i o\":\"162\",\"kak\":\"163\",\"ro\\u0161\":\"164\",\"sko\":\"165\",\"vod\":\"166\",\" sa\":\"167\",\" \\u0107e\":\"168\",\"a b\":\"169\",\"adi\":\"170\",\"amo\":\"171\",\"eni\":\"172\",\"gov\":\"173\",\"iju\":\"174\",\"ku \":\"175\",\"o n\":\"176\",\"ora\":\"177\",\"rav\":\"178\",\"ruj\":\"179\",\"smo\":\"180\",\"tav\":\"181\",\"tru\":\"182\",\"u p\":\"183\",\"ve \":\"184\",\" in\":\"185\",\" pl\":\"186\",\"aci\":\"187\",\"bit\":\"188\",\"de \":\"189\",\"di\\u0161\":\"190\",\"ema\":\"191\",\"i m\":\"192\",\"ika\":\"193\",\"i\\u0161t\":\"194\",\"jer\":\"195\",\"ki \":\"196\",\"mog\":\"197\",\"nik\":\"198\",\"nov\":\"199\",\"nu \":\"200\",\"oji\":\"201\",\"oli\":\"202\",\"pla\":\"203\",\"pod\":\"204\",\"st \":\"205\",\"sti\":\"206\",\"tra\":\"207\",\"tre\":\"208\",\"vo \":\"209\",\" sm\":\"210\",\" \\u0161t\":\"211\",\"dan\":\"212\",\"e z\":\"213\",\"i t\":\"214\",\"io \":\"215\",\"ist\":\"216\",\"kon\":\"217\",\"lo \":\"218\",\"stv\":\"219\",\"u s\":\"220\",\"uje\":\"221\",\"ust\":\"222\",\"\\u0107e \":\"223\",\"\\u0107i \":\"224\",\"\\u0161to\":\"225\",\" dr\":\"226\",\" im\":\"227\",\" li\":\"228\",\"ada\":\"229\",\"aft\":\"230\",\"ani\":\"231\",\"ao \":\"232\",\"ars\":\"233\",\"ata\":\"234\",\"e t\":\"235\",\"emo\":\"236\",\"i k\":\"237\",\"ine\":\"238\",\"jem\":\"239\",\"kov\":\"240\",\"lik\":\"241\",\"lji\":\"242\",\"mje\":\"243\",\"naf\":\"244\",\"ner\":\"245\",\"nih\":\"246\",\"nja\":\"247\",\"ogo\":\"248\",\"oiz\":\"249\",\"ome\":\"250\",\"pot\":\"251\",\"ran\":\"252\",\"ri \":\"253\",\"roi\":\"254\",\"rtk\":\"255\",\"ska\":\"256\",\"ter\":\"257\",\"u i\":\"258\",\"u o\":\"259\",\"vi \":\"260\",\"vrt\":\"261\",\" me\":\"262\",\" ug\":\"263\",\"ak \":\"264\",\"ama\":\"265\",\"dr\\u017e\":\"266\",\"e e\":\"267\",\"e g\":\"268\",\"e m\":\"269\",\"em \":\"270\",\"eme\":\"271\",\"enj\":\"272\",\"ent\":\"273\",\"er \":\"274\",\"ere\":\"275\",\"erg\":\"276\",\"eur\":\"277\",\"go \":\"278\",\"i b\":\"279\",\"i z\":\"280\",\"jet\":\"281\",\"ksi\":\"282\",\"o u\":\"283\",\"oda\":\"284\",\"ona\":\"285\",\"pra\":\"286\",\"reb\":\"287\",\"rem\":\"288\",\"rop\":\"289\",\"tri\":\"290\",\"\\u017eav\":\"291\",\" ci\":\"292\",\" eu\":\"293\",\" re\":\"294\",\" te\":\"295\",\" uv\":\"296\",\" ve\":\"297\",\"aju\":\"298\",\"an \":\"299\"},\"czech\":{\" pr\":\"0\",\" po\":\"1\",\"n\\u00ed \":\"2\",\"pro\":\"3\",\" na\":\"4\",\"na \":\"5\",\" p\\u0159\":\"6\",\"ch \":\"7\",\" je\":\"8\",\" ne\":\"9\",\"\\u017ee \":\"10\",\" \\u017ee\":\"11\",\" se\":\"12\",\" do\":\"13\",\" ro\":\"14\",\" st\":\"15\",\" v \":\"16\",\" ve\":\"17\",\"p\\u0159e\":\"18\",\"se \":\"19\",\"ho \":\"20\",\"sta\":\"21\",\" to\":\"22\",\" vy\":\"23\",\" za\":\"24\",\"ou \":\"25\",\" a \":\"26\",\"to \":\"27\",\" by\":\"28\",\"la \":\"29\",\"ce \":\"30\",\"e v\":\"31\",\"ist\":\"32\",\"le \":\"33\",\"pod\":\"34\",\"\\u00ed p\":\"35\",\" vl\":\"36\",\"e n\":\"37\",\"e s\":\"38\",\"je \":\"39\",\"k\\u00e9 \":\"40\",\"by \":\"41\",\"em \":\"42\",\"\\u00fdch\":\"43\",\" od\":\"44\",\"ova\":\"45\",\"\\u0159ed\":\"46\",\"dy \":\"47\",\"en\\u00ed\":\"48\",\"kon\":\"49\",\"li \":\"50\",\"n\\u011b \":\"51\",\"str\":\"52\",\" z\\u00e1\":\"53\",\"ve \":\"54\",\" ka\":\"55\",\" sv\":\"56\",\"e p\":\"57\",\"it \":\"58\",\"l\\u00e1d\":\"59\",\"oho\":\"60\",\"rov\":\"61\",\"roz\":\"62\",\"ter\":\"63\",\"vl\\u00e1\":\"64\",\"\\u00edm \":\"65\",\" ko\":\"66\",\"hod\":\"67\",\"nis\":\"68\",\"p\\u0159\\u00ed\":\"69\",\"sk\\u00fd\":\"70\",\" mi\":\"71\",\" ob\":\"72\",\" so\":\"73\",\"a p\":\"74\",\"ali\":\"75\",\"bud\":\"76\",\"edn\":\"77\",\"ick\":\"78\",\"kte\":\"79\",\"ku \":\"80\",\"o s\":\"81\",\"al \":\"82\",\"ci \":\"83\",\"e t\":\"84\",\"il \":\"85\",\"ny \":\"86\",\"n\\u00e9 \":\"87\",\"odl\":\"88\",\"ov\\u00e1\":\"89\",\"rot\":\"90\",\"sou\":\"91\",\"\\u00e1n\\u00ed\":\"92\",\" bu\":\"93\",\" mo\":\"94\",\" o \":\"95\",\"ast\":\"96\",\"byl\":\"97\",\"de \":\"98\",\"ek \":\"99\",\"ost\":\"100\",\" m\\u00ed\":\"101\",\" ta\":\"102\",\"es \":\"103\",\"jed\":\"104\",\"ky \":\"105\",\"las\":\"106\",\"m p\":\"107\",\"nes\":\"108\",\"n\\u00edm\":\"109\",\"ran\":\"110\",\"rem\":\"111\",\"ros\":\"112\",\"\\u00e9ho\":\"113\",\" de\":\"114\",\" kt\":\"115\",\" ni\":\"116\",\" si\":\"117\",\" v\\u00fd\":\"118\",\"at \":\"119\",\"j\\u00ed \":\"120\",\"k\\u00fd \":\"121\",\"mi \":\"122\",\"pre\":\"123\",\"tak\":\"124\",\"tan\":\"125\",\"y v\":\"126\",\"\\u0159ek\":\"127\",\" ch\":\"128\",\" li\":\"129\",\" n\\u00e1\":\"130\",\" pa\":\"131\",\" \\u0159e\":\"132\",\"da \":\"133\",\"dle\":\"134\",\"dne\":\"135\",\"i p\":\"136\",\"i v\":\"137\",\"ly \":\"138\",\"min\":\"139\",\"o n\":\"140\",\"o v\":\"141\",\"pol\":\"142\",\"tra\":\"143\",\"val\":\"144\",\"vn\\u00ed\":\"145\",\"\\u00edch\":\"146\",\"\\u00fd p\":\"147\",\"\\u0159ej\":\"148\",\" ce\":\"149\",\" kd\":\"150\",\" le\":\"151\",\"a s\":\"152\",\"a z\":\"153\",\"cen\":\"154\",\"e k\":\"155\",\"eds\":\"156\",\"ekl\":\"157\",\"emi\":\"158\",\"kl \":\"159\",\"lat\":\"160\",\"lo \":\"161\",\"mi\\u00e9\":\"162\",\"nov\":\"163\",\"pra\":\"164\",\"sku\":\"165\",\"sk\\u00e9\":\"166\",\"sti\":\"167\",\"tav\":\"168\",\"ti \":\"169\",\"ty \":\"170\",\"v\\u00e1n\":\"171\",\"v\\u00e9 \":\"172\",\"y n\":\"173\",\"y s\":\"174\",\"\\u00ed s\":\"175\",\"\\u00ed v\":\"176\",\"\\u011b p\":\"177\",\" dn\":\"178\",\" n\\u011b\":\"179\",\" sp\":\"180\",\" \\u010ds\":\"181\",\"a n\":\"182\",\"a t\":\"183\",\"ak \":\"184\",\"dn\\u00ed\":\"185\",\"doh\":\"186\",\"e b\":\"187\",\"e m\":\"188\",\"ejn\":\"189\",\"ena\":\"190\",\"est\":\"191\",\"ini\":\"192\",\"m z\":\"193\",\"nal\":\"194\",\"nou\":\"195\",\"n\\u00e1 \":\"196\",\"ovi\":\"197\",\"ov\\u00e9\":\"198\",\"ov\\u00fd\":\"199\",\"rsk\":\"200\",\"st\\u00e1\":\"201\",\"t\\u00ed \":\"202\",\"t\\u0159e\":\"203\",\"t\\u016f \":\"204\",\"ude\":\"205\",\"za \":\"206\",\"\\u00e9 p\":\"207\",\"\\u00e9m \":\"208\",\"\\u00ed d\":\"209\",\" ir\":\"210\",\" zv\":\"211\",\"ale\":\"212\",\"an\\u011b\":\"213\",\"ave\":\"214\",\"ck\\u00e9\":\"215\",\"den\":\"216\",\"e z\":\"217\",\"ech\":\"218\",\"en \":\"219\",\"er\\u00fd\":\"220\",\"hla\":\"221\",\"i s\":\"222\",\"i\\u00e9r\":\"223\",\"lov\":\"224\",\"mu \":\"225\",\"neb\":\"226\",\"nic\":\"227\",\"o b\":\"228\",\"o m\":\"229\",\"pad\":\"230\",\"pot\":\"231\",\"rav\":\"232\",\"rop\":\"233\",\"r\\u00fd \":\"234\",\"sed\":\"235\",\"si \":\"236\",\"t p\":\"237\",\"tic\":\"238\",\"tu \":\"239\",\"t\\u011b \":\"240\",\"u p\":\"241\",\"u v\":\"242\",\"v\\u00e1 \":\"243\",\"v\\u00fd\\u0161\":\"244\",\"zv\\u00fd\":\"245\",\"\\u010dn\\u00ed\":\"246\",\"\\u0159\\u00ed \":\"247\",\"\\u016fm \":\"248\",\" bl\":\"249\",\" br\":\"250\",\" ho\":\"251\",\" ja\":\"252\",\" re\":\"253\",\" s \":\"254\",\" z \":\"255\",\" zd\":\"256\",\"a v\":\"257\",\"ani\":\"258\",\"ato\":\"259\",\"bla\":\"260\",\"bri\":\"261\",\"e\\u010dn\":\"262\",\"e\\u0159e\":\"263\",\"h v\":\"264\",\"i n\":\"265\",\"ie \":\"266\",\"ila\":\"267\",\"irs\":\"268\",\"ite\":\"269\",\"kov\":\"270\",\"nos\":\"271\",\"o o\":\"272\",\"o p\":\"273\",\"oce\":\"274\",\"ody\":\"275\",\"ohl\":\"276\",\"oli\":\"277\",\"ovo\":\"278\",\"pla\":\"279\",\"po\\u010d\":\"280\",\"pr\\u00e1\":\"281\",\"ra \":\"282\",\"rit\":\"283\",\"rod\":\"284\",\"ry \":\"285\",\"sd \":\"286\",\"sko\":\"287\",\"ssd\":\"288\",\"tel\":\"289\",\"u s\":\"290\",\"vat\":\"291\",\"ve\\u0159\":\"292\",\"vit\":\"293\",\"vla\":\"294\",\"y p\":\"295\",\"\\u00e1ln\":\"296\",\"\\u010dss\":\"297\",\"\\u0161en\":\"298\",\" al\":\"299\"},\"danish\":{\"er \":\"0\",\"en \":\"1\",\" de\":\"2\",\"et \":\"3\",\"der\":\"4\",\"de \":\"5\",\"for\":\"6\",\" fo\":\"7\",\" i \":\"8\",\"at \":\"9\",\" at\":\"10\",\"re \":\"11\",\"det\":\"12\",\" ha\":\"13\",\"nde\":\"14\",\"ere\":\"15\",\"ing\":\"16\",\"den\":\"17\",\" me\":\"18\",\" og\":\"19\",\"ger\":\"20\",\"ter\":\"21\",\" er\":\"22\",\" si\":\"23\",\"and\":\"24\",\" af\":\"25\",\"or \":\"26\",\" st\":\"27\",\" ti\":\"28\",\" en\":\"29\",\"og \":\"30\",\"ar \":\"31\",\"il \":\"32\",\"r s\":\"33\",\"ige\":\"34\",\"til\":\"35\",\"ke \":\"36\",\"r e\":\"37\",\"af \":\"38\",\"kke\":\"39\",\" ma\":\"40\",\" p\\u00e5\":\"41\",\"om \":\"42\",\"p\\u00e5 \":\"43\",\"ed \":\"44\",\"ge \":\"45\",\"end\":\"46\",\"nge\":\"47\",\"t s\":\"48\",\"e s\":\"49\",\"ler\":\"50\",\" sk\":\"51\",\"els\":\"52\",\"ern\":\"53\",\"sig\":\"54\",\"ne \":\"55\",\"lig\":\"56\",\"r d\":\"57\",\"ska\":\"58\",\" vi\":\"59\",\"har\":\"60\",\" be\":\"61\",\" se\":\"62\",\"an \":\"63\",\"ikk\":\"64\",\"lle\":\"65\",\"gen\":\"66\",\"n f\":\"67\",\"ste\":\"68\",\"t a\":\"69\",\"t d\":\"70\",\"rin\":\"71\",\" ik\":\"72\",\"es \":\"73\",\"ng \":\"74\",\"ver\":\"75\",\"r b\":\"76\",\"sen\":\"77\",\"ede\":\"78\",\"men\":\"79\",\"r i\":\"80\",\" he\":\"81\",\" et\":\"82\",\"ig \":\"83\",\"lan\":\"84\",\"med\":\"85\",\"nd \":\"86\",\"rne\":\"87\",\" da\":\"88\",\" in\":\"89\",\"e t\":\"90\",\"mme\":\"91\",\"und\":\"92\",\" om\":\"93\",\"e e\":\"94\",\"e m\":\"95\",\"her\":\"96\",\"le \":\"97\",\"r f\":\"98\",\"t f\":\"99\",\"s\\u00e5 \":\"100\",\"te \":\"101\",\" so\":\"102\",\"ele\":\"103\",\"t e\":\"104\",\" ko\":\"105\",\"est\":\"106\",\"ske\":\"107\",\" bl\":\"108\",\"e f\":\"109\",\"ekt\":\"110\",\"mar\":\"111\",\"bru\":\"112\",\"e a\":\"113\",\"el \":\"114\",\"ers\":\"115\",\"ret\":\"116\",\"som\":\"117\",\"tte\":\"118\",\"ve \":\"119\",\" la\":\"120\",\" ud\":\"121\",\" ve\":\"122\",\"age\":\"123\",\"e d\":\"124\",\"e h\":\"125\",\"lse\":\"126\",\"man\":\"127\",\"rug\":\"128\",\"sel\":\"129\",\"ser\":\"130\",\" fi\":\"131\",\" op\":\"132\",\" pr\":\"133\",\"dt \":\"134\",\"e i\":\"135\",\"n m\":\"136\",\"r m\":\"137\",\" an\":\"138\",\" re\":\"139\",\" sa\":\"140\",\"ion\":\"141\",\"ner\":\"142\",\"res\":\"143\",\"t i\":\"144\",\"get\":\"145\",\"n s\":\"146\",\"one\":\"147\",\"orb\":\"148\",\"t h\":\"149\",\"vis\":\"150\",\"\\u00e5r \":\"151\",\" fr\":\"152\",\"bil\":\"153\",\"e k\":\"154\",\"ens\":\"155\",\"ind\":\"156\",\"omm\":\"157\",\"t m\":\"158\",\" hv\":\"159\",\" je\":\"160\",\"dan\":\"161\",\"ent\":\"162\",\"fte\":\"163\",\"nin\":\"164\",\" mi\":\"165\",\"e o\":\"166\",\"e p\":\"167\",\"n o\":\"168\",\"nte\":\"169\",\" ku\":\"170\",\"ell\":\"171\",\"nas\":\"172\",\"ore\":\"173\",\"r h\":\"174\",\"r k\":\"175\",\"sta\":\"176\",\"sto\":\"177\",\"dag\":\"178\",\"eri\":\"179\",\"kun\":\"180\",\"lde\":\"181\",\"mer\":\"182\",\"r a\":\"183\",\"r v\":\"184\",\"rek\":\"185\",\"rer\":\"186\",\"t o\":\"187\",\"tor\":\"188\",\"t\\u00f8r\":\"189\",\" f\\u00e5\":\"190\",\" m\\u00e5\":\"191\",\" to\":\"192\",\"boe\":\"193\",\"che\":\"194\",\"e v\":\"195\",\"i d\":\"196\",\"ive\":\"197\",\"kab\":\"198\",\"ns \":\"199\",\"oel\":\"200\",\"se \":\"201\",\"t v\":\"202\",\" al\":\"203\",\" bo\":\"204\",\" un\":\"205\",\"ans\":\"206\",\"dre\":\"207\",\"ire\":\"208\",\"k\\u00f8b\":\"209\",\"ors\":\"210\",\"ove\":\"211\",\"ren\":\"212\",\"t b\":\"213\",\"\\u00f8r \":\"214\",\" ka\":\"215\",\"ald\":\"216\",\"bet\":\"217\",\"gt \":\"218\",\"isk\":\"219\",\"kal\":\"220\",\"kom\":\"221\",\"lev\":\"222\",\"n d\":\"223\",\"n i\":\"224\",\"pri\":\"225\",\"r p\":\"226\",\"rbr\":\"227\",\"s\\u00f8g\":\"228\",\"tel\":\"229\",\" s\\u00e5\":\"230\",\" te\":\"231\",\" va\":\"232\",\"al \":\"233\",\"dir\":\"234\",\"eje\":\"235\",\"fis\":\"236\",\"gs\\u00e5\":\"237\",\"isc\":\"238\",\"jer\":\"239\",\"ker\":\"240\",\"ogs\":\"241\",\"sch\":\"242\",\"st \":\"243\",\"t k\":\"244\",\"uge\":\"245\",\" di\":\"246\",\"ag \":\"247\",\"d a\":\"248\",\"g i\":\"249\",\"ill\":\"250\",\"l a\":\"251\",\"lsk\":\"252\",\"n a\":\"253\",\"on \":\"254\",\"sam\":\"255\",\"str\":\"256\",\"tet\":\"257\",\"var\":\"258\",\" mo\":\"259\",\"art\":\"260\",\"ash\":\"261\",\"att\":\"262\",\"e b\":\"263\",\"han\":\"264\",\"hav\":\"265\",\"kla\":\"266\",\"kon\":\"267\",\"n t\":\"268\",\"ned\":\"269\",\"r o\":\"270\",\"ra \":\"271\",\"rre\":\"272\",\"ves\":\"273\",\"vil\":\"274\",\" el\":\"275\",\" kr\":\"276\",\" ov\":\"277\",\"ann\":\"278\",\"e u\":\"279\",\"ess\":\"280\",\"fra\":\"281\",\"g a\":\"282\",\"g d\":\"283\",\"int\":\"284\",\"ngs\":\"285\",\"rde\":\"286\",\"tra\":\"287\",\" \\u00e5r\":\"288\",\"akt\":\"289\",\"asi\":\"290\",\"em \":\"291\",\"gel\":\"292\",\"gym\":\"293\",\"hol\":\"294\",\"kan\":\"295\",\"mna\":\"296\",\"n h\":\"297\",\"nsk\":\"298\",\"old\":\"299\"},\"dutch\":{\"en \":\"0\",\"de \":\"1\",\" de\":\"2\",\"et \":\"3\",\"an \":\"4\",\" he\":\"5\",\"er \":\"6\",\" va\":\"7\",\"n d\":\"8\",\"van\":\"9\",\"een\":\"10\",\"het\":\"11\",\" ge\":\"12\",\"oor\":\"13\",\" ee\":\"14\",\"der\":\"15\",\" en\":\"16\",\"ij \":\"17\",\"aar\":\"18\",\"gen\":\"19\",\"te \":\"20\",\"ver\":\"21\",\" in\":\"22\",\" me\":\"23\",\"aan\":\"24\",\"den\":\"25\",\" we\":\"26\",\"at \":\"27\",\"in \":\"28\",\" da\":\"29\",\" te\":\"30\",\"eer\":\"31\",\"nde\":\"32\",\"ter\":\"33\",\"ste\":\"34\",\"n v\":\"35\",\" vo\":\"36\",\" zi\":\"37\",\"ing\":\"38\",\"n h\":\"39\",\"voo\":\"40\",\"is \":\"41\",\" op\":\"42\",\"tie\":\"43\",\" aa\":\"44\",\"ede\":\"45\",\"erd\":\"46\",\"ers\":\"47\",\" be\":\"48\",\"eme\":\"49\",\"ten\":\"50\",\"ken\":\"51\",\"n e\":\"52\",\" ni\":\"53\",\" ve\":\"54\",\"ent\":\"55\",\"ijn\":\"56\",\"jn \":\"57\",\"mee\":\"58\",\"iet\":\"59\",\"n w\":\"60\",\"ng \":\"61\",\"nie\":\"62\",\" is\":\"63\",\"cht\":\"64\",\"dat\":\"65\",\"ere\":\"66\",\"ie \":\"67\",\"ijk\":\"68\",\"n b\":\"69\",\"rde\":\"70\",\"ar \":\"71\",\"e b\":\"72\",\"e a\":\"73\",\"met\":\"74\",\"t d\":\"75\",\"el \":\"76\",\"ond\":\"77\",\"t h\":\"78\",\" al\":\"79\",\"e w\":\"80\",\"op \":\"81\",\"ren\":\"82\",\" di\":\"83\",\" on\":\"84\",\"al \":\"85\",\"and\":\"86\",\"bij\":\"87\",\"zij\":\"88\",\" bi\":\"89\",\" hi\":\"90\",\" wi\":\"91\",\"or \":\"92\",\"r d\":\"93\",\"t v\":\"94\",\" wa\":\"95\",\"e h\":\"96\",\"lle\":\"97\",\"rt \":\"98\",\"ang\":\"99\",\"hij\":\"100\",\"men\":\"101\",\"n a\":\"102\",\"n z\":\"103\",\"rs \":\"104\",\" om\":\"105\",\"e o\":\"106\",\"e v\":\"107\",\"end\":\"108\",\"est\":\"109\",\"n t\":\"110\",\"par\":\"111\",\" pa\":\"112\",\" pr\":\"113\",\" ze\":\"114\",\"e g\":\"115\",\"e p\":\"116\",\"n p\":\"117\",\"ord\":\"118\",\"oud\":\"119\",\"raa\":\"120\",\"sch\":\"121\",\"t e\":\"122\",\"ege\":\"123\",\"ich\":\"124\",\"ien\":\"125\",\"aat\":\"126\",\"ek \":\"127\",\"len\":\"128\",\"n m\":\"129\",\"nge\":\"130\",\"nt \":\"131\",\"ove\":\"132\",\"rd \":\"133\",\"wer\":\"134\",\" ma\":\"135\",\" mi\":\"136\",\"daa\":\"137\",\"e k\":\"138\",\"lij\":\"139\",\"mer\":\"140\",\"n g\":\"141\",\"n o\":\"142\",\"om \":\"143\",\"sen\":\"144\",\"t b\":\"145\",\"wij\":\"146\",\" ho\":\"147\",\"e m\":\"148\",\"ele\":\"149\",\"gem\":\"150\",\"heb\":\"151\",\"pen\":\"152\",\"ude\":\"153\",\" bo\":\"154\",\" ja\":\"155\",\"die\":\"156\",\"e e\":\"157\",\"eli\":\"158\",\"erk\":\"159\",\"le \":\"160\",\"pro\":\"161\",\"rij\":\"162\",\" er\":\"163\",\" za\":\"164\",\"e d\":\"165\",\"ens\":\"166\",\"ind\":\"167\",\"ke \":\"168\",\"n k\":\"169\",\"nd \":\"170\",\"nen\":\"171\",\"nte\":\"172\",\"r h\":\"173\",\"s d\":\"174\",\"s e\":\"175\",\"t z\":\"176\",\" b \":\"177\",\" co\":\"178\",\" ik\":\"179\",\" ko\":\"180\",\" ov\":\"181\",\"eke\":\"182\",\"hou\":\"183\",\"ik \":\"184\",\"iti\":\"185\",\"lan\":\"186\",\"ns \":\"187\",\"t g\":\"188\",\"t m\":\"189\",\" do\":\"190\",\" le\":\"191\",\" zo\":\"192\",\"ams\":\"193\",\"e z\":\"194\",\"g v\":\"195\",\"it \":\"196\",\"je \":\"197\",\"ls \":\"198\",\"maa\":\"199\",\"n i\":\"200\",\"nke\":\"201\",\"rke\":\"202\",\"uit\":\"203\",\" ha\":\"204\",\" ka\":\"205\",\" mo\":\"206\",\" re\":\"207\",\" st\":\"208\",\" to\":\"209\",\"age\":\"210\",\"als\":\"211\",\"ark\":\"212\",\"art\":\"213\",\"ben\":\"214\",\"e r\":\"215\",\"e s\":\"216\",\"ert\":\"217\",\"eze\":\"218\",\"ht \":\"219\",\"ijd\":\"220\",\"lem\":\"221\",\"r v\":\"222\",\"rte\":\"223\",\"t p\":\"224\",\"zeg\":\"225\",\"zic\":\"226\",\"aak\":\"227\",\"aal\":\"228\",\"ag \":\"229\",\"ale\":\"230\",\"bbe\":\"231\",\"ch \":\"232\",\"e t\":\"233\",\"ebb\":\"234\",\"erz\":\"235\",\"ft \":\"236\",\"ge \":\"237\",\"led\":\"238\",\"mst\":\"239\",\"n n\":\"240\",\"oek\":\"241\",\"r i\":\"242\",\"t o\":\"243\",\"t w\":\"244\",\"tel\":\"245\",\"tte\":\"246\",\"uur\":\"247\",\"we \":\"248\",\"zit\":\"249\",\" af\":\"250\",\" li\":\"251\",\" ui\":\"252\",\"ak \":\"253\",\"all\":\"254\",\"aut\":\"255\",\"doo\":\"256\",\"e i\":\"257\",\"ene\":\"258\",\"erg\":\"259\",\"ete\":\"260\",\"ges\":\"261\",\"hee\":\"262\",\"jaa\":\"263\",\"jke\":\"264\",\"kee\":\"265\",\"kel\":\"266\",\"kom\":\"267\",\"lee\":\"268\",\"moe\":\"269\",\"n s\":\"270\",\"ort\":\"271\",\"rec\":\"272\",\"s o\":\"273\",\"s v\":\"274\",\"teg\":\"275\",\"tij\":\"276\",\"ven\":\"277\",\"waa\":\"278\",\"wel\":\"279\",\" an\":\"280\",\" au\":\"281\",\" bu\":\"282\",\" gr\":\"283\",\" pl\":\"284\",\" ti\":\"285\",\"'' \":\"286\",\"ade\":\"287\",\"dag\":\"288\",\"e l\":\"289\",\"ech\":\"290\",\"eel\":\"291\",\"eft\":\"292\",\"ger\":\"293\",\"gt \":\"294\",\"ig \":\"295\",\"itt\":\"296\",\"j d\":\"297\",\"ppe\":\"298\",\"rda\":\"299\"},\"english\":{\" th\":\"0\",\"the\":\"1\",\"he \":\"2\",\"ed \":\"3\",\" to\":\"4\",\" in\":\"5\",\"er \":\"6\",\"ing\":\"7\",\"ng \":\"8\",\" an\":\"9\",\"nd \":\"10\",\" of\":\"11\",\"and\":\"12\",\"to \":\"13\",\"of \":\"14\",\" co\":\"15\",\"at \":\"16\",\"on \":\"17\",\"in \":\"18\",\" a \":\"19\",\"d t\":\"20\",\" he\":\"21\",\"e t\":\"22\",\"ion\":\"23\",\"es \":\"24\",\" re\":\"25\",\"re \":\"26\",\"hat\":\"27\",\" sa\":\"28\",\" st\":\"29\",\" ha\":\"30\",\"her\":\"31\",\"tha\":\"32\",\"tio\":\"33\",\"or \":\"34\",\" ''\":\"35\",\"en \":\"36\",\" wh\":\"37\",\"e s\":\"38\",\"ent\":\"39\",\"n t\":\"40\",\"s a\":\"41\",\"as \":\"42\",\"for\":\"43\",\"is \":\"44\",\"t t\":\"45\",\" be\":\"46\",\"ld \":\"47\",\"e a\":\"48\",\"rs \":\"49\",\" wa\":\"50\",\"ut \":\"51\",\"ve \":\"52\",\"ll \":\"53\",\"al \":\"54\",\" ma\":\"55\",\"e i\":\"56\",\" fo\":\"57\",\"'s \":\"58\",\"an \":\"59\",\"est\":\"60\",\" hi\":\"61\",\" mo\":\"62\",\" se\":\"63\",\" pr\":\"64\",\"s t\":\"65\",\"ate\":\"66\",\"st \":\"67\",\"ter\":\"68\",\"ere\":\"69\",\"ted\":\"70\",\"nt \":\"71\",\"ver\":\"72\",\"d a\":\"73\",\" wi\":\"74\",\"se \":\"75\",\"e c\":\"76\",\"ect\":\"77\",\"ns \":\"78\",\" on\":\"79\",\"ly \":\"80\",\"tol\":\"81\",\"ey \":\"82\",\"r t\":\"83\",\" ca\":\"84\",\"ati\":\"85\",\"ts \":\"86\",\"all\":\"87\",\" no\":\"88\",\"his\":\"89\",\"s o\":\"90\",\"ers\":\"91\",\"con\":\"92\",\"e o\":\"93\",\"ear\":\"94\",\"f t\":\"95\",\"e w\":\"96\",\"was\":\"97\",\"ons\":\"98\",\"sta\":\"99\",\"'' \":\"100\",\"sti\":\"101\",\"n a\":\"102\",\"sto\":\"103\",\"t h\":\"104\",\" we\":\"105\",\"id \":\"106\",\"th \":\"107\",\" it\":\"108\",\"ce \":\"109\",\" di\":\"110\",\"ave\":\"111\",\"d h\":\"112\",\"cou\":\"113\",\"pro\":\"114\",\"ad \":\"115\",\"oll\":\"116\",\"ry \":\"117\",\"d s\":\"118\",\"e m\":\"119\",\" so\":\"120\",\"ill\":\"121\",\"cti\":\"122\",\"te \":\"123\",\"tor\":\"124\",\"eve\":\"125\",\"g t\":\"126\",\"it \":\"127\",\" ch\":\"128\",\" de\":\"129\",\"hav\":\"130\",\"oul\":\"131\",\"ty \":\"132\",\"uld\":\"133\",\"use\":\"134\",\" al\":\"135\",\"are\":\"136\",\"ch \":\"137\",\"me \":\"138\",\"out\":\"139\",\"ove\":\"140\",\"wit\":\"141\",\"ys \":\"142\",\"chi\":\"143\",\"t a\":\"144\",\"ith\":\"145\",\"oth\":\"146\",\" ab\":\"147\",\" te\":\"148\",\" wo\":\"149\",\"s s\":\"150\",\"res\":\"151\",\"t w\":\"152\",\"tin\":\"153\",\"e b\":\"154\",\"e h\":\"155\",\"nce\":\"156\",\"t s\":\"157\",\"y t\":\"158\",\"e p\":\"159\",\"ele\":\"160\",\"hin\":\"161\",\"s i\":\"162\",\"nte\":\"163\",\" li\":\"164\",\"le \":\"165\",\" do\":\"166\",\"aid\":\"167\",\"hey\":\"168\",\"ne \":\"169\",\"s w\":\"170\",\" as\":\"171\",\" fr\":\"172\",\" tr\":\"173\",\"end\":\"174\",\"sai\":\"175\",\" el\":\"176\",\" ne\":\"177\",\" su\":\"178\",\"'t \":\"179\",\"ay \":\"180\",\"hou\":\"181\",\"ive\":\"182\",\"lec\":\"183\",\"n't\":\"184\",\" ye\":\"185\",\"but\":\"186\",\"d o\":\"187\",\"o t\":\"188\",\"y o\":\"189\",\" ho\":\"190\",\" me\":\"191\",\"be \":\"192\",\"cal\":\"193\",\"e e\":\"194\",\"had\":\"195\",\"ple\":\"196\",\" at\":\"197\",\" bu\":\"198\",\" la\":\"199\",\"d b\":\"200\",\"s h\":\"201\",\"say\":\"202\",\"t i\":\"203\",\" ar\":\"204\",\"e f\":\"205\",\"ght\":\"206\",\"hil\":\"207\",\"igh\":\"208\",\"int\":\"209\",\"not\":\"210\",\"ren\":\"211\",\" is\":\"212\",\" pa\":\"213\",\" sh\":\"214\",\"ays\":\"215\",\"com\":\"216\",\"n s\":\"217\",\"r a\":\"218\",\"rin\":\"219\",\"y a\":\"220\",\" un\":\"221\",\"n c\":\"222\",\"om \":\"223\",\"thi\":\"224\",\" mi\":\"225\",\"by \":\"226\",\"d i\":\"227\",\"e d\":\"228\",\"e n\":\"229\",\"t o\":\"230\",\" by\":\"231\",\"e r\":\"232\",\"eri\":\"233\",\"old\":\"234\",\"ome\":\"235\",\"whe\":\"236\",\"yea\":\"237\",\" gr\":\"238\",\"ar \":\"239\",\"ity\":\"240\",\"mpl\":\"241\",\"oun\":\"242\",\"one\":\"243\",\"ow \":\"244\",\"r s\":\"245\",\"s f\":\"246\",\"tat\":\"247\",\" ba\":\"248\",\" vo\":\"249\",\"bou\":\"250\",\"sam\":\"251\",\"tim\":\"252\",\"vot\":\"253\",\"abo\":\"254\",\"ant\":\"255\",\"ds \":\"256\",\"ial\":\"257\",\"ine\":\"258\",\"man\":\"259\",\"men\":\"260\",\" or\":\"261\",\" po\":\"262\",\"amp\":\"263\",\"can\":\"264\",\"der\":\"265\",\"e l\":\"266\",\"les\":\"267\",\"ny \":\"268\",\"ot \":\"269\",\"rec\":\"270\",\"tes\":\"271\",\"tho\":\"272\",\"ica\":\"273\",\"ild\":\"274\",\"ir \":\"275\",\"nde\":\"276\",\"ose\":\"277\",\"ous\":\"278\",\"pre\":\"279\",\"ste\":\"280\",\"era\":\"281\",\"per\":\"282\",\"r o\":\"283\",\"red\":\"284\",\"rie\":\"285\",\" bo\":\"286\",\" le\":\"287\",\"ali\":\"288\",\"ars\":\"289\",\"ore\":\"290\",\"ric\":\"291\",\"s m\":\"292\",\"str\":\"293\",\" fa\":\"294\",\"ess\":\"295\",\"ie \":\"296\",\"ist\":\"297\",\"lat\":\"298\",\"uri\":\"299\"},\"estonian\":{\"st \":\"0\",\" ka\":\"1\",\"on \":\"2\",\"ja \":\"3\",\" va\":\"4\",\" on\":\"5\",\" ja\":\"6\",\" ko\":\"7\",\"se \":\"8\",\"ast\":\"9\",\"le \":\"10\",\"es \":\"11\",\"as \":\"12\",\"is \":\"13\",\"ud \":\"14\",\" sa\":\"15\",\"da \":\"16\",\"ga \":\"17\",\" ta\":\"18\",\"aja\":\"19\",\"sta\":\"20\",\" ku\":\"21\",\" pe\":\"22\",\"a k\":\"23\",\"est\":\"24\",\"ist\":\"25\",\"ks \":\"26\",\"ta \":\"27\",\"al \":\"28\",\"ava\":\"29\",\"id \":\"30\",\"saa\":\"31\",\"mis\":\"32\",\"te \":\"33\",\"val\":\"34\",\" et\":\"35\",\"nud\":\"36\",\" te\":\"37\",\"inn\":\"38\",\" se\":\"39\",\" tu\":\"40\",\"a v\":\"41\",\"alu\":\"42\",\"e k\":\"43\",\"ise\":\"44\",\"lu \":\"45\",\"ma \":\"46\",\"mes\":\"47\",\" mi\":\"48\",\"et \":\"49\",\"iku\":\"50\",\"lin\":\"51\",\"ad \":\"52\",\"el \":\"53\",\"ime\":\"54\",\"ne \":\"55\",\"nna\":\"56\",\" ha\":\"57\",\" in\":\"58\",\" ke\":\"59\",\" v\\u00f5\":\"60\",\"a s\":\"61\",\"a t\":\"62\",\"ab \":\"63\",\"e s\":\"64\",\"esi\":\"65\",\" la\":\"66\",\" li\":\"67\",\"e v\":\"68\",\"eks\":\"69\",\"ema\":\"70\",\"las\":\"71\",\"les\":\"72\",\"rju\":\"73\",\"tle\":\"74\",\"tsi\":\"75\",\"tus\":\"76\",\"upa\":\"77\",\"use\":\"78\",\"ust\":\"79\",\"var\":\"80\",\" l\\u00e4\":\"81\",\"ali\":\"82\",\"arj\":\"83\",\"de \":\"84\",\"ete\":\"85\",\"i t\":\"86\",\"iga\":\"87\",\"ilm\":\"88\",\"kui\":\"89\",\"li \":\"90\",\"tul\":\"91\",\" ei\":\"92\",\" me\":\"93\",\" s\\u00f5\":\"94\",\"aal\":\"95\",\"ata\":\"96\",\"dus\":\"97\",\"ei \":\"98\",\"nik\":\"99\",\"pea\":\"100\",\"s k\":\"101\",\"s o\":\"102\",\"sal\":\"103\",\"s\\u00f5n\":\"104\",\"ter\":\"105\",\"ul \":\"106\",\"v\\u00f5i\":\"107\",\" el\":\"108\",\" ne\":\"109\",\"a j\":\"110\",\"ate\":\"111\",\"end\":\"112\",\"i k\":\"113\",\"ita\":\"114\",\"kar\":\"115\",\"kor\":\"116\",\"l o\":\"117\",\"lt \":\"118\",\"maa\":\"119\",\"oli\":\"120\",\"sti\":\"121\",\"vad\":\"122\",\"\\u00e4\\u00e4n\":\"123\",\" ju\":\"124\",\" j\\u00e4\":\"125\",\" k\\u00fc\":\"126\",\" ma\":\"127\",\" po\":\"128\",\" \\u00fct\":\"129\",\"aas\":\"130\",\"aks\":\"131\",\"at \":\"132\",\"ed \":\"133\",\"eri\":\"134\",\"hoi\":\"135\",\"i s\":\"136\",\"ka \":\"137\",\"la \":\"138\",\"nni\":\"139\",\"oid\":\"140\",\"pai\":\"141\",\"rit\":\"142\",\"us \":\"143\",\"\\u00fctl\":\"144\",\" aa\":\"145\",\" lo\":\"146\",\" to\":\"147\",\" ve\":\"148\",\"a e\":\"149\",\"ada\":\"150\",\"aid\":\"151\",\"ami\":\"152\",\"and\":\"153\",\"dla\":\"154\",\"e j\":\"155\",\"ega\":\"156\",\"gi \":\"157\",\"gu \":\"158\",\"i p\":\"159\",\"idl\":\"160\",\"ik \":\"161\",\"ini\":\"162\",\"jup\":\"163\",\"kal\":\"164\",\"kas\":\"165\",\"kes\":\"166\",\"koh\":\"167\",\"s e\":\"168\",\"s p\":\"169\",\"sel\":\"170\",\"sse\":\"171\",\"ui \":\"172\",\" pi\":\"173\",\" si\":\"174\",\"aru\":\"175\",\"eda\":\"176\",\"eva\":\"177\",\"fil\":\"178\",\"i v\":\"179\",\"ida\":\"180\",\"ing\":\"181\",\"l\\u00e4\\u00e4\":\"182\",\"me \":\"183\",\"na \":\"184\",\"nda\":\"185\",\"nim\":\"186\",\"ole\":\"187\",\"ots\":\"188\",\"ris\":\"189\",\"s l\":\"190\",\"sia\":\"191\",\"t p\":\"192\",\" en\":\"193\",\" mu\":\"194\",\" ol\":\"195\",\" p\\u00f5\":\"196\",\" su\":\"197\",\" v\\u00e4\":\"198\",\" \\u00fch\":\"199\",\"a l\":\"200\",\"a p\":\"201\",\"aga\":\"202\",\"ale\":\"203\",\"aps\":\"204\",\"arv\":\"205\",\"e a\":\"206\",\"ela\":\"207\",\"ika\":\"208\",\"lle\":\"209\",\"loo\":\"210\",\"mal\":\"211\",\"pet\":\"212\",\"t k\":\"213\",\"tee\":\"214\",\"tis\":\"215\",\"vat\":\"216\",\"\\u00e4ne\":\"217\",\"\\u00f5nn\":\"218\",\" es\":\"219\",\" fi\":\"220\",\" vi\":\"221\",\"a i\":\"222\",\"a o\":\"223\",\"aab\":\"224\",\"aap\":\"225\",\"ala\":\"226\",\"alt\":\"227\",\"ama\":\"228\",\"anu\":\"229\",\"e p\":\"230\",\"e t\":\"231\",\"eal\":\"232\",\"eli\":\"233\",\"haa\":\"234\",\"hin\":\"235\",\"iva\":\"236\",\"kon\":\"237\",\"ku \":\"238\",\"lik\":\"239\",\"lm \":\"240\",\"min\":\"241\",\"n t\":\"242\",\"odu\":\"243\",\"oon\":\"244\",\"psa\":\"245\",\"ri \":\"246\",\"si \":\"247\",\"stu\":\"248\",\"t e\":\"249\",\"t s\":\"250\",\"ti \":\"251\",\"ule\":\"252\",\"uur\":\"253\",\"vas\":\"254\",\"vee\":\"255\",\" ki\":\"256\",\" ni\":\"257\",\" n\\u00e4\":\"258\",\" ra\":\"259\",\"aig\":\"260\",\"aka\":\"261\",\"all\":\"262\",\"atu\":\"263\",\"e e\":\"264\",\"eis\":\"265\",\"ers\":\"266\",\"i e\":\"267\",\"ii \":\"268\",\"iis\":\"269\",\"il \":\"270\",\"ima\":\"271\",\"its\":\"272\",\"kka\":\"273\",\"kuh\":\"274\",\"l k\":\"275\",\"lat\":\"276\",\"maj\":\"277\",\"ndu\":\"278\",\"ni \":\"279\",\"nii\":\"280\",\"oma\":\"281\",\"ool\":\"282\",\"rso\":\"283\",\"ru \":\"284\",\"rva\":\"285\",\"s t\":\"286\",\"sek\":\"287\",\"son\":\"288\",\"ste\":\"289\",\"t m\":\"290\",\"taj\":\"291\",\"tam\":\"292\",\"ude\":\"293\",\"uho\":\"294\",\"vai\":\"295\",\" ag\":\"296\",\" os\":\"297\",\" pa\":\"298\",\" re\":\"299\"},\"farsi\":{\"\\u0627\\u0646 \":\"0\",\"\\u0627\\u06cc \":\"1\",\"\\u0647 \\u0627\":\"2\",\" \\u0627\\u064a\":\"3\",\" \\u062f\\u0631\":\"4\",\"\\u0628\\u0647 \":\"5\",\" \\u0628\\u0631\":\"6\",\"\\u062f\\u0631 \":\"7\",\"\\u0631\\u0627\\u0646\":\"8\",\" \\u0628\\u0647\":\"9\",\"\\u06cc \\u0627\":\"10\",\"\\u0627\\u0632 \":\"11\",\"\\u064a\\u0646 \":\"12\",\"\\u0645\\u06cc \":\"13\",\" \\u0627\\u0632\":\"14\",\"\\u062f\\u0647 \":\"15\",\"\\u0633\\u062a \":\"16\",\"\\u0627\\u0633\\u062a\":\"17\",\" \\u0627\\u0633\":\"18\",\" \\u06a9\\u0647\":\"19\",\"\\u06a9\\u0647 \":\"20\",\"\\u0627\\u064a\\u0631\":\"21\",\"\\u0646\\u062f \":\"22\",\"\\u0627\\u064a\\u0646\":\"23\",\" \\u0647\\u0627\":\"24\",\"\\u064a\\u0631\\u0627\":\"25\",\"\\u0648\\u062f \":\"26\",\" \\u0631\\u0627\":\"27\",\"\\u0647\\u0627\\u06cc\":\"28\",\" \\u062e\\u0648\":\"29\",\"\\u062a\\u0647 \":\"30\",\"\\u0631\\u0627 \":\"31\",\"\\u0631\\u0627\\u06cc\":\"32\",\"\\u0631\\u062f \":\"33\",\"\\u0646 \\u0628\":\"34\",\"\\u06a9\\u0631\\u062f\":\"35\",\" \\u0648 \":\"36\",\" \\u06a9\\u0631\":\"37\",\"\\u0627\\u062a \":\"38\",\"\\u0628\\u0631\\u0627\":\"39\",\"\\u062f \\u06a9\":\"40\",\"\\u0645\\u0627\\u0646\":\"41\",\"\\u06cc \\u062f\":\"42\",\" \\u0627\\u0646\":\"43\",\"\\u062e\\u0648\\u0627\":\"44\",\"\\u0634\\u0648\\u0631\":\"45\",\" \\u0628\\u0627\":\"46\",\"\\u0646 \\u0627\":\"47\",\" \\u0633\\u0627\":\"48\",\"\\u062a\\u0645\\u06cc\":\"49\",\"\\u0631\\u06cc \":\"50\",\"\\u0627\\u062a\\u0645\":\"51\",\"\\u0627 \\u0627\":\"52\",\"\\u0648\\u0627\\u0647\":\"53\",\" \\u0627\\u062a\":\"54\",\" \\u0639\\u0631\":\"55\",\"\\u0627\\u0642 \":\"56\",\"\\u0631 \\u0645\":\"57\",\"\\u0631\\u0627\\u0642\":\"58\",\"\\u0639\\u0631\\u0627\":\"59\",\"\\u06cc \\u0628\":\"60\",\" \\u062a\\u0627\":\"61\",\" \\u062a\\u0648\":\"62\",\"\\u0627\\u0631 \":\"63\",\"\\u0631 \\u0627\":\"64\",\"\\u0646 \\u0645\":\"65\",\"\\u0647 \\u0628\":\"66\",\"\\u0648\\u0631 \":\"67\",\"\\u064a\\u062f \":\"68\",\"\\u06cc \\u06a9\":\"69\",\" \\u0627\\u0645\":\"70\",\" \\u062f\\u0627\":\"71\",\" \\u06a9\\u0646\":\"72\",\"\\u0627\\u0647\\u062f\":\"73\",\"\\u0647\\u062f \":\"74\",\" \\u0622\\u0646\":\"75\",\" \\u0645\\u06cc\":\"76\",\" \\u0646\\u064a\":\"77\",\" \\u06af\\u0641\":\"78\",\"\\u062f \\u0627\":\"79\",\"\\u06af\\u0641\\u062a\":\"80\",\" \\u06a9\\u0634\":\"81\",\"\\u0627 \\u0628\":\"82\",\"\\u0646\\u06cc \":\"83\",\"\\u0647\\u0627 \":\"84\",\"\\u06a9\\u0634\\u0648\":\"85\",\" \\u0631\\u0648\":\"86\",\"\\u062a \\u06a9\":\"87\",\"\\u0646\\u064a\\u0648\":\"88\",\"\\u0647 \\u0645\":\"89\",\"\\u0648\\u06cc \":\"90\",\"\\u06cc \\u062a\":\"91\",\" \\u0634\\u0648\":\"92\",\"\\u0627\\u0644 \":\"93\",\"\\u062f\\u0627\\u0631\":\"94\",\"\\u0645\\u0647 \":\"95\",\"\\u0646 \\u06a9\":\"96\",\"\\u0647 \\u062f\":\"97\",\"\\u064a\\u0647 \":\"98\",\" \\u0645\\u0627\":\"99\",\"\\u0627\\u0645\\u0647\":\"100\",\"\\u062f \\u0628\":\"101\",\"\\u0632\\u0627\\u0631\":\"102\",\"\\u0648\\u0631\\u0627\":\"103\",\"\\u06af\\u0632\\u0627\":\"104\",\" \\u067e\\u064a\":\"105\",\"\\u0622\\u0646 \":\"106\",\"\\u0627\\u0646\\u062a\":\"107\",\"\\u062a \\u0627\":\"108\",\"\\u0641\\u062a \":\"109\",\"\\u0647 \\u0646\":\"110\",\"\\u06cc \\u062e\":\"111\",\"\\u0627\\u0645\\u0627\":\"112\",\"\\u0628\\u0627\\u062a\":\"113\",\"\\u0645\\u0627 \":\"114\",\"\\u0645\\u0644\\u0644\":\"115\",\"\\u0646\\u0627\\u0645\":\"116\",\"\\u064a\\u0631 \":\"117\",\"\\u06cc \\u0645\":\"118\",\"\\u06cc \\u0647\":\"119\",\" \\u0622\\u0645\":\"120\",\" \\u0627\\u06cc\":\"121\",\" \\u0645\\u0646\":\"122\",\"\\u0627\\u0646\\u0633\":\"123\",\"\\u0627\\u0646\\u064a\":\"124\",\"\\u062a \\u062f\":\"125\",\"\\u0631\\u062f\\u0647\":\"126\",\"\\u0633\\u0627\\u0632\":\"127\",\"\\u0646 \\u062f\":\"128\",\"\\u0646\\u0647 \":\"129\",\"\\u0648\\u0631\\u062f\":\"130\",\" \\u0627\\u0648\":\"131\",\" \\u0628\\u064a\":\"132\",\" \\u0633\\u0648\":\"133\",\" \\u0634\\u062f\":\"134\",\"\\u0627\\u062f\\u0647\":\"135\",\"\\u0627\\u0646\\u062f\":\"136\",\"\\u0628\\u0627 \":\"137\",\"\\u062a \\u0628\":\"138\",\"\\u0631 \\u0628\":\"139\",\"\\u0632 \\u0627\":\"140\",\"\\u0632\\u0645\\u0627\":\"141\",\"\\u0633\\u062a\\u0647\":\"142\",\"\\u0646 \\u0631\":\"143\",\"\\u0647 \\u0633\":\"144\",\"\\u0648\\u0627\\u0646\":\"145\",\"\\u0648\\u0632 \":\"146\",\"\\u06cc \\u0631\":\"147\",\"\\u06cc \\u0633\":\"148\",\" \\u0647\\u0633\":\"149\",\"\\u0627\\u0628\\u0627\":\"150\",\"\\u0627\\u0645 \":\"151\",\"\\u0627\\u0648\\u0631\":\"152\",\"\\u062a\\u062e\\u0627\":\"153\",\"\\u062e\\u0627\\u0628\":\"154\",\"\\u062e\\u0648\\u062f\":\"155\",\"\\u062f \\u062f\":\"156\",\"\\u062f\\u0646 \":\"157\",\"\\u0631\\u0647\\u0627\":\"158\",\"\\u0631\\u0648\\u0632\":\"159\",\"\\u0631\\u06af\\u0632\":\"160\",\"\\u0646\\u062a\\u062e\":\"161\",\"\\u0647 \\u0634\":\"162\",\"\\u0647 \\u0647\":\"163\",\"\\u0647\\u0633\\u062a\":\"164\",\"\\u064a\\u062a \":\"165\",\"\\u064a\\u0645 \":\"166\",\" \\u062f\\u0648\":\"167\",\" \\u062f\\u064a\":\"168\",\" \\u0645\\u0648\":\"169\",\" \\u0646\\u0648\":\"170\",\" \\u0647\\u0645\":\"171\",\" \\u06a9\\u0627\":\"172\",\"\\u0627\\u062f \":\"173\",\"\\u0627\\u0631\\u06cc\":\"174\",\"\\u0627\\u0646\\u06cc\":\"175\",\"\\u0628\\u0631 \":\"176\",\"\\u0628\\u0648\\u062f\":\"177\",\"\\u062a \\u0647\":\"178\",\"\\u062d \\u0647\":\"179\",\"\\u062d\\u0627\\u0644\":\"180\",\"\\u0631\\u0634 \":\"181\",\"\\u0639\\u0647 \":\"182\",\"\\u0644\\u06cc \":\"183\",\"\\u0648\\u0645 \":\"184\",\"\\u0698\\u0627\\u0646\":\"185\",\" \\u0633\\u0644\":\"186\",\"\\u0622\\u0645\\u0631\":\"187\",\"\\u0627\\u062d \":\"188\",\"\\u062a\\u0648\\u0633\":\"189\",\"\\u062f\\u0627\\u062f\":\"190\",\"\\u062f\\u0627\\u0645\":\"191\",\"\\u0631 \\u062f\":\"192\",\"\\u0631\\u0647 \":\"193\",\"\\u0631\\u064a\\u06a9\":\"194\",\"\\u0632\\u06cc \":\"195\",\"\\u0633\\u0644\\u0627\":\"196\",\"\\u0634\\u0648\\u062f\":\"197\",\"\\u0644\\u0627\\u062d\":\"198\",\"\\u0645\\u0631\\u064a\":\"199\",\"\\u0646\\u0646\\u062f\":\"200\",\"\\u0647 \\u0639\":\"201\",\"\\u064a\\u0645\\u0627\":\"202\",\"\\u064a\\u06a9\\u0627\":\"203\",\"\\u067e\\u064a\\u0645\":\"204\",\"\\u06af\\u0631 \":\"205\",\" \\u0622\\u0698\":\"206\",\" \\u0627\\u0644\":\"207\",\" \\u0628\\u0648\":\"208\",\" \\u0645\\u0642\":\"209\",\" \\u0645\\u0644\":\"210\",\" \\u0648\\u06cc\":\"211\",\"\\u0622\\u0698\\u0627\":\"212\",\"\\u0627\\u0632\\u0645\":\"213\",\"\\u0627\\u0632\\u06cc\":\"214\",\"\\u0628\\u0627\\u0631\":\"215\",\"\\u0628\\u0631\\u0646\":\"216\",\"\\u0631 \\u0622\":\"217\",\"\\u0632 \\u0633\":\"218\",\"\\u0633\\u0639\\u0647\":\"219\",\"\\u0634\\u062a\\u0647\":\"220\",\"\\u0645\\u0627\\u062a\":\"221\",\"\\u0646 \\u0622\":\"222\",\"\\u0646 \\u067e\":\"223\",\"\\u0646\\u0633 \":\"224\",\"\\u0647 \\u06af\":\"225\",\"\\u0648\\u0633\\u0639\":\"226\",\"\\u064a\\u0627\\u0646\":\"227\",\"\\u064a\\u0648\\u0645\":\"228\",\"\\u06a9\\u0627 \":\"229\",\"\\u06a9\\u0627\\u0645\":\"230\",\"\\u06a9\\u0646\\u062f\":\"231\",\" \\u062e\\u0627\":\"232\",\" \\u0633\\u0631\":\"233\",\"\\u0622\\u0648\\u0631\":\"234\",\"\\u0627\\u0631\\u062f\":\"235\",\"\\u0627\\u0642\\u062f\":\"236\",\"\\u0627\\u064a\\u0645\":\"237\",\"\\u0627\\u064a\\u06cc\":\"238\",\"\\u0628\\u0631\\u06af\":\"239\",\"\\u062a \\u0639\":\"240\",\"\\u062a\\u0646 \":\"241\",\"\\u062e\\u062a \":\"242\",\"\\u062f \\u0648\":\"243\",\"\\u0631 \\u062e\":\"244\",\"\\u0631\\u06a9 \":\"245\",\"\\u0632\\u064a\\u0631\":\"246\",\"\\u0641\\u062a\\u0647\":\"247\",\"\\u0642\\u062f\\u0627\":\"248\",\"\\u0644 \\u062a\":\"249\",\"\\u0645\\u064a\\u0646\":\"250\",\"\\u0646 \\u06af\":\"251\",\"\\u0647 \\u0622\":\"252\",\"\\u0647 \\u062e\":\"253\",\"\\u0647 \\u06a9\":\"254\",\"\\u0648\\u0631\\u06a9\":\"255\",\"\\u0648\\u064a\\u0648\":\"256\",\"\\u064a\\u0648\\u0631\":\"257\",\"\\u064a\\u0648\\u064a\":\"258\",\"\\u064a\\u06cc \":\"259\",\"\\u06a9 \\u062a\":\"260\",\"\\u06cc \\u0634\":\"261\",\" \\u0627\\u0642\":\"262\",\" \\u062d\\u0627\":\"263\",\" \\u062d\\u0642\":\"264\",\" \\u062f\\u0633\":\"265\",\" \\u0634\\u06a9\":\"266\",\" \\u0639\\u0645\":\"267\",\" \\u064a\\u06a9\":\"268\",\"\\u0627 \\u062a\":\"269\",\"\\u0627 \\u062f\":\"270\",\"\\u0627\\u0631\\u062c\":\"271\",\"\\u0628\\u064a\\u0646\":\"272\",\"\\u062a \\u0645\":\"273\",\"\\u062a \\u0648\":\"274\",\"\\u062a\\u0627\\u064a\":\"275\",\"\\u062f\\u0633\\u062a\":\"276\",\"\\u0631 \\u062d\":\"277\",\"\\u0631 \\u0633\":\"278\",\"\\u0631\\u0646\\u0627\":\"279\",\"\\u0632 \\u0628\":\"280\",\"\\u0634\\u06a9\\u0627\":\"281\",\"\\u0644\\u0644 \":\"282\",\"\\u0645 \\u06a9\":\"283\",\"\\u0645\\u0632 \":\"284\",\"\\u0646\\u062f\\u0627\":\"285\",\"\\u0646\\u0648\\u0627\":\"286\",\"\\u0648 \\u0627\":\"287\",\"\\u0648\\u0631\\u0647\":\"288\",\"\\u0648\\u0646 \":\"289\",\"\\u0648\\u0646\\u062f\":\"290\",\"\\u064a\\u0645\\u0632\":\"291\",\" \\u0622\\u0648\":\"292\",\" \\u0627\\u0639\":\"293\",\" \\u0641\\u0631\":\"294\",\" \\u0645\\u062a\":\"295\",\" \\u0646\\u0647\":\"296\",\" \\u0647\\u0631\":\"297\",\" \\u0648\\u0632\":\"298\",\" \\u06af\\u0632\":\"299\"},\"finnish\":{\"en \":\"0\",\"in \":\"1\",\"an \":\"2\",\"on \":\"3\",\"ist\":\"4\",\"ta \":\"5\",\"ja \":\"6\",\"n t\":\"7\",\"sa \":\"8\",\"sta\":\"9\",\"aan\":\"10\",\"n p\":\"11\",\" on\":\"12\",\"ssa\":\"13\",\"tta\":\"14\",\"t\\u00e4 \":\"15\",\" ka\":\"16\",\" pa\":\"17\",\"si \":\"18\",\" ja\":\"19\",\"n k\":\"20\",\"lla\":\"21\",\"\\u00e4n \":\"22\",\"een\":\"23\",\"n v\":\"24\",\"ksi\":\"25\",\"ett\":\"26\",\"nen\":\"27\",\"taa\":\"28\",\"tt\\u00e4\":\"29\",\" va\":\"30\",\"ill\":\"31\",\"itt\":\"32\",\" jo\":\"33\",\" ko\":\"34\",\"n s\":\"35\",\" tu\":\"36\",\"ia \":\"37\",\" su\":\"38\",\"a p\":\"39\",\"aa \":\"40\",\"la \":\"41\",\"lle\":\"42\",\"n m\":\"43\",\"le \":\"44\",\"tte\":\"45\",\"na \":\"46\",\" ta\":\"47\",\" ve\":\"48\",\"at \":\"49\",\" vi\":\"50\",\"utt\":\"51\",\" sa\":\"52\",\"ise\":\"53\",\"sen\":\"54\",\" ku\":\"55\",\" n\\u00e4\":\"56\",\" p\\u00e4\":\"57\",\"ste\":\"58\",\" ol\":\"59\",\"a t\":\"60\",\"ais\":\"61\",\"maa\":\"62\",\"ti \":\"63\",\"a o\":\"64\",\"oit\":\"65\",\"p\\u00e4\\u00e4\":\"66\",\" pi\":\"67\",\"a v\":\"68\",\"ala\":\"69\",\"ine\":\"70\",\"isi\":\"71\",\"tel\":\"72\",\"tti\":\"73\",\" si\":\"74\",\"a k\":\"75\",\"all\":\"76\",\"iin\":\"77\",\"kin\":\"78\",\"st\\u00e4\":\"79\",\"uom\":\"80\",\"vii\":\"81\",\" ma\":\"82\",\" se\":\"83\",\"en\\u00e4\":\"84\",\" mu\":\"85\",\"a s\":\"86\",\"est\":\"87\",\"iss\":\"88\",\"ll\\u00e4\":\"89\",\"lok\":\"90\",\"l\\u00e4 \":\"91\",\"n j\":\"92\",\"n o\":\"93\",\"toi\":\"94\",\"ven\":\"95\",\"ytt\":\"96\",\" li\":\"97\",\"ain\":\"98\",\"et \":\"99\",\"ina\":\"100\",\"n a\":\"101\",\"n n\":\"102\",\"oll\":\"103\",\"plo\":\"104\",\"ten\":\"105\",\"ust\":\"106\",\"\\u00e4ll\":\"107\",\"\\u00e4\\u00e4n\":\"108\",\" to\":\"109\",\"den\":\"110\",\"men\":\"111\",\"oki\":\"112\",\"suo\":\"113\",\"s\\u00e4 \":\"114\",\"t\\u00e4\\u00e4\":\"115\",\"uks\":\"116\",\"vat\":\"117\",\" al\":\"118\",\" ke\":\"119\",\" te\":\"120\",\"a e\":\"121\",\"lii\":\"122\",\"tai\":\"123\",\"tei\":\"124\",\"\\u00e4is\":\"125\",\"\\u00e4\\u00e4 \":\"126\",\" pl\":\"127\",\"ell\":\"128\",\"i t\":\"129\",\"ide\":\"130\",\"ikk\":\"131\",\"ki \":\"132\",\"nta\":\"133\",\"ova\":\"134\",\"yst\":\"135\",\"yt \":\"136\",\"\\u00e4 p\":\"137\",\"\\u00e4yt\":\"138\",\" ha\":\"139\",\" pe\":\"140\",\" t\\u00e4\":\"141\",\"a n\":\"142\",\"aik\":\"143\",\"i p\":\"144\",\"i v\":\"145\",\"nyt\":\"146\",\"n\\u00e4y\":\"147\",\"pal\":\"148\",\"tee\":\"149\",\"un \":\"150\",\" me\":\"151\",\"a m\":\"152\",\"ess\":\"153\",\"kau\":\"154\",\"pai\":\"155\",\"stu\":\"156\",\"ut \":\"157\",\"voi\":\"158\",\" et\":\"159\",\"a h\":\"160\",\"eis\":\"161\",\"hte\":\"162\",\"i o\":\"163\",\"iik\":\"164\",\"ita\":\"165\",\"jou\":\"166\",\"mis\":\"167\",\"nin\":\"168\",\"nut\":\"169\",\"sia\":\"170\",\"ss\\u00e4\":\"171\",\"van\":\"172\",\" ty\":\"173\",\" yh\":\"174\",\"aks\":\"175\",\"ime\":\"176\",\"loi\":\"177\",\"me \":\"178\",\"n e\":\"179\",\"n h\":\"180\",\"n l\":\"181\",\"oin\":\"182\",\"ome\":\"183\",\"ott\":\"184\",\"ouk\":\"185\",\"sit\":\"186\",\"sti\":\"187\",\"tet\":\"188\",\"tie\":\"189\",\"ukk\":\"190\",\"\\u00e4 k\":\"191\",\" ra\":\"192\",\" ti\":\"193\",\"aja\":\"194\",\"asi\":\"195\",\"ent\":\"196\",\"iga\":\"197\",\"iig\":\"198\",\"ite\":\"199\",\"jan\":\"200\",\"kaa\":\"201\",\"kse\":\"202\",\"laa\":\"203\",\"lan\":\"204\",\"li \":\"205\",\"n\\u00e4j\":\"206\",\"ole\":\"207\",\"tii\":\"208\",\"usi\":\"209\",\"\\u00e4j\\u00e4\":\"210\",\" ov\":\"211\",\"a a\":\"212\",\"ant\":\"213\",\"ava\":\"214\",\"ei \":\"215\",\"eri\":\"216\",\"kan\":\"217\",\"kku\":\"218\",\"lai\":\"219\",\"lis\":\"220\",\"l\\u00e4i\":\"221\",\"mat\":\"222\",\"ois\":\"223\",\"pel\":\"224\",\"sil\":\"225\",\"sty\":\"226\",\"taj\":\"227\",\"tav\":\"228\",\"ttu\":\"229\",\"ty\\u00f6\":\"230\",\"y\\u00f6s\":\"231\",\"\\u00e4 o\":\"232\",\" ai\":\"233\",\" pu\":\"234\",\"a j\":\"235\",\"a l\":\"236\",\"aal\":\"237\",\"arv\":\"238\",\"ass\":\"239\",\"ien\":\"240\",\"imi\":\"241\",\"imm\":\"242\",\"it\\u00e4\":\"243\",\"ka \":\"244\",\"kes\":\"245\",\"kue\":\"246\",\"lee\":\"247\",\"lin\":\"248\",\"llo\":\"249\",\"one\":\"250\",\"ri \":\"251\",\"t o\":\"252\",\"t p\":\"253\",\"tu \":\"254\",\"val\":\"255\",\"vuo\":\"256\",\" ei\":\"257\",\" he\":\"258\",\" hy\":\"259\",\" my\":\"260\",\" vo\":\"261\",\"ali\":\"262\",\"alo\":\"263\",\"ano\":\"264\",\"ast\":\"265\",\"att\":\"266\",\"auk\":\"267\",\"eli\":\"268\",\"ely\":\"269\",\"hti\":\"270\",\"ika\":\"271\",\"ken\":\"272\",\"kki\":\"273\",\"lys\":\"274\",\"min\":\"275\",\"my\\u00f6\":\"276\",\"oht\":\"277\",\"oma\":\"278\",\"tus\":\"279\",\"umi\":\"280\",\"yks\":\"281\",\"\\u00e4t \":\"282\",\"\\u00e4\\u00e4l\":\"283\",\"\\u00f6s \":\"284\",\" ar\":\"285\",\" eu\":\"286\",\" hu\":\"287\",\" na\":\"288\",\"aat\":\"289\",\"alk\":\"290\",\"alu\":\"291\",\"ans\":\"292\",\"arj\":\"293\",\"enn\":\"294\",\"han\":\"295\",\"kuu\":\"296\",\"n y\":\"297\",\"set\":\"298\",\"sim\":\"299\"},\"french\":{\"es \":\"0\",\" de\":\"1\",\"de \":\"2\",\" le\":\"3\",\"ent\":\"4\",\"le \":\"5\",\"nt \":\"6\",\"la \":\"7\",\"s d\":\"8\",\" la\":\"9\",\"ion\":\"10\",\"on \":\"11\",\"re \":\"12\",\" pa\":\"13\",\"e l\":\"14\",\"e d\":\"15\",\" l'\":\"16\",\"e p\":\"17\",\" co\":\"18\",\" pr\":\"19\",\"tio\":\"20\",\"ns \":\"21\",\" en\":\"22\",\"ne \":\"23\",\"que\":\"24\",\"r l\":\"25\",\"les\":\"26\",\"ur \":\"27\",\"en \":\"28\",\"ati\":\"29\",\"ue \":\"30\",\" po\":\"31\",\" d'\":\"32\",\"par\":\"33\",\" a \":\"34\",\"et \":\"35\",\"it \":\"36\",\" qu\":\"37\",\"men\":\"38\",\"ons\":\"39\",\"te \":\"40\",\" et\":\"41\",\"t d\":\"42\",\" re\":\"43\",\"des\":\"44\",\" un\":\"45\",\"ie \":\"46\",\"s l\":\"47\",\" su\":\"48\",\"pou\":\"49\",\" au\":\"50\",\" \\u00e0 \":\"51\",\"con\":\"52\",\"er \":\"53\",\" no\":\"54\",\"ait\":\"55\",\"e c\":\"56\",\"se \":\"57\",\"t\\u00e9 \":\"58\",\"du \":\"59\",\" du\":\"60\",\" d\\u00e9\":\"61\",\"ce \":\"62\",\"e e\":\"63\",\"is \":\"64\",\"n d\":\"65\",\"s a\":\"66\",\" so\":\"67\",\"e r\":\"68\",\"e s\":\"69\",\"our\":\"70\",\"res\":\"71\",\"ssi\":\"72\",\"eur\":\"73\",\" se\":\"74\",\"eme\":\"75\",\"est\":\"76\",\"us \":\"77\",\"sur\":\"78\",\"ant\":\"79\",\"iqu\":\"80\",\"s p\":\"81\",\"une\":\"82\",\"uss\":\"83\",\"l'a\":\"84\",\"pro\":\"85\",\"ter\":\"86\",\"tre\":\"87\",\"end\":\"88\",\"rs \":\"89\",\" ce\":\"90\",\"e a\":\"91\",\"t p\":\"92\",\"un \":\"93\",\" ma\":\"94\",\" ru\":\"95\",\" r\\u00e9\":\"96\",\"ous\":\"97\",\"ris\":\"98\",\"rus\":\"99\",\"sse\":\"100\",\"ans\":\"101\",\"ar \":\"102\",\"com\":\"103\",\"e m\":\"104\",\"ire\":\"105\",\"nce\":\"106\",\"nte\":\"107\",\"t l\":\"108\",\" av\":\"109\",\" mo\":\"110\",\" te\":\"111\",\"il \":\"112\",\"me \":\"113\",\"ont\":\"114\",\"ten\":\"115\",\"a p\":\"116\",\"dan\":\"117\",\"pas\":\"118\",\"qui\":\"119\",\"s e\":\"120\",\"s s\":\"121\",\" in\":\"122\",\"ist\":\"123\",\"lle\":\"124\",\"nou\":\"125\",\"pr\\u00e9\":\"126\",\"'un\":\"127\",\"air\":\"128\",\"d'a\":\"129\",\"ir \":\"130\",\"n e\":\"131\",\"rop\":\"132\",\"ts \":\"133\",\" da\":\"134\",\"a s\":\"135\",\"as \":\"136\",\"au \":\"137\",\"den\":\"138\",\"mai\":\"139\",\"mis\":\"140\",\"ori\":\"141\",\"out\":\"142\",\"rme\":\"143\",\"sio\":\"144\",\"tte\":\"145\",\"ux \":\"146\",\"a d\":\"147\",\"ien\":\"148\",\"n a\":\"149\",\"ntr\":\"150\",\"omm\":\"151\",\"ort\":\"152\",\"ouv\":\"153\",\"s c\":\"154\",\"son\":\"155\",\"tes\":\"156\",\"ver\":\"157\",\"\\u00e8re\":\"158\",\" il\":\"159\",\" m \":\"160\",\" sa\":\"161\",\" ve\":\"162\",\"a r\":\"163\",\"ais\":\"164\",\"ava\":\"165\",\"di \":\"166\",\"n p\":\"167\",\"sti\":\"168\",\"ven\":\"169\",\" mi\":\"170\",\"ain\":\"171\",\"enc\":\"172\",\"for\":\"173\",\"it\\u00e9\":\"174\",\"lar\":\"175\",\"oir\":\"176\",\"rem\":\"177\",\"ren\":\"178\",\"rro\":\"179\",\"r\\u00e9s\":\"180\",\"sie\":\"181\",\"t a\":\"182\",\"tur\":\"183\",\" pe\":\"184\",\" to\":\"185\",\"d'u\":\"186\",\"ell\":\"187\",\"err\":\"188\",\"ers\":\"189\",\"ide\":\"190\",\"ine\":\"191\",\"iss\":\"192\",\"mes\":\"193\",\"por\":\"194\",\"ran\":\"195\",\"sit\":\"196\",\"st \":\"197\",\"t r\":\"198\",\"uti\":\"199\",\"vai\":\"200\",\"\\u00e9 l\":\"201\",\"\\u00e9si\":\"202\",\" di\":\"203\",\" n'\":\"204\",\" \\u00e9t\":\"205\",\"a c\":\"206\",\"ass\":\"207\",\"e t\":\"208\",\"in \":\"209\",\"nde\":\"210\",\"pre\":\"211\",\"rat\":\"212\",\"s m\":\"213\",\"ste\":\"214\",\"tai\":\"215\",\"tch\":\"216\",\"ui \":\"217\",\"uro\":\"218\",\"\\u00e8s \":\"219\",\" es\":\"220\",\" fo\":\"221\",\" tr\":\"222\",\"'ad\":\"223\",\"app\":\"224\",\"aux\":\"225\",\"e \\u00e0\":\"226\",\"ett\":\"227\",\"iti\":\"228\",\"lit\":\"229\",\"nal\":\"230\",\"op\\u00e9\":\"231\",\"r d\":\"232\",\"ra \":\"233\",\"rai\":\"234\",\"ror\":\"235\",\"s r\":\"236\",\"tat\":\"237\",\"ut\\u00e9\":\"238\",\"\\u00e0 l\":\"239\",\" af\":\"240\",\"anc\":\"241\",\"ara\":\"242\",\"art\":\"243\",\"bre\":\"244\",\"ch\\u00e9\":\"245\",\"dre\":\"246\",\"e f\":\"247\",\"ens\":\"248\",\"lem\":\"249\",\"n r\":\"250\",\"n t\":\"251\",\"ndr\":\"252\",\"nne\":\"253\",\"onn\":\"254\",\"pos\":\"255\",\"s t\":\"256\",\"tiq\":\"257\",\"ure\":\"258\",\" tu\":\"259\",\"ale\":\"260\",\"and\":\"261\",\"ave\":\"262\",\"cla\":\"263\",\"cou\":\"264\",\"e n\":\"265\",\"emb\":\"266\",\"ins\":\"267\",\"jou\":\"268\",\"mme\":\"269\",\"rie\":\"270\",\"r\\u00e8s\":\"271\",\"sem\":\"272\",\"str\":\"273\",\"t i\":\"274\",\"ues\":\"275\",\"uni\":\"276\",\"uve\":\"277\",\"\\u00e9 d\":\"278\",\"\\u00e9e \":\"279\",\" ch\":\"280\",\" do\":\"281\",\" eu\":\"282\",\" fa\":\"283\",\" lo\":\"284\",\" ne\":\"285\",\" ra\":\"286\",\"arl\":\"287\",\"att\":\"288\",\"ec \":\"289\",\"ica\":\"290\",\"l a\":\"291\",\"l'o\":\"292\",\"l'\\u00e9\":\"293\",\"mmi\":\"294\",\"nta\":\"295\",\"orm\":\"296\",\"ou \":\"297\",\"r u\":\"298\",\"rle\":\"299\"},\"german\":{\"en \":\"0\",\"er \":\"1\",\" de\":\"2\",\"der\":\"3\",\"ie \":\"4\",\" di\":\"5\",\"die\":\"6\",\"sch\":\"7\",\"ein\":\"8\",\"che\":\"9\",\"ich\":\"10\",\"den\":\"11\",\"in \":\"12\",\"te \":\"13\",\"ch \":\"14\",\" ei\":\"15\",\"ung\":\"16\",\"n d\":\"17\",\"nd \":\"18\",\" be\":\"19\",\"ver\":\"20\",\"es \":\"21\",\" zu\":\"22\",\"eit\":\"23\",\"gen\":\"24\",\"und\":\"25\",\" un\":\"26\",\" au\":\"27\",\" in\":\"28\",\"cht\":\"29\",\"it \":\"30\",\"ten\":\"31\",\" da\":\"32\",\"ent\":\"33\",\" ve\":\"34\",\"and\":\"35\",\" ge\":\"36\",\"ine\":\"37\",\" mi\":\"38\",\"r d\":\"39\",\"hen\":\"40\",\"ng \":\"41\",\"nde\":\"42\",\" vo\":\"43\",\"e d\":\"44\",\"ber\":\"45\",\"men\":\"46\",\"ei \":\"47\",\"mit\":\"48\",\" st\":\"49\",\"ter\":\"50\",\"ren\":\"51\",\"t d\":\"52\",\" er\":\"53\",\"ere\":\"54\",\"n s\":\"55\",\"ste\":\"56\",\" se\":\"57\",\"e s\":\"58\",\"ht \":\"59\",\"des\":\"60\",\"ist\":\"61\",\"ne \":\"62\",\"auf\":\"63\",\"e a\":\"64\",\"isc\":\"65\",\"on \":\"66\",\"rte\":\"67\",\" re\":\"68\",\" we\":\"69\",\"ges\":\"70\",\"uch\":\"71\",\" f\\u00fc\":\"72\",\" so\":\"73\",\"bei\":\"74\",\"e e\":\"75\",\"nen\":\"76\",\"r s\":\"77\",\"ach\":\"78\",\"f\\u00fcr\":\"79\",\"ier\":\"80\",\"par\":\"81\",\"\\u00fcr \":\"82\",\" ha\":\"83\",\"as \":\"84\",\"ert\":\"85\",\" an\":\"86\",\" pa\":\"87\",\" sa\":\"88\",\" sp\":\"89\",\" wi\":\"90\",\"for\":\"91\",\"tag\":\"92\",\"zu \":\"93\",\"das\":\"94\",\"rei\":\"95\",\"he \":\"96\",\"hre\":\"97\",\"nte\":\"98\",\"sen\":\"99\",\"vor\":\"100\",\" sc\":\"101\",\"ech\":\"102\",\"etz\":\"103\",\"hei\":\"104\",\"lan\":\"105\",\"n a\":\"106\",\"pd \":\"107\",\"st \":\"108\",\"sta\":\"109\",\"ese\":\"110\",\"lic\":\"111\",\" ab\":\"112\",\" si\":\"113\",\"gte\":\"114\",\" wa\":\"115\",\"iti\":\"116\",\"kei\":\"117\",\"n e\":\"118\",\"nge\":\"119\",\"sei\":\"120\",\"tra\":\"121\",\"zen\":\"122\",\" im\":\"123\",\" la\":\"124\",\"art\":\"125\",\"im \":\"126\",\"lle\":\"127\",\"n w\":\"128\",\"rde\":\"129\",\"rec\":\"130\",\"set\":\"131\",\"str\":\"132\",\"tei\":\"133\",\"tte\":\"134\",\" ni\":\"135\",\"e p\":\"136\",\"ehe\":\"137\",\"ers\":\"138\",\"g d\":\"139\",\"nic\":\"140\",\"von\":\"141\",\" al\":\"142\",\" pr\":\"143\",\"an \":\"144\",\"aus\":\"145\",\"erf\":\"146\",\"r e\":\"147\",\"tze\":\"148\",\"t\\u00fcr\":\"149\",\"uf \":\"150\",\"ag \":\"151\",\"als\":\"152\",\"ar \":\"153\",\"chs\":\"154\",\"end\":\"155\",\"ge \":\"156\",\"ige\":\"157\",\"ion\":\"158\",\"ls \":\"159\",\"n m\":\"160\",\"ngs\":\"161\",\"nis\":\"162\",\"nt \":\"163\",\"ord\":\"164\",\"s s\":\"165\",\"sse\":\"166\",\" t\\u00fc\":\"167\",\"ahl\":\"168\",\"e b\":\"169\",\"ede\":\"170\",\"em \":\"171\",\"len\":\"172\",\"n i\":\"173\",\"orm\":\"174\",\"pro\":\"175\",\"rke\":\"176\",\"run\":\"177\",\"s d\":\"178\",\"wah\":\"179\",\"wer\":\"180\",\"\\u00fcrk\":\"181\",\" me\":\"182\",\"age\":\"183\",\"att\":\"184\",\"ell\":\"185\",\"est\":\"186\",\"hat\":\"187\",\"n b\":\"188\",\"oll\":\"189\",\"raf\":\"190\",\"s a\":\"191\",\"tsc\":\"192\",\" es\":\"193\",\" fo\":\"194\",\" gr\":\"195\",\" ja\":\"196\",\"abe\":\"197\",\"auc\":\"198\",\"ben\":\"199\",\"e n\":\"200\",\"ege\":\"201\",\"lie\":\"202\",\"n u\":\"203\",\"r v\":\"204\",\"re \":\"205\",\"rit\":\"206\",\"sag\":\"207\",\" am\":\"208\",\"agt\":\"209\",\"ahr\":\"210\",\"bra\":\"211\",\"de \":\"212\",\"erd\":\"213\",\"her\":\"214\",\"ite\":\"215\",\"le \":\"216\",\"n p\":\"217\",\"n v\":\"218\",\"or \":\"219\",\"rbe\":\"220\",\"rt \":\"221\",\"sic\":\"222\",\"wie\":\"223\",\"\\u00fcbe\":\"224\",\" is\":\"225\",\" \\u00fcb\":\"226\",\"cha\":\"227\",\"chi\":\"228\",\"e f\":\"229\",\"e m\":\"230\",\"eri\":\"231\",\"ied\":\"232\",\"mme\":\"233\",\"ner\":\"234\",\"r a\":\"235\",\"sti\":\"236\",\"t a\":\"237\",\"t s\":\"238\",\"tis\":\"239\",\" ko\":\"240\",\"arb\":\"241\",\"ds \":\"242\",\"gan\":\"243\",\"n z\":\"244\",\"r f\":\"245\",\"r w\":\"246\",\"ran\":\"247\",\"se \":\"248\",\"t i\":\"249\",\"wei\":\"250\",\"wir\":\"251\",\" br\":\"252\",\" np\":\"253\",\"am \":\"254\",\"bes\":\"255\",\"d d\":\"256\",\"deu\":\"257\",\"e g\":\"258\",\"e k\":\"259\",\"efo\":\"260\",\"et \":\"261\",\"eut\":\"262\",\"fen\":\"263\",\"hse\":\"264\",\"lte\":\"265\",\"n r\":\"266\",\"npd\":\"267\",\"r b\":\"268\",\"rhe\":\"269\",\"t w\":\"270\",\"tz \":\"271\",\" fr\":\"272\",\" ih\":\"273\",\" ke\":\"274\",\" ma\":\"275\",\"ame\":\"276\",\"ang\":\"277\",\"d s\":\"278\",\"eil\":\"279\",\"el \":\"280\",\"era\":\"281\",\"erh\":\"282\",\"h d\":\"283\",\"i d\":\"284\",\"kan\":\"285\",\"n f\":\"286\",\"n l\":\"287\",\"nts\":\"288\",\"och\":\"289\",\"rag\":\"290\",\"rd \":\"291\",\"spd\":\"292\",\"spr\":\"293\",\"tio\":\"294\",\" ar\":\"295\",\" en\":\"296\",\" ka\":\"297\",\"ark\":\"298\",\"ass\":\"299\"},\"hausa\":{\" da\":\"0\",\"da \":\"1\",\"in \":\"2\",\"an \":\"3\",\"ya \":\"4\",\" wa\":\"5\",\" ya\":\"6\",\"na \":\"7\",\"ar \":\"8\",\"a d\":\"9\",\" ma\":\"10\",\"wa \":\"11\",\"a a\":\"12\",\"a k\":\"13\",\"a s\":\"14\",\" ta\":\"15\",\"wan\":\"16\",\" a \":\"17\",\" ba\":\"18\",\" ka\":\"19\",\"ta \":\"20\",\"a y\":\"21\",\"n d\":\"22\",\" ha\":\"23\",\" na\":\"24\",\" su\":\"25\",\" sa\":\"26\",\"kin\":\"27\",\"sa \":\"28\",\"ata\":\"29\",\" ko\":\"30\",\"a t\":\"31\",\"su \":\"32\",\" ga\":\"33\",\"ai \":\"34\",\" sh\":\"35\",\"a m\":\"36\",\"uwa\":\"37\",\"iya\":\"38\",\"ma \":\"39\",\"a w\":\"40\",\"asa\":\"41\",\"yan\":\"42\",\"ka \":\"43\",\"ani\":\"44\",\"shi\":\"45\",\"a b\":\"46\",\"a h\":\"47\",\"a c\":\"48\",\"ama\":\"49\",\"ba \":\"50\",\"nan\":\"51\",\"n a\":\"52\",\" mu\":\"53\",\"ana\":\"54\",\" yi\":\"55\",\"a g\":\"56\",\" za\":\"57\",\"i d\":\"58\",\" ku\":\"59\",\"aka\":\"60\",\"yi \":\"61\",\"n k\":\"62\",\"ann\":\"63\",\"ke \":\"64\",\"tar\":\"65\",\" ci\":\"66\",\"iki\":\"67\",\"n s\":\"68\",\"ko \":\"69\",\" ra\":\"70\",\"ki \":\"71\",\"ne \":\"72\",\"a z\":\"73\",\"mat\":\"74\",\"hak\":\"75\",\"nin\":\"76\",\"e d\":\"77\",\"nna\":\"78\",\"uma\":\"79\",\"nda\":\"80\",\"a n\":\"81\",\"ada\":\"82\",\"cik\":\"83\",\"ni \":\"84\",\"rin\":\"85\",\"una\":\"86\",\"ara\":\"87\",\"kum\":\"88\",\"akk\":\"89\",\" ce\":\"90\",\" du\":\"91\",\"man\":\"92\",\"n y\":\"93\",\"nci\":\"94\",\"sar\":\"95\",\"aki\":\"96\",\"awa\":\"97\",\"ci \":\"98\",\"kan\":\"99\",\"kar\":\"100\",\"ari\":\"101\",\"n m\":\"102\",\"and\":\"103\",\"hi \":\"104\",\"n t\":\"105\",\"ga \":\"106\",\"owa\":\"107\",\"ash\":\"108\",\"kam\":\"109\",\"dan\":\"110\",\"ewa\":\"111\",\"nsa\":\"112\",\"ali\":\"113\",\"ami\":\"114\",\" ab\":\"115\",\" do\":\"116\",\"anc\":\"117\",\"n r\":\"118\",\"aya\":\"119\",\"i n\":\"120\",\"sun\":\"121\",\"uka\":\"122\",\" al\":\"123\",\" ne\":\"124\",\"a'a\":\"125\",\"cew\":\"126\",\"cin\":\"127\",\"mas\":\"128\",\"tak\":\"129\",\"un \":\"130\",\"aba\":\"131\",\"kow\":\"132\",\"a r\":\"133\",\"ra \":\"134\",\" ja\":\"135\",\" \\u0199a\":\"136\",\"en \":\"137\",\"r d\":\"138\",\"sam\":\"139\",\"tsa\":\"140\",\" ru\":\"141\",\"ce \":\"142\",\"i a\":\"143\",\"abi\":\"144\",\"ida\":\"145\",\"mut\":\"146\",\"n g\":\"147\",\"n j\":\"148\",\"san\":\"149\",\"a \\u0199\":\"150\",\"har\":\"151\",\"on \":\"152\",\"i m\":\"153\",\"suk\":\"154\",\" ak\":\"155\",\" ji\":\"156\",\"yar\":\"157\",\"'ya\":\"158\",\"kwa\":\"159\",\"min\":\"160\",\" 'y\":\"161\",\"ane\":\"162\",\"ban\":\"163\",\"ins\":\"164\",\"ruw\":\"165\",\"i k\":\"166\",\"n h\":\"167\",\" ad\":\"168\",\"ake\":\"169\",\"n w\":\"170\",\"sha\":\"171\",\"utu\":\"172\",\" \\u01b4a\":\"173\",\"bay\":\"174\",\"tan\":\"175\",\"\\u01b4an\":\"176\",\"bin\":\"177\",\"duk\":\"178\",\"e m\":\"179\",\"n n\":\"180\",\"oka\":\"181\",\"yin\":\"182\",\"\\u0257an\":\"183\",\" fa\":\"184\",\"a i\":\"185\",\"kki\":\"186\",\"re \":\"187\",\"za \":\"188\",\"ala\":\"189\",\"asu\":\"190\",\"han\":\"191\",\"i y\":\"192\",\"mar\":\"193\",\"ran\":\"194\",\"\\u0199as\":\"195\",\"add\":\"196\",\"ars\":\"197\",\"gab\":\"198\",\"ira\":\"199\",\"mma\":\"200\",\"u d\":\"201\",\" ts\":\"202\",\"abb\":\"203\",\"abu\":\"204\",\"aga\":\"205\",\"gar\":\"206\",\"n b\":\"207\",\" \\u0257a\":\"208\",\"aci\":\"209\",\"aik\":\"210\",\"am \":\"211\",\"dun\":\"212\",\"e s\":\"213\",\"i b\":\"214\",\"i w\":\"215\",\"kas\":\"216\",\"kok\":\"217\",\"wam\":\"218\",\" am\":\"219\",\"amf\":\"220\",\"bba\":\"221\",\"din\":\"222\",\"fan\":\"223\",\"gwa\":\"224\",\"i s\":\"225\",\"wat\":\"226\",\"ano\":\"227\",\"are\":\"228\",\"dai\":\"229\",\"iri\":\"230\",\"ma'\":\"231\",\" la\":\"232\",\"all\":\"233\",\"dam\":\"234\",\"ika\":\"235\",\"mi \":\"236\",\"she\":\"237\",\"tum\":\"238\",\"uni\":\"239\",\" an\":\"240\",\" ai\":\"241\",\" ke\":\"242\",\" ki\":\"243\",\"dag\":\"244\",\"mai\":\"245\",\"mfa\":\"246\",\"no \":\"247\",\"nsu\":\"248\",\"o d\":\"249\",\"sak\":\"250\",\"um \":\"251\",\" bi\":\"252\",\" gw\":\"253\",\" kw\":\"254\",\"jam\":\"255\",\"yya\":\"256\",\"a j\":\"257\",\"fa \":\"258\",\"uta\":\"259\",\" hu\":\"260\",\"'a \":\"261\",\"ans\":\"262\",\"a\\u0257a\":\"263\",\"dda\":\"264\",\"hin\":\"265\",\"niy\":\"266\",\"r s\":\"267\",\"bat\":\"268\",\"dar\":\"269\",\"gan\":\"270\",\"i t\":\"271\",\"nta\":\"272\",\"oki\":\"273\",\"omi\":\"274\",\"sal\":\"275\",\"a l\":\"276\",\"kac\":\"277\",\"lla\":\"278\",\"wad\":\"279\",\"war\":\"280\",\"amm\":\"281\",\"dom\":\"282\",\"r m\":\"283\",\"ras\":\"284\",\"sai\":\"285\",\" lo\":\"286\",\"ats\":\"287\",\"hal\":\"288\",\"kat\":\"289\",\"li \":\"290\",\"lok\":\"291\",\"n c\":\"292\",\"nar\":\"293\",\"tin\":\"294\",\"afa\":\"295\",\"bub\":\"296\",\"i g\":\"297\",\"isa\":\"298\",\"mak\":\"299\"},\"hawaiian\":{\" ka\":\"0\",\"na \":\"1\",\" o \":\"2\",\"ka \":\"3\",\" ma\":\"4\",\" a \":\"5\",\" la\":\"6\",\"a i\":\"7\",\"a m\":\"8\",\" i \":\"9\",\"la \":\"10\",\"ana\":\"11\",\"ai \":\"12\",\"ia \":\"13\",\"a o\":\"14\",\"a k\":\"15\",\"a h\":\"16\",\"o k\":\"17\",\" ke\":\"18\",\"a a\":\"19\",\"i k\":\"20\",\" ho\":\"21\",\" ia\":\"22\",\"ua \":\"23\",\" na\":\"24\",\" me\":\"25\",\"e k\":\"26\",\"e a\":\"27\",\"au \":\"28\",\"ke \":\"29\",\"ma \":\"30\",\"mai\":\"31\",\"aku\":\"32\",\" ak\":\"33\",\"ahi\":\"34\",\" ha\":\"35\",\" ko\":\"36\",\" e \":\"37\",\"a l\":\"38\",\" no\":\"39\",\"me \":\"40\",\"ku \":\"41\",\"aka\":\"42\",\"kan\":\"43\",\"no \":\"44\",\"i a\":\"45\",\"ho \":\"46\",\"ou \":\"47\",\" ai\":\"48\",\"i o\":\"49\",\"a p\":\"50\",\"o l\":\"51\",\"o a\":\"52\",\"ama\":\"53\",\"a n\":\"54\",\" an\":\"55\",\"i m\":\"56\",\"han\":\"57\",\"i i\":\"58\",\"iho\":\"59\",\"kou\":\"60\",\"ne \":\"61\",\" ih\":\"62\",\"o i\":\"63\",\"iki\":\"64\",\"ona\":\"65\",\"hoo\":\"66\",\"le \":\"67\",\"e h\":\"68\",\" he\":\"69\",\"ina\":\"70\",\" wa\":\"71\",\"ea \":\"72\",\"ako\":\"73\",\"u i\":\"74\",\"kah\":\"75\",\"oe \":\"76\",\"i l\":\"77\",\"u a\":\"78\",\" pa\":\"79\",\"hoi\":\"80\",\"e i\":\"81\",\"era\":\"82\",\"ko \":\"83\",\"u m\":\"84\",\"kua\":\"85\",\"mak\":\"86\",\"oi \":\"87\",\"kai\":\"88\",\"i n\":\"89\",\"a e\":\"90\",\"hin\":\"91\",\"ane\":\"92\",\" ol\":\"93\",\"i h\":\"94\",\"mea\":\"95\",\"wah\":\"96\",\"lak\":\"97\",\"e m\":\"98\",\"o n\":\"99\",\"u l\":\"100\",\"ika\":\"101\",\"ki \":\"102\",\"a w\":\"103\",\"mal\":\"104\",\"hi \":\"105\",\"e n\":\"106\",\"u o\":\"107\",\"hik\":\"108\",\" ku\":\"109\",\"e l\":\"110\",\"ele\":\"111\",\"ra \":\"112\",\"ber\":\"113\",\"ine\":\"114\",\"abe\":\"115\",\"ain\":\"116\",\"ala\":\"117\",\"lo \":\"118\",\" po\":\"119\",\"kon\":\"120\",\" ab\":\"121\",\"ole\":\"122\",\"he \":\"123\",\"pau\":\"124\",\"mah\":\"125\",\"va \":\"126\",\"ela\":\"127\",\"kau\":\"128\",\"nak\":\"129\",\" oe\":\"130\",\"kei\":\"131\",\"oia\":\"132\",\" ie\":\"133\",\"ram\":\"134\",\" oi\":\"135\",\"oa \":\"136\",\"eho\":\"137\",\"hov\":\"138\",\"ieh\":\"139\",\"ova\":\"140\",\" ua\":\"141\",\"una\":\"142\",\"ara\":\"143\",\"o s\":\"144\",\"awa\":\"145\",\"o o\":\"146\",\"nau\":\"147\",\"u n\":\"148\",\"wa \":\"149\",\"wai\":\"150\",\"hel\":\"151\",\" ae\":\"152\",\" al\":\"153\",\"ae \":\"154\",\"ta \":\"155\",\"aik\":\"156\",\" hi\":\"157\",\"ale\":\"158\",\"ila\":\"159\",\"lel\":\"160\",\"ali\":\"161\",\"eik\":\"162\",\"olo\":\"163\",\"onu\":\"164\",\" lo\":\"165\",\"aua\":\"166\",\"e o\":\"167\",\"ola\":\"168\",\"hon\":\"169\",\"mam\":\"170\",\"nan\":\"171\",\" au\":\"172\",\"aha\":\"173\",\"lau\":\"174\",\"nua\":\"175\",\"oho\":\"176\",\"oma\":\"177\",\" ao\":\"178\",\"ii \":\"179\",\"alu\":\"180\",\"ima\":\"181\",\"mau\":\"182\",\"ike\":\"183\",\"apa\":\"184\",\"elo\":\"185\",\"lii\":\"186\",\"poe\":\"187\",\"aia\":\"188\",\"noa\":\"189\",\" in\":\"190\",\"o m\":\"191\",\"oka\":\"192\",\"'u \":\"193\",\"aho\":\"194\",\"ei \":\"195\",\"eka\":\"196\",\"ha \":\"197\",\"lu \":\"198\",\"nei\":\"199\",\"hol\":\"200\",\"ino\":\"201\",\"o e\":\"202\",\"ema\":\"203\",\"iwa\":\"204\",\"olu\":\"205\",\"ada\":\"206\",\"naa\":\"207\",\"pa \":\"208\",\"u k\":\"209\",\"ewa\":\"210\",\"hua\":\"211\",\"lam\":\"212\",\"lua\":\"213\",\"o h\":\"214\",\"ook\":\"215\",\"u h\":\"216\",\" li\":\"217\",\"ahu\":\"218\",\"amu\":\"219\",\"ui \":\"220\",\" il\":\"221\",\" mo\":\"222\",\" se\":\"223\",\"eia\":\"224\",\"law\":\"225\",\" hu\":\"226\",\" ik\":\"227\",\"ail\":\"228\",\"e p\":\"229\",\"li \":\"230\",\"lun\":\"231\",\"uli\":\"232\",\"io \":\"233\",\"kik\":\"234\",\"noh\":\"235\",\"u e\":\"236\",\" sa\":\"237\",\"aaw\":\"238\",\"awe\":\"239\",\"ena\":\"240\",\"hal\":\"241\",\"kol\":\"242\",\"lan\":\"243\",\" le\":\"244\",\" ne\":\"245\",\"a'u\":\"246\",\"ilo\":\"247\",\"kap\":\"248\",\"oko\":\"249\",\"sa \":\"250\",\" pe\":\"251\",\"hop\":\"252\",\"loa\":\"253\",\"ope\":\"254\",\"pe \":\"255\",\" ad\":\"256\",\" pu\":\"257\",\"ahe\":\"258\",\"aol\":\"259\",\"ia'\":\"260\",\"lai\":\"261\",\"loh\":\"262\",\"na'\":\"263\",\"oom\":\"264\",\"aau\":\"265\",\"eri\":\"266\",\"kul\":\"267\",\"we \":\"268\",\"ake\":\"269\",\"kek\":\"270\",\"laa\":\"271\",\"ri \":\"272\",\"iku\":\"273\",\"kak\":\"274\",\"lim\":\"275\",\"nah\":\"276\",\"ner\":\"277\",\"nui\":\"278\",\"ono\":\"279\",\"a u\":\"280\",\"dam\":\"281\",\"kum\":\"282\",\"lok\":\"283\",\"mua\":\"284\",\"uma\":\"285\",\"wal\":\"286\",\"wi \":\"287\",\"'i \":\"288\",\"a'i\":\"289\",\"aan\":\"290\",\"alo\":\"291\",\"eta\":\"292\",\"mu \":\"293\",\"ohe\":\"294\",\"u p\":\"295\",\"ula\":\"296\",\"uwa\":\"297\",\" nu\":\"298\",\"amo\":\"299\"},\"hindi\":{\"\\u0947\\u0902 \":\"0\",\" \\u0939\\u0948\":\"1\",\"\\u092e\\u0947\\u0902\":\"2\",\" \\u092e\\u0947\":\"3\",\"\\u0928\\u0947 \":\"4\",\"\\u0915\\u0940 \":\"5\",\"\\u0915\\u0947 \":\"6\",\"\\u0939\\u0948 \":\"7\",\" \\u0915\\u0947\":\"8\",\" \\u0915\\u0940\":\"9\",\" \\u0915\\u094b\":\"10\",\"\\u094b\\u0902 \":\"11\",\"\\u0915\\u094b \":\"12\",\"\\u093e \\u0939\":\"13\",\" \\u0915\\u093e\":\"14\",\"\\u0938\\u0947 \":\"15\",\"\\u093e \\u0915\":\"16\",\"\\u0947 \\u0915\":\"17\",\"\\u0902 \\u0915\":\"18\",\"\\u092f\\u093e \":\"19\",\" \\u0915\\u093f\":\"20\",\" \\u0938\\u0947\":\"21\",\"\\u0915\\u093e \":\"22\",\"\\u0940 \\u0915\":\"23\",\" \\u0928\\u0947\":\"24\",\" \\u0914\\u0930\":\"25\",\"\\u0914\\u0930 \":\"26\",\"\\u0928\\u093e \":\"27\",\"\\u0915\\u093f \":\"28\",\"\\u092d\\u0940 \":\"29\",\"\\u0940 \\u0938\":\"30\",\" \\u091c\\u093e\":\"31\",\" \\u092a\\u0930\":\"32\",\"\\u093e\\u0930 \":\"33\",\" \\u0915\\u0930\":\"34\",\"\\u0940 \\u0939\":\"35\",\" \\u0939\\u094b\":\"36\",\"\\u0939\\u0940 \":\"37\",\"\\u093f\\u092f\\u093e\":\"38\",\" \\u0907\\u0938\":\"39\",\" \\u0930\\u0939\":\"40\",\"\\u0930 \\u0915\":\"41\",\"\\u0941\\u0928\\u093e\":\"42\",\"\\u0924\\u093e \":\"43\",\"\\u093e\\u0928 \":\"44\",\"\\u0947 \\u0938\":\"45\",\" \\u092d\\u0940\":\"46\",\" \\u0930\\u093e\":\"47\",\"\\u0947 \\u0939\":\"48\",\" \\u091a\\u0941\":\"49\",\" \\u092a\\u093e\":\"50\",\"\\u092a\\u0930 \":\"51\",\"\\u091a\\u0941\\u0928\":\"52\",\"\\u0928\\u093e\\u0935\":\"53\",\" \\u0915\\u0939\":\"54\",\"\\u092a\\u094d\\u0930\":\"55\",\" \\u092d\\u093e\":\"56\",\"\\u0930\\u093e\\u091c\":\"57\",\"\\u0939\\u0948\\u0902\":\"58\",\"\\u093e \\u0938\":\"59\",\"\\u0948 \\u0915\":\"60\",\"\\u0948\\u0902 \":\"61\",\"\\u0928\\u0940 \":\"62\",\"\\u0932 \\u0915\":\"63\",\"\\u0940\\u0902 \":\"64\",\"\\u093c\\u0940 \":\"65\",\"\\u0925\\u093e \":\"66\",\"\\u0930\\u0940 \":\"67\",\"\\u093e\\u0935 \":\"68\",\"\\u0947 \\u092c\":\"69\",\" \\u092a\\u094d\":\"70\",\"\\u0915\\u094d\\u0937\":\"71\",\"\\u092a\\u093e \":\"72\",\"\\u0932\\u0947 \":\"73\",\" \\u0926\\u0947\":\"74\",\"\\u0932\\u093e \":\"75\",\"\\u0939\\u093e \":\"76\",\"\\u093e\\u091c\\u092a\":\"77\",\" \\u0925\\u093e\":\"78\",\" \\u0928\\u0939\":\"79\",\"\\u0907\\u0938 \":\"80\",\"\\u0915\\u0930 \":\"81\",\"\\u091c\\u092a\\u093e\":\"82\",\"\\u0928\\u0939\\u0940\":\"83\",\"\\u092d\\u093e\\u091c\":\"84\",\"\\u092f\\u094b\\u0902\":\"85\",\"\\u0930 \\u0938\":\"86\",\"\\u0939\\u0940\\u0902\":\"87\",\" \\u0905\\u092e\":\"88\",\" \\u092c\\u093e\":\"89\",\" \\u092e\\u093e\":\"90\",\" \\u0935\\u093f\":\"91\",\"\\u0930\\u0940\\u0915\":\"92\",\"\\u093f\\u090f \":\"93\",\"\\u0947 \\u092a\":\"94\",\"\\u094d\\u092f\\u093e\":\"95\",\" \\u0939\\u0940\":\"96\",\"\\u0902 \\u092e\":\"97\",\"\\u0915\\u093e\\u0930\":\"98\",\"\\u093e \\u091c\":\"99\",\"\\u0947 \\u0932\":\"100\",\" \\u0924\\u093e\":\"101\",\" \\u0926\\u093f\":\"102\",\" \\u0938\\u093e\":\"103\",\" \\u0939\\u092e\":\"104\",\"\\u093e \\u0928\":\"105\",\"\\u093e \\u092e\":\"106\",\"\\u093e\\u0915\\u093c\":\"107\",\"\\u094d\\u0924\\u093e\":\"108\",\" \\u090f\\u0915\":\"109\",\" \\u0938\\u0902\":\"110\",\" \\u0938\\u094d\":\"111\",\"\\u0905\\u092e\\u0930\":\"112\",\"\\u0915\\u093c\\u0940\":\"113\",\"\\u0924\\u093e\\u091c\":\"114\",\"\\u092e\\u0930\\u0940\":\"115\",\"\\u0938\\u094d\\u0925\":\"116\",\"\\u093e \\u0925\":\"117\",\"\\u093e\\u0930\\u094d\":\"118\",\" \\u0939\\u0941\":\"119\",\"\\u0907\\u0930\\u093e\":\"120\",\"\\u090f\\u0915 \":\"121\",\"\\u0928 \\u0915\":\"122\",\"\\u0930 \\u092e\":\"123\",\"\\u0930\\u093e\\u0915\":\"124\",\"\\u0940 \\u091c\":\"125\",\"\\u0940 \\u0928\":\"126\",\" \\u0907\\u0930\":\"127\",\" \\u0909\\u0928\":\"128\",\" \\u092a\\u0939\":\"129\",\"\\u0915\\u0939\\u093e\":\"130\",\"\\u0924\\u0947 \":\"131\",\"\\u0947 \\u0905\":\"132\",\" \\u0924\\u094b\":\"133\",\" \\u0938\\u0941\":\"134\",\"\\u0924\\u093f \":\"135\",\"\\u0924\\u0940 \":\"136\",\"\\u0924\\u094b \":\"137\",\"\\u092e\\u093f\\u0932\":\"138\",\"\\u093f\\u0915 \":\"139\",\"\\u093f\\u092f\\u094b\":\"140\",\"\\u094d\\u0930\\u0947\":\"141\",\" \\u0905\\u092a\":\"142\",\" \\u092b\\u093c\":\"143\",\" \\u0932\\u093f\":\"144\",\" \\u0932\\u094b\":\"145\",\" \\u0938\\u092e\":\"146\",\"\\u092e \\u0915\":\"147\",\"\\u0930\\u094d\\u091f\":\"148\",\"\\u0939\\u094b \":\"149\",\"\\u093e \\u091a\":\"150\",\"\\u093e\\u0908 \":\"151\",\"\\u093e\\u0928\\u0947\":\"152\",\"\\u093f\\u0928 \":\"153\",\"\\u094d\\u092f \":\"154\",\" \\u0909\\u0938\":\"155\",\" \\u0915\\u093c\":\"156\",\" \\u0938\\u0915\":\"157\",\" \\u0938\\u0948\":\"158\",\"\\u0902 \\u092a\":\"159\",\"\\u0902 \\u0939\":\"160\",\"\\u0917\\u0940 \":\"161\",\"\\u0924 \\u0915\":\"162\",\"\\u092e\\u093e\\u0928\":\"163\",\"\\u0930 \\u0928\":\"164\",\"\\u0937\\u094d\\u091f\":\"165\",\"\\u0938 \\u0915\":\"166\",\"\\u0938\\u094d\\u0924\":\"167\",\"\\u093e\\u0901 \":\"168\",\"\\u0940 \\u092c\":\"169\",\"\\u0940 \\u092e\":\"170\",\"\\u094d\\u0930\\u0940\":\"171\",\" \\u0926\\u094b\":\"172\",\" \\u092e\\u093f\":\"173\",\" \\u092e\\u0941\":\"174\",\" \\u0932\\u0947\":\"175\",\" \\u0936\\u093e\":\"176\",\"\\u0902 \\u0938\":\"177\",\"\\u091c\\u093c\\u093e\":\"178\",\"\\u0924\\u094d\\u0930\":\"179\",\"\\u0925\\u0940 \":\"180\",\"\\u0932\\u093f\\u090f\":\"181\",\"\\u0938\\u0940 \":\"182\",\"\\u093c\\u093e \":\"183\",\"\\u093c\\u093e\\u0930\":\"184\",\"\\u093e\\u0902\\u0917\":\"185\",\"\\u0947 \\u0926\":\"186\",\"\\u0947 \\u092e\":\"187\",\"\\u094d\\u0935 \":\"188\",\" \\u0928\\u093e\":\"189\",\" \\u092c\\u0928\":\"190\",\"\\u0902\\u0917\\u094d\":\"191\",\"\\u0915\\u093e\\u0902\":\"192\",\"\\u0917\\u093e \":\"193\",\"\\u0917\\u094d\\u0930\":\"194\",\"\\u091c\\u093e \":\"195\",\"\\u091c\\u094d\\u092f\":\"196\",\"\\u0926\\u0940 \":\"197\",\"\\u0928 \\u092e\":\"198\",\"\\u092a\\u093e\\u0930\":\"199\",\"\\u092d\\u093e \":\"200\",\"\\u0930\\u0939\\u0940\":\"201\",\"\\u0930\\u0947 \":\"202\",\"\\u0930\\u0947\\u0938\":\"203\",\"\\u0932\\u0940 \":\"204\",\"\\u0938\\u092d\\u093e\":\"205\",\"\\u093e \\u0930\":\"206\",\"\\u093e\\u0932 \":\"207\",\"\\u0940 \\u0905\":\"208\",\"\\u0940\\u0915\\u0940\":\"209\",\"\\u0947 \\u0924\":\"210\",\"\\u0947\\u0936 \":\"211\",\" \\u0905\\u0902\":\"212\",\" \\u0924\\u0915\":\"213\",\" \\u092f\\u093e\":\"214\",\"\\u0908 \\u0939\":\"215\",\"\\u0915\\u0930\\u0928\":\"216\",\"\\u0924\\u0915 \":\"217\",\"\\u0926\\u0947\\u0936\":\"218\",\"\\u0935\\u0930\\u094d\":\"219\",\"\\u093e\\u092f\\u093e\":\"220\",\"\\u0940 \\u092d\":\"221\",\"\\u0947\\u0938 \":\"222\",\"\\u094d\\u0937 \":\"223\",\" \\u0917\\u092f\":\"224\",\" \\u091c\\u093f\":\"225\",\" \\u0925\\u0940\":\"226\",\" \\u092c\\u0921\":\"227\",\" \\u092f\\u0939\":\"228\",\" \\u0935\\u093e\":\"229\",\"\\u0902\\u0924\\u0930\":\"230\",\"\\u0905\\u0902\\u0924\":\"231\",\"\\u0915\\u093c \":\"232\",\"\\u0917\\u092f\\u093e\":\"233\",\"\\u091f\\u0940 \":\"234\",\"\\u0928\\u093f\\u0915\":\"235\",\"\\u0928\\u094d\\u0939\":\"236\",\"\\u092a\\u0939\\u0932\":\"237\",\"\\u092c\\u0921\\u093c\":\"238\",\"\\u092e\\u093e\\u0930\":\"239\",\"\\u0930 \\u092a\":\"240\",\"\\u0930\\u0928\\u0947\":\"241\",\"\\u093e\\u091c\\u093c\":\"242\",\"\\u093f \\u0907\":\"243\",\"\\u0940 \\u0930\":\"244\",\"\\u0947 \\u091c\":\"245\",\"\\u0947 \\u0935\":\"246\",\"\\u094d\\u091f \":\"247\",\"\\u094d\\u091f\\u0940\":\"248\",\" \\u0905\\u092c\":\"249\",\" \\u0932\\u0917\":\"250\",\" \\u0935\\u0930\":\"251\",\" \\u0938\\u0940\":\"252\",\"\\u0902 \\u092d\":\"253\",\"\\u0909\\u0928\\u094d\":\"254\",\"\\u0915 \\u0915\":\"255\",\"\\u0915\\u093f\\u092f\":\"256\",\"\\u0926\\u0947\\u0916\":\"257\",\"\\u092a\\u0942\\u0930\":\"258\",\"\\u092b\\u093c\\u094d\":\"259\",\"\\u092f\\u0939 \":\"260\",\"\\u092f\\u093e\\u0928\":\"261\",\"\\u0930\\u093f\\u0915\":\"262\",\"\\u0930\\u093f\\u092f\":\"263\",\"\\u0930\\u094d\\u0921\":\"264\",\"\\u0932\\u0947\\u0915\":\"265\",\"\\u0938\\u0915\\u0924\":\"266\",\"\\u0939\\u094b\\u0902\":\"267\",\"\\u0939\\u094b\\u0917\":\"268\",\"\\u093e \\u0905\":\"269\",\"\\u093e \\u0926\":\"270\",\"\\u093e \\u092a\":\"271\",\"\\u093e\\u0926 \":\"272\",\"\\u093e\\u0930\\u093e\":\"273\",\"\\u093f\\u0924 \":\"274\",\"\\u0940 \\u0924\":\"275\",\"\\u0940 \\u092a\":\"276\",\"\\u094b \\u0915\":\"277\",\"\\u094b \\u0926\":\"278\",\" \\u0924\\u0947\":\"279\",\" \\u0928\\u093f\":\"280\",\" \\u0938\\u0930\":\"281\",\" \\u0939\\u093e\":\"282\",\"\\u0902 \\u0926\":\"283\",\"\\u0905\\u092a\\u0928\":\"284\",\"\\u091c\\u093e\\u0928\":\"285\",\"\\u0924 \\u092e\":\"286\",\"\\u0925\\u093f\\u0924\":\"287\",\"\\u092a\\u0928\\u0940\":\"288\",\"\\u092e\\u0939\\u0932\":\"289\",\"\\u0930 \\u0939\":\"290\",\"\\u0932\\u094b\\u0917\":\"291\",\"\\u0935 \\u0915\":\"292\",\"\\u0939\\u0928\\u093e\":\"293\",\"\\u0939\\u0932 \":\"294\",\"\\u0939\\u093e\\u0901\":\"295\",\"\\u093e\\u091c\\u094d\":\"296\",\"\\u093e\\u0928\\u093e\":\"297\",\"\\u093f\\u0915\\u094d\":\"298\",\"\\u093f\\u0938\\u094d\":\"299\"},\"hungarian\":{\" a \":\"0\",\" az\":\"1\",\" sz\":\"2\",\"az \":\"3\",\" me\":\"4\",\"en \":\"5\",\" el\":\"6\",\" ho\":\"7\",\"ek \":\"8\",\"gy \":\"9\",\"tt \":\"10\",\"ett\":\"11\",\"sze\":\"12\",\" fe\":\"13\",\"\\u00e9s \":\"14\",\" ki\":\"15\",\"tet\":\"16\",\" be\":\"17\",\"et \":\"18\",\"ter\":\"19\",\" k\\u00f6\":\"20\",\" \\u00e9s\":\"21\",\"hog\":\"22\",\"meg\":\"23\",\"ogy\":\"24\",\"szt\":\"25\",\"te \":\"26\",\"t a\":\"27\",\"zet\":\"28\",\"a m\":\"29\",\"nek\":\"30\",\"nt \":\"31\",\"s\\u00e9g\":\"32\",\"sz\\u00e1\":\"33\",\"ak \":\"34\",\" va\":\"35\",\"an \":\"36\",\"eze\":\"37\",\"ra \":\"38\",\"ta \":\"39\",\" mi\":\"40\",\"int\":\"41\",\"k\\u00f6z\":\"42\",\" is\":\"43\",\"esz\":\"44\",\"fel\":\"45\",\"min\":\"46\",\"nak\":\"47\",\"ors\":\"48\",\"zer\":\"49\",\" te\":\"50\",\"a a\":\"51\",\"a k\":\"52\",\"is \":\"53\",\" cs\":\"54\",\"ele\":\"55\",\"er \":\"56\",\"men\":\"57\",\"si \":\"58\",\"tek\":\"59\",\"ti \":\"60\",\" ne\":\"61\",\"csa\":\"62\",\"ent\":\"63\",\"z e\":\"64\",\"a t\":\"65\",\"ala\":\"66\",\"ere\":\"67\",\"es \":\"68\",\"lom\":\"69\",\"lte\":\"70\",\"mon\":\"71\",\"ond\":\"72\",\"rsz\":\"73\",\"sza\":\"74\",\"tte\":\"75\",\"z\\u00e1g\":\"76\",\"\\u00e1ny\":\"77\",\" fo\":\"78\",\" ma\":\"79\",\"ai \":\"80\",\"ben\":\"81\",\"el \":\"82\",\"ene\":\"83\",\"ik \":\"84\",\"jel\":\"85\",\"t\\u00e1s\":\"86\",\"\\u00e1ll\":\"87\",\" ha\":\"88\",\" le\":\"89\",\" \\u00e1l\":\"90\",\"agy\":\"91\",\"al\\u00e1\":\"92\",\"isz\":\"93\",\"y a\":\"94\",\"zte\":\"95\",\"\\u00e1s \":\"96\",\" al\":\"97\",\"e a\":\"98\",\"egy\":\"99\",\"ely\":\"100\",\"for\":\"101\",\"lat\":\"102\",\"lt \":\"103\",\"n a\":\"104\",\"oga\":\"105\",\"on \":\"106\",\"re \":\"107\",\"st \":\"108\",\"s\\u00e1g\":\"109\",\"t m\":\"110\",\"\\u00e1n \":\"111\",\"\\u00e9t \":\"112\",\"\\u00fclt\":\"113\",\" je\":\"114\",\"gi \":\"115\",\"k a\":\"116\",\"k\\u00fcl\":\"117\",\"lam\":\"118\",\"len\":\"119\",\"l\\u00e1s\":\"120\",\"m\\u00e1s\":\"121\",\"s k\":\"122\",\"vez\":\"123\",\"\\u00e1so\":\"124\",\"\\u00f6z\\u00f6\":\"125\",\" ta\":\"126\",\"a s\":\"127\",\"a v\":\"128\",\"asz\":\"129\",\"at\\u00e1\":\"130\",\"et\\u0151\":\"131\",\"kez\":\"132\",\"let\":\"133\",\"mag\":\"134\",\"nem\":\"135\",\"sz\\u00e9\":\"136\",\"z m\":\"137\",\"\\u00e1t \":\"138\",\"\\u00e9te\":\"139\",\"\\u00f6lt\":\"140\",\" de\":\"141\",\" gy\":\"142\",\" k\\u00e9\":\"143\",\" mo\":\"144\",\" v\\u00e1\":\"145\",\" \\u00e9r\":\"146\",\"a b\":\"147\",\"a f\":\"148\",\"ami\":\"149\",\"at \":\"150\",\"ato\":\"151\",\"att\":\"152\",\"bef\":\"153\",\"dta\":\"154\",\"gya\":\"155\",\"hat\":\"156\",\"i s\":\"157\",\"las\":\"158\",\"ndt\":\"159\",\"rt \":\"160\",\"szo\":\"161\",\"t k\":\"162\",\"t\\u00e1r\":\"163\",\"t\\u00e9s\":\"164\",\"van\":\"165\",\"\\u00e1s\\u00e1\":\"166\",\"\\u00f3l \":\"167\",\" b\\u00e9\":\"168\",\" eg\":\"169\",\" or\":\"170\",\" p\\u00e1\":\"171\",\" p\\u00e9\":\"172\",\" ve\":\"173\",\"ban\":\"174\",\"eke\":\"175\",\"ek\\u00fc\":\"176\",\"el\\u0151\":\"177\",\"erv\":\"178\",\"ete\":\"179\",\"fog\":\"180\",\"i a\":\"181\",\"kis\":\"182\",\"l\\u00e1d\":\"183\",\"nte\":\"184\",\"nye\":\"185\",\"nyi\":\"186\",\"ok \":\"187\",\"om\\u00e1\":\"188\",\"os \":\"189\",\"r\\u00e1n\":\"190\",\"r\\u00e1s\":\"191\",\"sal\":\"192\",\"t e\":\"193\",\"v\\u00e1l\":\"194\",\"yar\":\"195\",\"\\u00e1go\":\"196\",\"\\u00e1la\":\"197\",\"\\u00e9ge\":\"198\",\"\\u00e9ny\":\"199\",\"\\u00f6tt\":\"200\",\" t\\u00e1\":\"201\",\"ad\\u00f3\":\"202\",\"elh\":\"203\",\"fej\":\"204\",\"het\":\"205\",\"hoz\":\"206\",\"ill\":\"207\",\"j\\u00e1r\":\"208\",\"k\\u00e9s\":\"209\",\"llo\":\"210\",\"mi \":\"211\",\"ny \":\"212\",\"ont\":\"213\",\"ren\":\"214\",\"res\":\"215\",\"rin\":\"216\",\"s a\":\"217\",\"s e\":\"218\",\"ssz\":\"219\",\"zt \":\"220\",\" ez\":\"221\",\" ka\":\"222\",\" ke\":\"223\",\" ko\":\"224\",\" re\":\"225\",\"a h\":\"226\",\"a n\":\"227\",\"den\":\"228\",\"d\\u00f3 \":\"229\",\"efo\":\"230\",\"gad\":\"231\",\"gat\":\"232\",\"gye\":\"233\",\"hel\":\"234\",\"k e\":\"235\",\"ket\":\"236\",\"les\":\"237\",\"m\\u00e1n\":\"238\",\"nde\":\"239\",\"nis\":\"240\",\"ozz\":\"241\",\"t b\":\"242\",\"t i\":\"243\",\"t \\u00e9\":\"244\",\"tat\":\"245\",\"tos\":\"246\",\"val\":\"247\",\"z o\":\"248\",\"zak\":\"249\",\"\\u00e1d \":\"250\",\"\\u00e1ly\":\"251\",\"\\u00e1ra\":\"252\",\"\\u00e9si\":\"253\",\"\\u00e9sz\":\"254\",\" ak\":\"255\",\" am\":\"256\",\" es\":\"257\",\" h\\u00e1\":\"258\",\" ny\":\"259\",\" t\\u00f6\":\"260\",\"aka\":\"261\",\"art\":\"262\",\"at\\u00f3\":\"263\",\"azt\":\"264\",\"bbe\":\"265\",\"ber\":\"266\",\"ci\\u00f3\":\"267\",\"cso\":\"268\",\"em \":\"269\",\"eti\":\"270\",\"et\\u00e9\":\"271\",\"gal\":\"272\",\"i t\":\"273\",\"ini\":\"274\",\"ist\":\"275\",\"ja \":\"276\",\"ker\":\"277\",\"ki \":\"278\",\"kor\":\"279\",\"koz\":\"280\",\"l \\u00e9\":\"281\",\"lj\\u00e1\":\"282\",\"lye\":\"283\",\"n v\":\"284\",\"ni \":\"285\",\"p\\u00e1l\":\"286\",\"ror\":\"287\",\"r\\u00f3l\":\"288\",\"r\\u00fcl\":\"289\",\"s c\":\"290\",\"s p\":\"291\",\"s s\":\"292\",\"s v\":\"293\",\"sok\":\"294\",\"t j\":\"295\",\"t t\":\"296\",\"tar\":\"297\",\"tel\":\"298\",\"vat\":\"299\"},\"icelandic\":{\"a\\u00f0 \":\"0\",\"um \":\"1\",\" a\\u00f0\":\"2\",\"ir \":\"3\",\"i\\u00f0 \":\"4\",\"ur \":\"5\",\" ve\":\"6\",\" \\u00ed \":\"7\",\"na \":\"8\",\" \\u00e1 \":\"9\",\" se\":\"10\",\" er\":\"11\",\" og\":\"12\",\"ar \":\"13\",\"og \":\"14\",\"ver\":\"15\",\" mi\":\"16\",\"inn\":\"17\",\"nn \":\"18\",\" fy\":\"19\",\"er \":\"20\",\"fyr\":\"21\",\" ek\":\"22\",\" en\":\"23\",\" ha\":\"24\",\" he\":\"25\",\"ekk\":\"26\",\" st\":\"27\",\"ki \":\"28\",\"st \":\"29\",\"\\u00f0i \":\"30\",\" ba\":\"31\",\" me\":\"32\",\" vi\":\"33\",\"ig \":\"34\",\"rir\":\"35\",\"yri\":\"36\",\" um\":\"37\",\"g f\":\"38\",\"leg\":\"39\",\"lei\":\"40\",\"ns \":\"41\",\"\\u00f0 s\":\"42\",\" ei\":\"43\",\" \\u00fea\":\"44\",\"in \":\"45\",\"kki\":\"46\",\"r h\":\"47\",\"r s\":\"48\",\"egi\":\"49\",\"ein\":\"50\",\"ga \":\"51\",\"ing\":\"52\",\"ra \":\"53\",\"sta\":\"54\",\" va\":\"55\",\" \\u00fee\":\"56\",\"ann\":\"57\",\"en \":\"58\",\"mil\":\"59\",\"sem\":\"60\",\"tj\\u00f3\":\"61\",\"ar\\u00f0\":\"62\",\"di \":\"63\",\"eit\":\"64\",\"haf\":\"65\",\"ill\":\"66\",\"ins\":\"67\",\"ist\":\"68\",\"llj\":\"69\",\"ndi\":\"70\",\"r a\":\"71\",\"r e\":\"72\",\"seg\":\"73\",\"un \":\"74\",\"var\":\"75\",\" bi\":\"76\",\" el\":\"77\",\" fo\":\"78\",\" ge\":\"79\",\" yf\":\"80\",\"and\":\"81\",\"aug\":\"82\",\"bau\":\"83\",\"big\":\"84\",\"ega\":\"85\",\"eld\":\"86\",\"er\\u00f0\":\"87\",\"fir\":\"88\",\"foo\":\"89\",\"gin\":\"90\",\"itt\":\"91\",\"n s\":\"92\",\"ngi\":\"93\",\"num\":\"94\",\"od \":\"95\",\"ood\":\"96\",\"sin\":\"97\",\"ta \":\"98\",\"tt \":\"99\",\"vi\\u00f0\":\"100\",\"yfi\":\"101\",\"\\u00f0 e\":\"102\",\"\\u00f0 f\":\"103\",\" hr\":\"104\",\" s\\u00e9\":\"105\",\" \\u00fev\":\"106\",\"a e\":\"107\",\"a \\u00e1\":\"108\",\"em \":\"109\",\"gi \":\"110\",\"i f\":\"111\",\"jar\":\"112\",\"j\\u00f3r\":\"113\",\"lja\":\"114\",\"m e\":\"115\",\"r \\u00e1\":\"116\",\"rei\":\"117\",\"rst\":\"118\",\"r\\u00f0a\":\"119\",\"r\\u00f0i\":\"120\",\"r\\u00f0u\":\"121\",\"stj\":\"122\",\"und\":\"123\",\"veg\":\"124\",\"v\\u00ed \":\"125\",\"\\u00f0 v\":\"126\",\"\\u00fea\\u00f0\":\"127\",\"\\u00fev\\u00ed\":\"128\",\" fj\":\"129\",\" ko\":\"130\",\" sl\":\"131\",\"eik\":\"132\",\"end\":\"133\",\"ert\":\"134\",\"ess\":\"135\",\"fj\\u00e1\":\"136\",\"fur\":\"137\",\"gir\":\"138\",\"h\\u00fas\":\"139\",\"j\\u00e1r\":\"140\",\"n e\":\"141\",\"ri \":\"142\",\"tar\":\"143\",\"\\u00f0 \\u00fe\":\"144\",\"\\u00f0ar\":\"145\",\"\\u00f0ur\":\"146\",\"\\u00fees\":\"147\",\" br\":\"148\",\" h\\u00fa\":\"149\",\" kr\":\"150\",\" le\":\"151\",\" up\":\"152\",\"a s\":\"153\",\"egg\":\"154\",\"i s\":\"155\",\"irt\":\"156\",\"ja \":\"157\",\"ki\\u00f0\":\"158\",\"len\":\"159\",\"me\\u00f0\":\"160\",\"mik\":\"161\",\"n b\":\"162\",\"nar\":\"163\",\"nir\":\"164\",\"nun\":\"165\",\"r f\":\"166\",\"r v\":\"167\",\"ri\\u00f0\":\"168\",\"rt \":\"169\",\"sti\":\"170\",\"t v\":\"171\",\"ti \":\"172\",\"una\":\"173\",\"upp\":\"174\",\"\\u00f0a \":\"175\",\"\\u00f3na\":\"176\",\" al\":\"177\",\" fr\":\"178\",\" gr\":\"179\",\"a v\":\"180\",\"all\":\"181\",\"an \":\"182\",\"da \":\"183\",\"ei\\u00f0\":\"184\",\"e\\u00f0 \":\"185\",\"fa \":\"186\",\"fra\":\"187\",\"g e\":\"188\",\"ger\":\"189\",\"gi\\u00f0\":\"190\",\"gt \":\"191\",\"han\":\"192\",\"hef\":\"193\",\"hel\":\"194\",\"her\":\"195\",\"hra\":\"196\",\"i a\":\"197\",\"i e\":\"198\",\"i v\":\"199\",\"i \\u00fe\":\"200\",\"iki\":\"201\",\"j\\u00f3n\":\"202\",\"j\\u00f6r\":\"203\",\"ka \":\"204\",\"kr\\u00f3\":\"205\",\"l\\u00edk\":\"206\",\"m h\":\"207\",\"n a\":\"208\",\"nga\":\"209\",\"r l\":\"210\",\"ram\":\"211\",\"ru \":\"212\",\"r\\u00e1\\u00f0\":\"213\",\"r\\u00f3n\":\"214\",\"svo\":\"215\",\"vin\":\"216\",\"\\u00ed b\":\"217\",\"\\u00ed h\":\"218\",\"\\u00f0 h\":\"219\",\"\\u00f0 k\":\"220\",\"\\u00f0 m\":\"221\",\"\\u00f6r\\u00f0\":\"222\",\" af\":\"223\",\" fa\":\"224\",\" l\\u00ed\":\"225\",\" r\\u00e1\":\"226\",\" sk\":\"227\",\" sv\":\"228\",\" te\":\"229\",\"a b\":\"230\",\"a f\":\"231\",\"a h\":\"232\",\"a k\":\"233\",\"a u\":\"234\",\"afi\":\"235\",\"agn\":\"236\",\"arn\":\"237\",\"ast\":\"238\",\"ber\":\"239\",\"efu\":\"240\",\"enn\":\"241\",\"erb\":\"242\",\"erg\":\"243\",\"fi \":\"244\",\"g a\":\"245\",\"gar\":\"246\",\"i\\u00f0s\":\"247\",\"ker\":\"248\",\"kke\":\"249\",\"lan\":\"250\",\"lj\\u00f3\":\"251\",\"llt\":\"252\",\"ma \":\"253\",\"mi\\u00f0\":\"254\",\"n v\":\"255\",\"n \\u00ed\":\"256\",\"nan\":\"257\",\"nda\":\"258\",\"ndu\":\"259\",\"ni\\u00f0\":\"260\",\"nna\":\"261\",\"nnu\":\"262\",\"nu \":\"263\",\"r o\":\"264\",\"rbe\":\"265\",\"rgi\":\"266\",\"sl\\u00f6\":\"267\",\"s\\u00e9 \":\"268\",\"t a\":\"269\",\"t h\":\"270\",\"til\":\"271\",\"tin\":\"272\",\"ugu\":\"273\",\"vil\":\"274\",\"ygg\":\"275\",\"\\u00e1 s\":\"276\",\"\\u00f0 a\":\"277\",\"\\u00f0 b\":\"278\",\"\\u00f3rn\":\"279\",\"\\u00f6gn\":\"280\",\"\\u00f6ku\":\"281\",\" at\":\"282\",\" fi\":\"283\",\" f\\u00e9\":\"284\",\" ka\":\"285\",\" ma\":\"286\",\" no\":\"287\",\" sa\":\"288\",\" si\":\"289\",\" ti\":\"290\",\" \\u00e1k\":\"291\",\"a m\":\"292\",\"a t\":\"293\",\"a \\u00ed\":\"294\",\"a \\u00fe\":\"295\",\"afa\":\"296\",\"afs\":\"297\",\"ald\":\"298\",\"arf\":\"299\"},\"indonesian\":{\"an \":\"0\",\" me\":\"1\",\"kan\":\"2\",\"ang\":\"3\",\"ng \":\"4\",\" pe\":\"5\",\"men\":\"6\",\" di\":\"7\",\" ke\":\"8\",\" da\":\"9\",\" se\":\"10\",\"eng\":\"11\",\" be\":\"12\",\"nga\":\"13\",\"nya\":\"14\",\" te\":\"15\",\"ah \":\"16\",\"ber\":\"17\",\"aka\":\"18\",\" ya\":\"19\",\"dan\":\"20\",\"di \":\"21\",\"yan\":\"22\",\"n p\":\"23\",\"per\":\"24\",\"a m\":\"25\",\"ita\":\"26\",\" pa\":\"27\",\"da \":\"28\",\"ata\":\"29\",\"ada\":\"30\",\"ya \":\"31\",\"ta \":\"32\",\" in\":\"33\",\"ala\":\"34\",\"eri\":\"35\",\"ia \":\"36\",\"a d\":\"37\",\"n k\":\"38\",\"am \":\"39\",\"ga \":\"40\",\"at \":\"41\",\"era\":\"42\",\"n d\":\"43\",\"ter\":\"44\",\" ka\":\"45\",\"a p\":\"46\",\"ari\":\"47\",\"emb\":\"48\",\"n m\":\"49\",\"ri \":\"50\",\" ba\":\"51\",\"aan\":\"52\",\"ak \":\"53\",\"ra \":\"54\",\" it\":\"55\",\"ara\":\"56\",\"ela\":\"57\",\"ni \":\"58\",\"ali\":\"59\",\"ran\":\"60\",\"ar \":\"61\",\"eru\":\"62\",\"lah\":\"63\",\"a b\":\"64\",\"asi\":\"65\",\"awa\":\"66\",\"eba\":\"67\",\"gan\":\"68\",\"n b\":\"69\",\" ha\":\"70\",\"ini\":\"71\",\"mer\":\"72\",\" la\":\"73\",\" mi\":\"74\",\"and\":\"75\",\"ena\":\"76\",\"wan\":\"77\",\" sa\":\"78\",\"aha\":\"79\",\"lam\":\"80\",\"n i\":\"81\",\"nda\":\"82\",\" wa\":\"83\",\"a i\":\"84\",\"dua\":\"85\",\"g m\":\"86\",\"mi \":\"87\",\"n a\":\"88\",\"rus\":\"89\",\"tel\":\"90\",\"yak\":\"91\",\" an\":\"92\",\"dal\":\"93\",\"h d\":\"94\",\"i s\":\"95\",\"ing\":\"96\",\"min\":\"97\",\"ngg\":\"98\",\"tak\":\"99\",\"ami\":\"100\",\"beb\":\"101\",\"den\":\"102\",\"gat\":\"103\",\"ian\":\"104\",\"ih \":\"105\",\"pad\":\"106\",\"rga\":\"107\",\"san\":\"108\",\"ua \":\"109\",\" de\":\"110\",\"a t\":\"111\",\"arg\":\"112\",\"dar\":\"113\",\"elu\":\"114\",\"har\":\"115\",\"i k\":\"116\",\"i m\":\"117\",\"i p\":\"118\",\"ika\":\"119\",\"in \":\"120\",\"iny\":\"121\",\"itu\":\"122\",\"mba\":\"123\",\"n t\":\"124\",\"ntu\":\"125\",\"pan\":\"126\",\"pen\":\"127\",\"sah\":\"128\",\"tan\":\"129\",\"tu \":\"130\",\"a k\":\"131\",\"ban\":\"132\",\"edu\":\"133\",\"eka\":\"134\",\"g d\":\"135\",\"ka \":\"136\",\"ker\":\"137\",\"nde\":\"138\",\"nta\":\"139\",\"ora\":\"140\",\"usa\":\"141\",\" du\":\"142\",\" ma\":\"143\",\"a s\":\"144\",\"ai \":\"145\",\"ant\":\"146\",\"bas\":\"147\",\"end\":\"148\",\"i d\":\"149\",\"ira\":\"150\",\"kam\":\"151\",\"lan\":\"152\",\"n s\":\"153\",\"uli\":\"154\",\"al \":\"155\",\"apa\":\"156\",\"ere\":\"157\",\"ert\":\"158\",\"lia\":\"159\",\"mem\":\"160\",\"rka\":\"161\",\"si \":\"162\",\"tal\":\"163\",\"ung\":\"164\",\" ak\":\"165\",\"a a\":\"166\",\"a w\":\"167\",\"ani\":\"168\",\"ask\":\"169\",\"ent\":\"170\",\"gar\":\"171\",\"haa\":\"172\",\"i i\":\"173\",\"isa\":\"174\",\"ked\":\"175\",\"mbe\":\"176\",\"ska\":\"177\",\"tor\":\"178\",\"uan\":\"179\",\"uk \":\"180\",\"uka\":\"181\",\" ad\":\"182\",\" to\":\"183\",\"asa\":\"184\",\"aya\":\"185\",\"bag\":\"186\",\"dia\":\"187\",\"dun\":\"188\",\"erj\":\"189\",\"mas\":\"190\",\"na \":\"191\",\"rek\":\"192\",\"rit\":\"193\",\"sih\":\"194\",\"us \":\"195\",\" bi\":\"196\",\"a h\":\"197\",\"ama\":\"198\",\"dib\":\"199\",\"ers\":\"200\",\"g s\":\"201\",\"han\":\"202\",\"ik \":\"203\",\"kem\":\"204\",\"ma \":\"205\",\"n l\":\"206\",\"nit\":\"207\",\"r b\":\"208\",\"rja\":\"209\",\"sa \":\"210\",\" ju\":\"211\",\" or\":\"212\",\" si\":\"213\",\" ti\":\"214\",\"a y\":\"215\",\"aga\":\"216\",\"any\":\"217\",\"as \":\"218\",\"cul\":\"219\",\"eme\":\"220\",\"emu\":\"221\",\"eny\":\"222\",\"epa\":\"223\",\"erb\":\"224\",\"erl\":\"225\",\"gi \":\"226\",\"h m\":\"227\",\"i a\":\"228\",\"kel\":\"229\",\"li \":\"230\",\"mel\":\"231\",\"nia\":\"232\",\"opa\":\"233\",\"rta\":\"234\",\"sia\":\"235\",\"tah\":\"236\",\"ula\":\"237\",\"un \":\"238\",\"unt\":\"239\",\" at\":\"240\",\" bu\":\"241\",\" pu\":\"242\",\" ta\":\"243\",\"agi\":\"244\",\"alu\":\"245\",\"amb\":\"246\",\"bah\":\"247\",\"bis\":\"248\",\"er \":\"249\",\"i t\":\"250\",\"ibe\":\"251\",\"ir \":\"252\",\"ja \":\"253\",\"k m\":\"254\",\"kar\":\"255\",\"lai\":\"256\",\"lal\":\"257\",\"lu \":\"258\",\"mpa\":\"259\",\"ngk\":\"260\",\"nja\":\"261\",\"or \":\"262\",\"pa \":\"263\",\"pas\":\"264\",\"pem\":\"265\",\"rak\":\"266\",\"rik\":\"267\",\"seb\":\"268\",\"tam\":\"269\",\"tem\":\"270\",\"top\":\"271\",\"tuk\":\"272\",\"uni\":\"273\",\"war\":\"274\",\" al\":\"275\",\" ga\":\"276\",\" ge\":\"277\",\" ir\":\"278\",\" ja\":\"279\",\" mu\":\"280\",\" na\":\"281\",\" pr\":\"282\",\" su\":\"283\",\" un\":\"284\",\"ad \":\"285\",\"adi\":\"286\",\"akt\":\"287\",\"ann\":\"288\",\"apo\":\"289\",\"bel\":\"290\",\"bul\":\"291\",\"der\":\"292\",\"ega\":\"293\",\"eke\":\"294\",\"ema\":\"295\",\"emp\":\"296\",\"ene\":\"297\",\"enj\":\"298\",\"esa\":\"299\"},\"italian\":{\" di\":\"0\",\"to \":\"1\",\"la \":\"2\",\" de\":\"3\",\"di \":\"4\",\"no \":\"5\",\" co\":\"6\",\"re \":\"7\",\"ion\":\"8\",\"e d\":\"9\",\" e \":\"10\",\"le \":\"11\",\"del\":\"12\",\"ne \":\"13\",\"ti \":\"14\",\"ell\":\"15\",\" la\":\"16\",\" un\":\"17\",\"ni \":\"18\",\"i d\":\"19\",\"per\":\"20\",\" pe\":\"21\",\"ent\":\"22\",\" in\":\"23\",\"one\":\"24\",\"he \":\"25\",\"ta \":\"26\",\"zio\":\"27\",\"che\":\"28\",\"o d\":\"29\",\"a d\":\"30\",\"na \":\"31\",\"ato\":\"32\",\"e s\":\"33\",\" so\":\"34\",\"i s\":\"35\",\"lla\":\"36\",\"a p\":\"37\",\"li \":\"38\",\"te \":\"39\",\" al\":\"40\",\" ch\":\"41\",\"er \":\"42\",\" pa\":\"43\",\" si\":\"44\",\"con\":\"45\",\"sta\":\"46\",\" pr\":\"47\",\"a c\":\"48\",\" se\":\"49\",\"el \":\"50\",\"ia \":\"51\",\"si \":\"52\",\"e p\":\"53\",\" da\":\"54\",\"e i\":\"55\",\"i p\":\"56\",\"ont\":\"57\",\"ano\":\"58\",\"i c\":\"59\",\"all\":\"60\",\"azi\":\"61\",\"nte\":\"62\",\"on \":\"63\",\"nti\":\"64\",\"o s\":\"65\",\" ri\":\"66\",\"i a\":\"67\",\"o a\":\"68\",\"un \":\"69\",\" an\":\"70\",\"are\":\"71\",\"ari\":\"72\",\"e a\":\"73\",\"i e\":\"74\",\"ita\":\"75\",\"men\":\"76\",\"ri \":\"77\",\" ca\":\"78\",\" il\":\"79\",\" no\":\"80\",\" po\":\"81\",\"a s\":\"82\",\"ant\":\"83\",\"il \":\"84\",\"in \":\"85\",\"a l\":\"86\",\"ati\":\"87\",\"cia\":\"88\",\"e c\":\"89\",\"ro \":\"90\",\"ann\":\"91\",\"est\":\"92\",\"gli\":\"93\",\"t\\u00e0 \":\"94\",\" qu\":\"95\",\"e l\":\"96\",\"nta\":\"97\",\" a \":\"98\",\"com\":\"99\",\"o c\":\"100\",\"ra \":\"101\",\" le\":\"102\",\" ne\":\"103\",\"ali\":\"104\",\"ere\":\"105\",\"ist\":\"106\",\" ma\":\"107\",\" \\u00e8 \":\"108\",\"io \":\"109\",\"lle\":\"110\",\"me \":\"111\",\"era\":\"112\",\"ica\":\"113\",\"ost\":\"114\",\"pro\":\"115\",\"tar\":\"116\",\"una\":\"117\",\" pi\":\"118\",\"da \":\"119\",\"tat\":\"120\",\" mi\":\"121\",\"att\":\"122\",\"ca \":\"123\",\"mo \":\"124\",\"non\":\"125\",\"par\":\"126\",\"sti\":\"127\",\" fa\":\"128\",\" i \":\"129\",\" re\":\"130\",\" su\":\"131\",\"ess\":\"132\",\"ini\":\"133\",\"nto\":\"134\",\"o l\":\"135\",\"ssi\":\"136\",\"tto\":\"137\",\"a e\":\"138\",\"ame\":\"139\",\"col\":\"140\",\"ei \":\"141\",\"ma \":\"142\",\"o i\":\"143\",\"za \":\"144\",\" st\":\"145\",\"a a\":\"146\",\"ale\":\"147\",\"anc\":\"148\",\"ani\":\"149\",\"i m\":\"150\",\"ian\":\"151\",\"o p\":\"152\",\"oni\":\"153\",\"sio\":\"154\",\"tan\":\"155\",\"tti\":\"156\",\" lo\":\"157\",\"i r\":\"158\",\"oci\":\"159\",\"oli\":\"160\",\"ona\":\"161\",\"ono\":\"162\",\"tra\":\"163\",\" l \":\"164\",\"a r\":\"165\",\"eri\":\"166\",\"ett\":\"167\",\"lo \":\"168\",\"nza\":\"169\",\"que\":\"170\",\"str\":\"171\",\"ter\":\"172\",\"tta\":\"173\",\" ba\":\"174\",\" li\":\"175\",\" te\":\"176\",\"ass\":\"177\",\"e f\":\"178\",\"enz\":\"179\",\"for\":\"180\",\"nno\":\"181\",\"olo\":\"182\",\"ori\":\"183\",\"res\":\"184\",\"tor\":\"185\",\" ci\":\"186\",\" vo\":\"187\",\"a i\":\"188\",\"al \":\"189\",\"chi\":\"190\",\"e n\":\"191\",\"lia\":\"192\",\"pre\":\"193\",\"ria\":\"194\",\"uni\":\"195\",\"ver\":\"196\",\" sp\":\"197\",\"imo\":\"198\",\"l a\":\"199\",\"l c\":\"200\",\"ran\":\"201\",\"sen\":\"202\",\"soc\":\"203\",\"tic\":\"204\",\" fi\":\"205\",\" mo\":\"206\",\"a n\":\"207\",\"ce \":\"208\",\"dei\":\"209\",\"ggi\":\"210\",\"gio\":\"211\",\"iti\":\"212\",\"l s\":\"213\",\"lit\":\"214\",\"ll \":\"215\",\"mon\":\"216\",\"ola\":\"217\",\"pac\":\"218\",\"sim\":\"219\",\"tit\":\"220\",\"utt\":\"221\",\"vol\":\"222\",\" ar\":\"223\",\" fo\":\"224\",\" ha\":\"225\",\" sa\":\"226\",\"acc\":\"227\",\"e r\":\"228\",\"ire\":\"229\",\"man\":\"230\",\"ntr\":\"231\",\"rat\":\"232\",\"sco\":\"233\",\"tro\":\"234\",\"tut\":\"235\",\"va \":\"236\",\" do\":\"237\",\" gi\":\"238\",\" me\":\"239\",\" sc\":\"240\",\" tu\":\"241\",\" ve\":\"242\",\" vi\":\"243\",\"a m\":\"244\",\"ber\":\"245\",\"can\":\"246\",\"cit\":\"247\",\"i l\":\"248\",\"ier\":\"249\",\"it\\u00e0\":\"250\",\"lli\":\"251\",\"min\":\"252\",\"n p\":\"253\",\"nat\":\"254\",\"nda\":\"255\",\"o e\":\"256\",\"o f\":\"257\",\"o u\":\"258\",\"ore\":\"259\",\"oro\":\"260\",\"ort\":\"261\",\"sto\":\"262\",\"ten\":\"263\",\"tiv\":\"264\",\"van\":\"265\",\"art\":\"266\",\"cco\":\"267\",\"ci \":\"268\",\"cos\":\"269\",\"dal\":\"270\",\"e v\":\"271\",\"i i\":\"272\",\"ila\":\"273\",\"ino\":\"274\",\"l p\":\"275\",\"n c\":\"276\",\"nit\":\"277\",\"ole\":\"278\",\"ome\":\"279\",\"po \":\"280\",\"rio\":\"281\",\"sa \":\"282\",\" ce\":\"283\",\" es\":\"284\",\" tr\":\"285\",\"a b\":\"286\",\"and\":\"287\",\"ata\":\"288\",\"der\":\"289\",\"ens\":\"290\",\"ers\":\"291\",\"gi \":\"292\",\"ial\":\"293\",\"ina\":\"294\",\"itt\":\"295\",\"izi\":\"296\",\"lan\":\"297\",\"lor\":\"298\",\"mil\":\"299\"},\"kazakh\":{\"\\u0430\\u043d \":\"0\",\"\\u0435\\u043d \":\"1\",\"\\u044b\\u04a3 \":\"2\",\" \\u049b\\u0430\":\"3\",\" \\u0431\\u0430\":\"4\",\"\\u0430\\u0439 \":\"5\",\"\\u043d\\u0434\\u0430\":\"6\",\"\\u044b\\u043d \":\"7\",\" \\u0441\\u0430\":\"8\",\" \\u0430\\u043b\":\"9\",\"\\u0434\\u0456 \":\"10\",\"\\u0430\\u0440\\u044b\":\"11\",\"\\u0434\\u044b \":\"12\",\"\\u044b\\u043f \":\"13\",\" \\u043c\\u04b1\":\"14\",\" \\u0431\\u0456\":\"15\",\"\\u0430\\u0441\\u044b\":\"16\",\"\\u0434\\u0430 \":\"17\",\"\\u043d\\u0430\\u0439\":\"18\",\" \\u0436\\u0430\":\"19\",\"\\u043c\\u04b1\\u043d\":\"20\",\"\\u0441\\u0442\\u0430\":\"21\",\"\\u0493\\u0430\\u043d\":\"22\",\"\\u043d \\u0431\":\"23\",\"\\u04b1\\u043d\\u0430\":\"24\",\" \\u0431\\u043e\":\"25\",\"\\u043d\\u044b\\u04a3\":\"26\",\"\\u0456\\u043d \":\"27\",\"\\u043b\\u0430\\u0440\":\"28\",\"\\u0441\\u044b\\u043d\":\"29\",\" \\u0434\\u0435\":\"30\",\"\\u0430\\u0493\\u0430\":\"31\",\"\\u0442\\u0430\\u043d\":\"32\",\" \\u043a\\u04e9\":\"33\",\"\\u0431\\u0456\\u0440\":\"34\",\"\\u0435\\u0440 \":\"35\",\"\\u043c\\u0435\\u043d\":\"36\",\"\\u0430\\u0437\\u0430\":\"37\",\"\\u044b\\u043d\\u0434\":\"38\",\"\\u044b\\u043d\\u044b\":\"39\",\" \\u043c\\u0435\":\"40\",\"\\u0430\\u043d\\u0434\":\"41\",\"\\u0435\\u0440\\u0456\":\"42\",\"\\u0431\\u043e\\u043b\":\"43\",\"\\u0434\\u044b\\u04a3\":\"44\",\"\\u049b\\u0430\\u0437\":\"45\",\"\\u0430\\u0442\\u044b\":\"46\",\"\\u0441\\u044b \":\"47\",\"\\u0442\\u044b\\u043d\":\"48\",\"\\u0493\\u044b \":\"49\",\" \\u043a\\u0435\":\"50\",\"\\u0430\\u0440 \":\"51\",\"\\u0437\\u0430\\u049b\":\"52\",\"\\u044b\\u049b \":\"53\",\"\\u0430\\u043b\\u0430\":\"54\",\"\\u0430\\u043b\\u044b\":\"55\",\"\\u0430\\u043d\\u044b\":\"56\",\"\\u0430\\u0440\\u0430\":\"57\",\"\\u0430\\u0493\\u044b\":\"58\",\"\\u0433\\u0435\\u043d\":\"59\",\"\\u0442\\u0430\\u0440\":\"60\",\"\\u0442\\u0435\\u0440\":\"61\",\"\\u0442\\u044b\\u0440\":\"62\",\"\\u0430\\u0439\\u0434\":\"63\",\"\\u0430\\u0440\\u0434\":\"64\",\"\\u0434\\u0435 \":\"65\",\"\\u0493\\u0430 \":\"66\",\" \\u049b\\u043e\":\"67\",\"\\u0431\\u0430\\u0440\":\"68\",\"\\u0456\\u04a3 \":\"69\",\"\\u049b\\u0430\\u043d\":\"70\",\" \\u0431\\u0435\":\"71\",\" \\u049b\\u044b\":\"72\",\"\\u0430\\u049b\\u0441\":\"73\",\"\\u0433\\u0435\\u0440\":\"74\",\"\\u0434\\u0430\\u043d\":\"75\",\"\\u0434\\u0430\\u0440\":\"76\",\"\\u043b\\u044b\\u049b\":\"77\",\"\\u043b\\u0493\\u0430\":\"78\",\"\\u044b\\u043d\\u0430\":\"79\",\"\\u0456\\u0440 \":\"80\",\"\\u0456\\u0440\\u0456\":\"81\",\"\\u0493\\u0430\\u0441\":\"82\",\" \\u0442\\u0430\":\"83\",\"\\u0430 \\u0431\":\"84\",\"\\u0433\\u0456 \":\"85\",\"\\u0435\\u0434\\u0456\":\"86\",\"\\u0435\\u043b\\u0435\":\"87\",\"\\u0439\\u0434\\u044b\":\"88\",\"\\u043d \\u043a\":\"89\",\"\\u043d \\u0442\":\"90\",\"\\u043e\\u043b\\u0430\":\"91\",\"\\u0440\\u044b\\u043d\":\"92\",\"\\u0456\\u043f \":\"93\",\"\\u049b\\u0441\\u0442\":\"94\",\"\\u049b\\u0442\\u0430\":\"95\",\"\\u04a3 \\u0431\":\"96\",\" \\u0430\\u0439\":\"97\",\" \\u043e\\u043b\":\"98\",\" \\u0441\\u043e\":\"99\",\"\\u0430\\u0439\\u0442\":\"100\",\"\\u0434\\u0430\\u0493\":\"101\",\"\\u0438\\u0433\\u0435\":\"102\",\"\\u043b\\u0435\\u0440\":\"103\",\"\\u043b\\u044b\\u043f\":\"104\",\"\\u043d \\u0430\":\"105\",\"\\u0456\\u043a \":\"106\",\"\\u0430\\u049b\\u0442\":\"107\",\"\\u0431\\u0430\\u0493\":\"108\",\"\\u043a\\u0435\\u043d\":\"109\",\"\\u043d \\u049b\":\"110\",\"\\u043d\\u044b \":\"111\",\"\\u0440\\u0433\\u0435\":\"112\",\"\\u0440\\u0493\\u0430\":\"113\",\"\\u044b\\u0440 \":\"114\",\" \\u0430\\u0440\":\"115\",\"\\u0430\\u043b\\u0493\":\"116\",\"\\u0430\\u0441\\u0430\":\"117\",\"\\u0431\\u0430\\u0441\":\"118\",\"\\u0431\\u0435\\u0440\":\"119\",\"\\u0433\\u0435 \":\"120\",\"\\u0435\\u0442\\u0456\":\"121\",\"\\u043d\\u0430 \":\"122\",\"\\u043d\\u0434\\u0435\":\"123\",\"\\u043d\\u0435 \":\"124\",\"\\u043d\\u0438\\u0433\":\"125\",\"\\u0440\\u0434\\u044b\":\"126\",\"\\u0440\\u044b \":\"127\",\"\\u0441\\u0430\\u0439\":\"128\",\" \\u0430\\u0443\":\"129\",\" \\u043a\\u04af\":\"130\",\" \\u043d\\u0438\":\"131\",\" \\u043e\\u0442\":\"132\",\" \\u04e9\\u0437\":\"133\",\"\\u0430\\u0443\\u0434\":\"134\",\"\\u0435\\u043f \":\"135\",\"\\u0438\\u044f\\u043b\":\"136\",\"\\u043b\\u0442\\u044b\":\"137\",\"\\u043d \\u0436\":\"138\",\"\\u043d \\u043e\":\"139\",\"\\u043e\\u0441\\u044b\":\"140\",\"\\u043e\\u0442\\u044b\":\"141\",\"\\u0440\\u044b\\u043f\":\"142\",\"\\u0440\\u0456 \":\"143\",\"\\u0442\\u043a\\u0435\":\"144\",\"\\u0442\\u044b \":\"145\",\"\\u044b \\u0431\":\"146\",\"\\u044b \\u0436\":\"147\",\"\\u044b\\u043b\\u044b\":\"148\",\"\\u044b\\u0441\\u044b\":\"149\",\"\\u0456 \\u0441\":\"150\",\"\\u049b\\u0430\\u0440\":\"151\",\" \\u0431\\u04b1\":\"152\",\" \\u0434\\u0430\":\"153\",\" \\u0436\\u0435\":\"154\",\" \\u0442\\u04b1\":\"155\",\" \\u049b\\u04b1\":\"156\",\"\\u0430\\u0434\\u044b\":\"157\",\"\\u0430\\u0439\\u043b\":\"158\",\"\\u0430\\u043f \":\"159\",\"\\u0430\\u0442\\u0430\":\"160\",\"\\u0435\\u043d\\u0456\":\"161\",\"\\u0439\\u043b\\u0430\":\"162\",\"\\u043d \\u043c\":\"163\",\"\\u043d \\u0441\":\"164\",\"\\u043d\\u0434\\u044b\":\"165\",\"\\u043d\\u0434\\u0456\":\"166\",\"\\u0440 \\u043c\":\"167\",\"\\u0442\\u0430\\u0439\":\"168\",\"\\u0442\\u0456\\u043d\":\"169\",\"\\u044b \\u0442\":\"170\",\"\\u044b\\u0441 \":\"171\",\"\\u0456\\u043d\\u0434\":\"172\",\" \\u0431\\u0438\":\"173\",\"\\u0430 \\u0436\":\"174\",\"\\u0430\\u0443\\u044b\":\"175\",\"\\u0434\\u0435\\u043f\":\"176\",\"\\u0434\\u0456\\u04a3\":\"177\",\"\\u0435\\u043a\\u0435\":\"178\",\"\\u0435\\u0440\\u0438\":\"179\",\"\\u0439\\u044b\\u043d\":\"180\",\"\\u043a\\u0435\\u043b\":\"181\",\"\\u043b\\u0434\\u044b\":\"182\",\"\\u043c\\u0430 \":\"183\",\"\\u043d\\u0430\\u043d\":\"184\",\"\\u043e\\u043d\\u044b\":\"185\",\"\\u043f \\u0436\":\"186\",\"\\u043f \\u043e\":\"187\",\"\\u0440 \\u0431\":\"188\",\"\\u0440\\u0438\\u044f\":\"189\",\"\\u0440\\u043b\\u0430\":\"190\",\"\\u0443\\u0434\\u0430\":\"191\",\"\\u0448\\u044b\\u043b\":\"192\",\"\\u044b \\u0430\":\"193\",\"\\u044b\\u049b\\u0442\":\"194\",\"\\u0456 \\u0430\":\"195\",\"\\u0456 \\u0431\":\"196\",\"\\u0456\\u0437 \":\"197\",\"\\u0456\\u043b\\u0456\":\"198\",\"\\u04a3 \\u049b\":\"199\",\" \\u0430\\u0441\":\"200\",\" \\u0435\\u043a\":\"201\",\" \\u0436\\u043e\":\"202\",\" \\u043c\\u04d9\":\"203\",\" \\u043e\\u0441\":\"204\",\" \\u0440\\u0435\":\"205\",\" \\u0441\\u0435\":\"206\",\"\\u0430\\u043b\\u0434\":\"207\",\"\\u0434\\u0430\\u043b\":\"208\",\"\\u0434\\u0435\\u0433\":\"209\",\"\\u0434\\u0435\\u0439\":\"210\",\"\\u0435 \\u0431\":\"211\",\"\\u0435\\u0442 \":\"212\",\"\\u0436\\u0430\\u0441\":\"213\",\"\\u0439 \\u0431\":\"214\",\"\\u043b\\u0430\\u0443\":\"215\",\"\\u043b\\u0434\\u0430\":\"216\",\"\\u043c\\u0435\\u0442\":\"217\",\"\\u043d\\u044b\\u043d\":\"218\",\"\\u0441\\u0430\\u0440\":\"219\",\"\\u0441\\u0456 \":\"220\",\"\\u0442\\u0456 \":\"221\",\"\\u044b\\u0440\\u044b\":\"222\",\"\\u044b\\u0442\\u0430\":\"223\",\"\\u0456\\u0441\\u0456\":\"224\",\"\\u04a3 \\u0430\":\"225\",\"\\u04e9\\u0442\\u0435\":\"226\",\" \\u0430\\u0442\":\"227\",\" \\u0435\\u043b\":\"228\",\" \\u0436\\u04af\":\"229\",\" \\u043c\\u0430\":\"230\",\" \\u0442\\u043e\":\"231\",\" \\u0448\\u044b\":\"232\",\"\\u0430 \\u0430\":\"233\",\"\\u0430\\u043b\\u0442\":\"234\",\"\\u0430\\u043c\\u0430\":\"235\",\"\\u0430\\u0440\\u043b\":\"236\",\"\\u0430\\u0441\\u0442\":\"237\",\"\\u0431\\u04b1\\u043b\":\"238\",\"\\u0434\\u0430\\u0439\":\"239\",\"\\u0434\\u044b\\u049b\":\"240\",\"\\u0435\\u043a \":\"241\",\"\\u0435\\u043b\\u044c\":\"242\",\"\\u0435\\u0441\\u0456\":\"243\",\"\\u0437\\u0434\\u0456\":\"244\",\"\\u043a\\u04e9\\u0442\":\"245\",\"\\u043b\\u0435\\u043c\":\"246\",\"\\u043b\\u044c \":\"247\",\"\\u043d \\u0435\":\"248\",\"\\u043f \\u0430\":\"249\",\"\\u0440 \\u0430\":\"250\",\"\\u0440\\u0435\\u0441\":\"251\",\"\\u0441\\u0430 \":\"252\",\"\\u0442\\u0430 \":\"253\",\"\\u0442\\u0442\\u0435\":\"254\",\"\\u0442\\u04b1\\u0440\":\"255\",\"\\u0448\\u044b \":\"256\",\"\\u044b \\u0434\":\"257\",\"\\u044b \\u049b\":\"258\",\"\\u044b\\u0437 \":\"259\",\"\\u049b\\u044b\\u0442\":\"260\",\" \\u043a\\u043e\":\"261\",\" \\u043d\\u0435\":\"262\",\" \\u043e\\u0439\":\"263\",\" \\u043e\\u0440\":\"264\",\" \\u0441\\u04b1\":\"265\",\" \\u0442\\u04af\":\"266\",\"\\u0430\\u043b\\u044c\":\"267\",\"\\u0430\\u0440\\u0435\":\"268\",\"\\u0430\\u0442\\u0442\":\"269\",\"\\u0434\\u0456\\u0440\":\"270\",\"\\u0435\\u0432 \":\"271\",\"\\u0435\\u0433\\u0456\":\"272\",\"\\u0435\\u0434\\u0430\":\"273\",\"\\u0435\\u043a\\u0456\":\"274\",\"\\u0435\\u043b\\u0434\":\"275\",\"\\u0435\\u0440\\u0433\":\"276\",\"\\u0435\\u0440\\u0434\":\"277\",\"\\u0438\\u044f\\u0434\":\"278\",\"\\u043a\\u0435\\u0440\":\"279\",\"\\u043a\\u0435\\u0442\":\"280\",\"\\u043b\\u044b\\u0441\":\"281\",\"\\u043b\\u0456\\u0441\":\"282\",\"\\u043c\\u0435\\u0434\":\"283\",\"\\u043c\\u043f\\u0438\":\"284\",\"\\u043d \\u0434\":\"285\",\"\\u043d\\u0456 \":\"286\",\"\\u043d\\u0456\\u043d\":\"287\",\"\\u043f \\u0442\":\"288\",\"\\u043f\\u0435\\u043a\":\"289\",\"\\u0440\\u0435\\u043b\":\"290\",\"\\u0440\\u0442\\u0430\":\"291\",\"\\u0440\\u0456\\u043b\":\"292\",\"\\u0440\\u0456\\u043d\":\"293\",\"\\u0441\\u0435\\u043d\":\"294\",\"\\u0442\\u0430\\u043b\":\"295\",\"\\u0448\\u0456\\u043b\":\"296\",\"\\u044b \\u043a\":\"297\",\"\\u044b \\u043c\":\"298\",\"\\u044b\\u0441\\u0442\":\"299\"},\"kyrgyz\":{\"\\u044b\\u043d \":\"0\",\"\\u0430\\u043d \":\"1\",\" \\u0436\\u0430\":\"2\",\"\\u0435\\u043d \":\"3\",\"\\u0434\\u0430 \":\"4\",\" \\u0442\\u0430\":\"5\",\"\\u0430\\u0440 \":\"6\",\"\\u0438\\u043d \":\"7\",\" \\u043a\\u0430\":\"8\",\"\\u0430\\u0440\\u044b\":\"9\",\" \\u0430\\u043b\":\"10\",\" \\u0431\\u0430\":\"11\",\" \\u0431\\u0438\":\"12\",\"\\u043b\\u0430\\u0440\":\"13\",\" \\u0431\\u043e\":\"14\",\" \\u043a\\u044b\":\"15\",\"\\u0430\\u043b\\u0430\":\"16\",\"\\u043d \\u043a\":\"17\",\" \\u0441\\u0430\":\"18\",\"\\u043d\\u0434\\u0430\":\"19\",\"\\u0433\\u0430\\u043d\":\"20\",\"\\u0442\\u0430\\u0440\":\"21\",\" \\u0434\\u0435\":\"22\",\"\\u0430\\u043d\\u0434\":\"23\",\"\\u043d \\u0431\":\"24\",\" \\u043a\\u0435\":\"25\",\"\\u0430\\u0440\\u0434\":\"26\",\"\\u043c\\u0435\\u043d\":\"27\",\"\\u043d \\u0442\":\"28\",\"\\u0430\\u0440\\u0430\":\"29\",\"\\u043d\\u044b\\u043d\":\"30\",\" \\u0434\\u0430\":\"31\",\" \\u043c\\u0435\":\"32\",\"\\u043a\\u044b\\u0440\":\"33\",\" \\u0447\\u0435\":\"34\",\"\\u043d \\u0430\":\"35\",\"\\u0440\\u044b \":\"36\",\" \\u043a\\u043e\":\"37\",\"\\u0433\\u0435\\u043d\":\"38\",\"\\u0434\\u0430\\u0440\":\"39\",\"\\u043a\\u0435\\u043d\":\"40\",\"\\u043a\\u0442\\u0430\":\"41\",\"\\u0443\\u0443 \":\"42\",\"\\u0435\\u043d\\u0435\":\"43\",\"\\u0435\\u0440\\u0438\":\"44\",\" \\u0448\\u0430\":\"45\",\"\\u0430\\u043b\\u044b\":\"46\",\"\\u0430\\u0442 \":\"47\",\"\\u043d\\u0430 \":\"48\",\" \\u043a\\u04e9\":\"49\",\" \\u044d\\u043c\":\"50\",\"\\u0430\\u0442\\u044b\":\"51\",\"\\u0434\\u0430\\u043d\":\"52\",\"\\u0434\\u0435\\u043f\":\"53\",\"\\u0434\\u044b\\u043d\":\"54\",\"\\u0435\\u043f \":\"55\",\"\\u043d\\u0435\\u043d\":\"56\",\"\\u0440\\u044b\\u043d\":\"57\",\" \\u0431\\u0435\":\"58\",\"\\u043a\\u0430\\u043d\":\"59\",\"\\u043b\\u0443\\u0443\":\"60\",\"\\u0440\\u0433\\u044b\":\"61\",\"\\u0442\\u0430\\u043d\":\"62\",\"\\u0448\\u0430\\u0439\":\"63\",\"\\u044b\\u0440\\u0433\":\"64\",\"\\u04af\\u043d \":\"65\",\" \\u0430\\u0440\":\"66\",\" \\u043c\\u0430\":\"67\",\"\\u0430\\u0433\\u044b\":\"68\",\"\\u0430\\u043a\\u0442\":\"69\",\"\\u0430\\u043d\\u044b\":\"70\",\"\\u0433\\u044b \":\"71\",\"\\u0433\\u044b\\u0437\":\"72\",\"\\u0434\\u044b \":\"73\",\"\\u0440\\u0434\\u0430\":\"74\",\"\\u0430\\u0439 \":\"75\",\"\\u0431\\u0438\\u0440\":\"76\",\"\\u0431\\u043e\\u043b\":\"77\",\"\\u0435\\u0440 \":\"78\",\"\\u043d \\u0441\":\"79\",\"\\u043d\\u0434\\u044b\":\"80\",\"\\u0443\\u043d \":\"81\",\"\\u0447\\u0430 \":\"82\",\"\\u044b\\u043d\\u0434\":\"83\",\"\\u0430 \\u043a\":\"84\",\"\\u0430\\u0433\\u0430\":\"85\",\"\\u0430\\u0439\\u043b\":\"86\",\"\\u0430\\u043d\\u0430\":\"87\",\"\\u0430\\u043f \":\"88\",\"\\u0433\\u0430 \":\"89\",\"\\u043b\\u0433\\u0435\":\"90\",\"\\u043d\\u0447\\u0430\":\"91\",\"\\u043f \\u043a\":\"92\",\"\\u0440\\u0434\\u044b\":\"93\",\"\\u0442\\u0443\\u0443\":\"94\",\"\\u044b\\u043d\\u044b\":\"95\",\" \\u0430\\u043d\":\"96\",\" \\u04e9\\u0437\":\"97\",\"\\u0430\\u043c\\u0430\":\"98\",\"\\u0430\\u0442\\u0430\":\"99\",\"\\u0434\\u0438\\u043d\":\"100\",\"\\u0439\\u0442 \":\"101\",\"\\u043b\\u0433\\u0430\":\"102\",\"\\u043b\\u043e\\u043e\":\"103\",\"\\u043e\\u043e \":\"104\",\"\\u0440\\u0438 \":\"105\",\"\\u0442\\u0438\\u043d\":\"106\",\"\\u044b\\u0437 \":\"107\",\"\\u044b\\u043f \":\"108\",\"\\u04e9\\u0440\\u04af\":\"109\",\" \\u043f\\u0430\":\"110\",\" \\u044d\\u043a\":\"111\",\"\\u0430 \\u0431\":\"112\",\"\\u0430\\u043b\\u0433\":\"113\",\"\\u0430\\u0441\\u044b\":\"114\",\"\\u0430\\u0448\\u0442\":\"115\",\"\\u0431\\u0438\\u0437\":\"116\",\"\\u043a\\u0435\\u043b\":\"117\",\"\\u043a\\u0442\\u0435\":\"118\",\"\\u0442\\u0430\\u043b\":\"119\",\" \\u043d\\u0435\":\"120\",\" \\u0441\\u0443\":\"121\",\"\\u0430\\u043a\\u044b\":\"122\",\"\\u0435\\u043d\\u0442\":\"123\",\"\\u0438\\u043d\\u0434\":\"124\",\"\\u0438\\u0440 \":\"125\",\"\\u043a\\u0430\\u043b\":\"126\",\"\\u043d \\u0434\":\"127\",\"\\u043d\\u0434\\u0435\":\"128\",\"\\u043e\\u0433\\u043e\":\"129\",\"\\u043e\\u043d\\u0434\":\"130\",\"\\u043e\\u044e\\u043d\":\"131\",\"\\u0440 \\u0431\":\"132\",\"\\u0440 \\u043c\":\"133\",\"\\u0440\\u0430\\u043d\":\"134\",\"\\u0441\\u0430\\u043b\":\"135\",\"\\u0441\\u0442\\u0430\":\"136\",\"\\u0441\\u044b \":\"137\",\"\\u0443\\u0440\\u0430\":\"138\",\"\\u044b\\u0433\\u044b\":\"139\",\" \\u0430\\u0448\":\"140\",\" \\u043c\\u0438\":\"141\",\" \\u0441\\u044b\":\"142\",\" \\u0442\\u0443\":\"143\",\"\\u0430\\u043b \":\"144\",\"\\u0430\\u0440\\u0442\":\"145\",\"\\u0431\\u043e\\u0440\":\"146\",\"\\u0435\\u043b\\u0433\":\"147\",\"\\u0435\\u043d\\u0438\":\"148\",\"\\u0435\\u0442 \":\"149\",\"\\u0436\\u0430\\u0442\":\"150\",\"\\u0439\\u043b\\u043e\":\"151\",\"\\u043a\\u0430\\u0440\":\"152\",\"\\u043d \\u043c\":\"153\",\"\\u043e\\u0433\\u0443\":\"154\",\"\\u043f \\u0430\":\"155\",\"\\u043f \\u0436\":\"156\",\"\\u0440 \\u044d\":\"157\",\"\\u0441\\u044b\\u043d\":\"158\",\"\\u044b\\u043a \":\"159\",\"\\u044e\\u043d\\u0447\":\"160\",\" \\u0431\\u0443\":\"161\",\" \\u0443\\u0440\":\"162\",\"\\u0430 \\u0430\":\"163\",\"\\u0430\\u043a \":\"164\",\"\\u0430\\u043b\\u0434\":\"165\",\"\\u0430\\u043b\\u0443\":\"166\",\"\\u0431\\u0430\\u0440\":\"167\",\"\\u0431\\u0435\\u0440\":\"168\",\"\\u0431\\u043e\\u044e\":\"169\",\"\\u0433\\u0435 \":\"170\",\"\\u0434\\u043e\\u043d\":\"171\",\"\\u0435\\u0433\\u0438\":\"172\",\"\\u0435\\u043a\\u0442\":\"173\",\"\\u0435\\u0444\\u0442\":\"174\",\"\\u0438\\u0437 \":\"175\",\"\\u043a\\u0430\\u0442\":\"176\",\"\\u043b\\u0434\\u044b\":\"177\",\"\\u043d \\u0447\":\"178\",\"\\u043d \\u044d\":\"179\",\"\\u043d \\u04e9\":\"180\",\"\\u043d\\u0434\\u043e\":\"181\",\"\\u043d\\u0435\\u0444\":\"182\",\"\\u043e\\u043d \":\"183\",\"\\u0441\\u0430\\u0442\":\"184\",\"\\u0442\\u043e\\u0440\":\"185\",\"\\u0442\\u044b \":\"186\",\"\\u0443\\u0434\\u0430\":\"187\",\"\\u0443\\u043b \":\"188\",\"\\u0443\\u043b\\u0430\":\"189\",\"\\u0443\\u0443\\u0434\":\"190\",\"\\u044b \\u0431\":\"191\",\"\\u044b \\u0436\":\"192\",\"\\u044b \\u043a\":\"193\",\"\\u044b\\u043b \":\"194\",\"\\u044b\\u043d\\u0430\":\"195\",\"\\u044d\\u043a\\u0435\":\"196\",\"\\u044f\\u0441\\u044b\":\"197\",\" \\u0430\\u0442\":\"198\",\" \\u0434\\u043e\":\"199\",\" \\u0436\\u044b\":\"200\",\" \\u0441\\u043e\":\"201\",\" \\u0447\\u044b\":\"202\",\"\\u0430\\u0430\\u0441\":\"203\",\"\\u0430\\u0439\\u0442\":\"204\",\"\\u0430\\u0441\\u0442\":\"205\",\"\\u0431\\u0430\\u0430\":\"206\",\"\\u0431\\u0430\\u0448\":\"207\",\"\\u0433\\u0430\\u0440\":\"208\",\"\\u0433\\u044b\\u043d\":\"209\",\"\\u0434\\u04e9 \":\"210\",\"\\u0435 \\u0431\":\"211\",\"\\u0435\\u043a \":\"212\",\"\\u0436\\u044b\\u043b\":\"213\",\"\\u0438 \\u0431\":\"214\",\"\\u0438\\u043a \":\"215\",\"\\u0438\\u044f\\u0441\":\"216\",\"\\u043a\\u044b\\u0437\":\"217\",\"\\u043b\\u0434\\u0430\":\"218\",\"\\u043b\\u044b\\u043a\":\"219\",\"\\u043c\\u0434\\u0430\":\"220\",\"\\u043d \\u0436\":\"221\",\"\\u043d\\u0434\\u0438\":\"222\",\"\\u043d\\u0438 \":\"223\",\"\\u043d\\u0438\\u043d\":\"224\",\"\\u043e\\u0440\\u0434\":\"225\",\"\\u0440\\u0434\\u043e\":\"226\",\"\\u0441\\u0442\\u043e\":\"227\",\"\\u0442\\u0430 \":\"228\",\"\\u0442\\u0435\\u0440\":\"229\",\"\\u0442\\u0442\\u0438\":\"230\",\"\\u0442\\u0443\\u0440\":\"231\",\"\\u0442\\u044b\\u043d\":\"232\",\"\\u0443\\u043f \":\"233\",\"\\u0443\\u0448\\u0443\":\"234\",\"\\u0444\\u0442\\u0438\":\"235\",\"\\u044b\\u043a\\u0442\":\"236\",\"\\u04af\\u043f \":\"237\",\"\\u04e9\\u043d \":\"238\",\" \\u0430\\u0439\":\"239\",\" \\u0431\\u04af\":\"240\",\" \\u0438\\u0447\":\"241\",\" \\u0438\\u0448\":\"242\",\" \\u043c\\u043e\":\"243\",\" \\u043f\\u0440\":\"244\",\" \\u0440\\u0435\":\"245\",\" \\u04e9\\u043a\":\"246\",\" \\u04e9\\u0442\":\"247\",\"\\u0430 \\u0434\":\"248\",\"\\u0430 \\u0443\":\"249\",\"\\u0430 \\u044d\":\"250\",\"\\u0430\\u0439\\u043c\":\"251\",\"\\u0430\\u043c\\u0434\":\"252\",\"\\u0430\\u0442\\u0442\":\"253\",\"\\u0431\\u0435\\u043a\":\"254\",\"\\u0431\\u0443\\u043b\":\"255\",\"\\u0433\\u043e\\u043b\":\"256\",\"\\u0434\\u0435\\u0433\":\"257\",\"\\u0435\\u0433\\u0435\":\"258\",\"\\u0435\\u0439\\u0442\":\"259\",\"\\u0435\\u043b\\u0435\":\"260\",\"\\u0435\\u043d\\u0434\":\"261\",\"\\u0436\\u0430\\u043a\":\"262\",\"\\u0438 \\u043a\":\"263\",\"\\u0438\\u043d\\u0438\":\"264\",\"\\u0438\\u0440\\u0438\":\"265\",\"\\u0439\\u043c\\u0430\":\"266\",\"\\u043a\\u0442\\u043e\":\"267\",\"\\u043b\\u0438\\u043a\":\"268\",\"\\u043c\\u0430\\u043a\":\"269\",\"\\u043c\\u0435\\u0441\":\"270\",\"\\u043d \\u0443\":\"271\",\"\\u043d \\u0448\":\"272\",\"\\u043d\\u0442\\u0442\":\"273\",\"\\u043e\\u043b \":\"274\",\"\\u043e\\u043b\\u043e\":\"275\",\"\\u043f\\u0430\\u0440\":\"276\",\"\\u0440\\u0430\\u043a\":\"277\",\"\\u0440\\u04af\\u04af\":\"278\",\"\\u0441\\u044b\\u0440\":\"279\",\"\\u0442\\u0438 \":\"280\",\"\\u0442\\u0438\\u043a\":\"281\",\"\\u0442\\u0442\\u0430\":\"282\",\"\\u0442\\u04e9\\u0440\":\"283\",\"\\u0443 \\u0436\":\"284\",\"\\u0443 \\u0441\":\"285\",\"\\u0448\\u043a\\u0430\":\"286\",\"\\u044b \\u043c\":\"287\",\"\\u044b\\u0437\\u044b\":\"288\",\"\\u044b\\u043b\\u0434\":\"289\",\"\\u044d\\u043c\\u0435\":\"290\",\"\\u04af\\u0440\\u04af\":\"291\",\"\\u04e9\\u043b\\u04af\":\"292\",\"\\u04e9\\u0442\\u04e9\":\"293\",\" \\u0436\\u0435\":\"294\",\" \\u0442\\u04af\":\"295\",\" \\u044d\\u043b\":\"296\",\" \\u04e9\\u043d\":\"297\",\"\\u0430 \\u0436\":\"298\",\"\\u0430\\u0434\\u044b\":\"299\"},\"latin\":{\"um \":\"0\",\"us \":\"1\",\"ut \":\"2\",\"et \":\"3\",\"is \":\"4\",\" et\":\"5\",\" in\":\"6\",\" qu\":\"7\",\"tur\":\"8\",\" pr\":\"9\",\"est\":\"10\",\"tio\":\"11\",\" au\":\"12\",\"am \":\"13\",\"em \":\"14\",\"aut\":\"15\",\" di\":\"16\",\"ent\":\"17\",\"in \":\"18\",\"dic\":\"19\",\"t e\":\"20\",\" es\":\"21\",\"ur \":\"22\",\"ati\":\"23\",\"ion\":\"24\",\"st \":\"25\",\" ut\":\"26\",\"ae \":\"27\",\"qua\":\"28\",\" de\":\"29\",\"nt \":\"30\",\" su\":\"31\",\" si\":\"32\",\"itu\":\"33\",\"unt\":\"34\",\"rum\":\"35\",\"ia \":\"36\",\"es \":\"37\",\"ter\":\"38\",\" re\":\"39\",\"nti\":\"40\",\"rae\":\"41\",\"s e\":\"42\",\"qui\":\"43\",\"io \":\"44\",\"pro\":\"45\",\"it \":\"46\",\"per\":\"47\",\"ita\":\"48\",\"one\":\"49\",\"ici\":\"50\",\"ius\":\"51\",\" co\":\"52\",\"t d\":\"53\",\"bus\":\"54\",\"pra\":\"55\",\"m e\":\"56\",\" no\":\"57\",\"edi\":\"58\",\"tia\":\"59\",\"ue \":\"60\",\"ibu\":\"61\",\" se\":\"62\",\" ad\":\"63\",\"er \":\"64\",\" fi\":\"65\",\"ili\":\"66\",\"que\":\"67\",\"t i\":\"68\",\"de \":\"69\",\"oru\":\"70\",\" te\":\"71\",\"ali\":\"72\",\" pe\":\"73\",\"aed\":\"74\",\"cit\":\"75\",\"m d\":\"76\",\"t s\":\"77\",\"tat\":\"78\",\"tem\":\"79\",\"tis\":\"80\",\"t p\":\"81\",\"sti\":\"82\",\"te \":\"83\",\"cum\":\"84\",\"ere\":\"85\",\"ium\":\"86\",\" ex\":\"87\",\"rat\":\"88\",\"ta \":\"89\",\"con\":\"90\",\"cti\":\"91\",\"oni\":\"92\",\"ra \":\"93\",\"s i\":\"94\",\" cu\":\"95\",\" sa\":\"96\",\"eni\":\"97\",\"nis\":\"98\",\"nte\":\"99\",\"eri\":\"100\",\"omi\":\"101\",\"re \":\"102\",\"s a\":\"103\",\"min\":\"104\",\"os \":\"105\",\"ti \":\"106\",\"uer\":\"107\",\" ma\":\"108\",\" ue\":\"109\",\"m s\":\"110\",\"nem\":\"111\",\"t m\":\"112\",\" mo\":\"113\",\" po\":\"114\",\" ui\":\"115\",\"gen\":\"116\",\"ict\":\"117\",\"m i\":\"118\",\"ris\":\"119\",\"s s\":\"120\",\"t a\":\"121\",\"uae\":\"122\",\" do\":\"123\",\"m a\":\"124\",\"t c\":\"125\",\" ge\":\"126\",\"as \":\"127\",\"e i\":\"128\",\"e p\":\"129\",\"ne \":\"130\",\" ca\":\"131\",\"ine\":\"132\",\"quo\":\"133\",\"s p\":\"134\",\" al\":\"135\",\"e e\":\"136\",\"ntu\":\"137\",\"ro \":\"138\",\"tri\":\"139\",\"tus\":\"140\",\"uit\":\"141\",\"atu\":\"142\",\"ini\":\"143\",\"iqu\":\"144\",\"m p\":\"145\",\"ost\":\"146\",\"res\":\"147\",\"ura\":\"148\",\" ac\":\"149\",\" fu\":\"150\",\"a e\":\"151\",\"ant\":\"152\",\"nes\":\"153\",\"nim\":\"154\",\"sun\":\"155\",\"tra\":\"156\",\"e a\":\"157\",\"s d\":\"158\",\" pa\":\"159\",\" uo\":\"160\",\"ecu\":\"161\",\" om\":\"162\",\" tu\":\"163\",\"ad \":\"164\",\"cut\":\"165\",\"omn\":\"166\",\"s q\":\"167\",\" ei\":\"168\",\"ex \":\"169\",\"icu\":\"170\",\"tor\":\"171\",\"uid\":\"172\",\" ip\":\"173\",\" me\":\"174\",\"e s\":\"175\",\"era\":\"176\",\"eru\":\"177\",\"iam\":\"178\",\"ide\":\"179\",\"ips\":\"180\",\" iu\":\"181\",\"a s\":\"182\",\"do \":\"183\",\"e d\":\"184\",\"eiu\":\"185\",\"ica\":\"186\",\"im \":\"187\",\"m c\":\"188\",\"m u\":\"189\",\"tiu\":\"190\",\" ho\":\"191\",\"cat\":\"192\",\"ist\":\"193\",\"nat\":\"194\",\"on \":\"195\",\"pti\":\"196\",\"reg\":\"197\",\"rit\":\"198\",\"s t\":\"199\",\"sic\":\"200\",\"spe\":\"201\",\" en\":\"202\",\" sp\":\"203\",\"dis\":\"204\",\"eli\":\"205\",\"liq\":\"206\",\"lis\":\"207\",\"men\":\"208\",\"mus\":\"209\",\"num\":\"210\",\"pos\":\"211\",\"sio\":\"212\",\" an\":\"213\",\" gr\":\"214\",\"abi\":\"215\",\"acc\":\"216\",\"ect\":\"217\",\"ri \":\"218\",\"uan\":\"219\",\" le\":\"220\",\"ecc\":\"221\",\"ete\":\"222\",\"gra\":\"223\",\"non\":\"224\",\"se \":\"225\",\"uen\":\"226\",\"uis\":\"227\",\" fa\":\"228\",\" tr\":\"229\",\"ate\":\"230\",\"e c\":\"231\",\"fil\":\"232\",\"na \":\"233\",\"ni \":\"234\",\"pul\":\"235\",\"s f\":\"236\",\"ui \":\"237\",\"at \":\"238\",\"cce\":\"239\",\"dam\":\"240\",\"i e\":\"241\",\"ina\":\"242\",\"leg\":\"243\",\"nos\":\"244\",\"ori\":\"245\",\"pec\":\"246\",\"rop\":\"247\",\"sta\":\"248\",\"uia\":\"249\",\"ene\":\"250\",\"iue\":\"251\",\"iui\":\"252\",\"siu\":\"253\",\"t t\":\"254\",\"t u\":\"255\",\"tib\":\"256\",\"tit\":\"257\",\" da\":\"258\",\" ne\":\"259\",\"a d\":\"260\",\"and\":\"261\",\"ege\":\"262\",\"equ\":\"263\",\"hom\":\"264\",\"imu\":\"265\",\"lor\":\"266\",\"m m\":\"267\",\"mni\":\"268\",\"ndo\":\"269\",\"ner\":\"270\",\"o e\":\"271\",\"r e\":\"272\",\"sit\":\"273\",\"tum\":\"274\",\"utu\":\"275\",\"a p\":\"276\",\"bis\":\"277\",\"bit\":\"278\",\"cer\":\"279\",\"cta\":\"280\",\"dom\":\"281\",\"fut\":\"282\",\"i s\":\"283\",\"ign\":\"284\",\"int\":\"285\",\"mod\":\"286\",\"ndu\":\"287\",\"nit\":\"288\",\"rib\":\"289\",\"rti\":\"290\",\"tas\":\"291\",\"und\":\"292\",\" ab\":\"293\",\"err\":\"294\",\"ers\":\"295\",\"ite\":\"296\",\"iti\":\"297\",\"m t\":\"298\",\"o p\":\"299\"},\"latvian\":{\"as \":\"0\",\" la\":\"1\",\" pa\":\"2\",\" ne\":\"3\",\"es \":\"4\",\" un\":\"5\",\"un \":\"6\",\" ka\":\"7\",\" va\":\"8\",\"ar \":\"9\",\"s p\":\"10\",\" ar\":\"11\",\" vi\":\"12\",\"is \":\"13\",\"ai \":\"14\",\" no\":\"15\",\"ja \":\"16\",\"ija\":\"17\",\"iem\":\"18\",\"em \":\"19\",\"tu \":\"20\",\"tie\":\"21\",\"vie\":\"22\",\"lat\":\"23\",\"aks\":\"24\",\"ien\":\"25\",\"kst\":\"26\",\"ies\":\"27\",\"s a\":\"28\",\"rak\":\"29\",\"atv\":\"30\",\"tvi\":\"31\",\" ja\":\"32\",\" pi\":\"33\",\"ka \":\"34\",\" ir\":\"35\",\"ir \":\"36\",\"ta \":\"37\",\" sa\":\"38\",\"ts \":\"39\",\" k\\u0101\":\"40\",\"\\u0101s \":\"41\",\" ti\":\"42\",\"ot \":\"43\",\"s n\":\"44\",\" ie\":\"45\",\" ta\":\"46\",\"ar\\u012b\":\"47\",\"par\":\"48\",\"pie\":\"49\",\" pr\":\"50\",\"k\\u0101 \":\"51\",\" at\":\"52\",\" ra\":\"53\",\"am \":\"54\",\"in\\u0101\":\"55\",\"t\\u0101 \":\"56\",\" iz\":\"57\",\"jas\":\"58\",\"lai\":\"59\",\" na\":\"60\",\"aut\":\"61\",\"ie\\u0161\":\"62\",\"s s\":\"63\",\" ap\":\"64\",\" ko\":\"65\",\" st\":\"66\",\"iek\":\"67\",\"iet\":\"68\",\"jau\":\"69\",\"us \":\"70\",\"r\\u012b \":\"71\",\"tik\":\"72\",\"\\u012bba\":\"73\",\"na \":\"74\",\" ga\":\"75\",\"cij\":\"76\",\"s i\":\"77\",\" uz\":\"78\",\"jum\":\"79\",\"s v\":\"80\",\"ms \":\"81\",\"var\":\"82\",\" ku\":\"83\",\" ma\":\"84\",\"j\\u0101 \":\"85\",\"sta\":\"86\",\"s u\":\"87\",\" t\\u0101\":\"88\",\"die\":\"89\",\"kai\":\"90\",\"kas\":\"91\",\"ska\":\"92\",\" ci\":\"93\",\" da\":\"94\",\"kur\":\"95\",\"lie\":\"96\",\"tas\":\"97\",\"a p\":\"98\",\"est\":\"99\",\"st\\u0101\":\"100\",\"\\u0161an\":\"101\",\"nes\":\"102\",\"nie\":\"103\",\"s d\":\"104\",\"s m\":\"105\",\"val\":\"106\",\" di\":\"107\",\" es\":\"108\",\" re\":\"109\",\"no \":\"110\",\"to \":\"111\",\"umu\":\"112\",\"vai\":\"113\",\"\\u0161i \":\"114\",\" v\\u0113\":\"115\",\"kum\":\"116\",\"nu \":\"117\",\"rie\":\"118\",\"s t\":\"119\",\"\\u0101m \":\"120\",\"ad \":\"121\",\"et \":\"122\",\"mu \":\"123\",\"s l\":\"124\",\" be\":\"125\",\"aud\":\"126\",\"tur\":\"127\",\"vij\":\"128\",\"vi\\u0146\":\"129\",\"\\u0101ju\":\"130\",\"bas\":\"131\",\"gad\":\"132\",\"i n\":\"133\",\"ika\":\"134\",\"os \":\"135\",\"a v\":\"136\",\"not\":\"137\",\"oti\":\"138\",\"sts\":\"139\",\"aik\":\"140\",\"u a\":\"141\",\"\\u0101 a\":\"142\",\"\\u0101k \":\"143\",\" to\":\"144\",\"ied\":\"145\",\"stu\":\"146\",\"ti \":\"147\",\"u p\":\"148\",\"v\\u0113l\":\"149\",\"\\u0101ci\":\"150\",\" \\u0161o\":\"151\",\"gi \":\"152\",\"ko \":\"153\",\"pro\":\"154\",\"s r\":\"155\",\"t\\u0101j\":\"156\",\"u s\":\"157\",\"u v\":\"158\",\"vis\":\"159\",\"aun\":\"160\",\"ks \":\"161\",\"str\":\"162\",\"zin\":\"163\",\"a a\":\"164\",\"ad\\u012b\":\"165\",\"da \":\"166\",\"dar\":\"167\",\"ena\":\"168\",\"ici\":\"169\",\"kra\":\"170\",\"nas\":\"171\",\"st\\u012b\":\"172\",\"\\u0161u \":\"173\",\" m\\u0113\":\"174\",\"a n\":\"175\",\"eci\":\"176\",\"i s\":\"177\",\"ie \":\"178\",\"i\\u0146a\":\"179\",\"ju \":\"180\",\"las\":\"181\",\"r t\":\"182\",\"ums\":\"183\",\"\\u0161ie\":\"184\",\"bu \":\"185\",\"cit\":\"186\",\"i a\":\"187\",\"ina\":\"188\",\"ma \":\"189\",\"pus\":\"190\",\"ra \":\"191\",\" au\":\"192\",\" se\":\"193\",\" sl\":\"194\",\"a s\":\"195\",\"ais\":\"196\",\"e\\u0161i\":\"197\",\"iec\":\"198\",\"iku\":\"199\",\"p\\u0101r\":\"200\",\"s b\":\"201\",\"s k\":\"202\",\"sot\":\"203\",\"\\u0101d\\u0101\":\"204\",\" in\":\"205\",\" li\":\"206\",\" tr\":\"207\",\"ana\":\"208\",\"eso\":\"209\",\"ikr\":\"210\",\"man\":\"211\",\"ne \":\"212\",\"u k\":\"213\",\" tu\":\"214\",\"an \":\"215\",\"av \":\"216\",\"bet\":\"217\",\"b\\u016bt\":\"218\",\"im \":\"219\",\"isk\":\"220\",\"l\\u012bd\":\"221\",\"nav\":\"222\",\"ras\":\"223\",\"ri \":\"224\",\"s g\":\"225\",\"sti\":\"226\",\"\\u012bdz\":\"227\",\" ai\":\"228\",\"arb\":\"229\",\"cin\":\"230\",\"das\":\"231\",\"ent\":\"232\",\"gal\":\"233\",\"i p\":\"234\",\"lik\":\"235\",\"m\\u0101 \":\"236\",\"nek\":\"237\",\"pat\":\"238\",\"r\\u0113t\":\"239\",\"si \":\"240\",\"tra\":\"241\",\"u\\u0161i\":\"242\",\"vei\":\"243\",\" br\":\"244\",\" pu\":\"245\",\" sk\":\"246\",\"als\":\"247\",\"ama\":\"248\",\"edz\":\"249\",\"eka\":\"250\",\"e\\u0161u\":\"251\",\"ieg\":\"252\",\"jis\":\"253\",\"kam\":\"254\",\"lst\":\"255\",\"n\\u0101k\":\"256\",\"oli\":\"257\",\"pre\":\"258\",\"p\\u0113c\":\"259\",\"rot\":\"260\",\"t\\u0101s\":\"261\",\"usi\":\"262\",\"\\u0113l \":\"263\",\"\\u0113s \":\"264\",\" bi\":\"265\",\" de\":\"266\",\" me\":\"267\",\" p\\u0101\":\"268\",\"a i\":\"269\",\"aid\":\"270\",\"aj\\u0101\":\"271\",\"ikt\":\"272\",\"kat\":\"273\",\"lic\":\"274\",\"lod\":\"275\",\"mi \":\"276\",\"ni \":\"277\",\"pri\":\"278\",\"r\\u0101d\":\"279\",\"r\\u012bg\":\"280\",\"sim\":\"281\",\"tr\\u0101\":\"282\",\"u l\":\"283\",\"uto\":\"284\",\"uz \":\"285\",\"\\u0113c \":\"286\",\"\\u012bt\\u0101\":\"287\",\" ce\":\"288\",\" j\\u0101\":\"289\",\" sv\":\"290\",\"a t\":\"291\",\"aga\":\"292\",\"aiz\":\"293\",\"atu\":\"294\",\"ba \":\"295\",\"cie\":\"296\",\"du \":\"297\",\"dzi\":\"298\",\"dz\\u012b\":\"299\"},\"lithuanian\":{\"as \":\"0\",\" pa\":\"1\",\" ka\":\"2\",\"ai \":\"3\",\"us \":\"4\",\"os \":\"5\",\"is \":\"6\",\" ne\":\"7\",\" ir\":\"8\",\"ir \":\"9\",\"ti \":\"10\",\" pr\":\"11\",\"aus\":\"12\",\"ini\":\"13\",\"s p\":\"14\",\"pas\":\"15\",\"i\\u0173 \":\"16\",\" ta\":\"17\",\" vi\":\"18\",\"iau\":\"19\",\" ko\":\"20\",\" su\":\"21\",\"kai\":\"22\",\"o p\":\"23\",\"usi\":\"24\",\" sa\":\"25\",\"vo \":\"26\",\"tai\":\"27\",\"ali\":\"28\",\"t\\u0173 \":\"29\",\"io \":\"30\",\"jo \":\"31\",\"s k\":\"32\",\"sta\":\"33\",\"iai\":\"34\",\" bu\":\"35\",\" nu\":\"36\",\"ius\":\"37\",\"mo \":\"38\",\" po\":\"39\",\"ien\":\"40\",\"s s\":\"41\",\"tas\":\"42\",\" me\":\"43\",\"uvo\":\"44\",\"kad\":\"45\",\" i\\u0161\":\"46\",\" la\":\"47\",\"to \":\"48\",\"ais\":\"49\",\"ie \":\"50\",\"kur\":\"51\",\"uri\":\"52\",\" ku\":\"53\",\"ijo\":\"54\",\"\\u010dia\":\"55\",\"au \":\"56\",\"met\":\"57\",\"je \":\"58\",\" va\":\"59\",\"ad \":\"60\",\" ap\":\"61\",\"and\":\"62\",\" gr\":\"63\",\" ti\":\"64\",\"kal\":\"65\",\"asi\":\"66\",\"i p\":\"67\",\"i\\u010di\":\"68\",\"s i\":\"69\",\"s v\":\"70\",\"ink\":\"71\",\"o n\":\"72\",\"\\u0117s \":\"73\",\"buv\":\"74\",\"s a\":\"75\",\" ga\":\"76\",\"aip\":\"77\",\"avi\":\"78\",\"mas\":\"79\",\"pri\":\"80\",\"tik\":\"81\",\" re\":\"82\",\"etu\":\"83\",\"jos\":\"84\",\" da\":\"85\",\"ent\":\"86\",\"oli\":\"87\",\"par\":\"88\",\"ant\":\"89\",\"ara\":\"90\",\"tar\":\"91\",\"ama\":\"92\",\"gal\":\"93\",\"imo\":\"94\",\"i\\u0161k\":\"95\",\"o s\":\"96\",\" at\":\"97\",\" be\":\"98\",\" \\u012f \":\"99\",\"min\":\"100\",\"tin\":\"101\",\" tu\":\"102\",\"s n\":\"103\",\" jo\":\"104\",\"dar\":\"105\",\"ip \":\"106\",\"rei\":\"107\",\" te\":\"108\",\"d\\u017ei\":\"109\",\"kas\":\"110\",\"nin\":\"111\",\"tei\":\"112\",\"vie\":\"113\",\" li\":\"114\",\" se\":\"115\",\"cij\":\"116\",\"gar\":\"117\",\"lai\":\"118\",\"art\":\"119\",\"lau\":\"120\",\"ras\":\"121\",\"no \":\"122\",\"o k\":\"123\",\"t\\u0105 \":\"124\",\" ar\":\"125\",\"\\u0117jo\":\"126\",\"vi\\u010d\":\"127\",\"iga\":\"128\",\"pra\":\"129\",\"vis\":\"130\",\" na\":\"131\",\"men\":\"132\",\"oki\":\"133\",\"ra\\u0161\":\"134\",\"s t\":\"135\",\"iet\":\"136\",\"ika\":\"137\",\"int\":\"138\",\"kom\":\"139\",\"tam\":\"140\",\"aug\":\"141\",\"avo\":\"142\",\"rie\":\"143\",\"s b\":\"144\",\" st\":\"145\",\"eim\":\"146\",\"ko \":\"147\",\"nus\":\"148\",\"pol\":\"149\",\"ria\":\"150\",\"sau\":\"151\",\"api\":\"152\",\"me \":\"153\",\"ne \":\"154\",\"sik\":\"155\",\" \\u0161i\":\"156\",\"i n\":\"157\",\"ia \":\"158\",\"ici\":\"159\",\"oja\":\"160\",\"sak\":\"161\",\"sti\":\"162\",\"ui \":\"163\",\"ame\":\"164\",\"lie\":\"165\",\"o t\":\"166\",\"pie\":\"167\",\"\\u010diu\":\"168\",\" di\":\"169\",\" pe\":\"170\",\"gri\":\"171\",\"ios\":\"172\",\"lia\":\"173\",\"lin\":\"174\",\"s d\":\"175\",\"s g\":\"176\",\"ta \":\"177\",\"uot\":\"178\",\" ja\":\"179\",\" u\\u017e\":\"180\",\"aut\":\"181\",\"i s\":\"182\",\"ino\":\"183\",\"m\\u0105 \":\"184\",\"oje\":\"185\",\"rav\":\"186\",\"d\\u0117l\":\"187\",\"nti\":\"188\",\"o a\":\"189\",\"toj\":\"190\",\"\\u0117l \":\"191\",\" to\":\"192\",\" vy\":\"193\",\"ar \":\"194\",\"ina\":\"195\",\"lic\":\"196\",\"o v\":\"197\",\"sei\":\"198\",\"su \":\"199\",\" mi\":\"200\",\" pi\":\"201\",\"din\":\"202\",\"i\\u0161 \":\"203\",\"lan\":\"204\",\"si \":\"205\",\"tus\":\"206\",\" ba\":\"207\",\"asa\":\"208\",\"ata\":\"209\",\"kla\":\"210\",\"omi\":\"211\",\"tat\":\"212\",\" an\":\"213\",\" ji\":\"214\",\"als\":\"215\",\"ena\":\"216\",\"j\\u0173 \":\"217\",\"nuo\":\"218\",\"per\":\"219\",\"rig\":\"220\",\"s m\":\"221\",\"val\":\"222\",\"yta\":\"223\",\"\\u010dio\":\"224\",\" ra\":\"225\",\"i k\":\"226\",\"lik\":\"227\",\"net\":\"228\",\"n\\u0117 \":\"229\",\"tis\":\"230\",\"tuo\":\"231\",\"yti\":\"232\",\"\\u0119s \":\"233\",\"\\u0173 s\":\"234\",\"ada\":\"235\",\"ari\":\"236\",\"do \":\"237\",\"eik\":\"238\",\"eis\":\"239\",\"ist\":\"240\",\"lst\":\"241\",\"ma \":\"242\",\"nes\":\"243\",\"sav\":\"244\",\"sio\":\"245\",\"tau\":\"246\",\" ki\":\"247\",\"aik\":\"248\",\"aud\":\"249\",\"ies\":\"250\",\"ori\":\"251\",\"s r\":\"252\",\"ska\":\"253\",\" ge\":\"254\",\"ast\":\"255\",\"eig\":\"256\",\"et \":\"257\",\"iam\":\"258\",\"isa\":\"259\",\"mis\":\"260\",\"nam\":\"261\",\"ome\":\"262\",\"\\u017eia\":\"263\",\"aba\":\"264\",\"aul\":\"265\",\"ikr\":\"266\",\"k\\u0105 \":\"267\",\"nta\":\"268\",\"ra \":\"269\",\"tur\":\"270\",\" ma\":\"271\",\"die\":\"272\",\"ei \":\"273\",\"i t\":\"274\",\"nas\":\"275\",\"rin\":\"276\",\"sto\":\"277\",\"tie\":\"278\",\"tuv\":\"279\",\"vos\":\"280\",\"\\u0173 p\":\"281\",\" d\\u0117\":\"282\",\"are\":\"283\",\"ats\":\"284\",\"en\\u0117\":\"285\",\"ili\":\"286\",\"ima\":\"287\",\"kar\":\"288\",\"ms \":\"289\",\"nia\":\"290\",\"r p\":\"291\",\"rod\":\"292\",\"s l\":\"293\",\" o \":\"294\",\"e p\":\"295\",\"es \":\"296\",\"ide\":\"297\",\"ik \":\"298\",\"ja \":\"299\"},\"macedonian\":{\"\\u043d\\u0430 \":\"0\",\" \\u043d\\u0430\":\"1\",\"\\u0442\\u0430 \":\"2\",\"\\u0430\\u0442\\u0430\":\"3\",\"\\u0438\\u0458\\u0430\":\"4\",\" \\u043f\\u0440\":\"5\",\"\\u0442\\u043e \":\"6\",\"\\u0458\\u0430 \":\"7\",\" \\u0437\\u0430\":\"8\",\"\\u0430 \\u043d\":\"9\",\" \\u0438 \":\"10\",\"\\u0430 \\u0441\":\"11\",\"\\u0442\\u0435 \":\"12\",\"\\u0438\\u0442\\u0435\":\"13\",\" \\u043a\\u043e\":\"14\",\"\\u043e\\u0442 \":\"15\",\" \\u0434\\u0435\":\"16\",\" \\u043f\\u043e\":\"17\",\"\\u0430 \\u0434\":\"18\",\"\\u0432\\u043e \":\"19\",\"\\u0437\\u0430 \":\"20\",\" \\u0432\\u043e\":\"21\",\" \\u043e\\u0434\":\"22\",\" \\u0441\\u0435\":\"23\",\" \\u043d\\u0435\":\"24\",\"\\u0441\\u0435 \":\"25\",\" \\u0434\\u043e\":\"26\",\"\\u0430 \\u0432\":\"27\",\"\\u043a\\u0430 \":\"28\",\"\\u0430\\u045a\\u0435\":\"29\",\"\\u0430 \\u043f\":\"30\",\"\\u043e \\u043f\":\"31\",\"\\u0443\\u0432\\u0430\":\"32\",\"\\u0446\\u0438\\u0458\":\"33\",\"\\u0430 \\u043e\":\"34\",\"\\u0438\\u0446\\u0438\":\"35\",\"\\u0435\\u0442\\u043e\":\"36\",\"\\u043e \\u043d\":\"37\",\"\\u0430\\u043d\\u0438\":\"38\",\"\\u043d\\u0438 \":\"39\",\" \\u0432\\u043b\":\"40\",\"\\u0434\\u0435\\u043a\":\"41\",\"\\u0435\\u043a\\u0430\":\"42\",\"\\u045a\\u0435\\u0442\":\"43\",\"\\u045c\\u0435 \":\"44\",\" \\u0435 \":\"45\",\"\\u0430 \\u0437\":\"46\",\"\\u0430 \\u0438\":\"47\",\"\\u0430\\u0442 \":\"48\",\"\\u0432\\u043b\\u0430\":\"49\",\"\\u0433\\u043e \":\"50\",\"\\u0435 \\u043d\":\"51\",\"\\u043e\\u0434 \":\"52\",\"\\u043f\\u0440\\u0435\":\"53\",\" \\u0433\\u043e\":\"54\",\" \\u0434\\u0430\":\"55\",\" \\u043c\\u0430\":\"56\",\" \\u0440\\u0435\":\"57\",\" \\u045c\\u0435\":\"58\",\"\\u0430\\u043b\\u0438\":\"59\",\"\\u0438 \\u0434\":\"60\",\"\\u0438 \\u043d\":\"61\",\"\\u0438\\u043e\\u0442\":\"62\",\"\\u043d\\u0430\\u0442\":\"63\",\"\\u043e\\u0432\\u043e\":\"64\",\" \\u043f\\u0430\":\"65\",\" \\u0440\\u0430\":\"66\",\" \\u0441\\u043e\":\"67\",\"\\u043e\\u0432\\u0435\":\"68\",\"\\u043f\\u0440\\u0430\":\"69\",\"\\u0448\\u0442\\u043e\":\"70\",\"\\u045a\\u0435 \":\"71\",\"\\u0430 \\u0435\":\"72\",\"\\u0434\\u0430 \":\"73\",\"\\u0434\\u0430\\u0442\":\"74\",\"\\u0434\\u043e\\u043d\":\"75\",\"\\u0435 \\u0432\":\"76\",\"\\u0435 \\u0434\":\"77\",\"\\u0435 \\u0437\":\"78\",\"\\u0435 \\u0441\":\"79\",\"\\u043a\\u043e\\u043d\":\"80\",\"\\u043d\\u0438\\u0442\":\"81\",\"\\u043d\\u043e \":\"82\",\"\\u043e\\u043d\\u0438\":\"83\",\"\\u043e\\u0442\\u043e\":\"84\",\"\\u043f\\u0430\\u0440\":\"85\",\"\\u043f\\u0440\\u0438\":\"86\",\"\\u0441\\u0442\\u0430\":\"87\",\"\\u0442 \\u043d\":\"88\",\" \\u0448\\u0442\":\"89\",\"\\u0430 \\u043a\":\"90\",\"\\u0430\\u0446\\u0438\":\"91\",\"\\u0432\\u0430 \":\"92\",\"\\u0432\\u0430\\u045a\":\"93\",\"\\u0435 \\u043f\":\"94\",\"\\u0435\\u043d\\u0438\":\"95\",\"\\u043b\\u0430 \":\"96\",\"\\u043b\\u0430\\u0434\":\"97\",\"\\u043c\\u0430\\u043a\":\"98\",\"\\u043d\\u0435\\u0441\":\"99\",\"\\u043d\\u043e\\u0441\":\"100\",\"\\u043f\\u0440\\u043e\":\"101\",\"\\u0440\\u0435\\u043d\":\"102\",\"\\u0458\\u0430\\u0442\":\"103\",\" \\u0438\\u043d\":\"104\",\" \\u043c\\u0435\":\"105\",\" \\u0442\\u043e\":\"106\",\"\\u0430 \\u0433\":\"107\",\"\\u0430 \\u043c\":\"108\",\"\\u0430 \\u0440\":\"109\",\"\\u0430\\u043a\\u0435\":\"110\",\"\\u0430\\u043a\\u043e\":\"111\",\"\\u0432\\u043e\\u0440\":\"112\",\"\\u0433\\u043e\\u0432\":\"113\",\"\\u0435\\u0434\\u043e\":\"114\",\"\\u0435\\u043d\\u0430\":\"115\",\"\\u0438 \\u0438\":\"116\",\"\\u0438\\u0440\\u0430\":\"117\",\"\\u043a\\u0435\\u0434\":\"118\",\"\\u043d\\u0435 \":\"119\",\"\\u043d\\u0438\\u0446\":\"120\",\"\\u043d\\u0438\\u0458\":\"121\",\"\\u043e\\u0441\\u0442\":\"122\",\"\\u0440\\u0430 \":\"123\",\"\\u0440\\u0430\\u0442\":\"124\",\"\\u0440\\u0435\\u0434\":\"125\",\"\\u0441\\u043a\\u0430\":\"126\",\"\\u0442\\u0435\\u043d\":\"127\",\" \\u043a\\u0430\":\"128\",\" \\u0441\\u043f\":\"129\",\" \\u0458\\u0430\":\"130\",\"\\u0430 \\u0442\":\"131\",\"\\u0430\\u0434\\u0435\":\"132\",\"\\u0430\\u0440\\u0442\":\"133\",\"\\u0435 \\u0433\":\"134\",\"\\u0435 \\u0438\":\"135\",\"\\u043a\\u0430\\u0442\":\"136\",\"\\u043b\\u0430\\u0441\":\"137\",\"\\u043d\\u0438\\u043e\":\"138\",\"\\u043e \\u0441\":\"139\",\"\\u0440\\u0438 \":\"140\",\" \\u0431\\u0430\":\"141\",\" \\u0431\\u0438\":\"142\",\"\\u0430\\u0432\\u0430\":\"143\",\"\\u0430\\u0442\\u0435\":\"144\",\"\\u0432\\u043d\\u0438\":\"145\",\"\\u0434 \\u043d\":\"146\",\"\\u0434\\u0435\\u043d\":\"147\",\"\\u0434\\u043e\\u0432\":\"148\",\"\\u0434\\u0440\\u0436\":\"149\",\"\\u0434\\u0443\\u0432\":\"150\",\"\\u0435 \\u043e\":\"151\",\"\\u0435\\u043d \":\"152\",\"\\u0435\\u0440\\u0435\":\"153\",\"\\u0435\\u0440\\u0438\":\"154\",\"\\u0438 \\u043f\":\"155\",\"\\u0438 \\u0441\":\"156\",\"\\u0438\\u043d\\u0430\":\"157\",\"\\u043a\\u043e\\u0458\":\"158\",\"\\u043d\\u0446\\u0438\":\"159\",\"\\u043e \\u043c\":\"160\",\"\\u043e \\u043e\":\"161\",\"\\u043e\\u0434\\u043d\":\"162\",\"\\u043f\\u043e\\u0440\":\"163\",\"\\u0441\\u043a\\u0438\":\"164\",\"\\u0441\\u043f\\u043e\":\"165\",\"\\u0441\\u0442\\u0432\":\"166\",\"\\u0441\\u0442\\u0438\":\"167\",\"\\u0442\\u0432\\u043e\":\"168\",\"\\u0442\\u0438 \":\"169\",\" \\u043e\\u0431\":\"170\",\" \\u043e\\u0432\":\"171\",\"\\u0430 \\u0431\":\"172\",\"\\u0430\\u043b\\u043d\":\"173\",\"\\u0430\\u0440\\u0430\":\"174\",\"\\u0431\\u0430\\u0440\":\"175\",\"\\u0435 \\u043a\":\"176\",\"\\u0435\\u0434 \":\"177\",\"\\u0435\\u043d\\u0442\":\"178\",\"\\u0435\\u0453\\u0443\":\"179\",\"\\u0438 \\u043e\":\"180\",\"\\u0438\\u0438 \":\"181\",\"\\u043c\\u0435\\u0453\":\"182\",\"\\u043e \\u0434\":\"183\",\"\\u043e\\u0458\\u0430\":\"184\",\"\\u043f\\u043e\\u0442\":\"185\",\"\\u0440\\u0430\\u0437\":\"186\",\"\\u0440\\u0430\\u0448\":\"187\",\"\\u0441\\u043f\\u0440\":\"188\",\"\\u0441\\u0442\\u043e\":\"189\",\"\\u0442 \\u0434\":\"190\",\"\\u0446\\u0438 \":\"191\",\" \\u0431\\u0435\":\"192\",\" \\u0433\\u0440\":\"193\",\" \\u0434\\u0440\":\"194\",\" \\u0438\\u0437\":\"195\",\" \\u0441\\u0442\":\"196\",\"\\u0430\\u0430 \":\"197\",\"\\u0431\\u0438\\u0434\":\"198\",\"\\u0432\\u0435\\u0434\":\"199\",\"\\u0433\\u043b\\u0430\":\"200\",\"\\u0435\\u043a\\u043e\":\"201\",\"\\u0435\\u043d\\u0434\":\"202\",\"\\u0435\\u0441\\u0435\":\"203\",\"\\u0435\\u0442\\u0441\":\"204\",\"\\u0437\\u0430\\u0446\":\"205\",\"\\u0438 \\u0442\":\"206\",\"\\u0438\\u0437\\u0430\":\"207\",\"\\u0438\\u043d\\u0441\":\"208\",\"\\u0438\\u0441\\u0442\":\"209\",\"\\u043a\\u0438 \":\"210\",\"\\u043a\\u043e\\u0432\":\"211\",\"\\u043a\\u043e\\u043b\":\"212\",\"\\u043a\\u0443 \":\"213\",\"\\u043b\\u0438\\u0446\":\"214\",\"\\u043e \\u0437\":\"215\",\"\\u043e \\u0438\":\"216\",\"\\u043e\\u0432\\u0430\":\"217\",\"\\u043e\\u043b\\u043a\":\"218\",\"\\u043e\\u0440\\u0435\":\"219\",\"\\u043e\\u0440\\u0438\":\"220\",\"\\u043f\\u043e\\u0434\":\"221\",\"\\u0440\\u0430\\u045a\":\"222\",\"\\u0440\\u0435\\u0444\":\"223\",\"\\u0440\\u0436\\u0430\":\"224\",\"\\u0440\\u043e\\u0432\":\"225\",\"\\u0440\\u0442\\u0438\":\"226\",\"\\u0441\\u043e \":\"227\",\"\\u0442\\u043e\\u0440\":\"228\",\"\\u0444\\u0435\\u0440\":\"229\",\"\\u0446\\u0435\\u043d\":\"230\",\"\\u0446\\u0438\\u0442\":\"231\",\" \\u0430 \":\"232\",\" \\u0432\\u0440\":\"233\",\" \\u0433\\u043b\":\"234\",\" \\u0434\\u043f\":\"235\",\" \\u043c\\u043e\":\"236\",\" \\u043d\\u0438\":\"237\",\" \\u043d\\u043e\":\"238\",\" \\u043e\\u043f\":\"239\",\" \\u043e\\u0442\":\"240\",\"\\u0430 \\u045c\":\"241\",\"\\u0430\\u0431\\u043e\":\"242\",\"\\u0430\\u0434\\u0430\":\"243\",\"\\u0430\\u0441\\u0430\":\"244\",\"\\u0430\\u0448\\u0430\":\"245\",\"\\u0431\\u0430 \":\"246\",\"\\u0431\\u043e\\u0442\":\"247\",\"\\u0432\\u0430\\u0430\":\"248\",\"\\u0432\\u0430\\u0442\":\"249\",\"\\u0432\\u043e\\u0442\":\"250\",\"\\u0433\\u0438 \":\"251\",\"\\u0433\\u0440\\u0430\":\"252\",\"\\u0434\\u0435 \":\"253\",\"\\u0434\\u0438\\u043d\":\"254\",\"\\u0434\\u0443\\u043c\":\"255\",\"\\u0435\\u0432\\u0440\":\"256\",\"\\u0435\\u0434\\u0443\":\"257\",\"\\u0435\\u043d\\u043e\":\"258\",\"\\u0435\\u0440\\u0430\":\"259\",\"\\u0435\\u0441 \":\"260\",\"\\u0435\\u045a\\u0435\":\"261\",\"\\u0436\\u0435 \":\"262\",\"\\u0437\\u0430\\u043a\":\"263\",\"\\u0438 \\u0432\":\"264\",\"\\u0438\\u043b\\u0430\":\"265\",\"\\u0438\\u0442\\u0443\":\"266\",\"\\u043a\\u043e\\u0430\":\"267\",\"\\u043a\\u043e\\u0438\":\"268\",\"\\u043b\\u0430\\u043d\":\"269\",\"\\u043b\\u043a\\u0443\":\"270\",\"\\u043b\\u043e\\u0436\":\"271\",\"\\u043c\\u043e\\u0442\":\"272\",\"\\u043d\\u0434\\u0443\":\"273\",\"\\u043d\\u0441\\u0442\":\"274\",\"\\u043e \\u0432\":\"275\",\"\\u043e\\u0430 \":\"276\",\"\\u043e\\u0430\\u043b\":\"277\",\"\\u043e\\u0431\\u0440\":\"278\",\"\\u043e\\u0432 \":\"279\",\"\\u043e\\u0432\\u0438\":\"280\",\"\\u043e\\u0432\\u043d\":\"281\",\"\\u043e\\u0438 \":\"282\",\"\\u043e\\u0440 \":\"283\",\"\\u043e\\u0440\\u043c\":\"284\",\"\\u043e\\u0458 \":\"285\",\"\\u0440\\u0435\\u0442\":\"286\",\"\\u0441\\u0435\\u0434\":\"287\",\"\\u0441\\u0442 \":\"288\",\"\\u0442\\u0435\\u0440\":\"289\",\"\\u0442\\u0438\\u0458\":\"290\",\"\\u0442\\u043e\\u0430\":\"291\",\"\\u0444\\u043e\\u0440\":\"292\",\"\\u0446\\u0438\\u0438\":\"293\",\"\\u0453\\u0443 \":\"294\",\" \\u0430\\u043b\":\"295\",\" \\u0432\\u0435\":\"296\",\" \\u0432\\u043c\":\"297\",\" \\u0433\\u0438\":\"298\",\" \\u0434\\u0443\":\"299\"},\"mongolian\":{\"\\u044b\\u043d \":\"0\",\" \\u0431\\u0430\":\"1\",\"\\u0439\\u043d \":\"2\",\"\\u0431\\u0430\\u0439\":\"3\",\"\\u0438\\u0439\\u043d\":\"4\",\"\\u0443\\u0443\\u043b\":\"5\",\" \\u0443\\u043b\":\"6\",\"\\u0443\\u043b\\u0441\":\"7\",\"\\u0430\\u043d \":\"8\",\" \\u0445\\u0430\":\"9\",\"\\u043d\\u0438\\u0439\":\"10\",\"\\u043d \\u0445\":\"11\",\"\\u0433\\u0430\\u0430\":\"12\",\"\\u0441\\u044b\\u043d\":\"13\",\"\\u0438\\u0439 \":\"14\",\"\\u043b\\u0441\\u044b\":\"15\",\" \\u0431\\u043e\":\"16\",\"\\u0439 \\u0431\":\"17\",\"\\u044d\\u043d \":\"18\",\"\\u0430\\u0445 \":\"19\",\"\\u0431\\u043e\\u043b\":\"20\",\"\\u043e\\u043b \":\"21\",\"\\u043d \\u0431\":\"22\",\"\\u043e\\u043b\\u043e\":\"23\",\" \\u0445\\u044d\":\"24\",\"\\u043e\\u043d\\u0433\":\"25\",\"\\u0433\\u043e\\u043b\":\"26\",\"\\u0433\\u0443\\u0443\":\"27\",\"\\u043d\\u0433\\u043e\":\"28\",\"\\u044b\\u0433 \":\"29\",\"\\u0436\\u0438\\u043b\":\"30\",\" \\u043c\\u043e\":\"31\",\"\\u043b\\u0430\\u0433\":\"32\",\"\\u043b\\u043b\\u0430\":\"33\",\"\\u043c\\u043e\\u043d\":\"34\",\" \\u0442\\u0454\":\"35\",\" \\u0445\\u0443\":\"36\",\"\\u0430\\u0439\\u0434\":\"37\",\"\\u043d\\u044b \":\"38\",\"\\u043e\\u043d \":\"39\",\"\\u0441\\u0430\\u043d\":\"40\",\"\\u0445\\u0438\\u0439\":\"41\",\" \\u0430\\u0436\":\"42\",\" \\u043e\\u0440\":\"43\",\"\\u043b \\u0443\":\"44\",\"\\u043d \\u0442\":\"45\",\"\\u0443\\u043b\\u0433\":\"46\",\"\\u0430\\u0439\\u0433\":\"47\",\"\\u0434\\u043b\\u044b\":\"48\",\"\\u0439\\u0433 \":\"49\",\" \\u0437\\u0430\":\"50\",\"\\u0434\\u044d\\u0441\":\"51\",\"\\u043d \\u0430\":\"52\",\"\\u043d\\u0434\\u044d\":\"53\",\"\\u0443\\u043b\\u0430\":\"54\",\"\\u044d\\u044d \":\"55\",\"\\u0430\\u0433\\u0430\":\"56\",\"\\u0438\\u0439\\u0433\":\"57\",\"v\\u0439 \":\"58\",\"\\u0430\\u0430 \":\"59\",\"\\u0439 \\u0430\":\"60\",\"\\u043b\\u044b\\u043d\":\"61\",\"\\u043d \\u0437\":\"62\",\" \\u0430\\u044e\":\"63\",\" \\u0437\\u0454\":\"64\",\"\\u0430\\u0430\\u0440\":\"65\",\"\\u0430\\u0434 \":\"66\",\"\\u0430\\u0440 \":\"67\",\"\\u0433v\\u0439\":\"68\",\"\\u0437\\u0454\\u0432\":\"69\",\"\\u0430\\u0436\\u0438\":\"70\",\"\\u0430\\u043b \":\"71\",\"\\u0430\\u044e\\u0443\":\"72\",\"\\u0433 \\u0445\":\"73\",\"\\u043b\\u0433v\":\"74\",\"\\u043b\\u0436 \":\"75\",\"\\u0441\\u043d\\u0438\":\"76\",\"\\u044d\\u0441\\u043d\":\"77\",\"\\u044e\\u0443\\u043b\":\"78\",\"\\u0439\\u0434\\u043b\":\"79\",\"\\u043b\\u044b\\u0433\":\"80\",\"\\u043d\\u0445\\u0438\":\"81\",\"\\u0443\\u0443\\u0434\":\"82\",\"\\u0445\\u0430\\u043c\":\"83\",\" \\u043d\\u044d\":\"84\",\" \\u0441\\u0430\":\"85\",\"\\u0433\\u0438\\u0439\":\"86\",\"\\u043b\\u0430\\u0445\":\"87\",\"\\u043b\\u0454\\u043b\":\"88\",\"\\u0440\\u0454\\u043d\":\"89\",\"\\u0454\\u0433\\u0447\":\"90\",\" \\u0442\\u0430\":\"91\",\"\\u0438\\u043b\\u043b\":\"92\",\"\\u043b\\u0438\\u0439\":\"93\",\"\\u043b\\u044d\\u0445\":\"94\",\"\\u0440\\u0438\\u0439\":\"95\",\"\\u044d\\u0445 \":\"96\",\" \\u0435\\u0440\":\"97\",\" \\u044d\\u0440\":\"98\",\"\\u0432\\u043b\\u0454\":\"99\",\"\\u0435\\u0440\\u0454\":\"100\",\"\\u0438\\u0439\\u043b\":\"101\",\"\\u043b\\u043e\\u043d\":\"102\",\"\\u043b\\u0454\\u0433\":\"103\",\"\\u0454\\u0432\\u043b\":\"104\",\"\\u0454\\u043d\\u0445\":\"105\",\" \\u0445\\u043e\":\"106\",\"\\u0430\\u0440\\u0438\":\"107\",\"\\u0438\\u0445 \":\"108\",\"\\u0445\\u0430\\u043d\":\"109\",\"\\u044d\\u0440 \":\"110\",\"\\u0454\\u043d \":\"111\",\"vv\\u043b\":\"112\",\"\\u0436 \\u0431\":\"113\",\"\\u0442\\u044d\\u0439\":\"114\",\"\\u0445 \\u0445\":\"115\",\"\\u044d\\u0440\\u0445\":\"116\",\" v\\u043d\":\"117\",\" \\u043d\\u044c\":\"118\",\"v\\u043d\\u0434\":\"119\",\"\\u0430\\u043b\\u0442\":\"120\",\"\\u0439\\u043b\\u0454\":\"121\",\"\\u043d\\u044c \":\"122\",\"\\u0442\\u0454\\u0440\":\"123\",\" \\u0433\\u0430\":\"124\",\" \\u0441\\u0443\":\"125\",\"\\u0430\\u0430\\u043d\":\"126\",\"\\u0434\\u0430\\u0430\":\"127\",\"\\u0438\\u043b\\u0446\":\"128\",\"\\u0439\\u0433\\u0443\":\"129\",\"\\u043b \\u0430\":\"130\",\"\\u043b\\u0430\\u0430\":\"131\",\"\\u043d \\u043d\":\"132\",\"\\u0440\\u0443\\u0443\":\"133\",\"\\u044d\\u0439 \":\"134\",\" \\u0442\\u043e\":\"135\",\"\\u043d \\u0441\":\"136\",\"\\u0440\\u0438\\u043b\":\"137\",\"\\u0454\\u0440\\u0438\":\"138\",\"\\u0430\\u0430\\u0433\":\"139\",\"\\u0433\\u0447 \":\"140\",\"\\u043b\\u044d\\u044d\":\"141\",\"\\u043d \\u043e\":\"142\",\"\\u0440\\u044d\\u0433\":\"143\",\"\\u0441\\u0443\\u0443\":\"144\",\"\\u044d\\u0440\\u044d\":\"145\",\"\\u0457\\u0457\\u043b\":\"146\",\" y\\u043d\":\"147\",\" \\u0431\\u0443\":\"148\",\" \\u0434\\u044d\":\"149\",\" \\u043e\\u043b\":\"150\",\" \\u0442\\u0443\":\"151\",\" \\u0448\\u0438\":\"152\",\"y\\u043d\\u0434\":\"153\",\"\\u0430\\u0448\\u0438\":\"154\",\"\\u0433 \\u0442\":\"155\",\"\\u0438\\u0433 \":\"156\",\"\\u0439\\u043b \":\"157\",\"\\u0445\\u0430\\u0440\":\"158\",\"\\u0448\\u0438\\u043d\":\"159\",\"\\u044d\\u0433 \":\"160\",\"\\u0454\\u0440 \":\"161\",\" \\u0438\\u0445\":\"162\",\" \\u0445\\u0454\":\"163\",\" \\u0445\\u0457\":\"164\",\"\\u0430\\u043c \":\"165\",\"\\u0430\\u043d\\u0433\":\"166\",\"\\u0438\\u043d \":\"167\",\"\\u0439\\u0433\\u0430\":\"168\",\"\\u043b\\u0441\\u0430\":\"169\",\"\\u043d v\":\"170\",\"\\u043d \\u0435\":\"171\",\"\\u043d\\u0430\\u043b\":\"172\",\"\\u043d\\u0434 \":\"173\",\"\\u0445\\u0443\\u0443\":\"174\",\"\\u0446\\u0430\\u0430\":\"175\",\"\\u044d\\u0434 \":\"176\",\"\\u044d\\u044d\\u0440\":\"177\",\"\\u0454\\u043b \":\"178\",\"v\\u0439\\u043b\":\"179\",\"\\u0430\\u0434\\u0430\":\"180\",\"\\u0430\\u0439\\u043d\":\"181\",\"\\u0430\\u043b\\u0430\":\"182\",\"\\u0430\\u043c\\u0442\":\"183\",\"\\u0433\\u0430\\u0445\":\"184\",\"\\u0434 \\u0445\":\"185\",\"\\u0434\\u0430\\u043b\":\"186\",\"\\u0437\\u0430\\u0440\":\"187\",\"\\u043b \\u0431\":\"188\",\"\\u043b\\u0430\\u043d\":\"189\",\"\\u043d \\u0434\":\"190\",\"\\u0441\\u044d\\u043d\":\"191\",\"\\u0443\\u043b\\u043b\":\"192\",\"\\u0445 \\u0431\":\"193\",\"\\u0445\\u044d\\u0440\":\"194\",\" \\u0431v\":\"195\",\" \\u0434\\u0430\":\"196\",\" \\u0437\\u043e\":\"197\",\"v\\u0440\\u044d\":\"198\",\"\\u0430\\u0430\\u0434\":\"199\",\"\\u0433\\u044d\\u044d\":\"200\",\"\\u043b\\u044d\\u043d\":\"201\",\"\\u043d \\u0438\":\"202\",\"\\u043d \\u044d\":\"203\",\"\\u043d\\u0433\\u0430\":\"204\",\"\\u043d\\u044d \":\"205\",\"\\u0442\\u0430\\u043b\":\"206\",\"\\u0442\\u044b\\u043d\":\"207\",\"\\u0445\\u0443\\u0440\":\"208\",\"\\u044d\\u043b \":\"209\",\" \\u043d\\u0430\":\"210\",\" \\u043d\\u0438\":\"211\",\" \\u043e\\u043d\":\"212\",\"v\\u043b\\u044d\":\"213\",\"\\u0430\\u0433 \":\"214\",\"\\u0430\\u0436 \":\"215\",\"\\u0430\\u0439 \":\"216\",\"\\u0430\\u0442\\u0430\":\"217\",\"\\u0431\\u0430\\u0440\":\"218\",\"\\u0433 \\u0431\":\"219\",\"\\u0433\\u0430\\u0434\":\"220\",\"\\u0433\\u0457\\u0439\":\"221\",\"\\u0439 \\u0445\":\"222\",\"\\u043b\\u0442 \":\"223\",\"\\u043d \\u043c\":\"224\",\"\\u043d\\u0430 \":\"225\",\"\\u043e\\u0440\\u043e\":\"226\",\"\\u0443\\u043b\\u044c\":\"227\",\"\\u0447\\u0438\\u043d\":\"228\",\"\\u044d\\u0436 \":\"229\",\"\\u044d\\u043d\\u044d\":\"230\",\"\\u044d\\u044d\\u0434\":\"231\",\"\\u0457\\u0439 \":\"232\",\"\\u0457\\u043b\\u044d\":\"233\",\" \\u0431\\u0438\":\"234\",\" \\u0442\\u044d\":\"235\",\" \\u044d\\u043d\":\"236\",\"\\u0430\\u043d\\u044b\":\"237\",\"\\u0434\\u0438\\u0439\":\"238\",\"\\u0434\\u044d\\u044d\":\"239\",\"\\u043b\\u0430\\u043b\":\"240\",\"\\u043b\\u0433\\u0430\":\"241\",\"\\u043b\\u0434 \":\"242\",\"\\u043b\\u043e\\u0433\":\"243\",\"\\u043b\\u044c \":\"244\",\"\\u043d \\u0443\":\"245\",\"\\u043d \\u0457\":\"246\",\"\\u0440 \\u0431\":\"247\",\"\\u0440\\u0430\\u043b\":\"248\",\"\\u0441\\u043e\\u043d\":\"249\",\"\\u0442\\u0430\\u0439\":\"250\",\"\\u0443\\u0434\\u043b\":\"251\",\"\\u044d\\u043b\\u0442\":\"252\",\"\\u044d\\u0440\\u0433\":\"253\",\"\\u0454\\u043b\\u0454\":\"254\",\" v\\u0439\":\"255\",\" \\u0432 \":\"256\",\" \\u0433\\u044d\":\"257\",\" \\u0445v\":\"258\",\"\\u0430\\u0440\\u0430\":\"259\",\"\\u0431v\\u0440\":\"260\",\"\\u0434 \\u043d\":\"261\",\"\\u0434 \\u043e\":\"262\",\"\\u043b \\u0445\":\"263\",\"\\u043b\\u0441 \":\"264\",\"\\u043b\\u0442\\u044b\":\"265\",\"\\u043d \\u0433\":\"266\",\"\\u043d\\u044d\\u0433\":\"267\",\"\\u043e\\u0433\\u0442\":\"268\",\"\\u043e\\u043b\\u044b\":\"269\",\"\\u043e\\u0451\\u0440\":\"270\",\"\\u0440 \\u0442\":\"271\",\"\\u0440\\u044d\\u044d\":\"272\",\"\\u0442\\u0430\\u0432\":\"273\",\"\\u0442\\u043e\\u0433\":\"274\",\"\\u0443\\u0443\\u0440\":\"275\",\"\\u0445\\u043e\\u0451\":\"276\",\"\\u0445\\u044d\\u043b\":\"277\",\"\\u0445\\u044d\\u044d\":\"278\",\"\\u044d\\u043b\\u044d\":\"279\",\"\\u0451\\u0440 \":\"280\",\" \\u0430\\u0432\":\"281\",\" \\u0430\\u0441\":\"282\",\" \\u0430\\u0448\":\"283\",\" \\u0434\\u0443\":\"284\",\" \\u0441\\u043e\":\"285\",\" \\u0447\\u0438\":\"286\",\" \\u044d\\u0432\":\"287\",\" \\u0454\\u0440\":\"288\",\"\\u0430\\u0430\\u043b\":\"289\",\"\\u0430\\u043b\\u0434\":\"290\",\"\\u0430\\u043c\\u0436\":\"291\",\"\\u0430\\u043d\\u0434\":\"292\",\"\\u0430\\u0441\\u0443\":\"293\",\"\\u0432\\u044d\\u0440\":\"294\",\"\\u0433 \\u0443\":\"295\",\"\\u0434\\u0432\\u044d\":\"296\",\"\\u0436vv\":\"297\",\"\\u043b\\u0446\\u0430\":\"298\",\"\\u043b\\u044d\\u043b\":\"299\"},\"nepali\":{\"\\u0915\\u094b \":\"0\",\"\\u0915\\u093e \":\"1\",\"\\u092e\\u093e \":\"2\",\"\\u0939\\u0930\\u0941\":\"3\",\" \\u0928\\u0947\":\"4\",\"\\u0928\\u0947\\u092a\":\"5\",\"\\u092a\\u093e\\u0932\":\"6\",\"\\u0947\\u092a\\u093e\":\"7\",\" \\u0938\\u092e\":\"8\",\"\\u0932\\u0947 \":\"9\",\" \\u092a\\u094d\":\"10\",\"\\u092a\\u094d\\u0930\":\"11\",\"\\u0915\\u093e\\u0930\":\"12\",\"\\u093e \\u0938\":\"13\",\"\\u090f\\u0915\\u094b\":\"14\",\" \\u092d\\u090f\":\"15\",\" \\u091b \":\"16\",\" \\u092d\\u093e\":\"17\",\"\\u094d\\u0930\\u092e\":\"18\",\" \\u0917\\u0930\":\"19\",\"\\u0930\\u0941\\u0915\":\"20\",\" \\u0930 \":\"21\",\"\\u092d\\u093e\\u0930\":\"22\",\"\\u093e\\u0930\\u0924\":\"23\",\" \\u0915\\u093e\":\"24\",\" \\u0935\\u093f\":\"25\",\"\\u092d\\u090f\\u0915\":\"26\",\"\\u093e\\u0932\\u0940\":\"27\",\"\\u0932\\u0940 \":\"28\",\"\\u093e \\u092a\":\"29\",\"\\u0940\\u0939\\u0930\":\"30\",\"\\u093e\\u0930\\u094d\":\"31\",\"\\u094b \\u091b\":\"32\",\"\\u0928\\u093e \":\"33\",\"\\u0930\\u0941 \":\"34\",\"\\u093e\\u0932\\u0915\":\"35\",\"\\u094d\\u092f\\u093e\":\"36\",\" \\u092c\\u093e\":\"37\",\"\\u090f\\u0915\\u093e\":\"38\",\"\\u0928\\u0947 \":\"39\",\"\\u0928\\u094d\\u0924\":\"40\",\"\\u093e \\u092c\":\"41\",\"\\u093e\\u0915\\u094b\":\"42\",\"\\u093e\\u0930 \":\"43\",\"\\u093e \\u092d\":\"44\",\"\\u093e\\u0939\\u0930\":\"45\",\"\\u094d\\u0930\\u094b\":\"46\",\"\\u0915\\u094d\\u0937\":\"47\",\"\\u0928\\u094d \":\"48\",\"\\u093e\\u0930\\u0940\":\"49\",\" \\u0928\\u093f\":\"50\",\"\\u093e \\u0928\":\"51\",\"\\u0940 \\u0938\":\"52\",\" \\u0921\\u0941\":\"53\",\"\\u0915\\u094d\\u0930\":\"54\",\"\\u091c\\u0928\\u093e\":\"55\",\"\\u092f\\u094b \":\"56\",\"\\u093e \\u091b\":\"57\",\"\\u0947\\u0935\\u093e\":\"58\",\"\\u094d\\u0924\\u093e\":\"59\",\" \\u0930\\u093e\":\"60\",\"\\u0924\\u094d\\u092f\":\"61\",\"\\u0928\\u094d\\u0926\":\"62\",\"\\u0939\\u0941\\u0928\":\"63\",\"\\u093e \\u0915\":\"64\",\"\\u093e\\u092e\\u093e\":\"65\",\"\\u0940 \\u0928\":\"66\",\"\\u094d\\u0926\\u093e\":\"67\",\" \\u0938\\u0947\":\"68\",\"\\u091b\\u0928\\u094d\":\"69\",\"\\u092e\\u094d\\u092c\":\"70\",\"\\u0930\\u094b\\u0924\":\"71\",\"\\u0938\\u0947\\u0935\":\"72\",\"\\u0938\\u094d\\u0924\":\"73\",\"\\u0938\\u094d\\u0930\":\"74\",\"\\u0947\\u0915\\u093e\":\"75\",\"\\u094d\\u0924 \":\"76\",\" \\u092c\\u0940\":\"77\",\" \\u0939\\u0941\":\"78\",\"\\u0915\\u094d\\u0924\":\"79\",\"\\u0924\\u094d\\u0930\":\"80\",\"\\u0930\\u0924 \":\"81\",\"\\u0930\\u094d\\u0928\":\"82\",\"\\u0930\\u094d\\u092f\":\"83\",\"\\u093e \\u0930\":\"84\",\"\\u093e\\u0915\\u093e\":\"85\",\"\\u0941\\u0915\\u094b\":\"86\",\" \\u090f\\u0915\":\"87\",\" \\u0938\\u0902\":\"88\",\" \\u0938\\u0941\":\"89\",\"\\u092c\\u0940\\u092c\":\"90\",\"\\u092c\\u0940\\u0938\":\"91\",\"\\u0932\\u0915\\u094b\":\"92\",\"\\u0938\\u094d\\u092f\":\"93\",\"\\u0940\\u092c\\u0940\":\"94\",\"\\u0940\\u0938\\u0940\":\"95\",\"\\u0947\\u0915\\u094b\":\"96\",\"\\u094b \\u0938\":\"97\",\"\\u094d\\u092f\\u0915\":\"98\",\" \\u091b\\u0928\":\"99\",\" \\u091c\\u0928\":\"100\",\" \\u092c\\u093f\":\"101\",\" \\u092e\\u0941\":\"102\",\" \\u0938\\u094d\":\"103\",\"\\u0917\\u0930\\u094d\":\"104\",\"\\u0924\\u093e\\u0939\":\"105\",\"\\u0928\\u094d\\u0927\":\"106\",\"\\u092c\\u093e\\u0930\":\"107\",\"\\u092e\\u0928\\u094d\":\"108\",\"\\u092e\\u0938\\u094d\":\"109\",\"\\u0930\\u0941\\u0932\":\"110\",\"\\u0932\\u093e\\u0908\":\"111\",\"\\u093e \\u0935\":\"112\",\"\\u093e\\u0908 \":\"113\",\"\\u093e\\u0932 \":\"114\",\"\\u093f\\u0915\\u093e\":\"115\",\" \\u0924\\u094d\":\"116\",\" \\u092e\\u093e\":\"117\",\" \\u092f\\u0938\":\"118\",\" \\u0930\\u0941\":\"119\",\"\\u0924\\u093e\\u0915\":\"120\",\"\\u092c\\u0928\\u094d\":\"121\",\"\\u0930 \\u092c\":\"122\",\"\\u0930\\u0923 \":\"123\",\"\\u0930\\u0941\\u092a\":\"124\",\"\\u0930\\u0947\\u0915\":\"125\",\"\\u0937\\u094d\\u091f\":\"126\",\"\\u0938\\u092e\\u094d\":\"127\",\"\\u0938\\u0940 \":\"128\",\"\\u093e\\u090f\\u0915\":\"129\",\"\\u0941\\u0915\\u093e\":\"130\",\"\\u0941\\u0915\\u094d\":\"131\",\" \\u0905\\u0927\":\"132\",\" \\u0905\\u0928\":\"133\",\" \\u0924\\u0925\":\"134\",\" \\u0925\\u093f\":\"135\",\" \\u0926\\u0947\":\"136\",\" \\u092a\\u0930\":\"137\",\" \\u092c\\u0948\":\"138\",\"\\u0924\\u0925\\u093e\":\"139\",\"\\u0924\\u093e \":\"140\",\"\\u0926\\u093e \":\"141\",\"\\u0926\\u094d\\u0926\":\"142\",\"\\u0928\\u0940 \":\"143\",\"\\u092c\\u093e\\u091f\":\"144\",\"\\u092f\\u0915\\u094d\":\"145\",\"\\u0930\\u0940 \":\"146\",\"\\u0930\\u0940\\u0939\":\"147\",\"\\u0930\\u094d\\u092e\":\"148\",\"\\u0932\\u0915\\u093e\":\"149\",\"\\u0938\\u092e\\u0938\":\"150\",\"\\u093e \\u0905\":\"151\",\"\\u093e \\u090f\":\"152\",\"\\u093e\\u091f \":\"153\",\"\\u093f\\u092f \":\"154\",\"\\u094b \\u092a\":\"155\",\"\\u094b \\u092e\":\"156\",\"\\u094d\\u0928 \":\"157\",\"\\u094d\\u0928\\u0947\":\"158\",\"\\u094d\\u0937\\u093e\":\"159\",\" \\u092a\\u093e\":\"160\",\" \\u092f\\u094b\":\"161\",\" \\u0939\\u093e\":\"162\",\"\\u0905\\u0927\\u093f\":\"163\",\"\\u0921\\u0941\\u0935\":\"164\",\"\\u0924 \\u092d\":\"165\",\"\\u0924 \\u0938\":\"166\",\"\\u0925\\u093e \":\"167\",\"\\u0927\\u093f\\u0915\":\"168\",\"\\u092a\\u092e\\u093e\":\"169\",\"\\u092c\\u0948\\u0920\":\"170\",\"\\u092e\\u0941\\u0926\":\"171\",\"\\u092f\\u093e \":\"172\",\"\\u092f\\u0941\\u0915\":\"173\",\"\\u0930 \\u0928\":\"174\",\"\\u0930\\u0924\\u093f\":\"175\",\"\\u0935\\u093e\\u0928\":\"176\",\"\\u0938\\u093e\\u0930\":\"177\",\"\\u093e \\u0906\":\"178\",\"\\u093e \\u091c\":\"179\",\"\\u093e \\u0939\":\"180\",\"\\u0941\\u0926\\u094d\":\"181\",\"\\u0941\\u092a\\u092e\":\"182\",\"\\u0941\\u0932\\u0947\":\"183\",\"\\u0941\\u0935\\u093e\":\"184\",\"\\u0948\\u0920\\u0915\":\"185\",\"\\u094b \\u092c\":\"186\",\"\\u094d\\u0924\\u0930\":\"187\",\"\\u094d\\u092f \":\"188\",\"\\u094d\\u092f\\u0938\":\"189\",\" \\u0915\\u094d\":\"190\",\" \\u092e\\u0928\":\"191\",\" \\u0930\\u0939\":\"192\",\"\\u091a\\u093e\\u0930\":\"193\",\"\\u0924\\u093f\\u092f\":\"194\",\"\\u0926\\u0948 \":\"195\",\"\\u0928\\u093f\\u0930\":\"196\",\"\\u0928\\u0941 \":\"197\",\"\\u092a\\u0930\\u094d\":\"198\",\"\\u0930\\u0915\\u094d\":\"199\",\"\\u0930\\u094d\\u0926\":\"200\",\"\\u0938\\u092e\\u093e\":\"201\",\"\\u0938\\u0941\\u0930\":\"202\",\"\\u093e\\u0909\\u0928\":\"203\",\"\\u093e\\u0928 \":\"204\",\"\\u093e\\u0928\\u092e\":\"205\",\"\\u093e\\u0930\\u0923\":\"206\",\"\\u093e\\u0932\\u0947\":\"207\",\"\\u093f \\u092c\":\"208\",\"\\u093f\\u092f\\u094b\":\"209\",\"\\u0941\\u0928\\u094d\":\"210\",\"\\u0941\\u0930\\u0915\":\"211\",\"\\u094d\\u0924\\u094d\":\"212\",\"\\u094d\\u092c\\u0928\":\"213\",\"\\u094d\\u0930\\u093e\":\"214\",\"\\u094d\\u0937 \":\"215\",\" \\u0906\\u0930\":\"216\",\" \\u091c\\u0932\":\"217\",\" \\u092c\\u0947\":\"218\",\" \\u092f\\u093e\":\"219\",\" \\u0938\\u093e\":\"220\",\"\\u0906\\u090f\\u0915\":\"221\",\"\\u090f\\u0915 \":\"222\",\"\\u0915\\u0930\\u094d\":\"223\",\"\\u091c\\u0932\\u0938\":\"224\",\"\\u0923\\u0915\\u093e\":\"225\",\"\\u0924 \\u0930\":\"226\",\"\\u0926\\u094d\\u0930\":\"227\",\"\\u0927\\u093e\\u0928\":\"228\",\"\\u0927\\u093f \":\"229\",\"\\u0928\\u0915\\u093e\":\"230\",\"\\u0928\\u092e\\u093e\":\"231\",\"\\u0928\\u093f \":\"232\",\"\\u092e\\u092e\\u093e\":\"233\",\"\\u0930\\u092e \":\"234\",\"\\u0930\\u0939\\u0947\":\"235\",\"\\u0930\\u093e\\u091c\":\"236\",\"\\u0932\\u0938\\u094d\":\"237\",\"\\u0932\\u093e \":\"238\",\"\\u0935\\u093e\\u0930\":\"239\",\"\\u0938\\u0915\\u093e\":\"240\",\"\\u0939\\u093f\\u0932\":\"241\",\"\\u0939\\u0947\\u0915\":\"242\",\"\\u093e \\u0924\":\"243\",\"\\u093e\\u0930\\u0947\":\"244\",\"\\u093f\\u0928\\u094d\":\"245\",\"\\u093f\\u0938\\u094d\":\"246\",\"\\u0947 \\u0938\":\"247\",\"\\u094b \\u0928\":\"248\",\"\\u094b \\u0930\":\"249\",\"\\u094b\\u0924 \":\"250\",\"\\u094d\\u0927\\u093f\":\"251\",\"\\u094d\\u092e\\u0940\":\"252\",\"\\u094d\\u0930\\u0938\":\"253\",\" \\u0926\\u0941\":\"254\",\" \\u092a\\u0928\":\"255\",\" \\u092c\\u0924\":\"256\",\" \\u092c\\u0928\":\"257\",\" \\u092d\\u0928\":\"258\",\"\\u0902\\u092f\\u0941\":\"259\",\"\\u0906\\u0930\\u092e\":\"260\",\"\\u0916\\u093f \":\"261\",\"\\u0923\\u094d\\u0921\":\"262\",\"\\u0924\\u0915\\u093e\":\"263\",\"\\u0924\\u093e\\u0932\":\"264\",\"\\u0926\\u0940 \":\"265\",\"\\u0926\\u0947\\u0916\":\"266\",\"\\u0928\\u093f\\u092f\":\"267\",\"\\u092a\\u0928\\u093f\":\"268\",\"\\u092a\\u094d\\u0924\":\"269\",\"\\u092c\\u0924\\u093e\":\"270\",\"\\u092e\\u0940 \":\"271\",\"\\u092e\\u094d\\u092d\":\"272\",\"\\u0930 \\u0938\":\"273\",\"\\u0930\\u092e\\u094d\":\"274\",\"\\u0932\\u092e\\u093e\":\"275\",\"\\u0935\\u093f\\u0936\":\"276\",\"\\u0937\\u093e\\u0915\":\"277\",\"\\u0938\\u0902\\u092f\":\"278\",\"\\u093e \\u0921\":\"279\",\"\\u093e \\u092e\":\"280\",\"\\u093e\\u0928\\u0915\":\"281\",\"\\u093e\\u0932\\u092e\":\"282\",\"\\u093f \\u092d\":\"283\",\"\\u093f\\u0924 \":\"284\",\"\\u0940 \\u092a\":\"285\",\"\\u0940 \\u0930\":\"286\",\"\\u0941 \\u092d\":\"287\",\"\\u0941\\u0928\\u0947\":\"288\",\"\\u0947 \\u0917\":\"289\",\"\\u0947\\u0916\\u093f\":\"290\",\"\\u0947\\u0930 \":\"291\",\"\\u094b \\u092d\":\"292\",\"\\u094b \\u0935\":\"293\",\"\\u094b \\u0939\":\"294\",\"\\u094d\\u092d \":\"295\",\"\\u094d\\u0930 \":\"296\",\" \\u0924\\u093e\":\"297\",\" \\u0928\\u092e\":\"298\",\" \\u0928\\u093e\":\"299\"},\"norwegian\":{\"er \":\"0\",\"en \":\"1\",\"et \":\"2\",\" de\":\"3\",\"det\":\"4\",\" i \":\"5\",\"for\":\"6\",\"il \":\"7\",\" fo\":\"8\",\" me\":\"9\",\"ing\":\"10\",\"om \":\"11\",\" ha\":\"12\",\" og\":\"13\",\"ter\":\"14\",\" er\":\"15\",\" ti\":\"16\",\" st\":\"17\",\"og \":\"18\",\"til\":\"19\",\"ne \":\"20\",\" vi\":\"21\",\"re \":\"22\",\" en\":\"23\",\" se\":\"24\",\"te \":\"25\",\"or \":\"26\",\"de \":\"27\",\"kke\":\"28\",\"ke \":\"29\",\"ar \":\"30\",\"ng \":\"31\",\"r s\":\"32\",\"ene\":\"33\",\" so\":\"34\",\"e s\":\"35\",\"der\":\"36\",\"an \":\"37\",\"som\":\"38\",\"ste\":\"39\",\"at \":\"40\",\"ed \":\"41\",\"r i\":\"42\",\" av\":\"43\",\" in\":\"44\",\"men\":\"45\",\" at\":\"46\",\" ko\":\"47\",\" p\\u00e5\":\"48\",\"har\":\"49\",\" si\":\"50\",\"ere\":\"51\",\"p\\u00e5 \":\"52\",\"nde\":\"53\",\"and\":\"54\",\"els\":\"55\",\"ett\":\"56\",\"tte\":\"57\",\"lig\":\"58\",\"t s\":\"59\",\"den\":\"60\",\"t i\":\"61\",\"ikk\":\"62\",\"med\":\"63\",\"n s\":\"64\",\"rt \":\"65\",\"ser\":\"66\",\"ska\":\"67\",\"t e\":\"68\",\"ker\":\"69\",\"sen\":\"70\",\"av \":\"71\",\"ler\":\"72\",\"r a\":\"73\",\"ten\":\"74\",\"e f\":\"75\",\"r e\":\"76\",\"r t\":\"77\",\"ede\":\"78\",\"ig \":\"79\",\" re\":\"80\",\"han\":\"81\",\"lle\":\"82\",\"ner\":\"83\",\" bl\":\"84\",\" fr\":\"85\",\"le \":\"86\",\" ve\":\"87\",\"e t\":\"88\",\"lan\":\"89\",\"mme\":\"90\",\"nge\":\"91\",\" be\":\"92\",\" ik\":\"93\",\" om\":\"94\",\" \\u00e5 \":\"95\",\"ell\":\"96\",\"sel\":\"97\",\"sta\":\"98\",\"ver\":\"99\",\" et\":\"100\",\" sk\":\"101\",\"nte\":\"102\",\"one\":\"103\",\"ore\":\"104\",\"r d\":\"105\",\"ske\":\"106\",\" an\":\"107\",\" la\":\"108\",\"del\":\"109\",\"gen\":\"110\",\"nin\":\"111\",\"r f\":\"112\",\"r v\":\"113\",\"se \":\"114\",\" po\":\"115\",\"ir \":\"116\",\"jon\":\"117\",\"mer\":\"118\",\"nen\":\"119\",\"omm\":\"120\",\"sjo\":\"121\",\" fl\":\"122\",\" sa\":\"123\",\"ern\":\"124\",\"kom\":\"125\",\"r m\":\"126\",\"r o\":\"127\",\"ren\":\"128\",\"vil\":\"129\",\"ale\":\"130\",\"es \":\"131\",\"n a\":\"132\",\"t f\":\"133\",\" le\":\"134\",\"bli\":\"135\",\"e e\":\"136\",\"e i\":\"137\",\"e v\":\"138\",\"het\":\"139\",\"ye \":\"140\",\" ir\":\"141\",\"al \":\"142\",\"e o\":\"143\",\"ide\":\"144\",\"iti\":\"145\",\"lit\":\"146\",\"nne\":\"147\",\"ran\":\"148\",\"t o\":\"149\",\"tal\":\"150\",\"tat\":\"151\",\"tt \":\"152\",\" ka\":\"153\",\"ans\":\"154\",\"asj\":\"155\",\"ge \":\"156\",\"inn\":\"157\",\"kon\":\"158\",\"lse\":\"159\",\"pet\":\"160\",\"t d\":\"161\",\"vi \":\"162\",\" ut\":\"163\",\"ent\":\"164\",\"eri\":\"165\",\"oli\":\"166\",\"r p\":\"167\",\"ret\":\"168\",\"ris\":\"169\",\"sto\":\"170\",\"str\":\"171\",\"t a\":\"172\",\" ga\":\"173\",\"all\":\"174\",\"ape\":\"175\",\"g s\":\"176\",\"ill\":\"177\",\"ira\":\"178\",\"kap\":\"179\",\"nn \":\"180\",\"opp\":\"181\",\"r h\":\"182\",\"rin\":\"183\",\" br\":\"184\",\" op\":\"185\",\"e m\":\"186\",\"ert\":\"187\",\"ger\":\"188\",\"ion\":\"189\",\"kal\":\"190\",\"lsk\":\"191\",\"nes\":\"192\",\" gj\":\"193\",\" mi\":\"194\",\" pr\":\"195\",\"ang\":\"196\",\"e h\":\"197\",\"e r\":\"198\",\"elt\":\"199\",\"enn\":\"200\",\"i s\":\"201\",\"ist\":\"202\",\"jen\":\"203\",\"kan\":\"204\",\"lt \":\"205\",\"nal\":\"206\",\"res\":\"207\",\"tor\":\"208\",\"ass\":\"209\",\"dre\":\"210\",\"e b\":\"211\",\"e p\":\"212\",\"mel\":\"213\",\"n t\":\"214\",\"nse\":\"215\",\"ort\":\"216\",\"per\":\"217\",\"reg\":\"218\",\"sje\":\"219\",\"t p\":\"220\",\"t v\":\"221\",\" hv\":\"222\",\" n\\u00e5\":\"223\",\" va\":\"224\",\"ann\":\"225\",\"ato\":\"226\",\"e a\":\"227\",\"est\":\"228\",\"ise\":\"229\",\"isk\":\"230\",\"oil\":\"231\",\"ord\":\"232\",\"pol\":\"233\",\"ra \":\"234\",\"rak\":\"235\",\"sse\":\"236\",\"toi\":\"237\",\" gr\":\"238\",\"ak \":\"239\",\"eg \":\"240\",\"ele\":\"241\",\"g a\":\"242\",\"ige\":\"243\",\"igh\":\"244\",\"m e\":\"245\",\"n f\":\"246\",\"n v\":\"247\",\"ndr\":\"248\",\"nsk\":\"249\",\"rer\":\"250\",\"t m\":\"251\",\"und\":\"252\",\"var\":\"253\",\"\\u00e5r \":\"254\",\" he\":\"255\",\" no\":\"256\",\" ny\":\"257\",\"end\":\"258\",\"ete\":\"259\",\"fly\":\"260\",\"g i\":\"261\",\"ghe\":\"262\",\"ier\":\"263\",\"ind\":\"264\",\"int\":\"265\",\"lin\":\"266\",\"n d\":\"267\",\"n p\":\"268\",\"rne\":\"269\",\"sak\":\"270\",\"sie\":\"271\",\"t b\":\"272\",\"tid\":\"273\",\" al\":\"274\",\" pa\":\"275\",\" tr\":\"276\",\"ag \":\"277\",\"dig\":\"278\",\"e d\":\"279\",\"e k\":\"280\",\"ess\":\"281\",\"hol\":\"282\",\"i d\":\"283\",\"lag\":\"284\",\"led\":\"285\",\"n e\":\"286\",\"n i\":\"287\",\"n o\":\"288\",\"pri\":\"289\",\"r b\":\"290\",\"st \":\"291\",\" fe\":\"292\",\" li\":\"293\",\" ry\":\"294\",\"air\":\"295\",\"ake\":\"296\",\"d s\":\"297\",\"eas\":\"298\",\"egi\":\"299\"},\"pashto\":{\" \\u062f \":\"0\",\"\\u0627\\u0624 \":\"1\",\" \\u0627\\u0624\":\"2\",\"\\u0646\\u0648 \":\"3\",\"\\u06d0 \\u062f\":\"4\",\"\\u0631\\u0647 \":\"5\",\" \\u067e\\u0647\":\"6\",\"\\u0646\\u0647 \":\"7\",\"\\u0686\\u06d0 \":\"8\",\" \\u0686\\u06d0\":\"9\",\"\\u067e\\u0647 \":\"10\",\"\\u0647 \\u062f\":\"11\",\"\\u062a\\u0647 \":\"12\",\"\\u0648 \\u0627\":\"13\",\"\\u0648\\u0646\\u0648\":\"14\",\"\\u0648 \\u062f\":\"15\",\" \\u0627\\u0648\":\"16\",\"\\u0627\\u0646\\u0648\":\"17\",\"\\u0648\\u0646\\u0647\":\"18\",\"\\u0647 \\u06a9\":\"19\",\" \\u062f\\u0627\":\"20\",\"\\u0647 \\u0627\":\"21\",\"\\u062f\\u06d0 \":\"22\",\"\\u069a\\u06d0 \":\"23\",\" \\u06a9\\u06d0\":\"24\",\"\\u0627\\u0646 \":\"25\",\"\\u0644\\u0648 \":\"26\",\"\\u0647\\u0645 \":\"27\",\"\\u0648 \\u0645\":\"28\",\"\\u06a9\\u069a\\u06d0\":\"29\",\"\\u0647 \\u0645\":\"30\",\"\\u0649 \\u0627\":\"31\",\" \\u0646\\u0648\":\"32\",\" \\u062a\\u0647\":\"33\",\" \\u06a9\\u069a\":\"34\",\"\\u0631\\u0648\\u0646\":\"35\",\"\\u06a9\\u06d0 \":\"36\",\"\\u062f\\u0647 \":\"37\",\"\\u0644\\u0647 \":\"38\",\"\\u0628\\u0647 \":\"39\",\"\\u0631\\u0648 \":\"40\",\" \\u0647\\u0645\":\"41\",\"\\u0647 \\u0648\":\"42\",\"\\u0648\\u0649 \":\"43\",\"\\u0627\\u0648 \":\"44\",\"\\u062a\\u0648\\u0646\":\"45\",\"\\u062f\\u0627 \":\"46\",\" \\u06a9\\u0648\":\"47\",\" \\u06a9\\u0693\":\"48\",\"\\u0642\\u0627\\u0645\":\"49\",\" \\u062a\\u0631\":\"50\",\"\\u0631\\u0627\\u0646\":\"51\",\"\\u0647 \\u067e\":\"52\",\"\\u06d0 \\u0648\":\"53\",\"\\u06d0 \\u067e\":\"54\",\" \\u0628\\u0647\":\"55\",\" \\u062e\\u0648\":\"56\",\"\\u062a\\u0648 \":\"57\",\"\\u062f \\u062f\":\"58\",\"\\u062f \\u0627\":\"59\",\"\\u0647 \\u062a\":\"60\",\"\\u0648 \\u067e\":\"61\",\"\\u064a\\u0627 \":\"62\",\" \\u062e\\u067e\":\"63\",\" \\u062f\\u0648\":\"64\",\" \\u0631\\u0627\":\"65\",\" \\u0645\\u0634\":\"66\",\" \\u067e\\u0631\":\"67\",\"\\u0627\\u0631\\u0648\":\"68\",\"\\u0631\\u06d0 \":\"69\",\"\\u0645 \\u062f\":\"70\",\"\\u0645\\u0634\\u0631\":\"71\",\" \\u0634\\u0648\":\"72\",\" \\u0648\\u0631\":\"73\",\"\\u0627\\u0631 \":\"74\",\"\\u062f\\u0649 \":\"75\",\" \\u0627\\u062f\":\"76\",\" \\u062f\\u0649\":\"77\",\" \\u0645\\u0648\":\"78\",\"\\u062f \\u067e\":\"79\",\"\\u0644\\u064a \":\"80\",\"\\u0648 \\u06a9\":\"81\",\" \\u0645\\u0642\":\"82\",\" \\u064a\\u0648\":\"83\",\"\\u0624 \\u062f\":\"84\",\"\\u062e\\u067e\\u0644\":\"85\",\"\\u0633\\u0631\\u0647\":\"86\",\"\\u0647 \\u0686\":\"87\",\"\\u0648\\u0631 \":\"88\",\" \\u062a\\u0627\":\"89\",\" \\u062f\\u06d0\":\"90\",\" \\u0631\\u0648\":\"91\",\" \\u0633\\u0631\":\"92\",\" \\u0645\\u0644\":\"93\",\" \\u06a9\\u0627\":\"94\",\"\\u0624 \\u0627\":\"95\",\"\\u0627\\u0631\\u0647\":\"96\",\"\\u0628\\u0631\\u0648\":\"97\",\"\\u0645\\u0647 \":\"98\",\"\\u0647 \\u0628\":\"99\",\"\\u0648 \\u062a\":\"100\",\"\\u067e\\u069a\\u062a\":\"101\",\" \\u0628\\u0627\":\"102\",\" \\u062f\\u063a\":\"103\",\" \\u0642\\u0628\":\"104\",\" \\u0644\\u0647\":\"105\",\" \\u0648\\u0627\":\"106\",\" \\u067e\\u0627\":\"107\",\" \\u067e\\u069a\":\"108\",\"\\u062f \\u0645\":\"109\",\"\\u062f \\u0647\":\"110\",\"\\u0644\\u06d0 \":\"111\",\"\\u0645\\u0627\\u062a\":\"112\",\"\\u0645\\u0648 \":\"113\",\"\\u0647 \\u0647\":\"114\",\"\\u0648\\u064a \":\"115\",\"\\u06d0 \\u0628\":\"116\",\"\\u06d0 \\u06a9\":\"117\",\" \\u062f\\u0647\":\"118\",\" \\u0642\\u0627\":\"119\",\"\\u0627\\u0644 \":\"120\",\"\\u0627\\u0645\\u0627\":\"121\",\"\\u062f \\u0646\":\"122\",\"\\u0642\\u0628\\u0631\":\"123\",\"\\u0647 \\u0646\":\"124\",\"\\u067e\\u0627\\u0631\":\"125\",\" \\u0627\\u062b\":\"126\",\" \\u0628\\u064a\":\"127\",\" \\u0644\\u0627\":\"128\",\" \\u0644\\u0631\":\"129\",\"\\u0627\\u062b\\u0627\":\"130\",\"\\u062f \\u062e\":\"131\",\"\\u062f\\u0627\\u0631\":\"132\",\"\\u0631\\u064a\\u062e\":\"133\",\"\\u0634\\u0631\\u0627\":\"134\",\"\\u0645\\u0642\\u0627\":\"135\",\"\\u0646\\u06cd \":\"136\",\"\\u0647 \\u0631\":\"137\",\"\\u0647 \\u0644\":\"138\",\"\\u0648\\u0644\\u0648\":\"139\",\"\\u064a\\u0648 \":\"140\",\"\\u06a9\\u0648\\u0645\":\"141\",\" \\u062f\\u062f\":\"142\",\" \\u0644\\u0648\":\"143\",\" \\u0645\\u062d\":\"144\",\" \\u0645\\u0631\":\"145\",\" \\u0648\\u0648\":\"146\",\"\\u0627\\u062a\\u0648\":\"147\",\"\\u0627\\u0631\\u064a\":\"148\",\"\\u0627\\u0644\\u0648\":\"149\",\"\\u0627\\u0646\\u062f\":\"150\",\"\\u062e\\u0627\\u0646\":\"151\",\"\\u062f \\u062a\":\"152\",\"\\u0633\\u06d0 \":\"153\",\"\\u0644\\u0649 \":\"154\",\"\\u0646\\u0648\\u0631\":\"155\",\"\\u0648 \\u0644\":\"156\",\"\\u064a \\u0686\":\"157\",\"\\u0693\\u064a \":\"158\",\"\\u069a\\u062a\\u0648\":\"159\",\"\\u06d0 \\u0644\":\"160\",\" \\u062c\\u0648\":\"161\",\" \\u0633\\u064a\":\"162\",\"\\u0627\\u0645 \":\"163\",\"\\u0628\\u0627\\u0646\":\"164\",\"\\u062a\\u0627\\u0631\":\"165\",\"\\u062a\\u0631 \":\"166\",\"\\u062b\\u0627\\u0631\":\"167\",\"\\u062e\\u0648 \":\"168\",\"\\u062f\\u0648 \":\"169\",\"\\u0631 \\u06a9\":\"170\",\"\\u0644 \\u062f\":\"171\",\"\\u0645\\u0648\\u0646\":\"172\",\"\\u0646\\u062f\\u06d0\":\"173\",\"\\u0648 \\u0646\":\"174\",\"\\u0648\\u0644 \":\"175\",\"\\u0648\\u0647 \":\"176\",\"\\u0649 \\u0648\":\"177\",\"\\u064a \\u062f\":\"178\",\"\\u06d0 \\u0627\":\"179\",\"\\u06d0 \\u062a\":\"180\",\"\\u06d0 \\u064a\":\"181\",\" \\u062d\\u06a9\":\"182\",\" \\u062e\\u0628\":\"183\",\" \\u0646\\u0647\":\"184\",\" \\u067e\\u0648\":\"185\",\"\\u0627 \\u062f\":\"186\",\"\\u062a\\u06d0 \":\"187\",\"\\u062c\\u0648\\u0693\":\"188\",\"\\u062d\\u06a9\\u0645\":\"189\",\"\\u062d\\u06a9\\u0648\":\"190\",\"\\u062e\\u0628\\u0631\":\"191\",\"\\u062f\\u0627\\u0646\":\"192\",\"\\u0631 \\u062f\":\"193\",\"\\u063a\\u0647 \":\"194\",\"\\u0642\\u0627\\u0641\":\"195\",\"\\u0645\\u062d\\u06a9\":\"196\",\"\\u0648\\u0627\\u0644\":\"197\",\"\\u0648\\u0645\\u062a\":\"198\",\"\\u0648\\u064a\\u0644\":\"199\",\"\\u0649 \\u062f\":\"200\",\"\\u0649 \\u0645\":\"201\",\"\\u064a\\u0631\\u0647\":\"202\",\"\\u067e\\u0631 \":\"203\",\"\\u06a9\\u0648\\u0644\":\"204\",\"\\u06d0 \\u0647\":\"205\",\" \\u062a\\u064a\":\"206\",\" \\u062e\\u0627\":\"207\",\" \\u0648\\u06a9\":\"208\",\" \\u064a\\u0627\":\"209\",\" \\u0681\\u0627\":\"210\",\"\\u0624 \\u0642\":\"211\",\"\\u0627\\u0646\\u06cd\":\"212\",\"\\u0628\\u0649 \":\"213\",\"\\u063a\\u0648 \":\"214\",\"\\u0647 \\u062e\":\"215\",\"\\u0648 \\u0628\":\"216\",\"\\u0648\\u062f\\u0627\":\"217\",\"\\u064a\\u062f\\u0648\":\"218\",\"\\u0693\\u06d0 \":\"219\",\"\\u06a9\\u0627\\u0644\":\"220\",\" \\u0628\\u0631\":\"221\",\" \\u0642\\u062f\":\"222\",\" \\u0645\\u064a\":\"223\",\" \\u0648\\u064a\":\"224\",\" \\u06a9\\u0631\":\"225\",\"\\u0624 \\u0645\":\"226\",\"\\u0627\\u062a \":\"227\",\"\\u0627\\u064a\\u064a\":\"228\",\"\\u062a\\u0649 \":\"229\",\"\\u062a\\u064a\\u0627\":\"230\",\"\\u062a\\u064a\\u0631\":\"231\",\"\\u062e\\u0648\\u0627\":\"232\",\"\\u062f\\u063a\\u0648\":\"233\",\"\\u062f\\u0645 \":\"234\",\"\\u062f\\u064a\\u0645\":\"235\",\"\\u0631 \\u0648\":\"236\",\"\\u0642\\u062f\\u064a\":\"237\",\"\\u0645 \\u062e\":\"238\",\"\\u0645\\u0627\\u0646\":\"239\",\"\\u0645\\u06d0 \":\"240\",\"\\u0646\\u064a\\u0648\":\"241\",\"\\u0646\\u0696 \":\"242\",\"\\u0647 \\u064a\":\"243\",\"\\u0648 \\u0633\":\"244\",\"\\u0648 \\u0686\":\"245\",\"\\u0648\\u0627\\u0646\":\"246\",\"\\u0648\\u0631\\u0648\":\"247\",\"\\u0648\\u0646\\u0696\":\"248\",\"\\u067e\\u0648\\u0631\":\"249\",\"\\u0693\\u0647 \":\"250\",\"\\u0693\\u0648 \":\"251\",\"\\u06cd \\u062f\":\"252\",\"\\u06d0 \\u0646\":\"253\",\" \\u0627\\u0647\":\"254\",\" \\u0632\\u064a\":\"255\",\" \\u0633\\u0648\":\"256\",\" \\u0634\\u064a\":\"257\",\" \\u0647\\u0631\":\"258\",\" \\u0647\\u063a\":\"259\",\" \\u069a\\u0627\":\"260\",\"\\u0627\\u062a\\u0644\":\"261\",\"\\u0627\\u0642 \":\"262\",\"\\u0627\\u0646\\u064a\":\"263\",\"\\u0628\\u0631\\u064a\":\"264\",\"\\u0628\\u06d0 \":\"265\",\"\\u062a \\u0627\":\"266\",\"\\u062f \\u0628\":\"267\",\"\\u062f \\u0633\":\"268\",\"\\u0631 \\u0645\":\"269\",\"\\u0631\\u0649 \":\"270\",\"\\u0639\\u0631\\u0627\":\"271\",\"\\u0644\\u0627\\u0646\":\"272\",\"\\u0645\\u0649 \":\"273\",\"\\u0646\\u0649 \":\"274\",\"\\u0648 \\u062e\":\"275\",\"\\u0648\\u0626 \":\"276\",\"\\u0648\\u0631\\u06a9\":\"277\",\"\\u0648\\u0631\\u06d0\":\"278\",\"\\u0648\\u0646 \":\"279\",\"\\u0648\\u06a9\\u0693\":\"280\",\"\\u0649 \\u0686\":\"281\",\"\\u064a\\u0645\\u0647\":\"282\",\"\\u064a\\u06d0 \":\"283\",\"\\u069a\\u062a\\u0646\":\"284\",\"\\u06a9\\u0647 \":\"285\",\"\\u06a9\\u0693\\u064a\":\"286\",\"\\u06d0 \\u062e\":\"287\",\"\\u06d2 \\u0634\":\"288\",\" \\u062a\\u062d\":\"289\",\" \\u062a\\u0648\":\"290\",\" \\u062f\\u0631\":\"291\",\" \\u062f\\u067e\":\"292\",\" \\u0635\\u0648\":\"293\",\" \\u0639\\u0631\":\"294\",\" \\u0648\\u0644\":\"295\",\" \\u064a\\u0624\":\"296\",\" \\u067e\\u06c0\":\"297\",\" \\u0685\\u0648\":\"298\",\"\\u0627 \\u0627\":\"299\"},\"pidgin\":{\" de\":\"0\",\" we\":\"1\",\" di\":\"2\",\"di \":\"3\",\"dem\":\"4\",\"em \":\"5\",\"ay \":\"6\",\" sa\":\"7\",\"or \":\"8\",\"say\":\"9\",\"ke \":\"10\",\"ey \":\"11\",\" an\":\"12\",\" go\":\"13\",\" e \":\"14\",\" to\":\"15\",\" ma\":\"16\",\"e d\":\"17\",\"wey\":\"18\",\"for\":\"19\",\"nd \":\"20\",\"to \":\"21\",\" be\":\"22\",\" fo\":\"23\",\"ake\":\"24\",\"im \":\"25\",\" pe\":\"26\",\"le \":\"27\",\"go \":\"28\",\"ll \":\"29\",\"de \":\"30\",\"e s\":\"31\",\"on \":\"32\",\"get\":\"33\",\"ght\":\"34\",\"igh\":\"35\",\" ri\":\"36\",\"et \":\"37\",\"rig\":\"38\",\" ge\":\"39\",\"y d\":\"40\",\" na\":\"41\",\"mak\":\"42\",\"t t\":\"43\",\" no\":\"44\",\"and\":\"45\",\"tin\":\"46\",\"ing\":\"47\",\"eve\":\"48\",\"ri \":\"49\",\" im\":\"50\",\" am\":\"51\",\" or\":\"52\",\"am \":\"53\",\"be \":\"54\",\" ev\":\"55\",\" ta\":\"56\",\"ht \":\"57\",\"e w\":\"58\",\" li\":\"59\",\"eri\":\"60\",\"ng \":\"61\",\"ver\":\"62\",\"all\":\"63\",\"e f\":\"64\",\"ers\":\"65\",\"ntr\":\"66\",\"ont\":\"67\",\" do\":\"68\",\"r d\":\"69\",\" ko\":\"70\",\" ti\":\"71\",\"an \":\"72\",\"kon\":\"73\",\"per\":\"74\",\"tri\":\"75\",\"y e\":\"76\",\"rso\":\"77\",\"son\":\"78\",\"no \":\"79\",\"ome\":\"80\",\"is \":\"81\",\"do \":\"82\",\"ne \":\"83\",\"one\":\"84\",\"ion\":\"85\",\"m g\":\"86\",\"i k\":\"87\",\" al\":\"88\",\"bod\":\"89\",\"i w\":\"90\",\"odi\":\"91\",\" so\":\"92\",\" wo\":\"93\",\"o d\":\"94\",\"st \":\"95\",\"t r\":\"96\",\" of\":\"97\",\"aim\":\"98\",\"e g\":\"99\",\"nai\":\"100\",\" co\":\"101\",\"dis\":\"102\",\"me \":\"103\",\"of \":\"104\",\" wa\":\"105\",\"e t\":\"106\",\" ar\":\"107\",\"e l\":\"108\",\"ike\":\"109\",\"lik\":\"110\",\"t a\":\"111\",\"wor\":\"112\",\"alk\":\"113\",\"ell\":\"114\",\"eop\":\"115\",\"lk \":\"116\",\"opl\":\"117\",\"peo\":\"118\",\"ple\":\"119\",\"re \":\"120\",\"tal\":\"121\",\"any\":\"122\",\"e a\":\"123\",\"o g\":\"124\",\"art\":\"125\",\"cle\":\"126\",\"i p\":\"127\",\"icl\":\"128\",\"rti\":\"129\",\"the\":\"130\",\"tic\":\"131\",\"we \":\"132\",\"f d\":\"133\",\"in \":\"134\",\" mu\":\"135\",\"e n\":\"136\",\"e o\":\"137\",\"mus\":\"138\",\"n d\":\"139\",\"na \":\"140\",\"o m\":\"141\",\"ust\":\"142\",\"wel\":\"143\",\"e e\":\"144\",\"her\":\"145\",\"m d\":\"146\",\"nt \":\"147\",\" fi\":\"148\",\"at \":\"149\",\"e b\":\"150\",\"it \":\"151\",\"m w\":\"152\",\"o t\":\"153\",\"wan\":\"154\",\"com\":\"155\",\"da \":\"156\",\"fit\":\"157\",\"m b\":\"158\",\"so \":\"159\",\" fr\":\"160\",\"ce \":\"161\",\"er \":\"162\",\"o a\":\"163\",\" if\":\"164\",\" on\":\"165\",\"ent\":\"166\",\"if \":\"167\",\"ind\":\"168\",\"kin\":\"169\",\"l d\":\"170\",\"man\":\"171\",\"o s\":\"172\",\" se\":\"173\",\"y a\":\"174\",\"y m\":\"175\",\" re\":\"176\",\"ee \":\"177\",\"k a\":\"178\",\"t s\":\"179\",\"ve \":\"180\",\"y w\":\"181\",\" ki\":\"182\",\"eti\":\"183\",\"men\":\"184\",\"ta \":\"185\",\"y n\":\"186\",\"d t\":\"187\",\"dey\":\"188\",\"e c\":\"189\",\"i o\":\"190\",\"ibo\":\"191\",\"ld \":\"192\",\"m t\":\"193\",\"n b\":\"194\",\"o b\":\"195\",\"ow \":\"196\",\"ree\":\"197\",\"rio\":\"198\",\"t d\":\"199\",\" hu\":\"200\",\" su\":\"201\",\"en \":\"202\",\"hts\":\"203\",\"ive\":\"204\",\"m n\":\"205\",\"n g\":\"206\",\"ny \":\"207\",\"oth\":\"208\",\"ts \":\"209\",\" as\":\"210\",\" wh\":\"211\",\"as \":\"212\",\"gom\":\"213\",\"hum\":\"214\",\"k s\":\"215\",\"oda\":\"216\",\"ork\":\"217\",\"se \":\"218\",\"uma\":\"219\",\"ut \":\"220\",\" ba\":\"221\",\" ot\":\"222\",\"ano\":\"223\",\"m a\":\"224\",\"m s\":\"225\",\"nod\":\"226\",\"om \":\"227\",\"r a\":\"228\",\"r i\":\"229\",\"rk \":\"230\",\" fa\":\"231\",\" si\":\"232\",\" th\":\"233\",\"ad \":\"234\",\"e m\":\"235\",\"eac\":\"236\",\"m m\":\"237\",\"n w\":\"238\",\"nob\":\"239\",\"orl\":\"240\",\"out\":\"241\",\"own\":\"242\",\"r s\":\"243\",\"r w\":\"244\",\"rib\":\"245\",\"rld\":\"246\",\"s w\":\"247\",\"ure\":\"248\",\"wn \":\"249\",\" ow\":\"250\",\"a d\":\"251\",\"bad\":\"252\",\"ch \":\"253\",\"fre\":\"254\",\"gs \":\"255\",\"m k\":\"256\",\"nce\":\"257\",\"ngs\":\"258\",\"o f\":\"259\",\"obo\":\"260\",\"rea\":\"261\",\"sur\":\"262\",\"y o\":\"263\",\" ab\":\"264\",\" un\":\"265\",\"abo\":\"266\",\"ach\":\"267\",\"bou\":\"268\",\"d m\":\"269\",\"dat\":\"270\",\"e p\":\"271\",\"g w\":\"272\",\"hol\":\"273\",\"i m\":\"274\",\"i r\":\"275\",\"m f\":\"276\",\"m o\":\"277\",\"n o\":\"278\",\"now\":\"279\",\"ry \":\"280\",\"s a\":\"281\",\"t o\":\"282\",\"tay\":\"283\",\"wet\":\"284\",\" ag\":\"285\",\" bo\":\"286\",\" da\":\"287\",\" pr\":\"288\",\"arr\":\"289\",\"ati\":\"290\",\"d d\":\"291\",\"d p\":\"292\",\"i g\":\"293\",\"i t\":\"294\",\"liv\":\"295\",\"ly \":\"296\",\"n a\":\"297\",\"od \":\"298\",\"ok \":\"299\"},\"polish\":{\"ie \":\"0\",\"nie\":\"1\",\"em \":\"2\",\" ni\":\"3\",\" po\":\"4\",\" pr\":\"5\",\"dzi\":\"6\",\" na\":\"7\",\"\\u017ce \":\"8\",\"rze\":\"9\",\"na \":\"10\",\"\\u0142em\":\"11\",\"wie\":\"12\",\" w \":\"13\",\" \\u017ce\":\"14\",\"go \":\"15\",\" by\":\"16\",\"prz\":\"17\",\"owa\":\"18\",\"i\\u0119 \":\"19\",\" do\":\"20\",\" si\":\"21\",\"owi\":\"22\",\" pa\":\"23\",\" za\":\"24\",\"ch \":\"25\",\"ego\":\"26\",\"a\\u0142 \":\"27\",\"si\\u0119\":\"28\",\"ej \":\"29\",\"wa\\u0142\":\"30\",\"ym \":\"31\",\"ani\":\"32\",\"a\\u0142e\":\"33\",\"to \":\"34\",\" i \":\"35\",\" to\":\"36\",\" te\":\"37\",\"e p\":\"38\",\" je\":\"39\",\" z \":\"40\",\"czy\":\"41\",\"by\\u0142\":\"42\",\"pan\":\"43\",\"sta\":\"44\",\"kie\":\"45\",\" ja\":\"46\",\"do \":\"47\",\" ch\":\"48\",\" cz\":\"49\",\" wi\":\"50\",\"ia\\u0142\":\"51\",\"a p\":\"52\",\"pow\":\"53\",\" mi\":\"54\",\"li \":\"55\",\"eni\":\"56\",\"zie\":\"57\",\" ta\":\"58\",\" wa\":\"59\",\"\\u0142o \":\"60\",\"a\\u0107 \":\"61\",\"dy \":\"62\",\"ak \":\"63\",\"e w\":\"64\",\" a \":\"65\",\" od\":\"66\",\" st\":\"67\",\"nia\":\"68\",\"rzy\":\"69\",\"ied\":\"70\",\" kt\":\"71\",\"odz\":\"72\",\"cie\":\"73\",\"cze\":\"74\",\"ia \":\"75\",\"iel\":\"76\",\"kt\\u00f3\":\"77\",\"o p\":\"78\",\"t\\u00f3r\":\"79\",\"\\u015bci\":\"80\",\" sp\":\"81\",\" wy\":\"82\",\"jak\":\"83\",\"tak\":\"84\",\"zy \":\"85\",\" mo\":\"86\",\"a\\u0142\\u0119\":\"87\",\"pro\":\"88\",\"ski\":\"89\",\"tem\":\"90\",\"\\u0142\\u0119s\":\"91\",\" tr\":\"92\",\"e m\":\"93\",\"jes\":\"94\",\"my \":\"95\",\" ro\":\"96\",\"edz\":\"97\",\"eli\":\"98\",\"iej\":\"99\",\" rz\":\"100\",\"a n\":\"101\",\"ale\":\"102\",\"an \":\"103\",\"e s\":\"104\",\"est\":\"105\",\"le \":\"106\",\"o s\":\"107\",\"i p\":\"108\",\"ki \":\"109\",\" co\":\"110\",\"ada\":\"111\",\"czn\":\"112\",\"e t\":\"113\",\"e z\":\"114\",\"ent\":\"115\",\"ny \":\"116\",\"pre\":\"117\",\"rz\\u0105\":\"118\",\"y s\":\"119\",\" ko\":\"120\",\" o \":\"121\",\"ach\":\"122\",\"am \":\"123\",\"e n\":\"124\",\"o t\":\"125\",\"oli\":\"126\",\"pod\":\"127\",\"zia\":\"128\",\" go\":\"129\",\" ka\":\"130\",\"by \":\"131\",\"ieg\":\"132\",\"ier\":\"133\",\"no\\u015b\":\"134\",\"roz\":\"135\",\"spo\":\"136\",\"ych\":\"137\",\"z\\u0105d\":\"138\",\" mn\":\"139\",\"acz\":\"140\",\"adz\":\"141\",\"bie\":\"142\",\"cho\":\"143\",\"mni\":\"144\",\"o n\":\"145\",\"ost\":\"146\",\"pra\":\"147\",\"ze \":\"148\",\"\\u0142a \":\"149\",\" so\":\"150\",\"a m\":\"151\",\"cza\":\"152\",\"iem\":\"153\",\"i\\u0107 \":\"154\",\"obi\":\"155\",\"y\\u0142 \":\"156\",\"y\\u0142o\":\"157\",\" mu\":\"158\",\" m\\u00f3\":\"159\",\"a t\":\"160\",\"acj\":\"161\",\"ci \":\"162\",\"e b\":\"163\",\"ich\":\"164\",\"kan\":\"165\",\"mi \":\"166\",\"mie\":\"167\",\"o\\u015bc\":\"168\",\"row\":\"169\",\"zen\":\"170\",\"zyd\":\"171\",\" al\":\"172\",\" re\":\"173\",\"a w\":\"174\",\"den\":\"175\",\"edy\":\"176\",\"i\\u0142 \":\"177\",\"ko \":\"178\",\"o w\":\"179\",\"rac\":\"180\",\"\\u015bmy\":\"181\",\" ma\":\"182\",\" ra\":\"183\",\" sz\":\"184\",\" ty\":\"185\",\"e j\":\"186\",\"isk\":\"187\",\"ji \":\"188\",\"ka \":\"189\",\"m s\":\"190\",\"no \":\"191\",\"o z\":\"192\",\"rez\":\"193\",\"wa \":\"194\",\"\\u00f3w \":\"195\",\"\\u0142ow\":\"196\",\"\\u015b\\u0107 \":\"197\",\" ob\":\"198\",\"ech\":\"199\",\"ecz\":\"200\",\"ezy\":\"201\",\"i w\":\"202\",\"ja \":\"203\",\"kon\":\"204\",\"m\\u00f3w\":\"205\",\"ne \":\"206\",\"ni \":\"207\",\"now\":\"208\",\"nym\":\"209\",\"pol\":\"210\",\"pot\":\"211\",\"yde\":\"212\",\" dl\":\"213\",\" sy\":\"214\",\"a s\":\"215\",\"aki\":\"216\",\"ali\":\"217\",\"dla\":\"218\",\"icz\":\"219\",\"ku \":\"220\",\"ocz\":\"221\",\"st \":\"222\",\"str\":\"223\",\"szy\":\"224\",\"trz\":\"225\",\"wia\":\"226\",\"y p\":\"227\",\"za \":\"228\",\" wt\":\"229\",\"chc\":\"230\",\"esz\":\"231\",\"iec\":\"232\",\"im \":\"233\",\"la \":\"234\",\"o m\":\"235\",\"sa \":\"236\",\"wa\\u0107\":\"237\",\"y n\":\"238\",\"zac\":\"239\",\"zec\":\"240\",\" gd\":\"241\",\"a z\":\"242\",\"ard\":\"243\",\"co \":\"244\",\"dar\":\"245\",\"e r\":\"246\",\"ien\":\"247\",\"m n\":\"248\",\"m w\":\"249\",\"mia\":\"250\",\"mo\\u017c\":\"251\",\"raw\":\"252\",\"rdz\":\"253\",\"tan\":\"254\",\"ted\":\"255\",\"teg\":\"256\",\"wi\\u0142\":\"257\",\"wte\":\"258\",\"y z\":\"259\",\"zna\":\"260\",\"z\\u0142o\":\"261\",\"a r\":\"262\",\"awi\":\"263\",\"bar\":\"264\",\"cji\":\"265\",\"cz\\u0105\":\"266\",\"dow\":\"267\",\"e\\u017c \":\"268\",\"gdy\":\"269\",\"iek\":\"270\",\"je \":\"271\",\"o d\":\"272\",\"ta\\u0142\":\"273\",\"wal\":\"274\",\"wsz\":\"275\",\"zed\":\"276\",\"\\u00f3wi\":\"277\",\"\\u0119sa\":\"278\",\" ba\":\"279\",\" lu\":\"280\",\" wo\":\"281\",\"aln\":\"282\",\"arn\":\"283\",\"ba \":\"284\",\"dzo\":\"285\",\"e c\":\"286\",\"hod\":\"287\",\"igi\":\"288\",\"lig\":\"289\",\"m p\":\"290\",\"my\\u015b\":\"291\",\"o c\":\"292\",\"oni\":\"293\",\"rel\":\"294\",\"sku\":\"295\",\"ste\":\"296\",\"y w\":\"297\",\"yst\":\"298\",\"z w\":\"299\"},\"portuguese\":{\"de \":\"0\",\" de\":\"1\",\"os \":\"2\",\"as \":\"3\",\"que\":\"4\",\" co\":\"5\",\"\\u00e3o \":\"6\",\"o d\":\"7\",\" qu\":\"8\",\"ue \":\"9\",\" a \":\"10\",\"do \":\"11\",\"ent\":\"12\",\" se\":\"13\",\"a d\":\"14\",\"s d\":\"15\",\"e a\":\"16\",\"es \":\"17\",\" pr\":\"18\",\"ra \":\"19\",\"da \":\"20\",\" es\":\"21\",\" pa\":\"22\",\"to \":\"23\",\" o \":\"24\",\"em \":\"25\",\"con\":\"26\",\"o p\":\"27\",\" do\":\"28\",\"est\":\"29\",\"nte\":\"30\",\"\\u00e7\\u00e3o\":\"31\",\" da\":\"32\",\" re\":\"33\",\"ma \":\"34\",\"par\":\"35\",\" te\":\"36\",\"ara\":\"37\",\"ida\":\"38\",\" e \":\"39\",\"ade\":\"40\",\"is \":\"41\",\" um\":\"42\",\" po\":\"43\",\"a a\":\"44\",\"a p\":\"45\",\"dad\":\"46\",\"no \":\"47\",\"te \":\"48\",\" no\":\"49\",\"a\\u00e7\\u00e3\":\"50\",\"pro\":\"51\",\"al \":\"52\",\"com\":\"53\",\"e d\":\"54\",\"s a\":\"55\",\" as\":\"56\",\"a c\":\"57\",\"er \":\"58\",\"men\":\"59\",\"s e\":\"60\",\"ais\":\"61\",\"nto\":\"62\",\"res\":\"63\",\"a s\":\"64\",\"ado\":\"65\",\"ist\":\"66\",\"s p\":\"67\",\"tem\":\"68\",\"e c\":\"69\",\"e s\":\"70\",\"ia \":\"71\",\"o s\":\"72\",\"o a\":\"73\",\"o c\":\"74\",\"e p\":\"75\",\"sta\":\"76\",\"ta \":\"77\",\"tra\":\"78\",\"ura\":\"79\",\" di\":\"80\",\" pe\":\"81\",\"ar \":\"82\",\"e e\":\"83\",\"ser\":\"84\",\"uma\":\"85\",\"mos\":\"86\",\"se \":\"87\",\" ca\":\"88\",\"o e\":\"89\",\" na\":\"90\",\"a e\":\"91\",\"des\":\"92\",\"ont\":\"93\",\"por\":\"94\",\" in\":\"95\",\" ma\":\"96\",\"ect\":\"97\",\"o q\":\"98\",\"ria\":\"99\",\"s c\":\"100\",\"ste\":\"101\",\"ver\":\"102\",\"cia\":\"103\",\"dos\":\"104\",\"ica\":\"105\",\"str\":\"106\",\" ao\":\"107\",\" em\":\"108\",\"das\":\"109\",\"e t\":\"110\",\"ito\":\"111\",\"iza\":\"112\",\"pre\":\"113\",\"tos\":\"114\",\" n\\u00e3\":\"115\",\"ada\":\"116\",\"n\\u00e3o\":\"117\",\"ess\":\"118\",\"eve\":\"119\",\"or \":\"120\",\"ran\":\"121\",\"s n\":\"122\",\"s t\":\"123\",\"tur\":\"124\",\" ac\":\"125\",\" fa\":\"126\",\"a r\":\"127\",\"ens\":\"128\",\"eri\":\"129\",\"na \":\"130\",\"sso\":\"131\",\" si\":\"132\",\" \\u00e9 \":\"133\",\"bra\":\"134\",\"esp\":\"135\",\"mo \":\"136\",\"nos\":\"137\",\"ro \":\"138\",\"um \":\"139\",\"a n\":\"140\",\"ao \":\"141\",\"ico\":\"142\",\"liz\":\"143\",\"min\":\"144\",\"o n\":\"145\",\"ons\":\"146\",\"pri\":\"147\",\"ten\":\"148\",\"tic\":\"149\",\"\\u00f5es\":\"150\",\" tr\":\"151\",\"a m\":\"152\",\"aga\":\"153\",\"e n\":\"154\",\"ili\":\"155\",\"ime\":\"156\",\"m a\":\"157\",\"nci\":\"158\",\"nha\":\"159\",\"nta\":\"160\",\"spe\":\"161\",\"tiv\":\"162\",\"am \":\"163\",\"ano\":\"164\",\"arc\":\"165\",\"ass\":\"166\",\"cer\":\"167\",\"e o\":\"168\",\"ece\":\"169\",\"emo\":\"170\",\"ga \":\"171\",\"o m\":\"172\",\"rag\":\"173\",\"so \":\"174\",\"s\\u00e3o\":\"175\",\" au\":\"176\",\" os\":\"177\",\" sa\":\"178\",\"ali\":\"179\",\"ca \":\"180\",\"ema\":\"181\",\"emp\":\"182\",\"ici\":\"183\",\"ido\":\"184\",\"inh\":\"185\",\"iss\":\"186\",\"l d\":\"187\",\"la \":\"188\",\"lic\":\"189\",\"m c\":\"190\",\"mai\":\"191\",\"onc\":\"192\",\"pec\":\"193\",\"ram\":\"194\",\"s q\":\"195\",\" ci\":\"196\",\" en\":\"197\",\" fo\":\"198\",\"a o\":\"199\",\"ame\":\"200\",\"car\":\"201\",\"co \":\"202\",\"der\":\"203\",\"eir\":\"204\",\"ho \":\"205\",\"io \":\"206\",\"om \":\"207\",\"ora\":\"208\",\"r a\":\"209\",\"sen\":\"210\",\"ter\":\"211\",\" br\":\"212\",\" ex\":\"213\",\"a u\":\"214\",\"cul\":\"215\",\"dev\":\"216\",\"e u\":\"217\",\"ha \":\"218\",\"mpr\":\"219\",\"nce\":\"220\",\"oca\":\"221\",\"ove\":\"222\",\"rio\":\"223\",\"s o\":\"224\",\"sa \":\"225\",\"sem\":\"226\",\"tes\":\"227\",\"uni\":\"228\",\"ven\":\"229\",\"za\\u00e7\":\"230\",\"\\u00e7\\u00f5e\":\"231\",\" ad\":\"232\",\" al\":\"233\",\" an\":\"234\",\" mi\":\"235\",\" mo\":\"236\",\" ve\":\"237\",\" \\u00e0 \":\"238\",\"a i\":\"239\",\"a q\":\"240\",\"ala\":\"241\",\"amo\":\"242\",\"bli\":\"243\",\"cen\":\"244\",\"col\":\"245\",\"cos\":\"246\",\"cto\":\"247\",\"e m\":\"248\",\"e v\":\"249\",\"ede\":\"250\",\"g\\u00e1s\":\"251\",\"ias\":\"252\",\"ita\":\"253\",\"iva\":\"254\",\"ndo\":\"255\",\"o t\":\"256\",\"ore\":\"257\",\"r d\":\"258\",\"ral\":\"259\",\"rea\":\"260\",\"s f\":\"261\",\"sid\":\"262\",\"tro\":\"263\",\"vel\":\"264\",\"vid\":\"265\",\"\\u00e1s \":\"266\",\" ap\":\"267\",\" ar\":\"268\",\" ce\":\"269\",\" ou\":\"270\",\" p\\u00fa\":\"271\",\" so\":\"272\",\" vi\":\"273\",\"a f\":\"274\",\"act\":\"275\",\"arr\":\"276\",\"bil\":\"277\",\"cam\":\"278\",\"e f\":\"279\",\"e i\":\"280\",\"el \":\"281\",\"for\":\"282\",\"lem\":\"283\",\"lid\":\"284\",\"lo \":\"285\",\"m d\":\"286\",\"mar\":\"287\",\"nde\":\"288\",\"o o\":\"289\",\"omo\":\"290\",\"ort\":\"291\",\"per\":\"292\",\"p\\u00fab\":\"293\",\"r u\":\"294\",\"rei\":\"295\",\"rem\":\"296\",\"ros\":\"297\",\"rre\":\"298\",\"ssi\":\"299\"},\"romanian\":{\" de\":\"0\",\" \\u00een\":\"1\",\"de \":\"2\",\" a \":\"3\",\"ul \":\"4\",\" co\":\"5\",\"\\u00een \":\"6\",\"re \":\"7\",\"e d\":\"8\",\"ea \":\"9\",\" di\":\"10\",\" pr\":\"11\",\"le \":\"12\",\"\\u015fi \":\"13\",\"are\":\"14\",\"at \":\"15\",\"con\":\"16\",\"ui \":\"17\",\" \\u015fi\":\"18\",\"i d\":\"19\",\"ii \":\"20\",\" cu\":\"21\",\"e a\":\"22\",\"lui\":\"23\",\"ern\":\"24\",\"te \":\"25\",\"cu \":\"26\",\" la\":\"27\",\"a c\":\"28\",\"c\\u0103 \":\"29\",\"din\":\"30\",\"e c\":\"31\",\"or \":\"32\",\"ulu\":\"33\",\"ne \":\"34\",\"ter\":\"35\",\"la \":\"36\",\"s\\u0103 \":\"37\",\"tat\":\"38\",\"tre\":\"39\",\" ac\":\"40\",\" s\\u0103\":\"41\",\"est\":\"42\",\"st \":\"43\",\"t\\u0103 \":\"44\",\" ca\":\"45\",\" ma\":\"46\",\" pe\":\"47\",\"cur\":\"48\",\"ist\":\"49\",\"m\\u00e2n\":\"50\",\"a d\":\"51\",\"i c\":\"52\",\"nat\":\"53\",\" ce\":\"54\",\"i a\":\"55\",\"ia \":\"56\",\"in \":\"57\",\"scu\":\"58\",\" mi\":\"59\",\"ato\":\"60\",\"a\\u0163i\":\"61\",\"ie \":\"62\",\" re\":\"63\",\" se\":\"64\",\"a a\":\"65\",\"int\":\"66\",\"ntr\":\"67\",\"tru\":\"68\",\"uri\":\"69\",\"\\u0103 a\":\"70\",\" fo\":\"71\",\" pa\":\"72\",\"ate\":\"73\",\"ini\":\"74\",\"tul\":\"75\",\"ent\":\"76\",\"min\":\"77\",\"pre\":\"78\",\"pro\":\"79\",\"a p\":\"80\",\"e p\":\"81\",\"e s\":\"82\",\"ei \":\"83\",\"n\\u0103 \":\"84\",\"par\":\"85\",\"rna\":\"86\",\"rul\":\"87\",\"tor\":\"88\",\" in\":\"89\",\" ro\":\"90\",\" tr\":\"91\",\" un\":\"92\",\"al \":\"93\",\"ale\":\"94\",\"art\":\"95\",\"ce \":\"96\",\"e e\":\"97\",\"e \\u00ee\":\"98\",\"fos\":\"99\",\"ita\":\"100\",\"nte\":\"101\",\"om\\u00e2\":\"102\",\"ost\":\"103\",\"rom\":\"104\",\"ru \":\"105\",\"str\":\"106\",\"ver\":\"107\",\" ex\":\"108\",\" na\":\"109\",\"a f\":\"110\",\"lor\":\"111\",\"nis\":\"112\",\"rea\":\"113\",\"rit\":\"114\",\" al\":\"115\",\" eu\":\"116\",\" no\":\"117\",\"ace\":\"118\",\"cer\":\"119\",\"ile\":\"120\",\"nal\":\"121\",\"pri\":\"122\",\"ri \":\"123\",\"sta\":\"124\",\"ste\":\"125\",\"\\u0163ie\":\"126\",\" au\":\"127\",\" da\":\"128\",\" ju\":\"129\",\" po\":\"130\",\"ar \":\"131\",\"au \":\"132\",\"ele\":\"133\",\"ere\":\"134\",\"eri\":\"135\",\"ina\":\"136\",\"n a\":\"137\",\"n c\":\"138\",\"res\":\"139\",\"se \":\"140\",\"t a\":\"141\",\"tea\":\"142\",\" c\\u0103\":\"143\",\" do\":\"144\",\" fi\":\"145\",\"a s\":\"146\",\"at\\u0103\":\"147\",\"com\":\"148\",\"e \\u015f\":\"149\",\"eur\":\"150\",\"guv\":\"151\",\"i s\":\"152\",\"ice\":\"153\",\"ili\":\"154\",\"na \":\"155\",\"rec\":\"156\",\"rep\":\"157\",\"ril\":\"158\",\"rne\":\"159\",\"rti\":\"160\",\"uro\":\"161\",\"uve\":\"162\",\"\\u0103 p\":\"163\",\" ar\":\"164\",\" o \":\"165\",\" su\":\"166\",\" vi\":\"167\",\"dec\":\"168\",\"dre\":\"169\",\"oar\":\"170\",\"ons\":\"171\",\"pe \":\"172\",\"rii\":\"173\",\" ad\":\"174\",\" ge\":\"175\",\"a m\":\"176\",\"a r\":\"177\",\"ain\":\"178\",\"ali\":\"179\",\"car\":\"180\",\"cat\":\"181\",\"ecu\":\"182\",\"ene\":\"183\",\"ept\":\"184\",\"ext\":\"185\",\"ilo\":\"186\",\"iu \":\"187\",\"n p\":\"188\",\"ori\":\"189\",\"sec\":\"190\",\"u p\":\"191\",\"une\":\"192\",\"\\u0103 c\":\"193\",\"\\u015fti\":\"194\",\"\\u0163ia\":\"195\",\" ch\":\"196\",\" gu\":\"197\",\"ai \":\"198\",\"ani\":\"199\",\"cea\":\"200\",\"e f\":\"201\",\"isc\":\"202\",\"l a\":\"203\",\"lic\":\"204\",\"liu\":\"205\",\"mar\":\"206\",\"nic\":\"207\",\"nt \":\"208\",\"nul\":\"209\",\"ris\":\"210\",\"t c\":\"211\",\"t p\":\"212\",\"tic\":\"213\",\"tid\":\"214\",\"u a\":\"215\",\"ucr\":\"216\",\" as\":\"217\",\" dr\":\"218\",\" fa\":\"219\",\" nu\":\"220\",\" pu\":\"221\",\" to\":\"222\",\"cra\":\"223\",\"dis\":\"224\",\"en\\u0163\":\"225\",\"esc\":\"226\",\"gen\":\"227\",\"it \":\"228\",\"ivi\":\"229\",\"l d\":\"230\",\"n d\":\"231\",\"nd \":\"232\",\"nu \":\"233\",\"ond\":\"234\",\"pen\":\"235\",\"ral\":\"236\",\"riv\":\"237\",\"rte\":\"238\",\"sti\":\"239\",\"t d\":\"240\",\"ta \":\"241\",\"to \":\"242\",\"uni\":\"243\",\"xte\":\"244\",\"\\u00e2nd\":\"245\",\"\\u00eens\":\"246\",\"\\u0103 s\":\"247\",\" bl\":\"248\",\" st\":\"249\",\" uc\":\"250\",\"a b\":\"251\",\"a i\":\"252\",\"a l\":\"253\",\"air\":\"254\",\"ast\":\"255\",\"bla\":\"256\",\"bri\":\"257\",\"che\":\"258\",\"duc\":\"259\",\"dul\":\"260\",\"e m\":\"261\",\"eas\":\"262\",\"edi\":\"263\",\"esp\":\"264\",\"i l\":\"265\",\"i p\":\"266\",\"ica\":\"267\",\"ic\\u0103\":\"268\",\"ir \":\"269\",\"iun\":\"270\",\"jud\":\"271\",\"lai\":\"272\",\"lul\":\"273\",\"mai\":\"274\",\"men\":\"275\",\"ni \":\"276\",\"pus\":\"277\",\"put\":\"278\",\"ra \":\"279\",\"rai\":\"280\",\"rop\":\"281\",\"sil\":\"282\",\"ti \":\"283\",\"tra\":\"284\",\"u s\":\"285\",\"ua \":\"286\",\"ude\":\"287\",\"urs\":\"288\",\"\\u00e2n \":\"289\",\"\\u00eent\":\"290\",\"\\u0163\\u0103 \":\"291\",\" lu\":\"292\",\" mo\":\"293\",\" s \":\"294\",\" sa\":\"295\",\" sc\":\"296\",\"a u\":\"297\",\"an \":\"298\",\"atu\":\"299\"},\"russian\":{\" \\u043d\\u0430\":\"0\",\" \\u043f\\u0440\":\"1\",\"\\u0442\\u043e \":\"2\",\" \\u043d\\u0435\":\"3\",\"\\u043b\\u0438 \":\"4\",\" \\u043f\\u043e\":\"5\",\"\\u043d\\u043e \":\"6\",\" \\u0432 \":\"7\",\"\\u043d\\u0430 \":\"8\",\"\\u0442\\u044c \":\"9\",\"\\u043d\\u0435 \":\"10\",\" \\u0438 \":\"11\",\" \\u043a\\u043e\":\"12\",\"\\u043e\\u043c \":\"13\",\"\\u043f\\u0440\\u043e\":\"14\",\" \\u0442\\u043e\":\"15\",\"\\u0438\\u0445 \":\"16\",\" \\u043a\\u0430\":\"17\",\"\\u0430\\u0442\\u044c\":\"18\",\"\\u043e\\u0442\\u043e\":\"19\",\" \\u0437\\u0430\":\"20\",\"\\u0438\\u0435 \":\"21\",\"\\u043e\\u0432\\u0430\":\"22\",\"\\u0442\\u0435\\u043b\":\"23\",\"\\u0442\\u043e\\u0440\":\"24\",\" \\u0434\\u0435\":\"25\",\"\\u043e\\u0439 \":\"26\",\"\\u0441\\u0442\\u0438\":\"27\",\" \\u043e\\u0442\":\"28\",\"\\u0430\\u0445 \":\"29\",\"\\u043c\\u0438 \":\"30\",\"\\u0441\\u0442\\u0440\":\"31\",\" \\u0431\\u0435\":\"32\",\" \\u0432\\u043e\":\"33\",\" \\u0440\\u0430\":\"34\",\"\\u0430\\u044f \":\"35\",\"\\u0432\\u0430\\u0442\":\"36\",\"\\u0435\\u0439 \":\"37\",\"\\u0435\\u0442 \":\"38\",\"\\u0436\\u0435 \":\"39\",\"\\u0438\\u0447\\u0435\":\"40\",\"\\u0438\\u044f \":\"41\",\"\\u043e\\u0432 \":\"42\",\"\\u0441\\u0442\\u043e\":\"43\",\" \\u043e\\u0431\":\"44\",\"\\u0432\\u0435\\u0440\":\"45\",\"\\u0433\\u043e \":\"46\",\"\\u0438 \\u0432\":\"47\",\"\\u0438 \\u043f\":\"48\",\"\\u0438 \\u0441\":\"49\",\"\\u0438\\u0438 \":\"50\",\"\\u0438\\u0441\\u0442\":\"51\",\"\\u043e \\u0432\":\"52\",\"\\u043e\\u0441\\u0442\":\"53\",\"\\u0442\\u0440\\u0430\":\"54\",\" \\u0442\\u0435\":\"55\",\"\\u0435\\u043b\\u0438\":\"56\",\"\\u0435\\u0440\\u0435\":\"57\",\"\\u043a\\u043e\\u0442\":\"58\",\"\\u043b\\u044c\\u043d\":\"59\",\"\\u043d\\u0438\\u043a\":\"60\",\"\\u043d\\u0442\\u0438\":\"61\",\"\\u043e \\u0441\":\"62\",\"\\u0440\\u043e\\u0440\":\"63\",\"\\u0441\\u0442\\u0432\":\"64\",\"\\u0447\\u0435\\u0441\":\"65\",\" \\u0431\\u043e\":\"66\",\" \\u0432\\u0435\":\"67\",\" \\u0434\\u0430\":\"68\",\" \\u0438\\u043d\":\"69\",\" \\u043d\\u043e\":\"70\",\" \\u0441 \":\"71\",\" \\u0441\\u043e\":\"72\",\" \\u0441\\u043f\":\"73\",\" \\u0441\\u0442\":\"74\",\" \\u0447\\u0442\":\"75\",\"\\u0430\\u043b\\u0438\":\"76\",\"\\u0430\\u043c\\u0438\":\"77\",\"\\u0432\\u0438\\u0434\":\"78\",\"\\u0434\\u0435\\u0442\":\"79\",\"\\u0435 \\u043d\":\"80\",\"\\u0435\\u043b\\u044c\":\"81\",\"\\u0435\\u0441\\u043a\":\"82\",\"\\u0435\\u0441\\u0442\":\"83\",\"\\u0437\\u0430\\u043b\":\"84\",\"\\u0438 \\u043d\":\"85\",\"\\u0438\\u0432\\u0430\":\"86\",\"\\u043a\\u043e\\u043d\":\"87\",\"\\u043e\\u0433\\u043e\":\"88\",\"\\u043e\\u0434\\u043d\":\"89\",\"\\u043e\\u0436\\u043d\":\"90\",\"\\u043e\\u043b\\u044c\":\"91\",\"\\u043e\\u0440\\u0438\":\"92\",\"\\u0440\\u043e\\u0432\":\"93\",\"\\u0441\\u043a\\u043e\":\"94\",\"\\u0441\\u044f \":\"95\",\"\\u0442\\u0435\\u0440\":\"96\",\"\\u0447\\u0442\\u043e\":\"97\",\" \\u043c\\u043e\":\"98\",\" \\u0441\\u0430\":\"99\",\" \\u044d\\u0442\":\"100\",\"\\u0430\\u043d\\u0442\":\"101\",\"\\u0432\\u0441\\u0435\":\"102\",\"\\u0435\\u0440\\u0440\":\"103\",\"\\u0435\\u0441\\u043b\":\"104\",\"\\u0438\\u0434\\u0435\":\"105\",\"\\u0438\\u043d\\u0430\":\"106\",\"\\u0438\\u043d\\u043e\":\"107\",\"\\u0438\\u0440\\u043e\":\"108\",\"\\u0438\\u0442\\u0435\":\"109\",\"\\u043a\\u0430 \":\"110\",\"\\u043a\\u043e \":\"111\",\"\\u043a\\u043e\\u043b\":\"112\",\"\\u043a\\u043e\\u043c\":\"113\",\"\\u043b\\u0430 \":\"114\",\"\\u043d\\u0438\\u044f\":\"115\",\"\\u043e \\u0442\":\"116\",\"\\u043e\\u043b\\u043e\":\"117\",\"\\u0440\\u0430\\u043d\":\"118\",\"\\u0440\\u0435\\u0434\":\"119\",\"\\u0441\\u044c \":\"120\",\"\\u0442\\u0438\\u0432\":\"121\",\"\\u0442\\u0438\\u0447\":\"122\",\"\\u044b\\u0445 \":\"123\",\" \\u0432\\u0438\":\"124\",\" \\u0432\\u0441\":\"125\",\" \\u0433\\u043e\":\"126\",\" \\u043c\\u0430\":\"127\",\" \\u0441\\u043b\":\"128\",\"\\u0430\\u043a\\u043e\":\"129\",\"\\u0430\\u043d\\u0438\":\"130\",\"\\u0430\\u0441\\u0442\":\"131\",\"\\u0431\\u0435\\u0437\":\"132\",\"\\u0434\\u0435\\u043b\":\"133\",\"\\u0435 \\u0434\":\"134\",\"\\u0435 \\u043f\":\"135\",\"\\u0435\\u043c \":\"136\",\"\\u0436\\u043d\\u043e\":\"137\",\"\\u0438 \\u0434\":\"138\",\"\\u0438\\u043a\\u0430\":\"139\",\"\\u043a\\u0430\\u0437\":\"140\",\"\\u043a\\u0430\\u043a\":\"141\",\"\\u043a\\u0438 \":\"142\",\"\\u043d\\u043e\\u0441\":\"143\",\"\\u043e \\u043d\":\"144\",\"\\u043e\\u043f\\u0430\":\"145\",\"\\u043f\\u0440\\u0438\":\"146\",\"\\u0440\\u0440\\u043e\":\"147\",\"\\u0441\\u043a\\u0438\":\"148\",\"\\u0442\\u0438 \":\"149\",\"\\u0442\\u043e\\u0432\":\"150\",\"\\u044b\\u0435 \":\"151\",\" \\u0432\\u044b\":\"152\",\" \\u0434\\u043e\":\"153\",\" \\u043c\\u0435\":\"154\",\" \\u043d\\u0438\":\"155\",\" \\u043e\\u0434\":\"156\",\" \\u0440\\u043e\":\"157\",\" \\u0441\\u0432\":\"158\",\" \\u0447\\u0438\":\"159\",\"\\u0430 \\u043d\":\"160\",\"\\u0430\\u0435\\u0442\":\"161\",\"\\u0430\\u0437\\u0430\":\"162\",\"\\u0430\\u0442\\u0435\":\"163\",\"\\u0431\\u0435\\u0441\":\"164\",\"\\u0432 \\u043f\":\"165\",\"\\u0432\\u0430 \":\"166\",\"\\u0435 \\u0432\":\"167\",\"\\u0435 \\u043c\":\"168\",\"\\u0435 \\u0441\":\"169\",\"\\u0435\\u0437 \":\"170\",\"\\u0435\\u043d\\u0438\":\"171\",\"\\u0437\\u0430 \":\"172\",\"\\u0437\\u043d\\u0430\":\"173\",\"\\u0438\\u043d\\u0438\":\"174\",\"\\u043a\\u0430\\u043c\":\"175\",\"\\u043a\\u0430\\u0445\":\"176\",\"\\u043a\\u0442\\u043e\":\"177\",\"\\u043b\\u043e\\u0432\":\"178\",\"\\u043c\\u0435\\u0440\":\"179\",\"\\u043c\\u043e\\u0436\":\"180\",\"\\u043d\\u0430\\u043b\":\"181\",\"\\u043d\\u0438\\u0446\":\"182\",\"\\u043d\\u044b \":\"183\",\"\\u043d\\u044b\\u043c\":\"184\",\"\\u043e\\u0440\\u0430\":\"185\",\"\\u043e\\u0440\\u043e\":\"186\",\"\\u043e\\u0442 \":\"187\",\"\\u043f\\u043e\\u0440\":\"188\",\"\\u0440\\u0430\\u0432\":\"189\",\"\\u0440\\u0435\\u0441\":\"190\",\"\\u0440\\u0438\\u0441\":\"191\",\"\\u0440\\u043e\\u0441\":\"192\",\"\\u0441\\u043a\\u0430\":\"193\",\"\\u0442 \\u043d\":\"194\",\"\\u0442\\u043e\\u043c\":\"195\",\"\\u0447\\u0438\\u0442\":\"196\",\"\\u0448\\u043a\\u043e\":\"197\",\" \\u0431\\u044b\":\"198\",\" \\u043e \":\"199\",\" \\u0442\\u0440\":\"200\",\" \\u0443\\u0436\":\"201\",\" \\u0447\\u0443\":\"202\",\" \\u0448\\u043a\":\"203\",\"\\u0430 \\u0431\":\"204\",\"\\u0430 \\u0432\":\"205\",\"\\u0430 \\u0440\":\"206\",\"\\u0430\\u0431\\u0438\":\"207\",\"\\u0430\\u043b\\u0430\":\"208\",\"\\u0430\\u043b\\u043e\":\"209\",\"\\u0430\\u043b\\u044c\":\"210\",\"\\u0430\\u043d\\u043d\":\"211\",\"\\u0430\\u0442\\u0438\":\"212\",\"\\u0431\\u0438\\u043d\":\"213\",\"\\u0432\\u0435\\u0441\":\"214\",\"\\u0432\\u043d\\u043e\":\"215\",\"\\u0432\\u043e \":\"216\",\"\\u0432\\u0448\\u0438\":\"217\",\"\\u0434\\u0430\\u043b\":\"218\",\"\\u0434\\u0430\\u0442\":\"219\",\"\\u0434\\u043d\\u043e\":\"220\",\"\\u0435 \\u0437\":\"221\",\"\\u0435\\u0433\\u043e\":\"222\",\"\\u0435\\u043b\\u0435\":\"223\",\"\\u0435\\u043d\\u043d\":\"224\",\"\\u0435\\u043d\\u0442\":\"225\",\"\\u0435\\u0442\\u0435\":\"226\",\"\\u0438 \\u043e\":\"227\",\"\\u0438\\u043b\\u0438\":\"228\",\"\\u0438\\u0441\\u044c\":\"229\",\"\\u0438\\u0442 \":\"230\",\"\\u0438\\u0446\\u0438\":\"231\",\"\\u043a\\u043e\\u0432\":\"232\",\"\\u043b\\u0435\\u043d\":\"233\",\"\\u043b\\u044c\\u043a\":\"234\",\"\\u043c\\u0435\\u043d\":\"235\",\"\\u043c\\u044b \":\"236\",\"\\u043d\\u0435\\u0442\":\"237\",\"\\u043d\\u0438 \":\"238\",\"\\u043d\\u043d\\u044b\":\"239\",\"\\u043d\\u043e\\u0433\":\"240\",\"\\u043d\\u043e\\u0439\":\"241\",\"\\u043d\\u043e\\u043c\":\"242\",\"\\u043e \\u043f\":\"243\",\"\\u043e\\u0431\\u043d\":\"244\",\"\\u043e\\u0432\\u0435\":\"245\",\"\\u043e\\u0432\\u043d\":\"246\",\"\\u043e\\u0440\\u044b\":\"247\",\"\\u043f\\u0435\\u0440\":\"248\",\"\\u043f\\u043e \":\"249\",\"\\u043f\\u0440\\u0430\":\"250\",\"\\u043f\\u0440\\u0435\":\"251\",\"\\u0440\\u0430\\u0437\":\"252\",\"\\u0440\\u043e\\u043f\":\"253\",\"\\u0440\\u044b \":\"254\",\"\\u0441\\u0435 \":\"255\",\"\\u0441\\u043b\\u0438\":\"256\",\"\\u0441\\u043e\\u0432\":\"257\",\"\\u0442\\u0440\\u0435\":\"258\",\"\\u0442\\u0441\\u044f\":\"259\",\"\\u0443\\u0440\\u043e\":\"260\",\"\\u0446\\u0435\\u043b\":\"261\",\"\\u0447\\u043d\\u043e\":\"262\",\"\\u044c \\u0432\":\"263\",\"\\u044c\\u043a\\u043e\":\"264\",\"\\u044c\\u043d\\u043e\":\"265\",\"\\u044d\\u0442\\u043e\":\"266\",\"\\u044e\\u0442 \":\"267\",\"\\u044f \\u043d\":\"268\",\" \\u0430\\u043d\":\"269\",\" \\u0435\\u0441\":\"270\",\" \\u0436\\u0435\":\"271\",\" \\u0438\\u0437\":\"272\",\" \\u043a\\u0442\":\"273\",\" \\u043c\\u0438\":\"274\",\" \\u043c\\u044b\":\"275\",\" \\u043f\\u0435\":\"276\",\" \\u0441\\u0435\":\"277\",\" \\u0446\\u0435\":\"278\",\"\\u0430 \\u043c\":\"279\",\"\\u0430 \\u043f\":\"280\",\"\\u0430 \\u0442\":\"281\",\"\\u0430\\u0432\\u0448\":\"282\",\"\\u0430\\u0436\\u0435\":\"283\",\"\\u0430\\u043a \":\"284\",\"\\u0430\\u043b \":\"285\",\"\\u0430\\u043b\\u0435\":\"286\",\"\\u0430\\u043d\\u0435\":\"287\",\"\\u0430\\u0447\\u0438\":\"288\",\"\\u0430\\u044e\\u0442\":\"289\",\"\\u0431\\u043d\\u0430\":\"290\",\"\\u0431\\u043e\\u043b\":\"291\",\"\\u0431\\u044b \":\"292\",\"\\u0432 \\u0438\":\"293\",\"\\u0432 \\u0441\":\"294\",\"\\u0432\\u0430\\u043d\":\"295\",\"\\u0433\\u0440\\u0430\":\"296\",\"\\u0434\\u0430\\u0436\":\"297\",\"\\u0434\\u0435\\u043d\":\"298\",\"\\u0435 \\u043a\":\"299\"},\"serbian\":{\" \\u043d\\u0430\":\"0\",\" \\u0458\\u0435\":\"1\",\" \\u043f\\u043e\":\"2\",\"\\u0458\\u0435 \":\"3\",\" \\u0438 \":\"4\",\" \\u043d\\u0435\":\"5\",\" \\u043f\\u0440\":\"6\",\"\\u0433\\u0430 \":\"7\",\" \\u0441\\u0432\":\"8\",\"\\u043e\\u0433 \":\"9\",\"\\u0430 \\u0441\":\"10\",\"\\u0438\\u0445 \":\"11\",\"\\u043d\\u0430 \":\"12\",\"\\u043a\\u043e\\u0458\":\"13\",\"\\u043e\\u0433\\u0430\":\"14\",\" \\u0443 \":\"15\",\"\\u0430 \\u043f\":\"16\",\"\\u043d\\u0435 \":\"17\",\"\\u043d\\u0438 \":\"18\",\"\\u0442\\u0438 \":\"19\",\" \\u0434\\u0430\":\"20\",\"\\u043e\\u043c \":\"21\",\" \\u0432\\u0435\":\"22\",\" \\u0441\\u0440\":\"23\",\"\\u0438 \\u0441\":\"24\",\"\\u0441\\u043a\\u043e\":\"25\",\" \\u043e\\u0431\":\"26\",\"\\u0430 \\u043d\":\"27\",\"\\u0434\\u0430 \":\"28\",\"\\u0435 \\u043d\":\"29\",\"\\u043d\\u043e \":\"30\",\"\\u043d\\u043e\\u0433\":\"31\",\"\\u043e \\u0458\":\"32\",\"\\u043e\\u0458 \":\"33\",\" \\u0437\\u0430\":\"34\",\"\\u0432\\u0430 \":\"35\",\"\\u0435 \\u0441\":\"36\",\"\\u0438 \\u043f\":\"37\",\"\\u043c\\u0430 \":\"38\",\"\\u043d\\u0438\\u043a\":\"39\",\"\\u043e\\u0431\\u0440\":\"40\",\"\\u043e\\u0432\\u0430\":\"41\",\" \\u043a\\u043e\":\"42\",\"\\u0430 \\u0438\":\"43\",\"\\u0434\\u0438\\u0458\":\"44\",\"\\u0435 \\u043f\":\"45\",\"\\u043a\\u0430 \":\"46\",\"\\u043a\\u043e \":\"47\",\"\\u043a\\u043e\\u0433\":\"48\",\"\\u043e\\u0441\\u0442\":\"49\",\"\\u0441\\u0432\\u0435\":\"50\",\"\\u0441\\u0442\\u0432\":\"51\",\"\\u0441\\u0442\\u0438\":\"52\",\"\\u0442\\u0440\\u0430\":\"53\",\"\\u0435\\u0434\\u0438\":\"54\",\"\\u0438\\u043c\\u0430\":\"55\",\"\\u043f\\u043e\\u043a\":\"56\",\"\\u043f\\u0440\\u0430\":\"57\",\"\\u0440\\u0430\\u0437\":\"58\",\"\\u0442\\u0435 \":\"59\",\" \\u0431\\u043e\":\"60\",\" \\u0432\\u0438\":\"61\",\" \\u0441\\u0430\":\"62\",\"\\u0430\\u0432\\u043e\":\"63\",\"\\u0431\\u0440\\u0430\":\"64\",\"\\u0433\\u043e\\u0441\":\"65\",\"\\u0435 \\u0438\":\"66\",\"\\u0435\\u043b\\u0438\":\"67\",\"\\u0435\\u043d\\u0438\":\"68\",\"\\u0437\\u0430 \":\"69\",\"\\u0438\\u043a\\u0438\":\"70\",\"\\u0438\\u043e \":\"71\",\"\\u043f\\u0440\\u0435\":\"72\",\"\\u0440\\u0430\\u0432\":\"73\",\"\\u0440\\u0430\\u0434\":\"74\",\"\\u0443 \\u0441\":\"75\",\"\\u0458\\u0443 \":\"76\",\"\\u045a\\u0430 \":\"77\",\" \\u0431\\u0438\":\"78\",\" \\u0434\\u043e\":\"79\",\" \\u0441\\u0442\":\"80\",\"\\u0430\\u0441\\u0442\":\"81\",\"\\u0431\\u043e\\u0458\":\"82\",\"\\u0435\\u0431\\u043e\":\"83\",\"\\u0438 \\u043d\":\"84\",\"\\u0438\\u043c \":\"85\",\"\\u043a\\u0443 \":\"86\",\"\\u043b\\u0430\\u043d\":\"87\",\"\\u043d\\u0435\\u0431\":\"88\",\"\\u043e\\u0432\\u043e\":\"89\",\"\\u043e\\u0433\\u043e\":\"90\",\"\\u043e\\u0441\\u043b\":\"91\",\"\\u043e\\u0458\\u0448\":\"92\",\"\\u043f\\u0435\\u0434\":\"93\",\"\\u0441\\u0442\\u0440\":\"94\",\"\\u0447\\u0430\\u0441\":\"95\",\" \\u0433\\u043e\":\"96\",\" \\u043a\\u0440\":\"97\",\" \\u043c\\u043e\":\"98\",\" \\u0447\\u043b\":\"99\",\"\\u0430 \\u043c\":\"100\",\"\\u0430 \\u043e\":\"101\",\"\\u0430\\u043a\\u043e\":\"102\",\"\\u0430\\u0447\\u0430\":\"103\",\"\\u0432\\u0435\\u043b\":\"104\",\"\\u0432\\u0435\\u0442\":\"105\",\"\\u0432\\u043e\\u0433\":\"106\",\"\\u0435\\u0434\\u0430\":\"107\",\"\\u0438\\u0441\\u0442\":\"108\",\"\\u0438\\u0442\\u0438\":\"109\",\"\\u0438\\u0458\\u0435\":\"110\",\"\\u043e\\u043a\\u043e\":\"111\",\"\\u0441\\u043b\\u043e\":\"112\",\"\\u0441\\u0440\\u0431\":\"113\",\"\\u0447\\u043b\\u0430\":\"114\",\" \\u0431\\u0435\":\"115\",\" \\u043e\\u0441\":\"116\",\" \\u043e\\u0442\":\"117\",\" \\u0440\\u0435\":\"118\",\" \\u0441\\u0435\":\"119\",\"\\u0430 \\u0432\":\"120\",\"\\u0430\\u043d \":\"121\",\"\\u0431\\u043e\\u0433\":\"122\",\"\\u0431\\u0440\\u043e\":\"123\",\"\\u0432\\u0435\\u043d\":\"124\",\"\\u0433\\u0440\\u0430\":\"125\",\"\\u0435 \\u043e\":\"126\",\"\\u0438\\u043a\\u0430\":\"127\",\"\\u0438\\u0458\\u0430\":\"128\",\"\\u043a\\u0438\\u0445\":\"129\",\"\\u043a\\u043e\\u043c\":\"130\",\"\\u043b\\u0438 \":\"131\",\"\\u043d\\u0443 \":\"132\",\"\\u043e\\u0442\\u0430\":\"133\",\"\\u043e\\u0458\\u043d\":\"134\",\"\\u043f\\u043e\\u0434\":\"135\",\"\\u0440\\u0431\\u0441\":\"136\",\"\\u0440\\u0435\\u0434\":\"137\",\"\\u0440\\u043e\\u0458\":\"138\",\"\\u0441\\u0430 \":\"139\",\"\\u0441\\u043d\\u0438\":\"140\",\"\\u0442\\u0430\\u0447\":\"141\",\"\\u0442\\u0432\\u0430\":\"142\",\"\\u0458\\u0430 \":\"143\",\"\\u0458\\u0438 \":\"144\",\" \\u043a\\u0430\":\"145\",\" \\u043e\\u0432\":\"146\",\" \\u0442\\u0440\":\"147\",\"\\u0430 \\u0458\":\"148\",\"\\u0430\\u0432\\u0438\":\"149\",\"\\u0430\\u0437 \":\"150\",\"\\u0430\\u043d\\u043e\":\"151\",\"\\u0431\\u0438\\u043e\":\"152\",\"\\u0432\\u0438\\u043a\":\"153\",\"\\u0432\\u043e \":\"154\",\"\\u0433\\u043e\\u0432\":\"155\",\"\\u0434\\u043d\\u0438\":\"156\",\"\\u0435 \\u0447\":\"157\",\"\\u0435\\u0433\\u043e\":\"158\",\"\\u0438 \\u043e\":\"159\",\"\\u0438\\u0432\\u0430\":\"160\",\"\\u0438\\u0432\\u043e\":\"161\",\"\\u0438\\u043a \":\"162\",\"\\u0438\\u043d\\u0435\":\"163\",\"\\u0438\\u043d\\u0438\":\"164\",\"\\u0438\\u043f\\u0435\":\"165\",\"\\u043a\\u0438\\u043f\":\"166\",\"\\u043b\\u0438\\u043a\":\"167\",\"\\u043b\\u043e \":\"168\",\"\\u043d\\u0430\\u0448\":\"169\",\"\\u043d\\u043e\\u0441\":\"170\",\"\\u043e \\u0442\":\"171\",\"\\u043e\\u0434 \":\"172\",\"\\u043e\\u0434\\u0438\":\"173\",\"\\u043e\\u043d\\u0430\":\"174\",\"\\u043e\\u0458\\u0438\":\"175\",\"\\u043f\\u043e\\u0447\":\"176\",\"\\u043f\\u0440\\u043e\":\"177\",\"\\u0440\\u0430 \":\"178\",\"\\u0440\\u0438\\u0441\":\"179\",\"\\u0440\\u043e\\u0434\":\"180\",\"\\u0440\\u0441\\u0442\":\"181\",\"\\u0441\\u0435 \":\"182\",\"\\u0441\\u043f\\u043e\":\"183\",\"\\u0441\\u0442\\u0430\":\"184\",\"\\u0442\\u0438\\u045b\":\"185\",\"\\u0443 \\u0434\":\"186\",\"\\u0443 \\u043d\":\"187\",\"\\u0443 \\u043e\":\"188\",\"\\u0447\\u0438\\u043d\":\"189\",\"\\u0448\\u0430 \":\"190\",\"\\u0458\\u0435\\u0434\":\"191\",\"\\u0458\\u043d\\u0438\":\"192\",\"\\u045b\\u0435 \":\"193\",\" \\u043c \":\"194\",\" \\u043c\\u0435\":\"195\",\" \\u043d\\u0438\":\"196\",\" \\u043e\\u043d\":\"197\",\" \\u043f\\u0430\":\"198\",\" \\u0441\\u043b\":\"199\",\" \\u0442\\u0435\":\"200\",\"\\u0430 \\u0443\":\"201\",\"\\u0430\\u0432\\u0430\":\"202\",\"\\u0430\\u0432\\u0435\":\"203\",\"\\u0430\\u0432\\u043d\":\"204\",\"\\u0430\\u043d\\u0430\":\"205\",\"\\u0430\\u043e \":\"206\",\"\\u0430\\u0442\\u0438\":\"207\",\"\\u0430\\u0446\\u0438\":\"208\",\"\\u0430\\u0458\\u0443\":\"209\",\"\\u0430\\u045a\\u0430\":\"210\",\"\\u0431\\u0441\\u043a\":\"211\",\"\\u0432\\u043e\\u0440\":\"212\",\"\\u0432\\u043e\\u0441\":\"213\",\"\\u0432\\u0441\\u043a\":\"214\",\"\\u0434\\u0438\\u043d\":\"215\",\"\\u0435 \\u0443\":\"216\",\"\\u0435\\u0434\\u043d\":\"217\",\"\\u0435\\u0437\\u0438\":\"218\",\"\\u0435\\u043a\\u0430\":\"219\",\"\\u0435\\u043d\\u043e\":\"220\",\"\\u0435\\u0442\\u043e\":\"221\",\"\\u0435\\u045a\\u0430\":\"222\",\"\\u0436\\u0438\\u0432\":\"223\",\"\\u0438 \\u0433\":\"224\",\"\\u0438 \\u0438\":\"225\",\"\\u0438 \\u043a\":\"226\",\"\\u0438 \\u0442\":\"227\",\"\\u0438\\u043a\\u0443\":\"228\",\"\\u0438\\u0447\\u043a\":\"229\",\"\\u043a\\u0438 \":\"230\",\"\\u043a\\u0440\\u0441\":\"231\",\"\\u043b\\u0430 \":\"232\",\"\\u043b\\u0430\\u0432\":\"233\",\"\\u043b\\u0438\\u0442\":\"234\",\"\\u043c\\u0435 \":\"235\",\"\\u043c\\u0435\\u043d\":\"236\",\"\\u043d\\u0430\\u0446\":\"237\",\"\\u043e \\u043d\":\"238\",\"\\u043e \\u043f\":\"239\",\"\\u043e \\u0443\":\"240\",\"\\u043e\\u0434\\u043d\":\"241\",\"\\u043e\\u043b\\u0438\":\"242\",\"\\u043e\\u0440\\u043d\":\"243\",\"\\u043e\\u0441\\u043d\":\"244\",\"\\u043e\\u0441\\u043f\":\"245\",\"\\u043e\\u0447\\u0435\":\"246\",\"\\u043f\\u0441\\u043a\":\"247\",\"\\u0440\\u0435\\u0447\":\"248\",\"\\u0440\\u043f\\u0441\":\"249\",\"\\u0441\\u0432\\u043e\":\"250\",\"\\u0441\\u043a\\u0438\":\"251\",\"\\u0441\\u043b\\u0430\":\"252\",\"\\u0441\\u0440\\u043f\":\"253\",\"\\u0441\\u0443 \":\"254\",\"\\u0442\\u0430 \":\"255\",\"\\u0442\\u0430\\u0432\":\"256\",\"\\u0442\\u0432\\u0435\":\"257\",\"\\u0443 \\u0431\":\"258\",\"\\u0458\\u0435\\u0437\":\"259\",\"\\u045b\\u0438 \":\"260\",\" \\u0435\\u043d\":\"261\",\" \\u0436\\u0438\":\"262\",\" \\u0438\\u043c\":\"263\",\" \\u043c\\u0443\":\"264\",\" \\u043e\\u0434\":\"265\",\" \\u0441\\u0443\":\"266\",\" \\u0442\\u0430\":\"267\",\" \\u0445\\u0440\":\"268\",\" \\u0447\\u0430\":\"269\",\" \\u0448\\u0442\":\"270\",\" \\u045a\\u0435\":\"271\",\"\\u0430 \\u0434\":\"272\",\"\\u0430 \\u0437\":\"273\",\"\\u0430 \\u043a\":\"274\",\"\\u0430 \\u0442\":\"275\",\"\\u0430\\u0434\\u0443\":\"276\",\"\\u0430\\u043b\\u043e\":\"277\",\"\\u0430\\u043d\\u0438\":\"278\",\"\\u0430\\u0441\\u043e\":\"279\",\"\\u0432\\u0430\\u043d\":\"280\",\"\\u0432\\u0430\\u0447\":\"281\",\"\\u0432\\u0430\\u045a\":\"282\",\"\\u0432\\u0435\\u0434\":\"283\",\"\\u0432\\u0438 \":\"284\",\"\\u0432\\u043d\\u043e\":\"285\",\"\\u0432\\u043e\\u0442\":\"286\",\"\\u0432\\u043e\\u0458\":\"287\",\"\\u0432\\u0443 \":\"288\",\"\\u0434\\u043e\\u0431\":\"289\",\"\\u0434\\u0440\\u0443\":\"290\",\"\\u0434\\u0441\\u0435\":\"291\",\"\\u0434\\u0443 \":\"292\",\"\\u0435 \\u0431\":\"293\",\"\\u0435 \\u0434\":\"294\",\"\\u0435 \\u043c\":\"295\",\"\\u0435\\u043c \":\"296\",\"\\u0435\\u043c\\u0430\":\"297\",\"\\u0435\\u043d\\u0442\":\"298\",\"\\u0435\\u043d\\u0446\":\"299\"},\"slovak\":{\" pr\":\"0\",\" po\":\"1\",\" ne\":\"2\",\" a \":\"3\",\"ch \":\"4\",\" na\":\"5\",\" je\":\"6\",\"n\\u00ed \":\"7\",\"je \":\"8\",\" do\":\"9\",\"na \":\"10\",\"ova\":\"11\",\" v \":\"12\",\"to \":\"13\",\"ho \":\"14\",\"ou \":\"15\",\" to\":\"16\",\"ick\":\"17\",\"ter\":\"18\",\"\\u017ee \":\"19\",\" st\":\"20\",\" za\":\"21\",\"ost\":\"22\",\"\\u00fdch\":\"23\",\" se\":\"24\",\"pro\":\"25\",\" te\":\"26\",\"e s\":\"27\",\" \\u017ee\":\"28\",\"a p\":\"29\",\" kt\":\"30\",\"pre\":\"31\",\" by\":\"32\",\" o \":\"33\",\"se \":\"34\",\"kon\":\"35\",\" p\\u0159\":\"36\",\"a s\":\"37\",\"n\\u00e9 \":\"38\",\"n\\u011b \":\"39\",\"sti\":\"40\",\"ako\":\"41\",\"ist\":\"42\",\"mu \":\"43\",\"ame\":\"44\",\"ent\":\"45\",\"ky \":\"46\",\"la \":\"47\",\"pod\":\"48\",\" ve\":\"49\",\" ob\":\"50\",\"om \":\"51\",\"vat\":\"52\",\" ko\":\"53\",\"sta\":\"54\",\"em \":\"55\",\"le \":\"56\",\"a v\":\"57\",\"by \":\"58\",\"e p\":\"59\",\"ko \":\"60\",\"eri\":\"61\",\"kte\":\"62\",\"sa \":\"63\",\"\\u00e9ho\":\"64\",\"e v\":\"65\",\"mer\":\"66\",\"tel\":\"67\",\" ak\":\"68\",\" sv\":\"69\",\" z\\u00e1\":\"70\",\"hla\":\"71\",\"las\":\"72\",\"lo \":\"73\",\" ta\":\"74\",\"a n\":\"75\",\"ej \":\"76\",\"li \":\"77\",\"ne \":\"78\",\" sa\":\"79\",\"ak \":\"80\",\"ani\":\"81\",\"ate\":\"82\",\"ia \":\"83\",\"sou\":\"84\",\" so\":\"85\",\"en\\u00ed\":\"86\",\"ie \":\"87\",\" re\":\"88\",\"ce \":\"89\",\"e n\":\"90\",\"ori\":\"91\",\"tic\":\"92\",\" vy\":\"93\",\"a t\":\"94\",\"k\\u00e9 \":\"95\",\"nos\":\"96\",\"o s\":\"97\",\"str\":\"98\",\"ti \":\"99\",\"uje\":\"100\",\" sp\":\"101\",\"lov\":\"102\",\"o p\":\"103\",\"oli\":\"104\",\"ov\\u00e1\":\"105\",\" n\\u00e1\":\"106\",\"ale\":\"107\",\"den\":\"108\",\"e o\":\"109\",\"ku \":\"110\",\"val\":\"111\",\" am\":\"112\",\" ro\":\"113\",\" si\":\"114\",\"nie\":\"115\",\"pol\":\"116\",\"tra\":\"117\",\" al\":\"118\",\"ali\":\"119\",\"o v\":\"120\",\"tor\":\"121\",\" mo\":\"122\",\" ni\":\"123\",\"ci \":\"124\",\"o n\":\"125\",\"\\u00edm \":\"126\",\" le\":\"127\",\" pa\":\"128\",\" s \":\"129\",\"al \":\"130\",\"ati\":\"131\",\"ero\":\"132\",\"ove\":\"133\",\"rov\":\"134\",\"v\\u00e1n\":\"135\",\"\\u00edch\":\"136\",\" ja\":\"137\",\" z \":\"138\",\"ck\\u00e9\":\"139\",\"e z\":\"140\",\" od\":\"141\",\"byl\":\"142\",\"de \":\"143\",\"dob\":\"144\",\"nep\":\"145\",\"pra\":\"146\",\"ric\":\"147\",\"spo\":\"148\",\"tak\":\"149\",\" v\\u0161\":\"150\",\"a a\":\"151\",\"e t\":\"152\",\"lit\":\"153\",\"me \":\"154\",\"nej\":\"155\",\"no \":\"156\",\"n\\u00fdc\":\"157\",\"o t\":\"158\",\"a j\":\"159\",\"e a\":\"160\",\"en \":\"161\",\"est\":\"162\",\"j\\u00ed \":\"163\",\"mi \":\"164\",\"slo\":\"165\",\"st\\u00e1\":\"166\",\"u v\":\"167\",\"for\":\"168\",\"nou\":\"169\",\"pos\":\"170\",\"p\\u0159e\":\"171\",\"si \":\"172\",\"tom\":\"173\",\" vl\":\"174\",\"a z\":\"175\",\"ly \":\"176\",\"orm\":\"177\",\"ris\":\"178\",\"za \":\"179\",\"z\\u00e1k\":\"180\",\" k \":\"181\",\"at \":\"182\",\"ck\\u00fd\":\"183\",\"dno\":\"184\",\"dos\":\"185\",\"dy \":\"186\",\"jak\":\"187\",\"kov\":\"188\",\"ny \":\"189\",\"res\":\"190\",\"ror\":\"191\",\"sto\":\"192\",\"van\":\"193\",\" op\":\"194\",\"da \":\"195\",\"do \":\"196\",\"e j\":\"197\",\"hod\":\"198\",\"len\":\"199\",\"n\\u00fd \":\"200\",\"o z\":\"201\",\"poz\":\"202\",\"pri\":\"203\",\"ran\":\"204\",\"u s\":\"205\",\" ab\":\"206\",\"aj \":\"207\",\"ast\":\"208\",\"it \":\"209\",\"kto\":\"210\",\"o o\":\"211\",\"oby\":\"212\",\"odo\":\"213\",\"u p\":\"214\",\"va \":\"215\",\"\\u00e1n\\u00ed\":\"216\",\"\\u00ed p\":\"217\",\"\\u00fdm \":\"218\",\" in\":\"219\",\" mi\":\"220\",\"a\\u0165 \":\"221\",\"dov\":\"222\",\"ka \":\"223\",\"nsk\":\"224\",\"\\u00e1ln\":\"225\",\" an\":\"226\",\" bu\":\"227\",\" sl\":\"228\",\" tr\":\"229\",\"e m\":\"230\",\"ech\":\"231\",\"edn\":\"232\",\"i n\":\"233\",\"k\\u00fdc\":\"234\",\"n\\u00edc\":\"235\",\"ov \":\"236\",\"p\\u0159\\u00ed\":\"237\",\"\\u00ed a\":\"238\",\" aj\":\"239\",\" bo\":\"240\",\"a d\":\"241\",\"ide\":\"242\",\"o a\":\"243\",\"o d\":\"244\",\"och\":\"245\",\"pov\":\"246\",\"svo\":\"247\",\"\\u00e9 s\":\"248\",\" kd\":\"249\",\" vo\":\"250\",\" v\\u00fd\":\"251\",\"bud\":\"252\",\"ich\":\"253\",\"il \":\"254\",\"ili\":\"255\",\"ni \":\"256\",\"n\\u00edm\":\"257\",\"od \":\"258\",\"osl\":\"259\",\"ouh\":\"260\",\"rav\":\"261\",\"roz\":\"262\",\"st \":\"263\",\"stv\":\"264\",\"tu \":\"265\",\"u a\":\"266\",\"v\\u00e1l\":\"267\",\"y s\":\"268\",\"\\u00ed s\":\"269\",\"\\u00ed v\":\"270\",\" hl\":\"271\",\" li\":\"272\",\" me\":\"273\",\"a m\":\"274\",\"e b\":\"275\",\"h s\":\"276\",\"i p\":\"277\",\"i s\":\"278\",\"iti\":\"279\",\"l\\u00e1d\":\"280\",\"nem\":\"281\",\"nov\":\"282\",\"opo\":\"283\",\"uhl\":\"284\",\"eno\":\"285\",\"ens\":\"286\",\"men\":\"287\",\"nes\":\"288\",\"obo\":\"289\",\"te \":\"290\",\"ved\":\"291\",\"vl\\u00e1\":\"292\",\"y n\":\"293\",\" ma\":\"294\",\" mu\":\"295\",\" v\\u00e1\":\"296\",\"bez\":\"297\",\"byv\":\"298\",\"cho\":\"299\"},\"slovene\":{\"je \":\"0\",\" pr\":\"1\",\" po\":\"2\",\" je\":\"3\",\" v \":\"4\",\" za\":\"5\",\" na\":\"6\",\"pre\":\"7\",\"da \":\"8\",\" da\":\"9\",\"ki \":\"10\",\"ti \":\"11\",\"ja \":\"12\",\"ne \":\"13\",\" in\":\"14\",\"in \":\"15\",\"li \":\"16\",\"no \":\"17\",\"na \":\"18\",\"ni \":\"19\",\" bi\":\"20\",\"jo \":\"21\",\" ne\":\"22\",\"nje\":\"23\",\"e p\":\"24\",\"i p\":\"25\",\"pri\":\"26\",\"o p\":\"27\",\"red\":\"28\",\" do\":\"29\",\"anj\":\"30\",\"em \":\"31\",\"ih \":\"32\",\" bo\":\"33\",\" ki\":\"34\",\" iz\":\"35\",\" se\":\"36\",\" so\":\"37\",\"al \":\"38\",\" de\":\"39\",\"e v\":\"40\",\"i s\":\"41\",\"ko \":\"42\",\"bil\":\"43\",\"ira\":\"44\",\"ove\":\"45\",\" br\":\"46\",\" ob\":\"47\",\"e b\":\"48\",\"i n\":\"49\",\"ova\":\"50\",\"se \":\"51\",\"za \":\"52\",\"la \":\"53\",\" ja\":\"54\",\"ati\":\"55\",\"so \":\"56\",\"ter\":\"57\",\" ta\":\"58\",\"a s\":\"59\",\"del\":\"60\",\"e d\":\"61\",\" dr\":\"62\",\" od\":\"63\",\"a n\":\"64\",\"ar \":\"65\",\"jal\":\"66\",\"ji \":\"67\",\"rit\":\"68\",\" ka\":\"69\",\" ko\":\"70\",\" pa\":\"71\",\"a b\":\"72\",\"ani\":\"73\",\"e s\":\"74\",\"er \":\"75\",\"ili\":\"76\",\"lov\":\"77\",\"o v\":\"78\",\"tov\":\"79\",\" ir\":\"80\",\" ni\":\"81\",\" vo\":\"82\",\"a j\":\"83\",\"bi \":\"84\",\"bri\":\"85\",\"iti\":\"86\",\"let\":\"87\",\"o n\":\"88\",\"tan\":\"89\",\"\\u0161e \":\"90\",\" le\":\"91\",\" te\":\"92\",\"eni\":\"93\",\"eri\":\"94\",\"ita\":\"95\",\"kat\":\"96\",\"por\":\"97\",\"pro\":\"98\",\"ali\":\"99\",\"ke \":\"100\",\"oli\":\"101\",\"ov \":\"102\",\"pra\":\"103\",\"ri \":\"104\",\"uar\":\"105\",\"ve \":\"106\",\" to\":\"107\",\"a i\":\"108\",\"a v\":\"109\",\"ako\":\"110\",\"arj\":\"111\",\"ate\":\"112\",\"di \":\"113\",\"do \":\"114\",\"ga \":\"115\",\"le \":\"116\",\"lo \":\"117\",\"mer\":\"118\",\"o s\":\"119\",\"oda\":\"120\",\"oro\":\"121\",\"pod\":\"122\",\" ma\":\"123\",\" mo\":\"124\",\" si\":\"125\",\"a p\":\"126\",\"bod\":\"127\",\"e n\":\"128\",\"ega\":\"129\",\"ju \":\"130\",\"ka \":\"131\",\"lje\":\"132\",\"rav\":\"133\",\"ta \":\"134\",\"a o\":\"135\",\"e t\":\"136\",\"e z\":\"137\",\"i d\":\"138\",\"i v\":\"139\",\"ila\":\"140\",\"lit\":\"141\",\"nih\":\"142\",\"odo\":\"143\",\"sti\":\"144\",\"to \":\"145\",\"var\":\"146\",\"ved\":\"147\",\"vol\":\"148\",\" la\":\"149\",\" no\":\"150\",\" vs\":\"151\",\"a d\":\"152\",\"agu\":\"153\",\"aja\":\"154\",\"dej\":\"155\",\"dnj\":\"156\",\"eda\":\"157\",\"gov\":\"158\",\"gua\":\"159\",\"jag\":\"160\",\"jem\":\"161\",\"kon\":\"162\",\"ku \":\"163\",\"nij\":\"164\",\"omo\":\"165\",\"o\\u010di\":\"166\",\"pov\":\"167\",\"rak\":\"168\",\"rja\":\"169\",\"sta\":\"170\",\"tev\":\"171\",\"a t\":\"172\",\"aj \":\"173\",\"ed \":\"174\",\"eja\":\"175\",\"ent\":\"176\",\"ev \":\"177\",\"i i\":\"178\",\"i o\":\"179\",\"ijo\":\"180\",\"ist\":\"181\",\"ost\":\"182\",\"ske\":\"183\",\"str\":\"184\",\" ra\":\"185\",\" s \":\"186\",\" tr\":\"187\",\" \\u0161e\":\"188\",\"arn\":\"189\",\"bo \":\"190\",\"dr\\u017e\":\"191\",\"i j\":\"192\",\"ilo\":\"193\",\"izv\":\"194\",\"jen\":\"195\",\"lja\":\"196\",\"nsk\":\"197\",\"o d\":\"198\",\"o i\":\"199\",\"om \":\"200\",\"ora\":\"201\",\"ovo\":\"202\",\"raz\":\"203\",\"r\\u017ea\":\"204\",\"tak\":\"205\",\"va \":\"206\",\"ven\":\"207\",\"\\u017eav\":\"208\",\" me\":\"209\",\" \\u010de\":\"210\",\"ame\":\"211\",\"avi\":\"212\",\"e i\":\"213\",\"e o\":\"214\",\"eka\":\"215\",\"gre\":\"216\",\"i t\":\"217\",\"ija\":\"218\",\"il \":\"219\",\"ite\":\"220\",\"kra\":\"221\",\"lju\":\"222\",\"mor\":\"223\",\"nik\":\"224\",\"o t\":\"225\",\"obi\":\"226\",\"odn\":\"227\",\"ran\":\"228\",\"re \":\"229\",\"sto\":\"230\",\"stv\":\"231\",\"udi\":\"232\",\"v i\":\"233\",\"van\":\"234\",\" am\":\"235\",\" sp\":\"236\",\" st\":\"237\",\" tu\":\"238\",\" ve\":\"239\",\" \\u017ee\":\"240\",\"ajo\":\"241\",\"ale\":\"242\",\"apo\":\"243\",\"dal\":\"244\",\"dru\":\"245\",\"e j\":\"246\",\"edn\":\"247\",\"ejo\":\"248\",\"elo\":\"249\",\"est\":\"250\",\"etj\":\"251\",\"eva\":\"252\",\"iji\":\"253\",\"ik \":\"254\",\"im \":\"255\",\"itv\":\"256\",\"mob\":\"257\",\"nap\":\"258\",\"nek\":\"259\",\"pol\":\"260\",\"pos\":\"261\",\"rat\":\"262\",\"ski\":\"263\",\"ti\\u010d\":\"264\",\"tom\":\"265\",\"ton\":\"266\",\"tra\":\"267\",\"tud\":\"268\",\"tve\":\"269\",\"v b\":\"270\",\"vil\":\"271\",\"vse\":\"272\",\"\\u010dit\":\"273\",\" av\":\"274\",\" gr\":\"275\",\"a z\":\"276\",\"ans\":\"277\",\"ast\":\"278\",\"avt\":\"279\",\"dan\":\"280\",\"e m\":\"281\",\"eds\":\"282\",\"for\":\"283\",\"i z\":\"284\",\"kot\":\"285\",\"mi \":\"286\",\"nim\":\"287\",\"o b\":\"288\",\"o o\":\"289\",\"od \":\"290\",\"odl\":\"291\",\"oiz\":\"292\",\"ot \":\"293\",\"par\":\"294\",\"pot\":\"295\",\"rje\":\"296\",\"roi\":\"297\",\"tem\":\"298\",\"val\":\"299\"},\"somali\":{\"ka \":\"0\",\"ay \":\"1\",\"da \":\"2\",\" ay\":\"3\",\"aal\":\"4\",\"oo \":\"5\",\"aan\":\"6\",\" ka\":\"7\",\"an \":\"8\",\"in \":\"9\",\" in\":\"10\",\"ada\":\"11\",\"maa\":\"12\",\"aba\":\"13\",\" so\":\"14\",\"ali\":\"15\",\"bad\":\"16\",\"add\":\"17\",\"soo\":\"18\",\" na\":\"19\",\"aha\":\"20\",\"ku \":\"21\",\"ta \":\"22\",\" wa\":\"23\",\"yo \":\"24\",\"a s\":\"25\",\"oma\":\"26\",\"yaa\":\"27\",\" ba\":\"28\",\" ku\":\"29\",\" la\":\"30\",\" oo\":\"31\",\"iya\":\"32\",\"sha\":\"33\",\"a a\":\"34\",\"dda\":\"35\",\"nab\":\"36\",\"nta\":\"37\",\" da\":\"38\",\" ma\":\"39\",\"nka\":\"40\",\"uu \":\"41\",\"y i\":\"42\",\"aya\":\"43\",\"ha \":\"44\",\"raa\":\"45\",\" dh\":\"46\",\" qa\":\"47\",\"a k\":\"48\",\"ala\":\"49\",\"baa\":\"50\",\"doo\":\"51\",\"had\":\"52\",\"liy\":\"53\",\"oom\":\"54\",\" ha\":\"55\",\" sh\":\"56\",\"a d\":\"57\",\"a i\":\"58\",\"a n\":\"59\",\"aar\":\"60\",\"ee \":\"61\",\"ey \":\"62\",\"y k\":\"63\",\"ya \":\"64\",\" ee\":\"65\",\" iy\":\"66\",\"aa \":\"67\",\"aaq\":\"68\",\"gaa\":\"69\",\"lam\":\"70\",\" bu\":\"71\",\"a b\":\"72\",\"a m\":\"73\",\"ad \":\"74\",\"aga\":\"75\",\"ama\":\"76\",\"iyo\":\"77\",\"la \":\"78\",\"a c\":\"79\",\"a l\":\"80\",\"een\":\"81\",\"int\":\"82\",\"she\":\"83\",\"wax\":\"84\",\"yee\":\"85\",\" si\":\"86\",\" uu\":\"87\",\"a h\":\"88\",\"aas\":\"89\",\"alk\":\"90\",\"dha\":\"91\",\"gu \":\"92\",\"hee\":\"93\",\"ii \":\"94\",\"ira\":\"95\",\"mad\":\"96\",\"o a\":\"97\",\"o k\":\"98\",\"qay\":\"99\",\" ah\":\"100\",\" ca\":\"101\",\" wu\":\"102\",\"ank\":\"103\",\"ash\":\"104\",\"axa\":\"105\",\"eed\":\"106\",\"en \":\"107\",\"ga \":\"108\",\"haa\":\"109\",\"n a\":\"110\",\"n s\":\"111\",\"naa\":\"112\",\"nay\":\"113\",\"o d\":\"114\",\"taa\":\"115\",\"u b\":\"116\",\"uxu\":\"117\",\"wux\":\"118\",\"xuu\":\"119\",\" ci\":\"120\",\" do\":\"121\",\" ho\":\"122\",\" ta\":\"123\",\"a g\":\"124\",\"a u\":\"125\",\"ana\":\"126\",\"ayo\":\"127\",\"dhi\":\"128\",\"iin\":\"129\",\"lag\":\"130\",\"lin\":\"131\",\"lka\":\"132\",\"o i\":\"133\",\"san\":\"134\",\"u s\":\"135\",\"una\":\"136\",\"uun\":\"137\",\" ga\":\"138\",\" xa\":\"139\",\" xu\":\"140\",\"aab\":\"141\",\"abt\":\"142\",\"aq \":\"143\",\"aqa\":\"144\",\"ara\":\"145\",\"arl\":\"146\",\"caa\":\"147\",\"cir\":\"148\",\"eeg\":\"149\",\"eel\":\"150\",\"isa\":\"151\",\"kal\":\"152\",\"lah\":\"153\",\"ney\":\"154\",\"qaa\":\"155\",\"rla\":\"156\",\"sad\":\"157\",\"sii\":\"158\",\"u d\":\"159\",\"wad\":\"160\",\" ad\":\"161\",\" ar\":\"162\",\" di\":\"163\",\" jo\":\"164\",\" ra\":\"165\",\" sa\":\"166\",\" u \":\"167\",\" yi\":\"168\",\"a j\":\"169\",\"a q\":\"170\",\"aad\":\"171\",\"aat\":\"172\",\"aay\":\"173\",\"ah \":\"174\",\"ale\":\"175\",\"amk\":\"176\",\"ari\":\"177\",\"as \":\"178\",\"aye\":\"179\",\"bus\":\"180\",\"dal\":\"181\",\"ddu\":\"182\",\"dii\":\"183\",\"du \":\"184\",\"duu\":\"185\",\"ed \":\"186\",\"ege\":\"187\",\"gey\":\"188\",\"hay\":\"189\",\"hii\":\"190\",\"ida\":\"191\",\"ine\":\"192\",\"joo\":\"193\",\"laa\":\"194\",\"lay\":\"195\",\"mar\":\"196\",\"mee\":\"197\",\"n b\":\"198\",\"n d\":\"199\",\"n m\":\"200\",\"no \":\"201\",\"o b\":\"202\",\"o l\":\"203\",\"oog\":\"204\",\"oon\":\"205\",\"rga\":\"206\",\"sh \":\"207\",\"sid\":\"208\",\"u q\":\"209\",\"unk\":\"210\",\"ush\":\"211\",\"xa \":\"212\",\"y d\":\"213\",\" bi\":\"214\",\" gu\":\"215\",\" is\":\"216\",\" ke\":\"217\",\" lo\":\"218\",\" me\":\"219\",\" mu\":\"220\",\" qo\":\"221\",\" ug\":\"222\",\"a e\":\"223\",\"a o\":\"224\",\"a w\":\"225\",\"adi\":\"226\",\"ado\":\"227\",\"agu\":\"228\",\"al \":\"229\",\"ant\":\"230\",\"ark\":\"231\",\"asa\":\"232\",\"awi\":\"233\",\"bta\":\"234\",\"bul\":\"235\",\"d a\":\"236\",\"dag\":\"237\",\"dan\":\"238\",\"do \":\"239\",\"e s\":\"240\",\"gal\":\"241\",\"gay\":\"242\",\"guu\":\"243\",\"h e\":\"244\",\"hal\":\"245\",\"iga\":\"246\",\"ihi\":\"247\",\"iri\":\"248\",\"iye\":\"249\",\"ken\":\"250\",\"lad\":\"251\",\"lid\":\"252\",\"lsh\":\"253\",\"mag\":\"254\",\"mun\":\"255\",\"n h\":\"256\",\"n i\":\"257\",\"na \":\"258\",\"o n\":\"259\",\"o w\":\"260\",\"ood\":\"261\",\"oor\":\"262\",\"ora\":\"263\",\"qab\":\"264\",\"qor\":\"265\",\"rab\":\"266\",\"rit\":\"267\",\"rta\":\"268\",\"s o\":\"269\",\"sab\":\"270\",\"ska\":\"271\",\"to \":\"272\",\"u a\":\"273\",\"u h\":\"274\",\"u u\":\"275\",\"ud \":\"276\",\"ugu\":\"277\",\"uls\":\"278\",\"uud\":\"279\",\"waa\":\"280\",\"xus\":\"281\",\"y b\":\"282\",\"y q\":\"283\",\"y s\":\"284\",\"yad\":\"285\",\"yay\":\"286\",\"yih\":\"287\",\" aa\":\"288\",\" bo\":\"289\",\" br\":\"290\",\" go\":\"291\",\" ji\":\"292\",\" mi\":\"293\",\" of\":\"294\",\" ti\":\"295\",\" um\":\"296\",\" wi\":\"297\",\" xo\":\"298\",\"a x\":\"299\"},\"spanish\":{\" de\":\"0\",\"de \":\"1\",\" la\":\"2\",\"os \":\"3\",\"la \":\"4\",\"el \":\"5\",\"es \":\"6\",\" qu\":\"7\",\" co\":\"8\",\"e l\":\"9\",\"as \":\"10\",\"que\":\"11\",\" el\":\"12\",\"ue \":\"13\",\"en \":\"14\",\"ent\":\"15\",\" en\":\"16\",\" se\":\"17\",\"nte\":\"18\",\"res\":\"19\",\"con\":\"20\",\"est\":\"21\",\" es\":\"22\",\"s d\":\"23\",\" lo\":\"24\",\" pr\":\"25\",\"los\":\"26\",\" y \":\"27\",\"do \":\"28\",\"\\u00f3n \":\"29\",\"i\\u00f3n\":\"30\",\" un\":\"31\",\"ci\\u00f3\":\"32\",\"del\":\"33\",\"o d\":\"34\",\" po\":\"35\",\"a d\":\"36\",\"aci\":\"37\",\"sta\":\"38\",\"te \":\"39\",\"ado\":\"40\",\"pre\":\"41\",\"to \":\"42\",\"par\":\"43\",\"a e\":\"44\",\"a l\":\"45\",\"ra \":\"46\",\"al \":\"47\",\"e e\":\"48\",\"se \":\"49\",\"pro\":\"50\",\"ar \":\"51\",\"ia \":\"52\",\"o e\":\"53\",\" re\":\"54\",\"ida\":\"55\",\"dad\":\"56\",\"tra\":\"57\",\"por\":\"58\",\"s p\":\"59\",\" a \":\"60\",\"a p\":\"61\",\"ara\":\"62\",\"cia\":\"63\",\" pa\":\"64\",\"com\":\"65\",\"no \":\"66\",\" di\":\"67\",\" in\":\"68\",\"ien\":\"69\",\"n l\":\"70\",\"ad \":\"71\",\"ant\":\"72\",\"e s\":\"73\",\"men\":\"74\",\"a c\":\"75\",\"on \":\"76\",\"un \":\"77\",\"las\":\"78\",\"nci\":\"79\",\" tr\":\"80\",\"cio\":\"81\",\"ier\":\"82\",\"nto\":\"83\",\"tiv\":\"84\",\"n d\":\"85\",\"n e\":\"86\",\"or \":\"87\",\"s c\":\"88\",\"enc\":\"89\",\"ern\":\"90\",\"io \":\"91\",\"a s\":\"92\",\"ici\":\"93\",\"s e\":\"94\",\" ma\":\"95\",\"dos\":\"96\",\"e a\":\"97\",\"e c\":\"98\",\"emp\":\"99\",\"ica\":\"100\",\"ivo\":\"101\",\"l p\":\"102\",\"n c\":\"103\",\"r e\":\"104\",\"ta \":\"105\",\"ter\":\"106\",\"e d\":\"107\",\"esa\":\"108\",\"ez \":\"109\",\"mpr\":\"110\",\"o a\":\"111\",\"s a\":\"112\",\" ca\":\"113\",\" su\":\"114\",\"ion\":\"115\",\" cu\":\"116\",\" ju\":\"117\",\"an \":\"118\",\"da \":\"119\",\"ene\":\"120\",\"ero\":\"121\",\"na \":\"122\",\"rec\":\"123\",\"ro \":\"124\",\"tar\":\"125\",\" al\":\"126\",\" an\":\"127\",\"bie\":\"128\",\"e p\":\"129\",\"er \":\"130\",\"l c\":\"131\",\"n p\":\"132\",\"omp\":\"133\",\"ten\":\"134\",\" em\":\"135\",\"ist\":\"136\",\"nes\":\"137\",\"nta\":\"138\",\"o c\":\"139\",\"so \":\"140\",\"tes\":\"141\",\"era\":\"142\",\"l d\":\"143\",\"l m\":\"144\",\"les\":\"145\",\"ntr\":\"146\",\"o s\":\"147\",\"ore\":\"148\",\"r\\u00e1 \":\"149\",\"s q\":\"150\",\"s y\":\"151\",\"sto\":\"152\",\"a a\":\"153\",\"a r\":\"154\",\"ari\":\"155\",\"des\":\"156\",\"e q\":\"157\",\"ivi\":\"158\",\"lic\":\"159\",\"lo \":\"160\",\"n a\":\"161\",\"one\":\"162\",\"ora\":\"163\",\"per\":\"164\",\"pue\":\"165\",\"r l\":\"166\",\"re \":\"167\",\"ren\":\"168\",\"una\":\"169\",\"\\u00eda \":\"170\",\"ada\":\"171\",\"cas\":\"172\",\"ere\":\"173\",\"ide\":\"174\",\"min\":\"175\",\"n s\":\"176\",\"ndo\":\"177\",\"ran\":\"178\",\"rno\":\"179\",\" ac\":\"180\",\" ex\":\"181\",\" go\":\"182\",\" no\":\"183\",\"a t\":\"184\",\"aba\":\"185\",\"ble\":\"186\",\"ece\":\"187\",\"ect\":\"188\",\"l a\":\"189\",\"l g\":\"190\",\"lid\":\"191\",\"nsi\":\"192\",\"ons\":\"193\",\"rac\":\"194\",\"rio\":\"195\",\"str\":\"196\",\"uer\":\"197\",\"ust\":\"198\",\" ha\":\"199\",\" le\":\"200\",\" mi\":\"201\",\" mu\":\"202\",\" ob\":\"203\",\" pe\":\"204\",\" pu\":\"205\",\" so\":\"206\",\"a i\":\"207\",\"ale\":\"208\",\"ca \":\"209\",\"cto\":\"210\",\"e i\":\"211\",\"e u\":\"212\",\"eso\":\"213\",\"fer\":\"214\",\"fic\":\"215\",\"gob\":\"216\",\"jo \":\"217\",\"ma \":\"218\",\"mpl\":\"219\",\"o p\":\"220\",\"obi\":\"221\",\"s m\":\"222\",\"sa \":\"223\",\"sep\":\"224\",\"ste\":\"225\",\"sti\":\"226\",\"tad\":\"227\",\"tod\":\"228\",\"y s\":\"229\",\" ci\":\"230\",\"and\":\"231\",\"ces\":\"232\",\"c\\u00f3 \":\"233\",\"dor\":\"234\",\"e m\":\"235\",\"eci\":\"236\",\"eco\":\"237\",\"esi\":\"238\",\"int\":\"239\",\"iza\":\"240\",\"l e\":\"241\",\"lar\":\"242\",\"mie\":\"243\",\"ner\":\"244\",\"orc\":\"245\",\"rci\":\"246\",\"ria\":\"247\",\"tic\":\"248\",\"tor\":\"249\",\" as\":\"250\",\" si\":\"251\",\"ce \":\"252\",\"den\":\"253\",\"e r\":\"254\",\"e t\":\"255\",\"end\":\"256\",\"eri\":\"257\",\"esp\":\"258\",\"ial\":\"259\",\"ido\":\"260\",\"ina\":\"261\",\"inc\":\"262\",\"mit\":\"263\",\"o l\":\"264\",\"ome\":\"265\",\"pli\":\"266\",\"ras\":\"267\",\"s t\":\"268\",\"sid\":\"269\",\"sup\":\"270\",\"tab\":\"271\",\"uen\":\"272\",\"ues\":\"273\",\"ura\":\"274\",\"vo \":\"275\",\"vor\":\"276\",\" sa\":\"277\",\" ti\":\"278\",\"abl\":\"279\",\"ali\":\"280\",\"aso\":\"281\",\"ast\":\"282\",\"cor\":\"283\",\"cti\":\"284\",\"cue\":\"285\",\"div\":\"286\",\"duc\":\"287\",\"ens\":\"288\",\"eti\":\"289\",\"imi\":\"290\",\"ini\":\"291\",\"lec\":\"292\",\"o q\":\"293\",\"oce\":\"294\",\"ort\":\"295\",\"ral\":\"296\",\"rma\":\"297\",\"roc\":\"298\",\"rod\":\"299\"},\"swahili\":{\" wa\":\"0\",\"wa \":\"1\",\"a k\":\"2\",\"a m\":\"3\",\" ku\":\"4\",\" ya\":\"5\",\"a w\":\"6\",\"ya \":\"7\",\"ni \":\"8\",\" ma\":\"9\",\"ka \":\"10\",\"a u\":\"11\",\"na \":\"12\",\"za \":\"13\",\"ia \":\"14\",\" na\":\"15\",\"ika\":\"16\",\"ma \":\"17\",\"ali\":\"18\",\"a n\":\"19\",\" am\":\"20\",\"ili\":\"21\",\"kwa\":\"22\",\" kw\":\"23\",\"ini\":\"24\",\" ha\":\"25\",\"ame\":\"26\",\"ana\":\"27\",\"i n\":\"28\",\" za\":\"29\",\"a h\":\"30\",\"ema\":\"31\",\"i m\":\"32\",\"i y\":\"33\",\"kuw\":\"34\",\"la \":\"35\",\"o w\":\"36\",\"a y\":\"37\",\"ata\":\"38\",\"sem\":\"39\",\" la\":\"40\",\"ati\":\"41\",\"chi\":\"42\",\"i w\":\"43\",\"uwa\":\"44\",\"aki\":\"45\",\"li \":\"46\",\"eka\":\"47\",\"ira\":\"48\",\" nc\":\"49\",\"a s\":\"50\",\"iki\":\"51\",\"kat\":\"52\",\"nch\":\"53\",\" ka\":\"54\",\" ki\":\"55\",\"a b\":\"56\",\"aji\":\"57\",\"amb\":\"58\",\"ra \":\"59\",\"ri \":\"60\",\"rik\":\"61\",\"ada\":\"62\",\"mat\":\"63\",\"mba\":\"64\",\"mes\":\"65\",\"yo \":\"66\",\"zi \":\"67\",\"da \":\"68\",\"hi \":\"69\",\"i k\":\"70\",\"ja \":\"71\",\"kut\":\"72\",\"tek\":\"73\",\"wan\":\"74\",\" bi\":\"75\",\"a a\":\"76\",\"aka\":\"77\",\"ao \":\"78\",\"asi\":\"79\",\"cha\":\"80\",\"ese\":\"81\",\"eza\":\"82\",\"ke \":\"83\",\"moj\":\"84\",\"oja\":\"85\",\" hi\":\"86\",\"a z\":\"87\",\"end\":\"88\",\"ha \":\"89\",\"ji \":\"90\",\"mu \":\"91\",\"shi\":\"92\",\"wat\":\"93\",\" bw\":\"94\",\"ake\":\"95\",\"ara\":\"96\",\"bw \":\"97\",\"i h\":\"98\",\"imb\":\"99\",\"tik\":\"100\",\"wak\":\"101\",\"wal\":\"102\",\" hu\":\"103\",\" mi\":\"104\",\" mk\":\"105\",\" ni\":\"106\",\" ra\":\"107\",\" um\":\"108\",\"a l\":\"109\",\"ate\":\"110\",\"esh\":\"111\",\"ina\":\"112\",\"ish\":\"113\",\"kim\":\"114\",\"o k\":\"115\",\" ir\":\"116\",\"a i\":\"117\",\"ala\":\"118\",\"ani\":\"119\",\"aq \":\"120\",\"azi\":\"121\",\"hin\":\"122\",\"i a\":\"123\",\"idi\":\"124\",\"ima\":\"125\",\"ita\":\"126\",\"rai\":\"127\",\"raq\":\"128\",\"sha\":\"129\",\" ms\":\"130\",\" se\":\"131\",\"afr\":\"132\",\"ama\":\"133\",\"ano\":\"134\",\"ea \":\"135\",\"ele\":\"136\",\"fri\":\"137\",\"go \":\"138\",\"i i\":\"139\",\"ifa\":\"140\",\"iwa\":\"141\",\"iyo\":\"142\",\"kus\":\"143\",\"lia\":\"144\",\"lio\":\"145\",\"maj\":\"146\",\"mku\":\"147\",\"no \":\"148\",\"tan\":\"149\",\"uli\":\"150\",\"uta\":\"151\",\"wen\":\"152\",\" al\":\"153\",\"a j\":\"154\",\"aad\":\"155\",\"aid\":\"156\",\"ari\":\"157\",\"awa\":\"158\",\"ba \":\"159\",\"fa \":\"160\",\"nde\":\"161\",\"nge\":\"162\",\"nya\":\"163\",\"o y\":\"164\",\"u w\":\"165\",\"ua \":\"166\",\"umo\":\"167\",\"waz\":\"168\",\"ye \":\"169\",\" ut\":\"170\",\" vi\":\"171\",\"a d\":\"172\",\"a t\":\"173\",\"aif\":\"174\",\"di \":\"175\",\"ere\":\"176\",\"ing\":\"177\",\"kin\":\"178\",\"nda\":\"179\",\"o n\":\"180\",\"oa \":\"181\",\"tai\":\"182\",\"toa\":\"183\",\"usa\":\"184\",\"uto\":\"185\",\"was\":\"186\",\"yak\":\"187\",\"zo \":\"188\",\" ji\":\"189\",\" mw\":\"190\",\"a p\":\"191\",\"aia\":\"192\",\"amu\":\"193\",\"ang\":\"194\",\"bik\":\"195\",\"bo \":\"196\",\"del\":\"197\",\"e w\":\"198\",\"ene\":\"199\",\"eng\":\"200\",\"ich\":\"201\",\"iri\":\"202\",\"iti\":\"203\",\"ito\":\"204\",\"ki \":\"205\",\"kir\":\"206\",\"ko \":\"207\",\"kuu\":\"208\",\"mar\":\"209\",\"mbo\":\"210\",\"mil\":\"211\",\"ngi\":\"212\",\"ngo\":\"213\",\"o l\":\"214\",\"ong\":\"215\",\"si \":\"216\",\"ta \":\"217\",\"tak\":\"218\",\"u y\":\"219\",\"umu\":\"220\",\"usi\":\"221\",\"uu \":\"222\",\"wam\":\"223\",\" af\":\"224\",\" ba\":\"225\",\" li\":\"226\",\" si\":\"227\",\" zi\":\"228\",\"a v\":\"229\",\"ami\":\"230\",\"atu\":\"231\",\"awi\":\"232\",\"eri\":\"233\",\"fan\":\"234\",\"fur\":\"235\",\"ger\":\"236\",\"i z\":\"237\",\"isi\":\"238\",\"izo\":\"239\",\"lea\":\"240\",\"mbi\":\"241\",\"mwa\":\"242\",\"nye\":\"243\",\"o h\":\"244\",\"o m\":\"245\",\"oni\":\"246\",\"rez\":\"247\",\"saa\":\"248\",\"ser\":\"249\",\"sin\":\"250\",\"tat\":\"251\",\"tis\":\"252\",\"tu \":\"253\",\"uin\":\"254\",\"uki\":\"255\",\"ur \":\"256\",\"wi \":\"257\",\"yar\":\"258\",\" da\":\"259\",\" en\":\"260\",\" mp\":\"261\",\" ny\":\"262\",\" ta\":\"263\",\" ul\":\"264\",\" we\":\"265\",\"a c\":\"266\",\"a f\":\"267\",\"ais\":\"268\",\"apo\":\"269\",\"ayo\":\"270\",\"bar\":\"271\",\"dhi\":\"272\",\"e a\":\"273\",\"eke\":\"274\",\"eny\":\"275\",\"eon\":\"276\",\"hai\":\"277\",\"han\":\"278\",\"hiy\":\"279\",\"hur\":\"280\",\"i s\":\"281\",\"imw\":\"282\",\"kal\":\"283\",\"kwe\":\"284\",\"lak\":\"285\",\"lam\":\"286\",\"mak\":\"287\",\"msa\":\"288\",\"ne \":\"289\",\"ngu\":\"290\",\"ru \":\"291\",\"sal\":\"292\",\"swa\":\"293\",\"te \":\"294\",\"ti \":\"295\",\"uku\":\"296\",\"uma\":\"297\",\"una\":\"298\",\"uru\":\"299\"},\"swedish\":{\"en \":\"0\",\" de\":\"1\",\"et \":\"2\",\"er \":\"3\",\"tt \":\"4\",\"om \":\"5\",\"f\\u00f6r\":\"6\",\"ar \":\"7\",\"de \":\"8\",\"att\":\"9\",\" f\\u00f6\":\"10\",\"ing\":\"11\",\" in\":\"12\",\" at\":\"13\",\" i \":\"14\",\"det\":\"15\",\"ch \":\"16\",\"an \":\"17\",\"gen\":\"18\",\" an\":\"19\",\"t s\":\"20\",\"som\":\"21\",\"te \":\"22\",\" oc\":\"23\",\"ter\":\"24\",\" ha\":\"25\",\"lle\":\"26\",\"och\":\"27\",\" sk\":\"28\",\" so\":\"29\",\"ra \":\"30\",\"r a\":\"31\",\" me\":\"32\",\"var\":\"33\",\"nde\":\"34\",\"\\u00e4r \":\"35\",\" ko\":\"36\",\"on \":\"37\",\"ans\":\"38\",\"int\":\"39\",\"n s\":\"40\",\"na \":\"41\",\" en\":\"42\",\" fr\":\"43\",\" p\\u00e5\":\"44\",\" st\":\"45\",\" va\":\"46\",\"and\":\"47\",\"nte\":\"48\",\"p\\u00e5 \":\"49\",\"ska\":\"50\",\"ta \":\"51\",\" vi\":\"52\",\"der\":\"53\",\"\\u00e4ll\":\"54\",\"\\u00f6rs\":\"55\",\" om\":\"56\",\"da \":\"57\",\"kri\":\"58\",\"ka \":\"59\",\"nst\":\"60\",\" ho\":\"61\",\"as \":\"62\",\"st\\u00e4\":\"63\",\"r d\":\"64\",\"t f\":\"65\",\"upp\":\"66\",\" be\":\"67\",\"nge\":\"68\",\"r s\":\"69\",\"tal\":\"70\",\"t\\u00e4l\":\"71\",\"\\u00f6r \":\"72\",\" av\":\"73\",\"ger\":\"74\",\"ill\":\"75\",\"ng \":\"76\",\"e s\":\"77\",\"ekt\":\"78\",\"ade\":\"79\",\"era\":\"80\",\"ers\":\"81\",\"har\":\"82\",\"ll \":\"83\",\"lld\":\"84\",\"rin\":\"85\",\"rna\":\"86\",\"s\\u00e4k\":\"87\",\"und\":\"88\",\"inn\":\"89\",\"lig\":\"90\",\"ns \":\"91\",\" ma\":\"92\",\" pr\":\"93\",\" up\":\"94\",\"age\":\"95\",\"av \":\"96\",\"iva\":\"97\",\"kti\":\"98\",\"lda\":\"99\",\"orn\":\"100\",\"son\":\"101\",\"ts \":\"102\",\"tta\":\"103\",\"\\u00e4kr\":\"104\",\" sj\":\"105\",\" ti\":\"106\",\"avt\":\"107\",\"ber\":\"108\",\"els\":\"109\",\"eta\":\"110\",\"kol\":\"111\",\"men\":\"112\",\"n d\":\"113\",\"t k\":\"114\",\"vta\":\"115\",\"\\u00e5r \":\"116\",\"juk\":\"117\",\"man\":\"118\",\"n f\":\"119\",\"nin\":\"120\",\"r i\":\"121\",\"rs\\u00e4\":\"122\",\"sju\":\"123\",\"sso\":\"124\",\" \\u00e4r\":\"125\",\"a s\":\"126\",\"ach\":\"127\",\"ag \":\"128\",\"bac\":\"129\",\"den\":\"130\",\"ett\":\"131\",\"fte\":\"132\",\"hor\":\"133\",\"nba\":\"134\",\"oll\":\"135\",\"rnb\":\"136\",\"ste\":\"137\",\"til\":\"138\",\" ef\":\"139\",\" si\":\"140\",\"a a\":\"141\",\"e h\":\"142\",\"ed \":\"143\",\"eft\":\"144\",\"ga \":\"145\",\"ig \":\"146\",\"it \":\"147\",\"ler\":\"148\",\"med\":\"149\",\"n i\":\"150\",\"nd \":\"151\",\"s\\u00e5 \":\"152\",\"tiv\":\"153\",\" bl\":\"154\",\" et\":\"155\",\" fi\":\"156\",\" s\\u00e4\":\"157\",\"at \":\"158\",\"des\":\"159\",\"e a\":\"160\",\"gar\":\"161\",\"get\":\"162\",\"lan\":\"163\",\"lss\":\"164\",\"ost\":\"165\",\"r b\":\"166\",\"r e\":\"167\",\"re \":\"168\",\"ret\":\"169\",\"sta\":\"170\",\"t i\":\"171\",\" ge\":\"172\",\" he\":\"173\",\" re\":\"174\",\"a f\":\"175\",\"all\":\"176\",\"bos\":\"177\",\"ets\":\"178\",\"lek\":\"179\",\"let\":\"180\",\"ner\":\"181\",\"nna\":\"182\",\"nne\":\"183\",\"r f\":\"184\",\"rit\":\"185\",\"s s\":\"186\",\"sen\":\"187\",\"sto\":\"188\",\"tor\":\"189\",\"vav\":\"190\",\"ygg\":\"191\",\" ka\":\"192\",\" s\\u00e5\":\"193\",\" tr\":\"194\",\" ut\":\"195\",\"ad \":\"196\",\"al \":\"197\",\"are\":\"198\",\"e o\":\"199\",\"gon\":\"200\",\"kom\":\"201\",\"n a\":\"202\",\"n h\":\"203\",\"nga\":\"204\",\"r h\":\"205\",\"ren\":\"206\",\"t d\":\"207\",\"tag\":\"208\",\"tar\":\"209\",\"tre\":\"210\",\"\\u00e4tt\":\"211\",\" f\\u00e5\":\"212\",\" h\\u00e4\":\"213\",\" se\":\"214\",\"a d\":\"215\",\"a i\":\"216\",\"a p\":\"217\",\"ale\":\"218\",\"ann\":\"219\",\"ara\":\"220\",\"byg\":\"221\",\"gt \":\"222\",\"han\":\"223\",\"igt\":\"224\",\"kan\":\"225\",\"la \":\"226\",\"n o\":\"227\",\"nom\":\"228\",\"nsk\":\"229\",\"omm\":\"230\",\"r k\":\"231\",\"r p\":\"232\",\"r v\":\"233\",\"s f\":\"234\",\"s k\":\"235\",\"t a\":\"236\",\"t p\":\"237\",\"ver\":\"238\",\" bo\":\"239\",\" br\":\"240\",\" ku\":\"241\",\" n\\u00e5\":\"242\",\"a b\":\"243\",\"a e\":\"244\",\"del\":\"245\",\"ens\":\"246\",\"es \":\"247\",\"fin\":\"248\",\"ige\":\"249\",\"m s\":\"250\",\"n p\":\"251\",\"n\\u00e5g\":\"252\",\"or \":\"253\",\"r o\":\"254\",\"rbe\":\"255\",\"rs \":\"256\",\"rt \":\"257\",\"s a\":\"258\",\"s n\":\"259\",\"skr\":\"260\",\"t o\":\"261\",\"ten\":\"262\",\"tio\":\"263\",\"ven\":\"264\",\" al\":\"265\",\" ja\":\"266\",\" p \":\"267\",\" r \":\"268\",\" sa\":\"269\",\"a h\":\"270\",\"bet\":\"271\",\"cke\":\"272\",\"dra\":\"273\",\"e f\":\"274\",\"e i\":\"275\",\"eda\":\"276\",\"eno\":\"277\",\"er\\u00e4\":\"278\",\"ess\":\"279\",\"ion\":\"280\",\"jag\":\"281\",\"m f\":\"282\",\"ne \":\"283\",\"nns\":\"284\",\"pro\":\"285\",\"r t\":\"286\",\"rar\":\"287\",\"riv\":\"288\",\"r\\u00e4t\":\"289\",\"t e\":\"290\",\"t t\":\"291\",\"ust\":\"292\",\"vad\":\"293\",\"\\u00f6re\":\"294\",\" ar\":\"295\",\" by\":\"296\",\" kr\":\"297\",\" mi\":\"298\",\"arb\":\"299\"},\"tagalog\":{\"ng \":\"0\",\"ang\":\"1\",\" na\":\"2\",\" sa\":\"3\",\"an \":\"4\",\"nan\":\"5\",\"sa \":\"6\",\"na \":\"7\",\" ma\":\"8\",\" ca\":\"9\",\"ay \":\"10\",\"n g\":\"11\",\" an\":\"12\",\"ong\":\"13\",\" ga\":\"14\",\"at \":\"15\",\" pa\":\"16\",\"ala\":\"17\",\" si\":\"18\",\"a n\":\"19\",\"ga \":\"20\",\"g n\":\"21\",\"g m\":\"22\",\"ito\":\"23\",\"g c\":\"24\",\"man\":\"25\",\"san\":\"26\",\"g s\":\"27\",\"ing\":\"28\",\"to \":\"29\",\"ila\":\"30\",\"ina\":\"31\",\" di\":\"32\",\" ta\":\"33\",\"aga\":\"34\",\"iya\":\"35\",\"aca\":\"36\",\"g t\":\"37\",\" at\":\"38\",\"aya\":\"39\",\"ama\":\"40\",\"lan\":\"41\",\"a a\":\"42\",\"qui\":\"43\",\"a c\":\"44\",\"a s\":\"45\",\"nag\":\"46\",\" ba\":\"47\",\"g i\":\"48\",\"tan\":\"49\",\"'t \":\"50\",\" cu\":\"51\",\"aua\":\"52\",\"g p\":\"53\",\" ni\":\"54\",\"os \":\"55\",\"'y \":\"56\",\"a m\":\"57\",\" n \":\"58\",\"la \":\"59\",\" la\":\"60\",\"o n\":\"61\",\"yan\":\"62\",\" ay\":\"63\",\"usa\":\"64\",\"cay\":\"65\",\"on \":\"66\",\"ya \":\"67\",\" it\":\"68\",\"al \":\"69\",\"apa\":\"70\",\"ata\":\"71\",\"t n\":\"72\",\"uan\":\"73\",\"aha\":\"74\",\"asa\":\"75\",\"pag\":\"76\",\" gu\":\"77\",\"g l\":\"78\",\"di \":\"79\",\"mag\":\"80\",\"aba\":\"81\",\"g a\":\"82\",\"ara\":\"83\",\"a p\":\"84\",\"in \":\"85\",\"ana\":\"86\",\"it \":\"87\",\"si \":\"88\",\"cus\":\"89\",\"g b\":\"90\",\"uin\":\"91\",\"a t\":\"92\",\"as \":\"93\",\"n n\":\"94\",\"hin\":\"95\",\" hi\":\"96\",\"a't\":\"97\",\"ali\":\"98\",\" bu\":\"99\",\"gan\":\"100\",\"uma\":\"101\",\"a d\":\"102\",\"agc\":\"103\",\"aqu\":\"104\",\"g d\":\"105\",\" tu\":\"106\",\"aon\":\"107\",\"ari\":\"108\",\"cas\":\"109\",\"i n\":\"110\",\"niy\":\"111\",\"pin\":\"112\",\"a i\":\"113\",\"gca\":\"114\",\"siy\":\"115\",\"a'y\":\"116\",\"yao\":\"117\",\"ag \":\"118\",\"ca \":\"119\",\"han\":\"120\",\"ili\":\"121\",\"pan\":\"122\",\"sin\":\"123\",\"ual\":\"124\",\"n s\":\"125\",\"nam\":\"126\",\" lu\":\"127\",\"can\":\"128\",\"dit\":\"129\",\"gui\":\"130\",\"y n\":\"131\",\"gal\":\"132\",\"hat\":\"133\",\"nal\":\"134\",\" is\":\"135\",\"bag\":\"136\",\"fra\":\"137\",\" fr\":\"138\",\" su\":\"139\",\"a l\":\"140\",\" co\":\"141\",\"ani\":\"142\",\" bi\":\"143\",\" da\":\"144\",\"alo\":\"145\",\"isa\":\"146\",\"ita\":\"147\",\"may\":\"148\",\"o s\":\"149\",\"sil\":\"150\",\"una\":\"151\",\" in\":\"152\",\" pi\":\"153\",\"l n\":\"154\",\"nil\":\"155\",\"o a\":\"156\",\"pat\":\"157\",\"sac\":\"158\",\"t s\":\"159\",\" ua\":\"160\",\"agu\":\"161\",\"ail\":\"162\",\"bin\":\"163\",\"dal\":\"164\",\"g h\":\"165\",\"ndi\":\"166\",\"oon\":\"167\",\"ua \":\"168\",\" ha\":\"169\",\"ind\":\"170\",\"ran\":\"171\",\"s n\":\"172\",\"tin\":\"173\",\"ulo\":\"174\",\"eng\":\"175\",\"g f\":\"176\",\"ini\":\"177\",\"lah\":\"178\",\"lo \":\"179\",\"rai\":\"180\",\"rin\":\"181\",\"ton\":\"182\",\"g u\":\"183\",\"inu\":\"184\",\"lon\":\"185\",\"o'y\":\"186\",\"t a\":\"187\",\" ar\":\"188\",\"a b\":\"189\",\"ad \":\"190\",\"bay\":\"191\",\"cal\":\"192\",\"gya\":\"193\",\"ile\":\"194\",\"mat\":\"195\",\"n a\":\"196\",\"pau\":\"197\",\"ra \":\"198\",\"tay\":\"199\",\"y m\":\"200\",\"ant\":\"201\",\"ban\":\"202\",\"i m\":\"203\",\"nas\":\"204\",\"nay\":\"205\",\"no \":\"206\",\"sti\":\"207\",\" ti\":\"208\",\"ags\":\"209\",\"g g\":\"210\",\"ta \":\"211\",\"uit\":\"212\",\"uno\":\"213\",\" ib\":\"214\",\" ya\":\"215\",\"a u\":\"216\",\"abi\":\"217\",\"ati\":\"218\",\"cap\":\"219\",\"ig \":\"220\",\"is \":\"221\",\"la'\":\"222\",\" do\":\"223\",\" pu\":\"224\",\"api\":\"225\",\"ayo\":\"226\",\"gos\":\"227\",\"gul\":\"228\",\"lal\":\"229\",\"tag\":\"230\",\"til\":\"231\",\"tun\":\"232\",\"y c\":\"233\",\"y s\":\"234\",\"yon\":\"235\",\"ano\":\"236\",\"bur\":\"237\",\"iba\":\"238\",\"isi\":\"239\",\"lam\":\"240\",\"nac\":\"241\",\"nat\":\"242\",\"ni \":\"243\",\"nto\":\"244\",\"od \":\"245\",\"pa \":\"246\",\"rgo\":\"247\",\"urg\":\"248\",\" m \":\"249\",\"adr\":\"250\",\"ast\":\"251\",\"cag\":\"252\",\"gay\":\"253\",\"gsi\":\"254\",\"i p\":\"255\",\"ino\":\"256\",\"len\":\"257\",\"lin\":\"258\",\"m g\":\"259\",\"mar\":\"260\",\"nah\":\"261\",\"to'\":\"262\",\" de\":\"263\",\"a h\":\"264\",\"cat\":\"265\",\"cau\":\"266\",\"con\":\"267\",\"iqu\":\"268\",\"lac\":\"269\",\"mab\":\"270\",\"min\":\"271\",\"og \":\"272\",\"par\":\"273\",\"sal\":\"274\",\" za\":\"275\",\"ao \":\"276\",\"doo\":\"277\",\"ipi\":\"278\",\"nod\":\"279\",\"nte\":\"280\",\"uha\":\"281\",\"ula\":\"282\",\" re\":\"283\",\"ill\":\"284\",\"lit\":\"285\",\"mac\":\"286\",\"nit\":\"287\",\"o't\":\"288\",\"or \":\"289\",\"ora\":\"290\",\"sum\":\"291\",\"y p\":\"292\",\" al\":\"293\",\" mi\":\"294\",\" um\":\"295\",\"aco\":\"296\",\"ada\":\"297\",\"agd\":\"298\",\"cab\":\"299\"},\"turkish\":{\"lar\":\"0\",\"en \":\"1\",\"ler\":\"2\",\"an \":\"3\",\"in \":\"4\",\" bi\":\"5\",\" ya\":\"6\",\"eri\":\"7\",\"de \":\"8\",\" ka\":\"9\",\"ir \":\"10\",\"ar\\u0131\":\"11\",\" ba\":\"12\",\" de\":\"13\",\" ha\":\"14\",\"\\u0131n \":\"15\",\"ara\":\"16\",\"bir\":\"17\",\" ve\":\"18\",\" sa\":\"19\",\"ile\":\"20\",\"le \":\"21\",\"nde\":\"22\",\"da \":\"23\",\" bu\":\"24\",\"ana\":\"25\",\"ini\":\"26\",\"\\u0131n\\u0131\":\"27\",\"er \":\"28\",\"ve \":\"29\",\" y\\u0131\":\"30\",\"lma\":\"31\",\"y\\u0131l\":\"32\",\" ol\":\"33\",\"ar \":\"34\",\"n b\":\"35\",\"nda\":\"36\",\"aya\":\"37\",\"li \":\"38\",\"as\\u0131\":\"39\",\" ge\":\"40\",\"ind\":\"41\",\"n k\":\"42\",\"esi\":\"43\",\"lan\":\"44\",\"nla\":\"45\",\"ak \":\"46\",\"an\\u0131\":\"47\",\"eni\":\"48\",\"ni \":\"49\",\"n\\u0131 \":\"50\",\"r\\u0131n\":\"51\",\"san\":\"52\",\" ko\":\"53\",\" ye\":\"54\",\"maz\":\"55\",\"ba\\u015f\":\"56\",\"ili\":\"57\",\"rin\":\"58\",\"al\\u0131\":\"59\",\"az \":\"60\",\"hal\":\"61\",\"\\u0131nd\":\"62\",\" da\":\"63\",\" g\\u00fc\":\"64\",\"ele\":\"65\",\"\\u0131lm\":\"66\",\"\\u0131\\u011f\\u0131\":\"67\",\"eki\":\"68\",\"g\\u00fcn\":\"69\",\"i b\":\"70\",\"i\\u00e7i\":\"71\",\"den\":\"72\",\"kar\":\"73\",\"si \":\"74\",\" il\":\"75\",\"e y\":\"76\",\"na \":\"77\",\"yor\":\"78\",\"ek \":\"79\",\"n s\":\"80\",\" i\\u00e7\":\"81\",\"bu \":\"82\",\"e b\":\"83\",\"im \":\"84\",\"ki \":\"85\",\"len\":\"86\",\"ri \":\"87\",\"s\\u0131n\":\"88\",\" so\":\"89\",\"\\u00fcn \":\"90\",\" ta\":\"91\",\"nin\":\"92\",\"i\\u011fi\":\"93\",\"tan\":\"94\",\"yan\":\"95\",\" si\":\"96\",\"nat\":\"97\",\"n\\u0131n\":\"98\",\"kan\":\"99\",\"r\\u0131 \":\"100\",\"\\u00e7in\":\"101\",\"\\u011f\\u0131 \":\"102\",\"eli\":\"103\",\"n a\":\"104\",\"\\u0131r \":\"105\",\" an\":\"106\",\"ine\":\"107\",\"n y\":\"108\",\"ola\":\"109\",\" ar\":\"110\",\"al \":\"111\",\"e s\":\"112\",\"lik\":\"113\",\"n d\":\"114\",\"sin\":\"115\",\" al\":\"116\",\" d\\u00fc\":\"117\",\"anl\":\"118\",\"ne \":\"119\",\"ya \":\"120\",\"\\u0131m \":\"121\",\"\\u0131na\":\"122\",\" be\":\"123\",\"ada\":\"124\",\"ala\":\"125\",\"ama\":\"126\",\"ilm\":\"127\",\"or \":\"128\",\"s\\u0131 \":\"129\",\"yen\":\"130\",\" me\":\"131\",\"at\\u0131\":\"132\",\"di \":\"133\",\"eti\":\"134\",\"ken\":\"135\",\"la \":\"136\",\"l\\u0131 \":\"137\",\"oru\":\"138\",\" g\\u00f6\":\"139\",\" in\":\"140\",\"and\":\"141\",\"e d\":\"142\",\"men\":\"143\",\"un \":\"144\",\"\\u00f6ne\":\"145\",\"a d\":\"146\",\"at \":\"147\",\"e a\":\"148\",\"e g\":\"149\",\"yar\":\"150\",\" ku\":\"151\",\"ay\\u0131\":\"152\",\"dan\":\"153\",\"edi\":\"154\",\"iri\":\"155\",\"\\u00fcn\\u00fc\":\"156\",\"\\u011fi \":\"157\",\"\\u0131l\\u0131\":\"158\",\"eme\":\"159\",\"e\\u011fi\":\"160\",\"i k\":\"161\",\"i y\":\"162\",\"\\u0131la\":\"163\",\" \\u00e7a\":\"164\",\"a y\":\"165\",\"alk\":\"166\",\"d\\u0131 \":\"167\",\"ede\":\"168\",\"el \":\"169\",\"nd\\u0131\":\"170\",\"ra \":\"171\",\"\\u00fcne\":\"172\",\" s\\u00fc\":\"173\",\"d\\u0131r\":\"174\",\"e k\":\"175\",\"ere\":\"176\",\"ik \":\"177\",\"imi\":\"178\",\"i\\u015fi\":\"179\",\"mas\":\"180\",\"n h\":\"181\",\"s\\u00fcr\":\"182\",\"yle\":\"183\",\" ad\":\"184\",\" fi\":\"185\",\" gi\":\"186\",\" se\":\"187\",\"a k\":\"188\",\"arl\":\"189\",\"a\\u015f\\u0131\":\"190\",\"iyo\":\"191\",\"kla\":\"192\",\"l\\u0131\\u011f\":\"193\",\"nem\":\"194\",\"ney\":\"195\",\"rme\":\"196\",\"ste\":\"197\",\"t\\u0131 \":\"198\",\"unl\":\"199\",\"ver\":\"200\",\" s\\u0131\":\"201\",\" te\":\"202\",\" to\":\"203\",\"a s\":\"204\",\"a\\u015fk\":\"205\",\"ekl\":\"206\",\"end\":\"207\",\"kal\":\"208\",\"li\\u011f\":\"209\",\"min\":\"210\",\"t\\u0131r\":\"211\",\"ulu\":\"212\",\"unu\":\"213\",\"yap\":\"214\",\"ye \":\"215\",\"\\u0131 i\":\"216\",\"\\u015fka\":\"217\",\"\\u015ft\\u0131\":\"218\",\" b\\u00fc\":\"219\",\" ke\":\"220\",\" ki\":\"221\",\"ard\":\"222\",\"art\":\"223\",\"a\\u015fa\":\"224\",\"n i\":\"225\",\"ndi\":\"226\",\"ti \":\"227\",\"top\":\"228\",\"\\u0131 b\":\"229\",\" va\":\"230\",\" \\u00f6n\":\"231\",\"aki\":\"232\",\"cak\":\"233\",\"ey \":\"234\",\"fil\":\"235\",\"isi\":\"236\",\"kle\":\"237\",\"kur\":\"238\",\"man\":\"239\",\"nce\":\"240\",\"nle\":\"241\",\"nun\":\"242\",\"rak\":\"243\",\"\\u0131k \":\"244\",\" en\":\"245\",\" yo\":\"246\",\"a g\":\"247\",\"lis\":\"248\",\"mak\":\"249\",\"n g\":\"250\",\"tir\":\"251\",\"yas\":\"252\",\" i\\u015f\":\"253\",\" y\\u00f6\":\"254\",\"ale\":\"255\",\"bil\":\"256\",\"bul\":\"257\",\"et \":\"258\",\"i d\":\"259\",\"iye\":\"260\",\"kil\":\"261\",\"ma \":\"262\",\"n e\":\"263\",\"n t\":\"264\",\"nu \":\"265\",\"olu\":\"266\",\"rla\":\"267\",\"te \":\"268\",\"y\\u00f6n\":\"269\",\"\\u00e7\\u0131k\":\"270\",\" ay\":\"271\",\" m\\u00fc\":\"272\",\" \\u00e7o\":\"273\",\" \\u00e7\\u0131\":\"274\",\"a a\":\"275\",\"a b\":\"276\",\"ata\":\"277\",\"der\":\"278\",\"gel\":\"279\",\"i g\":\"280\",\"i i\":\"281\",\"ill\":\"282\",\"ist\":\"283\",\"ld\\u0131\":\"284\",\"lu \":\"285\",\"mek\":\"286\",\"mle\":\"287\",\"n \\u00e7\":\"288\",\"onu\":\"289\",\"opl\":\"290\",\"ran\":\"291\",\"rat\":\"292\",\"rd\\u0131\":\"293\",\"rke\":\"294\",\"siy\":\"295\",\"son\":\"296\",\"ta \":\"297\",\"t\\u00e7\\u0131\":\"298\",\"t\\u0131n\":\"299\"},\"ukrainian\":{\" \\u043d\\u0430\":\"0\",\" \\u0437\\u0430\":\"1\",\"\\u043d\\u043d\\u044f\":\"2\",\"\\u043d\\u044f \":\"3\",\"\\u043d\\u0430 \":\"4\",\" \\u043f\\u0440\":\"5\",\"\\u043e\\u0433\\u043e\":\"6\",\"\\u0433\\u043e \":\"7\",\"\\u0441\\u044c\\u043a\":\"8\",\" \\u043f\\u043e\":\"9\",\" \\u0443 \":\"10\",\"\\u0432\\u0456\\u0434\":\"11\",\"\\u0435\\u0440\\u0435\":\"12\",\" \\u043c\\u0456\":\"13\",\" \\u043d\\u0435\":\"14\",\"\\u0438\\u0445 \":\"15\",\"\\u0442\\u044c \":\"16\",\"\\u043f\\u0435\\u0440\":\"17\",\" \\u0432\\u0456\":\"18\",\"\\u0456\\u0432 \":\"19\",\" \\u043f\\u0435\":\"20\",\" \\u0449\\u043e\":\"21\",\"\\u043b\\u044c\\u043d\":\"22\",\"\\u043c\\u0438 \":\"23\",\"\\u043d\\u0456 \":\"24\",\"\\u043d\\u0435 \":\"25\",\"\\u0442\\u0438 \":\"26\",\"\\u0430\\u0442\\u0438\":\"27\",\"\\u0435\\u043d\\u043d\":\"28\",\"\\u043c\\u0456\\u0441\":\"29\",\"\\u043f\\u0440\\u0430\":\"30\",\"\\u0443\\u0432\\u0430\":\"31\",\"\\u043d\\u0438\\u043a\":\"32\",\"\\u043f\\u0440\\u043e\":\"33\",\"\\u0440\\u0430\\u0432\":\"34\",\"\\u0456\\u0432\\u043d\":\"35\",\" \\u0442\\u0430\":\"36\",\"\\u0431\\u0443\\u0434\":\"37\",\"\\u0432\\u043b\\u0456\":\"38\",\"\\u0440\\u0456\\u0432\":\"39\",\" \\u043a\\u043e\":\"40\",\" \\u0440\\u0456\":\"41\",\"\\u0430\\u043b\\u044c\":\"42\",\"\\u043d\\u043e \":\"43\",\"\\u043e\\u043c\\u0443\":\"44\",\"\\u0449\\u043e \":\"45\",\" \\u0432\\u0438\":\"46\",\"\\u043c\\u0443 \":\"47\",\"\\u0440\\u0435\\u0432\":\"48\",\"\\u0441\\u044f \":\"49\",\"\\u0456\\u043d\\u043d\":\"50\",\" \\u0434\\u043e\":\"51\",\" \\u0443\\u043f\":\"52\",\"\\u0430\\u0432\\u043b\":\"53\",\"\\u0430\\u043d\\u043d\":\"54\",\"\\u043a\\u043e\\u043c\":\"55\",\"\\u043b\\u0438 \":\"56\",\"\\u043b\\u0456\\u043d\":\"57\",\"\\u043d\\u043e\\u0433\":\"58\",\"\\u0443\\u043f\\u0440\":\"59\",\" \\u0431\\u0443\":\"60\",\" \\u0437 \":\"61\",\" \\u0440\\u043e\":\"62\",\"\\u0437\\u0430 \":\"63\",\"\\u0438 \\u043d\":\"64\",\"\\u043d\\u043e\\u0432\":\"65\",\"\\u043e\\u0440\\u043e\":\"66\",\"\\u043e\\u0441\\u0442\":\"67\",\"\\u0441\\u0442\\u0430\":\"68\",\"\\u0442\\u0456 \":\"69\",\"\\u044e\\u0442\\u044c\":\"70\",\" \\u043c\\u043e\":\"71\",\" \\u043d\\u0456\":\"72\",\" \\u044f\\u043a\":\"73\",\"\\u0431\\u043e\\u0440\":\"74\",\"\\u0432\\u0430 \":\"75\",\"\\u0432\\u0430\\u043d\":\"76\",\"\\u0435\\u043d\\u044c\":\"77\",\"\\u0438 \\u043f\":\"78\",\"\\u043d\\u044c \":\"79\",\"\\u043e\\u0432\\u0456\":\"80\",\"\\u0440\\u043e\\u043d\":\"81\",\"\\u0441\\u0442\\u0456\":\"82\",\"\\u0442\\u0430 \":\"83\",\"\\u0443 \\u0432\":\"84\",\"\\u044c\\u043a\\u043e\":\"85\",\"\\u0456\\u0441\\u0442\":\"86\",\" \\u0432 \":\"87\",\" \\u0440\\u0435\":\"88\",\"\\u0434\\u043e \":\"89\",\"\\u0435 \\u043f\":\"90\",\"\\u0437\\u0430\\u0431\":\"91\",\"\\u0438\\u0439 \":\"92\",\"\\u043d\\u0441\\u044c\":\"93\",\"\\u043e \\u0432\":\"94\",\"\\u043e \\u043f\":\"95\",\"\\u043f\\u0440\\u0438\":\"96\",\"\\u0456 \\u043f\":\"97\",\" \\u043a\\u0443\":\"98\",\" \\u043f\\u0456\":\"99\",\" \\u0441\\u043f\":\"100\",\"\\u0430 \\u043f\":\"101\",\"\\u0430\\u0431\\u043e\":\"102\",\"\\u0430\\u043d\\u0441\":\"103\",\"\\u0430\\u0446\\u0456\":\"104\",\"\\u0432\\u0430\\u0442\":\"105\",\"\\u0432\\u043d\\u0438\":\"106\",\"\\u0438 \\u0432\":\"107\",\"\\u0438\\u043c\\u0438\":\"108\",\"\\u043a\\u0430 \":\"109\",\"\\u043d\\u0435\\u043d\":\"110\",\"\\u043d\\u0456\\u0447\":\"111\",\"\\u043e\\u043d\\u0430\":\"112\",\"\\u043e\\u0457 \":\"113\",\"\\u043f\\u043e\\u0432\":\"114\",\"\\u044c\\u043a\\u0438\":\"115\",\"\\u044c\\u043d\\u043e\":\"116\",\"\\u0456\\u0437\\u043d\":\"117\",\"\\u0456\\u0447\\u043d\":\"118\",\" \\u0430\\u0432\":\"119\",\" \\u043c\\u0430\":\"120\",\" \\u043e\\u0440\":\"121\",\" \\u0441\\u0443\":\"122\",\" \\u0447\\u0438\":\"123\",\" \\u0456\\u043d\":\"124\",\"\\u0430 \\u0437\":\"125\",\"\\u0430\\u043c \":\"126\",\"\\u0430\\u0454 \":\"127\",\"\\u0432\\u043d\\u0435\":\"128\",\"\\u0432\\u0442\\u043e\":\"129\",\"\\u0434\\u043e\\u043c\":\"130\",\"\\u0435\\u043d\\u0442\":\"131\",\"\\u0436\\u0438\\u0442\":\"132\",\"\\u0437\\u043d\\u0438\":\"133\",\"\\u0438\\u043c \":\"134\",\"\\u0438\\u0442\\u043b\":\"135\",\"\\u043b\\u0430 \":\"136\",\"\\u043d\\u0438\\u0445\":\"137\",\"\\u043d\\u0438\\u0446\":\"138\",\"\\u043e\\u0432\\u0430\":\"139\",\"\\u043e\\u0432\\u0438\":\"140\",\"\\u043e\\u043c \":\"141\",\"\\u043f\\u043e\\u0440\":\"142\",\"\\u0442\\u044c\\u0441\":\"143\",\"\\u0443 \\u0440\":\"144\",\"\\u044c\\u0441\\u044f\":\"145\",\"\\u0456\\u0434\\u043e\":\"146\",\"\\u0456\\u043b\\u044c\":\"147\",\"\\u0456\\u0441\\u044c\":\"148\",\" \\u0432\\u0430\":\"149\",\" \\u0434\\u0456\":\"150\",\" \\u0436\\u0438\":\"151\",\" \\u0447\\u0435\":\"152\",\" \\u0456 \":\"153\",\"\\u0430 \\u0432\":\"154\",\"\\u0430 \\u043d\":\"155\",\"\\u0430\\u043b\\u0438\":\"156\",\"\\u0432\\u0435\\u0437\":\"157\",\"\\u0432\\u043d\\u043e\":\"158\",\"\\u0435\\u0432\\u0435\":\"159\",\"\\u0435\\u0437\\u0435\":\"160\",\"\\u0437\\u0435\\u043d\":\"161\",\"\\u0438\\u0446\\u0442\":\"162\",\"\\u043a\\u0438 \":\"163\",\"\\u043a\\u0438\\u0445\":\"164\",\"\\u043a\\u043e\\u043d\":\"165\",\"\\u043a\\u0443 \":\"166\",\"\\u043b\\u0430\\u0441\":\"167\",\"\\u043b\\u044f \":\"168\",\"\\u043c\\u043e\\u0436\":\"169\",\"\\u043d\\u0430\\u0447\":\"170\",\"\\u043d\\u0438\\u043c\":\"171\",\"\\u043d\\u043e\\u0457\":\"172\",\"\\u043e \\u0431\":\"173\",\"\\u043e\\u0432\\u0443\":\"174\",\"\\u043e\\u0434\\u0438\":\"175\",\"\\u043e\\u044e \":\"176\",\"\\u0440\\u043e \":\"177\",\"\\u0440\\u043e\\u043a\":\"178\",\"\\u0441\\u043d\\u043e\":\"179\",\"\\u0441\\u043f\\u043e\":\"180\",\"\\u0442\\u0430\\u043a\":\"181\",\"\\u0442\\u0432\\u0430\":\"182\",\"\\u0442\\u0443 \":\"183\",\"\\u0443 \\u043f\":\"184\",\"\\u0446\\u0442\\u0432\":\"185\",\"\\u044c\\u043d\\u0438\":\"186\",\"\\u044f \\u0437\":\"187\",\"\\u0456 \\u043c\":\"188\",\"\\u0456\\u0457 \":\"189\",\" \\u0432\\u0441\":\"190\",\" \\u0433\\u0440\":\"191\",\" \\u0434\\u0435\":\"192\",\" \\u043d\\u043e\":\"193\",\" \\u043f\\u0430\":\"194\",\" \\u0441\\u0435\":\"195\",\" \\u0443\\u043a\":\"196\",\" \\u0457\\u0445\":\"197\",\"\\u0430 \\u043e\":\"198\",\"\\u0430\\u0432\\u0442\":\"199\",\"\\u0430\\u0441\\u0442\":\"200\",\"\\u0430\\u044e\\u0442\":\"201\",\"\\u0432\\u0430\\u0440\":\"202\",\"\\u0434\\u0435\\u043d\":\"203\",\"\\u0434\\u0438 \":\"204\",\"\\u0434\\u0443 \":\"205\",\"\\u0437\\u043d\\u0430\":\"206\",\"\\u0438 \\u0437\":\"207\",\"\\u0438\\u043a\\u043e\":\"208\",\"\\u0438\\u0441\\u044f\":\"209\",\"\\u0438\\u0442\\u0438\":\"210\",\"\\u043a\\u043e\\u0433\":\"211\",\"\\u043c\\u0435\\u043d\":\"212\",\"\\u043d\\u043e\\u043c\":\"213\",\"\\u043d\\u0443 \":\"214\",\"\\u043e \\u043d\":\"215\",\"\\u043e \\u0441\":\"216\",\"\\u043e\\u0431\\u0443\":\"217\",\"\\u043e\\u0432\\u043e\":\"218\",\"\\u043f\\u043b\\u0430\":\"219\",\"\\u0440\\u0430\\u043d\":\"220\",\"\\u0440\\u0438\\u0432\":\"221\",\"\\u0440\\u043e\\u0431\":\"222\",\"\\u0441\\u043a\\u0430\":\"223\",\"\\u0442\\u0430\\u043d\":\"224\",\"\\u0442\\u0438\\u043c\":\"225\",\"\\u0442\\u0438\\u0441\":\"226\",\"\\u0442\\u043e \":\"227\",\"\\u0442\\u0440\\u0430\":\"228\",\"\\u0443\\u0434\\u043e\":\"229\",\"\\u0447\\u0438\\u043d\":\"230\",\"\\u0447\\u043d\\u0438\":\"231\",\"\\u0456 \\u0432\":\"232\",\"\\u0456\\u044e \":\"233\",\" \\u0430 \":\"234\",\" \\u0432\\u043e\":\"235\",\" \\u0434\\u0430\":\"236\",\" \\u043a\\u0432\":\"237\",\" \\u043c\\u0435\":\"238\",\" \\u043e\\u0431\":\"239\",\" \\u0441\\u043a\":\"240\",\" \\u0442\\u0438\":\"241\",\" \\u0444\\u0456\":\"242\",\" \\u0454 \":\"243\",\"\\u0430 \\u0440\":\"244\",\"\\u0430 \\u0441\":\"245\",\"\\u0430 \\u0443\":\"246\",\"\\u0430\\u043a \":\"247\",\"\\u0430\\u043d\\u0456\":\"248\",\"\\u0430\\u0440\\u0442\":\"249\",\"\\u0430\\u0441\\u043d\":\"250\",\"\\u0432 \\u0443\":\"251\",\"\\u0432\\u0438\\u043a\":\"252\",\"\\u0432\\u0456\\u0437\":\"253\",\"\\u0434\\u043e\\u0432\":\"254\",\"\\u0434\\u043f\\u043e\":\"255\",\"\\u0434\\u0456\\u0432\":\"256\",\"\\u0435\\u0432\\u0456\":\"257\",\"\\u0435\\u043d\\u0441\":\"258\",\"\\u0436\\u0435 \":\"259\",\"\\u0438 \\u043c\":\"260\",\"\\u0438 \\u0441\":\"261\",\"\\u0438\\u043a\\u0430\":\"262\",\"\\u0438\\u0447\\u043d\":\"263\",\"\\u043a\\u0456 \":\"264\",\"\\u043a\\u0456\\u0432\":\"265\",\"\\u043c\\u0456\\u0436\":\"266\",\"\\u043d\\u0430\\u043d\":\"267\",\"\\u043d\\u043e\\u0441\":\"268\",\"\\u043e \\u0443\":\"269\",\"\\u043e\\u0431\\u043b\":\"270\",\"\\u043e\\u0434\\u043d\":\"271\",\"\\u043e\\u043a \":\"272\",\"\\u043e\\u043b\\u043e\":\"273\",\"\\u043e\\u0442\\u0440\":\"274\",\"\\u0440\\u0435\\u043d\":\"275\",\"\\u0440\\u0438\\u043c\":\"276\",\"\\u0440\\u043e\\u0437\":\"277\",\"\\u0441\\u044c \":\"278\",\"\\u0441\\u0456 \":\"279\",\"\\u0442\\u043b\\u0430\":\"280\",\"\\u0442\\u0456\\u0432\":\"281\",\"\\u0443 \\u0437\":\"282\",\"\\u0443\\u0433\\u043e\":\"283\",\"\\u0443\\u0434\\u0456\":\"284\",\"\\u0447\\u0438 \":\"285\",\"\\u0448\\u0435 \":\"286\",\"\\u044f \\u043d\":\"287\",\"\\u044f \\u0443\":\"288\",\"\\u0456\\u0434\\u043f\":\"289\",\"\\u0456\\u0439 \":\"290\",\"\\u0456\\u043d\\u0430\":\"291\",\"\\u0456\\u044f \":\"292\",\" \\u043a\\u0430\":\"293\",\" \\u043d\\u0438\":\"294\",\" \\u043e\\u0441\":\"295\",\" \\u0441\\u0438\":\"296\",\" \\u0442\\u043e\":\"297\",\" \\u0442\\u0440\":\"298\",\" \\u0443\\u0433\":\"299\"},\"urdu\":{\"\\u06cc\\u06ba \":\"0\",\" \\u06a9\\u06cc\":\"1\",\"\\u06a9\\u06d2 \":\"2\",\" \\u06a9\\u06d2\":\"3\",\"\\u0646\\u06d2 \":\"4\",\" \\u06a9\\u06c1\":\"5\",\"\\u06d2 \\u06a9\":\"6\",\"\\u06a9\\u06cc \":\"7\",\"\\u0645\\u06cc\\u06ba\":\"8\",\" \\u0645\\u06cc\":\"9\",\"\\u06c1\\u06d2 \":\"10\",\"\\u0648\\u06ba \":\"11\",\"\\u06a9\\u06c1 \":\"12\",\" \\u06c1\\u06d2\":\"13\",\"\\u0627\\u0646 \":\"14\",\"\\u06c1\\u06cc\\u06ba\":\"15\",\"\\u0648\\u0631 \":\"16\",\" \\u06a9\\u0648\":\"17\",\"\\u06cc\\u0627 \":\"18\",\" \\u0627\\u0646\":\"19\",\" \\u0646\\u06d2\":\"20\",\"\\u0633\\u06d2 \":\"21\",\" \\u0633\\u06d2\":\"22\",\" \\u06a9\\u0631\":\"23\",\"\\u0633\\u062a\\u0627\":\"24\",\" \\u0627\\u0648\":\"25\",\"\\u0627\\u0648\\u0631\":\"26\",\"\\u062a\\u0627\\u0646\":\"27\",\"\\u0631 \\u06a9\":\"28\",\"\\u06cc \\u06a9\":\"29\",\" \\u0627\\u0633\":\"30\",\"\\u06d2 \\u0627\":\"31\",\" \\u067e\\u0627\":\"32\",\" \\u06c1\\u0648\":\"33\",\" \\u067e\\u0631\":\"34\",\"\\u0631\\u0641 \":\"35\",\" \\u06a9\\u0627\":\"36\",\"\\u0627 \\u06a9\":\"37\",\"\\u06cc \\u0627\":\"38\",\" \\u06c1\\u06cc\":\"39\",\"\\u062f\\u0631 \":\"40\",\"\\u06a9\\u0648 \":\"41\",\" \\u0627\\u06cc\":\"42\",\"\\u06ba \\u06a9\":\"43\",\" \\u0645\\u0634\":\"44\",\" \\u0645\\u0644\":\"45\",\"\\u0627\\u062a \":\"46\",\"\\u0635\\u062f\\u0631\":\"47\",\"\\u0627\\u06a9\\u0633\":\"48\",\"\\u0634\\u0631\\u0641\":\"49\",\"\\u0645\\u0634\\u0631\":\"50\",\"\\u067e\\u0627\\u06a9\":\"51\",\"\\u06a9\\u0633\\u062a\":\"52\",\"\\u06cc \\u0645\":\"53\",\" \\u062f\\u06cc\":\"54\",\" \\u0635\\u062f\":\"55\",\" \\u06cc\\u06c1\":\"56\",\"\\u0627 \\u06c1\":\"57\",\"\\u0646 \\u06a9\":\"58\",\"\\u0648\\u0627\\u0644\":\"59\",\"\\u06cc\\u06c1 \":\"60\",\"\\u06d2 \\u0648\":\"61\",\" \\u0628\\u06be\":\"62\",\" \\u062f\\u0648\":\"63\",\"\\u0627\\u0633 \":\"64\",\"\\u0631 \\u0627\":\"65\",\"\\u0646\\u06c1\\u06cc\":\"66\",\"\\u06a9\\u0627 \":\"67\",\"\\u06d2 \\u0633\":\"68\",\"\\u0626\\u06cc \":\"69\",\"\\u06c1 \\u0627\":\"70\",\"\\u06cc\\u062a \":\"71\",\"\\u06d2 \\u06c1\":\"72\",\"\\u062a \\u06a9\":\"73\",\" \\u0633\\u0627\":\"74\",\"\\u0644\\u06d2 \":\"75\",\"\\u06c1\\u0627 \":\"76\",\"\\u06d2 \\u0628\":\"77\",\" \\u0648\\u0627\":\"78\",\"\\u0627\\u0631 \":\"79\",\"\\u0646\\u06cc \":\"80\",\"\\u06a9\\u06c1\\u0627\":\"81\",\"\\u06cc \\u06c1\":\"82\",\"\\u06d2 \\u0645\":\"83\",\" \\u0633\\u06cc\":\"84\",\" \\u0644\\u06cc\":\"85\",\"\\u0627\\u0646\\u06c1\":\"86\",\"\\u0627\\u0646\\u06cc\":\"87\",\"\\u0631 \\u0645\":\"88\",\"\\u0631 \\u067e\":\"89\",\"\\u0631\\u06cc\\u062a\":\"90\",\"\\u0646 \\u0645\":\"91\",\"\\u06be\\u0627 \":\"92\",\"\\u06cc\\u0631 \":\"93\",\" \\u062c\\u0627\":\"94\",\" \\u062c\\u0646\":\"95\",\"\\u0626\\u06d2 \":\"96\",\"\\u067e\\u0631 \":\"97\",\"\\u06ba \\u0646\":\"98\",\"\\u06c1 \\u06a9\":\"99\",\"\\u06cc \\u0648\":\"100\",\"\\u06d2 \\u062f\":\"101\",\" \\u062a\\u0648\":\"102\",\" \\u062a\\u06be\":\"103\",\" \\u06af\\u06cc\":\"104\",\"\\u0627\\u06cc\\u06a9\":\"105\",\"\\u0644 \\u06a9\":\"106\",\"\\u0646\\u0627 \":\"107\",\"\\u06a9\\u0631 \":\"108\",\"\\u06ba \\u0645\":\"109\",\"\\u06cc\\u06a9 \":\"110\",\" \\u0628\\u0627\":\"111\",\"\\u0627 \\u062a\":\"112\",\"\\u062f\\u06cc \":\"113\",\"\\u0646 \\u0633\":\"114\",\"\\u06a9\\u06cc\\u0627\":\"115\",\"\\u06cc\\u0648\\u06ba\":\"116\",\"\\u06d2 \\u062c\":\"117\",\"\\u0627\\u0644 \":\"118\",\"\\u062a\\u0648 \":\"119\",\"\\u06ba \\u0627\":\"120\",\"\\u06d2 \\u067e\":\"121\",\" \\u0686\\u0627\":\"122\",\"\\u0627\\u0645 \":\"123\",\"\\u0628\\u06be\\u06cc\":\"124\",\"\\u062a\\u06cc \":\"125\",\"\\u062a\\u06d2 \":\"126\",\"\\u062f\\u0648\\u0633\":\"127\",\"\\u0633 \\u06a9\":\"128\",\"\\u0645\\u0644\\u06a9\":\"129\",\"\\u0646 \\u0627\":\"130\",\"\\u06c1\\u0648\\u0631\":\"131\",\"\\u06cc\\u06d2 \":\"132\",\" \\u0645\\u0648\":\"133\",\" \\u0648\\u06a9\":\"134\",\"\\u0627\\u0626\\u06cc\":\"135\",\"\\u0627\\u0631\\u062a\":\"136\",\"\\u0627\\u0644\\u06d2\":\"137\",\"\\u0628\\u06be\\u0627\":\"138\",\"\\u0631\\u062f\\u06cc\":\"139\",\"\\u0631\\u06cc \":\"140\",\"\\u0648\\u06c1 \":\"141\",\"\\u0648\\u06cc\\u0632\":\"142\",\"\\u06ba \\u062f\":\"143\",\"\\u06be\\u06cc \":\"144\",\"\\u06cc \\u0633\":\"145\",\" \\u0631\\u06c1\":\"146\",\" \\u0645\\u0646\":\"147\",\" \\u0646\\u06c1\":\"148\",\" \\u0648\\u0631\":\"149\",\" \\u0648\\u06c1\":\"150\",\" \\u06c1\\u0646\":\"151\",\"\\u0627 \\u0627\":\"152\",\"\\u0627\\u0633\\u062a\":\"153\",\"\\u062a \\u0627\":\"154\",\"\\u062a \\u067e\":\"155\",\"\\u062f \\u06a9\":\"156\",\"\\u0632 \\u0645\":\"157\",\"\\u0646\\u062f \":\"158\",\"\\u0648\\u0631\\u062f\":\"159\",\"\\u0648\\u06a9\\u0644\":\"160\",\"\\u06af\\u06cc \":\"161\",\"\\u06af\\u06cc\\u0627\":\"162\",\"\\u06c1 \\u067e\":\"163\",\"\\u06cc\\u0632 \":\"164\",\"\\u06d2 \\u062a\":\"165\",\" \\u0627\\u0639\":\"166\",\" \\u0627\\u067e\":\"167\",\" \\u062c\\u0633\":\"168\",\" \\u062c\\u0645\":\"169\",\" \\u062c\\u0648\":\"170\",\" \\u0633\\u0631\":\"171\",\"\\u0627\\u067e\\u0646\":\"172\",\"\\u0627\\u06a9\\u062b\":\"173\",\"\\u062a\\u06be\\u0627\":\"174\",\"\\u062b\\u0631\\u06cc\":\"175\",\"\\u062f\\u06cc\\u0627\":\"176\",\"\\u0631 \\u062f\":\"177\",\"\\u0631\\u062a \":\"178\",\"\\u0631\\u0648\\u06cc\":\"179\",\"\\u0633\\u06cc \":\"180\",\"\\u0645\\u0644\\u0627\":\"181\",\"\\u0646\\u062f\\u0648\":\"182\",\"\\u0648\\u0633\\u062a\":\"183\",\"\\u067e\\u0631\\u0648\":\"184\",\"\\u0686\\u0627\\u06c1\":\"185\",\"\\u06a9\\u062b\\u0631\":\"186\",\"\\u06a9\\u0644\\u0627\":\"187\",\"\\u06c1 \\u06c1\":\"188\",\"\\u06c1\\u0646\\u062f\":\"189\",\"\\u06c1\\u0648 \":\"190\",\"\\u06d2 \\u0644\":\"191\",\" \\u0627\\u06a9\":\"192\",\" \\u062f\\u0627\":\"193\",\" \\u0633\\u0646\":\"194\",\" \\u0648\\u0632\":\"195\",\" \\u067e\\u06cc\":\"196\",\"\\u0627 \\u0686\":\"197\",\"\\u0627\\u0621 \":\"198\",\"\\u0627\\u062a\\u06be\":\"199\",\"\\u0627\\u0642\\u0627\":\"200\",\"\\u0627\\u06c1 \":\"201\",\"\\u062a\\u06be \":\"202\",\"\\u062f\\u0648 \":\"203\",\"\\u0631 \\u0628\":\"204\",\"\\u0631\\u0648\\u0627\":\"205\",\"\\u0631\\u06d2 \":\"206\",\"\\u0633\\u0627\\u062a\":\"207\",\"\\u0641 \\u06a9\":\"208\",\"\\u0642\\u0627\\u062a\":\"209\",\"\\u0644\\u0627 \":\"210\",\"\\u0644\\u0627\\u0621\":\"211\",\"\\u0645 \\u0645\":\"212\",\"\\u0645 \\u06a9\":\"213\",\"\\u0645\\u0646 \":\"214\",\"\\u0646\\u0648\\u06ba\":\"215\",\"\\u0648 \\u0627\":\"216\",\"\\u06a9\\u0631\\u0646\":\"217\",\"\\u06ba \\u06c1\":\"218\",\"\\u06be\\u0627\\u0631\":\"219\",\"\\u06c1\\u0648\\u0626\":\"220\",\"\\u06c1\\u06cc \":\"221\",\"\\u06cc\\u0634 \":\"222\",\" \\u0627\\u0645\":\"223\",\" \\u0644\\u0627\":\"224\",\" \\u0645\\u0633\":\"225\",\" \\u067e\\u0648\":\"226\",\" \\u067e\\u06c1\":\"227\",\"\\u0627\\u0646\\u06d2\":\"228\",\"\\u062a \\u0645\":\"229\",\"\\u062a \\u06c1\":\"230\",\"\\u062c \\u06a9\":\"231\",\"\\u062f\\u0648\\u0646\":\"232\",\"\\u0632\\u06cc\\u0631\":\"233\",\"\\u0633 \\u0633\":\"234\",\"\\u0634 \\u06a9\":\"235\",\"\\u0641 \\u0646\":\"236\",\"\\u0644 \\u06c1\":\"237\",\"\\u0644\\u0627\\u0642\":\"238\",\"\\u0644\\u06cc \":\"239\",\"\\u0648\\u0631\\u06cc\":\"240\",\"\\u0648\\u0632\\u06cc\":\"241\",\"\\u0648\\u0646\\u0648\":\"242\",\"\\u06a9\\u06be\\u0646\":\"243\",\"\\u06af\\u0627 \":\"244\",\"\\u06ba \\u0633\":\"245\",\"\\u06ba \\u06af\":\"246\",\"\\u06be\\u0646\\u06d2\":\"247\",\"\\u06be\\u06d2 \":\"248\",\"\\u06c1 \\u0628\":\"249\",\"\\u06c1 \\u062c\":\"250\",\"\\u06c1\\u0631 \":\"251\",\"\\u06cc \\u0622\":\"252\",\"\\u06cc \\u067e\":\"253\",\" \\u062d\\u0627\":\"254\",\" \\u0648\\u0641\":\"255\",\" \\u06af\\u0627\":\"256\",\"\\u0627 \\u062c\":\"257\",\"\\u0627 \\u06af\":\"258\",\"\\u0627\\u062f \":\"259\",\"\\u0627\\u062f\\u06cc\":\"260\",\"\\u0627\\u0639\\u0638\":\"261\",\"\\u0627\\u06c1\\u062a\":\"262\",\"\\u062c\\u0633 \":\"263\",\"\\u062c\\u0645\\u06c1\":\"264\",\"\\u062c\\u0648 \":\"265\",\"\\u0631 \\u0633\":\"266\",\"\\u0631 \\u06c1\":\"267\",\"\\u0631\\u0646\\u06d2\":\"268\",\"\\u0633 \\u0645\":\"269\",\"\\u0633\\u0627 \":\"270\",\"\\u0633\\u0646\\u062f\":\"271\",\"\\u0633\\u0646\\u06af\":\"272\",\"\\u0638\\u0645 \":\"273\",\"\\u0639\\u0638\\u0645\":\"274\",\"\\u0644 \\u0645\":\"275\",\"\\u0644\\u06cc\\u06d2\":\"276\",\"\\u0645\\u0644 \":\"277\",\"\\u0645\\u0648\\u06c1\":\"278\",\"\\u0645\\u06c1\\u0648\":\"279\",\"\\u0646\\u06af\\u06be\":\"280\",\"\\u0648 \\u0635\":\"281\",\"\\u0648\\u0631\\u0679\":\"282\",\"\\u0648\\u06c1\\u0646\":\"283\",\"\\u06a9\\u0646 \":\"284\",\"\\u06af\\u06be \":\"285\",\"\\u06af\\u06d2 \":\"286\",\"\\u06ba \\u062c\":\"287\",\"\\u06ba \\u0648\":\"288\",\"\\u06ba \\u06cc\":\"289\",\"\\u06c1 \\u062f\":\"290\",\"\\u06c1\\u0646 \":\"291\",\"\\u06c1\\u0648\\u06ba\":\"292\",\"\\u06d2 \\u062d\":\"293\",\"\\u06d2 \\u06af\":\"294\",\"\\u06d2 \\u06cc\":\"295\",\" \\u0627\\u06af\":\"296\",\" \\u0628\\u0639\":\"297\",\" \\u0631\\u0648\":\"298\",\" \\u0634\\u0627\":\"299\"},\"uzbek\":{\"\\u0430\\u043d \":\"0\",\"\\u0433\\u0430\\u043d\":\"1\",\"\\u043b\\u0430\\u0440\":\"2\",\"\\u0433\\u0430 \":\"3\",\"\\u043d\\u0433 \":\"4\",\"\\u0438\\u043d\\u0433\":\"5\",\"\\u043d\\u0438\\u043d\":\"6\",\"\\u0434\\u0430 \":\"7\",\"\\u043d\\u0438 \":\"8\",\"\\u0438\\u0434\\u0430\":\"9\",\"\\u0430\\u0440\\u0438\":\"10\",\"\\u0438\\u0433\\u0430\":\"11\",\"\\u0438\\u043d\\u0438\":\"12\",\"\\u0430\\u0440 \":\"13\",\"\\u0434\\u0438 \":\"14\",\" \\u0431\\u0438\":\"15\",\"\\u0430\\u043d\\u0438\":\"16\",\" \\u0431\\u043e\":\"17\",\"\\u0434\\u0430\\u043d\":\"18\",\"\\u043b\\u0433\\u0430\":\"19\",\" \\u04b3\\u0430\":\"20\",\" \\u0432\\u0430\":\"21\",\" \\u0441\\u0430\":\"22\",\"\\u0433\\u0438 \":\"23\",\"\\u0438\\u043b\\u0430\":\"24\",\"\\u043d \\u0431\":\"25\",\"\\u0438 \\u0431\":\"26\",\" \\u043a\\u045e\":\"27\",\" \\u0442\\u0430\":\"28\",\"\\u0438\\u0440 \":\"29\",\" \\u043c\\u0430\":\"30\",\"\\u0430\\u0433\\u0430\":\"31\",\"\\u0430\\u043b\\u0430\":\"32\",\"\\u0431\\u0438\\u0440\":\"33\",\"\\u0440\\u0438 \":\"34\",\"\\u0442\\u0433\\u0430\":\"35\",\"\\u043b\\u0430\\u043d\":\"36\",\"\\u043b\\u0438\\u043a\":\"37\",\"\\u0430 \\u043a\":\"38\",\"\\u0430\\u0433\\u0438\":\"39\",\"\\u0430\\u0442\\u0438\":\"40\",\"\\u0442\\u0430 \":\"41\",\"\\u0430\\u0434\\u0438\":\"42\",\"\\u0434\\u0430\\u0433\":\"43\",\"\\u0440\\u0433\\u0430\":\"44\",\" \\u0439\\u0438\":\"45\",\" \\u043c\\u0438\":\"46\",\" \\u043f\\u0430\":\"47\",\" \\u0431\\u045e\":\"48\",\" \\u049b\\u0430\":\"49\",\" \\u049b\\u0438\":\"50\",\"\\u0430 \\u0431\":\"51\",\"\\u0438\\u043b\\u043b\":\"52\",\"\\u043b\\u0438 \":\"53\",\"\\u0430\\u0441\\u0438\":\"54\",\"\\u0438 \\u0442\":\"55\",\"\\u0438\\u043a \":\"56\",\"\\u0438\\u043b\\u0438\":\"57\",\"\\u043b\\u043b\\u0430\":\"58\",\"\\u0430\\u0440\\u0434\":\"59\",\"\\u0432\\u0447\\u0438\":\"60\",\"\\u0432\\u0430 \":\"61\",\"\\u0438\\u0431 \":\"62\",\"\\u0438\\u0440\\u0438\":\"63\",\"\\u043b\\u0438\\u0433\":\"64\",\"\\u043d\\u0433\\u0430\":\"65\",\"\\u0440\\u0430\\u043d\":\"66\",\" \\u043a\\u0435\":\"67\",\" \\u045e\\u0437\":\"68\",\"\\u0430 \\u0441\":\"69\",\"\\u0430\\u0445\\u0442\":\"70\",\"\\u0431\\u045e\\u043b\":\"71\",\"\\u0438\\u0433\\u0438\":\"72\",\"\\u043a\\u045e\\u0440\":\"73\",\"\\u0440\\u0434\\u0430\":\"74\",\"\\u0440\\u043d\\u0438\":\"75\",\"\\u0441\\u0430 \":\"76\",\" \\u0431\\u0435\":\"77\",\" \\u0431\\u0443\":\"78\",\" \\u0434\\u0430\":\"79\",\" \\u0436\\u0430\":\"80\",\"\\u0430 \\u0442\":\"81\",\"\\u0430\\u0437\\u0438\":\"82\",\"\\u0435\\u0440\\u0438\":\"83\",\"\\u0438 \\u0430\":\"84\",\"\\u0438\\u043b\\u0433\":\"85\",\"\\u0439\\u0438\\u043b\":\"86\",\"\\u043c\\u0430\\u043d\":\"87\",\"\\u043f\\u0430\\u0445\":\"88\",\"\\u0440\\u0438\\u0434\":\"89\",\"\\u0442\\u0438 \":\"90\",\"\\u0443\\u0432\\u0447\":\"91\",\"\\u0445\\u0442\\u0430\":\"92\",\" \\u043d\\u0435\":\"93\",\" \\u0441\\u043e\":\"94\",\" \\u0443\\u0447\":\"95\",\"\\u0430\\u0439\\u0442\":\"96\",\"\\u043b\\u043b\\u0438\":\"97\",\"\\u0442\\u043b\\u0430\":\"98\",\" \\u0430\\u0439\":\"99\",\" \\u0444\\u0440\":\"100\",\" \\u044d\\u0442\":\"101\",\" \\u04b3\\u043e\":\"102\",\"\\u0430 \\u049b\":\"103\",\"\\u0430\\u043b\\u0438\":\"104\",\"\\u0430\\u0440\\u043e\":\"105\",\"\\u0431\\u0435\\u0440\":\"106\",\"\\u0431\\u0438\\u043b\":\"107\",\"\\u0431\\u043e\\u0440\":\"108\",\"\\u0438\\u043c\\u0438\":\"109\",\"\\u0438\\u0441\\u0442\":\"110\",\"\\u043e\\u043d \":\"111\",\"\\u0440\\u0438\\u043d\":\"112\",\"\\u0442\\u0435\\u0440\":\"113\",\"\\u0442\\u0438\\u043b\":\"114\",\"\\u0443\\u043d \":\"115\",\"\\u0444\\u0440\\u0430\":\"116\",\"\\u049b\\u0438\\u043b\":\"117\",\" \\u0431\\u0430\":\"118\",\" \\u043e\\u043b\":\"119\",\"\\u0430\\u043d\\u0441\":\"120\",\"\\u0435\\u0444\\u0442\":\"121\",\"\\u0437\\u0438\\u0440\":\"122\",\"\\u043a\\u0430\\u0442\":\"123\",\"\\u043c\\u0438\\u043b\":\"124\",\"\\u043d\\u0435\\u0444\":\"125\",\"\\u0441\\u0430\\u0433\":\"126\",\"\\u0447\\u0438 \":\"127\",\"\\u045e\\u0440\\u0430\":\"128\",\" \\u043d\\u0430\":\"129\",\" \\u0442\\u0435\":\"130\",\" \\u044d\\u043d\":\"131\",\"\\u0430 \\u044d\":\"132\",\"\\u0430\\u043c \":\"133\",\"\\u0430\\u0440\\u043d\":\"134\",\"\\u0430\\u0442 \":\"135\",\"\\u0438\\u0448 \":\"136\",\"\\u043c\\u0430 \":\"137\",\"\\u043d\\u043b\\u0430\":\"138\",\"\\u0440\\u043b\\u0438\":\"139\",\"\\u0447\\u0438\\u043b\":\"140\",\"\\u0448\\u0433\\u0430\":\"141\",\" \\u0438\\u0448\":\"142\",\" \\u043c\\u0443\":\"143\",\" \\u045e\\u049b\":\"144\",\"\\u0430\\u0440\\u0430\":\"145\",\"\\u0432\\u0430\\u0437\":\"146\",\"\\u0438 \\u0443\":\"147\",\"\\u0438\\u049b \":\"148\",\"\\u043c\\u043e\\u049b\":\"149\",\"\\u0440\\u0438\\u043c\":\"150\",\"\\u0443\\u0447\\u0443\":\"151\",\"\\u0447\\u0443\\u043d\":\"152\",\"\\u0448\\u0438 \":\"153\",\"\\u044d\\u043d\\u0433\":\"154\",\"\\u049b\\u0443\\u0432\":\"155\",\"\\u04b3\\u0430\\u043c\":\"156\",\" \\u0441\\u045e\":\"157\",\" \\u0448\\u0438\":\"158\",\"\\u0431\\u0430\\u0440\":\"159\",\"\\u0431\\u0435\\u043a\":\"160\",\"\\u0434\\u0430\\u043c\":\"161\",\"\\u0438 \\u04b3\":\"162\",\"\\u0438\\u0448\\u0438\":\"163\",\"\\u043b\\u0430\\u0434\":\"164\",\"\\u043e\\u043b\\u0438\":\"165\",\"\\u043e\\u043b\\u043b\":\"166\",\"\\u043e\\u0440\\u0438\":\"167\",\"\\u043e\\u049b\\u0434\":\"168\",\"\\u0440 \\u0431\":\"169\",\"\\u0440\\u0430 \":\"170\",\"\\u0440\\u043b\\u0430\":\"171\",\"\\u0443\\u043d\\u0438\":\"172\",\"\\u0444\\u0442 \":\"173\",\"\\u045e\\u043b\\u0433\":\"174\",\"\\u045e\\u049b\\u0443\":\"175\",\" \\u0434\\u0435\":\"176\",\" \\u043a\\u0430\":\"177\",\" \\u049b\\u045e\":\"178\",\"\\u0430 \\u045e\":\"179\",\"\\u0430\\u0431\\u0430\":\"180\",\"\\u0430\\u043c\\u043c\":\"181\",\"\\u0430\\u0442\\u043b\":\"182\",\"\\u0431 \\u043a\":\"183\",\"\\u0431\\u043e\\u0448\":\"184\",\"\\u0437\\u0431\\u0435\":\"185\",\"\\u0438 \\u0432\":\"186\",\"\\u0438\\u043c \":\"187\",\"\\u0438\\u043d \":\"188\",\"\\u0438\\u0448\\u043b\":\"189\",\"\\u043b\\u0430\\u0431\":\"190\",\"\\u043b\\u0435\\u0439\":\"191\",\"\\u043c\\u0438\\u043d\":\"192\",\"\\u043d \\u0434\":\"193\",\"\\u043d\\u0434\\u0430\":\"194\",\"\\u043e\\u049b \":\"195\",\"\\u0440 \\u043c\":\"196\",\"\\u0440\\u0438\\u043b\":\"197\",\"\\u0441\\u0438\\u0434\":\"198\",\"\\u0442\\u0430\\u043b\":\"199\",\"\\u0442\\u0430\\u043d\":\"200\",\"\\u0442\\u0438\\u0434\":\"201\",\"\\u0442\\u043e\\u043d\":\"202\",\"\\u045e\\u0437\\u0431\":\"203\",\" \\u0430\\u043c\":\"204\",\" \\u043a\\u0438\":\"205\",\"\\u0430 \\u04b3\":\"206\",\"\\u0430\\u043d\\u0433\":\"207\",\"\\u0430\\u043d\\u0434\":\"208\",\"\\u0430\\u0440\\u0442\":\"209\",\"\\u0430\\u0451\\u0442\":\"210\",\"\\u0434\\u0438\\u0440\":\"211\",\"\\u0435\\u043d\\u0442\":\"212\",\"\\u0438 \\u0434\":\"213\",\"\\u0438 \\u043c\":\"214\",\"\\u0438 \\u043e\":\"215\",\"\\u0438 \\u044d\":\"216\",\"\\u0438\\u0440\\u043e\":\"217\",\"\\u0439\\u0442\\u0438\":\"218\",\"\\u043d\\u0441\\u0443\":\"219\",\"\\u043e\\u0434\\u0438\":\"220\",\"\\u043e\\u0440 \":\"221\",\"\\u0441\\u0438 \":\"222\",\"\\u0442\\u0438\\u0448\":\"223\",\"\\u0442\\u043e\\u0431\":\"224\",\"\\u044d\\u0442\\u0438\":\"225\",\"\\u049b\\u0430\\u0440\":\"226\",\"\\u049b\\u0434\\u0430\":\"227\",\" \\u0431\\u043b\":\"228\",\" \\u0433\\u0435\":\"229\",\" \\u0434\\u043e\":\"230\",\" \\u0434\\u0443\":\"231\",\" \\u043d\\u043e\":\"232\",\" \\u043f\\u0440\":\"233\",\" \\u0440\\u0430\":\"234\",\" \\u0444\\u043e\":\"235\",\" \\u049b\\u043e\":\"236\",\"\\u0430 \\u043c\":\"237\",\"\\u0430 \\u043e\":\"238\",\"\\u0430\\u0439\\u0434\":\"239\",\"\\u0430\\u043b\\u043e\":\"240\",\"\\u0430\\u043c\\u0430\":\"241\",\"\\u0431\\u043b\\u0435\":\"242\",\"\\u0433 \\u043d\":\"243\",\"\\u0434\\u043e\\u043b\":\"244\",\"\\u0435\\u0439\\u0440\":\"245\",\"\\u0435\\u043a \":\"246\",\"\\u0435\\u0440\\u0433\":\"247\",\"\\u0436\\u0430\\u0440\":\"248\",\"\\u0437\\u0438\\u0434\":\"249\",\"\\u0438 \\u043a\":\"250\",\"\\u0438 \\u0444\":\"251\",\"\\u0438\\u0439 \":\"252\",\"\\u0438\\u043b\\u043e\":\"253\",\"\\u043b\\u0434\\u0438\":\"254\",\"\\u043b\\u0438\\u0431\":\"255\",\"\\u043b\\u0438\\u043d\":\"256\",\"\\u043c\\u0438 \":\"257\",\"\\u043c\\u043c\\u0430\":\"258\",\"\\u043d \\u0432\":\"259\",\"\\u043d \\u043a\":\"260\",\"\\u043d \\u045e\":\"261\",\"\\u043d \\u04b3\":\"262\",\"\\u043e\\u0437\\u0438\":\"263\",\"\\u043e\\u0440\\u0430\":\"264\",\"\\u043e\\u0441\\u0438\":\"265\",\"\\u0440\\u0430\\u0441\":\"266\",\"\\u0440\\u0438\\u0448\":\"267\",\"\\u0440\\u043a\\u0430\":\"268\",\"\\u0440\\u043e\\u049b\":\"269\",\"\\u0441\\u0442\\u043e\":\"270\",\"\\u0442\\u0438\\u043d\":\"271\",\"\\u0445\\u0430\\u0442\":\"272\",\"\\u0448\\u0438\\u0440\":\"273\",\" \\u0430\\u0432\":\"274\",\" \\u0440\\u045e\":\"275\",\" \\u0442\\u0443\":\"276\",\" \\u045e\\u0442\":\"277\",\"\\u0430 \\u043f\":\"278\",\"\\u0430\\u0432\\u0442\":\"279\",\"\\u0430\\u0434\\u0430\":\"280\",\"\\u0430\\u0437\\u0430\":\"281\",\"\\u0430\\u043d\\u043b\":\"282\",\"\\u0431 \\u0431\":\"283\",\"\\u0431\\u043e\\u0439\":\"284\",\"\\u0431\\u0443 \":\"285\",\"\\u0432\\u0442\\u043e\":\"286\",\"\\u0433 \\u044d\":\"287\",\"\\u0433\\u0438\\u043d\":\"288\",\"\\u0434\\u0430\\u0440\":\"289\",\"\\u0434\\u0435\\u043d\":\"290\",\"\\u0434\\u0443\\u043d\":\"291\",\"\\u0438\\u0434\\u0435\":\"292\",\"\\u0438\\u043e\\u043d\":\"293\",\"\\u0438\\u0440\\u043b\":\"294\",\"\\u0438\\u0448\\u0433\":\"295\",\"\\u0439\\u0445\\u0430\":\"296\",\"\\u043a\\u0435\\u043b\":\"297\",\"\\u043a\\u045e\\u043f\":\"298\",\"\\u043b\\u0438\\u043e\":\"299\"},\"vietnamese\":{\"ng \":\"0\",\" th\":\"1\",\" ch\":\"2\",\"g t\":\"3\",\" nh\":\"4\",\"\\u00f4ng\":\"5\",\" kh\":\"6\",\" tr\":\"7\",\"nh \":\"8\",\" c\\u00f4\":\"9\",\"c\\u00f4n\":\"10\",\" ty\":\"11\",\"ty \":\"12\",\"i t\":\"13\",\"n t\":\"14\",\" ng\":\"15\",\"\\u1ea1i \":\"16\",\" ti\":\"17\",\"ch \":\"18\",\"y l\":\"19\",\"\\u1ec1n \":\"20\",\" \\u0111\\u01b0\":\"21\",\"hi \":\"22\",\" g\\u1edf\":\"23\",\"g\\u1edfi\":\"24\",\"i\\u1ec1n\":\"25\",\"ti\\u1ec1\":\"26\",\"\\u1edfi \":\"27\",\" gi\":\"28\",\" le\":\"29\",\" vi\":\"30\",\"cho\":\"31\",\"ho \":\"32\",\"kh\\u00e1\":\"33\",\" v\\u00e0\":\"34\",\"h\\u00e1c\":\"35\",\" ph\":\"36\",\"am \":\"37\",\"h\\u00e0n\":\"38\",\"\\u00e1ch\":\"39\",\"\\u00f4i \":\"40\",\"i n\":\"41\",\"\\u01b0\\u1ee3c\":\"42\",\"\\u1ee3c \":\"43\",\" t\\u00f4\":\"44\",\"ch\\u00fa\":\"45\",\"i\\u1ec7t\":\"46\",\"t\\u00f4i\":\"47\",\"\\u00ean \":\"48\",\"\\u00fang\":\"49\",\"\\u1ec7t \":\"50\",\" c\\u00f3\":\"51\",\"c t\":\"52\",\"c\\u00f3 \":\"53\",\"h\\u00fan\":\"54\",\"vi\\u1ec7\":\"55\",\"\\u0111\\u01b0\\u1ee3\":\"56\",\" na\":\"57\",\"g c\":\"58\",\"i c\":\"59\",\"n c\":\"60\",\"n n\":\"61\",\"t n\":\"62\",\"v\\u00e0 \":\"63\",\"n l\":\"64\",\"n \\u0111\":\"65\",\"\\u00e0ng\":\"66\",\"\\u00e1c \":\"67\",\"\\u1ea5t \":\"68\",\"h l\":\"69\",\"nam\":\"70\",\"\\u00e2n \":\"71\",\"\\u0103m \":\"72\",\" h\\u00e0\":\"73\",\" l\\u00e0\":\"74\",\" n\\u0103\":\"75\",\" qu\":\"76\",\" t\\u1ea1\":\"77\",\"g m\":\"78\",\"n\\u0103m\":\"79\",\"t\\u1ea1i\":\"80\",\"\\u1edbi \":\"81\",\" l\\u1eb9\":\"82\",\"ay \":\"83\",\"e g\":\"84\",\"h h\":\"85\",\"i v\":\"86\",\"i \\u0111\":\"87\",\"le \":\"88\",\"l\\u1eb9 \":\"89\",\"\\u1ec1u \":\"90\",\"\\u1eddi \":\"91\",\"h\\u00e2n\":\"92\",\"nhi\":\"93\",\"t t\":\"94\",\" c\\u1ee7\":\"95\",\" m\\u1ed9\":\"96\",\" v\\u1ec1\":\"97\",\" \\u0111i\":\"98\",\"an \":\"99\",\"c\\u1ee7a\":\"100\",\"l\\u00e0 \":\"101\",\"m\\u1ed9t\":\"102\",\"v\\u1ec1 \":\"103\",\"\\u00e0nh\":\"104\",\"\\u1ebft \":\"105\",\"\\u1ed9t \":\"106\",\"\\u1ee7a \":\"107\",\" bi\":\"108\",\" c\\u00e1\":\"109\",\"a c\":\"110\",\"anh\":\"111\",\"c\\u00e1c\":\"112\",\"h c\":\"113\",\"i\\u1ec1u\":\"114\",\"m t\":\"115\",\"\\u1ec7n \":\"116\",\" ho\":\"117\",\"'s \":\"118\",\"ave\":\"119\",\"e's\":\"120\",\"el \":\"121\",\"g n\":\"122\",\"le'\":\"123\",\"n v\":\"124\",\"o c\":\"125\",\"rav\":\"126\",\"s t\":\"127\",\"thi\":\"128\",\"tra\":\"129\",\"vel\":\"130\",\"\\u1eadn \":\"131\",\"\\u1ebfn \":\"132\",\" ba\":\"133\",\" cu\":\"134\",\" sa\":\"135\",\" \\u0111\\u00f3\":\"136\",\" \\u0111\\u1ebf\":\"137\",\"c c\":\"138\",\"chu\":\"139\",\"hi\\u1ec1\":\"140\",\"huy\":\"141\",\"khi\":\"142\",\"nh\\u00e2\":\"143\",\"nh\\u01b0\":\"144\",\"ong\":\"145\",\"ron\":\"146\",\"thu\":\"147\",\"th\\u01b0\":\"148\",\"tro\":\"149\",\"y c\":\"150\",\"\\u00e0y \":\"151\",\"\\u0111\\u1ebfn\":\"152\",\"\\u01b0\\u1eddi\":\"153\",\"\\u01b0\\u1eddn\":\"154\",\"\\u1ec1 v\":\"155\",\"\\u1eddng\":\"156\",\" v\\u1edb\":\"157\",\"cu\\u1ed9\":\"158\",\"g \\u0111\":\"159\",\"i\\u1ebft\":\"160\",\"i\\u1ec7n\":\"161\",\"ng\\u00e0\":\"162\",\"o t\":\"163\",\"u c\":\"164\",\"u\\u1ed9c\":\"165\",\"v\\u1edbi\":\"166\",\"\\u00e0 c\":\"167\",\"\\u00e0i \":\"168\",\"\\u01a1ng\":\"169\",\"\\u01b0\\u01a1n\":\"170\",\"\\u1ea3i \":\"171\",\"\\u1ed9c \":\"172\",\"\\u1ee9c \":\"173\",\" an\":\"174\",\" l\\u1ead\":\"175\",\" ra\":\"176\",\" s\\u1ebd\":\"177\",\" s\\u1ed1\":\"178\",\" t\\u1ed5\":\"179\",\"a k\":\"180\",\"bi\\u1ebf\":\"181\",\"c n\":\"182\",\"c \\u0111\":\"183\",\"ch\\u1ee9\":\"184\",\"g v\":\"185\",\"gia\":\"186\",\"g\\u00e0y\":\"187\",\"h\\u00e1n\":\"188\",\"h\\u00f4n\":\"189\",\"h\\u01b0 \":\"190\",\"h\\u1ee9c\":\"191\",\"i g\":\"192\",\"i h\":\"193\",\"i k\":\"194\",\"i p\":\"195\",\"i\\u00ean\":\"196\",\"kh\\u00f4\":\"197\",\"l\\u1eadp\":\"198\",\"n k\":\"199\",\"ra \":\"200\",\"r\\u00ean\":\"201\",\"s\\u1ebd \":\"202\",\"t c\":\"203\",\"th\\u00e0\":\"204\",\"tr\\u00ea\":\"205\",\"t\\u1ed5 \":\"206\",\"u n\":\"207\",\"y t\":\"208\",\"\\u00ecnh\":\"209\",\"\\u1ea5y \":\"210\",\"\\u1eadp \":\"211\",\"\\u1ed5 c\":\"212\",\" m\\u00e1\":\"213\",\" \\u0111\\u1ec3\":\"214\",\"ai \":\"215\",\"c s\":\"216\",\"g\\u01b0\\u1edd\":\"217\",\"h v\":\"218\",\"hoa\":\"219\",\"ho\\u1ea1\":\"220\",\"inh\":\"221\",\"m n\":\"222\",\"m\\u00e1y\":\"223\",\"n g\":\"224\",\"ng\\u01b0\":\"225\",\"nh\\u1ead\":\"226\",\"o n\":\"227\",\"oa \":\"228\",\"o\\u00e0n\":\"229\",\"p c\":\"230\",\"s\\u1ed1 \":\"231\",\"t \\u0111\":\"232\",\"y v\":\"233\",\"\\u00e0o \":\"234\",\"\\u00e1y \":\"235\",\"\\u0103n \":\"236\",\"\\u0111\\u00f3 \":\"237\",\"\\u0111\\u1ec3 \":\"238\",\"\\u01b0\\u1edbc\":\"239\",\"\\u1ea7n \":\"240\",\"\\u1ec3n \":\"241\",\"\\u1edbc \":\"242\",\" b\\u00e1\":\"243\",\" c\\u01a1\":\"244\",\" c\\u1ea3\":\"245\",\" c\\u1ea7\":\"246\",\" h\\u1ecd\":\"247\",\" k\\u1ef3\":\"248\",\" li\":\"249\",\" m\\u1ea1\":\"250\",\" s\\u1edf\":\"251\",\" t\\u1eb7\":\"252\",\" v\\u00e9\":\"253\",\" v\\u1ee5\":\"254\",\" \\u0111\\u1ea1\":\"255\",\"a \\u0111\":\"256\",\"bay\":\"257\",\"c\\u01a1 \":\"258\",\"g s\":\"259\",\"han\":\"260\",\"h\\u01b0\\u01a1\":\"261\",\"i s\":\"262\",\"k\\u1ef3 \":\"263\",\"m c\":\"264\",\"n m\":\"265\",\"n p\":\"266\",\"o b\":\"267\",\"o\\u1ea1i\":\"268\",\"qua\":\"269\",\"s\\u1edf \":\"270\",\"tha\":\"271\",\"th\\u00e1\":\"272\",\"t\\u1eb7n\":\"273\",\"v\\u00e0o\":\"274\",\"v\\u00e9 \":\"275\",\"v\\u1ee5 \":\"276\",\"y b\":\"277\",\"\\u00e0n \":\"278\",\"\\u00e1ng\":\"279\",\"\\u01a1 s\":\"280\",\"\\u1ea7u \":\"281\",\"\\u1eadt \":\"282\",\"\\u1eb7ng\":\"283\",\"\\u1ecdc \":\"284\",\"\\u1edf t\":\"285\",\"\\u1eefng\":\"286\",\" du\":\"287\",\" lu\":\"288\",\" ta\":\"289\",\" to\":\"290\",\" t\\u1eeb\":\"291\",\" \\u1edf \":\"292\",\"a v\":\"293\",\"ao \":\"294\",\"c v\":\"295\",\"c\\u1ea3 \":\"296\",\"du \":\"297\",\"g l\":\"298\",\"gi\\u1ea3\":\"299\"},\"welsh\":{\"yn \":\"0\",\"dd \":\"1\",\" yn\":\"2\",\" y \":\"3\",\"ydd\":\"4\",\"eth\":\"5\",\"th \":\"6\",\" i \":\"7\",\"aet\":\"8\",\"d y\":\"9\",\"ch \":\"10\",\"od \":\"11\",\"ol \":\"12\",\"edd\":\"13\",\" ga\":\"14\",\" gw\":\"15\",\"'r \":\"16\",\"au \":\"17\",\"ddi\":\"18\",\"ad \":\"19\",\" cy\":\"20\",\" gy\":\"21\",\" ei\":\"22\",\" o \":\"23\",\"iad\":\"24\",\"yr \":\"25\",\"an \":\"26\",\"bod\":\"27\",\"wed\":\"28\",\" bo\":\"29\",\" dd\":\"30\",\"el \":\"31\",\"n y\":\"32\",\" am\":\"33\",\"di \":\"34\",\"edi\":\"35\",\"on \":\"36\",\" we\":\"37\",\" ym\":\"38\",\" ar\":\"39\",\" rh\":\"40\",\"odd\":\"41\",\" ca\":\"42\",\" ma\":\"43\",\"ael\":\"44\",\"oed\":\"45\",\"dae\":\"46\",\"n a\":\"47\",\"dda\":\"48\",\"er \":\"49\",\"h y\":\"50\",\"all\":\"51\",\"ei \":\"52\",\" ll\":\"53\",\"am \":\"54\",\"eu \":\"55\",\"fod\":\"56\",\"fyd\":\"57\",\"l y\":\"58\",\"n g\":\"59\",\"wyn\":\"60\",\"d a\":\"61\",\"i g\":\"62\",\"mae\":\"63\",\"neu\":\"64\",\"os \":\"65\",\" ne\":\"66\",\"d i\":\"67\",\"dod\":\"68\",\"dol\":\"69\",\"n c\":\"70\",\"r h\":\"71\",\"wyd\":\"72\",\"wyr\":\"73\",\"ai \":\"74\",\"ar \":\"75\",\"in \":\"76\",\"rth\":\"77\",\" fy\":\"78\",\" he\":\"79\",\" me\":\"80\",\" yr\":\"81\",\"'n \":\"82\",\"dia\":\"83\",\"est\":\"84\",\"h c\":\"85\",\"hai\":\"86\",\"i d\":\"87\",\"id \":\"88\",\"r y\":\"89\",\"y b\":\"90\",\" dy\":\"91\",\" ha\":\"92\",\"ada\":\"93\",\"i b\":\"94\",\"n i\":\"95\",\"ote\":\"96\",\"rot\":\"97\",\"tes\":\"98\",\"y g\":\"99\",\"yd \":\"100\",\" ad\":\"101\",\" mr\":\"102\",\" un\":\"103\",\"cyn\":\"104\",\"dau\":\"105\",\"ddy\":\"106\",\"edo\":\"107\",\"i c\":\"108\",\"i w\":\"109\",\"ith\":\"110\",\"lae\":\"111\",\"lla\":\"112\",\"nd \":\"113\",\"oda\":\"114\",\"ryd\":\"115\",\"tho\":\"116\",\" a \":\"117\",\" dr\":\"118\",\"aid\":\"119\",\"ain\":\"120\",\"ddo\":\"121\",\"dyd\":\"122\",\"fyn\":\"123\",\"gyn\":\"124\",\"hol\":\"125\",\"io \":\"126\",\"o a\":\"127\",\"wch\":\"128\",\"wyb\":\"129\",\"ybo\":\"130\",\"ych\":\"131\",\" br\":\"132\",\" by\":\"133\",\" di\":\"134\",\" fe\":\"135\",\" na\":\"136\",\" o'\":\"137\",\" pe\":\"138\",\"art\":\"139\",\"byd\":\"140\",\"dro\":\"141\",\"gal\":\"142\",\"l e\":\"143\",\"lai\":\"144\",\"mr \":\"145\",\"n n\":\"146\",\"r a\":\"147\",\"rhy\":\"148\",\"wn \":\"149\",\"ynn\":\"150\",\" on\":\"151\",\" r \":\"152\",\"cae\":\"153\",\"d g\":\"154\",\"d o\":\"155\",\"d w\":\"156\",\"gan\":\"157\",\"gwy\":\"158\",\"n d\":\"159\",\"n f\":\"160\",\"n o\":\"161\",\"ned\":\"162\",\"ni \":\"163\",\"o'r\":\"164\",\"r d\":\"165\",\"ud \":\"166\",\"wei\":\"167\",\"wrt\":\"168\",\" an\":\"169\",\" cw\":\"170\",\" da\":\"171\",\" ni\":\"172\",\" pa\":\"173\",\" pr\":\"174\",\" wy\":\"175\",\"d e\":\"176\",\"dai\":\"177\",\"dim\":\"178\",\"eud\":\"179\",\"gwa\":\"180\",\"idd\":\"181\",\"im \":\"182\",\"iri\":\"183\",\"lwy\":\"184\",\"n b\":\"185\",\"nol\":\"186\",\"r o\":\"187\",\"rwy\":\"188\",\" ch\":\"189\",\" er\":\"190\",\" fo\":\"191\",\" ge\":\"192\",\" hy\":\"193\",\" i'\":\"194\",\" ro\":\"195\",\" sa\":\"196\",\" tr\":\"197\",\"bob\":\"198\",\"cwy\":\"199\",\"cyf\":\"200\",\"dio\":\"201\",\"dyn\":\"202\",\"eit\":\"203\",\"hel\":\"204\",\"hyn\":\"205\",\"ich\":\"206\",\"ll \":\"207\",\"mdd\":\"208\",\"n r\":\"209\",\"ond\":\"210\",\"pro\":\"211\",\"r c\":\"212\",\"r g\":\"213\",\"red\":\"214\",\"rha\":\"215\",\"u a\":\"216\",\"u c\":\"217\",\"u y\":\"218\",\"y c\":\"219\",\"ymd\":\"220\",\"ymr\":\"221\",\"yw \":\"222\",\" ac\":\"223\",\" be\":\"224\",\" bl\":\"225\",\" co\":\"226\",\" os\":\"227\",\"adw\":\"228\",\"ae \":\"229\",\"af \":\"230\",\"d p\":\"231\",\"efn\":\"232\",\"eic\":\"233\",\"en \":\"234\",\"eol\":\"235\",\"es \":\"236\",\"fer\":\"237\",\"gel\":\"238\",\"h g\":\"239\",\"hod\":\"240\",\"ied\":\"241\",\"ir \":\"242\",\"laf\":\"243\",\"n h\":\"244\",\"na \":\"245\",\"nyd\":\"246\",\"odo\":\"247\",\"ofy\":\"248\",\"rdd\":\"249\",\"rie\":\"250\",\"ros\":\"251\",\"stw\":\"252\",\"twy\":\"253\",\"yda\":\"254\",\"yng\":\"255\",\" at\":\"256\",\" de\":\"257\",\" go\":\"258\",\" id\":\"259\",\" oe\":\"260\",\" \\u00e2 \":\"261\",\"'ch\":\"262\",\"ac \":\"263\",\"ach\":\"264\",\"ae'\":\"265\",\"al \":\"266\",\"bl \":\"267\",\"d c\":\"268\",\"d l\":\"269\",\"dan\":\"270\",\"dde\":\"271\",\"ddw\":\"272\",\"dir\":\"273\",\"dla\":\"274\",\"ed \":\"275\",\"ela\":\"276\",\"ell\":\"277\",\"ene\":\"278\",\"ewn\":\"279\",\"gyd\":\"280\",\"hau\":\"281\",\"hyw\":\"282\",\"i a\":\"283\",\"i f\":\"284\",\"iol\":\"285\",\"ion\":\"286\",\"l a\":\"287\",\"l i\":\"288\",\"lia\":\"289\",\"med\":\"290\",\"mon\":\"291\",\"n s\":\"292\",\"no \":\"293\",\"obl\":\"294\",\"ola\":\"295\",\"ref\":\"296\",\"rn \":\"297\",\"thi\":\"298\",\"un \":\"299\"}},\"trigram-unicodemap\":{\"Basic Latin\":{\"albanian\":661,\"azeri\":653,\"bengali\":1,\"cebuano\":750,\"croatian\":733,\"czech\":652,\"danish\":734,\"dutch\":741,\"english\":723,\"estonian\":739,\"finnish\":743,\"french\":733,\"german\":750,\"hausa\":752,\"hawaiian\":751,\"hungarian\":693,\"icelandic\":662,\"indonesian\":776,\"italian\":741,\"latin\":764,\"latvian\":693,\"lithuanian\":738,\"mongolian\":19,\"norwegian\":742,\"pidgin\":702,\"polish\":701,\"portuguese\":726,\"romanian\":714,\"slovak\":677,\"slovene\":740,\"somali\":755,\"spanish\":749,\"swahili\":770,\"swedish\":717,\"tagalog\":767,\"turkish\":673,\"vietnamese\":503,\"welsh\":728},\"Latin-1 Supplement\":{\"albanian\":68,\"azeri\":10,\"czech\":51,\"danish\":13,\"estonian\":19,\"finnish\":39,\"french\":21,\"german\":8,\"hungarian\":72,\"icelandic\":80,\"italian\":3,\"norwegian\":5,\"polish\":6,\"portuguese\":18,\"romanian\":9,\"slovak\":37,\"spanish\":6,\"swedish\":26,\"turkish\":25,\"vietnamese\":56,\"welsh\":1},\"[Malformatted]\":{\"albanian\":68,\"arabic\":724,\"azeri\":109,\"bengali\":1472,\"bulgarian\":750,\"croatian\":10,\"czech\":78,\"danish\":13,\"estonian\":19,\"farsi\":706,\"finnish\":39,\"french\":21,\"german\":8,\"hausa\":8,\"hindi\":1386,\"hungarian\":74,\"icelandic\":80,\"italian\":3,\"kazakh\":767,\"kyrgyz\":767,\"latvian\":56,\"lithuanian\":30,\"macedonian\":755,\"mongolian\":743,\"nepali\":1514,\"norwegian\":5,\"pashto\":677,\"polish\":45,\"portuguese\":18,\"romanian\":31,\"russian\":759,\"serbian\":757,\"slovak\":45,\"slovene\":10,\"spanish\":6,\"swedish\":26,\"turkish\":87,\"ukrainian\":748,\"urdu\":682,\"uzbek\":773,\"vietnamese\":289,\"welsh\":1},\"Arabic\":{\"arabic\":724,\"farsi\":706,\"pashto\":677,\"urdu\":682},\"Latin Extended-B\":{\"azeri\":73,\"hausa\":8,\"vietnamese\":19},\"Latin Extended-A\":{\"azeri\":25,\"croatian\":10,\"czech\":27,\"hungarian\":2,\"latvian\":56,\"lithuanian\":30,\"polish\":39,\"romanian\":22,\"slovak\":8,\"slovene\":10,\"turkish\":62,\"vietnamese\":20},\"Combining Diacritical Marks\":{\"azeri\":1},\"Bengali\":{\"bengali\":714},\"Gujarati\":{\"bengali\":16},\"Gurmukhi\":{\"bengali\":6},\"Cyrillic\":{\"bulgarian\":750,\"kazakh\":767,\"kyrgyz\":767,\"macedonian\":755,\"mongolian\":743,\"russian\":759,\"serbian\":757,\"ukrainian\":748,\"uzbek\":773},\"Devanagari\":{\"hindi\":693,\"nepali\":757},\"Latin Extended Additional\":{\"vietnamese\":97}}}", "[[\"0x0000\",\"0x007F\",\"Basic Latin\"],[\"0x0080\",\"0x00FF\",\"Latin-1 Supplement\"],[\"0x0100\",\"0x017F\",\"Latin Extended-A\"],[\"0x0180\",\"0x024F\",\"Latin Extended-B\"],[\"0x0250\",\"0x02AF\",\"IPA Extensions\"],[\"0x02B0\",\"0x02FF\",\"Spacing Modifier Letters\"],[\"0x0300\",\"0x036F\",\"Combining Diacritical Marks\"],[\"0x0370\",\"0x03FF\",\"Greek and Coptic\"],[\"0x0400\",\"0x04FF\",\"Cyrillic\"],[\"0x0500\",\"0x052F\",\"Cyrillic Supplement\"],[\"0x0530\",\"0x058F\",\"Armenian\"],[\"0x0590\",\"0x05FF\",\"Hebrew\"],[\"0x0600\",\"0x06FF\",\"Arabic\"],[\"0x0700\",\"0x074F\",\"Syriac\"],[\"0x0750\",\"0x077F\",\"Arabic Supplement\"],[\"0x0780\",\"0x07BF\",\"Thaana\"],[\"0x0900\",\"0x097F\",\"Devanagari\"],[\"0x0980\",\"0x09FF\",\"Bengali\"],[\"0x0A00\",\"0x0A7F\",\"Gurmukhi\"],[\"0x0A80\",\"0x0AFF\",\"Gujarati\"],[\"0x0B00\",\"0x0B7F\",\"Oriya\"],[\"0x0B80\",\"0x0BFF\",\"Tamil\"],[\"0x0C00\",\"0x0C7F\",\"Telugu\"],[\"0x0C80\",\"0x0CFF\",\"Kannada\"],[\"0x0D00\",\"0x0D7F\",\"Malayalam\"],[\"0x0D80\",\"0x0DFF\",\"Sinhala\"],[\"0x0E00\",\"0x0E7F\",\"Thai\"],[\"0x0E80\",\"0x0EFF\",\"Lao\"],[\"0x0F00\",\"0x0FFF\",\"Tibetan\"],[\"0x1000\",\"0x109F\",\"Myanmar\"],[\"0x10A0\",\"0x10FF\",\"Georgian\"],[\"0x1100\",\"0x11FF\",\"Hangul Jamo\"],[\"0x1200\",\"0x137F\",\"Ethiopic\"],[\"0x1380\",\"0x139F\",\"Ethiopic Supplement\"],[\"0x13A0\",\"0x13FF\",\"Cherokee\"],[\"0x1400\",\"0x167F\",\"Unified Canadian Aboriginal Syllabics\"],[\"0x1680\",\"0x169F\",\"Ogham\"],[\"0x16A0\",\"0x16FF\",\"Runic\"],[\"0x1700\",\"0x171F\",\"Tagalog\"],[\"0x1720\",\"0x173F\",\"Hanunoo\"],[\"0x1740\",\"0x175F\",\"Buhid\"],[\"0x1760\",\"0x177F\",\"Tagbanwa\"],[\"0x1780\",\"0x17FF\",\"Khmer\"],[\"0x1800\",\"0x18AF\",\"Mongolian\"],[\"0x1900\",\"0x194F\",\"Limbu\"],[\"0x1950\",\"0x197F\",\"Tai Le\"],[\"0x1980\",\"0x19DF\",\"New Tai Lue\"],[\"0x19E0\",\"0x19FF\",\"Khmer Symbols\"],[\"0x1A00\",\"0x1A1F\",\"Buginese\"],[\"0x1D00\",\"0x1D7F\",\"Phonetic Extensions\"],[\"0x1D80\",\"0x1DBF\",\"Phonetic Extensions Supplement\"],[\"0x1DC0\",\"0x1DFF\",\"Combining Diacritical Marks Supplement\"],[\"0x1E00\",\"0x1EFF\",\"Latin Extended Additional\"],[\"0x1F00\",\"0x1FFF\",\"Greek Extended\"],[\"0x2000\",\"0x206F\",\"General Punctuation\"],[\"0x2070\",\"0x209F\",\"Superscripts and Subscripts\"],[\"0x20A0\",\"0x20CF\",\"Currency Symbols\"],[\"0x20D0\",\"0x20FF\",\"Combining Diacritical Marks for Symbols\"],[\"0x2100\",\"0x214F\",\"Letterlike Symbols\"],[\"0x2150\",\"0x218F\",\"Number Forms\"],[\"0x2190\",\"0x21FF\",\"Arrows\"],[\"0x2200\",\"0x22FF\",\"Mathematical Operators\"],[\"0x2300\",\"0x23FF\",\"Miscellaneous Technical\"],[\"0x2400\",\"0x243F\",\"Control Pictures\"],[\"0x2440\",\"0x245F\",\"Optical Character Recognition\"],[\"0x2460\",\"0x24FF\",\"Enclosed Alphanumerics\"],[\"0x2500\",\"0x257F\",\"Box Drawing\"],[\"0x2580\",\"0x259F\",\"Block Elements\"],[\"0x25A0\",\"0x25FF\",\"Geometric Shapes\"],[\"0x2600\",\"0x26FF\",\"Miscellaneous Symbols\"],[\"0x2700\",\"0x27BF\",\"Dingbats\"],[\"0x27C0\",\"0x27EF\",\"Miscellaneous Mathematical Symbols-A\"],[\"0x27F0\",\"0x27FF\",\"Supplemental Arrows-A\"],[\"0x2800\",\"0x28FF\",\"Braille Patterns\"],[\"0x2900\",\"0x297F\",\"Supplemental Arrows-B\"],[\"0x2980\",\"0x29FF\",\"Miscellaneous Mathematical Symbols-B\"],[\"0x2A00\",\"0x2AFF\",\"Supplemental Mathematical Operators\"],[\"0x2B00\",\"0x2BFF\",\"Miscellaneous Symbols and Arrows\"],[\"0x2C00\",\"0x2C5F\",\"Glagolitic\"],[\"0x2C80\",\"0x2CFF\",\"Coptic\"],[\"0x2D00\",\"0x2D2F\",\"Georgian Supplement\"],[\"0x2D30\",\"0x2D7F\",\"Tifinagh\"],[\"0x2D80\",\"0x2DDF\",\"Ethiopic Extended\"],[\"0x2E00\",\"0x2E7F\",\"Supplemental Punctuation\"],[\"0x2E80\",\"0x2EFF\",\"CJK Radicals Supplement\"],[\"0x2F00\",\"0x2FDF\",\"Kangxi Radicals\"],[\"0x2FF0\",\"0x2FFF\",\"Ideographic Description Characters\"],[\"0x3000\",\"0x303F\",\"CJK Symbols and Punctuation\"],[\"0x3040\",\"0x309F\",\"Hiragana\"],[\"0x30A0\",\"0x30FF\",\"Katakana\"],[\"0x3100\",\"0x312F\",\"Bopomofo\"],[\"0x3130\",\"0x318F\",\"Hangul Compatibility Jamo\"],[\"0x3190\",\"0x319F\",\"Kanbun\"],[\"0x31A0\",\"0x31BF\",\"Bopomofo Extended\"],[\"0x31C0\",\"0x31EF\",\"CJK Strokes\"],[\"0x31F0\",\"0x31FF\",\"Katakana Phonetic Extensions\"],[\"0x3200\",\"0x32FF\",\"Enclosed CJK Letters and Months\"],[\"0x3300\",\"0x33FF\",\"CJK Compatibility\"],[\"0x3400\",\"0x4DBF\",\"CJK Unified Ideographs Extension A\"],[\"0x4DC0\",\"0x4DFF\",\"Yijing Hexagram Symbols\"],[\"0x4E00\",\"0x9FFF\",\"CJK Unified Ideographs\"],[\"0xA000\",\"0xA48F\",\"Yi Syllables\"],[\"0xA490\",\"0xA4CF\",\"Yi Radicals\"],[\"0xA700\",\"0xA71F\",\"Modifier Tone Letters\"],[\"0xA800\",\"0xA82F\",\"Syloti Nagri\"],[\"0xAC00\",\"0xD7AF\",\"Hangul Syllables\"],[\"0xD800\",\"0xDB7F\",\"High Surrogates\"],[\"0xDB80\",\"0xDBFF\",\"High Private Use Surrogates\"],[\"0xDC00\",\"0xDFFF\",\"Low Surrogates\"],[\"0xE000\",\"0xF8FF\",\"Private Use Area\"],[\"0xF900\",\"0xFAFF\",\"CJK Compatibility Ideographs\"],[\"0xFB00\",\"0xFB4F\",\"Alphabetic Presentation Forms\"],[\"0xFB50\",\"0xFDFF\",\"Arabic Presentation Forms-A\"],[\"0xFE00\",\"0xFE0F\",\"Variation Selectors\"],[\"0xFE10\",\"0xFE1F\",\"Vertical Forms\"],[\"0xFE20\",\"0xFE2F\",\"Combining Half Marks\"],[\"0xFE30\",\"0xFE4F\",\"CJK Compatibility Forms\"],[\"0xFE50\",\"0xFE6F\",\"Small Form Variants\"],[\"0xFE70\",\"0xFEFF\",\"Arabic Presentation Forms-B\"],[\"0xFF00\",\"0xFFEF\",\"Halfwidth and Fullwidth Forms\"],[\"0xFFF0\",\"0xFFFF\",\"Specials\"],[\"0x10000\",\"0x1007F\",\"Linear B Syllabary\"],[\"0x10080\",\"0x100FF\",\"Linear B Ideograms\"],[\"0x10100\",\"0x1013F\",\"Aegean Numbers\"],[\"0x10140\",\"0x1018F\",\"Ancient Greek Numbers\"],[\"0x10300\",\"0x1032F\",\"Old Italic\"],[\"0x10330\",\"0x1034F\",\"Gothic\"],[\"0x10380\",\"0x1039F\",\"Ugaritic\"],[\"0x103A0\",\"0x103DF\",\"Old Persian\"],[\"0x10400\",\"0x1044F\",\"Deseret\"],[\"0x10450\",\"0x1047F\",\"Shavian\"],[\"0x10480\",\"0x104AF\",\"Osmanya\"],[\"0x10800\",\"0x1083F\",\"Cypriot Syllabary\"],[\"0x10A00\",\"0x10A5F\",\"Kharoshthi\"],[\"0x1D000\",\"0x1D0FF\",\"Byzantine Musical Symbols\"],[\"0x1D100\",\"0x1D1FF\",\"Musical Symbols\"],[\"0x1D200\",\"0x1D24F\",\"Ancient Greek Musical Notation\"],[\"0x1D300\",\"0x1D35F\",\"Tai Xuan Jing Symbols\"],[\"0x1D400\",\"0x1D7FF\",\"Mathematical Alphanumeric Symbols\"],[\"0x20000\",\"0x2A6DF\",\"CJK Unified Ideographs Extension B\"],[\"0x2F800\",\"0x2FA1F\",\"CJK Compatibility Ideographs Supplement\"],[\"0xE0000\",\"0xE007F\",\"Tags\"],[\"0xE0100\",\"0xE01EF\",\"Variation Selectors Supplement\"],[\"0xF0000\",\"0xFFFFF\",\"Supplementary Private Use Area-A\"],[\"0x100000\",\"0x10FFFF\",\"Supplementary Private Use Area-B\"]]", "var dbUnicodeBlocks = require('../data/unicode_blocks.json');\n\n/**\n * This class represents a text sample to be parsed.\n *\n * Largely inspired from the PHP Pear Package Text_LanguageDetect by Nicholas Pisarro\n * Licence: http://www.debian.org/misc/bsd.license BSD\n *\n * @author Francois-Guillaume Ribreau - @FGRibreau\n * @author Ruslan Zavackiy - @Chaoser\n *\n * @see https://github.com/FGRibreau/node-language-detect\n */\nvar Parser = module.exports = function (string) {\n  /**\n   * The size of the trigram data arrays\n   *\n   * @access   private\n   * @var      int\n   */\n  this.threshold = 300;\n\n  /**\n   * stores the trigram ranks of the sample\n   *\n   * @access  private\n   * @var     array\n   */\n  this.trigramRanks = {};\n\n  /**\n   * Whether the parser should compile trigrams\n   *\n   * @access  private\n   * @var     bool\n   */\n  this.compileTrigram = true;\n\n  this.compileUnicode = true;\n  this.unicodeSkipAscii = true;\n  this.unicodeBlocks = {};\n\n  /**\n   * Whether the trigram parser should pad the beginning of the string\n   *\n   * @access  private\n   * @var     bool\n   */\n  this.trigramPadStart = false;\n\n  this.trigram = {};\n\n  /**\n   * the piece of text being parsed\n   *\n   * @access  private\n   * @var     string\n   */\n\n  /**\n   * Constructor\n   *\n   * @access  private\n   * @param   string  string to be parsed\n   */\n  this.string = string ? string.replace(/[~!@#$%^&*()_|+\\-=?;:\",.<>\\{\\}\\[\\]\\\\\\/]/g, ' ') : '';\n};\n\nParser.prototype = {\n  /**\n   * turn on/off padding the beginning of the sample string\n   *\n   * @access  public\n   * @param   bool   true for on, false for off\n   */\n  setPadStart: function (bool) {\n    this.trigramPadStart = bool || true;\n  },\n\n  /**\n   * Returns the trigram ranks for the text sample\n   *\n   * @access  public\n   * @return  array   trigram ranks in the text sample\n   */\n  getTrigramRanks: function () {\n    return this.trigramRanks;\n  },\n\n  getBlockCount: function () {\n    return dbUnicodeBlocks.length;\n  },\n\n  getUnicodeBlocks: function () {\n    return this.unicodeBlocks;\n  },\n\n  /**\n   * Executes the parsing operation\n   *\n   * Be sure to call the set*() functions to set options and the\n   * prepare*() functions first to tell it what kind of data to compute\n   *\n   * Afterwards the get*() functions can be used to access the compiled\n   * information.\n   *\n   * @access public\n   */\n  analyze: function () {\n    var len = this.string.length\n      , byteCounter = 0\n      , a = ' ', b = ' '\n      , dropone, c;\n\n    if (this.compileUnicode) {\n      var blocksCount = dbUnicodeBlocks.length;\n    }\n\n    // trigram startup\n    if (this.compileTrigram) {\n      // initialize them as blank so the parser will skip the first two\n      // (since it skips trigrams with more than  2 contiguous spaces)\n      a = ' ';\n      b = ' ';\n\n      // kludge\n      // if it finds a valid trigram to start and the start pad option is\n      // off, then set a variable that will be used to reduce this\n      // trigram after parsing has finished\n      if (!this.trigramPadStart) {\n        a = this.string.charAt(byteCounter++).toLowerCase();\n\n        if (a != ' ') {\n          b = this.string.charAt(byteCounter).toLowerCase();\n          dropone = ' ' + a + b;\n        }\n\n        byteCounter = 0;\n        a = ' ';\n        b = ' ';\n      }\n    }\n\n    var skippedCount = 0;\n    var unicodeChars = {};\n\n    while (byteCounter < len) {\n      c = this.string.charAt(byteCounter++).toLowerCase();\n\n      // language trigram detection\n      if (this.compileTrigram) {\n        if (!(b == ' ' && (a == ' ' || c == ' '))) {\n          var abc = a + b + c;\n          this.trigram[abc] = this.trigram[abc] ? this.trigram[abc] += 1 : 1;\n        }\n\n        a = b;\n        b = c;\n      }\n\n      if (this.compileUnicode) {\n        var charCode = c.charCodeAt(0);\n\n        if (this.unicodeSkipAscii\n          && c.match(/[a-z ]/i)\n          && (charCode < 65 || charCode > 122 || (charCode > 90 && charCode < 97))\n          && c != \"'\") {\n\n          skippedCount++;\n          continue;\n        }\n\n        unicodeChars[c] = unicodeChars[c] ? unicodeChars[c] += 1 : 1;\n      }\n    }\n\n    this.unicodeBlocks = {};\n\n    if (this.compileUnicode) {\n      var keys = Object.keys(unicodeChars)\n        , keysLength = keys.length;\n\n      for (var i = keysLength; i--;) {\n        var unicode = keys[i].charCodeAt(0)\n          , count = unicodeChars[keys[i]]\n          , search = this.unicodeBlockName(unicode, blocksCount)\n          , blockName = search != -1 ? search[2] : '[Malformatted]';\n\n        this.unicodeBlocks[blockName] = this.unicodeBlocks[blockName] ? this.unicodeBlocks[blockName] += count : count;\n      }\n    }\n\n    // trigram cleanup\n    if (this.compileTrigram) {\n      // pad the end\n      if (b != ' ') {\n        var ab = a + b + ' ';\n        this.trigram[ab] = this.trigram[ab] ? this.trigram[ab] += 1 : 1;\n      }\n\n      // perl compatibility; Language::Guess does not pad the beginning\n      // kludge\n      if (typeof dropone != 'undefined' && this.trigram[dropone] == 1) {\n        delete this.trigram[dropone];\n      }\n\n      if (this.trigram && Object.keys(this.trigram).length > 0) {\n        this.trigramRanks = this.arrRank(this.trigram);\n      } else {\n        this.trigramRanks = {};\n      }\n    }\n  },\n\n  /**\n   * Sorts an array by value breaking ties alphabetically\n   *\n   * @access private\n   * @param arr the array to sort\n   */\n  bubleSort: function (arr) {\n    // should do the same as this perl statement:\n    // sort { $trigrams{$b} == $trigrams{$a} ?  $a cmp $b : $trigrams{$b} <=> $trigrams{$a} }\n\n    // needs to sort by both key and value at once\n    // using the key to break ties for the value\n\n    // converts array into an array of arrays of each key and value\n    // may be a better way of doing this\n    var combined = [];\n\n    for (var key in arr) {\n      combined.push([key, arr[key]]);\n    }\n\n    combined = combined.sort(this.sortFunc);\n\n    var replacement = {};\n\n    var length = combined.length;\n\n    for (var i = 0; i < length; i++) {\n      replacement[combined[i][0]] = combined[i][1];\n    }\n\n    return replacement;\n  },\n\n  /**\n   * Converts a set of trigrams from frequencies to ranks\n   *\n   * Thresholds (cuts off) the list at $this->_threshold\n   *\n   * @access  protected\n   * @param   arr     array of trgram\n   * @return  object  ranks of trigrams\n   */\n  arrRank: function (arr) {\n\n    // sorts alphabetically first as a standard way of breaking rank ties\n    arr = this.bubleSort(arr);\n\n    var rank = {}, i = 0;\n\n    for (var key in arr) {\n      rank[key] = i++;\n\n      // cut off at a standard threshold\n      if (i >= this.threshold) {\n        break;\n      }\n    }\n\n    return rank;\n  },\n\n  /**\n   * Sort function used by bubble sort\n   *\n   * Callback function for usort().\n   *\n   * @access   private\n   * @param    a    first param passed by usort()\n   * @param    b    second param passed by usort()\n   * @return   int  1 if $a is greater, -1 if not\n   *\n   * @see      bubleSort()\n   */\n  sortFunc: function (a, b) {\n    // each is actually a key/value pair, so that it can compare using both\n    var aKey = a[0]\n      , aValue = a[1]\n      , bKey = b[0]\n      , bValue = b[1];\n\n    // if the values are the same, break ties using the key\n    if (aValue == bValue) {\n      return aKey.localeCompare(bKey);\n    } else {\n      return aValue > bValue ? -1 : 1;\n    }\n  },\n\n  unicodeBlockName: function (unicode, blockCount) {\n    if (unicode <= dbUnicodeBlocks[0][1]) {\n      return dbUnicodeBlocks[0];\n    }\n\n    var high = blockCount ? blockCount - 1 : dbUnicodeBlocks.length\n      , low = 1\n      , mid;\n\n    while (low <= high) {\n      mid = Math.floor((low + high) / 2);\n\n      if (unicode < dbUnicodeBlocks[mid][0]) {\n        high = mid - 1;\n      } else if (unicode > dbUnicodeBlocks[mid][1]) {\n        low = mid + 1;\n      } else {\n        return dbUnicodeBlocks[mid];\n      }\n    }\n\n    return -1;\n  }\n};", "var Languages = module.exports = {\n  getCode2:function (lang) {\n    return Languages.nameToCode2[String(lang).toLowerCase()] || null;\n  },\n\n  getCode3: function(lang) {\n    return Languages.nameToCode3[String(lang).toLowerCase()] || null;\n  },\n\n  getName2: function(code) {\n    return Languages.code2ToName[String(code).toLowerCase()] || null;\n  },\n\n  getName3: function(code) {\n    return Languages.code3ToName[String(code).toLowerCase()] || null;\n  },\n\n  nameToCode2:{\n    'albanian':'sq',\n    'arabic':'ar',\n    'azeri':'az',\n    'bengali':'bn',\n    'bulgarian':'bg',\n    'cebuano':null,\n    'croatian':'hr',\n    'czech':'cs',\n    'danish':'da',\n    'dutch':'nl',\n    'english':'en',\n    'estonian':'et',\n    'farsi':'fa',\n    'finnish':'fi',\n    'french':'fr',\n    'german':'de',\n    'hausa':'ha',\n    'hawaiian':null,\n    'hindi':'hi',\n    'hungarian':'hu',\n    'icelandic':'is',\n    'indonesian':'id',\n    'italian':'it',\n    'kazakh':'kk',\n    'kyrgyz':'ky',\n    'latin':'la',\n    'latvian':'lv',\n    'lithuanian':'lt',\n    'macedonian':'mk',\n    'mongolian':'mn',\n    'nepali':'ne',\n    'norwegian':'no',\n    'pashto':'ps',\n    'pidgin':null,\n    'polish':'pl',\n    'portuguese':'pt',\n    'romanian':'ro',\n    'russian':'ru',\n    'serbian':'sr',\n    'slovak':'sk',\n    'slovene':'sl',\n    'somali':'so',\n    'spanish':'es',\n    'swahili':'sw',\n    'swedish':'sv',\n    'tagalog':'tl',\n    'turkish':'tr',\n    'ukrainian':'uk',\n    'urdu':'ur',\n    'uzbek':'uz',\n    'vietnamese':'vi',\n    'welsh':'cy'\n  },\n\n  nameToCode3:{\n    'albanian':'sqi',\n    'arabic':'ara',\n    'azeri':'aze',\n    'bengali':'ben',\n    'bulgarian':'bul',\n    'cebuano':'ceb',\n    'croatian':'hrv',\n    'czech':'ces',\n    'danish':'dan',\n    'dutch':'nld',\n    'english':'eng',\n    'estonian':'est',\n    'farsi':'fas',\n    'finnish':'fin',\n    'french':'fra',\n    'german':'deu',\n    'hausa':'hau',\n    'hawaiian':'haw',\n    'hindi':'hin',\n    'hungarian':'hun',\n    'icelandic':'isl',\n    'indonesian':'ind',\n    'italian':'ita',\n    'kazakh':'kaz',\n    'kyrgyz':'kir',\n    'latin':'lat',\n    'latvian':'lav',\n    'lithuanian':'lit',\n    'macedonian':'mkd',\n    'mongolian':'mon',\n    'nepali':'nep',\n    'norwegian':'nor',\n    'pashto':'pus',\n    'pidgin':'crp',\n    'polish':'pol',\n    'portuguese':'por',\n    'romanian':'ron',\n    'russian':'rus',\n    'serbian':'srp',\n    'slovak':'slk',\n    'slovene':'slv',\n    'somali':'som',\n    'spanish':'spa',\n    'swahili':'swa',\n    'swedish':'swe',\n    'tagalog':'tgl',\n    'turkish':'tur',\n    'ukrainian':'ukr',\n    'urdu':'urd',\n    'uzbek':'uzb',\n    'vietnamese':'vie',\n    'welsh':'cym'\n  },\n  code2ToName:{\n    'ar':'arabic',\n    'az':'azeri',\n    'bg':'bulgarian',\n    'bn':'bengali',\n    'cs':'czech',\n    'cy':'welsh',\n    'da':'danish',\n    'de':'german',\n    'en':'english',\n    'es':'spanish',\n    'et':'estonian',\n    'fa':'farsi',\n    'fi':'finnish',\n    'fr':'french',\n    'ha':'hausa',\n    'hi':'hindi',\n    'hr':'croatian',\n    'hu':'hungarian',\n    'id':'indonesian',\n    'is':'icelandic',\n    'it':'italian',\n    'kk':'kazakh',\n    'ky':'kyrgyz',\n    'la':'latin',\n    'lt':'lithuanian',\n    'lv':'latvian',\n    'mk':'macedonian',\n    'mn':'mongolian',\n    'ne':'nepali',\n    'nl':'dutch',\n    'no':'norwegian',\n    'pl':'polish',\n    'ps':'pashto',\n    'pt':'portuguese',\n    'ro':'romanian',\n    'ru':'russian',\n    'sk':'slovak',\n    'sl':'slovene',\n    'so':'somali',\n    'sq':'albanian',\n    'sr':'serbian',\n    'sv':'swedish',\n    'sw':'swahili',\n    'tl':'tagalog',\n    'tr':'turkish',\n    'uk':'ukrainian',\n    'ur':'urdu',\n    'uz':'uzbek',\n    'vi':'vietnamese'\n  },\n\n  code3ToName:{\n    'ara':'arabic',\n    'aze':'azeri',\n    'ben':'bengali',\n    'bul':'bulgarian',\n    'ceb':'cebuano',\n    'ces':'czech',\n    'crp':'pidgin',\n    'cym':'welsh',\n    'dan':'danish',\n    'deu':'german',\n    'eng':'english',\n    'est':'estonian',\n    'fas':'farsi',\n    'fin':'finnish',\n    'fra':'french',\n    'hau':'hausa',\n    'haw':'hawaiian',\n    'hin':'hindi',\n    'hrv':'croatian',\n    'hun':'hungarian',\n    'ind':'indonesian',\n    'isl':'icelandic',\n    'ita':'italian',\n    'kaz':'kazakh',\n    'kir':'kyrgyz',\n    'lat':'latin',\n    'lav':'latvian',\n    'lit':'lithuanian',\n    'mkd':'macedonian',\n    'mon':'mongolian',\n    'nep':'nepali',\n    'nld':'dutch',\n    'nor':'norwegian',\n    'pol':'polish',\n    'por':'portuguese',\n    'pus':'pashto',\n    'rom':'romanian',\n    'rus':'russian',\n    'slk':'slovak',\n    'slv':'slovene',\n    'som':'somali',\n    'spa':'spanish',\n    'sqi':'albanian',\n    'srp':'serbian',\n    'swa':'swahili',\n    'swe':'swedish',\n    'tgl':'tagalog',\n    'tur':'turkish',\n    'ukr':'ukrainian',\n    'urd':'urdu',\n    'uzb':'uzbek',\n    'vie':'vietnamese'\n  }\n};", "/**\n *\n * Detects the language of a given piece of text.\n *\n * Attempts to detect the language of a sample of text by correlating ranked\n * 3-gram frequencies to a table of 3-gram frequencies of known languages.\n *\n * Implements a version of a technique originally proposed by Cavnar & Trenkle\n * (1994): \"N-Gram-Based Text Categorization\"\n *\n * Largely inspired from the PHP Pear Package Text_LanguageDetect by Nicholas Pisarro\n * Licence: http://www.debian.org/misc/bsd.license BSD\n *\n * @author Francois-Guillaume Ribreau - @FGRibreau\n * @author Ruslan Zavackiy - @Chaoser\n *\n * @see https://github.com/FGRibreau/node-language-detect\n *\n * Installation:\n *  npm install LanguageDetect\n *\n * @example\n * <code>\n * var LanguageDetect = require(\"../LanguageDetect\");\n * var d = new LanguageDetect().detect('This is a test');\n * // d[0] == 'english'\n * // d[1] == 0.5969230769230769\n * // Good score are over 0.3\n * </code>\n */\n\nvar dbLang = require('../data/lang.json')\n  , Parser = require('./Parser')\n  , ISO639 = require('./ISO639');\n\nvar LanguageDetect = module.exports = function (languageType) {\n\n  /**\n   * The trigram data for comparison\n   *\n   * Will be loaded on start from $this->_db_filename\n   *\n   * May be set to a PEAR_Error object if there is an error during its\n   * initialization\n   *\n   * @var      array\n   * @access   private\n   */\n  this.langDb = {};\n\n  /**\n   * The size of the trigram data arrays\n   *\n   * @var     int\n   * @access  private\n   */\n  this.threshold = 300;\n\n  this.useUnicodeNarrowing = true;\n\n  /**\n   * Constructor\n   *\n   * Load the language database.\n   *\n   */\n  this.langDb = dbLang['trigram'];\n  this.unicodeMap = dbLang['trigram-unicodemap'];\n\n  this.languageType = languageType || null;\n};\n\nLanguageDetect.prototype = {\n\n  /**\n   * Returns the number of languages that this object can detect\n   *\n   * @access public\n   * @return int the number of languages\n   */\n  getLanguageCount:function () {\n    return this.getLanguages().length;\n  },\n\n  setLanguageType:function (type) {\n    return this.languageType = type;\n  },\n\n  /**\n   * Returns the list of detectable languages\n   *\n   * @access public\n   * @return object the names of the languages known to this object\n   */\n  getLanguages:function () {\n    return Object.keys(this.langDb);\n  },\n\n  /**\n   * Calculates a linear rank-order distance statistic between two sets of\n   * ranked trigrams\n   *\n   * Sums the differences in rank for each trigram. If the trigram does not\n   * appear in both, consider it a difference of $this->_threshold.\n   *\n   * This distance measure was proposed by Cavnar & Trenkle (1994). Despite\n   * its simplicity it has been shown to be highly accurate for language\n   * identification tasks.\n   *\n   * @access  private\n   * @param   arr1  the reference set of trigram ranks\n   * @param   arr2  the target set of trigram ranks\n   * @return  int   the sum of the differences between the ranks of\n   *                the two trigram sets\n   */\n  distance:function (arr1, arr2) {\n    var me = this\n      , sumdist = 0\n      , keys = Object.keys(arr2)\n      , i;\n\n    for (i = keys.length; i--;) {\n      sumdist += arr1[keys[i]] ? Math.abs(arr2[keys[i]] - arr1[keys[i]]) : me.threshold;\n    }\n\n    return sumdist;\n  },\n\n  /**\n   * Normalizes the score returned by _distance()\n   *\n   * Different if perl compatible or not\n   *\n   * @access  private\n   * @param   score       the score from _distance()\n   * @param   baseCount   the number of trigrams being considered\n   * @return  number      the normalized score\n   *\n   * @see     distance()\n   */\n  normalizeScore:function (score, baseCount) {\n    return 1 - (score / (baseCount || this.threshold) / this.threshold);\n  },\n\n  /**\n   * Detects the closeness of a sample of text to the known languages\n   *\n   * Calculates the statistical difference between the text and\n   * the trigrams for each language, normalizes the score then\n   * returns results for all languages in sorted order\n   *\n   * If perl compatible, the score is 300-0, 0 being most similar.\n   * Otherwise, it's 0-1 with 1 being most similar.\n   *\n   * The $sample text should be at least a few sentences in length;\n   * should be ascii-7 or utf8 encoded, if another and the mbstring extension\n   * is present it will try to detect and convert. However, experience has\n   * shown that mb_detect_encoding() *does not work very well* with at least\n   * some types of encoding.\n   *\n   * @access  public\n   * @param   sample  a sample of text to compare.\n   * @param   limit  if specified, return an array of the most likely\n   *                  $limit languages and their scores.\n   * @return  Array   sorted array of language scores, blank array if no\n   *                  useable text was found, or PEAR_Error if error\n   *                  with the object setup\n   *\n   * @see     distance()\n   */\n  detect:function (sample, limit) {\n    var me = this\n      , scores = [];\n\n    limit = +limit || 0;\n\n    if (sample == '' || String(sample).length < 3) return [];\n\n    var sampleObj = new Parser(sample);\n    sampleObj.setPadStart(true);\n    sampleObj.analyze();\n\n    var trigramFreqs = sampleObj.getTrigramRanks()\n      , trigramCount = Object.keys(trigramFreqs).length;\n\n    if (trigramCount == 0) return [];\n\n    var keys = [], i, lang;\n\n    if (this.useUnicodeNarrowing) {\n      var blocks = sampleObj.getUnicodeBlocks()\n        , languages = Object.keys(blocks)\n        , keysLength = languages.length;\n\n      for (i = keysLength; i--;) {\n        if (this.unicodeMap[languages[i]]) {\n          for (lang in this.unicodeMap[languages[i]]) {\n            if (!~keys.indexOf(lang)) keys.push(lang);\n          }\n        }\n      }\n    } else {\n      keys = me.getLanguages();\n    }\n\n    for (i = keys.length; i--;) {\n      var score = me.normalizeScore(me.distance(me.langDb[keys[i]], trigramFreqs), trigramCount);\n      if (score) scores.push([keys[i], score]);\n    }\n\n    // Sort the array\n    scores.sort(function (a, b) { return b[1] - a[1]; });\n    var scoresLength = scores.length;\n\n    if (!scoresLength) return [];\n\n    switch (me.languageType) {\n      case 'iso2':\n        for (i = scoresLength; i--;) {\n          scores[i][0] = ISO639.getCode2(scores[i][0]);\n        }\n        break;\n      case 'iso3':\n        for (i = scoresLength; i--;) {\n          scores[i][0] = ISO639.getCode3(scores[i][0]);\n        }\n        break;\n    }\n\n    // limit the number of returned scores\n    return limit > 0 ? scores.slice(0, limit) : scores;\n  }\n};\n", "module.exports = require('./lib/LanguageDetect');", "'use strict';\n\nmodule.exports = {\n    ach: {\n        name: 'Acholi',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    af: {\n        name: 'Afrikaans',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    ak: {\n        name: 'Akan',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    am: {\n        name: 'Amharic',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    an: {\n        name: 'Aragonese',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    ar: {\n        name: 'Arabic',\n        examples: [\n            {\n                plural: 0,\n                sample: 0\n            },\n            {\n                plural: 1,\n                sample: 1\n            },\n            {\n                plural: 2,\n                sample: 2\n            },\n            {\n                plural: 3,\n                sample: 3\n            },\n            {\n                plural: 4,\n                sample: 11\n            },\n            {\n                plural: 5,\n                sample: 100\n            }\n        ],\n        nplurals: 6,\n        pluralsText: 'nplurals = 6; plural = (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5)',\n        pluralsFunc: n => (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5)\n    },\n    arn: {\n        name: 'Mapudungun',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    ast: {\n        name: 'Asturian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    ay: {\n        name: 'Aymar\u00E1',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    az: {\n        name: 'Azerbaijani',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    be: {\n        name: 'Belarusian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 5\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: n => (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)\n    },\n    bg: {\n        name: 'Bulgarian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    bn: {\n        name: 'Bengali',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    bo: {\n        name: 'Tibetan',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    br: {\n        name: 'Breton',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    brx: {\n        name: 'Bodo',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    bs: {\n        name: 'Bosnian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 5\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: n => (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)\n    },\n    ca: {\n        name: 'Catalan',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    cgg: {\n        name: 'Chiga',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    cs: {\n        name: 'Czech',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 5\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)',\n        pluralsFunc: n => (n === 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2)\n    },\n    csb: {\n        name: 'Kashubian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 5\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: n => (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)\n    },\n    cy: {\n        name: 'Welsh',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 3\n            },\n            {\n                plural: 3,\n                sample: 8\n            }\n        ],\n        nplurals: 4,\n        pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : (n !== 8 && n !== 11) ? 2 : 3)',\n        pluralsFunc: n => (n === 1 ? 0 : n === 2 ? 1 : n !== 8 && n !== 11 ? 2 : 3)\n    },\n    da: {\n        name: 'Danish',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    de: {\n        name: 'German',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    doi: {\n        name: 'Dogri',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    dz: {\n        name: 'Dzongkha',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    el: {\n        name: 'Greek',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    en: {\n        name: 'English',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    eo: {\n        name: 'Esperanto',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    es: {\n        name: 'Spanish',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    et: {\n        name: 'Estonian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    eu: {\n        name: 'Basque',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    fa: {\n        name: 'Persian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    ff: {\n        name: 'Fulah',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    fi: {\n        name: 'Finnish',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    fil: {\n        name: 'Filipino',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    fo: {\n        name: 'Faroese',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    fr: {\n        name: 'French',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    fur: {\n        name: 'Friulian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    fy: {\n        name: 'Frisian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    ga: {\n        name: 'Irish',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 3\n            },\n            {\n                plural: 3,\n                sample: 7\n            },\n            {\n                plural: 4,\n                sample: 11\n            }\n        ],\n        nplurals: 5,\n        pluralsText: 'nplurals = 5; plural = (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4)',\n        pluralsFunc: n => (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4)\n    },\n    gd: {\n        name: 'Scottish Gaelic',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 3\n            },\n            {\n                plural: 3,\n                sample: 20\n            }\n        ],\n        nplurals: 4,\n        pluralsText: 'nplurals = 4; plural = ((n === 1 || n === 11) ? 0 : (n === 2 || n === 12) ? 1 : (n > 2 && n < 20) ? 2 : 3)',\n        pluralsFunc: n => (n === 1 || n === 11 ? 0 : n === 2 || n === 12 ? 1 : n > 2 && n < 20 ? 2 : 3)\n    },\n    gl: {\n        name: 'Galician',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    gu: {\n        name: 'Gujarati',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    gun: {\n        name: 'Gun',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    ha: {\n        name: 'Hausa',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    he: {\n        name: 'Hebrew',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    hi: {\n        name: 'Hindi',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    hne: {\n        name: 'Chhattisgarhi',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    hr: {\n        name: 'Croatian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 5\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: n => (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)\n    },\n    hu: {\n        name: 'Hungarian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    hy: {\n        name: 'Armenian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    id: {\n        name: 'Indonesian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    is: {\n        name: 'Icelandic',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n % 10 !== 1 || n % 100 === 11)',\n        pluralsFunc: n => n % 10 !== 1 || n % 100 === 11\n    },\n    it: {\n        name: 'Italian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    ja: {\n        name: 'Japanese',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    jbo: {\n        name: 'Lojban',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    jv: {\n        name: 'Javanese',\n        examples: [\n            {\n                plural: 0,\n                sample: 0\n            },\n            {\n                plural: 1,\n                sample: 1\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 0)',\n        pluralsFunc: n => n !== 0\n    },\n    ka: {\n        name: 'Georgian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    kk: {\n        name: 'Kazakh',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    km: {\n        name: 'Khmer',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    kn: {\n        name: 'Kannada',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    ko: {\n        name: 'Korean',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    ku: {\n        name: 'Kurdish',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    kw: {\n        name: 'Cornish',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 3\n            },\n            {\n                plural: 3,\n                sample: 4\n            }\n        ],\n        nplurals: 4,\n        pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3)',\n        pluralsFunc: n => (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3)\n    },\n    ky: {\n        name: 'Kyrgyz',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    lb: {\n        name: 'Letzeburgesch',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    ln: {\n        name: 'Lingala',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    lo: {\n        name: 'Lao',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    lt: {\n        name: 'Lithuanian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 10\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: n => (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)\n    },\n    lv: {\n        name: 'Latvian',\n        examples: [\n            {\n                plural: 2,\n                sample: 0\n            },\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2)',\n        pluralsFunc: n => (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2)\n    },\n    mai: {\n        name: 'Maithili',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    mfe: {\n        name: 'Mauritian Creole',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    mg: {\n        name: 'Malagasy',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    mi: {\n        name: 'Maori',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    mk: {\n        name: 'Macedonian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n === 1 || n % 10 === 1 ? 0 : 1)',\n        pluralsFunc: n => (n === 1 || n % 10 === 1 ? 0 : 1)\n    },\n    ml: {\n        name: 'Malayalam',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    mn: {\n        name: 'Mongolian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    mni: {\n        name: 'Manipuri',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    mnk: {\n        name: 'Mandinka',\n        examples: [\n            {\n                plural: 0,\n                sample: 0\n            },\n            {\n                plural: 1,\n                sample: 1\n            },\n            {\n                plural: 2,\n                sample: 2\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n === 0 ? 0 : n === 1 ? 1 : 2)',\n        pluralsFunc: n => (n === 0 ? 0 : n === 1 ? 1 : 2)\n    },\n    mr: {\n        name: 'Marathi',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    ms: {\n        name: 'Malay',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    mt: {\n        name: 'Maltese',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 11\n            },\n            {\n                plural: 3,\n                sample: 20\n            }\n        ],\n        nplurals: 4,\n        pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 0 || ( n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20 ) ? 2 : 3)',\n        pluralsFunc: n => (n === 1 ? 0 : n === 0 || (n % 100 > 1 && n % 100 < 11) ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3)\n    },\n    my: {\n        name: 'Burmese',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    nah: {\n        name: 'Nahuatl',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    nap: {\n        name: 'Neapolitan',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    nb: {\n        name: 'Norwegian Bokmal',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    ne: {\n        name: 'Nepali',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    nl: {\n        name: 'Dutch',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    nn: {\n        name: 'Norwegian Nynorsk',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    no: {\n        name: 'Norwegian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    nso: {\n        name: 'Northern Sotho',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    oc: {\n        name: 'Occitan',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    or: {\n        name: 'Oriya',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    pa: {\n        name: 'Punjabi',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    pap: {\n        name: 'Papiamento',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    pl: {\n        name: 'Polish',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 5\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: n => (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)\n    },\n    pms: {\n        name: 'Piemontese',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    ps: {\n        name: 'Pashto',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    pt: {\n        name: 'Portuguese',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    rm: {\n        name: 'Romansh',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    ro: {\n        name: 'Romanian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 20\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n === 0 || (n % 100 > 0 && n % 100 < 20)) ? 1 : 2)',\n        pluralsFunc: n => (n === 1 ? 0 : n === 0 || (n % 100 > 0 && n % 100 < 20) ? 1 : 2)\n    },\n    ru: {\n        name: 'Russian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 5\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: n => (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)\n    },\n    rw: {\n        name: 'Kinyarwanda',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    sah: {\n        name: 'Yakut',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    sat: {\n        name: 'Santali',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    sco: {\n        name: 'Scots',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    sd: {\n        name: 'Sindhi',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    se: {\n        name: 'Northern Sami',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    si: {\n        name: 'Sinhala',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    sk: {\n        name: 'Slovak',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 5\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)',\n        pluralsFunc: n => (n === 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2)\n    },\n    sl: {\n        name: 'Slovenian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 3\n            },\n            {\n                plural: 3,\n                sample: 5\n            }\n        ],\n        nplurals: 4,\n        pluralsText: 'nplurals = 4; plural = (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3)',\n        pluralsFunc: n => (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3)\n    },\n    so: {\n        name: 'Somali',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    son: {\n        name: 'Songhay',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    sq: {\n        name: 'Albanian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    sr: {\n        name: 'Serbian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 5\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: n => (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)\n    },\n    su: {\n        name: 'Sundanese',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    sv: {\n        name: 'Swedish',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    sw: {\n        name: 'Swahili',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    ta: {\n        name: 'Tamil',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    te: {\n        name: 'Telugu',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    tg: {\n        name: 'Tajik',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    th: {\n        name: 'Thai',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    ti: {\n        name: 'Tigrinya',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    tk: {\n        name: 'Turkmen',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    tr: {\n        name: 'Turkish',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    tt: {\n        name: 'Tatar',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    ug: {\n        name: 'Uyghur',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    uk: {\n        name: 'Ukrainian',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            },\n            {\n                plural: 2,\n                sample: 5\n            }\n        ],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: n => (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)\n    },\n    ur: {\n        name: 'Urdu',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    uz: {\n        name: 'Uzbek',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    vi: {\n        name: 'Vietnamese',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    wa: {\n        name: 'Walloon',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: n => n > 1\n    },\n    wo: {\n        name: 'Wolof',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    },\n    yo: {\n        name: 'Yoruba',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            },\n            {\n                plural: 1,\n                sample: 2\n            }\n        ],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: n => n !== 1\n    },\n    zh: {\n        name: 'Chinese',\n        examples: [\n            {\n                plural: 0,\n                sample: 1\n            }\n        ],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: () => 0\n    }\n};\n", "'use strict';\n\nlet plurals = require('./plurals');\n\nclass Gettext {\n    /**\n     * Returns the language code part of a locale\n     *\n     * @example\n     *     Gettext.getLanguageCode('sv-SE')\n     *     // -> \"sv\"\n     *\n     * @private\n     * @param   {String} locale  A case-insensitive locale string\n     * @returns {String} A language code\n     */\n    static getLanguageCode(locale) {\n        return locale.split(/[-_]/)[0].toLowerCase();\n    }\n\n    /**\n     * Creates and returns a new Gettext instance.\n     *\n     * @constructor\n     * @param  {Object}  [options]             A set of options\n     * @param  {String}  options.sourceLocale  The locale that the source code and its\n     *                                         texts are written in. Translations for\n     *                                         this locale is not necessary.\n     * @param  {Boolean} options.debug         Whether to output debug info into the\n     *                                         console.\n     * @return {Object}  A Gettext instance\n     */\n    constructor(options) {\n        options = options || {};\n\n        this.catalogs = {};\n        this.locale = '';\n        this.domain = 'messages';\n\n        this.listeners = [];\n\n        // Set source locale\n        this.sourceLocale = '';\n        if (options.sourceLocale) {\n            if (typeof options.sourceLocale === 'string') {\n                this.sourceLocale = options.sourceLocale;\n            } else {\n                this.warn(`Invalid sourceLocale option: Expected a string value.`);\n            }\n        }\n\n        // Set debug flag\n        this.debug = 'debug' in options && options.debug === true;\n    }\n\n    /**\n     * Adds an event listener.\n     *\n     * @param  {String}   eventName  An event name\n     * @param  {Function} callback   An event handler function\n     */\n    on(eventName, callback) {\n        this.listeners.push({\n            eventName,\n            callback\n        });\n    }\n\n    /**\n     * Removes an event listener.\n     *\n     * @param  {String}   eventName  An event name\n     * @param  {Function} callback   A previously registered event handler function\n     */\n    off(eventName, callback) {\n        this.listeners = this.listeners.filter(listener => (listener.eventName === eventName && listener.callback === callback) === false);\n    }\n\n    /**\n     * Emits an event to all registered event listener.\n     *\n     * @private\n     * @param  {String} eventName  An event name\n     * @param  {any}    eventData  Data to pass to event listeners\n     */\n    emit(eventName, eventData) {\n        for (let i = 0; i < this.listeners.length; i++) {\n            let listener = this.listeners[i];\n            if (listener.eventName === eventName) {\n                listener.callback(eventData);\n            }\n        }\n    }\n\n    /**\n     * Logs a warning to the console if debug mode is enabled.\n     *\n     * @ignore\n     * @param  {String} message  A warning message\n     */\n    warn(message, options) {\n        const { doThrow } = options || {};\n        if (this.debug) {\n            console.warn(message);\n        }\n\n        const error = new Error(message);\n\n        if (doThrow) {\n            throw error;\n        }\n\n        this.emit('error', error);\n    }\n\n    /**\n     * Stores a set of translations in the set of gettext\n     * catalogs.\n     *\n     * @example\n     *     gt.addTranslations('sv-SE', 'messages', translationsObject)\n     *\n     * @param {String} locale        A locale string\n     * @param {String} domain        A domain name\n     * @param {Object} translations  An object of gettext-parser JSON shape\n     */\n    addTranslations(locale, domain, translations) {\n        if (typeof locale !== 'string') {\n            this.warn('Invalid argument for locale in addTranslations(): Expected a string, but received a ${typeof locale}.');\n            return;\n        }\n\n        if (typeof domain !== 'string') {\n            this.warn('Invalid argument for domain in addTranslations(): Expected a string, but received a ${typeof domain}.');\n            return;\n        }\n\n        if (locale in {}) {\n            this.warn(`Invalid locale: \"${locale}\" is a reserved keyword and cannot be used as a locale.`);\n            return;\n        }\n\n        if (domain in {}) {\n            this.warn(`Invalid domain: \"${domain}\" is a reserved keyword and cannot be used as a domain.`);\n            return;\n        }\n\n        if (!this.catalogs[locale]) {\n            this.catalogs[locale] = {};\n        }\n\n        this.catalogs[locale][domain] = translations;\n    }\n\n    /**\n     * Sets the locale to get translated messages for.\n     *\n     * @example\n     *     gt.setLocale('sv-SE')\n     *\n     * @param {String} locale  A locale\n     */\n    setLocale(locale) {\n        if (typeof locale !== 'string') {\n            this.warn('Invalid argument for setLocale(): Expected a string, but received a ${typeof locale}.');\n            return;\n        }\n\n        if (locale in {}) {\n            this.warn(`Invalid locale: \"${locale}\" is a reserved keyword and cannot be used as a locale.`);\n            return;\n        }\n\n        if (locale.trim() === '') {\n            this.warn(`Invalid locale: The locale cannot be an empty string.`);\n        }\n\n        if (locale !== this.sourceLocale && !this.catalogs[locale]) {\n            this.warn(`Locale \"${locale}\" not found: No translations have been added for this locale.`);\n        }\n\n        this.locale = locale;\n    }\n\n    /**\n     * Sets the default gettext domain.\n     *\n     * @example\n     *     gt.setTextDomain('domainname')\n     *\n     * @param {String} domain  A gettext domain name\n     */\n    setTextDomain(domain) {\n        if (typeof domain !== 'string') {\n            this.warn('Invalid argument for setTextDomain(): Expected a string, but received a ${typeof domain}.');\n            return;\n        }\n\n        if (domain in {}) {\n            this.warn(`Invalid domain: \"${domain}\" is a reserved keyword and cannot be used as a domain.`);\n            return;\n        }\n\n        if (domain.trim() === '') {\n            this.warn(`Invalid domain: The domain cannot be an empty string.`);\n        }\n\n        this.domain = domain;\n    }\n\n    /**\n     * Translates a string using the default textdomain\n     *\n     * @example\n     *     gt.gettext('Some text')\n     *\n     * @param  {String} msgid  String to be translated\n     * @return {String} Translation or the original string if no translation was found\n     */\n    gettext(msgid) {\n        return this.dnpgettext(this.domain, '', msgid);\n    }\n\n    /**\n     * Translates a string using a specific domain\n     *\n     * @example\n     *     gt.dgettext('domainname', 'Some text')\n     *\n     * @param  {String} domain  A gettext domain name\n     * @param  {String} msgid   String to be translated\n     * @return {String} Translation or the original string if no translation was found\n     */\n    dgettext(domain, msgid) {\n        return this.dnpgettext(domain, '', msgid);\n    }\n\n    /**\n     * Translates a plural string using the default textdomain\n     *\n     * @example\n     *     gt.ngettext('One thing', 'Many things', numberOfThings)\n     *\n     * @param  {String} msgid        String to be translated when count is not plural\n     * @param  {String} msgidPlural  String to be translated when count is plural\n     * @param  {Number} count        Number count for the plural\n     * @return {String} Translation or the original string if no translation was found\n     */\n    ngettext(msgid, msgidPlural, count) {\n        return this.dnpgettext(this.domain, '', msgid, msgidPlural, count);\n    }\n\n    /**\n     * Translates a plural string using a specific textdomain\n     *\n     * @example\n     *     gt.dngettext('domainname', 'One thing', 'Many things', numberOfThings)\n     *\n     * @param  {String} domain       A gettext domain name\n     * @param  {String} msgid        String to be translated when count is not plural\n     * @param  {String} msgidPlural  String to be translated when count is plural\n     * @param  {Number} count        Number count for the plural\n     * @return {String} Translation or the original string if no translation was found\n     */\n    dngettext(domain, msgid, msgidPlural, count) {\n        return this.dnpgettext(domain, '', msgid, msgidPlural, count);\n    }\n\n    /**\n     * Translates a string from a specific context using the default textdomain\n     *\n     * @example\n     *    gt.pgettext('sports', 'Back')\n     *\n     * @param  {String} msgctxt  Translation context\n     * @param  {String} msgid    String to be translated\n     * @return {String} Translation or the original string if no translation was found\n     */\n    pgettext(msgctxt, msgid) {\n        return this.dnpgettext(this.domain, msgctxt, msgid);\n    }\n\n    /**\n     * Translates a string from a specific context using s specific textdomain\n     *\n     * @example\n     *     gt.dpgettext('domainname', 'sports', 'Back')\n     *\n     * @param  {String} domain   A gettext domain name\n     * @param  {String} msgctxt  Translation context\n     * @param  {String} msgid    String to be translated\n     * @return {String} Translation or the original string if no translation was found\n     */\n    dpgettext(domain, msgctxt, msgid) {\n        return this.dnpgettext(domain, msgctxt, msgid);\n    }\n\n    /**\n     * Translates a plural string from a specific context using the default textdomain\n     *\n     * @example\n     *     gt.npgettext('sports', 'Back', '%d backs', numberOfBacks)\n     *\n     * @param  {String} msgctxt      Translation context\n     * @param  {String} msgid        String to be translated when count is not plural\n     * @param  {String} msgidPlural  String to be translated when count is plural\n     * @param  {Number} count        Number count for the plural\n     * @return {String} Translation or the original string if no translation was found\n     */\n    npgettext(msgctxt, msgid, msgidPlural, count) {\n        return this.dnpgettext(this.domain, msgctxt, msgid, msgidPlural, count);\n    }\n\n    /**\n     * Translates a plural string from a specifi context using a specific textdomain\n     *\n     * @example\n     *     gt.dnpgettext('domainname', 'sports', 'Back', '%d backs', numberOfBacks)\n     *\n     * @param  {String} domain       A gettext domain name\n     * @param  {String} msgctxt      Translation context\n     * @param  {String} msgid        String to be translated\n     * @param  {String} msgidPlural  If no translation was found, return this on count!=1\n     * @param  {Number} count        Number count for the plural\n     * @return {String} Translation or the original string if no translation was found\n     */\n    dnpgettext(domain, msgctxt, msgid, msgidPlural, count) {\n        return this._ldnpgettext(this.locale, domain, msgctxt, msgid, msgidPlural, count);\n    }\n\n    useLocale(locale) {\n        if (typeof locale !== 'string') {\n            this.warn('Invalid argument for setLocale(): Expected a string, but received a ${typeof locale}.', { doThrow: true });\n            return;\n        }\n\n        if (locale in {}) {\n            this.warn(`Invalid locale: \"${locale}\" is a reserved keyword and cannot be used as a locale.`, { doThrow: true });\n            return;\n        }\n\n        if (locale.trim() === '') {\n            this.warn(`Invalid locale: The locale cannot be an empty string.`);\n        }\n\n        if (locale !== this.sourceLocale && !this.catalogs[locale]) {\n            this.warn(`Locale \"${locale}\" not found: No translations have been added for this locale.`);\n        }\n\n        return {\n            gettext: msgid => this._ldnpgettext(locale, this.domain, '', msgid),\n            dgettext: (domain, msgid) => this._ldnpgettext(locale, domain, '', msgid),\n            ngettext: (msgid, msgidPlural, count) => this._ldnpgettext(locale, this.domain, '', msgid, msgidPlural, count),\n            dngettext: (domain, msgid, msgidPlural, count) => this._ldnpgettext(locale, domain, '', msgid, msgidPlural, count),\n            pgettext: (msgctxt, msgid) => this._ldnpgettext(locale, this.domain, msgctxt, msgid),\n            dpgettext: (domain, msgctxt, msgid) => this._ldnpgettext(locale, domain, msgctxt, msgid),\n            npgettext: (msgctxt, msgid, msgidPlural, count) => this._ldnpgettext(locale, this.domain, msgctxt, msgid, msgidPlural, count),\n            dnpgettext: (domain, msgctxt, msgid, msgidPlural, count) => this._ldnpgettext(locale, domain, msgctxt, msgid, msgidPlural, count)\n        };\n    }\n\n    /**\n     * Retrieves comments object for a translation. The comments object\n     * has the shape `{ translator, extracted, reference, flag, previous }`.\n     *\n     * @example\n     *     const comment = gt.getComment('domainname', 'sports', 'Backs')\n     *\n     * @private\n     * @param  {String} domain   A gettext domain name\n     * @param  {String} msgctxt  Translation context\n     * @param  {String} msgid    String to be translated\n     * @return {Object} Comments object or false if not found\n     */\n    getComment(domain, msgctxt, msgid) {\n        let translation;\n\n        translation = this._getTranslation(this.locale, domain, msgctxt, msgid);\n        if (translation) {\n            return translation.comments || {};\n        }\n\n        return {};\n    }\n\n    /**\n     * Translates a plural string from a specifi context using a specific textdomain\n     *\n     * @example\n     *     gt.dnpgettext('domainname', 'sports', 'Back', '%d backs', numberOfBacks)\n     *\n     * @param  {String} locale       A locale string\n     * @param  {String} domain       A gettext domain name\n     * @param  {String} msgctxt      Translation context\n     * @param  {String} msgid        String to be translated\n     * @param  {String} msgidPlural  If no translation was found, return this on count!=1\n     * @param  {Number} count        Number count for the plural\n     * @return {String} Translation or the original string if no translation was found\n     */\n    _ldnpgettext(locale, domain, msgctxt, msgid, msgidPlural, count) {\n        let defaultTranslation = msgid;\n        let translation;\n        let index;\n\n        msgctxt = msgctxt || '';\n\n        if (!isNaN(count) && count !== 1) {\n            defaultTranslation = msgidPlural || msgid;\n        }\n\n        translation = this._getTranslation(locale, domain, msgctxt, msgid);\n\n        if (translation) {\n            if (typeof count === 'number') {\n                let pluralsFunc = plurals[Gettext.getLanguageCode(locale)].pluralsFunc;\n                index = pluralsFunc(count);\n                if (typeof index === 'boolean') {\n                    index = index ? 1 : 0;\n                }\n            } else {\n                index = 0;\n            }\n\n            return translation.msgstr[index] || defaultTranslation;\n        } else if (!this.sourceLocale || locale !== this.sourceLocale) {\n            this.warn(`Translation not found for msgid \"${msgid}\" with context \"${msgctxt}\" in domain \"${domain}\".`);\n        }\n\n        return defaultTranslation;\n    }\n\n    /**\n     * Retrieves translation object from the domain and context\n     *\n     * @private\n     * @param  {String} locale   A locale string\n     * @param  {String} domain   A gettext domain name\n     * @param  {String} msgctxt  Translation context\n     * @param  {String} msgid    String to be translated\n     * @return {Object} Translation object or false if not found\n     */\n    _getTranslation(locale, domain, msgctxt, msgid) {\n        msgctxt = msgctxt || '';\n\n        return this.catalogs?.[locale]?.[domain]?.translations?.[msgctxt]?.[msgid];\n    }\n}\n\nmodule.exports = Gettext;\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n  if (!buffer.hasOwnProperty(key)) continue\n  if (key === 'SlowBuffer' || key === 'Buffer') continue\n  safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n  if (!Buffer.hasOwnProperty(key)) continue\n  if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n  Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n  Safer.from = function (value, encodingOrOffset, length) {\n    if (typeof value === 'number') {\n      throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n    }\n    if (value && typeof value.length === 'undefined') {\n      throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n    }\n    return Buffer(value, encodingOrOffset, length)\n  }\n}\n\nif (!Safer.alloc) {\n  Safer.alloc = function (size, fill, encoding) {\n    if (typeof size !== 'number') {\n      throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n    }\n    if (size < 0 || size >= 2 * (1 << 30)) {\n      throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n    }\n    var buf = Buffer(size)\n    if (!fill || fill.length === 0) {\n      buf.fill(0)\n    } else if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n    return buf\n  }\n}\n\nif (!safer.kStringMaxLength) {\n  try {\n    safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n  } catch (e) {\n    // we can't determine kStringMaxLength in environments where process.binding\n    // is unsupported, so let's not set it\n  }\n}\n\nif (!safer.constants) {\n  safer.constants = {\n    MAX_LENGTH: safer.kMaxLength\n  }\n  if (safer.kStringMaxLength) {\n    safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n  }\n}\n\nmodule.exports = safer\n", "\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n    this.encoder = encoder;\n    this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n    if (this.addBOM) {\n        str = BOMChar + str;\n        this.addBOM = false;\n    }\n\n    return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n    this.decoder = decoder;\n    this.pass = false;\n    this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n    var res = this.decoder.write(buf);\n    if (this.pass || !res)\n        return res;\n\n    if (res[0] === BOMChar) {\n        res = res.slice(1);\n        if (typeof this.options.stripBOM === 'function')\n            this.options.stripBOM();\n    }\n\n    this.pass = true;\n    return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n    return this.decoder.end();\n}\n\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\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\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n    // Encodings\n    utf8:   { type: \"_internal\", bomAware: true},\n    cesu8:  { type: \"_internal\", bomAware: true},\n    unicode11utf8: \"utf8\",\n\n    ucs2:   { type: \"_internal\", bomAware: true},\n    utf16le: \"ucs2\",\n\n    binary: { type: \"_internal\" },\n    base64: { type: \"_internal\" },\n    hex:    { type: \"_internal\" },\n\n    // Codec.\n    _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n    this.enc = codecOptions.encodingName;\n    this.bomAware = codecOptions.bomAware;\n\n    if (this.enc === \"base64\")\n        this.encoder = InternalEncoderBase64;\n    else if (this.enc === \"cesu8\") {\n        this.enc = \"utf8\"; // Use utf8 for decoding.\n        this.encoder = InternalEncoderCesu8;\n\n        // Add decoder for versions of Node not supporting CESU-8\n        if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '\uD83D\uDCA9') {\n            this.decoder = InternalDecoderCesu8;\n            this.defaultCharUnicode = iconv.defaultCharUnicode;\n        }\n    }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n    StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n    this.decoder = new StringDecoder(codec.enc);\n}\n\nInternalDecoder.prototype.write = function(buf) {\n    if (!Buffer.isBuffer(buf)) {\n        buf = Buffer.from(buf);\n    }\n\n    return this.decoder.write(buf);\n}\n\nInternalDecoder.prototype.end = function() {\n    return this.decoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n    this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n    return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n    this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n    str = this.prevStr + str;\n    var completeQuads = str.length - (str.length % 4);\n    this.prevStr = str.slice(completeQuads);\n    str = str.slice(0, completeQuads);\n\n    return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n    return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n    for (var i = 0; i < str.length; i++) {\n        var charCode = str.charCodeAt(i);\n        // Naive implementation, but it works because CESU-8 is especially easy\n        // to convert from UTF-16 (which all JS strings are encoded in).\n        if (charCode < 0x80)\n            buf[bufIdx++] = charCode;\n        else if (charCode < 0x800) {\n            buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n        else { // charCode will always be < 0x10000 in javascript.\n            buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n            buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n    }\n    return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n    this.acc = 0;\n    this.contBytes = 0;\n    this.accBytes = 0;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n    var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n        res = '';\n    for (var i = 0; i < buf.length; i++) {\n        var curByte = buf[i];\n        if ((curByte & 0xC0) !== 0x80) { // Leading byte\n            if (contBytes > 0) { // Previous code is invalid\n                res += this.defaultCharUnicode;\n                contBytes = 0;\n            }\n\n            if (curByte < 0x80) { // Single-byte code\n                res += String.fromCharCode(curByte);\n            } else if (curByte < 0xE0) { // Two-byte code\n                acc = curByte & 0x1F;\n                contBytes = 1; accBytes = 1;\n            } else if (curByte < 0xF0) { // Three-byte code\n                acc = curByte & 0x0F;\n                contBytes = 2; accBytes = 1;\n            } else { // Four or more are not supported for CESU-8.\n                res += this.defaultCharUnicode;\n            }\n        } else { // Continuation byte\n            if (contBytes > 0) { // We're waiting for it.\n                acc = (acc << 6) | (curByte & 0x3f);\n                contBytes--; accBytes++;\n                if (contBytes === 0) {\n                    // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n                    if (accBytes === 2 && acc < 0x80 && acc > 0)\n                        res += this.defaultCharUnicode;\n                    else if (accBytes === 3 && acc < 0x800)\n                        res += this.defaultCharUnicode;\n                    else\n                        // Actually add character.\n                        res += String.fromCharCode(acc);\n                }\n            } else { // Unexpected continuation byte\n                res += this.defaultCharUnicode;\n            }\n        }\n    }\n    this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n    return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n    var res = 0;\n    if (this.contBytes > 0)\n        res += this.defaultCharUnicode;\n    return res;\n}\n", "'use strict';\n\nvar Buffer = require('safer-buffer').Buffer;\n\n// == UTF32-LE/BE codec. ==========================================================\n\nexports._utf32 = Utf32Codec;\n\nfunction Utf32Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n    this.bomAware = true;\n    this.isLE = codecOptions.isLE;\n}\n\nexports.utf32le = { type: '_utf32', isLE: true };\nexports.utf32be = { type: '_utf32', isLE: false };\n\n// Aliases\nexports.ucs4le = 'utf32le';\nexports.ucs4be = 'utf32be';\n\nUtf32Codec.prototype.encoder = Utf32Encoder;\nUtf32Codec.prototype.decoder = Utf32Decoder;\n\n// -- Encoding\n\nfunction Utf32Encoder(options, codec) {\n    this.isLE = codec.isLE;\n    this.highSurrogate = 0;\n}\n\nUtf32Encoder.prototype.write = function(str) {\n    var src = Buffer.from(str, 'ucs2');\n    var dst = Buffer.alloc(src.length * 2);\n    var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;\n    var offset = 0;\n\n    for (var i = 0; i < src.length; i += 2) {\n        var code = src.readUInt16LE(i);\n        var isHighSurrogate = (0xD800 <= code && code < 0xDC00);\n        var isLowSurrogate = (0xDC00 <= code && code < 0xE000);\n\n        if (this.highSurrogate) {\n            if (isHighSurrogate || !isLowSurrogate) {\n                // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low\n                // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character\n                // (technically wrong, but expected by some applications, like Windows file names).\n                write32.call(dst, this.highSurrogate, offset);\n                offset += 4;\n            }\n            else {\n                // Create 32-bit value from high and low surrogates;\n                var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000;\n\n                write32.call(dst, codepoint, offset);\n                offset += 4;\n                this.highSurrogate = 0;\n\n                continue;\n            }\n        }\n\n        if (isHighSurrogate)\n            this.highSurrogate = code;\n        else {\n            // Even if the current character is a low surrogate, with no previous high surrogate, we'll\n            // encode it as a semi-invalid stand-alone character for the same reasons expressed above for\n            // unpaired high surrogates.\n            write32.call(dst, code, offset);\n            offset += 4;\n            this.highSurrogate = 0;\n        }\n    }\n\n    if (offset < dst.length)\n        dst = dst.slice(0, offset);\n\n    return dst;\n};\n\nUtf32Encoder.prototype.end = function() {\n    // Treat any leftover high surrogate as a semi-valid independent character.\n    if (!this.highSurrogate)\n        return;\n\n    var buf = Buffer.alloc(4);\n\n    if (this.isLE)\n        buf.writeUInt32LE(this.highSurrogate, 0);\n    else\n        buf.writeUInt32BE(this.highSurrogate, 0);\n\n    this.highSurrogate = 0;\n\n    return buf;\n};\n\n// -- Decoding\n\nfunction Utf32Decoder(options, codec) {\n    this.isLE = codec.isLE;\n    this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);\n    this.overflow = [];\n}\n\nUtf32Decoder.prototype.write = function(src) {\n    if (src.length === 0)\n        return '';\n\n    var i = 0;\n    var codepoint = 0;\n    var dst = Buffer.alloc(src.length + 4);\n    var offset = 0;\n    var isLE = this.isLE;\n    var overflow = this.overflow;\n    var badChar = this.badChar;\n\n    if (overflow.length > 0) {\n        for (; i < src.length && overflow.length < 4; i++)\n            overflow.push(src[i]);\n        \n        if (overflow.length === 4) {\n            // NOTE: codepoint is a signed int32 and can be negative.\n            // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).\n            if (isLE) {\n                codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24);\n            } else {\n                codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24);\n            }\n            overflow.length = 0;\n\n            offset = _writeCodepoint(dst, offset, codepoint, badChar);\n        }\n    }\n\n    // Main loop. Should be as optimized as possible.\n    for (; i < src.length - 3; i += 4) {\n        // NOTE: codepoint is a signed int32 and can be negative.\n        if (isLE) {\n            codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24);\n        } else {\n            codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24);\n        }\n        offset = _writeCodepoint(dst, offset, codepoint, badChar);\n    }\n\n    // Keep overflowing bytes.\n    for (; i < src.length; i++) {\n        overflow.push(src[i]);\n    }\n\n    return dst.slice(0, offset).toString('ucs2');\n};\n\nfunction _writeCodepoint(dst, offset, codepoint, badChar) {\n    // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.\n    if (codepoint < 0 || codepoint > 0x10FFFF) {\n        // Not a valid Unicode codepoint\n        codepoint = badChar;\n    } \n\n    // Ephemeral Planes: Write high surrogate.\n    if (codepoint >= 0x10000) {\n        codepoint -= 0x10000;\n\n        var high = 0xD800 | (codepoint >> 10);\n        dst[offset++] = high & 0xff;\n        dst[offset++] = high >> 8;\n\n        // Low surrogate is written below.\n        var codepoint = 0xDC00 | (codepoint & 0x3FF);\n    }\n\n    // Write BMP char or low surrogate.\n    dst[offset++] = codepoint & 0xff;\n    dst[offset++] = codepoint >> 8;\n\n    return offset;\n};\n\nUtf32Decoder.prototype.end = function() {\n    this.overflow.length = 0;\n};\n\n// == UTF-32 Auto codec =============================================================\n// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.\n// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32\n// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});\n\n// Encoder prepends BOM (which can be overridden with (addBOM: false}).\n\nexports.utf32 = Utf32AutoCodec;\nexports.ucs4 = 'utf32';\n\nfunction Utf32AutoCodec(options, iconv) {\n    this.iconv = iconv;\n}\n\nUtf32AutoCodec.prototype.encoder = Utf32AutoEncoder;\nUtf32AutoCodec.prototype.decoder = Utf32AutoDecoder;\n\n// -- Encoding\n\nfunction Utf32AutoEncoder(options, codec) {\n    options = options || {};\n\n    if (options.addBOM === undefined)\n        options.addBOM = true;\n\n    this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options);\n}\n\nUtf32AutoEncoder.prototype.write = function(str) {\n    return this.encoder.write(str);\n};\n\nUtf32AutoEncoder.prototype.end = function() {\n    return this.encoder.end();\n};\n\n// -- Decoding\n\nfunction Utf32AutoDecoder(options, codec) {\n    this.decoder = null;\n    this.initialBufs = [];\n    this.initialBufsLen = 0;\n    this.options = options || {};\n    this.iconv = codec.iconv;\n}\n\nUtf32AutoDecoder.prototype.write = function(buf) {\n    if (!this.decoder) { \n        // Codec is not chosen yet. Accumulate initial bytes.\n        this.initialBufs.push(buf);\n        this.initialBufsLen += buf.length;\n\n        if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)\n            return '';\n\n        // We have enough bytes -> detect endianness.\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n\n    return this.decoder.write(buf);\n};\n\nUtf32AutoDecoder.prototype.end = function() {\n    if (!this.decoder) {\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        var trail = this.decoder.end();\n        if (trail)\n            resStr += trail;\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n\n    return this.decoder.end();\n};\n\nfunction detectEncoding(bufs, defaultEncoding) {\n    var b = [];\n    var charsProcessed = 0;\n    var invalidLE = 0, invalidBE = 0;   // Number of invalid chars when decoded as LE or BE.\n    var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE.\n\n    outer_loop:\n    for (var i = 0; i < bufs.length; i++) {\n        var buf = bufs[i];\n        for (var j = 0; j < buf.length; j++) {\n            b.push(buf[j]);\n            if (b.length === 4) {\n                if (charsProcessed === 0) {\n                    // Check BOM first.\n                    if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {\n                        return 'utf-32le';\n                    }\n                    if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {\n                        return 'utf-32be';\n                    }\n                }\n\n                if (b[0] !== 0 || b[1] > 0x10) invalidBE++;\n                if (b[3] !== 0 || b[2] > 0x10) invalidLE++;\n\n                if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++;\n                if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++;\n\n                b.length = 0;\n                charsProcessed++;\n\n                if (charsProcessed >= 100) {\n                    break outer_loop;\n                }\n            }\n        }\n    }\n\n    // Make decisions.\n    if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE)  return 'utf-32be';\n    if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE)  return 'utf-32le';\n\n    // Couldn't decide (likely all zeros or not enough data).\n    return defaultEncoding || 'utf-32le';\n}\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n    var buf = Buffer.from(str, 'ucs2');\n    for (var i = 0; i < buf.length; i += 2) {\n        var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n    }\n    return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n    this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n    if (buf.length == 0)\n        return '';\n\n    var buf2 = Buffer.alloc(buf.length + 1),\n        i = 0, j = 0;\n\n    if (this.overflowByte !== -1) {\n        buf2[0] = buf[0];\n        buf2[1] = this.overflowByte;\n        i = 1; j = 2;\n    }\n\n    for (; i < buf.length-1; i += 2, j+= 2) {\n        buf2[j] = buf[i+1];\n        buf2[j+1] = buf[i];\n    }\n\n    this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n    return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n    this.overflowByte = -1;\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n    options = options || {};\n    if (options.addBOM === undefined)\n        options.addBOM = true;\n    this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n    return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n    this.decoder = null;\n    this.initialBufs = [];\n    this.initialBufsLen = 0;\n\n    this.options = options || {};\n    this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n    if (!this.decoder) {\n        // Codec is not chosen yet. Accumulate initial bytes.\n        this.initialBufs.push(buf);\n        this.initialBufsLen += buf.length;\n        \n        if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)\n            return '';\n\n        // We have enough bytes -> detect endianness.\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n\n    return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n    if (!this.decoder) {\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        var trail = this.decoder.end();\n        if (trail)\n            resStr += trail;\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n    return this.decoder.end();\n}\n\nfunction detectEncoding(bufs, defaultEncoding) {\n    var b = [];\n    var charsProcessed = 0;\n    var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE.\n\n    outer_loop:\n    for (var i = 0; i < bufs.length; i++) {\n        var buf = bufs[i];\n        for (var j = 0; j < buf.length; j++) {\n            b.push(buf[j]);\n            if (b.length === 2) {\n                if (charsProcessed === 0) {\n                    // Check BOM first.\n                    if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le';\n                    if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be';\n                }\n\n                if (b[0] === 0 && b[1] !== 0) asciiCharsBE++;\n                if (b[0] !== 0 && b[1] === 0) asciiCharsLE++;\n\n                b.length = 0;\n                charsProcessed++;\n\n                if (charsProcessed >= 100) {\n                    break outer_loop;\n                }\n            }\n        }\n    }\n\n    // Make decisions.\n    // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n    // So, we count ASCII as if it was LE or BE, and decide from that.\n    if (asciiCharsBE > asciiCharsLE) return 'utf-16be';\n    if (asciiCharsBE < asciiCharsLE) return 'utf-16le';\n\n    // Couldn't decide (likely all zeros or not enough data).\n    return defaultEncoding || 'utf-16le';\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n    this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n    // Naive implementation.\n    // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n    return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n        return \"+\" + (chunk === '+' ? '' : \n            this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n            + \"-\";\n    }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n    base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n    minusChar = '-'.charCodeAt(0),\n    andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '+'\n            if (buf[i] == plusChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64Chars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n                    res += \"+\";\n                } else {\n                    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\");\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus is absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\");\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n//  * Base64 part is started by \"&\" instead of \"+\"\n//  * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n//  * In Base64, \",\" is used instead of \"/\"\n//  * Base64 must not be used to represent direct characters.\n//  * No implicit shift back from Base64 (should always end with '-')\n//  * String must end in non-shifted position.\n//  * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = Buffer.alloc(6);\n    this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n    var inBase64 = this.inBase64,\n        base64Accum = this.base64Accum,\n        base64AccumIdx = this.base64AccumIdx,\n        buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n    for (var i = 0; i < str.length; i++) {\n        var uChar = str.charCodeAt(i);\n        if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n            if (inBase64) {\n                if (base64AccumIdx > 0) {\n                    bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n                    base64AccumIdx = 0;\n                }\n\n                buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n                inBase64 = false;\n            }\n\n            if (!inBase64) {\n                buf[bufIdx++] = uChar; // Write direct character\n\n                if (uChar === andChar)  // Ampersand -> '&-'\n                    buf[bufIdx++] = minusChar;\n            }\n\n        } else { // Non-direct character\n            if (!inBase64) {\n                buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n                inBase64 = true;\n            }\n            if (inBase64) {\n                base64Accum[base64AccumIdx++] = uChar >> 8;\n                base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n                if (base64AccumIdx == base64Accum.length) {\n                    bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n                    base64AccumIdx = 0;\n                }\n            }\n        }\n    }\n\n    this.inBase64 = inBase64;\n    this.base64AccumIdx = base64AccumIdx;\n\n    return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n    var buf = Buffer.alloc(10), bufIdx = 0;\n    if (this.inBase64) {\n        if (this.base64AccumIdx > 0) {\n            bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n            this.base64AccumIdx = 0;\n        }\n\n        buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n        this.inBase64 = false;\n    }\n\n    return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n    // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '&'\n            if (buf[i] == andChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n                    res += \"&\";\n                } else {\n                    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\").replace(/,/g, '/');\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus may be absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\").replace(/,/g, '/');\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n    if (!codecOptions)\n        throw new Error(\"SBCS codec is called without the data.\")\n    \n    // Prepare char buffer for decoding.\n    if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n        throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n    \n    if (codecOptions.chars.length === 128) {\n        var asciiString = \"\";\n        for (var i = 0; i < 128; i++)\n            asciiString += String.fromCharCode(i);\n        codecOptions.chars = asciiString + codecOptions.chars;\n    }\n\n    this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n    \n    // Encoding buffer.\n    var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n    for (var i = 0; i < codecOptions.chars.length; i++)\n        encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n    this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n    this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length);\n    for (var i = 0; i < str.length; i++)\n        buf[i] = this.encodeBuf[str.charCodeAt(i)];\n    \n    return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n    this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n    var decodeBuf = this.decodeBuf;\n    var newBuf = Buffer.alloc(buf.length*2);\n    var idx1 = 0, idx2 = 0;\n    for (var i = 0; i < buf.length; i++) {\n        idx1 = buf[i]*2; idx2 = i*2;\n        newBuf[idx2] = decodeBuf[idx1];\n        newBuf[idx2+1] = decodeBuf[idx1+1];\n    }\n    return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n", "\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n    // Not supported by iconv, not sure why.\n    \"10029\": \"maccenteuro\",\n    \"maccenteuro\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"\u00C4\u0100\u0101\u00C9\u0104\u00D6\u00DC\u00E1\u0105\u010C\u00E4\u010D\u0106\u0107\u00E9\u0179\u017A\u010E\u00ED\u010F\u0112\u0113\u0116\u00F3\u0117\u00F4\u00F6\u00F5\u00FA\u011A\u011B\u00FC\u2020\u00B0\u0118\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u0119\u00A8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\u00AC\u221A\u0144\u0147\u2206\u00AB\u00BB\u2026\u00A0\u0148\u0150\u00D5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\u00C1\u0164\u0165\u00CD\u017D\u017E\u016A\u00D3\u00D4\u016B\u016E\u00DA\u016F\u0170\u0171\u0172\u0173\u00DD\u00FD\u0137\u017B\u0141\u017C\u0122\u02C7\"\n    },\n\n    \"808\": \"cp808\",\n    \"ibm808\": \"cp808\",\n    \"cp808\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u20AC\u25A0\u00A0\"\n    },\n\n    \"mik\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\u00A7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n    },\n\n    \"cp720\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"\\x80\\x81\u00E9\u00E2\\x84\u00E0\\x86\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\\x8d\\x8e\\x8f\\x90\\u0651\\u0652\u00F4\u00A4\u0640\u00FB\u00F9\u0621\u0622\u0623\u0624\u00A3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\u00B5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\\u064b\\u064c\\u064d\\u064e\\u064f\\u0650\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\\u00a0\"\n    },\n\n    // Aliases of generated encodings.\n    \"ascii8bit\": \"ascii\",\n    \"usascii\": \"ascii\",\n    \"ansix34\": \"ascii\",\n    \"ansix341968\": \"ascii\",\n    \"ansix341986\": \"ascii\",\n    \"csascii\": \"ascii\",\n    \"cp367\": \"ascii\",\n    \"ibm367\": \"ascii\",\n    \"isoir6\": \"ascii\",\n    \"iso646us\": \"ascii\",\n    \"iso646irv\": \"ascii\",\n    \"us\": \"ascii\",\n\n    \"latin1\": \"iso88591\",\n    \"latin2\": \"iso88592\",\n    \"latin3\": \"iso88593\",\n    \"latin4\": \"iso88594\",\n    \"latin5\": \"iso88599\",\n    \"latin6\": \"iso885910\",\n    \"latin7\": \"iso885913\",\n    \"latin8\": \"iso885914\",\n    \"latin9\": \"iso885915\",\n    \"latin10\": \"iso885916\",\n\n    \"csisolatin1\": \"iso88591\",\n    \"csisolatin2\": \"iso88592\",\n    \"csisolatin3\": \"iso88593\",\n    \"csisolatin4\": \"iso88594\",\n    \"csisolatincyrillic\": \"iso88595\",\n    \"csisolatinarabic\": \"iso88596\",\n    \"csisolatingreek\" : \"iso88597\",\n    \"csisolatinhebrew\": \"iso88598\",\n    \"csisolatin5\": \"iso88599\",\n    \"csisolatin6\": \"iso885910\",\n\n    \"l1\": \"iso88591\",\n    \"l2\": \"iso88592\",\n    \"l3\": \"iso88593\",\n    \"l4\": \"iso88594\",\n    \"l5\": \"iso88599\",\n    \"l6\": \"iso885910\",\n    \"l7\": \"iso885913\",\n    \"l8\": \"iso885914\",\n    \"l9\": \"iso885915\",\n    \"l10\": \"iso885916\",\n\n    \"isoir14\": \"iso646jp\",\n    \"isoir57\": \"iso646cn\",\n    \"isoir100\": \"iso88591\",\n    \"isoir101\": \"iso88592\",\n    \"isoir109\": \"iso88593\",\n    \"isoir110\": \"iso88594\",\n    \"isoir144\": \"iso88595\",\n    \"isoir127\": \"iso88596\",\n    \"isoir126\": \"iso88597\",\n    \"isoir138\": \"iso88598\",\n    \"isoir148\": \"iso88599\",\n    \"isoir157\": \"iso885910\",\n    \"isoir166\": \"tis620\",\n    \"isoir179\": \"iso885913\",\n    \"isoir199\": \"iso885914\",\n    \"isoir203\": \"iso885915\",\n    \"isoir226\": \"iso885916\",\n\n    \"cp819\": \"iso88591\",\n    \"ibm819\": \"iso88591\",\n\n    \"cyrillic\": \"iso88595\",\n\n    \"arabic\": \"iso88596\",\n    \"arabic8\": \"iso88596\",\n    \"ecma114\": \"iso88596\",\n    \"asmo708\": \"iso88596\",\n\n    \"greek\" : \"iso88597\",\n    \"greek8\" : \"iso88597\",\n    \"ecma118\" : \"iso88597\",\n    \"elot928\" : \"iso88597\",\n\n    \"hebrew\": \"iso88598\",\n    \"hebrew8\": \"iso88598\",\n\n    \"turkish\": \"iso88599\",\n    \"turkish8\": \"iso88599\",\n\n    \"thai\": \"iso885911\",\n    \"thai8\": \"iso885911\",\n\n    \"celtic\": \"iso885914\",\n    \"celtic8\": \"iso885914\",\n    \"isoceltic\": \"iso885914\",\n\n    \"tis6200\": \"tis620\",\n    \"tis62025291\": \"tis620\",\n    \"tis62025330\": \"tis620\",\n\n    \"10000\": \"macroman\",\n    \"10006\": \"macgreek\",\n    \"10007\": \"maccyrillic\",\n    \"10079\": \"maciceland\",\n    \"10081\": \"macturkish\",\n\n    \"cspc8codepage437\": \"cp437\",\n    \"cspc775baltic\": \"cp775\",\n    \"cspc850multilingual\": \"cp850\",\n    \"cspcp852\": \"cp852\",\n    \"cspc862latinhebrew\": \"cp862\",\n    \"cpgr\": \"cp869\",\n\n    \"msee\": \"cp1250\",\n    \"mscyrl\": \"cp1251\",\n    \"msansi\": \"cp1252\",\n    \"msgreek\": \"cp1253\",\n    \"msturk\": \"cp1254\",\n    \"mshebr\": \"cp1255\",\n    \"msarab\": \"cp1256\",\n    \"winbaltrim\": \"cp1257\",\n\n    \"cp20866\": \"koi8r\",\n    \"20866\": \"koi8r\",\n    \"ibm878\": \"koi8r\",\n    \"cskoi8r\": \"koi8r\",\n\n    \"cp21866\": \"koi8u\",\n    \"21866\": \"koi8u\",\n    \"ibm1168\": \"koi8u\",\n\n    \"strk10482002\": \"rk1048\",\n\n    \"tcvn5712\": \"tcvn\",\n    \"tcvn57121\": \"tcvn\",\n\n    \"gb198880\": \"iso646cn\",\n    \"cn\": \"iso646cn\",\n\n    \"csiso14jisc6220ro\": \"iso646jp\",\n    \"jisc62201969ro\": \"iso646jp\",\n    \"jp\": \"iso646jp\",\n\n    \"cshproman8\": \"hproman8\",\n    \"r8\": \"hproman8\",\n    \"roman8\": \"hproman8\",\n    \"xroman8\": \"hproman8\",\n    \"ibm1051\": \"hproman8\",\n\n    \"mac\": \"macintosh\",\n    \"csmacintosh\": \"macintosh\",\n};\n\n", "\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n  \"437\": \"cp437\",\n  \"737\": \"cp737\",\n  \"775\": \"cp775\",\n  \"850\": \"cp850\",\n  \"852\": \"cp852\",\n  \"855\": \"cp855\",\n  \"856\": \"cp856\",\n  \"857\": \"cp857\",\n  \"858\": \"cp858\",\n  \"860\": \"cp860\",\n  \"861\": \"cp861\",\n  \"862\": \"cp862\",\n  \"863\": \"cp863\",\n  \"864\": \"cp864\",\n  \"865\": \"cp865\",\n  \"866\": \"cp866\",\n  \"869\": \"cp869\",\n  \"874\": \"windows874\",\n  \"922\": \"cp922\",\n  \"1046\": \"cp1046\",\n  \"1124\": \"cp1124\",\n  \"1125\": \"cp1125\",\n  \"1129\": \"cp1129\",\n  \"1133\": \"cp1133\",\n  \"1161\": \"cp1161\",\n  \"1162\": \"cp1162\",\n  \"1163\": \"cp1163\",\n  \"1250\": \"windows1250\",\n  \"1251\": \"windows1251\",\n  \"1252\": \"windows1252\",\n  \"1253\": \"windows1253\",\n  \"1254\": \"windows1254\",\n  \"1255\": \"windows1255\",\n  \"1256\": \"windows1256\",\n  \"1257\": \"windows1257\",\n  \"1258\": \"windows1258\",\n  \"28591\": \"iso88591\",\n  \"28592\": \"iso88592\",\n  \"28593\": \"iso88593\",\n  \"28594\": \"iso88594\",\n  \"28595\": \"iso88595\",\n  \"28596\": \"iso88596\",\n  \"28597\": \"iso88597\",\n  \"28598\": \"iso88598\",\n  \"28599\": \"iso88599\",\n  \"28600\": \"iso885910\",\n  \"28601\": \"iso885911\",\n  \"28603\": \"iso885913\",\n  \"28604\": \"iso885914\",\n  \"28605\": \"iso885915\",\n  \"28606\": \"iso885916\",\n  \"windows874\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"win874\": \"windows874\",\n  \"cp874\": \"windows874\",\n  \"windows1250\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\u00A0\u02C7\u02D8\u0141\u00A4\u0104\u00A6\u00A7\u00A8\u00A9\u015E\u00AB\u00AC\u00AD\u00AE\u017B\u00B0\u00B1\u02DB\u0142\u00B4\u00B5\u00B6\u00B7\u00B8\u0105\u015F\u00BB\u013D\u02DD\u013E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n  },\n  \"win1250\": \"windows1250\",\n  \"cp1250\": \"windows1250\",\n  \"windows1251\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\u00A0\u040E\u045E\u0408\u00A4\u0490\u00A6\u00A7\u0401\u00A9\u0404\u00AB\u00AC\u00AD\u00AE\u0407\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7\u0451\u2116\u0454\u00BB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"win1251\": \"windows1251\",\n  \"cp1251\": \"windows1251\",\n  \"windows1252\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"win1252\": \"windows1252\",\n  \"cp1252\": \"windows1252\",\n  \"windows1253\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0385\u0386\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\uFFFD\u00AB\u00AC\u00AD\u00AE\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u00B5\u00B6\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n  },\n  \"win1253\": \"windows1253\",\n  \"cp1253\": \"windows1253\",\n  \"windows1254\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n  },\n  \"win1254\": \"windows1254\",\n  \"cp1254\": \"windows1254\",\n  \"windows1255\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u00A1\u00A2\u00A3\u20AA\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\u00BF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n  },\n  \"win1255\": \"windows1255\",\n  \"cp1255\": \"windows1255\",\n  \"windows1256\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\u00A0\u060C\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u06BE\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u061B\u00BB\u00BC\u00BD\u00BE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u00D7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\u00E0\u0644\u00E2\u0645\u0646\u0647\u0648\u00E7\u00E8\u00E9\u00EA\u00EB\u0649\u064A\u00EE\u00EF\u064B\u064C\u064D\u064E\u00F4\u064F\u0650\u00F7\u0651\u00F9\u0652\u00FB\u00FC\u200E\u200F\u06D2\"\n  },\n  \"win1256\": \"windows1256\",\n  \"cp1256\": \"windows1256\",\n  \"windows1257\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\u00A8\u02C7\u00B8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\u00AF\u02DB\uFFFD\u00A0\uFFFD\u00A2\u00A3\u00A4\uFFFD\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u02D9\"\n  },\n  \"win1257\": \"windows1257\",\n  \"cp1257\": \"windows1257\",\n  \"windows1258\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"win1258\": \"windows1258\",\n  \"cp1258\": \"windows1258\",\n  \"iso88591\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"cp28591\": \"iso88591\",\n  \"iso88592\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u02D8\u0141\u00A4\u013D\u015A\u00A7\u00A8\u0160\u015E\u0164\u0179\u00AD\u017D\u017B\u00B0\u0105\u02DB\u0142\u00B4\u013E\u015B\u02C7\u00B8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n  },\n  \"cp28592\": \"iso88592\",\n  \"iso88593\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0126\u02D8\u00A3\u00A4\uFFFD\u0124\u00A7\u00A8\u0130\u015E\u011E\u0134\u00AD\uFFFD\u017B\u00B0\u0127\u00B2\u00B3\u00B4\u00B5\u0125\u00B7\u00B8\u0131\u015F\u011F\u0135\u00BD\uFFFD\u017C\u00C0\u00C1\u00C2\uFFFD\u00C4\u010A\u0108\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\uFFFD\u00D1\u00D2\u00D3\u00D4\u0120\u00D6\u00D7\u011C\u00D9\u00DA\u00DB\u00DC\u016C\u015C\u00DF\u00E0\u00E1\u00E2\uFFFD\u00E4\u010B\u0109\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\uFFFD\u00F1\u00F2\u00F3\u00F4\u0121\u00F6\u00F7\u011D\u00F9\u00FA\u00FB\u00FC\u016D\u015D\u02D9\"\n  },\n  \"cp28593\": \"iso88593\",\n  \"iso88594\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0138\u0156\u00A4\u0128\u013B\u00A7\u00A8\u0160\u0112\u0122\u0166\u00AD\u017D\u00AF\u00B0\u0105\u02DB\u0157\u00B4\u0129\u013C\u02C7\u00B8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u012A\u0110\u0145\u014C\u0136\u00D4\u00D5\u00D6\u00D7\u00D8\u0172\u00DA\u00DB\u00DC\u0168\u016A\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u012B\u0111\u0146\u014D\u0137\u00F4\u00F5\u00F6\u00F7\u00F8\u0173\u00FA\u00FB\u00FC\u0169\u016B\u02D9\"\n  },\n  \"cp28594\": \"iso88594\",\n  \"iso88595\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n  },\n  \"cp28595\": \"iso88595\",\n  \"iso88596\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\uFFFD\uFFFD\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\u00AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"cp28596\": \"iso88596\",\n  \"iso88597\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u2018\u2019\u00A3\u20AC\u20AF\u00A6\u00A7\u00A8\u00A9\u037A\u00AB\u00AC\u00AD\uFFFD\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u0385\u0386\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n  },\n  \"cp28597\": \"iso88597\",\n  \"iso88598\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n  },\n  \"cp28598\": \"iso88598\",\n  \"iso88599\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n  },\n  \"cp28599\": \"iso88599\",\n  \"iso885910\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0112\u0122\u012A\u0128\u0136\u00A7\u013B\u0110\u0160\u0166\u017D\u00AD\u016A\u014A\u00B0\u0105\u0113\u0123\u012B\u0129\u0137\u00B7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u00CF\u00D0\u0145\u014C\u00D3\u00D4\u00D5\u00D6\u0168\u00D8\u0172\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u00EF\u00F0\u0146\u014D\u00F3\u00F4\u00F5\u00F6\u0169\u00F8\u0173\u00FA\u00FB\u00FC\u00FD\u00FE\u0138\"\n  },\n  \"cp28600\": \"iso885910\",\n  \"iso885911\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"cp28601\": \"iso885911\",\n  \"iso885913\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019\"\n  },\n  \"cp28603\": \"iso885913\",\n  \"iso885914\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u1E02\u1E03\u00A3\u010A\u010B\u1E0A\u00A7\u1E80\u00A9\u1E82\u1E0B\u1EF2\u00AD\u00AE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\u00B6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0174\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u1E6A\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u0176\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0175\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u1E6B\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0177\u00FF\"\n  },\n  \"cp28604\": \"iso885914\",\n  \"iso885915\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u0160\u00A7\u0161\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u017D\u00B5\u00B6\u00B7\u017E\u00B9\u00BA\u00BB\u0152\u0153\u0178\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"cp28605\": \"iso885915\",\n  \"iso885916\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0105\u0141\u20AC\u201E\u0160\u00A7\u0161\u00A9\u0218\u00AB\u0179\u00AD\u017A\u017B\u00B0\u00B1\u010C\u0142\u017D\u201D\u00B6\u00B7\u017E\u010D\u0219\u00BB\u0152\u0153\u0178\u017C\u00C0\u00C1\u00C2\u0102\u00C4\u0106\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0110\u0143\u00D2\u00D3\u00D4\u0150\u00D6\u015A\u0170\u00D9\u00DA\u00DB\u00DC\u0118\u021A\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u0107\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0111\u0144\u00F2\u00F3\u00F4\u0151\u00F6\u015B\u0171\u00F9\u00FA\u00FB\u00FC\u0119\u021B\u00FF\"\n  },\n  \"cp28606\": \"iso885916\",\n  \"cp437\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm437\": \"cp437\",\n  \"csibm437\": \"cp437\",\n  \"cp737\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\u00B1\u2265\u2264\u03AA\u03AB\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm737\": \"cp737\",\n  \"csibm737\": \"cp737\",\n  \"cp775\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0106\u00FC\u00E9\u0101\u00E4\u0123\u00E5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\u00C4\u00C5\u00C9\u00E6\u00C6\u014D\u00F6\u0122\u00A2\u015A\u015B\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u00A4\u0100\u012A\u00F3\u017B\u017C\u017A\u201D\u00A6\u00A9\u00AE\u00AC\u00BD\u00BC\u0141\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u00D3\u00DF\u014C\u0143\u00F5\u00D5\u00B5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\u00AD\u00B1\u201C\u00BE\u00B6\u00A7\u00F7\u201E\u00B0\u2219\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm775\": \"cp775\",\n  \"csibm775\": \"cp775\",\n  \"cp850\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u0131\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm850\": \"cp850\",\n  \"csibm850\": \"cp850\",\n  \"cp852\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u016F\u0107\u00E7\u0142\u00EB\u0150\u0151\u00EE\u0179\u00C4\u0106\u00C9\u0139\u013A\u00F4\u00F6\u013D\u013E\u015A\u015B\u00D6\u00DC\u0164\u0165\u0141\u00D7\u010D\u00E1\u00ED\u00F3\u00FA\u0104\u0105\u017D\u017E\u0118\u0119\u00AC\u017A\u010C\u015F\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u0111\u0110\u010E\u00CB\u010F\u0147\u00CD\u00CE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\u00D3\u00DF\u00D4\u0143\u0144\u0148\u0160\u0161\u0154\u00DA\u0155\u0170\u00FD\u00DD\u0163\u00B4\u00AD\u02DD\u02DB\u02C7\u02D8\u00A7\u00F7\u00B8\u00B0\u00A8\u02D9\u0171\u0158\u0159\u25A0\u00A0\"\n  },\n  \"ibm852\": \"cp852\",\n  \"csibm852\": \"cp852\",\n  \"cp855\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\u00AD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\u00A7\u25A0\u00A0\"\n  },\n  \"ibm855\": \"cp855\",\n  \"csibm855\": \"cp855\",\n  \"cp856\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\u00A3\uFFFD\u00D7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AE\u00AC\u00BD\u00BC\uFFFD\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\u00A6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm856\": \"cp856\",\n  \"csibm856\": \"cp856\",\n  \"cp857\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u0131\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u0130\u00D6\u00DC\u00F8\u00A3\u00D8\u015E\u015F\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u011E\u011F\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00BA\u00AA\u00CA\u00CB\u00C8\uFFFD\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\uFFFD\u00D7\u00DA\u00DB\u00D9\u00EC\u00FF\u00AF\u00B4\u00AD\u00B1\uFFFD\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm857\": \"cp857\",\n  \"csibm857\": \"cp857\",\n  \"cp858\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u20AC\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm858\": \"cp858\",\n  \"csibm858\": \"cp858\",\n  \"cp860\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E3\u00E0\u00C1\u00E7\u00EA\u00CA\u00E8\u00CD\u00D4\u00EC\u00C3\u00C2\u00C9\u00C0\u00C8\u00F4\u00F5\u00F2\u00DA\u00F9\u00CC\u00D5\u00DC\u00A2\u00A3\u00D9\u20A7\u00D3\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00D2\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm860\": \"cp860\",\n  \"csibm860\": \"cp860\",\n  \"cp861\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00D0\u00F0\u00DE\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00FE\u00FB\u00DD\u00FD\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00C1\u00CD\u00D3\u00DA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm861\": \"cp861\",\n  \"csibm861\": \"cp861\",\n  \"cp862\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm862\": \"cp862\",\n  \"csibm862\": \"cp862\",\n  \"cp863\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00C2\u00E0\u00B6\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u2017\u00C0\u00A7\u00C9\u00C8\u00CA\u00F4\u00CB\u00CF\u00FB\u00F9\u00A4\u00D4\u00DC\u00A2\u00A3\u00D9\u00DB\u0192\u00A6\u00B4\u00F3\u00FA\u00A8\u00B8\u00B3\u00AF\u00CE\u2310\u00AC\u00BD\u00BC\u00BE\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm863\": \"cp863\",\n  \"csibm863\": \"cp863\",\n  \"cp864\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00B0\u00B7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\u00B1\u00BD\u00BC\u2248\u00AB\u00BB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\u00A0\u00AD\uFE82\u00A3\u00A4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\u00A2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\u00A6\u00AC\u00F7\u00D7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD\"\n  },\n  \"ibm864\": \"cp864\",\n  \"csibm864\": \"cp864\",\n  \"cp865\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00A4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm865\": \"cp865\",\n  \"csibm865\": \"cp865\",\n  \"cp866\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n  },\n  \"ibm866\": \"cp866\",\n  \"csibm866\": \"cp866\",\n  \"cp869\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\u00B7\u00AC\u00A6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\u00A9\u038F\u00B2\u00B3\u03AC\u00A3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u00BD\u0398\u0399\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\u00AD\u00B1\u03C5\u03C6\u03C7\u00A7\u03C8\u0385\u00B0\u00A8\u03C9\u03CB\u03B0\u03CE\u25A0\u00A0\"\n  },\n  \"ibm869\": \"cp869\",\n  \"csibm869\": \"cp869\",\n  \"cp922\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u203E\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0160\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u017D\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0161\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u017E\u00FF\"\n  },\n  \"ibm922\": \"cp922\",\n  \"csibm922\": \"cp922\",\n  \"cp1046\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFE88\u00D7\u00F7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\u0088\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\u00A0\uF8FA\uF8F9\uF8F8\u00A4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\u00AD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD\"\n  },\n  \"ibm1046\": \"cp1046\",\n  \"csibm1046\": \"cp1046\",\n  \"cp1124\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n  },\n  \"ibm1124\": \"cp1124\",\n  \"csibm1124\": \"cp1124\",\n  \"cp1125\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n  },\n  \"ibm1125\": \"cp1125\",\n  \"csibm1125\": \"cp1125\",\n  \"cp1129\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"ibm1129\": \"cp1129\",\n  \"csibm1129\": \"cp1129\",\n  \"cp1133\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\u00A2\u00AC\u00A6\uFFFD\"\n  },\n  \"ibm1133\": \"cp1133\",\n  \"csibm1133\": \"cp1133\",\n  \"cp1161\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\u00A2\u00AC\u00A6\u00A0\"\n  },\n  \"ibm1161\": \"cp1161\",\n  \"csibm1161\": \"cp1161\",\n  \"cp1162\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\u0081\u0082\u0083\u0084\u2026\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"ibm1162\": \"cp1162\",\n  \"csibm1162\": \"cp1162\",\n  \"cp1163\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"ibm1163\": \"cp1163\",\n  \"csibm1163\": \"cp1163\",\n  \"maccroatian\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u0160\u2122\u00B4\u00A8\u2260\u017D\u00D8\u221E\u00B1\u2264\u2265\u2206\u00B5\u2202\u2211\u220F\u0161\u222B\u00AA\u00BA\u2126\u017E\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u0106\u00AB\u010C\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\uFFFD\u00A9\u2044\u00A4\u2039\u203A\u00C6\u00BB\u2013\u00B7\u201A\u201E\u2030\u00C2\u0107\u00C1\u010D\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\u0111\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u03C0\u00CB\u02DA\u00B8\u00CA\u00E6\u02C7\"\n  },\n  \"maccyrillic\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n  },\n  \"macgreek\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00B9\u00B2\u00C9\u00B3\u00D6\u00DC\u0385\u00E0\u00E2\u00E4\u0384\u00A8\u00E7\u00E9\u00E8\u00EA\u00EB\u00A3\u2122\u00EE\u00EF\u2022\u00BD\u2030\u00F4\u00F6\u00A6\u00AD\u00F9\u00FB\u00FC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\u00DF\u00AE\u00A9\u03A3\u03AA\u00A7\u2260\u00B0\u0387\u0391\u00B1\u2264\u2265\u00A5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\u00AC\u039F\u03A1\u2248\u03A4\u00AB\u00BB\u2026\u00A0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\u00F7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD\"\n  },\n  \"maciceland\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u00DD\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u00D0\u00F0\u00DE\u00FE\u00FD\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macroman\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macromania\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u0102\u015E\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u0103\u015F\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\u0162\u0163\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macthai\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00AB\u00BB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u00AE\u00A9\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"macturkish\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\uFFFD\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macukraine\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u0490\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n  },\n  \"koi8r\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8u\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8ru\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8t\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\u00A4\u04E3\u00A6\u00A7\uFFFD\uFFFD\uFFFD\u00AB\u00AC\u00AD\u00AE\uFFFD\u00B0\u00B1\u00B2\u0401\uFFFD\u04E2\u00B6\u00B7\uFFFD\u2116\uFFFD\u00BB\uFFFD\uFFFD\uFFFD\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"armscii8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u0587\u0589)(\u00BB\u00AB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD\"\n  },\n  \"rk1048\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\u00A0\u04B0\u04B1\u04D8\u00A4\u04E8\u00A6\u00A7\u0401\u00A9\u0492\u00AB\u00AC\u00AD\u00AE\u04AE\u00B0\u00B1\u0406\u0456\u04E9\u00B5\u00B6\u00B7\u0451\u2116\u0493\u00BB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"tcvn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\u00DA\u1EE4\\u0003\u1EEA\u1EEC\u1EEE\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\u00DD\u1EF4\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00C0\u1EA2\u00C3\u00C1\u1EA0\u1EB6\u1EAC\u00C8\u1EBA\u1EBC\u00C9\u1EB8\u1EC6\u00CC\u1EC8\u0128\u00CD\u1ECA\u00D2\u1ECE\u00D5\u00D3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\u00D9\u1EE6\u0168\u00A0\u0102\u00C2\u00CA\u00D4\u01A0\u01AF\u0110\u0103\u00E2\u00EA\u00F4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\u00E0\u1EA3\u00E3\u00E1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\u00E8\u1EC2\u1EBB\u1EBD\u00E9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\u00EC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\u00ED\u1ECB\u00F2\u1ED4\u1ECF\u00F5\u00F3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\u00F9\u1ED6\u1EE7\u0169\u00FA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\u00FD\u1EF5\u1ED0\"\n  },\n  \"georgianacademy\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"georgianps\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"pt154\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\u00A0\u040E\u045E\u0408\u04E8\u0498\u04B0\u00A7\u0401\u00A9\u04D8\u00AB\u00AC\u04EF\u00AE\u049C\u00B0\u04B1\u0406\u0456\u0499\u04E9\u00B6\u00B7\u0451\u2116\u04D9\u00BB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"viscii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\u1EB2\\u0003\\u0004\u1EB4\u1EAA\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\u1EF6\\u0015\\u0016\\u0017\\u0018\u1EF8\\u001a\\u001b\\u001c\\u001d\u1EF4\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\u00D5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\u00C0\u00C1\u00C2\u00C3\u1EA2\u0102\u1EB3\u1EB5\u00C8\u00C9\u00CA\u1EBA\u00CC\u00CD\u0128\u1EF3\u0110\u1EE9\u00D2\u00D3\u00D4\u1EA1\u1EF7\u1EEB\u1EED\u00D9\u00DA\u1EF9\u1EF5\u00DD\u1EE1\u01B0\u00E0\u00E1\u00E2\u00E3\u1EA3\u0103\u1EEF\u1EAB\u00E8\u00E9\u00EA\u1EBB\u00EC\u00ED\u0129\u1EC9\u0111\u1EF1\u00F2\u00F3\u00F4\u00F5\u1ECF\u1ECD\u1EE5\u00F9\u00FA\u0169\u1EE7\u00FD\u1EE3\u1EEE\"\n  },\n  \"iso646cn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#\u00A5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"iso646jp\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\u00A5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"hproman8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00C0\u00C2\u00C8\u00CA\u00CB\u00CE\u00CF\u00B4\u02CB\u02C6\u00A8\u02DC\u00D9\u00DB\u20A4\u00AF\u00DD\u00FD\u00B0\u00C7\u00E7\u00D1\u00F1\u00A1\u00BF\u00A4\u00A3\u00A5\u00A7\u0192\u00A2\u00E2\u00EA\u00F4\u00FB\u00E1\u00E9\u00F3\u00FA\u00E0\u00E8\u00F2\u00F9\u00E4\u00EB\u00F6\u00FC\u00C5\u00EE\u00D8\u00C6\u00E5\u00ED\u00F8\u00E6\u00C4\u00EC\u00D6\u00DC\u00C9\u00EF\u00DF\u00D4\u00C1\u00C3\u00E3\u00D0\u00F0\u00CD\u00CC\u00D3\u00D2\u00D5\u00F5\u0160\u0161\u00DA\u0178\u00FF\u00DE\u00FE\u00B7\u00B5\u00B6\u00BE\u2014\u00BC\u00BD\u00AA\u00BA\u00AB\u25A0\u00BB\u00B1\uFFFD\"\n  },\n  \"macintosh\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"ascii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"tis620\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  }\n}", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n    GB18030_CODE = -2,\n    SEQ_START  = -10,\n    NODE_START = -1000,\n    UNASSIGNED_NODE = new Array(0x100),\n    DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n    UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n    this.encodingName = codecOptions.encodingName;\n    if (!codecOptions)\n        throw new Error(\"DBCS codec is called without the data.\")\n    if (!codecOptions.table)\n        throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n    // Load tables.\n    var mappingTable = codecOptions.table();\n\n\n    // Decode tables: MBCS -> Unicode.\n\n    // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n    // Trie root is decodeTables[0].\n    // Values: >=  0 -> unicode character code. can be > 0xFFFF\n    //         == UNASSIGNED -> unknown/unassigned sequence.\n    //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n    //         <= NODE_START -> index of the next node in our trie to process next byte.\n    //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.\n    this.decodeTables = [];\n    this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n    // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n    this.decodeTableSeq = [];\n\n    // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n    for (var i = 0; i < mappingTable.length; i++)\n        this._addDecodeChunk(mappingTable[i]);\n\n    // Load & create GB18030 tables when needed.\n    if (typeof codecOptions.gb18030 === 'function') {\n        this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n        // Add GB18030 common decode nodes.\n        var commonThirdByteNodeIdx = this.decodeTables.length;\n        this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n        var commonFourthByteNodeIdx = this.decodeTables.length;\n        this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n        // Fill out the tree\n        var firstByteNode = this.decodeTables[0];\n        for (var i = 0x81; i <= 0xFE; i++) {\n            var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]];\n            for (var j = 0x30; j <= 0x39; j++) {\n                if (secondByteNode[j] === UNASSIGNED) {\n                    secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;\n                } else if (secondByteNode[j] > NODE_START) {\n                    throw new Error(\"gb18030 decode tables conflict at byte 2\");\n                }\n\n                var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];\n                for (var k = 0x81; k <= 0xFE; k++) {\n                    if (thirdByteNode[k] === UNASSIGNED) {\n                        thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;\n                    } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {\n                        continue;\n                    } else if (thirdByteNode[k] > NODE_START) {\n                        throw new Error(\"gb18030 decode tables conflict at byte 3\");\n                    }\n\n                    var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];\n                    for (var l = 0x30; l <= 0x39; l++) {\n                        if (fourthByteNode[l] === UNASSIGNED)\n                            fourthByteNode[l] = GB18030_CODE;\n                    }\n                }\n            }\n        }\n    }\n\n    this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n    \n    // Encode tables: Unicode -> DBCS.\n\n    // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n    // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n    // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n    //         == UNASSIGNED -> no conversion found. Output a default char.\n    //         <= SEQ_START  -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n    this.encodeTable = [];\n    \n    // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n    // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n    // means end of sequence (needed when one sequence is a strict subsequence of another).\n    // Objects are kept separately from encodeTable to increase performance.\n    this.encodeTableSeq = [];\n\n    // Some chars can be decoded, but need not be encoded.\n    var skipEncodeChars = {};\n    if (codecOptions.encodeSkipVals)\n        for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n            var val = codecOptions.encodeSkipVals[i];\n            if (typeof val === 'number')\n                skipEncodeChars[val] = true;\n            else\n                for (var j = val.from; j <= val.to; j++)\n                    skipEncodeChars[j] = true;\n        }\n        \n    // Use decode trie to recursively fill out encode tables.\n    this._fillEncodeTable(0, 0, skipEncodeChars);\n\n    // Add more encoding pairs when needed.\n    if (codecOptions.encodeAdd) {\n        for (var uChar in codecOptions.encodeAdd)\n            if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n                this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n    }\n\n    this.defCharSB  = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n    var bytes = [];\n    for (; addr > 0; addr >>>= 8)\n        bytes.push(addr & 0xFF);\n    if (bytes.length == 0)\n        bytes.push(0);\n\n    var node = this.decodeTables[0];\n    for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n        var val = node[bytes[i]];\n\n        if (val == UNASSIGNED) { // Create new node.\n            node[bytes[i]] = NODE_START - this.decodeTables.length;\n            this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n        }\n        else if (val <= NODE_START) { // Existing node.\n            node = this.decodeTables[NODE_START - val];\n        }\n        else\n            throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n    }\n    return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n    // First element of chunk is the hex mbcs code where we start.\n    var curAddr = parseInt(chunk[0], 16);\n\n    // Choose the decoding node where we'll write our chars.\n    var writeTable = this._getDecodeTrieNode(curAddr);\n    curAddr = curAddr & 0xFF;\n\n    // Write all other elements of the chunk to the table.\n    for (var k = 1; k < chunk.length; k++) {\n        var part = chunk[k];\n        if (typeof part === \"string\") { // String, write as-is.\n            for (var l = 0; l < part.length;) {\n                var code = part.charCodeAt(l++);\n                if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n                    var codeTrail = part.charCodeAt(l++);\n                    if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n                        writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n                    else\n                        throw new Error(\"Incorrect surrogate pair in \"  + this.encodingName + \" at chunk \" + chunk[0]);\n                }\n                else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n                    var len = 0xFFF - code + 2;\n                    var seq = [];\n                    for (var m = 0; m < len; m++)\n                        seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n                    writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n                    this.decodeTableSeq.push(seq);\n                }\n                else\n                    writeTable[curAddr++] = code; // Basic char\n            }\n        } \n        else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n            var charCode = writeTable[curAddr - 1] + 1;\n            for (var l = 0; l < part; l++)\n                writeTable[curAddr++] = charCode++;\n        }\n        else\n            throw new Error(\"Incorrect type '\" + typeof part + \"' given in \"  + this.encodingName + \" at chunk \" + chunk[0]);\n    }\n    if (curAddr > 0xFF)\n        throw new Error(\"Incorrect chunk in \"  + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n    var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n    if (this.encodeTable[high] === undefined)\n        this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n    return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n    if (bucket[low] <= SEQ_START)\n        this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n    else if (bucket[low] == UNASSIGNED)\n        bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n    \n    // Get the root of character tree according to first character of the sequence.\n    var uCode = seq[0];\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n\n    var node;\n    if (bucket[low] <= SEQ_START) {\n        // There's already a sequence with  - use it.\n        node = this.encodeTableSeq[SEQ_START-bucket[low]];\n    }\n    else {\n        // There was no sequence object - allocate a new one.\n        node = {};\n        if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n        bucket[low] = SEQ_START - this.encodeTableSeq.length;\n        this.encodeTableSeq.push(node);\n    }\n\n    // Traverse the character tree, allocating new nodes as needed.\n    for (var j = 1; j < seq.length-1; j++) {\n        var oldVal = node[uCode];\n        if (typeof oldVal === 'object')\n            node = oldVal;\n        else {\n            node = node[uCode] = {}\n            if (oldVal !== undefined)\n                node[DEF_CHAR] = oldVal\n        }\n    }\n\n    // Set the leaf to given dbcsCode.\n    uCode = seq[seq.length-1];\n    node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n    var node = this.decodeTables[nodeIdx];\n    var hasValues = false;\n    var subNodeEmpty = {};\n    for (var i = 0; i < 0x100; i++) {\n        var uCode = node[i];\n        var mbCode = prefix + i;\n        if (skipEncodeChars[mbCode])\n            continue;\n\n        if (uCode >= 0) {\n            this._setEncodeChar(uCode, mbCode);\n            hasValues = true;\n        } else if (uCode <= NODE_START) {\n            var subNodeIdx = NODE_START - uCode;\n            if (!subNodeEmpty[subNodeIdx]) {  // Skip empty subtrees (they are too large in gb18030).\n                var newPrefix = (mbCode << 8) >>> 0;  // NOTE: '>>> 0' keeps 32-bit num positive.\n                if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars))\n                    hasValues = true;\n                else\n                    subNodeEmpty[subNodeIdx] = true;\n            }\n        } else if (uCode <= SEQ_START) {\n            this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n            hasValues = true;\n        }\n    }\n    return hasValues;\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n    // Encoder state\n    this.leadSurrogate = -1;\n    this.seqObj = undefined;\n    \n    // Static data\n    this.encodeTable = codec.encodeTable;\n    this.encodeTableSeq = codec.encodeTableSeq;\n    this.defaultCharSingleByte = codec.defCharSB;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n    var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n        leadSurrogate = this.leadSurrogate,\n        seqObj = this.seqObj, nextChar = -1,\n        i = 0, j = 0;\n\n    while (true) {\n        // 0. Get next character.\n        if (nextChar === -1) {\n            if (i == str.length) break;\n            var uCode = str.charCodeAt(i++);\n        }\n        else {\n            var uCode = nextChar;\n            nextChar = -1;    \n        }\n\n        // 1. Handle surrogates.\n        if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n            if (uCode < 0xDC00) { // We've got lead surrogate.\n                if (leadSurrogate === -1) {\n                    leadSurrogate = uCode;\n                    continue;\n                } else {\n                    leadSurrogate = uCode;\n                    // Double lead surrogate found.\n                    uCode = UNASSIGNED;\n                }\n            } else { // We've got trail surrogate.\n                if (leadSurrogate !== -1) {\n                    uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n                    leadSurrogate = -1;\n                } else {\n                    // Incomplete surrogate pair - only trail surrogate found.\n                    uCode = UNASSIGNED;\n                }\n                \n            }\n        }\n        else if (leadSurrogate !== -1) {\n            // Incomplete surrogate pair - only lead surrogate found.\n            nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n            leadSurrogate = -1;\n        }\n\n        // 2. Convert uCode character.\n        var dbcsCode = UNASSIGNED;\n        if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n            var resCode = seqObj[uCode];\n            if (typeof resCode === 'object') { // Sequence continues.\n                seqObj = resCode;\n                continue;\n\n            } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n                dbcsCode = resCode;\n\n            } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n                // Try default character for this sequence\n                resCode = seqObj[DEF_CHAR];\n                if (resCode !== undefined) {\n                    dbcsCode = resCode; // Found. Write it.\n                    nextChar = uCode; // Current character will be written too in the next iteration.\n\n                } else {\n                    // TODO: What if we have no default? (resCode == undefined)\n                    // Then, we should write first char of the sequence as-is and try the rest recursively.\n                    // Didn't do it for now because no encoding has this situation yet.\n                    // Currently, just skip the sequence and write current char.\n                }\n            }\n            seqObj = undefined;\n        }\n        else if (uCode >= 0) {  // Regular character\n            var subtable = this.encodeTable[uCode >> 8];\n            if (subtable !== undefined)\n                dbcsCode = subtable[uCode & 0xFF];\n            \n            if (dbcsCode <= SEQ_START) { // Sequence start\n                seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n                continue;\n            }\n\n            if (dbcsCode == UNASSIGNED && this.gb18030) {\n                // Use GB18030 algorithm to find character(s) to write.\n                var idx = findIdx(this.gb18030.uChars, uCode);\n                if (idx != -1) {\n                    var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n                    newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n                    newBuf[j++] = 0x30 + dbcsCode;\n                    continue;\n                }\n            }\n        }\n\n        // 3. Write dbcsCode character.\n        if (dbcsCode === UNASSIGNED)\n            dbcsCode = this.defaultCharSingleByte;\n        \n        if (dbcsCode < 0x100) {\n            newBuf[j++] = dbcsCode;\n        }\n        else if (dbcsCode < 0x10000) {\n            newBuf[j++] = dbcsCode >> 8;   // high byte\n            newBuf[j++] = dbcsCode & 0xFF; // low byte\n        }\n        else if (dbcsCode < 0x1000000) {\n            newBuf[j++] = dbcsCode >> 16;\n            newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n            newBuf[j++] = dbcsCode & 0xFF;\n        } else {\n            newBuf[j++] = dbcsCode >>> 24;\n            newBuf[j++] = (dbcsCode >>> 16) & 0xFF;\n            newBuf[j++] = (dbcsCode >>> 8) & 0xFF;\n            newBuf[j++] = dbcsCode & 0xFF;\n        }\n    }\n\n    this.seqObj = seqObj;\n    this.leadSurrogate = leadSurrogate;\n    return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n    if (this.leadSurrogate === -1 && this.seqObj === undefined)\n        return; // All clean. Most often case.\n\n    var newBuf = Buffer.alloc(10), j = 0;\n\n    if (this.seqObj) { // We're in the sequence.\n        var dbcsCode = this.seqObj[DEF_CHAR];\n        if (dbcsCode !== undefined) { // Write beginning of the sequence.\n            if (dbcsCode < 0x100) {\n                newBuf[j++] = dbcsCode;\n            }\n            else {\n                newBuf[j++] = dbcsCode >> 8;   // high byte\n                newBuf[j++] = dbcsCode & 0xFF; // low byte\n            }\n        } else {\n            // See todo above.\n        }\n        this.seqObj = undefined;\n    }\n\n    if (this.leadSurrogate !== -1) {\n        // Incomplete surrogate pair - only lead surrogate found.\n        newBuf[j++] = this.defaultCharSingleByte;\n        this.leadSurrogate = -1;\n    }\n    \n    return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n    // Decoder state\n    this.nodeIdx = 0;\n    this.prevBytes = [];\n\n    // Static data\n    this.decodeTables = codec.decodeTables;\n    this.decodeTableSeq = codec.decodeTableSeq;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n    var newBuf = Buffer.alloc(buf.length*2),\n        nodeIdx = this.nodeIdx, \n        prevBytes = this.prevBytes, prevOffset = this.prevBytes.length,\n        seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence.\n        uCode;\n\n    for (var i = 0, j = 0; i < buf.length; i++) {\n        var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset];\n\n        // Lookup in current trie node.\n        var uCode = this.decodeTables[nodeIdx][curByte];\n\n        if (uCode >= 0) { \n            // Normal character, just use it.\n        }\n        else if (uCode === UNASSIGNED) { // Unknown char.\n            // TODO: Callback with seq.\n            uCode = this.defaultCharUnicode.charCodeAt(0);\n            i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again.\n        }\n        else if (uCode === GB18030_CODE) {\n            if (i >= 3) {\n                var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30);\n            } else {\n                var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + \n                          (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + \n                          (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + \n                          (curByte-0x30);\n            }\n            var idx = findIdx(this.gb18030.gbChars, ptr);\n            uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n        }\n        else if (uCode <= NODE_START) { // Go to next trie node.\n            nodeIdx = NODE_START - uCode;\n            continue;\n        }\n        else if (uCode <= SEQ_START) { // Output a sequence of chars.\n            var seq = this.decodeTableSeq[SEQ_START - uCode];\n            for (var k = 0; k < seq.length - 1; k++) {\n                uCode = seq[k];\n                newBuf[j++] = uCode & 0xFF;\n                newBuf[j++] = uCode >> 8;\n            }\n            uCode = seq[seq.length-1];\n        }\n        else\n            throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n        // Write the character to buffer, handling higher planes using surrogate pair.\n        if (uCode >= 0x10000) { \n            uCode -= 0x10000;\n            var uCodeLead = 0xD800 | (uCode >> 10);\n            newBuf[j++] = uCodeLead & 0xFF;\n            newBuf[j++] = uCodeLead >> 8;\n\n            uCode = 0xDC00 | (uCode & 0x3FF);\n        }\n        newBuf[j++] = uCode & 0xFF;\n        newBuf[j++] = uCode >> 8;\n\n        // Reset trie node.\n        nodeIdx = 0; seqStart = i+1;\n    }\n\n    this.nodeIdx = nodeIdx;\n    this.prevBytes = (seqStart >= 0)\n        ? Array.prototype.slice.call(buf, seqStart)\n        : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));\n\n    return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n    var ret = '';\n\n    // Try to parse all remaining chars.\n    while (this.prevBytes.length > 0) {\n        // Skip 1 character in the buffer.\n        ret += this.defaultCharUnicode;\n        var bytesArr = this.prevBytes.slice(1);\n\n        // Parse remaining as usual.\n        this.prevBytes = [];\n        this.nodeIdx = 0;\n        if (bytesArr.length > 0)\n            ret += this.write(bytesArr);\n    }\n\n    this.prevBytes = [];\n    this.nodeIdx = 0;\n    return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n    if (table[0] > val)\n        return -1;\n\n    var l = 0, r = table.length;\n    while (l < r-1) { // always table[l] <= val < table[r]\n        var mid = l + ((r-l+1) >> 1);\n        if (table[mid] <= val)\n            l = mid;\n        else\n            r = mid;\n    }\n    return l;\n}\n\n", "[\n[\"0\",\"\\u0000\",128],\n[\"a1\",\"\uFF61\",62],\n[\"8140\",\"\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\",9,\"\uFF0B\uFF0D\u00B1\u00D7\"],\n[\"8180\",\"\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\"],\n[\"81b8\",\"\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\"],\n[\"81c8\",\"\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203\"],\n[\"81da\",\"\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\"],\n[\"81f0\",\"\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\"],\n[\"81fc\",\"\u25EF\"],\n[\"824f\",\"\uFF10\",9],\n[\"8260\",\"\uFF21\",25],\n[\"8281\",\"\uFF41\",25],\n[\"829f\",\"\u3041\",82],\n[\"8340\",\"\u30A1\",62],\n[\"8380\",\"\u30E0\",22],\n[\"839f\",\"\u0391\",16,\"\u03A3\",6],\n[\"83bf\",\"\u03B1\",16,\"\u03C3\",6],\n[\"8440\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"8470\",\"\u0430\",5,\"\u0451\u0436\",7],\n[\"8480\",\"\u043E\",17],\n[\"849f\",\"\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\"],\n[\"8740\",\"\u2460\",19,\"\u2160\",9],\n[\"875f\",\"\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1\"],\n[\"877e\",\"\u337B\"],\n[\"8780\",\"\u301D\u301F\u2116\u33CD\u2121\u32A4\",4,\"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A\"],\n[\"889f\",\"\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\"],\n[\"8940\",\"\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\"],\n[\"8980\",\"\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\"],\n[\"8a40\",\"\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\"],\n[\"8a80\",\"\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\"],\n[\"8b40\",\"\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\"],\n[\"8b80\",\"\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\"],\n[\"8c40\",\"\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\"],\n[\"8c80\",\"\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\"],\n[\"8d40\",\"\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\"],\n[\"8d80\",\"\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\"],\n[\"8e40\",\"\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\"],\n[\"8e80\",\"\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\"],\n[\"8f40\",\"\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\"],\n[\"8f80\",\"\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\"],\n[\"9040\",\"\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\"],\n[\"9080\",\"\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\"],\n[\"9140\",\"\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\"],\n[\"9180\",\"\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\"],\n[\"9240\",\"\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\"],\n[\"9280\",\"\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\"],\n[\"9340\",\"\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\"],\n[\"9380\",\"\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\"],\n[\"9440\",\"\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\"],\n[\"9480\",\"\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\"],\n[\"9540\",\"\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\"],\n[\"9580\",\"\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\"],\n[\"9640\",\"\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\"],\n[\"9680\",\"\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\"],\n[\"9740\",\"\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\"],\n[\"9780\",\"\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\"],\n[\"9840\",\"\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\"],\n[\"989f\",\"\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\"],\n[\"9940\",\"\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\"],\n[\"9980\",\"\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\"],\n[\"9a40\",\"\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\"],\n[\"9a80\",\"\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\"],\n[\"9b40\",\"\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\"],\n[\"9b80\",\"\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\"],\n[\"9c40\",\"\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\"],\n[\"9c80\",\"\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\"],\n[\"9d40\",\"\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\"],\n[\"9d80\",\"\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\"],\n[\"9e40\",\"\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\"],\n[\"9e80\",\"\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\"],\n[\"9f40\",\"\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\"],\n[\"9f80\",\"\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\"],\n[\"e040\",\"\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\"],\n[\"e080\",\"\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\"],\n[\"e140\",\"\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\"],\n[\"e180\",\"\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\"],\n[\"e240\",\"\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\"],\n[\"e280\",\"\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\"],\n[\"e340\",\"\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\"],\n[\"e380\",\"\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\"],\n[\"e440\",\"\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\"],\n[\"e480\",\"\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\"],\n[\"e540\",\"\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\"],\n[\"e580\",\"\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\"],\n[\"e640\",\"\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\"],\n[\"e680\",\"\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\"],\n[\"e740\",\"\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\"],\n[\"e780\",\"\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\"],\n[\"e840\",\"\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\"],\n[\"e880\",\"\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\"],\n[\"e940\",\"\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\"],\n[\"e980\",\"\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\"],\n[\"ea40\",\"\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\"],\n[\"ea80\",\"\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199\"],\n[\"ed40\",\"\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\"],\n[\"ed80\",\"\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\"],\n[\"ee40\",\"\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\"],\n[\"ee80\",\"\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"],\n[\"eeef\",\"\u2170\",9,\"\uFFE2\uFFE4\uFF07\uFF02\"],\n[\"f040\",\"\uE000\",62],\n[\"f080\",\"\uE03F\",124],\n[\"f140\",\"\uE0BC\",62],\n[\"f180\",\"\uE0FB\",124],\n[\"f240\",\"\uE178\",62],\n[\"f280\",\"\uE1B7\",124],\n[\"f340\",\"\uE234\",62],\n[\"f380\",\"\uE273\",124],\n[\"f440\",\"\uE2F0\",62],\n[\"f480\",\"\uE32F\",124],\n[\"f540\",\"\uE3AC\",62],\n[\"f580\",\"\uE3EB\",124],\n[\"f640\",\"\uE468\",62],\n[\"f680\",\"\uE4A7\",124],\n[\"f740\",\"\uE524\",62],\n[\"f780\",\"\uE563\",124],\n[\"f840\",\"\uE5E0\",62],\n[\"f880\",\"\uE61F\",124],\n[\"f940\",\"\uE69C\"],\n[\"fa40\",\"\u2170\",9,\"\u2160\",9,\"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\"],\n[\"fa80\",\"\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\"],\n[\"fb40\",\"\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\"],\n[\"fb80\",\"\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\"],\n[\"fc40\",\"\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"]\n]\n", "[\n[\"0\",\"\\u0000\",127],\n[\"8ea1\",\"\uFF61\",62],\n[\"a1a1\",\"\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\",9,\"\uFF0B\uFF0D\u00B1\u00D7\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\"],\n[\"a2a1\",\"\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\"],\n[\"a2ba\",\"\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\"],\n[\"a2ca\",\"\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203\"],\n[\"a2dc\",\"\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\"],\n[\"a2f2\",\"\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\"],\n[\"a2fe\",\"\u25EF\"],\n[\"a3b0\",\"\uFF10\",9],\n[\"a3c1\",\"\uFF21\",25],\n[\"a3e1\",\"\uFF41\",25],\n[\"a4a1\",\"\u3041\",82],\n[\"a5a1\",\"\u30A1\",85],\n[\"a6a1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a6c1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a7a1\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"a7d1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"a8a1\",\"\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\"],\n[\"ada1\",\"\u2460\",19,\"\u2160\",9],\n[\"adc0\",\"\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1\"],\n[\"addf\",\"\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4\",4,\"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A\"],\n[\"b0a1\",\"\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\"],\n[\"b1a1\",\"\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\"],\n[\"b2a1\",\"\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\"],\n[\"b3a1\",\"\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\"],\n[\"b4a1\",\"\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\"],\n[\"b5a1\",\"\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\"],\n[\"b6a1\",\"\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\"],\n[\"b7a1\",\"\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\"],\n[\"b8a1\",\"\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\"],\n[\"b9a1\",\"\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\"],\n[\"baa1\",\"\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\"],\n[\"bba1\",\"\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\"],\n[\"bca1\",\"\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\"],\n[\"bda1\",\"\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\"],\n[\"bea1\",\"\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\"],\n[\"bfa1\",\"\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\"],\n[\"c0a1\",\"\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\"],\n[\"c1a1\",\"\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\"],\n[\"c2a1\",\"\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\"],\n[\"c3a1\",\"\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\"],\n[\"c4a1\",\"\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\"],\n[\"c5a1\",\"\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\"],\n[\"c6a1\",\"\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\"],\n[\"c7a1\",\"\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\"],\n[\"c8a1\",\"\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\"],\n[\"c9a1\",\"\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\"],\n[\"caa1\",\"\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\"],\n[\"cba1\",\"\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\"],\n[\"cca1\",\"\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\"],\n[\"cda1\",\"\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\"],\n[\"cea1\",\"\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\"],\n[\"cfa1\",\"\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\"],\n[\"d0a1\",\"\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\"],\n[\"d1a1\",\"\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\"],\n[\"d2a1\",\"\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\"],\n[\"d3a1\",\"\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\"],\n[\"d4a1\",\"\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\"],\n[\"d5a1\",\"\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\"],\n[\"d6a1\",\"\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\"],\n[\"d7a1\",\"\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\"],\n[\"d8a1\",\"\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\"],\n[\"d9a1\",\"\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\"],\n[\"daa1\",\"\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\"],\n[\"dba1\",\"\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\"],\n[\"dca1\",\"\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\"],\n[\"dda1\",\"\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\"],\n[\"dea1\",\"\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\"],\n[\"dfa1\",\"\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\"],\n[\"e0a1\",\"\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\"],\n[\"e1a1\",\"\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\"],\n[\"e2a1\",\"\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\"],\n[\"e3a1\",\"\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\"],\n[\"e4a1\",\"\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\"],\n[\"e5a1\",\"\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\"],\n[\"e6a1\",\"\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\"],\n[\"e7a1\",\"\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\"],\n[\"e8a1\",\"\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\"],\n[\"e9a1\",\"\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\"],\n[\"eaa1\",\"\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\"],\n[\"eba1\",\"\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\"],\n[\"eca1\",\"\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\"],\n[\"eda1\",\"\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\"],\n[\"eea1\",\"\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\"],\n[\"efa1\",\"\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\"],\n[\"f0a1\",\"\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\"],\n[\"f1a1\",\"\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\"],\n[\"f2a1\",\"\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\"],\n[\"f3a1\",\"\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\"],\n[\"f4a1\",\"\u582F\u69C7\u9059\u7464\u51DC\u7199\"],\n[\"f9a1\",\"\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\"],\n[\"faa1\",\"\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\"],\n[\"fba1\",\"\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\"],\n[\"fca1\",\"\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"],\n[\"fcf1\",\"\u2170\",9,\"\uFFE2\uFFE4\uFF07\uFF02\"],\n[\"8fa2af\",\"\u02D8\u02C7\u00B8\u02D9\u02DD\u00AF\u02DB\u02DA\uFF5E\u0384\u0385\"],\n[\"8fa2c2\",\"\u00A1\u00A6\u00BF\"],\n[\"8fa2eb\",\"\u00BA\u00AA\u00A9\u00AE\u2122\u00A4\u2116\"],\n[\"8fa6e1\",\"\u0386\u0388\u0389\u038A\u03AA\"],\n[\"8fa6e7\",\"\u038C\"],\n[\"8fa6e9\",\"\u038E\u03AB\"],\n[\"8fa6ec\",\"\u038F\"],\n[\"8fa6f1\",\"\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE\"],\n[\"8fa7c2\",\"\u0402\",10,\"\u040E\u040F\"],\n[\"8fa7f2\",\"\u0452\",10,\"\u045E\u045F\"],\n[\"8fa9a1\",\"\u00C6\u0110\"],\n[\"8fa9a4\",\"\u0126\"],\n[\"8fa9a6\",\"\u0132\"],\n[\"8fa9a8\",\"\u0141\u013F\"],\n[\"8fa9ab\",\"\u014A\u00D8\u0152\"],\n[\"8fa9af\",\"\u0166\u00DE\"],\n[\"8fa9c1\",\"\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\u00F8\u0153\u00DF\u0167\u00FE\"],\n[\"8faaa1\",\"\u00C1\u00C0\u00C4\u00C2\u0102\u01CD\u0100\u0104\u00C5\u00C3\u0106\u0108\u010C\u00C7\u010A\u010E\u00C9\u00C8\u00CB\u00CA\u011A\u0116\u0112\u0118\"],\n[\"8faaba\",\"\u011C\u011E\u0122\u0120\u0124\u00CD\u00CC\u00CF\u00CE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\u00D1\u00D3\u00D2\u00D6\u00D4\u01D1\u0150\u014C\u00D5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\u00DA\u00D9\u00DC\u00DB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\u00DD\u0178\u0176\u0179\u017D\u017B\"],\n[\"8faba1\",\"\u00E1\u00E0\u00E4\u00E2\u0103\u01CE\u0101\u0105\u00E5\u00E3\u0107\u0109\u010D\u00E7\u010B\u010F\u00E9\u00E8\u00EB\u00EA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F\"],\n[\"8fabbd\",\"\u0121\u0125\u00ED\u00EC\u00EF\u00EE\u01D0\"],\n[\"8fabc5\",\"\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\u00F1\u00F3\u00F2\u00F6\u00F4\u01D2\u0151\u014D\u00F5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\u00FA\u00F9\u00FC\u00FB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\u00FD\u00FF\u0177\u017A\u017E\u017C\"],\n[\"8fb0a1\",\"\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84\"],\n[\"8fb1a1\",\"\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090\"],\n[\"8fb2a1\",\"\u5092\u5093\u5094\u5096\u509B\u509C\u509E\",4,\"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2\"],\n[\"8fb3a1\",\"\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B\"],\n[\"8fb4a1\",\"\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F\"],\n[\"8fb5a1\",\"\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2\"],\n[\"8fb6a1\",\"\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D\",5,\"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4\",4,\"\u56F1\u56EB\u56ED\"],\n[\"8fb7a1\",\"\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D\",4,\"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1\"],\n[\"8fb8a1\",\"\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D\"],\n[\"8fb9a1\",\"\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF\"],\n[\"8fbaa1\",\"\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6\",4,\"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69\"],\n[\"8fbba1\",\"\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4\"],\n[\"8fbca1\",\"\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A\",4,\"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67\"],\n[\"8fbda1\",\"\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0\",4,\"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7\"],\n[\"8fbea1\",\"\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110\",4,\"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5\"],\n[\"8fbfa1\",\"\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375\"],\n[\"8fc0a1\",\"\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF\"],\n[\"8fc1a1\",\"\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D\"],\n[\"8fc2a1\",\"\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D\"],\n[\"8fc3a1\",\"\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E\",4,\"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF\"],\n[\"8fc4a1\",\"\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32\"],\n[\"8fc5a1\",\"\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D\"],\n[\"8fc6a1\",\"\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6\"],\n[\"8fc7a1\",\"\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E\"],\n[\"8fc8a1\",\"\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA\"],\n[\"8fc9a1\",\"\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094\",4,\"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103\",4,\"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160\"],\n[\"8fcaa1\",\"\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB\"],\n[\"8fcba1\",\"\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD\"],\n[\"8fcca1\",\"\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428\",9,\"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506\"],\n[\"8fcda1\",\"\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579\",5,\"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639\"],\n[\"8fcea1\",\"\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2\",6,\"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762\"],\n[\"8fcfa1\",\"\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3\"],\n[\"8fd0a1\",\"\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE\"],\n[\"8fd1a1\",\"\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30\"],\n[\"8fd2a1\",\"\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59\",5],\n[\"8fd3a1\",\"\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D\"],\n[\"8fd4a1\",\"\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2\",4,\"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D\"],\n[\"8fd5a1\",\"\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE\"],\n[\"8fd6a1\",\"\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246\"],\n[\"8fd7a1\",\"\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378\"],\n[\"8fd8a1\",\"\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3\"],\n[\"8fd9a1\",\"\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F\",4,\"\u8556\u8559\u855C\",6,\"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC\"],\n[\"8fdaa1\",\"\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660\",4,\"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723\"],\n[\"8fdba1\",\"\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783\",6,\"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835\"],\n[\"8fdca1\",\"\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA\",4,\"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A\"],\n[\"8fdda1\",\"\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4\",4,\"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3\"],\n[\"8fdea1\",\"\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42\",4,\"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86\"],\n[\"8fdfa1\",\"\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22\"],\n[\"8fe0a1\",\"\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41\"],\n[\"8fe1a1\",\"\u8F43\u8F47\u8F4F\u8F51\",4,\"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3\"],\n[\"8fe2a1\",\"\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF\"],\n[\"8fe3a1\",\"\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC\",5,\"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275\",4,\"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297\"],\n[\"8fe4a1\",\"\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF\",4,\"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376\"],\n[\"8fe5a1\",\"\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9\",4,\"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579\"],\n[\"8fe6a1\",\"\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702\"],\n[\"8fe7a1\",\"\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826\"],\n[\"8fe8a1\",\"\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931\",4,\"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5\"],\n[\"8fe9a1\",\"\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF\",4],\n[\"8feaa1\",\"\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A\",4,\"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8\"],\n[\"8feba1\",\"\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26\",4,\"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B\"],\n[\"8feca1\",\"\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5\"],\n[\"8feda1\",\"\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43\",4,\"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D\",4,\"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5\"]\n]\n", "[\n[\"0\",\"\\u0000\",127,\"\u20AC\"],\n[\"8140\",\"\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A\",5,\"\u4E72\u4E74\",9,\"\u4E7F\",6,\"\u4E87\u4E8A\"],\n[\"8180\",\"\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02\",6,\"\u4F0B\u4F0C\u4F12\",4,\"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\",4,\"\u4F44\u4F45\u4F47\",5,\"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2\"],\n[\"8240\",\"\u4FA4\u4FAB\u4FAD\u4FB0\",4,\"\u4FB6\",8,\"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2\",4,\"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF\",11],\n[\"8280\",\"\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F\",10,\"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050\",4,\"\u5056\u5057\u5058\u5059\u505B\u505D\",7,\"\u5066\",5,\"\u506D\",8,\"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E\",20,\"\u50A4\u50A6\u50AA\u50AB\u50AD\",4,\"\u50B3\",6,\"\u50BC\"],\n[\"8340\",\"\u50BD\",17,\"\u50D0\",5,\"\u50D7\u50D8\u50D9\u50DB\",10,\"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6\",4,\"\u50FC\",9,\"\u5108\"],\n[\"8380\",\"\u5109\u510A\u510C\",5,\"\u5113\",13,\"\u5122\",28,\"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D\",4,\"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6\",4,\"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2\",5],\n[\"8440\",\"\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5\",5,\"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244\",5,\"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258\"],\n[\"8480\",\"\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273\",9,\"\u527E\u5280\u5283\",4,\"\u5289\",6,\"\u5291\u5292\u5294\",6,\"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4\",9,\"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9\",5,\"\u52E0\u52E1\u52E2\u52E3\u52E5\",10,\"\u52F1\",7,\"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E\"],\n[\"8540\",\"\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F\",9,\"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F\"],\n[\"8580\",\"\u5390\",4,\"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF\",6,\"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3\",4,\"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D\",4,\"\u5463\u5465\u5467\u5469\",7,\"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1\"],\n[\"8640\",\"\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0\",4,\"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4\",5,\"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A\",4,\"\u5512\u5513\u5515\",5,\"\u551C\u551D\u551E\u551F\u5521\u5525\u5526\"],\n[\"8680\",\"\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B\",4,\"\u5551\u5552\u5553\u5554\u5557\",4,\"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F\",5,\"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0\",6,\"\u55A8\",8,\"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF\",4,\"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7\",4,\"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8\",4,\"\u55FF\u5602\u5603\u5604\u5605\"],\n[\"8740\",\"\u5606\u5607\u560A\u560B\u560D\u5610\",7,\"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640\",11,\"\u564F\",4,\"\u5655\u5656\u565A\u565B\u565D\",4],\n[\"8780\",\"\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D\",7,\"\u5687\",6,\"\u5690\u5691\u5692\u5694\",14,\"\u56A4\",10,\"\u56B0\",6,\"\u56B8\u56B9\u56BA\u56BB\u56BD\",12,\"\u56CB\",8,\"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5\",5,\"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B\",6],\n[\"8840\",\"\u5712\",9,\"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734\",4,\"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752\",4,\"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780\"],\n[\"8880\",\"\u5781\u5787\u5788\u5789\u578A\u578D\",4,\"\u5794\",6,\"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9\",8,\"\u57C4\",6,\"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5\",7,\"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825\",4,\"\u582B\",4,\"\u5831\u5832\u5833\u5834\u5836\",7],\n[\"8940\",\"\u583E\",5,\"\u5845\",6,\"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859\",4,\"\u585F\",5,\"\u5866\",4,\"\u586D\",16,\"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C\"],\n[\"8980\",\"\u588D\",4,\"\u5894\",4,\"\u589B\u589C\u589D\u58A0\",7,\"\u58AA\",17,\"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6\",10,\"\u58D2\u58D3\u58D4\u58D6\",13,\"\u58E5\",5,\"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA\",7,\"\u5903\u5905\u5906\u5908\",4,\"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B\"],\n[\"8a40\",\"\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B\",4,\"\u5961\u5963\u5964\u5966\",12,\"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6\"],\n[\"8a80\",\"\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3\",5,\"\u59BA\u59BC\u59BD\u59BF\",6,\"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE\",4,\"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED\",11,\"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A\",6,\"\u5A33\u5A35\u5A37\",4,\"\u5A3D\u5A3E\u5A3F\u5A41\",4,\"\u5A47\u5A48\u5A4B\",9,\"\u5A56\u5A57\u5A58\u5A59\u5A5B\",5],\n[\"8b40\",\"\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B\",8,\"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80\",17,\"\u5A93\",6,\"\u5A9C\",13,\"\u5AAB\u5AAC\"],\n[\"8b80\",\"\u5AAD\",4,\"\u5AB4\u5AB6\u5AB7\u5AB9\",4,\"\u5ABF\u5AC0\u5AC3\",5,\"\u5ACA\u5ACB\u5ACD\",4,\"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC\",4,\"\u5AF2\",22,\"\u5B0A\",11,\"\u5B18\",25,\"\u5B33\u5B35\u5B36\u5B38\",7,\"\u5B41\",6],\n[\"8c40\",\"\u5B48\",7,\"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF\"],\n[\"8c80\",\"\u5BD1\u5BD4\",8,\"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9\",4,\"\u5BEF\u5BF1\",6,\"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67\",6,\"\u5C70\u5C72\",6,\"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83\",4,\"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D\",4,\"\u5CA4\",4],\n[\"8d40\",\"\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5\",5,\"\u5CCC\",5,\"\u5CD3\",5,\"\u5CDA\",6,\"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1\",9,\"\u5CFC\",4],\n[\"8d80\",\"\u5D01\u5D04\u5D05\u5D08\",5,\"\u5D0F\",4,\"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F\",4,\"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F\",4,\"\u5D35\",7,\"\u5D3F\",7,\"\u5D48\u5D49\u5D4D\",10,\"\u5D59\u5D5A\u5D5C\u5D5E\",10,\"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75\",12,\"\u5D83\",21,\"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0\"],\n[\"8e40\",\"\u5DA1\",21,\"\u5DB8\",12,\"\u5DC6\",6,\"\u5DCE\",12,\"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED\"],\n[\"8e80\",\"\u5DF0\u5DF5\u5DF6\u5DF8\",4,\"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E\",7,\"\u5E28\",4,\"\u5E2F\u5E30\u5E32\",4,\"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46\",5,\"\u5E4D\",6,\"\u5E56\",4,\"\u5E5C\u5E5D\u5E5F\u5E60\u5E63\",14,\"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8\",4,\"\u5EAE\",4,\"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF\",6],\n[\"8f40\",\"\u5EC6\u5EC7\u5EC8\u5ECB\",5,\"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC\",11,\"\u5EE9\u5EEB\",8,\"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24\"],\n[\"8f80\",\"\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32\",6,\"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41\",14,\"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2\",5,\"\u5FA9\u5FAB\u5FAC\u5FAF\",5,\"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE\",4,\"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007\"],\n[\"9040\",\"\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030\",4,\"\u6036\",4,\"\u603D\u603E\u6040\u6044\",6,\"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080\"],\n[\"9080\",\"\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD\",7,\"\u60C7\u60C8\u60C9\u60CC\",4,\"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1\",4,\"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB\",4,\"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110\",4,\"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C\",18,\"\u6140\",6],\n[\"9140\",\"\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156\",6,\"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169\",6,\"\u6171\u6172\u6173\u6174\u6176\u6178\",18,\"\u618C\u618D\u618F\",4,\"\u6195\"],\n[\"9180\",\"\u6196\",6,\"\u619E\",8,\"\u61AA\u61AB\u61AD\",9,\"\u61B8\",5,\"\u61BF\u61C0\u61C1\u61C3\",4,\"\u61C9\u61CC\",4,\"\u61D3\u61D5\",16,\"\u61E7\",13,\"\u61F6\",8,\"\u6200\",5,\"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238\",4,\"\u6242\u6244\u6245\u6246\u624A\"],\n[\"9240\",\"\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C\",6,\"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B\",5,\"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1\"],\n[\"9280\",\"\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333\",5,\"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356\",7,\"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399\",6,\"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0\"],\n[\"9340\",\"\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7\",6,\"\u63DF\u63E2\u63E4\",4,\"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406\",4,\"\u640D\u640E\u6411\u6412\u6415\",5,\"\u641D\u641F\u6422\u6423\u6424\"],\n[\"9380\",\"\u6425\u6427\u6428\u6429\u642B\u642E\",5,\"\u6435\",4,\"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B\",6,\"\u6453\u6455\u6456\u6457\u6459\",4,\"\u645F\",7,\"\u6468\u646A\u646B\u646C\u646E\",9,\"\u647B\",6,\"\u6483\u6486\u6488\",8,\"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F\",4,\"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6\",6,\"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA\"],\n[\"9440\",\"\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7\",24,\"\u6501\",7,\"\u650A\",7,\"\u6513\",4,\"\u6519\",8],\n[\"9480\",\"\u6522\u6523\u6524\u6526\",4,\"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540\",4,\"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578\",14,\"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1\",7,\"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8\",7,\"\u65E1\u65E3\u65E4\u65EA\u65EB\"],\n[\"9540\",\"\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB\",4,\"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637\",4,\"\u663D\u663F\u6640\u6642\u6644\",6,\"\u664D\u664E\u6650\u6651\u6658\"],\n[\"9580\",\"\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669\",4,\"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698\",4,\"\u669E\",8,\"\u66A9\",4,\"\u66AF\",4,\"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF\",25,\"\u66DA\u66DE\",7,\"\u66E7\u66E8\u66EA\",5,\"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703\"],\n[\"9640\",\"\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720\",5,\"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757\",4,\"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776\"],\n[\"9680\",\"\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9\",7,\"\u67C2\u67C5\",9,\"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5\",7,\"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818\",4,\"\u681E\u681F\u6820\u6822\",6,\"\u682B\",6,\"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856\",5],\n[\"9740\",\"\u685C\u685D\u685E\u685F\u686A\u686C\",7,\"\u6875\u6878\",8,\"\u6882\u6884\u6887\",7,\"\u6890\u6891\u6892\u6894\u6895\u6896\u6898\",9,\"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8\"],\n[\"9780\",\"\u68B9\",6,\"\u68C1\u68C3\",5,\"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB\",4,\"\u68E1\u68E2\u68E4\",9,\"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906\",4,\"\u690C\u690F\u6911\u6913\",11,\"\u6921\u6922\u6923\u6925\",7,\"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943\",16,\"\u6955\u6956\u6958\u6959\u695B\u695C\u695F\"],\n[\"9840\",\"\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972\",4,\"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E\",5,\"\u6996\u6997\u6999\u699A\u699D\",9,\"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD\"],\n[\"9880\",\"\u69BE\u69BF\u69C0\u69C2\",7,\"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5\",5,\"\u69DC\u69DD\u69DE\u69E1\",11,\"\u69EE\u69EF\u69F0\u69F1\u69F3\",9,\"\u69FE\u6A00\",9,\"\u6A0B\",11,\"\u6A19\",5,\"\u6A20\u6A22\",5,\"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36\",6,\"\u6A3F\",4,\"\u6A45\u6A46\u6A48\",7,\"\u6A51\",6,\"\u6A5A\"],\n[\"9940\",\"\u6A5C\",4,\"\u6A62\u6A63\u6A64\u6A66\",10,\"\u6A72\",6,\"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85\",8,\"\u6A8F\u6A92\",4,\"\u6A98\",7,\"\u6AA1\",5],\n[\"9980\",\"\u6AA7\u6AA8\u6AAA\u6AAD\",114,\"\u6B25\u6B26\u6B28\",6],\n[\"9a40\",\"\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D\",11,\"\u6B5A\",7,\"\u6B68\u6B69\u6B6B\",13,\"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88\"],\n[\"9a80\",\"\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C\",4,\"\u6BA2\",7,\"\u6BAB\",7,\"\u6BB6\u6BB8\",6,\"\u6BC0\u6BC3\u6BC4\u6BC6\",4,\"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC\",4,\"\u6BE2\",7,\"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE\",6,\"\u6C08\",4,\"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B\",4,\"\u6C51\u6C52\u6C53\u6C56\u6C58\"],\n[\"9b40\",\"\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B\",4,\"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8\"],\n[\"9b80\",\"\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F\",5,\"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D\",4,\"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96\",4,\"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9\",5,\"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA\"],\n[\"9c40\",\"\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD\",7,\"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35\"],\n[\"9c80\",\"\u6E36\u6E37\u6E39\u6E3B\",7,\"\u6E45\",7,\"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60\",10,\"\u6E6C\u6E6D\u6E6F\",14,\"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A\",4,\"\u6E91\",6,\"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA\",5],\n[\"9d40\",\"\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA\",7,\"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A\",4,\"\u6F10\u6F11\u6F12\u6F16\",9,\"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37\",6,\"\u6F3F\u6F40\u6F41\u6F42\"],\n[\"9d80\",\"\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E\",9,\"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67\",5,\"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D\",6,\"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F\",12,\"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2\",4,\"\u6FA8\",10,\"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA\",5,\"\u6FC1\u6FC3\",5,\"\u6FCA\",6,\"\u6FD3\",10,\"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5\"],\n[\"9e40\",\"\u6FE6\",7,\"\u6FF0\",32,\"\u7012\",7,\"\u701C\",6,\"\u7024\",6],\n[\"9e80\",\"\u702B\",9,\"\u7036\u7037\u7038\u703A\",17,\"\u704D\u704E\u7050\",13,\"\u705F\",11,\"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E\",12,\"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB\",12,\"\u70DA\"],\n[\"9f40\",\"\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0\",6,\"\u70F8\u70FA\u70FB\u70FC\u70FE\",10,\"\u710B\",4,\"\u7111\u7112\u7114\u7117\u711B\",10,\"\u7127\",7,\"\u7132\u7133\u7134\"],\n[\"9f80\",\"\u7135\u7137\",13,\"\u7146\u7147\u7148\u7149\u714B\u714D\u714F\",12,\"\u715D\u715F\",4,\"\u7165\u7169\",4,\"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E\",5,\"\u7185\",4,\"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A\",4,\"\u71A1\",6,\"\u71A9\u71AA\u71AB\u71AD\",5,\"\u71B4\u71B6\u71B7\u71B8\u71BA\",8,\"\u71C4\",9,\"\u71CF\",4],\n[\"a040\",\"\u71D6\",9,\"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8\",5,\"\u71EF\",9,\"\u71FA\",11,\"\u7207\",19],\n[\"a080\",\"\u721B\u721C\u721E\",9,\"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240\",6,\"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285\",4,\"\u728C\u728E\u7290\u7291\u7293\",11,\"\u72A0\",11,\"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA\",6,\"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB\"],\n[\"a1a1\",\"\u3000\u3001\u3002\u00B7\u02C9\u02C7\u00A8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008\",7,\"\u3016\u3017\u3010\u3011\u00B1\u00D7\u00F7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFF04\u00A4\uFFE0\uFFE1\u2030\u00A7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013\"],\n[\"a2a1\",\"\u2170\",9],\n[\"a2b1\",\"\u2488\",19,\"\u2474\",19,\"\u2460\",9],\n[\"a2e5\",\"\u3220\",9],\n[\"a2f1\",\"\u2160\",11],\n[\"a3a1\",\"\uFF01\uFF02\uFF03\uFFE5\uFF05\",88,\"\uFFE3\"],\n[\"a4a1\",\"\u3041\",82],\n[\"a5a1\",\"\u30A1\",85],\n[\"a6a1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a6c1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a6e0\",\"\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44\"],\n[\"a6ee\",\"\uFE3B\uFE3C\uFE37\uFE38\uFE31\"],\n[\"a6f4\",\"\uFE33\uFE34\"],\n[\"a7a1\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"a7d1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"a840\",\"\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550\",35,\"\u2581\",6],\n[\"a880\",\"\u2588\",7,\"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E\"],\n[\"a8a1\",\"\u0101\u00E1\u01CE\u00E0\u0113\u00E9\u011B\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\u01DC\u00FC\u00EA\u0251\"],\n[\"a8bd\",\"\u0144\u0148\"],\n[\"a8c0\",\"\u0261\"],\n[\"a8c5\",\"\u3105\",36],\n[\"a940\",\"\u3021\",8,\"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4\"],\n[\"a959\",\"\u2121\u3231\"],\n[\"a95c\",\"\u2010\"],\n[\"a960\",\"\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49\",9,\"\uFE54\uFE55\uFE56\uFE57\uFE59\",8],\n[\"a980\",\"\uFE62\",4,\"\uFE68\uFE69\uFE6A\uFE6B\"],\n[\"a996\",\"\u3007\"],\n[\"a9a4\",\"\u2500\",75],\n[\"aa40\",\"\u72DC\u72DD\u72DF\u72E2\",5,\"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304\",5,\"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340\",8],\n[\"aa80\",\"\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358\",7,\"\u7361\",10,\"\u736E\u7370\u7371\"],\n[\"ab40\",\"\u7372\",11,\"\u737F\",4,\"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3\",5,\"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3\",4],\n[\"ab80\",\"\u73CB\u73CC\u73CE\u73D2\",6,\"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3\",4],\n[\"ac40\",\"\u73F8\",10,\"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411\",8,\"\u741C\",5,\"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437\",4,\"\u743D\u743E\u743F\u7440\u7442\",11],\n[\"ac80\",\"\u744E\",6,\"\u7456\u7458\u745D\u7460\",12,\"\u746E\u746F\u7471\",4,\"\u7478\u7479\u747A\"],\n[\"ad40\",\"\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491\",10,\"\u749D\u749F\",7,\"\u74AA\",15,\"\u74BB\",12],\n[\"ad80\",\"\u74C8\",9,\"\u74D3\",8,\"\u74DD\u74DF\u74E1\u74E5\u74E7\",6,\"\u74F0\u74F1\u74F2\"],\n[\"ae40\",\"\u74F3\u74F5\u74F8\",6,\"\u7500\u7501\u7502\u7503\u7505\",7,\"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520\",4,\"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558\"],\n[\"ae80\",\"\u755D\",7,\"\u7567\u7568\u7569\u756B\",6,\"\u7573\u7575\u7576\u7577\u757A\",4,\"\u7580\u7581\u7582\u7584\u7585\u7587\"],\n[\"af40\",\"\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6\",4,\"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607\"],\n[\"af80\",\"\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644\"],\n[\"b040\",\"\u7645\",6,\"\u764E\",5,\"\u7655\u7657\",4,\"\u765D\u765F\u7660\u7661\u7662\u7664\",6,\"\u766C\u766D\u766E\u7670\",7,\"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B\"],\n[\"b080\",\"\u769C\",7,\"\u76A5\",8,\"\u76AF\u76B0\u76B3\u76B5\",9,\"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265\"],\n[\"b140\",\"\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0\",4,\"\u76E6\",7,\"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E\",10,\"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B\"],\n[\"b180\",\"\u772C\u772E\u7730\",4,\"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748\",7,\"\u7752\",7,\"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3\"],\n[\"b240\",\"\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D\",11,\"\u777A\u777B\u777C\u7781\u7782\u7783\u7786\",5,\"\u778F\u7790\u7793\",11,\"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6\",4],\n[\"b280\",\"\u77BC\u77BE\u77C0\",12,\"\u77CE\",8,\"\u77D8\u77D9\u77DA\u77DD\",4,\"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316\"],\n[\"b340\",\"\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803\",5,\"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A\"],\n[\"b380\",\"\u785B\u785C\u785E\",11,\"\u786F\",7,\"\u7878\u7879\u787A\u787B\u787D\",6,\"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A\"],\n[\"b440\",\"\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8\",7,\"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA\",9],\n[\"b480\",\"\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED\",4,\"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB\",5,\"\u7902\u7903\u7904\u7906\",6,\"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E\"],\n[\"b540\",\"\u790D\",5,\"\u7914\",9,\"\u791F\",4,\"\u7925\",14,\"\u7935\",4,\"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A\",8,\"\u7954\u7955\u7958\u7959\u7961\u7963\"],\n[\"b580\",\"\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970\",6,\"\u7979\u797B\",4,\"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0\"],\n[\"b640\",\"\u7993\",6,\"\u799B\",11,\"\u79A8\",10,\"\u79B4\",4,\"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9\",5,\"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA\"],\n[\"b680\",\"\u79EC\u79EE\u79F1\",6,\"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F\",4,\"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C\"],\n[\"b740\",\"\u7A1D\u7A1F\u7A21\u7A22\u7A24\",14,\"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40\",5,\"\u7A47\",9,\"\u7A52\",4,\"\u7A58\",16],\n[\"b780\",\"\u7A69\",6,\"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D\"],\n[\"b840\",\"\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE\",4,\"\u7AB4\",10,\"\u7AC0\",10,\"\u7ACC\",9,\"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7\",5,\"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3\"],\n[\"b880\",\"\u7AF4\",4,\"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9\"],\n[\"b940\",\"\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F\",5,\"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63\",10,\"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86\",6,\"\u7B8E\u7B8F\"],\n[\"b980\",\"\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9\",7,\"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8\"],\n[\"ba40\",\"\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4\",4,\"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2\",4,\"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF\",7,\"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10\",5,\"\u7C17\u7C18\u7C19\"],\n[\"ba80\",\"\u7C1A\",4,\"\u7C20\",5,\"\u7C28\u7C29\u7C2B\",12,\"\u7C39\",5,\"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56\"],\n[\"bb40\",\"\u7C43\",9,\"\u7C4E\",36,\"\u7C75\",5,\"\u7C7E\",9],\n[\"bb80\",\"\u7C88\u7C8A\",6,\"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4\",4,\"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95\"],\n[\"bc40\",\"\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE\",6,\"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1\",6,\"\u7CE9\",5,\"\u7CF0\",7,\"\u7CF9\u7CFA\u7CFC\",13,\"\u7D0B\",5],\n[\"bc80\",\"\u7D11\",14,\"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30\",6,\"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6\"],\n[\"bd40\",\"\u7D37\",54,\"\u7D6F\",7],\n[\"bd80\",\"\u7D78\",32,\"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78\"],\n[\"be40\",\"\u7D99\",12,\"\u7DA7\",6,\"\u7DAF\",42],\n[\"be80\",\"\u7DDA\",32,\"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB\"],\n[\"bf40\",\"\u7DFB\",62],\n[\"bf80\",\"\u7E3A\u7E3C\",4,\"\u7E42\",4,\"\u7E48\",21,\"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080\"],\n[\"c040\",\"\u7E5E\",35,\"\u7E83\",23,\"\u7E9C\u7E9D\u7E9E\"],\n[\"c080\",\"\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B\",6,\"\u7F43\u7F46\",9,\"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0\"],\n[\"c140\",\"\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63\",4,\"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82\",7,\"\u7F8B\u7F8D\u7F8F\",4,\"\u7F95\",4,\"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8\",6,\"\u7FB1\"],\n[\"c180\",\"\u7FB3\",4,\"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF\",4,\"\u7FD6\u7FD7\u7FD9\",5,\"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF\"],\n[\"c240\",\"\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4\",6,\"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B\",5,\"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057\"],\n[\"c280\",\"\u8059\u805B\",13,\"\u806B\",5,\"\u8072\",11,\"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B\"],\n[\"c340\",\"\u807E\u8081\u8082\u8085\u8088\u808A\u808D\",5,\"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7\",4,\"\u80CF\",6,\"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B\"],\n[\"c380\",\"\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F\",12,\"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139\",4,\"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478\"],\n[\"c440\",\"\u8140\",5,\"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B\",4,\"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183\",4,\"\u8189\u818B\u818C\u818D\u818E\u8190\u8192\",5,\"\u8199\u819A\u819E\",4,\"\u81A4\u81A5\"],\n[\"c480\",\"\u81A7\u81A9\u81AB\",7,\"\u81B4\",5,\"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD\",6,\"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81\"],\n[\"c540\",\"\u81D4\",14,\"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE\",4,\"\u81F5\",5,\"\u81FD\u81FF\u8203\u8207\",4,\"\u820E\u820F\u8211\u8213\u8215\",5,\"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F\"],\n[\"c580\",\"\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250\",7,\"\u8259\u825B\u825C\u825D\u825E\u8260\",7,\"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7\"],\n[\"c640\",\"\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8\"],\n[\"c680\",\"\u82FA\u82FC\",4,\"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D\",9,\"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390\"],\n[\"c740\",\"\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A\",4,\"\u8353\u8355\",4,\"\u835D\u8362\u8370\",6,\"\u8379\u837A\u837E\",6,\"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1\",6,\"\u83AC\u83AD\u83AE\"],\n[\"c780\",\"\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20\"],\n[\"c840\",\"\u83EE\u83EF\u83F3\",4,\"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412\",5,\"\u8419\u841A\u841B\u841E\",5,\"\u8429\",7,\"\u8432\",5,\"\u8439\u843A\u843B\u843E\",7,\"\u8447\u8448\u8449\"],\n[\"c880\",\"\u844A\",6,\"\u8452\",4,\"\u8458\u845D\u845E\u845F\u8460\u8462\u8464\",4,\"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1\"],\n[\"c940\",\"\u847D\",4,\"\u8483\u8484\u8485\u8486\u848A\u848D\u848F\",7,\"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2\",12,\"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7\"],\n[\"c980\",\"\u84D8\",4,\"\u84DE\u84E1\u84E2\u84E4\u84E7\",4,\"\u84ED\u84EE\u84EF\u84F1\",10,\"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3\"],\n[\"ca40\",\"\u8503\",8,\"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522\",8,\"\u852D\",9,\"\u853E\",4,\"\u8544\u8545\u8546\u8547\u854B\",10],\n[\"ca80\",\"\u8557\u8558\u855A\u855B\u855C\u855D\u855F\",4,\"\u8565\u8566\u8567\u8569\",8,\"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31\"],\n[\"cb40\",\"\u8582\u8583\u8586\u8588\",6,\"\u8590\",10,\"\u859D\",6,\"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1\",5,\"\u85B8\u85BA\",6,\"\u85C2\",6,\"\u85CA\",4,\"\u85D1\u85D2\"],\n[\"cb80\",\"\u85D4\u85D6\",5,\"\u85DD\",6,\"\u85E5\u85E6\u85E7\u85E8\u85EA\",14,\"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854\"],\n[\"cc40\",\"\u85F9\u85FA\u85FC\u85FD\u85FE\u8600\",4,\"\u8606\",10,\"\u8612\u8613\u8614\u8615\u8617\",15,\"\u8628\u862A\",13,\"\u8639\u863A\u863B\u863D\u863E\u863F\u8640\"],\n[\"cc80\",\"\u8641\",11,\"\u8652\u8653\u8655\",4,\"\u865B\u865C\u865D\u865F\u8660\u8661\u8663\",7,\"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3\"],\n[\"cd40\",\"\u866D\u866F\u8670\u8672\",6,\"\u8683\",6,\"\u868E\",4,\"\u8694\u8696\",5,\"\u869E\",4,\"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB\",4,\"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC\"],\n[\"cd80\",\"\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01\"],\n[\"ce40\",\"\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740\",6,\"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A\",5,\"\u8761\u8762\u8766\",7,\"\u876F\u8771\u8772\u8773\u8775\"],\n[\"ce80\",\"\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E\",4,\"\u8794\u8795\u8796\u8798\",6,\"\u87A0\",4,\"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A\"],\n[\"cf40\",\"\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1\",4,\"\u87C7\u87C8\u87C9\u87CC\",4,\"\u87D4\",6,\"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF\",9],\n[\"cf80\",\"\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804\",5,\"\u880B\",7,\"\u8814\u8817\u8818\u8819\u881A\u881C\",4,\"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653\"],\n[\"d040\",\"\u8824\",13,\"\u8833\",5,\"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846\",5,\"\u884E\",5,\"\u8855\u8856\u8858\u885A\",6,\"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A\"],\n[\"d080\",\"\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897\",4,\"\u889D\",4,\"\u88A3\u88A5\",5,\"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384\"],\n[\"d140\",\"\u88AC\u88AE\u88AF\u88B0\u88B2\",4,\"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA\",4,\"\u88E0\u88E1\u88E6\u88E7\u88E9\",6,\"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903\",5],\n[\"d180\",\"\u8909\u890B\",4,\"\u8911\u8914\",4,\"\u891C\",4,\"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476\"],\n[\"d240\",\"\u8938\",8,\"\u8942\u8943\u8945\",24,\"\u8960\",5,\"\u8967\",19,\"\u897C\"],\n[\"d280\",\"\u897D\u897E\u8980\u8982\u8984\u8985\u8987\",26,\"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690\"],\n[\"d340\",\"\u89A2\",30,\"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4\",6],\n[\"d380\",\"\u89FB\",4,\"\u8A01\",5,\"\u8A08\",21,\"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89\"],\n[\"d440\",\"\u8A1E\",31,\"\u8A3F\",8,\"\u8A49\",21],\n[\"d480\",\"\u8A5F\",25,\"\u8A7A\",6,\"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67\"],\n[\"d540\",\"\u8A81\",7,\"\u8A8B\",7,\"\u8A94\",46],\n[\"d580\",\"\u8AC3\",32,\"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F\"],\n[\"d640\",\"\u8AE4\",34,\"\u8B08\",27],\n[\"d680\",\"\u8B24\u8B25\u8B27\",30,\"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51\"],\n[\"d740\",\"\u8B46\",31,\"\u8B67\",4,\"\u8B6D\",25],\n[\"d780\",\"\u8B87\",24,\"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7\"],\n[\"d840\",\"\u8C38\",8,\"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D\",7,\"\u8C56\u8C57\u8C58\u8C59\u8C5B\",5,\"\u8C63\",6,\"\u8C6C\",6,\"\u8C74\u8C75\u8C76\u8C77\u8C7B\",6,\"\u8C83\u8C84\u8C86\u8C87\"],\n[\"d880\",\"\u8C88\u8C8B\u8C8D\",6,\"\u8C95\u8C96\u8C97\u8C99\",20,\"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D\"],\n[\"d940\",\"\u8CAE\",62],\n[\"d980\",\"\u8CED\",32,\"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC\"],\n[\"da40\",\"\u8D0E\",14,\"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78\",8,\"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C\",4,\"\u8D92\u8D93\u8D95\",9,\"\u8DA0\u8DA1\"],\n[\"da80\",\"\u8DA2\u8DA4\",12,\"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA\"],\n[\"db40\",\"\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE\",6,\"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15\",7,\"\u8E20\u8E21\u8E24\",4,\"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E\"],\n[\"db80\",\"\u8E3F\u8E43\u8E45\u8E46\u8E4C\",4,\"\u8E53\",5,\"\u8E5A\",11,\"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD\"],\n[\"dc40\",\"\u8E73\u8E75\u8E77\",4,\"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88\",6,\"\u8E91\u8E92\u8E93\u8E95\",6,\"\u8E9D\u8E9F\",11,\"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3\",6,\"\u8EBB\",7],\n[\"dc80\",\"\u8EC3\",10,\"\u8ECF\",21,\"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365\"],\n[\"dd40\",\"\u8EE5\",62],\n[\"dd80\",\"\u8F24\",32,\"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A\"],\n[\"de40\",\"\u8F45\",32,\"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6\"],\n[\"de80\",\"\u8FC9\",4,\"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496\"],\n[\"df40\",\"\u9019\u901C\u9023\u9024\u9025\u9027\",5,\"\u9030\",4,\"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048\",4,\"\u904E\u9054\u9055\u9056\u9059\u905A\u905C\",5,\"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F\",4,\"\u9076\",6,\"\u907E\u9081\"],\n[\"df80\",\"\u9084\u9085\u9086\u9087\u9089\u908A\u908C\",4,\"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C\"],\n[\"e040\",\"\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105\",19,\"\u911A\u911B\u911C\"],\n[\"e080\",\"\u911D\u911F\u9120\u9121\u9124\",10,\"\u9130\u9132\",6,\"\u913A\",8,\"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C\"],\n[\"e140\",\"\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180\",4,\"\u9186\u9188\u918A\u918E\u918F\u9193\",6,\"\u919C\",5,\"\u91A4\",5,\"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB\"],\n[\"e180\",\"\u91BC\",10,\"\u91C8\u91CB\u91D0\u91D2\",9,\"\u91DD\",8,\"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA\"],\n[\"e240\",\"\u91E6\",62],\n[\"e280\",\"\u9225\",32,\"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967\",5,\"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042\"],\n[\"e340\",\"\u9246\",45,\"\u9275\",16],\n[\"e380\",\"\u9286\",7,\"\u928F\",24,\"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE\"],\n[\"e440\",\"\u92A8\",5,\"\u92AF\",24,\"\u92C9\",31],\n[\"e480\",\"\u92E9\",32,\"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1\"],\n[\"e540\",\"\u930A\",51,\"\u933F\",10],\n[\"e580\",\"\u934A\",31,\"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3\"],\n[\"e640\",\"\u936C\",34,\"\u9390\",27],\n[\"e680\",\"\u93AC\",29,\"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9\"],\n[\"e740\",\"\u93CE\",7,\"\u93D7\",54],\n[\"e780\",\"\u940E\",32,\"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21\",6,\"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F\",4,\"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C\"],\n[\"e840\",\"\u942F\",14,\"\u943F\",43,\"\u946C\u946D\u946E\u946F\"],\n[\"e880\",\"\u9470\",20,\"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9\"],\n[\"e940\",\"\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577\",7,\"\u9580\",42],\n[\"e980\",\"\u95AB\",32,\"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B\"],\n[\"ea40\",\"\u95CC\",27,\"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623\",6,\"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657\"],\n[\"ea80\",\"\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D\",4,\"\u9673\u9678\",12,\"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0\"],\n[\"eb40\",\"\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D\",9,\"\u96A8\",7,\"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6\",9,\"\u96E1\",6,\"\u96EB\"],\n[\"eb80\",\"\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717\",4,\"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB\"],\n[\"ec40\",\"\u9721\",8,\"\u972B\u972C\u972E\u972F\u9731\u9733\",4,\"\u973A\u973B\u973C\u973D\u973F\",18,\"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A\",7],\n[\"ec80\",\"\u9772\u9775\u9777\",4,\"\u977D\",7,\"\u9786\",4,\"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799\",4,\"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0\"],\n[\"ed40\",\"\u979E\u979F\u97A1\u97A2\u97A4\",6,\"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5\",46],\n[\"ed80\",\"\u97E4\u97E5\u97E8\u97EE\",4,\"\u97F4\u97F7\",23,\"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768\"],\n[\"ee40\",\"\u980F\",62],\n[\"ee80\",\"\u984E\",32,\"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6\",4,\"\u94BC\u94BD\u94BF\u94C4\u94C8\",6,\"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA\"],\n[\"ef40\",\"\u986F\",5,\"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8\",37,\"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0\",4],\n[\"ef80\",\"\u98E5\u98E6\u98E9\",30,\"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512\",4,\"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564\",8,\"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14\"],\n[\"f040\",\"\u9908\",4,\"\u990E\u990F\u9911\",28,\"\u992F\",26],\n[\"f080\",\"\u994A\",9,\"\u9956\",12,\"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28\",4,\"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66\",6,\"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619\"],\n[\"f140\",\"\u998C\u998E\u999A\",10,\"\u99A6\u99A7\u99A9\",47],\n[\"f180\",\"\u99D9\",32,\"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883\"],\n[\"f240\",\"\u99FA\",62],\n[\"f280\",\"\u9A39\",32,\"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2\"],\n[\"f340\",\"\u9A5A\",17,\"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9\",6,\"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6\",4,\"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC\"],\n[\"f380\",\"\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0\",8,\"\u9AFA\u9AFC\",6,\"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B\"],\n[\"f440\",\"\u9B07\u9B09\",5,\"\u9B10\u9B11\u9B12\u9B14\",10,\"\u9B20\u9B21\u9B22\u9B24\",10,\"\u9B30\u9B31\u9B33\",7,\"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55\",5],\n[\"f480\",\"\u9B5B\",32,\"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164\"],\n[\"f540\",\"\u9B7C\",62],\n[\"f580\",\"\u9BBB\",32,\"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC\"],\n[\"f640\",\"\u9BDC\",62],\n[\"f680\",\"\u9C1B\",32,\"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85\",5,\"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E\",5,\"\u9CA5\",4,\"\u9CAB\u9CAD\u9CAE\u9CB0\",7,\"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB\"],\n[\"f740\",\"\u9C3C\",62],\n[\"f780\",\"\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE\",4,\"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC\",4,\"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44\"],\n[\"f840\",\"\u9CE3\",62],\n[\"f880\",\"\u9D22\",32],\n[\"f940\",\"\u9D43\",62],\n[\"f980\",\"\u9D82\",32],\n[\"fa40\",\"\u9DA3\",62],\n[\"fa80\",\"\u9DE2\",32],\n[\"fb40\",\"\u9E03\",27,\"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74\",9,\"\u9E80\"],\n[\"fb80\",\"\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C\",5,\"\u9E94\",8,\"\u9E9E\u9EA0\",5,\"\u9EA7\u9EA8\u9EA9\u9EAA\"],\n[\"fc40\",\"\u9EAB\",8,\"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF\",4,\"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0\",8,\"\u9EFA\u9EFD\u9EFF\",6],\n[\"fc80\",\"\u9F06\",4,\"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A\",5,\"\u9F21\u9F23\",8,\"\u9F2D\u9F2E\u9F30\u9F31\"],\n[\"fd40\",\"\u9F32\",4,\"\u9F38\u9F3A\u9F3C\u9F3F\",4,\"\u9F45\",10,\"\u9F52\",38],\n[\"fd80\",\"\u9F79\",5,\"\u9F81\u9F82\u9F8D\",11,\"\u9F9C\u9F9D\u9F9E\u9FA1\",4,\"\uF92C\uF979\uF995\uF9E7\uF9F1\"],\n[\"fe40\",\"\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29\"]\n]\n", "[\n[\"a140\",\"\uE4C6\",62],\n[\"a180\",\"\uE505\",32],\n[\"a240\",\"\uE526\",62],\n[\"a280\",\"\uE565\",32],\n[\"a2ab\",\"\uE766\",5],\n[\"a2e3\",\"\u20AC\uE76D\"],\n[\"a2ef\",\"\uE76E\uE76F\"],\n[\"a2fd\",\"\uE770\uE771\"],\n[\"a340\",\"\uE586\",62],\n[\"a380\",\"\uE5C5\",31,\"\u3000\"],\n[\"a440\",\"\uE5E6\",62],\n[\"a480\",\"\uE625\",32],\n[\"a4f4\",\"\uE772\",10],\n[\"a540\",\"\uE646\",62],\n[\"a580\",\"\uE685\",32],\n[\"a5f7\",\"\uE77D\",7],\n[\"a640\",\"\uE6A6\",62],\n[\"a680\",\"\uE6E5\",32],\n[\"a6b9\",\"\uE785\",7],\n[\"a6d9\",\"\uE78D\",6],\n[\"a6ec\",\"\uE794\uE795\"],\n[\"a6f3\",\"\uE796\"],\n[\"a6f6\",\"\uE797\",8],\n[\"a740\",\"\uE706\",62],\n[\"a780\",\"\uE745\",32],\n[\"a7c2\",\"\uE7A0\",14],\n[\"a7f2\",\"\uE7AF\",12],\n[\"a896\",\"\uE7BC\",10],\n[\"a8bc\",\"\u1E3F\"],\n[\"a8bf\",\"\u01F9\"],\n[\"a8c1\",\"\uE7C9\uE7CA\uE7CB\uE7CC\"],\n[\"a8ea\",\"\uE7CD\",20],\n[\"a958\",\"\uE7E2\"],\n[\"a95b\",\"\uE7E3\"],\n[\"a95d\",\"\uE7E4\uE7E5\uE7E6\"],\n[\"a989\",\"\u303E\u2FF0\",11],\n[\"a997\",\"\uE7F4\",12],\n[\"a9f0\",\"\uE801\",14],\n[\"aaa1\",\"\uE000\",93],\n[\"aba1\",\"\uE05E\",93],\n[\"aca1\",\"\uE0BC\",93],\n[\"ada1\",\"\uE11A\",93],\n[\"aea1\",\"\uE178\",93],\n[\"afa1\",\"\uE1D6\",93],\n[\"d7fa\",\"\uE810\",4],\n[\"f8a1\",\"\uE234\",93],\n[\"f9a1\",\"\uE292\",93],\n[\"faa1\",\"\uE2F0\",93],\n[\"fba1\",\"\uE34E\",93],\n[\"fca1\",\"\uE3AC\",93],\n[\"fda1\",\"\uE40A\",93],\n[\"fe50\",\"\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843\"],\n[\"fe80\",\"\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13\",6,\"\u4DAE\uE864\uE468\",93],\n[\"8135f437\",\"\uE7C7\"]\n]\n", "{\"uChars\":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],\"gbChars\":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}", "[\n[\"0\",\"\\u0000\",127],\n[\"8141\",\"\uAC02\uAC03\uAC05\uAC06\uAC0B\",4,\"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25\",6,\"\uAC2E\uAC32\uAC33\uAC34\"],\n[\"8161\",\"\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41\",9,\"\uAC4C\uAC4E\",5,\"\uAC55\"],\n[\"8181\",\"\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D\",18,\"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B\",4,\"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95\",6,\"\uAC9E\uACA2\",5,\"\uACAB\uACAD\uACAE\uACB1\",6,\"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD\",7,\"\uACD6\uACD8\",7,\"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7\",4,\"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07\",4,\"\uAD0E\uAD10\uAD12\uAD13\"],\n[\"8241\",\"\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21\",7,\"\uAD2A\uAD2B\uAD2E\",5],\n[\"8261\",\"\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D\",6,\"\uAD46\uAD48\uAD4A\",5,\"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57\"],\n[\"8281\",\"\uAD59\",7,\"\uAD62\uAD64\",7,\"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83\",4,\"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91\",10,\"\uAD9E\",5,\"\uADA5\",17,\"\uADB8\",7,\"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9\",6,\"\uADD2\uADD4\",7,\"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5\",18],\n[\"8341\",\"\uADFA\uADFB\uADFD\uADFE\uAE02\",5,\"\uAE0A\uAE0C\uAE0E\",5,\"\uAE15\",7],\n[\"8361\",\"\uAE1D\",18,\"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C\"],\n[\"8381\",\"\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57\",4,\"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71\",6,\"\uAE7A\uAE7E\",5,\"\uAE86\",5,\"\uAE8D\",46,\"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5\",6,\"\uAECE\uAED2\",5,\"\uAEDA\uAEDB\uAEDD\",8],\n[\"8441\",\"\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE\",5,\"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD\",8],\n[\"8461\",\"\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11\",18],\n[\"8481\",\"\uAF24\",7,\"\uAF2E\uAF2F\uAF31\uAF33\uAF35\",6,\"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A\",5,\"\uAF51\",10,\"\uAF5E\",5,\"\uAF66\",18,\"\uAF7A\",5,\"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89\",6,\"\uAF92\uAF93\uAF94\uAF96\",5,\"\uAF9D\",26,\"\uAFBA\uAFBB\uAFBD\uAFBE\"],\n[\"8541\",\"\uAFBF\uAFC1\",5,\"\uAFCA\uAFCC\uAFCF\",4,\"\uAFD5\",6,\"\uAFDD\",4],\n[\"8561\",\"\uAFE2\",5,\"\uAFEA\",5,\"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9\",6,\"\uB002\uB003\"],\n[\"8581\",\"\uB005\",6,\"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015\",6,\"\uB01E\",9,\"\uB029\",26,\"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E\",29,\"\uB07E\uB07F\uB081\uB082\uB083\uB085\",6,\"\uB08E\uB090\uB092\",5,\"\uB09B\uB09D\uB09E\uB0A3\uB0A4\"],\n[\"8641\",\"\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD\",6,\"\uB0C6\uB0CA\",5,\"\uB0D2\"],\n[\"8661\",\"\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9\",6,\"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6\",10],\n[\"8681\",\"\uB0F1\",22,\"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E\",4,\"\uB126\uB127\uB129\uB12A\uB12B\uB12D\",6,\"\uB136\uB13A\",5,\"\uB142\uB143\uB145\uB146\uB147\uB149\",6,\"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161\",22,\"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183\",4,\"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D\"],\n[\"8741\",\"\uB19E\",9,\"\uB1A9\",15],\n[\"8761\",\"\uB1B9\",18,\"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5\"],\n[\"8781\",\"\uB1D6\",5,\"\uB1DE\uB1E0\",7,\"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1\",7,\"\uB1FA\uB1FC\uB1FE\",5,\"\uB206\uB207\uB209\uB20A\uB20D\",6,\"\uB216\uB218\uB21A\",5,\"\uB221\",18,\"\uB235\",6,\"\uB23D\",26,\"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261\",6,\"\uB26A\",4],\n[\"8841\",\"\uB26F\",4,\"\uB276\",5,\"\uB27D\",6,\"\uB286\uB287\uB288\uB28A\",4],\n[\"8861\",\"\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B\",4,\"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7\"],\n[\"8881\",\"\uB2B8\",15,\"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3\",4,\"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309\",6,\"\uB312\uB316\",5,\"\uB31D\",54,\"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363\"],\n[\"8941\",\"\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379\",6,\"\uB382\uB386\",5,\"\uB38D\"],\n[\"8961\",\"\uB38E\uB38F\uB391\uB392\uB393\uB395\",10,\"\uB3A2\",5,\"\uB3A9\uB3AA\uB3AB\uB3AD\"],\n[\"8981\",\"\uB3AE\",21,\"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9\",18,\"\uB3FD\",18,\"\uB411\",6,\"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421\",6,\"\uB42A\uB42C\",7,\"\uB435\",15],\n[\"8a41\",\"\uB445\",10,\"\uB452\uB453\uB455\uB456\uB457\uB459\",6,\"\uB462\uB464\uB466\"],\n[\"8a61\",\"\uB467\",4,\"\uB46D\",18,\"\uB481\uB482\"],\n[\"8a81\",\"\uB483\",4,\"\uB489\",19,\"\uB49E\",5,\"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD\",7,\"\uB4B6\uB4B8\uB4BA\",5,\"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9\",6,\"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6\",5,\"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7\",4,\"\uB4EE\uB4F0\uB4F2\",5,\"\uB4F9\",26,\"\uB516\uB517\uB519\uB51A\uB51D\"],\n[\"8b41\",\"\uB51E\",5,\"\uB526\uB52B\",4,\"\uB532\uB533\uB535\uB536\uB537\uB539\",6,\"\uB542\uB546\"],\n[\"8b61\",\"\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555\",6,\"\uB55E\uB562\",8],\n[\"8b81\",\"\uB56B\",52,\"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6\",4,\"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5\",6,\"\uB5CE\uB5D2\",5,\"\uB5D9\",18,\"\uB5ED\",18],\n[\"8c41\",\"\uB600\",15,\"\uB612\uB613\uB615\uB616\uB617\uB619\",4],\n[\"8c61\",\"\uB61E\",6,\"\uB626\",5,\"\uB62D\",6,\"\uB635\",5],\n[\"8c81\",\"\uB63B\",12,\"\uB649\",26,\"\uB665\uB666\uB667\uB669\",50,\"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5\",5,\"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2\",16],\n[\"8d41\",\"\uB6C3\",16,\"\uB6D5\",8],\n[\"8d61\",\"\uB6DE\",17,\"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA\"],\n[\"8d81\",\"\uB6FB\",4,\"\uB702\uB703\uB704\uB706\",33,\"\uB72A\uB72B\uB72D\uB72E\uB731\",6,\"\uB73A\uB73C\",7,\"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D\",6,\"\uB756\",9,\"\uB761\uB762\uB763\uB765\uB766\uB767\uB769\",6,\"\uB772\uB774\uB776\",5,\"\uB77E\uB77F\uB781\uB782\uB783\uB785\",6,\"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E\"],\n[\"8e41\",\"\uB79F\uB7A1\",6,\"\uB7AA\uB7AE\",5,\"\uB7B6\uB7B7\uB7B9\",8],\n[\"8e61\",\"\uB7C2\",4,\"\uB7C8\uB7CA\",19],\n[\"8e81\",\"\uB7DE\",13,\"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5\",6,\"\uB7FE\uB802\",4,\"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811\",6,\"\uB81A\uB81C\uB81E\",5,\"\uB826\uB827\uB829\uB82A\uB82B\uB82D\",6,\"\uB836\uB83A\",5,\"\uB841\uB842\uB843\uB845\",11,\"\uB852\uB854\",7,\"\uB85E\uB85F\uB861\uB862\uB863\uB865\",6,\"\uB86E\uB870\uB872\",5,\"\uB879\uB87A\uB87B\uB87D\",7],\n[\"8f41\",\"\uB885\",7,\"\uB88E\",17],\n[\"8f61\",\"\uB8A0\",7,\"\uB8A9\",6,\"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9\",4],\n[\"8f81\",\"\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6\",5,\"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5\",7,\"\uB8DE\uB8E0\uB8E2\",5,\"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1\",6,\"\uB8FA\uB8FC\uB8FE\",5,\"\uB905\",18,\"\uB919\",6,\"\uB921\",26,\"\uB93E\uB93F\uB941\uB942\uB943\uB945\",6,\"\uB94D\uB94E\uB950\uB952\",5],\n[\"9041\",\"\uB95A\uB95B\uB95D\uB95E\uB95F\uB961\",6,\"\uB96A\uB96C\uB96E\",5,\"\uB976\uB977\uB979\uB97A\uB97B\uB97D\"],\n[\"9061\",\"\uB97E\",5,\"\uB986\uB988\uB98B\uB98C\uB98F\",15],\n[\"9081\",\"\uB99F\",12,\"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5\",6,\"\uB9BE\uB9C0\uB9C2\",5,\"\uB9CA\uB9CB\uB9CD\uB9D3\",4,\"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED\",6,\"\uB9F6\uB9FB\",4,\"\uBA02\",5,\"\uBA09\",11,\"\uBA16\",33,\"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46\"],\n[\"9141\",\"\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D\",6,\"\uBA66\uBA6A\",5],\n[\"9161\",\"\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79\",9,\"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D\",5],\n[\"9181\",\"\uBA93\",20,\"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3\",4,\"\uBABA\uBABC\uBABE\",5,\"\uBAC5\uBAC6\uBAC7\uBAC9\",14,\"\uBADA\",33,\"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05\",7,\"\uBB0E\uBB10\uBB12\",5,\"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21\",6],\n[\"9241\",\"\uBB28\uBB2A\uBB2C\",7,\"\uBB37\uBB39\uBB3A\uBB3F\",4,\"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52\"],\n[\"9261\",\"\uBB53\uBB55\uBB56\uBB57\uBB59\",7,\"\uBB62\uBB64\",7,\"\uBB6D\",4],\n[\"9281\",\"\uBB72\",21,\"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91\",18,\"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD\",6,\"\uBBB5\uBBB6\uBBB8\",7,\"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9\",6,\"\uBBD1\uBBD2\uBBD4\",35,\"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01\"],\n[\"9341\",\"\uBC03\",4,\"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35\"],\n[\"9361\",\"\uBC36\uBC37\uBC39\",6,\"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51\",8],\n[\"9381\",\"\uBC5A\uBC5B\uBC5C\uBC5E\",37,\"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F\",4,\"\uBC96\uBC98\uBC9B\",4,\"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9\",6,\"\uBCB2\uBCB6\",5,\"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5\",7,\"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD\",22,\"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD\"],\n[\"9441\",\"\uBCFE\",5,\"\uBD06\uBD08\uBD0A\",5,\"\uBD11\uBD12\uBD13\uBD15\",8],\n[\"9461\",\"\uBD1E\",5,\"\uBD25\",6,\"\uBD2D\",12],\n[\"9481\",\"\uBD3A\",5,\"\uBD41\",6,\"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51\",6,\"\uBD5A\",9,\"\uBD65\uBD66\uBD67\uBD69\",22,\"\uBD82\uBD83\uBD85\uBD86\uBD8B\",4,\"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D\",6,\"\uBDA5\",10,\"\uBDB1\",6,\"\uBDB9\",24],\n[\"9541\",\"\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD\",11,\"\uBDEA\",5,\"\uBDF1\"],\n[\"9561\",\"\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9\",6,\"\uBE01\uBE02\uBE04\uBE06\",5,\"\uBE0E\uBE0F\uBE11\uBE12\uBE13\"],\n[\"9581\",\"\uBE15\",6,\"\uBE1E\uBE20\",35,\"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F\",4,\"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B\",4,\"\uBE72\uBE76\",4,\"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85\",6,\"\uBE8E\uBE92\",5,\"\uBE9A\",13,\"\uBEA9\",14],\n[\"9641\",\"\uBEB8\",23,\"\uBED2\uBED3\"],\n[\"9661\",\"\uBED5\uBED6\uBED9\",6,\"\uBEE1\uBEE2\uBEE6\",5,\"\uBEED\",8],\n[\"9681\",\"\uBEF6\",10,\"\uBF02\",5,\"\uBF0A\",13,\"\uBF1A\uBF1E\",33,\"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49\",6,\"\uBF52\uBF53\uBF54\uBF56\",44],\n[\"9741\",\"\uBF83\",16,\"\uBF95\",8],\n[\"9761\",\"\uBF9E\",17,\"\uBFB1\",7],\n[\"9781\",\"\uBFB9\",11,\"\uBFC6\",5,\"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5\",6,\"\uBFDD\uBFDE\uBFE0\uBFE2\",89,\"\uC03D\uC03E\uC03F\"],\n[\"9841\",\"\uC040\",16,\"\uC052\",5,\"\uC059\uC05A\uC05B\"],\n[\"9861\",\"\uC05D\uC05E\uC05F\uC061\",6,\"\uC06A\",15],\n[\"9881\",\"\uC07A\",21,\"\uC092\uC093\uC095\uC096\uC097\uC099\",6,\"\uC0A2\uC0A4\uC0A6\",5,\"\uC0AE\uC0B1\uC0B2\uC0B7\",4,\"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1\",6,\"\uC0DA\uC0DE\",5,\"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED\",6,\"\uC0F6\uC0F8\uC0FA\",5,\"\uC101\uC102\uC103\uC105\uC106\uC107\uC109\",6,\"\uC111\uC112\uC113\uC114\uC116\",5,\"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E\"],\n[\"9941\",\"\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141\",6,\"\uC14A\uC14E\",5,\"\uC156\uC157\"],\n[\"9961\",\"\uC159\uC15A\uC15B\uC15D\",6,\"\uC166\uC16A\",5,\"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B\"],\n[\"9981\",\"\uC17C\",8,\"\uC186\",5,\"\uC18F\uC191\uC192\uC193\uC195\uC197\",4,\"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1\",11,\"\uC1BE\",5,\"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD\",6,\"\uC1D5\uC1D6\uC1D9\",6,\"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9\",6,\"\uC1F2\uC1F4\",7,\"\uC1FE\uC1FF\uC201\uC202\uC203\uC205\",6,\"\uC20E\uC210\uC212\",5,\"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223\"],\n[\"9a41\",\"\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235\",16],\n[\"9a61\",\"\uC246\uC247\uC249\",6,\"\uC252\uC253\uC255\uC256\uC257\uC259\",6,\"\uC261\uC262\uC263\uC264\uC266\"],\n[\"9a81\",\"\uC267\",4,\"\uC26E\uC26F\uC271\uC272\uC273\uC275\",6,\"\uC27E\uC280\uC282\",5,\"\uC28A\",5,\"\uC291\",6,\"\uC299\uC29A\uC29C\uC29E\",5,\"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE\",5,\"\uC2B6\uC2B8\uC2BA\",33,\"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5\",5,\"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301\",6,\"\uC30A\uC30B\uC30E\uC30F\"],\n[\"9b41\",\"\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D\",6,\"\uC326\uC327\uC32A\",8],\n[\"9b61\",\"\uC333\",17,\"\uC346\",7],\n[\"9b81\",\"\uC34E\",25,\"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373\",4,\"\uC37A\uC37B\uC37E\",5,\"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D\",50,\"\uC3C1\",22,\"\uC3DA\"],\n[\"9c41\",\"\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3\",4,\"\uC3EA\uC3EB\uC3EC\uC3EE\",5,\"\uC3F6\uC3F7\uC3F9\",5],\n[\"9c61\",\"\uC3FF\",8,\"\uC409\",6,\"\uC411\",9],\n[\"9c81\",\"\uC41B\",8,\"\uC425\",6,\"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435\",6,\"\uC43E\",9,\"\uC449\",26,\"\uC466\uC467\uC469\uC46A\uC46B\uC46D\",6,\"\uC476\uC477\uC478\uC47A\",5,\"\uC481\",18,\"\uC495\",6,\"\uC49D\",12],\n[\"9d41\",\"\uC4AA\",13,\"\uC4B9\uC4BA\uC4BB\uC4BD\",8],\n[\"9d61\",\"\uC4C6\",25],\n[\"9d81\",\"\uC4E0\",8,\"\uC4EA\",5,\"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502\",9,\"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515\",6,\"\uC51D\",10,\"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531\",6,\"\uC53A\uC53C\uC53E\",5,\"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569\",6,\"\uC572\uC576\",5,\"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594\"],\n[\"9e41\",\"\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1\",7,\"\uC5AA\",9,\"\uC5B6\"],\n[\"9e61\",\"\uC5B7\uC5BA\uC5BF\",4,\"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9\",6,\"\uC5E2\uC5E4\uC5E6\uC5E7\"],\n[\"9e81\",\"\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611\",6,\"\uC61A\uC61D\",6,\"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649\",6,\"\uC652\uC656\",5,\"\uC65E\uC65F\uC661\",10,\"\uC66D\uC66E\uC670\uC672\",5,\"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681\",6,\"\uC68A\uC68C\uC68E\",5,\"\uC696\uC697\uC699\uC69A\uC69B\uC69D\",6,\"\uC6A6\"],\n[\"9f41\",\"\uC6A8\uC6AA\",5,\"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB\",4,\"\uC6C2\uC6C4\uC6C6\",5,\"\uC6CE\"],\n[\"9f61\",\"\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5\",6,\"\uC6DE\uC6DF\uC6E2\",5,\"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2\"],\n[\"9f81\",\"\uC6F3\",4,\"\uC6FA\uC6FB\uC6FC\uC6FE\",5,\"\uC706\uC707\uC709\uC70A\uC70B\uC70D\",6,\"\uC716\uC718\uC71A\",5,\"\uC722\uC723\uC725\uC726\uC727\uC729\",6,\"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745\",4,\"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761\",6,\"\uC769\uC76A\uC76C\",7,\"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B\",4,\"\uC7A2\uC7A7\",4,\"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7\"],\n[\"a041\",\"\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2\",5,\"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1\",6,\"\uC7D9\uC7DA\uC7DB\uC7DC\"],\n[\"a061\",\"\uC7DE\",5,\"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED\",13],\n[\"a081\",\"\uC7FB\",4,\"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B\",4,\"\uC812\uC814\uC817\",4,\"\uC81E\uC81F\uC821\uC822\uC823\uC825\",6,\"\uC82E\uC830\uC832\",5,\"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841\",6,\"\uC84A\uC84B\uC84E\",5,\"\uC855\",26,\"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B\",4,\"\uC882\uC884\uC888\uC889\uC88A\uC88E\",5,\"\uC895\",7,\"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4\"],\n[\"a141\",\"\uC8A5\uC8A6\uC8A7\uC8A9\",18,\"\uC8BE\uC8BF\uC8C0\uC8C1\"],\n[\"a161\",\"\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD\",6,\"\uC8D6\uC8D8\uC8DA\",5,\"\uC8E2\uC8E3\uC8E5\"],\n[\"a181\",\"\uC8E6\",14,\"\uC8F6\",5,\"\uC8FE\uC8FF\uC901\uC902\uC903\uC907\",4,\"\uC90E\u3000\u3001\u3002\u00B7\u2025\u2026\u00A8\u3003\u00AD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008\",9,\"\u00B1\u00D7\u00F7\u2260\u2264\u2265\u221E\u2234\u00B0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u00A7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2\"],\n[\"a241\",\"\uC910\uC912\",5,\"\uC919\",18],\n[\"a261\",\"\uC92D\",6,\"\uC935\",18],\n[\"a281\",\"\uC948\",7,\"\uC952\uC953\uC955\uC956\uC957\uC959\",6,\"\uC962\uC964\",7,\"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\u00B4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\u00B8\u02DB\u00A1\u00BF\u02D0\u222E\u2211\u220F\u00A4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\u00B6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\u00AE\"],\n[\"a341\",\"\uC971\uC972\uC973\uC975\",6,\"\uC97D\",10,\"\uC98A\uC98B\uC98D\uC98E\uC98F\"],\n[\"a361\",\"\uC991\",6,\"\uC99A\uC99C\uC99E\",16],\n[\"a381\",\"\uC9AF\",16,\"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB\",4,\"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01\",58,\"\uFFE6\uFF3D\",32,\"\uFFE3\"],\n[\"a441\",\"\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2\",5,\"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04\"],\n[\"a461\",\"\uCA05\uCA06\uCA07\uCA0A\uCA0E\",5,\"\uCA15\uCA16\uCA17\uCA19\",12],\n[\"a481\",\"\uCA26\uCA27\uCA28\uCA2A\",28,\"\u3131\",93],\n[\"a541\",\"\uCA47\",4,\"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55\",6,\"\uCA5E\uCA62\",5,\"\uCA69\uCA6A\"],\n[\"a561\",\"\uCA6B\",17,\"\uCA7E\",5,\"\uCA85\uCA86\"],\n[\"a581\",\"\uCA87\",16,\"\uCA99\",14,\"\u2170\",9],\n[\"a5b0\",\"\u2160\",9],\n[\"a5c1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a5e1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a641\",\"\uCAA8\",19,\"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5\"],\n[\"a661\",\"\uCAC6\",5,\"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA\",5,\"\uCAE1\",6],\n[\"a681\",\"\uCAE8\uCAE9\uCAEA\uCAEB\uCAED\",6,\"\uCAF5\",18,\"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543\",7],\n[\"a741\",\"\uCB0B\",4,\"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19\",6,\"\uCB22\",7],\n[\"a761\",\"\uCB2A\",22,\"\uCB42\uCB43\uCB44\"],\n[\"a781\",\"\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51\",6,\"\uCB5A\uCB5B\uCB5C\uCB5E\",5,\"\uCB65\",7,\"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399\",9,\"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0\",9,\"\u3380\",4,\"\u33BA\",5,\"\u3390\",4,\"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6\"],\n[\"a841\",\"\uCB6D\",10,\"\uCB7A\",14],\n[\"a861\",\"\uCB89\",18,\"\uCB9D\",6],\n[\"a881\",\"\uCBA4\",19,\"\uCBB9\",11,\"\u00C6\u00D0\u00AA\u0126\"],\n[\"a8a6\",\"\u0132\"],\n[\"a8a8\",\"\u013F\u0141\u00D8\u0152\u00BA\u00DE\u0166\u014A\"],\n[\"a8b1\",\"\u3260\",27,\"\u24D0\",25,\"\u2460\",14,\"\u00BD\u2153\u2154\u00BC\u00BE\u215B\u215C\u215D\u215E\"],\n[\"a941\",\"\uCBC5\",14,\"\uCBD5\",10],\n[\"a961\",\"\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA\",18],\n[\"a981\",\"\uCBFD\",14,\"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15\",6,\"\uCC1E\uCC1F\uCC20\uCC23\uCC24\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0140\u0142\u00F8\u0153\u00DF\u00FE\u0167\u014B\u0149\u3200\",27,\"\u249C\",25,\"\u2474\",14,\"\u00B9\u00B2\u00B3\u2074\u207F\u2081\u2082\u2083\u2084\"],\n[\"aa41\",\"\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31\",6,\"\uCC3A\uCC3F\",4,\"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E\"],\n[\"aa61\",\"\uCC4F\",4,\"\uCC56\uCC5A\",5,\"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69\",6,\"\uCC71\uCC72\"],\n[\"aa81\",\"\uCC73\uCC74\uCC76\",29,\"\u3041\",82],\n[\"ab41\",\"\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1\",6,\"\uCCAA\uCCAE\",5,\"\uCCB6\uCCB7\uCCB9\"],\n[\"ab61\",\"\uCCBA\uCCBB\uCCBD\",6,\"\uCCC6\uCCC8\uCCCA\",5,\"\uCCD1\uCCD2\uCCD3\uCCD5\",5],\n[\"ab81\",\"\uCCDB\",8,\"\uCCE5\",6,\"\uCCED\uCCEE\uCCEF\uCCF1\",12,\"\u30A1\",85],\n[\"ac41\",\"\uCCFE\uCCFF\uCD00\uCD02\",5,\"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11\",6,\"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20\"],\n[\"ac61\",\"\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D\",11,\"\uCD3A\",4],\n[\"ac81\",\"\uCD3F\",28,\"\uCD5D\uCD5E\uCD5F\u0410\",5,\"\u0401\u0416\",25],\n[\"acd1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"ad41\",\"\uCD61\uCD62\uCD63\uCD65\",6,\"\uCD6E\uCD70\uCD72\",5,\"\uCD79\",7],\n[\"ad61\",\"\uCD81\",6,\"\uCD89\",10,\"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F\"],\n[\"ad81\",\"\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA\",5,\"\uCDB1\",18,\"\uCDC5\"],\n[\"ae41\",\"\uCDC6\",5,\"\uCDCD\uCDCE\uCDCF\uCDD1\",16],\n[\"ae61\",\"\uCDE2\",5,\"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1\",6,\"\uCDFA\uCDFC\uCDFE\",4],\n[\"ae81\",\"\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D\",6,\"\uCE15\uCE16\uCE17\uCE18\uCE1A\",5,\"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B\"],\n[\"af41\",\"\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36\",19],\n[\"af61\",\"\uCE4A\",13,\"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62\",5,\"\uCE6A\uCE6C\"],\n[\"af81\",\"\uCE6E\",5,\"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D\",6,\"\uCE86\uCE88\uCE8A\",5,\"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99\"],\n[\"b041\",\"\uCE9A\",5,\"\uCEA2\uCEA6\",5,\"\uCEAE\",12],\n[\"b061\",\"\uCEBB\",5,\"\uCEC2\",19],\n[\"b081\",\"\uCED6\",13,\"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED\",6,\"\uCEF6\uCEFA\",5,\"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10\",7,\"\uAC19\",4,\"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06\"],\n[\"b141\",\"\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09\",6,\"\uCF12\uCF14\uCF16\",5,\"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23\"],\n[\"b161\",\"\uCF25\",6,\"\uCF2E\uCF32\",5,\"\uCF39\",11],\n[\"b181\",\"\uCF45\",14,\"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D\",6,\"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78\"],\n[\"b241\",\"\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79\",6,\"\uCF81\uCF82\uCF83\uCF84\uCF86\",5,\"\uCF8D\"],\n[\"b261\",\"\uCF8E\",18,\"\uCFA2\",5,\"\uCFA9\"],\n[\"b281\",\"\uCFAA\",5,\"\uCFB1\",18,\"\uCFC5\",6,\"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059\"],\n[\"b341\",\"\uCFCC\",19,\"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9\"],\n[\"b361\",\"\uCFEA\",5,\"\uCFF2\uCFF4\uCFF6\",5,\"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005\",5],\n[\"b381\",\"\uD00B\",5,\"\uD012\",5,\"\uD019\",19,\"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB\",4,\"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD\"],\n[\"b441\",\"\uD02E\",5,\"\uD036\uD037\uD039\uD03A\uD03B\uD03D\",6,\"\uD046\uD048\uD04A\",5],\n[\"b461\",\"\uD051\uD052\uD053\uD055\uD056\uD057\uD059\",6,\"\uD061\",10,\"\uD06E\uD06F\"],\n[\"b481\",\"\uD071\uD072\uD073\uD075\",6,\"\uD07E\uD07F\uD080\uD082\",18,\"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB\",4,\"\uB2F3\uB2F4\uB2F5\uB2F7\",4,\"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365\"],\n[\"b541\",\"\uD095\",14,\"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD\",5],\n[\"b561\",\"\uD0B3\uD0B6\uD0B8\uD0BA\",5,\"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA\",5,\"\uD0D2\uD0D6\",4],\n[\"b581\",\"\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5\",6,\"\uD0EE\uD0F2\",5,\"\uD0F9\",11,\"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538\"],\n[\"b641\",\"\uD105\",7,\"\uD10E\",17],\n[\"b661\",\"\uD120\",15,\"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E\"],\n[\"b681\",\"\uD13F\uD142\uD146\",5,\"\uD14E\uD14F\uD151\uD152\uD153\uD155\",6,\"\uD15E\uD160\uD162\",5,\"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797\"],\n[\"b741\",\"\uD16E\",13,\"\uD17D\",6,\"\uD185\uD186\uD187\uD189\uD18A\"],\n[\"b761\",\"\uD18B\",20,\"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7\"],\n[\"b781\",\"\uD1A9\",6,\"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1\",14,\"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969\"],\n[\"b841\",\"\uD1D0\",7,\"\uD1D9\",17],\n[\"b861\",\"\uD1EB\",8,\"\uD1F5\uD1F6\uD1F7\uD1F9\",13],\n[\"b881\",\"\uD208\uD20A\",5,\"\uD211\",24,\"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE\",4,\"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC\"],\n[\"b941\",\"\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235\",6,\"\uD23E\uD240\uD242\",5,\"\uD249\uD24A\uD24B\uD24C\"],\n[\"b961\",\"\uD24D\",14,\"\uD25D\",6,\"\uD265\uD266\uD267\uD268\"],\n[\"b981\",\"\uD269\",22,\"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14\",4,\"\uBC1B\",4,\"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97\"],\n[\"ba41\",\"\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296\",5,\"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5\",6,\"\uD2AD\"],\n[\"ba61\",\"\uD2AE\uD2AF\uD2B0\uD2B2\",5,\"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3\",4,\"\uD2CA\uD2CC\",5],\n[\"ba81\",\"\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD\",6,\"\uD2E6\",9,\"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64\"],\n[\"bb41\",\"\uD2FB\",4,\"\uD302\uD304\uD306\",5,\"\uD30F\uD311\uD312\uD313\uD315\uD317\",4,\"\uD31E\uD322\uD323\"],\n[\"bb61\",\"\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331\",6,\"\uD33A\uD33E\",5,\"\uD346\uD347\uD348\uD349\"],\n[\"bb81\",\"\uD34A\",31,\"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4\"],\n[\"bc41\",\"\uD36A\",17,\"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387\"],\n[\"bc61\",\"\uD388\uD389\uD38A\uD38B\uD38E\uD392\",5,\"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1\",6,\"\uD3AA\uD3AC\uD3AE\"],\n[\"bc81\",\"\uD3AF\",4,\"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD\",6,\"\uD3C6\uD3C7\uD3CA\",5,\"\uD3D1\",5,\"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C\",4,\"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D\"],\n[\"bd41\",\"\uD3D7\uD3D9\",7,\"\uD3E2\uD3E4\",7,\"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7\"],\n[\"bd61\",\"\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402\",5,\"\uD409\",13],\n[\"bd81\",\"\uD417\",5,\"\uD41E\",25,\"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430\"],\n[\"be41\",\"\uD438\",7,\"\uD441\uD442\uD443\uD445\",14],\n[\"be61\",\"\uD454\",7,\"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465\",7,\"\uD46E\uD470\uD471\uD472\"],\n[\"be81\",\"\uD473\",4,\"\uD47A\uD47B\uD47D\uD47E\uD481\uD483\",4,\"\uD48A\uD48C\uD48E\",5,\"\uD495\",8,\"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4\",6,\"\uC5CC\uC5CE\"],\n[\"bf41\",\"\uD49E\",10,\"\uD4AA\",14],\n[\"bf61\",\"\uD4B9\",18,\"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5\"],\n[\"bf81\",\"\uD4D6\",5,\"\uD4DD\uD4DE\uD4E0\",7,\"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1\",6,\"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC\",5,\"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8\"],\n[\"c041\",\"\uD4FE\",5,\"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D\",6,\"\uD516\uD518\",5],\n[\"c061\",\"\uD51E\",25],\n[\"c081\",\"\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545\",6,\"\uD54E\uD550\uD552\",5,\"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751\",7,\"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A\"],\n[\"c141\",\"\uD564\uD566\uD567\uD56A\uD56C\uD56E\",5,\"\uD576\uD577\uD579\uD57A\uD57B\uD57D\",6,\"\uD586\uD58A\uD58B\"],\n[\"c161\",\"\uD58C\uD58D\uD58E\uD58F\uD591\",19,\"\uD5A6\uD5A7\"],\n[\"c181\",\"\uD5A8\",31,\"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3\"],\n[\"c241\",\"\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3\",4,\"\uD5DA\uD5DC\uD5DE\",5,\"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE\"],\n[\"c261\",\"\uD5EF\",4,\"\uD5F6\uD5F8\uD5FA\",5,\"\uD602\uD603\uD605\uD606\uD607\uD609\",6,\"\uD612\"],\n[\"c281\",\"\uD616\",5,\"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625\",7,\"\uD62E\",9,\"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B\"],\n[\"c341\",\"\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D\",4],\n[\"c361\",\"\uD662\",4,\"\uD668\uD66A\",5,\"\uD672\uD673\uD675\",11],\n[\"c381\",\"\uD681\uD682\uD684\uD686\",5,\"\uD68E\uD68F\uD691\uD692\uD693\uD695\",7,\"\uD69E\uD6A0\uD6A2\",5,\"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35\"],\n[\"c441\",\"\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1\",7,\"\uD6BA\uD6BC\",7,\"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB\"],\n[\"c461\",\"\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA\",5,\"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9\",4],\n[\"c481\",\"\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6\",5,\"\uD6FE\uD6FF\uD701\uD702\uD703\uD705\",11,\"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C\"],\n[\"c541\",\"\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721\",6,\"\uD72A\uD72C\uD72E\",5,\"\uD736\uD737\uD739\"],\n[\"c561\",\"\uD73A\uD73B\uD73D\",6,\"\uD745\uD746\uD748\uD74A\",5,\"\uD752\uD753\uD755\uD75A\",4],\n[\"c581\",\"\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775\",6,\"\uD77E\uD77F\uD780\uD782\",5,\"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C\"],\n[\"c641\",\"\uD78D\uD78E\uD78F\uD791\",6,\"\uD79A\uD79C\uD79E\",5],\n[\"c6a1\",\"\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401\"],\n[\"c7a1\",\"\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620\"],\n[\"c8a1\",\"\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D\"],\n[\"caa1\",\"\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95\"],\n[\"cba1\",\"\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2\"],\n[\"cca1\",\"\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0\"],\n[\"cda1\",\"\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC\"],\n[\"cea1\",\"\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE\"],\n[\"cfa1\",\"\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4\"],\n[\"d0a1\",\"\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3\"],\n[\"d1a1\",\"\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E\",5,\"\u90A3\uF914\",4,\"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925\"],\n[\"d2a1\",\"\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928\",4,\"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933\",5,\"\u99D1\uF939\",10,\"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A\",7,\"\u5AE9\u8A25\u677B\u7D10\uF952\",5,\"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336\"],\n[\"d3a1\",\"\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843\"],\n[\"d4a1\",\"\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85\"],\n[\"d5a1\",\"\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23\"],\n[\"d6a1\",\"\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC\"],\n[\"d7a1\",\"\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C\"],\n[\"d8a1\",\"\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5\"],\n[\"d9a1\",\"\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587\"],\n[\"daa1\",\"\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51\"],\n[\"dba1\",\"\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656\"],\n[\"dca1\",\"\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66\"],\n[\"dda1\",\"\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5\"],\n[\"dea1\",\"\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A\"],\n[\"dfa1\",\"\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72\"],\n[\"e0a1\",\"\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C\"],\n[\"e1a1\",\"\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101\"],\n[\"e2a1\",\"\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27\"],\n[\"e3a1\",\"\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81\"],\n[\"e4a1\",\"\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D\"],\n[\"e5a1\",\"\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982\"],\n[\"e6a1\",\"\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2\"],\n[\"e7a1\",\"\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3\"],\n[\"e8a1\",\"\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1\"],\n[\"e9a1\",\"\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553\"],\n[\"eaa1\",\"\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB\"],\n[\"eba1\",\"\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC\"],\n[\"eca1\",\"\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344\"],\n[\"eda1\",\"\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577\"],\n[\"eea1\",\"\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1\"],\n[\"efa1\",\"\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756\"],\n[\"f0a1\",\"\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B\"],\n[\"f1a1\",\"\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA\"],\n[\"f2a1\",\"\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F\"],\n[\"f3a1\",\"\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56\"],\n[\"f4a1\",\"\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2\"],\n[\"f5a1\",\"\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403\"],\n[\"f6a1\",\"\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17\"],\n[\"f7a1\",\"\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211\"],\n[\"f8a1\",\"\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43\"],\n[\"f9a1\",\"\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A\"],\n[\"faa1\",\"\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B\"],\n[\"fba1\",\"\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575\"],\n[\"fca1\",\"\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6\"],\n[\"fda1\",\"\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70\"]\n]\n", "[\n[\"0\",\"\\u0000\",127],\n[\"a140\",\"\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\u00B7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A\"],\n[\"a1a1\",\"\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\u00A7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\u00AF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\u00D7\u00F7\u00B1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62\",4,\"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F\"],\n[\"a240\",\"\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\u00B0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581\",7,\"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D\"],\n[\"a2a1\",\"\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10\",9,\"\u2160\",9,\"\u3021\",8,\"\u5341\u5344\u5345\uFF21\",25,\"\uFF41\",21],\n[\"a340\",\"\uFF57\uFF58\uFF59\uFF5A\u0391\",16,\"\u03A3\",6,\"\u03B1\",16,\"\u03C3\",6,\"\u3105\",10],\n[\"a3a1\",\"\u3110\",25,\"\u02D9\u02C9\u02CA\u02C7\u02CB\"],\n[\"a3e1\",\"\u20AC\"],\n[\"a440\",\"\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D\"],\n[\"a4a1\",\"\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19\"],\n[\"a540\",\"\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916\"],\n[\"a5a1\",\"\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168\"],\n[\"a640\",\"\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74\"],\n[\"a6a1\",\"\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63\"],\n[\"a740\",\"\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D\"],\n[\"a7a1\",\"\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760\"],\n[\"a840\",\"\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292\"],\n[\"a8a1\",\"\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475\"],\n[\"a940\",\"\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45\"],\n[\"a9a1\",\"\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A\"],\n[\"aa40\",\"\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0\"],\n[\"aaa1\",\"\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644\"],\n[\"ab40\",\"\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1\"],\n[\"aba1\",\"\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7\"],\n[\"ac40\",\"\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17\"],\n[\"aca1\",\"\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004\"],\n[\"ad40\",\"\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5\"],\n[\"ada1\",\"\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA\"],\n[\"ae40\",\"\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059\"],\n[\"aea1\",\"\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93\"],\n[\"af40\",\"\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837\"],\n[\"afa1\",\"\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343\"],\n[\"b040\",\"\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661\"],\n[\"b0a1\",\"\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40\"],\n[\"b140\",\"\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD\"],\n[\"b1a1\",\"\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA\"],\n[\"b240\",\"\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6\"],\n[\"b2a1\",\"\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C\"],\n[\"b340\",\"\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014\"],\n[\"b3a1\",\"\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960\"],\n[\"b440\",\"\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD\"],\n[\"b4a1\",\"\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB\"],\n[\"b540\",\"\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98\"],\n[\"b5a1\",\"\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41\"],\n[\"b640\",\"\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591\"],\n[\"b6a1\",\"\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC\"],\n[\"b740\",\"\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D\"],\n[\"b7a1\",\"\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763\"],\n[\"b840\",\"\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B\"],\n[\"b8a1\",\"\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A\"],\n[\"b940\",\"\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4\"],\n[\"b9a1\",\"\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147\"],\n[\"ba40\",\"\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22\"],\n[\"baa1\",\"\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC\"],\n[\"bb40\",\"\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4\"],\n[\"bba1\",\"\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC\"],\n[\"bc40\",\"\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182\"],\n[\"bca1\",\"\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483\"],\n[\"bd40\",\"\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF\"],\n[\"bda1\",\"\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E\"],\n[\"be40\",\"\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09\"],\n[\"bea1\",\"\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1\"],\n[\"bf40\",\"\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A\"],\n[\"bfa1\",\"\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A\"],\n[\"c040\",\"\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687\"],\n[\"c0a1\",\"\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC\"],\n[\"c140\",\"\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA\"],\n[\"c1a1\",\"\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01\"],\n[\"c240\",\"\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658\"],\n[\"c2a1\",\"\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6\"],\n[\"c340\",\"\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378\"],\n[\"c3a1\",\"\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E\"],\n[\"c440\",\"\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C\"],\n[\"c4a1\",\"\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74\"],\n[\"c540\",\"\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C\"],\n[\"c5a1\",\"\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92\"],\n[\"c640\",\"\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72\"],\n[\"c940\",\"\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\"],\n[\"c9a1\",\"\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B\"],\n[\"ca40\",\"\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418\"],\n[\"caa1\",\"\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747\"],\n[\"cb40\",\"\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293\"],\n[\"cba1\",\"\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762\"],\n[\"cc40\",\"\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B\"],\n[\"cca1\",\"\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2\"],\n[\"cd40\",\"\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA\"],\n[\"cda1\",\"\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF\"],\n[\"ce40\",\"\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB\"],\n[\"cea1\",\"\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA\"],\n[\"cf40\",\"\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42\"],\n[\"cfa1\",\"\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80\"],\n[\"d040\",\"\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA\"],\n[\"d0a1\",\"\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1\"],\n[\"d140\",\"\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067\"],\n[\"d1a1\",\"\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4\"],\n[\"d240\",\"\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278\"],\n[\"d2a1\",\"\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10\"],\n[\"d340\",\"\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322\"],\n[\"d3a1\",\"\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150\"],\n[\"d440\",\"\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545\"],\n[\"d4a1\",\"\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F\"],\n[\"d540\",\"\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F\"],\n[\"d5a1\",\"\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9\"],\n[\"d640\",\"\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF\"],\n[\"d6a1\",\"\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F\"],\n[\"d740\",\"\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7\"],\n[\"d7a1\",\"\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA\"],\n[\"d840\",\"\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837\"],\n[\"d8a1\",\"\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114\"],\n[\"d940\",\"\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2\"],\n[\"d9a1\",\"\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E\"],\n[\"da40\",\"\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416\"],\n[\"daa1\",\"\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65\"],\n[\"db40\",\"\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3\"],\n[\"dba1\",\"\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA\"],\n[\"dc40\",\"\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688\"],\n[\"dca1\",\"\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6\"],\n[\"dd40\",\"\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424\"],\n[\"dda1\",\"\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC\"],\n[\"de40\",\"\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153\"],\n[\"dea1\",\"\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13\"],\n[\"df40\",\"\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F\"],\n[\"dfa1\",\"\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4\"],\n[\"e040\",\"\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F\"],\n[\"e0a1\",\"\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0\"],\n[\"e140\",\"\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0\"],\n[\"e1a1\",\"\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9\"],\n[\"e240\",\"\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A\"],\n[\"e2a1\",\"\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993\"],\n[\"e340\",\"\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE\"],\n[\"e3a1\",\"\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB\"],\n[\"e440\",\"\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D\"],\n[\"e4a1\",\"\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658\"],\n[\"e540\",\"\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189\"],\n[\"e5a1\",\"\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92\"],\n[\"e640\",\"\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359\"],\n[\"e6a1\",\"\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F\"],\n[\"e740\",\"\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662\"],\n[\"e7a1\",\"\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27\"],\n[\"e840\",\"\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3\"],\n[\"e8a1\",\"\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E\"],\n[\"e940\",\"\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\"],\n[\"e9a1\",\"\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8\"],\n[\"ea40\",\"\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799\"],\n[\"eaa1\",\"\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558\"],\n[\"eb40\",\"\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0\"],\n[\"eba1\",\"\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C\"],\n[\"ec40\",\"\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95\"],\n[\"eca1\",\"\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E\"],\n[\"ed40\",\"\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6\"],\n[\"eda1\",\"\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E\"],\n[\"ee40\",\"\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E\"],\n[\"eea1\",\"\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C\"],\n[\"ef40\",\"\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30\"],\n[\"efa1\",\"\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376\"],\n[\"f040\",\"\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2\"],\n[\"f0a1\",\"\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67\"],\n[\"f140\",\"\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA\"],\n[\"f1a1\",\"\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70\"],\n[\"f240\",\"\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B\"],\n[\"f2a1\",\"\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55\"],\n[\"f340\",\"\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726\"],\n[\"f3a1\",\"\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2\"],\n[\"f440\",\"\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929\"],\n[\"f4a1\",\"\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF\"],\n[\"f540\",\"\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B\"],\n[\"f5a1\",\"\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625\"],\n[\"f640\",\"\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A\"],\n[\"f6a1\",\"\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A\"],\n[\"f740\",\"\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A\"],\n[\"f7a1\",\"\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE\"],\n[\"f840\",\"\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F\"],\n[\"f8a1\",\"\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A\"],\n[\"f940\",\"\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\"],\n[\"f9a1\",\"\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593\"]\n]\n", "[\n[\"8740\",\"\u43F0\u4C32\u4603\u45A6\u4578\uD85C\uDE67\u4D77\u45B3\uD85F\uDCB1\u4CE2\uD85F\uDCC5\u3B95\u4736\u4744\u4C47\u4C40\uD850\uDEBF\uD84D\uDE17\uD85C\uDF52\uD85B\uDE8B\uD85C\uDCD2\u4C57\uD868\uDF51\u474F\u45DA\u4C85\uD85F\uDC6C\u4D07\u4AA4\u46A1\uD85A\uDF23\u7225\uD856\uDE54\uD846\uDE63\uD84F\uDE06\uD84F\uDF61\u664D\u56FB\"],\n[\"8767\",\"\u7D95\u591D\uD862\uDFB9\u3DF4\u9734\uD85E\uDFEF\u5BDB\uD847\uDD5E\u5AA4\u3625\uD867\uDEB0\u5AD1\u5BB7\u5CFC\u676E\u8593\uD866\uDD45\u7461\u749D\u3875\uD847\uDD53\uD84D\uDE9E\uD858\uDC21\u3EEC\"],\n[\"87a1\",\"\uD856\uDCDE\u3AF5\u7AFC\u9F97\uD850\uDD61\uD862\uDD0D\uD84C\uDDEA\uD842\uDE8A\uD84C\uDE5E\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\uD857\uDDB9\u74C6\u9FC7\u57B3\u492F\u544C\u4131\uD84D\uDE8E\u5818\u7A72\uD85E\uDF65\u8B8F\u46AE\uD85B\uDE88\u4181\uD857\uDD99\u7BAE\uD849\uDCBC\u9FC8\uD849\uDCC1\uD849\uDCC9\uD849\uDCCC\u9FC9\u8504\uD84D\uDDBB\u40B4\u9FCA\u44E1\uD86B\uDDFF\u62C1\u706E\u9FCB\"],\n[\"8840\",\"\u31C0\",4,\"\uD840\uDD0C\u31C5\uD840\uDCD1\uD840\uDCCD\u31C6\u31C7\uD840\uDCCB\uD847\uDFE8\u31C8\uD840\uDCCA\u31C9\u31CA\u31CB\u31CC\uD840\uDD0E\u31CD\u31CE\u0100\u00C1\u01CD\u00C0\u0112\u00C9\u011A\u00C8\u014C\u00D3\u01D1\u00D2\u0FFF\u00CA\u0304\u1EBE\u0FFF\u00CA\u030C\u1EC0\u00CA\u0101\u00E1\u01CE\u00E0\u0251\u0113\u00E9\u011B\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\"],\n[\"88a1\",\"\u01DC\u00FC\u0FFF\u00EA\u0304\u1EBF\u0FFF\u00EA\u030C\u1EC1\u00EA\u0261\u23DA\u23DB\"],\n[\"8940\",\"\uD868\uDFA9\uD844\uDD45\"],\n[\"8943\",\"\u650A\"],\n[\"8946\",\"\u4E3D\u6EDD\u9D4E\u91DF\"],\n[\"894c\",\"\uD85D\uDF35\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E\"],\n[\"89a1\",\"\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227\"],\n[\"89ab\",\"\u918C\u78B8\u915E\u80BC\"],\n[\"89b0\",\"\u8D0B\u80F6\uD842\uDDE7\"],\n[\"89b5\",\"\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\uD867\uDDF6\uD85C\uDC0E\u9E0A\uD868\uDD33\u35C1\"],\n[\"89c1\",\"\u6E9A\u823E\u7519\"],\n[\"89c5\",\"\u4911\u9A6C\u9A8F\u9F99\u7987\uD861\uDC6C\uD847\uDDCA\uD841\uDDD0\uD84A\uDEE6\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5\"],\n[\"8a40\",\"\uD85F\uDD84\u5525\"],\n[\"8a43\",\"\uD843\uDC42\uD843\uDD15\uD854\uDD2B\u5590\uD84B\uDCC6\u39EC\uD840\uDF41\u8E46\uD853\uDDB8\uD865\uDCE5\u4053\uD860\uDCBE\u777A\uD84B\uDC38\u3A34\u47D5\uD860\uDD5D\uD85A\uDDF2\uD853\uDDEA\u64DD\uD843\uDD7C\uD843\uDFB4\uD843\uDCD5\uD844\uDCF4\u648D\u8E7E\uD843\uDE96\uD843\uDC0B\uD843\uDF64\uD84B\uDCA9\uD860\uDE56\uD851\uDCD3\"],\n[\"8a64\",\"\uD843\uDD46\uD866\uDE4D\uD860\uDCE9\u47F4\uD853\uDEA7\uD84B\uDCC2\u9AB2\u3A67\uD865\uDDF4\u3FED\u3506\uD854\uDEC7\uD865\uDFD4\uD85E\uDCC8\uD84B\uDD44\u9D6E\u9815\"],\n[\"8a76\",\"\u43D9\uD858\uDCA5\u64B4\u54E3\uD84B\uDD4C\uD84A\uDFCA\uD844\uDC77\u39FB\uD844\uDC6F\"],\n[\"8aa1\",\"\uD859\uDEDA\uD859\uDF16\uD85E\uDDA0\u64EA\uD854\uDC52\uD843\uDC43\u8E68\uD848\uDDA1\uD862\uDF4C\uD841\uDF31\"],\n[\"8aac\",\"\u480B\uD840\uDDA9\u3FFA\u5873\uD84B\uDD8D\"],\n[\"8ab2\",\"\uD851\uDDC8\uD841\uDCFC\uD858\uDC97\uD843\uDF4C\uD843\uDD96\u5579\u40BB\u43BA\"],\n[\"8abb\",\"\u4AB4\uD84A\uDE66\uD844\uDC9D\u81AA\u98F5\uD843\uDD9C\u6379\u39FE\uD849\uDF75\u8DC0\u56A1\u647C\u3E43\"],\n[\"8ac9\",\"\uD869\uDE01\uD843\uDE09\uD84A\uDECF\uD84B\uDCC9\"],\n[\"8ace\",\"\uD844\uDCC8\uD84E\uDDC2\u3992\u3A06\uD860\uDE9B\u3578\uD857\uDE49\uD848\uDCC7\u5652\uD843\uDF31\uD84B\uDCB2\uD865\uDF20\u34BC\u6C3D\uD853\uDE3B\"],\n[\"8adf\",\"\uD85D\uDD74\uD84B\uDE8B\uD848\uDE08\uD869\uDE5B\uD863\uDCCD\uD843\uDE7A\uD843\uDC34\uD85A\uDC1C\u7F93\uD844\uDCCF\uD84A\uDC03\uD84A\uDD39\u35FB\uD854\uDDE3\uD843\uDE8C\uD843\uDF8D\uD843\uDEAA\u3F93\uD843\uDF30\uD843\uDD47\uD844\uDD4F\uD843\uDE4C\"],\n[\"8af6\",\"\uD843\uDEAB\uD842\uDFA9\uD843\uDD48\uD844\uDCC0\uD844\uDD3D\u3FF9\uD849\uDE96\u6432\uD843\uDFAD\"],\n[\"8b40\",\"\uD84C\uDFF4\uD85D\uDE39\uD84A\uDFCE\uD843\uDD7E\uD843\uDD7F\uD84B\uDC51\uD84B\uDC55\u3A18\uD843\uDE98\uD844\uDCC7\uD843\uDF2E\uD869\uDE32\uD85A\uDF50\uD863\uDCD2\uD863\uDD99\uD863\uDCCA\u95AA\u54CC\u82C4\u55B9\"],\n[\"8b55\",\"\uD867\uDEC3\u9C26\u9AB6\uD85D\uDF5E\uD84B\uDDEE\u7140\u816D\u80EC\u5C1C\uD859\uDD72\u8134\u3797\u535F\uD860\uDCBD\u91B6\uD843\uDEFA\uD843\uDE0F\uD843\uDE77\uD843\uDEFB\u35DD\uD853\uDDEB\u3609\uD843\uDCD6\u56AF\uD849\uDFB5\uD844\uDCC9\uD843\uDE10\uD843\uDE78\uD844\uDC78\uD844\uDD48\uD860\uDE07\uD845\uDC55\uD843\uDE79\uD853\uDE50\uD84B\uDDA4\u5A54\uD844\uDC1D\uD844\uDC1E\uD844\uDCF5\uD844\uDCF6\u579C\uD843\uDE11\"],\n[\"8ba1\",\"\uD85D\uDE94\uD860\uDECD\uD843\uDFB5\uD843\uDE7B\uD854\uDD7E\u3703\uD843\uDFB6\uD844\uDD80\uD854\uDED8\uD868\uDEBD\uD852\uDDDA\uD846\uDC3A\uD850\uDD77\uD860\uDE7C\u5899\u5268\u361A\uD855\uDF3D\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\uD856\uDF74\uD84C\uDD3D\u55FB\u35F2\u5689\u4E28\u5902\uD846\uDFC1\uD87E\uDC78\u9751\uD840\uDC86\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\uD852\uDCE9\u7F52\u793B\u7CF9\u7F53\uD858\uDE6A\u34C1\"],\n[\"8bde\",\"\uD858\uDF4B\u8002\u8080\uD859\uDE12\uD85A\uDD51\u535D\u8864\u89C1\uD85E\uDCB2\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\uD863\uDE0F\u97E6\u9875\u98CE\u98DE\u9963\uD866\uDC10\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\uD840\uDC87\u961D\u6237\u94A2\"],\n[\"8c40\",\"\u503B\u6DFE\uD867\uDC73\u9FA6\u3DC9\u888F\uD850\uDD4E\u7077\u5CF5\u4B20\uD854\uDDCD\u3559\uD857\uDD30\u6122\uD862\uDE32\u8FA7\u91F6\u7191\u6719\u73BA\uD84C\uDE81\uD868\uDD07\u3C8B\uD846\uDD80\u4B10\u78E4\u7402\u51AE\uD861\uDF0F\u4009\u6A63\uD868\uDEBA\u4223\u860F\uD842\uDE6F\u7A2A\uD866\uDD47\uD862\uDEEA\u9755\u704D\u5324\uD848\uDC7E\u93F4\u76D9\uD862\uDDE3\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\uD847\uDDB6\u5E92\u5E99\u5FC2\uD849\uDF12\u658B\"],\n[\"8ca1\",\"\uD84C\uDFF9\u6919\u6A43\uD84F\uDC63\u6CFF\"],\n[\"8ca7\",\"\u7200\uD851\uDD05\u738C\u3EDB\uD852\uDE13\u5B15\u74B9\u8B83\uD857\uDCA4\uD855\uDE95\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\uD863\uDDB9\uD845\uDC3F\u4071\u42A2\u5A1A\"],\n[\"8cc9\",\"\u9868\u676B\u4276\u573D\"],\n[\"8cce\",\"\u85D6\uD852\uDD7B\u82BF\uD85C\uDD0D\u4C81\uD85B\uDD74\u5D7B\uD85A\uDF15\uD85B\uDFBE\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\uD84C\uDE56\uD849\uDF96\u439A\u4536\"],\n[\"8ce6\",\"\u5CD5\uD84E\uDF1A\u8AF9\u5C78\u3D12\uD84D\uDD51\u5D78\u9FB2\u7157\u4558\uD850\uDCEC\uD847\uDE23\u4C77\u3978\u344A\uD840\uDDA4\uD85B\uDC41\u8ACC\u4FB4\uD840\uDE39\u59BF\u816C\u9856\uD866\uDCFA\u5F3B\"],\n[\"8d40\",\"\uD842\uDF9F\"],\n[\"8d42\",\"\uD848\uDDC1\uD862\uDD6D\u4102\u46BB\uD864\uDC79\u3F07\u9FB3\uD868\uDDB5\u40F8\u37D6\u46F7\uD85B\uDC46\u417C\uD861\uDEB2\uD85C\uDFFF\u456D\u38D4\uD855\uDC9A\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\uD852\uDF0F\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1\"],\n[\"8da1\",\"\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\uD862\uDDC0\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\uD84F\uDF41\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\uD840\uDF25\u43C1\u35F1\uD843\uDED8\"],\n[\"8e40\",\"\uD84F\uDED7\u57BE\uD85B\uDED3\u713E\uD855\uDFE0\u364E\u69A2\uD862\uDFE9\u5B74\u7A49\uD856\uDCE1\uD865\uDCD9\u7A65\u7A7D\uD856\uDDAC\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\uD859\uDC8D\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\uD857\uDC01\u7B0B\u7B55\u7B29\uD854\uDF0E\uD857\uDCFE\u7BA2\u7B6F\u839C\uD856\uDFB4\uD85B\uDC7F\u7BD0\u8421\u7B92\u7BB8\uD857\uDD20\u3DAD\uD857\uDC65\u8492\u7BFA\u7C06\u7C35\uD857\uDCC1\u7C44\u7C83\uD852\uDC82\u7CA6\u667D\uD851\uDD78\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE\"],\n[\"8ea1\",\"\u7E67\u451D\uD85B\uDE44\u7D5D\uD85B\uDED6\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\uD850\uDC57\uD858\uDC29\u7DE4\u3D13\u7DF5\uD845\uDFF9\u7DE5\uD860\uDF6D\u7E1D\uD858\uDD21\uD858\uDD5A\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\uD858\uDED0\u99E1\u7F97\uD858\uDF51\u7FA3\uD845\uDE61\uD840\uDC68\u455C\uD84D\uDF66\u4503\uD860\uDF3A\u7FFA\uD859\uDC89\u8005\u8008\u801D\u8028\u802F\uD868\uDC87\uD85B\uDCC3\u803B\u803C\u8061\uD849\uDF14\u4989\uD859\uDE26\uD84F\uDDE3\uD859\uDEE8\u6725\u80A7\uD862\uDE48\u8107\u811A\u58B0\uD849\uDEF6\u6C7F\uD859\uDC98\uD853\uDFB8\u64E7\uD845\uDC8A\u8218\uD846\uDC5E\u6A53\uD852\uDE65\uD852\uDE95\u447A\u8229\uD842\uDF0D\uD85A\uDE52\uD84F\uDD7E\u4FF9\uD845\uDCFD\u84E2\u8362\uD85A\uDF0A\uD852\uDDA7\uD84D\uDD30\uD845\uDF73\uD84F\uDDF8\u82AA\u691B\uD87E\uDD94\u41DB\"],\n[\"8f40\",\"\u854B\u82D0\u831A\uD843\uDE16\uD845\uDFB4\u36C1\uD84C\uDD7D\uD84D\uDD5A\u827B\u82E2\u8318\uD84F\uDE8B\uD85B\uDDA3\uD85A\uDF05\uD85A\uDF97\uD84D\uDDCE\u3DBF\u831D\u55EC\u8385\u450B\uD85B\uDDA5\u83AC\u83C1\u83D3\u347E\uD85B\uDED4\u6A57\u855A\u3496\uD85B\uDE42\uD84B\uDEEF\u8458\uD856\uDFE4\u8471\u3DD3\u44E4\u6AA7\u844A\uD84F\uDCB5\u7958\u84A8\uD85A\uDF96\uD85B\uDE77\uD85B\uDE43\u84DE\u840F\u8391\u44A0\u8493\u84E4\uD857\uDC91\u4240\uD857\uDCC0\u4543\u8534\u5AF2\uD85B\uDE99\u4527\u8573\u4516\u67BF\u8616\"],\n[\"8fa1\",\"\uD861\uDE25\uD861\uDE3B\u85C1\uD85C\uDC88\u8602\uD845\uDD82\uD85C\uDCCD\uD87E\uDDB2\u456A\u8628\u3648\uD846\uDCA2\u53F7\uD85C\uDF9A\u867E\u8771\uD868\uDCF8\u87EE\uD84B\uDC27\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\uD85D\uDDE0\uD84F\uDDB9\uD85D\uDDE4\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\uD85D\uDF0F\u8987\u898A\u89A6\u89A9\u89A7\u89BC\uD862\uDE25\u89E7\uD85E\uDD24\uD85E\uDEBD\u8A9C\u7793\u91FE\u8A90\uD85E\uDE59\u7AE9\uD85E\uDF3A\uD84F\uDF8F\u4713\uD85E\uDF38\u717C\u8B0C\u8B1F\uD855\uDC30\uD855\uDD65\u8B3F\u8B4C\u8B4D\u8AA9\uD852\uDE7A\u8B90\u8B9B\u8AAF\uD845\uDEDF\u4615\u884F\u8C9B\uD85F\uDD54\uD85F\uDD8F\uD87E\uDDD4\u3725\uD85F\uDD53\u8CD6\uD85F\uDD98\uD85F\uDDBD\u8D12\u8D03\uD846\uDD10\u8CDB\u705C\u8D11\uD853\uDCC9\u3ED0\u8D77\"],\n[\"9040\",\"\u8DA9\uD860\uDC02\uD844\uDC14\uD852\uDD8A\u3B7C\uD860\uDDBC\uD85C\uDD0C\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\uD860\uDF65\uD861\uDC12\u8FA5\u9303\uD868\uDE9F\uD842\uDE50\u8FB3\u492A\uD862\uDDDE\uD861\uDD3D\uD84F\uDDBB\u5EF8\uD84C\uDE62\u8FF9\uD868\uDC14\uD861\uDEBC\uD861\uDD01\uD848\uDF25\u3980\uD85B\uDED7\u9037\uD861\uDD3C\uD85E\uDEBE\u9061\uD861\uDD6C\uD861\uDE0B\u90A8\uD861\uDF13\u90C4\uD861\uDEE6\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\uD862\uDD33\uD847\uDE89\u920E\u6C9F\u9241\u9262\uD855\uDDB9\u92B9\uD862\uDEC6\uD84F\uDC9B\uD862\uDF0C\uD855\uDDDB\"],\n[\"90a1\",\"\uD843\uDD31\u932C\u936B\uD862\uDEE1\uD862\uDFEB\u708F\u5AC3\uD862\uDEE2\uD862\uDEE5\u4965\u9244\uD862\uDFEC\uD863\uDC39\uD862\uDFFF\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\uD849\uDE7A\uD861\uDED8\uD844\uDE7C\uD84F\uDE2E\u49DF\u6C1C\u967B\u9696\u416C\u96A3\uD85B\uDED5\u61DA\u96B6\u78F5\uD862\uDEE0\u96BD\u53CC\u49A1\uD85B\uDCB8\uD840\uDE74\uD859\uDC10\uD864\uDCAF\uD864\uDCE5\uD852\uDED1\uD846\uDD15\uD84C\uDF0A\u9731\u8642\u9736\u4A0F\u453D\u4585\uD852\uDEE9\u7075\u5B41\u971B\u975C\uD864\uDDD5\u9757\u5B4A\uD864\uDDEB\u975F\u9425\u50D0\uD84C\uDCB7\uD84C\uDCBC\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\uD855\uDC6C\u97EE\u741C\uD865\uDC33\u97FF\u97F5\uD865\uDC1D\uD85E\uDD7A\u4AD1\u9834\u9833\u984B\u9866\u3B0E\uD85C\uDD75\u3D51\uD841\uDE30\uD850\uDD5C\"],\n[\"9140\",\"\uD855\uDF06\u98CA\u98B7\u98C8\u98C7\u4AFF\uD85B\uDD27\uD845\uDED3\u55B0\u98E1\u98E6\u98EC\u9378\u9939\uD852\uDE29\u4B72\uD866\uDC57\uD866\uDD05\u99F5\u9A0C\u9A3B\u9A10\u9A58\uD855\uDF25\u36C4\uD864\uDCB1\uD866\uDFD5\u9AE0\u9AE2\uD866\uDF05\u9AF4\u4C0E\u9B14\u9B2D\uD861\uDE00\u5034\u9B34\uD85A\uDDA8\u38C3\uD84C\uDC7D\u9B50\u9B40\uD867\uDD3E\u5A45\uD846\uDC63\u9B8E\uD850\uDE4B\u9C02\u9BFF\u9C0C\uD867\uDE68\u9DD4\uD867\uDFB7\uD868\uDD92\uD868\uDDAB\uD868\uDCE1\uD868\uDD23\uD868\uDDDF\u9D7E\u9D83\uD868\uDD34\u9E0E\u6888\"],\n[\"91a1\",\"\u9DC4\uD848\uDD5B\uD868\uDD93\uD868\uDE20\uD846\uDD3B\uD868\uDE33\u9D39\uD868\uDCB9\uD868\uDEB4\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\uD850\uDF64\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\uD863\uDC2B\u9F02\u9F08\u4B96\u9424\uD85B\uDDA2\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\uD864\uDC8B\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\uD852\uDD75\uD852\uDDBB\u7177\uD852\uDDF8\uD850\uDF48\uD852\uDE51\u739E\uD862\uDFDA\uD846\uDCFA\u799F\uD862\uDD7E\uD863\uDE36\u9369\u93F3\uD862\uDE44\u92EC\u9381\u93CB\uD862\uDD6C\uD851\uDCB9\u7217\u3EEB\u7772\u7A43\u70D0\uD851\uDC73\uD850\uDFF8\u717E\uD845\uDFEF\u70A3\uD846\uDCBE\uD84D\uDD99\u3EC7\uD846\uDC85\uD855\uDC2F\uD845\uDFF8\u3722\uD845\uDEFB\uD846\uDC39\u36E1\uD845\uDF74\uD846\uDCD1\uD857\uDF4B\u3723\uD845\uDEC0\u575B\uD852\uDE25\uD844\uDFFE\uD844\uDEA8\"],\n[\"9240\",\"\uD844\uDFC6\uD845\uDCB6\u8503\uD84D\uDEA6\u8503\u8455\uD852\uDD94\uD85C\uDD65\uD84F\uDE31\uD855\uDD5C\uD84F\uDEFB\uD85C\uDC52\u44F4\uD84D\uDEEE\uD866\uDD9D\uD85B\uDF26\u67F9\u3733\u3C15\u3DE7\u586C\uD846\uDD22\u6810\u4057\uD84D\uDF3F\uD850\uDCE1\uD850\uDC8B\uD850\uDD0F\uD85B\uDC21\u54CB\u569E\uD859\uDEB1\u5692\uD843\uDFDF\uD842\uDFA8\uD843\uDE0D\u93C6\uD862\uDF13\u939C\u4EF8\u512B\u3819\uD851\uDC36\u4EBC\uD841\uDC65\uD840\uDF7F\u4F4B\u4F8A\uD855\uDE51\u5A68\uD840\uDDAB\uD840\uDFCB\u3999\uD840\uDF0A\uD841\uDC14\u3435\u4F29\uD840\uDEC0\uD863\uDEB3\uD840\uDE75\u8ADA\uD840\uDE0C\u4E98\"],\n[\"92a1\",\"\u50CD\u510D\u4FA2\u4F03\uD852\uDE0E\uD84F\uDE8A\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\uD84D\uDD95\uD84F\uDE39\uD84F\uDEBF\u6D72\uD846\uDC84\uD84F\uDE89\u51A8\u51C3\uD841\uDDE0\u44DD\uD841\uDCA3\uD841\uDC92\uD841\uDC91\u8D7A\uD862\uDE9C\uD841\uDF0E\u5259\u52A4\uD842\uDC73\u52E1\u936E\u467A\u718C\uD850\uDF8C\uD843\uDC20\uD852\uDDAC\uD844\uDCE4\u69D1\uD843\uDE1D\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\uD852\uDEBC\uD850\uDC8D\u53D0\u3584\u720F\uD850\uDCC9\u55B4\uD840\uDF45\u54CD\uD842\uDFC6\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\uD862\uDE46\uD845\uDEFA\uD845\uDF6F\uD845\uDF10\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\uD856\uDD46\uD846\uDDF3\uD846\uDC61\uD850\uDE95\u36F5\u6D05\u7443\u5A21\uD857\uDE83\"],\n[\"9340\",\"\u5A81\uD862\uDFD7\uD841\uDC13\u93E0\u748C\uD844\uDF03\u7105\u4972\u9408\uD862\uDDFB\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\uD846\uDD96\uD846\uDD7C\uD84E\uDEEE\u5ECD\u5B4F\uD846\uDD03\uD846\uDD04\u3701\uD846\uDCA0\u36DD\uD845\uDEFE\u36D3\u812A\uD862\uDE47\uD847\uDDBA\uD84D\uDC72\uD862\uDDA8\u5F0C\u5F0E\uD846\uDD27\uD845\uDFAB\u5A6B\uD845\uDF3B\u5B44\u8614\uD85D\uDDFD\u8860\u607E\uD84A\uDC60\uD849\uDE2B\u5FDB\u3EB8\uD849\uDDAF\uD849\uDDBE\uD864\uDC88\uD85B\uDF73\u61C0\uD840\uDC3E\uD840\uDC46\uD849\uDE1B\u6199\u6198\u6075\uD84B\uDC9B\uD84B\uDD07\uD851\uDED4\uD864\uDD4D\"],\n[\"93a1\",\"\u6471\uD851\uDE65\uD84A\uDF6A\u3A29\uD84A\uDF22\uD84D\uDC50\uD866\uDCEA\uD84B\uDE78\u6337\uD869\uDC5B\u64B6\u6331\u63D1\uD852\uDDE3\uD84B\uDD67\u62A4\uD84B\uDCA1\u643B\u656B\u6972\u3BF4\uD84C\uDC8E\uD84C\uDEAD\uD852\uDD89\uD84C\uDEAB\u550D\uD84C\uDEE0\uD846\uDCD9\uD865\uDC3F\u66CE\uD84C\uDE89\uD84C\uDDB3\u3AE0\u4190\uD855\uDD84\uD862\uDF22\uD855\uDD8F\uD845\uDEFC\uD855\uDD5B\uD855\uDC25\u78EE\uD84C\uDD03\uD846\uDC2A\uD84C\uDE34\u3464\uD84C\uDE0F\uD84C\uDD82\uD850\uDEC9\u668E\uD85B\uDD24\u666B\u4B93\u6630\uD85E\uDC70\uD847\uDDEB\u6663\uD84C\uDED2\uD84C\uDEE1\u661E\uD856\uDC72\u38D1\uD84E\uDC3A\uD84D\uDFBC\u3B99\uD84D\uDFA2\uD84C\uDFFE\u74D0\u3B96\u678F\uD851\uDE2A\u68B6\u681E\u3BC4\u6ABE\u3863\uD84D\uDFD5\uD851\uDC87\u6A33\u6A52\u6AC9\u6B05\uD846\uDD12\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\uD84F\uDFC0\uD84F\uDC9A\u93A0\u92F2\uD862\uDFEA\uD862\uDECB\"],\n[\"9440\",\"\u9289\uD860\uDC1E\uD862\uDDDC\u9467\u6DA5\u6F0B\uD852\uDDEC\u6D67\uD84F\uDF7F\u3D8F\u6E04\uD850\uDC3C\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\uD850\uDF1A\uD850\uDE76\u70F1\u7250\u7287\u7294\uD851\uDF8F\uD851\uDF25\u5179\uD852\uDEA4\uD841\uDDEB\u747A\uD84F\uDEF8\uD84D\uDE5F\uD852\uDE4A\uD852\uDD17\uD857\uDFE1\u3F06\u3EB1\uD852\uDEDF\uD863\uDC23\uD84F\uDF35\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\uD85B\uDDEA\u4551\u7583\u3F63\uD853\uDCD9\uD853\uDD06\u3F58\u7555\u7673\uD869\uDDC6\u3B19\u7468\uD862\uDECC\uD852\uDDAB\uD852\uDD8E\u3AFB\"],\n[\"94a1\",\"\u3DCD\uD852\uDE4E\u3EFF\uD852\uDDC5\uD852\uDCF3\u91FA\u5732\u9342\uD862\uDEE3\uD846\uDC64\u50DF\uD854\uDE21\uD854\uDDE7\u7778\uD84C\uDE32\u770E\u770F\u777B\uD851\uDE97\uD84D\uDF81\u3A5E\uD852\uDCF0\u7438\u749B\u3EBF\uD852\uDEBA\uD852\uDEC7\u40C8\uD852\uDE96\uD858\uDDAE\u9307\uD855\uDD81\u781E\u788D\u7888\u78D2\u73D0\u7959\uD85D\uDF41\uD855\uDEE3\u410E\u799B\u8496\u79A5\u6A2D\uD84F\uDEFA\u7A3A\u79F4\u416E\uD845\uDEE6\u4132\u9235\u79F1\uD843\uDD4C\uD852\uDD8C\uD840\uDE99\uD84F\uDDBA\uD845\uDF6E\u3597\u556B\u3570\u36AA\uD840\uDDD4\uD843\uDC0D\u7AE2\u5A59\uD849\uDEF5\uD856\uDEAF\uD856\uDE9C\u5A0D\uD840\uDE5B\u78F0\u5A2A\uD856\uDFC6\u7AFE\u41F9\u7C5D\u7C6D\u4211\uD856\uDFB3\uD857\uDEBC\uD857\uDEA6\u7CCD\uD852\uDDF9\uD845\uDFB0\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\uD858\uDE61\"],\n[\"9540\",\"\uD858\uDD5C\uD85E\uDF48\u7D97\uD857\uDE82\u426A\uD85A\uDF75\uD842\uDD16\u67D6\uD840\uDC4E\uD84D\uDDCF\u57C4\uD859\uDC12\uD858\uDFF8\uD852\uDD62\u7FDD\u7B27\uD842\uDC2C\uD856\uDEE9\uD857\uDD43\u7B0C\uD857\uDE0E\u99E6\u8645\u9A63\u6A1C\uD84D\uDC3F\u39E2\uD852\uDDF7\uD859\uDDAD\u9A1F\uD859\uDDA0\u8480\uD85C\uDD27\uD85B\uDCD1\u44EA\u8137\u4402\u80C6\u8109\u8142\uD859\uDFB4\u98C3\uD85A\uDE42\u8262\u8265\uD85A\uDE51\u8453\uD85B\uDDA7\u8610\uD85C\uDE1B\u5A86\u417F\uD846\uDC40\u5B2B\uD846\uDCA1\u5AE4\uD846\uDCD8\u86A0\uD87E\uDDBC\uD84F\uDD8F\u882D\uD85D\uDC22\u5A02\"],\n[\"95a1\",\"\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\uD855\uDE83\u8954\uD85D\uDF85\uD85D\uDF84\uD862\uDFF5\uD862\uDFD9\uD862\uDF9C\uD862\uDDF9\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\uD865\uDC48\u5F4D\u922B\uD850\uDE84\u65D4\u7129\u70C4\uD846\uDC45\u9D6D\u8C9F\u8CE9\uD85F\uDDDC\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\uD853\uDC09\u8F30\u8F4A\u42F4\u6C58\u6FBB\uD848\uDF21\u489B\u6F79\u6E8B\uD845\uDFDA\u9BE9\u36B5\uD852\uDD2F\u90BB\u9097\u5571\u4906\u91BB\u9404\uD862\uDE4B\u4062\uD862\uDEFC\u9427\uD863\uDC1D\uD863\uDC3B\u84E5\u8A2B\u9599\u95A7\u9597\u9596\uD863\uDD34\u7445\u3EC2\uD852\uDCFF\uD852\uDE42\uD850\uDFEA\u3EE7\uD84C\uDE25\u968F\uD863\uDEE7\uD863\uDE66\uD863\uDE65\u3ECC\uD852\uDDED\uD852\uDE78\uD84F\uDFEE\u7412\u746B\u3EFC\u9741\uD864\uDCB0\"],\n[\"9640\",\"\u6847\u4A1D\uD864\uDC93\uD855\uDFDF\u975D\u9368\uD862\uDD89\uD863\uDC26\uD862\uDF2F\uD858\uDFBE\u92BA\u5B11\u8B69\u493C\u73F9\uD850\uDE1B\u979B\u9771\u9938\uD843\uDF26\u5DC1\uD862\uDFC5\uD852\uDEB2\u981F\uD865\uDCDA\u92F6\uD865\uDDD7\u91E5\u44C0\uD862\uDF50\uD852\uDE67\uD862\uDF64\u98DC\uD862\uDE45\u3F00\u922A\u4925\u8414\u993B\u994D\uD85E\uDF06\u3DFD\u999B\u4B6F\u99AA\u9A5C\uD862\uDF65\uD856\uDCC8\u6A8F\u9A21\u5AFE\u9A2F\uD866\uDCF1\u4B90\uD866\uDD48\u99BC\u4BBD\u4B97\u937D\u5872\uD844\uDF02\u5822\uD852\uDDB8\"],\n[\"96a1\",\"\uD845\uDCE8\u7844\uD849\uDF1F\uD84F\uDDB8\u68C5\u3D7D\u9458\u3927\u6150\uD849\uDF81\uD84A\uDD6B\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\uD867\uDE2D\u9B9F\uD868\uDDF5\uD868\uDCFE\u9D21\u4CAE\uD850\uDD04\u9E18\u4CB0\u9D0C\uD868\uDDB4\uD868\uDCED\uD868\uDCF3\uD866\uDD2F\u9DA5\u84BD\uD85B\uDE12\uD85B\uDFDF\uD85A\uDF82\u85FC\u4533\uD85B\uDDA4\uD85B\uDE84\uD85B\uDDF0\u8420\u85EE\uD85B\uDE00\uD84D\uDFD7\uD858\uDC64\u79E2\uD84D\uDD9C\uD84D\uDE40\u492D\uD852\uDDDE\u3D62\u93DB\u92BE\u9348\uD840\uDEBF\u78B9\u9277\u944D\u4FE4\u3440\u9064\uD855\uDD5D\u783D\u7854\u78B6\u784B\uD845\uDF57\uD84C\uDDC9\uD852\uDD41\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\uD850\uDDB5\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\uD850\uDDAC\u71EB\uD85B\uDC40\uD853\uDF97\u5B28\uD845\uDFB5\uD862\uDE49\"],\n[\"9740\",\"\u610C\u5ACE\u5A0B\u42BC\uD851\uDC88\u372C\u4B7B\uD862\uDDFC\u93BB\u93B8\uD846\uDCD6\uD843\uDF1D\u8472\uD85B\uDCC0\uD845\uDC13\uD850\uDEFA\uD84B\uDC26\uD850\uDFC1\u5994\uD84F\uDDB7\uD859\uDF41\u7DA8\uD858\uDD5B\uD858\uDCA4\uD852\uDDB9\uD852\uDD8B\uD862\uDDFA\u92E5\u73E2\u3EE9\u74B4\uD862\uDF63\uD846\uDC9F\u3EE1\uD852\uDEB3\u6AD8\u73F3\u73FB\u3ED6\uD852\uDE3E\uD852\uDE94\uD845\uDFD9\uD852\uDE66\uD840\uDFA7\uD845\uDC24\uD852\uDDE5\u7448\uD852\uDD16\u70A5\uD852\uDD76\u9284\u73E6\u935F\uD841\uDCFE\u9331\uD862\uDECE\uD862\uDE16\u9386\uD862\uDFE7\uD855\uDDD5\u4935\uD862\uDE82\u716B\"],\n[\"97a1\",\"\uD852\uDD43\uD843\uDCFF\u56A4\uD841\uDE1A\uD842\uDFEB\uD843\uDCB8\u5502\u79C4\uD845\uDFFA\u7DFE\uD845\uDEC2\uD852\uDE50\uD846\uDC52\u452E\u9401\u370A\uD862\uDEC0\uD852\uDDAD\u59B0\uD846\uDCBF\uD846\uDC83\uD85D\uDC84\u5AA1\u36E2\uD84F\uDD5B\u36B0\u925F\u5A79\uD862\uDE81\uD846\uDC62\u9374\u3CCD\uD842\uDEB4\u4A96\u398A\u50F4\u3D69\u3D4C\uD844\uDF9C\u7175\u42FB\uD860\uDE18\u6E0F\uD864\uDCE4\u44EB\u6D57\uD85F\uDE4F\u7067\u6CAF\u3CD6\uD84F\uDFED\uD84F\uDE2D\u6E02\u6F0C\u3D6F\uD840\uDFF5\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\uD863\uDC1C\uD85A\uDFC0\u5812\u57C8\u36D6\uD845\uDC52\u70FE\uD850\uDF62\uD852\uDE71\uD84B\uDFE3\uD844\uDEB0\uD848\uDFBD\u68B9\u6967\uD844\uDF98\uD84D\uDCE5\uD85E\uDFF4\uD84D\uDEDF\uD862\uDE83\uD84D\uDFD6\uD84C\uDFFA\uD853\uDC9F\u6A1A\uD84D\uDEAD\uD85B\uDCB7\u843E\u44DF\u44CE\"],\n[\"9840\",\"\uD85B\uDD26\uD85B\uDD51\uD85B\uDC82\uD85B\uDFDE\u6F17\uD85C\uDD09\u833D\uD845\uDF3A\u83ED\uD85B\uDC80\uD85C\uDC53\uD845\uDFDB\u5989\u5A82\uD845\uDFB3\u5A61\u5A71\uD846\uDD05\uD850\uDDFC\u372D\u59EF\uD845\uDF3C\u36C7\u718E\u9390\u669A\uD850\uDEA5\u5A6E\u5A2B\uD850\uDE93\u6A2B\uD84F\uDEF9\uD85D\uDF36\uD851\uDC5B\uD850\uDECA\u711D\uD850\uDE59\uD862\uDDE1\u4FB0\uD85B\uDD28\u5CC2\uD851\uDCCE\uD85F\uDE4D\uD850\uDFBD\u6A0C\uD850\uDE56\uD844\uDF04\u70A6\u7133\uD850\uDFE9\u3DA5\u6CDF\uD87E\uDC25\uD852\uDE4F\u7E65\u59EB\u5D2F\u3DF3\u5F5C\uD852\uDE5D\uD845\uDFDF\u7DA4\u8426\"],\n[\"98a1\",\"\u5485\uD84E\uDEFA\uD84C\uDF00\uD840\uDE14\u577E\uD842\uDCD5\uD841\uDE19\u3FE5\uD847\uDF9E\uD868\uDEB6\u7003\uD864\uDD5B\u5D70\u738F\u7CD3\uD862\uDE59\uD865\uDC20\u4FC8\u7FE7\u72CD\u7310\uD85E\uDEF4\u7338\u7339\uD855\uDEF6\u7341\u7348\u3EA9\uD85E\uDF18\u906C\u71F5\uD852\uDCF2\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\uD853\uDF5C\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\uD855\uDD35\u7933\u6803\u7932\u4103\"],\n[\"9940\",\"\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\uD843\uDCCF\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A\"],\n[\"99a1\",\"\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\uD85E\uDD67\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF\"],\n[\"9a40\",\"\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\uD846\uDFC2\u9D49\u9C3A\"],\n[\"9aa1\",\"\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\uD840\uDC94\uD840\uDEB7\uD840\uDFA0\u691A\u94C3\u59AC\uD841\uDCD7\u5840\u94C1\u37B9\uD841\uDDD5\uD841\uDE15\uD841\uDE76\uD845\uDEBA\u5757\u7173\uD842\uDEC2\uD842\uDECD\uD842\uDFBF\u546A\uD87E\uDC3B\uD842\uDFCB\u549E\uD842\uDFFB\uD843\uDC3B\uD843\uDC53\uD843\uDC65\uD843\uDC7C\u60E7\uD843\uDC8D\u567A\uD843\uDCB5\uD843\uDCDD\uD843\uDCED\uD843\uDD6F\uD843\uDDB2\uD843\uDDC8\u6955\u9C2F\u87A5\uD843\uDE04\uD843\uDE0E\uD843\uDED7\uD843\uDF90\uD843\uDF2D\uD843\uDE73\u5C20\uD843\uDFBC\u5E0B\uD844\uDC5C\uD844\uDC4F\uD844\uDC76\u671E\uD844\uDC7B\uD844\uDC88\uD844\uDC96\u3647\uD844\uDCBF\uD844\uDCD3\uD844\uDD2F\uD844\uDD3B\u5364\u84AD\uD844\uDEE3\uD844\uDF75\uD844\uDF36\u8B81\uD845\uDD77\uD845\uDE19\uD845\uDFC3\uD845\uDFC7\u4E78\u70BB\uD846\uDC2D\uD846\uDD6A\"],\n[\"9b40\",\"\uD846\uDE2D\uD846\uDE45\uD847\uDC2A\uD847\uDC70\uD847\uDCAC\uD847\uDEC8\u62C3\uD847\uDED5\uD847\uDF15\u7198\u6855\uD848\uDC45\u69E9\u36C8\uD848\uDE7C\uD848\uDFD7\uD848\uDFFA\uD849\uDF2A\uD84A\uDC71\uD84A\uDD4F\u82FD\uD84A\uDD67\uD84A\uDD93\uD84A\uDED5\u89A5\uD84A\uDEE8\u8FA0\uD84A\uDF0E\u97B8\uD84A\uDF3F\u9847\u9ABD\uD84B\uDC4C\"],\n[\"9b62\",\"\uD84B\uDC88\uD84B\uDCB7\uD856\uDFE8\uD84B\uDD08\uD84B\uDD12\uD84B\uDDB7\uD84B\uDD95\uD84B\uDE42\uD84B\uDF74\uD84B\uDFCC\uD84C\uDC33\uD84C\uDC66\uD84C\uDF1F\uD84C\uDFDE\u5FB1\u6648\u66BF\uD85E\uDE79\uD84D\uDD67\uD84D\uDDF3\u7201\uD852\uDDBA\u77D7\uD84D\uDE1A\uD84D\uDF16\u7E87\uD840\uDF46\u58B5\u670E\"],\n[\"9ba1\",\"\u6918\uD84E\uDEA7\uD85D\uDE57\uD857\uDFE2\uD84F\uDE11\uD84F\uDEB9\uD85D\uDDFE\uD848\uDC9A\u48D0\u4AB8\uD850\uDD19\uD862\uDE9A\uD850\uDEEE\uD850\uDF0D\uD850\uDC3B\uD850\uDF34\uD850\uDF96\uD852\uDE45\uD841\uDDCA\u51D2\uD841\uDE11\u599F\uD847\uDEA8\u3BBE\uD84F\uDCFF\uD851\uDC04\uD851\uDCD6\u5788\uD851\uDE74\u399B\uD851\uDF2F\uD861\uDDE8\uD866\uDDC9\u3762\uD848\uDDC3\u8B5E\uD862\uDF4E\u99D6\uD852\uDC12\uD852\uDCFB\uD852\uDE15\u7209\uD852\uDEC0\uD843\uDC78\u5965\uD853\uDEA5\uD853\uDF86\uD841\uDF79\u8EDA\uD854\uDC2C\u528F\u573F\u7171\uD854\uDE99\uD855\uDC19\uD84F\uDF4A\uD852\uDEA7\u55BC\uD855\uDC46\uD855\uDC6E\uD85A\uDF52\u91D4\u3473\uD855\uDD3F\uD85D\uDE32\uD855\uDD5E\u4718\uD855\uDD62\uD855\uDD66\uD855\uDFC7\uD852\uDD3F\uD856\uDC5D\u5066\u34FB\uD84C\uDFCC\u60DE\uD856\uDD03\u477C\uD862\uDD48\uD856\uDEAE\uD856\uDF89\uD857\uDC06\uD847\uDD90\u57A1\u7151\u6FB6\uD858\uDD02\uD85F\uDC12\u9056\uD858\uDDB2\uD853\uDF9A\u8B62\uD859\uDC02\uD859\uDC4A\"],\n[\"9c40\",\"\u5D5B\uD85A\uDFF7\u8F36\uD859\uDC84\uD846\uDD1C\u8AEA\uD852\uDDF6\uD859\uDC88\uD84F\uDFEF\uD859\uDD12\u4BC0\uD859\uDDBF\uD859\uDEB5\uD849\uDF1B\u9465\uD855\uDFE1\u6195\u5A27\uD87E\uDCCD\u4FBB\u56B9\uD851\uDD21\uD859\uDEFC\u4E6A\uD852\uDD34\u9656\u6D8F\uD85B\uDCBD\u3618\u8977\uD859\uDF99\uD85A\uDC6E\uD859\uDC11\uD85A\uDC5E\u71DF\uD85A\uDCC7\u7B42\uD864\uDCC0\uD842\uDE11\uD85A\uDD26\u9104\uD85A\uDD39\u7A45\u9DF0\uD85A\uDDFA\u9A26\uD85A\uDE2D\u365F\uD859\uDC69\uD840\uDC21\u7983\uD85A\uDE34\uD85A\uDF5B\u5D2C\uD84D\uDD19\u83CF\uD85A\uDF9D\u46D0\uD85B\uDCA4\u753B\u8865\uD85B\uDDAE\u58B6\"],\n[\"9ca1\",\"\u371C\uD849\uDD8D\uD85C\uDC4B\uD85C\uDDCD\u3C54\uD85C\uDE80\uD85C\uDE85\u9281\uD848\uDD7A\uD85C\uDE8B\u9330\uD85C\uDEE6\uD852\uDDD0\u6C39\u949F\uD85D\uDC50\uD843\uDEF8\u8827\u88F5\uD84A\uDD26\uD861\uDC73\uD845\uDFB1\u6EB8\uD852\uDE2A\uD846\uDC20\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\uD867\uDCAD\uD866\uDCA4\u8943\uD85D\uDFCC\uD85E\uDC58\u56D6\u40DF\uD845\uDE0A\u39A1\uD84D\uDF2F\uD860\uDCE8\uD844\uDFC5\u71AD\u8366\uD85E\uDDDD\uD864\uDDA8\u5A67\u4CB7\uD85C\uDCAF\uD862\uDDAB\uD85E\uDDFD\uD85E\uDE0A\uD85E\uDF0B\uD85F\uDD66\uD850\uDD7A\u7B43\u797E\uD860\uDC09\u6FB5\uD868\uDEDF\u6A03\uD860\uDF18\u53A2\uD85B\uDE07\u93BF\u6836\u975D\uD860\uDD6F\uD860\uDC23\uD85A\uDDB5\uD844\uDFED\uD84C\uDE2F\uD860\uDC48\u5D85\uD863\uDC30\uD860\uDC83\u5715\u9823\uD862\uDD49\u5DAB\uD852\uDD88\u65BE\u69D5\u53D2\uD852\uDEA5\uD84F\uDF81\u3C11\u6736\uD860\uDC90\uD860\uDCF4\uD860\uDD2E\uD847\uDFA1\uD860\uDD4F\"],\n[\"9d40\",\"\uD860\uDD89\uD860\uDDAF\uD860\uDE1A\uD860\uDF06\uD860\uDF2F\uD860\uDF8A\u35CA\uD861\uDC68\uD861\uDEAA\u48FA\u63E6\uD862\uDD56\u7808\u9255\uD862\uDDB8\u43F2\uD862\uDDE7\u43DF\uD862\uDDE8\uD862\uDF46\uD862\uDFD4\u59F8\uD863\uDC09\u8F0B\uD863\uDFC5\uD864\uDCEC\u7B51\uD864\uDD10\uD864\uDD3C\u3DF7\uD864\uDD5E\uD852\uDECA\u8FD0\u728F\u568B\uD865\uDCE7\uD865\uDDE9\uD865\uDDB0\uD865\uDDB8\uD865\uDF32\uD866\uDCD1\uD866\uDD49\uD866\uDD6A\uD866\uDDC3\uD866\uDE28\uD866\uDF0E\uD867\uDD5A\uD867\uDD9B\u7E9F\uD867\uDEF8\uD867\uDF23\u4CA4\u9547\uD868\uDE93\u71A2\uD868\uDEFF\u4D91\u9012\uD869\uDDCB\u4D9C\uD843\uDC9C\u8FBE\u55C1\"],\n[\"9da1\",\"\u8FBA\uD849\uDCB0\u8FB9\uD852\uDE93\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\uD862\uDF2C\uD85E\uDC9D\u373A\u8E80\uD845\uDFF5\uD860\uDC24\uD862\uDF6C\uD862\uDF99\uD85E\uDE3E\uD859\uDEAF\u3DEB\uD85D\uDE55\uD84F\uDCB7\uD855\uDE35\uD856\uDD56\u4E9A\uD857\uDE81\uD858\uDE58\u56BF\uD843\uDE6D\u8E0E\u5B6D\uD84F\uDE88\uD853\uDC9E\u63DE\u62D0\uD845\uDFF6\uD846\uDC7B\u6530\u562D\uD857\uDC4A\u541A\uD854\uDF11\u3DC6\uD867\uDD98\u4C7D\u5622\u561E\u7F49\uD857\uDED8\u5975\uD84F\uDD40\u8770\u4E1C\uD843\uDFEA\uD843\uDD49\uD84D\uDEBA\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\uD843\uDE9D\u35CE\u5605\u55F1\u66F1\uD860\uDEE2\u362D\u7534\u55F0\u55BA\u5497\u5572\uD843\uDC41\uD843\uDC96\u5ED0\uD854\uDD48\uD843\uDE76\uD84B\uDC62\"],\n[\"9e40\",\"\uD843\uDEA2\u9EAB\u7D5A\u55DE\uD844\uDC75\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\uD84A\uDF43\u9C72\uD84B\uDEB3\u519A\u34DF\uD843\uDDA7\u51A7\u544D\u551E\u5513\u7666\u8E2D\uD85A\uDC8A\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\uD844\uDCC1\u44EC\u7304\uD851\uDF06\u5B90\u830B\uD85A\uDC93\u567B\uD849\uDEF4\uD85F\uDD2F\uD850\uDDA3\uD85F\uDD73\uD85B\uDED0\uD85C\uDEB6\u9170\uD844\uDDD9\u9208\uD84F\uDCFC\uD869\uDEA9\uD843\uDEAC\uD843\uDEF9\u7266\uD847\uDCA2\u474E\uD853\uDFC2\uD85F\uDFF9\uD843\uDFEB\u40FA\"],\n[\"9ea1\",\"\u9C5D\u651F\uD84B\uDDA0\u48F3\uD851\uDFE0\uD867\uDD7C\uD843\uDFEC\uD843\uDE0A\u6062\uD85D\uDDA3\uD843\uDFED\"],\n[\"9ead\",\"\uD858\uDC48\uD844\uDD87\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\uD851\uDE18\u589A\uD852\uDF6E\u822D\u544B\u57AA\uD856\uDE95\uD842\uDD79\"],\n[\"9ec5\",\"\u3A52\uD849\uDC65\u7374\uD867\uDEAC\u4D09\u9BED\uD84F\uDCFE\uD867\uDF30\u4C5B\uD853\uDFA9\uD865\uDD9E\uD867\uDFDE\u845C\uD84F\uDDB6\uD85C\uDEB2\uD859\uDFB3\uD84D\uDF20\u632E\u7D25\uD84F\uDEF7\uD84F\uDE2C\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\uD841\uDC8E\u7640\u5AF0\uD843\uDEB6\u787A\uD85F\uDF2E\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\uD869\uDC34\u9E85\u4CE1\u75F9\u37FB\u6119\uD84C\uDCDA\uD850\uDFF2\"],\n[\"9ef5\",\"\u565D\uD844\uDEA9\u57A7\uD852\uDD63\uD867\uDE06\u5234\uD85C\uDCAE\u35AD\u6C4A\u9D7C\"],\n[\"9f40\",\"\u7C56\u9B39\u57DE\uD845\uDF6C\u5C53\u64D3\uD865\uDCD0\uD858\uDF35\uD85C\uDD64\u86AD\uD843\uDD28\uD85B\uDD22\uD852\uDEE2\uD843\uDD71\"],\n[\"9f4f\",\"\u51FE\uD847\uDF0F\u5D8E\u9703\uD847\uDDD1\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\uD852\uDD3E\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130\"],\n[\"9fa1\",\"\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\uD845\uDF6D\u99DA\u5273\"],\n[\"9fae\",\"\u9159\u9681\u915C\"],\n[\"9fb2\",\"\u9151\uD863\uDE97\u637F\uD85B\uDD23\u6ACA\u5611\u918E\u757A\u6285\uD840\uDFFC\u734F\u7C70\uD857\uDC21\uD84F\uDCFD\"],\n[\"9fc1\",\"\uD852\uDD19\u76D6\u9B9D\u4E2A\uD843\uDCD4\u83BE\u8842\"],\n[\"9fc9\",\"\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\uD840\uDDF2\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3\"],\n[\"9fdb\",\"\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14\"],\n[\"9fe7\",\"\u6BFA\u8818\u7F78\"],\n[\"9feb\",\"\u5620\uD869\uDE4A\u8E77\u9F53\"],\n[\"9ff0\",\"\u8DD4\u8E4F\u9E1C\u8E01\u6282\uD860\uDF7D\u8E28\u8E75\u7AD3\uD852\uDE77\u7A3E\u78D8\u6CEA\u8A67\u7607\"],\n[\"a040\",\"\uD862\uDE5A\u9F26\u6CCE\u87D6\u75C3\uD868\uDEB2\u7853\uD87E\uDC40\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\uD852\uDEBB\u862F\u5FBA\u88A0\u44B7\"],\n[\"a055\",\"\uD846\uDC3B\uD85B\uDE05\"],\n[\"a058\",\"\u8A7E\uD849\uDD1B\"],\n[\"a05b\",\"\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5\"],\n[\"a063\",\"\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\uD858\uDD59\u6159\u4C04\u9E96\u617D\"],\n[\"a073\",\"\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\uD84C\uDFF5\u6364\u6802\u35D2\"],\n[\"a0a1\",\"\u5D57\uD862\uDFC2\u8FDA\uD863\uDE39\"],\n[\"a0a6\",\"\u50D9\uD847\uDD46\u7906\u5332\u9638\uD843\uDF3B\u4065\"],\n[\"a0ae\",\"\u77FE\"],\n[\"a0b0\",\"\u7CC2\uD857\uDF1A\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\uD85D\uDC86\u805B\u74F0\u8103\u7724\u8989\uD859\uDFCC\u7553\uD85B\uDED1\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6\"],\n[\"a0d4\",\"\u89A9\u7468\u6DB9\u87C1\uD850\uDC11\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077\"],\n[\"a0e2\",\"\u7F71\uD862\uDF2D\u7250\u60E9\u4B7E\u5220\u3C18\uD84F\uDCC7\uD857\uDED7\uD85D\uDE56\uD855\uDD31\uD846\uDD44\uD844\uDEFE\uD866\uDD03\uD85B\uDDDC\uD85C\uDCAD\u5CC1\uD858\uDDAD\uD862\uDE0F\uD84D\uDE77\uD840\uDCEE\uD85A\uDC46\uD853\uDF0E\u4562\u5B1F\uD858\uDF4C\u9F50\u9EA6\uD858\uDE6B\"],\n[\"a3c0\",\"\u2400\",31,\"\u2421\"],\n[\"c6a1\",\"\u2460\",9,\"\u2474\",9,\"\u2170\",9,\"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\u00A8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041\",23],\n[\"c740\",\"\u3059\",58,\"\u30A1\u30A2\u30A3\u30A4\"],\n[\"c7a1\",\"\u30A5\",81,\"\u0410\",5,\"\u0401\u0416\",4],\n[\"c840\",\"\u041B\",26,\"\u0451\u0436\",25,\"\u21E7\u21B8\u21B9\u31CF\uD840\uDCCC\u4E5A\uD840\uDC8A\u5202\u4491\"],\n[\"c8a1\",\"\u9FB0\u5188\u9FB1\uD85D\uDE07\"],\n[\"c8cd\",\"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3\"],\n[\"c8f5\",\"\u0283\u0250\u025B\u0254\u0275\u0153\u00F8\u014B\u028A\u026A\"],\n[\"f9fe\",\"\uFFED\"],\n[\"fa40\",\"\uD841\uDD47\u92DB\uD841\uDDDF\uD84F\uDFC5\u854C\u42B5\u73EF\u51B5\u3649\uD852\uDD42\uD862\uDDE4\u9344\uD846\uDDDB\u82EE\uD84F\uDCC8\u783C\u6744\u62DF\uD852\uDD33\uD862\uDDAA\uD840\uDEA0\uD85A\uDFB3\uD844\uDF05\u4FAB\uD849\uDCED\u5008\uD85B\uDD29\uD85E\uDE84\uD84D\uDE00\uD852\uDEB1\uD849\uDD13\u5029\uD840\uDF7E\u5FA4\uD840\uDF80\uD840\uDF47\u6EDB\uD841\uDC1F\u507D\u5101\u347A\u510E\u986C\u3743\u8416\uD852\uDDA4\uD841\uDC87\u5160\uD84C\uDFB4\u516A\uD842\uDFFF\uD848\uDCFC\uD840\uDEE5\uD849\uDD30\uD841\uDD8E\uD84C\uDE33\uD846\uDD83\u5B82\u877D\uD841\uDDB3\uD84F\uDC99\u51B2\u51B8\"],\n[\"faa1\",\"\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\uD852\uDEA6\u51B3\u51E2\u5342\u51ED\u83CD\u693E\uD84D\uDF2D\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\uD85A\uDF13\u5305\uD862\uDEDE\u5549\u6ED9\uD84F\uDF80\uD842\uDD54\uD84F\uDFEC\u5333\u5344\uD842\uDFE2\u6CCB\uD845\uDF26\u681B\u73D5\u604A\u3EAA\u38CC\uD845\uDEE8\u71DD\u44A2\u536D\u5374\uD861\uDEAB\u537E\u537F\uD845\uDD96\uD845\uDE13\u77E6\u5393\uD862\uDE9B\u53A0\u53AB\u53AE\u73A7\uD855\uDF72\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\uD842\uDF8F\u53E0\uD84F\uDFEB\uD84B\uDDA3\u53F6\uD843\uDC77\u5413\u7079\u552B\u6657\u6D5B\u546D\uD85A\uDF53\uD843\uDD74\u555D\u548F\u54A4\u47A6\uD845\uDF0D\uD843\uDEDD\u3DB4\uD843\uDD4D\"],\n[\"fb40\",\"\uD862\uDDBC\uD849\uDE98\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\uD846\uDCD7\uD850\uDC3A\u4552\uD851\uDC35\u66B3\uD844\uDCB4\u5637\u66CD\uD84C\uDE8A\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\uD862\uDF66\u3623\uD844\uDE4F\u5746\uD850\uDDA5\u6C6E\u708B\u5742\u36B1\uD85B\uDC7E\u57E6\uD845\uDC16\u5803\uD845\uDC54\uD850\uDF63\u5826\uD852\uDFF5\u585C\u58AA\u3561\u58E0\u58DC\uD844\uDE3C\u58FB\u5BFF\u5743\uD868\uDD50\uD850\uDE78\u93D3\u35A1\u591F\u68A6\u36C3\u6E59\"],\n[\"fba1\",\"\uD845\uDE3E\u5A24\u5553\uD845\uDE92\u8505\u59C9\uD843\uDD4E\uD85B\uDC81\uD85B\uDD2A\uD845\uDFDC\u59D9\uD845\uDFFB\uD845\uDFB2\uD85B\uDDA6\u6D71\uD846\uDC28\uD845\uDED5\u59F9\uD85B\uDE45\u5AAB\u5A63\u36E6\uD852\uDDA9\u5A77\u3708\u5A96\u7465\u5AD3\uD85B\uDFA1\uD849\uDD54\u3D85\uD846\uDD11\u3732\uD845\uDEB8\u5E83\u52D0\u5B76\u6588\u5B7C\uD85E\uDE0E\u4004\u485D\uD840\uDE04\u5BD5\u6160\uD846\uDE34\uD856\uDDCC\uD841\uDDA5\u5BF3\u5B9D\u4D10\u5C05\uD846\uDF44\u5C13\u73CE\u5C14\uD847\uDCA5\uD85A\uDF28\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\uD847\uDDF9\uD847\uDE37\u5D10\u5D18\u5D46\uD847\uDEA4\u5CBA\u5DD7\u82FC\u382D\uD852\uDD01\uD848\uDC49\uD848\uDD73\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\uD851\uDCBC\uD843\uDCD3\u53A6\u4EB7\u5ED0\u53A8\uD845\uDF71\u5E09\u5EF4\uD861\uDC82\"],\n[\"fc40\",\"\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\uD840\uDDC1\uD87E\uDC94\u3ADE\u48AE\uD844\uDF3A\u5F3A\uD85A\uDC88\uD848\uDFD0\u5F58\uD849\uDC71\u5F63\u97BD\uD85B\uDE6E\u5F72\u9340\uD862\uDE36\u5FA7\u5DB6\u3D5F\uD854\uDE50\uD847\uDF6A\uD85C\uDCF8\uD849\uDE68\u91D6\uD840\uDE9E\uD862\uDE29\u6031\u6685\uD846\uDC77\u3963\u3DC7\u3639\u5790\uD849\uDFB4\u7971\u3E40\u609E\u60A4\u60B3\uD852\uDD82\uD852\uDD8F\uD85E\uDE53\u74A4\u50E1\u5AA0\u6164\u8424\u6142\uD87E\uDCA6\uD85B\uDED2\u6181\u51F4\uD841\uDE56\u6187\u5BAA\uD84F\uDFB7\"],\n[\"fca1\",\"\uD84A\uDC5F\u61D3\uD862\uDF9D\uD866\uDD5D\u61D0\u3932\uD84A\uDD80\uD84A\uDCC1\u6023\u615C\u651E\u638B\uD840\uDD18\u62C5\uD845\uDF70\u62D5\uD84B\uDE0D\u636C\uD852\uDDDF\u3A17\u6438\u63F8\uD844\uDF8E\uD845\uDFFC\u6490\u6F8A\uD84B\uDE36\u9814\uD850\uDC8C\uD855\uDF1D\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\uD852\uDE28\uD852\uDE23\u6585\u656D\u655F\uD84C\uDC7E\u65B5\uD852\uDD40\u4B37\u65D1\u40D8\uD846\uDC29\u65E0\u65E3\u5FDF\uD84D\uDC00\u6618\uD84C\uDDF7\uD84C\uDDF8\u6644\uD84C\uDDA4\uD84C\uDDA5\u664B\uD843\uDE75\u6667\uD854\uDDE6\u6673\u6674\uD847\uDE3D\uD84C\uDE31\uD861\uDDF4\uD84C\uDDC8\uD854\uDF13\u77C5\uD84A\uDCF7\u99A4\u6702\uD850\uDF9C\uD852\uDE21\u3B2B\u69FA\uD84D\uDFC2\u675E\u6767\u6762\uD850\uDDCD\uD864\uDCED\u67D7\u44E9\u6822\u6E50\u923C\u6801\uD84C\uDFE6\uD85B\uDDA0\u685D\"],\n[\"fd40\",\"\uD84D\uDC6F\u69E1\u6A0B\uD862\uDEDF\u6973\u68C3\uD84D\uDDCD\u6901\u6900\u3D32\u3A01\uD84D\uDE3C\u3B80\u67AC\u6961\uD862\uDE4A\u42FC\u6936\u6998\u3BA1\uD840\uDFC9\u8363\u5090\u69F9\uD84D\uDE59\uD848\uDD2A\u6A45\uD84D\uDF03\u6A9D\u3BF3\u67B1\u6AC8\uD864\uDD9C\u3C0D\u6B1D\uD842\uDD23\u60DE\u6B35\u6B74\uD849\uDFCD\u6EB5\uD84E\uDEDB\uD840\uDFB5\uD846\uDD58\u3740\u5421\uD84E\uDF5A\u6BE1\uD84F\uDEFC\u6BDC\u6C37\uD849\uDC8B\uD852\uDCF1\uD85A\uDF51\u6C5A\u8226\u6C79\uD84F\uDDBC\u44C5\uD84F\uDDBD\uD850\uDDA4\uD852\uDD0C\uD852\uDD00\"],\n[\"fda1\",\"\uD84F\uDCC9\u36E5\u3CEB\uD843\uDD32\u9B83\uD84C\uDDF9\uD849\uDC91\u7F8F\u6837\uD85B\uDD25\uD85B\uDDA1\uD85B\uDDEB\u6D96\u6D5C\u6E7C\u6F04\uD852\uDD7F\uD850\uDC85\uD85B\uDE72\u8533\uD85B\uDF74\u51C7\u6C9C\u6E1D\u842E\uD862\uDF21\u6E2F\uD84F\uDE2F\u7453\uD84F\uDF82\u79CC\u6E4F\u5A91\uD84C\uDC4B\u6FF8\u370D\u6F9D\uD84F\uDE30\u6EFA\uD845\uDC97\uD850\uDC3D\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\uD864\uDD70\u3D3B\u6F9F\uD850\uDD44\u6FD3\uD850\uDC91\uD850\uDD55\uD850\uDC39\uD84F\uDFF0\uD84F\uDFB4\uD850\uDD3F\u51DF\uD850\uDD56\uD850\uDD57\uD850\uDD40\uD858\uDDDD\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\uD850\uDE77\u712B\u7145\u5A88\u714A\u716E\u5C9C\uD850\uDF65\u714F\u9362\uD850\uDEC1\u712C\uD851\uDC5A\uD852\uDE27\uD852\uDE22\u71BA\uD862\uDFE8\u70BD\u720E\"],\n[\"fe40\",\"\u9442\u7215\u5911\u9443\u7224\u9341\uD855\uDE05\u722E\u7240\uD852\uDD74\u68BD\u7255\u7257\u3E55\uD84C\uDC44\u680D\u6F3D\u7282\u732A\u732B\uD852\uDC23\uD862\uDC2B\u48ED\uD862\uDC04\u7328\u732E\u73CF\u73AA\uD843\uDC3A\uD85A\uDE2E\u73C9\u7449\uD850\uDDE2\uD845\uDEE7\uD852\uDE24\u6623\u36C5\uD852\uDDB7\uD852\uDD8D\uD852\uDDFB\u73F7\u7415\u6903\uD852\uDE26\u7439\uD841\uDDC3\u3ED7\u745C\uD84A\uDCAD\u7460\uD863\uDEB2\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\uD852\uDE8C\"],\n[\"fea1\",\"\uD850\uDD5F\uD852\uDE79\uD862\uDF8F\u5B46\uD863\uDC03\uD846\uDC9E\u74C8\uD846\uDD88\u750E\u74E9\u751E\uD863\uDED9\uD846\uDE4B\u5BD7\uD863\uDEAC\u9385\u754D\u754A\u7567\u756E\uD853\uDF82\u3F04\uD853\uDD13\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\uD858\uDFF5\u7690\u81EF\u37F8\uD85A\uDD11\uD85A\uDD0E\u76A1\u76A5\u76B7\u76CC\uD85B\uDF9F\u8462\uD854\uDC9D\uD854\uDD7D\uD847\uDE1C\u771E\u7726\u7740\u64AF\uD854\uDE20\u7758\uD84C\uDEAC\u77AF\uD862\uDD64\uD862\uDD68\uD845\uDEC1\u77F4\u7809\uD844\uDF76\uD852\uDE12\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\uD855\uDDE0\u78D7\u7934\u78B1\uD85D\uDE0C\u8FB8\u8884\uD862\uDF2B\uD858\uDC83\uD849\uDE1C\u7986\u8900\u6902\u7980\uD856\uDC57\u799D\uD85E\uDF39\u793C\u79A9\u6E2A\uD85C\uDD26\u3EA8\u79C6\uD864\uDD0D\u79D4\"]\n]\n", "\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n    \n    // == Japanese/ShiftJIS ====================================================\n    // All japanese encodings are based on JIS X set of standards:\n    // JIS X 0201 - Single-byte encoding of ASCII + \u00A5 + Kana chars at 0xA1-0xDF.\n    // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n    //              Has several variations in 1978, 1983, 1990 and 1997.\n    // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n    // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n    //              2 planes, first is superset of 0208, second - revised 0212.\n    //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n    // Byte encodings are:\n    //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n    //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n    //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n    //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.\n    //               0x00-0x7F       - lower part of 0201\n    //               0x8E, 0xA1-0xDF - upper part of 0201\n    //               (0xA1-0xFE)x2   - 0208 plane (94x94).\n    //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n    //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n    //               Used as-is in ISO2022 family.\n    //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n    //                0201-1976 Roman, 0208-1978, 0208-1983.\n    //  * ISO2022-JP-1: Adds esc seq for 0212-1990.\n    //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n    //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n    //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n    //\n    // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n    //\n    // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n    'shiftjis': {\n        type: '_dbcs',\n        table: function() { return require('./tables/shiftjis.json') },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n        encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n    },\n    'csshiftjis': 'shiftjis',\n    'mskanji': 'shiftjis',\n    'sjis': 'shiftjis',\n    'windows31j': 'shiftjis',\n    'ms31j': 'shiftjis',\n    'xsjis': 'shiftjis',\n    'windows932': 'shiftjis',\n    'ms932': 'shiftjis',\n    '932': 'shiftjis',\n    'cp932': 'shiftjis',\n\n    'eucjp': {\n        type: '_dbcs',\n        table: function() { return require('./tables/eucjp.json') },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n    },\n\n    // TODO: KDDI extension to Shift_JIS\n    // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n    // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n    // == Chinese/GBK ==========================================================\n    // http://en.wikipedia.org/wiki/GBK\n    // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n    // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n    'gb2312': 'cp936',\n    'gb231280': 'cp936',\n    'gb23121980': 'cp936',\n    'csgb2312': 'cp936',\n    'csiso58gb231280': 'cp936',\n    'euccn': 'cp936',\n\n    // Microsoft's CP936 is a subset and approximation of GBK.\n    'windows936': 'cp936',\n    'ms936': 'cp936',\n    '936': 'cp936',\n    'cp936': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json') },\n    },\n\n    // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n    'gbk': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n    },\n    'xgbk': 'gbk',\n    'isoir58': 'gbk',\n\n    // GB18030 is an algorithmic extension of GBK.\n    // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n    // http://icu-project.org/docs/papers/gb18030.html\n    // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n    // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n    'gb18030': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n        gb18030: function() { return require('./tables/gb18030-ranges.json') },\n        encodeSkipVals: [0x80],\n        encodeAdd: {'\u20AC': 0xA2E3},\n    },\n\n    'chinese': 'gb18030',\n\n\n    // == Korean ===============================================================\n    // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n    'windows949': 'cp949',\n    'ms949': 'cp949',\n    '949': 'cp949',\n    'cp949': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp949.json') },\n    },\n\n    'cseuckr': 'cp949',\n    'csksc56011987': 'cp949',\n    'euckr': 'cp949',\n    'isoir149': 'cp949',\n    'korean': 'cp949',\n    'ksc56011987': 'cp949',\n    'ksc56011989': 'cp949',\n    'ksc5601': 'cp949',\n\n\n    // == Big5/Taiwan/Hong Kong ================================================\n    // There are lots of tables for Big5 and cp950. Please see the following links for history:\n    // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n    // Variations, in roughly number of defined chars:\n    //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n    //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n    //  * Big5-2003 (Taiwan standard) almost superset of cp950.\n    //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n    //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n    //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n    //    Plus, it has 4 combining sequences.\n    //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n    //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n    //    Implementations are not consistent within browsers; sometimes labeled as just big5.\n    //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n    //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n    //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n    //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n    //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n    // \n    // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n    // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n    'windows950': 'cp950',\n    'ms950': 'cp950',\n    '950': 'cp950',\n    'cp950': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp950.json') },\n    },\n\n    // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n    'big5': 'big5hkscs',\n    'big5hkscs': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n        encodeSkipVals: [\n            // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of\n            // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.\n            // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.\n            0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,\n            0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,\n            0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,\n            0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,\n            0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,\n\n            // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345\n            0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce,\n        ],\n    },\n\n    'cnbig5': 'big5hkscs',\n    'csbig5': 'big5hkscs',\n    'xxbig5': 'big5hkscs',\n};\n", "\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n    require(\"./internal\"),\n    require(\"./utf32\"),\n    require(\"./utf16\"),\n    require(\"./utf7\"),\n    require(\"./sbcs-codec\"),\n    require(\"./sbcs-data\"),\n    require(\"./sbcs-data-generated\"),\n    require(\"./dbcs-codec\"),\n    require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n    var module = modules[i];\n    for (var enc in module)\n        if (Object.prototype.hasOwnProperty.call(module, enc))\n            exports[enc] = module[enc];\n}\n", "\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), \n// we opt to dependency-inject it instead of creating a hard dependency.\nmodule.exports = function(stream_module) {\n    var Transform = stream_module.Transform;\n\n    // == Encoder stream =======================================================\n\n    function IconvLiteEncoderStream(conv, options) {\n        this.conv = conv;\n        options = options || {};\n        options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n        Transform.call(this, options);\n    }\n\n    IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n        constructor: { value: IconvLiteEncoderStream }\n    });\n\n    IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n        if (typeof chunk != 'string')\n            return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n        try {\n            var res = this.conv.write(chunk);\n            if (res && res.length) this.push(res);\n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteEncoderStream.prototype._flush = function(done) {\n        try {\n            var res = this.conv.end();\n            if (res && res.length) this.push(res);\n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteEncoderStream.prototype.collect = function(cb) {\n        var chunks = [];\n        this.on('error', cb);\n        this.on('data', function(chunk) { chunks.push(chunk); });\n        this.on('end', function() {\n            cb(null, Buffer.concat(chunks));\n        });\n        return this;\n    }\n\n\n    // == Decoder stream =======================================================\n\n    function IconvLiteDecoderStream(conv, options) {\n        this.conv = conv;\n        options = options || {};\n        options.encoding = this.encoding = 'utf8'; // We output strings.\n        Transform.call(this, options);\n    }\n\n    IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n        constructor: { value: IconvLiteDecoderStream }\n    });\n\n    IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n        if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array))\n            return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n        try {\n            var res = this.conv.write(chunk);\n            if (res && res.length) this.push(res, this.encoding);\n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteDecoderStream.prototype._flush = function(done) {\n        try {\n            var res = this.conv.end();\n            if (res && res.length) this.push(res, this.encoding);                \n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteDecoderStream.prototype.collect = function(cb) {\n        var res = '';\n        this.on('error', cb);\n        this.on('data', function(chunk) { res += chunk; });\n        this.on('end', function() {\n            cb(null, res);\n        });\n        return this;\n    }\n\n    return {\n        IconvLiteEncoderStream: IconvLiteEncoderStream,\n        IconvLiteDecoderStream: IconvLiteDecoderStream,\n    };\n};\n", "\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n    iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '\uFFFD';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n    str = \"\" + (str || \"\"); // Ensure string.\n\n    var encoder = iconv.getEncoder(encoding, options);\n\n    var res = encoder.write(str);\n    var trail = encoder.end();\n    \n    return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n    if (typeof buf === 'string') {\n        if (!iconv.skipDecodeWarning) {\n            console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n            iconv.skipDecodeWarning = true;\n        }\n\n        buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n    }\n\n    var decoder = iconv.getDecoder(encoding, options);\n\n    var res = decoder.write(buf);\n    var trail = decoder.end();\n\n    return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n    try {\n        iconv.getCodec(enc);\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n    if (!iconv.encodings)\n        iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n    \n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    var enc = iconv._canonicalizeEncoding(encoding);\n\n    // Traverse iconv.encodings to find actual codec.\n    var codecOptions = {};\n    while (true) {\n        var codec = iconv._codecDataCache[enc];\n        if (codec)\n            return codec;\n\n        var codecDef = iconv.encodings[enc];\n\n        switch (typeof codecDef) {\n            case \"string\": // Direct alias to other encoding.\n                enc = codecDef;\n                break;\n\n            case \"object\": // Alias with options. Can be layered.\n                for (var key in codecDef)\n                    codecOptions[key] = codecDef[key];\n\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n                \n                enc = codecDef.type;\n                break;\n\n            case \"function\": // Codec itself.\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n\n                // The codec function must load all tables and return object with .encoder and .decoder methods.\n                // It'll be called only once (for each different options object).\n                codec = new codecDef(codecOptions, iconv);\n\n                iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n                return codec;\n\n            default:\n                throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n        }\n    }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        encoder = new codec.encoder(options, codec);\n\n    if (codec.bomAware && options && options.addBOM)\n        encoder = new bomHandling.PrependBOM(encoder, options);\n\n    return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        decoder = new codec.decoder(options, codec);\n\n    if (codec.bomAware && !(options && options.stripBOM === false))\n        decoder = new bomHandling.StripBOM(decoder, options);\n\n    return decoder;\n}\n\n// Streaming API\n// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add\n// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.\n// If you would like to enable it explicitly, please add the following code to your app:\n// > iconv.enableStreamingAPI(require('stream'));\niconv.enableStreamingAPI = function enableStreamingAPI(stream_module) {\n    if (iconv.supportsStreams)\n        return;\n\n    // Dependency-inject stream module to create IconvLite stream classes.\n    var streams = require(\"./streams\")(stream_module);\n\n    // Not public API yet, but expose the stream classes.\n    iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;\n    iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;\n\n    // Streaming API.\n    iconv.encodeStream = function encodeStream(encoding, options) {\n        return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n    }\n\n    iconv.decodeStream = function decodeStream(encoding, options) {\n        return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n    }\n\n    iconv.supportsStreams = true;\n}\n\n// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).\nvar stream_module;\ntry {\n    stream_module = require(\"stream\");\n} catch (e) {}\n\nif (stream_module && stream_module.Transform) {\n    iconv.enableStreamingAPI(stream_module);\n\n} else {\n    // In rare cases where 'stream' module is not available by default, throw a helpful exception.\n    iconv.encodeStream = iconv.decodeStream = function() {\n        throw new Error(\"iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.\");\n    };\n}\n\nif (\"\u0100\" != \"\\u0100\") {\n    console.error(\"iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n", "'use strict';\n\nvar iconvLite = require('iconv-lite');\n\n// Expose to the world\nmodule.exports.convert = convert;\n\n/**\n * Convert encoding of an UTF-8 string or a buffer\n *\n * @param {String|Buffer} str String to be converted\n * @param {String} to Encoding to be converted to\n * @param {String} [from='UTF-8'] Encoding to be converted from\n * @return {Buffer} Encoded string\n */\nfunction convert(str, to, from) {\n    from = checkEncoding(from || 'UTF-8');\n    to = checkEncoding(to || 'UTF-8');\n    str = str || '';\n\n    var result;\n\n    if (from !== 'UTF-8' && typeof str === 'string') {\n        str = Buffer.from(str, 'binary');\n    }\n\n    if (from === to) {\n        if (typeof str === 'string') {\n            result = Buffer.from(str);\n        } else {\n            result = str;\n        }\n    } else {\n        try {\n            result = convertIconvLite(str, to, from);\n        } catch (E) {\n            console.error(E);\n            result = str;\n        }\n    }\n\n    if (typeof result === 'string') {\n        result = Buffer.from(result, 'utf-8');\n    }\n\n    return result;\n}\n\n/**\n * Convert encoding of astring with iconv-lite\n *\n * @param {String|Buffer} str String to be converted\n * @param {String} to Encoding to be converted to\n * @param {String} [from='UTF-8'] Encoding to be converted from\n * @return {Buffer} Encoded string\n */\nfunction convertIconvLite(str, to, from) {\n    if (to === 'UTF-8') {\n        return iconvLite.decode(str, from);\n    } else if (from === 'UTF-8') {\n        return iconvLite.encode(str, to);\n    } else {\n        return iconvLite.encode(iconvLite.decode(str, from), to);\n    }\n}\n\n/**\n * Converts charset name if needed\n *\n * @param {String} name Character set\n * @return {String} Character set name\n */\nfunction checkEncoding(name) {\n    return (name || '')\n        .toString()\n        .trim()\n        .replace(/^latin[\\-_]?(\\d+)$/i, 'ISO-8859-$1')\n        .replace(/^win(?:dows)?[\\-_]?(\\d+)$/i, 'WINDOWS-$1')\n        .replace(/^utf[\\-_]?(\\d+)$/i, 'UTF-$1')\n        .replace(/^ks_c_5601\\-1987$/i, 'CP949')\n        .replace(/^us[\\-_]?ascii$/i, 'ASCII')\n        .toUpperCase();\n}\n", "'use strict'\n\n/*\n  This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at\n\n  https://github.com/nodejs/node/blob/main/lib/internal/per_context/primordials.js\n\n  Don't try to replace with the original file and keep it up to date with the upstream file.\n*/\n\n// This is a simplified version of AggregateError\nclass AggregateError extends Error {\n  constructor(errors) {\n    if (!Array.isArray(errors)) {\n      throw new TypeError(`Expected input to be an Array, got ${typeof errors}`)\n    }\n    let message = ''\n    for (let i = 0; i < errors.length; i++) {\n      message += `    ${errors[i].stack}\\n`\n    }\n    super(message)\n    this.name = 'AggregateError'\n    this.errors = errors\n  }\n}\nmodule.exports = {\n  AggregateError,\n  ArrayIsArray(self) {\n    return Array.isArray(self)\n  },\n  ArrayPrototypeIncludes(self, el) {\n    return self.includes(el)\n  },\n  ArrayPrototypeIndexOf(self, el) {\n    return self.indexOf(el)\n  },\n  ArrayPrototypeJoin(self, sep) {\n    return self.join(sep)\n  },\n  ArrayPrototypeMap(self, fn) {\n    return self.map(fn)\n  },\n  ArrayPrototypePop(self, el) {\n    return self.pop(el)\n  },\n  ArrayPrototypePush(self, el) {\n    return self.push(el)\n  },\n  ArrayPrototypeSlice(self, start, end) {\n    return self.slice(start, end)\n  },\n  Error,\n  FunctionPrototypeCall(fn, thisArgs, ...args) {\n    return fn.call(thisArgs, ...args)\n  },\n  FunctionPrototypeSymbolHasInstance(self, instance) {\n    return Function.prototype[Symbol.hasInstance].call(self, instance)\n  },\n  MathFloor: Math.floor,\n  Number,\n  NumberIsInteger: Number.isInteger,\n  NumberIsNaN: Number.isNaN,\n  NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER,\n  NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER,\n  NumberParseInt: Number.parseInt,\n  ObjectDefineProperties(self, props) {\n    return Object.defineProperties(self, props)\n  },\n  ObjectDefineProperty(self, name, prop) {\n    return Object.defineProperty(self, name, prop)\n  },\n  ObjectGetOwnPropertyDescriptor(self, name) {\n    return Object.getOwnPropertyDescriptor(self, name)\n  },\n  ObjectKeys(obj) {\n    return Object.keys(obj)\n  },\n  ObjectSetPrototypeOf(target, proto) {\n    return Object.setPrototypeOf(target, proto)\n  },\n  Promise,\n  PromisePrototypeCatch(self, fn) {\n    return self.catch(fn)\n  },\n  PromisePrototypeThen(self, thenFn, catchFn) {\n    return self.then(thenFn, catchFn)\n  },\n  PromiseReject(err) {\n    return Promise.reject(err)\n  },\n  PromiseResolve(val) {\n    return Promise.resolve(val)\n  },\n  ReflectApply: Reflect.apply,\n  RegExpPrototypeTest(self, value) {\n    return self.test(value)\n  },\n  SafeSet: Set,\n  String,\n  StringPrototypeSlice(self, start, end) {\n    return self.slice(start, end)\n  },\n  StringPrototypeToLowerCase(self) {\n    return self.toLowerCase()\n  },\n  StringPrototypeToUpperCase(self) {\n    return self.toUpperCase()\n  },\n  StringPrototypeTrim(self) {\n    return self.trim()\n  },\n  Symbol,\n  SymbolFor: Symbol.for,\n  SymbolAsyncIterator: Symbol.asyncIterator,\n  SymbolHasInstance: Symbol.hasInstance,\n  SymbolIterator: Symbol.iterator,\n  SymbolDispose: Symbol.dispose || Symbol('Symbol.dispose'),\n  SymbolAsyncDispose: Symbol.asyncDispose || Symbol('Symbol.asyncDispose'),\n  TypedArrayPrototypeSet(self, buf, len) {\n    return self.set(buf, len)\n  },\n  Boolean,\n  Uint8Array\n}\n", "'use strict'\n\n/*\n  This file is a reduced and adapted version of the main lib/internal/util/inspect.js file defined at\n\n  https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js\n\n  Don't try to replace with the original file and keep it up to date with the upstream file.\n*/\nmodule.exports = {\n  format(format, ...args) {\n    // Simplified version of https://nodejs.org/api/util.html#utilformatformat-args\n    return format.replace(/%([sdifj])/g, function (...[_unused, type]) {\n      const replacement = args.shift()\n      if (type === 'f') {\n        return replacement.toFixed(6)\n      } else if (type === 'j') {\n        return JSON.stringify(replacement)\n      } else if (type === 's' && typeof replacement === 'object') {\n        const ctor = replacement.constructor !== Object ? replacement.constructor.name : ''\n        return `${ctor} {}`.trim()\n      } else {\n        return replacement.toString()\n      }\n    })\n  },\n  inspect(value) {\n    // Vastly simplified version of https://nodejs.org/api/util.html#utilinspectobject-options\n    switch (typeof value) {\n      case 'string':\n        if (value.includes(\"'\")) {\n          if (!value.includes('\"')) {\n            return `\"${value}\"`\n          } else if (!value.includes('`') && !value.includes('${')) {\n            return `\\`${value}\\``\n          }\n        }\n        return `'${value}'`\n      case 'number':\n        if (isNaN(value)) {\n          return 'NaN'\n        } else if (Object.is(value, -0)) {\n          return String(value)\n        }\n        return value\n      case 'bigint':\n        return `${String(value)}n`\n      case 'boolean':\n      case 'undefined':\n        return String(value)\n      case 'object':\n        return '{}'\n    }\n  }\n}\n", "'use strict'\n\nconst { format, inspect } = require('./util/inspect')\nconst { AggregateError: CustomAggregateError } = require('./primordials')\n\n/*\n  This file is a reduced and adapted version of the main lib/internal/errors.js file defined at\n\n  https://github.com/nodejs/node/blob/main/lib/internal/errors.js\n\n  Don't try to replace with the original file and keep it up to date (starting from E(...) definitions)\n  with the upstream file.\n*/\n\nconst AggregateError = globalThis.AggregateError || CustomAggregateError\nconst kIsNodeError = Symbol('kIsNodeError')\nconst kTypes = [\n  'string',\n  'function',\n  'number',\n  'object',\n  // Accept 'Function' and 'Object' as alternative to the lower cased version.\n  'Function',\n  'Object',\n  'boolean',\n  'bigint',\n  'symbol'\n]\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/\nconst nodeInternalPrefix = '__node_internal_'\nconst codes = {}\nfunction assert(value, message) {\n  if (!value) {\n    throw new codes.ERR_INTERNAL_ASSERTION(message)\n  }\n}\n\n// Only use this for integers! Decimal numbers do not work with this function.\nfunction addNumericalSeparator(val) {\n  let res = ''\n  let i = val.length\n  const start = val[0] === '-' ? 1 : 0\n  for (; i >= start + 4; i -= 3) {\n    res = `_${val.slice(i - 3, i)}${res}`\n  }\n  return `${val.slice(0, i)}${res}`\n}\nfunction getMessage(key, msg, args) {\n  if (typeof msg === 'function') {\n    assert(\n      msg.length <= args.length,\n      // Default options do not count.\n      `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).`\n    )\n    return msg(...args)\n  }\n  const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length\n  assert(\n    expectedLength === args.length,\n    `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).`\n  )\n  if (args.length === 0) {\n    return msg\n  }\n  return format(msg, ...args)\n}\nfunction E(code, message, Base) {\n  if (!Base) {\n    Base = Error\n  }\n  class NodeError extends Base {\n    constructor(...args) {\n      super(getMessage(code, message, args))\n    }\n    toString() {\n      return `${this.name} [${code}]: ${this.message}`\n    }\n  }\n  Object.defineProperties(NodeError.prototype, {\n    name: {\n      value: Base.name,\n      writable: true,\n      enumerable: false,\n      configurable: true\n    },\n    toString: {\n      value() {\n        return `${this.name} [${code}]: ${this.message}`\n      },\n      writable: true,\n      enumerable: false,\n      configurable: true\n    }\n  })\n  NodeError.prototype.code = code\n  NodeError.prototype[kIsNodeError] = true\n  codes[code] = NodeError\n}\nfunction hideStackFrames(fn) {\n  // We rename the functions that will be hidden to cut off the stacktrace\n  // at the outermost one\n  const hidden = nodeInternalPrefix + fn.name\n  Object.defineProperty(fn, 'name', {\n    value: hidden\n  })\n  return fn\n}\nfunction aggregateTwoErrors(innerError, outerError) {\n  if (innerError && outerError && innerError !== outerError) {\n    if (Array.isArray(outerError.errors)) {\n      // If `outerError` is already an `AggregateError`.\n      outerError.errors.push(innerError)\n      return outerError\n    }\n    const err = new AggregateError([outerError, innerError], outerError.message)\n    err.code = outerError.code\n    return err\n  }\n  return innerError || outerError\n}\nclass AbortError extends Error {\n  constructor(message = 'The operation was aborted', options = undefined) {\n    if (options !== undefined && typeof options !== 'object') {\n      throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options)\n    }\n    super(message, options)\n    this.code = 'ABORT_ERR'\n    this.name = 'AbortError'\n  }\n}\nE('ERR_ASSERTION', '%s', Error)\nE(\n  'ERR_INVALID_ARG_TYPE',\n  (name, expected, actual) => {\n    assert(typeof name === 'string', \"'name' must be a string\")\n    if (!Array.isArray(expected)) {\n      expected = [expected]\n    }\n    let msg = 'The '\n    if (name.endsWith(' argument')) {\n      // For cases like 'first argument'\n      msg += `${name} `\n    } else {\n      msg += `\"${name}\" ${name.includes('.') ? 'property' : 'argument'} `\n    }\n    msg += 'must be '\n    const types = []\n    const instances = []\n    const other = []\n    for (const value of expected) {\n      assert(typeof value === 'string', 'All expected entries have to be of type string')\n      if (kTypes.includes(value)) {\n        types.push(value.toLowerCase())\n      } else if (classRegExp.test(value)) {\n        instances.push(value)\n      } else {\n        assert(value !== 'object', 'The value \"object\" should be written as \"Object\"')\n        other.push(value)\n      }\n    }\n\n    // Special handle `object` in case other instances are allowed to outline\n    // the differences between each other.\n    if (instances.length > 0) {\n      const pos = types.indexOf('object')\n      if (pos !== -1) {\n        types.splice(types, pos, 1)\n        instances.push('Object')\n      }\n    }\n    if (types.length > 0) {\n      switch (types.length) {\n        case 1:\n          msg += `of type ${types[0]}`\n          break\n        case 2:\n          msg += `one of type ${types[0]} or ${types[1]}`\n          break\n        default: {\n          const last = types.pop()\n          msg += `one of type ${types.join(', ')}, or ${last}`\n        }\n      }\n      if (instances.length > 0 || other.length > 0) {\n        msg += ' or '\n      }\n    }\n    if (instances.length > 0) {\n      switch (instances.length) {\n        case 1:\n          msg += `an instance of ${instances[0]}`\n          break\n        case 2:\n          msg += `an instance of ${instances[0]} or ${instances[1]}`\n          break\n        default: {\n          const last = instances.pop()\n          msg += `an instance of ${instances.join(', ')}, or ${last}`\n        }\n      }\n      if (other.length > 0) {\n        msg += ' or '\n      }\n    }\n    switch (other.length) {\n      case 0:\n        break\n      case 1:\n        if (other[0].toLowerCase() !== other[0]) {\n          msg += 'an '\n        }\n        msg += `${other[0]}`\n        break\n      case 2:\n        msg += `one of ${other[0]} or ${other[1]}`\n        break\n      default: {\n        const last = other.pop()\n        msg += `one of ${other.join(', ')}, or ${last}`\n      }\n    }\n    if (actual == null) {\n      msg += `. Received ${actual}`\n    } else if (typeof actual === 'function' && actual.name) {\n      msg += `. Received function ${actual.name}`\n    } else if (typeof actual === 'object') {\n      var _actual$constructor\n      if (\n        (_actual$constructor = actual.constructor) !== null &&\n        _actual$constructor !== undefined &&\n        _actual$constructor.name\n      ) {\n        msg += `. Received an instance of ${actual.constructor.name}`\n      } else {\n        const inspected = inspect(actual, {\n          depth: -1\n        })\n        msg += `. Received ${inspected}`\n      }\n    } else {\n      let inspected = inspect(actual, {\n        colors: false\n      })\n      if (inspected.length > 25) {\n        inspected = `${inspected.slice(0, 25)}...`\n      }\n      msg += `. Received type ${typeof actual} (${inspected})`\n    }\n    return msg\n  },\n  TypeError\n)\nE(\n  'ERR_INVALID_ARG_VALUE',\n  (name, value, reason = 'is invalid') => {\n    let inspected = inspect(value)\n    if (inspected.length > 128) {\n      inspected = inspected.slice(0, 128) + '...'\n    }\n    const type = name.includes('.') ? 'property' : 'argument'\n    return `The ${type} '${name}' ${reason}. Received ${inspected}`\n  },\n  TypeError\n)\nE(\n  'ERR_INVALID_RETURN_VALUE',\n  (input, name, value) => {\n    var _value$constructor\n    const type =\n      value !== null &&\n      value !== undefined &&\n      (_value$constructor = value.constructor) !== null &&\n      _value$constructor !== undefined &&\n      _value$constructor.name\n        ? `instance of ${value.constructor.name}`\n        : `type ${typeof value}`\n    return `Expected ${input} to be returned from the \"${name}\"` + ` function but got ${type}.`\n  },\n  TypeError\n)\nE(\n  'ERR_MISSING_ARGS',\n  (...args) => {\n    assert(args.length > 0, 'At least one arg needs to be specified')\n    let msg\n    const len = args.length\n    args = (Array.isArray(args) ? args : [args]).map((a) => `\"${a}\"`).join(' or ')\n    switch (len) {\n      case 1:\n        msg += `The ${args[0]} argument`\n        break\n      case 2:\n        msg += `The ${args[0]} and ${args[1]} arguments`\n        break\n      default:\n        {\n          const last = args.pop()\n          msg += `The ${args.join(', ')}, and ${last} arguments`\n        }\n        break\n    }\n    return `${msg} must be specified`\n  },\n  TypeError\n)\nE(\n  'ERR_OUT_OF_RANGE',\n  (str, range, input) => {\n    assert(range, 'Missing \"range\" argument')\n    let received\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input))\n    } else if (typeof input === 'bigint') {\n      received = String(input)\n      const limit = BigInt(2) ** BigInt(32)\n      if (input > limit || input < -limit) {\n        received = addNumericalSeparator(received)\n      }\n      received += 'n'\n    } else {\n      received = inspect(input)\n    }\n    return `The value of \"${str}\" is out of range. It must be ${range}. Received ${received}`\n  },\n  RangeError\n)\nE('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times', Error)\nE('ERR_METHOD_NOT_IMPLEMENTED', 'The %s method is not implemented', Error)\nE('ERR_STREAM_ALREADY_FINISHED', 'Cannot call %s after a stream was finished', Error)\nE('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable', Error)\nE('ERR_STREAM_DESTROYED', 'Cannot call %s after a stream was destroyed', Error)\nE('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError)\nE('ERR_STREAM_PREMATURE_CLOSE', 'Premature close', Error)\nE('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF', Error)\nE('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event', Error)\nE('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error)\nE('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError)\nmodule.exports = {\n  AbortError,\n  aggregateTwoErrors: hideStackFrames(aggregateTwoErrors),\n  hideStackFrames,\n  codes\n}\n", "/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n    typeof self !== \"undefined\" ? self :\n    typeof window !== \"undefined\" ? window :\n    /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\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'\n\nconst bufferModule = require('buffer')\nconst { format, inspect } = require('./util/inspect')\nconst {\n  codes: { ERR_INVALID_ARG_TYPE }\n} = require('./errors')\nconst { kResistStopPropagation, AggregateError, SymbolDispose } = require('./primordials')\nconst AbortSignal = globalThis.AbortSignal || require('abort-controller').AbortSignal\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst AsyncFunction = Object.getPrototypeOf(async function () {}).constructor\nconst Blob = globalThis.Blob || bufferModule.Blob\n/* eslint-disable indent */\nconst isBlob =\n  typeof Blob !== 'undefined'\n    ? function isBlob(b) {\n        // eslint-disable-next-line indent\n        return b instanceof Blob\n      }\n    : function isBlob(b) {\n        return false\n      }\n/* eslint-enable indent */\n\nconst validateAbortSignal = (signal, name) => {\n  if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n  }\n}\nconst validateFunction = (value, name) => {\n  if (typeof value !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n  }\n}\nmodule.exports = {\n  AggregateError,\n  kEmptyObject: Object.freeze({}),\n  once(callback) {\n    let called = false\n    return function (...args) {\n      if (called) {\n        return\n      }\n      called = true\n      callback.apply(this, args)\n    }\n  },\n  createDeferredPromise: function () {\n    let resolve\n    let reject\n\n    // eslint-disable-next-line promise/param-names\n    const promise = new Promise((res, rej) => {\n      resolve = res\n      reject = rej\n    })\n    return {\n      promise,\n      resolve,\n      reject\n    }\n  },\n  promisify(fn) {\n    return new Promise((resolve, reject) => {\n      fn((err, ...args) => {\n        if (err) {\n          return reject(err)\n        }\n        return resolve(...args)\n      })\n    })\n  },\n  debuglog() {\n    return function () {}\n  },\n  format,\n  inspect,\n  types: {\n    isAsyncFunction(fn) {\n      return fn instanceof AsyncFunction\n    },\n    isArrayBufferView(arr) {\n      return ArrayBuffer.isView(arr)\n    }\n  },\n  isBlob,\n  deprecate(fn, message) {\n    return fn\n  },\n  addAbortListener:\n    require('events').addAbortListener ||\n    function addAbortListener(signal, listener) {\n      if (signal === undefined) {\n        throw new ERR_INVALID_ARG_TYPE('signal', 'AbortSignal', signal)\n      }\n      validateAbortSignal(signal, 'signal')\n      validateFunction(listener, 'listener')\n      let removeEventListener\n      if (signal.aborted) {\n        queueMicrotask(() => listener())\n      } else {\n        signal.addEventListener('abort', listener, {\n          __proto__: null,\n          once: true,\n          [kResistStopPropagation]: true\n        })\n        removeEventListener = () => {\n          signal.removeEventListener('abort', listener)\n        }\n      }\n      return {\n        __proto__: null,\n        [SymbolDispose]() {\n          var _removeEventListener\n          ;(_removeEventListener = removeEventListener) === null || _removeEventListener === undefined\n            ? undefined\n            : _removeEventListener()\n        }\n      }\n    },\n  AbortSignalAny:\n    AbortSignal.any ||\n    function AbortSignalAny(signals) {\n      // Fast path if there is only one signal.\n      if (signals.length === 1) {\n        return signals[0]\n      }\n      const ac = new AbortController()\n      const abort = () => ac.abort()\n      signals.forEach((signal) => {\n        validateAbortSignal(signal, 'signals')\n        signal.addEventListener('abort', abort, {\n          once: true\n        })\n      })\n      ac.signal.addEventListener(\n        'abort',\n        () => {\n          signals.forEach((signal) => signal.removeEventListener('abort', abort))\n        },\n        {\n          once: true\n        }\n      )\n      return ac.signal\n    }\n}\nmodule.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom')\n", "/* eslint jsdoc/require-jsdoc: \"error\" */\n\n'use strict'\n\nconst {\n  ArrayIsArray,\n  ArrayPrototypeIncludes,\n  ArrayPrototypeJoin,\n  ArrayPrototypeMap,\n  NumberIsInteger,\n  NumberIsNaN,\n  NumberMAX_SAFE_INTEGER,\n  NumberMIN_SAFE_INTEGER,\n  NumberParseInt,\n  ObjectPrototypeHasOwnProperty,\n  RegExpPrototypeExec,\n  String,\n  StringPrototypeToUpperCase,\n  StringPrototypeTrim\n} = require('../ours/primordials')\nconst {\n  hideStackFrames,\n  codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL }\n} = require('../ours/errors')\nconst { normalizeEncoding } = require('../ours/util')\nconst { isAsyncFunction, isArrayBufferView } = require('../ours/util').types\nconst signals = {}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isInt32(value) {\n  return value === (value | 0)\n}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isUint32(value) {\n  return value === value >>> 0\n}\nconst octalReg = /^[0-7]+$/\nconst modeDesc = 'must be a 32-bit unsigned integer or an octal string'\n\n/**\n * Parse and validate values that will be converted into mode_t (the S_*\n * constants). Only valid numbers and octal strings are allowed. They could be\n * converted to 32-bit unsigned integers or non-negative signed integers in the\n * C++ land, but any value higher than 0o777 will result in platform-specific\n * behaviors.\n * @param {*} value Values to be validated\n * @param {string} name Name of the argument\n * @param {number} [def] If specified, will be returned for invalid values\n * @returns {number}\n */\nfunction parseFileMode(value, name, def) {\n  if (typeof value === 'undefined') {\n    value = def\n  }\n  if (typeof value === 'string') {\n    if (RegExpPrototypeExec(octalReg, value) === null) {\n      throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc)\n    }\n    value = NumberParseInt(value, 8)\n  }\n  validateUint32(value, name)\n  return value\n}\n\n/**\n * @callback validateInteger\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInteger} */\nconst validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => {\n  if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n  if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n})\n\n/**\n * @callback validateInt32\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInt32} */\nconst validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => {\n  // The defaults for min and max correspond to the limits of 32-bit integers.\n  if (typeof value !== 'number') {\n    throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n  if (!NumberIsInteger(value)) {\n    throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n  }\n  if (value < min || value > max) {\n    throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n  }\n})\n\n/**\n * @callback validateUint32\n * @param {*} value\n * @param {string} name\n * @param {number|boolean} [positive=false]\n * @returns {asserts value is number}\n */\n\n/** @type {validateUint32} */\nconst validateUint32 = hideStackFrames((value, name, positive = false) => {\n  if (typeof value !== 'number') {\n    throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n  if (!NumberIsInteger(value)) {\n    throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n  }\n  const min = positive ? 1 : 0\n  // 2 ** 32 === 4294967296\n  const max = 4294967295\n  if (value < min || value > max) {\n    throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n  }\n})\n\n/**\n * @callback validateString\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string}\n */\n\n/** @type {validateString} */\nfunction validateString(value, name) {\n  if (typeof value !== 'string') throw new ERR_INVALID_ARG_TYPE(name, 'string', value)\n}\n\n/**\n * @callback validateNumber\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateNumber} */\nfunction validateNumber(value, name, min = undefined, max) {\n  if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  if (\n    (min != null && value < min) ||\n    (max != null && value > max) ||\n    ((min != null || max != null) && NumberIsNaN(value))\n  ) {\n    throw new ERR_OUT_OF_RANGE(\n      name,\n      `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`,\n      value\n    )\n  }\n}\n\n/**\n * @callback validateOneOf\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} oneOf\n */\n\n/** @type {validateOneOf} */\nconst validateOneOf = hideStackFrames((value, name, oneOf) => {\n  if (!ArrayPrototypeIncludes(oneOf, value)) {\n    const allowed = ArrayPrototypeJoin(\n      ArrayPrototypeMap(oneOf, (v) => (typeof v === 'string' ? `'${v}'` : String(v))),\n      ', '\n    )\n    const reason = 'must be one of: ' + allowed\n    throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n  }\n})\n\n/**\n * @callback validateBoolean\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean}\n */\n\n/** @type {validateBoolean} */\nfunction validateBoolean(value, name) {\n  if (typeof value !== 'boolean') throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value)\n}\n\n/**\n * @param {any} options\n * @param {string} key\n * @param {boolean} defaultValue\n * @returns {boolean}\n */\nfunction getOwnPropertyValueOrDefault(options, key, defaultValue) {\n  return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key]\n}\n\n/**\n * @callback validateObject\n * @param {*} value\n * @param {string} name\n * @param {{\n *   allowArray?: boolean,\n *   allowFunction?: boolean,\n *   nullable?: boolean\n * }} [options]\n */\n\n/** @type {validateObject} */\nconst validateObject = hideStackFrames((value, name, options = null) => {\n  const allowArray = getOwnPropertyValueOrDefault(options, 'allowArray', false)\n  const allowFunction = getOwnPropertyValueOrDefault(options, 'allowFunction', false)\n  const nullable = getOwnPropertyValueOrDefault(options, 'nullable', false)\n  if (\n    (!nullable && value === null) ||\n    (!allowArray && ArrayIsArray(value)) ||\n    (typeof value !== 'object' && (!allowFunction || typeof value !== 'function'))\n  ) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'Object', value)\n  }\n})\n\n/**\n * @callback validateDictionary - We are using the Web IDL Standard definition\n *                                of \"dictionary\" here, which means any value\n *                                whose Type is either Undefined, Null, or\n *                                Object (which includes functions).\n * @param {*} value\n * @param {string} name\n * @see https://webidl.spec.whatwg.org/#es-dictionary\n * @see https://tc39.es/ecma262/#table-typeof-operator-results\n */\n\n/** @type {validateDictionary} */\nconst validateDictionary = hideStackFrames((value, name) => {\n  if (value != null && typeof value !== 'object' && typeof value !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE(name, 'a dictionary', value)\n  }\n})\n\n/**\n * @callback validateArray\n * @param {*} value\n * @param {string} name\n * @param {number} [minLength]\n * @returns {asserts value is any[]}\n */\n\n/** @type {validateArray} */\nconst validateArray = hideStackFrames((value, name, minLength = 0) => {\n  if (!ArrayIsArray(value)) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'Array', value)\n  }\n  if (value.length < minLength) {\n    const reason = `must be longer than ${minLength}`\n    throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n  }\n})\n\n/**\n * @callback validateStringArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string[]}\n */\n\n/** @type {validateStringArray} */\nfunction validateStringArray(value, name) {\n  validateArray(value, name)\n  for (let i = 0; i < value.length; i++) {\n    validateString(value[i], `${name}[${i}]`)\n  }\n}\n\n/**\n * @callback validateBooleanArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean[]}\n */\n\n/** @type {validateBooleanArray} */\nfunction validateBooleanArray(value, name) {\n  validateArray(value, name)\n  for (let i = 0; i < value.length; i++) {\n    validateBoolean(value[i], `${name}[${i}]`)\n  }\n}\n\n/**\n * @callback validateAbortSignalArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is AbortSignal[]}\n */\n\n/** @type {validateAbortSignalArray} */\nfunction validateAbortSignalArray(value, name) {\n  validateArray(value, name)\n  for (let i = 0; i < value.length; i++) {\n    const signal = value[i]\n    const indexedName = `${name}[${i}]`\n    if (signal == null) {\n      throw new ERR_INVALID_ARG_TYPE(indexedName, 'AbortSignal', signal)\n    }\n    validateAbortSignal(signal, indexedName)\n  }\n}\n\n/**\n * @param {*} signal\n * @param {string} [name='signal']\n * @returns {asserts signal is keyof signals}\n */\nfunction validateSignalName(signal, name = 'signal') {\n  validateString(signal, name)\n  if (signals[signal] === undefined) {\n    if (signals[StringPrototypeToUpperCase(signal)] !== undefined) {\n      throw new ERR_UNKNOWN_SIGNAL(signal + ' (signals must use all capital letters)')\n    }\n    throw new ERR_UNKNOWN_SIGNAL(signal)\n  }\n}\n\n/**\n * @callback validateBuffer\n * @param {*} buffer\n * @param {string} [name='buffer']\n * @returns {asserts buffer is ArrayBufferView}\n */\n\n/** @type {validateBuffer} */\nconst validateBuffer = hideStackFrames((buffer, name = 'buffer') => {\n  if (!isArrayBufferView(buffer)) {\n    throw new ERR_INVALID_ARG_TYPE(name, ['Buffer', 'TypedArray', 'DataView'], buffer)\n  }\n})\n\n/**\n * @param {string} data\n * @param {string} encoding\n */\nfunction validateEncoding(data, encoding) {\n  const normalizedEncoding = normalizeEncoding(encoding)\n  const length = data.length\n  if (normalizedEncoding === 'hex' && length % 2 !== 0) {\n    throw new ERR_INVALID_ARG_VALUE('encoding', encoding, `is invalid for data of length ${length}`)\n  }\n}\n\n/**\n * Check that the port number is not NaN when coerced to a number,\n * is an integer and that it falls within the legal range of port numbers.\n * @param {*} port\n * @param {string} [name='Port']\n * @param {boolean} [allowZero=true]\n * @returns {number}\n */\nfunction validatePort(port, name = 'Port', allowZero = true) {\n  if (\n    (typeof port !== 'number' && typeof port !== 'string') ||\n    (typeof port === 'string' && StringPrototypeTrim(port).length === 0) ||\n    +port !== +port >>> 0 ||\n    port > 0xffff ||\n    (port === 0 && !allowZero)\n  ) {\n    throw new ERR_SOCKET_BAD_PORT(name, port, allowZero)\n  }\n  return port | 0\n}\n\n/**\n * @callback validateAbortSignal\n * @param {*} signal\n * @param {string} name\n */\n\n/** @type {validateAbortSignal} */\nconst validateAbortSignal = hideStackFrames((signal, name) => {\n  if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n  }\n})\n\n/**\n * @callback validateFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validateFunction} */\nconst validateFunction = hideStackFrames((value, name) => {\n  if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validatePlainFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validatePlainFunction} */\nconst validatePlainFunction = hideStackFrames((value, name) => {\n  if (typeof value !== 'function' || isAsyncFunction(value)) throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validateUndefined\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is undefined}\n */\n\n/** @type {validateUndefined} */\nconst validateUndefined = hideStackFrames((value, name) => {\n  if (value !== undefined) throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value)\n})\n\n/**\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} union\n */\nfunction validateUnion(value, name, union) {\n  if (!ArrayPrototypeIncludes(union, value)) {\n    throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value)\n  }\n}\n\n/*\n  The rules for the Link header field are described here:\n  https://www.rfc-editor.org/rfc/rfc8288.html#section-3\n\n  This regex validates any string surrounded by angle brackets\n  (not necessarily a valid URI reference) followed by zero or more\n  link-params separated by semicolons.\n*/\nconst linkValueRegExp = /^(?:<[^>]*>)(?:\\s*;\\s*[^;\"\\s]+(?:=(\")?[^;\"\\s]*\\1)?)*$/\n\n/**\n * @param {any} value\n * @param {string} name\n */\nfunction validateLinkHeaderFormat(value, name) {\n  if (typeof value === 'undefined' || !RegExpPrototypeExec(linkValueRegExp, value)) {\n    throw new ERR_INVALID_ARG_VALUE(\n      name,\n      value,\n      'must be an array or string of format \"</styles.css>; rel=preload; as=style\"'\n    )\n  }\n}\n\n/**\n * @param {any} hints\n * @return {string}\n */\nfunction validateLinkHeaderValue(hints) {\n  if (typeof hints === 'string') {\n    validateLinkHeaderFormat(hints, 'hints')\n    return hints\n  } else if (ArrayIsArray(hints)) {\n    const hintsLength = hints.length\n    let result = ''\n    if (hintsLength === 0) {\n      return result\n    }\n    for (let i = 0; i < hintsLength; i++) {\n      const link = hints[i]\n      validateLinkHeaderFormat(link, 'hints')\n      result += link\n      if (i !== hintsLength - 1) {\n        result += ', '\n      }\n    }\n    return result\n  }\n  throw new ERR_INVALID_ARG_VALUE(\n    'hints',\n    hints,\n    'must be an array or string of format \"</styles.css>; rel=preload; as=style\"'\n  )\n}\nmodule.exports = {\n  isInt32,\n  isUint32,\n  parseFileMode,\n  validateArray,\n  validateStringArray,\n  validateBooleanArray,\n  validateAbortSignalArray,\n  validateBoolean,\n  validateBuffer,\n  validateDictionary,\n  validateEncoding,\n  validateFunction,\n  validateInt32,\n  validateInteger,\n  validateNumber,\n  validateObject,\n  validateOneOf,\n  validatePlainFunction,\n  validatePort,\n  validateSignalName,\n  validateString,\n  validateUint32,\n  validateUndefined,\n  validateUnion,\n  validateAbortSignal,\n  validateLinkHeaderValue\n}\n", "// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n", "'use strict'\n\nconst { SymbolAsyncIterator, SymbolIterator, SymbolFor } = require('../../ours/primordials')\n\n// We need to use SymbolFor to make these globally available\n// for interopt with readable-stream, i.e. readable-stream\n// and node core needs to be able to read/write private state\n// from each other for proper interoperability.\nconst kIsDestroyed = SymbolFor('nodejs.stream.destroyed')\nconst kIsErrored = SymbolFor('nodejs.stream.errored')\nconst kIsReadable = SymbolFor('nodejs.stream.readable')\nconst kIsWritable = SymbolFor('nodejs.stream.writable')\nconst kIsDisturbed = SymbolFor('nodejs.stream.disturbed')\nconst kIsClosedPromise = SymbolFor('nodejs.webstream.isClosedPromise')\nconst kControllerErrorFunction = SymbolFor('nodejs.webstream.controllerErrorFunction')\nfunction isReadableNodeStream(obj, strict = false) {\n  var _obj$_readableState\n  return !!(\n    (\n      obj &&\n      typeof obj.pipe === 'function' &&\n      typeof obj.on === 'function' &&\n      (!strict || (typeof obj.pause === 'function' && typeof obj.resume === 'function')) &&\n      (!obj._writableState ||\n        ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === undefined\n          ? undefined\n          : _obj$_readableState.readable) !== false) &&\n      // Duplex\n      (!obj._writableState || obj._readableState)\n    ) // Writable has .pipe.\n  )\n}\nfunction isWritableNodeStream(obj) {\n  var _obj$_writableState\n  return !!(\n    (\n      obj &&\n      typeof obj.write === 'function' &&\n      typeof obj.on === 'function' &&\n      (!obj._readableState ||\n        ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === undefined\n          ? undefined\n          : _obj$_writableState.writable) !== false)\n    ) // Duplex\n  )\n}\nfunction isDuplexNodeStream(obj) {\n  return !!(\n    obj &&\n    typeof obj.pipe === 'function' &&\n    obj._readableState &&\n    typeof obj.on === 'function' &&\n    typeof obj.write === 'function'\n  )\n}\nfunction isNodeStream(obj) {\n  return (\n    obj &&\n    (obj._readableState ||\n      obj._writableState ||\n      (typeof obj.write === 'function' && typeof obj.on === 'function') ||\n      (typeof obj.pipe === 'function' && typeof obj.on === 'function'))\n  )\n}\nfunction isReadableStream(obj) {\n  return !!(\n    obj &&\n    !isNodeStream(obj) &&\n    typeof obj.pipeThrough === 'function' &&\n    typeof obj.getReader === 'function' &&\n    typeof obj.cancel === 'function'\n  )\n}\nfunction isWritableStream(obj) {\n  return !!(obj && !isNodeStream(obj) && typeof obj.getWriter === 'function' && typeof obj.abort === 'function')\n}\nfunction isTransformStream(obj) {\n  return !!(obj && !isNodeStream(obj) && typeof obj.readable === 'object' && typeof obj.writable === 'object')\n}\nfunction isWebStream(obj) {\n  return isReadableStream(obj) || isWritableStream(obj) || isTransformStream(obj)\n}\nfunction isIterable(obj, isAsync) {\n  if (obj == null) return false\n  if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function'\n  if (isAsync === false) return typeof obj[SymbolIterator] === 'function'\n  return typeof obj[SymbolAsyncIterator] === 'function' || typeof obj[SymbolIterator] === 'function'\n}\nfunction isDestroyed(stream) {\n  if (!isNodeStream(stream)) return null\n  const wState = stream._writableState\n  const rState = stream._readableState\n  const state = wState || rState\n  return !!(stream.destroyed || stream[kIsDestroyed] || (state !== null && state !== undefined && state.destroyed))\n}\n\n// Have been end():d.\nfunction isWritableEnded(stream) {\n  if (!isWritableNodeStream(stream)) return null\n  if (stream.writableEnded === true) return true\n  const wState = stream._writableState\n  if (wState !== null && wState !== undefined && wState.errored) return false\n  if (typeof (wState === null || wState === undefined ? undefined : wState.ended) !== 'boolean') return null\n  return wState.ended\n}\n\n// Have emitted 'finish'.\nfunction isWritableFinished(stream, strict) {\n  if (!isWritableNodeStream(stream)) return null\n  if (stream.writableFinished === true) return true\n  const wState = stream._writableState\n  if (wState !== null && wState !== undefined && wState.errored) return false\n  if (typeof (wState === null || wState === undefined ? undefined : wState.finished) !== 'boolean') return null\n  return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0))\n}\n\n// Have been push(null):d.\nfunction isReadableEnded(stream) {\n  if (!isReadableNodeStream(stream)) return null\n  if (stream.readableEnded === true) return true\n  const rState = stream._readableState\n  if (!rState || rState.errored) return false\n  if (typeof (rState === null || rState === undefined ? undefined : rState.ended) !== 'boolean') return null\n  return rState.ended\n}\n\n// Have emitted 'end'.\nfunction isReadableFinished(stream, strict) {\n  if (!isReadableNodeStream(stream)) return null\n  const rState = stream._readableState\n  if (rState !== null && rState !== undefined && rState.errored) return false\n  if (typeof (rState === null || rState === undefined ? undefined : rState.endEmitted) !== 'boolean') return null\n  return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0))\n}\nfunction isReadable(stream) {\n  if (stream && stream[kIsReadable] != null) return stream[kIsReadable]\n  if (typeof (stream === null || stream === undefined ? undefined : stream.readable) !== 'boolean') return null\n  if (isDestroyed(stream)) return false\n  return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream)\n}\nfunction isWritable(stream) {\n  if (stream && stream[kIsWritable] != null) return stream[kIsWritable]\n  if (typeof (stream === null || stream === undefined ? undefined : stream.writable) !== 'boolean') return null\n  if (isDestroyed(stream)) return false\n  return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream)\n}\nfunction isFinished(stream, opts) {\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (isDestroyed(stream)) {\n    return true\n  }\n  if ((opts === null || opts === undefined ? undefined : opts.readable) !== false && isReadable(stream)) {\n    return false\n  }\n  if ((opts === null || opts === undefined ? undefined : opts.writable) !== false && isWritable(stream)) {\n    return false\n  }\n  return true\n}\nfunction isWritableErrored(stream) {\n  var _stream$_writableStat, _stream$_writableStat2\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (stream.writableErrored) {\n    return stream.writableErrored\n  }\n  return (_stream$_writableStat =\n    (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === undefined\n      ? undefined\n      : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== undefined\n    ? _stream$_writableStat\n    : null\n}\nfunction isReadableErrored(stream) {\n  var _stream$_readableStat, _stream$_readableStat2\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (stream.readableErrored) {\n    return stream.readableErrored\n  }\n  return (_stream$_readableStat =\n    (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === undefined\n      ? undefined\n      : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== undefined\n    ? _stream$_readableStat\n    : null\n}\nfunction isClosed(stream) {\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (typeof stream.closed === 'boolean') {\n    return stream.closed\n  }\n  const wState = stream._writableState\n  const rState = stream._readableState\n  if (\n    typeof (wState === null || wState === undefined ? undefined : wState.closed) === 'boolean' ||\n    typeof (rState === null || rState === undefined ? undefined : rState.closed) === 'boolean'\n  ) {\n    return (\n      (wState === null || wState === undefined ? undefined : wState.closed) ||\n      (rState === null || rState === undefined ? undefined : rState.closed)\n    )\n  }\n  if (typeof stream._closed === 'boolean' && isOutgoingMessage(stream)) {\n    return stream._closed\n  }\n  return null\n}\nfunction isOutgoingMessage(stream) {\n  return (\n    typeof stream._closed === 'boolean' &&\n    typeof stream._defaultKeepAlive === 'boolean' &&\n    typeof stream._removedConnection === 'boolean' &&\n    typeof stream._removedContLen === 'boolean'\n  )\n}\nfunction isServerResponse(stream) {\n  return typeof stream._sent100 === 'boolean' && isOutgoingMessage(stream)\n}\nfunction isServerRequest(stream) {\n  var _stream$req\n  return (\n    typeof stream._consuming === 'boolean' &&\n    typeof stream._dumped === 'boolean' &&\n    ((_stream$req = stream.req) === null || _stream$req === undefined ? undefined : _stream$req.upgradeOrConnect) ===\n      undefined\n  )\n}\nfunction willEmitClose(stream) {\n  if (!isNodeStream(stream)) return null\n  const wState = stream._writableState\n  const rState = stream._readableState\n  const state = wState || rState\n  return (\n    (!state && isServerResponse(stream)) || !!(state && state.autoDestroy && state.emitClose && state.closed === false)\n  )\n}\nfunction isDisturbed(stream) {\n  var _stream$kIsDisturbed\n  return !!(\n    stream &&\n    ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== undefined\n      ? _stream$kIsDisturbed\n      : stream.readableDidRead || stream.readableAborted)\n  )\n}\nfunction isErrored(stream) {\n  var _ref,\n    _ref2,\n    _ref3,\n    _ref4,\n    _ref5,\n    _stream$kIsErrored,\n    _stream$_readableStat3,\n    _stream$_writableStat3,\n    _stream$_readableStat4,\n    _stream$_writableStat4\n  return !!(\n    stream &&\n    ((_ref =\n      (_ref2 =\n        (_ref3 =\n          (_ref4 =\n            (_ref5 =\n              (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== undefined\n                ? _stream$kIsErrored\n                : stream.readableErrored) !== null && _ref5 !== undefined\n              ? _ref5\n              : stream.writableErrored) !== null && _ref4 !== undefined\n            ? _ref4\n            : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === undefined\n            ? undefined\n            : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== undefined\n          ? _ref3\n          : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === undefined\n          ? undefined\n          : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== undefined\n        ? _ref2\n        : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === undefined\n        ? undefined\n        : _stream$_readableStat4.errored) !== null && _ref !== undefined\n      ? _ref\n      : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === undefined\n      ? undefined\n      : _stream$_writableStat4.errored)\n  )\n}\nmodule.exports = {\n  isDestroyed,\n  kIsDestroyed,\n  isDisturbed,\n  kIsDisturbed,\n  isErrored,\n  kIsErrored,\n  isReadable,\n  kIsReadable,\n  kIsClosedPromise,\n  kControllerErrorFunction,\n  kIsWritable,\n  isClosed,\n  isDuplexNodeStream,\n  isFinished,\n  isIterable,\n  isReadableNodeStream,\n  isReadableStream,\n  isReadableEnded,\n  isReadableFinished,\n  isReadableErrored,\n  isNodeStream,\n  isWebStream,\n  isWritable,\n  isWritableNodeStream,\n  isWritableStream,\n  isWritableEnded,\n  isWritableFinished,\n  isWritableErrored,\n  isServerRequest,\n  isServerResponse,\n  willEmitClose,\n  isTransformStream\n}\n", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst { AbortError, codes } = require('../../ours/errors')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes\nconst { kEmptyObject, once } = require('../../ours/util')\nconst { validateAbortSignal, validateFunction, validateObject, validateBoolean } = require('../validators')\nconst { Promise, PromisePrototypeThen, SymbolDispose } = require('../../ours/primordials')\nconst {\n  isClosed,\n  isReadable,\n  isReadableNodeStream,\n  isReadableStream,\n  isReadableFinished,\n  isReadableErrored,\n  isWritable,\n  isWritableNodeStream,\n  isWritableStream,\n  isWritableFinished,\n  isWritableErrored,\n  isNodeStream,\n  willEmitClose: _willEmitClose,\n  kIsClosedPromise\n} = require('./utils')\nlet addAbortListener\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function'\n}\nconst nop = () => {}\nfunction eos(stream, options, callback) {\n  var _options$readable, _options$writable\n  if (arguments.length === 2) {\n    callback = options\n    options = kEmptyObject\n  } else if (options == null) {\n    options = kEmptyObject\n  } else {\n    validateObject(options, 'options')\n  }\n  validateFunction(callback, 'callback')\n  validateAbortSignal(options.signal, 'options.signal')\n  callback = once(callback)\n  if (isReadableStream(stream) || isWritableStream(stream)) {\n    return eosWeb(stream, options, callback)\n  }\n  if (!isNodeStream(stream)) {\n    throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n  }\n  const readable =\n    (_options$readable = options.readable) !== null && _options$readable !== undefined\n      ? _options$readable\n      : isReadableNodeStream(stream)\n  const writable =\n    (_options$writable = options.writable) !== null && _options$writable !== undefined\n      ? _options$writable\n      : isWritableNodeStream(stream)\n  const wState = stream._writableState\n  const rState = stream._readableState\n  const onlegacyfinish = () => {\n    if (!stream.writable) {\n      onfinish()\n    }\n  }\n\n  // TODO (ronag): Improve soft detection to include core modules and\n  // common ecosystem modules that do properly emit 'close' but fail\n  // this generic check.\n  let willEmitClose =\n    _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable\n  let writableFinished = isWritableFinished(stream, false)\n  const onfinish = () => {\n    writableFinished = true\n    // Stream should not be destroyed here. If it is that\n    // means that user space is doing something differently and\n    // we cannot trust willEmitClose.\n    if (stream.destroyed) {\n      willEmitClose = false\n    }\n    if (willEmitClose && (!stream.readable || readable)) {\n      return\n    }\n    if (!readable || readableFinished) {\n      callback.call(stream)\n    }\n  }\n  let readableFinished = isReadableFinished(stream, false)\n  const onend = () => {\n    readableFinished = true\n    // Stream should not be destroyed here. If it is that\n    // means that user space is doing something differently and\n    // we cannot trust willEmitClose.\n    if (stream.destroyed) {\n      willEmitClose = false\n    }\n    if (willEmitClose && (!stream.writable || writable)) {\n      return\n    }\n    if (!writable || writableFinished) {\n      callback.call(stream)\n    }\n  }\n  const onerror = (err) => {\n    callback.call(stream, err)\n  }\n  let closed = isClosed(stream)\n  const onclose = () => {\n    closed = true\n    const errored = isWritableErrored(stream) || isReadableErrored(stream)\n    if (errored && typeof errored !== 'boolean') {\n      return callback.call(stream, errored)\n    }\n    if (readable && !readableFinished && isReadableNodeStream(stream, true)) {\n      if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n    }\n    if (writable && !writableFinished) {\n      if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n    }\n    callback.call(stream)\n  }\n  const onclosed = () => {\n    closed = true\n    const errored = isWritableErrored(stream) || isReadableErrored(stream)\n    if (errored && typeof errored !== 'boolean') {\n      return callback.call(stream, errored)\n    }\n    callback.call(stream)\n  }\n  const onrequest = () => {\n    stream.req.on('finish', onfinish)\n  }\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish)\n    if (!willEmitClose) {\n      stream.on('abort', onclose)\n    }\n    if (stream.req) {\n      onrequest()\n    } else {\n      stream.on('request', onrequest)\n    }\n  } else if (writable && !wState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish)\n    stream.on('close', onlegacyfinish)\n  }\n\n  // Not all streams will emit 'close' after 'aborted'.\n  if (!willEmitClose && typeof stream.aborted === 'boolean') {\n    stream.on('aborted', onclose)\n  }\n  stream.on('end', onend)\n  stream.on('finish', onfinish)\n  if (options.error !== false) {\n    stream.on('error', onerror)\n  }\n  stream.on('close', onclose)\n  if (closed) {\n    process.nextTick(onclose)\n  } else if (\n    (wState !== null && wState !== undefined && wState.errorEmitted) ||\n    (rState !== null && rState !== undefined && rState.errorEmitted)\n  ) {\n    if (!willEmitClose) {\n      process.nextTick(onclosed)\n    }\n  } else if (\n    !readable &&\n    (!willEmitClose || isReadable(stream)) &&\n    (writableFinished || isWritable(stream) === false)\n  ) {\n    process.nextTick(onclosed)\n  } else if (\n    !writable &&\n    (!willEmitClose || isWritable(stream)) &&\n    (readableFinished || isReadable(stream) === false)\n  ) {\n    process.nextTick(onclosed)\n  } else if (rState && stream.req && stream.aborted) {\n    process.nextTick(onclosed)\n  }\n  const cleanup = () => {\n    callback = nop\n    stream.removeListener('aborted', onclose)\n    stream.removeListener('complete', onfinish)\n    stream.removeListener('abort', onclose)\n    stream.removeListener('request', onrequest)\n    if (stream.req) stream.req.removeListener('finish', onfinish)\n    stream.removeListener('end', onlegacyfinish)\n    stream.removeListener('close', onlegacyfinish)\n    stream.removeListener('finish', onfinish)\n    stream.removeListener('end', onend)\n    stream.removeListener('error', onerror)\n    stream.removeListener('close', onclose)\n  }\n  if (options.signal && !closed) {\n    const abort = () => {\n      // Keep it because cleanup removes it.\n      const endCallback = callback\n      cleanup()\n      endCallback.call(\n        stream,\n        new AbortError(undefined, {\n          cause: options.signal.reason\n        })\n      )\n    }\n    if (options.signal.aborted) {\n      process.nextTick(abort)\n    } else {\n      addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n      const disposable = addAbortListener(options.signal, abort)\n      const originalCallback = callback\n      callback = once((...args) => {\n        disposable[SymbolDispose]()\n        originalCallback.apply(stream, args)\n      })\n    }\n  }\n  return cleanup\n}\nfunction eosWeb(stream, options, callback) {\n  let isAborted = false\n  let abort = nop\n  if (options.signal) {\n    abort = () => {\n      isAborted = true\n      callback.call(\n        stream,\n        new AbortError(undefined, {\n          cause: options.signal.reason\n        })\n      )\n    }\n    if (options.signal.aborted) {\n      process.nextTick(abort)\n    } else {\n      addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n      const disposable = addAbortListener(options.signal, abort)\n      const originalCallback = callback\n      callback = once((...args) => {\n        disposable[SymbolDispose]()\n        originalCallback.apply(stream, args)\n      })\n    }\n  }\n  const resolverFn = (...args) => {\n    if (!isAborted) {\n      process.nextTick(() => callback.apply(stream, args))\n    }\n  }\n  PromisePrototypeThen(stream[kIsClosedPromise].promise, resolverFn, resolverFn)\n  return nop\n}\nfunction finished(stream, opts) {\n  var _opts\n  let autoCleanup = false\n  if (opts === null) {\n    opts = kEmptyObject\n  }\n  if ((_opts = opts) !== null && _opts !== undefined && _opts.cleanup) {\n    validateBoolean(opts.cleanup, 'cleanup')\n    autoCleanup = opts.cleanup\n  }\n  return new Promise((resolve, reject) => {\n    const cleanup = eos(stream, opts, (err) => {\n      if (autoCleanup) {\n        cleanup()\n      }\n      if (err) {\n        reject(err)\n      } else {\n        resolve()\n      }\n    })\n  })\n}\nmodule.exports = eos\nmodule.exports.finished = finished\n", "'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n  aggregateTwoErrors,\n  codes: { ERR_MULTIPLE_CALLBACK },\n  AbortError\n} = require('../../ours/errors')\nconst { Symbol } = require('../../ours/primordials')\nconst { kIsDestroyed, isDestroyed, isFinished, isServerRequest } = require('./utils')\nconst kDestroy = Symbol('kDestroy')\nconst kConstruct = Symbol('kConstruct')\nfunction checkError(err, w, r) {\n  if (err) {\n    // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n    err.stack // eslint-disable-line no-unused-expressions\n\n    if (w && !w.errored) {\n      w.errored = err\n    }\n    if (r && !r.errored) {\n      r.errored = err\n    }\n  }\n}\n\n// Backwards compat. cb() is undocumented and unused in core but\n// unfortunately might be used by modules.\nfunction destroy(err, cb) {\n  const r = this._readableState\n  const w = this._writableState\n  // With duplex streams we use the writable side for state.\n  const s = w || r\n  if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n    if (typeof cb === 'function') {\n      cb()\n    }\n    return this\n  }\n\n  // We set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n  checkError(err, w, r)\n  if (w) {\n    w.destroyed = true\n  }\n  if (r) {\n    r.destroyed = true\n  }\n\n  // If still constructing then defer calling _destroy.\n  if (!s.constructed) {\n    this.once(kDestroy, function (er) {\n      _destroy(this, aggregateTwoErrors(er, err), cb)\n    })\n  } else {\n    _destroy(this, err, cb)\n  }\n  return this\n}\nfunction _destroy(self, err, cb) {\n  let called = false\n  function onDestroy(err) {\n    if (called) {\n      return\n    }\n    called = true\n    const r = self._readableState\n    const w = self._writableState\n    checkError(err, w, r)\n    if (w) {\n      w.closed = true\n    }\n    if (r) {\n      r.closed = true\n    }\n    if (typeof cb === 'function') {\n      cb(err)\n    }\n    if (err) {\n      process.nextTick(emitErrorCloseNT, self, err)\n    } else {\n      process.nextTick(emitCloseNT, self)\n    }\n  }\n  try {\n    self._destroy(err || null, onDestroy)\n  } catch (err) {\n    onDestroy(err)\n  }\n}\nfunction emitErrorCloseNT(self, err) {\n  emitErrorNT(self, err)\n  emitCloseNT(self)\n}\nfunction emitCloseNT(self) {\n  const r = self._readableState\n  const w = self._writableState\n  if (w) {\n    w.closeEmitted = true\n  }\n  if (r) {\n    r.closeEmitted = true\n  }\n  if ((w !== null && w !== undefined && w.emitClose) || (r !== null && r !== undefined && r.emitClose)) {\n    self.emit('close')\n  }\n}\nfunction emitErrorNT(self, err) {\n  const r = self._readableState\n  const w = self._writableState\n  if ((w !== null && w !== undefined && w.errorEmitted) || (r !== null && r !== undefined && r.errorEmitted)) {\n    return\n  }\n  if (w) {\n    w.errorEmitted = true\n  }\n  if (r) {\n    r.errorEmitted = true\n  }\n  self.emit('error', err)\n}\nfunction undestroy() {\n  const r = this._readableState\n  const w = this._writableState\n  if (r) {\n    r.constructed = true\n    r.closed = false\n    r.closeEmitted = false\n    r.destroyed = false\n    r.errored = null\n    r.errorEmitted = false\n    r.reading = false\n    r.ended = r.readable === false\n    r.endEmitted = r.readable === false\n  }\n  if (w) {\n    w.constructed = true\n    w.destroyed = false\n    w.closed = false\n    w.closeEmitted = false\n    w.errored = null\n    w.errorEmitted = false\n    w.finalCalled = false\n    w.prefinished = false\n    w.ended = w.writable === false\n    w.ending = w.writable === false\n    w.finished = w.writable === false\n  }\n}\nfunction errorOrDestroy(stream, err, sync) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  const r = stream._readableState\n  const w = stream._writableState\n  if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n    return this\n  }\n  if ((r !== null && r !== undefined && r.autoDestroy) || (w !== null && w !== undefined && w.autoDestroy))\n    stream.destroy(err)\n  else if (err) {\n    // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n    err.stack // eslint-disable-line no-unused-expressions\n\n    if (w && !w.errored) {\n      w.errored = err\n    }\n    if (r && !r.errored) {\n      r.errored = err\n    }\n    if (sync) {\n      process.nextTick(emitErrorNT, stream, err)\n    } else {\n      emitErrorNT(stream, err)\n    }\n  }\n}\nfunction construct(stream, cb) {\n  if (typeof stream._construct !== 'function') {\n    return\n  }\n  const r = stream._readableState\n  const w = stream._writableState\n  if (r) {\n    r.constructed = false\n  }\n  if (w) {\n    w.constructed = false\n  }\n  stream.once(kConstruct, cb)\n  if (stream.listenerCount(kConstruct) > 1) {\n    // Duplex\n    return\n  }\n  process.nextTick(constructNT, stream)\n}\nfunction constructNT(stream) {\n  let called = false\n  function onConstruct(err) {\n    if (called) {\n      errorOrDestroy(stream, err !== null && err !== undefined ? err : new ERR_MULTIPLE_CALLBACK())\n      return\n    }\n    called = true\n    const r = stream._readableState\n    const w = stream._writableState\n    const s = w || r\n    if (r) {\n      r.constructed = true\n    }\n    if (w) {\n      w.constructed = true\n    }\n    if (s.destroyed) {\n      stream.emit(kDestroy, err)\n    } else if (err) {\n      errorOrDestroy(stream, err, true)\n    } else {\n      process.nextTick(emitConstructNT, stream)\n    }\n  }\n  try {\n    stream._construct((err) => {\n      process.nextTick(onConstruct, err)\n    })\n  } catch (err) {\n    process.nextTick(onConstruct, err)\n  }\n}\nfunction emitConstructNT(stream) {\n  stream.emit(kConstruct)\n}\nfunction isRequest(stream) {\n  return (stream === null || stream === undefined ? undefined : stream.setHeader) && typeof stream.abort === 'function'\n}\nfunction emitCloseLegacy(stream) {\n  stream.emit('close')\n}\nfunction emitErrorCloseLegacy(stream, err) {\n  stream.emit('error', err)\n  process.nextTick(emitCloseLegacy, stream)\n}\n\n// Normalize destroy for legacy.\nfunction destroyer(stream, err) {\n  if (!stream || isDestroyed(stream)) {\n    return\n  }\n  if (!err && !isFinished(stream)) {\n    err = new AbortError()\n  }\n\n  // TODO: Remove isRequest branches.\n  if (isServerRequest(stream)) {\n    stream.socket = null\n    stream.destroy(err)\n  } else if (isRequest(stream)) {\n    stream.abort()\n  } else if (isRequest(stream.req)) {\n    stream.req.abort()\n  } else if (typeof stream.destroy === 'function') {\n    stream.destroy(err)\n  } else if (typeof stream.close === 'function') {\n    // TODO: Don't lose err?\n    stream.close()\n  } else if (err) {\n    process.nextTick(emitErrorCloseLegacy, stream, err)\n  } else {\n    process.nextTick(emitCloseLegacy, stream)\n  }\n  if (!stream.destroyed) {\n    stream[kIsDestroyed] = true\n  }\n}\nmodule.exports = {\n  construct,\n  destroyer,\n  destroy,\n  undestroy,\n  errorOrDestroy\n}\n", "'use strict'\n\nconst { ArrayIsArray, ObjectSetPrototypeOf } = require('../../ours/primordials')\nconst { EventEmitter: EE } = require('events')\nfunction Stream(opts) {\n  EE.call(this, opts)\n}\nObjectSetPrototypeOf(Stream.prototype, EE.prototype)\nObjectSetPrototypeOf(Stream, EE)\nStream.prototype.pipe = function (dest, options) {\n  const source = this\n  function ondata(chunk) {\n    if (dest.writable && dest.write(chunk) === false && source.pause) {\n      source.pause()\n    }\n  }\n  source.on('data', ondata)\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume()\n    }\n  }\n  dest.on('drain', ondrain)\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend)\n    source.on('close', onclose)\n  }\n  let didOnEnd = false\n  function onend() {\n    if (didOnEnd) return\n    didOnEnd = true\n    dest.end()\n  }\n  function onclose() {\n    if (didOnEnd) return\n    didOnEnd = true\n    if (typeof dest.destroy === 'function') dest.destroy()\n  }\n\n  // Don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup()\n    if (EE.listenerCount(this, 'error') === 0) {\n      this.emit('error', er)\n    }\n  }\n  prependListener(source, 'error', onerror)\n  prependListener(dest, 'error', onerror)\n\n  // Remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata)\n    dest.removeListener('drain', ondrain)\n    source.removeListener('end', onend)\n    source.removeListener('close', onclose)\n    source.removeListener('error', onerror)\n    dest.removeListener('error', onerror)\n    source.removeListener('end', cleanup)\n    source.removeListener('close', cleanup)\n    dest.removeListener('close', cleanup)\n  }\n  source.on('end', cleanup)\n  source.on('close', cleanup)\n  dest.on('close', cleanup)\n  dest.emit('pipe', source)\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest\n}\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn)\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn)\n  else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn)\n  else emitter._events[event] = [fn, emitter._events[event]]\n}\nmodule.exports = {\n  Stream,\n  prependListener\n}\n", "'use strict'\n\nconst { SymbolDispose } = require('../../ours/primordials')\nconst { AbortError, codes } = require('../../ours/errors')\nconst { isNodeStream, isWebStream, kControllerErrorFunction } = require('./utils')\nconst eos = require('./end-of-stream')\nconst { ERR_INVALID_ARG_TYPE } = codes\nlet addAbortListener\n\n// This method is inlined here for readable-stream\n// It also does not allow for signal to not exist on the stream\n// https://github.com/nodejs/node/pull/36061#discussion_r533718029\nconst validateAbortSignal = (signal, name) => {\n  if (typeof signal !== 'object' || !('aborted' in signal)) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n  }\n}\nmodule.exports.addAbortSignal = function addAbortSignal(signal, stream) {\n  validateAbortSignal(signal, 'signal')\n  if (!isNodeStream(stream) && !isWebStream(stream)) {\n    throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n  }\n  return module.exports.addAbortSignalNoValidate(signal, stream)\n}\nmodule.exports.addAbortSignalNoValidate = function (signal, stream) {\n  if (typeof signal !== 'object' || !('aborted' in signal)) {\n    return stream\n  }\n  const onAbort = isNodeStream(stream)\n    ? () => {\n        stream.destroy(\n          new AbortError(undefined, {\n            cause: signal.reason\n          })\n        )\n      }\n    : () => {\n        stream[kControllerErrorFunction](\n          new AbortError(undefined, {\n            cause: signal.reason\n          })\n        )\n      }\n  if (signal.aborted) {\n    onAbort()\n  } else {\n    addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n    const disposable = addAbortListener(signal, onAbort)\n    eos(stream, disposable[SymbolDispose])\n  }\n  return stream\n}\n", "'use strict'\n\nconst { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { inspect } = require('../../ours/util')\nmodule.exports = class BufferList {\n  constructor() {\n    this.head = null\n    this.tail = null\n    this.length = 0\n  }\n  push(v) {\n    const entry = {\n      data: v,\n      next: null\n    }\n    if (this.length > 0) this.tail.next = entry\n    else this.head = entry\n    this.tail = entry\n    ++this.length\n  }\n  unshift(v) {\n    const entry = {\n      data: v,\n      next: this.head\n    }\n    if (this.length === 0) this.tail = entry\n    this.head = entry\n    ++this.length\n  }\n  shift() {\n    if (this.length === 0) return\n    const ret = this.head.data\n    if (this.length === 1) this.head = this.tail = null\n    else this.head = this.head.next\n    --this.length\n    return ret\n  }\n  clear() {\n    this.head = this.tail = null\n    this.length = 0\n  }\n  join(s) {\n    if (this.length === 0) return ''\n    let p = this.head\n    let ret = '' + p.data\n    while ((p = p.next) !== null) ret += s + p.data\n    return ret\n  }\n  concat(n) {\n    if (this.length === 0) return Buffer.alloc(0)\n    const ret = Buffer.allocUnsafe(n >>> 0)\n    let p = this.head\n    let i = 0\n    while (p) {\n      TypedArrayPrototypeSet(ret, p.data, i)\n      i += p.data.length\n      p = p.next\n    }\n    return ret\n  }\n\n  // Consumes a specified amount of bytes or characters from the buffered data.\n  consume(n, hasStrings) {\n    const data = this.head.data\n    if (n < data.length) {\n      // `slice` is the same for buffers and strings.\n      const slice = data.slice(0, n)\n      this.head.data = data.slice(n)\n      return slice\n    }\n    if (n === data.length) {\n      // First chunk is a perfect match.\n      return this.shift()\n    }\n    // Result spans more than one buffer.\n    return hasStrings ? this._getString(n) : this._getBuffer(n)\n  }\n  first() {\n    return this.head.data\n  }\n  *[SymbolIterator]() {\n    for (let p = this.head; p; p = p.next) {\n      yield p.data\n    }\n  }\n\n  // Consumes a specified amount of characters from the buffered data.\n  _getString(n) {\n    let ret = ''\n    let p = this.head\n    let c = 0\n    do {\n      const str = p.data\n      if (n > str.length) {\n        ret += str\n        n -= str.length\n      } else {\n        if (n === str.length) {\n          ret += str\n          ++c\n          if (p.next) this.head = p.next\n          else this.head = this.tail = null\n        } else {\n          ret += StringPrototypeSlice(str, 0, n)\n          this.head = p\n          p.data = StringPrototypeSlice(str, n)\n        }\n        break\n      }\n      ++c\n    } while ((p = p.next) !== null)\n    this.length -= c\n    return ret\n  }\n\n  // Consumes a specified amount of bytes from the buffered data.\n  _getBuffer(n) {\n    const ret = Buffer.allocUnsafe(n)\n    const retLen = n\n    let p = this.head\n    let c = 0\n    do {\n      const buf = p.data\n      if (n > buf.length) {\n        TypedArrayPrototypeSet(ret, buf, retLen - n)\n        n -= buf.length\n      } else {\n        if (n === buf.length) {\n          TypedArrayPrototypeSet(ret, buf, retLen - n)\n          ++c\n          if (p.next) this.head = p.next\n          else this.head = this.tail = null\n        } else {\n          TypedArrayPrototypeSet(ret, new Uint8Array(buf.buffer, buf.byteOffset, n), retLen - n)\n          this.head = p\n          p.data = buf.slice(n)\n        }\n        break\n      }\n      ++c\n    } while ((p = p.next) !== null)\n    this.length -= c\n    return ret\n  }\n\n  // Make sure the linked list only shows the minimal necessary information.\n  [Symbol.for('nodejs.util.inspect.custom')](_, options) {\n    return inspect(this, {\n      ...options,\n      // Only inspect one level.\n      depth: 0,\n      // It should not recurse.\n      customInspect: false\n    })\n  }\n}\n", "'use strict'\n\nconst { MathFloor, NumberIsInteger } = require('../../ours/primordials')\nconst { validateInteger } = require('../validators')\nconst { ERR_INVALID_ARG_VALUE } = require('../../ours/errors').codes\nlet defaultHighWaterMarkBytes = 16 * 1024\nlet defaultHighWaterMarkObjectMode = 16\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null\n}\nfunction getDefaultHighWaterMark(objectMode) {\n  return objectMode ? defaultHighWaterMarkObjectMode : defaultHighWaterMarkBytes\n}\nfunction setDefaultHighWaterMark(objectMode, value) {\n  validateInteger(value, 'value', 0)\n  if (objectMode) {\n    defaultHighWaterMarkObjectMode = value\n  } else {\n    defaultHighWaterMarkBytes = value\n  }\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  const hwm = highWaterMarkFrom(options, isDuplex, duplexKey)\n  if (hwm != null) {\n    if (!NumberIsInteger(hwm) || hwm < 0) {\n      const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark'\n      throw new ERR_INVALID_ARG_VALUE(name, hwm)\n    }\n    return MathFloor(hwm)\n  }\n\n  // Default value\n  return getDefaultHighWaterMark(state.objectMode)\n}\nmodule.exports = {\n  getHighWaterMark,\n  getDefaultHighWaterMark,\n  setDefaultHighWaterMark\n}\n", "'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = require('../../ours/errors').codes\nfunction from(Readable, iterable, opts) {\n  let iterator\n  if (typeof iterable === 'string' || iterable instanceof Buffer) {\n    return new Readable({\n      objectMode: true,\n      ...opts,\n      read() {\n        this.push(iterable)\n        this.push(null)\n      }\n    })\n  }\n  let isAsync\n  if (iterable && iterable[SymbolAsyncIterator]) {\n    isAsync = true\n    iterator = iterable[SymbolAsyncIterator]()\n  } else if (iterable && iterable[SymbolIterator]) {\n    isAsync = false\n    iterator = iterable[SymbolIterator]()\n  } else {\n    throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable)\n  }\n  const readable = new Readable({\n    objectMode: true,\n    highWaterMark: 1,\n    // TODO(ronag): What options should be allowed?\n    ...opts\n  })\n\n  // Flag to protect against _read\n  // being called before last iteration completion.\n  let reading = false\n  readable._read = function () {\n    if (!reading) {\n      reading = true\n      next()\n    }\n  }\n  readable._destroy = function (error, cb) {\n    PromisePrototypeThen(\n      close(error),\n      () => process.nextTick(cb, error),\n      // nextTick is here in case cb throws\n      (e) => process.nextTick(cb, e || error)\n    )\n  }\n  async function close(error) {\n    const hadError = error !== undefined && error !== null\n    const hasThrow = typeof iterator.throw === 'function'\n    if (hadError && hasThrow) {\n      const { value, done } = await iterator.throw(error)\n      await value\n      if (done) {\n        return\n      }\n    }\n    if (typeof iterator.return === 'function') {\n      const { value } = await iterator.return()\n      await value\n    }\n  }\n  async function next() {\n    for (;;) {\n      try {\n        const { value, done } = isAsync ? await iterator.next() : iterator.next()\n        if (done) {\n          readable.push(null)\n        } else {\n          const res = value && typeof value.then === 'function' ? await value : value\n          if (res === null) {\n            reading = false\n            throw new ERR_STREAM_NULL_VALUES()\n          } else if (readable.push(res)) {\n            continue\n          } else {\n            reading = false\n          }\n        }\n      } catch (err) {\n        readable.destroy(err)\n      }\n      break\n    }\n  }\n  return readable\n}\nmodule.exports = from\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\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n  ArrayPrototypeIndexOf,\n  NumberIsInteger,\n  NumberIsNaN,\n  NumberParseInt,\n  ObjectDefineProperties,\n  ObjectKeys,\n  ObjectSetPrototypeOf,\n  Promise,\n  SafeSet,\n  SymbolAsyncDispose,\n  SymbolAsyncIterator,\n  Symbol\n} = require('../../ours/primordials')\nmodule.exports = Readable\nReadable.ReadableState = ReadableState\nconst { EventEmitter: EE } = require('events')\nconst { Stream, prependListener } = require('./legacy')\nconst { Buffer } = require('buffer')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst eos = require('./end-of-stream')\nlet debug = require('../../ours/util').debuglog('stream', (fn) => {\n  debug = fn\n})\nconst BufferList = require('./buffer_list')\nconst destroyImpl = require('./destroy')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n  aggregateTwoErrors,\n  codes: {\n    ERR_INVALID_ARG_TYPE,\n    ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_OUT_OF_RANGE,\n    ERR_STREAM_PUSH_AFTER_EOF,\n    ERR_STREAM_UNSHIFT_AFTER_END_EVENT\n  },\n  AbortError\n} = require('../../ours/errors')\nconst { validateObject } = require('../validators')\nconst kPaused = Symbol('kPaused')\nconst { StringDecoder } = require('string_decoder/')\nconst from = require('./from')\nObjectSetPrototypeOf(Readable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Readable, Stream)\nconst nop = () => {}\nconst { errorOrDestroy } = destroyImpl\nconst kObjectMode = 1 << 0\nconst kEnded = 1 << 1\nconst kEndEmitted = 1 << 2\nconst kReading = 1 << 3\nconst kConstructed = 1 << 4\nconst kSync = 1 << 5\nconst kNeedReadable = 1 << 6\nconst kEmittedReadable = 1 << 7\nconst kReadableListening = 1 << 8\nconst kResumeScheduled = 1 << 9\nconst kErrorEmitted = 1 << 10\nconst kEmitClose = 1 << 11\nconst kAutoDestroy = 1 << 12\nconst kDestroyed = 1 << 13\nconst kClosed = 1 << 14\nconst kCloseEmitted = 1 << 15\nconst kMultiAwaitDrain = 1 << 16\nconst kReadingMore = 1 << 17\nconst kDataEmitted = 1 << 18\n\n// TODO(benjamingr) it is likely slower to do it this way than with free functions\nfunction makeBitMapDescriptor(bit) {\n  return {\n    enumerable: false,\n    get() {\n      return (this.state & bit) !== 0\n    },\n    set(value) {\n      if (value) this.state |= bit\n      else this.state &= ~bit\n    }\n  }\n}\nObjectDefineProperties(ReadableState.prototype, {\n  objectMode: makeBitMapDescriptor(kObjectMode),\n  ended: makeBitMapDescriptor(kEnded),\n  endEmitted: makeBitMapDescriptor(kEndEmitted),\n  reading: makeBitMapDescriptor(kReading),\n  // Stream is still being constructed and cannot be\n  // destroyed until construction finished or failed.\n  // Async construction is opt in, therefore we start as\n  // constructed.\n  constructed: makeBitMapDescriptor(kConstructed),\n  // A flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  sync: makeBitMapDescriptor(kSync),\n  // Whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  needReadable: makeBitMapDescriptor(kNeedReadable),\n  emittedReadable: makeBitMapDescriptor(kEmittedReadable),\n  readableListening: makeBitMapDescriptor(kReadableListening),\n  resumeScheduled: makeBitMapDescriptor(kResumeScheduled),\n  // True if the error was already emitted and should not be thrown again.\n  errorEmitted: makeBitMapDescriptor(kErrorEmitted),\n  emitClose: makeBitMapDescriptor(kEmitClose),\n  autoDestroy: makeBitMapDescriptor(kAutoDestroy),\n  // Has it been destroyed.\n  destroyed: makeBitMapDescriptor(kDestroyed),\n  // Indicates whether the stream has finished destroying.\n  closed: makeBitMapDescriptor(kClosed),\n  // True if close has been emitted or would have been emitted\n  // depending on emitClose.\n  closeEmitted: makeBitMapDescriptor(kCloseEmitted),\n  multiAwaitDrain: makeBitMapDescriptor(kMultiAwaitDrain),\n  // If true, a maybeReadMore has been scheduled.\n  readingMore: makeBitMapDescriptor(kReadingMore),\n  dataEmitted: makeBitMapDescriptor(kDataEmitted)\n})\nfunction ReadableState(options, stream, isDuplex) {\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n  // Bit map field to store ReadableState more effciently with 1 bit per field\n  // instead of a V8 slot per field.\n  this.state = kEmitClose | kAutoDestroy | kConstructed | kSync\n  // Object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away.\n  if (options && options.objectMode) this.state |= kObjectMode\n  if (isDuplex && options && options.readableObjectMode) this.state |= kObjectMode\n\n  // The point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = options\n    ? getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex)\n    : getDefaultHighWaterMark(false)\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift().\n  this.buffer = new BufferList()\n  this.length = 0\n  this.pipes = []\n  this.flowing = null\n  this[kPaused] = null\n\n  // Should close be emitted on destroy. Defaults to true.\n  if (options && options.emitClose === false) this.state &= ~kEmitClose\n\n  // Should .destroy() be called after 'end' (and potentially 'finish').\n  if (options && options.autoDestroy === false) this.state &= ~kAutoDestroy\n\n  // Indicates whether the stream has errored. When true no further\n  // _read calls, 'data' or 'readable' events should occur. This is needed\n  // since when autoDestroy is disabled we need a way to tell whether the\n  // stream has failed.\n  this.errored = null\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n  // Ref the piped dest which we need a drain event on it\n  // type: null | Writable | Set<Writable>.\n  this.awaitDrainWriters = null\n  this.decoder = null\n  this.encoding = null\n  if (options && options.encoding) {\n    this.decoder = new StringDecoder(options.encoding)\n    this.encoding = options.encoding\n  }\n}\nfunction Readable(options) {\n  if (!(this instanceof Readable)) return new Readable(options)\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5.\n  const isDuplex = this instanceof require('./duplex')\n  this._readableState = new ReadableState(options, this, isDuplex)\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read\n    if (typeof options.destroy === 'function') this._destroy = options.destroy\n    if (typeof options.construct === 'function') this._construct = options.construct\n    if (options.signal && !isDuplex) addAbortSignal(options.signal, this)\n  }\n  Stream.call(this, options)\n  destroyImpl.construct(this, () => {\n    if (this._readableState.needReadable) {\n      maybeReadMore(this, this._readableState)\n    }\n  })\n}\nReadable.prototype.destroy = destroyImpl.destroy\nReadable.prototype._undestroy = destroyImpl.undestroy\nReadable.prototype._destroy = function (err, cb) {\n  cb(err)\n}\nReadable.prototype[EE.captureRejectionSymbol] = function (err) {\n  this.destroy(err)\n}\nReadable.prototype[SymbolAsyncDispose] = function () {\n  let error\n  if (!this.destroyed) {\n    error = this.readableEnded ? null : new AbortError()\n    this.destroy(error)\n  }\n  return new Promise((resolve, reject) => eos(this, (err) => (err && err !== error ? reject(err) : resolve(null))))\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  return readableAddChunk(this, chunk, encoding, false)\n}\n\n// Unshift should *always* be something directly out of read().\nReadable.prototype.unshift = function (chunk, encoding) {\n  return readableAddChunk(this, chunk, encoding, true)\n}\nfunction readableAddChunk(stream, chunk, encoding, addToFront) {\n  debug('readableAddChunk', chunk)\n  const state = stream._readableState\n  let err\n  if ((state.state & kObjectMode) === 0) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding\n      if (state.encoding !== encoding) {\n        if (addToFront && state.encoding) {\n          // When unshifting, if state.encoding is set, we have to save\n          // the string in the BufferList with the state encoding.\n          chunk = Buffer.from(chunk, encoding).toString(state.encoding)\n        } else {\n          chunk = Buffer.from(chunk, encoding)\n          encoding = ''\n        }\n      }\n    } else if (chunk instanceof Buffer) {\n      encoding = ''\n    } else if (Stream._isUint8Array(chunk)) {\n      chunk = Stream._uint8ArrayToBuffer(chunk)\n      encoding = ''\n    } else if (chunk != null) {\n      err = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n    }\n  }\n  if (err) {\n    errorOrDestroy(stream, err)\n  } else if (chunk === null) {\n    state.state &= ~kReading\n    onEofChunk(stream, state)\n  } else if ((state.state & kObjectMode) !== 0 || (chunk && chunk.length > 0)) {\n    if (addToFront) {\n      if ((state.state & kEndEmitted) !== 0) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT())\n      else if (state.destroyed || state.errored) return false\n      else addChunk(stream, state, chunk, true)\n    } else if (state.ended) {\n      errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF())\n    } else if (state.destroyed || state.errored) {\n      return false\n    } else {\n      state.state &= ~kReading\n      if (state.decoder && !encoding) {\n        chunk = state.decoder.write(chunk)\n        if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false)\n        else maybeReadMore(stream, state)\n      } else {\n        addChunk(stream, state, chunk, false)\n      }\n    }\n  } else if (!addToFront) {\n    state.state &= ~kReading\n    maybeReadMore(stream, state)\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0)\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount('data') > 0) {\n    // Use the guard to avoid creating `Set()` repeatedly\n    // when we have multiple pipes.\n    if ((state.state & kMultiAwaitDrain) !== 0) {\n      state.awaitDrainWriters.clear()\n    } else {\n      state.awaitDrainWriters = null\n    }\n    state.dataEmitted = true\n    stream.emit('data', chunk)\n  } else {\n    // Update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length\n    if (addToFront) state.buffer.unshift(chunk)\n    else state.buffer.push(chunk)\n    if ((state.state & kNeedReadable) !== 0) emitReadable(stream)\n  }\n  maybeReadMore(stream, state)\n}\nReadable.prototype.isPaused = function () {\n  const state = this._readableState\n  return state[kPaused] === true || state.flowing === false\n}\n\n// Backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  const decoder = new StringDecoder(enc)\n  this._readableState.decoder = decoder\n  // If setEncoding(null), decoder.encoding equals utf8.\n  this._readableState.encoding = this._readableState.decoder.encoding\n  const buffer = this._readableState.buffer\n  // Iterate over current buffer to convert already stored Buffers:\n  let content = ''\n  for (const data of buffer) {\n    content += decoder.write(data)\n  }\n  buffer.clear()\n  if (content !== '') buffer.push(content)\n  this._readableState.length = content.length\n  return this\n}\n\n// Don't raise the hwm > 1GB.\nconst MAX_HWM = 0x40000000\nfunction computeNewHighWaterMark(n) {\n  if (n > MAX_HWM) {\n    throw new ERR_OUT_OF_RANGE('size', '<= 1GiB', n)\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts.\n    n--\n    n |= n >>> 1\n    n |= n >>> 2\n    n |= n >>> 4\n    n |= n >>> 8\n    n |= n >>> 16\n    n++\n  }\n  return n\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || (state.length === 0 && state.ended)) return 0\n  if ((state.state & kObjectMode) !== 0) return 1\n  if (NumberIsNaN(n)) {\n    // Only flow one buffer at a time.\n    if (state.flowing && state.length) return state.buffer.first().length\n    return state.length\n  }\n  if (n <= state.length) return n\n  return state.ended ? state.length : 0\n}\n\n// You can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n)\n  // Same as parseInt(undefined, 10), however V8 7.3 performance regressed\n  // in this scenario, so we are doing it manually.\n  if (n === undefined) {\n    n = NaN\n  } else if (!NumberIsInteger(n)) {\n    n = NumberParseInt(n, 10)\n  }\n  const state = this._readableState\n  const nOrig = n\n\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n)\n  if (n !== 0) state.state &= ~kEmittedReadable\n\n  // If we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (\n    n === 0 &&\n    state.needReadable &&\n    ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)\n  ) {\n    debug('read: emitReadable', state.length, state.ended)\n    if (state.length === 0 && state.ended) endReadable(this)\n    else emitReadable(this)\n    return null\n  }\n  n = howMuchToRead(n, state)\n\n  // If we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this)\n    return null\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  let doRead = (state.state & kNeedReadable) !== 0\n  debug('need readable', doRead)\n\n  // If we currently have less than the highWaterMark, then also read some.\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true\n    debug('length less than watermark', doRead)\n  }\n\n  // However, if we've ended, then there's no point, if we're already\n  // reading, then it's unnecessary, if we're constructing we have to wait,\n  // and if we're destroyed or errored, then it's not allowed,\n  if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) {\n    doRead = false\n    debug('reading, ended or constructing', doRead)\n  } else if (doRead) {\n    debug('do read')\n    state.state |= kReading | kSync\n    // If the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.state |= kNeedReadable\n\n    // Call internal read method\n    try {\n      this._read(state.highWaterMark)\n    } catch (err) {\n      errorOrDestroy(this, err)\n    }\n    state.state &= ~kSync\n\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state)\n  }\n  let ret\n  if (n > 0) ret = fromList(n, state)\n  else ret = null\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark\n    n = 0\n  } else {\n    state.length -= n\n    if (state.multiAwaitDrain) {\n      state.awaitDrainWriters.clear()\n    } else {\n      state.awaitDrainWriters = null\n    }\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this)\n  }\n  if (ret !== null && !state.errorEmitted && !state.closeEmitted) {\n    state.dataEmitted = true\n    this.emit('data', ret)\n  }\n  return ret\n}\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk')\n  if (state.ended) return\n  if (state.decoder) {\n    const chunk = state.decoder.end()\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk)\n      state.length += state.objectMode ? 1 : chunk.length\n    }\n  }\n  state.ended = true\n  if (state.sync) {\n    // If we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call.\n    emitReadable(stream)\n  } else {\n    // Emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false\n    state.emittedReadable = true\n    // We have to emit readable now that we are EOF. Modules\n    // in the ecosystem (e.g. dicer) rely on this event being sync.\n    emitReadable_(stream)\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  const state = stream._readableState\n  debug('emitReadable', state.needReadable, state.emittedReadable)\n  state.needReadable = false\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing)\n    state.emittedReadable = true\n    process.nextTick(emitReadable_, stream)\n  }\n}\nfunction emitReadable_(stream) {\n  const state = stream._readableState\n  debug('emitReadable_', state.destroyed, state.length, state.ended)\n  if (!state.destroyed && !state.errored && (state.length || state.ended)) {\n    stream.emit('readable')\n    state.emittedReadable = false\n  }\n\n  // The stream needs another readable event if:\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark\n  flow(stream)\n}\n\n// At this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore && state.constructed) {\n    state.readingMore = true\n    process.nextTick(maybeReadMore_, stream, state)\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (\n    !state.reading &&\n    !state.ended &&\n    (state.length < state.highWaterMark || (state.flowing && state.length === 0))\n  ) {\n    const len = state.length\n    debug('maybeReadMore read 0')\n    stream.read(0)\n    if (len === state.length)\n      // Didn't get any data, stop spinning.\n      break\n  }\n  state.readingMore = false\n}\n\n// Abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  throw new ERR_METHOD_NOT_IMPLEMENTED('_read()')\n}\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  const src = this\n  const state = this._readableState\n  if (state.pipes.length === 1) {\n    if (!state.multiAwaitDrain) {\n      state.multiAwaitDrain = true\n      state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : [])\n    }\n  }\n  state.pipes.push(dest)\n  debug('pipe count=%d opts=%j', state.pipes.length, pipeOpts)\n  const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr\n  const endFn = doEnd ? onend : unpipe\n  if (state.endEmitted) process.nextTick(endFn)\n  else src.once('end', endFn)\n  dest.on('unpipe', onunpipe)\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe')\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true\n        cleanup()\n      }\n    }\n  }\n  function onend() {\n    debug('onend')\n    dest.end()\n  }\n  let ondrain\n  let cleanedUp = false\n  function cleanup() {\n    debug('cleanup')\n    // Cleanup event handlers once the pipe is broken.\n    dest.removeListener('close', onclose)\n    dest.removeListener('finish', onfinish)\n    if (ondrain) {\n      dest.removeListener('drain', ondrain)\n    }\n    dest.removeListener('error', onerror)\n    dest.removeListener('unpipe', onunpipe)\n    src.removeListener('end', onend)\n    src.removeListener('end', unpipe)\n    src.removeListener('data', ondata)\n    cleanedUp = true\n\n    // If the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain()\n  }\n  function pause() {\n    // If the user unpiped during `dest.write()`, it is possible\n    // to get stuck in a permanently paused state if that write\n    // also returned false.\n    // => Check whether `dest` is still a piping destination.\n    if (!cleanedUp) {\n      if (state.pipes.length === 1 && state.pipes[0] === dest) {\n        debug('false write response, pause', 0)\n        state.awaitDrainWriters = dest\n        state.multiAwaitDrain = false\n      } else if (state.pipes.length > 1 && state.pipes.includes(dest)) {\n        debug('false write response, pause', state.awaitDrainWriters.size)\n        state.awaitDrainWriters.add(dest)\n      }\n      src.pause()\n    }\n    if (!ondrain) {\n      // When the dest drains, it reduces the awaitDrain counter\n      // on the source.  This would be more elegant with a .once()\n      // handler in flow(), but adding and removing repeatedly is\n      // too slow.\n      ondrain = pipeOnDrain(src, dest)\n      dest.on('drain', ondrain)\n    }\n  }\n  src.on('data', ondata)\n  function ondata(chunk) {\n    debug('ondata')\n    const ret = dest.write(chunk)\n    debug('dest.write', ret)\n    if (ret === false) {\n      pause()\n    }\n  }\n\n  // If the dest has an error, then stop piping into it.\n  // However, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er)\n    unpipe()\n    dest.removeListener('error', onerror)\n    if (dest.listenerCount('error') === 0) {\n      const s = dest._writableState || dest._readableState\n      if (s && !s.errorEmitted) {\n        // User incorrectly emitted 'error' directly on the stream.\n        errorOrDestroy(dest, er)\n      } else {\n        dest.emit('error', er)\n      }\n    }\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror)\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish)\n    unpipe()\n  }\n  dest.once('close', onclose)\n  function onfinish() {\n    debug('onfinish')\n    dest.removeListener('close', onclose)\n    unpipe()\n  }\n  dest.once('finish', onfinish)\n  function unpipe() {\n    debug('unpipe')\n    src.unpipe(dest)\n  }\n\n  // Tell the dest that it's being piped to.\n  dest.emit('pipe', src)\n\n  // Start the flow if it hasn't been started already.\n\n  if (dest.writableNeedDrain === true) {\n    pause()\n  } else if (!state.flowing) {\n    debug('pipe resume')\n    src.resume()\n  }\n  return dest\n}\nfunction pipeOnDrain(src, dest) {\n  return function pipeOnDrainFunctionResult() {\n    const state = src._readableState\n\n    // `ondrain` will call directly,\n    // `this` maybe not a reference to dest,\n    // so we use the real dest here.\n    if (state.awaitDrainWriters === dest) {\n      debug('pipeOnDrain', 1)\n      state.awaitDrainWriters = null\n    } else if (state.multiAwaitDrain) {\n      debug('pipeOnDrain', state.awaitDrainWriters.size)\n      state.awaitDrainWriters.delete(dest)\n    }\n    if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount('data')) {\n      src.resume()\n    }\n  }\n}\nReadable.prototype.unpipe = function (dest) {\n  const state = this._readableState\n  const unpipeInfo = {\n    hasUnpiped: false\n  }\n\n  // If we're not piping anywhere, then do nothing.\n  if (state.pipes.length === 0) return this\n  if (!dest) {\n    // remove all.\n    const dests = state.pipes\n    state.pipes = []\n    this.pause()\n    for (let i = 0; i < dests.length; i++)\n      dests[i].emit('unpipe', this, {\n        hasUnpiped: false\n      })\n    return this\n  }\n\n  // Try to find the right one.\n  const index = ArrayPrototypeIndexOf(state.pipes, dest)\n  if (index === -1) return this\n  state.pipes.splice(index, 1)\n  if (state.pipes.length === 0) this.pause()\n  dest.emit('unpipe', this, unpipeInfo)\n  return this\n}\n\n// Set up data events if they are asked for\n// Ensure readable listeners eventually get something.\nReadable.prototype.on = function (ev, fn) {\n  const res = Stream.prototype.on.call(this, ev, fn)\n  const state = this._readableState\n  if (ev === 'data') {\n    // Update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0\n\n    // Try start flowing on next tick if stream isn't explicitly paused.\n    if (state.flowing !== false) this.resume()\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true\n      state.flowing = false\n      state.emittedReadable = false\n      debug('on readable', state.length, state.reading)\n      if (state.length) {\n        emitReadable(this)\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this)\n      }\n    }\n  }\n  return res\n}\nReadable.prototype.addListener = Readable.prototype.on\nReadable.prototype.removeListener = function (ev, fn) {\n  const res = Stream.prototype.removeListener.call(this, ev, fn)\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this)\n  }\n  return res\n}\nReadable.prototype.off = Readable.prototype.removeListener\nReadable.prototype.removeAllListeners = function (ev) {\n  const res = Stream.prototype.removeAllListeners.apply(this, arguments)\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this)\n  }\n  return res\n}\nfunction updateReadableListening(self) {\n  const state = self._readableState\n  state.readableListening = self.listenerCount('readable') > 0\n  if (state.resumeScheduled && state[kPaused] === false) {\n    // Flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true\n\n    // Crude way to check if we should resume.\n  } else if (self.listenerCount('data') > 0) {\n    self.resume()\n  } else if (!state.readableListening) {\n    state.flowing = null\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0')\n  self.read(0)\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  const state = this._readableState\n  if (!state.flowing) {\n    debug('resume')\n    // We flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume().\n    state.flowing = !state.readableListening\n    resume(this, state)\n  }\n  state[kPaused] = false\n  return this\n}\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true\n    process.nextTick(resume_, stream, state)\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading)\n  if (!state.reading) {\n    stream.read(0)\n  }\n  state.resumeScheduled = false\n  stream.emit('resume')\n  flow(stream)\n  if (state.flowing && !state.reading) stream.read(0)\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing)\n  if (this._readableState.flowing !== false) {\n    debug('pause')\n    this._readableState.flowing = false\n    this.emit('pause')\n  }\n  this._readableState[kPaused] = true\n  return this\n}\nfunction flow(stream) {\n  const state = stream._readableState\n  debug('flow', state.flowing)\n  while (state.flowing && stream.read() !== null);\n}\n\n// Wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  let paused = false\n\n  // TODO (ronag): Should this.destroy(err) emit\n  // 'error' on the wrapped stream? Would require\n  // a static factory method, e.g. Readable.wrap(stream).\n\n  stream.on('data', (chunk) => {\n    if (!this.push(chunk) && stream.pause) {\n      paused = true\n      stream.pause()\n    }\n  })\n  stream.on('end', () => {\n    this.push(null)\n  })\n  stream.on('error', (err) => {\n    errorOrDestroy(this, err)\n  })\n  stream.on('close', () => {\n    this.destroy()\n  })\n  stream.on('destroy', () => {\n    this.destroy()\n  })\n  this._read = () => {\n    if (paused && stream.resume) {\n      paused = false\n      stream.resume()\n    }\n  }\n\n  // Proxy all the other methods. Important when wrapping filters and duplexes.\n  const streamKeys = ObjectKeys(stream)\n  for (let j = 1; j < streamKeys.length; j++) {\n    const i = streamKeys[j]\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = stream[i].bind(stream)\n    }\n  }\n  return this\n}\nReadable.prototype[SymbolAsyncIterator] = function () {\n  return streamToAsyncIterator(this)\n}\nReadable.prototype.iterator = function (options) {\n  if (options !== undefined) {\n    validateObject(options, 'options')\n  }\n  return streamToAsyncIterator(this, options)\n}\nfunction streamToAsyncIterator(stream, options) {\n  if (typeof stream.read !== 'function') {\n    stream = Readable.wrap(stream, {\n      objectMode: true\n    })\n  }\n  const iter = createAsyncIterator(stream, options)\n  iter.stream = stream\n  return iter\n}\nasync function* createAsyncIterator(stream, options) {\n  let callback = nop\n  function next(resolve) {\n    if (this === stream) {\n      callback()\n      callback = nop\n    } else {\n      callback = resolve\n    }\n  }\n  stream.on('readable', next)\n  let error\n  const cleanup = eos(\n    stream,\n    {\n      writable: false\n    },\n    (err) => {\n      error = err ? aggregateTwoErrors(error, err) : null\n      callback()\n      callback = nop\n    }\n  )\n  try {\n    while (true) {\n      const chunk = stream.destroyed ? null : stream.read()\n      if (chunk !== null) {\n        yield chunk\n      } else if (error) {\n        throw error\n      } else if (error === null) {\n        return\n      } else {\n        await new Promise(next)\n      }\n    }\n  } catch (err) {\n    error = aggregateTwoErrors(error, err)\n    throw error\n  } finally {\n    if (\n      (error || (options === null || options === undefined ? undefined : options.destroyOnReturn) !== false) &&\n      (error === undefined || stream._readableState.autoDestroy)\n    ) {\n      destroyImpl.destroyer(stream, null)\n    } else {\n      stream.off('readable', next)\n      cleanup()\n    }\n  }\n}\n\n// Making it explicit these properties are not enumerable\n// because otherwise some prototype manipulation in\n// userland will fail.\nObjectDefineProperties(Readable.prototype, {\n  readable: {\n    __proto__: null,\n    get() {\n      const r = this._readableState\n      // r.readable === false means that this is part of a Duplex stream\n      // where the readable side was disabled upon construction.\n      // Compat. The user might manually disable readable side through\n      // deprecated setter.\n      return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted\n    },\n    set(val) {\n      // Backwards compat.\n      if (this._readableState) {\n        this._readableState.readable = !!val\n      }\n    }\n  },\n  readableDidRead: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState.dataEmitted\n    }\n  },\n  readableAborted: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return !!(\n        this._readableState.readable !== false &&\n        (this._readableState.destroyed || this._readableState.errored) &&\n        !this._readableState.endEmitted\n      )\n    }\n  },\n  readableHighWaterMark: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState.highWaterMark\n    }\n  },\n  readableBuffer: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState && this._readableState.buffer\n    }\n  },\n  readableFlowing: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState.flowing\n    },\n    set: function (state) {\n      if (this._readableState) {\n        this._readableState.flowing = state\n      }\n    }\n  },\n  readableLength: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState.length\n    }\n  },\n  readableObjectMode: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.objectMode : false\n    }\n  },\n  readableEncoding: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.encoding : null\n    }\n  },\n  errored: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.errored : null\n    }\n  },\n  closed: {\n    __proto__: null,\n    get() {\n      return this._readableState ? this._readableState.closed : false\n    }\n  },\n  destroyed: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.destroyed : false\n    },\n    set(value) {\n      // We ignore the value if the stream\n      // has not been initialized yet.\n      if (!this._readableState) {\n        return\n      }\n\n      // Backward compatibility, the user is explicitly\n      // managing destroyed.\n      this._readableState.destroyed = value\n    }\n  },\n  readableEnded: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.endEmitted : false\n    }\n  }\n})\nObjectDefineProperties(ReadableState.prototype, {\n  // Legacy getter for `pipesCount`.\n  pipesCount: {\n    __proto__: null,\n    get() {\n      return this.pipes.length\n    }\n  },\n  // Legacy property for `paused`.\n  paused: {\n    __proto__: null,\n    get() {\n      return this[kPaused] !== false\n    },\n    set(value) {\n      this[kPaused] = !!value\n    }\n  }\n})\n\n// Exposed for testing purposes only.\nReadable._fromList = fromList\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered.\n  if (state.length === 0) return null\n  let ret\n  if (state.objectMode) ret = state.buffer.shift()\n  else if (!n || n >= state.length) {\n    // Read it all, truncate the list.\n    if (state.decoder) ret = state.buffer.join('')\n    else if (state.buffer.length === 1) ret = state.buffer.first()\n    else ret = state.buffer.concat(state.length)\n    state.buffer.clear()\n  } else {\n    // read part of list.\n    ret = state.buffer.consume(n, state.decoder)\n  }\n  return ret\n}\nfunction endReadable(stream) {\n  const state = stream._readableState\n  debug('endReadable', state.endEmitted)\n  if (!state.endEmitted) {\n    state.ended = true\n    process.nextTick(endReadableNT, state, stream)\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length)\n\n  // Check that we didn't get one last unshift.\n  if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) {\n    state.endEmitted = true\n    stream.emit('end')\n    if (stream.writable && stream.allowHalfOpen === false) {\n      process.nextTick(endWritableNT, stream)\n    } else if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well.\n      const wState = stream._writableState\n      const autoDestroy =\n        !wState ||\n        (wState.autoDestroy &&\n          // We don't expect the writable to ever 'finish'\n          // if writable is explicitly set to false.\n          (wState.finished || wState.writable === false))\n      if (autoDestroy) {\n        stream.destroy()\n      }\n    }\n  }\n}\nfunction endWritableNT(stream) {\n  const writable = stream.writable && !stream.writableEnded && !stream.destroyed\n  if (writable) {\n    stream.end()\n  }\n}\nReadable.from = function (iterable, opts) {\n  return from(Readable, iterable, opts)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n  if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n  return webStreamsAdapters\n}\nReadable.fromWeb = function (readableStream, options) {\n  return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options)\n}\nReadable.toWeb = function (streamReadable, options) {\n  return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options)\n}\nReadable.wrap = function (src, options) {\n  var _ref, _src$readableObjectMo\n  return new Readable({\n    objectMode:\n      (_ref =\n        (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== undefined\n          ? _src$readableObjectMo\n          : src.objectMode) !== null && _ref !== undefined\n        ? _ref\n        : true,\n    ...options,\n    destroy(err, callback) {\n      destroyImpl.destroyer(src, err)\n      callback(err)\n    }\n  }).wrap(src)\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// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n  ArrayPrototypeSlice,\n  Error,\n  FunctionPrototypeSymbolHasInstance,\n  ObjectDefineProperty,\n  ObjectDefineProperties,\n  ObjectSetPrototypeOf,\n  StringPrototypeToLowerCase,\n  Symbol,\n  SymbolHasInstance\n} = require('../../ours/primordials')\nmodule.exports = Writable\nWritable.WritableState = WritableState\nconst { EventEmitter: EE } = require('events')\nconst Stream = require('./legacy').Stream\nconst { Buffer } = require('buffer')\nconst destroyImpl = require('./destroy')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n  ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED,\n  ERR_STREAM_ALREADY_FINISHED,\n  ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING\n} = require('../../ours/errors').codes\nconst { errorOrDestroy } = destroyImpl\nObjectSetPrototypeOf(Writable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Writable, Stream)\nfunction nop() {}\nconst kOnFinished = Symbol('kOnFinished')\nfunction WritableState(options, stream, isDuplex) {\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n  // Object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!(options && options.objectMode)\n  if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode)\n\n  // The point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write().\n  this.highWaterMark = options\n    ? getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex)\n    : getDefaultHighWaterMark(false)\n\n  // if _final has been called.\n  this.finalCalled = false\n\n  // drain event flag.\n  this.needDrain = false\n  // At the start of calling end()\n  this.ending = false\n  // When end() has been called, and returned.\n  this.ended = false\n  // When 'finish' is emitted.\n  this.finished = false\n\n  // Has it been destroyed\n  this.destroyed = false\n\n  // Should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  const noDecode = !!(options && options.decodeStrings === false)\n  this.decodeStrings = !noDecode\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n  // Not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0\n\n  // A flag to see when we're in the middle of a write.\n  this.writing = false\n\n  // When true all writes will be buffered until .uncork() call.\n  this.corked = 0\n\n  // A flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true\n\n  // A flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false\n\n  // The callback that's passed to _write(chunk, cb).\n  this.onwrite = onwrite.bind(undefined, stream)\n\n  // The callback that the user supplies to write(chunk, encoding, cb).\n  this.writecb = null\n\n  // The amount that is being written when _write is called.\n  this.writelen = 0\n\n  // Storage for data passed to the afterWrite() callback in case of\n  // synchronous _write() completion.\n  this.afterWriteTickInfo = null\n  resetBuffer(this)\n\n  // Number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted.\n  this.pendingcb = 0\n\n  // Stream is still being constructed and cannot be\n  // destroyed until construction finished or failed.\n  // Async construction is opt in, therefore we start as\n  // constructed.\n  this.constructed = true\n\n  // Emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams.\n  this.prefinished = false\n\n  // True if the error was already emitted and should not be thrown again.\n  this.errorEmitted = false\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = !options || options.emitClose !== false\n\n  // Should .destroy() be called after 'finish' (and potentially 'end').\n  this.autoDestroy = !options || options.autoDestroy !== false\n\n  // Indicates whether the stream has errored. When true all write() calls\n  // should return false. This is needed since when autoDestroy\n  // is disabled we need a way to tell whether the stream has failed.\n  this.errored = null\n\n  // Indicates whether the stream has finished destroying.\n  this.closed = false\n\n  // True if close has been emitted or would have been emitted\n  // depending on emitClose.\n  this.closeEmitted = false\n  this[kOnFinished] = []\n}\nfunction resetBuffer(state) {\n  state.buffered = []\n  state.bufferedIndex = 0\n  state.allBuffers = true\n  state.allNoop = true\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  return ArrayPrototypeSlice(this.buffered, this.bufferedIndex)\n}\nObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', {\n  __proto__: null,\n  get() {\n    return this.buffered.length - this.bufferedIndex\n  }\n})\nfunction Writable(options) {\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5.\n  const isDuplex = this instanceof require('./duplex')\n  if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options)\n  this._writableState = new WritableState(options, this, isDuplex)\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write\n    if (typeof options.writev === 'function') this._writev = options.writev\n    if (typeof options.destroy === 'function') this._destroy = options.destroy\n    if (typeof options.final === 'function') this._final = options.final\n    if (typeof options.construct === 'function') this._construct = options.construct\n    if (options.signal) addAbortSignal(options.signal, this)\n  }\n  Stream.call(this, options)\n  destroyImpl.construct(this, () => {\n    const state = this._writableState\n    if (!state.writing) {\n      clearBuffer(this, state)\n    }\n    finishMaybe(this, state)\n  })\n}\nObjectDefineProperty(Writable, SymbolHasInstance, {\n  __proto__: null,\n  value: function (object) {\n    if (FunctionPrototypeSymbolHasInstance(this, object)) return true\n    if (this !== Writable) return false\n    return object && object._writableState instanceof WritableState\n  }\n})\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE())\n}\nfunction _write(stream, chunk, encoding, cb) {\n  const state = stream._writableState\n  if (typeof encoding === 'function') {\n    cb = encoding\n    encoding = state.defaultEncoding\n  } else {\n    if (!encoding) encoding = state.defaultEncoding\n    else if (encoding !== 'buffer' && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n    if (typeof cb !== 'function') cb = nop\n  }\n  if (chunk === null) {\n    throw new ERR_STREAM_NULL_VALUES()\n  } else if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      if (state.decodeStrings !== false) {\n        chunk = Buffer.from(chunk, encoding)\n        encoding = 'buffer'\n      }\n    } else if (chunk instanceof Buffer) {\n      encoding = 'buffer'\n    } else if (Stream._isUint8Array(chunk)) {\n      chunk = Stream._uint8ArrayToBuffer(chunk)\n      encoding = 'buffer'\n    } else {\n      throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n    }\n  }\n  let err\n  if (state.ending) {\n    err = new ERR_STREAM_WRITE_AFTER_END()\n  } else if (state.destroyed) {\n    err = new ERR_STREAM_DESTROYED('write')\n  }\n  if (err) {\n    process.nextTick(cb, err)\n    errorOrDestroy(stream, err, true)\n    return err\n  }\n  state.pendingcb++\n  return writeOrBuffer(stream, state, chunk, encoding, cb)\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  return _write(this, chunk, encoding, cb) === true\n}\nWritable.prototype.cork = function () {\n  this._writableState.corked++\n}\nWritable.prototype.uncork = function () {\n  const state = this._writableState\n  if (state.corked) {\n    state.corked--\n    if (!state.writing) clearBuffer(this, state)\n  }\n}\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = StringPrototypeToLowerCase(encoding)\n  if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n  this._writableState.defaultEncoding = encoding\n  return this\n}\n\n// If we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, callback) {\n  const len = state.objectMode ? 1 : chunk.length\n  state.length += len\n\n  // stream._write resets state.length\n  const ret = state.length < state.highWaterMark\n  // We must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true\n  if (state.writing || state.corked || state.errored || !state.constructed) {\n    state.buffered.push({\n      chunk,\n      encoding,\n      callback\n    })\n    if (state.allBuffers && encoding !== 'buffer') {\n      state.allBuffers = false\n    }\n    if (state.allNoop && callback !== nop) {\n      state.allNoop = false\n    }\n  } else {\n    state.writelen = len\n    state.writecb = callback\n    state.writing = true\n    state.sync = true\n    stream._write(chunk, encoding, state.onwrite)\n    state.sync = false\n  }\n\n  // Return false if errored or destroyed in order to break\n  // any synchronous while(stream.write(data)) loops.\n  return ret && !state.errored && !state.destroyed\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len\n  state.writecb = cb\n  state.writing = true\n  state.sync = true\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'))\n  else if (writev) stream._writev(chunk, state.onwrite)\n  else stream._write(chunk, encoding, state.onwrite)\n  state.sync = false\n}\nfunction onwriteError(stream, state, er, cb) {\n  --state.pendingcb\n  cb(er)\n  // Ensure callbacks are invoked even when autoDestroy is\n  // not enabled. Passing `er` here doesn't make sense since\n  // it's related to one specific write, not to the buffered\n  // writes.\n  errorBuffer(state)\n  // This can emit error, but error must always follow cb.\n  errorOrDestroy(stream, er)\n}\nfunction onwrite(stream, er) {\n  const state = stream._writableState\n  const sync = state.sync\n  const cb = state.writecb\n  if (typeof cb !== 'function') {\n    errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK())\n    return\n  }\n  state.writing = false\n  state.writecb = null\n  state.length -= state.writelen\n  state.writelen = 0\n  if (er) {\n    // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n    er.stack // eslint-disable-line no-unused-expressions\n\n    if (!state.errored) {\n      state.errored = er\n    }\n\n    // In case of duplex streams we need to notify the readable side of the\n    // error.\n    if (stream._readableState && !stream._readableState.errored) {\n      stream._readableState.errored = er\n    }\n    if (sync) {\n      process.nextTick(onwriteError, stream, state, er, cb)\n    } else {\n      onwriteError(stream, state, er, cb)\n    }\n  } else {\n    if (state.buffered.length > state.bufferedIndex) {\n      clearBuffer(stream, state)\n    }\n    if (sync) {\n      // It is a common case that the callback passed to .write() is always\n      // the same. In that case, we do not schedule a new nextTick(), but\n      // rather just increase a counter, to improve performance and avoid\n      // memory allocations.\n      if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) {\n        state.afterWriteTickInfo.count++\n      } else {\n        state.afterWriteTickInfo = {\n          count: 1,\n          cb,\n          stream,\n          state\n        }\n        process.nextTick(afterWriteTick, state.afterWriteTickInfo)\n      }\n    } else {\n      afterWrite(stream, state, 1, cb)\n    }\n  }\n}\nfunction afterWriteTick({ stream, state, count, cb }) {\n  state.afterWriteTickInfo = null\n  return afterWrite(stream, state, count, cb)\n}\nfunction afterWrite(stream, state, count, cb) {\n  const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain\n  if (needDrain) {\n    state.needDrain = false\n    stream.emit('drain')\n  }\n  while (count-- > 0) {\n    state.pendingcb--\n    cb()\n  }\n  if (state.destroyed) {\n    errorBuffer(state)\n  }\n  finishMaybe(stream, state)\n}\n\n// If there's something in the buffer waiting, then invoke callbacks.\nfunction errorBuffer(state) {\n  if (state.writing) {\n    return\n  }\n  for (let n = state.bufferedIndex; n < state.buffered.length; ++n) {\n    var _state$errored\n    const { chunk, callback } = state.buffered[n]\n    const len = state.objectMode ? 1 : chunk.length\n    state.length -= len\n    callback(\n      (_state$errored = state.errored) !== null && _state$errored !== undefined\n        ? _state$errored\n        : new ERR_STREAM_DESTROYED('write')\n    )\n  }\n  const onfinishCallbacks = state[kOnFinished].splice(0)\n  for (let i = 0; i < onfinishCallbacks.length; i++) {\n    var _state$errored2\n    onfinishCallbacks[i](\n      (_state$errored2 = state.errored) !== null && _state$errored2 !== undefined\n        ? _state$errored2\n        : new ERR_STREAM_DESTROYED('end')\n    )\n  }\n  resetBuffer(state)\n}\n\n// If there's something in the buffer waiting, then process it.\nfunction clearBuffer(stream, state) {\n  if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) {\n    return\n  }\n  const { buffered, bufferedIndex, objectMode } = state\n  const bufferedLength = buffered.length - bufferedIndex\n  if (!bufferedLength) {\n    return\n  }\n  let i = bufferedIndex\n  state.bufferProcessing = true\n  if (bufferedLength > 1 && stream._writev) {\n    state.pendingcb -= bufferedLength - 1\n    const callback = state.allNoop\n      ? nop\n      : (err) => {\n          for (let n = i; n < buffered.length; ++n) {\n            buffered[n].callback(err)\n          }\n        }\n    // Make a copy of `buffered` if it's going to be used by `callback` above,\n    // since `doWrite` will mutate the array.\n    const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i)\n    chunks.allBuffers = state.allBuffers\n    doWrite(stream, state, true, state.length, chunks, '', callback)\n    resetBuffer(state)\n  } else {\n    do {\n      const { chunk, encoding, callback } = buffered[i]\n      buffered[i++] = null\n      const len = objectMode ? 1 : chunk.length\n      doWrite(stream, state, false, len, chunk, encoding, callback)\n    } while (i < buffered.length && !state.writing)\n    if (i === buffered.length) {\n      resetBuffer(state)\n    } else if (i > 256) {\n      buffered.splice(0, i)\n      state.bufferedIndex = 0\n    } else {\n      state.bufferedIndex = i\n    }\n  }\n  state.bufferProcessing = false\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  if (this._writev) {\n    this._writev(\n      [\n        {\n          chunk,\n          encoding\n        }\n      ],\n      cb\n    )\n  } else {\n    throw new ERR_METHOD_NOT_IMPLEMENTED('_write()')\n  }\n}\nWritable.prototype._writev = null\nWritable.prototype.end = function (chunk, encoding, cb) {\n  const state = this._writableState\n  if (typeof chunk === 'function') {\n    cb = chunk\n    chunk = null\n    encoding = null\n  } else if (typeof encoding === 'function') {\n    cb = encoding\n    encoding = null\n  }\n  let err\n  if (chunk !== null && chunk !== undefined) {\n    const ret = _write(this, chunk, encoding)\n    if (ret instanceof Error) {\n      err = ret\n    }\n  }\n\n  // .end() fully uncorks.\n  if (state.corked) {\n    state.corked = 1\n    this.uncork()\n  }\n  if (err) {\n    // Do nothing...\n  } else if (!state.errored && !state.ending) {\n    // This is forgiving in terms of unnecessary calls to end() and can hide\n    // logic errors. However, usually such errors are harmless and causing a\n    // hard error can be disproportionately destructive. It is not always\n    // trivial for the user to determine whether end() needs to be called\n    // or not.\n\n    state.ending = true\n    finishMaybe(this, state, true)\n    state.ended = true\n  } else if (state.finished) {\n    err = new ERR_STREAM_ALREADY_FINISHED('end')\n  } else if (state.destroyed) {\n    err = new ERR_STREAM_DESTROYED('end')\n  }\n  if (typeof cb === 'function') {\n    if (err || state.finished) {\n      process.nextTick(cb, err)\n    } else {\n      state[kOnFinished].push(cb)\n    }\n  }\n  return this\n}\nfunction needFinish(state) {\n  return (\n    state.ending &&\n    !state.destroyed &&\n    state.constructed &&\n    state.length === 0 &&\n    !state.errored &&\n    state.buffered.length === 0 &&\n    !state.finished &&\n    !state.writing &&\n    !state.errorEmitted &&\n    !state.closeEmitted\n  )\n}\nfunction callFinal(stream, state) {\n  let called = false\n  function onFinish(err) {\n    if (called) {\n      errorOrDestroy(stream, err !== null && err !== undefined ? err : ERR_MULTIPLE_CALLBACK())\n      return\n    }\n    called = true\n    state.pendingcb--\n    if (err) {\n      const onfinishCallbacks = state[kOnFinished].splice(0)\n      for (let i = 0; i < onfinishCallbacks.length; i++) {\n        onfinishCallbacks[i](err)\n      }\n      errorOrDestroy(stream, err, state.sync)\n    } else if (needFinish(state)) {\n      state.prefinished = true\n      stream.emit('prefinish')\n      // Backwards compat. Don't check state.sync here.\n      // Some streams assume 'finish' will be emitted\n      // asynchronously relative to _final callback.\n      state.pendingcb++\n      process.nextTick(finish, stream, state)\n    }\n  }\n  state.sync = true\n  state.pendingcb++\n  try {\n    stream._final(onFinish)\n  } catch (err) {\n    onFinish(err)\n  }\n  state.sync = false\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.finalCalled = true\n      callFinal(stream, state)\n    } else {\n      state.prefinished = true\n      stream.emit('prefinish')\n    }\n  }\n}\nfunction finishMaybe(stream, state, sync) {\n  if (needFinish(state)) {\n    prefinish(stream, state)\n    if (state.pendingcb === 0) {\n      if (sync) {\n        state.pendingcb++\n        process.nextTick(\n          (stream, state) => {\n            if (needFinish(state)) {\n              finish(stream, state)\n            } else {\n              state.pendingcb--\n            }\n          },\n          stream,\n          state\n        )\n      } else if (needFinish(state)) {\n        state.pendingcb++\n        finish(stream, state)\n      }\n    }\n  }\n}\nfunction finish(stream, state) {\n  state.pendingcb--\n  state.finished = true\n  const onfinishCallbacks = state[kOnFinished].splice(0)\n  for (let i = 0; i < onfinishCallbacks.length; i++) {\n    onfinishCallbacks[i]()\n  }\n  stream.emit('finish')\n  if (state.autoDestroy) {\n    // In case of duplex streams we need a way to detect\n    // if the readable side is ready for autoDestroy as well.\n    const rState = stream._readableState\n    const autoDestroy =\n      !rState ||\n      (rState.autoDestroy &&\n        // We don't expect the readable to ever 'end'\n        // if readable is explicitly set to false.\n        (rState.endEmitted || rState.readable === false))\n    if (autoDestroy) {\n      stream.destroy()\n    }\n  }\n}\nObjectDefineProperties(Writable.prototype, {\n  closed: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.closed : false\n    }\n  },\n  destroyed: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.destroyed : false\n    },\n    set(value) {\n      // Backward compatibility, the user is explicitly managing destroyed.\n      if (this._writableState) {\n        this._writableState.destroyed = value\n      }\n    }\n  },\n  writable: {\n    __proto__: null,\n    get() {\n      const w = this._writableState\n      // w.writable === false means that this is part of a Duplex stream\n      // where the writable side was disabled upon construction.\n      // Compat. The user might manually disable writable side through\n      // deprecated setter.\n      return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended\n    },\n    set(val) {\n      // Backwards compatible.\n      if (this._writableState) {\n        this._writableState.writable = !!val\n      }\n    }\n  },\n  writableFinished: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.finished : false\n    }\n  },\n  writableObjectMode: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.objectMode : false\n    }\n  },\n  writableBuffer: {\n    __proto__: null,\n    get() {\n      return this._writableState && this._writableState.getBuffer()\n    }\n  },\n  writableEnded: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.ending : false\n    }\n  },\n  writableNeedDrain: {\n    __proto__: null,\n    get() {\n      const wState = this._writableState\n      if (!wState) return false\n      return !wState.destroyed && !wState.ending && wState.needDrain\n    }\n  },\n  writableHighWaterMark: {\n    __proto__: null,\n    get() {\n      return this._writableState && this._writableState.highWaterMark\n    }\n  },\n  writableCorked: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.corked : 0\n    }\n  },\n  writableLength: {\n    __proto__: null,\n    get() {\n      return this._writableState && this._writableState.length\n    }\n  },\n  errored: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._writableState ? this._writableState.errored : null\n    }\n  },\n  writableAborted: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return !!(\n        this._writableState.writable !== false &&\n        (this._writableState.destroyed || this._writableState.errored) &&\n        !this._writableState.finished\n      )\n    }\n  }\n})\nconst destroy = destroyImpl.destroy\nWritable.prototype.destroy = function (err, cb) {\n  const state = this._writableState\n\n  // Invoke pending callbacks.\n  if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) {\n    process.nextTick(errorBuffer, state)\n  }\n  destroy.call(this, err, cb)\n  return this\n}\nWritable.prototype._undestroy = destroyImpl.undestroy\nWritable.prototype._destroy = function (err, cb) {\n  cb(err)\n}\nWritable.prototype[EE.captureRejectionSymbol] = function (err) {\n  this.destroy(err)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n  if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n  return webStreamsAdapters\n}\nWritable.fromWeb = function (writableStream, options) {\n  return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options)\n}\nWritable.toWeb = function (streamWritable) {\n  return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable)\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\n;('use strict')\nconst bufferModule = require('buffer')\nconst {\n  isReadable,\n  isWritable,\n  isIterable,\n  isNodeStream,\n  isReadableNodeStream,\n  isWritableNodeStream,\n  isDuplexNodeStream,\n  isReadableStream,\n  isWritableStream\n} = require('./utils')\nconst eos = require('./end-of-stream')\nconst {\n  AbortError,\n  codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE }\n} = require('../../ours/errors')\nconst { destroyer } = require('./destroy')\nconst Duplex = require('./duplex')\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nconst { createDeferredPromise } = require('../../ours/util')\nconst from = require('./from')\nconst Blob = globalThis.Blob || bufferModule.Blob\nconst isBlob =\n  typeof Blob !== 'undefined'\n    ? function isBlob(b) {\n        return b instanceof Blob\n      }\n    : function isBlob(b) {\n        return false\n      }\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst { FunctionPrototypeCall } = require('../../ours/primordials')\n\n// This is needed for pre node 17.\nclass Duplexify extends Duplex {\n  constructor(options) {\n    super(options)\n\n    // https://github.com/nodejs/node/pull/34385\n\n    if ((options === null || options === undefined ? undefined : options.readable) === false) {\n      this._readableState.readable = false\n      this._readableState.ended = true\n      this._readableState.endEmitted = true\n    }\n    if ((options === null || options === undefined ? undefined : options.writable) === false) {\n      this._writableState.writable = false\n      this._writableState.ending = true\n      this._writableState.ended = true\n      this._writableState.finished = true\n    }\n  }\n}\nmodule.exports = function duplexify(body, name) {\n  if (isDuplexNodeStream(body)) {\n    return body\n  }\n  if (isReadableNodeStream(body)) {\n    return _duplexify({\n      readable: body\n    })\n  }\n  if (isWritableNodeStream(body)) {\n    return _duplexify({\n      writable: body\n    })\n  }\n  if (isNodeStream(body)) {\n    return _duplexify({\n      writable: false,\n      readable: false\n    })\n  }\n  if (isReadableStream(body)) {\n    return _duplexify({\n      readable: Readable.fromWeb(body)\n    })\n  }\n  if (isWritableStream(body)) {\n    return _duplexify({\n      writable: Writable.fromWeb(body)\n    })\n  }\n  if (typeof body === 'function') {\n    const { value, write, final, destroy } = fromAsyncGen(body)\n    if (isIterable(value)) {\n      return from(Duplexify, value, {\n        // TODO (ronag): highWaterMark?\n        objectMode: true,\n        write,\n        final,\n        destroy\n      })\n    }\n    const then = value === null || value === undefined ? undefined : value.then\n    if (typeof then === 'function') {\n      let d\n      const promise = FunctionPrototypeCall(\n        then,\n        value,\n        (val) => {\n          if (val != null) {\n            throw new ERR_INVALID_RETURN_VALUE('nully', 'body', val)\n          }\n        },\n        (err) => {\n          destroyer(d, err)\n        }\n      )\n      return (d = new Duplexify({\n        // TODO (ronag): highWaterMark?\n        objectMode: true,\n        readable: false,\n        write,\n        final(cb) {\n          final(async () => {\n            try {\n              await promise\n              process.nextTick(cb, null)\n            } catch (err) {\n              process.nextTick(cb, err)\n            }\n          })\n        },\n        destroy\n      }))\n    }\n    throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or AsyncFunction', name, value)\n  }\n  if (isBlob(body)) {\n    return duplexify(body.arrayBuffer())\n  }\n  if (isIterable(body)) {\n    return from(Duplexify, body, {\n      // TODO (ronag): highWaterMark?\n      objectMode: true,\n      writable: false\n    })\n  }\n  if (\n    isReadableStream(body === null || body === undefined ? undefined : body.readable) &&\n    isWritableStream(body === null || body === undefined ? undefined : body.writable)\n  ) {\n    return Duplexify.fromWeb(body)\n  }\n  if (\n    typeof (body === null || body === undefined ? undefined : body.writable) === 'object' ||\n    typeof (body === null || body === undefined ? undefined : body.readable) === 'object'\n  ) {\n    const readable =\n      body !== null && body !== undefined && body.readable\n        ? isReadableNodeStream(body === null || body === undefined ? undefined : body.readable)\n          ? body === null || body === undefined\n            ? undefined\n            : body.readable\n          : duplexify(body.readable)\n        : undefined\n    const writable =\n      body !== null && body !== undefined && body.writable\n        ? isWritableNodeStream(body === null || body === undefined ? undefined : body.writable)\n          ? body === null || body === undefined\n            ? undefined\n            : body.writable\n          : duplexify(body.writable)\n        : undefined\n    return _duplexify({\n      readable,\n      writable\n    })\n  }\n  const then = body === null || body === undefined ? undefined : body.then\n  if (typeof then === 'function') {\n    let d\n    FunctionPrototypeCall(\n      then,\n      body,\n      (val) => {\n        if (val != null) {\n          d.push(val)\n        }\n        d.push(null)\n      },\n      (err) => {\n        destroyer(d, err)\n      }\n    )\n    return (d = new Duplexify({\n      objectMode: true,\n      writable: false,\n      read() {}\n    }))\n  }\n  throw new ERR_INVALID_ARG_TYPE(\n    name,\n    [\n      'Blob',\n      'ReadableStream',\n      'WritableStream',\n      'Stream',\n      'Iterable',\n      'AsyncIterable',\n      'Function',\n      '{ readable, writable } pair',\n      'Promise'\n    ],\n    body\n  )\n}\nfunction fromAsyncGen(fn) {\n  let { promise, resolve } = createDeferredPromise()\n  const ac = new AbortController()\n  const signal = ac.signal\n  const value = fn(\n    (async function* () {\n      while (true) {\n        const _promise = promise\n        promise = null\n        const { chunk, done, cb } = await _promise\n        process.nextTick(cb)\n        if (done) return\n        if (signal.aborted)\n          throw new AbortError(undefined, {\n            cause: signal.reason\n          })\n        ;({ promise, resolve } = createDeferredPromise())\n        yield chunk\n      }\n    })(),\n    {\n      signal\n    }\n  )\n  return {\n    value,\n    write(chunk, encoding, cb) {\n      const _resolve = resolve\n      resolve = null\n      _resolve({\n        chunk,\n        done: false,\n        cb\n      })\n    },\n    final(cb) {\n      const _resolve = resolve\n      resolve = null\n      _resolve({\n        done: true,\n        cb\n      })\n    },\n    destroy(err, cb) {\n      ac.abort()\n      cb(err)\n    }\n  }\n}\nfunction _duplexify(pair) {\n  const r = pair.readable && typeof pair.readable.read !== 'function' ? Readable.wrap(pair.readable) : pair.readable\n  const w = pair.writable\n  let readable = !!isReadable(r)\n  let writable = !!isWritable(w)\n  let ondrain\n  let onfinish\n  let onreadable\n  let onclose\n  let d\n  function onfinished(err) {\n    const cb = onclose\n    onclose = null\n    if (cb) {\n      cb(err)\n    } else if (err) {\n      d.destroy(err)\n    }\n  }\n\n  // TODO(ronag): Avoid double buffering.\n  // Implement Writable/Readable/Duplex traits.\n  // See, https://github.com/nodejs/node/pull/33515.\n  d = new Duplexify({\n    // TODO (ronag): highWaterMark?\n    readableObjectMode: !!(r !== null && r !== undefined && r.readableObjectMode),\n    writableObjectMode: !!(w !== null && w !== undefined && w.writableObjectMode),\n    readable,\n    writable\n  })\n  if (writable) {\n    eos(w, (err) => {\n      writable = false\n      if (err) {\n        destroyer(r, err)\n      }\n      onfinished(err)\n    })\n    d._write = function (chunk, encoding, callback) {\n      if (w.write(chunk, encoding)) {\n        callback()\n      } else {\n        ondrain = callback\n      }\n    }\n    d._final = function (callback) {\n      w.end()\n      onfinish = callback\n    }\n    w.on('drain', function () {\n      if (ondrain) {\n        const cb = ondrain\n        ondrain = null\n        cb()\n      }\n    })\n    w.on('finish', function () {\n      if (onfinish) {\n        const cb = onfinish\n        onfinish = null\n        cb()\n      }\n    })\n  }\n  if (readable) {\n    eos(r, (err) => {\n      readable = false\n      if (err) {\n        destroyer(r, err)\n      }\n      onfinished(err)\n    })\n    r.on('readable', function () {\n      if (onreadable) {\n        const cb = onreadable\n        onreadable = null\n        cb()\n      }\n    })\n    r.on('end', function () {\n      d.push(null)\n    })\n    d._read = function () {\n      while (true) {\n        const buf = r.read()\n        if (buf === null) {\n          onreadable = d._read\n          return\n        }\n        if (!d.push(buf)) {\n          return\n        }\n      }\n    }\n  }\n  d._destroy = function (err, callback) {\n    if (!err && onclose !== null) {\n      err = new AbortError()\n    }\n    onreadable = null\n    ondrain = null\n    onfinish = null\n    if (onclose === null) {\n      callback(err)\n    } else {\n      onclose = callback\n      destroyer(w, err)\n      destroyer(r, err)\n    }\n  }\n  return d\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// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototype inheritance, this class\n// prototypically inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict'\n\nconst {\n  ObjectDefineProperties,\n  ObjectGetOwnPropertyDescriptor,\n  ObjectKeys,\n  ObjectSetPrototypeOf\n} = require('../../ours/primordials')\nmodule.exports = Duplex\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nObjectSetPrototypeOf(Duplex.prototype, Readable.prototype)\nObjectSetPrototypeOf(Duplex, Readable)\n{\n  const keys = ObjectKeys(Writable.prototype)\n  // Allow the keys array to be GC'ed.\n  for (let i = 0; i < keys.length; i++) {\n    const method = keys[i]\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options)\n  Readable.call(this, options)\n  Writable.call(this, options)\n  if (options) {\n    this.allowHalfOpen = options.allowHalfOpen !== false\n    if (options.readable === false) {\n      this._readableState.readable = false\n      this._readableState.ended = true\n      this._readableState.endEmitted = true\n    }\n    if (options.writable === false) {\n      this._writableState.writable = false\n      this._writableState.ending = true\n      this._writableState.ended = true\n      this._writableState.finished = true\n    }\n  } else {\n    this.allowHalfOpen = true\n  }\n}\nObjectDefineProperties(Duplex.prototype, {\n  writable: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable')\n  },\n  writableHighWaterMark: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark')\n  },\n  writableObjectMode: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode')\n  },\n  writableBuffer: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer')\n  },\n  writableLength: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength')\n  },\n  writableFinished: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished')\n  },\n  writableCorked: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked')\n  },\n  writableEnded: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded')\n  },\n  writableNeedDrain: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain')\n  },\n  destroyed: {\n    __proto__: null,\n    get() {\n      if (this._readableState === undefined || this._writableState === undefined) {\n        return false\n      }\n      return this._readableState.destroyed && this._writableState.destroyed\n    },\n    set(value) {\n      // Backward compatibility, the user is explicitly\n      // managing destroyed.\n      if (this._readableState && this._writableState) {\n        this._readableState.destroyed = value\n        this._writableState.destroyed = value\n      }\n    }\n  }\n})\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n  if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n  return webStreamsAdapters\n}\nDuplex.fromWeb = function (pair, options) {\n  return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options)\n}\nDuplex.toWeb = function (duplex) {\n  return lazyWebStreams().newReadableWritablePairFromDuplex(duplex)\n}\nlet duplexify\nDuplex.from = function (body) {\n  if (!duplexify) {\n    duplexify = require('./duplexify')\n  }\n  return duplexify(body, 'body')\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// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf, Symbol } = require('../../ours/primordials')\nmodule.exports = Transform\nconst { ERR_METHOD_NOT_IMPLEMENTED } = require('../../ours/errors').codes\nconst Duplex = require('./duplex')\nconst { getHighWaterMark } = require('./state')\nObjectSetPrototypeOf(Transform.prototype, Duplex.prototype)\nObjectSetPrototypeOf(Transform, Duplex)\nconst kCallback = Symbol('kCallback')\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options)\n\n  // TODO (ronag): This should preferably always be\n  // applied but would be semver-major. Or even better;\n  // make Transform a Readable with the Writable interface.\n  const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null\n  if (readableHighWaterMark === 0) {\n    // A Duplex will buffer both on the writable and readable side while\n    // a Transform just wants to buffer hwm number of elements. To avoid\n    // buffering twice we disable buffering on the writable side.\n    options = {\n      ...options,\n      highWaterMark: null,\n      readableHighWaterMark,\n      // TODO (ronag): 0 is not optimal since we have\n      // a \"bug\" where we check needDrain before calling _write and not after.\n      // Refs: https://github.com/nodejs/node/pull/32887\n      // Refs: https://github.com/nodejs/node/pull/35941\n      writableHighWaterMark: options.writableHighWaterMark || 0\n    }\n  }\n  Duplex.call(this, options)\n\n  // We have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false\n  this[kCallback] = null\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform\n    if (typeof options.flush === 'function') this._flush = options.flush\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  // Backwards compat. Some Transform streams incorrectly implement _final\n  // instead of or in addition to _flush. By using 'prefinish' instead of\n  // implementing _final we continue supporting this unfortunate use case.\n  this.on('prefinish', prefinish)\n}\nfunction final(cb) {\n  if (typeof this._flush === 'function' && !this.destroyed) {\n    this._flush((er, data) => {\n      if (er) {\n        if (cb) {\n          cb(er)\n        } else {\n          this.destroy(er)\n        }\n        return\n      }\n      if (data != null) {\n        this.push(data)\n      }\n      this.push(null)\n      if (cb) {\n        cb()\n      }\n    })\n  } else {\n    this.push(null)\n    if (cb) {\n      cb()\n    }\n  }\n}\nfunction prefinish() {\n  if (this._final !== final) {\n    final.call(this)\n  }\n}\nTransform.prototype._final = final\nTransform.prototype._transform = function (chunk, encoding, callback) {\n  throw new ERR_METHOD_NOT_IMPLEMENTED('_transform()')\n}\nTransform.prototype._write = function (chunk, encoding, callback) {\n  const rState = this._readableState\n  const wState = this._writableState\n  const length = rState.length\n  this._transform(chunk, encoding, (err, val) => {\n    if (err) {\n      callback(err)\n      return\n    }\n    if (val != null) {\n      this.push(val)\n    }\n    if (\n      wState.ended ||\n      // Backwards compat.\n      length === rState.length ||\n      // Backwards compat.\n      rState.length < rState.highWaterMark\n    ) {\n      callback()\n    } else {\n      this[kCallback] = callback\n    }\n  })\n}\nTransform.prototype._read = function () {\n  if (this[kCallback]) {\n    const callback = this[kCallback]\n    this[kCallback] = null\n    callback()\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\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf } = require('../../ours/primordials')\nmodule.exports = PassThrough\nconst Transform = require('./transform')\nObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype)\nObjectSetPrototypeOf(PassThrough, Transform)\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options)\n  Transform.call(this, options)\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk)\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { ArrayIsArray, Promise, SymbolAsyncIterator, SymbolDispose } = require('../../ours/primordials')\nconst eos = require('./end-of-stream')\nconst { once } = require('../../ours/util')\nconst destroyImpl = require('./destroy')\nconst Duplex = require('./duplex')\nconst {\n  aggregateTwoErrors,\n  codes: {\n    ERR_INVALID_ARG_TYPE,\n    ERR_INVALID_RETURN_VALUE,\n    ERR_MISSING_ARGS,\n    ERR_STREAM_DESTROYED,\n    ERR_STREAM_PREMATURE_CLOSE\n  },\n  AbortError\n} = require('../../ours/errors')\nconst { validateFunction, validateAbortSignal } = require('../validators')\nconst {\n  isIterable,\n  isReadable,\n  isReadableNodeStream,\n  isNodeStream,\n  isTransformStream,\n  isWebStream,\n  isReadableStream,\n  isReadableFinished\n} = require('./utils')\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nlet PassThrough\nlet Readable\nlet addAbortListener\nfunction destroyer(stream, reading, writing) {\n  let finished = false\n  stream.on('close', () => {\n    finished = true\n  })\n  const cleanup = eos(\n    stream,\n    {\n      readable: reading,\n      writable: writing\n    },\n    (err) => {\n      finished = !err\n    }\n  )\n  return {\n    destroy: (err) => {\n      if (finished) return\n      finished = true\n      destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED('pipe'))\n    },\n    cleanup\n  }\n}\nfunction popCallback(streams) {\n  // Streams should never be an empty array. It should always contain at least\n  // a single stream. Therefore optimize for the average case instead of\n  // checking for length === 0 as well.\n  validateFunction(streams[streams.length - 1], 'streams[stream.length - 1]')\n  return streams.pop()\n}\nfunction makeAsyncIterable(val) {\n  if (isIterable(val)) {\n    return val\n  } else if (isReadableNodeStream(val)) {\n    // Legacy streams are not Iterable.\n    return fromReadable(val)\n  }\n  throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], val)\n}\nasync function* fromReadable(val) {\n  if (!Readable) {\n    Readable = require('./readable')\n  }\n  yield* Readable.prototype[SymbolAsyncIterator].call(val)\n}\nasync function pumpToNode(iterable, writable, finish, { end }) {\n  let error\n  let onresolve = null\n  const resume = (err) => {\n    if (err) {\n      error = err\n    }\n    if (onresolve) {\n      const callback = onresolve\n      onresolve = null\n      callback()\n    }\n  }\n  const wait = () =>\n    new Promise((resolve, reject) => {\n      if (error) {\n        reject(error)\n      } else {\n        onresolve = () => {\n          if (error) {\n            reject(error)\n          } else {\n            resolve()\n          }\n        }\n      }\n    })\n  writable.on('drain', resume)\n  const cleanup = eos(\n    writable,\n    {\n      readable: false\n    },\n    resume\n  )\n  try {\n    if (writable.writableNeedDrain) {\n      await wait()\n    }\n    for await (const chunk of iterable) {\n      if (!writable.write(chunk)) {\n        await wait()\n      }\n    }\n    if (end) {\n      writable.end()\n      await wait()\n    }\n    finish()\n  } catch (err) {\n    finish(error !== err ? aggregateTwoErrors(error, err) : err)\n  } finally {\n    cleanup()\n    writable.off('drain', resume)\n  }\n}\nasync function pumpToWeb(readable, writable, finish, { end }) {\n  if (isTransformStream(writable)) {\n    writable = writable.writable\n  }\n  // https://streams.spec.whatwg.org/#example-manual-write-with-backpressure\n  const writer = writable.getWriter()\n  try {\n    for await (const chunk of readable) {\n      await writer.ready\n      writer.write(chunk).catch(() => {})\n    }\n    await writer.ready\n    if (end) {\n      await writer.close()\n    }\n    finish()\n  } catch (err) {\n    try {\n      await writer.abort(err)\n      finish(err)\n    } catch (err) {\n      finish(err)\n    }\n  }\n}\nfunction pipeline(...streams) {\n  return pipelineImpl(streams, once(popCallback(streams)))\n}\nfunction pipelineImpl(streams, callback, opts) {\n  if (streams.length === 1 && ArrayIsArray(streams[0])) {\n    streams = streams[0]\n  }\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams')\n  }\n  const ac = new AbortController()\n  const signal = ac.signal\n  const outerSignal = opts === null || opts === undefined ? undefined : opts.signal\n\n  // Need to cleanup event listeners if last stream is readable\n  // https://github.com/nodejs/node/issues/35452\n  const lastStreamCleanup = []\n  validateAbortSignal(outerSignal, 'options.signal')\n  function abort() {\n    finishImpl(new AbortError())\n  }\n  addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n  let disposable\n  if (outerSignal) {\n    disposable = addAbortListener(outerSignal, abort)\n  }\n  let error\n  let value\n  const destroys = []\n  let finishCount = 0\n  function finish(err) {\n    finishImpl(err, --finishCount === 0)\n  }\n  function finishImpl(err, final) {\n    var _disposable\n    if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) {\n      error = err\n    }\n    if (!error && !final) {\n      return\n    }\n    while (destroys.length) {\n      destroys.shift()(error)\n    }\n    ;(_disposable = disposable) === null || _disposable === undefined ? undefined : _disposable[SymbolDispose]()\n    ac.abort()\n    if (final) {\n      if (!error) {\n        lastStreamCleanup.forEach((fn) => fn())\n      }\n      process.nextTick(callback, error, value)\n    }\n  }\n  let ret\n  for (let i = 0; i < streams.length; i++) {\n    const stream = streams[i]\n    const reading = i < streams.length - 1\n    const writing = i > 0\n    const end = reading || (opts === null || opts === undefined ? undefined : opts.end) !== false\n    const isLastStream = i === streams.length - 1\n    if (isNodeStream(stream)) {\n      if (end) {\n        const { destroy, cleanup } = destroyer(stream, reading, writing)\n        destroys.push(destroy)\n        if (isReadable(stream) && isLastStream) {\n          lastStreamCleanup.push(cleanup)\n        }\n      }\n\n      // Catch stream errors that occur after pipe/pump has completed.\n      function onError(err) {\n        if (err && err.name !== 'AbortError' && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n          finish(err)\n        }\n      }\n      stream.on('error', onError)\n      if (isReadable(stream) && isLastStream) {\n        lastStreamCleanup.push(() => {\n          stream.removeListener('error', onError)\n        })\n      }\n    }\n    if (i === 0) {\n      if (typeof stream === 'function') {\n        ret = stream({\n          signal\n        })\n        if (!isIterable(ret)) {\n          throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or Stream', 'source', ret)\n        }\n      } else if (isIterable(stream) || isReadableNodeStream(stream) || isTransformStream(stream)) {\n        ret = stream\n      } else {\n        ret = Duplex.from(stream)\n      }\n    } else if (typeof stream === 'function') {\n      if (isTransformStream(ret)) {\n        var _ret\n        ret = makeAsyncIterable((_ret = ret) === null || _ret === undefined ? undefined : _ret.readable)\n      } else {\n        ret = makeAsyncIterable(ret)\n      }\n      ret = stream(ret, {\n        signal\n      })\n      if (reading) {\n        if (!isIterable(ret, true)) {\n          throw new ERR_INVALID_RETURN_VALUE('AsyncIterable', `transform[${i - 1}]`, ret)\n        }\n      } else {\n        var _ret2\n        if (!PassThrough) {\n          PassThrough = require('./passthrough')\n        }\n\n        // If the last argument to pipeline is not a stream\n        // we must create a proxy stream so that pipeline(...)\n        // always returns a stream which can be further\n        // composed through `.pipe(stream)`.\n\n        const pt = new PassThrough({\n          objectMode: true\n        })\n\n        // Handle Promises/A+ spec, `then` could be a getter that throws on\n        // second use.\n        const then = (_ret2 = ret) === null || _ret2 === undefined ? undefined : _ret2.then\n        if (typeof then === 'function') {\n          finishCount++\n          then.call(\n            ret,\n            (val) => {\n              value = val\n              if (val != null) {\n                pt.write(val)\n              }\n              if (end) {\n                pt.end()\n              }\n              process.nextTick(finish)\n            },\n            (err) => {\n              pt.destroy(err)\n              process.nextTick(finish, err)\n            }\n          )\n        } else if (isIterable(ret, true)) {\n          finishCount++\n          pumpToNode(ret, pt, finish, {\n            end\n          })\n        } else if (isReadableStream(ret) || isTransformStream(ret)) {\n          const toRead = ret.readable || ret\n          finishCount++\n          pumpToNode(toRead, pt, finish, {\n            end\n          })\n        } else {\n          throw new ERR_INVALID_RETURN_VALUE('AsyncIterable or Promise', 'destination', ret)\n        }\n        ret = pt\n        const { destroy, cleanup } = destroyer(ret, false, true)\n        destroys.push(destroy)\n        if (isLastStream) {\n          lastStreamCleanup.push(cleanup)\n        }\n      }\n    } else if (isNodeStream(stream)) {\n      if (isReadableNodeStream(ret)) {\n        finishCount += 2\n        const cleanup = pipe(ret, stream, finish, {\n          end\n        })\n        if (isReadable(stream) && isLastStream) {\n          lastStreamCleanup.push(cleanup)\n        }\n      } else if (isTransformStream(ret) || isReadableStream(ret)) {\n        const toRead = ret.readable || ret\n        finishCount++\n        pumpToNode(toRead, stream, finish, {\n          end\n        })\n      } else if (isIterable(ret)) {\n        finishCount++\n        pumpToNode(ret, stream, finish, {\n          end\n        })\n      } else {\n        throw new ERR_INVALID_ARG_TYPE(\n          'val',\n          ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n          ret\n        )\n      }\n      ret = stream\n    } else if (isWebStream(stream)) {\n      if (isReadableNodeStream(ret)) {\n        finishCount++\n        pumpToWeb(makeAsyncIterable(ret), stream, finish, {\n          end\n        })\n      } else if (isReadableStream(ret) || isIterable(ret)) {\n        finishCount++\n        pumpToWeb(ret, stream, finish, {\n          end\n        })\n      } else if (isTransformStream(ret)) {\n        finishCount++\n        pumpToWeb(ret.readable, stream, finish, {\n          end\n        })\n      } else {\n        throw new ERR_INVALID_ARG_TYPE(\n          'val',\n          ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n          ret\n        )\n      }\n      ret = stream\n    } else {\n      ret = Duplex.from(stream)\n    }\n  }\n  if (\n    (signal !== null && signal !== undefined && signal.aborted) ||\n    (outerSignal !== null && outerSignal !== undefined && outerSignal.aborted)\n  ) {\n    process.nextTick(abort)\n  }\n  return ret\n}\nfunction pipe(src, dst, finish, { end }) {\n  let ended = false\n  dst.on('close', () => {\n    if (!ended) {\n      // Finish if the destination closes before the source has completed.\n      finish(new ERR_STREAM_PREMATURE_CLOSE())\n    }\n  })\n  src.pipe(dst, {\n    end: false\n  }) // If end is true we already will have a listener to end dst.\n\n  if (end) {\n    // Compat. Before node v10.12.0 stdio used to throw an error so\n    // pipe() did/does not end() stdio destinations.\n    // Now they allow it but \"secretly\" don't close the underlying fd.\n\n    function endFn() {\n      ended = true\n      dst.end()\n    }\n    if (isReadableFinished(src)) {\n      // End the destination if the source has already ended.\n      process.nextTick(endFn)\n    } else {\n      src.once('end', endFn)\n    }\n  } else {\n    finish()\n  }\n  eos(\n    src,\n    {\n      readable: true,\n      writable: false\n    },\n    (err) => {\n      const rState = src._readableState\n      if (\n        err &&\n        err.code === 'ERR_STREAM_PREMATURE_CLOSE' &&\n        rState &&\n        rState.ended &&\n        !rState.errored &&\n        !rState.errorEmitted\n      ) {\n        // Some readable streams will emit 'close' before 'end'. However, since\n        // this is on the readable side 'end' should still be emitted if the\n        // stream has been ended and no error emitted. This should be allowed in\n        // favor of backwards compatibility. Since the stream is piped to a\n        // destination this should not result in any observable difference.\n        // We don't need to check if this is a writable premature close since\n        // eos will only fail with premature close on the reading side for\n        // duplex streams.\n        src.once('end', finish).once('error', finish)\n      } else {\n        finish(err)\n      }\n    }\n  )\n  return eos(\n    dst,\n    {\n      readable: false,\n      writable: true\n    },\n    finish\n  )\n}\nmodule.exports = {\n  pipelineImpl,\n  pipeline\n}\n", "'use strict'\n\nconst { pipeline } = require('./pipeline')\nconst Duplex = require('./duplex')\nconst { destroyer } = require('./destroy')\nconst {\n  isNodeStream,\n  isReadable,\n  isWritable,\n  isWebStream,\n  isTransformStream,\n  isWritableStream,\n  isReadableStream\n} = require('./utils')\nconst {\n  AbortError,\n  codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS }\n} = require('../../ours/errors')\nconst eos = require('./end-of-stream')\nmodule.exports = function compose(...streams) {\n  if (streams.length === 0) {\n    throw new ERR_MISSING_ARGS('streams')\n  }\n  if (streams.length === 1) {\n    return Duplex.from(streams[0])\n  }\n  const orgStreams = [...streams]\n  if (typeof streams[0] === 'function') {\n    streams[0] = Duplex.from(streams[0])\n  }\n  if (typeof streams[streams.length - 1] === 'function') {\n    const idx = streams.length - 1\n    streams[idx] = Duplex.from(streams[idx])\n  }\n  for (let n = 0; n < streams.length; ++n) {\n    if (!isNodeStream(streams[n]) && !isWebStream(streams[n])) {\n      // TODO(ronag): Add checks for non streams.\n      continue\n    }\n    if (\n      n < streams.length - 1 &&\n      !(isReadable(streams[n]) || isReadableStream(streams[n]) || isTransformStream(streams[n]))\n    ) {\n      throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be readable')\n    }\n    if (n > 0 && !(isWritable(streams[n]) || isWritableStream(streams[n]) || isTransformStream(streams[n]))) {\n      throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be writable')\n    }\n  }\n  let ondrain\n  let onfinish\n  let onreadable\n  let onclose\n  let d\n  function onfinished(err) {\n    const cb = onclose\n    onclose = null\n    if (cb) {\n      cb(err)\n    } else if (err) {\n      d.destroy(err)\n    } else if (!readable && !writable) {\n      d.destroy()\n    }\n  }\n  const head = streams[0]\n  const tail = pipeline(streams, onfinished)\n  const writable = !!(isWritable(head) || isWritableStream(head) || isTransformStream(head))\n  const readable = !!(isReadable(tail) || isReadableStream(tail) || isTransformStream(tail))\n\n  // TODO(ronag): Avoid double buffering.\n  // Implement Writable/Readable/Duplex traits.\n  // See, https://github.com/nodejs/node/pull/33515.\n  d = new Duplex({\n    // TODO (ronag): highWaterMark?\n    writableObjectMode: !!(head !== null && head !== undefined && head.writableObjectMode),\n    readableObjectMode: !!(tail !== null && tail !== undefined && tail.readableObjectMode),\n    writable,\n    readable\n  })\n  if (writable) {\n    if (isNodeStream(head)) {\n      d._write = function (chunk, encoding, callback) {\n        if (head.write(chunk, encoding)) {\n          callback()\n        } else {\n          ondrain = callback\n        }\n      }\n      d._final = function (callback) {\n        head.end()\n        onfinish = callback\n      }\n      head.on('drain', function () {\n        if (ondrain) {\n          const cb = ondrain\n          ondrain = null\n          cb()\n        }\n      })\n    } else if (isWebStream(head)) {\n      const writable = isTransformStream(head) ? head.writable : head\n      const writer = writable.getWriter()\n      d._write = async function (chunk, encoding, callback) {\n        try {\n          await writer.ready\n          writer.write(chunk).catch(() => {})\n          callback()\n        } catch (err) {\n          callback(err)\n        }\n      }\n      d._final = async function (callback) {\n        try {\n          await writer.ready\n          writer.close().catch(() => {})\n          onfinish = callback\n        } catch (err) {\n          callback(err)\n        }\n      }\n    }\n    const toRead = isTransformStream(tail) ? tail.readable : tail\n    eos(toRead, () => {\n      if (onfinish) {\n        const cb = onfinish\n        onfinish = null\n        cb()\n      }\n    })\n  }\n  if (readable) {\n    if (isNodeStream(tail)) {\n      tail.on('readable', function () {\n        if (onreadable) {\n          const cb = onreadable\n          onreadable = null\n          cb()\n        }\n      })\n      tail.on('end', function () {\n        d.push(null)\n      })\n      d._read = function () {\n        while (true) {\n          const buf = tail.read()\n          if (buf === null) {\n            onreadable = d._read\n            return\n          }\n          if (!d.push(buf)) {\n            return\n          }\n        }\n      }\n    } else if (isWebStream(tail)) {\n      const readable = isTransformStream(tail) ? tail.readable : tail\n      const reader = readable.getReader()\n      d._read = async function () {\n        while (true) {\n          try {\n            const { value, done } = await reader.read()\n            if (!d.push(value)) {\n              return\n            }\n            if (done) {\n              d.push(null)\n              return\n            }\n          } catch {\n            return\n          }\n        }\n      }\n    }\n  }\n  d._destroy = function (err, callback) {\n    if (!err && onclose !== null) {\n      err = new AbortError()\n    }\n    onreadable = null\n    ondrain = null\n    onfinish = null\n    if (onclose === null) {\n      callback(err)\n    } else {\n      onclose = callback\n      if (isNodeStream(tail)) {\n        destroyer(tail, err)\n      }\n    }\n  }\n  return d\n}\n", "'use strict'\n\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst {\n  codes: { ERR_INVALID_ARG_VALUE, ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE },\n  AbortError\n} = require('../../ours/errors')\nconst { validateAbortSignal, validateInteger, validateObject } = require('../validators')\nconst kWeakHandler = require('../../ours/primordials').Symbol('kWeak')\nconst kResistStopPropagation = require('../../ours/primordials').Symbol('kResistStopPropagation')\nconst { finished } = require('./end-of-stream')\nconst staticCompose = require('./compose')\nconst { addAbortSignalNoValidate } = require('./add-abort-signal')\nconst { isWritable, isNodeStream } = require('./utils')\nconst { deprecate } = require('../../ours/util')\nconst {\n  ArrayPrototypePush,\n  Boolean,\n  MathFloor,\n  Number,\n  NumberIsNaN,\n  Promise,\n  PromiseReject,\n  PromiseResolve,\n  PromisePrototypeThen,\n  Symbol\n} = require('../../ours/primordials')\nconst kEmpty = Symbol('kEmpty')\nconst kEof = Symbol('kEof')\nfunction compose(stream, options) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  if (isNodeStream(stream) && !isWritable(stream)) {\n    throw new ERR_INVALID_ARG_VALUE('stream', stream, 'must be writable')\n  }\n  const composedStream = staticCompose(this, stream)\n  if (options !== null && options !== undefined && options.signal) {\n    // Not validating as we already validated before\n    addAbortSignalNoValidate(options.signal, composedStream)\n  }\n  return composedStream\n}\nfunction map(fn, options) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  let concurrency = 1\n  if ((options === null || options === undefined ? undefined : options.concurrency) != null) {\n    concurrency = MathFloor(options.concurrency)\n  }\n  let highWaterMark = concurrency - 1\n  if ((options === null || options === undefined ? undefined : options.highWaterMark) != null) {\n    highWaterMark = MathFloor(options.highWaterMark)\n  }\n  validateInteger(concurrency, 'options.concurrency', 1)\n  validateInteger(highWaterMark, 'options.highWaterMark', 0)\n  highWaterMark += concurrency\n  return async function* map() {\n    const signal = require('../../ours/util').AbortSignalAny(\n      [options === null || options === undefined ? undefined : options.signal].filter(Boolean)\n    )\n    const stream = this\n    const queue = []\n    const signalOpt = {\n      signal\n    }\n    let next\n    let resume\n    let done = false\n    let cnt = 0\n    function onCatch() {\n      done = true\n      afterItemProcessed()\n    }\n    function afterItemProcessed() {\n      cnt -= 1\n      maybeResume()\n    }\n    function maybeResume() {\n      if (resume && !done && cnt < concurrency && queue.length < highWaterMark) {\n        resume()\n        resume = null\n      }\n    }\n    async function pump() {\n      try {\n        for await (let val of stream) {\n          if (done) {\n            return\n          }\n          if (signal.aborted) {\n            throw new AbortError()\n          }\n          try {\n            val = fn(val, signalOpt)\n            if (val === kEmpty) {\n              continue\n            }\n            val = PromiseResolve(val)\n          } catch (err) {\n            val = PromiseReject(err)\n          }\n          cnt += 1\n          PromisePrototypeThen(val, afterItemProcessed, onCatch)\n          queue.push(val)\n          if (next) {\n            next()\n            next = null\n          }\n          if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) {\n            await new Promise((resolve) => {\n              resume = resolve\n            })\n          }\n        }\n        queue.push(kEof)\n      } catch (err) {\n        const val = PromiseReject(err)\n        PromisePrototypeThen(val, afterItemProcessed, onCatch)\n        queue.push(val)\n      } finally {\n        done = true\n        if (next) {\n          next()\n          next = null\n        }\n      }\n    }\n    pump()\n    try {\n      while (true) {\n        while (queue.length > 0) {\n          const val = await queue[0]\n          if (val === kEof) {\n            return\n          }\n          if (signal.aborted) {\n            throw new AbortError()\n          }\n          if (val !== kEmpty) {\n            yield val\n          }\n          queue.shift()\n          maybeResume()\n        }\n        await new Promise((resolve) => {\n          next = resolve\n        })\n      }\n    } finally {\n      done = true\n      if (resume) {\n        resume()\n        resume = null\n      }\n    }\n  }.call(this)\n}\nfunction asIndexedPairs(options = undefined) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  return async function* asIndexedPairs() {\n    let index = 0\n    for await (const val of this) {\n      var _options$signal\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal = options.signal) !== null &&\n        _options$signal !== undefined &&\n        _options$signal.aborted\n      ) {\n        throw new AbortError({\n          cause: options.signal.reason\n        })\n      }\n      yield [index++, val]\n    }\n  }.call(this)\n}\nasync function some(fn, options = undefined) {\n  for await (const unused of filter.call(this, fn, options)) {\n    return true\n  }\n  return false\n}\nasync function every(fn, options = undefined) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  // https://en.wikipedia.org/wiki/De_Morgan%27s_laws\n  return !(await some.call(\n    this,\n    async (...args) => {\n      return !(await fn(...args))\n    },\n    options\n  ))\n}\nasync function find(fn, options) {\n  for await (const result of filter.call(this, fn, options)) {\n    return result\n  }\n  return undefined\n}\nasync function forEach(fn, options) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  async function forEachFn(value, options) {\n    await fn(value, options)\n    return kEmpty\n  }\n  // eslint-disable-next-line no-unused-vars\n  for await (const unused of map.call(this, forEachFn, options));\n}\nfunction filter(fn, options) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  async function filterFn(value, options) {\n    if (await fn(value, options)) {\n      return value\n    }\n    return kEmpty\n  }\n  return map.call(this, filterFn, options)\n}\n\n// Specific to provide better error to reduce since the argument is only\n// missing if the stream has no items in it - but the code is still appropriate\nclass ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS {\n  constructor() {\n    super('reduce')\n    this.message = 'Reduce of an empty stream requires an initial value'\n  }\n}\nasync function reduce(reducer, initialValue, options) {\n  var _options$signal2\n  if (typeof reducer !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('reducer', ['Function', 'AsyncFunction'], reducer)\n  }\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  let hasInitialValue = arguments.length > 1\n  if (\n    options !== null &&\n    options !== undefined &&\n    (_options$signal2 = options.signal) !== null &&\n    _options$signal2 !== undefined &&\n    _options$signal2.aborted\n  ) {\n    const err = new AbortError(undefined, {\n      cause: options.signal.reason\n    })\n    this.once('error', () => {}) // The error is already propagated\n    await finished(this.destroy(err))\n    throw err\n  }\n  const ac = new AbortController()\n  const signal = ac.signal\n  if (options !== null && options !== undefined && options.signal) {\n    const opts = {\n      once: true,\n      [kWeakHandler]: this,\n      [kResistStopPropagation]: true\n    }\n    options.signal.addEventListener('abort', () => ac.abort(), opts)\n  }\n  let gotAnyItemFromStream = false\n  try {\n    for await (const value of this) {\n      var _options$signal3\n      gotAnyItemFromStream = true\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal3 = options.signal) !== null &&\n        _options$signal3 !== undefined &&\n        _options$signal3.aborted\n      ) {\n        throw new AbortError()\n      }\n      if (!hasInitialValue) {\n        initialValue = value\n        hasInitialValue = true\n      } else {\n        initialValue = await reducer(initialValue, value, {\n          signal\n        })\n      }\n    }\n    if (!gotAnyItemFromStream && !hasInitialValue) {\n      throw new ReduceAwareErrMissingArgs()\n    }\n  } finally {\n    ac.abort()\n  }\n  return initialValue\n}\nasync function toArray(options) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  const result = []\n  for await (const val of this) {\n    var _options$signal4\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal4 = options.signal) !== null &&\n      _options$signal4 !== undefined &&\n      _options$signal4.aborted\n    ) {\n      throw new AbortError(undefined, {\n        cause: options.signal.reason\n      })\n    }\n    ArrayPrototypePush(result, val)\n  }\n  return result\n}\nfunction flatMap(fn, options) {\n  const values = map.call(this, fn, options)\n  return async function* flatMap() {\n    for await (const val of values) {\n      yield* val\n    }\n  }.call(this)\n}\nfunction toIntegerOrInfinity(number) {\n  // We coerce here to align with the spec\n  // https://github.com/tc39/proposal-iterator-helpers/issues/169\n  number = Number(number)\n  if (NumberIsNaN(number)) {\n    return 0\n  }\n  if (number < 0) {\n    throw new ERR_OUT_OF_RANGE('number', '>= 0', number)\n  }\n  return number\n}\nfunction drop(number, options = undefined) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  number = toIntegerOrInfinity(number)\n  return async function* drop() {\n    var _options$signal5\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal5 = options.signal) !== null &&\n      _options$signal5 !== undefined &&\n      _options$signal5.aborted\n    ) {\n      throw new AbortError()\n    }\n    for await (const val of this) {\n      var _options$signal6\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal6 = options.signal) !== null &&\n        _options$signal6 !== undefined &&\n        _options$signal6.aborted\n      ) {\n        throw new AbortError()\n      }\n      if (number-- <= 0) {\n        yield val\n      }\n    }\n  }.call(this)\n}\nfunction take(number, options = undefined) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  number = toIntegerOrInfinity(number)\n  return async function* take() {\n    var _options$signal7\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal7 = options.signal) !== null &&\n      _options$signal7 !== undefined &&\n      _options$signal7.aborted\n    ) {\n      throw new AbortError()\n    }\n    for await (const val of this) {\n      var _options$signal8\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal8 = options.signal) !== null &&\n        _options$signal8 !== undefined &&\n        _options$signal8.aborted\n      ) {\n        throw new AbortError()\n      }\n      if (number-- > 0) {\n        yield val\n      }\n\n      // Don't get another item from iterator in case we reached the end\n      if (number <= 0) {\n        return\n      }\n    }\n  }.call(this)\n}\nmodule.exports.streamReturningOperators = {\n  asIndexedPairs: deprecate(asIndexedPairs, 'readable.asIndexedPairs will be removed in a future version.'),\n  drop,\n  filter,\n  flatMap,\n  map,\n  take,\n  compose\n}\nmodule.exports.promiseReturningOperators = {\n  every,\n  forEach,\n  reduce,\n  toArray,\n  some,\n  find\n}\n", "'use strict'\n\nconst { ArrayPrototypePop, Promise } = require('../ours/primordials')\nconst { isIterable, isNodeStream, isWebStream } = require('../internal/streams/utils')\nconst { pipelineImpl: pl } = require('../internal/streams/pipeline')\nconst { finished } = require('../internal/streams/end-of-stream')\nrequire('../../lib/stream.js')\nfunction pipeline(...streams) {\n  return new Promise((resolve, reject) => {\n    let signal\n    let end\n    const lastArg = streams[streams.length - 1]\n    if (\n      lastArg &&\n      typeof lastArg === 'object' &&\n      !isNodeStream(lastArg) &&\n      !isIterable(lastArg) &&\n      !isWebStream(lastArg)\n    ) {\n      const options = ArrayPrototypePop(streams)\n      signal = options.signal\n      end = options.end\n    }\n    pl(\n      streams,\n      (err, value) => {\n        if (err) {\n          reject(err)\n        } else {\n          resolve(value)\n        }\n      },\n      {\n        signal,\n        end\n      }\n    )\n  })\n}\nmodule.exports = {\n  finished,\n  pipeline\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\n/* replacement start */\n\nconst { Buffer } = require('buffer')\n\n/* replacement end */\n\nconst { ObjectDefineProperty, ObjectKeys, ReflectApply } = require('./ours/primordials')\nconst {\n  promisify: { custom: customPromisify }\n} = require('./ours/util')\nconst { streamReturningOperators, promiseReturningOperators } = require('./internal/streams/operators')\nconst {\n  codes: { ERR_ILLEGAL_CONSTRUCTOR }\n} = require('./ours/errors')\nconst compose = require('./internal/streams/compose')\nconst { setDefaultHighWaterMark, getDefaultHighWaterMark } = require('./internal/streams/state')\nconst { pipeline } = require('./internal/streams/pipeline')\nconst { destroyer } = require('./internal/streams/destroy')\nconst eos = require('./internal/streams/end-of-stream')\nconst internalBuffer = {}\nconst promises = require('./stream/promises')\nconst utils = require('./internal/streams/utils')\nconst Stream = (module.exports = require('./internal/streams/legacy').Stream)\nStream.isDestroyed = utils.isDestroyed\nStream.isDisturbed = utils.isDisturbed\nStream.isErrored = utils.isErrored\nStream.isReadable = utils.isReadable\nStream.isWritable = utils.isWritable\nStream.Readable = require('./internal/streams/readable')\nfor (const key of ObjectKeys(streamReturningOperators)) {\n  const op = streamReturningOperators[key]\n  function fn(...args) {\n    if (new.target) {\n      throw ERR_ILLEGAL_CONSTRUCTOR()\n    }\n    return Stream.Readable.from(ReflectApply(op, this, args))\n  }\n  ObjectDefineProperty(fn, 'name', {\n    __proto__: null,\n    value: op.name\n  })\n  ObjectDefineProperty(fn, 'length', {\n    __proto__: null,\n    value: op.length\n  })\n  ObjectDefineProperty(Stream.Readable.prototype, key, {\n    __proto__: null,\n    value: fn,\n    enumerable: false,\n    configurable: true,\n    writable: true\n  })\n}\nfor (const key of ObjectKeys(promiseReturningOperators)) {\n  const op = promiseReturningOperators[key]\n  function fn(...args) {\n    if (new.target) {\n      throw ERR_ILLEGAL_CONSTRUCTOR()\n    }\n    return ReflectApply(op, this, args)\n  }\n  ObjectDefineProperty(fn, 'name', {\n    __proto__: null,\n    value: op.name\n  })\n  ObjectDefineProperty(fn, 'length', {\n    __proto__: null,\n    value: op.length\n  })\n  ObjectDefineProperty(Stream.Readable.prototype, key, {\n    __proto__: null,\n    value: fn,\n    enumerable: false,\n    configurable: true,\n    writable: true\n  })\n}\nStream.Writable = require('./internal/streams/writable')\nStream.Duplex = require('./internal/streams/duplex')\nStream.Transform = require('./internal/streams/transform')\nStream.PassThrough = require('./internal/streams/passthrough')\nStream.pipeline = pipeline\nconst { addAbortSignal } = require('./internal/streams/add-abort-signal')\nStream.addAbortSignal = addAbortSignal\nStream.finished = eos\nStream.destroy = destroyer\nStream.compose = compose\nStream.setDefaultHighWaterMark = setDefaultHighWaterMark\nStream.getDefaultHighWaterMark = getDefaultHighWaterMark\nObjectDefineProperty(Stream, 'promises', {\n  __proto__: null,\n  configurable: true,\n  enumerable: true,\n  get() {\n    return promises\n  }\n})\nObjectDefineProperty(pipeline, customPromisify, {\n  __proto__: null,\n  enumerable: true,\n  get() {\n    return promises.pipeline\n  }\n})\nObjectDefineProperty(eos, customPromisify, {\n  __proto__: null,\n  enumerable: true,\n  get() {\n    return promises.finished\n  }\n})\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream\nStream._isUint8Array = function isUint8Array(value) {\n  return value instanceof Uint8Array\n}\nStream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n}\n", "'use strict'\n\nconst CustomStream = require('../stream')\nconst promises = require('../stream/promises')\nconst originalDestroy = CustomStream.Readable.destroy\nmodule.exports = CustomStream.Readable\n\n// Explicit export naming is needed for ESM\nmodule.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer\nmodule.exports._isUint8Array = CustomStream._isUint8Array\nmodule.exports.isDisturbed = CustomStream.isDisturbed\nmodule.exports.isErrored = CustomStream.isErrored\nmodule.exports.isReadable = CustomStream.isReadable\nmodule.exports.Readable = CustomStream.Readable\nmodule.exports.Writable = CustomStream.Writable\nmodule.exports.Duplex = CustomStream.Duplex\nmodule.exports.Transform = CustomStream.Transform\nmodule.exports.PassThrough = CustomStream.PassThrough\nmodule.exports.addAbortSignal = CustomStream.addAbortSignal\nmodule.exports.finished = CustomStream.finished\nmodule.exports.destroy = CustomStream.destroy\nmodule.exports.destroy = originalDestroy\nmodule.exports.pipeline = CustomStream.pipeline\nmodule.exports.compose = CustomStream.compose\nObject.defineProperty(CustomStream, 'promises', {\n  configurable: true,\n  enumerable: true,\n  get() {\n    return promises\n  }\n})\nmodule.exports.Stream = CustomStream.Stream\n\n// Allow default importing\nmodule.exports.default = module.exports\n", "'use strict';\n\n/** @type {import('./shams')} */\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\t/** @type {{ [k in symbol]?: unknown }} */\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 (var _ 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\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (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\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n", "'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n", "'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n", "'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n", "'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n", "'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n", "'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n", "'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n", "'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n", "'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n", "'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n", "'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n", "'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n", "'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n", "'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n", "'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\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\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\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 = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\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/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n", "'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ 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\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n", "'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n", "'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n", "'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n", "'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n", "'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n", "'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n", "'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\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 = require('gopd');\nvar $defineProperty = require('es-define-property');\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 = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\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 ? 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'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\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'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\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(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 || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\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 || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? 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\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\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 && getProto) {\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__proto__: null,\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('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($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 GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n", "'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType<typeof RegExp.prototype.exec>, ...args: Parameters<typeof RegExp.prototype.exec>) => ReturnType<typeof RegExp.prototype.exec>} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable<typeof gOPD>} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n", "'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n", "'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n", "'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\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\n/** @type {<This, A extends readonly unknown[]>(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\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\n/** @type {<This, S extends string>(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\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\n/** @type {<This, O>(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\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\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n    return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = 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 (isArray(list)) {\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", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n", "'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType<typeof availableTypedArrays>} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n", "'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n", "'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n", "'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\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 forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\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');\n\n/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */\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};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\tif (descriptor && descriptor.get) {\n\t\t\t\tvar bound = callBind(descriptor.get);\n\t\t\t\tcache[\n\t\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t\t] = bound;\n\t\t\t}\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tvar bound = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = bound;\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType<typeof tryAllTypedArrays>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType<typeof tryAllSlices>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n", "'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(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", "/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter     = token \"=\" ( token / quoted-string )\n * token         = 1*tchar\n * tchar         = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n *               / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n *               / DIGIT / ALPHA\n *               ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext        = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text      = %x80-FF\n * quoted-pair   = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/ // eslint-disable-line no-control-regex\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text    = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type       = token\n * subtype    = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var parameters = obj.parameters\n  var type = obj.type\n\n  if (!type || !TYPE_REGEXP.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  var string = type\n\n  // append parameters\n  if (parameters && typeof parameters === 'object') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      if (!TOKEN_REGEXP.test(param)) {\n        throw new TypeError('invalid parameter name')\n      }\n\n      string += '; ' + param + '=' + qstring(parameters[param])\n    }\n  }\n\n  return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  // support req/res-like objects as argument\n  var header = typeof string === 'object'\n    ? getcontenttype(string)\n    : string\n\n  if (typeof header !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var index = header.indexOf(';')\n  var type = index !== -1\n    ? header.slice(0, index).trim()\n    : header.trim()\n\n  if (!TYPE_REGEXP.test(type)) {\n    throw new TypeError('invalid media type')\n  }\n\n  var obj = new ContentType(type.toLowerCase())\n\n  // parse parameters\n  if (index !== -1) {\n    var key\n    var match\n    var value\n\n    PARAM_REGEXP.lastIndex = index\n\n    while ((match = PARAM_REGEXP.exec(header))) {\n      if (match.index !== index) {\n        throw new TypeError('invalid parameter format')\n      }\n\n      index += match[0].length\n      key = match[1].toLowerCase()\n      value = match[2]\n\n      if (value.charCodeAt(0) === 0x22 /* \" */) {\n        // remove quotes\n        value = value.slice(1, -1)\n\n        // remove escapes\n        if (value.indexOf('\\\\') !== -1) {\n          value = value.replace(QESC_REGEXP, '$1')\n        }\n      }\n\n      obj.parameters[key] = value\n    }\n\n    if (index !== header.length) {\n      throw new TypeError('invalid parameter format')\n    }\n  }\n\n  return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n  var header\n\n  if (typeof obj.getHeader === 'function') {\n    // res-like\n    header = obj.getHeader('content-type')\n  } else if (typeof obj.headers === 'object') {\n    // req-like\n    header = obj.headers && obj.headers['content-type']\n  }\n\n  if (typeof header !== 'string') {\n    throw new TypeError('content-type header is missing from object')\n  }\n\n  return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n  var str = String(val)\n\n  // no need to quote tokens\n  if (TOKEN_REGEXP.test(str)) {\n    return str\n  }\n\n  if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n    throw new TypeError('invalid parameter value')\n  }\n\n  return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n  this.parameters = Object.create(null)\n  this.type = type\n}\n", "'use strict';\n\nconst arrify = value => {\n\tif (value === null || value === undefined) {\n\t\treturn [];\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'string') {\n\t\treturn [value];\n\t}\n\n\tif (typeof value[Symbol.iterator] === 'function') {\n\t\treturn [...value];\n\t}\n\n\treturn [value];\n};\n\nmodule.exports = arrify;\n", "/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.18.1';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function',\n      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`',\n      INVALID_TEMPL_IMPORTS_ERROR_TEXT = 'Invalid `imports` option passed into `_.template`';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var arrayBufferTag = '[object ArrayBuffer]',\n      dataViewTag = '[object DataView]',\n      float32Tag = '[object Float32Array]',\n      float64Tag = '[object Float64Array]',\n      int8Tag = '[object Int8Array]',\n      int16Tag = '[object Int16Array]',\n      int32Tag = '[object Int32Array]',\n      uint8Tag = '[object Uint8Array]',\n      uint8ClampedTag = '[object Uint8ClampedArray]',\n      uint16Tag = '[object Uint16Array]',\n      uint32Tag = '[object Uint32Array]';\n\n  /** Used to match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading whitespace. */\n  var reTrimStart = /^\\s+/;\n\n  /** Used to match a single whitespace character. */\n  var reWhitespace = /\\s/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /**\n   * Used to validate the `validate` option in `_.template` variable.\n   *\n   * Forbids characters which could potentially change the meaning of the function argument definition:\n   * - \"(),\" (modification of function parameters)\n   * - \"=\" (default value)\n   * - \"[]{}\" (destructuring of function parameters)\n   * - \"/\" (beginning of a comment)\n   * - whitespace\n   */\n  var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsAstralRange = '\\\\ud800-\\\\udfff',\n      rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n      rsDingbatRange = '\\\\u2700-\\\\u27bf',\n      rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n      rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n      rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n      rsPunctuationRange = '\\\\u2000-\\\\u206f',\n      rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n      rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n      rsVarRange = '\\\\ufe0e\\\\ufe0f',\n      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\n      rsBreak = '[' + rsBreakRange + ']',\n      rsCombo = '[' + rsComboRange + ']',\n      rsDigits = '\\\\d+',\n      rsDingbat = '[' + rsDingbatRange + ']',\n      rsLower = '[' + rsLowerRange + ']',\n      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n      rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n      rsNonAstral = '[^' + rsAstralRange + ']',\n      rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n      rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n      rsUpper = '[' + rsUpperRange + ']',\n      rsZWJ = '\\\\u200d';\n\n  /** Used to compose unicode regexes. */\n  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n      reOptMod = rsModifier + '?',\n      rsOptVar = '[' + rsVarRange + ']?',\n      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n      rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n      rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n      rsSeq = rsOptVar + reOptMod + rsOptJoin,\n      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var reUnicodeWord = RegExp([\n    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n    rsUpper + '+' + rsOptContrUpper,\n    rsOrdUpper,\n    rsOrdLower,\n    rsDigits,\n    rsEmoji\n  ].join('|'), 'g');\n\n  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var nodeUtil = (function() {\n    try {\n      // Use `util.types` for Node.js 10+.\n      var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n      if (types) {\n        return types;\n      }\n\n      // Legacy `process.binding('util')` for Node.js < 10.\n      return freeProcess && freeProcess.binding && freeProcess.binding('util');\n    } catch (e) {}\n  }());\n\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * A faster alternative to `Function#apply`, this function invokes `func`\n   * with the `this` binding of `thisArg` and the arguments of `args`.\n   *\n   * @private\n   * @param {Function} func The function to invoke.\n   * @param {*} thisArg The `this` binding of `func`.\n   * @param {Array} args The arguments to invoke `func` with.\n   * @returns {*} Returns the result of `func`.\n   */\n  function apply(func, thisArg, args) {\n    switch (args.length) {\n      case 0: return func.call(thisArg);\n      case 1: return func.call(thisArg, args[0]);\n      case 2: return func.call(thisArg, args[0], args[1]);\n      case 3: return func.call(thisArg, args[0], args[1], args[2]);\n    }\n    return func.apply(thisArg, args);\n  }\n\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.forEach` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEach(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (iteratee(array[index], index, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.forEachRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (!predicate(array[index], index, array)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * A specialized version of `_.filter` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {Array} Returns the new filtered array.\n   */\n  function arrayFilter(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (predicate(value, index, array)) {\n        result[resIndex++] = value;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.includes` for arrays without support for\n   * specifying an index to search from.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\n\n  /**\n   * This function is like `arrayIncludes` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludesWith(array, value, comparator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (comparator(value, array[index])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * A specialized version of `_.map` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the new mapped array.\n   */\n  function arrayMap(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        result = Array(length);\n\n    while (++index < length) {\n      result[index] = iteratee(array[index], index, array);\n    }\n    return result;\n  }\n\n  /**\n   * Appends the elements of `values` to `array`.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {Array} values The values to append.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayPush(array, values) {\n    var index = -1,\n        length = values.length,\n        offset = array.length;\n\n    while (++index < length) {\n      array[offset + index] = values[index];\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.reduce` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the first element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduce(array, iteratee, accumulator, initAccum) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    if (initAccum && length) {\n      accumulator = array[++index];\n    }\n    while (++index < length) {\n      accumulator = iteratee(accumulator, array[index], index, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.reduceRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.some` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if any element passes the predicate check,\n   *  else `false`.\n   */\n  function arraySome(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (predicate(array[index], index, array)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\n  /**\n   * Converts an ASCII `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\n\n  /**\n   * Splits an ASCII `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.findIndex` and `_.findLastIndex` without\n   * support for iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {number} fromIndex The index to search from.\n   * @param {boolean} [fromRight] Specify iterating from right to left.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseFindIndex(array, predicate, fromIndex, fromRight) {\n    var length = array.length,\n        index = fromIndex + (fromRight ? 1 : -1);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (predicate(array[index], index, array)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\n   * This function is like `baseIndexOf` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOfWith(array, value, fromIndex, comparator) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (comparator(array[index], value)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.isNaN` without support for number objects.\n   *\n   * @private\n   * @param {*} value The value to check.\n   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\n  /**\n   * The base implementation of `_.property` without support for deep paths.\n   *\n   * @private\n   * @param {string} key The key of the property to get.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.propertyOf` without support for deep paths.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.reduce` and `_.reduceRight`, without support\n   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} accumulator The initial value.\n   * @param {boolean} initAccum Specify using the first or last element of\n   *  `collection` as the initial value.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the accumulated value.\n   */\n  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n    eachFunc(collection, function(value, index, collection) {\n      accumulator = initAccum\n        ? (initAccum = false, value)\n        : iteratee(accumulator, value, index, collection);\n    });\n    return accumulator;\n  }\n\n  /**\n   * The base implementation of `_.sortBy` which uses `comparer` to define the\n   * sort order of `array` and replaces criteria objects with their corresponding\n   * values.\n   *\n   * @private\n   * @param {Array} array The array to sort.\n   * @param {Function} comparer The function to define sort order.\n   * @returns {Array} Returns `array`.\n   */\n  function baseSortBy(array, comparer) {\n    var length = array.length;\n\n    array.sort(comparer);\n    while (length--) {\n      array[length] = array[length].value;\n    }\n    return array;\n  }\n\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.times` without support for iteratee shorthands\n   * or max array length checks.\n   *\n   * @private\n   * @param {number} n The number of times to invoke `iteratee`.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the array of results.\n   */\n  function baseTimes(n, iteratee) {\n    var index = -1,\n        result = Array(n);\n\n    while (++index < n) {\n      result[index] = iteratee(index);\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\n\n  /**\n   * The base implementation of `_.trim`.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} Returns the trimmed string.\n   */\n  function baseTrim(string) {\n    return string\n      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n      : string;\n  }\n\n  /**\n   * The base implementation of `_.unary` without support for storing metadata.\n   *\n   * @private\n   * @param {Function} func The function to cap arguments for.\n   * @returns {Function} Returns the new capped function.\n   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\n  /**\n   * Checks if a `cache` value for `key` exists.\n   *\n   * @private\n   * @param {Object} cache The cache to query.\n   * @param {string} key The key of the entry to check.\n   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n   * letters to basic Latin letters.\n   *\n   * @private\n   * @param {string} letter The matched letter to deburr.\n   * @returns {string} Returns the deburred letter.\n   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\n  }\n\n  /**\n   * Gets the value at `key` of `object`.\n   *\n   * @private\n   * @param {Object} [object] The object to query.\n   * @param {string} key The key of the property to get.\n   * @returns {*} Returns the property value.\n   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\n\n  /**\n   * Checks if `string` contains Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\n\n  /**\n   * Checks if `string` contains a word composed of Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a word is found, else `false`.\n   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\n    }\n    return result;\n  }\n\n  /**\n   * Converts `map` to its key-value pairs.\n   *\n   * @private\n   * @param {Object} map The map to convert.\n   * @returns {Array} Returns the key-value pairs.\n   */\n  function mapToArray(map) {\n    var index = -1,\n        result = Array(map.size);\n\n    map.forEach(function(value, key) {\n      result[++index] = [key, value];\n    });\n    return result;\n  }\n\n  /**\n   * Creates a unary function that invokes `func` with its argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Converts `set` to an array of its values.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the values.\n   */\n  function setToArray(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = value;\n    });\n    return result;\n  }\n\n  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.indexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictIndexOf(array, value, fromIndex) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * A specialized version of `_.lastIndexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\n\n  /**\n   * Converts `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n   * character of `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the index of the last non-whitespace character.\n   */\n  function trimmedEndIndex(string) {\n    var index = string.length;\n\n    while (index-- && reWhitespace.test(string.charAt(index))) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts a Unicode `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\n\n  /**\n   * Splits a Unicode `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\n\n    /**\n     * Used to resolve the\n     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n     * of values.\n     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var dataViewCtorString = toSource(DataView),\n        mapCtorString = toSource(Map),\n        promiseCtorString = toSource(Promise),\n        setCtorString = toSource(Set),\n        weakMapCtorString = toSource(WeakMap);\n\n    /** Used to convert symbols to primitives and strings. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\n\n    /**\n     * The base implementation of `_.create` without support for assigning\n     * properties to the created object.\n     *\n     * @private\n     * @param {Object} proto The object to inherit from.\n     * @returns {Object} Returns the new object.\n     */\n    var baseCreate = (function() {\n      function object() {}\n      return function(proto) {\n        if (!isObject(proto)) {\n          return {};\n        }\n        if (objectCreate) {\n          return objectCreate(proto);\n        }\n        object.prototype = proto;\n        var result = new object;\n        object.prototype = undefined;\n        return result;\n      };\n    }());\n\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * **Security:** See\n     * [threat model](https://github.com/lodash/lodash/blob/main/threat-model.md)\n     * \u2014 `_.template` is insecure and will be removed in v5.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Hash(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the hash.\n     *\n     * @private\n     * @name delete\n     * @memberOf Hash\n     * @param {Object} hash The hash to modify.\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the hash value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Hash\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function hashGet(key) {\n      var data = this.__data__;\n      if (nativeCreate) {\n        var result = data[key];\n        return result === HASH_UNDEFINED ? undefined : result;\n      }\n      return hasOwnProperty.call(data, key) ? data[key] : undefined;\n    }\n\n    /**\n     * Checks if a hash value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Hash\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function hashHas(key) {\n      var data = this.__data__;\n      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n    }\n\n    /**\n     * Sets the hash `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Hash\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the hash instance.\n     */\n    function hashSet(key, value) {\n      var data = this.__data__;\n      this.size += this.has(key) ? 0 : 1;\n      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n      return this;\n    }\n\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function ListCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the list cache.\n     *\n     * @private\n     * @name delete\n     * @memberOf ListCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function listCacheDelete(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        return false;\n      }\n      var lastIndex = data.length - 1;\n      if (index == lastIndex) {\n        data.pop();\n      } else {\n        splice.call(data, index, 1);\n      }\n      --this.size;\n      return true;\n    }\n\n    /**\n     * Gets the list cache value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf ListCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function listCacheGet(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      return index < 0 ? undefined : data[index][1];\n    }\n\n    /**\n     * Checks if a list cache value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf ListCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function listCacheHas(key) {\n      return assocIndexOf(this.__data__, key) > -1;\n    }\n\n    /**\n     * Sets the list cache `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf ListCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the list cache instance.\n     */\n    function listCacheSet(key, value) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        ++this.size;\n        data.push([key, value]);\n      } else {\n        data[index][1] = value;\n      }\n      return this;\n    }\n\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a map cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function MapCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        'hash': new Hash,\n        'map': new (Map || ListCache),\n        'string': new Hash\n      };\n    }\n\n    /**\n     * Removes `key` and its value from the map.\n     *\n     * @private\n     * @name delete\n     * @memberOf MapCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the map value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf MapCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function mapCacheGet(key) {\n      return getMapData(this, key).get(key);\n    }\n\n    /**\n     * Checks if a map value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf MapCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function mapCacheHas(key) {\n      return getMapData(this, key).has(key);\n    }\n\n    /**\n     * Sets the map `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf MapCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the map cache instance.\n     */\n    function mapCacheSet(key, value) {\n      var data = getMapData(this, key),\n          size = data.size;\n\n      data.set(key, value);\n      this.size += data.size == size ? 0 : 1;\n      return this;\n    }\n\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     *\n     * Creates an array cache object to store unique values.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [values] The values to cache.\n     */\n    function SetCache(values) {\n      var index = -1,\n          length = values == null ? 0 : values.length;\n\n      this.__data__ = new MapCache;\n      while (++index < length) {\n        this.add(values[index]);\n      }\n    }\n\n    /**\n     * Adds `value` to the array cache.\n     *\n     * @private\n     * @name add\n     * @memberOf SetCache\n     * @alias push\n     * @param {*} value The value to cache.\n     * @returns {Object} Returns the cache instance.\n     */\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n\n    /**\n     * Checks if `value` is in the array cache.\n     *\n     * @private\n     * @name has\n     * @memberOf SetCache\n     * @param {*} value The value to search for.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a stack cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the stack.\n     *\n     * @private\n     * @name delete\n     * @memberOf Stack\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\n    }\n\n    /**\n     * Gets the stack value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Stack\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function stackGet(key) {\n      return this.__data__.get(key);\n    }\n\n    /**\n     * Checks if a stack value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Stack\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function stackHas(key) {\n      return this.__data__.has(key);\n    }\n\n    /**\n     * Sets the stack `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Stack\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the stack cache instance.\n     */\n    function stackSet(key, value) {\n      var data = this.__data__;\n      if (data instanceof ListCache) {\n        var pairs = data.__data__;\n        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n          pairs.push([key, value]);\n          this.size = ++data.size;\n          return this;\n        }\n        data = this.__data__ = new MapCache(pairs);\n      }\n      data.set(key, value);\n      this.size = data.size;\n      return this;\n    }\n\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of the enumerable property names of the array-like `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @param {boolean} inherited Specify returning inherited property names.\n     * @returns {Array} Returns the array of property names.\n     */\n    function arrayLikeKeys(value, inherited) {\n      var isArr = isArray(value),\n          isArg = !isArr && isArguments(value),\n          isBuff = !isArr && !isArg && isBuffer(value),\n          isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n          skipIndexes = isArr || isArg || isBuff || isType,\n          result = skipIndexes ? baseTimes(value.length, String) : [],\n          length = result.length;\n\n      for (var key in value) {\n        if ((inherited || hasOwnProperty.call(value, key)) &&\n            !(skipIndexes && (\n               // Safari 9 has enumerable `arguments.length` in strict mode.\n               key == 'length' ||\n               // Node.js 0.10 has enumerable non-index properties on buffers.\n               (isBuff && (key == 'offset' || key == 'parent')) ||\n               // PhantomJS 2 has enumerable non-index properties on typed arrays.\n               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n               // Skip index properties.\n               isIndex(key, length)\n            ))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\n\n    /**\n     * This function is like `assignValue` except that it doesn't assign\n     * `undefined` values.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignMergeValue(object, key, value) {\n      if ((value !== undefined && !eq(object[key], value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Assigns `value` to `key` of `object` if the existing value is not equivalent\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignValue(object, key, value) {\n      var objValue = object[key];\n      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Gets the index at which the `key` is found in `array` of key-value pairs.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {*} key The key to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     */\n    function assocIndexOf(array, key) {\n      var length = array.length;\n      while (length--) {\n        if (eq(array[length][0], key)) {\n          return length;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.assign` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\n\n    /**\n     * The base implementation of `_.assignIn` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\n\n    /**\n     * The base implementation of `assignValue` and `assignMergeValue` without\n     * value checks.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function baseAssignValue(object, key, value) {\n      if (key == '__proto__' && defineProperty) {\n        defineProperty(object, key, {\n          'configurable': true,\n          'enumerable': true,\n          'value': value,\n          'writable': true\n        });\n      } else {\n        object[key] = value;\n      }\n    }\n\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\n\n    /**\n     * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n     * traversed objects.\n     *\n     * @private\n     * @param {*} value The value to clone.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Deep clone\n     *  2 - Flatten inherited properties\n     *  4 - Clone symbols\n     * @param {Function} [customizer] The function to customize cloning.\n     * @param {string} [key] The key of `value`.\n     * @param {Object} [object] The parent object of `value`.\n     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n     * @returns {*} Returns the cloned value.\n     */\n    function baseClone(value, bitmask, customizer, key, object, stack) {\n      var result,\n          isDeep = bitmask & CLONE_DEEP_FLAG,\n          isFlat = bitmask & CLONE_FLAT_FLAG,\n          isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n      if (customizer) {\n        result = object ? customizer(value, key, object, stack) : customizer(value);\n      }\n      if (result !== undefined) {\n        return result;\n      }\n      if (!isObject(value)) {\n        return value;\n      }\n      var isArr = isArray(value);\n      if (isArr) {\n        result = initCloneArray(value);\n        if (!isDeep) {\n          return copyArray(value, result);\n        }\n      } else {\n        var tag = getTag(value),\n            isFunc = tag == funcTag || tag == genTag;\n\n        if (isBuffer(value)) {\n          return cloneBuffer(value, isDeep);\n        }\n        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n          result = (isFlat || isFunc) ? {} : initCloneObject(value);\n          if (!isDeep) {\n            return isFlat\n              ? copySymbolsIn(value, baseAssignIn(result, value))\n              : copySymbols(value, baseAssign(result, value));\n          }\n        } else {\n          if (!cloneableTags[tag]) {\n            return object ? value : {};\n          }\n          result = initCloneByTag(value, tag, isDeep);\n        }\n      }\n      // Check for circular references and return its corresponding clone.\n      stack || (stack = new Stack);\n      var stacked = stack.get(value);\n      if (stacked) {\n        return stacked;\n      }\n      stack.set(value, result);\n\n      if (isSet(value)) {\n        value.forEach(function(subValue) {\n          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n        });\n      } else if (isMap(value)) {\n        value.forEach(function(subValue, key) {\n          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n        });\n      }\n\n      var keysFunc = isFull\n        ? (isFlat ? getAllKeysIn : getAllKeys)\n        : (isFlat ? keysIn : keys);\n\n      var props = isArr ? undefined : keysFunc(value);\n      arrayEach(props || value, function(subValue, key) {\n        if (props) {\n          key = subValue;\n          subValue = value[key];\n        }\n        // Recursively populate clone (susceptible to call stack limits).\n        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\n\n    /**\n     * The base implementation of methods like `_.difference` without support\n     * for excluding multiple arrays or iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Array} values The values to exclude.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     */\n    function baseDifference(array, values, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          isCommon = true,\n          length = array.length,\n          result = [],\n          valuesLength = values.length;\n\n      if (!length) {\n        return result;\n      }\n      if (iteratee) {\n        values = arrayMap(values, baseUnary(iteratee));\n      }\n      if (comparator) {\n        includes = arrayIncludesWith;\n        isCommon = false;\n      }\n      else if (values.length >= LARGE_ARRAY_SIZE) {\n        includes = cacheHas;\n        isCommon = false;\n        values = new SetCache(values);\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee == null ? value : iteratee(value);\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var valuesIndex = valuesLength;\n          while (valuesIndex--) {\n            if (values[valuesIndex] === computed) {\n              continue outer;\n            }\n          }\n          result.push(value);\n        }\n        else if (!includes(values, computed, comparator)) {\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.forEach` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.flatten` with support for restricting flattening.\n     *\n     * @private\n     * @param {Array} array The array to flatten.\n     * @param {number} depth The maximum recursion depth.\n     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n     * @param {Array} [result=[]] The initial result value.\n     * @returns {Array} Returns the new flattened array.\n     */\n    function baseFlatten(array, depth, predicate, isStrict, result) {\n      var index = -1,\n          length = array.length;\n\n      predicate || (predicate = isFlattenable);\n      result || (result = []);\n\n      while (++index < length) {\n        var value = array[index];\n        if (depth > 0 && predicate(value)) {\n          if (depth > 1) {\n            // Recursively flatten arrays (susceptible to call stack limits).\n            baseFlatten(value, depth - 1, predicate, isStrict, result);\n          } else {\n            arrayPush(result, value);\n          }\n        } else if (!isStrict) {\n          result[result.length] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `baseForOwn` which iterates over `object`\n     * properties returned by `keysFunc` and invokes `iteratee` for each property.\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseForRight = createBaseFor(true);\n\n    /**\n     * The base implementation of `_.forOwn` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\n\n    /**\n     * The base implementation of `_.get` without support for default values.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseGet(object, path) {\n      path = castPath(path, object);\n\n      var index = 0,\n          length = path.length;\n\n      while (object != null && index < length) {\n        object = object[toKey(path[index++])];\n      }\n      return (index && index == length) ? object : undefined;\n    }\n\n    /**\n     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n     * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @param {Function} symbolsFunc The function to get the symbols of `object`.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\n\n    /**\n     * The base implementation of `getTag` without fallbacks for buggy environments.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    function baseGetTag(value) {\n      if (value == null) {\n        return value === undefined ? undefinedTag : nullTag;\n      }\n      return (symToStringTag && symToStringTag in Object(value))\n        ? getRawTag(value)\n        : objectToString(value);\n    }\n\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\n\n    /**\n     * The base implementation of `_.has` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\n\n    /**\n     * The base implementation of `_.hasIn` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\n\n    /**\n     * The base implementation of methods like `_.intersection`, without support\n     * for iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of shared values.\n     */\n    function baseIntersection(arrays, iteratee, comparator) {\n      var includes = comparator ? arrayIncludesWith : arrayIncludes,\n          length = arrays[0].length,\n          othLength = arrays.length,\n          othIndex = othLength,\n          caches = Array(othLength),\n          maxLength = Infinity,\n          result = [];\n\n      while (othIndex--) {\n        var array = arrays[othIndex];\n        if (othIndex && iteratee) {\n          array = arrayMap(array, baseUnary(iteratee));\n        }\n        maxLength = nativeMin(array.length, maxLength);\n        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n          ? new SetCache(othIndex && array)\n          : undefined;\n      }\n      array = arrays[0];\n\n      var index = -1,\n          seen = caches[0];\n\n      outer:\n      while (++index < length && result.length < maxLength) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (!(seen\n              ? cacheHas(seen, computed)\n              : includes(result, computed, comparator)\n            )) {\n          othIndex = othLength;\n          while (--othIndex) {\n            var cache = caches[othIndex];\n            if (!(cache\n                  ? cacheHas(cache, computed)\n                  : includes(arrays[othIndex], computed, comparator))\n                ) {\n              continue outer;\n            }\n          }\n          if (seen) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\n\n    /**\n     * The base implementation of `_.isArguments`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\n    }\n\n    /**\n     * The base implementation of `_.isEqual` which supports partial comparisons\n     * and tracks traversed objects.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Unordered comparison\n     *  2 - Partial comparison\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     */\n    function baseIsEqual(value, other, bitmask, customizer, stack) {\n      if (value === other) {\n        return true;\n      }\n      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n        return value !== value && other !== other;\n      }\n      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n    }\n\n    /**\n     * A specialized version of `baseIsEqual` for arrays and objects which performs\n     * deep comparisons and tracks traversed objects enabling objects with circular\n     * references to be compared.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n      var objIsArr = isArray(object),\n          othIsArr = isArray(other),\n          objTag = objIsArr ? arrayTag : getTag(object),\n          othTag = othIsArr ? arrayTag : getTag(other);\n\n      objTag = objTag == argsTag ? objectTag : objTag;\n      othTag = othTag == argsTag ? objectTag : othTag;\n\n      var objIsObj = objTag == objectTag,\n          othIsObj = othTag == objectTag,\n          isSameTag = objTag == othTag;\n\n      if (isSameTag && isBuffer(object)) {\n        if (!isBuffer(other)) {\n          return false;\n        }\n        objIsArr = true;\n        objIsObj = false;\n      }\n      if (isSameTag && !objIsObj) {\n        stack || (stack = new Stack);\n        return (objIsArr || isTypedArray(object))\n          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n      }\n      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n        if (objIsWrapped || othIsWrapped) {\n          var objUnwrapped = objIsWrapped ? object.value() : object,\n              othUnwrapped = othIsWrapped ? other.value() : other;\n\n          stack || (stack = new Stack);\n          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n        }\n      }\n      if (!isSameTag) {\n        return false;\n      }\n      stack || (stack = new Stack);\n      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n    }\n\n    /**\n     * The base implementation of `_.isMap` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\n\n    /**\n     * The base implementation of `_.isMatch` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Array} matchData The property names, values, and compare flags to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     */\n    function baseIsMatch(object, source, matchData, customizer) {\n      var index = matchData.length,\n          length = index,\n          noCustomizer = !customizer;\n\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (index--) {\n        var data = matchData[index];\n        if ((noCustomizer && data[2])\n              ? data[1] !== object[data[0]]\n              : !(data[0] in object)\n            ) {\n          return false;\n        }\n      }\n      while (++index < length) {\n        data = matchData[index];\n        var key = data[0],\n            objValue = object[key],\n            srcValue = data[1];\n\n        if (noCustomizer && data[2]) {\n          if (objValue === undefined && !(key in object)) {\n            return false;\n          }\n        } else {\n          var stack = new Stack;\n          if (customizer) {\n            var result = customizer(objValue, srcValue, key, object, source, stack);\n          }\n          if (!(result === undefined\n                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n                : result\n              )) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.isNative` without bad shim checks.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     */\n    function baseIsNative(value) {\n      if (!isObject(value) || isMasked(value)) {\n        return false;\n      }\n      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n      return pattern.test(toSource(value));\n    }\n\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\n\n    /**\n     * The base implementation of `_.isSet` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\n    }\n\n    /**\n     * The base implementation of `_.isTypedArray` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\n\n    /**\n     * The base implementation of `_.iteratee`.\n     *\n     * @private\n     * @param {*} [value=_.identity] The value to convert to an iteratee.\n     * @returns {Function} Returns the iteratee.\n     */\n    function baseIteratee(value) {\n      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n      if (typeof value == 'function') {\n        return value;\n      }\n      if (value == null) {\n        return identity;\n      }\n      if (typeof value == 'object') {\n        return isArray(value)\n          ? baseMatchesProperty(value[0], value[1])\n          : baseMatches(value);\n      }\n      return property(value);\n    }\n\n    /**\n     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeys(object) {\n      if (!isPrototype(object)) {\n        return nativeKeys(object);\n      }\n      var result = [];\n      for (var key in Object(object)) {\n        if (hasOwnProperty.call(object, key) && key != 'constructor') {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeysIn(object) {\n      if (!isObject(object)) {\n        return nativeKeysIn(object);\n      }\n      var isProto = isPrototype(object),\n          result = [];\n\n      for (var key in object) {\n        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\n\n    /**\n     * The base implementation of `_.map` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     */\n    function baseMap(collection, iteratee) {\n      var index = -1,\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value, key, collection) {\n        result[++index] = iteratee(value, key, collection);\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.matches` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatches(source) {\n      var matchData = getMatchData(source);\n      if (matchData.length == 1 && matchData[0][2]) {\n        return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n      }\n      return function(object) {\n        return object === source || baseIsMatch(object, source, matchData);\n      };\n    }\n\n    /**\n     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n     *\n     * @private\n     * @param {string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatchesProperty(path, srcValue) {\n      if (isKey(path) && isStrictComparable(srcValue)) {\n        return matchesStrictComparable(toKey(path), srcValue);\n      }\n      return function(object) {\n        var objValue = get(object, path);\n        return (objValue === undefined && objValue === srcValue)\n          ? hasIn(object, path)\n          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n      };\n    }\n\n    /**\n     * The base implementation of `_.merge` without support for multiple sources.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} [customizer] The function to customize merged values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMerge(object, source, srcIndex, customizer, stack) {\n      if (object === source) {\n        return;\n      }\n      baseFor(source, function(srcValue, key) {\n        stack || (stack = new Stack);\n        if (isObject(srcValue)) {\n          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n        }\n        else {\n          var newValue = customizer\n            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n            : undefined;\n\n          if (newValue === undefined) {\n            newValue = srcValue;\n          }\n          assignMergeValue(object, key, newValue);\n        }\n      }, keysIn);\n    }\n\n    /**\n     * A specialized version of `baseMerge` for arrays and objects which performs\n     * deep merges and tracks traversed objects enabling objects with circular\n     * references to be merged.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {string} key The key of the value to merge.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} mergeFunc The function to merge values.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n      var objValue = safeGet(object, key),\n          srcValue = safeGet(source, key),\n          stacked = stack.get(srcValue);\n\n      if (stacked) {\n        assignMergeValue(object, key, stacked);\n        return;\n      }\n      var newValue = customizer\n        ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      var isCommon = newValue === undefined;\n\n      if (isCommon) {\n        var isArr = isArray(srcValue),\n            isBuff = !isArr && isBuffer(srcValue),\n            isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n        newValue = srcValue;\n        if (isArr || isBuff || isTyped) {\n          if (isArray(objValue)) {\n            newValue = objValue;\n          }\n          else if (isArrayLikeObject(objValue)) {\n            newValue = copyArray(objValue);\n          }\n          else if (isBuff) {\n            isCommon = false;\n            newValue = cloneBuffer(srcValue, true);\n          }\n          else if (isTyped) {\n            isCommon = false;\n            newValue = cloneTypedArray(srcValue, true);\n          }\n          else {\n            newValue = [];\n          }\n        }\n        else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n          newValue = objValue;\n          if (isArguments(objValue)) {\n            newValue = toPlainObject(objValue);\n          }\n          else if (!isObject(objValue) || isFunction(objValue)) {\n            newValue = initCloneObject(srcValue);\n          }\n        }\n        else {\n          isCommon = false;\n        }\n      }\n      if (isCommon) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, newValue);\n        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n        stack['delete'](srcValue);\n      }\n      assignMergeValue(object, key, newValue);\n    }\n\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\n\n    /**\n     * The base implementation of `_.orderBy` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n     * @param {string[]} orders The sort orders of `iteratees`.\n     * @returns {Array} Returns the new sorted array.\n     */\n    function baseOrderBy(collection, iteratees, orders) {\n      if (iteratees.length) {\n        iteratees = arrayMap(iteratees, function(iteratee) {\n          if (isArray(iteratee)) {\n            return function(value) {\n              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n            };\n          }\n          return iteratee;\n        });\n      } else {\n        iteratees = [identity];\n      }\n\n      var index = -1;\n      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n      var result = baseMap(collection, function(value, key, collection) {\n        var criteria = arrayMap(iteratees, function(iteratee) {\n          return iteratee(value);\n        });\n        return { 'criteria': criteria, 'index': ++index, 'value': value };\n      });\n\n      return baseSortBy(result, function(object, other) {\n        return compareMultiple(object, other, orders);\n      });\n    }\n\n    /**\n     * The base implementation of `_.pick` without support for individual\n     * property identifiers.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Object} Returns the new object.\n     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\n\n    /**\n     * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @param {Function} predicate The function invoked per property.\n     * @returns {Object} Returns the new object.\n     */\n    function basePickBy(object, paths, predicate) {\n      var index = -1,\n          length = paths.length,\n          result = {};\n\n      while (++index < length) {\n        var path = paths[index],\n            value = baseGet(object, path);\n\n        if (predicate(value, path)) {\n          baseSet(result, castPath(path, object), value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseProperty` which supports deep paths.\n     *\n     * @private\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\n\n    /**\n     * The base implementation of `_.pullAllBy` without support for iteratee\n     * shorthands.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAll(array, values, iteratee, comparator) {\n      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n          index = -1,\n          length = values.length,\n          seen = array;\n\n      if (array === values) {\n        values = copyArray(values);\n      }\n      if (iteratee) {\n        seen = arrayMap(array, baseUnary(iteratee));\n      }\n      while (++index < length) {\n        var fromIndex = 0,\n            value = values[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n          if (seen !== array) {\n            splice.call(seen, fromIndex, 1);\n          }\n          splice.call(array, fromIndex, 1);\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\n\n    /**\n     * The base implementation of `_.range` and `_.rangeRight` which doesn't\n     * coerce arguments.\n     *\n     * @private\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} step The value to increment or decrement by.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the range of numbers.\n     */\n    function baseRange(start, end, step, fromRight) {\n      var index = -1,\n          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n          result = Array(length);\n\n      while (length--) {\n        result[fromRight ? length : ++index] = start;\n        start += step;\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.repeat` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {string} string The string to repeat.\n     * @param {number} n The number of times to repeat the string.\n     * @returns {string} Returns the repeated string.\n     */\n    function baseRepeat(string, n) {\n      var result = '';\n      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n        return result;\n      }\n      // Leverage the exponentiation by squaring algorithm for a faster repeat.\n      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n      do {\n        if (n % 2) {\n          result += string;\n        }\n        n = nativeFloor(n / 2);\n        if (n) {\n          string += string;\n        }\n      } while (n);\n\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * The base implementation of `_.set`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseSet(object, path, value, customizer) {\n      if (!isObject(object)) {\n        return object;\n      }\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          lastIndex = length - 1,\n          nested = object;\n\n      while (nested != null && ++index < length) {\n        var key = toKey(path[index]),\n            newValue = value;\n\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n          return object;\n        }\n\n        if (index != lastIndex) {\n          var objValue = nested[key];\n          newValue = customizer ? customizer(objValue, key, nested) : undefined;\n          if (newValue === undefined) {\n            newValue = isObject(objValue)\n              ? objValue\n              : (isIndex(path[index + 1]) ? [] : {});\n          }\n        }\n        assignValue(nested, key, newValue);\n        nested = nested[key];\n      }\n      return object;\n    }\n\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\n\n    /**\n     * The base implementation of `setToString` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetToString = !defineProperty ? identity : function(func, string) {\n      return defineProperty(func, 'toString', {\n        'configurable': true,\n        'enumerable': false,\n        'value': constant(string),\n        'writable': true\n      });\n    };\n\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.slice` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseSlice(array, start, end) {\n      var index = -1,\n          length = array.length;\n\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = end > length ? length : end;\n      if (end < 0) {\n        end += length;\n      }\n      length = start > end ? 0 : ((end - start) >>> 0);\n      start >>>= 0;\n\n      var result = Array(length);\n      while (++index < length) {\n        result[index] = array[index + start];\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.some` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     */\n    function baseSome(collection, predicate) {\n      var result;\n\n      baseEach(collection, function(value, index, collection) {\n        result = predicate(value, index, collection);\n        return !result;\n      });\n      return !!result;\n    }\n\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      var low = 0,\n          high = array == null ? 0 : array.length;\n      if (high === 0) {\n        return 0;\n      }\n\n      value = iteratee(value);\n      var valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\n\n    /**\n     * The base implementation of `_.toString` which doesn't convert nullish\n     * values to empty strings.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {string} Returns the string.\n     */\n    function baseToString(value) {\n      // Exit early for strings to avoid a performance hit in some environments.\n      if (typeof value == 'string') {\n        return value;\n      }\n      if (isArray(value)) {\n        // Recursively convert values (susceptible to call stack limits).\n        return arrayMap(value, baseToString) + '';\n      }\n      if (isSymbol(value)) {\n        return symbolToString ? symbolToString.call(value) : '';\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseUniq(array, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          length = array.length,\n          isCommon = true,\n          result = [],\n          seen = result;\n\n      if (comparator) {\n        isCommon = false;\n        includes = arrayIncludesWith;\n      }\n      else if (length >= LARGE_ARRAY_SIZE) {\n        var set = iteratee ? null : createSet(array);\n        if (set) {\n          return setToArray(set);\n        }\n        isCommon = false;\n        includes = cacheHas;\n        seen = new SetCache;\n      }\n      else {\n        seen = iteratee ? [] : result;\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var seenIndex = seen.length;\n          while (seenIndex--) {\n            if (seen[seenIndex] === computed) {\n              continue outer;\n            }\n          }\n          if (iteratee) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n        else if (!includes(seen, computed, comparator)) {\n          if (seen !== result) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.unset`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The property path to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n\n      // Prevent prototype pollution:\n      // https://github.com/lodash/lodash/security/advisories/GHSA-xxjr-mmjv-4gpg\n      // https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh\n      var index = -1,\n          length = path.length;\n\n      if (!length) {\n        return true;\n      }\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n\n        // Always block \"__proto__\" anywhere in the path if it's not expected\n        if (key === '__proto__' && !hasOwnProperty.call(object, '__proto__')) {\n          return false;\n        }\n\n        // Block constructor/prototype as non-terminal traversal keys to prevent\n        // escaping the object graph into built-in constructors and prototypes.\n        if ((key === 'constructor' || key === 'prototype') && index < length - 1) {\n          return false;\n        }\n      }\n\n      var obj = parent(object, path);\n      return obj == null || delete obj[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\n\n    /**\n     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n     *\n     * @private\n     * @param {Array} props The property identifiers.\n     * @param {Array} values The property values.\n     * @param {Function} assignFunc The function to assign values.\n     * @returns {Object} Returns the new object.\n     */\n    function baseZipObject(props, values, assignFunc) {\n      var index = -1,\n          length = props.length,\n          valsLength = values.length,\n          result = {};\n\n      while (++index < length) {\n        var value = index < valsLength ? values[index] : undefined;\n        assignFunc(result, props[index], value);\n      }\n      return result;\n    }\n\n    /**\n     * Casts `value` to an empty array if it's not an array like object.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Array|Object} Returns the cast array-like object.\n     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\n\n    /**\n     * Casts `value` to `identity` if it's not a function.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Function} Returns cast function.\n     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\n\n    /**\n     * Casts `value` to a path array if it's not one.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {Array} Returns the cast property path array.\n     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\n\n    /**\n     * Casts `array` to a slice if it's needed.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {number} start The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the cast slice.\n     */\n    function castSlice(array, start, end) {\n      var length = array.length;\n      end = end === undefined ? length : end;\n      return (!start && end >= length) ? array : baseSlice(array, start, end);\n    }\n\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\n\n    /**\n     * Creates a clone of  `buffer`.\n     *\n     * @private\n     * @param {Buffer} buffer The buffer to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Buffer} Returns the cloned buffer.\n     */\n    function cloneBuffer(buffer, isDeep) {\n      if (isDeep) {\n        return buffer.slice();\n      }\n      var length = buffer.length,\n          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n      buffer.copy(result);\n      return result;\n    }\n\n    /**\n     * Creates a clone of `arrayBuffer`.\n     *\n     * @private\n     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n     * @returns {ArrayBuffer} Returns the cloned array buffer.\n     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\n\n    /**\n     * Creates a clone of `dataView`.\n     *\n     * @private\n     * @param {Object} dataView The data view to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned data view.\n     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\n\n    /**\n     * Creates a clone of `regexp`.\n     *\n     * @private\n     * @param {Object} regexp The regexp to clone.\n     * @returns {Object} Returns the cloned regexp.\n     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\n\n    /**\n     * Creates a clone of the `symbol` object.\n     *\n     * @private\n     * @param {Object} symbol The symbol object to clone.\n     * @returns {Object} Returns the cloned symbol object.\n     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\n\n    /**\n     * Creates a clone of `typedArray`.\n     *\n     * @private\n     * @param {Object} typedArray The typed array to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned typed array.\n     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\n\n    /**\n     * Compares values to sort them in ascending order.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {number} Returns the sort order indicator for `value`.\n     */\n    function compareAscending(value, other) {\n      if (value !== other) {\n        var valIsDefined = value !== undefined,\n            valIsNull = value === null,\n            valIsReflexive = value === value,\n            valIsSymbol = isSymbol(value);\n\n        var othIsDefined = other !== undefined,\n            othIsNull = other === null,\n            othIsReflexive = other === other,\n            othIsSymbol = isSymbol(other);\n\n        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n            (valIsNull && othIsDefined && othIsReflexive) ||\n            (!valIsDefined && othIsReflexive) ||\n            !valIsReflexive) {\n          return 1;\n        }\n        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n            (othIsNull && valIsDefined && valIsReflexive) ||\n            (!othIsDefined && valIsReflexive) ||\n            !othIsReflexive) {\n          return -1;\n        }\n      }\n      return 0;\n    }\n\n    /**\n     * Used by `_.orderBy` to compare multiple properties of a value to another\n     * and stable sort them.\n     *\n     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n     * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n     * of corresponding values.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {boolean[]|string[]} orders The order to sort by for each property.\n     * @returns {number} Returns the sort order indicator for `object`.\n     */\n    function compareMultiple(object, other, orders) {\n      var index = -1,\n          objCriteria = object.criteria,\n          othCriteria = other.criteria,\n          length = objCriteria.length,\n          ordersLength = orders.length;\n\n      while (++index < length) {\n        var result = compareAscending(objCriteria[index], othCriteria[index]);\n        if (result) {\n          if (index >= ordersLength) {\n            return result;\n          }\n          var order = orders[index];\n          return result * (order == 'desc' ? -1 : 1);\n        }\n      }\n      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n      // that causes it, under certain circumstances, to provide the same value for\n      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n      // for more details.\n      //\n      // This also ensures a stable sort in V8 and other engines.\n      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n      return object.index - other.index;\n    }\n\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Copies the values of `source` to `array`.\n     *\n     * @private\n     * @param {Array} source The array to copy values from.\n     * @param {Array} [array=[]] The array to copy values to.\n     * @returns {Array} Returns `array`.\n     */\n    function copyArray(source, array) {\n      var index = -1,\n          length = source.length;\n\n      array || (array = Array(length));\n      while (++index < length) {\n        array[index] = source[index];\n      }\n      return array;\n    }\n\n    /**\n     * Copies properties of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy properties from.\n     * @param {Array} props The property identifiers to copy.\n     * @param {Object} [object={}] The object to copy properties to.\n     * @param {Function} [customizer] The function to customize copied values.\n     * @returns {Object} Returns `object`.\n     */\n    function copyObject(source, props, object, customizer) {\n      var isNew = !object;\n      object || (object = {});\n\n      var index = -1,\n          length = props.length;\n\n      while (++index < length) {\n        var key = props[index];\n\n        var newValue = customizer\n          ? customizer(object[key], source[key], key, object, source)\n          : undefined;\n\n        if (newValue === undefined) {\n          newValue = source[key];\n        }\n        if (isNew) {\n          baseAssignValue(object, key, newValue);\n        } else {\n          assignValue(object, key, newValue);\n        }\n      }\n      return object;\n    }\n\n    /**\n     * Copies own symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\n\n    /**\n     * Copies own and inherited symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\n\n    /**\n     * Creates a function like `_.assign`.\n     *\n     * @private\n     * @param {Function} assigner The function to assign values.\n     * @returns {Function} Returns the new assigner function.\n     */\n    function createAssigner(assigner) {\n      return baseRest(function(object, sources) {\n        var index = -1,\n            length = sources.length,\n            customizer = length > 1 ? sources[length - 1] : undefined,\n            guard = length > 2 ? sources[2] : undefined;\n\n        customizer = (assigner.length > 3 && typeof customizer == 'function')\n          ? (length--, customizer)\n          : undefined;\n\n        if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n          customizer = length < 3 ? undefined : customizer;\n          length = 1;\n        }\n        object = Object(object);\n        while (++index < length) {\n          var source = sources[index];\n          if (source) {\n            assigner(object, source, index, customizer);\n          }\n        }\n        return object;\n      });\n    }\n\n    /**\n     * Creates a `baseEach` or `baseEachRight` function.\n     *\n     * @private\n     * @param {Function} eachFunc The function to iterate over a collection.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseEach(eachFunc, fromRight) {\n      return function(collection, iteratee) {\n        if (collection == null) {\n          return collection;\n        }\n        if (!isArrayLike(collection)) {\n          return eachFunc(collection, iteratee);\n        }\n        var length = collection.length,\n            index = fromRight ? length : -1,\n            iterable = Object(collection);\n\n        while ((fromRight ? index-- : ++index < length)) {\n          if (iteratee(iterable[index], index, iterable) === false) {\n            break;\n          }\n        }\n        return collection;\n      };\n    }\n\n    /**\n     * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseFor(fromRight) {\n      return function(object, iteratee, keysFunc) {\n        var index = -1,\n            iterable = Object(object),\n            props = keysFunc(object),\n            length = props.length;\n\n        while (length--) {\n          var key = props[fromRight ? length : ++index];\n          if (iteratee(iterable[key], key, iterable) === false) {\n            break;\n          }\n        }\n        return object;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.lowerFirst`.\n     *\n     * @private\n     * @param {string} methodName The name of the `String` case method to use.\n     * @returns {Function} Returns the new case function.\n     */\n    function createCaseFirst(methodName) {\n      return function(string) {\n        string = toString(string);\n\n        var strSymbols = hasUnicode(string)\n          ? stringToArray(string)\n          : undefined;\n\n        var chr = strSymbols\n          ? strSymbols[0]\n          : string.charAt(0);\n\n        var trailing = strSymbols\n          ? castSlice(strSymbols, 1).join('')\n          : string.slice(1);\n\n        return chr[methodName]() + trailing;\n      };\n    }\n\n    /**\n     * Creates a function like `_.camelCase`.\n     *\n     * @private\n     * @param {Function} callback The function to combine each word.\n     * @returns {Function} Returns the new compounder function.\n     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.find` or `_.findLast` function.\n     *\n     * @private\n     * @param {Function} findIndexFunc The function to find the collection index.\n     * @returns {Function} Returns the new find function.\n     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(predicate, 3);\n          collection = keys(collection);\n          predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n        }\n        var index = findIndexFunc(collection, predicate, fromIndex);\n        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n      };\n    }\n\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.range` or `_.rangeRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new range function.\n     */\n    function createRange(fromRight) {\n      return function(start, end, step) {\n        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n          end = step = undefined;\n        }\n        // Ensure the sign of `-0` is preserved.\n        start = toFinite(start);\n        if (end === undefined) {\n          end = start;\n          start = 0;\n        } else {\n          end = toFinite(end);\n        }\n        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n        return baseRange(start, end, step, fromRight);\n      };\n    }\n\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\n\n    /**\n     * Creates a set object of `values`.\n     *\n     * @private\n     * @param {Array} values The values to add to the set.\n     * @returns {Object} Returns the new set.\n     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n     * objects into destination objects that are passed thru.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to merge.\n     * @param {Object} object The parent object of `objValue`.\n     * @param {Object} source The parent object of `srcValue`.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n      if (isObject(objValue) && isObject(srcValue)) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, objValue);\n        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n        stack['delete'](srcValue);\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n     * objects.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {string} key The key of the property to inspect.\n     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for arrays with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Array} array The array to compare.\n     * @param {Array} other The other array to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `array` and `other` objects.\n     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n     */\n    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          arrLength = array.length,\n          othLength = other.length;\n\n      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n        return false;\n      }\n      // Check that cyclic values are equal.\n      var arrStacked = stack.get(array);\n      var othStacked = stack.get(other);\n      if (arrStacked && othStacked) {\n        return arrStacked == other && othStacked == array;\n      }\n      var index = -1,\n          result = true,\n          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n      stack.set(array, other);\n      stack.set(other, array);\n\n      // Ignore non-index properties.\n      while (++index < arrLength) {\n        var arrValue = array[index],\n            othValue = other[index];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, arrValue, index, other, array, stack)\n            : customizer(arrValue, othValue, index, array, other, stack);\n        }\n        if (compared !== undefined) {\n          if (compared) {\n            continue;\n          }\n          result = false;\n          break;\n        }\n        // Recursively compare arrays (susceptible to call stack limits).\n        if (seen) {\n          if (!arraySome(other, function(othValue, othIndex) {\n                if (!cacheHas(seen, othIndex) &&\n                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n                  return seen.push(othIndex);\n                }\n              })) {\n            result = false;\n            break;\n          }\n        } else if (!(\n              arrValue === othValue ||\n                equalFunc(arrValue, othValue, bitmask, customizer, stack)\n            )) {\n          result = false;\n          break;\n        }\n      }\n      stack['delete'](array);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for comparing objects of\n     * the same `toStringTag`.\n     *\n     * **Note:** This function only supports comparing values with tags of\n     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {string} tag The `toStringTag` of the objects to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n      switch (tag) {\n        case dataViewTag:\n          if ((object.byteLength != other.byteLength) ||\n              (object.byteOffset != other.byteOffset)) {\n            return false;\n          }\n          object = object.buffer;\n          other = other.buffer;\n\n        case arrayBufferTag:\n          if ((object.byteLength != other.byteLength) ||\n              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n            return false;\n          }\n          return true;\n\n        case boolTag:\n        case dateTag:\n        case numberTag:\n          // Coerce booleans to `1` or `0` and dates to milliseconds.\n          // Invalid dates are coerced to `NaN`.\n          return eq(+object, +other);\n\n        case errorTag:\n          return object.name == other.name && object.message == other.message;\n\n        case regexpTag:\n        case stringTag:\n          // Coerce regexes to strings and treat strings, primitives and objects,\n          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n          // for more details.\n          return object == (other + '');\n\n        case mapTag:\n          var convert = mapToArray;\n\n        case setTag:\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n          convert || (convert = setToArray);\n\n          if (object.size != other.size && !isPartial) {\n            return false;\n          }\n          // Assume cyclic values are equal.\n          var stacked = stack.get(object);\n          if (stacked) {\n            return stacked == other;\n          }\n          bitmask |= COMPARE_UNORDERED_FLAG;\n\n          // Recursively compare objects (susceptible to call stack limits).\n          stack.set(object, other);\n          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n          stack['delete'](object);\n          return result;\n\n        case symbolTag:\n          if (symbolValueOf) {\n            return symbolValueOf.call(object) == symbolValueOf.call(other);\n          }\n      }\n      return false;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for objects with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          objProps = getAllKeys(object),\n          objLength = objProps.length,\n          othProps = getAllKeys(other),\n          othLength = othProps.length;\n\n      if (objLength != othLength && !isPartial) {\n        return false;\n      }\n      var index = objLength;\n      while (index--) {\n        var key = objProps[index];\n        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n          return false;\n        }\n      }\n      // Check that cyclic values are equal.\n      var objStacked = stack.get(object);\n      var othStacked = stack.get(other);\n      if (objStacked && othStacked) {\n        return objStacked == other && othStacked == object;\n      }\n      var result = true;\n      stack.set(object, other);\n      stack.set(other, object);\n\n      var skipCtor = isPartial;\n      while (++index < objLength) {\n        key = objProps[index];\n        var objValue = object[key],\n            othValue = other[key];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, objValue, key, other, object, stack)\n            : customizer(objValue, othValue, key, object, other, stack);\n        }\n        // Recursively compare objects (susceptible to call stack limits).\n        if (!(compared === undefined\n              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n              : compared\n            )) {\n          result = false;\n          break;\n        }\n        skipCtor || (skipCtor = key == 'constructor');\n      }\n      if (result && !skipCtor) {\n        var objCtor = object.constructor,\n            othCtor = other.constructor;\n\n        // Non `Object` object instances with different constructors are not equal.\n        if (objCtor != othCtor &&\n            ('constructor' in object && 'constructor' in other) &&\n            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n              typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n          result = false;\n        }\n      }\n      stack['delete'](object);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseRest` which flattens the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\n\n    /**\n     * Creates an array of own enumerable property names and symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\n\n    /**\n     * Creates an array of own and inherited enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : result;\n    }\n\n    /**\n     * Gets the data for `map`.\n     *\n     * @private\n     * @param {Object} map The map to query.\n     * @param {string} key The reference key.\n     * @returns {*} Returns the map data.\n     */\n    function getMapData(map, key) {\n      var data = map.__data__;\n      return isKeyable(key)\n        ? data[typeof key == 'string' ? 'string' : 'hash']\n        : data.map;\n    }\n\n    /**\n     * Gets the property names, values, and compare flags of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the match data of `object`.\n     */\n    function getMatchData(object) {\n      var result = keys(object),\n          length = result.length;\n\n      while (length--) {\n        var key = result[length],\n            value = object[key];\n\n        result[length] = [key, value, isStrictComparable(value)];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the native function at `key` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the method to get.\n     * @returns {*} Returns the function if it's native, else `undefined`.\n     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\n\n    /**\n     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the raw `toStringTag`.\n     */\n    function getRawTag(value) {\n      var isOwn = hasOwnProperty.call(value, symToStringTag),\n          tag = value[symToStringTag];\n\n      try {\n        value[symToStringTag] = undefined;\n        var unmasked = true;\n      } catch (e) {}\n\n      var result = nativeObjectToString.call(value);\n      if (unmasked) {\n        if (isOwn) {\n          value[symToStringTag] = tag;\n        } else {\n          delete value[symToStringTag];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array of the own enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n      if (object == null) {\n        return [];\n      }\n      object = Object(object);\n      return arrayFilter(nativeGetSymbols(object), function(symbol) {\n        return propertyIsEnumerable.call(object, symbol);\n      });\n    };\n\n    /**\n     * Creates an array of the own and inherited enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n      var result = [];\n      while (object) {\n        arrayPush(result, getSymbols(object));\n        object = getPrototype(object);\n      }\n      return result;\n    };\n\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n        (Map && getTag(new Map) != mapTag) ||\n        (Promise && getTag(Promise.resolve()) != promiseTag) ||\n        (Set && getTag(new Set) != setTag) ||\n        (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n      getTag = function(value) {\n        var result = baseGetTag(value),\n            Ctor = result == objectTag ? value.constructor : undefined,\n            ctorString = Ctor ? toSource(Ctor) : '';\n\n        if (ctorString) {\n          switch (ctorString) {\n            case dataViewCtorString: return dataViewTag;\n            case mapCtorString: return mapTag;\n            case promiseCtorString: return promiseTag;\n            case setCtorString: return setTag;\n            case weakMapCtorString: return weakMapTag;\n          }\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\n\n    /**\n     * Checks if `path` exists on `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @param {Function} hasFunc The function to check properties.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     */\n    function hasPath(object, path, hasFunc) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          result = false;\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n        if (!(result = object != null && hasFunc(object, key))) {\n          break;\n        }\n        object = object[key];\n      }\n      if (result || ++index != length) {\n        return result;\n      }\n      length = object == null ? 0 : object.length;\n      return !!length && isLength(length) && isIndex(key, length) &&\n        (isArray(object) || isArguments(object));\n    }\n\n    /**\n     * Initializes an array clone.\n     *\n     * @private\n     * @param {Array} array The array to clone.\n     * @returns {Array} Returns the initialized clone.\n     */\n    function initCloneArray(array) {\n      var length = array.length,\n          result = new array.constructor(length);\n\n      // Add properties assigned by `RegExp#exec`.\n      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n        result.index = array.index;\n        result.input = array.input;\n      }\n      return result;\n    }\n\n    /**\n     * Initializes an object clone.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\n\n    /**\n     * Initializes an object clone based on its `toStringTag`.\n     *\n     * **Note:** This function only supports cloning values with tags of\n     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @param {string} tag The `toStringTag` of the object to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneByTag(object, tag, isDeep) {\n      var Ctor = object.constructor;\n      switch (tag) {\n        case arrayBufferTag:\n          return cloneArrayBuffer(object);\n\n        case boolTag:\n        case dateTag:\n          return new Ctor(+object);\n\n        case dataViewTag:\n          return cloneDataView(object, isDeep);\n\n        case float32Tag: case float64Tag:\n        case int8Tag: case int16Tag: case int32Tag:\n        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n          return cloneTypedArray(object, isDeep);\n\n        case mapTag:\n          return new Ctor;\n\n        case numberTag:\n        case stringTag:\n          return new Ctor(object);\n\n        case regexpTag:\n          return cloneRegExp(object);\n\n        case setTag:\n          return new Ctor;\n\n        case symbolTag:\n          return cloneSymbol(object);\n      }\n    }\n\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\n\n    /**\n     * Checks if `value` is a flattenable `arguments` object or array.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like index.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n     */\n    function isIndex(value, length) {\n      var type = typeof value;\n      length = length == null ? MAX_SAFE_INTEGER : length;\n\n      return !!length &&\n        (type == 'number' ||\n          (type != 'symbol' && reIsUint.test(value))) &&\n            (value > -1 && value % 1 == 0 && value < length);\n    }\n\n    /**\n     * Checks if the given arguments are from an iteratee call.\n     *\n     * @private\n     * @param {*} value The potential iteratee value argument.\n     * @param {*} index The potential iteratee index or key argument.\n     * @param {*} object The potential iteratee object argument.\n     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n     *  else `false`.\n     */\n    function isIterateeCall(value, index, object) {\n      if (!isObject(object)) {\n        return false;\n      }\n      var type = typeof index;\n      if (type == 'number'\n            ? (isArrayLike(object) && isIndex(index, object.length))\n            : (type == 'string' && index in object)\n          ) {\n        return eq(object[index], value);\n      }\n      return false;\n    }\n\n    /**\n     * Checks if `value` is a property name and not a property path.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n     */\n    function isKey(value, object) {\n      if (isArray(value)) {\n        return false;\n      }\n      var type = typeof value;\n      if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n          value == null || isSymbol(value)) {\n        return true;\n      }\n      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n        (object != null && value in Object(object));\n    }\n\n    /**\n     * Checks if `value` is suitable for use as unique object key.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n     */\n    function isKeyable(value) {\n      var type = typeof value;\n      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n        ? (value !== '__proto__')\n        : (value === null);\n    }\n\n    /**\n     * Checks if `func` has a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\n    }\n\n    /**\n     * Checks if `func` has its source masked.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\n\n    /**\n     * Checks if `value` is likely a prototype object.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n     */\n    function isPrototype(value) {\n      var Ctor = value && value.constructor,\n          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n      return value === proto;\n    }\n\n    /**\n     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` if suitable for strict\n     *  equality comparisons, else `false`.\n     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\n    /**\n     * A specialized version of `matchesProperty` for source values suitable\n     * for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {string} key The key of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function matchesStrictComparable(key, srcValue) {\n      return function(object) {\n        if (object == null) {\n          return false;\n        }\n        return object[key] === srcValue &&\n          (srcValue !== undefined || (key in Object(object)));\n      };\n    }\n\n    /**\n     * A specialized version of `_.memoize` which clears the memoized function's\n     * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n     *\n     * @private\n     * @param {Function} func The function to have its output memoized.\n     * @returns {Function} Returns the new memoized function.\n     */\n    function memoizeCapped(func) {\n      var result = memoize(func, function(key) {\n        if (cache.size === MAX_MEMOIZE_SIZE) {\n          cache.clear();\n        }\n        return key;\n      });\n\n      var cache = result.cache;\n      return result;\n    }\n\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\n    /**\n     * This function is like\n     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * except that it includes inherited enumerable properties.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function nativeKeysIn(object) {\n      var result = [];\n      if (object != null) {\n        for (var key in Object(object)) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a string using `Object.prototype.toString`.\n     *\n     * @private\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\n\n    /**\n     * A specialized version of `baseRest` which transforms the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @param {Function} transform The rest array transform.\n     * @returns {Function} Returns the new function.\n     */\n    function overRest(func, start, transform) {\n      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n      return function() {\n        var args = arguments,\n            index = -1,\n            length = nativeMax(args.length - start, 0),\n            array = Array(length);\n\n        while (++index < length) {\n          array[index] = args[start + index];\n        }\n        index = -1;\n        var otherArgs = Array(start + 1);\n        while (++index < start) {\n          otherArgs[index] = args[index];\n        }\n        otherArgs[start] = transform(array);\n        return apply(func, this, otherArgs);\n      };\n    }\n\n    /**\n     * Gets the parent value at `path` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array} path The path to get the parent value of.\n     * @returns {*} Returns the parent value.\n     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\n    /**\n     * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the property to get.\n     * @returns {*} Returns the property value.\n     */\n    function safeGet(object, key) {\n      if (key === 'constructor' && typeof object[key] === 'function') {\n        return;\n      }\n\n      if (key == '__proto__') {\n        return;\n      }\n\n      return object[key];\n    }\n\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\n\n    /**\n     * Sets the `toString` method of `func` to return `string`.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\n\n    /**\n     * Creates a function that'll short out and invoke `identity` instead\n     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n     * milliseconds.\n     *\n     * @private\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new shortable function.\n     */\n    function shortOut(func) {\n      var count = 0,\n          lastCalled = 0;\n\n      return function() {\n        var stamp = nativeNow(),\n            remaining = HOT_SPAN - (stamp - lastCalled);\n\n        lastCalled = stamp;\n        if (remaining > 0) {\n          if (++count >= HOT_COUNT) {\n            return arguments[0];\n          }\n        } else {\n          count = 0;\n        }\n        return func.apply(undefined, arguments);\n      };\n    }\n\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\n\n    /**\n     * Converts `string` to a property path array.\n     *\n     * @private\n     * @param {string} string The string to convert.\n     * @returns {Array} Returns the property path array.\n     */\n    var stringToPath = memoizeCapped(function(string) {\n      var result = [];\n      if (string.charCodeAt(0) === 46 /* . */) {\n        result.push('');\n      }\n      string.replace(rePropName, function(match, number, quote, subString) {\n        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n      });\n      return result;\n    });\n\n    /**\n     * Converts `value` to a string key if it's not a string or symbol.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {string|symbol} Returns the key.\n     */\n    function toKey(value) {\n      if (typeof value == 'string' || isSymbol(value)) {\n        return value;\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * Converts `func` to its source code.\n     *\n     * @private\n     * @param {Function} func The function to convert.\n     * @returns {string} Returns the source code.\n     */\n    function toSource(func) {\n      if (func != null) {\n        try {\n          return funcToString.call(func);\n        } catch (e) {}\n        try {\n          return (func + '');\n        } catch (e) {}\n      }\n      return '';\n    }\n\n    /**\n     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `-0`, `0n`, `\"\"`, `undefined`, and `NaN` are falsy.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\n      var index = -1,\n          length = array == null ? 0 : array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index];\n        if (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\n\n    /**\n     * Creates an array of `array` values not included in the other given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * **Note:** Unlike `_.pullAll`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.without, _.xor\n     * @example\n     *\n     * _.difference([2, 1], [2, 3]);\n     * // => [1]\n     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\n\n    /**\n     * This method is like `_.find` except that it returns the index of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.findIndex(users, function(o) { return o.user == 'barney'; });\n     * // => 0\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findIndex(users, { 'user': 'fred', 'active': false });\n     * // => 1\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findIndex(users, ['active', false]);\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findIndex(users, 'active');\n     * // => 2\n     */\n    function findIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\n\n    /**\n     * Flattens `array` a single level deep.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flatten([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, [3, [4]], 5]\n     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\n\n    /**\n     * Recursively flattens `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flattenDeep([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, 3, 4, 5]\n     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\n    }\n\n    /**\n     * The inverse of `_.toPairs`; this method returns an object composed\n     * from key-value `pairs`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        baseAssignValue(result, pair[0], pair[1]);\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\n\n    /**\n     * Creates an array of unique values that are included in all given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersection([2, 1], [2, 3]);\n     * // => [2]\n     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `comparator`\n     * which is invoked to compare elements of `arrays`. The order and references\n     * of result values are determined by the first array. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.intersectionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }]\n     */\n    var intersectionWith = baseRest(function(arrays) {\n      var comparator = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      if (comparator) {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\n\n    /**\n     * Gets the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the last element of `array`.\n     * @example\n     *\n     * _.last([1, 2, 3]);\n     * // => 3\n     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\n\n    /**\n     * This method is like `_.pull` except that it accepts an array of values to remove.\n     *\n     * **Note:** Unlike `_.difference`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pullAll(array, ['a', 'c']);\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\n\n    /**\n     * Creates an array of unique values, in order, from all given arrays using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.union([2], [1, 2]);\n     * // => [2, 1]\n     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\n\n    /**\n     * Creates a duplicate-free version of an array, using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons, in which only the first occurrence of each element\n     * is kept. The order of result values is determined by the order they occur\n     * in the array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniq([2, 1, 2]);\n     * // => [2, 1]\n     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `comparator` which\n     * is invoked to compare elements of `array`. The order of result values is\n     * determined by the order they occur in the array.The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.uniqWith(objects, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\n\n    /**\n     * Creates an array excluding all given values using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.pull`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...*} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.xor\n     * @example\n     *\n     * _.without([2, 1, 2, 3], 1, 2);\n     * // => [3]\n     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\n\n    /**\n     * This method is like `_.fromPairs` except that it accepts two arrays,\n     * one of property identifiers and one of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.4.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObject(['a', 'b'], [1, 2]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     *\n     * // Combining several predicates using `_.overEvery` or `_.overSome`.\n     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n     * // => objects for ['fred', 'barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning the first element\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': true },\n     *   { 'user': 'fred',    'age': 40, 'active': false },\n     *   { 'user': 'pebbles', 'age': 1,  'active': true }\n     * ];\n     *\n     * _.find(users, function(o) { return o.age < 40; });\n     * // => object for 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.find(users, { 'age': 1, 'active': true });\n     * // => object for 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.find(users, ['active', false]);\n     * // => object for 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.find(users, 'active');\n     * // => object for 'barney'\n     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\n\n    /**\n     * Iterates over elements of `collection` and invokes `iteratee` for each element.\n     * The iteratee is invoked with three arguments: (value, index|key, collection).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n     * property are iterated like arrays. To avoid this behavior use `_.forIn`\n     * or `_.forOwn` for object iteration.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias each\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEachRight\n     * @example\n     *\n     * _.forEach([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `1` then `2`.\n     *\n     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\n\n    /**\n     * Reduces `collection` to a value which is the accumulated result of running\n     * each element in `collection` thru `iteratee`, where each successive\n     * invocation is supplied the return value of the previous. If `accumulator`\n     * is not given, the first element of `collection` is used as the initial\n     * value. The iteratee is invoked with four arguments:\n     * (accumulator, value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.reduce`, `_.reduceRight`, and `_.transform`.\n     *\n     * The guarded methods are:\n     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n     * and `sortBy`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduceRight\n     * @example\n     *\n     * _.reduce([1, 2], function(sum, n) {\n     *   return sum + n;\n     * }, 0);\n     * // => 3\n     *\n     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     *   return result;\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\n\n    /**\n     * Checks if `predicate` returns truthy for **any** element of `collection`.\n     * Iteration is stopped once `predicate` returns truthy. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.some([null, 0, 'yes', false], Boolean);\n     * // => true\n     *\n     * var users = [\n     *   { 'user': 'barney', 'active': true },\n     *   { 'user': 'fred',   'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.some(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.some(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.some(users, 'active');\n     * // => true\n     */\n    function some(collection, predicate, guard) {\n      var func = isArray(collection) ? arraySome : baseSome;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Creates an array of elements, sorted in ascending order by the results of\n     * running each element in a collection thru each iteratee. This method\n     * performs a stable sort, that is, it preserves the original sort order of\n     * equal elements. The iteratees are invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 30 },\n     *   { 'user': 'barney', 'age': 34 }\n     * ];\n     *\n     * _.sortBy(users, [function(o) { return o.user; }]);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n     *\n     * _.sortBy(users, ['user', 'age']);\n     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n     */\n    var sortBy = baseRest(function(collection, iteratees) {\n      if (collection == null) {\n        return [];\n      }\n      var length = iteratees.length;\n      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n        iteratees = [];\n      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n        iteratees = [iteratees[0]];\n      }\n      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Gets the timestamp of the number of milliseconds that have elapsed since\n     * the Unix epoch (1 January 1970 00:00:00 UTC).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Date\n     * @returns {number} Returns the timestamp.\n     * @example\n     *\n     * _.defer(function(stamp) {\n     *   console.log(_.now() - stamp);\n     * }, _.now());\n     * // => Logs the number of milliseconds it took for the deferred invocation.\n     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\n    }\n\n    /**\n     * Creates a debounced function that delays invoking `func` until after `wait`\n     * milliseconds have elapsed since the last time the debounced function was\n     * invoked. The debounced function comes with a `cancel` method to cancel\n     * delayed `func` invocations and a `flush` method to immediately invoke them.\n     * Provide `options` to indicate whether `func` should be invoked on the\n     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n     * with the last arguments provided to the debounced function. Subsequent\n     * calls to the debounced function return the result of the last `func`\n     * invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the debounced function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.debounce` and `_.throttle`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to debounce.\n     * @param {number} [wait=0] The number of milliseconds to delay.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=false]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {number} [options.maxWait]\n     *  The maximum time `func` is allowed to be delayed before it's invoked.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new debounced function.\n     * @example\n     *\n     * // Avoid costly calculations while the window size is in flux.\n     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n     *\n     * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n     * jQuery(element).on('click', _.debounce(sendMail, 300, {\n     *   'leading': true,\n     *   'trailing': false\n     * }));\n     *\n     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n     * var source = new EventSource('/stream');\n     * jQuery(source).on('message', debounced);\n     *\n     * // Cancel the trailing debounced invocation.\n     * jQuery(window).on('popstate', debounced.cancel);\n     */\n    function debounce(func, wait, options) {\n      var lastArgs,\n          lastThis,\n          maxWait,\n          result,\n          timerId,\n          lastCallTime,\n          lastInvokeTime = 0,\n          leading = false,\n          maxing = false,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      wait = toNumber(wait) || 0;\n      if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = 'maxWait' in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n\n      function invokeFunc(time) {\n        var args = lastArgs,\n            thisArg = lastThis;\n\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n      }\n\n      function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n      }\n\n      function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime,\n            timeWaiting = wait - timeSinceLastCall;\n\n        return maxing\n          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n          : timeWaiting;\n      }\n\n      function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime;\n\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n      }\n\n      function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n          return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n      }\n\n      function trailingEdge(time) {\n        timerId = undefined;\n\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n          return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n      }\n\n      function cancel() {\n        if (timerId !== undefined) {\n          clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n      }\n\n      function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n      }\n\n      function debounced() {\n        var time = now(),\n            isInvoking = shouldInvoke(time);\n\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n\n        if (isInvoking) {\n          if (timerId === undefined) {\n            return leadingEdge(lastCallTime);\n          }\n          if (maxing) {\n            // Handle invocations in a tight loop.\n            clearTimeout(timerId);\n            timerId = setTimeout(timerExpired, wait);\n            return invokeFunc(lastCallTime);\n          }\n        }\n        if (timerId === undefined) {\n          timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n      }\n      debounced.cancel = cancel;\n      debounced.flush = flush;\n      return debounced;\n    }\n\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\n\n    /**\n     * Creates a function that memoizes the result of `func`. If `resolver` is\n     * provided, it determines the cache key for storing the result based on the\n     * arguments provided to the memoized function. By default, the first argument\n     * provided to the memoized function is used as the map cache key. The `func`\n     * is invoked with the `this` binding of the memoized function.\n     *\n     * **Note:** The cache is exposed as the `cache` property on the memoized\n     * function. Its creation may be customized by replacing the `_.memoize.Cache`\n     * constructor with one whose instances implement the\n     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n     * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to have its output memoized.\n     * @param {Function} [resolver] The function to resolve the cache key.\n     * @returns {Function} Returns the new memoized function.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     * var other = { 'c': 3, 'd': 4 };\n     *\n     * var values = _.memoize(_.values);\n     * values(object);\n     * // => [1, 2]\n     *\n     * values(other);\n     * // => [3, 4]\n     *\n     * object.a = 2;\n     * values(object);\n     * // => [1, 2]\n     *\n     * // Modify the result cache.\n     * values.cache.set(object, ['a', 'b']);\n     * values(object);\n     * // => ['a', 'b']\n     *\n     * // Replace `_.memoize.Cache`.\n     * _.memoize.Cache = WeakMap;\n     */\n    function memoize(func, resolver) {\n      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var memoized = function() {\n        var args = arguments,\n            key = resolver ? resolver.apply(this, args) : args[0],\n            cache = memoized.cache;\n\n        if (cache.has(key)) {\n          return cache.get(key);\n        }\n        var result = func.apply(this, args);\n        memoized.cache = cache.set(key, result) || cache;\n        return result;\n      };\n      memoized.cache = new (memoize.Cache || MapCache);\n      return memoized;\n    }\n\n    // Expose `MapCache`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * This method is like `_.clone` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.clone\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var deep = _.cloneDeep(objects);\n     * console.log(deep[0] === objects[0]);\n     * // => false\n     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\n    }\n\n    /**\n     * Performs a\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * comparison between two values to determine if they are equivalent.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.eq(object, object);\n     * // => true\n     *\n     * _.eq(object, other);\n     * // => false\n     *\n     * _.eq('a', 'a');\n     * // => true\n     *\n     * _.eq('a', Object('a'));\n     * // => false\n     *\n     * _.eq(NaN, NaN);\n     * // => true\n     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= other;\n    });\n\n    /**\n     * Checks if `value` is likely an `arguments` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArguments(function() { return arguments; }());\n     * // => true\n     *\n     * _.isArguments([1, 2, 3]);\n     * // => false\n     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\n    };\n\n    /**\n     * Checks if `value` is classified as an `Array` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n     * @example\n     *\n     * _.isArray([1, 2, 3]);\n     * // => true\n     *\n     * _.isArray(document.body.children);\n     * // => false\n     *\n     * _.isArray('abc');\n     * // => false\n     *\n     * _.isArray(_.noop);\n     * // => false\n     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n    /**\n     * Checks if `value` is array-like. A value is considered array-like if it's\n     * not a function and has a `value.length` that's an integer greater than or\n     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n     * @example\n     *\n     * _.isArrayLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLike(document.body.children);\n     * // => true\n     *\n     * _.isArrayLike('abc');\n     * // => true\n     *\n     * _.isArrayLike(_.noop);\n     * // => false\n     */\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\n\n    /**\n     * This method is like `_.isArrayLike` except that it also checks if `value`\n     * is an object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array-like object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArrayLikeObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLikeObject(document.body.children);\n     * // => true\n     *\n     * _.isArrayLikeObject('abc');\n     * // => false\n     *\n     * _.isArrayLikeObject(_.noop);\n     * // => false\n     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a boolean primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n     * @example\n     *\n     * _.isBoolean(false);\n     * // => true\n     *\n     * _.isBoolean(null);\n     * // => false\n     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\n\n    /**\n     * Checks if `value` is a buffer.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n     * @example\n     *\n     * _.isBuffer(new Buffer(2));\n     * // => true\n     *\n     * _.isBuffer(new Uint8Array(2));\n     * // => false\n     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\n\n    /**\n     * Checks if `value` is an empty object, collection, map, or set.\n     *\n     * Objects are considered empty if they have no own enumerable string keyed\n     * properties.\n     *\n     * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n     * jQuery-like collections are considered empty if they have a `length` of `0`.\n     * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n     * @example\n     *\n     * _.isEmpty(null);\n     * // => true\n     *\n     * _.isEmpty(true);\n     * // => true\n     *\n     * _.isEmpty(1);\n     * // => true\n     *\n     * _.isEmpty([1, 2, 3]);\n     * // => false\n     *\n     * _.isEmpty({ 'a': 1 });\n     * // => false\n     */\n    function isEmpty(value) {\n      if (value == null) {\n        return true;\n      }\n      if (isArrayLike(value) &&\n          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n            isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n        return !value.length;\n      }\n      var tag = getTag(value);\n      if (tag == mapTag || tag == setTag) {\n        return !value.size;\n      }\n      if (isPrototype(value)) {\n        return !baseKeys(value).length;\n      }\n      for (var key in value) {\n        if (hasOwnProperty.call(value, key)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * Performs a deep comparison between two values to determine if they are\n     * equivalent.\n     *\n     * **Note:** This method supports comparing arrays, array buffers, booleans,\n     * date objects, error objects, maps, numbers, `Object` objects, regexes,\n     * sets, strings, symbols, and typed arrays. `Object` objects are compared\n     * by their own, not inherited, enumerable properties. Functions and DOM\n     * nodes are compared by strict equality, i.e. `===`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.isEqual(object, other);\n     * // => true\n     *\n     * object === other;\n     * // => false\n     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n\n    /**\n     * This method is like `_.isEqual` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with up to\n     * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, othValue) {\n     *   if (isGreeting(objValue) && isGreeting(othValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var array = ['hello', 'goodbye'];\n     * var other = ['hi', 'goodbye'];\n     *\n     * _.isEqualWith(array, other, customizer);\n     * // => true\n     */\n    function isEqualWith(value, other, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      var result = customizer ? customizer(value, other) : undefined;\n      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n    }\n\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Function` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n     * @example\n     *\n     * _.isFunction(_);\n     * // => true\n     *\n     * _.isFunction(/abc/);\n     * // => false\n     */\n    function isFunction(value) {\n      if (!isObject(value)) {\n        return false;\n      }\n      // The use of `Object#toString` avoids issues with the `typeof` operator\n      // in Safari 9 which returns 'object' for typed arrays and other constructors.\n      var tag = baseGetTag(value);\n      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n    }\n\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like length.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n     * @example\n     *\n     * _.isLength(3);\n     * // => true\n     *\n     * _.isLength(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isLength(Infinity);\n     * // => false\n     *\n     * _.isLength('3');\n     * // => false\n     */\n    function isLength(value) {\n      return typeof value == 'number' &&\n        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is the\n     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n     * @example\n     *\n     * _.isObject({});\n     * // => true\n     *\n     * _.isObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isObject(_.noop);\n     * // => true\n     *\n     * _.isObject(null);\n     * // => false\n     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (type == 'object' || type == 'function');\n    }\n\n    /**\n     * Checks if `value` is object-like. A value is object-like if it's not `null`\n     * and has a `typeof` result of \"object\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n     * @example\n     *\n     * _.isObjectLike({});\n     * // => true\n     *\n     * _.isObjectLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isObjectLike(_.noop);\n     * // => false\n     *\n     * _.isObjectLike(null);\n     * // => false\n     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\n\n    /**\n     * Checks if `value` is classified as a `Map` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     * @example\n     *\n     * _.isMap(new Map);\n     * // => true\n     *\n     * _.isMap(new WeakMap);\n     * // => false\n     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\n\n    /**\n     * Checks if `value` is `null` or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n     * @example\n     *\n     * _.isNil(null);\n     * // => true\n     *\n     * _.isNil(void 0);\n     * // => true\n     *\n     * _.isNil(NaN);\n     * // => false\n     */\n    function isNil(value) {\n      return value == null;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Number` primitive or object.\n     *\n     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n     * classified as numbers, use the `_.isFinite` method.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n     * @example\n     *\n     * _.isNumber(3);\n     * // => true\n     *\n     * _.isNumber(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isNumber(Infinity);\n     * // => true\n     *\n     * _.isNumber('3');\n     * // => false\n     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\n\n    /**\n     * Checks if `value` is a plain object, that is, an object created by the\n     * `Object` constructor or one with a `[[Prototype]]` of `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.8.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * _.isPlainObject(new Foo);\n     * // => false\n     *\n     * _.isPlainObject([1, 2, 3]);\n     * // => false\n     *\n     * _.isPlainObject({ 'x': 0, 'y': 0 });\n     * // => true\n     *\n     * _.isPlainObject(Object.create(null));\n     * // => true\n     */\n    function isPlainObject(value) {\n      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n        return false;\n      }\n      var proto = getPrototype(value);\n      if (proto === null) {\n        return true;\n      }\n      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n      return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n        funcToString.call(Ctor) == objectCtorString;\n    }\n\n    /**\n     * Checks if `value` is classified as a `RegExp` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Set` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     * @example\n     *\n     * _.isSet(new Set);\n     * // => true\n     *\n     * _.isSet(new WeakSet);\n     * // => false\n     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n    /**\n     * Checks if `value` is classified as a `String` primitive or object.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n     * @example\n     *\n     * _.isString('abc');\n     * // => true\n     *\n     * _.isString(1);\n     * // => false\n     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Symbol` primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n     * @example\n     *\n     * _.isSymbol(Symbol.iterator);\n     * // => true\n     *\n     * _.isSymbol('abc');\n     * // => false\n     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a typed array.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     * @example\n     *\n     * _.isTypedArray(new Uint8Array);\n     * // => true\n     *\n     * _.isTypedArray([]);\n     * // => false\n     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\n\n    /**\n     * Converts `value` to a finite number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.12.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted number.\n     * @example\n     *\n     * _.toFinite(3.2);\n     * // => 3.2\n     *\n     * _.toFinite(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toFinite(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toFinite('3.2');\n     * // => 3.2\n     */\n    function toFinite(value) {\n      if (!value) {\n        return value === 0 ? value : 0;\n      }\n      value = toNumber(value);\n      if (value === INFINITY || value === -INFINITY) {\n        var sign = (value < 0 ? -1 : 1);\n        return sign * MAX_INTEGER;\n      }\n      return value === value ? value : 0;\n    }\n\n    /**\n     * Converts `value` to an integer.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toInteger(3.2);\n     * // => 3\n     *\n     * _.toInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toInteger(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toInteger('3.2');\n     * // => 3\n     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n    }\n\n    /**\n     * Converts `value` to a number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     * @example\n     *\n     * _.toNumber(3.2);\n     * // => 3.2\n     *\n     * _.toNumber(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toNumber(Infinity);\n     * // => Infinity\n     *\n     * _.toNumber('3.2');\n     * // => 3.2\n     */\n    function toNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      if (isObject(value)) {\n        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n        value = isObject(other) ? (other + '') : other;\n      }\n      if (typeof value != 'string') {\n        return value === 0 ? value : +value;\n      }\n      value = baseTrim(value);\n      var isBinary = reIsBinary.test(value);\n      return (isBinary || reIsOctal.test(value))\n        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n        : (reIsBadHex.test(value) ? NAN : +value);\n    }\n\n    /**\n     * Converts `value` to a plain object flattening inherited enumerable string\n     * keyed properties of `value` to own properties of the plain object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Object} Returns the converted plain object.\n     * @example\n     *\n     * function Foo() {\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.assign({ 'a': 1 }, new Foo);\n     * // => { 'a': 1, 'b': 2 }\n     *\n     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n     * // => { 'a': 1, 'b': 2, 'c': 3 }\n     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\n\n    /**\n     * Converts `value` to a string. An empty string is returned for `null`\n     * and `undefined` values. The sign of `-0` is preserved.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.toString(null);\n     * // => ''\n     *\n     * _.toString(-0);\n     * // => '-0'\n     *\n     * _.toString([1, 2, 3]);\n     * // => '1,2,3'\n     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Assigns own enumerable string keyed properties of source objects to the\n     * destination object. Source objects are applied from left to right.\n     * Subsequent sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object` and is loosely based on\n     * [`Object.assign`](https://mdn.io/Object/assign).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assignIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assign({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var assign = createAssigner(function(object, source) {\n      if (isPrototype(source) || isArrayLike(source)) {\n        copyObject(source, keys(source), object);\n        return;\n      }\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          assignValue(object, key, source[key]);\n        }\n      }\n    });\n\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\n\n    /**\n     * Assigns own and inherited enumerable string keyed properties of source\n     * objects to the destination object for all destination properties that\n     * resolve to `undefined`. Source objects are applied from left to right.\n     * Once a property is set, additional values of the same property are ignored.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaultsDeep\n     * @example\n     *\n     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var defaults = baseRest(function(object, sources) {\n      object = Object(object);\n\n      var index = -1;\n      var length = sources.length;\n      var guard = length > 2 ? sources[2] : undefined;\n\n      if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n        length = 1;\n      }\n\n      while (++index < length) {\n        var source = sources[index];\n        var props = keysIn(source);\n        var propsIndex = -1;\n        var propsLength = props.length;\n\n        while (++propsIndex < propsLength) {\n          var key = props[propsIndex];\n          var value = object[key];\n\n          if (value === undefined ||\n              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n            object[key] = source[key];\n          }\n        }\n      }\n\n      return object;\n    });\n\n    /**\n     * This method is like `_.defaults` except that it recursively assigns\n     * default properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaults\n     * @example\n     *\n     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n     * // => { 'a': { 'b': 2, 'c': 3 } }\n     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\n\n    /**\n     * Gets the value at `path` of `object`. If the resolved value is\n     * `undefined`, the `defaultValue` is returned in its place.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.get(object, 'a[0].b.c');\n     * // => 3\n     *\n     * _.get(object, ['a', '0', 'b', 'c']);\n     * // => 3\n     *\n     * _.get(object, 'a.b.c', 'default');\n     * // => 'default'\n     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\n\n    /**\n     * Checks if `path` is a direct property of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = { 'a': { 'b': 2 } };\n     * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.has(object, 'a');\n     * // => true\n     *\n     * _.has(object, 'a.b');\n     * // => true\n     *\n     * _.has(object, ['a', 'b']);\n     * // => true\n     *\n     * _.has(other, 'a');\n     * // => false\n     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\n\n    /**\n     * Checks if `path` is a direct or inherited property of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.hasIn(object, 'a');\n     * // => true\n     *\n     * _.hasIn(object, 'a.b');\n     * // => true\n     *\n     * _.hasIn(object, ['a', 'b']);\n     * // => true\n     *\n     * _.hasIn(object, 'b');\n     * // => false\n     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\n\n    /**\n     * Creates an array of the own enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects. See the\n     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * for more details.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keys(new Foo);\n     * // => ['a', 'b'] (iteration order is not guaranteed)\n     *\n     * _.keys('hi');\n     * // => ['0', '1']\n     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keysIn(new Foo);\n     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\n\n    /**\n     * Creates an object with the same keys as `object` and values generated\n     * by running each own enumerable string keyed property of `object` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapKeys\n     * @example\n     *\n     * var users = {\n     *   'fred':    { 'user': 'fred',    'age': 40 },\n     *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n     * };\n     *\n     * _.mapValues(users, function(o) { return o.age; });\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.mapValues(users, 'age');\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\n\n    /**\n     * This method is like `_.assign` except that it recursively merges own and\n     * inherited enumerable string keyed properties of source objects into the\n     * destination object. Source properties that resolve to `undefined` are\n     * skipped if a destination value exists. Array and plain object properties\n     * are merged recursively. Other objects and value types are overridden by\n     * assignment. Source objects are applied from left to right. Subsequent\n     * sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {\n     *   'a': [{ 'b': 2 }, { 'd': 4 }]\n     * };\n     *\n     * var other = {\n     *   'a': [{ 'c': 3 }, { 'e': 5 }]\n     * };\n     *\n     * _.merge(object, other);\n     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\n\n    /**\n     * This method is like `_.merge` except that it accepts `customizer` which\n     * is invoked to produce the merged values of the destination and source\n     * properties. If `customizer` returns `undefined`, merging is handled by the\n     * method instead. The `customizer` is invoked with six arguments:\n     * (objValue, srcValue, key, object, source, stack).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} customizer The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (_.isArray(objValue)) {\n     *     return objValue.concat(srcValue);\n     *   }\n     * }\n     *\n     * var object = { 'a': [1], 'b': [2] };\n     * var other = { 'a': [3], 'b': [4] };\n     *\n     * _.mergeWith(object, other, customizer);\n     * // => { 'a': [1, 3], 'b': [2, 4] }\n     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\n\n    /**\n     * The opposite of `_.pick`; this method creates an object composed of the\n     * own and inherited enumerable property paths of `object` that are not omitted.\n     *\n     * **Note:** This method is considerably slower than `_.pick`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to omit.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omit(object, ['a', 'c']);\n     * // => { 'b': '2' }\n     */\n    var omit = flatRest(function(object, paths) {\n      var result = {};\n      if (object == null) {\n        return result;\n      }\n      var isDeep = false;\n      paths = arrayMap(paths, function(path) {\n        path = castPath(path, object);\n        isDeep || (isDeep = path.length > 1);\n        return path;\n      });\n      copyObject(object, getAllKeysIn(object), result);\n      if (isDeep) {\n        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n      }\n      var length = paths.length;\n      while (length--) {\n        baseUnset(result, paths[length]);\n      }\n      return result;\n    });\n\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\n\n    /**\n     * Creates an object composed of the picked `object` properties.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pick(object, ['a', 'c']);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\n\n    /**\n     * Creates an object composed of the `object` properties `predicate` returns\n     * truthy for. The predicate is invoked with two arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pickBy(object, _.isNumber);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\n\n    /**\n     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n     * it's created. Arrays are created for missing index properties while objects\n     * are created for all other missing properties. Use `_.setWith` to customize\n     * `path` creation.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.set(object, 'a[0].b.c', 4);\n     * console.log(object.a[0].b.c);\n     * // => 4\n     *\n     * _.set(object, ['x', '0', 'y', 'z'], 5);\n     * console.log(object.x[0].y.z);\n     * // => 5\n     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\n\n    /**\n     * This method is like `_.set` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.setWith(object, '[0][1]', 'a', Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\n\n    /**\n     * An alternative to `_.reduce`; this method transforms `object` to a new\n     * `accumulator` object which is the result of running each of its own\n     * enumerable string keyed properties thru `iteratee`, with each invocation\n     * potentially mutating the `accumulator` object. If `accumulator` is not\n     * provided, a new object with the same `[[Prototype]]` will be used. The\n     * iteratee is invoked with four arguments: (accumulator, value, key, object).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The custom accumulator value.\n     * @returns {*} Returns the accumulated value.\n     * @example\n     *\n     * _.transform([2, 3, 4], function(result, n) {\n     *   result.push(n *= n);\n     *   return n % 2 == 0;\n     * }, []);\n     * // => [4, 9]\n     *\n     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(iteratee, 4);\n      if (accumulator == null) {\n        var Ctor = object && object.constructor;\n        if (isArrLike) {\n          accumulator = isArr ? new Ctor : [];\n        }\n        else if (isObject(object)) {\n          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n        }\n        else {\n          accumulator = {};\n        }\n      }\n      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n        return iteratee(accumulator, value, index, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * Removes the property at `path` of `object`.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n     * _.unset(object, 'a[0].b.c');\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     *\n     * _.unset(object, ['a', '0', 'b', 'c']);\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * **Note:** If `lower` is greater than `upper`, the values are swapped.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * // when lower is greater than upper the values are swapped\n     * _.random(5, 0);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(-5);\n     * // => an integer between -5 and 0\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the camel cased string.\n     * @example\n     *\n     * _.camelCase('Foo Bar');\n     * // => 'fooBar'\n     *\n     * _.camelCase('--foo-bar--');\n     * // => 'fooBar'\n     *\n     * _.camelCase('__FOO_BAR__');\n     * // => 'fooBar'\n     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\n\n    /**\n     * Converts the first character of `string` to upper case and the remaining\n     * to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to capitalize.\n     * @returns {string} Returns the capitalized string.\n     * @example\n     *\n     * _.capitalize('FRED');\n     * // => 'Fred'\n     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\n\n    /**\n     * Deburrs `string` by converting\n     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n     * letters to basic Latin letters and removing\n     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to deburr.\n     * @returns {string} Returns the deburred string.\n     * @example\n     *\n     * _.deburr('d\u00E9j\u00E0 vu');\n     * // => 'deja vu'\n     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\n\n    /**\n     * Repeats the given string `n` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to repeat.\n     * @param {number} [n=1] The number of times to repeat the string.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the repeated string.\n     * @example\n     *\n     * _.repeat('*', 3);\n     * // => '***'\n     *\n     * _.repeat('abc', 2);\n     * // => 'abcabc'\n     *\n     * _.repeat('abc', 0);\n     * // => ''\n     */\n    function repeat(string, n, guard) {\n      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      return baseRepeat(toString(string), n);\n    }\n\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Security:** `_.template` is insecure and should not be used. It will be\n     * removed in Lodash v5. Avoid untrusted input. See\n     * [threat model](https://github.com/lodash/lodash/blob/main/threat-model.md).\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      arrayEach(importsKeys, function(key) {\n        if (reForbiddenIdentifierChars.test(key)) {\n          throw new Error(INVALID_TEMPL_IMPORTS_ERROR_TEXT);\n        }\n      });\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n      // and escape the comment, thus injecting code that gets evaled.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/\\s/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Throw an error if a forbidden character was found in `variable`, to prevent\n      // potential command injection attacks.\n      else if (reForbiddenIdentifierChars.test(variable)) {\n        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n      }\n\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\n\n    /**\n     * Converts `string`, as a whole, to lower case just like\n     * [String#toLowerCase](https://mdn.io/toLowerCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.toLower('--Foo-Bar--');\n     * // => '--foo-bar--'\n     *\n     * _.toLower('fooBar');\n     * // => 'foobar'\n     *\n     * _.toLower('__FOO_BAR__');\n     * // => '__foo_bar__'\n     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return baseTrim(string);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.slice(0, trimmedEndIndex(string) + 1);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\n\n    /**\n     * Converts the first character of `string` to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.upperFirst('fred');\n     * // => 'Fred'\n     *\n     * _.upperFirst('FRED');\n     * // => 'FRED'\n     */\n    var upperFirst = createCaseFirst('toUpperCase');\n\n    /**\n     * Splits `string` into an array of its words.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {RegExp|string} [pattern] The pattern to match words.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the words of `string`.\n     * @example\n     *\n     * _.words('fred, barney, & pebbles');\n     * // => ['fred', 'barney', 'pebbles']\n     *\n     * _.words('fred, barney, & pebbles', /[^, ]+/g);\n     * // => ['fred', 'barney', '&', 'pebbles']\n     */\n    function words(string, pattern, guard) {\n      string = toString(string);\n      pattern = guard ? undefined : pattern;\n\n      if (pattern === undefined) {\n        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n      }\n      return string.match(pattern) || [];\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that returns `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {*} value The value to return from the new function.\n     * @returns {Function} Returns the new constant function.\n     * @example\n     *\n     * var objects = _.times(2, _.constant({ 'a': 1 }));\n     *\n     * console.log(objects);\n     * // => [{ 'a': 1 }, { 'a': 1 }]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => true\n     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\n\n    /**\n     * This method returns the first argument it receives.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {*} value Any value.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     *\n     * console.log(_.identity(object) === object);\n     * // => true\n     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\n    /**\n     * This method returns `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Util\n     * @example\n     *\n     * _.times(2, _.noop);\n     * // => [undefined, undefined]\n     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     *\n     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n     */\n    var overSome = createOver(arraySome);\n\n    /**\n     * Creates a function that returns the value at `path` of a given object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': 2 } },\n     *   { 'a': { 'b': 1 } }\n     * ];\n     *\n     * _.map(objects, _.property('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n     * // => [1, 2]\n     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\n\n    /**\n     * Creates an array of numbers (positive and/or negative) progressing from\n     * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n     * `start` is specified without an `end` or `step`. If `end` is not specified,\n     * it's set to `start` with `start` then set to `0`.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.rangeRight\n     * @example\n     *\n     * _.range(4);\n     * // => [0, 1, 2, 3]\n     *\n     * _.range(-4);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 5);\n     * // => [1, 2, 3, 4]\n     *\n     * _.range(0, 20, 5);\n     * // => [0, 5, 10, 15]\n     *\n     * _.range(0, -4, -1);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.range(0);\n     * // => []\n     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\n    /**\n     * This method returns a new empty array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Array} Returns the new empty array.\n     * @example\n     *\n     * var arrays = _.times(2, _.stubArray);\n     *\n     * console.log(arrays);\n     * // => [[], []]\n     *\n     * console.log(arrays[0] === arrays[1]);\n     * // => false\n     */\n    function stubArray() {\n      return [];\n    }\n\n    /**\n     * This method returns `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `false`.\n     * @example\n     *\n     * _.times(2, _.stubFalse);\n     * // => [false, false]\n     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\n\n    /**\n     * Invokes the iteratee `n` times, returning an array of the results of\n     * each invocation. The iteratee is invoked with one argument; (index).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} n The number of times to invoke `iteratee`.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.times(3, String);\n     * // => ['0', '1', '2']\n     *\n     *  _.times(4, _.constant(0));\n     * // => [0, 0, 0, 0]\n     */\n    function times(n, iteratee) {\n      n = toInteger(n);\n      if (n < 1 || n > MAX_SAFE_INTEGER) {\n        return [];\n      }\n      var index = MAX_ARRAY_LENGTH,\n          length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n      iteratee = getIteratee(iteratee);\n      n -= MAX_ARRAY_LENGTH;\n\n      var result = baseTimes(length, iteratee);\n      while (++index < n) {\n        iteratee(index);\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a property path array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the new property path array.\n     * @example\n     *\n     * _.toPath('a.b.c');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toPath('a[0].b.c');\n     * // => ['a', '0', 'b', 'c']\n     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\n\n    /**\n     * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {string} [prefix=''] The value to prefix the ID with.\n     * @returns {string} Returns the unique ID.\n     * @example\n     *\n     * _.uniqueId('contact_');\n     * // => 'contact_104'\n     *\n     * _.uniqueId();\n     * // => '105'\n     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    define(function() {\n      return _;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else if (freeModule) {\n    // Export for Node.js.\n    (freeModule.exports = _)._ = _;\n    // Export for CommonJS support.\n    freeExports._ = _;\n  }\n  else {\n    // Export to the global object.\n    root._ = _;\n  }\n}.call(this));\n", "/* UAParser.js v1.0.41\n   Copyright \u00A9 2012-2025 Faisal Salman <f@faisalman.com>\n   MIT License */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"1.0.41\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\",UA_MAX_LENGTH=500;var AMAZON=\"Amazon\",APPLE=\"Apple\",ASUS=\"ASUS\",BLACKBERRY=\"BlackBerry\",BROWSER=\"Browser\",CHROME=\"Chrome\",EDGE=\"Edge\",FIREFOX=\"Firefox\",GOOGLE=\"Google\",HONOR=\"Honor\",HUAWEI=\"Huawei\",LENOVO=\"Lenovo\",LG=\"LG\",MICROSOFT=\"Microsoft\",MOTOROLA=\"Motorola\",NVIDIA=\"Nvidia\",ONEPLUS=\"OnePlus\",OPERA=\"Opera\",OPPO=\"OPPO\",SAMSUNG=\"Samsung\",SHARP=\"Sharp\",SONY=\"Sony\",XIAOMI=\"Xiaomi\",ZEBRA=\"Zebra\",FACEBOOK=\"Facebook\",CHROMIUM_OS=\"Chromium OS\",MAC_OS=\"Mac OS\",SUFFIX_BROWSER=\" Browser\";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i<arr.length;i++){enums[arr[i].toUpperCase()]=arr[i]}return enums},has=function(str1,str2){return typeof str1===STR_TYPE?lowerize(str2).indexOf(lowerize(str1))!==-1:false},lowerize=function(str){return str.toLowerCase()},majorize=function(version){return typeof version===STR_TYPE?version.replace(/[^\\d\\.]/g,EMPTY).split(\".\")[0]:undefined},trim=function(str,len){if(typeof str===STR_TYPE){str=str.replace(/^\\s\\s*/,EMPTY);return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var rgxMapper=function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){if(!regex[j]){break}matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(has(map[i][j],str)){return i===UNKNOWN?undefined:i}}}else if(has(map[i],str)){return i===UNKNOWN?undefined:i}}return map.hasOwnProperty(\"*\")?map[\"*\"]:str};var oldSafariMap={\"1.0\":\"/8\",1.2:\"/1\",1.3:\"/3\",\"2.0\":\"/412\",\"2.0.2\":\"/416\",\"2.0.3\":\"/417\",\"2.0.4\":\"/419\",\"?\":\"/\"},windowsVersionMap={ME:\"4.90\",\"NT 3.11\":\"NT3.51\",\"NT 4.0\":\"NT4.0\",2e3:\"NT 5.0\",XP:[\"NT 5.1\",\"NT 5.2\"],Vista:\"NT 6.0\",7:\"NT 6.1\",8:\"NT 6.2\",8.1:\"NT 6.3\",10:[\"NT 6.4\",\"NT 10.0\"],RT:\"ARM\"};var regexes={browser:[[/\\b(?:crmo|crios)\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Chrome\"]],[/edg(?:e|ios|a)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Edge\"]],[/(opera mini)\\/([-\\w\\.]+)/i,/(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,/(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i],[NAME,VERSION],[/opios[\\/ ]+([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Mini\"]],[/\\bop(?:rg)?x\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" GX\"]],[/\\bopr\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA]],[/\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i],[VERSION,[NAME,\"Baidu\"]],[/\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i],[VERSION,[NAME,\"Maxthon\"]],[/(kindle)\\/([\\w\\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i,/(?:ms|\\()(ie) ([\\w\\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\\/([-\\w\\.]+)/i,/(heytap|ovi|115)browser\\/([\\d\\.]+)/i,/(weibo)__([\\d\\.]+)/i],[NAME,VERSION],[/quark(?:pc)?\\/([-\\w\\.]+)/i],[VERSION,[NAME,\"Quark\"]],[/\\bddg\\/([\\w\\.]+)/i],[VERSION,[NAME,\"DuckDuckGo\"]],[/(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i],[VERSION,[NAME,\"UC\"+BROWSER]],[/microm.+\\bqbcore\\/([\\w\\.]+)/i,/\\bqbcore\\/([\\w\\.]+).+microm/i,/micromessenger\\/([\\w\\.]+)/i],[VERSION,[NAME,\"WeChat\"]],[/konqueror\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Konqueror\"]],[/trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i],[VERSION,[NAME,\"IE\"]],[/ya(?:search)?browser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Yandex\"]],[/slbrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Smart Lenovo \"+BROWSER]],[/(avast|avg)\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1 Secure \"+BROWSER],VERSION],[/\\bfocus\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" Focus\"]],[/\\bopt\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Touch\"]],[/coc_coc\\w+\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Coc Coc\"]],[/dolfin\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Dolphin\"]],[/coast\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Coast\"]],[/miuibrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"MIUI\"+SUFFIX_BROWSER]],[/fxios\\/([\\w\\.-]+)/i],[VERSION,[NAME,FIREFOX]],[/\\bqihoobrowser\\/?([\\w\\.]*)/i],[VERSION,[NAME,\"360\"]],[/\\b(qq)\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1Browser\"],VERSION],[/(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1\"+SUFFIX_BROWSER],VERSION],[/samsungbrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,SAMSUNG+\" Internet\"]],[/metasr[\\/ ]?([\\d\\.]+)/i],[VERSION,[NAME,\"Sogou Explorer\"]],[/(sogou)mo\\w+\\/([\\d\\.]+)/i],[[NAME,\"Sogou Mobile\"],VERSION],[/(electron)\\/([\\w\\.]+) safari/i,/(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i],[NAME,VERSION],[/(lbbrowser|rekonq)/i,/\\[(linkedin)app\\]/i],[NAME],[/ome\\/([\\w\\.]+) \\w* ?(iron) saf/i,/ome\\/([\\w\\.]+).+qihu (360)[es]e/i],[VERSION,NAME],[/((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i],[[NAME,FACEBOOK],VERSION],[/(Klarna)\\/([\\w\\.]+)/i,/(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,/(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,/(daum)apps[\\/ ]([\\w\\.]+)/i,/safari (line)\\/([\\w\\.]+)/i,/\\b(line)\\/([\\w\\.]+)\\/iab/i,/(alipay)client\\/([\\w\\.]+)/i,/(twitter)(?:and| f.+e\\/([\\w\\.]+))/i,/(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i],[NAME,VERSION],[/\\bgsa\\/([\\w\\.]+) .*safari\\//i],[VERSION,[NAME,\"GSA\"]],[/musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i],[VERSION,[NAME,\"TikTok\"]],[/headlesschrome(?:\\/([\\w\\.]+)| )/i],[VERSION,[NAME,CHROME+\" Headless\"]],[/ wv\\).+(chrome)\\/([\\w\\.]+)/i],[[NAME,CHROME+\" WebView\"],VERSION],[/droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,\"Android \"+BROWSER]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i],[NAME,VERSION],[/version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i],[VERSION,[NAME,\"Mobile Safari\"]],[/version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i],[NAME,[VERSION,strMapper,oldSafariMap]],[/(webkit|khtml)\\/([\\w\\.]+)/i],[NAME,VERSION],[/(navigator|netscape\\d?)\\/([-\\w\\.]+)/i],[[NAME,\"Netscape\"],VERSION],[/(wolvic|librewolf)\\/([\\w\\.]+)/i],[NAME,VERSION],[/mobile vr; rv:([\\w\\.]+)\\).+firefox/i],[VERSION,[NAME,FIREFOX+\" Reality\"]],[/ekiohf.+(flow)\\/([\\w\\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,/(firefox)\\/([\\w\\.]+)/i,/(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,/(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,/\\b(links) \\(([\\w\\.]+)/i],[NAME,[VERSION,/_/g,\".\"]],[/(cobalt)\\/([\\w\\.]+)/i],[NAME,[VERSION,/master.|lts./,\"\"]]],cpu:[[/\\b((amd|x|x86[-_]?|wow|win)64)\\b/i],[[ARCHITECTURE,\"amd64\"]],[/(ia32(?=;))/i,/\\b((i[346]|x)86)(pc)?\\b/i],[[ARCHITECTURE,\"ia32\"]],[/\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i],[[ARCHITECTURE,\"arm64\"]],[/\\b(arm(v[67])?ht?n?[fl]p?)\\b/i],[[ARCHITECTURE,\"armhf\"]],[/( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i],[[ARCHITECTURE,\"arm\"]],[/((ppc|powerpc)(64)?)( mac|;|\\))/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/ sun4\\w[;\\)]/i],[[ARCHITECTURE,\"sparc\"]],[/\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i],[[ARCHITECTURE,lowerize]]],device:[[/\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\\w]+)/i,/sec-(sgh\\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\\((ipad);[-\\w\\),; ]+apple/i,/applecoremedia\\/[\\w\\.]+ \\((ipad)/i,/\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/(macintosh);/i],[MODEL,[VENDOR,APPLE]],[/\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i],[MODEL,[VENDOR,SHARP],[TYPE,MOBILE]],[/\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i],[MODEL,[VENDOR,HONOR],[TYPE,TABLET]],[/honor([-\\w ]+)[;\\)]/i],[MODEL,[VENDOR,HONOR],[TYPE,MOBILE]],[/\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei)([-\\w ]+)[;\\)]/i,/\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,/\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,TABLET]],[/\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i,/\\b; (\\w+) build\\/hm\\1/i,/\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,/\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,/oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i,/\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i,/ ([\\w ]+) miui\\/v?\\d/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/; (\\w+) bui.+ oppo/i,/\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i],[MODEL,[VENDOR,OPPO],[TYPE,MOBILE]],[/\\b(opd2(\\d{3}a?))(?: bui|\\))/i],[MODEL,[VENDOR,strMapper,{OnePlus:[\"304\",\"403\",\"203\"],\"*\":OPPO}],[TYPE,TABLET]],[/vivo (\\w+)(?: bui|\\))/i,/\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,\"Vivo\"],[TYPE,MOBILE]],[/\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i],[MODEL,[VENDOR,\"Realme\"],[TYPE,MOBILE]],[/\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,/\\bmot(?:orola)?[- ](\\w*)/i,/((?:moto(?! 360)[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,/\\blg[-e;\\/ ]+((?!browser|netcast|android tv|watch)\\w+)/i,/\\blg-?([\\d\\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i],[MODEL,[VENDOR,LENOVO],[TYPE,TABLET]],[/(nokia) (t[12][01])/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,/nokia[-_ ]?(([-\\w\\. ]*))/i],[[MODEL,/_/g,\" \"],[TYPE,MOBILE],[VENDOR,\"Nokia\"]],[/(pixel (c|tablet))\\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\\b(?:sony)?sgp\\w+(?: bui|\\))/i],[[MODEL,\"Xperia Tablet\"],[VENDOR,SONY],[TYPE,TABLET]],[/ (kb2005|in20[12]5|be20[12][59])\\b/i,/(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i],[MODEL,[VENDOR,ONEPLUS],[TYPE,MOBILE]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i,/(kf[a-z]+)( bui|\\)).+silk\\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i],[[MODEL,/(.+)/g,\"Fire Phone $1\"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\\w\\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\\b((?:bb[a-f]|st[hv])100-\\d)/i,/\\(bb10; (\\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,\"HTC\"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,/(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i],[VENDOR,[MODEL,/_/g,\" \"],[TYPE,MOBILE]],[/droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\\w*(\\)| bui)/i],[MODEL,[VENDOR,\"TCL\"],[TYPE,TABLET]],[/(itel) ((\\w+))/i],[[VENDOR,lowerize],MODEL,[TYPE,strMapper,{tablet:[\"p10001l\",\"w7001\"],\"*\":\"mobile\"}]],[/droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i],[MODEL,[VENDOR,\"Acer\"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\\bmz-([-\\w]{2,})/i],[MODEL,[VENDOR,\"Meizu\"],[TYPE,MOBILE]],[/; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i],[MODEL,[VENDOR,\"Ulefone\"],[TYPE,MOBILE]],[/; (energy ?\\w+)(?: bui|\\))/i,/; energizer ([\\w ]+)(?: bui|\\))/i],[MODEL,[VENDOR,\"Energizer\"],[TYPE,MOBILE]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i],[MODEL,[VENDOR,\"Cat\"],[TYPE,MOBILE]],[/((?:new )?andromax[\\w- ]+)(?: bui|\\))/i],[MODEL,[VENDOR,\"Smartfren\"],[TYPE,MOBILE]],[/droid.+; (a(?:015|06[35]|142p?))/i],[MODEL,[VENDOR,\"Nothing\"],[TYPE,MOBILE]],[/; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,/archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i],[MODEL,[VENDOR,\"Archos\"],[TYPE,TABLET]],[/archos ([\\w ]+)( b|\\))/i,/; (ac[3-6]\\d\\w{2,8})( b|\\))/i],[MODEL,[VENDOR,\"Archos\"],[TYPE,MOBILE]],[/(imo) (tab \\w+)/i,/(infinix) (x1101b?)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,/; (hmd|imo) ([\\w ]+?)(?: bui|\\))/i,/(hp) ([\\w ]+\\w)/i,/(microsoft); (lumia[\\w ]+)/i,/(lenovo)[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i,/(oppo) ?([\\w ]+) bui/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kobo)\\s(ereader|touch)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\\/([\\w\\.]+)/i,/(nook)[\\w ]+build\\/(\\w+)/i,/(dell) (strea[kpr\\d ]*[\\dko])/i,/(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,/(trinity)[- ]*(t\\d{3}) bui/i,/(gigaset)[- ]+(q\\w{1,9}) bui/i,/(vodafone) ([\\w ]+)(?:\\)| bui)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i],[MODEL,[VENDOR,\"Fairphone\"],[TYPE,MOBILE]],[/(u304aa)/i],[MODEL,[VENDOR,\"AT&T\"],[TYPE,MOBILE]],[/\\bsie-(\\w*)/i],[MODEL,[VENDOR,\"Siemens\"],[TYPE,MOBILE]],[/\\b(rct\\w+) b/i],[MODEL,[VENDOR,\"RCA\"],[TYPE,TABLET]],[/\\b(venue[\\d ]{2,7}) b/i],[MODEL,[VENDOR,\"Dell\"],[TYPE,TABLET]],[/\\b(q(?:mv|ta)\\w+) b/i],[MODEL,[VENDOR,\"Verizon\"],[TYPE,TABLET]],[/\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i],[MODEL,[VENDOR,\"Barnes & Noble\"],[TYPE,TABLET]],[/\\b(tm\\d{3}\\w+) b/i],[MODEL,[VENDOR,\"NuVision\"],[TYPE,TABLET]],[/\\b(k88) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,TABLET]],[/\\b(nx\\d{3}j) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,MOBILE]],[/\\b(gen\\d{3}) b.+49h/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,MOBILE]],[/\\b(zur\\d{3}) b/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,TABLET]],[/\\b((zeki)?tb.*\\b) b/i],[MODEL,[VENDOR,\"Zeki\"],[TYPE,TABLET]],[/\\b([yr]\\d{2}) b/i,/\\b(dragon[- ]+touch |dt)(\\w{5}) b/i],[[VENDOR,\"Dragon Touch\"],MODEL,[TYPE,TABLET]],[/\\b(ns-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"Insignia\"],[TYPE,TABLET]],[/\\b((nxa|next)-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"NextBook\"],[TYPE,TABLET]],[/\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[VENDOR,\"Voice\"],MODEL,[TYPE,MOBILE]],[/\\b(lvtel\\-)?(v1[12]) b/i],[[VENDOR,\"LvTel\"],MODEL,[TYPE,MOBILE]],[/\\b(ph-1) /i],[MODEL,[VENDOR,\"Essential\"],[TYPE,MOBILE]],[/\\b(v(100md|700na|7011|917g).*\\b) b/i],[MODEL,[VENDOR,\"Envizen\"],[TYPE,TABLET]],[/\\b(trio[-\\w\\. ]+) b/i],[MODEL,[VENDOR,\"MachSpeed\"],[TYPE,TABLET]],[/\\btu_(1491) b/i],[MODEL,[VENDOR,\"Rotor\"],[TYPE,TABLET]],[/((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i],[MODEL,[VENDOR,NVIDIA],[TYPE,TABLET]],[/(sprint) (\\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\\.[onetw]{3})/i],[[MODEL,/\\./g,\" \"],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\\d+)/i],[[MODEL,/^/,\"SmartTV\"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+\" TV\"],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROME+\"cast\"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/droid.+aft(\\w+)( bui|\\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/(shield \\w+ tv)/i],[MODEL,[VENDOR,NVIDIA],[TYPE,SMARTTV]],[/\\(dtv[\\);].+(aquos)/i,/(aquos-tv[\\w ]+)\\)/i],[MODEL,[VENDOR,SHARP],[TYPE,SMARTTV]],[/(bravia[\\w ]+)( bui|\\))/i],[MODEL,[VENDOR,SONY],[TYPE,SMARTTV]],[/(mi(tv|box)-?\\w+) bui/i],[MODEL,[VENDOR,XIAOMI],[TYPE,SMARTTV]],[/Hbbtv.*(technisat) (.*);/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,/hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i],[[VENDOR,trim],[MODEL,trim],[TYPE,SMARTTV]],[/droid.+; ([\\w- ]+) (?:android tv|smart[- ]?tv)/i],[MODEL,[TYPE,SMARTTV]],[/\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i],[[TYPE,SMARTTV]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/droid.+; (shield)( bui|\\))/i],[MODEL,[VENDOR,NVIDIA],[TYPE,CONSOLE]],[/(playstation \\w+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\\b(xbox(?: one)?(?!; xbox))[\\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,WEARABLE]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[MODEL,[VENDOR,OPPO],[TYPE,WEARABLE]],[/(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i],[MODEL,[VENDOR,APPLE],[TYPE,WEARABLE]],[/(opwwe\\d{3})/i],[MODEL,[VENDOR,ONEPLUS],[TYPE,WEARABLE]],[/(moto 360)/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,WEARABLE]],[/(smartwatch 3)/i],[MODEL,[VENDOR,SONY],[TYPE,WEARABLE]],[/(g watch r)/i],[MODEL,[VENDOR,LG],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/droid.+; (glass) \\d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,WEARABLE]],[/(pico) (4|neo3(?: link|pro)?)/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/; (quest( \\d| pro)?)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,WEARABLE]],[/(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/(aeobc)\\b/i],[MODEL,[VENDOR,AMAZON],[TYPE,EMBEDDED]],[/(homepod).+mac os/i],[MODEL,[VENDOR,APPLE],[TYPE,EMBEDDED]],[/windows iot/i],[[TYPE,EMBEDDED]],[/droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i],[MODEL,[TYPE,MOBILE]],[/droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i],[MODEL,[TYPE,TABLET]],[/\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/droid .+?; ([\\w\\. -]+)( bui|\\))/i],[MODEL,[VENDOR,\"Generic\"]]],engine:[[/windows.+ edge\\/([\\w\\.]+)/i],[VERSION,[NAME,EDGE+\"HTML\"]],[/(arkweb)\\/([\\w\\.]+)/i],[NAME,VERSION],[/webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i],[VERSION,[NAME,\"Blink\"]],[/(presto)\\/([\\w\\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i,/ekioh(flow)\\/([\\w\\.]+)/i,/(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,/(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,/\\b(libweb)/i],[NAME,VERSION],[/ladybird\\//i],[[NAME,\"LibWeb\"]],[/rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i],[VERSION,NAME]],os:[[/microsoft (windows) (vista|xp)/i],[NAME,VERSION],[/(windows (?:phone(?: os)?|mobile|iot))[\\/ ]?([\\d\\.\\w ]*)/i],[NAME,[VERSION,strMapper,windowsVersionMap]],[/windows nt 6\\.2; (arm)/i,/windows[\\/ ]([ntce\\d\\. ]+\\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i],[[VERSION,strMapper,windowsVersionMap],[NAME,\"Windows\"]],[/[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i,/(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,/cfnetwork\\/.+darwin/i],[[VERSION,/_/g,\".\"],[NAME,\"iOS\"]],[/(mac os x) ?([\\w\\. ]*)/i,/(macintosh|mac_powerpc\\b)(?!.+haiku)/i],[[NAME,MAC_OS],[VERSION,/_/g,\".\"]],[/droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i],[VERSION,NAME],[/(ubuntu) ([\\w\\.]+) like android/i],[[NAME,/(.+)/,\"$1 Touch\"],VERSION],[/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\\w*[-\\/; ]?([\\d\\.]*)/i],[NAME,VERSION],[/\\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i],[VERSION,[NAME,\"Symbian\"]],[/mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" OS\"]],[/web0s;.+rt(tv)/i,/\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"webOS\"]],[/watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i],[VERSION,[NAME,\"watchOS\"]],[/crkey\\/([\\d\\.]+)/i],[VERSION,[NAME,CHROME+\"cast\"]],[/(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i],[[NAME,CHROMIUM_OS],VERSION],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\\/(\\d+\\.[\\w\\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\\);]+)/i,/\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,/(mint)[\\/\\(\\) ]?(\\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,/(hurd|linux)(?: arm\\w*| x86\\w*| ?)([\\w\\.]*)/i,/(gnu) ?([\\w\\.]*)/i,/\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i,/(haiku) (\\w+)/i],[NAME,VERSION],[/(sunos) ?([\\w\\.\\d]*)/i],[[NAME,\"Solaris\"],VERSION],[/((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,/(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,/\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\\w\\.]*)/i],[NAME,VERSION]]};var UAParser=function(ua,extensions){if(typeof ua===OBJ_TYPE){extensions=ua;ua=undefined}if(!(this instanceof UAParser)){return new UAParser(ua,extensions).getResult()}var _navigator=typeof window!==UNDEF_TYPE&&window.navigator?window.navigator:undefined;var _ua=ua||(_navigator&&_navigator.userAgent?_navigator.userAgent:EMPTY);var _uach=_navigator&&_navigator.userAgentData?_navigator.userAgentData:undefined;var _rgxmap=extensions?extend(regexes,extensions):regexes;var _isSelfNav=_navigator&&_navigator.userAgent==_ua;this.getBrowser=function(){var _browser={};_browser[NAME]=undefined;_browser[VERSION]=undefined;rgxMapper.call(_browser,_ua,_rgxmap.browser);_browser[MAJOR]=majorize(_browser[VERSION]);if(_isSelfNav&&_navigator&&_navigator.brave&&typeof _navigator.brave.isBrave==FUNC_TYPE){_browser[NAME]=\"Brave\"}return _browser};this.getCPU=function(){var _cpu={};_cpu[ARCHITECTURE]=undefined;rgxMapper.call(_cpu,_ua,_rgxmap.cpu);return _cpu};this.getDevice=function(){var _device={};_device[VENDOR]=undefined;_device[MODEL]=undefined;_device[TYPE]=undefined;rgxMapper.call(_device,_ua,_rgxmap.device);if(_isSelfNav&&!_device[TYPE]&&_uach&&_uach.mobile){_device[TYPE]=MOBILE}if(_isSelfNav&&_device[MODEL]==\"Macintosh\"&&_navigator&&typeof _navigator.standalone!==UNDEF_TYPE&&_navigator.maxTouchPoints&&_navigator.maxTouchPoints>2){_device[MODEL]=\"iPad\";_device[TYPE]=TABLET}return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined;_engine[VERSION]=undefined;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined;_os[VERSION]=undefined;rgxMapper.call(_os,_ua,_rgxmap.os);if(_isSelfNav&&!_os[NAME]&&_uach&&_uach.platform&&_uach.platform!=\"Unknown\"){_os[NAME]=_uach.platform.replace(/chrome os/i,CHROMIUM_OS).replace(/macos/i,MAC_OS)}return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar ClientUAInstance = new UAParser();\nvar browser = ClientUAInstance.getBrowser();\nvar cpu = ClientUAInstance.getCPU();\nvar device = ClientUAInstance.getDevice();\nvar engine = ClientUAInstance.getEngine();\nvar os = ClientUAInstance.getOS();\nvar ua = ClientUAInstance.getUA();\nvar setUa = function setUa(userAgentString) {\n  return ClientUAInstance.setUA(userAgentString);\n};\nvar parseUserAgent = function parseUserAgent(userAgent) {\n  if (!userAgent) {\n    console.error('No userAgent string was provided');\n    return;\n  }\n\n  var UserAgentInstance = new UAParser(userAgent);\n  return {\n    UA: UserAgentInstance,\n    browser: UserAgentInstance.getBrowser(),\n    cpu: UserAgentInstance.getCPU(),\n    device: UserAgentInstance.getDevice(),\n    engine: UserAgentInstance.getEngine(),\n    os: UserAgentInstance.getOS(),\n    ua: UserAgentInstance.getUA(),\n    setUserAgent: function setUserAgent(userAgentString) {\n      return UserAgentInstance.setUA(userAgentString);\n    }\n  };\n};\n\nvar UAHelper = /*#__PURE__*/Object.freeze({\n  ClientUAInstance: ClientUAInstance,\n  browser: browser,\n  cpu: cpu,\n  device: device,\n  engine: engine,\n  os: os,\n  ua: ua,\n  setUa: setUa,\n  parseUserAgent: parseUserAgent\n});\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\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\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar DeviceTypes = {\n  Mobile: 'mobile',\n  Tablet: 'tablet',\n  SmartTv: 'smarttv',\n  Console: 'console',\n  Wearable: 'wearable',\n  Embedded: 'embedded',\n  Browser: undefined\n};\nvar BrowserTypes = {\n  Chrome: 'Chrome',\n  Firefox: 'Firefox',\n  Opera: 'Opera',\n  Yandex: 'Yandex',\n  Safari: 'Safari',\n  InternetExplorer: 'Internet Explorer',\n  Edge: 'Edge',\n  Chromium: 'Chromium',\n  Ie: 'IE',\n  MobileSafari: 'Mobile Safari',\n  EdgeChromium: 'Edge Chromium',\n  MIUI: 'MIUI Browser',\n  SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n  IOS: 'iOS',\n  Android: 'Android',\n  WindowsPhone: 'Windows Phone',\n  Windows: 'Windows',\n  MAC_OS: 'Mac OS'\n};\nvar InitialDeviceTypes = {\n  isMobile: false,\n  isTablet: false,\n  isBrowser: false,\n  isSmartTV: false,\n  isConsole: false,\n  isWearable: false\n};\n\nvar checkDeviceType = function checkDeviceType(type) {\n  switch (type) {\n    case DeviceTypes.Mobile:\n      return {\n        isMobile: true\n      };\n\n    case DeviceTypes.Tablet:\n      return {\n        isTablet: true\n      };\n\n    case DeviceTypes.SmartTv:\n      return {\n        isSmartTV: true\n      };\n\n    case DeviceTypes.Console:\n      return {\n        isConsole: true\n      };\n\n    case DeviceTypes.Wearable:\n      return {\n        isWearable: true\n      };\n\n    case DeviceTypes.Browser:\n      return {\n        isBrowser: true\n      };\n\n    case DeviceTypes.Embedded:\n      return {\n        isEmbedded: true\n      };\n\n    default:\n      return InitialDeviceTypes;\n  }\n};\nvar setUserAgent = function setUserAgent(userAgent) {\n  return setUa(userAgent);\n};\nvar setDefaults = function setDefaults(p) {\n  var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n  return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n  if (typeof window !== 'undefined') {\n    if (window.navigator || navigator) {\n      return window.navigator || navigator;\n    }\n  }\n\n  return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n  var nav = getNavigatorInstance();\n  return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nvar browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {\n  return {\n    isBrowser: isBrowser,\n    browserMajorVersion: setDefaults(browser.major),\n    browserFullVersion: setDefaults(browser.version),\n    browserName: setDefaults(browser.name),\n    engineName: setDefaults(engine.name),\n    engineVersion: setDefaults(engine.version),\n    osName: setDefaults(os.name),\n    osVersion: setDefaults(os.version),\n    userAgent: setDefaults(ua)\n  };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n  return _objectSpread2({}, type, {\n    vendor: setDefaults(device.vendor),\n    model: setDefaults(device.model),\n    os: setDefaults(os.name),\n    osVersion: setDefaults(os.version),\n    ua: setDefaults(ua)\n  });\n};\nvar smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {\n  return {\n    isSmartTV: isSmartTV,\n    engineName: setDefaults(engine.name),\n    engineVersion: setDefaults(engine.version),\n    osName: setDefaults(os.name),\n    osVersion: setDefaults(os.version),\n    userAgent: setDefaults(ua)\n  };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n  return {\n    isConsole: isConsole,\n    engineName: setDefaults(engine.name),\n    engineVersion: setDefaults(engine.version),\n    osName: setDefaults(os.name),\n    osVersion: setDefaults(os.version),\n    userAgent: setDefaults(ua)\n  };\n};\nvar wearablePayload = function wearablePayload(isWearable, engine, os, ua) {\n  return {\n    isWearable: isWearable,\n    engineName: setDefaults(engine.name),\n    engineVersion: setDefaults(engine.version),\n    osName: setDefaults(os.name),\n    osVersion: setDefaults(os.version),\n    userAgent: setDefaults(ua)\n  };\n};\nvar embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {\n  return {\n    isEmbedded: isEmbedded,\n    vendor: setDefaults(device.vendor),\n    model: setDefaults(device.model),\n    engineName: setDefaults(engine.name),\n    engineVersion: setDefaults(engine.version),\n    osName: setDefaults(os.name),\n    osVersion: setDefaults(os.version),\n    userAgent: setDefaults(ua)\n  };\n};\n\nfunction deviceDetect(userAgent) {\n  var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,\n      device = _ref.device,\n      browser = _ref.browser,\n      engine = _ref.engine,\n      os = _ref.os,\n      ua = _ref.ua;\n\n  var type = checkDeviceType(device.type);\n  var isBrowser = type.isBrowser,\n      isMobile = type.isMobile,\n      isTablet = type.isTablet,\n      isSmartTV = type.isSmartTV,\n      isConsole = type.isConsole,\n      isWearable = type.isWearable,\n      isEmbedded = type.isEmbedded;\n\n  if (isBrowser) {\n    return browserPayload(isBrowser, browser, engine, os, ua);\n  }\n\n  if (isSmartTV) {\n    return smartTvPayload(isSmartTV, engine, os, ua);\n  }\n\n  if (isConsole) {\n    return consolePayload(isConsole, engine, os, ua);\n  }\n\n  if (isMobile) {\n    return mobilePayload(type, device, os, ua);\n  }\n\n  if (isTablet) {\n    return mobilePayload(type, device, os, ua);\n  }\n\n  if (isWearable) {\n    return wearablePayload(isWearable, engine, os, ua);\n  }\n\n  if (isEmbedded) {\n    return embeddedPayload(isEmbedded, device, engine, os, ua);\n  }\n}\n\nvar isMobileType = function isMobileType(_ref) {\n  var type = _ref.type;\n  return type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType(_ref2) {\n  var type = _ref2.type;\n  return type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType(_ref3) {\n  var type = _ref3.type;\n  return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;\n};\nvar isSmartTVType = function isSmartTVType(_ref4) {\n  var type = _ref4.type;\n  return type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType(_ref5) {\n  var type = _ref5.type;\n  return type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType(_ref6) {\n  var type = _ref6.type;\n  return type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType(_ref7) {\n  var type = _ref7.type;\n  return type === DeviceTypes.Console;\n};\nvar isEmbeddedType = function isEmbeddedType(_ref8) {\n  var type = _ref8.type;\n  return type === DeviceTypes.Embedded;\n};\nvar getMobileVendor = function getMobileVendor(_ref9) {\n  var vendor = _ref9.vendor;\n  return setDefaults(vendor);\n};\nvar getMobileModel = function getMobileModel(_ref10) {\n  var model = _ref10.model;\n  return setDefaults(model);\n};\nvar getDeviceType = function getDeviceType(_ref11) {\n  var type = _ref11.type;\n  return setDefaults(type, 'browser');\n}; // os types\n\nvar isAndroidType = function isAndroidType(_ref12) {\n  var name = _ref12.name;\n  return name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType(_ref13) {\n  var name = _ref13.name;\n  return name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType(_ref14) {\n  var name = _ref14.name;\n  return name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType(_ref15) {\n  var name = _ref15.name;\n  return name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType(_ref16) {\n  var name = _ref16.name;\n  return name === OsTypes.IOS;\n};\nvar getOsVersion = function getOsVersion(_ref17) {\n  var version = _ref17.version;\n  return setDefaults(version);\n};\nvar getOsName = function getOsName(_ref18) {\n  var name = _ref18.name;\n  return setDefaults(name);\n}; // browser types\n\nvar isChromeType = function isChromeType(_ref19) {\n  var name = _ref19.name;\n  return name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType(_ref20) {\n  var name = _ref20.name;\n  return name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType(_ref21) {\n  var name = _ref21.name;\n  return name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType(_ref22) {\n  var name = _ref22.name;\n  return name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType(_ref23) {\n  var name = _ref23.name;\n  return name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType(_ref24) {\n  var name = _ref24.name;\n  return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType(_ref25) {\n  var name = _ref25.name;\n  return name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType(_ref26) {\n  var name = _ref26.name;\n  return name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType(_ref27) {\n  var name = _ref27.name;\n  return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType(_ref28) {\n  var name = _ref28.name;\n  return name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType(_ref29) {\n  var name = _ref29.name;\n  return name === BrowserTypes.SamsungBrowser;\n};\nvar getBrowserFullVersion = function getBrowserFullVersion(_ref30) {\n  var version = _ref30.version;\n  return setDefaults(version);\n};\nvar getBrowserVersion = function getBrowserVersion(_ref31) {\n  var major = _ref31.major;\n  return setDefaults(major);\n};\nvar getBrowserName = function getBrowserName(_ref32) {\n  var name = _ref32.name;\n  return setDefaults(name);\n}; // engine types\n\nvar getEngineName = function getEngineName(_ref33) {\n  var name = _ref33.name;\n  return setDefaults(name);\n};\nvar getEngineVersion = function getEngineVersion(_ref34) {\n  var version = _ref34.version;\n  return setDefaults(version);\n};\nvar isElectronType = function isElectronType() {\n  var nav = getNavigatorInstance();\n  var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n  return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar isEdgeChromiumType = function isEdgeChromiumType(ua) {\n  return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar getIOS13 = function getIOS13() {\n  var nav = getNavigatorInstance();\n  return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n  return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n  return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n  return isIOS13Check('iPod');\n};\nvar getUseragent = function getUseragent(userAg) {\n  return setDefaults(userAg);\n};\n\nfunction buildSelectorsObject(options) {\n  var _ref = options ? options : UAHelper,\n      device = _ref.device,\n      browser = _ref.browser,\n      os = _ref.os,\n      engine = _ref.engine,\n      ua = _ref.ua;\n\n  return {\n    isSmartTV: isSmartTVType(device),\n    isConsole: isConsoleType(device),\n    isWearable: isWearableType(device),\n    isEmbedded: isEmbeddedType(device),\n    isMobileSafari: isMobileSafariType(browser) || getIPad13(),\n    isChromium: isChromiumType(browser),\n    isMobile: isMobileAndTabletType(device) || getIPad13(),\n    isMobileOnly: isMobileType(device),\n    isTablet: isTabletType(device) || getIPad13(),\n    isBrowser: isBrowserType(device),\n    isDesktop: isBrowserType(device),\n    isAndroid: isAndroidType(os),\n    isWinPhone: isWinPhoneType(os),\n    isIOS: isIOSType(os) || getIPad13(),\n    isChrome: isChromeType(browser),\n    isFirefox: isFirefoxType(browser),\n    isSafari: isSafariType(browser),\n    isOpera: isOperaType(browser),\n    isIE: isIEType(browser),\n    osVersion: getOsVersion(os),\n    osName: getOsName(os),\n    fullBrowserVersion: getBrowserFullVersion(browser),\n    browserVersion: getBrowserVersion(browser),\n    browserName: getBrowserName(browser),\n    mobileVendor: getMobileVendor(device),\n    mobileModel: getMobileModel(device),\n    engineName: getEngineName(engine),\n    engineVersion: getEngineVersion(engine),\n    getUA: getUseragent(ua),\n    isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),\n    isYandex: isYandexType(browser),\n    deviceType: getDeviceType(device),\n    isIOS13: getIOS13(),\n    isIPad13: getIPad13(),\n    isIPhone13: getIphone13(),\n    isIPod13: getIPod13(),\n    isElectron: isElectronType(),\n    isEdgeChromium: isEdgeChromiumType(ua),\n    isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),\n    isWindows: isWindowsType(os),\n    isMacOs: isMacOsType(os),\n    isMIUI: isMIUIType(browser),\n    isSamsungBrowser: isSamsungBrowserType(browser)\n  };\n}\n\nvar isSmartTV = isSmartTVType(device);\nvar isConsole = isConsoleType(device);\nvar isWearable = isWearableType(device);\nvar isEmbedded = isEmbeddedType(device);\nvar isMobileSafari = isMobileSafariType(browser) || getIPad13();\nvar isChromium = isChromiumType(browser);\nvar isMobile = isMobileAndTabletType(device) || getIPad13();\nvar isMobileOnly = isMobileType(device);\nvar isTablet = isTabletType(device) || getIPad13();\nvar isBrowser = isBrowserType(device);\nvar isDesktop = isBrowserType(device);\nvar isAndroid = isAndroidType(os);\nvar isWinPhone = isWinPhoneType(os);\nvar isIOS = isIOSType(os) || getIPad13();\nvar isChrome = isChromeType(browser);\nvar isFirefox = isFirefoxType(browser);\nvar isSafari = isSafariType(browser);\nvar isOpera = isOperaType(browser);\nvar isIE = isIEType(browser);\nvar osVersion = getOsVersion(os);\nvar osName = getOsName(os);\nvar fullBrowserVersion = getBrowserFullVersion(browser);\nvar browserVersion = getBrowserVersion(browser);\nvar browserName = getBrowserName(browser);\nvar mobileVendor = getMobileVendor(device);\nvar mobileModel = getMobileModel(device);\nvar engineName = getEngineName(engine);\nvar engineVersion = getEngineVersion(engine);\nvar getUA = getUseragent(ua);\nvar isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);\nvar isYandex = isYandexType(browser);\nvar deviceType = getDeviceType(device);\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType(ua);\nvar isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);\nvar isWindows = isWindowsType(os);\nvar isMacOs = isMacOsType(os);\nvar isMIUI = isMIUIType(browser);\nvar isSamsungBrowser = isSamsungBrowserType(browser);\nvar getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {\n  if (!userAgent || typeof userAgent !== 'string') {\n    console.error('No valid user agent string was provided');\n    return;\n  }\n\n  var _UAHelper$parseUserAg = parseUserAgent(userAgent),\n      device = _UAHelper$parseUserAg.device,\n      browser = _UAHelper$parseUserAg.browser,\n      os = _UAHelper$parseUserAg.os,\n      engine = _UAHelper$parseUserAg.engine,\n      ua = _UAHelper$parseUserAg.ua;\n\n  return buildSelectorsObject({\n    device: device,\n    browser: browser,\n    os: os,\n    engine: engine,\n    ua: ua\n  });\n};\n\nvar AndroidView = function AndroidView(_ref) {\n  var renderWithFragment = _ref.renderWithFragment,\n      children = _ref.children,\n      props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\"]);\n\n  return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n  var renderWithFragment = _ref2.renderWithFragment,\n      children = _ref2.children,\n      props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\"]);\n\n  return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n  var renderWithFragment = _ref3.renderWithFragment,\n      children = _ref3.children,\n      props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\"]);\n\n  return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n  var renderWithFragment = _ref4.renderWithFragment,\n      children = _ref4.children,\n      props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\"]);\n\n  return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n  var renderWithFragment = _ref5.renderWithFragment,\n      children = _ref5.children,\n      props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\"]);\n\n  return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n  var renderWithFragment = _ref6.renderWithFragment,\n      children = _ref6.children,\n      props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\"]);\n\n  return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n  var renderWithFragment = _ref7.renderWithFragment,\n      children = _ref7.children,\n      props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\"]);\n\n  return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n  var renderWithFragment = _ref8.renderWithFragment,\n      children = _ref8.children,\n      viewClassName = _ref8.viewClassName,\n      style = _ref8.style,\n      props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n\n  return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n  var renderWithFragment = _ref9.renderWithFragment,\n      children = _ref9.children,\n      props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\"]);\n\n  return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n  var renderWithFragment = _ref10.renderWithFragment,\n      children = _ref10.children,\n      props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\"]);\n\n  return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n  var renderWithFragment = _ref11.renderWithFragment,\n      children = _ref11.children,\n      props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\"]);\n\n  return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n  var renderWithFragment = _ref12.renderWithFragment,\n      children = _ref12.children,\n      viewClassName = _ref12.viewClassName,\n      style = _ref12.style,\n      condition = _ref12.condition,\n      props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n\n  return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n  return /*#__PURE__*/function (_React$Component) {\n    _inherits(_class, _React$Component);\n\n    function _class(props) {\n      var _this;\n\n      _classCallCheck(this, _class);\n\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n      _this.isEventListenerAdded = false;\n      _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n      _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n      _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n      _this.state = {\n        isLandscape: false,\n        isPortrait: false\n      };\n      return _this;\n    }\n\n    _createClass(_class, [{\n      key: \"handleOrientationChange\",\n      value: function handleOrientationChange() {\n        if (!this.isEventListenerAdded) {\n          this.isEventListenerAdded = true;\n        }\n\n        var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n        this.setState({\n          isPortrait: orientation === 0,\n          isLandscape: orientation === 90\n        });\n      }\n    }, {\n      key: \"onOrientationChange\",\n      value: function onOrientationChange() {\n        this.handleOrientationChange();\n      }\n    }, {\n      key: \"onPageLoad\",\n      value: function onPageLoad() {\n        this.handleOrientationChange();\n      }\n    }, {\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n          if (!this.isEventListenerAdded) {\n            this.handleOrientationChange();\n            window.addEventListener(\"load\", this.onPageLoad, false);\n          } else {\n            window.removeEventListener(\"load\", this.onPageLoad, false);\n          }\n\n          window.addEventListener(\"resize\", this.onOrientationChange, false);\n        }\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        window.removeEventListener(\"resize\", this.onOrientationChange, false);\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n          isLandscape: this.state.isLandscape,\n          isPortrait: this.state.isPortrait\n        }));\n      }\n    }]);\n\n    return _class;\n  }(React__default.Component);\n}\n\nfunction useMobileOrientation() {\n  var _useState = React.useState(function () {\n    var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n    return {\n      isPortrait: orientation === 0,\n      isLandscape: orientation === 90,\n      orientation: orientation === 0 ? 'portrait' : 'landscape'\n    };\n  }),\n      _useState2 = _slicedToArray(_useState, 2),\n      state = _useState2[0],\n      setState = _useState2[1];\n\n  var handleOrientationChange = React.useCallback(function () {\n    var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n    var next = {\n      isPortrait: orientation === 0,\n      isLandscape: orientation === 90,\n      orientation: orientation === 0 ? 'portrait' : 'landscape'\n    };\n    state.orientation !== next.orientation && setState(next);\n  }, [state.orientation]);\n  React.useEffect(function () {\n    if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n      handleOrientationChange();\n      window.addEventListener(\"load\", handleOrientationChange, false);\n      window.addEventListener(\"resize\", handleOrientationChange, false);\n    }\n\n    return function () {\n      window.removeEventListener(\"resize\", handleOrientationChange, false);\n      window.removeEventListener(\"load\", handleOrientationChange, false);\n    };\n  }, [handleOrientationChange]);\n  return state;\n}\n\nfunction useDeviceData(userAgent) {\n  var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n  return parseUserAgent(hookUserAgent);\n}\n\nfunction useDeviceSelectors(userAgent) {\n  var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n  var deviceData = useDeviceData(hookUserAgent);\n  var selectors = buildSelectorsObject(deviceData);\n  return [selectors, deviceData];\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getSelectorsByUserAgent = getSelectorsByUserAgent;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isEmbedded = isEmbedded;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.parseUserAgent = parseUserAgent;\nexports.setUserAgent = setUserAgent;\nexports.useDeviceData = useDeviceData;\nexports.useDeviceSelectors = useDeviceSelectors;\nexports.useMobileOrientation = useMobileOrientation;\nexports.withOrientationChange = withOrientationChange;\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", "import React, {CSSProperties} from \"react\"\nimport {Button as MuiButton, ButtonProps} from \"@mui/material\"\nimport {darkenGrey, lightGrey} from \"../values/colors/colors\";\n\nexport function Button(props: ButtonProps) {\n    const styleBySizeMap: Map<typeof props.size, {\n        minHeight: string\n    }> = new Map([\n        [\"small\",  {minHeight: \"34px\", fontSize: \"0.8rem\"}],\n        [\"medium\", {minHeight: \"37px\", fontSize: \"0.85rem\"}],\n        [\"large\",  {minHeight: \"40px\", fontSize: \"0.9rem\"}],\n    ]);\n\n    const styleBySize: CSSProperties = styleBySizeMap.get(props.size ?? \"medium\");\n\n    return (\n        <MuiButton\n            disableElevation\n            variant=\"contained\"\n            {...props}\n            sx={{\n                borderRadius: \"25px\",\n                textTransform: \"unset\",\n                borderWidth: \"2px\",\n                minHeight: styleBySize.minHeight,\n                fontSize: styleBySize.fontSize,\n                \"&:hover\": {\n                    borderWidth: \"2px\"\n                },\n                \"&.Mui-disabled\": {\n                    color: darkenGrey,\n                    backgroundColor: lightGrey,\n                },\n                ...props.sx\n            }}\n        >\n            {props.children}\n        </MuiButton>\n    )\n}\n", "import React, {CSSProperties} from \"react\"\nimport {TooltipProps, Tooltip as MuiTooltip} from \"@mui/material\";\nimport {dark, white} from \"../values/colors/colors\";\n\ninterface CustomProps extends TooltipProps {\n    size?: string\n    white?: number\n}\n\nexport function Tooltip(props: CustomProps): JSX.Element {\n\n    const styleBySizeMap: Map<typeof props.size, {fontSize: string}> = new Map([\n        [\"small\",  { fontSize: \"0.7rem\"}],\n        [\"medium\", { fontSize: \"0.8rem\"}],\n        [\"large\",  { fontSize: \"0.9rem\"}],\n    ]);\n    const styleBySize: CSSProperties = styleBySizeMap.get(props.size ?? \"medium\");\n    return (\n        <MuiTooltip\n            placement={props.placement ?? \"top-start\"}\n            enterDelay={props.enterDelay ?? 100}\n            enterNextDelay={props.enterNextDelay ?? 0}\n            slotProps={{\n                tooltip:{\n                    sx:{\n                        // DD for opacity\n                        ...props.sx,\n                        backgroundColor: props.white ? `${white}DD` : `${dark}DD`,\n                        color: props.white ? dark : white,\n                        fontSize: styleBySize.fontSize,\n                    }\n                },\n                arrow:{\n                    sx:{\n                        ...props.slotProps?.arrow?.sx,\n                        color: `${dark}DD`,\n                        backgroundColor: \"transparent\",\n                    }\n                }\n            }}\n            {...props}\n        >\n            {props.children}\n        </MuiTooltip>\n    )\n}\n", "import React from \"react\";\n\nexport const Close = () =>\n<svg xmlns=\"http://www.w3.org/2000/svg\"\n     viewBox=\"0 0 352 512\">\n    <path fill=\"currentColor\"\n          d=\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\" />\n</svg>;\n", "import * as React from 'react';\nimport styled from 'styled-components';\nimport {\n    dark,\n    darkenRed,\n    darkGrey,\n    grey,\n    overlay,\n    primary,\n    red,\n    shadowWhite,\n    white\n} from \"@root/react-components/src/values/colors/colors\";\nimport {OnBoardingStageData} from \"OnBoarding/OnBoardingData\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport i18next from \"i18next\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {primaryFontXLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\n\nconst Overlay = styled(\"div\")<{\n    focused: boolean\n}>`\n    width: 100%;\n    height: 100%;\n    top: 0;\n    left: 0;\n    pointer-events: ${props => props.focused ? \"none\" : \"unset\"};\n    position: absolute;\n    background: ${props => props.focused ? \"none\" : overlay};\n    & > div{\n        position: fixed;\n        background-color: rgba(0,0,0,0.7);\n        pointer-events: fill;\n    }\n`;\n\nconst Window = styled(\"div\")<{\n    align?: string,\n    vAlign?: string\n}>`\n    position: fixed;\n    top: ${props => props.vAlign === \"top\" ? \"24px\" : props.vAlign === \"bottom\" ? \"unset\" : \"50%\"};\n    bottom: ${props => props.vAlign === \"bottom\" ? \"24px\" : \"unset\"};\n    left: ${props => props.align === \"left\" ? \"24px\" : props.align === \"right\" ? \"unset\" : \"50%\"};\n    right: ${props => props.align === \"right\" ? \"24px\" : \"unset\"};\n    transform: translate(${props => props.align ? \"0%\" : \"-50%\"},  ${props => props.vAlign ? \"0%\" : \"-50%\"});\n    background-color: ${white};\n    border-radius: 24px;\n    padding: 24px;\n    box-shadow: ${shadowWhite};\n    z-index: 999;\n    max-width: 420px;\n`;\n\nconst Content = styled(\"div\")`\n    opacity: 0;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    font: ${primaryFontXLarge};\n    text-align: center;\n    transition: 0.3s opacity;\n    color: ${dark};\n    & svg{\n        height: 12px;\n        width: 12px;\n    }\n`;\n\nconst Buttons = styled(\"div\")`\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    font: ${secondaryFontMedium};\n    color: ${primary};\n    margin-left: 12px;\n    & > div:hover{\n        cursor: pointer;\n    }\n`;\n\nconst Progress = styled(\"div\")`\n    display: flex;\n    align-items: center;\n`;\n\nconst Dot = styled(\"div\")\n    <{\n        active: boolean\n    }>`\n    height: ${props => props.active ? 8 : 6}px;\n    width: ${props => props.active ? 8 : 6}px;\n    margin-right: 8px;\n    background-color: ${props => props.active ? darkGrey : grey};\n    border-radius: 50%;\n    transition: 0.3s all;\n    &:hover{\n      cursor: pointer;  \n    }\n`;\n\nconst CloseContainer = styled(\"div\")`\n    background-color: ${red};\n    color: ${white};\n    position: absolute;\n    top: -6px;\n    right: -6px;\n    height: 24px;\n    width: 24px;\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    &:hover{\n        cursor: pointer;\n        background-color: ${darkenRed};\n    }\n    & > svg{\n        height: 12px;\n        width: 12px;\n    }\n`;\n\nexport class OnBoardingWidget extends React.Component {\n    props: {\n        didClose: Function,\n        didClickNext: Function,\n        didClickSkip: Function,\n        goTo: Function,\n        initialStageData: OnBoardingStageData\n    };\n    state: {\n        visibility: boolean,\n        step: number,\n        stageData: OnBoardingStageData,\n    } = {\n        visibility: true,\n        step: 0,\n        stageData: this.props.initialStageData\n    };\n    contentRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n\n    componentDidUpdate(prevProps: Readonly<{}>, prevState: Readonly<{}>, snapshot?: any): void {\n        if(!this.state.visibility)\n            return;\n\n        setTimeout(() => {\n            this.contentRef.current.style.opacity = \"1\";\n        }, 500);\n    }\n\n    componentDidMount(): void {\n        setTimeout(() => {\n            this.contentRef.current.style.opacity = \"1\";\n        }, 1000);\n    }\n\n    render(){\n        let boundingRect = null;\n        let stageData = this.state.stageData === undefined ? this.props.initialStageData : this.state.stageData;\n        if(stageData[this.state.step].getFocusedElement !== undefined) {\n            let focusedElement = document.getElementById(this.state.stageData[this.state.step].getFocusedElement());\n            if(focusedElement)\n                boundingRect = focusedElement.getBoundingClientRect();\n        }\n\n        return(\n            <>\n                {\n                    !this.state.visibility ?\n                        <></> :\n                        <>\n                            {this.state.stageData[this.state.step].noOverlay ? <></> :\n                                <Overlay\n                                    focused={boundingRect !== null}\n                                    style={{zIndex : this.state.stageData[this.state.step].zIndex ? this.state.stageData[this.state.step].zIndex : 999}}\n                                >\n                                    {\n                                        boundingRect ?\n                                            <>\n                                                <div style={{\n                                                    top: 0,\n                                                    left: 0,\n                                                    height: boundingRect.y,\n                                                    width: window.innerWidth,\n                                                }}/>\n                                                <div style={{\n                                                    top: boundingRect.y,\n                                                    left: boundingRect.x + boundingRect.width,\n                                                    height: window.innerHeight - boundingRect.y,\n                                                    width: window.innerWidth - boundingRect.x - boundingRect.width\n                                                }}/>\n                                                <div style={{\n                                                    top: boundingRect.y + boundingRect.height,\n                                                    left: 0,\n                                                    height: window.innerHeight - boundingRect.y - boundingRect.height,\n                                                    width: boundingRect.x + boundingRect.width,\n                                                }}/>\n                                                <div style={{\n                                                    top: boundingRect.y,\n                                                    left: 0,\n                                                    height: boundingRect.height,\n                                                    width: boundingRect.x,\n                                                }}/>\n                                            </>\n                                        : <></>\n                                    }\n                                </Overlay>\n                            }\n                            <Window\n                                align={\n                                    this.state.stageData[this.state.step].align ?\n                                        this.state.stageData[this.state.step].align :\n                                        \"\"\n                                }\n                                vAlign={\n                                    this.state.stageData[this.state.step].vAlign ?\n                                        this.state.stageData[this.state.step].vAlign :\n                                        \"\"\n                                }\n                            >\n                                <CloseContainer onClick={() => {\n                                    this.props.didClose();\n                                }}>\n                                    <Close/>\n                                </CloseContainer>\n                                <Content ref={this.contentRef}>\n                                    {this.state.stageData[this.state.step].children}\n                                </Content>\n                                <Buttons>\n                                    <Progress>\n                                        {\n                                            this.state.stageData.map((step, index) => (\n                                                <Dot\n                                                    key={index}\n                                                    active={index === this.state.step}\n                                                    onClick={() => {\n                                                        this.contentRef.current.style.opacity = \"0\";\n                                                        setTimeout(() =>\n                                                            this.props.goTo(index), 300);\n                                                    }}\n                                                />\n                                            ))\n                                        }\n                                    </Progress>\n                                    <Buttons>\n                                        {/*{*/}\n                                        {/*    this.state.step !== this.state.stageData.length - 1 ?*/}\n                                        {/*        <div*/}\n                                        {/*            style={{marginRight: 6}}*/}\n                                        {/*            onClick={() => {*/}\n                                        {/*                this.props.didClickSkip();*/}\n                                        {/*            }}*/}\n                                        {/*        >{i18next.t(\"Skip Stage\")}</div> :*/}\n                                        {/*        <></>*/}\n                                        {/*}*/}\n                                        <Tooltip title={this.state.stageData[this.state.step].noBtn &&\n                                            i18next.t(\"Find the highlighted button!\") }>\n                                            <div>\n                                                <Button\n                                                    disabled={this.state.stageData[this.state.step].noBtn}\n                                                    onClick={() => {\n                                                        this.contentRef.current.style.opacity = \"0\";\n                                                        setTimeout(() => this.props.didClickNext(), 300);\n                                                    }}\n                                                >\n                                                    {\n                                                        this.state.stageData[this.state.step].btnLabel ?\n                                                            this.state.stageData[this.state.step].btnLabel :\n                                                            i18next.t(\"Next\")\n                                                    }\n                                                </Button>\n                                            </div>\n                                        </Tooltip>\n                                    </Buttons>\n                                </Buttons>\n                            </Window>\n                        </>\n                }\n            </>\n        )\n    }\n}", "import * as React from \"react\";\nimport i18next from \"i18next\";\nimport {OnBoardingStageData} from \"OnBoarding/OnBoardingData\";\nimport {secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\n\n\nexport const Introduction = () : OnBoardingStageData => ([\n    {\n        children: <>\n            {i18next.t(\"Welcome to DeepSight\u2019s Platform!\")}<br />\n            {i18next.t(\"Let\u2019s create Augmented Reality Worlds\")}\n            <img height={300} src={\"/welcome.png\"} alt={\"Welcome\"} />\n        </>,\n    },\n    {\n        children: <>\n            {i18next.t(\"Import any of your 3D Models\")}<br />\n            <div style={{font:secondaryFontMedium, marginBottom: 10}}>\n                {i18next.t(\"(Or use one from the free library we setup for you)\")}\n            </div>\n            <img style={{marginBottom: 4}} height={300} src={\"/import.png\"} alt={\"Import 3D Models\"} />\n        </>\n    },\n    {\n        children: <>\n            {i18next.t(\"Annotate and animate\")}<br />\n            {i18next.t(\"to create sequences!\")}\n            <img height={300} src={\"/customize.png\"} alt={\"Customize\"} />\n        </>\n    },\n    {\n        children: <>\n            {i18next.t(\"Enjoy Augmented Reality\")}<br />\n            {i18next.t(\"through any device!\")}\n            <img height={300} src={\"/enjoy.png\"} alt={\"Enjoy AR with DeepSight\"} />\n        </>,\n        btnLabel: i18next.t(\"Let's start\")\n    }\n]);", "import * as React from 'react';\nimport {OnBoardingStageData} from \"OnBoarding/OnBoardingData\";\nimport {OnBoardingWidget} from \"OnBoarding/OnBoardingWidget\";\nimport ReactDOM from \"react-dom\";\nimport {Introduction} from \"@root/Frontend/Studio/OnBoarding/OnBoardingStageData/0_Introduction\";\n\nexport enum OnBoardingStage {\n    INTRODUCTION,\n    OVERVIEW,\n    WORLDS,\n    MODELS,\n    PARTS,\n    STEPS,\n    MOBILE\n}\n\nexport class OnBoarding {\n    static onBoarding: OnBoarding;\n    data: OnBoardingStageData[] = null;\n    stage: OnBoardingStage = OnBoardingStage.INTRODUCTION;\n    step: number = 0;\n    widget: React.RefObject<OnBoardingWidget> = React.createRef<OnBoardingWidget>();\n    widgetContainer: HTMLDivElement;\n\n    constructor() {\n        OnBoarding.onBoarding = this;\n        this.reload();\n\n        // remove on boarding query param if present;\n        const url = new URL(window.location.href);\n        url.searchParams.delete(\"onboarding\");\n        window.history.pushState({}, null, url.toString());\n    }\n\n    reload() {\n        this.data = [Introduction()];\n    }\n\n    static getInstance(){return this.onBoarding}\n\n    public render() {\n        this.widgetContainer = document.createElement(\"div\");\n        document.body.appendChild(this.widgetContainer);\n\n        ReactDOM.render(\n            <OnBoardingWidget\n                ref={this.widget}\n                didClose={() => {\n                    if(this.data[this.stage][this.step].endCallback) {\n                        try {\n                            this.data[this.stage][this.step].endCallback();\n                        } catch (e) {\n                            console.log(e)\n                        }\n                    }\n\n\n                    ReactDOM.unmountComponentAtNode(this.widgetContainer);\n                    this.widgetContainer.remove();\n                }}\n                didClickNext={() => {this.nextStep()}}\n                didClickSkip={() => {\n                    if(this.data[this.stage][this.step].endCallback)\n                        this.data[this.stage][this.step].endCallback();\n\n                    this.step = this.data[this.stage].length - 1;\n                    this.nextStep(false);\n                }}\n                goTo={(index: number) => {\n                    if(this.data[this.stage][this.step].endCallback)\n                        this.data[this.stage][this.step].endCallback();\n\n                    this.step = index - 1;\n                    this.nextStep(false);\n                }}\n                initialStageData={this.data[this.stage]}\n            />\n        , this.widgetContainer);\n    }\n\n    public goToStage(stage: OnBoardingStage){\n        this.stage = stage;\n        this.step = 0;\n\n        if(!this.widget.current) {\n            this.step = 0;\n            this.render();\n        }\n\n        if(stage === OnBoardingStage.INTRODUCTION){\n            this.step = 0;\n            this.widget.current?.setState({\n                step: this.step,\n                stageData: this.data[this.stage]\n            });\n            return;\n        }\n\n        this.stage = stage - 1;\n        this.step = this.data[this.stage].length - 1;\n        this.nextStep(false);\n    }\n\n    public async nextStep(callEnd = true) {\n        if(callEnd && this.step >= 0 && this.data[this.stage][this.step].endCallback)\n            this.data[this.stage][this.step].endCallback();\n\n        this.step++;\n\n        if(this.step === this.data[this.stage].length){\n            this.stage++;\n            if(this.stage === this.data.length){\n                ReactDOM.unmountComponentAtNode(this.widgetContainer);\n                this.widgetContainer.remove();\n                return;\n            }\n            this.step = 0;\n        }\n\n        for (let i = 0; i < this.data.length; i++) {\n            for (let j = 0; j < this.data[i].length; j++) {\n                if(this.data[i][j].verification)\n                    await this.data[i][j].verification();\n\n                if(i === this.stage && j === this.step)\n                    break;\n            }\n            if(i === this.stage)\n                break;\n        }\n\n        if(this.data[this.stage][this.step].startCallback)\n            this.data[this.stage][this.step].startCallback();\n\n        this.widget.current?.setState({\n            step: this.step,\n            stageData: this.data[this.stage]\n        });\n    }\n}\n\n\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n", "var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n", "var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n", "var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n", "var Symbol = require('./_Symbol');\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 nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n", "var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\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 != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\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  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n", "var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n", "var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n", "var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n", "var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n", "var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n", "var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n", "var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n", "var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n", "var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n", "var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n", "var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n", "var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n", "var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n", "var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n", "var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\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\nmodule.exports = isArray;\n", "var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n", "var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\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\nmodule.exports = baseTimes;\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 != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n", "var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\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/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\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 */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n", "var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\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\nmodule.exports = isLength;\n", "var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n", "var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n", "var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\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 * 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  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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\nmodule.exports = isPrototype;\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\nmodule.exports = overArg;\n", "var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n", "var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\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 * 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\nmodule.exports = baseKeys;\n", "var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\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\nmodule.exports = isArrayLike;\n", "var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\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\nmodule.exports = keys;\n", "var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n", "var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\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 * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n", "var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n", "var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\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 * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n", "var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n", "var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n", "module.exports = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n", "var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = []\n  var key = 0\n  var index = 0\n  var path = ''\n  var defaultDelimiter = options && options.delimiter || '/'\n  var res\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0]\n    var escaped = res[1]\n    var offset = res.index\n    path += str.slice(index, offset)\n    index = offset + m.length\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1]\n      continue\n    }\n\n    var next = str[index]\n    var prefix = res[2]\n    var name = res[3]\n    var capture = res[4]\n    var group = res[5]\n    var modifier = res[6]\n    var asterisk = res[7]\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path)\n      path = ''\n    }\n\n    var partial = prefix != null && next != null && next !== prefix\n    var repeat = modifier === '+' || modifier === '*'\n    var optional = modifier === '?' || modifier === '*'\n    var delimiter = prefix || defaultDelimiter\n    var pattern = capture || group\n    var prevText = prefix || (typeof tokens[tokens.length - 1] === 'string' ? tokens[tokens.length - 1] : '')\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : restrictBacktrack(delimiter, prevText))\n    })\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index)\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path)\n  }\n\n  return tokens\n}\n\nfunction restrictBacktrack(delimiter, prevText) {\n  if (!prevText || prevText.indexOf(delimiter) > -1) {\n    return '[^' + escapeString(delimiter) + ']+?'\n  }\n\n  return escapeString(prevText) + '|(?:(?!' + escapeString(prevText) + ')[^' + escapeString(delimiter) + '])+?'\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length)\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n    }\n  }\n\n  return function (obj, opts) {\n    var path = ''\n    var data = obj || {}\n    var options = opts || {}\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i]\n\n      if (typeof token === 'string') {\n        path += token\n\n        continue\n      }\n\n      var value = data[token.name]\n      var segment\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j])\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g)\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      })\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = []\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source)\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  var strict = options.strict\n  var end = options.end !== false\n  var route = ''\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i]\n\n    if (typeof token === 'string') {\n      route += escapeString(token)\n    } else {\n      var prefix = escapeString(token.prefix)\n      var capture = '(?:' + token.pattern + ')'\n\n      keys.push(token)\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*'\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?'\n        } else {\n          capture = prefix + '(' + capture + ')?'\n        }\n      } else {\n        capture = prefix + '(' + capture + ')'\n      }\n\n      route += capture\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/')\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n  }\n\n  if (end) {\n    route += '$'\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\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 *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\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", "!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekOfYear=t()}(this,(function(){\"use strict\";var e=\"week\",t=\"year\";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),\"day\");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f<a;f+=1){var h=s[f],u=d[h],c=u&&u[0],l=u&&u[1];s[f]=l?{regex:c,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=s[n];if(\"string\"==typeof i)r+=i.length;else{var o=i.regex,f=i.parser,h=e.slice(r),u=o.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(s=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,s=e.args;this.$u=r;var a=s[1];if(\"string\"==typeof a){var f=!0===s[2],h=!0===s[3],u=f||h,d=s[2];h&&(d=s[2]),o=this.$locale(),!f&&d&&(o=n.Ls[d]),this.$d=function(e,t,n){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t=\"YYYY-MM-DDTHH:mm:ssZ\");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));", "!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isBetween=i()}(this,(function(){\"use strict\";return function(e,i,t){i.prototype.isBetween=function(e,i,s,f){var n=t(e),o=t(i),r=\"(\"===(f=f||\"()\")[0],u=\")\"===f[1];return(r?this.isAfter(n,s):!this.isBefore(n,s))&&(u?this.isBefore(o,s):!this.isAfter(o,s))||(r?this.isBefore(n,s):!this.isAfter(n,s))&&(u?this.isAfter(o,s):!this.isBefore(o,s))}}}));", "!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],n):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_fr=n(e.dayjs)}(this,(function(e){\"use strict\";function n(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=n(e),i={name:\"fr\",weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"di_lu_ma_me_je_ve_sa\".split(\"_\"),months:\"janvier_f\u00E9vrier_mars_avril_mai_juin_juillet_ao\u00FBt_septembre_octobre_novembre_d\u00E9cembre\".split(\"_\"),monthsShort:\"janv._f\u00E9vr._mars_avr._mai_juin_juil._ao\u00FBt_sept._oct._nov._d\u00E9c.\".split(\"_\"),weekStart:1,yearStart:4,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},ordinal:function(e){return\"\"+e+(1===e?\"er\":\"\")}};return t.default.locale(i,null,!0),i}));", "!function(e,o){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=o(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],o):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_es=o(e.dayjs)}(this,(function(e){\"use strict\";function o(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var s=o(e),d={name:\"es\",monthsShort:\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\"),weekdays:\"domingo_lunes_martes_mi\u00E9rcoles_jueves_viernes_s\u00E1bado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mi\u00E9._jue._vie._s\u00E1b.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_s\u00E1\".split(\"_\"),months:\"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre\".split(\"_\"),weekStart:1,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY H:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY H:mm\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un d\u00EDa\",dd:\"%d d\u00EDas\",M:\"un mes\",MM:\"%d meses\",y:\"un a\u00F1o\",yy:\"%d a\u00F1os\"},ordinal:function(e){return e+\"\u00BA\"}};return s.default.locale(d,null,!0),d}));", "/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n", "var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n", "var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n", "var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n", "var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n", "var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n", "var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n", "var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n", "var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n", "var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n", "var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n", "var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n", "var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n", "var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n", "var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n", "var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n", "var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n", "var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\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 = identity;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n", "var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n", "var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n", "var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n", "/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = baseFindIndex;\n", "/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n", "/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = strictIndexOf;\n", "var baseFindIndex = require('./_baseFindIndex'),\n    baseIsNaN = require('./_baseIsNaN'),\n    strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n", "var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n", "/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arrayIncludesWith;\n", "/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nmodule.exports = noop;\n", "var Set = require('./_Set'),\n    noop = require('./noop'),\n    setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nmodule.exports = createSet;\n", "var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    cacheHas = require('./_cacheHas'),\n    createSet = require('./_createSet'),\n    setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseUniq;\n", "var baseIteratee = require('./_baseIteratee'),\n    baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n", "/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\n", "var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n", "/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nmodule.exports = asciiToArray;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n", "var asciiToArray = require('./_asciiToArray'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n", "var castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    stringToArray = require('./_stringToArray'),\n    toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nmodule.exports = createCaseFirst;\n", "var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n  return typeof value == 'number' ||\n    (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n", "var isNumber = require('./isNumber');\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n  // An `NaN` primitive is the only value that is not equal to itself.\n  // Perform the `toStringTag` check first to avoid errors with some\n  // ActiveX objects in IE.\n  return isNumber(value) && value != +value;\n}\n\nmodule.exports = isNaN;\n", "var baseGetTag = require('./_baseGetTag'),\n    isArray = require('./isArray'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n", "/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n  return value == null;\n}\n\nmodule.exports = isNil;\n", "function _interopRequireDefault(e) {\n  return e && e.__esModule ? e : {\n    \"default\": e\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];", "'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n  if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\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\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\nexports.polyfill = polyfill;\n", "\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n  enter: _propTypes.default.number,\n  exit: _propTypes.default.number,\n  appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n  enter: _propTypes.default.string,\n  exit: _propTypes.default.string,\n  active: _propTypes.default.string\n}), _propTypes.default.shape({\n  enter: _propTypes.default.string,\n  enterDone: _propTypes.default.string,\n  enterActive: _propTypes.default.string,\n  exit: _propTypes.default.string,\n  exitDone: _propTypes.default.string,\n  exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 0 },\n *   entered:  { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  var _proto = Transition.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: null // allows for nested Transitions\n\n    };\n  };\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  }; // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      var node = _reactDom.default.findDOMNode(this);\n\n      if (nextStatus === ENTERING) {\n        this.performEnter(node, mounting);\n      } else {\n        this.performExit(node);\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(node, mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(node);\n      });\n      return;\n    }\n\n    this.props.onEnter(node, appearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(node, appearing);\n\n      _this2.onTransitionEnd(node, enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(node, appearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit(node) {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n    if (!exit) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(node);\n      });\n      return;\n    }\n\n    this.props.onExit(node);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(node);\n\n      _this3.onTransitionEnd(node, timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(node);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n    this.setNextCallback(handler);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      this.props.addEndListener(node, this.nextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n    delete childProps.in;\n    delete childProps.mountOnEnter;\n    delete childProps.unmountOnExit;\n    delete childProps.appear;\n    delete childProps.enter;\n    delete childProps.exit;\n    delete childProps.timeout;\n    delete childProps.addEndListener;\n    delete childProps.onEnter;\n    delete childProps.onEntering;\n    delete childProps.onEntered;\n    delete childProps.onExit;\n    delete childProps.onExiting;\n    delete childProps.onExited;\n\n    if (typeof children === 'function') {\n      return children(status, childProps);\n    }\n\n    var child = _react.default.Children.only(children);\n\n    return _react.default.cloneElement(child, childProps);\n  };\n\n  return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n  transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n  transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n   * If you want to transition on the first mount set `appear` to `true`, and the\n   * component will transition in as soon as the `<Transition>` mounts.\n   *\n   * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = _PropTypes.timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\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    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. **Note:** Timeouts are still used as a fallback if provided.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return (0, _addClass.default)(node, c);\n  });\n};\n\nvar removeClass = function removeClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return (0, _removeClass.default)(node, c);\n  });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n *         <div>\n *           {\"I'll receive my-node-* classes\"}\n *         </div>\n *       </CSSTransition>\n *       <button type=\"button\" onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n *   opacity: 0;\n * }\n * .my-node-enter-active {\n *   opacity: 1;\n *   transition: opacity 200ms;\n * }\n * .my-node-exit {\n *   opacity: 1;\n * }\n * .my-node-exit-active {\n *   opacity: 0;\n *   transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(CSSTransition, _React$Component);\n\n  function CSSTransition() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.onEnter = function (node, appearing) {\n      var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n          className = _this$getClassNames.className;\n\n      _this.removeClasses(node, 'exit');\n\n      addClass(node, className);\n\n      if (_this.props.onEnter) {\n        _this.props.onEnter(node, appearing);\n      }\n    };\n\n    _this.onEntering = function (node, appearing) {\n      var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n          activeClassName = _this$getClassNames2.activeClassName;\n\n      _this.reflowAndAddClass(node, activeClassName);\n\n      if (_this.props.onEntering) {\n        _this.props.onEntering(node, appearing);\n      }\n    };\n\n    _this.onEntered = function (node, appearing) {\n      var appearClassName = _this.getClassNames('appear').doneClassName;\n\n      var enterClassName = _this.getClassNames('enter').doneClassName;\n\n      var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n      _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n      addClass(node, doneClassName);\n\n      if (_this.props.onEntered) {\n        _this.props.onEntered(node, appearing);\n      }\n    };\n\n    _this.onExit = function (node) {\n      var _this$getClassNames3 = _this.getClassNames('exit'),\n          className = _this$getClassNames3.className;\n\n      _this.removeClasses(node, 'appear');\n\n      _this.removeClasses(node, 'enter');\n\n      addClass(node, className);\n\n      if (_this.props.onExit) {\n        _this.props.onExit(node);\n      }\n    };\n\n    _this.onExiting = function (node) {\n      var _this$getClassNames4 = _this.getClassNames('exit'),\n          activeClassName = _this$getClassNames4.activeClassName;\n\n      _this.reflowAndAddClass(node, activeClassName);\n\n      if (_this.props.onExiting) {\n        _this.props.onExiting(node);\n      }\n    };\n\n    _this.onExited = function (node) {\n      var _this$getClassNames5 = _this.getClassNames('exit'),\n          doneClassName = _this$getClassNames5.doneClassName;\n\n      _this.removeClasses(node, 'exit');\n\n      addClass(node, doneClassName);\n\n      if (_this.props.onExited) {\n        _this.props.onExited(node);\n      }\n    };\n\n    _this.getClassNames = function (type) {\n      var classNames = _this.props.classNames;\n      var isStringClassNames = typeof classNames === 'string';\n      var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n      var className = isStringClassNames ? prefix + type : classNames[type];\n      var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n      var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n      return {\n        className: className,\n        activeClassName: activeClassName,\n        doneClassName: doneClassName\n      };\n    };\n\n    return _this;\n  }\n\n  var _proto = CSSTransition.prototype;\n\n  _proto.removeClasses = function removeClasses(node, type) {\n    var _this$getClassNames6 = this.getClassNames(type),\n        className = _this$getClassNames6.className,\n        activeClassName = _this$getClassNames6.activeClassName,\n        doneClassName = _this$getClassNames6.doneClassName;\n\n    className && removeClass(node, className);\n    activeClassName && removeClass(node, activeClassName);\n    doneClassName && removeClass(node, doneClassName);\n  };\n\n  _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n    // This is for to force a repaint,\n    // which is necessary in order to transition styles when adding a class name.\n    if (className) {\n      /* eslint-disable no-unused-expressions */\n      node && node.scrollTop;\n      /* eslint-enable no-unused-expressions */\n\n      addClass(node, className);\n    }\n  };\n\n  _proto.render = function render() {\n    var props = _extends({}, this.props);\n\n    delete props.classNames;\n    return _react.default.createElement(_Transition.default, _extends({}, props, {\n      onEnter: this.onEnter,\n      onEntered: this.onEntered,\n      onEntering: this.onEntering,\n      onExit: this.onExit,\n      onExiting: this.onExiting,\n      onExited: this.onExited\n    }));\n  };\n\n  return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n  classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n  /**\n   * The animation classNames applied to the component as it enters, exits or\n   * has finished the transition. A single name can be provided and it will be\n   * suffixed for each stage: e.g.\n   *\n   * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n   * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n   * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n   *\n   * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n   * This allows you to define different behavior for when appearing is done and\n   * when regular entering is done, using selectors like\n   * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n   * epic entrance animation when element first appears in the DOM using\n   * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n   * simply use `fade-enter-done` for defining both cases.\n   *\n   * Each individual classNames can also be specified independently like:\n   *\n   * ```js\n   * classNames={{\n   *  appear: 'my-appear',\n   *  appearActive: 'my-active-appear',\n   *  appearDone: 'my-done-appear',\n   *  enter: 'my-enter',\n   *  enterActive: 'my-active-enter',\n   *  enterDone: 'my-done-enter',\n   *  exit: 'my-exit',\n   *  exitActive: 'my-active-exit',\n   *  exitDone: 'my-done-exit',\n   * }}\n   * ```\n   *\n   * If you want to set these classes using CSS Modules:\n   *\n   * ```js\n   * import styles from './styles.css';\n   * ```\n   *\n   * you might want to use camelCase in your CSS file, that way could simply\n   * spread them instead of listing them one by one:\n   *\n   * ```js\n   * classNames={{ ...styles }}\n   * ```\n   *\n   * @type {string | {\n   *  appear?: string,\n   *  appearActive?: string,\n   *  appearDone?: string,\n   *  enter?: string,\n   *  enterActive?: string,\n   *  enterDone?: string,\n   *  exit?: string,\n   *  exitActive?: string,\n   *  exitDone?: string,\n   * }}\n   */\n  classNames: _PropTypes.classNamesShape,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n   * applied.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter-active' or\n   * 'appear-active' class is applied.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or\n   * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' class is\n   * applied.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' classes\n   * are **removed** and the `exit-done` class is added to the DOM node.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];", "\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) _react.Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return (0, _react.cloneElement)(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!(0, _react.isValidElement)(child)) return;\n    var hasPrev = key in prevChildMapping;\n    var hasNext = key in nextChildMapping;\n    var prevChild = prevChildMapping[key];\n    var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n  /**\n   * The `<TransitionGroup>` component manages a set of transition components\n   * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n   * components, `<TransitionGroup>` is a state machine for managing the mounting\n   * and unmounting of components over time.\n   *\n   * Consider the example below. As items are removed or added to the TodoList the\n   * `in` prop is toggled automatically by the `<TransitionGroup>`.\n   *\n   * Note that `<TransitionGroup>`  does not define any animation behavior!\n   * Exactly _how_ a list item animates is up to the individual transition\n   * component. This means you can mix and match animations across different list\n   * items.\n   */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: {\n        isMounting: !this.appeared\n      }\n    };\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.appeared = true;\n    this.mounted = true;\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  };\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = _extends({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return children;\n    }\n\n    return _react.default.createElement(Component, props, children);\n  };\n\n  return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n  transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: _propTypes.default.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: _propTypes.default.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: _propTypes.default.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: _propTypes.default.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<ReplaceTransition>` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * <ReplaceTransition in>\n *   <Fade><div>I appear first</div></Fade>\n *   <Fade><div>I replace the above</div></Fade>\n * </ReplaceTransition>\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ReplaceTransition, _React$Component);\n\n  function ReplaceTransition() {\n    var _this;\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n    _this.handleEnter = function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return _this.handleLifecycle('onEnter', 0, args);\n    };\n\n    _this.handleEntering = function () {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n\n      return _this.handleLifecycle('onEntering', 0, args);\n    };\n\n    _this.handleEntered = function () {\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args[_key4] = arguments[_key4];\n      }\n\n      return _this.handleLifecycle('onEntered', 0, args);\n    };\n\n    _this.handleExit = function () {\n      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n        args[_key5] = arguments[_key5];\n      }\n\n      return _this.handleLifecycle('onExit', 1, args);\n    };\n\n    _this.handleExiting = function () {\n      for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n        args[_key6] = arguments[_key6];\n      }\n\n      return _this.handleLifecycle('onExiting', 1, args);\n    };\n\n    _this.handleExited = function () {\n      for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n        args[_key7] = arguments[_key7];\n      }\n\n      return _this.handleLifecycle('onExited', 1, args);\n    };\n\n    return _this;\n  }\n\n  var _proto = ReplaceTransition.prototype;\n\n  _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n    var _child$props;\n\n    var children = this.props.children;\n\n    var child = _react.default.Children.toArray(children)[idx];\n\n    if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n    if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        inProp = _this$props.in,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n    var _React$Children$toArr = _react.default.Children.toArray(children),\n        first = _React$Children$toArr[0],\n        second = _React$Children$toArr[1];\n\n    delete props.onEnter;\n    delete props.onEntering;\n    delete props.onEntered;\n    delete props.onExit;\n    delete props.onExiting;\n    delete props.onExited;\n    return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n      key: 'first',\n      onEnter: this.handleEnter,\n      onEntering: this.handleEntering,\n      onEntered: this.handleEntered\n    }) : _react.default.cloneElement(second, {\n      key: 'second',\n      onEnter: this.handleExit,\n      onEntering: this.handleExiting,\n      onEntered: this.handleExited\n    }));\n  };\n\n  return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  in: _propTypes.default.bool.isRequired,\n  children: function children(props, propName) {\n    if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n    return null;\n  }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];", "\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n  Transition: _Transition.default,\n  TransitionGroup: _TransitionGroup.default,\n  ReplaceTransition: _ReplaceTransition.default,\n  CSSTransition: _CSSTransition.default\n};", "var Symbol = require('./_Symbol'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n", "var arrayPush = require('./_arrayPush'),\n    isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseFlatten;\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\nmodule.exports = createBaseFor;\n", "var createBaseFor = require('./_createBaseFor');\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\nmodule.exports = baseFor;\n", "var baseFor = require('./_baseFor'),\n    keys = require('./keys');\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\nmodule.exports = baseForOwn;\n", "var isArrayLike = require('./isArrayLike');\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\nmodule.exports = createBaseEach;\n", "var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\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\nmodule.exports = baseEach;\n", "var baseEach = require('./_baseEach'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\nmodule.exports = baseMap;\n", "/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n  var length = array.length;\n\n  array.sort(comparer);\n  while (length--) {\n    array[length] = array[length].value;\n  }\n  return array;\n}\n\nmodule.exports = baseSortBy;\n", "var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined,\n        valIsNull = value === null,\n        valIsReflexive = value === value,\n        valIsSymbol = isSymbol(value);\n\n    var othIsDefined = other !== undefined,\n        othIsNull = other === null,\n        othIsReflexive = other === other,\n        othIsSymbol = isSymbol(other);\n\n    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n        (valIsNull && othIsDefined && othIsReflexive) ||\n        (!valIsDefined && othIsReflexive) ||\n        !valIsReflexive) {\n      return 1;\n    }\n    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n        (othIsNull && valIsDefined && valIsReflexive) ||\n        (!othIsDefined && valIsReflexive) ||\n        !othIsReflexive) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\nmodule.exports = compareAscending;\n", "var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n  var index = -1,\n      objCriteria = object.criteria,\n      othCriteria = other.criteria,\n      length = objCriteria.length,\n      ordersLength = orders.length;\n\n  while (++index < length) {\n    var result = compareAscending(objCriteria[index], othCriteria[index]);\n    if (result) {\n      if (index >= ordersLength) {\n        return result;\n      }\n      var order = orders[index];\n      return result * (order == 'desc' ? -1 : 1);\n    }\n  }\n  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n  // that causes it, under certain circumstances, to provide the same value for\n  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n  // for more details.\n  //\n  // This also ensures a stable sort in V8 and other engines.\n  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n  return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n", "var arrayMap = require('./_arrayMap'),\n    baseGet = require('./_baseGet'),\n    baseIteratee = require('./_baseIteratee'),\n    baseMap = require('./_baseMap'),\n    baseSortBy = require('./_baseSortBy'),\n    baseUnary = require('./_baseUnary'),\n    compareMultiple = require('./_compareMultiple'),\n    identity = require('./identity'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n  if (iteratees.length) {\n    iteratees = arrayMap(iteratees, function(iteratee) {\n      if (isArray(iteratee)) {\n        return function(value) {\n          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n        };\n      }\n      return iteratee;\n    });\n  } else {\n    iteratees = [identity];\n  }\n\n  var index = -1;\n  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n  var result = baseMap(collection, function(value, key, collection) {\n    var criteria = arrayMap(iteratees, function(iteratee) {\n      return iteratee(value);\n    });\n    return { 'criteria': criteria, 'index': ++index, 'value': value };\n  });\n\n  return baseSortBy(result, function(object, other) {\n    return compareMultiple(object, other, orders);\n  });\n}\n\nmodule.exports = baseOrderBy;\n", "/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n", "var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n", "/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n", "var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n", "var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n", "/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n", "var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n", "var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n", "var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n", "var baseFlatten = require('./_baseFlatten'),\n    baseOrderBy = require('./_baseOrderBy'),\n    baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 30 },\n *   { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n  if (collection == null) {\n    return [];\n  }\n  var length = iteratees.length;\n  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n    iteratees = [];\n  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n    iteratees = [iteratees[0]];\n  }\n  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n", "var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n", "var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n", "var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n", "var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n", "var openParentheses = \"(\".charCodeAt(0);\nvar closeParentheses = \")\".charCodeAt(0);\nvar singleQuote = \"'\".charCodeAt(0);\nvar doubleQuote = '\"'.charCodeAt(0);\nvar backslash = \"\\\\\".charCodeAt(0);\nvar slash = \"/\".charCodeAt(0);\nvar comma = \",\".charCodeAt(0);\nvar colon = \":\".charCodeAt(0);\nvar star = \"*\".charCodeAt(0);\n\nmodule.exports = function(input) {\n  var tokens = [];\n  var value = input;\n\n  var next, quote, prev, token, escape, escapePos, whitespacePos;\n  var pos = 0;\n  var code = value.charCodeAt(pos);\n  var max = value.length;\n  var stack = [{ nodes: tokens }];\n  var balanced = 0;\n  var parent;\n\n  var name = \"\";\n  var before = \"\";\n  var after = \"\";\n\n  while (pos < max) {\n    // Whitespaces\n    if (code <= 32) {\n      next = pos;\n      do {\n        next += 1;\n        code = value.charCodeAt(next);\n      } while (code <= 32);\n      token = value.slice(pos, next);\n\n      prev = tokens[tokens.length - 1];\n      if (code === closeParentheses && balanced) {\n        after = token;\n      } else if (prev && prev.type === \"div\") {\n        prev.after = token;\n      } else if (\n        code === comma ||\n        code === colon ||\n        (code === slash && value.charCodeAt(next + 1) !== star)\n      ) {\n        before = token;\n      } else {\n        tokens.push({\n          type: \"space\",\n          sourceIndex: pos,\n          value: token\n        });\n      }\n\n      pos = next;\n\n      // Quotes\n    } else if (code === singleQuote || code === doubleQuote) {\n      next = pos;\n      quote = code === singleQuote ? \"'\" : '\"';\n      token = {\n        type: \"string\",\n        sourceIndex: pos,\n        quote: quote\n      };\n      do {\n        escape = false;\n        next = value.indexOf(quote, next + 1);\n        if (~next) {\n          escapePos = next;\n          while (value.charCodeAt(escapePos - 1) === backslash) {\n            escapePos -= 1;\n            escape = !escape;\n          }\n        } else {\n          value += quote;\n          next = value.length - 1;\n          token.unclosed = true;\n        }\n      } while (escape);\n      token.value = value.slice(pos + 1, next);\n\n      tokens.push(token);\n      pos = next + 1;\n      code = value.charCodeAt(pos);\n\n      // Comments\n    } else if (code === slash && value.charCodeAt(pos + 1) === star) {\n      token = {\n        type: \"comment\",\n        sourceIndex: pos\n      };\n\n      next = value.indexOf(\"*/\", pos);\n      if (next === -1) {\n        token.unclosed = true;\n        next = value.length;\n      }\n\n      token.value = value.slice(pos + 2, next);\n      tokens.push(token);\n\n      pos = next + 2;\n      code = value.charCodeAt(pos);\n\n      // Dividers\n    } else if (code === slash || code === comma || code === colon) {\n      token = value[pos];\n\n      tokens.push({\n        type: \"div\",\n        sourceIndex: pos - before.length,\n        value: token,\n        before: before,\n        after: \"\"\n      });\n      before = \"\";\n\n      pos += 1;\n      code = value.charCodeAt(pos);\n\n      // Open parentheses\n    } else if (openParentheses === code) {\n      // Whitespaces after open parentheses\n      next = pos;\n      do {\n        next += 1;\n        code = value.charCodeAt(next);\n      } while (code <= 32);\n      token = {\n        type: \"function\",\n        sourceIndex: pos - name.length,\n        value: name,\n        before: value.slice(pos + 1, next)\n      };\n      pos = next;\n\n      if (name === \"url\" && code !== singleQuote && code !== doubleQuote) {\n        next -= 1;\n        do {\n          escape = false;\n          next = value.indexOf(\")\", next + 1);\n          if (~next) {\n            escapePos = next;\n            while (value.charCodeAt(escapePos - 1) === backslash) {\n              escapePos -= 1;\n              escape = !escape;\n            }\n          } else {\n            value += \")\";\n            next = value.length - 1;\n            token.unclosed = true;\n          }\n        } while (escape);\n        // Whitespaces before closed\n        whitespacePos = next;\n        do {\n          whitespacePos -= 1;\n          code = value.charCodeAt(whitespacePos);\n        } while (code <= 32);\n        if (pos !== whitespacePos + 1) {\n          token.nodes = [\n            {\n              type: \"word\",\n              sourceIndex: pos,\n              value: value.slice(pos, whitespacePos + 1)\n            }\n          ];\n        } else {\n          token.nodes = [];\n        }\n        if (token.unclosed && whitespacePos + 1 !== next) {\n          token.after = \"\";\n          token.nodes.push({\n            type: \"space\",\n            sourceIndex: whitespacePos + 1,\n            value: value.slice(whitespacePos + 1, next)\n          });\n        } else {\n          token.after = value.slice(whitespacePos + 1, next);\n        }\n        pos = next + 1;\n        code = value.charCodeAt(pos);\n        tokens.push(token);\n      } else {\n        balanced += 1;\n        token.after = \"\";\n        tokens.push(token);\n        stack.push(token);\n        tokens = token.nodes = [];\n        parent = token;\n      }\n      name = \"\";\n\n      // Close parentheses\n    } else if (closeParentheses === code && balanced) {\n      pos += 1;\n      code = value.charCodeAt(pos);\n\n      parent.after = after;\n      after = \"\";\n      balanced -= 1;\n      stack.pop();\n      parent = stack[balanced];\n      tokens = parent.nodes;\n\n      // Words\n    } else {\n      next = pos;\n      do {\n        if (code === backslash) {\n          next += 1;\n        }\n        next += 1;\n        code = value.charCodeAt(next);\n      } while (\n        next < max &&\n        !(\n          code <= 32 ||\n          code === singleQuote ||\n          code === doubleQuote ||\n          code === comma ||\n          code === colon ||\n          code === slash ||\n          code === openParentheses ||\n          (code === closeParentheses && balanced)\n        )\n      );\n      token = value.slice(pos, next);\n\n      if (openParentheses === code) {\n        name = token;\n      } else {\n        tokens.push({\n          type: \"word\",\n          sourceIndex: pos,\n          value: token\n        });\n      }\n\n      pos = next;\n    }\n  }\n\n  for (pos = stack.length - 1; pos; pos -= 1) {\n    stack[pos].unclosed = true;\n  }\n\n  return stack[0].nodes;\n};\n", "module.exports = function walk(nodes, cb, bubble) {\n  var i, max, node, result;\n\n  for (i = 0, max = nodes.length; i < max; i += 1) {\n    node = nodes[i];\n    if (!bubble) {\n      result = cb(node, i, nodes);\n    }\n\n    if (\n      result !== false &&\n      node.type === \"function\" &&\n      Array.isArray(node.nodes)\n    ) {\n      walk(node.nodes, cb, bubble);\n    }\n\n    if (bubble) {\n      cb(node, i, nodes);\n    }\n  }\n};\n", "function stringifyNode(node, custom) {\n  var type = node.type;\n  var value = node.value;\n  var buf;\n  var customResult;\n\n  if (custom && (customResult = custom(node)) !== undefined) {\n    return customResult;\n  } else if (type === \"word\" || type === \"space\") {\n    return value;\n  } else if (type === \"string\") {\n    buf = node.quote || \"\";\n    return buf + value + (node.unclosed ? \"\" : buf);\n  } else if (type === \"comment\") {\n    return \"/*\" + value + (node.unclosed ? \"\" : \"*/\");\n  } else if (type === \"div\") {\n    return (node.before || \"\") + value + (node.after || \"\");\n  } else if (Array.isArray(node.nodes)) {\n    buf = stringify(node.nodes);\n    if (type !== \"function\") {\n      return buf;\n    }\n    return (\n      value +\n      \"(\" +\n      (node.before || \"\") +\n      buf +\n      (node.after || \"\") +\n      (node.unclosed ? \"\" : \")\")\n    );\n  }\n  return value;\n}\n\nfunction stringify(nodes, custom) {\n  var result, i;\n\n  if (Array.isArray(nodes)) {\n    result = \"\";\n    for (i = nodes.length - 1; ~i; i -= 1) {\n      result = stringifyNode(nodes[i], custom) + result;\n    }\n    return result;\n  }\n  return stringifyNode(nodes, custom);\n}\n\nmodule.exports = stringify;\n", "var minus = \"-\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar dot = \".\".charCodeAt(0);\nvar exp = \"e\".charCodeAt(0);\nvar EXP = \"E\".charCodeAt(0);\n\nmodule.exports = function(value) {\n  var pos = 0;\n  var length = value.length;\n  var dotted = false;\n  var sciPos = -1;\n  var containsNumber = false;\n  var code;\n\n  while (pos < length) {\n    code = value.charCodeAt(pos);\n\n    if (code >= 48 && code <= 57) {\n      containsNumber = true;\n    } else if (code === exp || code === EXP) {\n      if (sciPos > -1) {\n        break;\n      }\n      sciPos = pos;\n    } else if (code === dot) {\n      if (dotted) {\n        break;\n      }\n      dotted = true;\n    } else if (code === plus || code === minus) {\n      if (pos !== 0) {\n        break;\n      }\n    } else {\n      break;\n    }\n\n    pos += 1;\n  }\n\n  if (sciPos + 1 === pos) pos--;\n\n  return containsNumber\n    ? {\n        number: value.slice(0, pos),\n        unit: value.slice(pos)\n      }\n    : false;\n};\n", "var parse = require(\"./parse\");\nvar walk = require(\"./walk\");\nvar stringify = require(\"./stringify\");\n\nfunction ValueParser(value) {\n  if (this instanceof ValueParser) {\n    this.nodes = parse(value);\n    return this;\n  }\n  return new ValueParser(value);\n}\n\nValueParser.prototype.toString = function() {\n  return Array.isArray(this.nodes) ? stringify(this.nodes) : \"\";\n};\n\nValueParser.prototype.walk = function(cb, bubble) {\n  walk(this.nodes, cb, bubble);\n  return this;\n};\n\nValueParser.unit = require(\"./unit\");\n\nValueParser.walk = walk;\n\nValueParser.stringify = stringify;\n\nmodule.exports = ValueParser;\n", "\n/* parser generated by jison 0.6.1-215 */\n\n/*\n * Returns a Parser object of the following structure:\n *\n *  Parser: {\n *    yy: {}     The so-called \"shared state\" or rather the *source* of it;\n *               the real \"shared state\" `yy` passed around to\n *               the rule actions, etc. is a derivative/copy of this one,\n *               not a direct reference!\n *  }\n *\n *  Parser.prototype: {\n *    yy: {},\n *    EOF: 1,\n *    TERROR: 2,\n *\n *    trace: function(errorMessage, ...),\n *\n *    JisonParserError: function(msg, hash),\n *\n *    quoteName: function(name),\n *               Helper function which can be overridden by user code later on: put suitable\n *               quotes around literal IDs in a description string.\n *\n *    originalQuoteName: function(name),\n *               The basic quoteName handler provided by JISON.\n *               `cleanupAfterParse()` will clean up and reset `quoteName()` to reference this function\n *               at the end of the `parse()`.\n *\n *    describeSymbol: function(symbol),\n *               Return a more-or-less human-readable description of the given symbol, when\n *               available, or the symbol itself, serving as its own 'description' for lack\n *               of something better to serve up.\n *\n *               Return NULL when the symbol is unknown to the parser.\n *\n *    symbols_: {associative list: name ==> number},\n *    terminals_: {associative list: number ==> name},\n *    nonterminals: {associative list: rule-name ==> {associative list: number ==> rule-alt}},\n *    terminal_descriptions_: (if there are any) {associative list: number ==> description},\n *    productions_: [...],\n *\n *    performAction: function parser__performAction(yytext, yyleng, yylineno, yyloc, yystate, yysp, yyvstack, yylstack, yystack, yysstack),\n *\n *               The function parameters and `this` have the following value/meaning:\n *               - `this`    : reference to the `yyval` internal object, which has members (`$` and `_$`)\n *                             to store/reference the rule value `$$` and location info `@$`.\n *\n *                 One important thing to note about `this` a.k.a. `yyval`: every *reduce* action gets\n *                 to see the same object via the `this` reference, i.e. if you wish to carry custom\n *                 data from one reduce action through to the next within a single parse run, then you\n *                 may get nasty and use `yyval` a.k.a. `this` for storing you own semi-permanent data.\n *\n *                 `this.yy` is a direct reference to the `yy` shared state object.\n *\n *                 `%parse-param`-specified additional `parse()` arguments have been added to this `yy`\n *                 object at `parse()` start and are therefore available to the action code via the\n *                 same named `yy.xxxx` attributes (where `xxxx` represents a identifier name from\n *                 the %parse-param` list.\n *\n *               - `yytext`  : reference to the lexer value which belongs to the last lexer token used\n *                             to match this rule. This is *not* the look-ahead token, but the last token\n *                             that's actually part of this rule.\n *\n *                 Formulated another way, `yytext` is the value of the token immediately preceeding\n *                 the current look-ahead token.\n *                 Caveats apply for rules which don't require look-ahead, such as epsilon rules.\n *\n *               - `yyleng`  : ditto as `yytext`, only now for the lexer.yyleng value.\n *\n *               - `yylineno`: ditto as `yytext`, only now for the lexer.yylineno value.\n *\n *               - `yyloc`   : ditto as `yytext`, only now for the lexer.yylloc lexer token location info.\n *\n *                               WARNING: since jison 0.4.18-186 this entry may be NULL/UNDEFINED instead\n *                               of an empty object when no suitable location info can be provided.\n *\n *               - `yystate` : the current parser state number, used internally for dispatching and\n *                               executing the action code chunk matching the rule currently being reduced.\n *\n *               - `yysp`    : the current state stack position (a.k.a. 'stack pointer')\n *\n *                 This one comes in handy when you are going to do advanced things to the parser\n *                 stacks, all of which are accessible from your action code (see the next entries below).\n *\n *                 Also note that you can access this and other stack index values using the new double-hash\n *                 syntax, i.e. `##$ === ##0 === yysp`, while `##1` is the stack index for all things\n *                 related to the first rule term, just like you have `$1`, `@1` and `#1`.\n *                 This is made available to write very advanced grammar action rules, e.g. when you want\n *                 to investigate the parse state stack in your action code, which would, for example,\n *                 be relevant when you wish to implement error diagnostics and reporting schemes similar\n *                 to the work described here:\n *\n *                 + Pottier, F., 2016. Reachability and error diagnosis in LR(1) automata.\n *                   In Journ\u00E9es Francophones des Languages Applicatifs.\n *\n *                 + Jeffery, C.L., 2003. Generating LR syntax error messages from examples.\n *                   ACM Transactions on Programming Languages and Systems (TOPLAS), 25(5), pp.631\u2013640.\n *\n *               - `yyrulelength`: the current rule's term count, i.e. the number of entries occupied on the stack.\n *\n *                 This one comes in handy when you are going to do advanced things to the parser\n *                 stacks, all of which are accessible from your action code (see the next entries below).\n *\n *               - `yyvstack`: reference to the parser value stack. Also accessed via the `$1` etc.\n *                             constructs.\n *\n *               - `yylstack`: reference to the parser token location stack. Also accessed via\n *                             the `@1` etc. constructs.\n *\n *                             WARNING: since jison 0.4.18-186 this array MAY contain slots which are\n *                             UNDEFINED rather than an empty (location) object, when the lexer/parser\n *                             action code did not provide a suitable location info object when such a\n *                             slot was filled!\n *\n *               - `yystack` : reference to the parser token id stack. Also accessed via the\n *                             `#1` etc. constructs.\n *\n *                 Note: this is a bit of a **white lie** as we can statically decode any `#n` reference to\n *                 its numeric token id value, hence that code wouldn't need the `yystack` but *you* might\n *                 want access this array for your own purposes, such as error analysis as mentioned above!\n *\n *                 Note that this stack stores the current stack of *tokens*, that is the sequence of\n *                 already parsed=reduced *nonterminals* (tokens representing rules) and *terminals*\n *                 (lexer tokens *shifted* onto the stack until the rule they belong to is found and\n *                 *reduced*.\n *\n *               - `yysstack`: reference to the parser state stack. This one carries the internal parser\n *                             *states* such as the one in `yystate`, which are used to represent\n *                             the parser state machine in the *parse table*. *Very* *internal* stuff,\n *                             what can I say? If you access this one, you're clearly doing wicked things\n *\n *               - `...`     : the extra arguments you specified in the `%parse-param` statement in your\n *                             grammar definition file.\n *\n *    table: [...],\n *               State transition table\n *               ----------------------\n *\n *               index levels are:\n *               - `state`  --> hash table\n *               - `symbol` --> action (number or array)\n *\n *                 If the `action` is an array, these are the elements' meaning:\n *                 - index [0]: 1 = shift, 2 = reduce, 3 = accept\n *                 - index [1]: GOTO `state`\n *\n *                 If the `action` is a number, it is the GOTO `state`\n *\n *    defaultActions: {...},\n *\n *    parseError: function(str, hash, ExceptionClass),\n *    yyError: function(str, ...),\n *    yyRecovering: function(),\n *    yyErrOk: function(),\n *    yyClearIn: function(),\n *\n *    constructParseErrorInfo: function(error_message, exception_object, expected_token_set, is_recoverable),\n *               Helper function **which will be set up during the first invocation of the `parse()` method**.\n *               Produces a new errorInfo 'hash object' which can be passed into `parseError()`.\n *               See it's use in this parser kernel in many places; example usage:\n *\n *                   var infoObj = parser.constructParseErrorInfo('fail!', null,\n *                                     parser.collect_expected_token_set(state), true);\n *                   var retVal = parser.parseError(infoObj.errStr, infoObj, parser.JisonParserError);\n *\n *    originalParseError: function(str, hash, ExceptionClass),\n *               The basic `parseError` handler provided by JISON.\n *               `cleanupAfterParse()` will clean up and reset `parseError()` to reference this function\n *               at the end of the `parse()`.\n *\n *    options: { ... parser %options ... },\n *\n *    parse: function(input[, args...]),\n *               Parse the given `input` and return the parsed value (or `true` when none was provided by\n *               the root action, in which case the parser is acting as a *matcher*).\n *               You MAY use the additional `args...` parameters as per `%parse-param` spec of this grammar:\n *               these extra `args...` are added verbatim to the `yy` object reference as member variables.\n *\n *               WARNING:\n *               Parser's additional `args...` parameters (via `%parse-param`) MAY conflict with\n *               any attributes already added to `yy` by the jison run-time;\n *               when such a collision is detected an exception is thrown to prevent the generated run-time\n *               from silently accepting this confusing and potentially hazardous situation!\n *\n *               The lexer MAY add its own set of additional parameters (via the `%parse-param` line in\n *               the lexer section of the grammar spec): these will be inserted in the `yy` shared state\n *               object and any collision with those will be reported by the lexer via a thrown exception.\n *\n *    cleanupAfterParse: function(resultValue, invoke_post_methods, do_not_nuke_errorinfos),\n *               Helper function **which will be set up during the first invocation of the `parse()` method**.\n *               This helper API is invoked at the end of the `parse()` call, unless an exception was thrown\n *               and `%options no-try-catch` has been defined for this grammar: in that case this helper MAY\n *               be invoked by calling user code to ensure the `post_parse` callbacks are invoked and\n *               the internal parser gets properly garbage collected under these particular circumstances.\n *\n *    yyMergeLocationInfo: function(first_index, last_index, first_yylloc, last_yylloc, dont_look_back),\n *               Helper function **which will be set up during the first invocation of the `parse()` method**.\n *               This helper API can be invoked to calculate a spanning `yylloc` location info object.\n *\n *               Note: %epsilon rules MAY specify no `first_index` and `first_yylloc`, in which case\n *               this function will attempt to obtain a suitable location marker by inspecting the location stack\n *               backwards.\n *\n *               For more info see the documentation comment further below, immediately above this function's\n *               implementation.\n *\n *    lexer: {\n *        yy: {...},           A reference to the so-called \"shared state\" `yy` once\n *                             received via a call to the `.setInput(input, yy)` lexer API.\n *        EOF: 1,\n *        ERROR: 2,\n *        JisonLexerError: function(msg, hash),\n *        parseError: function(str, hash, ExceptionClass),\n *        setInput: function(input, [yy]),\n *        input: function(),\n *        unput: function(str),\n *        more: function(),\n *        reject: function(),\n *        less: function(n),\n *        pastInput: function(n),\n *        upcomingInput: function(n),\n *        showPosition: function(),\n *        test_match: function(regex_match_array, rule_index, ...),\n *        next: function(...),\n *        lex: function(...),\n *        begin: function(condition),\n *        pushState: function(condition),\n *        popState: function(),\n *        topState: function(),\n *        _currentRules: function(),\n *        stateStackSize: function(),\n *        cleanupAfterLex: function()\n *\n *        options: { ... lexer %options ... },\n *\n *        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START, ...),\n *        rules: [...],\n *        conditions: {associative list: name ==> set},\n *    }\n *  }\n *\n *\n *  token location info (@$, _$, etc.): {\n *    first_line: n,\n *    last_line: n,\n *    first_column: n,\n *    last_column: n,\n *    range: [start_number, end_number]\n *               (where the numbers are indexes into the input string, zero-based)\n *  }\n *\n * ---\n *\n * The `parseError` function receives a 'hash' object with these members for lexer and\n * parser errors:\n *\n *  {\n *    text:        (matched text)\n *    token:       (the produced terminal token, if any)\n *    token_id:    (the produced terminal token numeric ID, if any)\n *    line:        (yylineno)\n *    loc:         (yylloc)\n *  }\n *\n * parser (grammar) errors will also provide these additional members:\n *\n *  {\n *    expected:    (array describing the set of expected tokens;\n *                  may be UNDEFINED when we cannot easily produce such a set)\n *    state:       (integer (or array when the table includes grammar collisions);\n *                  represents the current internal state of the parser kernel.\n *                  can, for example, be used to pass to the `collect_expected_token_set()`\n *                  API to obtain the expected token set)\n *    action:      (integer; represents the current internal action which will be executed)\n *    new_state:   (integer; represents the next/planned internal state, once the current\n *                  action has executed)\n *    recoverable: (boolean: TRUE when the parser MAY have an error recovery rule\n *                  available for this particular error)\n *    state_stack: (array: the current parser LALR/LR internal state stack; this can be used,\n *                  for instance, for advanced error analysis and reporting)\n *    value_stack: (array: the current parser LALR/LR internal `$$` value stack; this can be used,\n *                  for instance, for advanced error analysis and reporting)\n *    location_stack: (array: the current parser LALR/LR internal location stack; this can be used,\n *                  for instance, for advanced error analysis and reporting)\n *    yy:          (object: the current parser internal \"shared state\" `yy`\n *                  as is also available in the rule actions; this can be used,\n *                  for instance, for advanced error analysis and reporting)\n *    lexer:       (reference to the current lexer instance used by the parser)\n *    parser:      (reference to the current parser instance)\n *  }\n *\n * while `this` will reference the current parser instance.\n *\n * When `parseError` is invoked by the lexer, `this` will still reference the related *parser*\n * instance, while these additional `hash` fields will also be provided:\n *\n *  {\n *    lexer:       (reference to the current lexer instance which reported the error)\n *  }\n *\n * When `parseError` is invoked by the parser due to a **JavaScript exception** being fired\n * from either the parser or lexer, `this` will still reference the related *parser*\n * instance, while these additional `hash` fields will also be provided:\n *\n *  {\n *    exception:   (reference to the exception thrown)\n *  }\n *\n * Please do note that in the latter situation, the `expected` field will be omitted as\n * this type of failure is assumed not to be due to *parse errors* but rather due to user\n * action code in either parser or lexer failing unexpectedly.\n *\n * ---\n *\n * You can specify parser options by setting / modifying the `.yy` object of your Parser instance.\n * These options are available:\n *\n * ### options which are global for all parser instances\n *\n *  Parser.pre_parse: function(yy)\n *                 optional: you can specify a pre_parse() function in the chunk following\n *                 the grammar, i.e. after the last `%%`.\n *  Parser.post_parse: function(yy, retval, parseInfo) { return retval; }\n *                 optional: you can specify a post_parse() function in the chunk following\n *                 the grammar, i.e. after the last `%%`. When it does not return any value,\n *                 the parser will return the original `retval`.\n *\n * ### options which can be set up per parser instance\n *\n *  yy: {\n *      pre_parse:  function(yy)\n *                 optional: is invoked before the parse cycle starts (and before the first\n *                 invocation of `lex()`) but immediately after the invocation of\n *                 `parser.pre_parse()`).\n *      post_parse: function(yy, retval, parseInfo) { return retval; }\n *                 optional: is invoked when the parse terminates due to success ('accept')\n *                 or failure (even when exceptions are thrown).\n *                 `retval` contains the return value to be produced by `Parser.parse()`;\n *                 this function can override the return value by returning another.\n *                 When it does not return any value, the parser will return the original\n *                 `retval`.\n *                 This function is invoked immediately before `parser.post_parse()`.\n *\n *      parseError: function(str, hash, ExceptionClass)\n *                 optional: overrides the default `parseError` function.\n *      quoteName: function(name),\n *                 optional: overrides the default `quoteName` function.\n *  }\n *\n *  parser.lexer.options: {\n *      pre_lex:  function()\n *                 optional: is invoked before the lexer is invoked to produce another token.\n *                 `this` refers to the Lexer object.\n *      post_lex: function(token) { return token; }\n *                 optional: is invoked when the lexer has produced a token `token`;\n *                 this function can override the returned token value by returning another.\n *                 When it does not return any (truthy) value, the lexer will return\n *                 the original `token`.\n *                 `this` refers to the Lexer object.\n *\n *      ranges: boolean\n *                 optional: `true` ==> token location info will include a .range[] member.\n *      flex: boolean\n *                 optional: `true` ==> flex-like lexing behaviour where the rules are tested\n *                 exhaustively to find the longest match.\n *      backtrack_lexer: boolean\n *                 optional: `true` ==> lexer regexes are tested in order and for invoked;\n *                 the lexer terminates the scan when a token is returned by the action code.\n *      xregexp: boolean\n *                 optional: `true` ==> lexer rule regexes are \"extended regex format\" requiring the\n *                 `XRegExp` library. When this `%option` has not been specified at compile time, all lexer\n *                 rule regexes have been written as standard JavaScript RegExp expressions.\n *  }\n */\n\n        \n    \n            var parser = (function () {\n\n\n// See also:\n// http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript/#35881508\n// but we keep the prototype.constructor and prototype.name assignment lines too for compatibility\n// with userland code which might access the derived class in a 'classic' way.\nfunction JisonParserError(msg, hash) {\n    Object.defineProperty(this, 'name', {\n        enumerable: false,\n        writable: false,\n        value: 'JisonParserError'\n    });\n\n    if (msg == null) msg = '???';\n\n    Object.defineProperty(this, 'message', {\n        enumerable: false,\n        writable: true,\n        value: msg\n    });\n\n    this.hash = hash;\n\n    var stacktrace;\n    if (hash && hash.exception instanceof Error) {\n        var ex2 = hash.exception;\n        this.message = ex2.message || msg;\n        stacktrace = ex2.stack;\n    }\n    if (!stacktrace) {\n        if (Error.hasOwnProperty('captureStackTrace')) {        // V8/Chrome engine\n            Error.captureStackTrace(this, this.constructor);\n        } else {\n            stacktrace = (new Error(msg)).stack;\n        }\n    }\n    if (stacktrace) {\n        Object.defineProperty(this, 'stack', {\n            enumerable: false,\n            writable: false,\n            value: stacktrace\n        });\n    }\n}\n\nif (typeof Object.setPrototypeOf === 'function') {\n    Object.setPrototypeOf(JisonParserError.prototype, Error.prototype);\n} else {\n    JisonParserError.prototype = Object.create(Error.prototype);\n}\nJisonParserError.prototype.constructor = JisonParserError;\nJisonParserError.prototype.name = 'JisonParserError';\n\n\n\n\n        // helper: reconstruct the productions[] table\n        function bp(s) {\n            var rv = [];\n            var p = s.pop;\n            var r = s.rule;\n            for (var i = 0, l = p.length; i < l; i++) {\n                rv.push([\n                    p[i],\n                    r[i]\n                ]);\n            }\n            return rv;\n        }\n    \n\n\n        // helper: reconstruct the defaultActions[] table\n        function bda(s) {\n            var rv = {};\n            var d = s.idx;\n            var g = s.goto;\n            for (var i = 0, l = d.length; i < l; i++) {\n                var j = d[i];\n                rv[j] = g[i];\n            }\n            return rv;\n        }\n    \n\n\n        // helper: reconstruct the 'goto' table\n        function bt(s) {\n            var rv = [];\n            var d = s.len;\n            var y = s.symbol;\n            var t = s.type;\n            var a = s.state;\n            var m = s.mode;\n            var g = s.goto;\n            for (var i = 0, l = d.length; i < l; i++) {\n                var n = d[i];\n                var q = {};\n                for (var j = 0; j < n; j++) {\n                    var z = y.shift();\n                    switch (t.shift()) {\n                    case 2:\n                        q[z] = [\n                            m.shift(),\n                            g.shift()\n                        ];\n                        break;\n\n                    case 0:\n                        q[z] = a.shift();\n                        break;\n\n                    default:\n                        // type === 1: accept\n                        q[z] = [\n                            3\n                        ];\n                    }\n                }\n                rv.push(q);\n            }\n            return rv;\n        }\n    \n\n\n        // helper: runlength encoding with increment step: code, length: step (default step = 0)\n        // `this` references an array\n        function s(c, l, a) {\n            a = a || 0;\n            for (var i = 0; i < l; i++) {\n                this.push(c);\n                c += a;\n            }\n        }\n\n        // helper: duplicate sequence from *relative* offset and length.\n        // `this` references an array\n        function c(i, l) {\n            i = this.length - i;\n            for (l += i; i < l; i++) {\n                this.push(this[i]);\n            }\n        }\n\n        // helper: unpack an array using helpers and data, all passed in an array argument 'a'.\n        function u(a) {\n            var rv = [];\n            for (var i = 0, l = a.length; i < l; i++) {\n                var e = a[i];\n                // Is this entry a helper function?\n                if (typeof e === 'function') {\n                    i++;\n                    e.apply(rv, a[i]);\n                } else {\n                    rv.push(e);\n                }\n            }\n            return rv;\n        }\n    \n\nvar parser = {\n    // Code Generator Information Report\n    // ---------------------------------\n    //\n    // Options:\n    //\n    //   default action mode: ............. [\"classic\",\"merge\"]\n    //   test-compile action mode: ........ \"parser:*,lexer:*\"\n    //   try..catch: ...................... true\n    //   default resolve on conflict: ..... true\n    //   on-demand look-ahead: ............ false\n    //   error recovery token skip maximum: 3\n    //   yyerror in parse actions is: ..... NOT recoverable,\n    //   yyerror in lexer actions and other non-fatal lexer are:\n    //   .................................. NOT recoverable,\n    //   debug grammar/output: ............ false\n    //   has partial LR conflict upgrade:   true\n    //   rudimentary token-stack support:   false\n    //   parser table compression mode: ... 2\n    //   export debug tables: ............. false\n    //   export *all* tables: ............. false\n    //   module type: ..................... commonjs\n    //   parser engine type: .............. lalr\n    //   output main() in the module: ..... true\n    //   has user-specified main(): ....... false\n    //   has user-specified require()/import modules for main():\n    //   .................................. false\n    //   number of expected conflicts: .... 0\n    //\n    //\n    // Parser Analysis flags:\n    //\n    //   no significant actions (parser is a language matcher only):\n    //   .................................. false\n    //   uses yyleng: ..................... false\n    //   uses yylineno: ................... false\n    //   uses yytext: ..................... false\n    //   uses yylloc: ..................... false\n    //   uses ParseError API: ............. false\n    //   uses YYERROR: .................... false\n    //   uses YYRECOVERING: ............... false\n    //   uses YYERROK: .................... false\n    //   uses YYCLEARIN: .................. false\n    //   tracks rule values: .............. true\n    //   assigns rule values: ............. true\n    //   uses location tracking: .......... false\n    //   assigns location: ................ false\n    //   uses yystack: .................... false\n    //   uses yysstack: ................... false\n    //   uses yysp: ....................... true\n    //   uses yyrulelength: ............... false\n    //   uses yyMergeLocationInfo API: .... false\n    //   has error recovery: .............. false\n    //   has error reporting: ............. false\n    //\n    // --------- END OF REPORT -----------\n\ntrace: function no_op_trace() { },\nJisonParserError: JisonParserError,\nyy: {},\noptions: {\n  type: \"lalr\",\n  hasPartialLrUpgradeOnConflict: true,\n  errorRecoveryTokenDiscardCount: 3\n},\nsymbols_: {\n  \"$accept\": 0,\n  \"$end\": 1,\n  \"ADD\": 3,\n  \"ANGLE\": 16,\n  \"CHS\": 22,\n  \"COMMA\": 14,\n  \"CSS_CPROP\": 13,\n  \"CSS_VAR\": 12,\n  \"DIV\": 6,\n  \"EMS\": 20,\n  \"EOF\": 1,\n  \"EXS\": 21,\n  \"FREQ\": 18,\n  \"LENGTH\": 15,\n  \"LPAREN\": 7,\n  \"MUL\": 5,\n  \"NESTED_CALC\": 9,\n  \"NUMBER\": 11,\n  \"PERCENTAGE\": 28,\n  \"PREFIX\": 10,\n  \"REMS\": 23,\n  \"RES\": 19,\n  \"RPAREN\": 8,\n  \"SUB\": 4,\n  \"TIME\": 17,\n  \"VHS\": 24,\n  \"VMAXS\": 27,\n  \"VMINS\": 26,\n  \"VWS\": 25,\n  \"css_value\": 33,\n  \"css_variable\": 32,\n  \"error\": 2,\n  \"expression\": 29,\n  \"math_expression\": 30,\n  \"value\": 31\n},\nterminals_: {\n  1: \"EOF\",\n  2: \"error\",\n  3: \"ADD\",\n  4: \"SUB\",\n  5: \"MUL\",\n  6: \"DIV\",\n  7: \"LPAREN\",\n  8: \"RPAREN\",\n  9: \"NESTED_CALC\",\n  10: \"PREFIX\",\n  11: \"NUMBER\",\n  12: \"CSS_VAR\",\n  13: \"CSS_CPROP\",\n  14: \"COMMA\",\n  15: \"LENGTH\",\n  16: \"ANGLE\",\n  17: \"TIME\",\n  18: \"FREQ\",\n  19: \"RES\",\n  20: \"EMS\",\n  21: \"EXS\",\n  22: \"CHS\",\n  23: \"REMS\",\n  24: \"VHS\",\n  25: \"VWS\",\n  26: \"VMINS\",\n  27: \"VMAXS\",\n  28: \"PERCENTAGE\"\n},\nTERROR: 2,\n    EOF: 1,\n\n    // internals: defined here so the object *structure* doesn't get modified by parse() et al,\n    // thus helping JIT compilers like Chrome V8.\n    originalQuoteName: null,\n    originalParseError: null,\n    cleanupAfterParse: null,\n    constructParseErrorInfo: null,\n    yyMergeLocationInfo: null,\n\n    __reentrant_call_depth: 0,      // INTERNAL USE ONLY\n    __error_infos: [],              // INTERNAL USE ONLY: the set of parseErrorInfo objects created since the last cleanup\n    __error_recovery_infos: [],     // INTERNAL USE ONLY: the set of parseErrorInfo objects created since the last cleanup\n\n    // APIs which will be set up depending on user action code analysis:\n    //yyRecovering: 0,\n    //yyErrOk: 0,\n    //yyClearIn: 0,\n\n    // Helper APIs\n    // -----------\n\n    // Helper function which can be overridden by user code later on: put suitable quotes around\n    // literal IDs in a description string.\n    quoteName: function parser_quoteName(id_str) {\n        return '\"' + id_str + '\"';\n    },\n\n    // Return the name of the given symbol (terminal or non-terminal) as a string, when available.\n    //\n    // Return NULL when the symbol is unknown to the parser.\n    getSymbolName: function parser_getSymbolName(symbol) {\n        if (this.terminals_[symbol]) {\n            return this.terminals_[symbol];\n        }\n\n        // Otherwise... this might refer to a RULE token i.e. a non-terminal: see if we can dig that one up.\n        //\n        // An example of this may be where a rule's action code contains a call like this:\n        //\n        //      parser.getSymbolName(#$)\n        //\n        // to obtain a human-readable name of the current grammar rule.\n        var s = this.symbols_;\n        for (var key in s) {\n            if (s[key] === symbol) {\n                return key;\n            }\n        }\n        return null;\n    },\n\n    // Return a more-or-less human-readable description of the given symbol, when available,\n    // or the symbol itself, serving as its own 'description' for lack of something better to serve up.\n    //\n    // Return NULL when the symbol is unknown to the parser.\n    describeSymbol: function parser_describeSymbol(symbol) {\n        if (symbol !== this.EOF && this.terminal_descriptions_ && this.terminal_descriptions_[symbol]) {\n            return this.terminal_descriptions_[symbol];\n        }\n        else if (symbol === this.EOF) {\n            return 'end of input';\n        }\n        var id = this.getSymbolName(symbol);\n        if (id) {\n            return this.quoteName(id);\n        }\n        return null;\n    },\n\n    // Produce a (more or less) human-readable list of expected tokens at the point of failure.\n    //\n    // The produced list may contain token or token set descriptions instead of the tokens\n    // themselves to help turning this output into something that easier to read by humans\n    // unless `do_not_describe` parameter is set, in which case a list of the raw, *numeric*,\n    // expected terminals and nonterminals is produced.\n    //\n    // The returned list (array) will not contain any duplicate entries.\n    collect_expected_token_set: function parser_collect_expected_token_set(state, do_not_describe) {\n        var TERROR = this.TERROR;\n        var tokenset = [];\n        var check = {};\n        // Has this (error?) state been outfitted with a custom expectations description text for human consumption?\n        // If so, use that one instead of the less palatable token set.\n        if (!do_not_describe && this.state_descriptions_ && this.state_descriptions_[state]) {\n            return [\n                this.state_descriptions_[state]\n            ];\n        }\n        for (var p in this.table[state]) {\n            p = +p;\n            if (p !== TERROR) {\n                var d = do_not_describe ? p : this.describeSymbol(p);\n                if (d && !check[d]) {\n                    tokenset.push(d);\n                    check[d] = true;        // Mark this token description as already mentioned to prevent outputting duplicate entries.\n                }\n            }\n        }\n        return tokenset;\n    },\nproductions_: bp({\n  pop: u([\n  29,\n  s,\n  [30, 10],\n  31,\n  31,\n  32,\n  32,\n  s,\n  [33, 15]\n]),\n  rule: u([\n  2,\n  s,\n  [3, 5],\n  4,\n  7,\n  s,\n  [1, 4],\n  2,\n  4,\n  6,\n  s,\n  [1, 14],\n  2\n])\n}),\nperformAction: function parser__PerformAction(yystate /* action[1] */, yysp, yyvstack) {\n\n          /* this == yyval */\n\n          // the JS engine itself can go and remove these statements when `yy` turns out to be unused in any action code!\n          var yy = this.yy;\n          var yyparser = yy.parser;\n          var yylexer = yy.lexer;\n\n          \n\n          switch (yystate) {\ncase 0:\n    /*! Production::    $accept : expression $end */\n\n    // default action (generated by JISON mode classic/merge :: 1,VT,VA,-,-,-,-,-,-):\n    this.$ = yyvstack[yysp - 1];\n    // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,-,-,-,-,-,-)\n    break;\n\ncase 1:\n    /*! Production::    expression : math_expression EOF */\n\n    // default action (generated by JISON mode classic/merge :: 2,VT,VA,-,-,-,-,-,-):\n    this.$ = yyvstack[yysp - 1];\n    // END of default action (generated by JISON mode classic/merge :: 2,VT,VA,-,-,-,-,-,-)\n    \n    \n    return yyvstack[yysp - 1];\n    break;\n\ncase 2:\n    /*! Production::    math_expression : math_expression ADD math_expression */\ncase 3:\n    /*! Production::    math_expression : math_expression SUB math_expression */\ncase 4:\n    /*! Production::    math_expression : math_expression MUL math_expression */\ncase 5:\n    /*! Production::    math_expression : math_expression DIV math_expression */\n\n    this.$ = { type: 'MathExpression', operator: yyvstack[yysp - 1], left: yyvstack[yysp - 2], right: yyvstack[yysp] };\n    break;\n\ncase 6:\n    /*! Production::    math_expression : LPAREN math_expression RPAREN */\n\n    this.$ = yyvstack[yysp - 1];\n    break;\n\ncase 7:\n    /*! Production::    math_expression : NESTED_CALC LPAREN math_expression RPAREN */\n\n    this.$ = { type: 'Calc', value: yyvstack[yysp - 1] };\n    break;\n\ncase 8:\n    /*! Production::    math_expression : SUB PREFIX SUB NESTED_CALC LPAREN math_expression RPAREN */\n\n    this.$ = { type: 'Calc', value: yyvstack[yysp - 1], prefix: yyvstack[yysp - 5] };\n    break;\n\ncase 9:\n    /*! Production::    math_expression : css_variable */\ncase 10:\n    /*! Production::    math_expression : css_value */\ncase 11:\n    /*! Production::    math_expression : value */\n\n    this.$ = yyvstack[yysp];\n    break;\n\ncase 12:\n    /*! Production::    value : NUMBER */\n\n    this.$ = { type: 'Value', value: parseFloat(yyvstack[yysp]) };\n    break;\n\ncase 13:\n    /*! Production::    value : SUB NUMBER */\n\n    this.$ = { type: 'Value', value: parseFloat(yyvstack[yysp]) * -1 };\n    break;\n\ncase 14:\n    /*! Production::    css_variable : CSS_VAR LPAREN CSS_CPROP RPAREN */\n\n    this.$ = { type: 'CssVariable', value: yyvstack[yysp - 1] };\n    break;\n\ncase 15:\n    /*! Production::    css_variable : CSS_VAR LPAREN CSS_CPROP COMMA math_expression RPAREN */\n\n    this.$ = { type: 'CssVariable', value: yyvstack[yysp - 3], fallback: yyvstack[yysp - 1] };\n    break;\n\ncase 16:\n    /*! Production::    css_value : LENGTH */\n\n    this.$ = { type: 'LengthValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n    break;\n\ncase 17:\n    /*! Production::    css_value : ANGLE */\n\n    this.$ = { type: 'AngleValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n    break;\n\ncase 18:\n    /*! Production::    css_value : TIME */\n\n    this.$ = { type: 'TimeValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n    break;\n\ncase 19:\n    /*! Production::    css_value : FREQ */\n\n    this.$ = { type: 'FrequencyValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n    break;\n\ncase 20:\n    /*! Production::    css_value : RES */\n\n    this.$ = { type: 'ResolutionValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n    break;\n\ncase 21:\n    /*! Production::    css_value : EMS */\n\n    this.$ = { type: 'EmValue', value: parseFloat(yyvstack[yysp]), unit: 'em' };\n    break;\n\ncase 22:\n    /*! Production::    css_value : EXS */\n\n    this.$ = { type: 'ExValue', value: parseFloat(yyvstack[yysp]), unit: 'ex' };\n    break;\n\ncase 23:\n    /*! Production::    css_value : CHS */\n\n    this.$ = { type: 'ChValue', value: parseFloat(yyvstack[yysp]), unit: 'ch' };\n    break;\n\ncase 24:\n    /*! Production::    css_value : REMS */\n\n    this.$ = { type: 'RemValue', value: parseFloat(yyvstack[yysp]), unit: 'rem' };\n    break;\n\ncase 25:\n    /*! Production::    css_value : VHS */\n\n    this.$ = { type: 'VhValue', value: parseFloat(yyvstack[yysp]), unit: 'vh' };\n    break;\n\ncase 26:\n    /*! Production::    css_value : VWS */\n\n    this.$ = { type: 'VwValue', value: parseFloat(yyvstack[yysp]), unit: 'vw' };\n    break;\n\ncase 27:\n    /*! Production::    css_value : VMINS */\n\n    this.$ = { type: 'VminValue', value: parseFloat(yyvstack[yysp]), unit: 'vmin' };\n    break;\n\ncase 28:\n    /*! Production::    css_value : VMAXS */\n\n    this.$ = { type: 'VmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'vmax' };\n    break;\n\ncase 29:\n    /*! Production::    css_value : PERCENTAGE */\n\n    this.$ = { type: 'PercentageValue', value: parseFloat(yyvstack[yysp]), unit: '%' };\n    break;\n\ncase 30:\n    /*! Production::    css_value : SUB css_value */\n\n    var prev = yyvstack[yysp]; prev.value *= -1; this.$ = prev;\n    break;\n\n}\n},\ntable: bt({\n  len: u([\n  24,\n  1,\n  5,\n  23,\n  1,\n  18,\n  s,\n  [0, 3],\n  1,\n  s,\n  [0, 16],\n  s,\n  [23, 4],\n  c,\n  [28, 3],\n  0,\n  0,\n  16,\n  1,\n  6,\n  6,\n  s,\n  [0, 3],\n  5,\n  1,\n  2,\n  c,\n  [37, 3],\n  c,\n  [20, 3],\n  5,\n  0,\n  0\n]),\n  symbol: u([\n  4,\n  7,\n  9,\n  11,\n  12,\n  s,\n  [15, 19, 1],\n  1,\n  1,\n  s,\n  [3, 4, 1],\n  c,\n  [30, 19],\n  c,\n  [29, 4],\n  7,\n  4,\n  10,\n  11,\n  c,\n  [22, 14],\n  c,\n  [19, 3],\n  c,\n  [43, 22],\n  c,\n  [23, 69],\n  c,\n  [139, 4],\n  8,\n  c,\n  [51, 24],\n  4,\n  c,\n  [138, 15],\n  13,\n  c,\n  [186, 5],\n  8,\n  c,\n  [6, 6],\n  c,\n  [5, 5],\n  9,\n  8,\n  14,\n  c,\n  [159, 47],\n  c,\n  [60, 10]\n]),\n  type: u([\n  s,\n  [2, 19],\n  s,\n  [0, 5],\n  1,\n  s,\n  [2, 24],\n  s,\n  [0, 4],\n  c,\n  [22, 19],\n  c,\n  [43, 42],\n  c,\n  [23, 70],\n  c,\n  [28, 25],\n  c,\n  [45, 25],\n  c,\n  [113, 54]\n]),\n  state: u([\n  1,\n  2,\n  8,\n  6,\n  7,\n  30,\n  c,\n  [4, 3],\n  33,\n  37,\n  c,\n  [5, 3],\n  38,\n  c,\n  [4, 3],\n  39,\n  c,\n  [4, 3],\n  40,\n  c,\n  [4, 3],\n  42,\n  c,\n  [21, 4],\n  50,\n  c,\n  [5, 3],\n  51,\n  c,\n  [4, 3]\n]),\n  mode: u([\n  s,\n  [1, 179],\n  s,\n  [2, 3],\n  c,\n  [5, 5],\n  c,\n  [6, 4],\n  s,\n  [1, 57]\n]),\n  goto: u([\n  5,\n  3,\n  4,\n  24,\n  s,\n  [9, 15, 1],\n  s,\n  [25, 5, 1],\n  c,\n  [24, 19],\n  31,\n  35,\n  32,\n  34,\n  c,\n  [18, 14],\n  36,\n  c,\n  [38, 19],\n  c,\n  [19, 57],\n  c,\n  [118, 4],\n  41,\n  c,\n  [24, 19],\n  43,\n  35,\n  c,\n  [16, 14],\n  44,\n  s,\n  [2, 3],\n  28,\n  29,\n  2,\n  s,\n  [3, 3],\n  28,\n  29,\n  3,\n  c,\n  [53, 4],\n  s,\n  [45, 5, 1],\n  c,\n  [100, 42],\n  52,\n  c,\n  [5, 4],\n  53\n])\n}),\ndefaultActions: bda({\n  idx: u([\n  6,\n  7,\n  8,\n  s,\n  [10, 16, 1],\n  33,\n  34,\n  39,\n  40,\n  41,\n  45,\n  47,\n  52,\n  53\n]),\n  goto: u([\n  9,\n  10,\n  11,\n  s,\n  [16, 14, 1],\n  12,\n  1,\n  30,\n  13,\n  s,\n  [4, 4, 1],\n  14,\n  15,\n  8\n])\n}),\nparseError: function parseError(str, hash, ExceptionClass) {\n    if (hash.recoverable) {\n        if (typeof this.trace === 'function') {\n            this.trace(str);\n        }\n        hash.destroy();             // destroy... well, *almost*!\n    } else {\n        if (typeof this.trace === 'function') {\n            this.trace(str);\n        }\n        if (!ExceptionClass) {\n            ExceptionClass = this.JisonParserError;\n        }\n        throw new ExceptionClass(str, hash);\n    }\n},\nparse: function parse(input) {\n    var self = this;\n    var stack = new Array(128);         // token stack: stores token which leads to state at the same index (column storage)\n    var sstack = new Array(128);        // state stack: stores states (column storage)\n\n    var vstack = new Array(128);        // semantic value stack\n\n    var table = this.table;\n    var sp = 0;                         // 'stack pointer': index into the stacks\n\n\n    \n\n\n    var symbol = 0;\n\n\n\n    var TERROR = this.TERROR;\n    var EOF = this.EOF;\n    var ERROR_RECOVERY_TOKEN_DISCARD_COUNT = (this.options.errorRecoveryTokenDiscardCount | 0) || 3;\n    var NO_ACTION = [0, 54 /* === table.length :: ensures that anyone using this new state will fail dramatically! */];\n\n    var lexer;\n    if (this.__lexer__) {\n        lexer = this.__lexer__;\n    } else {\n        lexer = this.__lexer__ = Object.create(this.lexer);\n    }\n\n    var sharedState_yy = {\n        parseError: undefined,\n        quoteName: undefined,\n        lexer: undefined,\n        parser: undefined,\n        pre_parse: undefined,\n        post_parse: undefined,\n        pre_lex: undefined,\n        post_lex: undefined      // WARNING: must be written this way for the code expanders to work correctly in both ES5 and ES6 modes!\n    };\n\n    var ASSERT;\n    if (typeof assert !== 'function') {\n        ASSERT = function JisonAssert(cond, msg) {\n            if (!cond) {\n                throw new Error('assertion failed: ' + (msg || '***'));\n            }\n        };\n    } else {\n        ASSERT = assert;\n    }\n\n    this.yyGetSharedState = function yyGetSharedState() {\n        return sharedState_yy;\n    };\n\n\n\n\n\n\n\n\n    function shallow_copy_noclobber(dst, src) {\n        for (var k in src) {\n            if (typeof dst[k] === 'undefined' && Object.prototype.hasOwnProperty.call(src, k)) {\n                dst[k] = src[k];\n            }\n        }\n    }\n\n    // copy state\n    shallow_copy_noclobber(sharedState_yy, this.yy);\n\n    sharedState_yy.lexer = lexer;\n    sharedState_yy.parser = this;\n\n\n\n\n\n\n    // Does the shared state override the default `parseError` that already comes with this instance?\n    if (typeof sharedState_yy.parseError === 'function') {\n        this.parseError = function parseErrorAlt(str, hash, ExceptionClass) {\n            if (!ExceptionClass) {\n                ExceptionClass = this.JisonParserError;\n            }\n            return sharedState_yy.parseError.call(this, str, hash, ExceptionClass);\n        };\n    } else {\n        this.parseError = this.originalParseError;\n    }\n\n    // Does the shared state override the default `quoteName` that already comes with this instance?\n    if (typeof sharedState_yy.quoteName === 'function') {\n        this.quoteName = function quoteNameAlt(id_str) {\n            return sharedState_yy.quoteName.call(this, id_str);\n        };\n    } else {\n        this.quoteName = this.originalQuoteName;\n    }\n\n    // set up the cleanup function; make it an API so that external code can re-use this one in case of\n    // calamities or when the `%options no-try-catch` option has been specified for the grammar, in which\n    // case this parse() API method doesn't come with a `finally { ... }` block any more!\n    //\n    // NOTE: as this API uses parse() as a closure, it MUST be set again on every parse() invocation,\n    //       or else your `sharedState`, etc. references will be *wrong*!\n    this.cleanupAfterParse = function parser_cleanupAfterParse(resultValue, invoke_post_methods, do_not_nuke_errorinfos) {\n        var rv;\n\n        if (invoke_post_methods) {\n            var hash;\n\n            if (sharedState_yy.post_parse || this.post_parse) {\n                // create an error hash info instance: we re-use this API in a **non-error situation**\n                // as this one delivers all parser internals ready for access by userland code.\n                hash = this.constructParseErrorInfo(null /* no error! */, null /* no exception! */, null, false);\n            }\n\n            if (sharedState_yy.post_parse) {\n                rv = sharedState_yy.post_parse.call(this, sharedState_yy, resultValue, hash);\n                if (typeof rv !== 'undefined') resultValue = rv;\n            }\n            if (this.post_parse) {\n                rv = this.post_parse.call(this, sharedState_yy, resultValue, hash);\n                if (typeof rv !== 'undefined') resultValue = rv;\n            }\n\n            // cleanup:\n            if (hash && hash.destroy) {\n                hash.destroy();\n            }\n        }\n\n        if (this.__reentrant_call_depth > 1) return resultValue;        // do not (yet) kill the sharedState when this is a reentrant run.\n\n        // clean up the lingering lexer structures as well:\n        if (lexer.cleanupAfterLex) {\n            lexer.cleanupAfterLex(do_not_nuke_errorinfos);\n        }\n\n        // prevent lingering circular references from causing memory leaks:\n        if (sharedState_yy) {\n            sharedState_yy.lexer = undefined;\n            sharedState_yy.parser = undefined;\n            if (lexer.yy === sharedState_yy) {\n                lexer.yy = undefined;\n            }\n        }\n        sharedState_yy = undefined;\n        this.parseError = this.originalParseError;\n        this.quoteName = this.originalQuoteName;\n\n        // nuke the vstack[] array at least as that one will still reference obsoleted user values.\n        // To be safe, we nuke the other internal stack columns as well...\n        stack.length = 0;               // fastest way to nuke an array without overly bothering the GC\n        sstack.length = 0;\n\n        vstack.length = 0;\n        sp = 0;\n\n        // nuke the error hash info instances created during this run.\n        // Userland code must COPY any data/references\n        // in the error hash instance(s) it is more permanently interested in.\n        if (!do_not_nuke_errorinfos) {\n            for (var i = this.__error_infos.length - 1; i >= 0; i--) {\n                var el = this.__error_infos[i];\n                if (el && typeof el.destroy === 'function') {\n                    el.destroy();\n                }\n            }\n            this.__error_infos.length = 0;\n\n\n        }\n\n        return resultValue;\n    };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n    // NOTE: as this API uses parse() as a closure, it MUST be set again on every parse() invocation,\n    //       or else your `lexer`, `sharedState`, etc. references will be *wrong*!\n    this.constructParseErrorInfo = function parser_constructParseErrorInfo(msg, ex, expected, recoverable) {\n        var pei = {\n            errStr: msg,\n            exception: ex,\n            text: lexer.match,\n            value: lexer.yytext,\n            token: this.describeSymbol(symbol) || symbol,\n            token_id: symbol,\n            line: lexer.yylineno,\n\n            expected: expected,\n            recoverable: recoverable,\n            state: state,\n            action: action,\n            new_state: newState,\n            symbol_stack: stack,\n            state_stack: sstack,\n            value_stack: vstack,\n\n            stack_pointer: sp,\n            yy: sharedState_yy,\n            lexer: lexer,\n            parser: this,\n\n            // and make sure the error info doesn't stay due to potential\n            // ref cycle via userland code manipulations.\n            // These would otherwise all be memory leak opportunities!\n            //\n            // Note that only array and object references are nuked as those\n            // constitute the set of elements which can produce a cyclic ref.\n            // The rest of the members is kept intact as they are harmless.\n            destroy: function destructParseErrorInfo() {\n                // remove cyclic references added to error info:\n                // info.yy = null;\n                // info.lexer = null;\n                // info.value = null;\n                // info.value_stack = null;\n                // ...\n                var rec = !!this.recoverable;\n                for (var key in this) {\n                    if (this.hasOwnProperty(key) && typeof key === 'object') {\n                        this[key] = undefined;\n                    }\n                }\n                this.recoverable = rec;\n            }\n        };\n        // track this instance so we can `destroy()` it once we deem it superfluous and ready for garbage collection!\n        this.__error_infos.push(pei);\n        return pei;\n    };\n\n\n\n\n\n\n\n\n\n\n\n\n\n    function getNonTerminalFromCode(symbol) {\n        var tokenName = self.getSymbolName(symbol);\n        if (!tokenName) {\n            tokenName = symbol;\n        }\n        return tokenName;\n    }\n\n\n    function stdLex() {\n        var token = lexer.lex();\n        // if token isn't its numeric value, convert\n        if (typeof token !== 'number') {\n            token = self.symbols_[token] || token;\n        }\n\n        return token || EOF;\n    }\n\n    function fastLex() {\n        var token = lexer.fastLex();\n        // if token isn't its numeric value, convert\n        if (typeof token !== 'number') {\n            token = self.symbols_[token] || token;\n        }\n\n        return token || EOF;\n    }\n\n    var lex = stdLex;\n\n\n    var state, action, r, t;\n    var yyval = {\n        $: true,\n        _$: undefined,\n        yy: sharedState_yy\n    };\n    var p;\n    var yyrulelen;\n    var this_production;\n    var newState;\n    var retval = false;\n\n\n    try {\n        this.__reentrant_call_depth++;\n\n        lexer.setInput(input, sharedState_yy);\n\n        // NOTE: we *assume* no lexer pre/post handlers are set up *after* \n        // this initial `setInput()` call: hence we can now check and decide\n        // whether we'll go with the standard, slower, lex() API or the\n        // `fast_lex()` one:\n        if (typeof lexer.canIUse === 'function') {\n            var lexerInfo = lexer.canIUse();\n            if (lexerInfo.fastLex && typeof fastLex === 'function') {\n                lex = fastLex;\n            }\n        } \n\n\n\n        vstack[sp] = null;\n        sstack[sp] = 0;\n        stack[sp] = 0;\n        ++sp;\n\n\n\n\n\n        if (this.pre_parse) {\n            this.pre_parse.call(this, sharedState_yy);\n        }\n        if (sharedState_yy.pre_parse) {\n            sharedState_yy.pre_parse.call(this, sharedState_yy);\n        }\n\n        newState = sstack[sp - 1];\n        for (;;) {\n            // retrieve state number from top of stack\n            state = newState;               // sstack[sp - 1];\n\n            // use default actions if available\n            if (this.defaultActions[state]) {\n                action = 2;\n                newState = this.defaultActions[state];\n            } else {\n                // The single `==` condition below covers both these `===` comparisons in a single\n                // operation:\n                //\n                //     if (symbol === null || typeof symbol === 'undefined') ...\n                if (!symbol) {\n                    symbol = lex();\n                }\n                // read action for current state and first input\n                t = (table[state] && table[state][symbol]) || NO_ACTION;\n                newState = t[1];\n                action = t[0];\n\n\n\n\n\n\n\n\n\n\n\n                // handle parse error\n                if (!action) {\n                    var errStr;\n                    var errSymbolDescr = (this.describeSymbol(symbol) || symbol);\n                    var expected = this.collect_expected_token_set(state);\n\n                    // Report error\n                    if (typeof lexer.yylineno === 'number') {\n                        errStr = 'Parse error on line ' + (lexer.yylineno + 1) + ': ';\n                    } else {\n                        errStr = 'Parse error: ';\n                    }\n                    if (typeof lexer.showPosition === 'function') {\n                        errStr += '\\n' + lexer.showPosition(79 - 10, 10) + '\\n';\n                    }\n                    if (expected.length) {\n                        errStr += 'Expecting ' + expected.join(', ') + ', got unexpected ' + errSymbolDescr;\n                    } else {\n                        errStr += 'Unexpected ' + errSymbolDescr;\n                    }\n                    // we cannot recover from the error!\n                    p = this.constructParseErrorInfo(errStr, null, expected, false);\n                    r = this.parseError(p.errStr, p, this.JisonParserError);\n                    if (typeof r !== 'undefined') {\n                        retval = r;\n                    }\n                    break;\n                }\n\n\n            }\n\n\n\n\n\n\n\n\n\n\n            switch (action) {\n            // catch misc. parse failures:\n            default:\n                // this shouldn't happen, unless resolve defaults are off\n                if (action instanceof Array) {\n                    p = this.constructParseErrorInfo('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol, null, null, false);\n                    r = this.parseError(p.errStr, p, this.JisonParserError);\n                    if (typeof r !== 'undefined') {\n                        retval = r;\n                    }\n                    break;\n                }\n                // Another case of better safe than sorry: in case state transitions come out of another error recovery process\n                // or a buggy LUT (LookUp Table):\n                p = this.constructParseErrorInfo('Parsing halted. No viable error recovery approach available due to internal system failure.', null, null, false);\n                r = this.parseError(p.errStr, p, this.JisonParserError);\n                if (typeof r !== 'undefined') {\n                    retval = r;\n                }\n                break;\n\n            // shift:\n            case 1:\n                stack[sp] = symbol;\n                vstack[sp] = lexer.yytext;\n\n                sstack[sp] = newState; // push state\n\n                ++sp;\n                symbol = 0;\n\n\n\n\n                // Pick up the lexer details for the current symbol as that one is not 'look-ahead' any more:\n\n\n\n\n                continue;\n\n            // reduce:\n            case 2:\n\n\n\n                this_production = this.productions_[newState - 1];  // `this.productions_[]` is zero-based indexed while states start from 1 upwards...\n                yyrulelen = this_production[1];\n\n\n\n\n\n\n\n\n\n\n                r = this.performAction.call(yyval, newState, sp - 1, vstack);\n\n                if (typeof r !== 'undefined') {\n                    retval = r;\n                    break;\n                }\n\n                // pop off stack\n                sp -= yyrulelen;\n\n                // don't overwrite the `symbol` variable: use a local var to speed things up:\n                var ntsymbol = this_production[0];    // push nonterminal (reduce)\n                stack[sp] = ntsymbol;\n                vstack[sp] = yyval.$;\n\n                // goto new state = table[STATE][NONTERMINAL]\n                newState = table[sstack[sp - 1]][ntsymbol];\n                sstack[sp] = newState;\n                ++sp;\n\n\n\n\n\n\n\n\n\n                continue;\n\n            // accept:\n            case 3:\n                if (sp !== -2) {\n                    retval = true;\n                    // Return the `$accept` rule's `$$` result, if available.\n                    //\n                    // Also note that JISON always adds this top-most `$accept` rule (with implicit,\n                    // default, action):\n                    //\n                    //     $accept: <startSymbol> $end\n                    //                  %{ $$ = $1; @$ = @1; %}\n                    //\n                    // which, combined with the parse kernel's `$accept` state behaviour coded below,\n                    // will produce the `$$` value output of the <startSymbol> rule as the parse result,\n                    // IFF that result is *not* `undefined`. (See also the parser kernel code.)\n                    //\n                    // In code:\n                    //\n                    //                  %{\n                    //                      @$ = @1;            // if location tracking support is included\n                    //                      if (typeof $1 !== 'undefined')\n                    //                          return $1;\n                    //                      else\n                    //                          return true;           // the default parse result if the rule actions don't produce anything\n                    //                  %}\n                    sp--;\n                    if (typeof vstack[sp] !== 'undefined') {\n                        retval = vstack[sp];\n                    }\n                }\n                break;\n            }\n\n            // break out of loop: we accept or fail with error\n            break;\n        }\n    } catch (ex) {\n        // report exceptions through the parseError callback too, but keep the exception intact\n        // if it is a known parser or lexer error which has been thrown by parseError() already:\n        if (ex instanceof this.JisonParserError) {\n            throw ex;\n        }\n        else if (lexer && typeof lexer.JisonLexerError === 'function' && ex instanceof lexer.JisonLexerError) {\n            throw ex;\n        }\n\n        p = this.constructParseErrorInfo('Parsing aborted due to exception.', ex, null, false);\n        retval = false;\n        r = this.parseError(p.errStr, p, this.JisonParserError);\n        if (typeof r !== 'undefined') {\n            retval = r;\n        }\n    } finally {\n        retval = this.cleanupAfterParse(retval, true, true);\n        this.__reentrant_call_depth--;\n    }   // /finally\n\n    return retval;\n}\n};\nparser.originalParseError = parser.parseError;\nparser.originalQuoteName = parser.quoteName;\n/* lexer generated by jison-lex 0.6.1-215 */\n\n/*\n * Returns a Lexer object of the following structure:\n *\n *  Lexer: {\n *    yy: {}     The so-called \"shared state\" or rather the *source* of it;\n *               the real \"shared state\" `yy` passed around to\n *               the rule actions, etc. is a direct reference!\n *\n *               This \"shared context\" object was passed to the lexer by way of \n *               the `lexer.setInput(str, yy)` API before you may use it.\n *\n *               This \"shared context\" object is passed to the lexer action code in `performAction()`\n *               so userland code in the lexer actions may communicate with the outside world \n *               and/or other lexer rules' actions in more or less complex ways.\n *\n *  }\n *\n *  Lexer.prototype: {\n *    EOF: 1,\n *    ERROR: 2,\n *\n *    yy:        The overall \"shared context\" object reference.\n *\n *    JisonLexerError: function(msg, hash),\n *\n *    performAction: function lexer__performAction(yy, yyrulenumber, YY_START),\n *\n *               The function parameters and `this` have the following value/meaning:\n *               - `this`    : reference to the `lexer` instance. \n *                               `yy_` is an alias for `this` lexer instance reference used internally.\n *\n *               - `yy`      : a reference to the `yy` \"shared state\" object which was passed to the lexer\n *                             by way of the `lexer.setInput(str, yy)` API before.\n *\n *                             Note:\n *                             The extra arguments you specified in the `%parse-param` statement in your\n *                             **parser** grammar definition file are passed to the lexer via this object\n *                             reference as member variables.\n *\n *               - `yyrulenumber`   : index of the matched lexer rule (regex), used internally.\n *\n *               - `YY_START`: the current lexer \"start condition\" state.\n *\n *    parseError: function(str, hash, ExceptionClass),\n *\n *    constructLexErrorInfo: function(error_message, is_recoverable),\n *               Helper function.\n *               Produces a new errorInfo 'hash object' which can be passed into `parseError()`.\n *               See it's use in this lexer kernel in many places; example usage:\n *\n *                   var infoObj = lexer.constructParseErrorInfo('fail!', true);\n *                   var retVal = lexer.parseError(infoObj.errStr, infoObj, lexer.JisonLexerError);\n *\n *    options: { ... lexer %options ... },\n *\n *    lex: function(),\n *               Produce one token of lexed input, which was passed in earlier via the `lexer.setInput()` API.\n *               You MAY use the additional `args...` parameters as per `%parse-param` spec of the **lexer** grammar:\n *               these extra `args...` are added verbatim to the `yy` object reference as member variables.\n *\n *               WARNING:\n *               Lexer's additional `args...` parameters (via lexer's `%parse-param`) MAY conflict with\n *               any attributes already added to `yy` by the **parser** or the jison run-time; \n *               when such a collision is detected an exception is thrown to prevent the generated run-time \n *               from silently accepting this confusing and potentially hazardous situation! \n *\n *    cleanupAfterLex: function(do_not_nuke_errorinfos),\n *               Helper function.\n *\n *               This helper API is invoked when the **parse process** has completed: it is the responsibility\n *               of the **parser** (or the calling userland code) to invoke this method once cleanup is desired. \n *\n *               This helper may be invoked by user code to ensure the internal lexer gets properly garbage collected.\n *\n *    setInput: function(input, [yy]),\n *\n *\n *    input: function(),\n *\n *\n *    unput: function(str),\n *\n *\n *    more: function(),\n *\n *\n *    reject: function(),\n *\n *\n *    less: function(n),\n *\n *\n *    pastInput: function(n),\n *\n *\n *    upcomingInput: function(n),\n *\n *\n *    showPosition: function(),\n *\n *\n *    test_match: function(regex_match_array, rule_index),\n *\n *\n *    next: function(),\n *\n *\n *    begin: function(condition),\n *\n *\n *    pushState: function(condition),\n *\n *\n *    popState: function(),\n *\n *\n *    topState: function(),\n *\n *\n *    _currentRules: function(),\n *\n *\n *    stateStackSize: function(),\n *\n *\n *    performAction: function(yy, yy_, yyrulenumber, YY_START),\n *\n *\n *    rules: [...],\n *\n *\n *    conditions: {associative list: name ==> set},\n *  }\n *\n *\n *  token location info (`yylloc`): {\n *    first_line: n,\n *    last_line: n,\n *    first_column: n,\n *    last_column: n,\n *    range: [start_number, end_number]\n *               (where the numbers are indexes into the input string, zero-based)\n *  }\n *\n * ---\n *\n * The `parseError` function receives a 'hash' object with these members for lexer errors:\n *\n *  {\n *    text:        (matched text)\n *    token:       (the produced terminal token, if any)\n *    token_id:    (the produced terminal token numeric ID, if any)\n *    line:        (yylineno)\n *    loc:         (yylloc)\n *    recoverable: (boolean: TRUE when the parser MAY have an error recovery rule\n *                  available for this particular error)\n *    yy:          (object: the current parser internal \"shared state\" `yy`\n *                  as is also available in the rule actions; this can be used,\n *                  for instance, for advanced error analysis and reporting)\n *    lexer:       (reference to the current lexer instance used by the parser)\n *  }\n *\n * while `this` will reference the current lexer instance.\n *\n * When `parseError` is invoked by the lexer, the default implementation will\n * attempt to invoke `yy.parser.parseError()`; when this callback is not provided\n * it will try to invoke `yy.parseError()` instead. When that callback is also not\n * provided, a `JisonLexerError` exception will be thrown containing the error\n * message and `hash`, as constructed by the `constructLexErrorInfo()` API.\n *\n * Note that the lexer's `JisonLexerError` error class is passed via the\n * `ExceptionClass` argument, which is invoked to construct the exception\n * instance to be thrown, so technically `parseError` will throw the object\n * produced by the `new ExceptionClass(str, hash)` JavaScript expression.\n *\n * ---\n *\n * You can specify lexer options by setting / modifying the `.options` object of your Lexer instance.\n * These options are available:\n *\n * (Options are permanent.)\n *  \n *  yy: {\n *      parseError: function(str, hash, ExceptionClass)\n *                 optional: overrides the default `parseError` function.\n *  }\n *\n *  lexer.options: {\n *      pre_lex:  function()\n *                 optional: is invoked before the lexer is invoked to produce another token.\n *                 `this` refers to the Lexer object.\n *      post_lex: function(token) { return token; }\n *                 optional: is invoked when the lexer has produced a token `token`;\n *                 this function can override the returned token value by returning another.\n *                 When it does not return any (truthy) value, the lexer will return\n *                 the original `token`.\n *                 `this` refers to the Lexer object.\n *\n * WARNING: the next set of options are not meant to be changed. They echo the abilities of\n * the lexer as per when it was compiled!\n *\n *      ranges: boolean\n *                 optional: `true` ==> token location info will include a .range[] member.\n *      flex: boolean\n *                 optional: `true` ==> flex-like lexing behaviour where the rules are tested\n *                 exhaustively to find the longest match.\n *      backtrack_lexer: boolean\n *                 optional: `true` ==> lexer regexes are tested in order and for invoked;\n *                 the lexer terminates the scan when a token is returned by the action code.\n *      xregexp: boolean\n *                 optional: `true` ==> lexer rule regexes are \"extended regex format\" requiring the\n *                 `XRegExp` library. When this %option has not been specified at compile time, all lexer\n *                 rule regexes have been written as standard JavaScript RegExp expressions.\n *  }\n */\n\n\nvar lexer = function() {\n  /**\n   * See also:\n   * http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript/#35881508\n   * but we keep the prototype.constructor and prototype.name assignment lines too for compatibility\n   * with userland code which might access the derived class in a 'classic' way.\n   *\n   * @public\n   * @constructor\n   * @nocollapse\n   */\n  function JisonLexerError(msg, hash) {\n    Object.defineProperty(this, 'name', {\n      enumerable: false,\n      writable: false,\n      value: 'JisonLexerError'\n    });\n\n    if (msg == null)\n      msg = '???';\n\n    Object.defineProperty(this, 'message', {\n      enumerable: false,\n      writable: true,\n      value: msg\n    });\n\n    this.hash = hash;\n    var stacktrace;\n\n    if (hash && hash.exception instanceof Error) {\n      var ex2 = hash.exception;\n      this.message = ex2.message || msg;\n      stacktrace = ex2.stack;\n    }\n\n    if (!stacktrace) {\n      if (Error.hasOwnProperty('captureStackTrace')) {\n        // V8\n        Error.captureStackTrace(this, this.constructor);\n      } else {\n        stacktrace = new Error(msg).stack;\n      }\n    }\n\n    if (stacktrace) {\n      Object.defineProperty(this, 'stack', {\n        enumerable: false,\n        writable: false,\n        value: stacktrace\n      });\n    }\n  }\n\n  if (typeof Object.setPrototypeOf === 'function') {\n    Object.setPrototypeOf(JisonLexerError.prototype, Error.prototype);\n  } else {\n    JisonLexerError.prototype = Object.create(Error.prototype);\n  }\n\n  JisonLexerError.prototype.constructor = JisonLexerError;\n  JisonLexerError.prototype.name = 'JisonLexerError';\n\n  var lexer = {\n    \n// Code Generator Information Report\n// ---------------------------------\n//\n// Options:\n//\n//   backtracking: .................... false\n//   location.ranges: ................. false\n//   location line+column tracking: ... true\n//\n//\n// Forwarded Parser Analysis flags:\n//\n//   uses yyleng: ..................... false\n//   uses yylineno: ................... false\n//   uses yytext: ..................... false\n//   uses yylloc: ..................... false\n//   uses lexer values: ............... true / true\n//   location tracking: ............... false\n//   location assignment: ............. false\n//\n//\n// Lexer Analysis flags:\n//\n//   uses yyleng: ..................... ???\n//   uses yylineno: ................... ???\n//   uses yytext: ..................... ???\n//   uses yylloc: ..................... ???\n//   uses ParseError API: ............. ???\n//   uses yyerror: .................... ???\n//   uses location tracking & editing:  ???\n//   uses more() API: ................. ???\n//   uses unput() API: ................ ???\n//   uses reject() API: ............... ???\n//   uses less() API: ................. ???\n//   uses display APIs pastInput(), upcomingInput(), showPosition():\n//        ............................. ???\n//   uses describeYYLLOC() API: ....... ???\n//\n// --------- END OF REPORT -----------\n\nEOF: 1,\n    ERROR: 2,\n\n    // JisonLexerError: JisonLexerError,        /// <-- injected by the code generator\n\n    // options: {},                             /// <-- injected by the code generator\n\n    // yy: ...,                                 /// <-- injected by setInput()\n\n    __currentRuleSet__: null,                   /// INTERNAL USE ONLY: internal rule set cache for the current lexer state  \n\n    __error_infos: [],                          /// INTERNAL USE ONLY: the set of lexErrorInfo objects created since the last cleanup  \n    __decompressed: false,                      /// INTERNAL USE ONLY: mark whether the lexer instance has been 'unfolded' completely and is now ready for use  \n    done: false,                                /// INTERNAL USE ONLY  \n    _backtrack: false,                          /// INTERNAL USE ONLY  \n    _input: '',                                 /// INTERNAL USE ONLY  \n    _more: false,                               /// INTERNAL USE ONLY  \n    _signaled_error_token: false,               /// INTERNAL USE ONLY  \n    conditionStack: [],                         /// INTERNAL USE ONLY; managed via `pushState()`, `popState()`, `topState()` and `stateStackSize()`  \n    match: '',                                  /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks input which has been matched so far for the lexer token under construction. `match` is identical to `yytext` except that this one still contains the matched input string after `lexer.performAction()` has been invoked, where userland code MAY have changed/replaced the `yytext` value entirely!  \n    matched: '',                                /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks entire input which has been matched so far  \n    matches: false,                             /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks RE match result for last (successful) match attempt  \n    yytext: '',                                 /// ADVANCED USE ONLY: tracks input which has been matched so far for the lexer token under construction; this value is transferred to the parser as the 'token value' when the parser consumes the lexer token produced through a call to the `lex()` API.  \n    offset: 0,                                  /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks the 'cursor position' in the input string, i.e. the number of characters matched so far  \n    yyleng: 0,                                  /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: length of matched input for the token under construction (`yytext`)  \n    yylineno: 0,                                /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: 'line number' at which the token under construction is located  \n    yylloc: null,                               /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks location info (lines + columns) for the token under construction  \n\n    /**\n     * INTERNAL USE: construct a suitable error info hash object instance for `parseError`.\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    constructLexErrorInfo: function lexer_constructLexErrorInfo(msg, recoverable, show_input_position) {\n      msg = '' + msg;\n\n      // heuristic to determine if the error message already contains a (partial) source code dump\n      // as produced by either `showPosition()` or `prettyPrintRange()`:\n      if (show_input_position == undefined) {\n        show_input_position = !(msg.indexOf('\\n') > 0 && msg.indexOf('^') > 0);\n      }\n\n      if (this.yylloc && show_input_position) {\n        if (typeof this.prettyPrintRange === 'function') {\n          var pretty_src = this.prettyPrintRange(this.yylloc);\n\n          if (!/\\n\\s*$/.test(msg)) {\n            msg += '\\n';\n          }\n\n          msg += '\\n  Erroneous area:\\n' + this.prettyPrintRange(this.yylloc);\n        } else if (typeof this.showPosition === 'function') {\n          var pos_str = this.showPosition();\n\n          if (pos_str) {\n            if (msg.length && msg[msg.length - 1] !== '\\n' && pos_str[0] !== '\\n') {\n              msg += '\\n' + pos_str;\n            } else {\n              msg += pos_str;\n            }\n          }\n        }\n      }\n\n      /** @constructor */\n      var pei = {\n        errStr: msg,\n        recoverable: !!recoverable,\n        text: this.match,           // This one MAY be empty; userland code should use the `upcomingInput` API to obtain more text which follows the 'lexer cursor position'...  \n        token: null,\n        line: this.yylineno,\n        loc: this.yylloc,\n        yy: this.yy,\n        lexer: this,\n\n        /**\n         * and make sure the error info doesn't stay due to potential\n         * ref cycle via userland code manipulations.\n         * These would otherwise all be memory leak opportunities!\n         * \n         * Note that only array and object references are nuked as those\n         * constitute the set of elements which can produce a cyclic ref.\n         * The rest of the members is kept intact as they are harmless.\n         * \n         * @public\n         * @this {LexErrorInfo}\n         */\n        destroy: function destructLexErrorInfo() {\n          // remove cyclic references added to error info:\n          // info.yy = null;\n          // info.lexer = null;\n          // ...\n          var rec = !!this.recoverable;\n\n          for (var key in this) {\n            if (this.hasOwnProperty(key) && typeof key === 'object') {\n              this[key] = undefined;\n            }\n          }\n\n          this.recoverable = rec;\n        }\n      };\n\n      // track this instance so we can `destroy()` it once we deem it superfluous and ready for garbage collection!\n      this.__error_infos.push(pei);\n\n      return pei;\n    },\n\n    /**\n     * handler which is invoked when a lexer error occurs.\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    parseError: function lexer_parseError(str, hash, ExceptionClass) {\n      if (!ExceptionClass) {\n        ExceptionClass = this.JisonLexerError;\n      }\n\n      if (this.yy) {\n        if (this.yy.parser && typeof this.yy.parser.parseError === 'function') {\n          return this.yy.parser.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;\n        } else if (typeof this.yy.parseError === 'function') {\n          return this.yy.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;\n        }\n      }\n\n      throw new ExceptionClass(str, hash);\n    },\n\n    /**\n     * method which implements `yyerror(str, ...args)` functionality for use inside lexer actions.\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    yyerror: function yyError(str /*, ...args */) {\n      var lineno_msg = '';\n\n      if (this.yylloc) {\n        lineno_msg = ' on line ' + (this.yylineno + 1);\n      }\n\n      var p = this.constructLexErrorInfo(\n        'Lexical error' + lineno_msg + ': ' + str,\n        this.options.lexerErrorsAreRecoverable\n      );\n\n      // Add any extra args to the hash under the name `extra_error_attributes`:\n      var args = Array.prototype.slice.call(arguments, 1);\n\n      if (args.length) {\n        p.extra_error_attributes = args;\n      }\n\n      return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n    },\n\n    /**\n     * final cleanup function for when we have completed lexing the input;\n     * make it an API so that external code can use this one once userland\n     * code has decided it's time to destroy any lingering lexer error\n     * hash object instances and the like: this function helps to clean\n     * up these constructs, which *may* carry cyclic references which would\n     * otherwise prevent the instances from being properly and timely\n     * garbage-collected, i.e. this function helps prevent memory leaks!\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    cleanupAfterLex: function lexer_cleanupAfterLex(do_not_nuke_errorinfos) {\n      // prevent lingering circular references from causing memory leaks:\n      this.setInput('', {});\n\n      // nuke the error hash info instances created during this run.\n      // Userland code must COPY any data/references\n      // in the error hash instance(s) it is more permanently interested in.\n      if (!do_not_nuke_errorinfos) {\n        for (var i = this.__error_infos.length - 1; i >= 0; i--) {\n          var el = this.__error_infos[i];\n\n          if (el && typeof el.destroy === 'function') {\n            el.destroy();\n          }\n        }\n\n        this.__error_infos.length = 0;\n      }\n\n      return this;\n    },\n\n    /**\n     * clear the lexer token context; intended for internal use only\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    clear: function lexer_clear() {\n      this.yytext = '';\n      this.yyleng = 0;\n      this.match = '';\n\n      // - DO NOT reset `this.matched`\n      this.matches = false;\n\n      this._more = false;\n      this._backtrack = false;\n      var col = (this.yylloc ? this.yylloc.last_column : 0);\n\n      this.yylloc = {\n        first_line: this.yylineno + 1,\n        first_column: col,\n        last_line: this.yylineno + 1,\n        last_column: col,\n        range: [this.offset, this.offset]\n      };\n    },\n\n    /**\n     * resets the lexer, sets new input\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    setInput: function lexer_setInput(input, yy) {\n      this.yy = yy || this.yy || {};\n\n      // also check if we've fully initialized the lexer instance,\n      // including expansion work to be done to go from a loaded\n      // lexer to a usable lexer:\n      if (!this.__decompressed) {\n        // step 1: decompress the regex list:\n        var rules = this.rules;\n\n        for (var i = 0, len = rules.length; i < len; i++) {\n          var rule_re = rules[i];\n\n          // compression: is the RE an xref to another RE slot in the rules[] table?\n          if (typeof rule_re === 'number') {\n            rules[i] = rules[rule_re];\n          }\n        }\n\n        // step 2: unfold the conditions[] set to make these ready for use:\n        var conditions = this.conditions;\n\n        for (var k in conditions) {\n          var spec = conditions[k];\n          var rule_ids = spec.rules;\n          var len = rule_ids.length;\n          var rule_regexes = new Array(len + 1);             // slot 0 is unused; we use a 1-based index approach here to keep the hottest code in `lexer_next()` fast and simple! \n          var rule_new_ids = new Array(len + 1);\n\n          for (var i = 0; i < len; i++) {\n            var idx = rule_ids[i];\n            var rule_re = rules[idx];\n            rule_regexes[i + 1] = rule_re;\n            rule_new_ids[i + 1] = idx;\n          }\n\n          spec.rules = rule_new_ids;\n          spec.__rule_regexes = rule_regexes;\n          spec.__rule_count = len;\n        }\n\n        this.__decompressed = true;\n      }\n\n      this._input = input || '';\n      this.clear();\n      this._signaled_error_token = false;\n      this.done = false;\n      this.yylineno = 0;\n      this.matched = '';\n      this.conditionStack = ['INITIAL'];\n      this.__currentRuleSet__ = null;\n\n      this.yylloc = {\n        first_line: 1,\n        first_column: 0,\n        last_line: 1,\n        last_column: 0,\n        range: [0, 0]\n      };\n\n      this.offset = 0;\n      return this;\n    },\n\n    /**\n     * edit the remaining input via user-specified callback.\n     * This can be used to forward-adjust the input-to-parse, \n     * e.g. inserting macro expansions and alike in the\n     * input which has yet to be lexed.\n     * The behaviour of this API contrasts the `unput()` et al\n     * APIs as those act on the *consumed* input, while this\n     * one allows one to manipulate the future, without impacting\n     * the current `yyloc` cursor location or any history. \n     * \n     * Use this API to help implement C-preprocessor-like\n     * `#include` statements, etc.\n     * \n     * The provided callback must be synchronous and is\n     * expected to return the edited input (string).\n     *\n     * The `cpsArg` argument value is passed to the callback\n     * as-is.\n     *\n     * `callback` interface: \n     * `function callback(input, cpsArg)`\n     * \n     * - `input` will carry the remaining-input-to-lex string\n     *   from the lexer.\n     * - `cpsArg` is `cpsArg` passed into this API.\n     * \n     * The `this` reference for the callback will be set to\n     * reference this lexer instance so that userland code\n     * in the callback can easily and quickly access any lexer\n     * API. \n     *\n     * When the callback returns a non-string-type falsey value,\n     * we assume the callback did not edit the input and we\n     * will using the input as-is.\n     *\n     * When the callback returns a non-string-type value, it\n     * is converted to a string for lexing via the `\"\" + retval`\n     * operation. (See also why: http://2ality.com/2012/03/converting-to-string.html \n     * -- that way any returned object's `toValue()` and `toString()`\n     * methods will be invoked in a proper/desirable order.)\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    editRemainingInput: function lexer_editRemainingInput(callback, cpsArg) {\n      var rv = callback.call(this, this._input, cpsArg);\n\n      if (typeof rv !== 'string') {\n        if (rv) {\n          this._input = '' + rv;\n        } \n        // else: keep `this._input` as is.  \n      } else {\n        this._input = rv;\n      }\n\n      return this;\n    },\n\n    /**\n     * consumes and returns one char from the input\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    input: function lexer_input() {\n      if (!this._input) {\n        //this.done = true;    -- don't set `done` as we want the lex()/next() API to be able to produce one custom EOF token match after this anyhow. (lexer can match special <<EOF>> tokens and perform user action code for a <<EOF>> match, but only does so *once*)\n        return null;\n      }\n\n      var ch = this._input[0];\n      this.yytext += ch;\n      this.yyleng++;\n      this.offset++;\n      this.match += ch;\n      this.matched += ch;\n\n      // Count the linenumber up when we hit the LF (or a stand-alone CR).\n      // On CRLF, the linenumber is incremented when you fetch the CR or the CRLF combo\n      // and we advance immediately past the LF as well, returning both together as if\n      // it was all a single 'character' only.\n      var slice_len = 1;\n\n      var lines = false;\n\n      if (ch === '\\n') {\n        lines = true;\n      } else if (ch === '\\r') {\n        lines = true;\n        var ch2 = this._input[1];\n\n        if (ch2 === '\\n') {\n          slice_len++;\n          ch += ch2;\n          this.yytext += ch2;\n          this.yyleng++;\n          this.offset++;\n          this.match += ch2;\n          this.matched += ch2;\n          this.yylloc.range[1]++;\n        }\n      }\n\n      if (lines) {\n        this.yylineno++;\n        this.yylloc.last_line++;\n        this.yylloc.last_column = 0;\n      } else {\n        this.yylloc.last_column++;\n      }\n\n      this.yylloc.range[1]++;\n      this._input = this._input.slice(slice_len);\n      return ch;\n    },\n\n    /**\n     * unshifts one char (or an entire string) into the input\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    unput: function lexer_unput(ch) {\n      var len = ch.length;\n      var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n      this._input = ch + this._input;\n      this.yytext = this.yytext.substr(0, this.yytext.length - len);\n      this.yyleng = this.yytext.length;\n      this.offset -= len;\n      this.match = this.match.substr(0, this.match.length - len);\n      this.matched = this.matched.substr(0, this.matched.length - len);\n\n      if (lines.length > 1) {\n        this.yylineno -= lines.length - 1;\n        this.yylloc.last_line = this.yylineno + 1;\n\n        // Get last entirely matched line into the `pre_lines[]` array's\n        // last index slot; we don't mind when other previously \n        // matched lines end up in the array too. \n        var pre = this.match;\n\n        var pre_lines = pre.split(/(?:\\r\\n?|\\n)/g);\n\n        if (pre_lines.length === 1) {\n          pre = this.matched;\n          pre_lines = pre.split(/(?:\\r\\n?|\\n)/g);\n        }\n\n        this.yylloc.last_column = pre_lines[pre_lines.length - 1].length;\n      } else {\n        this.yylloc.last_column -= len;\n      }\n\n      this.yylloc.range[1] = this.yylloc.range[0] + this.yyleng;\n      this.done = false;\n      return this;\n    },\n\n    /**\n     * cache matched text and append it on next action\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    more: function lexer_more() {\n      this._more = true;\n      return this;\n    },\n\n    /**\n     * signal the lexer that this rule fails to match the input, so the\n     * next matching rule (regex) should be tested instead.\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    reject: function lexer_reject() {\n      if (this.options.backtrack_lexer) {\n        this._backtrack = true;\n      } else {\n        // when the `parseError()` call returns, we MUST ensure that the error is registered.\n        // We accomplish this by signaling an 'error' token to be produced for the current\n        // `.lex()` run.\n        var lineno_msg = '';\n\n        if (this.yylloc) {\n          lineno_msg = ' on line ' + (this.yylineno + 1);\n        }\n\n        var p = this.constructLexErrorInfo(\n          'Lexical error' + lineno_msg + ': You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).',\n          false\n        );\n\n        this._signaled_error_token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n      }\n\n      return this;\n    },\n\n    /**\n     * retain first n characters of the match\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    less: function lexer_less(n) {\n      return this.unput(this.match.slice(n));\n    },\n\n    /**\n     * return (part of the) already matched input, i.e. for error\n     * messages.\n     * \n     * Limit the returned string length to `maxSize` (default: 20).\n     * \n     * Limit the returned string to the `maxLines` number of lines of\n     * input (default: 1).\n     * \n     * Negative limit values equal *unlimited*.\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    pastInput: function lexer_pastInput(maxSize, maxLines) {\n      var past = this.matched.substring(0, this.matched.length - this.match.length);\n\n      if (maxSize < 0)\n        maxSize = past.length;\n      else if (!maxSize)\n        maxSize = 20;\n\n      if (maxLines < 0)\n        maxLines = past.length;          // can't ever have more input lines than this! \n      else if (!maxLines)\n        maxLines = 1;\n\n      // `substr` anticipation: treat \\r\\n as a single character and take a little\n      // more than necessary so that we can still properly check against maxSize\n      // after we've transformed and limited the newLines in here:\n      past = past.substr(-maxSize * 2 - 2);\n\n      // now that we have a significantly reduced string to process, transform the newlines\n      // and chop them, then limit them:\n      var a = past.replace(/\\r\\n|\\r/g, '\\n').split('\\n');\n\n      a = a.slice(-maxLines);\n      past = a.join('\\n');\n\n      // When, after limiting to maxLines, we still have too much to return,\n      // do add an ellipsis prefix...\n      if (past.length > maxSize) {\n        past = '...' + past.substr(-maxSize);\n      }\n\n      return past;\n    },\n\n    /**\n     * return (part of the) upcoming input, i.e. for error messages.\n     * \n     * Limit the returned string length to `maxSize` (default: 20).\n     * \n     * Limit the returned string to the `maxLines` number of lines of input (default: 1).\n     * \n     * Negative limit values equal *unlimited*.\n     *\n     * > ### NOTE ###\n     * >\n     * > *\"upcoming input\"* is defined as the whole of the both\n     * > the *currently lexed* input, together with any remaining input\n     * > following that. *\"currently lexed\"* input is the input \n     * > already recognized by the lexer but not yet returned with\n     * > the lexer token. This happens when you are invoking this API\n     * > from inside any lexer rule action code block. \n     * >\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    upcomingInput: function lexer_upcomingInput(maxSize, maxLines) {\n      var next = this.match;\n\n      if (maxSize < 0)\n        maxSize = next.length + this._input.length;\n      else if (!maxSize)\n        maxSize = 20;\n\n      if (maxLines < 0)\n        maxLines = maxSize;          // can't ever have more input lines than this! \n      else if (!maxLines)\n        maxLines = 1;\n\n      // `substring` anticipation: treat \\r\\n as a single character and take a little\n      // more than necessary so that we can still properly check against maxSize\n      // after we've transformed and limited the newLines in here:\n      if (next.length < maxSize * 2 + 2) {\n        next += this._input.substring(0, maxSize * 2 + 2);   // substring is faster on Chrome/V8 \n      }\n\n      // now that we have a significantly reduced string to process, transform the newlines\n      // and chop them, then limit them:\n      var a = next.replace(/\\r\\n|\\r/g, '\\n').split('\\n');\n\n      a = a.slice(0, maxLines);\n      next = a.join('\\n');\n\n      // When, after limiting to maxLines, we still have too much to return,\n      // do add an ellipsis postfix...\n      if (next.length > maxSize) {\n        next = next.substring(0, maxSize) + '...';\n      }\n\n      return next;\n    },\n\n    /**\n     * return a string which displays the character position where the\n     * lexing error occurred, i.e. for error messages\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    showPosition: function lexer_showPosition(maxPrefix, maxPostfix) {\n      var pre = this.pastInput(maxPrefix).replace(/\\s/g, ' ');\n      var c = new Array(pre.length + 1).join('-');\n      return pre + this.upcomingInput(maxPostfix).replace(/\\s/g, ' ') + '\\n' + c + '^';\n    },\n\n    /**\n     * return an YYLLOC info object derived off the given context (actual, preceding, following, current).\n     * Use this method when the given `actual` location is not guaranteed to exist (i.e. when\n     * it MAY be NULL) and you MUST have a valid location info object anyway:\n     * then we take the given context of the `preceding` and `following` locations, IFF those are available,\n     * and reconstruct the `actual` location info from those.\n     * If this fails, the heuristic is to take the `current` location, IFF available.\n     * If this fails as well, we assume the sought location is at/around the current lexer position\n     * and then produce that one as a response. DO NOTE that these heuristic/derived location info\n     * values MAY be inaccurate!\n     *\n     * NOTE: `deriveLocationInfo()` ALWAYS produces a location info object *copy* of `actual`, not just\n     * a *reference* hence all input location objects can be assumed to be 'constant' (function has no side-effects).\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    deriveLocationInfo: function lexer_deriveYYLLOC(actual, preceding, following, current) {\n      var loc = {\n        first_line: 1,\n        first_column: 0,\n        last_line: 1,\n        last_column: 0,\n        range: [0, 0]\n      };\n\n      if (actual) {\n        loc.first_line = actual.first_line | 0;\n        loc.last_line = actual.last_line | 0;\n        loc.first_column = actual.first_column | 0;\n        loc.last_column = actual.last_column | 0;\n\n        if (actual.range) {\n          loc.range[0] = actual.range[0] | 0;\n          loc.range[1] = actual.range[1] | 0;\n        }\n      }\n\n      if (loc.first_line <= 0 || loc.last_line < loc.first_line) {\n        // plan B: heuristic using preceding and following:\n        if (loc.first_line <= 0 && preceding) {\n          loc.first_line = preceding.last_line | 0;\n          loc.first_column = preceding.last_column | 0;\n\n          if (preceding.range) {\n            loc.range[0] = actual.range[1] | 0;\n          }\n        }\n\n        if ((loc.last_line <= 0 || loc.last_line < loc.first_line) && following) {\n          loc.last_line = following.first_line | 0;\n          loc.last_column = following.first_column | 0;\n\n          if (following.range) {\n            loc.range[1] = actual.range[0] | 0;\n          }\n        }\n\n        // plan C?: see if the 'current' location is useful/sane too:\n        if (loc.first_line <= 0 && current && (loc.last_line <= 0 || current.last_line <= loc.last_line)) {\n          loc.first_line = current.first_line | 0;\n          loc.first_column = current.first_column | 0;\n\n          if (current.range) {\n            loc.range[0] = current.range[0] | 0;\n          }\n        }\n\n        if (loc.last_line <= 0 && current && (loc.first_line <= 0 || current.first_line >= loc.first_line)) {\n          loc.last_line = current.last_line | 0;\n          loc.last_column = current.last_column | 0;\n\n          if (current.range) {\n            loc.range[1] = current.range[1] | 0;\n          }\n        }\n      }\n\n      // sanitize: fix last_line BEFORE we fix first_line as we use the 'raw' value of the latter\n      // or plan D heuristics to produce a 'sensible' last_line value:\n      if (loc.last_line <= 0) {\n        if (loc.first_line <= 0) {\n          loc.first_line = this.yylloc.first_line;\n          loc.last_line = this.yylloc.last_line;\n          loc.first_column = this.yylloc.first_column;\n          loc.last_column = this.yylloc.last_column;\n          loc.range[0] = this.yylloc.range[0];\n          loc.range[1] = this.yylloc.range[1];\n        } else {\n          loc.last_line = this.yylloc.last_line;\n          loc.last_column = this.yylloc.last_column;\n          loc.range[1] = this.yylloc.range[1];\n        }\n      }\n\n      if (loc.first_line <= 0) {\n        loc.first_line = loc.last_line;\n        loc.first_column = 0;  // loc.last_column; \n        loc.range[1] = loc.range[0];\n      }\n\n      if (loc.first_column < 0) {\n        loc.first_column = 0;\n      }\n\n      if (loc.last_column < 0) {\n        loc.last_column = (loc.first_column > 0 ? loc.first_column : 80);\n      }\n\n      return loc;\n    },\n\n    /**\n     * return a string which displays the lines & columns of input which are referenced \n     * by the given location info range, plus a few lines of context.\n     * \n     * This function pretty-prints the indicated section of the input, with line numbers \n     * and everything!\n     * \n     * This function is very useful to provide highly readable error reports, while\n     * the location range may be specified in various flexible ways:\n     * \n     * - `loc` is the location info object which references the area which should be\n     *   displayed and 'marked up': these lines & columns of text are marked up by `^`\n     *   characters below each character in the entire input range.\n     * \n     * - `context_loc` is the *optional* location info object which instructs this\n     *   pretty-printer how much *leading* context should be displayed alongside\n     *   the area referenced by `loc`. This can help provide context for the displayed\n     *   error, etc.\n     * \n     *   When this location info is not provided, a default context of 3 lines is\n     *   used.\n     * \n     * - `context_loc2` is another *optional* location info object, which serves\n     *   a similar purpose to `context_loc`: it specifies the amount of *trailing*\n     *   context lines to display in the pretty-print output.\n     * \n     *   When this location info is not provided, a default context of 1 line only is\n     *   used.\n     * \n     * Special Notes:\n     * \n     * - when the `loc`-indicated range is very large (about 5 lines or more), then\n     *   only the first and last few lines of this block are printed while a\n     *   `...continued...` message will be printed between them.\n     * \n     *   This serves the purpose of not printing a huge amount of text when the `loc`\n     *   range happens to be huge: this way a manageable & readable output results\n     *   for arbitrary large ranges.\n     * \n     * - this function can display lines of input which whave not yet been lexed.\n     *   `prettyPrintRange()` can access the entire input!\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    prettyPrintRange: function lexer_prettyPrintRange(loc, context_loc, context_loc2) {\n      loc = this.deriveLocationInfo(loc, context_loc, context_loc2);\n      const CONTEXT = 3;\n      const CONTEXT_TAIL = 1;\n      const MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT = 2;\n      var input = this.matched + this._input;\n      var lines = input.split('\\n');\n      var l0 = Math.max(1, (context_loc ? context_loc.first_line : loc.first_line - CONTEXT));\n      var l1 = Math.max(1, (context_loc2 ? context_loc2.last_line : loc.last_line + CONTEXT_TAIL));\n      var lineno_display_width = 1 + Math.log10(l1 | 1) | 0;\n      var ws_prefix = new Array(lineno_display_width).join(' ');\n      var nonempty_line_indexes = [];\n\n      var rv = lines.slice(l0 - 1, l1 + 1).map(function injectLineNumber(line, index) {\n        var lno = index + l0;\n        var lno_pfx = (ws_prefix + lno).substr(-lineno_display_width);\n        var rv = lno_pfx + ': ' + line;\n        var errpfx = new Array(lineno_display_width + 1).join('^');\n        var offset = 2 + 1;\n        var len = 0;\n\n        if (lno === loc.first_line) {\n          offset += loc.first_column;\n\n          len = Math.max(\n            2,\n            ((lno === loc.last_line ? loc.last_column : line.length)) - loc.first_column + 1\n          );\n        } else if (lno === loc.last_line) {\n          len = Math.max(2, loc.last_column + 1);\n        } else if (lno > loc.first_line && lno < loc.last_line) {\n          len = Math.max(2, line.length + 1);\n        }\n\n        if (len) {\n          var lead = new Array(offset).join('.');\n          var mark = new Array(len).join('^');\n          rv += '\\n' + errpfx + lead + mark;\n\n          if (line.trim().length > 0) {\n            nonempty_line_indexes.push(index);\n          }\n        }\n\n        rv = rv.replace(/\\t/g, ' ');\n        return rv;\n      });\n\n      // now make sure we don't print an overly large amount of error area: limit it \n      // to the top and bottom line count:\n      if (nonempty_line_indexes.length > 2 * MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT) {\n        var clip_start = nonempty_line_indexes[MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT - 1] + 1;\n        var clip_end = nonempty_line_indexes[nonempty_line_indexes.length - MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT] - 1;\n        var intermediate_line = new Array(lineno_display_width + 1).join(' ') + '  (...continued...)';\n        intermediate_line += '\\n' + new Array(lineno_display_width + 1).join('-') + '  (---------------)';\n        rv.splice(clip_start, clip_end - clip_start + 1, intermediate_line);\n      }\n\n      return rv.join('\\n');\n    },\n\n    /**\n     * helper function, used to produce a human readable description as a string, given\n     * the input `yylloc` location object.\n     * \n     * Set `display_range_too` to TRUE to include the string character index position(s)\n     * in the description if the `yylloc.range` is available.\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    describeYYLLOC: function lexer_describe_yylloc(yylloc, display_range_too) {\n      var l1 = yylloc.first_line;\n      var l2 = yylloc.last_line;\n      var c1 = yylloc.first_column;\n      var c2 = yylloc.last_column;\n      var dl = l2 - l1;\n      var dc = c2 - c1;\n      var rv;\n\n      if (dl === 0) {\n        rv = 'line ' + l1 + ', ';\n\n        if (dc <= 1) {\n          rv += 'column ' + c1;\n        } else {\n          rv += 'columns ' + c1 + ' .. ' + c2;\n        }\n      } else {\n        rv = 'lines ' + l1 + '(column ' + c1 + ') .. ' + l2 + '(column ' + c2 + ')';\n      }\n\n      if (yylloc.range && display_range_too) {\n        var r1 = yylloc.range[0];\n        var r2 = yylloc.range[1] - 1;\n\n        if (r2 <= r1) {\n          rv += ' {String Offset: ' + r1 + '}';\n        } else {\n          rv += ' {String Offset range: ' + r1 + ' .. ' + r2 + '}';\n        }\n      }\n\n      return rv;\n    },\n\n    /**\n     * test the lexed token: return FALSE when not a match, otherwise return token.\n     * \n     * `match` is supposed to be an array coming out of a regex match, i.e. `match[0]`\n     * contains the actually matched text string.\n     * \n     * Also move the input cursor forward and update the match collectors:\n     * \n     * - `yytext`\n     * - `yyleng`\n     * - `match`\n     * - `matches`\n     * - `yylloc`\n     * - `offset`\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    test_match: function lexer_test_match(match, indexed_rule) {\n      var token, lines, backup, match_str, match_str_len;\n\n      if (this.options.backtrack_lexer) {\n        // save context\n        backup = {\n          yylineno: this.yylineno,\n\n          yylloc: {\n            first_line: this.yylloc.first_line,\n            last_line: this.yylloc.last_line,\n            first_column: this.yylloc.first_column,\n            last_column: this.yylloc.last_column,\n            range: this.yylloc.range.slice(0)\n          },\n\n          yytext: this.yytext,\n          match: this.match,\n          matches: this.matches,\n          matched: this.matched,\n          yyleng: this.yyleng,\n          offset: this.offset,\n          _more: this._more,\n          _input: this._input,\n\n          //_signaled_error_token: this._signaled_error_token,\n          yy: this.yy,\n\n          conditionStack: this.conditionStack.slice(0),\n          done: this.done\n        };\n      }\n\n      match_str = match[0];\n      match_str_len = match_str.length;\n\n      // if (match_str.indexOf('\\n') !== -1 || match_str.indexOf('\\r') !== -1) {\n      lines = match_str.split(/(?:\\r\\n?|\\n)/g);\n\n      if (lines.length > 1) {\n        this.yylineno += lines.length - 1;\n        this.yylloc.last_line = this.yylineno + 1;\n        this.yylloc.last_column = lines[lines.length - 1].length;\n      } else {\n        this.yylloc.last_column += match_str_len;\n      }\n\n      // }\n      this.yytext += match_str;\n\n      this.match += match_str;\n      this.matched += match_str;\n      this.matches = match;\n      this.yyleng = this.yytext.length;\n      this.yylloc.range[1] += match_str_len;\n\n      // previous lex rules MAY have invoked the `more()` API rather than producing a token:\n      // those rules will already have moved this `offset` forward matching their match lengths,\n      // hence we must only add our own match length now:\n      this.offset += match_str_len;\n\n      this._more = false;\n      this._backtrack = false;\n      this._input = this._input.slice(match_str_len);\n\n      // calling this method:\n      //\n      //   function lexer__performAction(yy, yyrulenumber, YY_START) {...}\n      token = this.performAction.call(\n        this,\n        this.yy,\n        indexed_rule,\n        this.conditionStack[this.conditionStack.length - 1] /* = YY_START */\n      );\n\n      // otherwise, when the action codes are all simple return token statements:\n      //token = this.simpleCaseActionClusters[indexed_rule];\n\n      if (this.done && this._input) {\n        this.done = false;\n      }\n\n      if (token) {\n        return token;\n      } else if (this._backtrack) {\n        // recover context\n        for (var k in backup) {\n          this[k] = backup[k];\n        }\n\n        this.__currentRuleSet__ = null;\n        return false;  // rule action called reject() implying the next rule should be tested instead. \n      } else if (this._signaled_error_token) {\n        // produce one 'error' token as `.parseError()` in `reject()`\n        // did not guarantee a failure signal by throwing an exception!\n        token = this._signaled_error_token;\n\n        this._signaled_error_token = false;\n        return token;\n      }\n\n      return false;\n    },\n\n    /**\n     * return next match in input\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    next: function lexer_next() {\n      if (this.done) {\n        this.clear();\n        return this.EOF;\n      }\n\n      if (!this._input) {\n        this.done = true;\n      }\n\n      var token, match, tempMatch, index;\n\n      if (!this._more) {\n        this.clear();\n      }\n\n      var spec = this.__currentRuleSet__;\n\n      if (!spec) {\n        // Update the ruleset cache as we apparently encountered a state change or just started lexing.\n        // The cache is set up for fast lookup -- we assume a lexer will switch states much less often than it will\n        // invoke the `lex()` token-producing API and related APIs, hence caching the set for direct access helps\n        // speed up those activities a tiny bit.\n        spec = this.__currentRuleSet__ = this._currentRules();\n\n        // Check whether a *sane* condition has been pushed before: this makes the lexer robust against\n        // user-programmer bugs such as https://github.com/zaach/jison-lex/issues/19\n        if (!spec || !spec.rules) {\n          var lineno_msg = '';\n\n          if (this.options.trackPosition) {\n            lineno_msg = ' on line ' + (this.yylineno + 1);\n          }\n\n          var p = this.constructLexErrorInfo(\n            'Internal lexer engine error' + lineno_msg + ': The lex grammar programmer pushed a non-existing condition name \"' + this.topState() + '\"; this is a fatal error and should be reported to the application programmer team!',\n            false\n          );\n\n          // produce one 'error' token until this situation has been resolved, most probably by parse termination!\n          return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n        }\n      }\n\n      var rule_ids = spec.rules;\n      var regexes = spec.__rule_regexes;\n      var len = spec.__rule_count;\n\n      // Note: the arrays are 1-based, while `len` itself is a valid index,\n      // hence the non-standard less-or-equal check in the next loop condition!\n      for (var i = 1; i <= len; i++) {\n        tempMatch = this._input.match(regexes[i]);\n\n        if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n          match = tempMatch;\n          index = i;\n\n          if (this.options.backtrack_lexer) {\n            token = this.test_match(tempMatch, rule_ids[i]);\n\n            if (token !== false) {\n              return token;\n            } else if (this._backtrack) {\n              match = undefined;\n              continue;  // rule action called reject() implying a rule MISmatch. \n            } else {\n              // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n              return false;\n            }\n          } else if (!this.options.flex) {\n            break;\n          }\n        }\n      }\n\n      if (match) {\n        token = this.test_match(match, rule_ids[index]);\n\n        if (token !== false) {\n          return token;\n        }\n\n        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n        return false;\n      }\n\n      if (!this._input) {\n        this.done = true;\n        this.clear();\n        return this.EOF;\n      } else {\n        var lineno_msg = '';\n\n        if (this.options.trackPosition) {\n          lineno_msg = ' on line ' + (this.yylineno + 1);\n        }\n\n        var p = this.constructLexErrorInfo(\n          'Lexical error' + lineno_msg + ': Unrecognized text.',\n          this.options.lexerErrorsAreRecoverable\n        );\n\n        var pendingInput = this._input;\n        var activeCondition = this.topState();\n        var conditionStackDepth = this.conditionStack.length;\n        token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n\n        if (token === this.ERROR) {\n          // we can try to recover from a lexer error that `parseError()` did not 'recover' for us\n          // by moving forward at least one character at a time IFF the (user-specified?) `parseError()`\n          // has not consumed/modified any pending input or changed state in the error handler:\n          if (!this.matches && // and make sure the input has been modified/consumed ...\n          pendingInput === this._input && // ...or the lexer state has been modified significantly enough\n          // to merit a non-consuming error handling action right now.\n          activeCondition === this.topState() && conditionStackDepth === this.conditionStack.length) {\n            this.input();\n          }\n        }\n\n        return token;\n      }\n    },\n\n    /**\n     * return next match that has a token\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    lex: function lexer_lex() {\n      var r;\n\n      // allow the PRE/POST handlers set/modify the return token for maximum flexibility of the generated lexer:\n      if (typeof this.pre_lex === 'function') {\n        r = this.pre_lex.call(this, 0);\n      }\n\n      if (typeof this.options.pre_lex === 'function') {\n        // (also account for a userdef function which does not return any value: keep the token as is)\n        r = this.options.pre_lex.call(this, r) || r;\n      }\n\n      if (this.yy && typeof this.yy.pre_lex === 'function') {\n        // (also account for a userdef function which does not return any value: keep the token as is)\n        r = this.yy.pre_lex.call(this, r) || r;\n      }\n\n      while (!r) {\n        r = this.next();\n      }\n\n      if (this.yy && typeof this.yy.post_lex === 'function') {\n        // (also account for a userdef function which does not return any value: keep the token as is)\n        r = this.yy.post_lex.call(this, r) || r;\n      }\n\n      if (typeof this.options.post_lex === 'function') {\n        // (also account for a userdef function which does not return any value: keep the token as is)\n        r = this.options.post_lex.call(this, r) || r;\n      }\n\n      if (typeof this.post_lex === 'function') {\n        // (also account for a userdef function which does not return any value: keep the token as is)\n        r = this.post_lex.call(this, r) || r;\n      }\n\n      return r;\n    },\n\n    /**\n     * return next match that has a token. Identical to the `lex()` API but does not invoke any of the \n     * `pre_lex()` nor any of the `post_lex()` callbacks.\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    fastLex: function lexer_fastLex() {\n      var r;\n\n      while (!r) {\n        r = this.next();\n      }\n\n      return r;\n    },\n\n    /**\n     * return info about the lexer state that can help a parser or other lexer API user to use the\n     * most efficient means available. This API is provided to aid run-time performance for larger\n     * systems which employ this lexer.\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    canIUse: function lexer_canIUse() {\n      var rv = {\n        fastLex: !(typeof this.pre_lex === 'function' || typeof this.options.pre_lex === 'function' || this.yy && typeof this.yy.pre_lex === 'function' || this.yy && typeof this.yy.post_lex === 'function' || typeof this.options.post_lex === 'function' || typeof this.post_lex === 'function') && typeof this.fastLex === 'function'\n      };\n\n      return rv;\n    },\n\n    /**\n     * backwards compatible alias for `pushState()`;\n     * the latter is symmetrical with `popState()` and we advise to use\n     * those APIs in any modern lexer code, rather than `begin()`.\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    begin: function lexer_begin(condition) {\n      return this.pushState(condition);\n    },\n\n    /**\n     * activates a new lexer condition state (pushes the new lexer\n     * condition state onto the condition stack)\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    pushState: function lexer_pushState(condition) {\n      this.conditionStack.push(condition);\n      this.__currentRuleSet__ = null;\n      return this;\n    },\n\n    /**\n     * pop the previously active lexer condition state off the condition\n     * stack\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    popState: function lexer_popState() {\n      var n = this.conditionStack.length - 1;\n\n      if (n > 0) {\n        this.__currentRuleSet__ = null;\n        return this.conditionStack.pop();\n      } else {\n        return this.conditionStack[0];\n      }\n    },\n\n    /**\n     * return the currently active lexer condition state; when an index\n     * argument is provided it produces the N-th previous condition state,\n     * if available\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    topState: function lexer_topState(n) {\n      n = this.conditionStack.length - 1 - Math.abs(n || 0);\n\n      if (n >= 0) {\n        return this.conditionStack[n];\n      } else {\n        return 'INITIAL';\n      }\n    },\n\n    /**\n     * (internal) determine the lexer rule set which is active for the\n     * currently active lexer condition state\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    _currentRules: function lexer__currentRules() {\n      if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n        return this.conditions[this.conditionStack[this.conditionStack.length - 1]];\n      } else {\n        return this.conditions['INITIAL'];\n      }\n    },\n\n    /**\n     * return the number of states currently on the stack\n     * \n     * @public\n     * @this {RegExpLexer}\n     */\n    stateStackSize: function lexer_stateStackSize() {\n      return this.conditionStack.length;\n    },\n\n    options: {\n      trackPosition: true\n    },\n\n    JisonLexerError: JisonLexerError,\n\n    performAction: function lexer__performAction(yy, yyrulenumber, YY_START) {\n      var yy_ = this;\n      var YYSTATE = YY_START;\n\n      switch (yyrulenumber) {\n      case 1:\n        /*! Conditions:: INITIAL */\n        /*! Rule::       \\s+ */\n        /* skip whitespace */\n        break;\n\n      default:\n        return this.simpleCaseActionClusters[yyrulenumber];\n      }\n    },\n\n    simpleCaseActionClusters: {\n      /*! Conditions:: INITIAL */\n      /*! Rule::       (--[0-9a-z-A-Z-]*) */\n      0: 13,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       \\* */\n      2: 5,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       \\/ */\n      3: 6,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       \\+ */\n      4: 3,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       - */\n      5: 4,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)px\\b */\n      6: 15,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)cm\\b */\n      7: 15,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)mm\\b */\n      8: 15,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)in\\b */\n      9: 15,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)pt\\b */\n      10: 15,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)pc\\b */\n      11: 15,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)deg\\b */\n      12: 16,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)grad\\b */\n      13: 16,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)rad\\b */\n      14: 16,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)turn\\b */\n      15: 16,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)s\\b */\n      16: 17,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)ms\\b */\n      17: 17,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)Hz\\b */\n      18: 18,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)kHz\\b */\n      19: 18,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)dpi\\b */\n      20: 19,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)dpcm\\b */\n      21: 19,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)dppx\\b */\n      22: 19,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)em\\b */\n      23: 20,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)ex\\b */\n      24: 21,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)ch\\b */\n      25: 22,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)rem\\b */\n      26: 23,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vw\\b */\n      27: 25,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vh\\b */\n      28: 24,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vmin\\b */\n      29: 26,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vmax\\b */\n      30: 27,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)% */\n      31: 28,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)\\b */\n      32: 11,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       (calc) */\n      33: 9,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       (var) */\n      34: 12,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       ([a-z]+) */\n      35: 10,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       \\( */\n      36: 7,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       \\) */\n      37: 8,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       , */\n      38: 14,\n\n      /*! Conditions:: INITIAL */\n      /*! Rule::       $ */\n      39: 1\n    },\n\n    rules: [\n      /*  0: */  /^(?:(--[\\d\\-A-Za-z]*))/,\n      /*  1: */  /^(?:\\s+)/,\n      /*  2: */  /^(?:\\*)/,\n      /*  3: */  /^(?:\\/)/,\n      /*  4: */  /^(?:\\+)/,\n      /*  5: */  /^(?:-)/,\n      /*  6: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)px\\b)/,\n      /*  7: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)cm\\b)/,\n      /*  8: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)mm\\b)/,\n      /*  9: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)in\\b)/,\n      /* 10: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)pt\\b)/,\n      /* 11: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)pc\\b)/,\n      /* 12: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)deg\\b)/,\n      /* 13: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)grad\\b)/,\n      /* 14: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)rad\\b)/,\n      /* 15: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)turn\\b)/,\n      /* 16: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)s\\b)/,\n      /* 17: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)ms\\b)/,\n      /* 18: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)Hz\\b)/,\n      /* 19: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)kHz\\b)/,\n      /* 20: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)dpi\\b)/,\n      /* 21: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)dpcm\\b)/,\n      /* 22: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)dppx\\b)/,\n      /* 23: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)em\\b)/,\n      /* 24: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)ex\\b)/,\n      /* 25: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)ch\\b)/,\n      /* 26: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)rem\\b)/,\n      /* 27: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vw\\b)/,\n      /* 28: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vh\\b)/,\n      /* 29: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vmin\\b)/,\n      /* 30: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vmax\\b)/,\n      /* 31: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)%)/,\n      /* 32: */  /^(?:(\\d+(\\.\\d*)?|\\.\\d+)\\b)/,\n      /* 33: */  /^(?:(calc))/,\n      /* 34: */  /^(?:(var))/,\n      /* 35: */  /^(?:([a-z]+))/,\n      /* 36: */  /^(?:\\()/,\n      /* 37: */  /^(?:\\))/,\n      /* 38: */  /^(?:,)/,\n      /* 39: */  /^(?:$)/\n    ],\n\n    conditions: {\n      'INITIAL': {\n        rules: [\n          0,\n          1,\n          2,\n          3,\n          4,\n          5,\n          6,\n          7,\n          8,\n          9,\n          10,\n          11,\n          12,\n          13,\n          14,\n          15,\n          16,\n          17,\n          18,\n          19,\n          20,\n          21,\n          22,\n          23,\n          24,\n          25,\n          26,\n          27,\n          28,\n          29,\n          30,\n          31,\n          32,\n          33,\n          34,\n          35,\n          36,\n          37,\n          38,\n          39\n        ],\n\n        inclusive: true\n      }\n    }\n  };\n\n  return lexer;\n}();\nparser.lexer = lexer;\n\n\n\nfunction Parser() {\n  this.yy = {};\n}\nParser.prototype = parser;\nparser.Parser = Parser;\n\nreturn new Parser();\n})();\n\n        \n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\n  exports.parser = parser;\n  exports.Parser = parser.Parser;\n  exports.parse = function () {\n    return parser.parse.apply(parser, arguments);\n  };\n  \n}\n", "var conversions = {\r\n    // length\r\n    'px': {\r\n        'px': 1,\r\n        'cm': 96.0/2.54,\r\n        'mm': 96.0/25.4,\r\n        'in': 96,\r\n        'pt': 96.0/72.0,\r\n        'pc': 16\r\n    },\r\n    'cm': {\r\n        'px': 2.54/96.0,\r\n        'cm': 1,\r\n        'mm': 0.1,\r\n        'in': 2.54,\r\n        'pt': 2.54/72.0,\r\n        'pc': 2.54/6.0\r\n    },\r\n    'mm': {\r\n        'px': 25.4/96.0,\r\n        'cm': 10,\r\n        'mm': 1,\r\n        'in': 25.4,\r\n        'pt': 25.4/72.0,\r\n        'pc': 25.4/6.0\r\n    },\r\n    'in': {\r\n        'px': 1.0/96.0,\r\n        'cm': 1.0/2.54,\r\n        'mm': 1.0/25.4,\r\n        'in': 1,\r\n        'pt': 1.0/72.0,\r\n        'pc': 1.0/6.0\r\n    },\r\n    'pt': {\r\n        'px': 0.75,\r\n        'cm': 72.0/2.54,\r\n        'mm': 72.0/25.4,\r\n        'in': 72,\r\n        'pt': 1,\r\n        'pc': 12\r\n    },\r\n    'pc': {\r\n        'px': 6.0/96.0,\r\n        'cm': 6.0/2.54,\r\n        'mm': 6.0/25.4,\r\n        'in': 6,\r\n        'pt': 6.0/72.0,\r\n        'pc': 1\r\n    },\r\n    // angle\r\n    'deg': {\r\n        'deg': 1,\r\n        'grad': 0.9,\r\n        'rad': 180/Math.PI,\r\n        'turn': 360\r\n    },\r\n    'grad': {\r\n        'deg': 400/360,\r\n        'grad': 1,\r\n        'rad': 200/Math.PI,\r\n        'turn': 400\r\n    },\r\n    'rad': {\r\n        'deg': Math.PI/180,\r\n        'grad': Math.PI/200,\r\n        'rad': 1,\r\n        'turn': Math.PI*2\r\n    },\r\n    'turn': {\r\n        'deg': 1/360,\r\n        'grad': 1/400,\r\n        'rad': 0.5/Math.PI,\r\n        'turn': 1\r\n    },\r\n    // time\r\n    's': {\r\n        's': 1,\r\n        'ms': 1/1000\r\n    },\r\n    'ms': {\r\n        's': 1000,\r\n        'ms': 1\r\n    },\r\n    // frequency\r\n    'Hz': {\r\n        'Hz': 1,\r\n        'kHz': 1000\r\n    },\r\n    'kHz': {\r\n        'Hz': 1/1000,\r\n        'kHz': 1\r\n    },\r\n    // resolution\r\n    'dpi': {\r\n        'dpi': 1,\r\n        'dpcm': 1.0/2.54,\r\n        'dppx': 1/96\r\n    },\r\n    'dpcm': {\r\n        'dpi': 2.54,\r\n        'dpcm': 1,\r\n        'dppx': 2.54/96.0\r\n    },\r\n    'dppx': {\r\n        'dpi': 96,\r\n        'dpcm': 96.0/2.54,\r\n        'dppx': 1\r\n    }\r\n};\r\n\r\nmodule.exports = function (value, sourceUnit, targetUnit, precision) {\r\n    if (!conversions.hasOwnProperty(targetUnit))\r\n        throw new Error(\"Cannot convert to \" + targetUnit);\r\n\r\n    if (!conversions[targetUnit].hasOwnProperty(sourceUnit))\r\n        throw new Error(\"Cannot convert from \" + sourceUnit + \" to \" + targetUnit);\r\n    \r\n    var converted = conversions[targetUnit][sourceUnit] * value;\r\n    \r\n    if (precision !== false) {\r\n        precision = Math.pow(10, parseInt(precision) || 5);\r\n        return Math.round(converted * precision) / precision;\r\n    }\r\n    \r\n    return converted;\r\n};\r\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _cssUnitConverter = require('css-unit-converter');\n\nvar _cssUnitConverter2 = _interopRequireDefault(_cssUnitConverter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction convertNodes(left, right, precision) {\n  switch (left.type) {\n    case 'LengthValue':\n    case 'AngleValue':\n    case 'TimeValue':\n    case 'FrequencyValue':\n    case 'ResolutionValue':\n      return convertAbsoluteLength(left, right, precision);\n    default:\n      return { left: left, right: right };\n  }\n}\n\nfunction convertAbsoluteLength(left, right, precision) {\n  if (right.type === left.type) {\n    right = {\n      type: left.type,\n      value: (0, _cssUnitConverter2.default)(right.value, right.unit, left.unit, precision),\n      unit: left.unit\n    };\n  }\n  return { left: left, right: right };\n}\n\nexports.default = convertNodes;\nmodule.exports = exports['default'];", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.flip = flip;\n\nvar _convert = require(\"./convert\");\n\nvar _convert2 = _interopRequireDefault(_convert);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction reduce(node, precision) {\n  if (node.type === \"MathExpression\") return reduceMathExpression(node, precision);\n  if (node.type === \"Calc\") return reduce(node.value, precision);\n\n  return node;\n}\n\nfunction isEqual(left, right) {\n  return left.type === right.type && left.value === right.value;\n}\n\nfunction isValueType(type) {\n  switch (type) {\n    case 'LengthValue':\n    case 'AngleValue':\n    case 'TimeValue':\n    case 'FrequencyValue':\n    case 'ResolutionValue':\n    case 'EmValue':\n    case 'ExValue':\n    case 'ChValue':\n    case 'RemValue':\n    case 'VhValue':\n    case 'VwValue':\n    case 'VminValue':\n    case 'VmaxValue':\n    case 'PercentageValue':\n    case 'Value':\n      return true;\n  }\n  return false;\n}\n\nfunction convertMathExpression(node, precision) {\n  var nodes = (0, _convert2.default)(node.left, node.right, precision);\n  var left = reduce(nodes.left, precision);\n  var right = reduce(nodes.right, precision);\n\n  if (left.type === \"MathExpression\" && right.type === \"MathExpression\") {\n\n    if (left.operator === '/' && right.operator === '*' || left.operator === '-' && right.operator === '+' || left.operator === '*' && right.operator === '/' || left.operator === '+' && right.operator === '-') {\n\n      if (isEqual(left.right, right.right)) nodes = (0, _convert2.default)(left.left, right.left, precision);else if (isEqual(left.right, right.left)) nodes = (0, _convert2.default)(left.left, right.right, precision);\n\n      left = reduce(nodes.left, precision);\n      right = reduce(nodes.right, precision);\n    }\n  }\n\n  node.left = left;\n  node.right = right;\n  return node;\n}\n\nfunction flip(operator) {\n  return operator === '+' ? '-' : '+';\n}\n\nfunction flipValue(node) {\n  if (isValueType(node.type)) node.value = -node.value;else if (node.type == 'MathExpression') {\n    node.left = flipValue(node.left);\n    node.right = flipValue(node.right);\n  }\n  return node;\n}\n\nfunction reduceAddSubExpression(node, precision) {\n  var _node = node,\n      left = _node.left,\n      right = _node.right,\n      op = _node.operator;\n\n\n  if (left.type === 'CssVariable' || right.type === 'CssVariable') return node;\n\n  // something + 0 => something\n  // something - 0 => something\n  if (right.value === 0) return left;\n\n  // 0 + something => something\n  if (left.value === 0 && op === \"+\") return right;\n\n  // 0 - something => -something\n  if (left.value === 0 && op === \"-\") return flipValue(right);\n\n  // value + value\n  // value - value\n  if (left.type === right.type && isValueType(left.type)) {\n    node = Object.assign({}, left);\n    if (op === \"+\") node.value = left.value + right.value;else node.value = left.value - right.value;\n  }\n\n  // value <op> (expr)\n  if (isValueType(left.type) && (right.operator === '+' || right.operator === '-') && right.type === 'MathExpression') {\n    // value + (value + something) => (value + value) + something\n    // value + (value - something) => (value + value) - something\n    // value - (value + something) => (value - value) - something\n    // value - (value - something) => (value - value) + something\n    if (left.type === right.left.type) {\n      node = Object.assign({}, node);\n      node.left = reduce({\n        type: 'MathExpression',\n        operator: op,\n        left: left,\n        right: right.left\n      }, precision);\n      node.right = right.right;\n      node.operator = op === '-' ? flip(right.operator) : right.operator;\n      return reduce(node, precision);\n    }\n    // value + (something + value) => (value + value) + something\n    // value + (something - value) => (value - value) + something\n    // value - (something + value) => (value - value) - something\n    // value - (something - value) => (value + value) - something\n    else if (left.type === right.right.type) {\n        node = Object.assign({}, node);\n        node.left = reduce({\n          type: 'MathExpression',\n          operator: op === '-' ? flip(right.operator) : right.operator,\n          left: left,\n          right: right.right\n        }, precision);\n        node.right = right.left;\n        return reduce(node, precision);\n      }\n  }\n\n  // (expr) <op> value\n  if (left.type === 'MathExpression' && (left.operator === '+' || left.operator === '-') && isValueType(right.type)) {\n    // (value + something) + value => (value + value) + something\n    // (value - something) + value => (value + value) - something\n    // (value + something) - value => (value - value) + something\n    // (value - something) - value => (value - value) - something\n    if (right.type === left.left.type) {\n      node = Object.assign({}, left);\n      node.left = reduce({\n        type: 'MathExpression',\n        operator: op,\n        left: left.left,\n        right: right\n      }, precision);\n      return reduce(node, precision);\n    }\n    // (something + value) + value => something + (value + value)\n    // (something - value1) + value2 => something - (value2 - value1)\n    // (something + value) - value => something + (value - value)\n    // (something - value) - value => something - (value + value)\n    else if (right.type === left.right.type) {\n        node = Object.assign({}, left);\n        if (left.operator === '-') {\n          node.right = reduce({\n            type: 'MathExpression',\n            operator: op === '-' ? '+' : '-',\n            left: right,\n            right: left.right\n          }, precision);\n          node.operator = op === '-' ? '-' : '+';\n        } else {\n          node.right = reduce({\n            type: 'MathExpression',\n            operator: op,\n            left: left.right,\n            right: right\n          }, precision);\n        }\n        if (node.right.value < 0) {\n          node.right.value *= -1;\n          node.operator = node.operator === '-' ? '+' : '-';\n        }\n        return reduce(node, precision);\n      }\n  }\n  return node;\n}\n\nfunction reduceDivisionExpression(node, precision) {\n  if (!isValueType(node.right.type)) return node;\n\n  if (node.right.type !== 'Value') throw new Error(\"Cannot divide by \\\"\" + node.right.unit + \"\\\", number expected\");\n\n  if (node.right.value === 0) throw new Error('Cannot divide by zero');\n\n  // (expr) / value\n  if (node.left.type === 'MathExpression') {\n    if (isValueType(node.left.left.type) && isValueType(node.left.right.type)) {\n      node.left.left.value /= node.right.value;\n      node.left.right.value /= node.right.value;\n      return reduce(node.left, precision);\n    }\n    return node;\n  }\n  // something / value\n  else if (isValueType(node.left.type)) {\n      node.left.value /= node.right.value;\n      return node.left;\n    }\n  return node;\n}\n\nfunction reduceMultiplicationExpression(node) {\n  // (expr) * value\n  if (node.left.type === 'MathExpression' && node.right.type === 'Value') {\n    if (isValueType(node.left.left.type) && isValueType(node.left.right.type)) {\n      node.left.left.value *= node.right.value;\n      node.left.right.value *= node.right.value;\n      return node.left;\n    }\n  }\n  // something * value\n  else if (isValueType(node.left.type) && node.right.type === 'Value') {\n      node.left.value *= node.right.value;\n      return node.left;\n    }\n    // value * (expr)\n    else if (node.left.type === 'Value' && node.right.type === 'MathExpression') {\n        if (isValueType(node.right.left.type) && isValueType(node.right.right.type)) {\n          node.right.left.value *= node.left.value;\n          node.right.right.value *= node.left.value;\n          return node.right;\n        }\n      }\n      // value * something\n      else if (node.left.type === 'Value' && isValueType(node.right.type)) {\n          node.right.value *= node.left.value;\n          return node.right;\n        }\n  return node;\n}\n\nfunction reduceMathExpression(node, precision) {\n  node = convertMathExpression(node, precision);\n\n  switch (node.operator) {\n    case \"+\":\n    case \"-\":\n      return reduceAddSubExpression(node, precision);\n    case \"/\":\n      return reduceDivisionExpression(node, precision);\n    case \"*\":\n      return reduceMultiplicationExpression(node);\n  }\n  return node;\n}\n\nexports.default = reduce;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (calc, node, precision) {\n  var str = stringify(node, precision);\n\n  if (node.type === \"MathExpression\") {\n    // if calc expression couldn't be resolved to a single value, re-wrap it as\n    // a calc()\n    str = calc + \"(\" + str + \")\";\n  }\n  return str;\n};\n\nvar _reducer = require(\"./reducer\");\n\nvar order = {\n  \"*\": 0,\n  \"/\": 0,\n  \"+\": 1,\n  \"-\": 1\n};\n\nfunction round(value, prec) {\n  if (prec !== false) {\n    var precision = Math.pow(10, prec);\n    return Math.round(value * precision) / precision;\n  }\n  return value;\n}\n\nfunction stringify(node, prec) {\n  switch (node.type) {\n    case \"MathExpression\":\n      {\n        var left = node.left,\n            right = node.right,\n            op = node.operator;\n\n        var str = \"\";\n\n        if (left.type === 'MathExpression' && order[op] < order[left.operator]) str += \"(\" + stringify(left, prec) + \")\";else str += stringify(left, prec);\n\n        str += \" \" + node.operator + \" \";\n\n        if (right.type === 'MathExpression' && order[op] < order[right.operator]) {\n          str += \"(\" + stringify(right, prec) + \")\";\n        } else if (right.type === 'MathExpression' && op === \"-\" && [\"+\", \"-\"].includes(right.operator)) {\n          // fix #52 : a-(b+c) = a-b-c\n          right.operator = (0, _reducer.flip)(right.operator);\n          str += stringify(right, prec);\n        } else {\n          str += stringify(right, prec);\n        }\n\n        return str;\n      }\n    case \"Value\":\n      return round(node.value, prec);\n    case 'CssVariable':\n      if (node.fallback) {\n        return \"var(\" + node.value + \", \" + stringify(node.fallback, prec, true) + \")\";\n      }\n      return \"var(\" + node.value + \")\";\n    case 'Calc':\n      if (node.prefix) {\n        return \"-\" + node.prefix + \"-calc(\" + stringify(node.value, prec) + \")\";\n      }\n      return \"calc(\" + stringify(node.value, prec) + \")\";\n    default:\n      return round(node.value, prec) + node.unit;\n  }\n}\n\nmodule.exports = exports[\"default\"];", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _postcssValueParser = require('postcss-value-parser');\n\nvar _postcssValueParser2 = _interopRequireDefault(_postcssValueParser);\n\nvar _parser = require('./parser');\n\nvar _reducer = require('./lib/reducer');\n\nvar _reducer2 = _interopRequireDefault(_reducer);\n\nvar _stringifier = require('./lib/stringifier');\n\nvar _stringifier2 = _interopRequireDefault(_stringifier);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// eslint-disable-line\nvar MATCH_CALC = /((?:\\-[a-z]+\\-)?calc)/;\n\nexports.default = function (value) {\n  var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n\n  return (0, _postcssValueParser2.default)(value).walk(function (node) {\n    // skip anything which isn't a calc() function\n    if (node.type !== 'function' || !MATCH_CALC.test(node.value)) return;\n\n    // stringify calc expression and produce an AST\n    var contents = _postcssValueParser2.default.stringify(node.nodes);\n\n    // skip constant() and env()\n    if (contents.indexOf('constant') >= 0 || contents.indexOf('env') >= 0) return;\n\n    var ast = _parser.parser.parse(contents);\n\n    // reduce AST to its simplest form, that is, either to a single value\n    // or a simplified calc expression\n    var reducedAst = (0, _reducer2.default)(ast, precision);\n\n    // stringify AST and write it back\n    node.type = 'word';\n    node.value = (0, _stringifier2.default)(node.value, reducedAst, precision);\n  }, true).toString();\n};\n\nmodule.exports = exports['default'];", "/** @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", "var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n  var index = -1,\n      length = array.length;\n\n  while (++index < length) {\n    var value = array[index],\n        current = iteratee(value);\n\n    if (current != null && (computed === undefined\n          ? (current === current && !isSymbol(current))\n          : comparator(current, computed)\n        )) {\n      var computed = current,\n          result = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseExtremum;\n", "/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n *  else `false`.\n */\nfunction baseGt(value, other) {\n  return value > other;\n}\n\nmodule.exports = baseGt;\n", "var baseExtremum = require('./_baseExtremum'),\n    baseGt = require('./_baseGt'),\n    identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n  return (array && array.length)\n    ? baseExtremum(array, identity, baseGt)\n    : undefined;\n}\n\nmodule.exports = max;\n", "/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n *  else `false`.\n */\nfunction baseLt(value, other) {\n  return value < other;\n}\n\nmodule.exports = baseLt;\n", "var baseExtremum = require('./_baseExtremum'),\n    baseLt = require('./_baseLt'),\n    identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n  return (array && array.length)\n    ? baseExtremum(array, identity, baseLt)\n    : undefined;\n}\n\nmodule.exports = min;\n", "var arrayMap = require('./_arrayMap'),\n    baseIteratee = require('./_baseIteratee'),\n    baseMap = require('./_baseMap'),\n    isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n *   { 'user': 'barney' },\n *   { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n  var func = isArray(collection) ? arrayMap : baseMap;\n  return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n", "var baseFlatten = require('./_baseFlatten'),\n    map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n *   return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n  return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n", "/*! decimal.js-light v2.5.1 https://github.com/MikeMcl/decimal.js-light/LICENCE */\r\n;(function (globalScope) {\r\n  'use strict';\r\n\r\n\r\n  /*\r\n   *  decimal.js-light v2.5.1\r\n   *  An arbitrary-precision Decimal type for JavaScript.\r\n   *  https://github.com/MikeMcl/decimal.js-light\r\n   *  Copyright (c) 2020 Michael Mclaughlin <M8ch88l@gmail.com>\r\n   *  MIT Expat Licence\r\n   */\r\n\r\n\r\n  // -----------------------------------  EDITABLE DEFAULTS  ------------------------------------ //\r\n\r\n\r\n    // The limit on the value of `precision`, and on the value of the first argument to\r\n    // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n  var MAX_DIGITS = 1e9,                        // 0 to 1e9\r\n\r\n\r\n    // The initial configuration properties of the Decimal constructor.\r\n    Decimal = {\r\n\r\n      // These values must be integers within the stated ranges (inclusive).\r\n      // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n      // The maximum number of significant digits of the result of a calculation or base conversion.\r\n      // E.g. `Decimal.config({ precision: 20 });`\r\n      precision: 20,                         // 1 to MAX_DIGITS\r\n\r\n      // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n      // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n      //\r\n      // ROUND_UP         0 Away from zero.\r\n      // ROUND_DOWN       1 Towards zero.\r\n      // ROUND_CEIL       2 Towards +Infinity.\r\n      // ROUND_FLOOR      3 Towards -Infinity.\r\n      // ROUND_HALF_UP    4 Towards nearest neighbour. If equidistant, up.\r\n      // ROUND_HALF_DOWN  5 Towards nearest neighbour. If equidistant, down.\r\n      // ROUND_HALF_EVEN  6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n      // ROUND_HALF_CEIL  7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n      // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n      //\r\n      // E.g.\r\n      // `Decimal.rounding = 4;`\r\n      // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n      rounding: 4,                           // 0 to 8\r\n\r\n      // The exponent value at and beneath which `toString` returns exponential notation.\r\n      // JavaScript numbers: -7\r\n      toExpNeg: -7,                          // 0 to -MAX_E\r\n\r\n      // The exponent value at and above which `toString` returns exponential notation.\r\n      // JavaScript numbers: 21\r\n      toExpPos:  21,                         // 0 to MAX_E\r\n\r\n      // The natural logarithm of 10.\r\n      // 115 digits\r\n      LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n    },\r\n\r\n\r\n  // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n    external = true,\r\n\r\n    decimalError = '[DecimalError] ',\r\n    invalidArgument = decimalError + 'Invalid argument: ',\r\n    exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n    mathfloor = Math.floor,\r\n    mathpow = Math.pow,\r\n\r\n    isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n    ONE,\r\n    BASE = 1e7,\r\n    LOG_BASE = 7,\r\n    MAX_SAFE_INTEGER = 9007199254740991,\r\n    MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE),    // 1286742750677284\r\n\r\n    // Decimal.prototype object\r\n    P = {};\r\n\r\n\r\n  // Decimal prototype methods\r\n\r\n\r\n  /*\r\n   *  absoluteValue                       abs\r\n   *  comparedTo                          cmp\r\n   *  decimalPlaces                       dp\r\n   *  dividedBy                           div\r\n   *  dividedToIntegerBy                  idiv\r\n   *  equals                              eq\r\n   *  exponent\r\n   *  greaterThan                         gt\r\n   *  greaterThanOrEqualTo                gte\r\n   *  isInteger                           isint\r\n   *  isNegative                          isneg\r\n   *  isPositive                          ispos\r\n   *  isZero\r\n   *  lessThan                            lt\r\n   *  lessThanOrEqualTo                   lte\r\n   *  logarithm                           log\r\n   *  minus                               sub\r\n   *  modulo                              mod\r\n   *  naturalExponential                  exp\r\n   *  naturalLogarithm                    ln\r\n   *  negated                             neg\r\n   *  plus                                add\r\n   *  precision                           sd\r\n   *  squareRoot                          sqrt\r\n   *  times                               mul\r\n   *  toDecimalPlaces                     todp\r\n   *  toExponential\r\n   *  toFixed\r\n   *  toInteger                           toint\r\n   *  toNumber\r\n   *  toPower                             pow\r\n   *  toPrecision\r\n   *  toSignificantDigits                 tosd\r\n   *  toString\r\n   *  valueOf                             val\r\n   */\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the absolute value of this Decimal.\r\n   *\r\n   */\r\n  P.absoluteValue = P.abs = function () {\r\n    var x = new this.constructor(this);\r\n    if (x.s) x.s = 1;\r\n    return x;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return\r\n   *   1    if the value of this Decimal is greater than the value of `y`,\r\n   *  -1    if the value of this Decimal is less than the value of `y`,\r\n   *   0    if they have the same value\r\n   *\r\n   */\r\n  P.comparedTo = P.cmp = function (y) {\r\n    var i, j, xdL, ydL,\r\n      x = this;\r\n\r\n    y = new x.constructor(y);\r\n\r\n    // Signs differ?\r\n    if (x.s !== y.s) return x.s || -y.s;\r\n\r\n    // Compare exponents.\r\n    if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n    xdL = x.d.length;\r\n    ydL = y.d.length;\r\n\r\n    // Compare digit by digit.\r\n    for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n      if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n    }\r\n\r\n    // Compare lengths.\r\n    return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the number of decimal places of the value of this Decimal.\r\n   *\r\n   */\r\n  P.decimalPlaces = P.dp = function () {\r\n    var x = this,\r\n      w = x.d.length - 1,\r\n      dp = (w - x.e) * LOG_BASE;\r\n\r\n    // Subtract the number of trailing zeros of the last word.\r\n    w = x.d[w];\r\n    if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n    return dp < 0 ? 0 : dp;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n   * `precision` significant digits.\r\n   *\r\n   */\r\n  P.dividedBy = P.div = function (y) {\r\n    return divide(this, new this.constructor(y));\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n   * by the value of `y`, truncated to `precision` significant digits.\r\n   *\r\n   */\r\n  P.dividedToIntegerBy = P.idiv = function (y) {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n    return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n   *\r\n   */\r\n  P.equals = P.eq = function (y) {\r\n    return !this.cmp(y);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n   *\r\n   */\r\n  P.exponent = function () {\r\n    return getBase10Exponent(this);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n   * false.\r\n   *\r\n   */\r\n  P.greaterThan = P.gt = function (y) {\r\n    return this.cmp(y) > 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n   * otherwise return false.\r\n   *\r\n   */\r\n  P.greaterThanOrEqualTo = P.gte = function (y) {\r\n    return this.cmp(y) >= 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is an integer, otherwise return false.\r\n   *\r\n   */\r\n  P.isInteger = P.isint = function () {\r\n    return this.e > this.d.length - 2;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is negative, otherwise return false.\r\n   *\r\n   */\r\n  P.isNegative = P.isneg = function () {\r\n    return this.s < 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is positive, otherwise return false.\r\n   *\r\n   */\r\n  P.isPositive = P.ispos = function () {\r\n    return this.s > 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is 0, otherwise return false.\r\n   *\r\n   */\r\n  P.isZero = function () {\r\n    return this.s === 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n   *\r\n   */\r\n  P.lessThan = P.lt = function (y) {\r\n    return this.cmp(y) < 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n   *\r\n   */\r\n  P.lessThanOrEqualTo = P.lte = function (y) {\r\n    return this.cmp(y) < 1;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n   * `precision` significant digits.\r\n   *\r\n   * If no base is specified, return log[10](x).\r\n   *\r\n   * log[base](x) = ln(x) / ln(base)\r\n   *\r\n   * The maximum error of the result is 1 ulp (unit in the last place).\r\n   *\r\n   * [base] {number|string|Decimal} The base of the logarithm.\r\n   *\r\n   */\r\n  P.logarithm = P.log = function (base) {\r\n    var r,\r\n      x = this,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision,\r\n      wpr = pr + 5;\r\n\r\n    // Default base is 10.\r\n    if (base === void 0) {\r\n      base = new Ctor(10);\r\n    } else {\r\n      base = new Ctor(base);\r\n\r\n      // log[-b](x) = NaN\r\n      // log[0](x)  = NaN\r\n      // log[1](x)  = NaN\r\n      if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n    }\r\n\r\n    // log[b](-x) = NaN\r\n    // log[b](0) = -Infinity\r\n    if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n    // log[b](1) = 0\r\n    if (x.eq(ONE)) return new Ctor(0);\r\n\r\n    external = false;\r\n    r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n    external = true;\r\n\r\n    return round(r, pr);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n   * `precision` significant digits.\r\n   *\r\n   */\r\n  P.minus = P.sub = function (y) {\r\n    var x = this;\r\n    y = new x.constructor(y);\r\n    return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n   * `precision` significant digits.\r\n   *\r\n   */\r\n  P.modulo = P.mod = function (y) {\r\n    var q,\r\n      x = this,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision;\r\n\r\n    y = new Ctor(y);\r\n\r\n    // x % 0 = NaN\r\n    if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n    // Return x if x is 0.\r\n    if (!x.s) return round(new Ctor(x), pr);\r\n\r\n    // Prevent rounding of intermediate calculations.\r\n    external = false;\r\n    q = divide(x, y, 0, 1).times(y);\r\n    external = true;\r\n\r\n    return x.minus(q);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n   * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n   * significant digits.\r\n   *\r\n   */\r\n  P.naturalExponential = P.exp = function () {\r\n    return exp(this);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n   * truncated to `precision` significant digits.\r\n   *\r\n   */\r\n  P.naturalLogarithm = P.ln = function () {\r\n    return ln(this);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n   * -1.\r\n   *\r\n   */\r\n  P.negated = P.neg = function () {\r\n    var x = new this.constructor(this);\r\n    x.s = -x.s || 0;\r\n    return x;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n   * `precision` significant digits.\r\n   *\r\n   */\r\n  P.plus = P.add = function (y) {\r\n    var x = this;\r\n    y = new x.constructor(y);\r\n    return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the number of significant digits of the value of this Decimal.\r\n   *\r\n   * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n   *\r\n   */\r\n  P.precision = P.sd = function (z) {\r\n    var e, sd, w,\r\n      x = this;\r\n\r\n    if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n    e = getBase10Exponent(x) + 1;\r\n    w = x.d.length - 1;\r\n    sd = w * LOG_BASE + 1;\r\n    w = x.d[w];\r\n\r\n    // If non-zero...\r\n    if (w) {\r\n\r\n      // Subtract the number of trailing zeros of the last word.\r\n      for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n      // Add the number of digits of the first word.\r\n      for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n    }\r\n\r\n    return z && e > sd ? e : sd;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n   * significant digits.\r\n   *\r\n   */\r\n  P.squareRoot = P.sqrt = function () {\r\n    var e, n, pr, r, s, t, wpr,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    // Negative or zero?\r\n    if (x.s < 1) {\r\n      if (!x.s) return new Ctor(0);\r\n\r\n      // sqrt(-x) = NaN\r\n      throw Error(decimalError + 'NaN');\r\n    }\r\n\r\n    e = getBase10Exponent(x);\r\n    external = false;\r\n\r\n    // Initial estimate.\r\n    s = Math.sqrt(+x);\r\n\r\n    // Math.sqrt underflow/overflow?\r\n    // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n    if (s == 0 || s == 1 / 0) {\r\n      n = digitsToString(x.d);\r\n      if ((n.length + e) % 2 == 0) n += '0';\r\n      s = Math.sqrt(n);\r\n      e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n      if (s == 1 / 0) {\r\n        n = '5e' + e;\r\n      } else {\r\n        n = s.toExponential();\r\n        n = n.slice(0, n.indexOf('e') + 1) + e;\r\n      }\r\n\r\n      r = new Ctor(n);\r\n    } else {\r\n      r = new Ctor(s.toString());\r\n    }\r\n\r\n    pr = Ctor.precision;\r\n    s = wpr = pr + 3;\r\n\r\n    // Newton-Raphson iteration.\r\n    for (;;) {\r\n      t = r;\r\n      r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n      if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n        n = n.slice(wpr - 3, wpr + 1);\r\n\r\n        // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n        // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n        if (s == wpr && n == '4999') {\r\n\r\n          // On the first iteration only, check to see if rounding up gives the exact result as the\r\n          // nines may infinitely repeat.\r\n          round(t, pr + 1, 0);\r\n\r\n          if (t.times(t).eq(x)) {\r\n            r = t;\r\n            break;\r\n          }\r\n        } else if (n != '9999') {\r\n          break;\r\n        }\r\n\r\n        wpr += 4;\r\n      }\r\n    }\r\n\r\n    external = true;\r\n\r\n    return round(r, pr);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n   * `precision` significant digits.\r\n   *\r\n   */\r\n  P.times = P.mul = function (y) {\r\n    var carry, e, i, k, r, rL, t, xdL, ydL,\r\n      x = this,\r\n      Ctor = x.constructor,\r\n      xd = x.d,\r\n      yd = (y = new Ctor(y)).d;\r\n\r\n    // Return 0 if either is 0.\r\n    if (!x.s || !y.s) return new Ctor(0);\r\n\r\n    y.s *= x.s;\r\n    e = x.e + y.e;\r\n    xdL = xd.length;\r\n    ydL = yd.length;\r\n\r\n    // Ensure xd points to the longer array.\r\n    if (xdL < ydL) {\r\n      r = xd;\r\n      xd = yd;\r\n      yd = r;\r\n      rL = xdL;\r\n      xdL = ydL;\r\n      ydL = rL;\r\n    }\r\n\r\n    // Initialise the result array with zeros.\r\n    r = [];\r\n    rL = xdL + ydL;\r\n    for (i = rL; i--;) r.push(0);\r\n\r\n    // Multiply!\r\n    for (i = ydL; --i >= 0;) {\r\n      carry = 0;\r\n      for (k = xdL + i; k > i;) {\r\n        t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n        r[k--] = t % BASE | 0;\r\n        carry = t / BASE | 0;\r\n      }\r\n\r\n      r[k] = (r[k] + carry) % BASE | 0;\r\n    }\r\n\r\n    // Remove trailing zeros.\r\n    for (; !r[--rL];) r.pop();\r\n\r\n    if (carry) ++e;\r\n    else r.shift();\r\n\r\n    y.d = r;\r\n    y.e = e;\r\n\r\n    return external ? round(y, Ctor.precision) : y;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n   * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n   *\r\n   * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toDecimalPlaces = P.todp = function (dp, rm) {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n\r\n    x = new Ctor(x);\r\n    if (dp === void 0) return x;\r\n\r\n    checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n    if (rm === void 0) rm = Ctor.rounding;\r\n    else checkInt32(rm, 0, 8);\r\n\r\n    return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal in exponential notation rounded to\r\n   * `dp` fixed decimal places using rounding mode `rounding`.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toExponential = function (dp, rm) {\r\n    var str,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (dp === void 0) {\r\n      str = toString(x, true);\r\n    } else {\r\n      checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n      if (rm === void 0) rm = Ctor.rounding;\r\n      else checkInt32(rm, 0, 8);\r\n\r\n      x = round(new Ctor(x), dp + 1, rm);\r\n      str = toString(x, true, dp + 1);\r\n    }\r\n\r\n    return str;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n   * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n   * omitted.\r\n   *\r\n   * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n   * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n   * (-0).toFixed(3) is '0.000'.\r\n   * (-0.5).toFixed(0) is '-0'.\r\n   *\r\n   */\r\n  P.toFixed = function (dp, rm) {\r\n    var str, y,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (dp === void 0) return toString(x);\r\n\r\n    checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n    if (rm === void 0) rm = Ctor.rounding;\r\n    else checkInt32(rm, 0, 8);\r\n\r\n    y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n    str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n    // To determine whether to add the minus sign look at the value before it was rounded,\r\n    // i.e. look at `x` rather than `y`.\r\n    return x.isneg() && !x.isZero() ? '-' + str : str;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n   * rounding mode `rounding`.\r\n   *\r\n   */\r\n  P.toInteger = P.toint = function () {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n    return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the value of this Decimal converted to a number primitive.\r\n   *\r\n   */\r\n  P.toNumber = function () {\r\n    return +this;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n   * truncated to `precision` significant digits.\r\n   *\r\n   * For non-integer or very large exponents pow(x, y) is calculated using\r\n   *\r\n   *   x^y = exp(y*ln(x))\r\n   *\r\n   * The maximum error is 1 ulp (unit in last place).\r\n   *\r\n   * y {number|string|Decimal} The power to which to raise this Decimal.\r\n   *\r\n   */\r\n  P.toPower = P.pow = function (y) {\r\n    var e, k, pr, r, sign, yIsInt,\r\n      x = this,\r\n      Ctor = x.constructor,\r\n      guard = 12,\r\n      yn = +(y = new Ctor(y));\r\n\r\n    // pow(x, 0) = 1\r\n    if (!y.s) return new Ctor(ONE);\r\n\r\n    x = new Ctor(x);\r\n\r\n    // pow(0, y > 0) = 0\r\n    // pow(0, y < 0) = Infinity\r\n    if (!x.s) {\r\n      if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n      return x;\r\n    }\r\n\r\n    // pow(1, y) = 1\r\n    if (x.eq(ONE)) return x;\r\n\r\n    pr = Ctor.precision;\r\n\r\n    // pow(x, 1) = x\r\n    if (y.eq(ONE)) return round(x, pr);\r\n\r\n    e = y.e;\r\n    k = y.d.length - 1;\r\n    yIsInt = e >= k;\r\n    sign = x.s;\r\n\r\n    if (!yIsInt) {\r\n\r\n      // pow(x < 0, y non-integer) = NaN\r\n      if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n    // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n    } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n      r = new Ctor(ONE);\r\n\r\n      // Max k of 9007199254740991 takes 53 loop iterations.\r\n      // Maximum digits array length; leaves [28, 34] guard digits.\r\n      e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n      external = false;\r\n\r\n      for (;;) {\r\n        if (k % 2) {\r\n          r = r.times(x);\r\n          truncate(r.d, e);\r\n        }\r\n\r\n        k = mathfloor(k / 2);\r\n        if (k === 0) break;\r\n\r\n        x = x.times(x);\r\n        truncate(x.d, e);\r\n      }\r\n\r\n      external = true;\r\n\r\n      return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n    }\r\n\r\n    // Result is negative if x is negative and the last digit of integer y is odd.\r\n    sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n    x.s = 1;\r\n    external = false;\r\n    r = y.times(ln(x, pr + guard));\r\n    external = true;\r\n    r = exp(r);\r\n    r.s = sign;\r\n\r\n    return r;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n   * using rounding mode `rounding`.\r\n   *\r\n   * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n   * the integer part of the value in normal notation.\r\n   *\r\n   * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toPrecision = function (sd, rm) {\r\n    var e, str,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (sd === void 0) {\r\n      e = getBase10Exponent(x);\r\n      str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n    } else {\r\n      checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n      if (rm === void 0) rm = Ctor.rounding;\r\n      else checkInt32(rm, 0, 8);\r\n\r\n      x = round(new Ctor(x), sd, rm);\r\n      e = getBase10Exponent(x);\r\n      str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n    }\r\n\r\n    return str;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n   * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n   * omitted.\r\n   *\r\n   * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toSignificantDigits = P.tosd = function (sd, rm) {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (sd === void 0) {\r\n      sd = Ctor.precision;\r\n      rm = Ctor.rounding;\r\n    } else {\r\n      checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n      if (rm === void 0) rm = Ctor.rounding;\r\n      else checkInt32(rm, 0, 8);\r\n    }\r\n\r\n    return round(new Ctor(x), sd, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal.\r\n   *\r\n   * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n   * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n   *\r\n   */\r\n  P.toString = P.valueOf = P.val = P.toJSON = function () {\r\n    var x = this,\r\n      e = getBase10Exponent(x),\r\n      Ctor = x.constructor;\r\n\r\n    return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n  };\r\n\r\n\r\n  // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n  /*\r\n   *  add                 P.minus, P.plus\r\n   *  checkInt32          P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n   *  digitsToString      P.log, P.sqrt, P.pow, toString, exp, ln\r\n   *  divide              P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n   *  exp                 P.exp, P.pow\r\n   *  getBase10Exponent   P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n   *                      P.toString, divide, round, toString, exp, ln\r\n   *  getLn10             P.log, ln\r\n   *  getZeroString       digitsToString, toString\r\n   *  ln                  P.log, P.ln, P.pow, exp\r\n   *  parseDecimal        Decimal\r\n   *  round               P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n   *                      P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n   *                      divide, getLn10, exp, ln\r\n   *  subtract            P.minus, P.plus\r\n   *  toString            P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n   *  truncate            P.pow\r\n   *\r\n   *  Throws:             P.log, P.mod, P.sd, P.sqrt, P.pow,  checkInt32, divide, round,\r\n   *                      getLn10, exp, ln, parseDecimal, Decimal, config\r\n   */\r\n\r\n\r\n  function add(x, y) {\r\n    var carry, d, e, i, k, len, xd, yd,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision;\r\n\r\n    // If either is zero...\r\n    if (!x.s || !y.s) {\r\n\r\n      // Return x if y is zero.\r\n      // Return y if y is non-zero.\r\n      if (!y.s) y = new Ctor(x);\r\n      return external ? round(y, pr) : y;\r\n    }\r\n\r\n    xd = x.d;\r\n    yd = y.d;\r\n\r\n    // x and y are finite, non-zero numbers with the same sign.\r\n\r\n    k = x.e;\r\n    e = y.e;\r\n    xd = xd.slice();\r\n    i = k - e;\r\n\r\n    // If base 1e7 exponents differ...\r\n    if (i) {\r\n      if (i < 0) {\r\n        d = xd;\r\n        i = -i;\r\n        len = yd.length;\r\n      } else {\r\n        d = yd;\r\n        e = k;\r\n        len = xd.length;\r\n      }\r\n\r\n      // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n      k = Math.ceil(pr / LOG_BASE);\r\n      len = k > len ? k + 1 : len + 1;\r\n\r\n      if (i > len) {\r\n        i = len;\r\n        d.length = 1;\r\n      }\r\n\r\n      // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n      d.reverse();\r\n      for (; i--;) d.push(0);\r\n      d.reverse();\r\n    }\r\n\r\n    len = xd.length;\r\n    i = yd.length;\r\n\r\n    // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n    if (len - i < 0) {\r\n      i = len;\r\n      d = yd;\r\n      yd = xd;\r\n      xd = d;\r\n    }\r\n\r\n    // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n    for (carry = 0; i;) {\r\n      carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n      xd[i] %= BASE;\r\n    }\r\n\r\n    if (carry) {\r\n      xd.unshift(carry);\r\n      ++e;\r\n    }\r\n\r\n    // Remove trailing zeros.\r\n    // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n    for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n    y.d = xd;\r\n    y.e = e;\r\n\r\n    return external ? round(y, pr) : y;\r\n  }\r\n\r\n\r\n  function checkInt32(i, min, max) {\r\n    if (i !== ~~i || i < min || i > max) {\r\n      throw Error(invalidArgument + i);\r\n    }\r\n  }\r\n\r\n\r\n  function digitsToString(d) {\r\n    var i, k, ws,\r\n      indexOfLastWord = d.length - 1,\r\n      str = '',\r\n      w = d[0];\r\n\r\n    if (indexOfLastWord > 0) {\r\n      str += w;\r\n      for (i = 1; i < indexOfLastWord; i++) {\r\n        ws = d[i] + '';\r\n        k = LOG_BASE - ws.length;\r\n        if (k) str += getZeroString(k);\r\n        str += ws;\r\n      }\r\n\r\n      w = d[i];\r\n      ws = w + '';\r\n      k = LOG_BASE - ws.length;\r\n      if (k) str += getZeroString(k);\r\n    } else if (w === 0) {\r\n      return '0';\r\n    }\r\n\r\n    // Remove trailing zeros of last w.\r\n    for (; w % 10 === 0;) w /= 10;\r\n\r\n    return str + w;\r\n  }\r\n\r\n\r\n  var divide = (function () {\r\n\r\n    // Assumes non-zero x and k, and hence non-zero result.\r\n    function multiplyInteger(x, k) {\r\n      var temp,\r\n        carry = 0,\r\n        i = x.length;\r\n\r\n      for (x = x.slice(); i--;) {\r\n        temp = x[i] * k + carry;\r\n        x[i] = temp % BASE | 0;\r\n        carry = temp / BASE | 0;\r\n      }\r\n\r\n      if (carry) x.unshift(carry);\r\n\r\n      return x;\r\n    }\r\n\r\n    function compare(a, b, aL, bL) {\r\n      var i, r;\r\n\r\n      if (aL != bL) {\r\n        r = aL > bL ? 1 : -1;\r\n      } else {\r\n        for (i = r = 0; i < aL; i++) {\r\n          if (a[i] != b[i]) {\r\n            r = a[i] > b[i] ? 1 : -1;\r\n            break;\r\n          }\r\n        }\r\n      }\r\n\r\n      return r;\r\n    }\r\n\r\n    function subtract(a, b, aL) {\r\n      var i = 0;\r\n\r\n      // Subtract b from a.\r\n      for (; aL--;) {\r\n        a[aL] -= i;\r\n        i = a[aL] < b[aL] ? 1 : 0;\r\n        a[aL] = i * BASE + a[aL] - b[aL];\r\n      }\r\n\r\n      // Remove leading zeros.\r\n      for (; !a[0] && a.length > 1;) a.shift();\r\n    }\r\n\r\n    return function (x, y, pr, dp) {\r\n      var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n        Ctor = x.constructor,\r\n        sign = x.s == y.s ? 1 : -1,\r\n        xd = x.d,\r\n        yd = y.d;\r\n\r\n      // Either 0?\r\n      if (!x.s) return new Ctor(x);\r\n      if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n      e = x.e - y.e;\r\n      yL = yd.length;\r\n      xL = xd.length;\r\n      q = new Ctor(sign);\r\n      qd = q.d = [];\r\n\r\n      // Result exponent may be one less than e.\r\n      for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n      if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n      if (pr == null) {\r\n        sd = pr = Ctor.precision;\r\n      } else if (dp) {\r\n        sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n      } else {\r\n        sd = pr;\r\n      }\r\n\r\n      if (sd < 0) return new Ctor(0);\r\n\r\n      // Convert precision in number of base 10 digits to base 1e7 digits.\r\n      sd = sd / LOG_BASE + 2 | 0;\r\n      i = 0;\r\n\r\n      // divisor < 1e7\r\n      if (yL == 1) {\r\n        k = 0;\r\n        yd = yd[0];\r\n        sd++;\r\n\r\n        // k is the carry.\r\n        for (; (i < xL || k) && sd--; i++) {\r\n          t = k * BASE + (xd[i] || 0);\r\n          qd[i] = t / yd | 0;\r\n          k = t % yd | 0;\r\n        }\r\n\r\n      // divisor >= 1e7\r\n      } else {\r\n\r\n        // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n        k = BASE / (yd[0] + 1) | 0;\r\n\r\n        if (k > 1) {\r\n          yd = multiplyInteger(yd, k);\r\n          xd = multiplyInteger(xd, k);\r\n          yL = yd.length;\r\n          xL = xd.length;\r\n        }\r\n\r\n        xi = yL;\r\n        rem = xd.slice(0, yL);\r\n        remL = rem.length;\r\n\r\n        // Add zeros to make remainder as long as divisor.\r\n        for (; remL < yL;) rem[remL++] = 0;\r\n\r\n        yz = yd.slice();\r\n        yz.unshift(0);\r\n        yd0 = yd[0];\r\n\r\n        if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n        do {\r\n          k = 0;\r\n\r\n          // Compare divisor and remainder.\r\n          cmp = compare(yd, rem, yL, remL);\r\n\r\n          // If divisor < remainder.\r\n          if (cmp < 0) {\r\n\r\n            // Calculate trial digit, k.\r\n            rem0 = rem[0];\r\n            if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n            // k will be how many times the divisor goes into the current remainder.\r\n            k = rem0 / yd0 | 0;\r\n\r\n            //  Algorithm:\r\n            //  1. product = divisor * trial digit (k)\r\n            //  2. if product > remainder: product -= divisor, k--\r\n            //  3. remainder -= product\r\n            //  4. if product was < remainder at 2:\r\n            //    5. compare new remainder and divisor\r\n            //    6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n            if (k > 1) {\r\n              if (k >= BASE) k = BASE - 1;\r\n\r\n              // product = divisor * trial digit.\r\n              prod = multiplyInteger(yd, k);\r\n              prodL = prod.length;\r\n              remL = rem.length;\r\n\r\n              // Compare product and remainder.\r\n              cmp = compare(prod, rem, prodL, remL);\r\n\r\n              // product > remainder.\r\n              if (cmp == 1) {\r\n                k--;\r\n\r\n                // Subtract divisor from product.\r\n                subtract(prod, yL < prodL ? yz : yd, prodL);\r\n              }\r\n            } else {\r\n\r\n              // cmp is -1.\r\n              // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n              // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n              if (k == 0) cmp = k = 1;\r\n              prod = yd.slice();\r\n            }\r\n\r\n            prodL = prod.length;\r\n            if (prodL < remL) prod.unshift(0);\r\n\r\n            // Subtract product from remainder.\r\n            subtract(rem, prod, remL);\r\n\r\n            // If product was < previous remainder.\r\n            if (cmp == -1) {\r\n              remL = rem.length;\r\n\r\n              // Compare divisor and new remainder.\r\n              cmp = compare(yd, rem, yL, remL);\r\n\r\n              // If divisor < new remainder, subtract divisor from remainder.\r\n              if (cmp < 1) {\r\n                k++;\r\n\r\n                // Subtract divisor from remainder.\r\n                subtract(rem, yL < remL ? yz : yd, remL);\r\n              }\r\n            }\r\n\r\n            remL = rem.length;\r\n          } else if (cmp === 0) {\r\n            k++;\r\n            rem = [0];\r\n          }    // if cmp === 1, k will be 0\r\n\r\n          // Add the next digit, k, to the result array.\r\n          qd[i++] = k;\r\n\r\n          // Update the remainder.\r\n          if (cmp && rem[0]) {\r\n            rem[remL++] = xd[xi] || 0;\r\n          } else {\r\n            rem = [xd[xi]];\r\n            remL = 1;\r\n          }\r\n\r\n        } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n      }\r\n\r\n      // Leading zero?\r\n      if (!qd[0]) qd.shift();\r\n\r\n      q.e = e;\r\n\r\n      return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n    };\r\n  })();\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n   * significant digits.\r\n   *\r\n   * Taylor/Maclaurin series.\r\n   *\r\n   * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n   *\r\n   * Argument reduction:\r\n   *   Repeat x = x / 32, k += 5, until |x| < 0.1\r\n   *   exp(x) = exp(x / 2^k)^(2^k)\r\n   *\r\n   * Previously, the argument was initially reduced by\r\n   * exp(x) = exp(r) * 10^k  where r = x - k * ln10, k = floor(x / ln10)\r\n   * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n   * found to be slower than just dividing repeatedly by 32 as above.\r\n   *\r\n   * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n   *\r\n   *  exp(x) is non-terminating for any finite, non-zero x.\r\n   *\r\n   */\r\n  function exp(x, sd) {\r\n    var denominator, guard, pow, sum, t, wpr,\r\n      i = 0,\r\n      k = 0,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision;\r\n\r\n    if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n    // exp(0) = 1\r\n    if (!x.s) return new Ctor(ONE);\r\n\r\n    if (sd == null) {\r\n      external = false;\r\n      wpr = pr;\r\n    } else {\r\n      wpr = sd;\r\n    }\r\n\r\n    t = new Ctor(0.03125);\r\n\r\n    while (x.abs().gte(0.1)) {\r\n      x = x.times(t);    // x = x / 2^5\r\n      k += 5;\r\n    }\r\n\r\n    // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n    guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n    wpr += guard;\r\n    denominator = pow = sum = new Ctor(ONE);\r\n    Ctor.precision = wpr;\r\n\r\n    for (;;) {\r\n      pow = round(pow.times(x), wpr);\r\n      denominator = denominator.times(++i);\r\n      t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n      if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n        while (k--) sum = round(sum.times(sum), wpr);\r\n        Ctor.precision = pr;\r\n        return sd == null ? (external = true, round(sum, pr)) : sum;\r\n      }\r\n\r\n      sum = t;\r\n    }\r\n  }\r\n\r\n\r\n  // Calculate the base 10 exponent from the base 1e7 exponent.\r\n  function getBase10Exponent(x) {\r\n    var e = x.e * LOG_BASE,\r\n      w = x.d[0];\r\n\r\n    // Add the number of digits of the first word of the digits array.\r\n    for (; w >= 10; w /= 10) e++;\r\n    return e;\r\n  }\r\n\r\n\r\n  function getLn10(Ctor, sd, pr) {\r\n\r\n    if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n      // Reset global state in case the exception is caught.\r\n      external = true;\r\n      if (pr) Ctor.precision = pr;\r\n      throw Error(decimalError + 'LN10 precision limit exceeded');\r\n    }\r\n\r\n    return round(new Ctor(Ctor.LN10), sd);\r\n  }\r\n\r\n\r\n  function getZeroString(k) {\r\n    var zs = '';\r\n    for (; k--;) zs += '0';\r\n    return zs;\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n   * digits.\r\n   *\r\n   *  ln(n) is non-terminating (n != 1)\r\n   *\r\n   */\r\n  function ln(y, sd) {\r\n    var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n      n = 1,\r\n      guard = 10,\r\n      x = y,\r\n      xd = x.d,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision;\r\n\r\n    // ln(-x) = NaN\r\n    // ln(0) = -Infinity\r\n    if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n    // ln(1) = 0\r\n    if (x.eq(ONE)) return new Ctor(0);\r\n\r\n    if (sd == null) {\r\n      external = false;\r\n      wpr = pr;\r\n    } else {\r\n      wpr = sd;\r\n    }\r\n\r\n    if (x.eq(10)) {\r\n      if (sd == null) external = true;\r\n      return getLn10(Ctor, wpr);\r\n    }\r\n\r\n    wpr += guard;\r\n    Ctor.precision = wpr;\r\n    c = digitsToString(xd);\r\n    c0 = c.charAt(0);\r\n    e = getBase10Exponent(x);\r\n\r\n    if (Math.abs(e) < 1.5e15) {\r\n\r\n      // Argument reduction.\r\n      // The series converges faster the closer the argument is to 1, so using\r\n      // ln(a^b) = b * ln(a),   ln(a) = ln(a^b) / b\r\n      // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n      // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n      // later be divided by this number, then separate out the power of 10 using\r\n      // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n      // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n      //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n      // max n is 6 (gives 0.7 - 1.3)\r\n      while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n        x = x.times(y);\r\n        c = digitsToString(x.d);\r\n        c0 = c.charAt(0);\r\n        n++;\r\n      }\r\n\r\n      e = getBase10Exponent(x);\r\n\r\n      if (c0 > 1) {\r\n        x = new Ctor('0.' + c);\r\n        e++;\r\n      } else {\r\n        x = new Ctor(c0 + '.' + c.slice(1));\r\n      }\r\n    } else {\r\n\r\n      // The argument reduction method above may result in overflow if the argument y is a massive\r\n      // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n      // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n      t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n      x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n      Ctor.precision = pr;\r\n      return sd == null ? (external = true, round(x, pr)) : x;\r\n    }\r\n\r\n    // x is reduced to a value near 1.\r\n\r\n    // Taylor series.\r\n    // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n    // where x = (y - 1)/(y + 1)    (|x| < 1)\r\n    sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n    x2 = round(x.times(x), wpr);\r\n    denominator = 3;\r\n\r\n    for (;;) {\r\n      numerator = round(numerator.times(x2), wpr);\r\n      t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n      if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n        sum = sum.times(2);\r\n\r\n        // Reverse the argument reduction.\r\n        if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n        sum = divide(sum, new Ctor(n), wpr);\r\n\r\n        Ctor.precision = pr;\r\n        return sd == null ? (external = true, round(sum, pr)) : sum;\r\n      }\r\n\r\n      sum = t;\r\n      denominator += 2;\r\n    }\r\n  }\r\n\r\n\r\n  /*\r\n   * Parse the value of a new Decimal `x` from string `str`.\r\n   */\r\n  function parseDecimal(x, str) {\r\n    var e, i, len;\r\n\r\n    // Decimal point?\r\n    if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n    // Exponential form?\r\n    if ((i = str.search(/e/i)) > 0) {\r\n\r\n      // Determine exponent.\r\n      if (e < 0) e = i;\r\n      e += +str.slice(i + 1);\r\n      str = str.substring(0, i);\r\n    } else if (e < 0) {\r\n\r\n      // Integer.\r\n      e = str.length;\r\n    }\r\n\r\n    // Determine leading zeros.\r\n    for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n    // Determine trailing zeros.\r\n    for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n    str = str.slice(i, len);\r\n\r\n    if (str) {\r\n      len -= i;\r\n      e = e - i - 1;\r\n      x.e = mathfloor(e / LOG_BASE);\r\n      x.d = [];\r\n\r\n      // Transform base\r\n\r\n      // e is the base 10 exponent.\r\n      // i is where to slice str to get the first word of the digits array.\r\n      i = (e + 1) % LOG_BASE;\r\n      if (e < 0) i += LOG_BASE;\r\n\r\n      if (i < len) {\r\n        if (i) x.d.push(+str.slice(0, i));\r\n        for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n        str = str.slice(i);\r\n        i = LOG_BASE - str.length;\r\n      } else {\r\n        i -= len;\r\n      }\r\n\r\n      for (; i--;) str += '0';\r\n      x.d.push(+str);\r\n\r\n      if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n    } else {\r\n\r\n      // Zero.\r\n      x.s = 0;\r\n      x.e = 0;\r\n      x.d = [0];\r\n    }\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  /*\r\n   * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n   */\r\n   function round(x, sd, rm) {\r\n    var i, j, k, n, rd, doRound, w, xdi,\r\n      xd = x.d;\r\n\r\n    // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n    // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n    // xdi: the index of w within xd.\r\n    // n: the number of digits of w.\r\n    // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n    // they had leading zeros)\r\n    // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n    // Get the length of the first word of the digits array xd.\r\n    for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n    i = sd - n;\r\n\r\n    // Is the rounding digit in the first word of xd?\r\n    if (i < 0) {\r\n      i += LOG_BASE;\r\n      j = sd;\r\n      w = xd[xdi = 0];\r\n    } else {\r\n      xdi = Math.ceil((i + 1) / LOG_BASE);\r\n      k = xd.length;\r\n      if (xdi >= k) return x;\r\n      w = k = xd[xdi];\r\n\r\n      // Get the number of digits of w.\r\n      for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n      // Get the index of rd within w.\r\n      i %= LOG_BASE;\r\n\r\n      // Get the index of rd within w, adjusted for leading zeros.\r\n      // The number of leading zeros of w is given by LOG_BASE - n.\r\n      j = i - LOG_BASE + n;\r\n    }\r\n\r\n    if (rm !== void 0) {\r\n      k = mathpow(10, n - j - 1);\r\n\r\n      // Get the rounding digit at index j of w.\r\n      rd = w / k % 10 | 0;\r\n\r\n      // Are there any non-zero digits after the rounding digit?\r\n      doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n      // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n      // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n      // 714.\r\n\r\n      doRound = rm < 4\r\n        ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n        : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n          // Check whether the digit to the left of the rounding digit is odd.\r\n          ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n            rm == (x.s < 0 ? 8 : 7));\r\n    }\r\n\r\n    if (sd < 1 || !xd[0]) {\r\n      if (doRound) {\r\n        k = getBase10Exponent(x);\r\n        xd.length = 1;\r\n\r\n        // Convert sd to decimal places.\r\n        sd = sd - k - 1;\r\n\r\n        // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n        xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n        x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n      } else {\r\n        xd.length = 1;\r\n\r\n        // Zero.\r\n        xd[0] = x.e = x.s = 0;\r\n      }\r\n\r\n      return x;\r\n    }\r\n\r\n    // Remove excess digits.\r\n    if (i == 0) {\r\n      xd.length = xdi;\r\n      k = 1;\r\n      xdi--;\r\n    } else {\r\n      xd.length = xdi + 1;\r\n      k = mathpow(10, LOG_BASE - i);\r\n\r\n      // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n      // j > 0 means i > number of leading zeros of w.\r\n      xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n    }\r\n\r\n    if (doRound) {\r\n      for (;;) {\r\n\r\n        // Is the digit to be rounded up in the first word of xd?\r\n        if (xdi == 0) {\r\n          if ((xd[0] += k) == BASE) {\r\n            xd[0] = 1;\r\n            ++x.e;\r\n          }\r\n\r\n          break;\r\n        } else {\r\n          xd[xdi] += k;\r\n          if (xd[xdi] != BASE) break;\r\n          xd[xdi--] = 0;\r\n          k = 1;\r\n        }\r\n      }\r\n    }\r\n\r\n    // Remove trailing zeros.\r\n    for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n    if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n      throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n    }\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  function subtract(x, y) {\r\n    var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision;\r\n\r\n    // Return y negated if x is zero.\r\n    // Return x if y is zero and x is non-zero.\r\n    if (!x.s || !y.s) {\r\n      if (y.s) y.s = -y.s;\r\n      else y = new Ctor(x);\r\n      return external ? round(y, pr) : y;\r\n    }\r\n\r\n    xd = x.d;\r\n    yd = y.d;\r\n\r\n    // x and y are non-zero numbers with the same sign.\r\n\r\n    e = y.e;\r\n    xe = x.e;\r\n    xd = xd.slice();\r\n    k = xe - e;\r\n\r\n    // If exponents differ...\r\n    if (k) {\r\n      xLTy = k < 0;\r\n\r\n      if (xLTy) {\r\n        d = xd;\r\n        k = -k;\r\n        len = yd.length;\r\n      } else {\r\n        d = yd;\r\n        e = xe;\r\n        len = xd.length;\r\n      }\r\n\r\n      // Numbers with massively different exponents would result in a very high number of zeros\r\n      // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n      // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n      i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n      if (k > i) {\r\n        k = i;\r\n        d.length = 1;\r\n      }\r\n\r\n      // Prepend zeros to equalise exponents.\r\n      d.reverse();\r\n      for (i = k; i--;) d.push(0);\r\n      d.reverse();\r\n\r\n    // Base 1e7 exponents equal.\r\n    } else {\r\n\r\n      // Check digits to determine which is the bigger number.\r\n\r\n      i = xd.length;\r\n      len = yd.length;\r\n      xLTy = i < len;\r\n      if (xLTy) len = i;\r\n\r\n      for (i = 0; i < len; i++) {\r\n        if (xd[i] != yd[i]) {\r\n          xLTy = xd[i] < yd[i];\r\n          break;\r\n        }\r\n      }\r\n\r\n      k = 0;\r\n    }\r\n\r\n    if (xLTy) {\r\n      d = xd;\r\n      xd = yd;\r\n      yd = d;\r\n      y.s = -y.s;\r\n    }\r\n\r\n    len = xd.length;\r\n\r\n    // Append zeros to xd if shorter.\r\n    // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n    for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n    // Subtract yd from xd.\r\n    for (i = yd.length; i > k;) {\r\n      if (xd[--i] < yd[i]) {\r\n        for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n        --xd[j];\r\n        xd[i] += BASE;\r\n      }\r\n\r\n      xd[i] -= yd[i];\r\n    }\r\n\r\n    // Remove trailing zeros.\r\n    for (; xd[--len] === 0;) xd.pop();\r\n\r\n    // Remove leading zeros and adjust exponent accordingly.\r\n    for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n    // Zero?\r\n    if (!xd[0]) return new Ctor(0);\r\n\r\n    y.d = xd;\r\n    y.e = e;\r\n\r\n    //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n    return external ? round(y, pr) : y;\r\n  }\r\n\r\n\r\n  function toString(x, isExp, sd) {\r\n    var k,\r\n      e = getBase10Exponent(x),\r\n      str = digitsToString(x.d),\r\n      len = str.length;\r\n\r\n    if (isExp) {\r\n      if (sd && (k = sd - len) > 0) {\r\n        str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n      } else if (len > 1) {\r\n        str = str.charAt(0) + '.' + str.slice(1);\r\n      }\r\n\r\n      str = str + (e < 0 ? 'e' : 'e+') + e;\r\n    } else if (e < 0) {\r\n      str = '0.' + getZeroString(-e - 1) + str;\r\n      if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n    } else if (e >= len) {\r\n      str += getZeroString(e + 1 - len);\r\n      if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n    } else {\r\n      if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n      if (sd && (k = sd - len) > 0) {\r\n        if (e + 1 === len) str += '.';\r\n        str += getZeroString(k);\r\n      }\r\n    }\r\n\r\n    return x.s < 0 ? '-' + str : str;\r\n  }\r\n\r\n\r\n  // Does not strip trailing zeros.\r\n  function truncate(arr, len) {\r\n    if (arr.length > len) {\r\n      arr.length = len;\r\n      return true;\r\n    }\r\n  }\r\n\r\n\r\n  // Decimal methods\r\n\r\n\r\n  /*\r\n   *  clone\r\n   *  config/set\r\n   */\r\n\r\n\r\n  /*\r\n   * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n   * constructor.\r\n   *\r\n   */\r\n  function clone(obj) {\r\n    var i, p, ps;\r\n\r\n    /*\r\n     * The Decimal constructor and exported function.\r\n     * Return a new Decimal instance.\r\n     *\r\n     * value {number|string|Decimal} A numeric value.\r\n     *\r\n     */\r\n    function Decimal(value) {\r\n      var x = this;\r\n\r\n      // Decimal called without new.\r\n      if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n      // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n      // which points to Object.\r\n      x.constructor = Decimal;\r\n\r\n      // Duplicate.\r\n      if (value instanceof Decimal) {\r\n        x.s = value.s;\r\n        x.e = value.e;\r\n        x.d = (value = value.d) ? value.slice() : value;\r\n        return;\r\n      }\r\n\r\n      if (typeof value === 'number') {\r\n\r\n        // Reject Infinity/NaN.\r\n        if (value * 0 !== 0) {\r\n          throw Error(invalidArgument + value);\r\n        }\r\n\r\n        if (value > 0) {\r\n          x.s = 1;\r\n        } else if (value < 0) {\r\n          value = -value;\r\n          x.s = -1;\r\n        } else {\r\n          x.s = 0;\r\n          x.e = 0;\r\n          x.d = [0];\r\n          return;\r\n        }\r\n\r\n        // Fast path for small integers.\r\n        if (value === ~~value && value < 1e7) {\r\n          x.e = 0;\r\n          x.d = [value];\r\n          return;\r\n        }\r\n\r\n        return parseDecimal(x, value.toString());\r\n      } else if (typeof value !== 'string') {\r\n        throw Error(invalidArgument + value);\r\n      }\r\n\r\n      // Minus sign?\r\n      if (value.charCodeAt(0) === 45) {\r\n        value = value.slice(1);\r\n        x.s = -1;\r\n      } else {\r\n        x.s = 1;\r\n      }\r\n\r\n      if (isDecimal.test(value)) parseDecimal(x, value);\r\n      else throw Error(invalidArgument + value);\r\n    }\r\n\r\n    Decimal.prototype = P;\r\n\r\n    Decimal.ROUND_UP = 0;\r\n    Decimal.ROUND_DOWN = 1;\r\n    Decimal.ROUND_CEIL = 2;\r\n    Decimal.ROUND_FLOOR = 3;\r\n    Decimal.ROUND_HALF_UP = 4;\r\n    Decimal.ROUND_HALF_DOWN = 5;\r\n    Decimal.ROUND_HALF_EVEN = 6;\r\n    Decimal.ROUND_HALF_CEIL = 7;\r\n    Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n    Decimal.clone = clone;\r\n    Decimal.config = Decimal.set = config;\r\n\r\n    if (obj === void 0) obj = {};\r\n    if (obj) {\r\n      ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n      for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n    }\r\n\r\n    Decimal.config(obj);\r\n\r\n    return Decimal;\r\n  }\r\n\r\n\r\n  /*\r\n   * Configure global settings for a Decimal constructor.\r\n   *\r\n   * `obj` is an object with one or more of the following properties,\r\n   *\r\n   *   precision  {number}\r\n   *   rounding   {number}\r\n   *   toExpNeg   {number}\r\n   *   toExpPos   {number}\r\n   *\r\n   * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n   *\r\n   */\r\n  function config(obj) {\r\n    if (!obj || typeof obj !== 'object') {\r\n      throw Error(decimalError + 'Object expected');\r\n    }\r\n    var i, p, v,\r\n      ps = [\r\n        'precision', 1, MAX_DIGITS,\r\n        'rounding', 0, 8,\r\n        'toExpNeg', -1 / 0, 0,\r\n        'toExpPos', 0, 1 / 0\r\n      ];\r\n\r\n    for (i = 0; i < ps.length; i += 3) {\r\n      if ((v = obj[p = ps[i]]) !== void 0) {\r\n        if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n        else throw Error(invalidArgument + p + ': ' + v);\r\n      }\r\n    }\r\n\r\n    if ((v = obj[p = 'LN10']) !== void 0) {\r\n        if (v == Math.LN10) this[p] = new this(v);\r\n        else throw Error(invalidArgument + p + ': ' + v);\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n\r\n  // Create and configure initial Decimal constructor.\r\n  Decimal = clone(Decimal);\r\n\r\n  Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n  // Internal constant.\r\n  ONE = new Decimal(1);\r\n\r\n\r\n  // Export.\r\n\r\n\r\n  // AMD.\r\n  if (typeof define == 'function' && define.amd) {\r\n    define(function () {\r\n      return Decimal;\r\n    });\r\n\r\n  // Node and other environments that support module.exports.\r\n  } else if (typeof module != 'undefined' && module.exports) {\r\n    module.exports = Decimal;\r\n\r\n    // Browser.\r\n  } else {\r\n    if (!globalScope) {\r\n      globalScope = typeof self != 'undefined' && self && self.self == self\r\n        ? self : Function('return this')();\r\n    }\r\n\r\n    globalScope.Decimal = Decimal;\r\n  }\r\n})(this);\r\n", "/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n", "var baseExtremum = require('./_baseExtremum'),\n    baseIteratee = require('./_baseIteratee'),\n    baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n  return (array && array.length)\n    ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n    : undefined;\n}\n\nmodule.exports = minBy;\n", "var baseExtremum = require('./_baseExtremum'),\n    baseGt = require('./_baseGt'),\n    baseIteratee = require('./_baseIteratee');\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n  return (array && array.length)\n    ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n    : undefined;\n}\n\nmodule.exports = maxBy;\n", "var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n", "var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n  var index = -1,\n      length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n      result = Array(length);\n\n  while (length--) {\n    result[fromRight ? length : ++index] = start;\n    start += step;\n  }\n  return result;\n}\n\nmodule.exports = baseRange;\n", "var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n", "var baseRange = require('./_baseRange'),\n    isIterateeCall = require('./_isIterateeCall'),\n    toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n  return function(start, end, step) {\n    if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n      end = step = undefined;\n    }\n    // Ensure the sign of `-0` is preserved.\n    start = toFinite(start);\n    if (end === undefined) {\n      end = start;\n      start = 0;\n    } else {\n      end = toFinite(end);\n    }\n    step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n    return baseRange(start, end, step, fromRight);\n  };\n}\n\nmodule.exports = createRange;\n", "var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n", "var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction baseSome(collection, predicate) {\n  var result;\n\n  baseEach(collection, function(value, index, collection) {\n    result = predicate(value, index, collection);\n    return !result;\n  });\n  return !!result;\n}\n\nmodule.exports = baseSome;\n", "var arraySome = require('./_arraySome'),\n    baseIteratee = require('./_baseIteratee'),\n    baseSome = require('./_baseSome'),\n    isArray = require('./isArray'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n *   { 'user': 'barney', 'active': true },\n *   { 'user': 'fred',   'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n  var func = isArray(collection) ? arraySome : baseSome;\n  if (guard && isIterateeCall(collection, predicate, guard)) {\n    predicate = undefined;\n  }\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n", "/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n *  else `false`.\n */\nfunction arrayEvery(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (!predicate(array[index], index, array)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nmodule.exports = arrayEvery;\n", "var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n *  else `false`\n */\nfunction baseEvery(collection, predicate) {\n  var result = true;\n  baseEach(collection, function(value, index, collection) {\n    result = !!predicate(value, index, collection);\n    return result;\n  });\n  return result;\n}\n\nmodule.exports = baseEvery;\n", "var arrayEvery = require('./_arrayEvery'),\n    baseEvery = require('./_baseEvery'),\n    baseIteratee = require('./_baseIteratee'),\n    isArray = require('./isArray'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n *  else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': false },\n *   { 'user': 'fred',   'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n  var func = isArray(collection) ? arrayEvery : baseEvery;\n  if (guard && isIterateeCall(collection, predicate, guard)) {\n    predicate = undefined;\n  }\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = every;\n", "var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n", "var baseAssignValue = require('./_baseAssignValue'),\n    baseForOwn = require('./_baseForOwn'),\n    baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n *   'fred':    { 'user': 'fred',    'age': 40 },\n *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n  var result = {};\n  iteratee = baseIteratee(iteratee, 3);\n\n  baseForOwn(object, function(value, key, object) {\n    baseAssignValue(result, key, iteratee(value, key, object));\n  });\n  return result;\n}\n\nmodule.exports = mapValues;\n", "var baseIteratee = require('./_baseIteratee'),\n    isArrayLike = require('./isArrayLike'),\n    keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n  return function(collection, predicate, fromIndex) {\n    var iterable = Object(collection);\n    if (!isArrayLike(collection)) {\n      var iteratee = baseIteratee(predicate, 3);\n      collection = keys(collection);\n      predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n    }\n    var index = findIndexFunc(collection, predicate, fromIndex);\n    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n  };\n}\n\nmodule.exports = createFind;\n", "var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n", "var baseFindIndex = require('./_baseFindIndex'),\n    baseIteratee = require('./_baseIteratee'),\n    toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = fromIndex == null ? 0 : toInteger(fromIndex);\n  if (index < 0) {\n    index = nativeMax(length + index, 0);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n", "var createFind = require('./_createFind'),\n    findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'age': 36, 'active': true },\n *   { 'user': 'fred',    'age': 40, 'active': false },\n *   { 'user': 'pebbles', 'age': 1,  'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n", "var debounce = require('./debounce'),\n    isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\nmodule.exports = throttle;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n  return value === true || value === false ||\n    (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.setConfiguration = exports.getConfiguration = void 0;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar configuration = {\n  breakpoints: [576, 768, 992, 1200, 1600, 1920],\n  containerWidths: [540, 750, 960, 1140, 1540, 1810],\n  gutterWidth: 30,\n  gridColumns: 12,\n  defaultScreenClass: 'xxl',\n  maxScreenClass: 'xxl'\n};\n\nvar getConfiguration = function getConfiguration() {\n  return configuration;\n};\n\nexports.getConfiguration = getConfiguration;\n\nvar setConfiguration = function setConfiguration(newConfiguration) {\n  configuration = _objectSpread(_objectSpread({}, configuration), newConfiguration);\n};\n\nexports.setConfiguration = setConfiguration;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = 'div';\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = 'span';\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/* global window */\nvar _default = typeof window !== 'undefined' ? window : undefined;\n\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"Div\", {\n  enumerable: true,\n  get: function get() {\n    return _Div.default;\n  }\n});\nObject.defineProperty(exports, \"Span\", {\n  enumerable: true,\n  get: function get() {\n    return _Span.default;\n  }\n});\nObject.defineProperty(exports, \"Window\", {\n  enumerable: true,\n  get: function get() {\n    return _Window.default;\n  }\n});\n\nvar _Div = _interopRequireDefault(require(\"./Div\"));\n\nvar _Span = _interopRequireDefault(require(\"./Span\"));\n\nvar _Window = _interopRequireDefault(require(\"./Window\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.useScreenClass = exports.screenClasses = void 0;\n\nvar _react = require(\"react\");\n\nvar _config = require(\"./config\");\n\nvar _primitives = require(\"./primitives\");\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar getViewPort = function getViewPort(source) {\n  if (source && source.current && source.current.clientWidth) {\n    return source.current.clientWidth;\n  }\n\n  if (typeof _primitives.Window !== 'undefined' && _primitives.Window.innerWidth) {\n    return _primitives.Window.innerWidth;\n  }\n\n  return null;\n};\n\nvar screenClasses = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl', 'xxxl'];\nexports.screenClasses = screenClasses;\n\nvar useScreenClass = function useScreenClass(source, fallbackScreenClass) {\n  var getScreenClass = function getScreenClass() {\n    var _getConfiguration = (0, _config.getConfiguration)(),\n        breakpoints = _getConfiguration.breakpoints,\n        defaultScreenClass = _getConfiguration.defaultScreenClass,\n        maxScreenClass = _getConfiguration.maxScreenClass;\n\n    var newScreenClass = defaultScreenClass;\n    var viewport = getViewPort(source);\n\n    if (viewport) {\n      newScreenClass = 'xs';\n      if (breakpoints[0] && viewport >= breakpoints[0]) newScreenClass = 'sm';\n      if (breakpoints[1] && viewport >= breakpoints[1]) newScreenClass = 'md';\n      if (breakpoints[2] && viewport >= breakpoints[2]) newScreenClass = 'lg';\n      if (breakpoints[3] && viewport >= breakpoints[3]) newScreenClass = 'xl';\n      if (breakpoints[4] && viewport >= breakpoints[4]) newScreenClass = 'xxl';\n      if (breakpoints[5] && viewport >= breakpoints[5]) newScreenClass = 'xxxl';\n    } else if (fallbackScreenClass) {\n      newScreenClass = fallbackScreenClass;\n    }\n\n    var newScreenClassIndex = screenClasses.indexOf(newScreenClass);\n    var maxScreenClassIndex = screenClasses.indexOf(maxScreenClass);\n\n    if (maxScreenClassIndex >= 0 && newScreenClassIndex > maxScreenClassIndex) {\n      newScreenClass = screenClasses[maxScreenClassIndex];\n    }\n\n    return newScreenClass;\n  };\n\n  var _useState = (0, _react.useState)(function () {\n    return getScreenClass();\n  }),\n      _useState2 = _slicedToArray(_useState, 2),\n      screenClass = _useState2[0],\n      setScreenClass = _useState2[1];\n\n  (0, _react.useEffect)(function () {\n    var handleWindowResized = function handleWindowResized() {\n      return setScreenClass(getScreenClass());\n    };\n\n    _primitives.Window.addEventListener('resize', handleWindowResized, false);\n\n    return function () {\n      _primitives.Window.removeEventListener('resize', handleWindowResized, false);\n    };\n  }, []);\n  return screenClass;\n};\n\nexports.useScreenClass = useScreenClass;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _utils = require(\"../../utils\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar hasWidth = function hasWidth(widths) {\n  return Object.keys(widths).reduce(function (acc, cur) {\n    return acc || widths[cur];\n  }, false);\n};\n\nvar getWidth = function getWidth(width, gridColumns) {\n  if (typeof width !== 'number') return undefined;\n  var normalizedWidth = Math.max(0, Math.min(gridColumns, width));\n  return \"\".concat(100 / gridColumns * normalizedWidth, \"%\");\n};\n\nvar _default = function _default(_ref) {\n  var _ref$forceWidth = _ref.forceWidth,\n      forceWidth = _ref$forceWidth === void 0 ? null : _ref$forceWidth,\n      _ref$width = _ref.width,\n      width = _ref$width === void 0 ? {} : _ref$width,\n      _ref$offset = _ref.offset,\n      offset = _ref$offset === void 0 ? {} : _ref$offset,\n      _ref$pull = _ref.pull,\n      pull = _ref$pull === void 0 ? {} : _ref$pull,\n      _ref$push = _ref.push,\n      push = _ref$push === void 0 ? {} : _ref$push,\n      _ref$order = _ref.order,\n      order = _ref$order === void 0 ? {} : _ref$order,\n      debug = _ref.debug,\n      screenClass = _ref.screenClass,\n      gutterWidth = _ref.gutterWidth,\n      moreStyle = _ref.moreStyle,\n      gridColumns = _ref.gridColumns;\n  var styles = {\n    boxSizing: 'border-box',\n    minHeight: 1,\n    position: 'relative',\n    paddingLeft: gutterWidth / 2,\n    paddingRight: gutterWidth / 2,\n    width: '100%'\n  };\n\n  if (debug) {\n    styles.outline = '1px solid silver';\n    styles.background = 'rgba(0,0,0,.05)';\n    styles.lineHeight = '32px';\n  }\n\n  styles.flexBasis = '100%';\n  styles.flexGrow = 0;\n  styles.flexShrink = 0;\n  styles.maxWidth = '100%';\n  styles.marginLeft = '0%';\n  styles.right = 'auto';\n  styles.left = 'auto';\n\n  _utils.screenClasses.forEach(function (size, index) {\n    if (_utils.screenClasses.indexOf(screenClass) >= index) {\n      var currentWidth = getWidth(width[size], gridColumns);\n      var isSizedToContent = width[size] === 'content';\n      styles.flexBasis = isSizedToContent ? 'auto' : currentWidth || styles.flexBasis;\n      styles.width = styles.flexBasis;\n      styles.maxWidth = currentWidth || styles.maxWidth;\n      styles.marginLeft = getWidth(offset[size], gridColumns) || styles.marginLeft;\n      styles.right = getWidth(pull[size], gridColumns) || styles.right;\n      styles.left = getWidth(push[size], gridColumns) || styles.left;\n\n      if (order[size]) {\n        styles.order = order[size];\n      }\n    }\n  });\n\n  if (!hasWidth(width)) {\n    styles.flexBasis = 0;\n    styles.flexGrow = 1;\n  }\n\n  if (forceWidth) {\n    styles.flexBasis = 'unset';\n    styles.flexGrow = 'unset';\n    styles.flexShrink = 'unset';\n    styles.width = forceWidth;\n  }\n\n  return _objectSpread(_objectSpread({}, styles), moreStyle);\n};\n\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = function _default(_ref) {\n  var gutterWidth = _ref.gutterWidth,\n      align = _ref.align,\n      justify = _ref.justify,\n      debug = _ref.debug,\n      moreStyle = _ref.moreStyle,\n      direction = _ref.direction,\n      wrap = _ref.wrap;\n  // Vertical alignment\n  var alignItems = align;\n  if (align === 'start') alignItems = 'flex-start';\n  if (align === 'end') alignItems = 'flex-end'; // Horizontal alignment\n\n  var justifyContent = justify;\n  if (justify === 'start') justifyContent = 'flex-start';\n  if (justify === 'end') justifyContent = 'flex-end';\n  if (justify === 'between') justifyContent = 'space-between';\n  if (justify === 'around') justifyContent = 'space-around';\n  if (justify === 'center') justifyContent = 'center';\n  if (justify === 'initial') justifyContent = 'initial';\n  if (justify === 'inherit') justifyContent = 'inherit';\n  var flexDirection = ['column', 'row', 'column-reverse', 'row-reverse'].includes(direction) ? direction : undefined;\n  var flexWrap = wrap;\n  if (wrap === 'nowrap') flexWrap = 'nowrap';\n  if (wrap === 'wrap') flexWrap = 'wrap';\n  if (wrap === 'reverse') flexWrap = 'wrap-reverse';\n  var styles = {\n    marginLeft: -gutterWidth / 2,\n    marginRight: -gutterWidth / 2,\n    display: 'flex',\n    flexGrow: 0,\n    flexShrink: 0,\n    alignItems: alignItems,\n    justifyContent: justifyContent,\n    flexDirection: flexDirection,\n    flexWrap: flexWrap\n  };\n\n  if (debug) {\n    styles.background = 'rgba(128,128,128,.05)';\n  }\n\n  return _objectSpread(_objectSpread({}, styles), moreStyle);\n};\n\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.GutterWidthContext = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _config = require(\"../../config\");\n\nvar _style = _interopRequireDefault(require(\"./style\"));\n\nvar _primitives = require(\"../../primitives\");\n\nvar _excluded = [\"children\", \"style\", \"align\", \"justify\", \"wrap\", \"debug\", \"nogutter\", \"gutterWidth\", \"component\", \"direction\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar GutterWidthContext = /*#__PURE__*/_react.default.createContext(false);\n\nexports.GutterWidthContext = GutterWidthContext;\n\nvar Row = function Row(_ref) {\n  var children = _ref.children,\n      style = _ref.style,\n      align = _ref.align,\n      justify = _ref.justify,\n      wrap = _ref.wrap,\n      debug = _ref.debug,\n      nogutter = _ref.nogutter,\n      gutterWidth = _ref.gutterWidth,\n      component = _ref.component,\n      direction = _ref.direction,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  var theGutterWidth = (0, _config.getConfiguration)().gutterWidth;\n  if (nogutter) theGutterWidth = 0;\n  if (typeof gutterWidth === 'number') theGutterWidth = gutterWidth;\n  var theStyle = (0, _style.default)({\n    gutterWidth: theGutterWidth,\n    align: align,\n    justify: justify,\n    debug: debug,\n    moreStyle: style,\n    direction: direction,\n    wrap: wrap\n  });\n  return /*#__PURE__*/_react.default.createElement(component, _objectSpread({\n    style: theStyle\n  }, otherProps), /*#__PURE__*/_react.default.createElement(GutterWidthContext.Provider, {\n    value: theGutterWidth\n  }, children));\n};\n\nRow.propTypes = {\n  /**\n   * Content of the element\n   */\n  children: _propTypes.default.node.isRequired,\n\n  /**\n   * Vertical column alignment\n   */\n  align: _propTypes.default.oneOf(['normal', 'start', 'center', 'end', 'stretch']),\n\n  /**\n   * Horizontal column alignment\n   */\n  justify: _propTypes.default.oneOf(['start', 'center', 'end', 'between', 'around', 'initial', 'inherit']),\n\n  /**\n   * flex-direction style attribute\n   */\n  direction: _propTypes.default.oneOf(['column', 'row', 'column-reverse', 'row-reverse']),\n\n  /**\n   * flex-wrap style attribute\n   */\n  wrap: _propTypes.default.oneOf(['nowrap', 'wrap', 'reverse']),\n\n  /**\n   * No gutter for this row\n   */\n  nogutter: _propTypes.default.bool,\n\n  /**\n   * Custom gutter width for this row\n   */\n  gutterWidth: _propTypes.default.number,\n\n  /**\n   * Optional styling\n   */\n  style: _propTypes.default.objectOf(_propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])),\n\n  /**\n   * Set to apply some debug styling\n   */\n  debug: _propTypes.default.bool,\n\n  /**\n   * Use your own component\n   */\n  component: _propTypes.default.elementType\n};\nRow.defaultProps = {\n  align: 'normal',\n  justify: 'start',\n  direction: 'row',\n  wrap: 'wrap',\n  nogutter: false,\n  gutterWidth: null,\n  style: {},\n  debug: false,\n  component: _primitives.Div\n};\nvar _default = Row;\nexports.default = _default;", "\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.ScreenClassContext = exports.NO_PROVIDER_FLAG = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _utils = require(\"../../utils\");\n\nvar _config = require(\"../../config\");\n\nvar _primitives = require(\"../../primitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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 _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar NO_PROVIDER_FLAG = 'NO_PROVIDER_FLAG';\nexports.NO_PROVIDER_FLAG = NO_PROVIDER_FLAG;\n\nvar ScreenClassContext = /*#__PURE__*/_react.default.createContext(NO_PROVIDER_FLAG);\n\nexports.ScreenClassContext = ScreenClassContext;\n\nvar ScreenClassProvider = function ScreenClassProvider(_ref) {\n  var useOwnWidth = _ref.useOwnWidth,\n      children = _ref.children,\n      fallbackScreenClass = _ref.fallbackScreenClass;\n  var screenClassRef = (0, _react.useRef)();\n\n  var _useState = (0, _react.useState)(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      mounted = _useState2[0],\n      setMounted = _useState2[1];\n\n  var detectedScreenClass = (0, _utils.useScreenClass)(screenClassRef, fallbackScreenClass);\n\n  var _getConfiguration = (0, _config.getConfiguration)(),\n      defaultScreenClass = _getConfiguration.defaultScreenClass;\n\n  var screenClass = mounted ? detectedScreenClass : fallbackScreenClass || defaultScreenClass;\n  (0, _react.useEffect)(function () {\n    return setMounted(true);\n  }, []);\n  return /*#__PURE__*/_react.default.createElement(ScreenClassContext.Provider, {\n    value: screenClass\n  }, useOwnWidth ? /*#__PURE__*/_react.default.createElement(_primitives.Div, {\n    ref: useOwnWidth ? screenClassRef : null\n  }, children) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children));\n};\n\nScreenClassProvider.propTypes = {\n  /**\n   * Children of the ScreenClassProvider.\n   * This should be all your child React nodes that are using `react-grid-system`.\n   */\n  children: _propTypes.default.node.isRequired,\n\n  /**\n   * Boolean to determine whether own width should be used as source.\n   * When provided, the screen class is derived from own dimensions instead of the window.\n   */\n  useOwnWidth: _propTypes.default.bool,\n\n  /**\n   * Screen class to use when it cannot be determined otherwise.\n   * Useful for server side rendering.\n   */\n  fallbackScreenClass: _propTypes.default.oneOf([null, 'xs', 'sm', 'md', 'lg', 'xl', 'xxl', 'xxxl'])\n};\nScreenClassProvider.defaultProps = {\n  useOwnWidth: false,\n  fallbackScreenClass: null\n};\nvar _default = ScreenClassProvider;\nexports.default = _default;", "\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _ScreenClassProvider = _interopRequireWildcard(require(\"../ScreenClassProvider\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ScreenClassResolver = function ScreenClassResolver(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/_react.default.createElement(_ScreenClassProvider.ScreenClassContext.Consumer, null, function (screenClassCheck) {\n    if (screenClassCheck === _ScreenClassProvider.NO_PROVIDER_FLAG) {\n      return /*#__PURE__*/_react.default.createElement(_ScreenClassProvider.default, null, /*#__PURE__*/_react.default.createElement(_ScreenClassProvider.ScreenClassContext.Consumer, null, function (screenClassResolved) {\n        return children(screenClassResolved);\n      }));\n    }\n\n    return children(screenClassCheck);\n  });\n};\n\nScreenClassResolver.propTypes = {\n  children: _propTypes.default.func.isRequired\n};\nvar _default = ScreenClassResolver;\nexports.default = _default;", "\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _style = _interopRequireDefault(require(\"./style\"));\n\nvar _config = require(\"../../config\");\n\nvar _Row = require(\"../Row\");\n\nvar _ScreenClassResolver = _interopRequireDefault(require(\"../../context/ScreenClassResolver\"));\n\nvar _primitives = require(\"../../primitives\");\n\nvar _excluded = [\"children\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"xxl\", \"xxxl\", \"offset\", \"pull\", \"push\", \"order\", \"debug\", \"style\", \"component\", \"width\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar Col = function Col(_ref) {\n  var children = _ref.children,\n      xs = _ref.xs,\n      sm = _ref.sm,\n      md = _ref.md,\n      lg = _ref.lg,\n      xl = _ref.xl,\n      xxl = _ref.xxl,\n      xxxl = _ref.xxxl,\n      offset = _ref.offset,\n      pull = _ref.pull,\n      push = _ref.push,\n      order = _ref.order,\n      debug = _ref.debug,\n      style = _ref.style,\n      component = _ref.component,\n      width = _ref.width,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/_react.default.createElement(_ScreenClassResolver.default, null, function (screenClass) {\n    return /*#__PURE__*/_react.default.createElement(_Row.GutterWidthContext.Consumer, null, function (gutterWidth) {\n      var theStyle = (0, _style.default)({\n        forceWidth: width,\n        width: {\n          xs: xs,\n          sm: sm,\n          md: md,\n          lg: lg,\n          xl: xl,\n          xxl: xxl,\n          xxxl: xxxl\n        },\n        offset: offset,\n        pull: pull,\n        push: push,\n        order: order,\n        debug: debug,\n        screenClass: screenClass,\n        gutterWidth: gutterWidth,\n        gridColumns: (0, _config.getConfiguration)().gridColumns,\n        moreStyle: style\n      });\n      return /*#__PURE__*/(0, _react.createElement)(component, _objectSpread(_objectSpread({\n        style: theStyle\n      }, otherProps), {}, {\n        children: children\n      }));\n    });\n  });\n};\n\nCol.propTypes = {\n  /**\n   * Content of the column\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * The width of the column for screenclass `xs`, either a number between 0 and 12, or \"content\"\n   */\n  xs: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.oneOf(['content'])]),\n\n  /**\n   * The width of the column for screenclass `sm`, either a number between 0 and 12, or \"content\"\n   */\n  sm: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.oneOf(['content'])]),\n\n  /**\n   * The width of the column for screenclass `md`, either a number between 0 and 12, or \"content\"\n   */\n  md: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.oneOf(['content'])]),\n\n  /**\n   * The width of the column for screenclass `lg`, either a number between 0 and 12, or \"content\"\n   */\n  lg: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.oneOf(['content'])]),\n\n  /**\n   * The width of the column for screenclass `xl`, either a number between 0 and 12, or \"content\"\n   */\n  xl: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.oneOf(['content'])]),\n\n  /**\n   * The width of the column for screenclass `xxl`, either a number between 0 and 12, or \"content\"\n   */\n  xxl: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.oneOf(['content'])]),\n\n  /**\n   * The width of the column for screenclass `xxl`, either a number between 0 and 12, or \"content\"\n   */\n  xxxl: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.oneOf(['content'])]),\n\n  /**\n   * A fixed width of the column for all screenclasses\"\n   */\n  width: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n\n  /**\n   * The offset of this column for all screenclasses\n   */\n  offset: _propTypes.default.shape({\n    xs: _propTypes.default.number,\n    sm: _propTypes.default.number,\n    md: _propTypes.default.number,\n    lg: _propTypes.default.number,\n    xl: _propTypes.default.number,\n    xxl: _propTypes.default.number,\n    xxxl: _propTypes.default.number\n  }),\n\n  /**\n   * The amount this column is pushed to the right for all screenclasses\n   */\n  push: _propTypes.default.shape({\n    xs: _propTypes.default.number,\n    sm: _propTypes.default.number,\n    md: _propTypes.default.number,\n    lg: _propTypes.default.number,\n    xl: _propTypes.default.number,\n    xxl: _propTypes.default.number,\n    xxxl: _propTypes.default.number\n  }),\n\n  /**\n   * The amount this column is pulled to the left for all screenclasses\n   */\n  pull: _propTypes.default.shape({\n    xs: _propTypes.default.number,\n    sm: _propTypes.default.number,\n    md: _propTypes.default.number,\n    lg: _propTypes.default.number,\n    xl: _propTypes.default.number,\n    xxl: _propTypes.default.number,\n    xxxl: _propTypes.default.number\n  }),\n\n  /**\n   * The order this column is pulled to the left for all screenclasses\n   */\n  order: _propTypes.default.shape({\n    xs: _propTypes.default.number,\n    sm: _propTypes.default.number,\n    md: _propTypes.default.number,\n    lg: _propTypes.default.number,\n    xl: _propTypes.default.number,\n    xxl: _propTypes.default.number,\n    xxxl: _propTypes.default.number\n  }),\n\n  /**\n   * Optional styling\n   */\n  style: _propTypes.default.objectOf(_propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])),\n\n  /**\n   * Set to apply some debug styling\n   */\n  debug: _propTypes.default.bool,\n\n  /**\n   * Use your own component\n   */\n  component: _propTypes.default.elementType\n};\nCol.defaultProps = {\n  children: null,\n  xs: null,\n  sm: null,\n  md: null,\n  lg: null,\n  xl: null,\n  xxl: null,\n  xxxl: null,\n  width: null,\n  offset: {},\n  push: {},\n  pull: {},\n  style: {},\n  order: {},\n  debug: false,\n  component: _primitives.Div\n};\nvar _default = Col;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = function _default(_ref) {\n  var fluid = _ref.fluid,\n      xs = _ref.xs,\n      sm = _ref.sm,\n      md = _ref.md,\n      lg = _ref.lg,\n      xl = _ref.xl,\n      xxl = _ref.xxl,\n      xxxl = _ref.xxxl,\n      screenClass = _ref.screenClass,\n      containerWidths = _ref.containerWidths,\n      gutterWidth = _ref.gutterWidth,\n      moreStyle = _ref.moreStyle;\n  var styles = {\n    boxSizing: 'border-box',\n    position: 'relative',\n    marginLeft: 'auto',\n    marginRight: 'auto',\n    paddingLeft: gutterWidth / 2,\n    paddingRight: gutterWidth / 2\n  };\n\n  if (fluid && !xs && !sm && !md && !lg && !xl) {\n    return _objectSpread(_objectSpread({}, styles), moreStyle);\n  }\n\n  if (screenClass === 'xs' && containerWidths[0] && !xs) {\n    styles.maxWidth = containerWidths[0];\n  }\n\n  if (screenClass === 'sm' && containerWidths[0] && !sm) {\n    styles.maxWidth = containerWidths[0];\n  }\n\n  if (screenClass === 'md' && containerWidths[1] && !md) {\n    styles.maxWidth = containerWidths[1];\n  }\n\n  if (screenClass === 'lg' && containerWidths[2] && !lg) {\n    styles.maxWidth = containerWidths[2];\n  }\n\n  if (screenClass === 'xl' && containerWidths[3] && !xl) {\n    styles.maxWidth = containerWidths[3];\n  }\n\n  if (screenClass === 'xxl' && containerWidths[4] && !xxl) {\n    styles.maxWidth = containerWidths[4];\n  }\n\n  if (screenClass === 'xxxl' && containerWidths[5] && !xxxl) {\n    styles.maxWidth = containerWidths[5];\n  }\n\n  return _objectSpread(_objectSpread({}, styles), moreStyle);\n};\n\nexports.default = _default;", "\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _style = _interopRequireDefault(require(\"./style\"));\n\nvar _config = require(\"../../config\");\n\nvar _ScreenClassResolver = _interopRequireDefault(require(\"../../context/ScreenClassResolver\"));\n\nvar _primitives = require(\"../../primitives\");\n\nvar _excluded = [\"children\", \"fluid\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"xxl\", \"xxxl\", \"style\", \"component\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar Container = function Container(_ref) {\n  var children = _ref.children,\n      fluid = _ref.fluid,\n      xs = _ref.xs,\n      sm = _ref.sm,\n      md = _ref.md,\n      lg = _ref.lg,\n      xl = _ref.xl,\n      xxl = _ref.xxl,\n      xxxl = _ref.xxxl,\n      style = _ref.style,\n      component = _ref.component,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/_react.default.createElement(_ScreenClassResolver.default, null, function (screenClass) {\n    return /*#__PURE__*/(0, _react.createElement)(component, _objectSpread({\n      style: (0, _style.default)({\n        fluid: fluid,\n        xs: xs,\n        sm: sm,\n        md: md,\n        lg: lg,\n        xl: xl,\n        xxl: xxl,\n        xxxl: xxxl,\n        screenClass: screenClass,\n        containerWidths: (0, _config.getConfiguration)().containerWidths,\n        gutterWidth: (0, _config.getConfiguration)().gutterWidth,\n        moreStyle: style\n      })\n    }, otherProps), children);\n  });\n};\n\nContainer.propTypes = {\n  /**\n   * Content of the component\n   */\n  children: _propTypes.default.node.isRequired,\n\n  /**\n   * True makes the container full-width, false fixed-width\n   */\n  fluid: _propTypes.default.bool,\n\n  /**\n   * This is in combination with fluid enabled\n   * True makes container fluid only in xs, not present means fluid everywhere\n   */\n  xs: _propTypes.default.bool,\n\n  /**\n   * This is in combination with fluid enabled\n   * True makes container fluid only in sm, not present means fluid everywhere\n   */\n  sm: _propTypes.default.bool,\n\n  /**\n   * This is in combination with fluid enabled\n   * True makes container fluid only in md, not present means fluid everywhere\n   */\n  md: _propTypes.default.bool,\n\n  /**\n   * This is in combination with fluid enabled\n   * True makes container fluid only in lg, not present means fluid everywhere\n   */\n  lg: _propTypes.default.bool,\n\n  /**\n   * This is in combination with fluid enabled\n   * True makes container fluid only in xl, not present means fluid everywhere\n   */\n  xl: _propTypes.default.bool,\n\n  /**\n   * This is in combination with fluid enabled\n   * True makes container fluid only in xxl, not present means fluid everywhere\n   */\n  xxl: _propTypes.default.bool,\n\n  /**\n   * This is in combination with fluid enabled\n   * True makes container fluid only in xxxl, not present means fluid everywhere\n   */\n  xxxl: _propTypes.default.bool,\n\n  /**\n   * Optional styling\n   */\n  style: _propTypes.default.objectOf(_propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])),\n\n  /**\n   * Use your own component\n   */\n  component: _propTypes.default.elementType\n};\nContainer.defaultProps = {\n  fluid: false,\n  xs: false,\n  sm: false,\n  md: false,\n  lg: false,\n  xl: false,\n  xxl: false,\n  xxxl: false,\n  style: {},\n  component: _primitives.Div\n};\nvar _default = Container;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.hidden = exports.default = void 0;\n\nvar hidden = function hidden(_ref) {\n  var screenClass = _ref.screenClass,\n      xs = _ref.xs,\n      sm = _ref.sm,\n      md = _ref.md,\n      lg = _ref.lg,\n      xl = _ref.xl,\n      xxl = _ref.xxl,\n      xxxl = _ref.xxxl;\n  if (screenClass === 'xxl') return xxl;\n  if (screenClass === 'xxxl') return xxxl;\n  if (screenClass === 'xl') return xl;\n  if (screenClass === 'lg') return lg;\n  if (screenClass === 'md') return md;\n  if (screenClass === 'sm') return sm;\n  return xs;\n};\n\nexports.hidden = hidden;\nvar _default = hidden;\nexports.default = _default;", "\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar style = _interopRequireWildcard(require(\"./style\"));\n\nvar _ScreenClassResolver = _interopRequireDefault(require(\"../../context/ScreenClassResolver\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Hidden = function Hidden(_ref) {\n  var children = _ref.children,\n      xs = _ref.xs,\n      sm = _ref.sm,\n      md = _ref.md,\n      lg = _ref.lg,\n      xl = _ref.xl,\n      xxl = _ref.xxl,\n      xxxl = _ref.xxxl;\n  return /*#__PURE__*/_react.default.createElement(_ScreenClassResolver.default, null, function (screenClass) {\n    return style.hidden({\n      screenClass: screenClass,\n      xs: xs,\n      sm: sm,\n      md: md,\n      lg: lg,\n      xl: xl,\n      xxl: xxl,\n      xxxl: xxxl\n    }) ? null : children;\n  });\n};\n\nHidden.propTypes = {\n  /**\n   * Content of the component\n   */\n  children: _propTypes.default.node.isRequired,\n\n  /**\n   * Hide on extra small devices\n   */\n  xs: _propTypes.default.bool,\n\n  /**\n   * Hide on small devices\n   */\n  sm: _propTypes.default.bool,\n\n  /**\n   * Hide on medium devices\n   */\n  md: _propTypes.default.bool,\n\n  /**\n   * Hide on large devices\n   */\n  lg: _propTypes.default.bool,\n\n  /**\n   * Hide on xlarge devices\n   */\n  xl: _propTypes.default.bool,\n\n  /**\n   * Hide on xxlarge devices\n   */\n  xxl: _propTypes.default.bool,\n\n  /**\n   * Hide on xxxlarge devices\n   */\n  xxxl: _propTypes.default.bool\n};\nHidden.defaultProps = {\n  xs: false,\n  sm: false,\n  md: false,\n  lg: false,\n  xl: false,\n  xxl: false,\n  xxxl: false\n};\nvar _default = Hidden;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.visible = exports.default = void 0;\n\nvar visible = function visible(_ref) {\n  var screenClass = _ref.screenClass,\n      xs = _ref.xs,\n      sm = _ref.sm,\n      md = _ref.md,\n      lg = _ref.lg,\n      xl = _ref.xl,\n      xxl = _ref.xxl,\n      xxxl = _ref.xxxl;\n  if (screenClass === 'xxl') return xxl;\n  if (screenClass === 'xxxl') return xxxl;\n  if (screenClass === 'xl') return xl;\n  if (screenClass === 'lg') return lg;\n  if (screenClass === 'md') return md;\n  if (screenClass === 'sm') return sm;\n  return xs;\n};\n\nexports.visible = visible;\nvar _default = visible;\nexports.default = _default;", "\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar style = _interopRequireWildcard(require(\"./style\"));\n\nvar _ScreenClassResolver = _interopRequireDefault(require(\"../../context/ScreenClassResolver\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Visible = function Visible(_ref) {\n  var children = _ref.children,\n      xs = _ref.xs,\n      sm = _ref.sm,\n      md = _ref.md,\n      lg = _ref.lg,\n      xl = _ref.xl,\n      xxl = _ref.xxl,\n      xxxl = _ref.xxxl;\n  return /*#__PURE__*/_react.default.createElement(_ScreenClassResolver.default, null, function (screenClass) {\n    return !style.visible({\n      screenClass: screenClass,\n      xs: xs,\n      sm: sm,\n      md: md,\n      lg: lg,\n      xl: xl,\n      xxl: xxl,\n      xxxl: xxxl\n    }) ? null : children;\n  });\n};\n\nVisible.propTypes = {\n  /**\n   * Content of the component\n   */\n  children: _propTypes.default.node.isRequired,\n\n  /**\n   * Show on extra small devices\n   */\n  xs: _propTypes.default.bool,\n\n  /**\n   * Show on small devices\n   */\n  sm: _propTypes.default.bool,\n\n  /**\n   * Show on medium devices\n   */\n  md: _propTypes.default.bool,\n\n  /**\n   * Show on large devices\n   */\n  lg: _propTypes.default.bool,\n\n  /**\n   * Show on xlarge devices\n   */\n  xl: _propTypes.default.bool,\n\n  /**\n   * Show on xxlarge devices\n   */\n  xxl: _propTypes.default.bool,\n\n  /**\n   * Show on xxxlarge devices\n   */\n  xxxl: _propTypes.default.bool\n};\nVisible.defaultProps = {\n  xs: false,\n  sm: false,\n  md: false,\n  lg: false,\n  xl: false,\n  xxl: false,\n  xxxl: false\n};\nvar _default = Visible;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _ScreenClassResolver = _interopRequireDefault(require(\"../../context/ScreenClassResolver\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ScreenClassRender = function ScreenClassRender(_ref) {\n  var render = _ref.render;\n  return /*#__PURE__*/_react.default.createElement(_ScreenClassResolver.default, null, function (screenClass) {\n    return render(screenClass);\n  });\n};\n\nScreenClassRender.propTypes = {\n  /**\n   * The function which return value will be rendered.\n   * Will be called with one argument: the screen class.\n   */\n  render: _propTypes.default.func.isRequired\n};\nvar _default = ScreenClassRender;\nexports.default = _default;", "\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"Col\", {\n  enumerable: true,\n  get: function get() {\n    return _Col.default;\n  }\n});\nObject.defineProperty(exports, \"Container\", {\n  enumerable: true,\n  get: function get() {\n    return _Container.default;\n  }\n});\nObject.defineProperty(exports, \"Hidden\", {\n  enumerable: true,\n  get: function get() {\n    return _Hidden.default;\n  }\n});\nObject.defineProperty(exports, \"Row\", {\n  enumerable: true,\n  get: function get() {\n    return _Row.default;\n  }\n});\nObject.defineProperty(exports, \"ScreenClassContext\", {\n  enumerable: true,\n  get: function get() {\n    return _ScreenClassProvider.ScreenClassContext;\n  }\n});\nObject.defineProperty(exports, \"ScreenClassProvider\", {\n  enumerable: true,\n  get: function get() {\n    return _ScreenClassProvider.default;\n  }\n});\nObject.defineProperty(exports, \"ScreenClassRender\", {\n  enumerable: true,\n  get: function get() {\n    return _ScreenClassRender.default;\n  }\n});\nObject.defineProperty(exports, \"Visible\", {\n  enumerable: true,\n  get: function get() {\n    return _Visible.default;\n  }\n});\nObject.defineProperty(exports, \"setConfiguration\", {\n  enumerable: true,\n  get: function get() {\n    return _config.setConfiguration;\n  }\n});\nObject.defineProperty(exports, \"useScreenClass\", {\n  enumerable: true,\n  get: function get() {\n    return _utils.useScreenClass;\n  }\n});\n\nvar _Col = _interopRequireDefault(require(\"./grid/Col\"));\n\nvar _Container = _interopRequireDefault(require(\"./grid/Container\"));\n\nvar _Row = _interopRequireDefault(require(\"./grid/Row\"));\n\nvar _Hidden = _interopRequireDefault(require(\"./utilities/Hidden\"));\n\nvar _Visible = _interopRequireDefault(require(\"./utilities/Visible\"));\n\nvar _ScreenClassRender = _interopRequireDefault(require(\"./utilities/ScreenClassRender\"));\n\nvar _ScreenClassProvider = _interopRequireWildcard(require(\"./context/ScreenClassProvider\"));\n\nvar _config = require(\"./config\");\n\nvar _utils = require(\"./utils\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }", "/**\n * @license React\n * react-dom-server-legacy.browser.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\nvar ReactVersion = '18.0.0-fc46dba67-20220329';\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\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\nfunction scheduleWork(callback) {\n  callback();\n}\nfunction beginWriting(destination) {}\nvar prevWasCommentSegmenter = false;\nfunction writeChunk(destination, chunk) {\n  writeChunkAndReturn(destination, chunk);\n}\nfunction writeChunkAndReturn(destination, chunk) {\n  if (prevWasCommentSegmenter) {\n    prevWasCommentSegmenter = false;\n\n    if (chunk[0] !== '<') {\n      destination.push('<!-- -->');\n    }\n  }\n\n  if (chunk === '<!-- -->') {\n    prevWasCommentSegmenter = true;\n    return true;\n  }\n\n  return destination.push(chunk);\n}\nfunction completeWriting(destination) {}\nfunction close(destination) {\n  destination.push(null);\n}\nfunction stringToChunk(content) {\n  return content;\n}\nfunction stringToPrecomputedChunk(content) {\n  return content;\n}\nfunction closeWithError(destination, error) {\n  // $FlowFixMe: This is an Error object or the destination accepts other types.\n  destination.destroy(error);\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}\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 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}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\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 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 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/**\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\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 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\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\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 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 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 = /^-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, '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// code copied and modified from escape-html\nvar matchHtmlRegExp = /[\"'&<>]/;\n/**\n * Escapes special characters and HTML entities in a given html string.\n *\n * @param  {string} string HTML string to escape for later insertion\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n  {\n    checkHtmlStringCoercion(string);\n  }\n\n  var str = '' + string;\n  var match = matchHtmlRegExp.exec(str);\n\n  if (!match) {\n    return str;\n  }\n\n  var escape;\n  var html = '';\n  var index;\n  var lastIndex = 0;\n\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34:\n        // \"\n        escape = '&quot;';\n        break;\n\n      case 38:\n        // &\n        escape = '&amp;';\n        break;\n\n      case 39:\n        // '\n        escape = '&#x27;'; // modified from escape-html; used to be '&#39'\n\n        break;\n\n      case 60:\n        // <\n        escape = '&lt;';\n        break;\n\n      case 62:\n        // >\n        escape = '&gt;';\n        break;\n\n      default:\n        continue;\n    }\n\n    if (lastIndex !== index) {\n      html += str.substring(lastIndex, index);\n    }\n\n    lastIndex = index + 1;\n    html += escape;\n  }\n\n  return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n} // end code copied and modified from escape-html\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\n\n\nfunction escapeTextForBrowser(text) {\n  if (typeof text === 'boolean' || typeof text === 'number') {\n    // this shortcircuit helps perf for types that we know will never have\n    // special characters, especially given that this function is used often\n    // for numeric dom ids.\n    return '' + text;\n  }\n\n  return escapeHtml(text);\n}\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern$1 = /^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$1, '-ms-');\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\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\nvar startInlineScript = stringToPrecomputedChunk('<script>');\nvar endInlineScript = stringToPrecomputedChunk('</script>');\nvar startScriptSrc = stringToPrecomputedChunk('<script src=\"');\nvar startModuleSrc = stringToPrecomputedChunk('<script type=\"module\" src=\"');\nvar endAsyncScript = stringToPrecomputedChunk('\" async=\"\"></script>'); // Allows us to keep track of what we've already written so we can refer back to it.\n\nfunction createResponseState(identifierPrefix, nonce, bootstrapScriptContent, bootstrapScripts, bootstrapModules) {\n  var idPrefix = identifierPrefix === undefined ? '' : identifierPrefix;\n  var inlineScriptWithNonce = nonce === undefined ? startInlineScript : stringToPrecomputedChunk('<script nonce=\"' + escapeTextForBrowser(nonce) + '\">');\n  var bootstrapChunks = [];\n\n  if (bootstrapScriptContent !== undefined) {\n    bootstrapChunks.push(inlineScriptWithNonce, stringToChunk(escapeTextForBrowser(bootstrapScriptContent)), endInlineScript);\n  }\n\n  if (bootstrapScripts !== undefined) {\n    for (var i = 0; i < bootstrapScripts.length; i++) {\n      bootstrapChunks.push(startScriptSrc, stringToChunk(escapeTextForBrowser(bootstrapScripts[i])), endAsyncScript);\n    }\n  }\n\n  if (bootstrapModules !== undefined) {\n    for (var _i = 0; _i < bootstrapModules.length; _i++) {\n      bootstrapChunks.push(startModuleSrc, stringToChunk(escapeTextForBrowser(bootstrapModules[_i])), endAsyncScript);\n    }\n  }\n\n  return {\n    bootstrapChunks: bootstrapChunks,\n    startInlineScript: inlineScriptWithNonce,\n    placeholderPrefix: stringToPrecomputedChunk(idPrefix + 'P:'),\n    segmentPrefix: stringToPrecomputedChunk(idPrefix + 'S:'),\n    boundaryPrefix: idPrefix + 'B:',\n    idPrefix: idPrefix,\n    nextSuspenseID: 0,\n    sentCompleteSegmentFunction: false,\n    sentCompleteBoundaryFunction: false,\n    sentClientRenderFunction: false\n  };\n} // Constants for the insertion mode we're currently writing in. We don't encode all HTML5 insertion\n// modes. We only include the variants as they matter for the sake of our purposes.\n// We don't actually provide the namespace therefore we use constants instead of the string.\n\nvar ROOT_HTML_MODE = 0; // Used for the root most element tag.\n\nvar HTML_MODE = 1;\nvar SVG_MODE = 2;\nvar MATHML_MODE = 3;\nvar HTML_TABLE_MODE = 4;\nvar HTML_TABLE_BODY_MODE = 5;\nvar HTML_TABLE_ROW_MODE = 6;\nvar HTML_COLGROUP_MODE = 7; // We have a greater than HTML_TABLE_MODE check elsewhere. If you add more cases here, make sure it\n// still makes sense\n\nfunction createFormatContext(insertionMode, selectedValue) {\n  return {\n    insertionMode: insertionMode,\n    selectedValue: selectedValue\n  };\n}\nfunction getChildFormatContext(parentContext, type, props) {\n  switch (type) {\n    case 'select':\n      return createFormatContext(HTML_MODE, props.value != null ? props.value : props.defaultValue);\n\n    case 'svg':\n      return createFormatContext(SVG_MODE, null);\n\n    case 'math':\n      return createFormatContext(MATHML_MODE, null);\n\n    case 'foreignObject':\n      return createFormatContext(HTML_MODE, null);\n    // Table parents are special in that their children can only be created at all if they're\n    // wrapped in a table parent. So we need to encode that we're entering this mode.\n\n    case 'table':\n      return createFormatContext(HTML_TABLE_MODE, null);\n\n    case 'thead':\n    case 'tbody':\n    case 'tfoot':\n      return createFormatContext(HTML_TABLE_BODY_MODE, null);\n\n    case 'colgroup':\n      return createFormatContext(HTML_COLGROUP_MODE, null);\n\n    case 'tr':\n      return createFormatContext(HTML_TABLE_ROW_MODE, null);\n  }\n\n  if (parentContext.insertionMode >= HTML_TABLE_MODE) {\n    // Whatever tag this was, it wasn't a table parent or other special parent, so we must have\n    // entered plain HTML again.\n    return createFormatContext(HTML_MODE, null);\n  }\n\n  if (parentContext.insertionMode === ROOT_HTML_MODE) {\n    // We've emitted the root and is now in plain HTML mode.\n    return createFormatContext(HTML_MODE, null);\n  }\n\n  return parentContext;\n}\nvar UNINITIALIZED_SUSPENSE_BOUNDARY_ID = null;\nfunction assignSuspenseBoundaryID(responseState) {\n  var generatedID = responseState.nextSuspenseID++;\n  return stringToPrecomputedChunk(responseState.boundaryPrefix + generatedID.toString(16));\n}\nfunction makeId(responseState, treeId, localId) {\n  var idPrefix = responseState.idPrefix;\n  var id = ':' + idPrefix + '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  if (localId > 0) {\n    id += 'H' + localId.toString(32);\n  }\n\n  return id + ':';\n}\n\nfunction encodeHTMLTextNode(text) {\n  return escapeTextForBrowser(text);\n}\n\nvar textSeparator = stringToPrecomputedChunk('<!-- -->');\nfunction pushTextInstance(target, text, responseState) {\n  if (text === '') {\n    // Empty text doesn't have a DOM node representation and the hydration is aware of this.\n    return;\n  } // TODO: Avoid adding a text separator in common cases.\n\n\n  target.push(stringToChunk(encodeHTMLTextNode(text)), textSeparator);\n}\nvar styleNameCache = new Map();\n\nfunction processStyleName(styleName) {\n  var chunk = styleNameCache.get(styleName);\n\n  if (chunk !== undefined) {\n    return chunk;\n  }\n\n  var result = stringToPrecomputedChunk(escapeTextForBrowser(hyphenateStyleName(styleName)));\n  styleNameCache.set(styleName, result);\n  return result;\n}\n\nvar styleAttributeStart = stringToPrecomputedChunk(' style=\"');\nvar styleAssign = stringToPrecomputedChunk(':');\nvar styleSeparator = stringToPrecomputedChunk(';');\n\nfunction pushStyle(target, responseState, style) {\n  if (typeof 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  var isFirst = true;\n\n  for (var styleName in style) {\n    if (!hasOwnProperty.call(style, styleName)) {\n      continue;\n    } // If you provide unsafe user data here they can inject arbitrary CSS\n    // 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\n\n    var styleValue = style[styleName];\n\n    if (styleValue == null || typeof styleValue === 'boolean' || styleValue === '') {\n      // TODO: We used to set empty string as a style with an empty value. Does that ever make sense?\n      continue;\n    }\n\n    var nameChunk = void 0;\n    var valueChunk = void 0;\n    var isCustomProperty = styleName.indexOf('--') === 0;\n\n    if (isCustomProperty) {\n      nameChunk = stringToChunk(escapeTextForBrowser(styleName));\n\n      {\n        checkCSSPropertyStringCoercion(styleValue, styleName);\n      }\n\n      valueChunk = stringToChunk(escapeTextForBrowser(('' + styleValue).trim()));\n    } else {\n      {\n        warnValidStyle$1(styleName, styleValue);\n      }\n\n      nameChunk = processStyleName(styleName);\n\n      if (typeof styleValue === 'number') {\n        if (styleValue !== 0 && !hasOwnProperty.call(isUnitlessNumber, styleName)) {\n          valueChunk = stringToChunk(styleValue + 'px'); // Presumes implicit 'px' suffix for unitless numbers\n        } else {\n          valueChunk = stringToChunk('' + styleValue);\n        }\n      } else {\n        {\n          checkCSSPropertyStringCoercion(styleValue, styleName);\n        }\n\n        valueChunk = stringToChunk(escapeTextForBrowser(('' + styleValue).trim()));\n      }\n    }\n\n    if (isFirst) {\n      isFirst = false; // If it's first, we don't need any separators prefixed.\n\n      target.push(styleAttributeStart, nameChunk, styleAssign, valueChunk);\n    } else {\n      target.push(styleSeparator, nameChunk, styleAssign, valueChunk);\n    }\n  }\n\n  if (!isFirst) {\n    target.push(attributeEnd);\n  }\n}\n\nvar attributeSeparator = stringToPrecomputedChunk(' ');\nvar attributeAssign = stringToPrecomputedChunk('=\"');\nvar attributeEnd = stringToPrecomputedChunk('\"');\nvar attributeEmptyString = stringToPrecomputedChunk('=\"\"');\n\nfunction pushAttribute(target, responseState, name, value) {\n  switch (name) {\n    case 'style':\n      {\n        pushStyle(target, responseState, value);\n        return;\n      }\n\n    case 'defaultValue':\n    case 'defaultChecked': // These shouldn't be set as attributes on generic HTML elements.\n\n    case 'innerHTML': // Must use dangerouslySetInnerHTML instead.\n\n    case 'suppressContentEditableWarning':\n    case 'suppressHydrationWarning':\n      // Ignored. These are built-in to React on the client.\n      return;\n  }\n\n  if ( // shouldIgnoreAttribute\n  // We have already filtered out null/undefined and reserved words.\n  name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {\n    return;\n  }\n\n  var propertyInfo = getPropertyInfo(name);\n\n  if (propertyInfo !== null) {\n    // shouldRemoveAttribute\n    switch (typeof value) {\n      case 'function': // $FlowIssue symbol is perfectly valid here\n\n      case 'symbol':\n        // eslint-disable-line\n        return;\n\n      case 'boolean':\n        {\n          if (!propertyInfo.acceptsBooleans) {\n            return;\n          }\n        }\n    }\n\n    var attributeName = propertyInfo.attributeName;\n    var attributeNameChunk = stringToChunk(attributeName); // TODO: If it's known we can cache the chunk.\n\n    switch (propertyInfo.type) {\n      case BOOLEAN:\n        if (value) {\n          target.push(attributeSeparator, attributeNameChunk, attributeEmptyString);\n        }\n\n        return;\n\n      case OVERLOADED_BOOLEAN:\n        if (value === true) {\n          target.push(attributeSeparator, attributeNameChunk, attributeEmptyString);\n        } else if (value === false) ; else {\n          target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n        }\n\n        return;\n\n      case NUMERIC:\n        if (!isNaN(value)) {\n          target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n        }\n\n        break;\n\n      case POSITIVE_NUMERIC:\n        if (!isNaN(value) && value >= 1) {\n          target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n        }\n\n        break;\n\n      default:\n        if (propertyInfo.sanitizeURL) {\n          {\n            checkAttributeStringCoercion(value, attributeName);\n          }\n\n          value = '' + value;\n          sanitizeURL(value);\n        }\n\n        target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n    }\n  } else if (isAttributeNameSafe(name)) {\n    // shouldRemoveAttribute\n    switch (typeof value) {\n      case 'function': // $FlowIssue symbol is perfectly valid here\n\n      case 'symbol':\n        // eslint-disable-line\n        return;\n\n      case 'boolean':\n        {\n          var prefix = name.toLowerCase().slice(0, 5);\n\n          if (prefix !== 'data-' && prefix !== 'aria-') {\n            return;\n          }\n        }\n    }\n\n    target.push(attributeSeparator, stringToChunk(name), attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n  }\n}\n\nvar endOfStartTag = stringToPrecomputedChunk('>');\nvar endOfStartTagSelfClosing = stringToPrecomputedChunk('/>');\n\nfunction pushInnerHTML(target, innerHTML, children) {\n  if (innerHTML != null) {\n    if (children != null) {\n      throw new Error('Can only set one of `children` or `props.dangerouslySetInnerHTML`.');\n    }\n\n    if (typeof innerHTML !== 'object' || !('__html' in innerHTML)) {\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    var html = innerHTML.__html;\n\n    if (html !== null && html !== undefined) {\n      {\n        checkHtmlStringCoercion(html);\n      }\n\n      target.push(stringToChunk('' + html));\n    }\n  }\n} // TODO: Move these to ResponseState so that we warn for every request.\n// It would help debugging in stateful servers (e.g. service worker).\n\n\nvar didWarnDefaultInputValue = false;\nvar didWarnDefaultChecked = false;\nvar didWarnDefaultSelectValue = false;\nvar didWarnDefaultTextareaValue = false;\nvar didWarnInvalidOptionChildren = false;\nvar didWarnInvalidOptionInnerHTML = false;\nvar didWarnSelectedSetOnOption = false;\n\nfunction checkSelectProp(props, propName) {\n  {\n    var value = props[propName];\n\n    if (value != null) {\n      var array = isArray(value);\n\n      if (props.multiple && !array) {\n        error('The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.', propName);\n      } else if (!props.multiple && array) {\n        error('The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.', propName);\n      }\n    }\n  }\n}\n\nfunction pushStartSelect(target, props, responseState) {\n  {\n    checkControlledValueProps('select', props);\n    checkSelectProp(props, 'value');\n    checkSelectProp(props, 'defaultValue');\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnDefaultSelectValue) {\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      didWarnDefaultSelectValue = true;\n    }\n  }\n\n  target.push(startChunkForTag('select'));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          // TODO: This doesn't really make sense for select since it can't use the controlled\n          // value in the innerHTML.\n          innerHTML = propValue;\n          break;\n\n        case 'defaultValue':\n        case 'value':\n          // These are set on the Context instead and applied to the nested options.\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n  return children;\n}\n\nfunction flattenOptionChildren(children) {\n  var content = ''; // Flatten children and warn if they aren't strings or numbers;\n  // invalid types are ignored.\n\n  React.Children.forEach(children, function (child) {\n    if (child == null) {\n      return;\n    }\n\n    content += child;\n\n    {\n      if (!didWarnInvalidOptionChildren && typeof child !== 'string' && typeof child !== 'number') {\n        didWarnInvalidOptionChildren = 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  });\n  return content;\n}\n\nvar selectedMarkerAttribute = stringToPrecomputedChunk(' selected=\"\"');\n\nfunction pushStartOption(target, props, responseState, formatContext) {\n  var selectedValue = formatContext.selectedValue;\n  target.push(startChunkForTag('option'));\n  var children = null;\n  var value = null;\n  var selected = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'selected':\n          // ignore\n          selected = propValue;\n\n          {\n            // TODO: Remove support for `selected` in <option>.\n            if (!didWarnSelectedSetOnOption) {\n              error('Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');\n\n              didWarnSelectedSetOnOption = true;\n            }\n          }\n\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n        // eslint-disable-next-line-no-fallthrough\n\n        case 'value':\n          value = propValue;\n        // We intentionally fallthrough to also set the attribute on the node.\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  if (selectedValue != null) {\n    var stringValue;\n\n    if (value !== null) {\n      {\n        checkAttributeStringCoercion(value, 'value');\n      }\n\n      stringValue = '' + value;\n    } else {\n      {\n        if (innerHTML !== null) {\n          if (!didWarnInvalidOptionInnerHTML) {\n            didWarnInvalidOptionInnerHTML = true;\n\n            error('Pass a `value` prop if you set dangerouslyInnerHTML so React knows ' + 'which value should be selected.');\n          }\n        }\n      }\n\n      stringValue = flattenOptionChildren(children);\n    }\n\n    if (isArray(selectedValue)) {\n      // multiple\n      for (var i = 0; i < selectedValue.length; i++) {\n        {\n          checkAttributeStringCoercion(selectedValue[i], 'value');\n        }\n\n        var v = '' + selectedValue[i];\n\n        if (v === stringValue) {\n          target.push(selectedMarkerAttribute);\n          break;\n        }\n      }\n    } else {\n      {\n        checkAttributeStringCoercion(selectedValue, 'select.value');\n      }\n\n      if ('' + selectedValue === stringValue) {\n        target.push(selectedMarkerAttribute);\n      }\n    }\n  } else if (selected) {\n    target.push(selectedMarkerAttribute);\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n  return children;\n}\n\nfunction pushInput(target, props, responseState) {\n  {\n    checkControlledValueProps('input', props);\n\n    if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnDefaultChecked) {\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', 'A component', props.type);\n\n      didWarnDefaultChecked = true;\n    }\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnDefaultInputValue) {\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', 'A component', props.type);\n\n      didWarnDefaultInputValue = true;\n    }\n  }\n\n  target.push(startChunkForTag('input'));\n  var value = null;\n  var defaultValue = null;\n  var checked = null;\n  var defaultChecked = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n        case 'dangerouslySetInnerHTML':\n          throw new Error('input' + \" is a self-closing tag and must neither have `children` nor \" + 'use `dangerouslySetInnerHTML`.');\n        // eslint-disable-next-line-no-fallthrough\n\n        case 'defaultChecked':\n          defaultChecked = propValue;\n          break;\n\n        case 'defaultValue':\n          defaultValue = propValue;\n          break;\n\n        case 'checked':\n          checked = propValue;\n          break;\n\n        case 'value':\n          value = propValue;\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  if (checked !== null) {\n    pushAttribute(target, responseState, 'checked', checked);\n  } else if (defaultChecked !== null) {\n    pushAttribute(target, responseState, 'checked', defaultChecked);\n  }\n\n  if (value !== null) {\n    pushAttribute(target, responseState, 'value', value);\n  } else if (defaultValue !== null) {\n    pushAttribute(target, responseState, 'value', defaultValue);\n  }\n\n  target.push(endOfStartTagSelfClosing);\n  return null;\n}\n\nfunction pushStartTextArea(target, props, responseState) {\n  {\n    checkControlledValueProps('textarea', props);\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnDefaultTextareaValue) {\n      error('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');\n\n      didWarnDefaultTextareaValue = true;\n    }\n  }\n\n  target.push(startChunkForTag('textarea'));\n  var value = null;\n  var defaultValue = null;\n  var children = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'value':\n          value = propValue;\n          break;\n\n        case 'defaultValue':\n          defaultValue = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          throw new Error('`dangerouslySetInnerHTML` does not make sense on <textarea>.');\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  if (value === null && defaultValue !== null) {\n    value = defaultValue;\n  }\n\n  target.push(endOfStartTag); // TODO (yungsters): Remove support for children content in <textarea>.\n\n  if (children != null) {\n    {\n      error('Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');\n    }\n\n    if (value != 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      } // TODO: remove the coercion and the DEV check below because it will\n      // always be overwritten by the coercion several lines below it. #22309\n\n\n      {\n        checkHtmlStringCoercion(children[0]);\n      }\n\n      value = '' + children[0];\n    }\n\n    {\n      checkHtmlStringCoercion(children);\n    }\n\n    value = '' + children;\n  }\n\n  if (typeof value === 'string' && value[0] === '\\n') {\n    // text/html ignores the first character in these tags if it's a newline\n    // Prefer to break application/xml over text/html (for now) by adding\n    // a newline specifically to get eaten by the parser. (Alternately for\n    // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n    // \\r is normalized out by HTMLTextAreaElement#value.)\n    // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n    // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n    // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n    // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n    //  from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n    target.push(leadingNewline);\n  } // ToString and push directly instead of recurse over children.\n  // We don't really support complex children in the value anyway.\n  // This also currently avoids a trailing comment node which breaks textarea.\n\n\n  if (value !== null) {\n    {\n      checkAttributeStringCoercion(value, 'value');\n    }\n\n    target.push(stringToChunk(encodeHTMLTextNode('' + value)));\n  }\n\n  return null;\n}\n\nfunction pushSelfClosing(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n        case 'dangerouslySetInnerHTML':\n          throw new Error(tag + \" is a self-closing tag and must neither have `children` nor \" + 'use `dangerouslySetInnerHTML`.');\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTagSelfClosing);\n  return null;\n}\n\nfunction pushStartMenuItem(target, props, responseState) {\n  target.push(startChunkForTag('menuitem'));\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n        case 'dangerouslySetInnerHTML':\n          throw new Error('menuitems cannot have `children` nor `dangerouslySetInnerHTML`.');\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  return null;\n}\n\nfunction pushStartGenericElement(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n\n  if (typeof children === 'string') {\n    // Special case children as a string to avoid the unnecessary comment.\n    // TODO: Remove this special case after the general optimization is in place.\n    target.push(stringToChunk(encodeHTMLTextNode(children)));\n    return null;\n  }\n\n  return children;\n}\n\nfunction pushStartCustomElement(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n\n        case 'style':\n          pushStyle(target, responseState, propValue);\n          break;\n\n        case 'suppressContentEditableWarning':\n        case 'suppressHydrationWarning':\n          // Ignored. These are built-in to React on the client.\n          break;\n\n        default:\n          if (isAttributeNameSafe(propKey) && typeof propValue !== 'function' && typeof propValue !== 'symbol') {\n            target.push(attributeSeparator, stringToChunk(propKey), attributeAssign, stringToChunk(escapeTextForBrowser(propValue)), attributeEnd);\n          }\n\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n  return children;\n}\n\nvar leadingNewline = stringToPrecomputedChunk('\\n');\n\nfunction pushStartPreformattedElement(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag); // text/html ignores the first character in these tags if it's a newline\n  // Prefer to break application/xml over text/html (for now) by adding\n  // a newline specifically to get eaten by the parser. (Alternately for\n  // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n  // \\r is normalized out by HTMLTextAreaElement#value.)\n  // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n  // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n  // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n  // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n  //  from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n  // TODO: This doesn't deal with the case where the child is an array\n  // or component that returns a string.\n\n  if (innerHTML != null) {\n    if (children != null) {\n      throw new Error('Can only set one of `children` or `props.dangerouslySetInnerHTML`.');\n    }\n\n    if (typeof innerHTML !== 'object' || !('__html' in innerHTML)) {\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    var html = innerHTML.__html;\n\n    if (html !== null && html !== undefined) {\n      if (typeof html === 'string' && html.length > 0 && html[0] === '\\n') {\n        target.push(leadingNewline, stringToChunk(html));\n      } else {\n        {\n          checkHtmlStringCoercion(html);\n        }\n\n        target.push(stringToChunk('' + html));\n      }\n    }\n  }\n\n  if (typeof children === 'string' && children[0] === '\\n') {\n    target.push(leadingNewline);\n  }\n\n  return children;\n} // We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\n\nvar validatedTagCache = new Map();\n\nfunction startChunkForTag(tag) {\n  var tagStartChunk = validatedTagCache.get(tag);\n\n  if (tagStartChunk === undefined) {\n    if (!VALID_TAG_REGEX.test(tag)) {\n      throw new Error(\"Invalid tag: \" + tag);\n    }\n\n    tagStartChunk = stringToPrecomputedChunk('<' + tag);\n    validatedTagCache.set(tag, tagStartChunk);\n  }\n\n  return tagStartChunk;\n}\n\nvar DOCTYPE = stringToPrecomputedChunk('<!DOCTYPE html>');\nfunction pushStartInstance(target, type, props, responseState, formatContext) {\n  {\n    validateProperties(type, props);\n    validateProperties$1(type, props);\n    validateProperties$2(type, props, null);\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    if (formatContext.insertionMode !== SVG_MODE && formatContext.insertionMode !== MATHML_MODE) {\n      if (type.indexOf('-') === -1 && typeof props.is !== 'string' && type.toLowerCase() !== type) {\n        error('<%s /> is using incorrect casing. ' + 'Use PascalCase for React components, ' + 'or lowercase for HTML elements.', type);\n      }\n    }\n  }\n\n  switch (type) {\n    // Special tags\n    case 'select':\n      return pushStartSelect(target, props, responseState);\n\n    case 'option':\n      return pushStartOption(target, props, responseState, formatContext);\n\n    case 'textarea':\n      return pushStartTextArea(target, props, responseState);\n\n    case 'input':\n      return pushInput(target, props, responseState);\n\n    case 'menuitem':\n      return pushStartMenuItem(target, props, responseState);\n    // Newline eating tags\n\n    case 'listing':\n    case 'pre':\n      {\n        return pushStartPreformattedElement(target, props, type, responseState);\n      }\n    // Omitted close tags\n\n    case 'area':\n    case 'base':\n    case 'br':\n    case 'col':\n    case 'embed':\n    case 'hr':\n    case 'img':\n    case 'keygen':\n    case 'link':\n    case 'meta':\n    case 'param':\n    case 'source':\n    case 'track':\n    case 'wbr':\n      {\n        return pushSelfClosing(target, props, type, responseState);\n      }\n    // These are reserved SVG and MathML elements, that are never custom elements.\n    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n\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      {\n        return pushStartGenericElement(target, props, type, responseState);\n      }\n\n    case 'html':\n      {\n        if (formatContext.insertionMode === ROOT_HTML_MODE) {\n          // If we're rendering the html tag and we're at the root (i.e. not in foreignObject)\n          // then we also emit the DOCTYPE as part of the root content as a convenience for\n          // rendering the whole document.\n          target.push(DOCTYPE);\n        }\n\n        return pushStartGenericElement(target, props, type, responseState);\n      }\n\n    default:\n      {\n        if (type.indexOf('-') === -1 && typeof props.is !== 'string') {\n          // Generic element\n          return pushStartGenericElement(target, props, type, responseState);\n        } else {\n          // Custom element\n          return pushStartCustomElement(target, props, type, responseState);\n        }\n      }\n  }\n}\nvar endTag1 = stringToPrecomputedChunk('</');\nvar endTag2 = stringToPrecomputedChunk('>');\nfunction pushEndInstance(target, type, props) {\n  switch (type) {\n    // Omitted close tags\n    // TODO: Instead of repeating this switch we could try to pass a flag from above.\n    // That would require returning a tuple. Which might be ok if it gets inlined.\n    case 'area':\n    case 'base':\n    case 'br':\n    case 'col':\n    case 'embed':\n    case 'hr':\n    case 'img':\n    case 'input':\n    case 'keygen':\n    case 'link':\n    case 'meta':\n    case 'param':\n    case 'source':\n    case 'track':\n    case 'wbr':\n      {\n        // No close tag needed.\n        break;\n      }\n\n    default:\n      {\n        target.push(endTag1, stringToChunk(type), endTag2);\n      }\n  }\n}\nfunction writeCompletedRoot(destination, responseState) {\n  var bootstrapChunks = responseState.bootstrapChunks;\n  var i = 0;\n\n  for (; i < bootstrapChunks.length - 1; i++) {\n    writeChunk(destination, bootstrapChunks[i]);\n  }\n\n  if (i < bootstrapChunks.length) {\n    return writeChunkAndReturn(destination, bootstrapChunks[i]);\n  }\n\n  return true;\n} // Structural Nodes\n// A placeholder is a node inside a hidden partial tree that can be filled in later, but before\n// display. It's never visible to users. We use the template tag because it can be used in every\n// type of parent. <script> tags also work in every other tag except <colgroup>.\n\nvar placeholder1 = stringToPrecomputedChunk('<template id=\"');\nvar placeholder2 = stringToPrecomputedChunk('\"></template>');\nfunction writePlaceholder(destination, responseState, id) {\n  writeChunk(destination, placeholder1);\n  writeChunk(destination, responseState.placeholderPrefix);\n  var formattedID = stringToChunk(id.toString(16));\n  writeChunk(destination, formattedID);\n  return writeChunkAndReturn(destination, placeholder2);\n} // Suspense boundaries are encoded as comments.\n\nvar startCompletedSuspenseBoundary = stringToPrecomputedChunk('<!--$-->');\nvar startPendingSuspenseBoundary1 = stringToPrecomputedChunk('<!--$?--><template id=\"');\nvar startPendingSuspenseBoundary2 = stringToPrecomputedChunk('\"></template>');\nvar startClientRenderedSuspenseBoundary = stringToPrecomputedChunk('<!--$!-->');\nvar endSuspenseBoundary = stringToPrecomputedChunk('<!--/$-->');\nfunction writeStartCompletedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, startCompletedSuspenseBoundary);\n}\nfunction writeStartPendingSuspenseBoundary(destination, responseState, id) {\n  writeChunk(destination, startPendingSuspenseBoundary1);\n\n  if (id === null) {\n    throw new Error('An ID must have been assigned before we can complete the boundary.');\n  }\n\n  writeChunk(destination, id);\n  return writeChunkAndReturn(destination, startPendingSuspenseBoundary2);\n}\nfunction writeStartClientRenderedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary);\n}\nfunction writeEndCompletedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, endSuspenseBoundary);\n}\nfunction writeEndPendingSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, endSuspenseBoundary);\n}\nfunction writeEndClientRenderedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, endSuspenseBoundary);\n}\nvar startSegmentHTML = stringToPrecomputedChunk('<div hidden id=\"');\nvar startSegmentHTML2 = stringToPrecomputedChunk('\">');\nvar endSegmentHTML = stringToPrecomputedChunk('</div>');\nvar startSegmentSVG = stringToPrecomputedChunk('<svg aria-hidden=\"true\" style=\"display:none\" id=\"');\nvar startSegmentSVG2 = stringToPrecomputedChunk('\">');\nvar endSegmentSVG = stringToPrecomputedChunk('</svg>');\nvar startSegmentMathML = stringToPrecomputedChunk('<math aria-hidden=\"true\" style=\"display:none\" id=\"');\nvar startSegmentMathML2 = stringToPrecomputedChunk('\">');\nvar endSegmentMathML = stringToPrecomputedChunk('</math>');\nvar startSegmentTable = stringToPrecomputedChunk('<table hidden id=\"');\nvar startSegmentTable2 = stringToPrecomputedChunk('\">');\nvar endSegmentTable = stringToPrecomputedChunk('</table>');\nvar startSegmentTableBody = stringToPrecomputedChunk('<table hidden><tbody id=\"');\nvar startSegmentTableBody2 = stringToPrecomputedChunk('\">');\nvar endSegmentTableBody = stringToPrecomputedChunk('</tbody></table>');\nvar startSegmentTableRow = stringToPrecomputedChunk('<table hidden><tr id=\"');\nvar startSegmentTableRow2 = stringToPrecomputedChunk('\">');\nvar endSegmentTableRow = stringToPrecomputedChunk('</tr></table>');\nvar startSegmentColGroup = stringToPrecomputedChunk('<table hidden><colgroup id=\"');\nvar startSegmentColGroup2 = stringToPrecomputedChunk('\">');\nvar endSegmentColGroup = stringToPrecomputedChunk('</colgroup></table>');\nfunction writeStartSegment(destination, responseState, formatContext, id) {\n  switch (formatContext.insertionMode) {\n    case ROOT_HTML_MODE:\n    case HTML_MODE:\n      {\n        writeChunk(destination, startSegmentHTML);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentHTML2);\n      }\n\n    case SVG_MODE:\n      {\n        writeChunk(destination, startSegmentSVG);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentSVG2);\n      }\n\n    case MATHML_MODE:\n      {\n        writeChunk(destination, startSegmentMathML);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentMathML2);\n      }\n\n    case HTML_TABLE_MODE:\n      {\n        writeChunk(destination, startSegmentTable);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentTable2);\n      }\n    // TODO: For the rest of these, there will be extra wrapper nodes that never\n    // get deleted from the document. We need to delete the table too as part\n    // of the injected scripts. They are invisible though so it's not too terrible\n    // and it's kind of an edge case to suspend in a table. Totally supported though.\n\n    case HTML_TABLE_BODY_MODE:\n      {\n        writeChunk(destination, startSegmentTableBody);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentTableBody2);\n      }\n\n    case HTML_TABLE_ROW_MODE:\n      {\n        writeChunk(destination, startSegmentTableRow);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentTableRow2);\n      }\n\n    case HTML_COLGROUP_MODE:\n      {\n        writeChunk(destination, startSegmentColGroup);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentColGroup2);\n      }\n\n    default:\n      {\n        throw new Error('Unknown insertion mode. This is a bug in React.');\n      }\n  }\n}\nfunction writeEndSegment(destination, formatContext) {\n  switch (formatContext.insertionMode) {\n    case ROOT_HTML_MODE:\n    case HTML_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentHTML);\n      }\n\n    case SVG_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentSVG);\n      }\n\n    case MATHML_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentMathML);\n      }\n\n    case HTML_TABLE_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentTable);\n      }\n\n    case HTML_TABLE_BODY_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentTableBody);\n      }\n\n    case HTML_TABLE_ROW_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentTableRow);\n      }\n\n    case HTML_COLGROUP_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentColGroup);\n      }\n\n    default:\n      {\n        throw new Error('Unknown insertion mode. This is a bug in React.');\n      }\n  }\n} // Instruction Set\n// The following code is the source scripts that we then minify and inline below,\n// with renamed function names that we hope don't collide:\n// const COMMENT_NODE = 8;\n// const SUSPENSE_START_DATA = '$';\n// const SUSPENSE_END_DATA = '/$';\n// const SUSPENSE_PENDING_START_DATA = '$?';\n// const SUSPENSE_FALLBACK_START_DATA = '$!';\n//\n// function clientRenderBoundary(suspenseBoundaryID) {\n//   // Find the fallback's first element.\n//   const suspenseIdNode = document.getElementById(suspenseBoundaryID);\n//   if (!suspenseIdNode) {\n//     // The user must have already navigated away from this tree.\n//     // E.g. because the parent was hydrated.\n//     return;\n//   }\n//   // Find the boundary around the fallback. This is always the previous node.\n//   const suspenseNode = suspenseIdNode.previousSibling;\n//   // Tag it to be client rendered.\n//   suspenseNode.data = SUSPENSE_FALLBACK_START_DATA;\n//   // Tell React to retry it if the parent already hydrated.\n//   if (suspenseNode._reactRetry) {\n//     suspenseNode._reactRetry();\n//   }\n// }\n//\n// function completeBoundary(suspenseBoundaryID, contentID) {\n//   // Find the fallback's first element.\n//   const suspenseIdNode = document.getElementById(suspenseBoundaryID);\n//   const contentNode = document.getElementById(contentID);\n//   // We'll detach the content node so that regardless of what happens next we don't leave in the tree.\n//   // This might also help by not causing recalcing each time we move a child from here to the target.\n//   contentNode.parentNode.removeChild(contentNode);\n//   if (!suspenseIdNode) {\n//     // The user must have already navigated away from this tree.\n//     // E.g. because the parent was hydrated. That's fine there's nothing to do\n//     // but we have to make sure that we already deleted the container node.\n//     return;\n//   }\n//   // Find the boundary around the fallback. This is always the previous node.\n//   const suspenseNode = suspenseIdNode.previousSibling;\n//\n//   // Clear all the existing children. This is complicated because\n//   // there can be embedded Suspense boundaries in the fallback.\n//   // This is similar to clearSuspenseBoundary in ReactDOMHostConfig.\n//   // TODO: We could avoid this if we never emitted suspense boundaries in fallback trees.\n//   // They never hydrate anyway. However, currently we support incrementally loading the fallback.\n//   const parentInstance = suspenseNode.parentNode;\n//   let node = suspenseNode.nextSibling;\n//   let depth = 0;\n//   do {\n//     if (node && node.nodeType === COMMENT_NODE) {\n//       const data = node.data;\n//       if (data === SUSPENSE_END_DATA) {\n//         if (depth === 0) {\n//           break;\n//         } else {\n//           depth--;\n//         }\n//       } else if (\n//         data === SUSPENSE_START_DATA ||\n//         data === SUSPENSE_PENDING_START_DATA ||\n//         data === SUSPENSE_FALLBACK_START_DATA\n//       ) {\n//         depth++;\n//       }\n//     }\n//\n//     const nextNode = node.nextSibling;\n//     parentInstance.removeChild(node);\n//     node = nextNode;\n//   } while (node);\n//\n//   const endOfBoundary = node;\n//\n//   // Insert all the children from the contentNode between the start and end of suspense boundary.\n//   while (contentNode.firstChild) {\n//     parentInstance.insertBefore(contentNode.firstChild, endOfBoundary);\n//   }\n//   suspenseNode.data = SUSPENSE_START_DATA;\n//   if (suspenseNode._reactRetry) {\n//     suspenseNode._reactRetry();\n//   }\n// }\n//\n// function completeSegment(containerID, placeholderID) {\n//   const segmentContainer = document.getElementById(containerID);\n//   const placeholderNode = document.getElementById(placeholderID);\n//   // We always expect both nodes to exist here because, while we might\n//   // have navigated away from the main tree, we still expect the detached\n//   // tree to exist.\n//   segmentContainer.parentNode.removeChild(segmentContainer);\n//   while (segmentContainer.firstChild) {\n//     placeholderNode.parentNode.insertBefore(\n//       segmentContainer.firstChild,\n//       placeholderNode,\n//     );\n//   }\n//   placeholderNode.parentNode.removeChild(placeholderNode);\n// }\n\nvar completeSegmentFunction = 'function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)}';\nvar completeBoundaryFunction = 'function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if(\"/$\"===d)if(0===e)break;else e--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data=\"$\";a._reactRetry&&a._reactRetry()}}';\nvar clientRenderFunction = 'function $RX(a){if(a=document.getElementById(a))a=a.previousSibling,a.data=\"$!\",a._reactRetry&&a._reactRetry()}';\nvar completeSegmentScript1Full = stringToPrecomputedChunk(completeSegmentFunction + ';$RS(\"');\nvar completeSegmentScript1Partial = stringToPrecomputedChunk('$RS(\"');\nvar completeSegmentScript2 = stringToPrecomputedChunk('\",\"');\nvar completeSegmentScript3 = stringToPrecomputedChunk('\")</script>');\nfunction writeCompletedSegmentInstruction(destination, responseState, contentSegmentID) {\n  writeChunk(destination, responseState.startInlineScript);\n\n  if (!responseState.sentCompleteSegmentFunction) {\n    // The first time we write this, we'll need to include the full implementation.\n    responseState.sentCompleteSegmentFunction = true;\n    writeChunk(destination, completeSegmentScript1Full);\n  } else {\n    // Future calls can just reuse the same function.\n    writeChunk(destination, completeSegmentScript1Partial);\n  }\n\n  writeChunk(destination, responseState.segmentPrefix);\n  var formattedID = stringToChunk(contentSegmentID.toString(16));\n  writeChunk(destination, formattedID);\n  writeChunk(destination, completeSegmentScript2);\n  writeChunk(destination, responseState.placeholderPrefix);\n  writeChunk(destination, formattedID);\n  return writeChunkAndReturn(destination, completeSegmentScript3);\n}\nvar completeBoundaryScript1Full = stringToPrecomputedChunk(completeBoundaryFunction + ';$RC(\"');\nvar completeBoundaryScript1Partial = stringToPrecomputedChunk('$RC(\"');\nvar completeBoundaryScript2 = stringToPrecomputedChunk('\",\"');\nvar completeBoundaryScript3 = stringToPrecomputedChunk('\")</script>');\nfunction writeCompletedBoundaryInstruction(destination, responseState, boundaryID, contentSegmentID) {\n  writeChunk(destination, responseState.startInlineScript);\n\n  if (!responseState.sentCompleteBoundaryFunction) {\n    // The first time we write this, we'll need to include the full implementation.\n    responseState.sentCompleteBoundaryFunction = true;\n    writeChunk(destination, completeBoundaryScript1Full);\n  } else {\n    // Future calls can just reuse the same function.\n    writeChunk(destination, completeBoundaryScript1Partial);\n  }\n\n  if (boundaryID === null) {\n    throw new Error('An ID must have been assigned before we can complete the boundary.');\n  }\n\n  var formattedContentID = stringToChunk(contentSegmentID.toString(16));\n  writeChunk(destination, boundaryID);\n  writeChunk(destination, completeBoundaryScript2);\n  writeChunk(destination, responseState.segmentPrefix);\n  writeChunk(destination, formattedContentID);\n  return writeChunkAndReturn(destination, completeBoundaryScript3);\n}\nvar clientRenderScript1Full = stringToPrecomputedChunk(clientRenderFunction + ';$RX(\"');\nvar clientRenderScript1Partial = stringToPrecomputedChunk('$RX(\"');\nvar clientRenderScript2 = stringToPrecomputedChunk('\")</script>');\nfunction writeClientRenderBoundaryInstruction(destination, responseState, boundaryID) {\n  writeChunk(destination, responseState.startInlineScript);\n\n  if (!responseState.sentClientRenderFunction) {\n    // The first time we write this, we'll need to include the full implementation.\n    responseState.sentClientRenderFunction = true;\n    writeChunk(destination, clientRenderScript1Full);\n  } else {\n    // Future calls can just reuse the same function.\n    writeChunk(destination, clientRenderScript1Partial);\n  }\n\n  if (boundaryID === null) {\n    throw new Error('An ID must have been assigned before we can complete the boundary.');\n  }\n\n  writeChunk(destination, boundaryID);\n  return writeChunkAndReturn(destination, clientRenderScript2);\n}\n\nfunction createResponseState$1(generateStaticMarkup, identifierPrefix) {\n  var responseState = createResponseState(identifierPrefix, undefined);\n  return {\n    // Keep this in sync with ReactDOMServerFormatConfig\n    bootstrapChunks: responseState.bootstrapChunks,\n    startInlineScript: responseState.startInlineScript,\n    placeholderPrefix: responseState.placeholderPrefix,\n    segmentPrefix: responseState.segmentPrefix,\n    boundaryPrefix: responseState.boundaryPrefix,\n    idPrefix: responseState.idPrefix,\n    nextSuspenseID: responseState.nextSuspenseID,\n    sentCompleteSegmentFunction: responseState.sentCompleteSegmentFunction,\n    sentCompleteBoundaryFunction: responseState.sentCompleteBoundaryFunction,\n    sentClientRenderFunction: responseState.sentClientRenderFunction,\n    // This is an extra field for the legacy renderer\n    generateStaticMarkup: generateStaticMarkup\n  };\n}\nfunction createRootFormatContext() {\n  return {\n    insertionMode: HTML_MODE,\n    // We skip the root mode because we don't want to emit the DOCTYPE in legacy mode.\n    selectedValue: null\n  };\n}\nfunction pushTextInstance$1(target, text, responseState) {\n  if (responseState.generateStaticMarkup) {\n    target.push(stringToChunk(escapeTextForBrowser(text)));\n  } else {\n    pushTextInstance(target, text);\n  }\n}\nfunction writeStartCompletedSuspenseBoundary$1(destination, responseState) {\n  if (responseState.generateStaticMarkup) {\n    // A completed boundary is done and doesn't need a representation in the HTML\n    // if we're not going to be hydrating it.\n    return true;\n  }\n\n  return writeStartCompletedSuspenseBoundary(destination);\n}\nfunction writeStartClientRenderedSuspenseBoundary$1(destination, responseState) {\n  if (responseState.generateStaticMarkup) {\n    // A client rendered boundary is done and doesn't need a representation in the HTML\n    // since we'll never hydrate it. This is arguably an error in static generation.\n    return true;\n  }\n\n  return writeStartClientRenderedSuspenseBoundary(destination);\n}\nfunction writeEndCompletedSuspenseBoundary$1(destination, responseState) {\n  if (responseState.generateStaticMarkup) {\n    return true;\n  }\n\n  return writeEndCompletedSuspenseBoundary(destination);\n}\nfunction writeEndClientRenderedSuspenseBoundary$1(destination, responseState) {\n  if (responseState.generateStaticMarkup) {\n    return true;\n  }\n\n  return writeEndClientRenderedSuspenseBoundary(destination);\n}\n\nvar assign = Object.assign;\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_LEGACY_HIDDEN_TYPE = Symbol.for('react.legacy_hidden');\nvar REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED = Symbol.for('react.default_value');\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\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\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\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 warnedAboutMissingGetChildContext;\n\n{\n  warnedAboutMissingGetChildContext = {};\n}\n\nvar emptyContextObject = {};\n\n{\n  Object.freeze(emptyContextObject);\n}\n\nfunction getMaskedContext(type, unmaskedContext) {\n  {\n    var contextTypes = type.contextTypes;\n\n    if (!contextTypes) {\n      return emptyContextObject;\n    }\n\n    var context = {};\n\n    for (var key in contextTypes) {\n      context[key] = unmaskedContext[key];\n    }\n\n    {\n      var name = getComponentNameFromType(type) || 'Unknown';\n      checkPropTypes(contextTypes, context, 'context', name);\n    }\n\n    return context;\n  }\n}\nfunction processChildContext(instance, type, parentContext, childContextTypes) {\n  {\n    // 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    if (typeof instance.getChildContext !== 'function') {\n      {\n        var componentName = getComponentNameFromType(type) || '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((getComponentNameFromType(type) || 'Unknown') + \".getChildContext(): key \\\"\" + contextKey + \"\\\" is not defined in childContextTypes.\");\n      }\n    }\n\n    {\n      var name = getComponentNameFromType(type) || 'Unknown';\n      checkPropTypes(childContextTypes, childContext, 'child context', name);\n    }\n\n    return assign({}, parentContext, childContext);\n  }\n}\n\nvar rendererSigil;\n\n{\n  // Use this to detect multiple renderers using the same context\n  rendererSigil = {};\n} // Used to store the parent path of all context overrides in a shared linked list.\n// Forming a reverse tree.\n\n\nvar rootContextSnapshot = null; // We assume that this runtime owns the \"current\" field on all ReactContext instances.\n// This global (actually thread local) state represents what state all those \"current\",\n// fields are currently in.\n\nvar currentActiveSnapshot = null;\n\nfunction popNode(prev) {\n  {\n    prev.context._currentValue2 = prev.parentValue;\n  }\n}\n\nfunction pushNode(next) {\n  {\n    next.context._currentValue2 = next.value;\n  }\n}\n\nfunction popToNearestCommonAncestor(prev, next) {\n  if (prev === next) ; else {\n    popNode(prev);\n    var parentPrev = prev.parent;\n    var parentNext = next.parent;\n\n    if (parentPrev === null) {\n      if (parentNext !== null) {\n        throw new Error('The stacks must reach the root at the same time. This is a bug in React.');\n      }\n    } else {\n      if (parentNext === null) {\n        throw new Error('The stacks must reach the root at the same time. This is a bug in React.');\n      }\n\n      popToNearestCommonAncestor(parentPrev, parentNext);\n    } // On the way back, we push the new ones that weren't common.\n\n\n    pushNode(next);\n  }\n}\n\nfunction popAllPrevious(prev) {\n  popNode(prev);\n  var parentPrev = prev.parent;\n\n  if (parentPrev !== null) {\n    popAllPrevious(parentPrev);\n  }\n}\n\nfunction pushAllNext(next) {\n  var parentNext = next.parent;\n\n  if (parentNext !== null) {\n    pushAllNext(parentNext);\n  }\n\n  pushNode(next);\n}\n\nfunction popPreviousToCommonLevel(prev, next) {\n  popNode(prev);\n  var parentPrev = prev.parent;\n\n  if (parentPrev === null) {\n    throw new Error('The depth must equal at least at zero before reaching the root. This is a bug in React.');\n  }\n\n  if (parentPrev.depth === next.depth) {\n    // We found the same level. Now we just need to find a shared ancestor.\n    popToNearestCommonAncestor(parentPrev, next);\n  } else {\n    // We must still be deeper.\n    popPreviousToCommonLevel(parentPrev, next);\n  }\n}\n\nfunction popNextToCommonLevel(prev, next) {\n  var parentNext = next.parent;\n\n  if (parentNext === null) {\n    throw new Error('The depth must equal at least at zero before reaching the root. This is a bug in React.');\n  }\n\n  if (prev.depth === parentNext.depth) {\n    // We found the same level. Now we just need to find a shared ancestor.\n    popToNearestCommonAncestor(prev, parentNext);\n  } else {\n    // We must still be deeper.\n    popNextToCommonLevel(prev, parentNext);\n  }\n\n  pushNode(next);\n} // Perform context switching to the new snapshot.\n// To make it cheap to read many contexts, while not suspending, we make the switch eagerly by\n// updating all the context's current values. That way reads, always just read the current value.\n// At the cost of updating contexts even if they're never read by this subtree.\n\n\nfunction switchContext(newSnapshot) {\n  // The basic algorithm we need to do is to pop back any contexts that are no longer on the stack.\n  // We also need to update any new contexts that are now on the stack with the deepest value.\n  // The easiest way to update new contexts is to just reapply them in reverse order from the\n  // perspective of the backpointers. To avoid allocating a lot when switching, we use the stack\n  // for that. Therefore this algorithm is recursive.\n  // 1) First we pop which ever snapshot tree was deepest. Popping old contexts as we go.\n  // 2) Then we find the nearest common ancestor from there. Popping old contexts as we go.\n  // 3) Then we reapply new contexts on the way back up the stack.\n  var prev = currentActiveSnapshot;\n  var next = newSnapshot;\n\n  if (prev !== next) {\n    if (prev === null) {\n      // $FlowFixMe: This has to be non-null since it's not equal to prev.\n      pushAllNext(next);\n    } else if (next === null) {\n      popAllPrevious(prev);\n    } else if (prev.depth === next.depth) {\n      popToNearestCommonAncestor(prev, next);\n    } else if (prev.depth > next.depth) {\n      popPreviousToCommonLevel(prev, next);\n    } else {\n      popNextToCommonLevel(prev, next);\n    }\n\n    currentActiveSnapshot = next;\n  }\n}\nfunction pushProvider(context, nextValue) {\n  var prevValue;\n\n  {\n    prevValue = context._currentValue2;\n    context._currentValue2 = nextValue;\n\n    {\n      if (context._currentRenderer2 !== undefined && context._currentRenderer2 !== null && context._currentRenderer2 !== rendererSigil) {\n        error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');\n      }\n\n      context._currentRenderer2 = rendererSigil;\n    }\n  }\n\n  var prevNode = currentActiveSnapshot;\n  var newNode = {\n    parent: prevNode,\n    depth: prevNode === null ? 0 : prevNode.depth + 1,\n    context: context,\n    parentValue: prevValue,\n    value: nextValue\n  };\n  currentActiveSnapshot = newNode;\n  return newNode;\n}\nfunction popProvider(context) {\n  var prevSnapshot = currentActiveSnapshot;\n\n  if (prevSnapshot === null) {\n    throw new Error('Tried to pop a Context at the root of the app. This is a bug in React.');\n  }\n\n  {\n    if (prevSnapshot.context !== context) {\n      error('The parent context is not the expected context. This is probably a bug in React.');\n    }\n  }\n\n  {\n    var _value = prevSnapshot.parentValue;\n\n    if (_value === REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED) {\n      prevSnapshot.context._currentValue2 = prevSnapshot.context._defaultValue;\n    } else {\n      prevSnapshot.context._currentValue2 = _value;\n    }\n\n    {\n      if (context._currentRenderer2 !== undefined && context._currentRenderer2 !== null && context._currentRenderer2 !== rendererSigil) {\n        error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');\n      }\n\n      context._currentRenderer2 = rendererSigil;\n    }\n  }\n\n  return currentActiveSnapshot = prevSnapshot.parent;\n}\nfunction getActiveContext() {\n  return currentActiveSnapshot;\n}\nfunction readContext(context) {\n  var value =  context._currentValue2;\n  return value;\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 set(key, value) {\n  key._reactInternals = value;\n}\n\nvar didWarnAboutNoopUpdateForComponent = {};\nvar didWarnAboutDeprecatedWillMount = {};\nvar didWarnAboutUninitializedState;\nvar didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;\nvar didWarnAboutLegacyLifecyclesAndDerivedState;\nvar didWarnAboutUndefinedDerivedState;\nvar warnOnUndefinedDerivedState;\nvar warnOnInvalidCallback;\nvar didWarnAboutDirectlyAssigningPropsToState;\nvar didWarnAboutContextTypeAndContextTypes;\nvar didWarnAboutInvalidateContextType;\n\n{\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  };\n}\n\nfunction warnNoop(publicInstance, callerName) {\n  {\n    var _constructor = publicInstance.constructor;\n    var componentName = _constructor && getComponentNameFromType(_constructor) || 'ReactClass';\n    var warningKey = componentName + '.' + callerName;\n\n    if (didWarnAboutNoopUpdateForComponent[warningKey]) {\n      return;\n    }\n\n    error('%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op.\\n\\nPlease check the code for the %s component.', callerName, callerName, componentName);\n\n    didWarnAboutNoopUpdateForComponent[warningKey] = true;\n  }\n}\n\nvar classComponentUpdater = {\n  isMounted: function (inst) {\n    return false;\n  },\n  enqueueSetState: function (inst, payload, callback) {\n    var internals = get(inst);\n\n    if (internals.queue === null) {\n      warnNoop(inst, 'setState');\n    } else {\n      internals.queue.push(payload);\n\n      {\n        if (callback !== undefined && callback !== null) {\n          warnOnInvalidCallback(callback, 'setState');\n        }\n      }\n    }\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    var internals = get(inst);\n    internals.replace = true;\n    internals.queue = [payload];\n\n    {\n      if (callback !== undefined && callback !== null) {\n        warnOnInvalidCallback(callback, 'setState');\n      }\n    }\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    var internals = get(inst);\n\n    if (internals.queue === null) {\n      warnNoop(inst, 'forceUpdate');\n    } else {\n      {\n        if (callback !== undefined && callback !== null) {\n          warnOnInvalidCallback(callback, 'setState');\n        }\n      }\n    }\n  }\n};\n\nfunction applyDerivedStateFromProps(instance, ctor, getDerivedStateFromProps, prevState, nextProps) {\n  var partialState = getDerivedStateFromProps(nextProps, prevState);\n\n  {\n    warnOnUndefinedDerivedState(ctor, partialState);\n  } // Merge the partial state and the previous state.\n\n\n  var newState = partialState === null || partialState === undefined ? prevState : assign({}, prevState, partialState);\n  return newState;\n}\n\nfunction constructClassInstance(ctor, props, maskedLegacyContext) {\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    context = maskedLegacyContext;\n  }\n\n  var instance = new ctor(props, context);\n\n  {\n    if (typeof ctor.getDerivedStateFromProps === 'function' && (instance.state === null || instance.state === undefined)) {\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  }\n\n  return instance;\n}\n\nfunction checkClassInstance(instance, ctor, newProps) {\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 callComponentWillMount(type, instance) {\n  var oldState = instance.state;\n\n  if (typeof instance.componentWillMount === 'function') {\n    {\n      if ( instance.componentWillMount.__suppressDeprecationWarning !== true) {\n        var componentName = getComponentNameFromType(type) || 'Unknown';\n\n        if (!didWarnAboutDeprecatedWillMount[componentName]) {\n          warn( // keep this warning in sync with ReactStrictModeWarning.js\n          'componentWillMount has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move code from componentWillMount to componentDidMount (preferred in most cases) ' + 'or the constructor.\\n' + '\\nPlease update the following components: %s', componentName);\n\n          didWarnAboutDeprecatedWillMount[componentName] = true;\n        }\n      }\n    }\n\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.', getComponentNameFromType(type) || 'Component');\n    }\n\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n  }\n}\n\nfunction processUpdateQueue(internalInstance, inst, props, maskedLegacyContext) {\n  if (internalInstance.queue !== null && internalInstance.queue.length > 0) {\n    var oldQueue = internalInstance.queue;\n    var oldReplace = internalInstance.replace;\n    internalInstance.queue = null;\n    internalInstance.replace = false;\n\n    if (oldReplace && oldQueue.length === 1) {\n      inst.state = oldQueue[0];\n    } else {\n      var nextState = oldReplace ? oldQueue[0] : inst.state;\n      var dontMutate = true;\n\n      for (var i = oldReplace ? 1 : 0; i < oldQueue.length; i++) {\n        var partial = oldQueue[i];\n        var partialState = typeof partial === 'function' ? partial.call(inst, nextState, props, maskedLegacyContext) : partial;\n\n        if (partialState != null) {\n          if (dontMutate) {\n            dontMutate = false;\n            nextState = assign({}, nextState, partialState);\n          } else {\n            assign(nextState, partialState);\n          }\n        }\n      }\n\n      inst.state = nextState;\n    }\n  } else {\n    internalInstance.queue = null;\n  }\n} // Invokes the mount life-cycles on a previously never rendered instance.\n\n\nfunction mountClassInstance(instance, ctor, newProps, maskedLegacyContext) {\n  {\n    checkClassInstance(instance, ctor, newProps);\n  }\n\n  var initialState = instance.state !== undefined ? instance.state : null;\n  instance.updater = classComponentUpdater;\n  instance.props = newProps;\n  instance.state = initialState; // We don't bother initializing the refs object on the server, since we're not going to resolve them anyway.\n  // The internal instance will be used to manage updates that happen during this mount.\n\n  var internalInstance = {\n    queue: [],\n    replace: false\n  };\n  set(instance, internalInstance);\n  var contextType = ctor.contextType;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    instance.context = readContext(contextType);\n  } else {\n    instance.context = maskedLegacyContext;\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\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    instance.state = applyDerivedStateFromProps(instance, ctor, getDerivedStateFromProps, initialState, newProps);\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(ctor, instance); // If we had additional state updates during this life-cycle, let's\n    // process them now.\n\n    processUpdateQueue(internalInstance, instance, newProps, maskedLegacyContext);\n  }\n}\n\n// Ids are base 32 strings whose binary representation corresponds to the\n// position of a node in a tree.\n// Every time the tree forks into multiple children, we add additional bits to\n// the left of the sequence that represent the position of the child within the\n// current level of children.\n//\n//      00101       00010001011010101\n//      \u2570\u2500\u252C\u2500\u256F       \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256F\n//   Fork 5 of 20       Parent id\n//\n// The leading 0s are important. In the above example, you only need 3 bits to\n// represent slot 5. However, you need 5 bits to represent all the forks at\n// the current level, so we must account for the empty bits at the end.\n//\n// For this same reason, slots are 1-indexed instead of 0-indexed. Otherwise,\n// the zeroth id at a level would be indistinguishable from its parent.\n//\n// If a node has only one child, and does not materialize an id (i.e. does not\n// contain a useId hook), then we don't need to allocate any space in the\n// sequence. It's treated as a transparent indirection. For example, these two\n// trees produce the same ids:\n//\n// <>                          <>\n//   <Indirection>               <A />\n//     <A />                     <B />\n//   </Indirection>            </>\n//   <B />\n// </>\n//\n// However, we cannot skip any node that materializes an id. Otherwise, a parent\n// id that does not fork would be indistinguishable from its child id. For\n// example, this tree does not fork, but the parent and child must have\n// different ids.\n//\n// <Parent>\n//   <Child />\n// </Parent>\n//\n// To handle this scenario, every time we materialize an id, we allocate a\n// new level with a single slot. You can think of this as a fork with only one\n// prong, or an array of children with length 1.\n//\n// It's possible for the size of the sequence to exceed 32 bits, the max\n// size for bitwise operations. When this happens, we make more room by\n// converting the right part of the id to a string and storing it in an overflow\n// variable. We use a base 32 string representation, because 32 is the largest\n// power of 2 that is supported by toString(). We want the base to be large so\n// that the resulting ids are compact, and we want the base to be a power of 2\n// because every log2(base) bits corresponds to a single character, i.e. every\n// log2(32) = 5 bits. That means we can lop bits off the end 5 at a time without\n// affecting the final result.\nvar emptyTreeContext = {\n  id: 1,\n  overflow: ''\n};\nfunction getTreeId(context) {\n  var overflow = context.overflow;\n  var idWithLeadingBit = context.id;\n  var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit);\n  return id.toString(32) + overflow;\n}\nfunction pushTreeContext(baseContext, totalChildren, index) {\n  var baseIdWithLeadingBit = baseContext.id;\n  var baseOverflow = baseContext.overflow; // 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    return {\n      id: 1 << restOfLength | id,\n      overflow: overflow\n    };\n  } else {\n    // Normal path\n    var newBits = slot << baseLength;\n\n    var _id = newBits | baseId;\n\n    var _overflow = baseOverflow;\n    return {\n      id: 1 << length | _id,\n      overflow: _overflow\n    };\n  }\n}\n\nfunction getBitLength(number) {\n  return 32 - clz32(number);\n}\n\nfunction getLeadingBit(id) {\n  return 1 << getBitLength(id) - 1;\n} // TODO: Math.clz32 is supported in Node 12+. Maybe we can drop the fallback.\n\n\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/**\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 currentlyRenderingComponent = null;\nvar currentlyRenderingTask = null;\nvar firstWorkInProgressHook = null;\nvar workInProgressHook = null; // Whether the work-in-progress hook is a re-rendered hook\n\nvar isReRender = false; // Whether an update was scheduled during the currently executing render pass.\n\nvar didScheduleRenderPhaseUpdate = false; // Counts the number of useId hooks in this component\n\nvar localIdCounter = 0; // Lazily created map of render-phase updates\n\nvar renderPhaseUpdates = null; // Counter to prevent infinite loops.\n\nvar numberOfReRenders = 0;\nvar RE_RENDER_LIMIT = 25;\nvar isInHookUserCodeInDev = false; // In DEV, this is the name of the currently executing primitive hook\n\nvar currentHookNameInDev;\n\nfunction resolveCurrentlyRenderingComponent() {\n  if (currentlyRenderingComponent === null) {\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\n  {\n    if (isInHookUserCodeInDev) {\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\n  return currentlyRenderingComponent;\n}\n\nfunction areHookInputsEqual(nextDeps, prevDeps) {\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, \"[\" + nextDeps.join(', ') + \"]\", \"[\" + prevDeps.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 createHook() {\n  if (numberOfReRenders > 0) {\n    throw new Error('Rendered more hooks than during the previous render');\n  }\n\n  return {\n    memoizedState: null,\n    queue: null,\n    next: null\n  };\n}\n\nfunction createWorkInProgressHook() {\n  if (workInProgressHook === null) {\n    // This is the first hook in the list\n    if (firstWorkInProgressHook === null) {\n      isReRender = false;\n      firstWorkInProgressHook = workInProgressHook = createHook();\n    } else {\n      // There's already a work-in-progress. Reuse it.\n      isReRender = true;\n      workInProgressHook = firstWorkInProgressHook;\n    }\n  } else {\n    if (workInProgressHook.next === null) {\n      isReRender = false; // Append to the end of the list\n\n      workInProgressHook = workInProgressHook.next = createHook();\n    } else {\n      // There's already a work-in-progress. Reuse it.\n      isReRender = true;\n      workInProgressHook = workInProgressHook.next;\n    }\n  }\n\n  return workInProgressHook;\n}\n\nfunction prepareToUseHooks(task, componentIdentity) {\n  currentlyRenderingComponent = componentIdentity;\n  currentlyRenderingTask = task;\n\n  {\n    isInHookUserCodeInDev = false;\n  } // The following should have already been reset\n  // didScheduleRenderPhaseUpdate = false;\n  // localIdCounter = 0;\n  // firstWorkInProgressHook = null;\n  // numberOfReRenders = 0;\n  // renderPhaseUpdates = null;\n  // workInProgressHook = null;\n\n\n  localIdCounter = 0;\n}\nfunction finishHooks(Component, props, children, refOrContext) {\n  // This must be called after every function component to prevent hooks from\n  // being used in classes.\n  while (didScheduleRenderPhaseUpdate) {\n    // Updates were scheduled during the render phase. They are stored in\n    // the `renderPhaseUpdates` map. Call the component again, reusing the\n    // work-in-progress hooks and applying the additional updates on top. Keep\n    // restarting until no more updates are scheduled.\n    didScheduleRenderPhaseUpdate = false;\n    localIdCounter = 0;\n    numberOfReRenders += 1; // Start over from the beginning of the list\n\n    workInProgressHook = null;\n    children = Component(props, refOrContext);\n  }\n\n  resetHooksState();\n  return children;\n}\nfunction checkDidRenderIdHook() {\n  // This should be called immediately after every finishHooks call.\n  // Conceptually, it's part of the return value of finishHooks; it's only a\n  // separate function to avoid using an array tuple.\n  var didRenderIdHook = localIdCounter !== 0;\n  return didRenderIdHook;\n} // Reset the internal hooks state if an error occurs while rendering a component\n\nfunction resetHooksState() {\n  {\n    isInHookUserCodeInDev = false;\n  }\n\n  currentlyRenderingComponent = null;\n  currentlyRenderingTask = null;\n  didScheduleRenderPhaseUpdate = false;\n  firstWorkInProgressHook = null;\n  numberOfReRenders = 0;\n  renderPhaseUpdates = null;\n  workInProgressHook = null;\n}\n\nfunction readContext$1(context) {\n  {\n    if (isInHookUserCodeInDev) {\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  return readContext(context);\n}\n\nfunction useContext(context) {\n  {\n    currentHookNameInDev = 'useContext';\n  }\n\n  resolveCurrentlyRenderingComponent();\n  return readContext(context);\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 useState(initialState) {\n  {\n    currentHookNameInDev = 'useState';\n  }\n\n  return useReducer(basicStateReducer, // useReducer has a special case to support lazy useState initializers\n  initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n  {\n    if (reducer !== basicStateReducer) {\n      currentHookNameInDev = 'useReducer';\n    }\n  }\n\n  currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n  workInProgressHook = createWorkInProgressHook();\n\n  if (isReRender) {\n    // This is a re-render. Apply the new render phase updates to the previous\n    // current hook.\n    var queue = workInProgressHook.queue;\n    var dispatch = queue.dispatch;\n\n    if (renderPhaseUpdates !== null) {\n      // Render phase updates are stored in a map of queue -> linked list\n      var firstRenderPhaseUpdate = renderPhaseUpdates.get(queue);\n\n      if (firstRenderPhaseUpdate !== undefined) {\n        renderPhaseUpdates.delete(queue);\n        var newState = workInProgressHook.memoizedState;\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\n          {\n            isInHookUserCodeInDev = true;\n          }\n\n          newState = reducer(newState, action);\n\n          {\n            isInHookUserCodeInDev = false;\n          }\n\n          update = update.next;\n        } while (update !== null);\n\n        workInProgressHook.memoizedState = newState;\n        return [newState, dispatch];\n      }\n    }\n\n    return [workInProgressHook.memoizedState, dispatch];\n  } else {\n    {\n      isInHookUserCodeInDev = true;\n    }\n\n    var initialState;\n\n    if (reducer === basicStateReducer) {\n      // Special case for `useState`.\n      initialState = typeof initialArg === 'function' ? initialArg() : initialArg;\n    } else {\n      initialState = init !== undefined ? init(initialArg) : initialArg;\n    }\n\n    {\n      isInHookUserCodeInDev = false;\n    }\n\n    workInProgressHook.memoizedState = initialState;\n\n    var _queue = workInProgressHook.queue = {\n      last: null,\n      dispatch: null\n    };\n\n    var _dispatch = _queue.dispatch = dispatchAction.bind(null, currentlyRenderingComponent, _queue);\n\n    return [workInProgressHook.memoizedState, _dispatch];\n  }\n}\n\nfunction useMemo(nextCreate, deps) {\n  currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n  workInProgressHook = createWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n\n  if (workInProgressHook !== null) {\n    var prevState = workInProgressHook.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\n  {\n    isInHookUserCodeInDev = true;\n  }\n\n  var nextValue = nextCreate();\n\n  {\n    isInHookUserCodeInDev = false;\n  }\n\n  workInProgressHook.memoizedState = [nextValue, nextDeps];\n  return nextValue;\n}\n\nfunction useRef(initialValue) {\n  currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n  workInProgressHook = createWorkInProgressHook();\n  var previousRef = workInProgressHook.memoizedState;\n\n  if (previousRef === null) {\n    var ref = {\n      current: initialValue\n    };\n\n    {\n      Object.seal(ref);\n    }\n\n    workInProgressHook.memoizedState = ref;\n    return ref;\n  } else {\n    return previousRef;\n  }\n}\n\nfunction useLayoutEffect(create, inputs) {\n  {\n    currentHookNameInDev = 'useLayoutEffect';\n\n    error('useLayoutEffect does nothing on the server, because its effect cannot ' + \"be encoded into the server renderer's output format. This will lead \" + 'to a mismatch between the initial, non-hydrated UI and the intended ' + 'UI. To avoid this, useLayoutEffect should only be used in ' + 'components that render exclusively on the client. ' + 'See https://reactjs.org/link/uselayouteffect-ssr for common fixes.');\n  }\n}\n\nfunction dispatchAction(componentIdentity, queue, action) {\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  if (componentIdentity === currentlyRenderingComponent) {\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    didScheduleRenderPhaseUpdate = true;\n    var update = {\n      action: action,\n      next: null\n    };\n\n    if (renderPhaseUpdates === null) {\n      renderPhaseUpdates = new Map();\n    }\n\n    var firstRenderPhaseUpdate = renderPhaseUpdates.get(queue);\n\n    if (firstRenderPhaseUpdate === undefined) {\n      renderPhaseUpdates.set(queue, update);\n    } else {\n      // Append the update to the end of the list.\n      var lastRenderPhaseUpdate = firstRenderPhaseUpdate;\n\n      while (lastRenderPhaseUpdate.next !== null) {\n        lastRenderPhaseUpdate = lastRenderPhaseUpdate.next;\n      }\n\n      lastRenderPhaseUpdate.next = update;\n    }\n  }\n}\n\nfunction useCallback(callback, deps) {\n  return useMemo(function () {\n    return callback;\n  }, deps);\n} // TODO Decide on how to implement this hook for server rendering.\n// If a mutation occurs during render, consider triggering a Suspense boundary\n// and falling back to client rendering.\n\nfunction useMutableSource(source, getSnapshot, subscribe) {\n  resolveCurrentlyRenderingComponent();\n  return getSnapshot(source._source);\n}\n\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\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  return getServerSnapshot();\n}\n\nfunction useDeferredValue(value) {\n  resolveCurrentlyRenderingComponent();\n  return value;\n}\n\nfunction unsupportedStartTransition() {\n  throw new Error('startTransition cannot be called during server rendering.');\n}\n\nfunction useTransition() {\n  resolveCurrentlyRenderingComponent();\n  return [false, unsupportedStartTransition];\n}\n\nfunction useId() {\n  var task = currentlyRenderingTask;\n  var treeId = getTreeId(task.treeContext);\n  var responseState = currentResponseState;\n\n  if (responseState === null) {\n    throw new Error('Invalid hook call. Hooks can only be called inside of the body of a function component.');\n  }\n\n  var localId = localIdCounter++;\n  return makeId(responseState, treeId, localId);\n}\n\nfunction noop() {}\n\nvar Dispatcher = {\n  readContext: readContext$1,\n  useContext: useContext,\n  useMemo: useMemo,\n  useReducer: useReducer,\n  useRef: useRef,\n  useState: useState,\n  useInsertionEffect: noop,\n  useLayoutEffect: useLayoutEffect,\n  useCallback: useCallback,\n  // useImperativeHandle is not run in the server environment\n  useImperativeHandle: noop,\n  // Effects are not run in the server environment.\n  useEffect: noop,\n  // Debugging effect\n  useDebugValue: noop,\n  useDeferredValue: useDeferredValue,\n  useTransition: useTransition,\n  useId: useId,\n  // Subscriptions are not setup in a server environment.\n  useMutableSource: useMutableSource,\n  useSyncExternalStore: useSyncExternalStore\n};\n\nvar currentResponseState = null;\nfunction setCurrentResponseState(responseState) {\n  currentResponseState = responseState;\n}\n\nfunction getStackByComponentStackNode(componentStack) {\n  try {\n    var info = '';\n    var node = componentStack;\n\n    do {\n      switch (node.tag) {\n        case 0:\n          info += describeBuiltInComponentFrame(node.type, null, null);\n          break;\n\n        case 1:\n          info += describeFunctionComponentFrame(node.type, null, null);\n          break;\n\n        case 2:\n          info += describeClassComponentFrame(node.type, null, null);\n          break;\n      }\n\n      node = node.parent;\n    } while (node);\n\n    return info;\n  } catch (x) {\n    return '\\nError generating stack: ' + x.message + '\\n' + x.stack;\n  }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\nvar PENDING = 0;\nvar COMPLETED = 1;\nvar FLUSHED = 2;\nvar ABORTED = 3;\nvar ERRORED = 4;\nvar OPEN = 0;\nvar CLOSING = 1;\nvar CLOSED = 2;\n// This is a default heuristic for how to split up the HTML content into progressive\n// loading. Our goal is to be able to display additional new content about every 500ms.\n// Faster than that is unnecessary and should be throttled on the client. It also\n// adds unnecessary overhead to do more splits. We don't know if it's a higher or lower\n// end device but higher end suffer less from the overhead than lower end does from\n// not getting small enough pieces. We error on the side of low end.\n// We base this on low end 3G speeds which is about 500kbits per second. We assume\n// that there can be a reasonable drop off from max bandwidth which leaves you with\n// as little as 80%. We can receive half of that each 500ms - at best. In practice,\n// a little bandwidth is lost to processing and contention - e.g. CSS and images that\n// are downloaded along with the main content. So we estimate about half of that to be\n// the lower end throughput. In other words, we expect that you can at least show\n// about 12.5kb of content per 500ms. Not counting starting latency for the first\n// paint.\n// 500 * 1024 / 8 * .8 * 0.5 / 2\nvar DEFAULT_PROGRESSIVE_CHUNK_SIZE = 12800;\n\nfunction defaultErrorHandler(error) {\n  console['error'](error); // Don't transform to our wrapper\n}\n\nfunction noop$1() {}\n\nfunction createRequest(children, responseState, rootFormatContext, progressiveChunkSize, onError, onAllReady, onShellReady, onShellError, onFatalError) {\n  var pingedTasks = [];\n  var abortSet = new Set();\n  var request = {\n    destination: null,\n    responseState: responseState,\n    progressiveChunkSize: progressiveChunkSize === undefined ? DEFAULT_PROGRESSIVE_CHUNK_SIZE : progressiveChunkSize,\n    status: OPEN,\n    fatalError: null,\n    nextSegmentId: 0,\n    allPendingTasks: 0,\n    pendingRootTasks: 0,\n    completedRootSegment: null,\n    abortableTasks: abortSet,\n    pingedTasks: pingedTasks,\n    clientRenderedBoundaries: [],\n    completedBoundaries: [],\n    partialBoundaries: [],\n    onError: onError === undefined ? defaultErrorHandler : onError,\n    onAllReady: onAllReady === undefined ? noop$1 : onAllReady,\n    onShellReady: onShellReady === undefined ? noop$1 : onShellReady,\n    onShellError: onShellError === undefined ? noop$1 : onShellError,\n    onFatalError: onFatalError === undefined ? noop$1 : onFatalError\n  }; // This segment represents the root fallback.\n\n  var rootSegment = createPendingSegment(request, 0, null, rootFormatContext); // There is no parent so conceptually, we're unblocked to flush this segment.\n\n  rootSegment.parentFlushed = true;\n  var rootTask = createTask(request, children, null, rootSegment, abortSet, emptyContextObject, rootContextSnapshot, emptyTreeContext);\n  pingedTasks.push(rootTask);\n  return request;\n}\n\nfunction pingTask(request, task) {\n  var pingedTasks = request.pingedTasks;\n  pingedTasks.push(task);\n\n  if (pingedTasks.length === 1) {\n    scheduleWork(function () {\n      return performWork(request);\n    });\n  }\n}\n\nfunction createSuspenseBoundary(request, fallbackAbortableTasks) {\n  return {\n    id: UNINITIALIZED_SUSPENSE_BOUNDARY_ID,\n    rootSegmentID: -1,\n    parentFlushed: false,\n    pendingTasks: 0,\n    forceClientRender: false,\n    completedSegments: [],\n    byteSize: 0,\n    fallbackAbortableTasks: fallbackAbortableTasks\n  };\n}\n\nfunction createTask(request, node, blockedBoundary, blockedSegment, abortSet, legacyContext, context, treeContext) {\n  request.allPendingTasks++;\n\n  if (blockedBoundary === null) {\n    request.pendingRootTasks++;\n  } else {\n    blockedBoundary.pendingTasks++;\n  }\n\n  var task = {\n    node: node,\n    ping: function () {\n      return pingTask(request, task);\n    },\n    blockedBoundary: blockedBoundary,\n    blockedSegment: blockedSegment,\n    abortSet: abortSet,\n    legacyContext: legacyContext,\n    context: context,\n    treeContext: treeContext\n  };\n\n  {\n    task.componentStack = null;\n  }\n\n  abortSet.add(task);\n  return task;\n}\n\nfunction createPendingSegment(request, index, boundary, formatContext) {\n  return {\n    status: PENDING,\n    id: -1,\n    // lazily assigned later\n    index: index,\n    parentFlushed: false,\n    chunks: [],\n    children: [],\n    formatContext: formatContext,\n    boundary: boundary\n  };\n} // DEV-only global reference to the currently executing task\n\n\nvar currentTaskInDEV = null;\n\nfunction getCurrentStackInDEV() {\n  {\n    if (currentTaskInDEV === null || currentTaskInDEV.componentStack === null) {\n      return '';\n    }\n\n    return getStackByComponentStackNode(currentTaskInDEV.componentStack);\n  }\n}\n\nfunction pushBuiltInComponentStackInDEV(task, type) {\n  {\n    task.componentStack = {\n      tag: 0,\n      parent: task.componentStack,\n      type: type\n    };\n  }\n}\n\nfunction pushFunctionComponentStackInDEV(task, type) {\n  {\n    task.componentStack = {\n      tag: 1,\n      parent: task.componentStack,\n      type: type\n    };\n  }\n}\n\nfunction pushClassComponentStackInDEV(task, type) {\n  {\n    task.componentStack = {\n      tag: 2,\n      parent: task.componentStack,\n      type: type\n    };\n  }\n}\n\nfunction popComponentStackInDEV(task) {\n  {\n    if (task.componentStack === null) {\n      error('Unexpectedly popped too many stack frames. This is a bug in React.');\n    } else {\n      task.componentStack = task.componentStack.parent;\n    }\n  }\n}\n\nfunction logRecoverableError(request, error) {\n  // If this callback errors, we intentionally let that error bubble up to become a fatal error\n  // so that someone fixes the error reporting instead of hiding it.\n  var onError = request.onError;\n  onError(error);\n}\n\nfunction fatalError(request, error) {\n  // This is called outside error handling code such as if the root errors outside\n  // a suspense boundary or if the root suspense boundary's fallback errors.\n  // It's also called if React itself or its host configs errors.\n  var onShellError = request.onShellError;\n  onShellError(error);\n  var onFatalError = request.onFatalError;\n  onFatalError(error);\n\n  if (request.destination !== null) {\n    request.status = CLOSED;\n    closeWithError(request.destination, error);\n  } else {\n    request.status = CLOSING;\n    request.fatalError = error;\n  }\n}\n\nfunction renderSuspenseBoundary(request, task, props) {\n  pushBuiltInComponentStackInDEV(task, 'Suspense');\n  var parentBoundary = task.blockedBoundary;\n  var parentSegment = task.blockedSegment; // Each time we enter a suspense boundary, we split out into a new segment for\n  // the fallback so that we can later replace that segment with the content.\n  // This also lets us split out the main content even if it doesn't suspend,\n  // in case it ends up generating a large subtree of content.\n\n  var fallback = props.fallback;\n  var content = props.children;\n  var fallbackAbortSet = new Set();\n  var newBoundary = createSuspenseBoundary(request, fallbackAbortSet);\n  var insertionIndex = parentSegment.chunks.length; // The children of the boundary segment is actually the fallback.\n\n  var boundarySegment = createPendingSegment(request, insertionIndex, newBoundary, parentSegment.formatContext);\n  parentSegment.children.push(boundarySegment); // This segment is the actual child content. We can start rendering that immediately.\n\n  var contentRootSegment = createPendingSegment(request, 0, null, parentSegment.formatContext); // We mark the root segment as having its parent flushed. It's not really flushed but there is\n  // no parent segment so there's nothing to wait on.\n\n  contentRootSegment.parentFlushed = true; // Currently this is running synchronously. We could instead schedule this to pingedTasks.\n  // I suspect that there might be some efficiency benefits from not creating the suspended task\n  // and instead just using the stack if possible.\n  // TODO: Call this directly instead of messing with saving and restoring contexts.\n  // We can reuse the current context and task to render the content immediately without\n  // context switching. We just need to temporarily switch which boundary and which segment\n  // we're writing to. If something suspends, it'll spawn new suspended task with that context.\n\n  task.blockedBoundary = newBoundary;\n  task.blockedSegment = contentRootSegment;\n\n  try {\n    // We use the safe form because we don't handle suspending here. Only error handling.\n    renderNode(request, task, content);\n    contentRootSegment.status = COMPLETED;\n    queueCompletedSegment(newBoundary, contentRootSegment);\n\n    if (newBoundary.pendingTasks === 0) {\n      // This must have been the last segment we were waiting on. This boundary is now complete.\n      // Therefore we won't need the fallback. We early return so that we don't have to create\n      // the fallback.\n      popComponentStackInDEV(task);\n      return;\n    }\n  } catch (error) {\n    contentRootSegment.status = ERRORED;\n    logRecoverableError(request, error);\n    newBoundary.forceClientRender = true; // We don't need to decrement any task numbers because we didn't spawn any new task.\n    // We don't need to schedule any task because we know the parent has written yet.\n    // We do need to fallthrough to create the fallback though.\n  } finally {\n    task.blockedBoundary = parentBoundary;\n    task.blockedSegment = parentSegment;\n  } // We create suspended task for the fallback because we don't want to actually work\n  // on it yet in case we finish the main content, so we queue for later.\n\n\n  var suspendedFallbackTask = createTask(request, fallback, parentBoundary, boundarySegment, fallbackAbortSet, task.legacyContext, task.context, task.treeContext);\n\n  {\n    suspendedFallbackTask.componentStack = task.componentStack;\n  } // TODO: This should be queued at a separate lower priority queue so that we only work\n  // on preparing fallbacks if we don't have any more main content to task on.\n\n\n  request.pingedTasks.push(suspendedFallbackTask);\n  popComponentStackInDEV(task);\n}\n\nfunction renderHostElement(request, task, type, props) {\n  pushBuiltInComponentStackInDEV(task, type);\n  var segment = task.blockedSegment;\n  var children = pushStartInstance(segment.chunks, type, props, request.responseState, segment.formatContext);\n  var prevContext = segment.formatContext;\n  segment.formatContext = getChildFormatContext(prevContext, type, props); // We use the non-destructive form because if something suspends, we still\n  // need to pop back up and finish this subtree of HTML.\n\n  renderNode(request, task, children); // We expect that errors will fatal the whole task and that we don't need\n  // the correct context. Therefore this is not in a finally.\n\n  segment.formatContext = prevContext;\n  pushEndInstance(segment.chunks, type);\n  popComponentStackInDEV(task);\n}\n\nfunction shouldConstruct$1(Component) {\n  return Component.prototype && Component.prototype.isReactComponent;\n}\n\nfunction renderWithHooks(request, task, Component, props, secondArg) {\n  var componentIdentity = {};\n  prepareToUseHooks(task, componentIdentity);\n  var result = Component(props, secondArg);\n  return finishHooks(Component, props, result, secondArg);\n}\n\nfunction finishClassComponent(request, task, instance, Component, props) {\n  var nextChildren = instance.render();\n\n  {\n    if (instance.props !== props) {\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.', getComponentNameFromType(Component) || 'a component');\n      }\n\n      didWarnAboutReassigningProps = true;\n    }\n  }\n\n  {\n    var childContextTypes = Component.childContextTypes;\n\n    if (childContextTypes !== null && childContextTypes !== undefined) {\n      var previousContext = task.legacyContext;\n      var mergedContext = processChildContext(instance, Component, previousContext, childContextTypes);\n      task.legacyContext = mergedContext;\n      renderNodeDestructive(request, task, nextChildren);\n      task.legacyContext = previousContext;\n      return;\n    }\n  }\n\n  renderNodeDestructive(request, task, nextChildren);\n}\n\nfunction renderClassComponent(request, task, Component, props) {\n  pushClassComponentStackInDEV(task, Component);\n  var maskedContext =  getMaskedContext(Component, task.legacyContext) ;\n  var instance = constructClassInstance(Component, props, maskedContext);\n  mountClassInstance(instance, Component, props, maskedContext);\n  finishClassComponent(request, task, instance, Component, props);\n  popComponentStackInDEV(task);\n}\n\nvar didWarnAboutBadClass = {};\nvar didWarnAboutModulePatternComponent = {};\nvar didWarnAboutContextTypeOnFunctionComponent = {};\nvar didWarnAboutGetDerivedStateOnFunctionComponent = {};\nvar didWarnAboutReassigningProps = false;\nvar didWarnAboutGenerators = false;\nvar didWarnAboutMaps = false;\nvar hasWarnedAboutUsingContextAsConsumer = false; // This would typically be a function component but we still support module pattern\n// components for some reason.\n\nfunction renderIndeterminateComponent(request, task, Component, props) {\n  var legacyContext;\n\n  {\n    legacyContext = getMaskedContext(Component, task.legacyContext);\n  }\n\n  pushFunctionComponentStackInDEV(task, Component);\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\n  var value = renderWithHooks(request, task, Component, props, legacyContext);\n  var hasId = checkDidRenderIdHook();\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    }\n\n    mountClassInstance(value, Component, props, legacyContext);\n    finishClassComponent(request, task, value, Component, props);\n  } else {\n\n    {\n      validateFunctionComponentInDev(Component);\n    } // We're now successfully past this task, and we don't have to pop back to\n    // the previous task every again, so we can use the destructive recursive form.\n\n\n    if (hasId) {\n      // This component materialized an id. We treat this as its own level, with\n      // a single \"child\" slot.\n      var prevTreeContext = task.treeContext;\n      var totalChildren = 1;\n      var index = 0;\n      task.treeContext = pushTreeContext(prevTreeContext, totalChildren, index);\n\n      try {\n        renderNodeDestructive(request, task, value);\n      } finally {\n        task.treeContext = prevTreeContext;\n      }\n    } else {\n      renderNodeDestructive(request, task, value);\n    }\n  }\n\n  popComponentStackInDEV(task);\n}\n\nfunction validateFunctionComponentInDev(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 (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\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\nfunction renderForwardRef(request, task, type, props, ref) {\n  pushFunctionComponentStackInDEV(task, type.render);\n  var children = renderWithHooks(request, task, type.render, props, ref);\n  var hasId = checkDidRenderIdHook();\n\n  if (hasId) {\n    // This component materialized an id. We treat this as its own level, with\n    // a single \"child\" slot.\n    var prevTreeContext = task.treeContext;\n    var totalChildren = 1;\n    var index = 0;\n    task.treeContext = pushTreeContext(prevTreeContext, totalChildren, index);\n\n    try {\n      renderNodeDestructive(request, task, children);\n    } finally {\n      task.treeContext = prevTreeContext;\n    }\n  } else {\n    renderNodeDestructive(request, task, children);\n  }\n\n  popComponentStackInDEV(task);\n}\n\nfunction renderMemo(request, task, type, props, ref) {\n  var innerType = type.type;\n  var resolvedProps = resolveDefaultProps(innerType, props);\n  renderElement(request, task, innerType, resolvedProps, ref);\n}\n\nfunction renderContextConsumer(request, task, context, props) {\n  // 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    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 render = props.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  var newValue = readContext(context);\n  var newChildren = render(newValue);\n  renderNodeDestructive(request, task, newChildren);\n}\n\nfunction renderContextProvider(request, task, type, props) {\n  var context = type._context;\n  var value = props.value;\n  var children = props.children;\n  var prevSnapshot;\n\n  {\n    prevSnapshot = task.context;\n  }\n\n  task.context = pushProvider(context, value);\n  renderNodeDestructive(request, task, children);\n  task.context = popProvider(context);\n\n  {\n    if (prevSnapshot !== task.context) {\n      error('Popping the context provider did not return back to the original snapshot. This is a bug in React.');\n    }\n  }\n}\n\nfunction renderLazyComponent(request, task, lazyComponent, props, ref) {\n  pushBuiltInComponentStackInDEV(task, 'Lazy');\n  var payload = lazyComponent._payload;\n  var init = lazyComponent._init;\n  var Component = init(payload);\n  var resolvedProps = resolveDefaultProps(Component, props);\n  renderElement(request, task, Component, resolvedProps, ref);\n  popComponentStackInDEV(task);\n}\n\nfunction renderElement(request, task, type, props, ref) {\n  if (typeof type === 'function') {\n    if (shouldConstruct$1(type)) {\n      renderClassComponent(request, task, type, props);\n      return;\n    } else {\n      renderIndeterminateComponent(request, task, type, props);\n      return;\n    }\n  }\n\n  if (typeof type === 'string') {\n    renderHostElement(request, task, type, props);\n    return;\n  }\n\n  switch (type) {\n    // TODO: LegacyHidden acts the same as a fragment. This only works\n    // because we currently assume that every instance of LegacyHidden is\n    // accompanied by a host component wrapper. In the hidden mode, the host\n    // component is given a `hidden` attribute, which ensures that the\n    // initial HTML is not visible. To support the use of LegacyHidden as a\n    // true fragment, without an extra DOM node, we would have to hide the\n    // initial HTML in some other way.\n    // TODO: Add REACT_OFFSCREEN_TYPE here too with the same capability.\n    case REACT_LEGACY_HIDDEN_TYPE:\n    case REACT_DEBUG_TRACING_MODE_TYPE:\n    case REACT_STRICT_MODE_TYPE:\n    case REACT_PROFILER_TYPE:\n    case REACT_FRAGMENT_TYPE:\n      {\n        renderNodeDestructive(request, task, props.children);\n        return;\n      }\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      {\n        pushBuiltInComponentStackInDEV(task, 'SuspenseList'); // TODO: SuspenseList should control the boundaries.\n\n        renderNodeDestructive(request, task, props.children);\n        popComponentStackInDEV(task);\n        return;\n      }\n\n    case REACT_SCOPE_TYPE:\n      {\n\n        throw new Error('ReactDOMServer does not yet support scope components.');\n      }\n    // eslint-disable-next-line-no-fallthrough\n\n    case REACT_SUSPENSE_TYPE:\n      {\n        {\n          renderSuspenseBoundary(request, task, props);\n        }\n\n        return;\n      }\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        {\n          renderForwardRef(request, task, type, props, ref);\n          return;\n        }\n\n      case REACT_MEMO_TYPE:\n        {\n          renderMemo(request, task, type, props, ref);\n          return;\n        }\n\n      case REACT_PROVIDER_TYPE:\n        {\n          renderContextProvider(request, task, type, props);\n          return;\n        }\n\n      case REACT_CONTEXT_TYPE:\n        {\n          renderContextConsumer(request, task, type, props);\n          return;\n        }\n\n      case REACT_LAZY_TYPE:\n        {\n          renderLazyComponent(request, task, type, props);\n          return;\n        }\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\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\nfunction validateIterable(iterable, iteratorFn) {\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    iterable[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 (iterable.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    }\n  }\n} // This function by it self renders a node and consumes the task by mutating it\n// to update the current execution state.\n\n\nfunction renderNodeDestructive(request, task, node) {\n  // Stash the node we're working on. We'll pick up from this task in case\n  // something suspends.\n  task.node = node; // Handle object types\n\n  if (typeof node === 'object' && node !== null) {\n    switch (node.$$typeof) {\n      case REACT_ELEMENT_TYPE:\n        {\n          var element = node;\n          var type = element.type;\n          var props = element.props;\n          var ref = element.ref;\n          renderElement(request, task, type, props, ref);\n          return;\n        }\n\n      case REACT_PORTAL_TYPE:\n        throw new Error('Portals are not currently supported by the server renderer. ' + 'Render them conditionally so that they only appear on the client render.');\n      // eslint-disable-next-line-no-fallthrough\n\n      case REACT_LAZY_TYPE:\n        {\n          {\n            var lazyNode = node;\n            var payload = lazyNode._payload;\n            var init = lazyNode._init;\n            var resolvedNode = init(payload);\n            renderNodeDestructive(request, task, resolvedNode);\n            return;\n          }\n        }\n    }\n\n    if (isArray(node)) {\n      renderChildrenArray(request, task, node);\n      return;\n    }\n\n    var iteratorFn = getIteratorFn(node);\n\n    if (iteratorFn) {\n      {\n        validateIterable(node, iteratorFn);\n      }\n\n      var iterator = iteratorFn.call(node);\n\n      if (iterator) {\n        // We need to know how many total children are in this set, so that we\n        // can allocate enough id slots to acommodate them. So we must exhaust\n        // the iterator before we start recursively rendering the children.\n        // TODO: This is not great but I think it's inherent to the id\n        // generation algorithm.\n        var step = iterator.next(); // If there are not entries, we need to push an empty so we start by checking that.\n\n        if (!step.done) {\n          var children = [];\n\n          do {\n            children.push(step.value);\n            step = iterator.next();\n          } while (!step.done);\n\n          renderChildrenArray(request, task, children);\n          return;\n        }\n\n        return;\n      }\n    }\n\n    var childString = Object.prototype.toString.call(node);\n    throw new Error(\"Objects are not valid as a React child (found: \" + (childString === '[object Object]' ? 'object with keys {' + Object.keys(node).join(', ') + '}' : childString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n  }\n\n  if (typeof node === 'string') {\n    pushTextInstance$1(task.blockedSegment.chunks, node, request.responseState);\n    return;\n  }\n\n  if (typeof node === 'number') {\n    pushTextInstance$1(task.blockedSegment.chunks, '' + node, request.responseState);\n    return;\n  }\n\n  {\n    if (typeof node === 'function') {\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}\n\nfunction renderChildrenArray(request, task, children) {\n  var totalChildren = children.length;\n\n  for (var i = 0; i < totalChildren; i++) {\n    var prevTreeContext = task.treeContext;\n    task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);\n\n    try {\n      // We need to use the non-destructive form so that we can safely pop back\n      // up and render the sibling if something suspends.\n      renderNode(request, task, children[i]);\n    } finally {\n      task.treeContext = prevTreeContext;\n    }\n  }\n}\n\nfunction spawnNewSuspendedTask(request, task, x) {\n  // Something suspended, we'll need to create a new segment and resolve it later.\n  var segment = task.blockedSegment;\n  var insertionIndex = segment.chunks.length;\n  var newSegment = createPendingSegment(request, insertionIndex, null, segment.formatContext);\n  segment.children.push(newSegment);\n  var newTask = createTask(request, task.node, task.blockedBoundary, newSegment, task.abortSet, task.legacyContext, task.context, task.treeContext);\n\n  {\n    if (task.componentStack !== null) {\n      // We pop one task off the stack because the node that suspended will be tried again,\n      // which will add it back onto the stack.\n      newTask.componentStack = task.componentStack.parent;\n    }\n  }\n\n  var ping = newTask.ping;\n  x.then(ping, ping);\n} // This is a non-destructive form of rendering a node. If it suspends it spawns\n// a new task and restores the context of this task to what it was before.\n\n\nfunction renderNode(request, task, node) {\n  // TODO: Store segment.children.length here and reset it in case something\n  // suspended partially through writing something.\n  // Snapshot the current context in case something throws to interrupt the\n  // process.\n  var previousFormatContext = task.blockedSegment.formatContext;\n  var previousLegacyContext = task.legacyContext;\n  var previousContext = task.context;\n  var previousComponentStack = null;\n\n  {\n    previousComponentStack = task.componentStack;\n  }\n\n  try {\n    return renderNodeDestructive(request, task, node);\n  } catch (x) {\n    resetHooksState();\n\n    if (typeof x === 'object' && x !== null && typeof x.then === 'function') {\n      spawnNewSuspendedTask(request, task, x); // Restore the context. We assume that this will be restored by the inner\n      // functions in case nothing throws so we don't use \"finally\" here.\n\n      task.blockedSegment.formatContext = previousFormatContext;\n      task.legacyContext = previousLegacyContext;\n      task.context = previousContext; // Restore all active ReactContexts to what they were before.\n\n      switchContext(previousContext);\n\n      {\n        task.componentStack = previousComponentStack;\n      }\n\n      return;\n    } else {\n      // Restore the context. We assume that this will be restored by the inner\n      // functions in case nothing throws so we don't use \"finally\" here.\n      task.blockedSegment.formatContext = previousFormatContext;\n      task.legacyContext = previousLegacyContext;\n      task.context = previousContext; // Restore all active ReactContexts to what they were before.\n\n      switchContext(previousContext);\n\n      {\n        task.componentStack = previousComponentStack;\n      } // We assume that we don't need the correct context.\n      // Let's terminate the rest of the tree and don't render any siblings.\n\n\n      throw x;\n    }\n  }\n}\n\nfunction erroredTask(request, boundary, segment, error) {\n  // Report the error to a global handler.\n  logRecoverableError(request, error);\n\n  if (boundary === null) {\n    fatalError(request, error);\n  } else {\n    boundary.pendingTasks--;\n\n    if (!boundary.forceClientRender) {\n      boundary.forceClientRender = true; // Regardless of what happens next, this boundary won't be displayed,\n      // so we can flush it, if the parent already flushed.\n\n      if (boundary.parentFlushed) {\n        // We don't have a preference where in the queue this goes since it's likely\n        // to error on the client anyway. However, intentionally client-rendered\n        // boundaries should be flushed earlier so that they can start on the client.\n        // We reuse the same queue for errors.\n        request.clientRenderedBoundaries.push(boundary);\n      }\n    }\n  }\n\n  request.allPendingTasks--;\n\n  if (request.allPendingTasks === 0) {\n    var onAllReady = request.onAllReady;\n    onAllReady();\n  }\n}\n\nfunction abortTaskSoft(task) {\n  // This aborts task without aborting the parent boundary that it blocks.\n  // It's used for when we didn't need this task to complete the tree.\n  // If task was needed, then it should use abortTask instead.\n  var request = this;\n  var boundary = task.blockedBoundary;\n  var segment = task.blockedSegment;\n  segment.status = ABORTED;\n  finishedTask(request, boundary, segment);\n}\n\nfunction abortTask(task) {\n  // This aborts the task and aborts the parent that it blocks, putting it into\n  // client rendered mode.\n  var request = this;\n  var boundary = task.blockedBoundary;\n  var segment = task.blockedSegment;\n  segment.status = ABORTED;\n\n  if (boundary === null) {\n    request.allPendingTasks--; // We didn't complete the root so we have nothing to show. We can close\n    // the request;\n\n    if (request.status !== CLOSED) {\n      request.status = CLOSED;\n\n      if (request.destination !== null) {\n        close(request.destination);\n      }\n    }\n  } else {\n    boundary.pendingTasks--;\n\n    if (!boundary.forceClientRender) {\n      boundary.forceClientRender = true;\n\n      if (boundary.parentFlushed) {\n        request.clientRenderedBoundaries.push(boundary);\n      }\n    } // If this boundary was still pending then we haven't already cancelled its fallbacks.\n    // We'll need to abort the fallbacks, which will also error that parent boundary.\n\n\n    boundary.fallbackAbortableTasks.forEach(abortTask, request);\n    boundary.fallbackAbortableTasks.clear();\n    request.allPendingTasks--;\n\n    if (request.allPendingTasks === 0) {\n      var onAllReady = request.onAllReady;\n      onAllReady();\n    }\n  }\n}\n\nfunction queueCompletedSegment(boundary, segment) {\n  if (segment.chunks.length === 0 && segment.children.length === 1 && segment.children[0].boundary === null) {\n    // This is an empty segment. There's nothing to write, so we can instead transfer the ID\n    // to the child. That way any existing references point to the child.\n    var childSegment = segment.children[0];\n    childSegment.id = segment.id;\n    childSegment.parentFlushed = true;\n\n    if (childSegment.status === COMPLETED) {\n      queueCompletedSegment(boundary, childSegment);\n    }\n  } else {\n    var completedSegments = boundary.completedSegments;\n    completedSegments.push(segment);\n  }\n}\n\nfunction finishedTask(request, boundary, segment) {\n  if (boundary === null) {\n    if (segment.parentFlushed) {\n      if (request.completedRootSegment !== null) {\n        throw new Error('There can only be one root segment. This is a bug in React.');\n      }\n\n      request.completedRootSegment = segment;\n    }\n\n    request.pendingRootTasks--;\n\n    if (request.pendingRootTasks === 0) {\n      // We have completed the shell so the shell can't error anymore.\n      request.onShellError = noop$1;\n      var onShellReady = request.onShellReady;\n      onShellReady();\n    }\n  } else {\n    boundary.pendingTasks--;\n\n    if (boundary.forceClientRender) ; else if (boundary.pendingTasks === 0) {\n      // This must have been the last segment we were waiting on. This boundary is now complete.\n      if (segment.parentFlushed) {\n        // Our parent segment already flushed, so we need to schedule this segment to be emitted.\n        // If it is a segment that was aborted, we'll write other content instead so we don't need\n        // to emit it.\n        if (segment.status === COMPLETED) {\n          queueCompletedSegment(boundary, segment);\n        }\n      }\n\n      if (boundary.parentFlushed) {\n        // The segment might be part of a segment that didn't flush yet, but if the boundary's\n        // parent flushed, we need to schedule the boundary to be emitted.\n        request.completedBoundaries.push(boundary);\n      } // We can now cancel any pending task on the fallback since we won't need to show it anymore.\n      // This needs to happen after we read the parentFlushed flags because aborting can finish\n      // work which can trigger user code, which can start flushing, which can change those flags.\n\n\n      boundary.fallbackAbortableTasks.forEach(abortTaskSoft, request);\n      boundary.fallbackAbortableTasks.clear();\n    } else {\n      if (segment.parentFlushed) {\n        // Our parent already flushed, so we need to schedule this segment to be emitted.\n        // If it is a segment that was aborted, we'll write other content instead so we don't need\n        // to emit it.\n        if (segment.status === COMPLETED) {\n          queueCompletedSegment(boundary, segment);\n          var completedSegments = boundary.completedSegments;\n\n          if (completedSegments.length === 1) {\n            // This is the first time since we last flushed that we completed anything.\n            // We can schedule this boundary to emit its partially completed segments early\n            // in case the parent has already been flushed.\n            if (boundary.parentFlushed) {\n              request.partialBoundaries.push(boundary);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  request.allPendingTasks--;\n\n  if (request.allPendingTasks === 0) {\n    // This needs to be called at the very end so that we can synchronously write the result\n    // in the callback if needed.\n    var onAllReady = request.onAllReady;\n    onAllReady();\n  }\n}\n\nfunction retryTask(request, task) {\n  var segment = task.blockedSegment;\n\n  if (segment.status !== PENDING) {\n    // We completed this by other means before we had a chance to retry it.\n    return;\n  } // We restore the context to what it was when we suspended.\n  // We don't restore it after we leave because it's likely that we'll end up\n  // needing a very similar context soon again.\n\n\n  switchContext(task.context);\n  var prevTaskInDEV = null;\n\n  {\n    prevTaskInDEV = currentTaskInDEV;\n    currentTaskInDEV = task;\n  }\n\n  try {\n    // We call the destructive form that mutates this task. That way if something\n    // suspends again, we can reuse the same task instead of spawning a new one.\n    renderNodeDestructive(request, task, task.node);\n    task.abortSet.delete(task);\n    segment.status = COMPLETED;\n    finishedTask(request, task.blockedBoundary, segment);\n  } catch (x) {\n    resetHooksState();\n\n    if (typeof x === 'object' && x !== null && typeof x.then === 'function') {\n      // Something suspended again, let's pick it back up later.\n      var ping = task.ping;\n      x.then(ping, ping);\n    } else {\n      task.abortSet.delete(task);\n      segment.status = ERRORED;\n      erroredTask(request, task.blockedBoundary, segment, x);\n    }\n  } finally {\n    {\n      currentTaskInDEV = prevTaskInDEV;\n    }\n  }\n}\n\nfunction performWork(request) {\n  if (request.status === CLOSED) {\n    return;\n  }\n\n  var prevContext = getActiveContext();\n  var prevDispatcher = ReactCurrentDispatcher$1.current;\n  ReactCurrentDispatcher$1.current = Dispatcher;\n  var prevGetCurrentStackImpl;\n\n  {\n    prevGetCurrentStackImpl = ReactDebugCurrentFrame$1.getCurrentStack;\n    ReactDebugCurrentFrame$1.getCurrentStack = getCurrentStackInDEV;\n  }\n\n  var prevResponseState = currentResponseState;\n  setCurrentResponseState(request.responseState);\n\n  try {\n    var pingedTasks = request.pingedTasks;\n    var i;\n\n    for (i = 0; i < pingedTasks.length; i++) {\n      var task = pingedTasks[i];\n      retryTask(request, task);\n    }\n\n    pingedTasks.splice(0, i);\n\n    if (request.destination !== null) {\n      flushCompletedQueues(request, request.destination);\n    }\n  } catch (error) {\n    logRecoverableError(request, error);\n    fatalError(request, error);\n  } finally {\n    setCurrentResponseState(prevResponseState);\n    ReactCurrentDispatcher$1.current = prevDispatcher;\n\n    {\n      ReactDebugCurrentFrame$1.getCurrentStack = prevGetCurrentStackImpl;\n    }\n\n    if (prevDispatcher === Dispatcher) {\n      // This means that we were in a reentrant work loop. This could happen\n      // in a renderer that supports synchronous work like renderToString,\n      // when it's called from within another renderer.\n      // Normally we don't bother switching the contexts to their root/default\n      // values when leaving because we'll likely need the same or similar\n      // context again. However, when we're inside a synchronous loop like this\n      // we'll to restore the context to what it was before returning.\n      switchContext(prevContext);\n    }\n  }\n}\n\nfunction flushSubtree(request, destination, segment) {\n  segment.parentFlushed = true;\n\n  switch (segment.status) {\n    case PENDING:\n      {\n        // We're emitting a placeholder for this segment to be filled in later.\n        // Therefore we'll need to assign it an ID - to refer to it by.\n        var segmentID = segment.id = request.nextSegmentId++;\n        return writePlaceholder(destination, request.responseState, segmentID);\n      }\n\n    case COMPLETED:\n      {\n        segment.status = FLUSHED;\n        var r = true;\n        var chunks = segment.chunks;\n        var chunkIdx = 0;\n        var children = segment.children;\n\n        for (var childIdx = 0; childIdx < children.length; childIdx++) {\n          var nextChild = children[childIdx]; // Write all the chunks up until the next child.\n\n          for (; chunkIdx < nextChild.index; chunkIdx++) {\n            writeChunk(destination, chunks[chunkIdx]);\n          }\n\n          r = flushSegment(request, destination, nextChild);\n        } // Finally just write all the remaining chunks\n\n\n        for (; chunkIdx < chunks.length - 1; chunkIdx++) {\n          writeChunk(destination, chunks[chunkIdx]);\n        }\n\n        if (chunkIdx < chunks.length) {\n          r = writeChunkAndReturn(destination, chunks[chunkIdx]);\n        }\n\n        return r;\n      }\n\n    default:\n      {\n        throw new Error('Aborted, errored or already flushed boundaries should not be flushed again. This is a bug in React.');\n      }\n  }\n}\n\nfunction flushSegment(request, destination, segment) {\n  var boundary = segment.boundary;\n\n  if (boundary === null) {\n    // Not a suspense boundary.\n    return flushSubtree(request, destination, segment);\n  }\n\n  boundary.parentFlushed = true; // This segment is a Suspense boundary. We need to decide whether to\n  // emit the content or the fallback now.\n\n  if (boundary.forceClientRender) {\n    // Emit a client rendered suspense boundary wrapper.\n    // We never queue the inner boundary so we'll never emit its content or partial segments.\n    writeStartClientRenderedSuspenseBoundary$1(destination, request.responseState); // Flush the fallback.\n\n    flushSubtree(request, destination, segment);\n    return writeEndClientRenderedSuspenseBoundary$1(destination, request.responseState);\n  } else if (boundary.pendingTasks > 0) {\n    // This boundary is still loading. Emit a pending suspense boundary wrapper.\n    // Assign an ID to refer to the future content by.\n    boundary.rootSegmentID = request.nextSegmentId++;\n\n    if (boundary.completedSegments.length > 0) {\n      // If this is at least partially complete, we can queue it to be partially emitted early.\n      request.partialBoundaries.push(boundary);\n    } /// This is the first time we should have referenced this ID.\n\n\n    var id = boundary.id = assignSuspenseBoundaryID(request.responseState);\n    writeStartPendingSuspenseBoundary(destination, request.responseState, id); // Flush the fallback.\n\n    flushSubtree(request, destination, segment);\n    return writeEndPendingSuspenseBoundary(destination, request.responseState);\n  } else if (boundary.byteSize > request.progressiveChunkSize) {\n    // This boundary is large and will be emitted separately so that we can progressively show\n    // other content. We add it to the queue during the flush because we have to ensure that\n    // the parent flushes first so that there's something to inject it into.\n    // We also have to make sure that it's emitted into the queue in a deterministic slot.\n    // I.e. we can't insert it here when it completes.\n    // Assign an ID to refer to the future content by.\n    boundary.rootSegmentID = request.nextSegmentId++;\n    request.completedBoundaries.push(boundary); // Emit a pending rendered suspense boundary wrapper.\n\n    writeStartPendingSuspenseBoundary(destination, request.responseState, boundary.id); // Flush the fallback.\n\n    flushSubtree(request, destination, segment);\n    return writeEndPendingSuspenseBoundary(destination, request.responseState);\n  } else {\n    // We can inline this boundary's content as a complete boundary.\n    writeStartCompletedSuspenseBoundary$1(destination, request.responseState);\n    var completedSegments = boundary.completedSegments;\n\n    if (completedSegments.length !== 1) {\n      throw new Error('A previously unvisited boundary must have exactly one root segment. This is a bug in React.');\n    }\n\n    var contentSegment = completedSegments[0];\n    flushSegment(request, destination, contentSegment);\n    return writeEndCompletedSuspenseBoundary$1(destination, request.responseState);\n  }\n}\n\nfunction flushClientRenderedBoundary(request, destination, boundary) {\n  return writeClientRenderBoundaryInstruction(destination, request.responseState, boundary.id);\n}\n\nfunction flushSegmentContainer(request, destination, segment) {\n  writeStartSegment(destination, request.responseState, segment.formatContext, segment.id);\n  flushSegment(request, destination, segment);\n  return writeEndSegment(destination, segment.formatContext);\n}\n\nfunction flushCompletedBoundary(request, destination, boundary) {\n  var completedSegments = boundary.completedSegments;\n  var i = 0;\n\n  for (; i < completedSegments.length; i++) {\n    var segment = completedSegments[i];\n    flushPartiallyCompletedSegment(request, destination, boundary, segment);\n  }\n\n  completedSegments.length = 0;\n  return writeCompletedBoundaryInstruction(destination, request.responseState, boundary.id, boundary.rootSegmentID);\n}\n\nfunction flushPartialBoundary(request, destination, boundary) {\n  var completedSegments = boundary.completedSegments;\n  var i = 0;\n\n  for (; i < completedSegments.length; i++) {\n    var segment = completedSegments[i];\n\n    if (!flushPartiallyCompletedSegment(request, destination, boundary, segment)) {\n      i++;\n      completedSegments.splice(0, i); // Only write as much as the buffer wants. Something higher priority\n      // might want to write later.\n\n      return false;\n    }\n  }\n\n  completedSegments.splice(0, i);\n  return true;\n}\n\nfunction flushPartiallyCompletedSegment(request, destination, boundary, segment) {\n  if (segment.status === FLUSHED) {\n    // We've already flushed this inline.\n    return true;\n  }\n\n  var segmentID = segment.id;\n\n  if (segmentID === -1) {\n    // This segment wasn't previously referred to. This happens at the root of\n    // a boundary. We make kind of a leap here and assume this is the root.\n    var rootSegmentID = segment.id = boundary.rootSegmentID;\n\n    if (rootSegmentID === -1) {\n      throw new Error('A root segment ID must have been assigned by now. This is a bug in React.');\n    }\n\n    return flushSegmentContainer(request, destination, segment);\n  } else {\n    flushSegmentContainer(request, destination, segment);\n    return writeCompletedSegmentInstruction(destination, request.responseState, segmentID);\n  }\n}\n\nfunction flushCompletedQueues(request, destination) {\n\n  try {\n    // The structure of this is to go through each queue one by one and write\n    // until the sink tells us to stop. When we should stop, we still finish writing\n    // that item fully and then yield. At that point we remove the already completed\n    // items up until the point we completed them.\n    // TODO: Emit preloading.\n    // TODO: It's kind of unfortunate to keep checking this array after we've already\n    // emitted the root.\n    var completedRootSegment = request.completedRootSegment;\n\n    if (completedRootSegment !== null && request.pendingRootTasks === 0) {\n      flushSegment(request, destination, completedRootSegment);\n      request.completedRootSegment = null;\n      writeCompletedRoot(destination, request.responseState);\n    } // We emit client rendering instructions for already emitted boundaries first.\n    // This is so that we can signal to the client to start client rendering them as\n    // soon as possible.\n\n\n    var clientRenderedBoundaries = request.clientRenderedBoundaries;\n    var i;\n\n    for (i = 0; i < clientRenderedBoundaries.length; i++) {\n      var boundary = clientRenderedBoundaries[i];\n\n      if (!flushClientRenderedBoundary(request, destination, boundary)) {\n        request.destination = null;\n        i++;\n        clientRenderedBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    clientRenderedBoundaries.splice(0, i); // Next we emit any complete boundaries. It's better to favor boundaries\n    // that are completely done since we can actually show them, than it is to emit\n    // any individual segments from a partially complete boundary.\n\n    var completedBoundaries = request.completedBoundaries;\n\n    for (i = 0; i < completedBoundaries.length; i++) {\n      var _boundary = completedBoundaries[i];\n\n      if (!flushCompletedBoundary(request, destination, _boundary)) {\n        request.destination = null;\n        i++;\n        completedBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    completedBoundaries.splice(0, i); // Allow anything written so far to flush to the underlying sink before\n    // we continue with lower priorities.\n\n    completeWriting(destination);\n    beginWriting(destination); // TODO: Here we'll emit data used by hydration.\n    // Next we emit any segments of any boundaries that are partially complete\n    // but not deeply complete.\n\n    var partialBoundaries = request.partialBoundaries;\n\n    for (i = 0; i < partialBoundaries.length; i++) {\n      var _boundary2 = partialBoundaries[i];\n\n      if (!flushPartialBoundary(request, destination, _boundary2)) {\n        request.destination = null;\n        i++;\n        partialBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    partialBoundaries.splice(0, i); // Next we check the completed boundaries again. This may have had\n    // boundaries added to it in case they were too larged to be inlined.\n    // New ones might be added in this loop.\n\n    var largeBoundaries = request.completedBoundaries;\n\n    for (i = 0; i < largeBoundaries.length; i++) {\n      var _boundary3 = largeBoundaries[i];\n\n      if (!flushCompletedBoundary(request, destination, _boundary3)) {\n        request.destination = null;\n        i++;\n        largeBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    largeBoundaries.splice(0, i);\n  } finally {\n\n    if (request.allPendingTasks === 0 && request.pingedTasks.length === 0 && request.clientRenderedBoundaries.length === 0 && request.completedBoundaries.length === 0 // We don't need to check any partially completed segments because\n    // either they have pending task or they're complete.\n    ) {\n        {\n          if (request.abortableTasks.size !== 0) {\n            error('There was still abortable task at the root when we closed. This is a bug in React.');\n          }\n        } // We're done.\n\n\n        close(destination);\n      }\n  }\n}\n\nfunction startWork(request) {\n  scheduleWork(function () {\n    return performWork(request);\n  });\n}\nfunction startFlowing(request, destination) {\n  if (request.status === CLOSING) {\n    request.status = CLOSED;\n    closeWithError(destination, request.fatalError);\n    return;\n  }\n\n  if (request.status === CLOSED) {\n    return;\n  }\n\n  if (request.destination !== null) {\n    // We're already flowing.\n    return;\n  }\n\n  request.destination = destination;\n\n  try {\n    flushCompletedQueues(request, destination);\n  } catch (error) {\n    logRecoverableError(request, error);\n    fatalError(request, error);\n  }\n} // This is called to early terminate a request. It puts all pending boundaries in client rendered state.\n\nfunction abort(request) {\n  try {\n    var abortableTasks = request.abortableTasks;\n    abortableTasks.forEach(abortTask, request);\n    abortableTasks.clear();\n\n    if (request.destination !== null) {\n      flushCompletedQueues(request, request.destination);\n    }\n  } catch (error) {\n    logRecoverableError(request, error);\n    fatalError(request, error);\n  }\n}\n\nfunction onError() {// Non-fatal errors are ignored.\n}\n\nfunction renderToStringImpl(children, options, generateStaticMarkup) {\n  var didFatal = false;\n  var fatalError = null;\n  var result = '';\n  var destination = {\n    push: function (chunk) {\n      if (chunk !== null) {\n        result += chunk;\n      }\n\n      return true;\n    },\n    destroy: function (error) {\n      didFatal = true;\n      fatalError = error;\n    }\n  };\n  var readyToStream = false;\n\n  function onShellReady() {\n    readyToStream = true;\n  }\n\n  var request = createRequest(children, createResponseState$1(generateStaticMarkup, options ? options.identifierPrefix : undefined), createRootFormatContext(), Infinity, onError, undefined, onShellReady, undefined, undefined);\n  startWork(request); // If anything suspended and is still pending, we'll abort it before writing.\n  // That way we write only client-rendered boundaries from the start.\n\n  abort(request);\n  startFlowing(request, destination);\n\n  if (didFatal) {\n    throw fatalError;\n  }\n\n  if (!readyToStream) {\n    // Note: This error message is the one we use on the client. It doesn't\n    // really make sense here. But this is the legacy server renderer, anyway.\n    // We're going to delete it soon.\n    throw 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.');\n  }\n\n  return result;\n}\n\nfunction renderToString(children, options) {\n  return renderToStringImpl(children, options, false);\n}\n\nfunction renderToStaticMarkup(children, options) {\n  return renderToStringImpl(children, options, true);\n}\n\nfunction renderToNodeStream() {\n  throw new Error('ReactDOMServer.renderToNodeStream(): The streaming API is not available ' + 'in the browser. Use ReactDOMServer.renderToString() instead.');\n}\n\nfunction renderToStaticNodeStream() {\n  throw new Error('ReactDOMServer.renderToStaticNodeStream(): The streaming API is not available ' + 'in the browser. Use ReactDOMServer.renderToStaticMarkup() instead.');\n}\n\nexports.renderToNodeStream = renderToNodeStream;\nexports.renderToStaticMarkup = renderToStaticMarkup;\nexports.renderToStaticNodeStream = renderToStaticNodeStream;\nexports.renderToString = renderToString;\nexports.version = ReactVersion;\n  })();\n}\n", "/**\n * @license React\n * react-dom-server.browser.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\nvar ReactVersion = '18.0.0-fc46dba67-20220329';\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\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\nfunction scheduleWork(callback) {\n  callback();\n}\nvar VIEW_SIZE = 512;\nvar currentView = null;\nvar writtenBytes = 0;\nfunction beginWriting(destination) {\n  currentView = new Uint8Array(VIEW_SIZE);\n  writtenBytes = 0;\n}\nfunction writeChunk(destination, chunk) {\n  if (chunk.length === 0) {\n    return;\n  }\n\n  if (chunk.length > VIEW_SIZE) {\n    // this chunk may overflow a single view which implies it was not\n    // one that is cached by the streaming renderer. We will enqueu\n    // it directly and expect it is not re-used\n    if (writtenBytes > 0) {\n      destination.enqueue(new Uint8Array(currentView.buffer, 0, writtenBytes));\n      currentView = new Uint8Array(VIEW_SIZE);\n      writtenBytes = 0;\n    }\n\n    destination.enqueue(chunk);\n    return;\n  }\n\n  var bytesToWrite = chunk;\n  var allowableBytes = currentView.length - writtenBytes;\n\n  if (allowableBytes < bytesToWrite.length) {\n    // this chunk would overflow the current view. We enqueue a full view\n    // and start a new view with the remaining chunk\n    if (allowableBytes === 0) {\n      // the current view is already full, send it\n      destination.enqueue(currentView);\n    } else {\n      // fill up the current view and apply the remaining chunk bytes\n      // to a new view.\n      currentView.set(bytesToWrite.subarray(0, allowableBytes), writtenBytes); // writtenBytes += allowableBytes; // this can be skipped because we are going to immediately reset the view\n\n      destination.enqueue(currentView);\n      bytesToWrite = bytesToWrite.subarray(allowableBytes);\n    }\n\n    currentView = new Uint8Array(VIEW_SIZE);\n    writtenBytes = 0;\n  }\n\n  currentView.set(bytesToWrite, writtenBytes);\n  writtenBytes += bytesToWrite.length;\n}\nfunction writeChunkAndReturn(destination, chunk) {\n  writeChunk(destination, chunk); // in web streams there is no backpressure so we can alwas write more\n\n  return true;\n}\nfunction completeWriting(destination) {\n  if (currentView && writtenBytes > 0) {\n    destination.enqueue(new Uint8Array(currentView.buffer, 0, writtenBytes));\n    currentView = null;\n    writtenBytes = 0;\n  }\n}\nfunction close(destination) {\n  destination.close();\n}\nvar textEncoder = new TextEncoder();\nfunction stringToChunk(content) {\n  return textEncoder.encode(content);\n}\nfunction stringToPrecomputedChunk(content) {\n  return textEncoder.encode(content);\n}\nfunction closeWithError(destination, error) {\n  if (typeof destination.error === 'function') {\n    // $FlowFixMe: This is an Error object or the destination accepts other types.\n    destination.error(error);\n  } else {\n    // Earlier implementations doesn't support this method. In that environment you're\n    // supposed to throw from a promise returned but we don't return a promise in our\n    // approach. We could fork this implementation but this is environment is an edge\n    // case to begin with. It's even less common to run this in an older environment.\n    // Even then, this is not where errors are supposed to happen and they get reported\n    // to a global callback in addition to this anyway. So it's fine just to close this.\n    destination.close();\n  }\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}\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 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}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\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 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 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/**\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\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 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\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\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 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 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 = /^-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, '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// code copied and modified from escape-html\nvar matchHtmlRegExp = /[\"'&<>]/;\n/**\n * Escapes special characters and HTML entities in a given html string.\n *\n * @param  {string} string HTML string to escape for later insertion\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n  {\n    checkHtmlStringCoercion(string);\n  }\n\n  var str = '' + string;\n  var match = matchHtmlRegExp.exec(str);\n\n  if (!match) {\n    return str;\n  }\n\n  var escape;\n  var html = '';\n  var index;\n  var lastIndex = 0;\n\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34:\n        // \"\n        escape = '&quot;';\n        break;\n\n      case 38:\n        // &\n        escape = '&amp;';\n        break;\n\n      case 39:\n        // '\n        escape = '&#x27;'; // modified from escape-html; used to be '&#39'\n\n        break;\n\n      case 60:\n        // <\n        escape = '&lt;';\n        break;\n\n      case 62:\n        // >\n        escape = '&gt;';\n        break;\n\n      default:\n        continue;\n    }\n\n    if (lastIndex !== index) {\n      html += str.substring(lastIndex, index);\n    }\n\n    lastIndex = index + 1;\n    html += escape;\n  }\n\n  return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n} // end code copied and modified from escape-html\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\n\n\nfunction escapeTextForBrowser(text) {\n  if (typeof text === 'boolean' || typeof text === 'number') {\n    // this shortcircuit helps perf for types that we know will never have\n    // special characters, especially given that this function is used often\n    // for numeric dom ids.\n    return '' + text;\n  }\n\n  return escapeHtml(text);\n}\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern$1 = /^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$1, '-ms-');\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\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\nvar startInlineScript = stringToPrecomputedChunk('<script>');\nvar endInlineScript = stringToPrecomputedChunk('</script>');\nvar startScriptSrc = stringToPrecomputedChunk('<script src=\"');\nvar startModuleSrc = stringToPrecomputedChunk('<script type=\"module\" src=\"');\nvar endAsyncScript = stringToPrecomputedChunk('\" async=\"\"></script>'); // Allows us to keep track of what we've already written so we can refer back to it.\n\nfunction createResponseState(identifierPrefix, nonce, bootstrapScriptContent, bootstrapScripts, bootstrapModules) {\n  var idPrefix = identifierPrefix === undefined ? '' : identifierPrefix;\n  var inlineScriptWithNonce = nonce === undefined ? startInlineScript : stringToPrecomputedChunk('<script nonce=\"' + escapeTextForBrowser(nonce) + '\">');\n  var bootstrapChunks = [];\n\n  if (bootstrapScriptContent !== undefined) {\n    bootstrapChunks.push(inlineScriptWithNonce, stringToChunk(escapeTextForBrowser(bootstrapScriptContent)), endInlineScript);\n  }\n\n  if (bootstrapScripts !== undefined) {\n    for (var i = 0; i < bootstrapScripts.length; i++) {\n      bootstrapChunks.push(startScriptSrc, stringToChunk(escapeTextForBrowser(bootstrapScripts[i])), endAsyncScript);\n    }\n  }\n\n  if (bootstrapModules !== undefined) {\n    for (var _i = 0; _i < bootstrapModules.length; _i++) {\n      bootstrapChunks.push(startModuleSrc, stringToChunk(escapeTextForBrowser(bootstrapModules[_i])), endAsyncScript);\n    }\n  }\n\n  return {\n    bootstrapChunks: bootstrapChunks,\n    startInlineScript: inlineScriptWithNonce,\n    placeholderPrefix: stringToPrecomputedChunk(idPrefix + 'P:'),\n    segmentPrefix: stringToPrecomputedChunk(idPrefix + 'S:'),\n    boundaryPrefix: idPrefix + 'B:',\n    idPrefix: idPrefix,\n    nextSuspenseID: 0,\n    sentCompleteSegmentFunction: false,\n    sentCompleteBoundaryFunction: false,\n    sentClientRenderFunction: false\n  };\n} // Constants for the insertion mode we're currently writing in. We don't encode all HTML5 insertion\n// modes. We only include the variants as they matter for the sake of our purposes.\n// We don't actually provide the namespace therefore we use constants instead of the string.\n\nvar ROOT_HTML_MODE = 0; // Used for the root most element tag.\n\nvar HTML_MODE = 1;\nvar SVG_MODE = 2;\nvar MATHML_MODE = 3;\nvar HTML_TABLE_MODE = 4;\nvar HTML_TABLE_BODY_MODE = 5;\nvar HTML_TABLE_ROW_MODE = 6;\nvar HTML_COLGROUP_MODE = 7; // We have a greater than HTML_TABLE_MODE check elsewhere. If you add more cases here, make sure it\n// still makes sense\n\nfunction createFormatContext(insertionMode, selectedValue) {\n  return {\n    insertionMode: insertionMode,\n    selectedValue: selectedValue\n  };\n}\n\nfunction createRootFormatContext(namespaceURI) {\n  var insertionMode = namespaceURI === 'http://www.w3.org/2000/svg' ? SVG_MODE : namespaceURI === 'http://www.w3.org/1998/Math/MathML' ? MATHML_MODE : ROOT_HTML_MODE;\n  return createFormatContext(insertionMode, null);\n}\nfunction getChildFormatContext(parentContext, type, props) {\n  switch (type) {\n    case 'select':\n      return createFormatContext(HTML_MODE, props.value != null ? props.value : props.defaultValue);\n\n    case 'svg':\n      return createFormatContext(SVG_MODE, null);\n\n    case 'math':\n      return createFormatContext(MATHML_MODE, null);\n\n    case 'foreignObject':\n      return createFormatContext(HTML_MODE, null);\n    // Table parents are special in that their children can only be created at all if they're\n    // wrapped in a table parent. So we need to encode that we're entering this mode.\n\n    case 'table':\n      return createFormatContext(HTML_TABLE_MODE, null);\n\n    case 'thead':\n    case 'tbody':\n    case 'tfoot':\n      return createFormatContext(HTML_TABLE_BODY_MODE, null);\n\n    case 'colgroup':\n      return createFormatContext(HTML_COLGROUP_MODE, null);\n\n    case 'tr':\n      return createFormatContext(HTML_TABLE_ROW_MODE, null);\n  }\n\n  if (parentContext.insertionMode >= HTML_TABLE_MODE) {\n    // Whatever tag this was, it wasn't a table parent or other special parent, so we must have\n    // entered plain HTML again.\n    return createFormatContext(HTML_MODE, null);\n  }\n\n  if (parentContext.insertionMode === ROOT_HTML_MODE) {\n    // We've emitted the root and is now in plain HTML mode.\n    return createFormatContext(HTML_MODE, null);\n  }\n\n  return parentContext;\n}\nvar UNINITIALIZED_SUSPENSE_BOUNDARY_ID = null;\nfunction assignSuspenseBoundaryID(responseState) {\n  var generatedID = responseState.nextSuspenseID++;\n  return stringToPrecomputedChunk(responseState.boundaryPrefix + generatedID.toString(16));\n}\nfunction makeId(responseState, treeId, localId) {\n  var idPrefix = responseState.idPrefix;\n  var id = ':' + idPrefix + '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  if (localId > 0) {\n    id += 'H' + localId.toString(32);\n  }\n\n  return id + ':';\n}\n\nfunction encodeHTMLTextNode(text) {\n  return escapeTextForBrowser(text);\n}\n\nvar textSeparator = stringToPrecomputedChunk('<!-- -->');\nfunction pushTextInstance(target, text, responseState) {\n  if (text === '') {\n    // Empty text doesn't have a DOM node representation and the hydration is aware of this.\n    return;\n  } // TODO: Avoid adding a text separator in common cases.\n\n\n  target.push(stringToChunk(encodeHTMLTextNode(text)), textSeparator);\n}\nvar styleNameCache = new Map();\n\nfunction processStyleName(styleName) {\n  var chunk = styleNameCache.get(styleName);\n\n  if (chunk !== undefined) {\n    return chunk;\n  }\n\n  var result = stringToPrecomputedChunk(escapeTextForBrowser(hyphenateStyleName(styleName)));\n  styleNameCache.set(styleName, result);\n  return result;\n}\n\nvar styleAttributeStart = stringToPrecomputedChunk(' style=\"');\nvar styleAssign = stringToPrecomputedChunk(':');\nvar styleSeparator = stringToPrecomputedChunk(';');\n\nfunction pushStyle(target, responseState, style) {\n  if (typeof 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  var isFirst = true;\n\n  for (var styleName in style) {\n    if (!hasOwnProperty.call(style, styleName)) {\n      continue;\n    } // If you provide unsafe user data here they can inject arbitrary CSS\n    // 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\n\n    var styleValue = style[styleName];\n\n    if (styleValue == null || typeof styleValue === 'boolean' || styleValue === '') {\n      // TODO: We used to set empty string as a style with an empty value. Does that ever make sense?\n      continue;\n    }\n\n    var nameChunk = void 0;\n    var valueChunk = void 0;\n    var isCustomProperty = styleName.indexOf('--') === 0;\n\n    if (isCustomProperty) {\n      nameChunk = stringToChunk(escapeTextForBrowser(styleName));\n\n      {\n        checkCSSPropertyStringCoercion(styleValue, styleName);\n      }\n\n      valueChunk = stringToChunk(escapeTextForBrowser(('' + styleValue).trim()));\n    } else {\n      {\n        warnValidStyle$1(styleName, styleValue);\n      }\n\n      nameChunk = processStyleName(styleName);\n\n      if (typeof styleValue === 'number') {\n        if (styleValue !== 0 && !hasOwnProperty.call(isUnitlessNumber, styleName)) {\n          valueChunk = stringToChunk(styleValue + 'px'); // Presumes implicit 'px' suffix for unitless numbers\n        } else {\n          valueChunk = stringToChunk('' + styleValue);\n        }\n      } else {\n        {\n          checkCSSPropertyStringCoercion(styleValue, styleName);\n        }\n\n        valueChunk = stringToChunk(escapeTextForBrowser(('' + styleValue).trim()));\n      }\n    }\n\n    if (isFirst) {\n      isFirst = false; // If it's first, we don't need any separators prefixed.\n\n      target.push(styleAttributeStart, nameChunk, styleAssign, valueChunk);\n    } else {\n      target.push(styleSeparator, nameChunk, styleAssign, valueChunk);\n    }\n  }\n\n  if (!isFirst) {\n    target.push(attributeEnd);\n  }\n}\n\nvar attributeSeparator = stringToPrecomputedChunk(' ');\nvar attributeAssign = stringToPrecomputedChunk('=\"');\nvar attributeEnd = stringToPrecomputedChunk('\"');\nvar attributeEmptyString = stringToPrecomputedChunk('=\"\"');\n\nfunction pushAttribute(target, responseState, name, value) {\n  switch (name) {\n    case 'style':\n      {\n        pushStyle(target, responseState, value);\n        return;\n      }\n\n    case 'defaultValue':\n    case 'defaultChecked': // These shouldn't be set as attributes on generic HTML elements.\n\n    case 'innerHTML': // Must use dangerouslySetInnerHTML instead.\n\n    case 'suppressContentEditableWarning':\n    case 'suppressHydrationWarning':\n      // Ignored. These are built-in to React on the client.\n      return;\n  }\n\n  if ( // shouldIgnoreAttribute\n  // We have already filtered out null/undefined and reserved words.\n  name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {\n    return;\n  }\n\n  var propertyInfo = getPropertyInfo(name);\n\n  if (propertyInfo !== null) {\n    // shouldRemoveAttribute\n    switch (typeof value) {\n      case 'function': // $FlowIssue symbol is perfectly valid here\n\n      case 'symbol':\n        // eslint-disable-line\n        return;\n\n      case 'boolean':\n        {\n          if (!propertyInfo.acceptsBooleans) {\n            return;\n          }\n        }\n    }\n\n    var attributeName = propertyInfo.attributeName;\n    var attributeNameChunk = stringToChunk(attributeName); // TODO: If it's known we can cache the chunk.\n\n    switch (propertyInfo.type) {\n      case BOOLEAN:\n        if (value) {\n          target.push(attributeSeparator, attributeNameChunk, attributeEmptyString);\n        }\n\n        return;\n\n      case OVERLOADED_BOOLEAN:\n        if (value === true) {\n          target.push(attributeSeparator, attributeNameChunk, attributeEmptyString);\n        } else if (value === false) ; else {\n          target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n        }\n\n        return;\n\n      case NUMERIC:\n        if (!isNaN(value)) {\n          target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n        }\n\n        break;\n\n      case POSITIVE_NUMERIC:\n        if (!isNaN(value) && value >= 1) {\n          target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n        }\n\n        break;\n\n      default:\n        if (propertyInfo.sanitizeURL) {\n          {\n            checkAttributeStringCoercion(value, attributeName);\n          }\n\n          value = '' + value;\n          sanitizeURL(value);\n        }\n\n        target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n    }\n  } else if (isAttributeNameSafe(name)) {\n    // shouldRemoveAttribute\n    switch (typeof value) {\n      case 'function': // $FlowIssue symbol is perfectly valid here\n\n      case 'symbol':\n        // eslint-disable-line\n        return;\n\n      case 'boolean':\n        {\n          var prefix = name.toLowerCase().slice(0, 5);\n\n          if (prefix !== 'data-' && prefix !== 'aria-') {\n            return;\n          }\n        }\n    }\n\n    target.push(attributeSeparator, stringToChunk(name), attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n  }\n}\n\nvar endOfStartTag = stringToPrecomputedChunk('>');\nvar endOfStartTagSelfClosing = stringToPrecomputedChunk('/>');\n\nfunction pushInnerHTML(target, innerHTML, children) {\n  if (innerHTML != null) {\n    if (children != null) {\n      throw new Error('Can only set one of `children` or `props.dangerouslySetInnerHTML`.');\n    }\n\n    if (typeof innerHTML !== 'object' || !('__html' in innerHTML)) {\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    var html = innerHTML.__html;\n\n    if (html !== null && html !== undefined) {\n      {\n        checkHtmlStringCoercion(html);\n      }\n\n      target.push(stringToChunk('' + html));\n    }\n  }\n} // TODO: Move these to ResponseState so that we warn for every request.\n// It would help debugging in stateful servers (e.g. service worker).\n\n\nvar didWarnDefaultInputValue = false;\nvar didWarnDefaultChecked = false;\nvar didWarnDefaultSelectValue = false;\nvar didWarnDefaultTextareaValue = false;\nvar didWarnInvalidOptionChildren = false;\nvar didWarnInvalidOptionInnerHTML = false;\nvar didWarnSelectedSetOnOption = false;\n\nfunction checkSelectProp(props, propName) {\n  {\n    var value = props[propName];\n\n    if (value != null) {\n      var array = isArray(value);\n\n      if (props.multiple && !array) {\n        error('The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.', propName);\n      } else if (!props.multiple && array) {\n        error('The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.', propName);\n      }\n    }\n  }\n}\n\nfunction pushStartSelect(target, props, responseState) {\n  {\n    checkControlledValueProps('select', props);\n    checkSelectProp(props, 'value');\n    checkSelectProp(props, 'defaultValue');\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnDefaultSelectValue) {\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      didWarnDefaultSelectValue = true;\n    }\n  }\n\n  target.push(startChunkForTag('select'));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          // TODO: This doesn't really make sense for select since it can't use the controlled\n          // value in the innerHTML.\n          innerHTML = propValue;\n          break;\n\n        case 'defaultValue':\n        case 'value':\n          // These are set on the Context instead and applied to the nested options.\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n  return children;\n}\n\nfunction flattenOptionChildren(children) {\n  var content = ''; // Flatten children and warn if they aren't strings or numbers;\n  // invalid types are ignored.\n\n  React.Children.forEach(children, function (child) {\n    if (child == null) {\n      return;\n    }\n\n    content += child;\n\n    {\n      if (!didWarnInvalidOptionChildren && typeof child !== 'string' && typeof child !== 'number') {\n        didWarnInvalidOptionChildren = 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  });\n  return content;\n}\n\nvar selectedMarkerAttribute = stringToPrecomputedChunk(' selected=\"\"');\n\nfunction pushStartOption(target, props, responseState, formatContext) {\n  var selectedValue = formatContext.selectedValue;\n  target.push(startChunkForTag('option'));\n  var children = null;\n  var value = null;\n  var selected = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'selected':\n          // ignore\n          selected = propValue;\n\n          {\n            // TODO: Remove support for `selected` in <option>.\n            if (!didWarnSelectedSetOnOption) {\n              error('Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');\n\n              didWarnSelectedSetOnOption = true;\n            }\n          }\n\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n        // eslint-disable-next-line-no-fallthrough\n\n        case 'value':\n          value = propValue;\n        // We intentionally fallthrough to also set the attribute on the node.\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  if (selectedValue != null) {\n    var stringValue;\n\n    if (value !== null) {\n      {\n        checkAttributeStringCoercion(value, 'value');\n      }\n\n      stringValue = '' + value;\n    } else {\n      {\n        if (innerHTML !== null) {\n          if (!didWarnInvalidOptionInnerHTML) {\n            didWarnInvalidOptionInnerHTML = true;\n\n            error('Pass a `value` prop if you set dangerouslyInnerHTML so React knows ' + 'which value should be selected.');\n          }\n        }\n      }\n\n      stringValue = flattenOptionChildren(children);\n    }\n\n    if (isArray(selectedValue)) {\n      // multiple\n      for (var i = 0; i < selectedValue.length; i++) {\n        {\n          checkAttributeStringCoercion(selectedValue[i], 'value');\n        }\n\n        var v = '' + selectedValue[i];\n\n        if (v === stringValue) {\n          target.push(selectedMarkerAttribute);\n          break;\n        }\n      }\n    } else {\n      {\n        checkAttributeStringCoercion(selectedValue, 'select.value');\n      }\n\n      if ('' + selectedValue === stringValue) {\n        target.push(selectedMarkerAttribute);\n      }\n    }\n  } else if (selected) {\n    target.push(selectedMarkerAttribute);\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n  return children;\n}\n\nfunction pushInput(target, props, responseState) {\n  {\n    checkControlledValueProps('input', props);\n\n    if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnDefaultChecked) {\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', 'A component', props.type);\n\n      didWarnDefaultChecked = true;\n    }\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnDefaultInputValue) {\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', 'A component', props.type);\n\n      didWarnDefaultInputValue = true;\n    }\n  }\n\n  target.push(startChunkForTag('input'));\n  var value = null;\n  var defaultValue = null;\n  var checked = null;\n  var defaultChecked = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n        case 'dangerouslySetInnerHTML':\n          throw new Error('input' + \" is a self-closing tag and must neither have `children` nor \" + 'use `dangerouslySetInnerHTML`.');\n        // eslint-disable-next-line-no-fallthrough\n\n        case 'defaultChecked':\n          defaultChecked = propValue;\n          break;\n\n        case 'defaultValue':\n          defaultValue = propValue;\n          break;\n\n        case 'checked':\n          checked = propValue;\n          break;\n\n        case 'value':\n          value = propValue;\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  if (checked !== null) {\n    pushAttribute(target, responseState, 'checked', checked);\n  } else if (defaultChecked !== null) {\n    pushAttribute(target, responseState, 'checked', defaultChecked);\n  }\n\n  if (value !== null) {\n    pushAttribute(target, responseState, 'value', value);\n  } else if (defaultValue !== null) {\n    pushAttribute(target, responseState, 'value', defaultValue);\n  }\n\n  target.push(endOfStartTagSelfClosing);\n  return null;\n}\n\nfunction pushStartTextArea(target, props, responseState) {\n  {\n    checkControlledValueProps('textarea', props);\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnDefaultTextareaValue) {\n      error('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');\n\n      didWarnDefaultTextareaValue = true;\n    }\n  }\n\n  target.push(startChunkForTag('textarea'));\n  var value = null;\n  var defaultValue = null;\n  var children = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'value':\n          value = propValue;\n          break;\n\n        case 'defaultValue':\n          defaultValue = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          throw new Error('`dangerouslySetInnerHTML` does not make sense on <textarea>.');\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  if (value === null && defaultValue !== null) {\n    value = defaultValue;\n  }\n\n  target.push(endOfStartTag); // TODO (yungsters): Remove support for children content in <textarea>.\n\n  if (children != null) {\n    {\n      error('Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');\n    }\n\n    if (value != 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      } // TODO: remove the coercion and the DEV check below because it will\n      // always be overwritten by the coercion several lines below it. #22309\n\n\n      {\n        checkHtmlStringCoercion(children[0]);\n      }\n\n      value = '' + children[0];\n    }\n\n    {\n      checkHtmlStringCoercion(children);\n    }\n\n    value = '' + children;\n  }\n\n  if (typeof value === 'string' && value[0] === '\\n') {\n    // text/html ignores the first character in these tags if it's a newline\n    // Prefer to break application/xml over text/html (for now) by adding\n    // a newline specifically to get eaten by the parser. (Alternately for\n    // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n    // \\r is normalized out by HTMLTextAreaElement#value.)\n    // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n    // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n    // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n    // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n    //  from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n    target.push(leadingNewline);\n  } // ToString and push directly instead of recurse over children.\n  // We don't really support complex children in the value anyway.\n  // This also currently avoids a trailing comment node which breaks textarea.\n\n\n  if (value !== null) {\n    {\n      checkAttributeStringCoercion(value, 'value');\n    }\n\n    target.push(stringToChunk(encodeHTMLTextNode('' + value)));\n  }\n\n  return null;\n}\n\nfunction pushSelfClosing(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n        case 'dangerouslySetInnerHTML':\n          throw new Error(tag + \" is a self-closing tag and must neither have `children` nor \" + 'use `dangerouslySetInnerHTML`.');\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTagSelfClosing);\n  return null;\n}\n\nfunction pushStartMenuItem(target, props, responseState) {\n  target.push(startChunkForTag('menuitem'));\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n        case 'dangerouslySetInnerHTML':\n          throw new Error('menuitems cannot have `children` nor `dangerouslySetInnerHTML`.');\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  return null;\n}\n\nfunction pushStartGenericElement(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n\n  if (typeof children === 'string') {\n    // Special case children as a string to avoid the unnecessary comment.\n    // TODO: Remove this special case after the general optimization is in place.\n    target.push(stringToChunk(encodeHTMLTextNode(children)));\n    return null;\n  }\n\n  return children;\n}\n\nfunction pushStartCustomElement(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n\n        case 'style':\n          pushStyle(target, responseState, propValue);\n          break;\n\n        case 'suppressContentEditableWarning':\n        case 'suppressHydrationWarning':\n          // Ignored. These are built-in to React on the client.\n          break;\n\n        default:\n          if (isAttributeNameSafe(propKey) && typeof propValue !== 'function' && typeof propValue !== 'symbol') {\n            target.push(attributeSeparator, stringToChunk(propKey), attributeAssign, stringToChunk(escapeTextForBrowser(propValue)), attributeEnd);\n          }\n\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n  return children;\n}\n\nvar leadingNewline = stringToPrecomputedChunk('\\n');\n\nfunction pushStartPreformattedElement(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag); // text/html ignores the first character in these tags if it's a newline\n  // Prefer to break application/xml over text/html (for now) by adding\n  // a newline specifically to get eaten by the parser. (Alternately for\n  // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n  // \\r is normalized out by HTMLTextAreaElement#value.)\n  // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n  // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n  // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n  // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n  //  from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n  // TODO: This doesn't deal with the case where the child is an array\n  // or component that returns a string.\n\n  if (innerHTML != null) {\n    if (children != null) {\n      throw new Error('Can only set one of `children` or `props.dangerouslySetInnerHTML`.');\n    }\n\n    if (typeof innerHTML !== 'object' || !('__html' in innerHTML)) {\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    var html = innerHTML.__html;\n\n    if (html !== null && html !== undefined) {\n      if (typeof html === 'string' && html.length > 0 && html[0] === '\\n') {\n        target.push(leadingNewline, stringToChunk(html));\n      } else {\n        {\n          checkHtmlStringCoercion(html);\n        }\n\n        target.push(stringToChunk('' + html));\n      }\n    }\n  }\n\n  if (typeof children === 'string' && children[0] === '\\n') {\n    target.push(leadingNewline);\n  }\n\n  return children;\n} // We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\n\nvar validatedTagCache = new Map();\n\nfunction startChunkForTag(tag) {\n  var tagStartChunk = validatedTagCache.get(tag);\n\n  if (tagStartChunk === undefined) {\n    if (!VALID_TAG_REGEX.test(tag)) {\n      throw new Error(\"Invalid tag: \" + tag);\n    }\n\n    tagStartChunk = stringToPrecomputedChunk('<' + tag);\n    validatedTagCache.set(tag, tagStartChunk);\n  }\n\n  return tagStartChunk;\n}\n\nvar DOCTYPE = stringToPrecomputedChunk('<!DOCTYPE html>');\nfunction pushStartInstance(target, type, props, responseState, formatContext) {\n  {\n    validateProperties(type, props);\n    validateProperties$1(type, props);\n    validateProperties$2(type, props, null);\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    if (formatContext.insertionMode !== SVG_MODE && formatContext.insertionMode !== MATHML_MODE) {\n      if (type.indexOf('-') === -1 && typeof props.is !== 'string' && type.toLowerCase() !== type) {\n        error('<%s /> is using incorrect casing. ' + 'Use PascalCase for React components, ' + 'or lowercase for HTML elements.', type);\n      }\n    }\n  }\n\n  switch (type) {\n    // Special tags\n    case 'select':\n      return pushStartSelect(target, props, responseState);\n\n    case 'option':\n      return pushStartOption(target, props, responseState, formatContext);\n\n    case 'textarea':\n      return pushStartTextArea(target, props, responseState);\n\n    case 'input':\n      return pushInput(target, props, responseState);\n\n    case 'menuitem':\n      return pushStartMenuItem(target, props, responseState);\n    // Newline eating tags\n\n    case 'listing':\n    case 'pre':\n      {\n        return pushStartPreformattedElement(target, props, type, responseState);\n      }\n    // Omitted close tags\n\n    case 'area':\n    case 'base':\n    case 'br':\n    case 'col':\n    case 'embed':\n    case 'hr':\n    case 'img':\n    case 'keygen':\n    case 'link':\n    case 'meta':\n    case 'param':\n    case 'source':\n    case 'track':\n    case 'wbr':\n      {\n        return pushSelfClosing(target, props, type, responseState);\n      }\n    // These are reserved SVG and MathML elements, that are never custom elements.\n    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n\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      {\n        return pushStartGenericElement(target, props, type, responseState);\n      }\n\n    case 'html':\n      {\n        if (formatContext.insertionMode === ROOT_HTML_MODE) {\n          // If we're rendering the html tag and we're at the root (i.e. not in foreignObject)\n          // then we also emit the DOCTYPE as part of the root content as a convenience for\n          // rendering the whole document.\n          target.push(DOCTYPE);\n        }\n\n        return pushStartGenericElement(target, props, type, responseState);\n      }\n\n    default:\n      {\n        if (type.indexOf('-') === -1 && typeof props.is !== 'string') {\n          // Generic element\n          return pushStartGenericElement(target, props, type, responseState);\n        } else {\n          // Custom element\n          return pushStartCustomElement(target, props, type, responseState);\n        }\n      }\n  }\n}\nvar endTag1 = stringToPrecomputedChunk('</');\nvar endTag2 = stringToPrecomputedChunk('>');\nfunction pushEndInstance(target, type, props) {\n  switch (type) {\n    // Omitted close tags\n    // TODO: Instead of repeating this switch we could try to pass a flag from above.\n    // That would require returning a tuple. Which might be ok if it gets inlined.\n    case 'area':\n    case 'base':\n    case 'br':\n    case 'col':\n    case 'embed':\n    case 'hr':\n    case 'img':\n    case 'input':\n    case 'keygen':\n    case 'link':\n    case 'meta':\n    case 'param':\n    case 'source':\n    case 'track':\n    case 'wbr':\n      {\n        // No close tag needed.\n        break;\n      }\n\n    default:\n      {\n        target.push(endTag1, stringToChunk(type), endTag2);\n      }\n  }\n}\nfunction writeCompletedRoot(destination, responseState) {\n  var bootstrapChunks = responseState.bootstrapChunks;\n  var i = 0;\n\n  for (; i < bootstrapChunks.length - 1; i++) {\n    writeChunk(destination, bootstrapChunks[i]);\n  }\n\n  if (i < bootstrapChunks.length) {\n    return writeChunkAndReturn(destination, bootstrapChunks[i]);\n  }\n\n  return true;\n} // Structural Nodes\n// A placeholder is a node inside a hidden partial tree that can be filled in later, but before\n// display. It's never visible to users. We use the template tag because it can be used in every\n// type of parent. <script> tags also work in every other tag except <colgroup>.\n\nvar placeholder1 = stringToPrecomputedChunk('<template id=\"');\nvar placeholder2 = stringToPrecomputedChunk('\"></template>');\nfunction writePlaceholder(destination, responseState, id) {\n  writeChunk(destination, placeholder1);\n  writeChunk(destination, responseState.placeholderPrefix);\n  var formattedID = stringToChunk(id.toString(16));\n  writeChunk(destination, formattedID);\n  return writeChunkAndReturn(destination, placeholder2);\n} // Suspense boundaries are encoded as comments.\n\nvar startCompletedSuspenseBoundary = stringToPrecomputedChunk('<!--$-->');\nvar startPendingSuspenseBoundary1 = stringToPrecomputedChunk('<!--$?--><template id=\"');\nvar startPendingSuspenseBoundary2 = stringToPrecomputedChunk('\"></template>');\nvar startClientRenderedSuspenseBoundary = stringToPrecomputedChunk('<!--$!-->');\nvar endSuspenseBoundary = stringToPrecomputedChunk('<!--/$-->');\nfunction writeStartCompletedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, startCompletedSuspenseBoundary);\n}\nfunction writeStartPendingSuspenseBoundary(destination, responseState, id) {\n  writeChunk(destination, startPendingSuspenseBoundary1);\n\n  if (id === null) {\n    throw new Error('An ID must have been assigned before we can complete the boundary.');\n  }\n\n  writeChunk(destination, id);\n  return writeChunkAndReturn(destination, startPendingSuspenseBoundary2);\n}\nfunction writeStartClientRenderedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary);\n}\nfunction writeEndCompletedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, endSuspenseBoundary);\n}\nfunction writeEndPendingSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, endSuspenseBoundary);\n}\nfunction writeEndClientRenderedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, endSuspenseBoundary);\n}\nvar startSegmentHTML = stringToPrecomputedChunk('<div hidden id=\"');\nvar startSegmentHTML2 = stringToPrecomputedChunk('\">');\nvar endSegmentHTML = stringToPrecomputedChunk('</div>');\nvar startSegmentSVG = stringToPrecomputedChunk('<svg aria-hidden=\"true\" style=\"display:none\" id=\"');\nvar startSegmentSVG2 = stringToPrecomputedChunk('\">');\nvar endSegmentSVG = stringToPrecomputedChunk('</svg>');\nvar startSegmentMathML = stringToPrecomputedChunk('<math aria-hidden=\"true\" style=\"display:none\" id=\"');\nvar startSegmentMathML2 = stringToPrecomputedChunk('\">');\nvar endSegmentMathML = stringToPrecomputedChunk('</math>');\nvar startSegmentTable = stringToPrecomputedChunk('<table hidden id=\"');\nvar startSegmentTable2 = stringToPrecomputedChunk('\">');\nvar endSegmentTable = stringToPrecomputedChunk('</table>');\nvar startSegmentTableBody = stringToPrecomputedChunk('<table hidden><tbody id=\"');\nvar startSegmentTableBody2 = stringToPrecomputedChunk('\">');\nvar endSegmentTableBody = stringToPrecomputedChunk('</tbody></table>');\nvar startSegmentTableRow = stringToPrecomputedChunk('<table hidden><tr id=\"');\nvar startSegmentTableRow2 = stringToPrecomputedChunk('\">');\nvar endSegmentTableRow = stringToPrecomputedChunk('</tr></table>');\nvar startSegmentColGroup = stringToPrecomputedChunk('<table hidden><colgroup id=\"');\nvar startSegmentColGroup2 = stringToPrecomputedChunk('\">');\nvar endSegmentColGroup = stringToPrecomputedChunk('</colgroup></table>');\nfunction writeStartSegment(destination, responseState, formatContext, id) {\n  switch (formatContext.insertionMode) {\n    case ROOT_HTML_MODE:\n    case HTML_MODE:\n      {\n        writeChunk(destination, startSegmentHTML);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentHTML2);\n      }\n\n    case SVG_MODE:\n      {\n        writeChunk(destination, startSegmentSVG);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentSVG2);\n      }\n\n    case MATHML_MODE:\n      {\n        writeChunk(destination, startSegmentMathML);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentMathML2);\n      }\n\n    case HTML_TABLE_MODE:\n      {\n        writeChunk(destination, startSegmentTable);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentTable2);\n      }\n    // TODO: For the rest of these, there will be extra wrapper nodes that never\n    // get deleted from the document. We need to delete the table too as part\n    // of the injected scripts. They are invisible though so it's not too terrible\n    // and it's kind of an edge case to suspend in a table. Totally supported though.\n\n    case HTML_TABLE_BODY_MODE:\n      {\n        writeChunk(destination, startSegmentTableBody);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentTableBody2);\n      }\n\n    case HTML_TABLE_ROW_MODE:\n      {\n        writeChunk(destination, startSegmentTableRow);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentTableRow2);\n      }\n\n    case HTML_COLGROUP_MODE:\n      {\n        writeChunk(destination, startSegmentColGroup);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentColGroup2);\n      }\n\n    default:\n      {\n        throw new Error('Unknown insertion mode. This is a bug in React.');\n      }\n  }\n}\nfunction writeEndSegment(destination, formatContext) {\n  switch (formatContext.insertionMode) {\n    case ROOT_HTML_MODE:\n    case HTML_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentHTML);\n      }\n\n    case SVG_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentSVG);\n      }\n\n    case MATHML_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentMathML);\n      }\n\n    case HTML_TABLE_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentTable);\n      }\n\n    case HTML_TABLE_BODY_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentTableBody);\n      }\n\n    case HTML_TABLE_ROW_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentTableRow);\n      }\n\n    case HTML_COLGROUP_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentColGroup);\n      }\n\n    default:\n      {\n        throw new Error('Unknown insertion mode. This is a bug in React.');\n      }\n  }\n} // Instruction Set\n// The following code is the source scripts that we then minify and inline below,\n// with renamed function names that we hope don't collide:\n// const COMMENT_NODE = 8;\n// const SUSPENSE_START_DATA = '$';\n// const SUSPENSE_END_DATA = '/$';\n// const SUSPENSE_PENDING_START_DATA = '$?';\n// const SUSPENSE_FALLBACK_START_DATA = '$!';\n//\n// function clientRenderBoundary(suspenseBoundaryID) {\n//   // Find the fallback's first element.\n//   const suspenseIdNode = document.getElementById(suspenseBoundaryID);\n//   if (!suspenseIdNode) {\n//     // The user must have already navigated away from this tree.\n//     // E.g. because the parent was hydrated.\n//     return;\n//   }\n//   // Find the boundary around the fallback. This is always the previous node.\n//   const suspenseNode = suspenseIdNode.previousSibling;\n//   // Tag it to be client rendered.\n//   suspenseNode.data = SUSPENSE_FALLBACK_START_DATA;\n//   // Tell React to retry it if the parent already hydrated.\n//   if (suspenseNode._reactRetry) {\n//     suspenseNode._reactRetry();\n//   }\n// }\n//\n// function completeBoundary(suspenseBoundaryID, contentID) {\n//   // Find the fallback's first element.\n//   const suspenseIdNode = document.getElementById(suspenseBoundaryID);\n//   const contentNode = document.getElementById(contentID);\n//   // We'll detach the content node so that regardless of what happens next we don't leave in the tree.\n//   // This might also help by not causing recalcing each time we move a child from here to the target.\n//   contentNode.parentNode.removeChild(contentNode);\n//   if (!suspenseIdNode) {\n//     // The user must have already navigated away from this tree.\n//     // E.g. because the parent was hydrated. That's fine there's nothing to do\n//     // but we have to make sure that we already deleted the container node.\n//     return;\n//   }\n//   // Find the boundary around the fallback. This is always the previous node.\n//   const suspenseNode = suspenseIdNode.previousSibling;\n//\n//   // Clear all the existing children. This is complicated because\n//   // there can be embedded Suspense boundaries in the fallback.\n//   // This is similar to clearSuspenseBoundary in ReactDOMHostConfig.\n//   // TODO: We could avoid this if we never emitted suspense boundaries in fallback trees.\n//   // They never hydrate anyway. However, currently we support incrementally loading the fallback.\n//   const parentInstance = suspenseNode.parentNode;\n//   let node = suspenseNode.nextSibling;\n//   let depth = 0;\n//   do {\n//     if (node && node.nodeType === COMMENT_NODE) {\n//       const data = node.data;\n//       if (data === SUSPENSE_END_DATA) {\n//         if (depth === 0) {\n//           break;\n//         } else {\n//           depth--;\n//         }\n//       } else if (\n//         data === SUSPENSE_START_DATA ||\n//         data === SUSPENSE_PENDING_START_DATA ||\n//         data === SUSPENSE_FALLBACK_START_DATA\n//       ) {\n//         depth++;\n//       }\n//     }\n//\n//     const nextNode = node.nextSibling;\n//     parentInstance.removeChild(node);\n//     node = nextNode;\n//   } while (node);\n//\n//   const endOfBoundary = node;\n//\n//   // Insert all the children from the contentNode between the start and end of suspense boundary.\n//   while (contentNode.firstChild) {\n//     parentInstance.insertBefore(contentNode.firstChild, endOfBoundary);\n//   }\n//   suspenseNode.data = SUSPENSE_START_DATA;\n//   if (suspenseNode._reactRetry) {\n//     suspenseNode._reactRetry();\n//   }\n// }\n//\n// function completeSegment(containerID, placeholderID) {\n//   const segmentContainer = document.getElementById(containerID);\n//   const placeholderNode = document.getElementById(placeholderID);\n//   // We always expect both nodes to exist here because, while we might\n//   // have navigated away from the main tree, we still expect the detached\n//   // tree to exist.\n//   segmentContainer.parentNode.removeChild(segmentContainer);\n//   while (segmentContainer.firstChild) {\n//     placeholderNode.parentNode.insertBefore(\n//       segmentContainer.firstChild,\n//       placeholderNode,\n//     );\n//   }\n//   placeholderNode.parentNode.removeChild(placeholderNode);\n// }\n\nvar completeSegmentFunction = 'function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)}';\nvar completeBoundaryFunction = 'function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if(\"/$\"===d)if(0===e)break;else e--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data=\"$\";a._reactRetry&&a._reactRetry()}}';\nvar clientRenderFunction = 'function $RX(a){if(a=document.getElementById(a))a=a.previousSibling,a.data=\"$!\",a._reactRetry&&a._reactRetry()}';\nvar completeSegmentScript1Full = stringToPrecomputedChunk(completeSegmentFunction + ';$RS(\"');\nvar completeSegmentScript1Partial = stringToPrecomputedChunk('$RS(\"');\nvar completeSegmentScript2 = stringToPrecomputedChunk('\",\"');\nvar completeSegmentScript3 = stringToPrecomputedChunk('\")</script>');\nfunction writeCompletedSegmentInstruction(destination, responseState, contentSegmentID) {\n  writeChunk(destination, responseState.startInlineScript);\n\n  if (!responseState.sentCompleteSegmentFunction) {\n    // The first time we write this, we'll need to include the full implementation.\n    responseState.sentCompleteSegmentFunction = true;\n    writeChunk(destination, completeSegmentScript1Full);\n  } else {\n    // Future calls can just reuse the same function.\n    writeChunk(destination, completeSegmentScript1Partial);\n  }\n\n  writeChunk(destination, responseState.segmentPrefix);\n  var formattedID = stringToChunk(contentSegmentID.toString(16));\n  writeChunk(destination, formattedID);\n  writeChunk(destination, completeSegmentScript2);\n  writeChunk(destination, responseState.placeholderPrefix);\n  writeChunk(destination, formattedID);\n  return writeChunkAndReturn(destination, completeSegmentScript3);\n}\nvar completeBoundaryScript1Full = stringToPrecomputedChunk(completeBoundaryFunction + ';$RC(\"');\nvar completeBoundaryScript1Partial = stringToPrecomputedChunk('$RC(\"');\nvar completeBoundaryScript2 = stringToPrecomputedChunk('\",\"');\nvar completeBoundaryScript3 = stringToPrecomputedChunk('\")</script>');\nfunction writeCompletedBoundaryInstruction(destination, responseState, boundaryID, contentSegmentID) {\n  writeChunk(destination, responseState.startInlineScript);\n\n  if (!responseState.sentCompleteBoundaryFunction) {\n    // The first time we write this, we'll need to include the full implementation.\n    responseState.sentCompleteBoundaryFunction = true;\n    writeChunk(destination, completeBoundaryScript1Full);\n  } else {\n    // Future calls can just reuse the same function.\n    writeChunk(destination, completeBoundaryScript1Partial);\n  }\n\n  if (boundaryID === null) {\n    throw new Error('An ID must have been assigned before we can complete the boundary.');\n  }\n\n  var formattedContentID = stringToChunk(contentSegmentID.toString(16));\n  writeChunk(destination, boundaryID);\n  writeChunk(destination, completeBoundaryScript2);\n  writeChunk(destination, responseState.segmentPrefix);\n  writeChunk(destination, formattedContentID);\n  return writeChunkAndReturn(destination, completeBoundaryScript3);\n}\nvar clientRenderScript1Full = stringToPrecomputedChunk(clientRenderFunction + ';$RX(\"');\nvar clientRenderScript1Partial = stringToPrecomputedChunk('$RX(\"');\nvar clientRenderScript2 = stringToPrecomputedChunk('\")</script>');\nfunction writeClientRenderBoundaryInstruction(destination, responseState, boundaryID) {\n  writeChunk(destination, responseState.startInlineScript);\n\n  if (!responseState.sentClientRenderFunction) {\n    // The first time we write this, we'll need to include the full implementation.\n    responseState.sentClientRenderFunction = true;\n    writeChunk(destination, clientRenderScript1Full);\n  } else {\n    // Future calls can just reuse the same function.\n    writeChunk(destination, clientRenderScript1Partial);\n  }\n\n  if (boundaryID === null) {\n    throw new Error('An ID must have been assigned before we can complete the boundary.');\n  }\n\n  writeChunk(destination, boundaryID);\n  return writeChunkAndReturn(destination, clientRenderScript2);\n}\n\nvar assign = Object.assign;\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_LEGACY_HIDDEN_TYPE = Symbol.for('react.legacy_hidden');\nvar REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED = Symbol.for('react.default_value');\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\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\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\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 warnedAboutMissingGetChildContext;\n\n{\n  warnedAboutMissingGetChildContext = {};\n}\n\nvar emptyContextObject = {};\n\n{\n  Object.freeze(emptyContextObject);\n}\n\nfunction getMaskedContext(type, unmaskedContext) {\n  {\n    var contextTypes = type.contextTypes;\n\n    if (!contextTypes) {\n      return emptyContextObject;\n    }\n\n    var context = {};\n\n    for (var key in contextTypes) {\n      context[key] = unmaskedContext[key];\n    }\n\n    {\n      var name = getComponentNameFromType(type) || 'Unknown';\n      checkPropTypes(contextTypes, context, 'context', name);\n    }\n\n    return context;\n  }\n}\nfunction processChildContext(instance, type, parentContext, childContextTypes) {\n  {\n    // 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    if (typeof instance.getChildContext !== 'function') {\n      {\n        var componentName = getComponentNameFromType(type) || '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((getComponentNameFromType(type) || 'Unknown') + \".getChildContext(): key \\\"\" + contextKey + \"\\\" is not defined in childContextTypes.\");\n      }\n    }\n\n    {\n      var name = getComponentNameFromType(type) || 'Unknown';\n      checkPropTypes(childContextTypes, childContext, 'child context', name);\n    }\n\n    return assign({}, parentContext, childContext);\n  }\n}\n\nvar rendererSigil;\n\n{\n  // Use this to detect multiple renderers using the same context\n  rendererSigil = {};\n} // Used to store the parent path of all context overrides in a shared linked list.\n// Forming a reverse tree.\n\n\nvar rootContextSnapshot = null; // We assume that this runtime owns the \"current\" field on all ReactContext instances.\n// This global (actually thread local) state represents what state all those \"current\",\n// fields are currently in.\n\nvar currentActiveSnapshot = null;\n\nfunction popNode(prev) {\n  {\n    prev.context._currentValue = prev.parentValue;\n  }\n}\n\nfunction pushNode(next) {\n  {\n    next.context._currentValue = next.value;\n  }\n}\n\nfunction popToNearestCommonAncestor(prev, next) {\n  if (prev === next) ; else {\n    popNode(prev);\n    var parentPrev = prev.parent;\n    var parentNext = next.parent;\n\n    if (parentPrev === null) {\n      if (parentNext !== null) {\n        throw new Error('The stacks must reach the root at the same time. This is a bug in React.');\n      }\n    } else {\n      if (parentNext === null) {\n        throw new Error('The stacks must reach the root at the same time. This is a bug in React.');\n      }\n\n      popToNearestCommonAncestor(parentPrev, parentNext);\n    } // On the way back, we push the new ones that weren't common.\n\n\n    pushNode(next);\n  }\n}\n\nfunction popAllPrevious(prev) {\n  popNode(prev);\n  var parentPrev = prev.parent;\n\n  if (parentPrev !== null) {\n    popAllPrevious(parentPrev);\n  }\n}\n\nfunction pushAllNext(next) {\n  var parentNext = next.parent;\n\n  if (parentNext !== null) {\n    pushAllNext(parentNext);\n  }\n\n  pushNode(next);\n}\n\nfunction popPreviousToCommonLevel(prev, next) {\n  popNode(prev);\n  var parentPrev = prev.parent;\n\n  if (parentPrev === null) {\n    throw new Error('The depth must equal at least at zero before reaching the root. This is a bug in React.');\n  }\n\n  if (parentPrev.depth === next.depth) {\n    // We found the same level. Now we just need to find a shared ancestor.\n    popToNearestCommonAncestor(parentPrev, next);\n  } else {\n    // We must still be deeper.\n    popPreviousToCommonLevel(parentPrev, next);\n  }\n}\n\nfunction popNextToCommonLevel(prev, next) {\n  var parentNext = next.parent;\n\n  if (parentNext === null) {\n    throw new Error('The depth must equal at least at zero before reaching the root. This is a bug in React.');\n  }\n\n  if (prev.depth === parentNext.depth) {\n    // We found the same level. Now we just need to find a shared ancestor.\n    popToNearestCommonAncestor(prev, parentNext);\n  } else {\n    // We must still be deeper.\n    popNextToCommonLevel(prev, parentNext);\n  }\n\n  pushNode(next);\n} // Perform context switching to the new snapshot.\n// To make it cheap to read many contexts, while not suspending, we make the switch eagerly by\n// updating all the context's current values. That way reads, always just read the current value.\n// At the cost of updating contexts even if they're never read by this subtree.\n\n\nfunction switchContext(newSnapshot) {\n  // The basic algorithm we need to do is to pop back any contexts that are no longer on the stack.\n  // We also need to update any new contexts that are now on the stack with the deepest value.\n  // The easiest way to update new contexts is to just reapply them in reverse order from the\n  // perspective of the backpointers. To avoid allocating a lot when switching, we use the stack\n  // for that. Therefore this algorithm is recursive.\n  // 1) First we pop which ever snapshot tree was deepest. Popping old contexts as we go.\n  // 2) Then we find the nearest common ancestor from there. Popping old contexts as we go.\n  // 3) Then we reapply new contexts on the way back up the stack.\n  var prev = currentActiveSnapshot;\n  var next = newSnapshot;\n\n  if (prev !== next) {\n    if (prev === null) {\n      // $FlowFixMe: This has to be non-null since it's not equal to prev.\n      pushAllNext(next);\n    } else if (next === null) {\n      popAllPrevious(prev);\n    } else if (prev.depth === next.depth) {\n      popToNearestCommonAncestor(prev, next);\n    } else if (prev.depth > next.depth) {\n      popPreviousToCommonLevel(prev, next);\n    } else {\n      popNextToCommonLevel(prev, next);\n    }\n\n    currentActiveSnapshot = next;\n  }\n}\nfunction pushProvider(context, nextValue) {\n  var prevValue;\n\n  {\n    prevValue = context._currentValue;\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\n  var prevNode = currentActiveSnapshot;\n  var newNode = {\n    parent: prevNode,\n    depth: prevNode === null ? 0 : prevNode.depth + 1,\n    context: context,\n    parentValue: prevValue,\n    value: nextValue\n  };\n  currentActiveSnapshot = newNode;\n  return newNode;\n}\nfunction popProvider(context) {\n  var prevSnapshot = currentActiveSnapshot;\n\n  if (prevSnapshot === null) {\n    throw new Error('Tried to pop a Context at the root of the app. This is a bug in React.');\n  }\n\n  {\n    if (prevSnapshot.context !== context) {\n      error('The parent context is not the expected context. This is probably a bug in React.');\n    }\n  }\n\n  {\n    var value = prevSnapshot.parentValue;\n\n    if (value === REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED) {\n      prevSnapshot.context._currentValue = prevSnapshot.context._defaultValue;\n    } else {\n      prevSnapshot.context._currentValue = value;\n    }\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\n  return currentActiveSnapshot = prevSnapshot.parent;\n}\nfunction getActiveContext() {\n  return currentActiveSnapshot;\n}\nfunction readContext(context) {\n  var value =  context._currentValue ;\n  return value;\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 set(key, value) {\n  key._reactInternals = value;\n}\n\nvar didWarnAboutNoopUpdateForComponent = {};\nvar didWarnAboutDeprecatedWillMount = {};\nvar didWarnAboutUninitializedState;\nvar didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;\nvar didWarnAboutLegacyLifecyclesAndDerivedState;\nvar didWarnAboutUndefinedDerivedState;\nvar warnOnUndefinedDerivedState;\nvar warnOnInvalidCallback;\nvar didWarnAboutDirectlyAssigningPropsToState;\nvar didWarnAboutContextTypeAndContextTypes;\nvar didWarnAboutInvalidateContextType;\n\n{\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  };\n}\n\nfunction warnNoop(publicInstance, callerName) {\n  {\n    var _constructor = publicInstance.constructor;\n    var componentName = _constructor && getComponentNameFromType(_constructor) || 'ReactClass';\n    var warningKey = componentName + '.' + callerName;\n\n    if (didWarnAboutNoopUpdateForComponent[warningKey]) {\n      return;\n    }\n\n    error('%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op.\\n\\nPlease check the code for the %s component.', callerName, callerName, componentName);\n\n    didWarnAboutNoopUpdateForComponent[warningKey] = true;\n  }\n}\n\nvar classComponentUpdater = {\n  isMounted: function (inst) {\n    return false;\n  },\n  enqueueSetState: function (inst, payload, callback) {\n    var internals = get(inst);\n\n    if (internals.queue === null) {\n      warnNoop(inst, 'setState');\n    } else {\n      internals.queue.push(payload);\n\n      {\n        if (callback !== undefined && callback !== null) {\n          warnOnInvalidCallback(callback, 'setState');\n        }\n      }\n    }\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    var internals = get(inst);\n    internals.replace = true;\n    internals.queue = [payload];\n\n    {\n      if (callback !== undefined && callback !== null) {\n        warnOnInvalidCallback(callback, 'setState');\n      }\n    }\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    var internals = get(inst);\n\n    if (internals.queue === null) {\n      warnNoop(inst, 'forceUpdate');\n    } else {\n      {\n        if (callback !== undefined && callback !== null) {\n          warnOnInvalidCallback(callback, 'setState');\n        }\n      }\n    }\n  }\n};\n\nfunction applyDerivedStateFromProps(instance, ctor, getDerivedStateFromProps, prevState, nextProps) {\n  var partialState = getDerivedStateFromProps(nextProps, prevState);\n\n  {\n    warnOnUndefinedDerivedState(ctor, partialState);\n  } // Merge the partial state and the previous state.\n\n\n  var newState = partialState === null || partialState === undefined ? prevState : assign({}, prevState, partialState);\n  return newState;\n}\n\nfunction constructClassInstance(ctor, props, maskedLegacyContext) {\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    context = maskedLegacyContext;\n  }\n\n  var instance = new ctor(props, context);\n\n  {\n    if (typeof ctor.getDerivedStateFromProps === 'function' && (instance.state === null || instance.state === undefined)) {\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  }\n\n  return instance;\n}\n\nfunction checkClassInstance(instance, ctor, newProps) {\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 callComponentWillMount(type, instance) {\n  var oldState = instance.state;\n\n  if (typeof instance.componentWillMount === 'function') {\n    {\n      if ( instance.componentWillMount.__suppressDeprecationWarning !== true) {\n        var componentName = getComponentNameFromType(type) || 'Unknown';\n\n        if (!didWarnAboutDeprecatedWillMount[componentName]) {\n          warn( // keep this warning in sync with ReactStrictModeWarning.js\n          'componentWillMount has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move code from componentWillMount to componentDidMount (preferred in most cases) ' + 'or the constructor.\\n' + '\\nPlease update the following components: %s', componentName);\n\n          didWarnAboutDeprecatedWillMount[componentName] = true;\n        }\n      }\n    }\n\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.', getComponentNameFromType(type) || 'Component');\n    }\n\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n  }\n}\n\nfunction processUpdateQueue(internalInstance, inst, props, maskedLegacyContext) {\n  if (internalInstance.queue !== null && internalInstance.queue.length > 0) {\n    var oldQueue = internalInstance.queue;\n    var oldReplace = internalInstance.replace;\n    internalInstance.queue = null;\n    internalInstance.replace = false;\n\n    if (oldReplace && oldQueue.length === 1) {\n      inst.state = oldQueue[0];\n    } else {\n      var nextState = oldReplace ? oldQueue[0] : inst.state;\n      var dontMutate = true;\n\n      for (var i = oldReplace ? 1 : 0; i < oldQueue.length; i++) {\n        var partial = oldQueue[i];\n        var partialState = typeof partial === 'function' ? partial.call(inst, nextState, props, maskedLegacyContext) : partial;\n\n        if (partialState != null) {\n          if (dontMutate) {\n            dontMutate = false;\n            nextState = assign({}, nextState, partialState);\n          } else {\n            assign(nextState, partialState);\n          }\n        }\n      }\n\n      inst.state = nextState;\n    }\n  } else {\n    internalInstance.queue = null;\n  }\n} // Invokes the mount life-cycles on a previously never rendered instance.\n\n\nfunction mountClassInstance(instance, ctor, newProps, maskedLegacyContext) {\n  {\n    checkClassInstance(instance, ctor, newProps);\n  }\n\n  var initialState = instance.state !== undefined ? instance.state : null;\n  instance.updater = classComponentUpdater;\n  instance.props = newProps;\n  instance.state = initialState; // We don't bother initializing the refs object on the server, since we're not going to resolve them anyway.\n  // The internal instance will be used to manage updates that happen during this mount.\n\n  var internalInstance = {\n    queue: [],\n    replace: false\n  };\n  set(instance, internalInstance);\n  var contextType = ctor.contextType;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    instance.context = readContext(contextType);\n  } else {\n    instance.context = maskedLegacyContext;\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\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    instance.state = applyDerivedStateFromProps(instance, ctor, getDerivedStateFromProps, initialState, newProps);\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(ctor, instance); // If we had additional state updates during this life-cycle, let's\n    // process them now.\n\n    processUpdateQueue(internalInstance, instance, newProps, maskedLegacyContext);\n  }\n}\n\n// Ids are base 32 strings whose binary representation corresponds to the\n// position of a node in a tree.\n// Every time the tree forks into multiple children, we add additional bits to\n// the left of the sequence that represent the position of the child within the\n// current level of children.\n//\n//      00101       00010001011010101\n//      \u2570\u2500\u252C\u2500\u256F       \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256F\n//   Fork 5 of 20       Parent id\n//\n// The leading 0s are important. In the above example, you only need 3 bits to\n// represent slot 5. However, you need 5 bits to represent all the forks at\n// the current level, so we must account for the empty bits at the end.\n//\n// For this same reason, slots are 1-indexed instead of 0-indexed. Otherwise,\n// the zeroth id at a level would be indistinguishable from its parent.\n//\n// If a node has only one child, and does not materialize an id (i.e. does not\n// contain a useId hook), then we don't need to allocate any space in the\n// sequence. It's treated as a transparent indirection. For example, these two\n// trees produce the same ids:\n//\n// <>                          <>\n//   <Indirection>               <A />\n//     <A />                     <B />\n//   </Indirection>            </>\n//   <B />\n// </>\n//\n// However, we cannot skip any node that materializes an id. Otherwise, a parent\n// id that does not fork would be indistinguishable from its child id. For\n// example, this tree does not fork, but the parent and child must have\n// different ids.\n//\n// <Parent>\n//   <Child />\n// </Parent>\n//\n// To handle this scenario, every time we materialize an id, we allocate a\n// new level with a single slot. You can think of this as a fork with only one\n// prong, or an array of children with length 1.\n//\n// It's possible for the size of the sequence to exceed 32 bits, the max\n// size for bitwise operations. When this happens, we make more room by\n// converting the right part of the id to a string and storing it in an overflow\n// variable. We use a base 32 string representation, because 32 is the largest\n// power of 2 that is supported by toString(). We want the base to be large so\n// that the resulting ids are compact, and we want the base to be a power of 2\n// because every log2(base) bits corresponds to a single character, i.e. every\n// log2(32) = 5 bits. That means we can lop bits off the end 5 at a time without\n// affecting the final result.\nvar emptyTreeContext = {\n  id: 1,\n  overflow: ''\n};\nfunction getTreeId(context) {\n  var overflow = context.overflow;\n  var idWithLeadingBit = context.id;\n  var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit);\n  return id.toString(32) + overflow;\n}\nfunction pushTreeContext(baseContext, totalChildren, index) {\n  var baseIdWithLeadingBit = baseContext.id;\n  var baseOverflow = baseContext.overflow; // 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    return {\n      id: 1 << restOfLength | id,\n      overflow: overflow\n    };\n  } else {\n    // Normal path\n    var newBits = slot << baseLength;\n\n    var _id = newBits | baseId;\n\n    var _overflow = baseOverflow;\n    return {\n      id: 1 << length | _id,\n      overflow: _overflow\n    };\n  }\n}\n\nfunction getBitLength(number) {\n  return 32 - clz32(number);\n}\n\nfunction getLeadingBit(id) {\n  return 1 << getBitLength(id) - 1;\n} // TODO: Math.clz32 is supported in Node 12+. Maybe we can drop the fallback.\n\n\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/**\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 currentlyRenderingComponent = null;\nvar currentlyRenderingTask = null;\nvar firstWorkInProgressHook = null;\nvar workInProgressHook = null; // Whether the work-in-progress hook is a re-rendered hook\n\nvar isReRender = false; // Whether an update was scheduled during the currently executing render pass.\n\nvar didScheduleRenderPhaseUpdate = false; // Counts the number of useId hooks in this component\n\nvar localIdCounter = 0; // Lazily created map of render-phase updates\n\nvar renderPhaseUpdates = null; // Counter to prevent infinite loops.\n\nvar numberOfReRenders = 0;\nvar RE_RENDER_LIMIT = 25;\nvar isInHookUserCodeInDev = false; // In DEV, this is the name of the currently executing primitive hook\n\nvar currentHookNameInDev;\n\nfunction resolveCurrentlyRenderingComponent() {\n  if (currentlyRenderingComponent === null) {\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\n  {\n    if (isInHookUserCodeInDev) {\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\n  return currentlyRenderingComponent;\n}\n\nfunction areHookInputsEqual(nextDeps, prevDeps) {\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, \"[\" + nextDeps.join(', ') + \"]\", \"[\" + prevDeps.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 createHook() {\n  if (numberOfReRenders > 0) {\n    throw new Error('Rendered more hooks than during the previous render');\n  }\n\n  return {\n    memoizedState: null,\n    queue: null,\n    next: null\n  };\n}\n\nfunction createWorkInProgressHook() {\n  if (workInProgressHook === null) {\n    // This is the first hook in the list\n    if (firstWorkInProgressHook === null) {\n      isReRender = false;\n      firstWorkInProgressHook = workInProgressHook = createHook();\n    } else {\n      // There's already a work-in-progress. Reuse it.\n      isReRender = true;\n      workInProgressHook = firstWorkInProgressHook;\n    }\n  } else {\n    if (workInProgressHook.next === null) {\n      isReRender = false; // Append to the end of the list\n\n      workInProgressHook = workInProgressHook.next = createHook();\n    } else {\n      // There's already a work-in-progress. Reuse it.\n      isReRender = true;\n      workInProgressHook = workInProgressHook.next;\n    }\n  }\n\n  return workInProgressHook;\n}\n\nfunction prepareToUseHooks(task, componentIdentity) {\n  currentlyRenderingComponent = componentIdentity;\n  currentlyRenderingTask = task;\n\n  {\n    isInHookUserCodeInDev = false;\n  } // The following should have already been reset\n  // didScheduleRenderPhaseUpdate = false;\n  // localIdCounter = 0;\n  // firstWorkInProgressHook = null;\n  // numberOfReRenders = 0;\n  // renderPhaseUpdates = null;\n  // workInProgressHook = null;\n\n\n  localIdCounter = 0;\n}\nfunction finishHooks(Component, props, children, refOrContext) {\n  // This must be called after every function component to prevent hooks from\n  // being used in classes.\n  while (didScheduleRenderPhaseUpdate) {\n    // Updates were scheduled during the render phase. They are stored in\n    // the `renderPhaseUpdates` map. Call the component again, reusing the\n    // work-in-progress hooks and applying the additional updates on top. Keep\n    // restarting until no more updates are scheduled.\n    didScheduleRenderPhaseUpdate = false;\n    localIdCounter = 0;\n    numberOfReRenders += 1; // Start over from the beginning of the list\n\n    workInProgressHook = null;\n    children = Component(props, refOrContext);\n  }\n\n  resetHooksState();\n  return children;\n}\nfunction checkDidRenderIdHook() {\n  // This should be called immediately after every finishHooks call.\n  // Conceptually, it's part of the return value of finishHooks; it's only a\n  // separate function to avoid using an array tuple.\n  var didRenderIdHook = localIdCounter !== 0;\n  return didRenderIdHook;\n} // Reset the internal hooks state if an error occurs while rendering a component\n\nfunction resetHooksState() {\n  {\n    isInHookUserCodeInDev = false;\n  }\n\n  currentlyRenderingComponent = null;\n  currentlyRenderingTask = null;\n  didScheduleRenderPhaseUpdate = false;\n  firstWorkInProgressHook = null;\n  numberOfReRenders = 0;\n  renderPhaseUpdates = null;\n  workInProgressHook = null;\n}\n\nfunction readContext$1(context) {\n  {\n    if (isInHookUserCodeInDev) {\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  return readContext(context);\n}\n\nfunction useContext(context) {\n  {\n    currentHookNameInDev = 'useContext';\n  }\n\n  resolveCurrentlyRenderingComponent();\n  return readContext(context);\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 useState(initialState) {\n  {\n    currentHookNameInDev = 'useState';\n  }\n\n  return useReducer(basicStateReducer, // useReducer has a special case to support lazy useState initializers\n  initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n  {\n    if (reducer !== basicStateReducer) {\n      currentHookNameInDev = 'useReducer';\n    }\n  }\n\n  currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n  workInProgressHook = createWorkInProgressHook();\n\n  if (isReRender) {\n    // This is a re-render. Apply the new render phase updates to the previous\n    // current hook.\n    var queue = workInProgressHook.queue;\n    var dispatch = queue.dispatch;\n\n    if (renderPhaseUpdates !== null) {\n      // Render phase updates are stored in a map of queue -> linked list\n      var firstRenderPhaseUpdate = renderPhaseUpdates.get(queue);\n\n      if (firstRenderPhaseUpdate !== undefined) {\n        renderPhaseUpdates.delete(queue);\n        var newState = workInProgressHook.memoizedState;\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\n          {\n            isInHookUserCodeInDev = true;\n          }\n\n          newState = reducer(newState, action);\n\n          {\n            isInHookUserCodeInDev = false;\n          }\n\n          update = update.next;\n        } while (update !== null);\n\n        workInProgressHook.memoizedState = newState;\n        return [newState, dispatch];\n      }\n    }\n\n    return [workInProgressHook.memoizedState, dispatch];\n  } else {\n    {\n      isInHookUserCodeInDev = true;\n    }\n\n    var initialState;\n\n    if (reducer === basicStateReducer) {\n      // Special case for `useState`.\n      initialState = typeof initialArg === 'function' ? initialArg() : initialArg;\n    } else {\n      initialState = init !== undefined ? init(initialArg) : initialArg;\n    }\n\n    {\n      isInHookUserCodeInDev = false;\n    }\n\n    workInProgressHook.memoizedState = initialState;\n\n    var _queue = workInProgressHook.queue = {\n      last: null,\n      dispatch: null\n    };\n\n    var _dispatch = _queue.dispatch = dispatchAction.bind(null, currentlyRenderingComponent, _queue);\n\n    return [workInProgressHook.memoizedState, _dispatch];\n  }\n}\n\nfunction useMemo(nextCreate, deps) {\n  currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n  workInProgressHook = createWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n\n  if (workInProgressHook !== null) {\n    var prevState = workInProgressHook.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\n  {\n    isInHookUserCodeInDev = true;\n  }\n\n  var nextValue = nextCreate();\n\n  {\n    isInHookUserCodeInDev = false;\n  }\n\n  workInProgressHook.memoizedState = [nextValue, nextDeps];\n  return nextValue;\n}\n\nfunction useRef(initialValue) {\n  currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n  workInProgressHook = createWorkInProgressHook();\n  var previousRef = workInProgressHook.memoizedState;\n\n  if (previousRef === null) {\n    var ref = {\n      current: initialValue\n    };\n\n    {\n      Object.seal(ref);\n    }\n\n    workInProgressHook.memoizedState = ref;\n    return ref;\n  } else {\n    return previousRef;\n  }\n}\n\nfunction useLayoutEffect(create, inputs) {\n  {\n    currentHookNameInDev = 'useLayoutEffect';\n\n    error('useLayoutEffect does nothing on the server, because its effect cannot ' + \"be encoded into the server renderer's output format. This will lead \" + 'to a mismatch between the initial, non-hydrated UI and the intended ' + 'UI. To avoid this, useLayoutEffect should only be used in ' + 'components that render exclusively on the client. ' + 'See https://reactjs.org/link/uselayouteffect-ssr for common fixes.');\n  }\n}\n\nfunction dispatchAction(componentIdentity, queue, action) {\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  if (componentIdentity === currentlyRenderingComponent) {\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    didScheduleRenderPhaseUpdate = true;\n    var update = {\n      action: action,\n      next: null\n    };\n\n    if (renderPhaseUpdates === null) {\n      renderPhaseUpdates = new Map();\n    }\n\n    var firstRenderPhaseUpdate = renderPhaseUpdates.get(queue);\n\n    if (firstRenderPhaseUpdate === undefined) {\n      renderPhaseUpdates.set(queue, update);\n    } else {\n      // Append the update to the end of the list.\n      var lastRenderPhaseUpdate = firstRenderPhaseUpdate;\n\n      while (lastRenderPhaseUpdate.next !== null) {\n        lastRenderPhaseUpdate = lastRenderPhaseUpdate.next;\n      }\n\n      lastRenderPhaseUpdate.next = update;\n    }\n  }\n}\n\nfunction useCallback(callback, deps) {\n  return useMemo(function () {\n    return callback;\n  }, deps);\n} // TODO Decide on how to implement this hook for server rendering.\n// If a mutation occurs during render, consider triggering a Suspense boundary\n// and falling back to client rendering.\n\nfunction useMutableSource(source, getSnapshot, subscribe) {\n  resolveCurrentlyRenderingComponent();\n  return getSnapshot(source._source);\n}\n\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\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  return getServerSnapshot();\n}\n\nfunction useDeferredValue(value) {\n  resolveCurrentlyRenderingComponent();\n  return value;\n}\n\nfunction unsupportedStartTransition() {\n  throw new Error('startTransition cannot be called during server rendering.');\n}\n\nfunction useTransition() {\n  resolveCurrentlyRenderingComponent();\n  return [false, unsupportedStartTransition];\n}\n\nfunction useId() {\n  var task = currentlyRenderingTask;\n  var treeId = getTreeId(task.treeContext);\n  var responseState = currentResponseState;\n\n  if (responseState === null) {\n    throw new Error('Invalid hook call. Hooks can only be called inside of the body of a function component.');\n  }\n\n  var localId = localIdCounter++;\n  return makeId(responseState, treeId, localId);\n}\n\nfunction noop() {}\n\nvar Dispatcher = {\n  readContext: readContext$1,\n  useContext: useContext,\n  useMemo: useMemo,\n  useReducer: useReducer,\n  useRef: useRef,\n  useState: useState,\n  useInsertionEffect: noop,\n  useLayoutEffect: useLayoutEffect,\n  useCallback: useCallback,\n  // useImperativeHandle is not run in the server environment\n  useImperativeHandle: noop,\n  // Effects are not run in the server environment.\n  useEffect: noop,\n  // Debugging effect\n  useDebugValue: noop,\n  useDeferredValue: useDeferredValue,\n  useTransition: useTransition,\n  useId: useId,\n  // Subscriptions are not setup in a server environment.\n  useMutableSource: useMutableSource,\n  useSyncExternalStore: useSyncExternalStore\n};\n\nvar currentResponseState = null;\nfunction setCurrentResponseState(responseState) {\n  currentResponseState = responseState;\n}\n\nfunction getStackByComponentStackNode(componentStack) {\n  try {\n    var info = '';\n    var node = componentStack;\n\n    do {\n      switch (node.tag) {\n        case 0:\n          info += describeBuiltInComponentFrame(node.type, null, null);\n          break;\n\n        case 1:\n          info += describeFunctionComponentFrame(node.type, null, null);\n          break;\n\n        case 2:\n          info += describeClassComponentFrame(node.type, null, null);\n          break;\n      }\n\n      node = node.parent;\n    } while (node);\n\n    return info;\n  } catch (x) {\n    return '\\nError generating stack: ' + x.message + '\\n' + x.stack;\n  }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\nvar PENDING = 0;\nvar COMPLETED = 1;\nvar FLUSHED = 2;\nvar ABORTED = 3;\nvar ERRORED = 4;\nvar OPEN = 0;\nvar CLOSING = 1;\nvar CLOSED = 2;\n// This is a default heuristic for how to split up the HTML content into progressive\n// loading. Our goal is to be able to display additional new content about every 500ms.\n// Faster than that is unnecessary and should be throttled on the client. It also\n// adds unnecessary overhead to do more splits. We don't know if it's a higher or lower\n// end device but higher end suffer less from the overhead than lower end does from\n// not getting small enough pieces. We error on the side of low end.\n// We base this on low end 3G speeds which is about 500kbits per second. We assume\n// that there can be a reasonable drop off from max bandwidth which leaves you with\n// as little as 80%. We can receive half of that each 500ms - at best. In practice,\n// a little bandwidth is lost to processing and contention - e.g. CSS and images that\n// are downloaded along with the main content. So we estimate about half of that to be\n// the lower end throughput. In other words, we expect that you can at least show\n// about 12.5kb of content per 500ms. Not counting starting latency for the first\n// paint.\n// 500 * 1024 / 8 * .8 * 0.5 / 2\nvar DEFAULT_PROGRESSIVE_CHUNK_SIZE = 12800;\n\nfunction defaultErrorHandler(error) {\n  console['error'](error); // Don't transform to our wrapper\n}\n\nfunction noop$1() {}\n\nfunction createRequest(children, responseState, rootFormatContext, progressiveChunkSize, onError, onAllReady, onShellReady, onShellError, onFatalError) {\n  var pingedTasks = [];\n  var abortSet = new Set();\n  var request = {\n    destination: null,\n    responseState: responseState,\n    progressiveChunkSize: progressiveChunkSize === undefined ? DEFAULT_PROGRESSIVE_CHUNK_SIZE : progressiveChunkSize,\n    status: OPEN,\n    fatalError: null,\n    nextSegmentId: 0,\n    allPendingTasks: 0,\n    pendingRootTasks: 0,\n    completedRootSegment: null,\n    abortableTasks: abortSet,\n    pingedTasks: pingedTasks,\n    clientRenderedBoundaries: [],\n    completedBoundaries: [],\n    partialBoundaries: [],\n    onError: onError === undefined ? defaultErrorHandler : onError,\n    onAllReady: onAllReady === undefined ? noop$1 : onAllReady,\n    onShellReady: onShellReady === undefined ? noop$1 : onShellReady,\n    onShellError: onShellError === undefined ? noop$1 : onShellError,\n    onFatalError: onFatalError === undefined ? noop$1 : onFatalError\n  }; // This segment represents the root fallback.\n\n  var rootSegment = createPendingSegment(request, 0, null, rootFormatContext); // There is no parent so conceptually, we're unblocked to flush this segment.\n\n  rootSegment.parentFlushed = true;\n  var rootTask = createTask(request, children, null, rootSegment, abortSet, emptyContextObject, rootContextSnapshot, emptyTreeContext);\n  pingedTasks.push(rootTask);\n  return request;\n}\n\nfunction pingTask(request, task) {\n  var pingedTasks = request.pingedTasks;\n  pingedTasks.push(task);\n\n  if (pingedTasks.length === 1) {\n    scheduleWork(function () {\n      return performWork(request);\n    });\n  }\n}\n\nfunction createSuspenseBoundary(request, fallbackAbortableTasks) {\n  return {\n    id: UNINITIALIZED_SUSPENSE_BOUNDARY_ID,\n    rootSegmentID: -1,\n    parentFlushed: false,\n    pendingTasks: 0,\n    forceClientRender: false,\n    completedSegments: [],\n    byteSize: 0,\n    fallbackAbortableTasks: fallbackAbortableTasks\n  };\n}\n\nfunction createTask(request, node, blockedBoundary, blockedSegment, abortSet, legacyContext, context, treeContext) {\n  request.allPendingTasks++;\n\n  if (blockedBoundary === null) {\n    request.pendingRootTasks++;\n  } else {\n    blockedBoundary.pendingTasks++;\n  }\n\n  var task = {\n    node: node,\n    ping: function () {\n      return pingTask(request, task);\n    },\n    blockedBoundary: blockedBoundary,\n    blockedSegment: blockedSegment,\n    abortSet: abortSet,\n    legacyContext: legacyContext,\n    context: context,\n    treeContext: treeContext\n  };\n\n  {\n    task.componentStack = null;\n  }\n\n  abortSet.add(task);\n  return task;\n}\n\nfunction createPendingSegment(request, index, boundary, formatContext) {\n  return {\n    status: PENDING,\n    id: -1,\n    // lazily assigned later\n    index: index,\n    parentFlushed: false,\n    chunks: [],\n    children: [],\n    formatContext: formatContext,\n    boundary: boundary\n  };\n} // DEV-only global reference to the currently executing task\n\n\nvar currentTaskInDEV = null;\n\nfunction getCurrentStackInDEV() {\n  {\n    if (currentTaskInDEV === null || currentTaskInDEV.componentStack === null) {\n      return '';\n    }\n\n    return getStackByComponentStackNode(currentTaskInDEV.componentStack);\n  }\n}\n\nfunction pushBuiltInComponentStackInDEV(task, type) {\n  {\n    task.componentStack = {\n      tag: 0,\n      parent: task.componentStack,\n      type: type\n    };\n  }\n}\n\nfunction pushFunctionComponentStackInDEV(task, type) {\n  {\n    task.componentStack = {\n      tag: 1,\n      parent: task.componentStack,\n      type: type\n    };\n  }\n}\n\nfunction pushClassComponentStackInDEV(task, type) {\n  {\n    task.componentStack = {\n      tag: 2,\n      parent: task.componentStack,\n      type: type\n    };\n  }\n}\n\nfunction popComponentStackInDEV(task) {\n  {\n    if (task.componentStack === null) {\n      error('Unexpectedly popped too many stack frames. This is a bug in React.');\n    } else {\n      task.componentStack = task.componentStack.parent;\n    }\n  }\n}\n\nfunction logRecoverableError(request, error) {\n  // If this callback errors, we intentionally let that error bubble up to become a fatal error\n  // so that someone fixes the error reporting instead of hiding it.\n  var onError = request.onError;\n  onError(error);\n}\n\nfunction fatalError(request, error) {\n  // This is called outside error handling code such as if the root errors outside\n  // a suspense boundary or if the root suspense boundary's fallback errors.\n  // It's also called if React itself or its host configs errors.\n  var onShellError = request.onShellError;\n  onShellError(error);\n  var onFatalError = request.onFatalError;\n  onFatalError(error);\n\n  if (request.destination !== null) {\n    request.status = CLOSED;\n    closeWithError(request.destination, error);\n  } else {\n    request.status = CLOSING;\n    request.fatalError = error;\n  }\n}\n\nfunction renderSuspenseBoundary(request, task, props) {\n  pushBuiltInComponentStackInDEV(task, 'Suspense');\n  var parentBoundary = task.blockedBoundary;\n  var parentSegment = task.blockedSegment; // Each time we enter a suspense boundary, we split out into a new segment for\n  // the fallback so that we can later replace that segment with the content.\n  // This also lets us split out the main content even if it doesn't suspend,\n  // in case it ends up generating a large subtree of content.\n\n  var fallback = props.fallback;\n  var content = props.children;\n  var fallbackAbortSet = new Set();\n  var newBoundary = createSuspenseBoundary(request, fallbackAbortSet);\n  var insertionIndex = parentSegment.chunks.length; // The children of the boundary segment is actually the fallback.\n\n  var boundarySegment = createPendingSegment(request, insertionIndex, newBoundary, parentSegment.formatContext);\n  parentSegment.children.push(boundarySegment); // This segment is the actual child content. We can start rendering that immediately.\n\n  var contentRootSegment = createPendingSegment(request, 0, null, parentSegment.formatContext); // We mark the root segment as having its parent flushed. It's not really flushed but there is\n  // no parent segment so there's nothing to wait on.\n\n  contentRootSegment.parentFlushed = true; // Currently this is running synchronously. We could instead schedule this to pingedTasks.\n  // I suspect that there might be some efficiency benefits from not creating the suspended task\n  // and instead just using the stack if possible.\n  // TODO: Call this directly instead of messing with saving and restoring contexts.\n  // We can reuse the current context and task to render the content immediately without\n  // context switching. We just need to temporarily switch which boundary and which segment\n  // we're writing to. If something suspends, it'll spawn new suspended task with that context.\n\n  task.blockedBoundary = newBoundary;\n  task.blockedSegment = contentRootSegment;\n\n  try {\n    // We use the safe form because we don't handle suspending here. Only error handling.\n    renderNode(request, task, content);\n    contentRootSegment.status = COMPLETED;\n    queueCompletedSegment(newBoundary, contentRootSegment);\n\n    if (newBoundary.pendingTasks === 0) {\n      // This must have been the last segment we were waiting on. This boundary is now complete.\n      // Therefore we won't need the fallback. We early return so that we don't have to create\n      // the fallback.\n      popComponentStackInDEV(task);\n      return;\n    }\n  } catch (error) {\n    contentRootSegment.status = ERRORED;\n    logRecoverableError(request, error);\n    newBoundary.forceClientRender = true; // We don't need to decrement any task numbers because we didn't spawn any new task.\n    // We don't need to schedule any task because we know the parent has written yet.\n    // We do need to fallthrough to create the fallback though.\n  } finally {\n    task.blockedBoundary = parentBoundary;\n    task.blockedSegment = parentSegment;\n  } // We create suspended task for the fallback because we don't want to actually work\n  // on it yet in case we finish the main content, so we queue for later.\n\n\n  var suspendedFallbackTask = createTask(request, fallback, parentBoundary, boundarySegment, fallbackAbortSet, task.legacyContext, task.context, task.treeContext);\n\n  {\n    suspendedFallbackTask.componentStack = task.componentStack;\n  } // TODO: This should be queued at a separate lower priority queue so that we only work\n  // on preparing fallbacks if we don't have any more main content to task on.\n\n\n  request.pingedTasks.push(suspendedFallbackTask);\n  popComponentStackInDEV(task);\n}\n\nfunction renderHostElement(request, task, type, props) {\n  pushBuiltInComponentStackInDEV(task, type);\n  var segment = task.blockedSegment;\n  var children = pushStartInstance(segment.chunks, type, props, request.responseState, segment.formatContext);\n  var prevContext = segment.formatContext;\n  segment.formatContext = getChildFormatContext(prevContext, type, props); // We use the non-destructive form because if something suspends, we still\n  // need to pop back up and finish this subtree of HTML.\n\n  renderNode(request, task, children); // We expect that errors will fatal the whole task and that we don't need\n  // the correct context. Therefore this is not in a finally.\n\n  segment.formatContext = prevContext;\n  pushEndInstance(segment.chunks, type);\n  popComponentStackInDEV(task);\n}\n\nfunction shouldConstruct$1(Component) {\n  return Component.prototype && Component.prototype.isReactComponent;\n}\n\nfunction renderWithHooks(request, task, Component, props, secondArg) {\n  var componentIdentity = {};\n  prepareToUseHooks(task, componentIdentity);\n  var result = Component(props, secondArg);\n  return finishHooks(Component, props, result, secondArg);\n}\n\nfunction finishClassComponent(request, task, instance, Component, props) {\n  var nextChildren = instance.render();\n\n  {\n    if (instance.props !== props) {\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.', getComponentNameFromType(Component) || 'a component');\n      }\n\n      didWarnAboutReassigningProps = true;\n    }\n  }\n\n  {\n    var childContextTypes = Component.childContextTypes;\n\n    if (childContextTypes !== null && childContextTypes !== undefined) {\n      var previousContext = task.legacyContext;\n      var mergedContext = processChildContext(instance, Component, previousContext, childContextTypes);\n      task.legacyContext = mergedContext;\n      renderNodeDestructive(request, task, nextChildren);\n      task.legacyContext = previousContext;\n      return;\n    }\n  }\n\n  renderNodeDestructive(request, task, nextChildren);\n}\n\nfunction renderClassComponent(request, task, Component, props) {\n  pushClassComponentStackInDEV(task, Component);\n  var maskedContext =  getMaskedContext(Component, task.legacyContext) ;\n  var instance = constructClassInstance(Component, props, maskedContext);\n  mountClassInstance(instance, Component, props, maskedContext);\n  finishClassComponent(request, task, instance, Component, props);\n  popComponentStackInDEV(task);\n}\n\nvar didWarnAboutBadClass = {};\nvar didWarnAboutModulePatternComponent = {};\nvar didWarnAboutContextTypeOnFunctionComponent = {};\nvar didWarnAboutGetDerivedStateOnFunctionComponent = {};\nvar didWarnAboutReassigningProps = false;\nvar didWarnAboutGenerators = false;\nvar didWarnAboutMaps = false;\nvar hasWarnedAboutUsingContextAsConsumer = false; // This would typically be a function component but we still support module pattern\n// components for some reason.\n\nfunction renderIndeterminateComponent(request, task, Component, props) {\n  var legacyContext;\n\n  {\n    legacyContext = getMaskedContext(Component, task.legacyContext);\n  }\n\n  pushFunctionComponentStackInDEV(task, Component);\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\n  var value = renderWithHooks(request, task, Component, props, legacyContext);\n  var hasId = checkDidRenderIdHook();\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    }\n\n    mountClassInstance(value, Component, props, legacyContext);\n    finishClassComponent(request, task, value, Component, props);\n  } else {\n\n    {\n      validateFunctionComponentInDev(Component);\n    } // We're now successfully past this task, and we don't have to pop back to\n    // the previous task every again, so we can use the destructive recursive form.\n\n\n    if (hasId) {\n      // This component materialized an id. We treat this as its own level, with\n      // a single \"child\" slot.\n      var prevTreeContext = task.treeContext;\n      var totalChildren = 1;\n      var index = 0;\n      task.treeContext = pushTreeContext(prevTreeContext, totalChildren, index);\n\n      try {\n        renderNodeDestructive(request, task, value);\n      } finally {\n        task.treeContext = prevTreeContext;\n      }\n    } else {\n      renderNodeDestructive(request, task, value);\n    }\n  }\n\n  popComponentStackInDEV(task);\n}\n\nfunction validateFunctionComponentInDev(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 (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\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\nfunction renderForwardRef(request, task, type, props, ref) {\n  pushFunctionComponentStackInDEV(task, type.render);\n  var children = renderWithHooks(request, task, type.render, props, ref);\n  var hasId = checkDidRenderIdHook();\n\n  if (hasId) {\n    // This component materialized an id. We treat this as its own level, with\n    // a single \"child\" slot.\n    var prevTreeContext = task.treeContext;\n    var totalChildren = 1;\n    var index = 0;\n    task.treeContext = pushTreeContext(prevTreeContext, totalChildren, index);\n\n    try {\n      renderNodeDestructive(request, task, children);\n    } finally {\n      task.treeContext = prevTreeContext;\n    }\n  } else {\n    renderNodeDestructive(request, task, children);\n  }\n\n  popComponentStackInDEV(task);\n}\n\nfunction renderMemo(request, task, type, props, ref) {\n  var innerType = type.type;\n  var resolvedProps = resolveDefaultProps(innerType, props);\n  renderElement(request, task, innerType, resolvedProps, ref);\n}\n\nfunction renderContextConsumer(request, task, context, props) {\n  // 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    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 render = props.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  var newValue = readContext(context);\n  var newChildren = render(newValue);\n  renderNodeDestructive(request, task, newChildren);\n}\n\nfunction renderContextProvider(request, task, type, props) {\n  var context = type._context;\n  var value = props.value;\n  var children = props.children;\n  var prevSnapshot;\n\n  {\n    prevSnapshot = task.context;\n  }\n\n  task.context = pushProvider(context, value);\n  renderNodeDestructive(request, task, children);\n  task.context = popProvider(context);\n\n  {\n    if (prevSnapshot !== task.context) {\n      error('Popping the context provider did not return back to the original snapshot. This is a bug in React.');\n    }\n  }\n}\n\nfunction renderLazyComponent(request, task, lazyComponent, props, ref) {\n  pushBuiltInComponentStackInDEV(task, 'Lazy');\n  var payload = lazyComponent._payload;\n  var init = lazyComponent._init;\n  var Component = init(payload);\n  var resolvedProps = resolveDefaultProps(Component, props);\n  renderElement(request, task, Component, resolvedProps, ref);\n  popComponentStackInDEV(task);\n}\n\nfunction renderElement(request, task, type, props, ref) {\n  if (typeof type === 'function') {\n    if (shouldConstruct$1(type)) {\n      renderClassComponent(request, task, type, props);\n      return;\n    } else {\n      renderIndeterminateComponent(request, task, type, props);\n      return;\n    }\n  }\n\n  if (typeof type === 'string') {\n    renderHostElement(request, task, type, props);\n    return;\n  }\n\n  switch (type) {\n    // TODO: LegacyHidden acts the same as a fragment. This only works\n    // because we currently assume that every instance of LegacyHidden is\n    // accompanied by a host component wrapper. In the hidden mode, the host\n    // component is given a `hidden` attribute, which ensures that the\n    // initial HTML is not visible. To support the use of LegacyHidden as a\n    // true fragment, without an extra DOM node, we would have to hide the\n    // initial HTML in some other way.\n    // TODO: Add REACT_OFFSCREEN_TYPE here too with the same capability.\n    case REACT_LEGACY_HIDDEN_TYPE:\n    case REACT_DEBUG_TRACING_MODE_TYPE:\n    case REACT_STRICT_MODE_TYPE:\n    case REACT_PROFILER_TYPE:\n    case REACT_FRAGMENT_TYPE:\n      {\n        renderNodeDestructive(request, task, props.children);\n        return;\n      }\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      {\n        pushBuiltInComponentStackInDEV(task, 'SuspenseList'); // TODO: SuspenseList should control the boundaries.\n\n        renderNodeDestructive(request, task, props.children);\n        popComponentStackInDEV(task);\n        return;\n      }\n\n    case REACT_SCOPE_TYPE:\n      {\n\n        throw new Error('ReactDOMServer does not yet support scope components.');\n      }\n    // eslint-disable-next-line-no-fallthrough\n\n    case REACT_SUSPENSE_TYPE:\n      {\n        {\n          renderSuspenseBoundary(request, task, props);\n        }\n\n        return;\n      }\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        {\n          renderForwardRef(request, task, type, props, ref);\n          return;\n        }\n\n      case REACT_MEMO_TYPE:\n        {\n          renderMemo(request, task, type, props, ref);\n          return;\n        }\n\n      case REACT_PROVIDER_TYPE:\n        {\n          renderContextProvider(request, task, type, props);\n          return;\n        }\n\n      case REACT_CONTEXT_TYPE:\n        {\n          renderContextConsumer(request, task, type, props);\n          return;\n        }\n\n      case REACT_LAZY_TYPE:\n        {\n          renderLazyComponent(request, task, type, props);\n          return;\n        }\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\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\nfunction validateIterable(iterable, iteratorFn) {\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    iterable[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 (iterable.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    }\n  }\n} // This function by it self renders a node and consumes the task by mutating it\n// to update the current execution state.\n\n\nfunction renderNodeDestructive(request, task, node) {\n  // Stash the node we're working on. We'll pick up from this task in case\n  // something suspends.\n  task.node = node; // Handle object types\n\n  if (typeof node === 'object' && node !== null) {\n    switch (node.$$typeof) {\n      case REACT_ELEMENT_TYPE:\n        {\n          var element = node;\n          var type = element.type;\n          var props = element.props;\n          var ref = element.ref;\n          renderElement(request, task, type, props, ref);\n          return;\n        }\n\n      case REACT_PORTAL_TYPE:\n        throw new Error('Portals are not currently supported by the server renderer. ' + 'Render them conditionally so that they only appear on the client render.');\n      // eslint-disable-next-line-no-fallthrough\n\n      case REACT_LAZY_TYPE:\n        {\n          {\n            var lazyNode = node;\n            var payload = lazyNode._payload;\n            var init = lazyNode._init;\n            var resolvedNode = init(payload);\n            renderNodeDestructive(request, task, resolvedNode);\n            return;\n          }\n        }\n    }\n\n    if (isArray(node)) {\n      renderChildrenArray(request, task, node);\n      return;\n    }\n\n    var iteratorFn = getIteratorFn(node);\n\n    if (iteratorFn) {\n      {\n        validateIterable(node, iteratorFn);\n      }\n\n      var iterator = iteratorFn.call(node);\n\n      if (iterator) {\n        // We need to know how many total children are in this set, so that we\n        // can allocate enough id slots to acommodate them. So we must exhaust\n        // the iterator before we start recursively rendering the children.\n        // TODO: This is not great but I think it's inherent to the id\n        // generation algorithm.\n        var step = iterator.next(); // If there are not entries, we need to push an empty so we start by checking that.\n\n        if (!step.done) {\n          var children = [];\n\n          do {\n            children.push(step.value);\n            step = iterator.next();\n          } while (!step.done);\n\n          renderChildrenArray(request, task, children);\n          return;\n        }\n\n        return;\n      }\n    }\n\n    var childString = Object.prototype.toString.call(node);\n    throw new Error(\"Objects are not valid as a React child (found: \" + (childString === '[object Object]' ? 'object with keys {' + Object.keys(node).join(', ') + '}' : childString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n  }\n\n  if (typeof node === 'string') {\n    pushTextInstance(task.blockedSegment.chunks, node, request.responseState);\n    return;\n  }\n\n  if (typeof node === 'number') {\n    pushTextInstance(task.blockedSegment.chunks, '' + node, request.responseState);\n    return;\n  }\n\n  {\n    if (typeof node === 'function') {\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}\n\nfunction renderChildrenArray(request, task, children) {\n  var totalChildren = children.length;\n\n  for (var i = 0; i < totalChildren; i++) {\n    var prevTreeContext = task.treeContext;\n    task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);\n\n    try {\n      // We need to use the non-destructive form so that we can safely pop back\n      // up and render the sibling if something suspends.\n      renderNode(request, task, children[i]);\n    } finally {\n      task.treeContext = prevTreeContext;\n    }\n  }\n}\n\nfunction spawnNewSuspendedTask(request, task, x) {\n  // Something suspended, we'll need to create a new segment and resolve it later.\n  var segment = task.blockedSegment;\n  var insertionIndex = segment.chunks.length;\n  var newSegment = createPendingSegment(request, insertionIndex, null, segment.formatContext);\n  segment.children.push(newSegment);\n  var newTask = createTask(request, task.node, task.blockedBoundary, newSegment, task.abortSet, task.legacyContext, task.context, task.treeContext);\n\n  {\n    if (task.componentStack !== null) {\n      // We pop one task off the stack because the node that suspended will be tried again,\n      // which will add it back onto the stack.\n      newTask.componentStack = task.componentStack.parent;\n    }\n  }\n\n  var ping = newTask.ping;\n  x.then(ping, ping);\n} // This is a non-destructive form of rendering a node. If it suspends it spawns\n// a new task and restores the context of this task to what it was before.\n\n\nfunction renderNode(request, task, node) {\n  // TODO: Store segment.children.length here and reset it in case something\n  // suspended partially through writing something.\n  // Snapshot the current context in case something throws to interrupt the\n  // process.\n  var previousFormatContext = task.blockedSegment.formatContext;\n  var previousLegacyContext = task.legacyContext;\n  var previousContext = task.context;\n  var previousComponentStack = null;\n\n  {\n    previousComponentStack = task.componentStack;\n  }\n\n  try {\n    return renderNodeDestructive(request, task, node);\n  } catch (x) {\n    resetHooksState();\n\n    if (typeof x === 'object' && x !== null && typeof x.then === 'function') {\n      spawnNewSuspendedTask(request, task, x); // Restore the context. We assume that this will be restored by the inner\n      // functions in case nothing throws so we don't use \"finally\" here.\n\n      task.blockedSegment.formatContext = previousFormatContext;\n      task.legacyContext = previousLegacyContext;\n      task.context = previousContext; // Restore all active ReactContexts to what they were before.\n\n      switchContext(previousContext);\n\n      {\n        task.componentStack = previousComponentStack;\n      }\n\n      return;\n    } else {\n      // Restore the context. We assume that this will be restored by the inner\n      // functions in case nothing throws so we don't use \"finally\" here.\n      task.blockedSegment.formatContext = previousFormatContext;\n      task.legacyContext = previousLegacyContext;\n      task.context = previousContext; // Restore all active ReactContexts to what they were before.\n\n      switchContext(previousContext);\n\n      {\n        task.componentStack = previousComponentStack;\n      } // We assume that we don't need the correct context.\n      // Let's terminate the rest of the tree and don't render any siblings.\n\n\n      throw x;\n    }\n  }\n}\n\nfunction erroredTask(request, boundary, segment, error) {\n  // Report the error to a global handler.\n  logRecoverableError(request, error);\n\n  if (boundary === null) {\n    fatalError(request, error);\n  } else {\n    boundary.pendingTasks--;\n\n    if (!boundary.forceClientRender) {\n      boundary.forceClientRender = true; // Regardless of what happens next, this boundary won't be displayed,\n      // so we can flush it, if the parent already flushed.\n\n      if (boundary.parentFlushed) {\n        // We don't have a preference where in the queue this goes since it's likely\n        // to error on the client anyway. However, intentionally client-rendered\n        // boundaries should be flushed earlier so that they can start on the client.\n        // We reuse the same queue for errors.\n        request.clientRenderedBoundaries.push(boundary);\n      }\n    }\n  }\n\n  request.allPendingTasks--;\n\n  if (request.allPendingTasks === 0) {\n    var onAllReady = request.onAllReady;\n    onAllReady();\n  }\n}\n\nfunction abortTaskSoft(task) {\n  // This aborts task without aborting the parent boundary that it blocks.\n  // It's used for when we didn't need this task to complete the tree.\n  // If task was needed, then it should use abortTask instead.\n  var request = this;\n  var boundary = task.blockedBoundary;\n  var segment = task.blockedSegment;\n  segment.status = ABORTED;\n  finishedTask(request, boundary, segment);\n}\n\nfunction abortTask(task) {\n  // This aborts the task and aborts the parent that it blocks, putting it into\n  // client rendered mode.\n  var request = this;\n  var boundary = task.blockedBoundary;\n  var segment = task.blockedSegment;\n  segment.status = ABORTED;\n\n  if (boundary === null) {\n    request.allPendingTasks--; // We didn't complete the root so we have nothing to show. We can close\n    // the request;\n\n    if (request.status !== CLOSED) {\n      request.status = CLOSED;\n\n      if (request.destination !== null) {\n        close(request.destination);\n      }\n    }\n  } else {\n    boundary.pendingTasks--;\n\n    if (!boundary.forceClientRender) {\n      boundary.forceClientRender = true;\n\n      if (boundary.parentFlushed) {\n        request.clientRenderedBoundaries.push(boundary);\n      }\n    } // If this boundary was still pending then we haven't already cancelled its fallbacks.\n    // We'll need to abort the fallbacks, which will also error that parent boundary.\n\n\n    boundary.fallbackAbortableTasks.forEach(abortTask, request);\n    boundary.fallbackAbortableTasks.clear();\n    request.allPendingTasks--;\n\n    if (request.allPendingTasks === 0) {\n      var onAllReady = request.onAllReady;\n      onAllReady();\n    }\n  }\n}\n\nfunction queueCompletedSegment(boundary, segment) {\n  if (segment.chunks.length === 0 && segment.children.length === 1 && segment.children[0].boundary === null) {\n    // This is an empty segment. There's nothing to write, so we can instead transfer the ID\n    // to the child. That way any existing references point to the child.\n    var childSegment = segment.children[0];\n    childSegment.id = segment.id;\n    childSegment.parentFlushed = true;\n\n    if (childSegment.status === COMPLETED) {\n      queueCompletedSegment(boundary, childSegment);\n    }\n  } else {\n    var completedSegments = boundary.completedSegments;\n    completedSegments.push(segment);\n  }\n}\n\nfunction finishedTask(request, boundary, segment) {\n  if (boundary === null) {\n    if (segment.parentFlushed) {\n      if (request.completedRootSegment !== null) {\n        throw new Error('There can only be one root segment. This is a bug in React.');\n      }\n\n      request.completedRootSegment = segment;\n    }\n\n    request.pendingRootTasks--;\n\n    if (request.pendingRootTasks === 0) {\n      // We have completed the shell so the shell can't error anymore.\n      request.onShellError = noop$1;\n      var onShellReady = request.onShellReady;\n      onShellReady();\n    }\n  } else {\n    boundary.pendingTasks--;\n\n    if (boundary.forceClientRender) ; else if (boundary.pendingTasks === 0) {\n      // This must have been the last segment we were waiting on. This boundary is now complete.\n      if (segment.parentFlushed) {\n        // Our parent segment already flushed, so we need to schedule this segment to be emitted.\n        // If it is a segment that was aborted, we'll write other content instead so we don't need\n        // to emit it.\n        if (segment.status === COMPLETED) {\n          queueCompletedSegment(boundary, segment);\n        }\n      }\n\n      if (boundary.parentFlushed) {\n        // The segment might be part of a segment that didn't flush yet, but if the boundary's\n        // parent flushed, we need to schedule the boundary to be emitted.\n        request.completedBoundaries.push(boundary);\n      } // We can now cancel any pending task on the fallback since we won't need to show it anymore.\n      // This needs to happen after we read the parentFlushed flags because aborting can finish\n      // work which can trigger user code, which can start flushing, which can change those flags.\n\n\n      boundary.fallbackAbortableTasks.forEach(abortTaskSoft, request);\n      boundary.fallbackAbortableTasks.clear();\n    } else {\n      if (segment.parentFlushed) {\n        // Our parent already flushed, so we need to schedule this segment to be emitted.\n        // If it is a segment that was aborted, we'll write other content instead so we don't need\n        // to emit it.\n        if (segment.status === COMPLETED) {\n          queueCompletedSegment(boundary, segment);\n          var completedSegments = boundary.completedSegments;\n\n          if (completedSegments.length === 1) {\n            // This is the first time since we last flushed that we completed anything.\n            // We can schedule this boundary to emit its partially completed segments early\n            // in case the parent has already been flushed.\n            if (boundary.parentFlushed) {\n              request.partialBoundaries.push(boundary);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  request.allPendingTasks--;\n\n  if (request.allPendingTasks === 0) {\n    // This needs to be called at the very end so that we can synchronously write the result\n    // in the callback if needed.\n    var onAllReady = request.onAllReady;\n    onAllReady();\n  }\n}\n\nfunction retryTask(request, task) {\n  var segment = task.blockedSegment;\n\n  if (segment.status !== PENDING) {\n    // We completed this by other means before we had a chance to retry it.\n    return;\n  } // We restore the context to what it was when we suspended.\n  // We don't restore it after we leave because it's likely that we'll end up\n  // needing a very similar context soon again.\n\n\n  switchContext(task.context);\n  var prevTaskInDEV = null;\n\n  {\n    prevTaskInDEV = currentTaskInDEV;\n    currentTaskInDEV = task;\n  }\n\n  try {\n    // We call the destructive form that mutates this task. That way if something\n    // suspends again, we can reuse the same task instead of spawning a new one.\n    renderNodeDestructive(request, task, task.node);\n    task.abortSet.delete(task);\n    segment.status = COMPLETED;\n    finishedTask(request, task.blockedBoundary, segment);\n  } catch (x) {\n    resetHooksState();\n\n    if (typeof x === 'object' && x !== null && typeof x.then === 'function') {\n      // Something suspended again, let's pick it back up later.\n      var ping = task.ping;\n      x.then(ping, ping);\n    } else {\n      task.abortSet.delete(task);\n      segment.status = ERRORED;\n      erroredTask(request, task.blockedBoundary, segment, x);\n    }\n  } finally {\n    {\n      currentTaskInDEV = prevTaskInDEV;\n    }\n  }\n}\n\nfunction performWork(request) {\n  if (request.status === CLOSED) {\n    return;\n  }\n\n  var prevContext = getActiveContext();\n  var prevDispatcher = ReactCurrentDispatcher$1.current;\n  ReactCurrentDispatcher$1.current = Dispatcher;\n  var prevGetCurrentStackImpl;\n\n  {\n    prevGetCurrentStackImpl = ReactDebugCurrentFrame$1.getCurrentStack;\n    ReactDebugCurrentFrame$1.getCurrentStack = getCurrentStackInDEV;\n  }\n\n  var prevResponseState = currentResponseState;\n  setCurrentResponseState(request.responseState);\n\n  try {\n    var pingedTasks = request.pingedTasks;\n    var i;\n\n    for (i = 0; i < pingedTasks.length; i++) {\n      var task = pingedTasks[i];\n      retryTask(request, task);\n    }\n\n    pingedTasks.splice(0, i);\n\n    if (request.destination !== null) {\n      flushCompletedQueues(request, request.destination);\n    }\n  } catch (error) {\n    logRecoverableError(request, error);\n    fatalError(request, error);\n  } finally {\n    setCurrentResponseState(prevResponseState);\n    ReactCurrentDispatcher$1.current = prevDispatcher;\n\n    {\n      ReactDebugCurrentFrame$1.getCurrentStack = prevGetCurrentStackImpl;\n    }\n\n    if (prevDispatcher === Dispatcher) {\n      // This means that we were in a reentrant work loop. This could happen\n      // in a renderer that supports synchronous work like renderToString,\n      // when it's called from within another renderer.\n      // Normally we don't bother switching the contexts to their root/default\n      // values when leaving because we'll likely need the same or similar\n      // context again. However, when we're inside a synchronous loop like this\n      // we'll to restore the context to what it was before returning.\n      switchContext(prevContext);\n    }\n  }\n}\n\nfunction flushSubtree(request, destination, segment) {\n  segment.parentFlushed = true;\n\n  switch (segment.status) {\n    case PENDING:\n      {\n        // We're emitting a placeholder for this segment to be filled in later.\n        // Therefore we'll need to assign it an ID - to refer to it by.\n        var segmentID = segment.id = request.nextSegmentId++;\n        return writePlaceholder(destination, request.responseState, segmentID);\n      }\n\n    case COMPLETED:\n      {\n        segment.status = FLUSHED;\n        var r = true;\n        var chunks = segment.chunks;\n        var chunkIdx = 0;\n        var children = segment.children;\n\n        for (var childIdx = 0; childIdx < children.length; childIdx++) {\n          var nextChild = children[childIdx]; // Write all the chunks up until the next child.\n\n          for (; chunkIdx < nextChild.index; chunkIdx++) {\n            writeChunk(destination, chunks[chunkIdx]);\n          }\n\n          r = flushSegment(request, destination, nextChild);\n        } // Finally just write all the remaining chunks\n\n\n        for (; chunkIdx < chunks.length - 1; chunkIdx++) {\n          writeChunk(destination, chunks[chunkIdx]);\n        }\n\n        if (chunkIdx < chunks.length) {\n          r = writeChunkAndReturn(destination, chunks[chunkIdx]);\n        }\n\n        return r;\n      }\n\n    default:\n      {\n        throw new Error('Aborted, errored or already flushed boundaries should not be flushed again. This is a bug in React.');\n      }\n  }\n}\n\nfunction flushSegment(request, destination, segment) {\n  var boundary = segment.boundary;\n\n  if (boundary === null) {\n    // Not a suspense boundary.\n    return flushSubtree(request, destination, segment);\n  }\n\n  boundary.parentFlushed = true; // This segment is a Suspense boundary. We need to decide whether to\n  // emit the content or the fallback now.\n\n  if (boundary.forceClientRender) {\n    // Emit a client rendered suspense boundary wrapper.\n    // We never queue the inner boundary so we'll never emit its content or partial segments.\n    writeStartClientRenderedSuspenseBoundary(destination, request.responseState); // Flush the fallback.\n\n    flushSubtree(request, destination, segment);\n    return writeEndClientRenderedSuspenseBoundary(destination, request.responseState);\n  } else if (boundary.pendingTasks > 0) {\n    // This boundary is still loading. Emit a pending suspense boundary wrapper.\n    // Assign an ID to refer to the future content by.\n    boundary.rootSegmentID = request.nextSegmentId++;\n\n    if (boundary.completedSegments.length > 0) {\n      // If this is at least partially complete, we can queue it to be partially emitted early.\n      request.partialBoundaries.push(boundary);\n    } /// This is the first time we should have referenced this ID.\n\n\n    var id = boundary.id = assignSuspenseBoundaryID(request.responseState);\n    writeStartPendingSuspenseBoundary(destination, request.responseState, id); // Flush the fallback.\n\n    flushSubtree(request, destination, segment);\n    return writeEndPendingSuspenseBoundary(destination, request.responseState);\n  } else if (boundary.byteSize > request.progressiveChunkSize) {\n    // This boundary is large and will be emitted separately so that we can progressively show\n    // other content. We add it to the queue during the flush because we have to ensure that\n    // the parent flushes first so that there's something to inject it into.\n    // We also have to make sure that it's emitted into the queue in a deterministic slot.\n    // I.e. we can't insert it here when it completes.\n    // Assign an ID to refer to the future content by.\n    boundary.rootSegmentID = request.nextSegmentId++;\n    request.completedBoundaries.push(boundary); // Emit a pending rendered suspense boundary wrapper.\n\n    writeStartPendingSuspenseBoundary(destination, request.responseState, boundary.id); // Flush the fallback.\n\n    flushSubtree(request, destination, segment);\n    return writeEndPendingSuspenseBoundary(destination, request.responseState);\n  } else {\n    // We can inline this boundary's content as a complete boundary.\n    writeStartCompletedSuspenseBoundary(destination, request.responseState);\n    var completedSegments = boundary.completedSegments;\n\n    if (completedSegments.length !== 1) {\n      throw new Error('A previously unvisited boundary must have exactly one root segment. This is a bug in React.');\n    }\n\n    var contentSegment = completedSegments[0];\n    flushSegment(request, destination, contentSegment);\n    return writeEndCompletedSuspenseBoundary(destination, request.responseState);\n  }\n}\n\nfunction flushClientRenderedBoundary(request, destination, boundary) {\n  return writeClientRenderBoundaryInstruction(destination, request.responseState, boundary.id);\n}\n\nfunction flushSegmentContainer(request, destination, segment) {\n  writeStartSegment(destination, request.responseState, segment.formatContext, segment.id);\n  flushSegment(request, destination, segment);\n  return writeEndSegment(destination, segment.formatContext);\n}\n\nfunction flushCompletedBoundary(request, destination, boundary) {\n  var completedSegments = boundary.completedSegments;\n  var i = 0;\n\n  for (; i < completedSegments.length; i++) {\n    var segment = completedSegments[i];\n    flushPartiallyCompletedSegment(request, destination, boundary, segment);\n  }\n\n  completedSegments.length = 0;\n  return writeCompletedBoundaryInstruction(destination, request.responseState, boundary.id, boundary.rootSegmentID);\n}\n\nfunction flushPartialBoundary(request, destination, boundary) {\n  var completedSegments = boundary.completedSegments;\n  var i = 0;\n\n  for (; i < completedSegments.length; i++) {\n    var segment = completedSegments[i];\n\n    if (!flushPartiallyCompletedSegment(request, destination, boundary, segment)) {\n      i++;\n      completedSegments.splice(0, i); // Only write as much as the buffer wants. Something higher priority\n      // might want to write later.\n\n      return false;\n    }\n  }\n\n  completedSegments.splice(0, i);\n  return true;\n}\n\nfunction flushPartiallyCompletedSegment(request, destination, boundary, segment) {\n  if (segment.status === FLUSHED) {\n    // We've already flushed this inline.\n    return true;\n  }\n\n  var segmentID = segment.id;\n\n  if (segmentID === -1) {\n    // This segment wasn't previously referred to. This happens at the root of\n    // a boundary. We make kind of a leap here and assume this is the root.\n    var rootSegmentID = segment.id = boundary.rootSegmentID;\n\n    if (rootSegmentID === -1) {\n      throw new Error('A root segment ID must have been assigned by now. This is a bug in React.');\n    }\n\n    return flushSegmentContainer(request, destination, segment);\n  } else {\n    flushSegmentContainer(request, destination, segment);\n    return writeCompletedSegmentInstruction(destination, request.responseState, segmentID);\n  }\n}\n\nfunction flushCompletedQueues(request, destination) {\n  beginWriting();\n\n  try {\n    // The structure of this is to go through each queue one by one and write\n    // until the sink tells us to stop. When we should stop, we still finish writing\n    // that item fully and then yield. At that point we remove the already completed\n    // items up until the point we completed them.\n    // TODO: Emit preloading.\n    // TODO: It's kind of unfortunate to keep checking this array after we've already\n    // emitted the root.\n    var completedRootSegment = request.completedRootSegment;\n\n    if (completedRootSegment !== null && request.pendingRootTasks === 0) {\n      flushSegment(request, destination, completedRootSegment);\n      request.completedRootSegment = null;\n      writeCompletedRoot(destination, request.responseState);\n    } // We emit client rendering instructions for already emitted boundaries first.\n    // This is so that we can signal to the client to start client rendering them as\n    // soon as possible.\n\n\n    var clientRenderedBoundaries = request.clientRenderedBoundaries;\n    var i;\n\n    for (i = 0; i < clientRenderedBoundaries.length; i++) {\n      var boundary = clientRenderedBoundaries[i];\n\n      if (!flushClientRenderedBoundary(request, destination, boundary)) {\n        request.destination = null;\n        i++;\n        clientRenderedBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    clientRenderedBoundaries.splice(0, i); // Next we emit any complete boundaries. It's better to favor boundaries\n    // that are completely done since we can actually show them, than it is to emit\n    // any individual segments from a partially complete boundary.\n\n    var completedBoundaries = request.completedBoundaries;\n\n    for (i = 0; i < completedBoundaries.length; i++) {\n      var _boundary = completedBoundaries[i];\n\n      if (!flushCompletedBoundary(request, destination, _boundary)) {\n        request.destination = null;\n        i++;\n        completedBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    completedBoundaries.splice(0, i); // Allow anything written so far to flush to the underlying sink before\n    // we continue with lower priorities.\n\n    completeWriting(destination);\n    beginWriting(destination); // TODO: Here we'll emit data used by hydration.\n    // Next we emit any segments of any boundaries that are partially complete\n    // but not deeply complete.\n\n    var partialBoundaries = request.partialBoundaries;\n\n    for (i = 0; i < partialBoundaries.length; i++) {\n      var _boundary2 = partialBoundaries[i];\n\n      if (!flushPartialBoundary(request, destination, _boundary2)) {\n        request.destination = null;\n        i++;\n        partialBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    partialBoundaries.splice(0, i); // Next we check the completed boundaries again. This may have had\n    // boundaries added to it in case they were too larged to be inlined.\n    // New ones might be added in this loop.\n\n    var largeBoundaries = request.completedBoundaries;\n\n    for (i = 0; i < largeBoundaries.length; i++) {\n      var _boundary3 = largeBoundaries[i];\n\n      if (!flushCompletedBoundary(request, destination, _boundary3)) {\n        request.destination = null;\n        i++;\n        largeBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    largeBoundaries.splice(0, i);\n  } finally {\n    completeWriting(destination);\n\n    if (request.allPendingTasks === 0 && request.pingedTasks.length === 0 && request.clientRenderedBoundaries.length === 0 && request.completedBoundaries.length === 0 // We don't need to check any partially completed segments because\n    // either they have pending task or they're complete.\n    ) {\n        {\n          if (request.abortableTasks.size !== 0) {\n            error('There was still abortable task at the root when we closed. This is a bug in React.');\n          }\n        } // We're done.\n\n\n        close(destination);\n      }\n  }\n}\n\nfunction startWork(request) {\n  scheduleWork(function () {\n    return performWork(request);\n  });\n}\nfunction startFlowing(request, destination) {\n  if (request.status === CLOSING) {\n    request.status = CLOSED;\n    closeWithError(destination, request.fatalError);\n    return;\n  }\n\n  if (request.status === CLOSED) {\n    return;\n  }\n\n  if (request.destination !== null) {\n    // We're already flowing.\n    return;\n  }\n\n  request.destination = destination;\n\n  try {\n    flushCompletedQueues(request, destination);\n  } catch (error) {\n    logRecoverableError(request, error);\n    fatalError(request, error);\n  }\n} // This is called to early terminate a request. It puts all pending boundaries in client rendered state.\n\nfunction abort(request) {\n  try {\n    var abortableTasks = request.abortableTasks;\n    abortableTasks.forEach(abortTask, request);\n    abortableTasks.clear();\n\n    if (request.destination !== null) {\n      flushCompletedQueues(request, request.destination);\n    }\n  } catch (error) {\n    logRecoverableError(request, error);\n    fatalError(request, error);\n  }\n}\n\nfunction renderToReadableStream(children, options) {\n  return new Promise(function (resolve, reject) {\n    var onFatalError;\n    var onAllReady;\n    var allReady = new Promise(function (res, rej) {\n      onAllReady = res;\n      onFatalError = rej;\n    });\n\n    function onShellReady() {\n      var stream = new ReadableStream({\n        type: 'bytes',\n        pull: function (controller) {\n          startFlowing(request, controller);\n        },\n        cancel: function (reason) {\n          abort(request);\n        }\n      }); // TODO: Move to sub-classing ReadableStream.\n\n      stream.allReady = allReady;\n      resolve(stream);\n    }\n\n    function onShellError(error) {\n      // If the shell errors the caller of `renderToReadableStream` won't have access to `allReady`.\n      // However, `allReady` will be rejected by `onFatalError` as well.\n      // So we need to catch the duplicate, uncatchable fatal error in `allReady` to prevent a `UnhandledPromiseRejection`.\n      allReady.catch(function () {});\n      reject(error);\n    }\n\n    var request = createRequest(children, createResponseState(options ? options.identifierPrefix : undefined, options ? options.nonce : undefined, options ? options.bootstrapScriptContent : undefined, options ? options.bootstrapScripts : undefined, options ? options.bootstrapModules : undefined), createRootFormatContext(options ? options.namespaceURI : undefined), options ? options.progressiveChunkSize : undefined, options ? options.onError : undefined, onAllReady, onShellReady, onShellError, onFatalError);\n\n    if (options && options.signal) {\n      var signal = options.signal;\n\n      var listener = function () {\n        abort(request);\n        signal.removeEventListener('abort', listener);\n      };\n\n      signal.addEventListener('abort', listener);\n    }\n\n    startWork(request);\n  });\n}\n\nexports.renderToReadableStream = renderToReadableStream;\nexports.version = ReactVersion;\n  })();\n}\n", "'use strict';\n\nvar l, s;\nif (process.env.NODE_ENV === 'production') {\n  l = require('./cjs/react-dom-server-legacy.browser.production.min.js');\n  s = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n  l = require('./cjs/react-dom-server-legacy.browser.development.js');\n  s = require('./cjs/react-dom-server.browser.development.js');\n}\n\nexports.version = l.version;\nexports.renderToString = l.renderToString;\nexports.renderToStaticMarkup = l.renderToStaticMarkup;\nexports.renderToNodeStream = l.renderToNodeStream;\nexports.renderToStaticNodeStream = l.renderToStaticNodeStream;\nexports.renderToReadableStream = s.renderToReadableStream;\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 (_) 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    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\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 || 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", "import {Context} from '../../core/context';\n\nexport class Bounds {\n    constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n    add(x: number, y: number, w: number, h: number): Bounds {\n        return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n    }\n\n    static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n        return new Bounds(\n            clientRect.left + context.windowBounds.left,\n            clientRect.top + context.windowBounds.top,\n            clientRect.width,\n            clientRect.height\n        );\n    }\n\n    static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n        const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n        return domRect\n            ? new Bounds(\n                  domRect.left + context.windowBounds.left,\n                  domRect.top + context.windowBounds.top,\n                  domRect.width,\n                  domRect.height\n              )\n            : Bounds.EMPTY;\n    }\n\n    static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n    return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n    const body = document.body;\n    const documentElement = document.documentElement;\n\n    if (!body || !documentElement) {\n        throw new Error(`Unable to get document size`);\n    }\n    const width = Math.max(\n        Math.max(body.scrollWidth, documentElement.scrollWidth),\n        Math.max(body.offsetWidth, documentElement.offsetWidth),\n        Math.max(body.clientWidth, documentElement.clientWidth)\n    );\n\n    const height = Math.max(\n        Math.max(body.scrollHeight, documentElement.scrollHeight),\n        Math.max(body.offsetHeight, documentElement.offsetHeight),\n        Math.max(body.clientHeight, documentElement.clientHeight)\n    );\n\n    return new Bounds(0, 0, width, height);\n};\n", "export const toCodePoints = (str: string): number[] => {\n    const codePoints = [];\n    let i = 0;\n    const length = str.length;\n    while (i < length) {\n        const value = str.charCodeAt(i++);\n        if (value >= 0xd800 && value <= 0xdbff && i < length) {\n            const extra = str.charCodeAt(i++);\n            if ((extra & 0xfc00) === 0xdc00) {\n                codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n            } else {\n                codePoints.push(value);\n                i--;\n            }\n        } else {\n            codePoints.push(value);\n        }\n    }\n    return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n    if (String.fromCodePoint) {\n        return String.fromCodePoint(...codePoints);\n    }\n\n    const length = codePoints.length;\n    if (!length) {\n        return '';\n    }\n\n    const codeUnits = [];\n\n    let index = -1;\n    let result = '';\n    while (++index < length) {\n        let codePoint = codePoints[index];\n        if (codePoint <= 0xffff) {\n            codeUnits.push(codePoint);\n        } else {\n            codePoint -= 0x10000;\n            codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n        }\n        if (index + 1 === length || codeUnits.length > 0x4000) {\n            result += String.fromCharCode(...codeUnits);\n            codeUnits.length = 0;\n        }\n    }\n    return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const buffer =\n        typeof ArrayBuffer !== 'undefined' &&\n        typeof Uint8Array !== 'undefined' &&\n        typeof Uint8Array.prototype.slice !== 'undefined'\n            ? new ArrayBuffer(bufferLength)\n            : new Array(bufferLength);\n    const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 2) {\n        bytes.push((buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 4) {\n        bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n", "const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const buffer =\n        typeof ArrayBuffer !== 'undefined' &&\n        typeof Uint8Array !== 'undefined' &&\n        typeof Uint8Array.prototype.slice !== 'undefined'\n            ? new ArrayBuffer(bufferLength)\n            : new Array(bufferLength);\n    const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 2) {\n        bytes.push((buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 4) {\n        bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n", "import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n\n    return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n\n    return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n    const buffer = decode(base64);\n    const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n    const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n    const headerLength = 24;\n\n    const index = slice16(view16, headerLength / 2, view32[4] / 2);\n    const data =\n        view32[5] === 2\n            ? slice16(view16, (headerLength + view32[4]) / 2)\n            : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n    return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n    initialValue: int;\n    errorValue: int;\n    highStart: int;\n    highValueIndex: int;\n    index: Uint16Array | number[];\n    data: Uint32Array | Uint16Array | number[];\n\n    constructor(\n        initialValue: int,\n        errorValue: int,\n        highStart: int,\n        highValueIndex: int,\n        index: Uint16Array | number[],\n        data: Uint32Array | Uint16Array | number[]\n    ) {\n        this.initialValue = initialValue;\n        this.errorValue = errorValue;\n        this.highStart = highStart;\n        this.highValueIndex = highValueIndex;\n        this.index = index;\n        this.data = data;\n    }\n\n    /**\n     * Get the value for a code point as stored in the Trie.\n     *\n     * @param codePoint the code point\n     * @return the value\n     */\n    get(codePoint: number): number {\n        let ix;\n        if (codePoint >= 0) {\n            if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n                // Ordinary BMP code point, excluding leading surrogates.\n                // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\n                // 16 bit data is stored in the index array itself.\n                ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n\n            if (codePoint <= 0xffff) {\n                // Lead Surrogate Code Point.  A Separate index section is stored for\n                // lead surrogate code units and code points.\n                //   The main index has the code unit data.\n                //   For this function, we need the code point data.\n                // Note: this expression could be refactored for slightly improved efficiency, but\n                //       surrogate code points will be so rare in practice that it's not worth it.\n                ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n\n            if (codePoint < this.highStart) {\n                // Supplemental code point, use two-level lookup.\n                ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n                ix = this.index[ix];\n                ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n                ix = this.index[ix];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n            if (codePoint <= 0x10ffff) {\n                return this.data[this.highValueIndex];\n            }\n        }\n\n        // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\n        return this.errorValue;\n    }\n}\n", "const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n    let bytes = new Uint8Array(arraybuffer),\n        i,\n        len = bytes.length,\n        base64 = '';\n\n    for (i = 0; i < len; i += 3) {\n        base64 += chars[bytes[i] >> 2];\n        base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n        base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n        base64 += chars[bytes[i + 2] & 63];\n    }\n\n    if (len % 3 === 2) {\n        base64 = base64.substring(0, base64.length - 1) + '=';\n    } else if (len % 3 === 1) {\n        base64 = base64.substring(0, base64.length - 2) + '==';\n    }\n\n    return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const arraybuffer = new ArrayBuffer(bufferLength),\n        bytes = new Uint8Array(arraybuffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return arraybuffer;\n};\n", "export const base64 =\n    'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n", "'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; //  Cause a line break (after)\nconst CR = 2; //  Cause a line break (after), except between CR and LF\nconst LF = 3; //  Cause a line break (after)\nconst CM = 4; //  Prohibit a line break between the character and the preceding character\nconst NL = 5; //  Cause a line break (after)\nconst SG = 6; //  Do not occur in well-formed text\nconst WJ = 7; //  Prohibit line breaks before and after\nconst ZW = 8; //  Provide a break opportunity\nconst GL = 9; //  Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; //  Provide a line break opportunity before and after the character\nconst BA = 13; //  Generally provide a line break opportunity after the character\nconst BB = 14; //  Generally provide a line break opportunity before the character\nconst HY = 15; //  Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; //   Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; //  Prohibit line breaks before\nconst CP = 18; //  Prohibit line breaks before\nconst EX = 19; //  Prohibit line breaks before\nconst IN = 20; //  Allow only indirect line breaks between pairs\nconst NS = 21; //  Allow only indirect line breaks before\nconst OP = 22; //  Prohibit line breaks after\nconst QU = 23; //  Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; //  Prevent breaks after any and before numeric\nconst NU = 25; //  Form numeric expressions for line breaking purposes\nconst PO = 26; //  Do not break following a numeric expression\nconst PR = 27; //  Do not break in front of a numeric expression\nconst SY = 28; //  Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; //  Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; //  Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; //  Treat as NS or ID for strict or normal breaking.\nconst EB = 32; //  Do not break from following Emoji Modifier\nconst EM = 33; //  Do not break from preceding Emoji Base\nconst H2 = 34; //  Form Korean syllable blocks\nconst H3 = 35; //  Form Korean syllable blocks\nconst HL = 36; //  Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; //  Break before or after; except in some numeric context\nconst JL = 38; //  Form Korean syllable blocks\nconst JV = 39; //  Form Korean syllable blocks\nconst JT = 40; //  Form Korean syllable blocks\nconst RI = 41; //  Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; //  Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; //  Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n    BK,\n    CR,\n    LF,\n    CM,\n    NL,\n    SG,\n    WJ,\n    ZW,\n    GL,\n    SP,\n    ZWJ,\n    B2,\n    BA,\n    BB,\n    HY,\n    CB,\n    CL,\n    CP,\n    EX,\n    IN,\n    NS,\n    OP,\n    QU,\n    IS,\n    NU,\n    PO,\n    PR,\n    SY,\n    AI,\n    AL,\n    CJ,\n    EB,\n    EM,\n    H2,\n    H3,\n    HL,\n    ID,\n    JL,\n    JV,\n    JT,\n    RI,\n    SA,\n    XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n    codePoints: number[],\n    lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n    const types: number[] = [];\n    const indices: number[] = [];\n    const categories: boolean[] = [];\n    codePoints.forEach((codePoint, index) => {\n        let classType = UnicodeTrie.get(codePoint);\n        if (classType > LETTER_NUMBER_MODIFIER) {\n            categories.push(true);\n            classType -= LETTER_NUMBER_MODIFIER;\n        } else {\n            categories.push(false);\n        }\n\n        if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n            // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n            if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n                indices.push(index);\n                return types.push(CB);\n            }\n        }\n\n        if (classType === CM || classType === ZWJ) {\n            // LB10 Treat any remaining combining mark or ZWJ as AL.\n            if (index === 0) {\n                indices.push(index);\n                return types.push(AL);\n            }\n\n            // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n            // the base character in all of the following rules. Treat ZWJ as if it were CM.\n            const prev = types[index - 1];\n            if (LINE_BREAKS.indexOf(prev) === -1) {\n                indices.push(indices[index - 1]);\n                return types.push(prev);\n            }\n            indices.push(index);\n            return types.push(AL);\n        }\n\n        indices.push(index);\n\n        if (classType === CJ) {\n            return types.push(lineBreak === 'strict' ? NS : ID);\n        }\n\n        if (classType === SA) {\n            return types.push(AL);\n        }\n\n        if (classType === AI) {\n            return types.push(AL);\n        }\n\n        // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n        // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n        // to take into account the actual line breaking properties for these characters.\n        if (classType === XX) {\n            if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n                return types.push(ID);\n            } else {\n                return types.push(AL);\n            }\n        }\n\n        types.push(classType);\n    });\n\n    return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n    a: number[] | number,\n    b: number,\n    currentIndex: number,\n    classTypes: number[]\n): boolean => {\n    const current = classTypes[currentIndex];\n    if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n        let i = currentIndex;\n        while (i <= classTypes.length) {\n            i++;\n            let next = classTypes[i];\n\n            if (next === b) {\n                return true;\n            }\n\n            if (next !== SP) {\n                break;\n            }\n        }\n    }\n\n    if (current === SP) {\n        let i = currentIndex;\n\n        while (i > 0) {\n            i--;\n            const prev = classTypes[i];\n\n            if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n                let n = currentIndex;\n                while (n <= classTypes.length) {\n                    n++;\n                    let next = classTypes[n];\n\n                    if (next === b) {\n                        return true;\n                    }\n\n                    if (next !== SP) {\n                        break;\n                    }\n                }\n            }\n\n            if (prev !== SP) {\n                break;\n            }\n        }\n    }\n    return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n    let i = currentIndex;\n    while (i >= 0) {\n        let type = classTypes[i];\n        if (type === SP) {\n            i--;\n        } else {\n            return type;\n        }\n    }\n    return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n    codePoints: number[],\n    classTypes: number[],\n    indicies: number[],\n    index: number,\n    forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n    if (indicies[index] === 0) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    let currentIndex = index - 1;\n    if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    let beforeIndex = currentIndex - 1;\n    let afterIndex = currentIndex + 1;\n    let current = classTypes[currentIndex];\n\n    // LB4 Always break after hard line breaks.\n    // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n    let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n    let next = classTypes[afterIndex];\n\n    if (current === CR && next === LF) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n        return BREAK_MANDATORY;\n    }\n\n    // LB6 Do not break before hard line breaks.\n    if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB7 Do not break before spaces or zero width space.\n    if (SPACE.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n    if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n        return BREAK_ALLOWED;\n    }\n\n    // LB8a Do not break after a zero width joiner.\n    if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // zwj emojis\n    if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB11 Do not break before or after Word joiner and related characters.\n    if (current === WJ || next === WJ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB12 Do not break after NBSP and related characters.\n    if (current === GL) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n    if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n    if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB14 Do not break after ‘[’, even after spaces.\n    if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB15 Do not break within ‘”[’, even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB17 Do not break within ‘——’, even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB18 Break after spaces.\n    if (current === SP) {\n        return BREAK_ALLOWED;\n    }\n\n    // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n    if (current === QU || next === QU) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB20 Break before and after unresolved CB.\n    if (next === CB || current === CB) {\n        return BREAK_ALLOWED;\n    }\n\n    // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n    if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB21a Don't break after Hebrew + Hyphen.\n    if (before === HL && HYPHEN.indexOf(current) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB21b Don’t break between Solidus and Hebrew letters.\n    if (current === SY && next === HL) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB22 Do not break before ellipsis.\n    if (next === IN) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB23 Do not break between digits and letters.\n    if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n    if (\n        (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n        ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n    if (\n        (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n        (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB25 Do not break between the following pairs of classes relevant to numbers:\n    if (\n        // (PR | PO) × ( OP | HY )? NU\n        ([PR, PO].indexOf(current) !== -1 &&\n            (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n        // ( OP | HY ) × NU\n        ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n        // NU ×\t(NU | SY | IS)\n        (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n    if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n        let prevIndex = currentIndex;\n        while (prevIndex >= 0) {\n            let type = classTypes[prevIndex];\n            if (type === NU) {\n                return BREAK_NOT_ALLOWED;\n            } else if ([SY, IS].indexOf(type) !== -1) {\n                prevIndex--;\n            } else {\n                break;\n            }\n        }\n    }\n\n    // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n    if ([PR, PO].indexOf(next) !== -1) {\n        let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n        while (prevIndex >= 0) {\n            let type = classTypes[prevIndex];\n            if (type === NU) {\n                return BREAK_NOT_ALLOWED;\n            } else if ([SY, IS].indexOf(type) !== -1) {\n                prevIndex--;\n            } else {\n                break;\n            }\n        }\n    }\n\n    // LB26 Do not break a Korean syllable.\n    if (\n        (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n        ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n        ([JT, H3].indexOf(current) !== -1 && next === JT)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB27 Treat a Korean Syllable Block the same as ID.\n    if (\n        (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n        (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB28 Do not break between alphabetics (“at”).\n    if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n    if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n    if (\n        (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n            next === OP &&\n            ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n        (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n    // indicators preceding the position of the break.\n    if (current === RI && next === RI) {\n        let i = indicies[currentIndex];\n        let count = 1;\n        while (i > 0) {\n            i--;\n            if (classTypes[i] === RI) {\n                count++;\n            } else {\n                break;\n            }\n        }\n        if (count % 2 !== 0) {\n            return BREAK_NOT_ALLOWED;\n        }\n    }\n\n    // LB30b Do not break between an emoji base and an emoji modifier.\n    if (current === EB && next === EM) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n    // LB2 Never break at the start of text.\n    if (index === 0) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB3 Always break at the end of text.\n    if (index >= codePoints.length) {\n        return BREAK_MANDATORY;\n    }\n\n    const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n    return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n    lineBreak?: LINE_BREAK;\n    wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n    if (!options) {\n        options = {lineBreak: 'normal', wordBreak: 'normal'};\n    }\n    let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n    if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n        classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n    }\n\n    const forbiddenBreakpoints =\n        options.wordBreak === 'keep-all'\n            ? isLetterNumber.map((letterNumber, i) => {\n                  return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n              })\n            : undefined;\n\n    return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n    const codePoints = toCodePoints(str);\n    let output = BREAK_NOT_ALLOWED;\n    const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n    codePoints.forEach((codePoint, i) => {\n        output +=\n            fromCodePoint(codePoint) +\n            (i >= codePoints.length - 1\n                ? BREAK_MANDATORY\n                : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n    });\n\n    return output;\n};\n\nclass Break {\n    private readonly codePoints: number[];\n    readonly required: boolean;\n    readonly start: number;\n    readonly end: number;\n\n    constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n        this.codePoints = codePoints;\n        this.required = lineBreak === BREAK_MANDATORY;\n        this.start = start;\n        this.end = end;\n    }\n\n    slice(): string {\n        return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n    }\n}\n\nexport type LineBreak =\n    | {\n          done: true;\n          value: null;\n      }\n    | {\n          done: false;\n          value: Break;\n      };\n\ninterface ILineBreakIterator {\n    next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n    const codePoints = toCodePoints(str);\n    const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n    const length = codePoints.length;\n    let lastEnd = 0;\n    let nextIndex = 0;\n\n    return {\n        next: () => {\n            if (nextIndex >= length) {\n                return {done: true, value: null};\n            }\n            let lineBreak = BREAK_NOT_ALLOWED;\n            while (\n                nextIndex < length &&\n                (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n                    BREAK_NOT_ALLOWED\n            ) {}\n\n            if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n                const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n                lastEnd = nextIndex;\n                return {value, done: false};\n            }\n\n            return {done: true, value: null};\n        },\n    };\n};\n", "// https://www.w3.org/TR/css-syntax-3\n\nimport {fromCodePoint, toCodePoints} from 'css-line-break';\n\nexport const enum TokenType {\n    STRING_TOKEN,\n    BAD_STRING_TOKEN,\n    LEFT_PARENTHESIS_TOKEN,\n    RIGHT_PARENTHESIS_TOKEN,\n    COMMA_TOKEN,\n    HASH_TOKEN,\n    DELIM_TOKEN,\n    AT_KEYWORD_TOKEN,\n    PREFIX_MATCH_TOKEN,\n    DASH_MATCH_TOKEN,\n    INCLUDE_MATCH_TOKEN,\n    LEFT_CURLY_BRACKET_TOKEN,\n    RIGHT_CURLY_BRACKET_TOKEN,\n    SUFFIX_MATCH_TOKEN,\n    SUBSTRING_MATCH_TOKEN,\n    DIMENSION_TOKEN,\n    PERCENTAGE_TOKEN,\n    NUMBER_TOKEN,\n    FUNCTION,\n    FUNCTION_TOKEN,\n    IDENT_TOKEN,\n    COLUMN_TOKEN,\n    URL_TOKEN,\n    BAD_URL_TOKEN,\n    CDC_TOKEN,\n    CDO_TOKEN,\n    COLON_TOKEN,\n    SEMICOLON_TOKEN,\n    LEFT_SQUARE_BRACKET_TOKEN,\n    RIGHT_SQUARE_BRACKET_TOKEN,\n    UNICODE_RANGE_TOKEN,\n    WHITESPACE_TOKEN,\n    EOF_TOKEN\n}\n\ninterface IToken {\n    type: TokenType;\n}\n\nexport interface Token extends IToken {\n    type:\n        | TokenType.BAD_URL_TOKEN\n        | TokenType.BAD_STRING_TOKEN\n        | TokenType.LEFT_PARENTHESIS_TOKEN\n        | TokenType.RIGHT_PARENTHESIS_TOKEN\n        | TokenType.COMMA_TOKEN\n        | TokenType.SUBSTRING_MATCH_TOKEN\n        | TokenType.PREFIX_MATCH_TOKEN\n        | TokenType.SUFFIX_MATCH_TOKEN\n        | TokenType.COLON_TOKEN\n        | TokenType.SEMICOLON_TOKEN\n        | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n        | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n        | TokenType.LEFT_CURLY_BRACKET_TOKEN\n        | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n        | TokenType.DASH_MATCH_TOKEN\n        | TokenType.INCLUDE_MATCH_TOKEN\n        | TokenType.COLUMN_TOKEN\n        | TokenType.WHITESPACE_TOKEN\n        | TokenType.CDC_TOKEN\n        | TokenType.CDO_TOKEN\n        | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n    type:\n        | TokenType.STRING_TOKEN\n        | TokenType.DELIM_TOKEN\n        | TokenType.FUNCTION_TOKEN\n        | TokenType.IDENT_TOKEN\n        | TokenType.URL_TOKEN\n        | TokenType.AT_KEYWORD_TOKEN;\n    value: string;\n}\n\nexport interface HashToken extends IToken {\n    type: TokenType.HASH_TOKEN;\n    flags: number;\n    value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n    type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n    flags: number;\n    number: number;\n}\n\nexport interface DimensionToken extends IToken {\n    type: TokenType.DIMENSION_TOKEN;\n    flags: number;\n    unit: string;\n    number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n    type: TokenType.UNICODE_RANGE_TOKEN;\n    start: number;\n    end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n    isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n    codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n    isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n    isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n    return (\n        (codePoint >= NULL && codePoint <= BACKSPACE) ||\n        codePoint === LINE_TABULATION ||\n        (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n        codePoint === DELETE\n    );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n    if (c1 !== REVERSE_SOLIDUS) {\n        return false;\n    }\n\n    return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n    if (c1 === HYPHEN_MINUS) {\n        return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n    } else if (isNameStartCodePoint(c1)) {\n        return true;\n    } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n        return true;\n    }\n    return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n    if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n        if (isDigit(c2)) {\n            return true;\n        }\n\n        return c2 === FULL_STOP && isDigit(c3);\n    }\n\n    if (c1 === FULL_STOP) {\n        return isDigit(c2);\n    }\n\n    return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n    let c = 0;\n    let sign = 1;\n    if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n        if (codePoints[c] === HYPHEN_MINUS) {\n            sign = -1;\n        }\n        c++;\n    }\n\n    const integers = [];\n\n    while (isDigit(codePoints[c])) {\n        integers.push(codePoints[c++]);\n    }\n\n    const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n    if (codePoints[c] === FULL_STOP) {\n        c++;\n    }\n\n    const fraction = [];\n    while (isDigit(codePoints[c])) {\n        fraction.push(codePoints[c++]);\n    }\n\n    const fracd = fraction.length;\n    const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n    if (codePoints[c] === E || codePoints[c] === e) {\n        c++;\n    }\n\n    let expsign = 1;\n\n    if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n        if (codePoints[c] === HYPHEN_MINUS) {\n            expsign = -1;\n        }\n        c++;\n    }\n\n    const exponent = [];\n\n    while (isDigit(codePoints[c])) {\n        exponent.push(codePoints[c++]);\n    }\n\n    const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n    return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n    type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n    type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = {type: TokenType.COMMA_TOKEN};\nconst SUFFIX_MATCH_TOKEN: Token = {type: TokenType.SUFFIX_MATCH_TOKEN};\nconst PREFIX_MATCH_TOKEN: Token = {type: TokenType.PREFIX_MATCH_TOKEN};\nconst COLUMN_TOKEN: Token = {type: TokenType.COLUMN_TOKEN};\nconst DASH_MATCH_TOKEN: Token = {type: TokenType.DASH_MATCH_TOKEN};\nconst INCLUDE_MATCH_TOKEN: Token = {type: TokenType.INCLUDE_MATCH_TOKEN};\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n    type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n    type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = {type: TokenType.SUBSTRING_MATCH_TOKEN};\nconst BAD_URL_TOKEN: Token = {type: TokenType.BAD_URL_TOKEN};\nconst BAD_STRING_TOKEN: Token = {type: TokenType.BAD_STRING_TOKEN};\nconst CDO_TOKEN: Token = {type: TokenType.CDO_TOKEN};\nconst CDC_TOKEN: Token = {type: TokenType.CDC_TOKEN};\nconst COLON_TOKEN: Token = {type: TokenType.COLON_TOKEN};\nconst SEMICOLON_TOKEN: Token = {type: TokenType.SEMICOLON_TOKEN};\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n    type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n    type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = {type: TokenType.WHITESPACE_TOKEN};\nexport const EOF_TOKEN: Token = {type: TokenType.EOF_TOKEN};\n\nexport class Tokenizer {\n    private _value: number[];\n\n    constructor() {\n        this._value = [];\n    }\n\n    write(chunk: string): void {\n        this._value = this._value.concat(toCodePoints(chunk));\n    }\n\n    read(): CSSToken[] {\n        const tokens = [];\n        let token = this.consumeToken();\n        while (token !== EOF_TOKEN) {\n            tokens.push(token);\n            token = this.consumeToken();\n        }\n        return tokens;\n    }\n\n    private consumeToken(): CSSToken {\n        const codePoint = this.consumeCodePoint();\n\n        switch (codePoint) {\n            case QUOTATION_MARK:\n                return this.consumeStringToken(QUOTATION_MARK);\n            case NUMBER_SIGN:\n                const c1 = this.peekCodePoint(0);\n                const c2 = this.peekCodePoint(1);\n                const c3 = this.peekCodePoint(2);\n                if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n                    const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n                    const value = this.consumeName();\n\n                    return {type: TokenType.HASH_TOKEN, value, flags};\n                }\n                break;\n            case DOLLAR_SIGN:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return SUFFIX_MATCH_TOKEN;\n                }\n                break;\n            case APOSTROPHE:\n                return this.consumeStringToken(APOSTROPHE);\n            case LEFT_PARENTHESIS:\n                return LEFT_PARENTHESIS_TOKEN;\n            case RIGHT_PARENTHESIS:\n                return RIGHT_PARENTHESIS_TOKEN;\n            case ASTERISK:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return SUBSTRING_MATCH_TOKEN;\n                }\n                break;\n            case PLUS_SIGN:\n                if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeNumericToken();\n                }\n                break;\n            case COMMA:\n                return COMMA_TOKEN;\n            case HYPHEN_MINUS:\n                const e1 = codePoint;\n                const e2 = this.peekCodePoint(0);\n                const e3 = this.peekCodePoint(1);\n\n                if (isNumberStart(e1, e2, e3)) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeNumericToken();\n                }\n\n                if (isIdentifierStart(e1, e2, e3)) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeIdentLikeToken();\n                }\n\n                if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n                    this.consumeCodePoint();\n                    this.consumeCodePoint();\n                    return CDC_TOKEN;\n                }\n                break;\n\n            case FULL_STOP:\n                if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeNumericToken();\n                }\n                break;\n            case SOLIDUS:\n                if (this.peekCodePoint(0) === ASTERISK) {\n                    this.consumeCodePoint();\n                    while (true) {\n                        let c = this.consumeCodePoint();\n                        if (c === ASTERISK) {\n                            c = this.consumeCodePoint();\n                            if (c === SOLIDUS) {\n                                return this.consumeToken();\n                            }\n                        }\n                        if (c === EOF) {\n                            return this.consumeToken();\n                        }\n                    }\n                }\n                break;\n            case COLON:\n                return COLON_TOKEN;\n            case SEMICOLON:\n                return SEMICOLON_TOKEN;\n            case LESS_THAN_SIGN:\n                if (\n                    this.peekCodePoint(0) === EXCLAMATION_MARK &&\n                    this.peekCodePoint(1) === HYPHEN_MINUS &&\n                    this.peekCodePoint(2) === HYPHEN_MINUS\n                ) {\n                    this.consumeCodePoint();\n                    this.consumeCodePoint();\n                    return CDO_TOKEN;\n                }\n                break;\n            case COMMERCIAL_AT:\n                const a1 = this.peekCodePoint(0);\n                const a2 = this.peekCodePoint(1);\n                const a3 = this.peekCodePoint(2);\n                if (isIdentifierStart(a1, a2, a3)) {\n                    const value = this.consumeName();\n                    return {type: TokenType.AT_KEYWORD_TOKEN, value};\n                }\n                break;\n            case LEFT_SQUARE_BRACKET:\n                return LEFT_SQUARE_BRACKET_TOKEN;\n            case REVERSE_SOLIDUS:\n                if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeIdentLikeToken();\n                }\n                break;\n            case RIGHT_SQUARE_BRACKET:\n                return RIGHT_SQUARE_BRACKET_TOKEN;\n            case CIRCUMFLEX_ACCENT:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return PREFIX_MATCH_TOKEN;\n                }\n                break;\n            case LEFT_CURLY_BRACKET:\n                return LEFT_CURLY_BRACKET_TOKEN;\n            case RIGHT_CURLY_BRACKET:\n                return RIGHT_CURLY_BRACKET_TOKEN;\n            case u:\n            case U:\n                const u1 = this.peekCodePoint(0);\n                const u2 = this.peekCodePoint(1);\n                if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n                    this.consumeCodePoint();\n                    this.consumeUnicodeRangeToken();\n                }\n                this.reconsumeCodePoint(codePoint);\n                return this.consumeIdentLikeToken();\n            case VERTICAL_LINE:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return DASH_MATCH_TOKEN;\n                }\n                if (this.peekCodePoint(0) === VERTICAL_LINE) {\n                    this.consumeCodePoint();\n                    return COLUMN_TOKEN;\n                }\n                break;\n            case TILDE:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return INCLUDE_MATCH_TOKEN;\n                }\n                break;\n            case EOF:\n                return EOF_TOKEN;\n        }\n\n        if (isWhiteSpace(codePoint)) {\n            this.consumeWhiteSpace();\n            return WHITESPACE_TOKEN;\n        }\n\n        if (isDigit(codePoint)) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeNumericToken();\n        }\n\n        if (isNameStartCodePoint(codePoint)) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeIdentLikeToken();\n        }\n\n        return {type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint)};\n    }\n\n    private consumeCodePoint(): number {\n        const value = this._value.shift();\n\n        return typeof value === 'undefined' ? -1 : value;\n    }\n\n    private reconsumeCodePoint(codePoint: number) {\n        this._value.unshift(codePoint);\n    }\n\n    private peekCodePoint(delta: number): number {\n        if (delta >= this._value.length) {\n            return -1;\n        }\n\n        return this._value[delta];\n    }\n\n    private consumeUnicodeRangeToken(): UnicodeRangeToken {\n        const digits = [];\n        let codePoint = this.consumeCodePoint();\n        while (isHex(codePoint) && digits.length < 6) {\n            digits.push(codePoint);\n            codePoint = this.consumeCodePoint();\n        }\n        let questionMarks = false;\n        while (codePoint === QUESTION_MARK && digits.length < 6) {\n            digits.push(codePoint);\n            codePoint = this.consumeCodePoint();\n            questionMarks = true;\n        }\n\n        if (questionMarks) {\n            const start = parseInt(\n                fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n                16\n            );\n            const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n            return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n        }\n\n        const start = parseInt(fromCodePoint(...digits), 16);\n        if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n            this.consumeCodePoint();\n            codePoint = this.consumeCodePoint();\n            const endDigits = [];\n            while (isHex(codePoint) && endDigits.length < 6) {\n                endDigits.push(codePoint);\n                codePoint = this.consumeCodePoint();\n            }\n            const end = parseInt(fromCodePoint(...endDigits), 16);\n\n            return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n        } else {\n            return {type: TokenType.UNICODE_RANGE_TOKEN, start, end: start};\n        }\n    }\n\n    private consumeIdentLikeToken(): StringValueToken | Token {\n        const value = this.consumeName();\n        if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n            this.consumeCodePoint();\n            return this.consumeUrlToken();\n        } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n            this.consumeCodePoint();\n            return {type: TokenType.FUNCTION_TOKEN, value};\n        }\n\n        return {type: TokenType.IDENT_TOKEN, value};\n    }\n\n    private consumeUrlToken(): StringValueToken | Token {\n        const value = [];\n        this.consumeWhiteSpace();\n\n        if (this.peekCodePoint(0) === EOF) {\n            return {type: TokenType.URL_TOKEN, value: ''};\n        }\n\n        const next = this.peekCodePoint(0);\n        if (next === APOSTROPHE || next === QUOTATION_MARK) {\n            const stringToken = this.consumeStringToken(this.consumeCodePoint());\n            if (stringToken.type === TokenType.STRING_TOKEN) {\n                this.consumeWhiteSpace();\n\n                if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n                    this.consumeCodePoint();\n                    return {type: TokenType.URL_TOKEN, value: stringToken.value};\n                }\n            }\n\n            this.consumeBadUrlRemnants();\n            return BAD_URL_TOKEN;\n        }\n\n        while (true) {\n            const codePoint = this.consumeCodePoint();\n            if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n                return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n            } else if (isWhiteSpace(codePoint)) {\n                this.consumeWhiteSpace();\n                if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n                    this.consumeCodePoint();\n                    return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n                }\n                this.consumeBadUrlRemnants();\n                return BAD_URL_TOKEN;\n            } else if (\n                codePoint === QUOTATION_MARK ||\n                codePoint === APOSTROPHE ||\n                codePoint === LEFT_PARENTHESIS ||\n                isNonPrintableCodePoint(codePoint)\n            ) {\n                this.consumeBadUrlRemnants();\n                return BAD_URL_TOKEN;\n            } else if (codePoint === REVERSE_SOLIDUS) {\n                if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                    value.push(this.consumeEscapedCodePoint());\n                } else {\n                    this.consumeBadUrlRemnants();\n                    return BAD_URL_TOKEN;\n                }\n            } else {\n                value.push(codePoint);\n            }\n        }\n    }\n\n    private consumeWhiteSpace(): void {\n        while (isWhiteSpace(this.peekCodePoint(0))) {\n            this.consumeCodePoint();\n        }\n    }\n\n    private consumeBadUrlRemnants(): void {\n        while (true) {\n            const codePoint = this.consumeCodePoint();\n            if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n                return;\n            }\n\n            if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                this.consumeEscapedCodePoint();\n            }\n        }\n    }\n\n    private consumeStringSlice(count: number): string {\n        const SLICE_STACK_SIZE = 50000;\n        let value = '';\n        while (count > 0) {\n            const amount = Math.min(SLICE_STACK_SIZE, count);\n            value += fromCodePoint(...this._value.splice(0, amount));\n            count -= amount;\n        }\n        this._value.shift();\n\n        return value;\n    }\n\n    private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n        let value = '';\n        let i = 0;\n\n        do {\n            const codePoint = this._value[i];\n            if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n                value += this.consumeStringSlice(i);\n                return {type: TokenType.STRING_TOKEN, value};\n            }\n\n            if (codePoint === LINE_FEED) {\n                this._value.splice(0, i);\n                return BAD_STRING_TOKEN;\n            }\n\n            if (codePoint === REVERSE_SOLIDUS) {\n                const next = this._value[i + 1];\n                if (next !== EOF && next !== undefined) {\n                    if (next === LINE_FEED) {\n                        value += this.consumeStringSlice(i);\n                        i = -1;\n                        this._value.shift();\n                    } else if (isValidEscape(codePoint, next)) {\n                        value += this.consumeStringSlice(i);\n                        value += fromCodePoint(this.consumeEscapedCodePoint());\n                        i = -1;\n                    }\n                }\n            }\n\n            i++;\n        } while (true);\n    }\n\n    private consumeNumber() {\n        const repr = [];\n        let type = FLAG_INTEGER;\n        let c1 = this.peekCodePoint(0);\n        if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n            repr.push(this.consumeCodePoint());\n        }\n\n        while (isDigit(this.peekCodePoint(0))) {\n            repr.push(this.consumeCodePoint());\n        }\n        c1 = this.peekCodePoint(0);\n        let c2 = this.peekCodePoint(1);\n        if (c1 === FULL_STOP && isDigit(c2)) {\n            repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n            type = FLAG_NUMBER;\n            while (isDigit(this.peekCodePoint(0))) {\n                repr.push(this.consumeCodePoint());\n            }\n        }\n\n        c1 = this.peekCodePoint(0);\n        c2 = this.peekCodePoint(1);\n        const c3 = this.peekCodePoint(2);\n        if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n            repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n            type = FLAG_NUMBER;\n            while (isDigit(this.peekCodePoint(0))) {\n                repr.push(this.consumeCodePoint());\n            }\n        }\n\n        return [stringToNumber(repr), type];\n    }\n\n    private consumeNumericToken(): NumberValueToken | DimensionToken {\n        const [number, flags] = this.consumeNumber();\n        const c1 = this.peekCodePoint(0);\n        const c2 = this.peekCodePoint(1);\n        const c3 = this.peekCodePoint(2);\n\n        if (isIdentifierStart(c1, c2, c3)) {\n            const unit = this.consumeName();\n            return {type: TokenType.DIMENSION_TOKEN, number, flags, unit};\n        }\n\n        if (c1 === PERCENTAGE_SIGN) {\n            this.consumeCodePoint();\n            return {type: TokenType.PERCENTAGE_TOKEN, number, flags};\n        }\n\n        return {type: TokenType.NUMBER_TOKEN, number, flags};\n    }\n\n    private consumeEscapedCodePoint(): number {\n        const codePoint = this.consumeCodePoint();\n\n        if (isHex(codePoint)) {\n            let hex = fromCodePoint(codePoint);\n            while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n                hex += fromCodePoint(this.consumeCodePoint());\n            }\n\n            if (isWhiteSpace(this.peekCodePoint(0))) {\n                this.consumeCodePoint();\n            }\n\n            const hexCodePoint = parseInt(hex, 16);\n\n            if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n                return REPLACEMENT_CHARACTER;\n            }\n\n            return hexCodePoint;\n        }\n\n        if (codePoint === EOF) {\n            return REPLACEMENT_CHARACTER;\n        }\n\n        return codePoint;\n    }\n\n    private consumeName(): string {\n        let result = '';\n        while (true) {\n            const codePoint = this.consumeCodePoint();\n            if (isNameCodePoint(codePoint)) {\n                result += fromCodePoint(codePoint);\n            } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                result += fromCodePoint(this.consumeEscapedCodePoint());\n            } else {\n                this.reconsumeCodePoint(codePoint);\n                return result;\n            }\n        }\n    }\n}\n", "import {\n    CSSToken,\n    DimensionToken,\n    EOF_TOKEN,\n    NumberValueToken,\n    StringValueToken,\n    Tokenizer,\n    TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n    | TokenType.LEFT_PARENTHESIS_TOKEN\n    | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n    | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n    type: CSSBlockType;\n    values: CSSValue[];\n}\n\nexport interface CSSFunction {\n    type: TokenType.FUNCTION;\n    name: string;\n    values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n    private _tokens: CSSToken[];\n\n    constructor(tokens: CSSToken[]) {\n        this._tokens = tokens;\n    }\n\n    static create(value: string): Parser {\n        const tokenizer = new Tokenizer();\n        tokenizer.write(value);\n        return new Parser(tokenizer.read());\n    }\n\n    static parseValue(value: string): CSSValue {\n        return Parser.create(value).parseComponentValue();\n    }\n\n    static parseValues(value: string): CSSValue[] {\n        return Parser.create(value).parseComponentValues();\n    }\n\n    parseComponentValue(): CSSValue {\n        let token = this.consumeToken();\n        while (token.type === TokenType.WHITESPACE_TOKEN) {\n            token = this.consumeToken();\n        }\n\n        if (token.type === TokenType.EOF_TOKEN) {\n            throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n        }\n\n        this.reconsumeToken(token);\n        const value = this.consumeComponentValue();\n\n        do {\n            token = this.consumeToken();\n        } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n        if (token.type === TokenType.EOF_TOKEN) {\n            return value;\n        }\n\n        throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n    }\n\n    parseComponentValues(): CSSValue[] {\n        const values = [];\n        while (true) {\n            const value = this.consumeComponentValue();\n            if (value.type === TokenType.EOF_TOKEN) {\n                return values;\n            }\n            values.push(value);\n            values.push();\n        }\n    }\n\n    private consumeComponentValue(): CSSValue {\n        const token = this.consumeToken();\n\n        switch (token.type) {\n            case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n            case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n            case TokenType.LEFT_PARENTHESIS_TOKEN:\n                return this.consumeSimpleBlock(token.type);\n            case TokenType.FUNCTION_TOKEN:\n                return this.consumeFunction(token);\n        }\n\n        return token;\n    }\n\n    private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n        const block: CSSBlock = {type, values: []};\n\n        let token = this.consumeToken();\n        while (true) {\n            if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n                return block;\n            }\n\n            this.reconsumeToken(token);\n            block.values.push(this.consumeComponentValue());\n            token = this.consumeToken();\n        }\n    }\n\n    private consumeFunction(functionToken: StringValueToken): CSSFunction {\n        const cssFunction: CSSFunction = {\n            name: functionToken.value,\n            values: [],\n            type: TokenType.FUNCTION\n        };\n\n        while (true) {\n            const token = this.consumeToken();\n            if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n                return cssFunction;\n            }\n\n            this.reconsumeToken(token);\n            cssFunction.values.push(this.consumeComponentValue());\n        }\n    }\n\n    private consumeToken(): CSSToken {\n        const token = this._tokens.shift();\n        return typeof token === 'undefined' ? EOF_TOKEN : token;\n    }\n\n    private reconsumeToken(token: CSSToken): void {\n        this._tokens.unshift(token);\n    }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n    isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n    token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n    const args: CSSValue[][] = [];\n    let arg: CSSValue[] = [];\n    tokens.forEach((token) => {\n        if (token.type === TokenType.COMMA_TOKEN) {\n            if (arg.length === 0) {\n                throw new Error(`Error parsing function args, zero tokens for arg`);\n            }\n            args.push(arg);\n            arg = [];\n            return;\n        }\n\n        if (token.type !== TokenType.WHITESPACE_TOKEN) {\n            arg.push(token);\n        }\n    });\n    if (arg.length) {\n        args.push(arg);\n    }\n\n    return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n    if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n        return true;\n    }\n    if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n        return true;\n    }\n\n    return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n", "import {CSSValue} from '../syntax/parser';\nimport {DimensionToken, NumberValueToken, TokenType} from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n    token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n", "import {DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {isLength} from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n    token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n    tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n    type: TokenType.NUMBER_TOKEN,\n    number: 0,\n    flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n    type: TokenType.PERCENTAGE_TOKEN,\n    number: 50,\n    flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n    type: TokenType.PERCENTAGE_TOKEN,\n    number: 100,\n    flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n    tuple: LengthPercentageTuple,\n    width: number,\n    height: number\n): [number, number] => {\n    const [x, y] = tuple;\n    return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n    if (token.type === TokenType.PERCENTAGE_TOKEN) {\n        return (token.number / 100) * parent;\n    }\n\n    if (isDimensionToken(token)) {\n        switch (token.unit) {\n            case 'rem':\n            case 'em':\n                return 16 * token.number; // TODO use correct font-size\n            case 'px':\n            default:\n                return token.number;\n        }\n    }\n\n    return token.number;\n};\n", "import {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage';\nimport {GradientCorner} from './image';\nimport {Context} from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor<number> = {\n    name: 'angle',\n    parse: (_context: Context, value: CSSValue): number => {\n        if (value.type === TokenType.DIMENSION_TOKEN) {\n            switch (value.unit) {\n                case DEG:\n                    return (Math.PI * value.number) / 180;\n                case GRAD:\n                    return (Math.PI / 200) * value.number;\n                case RAD:\n                    return value.number;\n                case TURN:\n                    return Math.PI * 2 * value.number;\n            }\n        }\n\n        throw new Error(`Unsupported angle type`);\n    }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n    if (value.type === TokenType.DIMENSION_TOKEN) {\n        if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n            return true;\n        }\n    }\n    return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n    const sideOrCorner = tokens\n        .filter(isIdentToken)\n        .map((ident) => ident.value)\n        .join(' ');\n\n    switch (sideOrCorner) {\n        case 'to bottom right':\n        case 'to right bottom':\n        case 'left top':\n        case 'top left':\n            return [ZERO_LENGTH, ZERO_LENGTH];\n        case 'to top':\n        case 'bottom':\n            return deg(0);\n        case 'to bottom left':\n        case 'to left bottom':\n        case 'right top':\n        case 'top right':\n            return [ZERO_LENGTH, HUNDRED_PERCENT];\n        case 'to right':\n        case 'left':\n            return deg(90);\n        case 'to top left':\n        case 'to left top':\n        case 'right bottom':\n        case 'bottom right':\n            return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n        case 'to bottom':\n        case 'top':\n            return deg(180);\n        case 'to top right':\n        case 'to right top':\n        case 'left bottom':\n        case 'bottom left':\n            return [HUNDRED_PERCENT, ZERO_LENGTH];\n        case 'to left':\n        case 'right':\n            return deg(270);\n    }\n\n    return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n", "import {CSSValue, nonFunctionArgSeparator, Parser} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {angle, deg} from './angle';\nimport {getAbsoluteValue, isLengthPercentage} from './length-percentage';\nimport {Context} from '../../core/context';\nexport type Color = number;\n\nexport const color: ITypeDescriptor<Color> = {\n    name: 'color',\n    parse: (context: Context, value: CSSValue): Color => {\n        if (value.type === TokenType.FUNCTION) {\n            const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n            if (typeof colorFunction === 'undefined') {\n                throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n            }\n            return colorFunction(context, value.values);\n        }\n\n        if (value.type === TokenType.HASH_TOKEN) {\n            if (value.value.length === 3) {\n                const r = value.value.substring(0, 1);\n                const g = value.value.substring(1, 2);\n                const b = value.value.substring(2, 3);\n                return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n            }\n\n            if (value.value.length === 4) {\n                const r = value.value.substring(0, 1);\n                const g = value.value.substring(1, 2);\n                const b = value.value.substring(2, 3);\n                const a = value.value.substring(3, 4);\n                return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n            }\n\n            if (value.value.length === 6) {\n                const r = value.value.substring(0, 2);\n                const g = value.value.substring(2, 4);\n                const b = value.value.substring(4, 6);\n                return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n            }\n\n            if (value.value.length === 8) {\n                const r = value.value.substring(0, 2);\n                const g = value.value.substring(2, 4);\n                const b = value.value.substring(4, 6);\n                const a = value.value.substring(6, 8);\n                return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n            }\n        }\n\n        if (value.type === TokenType.IDENT_TOKEN) {\n            const namedColor = COLORS[value.value.toUpperCase()];\n            if (typeof namedColor !== 'undefined') {\n                return namedColor;\n            }\n        }\n\n        return COLORS.TRANSPARENT;\n    }\n};\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n    const alpha = 0xff & color;\n    const blue = 0xff & (color >> 8);\n    const green = 0xff & (color >> 16);\n    const red = 0xff & (color >> 24);\n    return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n    ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nconst getTokenColorValue = (token: CSSValue, i: number): number => {\n    if (token.type === TokenType.NUMBER_TOKEN) {\n        return token.number;\n    }\n\n    if (token.type === TokenType.PERCENTAGE_TOKEN) {\n        const max = i === 3 ? 1 : 255;\n        return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n    }\n\n    return 0;\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n    const tokens = args.filter(nonFunctionArgSeparator);\n\n    if (tokens.length === 3) {\n        const [r, g, b] = tokens.map(getTokenColorValue);\n        return pack(r, g, b, 1);\n    }\n\n    if (tokens.length === 4) {\n        const [r, g, b, a] = tokens.map(getTokenColorValue);\n        return pack(r, g, b, a);\n    }\n\n    return 0;\n};\n\nfunction hue2rgb(t1: number, t2: number, hue: number): number {\n    if (hue < 0) {\n        hue += 1;\n    }\n    if (hue >= 1) {\n        hue -= 1;\n    }\n\n    if (hue < 1 / 6) {\n        return (t2 - t1) * hue * 6 + t1;\n    } else if (hue < 1 / 2) {\n        return t2;\n    } else if (hue < 2 / 3) {\n        return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n    } else {\n        return t1;\n    }\n}\n\nconst hsl = (context: Context, args: CSSValue[]): number => {\n    const tokens = args.filter(nonFunctionArgSeparator);\n    const [hue, saturation, lightness, alpha] = tokens;\n\n    const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n    const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n    const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n    const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n    if (s === 0) {\n        return pack(l * 255, l * 255, l * 255, 1);\n    }\n\n    const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n\n    const t1 = l * 2 - t2;\n    const r = hue2rgb(t1, t2, h + 1 / 3);\n    const g = hue2rgb(t1, t2, h);\n    const b = hue2rgb(t1, t2, h - 1 / 3);\n    return pack(r * 255, g * 255, b * 255, a);\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n    [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n    hsl: hsl,\n    hsla: hsl,\n    rgb: rgb,\n    rgba: rgb\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n    color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: {[key: string]: Color} = {\n    ALICEBLUE: 0xf0f8ffff,\n    ANTIQUEWHITE: 0xfaebd7ff,\n    AQUA: 0x00ffffff,\n    AQUAMARINE: 0x7fffd4ff,\n    AZURE: 0xf0ffffff,\n    BEIGE: 0xf5f5dcff,\n    BISQUE: 0xffe4c4ff,\n    BLACK: 0x000000ff,\n    BLANCHEDALMOND: 0xffebcdff,\n    BLUE: 0x0000ffff,\n    BLUEVIOLET: 0x8a2be2ff,\n    BROWN: 0xa52a2aff,\n    BURLYWOOD: 0xdeb887ff,\n    CADETBLUE: 0x5f9ea0ff,\n    CHARTREUSE: 0x7fff00ff,\n    CHOCOLATE: 0xd2691eff,\n    CORAL: 0xff7f50ff,\n    CORNFLOWERBLUE: 0x6495edff,\n    CORNSILK: 0xfff8dcff,\n    CRIMSON: 0xdc143cff,\n    CYAN: 0x00ffffff,\n    DARKBLUE: 0x00008bff,\n    DARKCYAN: 0x008b8bff,\n    DARKGOLDENROD: 0xb886bbff,\n    DARKGRAY: 0xa9a9a9ff,\n    DARKGREEN: 0x006400ff,\n    DARKGREY: 0xa9a9a9ff,\n    DARKKHAKI: 0xbdb76bff,\n    DARKMAGENTA: 0x8b008bff,\n    DARKOLIVEGREEN: 0x556b2fff,\n    DARKORANGE: 0xff8c00ff,\n    DARKORCHID: 0x9932ccff,\n    DARKRED: 0x8b0000ff,\n    DARKSALMON: 0xe9967aff,\n    DARKSEAGREEN: 0x8fbc8fff,\n    DARKSLATEBLUE: 0x483d8bff,\n    DARKSLATEGRAY: 0x2f4f4fff,\n    DARKSLATEGREY: 0x2f4f4fff,\n    DARKTURQUOISE: 0x00ced1ff,\n    DARKVIOLET: 0x9400d3ff,\n    DEEPPINK: 0xff1493ff,\n    DEEPSKYBLUE: 0x00bfffff,\n    DIMGRAY: 0x696969ff,\n    DIMGREY: 0x696969ff,\n    DODGERBLUE: 0x1e90ffff,\n    FIREBRICK: 0xb22222ff,\n    FLORALWHITE: 0xfffaf0ff,\n    FORESTGREEN: 0x228b22ff,\n    FUCHSIA: 0xff00ffff,\n    GAINSBORO: 0xdcdcdcff,\n    GHOSTWHITE: 0xf8f8ffff,\n    GOLD: 0xffd700ff,\n    GOLDENROD: 0xdaa520ff,\n    GRAY: 0x808080ff,\n    GREEN: 0x008000ff,\n    GREENYELLOW: 0xadff2fff,\n    GREY: 0x808080ff,\n    HONEYDEW: 0xf0fff0ff,\n    HOTPINK: 0xff69b4ff,\n    INDIANRED: 0xcd5c5cff,\n    INDIGO: 0x4b0082ff,\n    IVORY: 0xfffff0ff,\n    KHAKI: 0xf0e68cff,\n    LAVENDER: 0xe6e6faff,\n    LAVENDERBLUSH: 0xfff0f5ff,\n    LAWNGREEN: 0x7cfc00ff,\n    LEMONCHIFFON: 0xfffacdff,\n    LIGHTBLUE: 0xadd8e6ff,\n    LIGHTCORAL: 0xf08080ff,\n    LIGHTCYAN: 0xe0ffffff,\n    LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n    LIGHTGRAY: 0xd3d3d3ff,\n    LIGHTGREEN: 0x90ee90ff,\n    LIGHTGREY: 0xd3d3d3ff,\n    LIGHTPINK: 0xffb6c1ff,\n    LIGHTSALMON: 0xffa07aff,\n    LIGHTSEAGREEN: 0x20b2aaff,\n    LIGHTSKYBLUE: 0x87cefaff,\n    LIGHTSLATEGRAY: 0x778899ff,\n    LIGHTSLATEGREY: 0x778899ff,\n    LIGHTSTEELBLUE: 0xb0c4deff,\n    LIGHTYELLOW: 0xffffe0ff,\n    LIME: 0x00ff00ff,\n    LIMEGREEN: 0x32cd32ff,\n    LINEN: 0xfaf0e6ff,\n    MAGENTA: 0xff00ffff,\n    MAROON: 0x800000ff,\n    MEDIUMAQUAMARINE: 0x66cdaaff,\n    MEDIUMBLUE: 0x0000cdff,\n    MEDIUMORCHID: 0xba55d3ff,\n    MEDIUMPURPLE: 0x9370dbff,\n    MEDIUMSEAGREEN: 0x3cb371ff,\n    MEDIUMSLATEBLUE: 0x7b68eeff,\n    MEDIUMSPRINGGREEN: 0x00fa9aff,\n    MEDIUMTURQUOISE: 0x48d1ccff,\n    MEDIUMVIOLETRED: 0xc71585ff,\n    MIDNIGHTBLUE: 0x191970ff,\n    MINTCREAM: 0xf5fffaff,\n    MISTYROSE: 0xffe4e1ff,\n    MOCCASIN: 0xffe4b5ff,\n    NAVAJOWHITE: 0xffdeadff,\n    NAVY: 0x000080ff,\n    OLDLACE: 0xfdf5e6ff,\n    OLIVE: 0x808000ff,\n    OLIVEDRAB: 0x6b8e23ff,\n    ORANGE: 0xffa500ff,\n    ORANGERED: 0xff4500ff,\n    ORCHID: 0xda70d6ff,\n    PALEGOLDENROD: 0xeee8aaff,\n    PALEGREEN: 0x98fb98ff,\n    PALETURQUOISE: 0xafeeeeff,\n    PALEVIOLETRED: 0xdb7093ff,\n    PAPAYAWHIP: 0xffefd5ff,\n    PEACHPUFF: 0xffdab9ff,\n    PERU: 0xcd853fff,\n    PINK: 0xffc0cbff,\n    PLUM: 0xdda0ddff,\n    POWDERBLUE: 0xb0e0e6ff,\n    PURPLE: 0x800080ff,\n    REBECCAPURPLE: 0x663399ff,\n    RED: 0xff0000ff,\n    ROSYBROWN: 0xbc8f8fff,\n    ROYALBLUE: 0x4169e1ff,\n    SADDLEBROWN: 0x8b4513ff,\n    SALMON: 0xfa8072ff,\n    SANDYBROWN: 0xf4a460ff,\n    SEAGREEN: 0x2e8b57ff,\n    SEASHELL: 0xfff5eeff,\n    SIENNA: 0xa0522dff,\n    SILVER: 0xc0c0c0ff,\n    SKYBLUE: 0x87ceebff,\n    SLATEBLUE: 0x6a5acdff,\n    SLATEGRAY: 0x708090ff,\n    SLATEGREY: 0x708090ff,\n    SNOW: 0xfffafaff,\n    SPRINGGREEN: 0x00ff7fff,\n    STEELBLUE: 0x4682b4ff,\n    TAN: 0xd2b48cff,\n    TEAL: 0x008080ff,\n    THISTLE: 0xd8bfd8ff,\n    TOMATO: 0xff6347ff,\n    TRANSPARENT: 0x00000000,\n    TURQUOISE: 0x40e0d0ff,\n    VIOLET: 0xee82eeff,\n    WHEAT: 0xf5deb3ff,\n    WHITE: 0xffffffff,\n    WHITESMOKE: 0xf5f5f5ff,\n    YELLOW: 0xffff00ff,\n    YELLOWGREEN: 0x9acd32ff\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n    BORDER_BOX = 0,\n    PADDING_BOX = 1,\n    CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor<BackgroundClip> = {\n    name: 'background-clip',\n    initialValue: 'border-box',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n        return tokens.map((token) => {\n            if (isIdentToken(token)) {\n                switch (token.value) {\n                    case 'padding-box':\n                        return BACKGROUND_CLIP.PADDING_BOX;\n                    case 'content-box':\n                        return BACKGROUND_CLIP.CONTENT_BOX;\n                }\n            }\n            return BACKGROUND_CLIP.BORDER_BOX;\n        });\n    }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n    name: `background-color`,\n    initialValue: 'transparent',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n};\n", "import {CSSValue} from '../../syntax/parser';\nimport {\n    CSSRadialExtent,\n    CSSRadialGradientImage,\n    CSSRadialShape,\n    GradientColorStop,\n    GradientCorner,\n    UnprocessedGradientColorStop\n} from '../image';\nimport {color as colorType} from '../color';\nimport {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n    const color = colorType.parse(context, args[0]);\n    const stop = args[1];\n    return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null};\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n    const first = stops[0];\n    const last = stops[stops.length - 1];\n    if (first.stop === null) {\n        first.stop = ZERO_LENGTH;\n    }\n\n    if (last.stop === null) {\n        last.stop = HUNDRED_PERCENT;\n    }\n\n    const processStops: (number | null)[] = [];\n    let previous = 0;\n    for (let i = 0; i < stops.length; i++) {\n        const stop = stops[i].stop;\n        if (stop !== null) {\n            const absoluteValue = getAbsoluteValue(stop, lineLength);\n            if (absoluteValue > previous) {\n                processStops.push(absoluteValue);\n            } else {\n                processStops.push(previous);\n            }\n            previous = absoluteValue;\n        } else {\n            processStops.push(null);\n        }\n    }\n\n    let gapBegin = null;\n    for (let i = 0; i < processStops.length; i++) {\n        const stop = processStops[i];\n        if (stop === null) {\n            if (gapBegin === null) {\n                gapBegin = i;\n            }\n        } else if (gapBegin !== null) {\n            const gapLength = i - gapBegin;\n            const beforeGap = processStops[gapBegin - 1] as number;\n            const gapValue = (stop - beforeGap) / (gapLength + 1);\n            for (let g = 1; g <= gapLength; g++) {\n                processStops[gapBegin + g - 1] = gapValue * g;\n            }\n            gapBegin = null;\n        }\n    }\n\n    return stops.map(({color}, i) => {\n        return {color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0)};\n    });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n    const centerX = width / 2;\n    const centerY = height / 2;\n    const x = getAbsoluteValue(corner[0], width) - centerX;\n    const y = centerY - getAbsoluteValue(corner[1], height);\n\n    return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n    angle: number | GradientCorner,\n    width: number,\n    height: number\n): [number, number, number, number, number] => {\n    const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n    const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n    const halfWidth = width / 2;\n    const halfHeight = height / 2;\n    const halfLineLength = lineLength / 2;\n\n    const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n    const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n    return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n    const corners = [\n        [0, 0],\n        [0, height],\n        [width, 0],\n        [width, height]\n    ];\n\n    return corners.reduce(\n        (stat, corner) => {\n            const [cx, cy] = corner;\n            const d = distance(x - cx, y - cy);\n            if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n                return {\n                    optimumCorner: corner,\n                    optimumDistance: d\n                };\n            }\n\n            return stat;\n        },\n        {\n            optimumDistance: closest ? Infinity : -Infinity,\n            optimumCorner: null\n        }\n    ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n    gradient: CSSRadialGradientImage,\n    x: number,\n    y: number,\n    width: number,\n    height: number\n): [number, number] => {\n    let rx = 0;\n    let ry = 0;\n\n    switch (gradient.size) {\n        case CSSRadialExtent.CLOSEST_SIDE:\n            // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n            // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n            if (gradient.shape === CSSRadialShape.CIRCLE) {\n                rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n            } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n                rx = Math.min(Math.abs(x), Math.abs(x - width));\n                ry = Math.min(Math.abs(y), Math.abs(y - height));\n            }\n            break;\n\n        case CSSRadialExtent.CLOSEST_CORNER:\n            // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n            // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n            if (gradient.shape === CSSRadialShape.CIRCLE) {\n                rx = ry = Math.min(\n                    distance(x, y),\n                    distance(x, y - height),\n                    distance(x - width, y),\n                    distance(x - width, y - height)\n                );\n            } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n                // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n                const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n                const [cx, cy] = findCorner(width, height, x, y, true);\n                rx = distance(cx - x, (cy - y) / c);\n                ry = c * rx;\n            }\n            break;\n\n        case CSSRadialExtent.FARTHEST_SIDE:\n            // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n            if (gradient.shape === CSSRadialShape.CIRCLE) {\n                rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n            } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n                rx = Math.max(Math.abs(x), Math.abs(x - width));\n                ry = Math.max(Math.abs(y), Math.abs(y - height));\n            }\n            break;\n\n        case CSSRadialExtent.FARTHEST_CORNER:\n            // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n            // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n            if (gradient.shape === CSSRadialShape.CIRCLE) {\n                rx = ry = Math.max(\n                    distance(x, y),\n                    distance(x, y - height),\n                    distance(x - width, y),\n                    distance(x - width, y - height)\n                );\n            } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n                // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n                const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n                const [cx, cy] = findCorner(width, height, x, y, false);\n                rx = distance(cx - x, (cy - y) / c);\n                ry = c * rx;\n            }\n            break;\n    }\n\n    if (Array.isArray(gradient.size)) {\n        rx = getAbsoluteValue(gradient.size[0], width);\n        ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n    }\n\n    return [rx, ry];\n};\n", "import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n    let angle: number | GradientCorner = deg(180);\n    const stops: UnprocessedGradientColorStop[] = [];\n\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        if (i === 0) {\n            const firstToken = arg[0];\n            if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n                angle = parseNamedSide(arg);\n                return;\n            } else if (isAngle(firstToken)) {\n                angle = angleType.parse(context, firstToken);\n                return;\n            }\n        }\n        const colorStop = parseColorStop(context, arg);\n        stops.push(colorStop);\n    });\n\n    return {angle, stops, type: CSSImageType.LINEAR_GRADIENT};\n};\n", "import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n    let angle: number | GradientCorner = deg(180);\n    const stops: UnprocessedGradientColorStop[] = [];\n\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        if (i === 0) {\n            const firstToken = arg[0];\n            if (\n                firstToken.type === TokenType.IDENT_TOKEN &&\n                ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n            ) {\n                angle = parseNamedSide(arg);\n                return;\n            } else if (isAngle(firstToken)) {\n                angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n                return;\n            }\n        }\n        const colorStop = parseColorStop(context, arg);\n        stops.push(colorStop);\n    });\n\n    return {\n        angle,\n        stops,\n        type: CSSImageType.LINEAR_GRADIENT\n    };\n};\n", "import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser';\nimport {\n    CSSImageType,\n    CSSLinearGradientImage,\n    CSSRadialExtent,\n    CSSRadialGradientImage,\n    CSSRadialShape,\n    CSSRadialSize,\n    UnprocessedGradientColorStop\n} from '../image';\nimport {deg} from '../angle';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {color as colorType} from '../color';\nimport {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const webkitGradient = (\n    context: Context,\n    tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n    const angle = deg(180);\n    const stops: UnprocessedGradientColorStop[] = [];\n    let type = CSSImageType.LINEAR_GRADIENT;\n    const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n    const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n    const position: LengthPercentage[] = [];\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        const firstToken = arg[0];\n        if (i === 0) {\n            if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n                type = CSSImageType.LINEAR_GRADIENT;\n                return;\n            } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n                type = CSSImageType.RADIAL_GRADIENT;\n                return;\n            }\n        }\n\n        if (firstToken.type === TokenType.FUNCTION) {\n            if (firstToken.name === 'from') {\n                const color = colorType.parse(context, firstToken.values[0]);\n                stops.push({stop: ZERO_LENGTH, color});\n            } else if (firstToken.name === 'to') {\n                const color = colorType.parse(context, firstToken.values[0]);\n                stops.push({stop: HUNDRED_PERCENT, color});\n            } else if (firstToken.name === 'color-stop') {\n                const values = firstToken.values.filter(nonFunctionArgSeparator);\n                if (values.length === 2) {\n                    const color = colorType.parse(context, values[1]);\n                    const stop = values[0];\n                    if (isNumberToken(stop)) {\n                        stops.push({\n                            stop: {type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags},\n                            color\n                        });\n                    }\n                }\n            }\n        }\n    });\n\n    return type === CSSImageType.LINEAR_GRADIENT\n        ? {\n              angle: (angle + deg(180)) % deg(360),\n              stops,\n              type\n          }\n        : {size, shape, stops, position, type};\n};\n", "import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n    CSSImageType,\n    CSSRadialExtent,\n    CSSRadialGradientImage,\n    CSSRadialShape,\n    CSSRadialSize,\n    UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {Context} from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n    let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n    let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n    const stops: UnprocessedGradientColorStop[] = [];\n    const position: LengthPercentage[] = [];\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        let isColorStop = true;\n        if (i === 0) {\n            let isAtPosition = false;\n            isColorStop = arg.reduce((acc, token) => {\n                if (isAtPosition) {\n                    if (isIdentToken(token)) {\n                        switch (token.value) {\n                            case 'center':\n                                position.push(FIFTY_PERCENT);\n                                return acc;\n                            case 'top':\n                            case 'left':\n                                position.push(ZERO_LENGTH);\n                                return acc;\n                            case 'right':\n                            case 'bottom':\n                                position.push(HUNDRED_PERCENT);\n                                return acc;\n                        }\n                    } else if (isLengthPercentage(token) || isLength(token)) {\n                        position.push(token);\n                    }\n                } else if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case CIRCLE:\n                            shape = CSSRadialShape.CIRCLE;\n                            return false;\n                        case ELLIPSE:\n                            shape = CSSRadialShape.ELLIPSE;\n                            return false;\n                        case 'at':\n                            isAtPosition = true;\n                            return false;\n                        case CLOSEST_SIDE:\n                            size = CSSRadialExtent.CLOSEST_SIDE;\n                            return false;\n                        case COVER:\n                        case FARTHEST_SIDE:\n                            size = CSSRadialExtent.FARTHEST_SIDE;\n                            return false;\n                        case CONTAIN:\n                        case CLOSEST_CORNER:\n                            size = CSSRadialExtent.CLOSEST_CORNER;\n                            return false;\n                        case FARTHEST_CORNER:\n                            size = CSSRadialExtent.FARTHEST_CORNER;\n                            return false;\n                    }\n                } else if (isLength(token) || isLengthPercentage(token)) {\n                    if (!Array.isArray(size)) {\n                        size = [];\n                    }\n                    size.push(token);\n                    return false;\n                }\n                return acc;\n            }, isColorStop);\n        }\n\n        if (isColorStop) {\n            const colorStop = parseColorStop(context, arg);\n            stops.push(colorStop);\n        }\n    });\n\n    return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n", "import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n    CSSImageType,\n    CSSRadialExtent,\n    CSSRadialGradientImage,\n    CSSRadialShape,\n    CSSRadialSize,\n    UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {\n    CIRCLE,\n    CLOSEST_CORNER,\n    CLOSEST_SIDE,\n    CONTAIN,\n    COVER,\n    ELLIPSE,\n    FARTHEST_CORNER,\n    FARTHEST_SIDE\n} from './radial-gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n    let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n    let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n    const stops: UnprocessedGradientColorStop[] = [];\n    const position: LengthPercentage[] = [];\n\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        let isColorStop = true;\n        if (i === 0) {\n            isColorStop = arg.reduce((acc, token) => {\n                if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case 'center':\n                            position.push(FIFTY_PERCENT);\n                            return false;\n                        case 'top':\n                        case 'left':\n                            position.push(ZERO_LENGTH);\n                            return false;\n                        case 'right':\n                        case 'bottom':\n                            position.push(HUNDRED_PERCENT);\n                            return false;\n                    }\n                } else if (isLengthPercentage(token) || isLength(token)) {\n                    position.push(token);\n                    return false;\n                }\n\n                return acc;\n            }, isColorStop);\n        } else if (i === 1) {\n            isColorStop = arg.reduce((acc, token) => {\n                if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case CIRCLE:\n                            shape = CSSRadialShape.CIRCLE;\n                            return false;\n                        case ELLIPSE:\n                            shape = CSSRadialShape.ELLIPSE;\n                            return false;\n                        case CONTAIN:\n                        case CLOSEST_SIDE:\n                            size = CSSRadialExtent.CLOSEST_SIDE;\n                            return false;\n                        case FARTHEST_SIDE:\n                            size = CSSRadialExtent.FARTHEST_SIDE;\n                            return false;\n                        case CLOSEST_CORNER:\n                            size = CSSRadialExtent.CLOSEST_CORNER;\n                            return false;\n                        case COVER:\n                        case FARTHEST_CORNER:\n                            size = CSSRadialExtent.FARTHEST_CORNER;\n                            return false;\n                    }\n                } else if (isLength(token) || isLengthPercentage(token)) {\n                    if (!Array.isArray(size)) {\n                        size = [];\n                    }\n                    size.push(token);\n                    return false;\n                }\n\n                return acc;\n            }, isColorStop);\n        }\n\n        if (isColorStop) {\n            const colorStop = parseColorStop(context, arg);\n            stops.push(colorStop);\n        }\n    });\n\n    return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n", "import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Color} from './color';\nimport {linearGradient} from './functions/linear-gradient';\nimport {prefixLinearGradient} from './functions/-prefix-linear-gradient';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {LengthPercentage} from './length-percentage';\nimport {webkitGradient} from './functions/-webkit-gradient';\nimport {radialGradient} from './functions/radial-gradient';\nimport {prefixRadialGradient} from './functions/-prefix-radial-gradient';\nimport {Context} from '../../core/context';\n\nexport const enum CSSImageType {\n    URL,\n    LINEAR_GRADIENT,\n    RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n    return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n    return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n    color: Color;\n    stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n    color: Color;\n    stop: number;\n}\n\nexport interface ICSSImage {\n    type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n    url: string;\n    type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n    stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n    angle: number | GradientCorner;\n    type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n    CIRCLE,\n    ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n    CLOSEST_SIDE,\n    FARTHEST_SIDE,\n    CLOSEST_CORNER,\n    FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n    type: CSSImageType.RADIAL_GRADIENT;\n    shape: CSSRadialShape;\n    size: CSSRadialSize;\n    position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor<ICSSImage> = {\n    name: 'image',\n    parse: (context: Context, value: CSSValue): ICSSImage => {\n        if (value.type === TokenType.URL_TOKEN) {\n            const image: CSSURLImage = {url: value.value, type: CSSImageType.URL};\n            context.cache.addImage(value.value);\n            return image;\n        }\n\n        if (value.type === TokenType.FUNCTION) {\n            const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n            if (typeof imageFunction === 'undefined') {\n                throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n            }\n            return imageFunction(context, value.values);\n        }\n\n        throw new Error(`Unsupported image type ${value.type}`);\n    }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n    return (\n        !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n        (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n    );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record<string, (context: Context, args: CSSValue[]) => ICSSImage> = {\n    'linear-gradient': linearGradient,\n    '-moz-linear-gradient': prefixLinearGradient,\n    '-ms-linear-gradient': prefixLinearGradient,\n    '-o-linear-gradient': prefixLinearGradient,\n    '-webkit-linear-gradient': prefixLinearGradient,\n    'radial-gradient': radialGradient,\n    '-moz-radial-gradient': prefixRadialGradient,\n    '-ms-radial-gradient': prefixRadialGradient,\n    '-o-radial-gradient': prefixRadialGradient,\n    '-webkit-radial-gradient': prefixRadialGradient,\n    '-webkit-gradient': webkitGradient\n};\n", "import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image, isSupportedImage} from '../types/image';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor<ICSSImage[]> = {\n    name: 'background-image',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return [];\n        }\n\n        const first = tokens[0];\n\n        if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n            return [];\n        }\n\n        return tokens\n            .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n            .map((value) => image.parse(context, value));\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n    BORDER_BOX = 0,\n    PADDING_BOX = 1,\n    CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor<BackgroundOrigin> = {\n    name: 'background-origin',\n    initialValue: 'border-box',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n        return tokens.map((token) => {\n            if (isIdentToken(token)) {\n                switch (token.value) {\n                    case 'padding-box':\n                        return BACKGROUND_ORIGIN.PADDING_BOX;\n                    case 'content-box':\n                        return BACKGROUND_ORIGIN.CONTENT_BOX;\n                }\n            }\n            return BACKGROUND_ORIGIN.BORDER_BOX;\n        });\n    }\n};\n", "import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor<BackgroundPosition> = {\n    name: 'background-position',\n    initialValue: '0% 0%',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n        return parseFunctionArgs(tokens)\n            .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n            .map(parseLengthPercentageTuple);\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n    REPEAT = 0,\n    NO_REPEAT = 1,\n    REPEAT_X = 2,\n    REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor<BackgroundRepeat> = {\n    name: 'background-repeat',\n    initialValue: 'repeat',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n        return parseFunctionArgs(tokens)\n            .map((values) =>\n                values\n                    .filter(isIdentToken)\n                    .map((token) => token.value)\n                    .join(' ')\n            )\n            .map(parseBackgroundRepeat);\n    }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n    switch (value) {\n        case 'no-repeat':\n            return BACKGROUND_REPEAT.NO_REPEAT;\n        case 'repeat-x':\n        case 'repeat no-repeat':\n            return BACKGROUND_REPEAT.REPEAT_X;\n        case 'repeat-y':\n        case 'no-repeat repeat':\n            return BACKGROUND_REPEAT.REPEAT_Y;\n        case 'repeat':\n        default:\n            return BACKGROUND_REPEAT.REPEAT;\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {StringValueToken} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n    AUTO = 'auto',\n    CONTAIN = 'contain',\n    COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor<BackgroundSize> = {\n    name: 'background-size',\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n        return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n    }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n    isIdentToken(value) || isLengthPercentage(value);\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n    name: `border-${side}-color`,\n    initialValue: 'transparent',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor<BorderRadius> => ({\n    name: `border-radius-${side}`,\n    initialValue: '0 0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n        parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-left');\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum BORDER_STYLE {\n    NONE = 0,\n    SOLID = 1,\n    DASHED = 2,\n    DOTTED = 3,\n    DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor<BORDER_STYLE> => ({\n    name: `border-${side}-style`,\n    initialValue: 'solid',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, style: string): BORDER_STYLE => {\n        switch (style) {\n            case 'none':\n                return BORDER_STYLE.NONE;\n            case 'dashed':\n                return BORDER_STYLE.DASHED;\n            case 'dotted':\n                return BORDER_STYLE.DOTTED;\n            case 'double':\n                return BORDER_STYLE.DOUBLE;\n        }\n        return BORDER_STYLE.SOLID;\n    }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('left');\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor<number> => ({\n    name: `border-${side}-width`,\n    initialValue: '0',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (_context: Context, token: CSSValue): number => {\n        if (isDimensionToken(token)) {\n            return token.number;\n        }\n        return 0;\n    }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor<number> = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor<number> = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor<number> = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor<number> = borderWidthForSide('left');\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n    name: `color`,\n    initialValue: 'transparent',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\n\nexport const enum DIRECTION {\n    LTR = 0,\n    RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor<DIRECTION> = {\n    name: 'direction',\n    initialValue: 'ltr',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, direction: string) => {\n        switch (direction) {\n            case 'rtl':\n                return DIRECTION.RTL;\n            case 'ltr':\n            default:\n                return DIRECTION.LTR;\n        }\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum DISPLAY {\n    NONE = 0,\n    BLOCK = 1 << 1,\n    INLINE = 1 << 2,\n    RUN_IN = 1 << 3,\n    FLOW = 1 << 4,\n    FLOW_ROOT = 1 << 5,\n    TABLE = 1 << 6,\n    FLEX = 1 << 7,\n    GRID = 1 << 8,\n    RUBY = 1 << 9,\n    SUBGRID = 1 << 10,\n    LIST_ITEM = 1 << 11,\n    TABLE_ROW_GROUP = 1 << 12,\n    TABLE_HEADER_GROUP = 1 << 13,\n    TABLE_FOOTER_GROUP = 1 << 14,\n    TABLE_ROW = 1 << 15,\n    TABLE_CELL = 1 << 16,\n    TABLE_COLUMN_GROUP = 1 << 17,\n    TABLE_COLUMN = 1 << 18,\n    TABLE_CAPTION = 1 << 19,\n    RUBY_BASE = 1 << 20,\n    RUBY_TEXT = 1 << 21,\n    RUBY_BASE_CONTAINER = 1 << 22,\n    RUBY_TEXT_CONTAINER = 1 << 23,\n    CONTENTS = 1 << 24,\n    INLINE_BLOCK = 1 << 25,\n    INLINE_LIST_ITEM = 1 << 26,\n    INLINE_TABLE = 1 << 27,\n    INLINE_FLEX = 1 << 28,\n    INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor<Display> = {\n    name: 'display',\n    initialValue: 'inline-block',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): Display => {\n        return tokens.filter(isIdentToken).reduce((bit, token) => {\n            return bit | parseDisplayValue(token.value);\n        }, DISPLAY.NONE);\n    }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n    switch (display) {\n        case 'block':\n        case '-webkit-box':\n            return DISPLAY.BLOCK;\n        case 'inline':\n            return DISPLAY.INLINE;\n        case 'run-in':\n            return DISPLAY.RUN_IN;\n        case 'flow':\n            return DISPLAY.FLOW;\n        case 'flow-root':\n            return DISPLAY.FLOW_ROOT;\n        case 'table':\n            return DISPLAY.TABLE;\n        case 'flex':\n        case '-webkit-flex':\n            return DISPLAY.FLEX;\n        case 'grid':\n        case '-ms-grid':\n            return DISPLAY.GRID;\n        case 'ruby':\n            return DISPLAY.RUBY;\n        case 'subgrid':\n            return DISPLAY.SUBGRID;\n        case 'list-item':\n            return DISPLAY.LIST_ITEM;\n        case 'table-row-group':\n            return DISPLAY.TABLE_ROW_GROUP;\n        case 'table-header-group':\n            return DISPLAY.TABLE_HEADER_GROUP;\n        case 'table-footer-group':\n            return DISPLAY.TABLE_FOOTER_GROUP;\n        case 'table-row':\n            return DISPLAY.TABLE_ROW;\n        case 'table-cell':\n            return DISPLAY.TABLE_CELL;\n        case 'table-column-group':\n            return DISPLAY.TABLE_COLUMN_GROUP;\n        case 'table-column':\n            return DISPLAY.TABLE_COLUMN;\n        case 'table-caption':\n            return DISPLAY.TABLE_CAPTION;\n        case 'ruby-base':\n            return DISPLAY.RUBY_BASE;\n        case 'ruby-text':\n            return DISPLAY.RUBY_TEXT;\n        case 'ruby-base-container':\n            return DISPLAY.RUBY_BASE_CONTAINER;\n        case 'ruby-text-container':\n            return DISPLAY.RUBY_TEXT_CONTAINER;\n        case 'contents':\n            return DISPLAY.CONTENTS;\n        case 'inline-block':\n            return DISPLAY.INLINE_BLOCK;\n        case 'inline-list-item':\n            return DISPLAY.INLINE_LIST_ITEM;\n        case 'inline-table':\n            return DISPLAY.INLINE_TABLE;\n        case 'inline-flex':\n            return DISPLAY.INLINE_FLEX;\n        case 'inline-grid':\n            return DISPLAY.INLINE_GRID;\n    }\n\n    return DISPLAY.NONE;\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FLOAT {\n    NONE = 0,\n    LEFT = 1,\n    RIGHT = 2,\n    INLINE_START = 3,\n    INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor<FLOAT> = {\n    name: 'float',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, float: string) => {\n        switch (float) {\n            case 'left':\n                return FLOAT.LEFT;\n            case 'right':\n                return FLOAT.RIGHT;\n            case 'inline-start':\n                return FLOAT.INLINE_START;\n            case 'inline-end':\n                return FLOAT.INLINE_END;\n        }\n        return FLOAT.NONE;\n    }\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor<number> = {\n    name: 'letter-spacing',\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.VALUE,\n    parse: (_context: Context, token: CSSValue) => {\n        if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n            return 0;\n        }\n\n        if (token.type === TokenType.NUMBER_TOKEN) {\n            return token.number;\n        }\n\n        if (token.type === TokenType.DIMENSION_TOKEN) {\n            return token.number;\n        }\n\n        return 0;\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum LINE_BREAK {\n    NORMAL = 'normal',\n    STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor<LINE_BREAK> = {\n    name: 'line-break',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n        switch (lineBreak) {\n            case 'strict':\n                return LINE_BREAK.STRICT;\n            case 'normal':\n            default:\n                return LINE_BREAK.NORMAL;\n        }\n    }\n};\n", "import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {getAbsoluteValue, isLengthPercentage} from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n    name: 'line-height',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n    if (isIdentToken(token) && token.value === 'normal') {\n        return 1.2 * fontSize;\n    } else if (token.type === TokenType.NUMBER_TOKEN) {\n        return fontSize * token.number;\n    } else if (isLengthPercentage(token)) {\n        return getAbsoluteValue(token, fontSize);\n    }\n\n    return fontSize;\n};\n", "import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image} from '../types/image';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor<ICSSImage | null> = {\n    name: 'list-style-image',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (context: Context, token: CSSValue) => {\n        if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n            return null;\n        }\n\n        return image.parse(context, token);\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n    INSIDE = 0,\n    OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor<LIST_STYLE_POSITION> = {\n    name: 'list-style-position',\n    initialValue: 'outside',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, position: string) => {\n        switch (position) {\n            case 'inside':\n                return LIST_STYLE_POSITION.INSIDE;\n            case 'outside':\n            default:\n                return LIST_STYLE_POSITION.OUTSIDE;\n        }\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n    NONE = -1,\n    DISC = 0,\n    CIRCLE = 1,\n    SQUARE = 2,\n    DECIMAL = 3,\n    CJK_DECIMAL = 4,\n    DECIMAL_LEADING_ZERO = 5,\n    LOWER_ROMAN = 6,\n    UPPER_ROMAN = 7,\n    LOWER_GREEK = 8,\n    LOWER_ALPHA = 9,\n    UPPER_ALPHA = 10,\n    ARABIC_INDIC = 11,\n    ARMENIAN = 12,\n    BENGALI = 13,\n    CAMBODIAN = 14,\n    CJK_EARTHLY_BRANCH = 15,\n    CJK_HEAVENLY_STEM = 16,\n    CJK_IDEOGRAPHIC = 17,\n    DEVANAGARI = 18,\n    ETHIOPIC_NUMERIC = 19,\n    GEORGIAN = 20,\n    GUJARATI = 21,\n    GURMUKHI = 22,\n    HEBREW = 22,\n    HIRAGANA = 23,\n    HIRAGANA_IROHA = 24,\n    JAPANESE_FORMAL = 25,\n    JAPANESE_INFORMAL = 26,\n    KANNADA = 27,\n    KATAKANA = 28,\n    KATAKANA_IROHA = 29,\n    KHMER = 30,\n    KOREAN_HANGUL_FORMAL = 31,\n    KOREAN_HANJA_FORMAL = 32,\n    KOREAN_HANJA_INFORMAL = 33,\n    LAO = 34,\n    LOWER_ARMENIAN = 35,\n    MALAYALAM = 36,\n    MONGOLIAN = 37,\n    MYANMAR = 38,\n    ORIYA = 39,\n    PERSIAN = 40,\n    SIMP_CHINESE_FORMAL = 41,\n    SIMP_CHINESE_INFORMAL = 42,\n    TAMIL = 43,\n    TELUGU = 44,\n    THAI = 45,\n    TIBETAN = 46,\n    TRAD_CHINESE_FORMAL = 47,\n    TRAD_CHINESE_INFORMAL = 48,\n    UPPER_ARMENIAN = 49,\n    DISCLOSURE_OPEN = 50,\n    DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor<LIST_STYLE_TYPE> = {\n    name: 'list-style-type',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, type: string) => {\n        switch (type) {\n            case 'disc':\n                return LIST_STYLE_TYPE.DISC;\n            case 'circle':\n                return LIST_STYLE_TYPE.CIRCLE;\n            case 'square':\n                return LIST_STYLE_TYPE.SQUARE;\n            case 'decimal':\n                return LIST_STYLE_TYPE.DECIMAL;\n            case 'cjk-decimal':\n                return LIST_STYLE_TYPE.CJK_DECIMAL;\n            case 'decimal-leading-zero':\n                return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n            case 'lower-roman':\n                return LIST_STYLE_TYPE.LOWER_ROMAN;\n            case 'upper-roman':\n                return LIST_STYLE_TYPE.UPPER_ROMAN;\n            case 'lower-greek':\n                return LIST_STYLE_TYPE.LOWER_GREEK;\n            case 'lower-alpha':\n                return LIST_STYLE_TYPE.LOWER_ALPHA;\n            case 'upper-alpha':\n                return LIST_STYLE_TYPE.UPPER_ALPHA;\n            case 'arabic-indic':\n                return LIST_STYLE_TYPE.ARABIC_INDIC;\n            case 'armenian':\n                return LIST_STYLE_TYPE.ARMENIAN;\n            case 'bengali':\n                return LIST_STYLE_TYPE.BENGALI;\n            case 'cambodian':\n                return LIST_STYLE_TYPE.CAMBODIAN;\n            case 'cjk-earthly-branch':\n                return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n            case 'cjk-heavenly-stem':\n                return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n            case 'cjk-ideographic':\n                return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n            case 'devanagari':\n                return LIST_STYLE_TYPE.DEVANAGARI;\n            case 'ethiopic-numeric':\n                return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n            case 'georgian':\n                return LIST_STYLE_TYPE.GEORGIAN;\n            case 'gujarati':\n                return LIST_STYLE_TYPE.GUJARATI;\n            case 'gurmukhi':\n                return LIST_STYLE_TYPE.GURMUKHI;\n            case 'hebrew':\n                return LIST_STYLE_TYPE.HEBREW;\n            case 'hiragana':\n                return LIST_STYLE_TYPE.HIRAGANA;\n            case 'hiragana-iroha':\n                return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n            case 'japanese-formal':\n                return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n            case 'japanese-informal':\n                return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n            case 'kannada':\n                return LIST_STYLE_TYPE.KANNADA;\n            case 'katakana':\n                return LIST_STYLE_TYPE.KATAKANA;\n            case 'katakana-iroha':\n                return LIST_STYLE_TYPE.KATAKANA_IROHA;\n            case 'khmer':\n                return LIST_STYLE_TYPE.KHMER;\n            case 'korean-hangul-formal':\n                return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n            case 'korean-hanja-formal':\n                return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n            case 'korean-hanja-informal':\n                return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n            case 'lao':\n                return LIST_STYLE_TYPE.LAO;\n            case 'lower-armenian':\n                return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n            case 'malayalam':\n                return LIST_STYLE_TYPE.MALAYALAM;\n            case 'mongolian':\n                return LIST_STYLE_TYPE.MONGOLIAN;\n            case 'myanmar':\n                return LIST_STYLE_TYPE.MYANMAR;\n            case 'oriya':\n                return LIST_STYLE_TYPE.ORIYA;\n            case 'persian':\n                return LIST_STYLE_TYPE.PERSIAN;\n            case 'simp-chinese-formal':\n                return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n            case 'simp-chinese-informal':\n                return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n            case 'tamil':\n                return LIST_STYLE_TYPE.TAMIL;\n            case 'telugu':\n                return LIST_STYLE_TYPE.TELUGU;\n            case 'thai':\n                return LIST_STYLE_TYPE.THAI;\n            case 'tibetan':\n                return LIST_STYLE_TYPE.TIBETAN;\n            case 'trad-chinese-formal':\n                return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n            case 'trad-chinese-informal':\n                return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n            case 'upper-armenian':\n                return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n            case 'disclosure-open':\n                return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n            case 'disclosure-closed':\n                return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n            case 'none':\n            default:\n                return LIST_STYLE_TYPE.NONE;\n        }\n    }\n};\n", "import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n    name: `margin-${side}`,\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW {\n    VISIBLE = 0,\n    HIDDEN = 1,\n    SCROLL = 2,\n    CLIP = 3,\n    AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor<OVERFLOW[]> = {\n    name: 'overflow',\n    initialValue: 'visible',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n        return tokens.filter(isIdentToken).map((overflow) => {\n            switch (overflow.value) {\n                case 'hidden':\n                    return OVERFLOW.HIDDEN;\n                case 'scroll':\n                    return OVERFLOW.SCROLL;\n                case 'clip':\n                    return OVERFLOW.CLIP;\n                case 'auto':\n                    return OVERFLOW.AUTO;\n                case 'visible':\n                default:\n                    return OVERFLOW.VISIBLE;\n            }\n        });\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n    NORMAL = 'normal',\n    BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor<OVERFLOW_WRAP> = {\n    name: 'overflow-wrap',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, overflow: string) => {\n        switch (overflow) {\n            case 'break-word':\n                return OVERFLOW_WRAP.BREAK_WORD;\n            case 'normal':\n            default:\n                return OVERFLOW_WRAP.NORMAL;\n        }\n    }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n    name: `padding-${side}`,\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_ALIGN {\n    LEFT = 0,\n    CENTER = 1,\n    RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor<TEXT_ALIGN> = {\n    name: 'text-align',\n    initialValue: 'left',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, textAlign: string) => {\n        switch (textAlign) {\n            case 'right':\n                return TEXT_ALIGN.RIGHT;\n            case 'center':\n            case 'justify':\n                return TEXT_ALIGN.CENTER;\n            case 'left':\n            default:\n                return TEXT_ALIGN.LEFT;\n        }\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum POSITION {\n    STATIC = 0,\n    RELATIVE = 1,\n    ABSOLUTE = 2,\n    FIXED = 3,\n    STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor<POSITION> = {\n    name: 'position',\n    initialValue: 'static',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, position: string) => {\n        switch (position) {\n            case 'relative':\n                return POSITION.RELATIVE;\n            case 'absolute':\n                return POSITION.ABSOLUTE;\n            case 'fixed':\n                return POSITION.FIXED;\n            case 'sticky':\n                return POSITION.STICKY;\n        }\n\n        return POSITION.STATIC;\n    }\n};\n", "import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color, COLORS} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n    color: Color;\n    offsetX: Length;\n    offsetY: Length;\n    blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor<TextShadow> = {\n    name: 'text-shadow',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n        if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n            return [];\n        }\n\n        return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n            const shadow: TextShadowItem = {\n                color: COLORS.TRANSPARENT,\n                offsetX: ZERO_LENGTH,\n                offsetY: ZERO_LENGTH,\n                blur: ZERO_LENGTH\n            };\n            let c = 0;\n            for (let i = 0; i < values.length; i++) {\n                const token = values[i];\n                if (isLength(token)) {\n                    if (c === 0) {\n                        shadow.offsetX = token;\n                    } else if (c === 1) {\n                        shadow.offsetY = token;\n                    } else {\n                        shadow.blur = token;\n                    }\n                    c++;\n                } else {\n                    shadow.color = color.parse(context, token);\n                }\n            }\n            return shadow;\n        });\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n    NONE = 0,\n    LOWERCASE = 1,\n    UPPERCASE = 2,\n    CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor<TEXT_TRANSFORM> = {\n    name: 'text-transform',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, textTransform: string) => {\n        switch (textTransform) {\n            case 'uppercase':\n                return TEXT_TRANSFORM.UPPERCASE;\n            case 'lowercase':\n                return TEXT_TRANSFORM.LOWERCASE;\n            case 'capitalize':\n                return TEXT_TRANSFORM.CAPITALIZE;\n        }\n\n        return TEXT_TRANSFORM.NONE;\n    }\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor<Transform> = {\n    name: 'transform',\n    initialValue: 'none',\n    prefix: true,\n    type: PropertyDescriptorParsingType.VALUE,\n    parse: (_context: Context, token: CSSValue) => {\n        if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n            return null;\n        }\n\n        if (token.type === TokenType.FUNCTION) {\n            const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n            if (typeof transformFunction === 'undefined') {\n                throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n            }\n            return transformFunction(token.values);\n        }\n\n        return null;\n    }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n    const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n    return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n    const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n    const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n    return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n    [key: string]: (args: CSSValue[]) => Transform;\n} = {\n    matrix: matrix,\n    matrix3d: matrix3d\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {FLAG_INTEGER, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n    type: TokenType.PERCENTAGE_TOKEN,\n    number: 50,\n    flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor<TransformOrigin> = {\n    name: 'transform-origin',\n    initialValue: '50% 50%',\n    prefix: true,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n        if (origins.length !== 2) {\n            return DEFAULT;\n        }\n\n        return [origins[0], origins[1]];\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum VISIBILITY {\n    VISIBLE = 0,\n    HIDDEN = 1,\n    COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor<VISIBILITY> = {\n    name: 'visible',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, visibility: string) => {\n        switch (visibility) {\n            case 'hidden':\n                return VISIBILITY.HIDDEN;\n            case 'collapse':\n                return VISIBILITY.COLLAPSE;\n            case 'visible':\n            default:\n                return VISIBILITY.VISIBLE;\n        }\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum WORD_BREAK {\n    NORMAL = 'normal',\n    BREAK_ALL = 'break-all',\n    KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor<WORD_BREAK> = {\n    name: 'word-break',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n        switch (wordBreak) {\n            case 'break-all':\n                return WORD_BREAK.BREAK_ALL;\n            case 'keep-all':\n                return WORD_BREAK.KEEP_ALL;\n            case 'normal':\n            default:\n                return WORD_BREAK.NORMAL;\n        }\n    }\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\ninterface zIndex {\n    order: number;\n    auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor<zIndex> = {\n    name: 'z-index',\n    initialValue: 'auto',\n    prefix: false,\n    type: PropertyDescriptorParsingType.VALUE,\n    parse: (_context: Context, token: CSSValue): zIndex => {\n        if (token.type === TokenType.IDENT_TOKEN) {\n            return {auto: true, order: 0};\n        }\n\n        if (isNumberToken(token)) {\n            return {auto: false, order: token.number};\n        }\n\n        throw new Error(`Invalid z-index number parsed`);\n    }\n};\n", "import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {Context} from '../../core/context';\n\nexport const time: ITypeDescriptor<number> = {\n    name: 'time',\n    parse: (_context: Context, value: CSSValue): number => {\n        if (value.type === TokenType.DIMENSION_TOKEN) {\n            switch (value.unit.toLowerCase()) {\n                case 's':\n                    return 1000 * value.number;\n                case 'ms':\n                    return value.number;\n            }\n        }\n\n        throw new Error(`Unsupported time type`);\n    }\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const opacity: IPropertyValueDescriptor<number> = {\n    name: 'opacity',\n    initialValue: '1',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (_context: Context, token: CSSValue): number => {\n        if (isNumberToken(token)) {\n            return token.number;\n        }\n        return 1;\n    }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n    name: `text-decoration-color`,\n    initialValue: 'transparent',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n    NONE = 0,\n    UNDERLINE = 1,\n    OVERLINE = 2,\n    LINE_THROUGH = 3,\n    BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor<TextDecorationLine> = {\n    name: 'text-decoration-line',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n        return tokens\n            .filter(isIdentToken)\n            .map((token) => {\n                switch (token.value) {\n                    case 'underline':\n                        return TEXT_DECORATION_LINE.UNDERLINE;\n                    case 'overline':\n                        return TEXT_DECORATION_LINE.OVERLINE;\n                    case 'line-through':\n                        return TEXT_DECORATION_LINE.LINE_THROUGH;\n                    case 'none':\n                        return TEXT_DECORATION_LINE.BLINK;\n                }\n                return TEXT_DECORATION_LINE.NONE;\n            })\n            .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor<FontFamily> = {\n    name: `font-family`,\n    initialValue: '',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        const accumulator: string[] = [];\n        const results: string[] = [];\n        tokens.forEach((token) => {\n            switch (token.type) {\n                case TokenType.IDENT_TOKEN:\n                case TokenType.STRING_TOKEN:\n                    accumulator.push(token.value);\n                    break;\n                case TokenType.NUMBER_TOKEN:\n                    accumulator.push(token.number.toString());\n                    break;\n                case TokenType.COMMA_TOKEN:\n                    results.push(accumulator.join(' '));\n                    accumulator.length = 0;\n                    break;\n            }\n        });\n        if (accumulator.length) {\n            results.push(accumulator.join(' '));\n        }\n        return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n    }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n    name: `font-size`,\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'length'\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor<number> = {\n    name: 'font-weight',\n    initialValue: 'normal',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (_context: Context, token: CSSValue): number => {\n        if (isNumberToken(token)) {\n            return token.number;\n        }\n\n        if (isIdentToken(token)) {\n            switch (token.value) {\n                case 'bold':\n                    return 700;\n                case 'normal':\n                default:\n                    return 400;\n            }\n        }\n\n        return 400;\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor<string[]> = {\n    name: 'font-variant',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (_context: Context, tokens: CSSValue[]): string[] => {\n        return tokens.filter(isIdentToken).map((token) => token.value);\n    }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FONT_STYLE {\n    NORMAL = 'normal',\n    ITALIC = 'italic',\n    OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor<FONT_STYLE> = {\n    name: 'font-style',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, overflow: string) => {\n        switch (overflow) {\n            case 'oblique':\n                return FONT_STYLE.OBLIQUE;\n            case 'italic':\n                return FONT_STYLE.ITALIC;\n            case 'normal':\n            default:\n                return FONT_STYLE.NORMAL;\n        }\n    }\n};\n", "export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n", "import {TokenType} from '../syntax/tokenizer';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor<Content> = {\n    name: 'content',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return [];\n        }\n\n        const first = tokens[0];\n\n        if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n            return [];\n        }\n\n        return tokens;\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n    counter: string;\n    increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor<CounterIncrement> = {\n    name: 'counter-increment',\n    initialValue: 'none',\n    prefix: true,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return null;\n        }\n\n        const first = tokens[0];\n\n        if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n            return null;\n        }\n\n        const increments = [];\n        const filtered = tokens.filter(nonWhiteSpace);\n\n        for (let i = 0; i < filtered.length; i++) {\n            const counter = filtered[i];\n            const next = filtered[i + 1];\n            if (counter.type === TokenType.IDENT_TOKEN) {\n                const increment = next && isNumberToken(next) ? next.number : 1;\n                increments.push({counter: counter.value, increment});\n            }\n        }\n\n        return increments;\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_RESET {\n    counter: string;\n    reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor<CounterReset> = {\n    name: 'counter-reset',\n    initialValue: 'none',\n    prefix: true,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return [];\n        }\n\n        const resets = [];\n        const filtered = tokens.filter(nonWhiteSpace);\n\n        for (let i = 0; i < filtered.length; i++) {\n            const counter = filtered[i];\n            const next = filtered[i + 1];\n            if (isIdentToken(counter) && counter.value !== 'none') {\n                const reset = next && isNumberToken(next) ? next.number : 0;\n                resets.push({counter: counter.value, reset});\n            }\n        }\n\n        return resets;\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {time} from '../types/time';\n\nexport const duration: IPropertyListDescriptor<number[]> = {\n    name: 'duration',\n    initialValue: '0s',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (context: Context, tokens: CSSValue[]) => {\n        return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isStringToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface QUOTE {\n    open: string;\n    close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor<Quotes> = {\n    name: 'quotes',\n    initialValue: 'none',\n    prefix: true,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return null;\n        }\n\n        const first = tokens[0];\n\n        if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n            return null;\n        }\n\n        const quotes = [];\n        const filtered = tokens.filter(isStringToken);\n\n        if (filtered.length % 2 !== 0) {\n            return null;\n        }\n\n        for (let i = 0; i < filtered.length; i += 2) {\n            const open = filtered[i].value;\n            const close = filtered[i + 1].value;\n            quotes.push({open, close});\n        }\n\n        return quotes;\n    }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n    if (!quotes) {\n        return '';\n    }\n\n    const quote = quotes[Math.min(depth, quotes.length - 1)];\n    if (!quote) {\n        return '';\n    }\n\n    return open ? quote.open : quote.close;\n};\n", "import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n    inset: boolean;\n    color: Color;\n    offsetX: Length;\n    offsetY: Length;\n    blur: Length;\n    spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor<BoxShadow> = {\n    name: 'box-shadow',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n        if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n            return [];\n        }\n\n        return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n            const shadow: BoxShadowItem = {\n                color: 0x000000ff,\n                offsetX: ZERO_LENGTH,\n                offsetY: ZERO_LENGTH,\n                blur: ZERO_LENGTH,\n                spread: ZERO_LENGTH,\n                inset: false\n            };\n            let c = 0;\n            for (let i = 0; i < values.length; i++) {\n                const token = values[i];\n                if (isIdentWithValue(token, 'inset')) {\n                    shadow.inset = true;\n                } else if (isLength(token)) {\n                    if (c === 0) {\n                        shadow.offsetX = token;\n                    } else if (c === 1) {\n                        shadow.offsetY = token;\n                    } else if (c === 2) {\n                        shadow.blur = token;\n                    } else {\n                        shadow.spread = token;\n                    }\n                    c++;\n                } else {\n                    shadow.color = color.parse(context, token);\n                }\n            }\n            return shadow;\n        });\n    }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n    FILL,\n    STROKE,\n    MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor<PaintOrder> = {\n    name: 'paint-order',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n        const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n        const layers: PaintOrder = [];\n\n        tokens.filter(isIdentToken).forEach((token) => {\n            switch (token.value) {\n                case 'stroke':\n                    layers.push(PAINT_ORDER_LAYER.STROKE);\n                    break;\n                case 'fill':\n                    layers.push(PAINT_ORDER_LAYER.FILL);\n                    break;\n                case 'markers':\n                    layers.push(PAINT_ORDER_LAYER.MARKERS);\n                    break;\n            }\n        });\n        DEFAULT_VALUE.forEach((value) => {\n            if (layers.indexOf(value) === -1) {\n                layers.push(value);\n            }\n        });\n\n        return layers;\n    }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n    name: `-webkit-text-stroke-color`,\n    initialValue: 'currentcolor',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n};\n", "import {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor<number> = {\n    name: `-webkit-text-stroke-width`,\n    initialValue: '0',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (_context: Context, token: CSSValue): number => {\n        if (isDimensionToken(token)) {\n            return token.number;\n        }\n        return 0;\n    }\n};\n", "import {CSSPropertyDescriptor, PropertyDescriptorParsingType} from './IPropertyDescriptor';\nimport {backgroundClip} from './property-descriptors/background-clip';\nimport {backgroundColor} from './property-descriptors/background-color';\nimport {backgroundImage} from './property-descriptors/background-image';\nimport {backgroundOrigin} from './property-descriptors/background-origin';\nimport {backgroundPosition} from './property-descriptors/background-position';\nimport {backgroundRepeat} from './property-descriptors/background-repeat';\nimport {backgroundSize} from './property-descriptors/background-size';\nimport {\n    borderBottomColor,\n    borderLeftColor,\n    borderRightColor,\n    borderTopColor\n} from './property-descriptors/border-color';\nimport {\n    borderBottomLeftRadius,\n    borderBottomRightRadius,\n    borderTopLeftRadius,\n    borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n    borderBottomStyle,\n    borderLeftStyle,\n    borderRightStyle,\n    borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n    borderBottomWidth,\n    borderLeftWidth,\n    borderRightWidth,\n    borderTopWidth\n} from './property-descriptors/border-width';\nimport {color} from './property-descriptors/color';\nimport {direction} from './property-descriptors/direction';\nimport {display, DISPLAY} from './property-descriptors/display';\nimport {float, FLOAT} from './property-descriptors/float';\nimport {letterSpacing} from './property-descriptors/letter-spacing';\nimport {lineBreak} from './property-descriptors/line-break';\nimport {lineHeight} from './property-descriptors/line-height';\nimport {listStyleImage} from './property-descriptors/list-style-image';\nimport {listStylePosition} from './property-descriptors/list-style-position';\nimport {listStyleType} from './property-descriptors/list-style-type';\nimport {marginBottom, marginLeft, marginRight, marginTop} from './property-descriptors/margin';\nimport {overflow, OVERFLOW} from './property-descriptors/overflow';\nimport {overflowWrap} from './property-descriptors/overflow-wrap';\nimport {paddingBottom, paddingLeft, paddingRight, paddingTop} from './property-descriptors/padding';\nimport {textAlign} from './property-descriptors/text-align';\nimport {position, POSITION} from './property-descriptors/position';\nimport {textShadow} from './property-descriptors/text-shadow';\nimport {textTransform} from './property-descriptors/text-transform';\nimport {transform} from './property-descriptors/transform';\nimport {transformOrigin} from './property-descriptors/transform-origin';\nimport {visibility, VISIBILITY} from './property-descriptors/visibility';\nimport {wordBreak} from './property-descriptors/word-break';\nimport {zIndex} from './property-descriptors/z-index';\nimport {CSSValue, isIdentToken, Parser} from './syntax/parser';\nimport {Tokenizer} from './syntax/tokenizer';\nimport {Color, color as colorType, isTransparent} from './types/color';\nimport {angle} from './types/angle';\nimport {image} from './types/image';\nimport {time} from './types/time';\nimport {opacity} from './property-descriptors/opacity';\nimport {textDecorationColor} from './property-descriptors/text-decoration-color';\nimport {textDecorationLine} from './property-descriptors/text-decoration-line';\nimport {isLengthPercentage, LengthPercentage, ZERO_LENGTH} from './types/length-percentage';\nimport {fontFamily} from './property-descriptors/font-family';\nimport {fontSize} from './property-descriptors/font-size';\nimport {isLength} from './types/length';\nimport {fontWeight} from './property-descriptors/font-weight';\nimport {fontVariant} from './property-descriptors/font-variant';\nimport {fontStyle} from './property-descriptors/font-style';\nimport {contains} from '../core/bitwise';\nimport {content} from './property-descriptors/content';\nimport {counterIncrement} from './property-descriptors/counter-increment';\nimport {counterReset} from './property-descriptors/counter-reset';\nimport {duration} from './property-descriptors/duration';\nimport {quotes} from './property-descriptors/quotes';\nimport {boxShadow} from './property-descriptors/box-shadow';\nimport {paintOrder} from './property-descriptors/paint-order';\nimport {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color';\nimport {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width';\nimport {Context} from '../core/context';\n\nexport class CSSParsedDeclaration {\n    animationDuration: ReturnType<typeof duration.parse>;\n    backgroundClip: ReturnType<typeof backgroundClip.parse>;\n    backgroundColor: Color;\n    backgroundImage: ReturnType<typeof backgroundImage.parse>;\n    backgroundOrigin: ReturnType<typeof backgroundOrigin.parse>;\n    backgroundPosition: ReturnType<typeof backgroundPosition.parse>;\n    backgroundRepeat: ReturnType<typeof backgroundRepeat.parse>;\n    backgroundSize: ReturnType<typeof backgroundSize.parse>;\n    borderTopColor: Color;\n    borderRightColor: Color;\n    borderBottomColor: Color;\n    borderLeftColor: Color;\n    borderTopLeftRadius: ReturnType<typeof borderTopLeftRadius.parse>;\n    borderTopRightRadius: ReturnType<typeof borderTopRightRadius.parse>;\n    borderBottomRightRadius: ReturnType<typeof borderBottomRightRadius.parse>;\n    borderBottomLeftRadius: ReturnType<typeof borderBottomLeftRadius.parse>;\n    borderTopStyle: ReturnType<typeof borderTopStyle.parse>;\n    borderRightStyle: ReturnType<typeof borderRightStyle.parse>;\n    borderBottomStyle: ReturnType<typeof borderBottomStyle.parse>;\n    borderLeftStyle: ReturnType<typeof borderLeftStyle.parse>;\n    borderTopWidth: ReturnType<typeof borderTopWidth.parse>;\n    borderRightWidth: ReturnType<typeof borderRightWidth.parse>;\n    borderBottomWidth: ReturnType<typeof borderBottomWidth.parse>;\n    borderLeftWidth: ReturnType<typeof borderLeftWidth.parse>;\n    boxShadow: ReturnType<typeof boxShadow.parse>;\n    color: Color;\n    direction: ReturnType<typeof direction.parse>;\n    display: ReturnType<typeof display.parse>;\n    float: ReturnType<typeof float.parse>;\n    fontFamily: ReturnType<typeof fontFamily.parse>;\n    fontSize: LengthPercentage;\n    fontStyle: ReturnType<typeof fontStyle.parse>;\n    fontVariant: ReturnType<typeof fontVariant.parse>;\n    fontWeight: ReturnType<typeof fontWeight.parse>;\n    letterSpacing: ReturnType<typeof letterSpacing.parse>;\n    lineBreak: ReturnType<typeof lineBreak.parse>;\n    lineHeight: CSSValue;\n    listStyleImage: ReturnType<typeof listStyleImage.parse>;\n    listStylePosition: ReturnType<typeof listStylePosition.parse>;\n    listStyleType: ReturnType<typeof listStyleType.parse>;\n    marginTop: CSSValue;\n    marginRight: CSSValue;\n    marginBottom: CSSValue;\n    marginLeft: CSSValue;\n    opacity: ReturnType<typeof opacity.parse>;\n    overflowX: OVERFLOW;\n    overflowY: OVERFLOW;\n    overflowWrap: ReturnType<typeof overflowWrap.parse>;\n    paddingTop: LengthPercentage;\n    paddingRight: LengthPercentage;\n    paddingBottom: LengthPercentage;\n    paddingLeft: LengthPercentage;\n    paintOrder: ReturnType<typeof paintOrder.parse>;\n    position: ReturnType<typeof position.parse>;\n    textAlign: ReturnType<typeof textAlign.parse>;\n    textDecorationColor: Color;\n    textDecorationLine: ReturnType<typeof textDecorationLine.parse>;\n    textShadow: ReturnType<typeof textShadow.parse>;\n    textTransform: ReturnType<typeof textTransform.parse>;\n    transform: ReturnType<typeof transform.parse>;\n    transformOrigin: ReturnType<typeof transformOrigin.parse>;\n    visibility: ReturnType<typeof visibility.parse>;\n    webkitTextStrokeColor: Color;\n    webkitTextStrokeWidth: ReturnType<typeof webkitTextStrokeWidth.parse>;\n    wordBreak: ReturnType<typeof wordBreak.parse>;\n    zIndex: ReturnType<typeof zIndex.parse>;\n\n    constructor(context: Context, declaration: CSSStyleDeclaration) {\n        this.animationDuration = parse(context, duration, declaration.animationDuration);\n        this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n        this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n        this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n        this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n        this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n        this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n        this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n        this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n        this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n        this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n        this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n        this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n        this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n        this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n        this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n        this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n        this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n        this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n        this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n        this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n        this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n        this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n        this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n        this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n        this.color = parse(context, color, declaration.color);\n        this.direction = parse(context, direction, declaration.direction);\n        this.display = parse(context, display, declaration.display);\n        this.float = parse(context, float, declaration.cssFloat);\n        this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n        this.fontSize = parse(context, fontSize, declaration.fontSize);\n        this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n        this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n        this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n        this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n        this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n        this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n        this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n        this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n        this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n        this.marginTop = parse(context, marginTop, declaration.marginTop);\n        this.marginRight = parse(context, marginRight, declaration.marginRight);\n        this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n        this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n        this.opacity = parse(context, opacity, declaration.opacity);\n        const overflowTuple = parse(context, overflow, declaration.overflow);\n        this.overflowX = overflowTuple[0];\n        this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n        this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n        this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n        this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n        this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n        this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n        this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n        this.position = parse(context, position, declaration.position);\n        this.textAlign = parse(context, textAlign, declaration.textAlign);\n        this.textDecorationColor = parse(\n            context,\n            textDecorationColor,\n            declaration.textDecorationColor ?? declaration.color\n        );\n        this.textDecorationLine = parse(\n            context,\n            textDecorationLine,\n            declaration.textDecorationLine ?? declaration.textDecoration\n        );\n        this.textShadow = parse(context, textShadow, declaration.textShadow);\n        this.textTransform = parse(context, textTransform, declaration.textTransform);\n        this.transform = parse(context, transform, declaration.transform);\n        this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n        this.visibility = parse(context, visibility, declaration.visibility);\n        this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n        this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n        this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n        this.zIndex = parse(context, zIndex, declaration.zIndex);\n    }\n\n    isVisible(): boolean {\n        return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n    }\n\n    isTransparent(): boolean {\n        return isTransparent(this.backgroundColor);\n    }\n\n    isTransformed(): boolean {\n        return this.transform !== null;\n    }\n\n    isPositioned(): boolean {\n        return this.position !== POSITION.STATIC;\n    }\n\n    isPositionedWithZIndex(): boolean {\n        return this.isPositioned() && !this.zIndex.auto;\n    }\n\n    isFloating(): boolean {\n        return this.float !== FLOAT.NONE;\n    }\n\n    isInlineLevel(): boolean {\n        return (\n            contains(this.display, DISPLAY.INLINE) ||\n            contains(this.display, DISPLAY.INLINE_BLOCK) ||\n            contains(this.display, DISPLAY.INLINE_FLEX) ||\n            contains(this.display, DISPLAY.INLINE_GRID) ||\n            contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n            contains(this.display, DISPLAY.INLINE_TABLE)\n        );\n    }\n}\n\nexport class CSSParsedPseudoDeclaration {\n    content: ReturnType<typeof content.parse>;\n    quotes: ReturnType<typeof quotes.parse>;\n\n    constructor(context: Context, declaration: CSSStyleDeclaration) {\n        this.content = parse(context, content, declaration.content);\n        this.quotes = parse(context, quotes, declaration.quotes);\n    }\n}\n\nexport class CSSParsedCounterDeclaration {\n    counterIncrement: ReturnType<typeof counterIncrement.parse>;\n    counterReset: ReturnType<typeof counterReset.parse>;\n\n    constructor(context: Context, declaration: CSSStyleDeclaration) {\n        this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n        this.counterReset = parse(context, counterReset, declaration.counterReset);\n    }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor<any>, style?: string | null) => {\n    const tokenizer = new Tokenizer();\n    const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n    tokenizer.write(value);\n    const parser = new Parser(tokenizer.read());\n    switch (descriptor.type) {\n        case PropertyDescriptorParsingType.IDENT_VALUE:\n            const token = parser.parseComponentValue();\n            return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n        case PropertyDescriptorParsingType.VALUE:\n            return descriptor.parse(context, parser.parseComponentValue());\n        case PropertyDescriptorParsingType.LIST:\n            return descriptor.parse(context, parser.parseComponentValues());\n        case PropertyDescriptorParsingType.TOKEN_VALUE:\n            return parser.parseComponentValue();\n        case PropertyDescriptorParsingType.TYPE_VALUE:\n            switch (descriptor.format) {\n                case 'angle':\n                    return angle.parse(context, parser.parseComponentValue());\n                case 'color':\n                    return colorType.parse(context, parser.parseComponentValue());\n                case 'image':\n                    return image.parse(context, parser.parseComponentValue());\n                case 'length':\n                    const length = parser.parseComponentValue();\n                    return isLength(length) ? length : ZERO_LENGTH;\n                case 'length-percentage':\n                    const value = parser.parseComponentValue();\n                    return isLengthPercentage(value) ? value : ZERO_LENGTH;\n                case 'time':\n                    return time.parse(context, parser.parseComponentValue());\n            }\n            break;\n    }\n};\n", "const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n    NONE,\n    ALL,\n    CLONE,\n    PARSE,\n    RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n    const attribute = element.getAttribute(elementDebuggerAttribute);\n    switch (attribute) {\n        case 'all':\n            return DebuggerType.ALL;\n        case 'clone':\n            return DebuggerType.CLONE;\n        case 'parse':\n            return DebuggerType.PARSE;\n        case 'render':\n            return DebuggerType.RENDER;\n        default:\n            return DebuggerType.NONE;\n    }\n};\n\nexport const isDebugging = (element: Element, type: Omit<DebuggerType, DebuggerType.NONE>): boolean => {\n    const elementType = getElementDebugType(element);\n    return elementType === DebuggerType.ALL || type === elementType;\n};\n", "import {CSSParsedDeclaration} from '../css/index';\nimport {TextContainer} from './text-container';\nimport {Bounds, parseBounds} from '../css/layout/bounds';\nimport {isHTMLElementNode} from './node-parser';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport const enum FLAGS {\n    CREATES_STACKING_CONTEXT = 1 << 1,\n    CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n    IS_LIST_OWNER = 1 << 3,\n    DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n    readonly styles: CSSParsedDeclaration;\n    readonly textNodes: TextContainer[] = [];\n    readonly elements: ElementContainer[] = [];\n    bounds: Bounds;\n    flags = 0;\n\n    constructor(protected readonly context: Context, element: Element) {\n        if (isDebugging(element, DebuggerType.PARSE)) {\n            debugger;\n        }\n\n        this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n        if (isHTMLElementNode(element)) {\n            if (this.styles.animationDuration.some((duration) => duration > 0)) {\n                element.style.animationDuration = '0s';\n            }\n\n            if (this.styles.transform !== null) {\n                // getBoundingClientRect takes transforms into account\n                element.style.transform = 'none';\n            }\n        }\n\n        this.bounds = parseBounds(this.context, element);\n\n        if (isDebugging(element, DebuggerType.RENDER)) {\n            this.flags |= FLAGS.DEBUG_RENDER;\n        }\n    }\n}\n", "export const base64 =\n    'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\nexport const byteLength = 19616;\n", "const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const buffer =\n        typeof ArrayBuffer !== 'undefined' &&\n        typeof Uint8Array !== 'undefined' &&\n        typeof Uint8Array.prototype.slice !== 'undefined'\n            ? new ArrayBuffer(bufferLength)\n            : new Array(bufferLength);\n    const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 2) {\n        bytes.push((buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 4) {\n        bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n", "import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n\n    return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n\n    return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n    const buffer = decode(base64);\n    const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n    const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n    const headerLength = 24;\n\n    const index = slice16(view16, headerLength / 2, view32[4] / 2);\n    const data =\n        view32[5] === 2\n            ? slice16(view16, (headerLength + view32[4]) / 2)\n            : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n    return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n    initialValue: int;\n    errorValue: int;\n    highStart: int;\n    highValueIndex: int;\n    index: Uint16Array | number[];\n    data: Uint32Array | Uint16Array | number[];\n\n    constructor(\n        initialValue: int,\n        errorValue: int,\n        highStart: int,\n        highValueIndex: int,\n        index: Uint16Array | number[],\n        data: Uint32Array | Uint16Array | number[]\n    ) {\n        this.initialValue = initialValue;\n        this.errorValue = errorValue;\n        this.highStart = highStart;\n        this.highValueIndex = highValueIndex;\n        this.index = index;\n        this.data = data;\n    }\n\n    /**\n     * Get the value for a code point as stored in the Trie.\n     *\n     * @param codePoint the code point\n     * @return the value\n     */\n    get(codePoint: number): number {\n        let ix;\n        if (codePoint >= 0) {\n            if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n                // Ordinary BMP code point, excluding leading surrogates.\n                // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\n                // 16 bit data is stored in the index array itself.\n                ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n\n            if (codePoint <= 0xffff) {\n                // Lead Surrogate Code Point.  A Separate index section is stored for\n                // lead surrogate code units and code points.\n                //   The main index has the code unit data.\n                //   For this function, we need the code point data.\n                // Note: this expression could be refactored for slightly improved efficiency, but\n                //       surrogate code points will be so rare in practice that it's not worth it.\n                ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n\n            if (codePoint < this.highStart) {\n                // Supplemental code point, use two-level lookup.\n                ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n                ix = this.index[ix];\n                ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n                ix = this.index[ix];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n            if (codePoint <= 0x10ffff) {\n                return this.data[this.highValueIndex];\n            }\n        }\n\n        // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\n        return this.errorValue;\n    }\n}\n", "const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n    let bytes = new Uint8Array(arraybuffer),\n        i,\n        len = bytes.length,\n        base64 = '';\n\n    for (i = 0; i < len; i += 3) {\n        base64 += chars[bytes[i] >> 2];\n        base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n        base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n        base64 += chars[bytes[i + 2] & 63];\n    }\n\n    if (len % 3 === 2) {\n        base64 = base64.substring(0, base64.length - 1) + '=';\n    } else if (len % 3 === 1) {\n        base64 = base64.substring(0, base64.length - 2) + '==';\n    }\n\n    return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const arraybuffer = new ArrayBuffer(bufferLength),\n        bytes = new Uint8Array(arraybuffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return arraybuffer;\n};\n", "import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n    Other,\n    Prepend,\n    CR,\n    LF,\n    Control,\n    Extend,\n    Regional_Indicator,\n    SpacingMark,\n    L,\n    V,\n    T,\n    LV,\n    LVT,\n    ZWJ,\n    Extended_Pictographic,\n    RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n    const codePoints = [];\n    let i = 0;\n    const length = str.length;\n    while (i < length) {\n        const value = str.charCodeAt(i++);\n        if (value >= 0xd800 && value <= 0xdbff && i < length) {\n            const extra = str.charCodeAt(i++);\n            if ((extra & 0xfc00) === 0xdc00) {\n                codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n            } else {\n                codePoints.push(value);\n                i--;\n            }\n        } else {\n            codePoints.push(value);\n        }\n    }\n    return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n    if (String.fromCodePoint) {\n        return String.fromCodePoint(...codePoints);\n    }\n\n    const length = codePoints.length;\n    if (!length) {\n        return '';\n    }\n\n    const codeUnits = [];\n\n    let index = -1;\n    let result = '';\n    while (++index < length) {\n        let codePoint = codePoints[index];\n        if (codePoint <= 0xffff) {\n            codeUnits.push(codePoint);\n        } else {\n            codePoint -= 0x10000;\n            codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n        }\n        if (index + 1 === length || codeUnits.length > 0x4000) {\n            result += String.fromCharCode(...codeUnits);\n            codeUnits.length = 0;\n        }\n    }\n    return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n    let prevIndex = index - 2;\n    let prev = classTypes[prevIndex];\n    const current = classTypes[index - 1];\n    const next = classTypes[index];\n    // GB3 Do not break between a CR and LF\n    if (current === CR && next === LF) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB4 Otherwise, break before and after controls.\n    if (current === CR || current === LF || current === Control) {\n        return BREAK_ALLOWED;\n    }\n\n    // GB5\n    if (next === CR || next === LF || next === Control) {\n        return BREAK_ALLOWED;\n    }\n\n    // Do not break Hangul syllable sequences.\n    // GB6\n    if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB7\n    if ((current === LV || current === V) && (next === V || next === T)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB8\n    if ((current === LVT || current === T) && next === T) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB9 Do not break before extending characters or ZWJ.\n    if (next === ZWJ || next === Extend) {\n        return BREAK_NOT_ALLOWED;\n    }\n    // Do not break before SpacingMarks, or after Prepend characters.\n    // GB9a\n    if (next === SpacingMark) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB9a\n    if (current === Prepend) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n    if (current === ZWJ && next === Extended_Pictographic) {\n        while (prev === Extend) {\n            prev = classTypes[--prevIndex];\n        }\n        if (prev === Extended_Pictographic) {\n            return BREAK_NOT_ALLOWED;\n        }\n    }\n\n    // GB12 Do not break within emoji flag sequences.\n    // That is, do not break between regional indicator (RI) symbols\n    // if there is an odd number of RI characters before the break point.\n    if (current === RI && next === RI) {\n        let countRI = 0;\n        while (prev === RI) {\n            countRI++;\n            prev = classTypes[--prevIndex];\n        }\n        if (countRI % 2 === 0) {\n            return BREAK_NOT_ALLOWED;\n        }\n    }\n\n    return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n    // GB1 Break at the start and end of text, unless the text is empty.\n    if (index === 0) {\n        return BREAK_ALLOWED;\n    }\n\n    // GB2\n    if (index >= codePoints.length) {\n        return BREAK_ALLOWED;\n    }\n\n    const classTypes = codePoints.map(codePointToClass);\n    return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n    const codePoints = toCodePoints(str);\n    const length = codePoints.length;\n    let index = 0;\n    let lastEnd = 0;\n    const classTypes = codePoints.map(codePointToClass);\n\n    return {\n        next: () => {\n            if (index >= length) {\n                return {done: true, value: null};\n            }\n\n            let graphemeBreak = BREAK_NOT_ALLOWED;\n            while (\n                index < length &&\n                (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n            ) {}\n\n            if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n                const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n                lastEnd = index;\n                return {value, done: false};\n            }\n\n            return {done: true, value: null};\n            while (index < length) {}\n\n            return {done: true, value: null};\n        },\n    };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n    const breaker = GraphemeBreaker(str);\n\n    const graphemes = [];\n    let bk;\n\n    while (!(bk = breaker.next()).done) {\n        if (bk.value) {\n            graphemes.push(bk.value.slice());\n        }\n    }\n\n    return graphemes;\n};\n", "import {fromCodePoint, toCodePoints} from 'css-line-break';\n\nconst testRangeBounds = (document: Document) => {\n    const TEST_HEIGHT = 123;\n\n    if (document.createRange) {\n        const range = document.createRange();\n        if (range.getBoundingClientRect) {\n            const testElement = document.createElement('boundtest');\n            testElement.style.height = `${TEST_HEIGHT}px`;\n            testElement.style.display = 'block';\n            document.body.appendChild(testElement);\n\n            range.selectNode(testElement);\n            const rangeBounds = range.getBoundingClientRect();\n            const rangeHeight = Math.round(rangeBounds.height);\n            document.body.removeChild(testElement);\n            if (rangeHeight === TEST_HEIGHT) {\n                return true;\n            }\n        }\n    }\n\n    return false;\n};\n\nconst testIOSLineBreak = (document: Document) => {\n    const testElement = document.createElement('boundtest');\n    testElement.style.width = '50px';\n    testElement.style.display = 'block';\n    testElement.style.fontSize = '12px';\n    testElement.style.letterSpacing = '0px';\n    testElement.style.wordSpacing = '0px';\n    document.body.appendChild(testElement);\n    const range = document.createRange();\n\n    testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\n\n    const node = testElement.firstChild as Text;\n\n    const textList = toCodePoints(node.data).map((i) => fromCodePoint(i));\n    let offset = 0;\n    let prev: DOMRect = {} as DOMRect;\n\n    // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n    const supports = textList.every((text, i) => {\n        range.setStart(node, offset);\n        range.setEnd(node, offset + text.length);\n        const rect = range.getBoundingClientRect();\n\n        offset += text.length;\n        const boundAhead = rect.x > prev.x || rect.y > prev.y;\n\n        prev = rect;\n        if (i === 0) {\n            return true;\n        }\n\n        return boundAhead;\n    });\n\n    document.body.removeChild(testElement);\n    return supports;\n};\n\nconst testCORS = (): boolean => typeof new Image().crossOrigin !== 'undefined';\n\nconst testResponseType = (): boolean => typeof new XMLHttpRequest().responseType === 'string';\n\nconst testSVG = (document: Document): boolean => {\n    const img = new Image();\n    const canvas = document.createElement('canvas');\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n        return false;\n    }\n\n    img.src = `data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>`;\n\n    try {\n        ctx.drawImage(img, 0, 0);\n        canvas.toDataURL();\n    } catch (e) {\n        return false;\n    }\n    return true;\n};\n\nconst isGreenPixel = (data: Uint8ClampedArray): boolean =>\n    data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n\nconst testForeignObject = (document: Document): Promise<boolean> => {\n    const canvas = document.createElement('canvas');\n    const size = 100;\n    canvas.width = size;\n    canvas.height = size;\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n        return Promise.reject(false);\n    }\n    ctx.fillStyle = 'rgb(0, 255, 0)';\n    ctx.fillRect(0, 0, size, size);\n\n    const img = new Image();\n    const greenImageSrc = canvas.toDataURL();\n    img.src = greenImageSrc;\n    const svg = createForeignObjectSVG(size, size, 0, 0, img);\n    ctx.fillStyle = 'red';\n    ctx.fillRect(0, 0, size, size);\n\n    return loadSerializedSVG(svg)\n        .then((img: HTMLImageElement) => {\n            ctx.drawImage(img, 0, 0);\n            const data = ctx.getImageData(0, 0, size, size).data;\n            ctx.fillStyle = 'red';\n            ctx.fillRect(0, 0, size, size);\n\n            const node = document.createElement('div');\n            node.style.backgroundImage = `url(${greenImageSrc})`;\n            node.style.height = `${size}px`;\n            // Firefox 55 does not render inline <img /> tags\n            return isGreenPixel(data)\n                ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))\n                : Promise.reject(false);\n        })\n        .then((img: HTMLImageElement) => {\n            ctx.drawImage(img, 0, 0);\n            // Edge does not render background-images\n            return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n        })\n        .catch(() => false);\n};\n\nexport const createForeignObjectSVG = (\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    node: Node\n): SVGForeignObjectElement => {\n    const xmlns = 'http://www.w3.org/2000/svg';\n    const svg = document.createElementNS(xmlns, 'svg');\n    const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n    svg.setAttributeNS(null, 'width', width.toString());\n    svg.setAttributeNS(null, 'height', height.toString());\n\n    foreignObject.setAttributeNS(null, 'width', '100%');\n    foreignObject.setAttributeNS(null, 'height', '100%');\n    foreignObject.setAttributeNS(null, 'x', x.toString());\n    foreignObject.setAttributeNS(null, 'y', y.toString());\n    foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n    svg.appendChild(foreignObject);\n\n    foreignObject.appendChild(node);\n\n    return svg;\n};\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> => {\n    return new Promise((resolve, reject) => {\n        const img = new Image();\n        img.onload = () => resolve(img);\n        img.onerror = reject;\n\n        img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n    });\n};\n\nexport const FEATURES = {\n    get SUPPORT_RANGE_BOUNDS(): boolean {\n        'use strict';\n        const value = testRangeBounds(document);\n        Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {value});\n        return value;\n    },\n    get SUPPORT_WORD_BREAKING(): boolean {\n        'use strict';\n        const value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n        Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', {value});\n        return value;\n    },\n    get SUPPORT_SVG_DRAWING(): boolean {\n        'use strict';\n        const value = testSVG(document);\n        Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {value});\n        return value;\n    },\n    get SUPPORT_FOREIGNOBJECT_DRAWING(): Promise<boolean> {\n        'use strict';\n        const value =\n            typeof Array.from === 'function' && typeof window.fetch === 'function'\n                ? testForeignObject(document)\n                : Promise.resolve(false);\n        Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {value});\n        return value;\n    },\n    get SUPPORT_CORS_IMAGES(): boolean {\n        'use strict';\n        const value = testCORS();\n        Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', {value});\n        return value;\n    },\n    get SUPPORT_RESPONSE_TYPE(): boolean {\n        'use strict';\n        const value = testResponseType();\n        Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', {value});\n        return value;\n    },\n    get SUPPORT_CORS_XHR(): boolean {\n        'use strict';\n        const value = 'withCredentials' in new XMLHttpRequest();\n        Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {value});\n        return value;\n    },\n    get SUPPORT_NATIVE_TEXT_SEGMENTATION(): boolean {\n        'use strict';\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const value = !!(typeof Intl !== 'undefined' && (Intl as any).Segmenter);\n        Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', {value});\n        return value;\n    }\n};\n", "import {OVERFLOW_WRAP} from '../property-descriptors/overflow-wrap';\nimport {CSSParsedDeclaration} from '../index';\nimport {fromCodePoint, LineBreaker, toCodePoints} from 'css-line-break';\nimport {splitGraphemes} from 'text-segmentation';\nimport {Bounds, parseBounds} from './bounds';\nimport {FEATURES} from '../../core/features';\nimport {Context} from '../../core/context';\n\nexport class TextBounds {\n    readonly text: string;\n    readonly bounds: Bounds;\n\n    constructor(text: string, bounds: Bounds) {\n        this.text = text;\n        this.bounds = bounds;\n    }\n}\n\nexport const parseTextBounds = (\n    context: Context,\n    value: string,\n    styles: CSSParsedDeclaration,\n    node: Text\n): TextBounds[] => {\n    const textList = breakText(value, styles);\n    const textBounds: TextBounds[] = [];\n    let offset = 0;\n    textList.forEach((text) => {\n        if (styles.textDecorationLine.length || text.trim().length > 0) {\n            if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n                const clientRects = createRange(node, offset, text.length).getClientRects();\n                if (clientRects.length > 1) {\n                    const subSegments = segmentGraphemes(text);\n                    let subOffset = 0;\n                    subSegments.forEach((subSegment) => {\n                        textBounds.push(\n                            new TextBounds(\n                                subSegment,\n                                Bounds.fromDOMRectList(\n                                    context,\n                                    createRange(node, subOffset + offset, subSegment.length).getClientRects()\n                                )\n                            )\n                        );\n                        subOffset += subSegment.length;\n                    });\n                } else {\n                    textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n                }\n            } else {\n                const replacementNode = node.splitText(text.length);\n                textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n                node = replacementNode;\n            }\n        } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n            node = node.splitText(text.length);\n        }\n        offset += text.length;\n    });\n\n    return textBounds;\n};\n\nconst getWrapperBounds = (context: Context, node: Text): Bounds => {\n    const ownerDocument = node.ownerDocument;\n    if (ownerDocument) {\n        const wrapper = ownerDocument.createElement('html2canvaswrapper');\n        wrapper.appendChild(node.cloneNode(true));\n        const parentNode = node.parentNode;\n        if (parentNode) {\n            parentNode.replaceChild(wrapper, node);\n            const bounds = parseBounds(context, wrapper);\n            if (wrapper.firstChild) {\n                parentNode.replaceChild(wrapper.firstChild, wrapper);\n            }\n            return bounds;\n        }\n    }\n\n    return Bounds.EMPTY;\n};\n\nconst createRange = (node: Text, offset: number, length: number): Range => {\n    const ownerDocument = node.ownerDocument;\n    if (!ownerDocument) {\n        throw new Error('Node has no owner document');\n    }\n    const range = ownerDocument.createRange();\n    range.setStart(node, offset);\n    range.setEnd(node, offset + length);\n    return range;\n};\n\nexport const segmentGraphemes = (value: string): string[] => {\n    if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const segmenter = new (Intl as any).Segmenter(void 0, {granularity: 'grapheme'});\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n    }\n\n    return splitGraphemes(value);\n};\n\nconst segmentWords = (value: string, styles: CSSParsedDeclaration): string[] => {\n    if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const segmenter = new (Intl as any).Segmenter(void 0, {\n            granularity: 'word'\n        });\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n    }\n\n    return breakWords(value, styles);\n};\n\nconst breakText = (value: string, styles: CSSParsedDeclaration): string[] => {\n    return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n};\n\n// https://drafts.csswg.org/css-text/#word-separator\nconst wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n\nconst breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {\n    const breaker = LineBreaker(str, {\n        lineBreak: styles.lineBreak,\n        wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\n    });\n\n    const words = [];\n    let bk;\n\n    while (!(bk = breaker.next()).done) {\n        if (bk.value) {\n            const value = bk.value.slice();\n            const codePoints = toCodePoints(value);\n            let word = '';\n            codePoints.forEach((codePoint) => {\n                if (wordSeparators.indexOf(codePoint) === -1) {\n                    word += fromCodePoint(codePoint);\n                } else {\n                    if (word.length) {\n                        words.push(word);\n                    }\n                    words.push(fromCodePoint(codePoint));\n                    word = '';\n                }\n            });\n\n            if (word.length) {\n                words.push(word);\n            }\n        }\n    }\n\n    return words;\n};\n", "import {CSSParsedDeclaration} from '../css/index';\nimport {TEXT_TRANSFORM} from '../css/property-descriptors/text-transform';\nimport {parseTextBounds, TextBounds} from '../css/layout/text';\nimport {Context} from '../core/context';\n\nexport class TextContainer {\n    text: string;\n    textBounds: TextBounds[];\n\n    constructor(context: Context, node: Text, styles: CSSParsedDeclaration) {\n        this.text = transform(node.data, styles.textTransform);\n        this.textBounds = parseTextBounds(context, this.text, styles, node);\n    }\n}\n\nconst transform = (text: string, transform: TEXT_TRANSFORM) => {\n    switch (transform) {\n        case TEXT_TRANSFORM.LOWERCASE:\n            return text.toLowerCase();\n        case TEXT_TRANSFORM.CAPITALIZE:\n            return text.replace(CAPITALIZE, capitalize);\n        case TEXT_TRANSFORM.UPPERCASE:\n            return text.toUpperCase();\n        default:\n            return text;\n    }\n};\n\nconst CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\nconst capitalize = (m: string, p1: string, p2: string) => {\n    if (m.length > 0) {\n        return p1 + p2.toUpperCase();\n    }\n\n    return m;\n};\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\n\nexport class ImageElementContainer extends ElementContainer {\n    src: string;\n    intrinsicWidth: number;\n    intrinsicHeight: number;\n\n    constructor(context: Context, img: HTMLImageElement) {\n        super(context, img);\n        this.src = img.currentSrc || img.src;\n        this.intrinsicWidth = img.naturalWidth;\n        this.intrinsicHeight = img.naturalHeight;\n        this.context.cache.addImage(this.src);\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\n\nexport class CanvasElementContainer extends ElementContainer {\n    canvas: HTMLCanvasElement;\n    intrinsicWidth: number;\n    intrinsicHeight: number;\n\n    constructor(context: Context, canvas: HTMLCanvasElement) {\n        super(context, canvas);\n        this.canvas = canvas;\n        this.intrinsicWidth = canvas.width;\n        this.intrinsicHeight = canvas.height;\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {parseBounds} from '../../css/layout/bounds';\nimport {Context} from '../../core/context';\n\nexport class SVGElementContainer extends ElementContainer {\n    svg: string;\n    intrinsicWidth: number;\n    intrinsicHeight: number;\n\n    constructor(context: Context, img: SVGSVGElement) {\n        super(context, img);\n        const s = new XMLSerializer();\n        const bounds = parseBounds(context, img);\n        img.setAttribute('width', `${bounds.width}px`);\n        img.setAttribute('height', `${bounds.height}px`);\n\n        this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`;\n        this.intrinsicWidth = img.width.baseVal.value;\n        this.intrinsicHeight = img.height.baseVal.value;\n\n        this.context.cache.addImage(this.svg);\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class LIElementContainer extends ElementContainer {\n    readonly value: number;\n\n    constructor(context: Context, element: HTMLLIElement) {\n        super(context, element);\n        this.value = element.value;\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class OLElementContainer extends ElementContainer {\n    readonly start: number;\n    readonly reversed: boolean;\n\n    constructor(context: Context, element: HTMLOListElement) {\n        super(context, element);\n        this.start = element.start;\n        this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {BORDER_STYLE} from '../../css/property-descriptors/border-style';\nimport {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip';\nimport {BACKGROUND_ORIGIN} from '../../css/property-descriptors/background-origin';\nimport {TokenType} from '../../css/syntax/tokenizer';\nimport {LengthPercentageTuple} from '../../css/types/length-percentage';\nimport {Bounds} from '../../css/layout/bounds';\nimport {Context} from '../../core/context';\n\nconst CHECKBOX_BORDER_RADIUS: LengthPercentageTuple = [\n    {\n        type: TokenType.DIMENSION_TOKEN,\n        flags: 0,\n        unit: 'px',\n        number: 3\n    }\n];\n\nconst RADIO_BORDER_RADIUS: LengthPercentageTuple = [\n    {\n        type: TokenType.PERCENTAGE_TOKEN,\n        flags: 0,\n        number: 50\n    }\n];\n\nconst reformatInputBounds = (bounds: Bounds): Bounds => {\n    if (bounds.width > bounds.height) {\n        return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n    } else if (bounds.width < bounds.height) {\n        return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n    }\n    return bounds;\n};\n\nconst getInputValue = (node: HTMLInputElement): string => {\n    const value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n\n    return value.length === 0 ? node.placeholder || '' : value;\n};\n\nexport const CHECKBOX = 'checkbox';\nexport const RADIO = 'radio';\nexport const PASSWORD = 'password';\nexport const INPUT_COLOR = 0x2a2a2aff;\n\nexport class InputElementContainer extends ElementContainer {\n    readonly type: string;\n    readonly checked: boolean;\n    readonly value: string;\n\n    constructor(context: Context, input: HTMLInputElement) {\n        super(context, input);\n        this.type = input.type.toLowerCase();\n        this.checked = input.checked;\n        this.value = getInputValue(input);\n\n        if (this.type === CHECKBOX || this.type === RADIO) {\n            this.styles.backgroundColor = 0xdededeff;\n            this.styles.borderTopColor =\n                this.styles.borderRightColor =\n                this.styles.borderBottomColor =\n                this.styles.borderLeftColor =\n                    0xa5a5a5ff;\n            this.styles.borderTopWidth =\n                this.styles.borderRightWidth =\n                this.styles.borderBottomWidth =\n                this.styles.borderLeftWidth =\n                    1;\n            this.styles.borderTopStyle =\n                this.styles.borderRightStyle =\n                this.styles.borderBottomStyle =\n                this.styles.borderLeftStyle =\n                    BORDER_STYLE.SOLID;\n            this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n            this.styles.backgroundOrigin = [BACKGROUND_ORIGIN.BORDER_BOX];\n            this.bounds = reformatInputBounds(this.bounds);\n        }\n\n        switch (this.type) {\n            case CHECKBOX:\n                this.styles.borderTopRightRadius =\n                    this.styles.borderTopLeftRadius =\n                    this.styles.borderBottomRightRadius =\n                    this.styles.borderBottomLeftRadius =\n                        CHECKBOX_BORDER_RADIUS;\n                break;\n            case RADIO:\n                this.styles.borderTopRightRadius =\n                    this.styles.borderTopLeftRadius =\n                    this.styles.borderBottomRightRadius =\n                    this.styles.borderBottomLeftRadius =\n                        RADIO_BORDER_RADIUS;\n                break;\n        }\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class SelectElementContainer extends ElementContainer {\n    readonly value: string;\n    constructor(context: Context, element: HTMLSelectElement) {\n        super(context, element);\n        const option = element.options[element.selectedIndex || 0];\n        this.value = option ? option.text || '' : '';\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class TextareaElementContainer extends ElementContainer {\n    readonly value: string;\n    constructor(context: Context, element: HTMLTextAreaElement) {\n        super(context, element);\n        this.value = element.value;\n    }\n}\n", "import {ElementContainer} from '../element-container';\nimport {parseTree} from '../node-parser';\nimport {Color, parseColor, COLORS, isTransparent} from '../../css/types/color';\nimport {Context} from '../../core/context';\n\nexport class IFrameElementContainer extends ElementContainer {\n    src: string;\n    width: number;\n    height: number;\n    tree?: ElementContainer;\n    backgroundColor: Color;\n\n    constructor(context: Context, iframe: HTMLIFrameElement) {\n        super(context, iframe);\n        this.src = iframe.src;\n        this.width = parseInt(iframe.width, 10) || 0;\n        this.height = parseInt(iframe.height, 10) || 0;\n        this.backgroundColor = this.styles.backgroundColor;\n        try {\n            if (\n                iframe.contentWindow &&\n                iframe.contentWindow.document &&\n                iframe.contentWindow.document.documentElement\n            ) {\n                this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n\n                // http://www.w3.org/TR/css3-background/#special-backgrounds\n                const documentBackgroundColor = iframe.contentWindow.document.documentElement\n                    ? parseColor(\n                          context,\n                          getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor as string\n                      )\n                    : COLORS.TRANSPARENT;\n                const bodyBackgroundColor = iframe.contentWindow.document.body\n                    ? parseColor(\n                          context,\n                          getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string\n                      )\n                    : COLORS.TRANSPARENT;\n\n                this.backgroundColor = isTransparent(documentBackgroundColor)\n                    ? isTransparent(bodyBackgroundColor)\n                        ? this.styles.backgroundColor\n                        : bodyBackgroundColor\n                    : documentBackgroundColor;\n            }\n        } catch (e) {}\n    }\n}\n", "import {CSSParsedDeclaration} from '../css';\nimport {ElementContainer, FLAGS} from './element-container';\nimport {TextContainer} from './text-container';\nimport {ImageElementContainer} from './replaced-elements/image-element-container';\nimport {CanvasElementContainer} from './replaced-elements/canvas-element-container';\nimport {SVGElementContainer} from './replaced-elements/svg-element-container';\nimport {LIElementContainer} from './elements/li-element-container';\nimport {OLElementContainer} from './elements/ol-element-container';\nimport {InputElementContainer} from './replaced-elements/input-element-container';\nimport {SelectElementContainer} from './elements/select-element-container';\nimport {TextareaElementContainer} from './elements/textarea-element-container';\nimport {IFrameElementContainer} from './replaced-elements/iframe-element-container';\nimport {Context} from '../core/context';\n\nconst LIST_OWNERS = ['OL', 'UL', 'MENU'];\n\nconst parseNodeTree = (context: Context, node: Node, parent: ElementContainer, root: ElementContainer) => {\n    for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {\n        nextNode = childNode.nextSibling;\n\n        if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n            parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n        } else if (isElementNode(childNode)) {\n            if (isSlotElement(childNode) && childNode.assignedNodes) {\n                childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root));\n            } else {\n                const container = createContainer(context, childNode);\n                if (container.styles.isVisible()) {\n                    if (createsRealStackingContext(childNode, container, root)) {\n                        container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n                    } else if (createsStackingContext(container.styles)) {\n                        container.flags |= FLAGS.CREATES_STACKING_CONTEXT;\n                    }\n\n                    if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n                        container.flags |= FLAGS.IS_LIST_OWNER;\n                    }\n\n                    parent.elements.push(container);\n                    childNode.slot;\n                    if (childNode.shadowRoot) {\n                        parseNodeTree(context, childNode.shadowRoot, container, root);\n                    } else if (\n                        !isTextareaElement(childNode) &&\n                        !isSVGElement(childNode) &&\n                        !isSelectElement(childNode)\n                    ) {\n                        parseNodeTree(context, childNode, container, root);\n                    }\n                }\n            }\n        }\n    }\n};\n\nconst createContainer = (context: Context, element: Element): ElementContainer => {\n    if (isImageElement(element)) {\n        return new ImageElementContainer(context, element);\n    }\n\n    if (isCanvasElement(element)) {\n        return new CanvasElementContainer(context, element);\n    }\n\n    if (isSVGElement(element)) {\n        return new SVGElementContainer(context, element);\n    }\n\n    if (isLIElement(element)) {\n        return new LIElementContainer(context, element);\n    }\n\n    if (isOLElement(element)) {\n        return new OLElementContainer(context, element);\n    }\n\n    if (isInputElement(element)) {\n        return new InputElementContainer(context, element);\n    }\n\n    if (isSelectElement(element)) {\n        return new SelectElementContainer(context, element);\n    }\n\n    if (isTextareaElement(element)) {\n        return new TextareaElementContainer(context, element);\n    }\n\n    if (isIFrameElement(element)) {\n        return new IFrameElementContainer(context, element);\n    }\n\n    return new ElementContainer(context, element);\n};\n\nexport const parseTree = (context: Context, element: HTMLElement): ElementContainer => {\n    const container = createContainer(context, element);\n    container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n    parseNodeTree(context, element, container, container);\n    return container;\n};\n\nconst createsRealStackingContext = (node: Element, container: ElementContainer, root: ElementContainer): boolean => {\n    return (\n        container.styles.isPositionedWithZIndex() ||\n        container.styles.opacity < 1 ||\n        container.styles.isTransformed() ||\n        (isBodyElement(node) && root.styles.isTransparent())\n    );\n};\n\nconst createsStackingContext = (styles: CSSParsedDeclaration): boolean => styles.isPositioned() || styles.isFloating();\n\nexport const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE;\nexport const isElementNode = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE;\nexport const isHTMLElementNode = (node: Node): node is HTMLElement =>\n    isElementNode(node) && typeof (node as HTMLElement).style !== 'undefined' && !isSVGElementNode(node);\nexport const isSVGElementNode = (element: Element): element is SVGElement =>\n    typeof (element as SVGElement).className === 'object';\nexport const isLIElement = (node: Element): node is HTMLLIElement => node.tagName === 'LI';\nexport const isOLElement = (node: Element): node is HTMLOListElement => node.tagName === 'OL';\nexport const isInputElement = (node: Element): node is HTMLInputElement => node.tagName === 'INPUT';\nexport const isHTMLElement = (node: Element): node is HTMLHtmlElement => node.tagName === 'HTML';\nexport const isSVGElement = (node: Element): node is SVGSVGElement => node.tagName === 'svg';\nexport const isBodyElement = (node: Element): node is HTMLBodyElement => node.tagName === 'BODY';\nexport const isCanvasElement = (node: Element): node is HTMLCanvasElement => node.tagName === 'CANVAS';\nexport const isVideoElement = (node: Element): node is HTMLVideoElement => node.tagName === 'VIDEO';\nexport const isImageElement = (node: Element): node is HTMLImageElement => node.tagName === 'IMG';\nexport const isIFrameElement = (node: Element): node is HTMLIFrameElement => node.tagName === 'IFRAME';\nexport const isStyleElement = (node: Element): node is HTMLStyleElement => node.tagName === 'STYLE';\nexport const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT';\nexport const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA';\nexport const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT';\nexport const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT';\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nexport const isCustomElement = (node: Element): node is HTMLElement => node.tagName.indexOf('-') > 0;\n", "import {LIST_STYLE_TYPE} from '../../property-descriptors/list-style-type';\nimport {fromCodePoint} from 'css-line-break';\nimport {contains} from '../../../core/bitwise';\nimport {CSSParsedCounterDeclaration} from '../../index';\n\nexport class CounterState {\n    private readonly counters: {[key: string]: number[]} = {};\n\n    getCounterValue(name: string): number {\n        const counter = this.counters[name];\n\n        if (counter && counter.length) {\n            return counter[counter.length - 1];\n        }\n        return 1;\n    }\n\n    getCounterValues(name: string): readonly number[] {\n        const counter = this.counters[name];\n        return counter ? counter : [];\n    }\n\n    pop(counters: string[]): void {\n        counters.forEach((counter) => this.counters[counter].pop());\n    }\n\n    parse(style: CSSParsedCounterDeclaration): string[] {\n        const counterIncrement = style.counterIncrement;\n        const counterReset = style.counterReset;\n        let canReset = true;\n\n        if (counterIncrement !== null) {\n            counterIncrement.forEach((entry) => {\n                const counter = this.counters[entry.counter];\n                if (counter && entry.increment !== 0) {\n                    canReset = false;\n                    if (!counter.length) {\n                        counter.push(1);\n                    }\n                    counter[Math.max(0, counter.length - 1)] += entry.increment;\n                }\n            });\n        }\n\n        const counterNames: string[] = [];\n        if (canReset) {\n            counterReset.forEach((entry) => {\n                let counter = this.counters[entry.counter];\n                counterNames.push(entry.counter);\n                if (!counter) {\n                    counter = this.counters[entry.counter] = [];\n                }\n                counter.push(entry.reset);\n            });\n        }\n\n        return counterNames;\n    }\n}\n\ninterface CounterSymbols {\n    integers: number[];\n    values: string[];\n}\n\nconst ROMAN_UPPER: CounterSymbols = {\n    integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n    values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n};\n\nconst ARMENIAN: CounterSymbols = {\n    integers: [\n        9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n        60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n    ],\n    values: [\n        'Ք',\n        'Փ',\n        'Ւ',\n        'Ց',\n        'Ր',\n        'Տ',\n        'Վ',\n        'Ս',\n        'Ռ',\n        'Ջ',\n        'Պ',\n        'Չ',\n        'Ո',\n        'Շ',\n        'Ն',\n        'Յ',\n        'Մ',\n        'Ճ',\n        'Ղ',\n        'Ձ',\n        'Հ',\n        'Կ',\n        'Ծ',\n        'Խ',\n        'Լ',\n        'Ի',\n        'Ժ',\n        'Թ',\n        'Ը',\n        'Է',\n        'Զ',\n        'Ե',\n        'Դ',\n        'Գ',\n        'Բ',\n        'Ա'\n    ]\n};\n\nconst HEBREW: CounterSymbols = {\n    integers: [\n        10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n        19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n    ],\n    values: [\n        'י׳',\n        'ט׳',\n        'ח׳',\n        'ז׳',\n        'ו׳',\n        'ה׳',\n        'ד׳',\n        'ג׳',\n        'ב׳',\n        'א׳',\n        'ת',\n        'ש',\n        'ר',\n        'ק',\n        'צ',\n        'פ',\n        'ע',\n        'ס',\n        'נ',\n        'מ',\n        'ל',\n        'כ',\n        'יט',\n        'יח',\n        'יז',\n        'טז',\n        'טו',\n        'י',\n        'ט',\n        'ח',\n        'ז',\n        'ו',\n        'ה',\n        'ד',\n        'ג',\n        'ב',\n        'א'\n    ]\n};\n\nconst GEORGIAN: CounterSymbols = {\n    integers: [\n        10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n        80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n    ],\n    values: [\n        'ჵ',\n        'ჰ',\n        'ჯ',\n        'ჴ',\n        'ხ',\n        'ჭ',\n        'წ',\n        'ძ',\n        'ც',\n        'ჩ',\n        'შ',\n        'ყ',\n        'ღ',\n        'ქ',\n        'ფ',\n        'ჳ',\n        'ტ',\n        'ს',\n        'რ',\n        'ჟ',\n        'პ',\n        'ო',\n        'ჲ',\n        'ნ',\n        'მ',\n        'ლ',\n        'კ',\n        'ი',\n        'თ',\n        'ჱ',\n        'ზ',\n        'ვ',\n        'ე',\n        'დ',\n        'გ',\n        'ბ',\n        'ა'\n    ]\n};\n\nconst createAdditiveCounter = (\n    value: number,\n    min: number,\n    max: number,\n    symbols: CounterSymbols,\n    fallback: LIST_STYLE_TYPE,\n    suffix: string\n) => {\n    if (value < min || value > max) {\n        return createCounterText(value, fallback, suffix.length > 0);\n    }\n\n    return (\n        symbols.integers.reduce((string, integer, index) => {\n            while (value >= integer) {\n                value -= integer;\n                string += symbols.values[index];\n            }\n            return string;\n        }, '') + suffix\n    );\n};\n\nconst createCounterStyleWithSymbolResolver = (\n    value: number,\n    codePointRangeLength: number,\n    isNumeric: boolean,\n    resolver: (codePoint: number) => string\n): string => {\n    let string = '';\n\n    do {\n        if (!isNumeric) {\n            value--;\n        }\n        string = resolver(value) + string;\n        value /= codePointRangeLength;\n    } while (value * codePointRangeLength >= codePointRangeLength);\n\n    return string;\n};\n\nconst createCounterStyleFromRange = (\n    value: number,\n    codePointRangeStart: number,\n    codePointRangeEnd: number,\n    isNumeric: boolean,\n    suffix: string\n): string => {\n    const codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n\n    return (\n        (value < 0 ? '-' : '') +\n        (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, (codePoint) =>\n            fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart)\n        ) +\n            suffix)\n    );\n};\n\nconst createCounterStyleFromSymbols = (value: number, symbols: string, suffix = '. '): string => {\n    const codePointRangeLength = symbols.length;\n    return (\n        createCounterStyleWithSymbolResolver(\n            Math.abs(value),\n            codePointRangeLength,\n            false,\n            (codePoint) => symbols[Math.floor(codePoint % codePointRangeLength)]\n        ) + suffix\n    );\n};\n\nconst CJK_ZEROS = 1 << 0;\nconst CJK_TEN_COEFFICIENTS = 1 << 1;\nconst CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\nconst CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\nconst createCJKCounter = (\n    value: number,\n    numbers: string,\n    multipliers: string,\n    negativeSign: string,\n    suffix: string,\n    flags: number\n): string => {\n    if (value < -9999 || value > 9999) {\n        return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n    }\n    let tmp = Math.abs(value);\n    let string = suffix;\n\n    if (tmp === 0) {\n        return numbers[0] + string;\n    }\n\n    for (let digit = 0; tmp > 0 && digit <= 4; digit++) {\n        const coefficient = tmp % 10;\n\n        if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n            string = numbers[coefficient] + string;\n        } else if (\n            coefficient > 1 ||\n            (coefficient === 1 && digit === 0) ||\n            (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n            (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n            (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))\n        ) {\n            string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n        } else if (coefficient === 1 && digit > 0) {\n            string = multipliers[digit - 1] + string;\n        }\n        tmp = Math.floor(tmp / 10);\n    }\n\n    return (value < 0 ? negativeSign : '') + string;\n};\n\nconst CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\nconst CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\nconst JAPANESE_NEGATIVE = 'マイナス';\nconst KOREAN_NEGATIVE = '마이너스';\n\nexport const createCounterText = (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean): string => {\n    const defaultSuffix = appendSuffix ? '. ' : '';\n    const cjkSuffix = appendSuffix ? '、' : '';\n    const koreanSuffix = appendSuffix ? ', ' : '';\n    const spaceSuffix = appendSuffix ? ' ' : '';\n    switch (type) {\n        case LIST_STYLE_TYPE.DISC:\n            return '•' + spaceSuffix;\n        case LIST_STYLE_TYPE.CIRCLE:\n            return '◦' + spaceSuffix;\n        case LIST_STYLE_TYPE.SQUARE:\n            return '◾' + spaceSuffix;\n        case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n            const string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n            return string.length < 4 ? `0${string}` : string;\n        case LIST_STYLE_TYPE.CJK_DECIMAL:\n            return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n        case LIST_STYLE_TYPE.LOWER_ROMAN:\n            return createAdditiveCounter(\n                value,\n                1,\n                3999,\n                ROMAN_UPPER,\n                LIST_STYLE_TYPE.DECIMAL,\n                defaultSuffix\n            ).toLowerCase();\n        case LIST_STYLE_TYPE.UPPER_ROMAN:\n            return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n        case LIST_STYLE_TYPE.LOWER_GREEK:\n            return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n        case LIST_STYLE_TYPE.LOWER_ALPHA:\n            return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n        case LIST_STYLE_TYPE.UPPER_ALPHA:\n            return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n        case LIST_STYLE_TYPE.ARABIC_INDIC:\n            return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n        case LIST_STYLE_TYPE.ARMENIAN:\n        case LIST_STYLE_TYPE.UPPER_ARMENIAN:\n            return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n        case LIST_STYLE_TYPE.LOWER_ARMENIAN:\n            return createAdditiveCounter(\n                value,\n                1,\n                9999,\n                ARMENIAN,\n                LIST_STYLE_TYPE.DECIMAL,\n                defaultSuffix\n            ).toLowerCase();\n        case LIST_STYLE_TYPE.BENGALI:\n            return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n        case LIST_STYLE_TYPE.CAMBODIAN:\n        case LIST_STYLE_TYPE.KHMER:\n            return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n        case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n            return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n        case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n            return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n        case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n        case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n            return createCJKCounter(\n                value,\n                '零一二三四五六七八九',\n                CHINESE_INFORMAL_MULTIPLIERS,\n                '負',\n                cjkSuffix,\n                CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n            return createCJKCounter(\n                value,\n                '零壹貳參肆伍陸柒捌玖',\n                CHINESE_FORMAL_MULTIPLIERS,\n                '負',\n                cjkSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n            return createCJKCounter(\n                value,\n                '零一二三四五六七八九',\n                CHINESE_INFORMAL_MULTIPLIERS,\n                '负',\n                cjkSuffix,\n                CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n            return createCJKCounter(\n                value,\n                '零壹贰叁肆伍陆柒捌玖',\n                CHINESE_FORMAL_MULTIPLIERS,\n                '负',\n                cjkSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n            return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n        case LIST_STYLE_TYPE.JAPANESE_FORMAL:\n            return createCJKCounter(\n                value,\n                '零壱弐参四伍六七八九',\n                '拾百千万',\n                JAPANESE_NEGATIVE,\n                cjkSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n            return createCJKCounter(\n                value,\n                '영일이삼사오육칠팔구',\n                '십백천만',\n                KOREAN_NEGATIVE,\n                koreanSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n            return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n        case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n            return createCJKCounter(\n                value,\n                '零壹貳參四五六七八九',\n                '拾百千',\n                KOREAN_NEGATIVE,\n                koreanSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.DEVANAGARI:\n            return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n        case LIST_STYLE_TYPE.GEORGIAN:\n            return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n        case LIST_STYLE_TYPE.GUJARATI:\n            return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n        case LIST_STYLE_TYPE.GURMUKHI:\n            return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n        case LIST_STYLE_TYPE.HEBREW:\n            return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n        case LIST_STYLE_TYPE.HIRAGANA:\n            return createCounterStyleFromSymbols(\n                value,\n                'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'\n            );\n        case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n            return createCounterStyleFromSymbols(\n                value,\n                'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'\n            );\n        case LIST_STYLE_TYPE.KANNADA:\n            return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n        case LIST_STYLE_TYPE.KATAKANA:\n            return createCounterStyleFromSymbols(\n                value,\n                'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',\n                cjkSuffix\n            );\n        case LIST_STYLE_TYPE.KATAKANA_IROHA:\n            return createCounterStyleFromSymbols(\n                value,\n                'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',\n                cjkSuffix\n            );\n        case LIST_STYLE_TYPE.LAO:\n            return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n        case LIST_STYLE_TYPE.MONGOLIAN:\n            return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n        case LIST_STYLE_TYPE.MYANMAR:\n            return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n        case LIST_STYLE_TYPE.ORIYA:\n            return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n        case LIST_STYLE_TYPE.PERSIAN:\n            return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n        case LIST_STYLE_TYPE.TAMIL:\n            return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n        case LIST_STYLE_TYPE.TELUGU:\n            return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n        case LIST_STYLE_TYPE.THAI:\n            return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n        case LIST_STYLE_TYPE.TIBETAN:\n            return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n        case LIST_STYLE_TYPE.DECIMAL:\n        default:\n            return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n    }\n};\n", "import {Bounds} from '../css/layout/bounds';\nimport {\n    isBodyElement,\n    isCanvasElement,\n    isCustomElement,\n    isElementNode,\n    isHTMLElementNode,\n    isIFrameElement,\n    isImageElement,\n    isScriptElement,\n    isSelectElement,\n    isSlotElement,\n    isStyleElement,\n    isSVGElementNode,\n    isTextareaElement,\n    isTextNode,\n    isVideoElement\n} from './node-parser';\nimport {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser';\nimport {TokenType} from '../css/syntax/tokenizer';\nimport {CounterState, createCounterText} from '../css/types/functions/counter';\nimport {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type';\nimport {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index';\nimport {getQuote} from '../css/property-descriptors/quotes';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport interface CloneOptions {\n    ignoreElements?: (element: Element) => boolean;\n    onclone?: (document: Document, element: HTMLElement) => void;\n    allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n    scrollX: number;\n    scrollY: number;\n    windowWidth: number;\n    windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n    inlineImages: boolean;\n    copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n    private readonly scrolledElements: [Element, number, number][];\n    private readonly referenceElement: HTMLElement;\n    clonedReferenceElement?: HTMLElement;\n    private readonly documentElement: HTMLElement;\n    private readonly counters: CounterState;\n    private quoteDepth: number;\n\n    constructor(\n        private readonly context: Context,\n        element: HTMLElement,\n        private readonly options: CloneConfigurations\n    ) {\n        this.scrolledElements = [];\n        this.referenceElement = element;\n        this.counters = new CounterState();\n        this.quoteDepth = 0;\n        if (!element.ownerDocument) {\n            throw new Error('Cloned element does not have an owner document');\n        }\n\n        this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n    }\n\n    toIFrame(ownerDocument: Document, windowSize: Bounds): Promise<HTMLIFrameElement> {\n        const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n        if (!iframe.contentWindow) {\n            return Promise.reject(`Unable to find iframe window`);\n        }\n\n        const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n        const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n        const cloneWindow = iframe.contentWindow;\n        const documentClone: Document = cloneWindow.document;\n\n        /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\n         if window url is about:blank, we can assign the url to current by writing onto the document\n         */\n\n        const iframeLoad = iframeLoader(iframe).then(async () => {\n            this.scrolledElements.forEach(restoreNodeScroll);\n            if (cloneWindow) {\n                cloneWindow.scrollTo(windowSize.left, windowSize.top);\n                if (\n                    /(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n                    (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)\n                ) {\n                    this.context.logger.warn('Unable to restore scroll position for cloned document');\n                    this.context.windowBounds = this.context.windowBounds.add(\n                        cloneWindow.scrollX - windowSize.left,\n                        cloneWindow.scrollY - windowSize.top,\n                        0,\n                        0\n                    );\n                }\n            }\n\n            const onclone = this.options.onclone;\n\n            const referenceElement = this.clonedReferenceElement;\n\n            if (typeof referenceElement === 'undefined') {\n                return Promise.reject(`Error finding the ${this.referenceElement.nodeName} in the cloned document`);\n            }\n\n            if (documentClone.fonts && documentClone.fonts.ready) {\n                await documentClone.fonts.ready;\n            }\n\n            if (/(AppleWebKit)/g.test(navigator.userAgent)) {\n                await imagesReady(documentClone);\n            }\n\n            if (typeof onclone === 'function') {\n                return Promise.resolve()\n                    .then(() => onclone(documentClone, referenceElement))\n                    .then(() => iframe);\n            }\n\n            return iframe;\n        });\n\n        documentClone.open();\n        documentClone.write(`${serializeDoctype(document.doctype)}<html></html>`);\n        // Chrome scrolls the parent document for some reason after the write to the cloned window???\n        restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n        documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);\n        documentClone.close();\n\n        return iframeLoad;\n    }\n\n    createElementClone<T extends HTMLElement | SVGElement>(node: T): HTMLElement | SVGElement {\n        if (isDebugging(node, DebuggerType.CLONE)) {\n            debugger;\n        }\n        if (isCanvasElement(node)) {\n            return this.createCanvasClone(node);\n        }\n        if (isVideoElement(node)) {\n            return this.createVideoClone(node);\n        }\n        if (isStyleElement(node)) {\n            return this.createStyleClone(node);\n        }\n\n        const clone = node.cloneNode(false) as T;\n        if (isImageElement(clone)) {\n            if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n                clone.src = node.currentSrc;\n                clone.srcset = '';\n            }\n\n            if (clone.loading === 'lazy') {\n                clone.loading = 'eager';\n            }\n        }\n\n        if (isCustomElement(clone)) {\n            return this.createCustomElementClone(clone);\n        }\n\n        return clone;\n    }\n\n    createCustomElementClone(node: HTMLElement): HTMLElement {\n        const clone = document.createElement('html2canvascustomelement');\n        copyCSSStyles(node.style, clone);\n\n        return clone;\n    }\n\n    createStyleClone(node: HTMLStyleElement): HTMLStyleElement {\n        try {\n            const sheet = node.sheet as CSSStyleSheet | undefined;\n            if (sheet && sheet.cssRules) {\n                const css: string = [].slice.call(sheet.cssRules, 0).reduce((css: string, rule: CSSRule) => {\n                    if (rule && typeof rule.cssText === 'string') {\n                        return css + rule.cssText;\n                    }\n                    return css;\n                }, '');\n                const style = node.cloneNode(false) as HTMLStyleElement;\n                style.textContent = css;\n                return style;\n            }\n        } catch (e) {\n            // accessing node.sheet.cssRules throws a DOMException\n            this.context.logger.error('Unable to access cssRules property', e);\n            if (e.name !== 'SecurityError') {\n                throw e;\n            }\n        }\n        return node.cloneNode(false) as HTMLStyleElement;\n    }\n\n    createCanvasClone(canvas: HTMLCanvasElement): HTMLImageElement | HTMLCanvasElement {\n        if (this.options.inlineImages && canvas.ownerDocument) {\n            const img = canvas.ownerDocument.createElement('img');\n            try {\n                img.src = canvas.toDataURL();\n                return img;\n            } catch (e) {\n                this.context.logger.info(`Unable to inline canvas contents, canvas is tainted`, canvas);\n            }\n        }\n\n        const clonedCanvas = canvas.cloneNode(false) as HTMLCanvasElement;\n\n        try {\n            clonedCanvas.width = canvas.width;\n            clonedCanvas.height = canvas.height;\n            const ctx = canvas.getContext('2d');\n            const clonedCtx = clonedCanvas.getContext('2d');\n            if (clonedCtx) {\n                if (!this.options.allowTaint && ctx) {\n                    clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n                } else {\n                    const gl = canvas.getContext('webgl2') ?? canvas.getContext('webgl');\n                    if (gl) {\n                        const attribs = gl.getContextAttributes();\n                        if (attribs?.preserveDrawingBuffer === false) {\n                            this.context.logger.warn(\n                                'Unable to clone WebGL context as it has preserveDrawingBuffer=false',\n                                canvas\n                            );\n                        }\n                    }\n\n                    clonedCtx.drawImage(canvas, 0, 0);\n                }\n            }\n            return clonedCanvas;\n        } catch (e) {\n            this.context.logger.info(`Unable to clone canvas as it is tainted`, canvas);\n        }\n\n        return clonedCanvas;\n    }\n\n    createVideoClone(video: HTMLVideoElement): HTMLCanvasElement {\n        const canvas = video.ownerDocument.createElement('canvas');\n\n        canvas.width = video.offsetWidth;\n        canvas.height = video.offsetHeight;\n        const ctx = canvas.getContext('2d');\n\n        try {\n            if (ctx) {\n                ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n                if (!this.options.allowTaint) {\n                    ctx.getImageData(0, 0, canvas.width, canvas.height);\n                }\n            }\n            return canvas;\n        } catch (e) {\n            this.context.logger.info(`Unable to clone video as it is tainted`, video);\n        }\n\n        const blankCanvas = video.ownerDocument.createElement('canvas');\n\n        blankCanvas.width = video.offsetWidth;\n        blankCanvas.height = video.offsetHeight;\n        return blankCanvas;\n    }\n\n    appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void {\n        if (\n            !isElementNode(child) ||\n            (!isScriptElement(child) &&\n                !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n                (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))\n        ) {\n            if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n                clone.appendChild(this.cloneNode(child, copyStyles));\n            }\n        }\n    }\n\n    cloneChildNodes(node: Element, clone: HTMLElement | SVGElement, copyStyles: boolean): void {\n        for (\n            let child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild;\n            child;\n            child = child.nextSibling\n        ) {\n            if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n                const assignedNodes = child.assignedNodes() as ChildNode[];\n                if (assignedNodes.length) {\n                    assignedNodes.forEach((assignedNode) => this.appendChildNode(clone, assignedNode, copyStyles));\n                }\n            } else {\n                this.appendChildNode(clone, child, copyStyles);\n            }\n        }\n    }\n\n    cloneNode(node: Node, copyStyles: boolean): Node {\n        if (isTextNode(node)) {\n            return document.createTextNode(node.data);\n        }\n\n        if (!node.ownerDocument) {\n            return node.cloneNode(false);\n        }\n\n        const window = node.ownerDocument.defaultView;\n\n        if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n            const clone = this.createElementClone(node);\n            clone.style.transitionProperty = 'none';\n\n            const style = window.getComputedStyle(node);\n            const styleBefore = window.getComputedStyle(node, ':before');\n            const styleAfter = window.getComputedStyle(node, ':after');\n\n            if (this.referenceElement === node && isHTMLElementNode(clone)) {\n                this.clonedReferenceElement = clone;\n            }\n            if (isBodyElement(clone)) {\n                createPseudoHideStyles(clone);\n            }\n\n            const counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n            const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n\n            if (isCustomElement(node)) {\n                copyStyles = true;\n            }\n\n            if (!isVideoElement(node)) {\n                this.cloneChildNodes(node, clone, copyStyles);\n            }\n\n            if (before) {\n                clone.insertBefore(before, clone.firstChild);\n            }\n\n            const after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n            if (after) {\n                clone.appendChild(after);\n            }\n\n            this.counters.pop(counters);\n\n            if (\n                (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n                copyStyles\n            ) {\n                copyCSSStyles(style, clone);\n            }\n\n            if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n                this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n            }\n\n            if (\n                (isTextareaElement(node) || isSelectElement(node)) &&\n                (isTextareaElement(clone) || isSelectElement(clone))\n            ) {\n                clone.value = node.value;\n            }\n\n            return clone;\n        }\n\n        return node.cloneNode(false);\n    }\n\n    resolvePseudoContent(\n        node: Element,\n        clone: Element,\n        style: CSSStyleDeclaration,\n        pseudoElt: PseudoElementType\n    ): HTMLElement | void {\n        if (!style) {\n            return;\n        }\n\n        const value = style.content;\n        const document = clone.ownerDocument;\n        if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n            return;\n        }\n\n        this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n        const declaration = new CSSParsedPseudoDeclaration(this.context, style);\n\n        const anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n        copyCSSStyles(style, anonymousReplacedElement);\n\n        declaration.content.forEach((token) => {\n            if (token.type === TokenType.STRING_TOKEN) {\n                anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n            } else if (token.type === TokenType.URL_TOKEN) {\n                const img = document.createElement('img');\n                img.src = token.value;\n                img.style.opacity = '1';\n                anonymousReplacedElement.appendChild(img);\n            } else if (token.type === TokenType.FUNCTION) {\n                if (token.name === 'attr') {\n                    const attr = token.values.filter(isIdentToken);\n                    if (attr.length) {\n                        anonymousReplacedElement.appendChild(\n                            document.createTextNode(node.getAttribute(attr[0].value) || '')\n                        );\n                    }\n                } else if (token.name === 'counter') {\n                    const [counter, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n                    if (counter && isIdentToken(counter)) {\n                        const counterState = this.counters.getCounterValue(counter.value);\n                        const counterType =\n                            counterStyle && isIdentToken(counterStyle)\n                                ? listStyleType.parse(this.context, counterStyle.value)\n                                : LIST_STYLE_TYPE.DECIMAL;\n\n                        anonymousReplacedElement.appendChild(\n                            document.createTextNode(createCounterText(counterState, counterType, false))\n                        );\n                    }\n                } else if (token.name === 'counters') {\n                    const [counter, delim, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n                    if (counter && isIdentToken(counter)) {\n                        const counterStates = this.counters.getCounterValues(counter.value);\n                        const counterType =\n                            counterStyle && isIdentToken(counterStyle)\n                                ? listStyleType.parse(this.context, counterStyle.value)\n                                : LIST_STYLE_TYPE.DECIMAL;\n                        const separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : '';\n                        const text = counterStates\n                            .map((value) => createCounterText(value, counterType, false))\n                            .join(separator);\n\n                        anonymousReplacedElement.appendChild(document.createTextNode(text));\n                    }\n                } else {\n                    //   console.log('FUNCTION_TOKEN', token);\n                }\n            } else if (token.type === TokenType.IDENT_TOKEN) {\n                switch (token.value) {\n                    case 'open-quote':\n                        anonymousReplacedElement.appendChild(\n                            document.createTextNode(getQuote(declaration.quotes, this.quoteDepth++, true))\n                        );\n                        break;\n                    case 'close-quote':\n                        anonymousReplacedElement.appendChild(\n                            document.createTextNode(getQuote(declaration.quotes, --this.quoteDepth, false))\n                        );\n                        break;\n                    default:\n                        // safari doesn't parse string tokens correctly because of lack of quotes\n                        anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n                }\n            }\n        });\n\n        anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n        const newClassName =\n            pseudoElt === PseudoElementType.BEFORE\n                ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}`\n                : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n\n        if (isSVGElementNode(clone)) {\n            clone.className.baseValue += newClassName;\n        } else {\n            clone.className += newClassName;\n        }\n\n        return anonymousReplacedElement;\n    }\n\n    static destroy(container: HTMLIFrameElement): boolean {\n        if (container.parentNode) {\n            container.parentNode.removeChild(container);\n            return true;\n        }\n        return false;\n    }\n}\n\nenum PseudoElementType {\n    BEFORE,\n    AFTER\n}\n\nconst createIFrameContainer = (ownerDocument: Document, bounds: Bounds): HTMLIFrameElement => {\n    const cloneIframeContainer = ownerDocument.createElement('iframe');\n\n    cloneIframeContainer.className = 'html2canvas-container';\n    cloneIframeContainer.style.visibility = 'hidden';\n    cloneIframeContainer.style.position = 'fixed';\n    cloneIframeContainer.style.left = '-10000px';\n    cloneIframeContainer.style.top = '0px';\n    cloneIframeContainer.style.border = '0';\n    cloneIframeContainer.width = bounds.width.toString();\n    cloneIframeContainer.height = bounds.height.toString();\n    cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n    cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n    ownerDocument.body.appendChild(cloneIframeContainer);\n\n    return cloneIframeContainer;\n};\n\nconst imageReady = (img: HTMLImageElement): Promise<Event | void | string> => {\n    return new Promise((resolve) => {\n        if (img.complete) {\n            resolve();\n            return;\n        }\n        if (!img.src) {\n            resolve();\n            return;\n        }\n        img.onload = resolve;\n        img.onerror = resolve;\n    });\n};\n\nconst imagesReady = (document: HTMLDocument): Promise<unknown[]> => {\n    return Promise.all([].slice.call(document.images, 0).map(imageReady));\n};\n\nconst iframeLoader = (iframe: HTMLIFrameElement): Promise<HTMLIFrameElement> => {\n    return new Promise((resolve, reject) => {\n        const cloneWindow = iframe.contentWindow;\n\n        if (!cloneWindow) {\n            return reject(`No window assigned for iframe`);\n        }\n\n        const documentClone = cloneWindow.document;\n\n        cloneWindow.onload = iframe.onload = () => {\n            cloneWindow.onload = iframe.onload = null;\n            const interval = setInterval(() => {\n                if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n                    clearInterval(interval);\n                    resolve(iframe);\n                }\n            }, 50);\n        };\n    });\n};\n\nconst ignoredStyleProperties = [\n    'all', // #2476\n    'd', // #2483\n    'content' // Safari shows pseudoelements if content is set\n];\n\nexport const copyCSSStyles = <T extends HTMLElement | SVGElement>(style: CSSStyleDeclaration, target: T): T => {\n    // Edge does not provide value for cssText\n    for (let i = style.length - 1; i >= 0; i--) {\n        const property = style.item(i);\n        if (ignoredStyleProperties.indexOf(property) === -1) {\n            target.style.setProperty(property, style.getPropertyValue(property));\n        }\n    }\n    return target;\n};\n\nconst serializeDoctype = (doctype?: DocumentType | null): string => {\n    let str = '';\n    if (doctype) {\n        str += '<!DOCTYPE ';\n        if (doctype.name) {\n            str += doctype.name;\n        }\n\n        if (doctype.internalSubset) {\n            str += doctype.internalSubset;\n        }\n\n        if (doctype.publicId) {\n            str += `\"${doctype.publicId}\"`;\n        }\n\n        if (doctype.systemId) {\n            str += `\"${doctype.systemId}\"`;\n        }\n\n        str += '>';\n    }\n\n    return str;\n};\n\nconst restoreOwnerScroll = (ownerDocument: Document | null, x: number, y: number) => {\n    if (\n        ownerDocument &&\n        ownerDocument.defaultView &&\n        (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)\n    ) {\n        ownerDocument.defaultView.scrollTo(x, y);\n    }\n};\n\nconst restoreNodeScroll = ([element, x, y]: [HTMLElement, number, number]) => {\n    element.scrollLeft = x;\n    element.scrollTop = y;\n};\n\nconst PSEUDO_BEFORE = ':before';\nconst PSEUDO_AFTER = ':after';\nconst PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\nconst PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n\nconst PSEUDO_HIDE_ELEMENT_STYLE = `{\n    content: \"\" !important;\n    display: none !important;\n}`;\n\nconst createPseudoHideStyles = (body: HTMLElement) => {\n    createStyles(\n        body,\n        `.${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}${PSEUDO_BEFORE}${PSEUDO_HIDE_ELEMENT_STYLE}\n         .${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}${PSEUDO_AFTER}${PSEUDO_HIDE_ELEMENT_STYLE}`\n    );\n};\n\nconst createStyles = (body: HTMLElement, styles: string) => {\n    const document = body.ownerDocument;\n    if (document) {\n        const style = document.createElement('style');\n        style.textContent = styles;\n        body.appendChild(style);\n    }\n};\n", "import {FEATURES} from './features';\nimport {Context} from './context';\n\nexport class CacheStorage {\n    private static _link?: HTMLAnchorElement;\n    private static _origin = 'about:blank';\n\n    static getOrigin(url: string): string {\n        const link = CacheStorage._link;\n        if (!link) {\n            return 'about:blank';\n        }\n\n        link.href = url;\n        link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n        return link.protocol + link.hostname + link.port;\n    }\n\n    static isSameOrigin(src: string): boolean {\n        return CacheStorage.getOrigin(src) === CacheStorage._origin;\n    }\n\n    static setContext(window: Window): void {\n        CacheStorage._link = window.document.createElement('a');\n        CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n    }\n}\n\nexport interface ResourceOptions {\n    imageTimeout: number;\n    useCORS: boolean;\n    allowTaint: boolean;\n    proxy?: string;\n}\n\nexport class Cache {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private readonly _cache: {[key: string]: Promise<any>} = {};\n\n    constructor(private readonly context: Context, private readonly _options: ResourceOptions) {}\n\n    addImage(src: string): Promise<void> {\n        const result = Promise.resolve();\n        if (this.has(src)) {\n            return result;\n        }\n\n        if (isBlobImage(src) || isRenderable(src)) {\n            (this._cache[src] = this.loadImage(src)).catch(() => {\n                // prevent unhandled rejection\n            });\n            return result;\n        }\n\n        return result;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    match(src: string): Promise<any> {\n        return this._cache[src];\n    }\n\n    private async loadImage(key: string) {\n        const isSameOrigin = CacheStorage.isSameOrigin(key);\n        const useCORS =\n            !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n        const useProxy =\n            !isInlineImage(key) &&\n            !isSameOrigin &&\n            !isBlobImage(key) &&\n            typeof this._options.proxy === 'string' &&\n            FEATURES.SUPPORT_CORS_XHR &&\n            !useCORS;\n        if (\n            !isSameOrigin &&\n            this._options.allowTaint === false &&\n            !isInlineImage(key) &&\n            !isBlobImage(key) &&\n            !useProxy &&\n            !useCORS\n        ) {\n            return;\n        }\n\n        let src = key;\n        if (useProxy) {\n            src = await this.proxy(src);\n        }\n\n        this.context.logger.debug(`Added image ${key.substring(0, 256)}`);\n\n        return await new Promise((resolve, reject) => {\n            const img = new Image();\n            img.onload = () => resolve(img);\n            img.onerror = reject;\n            //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n            if (isInlineBase64Image(src) || useCORS) {\n                img.crossOrigin = 'anonymous';\n            }\n            img.src = src;\n            if (img.complete === true) {\n                // Inline XML images may fail to parse, throwing an Error later on\n                setTimeout(() => resolve(img), 500);\n            }\n            if (this._options.imageTimeout > 0) {\n                setTimeout(\n                    () => reject(`Timed out (${this._options.imageTimeout}ms) loading image`),\n                    this._options.imageTimeout\n                );\n            }\n        });\n    }\n\n    private has(key: string): boolean {\n        return typeof this._cache[key] !== 'undefined';\n    }\n\n    keys(): Promise<string[]> {\n        return Promise.resolve(Object.keys(this._cache));\n    }\n\n    private proxy(src: string): Promise<string> {\n        const proxy = this._options.proxy;\n\n        if (!proxy) {\n            throw new Error('No proxy defined');\n        }\n\n        const key = src.substring(0, 256);\n\n        return new Promise((resolve, reject) => {\n            const responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n            const xhr = new XMLHttpRequest();\n            xhr.onload = () => {\n                if (xhr.status === 200) {\n                    if (responseType === 'text') {\n                        resolve(xhr.response);\n                    } else {\n                        const reader = new FileReader();\n                        reader.addEventListener('load', () => resolve(reader.result as string), false);\n                        reader.addEventListener('error', (e) => reject(e), false);\n                        reader.readAsDataURL(xhr.response);\n                    }\n                } else {\n                    reject(`Failed to proxy resource ${key} with status code ${xhr.status}`);\n                }\n            };\n\n            xhr.onerror = reject;\n            const queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n            xhr.open('GET', `${proxy}${queryString}url=${encodeURIComponent(src)}&responseType=${responseType}`);\n\n            if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n                xhr.responseType = responseType;\n            }\n\n            if (this._options.imageTimeout) {\n                const timeout = this._options.imageTimeout;\n                xhr.timeout = timeout;\n                xhr.ontimeout = () => reject(`Timed out (${timeout}ms) proxying ${key}`);\n            }\n\n            xhr.send();\n        });\n    }\n}\n\nconst INLINE_SVG = /^data:image\\/svg\\+xml/i;\nconst INLINE_BASE64 = /^data:image\\/.*;base64,/i;\nconst INLINE_IMG = /^data:image\\/.*/i;\n\nconst isRenderable = (src: string): boolean => FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\nconst isInlineImage = (src: string): boolean => INLINE_IMG.test(src);\nconst isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src);\nconst isBlobImage = (src: string): boolean => src.substr(0, 4) === 'blob';\n\nconst isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n", "import {IPath, Path, PathType} from './path';\n\nexport class Vector implements IPath {\n    type: PathType;\n    x: number;\n    y: number;\n\n    constructor(x: number, y: number) {\n        this.type = PathType.VECTOR;\n        this.x = x;\n        this.y = y;\n    }\n\n    add(deltaX: number, deltaY: number): Vector {\n        return new Vector(this.x + deltaX, this.y + deltaY);\n    }\n}\n\nexport const isVector = (path: Path): path is Vector => path.type === PathType.VECTOR;\n", "import {Vector} from './vector';\nimport {IPath, PathType, Path} from './path';\n\nconst lerp = (a: Vector, b: Vector, t: number): Vector => {\n    return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n};\n\nexport class BezierCurve implements IPath {\n    type: PathType;\n    start: Vector;\n    startControl: Vector;\n    endControl: Vector;\n    end: Vector;\n\n    constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector) {\n        this.type = PathType.BEZIER_CURVE;\n        this.start = start;\n        this.startControl = startControl;\n        this.endControl = endControl;\n        this.end = end;\n    }\n\n    subdivide(t: number, firstHalf: boolean): BezierCurve {\n        const ab = lerp(this.start, this.startControl, t);\n        const bc = lerp(this.startControl, this.endControl, t);\n        const cd = lerp(this.endControl, this.end, t);\n        const abbc = lerp(ab, bc, t);\n        const bccd = lerp(bc, cd, t);\n        const dest = lerp(abbc, bccd, t);\n        return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n    }\n\n    add(deltaX: number, deltaY: number): BezierCurve {\n        return new BezierCurve(\n            this.start.add(deltaX, deltaY),\n            this.startControl.add(deltaX, deltaY),\n            this.endControl.add(deltaX, deltaY),\n            this.end.add(deltaX, deltaY)\n        );\n    }\n\n    reverse(): BezierCurve {\n        return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n    }\n}\n\nexport const isBezierCurve = (path: Path): path is BezierCurve => path.type === PathType.BEZIER_CURVE;\n", "import {ElementContainer} from '../dom/element-container';\nimport {getAbsoluteValue, getAbsoluteValueForTuple} from '../css/types/length-percentage';\nimport {Vector} from './vector';\nimport {BezierCurve} from './bezier-curve';\nimport {Path} from './path';\n\nexport class BoundCurves {\n    readonly topLeftBorderDoubleOuterBox: Path;\n    readonly topRightBorderDoubleOuterBox: Path;\n    readonly bottomRightBorderDoubleOuterBox: Path;\n    readonly bottomLeftBorderDoubleOuterBox: Path;\n    readonly topLeftBorderDoubleInnerBox: Path;\n    readonly topRightBorderDoubleInnerBox: Path;\n    readonly bottomRightBorderDoubleInnerBox: Path;\n    readonly bottomLeftBorderDoubleInnerBox: Path;\n    readonly topLeftBorderStroke: Path;\n    readonly topRightBorderStroke: Path;\n    readonly bottomRightBorderStroke: Path;\n    readonly bottomLeftBorderStroke: Path;\n    readonly topLeftBorderBox: Path;\n    readonly topRightBorderBox: Path;\n    readonly bottomRightBorderBox: Path;\n    readonly bottomLeftBorderBox: Path;\n    readonly topLeftPaddingBox: Path;\n    readonly topRightPaddingBox: Path;\n    readonly bottomRightPaddingBox: Path;\n    readonly bottomLeftPaddingBox: Path;\n    readonly topLeftContentBox: Path;\n    readonly topRightContentBox: Path;\n    readonly bottomRightContentBox: Path;\n    readonly bottomLeftContentBox: Path;\n\n    constructor(element: ElementContainer) {\n        const styles = element.styles;\n        const bounds = element.bounds;\n\n        let [tlh, tlv] = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height);\n        let [trh, trv] = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height);\n        let [brh, brv] = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height);\n        let [blh, blv] = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height);\n\n        const factors = [];\n        factors.push((tlh + trh) / bounds.width);\n        factors.push((blh + brh) / bounds.width);\n        factors.push((tlv + blv) / bounds.height);\n        factors.push((trv + brv) / bounds.height);\n        const maxFactor = Math.max(...factors);\n\n        if (maxFactor > 1) {\n            tlh /= maxFactor;\n            tlv /= maxFactor;\n            trh /= maxFactor;\n            trv /= maxFactor;\n            brh /= maxFactor;\n            brv /= maxFactor;\n            blh /= maxFactor;\n            blv /= maxFactor;\n        }\n\n        const topWidth = bounds.width - trh;\n        const rightHeight = bounds.height - brv;\n        const bottomWidth = bounds.width - brh;\n        const leftHeight = bounds.height - blv;\n\n        const borderTopWidth = styles.borderTopWidth;\n        const borderRightWidth = styles.borderRightWidth;\n        const borderBottomWidth = styles.borderBottomWidth;\n        const borderLeftWidth = styles.borderLeftWidth;\n\n        const paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n        const paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n        const paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n        const paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n\n        this.topLeftBorderDoubleOuterBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth / 3,\n                      bounds.top + borderTopWidth / 3,\n                      tlh - borderLeftWidth / 3,\n                      tlv - borderTopWidth / 3,\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n        this.topRightBorderDoubleOuterBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + topWidth,\n                      bounds.top + borderTopWidth / 3,\n                      trh - borderRightWidth / 3,\n                      trv - borderTopWidth / 3,\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n        this.bottomRightBorderDoubleOuterBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + bottomWidth,\n                      bounds.top + rightHeight,\n                      brh - borderRightWidth / 3,\n                      brv - borderBottomWidth / 3,\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - borderRightWidth / 3,\n                      bounds.top + bounds.height - borderBottomWidth / 3\n                  );\n        this.bottomLeftBorderDoubleOuterBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth / 3,\n                      bounds.top + leftHeight,\n                      blh - borderLeftWidth / 3,\n                      blv - borderBottomWidth / 3,\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n        this.topLeftBorderDoubleInnerBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + (borderLeftWidth * 2) / 3,\n                      bounds.top + (borderTopWidth * 2) / 3,\n                      tlh - (borderLeftWidth * 2) / 3,\n                      tlv - (borderTopWidth * 2) / 3,\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n        this.topRightBorderDoubleInnerBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + topWidth,\n                      bounds.top + (borderTopWidth * 2) / 3,\n                      trh - (borderRightWidth * 2) / 3,\n                      trv - (borderTopWidth * 2) / 3,\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n                      bounds.top + (borderTopWidth * 2) / 3\n                  );\n        this.bottomRightBorderDoubleInnerBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + bottomWidth,\n                      bounds.top + rightHeight,\n                      brh - (borderRightWidth * 2) / 3,\n                      brv - (borderBottomWidth * 2) / 3,\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n                      bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n                  );\n        this.bottomLeftBorderDoubleInnerBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + (borderLeftWidth * 2) / 3,\n                      bounds.top + leftHeight,\n                      blh - (borderLeftWidth * 2) / 3,\n                      blv - (borderBottomWidth * 2) / 3,\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(\n                      bounds.left + (borderLeftWidth * 2) / 3,\n                      bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n                  );\n        this.topLeftBorderStroke =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth / 2,\n                      bounds.top + borderTopWidth / 2,\n                      tlh - borderLeftWidth / 2,\n                      tlv - borderTopWidth / 2,\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n        this.topRightBorderStroke =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + topWidth,\n                      bounds.top + borderTopWidth / 2,\n                      trh - borderRightWidth / 2,\n                      trv - borderTopWidth / 2,\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n        this.bottomRightBorderStroke =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + bottomWidth,\n                      bounds.top + rightHeight,\n                      brh - borderRightWidth / 2,\n                      brv - borderBottomWidth / 2,\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - borderRightWidth / 2,\n                      bounds.top + bounds.height - borderBottomWidth / 2\n                  );\n        this.bottomLeftBorderStroke =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth / 2,\n                      bounds.top + leftHeight,\n                      blh - borderLeftWidth / 2,\n                      blv - borderBottomWidth / 2,\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n        this.topLeftBorderBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n                : new Vector(bounds.left, bounds.top);\n        this.topRightBorderBox =\n            trh > 0 || trv > 0\n                ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n                : new Vector(bounds.left + bounds.width, bounds.top);\n        this.bottomRightBorderBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n                : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n        this.bottomLeftBorderBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n                : new Vector(bounds.left, bounds.top + bounds.height);\n        this.topLeftPaddingBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth,\n                      bounds.top + borderTopWidth,\n                      Math.max(0, tlh - borderLeftWidth),\n                      Math.max(0, tlv - borderTopWidth),\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n        this.topRightPaddingBox =\n            trh > 0 || trv > 0\n                ? getCurvePoints(\n                      bounds.left + Math.min(topWidth, bounds.width - borderRightWidth),\n                      bounds.top + borderTopWidth,\n                      topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth),\n                      Math.max(0, trv - borderTopWidth),\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n        this.bottomRightPaddingBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth),\n                      bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth),\n                      Math.max(0, brh - borderRightWidth),\n                      Math.max(0, brv - borderBottomWidth),\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - borderRightWidth,\n                      bounds.top + bounds.height - borderBottomWidth\n                  );\n        this.bottomLeftPaddingBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth,\n                      bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth),\n                      Math.max(0, blh - borderLeftWidth),\n                      Math.max(0, blv - borderBottomWidth),\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n        this.topLeftContentBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth + paddingLeft,\n                      bounds.top + borderTopWidth + paddingTop,\n                      Math.max(0, tlh - (borderLeftWidth + paddingLeft)),\n                      Math.max(0, tlv - (borderTopWidth + paddingTop)),\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n        this.topRightContentBox =\n            trh > 0 || trv > 0\n                ? getCurvePoints(\n                      bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft),\n                      bounds.top + borderTopWidth + paddingTop,\n                      topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft,\n                      trv - (borderTopWidth + paddingTop),\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - (borderRightWidth + paddingRight),\n                      bounds.top + borderTopWidth + paddingTop\n                  );\n        this.bottomRightContentBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)),\n                      bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop),\n                      Math.max(0, brh - (borderRightWidth + paddingRight)),\n                      brv - (borderBottomWidth + paddingBottom),\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - (borderRightWidth + paddingRight),\n                      bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n                  );\n        this.bottomLeftContentBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth + paddingLeft,\n                      bounds.top + leftHeight,\n                      Math.max(0, blh - (borderLeftWidth + paddingLeft)),\n                      blv - (borderBottomWidth + paddingBottom),\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(\n                      bounds.left + borderLeftWidth + paddingLeft,\n                      bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n                  );\n    }\n}\n\nenum CORNER {\n    TOP_LEFT = 0,\n    TOP_RIGHT = 1,\n    BOTTOM_RIGHT = 2,\n    BOTTOM_LEFT = 3\n}\n\nconst getCurvePoints = (x: number, y: number, r1: number, r2: number, position: CORNER): BezierCurve => {\n    const kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n    const ox = r1 * kappa; // control point offset horizontal\n    const oy = r2 * kappa; // control point offset vertical\n    const xm = x + r1; // x-middle\n    const ym = y + r2; // y-middle\n\n    switch (position) {\n        case CORNER.TOP_LEFT:\n            return new BezierCurve(\n                new Vector(x, ym),\n                new Vector(x, ym - oy),\n                new Vector(xm - ox, y),\n                new Vector(xm, y)\n            );\n        case CORNER.TOP_RIGHT:\n            return new BezierCurve(\n                new Vector(x, y),\n                new Vector(x + ox, y),\n                new Vector(xm, ym - oy),\n                new Vector(xm, ym)\n            );\n        case CORNER.BOTTOM_RIGHT:\n            return new BezierCurve(\n                new Vector(xm, y),\n                new Vector(xm, y + oy),\n                new Vector(x + ox, ym),\n                new Vector(x, ym)\n            );\n        case CORNER.BOTTOM_LEFT:\n        default:\n            return new BezierCurve(\n                new Vector(xm, ym),\n                new Vector(xm - ox, ym),\n                new Vector(x, y + oy),\n                new Vector(x, y)\n            );\n    }\n};\n\nexport const calculateBorderBoxPath = (curves: BoundCurves): Path[] => {\n    return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n};\n\nexport const calculateContentBoxPath = (curves: BoundCurves): Path[] => {\n    return [\n        curves.topLeftContentBox,\n        curves.topRightContentBox,\n        curves.bottomRightContentBox,\n        curves.bottomLeftContentBox\n    ];\n};\n\nexport const calculatePaddingBoxPath = (curves: BoundCurves): Path[] => {\n    return [\n        curves.topLeftPaddingBox,\n        curves.topRightPaddingBox,\n        curves.bottomRightPaddingBox,\n        curves.bottomLeftPaddingBox\n    ];\n};\n", "import {Matrix} from '../css/property-descriptors/transform';\nimport {Path} from './path';\n\nexport const enum EffectType {\n    TRANSFORM = 0,\n    CLIP = 1,\n    OPACITY = 2\n}\n\nexport const enum EffectTarget {\n    BACKGROUND_BORDERS = 1 << 1,\n    CONTENT = 1 << 2\n}\n\nexport interface IElementEffect {\n    readonly type: EffectType;\n    readonly target: number;\n}\n\nexport class TransformEffect implements IElementEffect {\n    readonly type: EffectType = EffectType.TRANSFORM;\n    readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n    constructor(readonly offsetX: number, readonly offsetY: number, readonly matrix: Matrix) {}\n}\n\nexport class ClipEffect implements IElementEffect {\n    readonly type: EffectType = EffectType.CLIP;\n\n    constructor(readonly path: Path[], readonly target: EffectTarget) {}\n}\n\nexport class OpacityEffect implements IElementEffect {\n    readonly type: EffectType = EffectType.OPACITY;\n    readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n    constructor(readonly opacity: number) {}\n}\n\nexport const isTransformEffect = (effect: IElementEffect): effect is TransformEffect =>\n    effect.type === EffectType.TRANSFORM;\nexport const isClipEffect = (effect: IElementEffect): effect is ClipEffect => effect.type === EffectType.CLIP;\nexport const isOpacityEffect = (effect: IElementEffect): effect is OpacityEffect => effect.type === EffectType.OPACITY;\n", "import {BezierCurve} from './bezier-curve';\nimport {Vector} from './vector';\nexport const enum PathType {\n    VECTOR = 0,\n    BEZIER_CURVE = 1\n}\n\nexport interface IPath {\n    type: PathType;\n    add(deltaX: number, deltaY: number): IPath;\n}\n\nexport const equalPath = (a: Path[], b: Path[]): boolean => {\n    if (a.length === b.length) {\n        return a.some((v, i) => v === b[i]);\n    }\n\n    return false;\n};\n\nexport const transformPath = (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number): Path[] => {\n    return path.map((point, index) => {\n        switch (index) {\n            case 0:\n                return point.add(deltaX, deltaY);\n            case 1:\n                return point.add(deltaX + deltaW, deltaY);\n            case 2:\n                return point.add(deltaX + deltaW, deltaY + deltaH);\n            case 3:\n                return point.add(deltaX, deltaY + deltaH);\n        }\n        return point;\n    });\n};\n\nexport type Path = Vector | BezierCurve;\n", "import {ElementContainer, FLAGS} from '../dom/element-container';\nimport {contains} from '../core/bitwise';\nimport {BoundCurves, calculateBorderBoxPath, calculatePaddingBoxPath} from './bound-curves';\nimport {ClipEffect, EffectTarget, IElementEffect, isClipEffect, OpacityEffect, TransformEffect} from './effects';\nimport {OVERFLOW} from '../css/property-descriptors/overflow';\nimport {equalPath} from './path';\nimport {DISPLAY} from '../css/property-descriptors/display';\nimport {OLElementContainer} from '../dom/elements/ol-element-container';\nimport {LIElementContainer} from '../dom/elements/li-element-container';\nimport {createCounterText} from '../css/types/functions/counter';\nimport {POSITION} from '../css/property-descriptors/position';\n\nexport class StackingContext {\n    element: ElementPaint;\n    negativeZIndex: StackingContext[];\n    zeroOrAutoZIndexOrTransformedOrOpacity: StackingContext[];\n    positiveZIndex: StackingContext[];\n    nonPositionedFloats: StackingContext[];\n    nonPositionedInlineLevel: StackingContext[];\n    inlineLevel: ElementPaint[];\n    nonInlineLevel: ElementPaint[];\n\n    constructor(container: ElementPaint) {\n        this.element = container;\n        this.inlineLevel = [];\n        this.nonInlineLevel = [];\n        this.negativeZIndex = [];\n        this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n        this.positiveZIndex = [];\n        this.nonPositionedFloats = [];\n        this.nonPositionedInlineLevel = [];\n    }\n}\n\nexport class ElementPaint {\n    readonly effects: IElementEffect[] = [];\n    readonly curves: BoundCurves;\n    listValue?: string;\n\n    constructor(readonly container: ElementContainer, readonly parent: ElementPaint | null) {\n        this.curves = new BoundCurves(this.container);\n        if (this.container.styles.opacity < 1) {\n            this.effects.push(new OpacityEffect(this.container.styles.opacity));\n        }\n\n        if (this.container.styles.transform !== null) {\n            const offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n            const offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n            const matrix = this.container.styles.transform;\n            this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n        }\n\n        if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n            const borderBox = calculateBorderBoxPath(this.curves);\n            const paddingBox = calculatePaddingBoxPath(this.curves);\n\n            if (equalPath(borderBox, paddingBox)) {\n                this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT));\n            } else {\n                this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS));\n                this.effects.push(new ClipEffect(paddingBox, EffectTarget.CONTENT));\n            }\n        }\n    }\n\n    getEffects(target: EffectTarget): IElementEffect[] {\n        let inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(this.container.styles.position) === -1;\n        let parent = this.parent;\n        const effects = this.effects.slice(0);\n        while (parent) {\n            const croplessEffects = parent.effects.filter((effect) => !isClipEffect(effect));\n            if (inFlow || parent.container.styles.position !== POSITION.STATIC || !parent.parent) {\n                effects.unshift(...croplessEffects);\n                inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(parent.container.styles.position) === -1;\n                if (parent.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n                    const borderBox = calculateBorderBoxPath(parent.curves);\n                    const paddingBox = calculatePaddingBoxPath(parent.curves);\n                    if (!equalPath(borderBox, paddingBox)) {\n                        effects.unshift(\n                            new ClipEffect(paddingBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT)\n                        );\n                    }\n                }\n            } else {\n                effects.unshift(...croplessEffects);\n            }\n\n            parent = parent.parent;\n        }\n\n        return effects.filter((effect) => contains(effect.target, target));\n    }\n}\n\nconst parseStackTree = (\n    parent: ElementPaint,\n    stackingContext: StackingContext,\n    realStackingContext: StackingContext,\n    listItems: ElementPaint[]\n) => {\n    parent.container.elements.forEach((child) => {\n        const treatAsRealStackingContext = contains(child.flags, FLAGS.CREATES_REAL_STACKING_CONTEXT);\n        const createsStackingContext = contains(child.flags, FLAGS.CREATES_STACKING_CONTEXT);\n        const paintContainer = new ElementPaint(child, parent);\n        if (contains(child.styles.display, DISPLAY.LIST_ITEM)) {\n            listItems.push(paintContainer);\n        }\n\n        const listOwnerItems = contains(child.flags, FLAGS.IS_LIST_OWNER) ? [] : listItems;\n\n        if (treatAsRealStackingContext || createsStackingContext) {\n            const parentStack =\n                treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n\n            const stack = new StackingContext(paintContainer);\n\n            if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n                const order = child.styles.zIndex.order;\n                if (order < 0) {\n                    let index = 0;\n\n                    parentStack.negativeZIndex.some((current, i) => {\n                        if (order > current.element.container.styles.zIndex.order) {\n                            index = i;\n                            return false;\n                        } else if (index > 0) {\n                            return true;\n                        }\n\n                        return false;\n                    });\n                    parentStack.negativeZIndex.splice(index, 0, stack);\n                } else if (order > 0) {\n                    let index = 0;\n                    parentStack.positiveZIndex.some((current, i) => {\n                        if (order >= current.element.container.styles.zIndex.order) {\n                            index = i + 1;\n                            return false;\n                        } else if (index > 0) {\n                            return true;\n                        }\n\n                        return false;\n                    });\n                    parentStack.positiveZIndex.splice(index, 0, stack);\n                } else {\n                    parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n                }\n            } else {\n                if (child.styles.isFloating()) {\n                    parentStack.nonPositionedFloats.push(stack);\n                } else {\n                    parentStack.nonPositionedInlineLevel.push(stack);\n                }\n            }\n\n            parseStackTree(\n                paintContainer,\n                stack,\n                treatAsRealStackingContext ? stack : realStackingContext,\n                listOwnerItems\n            );\n        } else {\n            if (child.styles.isInlineLevel()) {\n                stackingContext.inlineLevel.push(paintContainer);\n            } else {\n                stackingContext.nonInlineLevel.push(paintContainer);\n            }\n\n            parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n        }\n\n        if (contains(child.flags, FLAGS.IS_LIST_OWNER)) {\n            processListItems(child, listOwnerItems);\n        }\n    });\n};\n\nconst processListItems = (owner: ElementContainer, elements: ElementPaint[]) => {\n    let numbering = owner instanceof OLElementContainer ? owner.start : 1;\n    const reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n    for (let i = 0; i < elements.length; i++) {\n        const item = elements[i];\n        if (\n            item.container instanceof LIElementContainer &&\n            typeof item.container.value === 'number' &&\n            item.container.value !== 0\n        ) {\n            numbering = item.container.value;\n        }\n\n        item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n\n        numbering += reversed ? -1 : 1;\n    }\n};\n\nexport const parseStackingContexts = (container: ElementContainer): StackingContext => {\n    const paintContainer = new ElementPaint(container, null);\n    const root = new StackingContext(paintContainer);\n    const listItems: ElementPaint[] = [];\n    parseStackTree(paintContainer, root, root, listItems);\n    processListItems(paintContainer.container, listItems);\n    return root;\n};\n", "import {Path} from './path';\nimport {BoundCurves} from './bound-curves';\nimport {isBezierCurve} from './bezier-curve';\n\nexport const parsePathForBorder = (curves: BoundCurves, borderSide: number): Path[] => {\n    switch (borderSide) {\n        case 0:\n            return createPathFromCurves(\n                curves.topLeftBorderBox,\n                curves.topLeftPaddingBox,\n                curves.topRightBorderBox,\n                curves.topRightPaddingBox\n            );\n        case 1:\n            return createPathFromCurves(\n                curves.topRightBorderBox,\n                curves.topRightPaddingBox,\n                curves.bottomRightBorderBox,\n                curves.bottomRightPaddingBox\n            );\n        case 2:\n            return createPathFromCurves(\n                curves.bottomRightBorderBox,\n                curves.bottomRightPaddingBox,\n                curves.bottomLeftBorderBox,\n                curves.bottomLeftPaddingBox\n            );\n        case 3:\n        default:\n            return createPathFromCurves(\n                curves.bottomLeftBorderBox,\n                curves.bottomLeftPaddingBox,\n                curves.topLeftBorderBox,\n                curves.topLeftPaddingBox\n            );\n    }\n};\n\nexport const parsePathForBorderDoubleOuter = (curves: BoundCurves, borderSide: number): Path[] => {\n    switch (borderSide) {\n        case 0:\n            return createPathFromCurves(\n                curves.topLeftBorderBox,\n                curves.topLeftBorderDoubleOuterBox,\n                curves.topRightBorderBox,\n                curves.topRightBorderDoubleOuterBox\n            );\n        case 1:\n            return createPathFromCurves(\n                curves.topRightBorderBox,\n                curves.topRightBorderDoubleOuterBox,\n                curves.bottomRightBorderBox,\n                curves.bottomRightBorderDoubleOuterBox\n            );\n        case 2:\n            return createPathFromCurves(\n                curves.bottomRightBorderBox,\n                curves.bottomRightBorderDoubleOuterBox,\n                curves.bottomLeftBorderBox,\n                curves.bottomLeftBorderDoubleOuterBox\n            );\n        case 3:\n        default:\n            return createPathFromCurves(\n                curves.bottomLeftBorderBox,\n                curves.bottomLeftBorderDoubleOuterBox,\n                curves.topLeftBorderBox,\n                curves.topLeftBorderDoubleOuterBox\n            );\n    }\n};\n\nexport const parsePathForBorderDoubleInner = (curves: BoundCurves, borderSide: number): Path[] => {\n    switch (borderSide) {\n        case 0:\n            return createPathFromCurves(\n                curves.topLeftBorderDoubleInnerBox,\n                curves.topLeftPaddingBox,\n                curves.topRightBorderDoubleInnerBox,\n                curves.topRightPaddingBox\n            );\n        case 1:\n            return createPathFromCurves(\n                curves.topRightBorderDoubleInnerBox,\n                curves.topRightPaddingBox,\n                curves.bottomRightBorderDoubleInnerBox,\n                curves.bottomRightPaddingBox\n            );\n        case 2:\n            return createPathFromCurves(\n                curves.bottomRightBorderDoubleInnerBox,\n                curves.bottomRightPaddingBox,\n                curves.bottomLeftBorderDoubleInnerBox,\n                curves.bottomLeftPaddingBox\n            );\n        case 3:\n        default:\n            return createPathFromCurves(\n                curves.bottomLeftBorderDoubleInnerBox,\n                curves.bottomLeftPaddingBox,\n                curves.topLeftBorderDoubleInnerBox,\n                curves.topLeftPaddingBox\n            );\n    }\n};\n\nexport const parsePathForBorderStroke = (curves: BoundCurves, borderSide: number): Path[] => {\n    switch (borderSide) {\n        case 0:\n            return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n        case 1:\n            return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n        case 2:\n            return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n        case 3:\n        default:\n            return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n    }\n};\n\nconst createStrokePathFromCurves = (outer1: Path, outer2: Path): Path[] => {\n    const path = [];\n    if (isBezierCurve(outer1)) {\n        path.push(outer1.subdivide(0.5, false));\n    } else {\n        path.push(outer1);\n    }\n\n    if (isBezierCurve(outer2)) {\n        path.push(outer2.subdivide(0.5, true));\n    } else {\n        path.push(outer2);\n    }\n\n    return path;\n};\n\nconst createPathFromCurves = (outer1: Path, inner1: Path, outer2: Path, inner2: Path): Path[] => {\n    const path = [];\n    if (isBezierCurve(outer1)) {\n        path.push(outer1.subdivide(0.5, false));\n    } else {\n        path.push(outer1);\n    }\n\n    if (isBezierCurve(outer2)) {\n        path.push(outer2.subdivide(0.5, true));\n    } else {\n        path.push(outer2);\n    }\n\n    if (isBezierCurve(inner2)) {\n        path.push(inner2.subdivide(0.5, true).reverse());\n    } else {\n        path.push(inner2);\n    }\n\n    if (isBezierCurve(inner1)) {\n        path.push(inner1.subdivide(0.5, false).reverse());\n    } else {\n        path.push(inner1);\n    }\n\n    return path;\n};\n", "import {getAbsoluteValue} from '../css/types/length-percentage';\nimport {Bounds} from '../css/layout/bounds';\nimport {ElementContainer} from '../dom/element-container';\n\nexport const paddingBox = (element: ElementContainer): Bounds => {\n    const bounds = element.bounds;\n    const styles = element.styles;\n    return bounds.add(\n        styles.borderLeftWidth,\n        styles.borderTopWidth,\n        -(styles.borderRightWidth + styles.borderLeftWidth),\n        -(styles.borderTopWidth + styles.borderBottomWidth)\n    );\n};\n\nexport const contentBox = (element: ElementContainer): Bounds => {\n    const styles = element.styles;\n    const bounds = element.bounds;\n\n    const paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n    const paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n    const paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n    const paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n\n    return bounds.add(\n        paddingLeft + styles.borderLeftWidth,\n        paddingTop + styles.borderTopWidth,\n        -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight),\n        -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom)\n    );\n};\n", "import {Bounds} from '../css/layout/bounds';\nimport {BACKGROUND_ORIGIN} from '../css/property-descriptors/background-origin';\nimport {ElementContainer} from '../dom/element-container';\nimport {BACKGROUND_SIZE, BackgroundSizeInfo} from '../css/property-descriptors/background-size';\nimport {Vector} from './vector';\nimport {BACKGROUND_REPEAT} from '../css/property-descriptors/background-repeat';\nimport {getAbsoluteValue, getAbsoluteValueForTuple, isLengthPercentage} from '../css/types/length-percentage';\nimport {CSSValue, isIdentToken} from '../css/syntax/parser';\nimport {contentBox, paddingBox} from './box-sizing';\nimport {Path} from './path';\nimport {BACKGROUND_CLIP} from '../css/property-descriptors/background-clip';\n\nexport const calculateBackgroundPositioningArea = (\n    backgroundOrigin: BACKGROUND_ORIGIN,\n    element: ElementContainer\n): Bounds => {\n    if (backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX) {\n        return element.bounds;\n    }\n\n    if (backgroundOrigin === BACKGROUND_ORIGIN.CONTENT_BOX) {\n        return contentBox(element);\n    }\n\n    return paddingBox(element);\n};\n\nexport const calculateBackgroundPaintingArea = (backgroundClip: BACKGROUND_CLIP, element: ElementContainer): Bounds => {\n    if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {\n        return element.bounds;\n    }\n\n    if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {\n        return contentBox(element);\n    }\n\n    return paddingBox(element);\n};\n\nexport const calculateBackgroundRendering = (\n    container: ElementContainer,\n    index: number,\n    intrinsicSize: [number | null, number | null, number | null]\n): [Path[], number, number, number, number] => {\n    const backgroundPositioningArea = calculateBackgroundPositioningArea(\n        getBackgroundValueForIndex(container.styles.backgroundOrigin, index),\n        container\n    );\n\n    const backgroundPaintingArea = calculateBackgroundPaintingArea(\n        getBackgroundValueForIndex(container.styles.backgroundClip, index),\n        container\n    );\n\n    const backgroundImageSize = calculateBackgroundSize(\n        getBackgroundValueForIndex(container.styles.backgroundSize, index),\n        intrinsicSize,\n        backgroundPositioningArea\n    );\n\n    const [sizeWidth, sizeHeight] = backgroundImageSize;\n\n    const position = getAbsoluteValueForTuple(\n        getBackgroundValueForIndex(container.styles.backgroundPosition, index),\n        backgroundPositioningArea.width - sizeWidth,\n        backgroundPositioningArea.height - sizeHeight\n    );\n\n    const path = calculateBackgroundRepeatPath(\n        getBackgroundValueForIndex(container.styles.backgroundRepeat, index),\n        position,\n        backgroundImageSize,\n        backgroundPositioningArea,\n        backgroundPaintingArea\n    );\n\n    const offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n    const offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n\n    return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n};\n\nexport const isAuto = (token: CSSValue): boolean => isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;\n\nconst hasIntrinsicValue = (value: number | null): value is number => typeof value === 'number';\n\nexport const calculateBackgroundSize = (\n    size: BackgroundSizeInfo[],\n    [intrinsicWidth, intrinsicHeight, intrinsicProportion]: [number | null, number | null, number | null],\n    bounds: Bounds\n): [number, number] => {\n    const [first, second] = size;\n\n    if (!first) {\n        return [0, 0];\n    }\n\n    if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n        return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n    }\n\n    const hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n\n    if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n        if (hasIntrinsicValue(intrinsicProportion)) {\n            const targetRatio = bounds.width / bounds.height;\n\n            return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n                ? [bounds.width, bounds.width / intrinsicProportion]\n                : [bounds.height * intrinsicProportion, bounds.height];\n        }\n\n        return [bounds.width, bounds.height];\n    }\n\n    const hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n    const hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n    const hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n\n    // If the background-size is auto or auto auto:\n    if (isAuto(first) && (!second || isAuto(second))) {\n        // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n        if (hasIntrinsicWidth && hasIntrinsicHeight) {\n            return [intrinsicWidth as number, intrinsicHeight as number];\n        }\n\n        // If the image has no intrinsic dimensions and has no intrinsic proportions,\n        // it's rendered at the size of the background positioning area.\n\n        if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n            return [bounds.width, bounds.height];\n        }\n\n        // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n\n        // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n        // The other dimension is computed using the specified dimension and the intrinsic proportions.\n        if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n            const width = hasIntrinsicWidth\n                ? (intrinsicWidth as number)\n                : (intrinsicHeight as number) * (intrinsicProportion as number);\n            const height = hasIntrinsicHeight\n                ? (intrinsicHeight as number)\n                : (intrinsicWidth as number) / (intrinsicProportion as number);\n            return [width, height];\n        }\n\n        // If the image has only one intrinsic dimension but has no intrinsic proportions,\n        // it's rendered using the specified dimension and the other dimension of the background positioning area.\n        const width = hasIntrinsicWidth ? (intrinsicWidth as number) : bounds.width;\n        const height = hasIntrinsicHeight ? (intrinsicHeight as number) : bounds.height;\n        return [width, height];\n    }\n\n    // If the image has intrinsic proportions, it's stretched to the specified dimension.\n    // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n    if (hasIntrinsicProportion) {\n        let width = 0;\n        let height = 0;\n        if (isLengthPercentage(first)) {\n            width = getAbsoluteValue(first, bounds.width);\n        } else if (isLengthPercentage(second)) {\n            height = getAbsoluteValue(second, bounds.height);\n        }\n\n        if (isAuto(first)) {\n            width = height * (intrinsicProportion as number);\n        } else if (!second || isAuto(second)) {\n            height = width / (intrinsicProportion as number);\n        }\n\n        return [width, height];\n    }\n\n    // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n    // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n    // if there is one. If there is no such intrinsic dimension,\n    // it becomes the corresponding dimension of the background positioning area.\n\n    let width = null;\n    let height = null;\n\n    if (isLengthPercentage(first)) {\n        width = getAbsoluteValue(first, bounds.width);\n    } else if (second && isLengthPercentage(second)) {\n        height = getAbsoluteValue(second, bounds.height);\n    }\n\n    if (width !== null && (!second || isAuto(second))) {\n        height =\n            hasIntrinsicWidth && hasIntrinsicHeight\n                ? (width / (intrinsicWidth as number)) * (intrinsicHeight as number)\n                : bounds.height;\n    }\n\n    if (height !== null && isAuto(first)) {\n        width =\n            hasIntrinsicWidth && hasIntrinsicHeight\n                ? (height / (intrinsicHeight as number)) * (intrinsicWidth as number)\n                : bounds.width;\n    }\n\n    if (width !== null && height !== null) {\n        return [width, height];\n    }\n\n    throw new Error(`Unable to calculate background-size for element`);\n};\n\nexport const getBackgroundValueForIndex = <T>(values: T[], index: number): T => {\n    const value = values[index];\n    if (typeof value === 'undefined') {\n        return values[0];\n    }\n\n    return value;\n};\n\nexport const calculateBackgroundRepeatPath = (\n    repeat: BACKGROUND_REPEAT,\n    [x, y]: [number, number],\n    [width, height]: [number, number],\n    backgroundPositioningArea: Bounds,\n    backgroundPaintingArea: Bounds\n): [Vector, Vector, Vector, Vector] => {\n    switch (repeat) {\n        case BACKGROUND_REPEAT.REPEAT_X:\n            return [\n                new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n                    Math.round(backgroundPositioningArea.top + y)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n                    Math.round(height + backgroundPositioningArea.top + y)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left),\n                    Math.round(height + backgroundPositioningArea.top + y)\n                )\n            ];\n        case BACKGROUND_REPEAT.REPEAT_Y:\n            return [\n                new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x + width),\n                    Math.round(backgroundPositioningArea.top)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x + width),\n                    Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x),\n                    Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n                )\n            ];\n        case BACKGROUND_REPEAT.NO_REPEAT:\n            return [\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x),\n                    Math.round(backgroundPositioningArea.top + y)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x + width),\n                    Math.round(backgroundPositioningArea.top + y)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x + width),\n                    Math.round(backgroundPositioningArea.top + y + height)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x),\n                    Math.round(backgroundPositioningArea.top + y + height)\n                )\n            ];\n        default:\n            return [\n                new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n                new Vector(\n                    Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n                    Math.round(backgroundPaintingArea.top)\n                ),\n                new Vector(\n                    Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n                    Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n                ),\n                new Vector(\n                    Math.round(backgroundPaintingArea.left),\n                    Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n                )\n            ];\n    }\n};\n", "export const SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n", "import {SMALL_IMAGE} from '../core/util';\nexport interface FontMetric {\n    baseline: number;\n    middle: number;\n}\n\nconst SAMPLE_TEXT = 'Hidden Text';\n\nexport class FontMetrics {\n    private readonly _data: {[key: string]: FontMetric};\n    private readonly _document: Document;\n\n    constructor(document: Document) {\n        this._data = {};\n        this._document = document;\n    }\n\n    private parseMetrics(fontFamily: string, fontSize: string): FontMetric {\n        const container = this._document.createElement('div');\n        const img = this._document.createElement('img');\n        const span = this._document.createElement('span');\n\n        const body = this._document.body as HTMLBodyElement;\n\n        container.style.visibility = 'hidden';\n        container.style.fontFamily = fontFamily;\n        container.style.fontSize = fontSize;\n        container.style.margin = '0';\n        container.style.padding = '0';\n        container.style.whiteSpace = 'nowrap';\n\n        body.appendChild(container);\n\n        img.src = SMALL_IMAGE;\n        img.width = 1;\n        img.height = 1;\n\n        img.style.margin = '0';\n        img.style.padding = '0';\n        img.style.verticalAlign = 'baseline';\n\n        span.style.fontFamily = fontFamily;\n        span.style.fontSize = fontSize;\n        span.style.margin = '0';\n        span.style.padding = '0';\n\n        span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n        container.appendChild(span);\n        container.appendChild(img);\n        const baseline = img.offsetTop - span.offsetTop + 2;\n\n        container.removeChild(span);\n        container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n\n        container.style.lineHeight = 'normal';\n        img.style.verticalAlign = 'super';\n\n        const middle = img.offsetTop - container.offsetTop + 2;\n\n        body.removeChild(container);\n\n        return {baseline, middle};\n    }\n    getMetrics(fontFamily: string, fontSize: string): FontMetric {\n        const key = `${fontFamily} ${fontSize}`;\n        if (typeof this._data[key] === 'undefined') {\n            this._data[key] = this.parseMetrics(fontFamily, fontSize);\n        }\n\n        return this._data[key];\n    }\n}\n", "import {Context} from '../core/context';\nimport {RenderConfigurations} from './canvas/canvas-renderer';\n\nexport class Renderer {\n    constructor(protected readonly context: Context, protected readonly options: RenderConfigurations) {}\n}\n", "import {ElementPaint, parseStackingContexts, StackingContext} from '../stacking-context';\nimport {asString, Color, isTransparent} from '../../css/types/color';\nimport {ElementContainer, FLAGS} from '../../dom/element-container';\nimport {BORDER_STYLE} from '../../css/property-descriptors/border-style';\nimport {CSSParsedDeclaration} from '../../css';\nimport {TextContainer} from '../../dom/text-container';\nimport {Path, transformPath} from '../path';\nimport {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip';\nimport {BoundCurves, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath} from '../bound-curves';\nimport {BezierCurve, isBezierCurve} from '../bezier-curve';\nimport {Vector} from '../vector';\nimport {CSSImageType, CSSURLImage, isLinearGradient, isRadialGradient} from '../../css/types/image';\nimport {\n    parsePathForBorder,\n    parsePathForBorderDoubleInner,\n    parsePathForBorderDoubleOuter,\n    parsePathForBorderStroke\n} from '../border';\nimport {calculateBackgroundRendering, getBackgroundValueForIndex} from '../background';\nimport {isDimensionToken} from '../../css/syntax/parser';\nimport {segmentGraphemes, TextBounds} from '../../css/layout/text';\nimport {ImageElementContainer} from '../../dom/replaced-elements/image-element-container';\nimport {contentBox} from '../box-sizing';\nimport {CanvasElementContainer} from '../../dom/replaced-elements/canvas-element-container';\nimport {SVGElementContainer} from '../../dom/replaced-elements/svg-element-container';\nimport {ReplacedElementContainer} from '../../dom/replaced-elements';\nimport {EffectTarget, IElementEffect, isClipEffect, isOpacityEffect, isTransformEffect} from '../effects';\nimport {contains} from '../../core/bitwise';\nimport {calculateGradientDirection, calculateRadius, processColorStops} from '../../css/types/functions/gradient';\nimport {FIFTY_PERCENT, getAbsoluteValue} from '../../css/types/length-percentage';\nimport {TEXT_DECORATION_LINE} from '../../css/property-descriptors/text-decoration-line';\nimport {FontMetrics} from '../font-metrics';\nimport {DISPLAY} from '../../css/property-descriptors/display';\nimport {Bounds} from '../../css/layout/bounds';\nimport {LIST_STYLE_TYPE} from '../../css/property-descriptors/list-style-type';\nimport {computeLineHeight} from '../../css/property-descriptors/line-height';\nimport {CHECKBOX, INPUT_COLOR, InputElementContainer, RADIO} from '../../dom/replaced-elements/input-element-container';\nimport {TEXT_ALIGN} from '../../css/property-descriptors/text-align';\nimport {TextareaElementContainer} from '../../dom/elements/textarea-element-container';\nimport {SelectElementContainer} from '../../dom/elements/select-element-container';\nimport {IFrameElementContainer} from '../../dom/replaced-elements/iframe-element-container';\nimport {TextShadow} from '../../css/property-descriptors/text-shadow';\nimport {PAINT_ORDER_LAYER} from '../../css/property-descriptors/paint-order';\nimport {Renderer} from '../renderer';\nimport {Context} from '../../core/context';\nimport {DIRECTION} from '../../css/property-descriptors/direction';\n\nexport type RenderConfigurations = RenderOptions & {\n    backgroundColor: Color | null;\n};\n\nexport interface RenderOptions {\n    scale: number;\n    canvas?: HTMLCanvasElement;\n    x: number;\n    y: number;\n    width: number;\n    height: number;\n}\n\nconst MASK_OFFSET = 10000;\n\nexport class CanvasRenderer extends Renderer {\n    canvas: HTMLCanvasElement;\n    ctx: CanvasRenderingContext2D;\n    private readonly _activeEffects: IElementEffect[] = [];\n    private readonly fontMetrics: FontMetrics;\n\n    constructor(context: Context, options: RenderConfigurations) {\n        super(context, options);\n        this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n        this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n        if (!options.canvas) {\n            this.canvas.width = Math.floor(options.width * options.scale);\n            this.canvas.height = Math.floor(options.height * options.scale);\n            this.canvas.style.width = `${options.width}px`;\n            this.canvas.style.height = `${options.height}px`;\n        }\n        this.fontMetrics = new FontMetrics(document);\n        this.ctx.scale(this.options.scale, this.options.scale);\n        this.ctx.translate(-options.x, -options.y);\n        this.ctx.textBaseline = 'bottom';\n        this._activeEffects = [];\n        this.context.logger.debug(\n            `Canvas renderer initialized (${options.width}x${options.height}) with scale ${options.scale}`\n        );\n    }\n\n    applyEffects(effects: IElementEffect[]): void {\n        while (this._activeEffects.length) {\n            this.popEffect();\n        }\n\n        effects.forEach((effect) => this.applyEffect(effect));\n    }\n\n    applyEffect(effect: IElementEffect): void {\n        this.ctx.save();\n        if (isOpacityEffect(effect)) {\n            this.ctx.globalAlpha = effect.opacity;\n        }\n\n        if (isTransformEffect(effect)) {\n            this.ctx.translate(effect.offsetX, effect.offsetY);\n            this.ctx.transform(\n                effect.matrix[0],\n                effect.matrix[1],\n                effect.matrix[2],\n                effect.matrix[3],\n                effect.matrix[4],\n                effect.matrix[5]\n            );\n            this.ctx.translate(-effect.offsetX, -effect.offsetY);\n        }\n\n        if (isClipEffect(effect)) {\n            this.path(effect.path);\n            this.ctx.clip();\n        }\n\n        this._activeEffects.push(effect);\n    }\n\n    popEffect(): void {\n        this._activeEffects.pop();\n        this.ctx.restore();\n    }\n\n    async renderStack(stack: StackingContext): Promise<void> {\n        const styles = stack.element.container.styles;\n        if (styles.isVisible()) {\n            await this.renderStackContent(stack);\n        }\n    }\n\n    async renderNode(paint: ElementPaint): Promise<void> {\n        if (contains(paint.container.flags, FLAGS.DEBUG_RENDER)) {\n            debugger;\n        }\n\n        if (paint.container.styles.isVisible()) {\n            await this.renderNodeBackgroundAndBorders(paint);\n            await this.renderNodeContent(paint);\n        }\n    }\n\n    renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void {\n        if (letterSpacing === 0) {\n            this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n        } else {\n            const letters = segmentGraphemes(text.text);\n            letters.reduce((left, letter) => {\n                this.ctx.fillText(letter, left, text.bounds.top + baseline);\n\n                return left + this.ctx.measureText(letter).width;\n            }, text.bounds.left);\n        }\n    }\n\n    private createFontStyle(styles: CSSParsedDeclaration): string[] {\n        const fontVariant = styles.fontVariant\n            .filter((variant) => variant === 'normal' || variant === 'small-caps')\n            .join('');\n        const fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n        const fontSize = isDimensionToken(styles.fontSize)\n            ? `${styles.fontSize.number}${styles.fontSize.unit}`\n            : `${styles.fontSize.number}px`;\n\n        return [\n            [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n            fontFamily,\n            fontSize\n        ];\n    }\n\n    async renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise<void> {\n        const [font, fontFamily, fontSize] = this.createFontStyle(styles);\n\n        this.ctx.font = font;\n\n        this.ctx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr';\n        this.ctx.textAlign = 'left';\n        this.ctx.textBaseline = 'alphabetic';\n        const {baseline, middle} = this.fontMetrics.getMetrics(fontFamily, fontSize);\n        const paintOrder = styles.paintOrder;\n\n        text.textBounds.forEach((text) => {\n            paintOrder.forEach((paintOrderLayer) => {\n                switch (paintOrderLayer) {\n                    case PAINT_ORDER_LAYER.FILL:\n                        this.ctx.fillStyle = asString(styles.color);\n                        this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n                        const textShadows: TextShadow = styles.textShadow;\n\n                        if (textShadows.length && text.text.trim().length) {\n                            textShadows\n                                .slice(0)\n                                .reverse()\n                                .forEach((textShadow) => {\n                                    this.ctx.shadowColor = asString(textShadow.color);\n                                    this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale;\n                                    this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale;\n                                    this.ctx.shadowBlur = textShadow.blur.number;\n\n                                    this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n                                });\n\n                            this.ctx.shadowColor = '';\n                            this.ctx.shadowOffsetX = 0;\n                            this.ctx.shadowOffsetY = 0;\n                            this.ctx.shadowBlur = 0;\n                        }\n\n                        if (styles.textDecorationLine.length) {\n                            this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n                            styles.textDecorationLine.forEach((textDecorationLine) => {\n                                switch (textDecorationLine) {\n                                    case TEXT_DECORATION_LINE.UNDERLINE:\n                                        // Draws a line at the baseline of the font\n                                        // TODO As some browsers display the line as more than 1px if the font-size is big,\n                                        // need to take that into account both in position and size\n                                        this.ctx.fillRect(\n                                            text.bounds.left,\n                                            Math.round(text.bounds.top + baseline),\n                                            text.bounds.width,\n                                            1\n                                        );\n\n                                        break;\n                                    case TEXT_DECORATION_LINE.OVERLINE:\n                                        this.ctx.fillRect(\n                                            text.bounds.left,\n                                            Math.round(text.bounds.top),\n                                            text.bounds.width,\n                                            1\n                                        );\n                                        break;\n                                    case TEXT_DECORATION_LINE.LINE_THROUGH:\n                                        // TODO try and find exact position for line-through\n                                        this.ctx.fillRect(\n                                            text.bounds.left,\n                                            Math.ceil(text.bounds.top + middle),\n                                            text.bounds.width,\n                                            1\n                                        );\n                                        break;\n                                }\n                            });\n                        }\n                        break;\n                    case PAINT_ORDER_LAYER.STROKE:\n                        if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n                            this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n                            this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n                            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                            this.ctx.lineJoin = !!(window as any).chrome ? 'miter' : 'round';\n                            this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n                        }\n                        this.ctx.strokeStyle = '';\n                        this.ctx.lineWidth = 0;\n                        this.ctx.lineJoin = 'miter';\n                        break;\n                }\n            });\n        });\n    }\n\n    renderReplacedElement(\n        container: ReplacedElementContainer,\n        curves: BoundCurves,\n        image: HTMLImageElement | HTMLCanvasElement\n    ): void {\n        if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\n            const box = contentBox(container);\n            const path = calculatePaddingBoxPath(curves);\n            this.path(path);\n            this.ctx.save();\n            this.ctx.clip();\n            this.ctx.drawImage(\n                image,\n                0,\n                0,\n                container.intrinsicWidth,\n                container.intrinsicHeight,\n                box.left,\n                box.top,\n                box.width,\n                box.height\n            );\n            this.ctx.restore();\n        }\n    }\n\n    async renderNodeContent(paint: ElementPaint): Promise<void> {\n        this.applyEffects(paint.getEffects(EffectTarget.CONTENT));\n        const container = paint.container;\n        const curves = paint.curves;\n        const styles = container.styles;\n        for (const child of container.textNodes) {\n            await this.renderTextNode(child, styles);\n        }\n\n        if (container instanceof ImageElementContainer) {\n            try {\n                const image = await this.context.cache.match(container.src);\n                this.renderReplacedElement(container, curves, image);\n            } catch (e) {\n                this.context.logger.error(`Error loading image ${container.src}`);\n            }\n        }\n\n        if (container instanceof CanvasElementContainer) {\n            this.renderReplacedElement(container, curves, container.canvas);\n        }\n\n        if (container instanceof SVGElementContainer) {\n            try {\n                const image = await this.context.cache.match(container.svg);\n                this.renderReplacedElement(container, curves, image);\n            } catch (e) {\n                this.context.logger.error(`Error loading svg ${container.svg.substring(0, 255)}`);\n            }\n        }\n\n        if (container instanceof IFrameElementContainer && container.tree) {\n            const iframeRenderer = new CanvasRenderer(this.context, {\n                scale: this.options.scale,\n                backgroundColor: container.backgroundColor,\n                x: 0,\n                y: 0,\n                width: container.width,\n                height: container.height\n            });\n\n            const canvas = await iframeRenderer.render(container.tree);\n            if (container.width && container.height) {\n                this.ctx.drawImage(\n                    canvas,\n                    0,\n                    0,\n                    container.width,\n                    container.height,\n                    container.bounds.left,\n                    container.bounds.top,\n                    container.bounds.width,\n                    container.bounds.height\n                );\n            }\n        }\n\n        if (container instanceof InputElementContainer) {\n            const size = Math.min(container.bounds.width, container.bounds.height);\n\n            if (container.type === CHECKBOX) {\n                if (container.checked) {\n                    this.ctx.save();\n                    this.path([\n                        new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n                        new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n                        new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n                        new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n                        new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n                        new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n                        new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n                    ]);\n\n                    this.ctx.fillStyle = asString(INPUT_COLOR);\n                    this.ctx.fill();\n                    this.ctx.restore();\n                }\n            } else if (container.type === RADIO) {\n                if (container.checked) {\n                    this.ctx.save();\n                    this.ctx.beginPath();\n                    this.ctx.arc(\n                        container.bounds.left + size / 2,\n                        container.bounds.top + size / 2,\n                        size / 4,\n                        0,\n                        Math.PI * 2,\n                        true\n                    );\n                    this.ctx.fillStyle = asString(INPUT_COLOR);\n                    this.ctx.fill();\n                    this.ctx.restore();\n                }\n            }\n        }\n\n        if (isTextInputElement(container) && container.value.length) {\n            const [fontFamily, fontSize] = this.createFontStyle(styles);\n            const {baseline} = this.fontMetrics.getMetrics(fontFamily, fontSize);\n\n            this.ctx.font = fontFamily;\n            this.ctx.fillStyle = asString(styles.color);\n\n            this.ctx.textBaseline = 'alphabetic';\n            this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n\n            const bounds = contentBox(container);\n\n            let x = 0;\n\n            switch (container.styles.textAlign) {\n                case TEXT_ALIGN.CENTER:\n                    x += bounds.width / 2;\n                    break;\n                case TEXT_ALIGN.RIGHT:\n                    x += bounds.width;\n                    break;\n            }\n\n            const textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n\n            this.ctx.save();\n            this.path([\n                new Vector(bounds.left, bounds.top),\n                new Vector(bounds.left + bounds.width, bounds.top),\n                new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n                new Vector(bounds.left, bounds.top + bounds.height)\n            ]);\n\n            this.ctx.clip();\n            this.renderTextWithLetterSpacing(\n                new TextBounds(container.value, textBounds),\n                styles.letterSpacing,\n                baseline\n            );\n            this.ctx.restore();\n            this.ctx.textBaseline = 'alphabetic';\n            this.ctx.textAlign = 'left';\n        }\n\n        if (contains(container.styles.display, DISPLAY.LIST_ITEM)) {\n            if (container.styles.listStyleImage !== null) {\n                const img = container.styles.listStyleImage;\n                if (img.type === CSSImageType.URL) {\n                    let image;\n                    const url = (img as CSSURLImage).url;\n                    try {\n                        image = await this.context.cache.match(url);\n                        this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n                    } catch (e) {\n                        this.context.logger.error(`Error loading list-style-image ${url}`);\n                    }\n                }\n            } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {\n                const [fontFamily] = this.createFontStyle(styles);\n\n                this.ctx.font = fontFamily;\n                this.ctx.fillStyle = asString(styles.color);\n\n                this.ctx.textBaseline = 'middle';\n                this.ctx.textAlign = 'right';\n                const bounds = new Bounds(\n                    container.bounds.left,\n                    container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width),\n                    container.bounds.width,\n                    computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1\n                );\n\n                this.renderTextWithLetterSpacing(\n                    new TextBounds(paint.listValue, bounds),\n                    styles.letterSpacing,\n                    computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2\n                );\n                this.ctx.textBaseline = 'bottom';\n                this.ctx.textAlign = 'left';\n            }\n        }\n    }\n\n    async renderStackContent(stack: StackingContext): Promise<void> {\n        if (contains(stack.element.container.flags, FLAGS.DEBUG_RENDER)) {\n            debugger;\n        }\n        // https://www.w3.org/TR/css-position-3/#painting-order\n        // 1. the background and borders of the element forming the stacking context.\n        await this.renderNodeBackgroundAndBorders(stack.element);\n        // 2. the child stacking contexts with negative stack levels (most negative first).\n        for (const child of stack.negativeZIndex) {\n            await this.renderStack(child);\n        }\n        // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n        await this.renderNodeContent(stack.element);\n\n        for (const child of stack.nonInlineLevel) {\n            await this.renderNode(child);\n        }\n        // 4. All non-positioned floating descendants, in tree order. For each one of these,\n        // treat the element as if it created a new stacking context, but any positioned descendants and descendants\n        // which actually create a new stacking context should be considered part of the parent stacking context,\n        // not this new one.\n        for (const child of stack.nonPositionedFloats) {\n            await this.renderStack(child);\n        }\n        // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n        for (const child of stack.nonPositionedInlineLevel) {\n            await this.renderStack(child);\n        }\n        for (const child of stack.inlineLevel) {\n            await this.renderNode(child);\n        }\n        // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:\n        //  All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.\n        //  For those with 'z-index: auto', treat the element as if it created a new stacking context,\n        //  but any positioned descendants and descendants which actually create a new stacking context should be\n        //  considered part of the parent stacking context, not this new one. For those with 'z-index: 0',\n        //  treat the stacking context generated atomically.\n        //\n        //  All opacity descendants with opacity less than 1\n        //\n        //  All transform descendants with transform other than none\n        for (const child of stack.zeroOrAutoZIndexOrTransformedOrOpacity) {\n            await this.renderStack(child);\n        }\n        // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index\n        // order (smallest first) then tree order.\n        for (const child of stack.positiveZIndex) {\n            await this.renderStack(child);\n        }\n    }\n\n    mask(paths: Path[]): void {\n        this.ctx.beginPath();\n        this.ctx.moveTo(0, 0);\n        this.ctx.lineTo(this.canvas.width, 0);\n        this.ctx.lineTo(this.canvas.width, this.canvas.height);\n        this.ctx.lineTo(0, this.canvas.height);\n        this.ctx.lineTo(0, 0);\n        this.formatPath(paths.slice(0).reverse());\n        this.ctx.closePath();\n    }\n\n    path(paths: Path[]): void {\n        this.ctx.beginPath();\n        this.formatPath(paths);\n        this.ctx.closePath();\n    }\n\n    formatPath(paths: Path[]): void {\n        paths.forEach((point, index) => {\n            const start: Vector = isBezierCurve(point) ? point.start : point;\n            if (index === 0) {\n                this.ctx.moveTo(start.x, start.y);\n            } else {\n                this.ctx.lineTo(start.x, start.y);\n            }\n\n            if (isBezierCurve(point)) {\n                this.ctx.bezierCurveTo(\n                    point.startControl.x,\n                    point.startControl.y,\n                    point.endControl.x,\n                    point.endControl.y,\n                    point.end.x,\n                    point.end.y\n                );\n            }\n        });\n    }\n\n    renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void {\n        this.path(path);\n        this.ctx.fillStyle = pattern;\n        this.ctx.translate(offsetX, offsetY);\n        this.ctx.fill();\n        this.ctx.translate(-offsetX, -offsetY);\n    }\n\n    resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement {\n        if (image.width === width && image.height === height) {\n            return image;\n        }\n\n        const ownerDocument = this.canvas.ownerDocument ?? document;\n        const canvas = ownerDocument.createElement('canvas');\n        canvas.width = Math.max(1, width);\n        canvas.height = Math.max(1, height);\n        const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n        ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n        return canvas;\n    }\n\n    async renderBackgroundImage(container: ElementContainer): Promise<void> {\n        let index = container.styles.backgroundImage.length - 1;\n        for (const backgroundImage of container.styles.backgroundImage.slice(0).reverse()) {\n            if (backgroundImage.type === CSSImageType.URL) {\n                let image;\n                const url = (backgroundImage as CSSURLImage).url;\n                try {\n                    image = await this.context.cache.match(url);\n                } catch (e) {\n                    this.context.logger.error(`Error loading background-image ${url}`);\n                }\n\n                if (image) {\n                    const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [\n                        image.width,\n                        image.height,\n                        image.width / image.height\n                    ]);\n                    const pattern = this.ctx.createPattern(\n                        this.resizeImage(image, width, height),\n                        'repeat'\n                    ) as CanvasPattern;\n                    this.renderRepeat(path, pattern, x, y);\n                }\n            } else if (isLinearGradient(backgroundImage)) {\n                const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [null, null, null]);\n                const [lineLength, x0, x1, y0, y1] = calculateGradientDirection(backgroundImage.angle, width, height);\n\n                const canvas = document.createElement('canvas');\n                canvas.width = width;\n                canvas.height = height;\n                const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n                const gradient = ctx.createLinearGradient(x0, y0, x1, y1);\n\n                processColorStops(backgroundImage.stops, lineLength).forEach((colorStop) =>\n                    gradient.addColorStop(colorStop.stop, asString(colorStop.color))\n                );\n\n                ctx.fillStyle = gradient;\n                ctx.fillRect(0, 0, width, height);\n                if (width > 0 && height > 0) {\n                    const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern;\n                    this.renderRepeat(path, pattern, x, y);\n                }\n            } else if (isRadialGradient(backgroundImage)) {\n                const [path, left, top, width, height] = calculateBackgroundRendering(container, index, [\n                    null,\n                    null,\n                    null\n                ]);\n                const position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n                const x = getAbsoluteValue(position[0], width);\n                const y = getAbsoluteValue(position[position.length - 1], height);\n\n                const [rx, ry] = calculateRadius(backgroundImage, x, y, width, height);\n                if (rx > 0 && ry > 0) {\n                    const radialGradient = this.ctx.createRadialGradient(left + x, top + y, 0, left + x, top + y, rx);\n\n                    processColorStops(backgroundImage.stops, rx * 2).forEach((colorStop) =>\n                        radialGradient.addColorStop(colorStop.stop, asString(colorStop.color))\n                    );\n\n                    this.path(path);\n                    this.ctx.fillStyle = radialGradient;\n                    if (rx !== ry) {\n                        // transforms for elliptical radial gradient\n                        const midX = container.bounds.left + 0.5 * container.bounds.width;\n                        const midY = container.bounds.top + 0.5 * container.bounds.height;\n                        const f = ry / rx;\n                        const invF = 1 / f;\n\n                        this.ctx.save();\n                        this.ctx.translate(midX, midY);\n                        this.ctx.transform(1, 0, 0, f, 0, 0);\n                        this.ctx.translate(-midX, -midY);\n\n                        this.ctx.fillRect(left, invF * (top - midY) + midY, width, height * invF);\n                        this.ctx.restore();\n                    } else {\n                        this.ctx.fill();\n                    }\n                }\n            }\n            index--;\n        }\n    }\n\n    async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void> {\n        this.path(parsePathForBorder(curvePoints, side));\n        this.ctx.fillStyle = asString(color);\n        this.ctx.fill();\n    }\n\n    async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void> {\n        if (width < 3) {\n            await this.renderSolidBorder(color, side, curvePoints);\n            return;\n        }\n\n        const outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n        this.path(outerPaths);\n        this.ctx.fillStyle = asString(color);\n        this.ctx.fill();\n        const innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n        this.path(innerPaths);\n        this.ctx.fill();\n    }\n\n    async renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void> {\n        this.applyEffects(paint.getEffects(EffectTarget.BACKGROUND_BORDERS));\n        const styles = paint.container.styles;\n        const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n\n        const borders = [\n            {style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth},\n            {style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth},\n            {style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth},\n            {style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth}\n        ];\n\n        const backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(\n            getBackgroundValueForIndex(styles.backgroundClip, 0),\n            paint.curves\n        );\n\n        if (hasBackground || styles.boxShadow.length) {\n            this.ctx.save();\n            this.path(backgroundPaintingArea);\n            this.ctx.clip();\n\n            if (!isTransparent(styles.backgroundColor)) {\n                this.ctx.fillStyle = asString(styles.backgroundColor);\n                this.ctx.fill();\n            }\n\n            await this.renderBackgroundImage(paint.container);\n\n            this.ctx.restore();\n\n            styles.boxShadow\n                .slice(0)\n                .reverse()\n                .forEach((shadow) => {\n                    this.ctx.save();\n                    const borderBoxArea = calculateBorderBoxPath(paint.curves);\n                    const maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n                    const shadowPaintingArea = transformPath(\n                        borderBoxArea,\n                        -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number,\n                        (shadow.inset ? 1 : -1) * shadow.spread.number,\n                        shadow.spread.number * (shadow.inset ? -2 : 2),\n                        shadow.spread.number * (shadow.inset ? -2 : 2)\n                    );\n\n                    if (shadow.inset) {\n                        this.path(borderBoxArea);\n                        this.ctx.clip();\n                        this.mask(shadowPaintingArea);\n                    } else {\n                        this.mask(borderBoxArea);\n                        this.ctx.clip();\n                        this.path(shadowPaintingArea);\n                    }\n\n                    this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n                    this.ctx.shadowOffsetY = shadow.offsetY.number;\n                    this.ctx.shadowColor = asString(shadow.color);\n                    this.ctx.shadowBlur = shadow.blur.number;\n                    this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n\n                    this.ctx.fill();\n                    this.ctx.restore();\n                });\n        }\n\n        let side = 0;\n        for (const border of borders) {\n            if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color) && border.width > 0) {\n                if (border.style === BORDER_STYLE.DASHED) {\n                    await this.renderDashedDottedBorder(\n                        border.color,\n                        border.width,\n                        side,\n                        paint.curves,\n                        BORDER_STYLE.DASHED\n                    );\n                } else if (border.style === BORDER_STYLE.DOTTED) {\n                    await this.renderDashedDottedBorder(\n                        border.color,\n                        border.width,\n                        side,\n                        paint.curves,\n                        BORDER_STYLE.DOTTED\n                    );\n                } else if (border.style === BORDER_STYLE.DOUBLE) {\n                    await this.renderDoubleBorder(border.color, border.width, side, paint.curves);\n                } else {\n                    await this.renderSolidBorder(border.color, side, paint.curves);\n                }\n            }\n            side++;\n        }\n    }\n\n    async renderDashedDottedBorder(\n        color: Color,\n        width: number,\n        side: number,\n        curvePoints: BoundCurves,\n        style: BORDER_STYLE\n    ): Promise<void> {\n        this.ctx.save();\n\n        const strokePaths = parsePathForBorderStroke(curvePoints, side);\n        const boxPaths = parsePathForBorder(curvePoints, side);\n\n        if (style === BORDER_STYLE.DASHED) {\n            this.path(boxPaths);\n            this.ctx.clip();\n        }\n\n        let startX, startY, endX, endY;\n        if (isBezierCurve(boxPaths[0])) {\n            startX = (boxPaths[0] as BezierCurve).start.x;\n            startY = (boxPaths[0] as BezierCurve).start.y;\n        } else {\n            startX = (boxPaths[0] as Vector).x;\n            startY = (boxPaths[0] as Vector).y;\n        }\n        if (isBezierCurve(boxPaths[1])) {\n            endX = (boxPaths[1] as BezierCurve).end.x;\n            endY = (boxPaths[1] as BezierCurve).end.y;\n        } else {\n            endX = (boxPaths[1] as Vector).x;\n            endY = (boxPaths[1] as Vector).y;\n        }\n\n        let length;\n        if (side === 0 || side === 2) {\n            length = Math.abs(startX - endX);\n        } else {\n            length = Math.abs(startY - endY);\n        }\n\n        this.ctx.beginPath();\n        if (style === BORDER_STYLE.DOTTED) {\n            this.formatPath(strokePaths);\n        } else {\n            this.formatPath(boxPaths.slice(0, 2));\n        }\n\n        let dashLength = width < 3 ? width * 3 : width * 2;\n        let spaceLength = width < 3 ? width * 2 : width;\n        if (style === BORDER_STYLE.DOTTED) {\n            dashLength = width;\n            spaceLength = width;\n        }\n\n        let useLineDash = true;\n        if (length <= dashLength * 2) {\n            useLineDash = false;\n        } else if (length <= dashLength * 2 + spaceLength) {\n            const multiplier = length / (2 * dashLength + spaceLength);\n            dashLength *= multiplier;\n            spaceLength *= multiplier;\n        } else {\n            const numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n            const minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n            const maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n            spaceLength =\n                maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n                    ? minSpace\n                    : maxSpace;\n        }\n\n        if (useLineDash) {\n            if (style === BORDER_STYLE.DOTTED) {\n                this.ctx.setLineDash([0, dashLength + spaceLength]);\n            } else {\n                this.ctx.setLineDash([dashLength, spaceLength]);\n            }\n        }\n\n        if (style === BORDER_STYLE.DOTTED) {\n            this.ctx.lineCap = 'round';\n            this.ctx.lineWidth = width;\n        } else {\n            this.ctx.lineWidth = width * 2 + 1.1;\n        }\n        this.ctx.strokeStyle = asString(color);\n        this.ctx.stroke();\n        this.ctx.setLineDash([]);\n\n        // dashed round edge gap\n        if (style === BORDER_STYLE.DASHED) {\n            if (isBezierCurve(boxPaths[0])) {\n                const path1 = boxPaths[3] as BezierCurve;\n                const path2 = boxPaths[0] as BezierCurve;\n                this.ctx.beginPath();\n                this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n                this.ctx.stroke();\n            }\n            if (isBezierCurve(boxPaths[1])) {\n                const path1 = boxPaths[1] as BezierCurve;\n                const path2 = boxPaths[2] as BezierCurve;\n                this.ctx.beginPath();\n                this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n                this.ctx.stroke();\n            }\n        }\n\n        this.ctx.restore();\n    }\n\n    async render(element: ElementContainer): Promise<HTMLCanvasElement> {\n        if (this.options.backgroundColor) {\n            this.ctx.fillStyle = asString(this.options.backgroundColor);\n            this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n        }\n\n        const stack = parseStackingContexts(element);\n\n        await this.renderStack(stack);\n        this.applyEffects([]);\n        return this.canvas;\n    }\n}\n\nconst isTextInputElement = (\n    container: ElementContainer\n): container is InputElementContainer | TextareaElementContainer | SelectElementContainer => {\n    if (container instanceof TextareaElementContainer) {\n        return true;\n    } else if (container instanceof SelectElementContainer) {\n        return true;\n    } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n        return true;\n    }\n    return false;\n};\n\nconst calculateBackgroundCurvedPaintingArea = (clip: BACKGROUND_CLIP, curves: BoundCurves): Path[] => {\n    switch (clip) {\n        case BACKGROUND_CLIP.BORDER_BOX:\n            return calculateBorderBoxPath(curves);\n        case BACKGROUND_CLIP.CONTENT_BOX:\n            return calculateContentBoxPath(curves);\n        case BACKGROUND_CLIP.PADDING_BOX:\n        default:\n            return calculatePaddingBoxPath(curves);\n    }\n};\n\nconst canvasTextAlign = (textAlign: TEXT_ALIGN): CanvasTextAlign => {\n    switch (textAlign) {\n        case TEXT_ALIGN.CENTER:\n            return 'center';\n        case TEXT_ALIGN.RIGHT:\n            return 'right';\n        case TEXT_ALIGN.LEFT:\n        default:\n            return 'left';\n    }\n};\n\n// see https://github.com/niklasvh/html2canvas/pull/2645\nconst iOSBrokenFonts = ['-apple-system', 'system-ui'];\n\nconst fixIOSSystemFonts = (fontFamilies: string[]): string[] => {\n    return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n        ? fontFamilies.filter((fontFamily) => iOSBrokenFonts.indexOf(fontFamily) === -1)\n        : fontFamilies;\n};\n", "import {RenderConfigurations} from './canvas-renderer';\nimport {createForeignObjectSVG} from '../../core/features';\nimport {asString} from '../../css/types/color';\nimport {Renderer} from '../renderer';\nimport {Context} from '../../core/context';\n\nexport class ForeignObjectRenderer extends Renderer {\n    canvas: HTMLCanvasElement;\n    ctx: CanvasRenderingContext2D;\n    options: RenderConfigurations;\n\n    constructor(context: Context, options: RenderConfigurations) {\n        super(context, options);\n        this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n        this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n        this.options = options;\n        this.canvas.width = Math.floor(options.width * options.scale);\n        this.canvas.height = Math.floor(options.height * options.scale);\n        this.canvas.style.width = `${options.width}px`;\n        this.canvas.style.height = `${options.height}px`;\n\n        this.ctx.scale(this.options.scale, this.options.scale);\n        this.ctx.translate(-options.x, -options.y);\n        this.context.logger.debug(\n            `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}`\n        );\n    }\n\n    async render(element: HTMLElement): Promise<HTMLCanvasElement> {\n        const svg = createForeignObjectSVG(\n            this.options.width * this.options.scale,\n            this.options.height * this.options.scale,\n            this.options.scale,\n            this.options.scale,\n            element\n        );\n\n        const img = await loadSerializedSVG(svg);\n\n        if (this.options.backgroundColor) {\n            this.ctx.fillStyle = asString(this.options.backgroundColor);\n            this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n        }\n\n        this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n\n        return this.canvas;\n    }\n}\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> =>\n    new Promise((resolve, reject) => {\n        const img = new Image();\n        img.onload = () => {\n            resolve(img);\n        };\n        img.onerror = reject;\n\n        img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n    });\n", "export interface LoggerOptions {\n    id: string;\n    enabled: boolean;\n}\n\nexport class Logger {\n    static instances: {[key: string]: Logger} = {};\n\n    private readonly id: string;\n    private readonly enabled: boolean;\n    private readonly start: number;\n\n    constructor({id, enabled}: LoggerOptions) {\n        this.id = id;\n        this.enabled = enabled;\n        this.start = Date.now();\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    debug(...args: unknown[]): void {\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n                // eslint-disable-next-line no-console\n                console.debug(this.id, `${this.getTime()}ms`, ...args);\n            } else {\n                this.info(...args);\n            }\n        }\n    }\n\n    getTime(): number {\n        return Date.now() - this.start;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    info(...args: unknown[]): void {\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n                // eslint-disable-next-line no-console\n                console.info(this.id, `${this.getTime()}ms`, ...args);\n            }\n        }\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    warn(...args: unknown[]): void {\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n                // eslint-disable-next-line no-console\n                console.warn(this.id, `${this.getTime()}ms`, ...args);\n            } else {\n                this.info(...args);\n            }\n        }\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    error(...args: unknown[]): void {\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n                // eslint-disable-next-line no-console\n                console.error(this.id, `${this.getTime()}ms`, ...args);\n            } else {\n                this.info(...args);\n            }\n        }\n    }\n}\n", "import {Logger} from './logger';\nimport {Cache, ResourceOptions} from './cache-storage';\nimport {Bounds} from '../css/layout/bounds';\n\nexport type ContextOptions = {\n    logging: boolean;\n    cache?: Cache;\n} & ResourceOptions;\n\nexport class Context {\n    private readonly instanceName = `#${Context.instanceCount++}`;\n    readonly logger: Logger;\n    readonly cache: Cache;\n\n    private static instanceCount = 1;\n\n    constructor(options: ContextOptions, public windowBounds: Bounds) {\n        this.logger = new Logger({id: this.instanceName, enabled: options.logging});\n        this.cache = options.cache ?? new Cache(this, options);\n    }\n}\n", "import {Bounds, parseBounds, parseDocumentSize} from './css/layout/bounds';\nimport {COLORS, isTransparent, parseColor} from './css/types/color';\nimport {CloneConfigurations, CloneOptions, DocumentCloner, WindowOptions} from './dom/document-cloner';\nimport {isBodyElement, isHTMLElement, parseTree} from './dom/node-parser';\nimport {CacheStorage} from './core/cache-storage';\nimport {CanvasRenderer, RenderConfigurations, RenderOptions} from './render/canvas/canvas-renderer';\nimport {ForeignObjectRenderer} from './render/canvas/foreignobject-renderer';\nimport {Context, ContextOptions} from './core/context';\n\nexport type Options = CloneOptions &\n    WindowOptions &\n    RenderOptions &\n    ContextOptions & {\n        backgroundColor: string | null;\n        foreignObjectRendering: boolean;\n        removeContainer?: boolean;\n    };\n\nconst html2canvas = (element: HTMLElement, options: Partial<Options> = {}): Promise<HTMLCanvasElement> => {\n    return renderElement(element, options);\n};\n\nexport default html2canvas;\n\nif (typeof window !== 'undefined') {\n    CacheStorage.setContext(window);\n}\n\nconst renderElement = async (element: HTMLElement, opts: Partial<Options>): Promise<HTMLCanvasElement> => {\n    if (!element || typeof element !== 'object') {\n        return Promise.reject('Invalid element provided as first argument');\n    }\n    const ownerDocument = element.ownerDocument;\n\n    if (!ownerDocument) {\n        throw new Error(`Element is not attached to a Document`);\n    }\n\n    const defaultView = ownerDocument.defaultView;\n\n    if (!defaultView) {\n        throw new Error(`Document is not attached to a Window`);\n    }\n\n    const resourceOptions = {\n        allowTaint: opts.allowTaint ?? false,\n        imageTimeout: opts.imageTimeout ?? 15000,\n        proxy: opts.proxy,\n        useCORS: opts.useCORS ?? false\n    };\n\n    const contextOptions = {\n        logging: opts.logging ?? true,\n        cache: opts.cache,\n        ...resourceOptions\n    };\n\n    const windowOptions = {\n        windowWidth: opts.windowWidth ?? defaultView.innerWidth,\n        windowHeight: opts.windowHeight ?? defaultView.innerHeight,\n        scrollX: opts.scrollX ?? defaultView.pageXOffset,\n        scrollY: opts.scrollY ?? defaultView.pageYOffset\n    };\n\n    const windowBounds = new Bounds(\n        windowOptions.scrollX,\n        windowOptions.scrollY,\n        windowOptions.windowWidth,\n        windowOptions.windowHeight\n    );\n\n    const context = new Context(contextOptions, windowBounds);\n\n    const foreignObjectRendering = opts.foreignObjectRendering ?? false;\n\n    const cloneOptions: CloneConfigurations = {\n        allowTaint: opts.allowTaint ?? false,\n        onclone: opts.onclone,\n        ignoreElements: opts.ignoreElements,\n        inlineImages: foreignObjectRendering,\n        copyStyles: foreignObjectRendering\n    };\n\n    context.logger.debug(\n        `Starting document clone with size ${windowBounds.width}x${\n            windowBounds.height\n        } scrolled to ${-windowBounds.left},${-windowBounds.top}`\n    );\n\n    const documentCloner = new DocumentCloner(context, element, cloneOptions);\n    const clonedElement = documentCloner.clonedReferenceElement;\n    if (!clonedElement) {\n        return Promise.reject(`Unable to find element in cloned iframe`);\n    }\n\n    const container = await documentCloner.toIFrame(ownerDocument, windowBounds);\n\n    const {width, height, left, top} =\n        isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n            ? parseDocumentSize(clonedElement.ownerDocument)\n            : parseBounds(context, clonedElement);\n\n    const backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n\n    const renderOptions: RenderConfigurations = {\n        canvas: opts.canvas,\n        backgroundColor,\n        scale: opts.scale ?? defaultView.devicePixelRatio ?? 1,\n        x: (opts.x ?? 0) + left,\n        y: (opts.y ?? 0) + top,\n        width: opts.width ?? Math.ceil(width),\n        height: opts.height ?? Math.ceil(height)\n    };\n\n    let canvas;\n\n    if (foreignObjectRendering) {\n        context.logger.debug(`Document cloned, using foreign object rendering`);\n        const renderer = new ForeignObjectRenderer(context, renderOptions);\n        canvas = await renderer.render(clonedElement);\n    } else {\n        context.logger.debug(\n            `Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`\n        );\n\n        context.logger.debug(`Starting DOM parsing`);\n        const root = parseTree(context, clonedElement);\n\n        if (backgroundColor === root.styles.backgroundColor) {\n            root.styles.backgroundColor = COLORS.TRANSPARENT;\n        }\n\n        context.logger.debug(\n            `Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`\n        );\n\n        const renderer = new CanvasRenderer(context, renderOptions);\n        canvas = await renderer.render(root);\n    }\n\n    if (opts.removeContainer ?? true) {\n        if (!DocumentCloner.destroy(container)) {\n            context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);\n        }\n    }\n\n    context.logger.debug(`Finished rendering`);\n    return canvas;\n};\n\nconst parseBackgroundColor = (context: Context, element: HTMLElement, backgroundColorOverride?: string | null) => {\n    const ownerDocument = element.ownerDocument;\n    // http://www.w3.org/TR/css3-background/#special-backgrounds\n    const documentBackgroundColor = ownerDocument.documentElement\n        ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor as string)\n        : COLORS.TRANSPARENT;\n    const bodyBackgroundColor = ownerDocument.body\n        ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor as string)\n        : COLORS.TRANSPARENT;\n\n    const defaultBackgroundColor =\n        typeof backgroundColorOverride === 'string'\n            ? parseColor(context, backgroundColorOverride)\n            : backgroundColorOverride === null\n            ? COLORS.TRANSPARENT\n            : 0xffffffff;\n\n    return element === ownerDocument.documentElement\n        ? isTransparent(documentBackgroundColor)\n            ? isTransparent(bodyBackgroundColor)\n                ? defaultBackgroundColor\n                : bodyBackgroundColor\n            : documentBackgroundColor\n        : defaultBackgroundColor;\n};\n", "const {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n  freeze = function <T>(x: T): T {\n    return x;\n  };\n}\n\nif (!seal) {\n  seal = function <T>(x: T): T {\n    return x;\n  };\n}\n\nif (!apply) {\n  apply = function <T>(\n    func: (thisArg: any, ...args: any[]) => T,\n    thisArg: any,\n    ...args: any[]\n  ): T {\n    return func.apply(thisArg, args);\n  };\n}\n\nif (!construct) {\n  construct = function <T>(Func: new (...args: any[]) => T, ...args: any[]): T {\n    return new Func(...args);\n  };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\nconst arrayIsArray = Array.isArray;\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst numberToString = unapply(Number.prototype.toString);\nconst booleanToString = unapply(Boolean.prototype.toString);\nconst bigintToString =\n  typeof BigInt === 'undefined' ? null : unapply(BigInt.prototype.toString);\nconst symbolToString =\n  typeof Symbol === 'undefined' ? null : unapply(Symbol.prototype.toString);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst objectToString = unapply(Object.prototype.toString);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply<T>(\n  func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n  return (thisArg: any, ...args: any[]): T => {\n    if (thisArg instanceof RegExp) {\n      thisArg.lastIndex = 0;\n    }\n\n    return apply(func, thisArg, args);\n  };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct<T>(\n  Func: new (...args: any[]) => T\n): (...args: any[]) => T {\n  return (...args: any[]): T => construct(Func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n  set: Record<string, boolean>,\n  array: readonly unknown[],\n  transformCaseFunc: ReturnType<typeof unapply<string>> = stringToLowerCase\n): Record<string, boolean> {\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n\n  if (!arrayIsArray(array)) {\n    return set;\n  }\n\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          (array as unknown[])[l] = lcElement;\n        }\n\n        element = lcElement;\n      }\n    }\n\n    set[element as string] = true;\n  }\n\n  return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray<T>(array: T[]): Array<T | null> {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n\n  return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone<T extends Record<string, any>>(object: T): T {\n  const newObject = create(null);\n\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n\n    if (isPropertyExist) {\n      if (arrayIsArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (\n        value &&\n        typeof value === 'object' &&\n        value.constructor === Object\n      ) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n\n  return newObject;\n}\n\n/**\n * Convert non-node values into strings without depending on direct property access.\n *\n * @param value - The value to stringify.\n * @returns A string representation of the provided value.\n */\nfunction stringifyValue(value: unknown): string {\n  switch (typeof value) {\n    case 'string': {\n      return value;\n    }\n\n    case 'number': {\n      return numberToString(value);\n    }\n\n    case 'boolean': {\n      return booleanToString(value);\n    }\n\n    case 'bigint': {\n      return bigintToString ? bigintToString(value) : '0';\n    }\n\n    case 'symbol': {\n      return symbolToString ? symbolToString(value) : 'Symbol()';\n    }\n\n    case 'undefined': {\n      return objectToString(value);\n    }\n\n    case 'function':\n    case 'object': {\n      if (value === null) {\n        return objectToString(value);\n      }\n\n      const valueAsRecord = value as Record<string, any>;\n      const valueToString = lookupGetter(valueAsRecord, 'toString');\n\n      if (typeof valueToString === 'function') {\n        const stringified = valueToString(valueAsRecord);\n\n        return typeof stringified === 'string'\n          ? stringified\n          : objectToString(stringified);\n      }\n\n      return objectToString(value);\n    }\n\n    default: {\n      return objectToString(value);\n    }\n  }\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter<T extends Record<string, any>>(\n  object: T,\n  prop: string\n): ReturnType<typeof unapply<any>> | (() => null) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n\n    object = getPrototypeOf(object);\n  }\n\n  function fallbackValue(): null {\n    return null;\n  }\n\n  return fallbackValue;\n}\n\nfunction isRegex(value: unknown): value is RegExp {\n  try {\n    regExpTest(value as RegExp, '');\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport {\n  // Array\n  arrayForEach,\n  arrayIndexOf,\n  arrayIsArray,\n  arrayLastIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySlice,\n  arraySplice,\n  // Object\n  entries,\n  freeze,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n  isFrozen,\n  setPrototypeOf,\n  seal,\n  clone,\n  create,\n  objectHasOwnProperty,\n  objectToString,\n  // RegExp\n  regExpTest,\n  isRegex,\n  // String\n  stringIndexOf,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringTrim,\n  // Other conversion\n  stringifyValue,\n  // Errors\n  typeErrorCreate,\n  // Other\n  lookupGetter,\n  addToSet,\n  // Reflect\n  unapply,\n  unconstruct,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'a',\n  'abbr',\n  'acronym',\n  'address',\n  'area',\n  'article',\n  'aside',\n  'audio',\n  'b',\n  'bdi',\n  'bdo',\n  'big',\n  'blink',\n  'blockquote',\n  'body',\n  'br',\n  'button',\n  'canvas',\n  'caption',\n  'center',\n  'cite',\n  'code',\n  'col',\n  'colgroup',\n  'content',\n  'data',\n  'datalist',\n  'dd',\n  'decorator',\n  'del',\n  'details',\n  'dfn',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'element',\n  'em',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'font',\n  'footer',\n  'form',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hgroup',\n  'hr',\n  'html',\n  'i',\n  'img',\n  'input',\n  'ins',\n  'kbd',\n  'label',\n  'legend',\n  'li',\n  'main',\n  'map',\n  'mark',\n  'marquee',\n  'menu',\n  'menuitem',\n  'meter',\n  'nav',\n  'nobr',\n  'ol',\n  'optgroup',\n  'option',\n  'output',\n  'p',\n  'picture',\n  'pre',\n  'progress',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'search',\n  'section',\n  'select',\n  'shadow',\n  'slot',\n  'small',\n  'source',\n  'spacer',\n  'span',\n  'strike',\n  'strong',\n  'style',\n  'sub',\n  'summary',\n  'sup',\n  'table',\n  'tbody',\n  'td',\n  'template',\n  'textarea',\n  'tfoot',\n  'th',\n  'thead',\n  'time',\n  'tr',\n  'track',\n  'tt',\n  'u',\n  'ul',\n  'var',\n  'video',\n  'wbr',\n] as const);\n\nexport const svg = freeze([\n  'svg',\n  'a',\n  'altglyph',\n  'altglyphdef',\n  'altglyphitem',\n  'animatecolor',\n  'animatemotion',\n  'animatetransform',\n  'circle',\n  'clippath',\n  'defs',\n  'desc',\n  'ellipse',\n  'enterkeyhint',\n  'exportparts',\n  'filter',\n  'font',\n  'g',\n  'glyph',\n  'glyphref',\n  'hkern',\n  'image',\n  'inputmode',\n  'line',\n  'lineargradient',\n  'marker',\n  'mask',\n  'metadata',\n  'mpath',\n  'part',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialgradient',\n  'rect',\n  'stop',\n  'style',\n  'switch',\n  'symbol',\n  'text',\n  'textpath',\n  'title',\n  'tref',\n  'tspan',\n  'view',\n  'vkern',\n] as const);\n\nexport const svgFilters = freeze([\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] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n  'animate',\n  'color-profile',\n  'cursor',\n  'discard',\n  'font-face',\n  'font-face-format',\n  'font-face-name',\n  'font-face-src',\n  'font-face-uri',\n  'foreignobject',\n  'hatch',\n  'hatchpath',\n  'mesh',\n  'meshgradient',\n  'meshpatch',\n  'meshrow',\n  'missing-glyph',\n  'script',\n  'set',\n  'solidcolor',\n  'unknown',\n  'use',\n] as const);\n\nexport const mathMl = freeze([\n  'math',\n  'menclose',\n  'merror',\n  'mfenced',\n  'mfrac',\n  'mglyph',\n  'mi',\n  'mlabeledtr',\n  'mmultiscripts',\n  'mn',\n  'mo',\n  'mover',\n  'mpadded',\n  'mphantom',\n  'mroot',\n  'mrow',\n  'ms',\n  'mspace',\n  'msqrt',\n  'mstyle',\n  'msub',\n  'msup',\n  'msubsup',\n  'mtable',\n  'mtd',\n  'mtext',\n  'mtr',\n  'munder',\n  'munderover',\n  'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n  'maction',\n  'maligngroup',\n  'malignmark',\n  'mlongdiv',\n  'mscarries',\n  'mscarry',\n  'msgroup',\n  'mstack',\n  'msline',\n  'msrow',\n  'semantics',\n  'annotation',\n  'annotation-xml',\n  'mprescripts',\n  'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'accept',\n  'action',\n  'align',\n  'alt',\n  'autocapitalize',\n  'autocomplete',\n  'autopictureinpicture',\n  'autoplay',\n  'background',\n  'bgcolor',\n  'border',\n  'capture',\n  'cellpadding',\n  'cellspacing',\n  'checked',\n  'cite',\n  'class',\n  'clear',\n  'color',\n  'cols',\n  'colspan',\n  'command',\n  'commandfor',\n  'controls',\n  'controlslist',\n  'coords',\n  'crossorigin',\n  'datetime',\n  'decoding',\n  'default',\n  'dir',\n  'disabled',\n  'disablepictureinpicture',\n  'disableremoteplayback',\n  'download',\n  'draggable',\n  'enctype',\n  'enterkeyhint',\n  'exportparts',\n  'face',\n  'for',\n  'headers',\n  'height',\n  'hidden',\n  'high',\n  'href',\n  'hreflang',\n  'id',\n  'inert',\n  'inputmode',\n  'integrity',\n  'ismap',\n  'kind',\n  'label',\n  'lang',\n  'list',\n  'loading',\n  'loop',\n  'low',\n  'max',\n  'maxlength',\n  'media',\n  'method',\n  'min',\n  'minlength',\n  'multiple',\n  'muted',\n  'name',\n  'nonce',\n  'noshade',\n  'novalidate',\n  'nowrap',\n  'open',\n  'optimum',\n  'part',\n  'pattern',\n  'placeholder',\n  'playsinline',\n  'popover',\n  'popovertarget',\n  'popovertargetaction',\n  'poster',\n  'preload',\n  'pubdate',\n  'radiogroup',\n  'readonly',\n  'rel',\n  'required',\n  'rev',\n  'reversed',\n  'role',\n  'rows',\n  'rowspan',\n  'spellcheck',\n  'scope',\n  'selected',\n  'shape',\n  'size',\n  'sizes',\n  'slot',\n  'span',\n  'srclang',\n  'start',\n  'src',\n  'srcset',\n  'step',\n  'style',\n  'summary',\n  'tabindex',\n  'title',\n  'translate',\n  'type',\n  'usemap',\n  'valign',\n  'value',\n  'width',\n  'wrap',\n  'xmlns',\n] as const);\n\nexport const svg = freeze([\n  'accent-height',\n  'accumulate',\n  'additive',\n  'alignment-baseline',\n  'amplitude',\n  'ascent',\n  'attributename',\n  'attributetype',\n  'azimuth',\n  'basefrequency',\n  'baseline-shift',\n  'begin',\n  'bias',\n  'by',\n  'class',\n  'clip',\n  'clippathunits',\n  'clip-path',\n  'clip-rule',\n  'color',\n  'color-interpolation',\n  'color-interpolation-filters',\n  'color-profile',\n  'color-rendering',\n  'cx',\n  'cy',\n  'd',\n  'dx',\n  'dy',\n  'diffuseconstant',\n  'direction',\n  'display',\n  'divisor',\n  'dominant-baseline',\n  'dur',\n  'edgemode',\n  'elevation',\n  'end',\n  'exponent',\n  'fill',\n  'fill-opacity',\n  'fill-rule',\n  'filter',\n  'filterunits',\n  'flood-color',\n  'flood-opacity',\n  'font-family',\n  'font-size',\n  'font-size-adjust',\n  'font-stretch',\n  'font-style',\n  'font-variant',\n  'font-weight',\n  'fx',\n  'fy',\n  'g1',\n  'g2',\n  'glyph-name',\n  'glyphref',\n  'gradientunits',\n  'gradienttransform',\n  'height',\n  'href',\n  'id',\n  'image-rendering',\n  'in',\n  'in2',\n  'intercept',\n  'k',\n  'k1',\n  'k2',\n  'k3',\n  'k4',\n  'kerning',\n  'keypoints',\n  'keysplines',\n  'keytimes',\n  'lang',\n  'lengthadjust',\n  'letter-spacing',\n  'kernelmatrix',\n  'kernelunitlength',\n  'lighting-color',\n  'local',\n  'marker-end',\n  'marker-mid',\n  'marker-start',\n  'markerheight',\n  'markerunits',\n  'markerwidth',\n  'maskcontentunits',\n  'maskunits',\n  'max',\n  'mask',\n  'mask-type',\n  'media',\n  'method',\n  'mode',\n  'min',\n  'name',\n  'numoctaves',\n  'offset',\n  'operator',\n  'opacity',\n  'order',\n  'orient',\n  'orientation',\n  'origin',\n  'overflow',\n  'paint-order',\n  'path',\n  'pathlength',\n  'patterncontentunits',\n  'patterntransform',\n  'patternunits',\n  'pointer-events',\n  'points',\n  'preservealpha',\n  'preserveaspectratio',\n  'primitiveunits',\n  'r',\n  'rx',\n  'ry',\n  'radius',\n  'refx',\n  'refy',\n  'repeatcount',\n  'repeatdur',\n  'restart',\n  'result',\n  'rotate',\n  'scale',\n  'seed',\n  'shape-rendering',\n  'slope',\n  'specularconstant',\n  'specularexponent',\n  'spreadmethod',\n  'startoffset',\n  'stddeviation',\n  'stitchtiles',\n  'stop-color',\n  'stop-opacity',\n  'stroke-dasharray',\n  'stroke-dashoffset',\n  'stroke-linecap',\n  'stroke-linejoin',\n  'stroke-miterlimit',\n  'stroke-opacity',\n  'stroke',\n  'stroke-width',\n  'style',\n  'surfacescale',\n  'systemlanguage',\n  'tabindex',\n  'tablevalues',\n  'targetx',\n  'targety',\n  'transform',\n  'transform-origin',\n  'text-anchor',\n  'text-decoration',\n  'text-orientation',\n  'text-rendering',\n  'textlength',\n  'type',\n  'u1',\n  'u2',\n  'unicode',\n  'values',\n  'vector-effect',\n  'viewbox',\n  'visibility',\n  'version',\n  'vert-adv-y',\n  'vert-origin-x',\n  'vert-origin-y',\n  'width',\n  'word-spacing',\n  'wrap',\n  'writing-mode',\n  'xchannelselector',\n  'ychannelselector',\n  'x',\n  'x1',\n  'x2',\n  'xmlns',\n  'y',\n  'y1',\n  'y2',\n  'z',\n  'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n  'accent',\n  'accentunder',\n  'align',\n  'bevelled',\n  'close',\n  'columnalign',\n  'columnlines',\n  'columnspacing',\n  'columnspan',\n  'denomalign',\n  'depth',\n  'dir',\n  'display',\n  'displaystyle',\n  'encoding',\n  'fence',\n  'frame',\n  'height',\n  'href',\n  'id',\n  'largeop',\n  'length',\n  'linethickness',\n  'lquote',\n  'lspace',\n  'mathbackground',\n  'mathcolor',\n  'mathsize',\n  'mathvariant',\n  'maxsize',\n  'minsize',\n  'movablelimits',\n  'notation',\n  'numalign',\n  'open',\n  'rowalign',\n  'rowlines',\n  'rowspacing',\n  'rowspan',\n  'rspace',\n  'rquote',\n  'scriptlevel',\n  'scriptminsize',\n  'scriptsizemultiplier',\n  'selection',\n  'separator',\n  'separators',\n  'stretchy',\n  'subscriptshift',\n  'supscriptshift',\n  'symmetric',\n  'voffset',\n  'width',\n  'xmlns',\n]);\n\nexport const xml = freeze([\n  'xlink:href',\n  'xml:id',\n  'xlink:title',\n  'xml:space',\n  'xmlns:xlink',\n] as const);\n", "import { seal } from './utils.js';\n\nexport const MUSTACHE_EXPR = seal(/{{[\\w\\W]*|^[\\w\\W]*}}/g);\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|^[\\w\\W]*%>/g);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*/g);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n  /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n  /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\n// Markup-significant character probes used by _sanitizeElements.\n// Shared module-level instances are safe despite the sticky /g flags:\n// unapply() resets lastIndex for RegExp receivers before every call.\nexport const ELEMENT_MARKUP_PROBE = seal(/<[/\\w!]/g);\nexport const COMMENT_MARKUP_PROBE = seal(/<[/\\w]/g);\nexport const FALLBACK_TAG_CLOSE = seal(/<\\/no(script|embed|frames)/i);\nexport const SELF_CLOSING_TAG = seal(/\\/>/i);\n", "import type { Config, UseProfilesConfig } from './config';\nimport type { DOMPurify, HooksMap, HookFunction, WindowLike } from './types';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n  addToSet,\n  clone,\n  entries,\n  freeze,\n  seal,\n  arrayForEach,\n  arrayIsArray,\n  arrayLastIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySplice,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringIndexOf,\n  stringTrim,\n  regExpTest,\n  isRegex,\n  typeErrorCreate,\n  lookupGetter,\n  create,\n  objectHasOwnProperty,\n  stringifyValue,\n} from './utils.js';\n\nexport type { Config } from './config';\n\nexport type {\n  DOMPurify,\n  RemovedElement,\n  RemovedAttribute,\n  HookName,\n  NodeHook,\n  ElementHook,\n  DocumentFragmentHook,\n  UponSanitizeElementHook,\n  UponSanitizeAttributeHook,\n  UponSanitizeElementHookEvent,\n  UponSanitizeAttributeHookEvent,\n  WindowLike,\n} from './types';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5, // Deprecated\n  entityNode: 6, // Deprecated\n  processingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12, // Deprecated\n};\n\n/* HTML-namespace elements whose child text nodes are serialized *literally*\n   (unescaped) by the HTML fragment-serialization algorithm. Two reparse-mXSS\n   shapes ride on that literal serialization:\n     (a) an element child - a tree the HTML parser can never build, but the DOM\n         API and an XML/XHTML parse can - after which a `</tag>`-bearing text\n         sibling breaks the element open on reparse; and\n     (b) text-only content that already carries the element's OWN end tag, e.g.\n         `<style>...</style><img onerror=x>` built as a node, which the literal\n         serializer emits verbatim for the HTML parser to re-open.\n   Shape (a) is handled by the firstElementChild branch in _isUnsafeNode; shape\n   (b) by the LITERAL_TEXT_CLOSE probe. Both read textContent (the raw-serialized\n   form for these elements) rather than innerHTML, because an XML/XHTML working\n   document serializes innerHTML with `<` escaped, which silently blinds the\n   innerHTML-based probes (rule 1's second probe and FALLBACK_TAG_CLOSE) there.\n   `script` is never allow-listed, but is kept here so the guard matches the\n   serializer's own literal-text list exactly. */\nconst LITERAL_TEXT_ELEMENT_NAMES = [\n  'style',\n  'script',\n  'xmp',\n  'iframe',\n  'noembed',\n  'noframes',\n  'plaintext',\n  'noscript',\n];\nconst LITERAL_TEXT_ELEMENTS = freeze(addToSet({}, LITERAL_TEXT_ELEMENT_NAMES));\n\n/* Per-element end-tag matcher. On an HTML reparse the ONLY token that\n   terminates a literal-text element's raw content is its own end tag; a foreign\n   literal-text close (e.g. `</xmp>` sitting inside `<style>`) does not break\n   out, so matching is per-element, not a shared alternation. The lookahead\n   requires an HTML tag-name terminator (whitespace, `/` or `>`) so a longer\n   name such as `</styles` is not mistaken for `</style`. */\nconst LITERAL_TEXT_CLOSE = (function (): Record<string, RegExp> {\n  const map: Record<string, RegExp> = {};\n  arrayForEach(LITERAL_TEXT_ELEMENT_NAMES, (name) => {\n    map[name] = seal(new RegExp('</' + name + '(?=[\\\\t\\\\n\\\\f\\\\r />])', 'i'));\n  });\n  return freeze(map);\n})();\n\nconst getGlobal = function (): WindowLike {\n  return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (\n  trustedTypes: TrustedTypePolicyFactory,\n  purifyHostElement: HTMLScriptElement\n) {\n  if (\n    typeof trustedTypes !== 'object' ||\n    typeof trustedTypes.createPolicy !== 'function'\n  ) {\n    return null;\n  }\n\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      },\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn(\n      'TrustedTypes policy ' + policyName + ' could not be created.'\n    );\n    return null;\n  }\n};\n\nconst _createHooksMap = function (): HooksMap {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: [],\n  };\n};\n\n/**\n * Resolve a set-valued configuration option: a fresh set built from\n * cfg[key] when it is an own array property (seeded with a clone of\n * options.base when given, case-normalized via options.transform),\n * the fallback set otherwise.\n *\n * @param cfg the cloned, prototype-free configuration object\n * @param key the configuration property to read\n * @param fallback the set to use when the option is absent or not an array\n * @param options transform and optional base set to merge into\n * @returns the resolved set\n */\nconst _resolveSetOption = function (\n  cfg: Config,\n  key: keyof Config,\n  fallback: Record<string, boolean>,\n  options: {\n    transform: Parameters<typeof addToSet>[2];\n    base?: Record<string, boolean>;\n  }\n): Record<string, boolean> {\n  return objectHasOwnProperty(cfg, key) && arrayIsArray(cfg[key])\n    ? addToSet(\n        options.base ? clone(options.base) : {},\n        cfg[key] as readonly unknown[],\n        options.transform\n      )\n    : fallback;\n};\n\n/**\n * Resolve an object-valued configuration option: a prototype-free clone\n * of cfg[key] when it is an own, truthy object property, else a fresh\n * fallback built by makeFallback (fresh on every parse, so a previous\n * parse can never leak state into the next one).\n *\n * @param cfg the cloned, prototype-free configuration object\n * @param key the configuration property to read\n * @param makeFallback builds the fallback value when the option is absent\n * @returns the resolved object\n */\nconst _resolveObjectOption = function <T extends Record<string, any>>(\n  cfg: Config,\n  key: keyof Config,\n  makeFallback: () => T\n): T {\n  const value = objectHasOwnProperty(cfg, key) ? cfg[key] : undefined;\n  return value && typeof value === 'object'\n    ? clone(value as T)\n    : makeFallback();\n};\n\nfunction createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {\n  const DOMPurify: DOMPurify = (root: WindowLike) => createDOMPurify(root);\n\n  DOMPurify.version = VERSION;\n\n  DOMPurify.removed = [];\n\n  if (\n    !window ||\n    !window.document ||\n    window.document.nodeType !== NODE_TYPE.document ||\n    !window.Element\n  ) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n\n    return DOMPurify;\n  }\n\n  let { document } = window;\n\n  const originalDocument = document;\n  const currentScript: HTMLScriptElement =\n    originalDocument.currentScript as HTMLScriptElement;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || (window as any).MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes,\n  } = window;\n\n  const ElementPrototype = Element.prototype;\n\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  // Clobber-safe Attr-node removal. On an HTMLFormElement a descendant named\n  // \"removeAttributeNode\" shadows the prototype method via\n  // [LegacyOverrideBuiltIns], so element.removeAttributeNode(attr) throws.\n  // Calling the cached Element.prototype method with the element as the\n  // receiver removes the exact live Attr node regardless of the shadowing.\n  const removeAttributeNode = lookupGetter(\n    ElementPrototype,\n    'removeAttributeNode'\n  );\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n  const getShadowRoot = lookupGetter(ElementPrototype, 'shadowRoot');\n  const getAttributes = lookupGetter(ElementPrototype, 'attributes');\n  const getNodeType =\n    Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeType') : null;\n  const getNodeName =\n    Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeName') : null;\n  const getOwnerDocument =\n    Node && Node.prototype\n      ? lookupGetter(Node.prototype, 'ownerDocument')\n      : null;\n\n  /* Clobber-safe nodeType / nodeName reads through the cached Node.prototype\n     getters, with a direct-property fallback for environments that lack\n     Node.prototype. Sites that need a different fallback (e.g. _isClobbered\n     returns early on a null name) intentionally keep their own reads. */\n  const _readNodeType = function (node: Node): number {\n    return getNodeType ? getNodeType(node) : (node as any).nodeType;\n  };\n\n  const _readNodeName = function (node: Node): string {\n    return getNodeName ? getNodeName(node) : (node as any).nodeName;\n  };\n\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n\n  // The instance's own internal Trusted Types policy. Unlike a caller-supplied\n  // `TRUSTED_TYPES_POLICY`, this is created at most once \u2014 Trusted Types throws\n  // on duplicate policy names \u2014 and is the only policy allowed to persist\n  // across configurations and survive `clearConfig()`.\n  let defaultTrustedTypesPolicy;\n  let defaultTrustedTypesPolicyResolved = false;\n\n  // Tracks whether we are already inside a call to the configured Trusted Types\n  // policy (`createHTML` or `createScriptURL`). If a supplied policy callback\n  // itself calls `DOMPurify.sanitize` (the cause of #1422), `sanitize` would\n  // re-enter the policy and recurse until the stack overflows. We detect that\n  // re-entry and throw a clear, actionable error instead. The guard is shared\n  // across both callbacks, because either one re-entering `sanitize` triggers\n  // the same unbounded recursion.\n  let IN_TRUSTED_TYPES_POLICY = 0;\n  const _assertNotInTrustedTypesPolicy = function (): void {\n    if (IN_TRUSTED_TYPES_POLICY > 0) {\n      throw typeErrorCreate(\n        'A configured TRUSTED_TYPES_POLICY callback (createHTML or ' +\n          'createScriptURL) must not call DOMPurify.sanitize, as that causes ' +\n          'infinite recursion. Do not pass a policy whose callbacks wrap ' +\n          'DOMPurify as TRUSTED_TYPES_POLICY; see the \"DOMPurify and Trusted ' +\n          'Types\" section of the README.'\n      );\n    }\n  };\n\n  const _createTrustedHTML = function (html: string): string {\n    _assertNotInTrustedTypesPolicy();\n\n    IN_TRUSTED_TYPES_POLICY++;\n    try {\n      return trustedTypesPolicy.createHTML(html);\n    } finally {\n      IN_TRUSTED_TYPES_POLICY--;\n    }\n  };\n\n  const _createTrustedScriptURL = function (scriptUrl: string): string {\n    _assertNotInTrustedTypesPolicy();\n\n    IN_TRUSTED_TYPES_POLICY++;\n    try {\n      return trustedTypesPolicy.createScriptURL(scriptUrl);\n    } finally {\n      IN_TRUSTED_TYPES_POLICY--;\n    }\n  };\n\n  // Lazily resolve (and cache) the instance's internal default policy.\n  // Resolution is attempted at most once: a successful `createPolicy` cannot be\n  // repeated (Trusted Types throws on duplicate names), and a failed or\n  // unsupported attempt must not be retried on every parse.\n  const _getDefaultTrustedTypesPolicy = function () {\n    if (!defaultTrustedTypesPolicyResolved) {\n      defaultTrustedTypesPolicy = _createTrustedTypesPolicy(\n        trustedTypes,\n        currentScript\n      );\n      defaultTrustedTypesPolicyResolved = true;\n    }\n\n    return defaultTrustedTypesPolicy;\n  };\n\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName,\n  } = document;\n  const { importNode } = originalDocument;\n\n  let hooks = _createHooksMap();\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported =\n    typeof entries === 'function' &&\n    typeof getParentNode === 'function' &&\n    implementation &&\n    implementation.createHTMLDocument !== undefined;\n\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT,\n  } = EXPRESSIONS;\n\n  let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n    ...TAGS.html,\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.mathMl,\n    ...TAGS.text,\n  ]);\n\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n    ...ATTRS.html,\n    ...ATTRS.svg,\n    ...ATTRS.mathMl,\n    ...ATTRS.xml,\n  ]);\n\n  /*\n   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(\n    create(null, {\n      tagNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      attributeNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      allowCustomizedBuiltInElements: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: false,\n      },\n    })\n  );\n\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n\n  /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n  const EXTRA_ELEMENT_HANDLING = Object.seal(\n    create(null, {\n      tagCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      attributeCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n    })\n  );\n\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n\n  /* Pristine allowlist bindings captured at setConfig() time. On the\n   * persistent-config path sanitize() restores the sets from these before\n   * the per-walk hook clone-guard, so a hook's in-call widening cannot\n   * carry across calls. Null until setConfig() is called; reset by\n   * clearConfig(). */\n  let SET_CONFIG_ALLOWED_TAGS = null;\n  let SET_CONFIG_ALLOWED_ATTR = null;\n\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (\u00A77.3.3)\n   *   - DOM Tree Accessors (\u00A73.1.5)\n   *   - Form Element Parent-Child Relations (\u00A74.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (\u00A74.8.5)\n   *   - HTMLCollection (\u00A74.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES: UseProfilesConfig | false = {};\n\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n    'annotation-xml',\n    'audio',\n    'colgroup',\n    'desc',\n    'foreignobject',\n    'head',\n    'iframe',\n    'math',\n    'mi',\n    'mn',\n    'mo',\n    'ms',\n    'mtext',\n    'noembed',\n    'noframes',\n    'noscript',\n    'plaintext',\n    'script',\n    // <selectedcontent> mirrors the selected <option>'s subtree, cloned by\n    // the UA (customizable <select>) \u2014 including any on* handlers \u2014 and the\n    // engine re-mirrors synchronously whenever a removal changes which\n    // option/selectedcontent is current, even inside DOMPurify's inert\n    // DOMParser document. Hoisting its children on removal re-inserts a fresh\n    // mirror target ahead of the walk, which the engine refills, looping\n    // forever (DoS) and amplifying output. Dropping its content on removal\n    // (rather than hoisting) breaks that cascade; the content is a duplicate\n    // of the option, which is sanitized on its own. See campaign-3 F1/F6.\n    'selectedcontent',\n    'style',\n    'svg',\n    'template',\n    'thead',\n    'title',\n    'video',\n    'xmp',\n  ]);\n\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n    'audio',\n    'video',\n    'img',\n    'source',\n    'image',\n    'track',\n  ]);\n\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n    'alt',\n    'class',\n    'for',\n    'id',\n    'label',\n    'name',\n    'pattern',\n    'placeholder',\n    'role',\n    'summary',\n    'title',\n    'value',\n    'style',\n    'xmlns',\n  ]);\n\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n    {},\n    [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n    stringToString\n  );\n\n  const DEFAULT_MATHML_TEXT_INTEGRATION_POINTS = freeze([\n    'mi',\n    'mo',\n    'mn',\n    'ms',\n    'mtext',\n  ]);\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet(\n    {},\n    DEFAULT_MATHML_TEXT_INTEGRATION_POINTS\n  );\n\n  const DEFAULT_HTML_INTEGRATION_POINTS = freeze(['annotation-xml']);\n  let HTML_INTEGRATION_POINTS = addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS);\n\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n    'title',\n    'style',\n    'font',\n    'a',\n    'script',\n  ]);\n\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE: null | DOMParserSupportedType = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc: null | Parameters<typeof addToSet>[2] = null;\n\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG: Config | null = null;\n\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n\n  const formElement = document.createElement('form');\n\n  const isRegexOrFunction = function (\n    testValue: unknown\n  ): testValue is Function | RegExp {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function (cfg: Config = {}): void {\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n\n    PARSER_MEDIA_TYPE =\n      // eslint-disable-next-line unicorn/prefer-includes\n      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n        ? DEFAULT_PARSER_MEDIA_TYPE\n        : cfg.PARSER_MEDIA_TYPE;\n\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc =\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n        ? stringToString\n        : stringToLowerCase;\n\n    /* Set configuration parameters */\n    ALLOWED_TAGS = _resolveSetOption(\n      cfg,\n      'ALLOWED_TAGS',\n      DEFAULT_ALLOWED_TAGS,\n      { transform: transformCaseFunc }\n    );\n    ALLOWED_ATTR = _resolveSetOption(\n      cfg,\n      'ALLOWED_ATTR',\n      DEFAULT_ALLOWED_ATTR,\n      { transform: transformCaseFunc }\n    );\n    ALLOWED_NAMESPACES = _resolveSetOption(\n      cfg,\n      'ALLOWED_NAMESPACES',\n      DEFAULT_ALLOWED_NAMESPACES,\n      { transform: stringToString }\n    );\n    URI_SAFE_ATTRIBUTES = _resolveSetOption(\n      cfg,\n      'ADD_URI_SAFE_ATTR',\n      DEFAULT_URI_SAFE_ATTRIBUTES,\n      { transform: transformCaseFunc, base: DEFAULT_URI_SAFE_ATTRIBUTES }\n    );\n    DATA_URI_TAGS = _resolveSetOption(\n      cfg,\n      'ADD_DATA_URI_TAGS',\n      DEFAULT_DATA_URI_TAGS,\n      { transform: transformCaseFunc, base: DEFAULT_DATA_URI_TAGS }\n    );\n    FORBID_CONTENTS = _resolveSetOption(\n      cfg,\n      'FORBID_CONTENTS',\n      DEFAULT_FORBID_CONTENTS,\n      { transform: transformCaseFunc }\n    );\n    FORBID_TAGS = _resolveSetOption(cfg, 'FORBID_TAGS', clone({}), {\n      transform: transformCaseFunc,\n    });\n    FORBID_ATTR = _resolveSetOption(cfg, 'FORBID_ATTR', clone({}), {\n      transform: transformCaseFunc,\n    });\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n      ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === 'object'\n        ? clone(cfg.USE_PROFILES)\n        : cfg.USE_PROFILES\n      : false;\n\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI = isRegex(cfg.ALLOWED_URI_REGEXP)\n      ? cfg.ALLOWED_URI_REGEXP\n      : EXPRESSIONS.IS_ALLOWED_URI; // Default regexp\n\n    NAMESPACE =\n      typeof cfg.NAMESPACE === 'string' ? cfg.NAMESPACE : HTML_NAMESPACE; // Default HTML namespace\n\n    MATHML_TEXT_INTEGRATION_POINTS = _resolveObjectOption(\n      cfg,\n      'MATHML_TEXT_INTEGRATION_POINTS',\n      () => addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS) // Default built-in map\n    );\n\n    HTML_INTEGRATION_POINTS = _resolveObjectOption(\n      cfg,\n      'HTML_INTEGRATION_POINTS',\n      () => addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS) // Default built-in map\n    );\n\n    const customElementHandling = _resolveObjectOption(\n      cfg,\n      'CUSTOM_ELEMENT_HANDLING',\n      () => create(null)\n    );\n\n    CUSTOM_ELEMENT_HANDLING = create(null);\n\n    if (\n      objectHasOwnProperty(customElementHandling, 'tagNameCheck') &&\n      isRegexOrFunction(customElementHandling.tagNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck; // Default undefined\n    }\n\n    if (\n      objectHasOwnProperty(customElementHandling, 'attributeNameCheck') &&\n      isRegexOrFunction(customElementHandling.attributeNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n        customElementHandling.attributeNameCheck; // Default undefined\n    }\n\n    if (\n      objectHasOwnProperty(\n        customElementHandling,\n        'allowCustomizedBuiltInElements'\n      ) &&\n      typeof customElementHandling.allowCustomizedBuiltInElements === 'boolean'\n    ) {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n        customElementHandling.allowCustomizedBuiltInElements; // Default undefined\n    }\n\n    seal(CUSTOM_ELEMENT_HANDLING);\n\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, TAGS.text);\n      ALLOWED_ATTR = create(null);\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, TAGS.html);\n        addToSet(ALLOWED_ATTR, ATTRS.html);\n      }\n\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, TAGS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n    }\n\n    /* Always reset function-based ADD_TAGS / ADD_ATTR checks to prevent\n     * leaking across calls when switching from function to array config */\n    EXTRA_ELEMENT_HANDLING.tagCheck = null;\n    EXTRA_ELEMENT_HANDLING.attributeCheck = null;\n\n    /* Merge configuration parameters */\n    if (objectHasOwnProperty(cfg, 'ADD_TAGS')) {\n      if (typeof cfg.ADD_TAGS === 'function') {\n        EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n      } else if (arrayIsArray(cfg.ADD_TAGS)) {\n        if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n          ALLOWED_TAGS = clone(ALLOWED_TAGS);\n        }\n\n        addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n      }\n    }\n\n    if (objectHasOwnProperty(cfg, 'ADD_ATTR')) {\n      if (typeof cfg.ADD_ATTR === 'function') {\n        EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n      } else if (arrayIsArray(cfg.ADD_ATTR)) {\n        if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n          ALLOWED_ATTR = clone(ALLOWED_ATTR);\n        }\n\n        addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n      }\n    }\n\n    if (\n      objectHasOwnProperty(cfg, 'ADD_FORBID_CONTENTS') &&\n      arrayIsArray(cfg.ADD_FORBID_CONTENTS)\n    ) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n\n      addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n    }\n\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n\n    // Re-derive the active Trusted Types policy from this configuration on\n    // every parse. The active policy must never be sticky closure state that\n    // outlives the config that set it: a caller-supplied policy left in place\n    // after `clearConfig()` \u2014 or after a later call that supplied none, or\n    // `TRUSTED_TYPES_POLICY: null` \u2014 could sign a subsequent \"default\"\n    // `RETURN_TRUSTED_TYPE` result with a foreign, possibly unsafe policy.\n    // See GHSA-vxr8-fq34-vvx9.\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate(\n          'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n        );\n      }\n\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate(\n          'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n        );\n      }\n\n      // A caller-supplied policy applies to this configuration only.\n      const previousTrustedTypesPolicy = trustedTypesPolicy;\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n      // Sign local variables required by `sanitize`. If the supplied policy's\n      // `createHTML` is circular (i.e. it calls `DOMPurify.sanitize`), this\n      // throws via the re-entrancy guard. Restore the previous policy first so\n      // the instance is not left in a poisoned state. See #1422.\n      try {\n        emptyHTML = _createTrustedHTML('');\n      } catch (error) {\n        trustedTypesPolicy = previousTrustedTypesPolicy;\n        throw error;\n      }\n    } else if (cfg.TRUSTED_TYPES_POLICY === null) {\n      // Explicit opt-out for this call: perform no Trusted Types signing and\n      // create nothing (so a strict `trusted-types` CSP that disallows a\n      // `dompurify` policy can still call `sanitize` from inside its own\n      // policy \u2014 see #1422). Resetting to `undefined` rather than a sticky\n      // `null` also drops any previously retained caller policy, so it cannot\n      // resurface on a later call, while still allowing the next config-less\n      // call to restore the internal default policy. See GHSA-vxr8-fq34-vvx9.\n      trustedTypesPolicy = undefined;\n      emptyHTML = '';\n    } else {\n      // No policy supplied: keep the currently active policy if one is set \u2014 a\n      // previously supplied policy is intentionally sticky across config-less\n      // calls \u2014 otherwise fall back to the instance's own internal policy,\n      // created at most once. (A policy supplied for a *single* call still\n      // lingers by design; what must not linger is a policy whose configuration\n      // has been torn down via `clearConfig()`, which restores the default.)\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _getDefaultTrustedTypesPolicy();\n      }\n\n      // Sign internal variables only when a policy is active. A falsy policy\n      // (Trusted Types unsupported, creation failed, or an explicit opt-out)\n      // leaves `emptyHTML` as a plain string, so we never call `.createHTML` on\n      // a non-policy and throw. See #1422.\n      if (trustedTypesPolicy && typeof emptyHTML === 'string') {\n        emptyHTML = _createTrustedHTML('');\n      }\n    }\n\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n\n    CONFIG = cfg;\n  };\n\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.svgDisallowed,\n  ]);\n  const ALL_MATHML_TAGS = addToSet({}, [\n    ...TAGS.mathMl,\n    ...TAGS.mathMlDisallowed,\n  ]);\n\n  /**\n   * Namespace rules for an element in the SVG namespace.\n   *\n   * @param tagName the element's lowercase tag name\n   * @param parent the (possibly simulated) parent node\n   * @param parentTagName the parent's lowercase tag name\n   * @returns true if a spec-compliant parser could produce this element\n   */\n  const _checkSvgNamespace = function (\n    tagName: string,\n    parent: { namespaceURI?: string },\n    parentTagName: string\n  ): boolean {\n    // The only way to switch from HTML namespace to SVG\n    // is via <svg>. If it happens via any other tag, then\n    // it should be killed.\n    if (parent.namespaceURI === HTML_NAMESPACE) {\n      return tagName === 'svg';\n    }\n\n    // The only way to switch from MathML to SVG is via <svg>\n    // if the parent is either <annotation-xml> or a MathML\n    // text integration point.\n    if (parent.namespaceURI === MATHML_NAMESPACE) {\n      return (\n        tagName === 'svg' &&\n        (parentTagName === 'annotation-xml' ||\n          MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n      );\n    }\n\n    // We only allow elements that are defined in SVG\n    // spec. All others are disallowed in SVG namespace.\n    return Boolean(ALL_SVG_TAGS[tagName]);\n  };\n\n  /**\n   * Namespace rules for an element in the MathML namespace.\n   *\n   * @param tagName the element's lowercase tag name\n   * @param parent the (possibly simulated) parent node\n   * @param parentTagName the parent's lowercase tag name\n   * @returns true if a spec-compliant parser could produce this element\n   */\n  const _checkMathMlNamespace = function (\n    tagName: string,\n    parent: { namespaceURI?: string },\n    parentTagName: string\n  ): boolean {\n    // The only way to switch from HTML namespace to MathML\n    // is via <math>. If it happens via any other tag, then\n    // it should be killed.\n    if (parent.namespaceURI === HTML_NAMESPACE) {\n      return tagName === 'math';\n    }\n\n    // The only way to switch from SVG to MathML is via\n    // <math> and HTML integration points\n    if (parent.namespaceURI === SVG_NAMESPACE) {\n      return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n    }\n\n    // We only allow elements that are defined in MathML\n    // spec. All others are disallowed in MathML namespace.\n    return Boolean(ALL_MATHML_TAGS[tagName]);\n  };\n\n  /**\n   * Namespace rules for an element in the HTML namespace.\n   *\n   * @param tagName the element's lowercase tag name\n   * @param parent the (possibly simulated) parent node\n   * @param parentTagName the parent's lowercase tag name\n   * @returns true if a spec-compliant parser could produce this element\n   */\n  const _checkHtmlNamespace = function (\n    tagName: string,\n    parent: { namespaceURI?: string },\n    parentTagName: string\n  ): boolean {\n    // The only way to switch from SVG to HTML is via\n    // HTML integration points, and from MathML to HTML\n    // is via MathML text integration points\n    if (\n      parent.namespaceURI === SVG_NAMESPACE &&\n      !HTML_INTEGRATION_POINTS[parentTagName]\n    ) {\n      return false;\n    }\n\n    if (\n      parent.namespaceURI === MATHML_NAMESPACE &&\n      !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n    ) {\n      return false;\n    }\n\n    // We disallow tags that are specific for MathML\n    // or SVG and should never appear in HTML namespace\n    return (\n      !ALL_MATHML_TAGS[tagName] &&\n      (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n    );\n  };\n\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function (element: Element): boolean {\n    let parent = getParentNode(element);\n\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template',\n      };\n    }\n\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      return _checkSvgNamespace(tagName, parent, parentTagName);\n    }\n\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      return _checkMathMlNamespace(tagName, parent, parentTagName);\n    }\n\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      return _checkHtmlNamespace(tagName, parent, parentTagName);\n    }\n\n    // For XHTML and XML documents that support custom namespaces\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      ALLOWED_NAMESPACES[element.namespaceURI]\n    ) {\n      return true;\n    }\n\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function (node: Node): void {\n    arrayPush(DOMPurify.removed, { element: node });\n\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      /* The normal detach failed \u2014 this is reached for a parentless node\n         (getParentNode() is null, so .removeChild throws). Element.prototype\n         .remove() is itself a spec no-op on a parentless node, so a recorded\n         \"removal\" would otherwise hand the caller back an intact,\n         payload-bearing node (e.g. a detached IN_PLACE root the mXSS canary or\n         the style-with-element-child rule decided to kill). Fail closed by\n         throwing \u2014 exactly as a clobbered root does at the IN_PLACE entry \u2014\n         rather than trying to \"neutralize\" the node via its own methods.\n         Neutralizing would mean calling getAttributeNames()/removeAttribute()\n         on the node, both of which a <form> root can clobber via a named child\n         (and _isClobbered does not even probe getAttributeNames), so the\n         neutralize step could itself be silently defeated, leaving the payload\n         intact. A throw touches only the cached, clobber-safe remove() and\n         getParentNode(). Generalizes GHSA-r47g-fvhr-h676 (clobbered-form root)\n         to every root-kill reason. REPORT-3.\n\n         This lives inside the catch, so it never fires for a normally-removed\n         in-tree node: those have a parent, removeChild() succeeds, and the\n         catch is not entered. Only a kept (parentless) root reaches here. */\n      remove(node);\n\n      if (!getParentNode(node)) {\n        throw typeErrorCreate(\n          'a node selected for removal could not be detached from its tree ' +\n            'and cannot be safely returned; refusing to sanitize in place'\n        );\n      }\n    }\n  };\n\n  /**\n   * _stripAttributeNode\n   *\n   * Remove a single Attr node case/namespace-exactly on an attribute-teardown\n   * path. Name-based removeAttribute() ASCII-lowercases its lookup key for an\n   * HTML element in an HTML document and so silently misses a case-preserved\n   * handler (e.g. `ONERROR` off an XML/XHTML import) - the same defect\n   * _removeAttribute() was fixed for, which a name-based call would reintroduce\n   * on these IN_PLACE teardown paths. Unlike _removeAttribute this does not\n   * record into DOMPurify.removed: the neutralize passes intentionally do not\n   * book-keep. A clobbered/detached node falls back to best-effort name-based\n   * removal.\n   *\n   * @param element the element to strip the attribute from\n   * @param attribute the Attr node to remove\n   * @param name the attribute's name, for the fallback path\n   */\n  const _stripAttributeNode = function (\n    element: Element,\n    attribute: Attr,\n    name: string\n  ): void {\n    try {\n      removeAttributeNode(element, attribute);\n    } catch (_) {\n      try {\n        element.removeAttribute(name);\n      } catch (_) {}\n    }\n  };\n\n  /**\n   * _neutralizeRoot\n   *\n   * Fail-closed teardown of an in-place root after the sanitize walk aborts\n   * (campaign-3 F2). An internal throw mid-walk \u2014 e.g. a page-registered\n   * custom element's reaction detaches a node so `_forceRemove`'s deliberate\n   * parentless guard throws, or any other re-entrant engine mutation \u2014 would\n   * otherwise leave the caller's *live* tree half-sanitized, with everything\n   * after the abort point still carrying its handlers. There is no safe way\n   * to resume the walk (the tree mutated under us), so we strip the root bare:\n   * remove every child and every attribute, then let the caller's catch see\n   * the original error. Clobber-safe (cached `remove`/`childNodes`/`attributes`\n   * getters; the root was already clobber-pre-flighted at the IN_PLACE entry).\n   *\n   * @param root the in-place root to empty\n   */\n  const _neutralizeRoot = function (root: Node): void {\n    /* Strip every disallowed attribute (on* handlers included) off the whole\n       subtree BEFORE detaching anything. Detaching first would hand back\n       handler-bearing originals (e.g. an already-loading `<img onerror>`)\n       whose queued resource event still fires in page scope after we throw.\n       Clobber-safe reads; a doomed clobbered node's own attributes are\n       irrelevant while its non-clobbered descendants are reached and scrubbed. */\n    _neutralizeSubtree(root);\n\n    const childNodes = getChildNodes(root);\n    if (childNodes) {\n      const snapshot: Node[] = [];\n      arrayForEach(childNodes, (child) => {\n        arrayPush(snapshot, child);\n      });\n      arrayForEach(snapshot, (child) => {\n        try {\n          remove(child);\n        } catch (_) {\n          /* Best-effort teardown; a still-attached child is handled below */\n        }\n      });\n    }\n\n    const attributes = getAttributes(root);\n    if (attributes) {\n      for (let i = attributes.length - 1; i >= 0; --i) {\n        const attribute = attributes[i];\n        const name = attribute && attribute.name;\n        if (typeof name === 'string') {\n          _stripAttributeNode(root as Element, attribute, name);\n        }\n      }\n    }\n  };\n\n  /**\n   * _removeAttribute\n   *\n   * Name-based getAttributeNode()/removeAttribute() ASCII-lowercase their\n   * lookup key for HTML elements in an HTML document, so they silently miss an\n   * attribute whose stored qualified name still contains uppercase ASCII\n   * letters. That happens when the node came from a case-preserving source\n   * (an XML/XHTML document imported via importNode(), or createAttributeNS()),\n   * where e.g. `ONERROR` survives the walk: the policy check lowercases to\n   * `onerror` and rejects it, but `removeAttribute('ONERROR')` looks up\n   * `onerror` and finds nothing. Remove the exact Attr node instead, which is\n   * case- and namespace-exact, and fall back to name-based removal only when\n   * the caller could not supply the node.\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   * @param attr the exact Attr node to remove, when the caller has it\n   */\n  const _removeAttribute = function (\n    name: string,\n    element: Element,\n    attr?: Attr | null\n  ): void {\n    if (!attr) {\n      try {\n        attr = element.getAttributeNode(name);\n      } catch (_) {\n        attr = null;\n      }\n    }\n\n    arrayPush(DOMPurify.removed, {\n      attribute: attr || null,\n      from: element,\n    });\n\n    try {\n      if (attr) {\n        removeAttributeNode(element, attr);\n      } else {\n        element.removeAttribute(name);\n      }\n    } catch (_) {\n      /* Clobbered or already-detached node - best-effort fall back to a\n         name-based removal so the \"is\" handling below still runs. Note this\n         fallback ASCII-lowercases its lookup key in an HTML document and so\n         cannot reach a case-preserved attribute name; the cached\n         removeAttributeNode() above is what removes those, and a clobbered\n         form is already removed wholesale by _isClobbered() before reaching\n         here. */\n      try {\n        element.removeAttribute(name);\n      } catch (_) {}\n    }\n\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n\n  /**\n   * _stripDisallowedAttributes\n   *\n   * Removes every attribute the active configuration does not allow from a\n   * single element, using the same allowlist as the main attribute pass (so\n   * `on*` handlers go, but no `/^on/` blocklist is introduced). Used only to\n   * neutralise nodes that are being discarded from an in-place tree.\n   *\n   * @param element the element to strip\n   */\n  const _stripDisallowedAttributes = function (element: Element): void {\n    const attributes = getAttributes(element);\n    if (!attributes) {\n      return;\n    }\n\n    for (let i = attributes.length - 1; i >= 0; --i) {\n      const attribute = attributes[i];\n      const name = attribute && attribute.name;\n      if (typeof name !== 'string' || ALLOWED_ATTR[transformCaseFunc(name)]) {\n        continue;\n      }\n\n      _stripAttributeNode(element, attribute, name);\n    }\n  };\n\n  /**\n   * _neutralizeSubtree\n   *\n   * Completes the audit-5 F1 fix across every removal path. The KEEP_CONTENT\n   * move-hoist neutralises only disallowed-tag removals; clobber, mXSS-canary,\n   * namespace, comment, processing-instruction and KEEP_CONTENT:false removals\n   * all drop their subtree wholesale via `_forceRemove`. On the IN_PLACE path\n   * those dropped nodes are detached from the caller's LIVE tree but a\n   * handler-bearing original among them (an `<img onerror>`/`<video>` that was\n   * loading) keeps its queued resource event, which fires in page scope after\n   * sanitize returns. This walks a removed subtree and strips every attribute\n   * the active configuration does not allow \u2014 so `on*` handlers are cancelled\n   * through the SAME allowlist that governs kept nodes, not a separate `/^on/`\n   * blocklist. Run synchronously before sanitize returns, i.e. before any\n   * queued event can fire. Hook-free by design: these nodes leave the output,\n   * so firing attribute hooks for them would be surprising. Clobber-safe reads;\n   * a doomed clobbered node may shadow `removeAttribute` (its own attributes are\n   * irrelevant \u2014 it is discarded \u2014 while its non-clobbered descendants, e.g.\n   * the `<img>`, are reached and scrubbed).\n   *\n   * @param root the root of a removed subtree to neutralise\n   */\n  const _neutralizeSubtree = function (root: Node): void {\n    const stack: Node[] = [root];\n\n    while (stack.length > 0) {\n      const node = stack.pop();\n      const nodeType = _readNodeType(node);\n\n      if (nodeType === NODE_TYPE.element) {\n        _stripDisallowedAttributes(node as Element);\n      }\n\n      const childNodes = getChildNodes(node);\n      if (childNodes) {\n        for (let i = childNodes.length - 1; i >= 0; --i) {\n          stack.push(childNodes[i]);\n        }\n      }\n    }\n  };\n\n  /**\n   * _neutralizePatchLinkage\n   *\n   * IN_PLACE entry pre-pass (declarative-partial-updates / streaming\n   * hardening, https://github.com/WICG/declarative-partial-updates).\n   *\n   * The main walk strips patch linkage (`for`/`patchsrc`) and removes range\n   * markers (PIs / markup comments) node-by-node, in document order, AS it\n   * reaches each node. On a live in-place root that leaves a window: from the\n   * moment the root is connected until the walk arrives at a given node, that\n   * node's linkage is live. A patch applied on connection/stream can fire as\n   * a microtask during the walk and inject or teleport an unsanitized DOM\n   * range into a region the iterator has already passed and will not revisit,\n   * so the post-return \"tree is sanitized\" contract is violated. Sweep the\n   * whole tree once up front and sever every linkage before the walk begins,\n   * closing that window.\n   *\n   * This CANNOT undo a patch that already fired before sanitize ran \u2014 that is\n   * the irreducible \"do not IN_PLACE a live-connected attacker tree\" caveat \u2014\n   * but it closes everything from sanitize-start onward. Gated on SAFE_FOR_XML\n   * to group with the rest of the declarative-partial-updates handling and\n   * stay overridable, consistent with the codebase.\n   *\n   * Clobber-safe traversal (cached childNodes getter); per-node try/catch so a\n   * clobbered root cannot defeat the sweep of its non-clobbered descendants.\n   *\n   * NOTE (pending real-Chrome confirmation, see test/declarative-patch-probe\n   * .html Q1): this mirrors the existing policy of keeping `for` on\n   * <label>/<output>. If the shipping feature can drive a patch through a\n   * surviving `for`-on-label/output + `id` pair, this pre-pass and the\n   * attribute check at _isBasicCustomElement's caller must additionally drop\n   * that pair on the IN_PLACE path. Left as-is until the taxonomy is verified.\n   *\n   * @param root the in-place root to sweep\n   */\n  /**\n   * Central policy for declarative-partial-updates patch-linkage attributes,\n   * shared by the _neutralizePatchLinkage pre-pass and _isValidAttribute so\n   * the two sites cannot drift: `patchsrc` always links, `for` links\n   * everywhere except on <label>/<output>, and the whole policy is gated on\n   * SAFE_FOR_XML (see the rationale block in _isValidAttribute).\n   *\n   * @param lcName the transformCaseFunc'd attribute name\n   * @param lcTag the transformCaseFunc'd tag name of the carrying element\n   * @return true if the attribute is patch linkage and must be dropped\n   */\n  const _isPatchLinkageAttribute = function (\n    lcName: string,\n    lcTag: string\n  ): boolean {\n    if (!SAFE_FOR_XML) {\n      return false;\n    }\n\n    if (lcName === 'patchsrc') {\n      return true;\n    }\n\n    return lcName === 'for' && lcTag !== 'label' && lcTag !== 'output';\n  };\n\n  const _neutralizePatchLinkage = function (root: Node): void {\n    if (!SAFE_FOR_XML) {\n      return;\n    }\n\n    const stack: Node[] = [root];\n    while (stack.length > 0) {\n      const node = stack.pop();\n      const nodeType = _readNodeType(node);\n\n      /* Remove range markers (the target side of a patch linkage): every\n         processing instruction, and any markup-bearing comment. */\n      if (\n        nodeType === NODE_TYPE.processingInstruction ||\n        (nodeType === NODE_TYPE.comment &&\n          regExpTest(EXPRESSIONS.COMMENT_MARKUP_PROBE, (node as any).data))\n      ) {\n        try {\n          remove(node);\n        } catch (_) {\n          /* Best-effort */\n        }\n\n        continue;\n      }\n\n      /* Strip patch-source attributes (the source side) off elements. */\n      if (nodeType === NODE_TYPE.element) {\n        const element = node as Element;\n        const lcTag = transformCaseFunc(_readNodeName(node));\n        try {\n          if (element.hasAttribute && element.hasAttribute('patchsrc')) {\n            element.removeAttribute('patchsrc');\n          }\n\n          if (\n            element.hasAttribute &&\n            element.hasAttribute('for') &&\n            _isPatchLinkageAttribute('for', lcTag)\n          ) {\n            element.removeAttribute('for');\n          }\n        } catch (_) {\n          /* Clobbered removeAttribute/hasAttribute on a doomed node \u2014 ignore */\n        }\n      }\n\n      const childNodes = getChildNodes(node);\n      if (childNodes) {\n        for (let i = childNodes.length - 1; i >= 0; --i) {\n          stack.push(childNodes[i]);\n        }\n      }\n    }\n  };\n\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function (dirty: string): Document {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      NAMESPACE === HTML_NAMESPACE\n    ) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty =\n        '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n        dirty +\n        '</body></html>';\n    }\n\n    const dirtyPayload = trustedTypesPolicy ? _createTrustedHTML(dirty) : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT\n          ? emptyHTML\n          : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n\n    const body = doc.body || doc.documentElement;\n\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(\n        document.createTextNode(leadingWhitespace),\n        body.childNodes[0] || null\n      );\n    }\n\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(\n        doc,\n        WHOLE_DOCUMENT ? 'html' : 'body'\n      )[0];\n    }\n\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function (root: Node): NodeIterator {\n    /* Read ownerDocument through the cached Node.prototype getter, never the\n       direct property. HTMLFormElement has [LegacyOverrideBuiltIns], so a\n       clobbering child (<input name=\"ownerDocument\"> or a form-associated\n       external input) shadows the prototype getter and makes a direct read\n       return that <input>. createNodeIterator.call(<input>, ...) then throws\n       \"Illegal invocation\", and on the IN_PLACE path that throw lands before\n       the walk's fail-closed barrier - leaving the caller's live tree, with\n       any already-armed handler in it, un-neutralized. The cached getter\n       returns the real Document regardless of the clobber. */\n    const doc = getOwnerDocument ? getOwnerDocument(root) : root.ownerDocument;\n    return createNodeIterator.call(\n      doc || root,\n      root,\n      // eslint-disable-next-line no-bitwise\n      NodeFilter.SHOW_ELEMENT |\n        NodeFilter.SHOW_COMMENT |\n        NodeFilter.SHOW_TEXT |\n        NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n        NodeFilter.SHOW_CDATA_SECTION,\n      null\n    );\n  };\n\n  /**\n   * Replace template expression syntax (mustache, ERB, template\n   * literal) with a space; shared by all SAFE_FOR_TEMPLATES scrub\n   * sites. Order matters: mustache, then ERB, then template literal.\n   *\n   * @param value the string to scrub\n   * @returns the scrubbed string\n   */\n  const _stripTemplateExpressions = function (value: string): string {\n    value = stringReplace(value, MUSTACHE_EXPR, ' ');\n    value = stringReplace(value, ERB_EXPR, ' ');\n    value = stringReplace(value, TMPLIT_EXPR, ' ');\n    return value;\n  };\n\n  /**\n   * Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the\n   * character data of an element subtree. Used as the final safety net for\n   * SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions\n   * which only form after text-node normalization (e.g. fragments split across\n   * stripped elements) cannot survive into a template-evaluating framework.\n   *\n   * Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`\n   * in place rather than round-tripping through innerHTML. This preserves\n   * descendant node references (important for IN_PLACE callers), avoids a\n   * serialize/reparse cycle, and reads literal character data \u2014 which means\n   * `<%...%>` in text content matches the ERB regex against its real bytes\n   * instead of the HTML-entity-escaped form innerHTML would produce.\n   *\n   * Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for\n   * attributes is performed during the per-node `_sanitizeAttributes` pass.\n   *\n   * @param node The root element whose character data should be scrubbed.\n   */\n  const _scrubTemplateExpressions = function (node: Element): void {\n    node.normalize();\n    /* Clobber-safe ownerDocument read, same reasoning as _createNodeIterator:\n       under SAFE_FOR_TEMPLATES this runs on the live IN_PLACE root, which may\n       carry a form-named-getter override of ownerDocument. */\n    const doc = getOwnerDocument ? getOwnerDocument(node) : node.ownerDocument;\n    const walker = createNodeIterator.call(\n      doc || node,\n      node,\n      // eslint-disable-next-line no-bitwise\n      NodeFilter.SHOW_TEXT |\n        NodeFilter.SHOW_COMMENT |\n        NodeFilter.SHOW_CDATA_SECTION |\n        NodeFilter.SHOW_PROCESSING_INSTRUCTION,\n      null\n    );\n\n    let currentNode = walker.nextNode() as CharacterData | null;\n    while (currentNode) {\n      currentNode.data = _stripTemplateExpressions(currentNode.data);\n      currentNode = walker.nextNode() as CharacterData | null;\n    }\n\n    // NodeIterator does not descend into <template>.content per the DOM spec,\n    // so we must explicitly recurse into each template's content fragment,\n    // mirroring the approach used by _sanitizeShadowDOM.\n    const templates = node.querySelectorAll?.('template');\n    if (templates) {\n      arrayForEach(templates, (tmpl: HTMLTemplateElement) => {\n        if (_isDocumentFragment(tmpl.content)) {\n          _scrubTemplateExpressions(tmpl.content as unknown as Element);\n        }\n      });\n    }\n  };\n\n  /**\n   * _isClobbered\n   *\n   * Detect DOM-clobbering on HTMLFormElement nodes. Form is the only HTML\n   * interface with [LegacyOverrideBuiltIns]; a descendant element with a\n   * `name` attribute matching a prototype property shadows that property\n   * on direct reads. We use this check at the IN_PLACE entry-point and\n   * during attribute sanitization to refuse clobbered forms.\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function (element: Element): boolean {\n    // Realm-independent tag-name probe. If we can't determine the tag\n    // name at all, we can't reason about clobbering \u2014 return false\n    // (the caller's other defences still apply).\n    const realTagName = getNodeName ? getNodeName(element) : null;\n    if (typeof realTagName !== 'string') {\n      return false;\n    }\n\n    if (transformCaseFunc(realTagName) !== 'form') {\n      return false;\n    }\n\n    return (\n      typeof element.nodeName !== 'string' ||\n      typeof element.textContent !== 'string' ||\n      typeof element.removeChild !== 'function' ||\n      // Realm-safe NamedNodeMap detection: equality against the cached\n      // prototype getter. Clobbered .attributes (e.g. <input name=\"attributes\">)\n      // makes the direct read diverge from the cached read; a clean form\n      // (same-realm OR foreign-realm) has both reads pointing at the same\n      // canonical NamedNodeMap.\n      element.attributes !== getAttributes(element) ||\n      typeof element.removeAttribute !== 'function' ||\n      // A form descendant named \"removeAttributeNode\" or \"getAttributeNode\"\n      // shadows these Attr-node methods via [LegacyOverrideBuiltIns].\n      // _removeAttribute() / _stripAttributeNode() reach for\n      // element.removeAttributeNode(attr) first; when it is shadowed the call\n      // throws and the name-based fallback element.removeAttribute(name)\n      // ASCII-lowercases its lookup key in an HTML document, silently missing\n      // a case-preserved event-handler attribute (e.g. an ONANIMATIONSTART\n      // that reached the sanitizer through an XML/XHTML parse). Flag the form\n      // so it is removed wholesale, exactly as for the other shadowed methods.\n      typeof element.removeAttributeNode !== 'function' ||\n      typeof element.getAttributeNode !== 'function' ||\n      typeof element.setAttribute !== 'function' ||\n      typeof element.namespaceURI !== 'string' ||\n      typeof element.insertBefore !== 'function' ||\n      typeof element.hasChildNodes !== 'function' ||\n      // NodeType clobbering probe. Cached Node.prototype.nodeType getter\n      // returns the integer 1 for any Element regardless of realm; direct\n      // read on a clobbered form (e.g. <input name=\"nodeType\">) returns\n      // the named child element. Cheap addition \u2014 nodeType is read from\n      // an internal slot, no serialization cost \u2014 and removes a residual\n      // clobbering surface used by several mXSS / PI / comment branches\n      // in _sanitizeElements that compare currentNode.nodeType directly.\n      element.nodeType !== getNodeType(element) ||\n      // HTMLFormElement has [LegacyOverrideBuiltIns]: a descendant named\n      // \"childNodes\" shadows the prototype getter. Direct reads of\n      // form.childNodes from a clobbered form return the named child\n      // instead of the real NodeList, so any walk that reads it directly\n      // skips the form's real children. Compare the direct read to the\n      // cached Node.prototype getter \u2014 when the form's named-property\n      // getter intercepts the read, the two values differ and we flag\n      // the form. This catches every clobbering child type (input,\n      // select, etc.) regardless of whether the named child happens to\n      // carry a numeric .length, which a typeof-based probe would miss\n      // (e.g. HTMLSelectElement.length is a defined unsigned-long).\n      element.childNodes !== getChildNodes(element)\n    );\n  };\n\n  /**\n   * Checks whether the given value is a DocumentFragment from any realm.\n   *\n   * The realm-independent replacement reads `nodeType` through the cached\n   * Node.prototype getter and compares to the DOCUMENT_FRAGMENT_NODE\n   * constant (11). nodeType is a numeric value resolved from the node's\n   * internal slot, identical across realms for the same kind of node.\n   *\n   * @param value object to check\n   * @return true if value is a DocumentFragment-shaped node from any realm\n   */\n  const _isDocumentFragment = function (value: unknown): boolean {\n    if (!getNodeType || typeof value !== 'object' || value === null) {\n      return false;\n    }\n\n    try {\n      return getNodeType(value as Node) === NODE_TYPE.documentFragment;\n    } catch (_) {\n      return false;\n    }\n  };\n\n  /**\n   * Checks whether the given object is a DOM node, including nodes that\n   * originate from a different window/realm (e.g. an iframe's\n   * contentDocument). The previous `value instanceof Node` check was\n   * realm-bound: nodes from a different window failed it, causing\n   * sanitize() to silently stringify them and reset IN_PLACE to false,\n   * returning the original node unsanitized. See GHSA-4w3q-35jp-p934.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true if value is a DOM node from any realm\n   */\n  const _isNode = function (value: unknown): value is Node {\n    if (!getNodeType || typeof value !== 'object' || value === null) {\n      return false;\n    }\n\n    try {\n      return typeof getNodeType(value) === 'number';\n    } catch (_) {\n      return false;\n    }\n  };\n\n  function _executeHooks<T extends HookFunction>(\n    hooks: HookFunction[],\n    currentNode: Parameters<T>[0],\n    data: Parameters<T>[1]\n  ): void {\n    if (hooks.length === 0) {\n      return;\n    }\n\n    arrayForEach(hooks, (hook: T) => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n\n  /**\n   * Structural-threat checks that condemn a node regardless of the\n   * allowlists: mXSS via namespace confusion, risky CSS construction,\n   * processing instructions, markup-bearing comments. Pure predicate;\n   * the caller removes. Check order is load-bearing.\n   *\n   * @param currentNode the node to inspect\n   * @param tagName the node's transformCaseFunc'd tag name\n   * @return true if the node must be removed\n   */\n  const _isUnsafeNode = function (currentNode: any, tagName: string): boolean {\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.hasChildNodes() &&\n      !_isNode(currentNode.firstElementChild) &&\n      regExpTest(EXPRESSIONS.ELEMENT_MARKUP_PROBE, currentNode.textContent) &&\n      regExpTest(EXPRESSIONS.ELEMENT_MARKUP_PROBE, currentNode.innerHTML)\n    ) {\n      return true;\n    }\n\n    /* Remove rawtext/literal-text elements whose literal serialization\n       re-opens markup on an HTML reparse - shapes (a) and (b) documented at\n       LITERAL_TEXT_ELEMENTS. Both are invisible to rule 1 above (which\n       self-disables once there is an element child, and whose second probe\n       reads the innerHTML an XML/XHTML document serializes escaped), which\n       is why both probes here read textContent instead. Previously only\n       `style`-with-element-child was covered; every element in\n       LITERAL_TEXT_ELEMENTS shares this literal serialization and is\n       equally affected. */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.namespaceURI === HTML_NAMESPACE &&\n      LITERAL_TEXT_ELEMENTS[tagName] &&\n      (_isNode(currentNode.firstElementChild) ||\n        (typeof currentNode.textContent === 'string' &&\n          regExpTest(LITERAL_TEXT_CLOSE[tagName], currentNode.textContent)))\n    ) {\n      return true;\n    }\n\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.processingInstruction) {\n      return true;\n    }\n\n    /* Remove any kind of possibly harmful comments */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.nodeType === NODE_TYPE.comment &&\n      regExpTest(EXPRESSIONS.COMMENT_MARKUP_PROBE, currentNode.data)\n    ) {\n      return true;\n    }\n\n    return false;\n  };\n\n  /**\n   * Evaluate a CUSTOM_ELEMENT_HANDLING check (a RegExp or a predicate\n   * function, per the validation in _parseConfig) against a name.\n   * Additional arguments are forwarded to predicate functions - the\n   * attributeNameCheck predicate receives the tag name as its second\n   * argument. A null/absent check never matches.\n   *\n   * @param check the configured tagNameCheck / attributeNameCheck value\n   * @param name the name to test\n   * @param args extra arguments forwarded to a predicate function\n   * @return true if the check matches the name\n   */\n  const _matchesNameCheck = function (\n    check: unknown,\n    name: string,\n    ...args: unknown[]\n  ): boolean {\n    if (check instanceof RegExp) {\n      return regExpTest(check, name);\n    }\n\n    if (check instanceof Function) {\n      return Boolean(check(name, ...args));\n    }\n\n    return false;\n  };\n\n  /**\n   * Handle a node whose tag is forbidden or not allowlisted: keep\n   * allowed custom elements (false return exits _sanitizeElements\n   * early - the namespace and fallback-tag removal checks are\n   * intentionally skipped for kept custom elements), else hoist\n   * content per KEEP_CONTENT and remove.\n   *\n   * A kept custom element is the ONLY case in which this function\n   * returns false, so the caller uses that return value to run the\n   * afterSanitizeElements hook on the kept element and keep the\n   * element-hook lifecycle consistent with normal allowlisted\n   * elements (GHSA-c2j3-45gr-mqc4).\n   *\n   * @param currentNode the disallowed node\n   * @param tagName the node's transformCaseFunc'd tag name\n   * @return true if the node was removed, false if kept\n   */\n  const _sanitizeDisallowedNode = function (\n    currentNode: any,\n    tagName: string,\n    root: Node\n  ): boolean {\n    /* Check if we have a custom element to handle */\n    if (\n      !FORBID_TAGS[tagName] &&\n      _isBasicCustomElement(tagName) &&\n      _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n    ) {\n      return false;\n    }\n\n    /* Keep content except for bad-listed elements.\n         Use the cached prototype getters exclusively \u2014 the previous code\n         had `|| currentNode.parentNode` / `|| currentNode.childNodes`\n         fallbacks, but the cached getters always return the canonical\n         value (or null for a real parent-less node), so the fallback\n         path was dead in safe cases and a clobbering surface in unsafe\n         ones. Falsy cached results stay falsy; the `if (childNodes &&\n         parentNode)` check already gates correctly. */\n    if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n      const parentNode = getParentNode(currentNode);\n      const childNodes = getChildNodes(currentNode);\n\n      if (childNodes && parentNode) {\n        const childCount = childNodes.length;\n\n        /* Hoist by moving each child up one level rather than deep-cloning\n             it. Moving transfers every descendant exactly once, so a chain of\n             nested disallowed elements costs O(n) instead of the O(n^2) that\n             re-cloning the shrinking subtree at each level produced; it also\n             empties the removed original, so `DOMPurify.removed` no longer\n             pins whole subtrees. Moving preserves the in-place guarantee too:\n             an original carrying already-queued resource events (`<img\n             onerror>`, `<video>`/`<audio>` error, lazy/`onload`, \u2026) is\n             relocated and sanitised rather than left detached but still armed.\n\n             The sole case that must clone is removing the walk root itself.\n             The result is serialised from the root's subtree, so a restrictive\n             ALLOWED_TAGS that strips the root (`body` on the string path) must\n             leave the content inside it, which only cloning does. In IN_PLACE\n             the root is pre-validated as an allowed tag and so is never removed\n             here, so that path always takes the move branch.\n\n             `childNodes` is live; a tail-to-head walk keeps `childNodes[i]`\n             valid whether we move (drops the trailing entry) or clone (leaves\n             the list intact). */\n        for (let i = childCount - 1; i >= 0; --i) {\n          const hoisted =\n            currentNode === root\n              ? cloneNode(childNodes[i], true)\n              : childNodes[i];\n          parentNode.insertBefore(hoisted, getNextSibling(currentNode));\n        }\n      }\n    }\n\n    _forceRemove(currentNode);\n    return true;\n  };\n\n  /**\n   * Fork a hook-mutable allowlist off its shared binding the first time a\n   * (possibly lazily-installed) uponSanitize* hook is about to see it, so the\n   * hook cannot widen the per-instance default or the setConfig binding by\n   * reference and leak past the call. Returns the set unchanged once it is\n   * already call-local, so repeated calls across elements are idempotent.\n   *\n   * @param hookList the uponSanitize* hook array for this event\n   * @param set the current ALLOWED_TAGS / ALLOWED_ATTR binding\n   * @param defaultSet the per-instance DEFAULT_ALLOWED_* constant\n   * @param setConfigSet the captured setConfig() binding, or null\n   * @return a call-local clone if a hook is present and set is still shared,\n   *   else set unchanged\n   */\n  const _forkSharedAllowlist = function <T extends Record<string, any>>(\n    hookList: unknown[],\n    set: T,\n    defaultSet: T,\n    setConfigSet: T | null\n  ): T {\n    if (hookList.length === 0) {\n      return set;\n    }\n\n    return set === defaultSet || set === setConfigSet ? clone(set) : set;\n  };\n\n  /**\n   * Shared guard for a node that a hook has detached from the walk tree,\n   * used after each element-hook site in _sanitizeElements. Detaching is a\n   * long-standing user pattern (issue #469; draw.io-style foreignObject\n   * filtering). Per the cached, unclobberable parentNode getter the node is\n   * genuinely out of the tree, so it can reach neither the serialized\n   * output nor an IN_PLACE live tree; treat it as removed and stop\n   * processing it. Without this guard, the unsafe-node / namespace checks\n   * would call _forceRemove on a parentless node and hit the REPORT-3\n   * fail-closed throw \u2014 which exists for nodes DOMPurify wants gone but\n   * *cannot* detach (clobbered / parentless roots), the opposite of a node\n   * that is already safely gone. The walk root is exempt: a detached\n   * IN_PLACE root is legitimate input and must still be fully sanitized,\n   * and a kill-decision on it must keep hitting the REPORT-3 throw.\n   *\n   * Nodes detached by hooks stay the hook's responsibility for placement:\n   * they are not recorded in DOMPurify.removed, so the post-walk IN_PLACE\n   * pass (which iterates DOMPurify.removed) does not reach them. But a\n   * hook-detached subtree can still hold a queued resource-event handler -\n   * e.g. an <img onload> that began loading when the caller built the live\n   * tree - which fires in page scope after sanitize returns even though the\n   * handler never reached the returned tree. That is the audit-5 F1 hazard,\n   * and the documented node.remove() hook pattern walks straight into it.\n   * So on the IN_PLACE path we neutralize the detached subtree inline,\n   * stripping its non-allow-listed attributes before returning, exactly as\n   * the post-walk pass does for _forceRemove'd subtrees.\n   *\n   * @param currentNode the node a hook may have detached\n   * @param root the current walk root\n   * @return true if the node is detached and now handled, false otherwise\n   */\n  const _handleHookDetachedNode = function (\n    currentNode: Node,\n    root: Node\n  ): boolean {\n    if (currentNode === root || getParentNode(currentNode) !== null) {\n      return false;\n    }\n\n    if (IN_PLACE) {\n      _neutralizeSubtree(currentNode);\n    }\n\n    return true;\n  };\n\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function (currentNode: any, root: Node): boolean {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\n    /* A hook may have detached the node - treat it as removed (see\n       _handleHookDetachedNode for the full rationale). */\n    if (_handleHookDetachedNode(currentNode, root)) {\n      return true;\n    }\n\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(_readNodeName(currentNode));\n\n    /* Close the pre-walk clone-guard's timing gap: an uponSanitizeElement\n       hook may have been installed after that guard sampled the hook arrays\n       (e.g. lazily from beforeSanitizeElements), leaving ALLOWED_TAGS still\n       aliasing a shared binding that a widening hook would mutate by\n       reference. Fork it before exposing it to the hook. */\n    ALLOWED_TAGS = _forkSharedAllowlist(\n      hooks.uponSanitizeElement,\n      ALLOWED_TAGS,\n      DEFAULT_ALLOWED_TAGS,\n      SET_CONFIG_ALLOWED_TAGS\n    );\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS,\n    });\n\n    /* The uponSanitizeElement hook may have detached the node, exactly as\n       above (see _handleHookDetachedNode for the full rationale). */\n    if (_handleHookDetachedNode(currentNode, root)) {\n      return true;\n    }\n\n    /* Remove mXSS vectors, processing instructions and risky comments */\n    if (_isUnsafeNode(currentNode, tagName)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove element if anything forbids its presence */\n    if (\n      FORBID_TAGS[tagName] ||\n      (!(\n        EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function &&\n        EXTRA_ELEMENT_HANDLING.tagCheck(tagName)\n      ) &&\n        !ALLOWED_TAGS[tagName])\n    ) {\n      const removed = _sanitizeDisallowedNode(currentNode, tagName, root);\n\n      /* A false return means the node is a custom element kept via\n         CUSTOM_ELEMENT_HANDLING - the only keep path through\n         _sanitizeDisallowedNode. Run afterSanitizeElements on it so the\n         element-hook lifecycle matches normal allowlisted elements: a\n         security policy applied in this hook (e.g. stripping an attribute\n         from every surviving element) must not silently skip kept custom\n         elements (GHSA-c2j3-45gr-mqc4). This mirrors the normal-element\n         tail below - the hook runs, then the walker's subsequent\n         _sanitizeAttributes pass sanitizes the element's attributes. The\n         deliberately skipped namespace and fallback-tag removal checks stay\n         skipped; they are removal decisions, not the hook contract. */\n      if (removed === false) {\n        _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n        /* The hook may have detached the kept custom element. Same\n           IN_PLACE hazard as the before/upon sites: neutralize the\n           detached subtree before the walker skips past it (see\n           _handleHookDetachedNode). */\n        if (_handleHookDetachedNode(currentNode, root)) {\n          return true;\n        }\n      }\n\n      return removed;\n    }\n\n    /* Check whether element has a valid namespace.\n       Realm-safe check (GHSA-hpcv-96wg-7vj8): use the cached Node.prototype\n       nodeType getter rather than `instanceof Element`, which is realm-\n       bound and short-circuits to false for any node minted in a different\n       realm \u2014 letting a foreign-realm element with a forbidden namespace\n       slip past the namespace check entirely. */\n    const nt = _readNodeType(currentNode);\n    if (nt === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if (\n      (tagName === 'noscript' ||\n        tagName === 'noembed' ||\n        tagName === 'noframes') &&\n      regExpTest(EXPRESSIONS.FALLBACK_TAG_CLOSE, currentNode.innerHTML)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      const content = _stripTemplateExpressions(currentNode.textContent);\n\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n        currentNode.textContent = content;\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n    /* The afterSanitizeElements hook is the documented place for\n       node.remove() policies, and a detach here is invisible to every later\n       pass: the iterator advances past the detached subtree, so its\n       descendants are never visited, and hook-detached nodes are not in\n       DOMPurify.removed, so the post-walk IN_PLACE pass does not reach them\n       either. Apply the same detach-neutralization invariant as the\n       before/upon sites: true (removed) if the hook detached the node. */\n    return _handleHookDetachedNode(currentNode, root);\n  };\n\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function (\n    lcTag: string,\n    lcName: string,\n    value: string\n  ): boolean {\n    /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */\n    if (FORBID_ATTR[lcName]) {\n      return false;\n    }\n\n    /* Reject declarative-partial-updates patch-linkage attributes\n       (https://github.com/WICG/declarative-partial-updates).\n\n       Empirical note (Chrome 150, verified \u2014 see\n       test/declarative-patch-probe-v3.html): expansion is NOT applied after\n       sanitization. For the string path it fires during sanitize()'s own\n       parse, so the walk sees and sanitizes the fully materialized expanded\n       tree \u2014 teleports into MathML/SVG integration points included; a\n       weaponized `<template for>`->`<img onerror>` comes back with the handler\n       stripped. For the IN_PLACE path it fires on connection, before the walk.\n       Either way DOMPurify is NOT blind to the patch.\n\n       This removal is therefore defense-in-depth rather than the sole barrier:\n       it prevents live linkage from surviving into the OUTPUT and re-expanding\n       in the caller's context, and keeps behaviour deterministic if a future\n       engine defers expansion. `for` is legitimate only on <label>/<output>;\n       anywhere else (notably <template for>) it links the element to a patch\n       target and teleports or removes an arbitrary DOM range by id/marker name.\n       `patchsrc` fetches remote markup and is treated as a script-loading\n       mechanism (CSP). Gated on SAFE_FOR_XML so the removal groups with the\n       other structural-threat checks and stays overridable, consistent with\n       the rest of the codebase. PI range markers are already removed by\n       _isUnsafeNode. */\n    if (_isPatchLinkageAttribute(lcName, lcTag)) {\n      return false;\n    }\n\n    /* Make sure attribute cannot clobber */\n    if (\n      SANITIZE_DOM &&\n      (lcName === 'id' || lcName === 'name') &&\n      (value in document || value in formElement)\n    ) {\n      return false;\n    }\n\n    const nameIsPermitted =\n      ALLOWED_ATTR[lcName] ||\n      (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function &&\n        EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag));\n\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR, lcName)) {\n      return true;\n    }\n\n    /* Allow valid aria-* attributes, the value is always URI safe */\n    if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n      return true;\n    }\n\n    /* A name outside the allowlist is acceptable on custom-element terms\n       only. The value checks below are intentionally skipped in that case:\n       if the user supplied a tagNameCheck we also allow derived custom\n       elements using the same test, and attributes passing the configured\n       attributeNameCheck are allowed as custom elements define these at\n       their own discretion. */\n    if (!nameIsPermitted) {\n      return (\n        // Condition a) covers a basically valid custom element tag name whose\n        // tag passes the configured tagNameCheck and whose attribute name\n        // passes the configured attributeNameCheck ...\n        (_isBasicCustomElement(lcTag) &&\n          _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) &&\n          _matchesNameCheck(\n            CUSTOM_ELEMENT_HANDLING.attributeNameCheck,\n            lcName,\n            lcTag\n          )) ||\n        // Condition b) covers an `is` attribute whose value passes the\n        // configured tagNameCheck while customized built-in elements are\n        // allowed.\n        (lcName === 'is' &&\n          CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n          _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value))\n      );\n    }\n\n    /* Check value is safe. First, is attr inert? If so, is safe */\n    if (URI_SAFE_ATTRIBUTES[lcName]) {\n      return true;\n    }\n\n    /* Check no script, data or unknown possibly unsafe URI\n        unless we know URI values are safe for that attribute */\n    if (regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))) {\n      return true;\n    }\n\n    /* Keep image data URIs alive if src/xlink:href is allowed */\n    /* Further prevent gadget XSS for dynamically built script tags */\n    if (\n      (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n      lcTag !== 'script' &&\n      stringIndexOf(value, 'data:') === 0 &&\n      DATA_URI_TAGS[lcTag]\n    ) {\n      return true;\n    }\n\n    /* Allow unknown protocols: This provides support for links that\n        are handled by protocol handlers which may be unknown ahead of\n        time, e.g. fb:, spotify: */\n    if (\n      ALLOW_UNKNOWN_PROTOCOLS &&\n      !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      return true;\n    }\n\n    /* Only an empty (binary) value remains safe at this point;\n       anything else is presumed unsafe, do not add it back */\n    return !value;\n  };\n\n  /* Names the HTML spec reserves from valid-custom-element-name; these must\n   * never be treated as basic custom elements even when a permissive\n   * CUSTOM_ELEMENT_HANDLING.tagNameCheck is configured. */\n  const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [\n    'annotation-xml',\n    'color-profile',\n    'font-face',\n    'font-face-format',\n    'font-face-name',\n    'font-face-src',\n    'font-face-uri',\n    'missing-glyph',\n  ]);\n\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function (tagName: string): boolean {\n    return (\n      !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] &&\n      regExpTest(CUSTOM_ELEMENT, tagName)\n    );\n  };\n\n  /**\n   * Wrap an attribute value in the matching Trusted Types object when\n   * the active policy requires it. Namespaced attributes pass through\n   * unchanged (no TT support yet, see\n   * https://bugs.chromium.org/p/chromium/issues/detail?id=1305293).\n   *\n   * @param lcTag lowercase tag name of the containing element\n   * @param lcName lowercase attribute name\n   * @param namespaceURI the attribute's namespace, if any\n   * @param value the attribute value to wrap\n   * @return the value, wrapped when Trusted Types demand it\n   */\n  const _applyTrustedTypesToAttribute = function (\n    lcTag: string,\n    lcName: string,\n    namespaceURI: string | null,\n    value: string\n  ): string {\n    if (\n      trustedTypesPolicy &&\n      typeof trustedTypes === 'object' &&\n      typeof trustedTypes.getAttributeType === 'function' &&\n      !namespaceURI\n    ) {\n      switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n        case 'TrustedHTML': {\n          return _createTrustedHTML(value);\n        }\n\n        case 'TrustedScriptURL': {\n          return _createTrustedScriptURL(value);\n        }\n\n        default: {\n          break;\n        }\n      }\n    }\n\n    return value;\n  };\n\n  /**\n   * Write a modified attribute value back onto the element. On\n   * success, re-probe for clobbering introduced by the new value and\n   * remove the element when found; otherwise, when this writeback is the\n   * recreate half of the SANITIZE_NAMED_PROPS remove-and-recreate, pop the\n   * removal entry that path recorded so it does not show as removed. On\n   * failure, remove the attribute instead.\n   *\n   * Returns true only on a clean write (the value was set and the new value\n   * introduced no clobbering). The caller uses that, together with its own\n   * knowledge of whether this attribute pushed a DOMPurify.removed record, to\n   * decide whether to pop that record. The pop must happen ONLY for the\n   * named-prop remove-and-recreate; popping on any other value change (trim,\n   * template scrubbing, Trusted Types) would consume an unrelated _forceRemove\n   * subtree-cleanup record and let that detached subtree keep a live event\n   * handler through the IN_PLACE neutralization pass (SO-001).\n   *\n   * @param currentNode the element carrying the attribute\n   * @param name the attribute name as present on the element\n   * @param namespaceURI the attribute's namespace, if any\n   * @param value the new attribute value\n   * @return true if the value was written without introducing clobbering\n   */\n  const _setAttributeValue = function (\n    currentNode: Element,\n    name: string,\n    namespaceURI: string | null,\n    value: string\n  ): boolean {\n    try {\n      if (namespaceURI) {\n        currentNode.setAttributeNS(namespaceURI, name, value);\n      } else {\n        /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n        currentNode.setAttribute(name, value);\n      }\n\n      if (_isClobbered(currentNode)) {\n        _forceRemove(currentNode);\n        return false;\n      }\n\n      return true;\n    } catch (_) {\n      _removeAttribute(name, currentNode);\n      return false;\n    }\n  };\n\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   * @param root the current walk root\n   */\n  // eslint-disable-next-line complexity\n  const _sanitizeAttributes = function (\n    currentNode: Element,\n    root: Node\n  ): void {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\n    /* A hook may have detached the node - the attribute hooks can detach\n       exactly like the element hooks can, and the walker will not revisit\n       the detached subtree. Treat it as removed and, on the IN_PLACE path,\n       neutralize it (see _handleHookDetachedNode for the full rationale). */\n    if (_handleHookDetachedNode(currentNode, root)) {\n      return;\n    }\n\n    const { attributes } = currentNode;\n\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n\n    /* Same lazy-install guard as uponSanitizeElement (see there): fork the\n       attribute allowlist off its shared binding before a hook can see it. */\n    ALLOWED_ATTR = _forkSharedAllowlist(\n      hooks.uponSanitizeAttribute,\n      ALLOWED_ATTR,\n      DEFAULT_ALLOWED_ATTR,\n      SET_CONFIG_ALLOWED_ATTR\n    );\n\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined,\n    };\n    let l = attributes.length;\n    const lcTag = transformCaseFunc(currentNode.nodeName);\n\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const { name, namespaceURI, value: attrValue } = attr;\n      const lcName = transformCaseFunc(name);\n\n      const initValue = attrValue;\n      let value = name === 'value' ? initValue : stringTrim(initValue);\n\n      /* Tracks whether this specific attribute pushed a DOMPurify.removed\n         record that a later _setAttributeValue() writeback is expected to pop\n         back off (the SANITIZE_NAMED_PROPS remove-and-recreate below is the\n         only path that does). A value that merely changed via trim, template\n         scrubbing, or Trusted Types pushes no such record, so its writeback\n         must NOT pop \u2014 otherwise it consumes an unrelated _forceRemove subtree\n         record and that detached subtree escapes the IN_PLACE handler-\n         neutralization pass (SO-001). */\n      let recreatedNamedProp = false;\n\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (\n        SANITIZE_NAMED_PROPS &&\n        (lcName === 'id' || lcName === 'name') &&\n        stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0\n      ) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode, attr);\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n        // This attribute owns the record just pushed; its recreate writeback\n        // is the one allowed to pop it back off.\n        recreatedNamedProp = true;\n      }\n      // Else: already prefixed, leave the attribute alone \u2014 the prefix is\n      // itself the clobbering protection, and re-applying it is incorrect.\n\n      /* Work around a security issue with comments inside attributes */\n      if (\n        SAFE_FOR_XML &&\n        regExpTest(\n          /((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,\n          value\n        )\n      ) {\n        _removeAttribute(name, currentNode, attr);\n        continue;\n      }\n\n      /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n      if (lcName === 'attributename' && stringMatch(value, 'href')) {\n        _removeAttribute(name, currentNode, attr);\n        continue;\n      }\n\n      /* Did the hooks force-keep the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        _removeAttribute(name, currentNode, attr);\n        continue;\n      }\n\n      /* Work around a security issue in jQuery 3.0 */\n      if (\n        !ALLOW_SELF_CLOSE_IN_ATTR &&\n        regExpTest(EXPRESSIONS.SELF_CLOSING_TAG, value)\n      ) {\n        _removeAttribute(name, currentNode, attr);\n        continue;\n      }\n\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        value = _stripTemplateExpressions(value);\n      }\n\n      /* Is `value` valid for this attribute? */\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        _removeAttribute(name, currentNode, attr);\n        continue;\n      }\n\n      /* Handle attributes that require Trusted Types */\n      value = _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value);\n\n      /* Handle invalid data-* attribute set by try-catching it */\n      if (value !== initValue) {\n        const cleanWrite = _setAttributeValue(\n          currentNode,\n          name,\n          namespaceURI,\n          value\n        );\n\n        /* Only the named-prop remove-and-recreate owns a DOMPurify.removed\n           record to pop; a plain trim/template/Trusted-Types writeback owns\n           none, so popping here would drop an unrelated subtree's cleanup\n           record (SO-001). */\n        if (cleanWrite && recreatedNamedProp) {\n          arrayPop(DOMPurify.removed);\n        }\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n\n    /* Same detach re-check as after beforeSanitizeAttributes: this is the\n       last hook that runs for the node, so a detach here would otherwise\n       hand the caller a live, handler-bearing subtree. */\n    _handleHookDetachedNode(currentNode, root);\n  };\n\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function (fragment: DocumentFragment): void {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\n    while ((shadowNode = shadowIterator.nextNode())) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode, fragment);\n\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode, fragment);\n\n      /* Deep shadow DOM detected.\n         Realm-safe check (GHSA-hpcv-96wg-7vj8): use nodeType against the\n         DOCUMENT_FRAGMENT_NODE constant rather than instanceof, so we\n         recurse into <template>.content from foreign realms too. */\n      if (_isDocumentFragment(shadowNode.content)) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n\n      /* An element iterated here may itself host an attached\n         shadow root. The default NodeIterator does not enter shadow\n         trees, so a shadow root nested inside template.content was\n         previously reached by no walk at all (the pre-pass at\n         _sanitizeAttachedShadowRoots descends via childNodes, which\n         doesn't enter template.content; the template-content recursion\n         above iterates the content but never inspected shadowRoot).\n         Walk it explicitly. The nodeType guard avoids reading\n         shadowRoot off text / comment / CDATA / PI nodes that the\n         iterator also surfaces. */\n      if (_readNodeType(shadowNode) === NODE_TYPE.element) {\n        const innerSr = getShadowRoot(shadowNode);\n        if (_isDocumentFragment(innerSr)) {\n          _sanitizeAttachedShadowRoots(innerSr);\n          _sanitizeShadowDOM(innerSr);\n        }\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n\n  /**\n   * _sanitizeAttachedShadowRoots\n   *\n   * Walks `root` and feeds every attached shadow root we encounter into\n   * the existing _sanitizeShadowDOM pipeline. The default node iterator\n   * does not descend into shadow trees, so nodes inside an attached\n   * shadow root would otherwise be skipped entirely.\n   *\n   * Two real input paths put attached shadow roots in front of us:\n   *   1. IN_PLACE on a DOM node that already has shadow roots attached.\n   *   2. DOM-node input where importNode(dirty, true) deep-clones the\n   *      shadow root because it was created with `clonable: true`.\n   *\n   * This pass runs once, up front, so the main iteration loop (and the\n   * existing _sanitizeShadowDOM template-content recursion) stay\n   * untouched \u2014 string-input paths are not affected.\n   *\n   * @param root the subtree root to walk for attached shadow roots\n   */\n  const _sanitizeAttachedShadowRoots = function (root: Node): void {\n    /* Iterative (explicit stack) rather than per-child recursion. DOM APIs\n       impose no depth cap, so an attacker-shaped tree (JSON/CRDT/editor data\n       built straight into the DOM \u2014 the IN_PLACE surface) deeper than the JS\n       call-stack budget would otherwise overflow native recursion here and\n       throw at the IN_PLACE entry pre-pass, before a single node is\n       sanitized, leaving the caller's live tree untouched (fail-open). See\n       campaign-3 F4. A heap stack keeps depth off the call stack.\n\n       Each work item is either a node to descend into, or a deferred\n       `_sanitizeShadowDOM` for an already-walked shadow root. The deferred\n       form preserves the original post-order discipline: a shadow root's\n       nested shadow roots are discovered before the outer shadow is\n       sanitized (which may remove hosts). Pushes are in reverse of the\n       desired processing order (LIFO): template content, then children, then\n       the shadow-sanitize, then the shadow walk \u2014 so the order matches the\n       previous recursion exactly. */\n    const stack: Array<{ node: Node | null; shadow: DocumentFragment | null }> =\n      [{ node: root, shadow: null }];\n\n    while (stack.length > 0) {\n      const item = stack.pop();\n\n      /* Deferred shadow-DOM sanitisation: runs after its subtree was walked. */\n      if (item.shadow) {\n        _sanitizeShadowDOM(item.shadow);\n        continue;\n      }\n\n      const node = item.node;\n      const nodeType = _readNodeType(node);\n      const isElement = nodeType === NODE_TYPE.element;\n\n      /* (pushed last \u2192 processed first) Children, snapshotted in reverse so\n         the first child is processed first. Snapshotting matters because a\n         hook may detach siblings mid-walk. */\n      const childNodes = getChildNodes(node);\n      if (childNodes) {\n        for (let i = childNodes.length - 1; i >= 0; --i) {\n          stack.push({ node: childNodes[i], shadow: null });\n        }\n      }\n\n      /* (pushed before children \u2192 processed after them, matching the old\n         \"template content last\" order) When the node is a <template>,\n         descend into its content. */\n      if (isElement) {\n        const rootName = getNodeName ? getNodeName(node) : null;\n        if (\n          typeof rootName === 'string' &&\n          transformCaseFunc(rootName) === 'template'\n        ) {\n          const content = (node as HTMLTemplateElement).content;\n          if (_isDocumentFragment(content)) {\n            stack.push({ node: content, shadow: null });\n          }\n        }\n      }\n\n      /* Shadow root (processed first): walk its subtree, then sanitise it.\n         Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection\n         rather than `instanceof DocumentFragment`, which is realm-bound and\n         silently skipped foreign-realm shadow roots (e.g.\n         iframe.contentDocument attachShadow). */\n      if (isElement) {\n        const sr = getShadowRoot(node);\n        if (_isDocumentFragment(sr)) {\n          /* Push the deferred sanitise first so it pops after the shadow\n             walk we push next, i.e. nested shadow roots are discovered\n             before this one is sanitised. */\n          stack.push({ node: null, shadow: sr }, { node: sr, shadow: null });\n        }\n      }\n    }\n  };\n\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty, cfg = {}) {\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      dirty = stringifyValue(dirty);\n\n      if (typeof dirty !== 'string') {\n        throw typeErrorCreate('dirty is not a string, aborting');\n      }\n    }\n\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n\n    /* Assign config vars */\n    if (SET_CONFIG) {\n      /* Persistent setConfig() path: _parseConfig is skipped, so the sets are\n       * not re-derived per call. Restore them from the pristine bindings\n       * captured at setConfig() time so a previous call's hook clone (mutated\n       * below) does not carry over. */\n      ALLOWED_TAGS = SET_CONFIG_ALLOWED_TAGS;\n      ALLOWED_ATTR = SET_CONFIG_ALLOWED_ATTR;\n    } else {\n      _parseConfig(cfg);\n    }\n\n    /* Clone the hook-mutable allowlists before the walk whenever an\n     * uponSanitize* hook is registered. The hook event exposes ALLOWED_TAGS\n     * and ALLOWED_ATTR by reference (as allowedTags / allowedAttributes), so\n     * a hook that widens them would otherwise mutate the shared set\n     * permanently: across later calls and across every element. Cloning per\n     * walk keeps documented in-call widening working while scoping it to the\n     * call. A single guard for both config paths - the per-call path rebinds\n     * the sets in _parseConfig each call, the persistent path restores them\n     * from the captured bindings just above - so the two cannot diverge. */\n    if (\n      hooks.uponSanitizeElement.length > 0 ||\n      hooks.uponSanitizeAttribute.length > 0\n    ) {\n      ALLOWED_TAGS = clone(ALLOWED_TAGS);\n    }\n\n    if (hooks.uponSanitizeAttribute.length > 0) {\n      ALLOWED_ATTR = clone(ALLOWED_ATTR);\n    }\n\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n\n    /* Resolve IN_PLACE for this call without mutating persistent config.\n       Writing the IN_PLACE closure variable here leaks under setConfig(),\n       where _parseConfig is skipped on later calls: a single string call would\n       disable in-place mode for every subsequent node call, returning a\n       sanitized copy while leaving the caller's node \u2014 which in-place callers\n       keep using and whose return value they ignore \u2014 unsanitized. REPORT-2. */\n    const inPlace = IN_PLACE && typeof dirty !== 'string' && _isNode(dirty);\n\n    if (inPlace) {\n      /* Declarative-partial-updates / streaming pre-pass: sever every patch\n         linkage across the live tree BEFORE the walk, so no patch can fire\n         mid-walk and inject into an already-processed region. Runs first, so\n         it also covers the forbidden/clobbered roots that throw below. */\n      _neutralizePatchLinkage(dirty as Node);\n\n      /* Do some early pre-sanitization to avoid unsafe root nodes.\n         Read nodeName through the cached prototype getter \u2014 a clobbering\n         child named \"nodeName\" on the form root would otherwise shadow\n         the property and let this check skip the root-allowlist\n         validation entirely. */\n      const nn = _readNodeName(dirty as Node);\n      if (typeof nn === 'string') {\n        const tagName = transformCaseFunc(nn);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          /* Fail closed on a live root: neutralize handlers/children before\n             throwing, exactly as the mid-walk abort path does. */\n          _neutralizeRoot(dirty as Node);\n\n          throw typeErrorCreate(\n            'root node is forbidden and cannot be sanitized in-place'\n          );\n        }\n      }\n\n      /* Pre-flight the root through _isClobbered. The iterator-driven\n         removal path can not detach a parent-less root: _forceRemove\n         falls through to Element.prototype.remove(), which per spec\n         is a no-op on a node with no parent. A clobbered root would\n         then survive the main loop with its attributes uninspected,\n         because _sanitizeAttributes early-returns on _isClobbered. The\n         result would be an attacker-controlled form, complete with any\n         event-handler attributes the caller passed in, handed back to\n         the application unsanitized. Refuse to sanitize such a root\n         the same way we refuse a forbidden tag. GHSA-r47g-fvhr-h676. */\n      if (_isClobbered(dirty as Element)) {\n        /* Fail closed on a live clobbered root before throwing.\n           _neutralizeRoot's reads are clobber-safe (cached getters); the\n           form's non-clobbered descendants, e.g. an armed <img>, are scrubbed. */\n        _neutralizeRoot(dirty as Node);\n\n        throw typeErrorCreate(\n          'root node is clobbered and cannot be sanitized in-place'\n        );\n      }\n\n      /* Sanitize attached shadow roots before the main iterator runs.\n         The iterator does not descend into shadow trees. Same fail-closed\n         barrier as the main walk (campaign-3 F2): a custom-element reaction\n         inside a shadow root could abort this pre-pass before the walk runs,\n         which would otherwise leave the entire live tree unsanitized. */\n      try {\n        _sanitizeAttachedShadowRoots(dirty as Node);\n      } catch (error) {\n        _neutralizeRoot(dirty as Node);\n\n        throw error;\n      }\n    } else if (_isNode(dirty)) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (\n        importedNode.nodeType === NODE_TYPE.element &&\n        importedNode.nodeName === 'BODY'\n      ) {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n\n      /* Clonable shadow roots are deep-cloned by importNode(); sanitize\n         them before the main iterator runs, since the iterator does not\n         descend into shadow trees. The walk routes every read through a\n         cached prototype getter so clobbering descendants on a form root\n         cannot hide a shadow host from this pass.\n\n         Traverse from `body`, not `importedNode`: when importedNode is a\n         DocumentFragment, the appendChild() above moves its children into\n         `body` and leaves the fragment empty, so walking importedNode would\n         scan nothing and miss every attached shadow host now under `body`\n         (SO-003). In the BODY/HTML branches `body === importedNode`, so this\n         is equivalent there; in the element branch `body` contains the\n         appended element and its descendants. `body` covers all three. */\n      _sanitizeAttachedShadowRoots(body);\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (\n        !RETURN_DOM &&\n        !SAFE_FOR_TEMPLATES &&\n        !WHOLE_DOCUMENT &&\n        // eslint-disable-next-line unicorn/prefer-includes\n        dirty.indexOf('<') === -1\n      ) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n          ? _createTrustedHTML(dirty)\n          : dirty;\n      }\n\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n\n    /* Get node iterator */\n    const walkRoot: Node = inPlace ? (dirty as Node) : body;\n\n    /* Now start iterating over the created document.\n       The walk runs inside an exception barrier (campaign-3 F2): a re-entrant\n       engine/custom-element mutation can detach a node mid-walk so\n       `_forceRemove`'s parentless guard throws, aborting the loop. Without the\n       barrier the caller's in-place tree would be left half-sanitized with the\n       unvisited tail still armed. _createNodeIterator itself is inside the\n       barrier too: constructing the iterator dereferences the root's document,\n       and any failure there (e.g. an exotic/clobbered root) must still fail\n       closed rather than skip the neutralize. On any throw we fail closed -\n       strip the in-place root bare - then rethrow so the existing throw\n       contract is preserved. (String/DOM-copy paths never return the partial\n       body, so the propagating throw is already fail-closed there.) */\n    try {\n      const nodeIterator = _createNodeIterator(walkRoot);\n      while ((currentNode = nodeIterator.nextNode())) {\n        /* Sanitize tags and elements */\n        _sanitizeElements(currentNode, walkRoot);\n\n        /* Check attributes next */\n        _sanitizeAttributes(currentNode, walkRoot);\n\n        /* Shadow DOM detected, sanitize it.\n           Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection\n           instead of instanceof, so foreign-realm <template>.content is\n           walked correctly. */\n        if (_isDocumentFragment(currentNode.content)) {\n          _sanitizeShadowDOM(currentNode.content);\n        }\n      }\n    } catch (error) {\n      if (inPlace) {\n        _neutralizeRoot(dirty as Node);\n        /* Nodes _forceRemove'd earlier in the aborted walk are already\n           detached from the root, so _neutralizeRoot's subtree pass does not\n           reach them. Defuse them too, mirroring the success-path loop below. */\n        arrayForEach(DOMPurify.removed, (entry) => {\n          if (entry.element) {\n            _neutralizeSubtree(entry.element as Node);\n          }\n        });\n      }\n\n      throw error;\n    }\n\n    /* If we sanitized `dirty` in-place, return it. */\n    if (inPlace) {\n      /* Fail-closed completion of the audit-5 F1 fix: every node removed from\n         the caller's live tree is detached but may still hold a queued\n         resource-event handler that fires in page scope after we return. The\n         move-hoist covers only disallowed-tag KEEP_CONTENT removals; strip the\n         non-allow-listed attributes off every other removed subtree (clobber,\n         mXSS, namespace, comments, KEEP_CONTENT:false, \u2026) so those handlers are\n         cancelled before any event can fire. Runs synchronously, pre-return.\n\n         The same pass also detects the one shape the attribute strip cannot\n         make safe: the in-place ROOT was itself force-removed during the walk\n         (a rawtext root killed by the LITERAL_TEXT_CLOSE probe, a clobbered\n         root, an mXSS-canary root, \u2026). Such a root is detached and, for a\n         rawtext element, still carries a literal `</tag>`-bearing text payload\n         that `_neutralizeSubtree`'s attribute-only strip does not touch, so\n         re-serialising and re-parsing the returned node re-opens the markup.\n         There is no safe node to hand back, so fail closed - identical in\n         spirit to the parentless-root throw in `_forceRemove` and the\n         clobbered-root throw at the IN_PLACE entry. Covers every present and\n         future root-kill reason in one check, on both the attribute and text\n         axes. */\n      let rootWasRemoved = false;\n      arrayForEach(DOMPurify.removed, (entry) => {\n        if (entry.element) {\n          if (entry.element === dirty) {\n            rootWasRemoved = true;\n          }\n\n          _neutralizeSubtree(entry.element as Node);\n        }\n      });\n\n      if (rootWasRemoved) {\n        throw typeErrorCreate(\n          'a node selected for removal could not be safely returned; ' +\n            'refusing to sanitize in place'\n        );\n      }\n\n      if (SAFE_FOR_TEMPLATES) {\n        _scrubTemplateExpressions(dirty as Element);\n      }\n\n      return dirty;\n    }\n\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (SAFE_FOR_TEMPLATES) {\n        _scrubTemplateExpressions(body);\n      }\n\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n\n      return returnNode;\n    }\n\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n    /* Serialize doctype if allowed */\n    if (\n      WHOLE_DOCUMENT &&\n      ALLOWED_TAGS['!doctype'] &&\n      body.ownerDocument &&\n      body.ownerDocument.doctype &&\n      body.ownerDocument.doctype.name &&\n      regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n    ) {\n      serializedHTML =\n        '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      serializedHTML = _stripTemplateExpressions(serializedHTML);\n    }\n\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n      ? _createTrustedHTML(serializedHTML)\n      : serializedHTML;\n  };\n\n  DOMPurify.setConfig = function (cfg = {}) {\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n    SET_CONFIG_ALLOWED_TAGS = ALLOWED_TAGS;\n    SET_CONFIG_ALLOWED_ATTR = ALLOWED_ATTR;\n  };\n\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n    SET_CONFIG_ALLOWED_TAGS = null;\n    SET_CONFIG_ALLOWED_ATTR = null;\n\n    // Drop any caller-supplied Trusted Types policy so it cannot poison later\n    // `RETURN_TRUSTED_TYPE` output. The internal default policy (cached, and\n    // never recreated \u2014 Trusted Types throws on duplicate names) is restored by\n    // the next `_parseConfig`. See GHSA-vxr8-fq34-vvx9.\n    trustedTypesPolicy = defaultTrustedTypesPolicy;\n    emptyHTML = '';\n  };\n\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n\n  DOMPurify.addHook = function (\n    entryPoint: keyof HooksMap,\n    hookFunction: HookFunction\n  ) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n\n    /* Reject unknown entry points. Without this, a non-hook key (e.g.\n     * '__proto__') indexes off the prototype chain rather than a real\n     * hook array, and arrayPush then writes to Object.prototype. Guard\n     * with an own-property check against the known hook names. */\n    if (!objectHasOwnProperty(hooks, entryPoint)) {\n      return;\n    }\n\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n\n  DOMPurify.removeHook = function (\n    entryPoint: keyof HooksMap,\n    hookFunction: HookFunction\n  ) {\n    if (!objectHasOwnProperty(hooks, entryPoint)) {\n      return undefined;\n    }\n\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\n      return index === -1\n        ? undefined\n        : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n\n    return arrayPop(hooks[entryPoint]);\n  };\n\n  DOMPurify.removeHooks = function (entryPoint: keyof HooksMap) {\n    if (!objectHasOwnProperty(hooks, entryPoint)) {\n      return;\n    }\n\n    hooks[entryPoint] = [];\n  };\n\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n\n  return DOMPurify;\n}\n\nexport default createDOMPurify();\n", "'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  check(typeof this == 'object' && this) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n", "'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = function () { /* empty */ }.bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n", "'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n", "'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n", "'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n", "'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n", "'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n", "'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n", "'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n", "'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n  !Symbol.sham &&\n  typeof Symbol.iterator == 'symbol';\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n", "'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n", "'use strict';\nmodule.exports = false;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    globalThis[key] = value;\n  } return value;\n};\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n  version: '3.49.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '\u00A9 2013\u20132025 Denis Pushkarev (zloirock.ru), 2025\u20132026 CoreJS Company (core-js.io). All rights reserved.',\n  license: 'https://github.com/zloirock/core-js/blob/v3.49.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n", "'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n  return store[key] || (store[key] = value || {});\n};\n", "'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n", "'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && function something() { /* empty */ }.name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n", "'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n", "'use strict';\nmodule.exports = {};\n", "'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n", "'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n", "'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  var len = toIntegerOrInfinity(argument);\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n", "'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    if (length === 0) return !IS_INCLUDES && -1;\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n", "'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n", "'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n", "'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = globalThis;\n  } else if (STATIC) {\n    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = globalThis[TARGET] && globalThis[TARGET].prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n", "'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n  return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n  if (userAgentStartsWith('Bun/')) return 'BUN';\n  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n  if (userAgentStartsWith('Deno/')) return 'DENO';\n  if (userAgentStartsWith('Node.js/')) return 'NODE';\n  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n  if (classof(globalThis.process) === 'process') return 'NODE';\n  if (globalThis.window && globalThis.document) return 'BROWSER';\n  return 'REST';\n})();\n", "'use strict';\nvar ENVIRONMENT = require('../internals/environment');\n\nmodule.exports = ENVIRONMENT === 'NODE';\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis;\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n  return isObject(argument) || argument === null;\n};\n", "'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (isPossiblePrototype(argument)) return argument;\n  throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n", "'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    requireObjectCoercible(O);\n    aPossiblePrototype(proto);\n    if (!isObject(O)) return O;\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n", "'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n  if (target && !STATIC) target = target.prototype;\n  if (target && !hasOwn(target, TO_STRING_TAG)) {\n    defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n", "'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineBuiltInAccessor(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n", "'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw new $TypeError('Incorrect invocation');\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, [], argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n", "'use strict';\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a constructor');\n};\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n", "'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n", "'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw new $TypeError('Not enough arguments');\n  return passed;\n};\n", "'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && /applewebkit/i.test(userAgent);\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar set = globalThis.setImmediate;\nvar clear = globalThis.clearImmediate;\nvar process = globalThis.process;\nvar Dispatch = globalThis.Dispatch;\nvar Function = globalThis.Function;\nvar MessageChannel = globalThis.MessageChannel;\nvar String = globalThis.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  $location = globalThis.location;\n});\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar eventListener = function (event) {\n  run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n  // old engines have not location.origin\n  globalThis.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = eventListener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    globalThis.addEventListener &&\n    isCallable(globalThis.postMessage) &&\n    !globalThis.importScripts &&\n    $location && $location.protocol !== 'file:' &&\n    !fails(globalPostMessageDefer)\n  ) {\n    defer = globalPostMessageDefer;\n    globalThis.addEventListener('message', eventListener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar DESCRIPTORS = require('../internals/descriptors');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nmodule.exports = function (name) {\n  if (!DESCRIPTORS) return globalThis[name];\n  var descriptor = getOwnPropertyDescriptor(globalThis, name);\n  return descriptor && descriptor.value;\n};\n", "'use strict';\nvar Queue = function () {\n  this.head = null;\n  this.tail = null;\n};\n\nQueue.prototype = {\n  add: function (item) {\n    var entry = { item: item, next: null };\n    var tail = this.tail;\n    if (tail) tail.next = entry;\n    else this.head = entry;\n    this.tail = entry;\n  },\n  get: function () {\n    var entry = this.head;\n    if (entry) {\n      var next = this.head = entry.next;\n      if (next === null) this.tail = null;\n      return entry.item;\n    }\n  }\n};\n\nmodule.exports = Queue;\n", "'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n", "'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar safeGetBuiltIn = require('../internals/safe-get-built-in');\nvar bind = require('../internals/function-bind-context');\nvar macrotask = require('../internals/task').set;\nvar Queue = require('../internals/queue');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/environment-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/environment-is-webos-webkit');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar MutationObserver = globalThis.MutationObserver || globalThis.WebKitMutationObserver;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar Promise = globalThis.Promise;\nvar microtask = safeGetBuiltIn('queueMicrotask');\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n  var queue = new Queue();\n\n  var flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (fn = queue.get()) try {\n      fn();\n    } catch (error) {\n      if (queue.head) notify();\n      throw error;\n    }\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = bind(promise.then, promise);\n    notify = function () {\n      then(flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessage\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    // `webpack` dev server bug on IE global methods - use bind(fn, global)\n    macrotask = bind(macrotask, globalThis);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n\n  microtask = function (fn) {\n    if (!queue.head) notify();\n    queue.add(fn);\n  };\n}\n\nmodule.exports = microtask;\n", "'use strict';\nmodule.exports = function (a, b) {\n  try {\n    // eslint-disable-next-line no-console -- safe\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  } catch (error) { /* empty */ }\n};\n", "'use strict';\nmodule.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis.Promise;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ENVIRONMENT = require('../internals/environment');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(globalThis.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n  if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n    // Detect correctness of subclassing with @@species support\n    var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n    var FakePromise = function (exec) {\n      exec(function () { /* empty */ }, function () { /* empty */ });\n    };\n    var constructor = promise.constructor = {};\n    constructor[SPECIES] = FakePromise;\n    SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n    if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  } return !GLOBAL_CORE_JS_PROMISE && (ENVIRONMENT === 'BROWSER' || ENVIRONMENT === 'DENO') && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n  CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n  REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n  SUBCLASSING: SUBCLASSING\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aCallable(resolve);\n  this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/environment-is-node');\nvar globalThis = require('../internals/global-this');\nvar path = require('../internals/path');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = globalThis.TypeError;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && globalThis.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n  var value = state.value;\n  var ok = state.state === FULFILLED;\n  var handler = ok ? reaction.ok : reaction.fail;\n  var resolve = reaction.resolve;\n  var reject = reaction.reject;\n  var domain = reaction.domain;\n  var result, then, exited;\n  try {\n    if (handler) {\n      if (!ok) {\n        if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n        state.rejection = HANDLED;\n      }\n      if (handler === true) result = value;\n      else {\n        if (domain) domain.enter();\n        result = handler(value); // can throw\n        if (domain) {\n          domain.exit();\n          exited = true;\n        }\n      }\n      if (result === reaction.promise) {\n        reject(new TypeError('Promise-chain cycle'));\n      } else if (then = isThenable(result)) {\n        call(then, result, resolve, reject);\n      } else resolve(result);\n    } else reject(value);\n  } catch (error) {\n    if (domain && !exited) domain.exit();\n    reject(error);\n  }\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  microtask(function () {\n    var reactions = state.reactions;\n    var reaction;\n    while (reaction = reactions.get()) {\n      callReaction(reaction, state);\n    }\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    globalThis.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = globalThis['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  call(task, globalThis, function () {\n    var promise = state.facade;\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  call(task, globalThis, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw new TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          call(then, value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromisePrototype);\n    aCallable(executor);\n    call(Internal, this);\n    var state = getInternalPromiseState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n\n  PromisePrototype = PromiseConstructor.prototype;\n\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: new Queue(),\n      rejection: false,\n      state: PENDING,\n      value: null\n    });\n  };\n\n  // `Promise.prototype.then` method\n  // https://tc39.es/ecma262/#sec-promise.prototype.then\n  Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n    var state = getInternalPromiseState(this);\n    var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n    state.parent = true;\n    reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n    reaction.fail = isCallable(onRejected) && onRejected;\n    reaction.domain = IS_NODE ? process.domain : undefined;\n    if (state.state === PENDING) state.reactions.add(reaction);\n    else microtask(function () {\n      callReaction(reaction, state);\n    });\n    return reaction.promise;\n  });\n\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalPromiseState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!NATIVE_PROMISE_SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n        var that = this;\n        return new PromiseConstructor(function (resolve, reject) {\n          call(nativeThen, that, resolve, reject);\n        }).then(onFulfilled, onRejected);\n      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromisePrototype);\n    }\n  }\n}\n\n// `Promise` constructor\n// https://tc39.es/ecma262/#sec-promise-executor\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  Promise: PromiseConstructor\n});\n\nPromiseWrapper = path.Promise;\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n", "'use strict';\nmodule.exports = {};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n", "'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_RECORD = !!(options && options.IS_RECORD);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    var $iterator = iterator;\n    iterator = undefined;\n    if ($iterator) iteratorClose($iterator, 'normal');\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_RECORD) {\n    iterator = iterable.iterator;\n  } else if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = IS_RECORD ? iterable.next : iterator.next;\n  while (!(step = call(next, iterator)).done) {\n    // `IteratorValue` errors should propagate without closing the iterator\n    var value = step.value;\n    try {\n      result = callFn(value);\n    } catch (error) {\n      if (iterator) iteratorClose(iterator, 'throw', error);\n      else throw error;\n    }\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n  } return new Result(false);\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  // eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  try {\n    if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  } catch (error) { return false; } // workaround of old WebKit + `eval` bug\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    // eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n", "'use strict';\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n  NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call($promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n  'catch': function (onRejected) {\n    return this.then(undefined, onRejected);\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['catch'];\n  if (NativePromisePrototype['catch'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n  }\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      iterate(iterable, function (promise) {\n        call($promiseResolve, C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  reject: function reject(r) {\n    var capability = newPromiseCapabilityModule.f(this);\n    var capabilityReject = capability.reject;\n    capabilityReject(r);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n  resolve: function resolve(x) {\n    return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n  }\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n", "function asyncGeneratorStep(n, t, e, r, o, a, c) {\n  try {\n    var i = n[a](c),\n      u = i.value;\n  } catch (n) {\n    return void e(n);\n  }\n  i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n  return function () {\n    var t = this,\n      e = arguments;\n    return new Promise(function (r, o) {\n      var a = n.apply(t, e);\n      function _next(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n      }\n      function _throw(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n      }\n      _next(void 0);\n    });\n  };\n}\nexport { _asyncToGenerator as default };", "'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n", "'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n  var re = $RegExp('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n  return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = $RegExp('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') !== null;\n});\n\nmodule.exports = {\n  BROKEN_CARET: BROKEN_CARET,\n  MISSED_STICKY: MISSED_STICKY,\n  UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n", "'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n", "'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n  activeXDocument = null;\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.test('\\n') && re.flags === 's');\n});\n", "'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\n});\n", "'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  call(nativeExec, re1, 'a');\n  call(nativeExec, re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nvar setGroups = function (re, groups) {\n  var object = re.groups = create(null);\n  for (var i = 0; i < groups.length; i++) {\n    var group = groups[i];\n    object[group[0]] = re[group[1]];\n  }\n};\n\nif (PATCH) {\n  patchedExec = function exec(string) {\n    var re = this;\n    var state = getInternalState(re);\n    var str = toString(string);\n    var raw = state.raw;\n    var result, reCopy, lastIndex;\n\n    if (raw) {\n      raw.lastIndex = re.lastIndex;\n      result = call(patchedExec, raw, str);\n      re.lastIndex = raw.lastIndex;\n\n      if (result && state.groups) setGroups(result, state.groups);\n\n      return result;\n    }\n\n    var groups = state.groups;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = call(regexpFlags, re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = replace(flags, 'y', '');\n      if (indexOf(flags, 'g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = stringSlice(str, re.lastIndex);\n      // Support anchored sticky behavior.\n      var prevChar = re.lastIndex > 0 && charAt(str, re.lastIndex - 1);\n      if (re.lastIndex > 0 &&\n        (!re.multiline || re.multiline && prevChar !== '\\n' && prevChar !== '\\r' && prevChar !== '\\u2028' && prevChar !== '\\u2029')) {\n        source = '(?: (?:' + source + '))';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    var match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = str;\n        match[0] = stringSlice(match[0], charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n      call(nativeReplace, match[0], reCopy, function () {\n        for (var i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    if (match && groups) setGroups(match, groups);\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n", "'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegExp methods\n    var O = {};\n    // eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) !== 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      var constructor = {};\n      // eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\n      constructor[SPECIES] = function () { return re; };\n      re = { constructor: constructor, flags: '' };\n      // eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () {\n      execCalled = true;\n      return null;\n    };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };\n        }\n        return { done: true, value: call(nativeMethod, str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n\n    defineBuiltIn(String.prototype, KEY, methods[0]);\n    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n  }\n\n  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length || 1 : 1);\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = globalThis.RegExp;\n\nvar FLAGS_GETTER_IS_CORRECT = !fails(function () {\n  var INDICES_SUPPORT = true;\n  try {\n    RegExp('.', 'd');\n  } catch (error) {\n    INDICES_SUPPORT = false;\n  }\n\n  var O = {};\n  // modern V8 bug\n  var calls = '';\n  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n  var addGetter = function (key, chr) {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty(O, key, { get: function () {\n      calls += chr;\n      return true;\n    } });\n  };\n\n  var pairs = {\n    dotAll: 's',\n    global: 'g',\n    ignoreCase: 'i',\n    multiline: 'm',\n    sticky: 'y'\n  };\n\n  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n  for (var key in pairs) addGetter(key, pairs[key]);\n\n  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n  var result = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call(O);\n\n  return result !== expected || calls !== expected;\n});\n\nmodule.exports = { correct: FLAGS_GETTER_IS_CORRECT };\n", "'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlagsDetection = require('../internals/regexp-flags-detection');\nvar regExpFlagsGetterImplementation = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = regExpFlagsDetection.correct ? function (it) {\n  return it.flags;\n} : function (it) {\n  return (!regExpFlagsDetection.correct && isPrototypeOf(RegExpPrototype, it) && !hasOwn(it, 'flags'))\n    ? call(regExpFlagsGetterImplementation, it)\n    : it.flags;\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (isCallable(exec)) {\n    var result = call(exec, R, S);\n    if (result !== null) anObject(result);\n    return result;\n  }\n  if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n  throw new $TypeError('RegExp#exec called on incompatible receiver');\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = isObject(regexp) ? getMethod(regexp, MATCH) : undefined;\n      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      var flags = toString(getRegExpFlags(rx));\n\n      if (!~stringIndexOf(flags, 'g')) return regExpExec(rx, S);\n\n      var fullUnicode = !!~stringIndexOf(flags, 'u') || !!~stringIndexOf(flags, 'v');\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (charAt(ch, 0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return stringSlice(str, 0, position);\n      case \"'\": return stringSlice(str, tailPos);\n      case '<':\n        capture = namedCaptures[stringSlice(ch, 1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n", "'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = isObject(searchValue) ? getMethod(searchValue, REPLACE) : undefined;\n      return replacer\n        ? call(replacer, searchValue, O, replaceValue)\n        : call(nativeReplace, toString(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (string, replaceValue) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      var functionalReplace = isCallable(replaceValue);\n      if (!functionalReplace) replaceValue = toString(replaceValue);\n      var flags = toString(getRegExpFlags(rx));\n\n      if (\n        typeof replaceValue == 'string' &&\n        !~stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) &&\n        !~stringIndexOf(replaceValue, '$<') &&\n        !~stringIndexOf(flags, 'y')\n      ) {\n        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var global = !!~stringIndexOf(flags, 'g');\n      var fullUnicode;\n      if (global) {\n        fullUnicode = !!~stringIndexOf(flags, 'u') || !!~stringIndexOf(flags, 'v');\n        rx.lastIndex = 0;\n      }\n\n      var results = [];\n      var result;\n      while (true) {\n        result = regExpExec(rx, S);\n        if (result === null) break;\n\n        push(results, result);\n        if (!global) break;\n\n        var matchStr = toString(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = toString(result[0]);\n        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n        var captures = [];\n        var replacement;\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = concat([matched], captures, position, S);\n          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n          replacement = toString(apply(replaceValue, undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n\n      return accumulatedResult + stringSlice(S, nextSourcePosition);\n    }\n  ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n", "'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n", "'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw new $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var search = toString(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    return stringSlice(that, index, index + search.length) === search;\n  }\n});\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n  defineProperty(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n", "'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    }\n\n    return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n", "'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = null;\n    return createIterResultObject(undefined, true);\n  }\n  switch (state.kind) {\n    case 'keys': return createIterResultObject(index, false);\n    case 'values': return createIterResultObject(target[index], false);\n  } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n", "'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n", "'use strict';\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    setToStringTag(CollectionPrototype, COLLECTION_NAME, true);\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };", "'use strict';\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\nvar REDUCE_EMPTY = 'Reduce of empty array with no initial value';\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    aCallable(callbackfn);\n    if (length === 0 && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw new $TypeError(REDUCE_EMPTY);\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/environment-v8-version');\nvar IS_NODE = require('../internals/environment-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var search = toString(searchString);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = that.length;\n    var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n    return slice(that, end - search.length, end) === search;\n  }\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar push = uncurryThis([].push);\nvar stringSlice = uncurryThis(''.slice);\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nvar BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' ||\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  'test'.split(/(?:)/, -1).length !== 4 ||\n  'ab'.split(/(?:ab)*/).length !== 2 ||\n  '.'.split(/(.?)(.?)/).length !== 4 ||\n  // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n  '.'.split(/()()/).length > 1 ||\n  ''.split(/.?/).length;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) {\n    return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n  } : nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = isObject(separator) ? getMethod(separator, SPLIT) : undefined;\n      return splitter\n        ? call(splitter, separator, O, limit)\n        : call(internalSplit, toString(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (string, limit) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (!BUGGY) {\n        var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n        if (res.done) return res.value;\n      }\n\n      var C = speciesConstructor(rx, RegExp);\n      var flags = toString(getRegExpFlags(rx));\n      var unicodeMatching = !!~stringIndexOf(flags, 'u') || !!~stringIndexOf(flags, 'v');\n      if (UNSUPPORTED_Y) {\n        if (!~stringIndexOf(flags, 'g')) flags += 'g';\n      } else if (!~stringIndexOf(flags, 'y')) flags += 'y';\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return regExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          push(A, stringSlice(S, p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            push(A, z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      push(A, stringSlice(S, p));\n      return A;\n    }\n  ];\n}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n", "if performance? and performance.now\n  module.exports = -> performance.now()\nelse if process? and process.hrtime\n  module.exports = -> (getNanoSeconds() - nodeLoadTime) / 1e6\n  hrtime = process.hrtime\n  getNanoSeconds = ->\n    hr = hrtime()\n    hr[0] * 1e9 + hr[1]\n  moduleLoadTime = getNanoSeconds()\n  upTime = process.uptime() * 1e9\n  nodeLoadTime = moduleLoadTime - upTime\nelse if Date.now\n  module.exports = -> Date.now() - loadTime\n  loadTime = Date.now()\nelse\n  module.exports = -> new Date().getTime() - loadTime\n  loadTime = new Date().getTime()\n", "var now = require('performance-now')\n  , root = typeof window === 'undefined' ? global : window\n  , vendors = ['moz', 'webkit']\n  , suffix = 'AnimationFrame'\n  , raf = root['request' + suffix]\n  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n  raf = root[vendors[i] + 'Request' + suffix]\n  caf = root[vendors[i] + 'Cancel' + suffix]\n      || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n  var last = 0\n    , id = 0\n    , queue = []\n    , frameDuration = 1000 / 60\n\n  raf = function(callback) {\n    if(queue.length === 0) {\n      var _now = now()\n        , next = Math.max(0, frameDuration - (_now - last))\n      last = next + _now\n      setTimeout(function() {\n        var cp = queue.slice(0)\n        // Clear queue here to prevent\n        // callbacks from appending listeners\n        // to the current frame's queue\n        queue.length = 0\n        for(var i = 0; i < cp.length; i++) {\n          if(!cp[i].cancelled) {\n            try{\n              cp[i].callback(last)\n            } catch(e) {\n              setTimeout(function() { throw e }, 0)\n            }\n          }\n        }\n      }, Math.round(next))\n    }\n    queue.push({\n      handle: ++id,\n      callback: callback,\n      cancelled: false\n    })\n    return id\n  }\n\n  caf = function(handle) {\n    for(var i = 0; i < queue.length; i++) {\n      if(queue[i].handle === handle) {\n        queue[i].cancelled = true\n      }\n    }\n  }\n}\n\nmodule.exports = function(fn) {\n  // Wrap in a new function to prevent\n  // `cancel` potentially being assigned\n  // to the native rAF function\n  return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n  caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n  if (!object) {\n    object = root;\n  }\n  object.requestAnimationFrame = raf\n  object.cancelAnimationFrame = caf\n}\n", "'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '$1');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n", "'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n", "/*\n\tBased on rgbcolor.js by Stoyan Stefanov <sstoo@gmail.com>\n\thttp://www.phpied.com/rgb-color-parser-in-javascript/\n*/\n\nmodule.exports = function(color_string) {\n    this.ok = false;\n    this.alpha = 1.0;\n\n    // strip any leading #\n    if (color_string.charAt(0) == '#') { // remove # if any\n        color_string = color_string.substr(1,6);\n    }\n\n    color_string = color_string.replace(/ /g,'');\n    color_string = color_string.toLowerCase();\n\n    // before getting into regexps, try simple matches\n    // and overwrite the input\n    var simple_colors = {\n        aliceblue: 'f0f8ff',\n        antiquewhite: 'faebd7',\n        aqua: '00ffff',\n        aquamarine: '7fffd4',\n        azure: 'f0ffff',\n        beige: 'f5f5dc',\n        bisque: 'ffe4c4',\n        black: '000000',\n        blanchedalmond: 'ffebcd',\n        blue: '0000ff',\n        blueviolet: '8a2be2',\n        brown: 'a52a2a',\n        burlywood: 'deb887',\n        cadetblue: '5f9ea0',\n        chartreuse: '7fff00',\n        chocolate: 'd2691e',\n        coral: 'ff7f50',\n        cornflowerblue: '6495ed',\n        cornsilk: 'fff8dc',\n        crimson: 'dc143c',\n        cyan: '00ffff',\n        darkblue: '00008b',\n        darkcyan: '008b8b',\n        darkgoldenrod: 'b8860b',\n        darkgray: 'a9a9a9',\n        darkgreen: '006400',\n        darkkhaki: 'bdb76b',\n        darkmagenta: '8b008b',\n        darkolivegreen: '556b2f',\n        darkorange: 'ff8c00',\n        darkorchid: '9932cc',\n        darkred: '8b0000',\n        darksalmon: 'e9967a',\n        darkseagreen: '8fbc8f',\n        darkslateblue: '483d8b',\n        darkslategray: '2f4f4f',\n        darkturquoise: '00ced1',\n        darkviolet: '9400d3',\n        deeppink: 'ff1493',\n        deepskyblue: '00bfff',\n        dimgray: '696969',\n        dodgerblue: '1e90ff',\n        feldspar: 'd19275',\n        firebrick: 'b22222',\n        floralwhite: 'fffaf0',\n        forestgreen: '228b22',\n        fuchsia: 'ff00ff',\n        gainsboro: 'dcdcdc',\n        ghostwhite: 'f8f8ff',\n        gold: 'ffd700',\n        goldenrod: 'daa520',\n        gray: '808080',\n        green: '008000',\n        greenyellow: 'adff2f',\n        honeydew: 'f0fff0',\n        hotpink: 'ff69b4',\n        indianred : 'cd5c5c',\n        indigo : '4b0082',\n        ivory: 'fffff0',\n        khaki: 'f0e68c',\n        lavender: 'e6e6fa',\n        lavenderblush: 'fff0f5',\n        lawngreen: '7cfc00',\n        lemonchiffon: 'fffacd',\n        lightblue: 'add8e6',\n        lightcoral: 'f08080',\n        lightcyan: 'e0ffff',\n        lightgoldenrodyellow: 'fafad2',\n        lightgrey: 'd3d3d3',\n        lightgreen: '90ee90',\n        lightpink: 'ffb6c1',\n        lightsalmon: 'ffa07a',\n        lightseagreen: '20b2aa',\n        lightskyblue: '87cefa',\n        lightslateblue: '8470ff',\n        lightslategray: '778899',\n        lightsteelblue: 'b0c4de',\n        lightyellow: 'ffffe0',\n        lime: '00ff00',\n        limegreen: '32cd32',\n        linen: 'faf0e6',\n        magenta: 'ff00ff',\n        maroon: '800000',\n        mediumaquamarine: '66cdaa',\n        mediumblue: '0000cd',\n        mediumorchid: 'ba55d3',\n        mediumpurple: '9370d8',\n        mediumseagreen: '3cb371',\n        mediumslateblue: '7b68ee',\n        mediumspringgreen: '00fa9a',\n        mediumturquoise: '48d1cc',\n        mediumvioletred: 'c71585',\n        midnightblue: '191970',\n        mintcream: 'f5fffa',\n        mistyrose: 'ffe4e1',\n        moccasin: 'ffe4b5',\n        navajowhite: 'ffdead',\n        navy: '000080',\n        oldlace: 'fdf5e6',\n        olive: '808000',\n        olivedrab: '6b8e23',\n        orange: 'ffa500',\n        orangered: 'ff4500',\n        orchid: 'da70d6',\n        palegoldenrod: 'eee8aa',\n        palegreen: '98fb98',\n        paleturquoise: 'afeeee',\n        palevioletred: 'd87093',\n        papayawhip: 'ffefd5',\n        peachpuff: 'ffdab9',\n        peru: 'cd853f',\n        pink: 'ffc0cb',\n        plum: 'dda0dd',\n        powderblue: 'b0e0e6',\n        purple: '800080',\n        rebeccapurple: '663399',\n        red: 'ff0000',\n        rosybrown: 'bc8f8f',\n        royalblue: '4169e1',\n        saddlebrown: '8b4513',\n        salmon: 'fa8072',\n        sandybrown: 'f4a460',\n        seagreen: '2e8b57',\n        seashell: 'fff5ee',\n        sienna: 'a0522d',\n        silver: 'c0c0c0',\n        skyblue: '87ceeb',\n        slateblue: '6a5acd',\n        slategray: '708090',\n        snow: 'fffafa',\n        springgreen: '00ff7f',\n        steelblue: '4682b4',\n        tan: 'd2b48c',\n        teal: '008080',\n        thistle: 'd8bfd8',\n        tomato: 'ff6347',\n        turquoise: '40e0d0',\n        violet: 'ee82ee',\n        violetred: 'd02090',\n        wheat: 'f5deb3',\n        white: 'ffffff',\n        whitesmoke: 'f5f5f5',\n        yellow: 'ffff00',\n        yellowgreen: '9acd32'\n    };\n    color_string = simple_colors[color_string] || color_string;\n    // emd of simple type-in colors\n\n    // array of color definition objects\n    var color_defs = [\n        {\n            re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((?:\\d?\\.)?\\d)\\)$/,\n            example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1]),\n                    parseInt(bits[2]),\n                    parseInt(bits[3]),\n                    parseFloat(bits[4])\n                ];\n            }\n        },\n        {\n            re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1]),\n                    parseInt(bits[2]),\n                    parseInt(bits[3])\n                ];\n            }\n        },\n        {\n            re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n            example: ['#00ff00', '336699'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1], 16),\n                    parseInt(bits[2], 16),\n                    parseInt(bits[3], 16)\n                ];\n            }\n        },\n        {\n            re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n            example: ['#fb0', 'f0f'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1] + bits[1], 16),\n                    parseInt(bits[2] + bits[2], 16),\n                    parseInt(bits[3] + bits[3], 16)\n                ];\n            }\n        }\n    ];\n\n    // search through the definitions to find a match\n    for (var i = 0; i < color_defs.length; i++) {\n        var re = color_defs[i].re;\n        var processor = color_defs[i].process;\n        var bits = re.exec(color_string);\n        if (bits) {\n            var channels = processor(bits);\n            this.r = channels[0];\n            this.g = channels[1];\n            this.b = channels[2];\n            if (channels.length > 3) {\n                this.alpha = channels[3];\n            }\n            this.ok = true;\n        }\n\n    }\n\n    // validate/cleanup values\n    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);\n    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);\n    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);\n    this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);\n\n    // some getters\n    this.toRGB = function () {\n        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';\n    }\n    this.toRGBA = function () {\n        return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';\n    }\n    this.toHex = function () {\n        var r = this.r.toString(16);\n        var g = this.g.toString(16);\n        var b = this.b.toString(16);\n        if (r.length == 1) r = '0' + r;\n        if (g.length == 1) g = '0' + g;\n        if (b.length == 1) b = '0' + b;\n        return '#' + r + g + b;\n    }\n\n    // help\n    this.getHelpXML = function () {\n\n        var examples = new Array();\n        // add regexps\n        for (var i = 0; i < color_defs.length; i++) {\n            var example = color_defs[i].example;\n            for (var j = 0; j < example.length; j++) {\n                examples[examples.length] = example[j];\n            }\n        }\n        // add type-in colors\n        for (var sc in simple_colors) {\n            examples[examples.length] = sc;\n        }\n\n        var xml = document.createElement('ul');\n        xml.setAttribute('id', 'rgbcolor-examples');\n        for (var i = 0; i < examples.length; i++) {\n            try {\n                var list_item = document.createElement('li');\n                var list_color = new RGBColor(examples[i]);\n                var example_div = document.createElement('div');\n                example_div.style.cssText =\n                        'margin: 3px; '\n                        + 'border: 1px solid black; '\n                        + 'background:' + list_color.toHex() + '; '\n                        + 'color:' + list_color.toHex()\n                ;\n                example_div.appendChild(document.createTextNode('test'));\n                var list_item_value = document.createTextNode(\n                    ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()\n                );\n                list_item.appendChild(example_div);\n                list_item.appendChild(list_item_value);\n                xml.appendChild(list_item);\n\n            } catch(e){}\n        }\n        return xml;\n\n    }\n\n}\n", "'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf(this, searchElement, fromIndex) || 0\n      : $indexOf(this, searchElement, fromIndex);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n", "'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign -- dirty hack\n    if (isArray(this)) this.length = this.length;\n    return nativeReverse(this);\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 (_) 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    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\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) {\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\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, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n", "import { SVGPathData } from \"./SVGPathData\";\nimport { SVGCommand } from \"./types\";\n\n// Encode SVG PathData\n// http://www.w3.org/TR/SVG/paths.html#PathDataBNF\n\n// Private consts : Char groups\nconst WSP = \" \";\n\nexport function encodeSVGPath(commands: SVGCommand | SVGCommand[]) {\n  let str = \"\";\n\n  if (!Array.isArray(commands)) {\n    commands = [commands];\n  }\n  for (let i = 0; i < commands.length; i++) {\n    const command = commands[i];\n    if (command.type === SVGPathData.CLOSE_PATH) {\n      str += \"z\";\n    } else if (command.type === SVGPathData.HORIZ_LINE_TO) {\n      str += (command.relative ? \"h\" : \"H\") +\n        command.x;\n    } else if (command.type === SVGPathData.VERT_LINE_TO) {\n      str += (command.relative ? \"v\" : \"V\") +\n        command.y;\n    } else if (command.type === SVGPathData.MOVE_TO) {\n      str += (command.relative ? \"m\" : \"M\") +\n        command.x + WSP + command.y;\n    } else if (command.type === SVGPathData.LINE_TO) {\n      str += (command.relative ? \"l\" : \"L\") +\n        command.x + WSP + command.y;\n    } else if (command.type === SVGPathData.CURVE_TO) {\n      str += (command.relative ? \"c\" : \"C\") +\n        command.x1 + WSP + command.y1 +\n        WSP + command.x2 + WSP + command.y2 +\n        WSP + command.x + WSP + command.y;\n    } else if (command.type === SVGPathData.SMOOTH_CURVE_TO) {\n      str += (command.relative ? \"s\" : \"S\") +\n        command.x2 + WSP + command.y2 +\n        WSP + command.x + WSP + command.y;\n    } else if (command.type === SVGPathData.QUAD_TO) {\n      str += (command.relative ? \"q\" : \"Q\") +\n        command.x1 + WSP + command.y1 +\n        WSP + command.x + WSP + command.y;\n    } else if (command.type === SVGPathData.SMOOTH_QUAD_TO) {\n      str += (command.relative ? \"t\" : \"T\") +\n        command.x + WSP + command.y;\n    } else if (command.type === SVGPathData.ARC) {\n      str += (command.relative ? \"a\" : \"A\") +\n        command.rX + WSP + command.rY +\n        WSP + command.xRot +\n        WSP + (+command.lArcFlag) + WSP + (+command.sweepFlag) +\n        WSP + command.x + WSP + command.y;\n    } else {\n      // Unknown command\n      throw new Error(\n        `Unexpected command type \"${ (command as any).type}\" at index ${i}.`);\n    }\n  }\n\n  return str;\n}\n", "import { SVGPathData } from \"./SVGPathData\";\nimport { CommandA, CommandC } from \"./types\";\n\nexport function rotate([x, y]: [number, number], rad: number) {\n  return [\n    x * Math.cos(rad) - y * Math.sin(rad),\n    x * Math.sin(rad) + y * Math.cos(rad),\n  ];\n}\n\nconst DEBUG_CHECK_NUMBERS = true;\nexport function assertNumbers(...numbers: number[]) {\n  if (DEBUG_CHECK_NUMBERS) {\n    for (let i = 0; i < numbers.length; i++) {\n      if (\"number\" !== typeof numbers[i]) {\n        throw new Error(\n          `assertNumbers arguments[${i}] is not a number. ${typeof numbers[i]} == typeof ${numbers[i]}`);\n      }\n    }\n  }\n  return true;\n}\n\nconst PI = Math.PI;\n\n/**\n * https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes\n * Fixes rX and rY.\n * Ensures lArcFlag and sweepFlag are 0 or 1\n * Adds center coordinates: command.cX, command.cY (relative or absolute, depending on command.relative)\n * Adds start and end arc parameters (in degrees): command.phi1, command.phi2; phi1 < phi2 iff. c.sweepFlag == true\n */\nexport function annotateArcCommand(c: CommandA, x1: number, y1: number) {\n  c.lArcFlag = (0 === c.lArcFlag) ? 0 : 1;\n  c.sweepFlag = (0 === c.sweepFlag) ? 0 : 1;\n  // tslint:disable-next-line\n  let {rX, rY, x, y} = c;\n\n  rX = Math.abs(c.rX);\n  rY = Math.abs(c.rY);\n  const [x1_, y1_] = rotate([(x1 - x) / 2, (y1 - y) / 2], -c.xRot / 180 * PI);\n  const testValue = Math.pow(x1_, 2) / Math.pow(rX, 2) + Math.pow(y1_, 2) / Math.pow(rY, 2);\n\n  if (1 < testValue) {\n    rX *= Math.sqrt(testValue);\n    rY *= Math.sqrt(testValue);\n  }\n  c.rX = rX;\n  c.rY = rY;\n  const c_ScaleTemp = (Math.pow(rX, 2) * Math.pow(y1_, 2) + Math.pow(rY, 2) * Math.pow(x1_, 2));\n  const c_Scale = (c.lArcFlag !== c.sweepFlag ? 1 : -1) *\n    Math.sqrt(Math.max(0, (Math.pow(rX, 2) * Math.pow(rY, 2) - c_ScaleTemp) / c_ScaleTemp));\n  const cx_ = rX * y1_ / rY * c_Scale;\n  const cy_ = -rY * x1_ / rX * c_Scale;\n  const cRot = rotate([cx_, cy_], c.xRot / 180 * PI);\n\n  c.cX = cRot[0] + (x1 + x) / 2;\n  c.cY = cRot[1] + (y1 + y) / 2;\n  c.phi1 = Math.atan2((y1_ - cy_) / rY, (x1_ - cx_) / rX);\n  c.phi2 = Math.atan2((-y1_ - cy_) / rY, (-x1_ - cx_) / rX);\n  if (0 === c.sweepFlag && c.phi2 > c.phi1) {\n    c.phi2 -= 2 * PI;\n  }\n  if (1 === c.sweepFlag && c.phi2 < c.phi1) {\n    c.phi2 += 2 * PI;\n  }\n  c.phi1 *= 180 / PI;\n  c.phi2 *= 180 / PI;\n}\n\n/**\n * Solves a quadratic system of equations of the form\n *      a * x + b * y = c\n *      x\u00B2 + y\u00B2 = 1\n * This can be understood as the intersection of the unit circle with a line.\n *      => y = (c - a x) / b\n *      => x\u00B2 + (c - a x)\u00B2 / b\u00B2 = 1\n *      => x\u00B2 b\u00B2 + c\u00B2 - 2 c a x + a\u00B2 x\u00B2 = b\u00B2\n *      => (a\u00B2 + b\u00B2) x\u00B2 - 2 a c x + (c\u00B2 - b\u00B2) = 0\n */\nexport function intersectionUnitCircleLine(a: number, b: number, c: number): [number, number][] {\n  assertNumbers(a, b, c);\n  // cf. pqFormula\n  const termSqr = a * a + b * b - c * c;\n\n  if (0 > termSqr) {\n    return [];\n  } else if (0 === termSqr) {\n    return [\n      [\n        (a * c) / (a * a + b * b),\n        (b * c) / (a * a + b * b)]];\n  }\n  const term = Math.sqrt(termSqr);\n\n  return [\n    [\n      (a * c + b * term) / (a * a + b * b),\n      (b * c - a * term) / (a * a + b * b)],\n    [\n      (a * c - b * term) / (a * a + b * b),\n      (b * c + a * term) / (a * a + b * b)]];\n\n}\n\nexport const DEG = Math.PI / 180;\n\nexport function lerp(a: number, b: number, t: number) {\n  return (1 - t) * a + t * b;\n}\n\nexport function arcAt(c: number, x1: number, x2: number, phiDeg: number) {\n  return c + Math.cos(phiDeg / 180 * PI) * x1 + Math.sin(phiDeg / 180 * PI) * x2;\n}\n\nexport function bezierRoot(x0: number, x1: number, x2: number, x3: number) {\n  const EPS = 1e-6;\n  const x01 = x1 - x0;\n  const x12 = x2 - x1;\n  const x23 = x3 - x2;\n  const a = 3 * x01 + 3 * x23 - 6 * x12;\n  const b = (x12 - x01) * 6;\n  const c = 3 * x01;\n  // solve a * t\u00B2 + b * t + c = 0\n\n  if (Math.abs(a) < EPS) {\n    // equivalent to b * t + c =>\n    return [-c / b];\n  }\n  return pqFormula(b / a, c / a, EPS);\n\n}\n\nexport function bezierAt(x0: number, x1: number, x2: number, x3: number, t: number) {\n  // console.log(x0, y0, x1, y1, x2, y2, x3, y3, t)\n  const s = 1 - t;\n  const c0 = s * s * s;\n  const c1 = 3 * s * s * t;\n  const c2 = 3 * s * t * t;\n  const c3 = t * t * t;\n\n  return x0 * c0 + x1 * c1 + x2 * c2 + x3 * c3;\n}\n\nfunction pqFormula(p: number, q: number, PRECISION = 1e-6) {\n  // 4 times the discriminant:in\n  const discriminantX4 = p * p / 4 - q;\n\n  if (discriminantX4 < -PRECISION) {\n    return [];\n  } else if (discriminantX4 <= PRECISION) {\n    return [-p / 2];\n  }\n  const root = Math.sqrt(discriminantX4);\n\n  return [-(p / 2) - root, -(p / 2) + root];\n\n}\n\nexport function a2c(arc: CommandA, x0: number, y0: number): CommandC[] {\n  if (!arc.cX) {\n    annotateArcCommand(arc, x0, y0);\n  }\n\n  const phiMin = Math.min(arc.phi1!, arc.phi2!), phiMax = Math.max(arc.phi1!, arc.phi2!), deltaPhi = phiMax - phiMin;\n  const partCount = Math.ceil(deltaPhi / 90 );\n\n  const result: CommandC[] = new Array(partCount);\n  let prevX = x0, prevY = y0;\n  for (let i = 0; i < partCount; i++) {\n    const phiStart = lerp(arc.phi1!, arc.phi2!, i / partCount);\n    const phiEnd = lerp(arc.phi1!, arc.phi2!, (i + 1) / partCount);\n    const deltaPhi = phiEnd - phiStart;\n    const f = 4 / 3 * Math.tan(deltaPhi * DEG / 4);\n    // x1/y1, x2/y2 and x/y coordinates on the unit circle for phiStart/phiEnd\n    const [x1, y1] = [\n      Math.cos(phiStart * DEG) - f * Math.sin(phiStart * DEG),\n      Math.sin(phiStart * DEG) + f * Math.cos(phiStart * DEG)];\n    const [x, y] = [Math.cos(phiEnd * DEG), Math.sin(phiEnd * DEG)];\n    const [x2, y2] = [x + f * Math.sin(phiEnd * DEG), y - f * Math.cos(phiEnd * DEG)];\n    result[i] = {relative: arc.relative, type: SVGPathData.CURVE_TO } as any;\n    const transform = (x: number, y: number) => {\n      const [xTemp, yTemp] = rotate([x * arc.rX, y * arc.rY], arc.xRot);\n      return [arc.cX! + xTemp, arc.cY! + yTemp];\n    };\n    [result[i].x1, result[i].y1] = transform(x1, y1);\n    [result[i].x2, result[i].y2] = transform(x2, y2);\n    [result[i].x, result[i].y] = transform(x, y);\n    if (arc.relative) {\n      result[i].x1 -= prevX;\n      result[i].y1 -= prevY;\n      result[i].x2 -= prevX;\n      result[i].y2 -= prevY;\n      result[i].x -= prevX;\n      result[i].y -= prevY;\n    }\n    [prevX, prevY] = [result[i].x, result[i].y];\n  }\n  return result;\n}\n", "// Transform SVG PathData\n// http://www.w3.org/TR/SVG/paths.html#PathDataBNF\n\nimport { a2c, annotateArcCommand, arcAt, assertNumbers, bezierAt, bezierRoot,\n  intersectionUnitCircleLine } from \"./mathUtils\";\nimport { SVGPathData } from \"./SVGPathData\";\nimport { SVGCommand, TransformFunction } from \"./types\";\n\nexport namespace SVGPathDataTransformer {\n  // Predefined transforming functions\n  // Rounds commands values\n  export function ROUND(roundVal = 1e13) {\n    assertNumbers(roundVal);\n    function rf(val: number) { return Math.round(val * roundVal) / roundVal; }\n    return function round(command: any) {\n      if (\"undefined\" !== typeof command.x1) {\n        command.x1 = rf(command.x1);\n      }\n      if (\"undefined\" !== typeof command.y1) {\n        command.y1 = rf(command.y1);\n      }\n\n      if (\"undefined\" !== typeof command.x2) {\n        command.x2 = rf(command.x2);\n      }\n      if (\"undefined\" !== typeof command.y2) {\n        command.y2 = rf(command.y2);\n      }\n\n      if (\"undefined\" !== typeof command.x) {\n        command.x = rf(command.x);\n      }\n      if (\"undefined\" !== typeof command.y) {\n        command.y = rf(command.y);\n      }\n\n      if (\"undefined\" !== typeof command.rX) {\n        command.rX = rf(command.rX);\n      }\n      if (\"undefined\" !== typeof command.rY) {\n        command.rY = rf(command.rY);\n      }\n\n      return command;\n    };\n  }\n  // Relative to absolute commands\n  export function TO_ABS() {\n    return INFO((command, prevX, prevY) => {\n      if (command.relative) {\n        // x1/y1 values\n        if (\"undefined\" !== typeof command.x1) {\n          command.x1 += prevX;\n        }\n        if (\"undefined\" !== typeof command.y1) {\n          command.y1 += prevY;\n        }\n        // x2/y2 values\n        if (\"undefined\" !== typeof command.x2) {\n          command.x2 += prevX;\n        }\n        if (\"undefined\" !== typeof command.y2) {\n          command.y2 += prevY;\n        }\n        // Finally x/y values\n        if (\"undefined\" !== typeof command.x) {\n          command.x += prevX;\n        }\n        if (\"undefined\" !== typeof command.y) {\n          command.y += prevY;\n        }\n        command.relative = false;\n      }\n      return command;\n    });\n  }\n  // Absolute to relative commands\n  export function TO_REL() {\n    return INFO((command, prevX, prevY) => {\n      if (!command.relative) {\n        // x1/y1 values\n        if (\"undefined\" !== typeof command.x1) {\n          command.x1 -= prevX;\n        }\n        if (\"undefined\" !== typeof command.y1) {\n          command.y1 -= prevY;\n        }\n        // x2/y2 values\n        if (\"undefined\" !== typeof command.x2) {\n          command.x2 -= prevX;\n        }\n        if (\"undefined\" !== typeof command.y2) {\n          command.y2 -= prevY;\n        }\n        // Finally x/y values\n        if (\"undefined\" !== typeof command.x) {\n          command.x -= prevX;\n        }\n        if (\"undefined\" !== typeof command.y) {\n          command.y -= prevY;\n        }\n        command.relative = true;\n      }\n      return command;\n    });\n  }\n  // Convert H, V, Z and A with rX = 0 to L\n  export function NORMALIZE_HVZ(normalizeZ = true, normalizeH = true, normalizeV = true) {\n    return INFO((command, prevX, prevY, pathStartX, pathStartY) => {\n      if (isNaN(pathStartX) && !(command.type & SVGPathData.MOVE_TO)) {\n        throw new Error(\"path must start with moveto\");\n      }\n      if (normalizeH && command.type & SVGPathData.HORIZ_LINE_TO) {\n        command.type = SVGPathData.LINE_TO;\n        command.y = command.relative ? 0 : prevY;\n      }\n      if (normalizeV && command.type & SVGPathData.VERT_LINE_TO) {\n        command.type = SVGPathData.LINE_TO;\n        command.x = command.relative ? 0 : prevX;\n      }\n      if (normalizeZ && command.type & SVGPathData.CLOSE_PATH) {\n        command.type = SVGPathData.LINE_TO;\n        command.x = command.relative ? pathStartX - prevX : pathStartX;\n        command.y = command.relative ? pathStartY - prevY : pathStartY;\n      }\n      if (command.type & SVGPathData.ARC && (0 === command.rX || 0 === command.rY)) {\n        command.type = SVGPathData.LINE_TO;\n        delete command.rX;\n        delete command.rY;\n        delete command.xRot;\n        delete command.lArcFlag;\n        delete command.sweepFlag;\n      }\n      return command;\n    });\n  }\n  /*\n   * Transforms smooth curves and quads to normal curves and quads (SsTt to CcQq)\n   */\n  export function NORMALIZE_ST() {\n    let prevCurveC2X = NaN;\n    let prevCurveC2Y = NaN;\n    let prevQuadCX = NaN;\n    let prevQuadCY = NaN;\n\n    return INFO((command, prevX, prevY) => {\n      if (command.type & SVGPathData.SMOOTH_CURVE_TO) {\n        command.type = SVGPathData.CURVE_TO;\n        prevCurveC2X = isNaN(prevCurveC2X) ? prevX : prevCurveC2X;\n        prevCurveC2Y = isNaN(prevCurveC2Y) ? prevY : prevCurveC2Y;\n        command.x1 = command.relative ? prevX - prevCurveC2X : 2 * prevX - prevCurveC2X;\n        command.y1 = command.relative ? prevY - prevCurveC2Y : 2 * prevY - prevCurveC2Y;\n      }\n      if (command.type & SVGPathData.CURVE_TO) {\n        prevCurveC2X = command.relative ? prevX + command.x2 : command.x2;\n        prevCurveC2Y = command.relative ? prevY + command.y2 : command.y2;\n      } else {\n        prevCurveC2X = NaN;\n        prevCurveC2Y = NaN;\n      }\n      if (command.type & SVGPathData.SMOOTH_QUAD_TO) {\n        command.type = SVGPathData.QUAD_TO;\n        prevQuadCX = isNaN(prevQuadCX) ? prevX : prevQuadCX;\n        prevQuadCY = isNaN(prevQuadCY) ? prevY : prevQuadCY;\n        command.x1 = command.relative ? prevX - prevQuadCX : 2 * prevX - prevQuadCX;\n        command.y1 = command.relative ? prevY - prevQuadCY : 2 * prevY - prevQuadCY;\n      }\n      if (command.type & SVGPathData.QUAD_TO) {\n        prevQuadCX = command.relative ? prevX + command.x1 : command.x1;\n        prevQuadCY = command.relative ? prevY + command.y1 : command.y1;\n      } else {\n        prevQuadCX = NaN;\n        prevQuadCY = NaN;\n      }\n\n      return command;\n    });\n  }\n  /*\n   * A quadratic b\u00E9zier curve can be represented by a cubic b\u00E9zier curve which has\n   * the same end points as the quadratic and both control points in place of the\n   * quadratic\"s one.\n   *\n   * This transformer replaces QqTt commands with Cc commands respectively.\n   * This is useful for reading path data into a system which only has a\n   * representation for cubic curves.\n   */\n  export function QT_TO_C() {\n    let prevQuadX1 = NaN;\n    let prevQuadY1 = NaN;\n\n    return INFO((command, prevX, prevY) => {\n      if (command.type & SVGPathData.SMOOTH_QUAD_TO) {\n        command.type = SVGPathData.QUAD_TO;\n        prevQuadX1 = isNaN(prevQuadX1) ? prevX : prevQuadX1;\n        prevQuadY1 = isNaN(prevQuadY1) ? prevY : prevQuadY1;\n        command.x1 = command.relative ? prevX - prevQuadX1 : 2 * prevX - prevQuadX1;\n        command.y1 = command.relative ? prevY - prevQuadY1 : 2 * prevY - prevQuadY1;\n      }\n      if (command.type & SVGPathData.QUAD_TO) {\n        prevQuadX1 = command.relative ? prevX + command.x1 : command.x1;\n        prevQuadY1 = command.relative ? prevY + command.y1 : command.y1;\n        const x1 = command.x1;\n        const y1 = command.y1;\n\n        command.type = SVGPathData.CURVE_TO;\n        command.x1 = ((command.relative ? 0 : prevX) + x1 * 2) / 3;\n        command.y1 = ((command.relative ? 0 : prevY) + y1 * 2) / 3;\n        command.x2 = (command.x + x1 * 2) / 3;\n        command.y2 = (command.y + y1 * 2) / 3;\n      } else {\n        prevQuadX1 = NaN;\n        prevQuadY1 = NaN;\n      }\n\n      return command;\n    });\n  }\n  export function INFO(\n    f: (command: any, prevXAbs: number, prevYAbs: number,\n        pathStartXAbs: number, pathStartYAbs: number) => any | any[]) {\n    let prevXAbs = 0;\n    let prevYAbs = 0;\n    let pathStartXAbs = NaN;\n    let pathStartYAbs = NaN;\n\n    return function transform(command: any) {\n      if (isNaN(pathStartXAbs) && !(command.type & SVGPathData.MOVE_TO)) {\n        throw new Error(\"path must start with moveto\");\n      }\n\n      const result = f(command, prevXAbs, prevYAbs, pathStartXAbs, pathStartYAbs);\n\n      if (command.type & SVGPathData.CLOSE_PATH) {\n        prevXAbs = pathStartXAbs;\n        prevYAbs = pathStartYAbs;\n      }\n\n      if (\"undefined\" !== typeof command.x) {\n        prevXAbs = (command.relative ? prevXAbs + command.x : command.x);\n      }\n      if (\"undefined\" !== typeof command.y) {\n        prevYAbs = (command.relative ? prevYAbs + command.y : command.y);\n      }\n\n      if (command.type & SVGPathData.MOVE_TO) {\n        pathStartXAbs = prevXAbs;\n        pathStartYAbs = prevYAbs;\n      }\n\n      return result;\n    };\n  }\n  /*\n   * remove 0-length segments\n   */\n  export function SANITIZE(EPS = 0) {\n    assertNumbers(EPS);\n    let prevCurveC2X = NaN;\n    let prevCurveC2Y = NaN;\n    let prevQuadCX = NaN;\n    let prevQuadCY = NaN;\n\n    return INFO((command, prevX, prevY, pathStartX, pathStartY) => {\n      const abs = Math.abs;\n      let skip = false;\n      let x1Rel = 0;\n      let y1Rel = 0;\n\n      if (command.type & SVGPathData.SMOOTH_CURVE_TO) {\n        x1Rel = isNaN(prevCurveC2X) ? 0 : prevX - prevCurveC2X;\n        y1Rel = isNaN(prevCurveC2Y) ? 0 : prevY - prevCurveC2Y;\n      }\n      if (command.type & (SVGPathData.CURVE_TO | SVGPathData.SMOOTH_CURVE_TO)) {\n        prevCurveC2X = command.relative ? prevX + command.x2 : command.x2;\n        prevCurveC2Y = command.relative ? prevY + command.y2 : command.y2;\n      } else {\n        prevCurveC2X = NaN;\n        prevCurveC2Y = NaN;\n      }\n      if (command.type & SVGPathData.SMOOTH_QUAD_TO) {\n        prevQuadCX = isNaN(prevQuadCX) ? prevX : 2 * prevX - prevQuadCX;\n        prevQuadCY = isNaN(prevQuadCY) ? prevY : 2 * prevY - prevQuadCY;\n      } else if (command.type & SVGPathData.QUAD_TO) {\n        prevQuadCX = command.relative ? prevX + command.x1 : command.x1;\n        prevQuadCY = command.relative ? prevY + command.y1 : command.y2;\n      } else {\n        prevQuadCX = NaN;\n        prevQuadCY = NaN;\n      }\n\n      if (command.type & SVGPathData.LINE_COMMANDS ||\n        command.type & SVGPathData.ARC && (0 === command.rX || 0 === command.rY || !command.lArcFlag) ||\n        command.type & SVGPathData.CURVE_TO || command.type & SVGPathData.SMOOTH_CURVE_TO ||\n        command.type & SVGPathData.QUAD_TO || command.type & SVGPathData.SMOOTH_QUAD_TO) {\n        const xRel = \"undefined\" === typeof command.x ? 0 :\n          (command.relative ? command.x : command.x - prevX);\n        const yRel = \"undefined\" === typeof command.y ? 0 :\n          (command.relative ? command.y : command.y - prevY);\n\n        x1Rel = !isNaN(prevQuadCX) ? prevQuadCX - prevX :\n          \"undefined\" === typeof command.x1 ? x1Rel :\n            command.relative ? command.x :\n              command.x1 - prevX;\n        y1Rel = !isNaN(prevQuadCY) ? prevQuadCY - prevY :\n          \"undefined\" === typeof command.y1 ? y1Rel :\n            command.relative ? command.y :\n              command.y1 - prevY;\n\n        const x2Rel = \"undefined\" === typeof command.x2 ? 0 :\n          (command.relative ? command.x : command.x2 - prevX);\n        const y2Rel = \"undefined\" === typeof command.y2 ? 0 :\n          (command.relative ? command.y : command.y2 - prevY);\n\n        if (abs(xRel) <= EPS && abs(yRel) <= EPS &&\n          abs(x1Rel) <= EPS && abs(y1Rel) <= EPS &&\n          abs(x2Rel) <= EPS && abs(y2Rel) <= EPS) {\n          skip = true;\n        }\n      }\n\n      if (command.type & SVGPathData.CLOSE_PATH) {\n        if (abs(prevX - pathStartX) <= EPS && abs(prevY - pathStartY) <= EPS) {\n          skip = true;\n        }\n      }\n\n      return skip ? [] : command;\n    });\n  }\n  // SVG Transforms : http://www.w3.org/TR/SVGTiny12/coords.html#TransformList\n  // Matrix : http://apike.ca/prog_svg_transform.html\n  // a c e\n  // b d f\n  export function MATRIX(a: number, b: number, c: number, d: number, e: number, f: number) {\n    assertNumbers(a, b, c, d, e, f);\n\n    return INFO((command, prevX, prevY, pathStartX) => {\n      const origX1 = command.x1;\n      const origX2 = command.x2;\n      // if isNaN(pathStartX), then this is the first command, which is ALWAYS an\n      // absolute MOVE_TO, regardless what the relative flag says\n      const comRel = command.relative && !isNaN(pathStartX);\n      const x = \"undefined\" !== typeof command.x ? command.x : (comRel ? 0 : prevX);\n      const y = \"undefined\" !== typeof command.y ? command.y : (comRel ? 0 : prevY);\n\n      if (command.type & SVGPathData.HORIZ_LINE_TO && 0 !== b) {\n        command.type = SVGPathData.LINE_TO;\n        command.y = command.relative ? 0 : prevY;\n      }\n      if (command.type & SVGPathData.VERT_LINE_TO && 0 !== c) {\n        command.type = SVGPathData.LINE_TO;\n        command.x = command.relative ? 0 : prevX;\n      }\n\n      if (\"undefined\" !== typeof command.x) {\n        command.x = (command.x * a) + (y * c) + (comRel ? 0 : e);\n      }\n      if (\"undefined\" !== typeof command.y) {\n        command.y = (x * b) + command.y * d + (comRel ? 0 : f);\n      }\n      if (\"undefined\" !== typeof command.x1) {\n        command.x1 = command.x1 * a + command.y1 * c + (comRel ? 0 : e);\n      }\n      if (\"undefined\" !== typeof command.y1) {\n        command.y1 = origX1 * b + command.y1 * d + (comRel ? 0 : f);\n      }\n      if (\"undefined\" !== typeof command.x2) {\n        command.x2 = command.x2 * a + command.y2 * c + (comRel ? 0 : e);\n      }\n      if (\"undefined\" !== typeof command.y2) {\n        command.y2 = origX2 * b + command.y2 * d + (comRel ? 0 : f);\n      }\n      function sqr(x: number) { return x * x; }\n      const det = a * d - b * c;\n\n      if (\"undefined\" !== typeof command.xRot) {\n        // Skip if this is a pure translation\n        if (1 !== a || 0 !== b || 0 !== c || 1 !== d) {\n          // Special case for singular matrix\n          if (0 === det) {\n            // In the singular case, the arc is compressed to a line. The actual geometric image of the original\n            // curve under this transform possibly extends beyond the starting and/or ending points of the segment, but\n            // for simplicity we ignore this detail and just replace this command with a single line segment.\n            delete command.rX;\n            delete command.rY;\n            delete command.xRot;\n            delete command.lArcFlag;\n            delete command.sweepFlag;\n            command.type = SVGPathData.LINE_TO;\n          } else {\n            // Convert to radians\n            const xRot = command.xRot * Math.PI / 180;\n\n            // Convert rotated ellipse to general conic form\n            // x0^2/rX^2 + y0^2/rY^2 - 1 = 0\n            // x0 = x*cos(xRot) + y*sin(xRot)\n            // y0 = -x*sin(xRot) + y*cos(xRot)\n            // --> A*x^2 + B*x*y + C*y^2 - 1 = 0, where\n            const sinRot = Math.sin(xRot);\n            const cosRot = Math.cos(xRot);\n            const xCurve = 1 / sqr(command.rX);\n            const yCurve = 1 / sqr(command.rY);\n            const A = sqr(cosRot) * xCurve + sqr(sinRot) * yCurve;\n            const B = 2 * sinRot * cosRot * (xCurve - yCurve);\n            const C = sqr(sinRot) * xCurve + sqr(cosRot) * yCurve;\n\n            // Apply matrix to A*x^2 + B*x*y + C*y^2 - 1 = 0\n            // x1 = a*x + c*y\n            // y1 = b*x + d*y\n            //      (we can ignore e and f, since pure translations don\"t affect the shape of the ellipse)\n            // --> A1*x1^2 + B1*x1*y1 + C1*y1^2 - det^2 = 0, where\n            const A1 = A * d * d - B * b * d + C * b * b;\n            const B1 = B * (a * d + b * c) - 2 * (A * c * d + C * a * b);\n            const C1 = A * c * c - B * a * c + C * a * a;\n\n            // Unapply newXRot to get back to axis-aligned ellipse equation\n            // x1 = x2*cos(newXRot) - y2*sin(newXRot)\n            // y1 = x2*sin(newXRot) + y2*cos(newXRot)\n            // A1*x1^2 + B1*x1*y1 + C1*y1^2 - det^2 =\n            //   x2^2*(A1*cos(newXRot)^2 + B1*sin(newXRot)*cos(newXRot) + C1*sin(newXRot)^2)\n            //   + x2*y2*(2*(C1 - A1)*sin(newXRot)*cos(newXRot) + B1*(cos(newXRot)^2 - sin(newXRot)^2))\n            //   + y2^2*(A1*sin(newXRot)^2 - B1*sin(newXRot)*cos(newXRot) + C1*cos(newXRot)^2)\n            //   (which must have the same zeroes as)\n            // x2^2/newRX^2 + y2^2/newRY^2 - 1\n            //   (so we have)\n            // 2*(C1 - A1)*sin(newXRot)*cos(newXRot) + B1*(cos(newXRot)^2 - sin(newXRot)^2) = 0\n            // (A1 - C1)*sin(2*newXRot) = B1*cos(2*newXRot)\n            // 2*newXRot = atan2(B1, A1 - C1)\n            const newXRot = ((Math.atan2(B1, A1 - C1) + Math.PI) % Math.PI) / 2;\n            // For any integer n, (atan2(B1, A1 - C1) + n*pi)/2 is a solution to the above; incrementing n just swaps\n            // the x and y radii computed below (since that\"s what rotating an ellipse by pi/2 does).  Choosing the\n            // rotation between 0 and pi/2 eliminates the ambiguity and leads to more predictable output.\n\n            // Finally, we get newRX and newRY from the same-zeroes relationship that gave us newXRot\n            const newSinRot = Math.sin(newXRot);\n            const newCosRot = Math.cos(newXRot);\n\n            command.rX = Math.abs(det) /\n              Math.sqrt(A1 * sqr(newCosRot) + B1 * newSinRot * newCosRot + C1 * sqr(newSinRot));\n            command.rY = Math.abs(det) /\n              Math.sqrt(A1 * sqr(newSinRot) - B1 * newSinRot * newCosRot + C1 * sqr(newCosRot));\n            command.xRot = newXRot * 180 / Math.PI;\n          }\n        }\n      }\n      // sweepFlag needs to be inverted when mirroring shapes\n      // see http://www.itk.ilstu.edu/faculty/javila/SVG/SVG_drawing1/elliptical_curve.htm\n      // m 65,10 a 50,25 0 1 0 50,25\n      // M 65,60 A 50,25 0 1 1 115,35\n      if (\"undefined\" !== typeof command.sweepFlag && 0 > det) {\n        command.sweepFlag = +!command.sweepFlag;\n      }\n      return command;\n    });\n  }\n  export function ROTATE(a: number, x = 0, y = 0) {\n    assertNumbers(a, x, y);\n    const sin = Math.sin(a);\n    const cos = Math.cos(a);\n\n    return MATRIX(cos, sin, -sin, cos, x - x * cos + y * sin, y - x * sin - y * cos);\n  }\n  export function TRANSLATE(dX: number, dY = 0) {\n    assertNumbers(dX, dY);\n    return MATRIX(1, 0, 0, 1, dX, dY);\n  }\n  export function SCALE(dX: number, dY = dX) {\n    assertNumbers(dX, dY);\n    return MATRIX(dX, 0, 0, dY, 0, 0);\n  }\n  export function SKEW_X(a: number) {\n    assertNumbers(a);\n    return MATRIX(1, 0, Math.atan(a), 1, 0, 0);\n  }\n  export function SKEW_Y(a: number) {\n    assertNumbers(a);\n    return MATRIX(1, Math.atan(a), 0, 1, 0, 0);\n  }\n  export function X_AXIS_SYMMETRY(xOffset = 0) {\n    assertNumbers(xOffset);\n    return MATRIX(-1, 0, 0, 1, xOffset, 0);\n  }\n  export function Y_AXIS_SYMMETRY(yOffset = 0) {\n    assertNumbers(yOffset);\n    return MATRIX(1, 0, 0, -1, 0, yOffset);\n  }\n  // Convert arc commands to curve commands\n  export function A_TO_C() {\n    return INFO((command, prevX, prevY) => {\n      if (SVGPathData.ARC === command.type) {\n        return a2c(command, command.relative ? 0 : prevX, command.relative ? 0 : prevY);\n      }\n      return command;\n    });\n  }\n  // @see annotateArcCommand\n  export function ANNOTATE_ARCS() {\n    return INFO((c, x1, y1) => {\n      if (c.relative) {\n        x1 = 0;\n        y1 = 0;\n      }\n      if (SVGPathData.ARC === c.type) {\n        annotateArcCommand(c, x1, y1);\n      }\n      return c;\n    });\n  }\n  export function CLONE() {\n    return (c: SVGCommand) => {\n      const result = {} as SVGCommand;\n      // tslint:disable-next-line\n      for (const key in c) {\n        result[key as keyof SVGCommand] = c[key as keyof SVGCommand];\n      }\n      return result;\n    };\n  }\n  // @see annotateArcCommand\n  export function CALCULATE_BOUNDS() {\n    const clone = CLONE();\n    const toAbs = TO_ABS();\n    const qtToC = QT_TO_C();\n    const normST = NORMALIZE_ST();\n    const f: TransformFunction & {minX: number, maxX: number, minY: number, maxY: number} =\n        INFO((command, prevXAbs, prevYAbs) => {\n      const c = normST(qtToC(toAbs(clone(command))));\n      function fixX(absX: number) {\n        if (absX > f.maxX) { f.maxX = absX; }\n        if (absX < f.minX) { f.minX = absX; }\n      }\n      function fixY(absY: number) {\n        if (absY > f.maxY) { f.maxY = absY; }\n        if (absY < f.minY) { f.minY = absY; }\n      }\n      if (c.type & SVGPathData.DRAWING_COMMANDS) {\n        fixX(prevXAbs);\n        fixY(prevYAbs);\n      }\n      if (c.type & SVGPathData.HORIZ_LINE_TO) {\n        fixX(c.x);\n      }\n      if (c.type & SVGPathData.VERT_LINE_TO) {\n        fixY(c.y);\n      }\n      if (c.type & SVGPathData.LINE_TO) {\n        fixX(c.x);\n        fixY(c.y);\n      }\n      if (c.type & SVGPathData.CURVE_TO) {\n        // add start and end points\n        fixX(c.x);\n        fixY(c.y);\n        const xDerivRoots = bezierRoot(prevXAbs, c.x1, c.x2, c.x);\n\n        for (const derivRoot of xDerivRoots) {\n          if (0 < derivRoot && 1 > derivRoot) {\n            fixX(bezierAt(prevXAbs, c.x1, c.x2, c.x, derivRoot));\n          }\n        }\n        const yDerivRoots = bezierRoot(prevYAbs, c.y1, c.y2, c.y);\n\n        for (const derivRoot of yDerivRoots) {\n          if (0 < derivRoot && 1 > derivRoot) {\n            fixY(bezierAt(prevYAbs, c.y1, c.y2, c.y, derivRoot));\n          }\n        }\n      }\n      if (c.type & SVGPathData.ARC) {\n        // add start and end points\n        fixX(c.x);\n        fixY(c.y);\n        annotateArcCommand(c, prevXAbs, prevYAbs);\n        // p = cos(phi) * xv + sin(phi) * yv\n        // dp = -sin(phi) * xv + cos(phi) * yv = 0\n        const xRotRad = c.xRot / 180 * Math.PI;\n        // points on ellipse for phi = 0\u00B0 and phi = 90\u00B0\n        const x0 = Math.cos(xRotRad) * c.rX;\n        const y0 = Math.sin(xRotRad) * c.rX;\n        const x90 = -Math.sin(xRotRad) * c.rY;\n        const y90 = Math.cos(xRotRad) * c.rY;\n\n        // annotateArcCommand returns phi1 and phi2 such that -180\u00B0 < phi1 < 180\u00B0 and phi2 is smaller or greater\n        // depending on the sweep flag. Calculate phiMin, phiMax such that -180\u00B0 < phiMin < 180\u00B0 and phiMin < phiMax\n        const [phiMin, phiMax] = c.phi1 < c.phi2 ?\n          [c.phi1, c.phi2] :\n          (-180 > c.phi2 ? [c.phi2 + 360, c.phi1 + 360] : [c.phi2, c.phi1]);\n        const normalizeXiEta = ([xi, eta]: [number, number]) => {\n          const phiRad = Math.atan2(eta, xi);\n          const phi = phiRad * 180 / Math.PI;\n\n          return phi < phiMin ? phi + 360 : phi;\n        };\n        // xi = cos(phi), eta = sin(phi)\n\n        const xDerivRoots = intersectionUnitCircleLine(x90, -x0, 0).map(normalizeXiEta);\n        for (const derivRoot of xDerivRoots) {\n          if (derivRoot > phiMin && derivRoot < phiMax) {\n            fixX(arcAt(c.cX, x0, x90, derivRoot));\n          }\n        }\n\n        const yDerivRoots = intersectionUnitCircleLine(y90, -y0, 0).map(normalizeXiEta);\n        for (const derivRoot of yDerivRoots) {\n          if (derivRoot > phiMin && derivRoot < phiMax) {\n            fixY(arcAt(c.cY, y0, y90, derivRoot));\n          }\n        }\n      }\n      return command;\n    }) as any;\n\n    f.minX = Infinity;\n    f.maxX = -Infinity;\n    f.minY = Infinity;\n    f.maxY = -Infinity;\n    return f;\n  }\n}\n", "import { SVGPathDataTransformer } from \"./SVGPathDataTransformer\";\nimport { TransformFunction } from \"./types\";\n\nexport abstract class TransformableSVG {\n  round(x?: number) {\n    return this.transform(SVGPathDataTransformer.ROUND(x));\n  }\n\n  toAbs() {\n    return this.transform(SVGPathDataTransformer.TO_ABS());\n  }\n\n  toRel() {\n    return this.transform(SVGPathDataTransformer.TO_REL());\n  }\n\n  normalizeHVZ(a?: boolean, b?: boolean, c?: boolean) {\n    return this.transform(SVGPathDataTransformer.NORMALIZE_HVZ(a, b, c));\n  }\n\n  normalizeST() {\n    return this.transform(SVGPathDataTransformer.NORMALIZE_ST());\n  }\n\n  qtToC() {\n    return this.transform(SVGPathDataTransformer.QT_TO_C());\n  }\n\n  aToC() {\n    return this.transform(SVGPathDataTransformer.A_TO_C());\n  }\n\n  sanitize(eps?: number) {\n    return this.transform(SVGPathDataTransformer.SANITIZE(eps));\n  }\n\n  translate(x: number, y?: number) {\n    return this.transform(SVGPathDataTransformer.TRANSLATE(x, y));\n  }\n\n  scale(x: number, y?: number) {\n    return this.transform(SVGPathDataTransformer.SCALE(x, y));\n  }\n\n  rotate(a: number, x?: number, y?: number) {\n    return this.transform(SVGPathDataTransformer.ROTATE(a, x, y));\n  }\n\n  matrix(a: number, b: number, c: number, d: number, e: number, f: number) {\n    return this.transform(SVGPathDataTransformer.MATRIX(a, b, c, d, e, f));\n  }\n\n  skewX(a: number) {\n    return this.transform(SVGPathDataTransformer.SKEW_X(a));\n  }\n\n  skewY(a: number) {\n    return this.transform(SVGPathDataTransformer.SKEW_Y(a));\n  }\n\n  xSymmetry(xOffset?: number) {\n    return this.transform(SVGPathDataTransformer.X_AXIS_SYMMETRY(xOffset));\n  }\n\n  ySymmetry(yOffset?: number) {\n    return this.transform(SVGPathDataTransformer.Y_AXIS_SYMMETRY(yOffset));\n  }\n\n  annotateArcs() {\n    return this.transform(SVGPathDataTransformer.ANNOTATE_ARCS());\n  }\n\n  abstract transform(transformFunction: TransformFunction): this;\n}\n", "// Parse SVG PathData\n// http://www.w3.org/TR/SVG/paths.html#PathDataBNF\nimport { COMMAND_ARG_COUNTS, SVGPathData } from \"./SVGPathData\";\nimport { TransformableSVG } from \"./TransformableSVG\";\nimport { SVGCommand, TransformFunction } from \"./types\";\n// Private consts : Char groups\nconst isWhiteSpace = (c: string) =>\n  \" \" === c || \"\\t\" === c || \"\\r\" === c || \"\\n\" === c;\nconst isDigit = (c: string) =>\n  \"0\".charCodeAt(0) <= c.charCodeAt(0) && c.charCodeAt(0) <= \"9\".charCodeAt(0);\nconst COMMANDS = \"mMzZlLhHvVcCsSqQtTaA\";\n\nexport class SVGPathDataParser extends TransformableSVG {\n  private curNumber: string = \"\";\n  private curCommandType: SVGCommand[\"type\"] | -1 = -1;\n  private curCommandRelative = false;\n  private canParseCommandOrComma = true;\n  private curNumberHasExp = false;\n  private curNumberHasExpDigits = false;\n  private curNumberHasDecimal = false;\n  private curArgs: number[] = [];\n\n  constructor() {\n    super();\n  }\n\n  finish(commands: SVGCommand[] = []) {\n    this.parse(\" \", commands);\n    // Adding residual command\n    if (0 !== this.curArgs.length || !this.canParseCommandOrComma) {\n      throw new SyntaxError(\"Unterminated command at the path end.\");\n    }\n    return commands;\n  }\n\n  parse(str: string, commands: SVGCommand[] = []) {\n    const finishCommand = (command: SVGCommand) => {\n      commands.push(command);\n      this.curArgs.length = 0;\n      this.canParseCommandOrComma = true;\n    };\n\n    for (let i = 0; i < str.length; i++) {\n      const c = str[i];\n      // White spaces parsing\n      const isAArcFlag = this.curCommandType === SVGPathData.ARC &&\n        (this.curArgs.length === 3 || this.curArgs.length === 4) &&\n        this.curNumber.length === 1 &&\n        (this.curNumber === \"0\" || this.curNumber === \"1\");\n      const isEndingDigit = isDigit(c) && (\n        (this.curNumber === \"0\" && c === \"0\") ||\n        isAArcFlag\n      );\n\n      if (\n        isDigit(c) &&\n        !isEndingDigit\n      ) {\n        this.curNumber += c;\n        this.curNumberHasExpDigits = this.curNumberHasExp;\n        continue;\n      }\n      if (\"e\" === c || \"E\" === c) {\n        this.curNumber += c;\n        this.curNumberHasExp = true;\n        continue;\n      }\n      if (\n        (\"-\" === c || \"+\" === c) &&\n        this.curNumberHasExp &&\n        !this.curNumberHasExpDigits\n      ) {\n        this.curNumber += c;\n        continue;\n      }\n      // if we already have a \".\", it means we are starting a new number\n      if (\".\" === c && !this.curNumberHasExp && !this.curNumberHasDecimal && !isAArcFlag) {\n        this.curNumber += c;\n        this.curNumberHasDecimal = true;\n        continue;\n      }\n\n      // New number\n      if (this.curNumber && -1 !== this.curCommandType) {\n        const val = Number(this.curNumber);\n        if (isNaN(val)) {\n          throw new SyntaxError(`Invalid number ending at ${i}`);\n        }\n        if (this.curCommandType === SVGPathData.ARC) {\n          if (0 === this.curArgs.length || 1 === this.curArgs.length) {\n            if (0 > val) {\n              throw new SyntaxError(\n                `Expected positive number, got \"${val}\" at index \"${i}\"`,\n              );\n            }\n          } else if (3 === this.curArgs.length || 4 === this.curArgs.length) {\n            if (\"0\" !== this.curNumber && \"1\" !== this.curNumber) {\n              throw new SyntaxError(\n                `Expected a flag, got \"${this.curNumber}\" at index \"${i}\"`,\n              );\n            }\n          }\n        }\n        this.curArgs.push(val);\n        if (this.curArgs.length === COMMAND_ARG_COUNTS[this.curCommandType]) {\n          if (SVGPathData.HORIZ_LINE_TO === this.curCommandType) {\n            finishCommand({\n              type: SVGPathData.HORIZ_LINE_TO,\n              relative: this.curCommandRelative,\n              x: val,\n            });\n          } else if (SVGPathData.VERT_LINE_TO === this.curCommandType) {\n            finishCommand({\n              type: SVGPathData.VERT_LINE_TO,\n              relative: this.curCommandRelative,\n              y: val,\n            });\n            // Move to / line to / smooth quadratic curve to commands (x, y)\n          } else if (\n            this.curCommandType === SVGPathData.MOVE_TO ||\n            this.curCommandType === SVGPathData.LINE_TO ||\n            this.curCommandType === SVGPathData.SMOOTH_QUAD_TO\n          ) {\n            finishCommand({\n              type: this.curCommandType,\n              relative: this.curCommandRelative,\n              x: this.curArgs[0],\n              y: this.curArgs[1],\n            } as SVGCommand);\n            // Switch to line to state\n            if (SVGPathData.MOVE_TO === this.curCommandType) {\n              this.curCommandType = SVGPathData.LINE_TO;\n            }\n          } else if (this.curCommandType === SVGPathData.CURVE_TO) {\n            finishCommand({\n              type: SVGPathData.CURVE_TO,\n              relative: this.curCommandRelative,\n              x1: this.curArgs[0],\n              y1: this.curArgs[1],\n              x2: this.curArgs[2],\n              y2: this.curArgs[3],\n              x: this.curArgs[4],\n              y: this.curArgs[5],\n            });\n          } else if (this.curCommandType === SVGPathData.SMOOTH_CURVE_TO) {\n            finishCommand({\n              type: SVGPathData.SMOOTH_CURVE_TO,\n              relative: this.curCommandRelative,\n              x2: this.curArgs[0],\n              y2: this.curArgs[1],\n              x: this.curArgs[2],\n              y: this.curArgs[3],\n            });\n          } else if (this.curCommandType === SVGPathData.QUAD_TO) {\n            finishCommand({\n              type: SVGPathData.QUAD_TO,\n              relative: this.curCommandRelative,\n              x1: this.curArgs[0],\n              y1: this.curArgs[1],\n              x: this.curArgs[2],\n              y: this.curArgs[3],\n            });\n          } else if (this.curCommandType === SVGPathData.ARC) {\n            finishCommand({\n              type: SVGPathData.ARC,\n              relative: this.curCommandRelative,\n              rX: this.curArgs[0],\n              rY: this.curArgs[1],\n              xRot: this.curArgs[2],\n              lArcFlag: this.curArgs[3] as 0 | 1,\n              sweepFlag: this.curArgs[4] as 0 | 1,\n              x: this.curArgs[5],\n              y: this.curArgs[6],\n            });\n          }\n        }\n        this.curNumber = \"\";\n        this.curNumberHasExpDigits = false;\n        this.curNumberHasExp = false;\n        this.curNumberHasDecimal = false;\n        this.canParseCommandOrComma = true;\n      }\n      // Continue if a white space or a comma was detected\n      if (isWhiteSpace(c)) {\n        continue;\n      }\n      if (\",\" === c && this.canParseCommandOrComma) {\n        // L 0,0, H is not valid:\n        this.canParseCommandOrComma = false;\n        continue;\n      }\n      // if a sign is detected, then parse the new number\n      if (\"+\" === c || \"-\" === c || \".\" === c) {\n        this.curNumber = c;\n        this.curNumberHasDecimal = \".\" === c;\n        continue;\n      }\n      // if a 0 is detected, then parse the new number\n      if (isEndingDigit) {\n        this.curNumber = c;\n        this.curNumberHasDecimal = false;\n        continue;\n      }\n\n      // Adding residual command\n      if (0 !== this.curArgs.length) {\n        throw new SyntaxError(`Unterminated command at index ${i}.`);\n      }\n      if (!this.canParseCommandOrComma) {\n        throw new SyntaxError(\n          `Unexpected character \"${c}\" at index ${i}. Command cannot follow comma`,\n        );\n      }\n      this.canParseCommandOrComma = false;\n      // Detecting the next command\n      if (\"z\" === c || \"Z\" === c) {\n        commands.push({\n          type: SVGPathData.CLOSE_PATH,\n        });\n        this.canParseCommandOrComma = true;\n        this.curCommandType = -1;\n        continue;\n        // Horizontal move to command\n      } else if (\"h\" === c || \"H\" === c) {\n        this.curCommandType = SVGPathData.HORIZ_LINE_TO;\n        this.curCommandRelative = \"h\" === c;\n        // Vertical move to command\n      } else if (\"v\" === c || \"V\" === c) {\n        this.curCommandType = SVGPathData.VERT_LINE_TO;\n        this.curCommandRelative = \"v\" === c;\n        // Move to command\n      } else if (\"m\" === c || \"M\" === c) {\n        this.curCommandType = SVGPathData.MOVE_TO;\n        this.curCommandRelative = \"m\" === c;\n        // Line to command\n      } else if (\"l\" === c || \"L\" === c) {\n        this.curCommandType = SVGPathData.LINE_TO;\n        this.curCommandRelative = \"l\" === c;\n        // Curve to command\n      } else if (\"c\" === c || \"C\" === c) {\n        this.curCommandType = SVGPathData.CURVE_TO;\n        this.curCommandRelative = \"c\" === c;\n        // Smooth curve to command\n      } else if (\"s\" === c || \"S\" === c) {\n        this.curCommandType = SVGPathData.SMOOTH_CURVE_TO;\n        this.curCommandRelative = \"s\" === c;\n        // Quadratic bezier curve to command\n      } else if (\"q\" === c || \"Q\" === c) {\n        this.curCommandType = SVGPathData.QUAD_TO;\n        this.curCommandRelative = \"q\" === c;\n        // Smooth quadratic bezier curve to command\n      } else if (\"t\" === c || \"T\" === c) {\n        this.curCommandType = SVGPathData.SMOOTH_QUAD_TO;\n        this.curCommandRelative = \"t\" === c;\n        // Elliptic arc command\n      } else if (\"a\" === c || \"A\" === c) {\n        this.curCommandType = SVGPathData.ARC;\n        this.curCommandRelative = \"a\" === c;\n      } else {\n        throw new SyntaxError(`Unexpected character \"${c}\" at index ${i}.`);\n      }\n    }\n    return commands;\n  }\n  /**\n   * Return a wrapper around this parser which applies the transformation on parsed commands.\n   */\n  transform(transform: TransformFunction) {\n    const result = Object.create(this, {\n      parse: {\n        value(chunk: string, commands: SVGCommand[] = []) {\n          const parsedCommands = Object.getPrototypeOf(this).parse.call(\n            this,\n            chunk,\n          );\n          for (const c of parsedCommands) {\n            const cT = transform(c);\n            if (Array.isArray(cT)) {\n              commands.push(...cT);\n            } else {\n              commands.push(cT);\n            }\n          }\n          return commands;\n        },\n      },\n    });\n    return result as this;\n  }\n}\n", "import { encodeSVGPath } from \"./SVGPathDataEncoder\";\nimport { SVGPathDataParser } from \"./SVGPathDataParser\";\nimport { SVGPathDataTransformer } from \"./SVGPathDataTransformer\";\nimport { TransformableSVG } from \"./TransformableSVG\";\nimport { SVGCommand } from \"./types\";\n\nexport class SVGPathData extends TransformableSVG {\n  commands: SVGCommand[];\n  constructor(content: string | SVGCommand[]) {\n    super();\n    if (\"string\" === typeof content) {\n      this.commands = SVGPathData.parse(content);\n    } else {\n      this.commands = content;\n    }\n  }\n\n  encode() {\n    return SVGPathData.encode(this.commands);\n  }\n\n  getBounds() {\n    const boundsTransform = SVGPathDataTransformer.CALCULATE_BOUNDS();\n\n    this.transform(boundsTransform);\n    return boundsTransform;\n  }\n\n  transform(\n    transformFunction: (input: SVGCommand) => SVGCommand | SVGCommand[],\n  ) {\n    const newCommands = [];\n\n    for (const command of this.commands) {\n      const transformedCommand = transformFunction(command);\n\n      if (Array.isArray(transformedCommand)) {\n        newCommands.push(...transformedCommand);\n      } else {\n        newCommands.push(transformedCommand);\n      }\n    }\n    this.commands = newCommands;\n    return this;\n  }\n\n  static encode(commands: SVGCommand[]) {\n    return encodeSVGPath(commands);\n      }\n\n  static parse(path: string) {\n    const parser = new SVGPathDataParser();\n    const commands: SVGCommand[] = [];\n    parser.parse(path, commands);\n    parser.finish(commands);\n    return commands;\n  }\n\n  static readonly CLOSE_PATH: 1 = 1;\n  static readonly MOVE_TO: 2 = 2;\n  static readonly HORIZ_LINE_TO: 4 = 4;\n  static readonly VERT_LINE_TO: 8 = 8;\n  static readonly LINE_TO: 16 = 16;\n  static readonly CURVE_TO: 32 = 32;\n  static readonly SMOOTH_CURVE_TO: 64 = 64;\n  static readonly QUAD_TO: 128 = 128;\n  static readonly SMOOTH_QUAD_TO: 256 = 256;\n  static readonly ARC: 512 = 512;\n  static readonly LINE_COMMANDS = SVGPathData.LINE_TO | SVGPathData.HORIZ_LINE_TO | SVGPathData.VERT_LINE_TO;\n  static readonly DRAWING_COMMANDS = SVGPathData.HORIZ_LINE_TO | SVGPathData.VERT_LINE_TO | SVGPathData.LINE_TO |\n  SVGPathData.CURVE_TO | SVGPathData.SMOOTH_CURVE_TO | SVGPathData.QUAD_TO |\n  SVGPathData.SMOOTH_QUAD_TO | SVGPathData.ARC;\n}\n\nexport const COMMAND_ARG_COUNTS = {\n    [SVGPathData.MOVE_TO]: 2,\n    [SVGPathData.LINE_TO]: 2,\n    [SVGPathData.HORIZ_LINE_TO]: 1,\n    [SVGPathData.VERT_LINE_TO]: 1,\n    [SVGPathData.CLOSE_PATH]: 0,\n    [SVGPathData.QUAD_TO]: 4,\n    [SVGPathData.SMOOTH_QUAD_TO]: 2,\n    [SVGPathData.CURVE_TO]: 6,\n    [SVGPathData.SMOOTH_CURVE_TO]: 4,\n    [SVGPathData.ARC]: 7,\n};\n\nexport {encodeSVGPath} from \"./SVGPathDataEncoder\";\nexport {SVGPathDataParser} from \"./SVGPathDataParser\";\nexport {SVGPathDataTransformer} from \"./SVGPathDataTransformer\";\n", "'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  defineBuiltIn(RegExpPrototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var pattern = $toString(R.source);\n    var flags = $toString(getRegExpFlags(R));\n    return '/' + pattern + '/' + flags;\n  }, { unsafe: true });\n}\n", "function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\n/* eslint-disable no-bitwise -- used for calculations */\n\n/* eslint-disable unicorn/prefer-query-selector -- aiming at\n  backward-compatibility */\n\n/**\n* StackBlur - a fast almost Gaussian Blur For Canvas\n*\n* In case you find this class useful - especially in commercial projects -\n* I am not totally unhappy for a small donation to my PayPal account\n* mario@quasimondo.de\n*\n* Or support me on flattr:\n* {@link https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript}.\n*\n* @module StackBlur\n* @author Mario Klingemann\n* Contact: mario@quasimondo.com\n* Website: {@link http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html}\n* Twitter: @quasimondo\n*\n* @copyright (c) 2010 Mario Klingemann\n*\n* Permission is hereby granted, free of charge, to any person\n* obtaining a copy of this software and associated documentation\n* files (the \"Software\"), to deal in the Software without\n* restriction, including without limitation the rights to use,\n* copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the\n* Software is furnished to do so, subject to the following\n* conditions:\n*\n* The above copyright notice and this permission notice shall be\n* included in all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n* OTHER DEALINGS IN THE SOFTWARE.\n*/\nvar mulTable = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\nvar shgTable = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n/**\n * @param {string|HTMLImageElement} img\n * @param {string|HTMLCanvasElement} canvas\n * @param {Float} radius\n * @param {boolean} blurAlphaChannel\n * @param {boolean} useOffset\n * @param {boolean} skipStyles\n * @returns {undefined}\n */\n\nfunction processImage(img, canvas, radius, blurAlphaChannel, useOffset, skipStyles) {\n  if (typeof img === 'string') {\n    img = document.getElementById(img);\n  }\n\n  if (!img || Object.prototype.toString.call(img).slice(8, -1) === 'HTMLImageElement' && !('naturalWidth' in img)) {\n    return;\n  }\n\n  var dimensionType = useOffset ? 'offset' : 'natural';\n  var w = img[dimensionType + 'Width'];\n  var h = img[dimensionType + 'Height']; // add ImageBitmap support,can blur texture source\n\n  if (Object.prototype.toString.call(img).slice(8, -1) === 'ImageBitmap') {\n    w = img.width;\n    h = img.height;\n  }\n\n  if (typeof canvas === 'string') {\n    canvas = document.getElementById(canvas);\n  }\n\n  if (!canvas || !('getContext' in canvas)) {\n    return;\n  }\n\n  if (!skipStyles) {\n    canvas.style.width = w + 'px';\n    canvas.style.height = h + 'px';\n  }\n\n  canvas.width = w;\n  canvas.height = h;\n  var context = canvas.getContext('2d');\n  context.clearRect(0, 0, w, h);\n  context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, w, h);\n\n  if (isNaN(radius) || radius < 1) {\n    return;\n  }\n\n  if (blurAlphaChannel) {\n    processCanvasRGBA(canvas, 0, 0, w, h, radius);\n  } else {\n    processCanvasRGB(canvas, 0, 0, w, h, radius);\n  }\n}\n/**\n * @param {string|HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @throws {Error|TypeError}\n * @returns {ImageData} See {@link https://html.spec.whatwg.org/multipage/canvas.html#imagedata}\n */\n\n\nfunction getImageDataFromCanvas(canvas, topX, topY, width, height) {\n  if (typeof canvas === 'string') {\n    canvas = document.getElementById(canvas);\n  }\n\n  if (!canvas || _typeof(canvas) !== 'object' || !('getContext' in canvas)) {\n    throw new TypeError('Expecting canvas with `getContext` method ' + 'in processCanvasRGB(A) calls!');\n  }\n\n  var context = canvas.getContext('2d');\n\n  try {\n    return context.getImageData(topX, topY, width, height);\n  } catch (e) {\n    throw new Error('unable to access image data: ' + e);\n  }\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGBA(canvas, topX, topY, width, height, radius) {\n  if (isNaN(radius) || radius < 1) {\n    return;\n  }\n\n  radius |= 0;\n  var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n  imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius);\n  canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGBA(imageData, topX, topY, width, height, radius) {\n  var pixels = imageData.data;\n  var div = 2 * radius + 1; // const w4 = width << 2;\n\n  var widthMinus1 = width - 1;\n  var heightMinus1 = height - 1;\n  var radiusPlus1 = radius + 1;\n  var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n  var stackStart = new BlurStack();\n  var stack = stackStart;\n  var stackEnd;\n\n  for (var i = 1; i < div; i++) {\n    stack = stack.next = new BlurStack();\n\n    if (i === radiusPlus1) {\n      stackEnd = stack;\n    }\n  }\n\n  stack.next = stackStart;\n  var stackIn = null,\n      stackOut = null,\n      yw = 0,\n      yi = 0;\n  var mulSum = mulTable[radius];\n  var shgSum = shgTable[radius];\n\n  for (var y = 0; y < height; y++) {\n    stack = stackStart;\n    var pr = pixels[yi],\n        pg = pixels[yi + 1],\n        pb = pixels[yi + 2],\n        pa = pixels[yi + 3];\n\n    for (var _i = 0; _i < radiusPlus1; _i++) {\n      stack.r = pr;\n      stack.g = pg;\n      stack.b = pb;\n      stack.a = pa;\n      stack = stack.next;\n    }\n\n    var rInSum = 0,\n        gInSum = 0,\n        bInSum = 0,\n        aInSum = 0,\n        rOutSum = radiusPlus1 * pr,\n        gOutSum = radiusPlus1 * pg,\n        bOutSum = radiusPlus1 * pb,\n        aOutSum = radiusPlus1 * pa,\n        rSum = sumFactor * pr,\n        gSum = sumFactor * pg,\n        bSum = sumFactor * pb,\n        aSum = sumFactor * pa;\n\n    for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {\n      var p = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2);\n      var r = pixels[p],\n          g = pixels[p + 1],\n          b = pixels[p + 2],\n          a = pixels[p + 3];\n      var rbs = radiusPlus1 - _i2;\n      rSum += (stack.r = r) * rbs;\n      gSum += (stack.g = g) * rbs;\n      bSum += (stack.b = b) * rbs;\n      aSum += (stack.a = a) * rbs;\n      rInSum += r;\n      gInSum += g;\n      bInSum += b;\n      aInSum += a;\n      stack = stack.next;\n    }\n\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var x = 0; x < width; x++) {\n      var paInitial = aSum * mulSum >>> shgSum;\n      pixels[yi + 3] = paInitial;\n\n      if (paInitial !== 0) {\n        var _a2 = 255 / paInitial;\n\n        pixels[yi] = (rSum * mulSum >>> shgSum) * _a2;\n        pixels[yi + 1] = (gSum * mulSum >>> shgSum) * _a2;\n        pixels[yi + 2] = (bSum * mulSum >>> shgSum) * _a2;\n      } else {\n        pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n      }\n\n      rSum -= rOutSum;\n      gSum -= gOutSum;\n      bSum -= bOutSum;\n      aSum -= aOutSum;\n      rOutSum -= stackIn.r;\n      gOutSum -= stackIn.g;\n      bOutSum -= stackIn.b;\n      aOutSum -= stackIn.a;\n\n      var _p = x + radius + 1;\n\n      _p = yw + (_p < widthMinus1 ? _p : widthMinus1) << 2;\n      rInSum += stackIn.r = pixels[_p];\n      gInSum += stackIn.g = pixels[_p + 1];\n      bInSum += stackIn.b = pixels[_p + 2];\n      aInSum += stackIn.a = pixels[_p + 3];\n      rSum += rInSum;\n      gSum += gInSum;\n      bSum += bInSum;\n      aSum += aInSum;\n      stackIn = stackIn.next;\n      var _stackOut = stackOut,\n          _r = _stackOut.r,\n          _g = _stackOut.g,\n          _b = _stackOut.b,\n          _a = _stackOut.a;\n      rOutSum += _r;\n      gOutSum += _g;\n      bOutSum += _b;\n      aOutSum += _a;\n      rInSum -= _r;\n      gInSum -= _g;\n      bInSum -= _b;\n      aInSum -= _a;\n      stackOut = stackOut.next;\n      yi += 4;\n    }\n\n    yw += width;\n  }\n\n  for (var _x = 0; _x < width; _x++) {\n    yi = _x << 2;\n\n    var _pr = pixels[yi],\n        _pg = pixels[yi + 1],\n        _pb = pixels[yi + 2],\n        _pa = pixels[yi + 3],\n        _rOutSum = radiusPlus1 * _pr,\n        _gOutSum = radiusPlus1 * _pg,\n        _bOutSum = radiusPlus1 * _pb,\n        _aOutSum = radiusPlus1 * _pa,\n        _rSum = sumFactor * _pr,\n        _gSum = sumFactor * _pg,\n        _bSum = sumFactor * _pb,\n        _aSum = sumFactor * _pa;\n\n    stack = stackStart;\n\n    for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {\n      stack.r = _pr;\n      stack.g = _pg;\n      stack.b = _pb;\n      stack.a = _pa;\n      stack = stack.next;\n    }\n\n    var yp = width;\n    var _gInSum = 0,\n        _bInSum = 0,\n        _aInSum = 0,\n        _rInSum = 0;\n\n    for (var _i4 = 1; _i4 <= radius; _i4++) {\n      yi = yp + _x << 2;\n\n      var _rbs = radiusPlus1 - _i4;\n\n      _rSum += (stack.r = _pr = pixels[yi]) * _rbs;\n      _gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs;\n      _bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs;\n      _aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs;\n      _rInSum += _pr;\n      _gInSum += _pg;\n      _bInSum += _pb;\n      _aInSum += _pa;\n      stack = stack.next;\n\n      if (_i4 < heightMinus1) {\n        yp += width;\n      }\n    }\n\n    yi = _x;\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var _y = 0; _y < height; _y++) {\n      var _p2 = yi << 2;\n\n      pixels[_p2 + 3] = _pa = _aSum * mulSum >>> shgSum;\n\n      if (_pa > 0) {\n        _pa = 255 / _pa;\n        pixels[_p2] = (_rSum * mulSum >>> shgSum) * _pa;\n        pixels[_p2 + 1] = (_gSum * mulSum >>> shgSum) * _pa;\n        pixels[_p2 + 2] = (_bSum * mulSum >>> shgSum) * _pa;\n      } else {\n        pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0;\n      }\n\n      _rSum -= _rOutSum;\n      _gSum -= _gOutSum;\n      _bSum -= _bOutSum;\n      _aSum -= _aOutSum;\n      _rOutSum -= stackIn.r;\n      _gOutSum -= stackIn.g;\n      _bOutSum -= stackIn.b;\n      _aOutSum -= stackIn.a;\n      _p2 = _x + ((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) * width << 2;\n      _rSum += _rInSum += stackIn.r = pixels[_p2];\n      _gSum += _gInSum += stackIn.g = pixels[_p2 + 1];\n      _bSum += _bInSum += stackIn.b = pixels[_p2 + 2];\n      _aSum += _aInSum += stackIn.a = pixels[_p2 + 3];\n      stackIn = stackIn.next;\n      _rOutSum += _pr = stackOut.r;\n      _gOutSum += _pg = stackOut.g;\n      _bOutSum += _pb = stackOut.b;\n      _aOutSum += _pa = stackOut.a;\n      _rInSum -= _pr;\n      _gInSum -= _pg;\n      _bInSum -= _pb;\n      _aInSum -= _pa;\n      stackOut = stackOut.next;\n      yi += width;\n    }\n  }\n\n  return imageData;\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGB(canvas, topX, topY, width, height, radius) {\n  if (isNaN(radius) || radius < 1) {\n    return;\n  }\n\n  radius |= 0;\n  var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n  imageData = processImageDataRGB(imageData, topX, topY, width, height, radius);\n  canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGB(imageData, topX, topY, width, height, radius) {\n  var pixels = imageData.data;\n  var div = 2 * radius + 1; // const w4 = width << 2;\n\n  var widthMinus1 = width - 1;\n  var heightMinus1 = height - 1;\n  var radiusPlus1 = radius + 1;\n  var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n  var stackStart = new BlurStack();\n  var stack = stackStart;\n  var stackEnd;\n\n  for (var i = 1; i < div; i++) {\n    stack = stack.next = new BlurStack();\n\n    if (i === radiusPlus1) {\n      stackEnd = stack;\n    }\n  }\n\n  stack.next = stackStart;\n  var stackIn = null;\n  var stackOut = null;\n  var mulSum = mulTable[radius];\n  var shgSum = shgTable[radius];\n  var p, rbs;\n  var yw = 0,\n      yi = 0;\n\n  for (var y = 0; y < height; y++) {\n    var pr = pixels[yi],\n        pg = pixels[yi + 1],\n        pb = pixels[yi + 2],\n        rOutSum = radiusPlus1 * pr,\n        gOutSum = radiusPlus1 * pg,\n        bOutSum = radiusPlus1 * pb,\n        rSum = sumFactor * pr,\n        gSum = sumFactor * pg,\n        bSum = sumFactor * pb;\n    stack = stackStart;\n\n    for (var _i5 = 0; _i5 < radiusPlus1; _i5++) {\n      stack.r = pr;\n      stack.g = pg;\n      stack.b = pb;\n      stack = stack.next;\n    }\n\n    var rInSum = 0,\n        gInSum = 0,\n        bInSum = 0;\n\n    for (var _i6 = 1; _i6 < radiusPlus1; _i6++) {\n      p = yi + ((widthMinus1 < _i6 ? widthMinus1 : _i6) << 2);\n      rSum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - _i6);\n      gSum += (stack.g = pg = pixels[p + 1]) * rbs;\n      bSum += (stack.b = pb = pixels[p + 2]) * rbs;\n      rInSum += pr;\n      gInSum += pg;\n      bInSum += pb;\n      stack = stack.next;\n    }\n\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var x = 0; x < width; x++) {\n      pixels[yi] = rSum * mulSum >>> shgSum;\n      pixels[yi + 1] = gSum * mulSum >>> shgSum;\n      pixels[yi + 2] = bSum * mulSum >>> shgSum;\n      rSum -= rOutSum;\n      gSum -= gOutSum;\n      bSum -= bOutSum;\n      rOutSum -= stackIn.r;\n      gOutSum -= stackIn.g;\n      bOutSum -= stackIn.b;\n      p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2;\n      rInSum += stackIn.r = pixels[p];\n      gInSum += stackIn.g = pixels[p + 1];\n      bInSum += stackIn.b = pixels[p + 2];\n      rSum += rInSum;\n      gSum += gInSum;\n      bSum += bInSum;\n      stackIn = stackIn.next;\n      rOutSum += pr = stackOut.r;\n      gOutSum += pg = stackOut.g;\n      bOutSum += pb = stackOut.b;\n      rInSum -= pr;\n      gInSum -= pg;\n      bInSum -= pb;\n      stackOut = stackOut.next;\n      yi += 4;\n    }\n\n    yw += width;\n  }\n\n  for (var _x2 = 0; _x2 < width; _x2++) {\n    yi = _x2 << 2;\n\n    var _pr2 = pixels[yi],\n        _pg2 = pixels[yi + 1],\n        _pb2 = pixels[yi + 2],\n        _rOutSum2 = radiusPlus1 * _pr2,\n        _gOutSum2 = radiusPlus1 * _pg2,\n        _bOutSum2 = radiusPlus1 * _pb2,\n        _rSum2 = sumFactor * _pr2,\n        _gSum2 = sumFactor * _pg2,\n        _bSum2 = sumFactor * _pb2;\n\n    stack = stackStart;\n\n    for (var _i7 = 0; _i7 < radiusPlus1; _i7++) {\n      stack.r = _pr2;\n      stack.g = _pg2;\n      stack.b = _pb2;\n      stack = stack.next;\n    }\n\n    var _rInSum2 = 0,\n        _gInSum2 = 0,\n        _bInSum2 = 0;\n\n    for (var _i8 = 1, yp = width; _i8 <= radius; _i8++) {\n      yi = yp + _x2 << 2;\n      _rSum2 += (stack.r = _pr2 = pixels[yi]) * (rbs = radiusPlus1 - _i8);\n      _gSum2 += (stack.g = _pg2 = pixels[yi + 1]) * rbs;\n      _bSum2 += (stack.b = _pb2 = pixels[yi + 2]) * rbs;\n      _rInSum2 += _pr2;\n      _gInSum2 += _pg2;\n      _bInSum2 += _pb2;\n      stack = stack.next;\n\n      if (_i8 < heightMinus1) {\n        yp += width;\n      }\n    }\n\n    yi = _x2;\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var _y2 = 0; _y2 < height; _y2++) {\n      p = yi << 2;\n      pixels[p] = _rSum2 * mulSum >>> shgSum;\n      pixels[p + 1] = _gSum2 * mulSum >>> shgSum;\n      pixels[p + 2] = _bSum2 * mulSum >>> shgSum;\n      _rSum2 -= _rOutSum2;\n      _gSum2 -= _gOutSum2;\n      _bSum2 -= _bOutSum2;\n      _rOutSum2 -= stackIn.r;\n      _gOutSum2 -= stackIn.g;\n      _bOutSum2 -= stackIn.b;\n      p = _x2 + ((p = _y2 + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2;\n      _rSum2 += _rInSum2 += stackIn.r = pixels[p];\n      _gSum2 += _gInSum2 += stackIn.g = pixels[p + 1];\n      _bSum2 += _bInSum2 += stackIn.b = pixels[p + 2];\n      stackIn = stackIn.next;\n      _rOutSum2 += _pr2 = stackOut.r;\n      _gOutSum2 += _pg2 = stackOut.g;\n      _bOutSum2 += _pb2 = stackOut.b;\n      _rInSum2 -= _pr2;\n      _gInSum2 -= _pg2;\n      _bInSum2 -= _pb2;\n      stackOut = stackOut.next;\n      yi += width;\n    }\n  }\n\n  return imageData;\n}\n/**\n *\n */\n\n\nvar BlurStack =\n/**\n * Set properties.\n */\nfunction BlurStack() {\n  _classCallCheck(this, BlurStack);\n\n  this.r = 0;\n  this.g = 0;\n  this.b = 0;\n  this.a = 0;\n  this.next = null;\n};\n\nexport { BlurStack, processCanvasRGB as canvasRGB, processCanvasRGBA as canvasRGBA, processImage as image, processImageDataRGB as imageDataRGB, processImageDataRGBA as imageDataRGBA };\n", "import 'core-js/modules/es.promise.js';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport 'core-js/modules/es.string.match.js';\nimport 'core-js/modules/es.string.replace.js';\nimport 'core-js/modules/es.string.starts-with.js';\nimport 'core-js/modules/es.array.iterator.js';\nimport 'core-js/modules/web.dom-collections.iterator.js';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport 'core-js/modules/es.array.reduce.js';\nimport 'core-js/modules/es.string.ends-with.js';\nimport 'core-js/modules/es.string.split.js';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.string.trim.js';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.array.index-of.js';\nimport 'core-js/modules/es.string.includes.js';\nimport 'core-js/modules/es.array.reverse.js';\nimport { SVGPathData } from 'svg-pathdata';\nimport 'core-js/modules/es.regexp.to-string.js';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @returns Preset object.\r\n */\nfunction offscreen() {\n  var {\n    DOMParser: DOMParserFallback\n  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var preset = {\n    window: null,\n    ignoreAnimation: true,\n    ignoreMouse: true,\n    DOMParser: DOMParserFallback,\n\n    createCanvas(width, height) {\n      return new OffscreenCanvas(width, height);\n    },\n\n    createImage(url) {\n      return _asyncToGenerator(function* () {\n        var response = yield fetch(url);\n        var blob = yield response.blob();\n        var img = yield createImageBitmap(blob);\n        return img;\n      })();\n    }\n\n  };\n\n  if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n    Reflect.deleteProperty(preset, 'DOMParser');\n  }\n\n  return preset;\n}\n\n/**\r\n * Options preset for `node-canvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @param config.canvas - `node-canvas` exports.\r\n * @param config.fetch - WHATWG-compatible `fetch` function.\r\n * @returns Preset object.\r\n */\nfunction node(_ref) {\n  var {\n    DOMParser,\n    canvas,\n    fetch\n  } = _ref;\n  return {\n    window: null,\n    ignoreAnimation: true,\n    ignoreMouse: true,\n    DOMParser,\n    fetch,\n    createCanvas: canvas.createCanvas,\n    createImage: canvas.loadImage\n  };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\r\n * @returns String.\r\n */\nfunction compressSpaces(str) {\n  return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\r\n * HTML-safe left trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimLeft(str) {\n  return str.replace(/^[\\n \\t]+/, '');\n}\n/**\r\n * HTML-safe right trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimRight(str) {\n  return str.replace(/[\\n \\t]+$/, '');\n}\n/**\r\n * String to numbers array.\r\n * @param str - Numbers string.\r\n * @returns Numbers array.\r\n */\n\nfunction toNumbers(str) {\n  var matches = (str || '').match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm) || [];\n  return matches.map(parseFloat);\n} // Microsoft Edge fix\n\nvar allUppercase = /^[A-Z-]+$/;\n/**\r\n * Normalize attribute name.\r\n * @param name - Attribute name.\r\n * @returns Normalized attribute name.\r\n */\n\nfunction normalizeAttributeName(name) {\n  if (allUppercase.test(name)) {\n    return name.toLowerCase();\n  }\n\n  return name;\n}\n/**\r\n * Parse external URL.\r\n * @param url - CSS url string.\r\n * @returns Parsed URL.\r\n */\n\nfunction parseExternalUrl(url) {\n  //                      single quotes [2]\n  //                      v         double quotes [3]\n  //                      v         v         no quotes [4]\n  //                      v         v         v\n  var urlMatch = /url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url) || [];\n  return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\r\n * Transform floats to integers in rgb colors.\r\n * @param color - Color to normalize.\r\n * @returns Normalized color.\r\n */\n\nfunction normalizeColor(color) {\n  if (!color.startsWith('rgb')) {\n    return color;\n  }\n\n  var rgbParts = 3;\n  var normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);\n  return normalizedColor;\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s+>~.[:]+)/g;\nvar classRegex = /(\\.[^\\s+>~.[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s+>~.[:]+)/g;\nvar elementRegex = /([^\\s+>~.[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n  var matches = regex.exec(selector);\n\n  if (!matches) {\n    return [selector, 0];\n  }\n\n  return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\r\n * @returns Specificity.\r\n */\n\n\nfunction getSelectorSpecificity(selector) {\n  var specificity = [0, 0, 0];\n  var currentSelector = selector.replace(/:not\\(([^)]*)\\)/g, '     $1 ').replace(/{[\\s\\S]*/gm, ' ');\n  var delta = 0;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n  specificity[1] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n  specificity[0] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n  specificity[1] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n  specificity[2] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n  specificity[1] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n  specificity[1] += delta;\n  currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n  [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]\n\n  specificity[2] += delta;\n  return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorMagnitude(v) {\n  return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\r\n * Ratio between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsRatio(u, v) {\n  return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\r\n * Angle between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsAngle(u, v) {\n  return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n  return t * t * t;\n}\nfunction CB2(t) {\n  return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n  return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n  return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n  return t * t;\n}\nfunction QB2(t) {\n  return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n  return (1 - t) * (1 - t);\n}\n\nclass Property {\n  constructor(document, name, value) {\n    this.document = document;\n    this.name = name;\n    this.value = value;\n    this.isNormalizedColor = false;\n  }\n\n  static empty(document) {\n    return new Property(document, 'EMPTY', '');\n  }\n\n  split() {\n    var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n    var {\n      document,\n      name\n    } = this;\n    return compressSpaces(this.getString()).trim().split(separator).map(value => new Property(document, name, value));\n  }\n\n  hasValue(zeroIsValue) {\n    var {\n      value\n    } = this;\n    return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n  }\n\n  isString(regexp) {\n    var {\n      value\n    } = this;\n    var result = typeof value === 'string';\n\n    if (!result || !regexp) {\n      return result;\n    }\n\n    return regexp.test(value);\n  }\n\n  isUrlDefinition() {\n    return this.isString(/^url\\(/);\n  }\n\n  isPixels() {\n    if (!this.hasValue()) {\n      return false;\n    }\n\n    var asString = this.getString();\n\n    switch (true) {\n      case asString.endsWith('px'):\n      case /^[0-9]+$/.test(asString):\n        return true;\n\n      default:\n        return false;\n    }\n  }\n\n  setValue(value) {\n    this.value = value;\n    return this;\n  }\n\n  getValue(def) {\n    if (typeof def === 'undefined' || this.hasValue()) {\n      return this.value;\n    }\n\n    return def;\n  }\n\n  getNumber(def) {\n    if (!this.hasValue()) {\n      if (typeof def === 'undefined') {\n        return 0;\n      }\n\n      return parseFloat(def);\n    }\n\n    var {\n      value\n    } = this;\n    var n = parseFloat(value);\n\n    if (this.isString(/%$/)) {\n      n /= 100.0;\n    }\n\n    return n;\n  }\n\n  getString(def) {\n    if (typeof def === 'undefined' || this.hasValue()) {\n      return typeof this.value === 'undefined' ? '' : String(this.value);\n    }\n\n    return String(def);\n  }\n\n  getColor(def) {\n    var color = this.getString(def);\n\n    if (this.isNormalizedColor) {\n      return color;\n    }\n\n    this.isNormalizedColor = true;\n    color = normalizeColor(color);\n    this.value = color;\n    return color;\n  }\n\n  getDpi() {\n    return 96.0; // TODO: compute?\n  }\n\n  getRem() {\n    return this.document.rootEmSize;\n  }\n\n  getEm() {\n    return this.document.emSize;\n  }\n\n  getUnits() {\n    return this.getString().replace(/[0-9.-]/g, '');\n  }\n\n  getPixels(axisOrIsFontSize) {\n    var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    if (!this.hasValue()) {\n      return 0;\n    }\n\n    var [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize];\n    var {\n      viewPort\n    } = this.document.screen;\n\n    switch (true) {\n      case this.isString(/vmin$/):\n        return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n      case this.isString(/vmax$/):\n        return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n      case this.isString(/vw$/):\n        return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n      case this.isString(/vh$/):\n        return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n      case this.isString(/rem$/):\n        return this.getNumber() * this.getRem();\n\n      case this.isString(/em$/):\n        return this.getNumber() * this.getEm();\n\n      case this.isString(/ex$/):\n        return this.getNumber() * this.getEm() / 2.0;\n\n      case this.isString(/px$/):\n        return this.getNumber();\n\n      case this.isString(/pt$/):\n        return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n      case this.isString(/pc$/):\n        return this.getNumber() * 15;\n\n      case this.isString(/cm$/):\n        return this.getNumber() * this.getDpi() / 2.54;\n\n      case this.isString(/mm$/):\n        return this.getNumber() * this.getDpi() / 25.4;\n\n      case this.isString(/in$/):\n        return this.getNumber() * this.getDpi();\n\n      case this.isString(/%$/) && isFontSize:\n        return this.getNumber() * this.getEm();\n\n      case this.isString(/%$/):\n        return this.getNumber() * viewPort.computeSize(axis);\n\n      default:\n        {\n          var n = this.getNumber();\n\n          if (processPercent && n < 1.0) {\n            return n * viewPort.computeSize(axis);\n          }\n\n          return n;\n        }\n    }\n  }\n\n  getMilliseconds() {\n    if (!this.hasValue()) {\n      return 0;\n    }\n\n    if (this.isString(/ms$/)) {\n      return this.getNumber();\n    }\n\n    return this.getNumber() * 1000;\n  }\n\n  getRadians() {\n    if (!this.hasValue()) {\n      return 0;\n    }\n\n    switch (true) {\n      case this.isString(/deg$/):\n        return this.getNumber() * (Math.PI / 180.0);\n\n      case this.isString(/grad$/):\n        return this.getNumber() * (Math.PI / 200.0);\n\n      case this.isString(/rad$/):\n        return this.getNumber();\n\n      default:\n        return this.getNumber() * (Math.PI / 180.0);\n    }\n  }\n\n  getDefinition() {\n    var asString = this.getString();\n    var name = /#([^)'\"]+)/.exec(asString);\n\n    if (name) {\n      name = name[1];\n    }\n\n    if (!name) {\n      name = asString;\n    }\n\n    return this.document.definitions[name];\n  }\n\n  getFillStyleDefinition(element, opacity) {\n    var def = this.getDefinition();\n\n    if (!def) {\n      return null;\n    } // gradient\n\n\n    if (typeof def.createGradient === 'function') {\n      return def.createGradient(this.document.ctx, element, opacity);\n    } // pattern\n\n\n    if (typeof def.createPattern === 'function') {\n      if (def.getHrefAttribute().hasValue()) {\n        var patternTransform = def.getAttribute('patternTransform');\n        def = def.getHrefAttribute().getDefinition();\n\n        if (patternTransform.hasValue()) {\n          def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n        }\n      }\n\n      return def.createPattern(this.document.ctx, element, opacity);\n    }\n\n    return null;\n  }\n\n  getTextBaseline() {\n    if (!this.hasValue()) {\n      return null;\n    }\n\n    return Property.textBaselineMapping[this.getString()];\n  }\n\n  addOpacity(opacity) {\n    var value = this.getColor();\n    var len = value.length;\n    var commas = 0; // Simulate old RGBColor version, which can't parse rgba.\n\n    for (var i = 0; i < len; i++) {\n      if (value[i] === ',') {\n        commas++;\n      }\n\n      if (commas === 3) {\n        break;\n      }\n    }\n\n    if (opacity.hasValue() && this.isString() && commas !== 3) {\n      var color = new RGBColor(value);\n\n      if (color.ok) {\n        color.alpha = opacity.getNumber();\n        value = color.toRGBA();\n      }\n    }\n\n    return new Property(this.document, this.name, value);\n  }\n\n}\nProperty.textBaselineMapping = {\n  'baseline': 'alphabetic',\n  'before-edge': 'top',\n  'text-before-edge': 'top',\n  'middle': 'middle',\n  'central': 'middle',\n  'after-edge': 'bottom',\n  'text-after-edge': 'bottom',\n  'ideographic': 'ideographic',\n  'alphabetic': 'alphabetic',\n  'hanging': 'hanging',\n  'mathematical': 'alphabetic'\n};\n\nclass ViewPort {\n  constructor() {\n    this.viewPorts = [];\n  }\n\n  clear() {\n    this.viewPorts = [];\n  }\n\n  setCurrent(width, height) {\n    this.viewPorts.push({\n      width,\n      height\n    });\n  }\n\n  removeCurrent() {\n    this.viewPorts.pop();\n  }\n\n  getCurrent() {\n    var {\n      viewPorts\n    } = this;\n    return viewPorts[viewPorts.length - 1];\n  }\n\n  get width() {\n    return this.getCurrent().width;\n  }\n\n  get height() {\n    return this.getCurrent().height;\n  }\n\n  computeSize(d) {\n    if (typeof d === 'number') {\n      return d;\n    }\n\n    if (d === 'x') {\n      return this.width;\n    }\n\n    if (d === 'y') {\n      return this.height;\n    }\n\n    return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n  }\n\n}\n\nclass Point {\n  constructor(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  static parse(point) {\n    var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    var [x = defaultValue, y = defaultValue] = toNumbers(point);\n    return new Point(x, y);\n  }\n\n  static parseScale(scale) {\n    var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n    var [x = defaultValue, y = x] = toNumbers(scale);\n    return new Point(x, y);\n  }\n\n  static parsePath(path) {\n    var points = toNumbers(path);\n    var len = points.length;\n    var pathPoints = [];\n\n    for (var i = 0; i < len; i += 2) {\n      pathPoints.push(new Point(points[i], points[i + 1]));\n    }\n\n    return pathPoints;\n  }\n\n  angleTo(point) {\n    return Math.atan2(point.y - this.y, point.x - this.x);\n  }\n\n  applyTransform(transform) {\n    var {\n      x,\n      y\n    } = this;\n    var xp = x * transform[0] + y * transform[2] + transform[4];\n    var yp = x * transform[1] + y * transform[3] + transform[5];\n    this.x = xp;\n    this.y = yp;\n  }\n\n}\n\nclass Mouse {\n  constructor(screen) {\n    this.screen = screen;\n    this.working = false;\n    this.events = [];\n    this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n    this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n    this.onMouseMove = this.onMouseMove.bind(this);\n  }\n\n  isWorking() {\n    return this.working;\n  }\n\n  start() {\n    if (this.working) {\n      return;\n    }\n\n    var {\n      screen,\n      onClick,\n      onMouseMove\n    } = this;\n    var canvas = screen.ctx.canvas;\n    canvas.onclick = onClick;\n    canvas.onmousemove = onMouseMove;\n    this.working = true;\n  }\n\n  stop() {\n    if (!this.working) {\n      return;\n    }\n\n    var canvas = this.screen.ctx.canvas;\n    this.working = false;\n    canvas.onclick = null;\n    canvas.onmousemove = null;\n  }\n\n  hasEvents() {\n    return this.working && this.events.length > 0;\n  }\n\n  runEvents() {\n    if (!this.working) {\n      return;\n    }\n\n    var {\n      screen: document,\n      events,\n      eventElements\n    } = this;\n    var {\n      style\n    } = document.ctx.canvas;\n\n    if (style) {\n      style.cursor = '';\n    }\n\n    events.forEach((_ref, i) => {\n      var {\n        run\n      } = _ref;\n      var element = eventElements[i];\n\n      while (element) {\n        run(element);\n        element = element.parent;\n      }\n    }); // done running, clear\n\n    this.events = [];\n    this.eventElements = [];\n  }\n\n  checkPath(element, ctx) {\n    if (!this.working || !ctx) {\n      return;\n    }\n\n    var {\n      events,\n      eventElements\n    } = this;\n    events.forEach((_ref2, i) => {\n      var {\n        x,\n        y\n      } = _ref2;\n\n      if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n        eventElements[i] = element;\n      }\n    });\n  }\n\n  checkBoundingBox(element, boundingBox) {\n    if (!this.working || !boundingBox) {\n      return;\n    }\n\n    var {\n      events,\n      eventElements\n    } = this;\n    events.forEach((_ref3, i) => {\n      var {\n        x,\n        y\n      } = _ref3;\n\n      if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n        eventElements[i] = element;\n      }\n    });\n  }\n\n  mapXY(x, y) {\n    var {\n      window,\n      ctx\n    } = this.screen;\n    var point = new Point(x, y);\n    var element = ctx.canvas;\n\n    while (element) {\n      point.x -= element.offsetLeft;\n      point.y -= element.offsetTop;\n      element = element.offsetParent;\n    }\n\n    if (window.scrollX) {\n      point.x += window.scrollX;\n    }\n\n    if (window.scrollY) {\n      point.y += window.scrollY;\n    }\n\n    return point;\n  }\n\n  onClick(event) {\n    var {\n      x,\n      y\n    } = this.mapXY(event.clientX, event.clientY);\n    this.events.push({\n      type: 'onclick',\n      x,\n      y,\n\n      run(eventTarget) {\n        if (eventTarget.onClick) {\n          eventTarget.onClick();\n        }\n      }\n\n    });\n  }\n\n  onMouseMove(event) {\n    var {\n      x,\n      y\n    } = this.mapXY(event.clientX, event.clientY);\n    this.events.push({\n      type: 'onmousemove',\n      x,\n      y,\n\n      run(eventTarget) {\n        if (eventTarget.onMouseMove) {\n          eventTarget.onMouseMove();\n        }\n      }\n\n    });\n  }\n\n}\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\nclass Screen {\n  constructor(ctx) {\n    var {\n      fetch = defaultFetch$1,\n      window = defaultWindow\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.ctx = ctx;\n    this.FRAMERATE = 30;\n    this.MAX_VIRTUAL_PIXELS = 30000;\n    this.CLIENT_WIDTH = 800;\n    this.CLIENT_HEIGHT = 600;\n    this.viewPort = new ViewPort();\n    this.mouse = new Mouse(this);\n    this.animations = [];\n    this.waits = [];\n    this.frameDuration = 0;\n    this.isReadyLock = false;\n    this.isFirstRender = true;\n    this.intervalId = null;\n    this.window = window;\n    this.fetch = fetch;\n  }\n\n  wait(checker) {\n    this.waits.push(checker);\n  }\n\n  ready() {\n    // eslint-disable-next-line @typescript-eslint/no-misused-promises\n    if (!this.readyPromise) {\n      return Promise.resolve();\n    }\n\n    return this.readyPromise;\n  }\n\n  isReady() {\n    if (this.isReadyLock) {\n      return true;\n    }\n\n    var isReadyLock = this.waits.every(_ => _());\n\n    if (isReadyLock) {\n      this.waits = [];\n\n      if (this.resolveReady) {\n        this.resolveReady();\n      }\n    }\n\n    this.isReadyLock = isReadyLock;\n    return isReadyLock;\n  }\n\n  setDefaults(ctx) {\n    // initial values and defaults\n    ctx.strokeStyle = 'rgba(0,0,0,0)';\n    ctx.lineCap = 'butt';\n    ctx.lineJoin = 'miter';\n    ctx.miterLimit = 4;\n  }\n\n  setViewBox(_ref) {\n    var {\n      document,\n      ctx,\n      aspectRatio,\n      width,\n      desiredWidth,\n      height,\n      desiredHeight,\n      minX = 0,\n      minY = 0,\n      refX,\n      refY,\n      clip = false,\n      clipX = 0,\n      clipY = 0\n    } = _ref;\n    // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n    var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n    var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');\n    var align = aspectRatioAlign || 'xMidYMid';\n    var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n    var scaleX = width / desiredWidth;\n    var scaleY = height / desiredHeight;\n    var scaleMin = Math.min(scaleX, scaleY);\n    var scaleMax = Math.max(scaleX, scaleY);\n    var finalDesiredWidth = desiredWidth;\n    var finalDesiredHeight = desiredHeight;\n\n    if (meetOrSlice === 'meet') {\n      finalDesiredWidth *= scaleMin;\n      finalDesiredHeight *= scaleMin;\n    }\n\n    if (meetOrSlice === 'slice') {\n      finalDesiredWidth *= scaleMax;\n      finalDesiredHeight *= scaleMax;\n    }\n\n    var refXProp = new Property(document, 'refX', refX);\n    var refYProp = new Property(document, 'refY', refY);\n    var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n    if (hasRefs) {\n      ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n    }\n\n    if (clip) {\n      var scaledClipX = scaleMin * clipX;\n      var scaledClipY = scaleMin * clipY;\n      ctx.beginPath();\n      ctx.moveTo(scaledClipX, scaledClipY);\n      ctx.lineTo(width, scaledClipY);\n      ctx.lineTo(width, height);\n      ctx.lineTo(scaledClipX, height);\n      ctx.closePath();\n      ctx.clip();\n    }\n\n    if (!hasRefs) {\n      var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n      var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n      var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n      var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n      if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n        ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n      }\n\n      if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n        ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n      }\n\n      if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n        ctx.translate(width - finalDesiredWidth, 0);\n      }\n\n      if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {\n        ctx.translate(0, height - finalDesiredHeight);\n      }\n    } // scale\n\n\n    switch (true) {\n      case align === 'none':\n        ctx.scale(scaleX, scaleY);\n        break;\n\n      case meetOrSlice === 'meet':\n        ctx.scale(scaleMin, scaleMin);\n        break;\n\n      case meetOrSlice === 'slice':\n        ctx.scale(scaleMax, scaleMax);\n        break;\n    } // translate\n\n\n    ctx.translate(-minX, -minY);\n  }\n\n  start(element) {\n    var {\n      enableRedraw = false,\n      ignoreMouse = false,\n      ignoreAnimation = false,\n      ignoreDimensions = false,\n      ignoreClear = false,\n      forceRedraw,\n      scaleWidth,\n      scaleHeight,\n      offsetX,\n      offsetY\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      FRAMERATE,\n      mouse\n    } = this;\n    var frameDuration = 1000 / FRAMERATE;\n    this.frameDuration = frameDuration;\n    this.readyPromise = new Promise(resolve => {\n      this.resolveReady = resolve;\n    });\n\n    if (this.isReady()) {\n      this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n    }\n\n    if (!enableRedraw) {\n      return;\n    }\n\n    var now = Date.now();\n    var then = now;\n    var delta = 0;\n\n    var tick = () => {\n      now = Date.now();\n      delta = now - then;\n\n      if (delta >= frameDuration) {\n        then = now - delta % frameDuration;\n\n        if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n          this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n          mouse.runEvents();\n        }\n      }\n\n      this.intervalId = requestAnimationFrame(tick);\n    };\n\n    if (!ignoreMouse) {\n      mouse.start();\n    }\n\n    this.intervalId = requestAnimationFrame(tick);\n  }\n\n  stop() {\n    if (this.intervalId) {\n      requestAnimationFrame.cancel(this.intervalId);\n      this.intervalId = null;\n    }\n\n    this.mouse.stop();\n  }\n\n  shouldUpdate(ignoreAnimation, forceRedraw) {\n    // need update from animations?\n    if (!ignoreAnimation) {\n      var {\n        frameDuration\n      } = this;\n      var shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, false);\n\n      if (shouldUpdate) {\n        return true;\n      }\n    } // need update from redraw?\n\n\n    if (typeof forceRedraw === 'function' && forceRedraw()) {\n      return true;\n    }\n\n    if (!this.isReadyLock && this.isReady()) {\n      return true;\n    } // need update from mouse events?\n\n\n    if (this.mouse.hasEvents()) {\n      return true;\n    }\n\n    return false;\n  }\n\n  render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n    var {\n      CLIENT_WIDTH,\n      CLIENT_HEIGHT,\n      viewPort,\n      ctx,\n      isFirstRender\n    } = this;\n    var canvas = ctx.canvas;\n    viewPort.clear();\n\n    if (canvas.width && canvas.height) {\n      viewPort.setCurrent(canvas.width, canvas.height);\n    } else {\n      viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n    }\n\n    var widthStyle = element.getStyle('width');\n    var heightStyle = element.getStyle('height');\n\n    if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n      // set canvas size\n      if (widthStyle.hasValue()) {\n        canvas.width = widthStyle.getPixels('x');\n\n        if (canvas.style) {\n          canvas.style.width = \"\".concat(canvas.width, \"px\");\n        }\n      }\n\n      if (heightStyle.hasValue()) {\n        canvas.height = heightStyle.getPixels('y');\n\n        if (canvas.style) {\n          canvas.style.height = \"\".concat(canvas.height, \"px\");\n        }\n      }\n    }\n\n    var cWidth = canvas.clientWidth || canvas.width;\n    var cHeight = canvas.clientHeight || canvas.height;\n\n    if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n      cWidth = widthStyle.getPixels('x');\n      cHeight = heightStyle.getPixels('y');\n    }\n\n    viewPort.setCurrent(cWidth, cHeight);\n\n    if (typeof offsetX === 'number') {\n      element.getAttribute('x', true).setValue(offsetX);\n    }\n\n    if (typeof offsetY === 'number') {\n      element.getAttribute('y', true).setValue(offsetY);\n    }\n\n    if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n      var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n      var xRatio = 0;\n      var yRatio = 0;\n\n      if (typeof scaleWidth === 'number') {\n        var _widthStyle = element.getStyle('width');\n\n        if (_widthStyle.hasValue()) {\n          xRatio = _widthStyle.getPixels('x') / scaleWidth;\n        } else if (!isNaN(viewBox[2])) {\n          xRatio = viewBox[2] / scaleWidth;\n        }\n      }\n\n      if (typeof scaleHeight === 'number') {\n        var _heightStyle = element.getStyle('height');\n\n        if (_heightStyle.hasValue()) {\n          yRatio = _heightStyle.getPixels('y') / scaleHeight;\n        } else if (!isNaN(viewBox[3])) {\n          yRatio = viewBox[3] / scaleHeight;\n        }\n      }\n\n      if (!xRatio) {\n        xRatio = yRatio;\n      }\n\n      if (!yRatio) {\n        yRatio = xRatio;\n      }\n\n      element.getAttribute('width', true).setValue(scaleWidth);\n      element.getAttribute('height', true).setValue(scaleHeight);\n      var transformStyle = element.getStyle('transform', true, true);\n      transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1.0 / xRatio, \", \").concat(1.0 / yRatio, \")\"));\n    } // clear and render\n\n\n    if (!ignoreClear) {\n      ctx.clearRect(0, 0, cWidth, cHeight);\n    }\n\n    element.render(ctx);\n\n    if (isFirstRender) {\n      this.isFirstRender = false;\n    }\n  }\n\n}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\n\nvar {\n  defaultFetch\n} = Screen;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\nclass Parser {\n  constructor() {\n    var {\n      fetch = defaultFetch,\n      DOMParser = DefaultDOMParser\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.fetch = fetch;\n    this.DOMParser = DOMParser;\n  }\n\n  parse(resource) {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      if (resource.startsWith('<')) {\n        return _this.parseFromString(resource);\n      }\n\n      return _this.load(resource);\n    })();\n  }\n\n  parseFromString(xml) {\n    var parser = new this.DOMParser();\n\n    try {\n      return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n    } catch (err) {\n      return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n    }\n  }\n\n  checkDocument(document) {\n    var parserError = document.getElementsByTagName('parsererror')[0];\n\n    if (parserError) {\n      throw new Error(parserError.textContent);\n    }\n\n    return document;\n  }\n\n  load(url) {\n    var _this2 = this;\n\n    return _asyncToGenerator(function* () {\n      var response = yield _this2.fetch(url);\n      var xml = yield response.text();\n      return _this2.parseFromString(xml);\n    })();\n  }\n\n}\n\nclass Translate {\n  constructor(_, point) {\n    this.type = 'translate';\n    this.point = null;\n    this.point = Point.parse(point);\n  }\n\n  apply(ctx) {\n    var {\n      x,\n      y\n    } = this.point;\n    ctx.translate(x || 0.0, y || 0.0);\n  }\n\n  unapply(ctx) {\n    var {\n      x,\n      y\n    } = this.point;\n    ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);\n  }\n\n  applyToPoint(point) {\n    var {\n      x,\n      y\n    } = this.point;\n    point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);\n  }\n\n}\n\nclass Rotate {\n  constructor(document, rotate, transformOrigin) {\n    this.type = 'rotate';\n    this.angle = null;\n    this.originX = null;\n    this.originY = null;\n    this.cx = 0;\n    this.cy = 0;\n    var numbers = toNumbers(rotate);\n    this.angle = new Property(document, 'angle', numbers[0]);\n    this.originX = transformOrigin[0];\n    this.originY = transformOrigin[1];\n    this.cx = numbers[1] || 0;\n    this.cy = numbers[2] || 0;\n  }\n\n  apply(ctx) {\n    var {\n      cx,\n      cy,\n      originX,\n      originY,\n      angle\n    } = this;\n    var tx = cx + originX.getPixels('x');\n    var ty = cy + originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.rotate(angle.getRadians());\n    ctx.translate(-tx, -ty);\n  }\n\n  unapply(ctx) {\n    var {\n      cx,\n      cy,\n      originX,\n      originY,\n      angle\n    } = this;\n    var tx = cx + originX.getPixels('x');\n    var ty = cy + originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.rotate(-1.0 * angle.getRadians());\n    ctx.translate(-tx, -ty);\n  }\n\n  applyToPoint(point) {\n    var {\n      cx,\n      cy,\n      angle\n    } = this;\n    var rad = angle.getRadians();\n    point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y\n    ]);\n    point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);\n    point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y\n    ]);\n  }\n\n}\n\nclass Scale {\n  constructor(_, scale, transformOrigin) {\n    this.type = 'scale';\n    this.scale = null;\n    this.originX = null;\n    this.originY = null;\n    var scaleSize = Point.parseScale(scale); // Workaround for node-canvas\n\n    if (scaleSize.x === 0 || scaleSize.y === 0) {\n      scaleSize.x = PSEUDO_ZERO;\n      scaleSize.y = PSEUDO_ZERO;\n    }\n\n    this.scale = scaleSize;\n    this.originX = transformOrigin[0];\n    this.originY = transformOrigin[1];\n  }\n\n  apply(ctx) {\n    var {\n      scale: {\n        x,\n        y\n      },\n      originX,\n      originY\n    } = this;\n    var tx = originX.getPixels('x');\n    var ty = originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.scale(x, y || x);\n    ctx.translate(-tx, -ty);\n  }\n\n  unapply(ctx) {\n    var {\n      scale: {\n        x,\n        y\n      },\n      originX,\n      originY\n    } = this;\n    var tx = originX.getPixels('x');\n    var ty = originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.scale(1.0 / x, 1.0 / y || x);\n    ctx.translate(-tx, -ty);\n  }\n\n  applyToPoint(point) {\n    var {\n      x,\n      y\n    } = this.scale;\n    point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n  }\n\n}\n\nclass Matrix {\n  constructor(_, matrix, transformOrigin) {\n    this.type = 'matrix';\n    this.matrix = [];\n    this.originX = null;\n    this.originY = null;\n    this.matrix = toNumbers(matrix);\n    this.originX = transformOrigin[0];\n    this.originY = transformOrigin[1];\n  }\n\n  apply(ctx) {\n    var {\n      originX,\n      originY,\n      matrix\n    } = this;\n    var tx = originX.getPixels('x');\n    var ty = originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n    ctx.translate(-tx, -ty);\n  }\n\n  unapply(ctx) {\n    var {\n      originX,\n      originY,\n      matrix\n    } = this;\n    var a = matrix[0];\n    var b = matrix[2];\n    var c = matrix[4];\n    var d = matrix[1];\n    var e = matrix[3];\n    var f = matrix[5];\n    var g = 0.0;\n    var h = 0.0;\n    var i = 1.0;\n    var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n    var tx = originX.getPixels('x');\n    var ty = originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n    ctx.translate(-tx, -ty);\n  }\n\n  applyToPoint(point) {\n    point.applyTransform(this.matrix);\n  }\n\n}\n\nclass Skew extends Matrix {\n  constructor(document, skew, transformOrigin) {\n    super(document, skew, transformOrigin);\n    this.type = 'skew';\n    this.angle = null;\n    this.angle = new Property(document, 'angle', skew);\n  }\n\n}\n\nclass SkewX extends Skew {\n  constructor(document, skew, transformOrigin) {\n    super(document, skew, transformOrigin);\n    this.type = 'skewX';\n    this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];\n  }\n\n}\n\nclass SkewY extends Skew {\n  constructor(document, skew, transformOrigin) {\n    super(document, skew, transformOrigin);\n    this.type = 'skewY';\n    this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];\n  }\n\n}\n\nfunction parseTransforms(transform) {\n  return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\n\nfunction parseTransform(transform) {\n  var [type, value] = transform.split('(');\n  return [type.trim(), value.trim().replace(')', '')];\n}\n\nclass Transform {\n  constructor(document, transform, transformOrigin) {\n    this.document = document;\n    this.transforms = [];\n    var data = parseTransforms(transform);\n    data.forEach(transform => {\n      if (transform === 'none') {\n        return;\n      }\n\n      var [type, value] = parseTransform(transform);\n      var TransformType = Transform.transformTypes[type];\n\n      if (typeof TransformType !== 'undefined') {\n        this.transforms.push(new TransformType(this.document, value, transformOrigin));\n      }\n    });\n  }\n\n  static fromElement(document, element) {\n    var transformStyle = element.getStyle('transform', false, true);\n    var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n    var transformOrigin = [transformOriginXProperty, transformOriginYProperty];\n\n    if (transformStyle.hasValue()) {\n      return new Transform(document, transformStyle.getString(), transformOrigin);\n    }\n\n    return null;\n  }\n\n  apply(ctx) {\n    var {\n      transforms\n    } = this;\n    var len = transforms.length;\n\n    for (var i = 0; i < len; i++) {\n      transforms[i].apply(ctx);\n    }\n  }\n\n  unapply(ctx) {\n    var {\n      transforms\n    } = this;\n    var len = transforms.length;\n\n    for (var i = len - 1; i >= 0; i--) {\n      transforms[i].unapply(ctx);\n    }\n  } // TODO: applyToPoint unused ... remove?\n\n\n  applyToPoint(point) {\n    var {\n      transforms\n    } = this;\n    var len = transforms.length;\n\n    for (var i = 0; i < len; i++) {\n      transforms[i].applyToPoint(point);\n    }\n  }\n\n}\nTransform.transformTypes = {\n  translate: Translate,\n  rotate: Rotate,\n  scale: Scale,\n  matrix: Matrix,\n  skewX: SkewX,\n  skewY: SkewY\n};\n\nclass Element {\n  constructor(document, node) {\n    var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    this.document = document;\n    this.node = node;\n    this.captureTextNodes = captureTextNodes;\n    this.attributes = Object.create(null);\n    this.styles = Object.create(null);\n    this.stylesSpecificity = Object.create(null);\n    this.animationFrozen = false;\n    this.animationFrozenValue = '';\n    this.parent = null;\n    this.children = [];\n\n    if (!node || node.nodeType !== 1) {\n      // ELEMENT_NODE\n      return;\n    } // add attributes\n\n\n    Array.from(node.attributes).forEach(attribute => {\n      var nodeName = normalizeAttributeName(attribute.nodeName);\n      this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n    });\n    this.addStylesFromStyleDefinition(); // add inline styles\n\n    if (this.getAttribute('style').hasValue()) {\n      var styles = this.getAttribute('style').getString().split(';').map(_ => _.trim());\n      styles.forEach(style => {\n        if (!style) {\n          return;\n        }\n\n        var [name, value] = style.split(':').map(_ => _.trim());\n        this.styles[name] = new Property(document, name, value);\n      });\n    }\n\n    var {\n      definitions\n    } = document;\n    var id = this.getAttribute('id'); // add id\n\n    if (id.hasValue()) {\n      if (!definitions[id.getString()]) {\n        definitions[id.getString()] = this;\n      }\n    }\n\n    Array.from(node.childNodes).forEach(childNode => {\n      if (childNode.nodeType === 1) {\n        this.addChild(childNode); // ELEMENT_NODE\n      } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n        var textNode = document.createTextNode(childNode);\n\n        if (textNode.getText().length > 0) {\n          this.addChild(textNode); // TEXT_NODE\n        }\n      }\n    });\n  }\n\n  getAttribute(name) {\n    var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var attr = this.attributes[name];\n\n    if (!attr && createIfNotExists) {\n      var _attr = new Property(this.document, name, '');\n\n      this.attributes[name] = _attr;\n      return _attr;\n    }\n\n    return attr || Property.empty(this.document);\n  }\n\n  getHrefAttribute() {\n    for (var key in this.attributes) {\n      if (key === 'href' || key.endsWith(':href')) {\n        return this.attributes[key];\n      }\n    }\n\n    return Property.empty(this.document);\n  }\n\n  getStyle(name) {\n    var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var style = this.styles[name];\n\n    if (style) {\n      return style;\n    }\n\n    var attr = this.getAttribute(name);\n\n    if (attr !== null && attr !== void 0 && attr.hasValue()) {\n      this.styles[name] = attr; // move up to me to cache\n\n      return attr;\n    }\n\n    if (!skipAncestors) {\n      var {\n        parent\n      } = this;\n\n      if (parent) {\n        var parentStyle = parent.getStyle(name);\n\n        if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {\n          return parentStyle;\n        }\n      }\n    }\n\n    if (createIfNotExists) {\n      var _style = new Property(this.document, name, '');\n\n      this.styles[name] = _style;\n      return _style;\n    }\n\n    return style || Property.empty(this.document);\n  }\n\n  render(ctx) {\n    // don't render display=none\n    // don't render visibility=hidden\n    if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n      return;\n    }\n\n    ctx.save();\n\n    if (this.getStyle('mask').hasValue()) {\n      // mask\n      var mask = this.getStyle('mask').getDefinition();\n\n      if (mask) {\n        this.applyEffects(ctx);\n        mask.apply(ctx, this);\n      }\n    } else if (this.getStyle('filter').getValue('none') !== 'none') {\n      // filter\n      var filter = this.getStyle('filter').getDefinition();\n\n      if (filter) {\n        this.applyEffects(ctx);\n        filter.apply(ctx, this);\n      }\n    } else {\n      this.setContext(ctx);\n      this.renderChildren(ctx);\n      this.clearContext(ctx);\n    }\n\n    ctx.restore();\n  }\n\n  setContext(_) {// NO RENDER\n  }\n\n  applyEffects(ctx) {\n    // transform\n    var transform = Transform.fromElement(this.document, this);\n\n    if (transform) {\n      transform.apply(ctx);\n    } // clip\n\n\n    var clipPathStyleProp = this.getStyle('clip-path', false, true);\n\n    if (clipPathStyleProp.hasValue()) {\n      var clip = clipPathStyleProp.getDefinition();\n\n      if (clip) {\n        clip.apply(ctx);\n      }\n    }\n  }\n\n  clearContext(_) {// NO RENDER\n  }\n\n  renderChildren(ctx) {\n    this.children.forEach(child => {\n      child.render(ctx);\n    });\n  }\n\n  addChild(childNode) {\n    var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n    child.parent = this;\n\n    if (!Element.ignoreChildTypes.includes(child.type)) {\n      this.children.push(child);\n    }\n  }\n\n  matchesSelector(selector) {\n    var _node$getAttribute;\n\n    var {\n      node\n    } = this;\n\n    if (typeof node.matches === 'function') {\n      return node.matches(selector);\n    }\n\n    var styleClasses = (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'class');\n\n    if (!styleClasses || styleClasses === '') {\n      return false;\n    }\n\n    return styleClasses.split(' ').some(styleClass => \".\".concat(styleClass) === selector);\n  }\n\n  addStylesFromStyleDefinition() {\n    var {\n      styles,\n      stylesSpecificity\n    } = this.document;\n\n    for (var selector in styles) {\n      if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n        var style = styles[selector];\n        var specificity = stylesSpecificity[selector];\n\n        if (style) {\n          for (var name in style) {\n            var existingSpecificity = this.stylesSpecificity[name];\n\n            if (typeof existingSpecificity === 'undefined') {\n              existingSpecificity = '000';\n            }\n\n            if (specificity >= existingSpecificity) {\n              this.styles[name] = style[name];\n              this.stylesSpecificity[name] = specificity;\n            }\n          }\n        }\n      }\n    }\n  }\n\n  removeStyles(element, ignoreStyles) {\n    var toRestore = ignoreStyles.reduce((toRestore, name) => {\n      var styleProp = element.getStyle(name);\n\n      if (!styleProp.hasValue()) {\n        return toRestore;\n      }\n\n      var value = styleProp.getString();\n      styleProp.setValue('');\n      return [...toRestore, [name, value]];\n    }, []);\n    return toRestore;\n  }\n\n  restoreStyles(element, styles) {\n    styles.forEach(_ref => {\n      var [name, value] = _ref;\n      element.getStyle(name, true).setValue(value);\n    });\n  }\n\n  isFirstChild() {\n    var _this$parent;\n\n    return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;\n  }\n\n}\nElement.ignoreChildTypes = ['title'];\n\nclass UnknownElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n  }\n\n}\n\nfunction wrapFontFamily(fontFamily) {\n  var trimmed = fontFamily.trim();\n  return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n  return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\r\n * @param fontStyle\r\n * @returns CSS font style.\r\n */\n\n\nfunction prepareFontStyle(fontStyle) {\n  if (!fontStyle) {\n    return '';\n  }\n\n  var targetFontStyle = fontStyle.trim().toLowerCase();\n\n  switch (targetFontStyle) {\n    case 'normal':\n    case 'italic':\n    case 'oblique':\n    case 'inherit':\n    case 'initial':\n    case 'unset':\n      return targetFontStyle;\n\n    default:\n      if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n        return targetFontStyle;\n      }\n\n      return '';\n  }\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\r\n * @param fontWeight\r\n * @returns CSS font weight.\r\n */\n\n\nfunction prepareFontWeight(fontWeight) {\n  if (!fontWeight) {\n    return '';\n  }\n\n  var targetFontWeight = fontWeight.trim().toLowerCase();\n\n  switch (targetFontWeight) {\n    case 'normal':\n    case 'bold':\n    case 'lighter':\n    case 'bolder':\n    case 'inherit':\n    case 'initial':\n    case 'unset':\n      return targetFontWeight;\n\n    default:\n      if (/^[\\d.]+$/.test(targetFontWeight)) {\n        return targetFontWeight;\n      }\n\n      return '';\n  }\n}\n\nclass Font {\n  constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n    var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n    this.fontFamily = fontFamily || inheritFont.fontFamily;\n    this.fontSize = fontSize || inheritFont.fontSize;\n    this.fontStyle = fontStyle || inheritFont.fontStyle;\n    this.fontWeight = fontWeight || inheritFont.fontWeight;\n    this.fontVariant = fontVariant || inheritFont.fontVariant;\n  }\n\n  static parse() {\n    var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    var inherit = arguments.length > 1 ? arguments[1] : undefined;\n    var fontStyle = '';\n    var fontVariant = '';\n    var fontWeight = '';\n    var fontSize = '';\n    var fontFamily = '';\n    var parts = compressSpaces(font).trim().split(' ');\n    var set = {\n      fontSize: false,\n      fontStyle: false,\n      fontWeight: false,\n      fontVariant: false\n    };\n    parts.forEach(part => {\n      switch (true) {\n        case !set.fontStyle && Font.styles.includes(part):\n          if (part !== 'inherit') {\n            fontStyle = part;\n          }\n\n          set.fontStyle = true;\n          break;\n\n        case !set.fontVariant && Font.variants.includes(part):\n          if (part !== 'inherit') {\n            fontVariant = part;\n          }\n\n          set.fontStyle = true;\n          set.fontVariant = true;\n          break;\n\n        case !set.fontWeight && Font.weights.includes(part):\n          if (part !== 'inherit') {\n            fontWeight = part;\n          }\n\n          set.fontStyle = true;\n          set.fontVariant = true;\n          set.fontWeight = true;\n          break;\n\n        case !set.fontSize:\n          if (part !== 'inherit') {\n            [fontSize] = part.split('/');\n          }\n\n          set.fontStyle = true;\n          set.fontVariant = true;\n          set.fontWeight = true;\n          set.fontSize = true;\n          break;\n\n        default:\n          if (part !== 'inherit') {\n            fontFamily += part;\n          }\n\n      }\n    });\n    return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n  }\n\n  toString() {\n    return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n    prepareFontFamily(this.fontFamily)].join(' ').trim();\n  }\n\n}\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nclass BoundingBox {\n  constructor() {\n    var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n    var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n    var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n    var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n    this.x1 = x1;\n    this.y1 = y1;\n    this.x2 = x2;\n    this.y2 = y2;\n    this.addPoint(x1, y1);\n    this.addPoint(x2, y2);\n  }\n\n  get x() {\n    return this.x1;\n  }\n\n  get y() {\n    return this.y1;\n  }\n\n  get width() {\n    return this.x2 - this.x1;\n  }\n\n  get height() {\n    return this.y2 - this.y1;\n  }\n\n  addPoint(x, y) {\n    if (typeof x !== 'undefined') {\n      if (isNaN(this.x1) || isNaN(this.x2)) {\n        this.x1 = x;\n        this.x2 = x;\n      }\n\n      if (x < this.x1) {\n        this.x1 = x;\n      }\n\n      if (x > this.x2) {\n        this.x2 = x;\n      }\n    }\n\n    if (typeof y !== 'undefined') {\n      if (isNaN(this.y1) || isNaN(this.y2)) {\n        this.y1 = y;\n        this.y2 = y;\n      }\n\n      if (y < this.y1) {\n        this.y1 = y;\n      }\n\n      if (y > this.y2) {\n        this.y2 = y;\n      }\n    }\n  }\n\n  addX(x) {\n    this.addPoint(x, null);\n  }\n\n  addY(y) {\n    this.addPoint(null, y);\n  }\n\n  addBoundingBox(boundingBox) {\n    if (!boundingBox) {\n      return;\n    }\n\n    var {\n      x1,\n      y1,\n      x2,\n      y2\n    } = boundingBox;\n    this.addPoint(x1, y1);\n    this.addPoint(x2, y2);\n  }\n\n  sumCubic(t, p0, p1, p2, p3) {\n    return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n  }\n\n  bezierCurveAdd(forX, p0, p1, p2, p3) {\n    var b = 6 * p0 - 12 * p1 + 6 * p2;\n    var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n    var c = 3 * p1 - 3 * p0;\n\n    if (a === 0) {\n      if (b === 0) {\n        return;\n      }\n\n      var t = -c / b;\n\n      if (0 < t && t < 1) {\n        if (forX) {\n          this.addX(this.sumCubic(t, p0, p1, p2, p3));\n        } else {\n          this.addY(this.sumCubic(t, p0, p1, p2, p3));\n        }\n      }\n\n      return;\n    }\n\n    var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n    if (b2ac < 0) {\n      return;\n    }\n\n    var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n    if (0 < t1 && t1 < 1) {\n      if (forX) {\n        this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n      } else {\n        this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n      }\n    }\n\n    var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n    if (0 < t2 && t2 < 1) {\n      if (forX) {\n        this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n      } else {\n        this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n      }\n    }\n  } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n\n  addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n    this.addPoint(p0x, p0y);\n    this.addPoint(p3x, p3y);\n    this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n    this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n  }\n\n  addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n    var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n    var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n    var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n    var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n    this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n  }\n\n  isPointInBox(x, y) {\n    var {\n      x1,\n      y1,\n      x2,\n      y2\n    } = this;\n    return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n  }\n\n}\n\nclass PathParser extends SVGPathData {\n  constructor(path) {\n    super(path // Fix spaces after signs.\n    .replace(/([+\\-.])\\s+/gm, '$1') // Remove invalid part.\n    .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n    this.control = null;\n    this.start = null;\n    this.current = null;\n    this.command = null;\n    this.commands = this.commands;\n    this.i = -1;\n    this.previousCommand = null;\n    this.points = [];\n    this.angles = [];\n  }\n\n  reset() {\n    this.i = -1;\n    this.command = null;\n    this.previousCommand = null;\n    this.start = new Point(0, 0);\n    this.control = new Point(0, 0);\n    this.current = new Point(0, 0);\n    this.points = [];\n    this.angles = [];\n  }\n\n  isEnd() {\n    var {\n      i,\n      commands\n    } = this;\n    return i >= commands.length - 1;\n  }\n\n  next() {\n    var command = this.commands[++this.i];\n    this.previousCommand = this.command;\n    this.command = command;\n    return command;\n  }\n\n  getPoint() {\n    var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';\n    var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';\n    var point = new Point(this.command[xProp], this.command[yProp]);\n    return this.makeAbsolute(point);\n  }\n\n  getAsControlPoint(xProp, yProp) {\n    var point = this.getPoint(xProp, yProp);\n    this.control = point;\n    return point;\n  }\n\n  getAsCurrentPoint(xProp, yProp) {\n    var point = this.getPoint(xProp, yProp);\n    this.current = point;\n    return point;\n  }\n\n  getReflectedControlPoint() {\n    var previousCommand = this.previousCommand.type;\n\n    if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n      return this.current;\n    } // reflect point\n\n\n    var {\n      current: {\n        x: cx,\n        y: cy\n      },\n      control: {\n        x: ox,\n        y: oy\n      }\n    } = this;\n    var point = new Point(2 * cx - ox, 2 * cy - oy);\n    return point;\n  }\n\n  makeAbsolute(point) {\n    if (this.command.relative) {\n      var {\n        x,\n        y\n      } = this.current;\n      point.x += x;\n      point.y += y;\n    }\n\n    return point;\n  }\n\n  addMarker(point, from, priorTo) {\n    var {\n      points,\n      angles\n    } = this; // if the last angle isn't filled in because we didn't have this point yet ...\n\n    if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n      angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n    }\n\n    this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n  }\n\n  addMarkerAngle(point, angle) {\n    this.points.push(point);\n    this.angles.push(angle);\n  }\n\n  getMarkerPoints() {\n    return this.points;\n  }\n\n  getMarkerAngles() {\n    var {\n      angles\n    } = this;\n    var len = angles.length;\n\n    for (var i = 0; i < len; i++) {\n      if (!angles[i]) {\n        for (var j = i + 1; j < len; j++) {\n          if (angles[j]) {\n            angles[i] = angles[j];\n            break;\n          }\n        }\n      }\n    }\n\n    return angles;\n  }\n\n}\n\nclass RenderedElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.modifiedEmSizeStack = false;\n  }\n\n  calculateOpacity() {\n    var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\n    var element = this;\n\n    while (element) {\n      var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n      if (opacityStyle.hasValue(true)) {\n        opacity *= opacityStyle.getNumber();\n      }\n\n      element = element.parent;\n    }\n\n    return opacity;\n  }\n\n  setContext(ctx) {\n    var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    if (!fromMeasure) {\n      // causes stack overflow when measuring text with gradients\n      // fill\n      var fillStyleProp = this.getStyle('fill');\n      var fillOpacityStyleProp = this.getStyle('fill-opacity');\n      var strokeStyleProp = this.getStyle('stroke');\n      var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n      if (fillStyleProp.isUrlDefinition()) {\n        var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n        if (fillStyle) {\n          ctx.fillStyle = fillStyle;\n        }\n      } else if (fillStyleProp.hasValue()) {\n        if (fillStyleProp.getString() === 'currentColor') {\n          fillStyleProp.setValue(this.getStyle('color').getColor());\n        }\n\n        var _fillStyle = fillStyleProp.getColor();\n\n        if (_fillStyle !== 'inherit') {\n          ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;\n        }\n      }\n\n      if (fillOpacityStyleProp.hasValue()) {\n        var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n\n        ctx.fillStyle = _fillStyle2;\n      } // stroke\n\n\n      if (strokeStyleProp.isUrlDefinition()) {\n        var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n\n        if (strokeStyle) {\n          ctx.strokeStyle = strokeStyle;\n        }\n      } else if (strokeStyleProp.hasValue()) {\n        if (strokeStyleProp.getString() === 'currentColor') {\n          strokeStyleProp.setValue(this.getStyle('color').getColor());\n        }\n\n        var _strokeStyle = strokeStyleProp.getString();\n\n        if (_strokeStyle !== 'inherit') {\n          ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n        }\n      }\n\n      if (strokeOpacityProp.hasValue()) {\n        var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n        ctx.strokeStyle = _strokeStyle2;\n      }\n\n      var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n      if (strokeWidthStyleProp.hasValue()) {\n        var newLineWidth = strokeWidthStyleProp.getPixels();\n        ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n        : newLineWidth;\n      }\n\n      var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n      var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n      var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST\n      // const pointOrderStyleProp = this.getStyle('paint-order');\n\n      var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n      var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n      if (strokeLinecapStyleProp.hasValue()) {\n        ctx.lineCap = strokeLinecapStyleProp.getString();\n      }\n\n      if (strokeLinejoinStyleProp.hasValue()) {\n        ctx.lineJoin = strokeLinejoinStyleProp.getString();\n      }\n\n      if (strokeMiterlimitProp.hasValue()) {\n        ctx.miterLimit = strokeMiterlimitProp.getNumber();\n      } // NEED TEST\n      // if (pointOrderStyleProp.hasValue()) {\n      // \t// ?\n      // \tctx.paintOrder = pointOrderStyleProp.getValue();\n      // }\n\n\n      if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n        var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n        if (typeof ctx.setLineDash !== 'undefined') {\n          ctx.setLineDash(gaps);\n        } else // @ts-expect-error Handle browser prefix.\n          if (typeof ctx.webkitLineDash !== 'undefined') {\n            // @ts-expect-error Handle browser prefix.\n            ctx.webkitLineDash = gaps;\n          } else // @ts-expect-error Handle browser prefix.\n            if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n              // @ts-expect-error Handle browser prefix.\n              ctx.mozDash = gaps;\n            }\n\n        var offset = strokeDashoffsetProp.getPixels();\n\n        if (typeof ctx.lineDashOffset !== 'undefined') {\n          ctx.lineDashOffset = offset;\n        } else // @ts-expect-error Handle browser prefix.\n          if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n            // @ts-expect-error Handle browser prefix.\n            ctx.webkitLineDashOffset = offset;\n          } else // @ts-expect-error Handle browser prefix.\n            if (typeof ctx.mozDashOffset !== 'undefined') {\n              // @ts-expect-error Handle browser prefix.\n              ctx.mozDashOffset = offset;\n            }\n      }\n    } // font\n\n\n    this.modifiedEmSizeStack = false;\n\n    if (typeof ctx.font !== 'undefined') {\n      var fontStyleProp = this.getStyle('font');\n      var fontStyleStyleProp = this.getStyle('font-style');\n      var fontVariantStyleProp = this.getStyle('font-variant');\n      var fontWeightStyleProp = this.getStyle('font-weight');\n      var fontSizeStyleProp = this.getStyle('font-size');\n      var fontFamilyStyleProp = this.getStyle('font-family');\n      var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n      fontStyleStyleProp.setValue(font.fontStyle);\n      fontVariantStyleProp.setValue(font.fontVariant);\n      fontWeightStyleProp.setValue(font.fontWeight);\n      fontSizeStyleProp.setValue(font.fontSize);\n      fontFamilyStyleProp.setValue(font.fontFamily);\n      ctx.font = font.toString();\n\n      if (fontSizeStyleProp.isPixels()) {\n        this.document.emSize = fontSizeStyleProp.getPixels();\n        this.modifiedEmSizeStack = true;\n      }\n    }\n\n    if (!fromMeasure) {\n      // effects\n      this.applyEffects(ctx); // opacity\n\n      ctx.globalAlpha = this.calculateOpacity();\n    }\n  }\n\n  clearContext(ctx) {\n    super.clearContext(ctx);\n\n    if (this.modifiedEmSizeStack) {\n      this.document.popEmSize();\n    }\n  }\n\n}\n\nclass PathElement extends RenderedElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'path';\n    this.pathParser = null;\n    this.pathParser = new PathParser(this.getAttribute('d').getString());\n  }\n\n  path(ctx) {\n    var {\n      pathParser\n    } = this;\n    var boundingBox = new BoundingBox();\n    pathParser.reset();\n\n    if (ctx) {\n      ctx.beginPath();\n    }\n\n    while (!pathParser.isEnd()) {\n      switch (pathParser.next().type) {\n        case PathParser.MOVE_TO:\n          this.pathM(ctx, boundingBox);\n          break;\n\n        case PathParser.LINE_TO:\n          this.pathL(ctx, boundingBox);\n          break;\n\n        case PathParser.HORIZ_LINE_TO:\n          this.pathH(ctx, boundingBox);\n          break;\n\n        case PathParser.VERT_LINE_TO:\n          this.pathV(ctx, boundingBox);\n          break;\n\n        case PathParser.CURVE_TO:\n          this.pathC(ctx, boundingBox);\n          break;\n\n        case PathParser.SMOOTH_CURVE_TO:\n          this.pathS(ctx, boundingBox);\n          break;\n\n        case PathParser.QUAD_TO:\n          this.pathQ(ctx, boundingBox);\n          break;\n\n        case PathParser.SMOOTH_QUAD_TO:\n          this.pathT(ctx, boundingBox);\n          break;\n\n        case PathParser.ARC:\n          this.pathA(ctx, boundingBox);\n          break;\n\n        case PathParser.CLOSE_PATH:\n          this.pathZ(ctx, boundingBox);\n          break;\n      }\n    }\n\n    return boundingBox;\n  }\n\n  getBoundingBox(_) {\n    return this.path();\n  }\n\n  getMarkers() {\n    var {\n      pathParser\n    } = this;\n    var points = pathParser.getMarkerPoints();\n    var angles = pathParser.getMarkerAngles();\n    var markers = points.map((point, i) => [point, angles[i]]);\n    return markers;\n  }\n\n  renderChildren(ctx) {\n    this.path(ctx);\n    this.document.screen.mouse.checkPath(this, ctx);\n    var fillRuleStyleProp = this.getStyle('fill-rule');\n\n    if (ctx.fillStyle !== '') {\n      if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n        ctx.fill(fillRuleStyleProp.getString());\n      } else {\n        ctx.fill();\n      }\n    }\n\n    if (ctx.strokeStyle !== '') {\n      if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n        ctx.save();\n        ctx.setTransform(1, 0, 0, 1, 0, 0);\n        ctx.stroke();\n        ctx.restore();\n      } else {\n        ctx.stroke();\n      }\n    }\n\n    var markers = this.getMarkers();\n\n    if (markers) {\n      var markersLastIndex = markers.length - 1;\n      var markerStartStyleProp = this.getStyle('marker-start');\n      var markerMidStyleProp = this.getStyle('marker-mid');\n      var markerEndStyleProp = this.getStyle('marker-end');\n\n      if (markerStartStyleProp.isUrlDefinition()) {\n        var marker = markerStartStyleProp.getDefinition();\n        var [point, angle] = markers[0];\n        marker.render(ctx, point, angle);\n      }\n\n      if (markerMidStyleProp.isUrlDefinition()) {\n        var _marker = markerMidStyleProp.getDefinition();\n\n        for (var i = 1; i < markersLastIndex; i++) {\n          var [_point, _angle] = markers[i];\n\n          _marker.render(ctx, _point, _angle);\n        }\n      }\n\n      if (markerEndStyleProp.isUrlDefinition()) {\n        var _marker2 = markerEndStyleProp.getDefinition();\n\n        var [_point2, _angle2] = markers[markersLastIndex];\n\n        _marker2.render(ctx, _point2, _angle2);\n      }\n    }\n  }\n\n  static pathM(pathParser) {\n    var point = pathParser.getAsCurrentPoint();\n    pathParser.start = pathParser.current;\n    return {\n      point\n    };\n  }\n\n  pathM(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      point\n    } = PathElement.pathM(pathParser);\n    var {\n      x,\n      y\n    } = point;\n    pathParser.addMarker(point);\n    boundingBox.addPoint(x, y);\n\n    if (ctx) {\n      ctx.moveTo(x, y);\n    }\n  }\n\n  static pathL(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var point = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      point\n    };\n  }\n\n  pathL(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point\n    } = PathElement.pathL(pathParser);\n    var {\n      x,\n      y\n    } = point;\n    pathParser.addMarker(point, current);\n    boundingBox.addPoint(x, y);\n\n    if (ctx) {\n      ctx.lineTo(x, y);\n    }\n  }\n\n  static pathH(pathParser) {\n    var {\n      current,\n      command\n    } = pathParser;\n    var point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n    pathParser.current = point;\n    return {\n      current,\n      point\n    };\n  }\n\n  pathH(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point\n    } = PathElement.pathH(pathParser);\n    var {\n      x,\n      y\n    } = point;\n    pathParser.addMarker(point, current);\n    boundingBox.addPoint(x, y);\n\n    if (ctx) {\n      ctx.lineTo(x, y);\n    }\n  }\n\n  static pathV(pathParser) {\n    var {\n      current,\n      command\n    } = pathParser;\n    var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n    pathParser.current = point;\n    return {\n      current,\n      point\n    };\n  }\n\n  pathV(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point\n    } = PathElement.pathV(pathParser);\n    var {\n      x,\n      y\n    } = point;\n    pathParser.addMarker(point, current);\n    boundingBox.addPoint(x, y);\n\n    if (ctx) {\n      ctx.lineTo(x, y);\n    }\n  }\n\n  static pathC(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var point = pathParser.getPoint('x1', 'y1');\n    var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n    var currentPoint = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      point,\n      controlPoint,\n      currentPoint\n    };\n  }\n\n  pathC(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathC(pathParser);\n    pathParser.addMarker(currentPoint, controlPoint, point);\n    boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n    if (ctx) {\n      ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    }\n  }\n\n  static pathS(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var point = pathParser.getReflectedControlPoint();\n    var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n    var currentPoint = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      point,\n      controlPoint,\n      currentPoint\n    };\n  }\n\n  pathS(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathS(pathParser);\n    pathParser.addMarker(currentPoint, controlPoint, point);\n    boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n    if (ctx) {\n      ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    }\n  }\n\n  static pathQ(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n    var currentPoint = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      controlPoint,\n      currentPoint\n    };\n  }\n\n  pathQ(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathQ(pathParser);\n    pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n    boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n    if (ctx) {\n      ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    }\n  }\n\n  static pathT(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var controlPoint = pathParser.getReflectedControlPoint();\n    pathParser.control = controlPoint;\n    var currentPoint = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      controlPoint,\n      currentPoint\n    };\n  }\n\n  pathT(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathT(pathParser);\n    pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n    boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n    if (ctx) {\n      ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    }\n  }\n\n  static pathA(pathParser) {\n    var {\n      current,\n      command\n    } = pathParser;\n    var {\n      rX,\n      rY,\n      xRot,\n      lArcFlag,\n      sweepFlag\n    } = command;\n    var xAxisRotation = xRot * (Math.PI / 180.0);\n    var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n    // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n    // x1', y1'\n\n    var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n    var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n\n    if (l > 1) {\n      rX *= Math.sqrt(l);\n      rY *= Math.sqrt(l);\n    } // cx', cy'\n\n\n    var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n\n    if (isNaN(s)) {\n      s = 0;\n    }\n\n    var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy\n\n    var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n    var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // \u03B81\n    // angle delta\n\n    var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];\n    var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];\n    var ad = vectorsAngle(u, v); // \u0394\u03B8\n\n    if (vectorsRatio(u, v) <= -1) {\n      ad = Math.PI;\n    }\n\n    if (vectorsRatio(u, v) >= 1) {\n      ad = 0;\n    }\n\n    return {\n      currentPoint,\n      rX,\n      rY,\n      sweepFlag,\n      xAxisRotation,\n      centp,\n      a1,\n      ad\n    };\n  }\n\n  pathA(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      currentPoint,\n      rX,\n      rY,\n      sweepFlag,\n      xAxisRotation,\n      centp,\n      a1,\n      ad\n    } = PathElement.pathA(pathParser); // for markers\n\n    var dir = 1 - sweepFlag ? 1.0 : -1.0;\n    var ah = a1 + dir * (ad / 2.0);\n    var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));\n    pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n    pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n    boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n    if (ctx && !isNaN(a1) && !isNaN(ad)) {\n      var r = rX > rY ? rX : rY;\n      var sx = rX > rY ? 1 : rX / rY;\n      var sy = rX > rY ? rY / rX : 1;\n      ctx.translate(centp.x, centp.y);\n      ctx.rotate(xAxisRotation);\n      ctx.scale(sx, sy);\n      ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n      ctx.scale(1 / sx, 1 / sy);\n      ctx.rotate(-xAxisRotation);\n      ctx.translate(-centp.x, -centp.y);\n    }\n  }\n\n  static pathZ(pathParser) {\n    pathParser.current = pathParser.start;\n  }\n\n  pathZ(ctx, boundingBox) {\n    PathElement.pathZ(this.pathParser);\n\n    if (ctx) {\n      // only close path if it is not a straight line\n      if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n        ctx.closePath();\n      }\n    }\n  }\n\n}\n\nclass GlyphElement extends PathElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'glyph';\n    this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n    this.unicode = this.getAttribute('unicode').getString();\n    this.arabicForm = this.getAttribute('arabic-form').getString();\n  }\n\n}\n\nclass TextElement extends RenderedElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, new.target === TextElement ? true : captureTextNodes);\n    this.type = 'text';\n    this.x = 0;\n    this.y = 0;\n    this.measureCache = -1;\n  }\n\n  setContext(ctx) {\n    var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    super.setContext(ctx, fromMeasure);\n    var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n    if (textBaseline) {\n      ctx.textBaseline = textBaseline;\n    }\n  }\n\n  initializeCoordinates() {\n    this.x = 0;\n    this.y = 0;\n    this.leafTexts = [];\n    this.textChunkStart = 0;\n    this.minX = Number.POSITIVE_INFINITY;\n    this.maxX = Number.NEGATIVE_INFINITY;\n  }\n\n  getBoundingBox(ctx) {\n    if (this.type !== 'text') {\n      return this.getTElementBoundingBox(ctx);\n    } // first, calculate child positions\n\n\n    this.initializeCoordinates();\n    this.adjustChildCoordinatesRecursive(ctx);\n    var boundingBox = null; // then calculate bounding box\n\n    this.children.forEach((_, i) => {\n      var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n\n      if (!boundingBox) {\n        boundingBox = childBoundingBox;\n      } else {\n        boundingBox.addBoundingBox(childBoundingBox);\n      }\n    });\n    return boundingBox;\n  }\n\n  getFontSize() {\n    var {\n      document,\n      parent\n    } = this;\n    var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n    var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n    return fontSize;\n  }\n\n  getTElementBoundingBox(ctx) {\n    var fontSize = this.getFontSize();\n    return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n  }\n\n  getGlyph(font, text, i) {\n    var char = text[i];\n    var glyph = null;\n\n    if (font.isArabic) {\n      var len = text.length;\n      var prevChar = text[i - 1];\n      var nextChar = text[i + 1];\n      var arabicForm = 'isolated';\n\n      if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {\n        arabicForm = 'terminal';\n      }\n\n      if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {\n        arabicForm = 'medial';\n      }\n\n      if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n        arabicForm = 'initial';\n      }\n\n      if (typeof font.glyphs[char] !== 'undefined') {\n        // NEED TEST\n        var maybeGlyph = font.glyphs[char];\n        glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];\n      }\n    } else {\n      glyph = font.glyphs[char];\n    }\n\n    if (!glyph) {\n      glyph = font.missingGlyph;\n    }\n\n    return glyph;\n  }\n\n  getText() {\n    return '';\n  }\n\n  getTextFromNode(node) {\n    var textNode = node || this.node;\n    var childNodes = Array.from(textNode.parentNode.childNodes);\n    var index = childNodes.indexOf(textNode);\n    var lastIndex = childNodes.length - 1;\n    var text = compressSpaces( // textNode.value\n    // || textNode.text\n    textNode.textContent || '');\n\n    if (index === 0) {\n      text = trimLeft(text);\n    }\n\n    if (index === lastIndex) {\n      text = trimRight(text);\n    }\n\n    return text;\n  }\n\n  renderChildren(ctx) {\n    if (this.type !== 'text') {\n      this.renderTElementChildren(ctx);\n      return;\n    } // first, calculate child positions\n\n\n    this.initializeCoordinates();\n    this.adjustChildCoordinatesRecursive(ctx); // then render\n\n    this.children.forEach((_, i) => {\n      this.renderChild(ctx, this, this, i);\n    });\n    var {\n      mouse\n    } = this.document.screen; // Do not calc bounding box if mouse is not working.\n\n    if (mouse.isWorking()) {\n      mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n    }\n  }\n\n  renderTElementChildren(ctx) {\n    var {\n      document,\n      parent\n    } = this;\n    var renderText = this.getText();\n    var customFont = parent.getStyle('font-family').getDefinition();\n\n    if (customFont) {\n      var {\n        unitsPerEm\n      } = customFont.fontFace;\n      var ctxFont = Font.parse(document.ctx.font);\n      var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n      var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n      var scale = fontSize / unitsPerEm;\n      var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n      var dx = toNumbers(parent.getAttribute('dx').getString());\n      var len = text.length;\n\n      for (var i = 0; i < len; i++) {\n        var glyph = this.getGlyph(customFont, text, i);\n        ctx.translate(this.x, this.y);\n        ctx.scale(scale, -scale);\n        var lw = ctx.lineWidth;\n        ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n        if (fontStyle === 'italic') {\n          ctx.transform(1, 0, .4, 1, 0, 0);\n        }\n\n        glyph.render(ctx);\n\n        if (fontStyle === 'italic') {\n          ctx.transform(1, 0, -.4, 1, 0, 0);\n        }\n\n        ctx.lineWidth = lw;\n        ctx.scale(1 / scale, -1 / scale);\n        ctx.translate(-this.x, -this.y);\n        this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n        if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n          this.x += dx[i];\n        }\n      }\n\n      return;\n    }\n\n    var {\n      x,\n      y\n    } = this; // NEED TEST\n    // if (ctx.paintOrder === 'stroke') {\n    // \tif (ctx.strokeStyle) {\n    // \t\tctx.strokeText(renderText, x, y);\n    // \t}\n    // \tif (ctx.fillStyle) {\n    // \t\tctx.fillText(renderText, x, y);\n    // \t}\n    // } else {\n\n    if (ctx.fillStyle) {\n      ctx.fillText(renderText, x, y);\n    }\n\n    if (ctx.strokeStyle) {\n      ctx.strokeText(renderText, x, y);\n    } // }\n\n  }\n\n  applyAnchoring() {\n    if (this.textChunkStart >= this.leafTexts.length) {\n      return;\n    } // This is basically the \"Apply anchoring\" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.\n    // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.\n    // Vertical text is not supported.\n\n\n    var firstElement = this.leafTexts[this.textChunkStart];\n    var textAnchor = firstElement.getStyle('text-anchor').getString('start');\n    var isRTL = false; // we treat RTL like LTR\n\n    var shift = 0;\n\n    if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {\n      shift = firstElement.x - this.minX;\n    } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {\n      shift = firstElement.x - this.maxX;\n    } else {\n      shift = firstElement.x - (this.minX + this.maxX) / 2;\n    }\n\n    for (var i = this.textChunkStart; i < this.leafTexts.length; i++) {\n      this.leafTexts[i].x += shift;\n    } // start new chunk\n\n\n    this.minX = Number.POSITIVE_INFINITY;\n    this.maxX = Number.NEGATIVE_INFINITY;\n    this.textChunkStart = this.leafTexts.length;\n  }\n\n  adjustChildCoordinatesRecursive(ctx) {\n    this.children.forEach((_, i) => {\n      this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);\n    });\n    this.applyAnchoring();\n  }\n\n  adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {\n    var child = parent.children[i];\n\n    if (child.children.length > 0) {\n      child.children.forEach((_, i) => {\n        textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);\n      });\n    } else {\n      // only leafs are relevant\n      this.adjustChildCoordinates(ctx, textParent, parent, i);\n    }\n  }\n\n  adjustChildCoordinates(ctx, textParent, parent, i) {\n    var child = parent.children[i];\n\n    if (typeof child.measureText !== 'function') {\n      return child;\n    }\n\n    ctx.save();\n    child.setContext(ctx, true);\n    var xAttr = child.getAttribute('x');\n    var yAttr = child.getAttribute('y');\n    var dxAttr = child.getAttribute('dx');\n    var dyAttr = child.getAttribute('dy');\n    var customFont = child.getStyle('font-family').getDefinition();\n    var isRTL = Boolean(customFont) && customFont.isRTL;\n\n    if (i === 0) {\n      // First children inherit attributes from parent(s). Positional attributes\n      // are only inherited from a parent to it's first child.\n      if (!xAttr.hasValue()) {\n        xAttr.setValue(child.getInheritedAttribute('x'));\n      }\n\n      if (!yAttr.hasValue()) {\n        yAttr.setValue(child.getInheritedAttribute('y'));\n      }\n\n      if (!dxAttr.hasValue()) {\n        dxAttr.setValue(child.getInheritedAttribute('dx'));\n      }\n\n      if (!dyAttr.hasValue()) {\n        dyAttr.setValue(child.getInheritedAttribute('dy'));\n      }\n    }\n\n    var width = child.measureText(ctx);\n\n    if (isRTL) {\n      textParent.x -= width;\n    }\n\n    if (xAttr.hasValue()) {\n      // an \"x\" attribute marks the start of a new chunk\n      textParent.applyAnchoring();\n      child.x = xAttr.getPixels('x');\n\n      if (dxAttr.hasValue()) {\n        child.x += dxAttr.getPixels('x');\n      }\n    } else {\n      if (dxAttr.hasValue()) {\n        textParent.x += dxAttr.getPixels('x');\n      }\n\n      child.x = textParent.x;\n    }\n\n    textParent.x = child.x;\n\n    if (!isRTL) {\n      textParent.x += width;\n    }\n\n    if (yAttr.hasValue()) {\n      child.y = yAttr.getPixels('y');\n\n      if (dyAttr.hasValue()) {\n        child.y += dyAttr.getPixels('y');\n      }\n    } else {\n      if (dyAttr.hasValue()) {\n        textParent.y += dyAttr.getPixels('y');\n      }\n\n      child.y = textParent.y;\n    }\n\n    textParent.y = child.y; // update the current chunk and it's bounds\n\n    textParent.leafTexts.push(child);\n    textParent.minX = Math.min(textParent.minX, child.x, child.x + width);\n    textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);\n    child.clearContext(ctx);\n    ctx.restore();\n    return child;\n  }\n\n  getChildBoundingBox(ctx, textParent, parent, i) {\n    var child = parent.children[i]; // not a text node?\n\n    if (typeof child.getBoundingBox !== 'function') {\n      return null;\n    }\n\n    var boundingBox = child.getBoundingBox(ctx);\n\n    if (!boundingBox) {\n      return null;\n    }\n\n    child.children.forEach((_, i) => {\n      var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n      boundingBox.addBoundingBox(childBoundingBox);\n    });\n    return boundingBox;\n  }\n\n  renderChild(ctx, textParent, parent, i) {\n    var child = parent.children[i];\n    child.render(ctx);\n    child.children.forEach((_, i) => {\n      textParent.renderChild(ctx, textParent, child, i);\n    });\n  }\n\n  measureText(ctx) {\n    var {\n      measureCache\n    } = this;\n\n    if (~measureCache) {\n      return measureCache;\n    }\n\n    var renderText = this.getText();\n    var measure = this.measureTargetText(ctx, renderText);\n    this.measureCache = measure;\n    return measure;\n  }\n\n  measureTargetText(ctx, targetText) {\n    if (!targetText.length) {\n      return 0;\n    }\n\n    var {\n      parent\n    } = this;\n    var customFont = parent.getStyle('font-family').getDefinition();\n\n    if (customFont) {\n      var fontSize = this.getFontSize();\n      var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n      var dx = toNumbers(parent.getAttribute('dx').getString());\n      var len = text.length;\n      var _measure = 0;\n\n      for (var i = 0; i < len; i++) {\n        var glyph = this.getGlyph(customFont, text, i);\n        _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n        if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n          _measure += dx[i];\n        }\n      }\n\n      return _measure;\n    }\n\n    if (!ctx.measureText) {\n      return targetText.length * 10;\n    }\n\n    ctx.save();\n    this.setContext(ctx, true);\n    var {\n      width: measure\n    } = ctx.measureText(targetText);\n    this.clearContext(ctx);\n    ctx.restore();\n    return measure;\n  }\n  /**\r\n   * Inherits positional attributes from {@link TextElement} parent(s). Attributes\r\n   * are only inherited from a parent to its first child.\r\n   * @param name - The attribute name.\r\n   * @returns The attribute value or null.\r\n   */\n\n\n  getInheritedAttribute(name) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n    var current = this;\n\n    while (current instanceof TextElement && current.isFirstChild()) {\n      var parentAttr = current.parent.getAttribute(name);\n\n      if (parentAttr.hasValue(true)) {\n        return parentAttr.getValue('0');\n      }\n\n      current = current.parent;\n    }\n\n    return null;\n  }\n\n}\n\nclass TSpanElement extends TextElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, new.target === TSpanElement ? true : captureTextNodes);\n    this.type = 'tspan'; // if this node has children, then they own the text\n\n    this.text = this.children.length > 0 ? '' : this.getTextFromNode();\n  }\n\n  getText() {\n    return this.text;\n  }\n\n}\n\nclass TextNode extends TSpanElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'textNode';\n  }\n\n}\n\nclass SVGElement extends RenderedElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'svg';\n    this.root = false;\n  }\n\n  setContext(ctx) {\n    var _this$node$parentNode;\n\n    var {\n      document\n    } = this;\n    var {\n      screen,\n      window\n    } = document;\n    var canvas = ctx.canvas;\n    screen.setDefaults(ctx);\n\n    if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n      ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n      var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n      if (fontSizeProp.hasValue()) {\n        document.rootEmSize = fontSizeProp.getPixels('y');\n        document.emSize = document.rootEmSize;\n      }\n    } // create new view port\n\n\n    if (!this.getAttribute('x').hasValue()) {\n      this.getAttribute('x', true).setValue(0);\n    }\n\n    if (!this.getAttribute('y').hasValue()) {\n      this.getAttribute('y', true).setValue(0);\n    }\n\n    var {\n      width,\n      height\n    } = screen.viewPort;\n\n    if (!this.getStyle('width').hasValue()) {\n      this.getStyle('width', true).setValue('100%');\n    }\n\n    if (!this.getStyle('height').hasValue()) {\n      this.getStyle('height', true).setValue('100%');\n    }\n\n    if (!this.getStyle('color').hasValue()) {\n      this.getStyle('color', true).setValue('black');\n    }\n\n    var refXAttr = this.getAttribute('refX');\n    var refYAttr = this.getAttribute('refY');\n    var viewBoxAttr = this.getAttribute('viewBox');\n    var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n    var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n    var minX = 0;\n    var minY = 0;\n    var clipX = 0;\n    var clipY = 0;\n\n    if (viewBox) {\n      minX = viewBox[0];\n      minY = viewBox[1];\n    }\n\n    if (!this.root) {\n      width = this.getStyle('width').getPixels('x');\n      height = this.getStyle('height').getPixels('y');\n\n      if (this.type === 'marker') {\n        clipX = minX;\n        clipY = minY;\n        minX = 0;\n        minY = 0;\n      }\n    }\n\n    screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements\n    // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n\n    if (this.node // is not temporary SVGElement\n    && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n      this.getStyle('transform-origin', true, true).setValue('50% 50%');\n    }\n\n    super.setContext(ctx);\n    ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n\n    if (viewBox) {\n      width = viewBox[2];\n      height = viewBox[3];\n    }\n\n    document.setViewBox({\n      ctx,\n      aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n      width: screen.viewPort.width,\n      desiredWidth: width,\n      height: screen.viewPort.height,\n      desiredHeight: height,\n      minX,\n      minY,\n      refX: refXAttr.getValue(),\n      refY: refYAttr.getValue(),\n      clip,\n      clipX,\n      clipY\n    });\n\n    if (viewBox) {\n      screen.viewPort.removeCurrent();\n      screen.viewPort.setCurrent(width, height);\n    }\n  }\n\n  clearContext(ctx) {\n    super.clearContext(ctx);\n    this.document.screen.viewPort.removeCurrent();\n  }\n  /**\r\n   * Resize SVG to fit in given size.\r\n   * @param width\r\n   * @param height\r\n   * @param preserveAspectRatio\r\n   */\n\n\n  resize(width) {\n    var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n    var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var widthAttr = this.getAttribute('width', true);\n    var heightAttr = this.getAttribute('height', true);\n    var viewBoxAttr = this.getAttribute('viewBox');\n    var styleAttr = this.getAttribute('style');\n    var originWidth = widthAttr.getNumber(0);\n    var originHeight = heightAttr.getNumber(0);\n\n    if (preserveAspectRatio) {\n      if (typeof preserveAspectRatio === 'string') {\n        this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n      } else {\n        var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n        if (preserveAspectRatioAttr.hasValue()) {\n          preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n        }\n      }\n    }\n\n    widthAttr.setValue(width);\n    heightAttr.setValue(height);\n\n    if (!viewBoxAttr.hasValue()) {\n      viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n    }\n\n    if (styleAttr.hasValue()) {\n      var widthStyle = this.getStyle('width');\n      var heightStyle = this.getStyle('height');\n\n      if (widthStyle.hasValue()) {\n        widthStyle.setValue(\"\".concat(width, \"px\"));\n      }\n\n      if (heightStyle.hasValue()) {\n        heightStyle.setValue(\"\".concat(height, \"px\"));\n      }\n    }\n  }\n\n}\n\nclass RectElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'rect';\n  }\n\n  path(ctx) {\n    var x = this.getAttribute('x').getPixels('x');\n    var y = this.getAttribute('y').getPixels('y');\n    var width = this.getStyle('width', false, true).getPixels('x');\n    var height = this.getStyle('height', false, true).getPixels('y');\n    var rxAttr = this.getAttribute('rx');\n    var ryAttr = this.getAttribute('ry');\n    var rx = rxAttr.getPixels('x');\n    var ry = ryAttr.getPixels('y');\n\n    if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n      ry = rx;\n    }\n\n    if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n      rx = ry;\n    }\n\n    rx = Math.min(rx, width / 2.0);\n    ry = Math.min(ry, height / 2.0);\n\n    if (ctx) {\n      var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n      ctx.beginPath(); // always start the path so we don't fill prior paths\n\n      if (height > 0 && width > 0) {\n        ctx.moveTo(x + rx, y);\n        ctx.lineTo(x + width - rx, y);\n        ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n        ctx.lineTo(x + width, y + height - ry);\n        ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n        ctx.lineTo(x + rx, y + height);\n        ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n        ctx.lineTo(x, y + ry);\n        ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n        ctx.closePath();\n      }\n    }\n\n    return new BoundingBox(x, y, x + width, y + height);\n  }\n\n  getMarkers() {\n    return null;\n  }\n\n}\n\nclass CircleElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'circle';\n  }\n\n  path(ctx) {\n    var cx = this.getAttribute('cx').getPixels('x');\n    var cy = this.getAttribute('cy').getPixels('y');\n    var r = this.getAttribute('r').getPixels();\n\n    if (ctx && r > 0) {\n      ctx.beginPath();\n      ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n      ctx.closePath();\n    }\n\n    return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n  }\n\n  getMarkers() {\n    return null;\n  }\n\n}\n\nclass EllipseElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'ellipse';\n  }\n\n  path(ctx) {\n    var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n    var rx = this.getAttribute('rx').getPixels('x');\n    var ry = this.getAttribute('ry').getPixels('y');\n    var cx = this.getAttribute('cx').getPixels('x');\n    var cy = this.getAttribute('cy').getPixels('y');\n\n    if (ctx && rx > 0 && ry > 0) {\n      ctx.beginPath();\n      ctx.moveTo(cx + rx, cy);\n      ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n      ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n      ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n      ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n      ctx.closePath();\n    }\n\n    return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n  }\n\n  getMarkers() {\n    return null;\n  }\n\n}\n\nclass LineElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'line';\n  }\n\n  getPoints() {\n    return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n  }\n\n  path(ctx) {\n    var [{\n      x: x0,\n      y: y0\n    }, {\n      x: x1,\n      y: y1\n    }] = this.getPoints();\n\n    if (ctx) {\n      ctx.beginPath();\n      ctx.moveTo(x0, y0);\n      ctx.lineTo(x1, y1);\n    }\n\n    return new BoundingBox(x0, y0, x1, y1);\n  }\n\n  getMarkers() {\n    var [p0, p1] = this.getPoints();\n    var a = p0.angleTo(p1);\n    return [[p0, a], [p1, a]];\n  }\n\n}\n\nclass PolylineElement extends PathElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'polyline';\n    this.points = [];\n    this.points = Point.parsePath(this.getAttribute('points').getString());\n  }\n\n  path(ctx) {\n    var {\n      points\n    } = this;\n    var [{\n      x: x0,\n      y: y0\n    }] = points;\n    var boundingBox = new BoundingBox(x0, y0);\n\n    if (ctx) {\n      ctx.beginPath();\n      ctx.moveTo(x0, y0);\n    }\n\n    points.forEach(_ref => {\n      var {\n        x,\n        y\n      } = _ref;\n      boundingBox.addPoint(x, y);\n\n      if (ctx) {\n        ctx.lineTo(x, y);\n      }\n    });\n    return boundingBox;\n  }\n\n  getMarkers() {\n    var {\n      points\n    } = this;\n    var lastIndex = points.length - 1;\n    var markers = [];\n    points.forEach((point, i) => {\n      if (i === lastIndex) {\n        return;\n      }\n\n      markers.push([point, point.angleTo(points[i + 1])]);\n    });\n\n    if (markers.length > 0) {\n      markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n    }\n\n    return markers;\n  }\n\n}\n\nclass PolygonElement extends PolylineElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'polygon';\n  }\n\n  path(ctx) {\n    var boundingBox = super.path(ctx);\n    var [{\n      x,\n      y\n    }] = this.points;\n\n    if (ctx) {\n      ctx.lineTo(x, y);\n      ctx.closePath();\n    }\n\n    return boundingBox;\n  }\n\n}\n\nclass PatternElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'pattern';\n  }\n\n  createPattern(ctx, _, parentOpacityProp) {\n    var width = this.getStyle('width').getPixels('x', true);\n    var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element\n\n    var patternSvg = new SVGElement(this.document, null);\n    patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n    patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n    patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n    patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n    patternSvg.children = this.children;\n    var patternCanvas = this.document.createCanvas(width, height);\n    var patternCtx = patternCanvas.getContext('2d');\n    var xAttr = this.getAttribute('x');\n    var yAttr = this.getAttribute('y');\n\n    if (xAttr.hasValue() && yAttr.hasValue()) {\n      patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n    }\n\n    if (parentOpacityProp.hasValue()) {\n      this.styles['fill-opacity'] = parentOpacityProp;\n    } else {\n      Reflect.deleteProperty(this.styles, 'fill-opacity');\n    } // render 3x3 grid so when we transform there's no white space on edges\n\n\n    for (var x = -1; x <= 1; x++) {\n      for (var y = -1; y <= 1; y++) {\n        patternCtx.save();\n        patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n        patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n        patternSvg.render(patternCtx);\n        patternCtx.restore();\n      }\n    }\n\n    var pattern = ctx.createPattern(patternCanvas, 'repeat');\n    return pattern;\n  }\n\n}\n\nclass MarkerElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'marker';\n  }\n\n  render(ctx, point, angle) {\n    if (!point) {\n      return;\n    }\n\n    var {\n      x,\n      y\n    } = point;\n    var orient = this.getAttribute('orient').getString('auto');\n    var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');\n    ctx.translate(x, y);\n\n    if (orient === 'auto') {\n      ctx.rotate(angle);\n    }\n\n    if (markerUnits === 'strokeWidth') {\n      ctx.scale(ctx.lineWidth, ctx.lineWidth);\n    }\n\n    ctx.save(); // render me using a temporary svg element\n\n    var markerSvg = new SVGElement(this.document, null);\n    markerSvg.type = this.type;\n    markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n    markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n    markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n    markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n    markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n    markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n    markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));\n    markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n    markerSvg.children = this.children;\n    markerSvg.render(ctx);\n    ctx.restore();\n\n    if (markerUnits === 'strokeWidth') {\n      ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n    }\n\n    if (orient === 'auto') {\n      ctx.rotate(-angle);\n    }\n\n    ctx.translate(-x, -y);\n  }\n\n}\n\nclass DefsElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'defs';\n  }\n\n  render() {// NOOP\n  }\n\n}\n\nclass GElement extends RenderedElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'g';\n  }\n\n  getBoundingBox(ctx) {\n    var boundingBox = new BoundingBox();\n    this.children.forEach(child => {\n      boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n    });\n    return boundingBox;\n  }\n\n}\n\nclass GradientElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.attributesToInherit = ['gradientUnits'];\n    this.stops = [];\n    var {\n      stops,\n      children\n    } = this;\n    children.forEach(child => {\n      if (child.type === 'stop') {\n        stops.push(child);\n      }\n    });\n  }\n\n  getGradientUnits() {\n    return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n  }\n\n  createGradient(ctx, element, parentOpacityProp) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n    var stopsContainer = this;\n\n    if (this.getHrefAttribute().hasValue()) {\n      stopsContainer = this.getHrefAttribute().getDefinition();\n      this.inheritStopContainer(stopsContainer);\n    }\n\n    var {\n      stops\n    } = stopsContainer;\n    var gradient = this.getGradient(ctx, element);\n\n    if (!gradient) {\n      return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n    }\n\n    stops.forEach(stop => {\n      gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\n    });\n\n    if (this.getAttribute('gradientTransform').hasValue()) {\n      // render as transformed pattern on temporary canvas\n      var {\n        document\n      } = this;\n      var {\n        MAX_VIRTUAL_PIXELS,\n        viewPort\n      } = document.screen;\n      var [rootView] = viewPort.viewPorts;\n      var rect = new RectElement(document, null);\n      rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n      rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n      rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n      rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n      var group = new GElement(document, null);\n      group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n      group.children = [rect];\n      var patternSvg = new SVGElement(document, null);\n      patternSvg.attributes.x = new Property(document, 'x', 0);\n      patternSvg.attributes.y = new Property(document, 'y', 0);\n      patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n      patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n      patternSvg.children = [group];\n      var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n      var patternCtx = patternCanvas.getContext('2d');\n      patternCtx.fillStyle = gradient;\n      patternSvg.render(patternCtx);\n      return patternCtx.createPattern(patternCanvas, 'no-repeat');\n    }\n\n    return gradient;\n  }\n\n  inheritStopContainer(stopsContainer) {\n    this.attributesToInherit.forEach(attributeToInherit => {\n      if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n        this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n      }\n    });\n  }\n\n  addParentOpacity(parentOpacityProp, color) {\n    if (parentOpacityProp.hasValue()) {\n      var colorProp = new Property(this.document, 'color', color);\n      return colorProp.addOpacity(parentOpacityProp).getColor();\n    }\n\n    return color;\n  }\n\n}\n\nclass LinearGradientElement extends GradientElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'linearGradient';\n    this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n  }\n\n  getGradient(ctx, element) {\n    var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n    var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n\n    if (isBoundingBoxUnits && !boundingBox) {\n      return null;\n    }\n\n    if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\n      this.getAttribute('x1', true).setValue(0);\n      this.getAttribute('y1', true).setValue(0);\n      this.getAttribute('x2', true).setValue(1);\n      this.getAttribute('y2', true).setValue(0);\n    }\n\n    var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n    var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n    var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n    var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n    if (x1 === x2 && y1 === y2) {\n      return null;\n    }\n\n    return ctx.createLinearGradient(x1, y1, x2, y2);\n  }\n\n}\n\nclass RadialGradientElement extends GradientElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'radialGradient';\n    this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n  }\n\n  getGradient(ctx, element) {\n    var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n    var boundingBox = element.getBoundingBox(ctx);\n\n    if (isBoundingBoxUnits && !boundingBox) {\n      return null;\n    }\n\n    if (!this.getAttribute('cx').hasValue()) {\n      this.getAttribute('cx', true).setValue('50%');\n    }\n\n    if (!this.getAttribute('cy').hasValue()) {\n      this.getAttribute('cy', true).setValue('50%');\n    }\n\n    if (!this.getAttribute('r').hasValue()) {\n      this.getAttribute('r', true).setValue('50%');\n    }\n\n    var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n    var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n    var fx = cx;\n    var fy = cy;\n\n    if (this.getAttribute('fx').hasValue()) {\n      fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n    }\n\n    if (this.getAttribute('fy').hasValue()) {\n      fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n    }\n\n    var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n    var fr = this.getAttribute('fr').getPixels();\n    return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n  }\n\n}\n\nclass StopElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'stop';\n    var offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));\n    var stopOpacity = this.getStyle('stop-opacity');\n    var stopColor = this.getStyle('stop-color', true);\n\n    if (stopColor.getString() === '') {\n      stopColor.setValue('#000');\n    }\n\n    if (stopOpacity.hasValue()) {\n      stopColor = stopColor.addOpacity(stopOpacity);\n    }\n\n    this.offset = offset;\n    this.color = stopColor.getColor();\n  }\n\n}\n\nclass AnimateElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'animate';\n    this.duration = 0;\n    this.initialValue = null;\n    this.initialUnits = '';\n    this.removed = false;\n    this.frozen = false;\n    document.screen.animations.push(this);\n    this.begin = this.getAttribute('begin').getMilliseconds();\n    this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();\n    this.from = this.getAttribute('from');\n    this.to = this.getAttribute('to');\n    this.values = new Property(document, 'values', null);\n    var valuesAttr = this.getAttribute('values');\n\n    if (valuesAttr.hasValue()) {\n      this.values.setValue(valuesAttr.getString().split(';'));\n    }\n  }\n\n  getProperty() {\n    var attributeType = this.getAttribute('attributeType').getString();\n    var attributeName = this.getAttribute('attributeName').getString();\n\n    if (attributeType === 'CSS') {\n      return this.parent.getStyle(attributeName, true);\n    }\n\n    return this.parent.getAttribute(attributeName, true);\n  }\n\n  calcValue() {\n    var {\n      initialUnits\n    } = this;\n    var {\n      progress,\n      from,\n      to\n    } = this.getProgress(); // tween value linearly\n\n    var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n    if (initialUnits === '%') {\n      newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n    }\n\n    return \"\".concat(newValue).concat(initialUnits);\n  }\n\n  update(delta) {\n    var {\n      parent\n    } = this;\n    var prop = this.getProperty(); // set initial value\n\n    if (!this.initialValue) {\n      this.initialValue = prop.getString();\n      this.initialUnits = prop.getUnits();\n    } // if we're past the end time\n\n\n    if (this.duration > this.maxDuration) {\n      var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n      if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n        this.duration = 0;\n      } else if (fill === 'freeze' && !this.frozen) {\n        this.frozen = true;\n        parent.animationFrozen = true;\n        parent.animationFrozenValue = prop.getString();\n      } else if (fill === 'remove' && !this.removed) {\n        this.removed = true;\n        prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n        return true;\n      }\n\n      return false;\n    }\n\n    this.duration += delta; // if we're past the begin time\n\n    var updated = false;\n\n    if (this.begin < this.duration) {\n      var newValue = this.calcValue(); // tween\n\n      var typeAttr = this.getAttribute('type');\n\n      if (typeAttr.hasValue()) {\n        // for transform, etc.\n        var type = typeAttr.getString();\n        newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n      }\n\n      prop.setValue(newValue);\n      updated = true;\n    }\n\n    return updated;\n  }\n\n  getProgress() {\n    var {\n      document,\n      values\n    } = this;\n    var result = {\n      progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n    };\n\n    if (values.hasValue()) {\n      var p = result.progress * (values.getValue().length - 1);\n      var lb = Math.floor(p);\n      var ub = Math.ceil(p);\n      result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));\n      result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));\n      result.progress = (p - lb) / (ub - lb);\n    } else {\n      result.from = this.from;\n      result.to = this.to;\n    }\n\n    return result;\n  }\n\n}\n\nclass AnimateColorElement extends AnimateElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'animateColor';\n  }\n\n  calcValue() {\n    var {\n      progress,\n      from,\n      to\n    } = this.getProgress();\n    var colorFrom = new RGBColor(from.getColor());\n    var colorTo = new RGBColor(to.getColor());\n\n    if (colorFrom.ok && colorTo.ok) {\n      // tween color linearly\n      var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n      var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n      var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n      return \"rgb(\".concat(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n    }\n\n    return this.getAttribute('from').getColor();\n  }\n\n}\n\nclass AnimateTransformElement extends AnimateElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'animateTransform';\n  }\n\n  calcValue() {\n    var {\n      progress,\n      from,\n      to\n    } = this.getProgress(); // tween value linearly\n\n    var transformFrom = toNumbers(from.getString());\n    var transformTo = toNumbers(to.getString());\n    var newValue = transformFrom.map((from, i) => {\n      var to = transformTo[i];\n      return from + (to - from) * progress;\n    }).join(' ');\n    return newValue;\n  }\n\n}\n\nclass FontElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'font';\n    this.glyphs = Object.create(null);\n    this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n    var {\n      definitions\n    } = document;\n    var {\n      children\n    } = this;\n\n    for (var child of children) {\n      switch (child.type) {\n        case 'font-face':\n          {\n            this.fontFace = child;\n            var fontFamilyStyle = child.getStyle('font-family');\n\n            if (fontFamilyStyle.hasValue()) {\n              definitions[fontFamilyStyle.getString()] = this;\n            }\n\n            break;\n          }\n\n        case 'missing-glyph':\n          this.missingGlyph = child;\n          break;\n\n        case 'glyph':\n          {\n            var glyph = child;\n\n            if (glyph.arabicForm) {\n              this.isRTL = true;\n              this.isArabic = true;\n\n              if (typeof this.glyphs[glyph.unicode] === 'undefined') {\n                this.glyphs[glyph.unicode] = Object.create(null);\n              }\n\n              this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n            } else {\n              this.glyphs[glyph.unicode] = glyph;\n            }\n\n            break;\n          }\n      }\n    }\n  }\n\n  render() {// NO RENDER\n  }\n\n}\n\nclass FontFaceElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'font-face';\n    this.ascent = this.getAttribute('ascent').getNumber();\n    this.descent = this.getAttribute('descent').getNumber();\n    this.unitsPerEm = this.getAttribute('units-per-em').getNumber();\n  }\n\n}\n\nclass MissingGlyphElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'missing-glyph';\n    this.horizAdvX = 0;\n  }\n\n}\n\nclass TRefElement extends TextElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'tref';\n  }\n\n  getText() {\n    var element = this.getHrefAttribute().getDefinition();\n\n    if (element) {\n      var firstChild = element.children[0];\n\n      if (firstChild) {\n        return firstChild.getText();\n      }\n    }\n\n    return '';\n  }\n\n}\n\nclass AElement extends TextElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'a';\n    var {\n      childNodes\n    } = node;\n    var firstChild = childNodes[0];\n    var hasText = childNodes.length > 0 && Array.from(childNodes).every(node => node.nodeType === 3);\n    this.hasText = hasText;\n    this.text = hasText ? this.getTextFromNode(firstChild) : '';\n  }\n\n  getText() {\n    return this.text;\n  }\n\n  renderChildren(ctx) {\n    if (this.hasText) {\n      // render as text element\n      super.renderChildren(ctx);\n      var {\n        document,\n        x,\n        y\n      } = this;\n      var {\n        mouse\n      } = document.screen;\n      var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n      if (mouse.isWorking()) {\n        mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n      }\n    } else if (this.children.length > 0) {\n      // render as temporary group\n      var g = new GElement(this.document, null);\n      g.children = this.children;\n      g.parent = this;\n      g.render(ctx);\n    }\n  }\n\n  onClick() {\n    var {\n      window\n    } = this.document;\n\n    if (window) {\n      window.open(this.getHrefAttribute().getString());\n    }\n  }\n\n  onMouseMove() {\n    var ctx = this.document.ctx;\n    ctx.canvas.style.cursor = 'pointer';\n  }\n\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nclass TextPathElement extends TextElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'textPath';\n    this.textWidth = 0;\n    this.textHeight = 0;\n    this.pathLength = -1;\n    this.glyphInfo = null;\n    this.letterSpacingCache = [];\n    this.measuresCache = new Map([['', 0]]);\n    var pathElement = this.getHrefAttribute().getDefinition();\n    this.text = this.getTextFromNode();\n    this.dataArray = this.parsePathData(pathElement);\n  }\n\n  getText() {\n    return this.text;\n  }\n\n  path(ctx) {\n    var {\n      dataArray\n    } = this;\n\n    if (ctx) {\n      ctx.beginPath();\n    }\n\n    dataArray.forEach(_ref => {\n      var {\n        type,\n        points\n      } = _ref;\n\n      switch (type) {\n        case PathParser.LINE_TO:\n          if (ctx) {\n            ctx.lineTo(points[0], points[1]);\n          }\n\n          break;\n\n        case PathParser.MOVE_TO:\n          if (ctx) {\n            ctx.moveTo(points[0], points[1]);\n          }\n\n          break;\n\n        case PathParser.CURVE_TO:\n          if (ctx) {\n            ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n          }\n\n          break;\n\n        case PathParser.QUAD_TO:\n          if (ctx) {\n            ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n          }\n\n          break;\n\n        case PathParser.ARC:\n          {\n            var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;\n            var r = rx > ry ? rx : ry;\n            var scaleX = rx > ry ? 1 : rx / ry;\n            var scaleY = rx > ry ? ry / rx : 1;\n\n            if (ctx) {\n              ctx.translate(cx, cy);\n              ctx.rotate(psi);\n              ctx.scale(scaleX, scaleY);\n              ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n              ctx.scale(1 / scaleX, 1 / scaleY);\n              ctx.rotate(-psi);\n              ctx.translate(-cx, -cy);\n            }\n\n            break;\n          }\n\n        case PathParser.CLOSE_PATH:\n          if (ctx) {\n            ctx.closePath();\n          }\n\n          break;\n      }\n    });\n  }\n\n  renderChildren(ctx) {\n    this.setTextData(ctx);\n    ctx.save();\n    var textDecoration = this.parent.getStyle('text-decoration').getString();\n    var fontSize = this.getFontSize();\n    var {\n      glyphInfo\n    } = this;\n    var fill = ctx.fillStyle;\n\n    if (textDecoration === 'underline') {\n      ctx.beginPath();\n    }\n\n    glyphInfo.forEach((glyph, i) => {\n      var {\n        p0,\n        p1,\n        rotation,\n        text: partialText\n      } = glyph;\n      ctx.save();\n      ctx.translate(p0.x, p0.y);\n      ctx.rotate(rotation);\n\n      if (ctx.fillStyle) {\n        ctx.fillText(partialText, 0, 0);\n      }\n\n      if (ctx.strokeStyle) {\n        ctx.strokeText(partialText, 0, 0);\n      }\n\n      ctx.restore();\n\n      if (textDecoration === 'underline') {\n        if (i === 0) {\n          ctx.moveTo(p0.x, p0.y + fontSize / 8);\n        }\n\n        ctx.lineTo(p1.x, p1.y + fontSize / 5);\n      } // // To assist with debugging visually, uncomment following\n      //\n      // ctx.beginPath();\n      // if (i % 2)\n      // \tctx.strokeStyle = 'red';\n      // else\n      // \tctx.strokeStyle = 'green';\n      // ctx.moveTo(p0.x, p0.y);\n      // ctx.lineTo(p1.x, p1.y);\n      // ctx.stroke();\n      // ctx.closePath();\n\n    });\n\n    if (textDecoration === 'underline') {\n      ctx.lineWidth = fontSize / 20;\n      ctx.strokeStyle = fill;\n      ctx.stroke();\n      ctx.closePath();\n    }\n\n    ctx.restore();\n  }\n\n  getLetterSpacingAt() {\n    var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    return this.letterSpacingCache[idx] || 0;\n  }\n\n  findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n    var offset = inputOffset;\n    var glyphWidth = this.measureText(ctx, c);\n\n    if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n      glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n    }\n\n    if (charI > -1) {\n      offset += this.getLetterSpacingAt(charI);\n    }\n\n    var splineStep = this.textHeight / 20;\n    var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n    var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n    var segment = {\n      p0,\n      p1\n    };\n    var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n\n    if (dy) {\n      var dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n      var dyY = Math.cos(-rotation) * dy;\n      segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {\n        x: p0.x + dyX,\n        y: p0.y + dyY\n      });\n      segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {\n        x: p1.x + dyX,\n        y: p1.y + dyY\n      });\n    }\n\n    offset += glyphWidth;\n    return {\n      offset,\n      segment,\n      rotation\n    };\n  }\n\n  measureText(ctx, text) {\n    var {\n      measuresCache\n    } = this;\n    var targetText = text || this.getText();\n\n    if (measuresCache.has(targetText)) {\n      return measuresCache.get(targetText);\n    }\n\n    var measure = this.measureTargetText(ctx, targetText);\n    measuresCache.set(targetText, measure);\n    return measure;\n  } // This method supposes what all custom fonts already loaded.\n  // If some font will be loaded after this method call, <textPath> will not be rendered correctly.\n  // You need to call this method manually to update glyphs cache.\n\n\n  setTextData(ctx) {\n    if (this.glyphInfo) {\n      return;\n    }\n\n    var renderText = this.getText();\n    var chars = renderText.split('');\n    var spacesNumber = renderText.split(' ').length - 1;\n    var dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));\n    var dy = this.parent.getAttribute('dy').getPixels('y');\n    var anchor = this.parent.getStyle('text-anchor').getString('start');\n    var thisSpacing = this.getStyle('letter-spacing');\n    var parentSpacing = this.parent.getStyle('letter-spacing');\n    var letterSpacing = 0;\n\n    if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n      letterSpacing = parentSpacing.getPixels();\n    } else if (thisSpacing.hasValue()) {\n      if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n        letterSpacing = thisSpacing.getPixels();\n      }\n    } // fill letter-spacing cache\n\n\n    var letterSpacingCache = [];\n    var textLen = renderText.length;\n    this.letterSpacingCache = letterSpacingCache;\n\n    for (var i = 0; i < textLen; i++) {\n      letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n    }\n\n    var dxSum = letterSpacingCache.reduce((acc, cur, i) => i === 0 ? 0 : acc + cur || 0, 0);\n    var textWidth = this.measureText(ctx);\n    var textFullWidth = Math.max(textWidth + dxSum, 0);\n    this.textWidth = textWidth;\n    this.textHeight = this.getFontSize();\n    this.glyphInfo = [];\n    var fullPathWidth = this.getPathLength();\n    var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n    var offset = 0;\n\n    if (anchor === 'middle' || anchor === 'center') {\n      offset = -textFullWidth / 2;\n    }\n\n    if (anchor === 'end' || anchor === 'right') {\n      offset = -textFullWidth;\n    }\n\n    offset += startOffset;\n    chars.forEach((char, i) => {\n      // Find such segment what distance between p0 and p1 is approx. width of glyph\n      var {\n        offset: nextOffset,\n        segment,\n        rotation\n      } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n      offset = nextOffset;\n\n      if (!segment.p0 || !segment.p1) {\n        return;\n      } // const width = this.getLineLength(\n      // \tsegment.p0.x,\n      // \tsegment.p0.y,\n      // \tsegment.p1.x,\n      // \tsegment.p1.y\n      // );\n      // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n      // Can foresee having a rough pair table built in that the developer can override as needed.\n      // Or use \"dx\" attribute of the <text> node as a naive replacement\n      // const kern = 0;\n      // placeholder for future implementation\n      // const midpoint = this.getPointOnLine(\n      // \tkern + width / 2.0,\n      // \tsegment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n      // );\n\n\n      this.glyphInfo.push({\n        // transposeX: midpoint.x,\n        // transposeY: midpoint.y,\n        text: chars[i],\n        p0: segment.p0,\n        p1: segment.p1,\n        rotation\n      });\n    });\n  }\n\n  parsePathData(path) {\n    this.pathLength = -1; // reset path length\n\n    if (!path) {\n      return [];\n    }\n\n    var pathCommands = [];\n    var {\n      pathParser\n    } = path;\n    pathParser.reset(); // convert l, H, h, V, and v to L\n\n    while (!pathParser.isEnd()) {\n      var {\n        current\n      } = pathParser;\n      var startX = current ? current.x : 0;\n      var startY = current ? current.y : 0;\n      var command = pathParser.next();\n      var nextCommandType = command.type;\n      var points = [];\n\n      switch (command.type) {\n        case PathParser.MOVE_TO:\n          this.pathM(pathParser, points);\n          break;\n\n        case PathParser.LINE_TO:\n          nextCommandType = this.pathL(pathParser, points);\n          break;\n\n        case PathParser.HORIZ_LINE_TO:\n          nextCommandType = this.pathH(pathParser, points);\n          break;\n\n        case PathParser.VERT_LINE_TO:\n          nextCommandType = this.pathV(pathParser, points);\n          break;\n\n        case PathParser.CURVE_TO:\n          this.pathC(pathParser, points);\n          break;\n\n        case PathParser.SMOOTH_CURVE_TO:\n          nextCommandType = this.pathS(pathParser, points);\n          break;\n\n        case PathParser.QUAD_TO:\n          this.pathQ(pathParser, points);\n          break;\n\n        case PathParser.SMOOTH_QUAD_TO:\n          nextCommandType = this.pathT(pathParser, points);\n          break;\n\n        case PathParser.ARC:\n          points = this.pathA(pathParser);\n          break;\n\n        case PathParser.CLOSE_PATH:\n          PathElement.pathZ(pathParser);\n          break;\n      }\n\n      if (command.type !== PathParser.CLOSE_PATH) {\n        pathCommands.push({\n          type: nextCommandType,\n          points,\n          start: {\n            x: startX,\n            y: startY\n          },\n          pathLength: this.calcLength(startX, startY, nextCommandType, points)\n        });\n      } else {\n        pathCommands.push({\n          type: PathParser.CLOSE_PATH,\n          points: [],\n          pathLength: 0\n        });\n      }\n    }\n\n    return pathCommands;\n  }\n\n  pathM(pathParser, points) {\n    var {\n      x,\n      y\n    } = PathElement.pathM(pathParser).point;\n    points.push(x, y);\n  }\n\n  pathL(pathParser, points) {\n    var {\n      x,\n      y\n    } = PathElement.pathL(pathParser).point;\n    points.push(x, y);\n    return PathParser.LINE_TO;\n  }\n\n  pathH(pathParser, points) {\n    var {\n      x,\n      y\n    } = PathElement.pathH(pathParser).point;\n    points.push(x, y);\n    return PathParser.LINE_TO;\n  }\n\n  pathV(pathParser, points) {\n    var {\n      x,\n      y\n    } = PathElement.pathV(pathParser).point;\n    points.push(x, y);\n    return PathParser.LINE_TO;\n  }\n\n  pathC(pathParser, points) {\n    var {\n      point,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathC(pathParser);\n    points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n  }\n\n  pathS(pathParser, points) {\n    var {\n      point,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathS(pathParser);\n    points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    return PathParser.CURVE_TO;\n  }\n\n  pathQ(pathParser, points) {\n    var {\n      controlPoint,\n      currentPoint\n    } = PathElement.pathQ(pathParser);\n    points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n  }\n\n  pathT(pathParser, points) {\n    var {\n      controlPoint,\n      currentPoint\n    } = PathElement.pathT(pathParser);\n    points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    return PathParser.QUAD_TO;\n  }\n\n  pathA(pathParser) {\n    var {\n      rX,\n      rY,\n      sweepFlag,\n      xAxisRotation,\n      centp,\n      a1,\n      ad\n    } = PathElement.pathA(pathParser);\n\n    if (sweepFlag === 0 && ad > 0) {\n      ad -= 2 * Math.PI;\n    }\n\n    if (sweepFlag === 1 && ad < 0) {\n      ad += 2 * Math.PI;\n    }\n\n    return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];\n  }\n\n  calcLength(x, y, commandType, points) {\n    var len = 0;\n    var p1 = null;\n    var p2 = null;\n    var t = 0;\n\n    switch (commandType) {\n      case PathParser.LINE_TO:\n        return this.getLineLength(x, y, points[0], points[1]);\n\n      case PathParser.CURVE_TO:\n        // Approximates by breaking curve into 100 line segments\n        len = 0.0;\n        p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n        for (t = 0.01; t <= 1; t += 0.01) {\n          p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n          p1 = p2;\n        }\n\n        return len;\n\n      case PathParser.QUAD_TO:\n        // Approximates by breaking curve into 100 line segments\n        len = 0.0;\n        p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n        for (t = 0.01; t <= 1; t += 0.01) {\n          p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n          p1 = p2;\n        }\n\n        return len;\n\n      case PathParser.ARC:\n        {\n          // Approximates by breaking curve into line segments\n          len = 0.0;\n          var start = points[4]; // 4 = theta\n\n          var dTheta = points[5]; // 5 = dTheta\n\n          var end = points[4] + dTheta;\n          var inc = Math.PI / 180.0; // 1 degree resolution\n\n          if (Math.abs(start - end) < inc) {\n            inc = Math.abs(start - end);\n          } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n          p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n          if (dTheta < 0) {\n            // clockwise\n            for (t = start - inc; t > end; t -= inc) {\n              p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n              len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n              p1 = p2;\n            }\n          } else {\n            // counter-clockwise\n            for (t = start + inc; t < end; t += inc) {\n              p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n              len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n              p1 = p2;\n            }\n          }\n\n          p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n          return len;\n        }\n    }\n\n    return 0;\n  }\n\n  getPointOnLine(dist, p1x, p1y, p2x, p2y) {\n    var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;\n    var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;\n    var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);\n    var run = Math.sqrt(dist * dist / (1 + m * m));\n\n    if (p2x < p1x) {\n      run *= -1;\n    }\n\n    var rise = m * run;\n    var pt = null;\n\n    if (p2x === p1x) {\n      // vertical line\n      pt = {\n        x: fromX,\n        y: fromY + rise\n      };\n    } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {\n      pt = {\n        x: fromX + run,\n        y: fromY + rise\n      };\n    } else {\n      var ix = 0;\n      var iy = 0;\n      var len = this.getLineLength(p1x, p1y, p2x, p2y);\n\n      if (len < PSEUDO_ZERO) {\n        return null;\n      }\n\n      var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);\n      u /= len * len;\n      ix = p1x + u * (p2x - p1x);\n      iy = p1y + u * (p2y - p1y);\n      var pRise = this.getLineLength(fromX, fromY, ix, iy);\n      var pRun = Math.sqrt(dist * dist - pRise * pRise);\n      run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n      if (p2x < p1x) {\n        run *= -1;\n      }\n\n      rise = m * run;\n      pt = {\n        x: ix + run,\n        y: iy + rise\n      };\n    }\n\n    return pt;\n  }\n\n  getPointOnPath(distance) {\n    var fullLen = this.getPathLength();\n    var cumulativePathLength = 0;\n    var p = null;\n\n    if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n      return null;\n    }\n\n    var {\n      dataArray\n    } = this;\n\n    for (var command of dataArray) {\n      if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n        cumulativePathLength += command.pathLength;\n        continue;\n      }\n\n      var delta = distance - cumulativePathLength;\n      var currentT = 0;\n\n      switch (command.type) {\n        case PathParser.LINE_TO:\n          p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n          break;\n\n        case PathParser.ARC:\n          {\n            var start = command.points[4]; // 4 = theta\n\n            var dTheta = command.points[5]; // 5 = dTheta\n\n            var end = command.points[4] + dTheta;\n            currentT = start + delta / command.pathLength * dTheta;\n\n            if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n              break;\n            }\n\n            p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n            break;\n          }\n\n        case PathParser.CURVE_TO:\n          currentT = delta / command.pathLength;\n\n          if (currentT > 1) {\n            currentT = 1;\n          }\n\n          p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n          break;\n\n        case PathParser.QUAD_TO:\n          currentT = delta / command.pathLength;\n\n          if (currentT > 1) {\n            currentT = 1;\n          }\n\n          p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n          break;\n      }\n\n      if (p) {\n        return p;\n      }\n\n      break;\n    }\n\n    return null;\n  }\n\n  getLineLength(x1, y1, x2, y2) {\n    return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n  }\n\n  getPathLength() {\n    if (this.pathLength === -1) {\n      this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);\n    }\n\n    return this.pathLength;\n  }\n\n  getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n    var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);\n    var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);\n    return {\n      x,\n      y\n    };\n  }\n\n  getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {\n    var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);\n    var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);\n    return {\n      x,\n      y\n    };\n  }\n\n  getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n    var cosPsi = Math.cos(psi);\n    var sinPsi = Math.sin(psi);\n    var pt = {\n      x: rx * Math.cos(theta),\n      y: ry * Math.sin(theta)\n    };\n    return {\n      x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n      y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n    };\n  } // TODO need some optimisations. possibly build cache only for curved segments?\n\n\n  buildEquidistantCache(inputStep, inputPrecision) {\n    var fullLen = this.getPathLength();\n    var precision = inputPrecision || 0.25; // accuracy vs performance\n\n    var step = inputStep || fullLen / 100;\n\n    if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n      // Prepare cache\n      this.equidistantCache = {\n        step,\n        precision,\n        points: []\n      }; // Calculate points\n\n      var s = 0;\n\n      for (var l = 0; l <= fullLen; l += precision) {\n        var p0 = this.getPointOnPath(l);\n        var p1 = this.getPointOnPath(l + precision);\n\n        if (!p0 || !p1) {\n          continue;\n        }\n\n        s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n        if (s >= step) {\n          this.equidistantCache.points.push({\n            x: p0.x,\n            y: p0.y,\n            distance: l\n          });\n          s -= step;\n        }\n      }\n    }\n  }\n\n  getEquidistantPointOnPath(targetDistance, step, precision) {\n    this.buildEquidistantCache(step, precision);\n\n    if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n      return null;\n    }\n\n    var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n    return this.equidistantCache.points[idx] || null;\n  }\n\n}\n\nvar dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;\nclass ImageElement extends RenderedElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'image';\n    this.loaded = false;\n    var href = this.getHrefAttribute().getString();\n\n    if (!href) {\n      return;\n    }\n\n    var isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n    document.images.push(this);\n\n    if (!isSvg) {\n      void this.loadImage(href);\n    } else {\n      void this.loadSvg(href);\n    }\n\n    this.isSvg = isSvg;\n  }\n\n  loadImage(href) {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      try {\n        var image = yield _this.document.createImage(href);\n        _this.image = image;\n      } catch (err) {\n        console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n      }\n\n      _this.loaded = true;\n    })();\n  }\n\n  loadSvg(href) {\n    var _this2 = this;\n\n    return _asyncToGenerator(function* () {\n      var match = dataUriRegex.exec(href);\n\n      if (match) {\n        var data = match[5];\n\n        if (match[4] === 'base64') {\n          _this2.image = atob(data);\n        } else {\n          _this2.image = decodeURIComponent(data);\n        }\n      } else {\n        try {\n          var response = yield _this2.document.fetch(href);\n          var svg = yield response.text();\n          _this2.image = svg;\n        } catch (err) {\n          console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n        }\n      }\n\n      _this2.loaded = true;\n    })();\n  }\n\n  renderChildren(ctx) {\n    var {\n      document,\n      image,\n      loaded\n    } = this;\n    var x = this.getAttribute('x').getPixels('x');\n    var y = this.getAttribute('y').getPixels('y');\n    var width = this.getStyle('width').getPixels('x');\n    var height = this.getStyle('height').getPixels('y');\n\n    if (!loaded || !image || !width || !height) {\n      return;\n    }\n\n    ctx.save();\n    ctx.translate(x, y);\n\n    if (this.isSvg) {\n      var subDocument = document.canvg.forkString(ctx, this.image, {\n        ignoreMouse: true,\n        ignoreAnimation: true,\n        ignoreDimensions: true,\n        ignoreClear: true,\n        offsetX: 0,\n        offsetY: 0,\n        scaleWidth: width,\n        scaleHeight: height\n      });\n      subDocument.document.documentElement.parent = this;\n      void subDocument.render();\n    } else {\n      var _image = this.image;\n      document.setViewBox({\n        ctx,\n        aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n        width,\n        desiredWidth: _image.width,\n        height,\n        desiredHeight: _image.height\n      });\n\n      if (this.loaded) {\n        if (typeof _image.complete === 'undefined' || _image.complete) {\n          ctx.drawImage(_image, 0, 0);\n        }\n      }\n    }\n\n    ctx.restore();\n  }\n\n  getBoundingBox() {\n    var x = this.getAttribute('x').getPixels('x');\n    var y = this.getAttribute('y').getPixels('y');\n    var width = this.getStyle('width').getPixels('x');\n    var height = this.getStyle('height').getPixels('y');\n    return new BoundingBox(x, y, x + width, y + height);\n  }\n\n}\n\nclass SymbolElement extends RenderedElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'symbol';\n  }\n\n  render(_) {// NO RENDER\n  }\n\n}\n\nclass SVGFontLoader {\n  constructor(document) {\n    this.document = document;\n    this.loaded = false;\n    document.fonts.push(this);\n  }\n\n  load(fontFamily, url) {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      try {\n        var {\n          document\n        } = _this;\n        var svgDocument = yield document.canvg.parser.load(url);\n        var fonts = svgDocument.getElementsByTagName('font');\n        Array.from(fonts).forEach(fontNode => {\n          var font = document.createElement(fontNode);\n          document.definitions[fontFamily] = font;\n        });\n      } catch (err) {\n        console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n      }\n\n      _this.loaded = true;\n    })();\n  }\n\n}\n\nclass StyleElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'style';\n    var css = compressSpaces(Array.from(node.childNodes) // NEED TEST\n    .map(_ => _.textContent).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n    .replace(/@import.*;/g, '') // remove imports\n    );\n    var cssDefs = css.split('}');\n    cssDefs.forEach(_ => {\n      var def = _.trim();\n\n      if (!def) {\n        return;\n      }\n\n      var cssParts = def.split('{');\n      var cssClasses = cssParts[0].split(',');\n      var cssProps = cssParts[1].split(';');\n      cssClasses.forEach(_ => {\n        var cssClass = _.trim();\n\n        if (!cssClass) {\n          return;\n        }\n\n        var props = document.styles[cssClass] || {};\n        cssProps.forEach(cssProp => {\n          var prop = cssProp.indexOf(':');\n          var name = cssProp.substr(0, prop).trim();\n          var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\n\n          if (name && value) {\n            props[name] = new Property(document, name, value);\n          }\n        });\n        document.styles[cssClass] = props;\n        document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n        if (cssClass === '@font-face') {\n          //  && !nodeEnv\n          var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n          var srcs = props.src.getString().split(',');\n          srcs.forEach(src => {\n            if (src.indexOf('format(\"svg\")') > 0) {\n              var url = parseExternalUrl(src);\n\n              if (url) {\n                void new SVGFontLoader(document).load(fontFamily, url);\n              }\n            }\n          });\n        }\n      });\n    });\n  }\n\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'use';\n  }\n\n  setContext(ctx) {\n    super.setContext(ctx);\n    var xAttr = this.getAttribute('x');\n    var yAttr = this.getAttribute('y');\n\n    if (xAttr.hasValue()) {\n      ctx.translate(xAttr.getPixels('x'), 0);\n    }\n\n    if (yAttr.hasValue()) {\n      ctx.translate(0, yAttr.getPixels('y'));\n    }\n  }\n\n  path(ctx) {\n    var {\n      element\n    } = this;\n\n    if (element) {\n      element.path(ctx);\n    }\n  }\n\n  renderChildren(ctx) {\n    var {\n      document,\n      element\n    } = this;\n\n    if (element) {\n      var tempSvg = element;\n\n      if (element.type === 'symbol') {\n        // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n        tempSvg = new SVGElement(document, null);\n        tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n        tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n        tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n        tempSvg.children = element.children; // element is still the parent of the children\n\n        element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\n      }\n\n      if (tempSvg.type === 'svg') {\n        var widthStyle = this.getStyle('width', false, true);\n        var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me\n\n        if (widthStyle.hasValue()) {\n          tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n        }\n\n        if (heightStyle.hasValue()) {\n          tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n        }\n      }\n\n      var oldParent = tempSvg.parent;\n      tempSvg.parent = this;\n      tempSvg.render(ctx);\n      tempSvg.parent = oldParent;\n    }\n  }\n\n  getBoundingBox(ctx) {\n    var {\n      element\n    } = this;\n\n    if (element) {\n      return element.getBoundingBox(ctx);\n    }\n\n    return null;\n  }\n\n  elementTransform() {\n    var {\n      document,\n      element\n    } = this;\n    return Transform.fromElement(document, element);\n  }\n\n  get element() {\n    if (!this.cachedElement) {\n      this.cachedElement = this.getHrefAttribute().getDefinition();\n    }\n\n    return this.cachedElement;\n  }\n\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n  return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _height, rgba, val) {\n  img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n  var mi = matrix[i];\n  return mi * v;\n}\n\nfunction c(a, m1, m2, m3) {\n  return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nclass FeColorMatrixElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'feColorMatrix';\n    var matrix = toNumbers(this.getAttribute('values').getString());\n\n    switch (this.getAttribute('type').getString('matrix')) {\n      // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n      case 'saturate':\n        {\n          var s = matrix[0];\n          /* eslint-disable array-element-newline */\n\n          matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n          /* eslint-enable array-element-newline */\n\n          break;\n        }\n\n      case 'hueRotate':\n        {\n          var a = matrix[0] * Math.PI / 180.0;\n          /* eslint-disable array-element-newline */\n\n          matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n          /* eslint-enable array-element-newline */\n\n          break;\n        }\n\n      case 'luminanceToAlpha':\n        /* eslint-disable array-element-newline */\n        matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n        /* eslint-enable array-element-newline */\n\n        break;\n    }\n\n    this.matrix = matrix;\n    this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n  }\n\n  apply(ctx, _x, _y, width, height) {\n    // assuming x==0 && y==0 for now\n    var {\n      includeOpacity,\n      matrix\n    } = this;\n    var srcData = ctx.getImageData(0, 0, width, height);\n\n    for (var y = 0; y < height; y++) {\n      for (var x = 0; x < width; x++) {\n        var r = imGet(srcData.data, x, y, width, height, 0);\n        var g = imGet(srcData.data, x, y, width, height, 1);\n        var b = imGet(srcData.data, x, y, width, height, 2);\n        var a = imGet(srcData.data, x, y, width, height, 3);\n        var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n        var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n        var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n        var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n        if (includeOpacity) {\n          nr = 0;\n          ng = 0;\n          nb = 0;\n          na *= a / 255;\n        }\n\n        imSet(srcData.data, x, y, width, height, 0, nr);\n        imSet(srcData.data, x, y, width, height, 1, ng);\n        imSet(srcData.data, x, y, width, height, 2, nb);\n        imSet(srcData.data, x, y, width, height, 3, na);\n      }\n    }\n\n    ctx.clearRect(0, 0, width, height);\n    ctx.putImageData(srcData, 0, 0);\n  }\n\n}\n\nclass MaskElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'mask';\n  }\n\n  apply(ctx, element) {\n    var {\n      document\n    } = this; // render as temp svg\n\n    var x = this.getAttribute('x').getPixels('x');\n    var y = this.getAttribute('y').getPixels('y');\n    var width = this.getStyle('width').getPixels('x');\n    var height = this.getStyle('height').getPixels('y');\n\n    if (!width && !height) {\n      var boundingBox = new BoundingBox();\n      this.children.forEach(child => {\n        boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n      });\n      x = Math.floor(boundingBox.x1);\n      y = Math.floor(boundingBox.y1);\n      width = Math.floor(boundingBox.width);\n      height = Math.floor(boundingBox.height);\n    }\n\n    var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n    var maskCanvas = document.createCanvas(x + width, y + height);\n    var maskCtx = maskCanvas.getContext('2d');\n    document.screen.setDefaults(maskCtx);\n    this.renderChildren(maskCtx); // convert mask to alpha with a fake node\n    // TODO: refactor out apply from feColorMatrix\n\n    new FeColorMatrixElement(document, {\n      nodeType: 1,\n      childNodes: [],\n      attributes: [{\n        nodeName: 'type',\n        value: 'luminanceToAlpha'\n      }, {\n        nodeName: 'includeOpacity',\n        value: 'true'\n      }]\n    }).apply(maskCtx, 0, 0, x + width, y + height);\n    var tmpCanvas = document.createCanvas(x + width, y + height);\n    var tmpCtx = tmpCanvas.getContext('2d');\n    document.screen.setDefaults(tmpCtx);\n    element.render(tmpCtx);\n    tmpCtx.globalCompositeOperation = 'destination-in';\n    tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n    tmpCtx.fillRect(0, 0, x + width, y + height);\n    ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n    ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n    this.restoreStyles(element, ignoredStyles);\n  }\n\n  render(_) {// NO RENDER\n  }\n\n}\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nvar noop = () => {// NOOP\n};\n\nclass ClipPathElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'clipPath';\n  }\n\n  apply(ctx) {\n    var {\n      document\n    } = this;\n    var contextProto = Reflect.getPrototypeOf(ctx);\n    var {\n      beginPath,\n      closePath\n    } = ctx;\n\n    if (contextProto) {\n      contextProto.beginPath = noop;\n      contextProto.closePath = noop;\n    }\n\n    Reflect.apply(beginPath, ctx, []);\n    this.children.forEach(child => {\n      if (typeof child.path === 'undefined') {\n        return;\n      }\n\n      var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle <use />\n\n      if (!transform) {\n        transform = Transform.fromElement(document, child);\n      }\n\n      if (transform) {\n        transform.apply(ctx);\n      }\n\n      child.path(ctx);\n\n      if (contextProto) {\n        contextProto.closePath = closePath;\n      }\n\n      if (transform) {\n        transform.unapply(ctx);\n      }\n    });\n    Reflect.apply(closePath, ctx, []);\n    ctx.clip();\n\n    if (contextProto) {\n      contextProto.beginPath = beginPath;\n      contextProto.closePath = closePath;\n    }\n  }\n\n  render(_) {// NO RENDER\n  }\n\n}\n\nclass FilterElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'filter';\n  }\n\n  apply(ctx, element) {\n    // render as temp svg\n    var {\n      document,\n      children\n    } = this;\n    var boundingBox = element.getBoundingBox(ctx);\n\n    if (!boundingBox) {\n      return;\n    }\n\n    var px = 0;\n    var py = 0;\n    children.forEach(child => {\n      var efd = child.extraFilterDistance || 0;\n      px = Math.max(px, efd);\n      py = Math.max(py, efd);\n    });\n    var width = Math.floor(boundingBox.width);\n    var height = Math.floor(boundingBox.height);\n    var tmpCanvasWidth = width + 2 * px;\n    var tmpCanvasHeight = height + 2 * py;\n\n    if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n      return;\n    }\n\n    var x = Math.floor(boundingBox.x);\n    var y = Math.floor(boundingBox.y);\n    var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n    var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n    var tmpCtx = tmpCanvas.getContext('2d');\n    document.screen.setDefaults(tmpCtx);\n    tmpCtx.translate(-x + px, -y + py);\n    element.render(tmpCtx); // apply filters\n\n    children.forEach(child => {\n      if (typeof child.apply === 'function') {\n        child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n      }\n    }); // render on me\n\n    ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n    this.restoreStyles(element, ignoredStyles);\n  }\n\n  render(_) {// NO RENDER\n  }\n\n}\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nclass FeDropShadowElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'feDropShadow';\n    this.addStylesFromStyleDefinition();\n  }\n\n  apply(_, _x, _y, _width, _height) {// TODO: implement\n  }\n\n}\n\nclass FeMorphologyElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'feMorphology';\n  }\n\n  apply(_, _x, _y, _width, _height) {// TODO: implement\n  }\n\n}\n\nclass FeCompositeElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'feComposite';\n  }\n\n  apply(_, _x, _y, _width, _height) {// TODO: implement\n  }\n\n}\n\nclass FeGaussianBlurElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'feGaussianBlur';\n    this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n    this.extraFilterDistance = this.blurRadius;\n  }\n\n  apply(ctx, x, y, width, height) {\n    var {\n      document,\n      blurRadius\n    } = this;\n    var body = document.window ? document.window.document.body : null;\n    var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n    canvas.id = document.getUniqueId();\n\n    if (body) {\n      canvas.style.display = 'none';\n      body.appendChild(canvas);\n    }\n\n    canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n    if (body) {\n      body.removeChild(canvas);\n    }\n  }\n\n}\n\nclass TitleElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'title';\n  }\n\n}\n\nclass DescElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'desc';\n  }\n\n}\n\nvar elements = {\n  'svg': SVGElement,\n  'rect': RectElement,\n  'circle': CircleElement,\n  'ellipse': EllipseElement,\n  'line': LineElement,\n  'polyline': PolylineElement,\n  'polygon': PolygonElement,\n  'path': PathElement,\n  'pattern': PatternElement,\n  'marker': MarkerElement,\n  'defs': DefsElement,\n  'linearGradient': LinearGradientElement,\n  'radialGradient': RadialGradientElement,\n  'stop': StopElement,\n  'animate': AnimateElement,\n  'animateColor': AnimateColorElement,\n  'animateTransform': AnimateTransformElement,\n  'font': FontElement,\n  'font-face': FontFaceElement,\n  'missing-glyph': MissingGlyphElement,\n  'glyph': GlyphElement,\n  'text': TextElement,\n  'tspan': TSpanElement,\n  'tref': TRefElement,\n  'a': AElement,\n  'textPath': TextPathElement,\n  'image': ImageElement,\n  'g': GElement,\n  'symbol': SymbolElement,\n  'style': StyleElement,\n  'use': UseElement,\n  'mask': MaskElement,\n  'clipPath': ClipPathElement,\n  'filter': FilterElement,\n  'feDropShadow': FeDropShadowElement,\n  'feMorphology': FeMorphologyElement,\n  'feComposite': FeCompositeElement,\n  'feColorMatrix': FeColorMatrixElement,\n  'feGaussianBlur': FeGaussianBlurElement,\n  'title': TitleElement,\n  'desc': DescElement\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction createCanvas(width, height) {\n  var canvas = document.createElement('canvas');\n  canvas.width = width;\n  canvas.height = height;\n  return canvas;\n}\n\nfunction createImage(_x) {\n  return _createImage.apply(this, arguments);\n}\n\nfunction _createImage() {\n  _createImage = _asyncToGenerator(function* (src) {\n    var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var image = document.createElement('img');\n\n    if (anonymousCrossOrigin) {\n      image.crossOrigin = 'Anonymous';\n    }\n\n    return new Promise((resolve, reject) => {\n      image.onload = () => {\n        resolve(image);\n      };\n\n      image.onerror = (_event, _source, _lineno, _colno, error) => {\n        reject(error);\n      };\n\n      image.src = src;\n    });\n  });\n  return _createImage.apply(this, arguments);\n}\n\nclass Document {\n  constructor(canvg) {\n    var {\n      rootEmSize = 12,\n      emSize = 12,\n      createCanvas = Document.createCanvas,\n      createImage = Document.createImage,\n      anonymousCrossOrigin\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.canvg = canvg;\n    this.definitions = Object.create(null);\n    this.styles = Object.create(null);\n    this.stylesSpecificity = Object.create(null);\n    this.images = [];\n    this.fonts = [];\n    this.emSizeStack = [];\n    this.uniqueId = 0;\n    this.screen = canvg.screen;\n    this.rootEmSize = rootEmSize;\n    this.emSize = emSize;\n    this.createCanvas = createCanvas;\n    this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);\n    this.screen.wait(this.isImagesLoaded.bind(this));\n    this.screen.wait(this.isFontsLoaded.bind(this));\n  }\n\n  bindCreateImage(createImage, anonymousCrossOrigin) {\n    if (typeof anonymousCrossOrigin === 'boolean') {\n      return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n    }\n\n    return createImage;\n  }\n\n  get window() {\n    return this.screen.window;\n  }\n\n  get fetch() {\n    return this.screen.fetch;\n  }\n\n  get ctx() {\n    return this.screen.ctx;\n  }\n\n  get emSize() {\n    var {\n      emSizeStack\n    } = this;\n    return emSizeStack[emSizeStack.length - 1];\n  }\n\n  set emSize(value) {\n    var {\n      emSizeStack\n    } = this;\n    emSizeStack.push(value);\n  }\n\n  popEmSize() {\n    var {\n      emSizeStack\n    } = this;\n    emSizeStack.pop();\n  }\n\n  getUniqueId() {\n    return \"canvg\".concat(++this.uniqueId);\n  }\n\n  isImagesLoaded() {\n    return this.images.every(_ => _.loaded);\n  }\n\n  isFontsLoaded() {\n    return this.fonts.every(_ => _.loaded);\n  }\n\n  createDocumentElement(document) {\n    var documentElement = this.createElement(document.documentElement);\n    documentElement.root = true;\n    documentElement.addStylesFromStyleDefinition();\n    this.documentElement = documentElement;\n    return documentElement;\n  }\n\n  createElement(node) {\n    var elementType = node.nodeName.replace(/^[^:]+:/, '');\n    var ElementType = Document.elementTypes[elementType];\n\n    if (typeof ElementType !== 'undefined') {\n      return new ElementType(this, node);\n    }\n\n    return new UnknownElement(this, node);\n  }\n\n  createTextNode(node) {\n    return new TextNode(this, node);\n  }\n\n  setViewBox(config) {\n    this.screen.setViewBox(_objectSpread$1({\n      document: this\n    }, config));\n  }\n\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * SVG renderer on canvas.\r\n */\n\nclass Canvg {\n  /**\r\n   * Main constructor.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG Document.\r\n   * @param options - Rendering options.\r\n   */\n  constructor(ctx, svg) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    this.parser = new Parser(options);\n    this.screen = new Screen(ctx, options);\n    this.options = options;\n    var document = new Document(this, options);\n    var documentElement = document.createDocumentElement(svg);\n    this.document = document;\n    this.documentElement = documentElement;\n  }\n  /**\r\n   * Create Canvg instance from SVG source string or URL.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG source string or URL.\r\n   * @param options - Rendering options.\r\n   * @returns Canvg instance.\r\n   */\n\n\n  static from(ctx, svg) {\n    var _arguments = arguments;\n    return _asyncToGenerator(function* () {\n      var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : {};\n      var parser = new Parser(options);\n      var svgDocument = yield parser.parse(svg);\n      return new Canvg(ctx, svgDocument, options);\n    })();\n  }\n  /**\r\n   * Create Canvg instance from SVG source string.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG source string.\r\n   * @param options - Rendering options.\r\n   * @returns Canvg instance.\r\n   */\n\n\n  static fromString(ctx, svg) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var parser = new Parser(options);\n    var svgDocument = parser.parseFromString(svg);\n    return new Canvg(ctx, svgDocument, options);\n  }\n  /**\r\n   * Create new Canvg instance with inherited options.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG source string or URL.\r\n   * @param options - Rendering options.\r\n   * @returns Canvg instance.\r\n   */\n\n\n  fork(ctx, svg) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n  }\n  /**\r\n   * Create new Canvg instance with inherited options.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG source string.\r\n   * @param options - Rendering options.\r\n   * @returns Canvg instance.\r\n   */\n\n\n  forkString(ctx, svg) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n  }\n  /**\r\n   * Document is ready promise.\r\n   * @returns Ready promise.\r\n   */\n\n\n  ready() {\n    return this.screen.ready();\n  }\n  /**\r\n   * Document is ready value.\r\n   * @returns Is ready or not.\r\n   */\n\n\n  isReady() {\n    return this.screen.isReady();\n  }\n  /**\r\n   * Render only first frame, ignoring animations and mouse.\r\n   * @param options - Rendering options.\r\n   */\n\n\n  render() {\n    var _arguments2 = arguments,\n        _this = this;\n\n    return _asyncToGenerator(function* () {\n      var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};\n\n      _this.start(_objectSpread({\n        enableRedraw: true,\n        ignoreAnimation: true,\n        ignoreMouse: true\n      }, options));\n\n      yield _this.ready();\n\n      _this.stop();\n    })();\n  }\n  /**\r\n   * Start rendering.\r\n   * @param options - Render options.\r\n   */\n\n\n  start() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var {\n      documentElement,\n      screen,\n      options: baseOptions\n    } = this;\n    screen.start(documentElement, _objectSpread(_objectSpread({\n      enableRedraw: true\n    }, baseOptions), options));\n  }\n  /**\r\n   * Stop rendering.\r\n   */\n\n\n  stop() {\n    this.screen.stop();\n  }\n  /**\r\n   * Resize SVG to fit in given size.\r\n   * @param width\r\n   * @param height\r\n   * @param preserveAspectRatio\r\n   */\n\n\n  resize(width) {\n    var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n    var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    this.documentElement.resize(width, height, preserveAspectRatio);\n  }\n\n}\n\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, Canvg as default, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==\n", "import {Buffer} from \"buffer\";\n\n(window as any).global = window;\n(window as any).process = {\n    env:{\n        NODE_ENV: \"browser\"\n    }\n};\n\nglobal.Buffer = Buffer;\n", "/*\n * This is DeepSight Studio entry point.\n * Please refer to this document for more info about it :\n * https://www.figma.com/file/Np27xxR3PElKc61HVZuqy0/Architecture?node-id=121%3A311\n */\nimport \"../global\";\nimport * as React from 'react';\nimport i18next from \"i18next\";\nimport {Loading} from \"@root/react-components/src/logo/Loading\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport {FacadeWeb} from \"Engine/FacadeWeb/FacadeWeb\";\nimport {UnsupportedBrowser} from \"./UnsupportedBrowser\"\nimport {hideOverflow} from \"@utils/utils\";\nimport {createRoot, Root} from \"react-dom/client\";\nimport {App} from \"@root/Frontend/Studio/App\";\n\ndeclare global {\n    interface Window { facadeWeb: FacadeWeb; }\n    // const API_URL: string\n}\n\n// hide overflow for single page app style\nhideOverflow();\n\n// render our loading icon\n\n// exception here using non-null assertion, we assume that document.getElementById('root') is an HTML element\nconst root: Root = createRoot(document.getElementById('root')!);\nroot.render(\n    <div style={{\n        height: \"100%\",\n        width: \"100%\",\n        display: \"flex\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        // Fix white flicker on DeepSight Connect opening\n        backfaceVisibility: \"hidden\",\n        backgroundColor: dark\n    }}>\n        <Loading/>\n    </div>\n);\n\n// initialize i18next for lang translation and start the app\nawait i18next.init({\n    lng: 'en',\n    fallbackLng: 'en',\n});\n\nif (!UnsupportedBrowser.isBrowserSupported())\n    root.render(<UnsupportedBrowser/>);\nelse\n    root.render(<App />);\n\n", "import * as React from \"react\";\nimport styled, {keyframes} from \"styled-components\";\nimport {Middle, Outer} from \"./LogoParts\";\n\nconst Wrapper = styled(\"div\")`\n  position: relative;\n  height:48px;\n  width:48px;\n  max-height:48px;\n  max-width:48px;\n  min-height:24px;\n  & > div {\n    position: absolute;\n    height:100%;\n    width:100%;\n    transform-origin: 49.2% 49.4%;\n  }\n  & > div > svg {\n    height:100%;\n    width:100%\n  }\n`;\n\nconst outerAnim = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n     transform: rotate(360deg);\n  }\n`;\n\nconst innerAnim = keyframes`\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n     transform: rotate(-360deg);\n  }\n`;\n\nconst OuterWrap = styled(\"div\")`\n  animation: ${outerAnim} 1.5s ease-in-out 0s infinite;\n`;\n\nconst MidWrap = styled(\"div\")`\n  animation: ${innerAnim} 1.5s ease-in-out 0s infinite;\n`;\n\nexport const Loading = (props: {color?: string}) => (\n    <Wrapper id=\"cloud-saving\">\n        <OuterWrap>\n            <Outer color={props.color} />\n        </OuterWrap>\n        <MidWrap>\n            <Middle color={props.color} />\n        </MidWrap>\n    </Wrapper>\n);\n", "import * as React from \"react\";\nimport {primary} from \"../values/colors/colors\";\n\nexport const Middle = (props: {color?: string}) =>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"70\" height=\"70\" viewBox=\"0 0 64 64\">\n        <path style={{fill: props.color ?? primary}} d=\"M38.6,29.5c-2.6,0-4.6-2.1-4.6-4.6c0-1.7,0.9-3.2,2.3-4c-1.5-0.7-3.1-1-4.8-1c-6.4,0-11.7,5.2-11.7,11.7\n\tS25,43.2,31.4,43.2c6.4,0,11.7-5.2,11.7-11.7c0-1.4-0.2-2.7-0.7-4C41.6,28.7,40.2,29.5,38.6,29.5z\"/>\n    </svg>;\n\nexport const Outer = (props: {color?: string}) =>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"70\" height=\"70\" viewBox=\"0 0 64 64\">\n        <path style={{fill: props.color ?? primary}} d=\"M31.5,63C48.9,63,63,48.9,63,31.5S48.9,0,31.5,0H19.8v10.1h11.7c11.8,0,21.3,9.6,21.3,21.3s-9.6,21.3-21.3,21.3\n\tH19.8V63H31.5z\"/>\n    </svg>;", "import React from \"react\";\nimport {dark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge, primaryFontMedium, primaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Logo} from \"@root/react-components/src/logo/Logo\";\nimport {Loading} from \"@root/react-components/src/logo/Loading\";\nimport {changeLanguage, getLocalValue} from \"@utils/utils\";\nimport {browserName, browserVersion, engineName, isMobile, osName, osVersion} from 'react-device-detect';\n\nimport styled from \"styled-components\";\nimport i18next from \"i18next\";\nimport {DEFAULT_LANGUAGE, getCorrespondingLanguage} from \"@backend/Types/Language\";\n\n\ninterface Browser {\n    name: string,\n    minVersion: number,\n    logoFile: string,\n    url: string\n}\n\nconst Row = styled.div`\n    margin: 0 auto;\n    display: flex;\n    max-width: 700px;\n    & svg {\n        height: 60px;\n    }\n`;\n\nconst Wrapper = styled.div`\n    justify-content: center;\n    overflow-y: auto;\n    background-color: ${dark};\n    color: ${white};\n    flex-direction: column;\n    text-align: center;\n    display: flex;\n    font: ${primaryFontMedium};\n    height: 100%;\n    width: 100%;\n    & > * {\n        padding: 15px;\n    }\n`;\n\nconst LogoWrapper = styled.div`\n    & svg {\n        @media (min-width: 768px) {\n            max-height: 200px;\n        }\n        @media (max-width: 768px) {\n            max-height: 100px;\n        }\n    }\n`;\n\nconst BrowserWrapper = styled.a`\n    text-decoration: none;\n    &:focus, &:hover, &:visited, &:link, &:active {\n        text-decoration: none;\n        color: ${white};\n    }\n    & > img {\n      height: 70px;\n    }\n    margin: 0 20px;\n`;\n\nconst LoadingWrapper = styled.div`\n  height: 100%;\n  width: 100%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background-color: ${dark};\n`\n\nexport class UnsupportedBrowser extends React.Component {\n    private static readonly CHROME:  Browser = {name: \"Chrome\", minVersion: 108, logoFile: \"/ChromeLogo.svg\",\n                                                url: \"https://www.google.com/chrome\"};\n    private static readonly FIREFOX: Browser = {name: \"Firefox\", minVersion: 130, logoFile: \"/FirefoxLogo.svg\",\n                                                url: \"https://www.mozilla.org/firefox/new\"};\n    private static readonly SAFARI:  Browser = {name: \"Safari\", minVersion: 16, logoFile: \"/SafariLogo.svg\",\n                                                url: \"https://support.apple.com/HT204416\"};\n    private static readonly EDGE:    Browser = {name: \"Edge\", minVersion: 108, logoFile: \"/EdgeLogo.svg\",\n                                                url: \"https://www.microsoft.com/edge\"};\n\n    public static readonly SAFARI_ENGINE = \"WebKit\";\n    public static readonly iOS = \"iOS\";\n    public static readonly MAC_OS = \"Mac OS\";\n\n    state: {loadingLanguage: boolean, mobileWebKitOutdated: boolean} = {loadingLanguage: true, mobileWebKitOutdated: false};\n\n    static isBrowserSupported(): boolean {\n        return Boolean(document.createElement('canvas').getContext('webgl2'));\n    }\n\n    // return true if the browser is using webkit on a mobile device and is outdated\n    isMobileWebkitOutdated(): boolean{\n        if (!isMobile || engineName !== UnsupportedBrowser.SAFARI_ENGINE)\n            return false;\n\n        // use browser version if on safari or use iOS version\n        const version = browserName === UnsupportedBrowser.SAFARI.name ? Number.parseInt(browserVersion) :\n                                                                         Number.parseInt(osVersion);\n        if (Number.isNaN(version))\n            return false;\n        return version < UnsupportedBrowser.SAFARI.minVersion;\n    }\n\n    renderBrowser(browser: Browser){\n        // if webkit is outdated, iOS must be updated\n        const minVersion = this.state.mobileWebKitOutdated ? \"iOS \" + UnsupportedBrowser.SAFARI.minVersion :\n                                            \"Version \" + browser.minVersion;\n        const url = this.state.mobileWebKitOutdated ? UnsupportedBrowser.SAFARI.url : browser.url;\n        return (\n            <BrowserWrapper key={browser.name} href={url} target=\"_blank\">\n                <img src={browser.logoFile} alt={browser.name} />\n                <div style={{font: primaryFontLarge}}>{browser.name}</div>\n                <div style={{font: primaryFontSmall}}>{minVersion}+</div>\n            </BrowserWrapper>\n        );\n    }\n\n    override async componentDidMount(){\n        const local: string = await getLocalValue(\"Language\");\n        const language: string = local.charAt(0).toUpperCase() + local.slice(1).toLowerCase();\n        await changeLanguage(getCorrespondingLanguage(language) ?? DEFAULT_LANGUAGE);\n\n        this.setState({loadingLanguage: false, mobileWebKitOutdated: this.isMobileWebkitOutdated()});\n    }\n\n    render() {\n        return (\n            this.state.loadingLanguage ?\n                <LoadingWrapper>\n                    <Loading/>\n                </LoadingWrapper> :\n                <Wrapper>\n                    <LogoWrapper>\n                        <Logo/>\n                    </LogoWrapper>\n                    <div>\n                        <h1>\n                            {i18next.t(\"The browser you are using is not supported\")}\n                        </h1>\n                        <h2>\n                            {i18next.t(\"You are currently using\")} {browserName} version {browserVersion}\n                        </h2>\n                        <h2>\n                            {i18next.t(\"Please update to one of the following browsers\")}\n                        </h2>\n                    </div>\n                    <Row>\n                        {this.renderBrowser(UnsupportedBrowser.CHROME)}\n                        {this.renderBrowser(UnsupportedBrowser.FIREFOX)}\n                        {osName === UnsupportedBrowser.iOS || osName === UnsupportedBrowser.MAC_OS ?\n                            this.renderBrowser(UnsupportedBrowser.SAFARI) :\n                            this.renderBrowser(UnsupportedBrowser.EDGE)}\n                    </Row>\n                </Wrapper>\n        )\n    }\n}", "import * as React from 'react';\nimport {primary, dark as darkColor, white} from \"../values/colors/colors\";\n\ninterface LogoProps {\n    symbolOnly?: boolean;\n    dark?: boolean;\n}\n\nconst Symbol = () => (\n    <>\n        <path d=\"M70.6548 47C83.5464 47 94 36.4782 94 23.5024C94.0048 10.5218 83.5512 0 70.6548 0H62V7.57321H70.6548C79.3908 7.57321 86.4759 14.7046 86.4759 23.4976C86.4759 32.2954 79.3908 39.422 70.6548 39.422H62V46.9952H70.6548V47Z\" fill={primary}/>\n        <path d=\"M75.7059 22.462C73.8363 22.462 72.3228 20.8594 72.3228 18.8798C72.3228 17.565 72.9928 16.419 73.9909 15.7938C72.9272 15.2828 71.7464 15 70.5 15C65.8049 15 62 19.0287 62 24C62 28.9713 65.8049 33 70.5 33C75.1952 33 79 28.9713 79 24C79 22.9184 78.8219 21.8815 78.4893 20.9239C77.8754 21.8517 76.8586 22.462 75.7059 22.462Z\" fill={primary}/>\n    </>\n);\n\nexport function Logo({ symbolOnly = false, dark = false }: LogoProps): JSX.Element {\n    return (\n    <>\n        <svg viewBox={symbolOnly ? \"50 0 50 50\" : \"0 0 150 95\"} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <Symbol/>\n            {symbolOnly ?\n                <></>\n                :\n                dark ?\n                    <>\n                        <path d=\"M0 87V65H8.82867C15.3053 65 19 69.7904 19 76.0472C19 82.2756 15.3053 87 8.82867 87H0ZM4.77656 82.7518H8.8335C12.4316 82.7518 14.2283 79.6541 14.2283 76.0472C14.2283 72.4072 12.4316 69.2482 8.8335 69.2482H4.77656V82.7518Z\" fill={darkColor}/>\n                        <path d=\"M36.1388 84.0755C34.5829 86.2314 31.7009 87 29.0832 87C24.6453 87 21 83.98 21 79.4545C21 74.9245 24.6453 72 29.0832 72C33.4917 72 37 75.0473 37 79.5773C37 79.9457 36.9658 80.5324 36.9364 80.9008H25.6043C25.8343 82.5655 27.7914 83.3023 29.4159 83.3023C30.6734 83.3023 32.0336 82.8702 32.7969 81.9469L36.1388 84.0755ZM32.3615 78.222C32.1315 76.4663 30.4043 75.7568 29.1125 75.7568C27.8208 75.7568 26.0642 76.4027 25.6679 78.222H32.3615Z\" fill={darkColor}/>\n                        <path d=\"M54.1388 84.0755C52.5829 86.2314 49.7009 87 47.0832 87C42.6453 87 39 83.98 39 79.4545C39 74.9245 42.6453 72 47.0832 72C51.4917 72 55 75.0473 55 79.5773C55 79.9457 54.9658 80.5324 54.9364 80.9008H43.6043C43.8343 82.5655 45.7914 83.3023 47.4159 83.3023C48.6734 83.3023 50.0336 82.8702 50.7969 81.9469L54.1388 84.0755ZM50.3615 78.222C50.1315 76.4663 48.4043 75.7568 47.1125 75.7568C45.8208 75.7568 44.0642 76.4027 43.6679 78.222H50.3615Z\" fill={darkColor}/>\n                        <path d=\"M61.681 72.3223V74.2129C62.4629 72.813 64.3623 72 66.332 72C70.4065 72 74 75.0933 74 79.8848C74 84.7724 70.4015 87.8657 66.332 87.8657C64.3623 87.8657 62.4629 87.0864 61.681 85.6817V95H57V72.3271H61.681V72.3223ZM65.4449 83.5938C67.4496 83.5938 69.1085 82.1602 69.1085 79.9762C69.1085 77.7296 67.4446 76.296 65.4449 76.296C63.4752 76.296 61.7812 77.7969 61.7812 79.9762C61.7812 82.2612 63.5103 83.5938 65.4449 83.5938Z\" fill={darkColor}/>\n                        <path d=\"M80.0153 80.0784C80.0859 81.5078 81.2804 82.7741 83.5335 82.7741C85.5447 82.7741 86.946 81.8628 86.9812 80.4046C87.0165 79.3973 86.5377 78.5195 84.1485 77.872L81.3157 77.1237C76.1291 75.5983 75.2419 72.7059 75.2419 70.6913C75.2419 66.6957 78.8257 64 83.3319 64C87.8734 64 91.2858 66.5662 91.2858 70.8544H86.3008C86.3008 69.3627 85.2423 68.3218 83.2614 68.3218C81.5174 68.3218 80.2219 69.2332 80.2219 70.5618C80.2219 71.147 80.4639 72.2167 82.7472 72.8355L85.5447 73.6797C91.2455 75.2386 92.0621 78.2941 91.9965 80.4382C91.926 84.8895 87.697 87 83.5335 87C78.4124 87 75 84.1076 75 80.0784H80.0153Z\" fill={darkColor}/>\n                        <path d=\"M98.0335 64C99.6712 64 101 65.1163 101 66.5812C101 68.0461 99.6764 69.1954 98.0335 69.1954C96.3957 69.1954 95 68.0461 95 66.5812C95 65.1163 96.3906 64 98.0335 64ZM100.439 87H95.6232V72.1016H100.439V87Z\" fill={darkColor}/>\n                        <path d=\"M110.684 90.9569C114.023 90.9569 114.935 88.5933 114.749 85.579C114.056 86.9713 112.167 87.7799 110.34 87.7799C106.558 87.7799 103 84.7034 103 79.9378C103 75.0766 106.558 72 110.34 72C112.167 72 114.023 72.8086 114.749 74.201V72.3206H119V85.3445C119 91.8565 115.912 95 110.684 95C107.442 95 104.67 93.1196 103.437 90.3014C104.54 89.7512 105.86 89.0718 106.967 88.5215C107.47 89.9187 109.2 90.9569 110.684 90.9569ZM111.093 76.2775C109.233 76.2775 107.563 77.7034 107.563 79.8421C107.563 82.11 109.233 83.5359 111.093 83.5359C112.888 83.5359 114.651 82.0431 114.651 79.8421C114.651 77.5742 112.916 76.2775 111.093 76.2775Z\" fill={darkColor}/>\n                        <path d=\"M127.258 87H123V64H127.258V74.4284C127.842 72.5773 129.923 71.7813 131.271 71.7813C135.041 71.7813 137 74.3955 137 78.8937V86.9953H132.742V79.0539C132.742 77.1085 131.394 76.0864 130.109 76.0864C128.76 76.0864 127.258 76.8542 127.258 79.1151V87Z\" fill={darkColor}/>\n                        <path d=\"M150 71.8176V75.3936H146.645V87H141.914V75.3936H139V71.8176H141.914V66H146.645V71.8176H150Z\" fill={darkColor}/>\n                    </>\n                    :\n                    <>\n                        <path d=\"M0 87V65H8.82867C15.3053 65 19 69.7904 19 76.0472C19 82.2756 15.3053 87 8.82867 87H0ZM4.77656 82.7518H8.8335C12.4316 82.7518 14.2283 79.6541 14.2283 76.0472C14.2283 72.4072 12.4316 69.2482 8.8335 69.2482H4.77656V82.7518Z\" fill={white}/>\n                        <path d=\"M36.1388 84.0755C34.5829 86.2314 31.7009 87 29.0832 87C24.6453 87 21 83.98 21 79.4545C21 74.9245 24.6453 72 29.0832 72C33.4917 72 37 75.0473 37 79.5773C37 79.9457 36.9658 80.5324 36.9364 80.9008H25.6043C25.8343 82.5655 27.7914 83.3023 29.4159 83.3023C30.6734 83.3023 32.0336 82.8702 32.7969 81.9469L36.1388 84.0755ZM32.3615 78.222C32.1315 76.4663 30.4043 75.7568 29.1125 75.7568C27.8208 75.7568 26.0642 76.4027 25.6679 78.222H32.3615Z\" fill={white}/>\n                        <path d=\"M54.1388 84.0755C52.5829 86.2314 49.7009 87 47.0832 87C42.6453 87 39 83.98 39 79.4545C39 74.9245 42.6453 72 47.0832 72C51.4917 72 55 75.0473 55 79.5773C55 79.9457 54.9658 80.5324 54.9364 80.9008H43.6043C43.8343 82.5655 45.7914 83.3023 47.4159 83.3023C48.6734 83.3023 50.0336 82.8702 50.7969 81.9469L54.1388 84.0755ZM50.3615 78.222C50.1315 76.4663 48.4043 75.7568 47.1125 75.7568C45.8208 75.7568 44.0642 76.4027 43.6679 78.222H50.3615Z\" fill={white}/>\n                        <path d=\"M61.681 72.3223V74.2129C62.4629 72.813 64.3623 72 66.332 72C70.4065 72 74 75.0933 74 79.8848C74 84.7724 70.4015 87.8657 66.332 87.8657C64.3623 87.8657 62.4629 87.0864 61.681 85.6817V95H57V72.3271H61.681V72.3223ZM65.4449 83.5938C67.4496 83.5938 69.1085 82.1602 69.1085 79.9762C69.1085 77.7296 67.4446 76.296 65.4449 76.296C63.4752 76.296 61.7812 77.7969 61.7812 79.9762C61.7812 82.2612 63.5103 83.5938 65.4449 83.5938Z\" fill={white}/>\n                        <path d=\"M80.0153 80.0784C80.0859 81.5078 81.2804 82.7741 83.5335 82.7741C85.5447 82.7741 86.946 81.8628 86.9812 80.4046C87.0165 79.3973 86.5377 78.5195 84.1485 77.872L81.3157 77.1237C76.1291 75.5983 75.2419 72.7059 75.2419 70.6913C75.2419 66.6957 78.8257 64 83.3319 64C87.8734 64 91.2858 66.5662 91.2858 70.8544H86.3008C86.3008 69.3627 85.2423 68.3218 83.2614 68.3218C81.5174 68.3218 80.2219 69.2332 80.2219 70.5618C80.2219 71.147 80.4639 72.2167 82.7472 72.8355L85.5447 73.6797C91.2455 75.2386 92.0621 78.2941 91.9965 80.4382C91.926 84.8895 87.697 87 83.5335 87C78.4124 87 75 84.1076 75 80.0784H80.0153Z\" fill={white}/>\n                        <path d=\"M98.0335 64C99.6712 64 101 65.1163 101 66.5812C101 68.0461 99.6764 69.1954 98.0335 69.1954C96.3957 69.1954 95 68.0461 95 66.5812C95 65.1163 96.3906 64 98.0335 64ZM100.439 87H95.6232V72.1016H100.439V87Z\" fill={white}/>\n                        <path d=\"M110.684 90.9569C114.023 90.9569 114.935 88.5933 114.749 85.579C114.056 86.9713 112.167 87.7799 110.34 87.7799C106.558 87.7799 103 84.7034 103 79.9378C103 75.0766 106.558 72 110.34 72C112.167 72 114.023 72.8086 114.749 74.201V72.3206H119V85.3445C119 91.8565 115.912 95 110.684 95C107.442 95 104.67 93.1196 103.437 90.3014C104.54 89.7512 105.86 89.0718 106.967 88.5215C107.47 89.9187 109.2 90.9569 110.684 90.9569ZM111.093 76.2775C109.233 76.2775 107.563 77.7034 107.563 79.8421C107.563 82.11 109.233 83.5359 111.093 83.5359C112.888 83.5359 114.651 82.0431 114.651 79.8421C114.651 77.5742 112.916 76.2775 111.093 76.2775Z\" fill={white}/>\n                        <path d=\"M127.258 87H123V64H127.258V74.4284C127.842 72.5773 129.923 71.7813 131.271 71.7813C135.041 71.7813 137 74.3955 137 78.8937V86.9953H132.742V79.0539C132.742 77.1085 131.394 76.0864 130.109 76.0864C128.76 76.0864 127.258 76.8542 127.258 79.1151V87Z\" fill={white}/>\n                        <path d=\"M150 71.8176V75.3936H146.645V87H141.914V75.3936H139V71.8176H141.914V66H146.645V71.8176H150Z\" fill={white}/>\n                    </>\n            }\n        </svg>\n    </>\n);\n}\n", "import * as React from 'react';\nimport {dark, darkenGrey, green, primary, red} from \"@root/react-components/src/values/colors/colors\";\nimport {Toast} from \"@root/react-components/src/misc/Toast\";\nimport i18next from \"i18next\";\nimport {primaryFontMedium, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport LanguageDetect from \"languagedetect\";\nimport {Language} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport { gettextToI18next } from 'i18next-conv';\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {shuffle} from \"lodash\";\nimport {DEFAULT_LANGUAGE, getLanguageCode, LANGUAGES} from \"@backend/Types/Language\";\n\n// 1px primary color image\n// source: https://shoonia.github.io/1x1/#2780bbff\nexport const PLACEHOLDER_IMAGE = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAA1JREFUGFdjUG/Y/R8ABJYCYtJPB9cAAAAASUVORK5CYII=\"\n\nexport const months = [\n    \"January\",\n    \"February\",\n    \"March\",\n    \"April\",\n    \"May\",\n    \"June\",\n    \"July\",\n    \"August\",\n    \"September\",\n    \"October\",\n    \"November\",\n    \"December\"\n];\n\nexport const SUPPORTED_IMAGE_EXTENSIONS : string[] = [\n    \"jpg\",\n    \"jpeg\",\n    \"png\",\n    \"gif\",\n    \"bmp\"\n];\n\nexport const SUPPORTED_VIDEO_EXTENSIONS : string[] = [\n    \"mp4\"\n];\n\n// 30 minutes * 60 seconds\nexport const VIDEO_TRANSCRIPTION_DURATION_LIMIT = 3600 as const;\n\n/// emulate a sleep using async function\nexport async function sleep(ms : number) : Promise<void> {\n    return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function hideOverflow() {\n    document.documentElement.style.overflow = 'hidden';\n    document.body.style.overflow = 'hidden';\n}\n\n// source : https://stackoverflow.com/a/2234986\nexport const isDescendant = (parent: HTMLElement, child: HTMLElement) => {\n    let node = child.parentNode;\n    while (node != null) {\n        if (node == parent) {\n            return true;\n        }\n        node = node.parentNode;\n    }\n    return false;\n};\n\n// search for Session, World and Document in url path\nexport function parseURL(url : URL): { session: string, document: string } {\n    let session: string = \"\", document: string = \"\";\n\n    const pathname: string = url.pathname;\n\n    let sessionTest = pathname.match(/\\/session\\/\\d{1,6}/g);\n    if(sessionTest)\n        session = sessionTest[0].substring(sessionTest[0].lastIndexOf(\"/\") + 1);\n\n    let documentTest = pathname.match(/\\/document\\/\\d{1,20}/g);\n    if(documentTest)\n        document = documentTest[0].substring(documentTest[0].lastIndexOf(\"/\") + 1);\n\n    return { session, document };\n}\n\n// accepted file format from Assimp 4\n// https://github.com/assimp/assimp\nexport const acceptedFormat: string[] = [\n    \"3D\", \"3DS\", \"3MF\", \"AC\", \"AC3D\",\n    \"ACC\", \"AMJ\", \"ASE\", \"ASK\", \"B3D\",\n    \"BVH\", \"CMS\", \"COB\", \"DAE\",\n    \"DXF\", \"ENFF\", \"FBX\", \"GLTF\", \"GLB\",\n    \"HMB\", \"STEP\", \"IRR\", \"IRRMESH\", \"LWO\",\n    \"LWS\", \"LXO\", \"MD2\", \"MD3\", \"MD5\",\n    \"MDC\", \"MDL\", \"MESH\", \"MOT\", \"MS3D\",\n    \"NDO\", \"NFF\", \"OBJ\", \"OFF\", \"OGEX\",\n    \"PLY\", \"PMX\", \"PRJ\", \"Q3O\", \"Q3S\",\n    \"RAW\", \"SCN\", \"SIB\", \"SMD\",\n    \"STL\", \"TER\", \"UC\", \"VTA\", \"X\",\n    \"X3D\", \"XGL\", \"ZGL\", \"ZIP\"\n];\n\n// Always disable the button if the navigator.clipboard is undefined\nexport const copyToClipBoard = (value: string) => {\n    try {\n        const toastContent: JSX.Element = <><span style={{font: primaryFontMedium}}>{value}</span>&nbsp;\n            {i18next.t(\"was copied to clipboard\")}</>;\n        navigator.clipboard.writeText(value).then(() => Toast.showToast(toastContent));\n    } catch {\n        Toast.showToast(i18next.t(\"You need a to be on a secure connection to copy on the clipboard\"));\n    }\n};\n\nexport function duplicateToast(title: string){\n    const toastContent: JSX.Element = <><b>{title}</b>&nbsp;{i18next.t(\"was duplicated\")}</>;\n    Toast.showToast(toastContent);\n}\n\nexport function isInputFileAnImage(file: File): boolean {\n    const fileNameElements: string[] = file.name.split('.');\n    if (fileNameElements.length === 1)\n        return false;\n    const fileExtension: string = fileNameElements[fileNameElements.length - 1];\n    return SUPPORTED_IMAGE_EXTENSIONS.includes(fileExtension.toLowerCase());\n}\n\n// cube identity matrix\nconst nodes = [\n    [0, 0, 0],\n    [0, 0, 1],\n    [0, 1, 0],\n    [0, 1, 1],\n    [1, 0, 0],\n    [1, 0, 1],\n    [1, 1, 0],\n    [1, 1, 1]\n];\n\nconst edges = [\n    // dotted lines\n    [5, 7],\n    [3, 7],\n    [7, 6],\n\n    [1, 3],\n    [1, 5],\n    [0, 1],\n    [4, 5],\n    [6, 4],\n    [0, 4],\n\n    // colored lines\n    [2, 6],\n    [2, 0],\n    [3, 2],\n];\n\nconst rotateAngle = [Math.PI / 4, Math.PI / 4];\n\n// rotateX\nconst sinX = Math.sin(rotateAngle[0]);\nconst cosX = Math.cos(rotateAngle[0]);\n\n// rotateY\nconst sinY = Math.sin(rotateAngle[1]);\nconst cosY = Math.cos(rotateAngle[1]);\n\n// padding\nconst padding = 48;\n\n// source https://rosettacode.org/wiki/Draw_a_rotating_cube#JavaScript\nexport const drawCuboid = (canvas: HTMLCanvasElement | null,\n                           width: number, height: number,\n                           dimensions: {x: number, y: number, z: number},\n                           scaleFactor: number = 1) => {\n\n    if (!canvas)\n        return;\n\n    // make sure we have an integer\n    width = Math.floor(width);\n    height = Math.floor(height);\n\n    // set canvas height and width\n    canvas.width = width;\n    canvas.height = height;\n\n    // get context\n    const g: CanvasRenderingContext2D | null = canvas.getContext(\"2d\");\n    if (!g)\n        return;\n\n    // setup font\n    g.font = secondaryFontMedium;\n\n    // useful variables\n    let lowestX = 0, highestX = 0;\n    let lowestY = 0, highestY = 0;\n\n    // saves the entire state of the canvas by pushing the current state onto a stack\n    g.save();\n\n    // setup our Points matrix with the dimensions params\n    let points = nodes.map((node) => {\n        return [node[0] * dimensions.x * 100, node[1] * dimensions.y * 100, node[2] * dimensions.z * 100];\n    });\n\n    // apply rotation to our Points\n    points.forEach((node) => {\n        let x = node[0];\n        let y = node[1];\n        let z = node[2];\n\n        node[0] = x * cosX - z * sinX;\n        node[2] = z * cosX + x * sinX;\n\n        z = node[2];\n\n        node[1] = y * cosY - z * sinY;\n        node[2] = z * cosY + y * sinY;\n\n        // Find our most far points on the X and Y axis\n        if(node[0] < lowestX)\n            lowestX = node[0];\n\n        if(node[0] > highestX)\n            highestX = node[0];\n\n        if(node[1] < lowestY)\n            lowestY = node[1];\n\n        if(node[1] > highestY)\n            highestY = node[1];\n    });\n\n    // calculate height and width of our rotated cube\n    let cubeHeight = highestY - lowestY;\n    let cubeWidth = highestX - lowestX;\n\n    // if our cube isn't within our required size, recalculate our Points matrix with the right scale\n    if(\n        Math.round(cubeWidth) != width - padding && Math.round(cubeHeight) != height - padding ||\n        cubeWidth > width - padding ||\n        cubeHeight > height - padding\n    ){\n        let factor = (cubeWidth - width - padding) > (cubeHeight - height - padding) ?\n            (width - padding) / cubeWidth : (height - padding) / cubeHeight;\n        drawCuboid(\n            canvas,\n            width, height,\n            {x : dimensions.x * factor, y : dimensions.y * factor, z : dimensions.z * factor},\n            factor * scaleFactor\n        );\n        return;\n    }\n\n    // calculate the offset to recenter our cube\n    let offsetX = (highestX + lowestX) / 2;\n    let offsetY = (highestY + lowestY) / 2;\n\n    // apply offset\n    points.forEach((node) => {\n        node[0] -= offsetX;\n        node[1] -= offsetY;\n    });\n\n\n    // clear our canvas and center our [0, 0] coordinate\n    g.clearRect(0, 0, canvas.width, canvas.height);\n    g.translate(canvas.width / 2, canvas.height / 2);\n\n    // draw each edges\n    edges.forEach((edge, index) => {\n        if (!g)\n            return;\n        g.beginPath();\n        let p1 = points[edge[0]];\n        let p2 = points[edge[1]];\n        g.moveTo(p1[0], p1[1]);\n\n        // Color our front X, Y and Z axis\n        if([9, 10, 11].includes(index)){\n            g.setLineDash([]);\n            let midpoint = [(p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2];\n            if(index === 9){\n                // x\n                midpoint[0] += 10;\n                midpoint[1] += 10;\n                g.textAlign = \"left\";\n                g.strokeStyle = red;\n            }else if (index === 10) {\n                // y\n                midpoint[0] += 3;\n                g.textAlign = \"start\";\n                g.strokeStyle = green;\n            } else{\n                // z\n                midpoint[0] -= 10;\n                midpoint[1] += 10;\n                g.textAlign = \"right\";\n                g.strokeStyle = primary;\n            }\n\n            // and the text dimension\n            g.fillText((index === 9 ? \"x: \" + Math.floor(dimensions.x / scaleFactor * 100) / 100 :\n                index === 10 ? \"y: \" + Math.floor(dimensions.y / scaleFactor * 100) / 100 :\n                    \"z: \" + Math.floor(dimensions.z / scaleFactor * 100) / 100) +\n                \"m\", midpoint[0], midpoint[1]);\n        }\n        // Draw our rear edges in dotted lines\n        else if ([0, 1, 2].includes(index)) {\n            g.strokeStyle = darkenGrey;\n            g.setLineDash([3, 6]);\n        }\n        // Draw the rest\n        else{\n            g.strokeStyle = dark;\n            g.setLineDash([]);\n        }\n\n        // Draw line\n        g.lineTo(p2[0], p2[1]);\n        g.stroke();\n    });\n\n    // restores the most recently saved canvas state by popping the top entry in the drawing state stack\n    g.restore();\n};\n\n\nexport const preventClick = (event: any) => {\n    event.preventDefault();\n    event.stopPropagation();\n    return false;\n};\n\nexport const recursivelyPreventClick = (element: Node) => {\n    if(!element)\n        return;\n\n    element.addEventListener(\"click\", preventClick);\n    if(element.childNodes.length)\n        element.childNodes.forEach(element => recursivelyPreventClick(element));\n};\n\nexport const recursivelyUnPreventClick = (element: Node) => {\n    if(!element)\n        return;\n\n    element.removeEventListener(\"click\", preventClick);\n    if(element.childNodes.length)\n        element.childNodes.forEach(element => recursivelyUnPreventClick(element));\n};\n\n\nexport function formatDate(date: Date, includeTime?: boolean = true): string {\n    const year: number = date.getFullYear();\n    const month: string = String(date.getMonth() + 1).padStart(2, '0');\n    const day: string = String(date.getDate()).padStart(2, '0');\n    const hours: string = String(date.getHours()).padStart(2, '0');\n    const minutes: string = String(date.getMinutes()).padStart(2, '0');\n    const seconds: string = String(date.getSeconds()).padStart(2, '0');\n\n    // Format the date string\n    return includeTime ? `${year}-${month}-${day} ${hours}:${minutes}:${seconds}` : `${year}-${month}-${day}`;\n}\n\nexport enum DataUnit {\n    B,\n    KB,\n    MB,\n    GB,\n    COUNT\n}\n\nexport namespace DataUnit {\n    export function toString(type: DataUnit): string {\n        return DataUnit[type];\n    }\n\n    export function fromString(typeStr: string): DataUnit {\n        return (DataUnit as any)[typeStr];\n    }\n}\n\nexport function bytesPerDataUnits(dataUnit: DataUnit) : number {\n    switch(dataUnit){\n        case DataUnit.B:  return 1;\n        case DataUnit.KB: return 1024;\n        case DataUnit.MB: return 1048576;\n        case DataUnit.GB: return 1073741824;\n        default: return 0;\n    }\n}\n\nexport class DataAmount{\n    amount: number = 0;\n    unit: DataUnit = DataUnit.B;\n\n    constructor(amount: number, unit: DataUnit) {\n        this.amount = amount;\n        this.unit = unit;\n    }\n\n    toString(): string { return this.amount.toFixed(1) + \" \" + DataUnit[this.unit]; }\n    toExactBytes(): number { return this.amount * bytesPerDataUnits(this.unit); }\n}\n\nexport function convertBytesIntoPrettyDataAmount(bytes: number) : DataAmount {\n    const amountGB : number = bytes/bytesPerDataUnits(DataUnit.GB);\n    if(amountGB > 1)\n        return new DataAmount(amountGB, DataUnit.GB);\n\n    const amountMB : number = bytes/bytesPerDataUnits(DataUnit.MB);\n    if(amountMB > 1)\n        return new DataAmount(amountMB, DataUnit.MB);\n\n    const amountKB : number = bytes/bytesPerDataUnits(DataUnit.KB);\n    if(amountKB > 1)\n        return new DataAmount(amountKB, DataUnit.KB);\n\n    return new DataAmount(bytes, DataUnit.B);\n}\n\nexport const DAY_IN_SECONDS: bigint = BigInt(86400); // 24 hours * 60 minutes * 60 seconds\n\nexport enum TimeUnit {\n    MILLISECONDS,\n    SECONDS,\n    MINUTES,\n    HOURS,\n    DAYS,\n    WEEKS,\n    MONTHS,\n    YEARS,\n    COUNT\n}\n\nexport function millisecondsPerTimeUnit(timeUnit: TimeUnit) : number {\n    switch(timeUnit){\n        case TimeUnit.MILLISECONDS:    return 1;\n        case TimeUnit.SECONDS:         return 1000;\n        case TimeUnit.MINUTES:         return 1000 * 60;\n        case TimeUnit.HOURS:           return 1000 * 60 * 60;\n        case TimeUnit.DAYS:            return 1000 * 60 * 60 * 24;\n        case TimeUnit.WEEKS:           return 1000 * 60 * 60 * 24 * 7;\n        case TimeUnit.MONTHS:          return 1000 * 60 * 60 * 24 * 30;\n        case TimeUnit.YEARS:           return 1000 * 60 * 60 * 24 * 365;\n        default:                       return 0;\n    }\n}\n\nexport namespace TimeUnit {\n    export function toString(type: TimeUnit): string {\n        return TimeUnit[type];\n    }\n\n    export function fromString(typeStr: string): TimeUnit {\n        return (TimeUnit as any)[typeStr];\n    }\n}\n\nexport class TimeAmount{\n    amount: number = 0;\n    timeframe: TimeUnit = TimeUnit.MILLISECONDS;\n\n    constructor(amount: number, timeframe: TimeUnit) {\n        this.amount = amount;\n        this.timeframe = timeframe;\n    }\n\n    toMilliseconds(): number{\n        return this.amount * millisecondsPerTimeUnit(this.timeframe);\n    }\n\n    toPrettyHumanTimeShort(): string {\n        const ms = this.toMilliseconds();\n        if(ms % millisecondsPerTimeUnit(TimeUnit.YEARS) !== ms)\n            return parseFloat((ms / millisecondsPerTimeUnit(TimeUnit.YEARS)).toFixed(2)) + \" Years\";\n        else if(ms % millisecondsPerTimeUnit(TimeUnit.MONTHS) !== ms)\n            return parseFloat((ms / millisecondsPerTimeUnit(TimeUnit.MONTHS)).toFixed(2)) + \" Months\";\n        else\n            return parseFloat((ms / millisecondsPerTimeUnit(TimeUnit.DAYS)).toFixed(2)) + \" Days\";\n    }\n\n    toPrettyHumanTime(abbreviations: boolean = false, withSpace: boolean = false): string {\n        let ms = this.toMilliseconds();\n\n        if(!abbreviations)\n            withSpace = true;\n\n        if(ms < 1000)\n            return i18next.t(\"Less than a second\");\n\n        let amountOfYears = Math.floor(ms / millisecondsPerTimeUnit(TimeUnit.YEARS));\n        ms -= (amountOfYears * millisecondsPerTimeUnit(TimeUnit.YEARS));\n        let amountOfMonths = Math.floor(ms / millisecondsPerTimeUnit(TimeUnit.MONTHS));\n        ms -= (amountOfMonths * millisecondsPerTimeUnit(TimeUnit.MONTHS));\n        let amountOfDays = Math.floor(ms / millisecondsPerTimeUnit(TimeUnit.DAYS));\n        ms -= (amountOfDays * millisecondsPerTimeUnit(TimeUnit.DAYS));\n        let amountOfHours = Math.floor(ms / millisecondsPerTimeUnit(TimeUnit.HOURS));\n        ms -= (amountOfHours * millisecondsPerTimeUnit(TimeUnit.HOURS));\n        let amountOfMinutes = Math.floor( ms / millisecondsPerTimeUnit(TimeUnit.MINUTES));\n        ms -= (amountOfMinutes * millisecondsPerTimeUnit(TimeUnit.MINUTES));\n        let amountOfSeconds = Math.floor( ms / millisecondsPerTimeUnit(TimeUnit.SECONDS));\n\n        let mappedTime = [\n            {\n                label: abbreviations ? i18next.t(\"Y\") : i18next.t(\"Year\"),\n                value: amountOfYears\n            },\n            {\n                label: abbreviations ? i18next.t(\"M\") : i18next.t(\"Month\"),\n                value: amountOfMonths\n            },\n            {\n                label: abbreviations ? i18next.t(\"d\") : i18next.t(\"Day\"),\n                value: amountOfDays\n            },\n            {\n                label: abbreviations ? i18next.t(\"h\") : i18next.t(\"Hour\"),\n                value: amountOfHours\n            },\n            {\n                label: abbreviations ? i18next.t(\"m\") :i18next.t(\"Minute\"),\n                value: amountOfMinutes\n            },\n            {\n                label: abbreviations ? i18next.t(\"s\") :i18next.t(\"Second\"),\n                value: amountOfSeconds\n            }\n        ]\n\n        let str = \"\";\n        for (let i = 0; i < mappedTime.length; i++) {\n            // add time component value\n            if(mappedTime[i].value)\n                str += mappedTime[i].value + (abbreviations ? \"\" : \" \") + mappedTime[i].label;\n\n            // add plural\n            if(!abbreviations && mappedTime[i].value > 1)\n                str += \"s\"\n\n            // trailing space\n            if(withSpace)\n                str += \" \";\n        }\n\n        return str.trim();\n    }\n\n}\n\nexport function convertMillisecondsIntoPrettyTimeAmount(milliseconds: number){\n    for (let i = TimeUnit.COUNT - 1; i >= 0; i--)\n        if (milliseconds % millisecondsPerTimeUnit((i as TimeUnit)) !== milliseconds)\n            return new TimeAmount(milliseconds / millisecondsPerTimeUnit((i as TimeUnit)), (i as TimeUnit))\n\n    return new TimeAmount(milliseconds, TimeUnit.MILLISECONDS);\n}\n\n// check if current window is embed (in iframe)\nexport function isEmbed(){\n    return window.location !== window.parent.location || new URL(window.location.href).searchParams.get(\"embed\") === \"yes\";\n}\n\nexport async function changeLanguage(newLanguage: Language){\n    const languageCode: string = getLanguageCode(newLanguage);\n\n    // load language data if not present\n    if (newLanguage !== DEFAULT_LANGUAGE) {\n        const poFile = await fetch(`/Lang/Web-${languageCode}.po`, { method: \"GET\" });\n        const resource = JSON.parse(await gettextToI18next(languageCode, await poFile.text(), {}));\n\n        // strip empty strings\n        const resourceArrKey = Object.keys(resource);\n        for (let i = 0; i < resourceArrKey.length; i++)\n            if(!resource[resourceArrKey[i]])\n                delete resource[resourceArrKey[i]];\n\n        i18next.addResourceBundle(languageCode, \"translation\", resource);\n    }\n\n    // change language\n    await i18next.changeLanguage(languageCode);\n}\n\nexport function timestampToString(timestampSec: bigint, showTime: boolean = true, seconds: boolean = false): string {\n    if(!timestampSec)\n        return i18next.t(\"Unknown\");\n\n    const date = new Date(Number(timestampSec) * 1000);\n    let dateString = date.getDate() + \" \" + i18next.t(months[date.getMonth()]) + \" \" + date.getFullYear();\n\n    if (showTime) {\n        dateString += \", \" + date.getHours() + \":\" + (date.getMinutes() < 10 ? \"0\"+date.getMinutes() : date.getMinutes());\n\n        if (seconds)\n            dateString += `:${(date.getSeconds() < 10 ? \"0\" + date.getSeconds() : date.getSeconds())}`\n    }\n\n    return dateString;\n}\n\nexport function timestampToShortString(timestampSec: bigint): string {\n    if(!timestampSec)\n        return i18next.t(\"Unknown\");\n\n    const date: Date = new Date(Number(timestampSec * BigInt(1000)));\n    const format: Intl.DateTimeFormatOptions\n        = {hour12: false, year: 'numeric', month: 'numeric', day: 'numeric', hour: '2-digit', minute: '2-digit'};\n    return date.toLocaleString(\"en-CA\", format).replace(',', '');\n}\n\n// check if a month is in the future\nexport function isMonthInFuture(year: number, monthIndex: number): boolean {\n    const today = new Date();\n    return monthIndex !== null && year === today.getFullYear() && monthIndex > today.getMonth();\n}\n\nexport function convertSecondsToTimer(secondsTotal: number) {\n    const minutes: number = Math.floor(secondsTotal / 60);\n    const seconds: number = Math.floor(secondsTotal % 60);\n    const secondsLabel: string = seconds < 10 ? \"0\" + seconds : seconds.toString();\n\n    return minutes + \":\" + secondsLabel;\n}\n\nexport async function generateVideoThumbnailURL(videoDecoder: HTMLVideoElement,\n                                                canvas: HTMLCanvasElement,\n                                                timeMS: number): Promise<string> {\n\n    // create a promise that will resolve with the thumbnail Blob URL\n    return new Promise((resolve) => {\n\n        // bind the 'ontimeupdate' listener\n        videoDecoder.ontimeupdate = async () => {\n\n            // Get image from video at current time and create a Blob with it\n            canvas.getContext(\"2d\")?.drawImage(videoDecoder, 0, 0, canvas.width, canvas.height);\n            canvas.toBlob((blob) => resolve(blob ? URL.createObjectURL(blob) : \"\"));\n        }\n\n        // seek the time to produce a Frame for!\n        videoDecoder.currentTime = timeMS / 1000;\n    });\n}\n\nexport function isProductionEnvironment() : boolean {\n    return window.location.origin.startsWith(\"https://app.deepsight.ca\");\n}\n\nexport function isStagingEnvironment() : boolean {\n    return window.location.origin.startsWith(\"https://staging.deepsight.ca\");\n}\n\nexport function detectLanguageOfGivenPhrases(phrases: string[], minThreshold: number = 0.0): Language | undefined {\n    const filteredPhrases: Set<string> = new Set(phrases.filter((phrase: string): boolean => Boolean(phrase.length)));\n    if (!filteredPhrases.size)\n        // console warn here because this function is used outside of Studio, where AdapterLog cannot be used\n        console.warn(\"Can't detect language of an empty set of phrases\");\n\n    // compile all the phrases into a sample for the language detector\n    const detectionSample: string = Array.from(filteredPhrases).join(\" \");\n\n    // attempt to detect the language\n    const languageDetector: LanguageDetect = new LanguageDetect();\n    for (const [language, probability] of languageDetector.detect(detectionSample)) {\n        // skip if the probability is below minThreshold\n        if (probability < minThreshold)\n            break;\n\n        switch (language) {\n            case \"english\": return LANGUAGES.ENGLISH;\n            case \"french\":  return LANGUAGES.FRENCH;\n            case \"spanish\": return LANGUAGES.SPANISH;\n            case \"german\":  return LANGUAGES.GERMAN;\n            case \"dutch\":   return LANGUAGES.DUTCH;\n            default: // keep looking!\n        }\n    }\n\n    // just in case, this should not happen as LanguageDetect always returns a list with all the supported languages\n    return undefined;\n}\n\n// Compare titles, prioritizing letters first in ascending order (a,b,c...1,2,3...)\nexport function compareTitles(title1: string, title2: string, isAscendant: boolean = true): number {\n    if (!title1 || !title2)\n        return 0;\n\n    const title1StartsWithChar: boolean = Number.isNaN(Number(title1[0]));\n    const title2StartsWithChar: boolean = Number.isNaN(Number(title2[0]));\n\n    // If both elements start with letter OR both start with number, perform normal comparison\n    if ((!title1StartsWithChar && !title2StartsWithChar) || (title1StartsWithChar && title2StartsWithChar)) {\n        return isAscendant ?\n            title1.localeCompare(title2, undefined, { numeric: true, sensitivity: 'base' }) :\n            title2.localeCompare(title1, undefined, { numeric: true, sensitivity: 'base' });\n    }\n    // If title1 starts with a letter and not title2, prioritize title1 (letters before numbers)\n    if (title1StartsWithChar && !title2StartsWithChar)\n        return isAscendant ? -1 : 1;\n\n    // If title1 starts with a number and title2 with a letter, prioritize title2 (letters before numbers)\n    if (!title1StartsWithChar && title2StartsWithChar) {\n        return isAscendant ? 1 : -1;\n    }\n\n    return 0;\n}\n\n/// decode base 64 into raw 128 bits token\nexport function decodeTokenBase64(base64: string): bigint {\n    if (!base64)\n        return BigInt(0);\n\n    // Safely try to decode the base 64\n    let byteString: string;\n    try { byteString = atob(base64); }\n    catch (e) { return BigInt(0); }\n\n    if (byteString.length !== 16)\n        return BigInt(0);\n\n    const uint8Array = new Uint8Array([...byteString].map((char: string) => char.charCodeAt(0)));\n    const byteArray: ArrayBuffer = uint8Array.buffer;\n    const viewArray: DataView = new DataView(byteArray);\n\n    const high: bigint = viewArray.getBigUint64(8, true);\n    const low: bigint = viewArray.getBigUint64(0, true);\n\n    return (high << BigInt(64)) | low;\n}\n\nexport function sanitizeFileName(fileName: string): string {\n    if (fileName.length === 0)\n        return \"\"\n\n    return fileName\n        .normalize(\"NFD\")   // remove diacritics\n        .split(\"\")\n        .filter((character: string) => {\n            const characterCode: number = character.charCodeAt(0);\n\n            // filter for desired ASCII characters\n            return characterCode === 46 ||                         // .\n                   characterCode === 45 ||                         // -\n                   characterCode === 95 ||                         // _\n                   (48 <= characterCode && characterCode <= 57) || // 0-9\n                   (65 <= characterCode && characterCode <= 90) || // A-Z\n                   (97 <= characterCode && characterCode <= 122);  // a-z\n        })\n        .join(\"\");\n}\n\nexport function sortMapByValueAlpha<T>(map: Map<T, string>): Map<T, string> {\n    return new Map([...map.entries()].sort(([, a], [, b]) => a.localeCompare(b, undefined, { sensitivity: \"base\" })));\n}\n\nexport function isNumericString(str: string): boolean {\n    if (str === \"\")\n        return false;\n    for (const char of str)\n        if (char < \"0\" || char > \"9\")\n            return false;\n\n    return true;\n}\n\nexport async function setLocalKeyValuePair(key: string, value: string) {\n    // Create the file if it does not exist\n    try {\n        const dirOPFS: FileSystemDirectoryHandle | null = await navigator.storage?.getDirectory() ?? null;\n        if (!dirOPFS)\n            return;\n\n        const fileHandle: FileSystemFileHandle = await dirOPFS.getFileHandle(key, { create: true });\n        if (!fileHandle.createWritable)\n            return;\n\n        // Write the value inside the file\n        const writable: FileSystemWritableFileStream = await fileHandle.createWritable();\n        await writable.write(value);\n        await writable.close();\n    } catch (e) {\n        console.error(`Failed to set local value : ${e}`);\n    }\n}\n\nexport async function getLocalValue(key: string): Promise<string> {\n    try {\n        const dirOPFS: FileSystemDirectoryHandle | null = await navigator.storage?.getDirectory() ?? null;\n        if (!dirOPFS)\n            return \"\";\n\n        const fileHandle: FileSystemFileHandle | null = await dirOPFS.getFileHandle(key).catch(() => null);\n        if (!fileHandle)\n            return \"\";\n\n        // Return the file's text\n        const file: File = await fileHandle.getFile();\n        return await file.text();\n    } catch (e) {\n        console.error(`Could not find the file for key ${key}: ${e}`)\n        return \"\";\n    }\n}\n\nexport function generatePassword(length = 8): string {\n    const charactersCategories: string[] = [\n        UtilsShared.UPPER_CASE_ALPHA,\n        UtilsShared.LOWER_CASE_ALPHA,\n        UtilsShared.DIGITS,\n        UtilsShared.SPECIAL_CHARS,\n    ];\n\n    if (length < Math.max(UtilsShared.PASSWORD_MIN_CHARACTERS, charactersCategories.length)\n        || length > UtilsShared.PASSWORD_MAX_CHARACTERS)\n        return \"\";\n\n    const password: string[] = charactersCategories.map((chars: string) => UtilsShared.generateCryptoCharacter(chars));\n\n    const allChars = charactersCategories.join('');\n    while (password.length < length)\n        password.push(UtilsShared.generateCryptoCharacter(allChars));\n\n    return shuffle(password).join('');\n}", "import * as React from 'react';\nimport {darkenPrimary, primary, shadowWhite, white} from \"../values/colors/colors\";\nimport {createRef} from \"react\";\nimport {secondaryFontMedium, secondaryFontXSmall} from \"../values/fonts/fonts\";\nimport ReactDOM from \"react-dom\";\nimport i18next from \"i18next\";\nimport {Box, styled} from \"@mui/material\";\n\nconst TRANSITION_DURATION_MS: number = 300;\nconst OPENING_TRANSFORMATION: string = \"translateY(0%)\";\nconst CLOSING_TRANSFORMATION: string = \"translateY(-100%)\";\nconst OPENING_TRANSITION: string = `${TRANSITION_DURATION_MS}ms transform`;\n\nconst Wrapper = styled(Box)({\n    width: \"300px\",\n    backgroundColor: white,\n    position: \"fixed\",\n    top: 0,\n    left: \"50%\",\n    padding: \"12px\",\n    zIndex: 9999,\n    borderBottomRightRadius: \"24px\",\n    borderBottomLeftRadius: \"24px\",\n    boxShadow: shadowWhite,\n    font: secondaryFontMedium,\n    textAlign: \"center\",\n    transform: CLOSING_TRANSFORMATION,\n    transition: OPENING_TRANSITION,\n});\n\nconst ItemsWrapper = styled(Box)({\n    height: \"100%\",\n    width: \"100%\",\n    maxHeight: \"90px\",\n    overflow: \"auto\",\n    paddingBottom: \"3px\"\n});\n\nconst Hide = styled(Box)({\n    width: \"100%\",\n    textAlign: \"center\",\n    font: secondaryFontXSmall,\n    color: primary,\n    textDecoration: \"underline\",\n    marginTop: \"3px\",\n    \"&:hover\": {\n        cursor: \"pointer\",\n        color: darkenPrimary\n    }\n});\n\nexport class Toast extends React.Component {\n    private readonly toastRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n\n    private timer: NodeJS.Timeout | null = null;\n    private static instance: Toast | null = null;\n    private content: React.ReactElement | null = null;\n\n    public static showToast(content: React.ReactElement, hideLabel: string = i18next.t(\"Hide this\"),\n                            timeoutMS: number = 3000) {\n        if (!Toast.instance) {\n            console.error(\"Error: Toast has no instance\"); // log error and abort!\n            return;\n        }\n\n        Toast.instance.content = (\n            <>\n                <ItemsWrapper>{content}</ItemsWrapper>\n                <Hide onClick={() => Toast.instance?.closeToast()}> {hideLabel} </Hide>\n            </>\n        );\n\n        if (Toast.instance.timer)\n            clearTimeout(Toast.instance.timer);\n\n        // Set a timer to hide the toast automatically after the timeout\n        Toast.instance.timer = setTimeout(() => { Toast.instance?.closeToast(); }, timeoutMS);\n        Toast.instance.forceUpdate();\n    }\n\n    constructor(props: object) {\n        super(props);\n        Toast.instance = this; // Set the static instance to this component\n    }\n\n    componentDidUpdate() {\n        if (this.toastRef.current) {\n            // if there is already a displayed Toast, the new one overwrite it\n            if (this.toastRef.current.style.transform === OPENING_TRANSFORMATION) {\n                this.toastRef.current.style.transition = \"0s transform\";\n                this.toastRef.current.style.transform = CLOSING_TRANSFORMATION;\n            }\n\n            // edit style to make the toast appears\n            setTimeout(() => {\n                if (this.toastRef.current) {\n                    this.toastRef.current.style.transition = OPENING_TRANSITION;\n                    this.toastRef.current.style.transform = OPENING_TRANSFORMATION;\n                }\n            }, TRANSITION_DURATION_MS);\n        }\n    }\n\n    componentWillUnmount() {\n        // Cleanup the timer when the component unmounts\n        if (this.timer)\n            clearTimeout(this.timer);\n    }\n\n    private closeToast() {\n        if (!this.toastRef.current)\n            return;\n\n        this.toastRef.current.style.transform = CLOSING_TRANSFORMATION;\n        setTimeout(() => {\n            this.content = null; // reset content after the transition\n            this.forceUpdate();\n        }, TRANSITION_DURATION_MS);\n    }\n\n    render() {\n        // Don't render the component if there is no children (children are set in showToast)\n        if (!this.content)\n            return null;\n\n        return <Wrapper id=\"toast\" ref={this.toastRef}>{this.content}</Wrapper>;\n    }\n}\n", "import Gettext from '@postalsys/gettext';\nimport { po } from 'gettext-parser';\nimport { js2i18next } from 'gettext-converter';\nimport fromCallback from 'p-from-callback';\n\nexport default function gettextToI18next(locale, body, options = {}) {\n  return addTextLocale(locale, body, options)\n    .then((translations) => (translations ? js2i18next({ translations }, { ...options, locale }) : {}))\n    .then((json) => JSON.stringify(json, null, 4));\n}\n\n/*\n * gettext --> barebone json\n */\nfunction addTextLocale(locale, body, options = {}) {\n  const gt = new Gettext();\n  const domain = 'messages';\n  const {\n    filter,\n    gettextDefaultCharset = 'UTF-8', // eslint-disable-line unicorn/text-encoding-identifier-case\n  } = options;\n\n  if (body.length > 0) {\n    gt.addTranslations(locale, domain, po.parse(body, gettextDefaultCharset));\n  }\n\n  return filter\n    ? fromCallback((cb) => filter(gt, locale, cb))\n    : Promise.resolve(gt.catalogs[locale]?.[domain].translations);\n}\n", "import encoding from 'encoding';\nimport { formatCharset, parseNPluralFromHeadersSafely, parseHeader } from './shared.js';\nimport { Transform } from 'readable-stream';\nimport util from 'util';\n\n/**\n * Parses a PO object into translation table\n *\n * @typedef {{ defaultCharset?: string, validation?: boolean }} Options\n * @param {string | Buffer} input PO object\n * @param {Options} [options] Optional options with defaultCharset and validation\n */\nexport function parse (input, options = {}) {\n  const parser = new Parser(input, options);\n\n  return parser.parse();\n};\n\n/**\n * Parses a PO stream, emits translation table in object mode\n *\n * @typedef {{ defaultCharset: strubg, validation: boolean }} Options\n * @param {Options} [options] Optional options with defaultCharset and validation\n * @param {import('readable-stream').TransformOptions} [transformOptions] Optional stream options\n */\nexport function stream (options = {}, transformOptions = {}) {\n  return new PoParserTransform(options, transformOptions);\n};\n\n/**\n * Creates a PO parser object. If PO object is a string,\n * UTF-8 will be used as the charset\n *\n * @typedef {{ defaultCharset?: string, validation?: boolean }} Options\n * @constructor\n * @param {string | Buffer} fileContents PO object\n * @param {Options} options Options with defaultCharset and validation\n */\nfunction Parser (fileContents, { defaultCharset = 'iso-8859-1', validation = false }) {\n  this._validation = validation;\n  this._charset = defaultCharset;\n\n  this._lex = [];\n  this._escaped = false;\n  this._node = {};\n  this._state = this.states.none;\n  this._lineNumber = 1;\n\n  if (typeof fileContents === 'string') {\n    this._charset = 'utf-8';\n    this._fileContents = fileContents;\n  } else {\n    this._fileContents = this._handleCharset(fileContents);\n  }\n}\n\n/**\n * Parses the PO object and returns translation table\n *\n * @return {Object} Translation table\n */\nParser.prototype.parse = function () {\n  this._lexer(this._fileContents);\n\n  return this._finalize(this._lex);\n};\n\n/**\n * Detects charset for PO strings from the header\n *\n * @param {Buffer} headers Header value\n */\nParser.prototype._handleCharset = function (buf = '') {\n  const str = buf.toString();\n  let pos;\n  let headers = '';\n  let match;\n\n  if ((pos = str.search(/^\\s*msgid/im)) >= 0) {\n    pos = pos + str.substr(pos + 5).search(/^\\s*(msgid|msgctxt)/im);\n    headers = str.substr(0, pos >= 0 ? pos + 5 : str.length);\n  }\n\n  if ((match = headers.match(/[; ]charset\\s*=\\s*([\\w-]+)(?:[\\s;]|\\\\n)*\"\\s*$/mi))) {\n    this._charset = formatCharset(match[1], this._charset);\n  }\n\n  if (this._charset === 'utf-8') {\n    return str;\n  }\n\n  return this._toString(buf);\n};\n\nParser.prototype._toString = function (buf) {\n  return encoding.convert(buf, 'utf-8', this._charset).toString('utf-8');\n};\n\n/**\n * State constants for parsing FSM\n */\nParser.prototype.states = {\n  none: 0x01,\n  comments: 0x02,\n  key: 0x03,\n  string: 0x04,\n  obsolete: 0x05\n};\n\n/**\n * Value types for lexer\n */\nParser.prototype.types = {\n  comments: 0x01,\n  key: 0x02,\n  string: 0x03,\n  obsolete: 0x04\n};\n\n/**\n * String matches for lexer\n */\nParser.prototype.symbols = {\n  quotes: /[\"']/,\n  comments: /#/,\n  whitespace: /\\s/,\n  key: /[\\w\\-[\\]]/,\n  keyNames: /^(?:msgctxt|msgid(?:_plural)?|msgstr(?:\\[\\d+])?)$/\n};\n\n/**\n * Token parser. Parsed state can be found from this._lex\n *\n * @param {String} chunk String\n */\nParser.prototype._lexer = function (chunk) {\n  let chr;\n\n  for (let i = 0, len = chunk.length; i < len; i++) {\n    chr = chunk.charAt(i);\n\n    if (chr === '\\n') {\n      this._lineNumber += 1;\n    }\n\n    switch (this._state) {\n      case this.states.none:\n      case this.states.obsolete:\n        if (chr.match(this.symbols.quotes)) {\n          this._node = {\n            type: this.types.string,\n            value: '',\n            quote: chr\n          };\n          this._lex.push(this._node);\n          this._state = this.states.string;\n        } else if (chr.match(this.symbols.comments)) {\n          this._node = {\n            type: this.types.comments,\n            value: ''\n          };\n          this._lex.push(this._node);\n          this._state = this.states.comments;\n        } else if (!chr.match(this.symbols.whitespace)) {\n          this._node = {\n            type: this.types.key,\n            value: chr\n          };\n          if (this._state === this.states.obsolete) {\n            this._node.obsolete = true;\n          }\n          this._lex.push(this._node);\n          this._state = this.states.key;\n        }\n        break;\n      case this.states.comments:\n        if (chr === '\\n') {\n          this._state = this.states.none;\n        } else if (chr === '~' && this._node.value === '') {\n          this._node.value += chr;\n          this._state = this.states.obsolete;\n        } else if (chr !== '\\r') {\n          this._node.value += chr;\n        }\n        break;\n      case this.states.string:\n        if (this._escaped) {\n          switch (chr) {\n            case 't':\n              this._node.value += '\\t';\n              break;\n            case 'n':\n              this._node.value += '\\n';\n              break;\n            case 'r':\n              this._node.value += '\\r';\n              break;\n            default:\n              this._node.value += chr;\n          }\n          this._escaped = false;\n        } else {\n          if (chr === this._node.quote) {\n            this._state = this.states.none;\n          } else if (chr === '\\\\') {\n            this._escaped = true;\n            break;\n          } else {\n            this._node.value += chr;\n          }\n          this._escaped = false;\n        }\n        break;\n      case this.states.key:\n        if (!chr.match(this.symbols.key)) {\n          if (!this._node.value.match(this.symbols.keyNames)) {\n            const err = new SyntaxError(`Error parsing PO data: Invalid key name \"${this._node.value}\" at line ${this._lineNumber}. This can be caused by an unescaped quote character in a msgid or msgstr value.`);\n\n            err.lineNumber = this._lineNumber;\n\n            throw err;\n          }\n          this._state = this.states.none;\n          i--;\n        } else {\n          this._node.value += chr;\n        }\n        break;\n    }\n  }\n};\n\n/**\n * Join multi line strings\n *\n * @param {Object} tokens Parsed tokens\n * @return {Object} Parsed tokens, with multi line strings joined into one\n */\nParser.prototype._joinStringValues = function (tokens) {\n  const response = [];\n  let lastNode;\n\n  for (let i = 0, len = tokens.length; i < len; i++) {\n    if (lastNode && tokens[i].type === this.types.string && lastNode.type === this.types.string) {\n      lastNode.value += tokens[i].value;\n    } else if (lastNode && tokens[i].type === this.types.comments && lastNode.type === this.types.comments) {\n      lastNode.value += '\\n' + tokens[i].value;\n    } else {\n      response.push(tokens[i]);\n      lastNode = tokens[i];\n    }\n  }\n\n  return response;\n};\n\n/**\n * Parse comments into separate comment blocks\n *\n * @param {Object} tokens Parsed tokens\n */\nParser.prototype._parseComments = function (tokens) {\n  // parse comments\n  tokens.forEach(node => {\n    if (!node || node.type !== this.types.comments) {\n      return;\n    }\n\n    const comment = {\n      translator: [],\n      extracted: [],\n      reference: [],\n      flag: [],\n      previous: []\n    };\n\n    const lines = (node.value || '').split(/\\n/);\n\n    lines.forEach(line => {\n      switch (line.charAt(0) || '') {\n        case ':':\n          comment.reference.push(line.substr(1).trim());\n          break;\n        case '.':\n          comment.extracted.push(line.substr(1).replace(/^\\s+/, ''));\n          break;\n        case ',':\n          comment.flag.push(line.substr(1).replace(/^\\s+/, ''));\n          break;\n        case '|':\n          comment.previous.push(line.substr(1).replace(/^\\s+/, ''));\n          break;\n        case '~':\n          break;\n        default:\n          comment.translator.push(line.replace(/^\\s+/, ''));\n      }\n    });\n\n    node.value = {};\n\n    Object.keys(comment).forEach(key => {\n      if (comment[key] && comment[key].length) {\n        node.value[key] = comment[key].join('\\n');\n      }\n    });\n  });\n};\n\n/**\n * Join gettext keys with values\n *\n * @param {Object} tokens Parsed tokens\n * @return {Object} Tokens\n */\nParser.prototype._handleKeys = function (tokens) {\n  const response = [];\n  let lastNode;\n\n  for (let i = 0, len = tokens.length; i < len; i++) {\n    if (tokens[i].type === this.types.key) {\n      lastNode = {\n        key: tokens[i].value\n      };\n      if (tokens[i].obsolete) {\n        lastNode.obsolete = true;\n      }\n      if (i && tokens[i - 1].type === this.types.comments) {\n        lastNode.comments = tokens[i - 1].value;\n      }\n      lastNode.value = '';\n      response.push(lastNode);\n    } else if (tokens[i].type === this.types.string && lastNode) {\n      lastNode.value += tokens[i].value;\n    }\n  }\n\n  return response;\n};\n\n/**\n * Separate different values into individual translation objects\n *\n * @param {Object} tokens Parsed tokens\n * @return {Object} Tokens\n */\nParser.prototype._handleValues = function (tokens) {\n  const response = [];\n  let lastNode;\n  let curContext;\n  let curComments;\n\n  for (let i = 0, len = tokens.length; i < len; i++) {\n    if (tokens[i].key.toLowerCase() === 'msgctxt') {\n      curContext = tokens[i].value;\n      curComments = tokens[i].comments;\n    } else if (tokens[i].key.toLowerCase() === 'msgid') {\n      lastNode = {\n        msgid: tokens[i].value\n      };\n      if (tokens[i].obsolete) {\n        lastNode.obsolete = true;\n      }\n\n      if (curContext) {\n        lastNode.msgctxt = curContext;\n      }\n\n      if (curComments) {\n        lastNode.comments = curComments;\n      }\n\n      if (tokens[i].comments && !lastNode.comments) {\n        lastNode.comments = tokens[i].comments;\n      }\n\n      curContext = false;\n      curComments = false;\n      response.push(lastNode);\n    } else if (tokens[i].key.toLowerCase() === 'msgid_plural') {\n      if (lastNode) {\n        if (this._validation && 'msgid_plural' in lastNode) {\n          throw new SyntaxError(`Multiple msgid_plural error: entry \"${lastNode.msgid}\" in \"${lastNode.msgctxt || ''}\" context has multiple msgid_plural declarations.`);\n        }\n\n        lastNode.msgid_plural = tokens[i].value;\n      }\n\n      if (tokens[i].comments && !lastNode.comments) {\n        lastNode.comments = tokens[i].comments;\n      }\n\n      curContext = false;\n      curComments = false;\n    } else if (tokens[i].key.substr(0, 6).toLowerCase() === 'msgstr') {\n      if (lastNode) {\n        lastNode.msgstr = (lastNode.msgstr || []).concat(tokens[i].value);\n      }\n\n      if (tokens[i].comments && !lastNode.comments) {\n        lastNode.comments = tokens[i].comments;\n      }\n\n      curContext = false;\n      curComments = false;\n    }\n  }\n\n  return response;\n};\n\n/**\n * Validate token\n *\n * @param {Object} token Parsed token\n * @param {Object} translations Translation table\n * @param {string} msgctxt Message entry context\n * @param {number} nplurals Number of epected plural forms\n * @throws Will throw an error if token validation fails\n */\nParser.prototype._validateToken = function (\n  {\n    msgid = '',\n    msgid_plural = '', // eslint-disable-line camelcase\n    msgstr = []\n  },\n  translations,\n  msgctxt,\n  nplurals\n) {\n  if (!this._validation) {\n    return;\n  }\n\n  if (msgid in translations[msgctxt]) {\n    throw new SyntaxError(`Duplicate msgid error: entry \"${msgid}\" in \"${msgctxt}\" context has already been declared.`);\n    // eslint-disable-next-line camelcase\n  } else if (msgid_plural && msgstr.length !== nplurals) {\n    // eslint-disable-next-line camelcase\n    throw new RangeError(`Plural forms range error: Expected to find ${nplurals} forms but got ${msgstr.length} for entry \"${msgid_plural}\" in \"${msgctxt}\" context.`);\n    // eslint-disable-next-line camelcase\n  } else if (!msgid_plural && msgstr.length !== 1) {\n    throw new RangeError(`Translation string range error: Extected 1 msgstr definitions associated with \"${msgid}\" in \"${msgctxt}\" context, found ${msgstr.length}.`);\n  }\n};\n\n/**\n * Compose a translation table from tokens object\n *\n * @param {Object} tokens Parsed tokens\n * @return {Object} Translation table\n */\nParser.prototype._normalize = function (tokens) {\n  const table = {\n    charset: this._charset,\n    headers: undefined,\n    translations: {}\n  };\n  let nplurals = 1;\n  let msgctxt;\n\n  for (let i = 0, len = tokens.length; i < len; i++) {\n    msgctxt = tokens[i].msgctxt || '';\n\n    if (tokens[i].obsolete) {\n      if (!table.obsolete) {\n        table.obsolete = {};\n      }\n\n      if (!table.obsolete[msgctxt]) {\n        table.obsolete[msgctxt] = {};\n      }\n\n      delete tokens[i].obsolete;\n\n      table.obsolete[msgctxt][tokens[i].msgid] = tokens[i];\n\n      continue;\n    }\n\n    if (!table.translations[msgctxt]) {\n      table.translations[msgctxt] = {};\n    }\n\n    if (!table.headers && !msgctxt && !tokens[i].msgid) {\n      table.headers = parseHeader(tokens[i].msgstr[0]);\n      nplurals = parseNPluralFromHeadersSafely(table.headers, nplurals);\n    }\n\n    this._validateToken(tokens[i], table.translations, msgctxt, nplurals);\n\n    table.translations[msgctxt][tokens[i].msgid] = tokens[i];\n  }\n\n  return table;\n};\n\n/**\n * Converts parsed tokens to a translation table\n *\n * @param {Object} tokens Parsed tokens\n * @returns {Object} Translation table\n */\nParser.prototype._finalize = function (tokens) {\n  let data = this._joinStringValues(tokens);\n\n  this._parseComments(data);\n\n  data = this._handleKeys(data);\n  data = this._handleValues(data);\n\n  return this._normalize(data);\n};\n\n/**\n * Creates a transform stream for parsing PO input\n *\n * @typedef {{ defaultCharset: strubg, validation: boolean }} Options\n * @constructor\n * @param {Options} options Optional options with defaultCharset and validation\n * @param {import('readable-stream').TransformOptions} transformOptions Optional stream options\n */\nfunction PoParserTransform (options, transformOptions) {\n  this.options = options;\n  this._parser = false;\n  this._tokens = {};\n\n  this._cache = [];\n  this._cacheSize = 0;\n\n  this.initialTreshold = transformOptions.initialTreshold || 2 * 1024;\n\n  Transform.call(this, transformOptions);\n  this._writableState.objectMode = false;\n  this._readableState.objectMode = true;\n}\nutil.inherits(PoParserTransform, Transform);\n\n/**\n * Processes a chunk of the input stream\n */\nPoParserTransform.prototype._transform = function (chunk, encoding, done) {\n  let i;\n  let len = 0;\n\n  if (!chunk || !chunk.length) {\n    return done();\n  }\n\n  if (!this._parser) {\n    this._cache.push(chunk);\n    this._cacheSize += chunk.length;\n\n    // wait until the first 1kb before parsing headers for charset\n    if (this._cacheSize < this.initialTreshold) {\n      return setImmediate(done);\n    } else if (this._cacheSize) {\n      chunk = Buffer.concat(this._cache, this._cacheSize);\n      this._cacheSize = 0;\n      this._cache = [];\n    }\n\n    this._parser = new Parser(chunk, this.options);\n  } else if (this._cacheSize) {\n    // this only happens if we had an uncompleted 8bit sequence from the last iteration\n    this._cache.push(chunk);\n    this._cacheSize += chunk.length;\n    chunk = Buffer.concat(this._cache, this._cacheSize);\n    this._cacheSize = 0;\n    this._cache = [];\n  }\n\n  // cache 8bit bytes from the end of the chunk\n  // helps if the chunk ends in the middle of an utf-8 sequence\n  for (i = chunk.length - 1; i >= 0; i--) {\n    if (chunk[i] >= 0x80) {\n      len++;\n      continue;\n    }\n    break;\n  }\n  // it seems we found some 8bit bytes from the end of the string, so let's cache these\n  if (len) {\n    this._cache = [chunk.slice(chunk.length - len)];\n    this._cacheSize = this._cache[0].length;\n    chunk = chunk.slice(0, chunk.length - len);\n  }\n\n  // chunk might be empty if it only continued of 8bit bytes and these were all cached\n  if (chunk.length) {\n    try {\n      this._parser._lexer(this._parser._toString(chunk));\n    } catch (error) {\n      setImmediate(() => {\n        done(error);\n      });\n\n      return;\n    }\n  }\n\n  setImmediate(done);\n};\n\n/**\n * Once all input has been processed emit the parsed translation table as an object\n */\nPoParserTransform.prototype._flush = function (done) {\n  let chunk;\n\n  if (this._cacheSize) {\n    chunk = Buffer.concat(this._cache, this._cacheSize);\n  }\n\n  if (!this._parser && chunk) {\n    this._parser = new Parser(chunk, this.options);\n  }\n\n  if (chunk) {\n    try {\n      this._parser._lexer(this._parser._toString(chunk));\n    } catch (error) {\n      setImmediate(() => {\n        done(error);\n      });\n\n      return;\n    }\n  }\n\n  if (this._parser) {\n    this.push(this._parser._finalize(this._parser._lex));\n  }\n\n  setImmediate(done);\n};\n", "// see https://www.gnu.org/software/gettext/manual/html_node/Header-Entry.html\nconst PLURAL_FORMS = 'Plural-Forms';\nexport const HEADERS = new Map([\n  ['project-id-version', 'Project-Id-Version'],\n  ['report-msgid-bugs-to', 'Report-Msgid-Bugs-To'],\n  ['pot-creation-date', 'POT-Creation-Date'],\n  ['po-revision-date', 'PO-Revision-Date'],\n  ['last-translator', 'Last-Translator'],\n  ['language-team', 'Language-Team'],\n  ['language', 'Language'],\n  ['content-type', 'Content-Type'],\n  ['content-transfer-encoding', 'Content-Transfer-Encoding'],\n  ['plural-forms', PLURAL_FORMS]\n]);\n\nconst PLURAL_FORM_HEADER_NPLURALS_REGEX = /nplurals\\s*=\\s*(?<nplurals>\\d+)/;\n\n/**\n * Parses a header string into an object of key-value pairs\n *\n * @param {String} str Header string\n * @return {Object} An object of key-value pairs\n */\nexport function parseHeader (str = '') {\n  return str.split('\\n')\n    .reduce((headers, line) => {\n      const parts = line.split(':');\n      let key = (parts.shift() || '').trim();\n\n      if (key) {\n        const value = parts.join(':').trim();\n\n        key = HEADERS.get(key.toLowerCase()) || key;\n\n        headers[key] = value;\n      }\n\n      return headers;\n    }, {});\n}\n\n/**\n * Attempts to safely parse 'nplurals\" value from \"Plural-Forms\" header\n *\n * @param {Object} [headers = {}] An object with parsed headers\n * @returns {number} Parsed result\n */\nexport function parseNPluralFromHeadersSafely (headers = {}, fallback = 1) {\n  const pluralForms = headers[PLURAL_FORMS];\n\n  if (!pluralForms) {\n    return fallback;\n  }\n\n  const {\n    groups: { nplurals } = { nplurals: '' + fallback }\n  } = pluralForms.match(PLURAL_FORM_HEADER_NPLURALS_REGEX) || {};\n\n  return parseInt(nplurals, 10) || fallback;\n}\n\n/**\n * Joins a header object of key value pairs into a header string\n *\n * @param {Object} header Object of key value pairs\n * @return {String} Header string\n */\nexport function generateHeader (header = {}) {\n  const keys = Object.keys(header)\n    .filter(key => !!key);\n\n  if (!keys.length) {\n    return '';\n  }\n\n  return keys.map(key =>\n    `${key}: ${(header[key] || '').trim()}`\n  )\n    .join('\\n') + '\\n';\n}\n\n/**\n * Normalizes charset name. Converts utf8 to utf-8, WIN1257 to windows-1257 etc.\n *\n * @param {String} charset Charset name\n * @return {String} Normalized charset name\n */\nexport function formatCharset (charset = 'iso-8859-1', defaultCharset = 'iso-8859-1') {\n  return charset.toString()\n    .toLowerCase()\n    .replace(/^utf[-_]?(\\d+)$/, 'utf-$1')\n    .replace(/^win(?:dows)?[-_]?(\\d+)$/, 'windows-$1')\n    .replace(/^latin[-_]?(\\d+)$/, 'iso-8859-$1')\n    .replace(/^(us[-_]?)?ascii$/, 'ascii')\n    .replace(/^charset$/, defaultCharset)\n    .trim();\n}\n\n/**\n * Folds long lines according to PO format\n *\n * @param {String} str PO formatted string to be folded\n * @param {Number} [maxLen=76] Maximum allowed length for folded lines\n * @return {Array} An array of lines\n */\nexport function foldLine (str, maxLen = 76) {\n  const lines = [];\n  const len = str.length;\n  let curLine = '';\n  let pos = 0;\n  let match;\n\n  while (pos < len) {\n    curLine = str.substr(pos, maxLen);\n\n    // ensure that the line never ends with a partial escaping\n    // make longer lines if needed\n    while (curLine.substr(-1) === '\\\\' && pos + curLine.length < len) {\n      curLine += str.charAt(pos + curLine.length);\n    }\n\n    // ensure that if possible, line breaks are done at reasonable places\n    if ((match = /.*?\\\\n/.exec(curLine))) {\n      // use everything before and including the first line break\n      curLine = match[0];\n    } else if (pos + curLine.length < len) {\n      // if we're not at the end\n      if ((match = /.*\\s+/.exec(curLine)) && /[^\\s]/.test(match[0])) {\n        // use everything before and including the last white space character (if anything)\n        curLine = match[0];\n      } else if ((match = /.*[\\x21-\\x2f0-9\\x5b-\\x60\\x7b-\\x7e]+/.exec(curLine)) && /[^\\x21-\\x2f0-9\\x5b-\\x60\\x7b-\\x7e]/.test(match[0])) {\n        // use everything before and including the last \"special\" character (if anything)\n        curLine = match[0];\n      }\n    }\n\n    lines.push(curLine);\n    pos += curLine.length;\n  }\n\n  return lines;\n}\n\n/**\n * Comparator function for comparing msgid\n *\n * @param {Object} object with msgid prev\n * @param {Object} object with msgid next\n * @returns {number} comparator index\n */\nexport function compareMsgid ({ msgid: left }, { msgid: right }) {\n  if (left < right) {\n    return -1;\n  }\n\n  if (left > right) {\n    return 1;\n  }\n\n  return 0;\n}\n", "import { Buffer } from 'safe-buffer';\nimport encoding from 'encoding';\nimport { HEADERS, foldLine, compareMsgid, formatCharset, generateHeader } from './shared.js';\nimport contentType from 'content-type';\n\n/**\n * Exposes general compiler function. Takes a translation\n * object as a parameter and returns PO object\n *\n * @param {Object} table Translation object\n * @return {Buffer} Compiled PO object\n */\nexport default function (table, options) {\n  const compiler = new Compiler(table, options);\n\n  return compiler.compile();\n};\n\n/**\n * Creates a PO compiler object.\n *\n * @constructor\n * @param {Object} table Translation table to be compiled\n */\nfunction Compiler (table = {}, options = {}) {\n  this._table = table;\n  this._options = options;\n\n  this._table.translations = this._table.translations || {};\n\n  let { headers = {} } = this._table;\n\n  headers = Object.keys(headers).reduce((result, key) => {\n    const lowerKey = key.toLowerCase();\n\n    if (HEADERS.has(lowerKey)) {\n      result[HEADERS.get(lowerKey)] = headers[key];\n    } else {\n      result[key] = headers[key];\n    }\n\n    return result;\n  }, {});\n\n  this._table.headers = headers;\n\n  if (!('foldLength' in this._options)) {\n    this._options.foldLength = 76;\n  }\n\n  if (!('escapeCharacters' in this._options)) {\n    this._options.escapeCharacters = true;\n  }\n\n  if (!('sort' in this._options)) {\n    this._options.sort = false;\n  }\n\n  if (!('eol' in this._options)) {\n    this._options.eol = '\\n';\n  }\n\n  this._translations = [];\n\n  this._handleCharset();\n}\n\n/**\n * Converts a comments object to a comment string. The comment object is\n * in the form of {translator:'', reference: '', extracted: '', flag: '', previous:''}\n *\n * @param {Object} comments A comments object\n * @return {String} A comment string for the PO file\n */\nCompiler.prototype._drawComments = function (comments) {\n  const lines = [];\n  const types = [{\n    key: 'translator',\n    prefix: '# '\n  }, {\n    key: 'reference',\n    prefix: '#: '\n  }, {\n    key: 'extracted',\n    prefix: '#. '\n  }, {\n    key: 'flag',\n    prefix: '#, '\n  }, {\n    key: 'previous',\n    prefix: '#| '\n  }];\n\n  types.forEach(type => {\n    if (!comments[type.key]) {\n      return;\n    }\n\n    comments[type.key].split(/\\r?\\n|\\r/).forEach(line => {\n      lines.push(`${type.prefix}${line}`);\n    });\n  });\n\n  return lines.join(this._options.eol);\n};\n\n/**\n * Builds a PO string for a single translation object\n *\n * @param {Object} block Translation object\n * @param {Object} [override] Properties of this object will override `block` properties\n * @param {boolean} [obsolete] Block is obsolete and must be commented out\n * @return {String} Translation string for a single object\n */\nCompiler.prototype._drawBlock = function (block, override = {}, obsolete = false) {\n  const response = [];\n  const msgctxt = override.msgctxt || block.msgctxt;\n  const msgid = override.msgid || block.msgid;\n  const msgidPlural = override.msgid_plural || block.msgid_plural;\n  const msgstr = [].concat(override.msgstr || block.msgstr);\n  let comments = override.comments || block.comments;\n\n  // add comments\n  if (comments && (comments = this._drawComments(comments))) {\n    response.push(comments);\n  }\n\n  if (msgctxt) {\n    response.push(this._addPOString('msgctxt', msgctxt, obsolete));\n  }\n\n  response.push(this._addPOString('msgid', msgid || '', obsolete));\n\n  if (msgidPlural) {\n    response.push(this._addPOString('msgid_plural', msgidPlural, obsolete));\n\n    msgstr.forEach((msgstr, i) => {\n      response.push(this._addPOString(`msgstr[${i}]`, msgstr || '', obsolete));\n    });\n  } else {\n    response.push(this._addPOString('msgstr', msgstr[0] || '', obsolete));\n  }\n\n  return response.join(this._options.eol);\n};\n\n/**\n * Escapes and joins a key and a value for the PO string\n *\n * @param {String} key Key name\n * @param {String} value Key value\n * @param {boolean} [obsolete] PO string is obsolete and must be commented out\n * @return {String} Joined and escaped key-value pair\n */\nCompiler.prototype._addPOString = function (key = '', value = '', obsolete = false) {\n  key = key.toString();\n  if (obsolete) {\n    key = '#~ ' + key;\n  }\n\n  let { foldLength, eol, escapeCharacters } = this._options;\n\n  // escape newlines and quotes\n  if (escapeCharacters) {\n    value = value.toString()\n      .replace(/\\\\/g, '\\\\\\\\')\n      .replace(/\"/g, '\\\\\"')\n      .replace(/\\t/g, '\\\\t')\n      .replace(/\\r/g, '\\\\r');\n  }\n\n  value = value.replace(/\\n/g, '\\\\n'); // need to escape new line characters regardless\n\n  let lines = [value];\n\n  if (obsolete) {\n    eol = eol + '#~ ';\n  }\n\n  if (foldLength > 0) {\n    lines = foldLine(value, foldLength);\n  } else {\n    // split only on new lines\n    if (escapeCharacters) {\n      lines = value.split(/\\\\n/g);\n      for (let i = 0; i < lines.length - 1; i++) {\n        lines[i] = `${lines[i]}\\\\n`;\n      }\n      if (lines.length && lines[lines.length - 1] === '') {\n        lines.splice(-1, 1);\n      }\n    }\n  }\n\n  if (lines.length < 2) {\n    return `${key} \"${lines.shift() || ''}\"`;\n  }\n\n  return `${key} \"\"${eol}\"${lines.join(`\"${eol}\"`)}\"`;\n};\n\n/**\n * Handles header values, replaces or adds (if needed) a charset property\n */\nCompiler.prototype._handleCharset = function () {\n  const ct = contentType.parse(this._table.headers['Content-Type'] || 'text/plain');\n\n  const charset = formatCharset(this._table.charset || ct.parameters.charset || 'utf-8');\n\n  // clean up content-type charset independently using fallback if missing\n  if (ct.parameters.charset) {\n    ct.parameters.charset = formatCharset(ct.parameters.charset);\n  }\n\n  this._table.charset = charset;\n  this._table.headers['Content-Type'] = contentType.format(ct);\n};\n\n/**\n * Flatten and sort translations object\n *\n * @param {Object} section Object to be prepared (translations or obsolete)\n * @returns {Array} Prepared array\n */\nCompiler.prototype._prepareSection = function (section) {\n  let response = [];\n\n  Object.keys(section).forEach(msgctxt => {\n    if (typeof section[msgctxt] !== 'object') {\n      return;\n    }\n\n    Object.keys(section[msgctxt]).forEach(msgid => {\n      if (typeof section[msgctxt][msgid] !== 'object') {\n        return;\n      }\n\n      if (msgctxt === '' && msgid === '') {\n        return;\n      }\n\n      response.push(section[msgctxt][msgid]);\n    });\n  });\n\n  const { sort } = this._options;\n\n  if (sort !== false) {\n    if (typeof sort === 'function') {\n      response = response.sort(sort);\n    } else {\n      response = response.sort(compareMsgid);\n    }\n  }\n\n  return response;\n};\n\n/**\n * Compiles translation object into a PO object\n *\n * @return {Buffer} Compiled PO object\n */\nCompiler.prototype.compile = function () {\n  const headerBlock = (this._table.translations[''] && this._table.translations['']['']) || {};\n  let response = [];\n\n  const translations = this._prepareSection(this._table.translations);\n  response = translations.map(r => this._drawBlock(r));\n\n  if (typeof this._table.obsolete === 'object') {\n    const obsolete = this._prepareSection(this._table.obsolete);\n    if (obsolete.length) {\n      response = response.concat(obsolete.map(r => this._drawBlock(r, {}, true)));\n    }\n  }\n\n  const { eol } = this._options;\n\n  response.unshift(this._drawBlock(headerBlock, {\n    msgstr: generateHeader(this._table.headers)\n  }));\n\n  if (this._table.charset === 'utf-8' || this._table.charset === 'ascii') {\n    return Buffer.from(response.join(eol + eol) + eol, 'utf-8');\n  }\n\n  return encoding.convert(response.join(eol + eol) + eol, this._table.charset);\n};\n", "import encoding from 'encoding';\nimport { formatCharset, parseHeader } from './shared.js';\n\n/**\n * Parses a binary MO object into translation table\n *\n * @param {Buffer} buffer Binary MO object\n * @param {String} [defaultCharset] Default charset to use\n * @return {Object} Translation object\n */\nexport default function (buffer, defaultCharset) {\n  const parser = new Parser(buffer, defaultCharset);\n\n  return parser.parse();\n};\n\n/**\n * Creates a MO parser object.\n *\n * @constructor\n * @param {Buffer} fileContents Binary MO object\n * @param {String} [defaultCharset] Default charset to use\n */\nfunction Parser (fileContents, defaultCharset = 'iso-8859-1') {\n  this._fileContents = fileContents;\n\n  /**\n     * Method name for writing int32 values, default littleendian\n     */\n  this._writeFunc = 'writeUInt32LE';\n\n  /**\n     * Method name for reading int32 values, default littleendian\n     */\n  this._readFunc = 'readUInt32LE';\n\n  this._charset = defaultCharset;\n\n  this._table = {\n    charset: this._charset,\n    headers: undefined,\n    translations: {}\n  };\n}\n\n/**\n * Magic constant to check the endianness of the input file\n */\nParser.prototype.MAGIC = 0x950412de;\n\n/**\n * Checks if number values in the input file are in big- or littleendian format.\n *\n * @return {Boolean} Return true if magic was detected\n */\nParser.prototype._checkMagick = function () {\n  if (this._fileContents.readUInt32LE(0) === this.MAGIC) {\n    this._readFunc = 'readUInt32LE';\n    this._writeFunc = 'writeUInt32LE';\n\n    return true;\n  } else if (this._fileContents.readUInt32BE(0) === this.MAGIC) {\n    this._readFunc = 'readUInt32BE';\n    this._writeFunc = 'writeUInt32BE';\n\n    return true;\n  }\n\n  return false;\n};\n\n/**\n * Read the original strings and translations from the input MO file. Use the\n * first translation string in the file as the header.\n */\nParser.prototype._loadTranslationTable = function () {\n  let offsetOriginals = this._offsetOriginals;\n  let offsetTranslations = this._offsetTranslations;\n  let position;\n  let length;\n  let msgid;\n  let msgstr;\n\n  for (let i = 0; i < this._total; i++) {\n    // msgid string\n    length = this._fileContents[this._readFunc](offsetOriginals);\n    offsetOriginals += 4;\n    position = this._fileContents[this._readFunc](offsetOriginals);\n    offsetOriginals += 4;\n    msgid = this._fileContents.slice(position, position + length);\n\n    // matching msgstr\n    length = this._fileContents[this._readFunc](offsetTranslations);\n    offsetTranslations += 4;\n    position = this._fileContents[this._readFunc](offsetTranslations);\n    offsetTranslations += 4;\n    msgstr = this._fileContents.slice(position, position + length);\n\n    if (!i && !msgid.toString()) {\n      this._handleCharset(msgstr);\n    }\n\n    msgid = encoding.convert(msgid, 'utf-8', this._charset)\n      .toString('utf8');\n    msgstr = encoding.convert(msgstr, 'utf-8', this._charset)\n      .toString('utf8');\n\n    this._addString(msgid, msgstr);\n  }\n\n  // dump the file contents object\n  this._fileContents = null;\n};\n\n/**\n * Detects charset for MO strings from the header\n *\n * @param {Buffer} headers Header value\n */\nParser.prototype._handleCharset = function (headers) {\n  const headersStr = headers.toString();\n  let match;\n\n  if ((match = headersStr.match(/[; ]charset\\s*=\\s*([\\w-]+)/i))) {\n    this._charset = this._table.charset = formatCharset(match[1], this._charset);\n  }\n\n  headers = encoding.convert(headers, 'utf-8', this._charset)\n    .toString('utf8');\n\n  this._table.headers = parseHeader(headers);\n};\n\n/**\n * Adds a translation to the translation object\n *\n * @param {String} msgid Original string\n * @params {String} msgstr Translation for the original string\n */\nParser.prototype._addString = function (msgid, msgstr) {\n  const translation = {};\n  let msgctxt;\n  let msgidPlural;\n\n  msgid = msgid.split('\\u0004');\n  if (msgid.length > 1) {\n    msgctxt = msgid.shift();\n    translation.msgctxt = msgctxt;\n  } else {\n    msgctxt = '';\n  }\n  msgid = msgid.join('\\u0004');\n\n  const parts = msgid.split('\\u0000');\n  msgid = parts.shift();\n\n  translation.msgid = msgid;\n\n  if ((msgidPlural = parts.join('\\u0000'))) {\n    translation.msgid_plural = msgidPlural;\n  }\n\n  msgstr = msgstr.split('\\u0000');\n  translation.msgstr = [].concat(msgstr || []);\n\n  if (!this._table.translations[msgctxt]) {\n    this._table.translations[msgctxt] = {};\n  }\n\n  this._table.translations[msgctxt][msgid] = translation;\n};\n\n/**\n * Parses the MO object and returns translation table\n *\n * @return {Object} Translation table\n */\nParser.prototype.parse = function () {\n  if (!this._checkMagick()) {\n    return false;\n  }\n\n  /**\n     * GetText revision nr, usually 0\n     */\n  this._revision = this._fileContents[this._readFunc](4);\n\n  /**\n     * Total count of translated strings\n     */\n  this._total = this._fileContents[this._readFunc](8);\n\n  /**\n     * Offset position for original strings table\n     */\n  this._offsetOriginals = this._fileContents[this._readFunc](12);\n\n  /**\n     * Offset position for translation strings table\n     */\n  this._offsetTranslations = this._fileContents[this._readFunc](16);\n\n  // Load translations into this._translationTable\n  this._loadTranslationTable();\n\n  return this._table;\n};\n", "import { Buffer } from 'safe-buffer';\nimport encoding from 'encoding';\nimport { HEADERS, formatCharset, generateHeader, compareMsgid } from './shared.js';\nimport contentType from 'content-type';\n\n/**\n * Exposes general compiler function. Takes a translation\n * object as a parameter and returns binary MO object\n *\n * @param {Object} table Translation object\n * @return {Buffer} Compiled binary MO object\n */\nexport default function (table) {\n  const compiler = new Compiler(table);\n\n  return compiler.compile();\n};\n\n/**\n * Creates a MO compiler object.\n *\n * @constructor\n * @param {Object} table Translation table as defined in the README\n */\nfunction Compiler (table = {}) {\n  this._table = table;\n\n  let { headers = {}, translations = {} } = this._table;\n\n  headers = Object.keys(headers).reduce((result, key) => {\n    const lowerKey = key.toLowerCase();\n\n    if (HEADERS.has(lowerKey)) {\n      // POT-Creation-Date is removed in MO (see https://savannah.gnu.org/bugs/?49654)\n      if (lowerKey !== 'pot-creation-date') {\n        result[HEADERS.get(lowerKey)] = headers[key];\n      }\n    } else {\n      result[key] = headers[key];\n    }\n\n    return result;\n  }, {});\n\n  // filter out empty translations\n  translations = Object.keys(translations).reduce((result, msgctxt) => {\n    const context = translations[msgctxt];\n    const msgs = Object.keys(context).reduce((result, msgid) => {\n      const hasTranslation = context[msgid].msgstr.some(item => !!item.length);\n\n      if (hasTranslation) {\n        result[msgid] = context[msgid];\n      }\n\n      return result;\n    }, {});\n\n    if (Object.keys(msgs).length) {\n      result[msgctxt] = msgs;\n    }\n\n    return result;\n  }, {});\n\n  this._table.translations = translations;\n  this._table.headers = headers;\n\n  this._translations = [];\n\n  this._writeFunc = 'writeUInt32LE';\n\n  this._handleCharset();\n}\n\n/**\n * Magic bytes for the generated binary data\n */\nCompiler.prototype.MAGIC = 0x950412de;\n\n/**\n * Handles header values, replaces or adds (if needed) a charset property\n */\nCompiler.prototype._handleCharset = function () {\n  const ct = contentType.parse(this._table.headers['Content-Type'] || 'text/plain');\n\n  const charset = formatCharset(this._table.charset || ct.parameters.charset || 'utf-8');\n\n  // clean up content-type charset independently using fallback if missing\n  if (ct.parameters.charset) {\n    ct.parameters.charset = formatCharset(ct.parameters.charset);\n  }\n\n  this._table.charset = charset;\n  this._table.headers['Content-Type'] = contentType.format(ct);\n};\n\n/**\n * Generates an array of translation strings\n * in the form of [{msgid:... , msgstr:...}]\n *\n * @return {Array} Translation strings array\n */\nCompiler.prototype._generateList = function () {\n  const list = [];\n\n  list.push({\n    msgid: Buffer.alloc(0),\n    msgstr: encoding.convert(generateHeader(this._table.headers), this._table.charset)\n  });\n\n  Object.keys(this._table.translations).forEach(msgctxt => {\n    if (typeof this._table.translations[msgctxt] !== 'object') {\n      return;\n    }\n\n    Object.keys(this._table.translations[msgctxt]).forEach(msgid => {\n      if (typeof this._table.translations[msgctxt][msgid] !== 'object') {\n        return;\n      }\n\n      if (msgctxt === '' && msgid === '') {\n        return;\n      }\n\n      const msgidPlural = this._table.translations[msgctxt][msgid].msgid_plural;\n      let key = msgid;\n\n      if (msgctxt) {\n        key = msgctxt + '\\u0004' + key;\n      }\n\n      if (msgidPlural) {\n        key += '\\u0000' + msgidPlural;\n      }\n\n      const value = [].concat(this._table.translations[msgctxt][msgid].msgstr || []).join('\\u0000');\n\n      list.push({\n        msgid: encoding.convert(key, this._table.charset),\n        msgstr: encoding.convert(value, this._table.charset)\n      });\n    });\n  });\n\n  return list;\n};\n\n/**\n * Calculate buffer size for the final binary object\n *\n * @param {Array} list An array of translation strings from _generateList\n * @return {Object} Size data of {msgid, msgstr, total}\n */\nCompiler.prototype._calculateSize = function (list) {\n  let msgidLength = 0;\n  let msgstrLength = 0;\n  let totalLength = 0;\n\n  list.forEach(translation => {\n    msgidLength += translation.msgid.length + 1; // + extra 0x00\n    msgstrLength += translation.msgstr.length + 1; // + extra 0x00\n  });\n\n  totalLength = 4 + // magic number\n        4 + // revision\n        4 + // string count\n        4 + // original string table offset\n        4 + // translation string table offset\n        4 + // hash table size\n        4 + // hash table offset\n        (4 + 4) * list.length + // original string table\n        (4 + 4) * list.length + // translations string table\n        msgidLength + // originals\n        msgstrLength; // translations\n\n  return {\n    msgid: msgidLength,\n    msgstr: msgstrLength,\n    total: totalLength\n  };\n};\n\n/**\n * Generates the binary MO object from the translation list\n *\n * @param {Array} list translation list\n * @param {Object} size Byte size information\n * @return {Buffer} Compiled MO object\n */\nCompiler.prototype._build = function (list, size) {\n  const returnBuffer = Buffer.alloc(size.total);\n  let curPosition = 0;\n  let i;\n  let len;\n\n  // magic\n  returnBuffer[this._writeFunc](this.MAGIC, 0);\n\n  // revision\n  returnBuffer[this._writeFunc](0, 4);\n\n  // string count\n  returnBuffer[this._writeFunc](list.length, 8);\n\n  // original string table offset\n  returnBuffer[this._writeFunc](28, 12);\n\n  // translation string table offset\n  returnBuffer[this._writeFunc](28 + (4 + 4) * list.length, 16);\n\n  // hash table size\n  returnBuffer[this._writeFunc](0, 20);\n\n  // hash table offset\n  returnBuffer[this._writeFunc](28 + (4 + 4) * list.length * 2, 24);\n\n  // build originals table\n  curPosition = 28 + 2 * (4 + 4) * list.length;\n  for (i = 0, len = list.length; i < len; i++) {\n    list[i].msgid.copy(returnBuffer, curPosition);\n    returnBuffer[this._writeFunc](list[i].msgid.length, 28 + i * 8);\n    returnBuffer[this._writeFunc](curPosition, 28 + i * 8 + 4);\n    returnBuffer[curPosition + list[i].msgid.length] = 0x00;\n    curPosition += list[i].msgid.length + 1;\n  }\n\n  // build translations table\n  for (i = 0, len = list.length; i < len; i++) {\n    list[i].msgstr.copy(returnBuffer, curPosition);\n    returnBuffer[this._writeFunc](list[i].msgstr.length, 28 + (4 + 4) * list.length + i * 8);\n    returnBuffer[this._writeFunc](curPosition, 28 + (4 + 4) * list.length + i * 8 + 4);\n    returnBuffer[curPosition + list[i].msgstr.length] = 0x00;\n    curPosition += list[i].msgstr.length + 1;\n  }\n\n  return returnBuffer;\n};\n\n/**\n * Compiles translation object into a binary MO object\n *\n * @return {Buffer} Compiled MO object\n */\nCompiler.prototype.compile = function () {\n  const list = this._generateList();\n  const size = this._calculateSize(list);\n\n  list.sort(compareMsgid);\n\n  return this._build(list, size);\n};\n", "import * as poParser from './lib/poparser.js';\nimport poCompiler from './lib/pocompiler.js';\nimport moParser from './lib/moparser.js';\nimport moCompiler from './lib/mocompiler.js';\n\nexport const po = {\n  parse: poParser.parse,\n  createParseStream: poParser.stream,\n  compile: poCompiler\n};\n\nexport const mo = {\n  parse: moParser,\n  compile: moCompiler\n};\n\nexport default { mo, po };\n", "import encoding from 'encoding';\nimport { HEADERS, formatCharset } from './shared.js';\nvar states = {\n  none: 0x01,\n  comments: 0x02,\n  key: 0x03,\n  string: 0x04\n};\nvar types = {\n  comments: 0x01,\n  key: 0x02,\n  string: 0x03\n};\nvar symbols = {\n  quotes: /[\"']/,\n  comments: /#/,\n  whitespace: /\\s/,\n  key: /[\\w\\-[\\]]/,\n  keyNames: /^(?:msgctxt|msgid(?:_plural)?|msgstr(?:\\[\\d+])?)$/\n};\nvar toString = function toString(buf, charset) {\n  return encoding.convert(buf, 'utf-8', charset).toString('utf-8');\n};\nvar parseHeader = function parseHeader() {\n  var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  return str.split('\\n').reduce(function (headers, line) {\n    var parts = line.split(':');\n    var key = (parts.shift() || '').trim();\n    if (key) {\n      var value = parts.join(':').trim();\n      key = HEADERS.get(key.toLowerCase()) || key;\n      headers[key] = value;\n    }\n    return headers;\n  }, {});\n};\nvar handleCharset = function handleCharset() {\n  var buf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  var defaultCharset = arguments.length > 1 ? arguments[1] : undefined;\n  var str = buf.toString();\n  var pos;\n  var headers = '';\n  var match;\n  var charset = defaultCharset;\n  if ((pos = str.search(/^\\s*msgid/im)) >= 0) {\n    pos = pos + str.substr(pos + 5).search(/^\\s*(msgid|msgctxt)/im);\n    headers = str.substr(0, pos >= 0 ? pos + 5 : str.length);\n  }\n  if (match = headers.match(/[; ]charset\\s*=\\s*([\\w-]+)(?:[\\s;]|\\\\n)*\"\\s*$/mi)) {\n    charset = formatCharset(match[1], defaultCharset);\n  }\n  if (charset === 'utf-8') {\n    return {\n      fileContents: str,\n      charset: charset\n    };\n  }\n  return {\n    fileContents: toString(buf),\n    charset: charset\n  };\n};\nvar lexer = function lexer(chunk) {\n  var lex = [];\n  var node = {};\n  var state = states.none;\n  var lineNumber = 1;\n  var escaped = false;\n  var chr;\n  for (var i = 0, len = chunk.length; i < len; i++) {\n    chr = chunk.charAt(i);\n    if (chr === '\\n') lineNumber += 1;\n    switch (state) {\n      case states.none:\n        if (chr.match(symbols.quotes)) {\n          node = {\n            type: types.string,\n            value: '',\n            quote: chr\n          };\n          lex.push(node);\n          state = states.string;\n        } else if (chr.match(symbols.comments)) {\n          node = {\n            type: types.comments,\n            value: ''\n          };\n          lex.push(node);\n          state = states.comments;\n        } else if (!chr.match(symbols.whitespace)) {\n          node = {\n            type: types.key,\n            value: chr\n          };\n          lex.push(node);\n          state = states.key;\n        }\n        break;\n      case states.comments:\n        if (chr === '\\n') {\n          state = states.none;\n        } else if (chr !== '\\r') {\n          node.value += chr;\n        }\n        break;\n      case states.string:\n        if (escaped) {\n          switch (chr) {\n            case 't':\n              node.value += '\\t';\n              break;\n            case 'n':\n              node.value += '\\n';\n              break;\n            case 'r':\n              node.value += '\\r';\n              break;\n            default:\n              node.value += chr;\n          }\n          escaped = false;\n        } else {\n          if (chr === node.quote) {\n            state = states.none;\n          } else if (chr === '\\\\') {\n            escaped = true;\n            break;\n          } else {\n            node.value += chr;\n          }\n          escaped = false;\n        }\n        break;\n      case states.key:\n        if (!chr.match(symbols.key)) {\n          if (!node.value.match(symbols.keyNames)) {\n            var err = new SyntaxError(\"Error parsing PO data: Invalid key name \\\"\".concat(node.value, \"\\\" at line \").concat(lineNumber, \". This can be caused by an unescaped quote character in a msgid or msgstr value.\"));\n            err.lineNumber = lineNumber;\n            throw err;\n          }\n          state = states.none;\n          i--;\n        } else {\n          node.value += chr;\n        }\n        break;\n    }\n  }\n  return lex;\n};\nvar joinStringValues = function joinStringValues(tokens) {\n  var response = [];\n  var lastNode;\n  for (var i = 0, len = tokens.length; i < len; i++) {\n    if (lastNode && tokens[i].type === types.string && lastNode.type === types.string) {\n      lastNode.value += tokens[i].value;\n    } else if (lastNode && tokens[i].type === types.comments && lastNode.type === types.comments) {\n      lastNode.value += '\\n' + tokens[i].value;\n    } else {\n      response.push(tokens[i]);\n      lastNode = tokens[i];\n    }\n  }\n  return response;\n};\nvar parseComments = function parseComments(tokens) {\n  tokens.forEach(function (node) {\n    var comment;\n    var lines;\n    if (node && node.type === types.comments) {\n      comment = {\n        translator: [],\n        extracted: [],\n        reference: [],\n        flag: [],\n        previous: []\n      };\n      lines = (node.value || '').split(/\\n/);\n      lines.forEach(function (line) {\n        switch (line.charAt(0) || '') {\n          case ':':\n            comment.reference.push(line.substr(1).trim());\n            break;\n          case '.':\n            comment.extracted.push(line.substr(1).replace(/^\\s+/, ''));\n            break;\n          case ',':\n            comment.flag.push(line.substr(1).replace(/^\\s+/, ''));\n            break;\n          case '|':\n            comment.previous.push(line.substr(1).replace(/^\\s+/, ''));\n            break;\n          default:\n            comment.translator.push(line.replace(/^\\s+/, ''));\n        }\n      });\n      node.value = {};\n      Object.keys(comment).forEach(function (key) {\n        if (comment[key] && comment[key].length) {\n          node.value[key] = comment[key].join('\\n');\n        }\n      });\n    }\n  });\n};\nvar handleKeys = function handleKeys(tokens) {\n  var response = [];\n  var lastNode;\n  for (var i = 0, len = tokens.length; i < len; i++) {\n    if (tokens[i].type === types.key) {\n      lastNode = {\n        key: tokens[i].value\n      };\n      if (i && tokens[i - 1].type === types.comments) {\n        lastNode.comments = tokens[i - 1].value;\n      }\n      lastNode.value = '';\n      response.push(lastNode);\n    } else if (tokens[i].type === types.string && lastNode) {\n      lastNode.value += tokens[i].value;\n    }\n  }\n  return response;\n};\nvar handleValues = function handleValues(tokens) {\n  var response = [];\n  var lastNode;\n  var curContext;\n  var curComments;\n  for (var i = 0, len = tokens.length; i < len; i++) {\n    if (tokens[i].key.toLowerCase() === 'msgctxt') {\n      curContext = tokens[i].value;\n      curComments = tokens[i].comments;\n    } else if (tokens[i].key.toLowerCase() === 'msgid') {\n      lastNode = {\n        msgid: tokens[i].value\n      };\n      if (curContext) lastNode.msgctxt = curContext;\n      if (curComments) lastNode.comments = curComments;\n      if (tokens[i].comments && !lastNode.comments) lastNode.comments = tokens[i].comments;\n      curContext = false;\n      curComments = false;\n      response.push(lastNode);\n    } else if (tokens[i].key.toLowerCase() === 'msgid_plural') {\n      if (lastNode) lastNode.msgid_plural = tokens[i].value;\n      if (tokens[i].comments && !lastNode.comments) lastNode.comments = tokens[i].comments;\n      curContext = false;\n      curComments = false;\n    } else if (tokens[i].key.substr(0, 6).toLowerCase() === 'msgstr') {\n      if (lastNode) lastNode.msgstr = (lastNode.msgstr || []).concat(tokens[i].value);\n      if (tokens[i].comments && !lastNode.comments) lastNode.comments = tokens[i].comments;\n      curContext = false;\n      curComments = false;\n    }\n  }\n  return response;\n};\nvar hasOwn = function hasOwn(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n};\nvar safeSet = function safeSet(obj, key, value) {\n  return Object.defineProperty(obj, key, {\n    value: value,\n    writable: true,\n    enumerable: true,\n    configurable: true\n  });\n};\nvar normalize = function normalize(tokens, charset) {\n  var table = {\n    charset: charset,\n    headers: undefined,\n    translations: {}\n  };\n  var msgctxt;\n  for (var i = 0, len = tokens.length; i < len; i++) {\n    msgctxt = tokens[i].msgctxt || '';\n    if (!hasOwn(table.translations, msgctxt)) safeSet(table.translations, msgctxt, {});\n    if (!table.headers && !msgctxt && !tokens[i].msgid) {\n      table.headers = parseHeader(tokens[i].msgstr[0]);\n    }\n    safeSet(table.translations[msgctxt], tokens[i].msgid, tokens[i]);\n  }\n  return table;\n};\nvar finalize = function finalize(tokens, charset) {\n  var data = joinStringValues(tokens);\n  parseComments(data);\n  data = handleKeys(data);\n  data = handleValues(data);\n  return normalize(data, charset);\n};\nexport default function (fileContents) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  if (typeof options === 'string') {\n    options = {\n      charset: options\n    };\n  }\n  options.charset = options.charset || 'iso-8859-1';\n  if (typeof fileContents === 'string') {\n    options.charset = 'utf-8';\n  } else {\n    var ret = handleCharset(fileContents);\n    options.charset = ret.charset;\n    fileContents = ret.fileContents;\n  }\n  var lex = lexer(fileContents);\n  return finalize(lex, options.charset);\n}", "export var UNSAFE_KEYS = ['__proto__', 'constructor', 'prototype'];\nexport var HEADERS = new Map([['project-id-version', 'Project-Id-Version'], ['report-msgid-bugs-to', 'Report-Msgid-Bugs-To'], ['pot-creation-date', 'POT-Creation-Date'], ['po-revision-date', 'PO-Revision-Date'], ['last-translator', 'Last-Translator'], ['language-team', 'Language-Team'], ['language', 'Language'], ['content-type', 'Content-Type'], ['content-transfer-encoding', 'Content-Transfer-Encoding'], ['plural-forms', 'Plural-Forms'], ['mime-version', 'MIME-Version']]);\nexport var formatCharset = function formatCharset() {\n  var charset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'iso-8859-1';\n  var defaultCharset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'iso-8859-1';\n  return charset.toString().toLowerCase().replace(/^utf[-_]?(\\d+)$/, 'utf-$1').replace(/^win(?:dows)?[-_]?(\\d+)$/, 'windows-$1').replace(/^latin[-_]?(\\d+)$/, 'iso-8859-$1').replace(/^(us[-_]?)?ascii$/, 'ascii').replace(/^charset$/, defaultCharset).trim();\n};\nexport function compareMsgid(_ref, _ref2) {\n  var left = _ref.msgid;\n  var right = _ref2.msgid;\n  if (left < right) return -1;\n  if (left > right) return 1;\n  return 0;\n}\nexport function foldLine(str) {\n  var maxLen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 76;\n  var lines = [];\n  var len = str.length;\n  var curLine = '';\n  var pos = 0;\n  var match;\n  while (pos < len) {\n    curLine = str.substr(pos, maxLen);\n    while (curLine.substr(-1) === '\\\\' && pos + curLine.length < len) {\n      curLine += str.charAt(pos + curLine.length);\n    }\n    if (match = /.*?\\\\n/.exec(curLine)) {\n      curLine = match[0];\n    } else if (pos + curLine.length < len) {\n      if ((match = /.*\\s+/.exec(curLine)) && /[^\\s]/.test(match[0])) {\n        curLine = match[0];\n      } else if ((match = /.*[\\x21-\\x2f0-9\\x5b-\\x60\\x7b-\\x7e]+/.exec(curLine)) && /[^\\x21-\\x2f0-9\\x5b-\\x60\\x7b-\\x7e]/.test(match[0])) {\n        curLine = match[0];\n      }\n    }\n    lines.push(curLine);\n    pos += curLine.length;\n  }\n  return lines;\n}\nexport function generateHeader() {\n  var header = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var keys = Object.keys(header).filter(function (key) {\n    return !!key;\n  });\n  if (!keys.length) return '';\n  return keys.map(function (key) {\n    return \"\".concat(key, \": \").concat((header[key] || '').trim());\n  }).join('\\n') + '\\n';\n}", "function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport contentType from 'content-type';\nimport encoding from 'encoding';\nimport { HEADERS, formatCharset, compareMsgid, foldLine, generateHeader } from './shared.js';\nvar handleCharset = function handleCharset(table) {\n  var ct = contentType.parse(table.headers['Content-Type'] || 'text/plain');\n  var charset = formatCharset(table.charset || ct.parameters.charset || 'utf-8');\n  if (ct.parameters.charset) {\n    ct.parameters.charset = formatCharset(ct.parameters.charset);\n  }\n  table.charset = charset;\n  table.headers['Content-Type'] = contentType.format(ct);\n};\nvar drawComments = function drawComments(comments) {\n  var lines = [];\n  var types = [{\n    key: 'translator',\n    prefix: '# '\n  }, {\n    key: 'reference',\n    prefix: '#: '\n  }, {\n    key: 'extracted',\n    prefix: '#. '\n  }, {\n    key: 'flag',\n    prefix: '#, '\n  }, {\n    key: 'previous',\n    prefix: '#| '\n  }];\n  types.forEach(function (type) {\n    if (!comments[type.key]) return;\n    comments[type.key].split(/\\r?\\n|\\r/).forEach(function (line) {\n      lines.push(\"\".concat(type.prefix).concat(line));\n    });\n  });\n  return lines.join('\\n');\n};\nvar addPOString = function addPOString() {\n  var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  var options = arguments.length > 2 ? arguments[2] : undefined;\n  key = key.toString();\n  value = value.toString().replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/\\t/g, '\\\\t').replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n');\n  var lines = [value];\n  if (options.foldLength > 0) {\n    lines = foldLine(value, options.foldLength);\n  }\n  if (lines.length < 2) {\n    return \"\".concat(key, \" \\\"\").concat(lines.shift() || '', \"\\\"\");\n  }\n  return \"\".concat(key, \" \\\"\\\"\\n\\\"\").concat(lines.join('\"\\n\"'), \"\\\"\");\n};\nvar drawBlock = function drawBlock(block) {\n  var override = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var options = arguments.length > 2 ? arguments[2] : undefined;\n  var response = [];\n  var msgctxt = override.msgctxt || block.msgctxt;\n  var msgid = override.msgid || block.msgid;\n  var msgidPlural = override.msgid_plural || block.msgid_plural;\n  var msgstr = [].concat(override.msgstr || block.msgstr);\n  var comments = override.comments || block.comments;\n  if (comments && (comments = drawComments(comments))) {\n    response.push(comments);\n  }\n  if (msgctxt) {\n    response.push(addPOString('msgctxt', msgctxt, options));\n  }\n  response.push(addPOString('msgid', msgid || '', options));\n  if (msgidPlural) {\n    response.push(addPOString('msgid_plural', msgidPlural, options));\n    msgstr.forEach(function (msgstr, i) {\n      response.push(addPOString(\"msgstr[\".concat(i, \"]\"), msgstr || '', options));\n    });\n    if (msgstr.length === 0) {\n      response.push(addPOString('msgstr[0]', '', options));\n    }\n  } else {\n    response.push(addPOString('msgstr', msgstr[0] || '', options));\n  }\n  return response.join('\\n');\n};\nvar compile = function compile(table, options) {\n  var headerBlock = table.translations[''] && table.translations[''][''] || {};\n  var response = [];\n  Object.keys(table.translations).forEach(function (msgctxt) {\n    if (_typeof(table.translations[msgctxt]) !== 'object') return;\n    Object.keys(table.translations[msgctxt]).forEach(function (msgid) {\n      if (_typeof(table.translations[msgctxt][msgid]) !== 'object') return;\n      if (msgctxt === '' && msgid === '') return;\n      response.push(table.translations[msgctxt][msgid]);\n    });\n  });\n  if (options.sort !== false) {\n    if (typeof options.sort === 'function') {\n      response = response.sort(options.sort);\n    } else {\n      response = response.sort(compareMsgid);\n    }\n  }\n  response = response.map(function (r) {\n    return drawBlock(r, {}, options);\n  });\n  response.unshift(drawBlock(headerBlock, {\n    msgstr: generateHeader(table.headers)\n  }, options));\n  if (table.charset === 'utf-8' || table.charset === 'ascii') {\n    return response.join('\\n\\n');\n  }\n  return encoding.convert(response.join('\\n\\n'), table.charset).toString();\n};\nexport default function () {\n  var table = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  table.translations = table.translations || {};\n  options.project = options.project || 'gettext-converter';\n  var _table$headers = table.headers,\n    headers = _table$headers === void 0 ? {} : _table$headers;\n  headers = Object.keys(headers).reduce(function (result, key) {\n    var lowerKey = key.toLowerCase();\n    if (HEADERS.has(lowerKey)) {\n      result[HEADERS.get(lowerKey)] = headers[key];\n    } else {\n      result[key] = headers[key];\n    }\n    return result;\n  }, {});\n  if (!headers[HEADERS.get('project-id-version')]) headers[HEADERS.get('project-id-version')] = options.project;\n  table.headers = headers;\n  if (!('foldLength' in options)) options.foldLength = 76;\n  if (!('sort' in options)) options.sort = false;\n  handleCharset(table);\n  return compile(table, options);\n}", "var sets = [{\n  lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n  nr: [1, 2],\n  fc: 1\n}, {\n  lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n  nr: [1, 2],\n  fc: 2\n}, {\n  lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n  nr: [1],\n  fc: 3\n}, {\n  lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n  nr: [1, 2, 5],\n  fc: 4\n}, {\n  lngs: ['ar'],\n  nr: [0, 1, 2, 3, 11, 100],\n  fc: 5\n}, {\n  lngs: ['cs', 'sk'],\n  nr: [1, 2, 5],\n  fc: 6\n}, {\n  lngs: ['csb', 'pl'],\n  nr: [1, 2, 5],\n  fc: 7\n}, {\n  lngs: ['cy'],\n  nr: [1, 2, 3, 8],\n  fc: 8\n}, {\n  lngs: ['fr'],\n  nr: [1, 2],\n  fc: 9\n}, {\n  lngs: ['ga'],\n  nr: [1, 2, 3, 7, 11],\n  fc: 10\n}, {\n  lngs: ['gd'],\n  nr: [1, 2, 3, 20],\n  fc: 11\n}, {\n  lngs: ['is'],\n  nr: [1, 2],\n  fc: 12\n}, {\n  lngs: ['jv'],\n  nr: [0, 1],\n  fc: 13\n}, {\n  lngs: ['kw'],\n  nr: [1, 2, 3, 4],\n  fc: 14\n}, {\n  lngs: ['lt'],\n  nr: [1, 2, 10],\n  fc: 15\n}, {\n  lngs: ['lv'],\n  nr: [1, 2, 0],\n  fc: 16\n}, {\n  lngs: ['mk'],\n  nr: [1, 2],\n  fc: 17\n}, {\n  lngs: ['mnk'],\n  nr: [0, 1, 2],\n  fc: 18\n}, {\n  lngs: ['mt'],\n  nr: [1, 2, 11, 20],\n  fc: 19\n}, {\n  lngs: ['or'],\n  nr: [2, 1],\n  fc: 2\n}, {\n  lngs: ['ro'],\n  nr: [1, 2, 20],\n  fc: 20\n}, {\n  lngs: ['sl'],\n  nr: [5, 1, 2, 3],\n  fc: 21\n}, {\n  lngs: ['he', 'iw'],\n  nr: [1, 2, 20, 21],\n  fc: 22\n}];\nvar rulesPluralsTypes = {\n  1: '(n > 1)',\n  2: '(n != 1)',\n  3: '0',\n  4: '(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)',\n  5: '(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5)',\n  6: '((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2)',\n  7: '(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)',\n  8: '((n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3)',\n  9: '(n >= 2)',\n  10: '(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4)',\n  11: '((n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3)',\n  12: '(n%10!=1 || n%100==11)',\n  13: '(n !== 0)',\n  14: '((n==1) ? 0 : (n==2) ? 1 : (n == 3) ? 2 : 3)',\n  15: '(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)',\n  16: '(n%10==1 && n%100!=11 ? 0 : n !== 0 ? 1 : 2)',\n  17: '(n==1 || n%10==1 && n%100!=11 ? 0 : 1)',\n  18: '(n==0 ? 0 : n==1 ? 1 : 2)',\n  19: '(n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3)',\n  20: '(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2)',\n  21: '(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0)',\n  22: '(n==1 ? 0 : n==2 ? 1 : (n<0 || n>10) && n%10==0 ? 2 : 3)'\n};\nvar rules = {};\nsets.forEach(function (set) {\n  set.lngs.forEach(function (l) {\n    rules[l.toLowerCase()] = {\n      numbers: set.nr,\n      plurals: rulesPluralsTypes[set.fc]\n    };\n  });\n});\nexport default rules;", "import plurals from './plurals.js';\nexport var getPlurals = function getPlurals(options) {\n  return options.plurals || plurals;\n};\nexport var getSetLocaleAsLanguageHeader = function getSetLocaleAsLanguageHeader(options) {\n  return typeof options.setLocaleAsLanguageHeader === 'boolean' ? options.setLocaleAsLanguageHeader : true;\n};", "var sets = [{\n  lngs: ['ach', 'ak', 'am', 'arn', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'ti', 'tr', 'uz', 'wa'],\n  toCldr: {\n    '': 1,\n    _plural: 5\n  },\n  fromCldr: {\n    1: '',\n    5: '_plural'\n  }\n}, {\n  lngs: ['br'],\n  toCldr: {\n    '': 1,\n    _plural: 1\n  },\n  fromCldr: {\n    1: '_plural',\n    2: '_plural',\n    3: '_plural',\n    5: '_plural'\n  }\n}, {\n  lngs: ['fil', 'tl'],\n  toCldr: {\n    '': 1,\n    _plural: 5\n  },\n  fromCldr: {\n    1: '_plural',\n    5: '_plural'\n  }\n}, {\n  lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur'],\n  toCldr: {\n    _plural: 5,\n    '': 1\n  },\n  fromCldr: {\n    1: '',\n    5: '_plural'\n  }\n}, {\n  lngs: ['se'],\n  toCldr: {\n    _plural: 2,\n    '': 1\n  },\n  fromCldr: {\n    1: '',\n    2: '_plural',\n    5: '_plural'\n  }\n}, {\n  lngs: ['yo'],\n  toCldr: {\n    _plural: 5,\n    '': 5\n  },\n  fromCldr: {\n    5: ''\n  }\n}, {\n  lngs: ['ay', 'bo', 'id', 'ja', 'jbo', 'km', 'ko', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'vi', 'wo', 'zh'],\n  toCldr: {\n    _0: 5\n  },\n  fromCldr: {\n    5: '_0'\n  }\n}, {\n  lngs: ['cgg', 'ka', 'ky', 'ug'],\n  toCldr: {\n    _0: 1\n  },\n  fromCldr: {\n    1: '_0',\n    5: '_0'\n  }\n}, {\n  lngs: ['fa'],\n  toCldr: {\n    _0: 5\n  },\n  fromCldr: {\n    1: '_0',\n    5: '_0'\n  }\n}, {\n  lngs: ['be', 'cnr', 'ru', 'uk'],\n  toCldr: {\n    _2: 4,\n    _0: 1,\n    _1: 3\n  },\n  fromCldr: {\n    1: '_0',\n    3: '_1',\n    4: '_2'\n  }\n}, {\n  lngs: ['bs', 'hr', 'sr'],\n  toCldr: {\n    _2: 5,\n    _0: 1,\n    _1: 3\n  },\n  fromCldr: {\n    1: '_0',\n    3: '_1',\n    5: '_2'\n  }\n}, {\n  lngs: ['dz'],\n  toCldr: {\n    _2: 5,\n    _0: 5,\n    _1: 5\n  },\n  fromCldr: {\n    5: '_1'\n  }\n}, {\n  lngs: ['ar'],\n  toCldr: {\n    _0: 0,\n    _1: 1,\n    _2: 2,\n    _3: 3,\n    _4: 4,\n    _5: 5\n  },\n  fromCldr: {\n    0: '_0',\n    1: '_1',\n    2: '_2',\n    3: '_3',\n    4: '_4',\n    5: '_5'\n  }\n}, {\n  lngs: ['cs', 'sk'],\n  toCldr: {\n    _2: 5,\n    _0: 1,\n    _1: 3\n  },\n  fromCldr: {\n    1: '_0',\n    3: '_1',\n    5: '_2'\n  }\n}, {\n  lngs: ['csb', 'pl'],\n  toCldr: {\n    _2: 4,\n    _0: 1,\n    _1: 3\n  },\n  fromCldr: {\n    1: '_0',\n    3: '_1',\n    4: '_2'\n  }\n}, {\n  lngs: ['cy'],\n  toCldr: {\n    _2: 4,\n    _0: 1,\n    _1: 2,\n    _3: 5\n  },\n  fromCldr: {\n    0: '_2',\n    1: '_0',\n    2: '_1',\n    3: '_2',\n    4: '_2',\n    5: '_3'\n  }\n}, {\n  lngs: ['fr'],\n  toCldr: {\n    '': 1,\n    _plural: 5\n  },\n  fromCldr: {\n    1: '',\n    5: '_plural'\n  }\n}, {\n  lngs: ['ga'],\n  toCldr: {\n    _2: 3,\n    _0: 1,\n    _1: 2,\n    _3: 4,\n    _4: 5\n  },\n  fromCldr: {\n    1: '_0',\n    2: '_1',\n    3: '_2',\n    4: '_3',\n    5: '_4'\n  }\n}, {\n  lngs: ['gd'],\n  toCldr: {\n    _3: 5,\n    _0: 1,\n    _1: 2,\n    _2: 3\n  },\n  fromCldr: {\n    1: '_0',\n    2: '_1',\n    3: '_2',\n    5: '_3'\n  }\n}, {\n  lngs: ['is'],\n  toCldr: {\n    _plural: 5,\n    '': 1\n  },\n  fromCldr: {\n    1: '',\n    5: '_plural'\n  }\n}, {\n  lngs: ['jv'],\n  toCldr: {\n    _0: 5,\n    _1: 5\n  },\n  fromCldr: {\n    5: '_1'\n  }\n}, {\n  lngs: ['kw'],\n  toCldr: {\n    _3: 5,\n    _0: 1,\n    _1: 2,\n    _2: 5\n  },\n  fromCldr: {\n    1: '_0',\n    2: '_1',\n    5: '_2'\n  }\n}, {\n  lngs: ['lt'],\n  toCldr: {\n    _2: 5,\n    _0: 1,\n    _1: 3\n  },\n  fromCldr: {\n    1: '_0',\n    3: '_1',\n    5: '_2'\n  }\n}, {\n  lngs: ['lv'],\n  toCldr: {\n    _2: 0,\n    _0: 1,\n    _1: 0\n  },\n  fromCldr: {\n    0: '_1',\n    1: '_0',\n    5: '_1'\n  }\n}, {\n  lngs: ['mk'],\n  toCldr: {\n    _plural: 5,\n    '': 1\n  },\n  fromCldr: {\n    1: '',\n    5: '_plural'\n  }\n}, {\n  lngs: ['mnk'],\n  toCldr: {\n    _0: 0,\n    _1: 1,\n    _2: 5\n  },\n  fromCldr: {\n    0: '_0',\n    1: '_1',\n    5: '_2'\n  }\n}, {\n  lngs: ['mt'],\n  toCldr: {\n    _1: 3,\n    _0: 1,\n    _2: 4,\n    _3: 5\n  },\n  fromCldr: {\n    1: '_0',\n    3: '_1',\n    4: '_2',\n    5: '_3'\n  }\n}, {\n  lngs: ['or'],\n  toCldr: {\n    _1: 5,\n    _0: 1\n  },\n  fromCldr: {\n    1: '_0',\n    5: '_1'\n  }\n}, {\n  lngs: ['ro'],\n  toCldr: {\n    _1: 3,\n    _0: 1,\n    _2: 5\n  },\n  fromCldr: {\n    1: '_0',\n    3: '_1',\n    5: '_2'\n  }\n}, {\n  lngs: ['sl'],\n  toCldr: {\n    _0: 5,\n    _1: 1,\n    _2: 2,\n    _3: 3\n  },\n  fromCldr: {\n    1: '_1',\n    2: '_2',\n    3: '_3',\n    5: '_0'\n  }\n}, {\n  lngs: ['he'],\n  toCldr: {\n    _3: 5,\n    _0: 1,\n    _1: 2,\n    _2: 4\n  },\n  fromCldr: {\n    1: '_0',\n    2: '_1',\n    4: '_2',\n    5: '_3'\n  }\n}];\nvar rules = {};\nsets.forEach(function (set) {\n  set.lngs.forEach(function (l) {\n    rules[l] = {\n      toCldr: set.toCldr,\n      fromCldr: set.fromCldr\n    };\n  });\n});\nexport default rules;", "function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { getPlurals } from './options.js';\nimport { UNSAFE_KEYS } from './shared.js';\nimport cldrConv from './cldrConv.js';\nvar FORMS = ['zero', 'one', 'two', 'few', 'many', 'other'];\nvar isFuzzy = function isFuzzy(translation) {\n  return !!translation.comments && translation.comments.flag === 'fuzzy';\n};\nvar isUnsafeKey = function isUnsafeKey(key) {\n  return UNSAFE_KEYS.indexOf(key) > -1;\n};\nvar toArrayIfNeeded = function toArrayIfNeeded(value, _ref) {\n  var splitNewLine = _ref.splitNewLine;\n  return value.indexOf('\\n') > -1 && splitNewLine ? value.split('\\n') : value;\n};\nvar emptyOrObject = function emptyOrObject(key, value, options) {\n  if (options.skipUntranslated && !value) {\n    return {};\n  }\n  if (options.fallbackToMsgId && !value) {\n    return _defineProperty({}, key, toArrayIfNeeded(key, options));\n  }\n  return _defineProperty({}, key, toArrayIfNeeded(value, options));\n};\nvar getI18nextPluralExtension = function getI18nextPluralExtension(ext, i) {\n  if (ext && ext.numbers && ext.numbers.length === 2) return i === 0 ? '' : '_plural';\n  return \"_\".concat(i);\n};\nvar getGettextValues = function getGettextValues(value, locale, targetKey, options) {\n  var values = value.msgstr;\n  var plurals = getPlurals(options);\n  var isPlural = !!value.msgid_plural || value.msgid_plural === '';\n  if (!isPlural) return emptyOrObject(targetKey, values === undefined ? '' : values[0], options);\n  var ext = plurals[locale.toLowerCase()] || plurals[locale.split(/_|-/)[0].toLowerCase()] || plurals.dev;\n  var gettextValues = {};\n  for (var i = 0; i < values.length; i += 1) {\n    var pluralSuffix = getI18nextPluralExtension(ext, i);\n    if (options.compatibilityJSON === 'v4') {\n      var cldrRule = cldrConv[locale] || cldrConv[locale.split(/-|_/)[0]];\n      if (cldrRule && cldrRule.toCldr[pluralSuffix] !== undefined && FORMS[cldrRule.toCldr[pluralSuffix]]) {\n        pluralSuffix = \"_\".concat(FORMS[cldrRule.toCldr[pluralSuffix]]);\n      }\n    }\n    var pkey = targetKey + pluralSuffix;\n    Object.assign(gettextValues, emptyOrObject(pkey, values[i], options));\n  }\n  return gettextValues;\n};\nexport default function (js) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var data = JSON.parse(JSON.stringify(js.translations));\n  if (options.keyasareference) {\n    var keys = [];\n    Object.keys(data).forEach(function (ctx) {\n      Object.keys(data[ctx]).forEach(function (key) {\n        if (data[ctx][key].comments && data[ctx][key].comments.reference) {\n          data[ctx][key].comments.reference.split(/\\r?\\n|\\r/).forEach(function (id) {\n            var x = data[ctx][key];\n            data[ctx][id] = x;\n            if (options.skipUntranslated && (x.msgstr.length === 1 && !x.msgstr[0] || isFuzzy(x))) {\n              return;\n            }\n            if (x.msgstr[0] === '') x.msgstr[0] = x.msgid;\n            for (var i = 1; i < x.msgstr.length; i += 1) {\n              if (x.msgstr[i] === '') x.msgstr[i] = x.msgid_plural;\n            }\n            x.msgid = id;\n            if (id !== key) keys.push([ctx, key]);\n          });\n        }\n      });\n    });\n    keys.forEach(function (a) {\n      var c = a[0];\n      var k = a[1];\n      delete data[c][k];\n    });\n  }\n  var json = {};\n  var fuzzyKeys = options.fuzzy === true ? [] : null;\n  var separator = options.keyseparator || '##';\n  var ctxSeparator = options.ctxSeparator || '_';\n  var locale = options.locale || js.headers && js.headers.Language || 'en';\n  Object.keys(data).forEach(function (m) {\n    var context = data[m];\n    Object.keys(context).forEach(function (key) {\n      var targetKey = key;\n      var appendTo = json;\n      var keyPath = [];\n      if (key.length === 0) {\n        delete context[key];\n        return;\n      }\n      if (options.skipUntranslated && isFuzzy(context[key])) {\n        delete context[key];\n        return;\n      }\n      if (key.indexOf(separator) > -1) {\n        var _keys = key.split(separator);\n        if (_keys.some(isUnsafeKey)) {\n          delete context[key];\n          return;\n        }\n        keyPath = _keys.slice(0, _keys.length - 1);\n        var x = 0;\n        while (_keys[x] !== undefined && _keys[x] !== null) {\n          if (x < _keys.length - 1) {\n            appendTo[_keys[x]] = appendTo[_keys[x]] || {};\n            appendTo = appendTo[_keys[x]];\n          } else {\n            targetKey = _keys[x];\n          }\n          x += 1;\n        }\n      } else if (isUnsafeKey(key)) {\n        delete context[key];\n        return;\n      }\n      if (m !== '' && !options.ignoreCtx) targetKey = \"\".concat(targetKey).concat(ctxSeparator).concat(m);\n      if (options.persistMsgIdPlural) {\n        var _context$key = context[key];\n        var msgid = _context$key.msgid;\n        var msgid_plural = _context$key.msgid_plural;\n        if (msgid_plural && msgid !== msgid_plural) targetKey = \"\".concat(msgid, \"|#|\").concat(msgid_plural);\n      }\n      var newValues = getGettextValues(context[key], locale, targetKey, options);\n      Object.assign(appendTo, newValues);\n      if (fuzzyKeys && isFuzzy(context[key])) {\n        Object.keys(newValues).forEach(function (k) {\n          return fuzzyKeys.push(keyPath.concat(k).join('.'));\n        });\n      }\n    });\n  });\n  if (fuzzyKeys) return {\n    resources: json,\n    fuzzy: fuzzyKeys\n  };\n  return json;\n}", "function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport arrify from 'arrify';\nimport flatten from './flatten.js';\nimport { getPlurals, getSetLocaleAsLanguageHeader } from './options.js';\nvar getGettextPluralPosition = function getGettextPluralPosition(ext, suffix) {\n  if (ext) {\n    for (var i = 0; i < ext.numbers.length; i += 1) {\n      if (i === suffix) return i;\n    }\n  }\n  return -1;\n};\nvar getPluralArray = function getPluralArray(locale, translation, plurals) {\n  var ext = plurals[locale.toLowerCase()] || plurals[locale.split(/_|-/)[0].toLowerCase()] || plurals.dev;\n  var pArray = [];\n  for (var i = 0, len = translation.plurals.length; i < len; i += 1) {\n    var plural = translation.plurals[i];\n    pArray.splice(getGettextPluralPosition(ext, plural.pluralNumber - 1), 0, plural.value);\n  }\n  pArray.splice(getGettextPluralPosition(ext, translation.pluralNumber - 1), 0, translation.value);\n  return pArray;\n};\nvar PLURAL_SUFFIXES = ['zero', 'one', 'two', 'few', 'many', 'other', 'plural', '0', '1', '2', '3', '4', '5'];\nvar fuzzyMatcher = function fuzzyMatcher(options) {\n  var fuzzy = options.fuzzy;\n  if (!fuzzy) return function () {\n    return false;\n  };\n  var has = typeof fuzzy === 'function' ? function (k) {\n    return !!fuzzy(k);\n  } : fuzzy instanceof Set ? function (k) {\n    return fuzzy.has(k);\n  } : function (k) {\n    return Array.isArray(fuzzy) && fuzzy.indexOf(k) > -1;\n  };\n  var ctxSeparator = options.ctxSeparator || '_';\n  var keyseparator = options.keyseparator || '##';\n  return function (kv) {\n    var keys = kv.key.indexOf(keyseparator) > -1 ? [kv.key, kv.key.split(keyseparator).join('.')] : [kv.key];\n    var bases = kv.context ? keys.concat(keys.map(function (k) {\n      return \"\".concat(k).concat(ctxSeparator).concat(kv.context);\n    })) : keys;\n    return bases.some(function (b) {\n      return has(b) || (kv.plurals || kv.pluralNumber ? PLURAL_SUFFIXES.some(function (s) {\n        return has(\"\".concat(b, \"_\").concat(s));\n      }) : false);\n    });\n  };\n};\nvar parseGettext = function parseGettext(locale, data) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var out = {\n    charset: 'utf-8',\n    headers: {\n      'project-id-version': options.project || 'gettext-converter',\n      'mime-version': '1.0',\n      'content-type': 'text/plain; charset=utf-8',\n      'content-transfer-encoding': '8bit'\n    },\n    translations: {}\n  };\n  var plurals = getPlurals(options);\n  var setLocaleAsLanguageHeader = getSetLocaleAsLanguageHeader(options);\n  var ext = plurals[locale.toLowerCase()] || plurals[locale.split(/_|-/)[0].toLowerCase()] || plurals.dev;\n  var trans = {};\n  var isFuzzyEntry = fuzzyMatcher(options);\n  out.headers['plural-forms'] = \"nplurals=\".concat(ext.numbers.length, \"; plural=\").concat(ext.plurals);\n  if (!options.noDate) {\n    out.headers['pot-creation-date'] = new Date().toISOString();\n    out.headers['po-revision-date'] = new Date().toISOString();\n    if (options.potCreationDate && typeof options.potCreationDate.toISOString === 'function') out.headers['pot-creation-date'] = options.potCreationDate.toISOString();\n    if (options.poRevisionDate && typeof options.poRevisionDate.toISOString === 'function') out.headers['po-revision-date'] = options.poRevisionDate.toISOString();\n  }\n  if (options.language) out.headers.language = options.language;else if (setLocaleAsLanguageHeader) out.headers.language = locale;\n  var delkeys = [];\n  Object.keys(data).forEach(function (m) {\n    var kv = data[m];\n    if (kv.plurals) {\n      var pArray = [];\n      for (var i = 0, len = kv.plurals.length; i < len; i += 1) {\n        var plural = kv.plurals[i];\n        pArray.splice(getGettextPluralPosition(ext, plural.pluralNumber - 1), 0, plural.value);\n      }\n      if (ext.numbers.length !== 1) {\n        pArray.splice(getGettextPluralPosition(ext, kv.pluralNumber - 1), 0, kv.value);\n      }\n      if (_typeof(trans[kv.context]) !== 'object') trans[kv.context] = {};\n      if (options.keyasareference) {\n        if (_typeof(trans[kv.context][kv.value]) === 'object') {\n          trans[kv.context][kv.value].comments.reference.push(kv.key);\n        } else {\n          trans[kv.context][kv.value] = {\n            msgctxt: kv.context,\n            msgid: pArray[0],\n            msgid_plural: pArray.slice(1, pArray.length),\n            msgstr: arrify(kv.translated_value),\n            comments: {\n              reference: [kv.key]\n            }\n          };\n        }\n        if (kv.key !== kv.value) {\n          delkeys.push([kv.context, kv.key]);\n        }\n      } else {\n        var msgid = kv.key;\n        var msgid_plural = kv.key;\n        if (kv.key.indexOf('|#|') > -1) {\n          var p = kv.key.split('|#|');\n          msgid = p[0];\n          msgid_plural = p[1];\n        }\n        trans[kv.context][kv.key] = {\n          msgctxt: kv.context,\n          msgid: msgid,\n          msgid_plural: msgid_plural,\n          msgstr: pArray\n        };\n      }\n    } else {\n      if (_typeof(trans[kv.context]) !== 'object') trans[kv.context] = {};\n      if (options.keyasareference) {\n        if (_typeof(trans[kv.context][kv.value]) === 'object') {\n          trans[kv.context][kv.value].comments.reference.push(kv.key);\n        } else {\n          trans[kv.context][kv.value] = {\n            msgctxt: kv.context,\n            msgid: kv.value,\n            msgstr: arrify(kv.translated_value),\n            comments: {\n              reference: [kv.key]\n            }\n          };\n        }\n        if (kv.key !== kv.value) {\n          delkeys.push([kv.context, kv.key]);\n        }\n      } else {\n        trans[kv.context][kv.key] = {\n          msgctxt: kv.context,\n          msgid: kv.key,\n          msgstr: arrify(kv.value)\n        };\n      }\n    }\n    if (isFuzzyEntry(kv)) {\n      var entry = trans[kv.context][options.keyasareference ? kv.value : kv.key];\n      if (entry) entry.comments = Object.assign({}, entry.comments, {\n        flag: 'fuzzy'\n      });\n    }\n  });\n  delkeys.forEach(function (a) {\n    var c = a[0];\n    var k = a[1];\n    delete trans[c][k];\n  });\n  Object.keys(trans).forEach(function (ctxt) {\n    Object.keys(trans[ctxt]).forEach(function (id) {\n      if (trans[ctxt][id].comments && trans[ctxt][id].comments.reference) {\n        trans[ctxt][id].comments.reference = trans[ctxt][id].comments.reference.join('\\n');\n      }\n    });\n  });\n  out.translations = trans;\n  return out;\n};\nexport default function i18next2js(locale, body) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var flat = flatten(typeof body === 'string' ? JSON.parse(body) : body, options, locale);\n  if (options.base) {\n    var bflat = flatten(JSON.parse(options.base), options);\n    Object.keys(bflat).forEach(function (key) {\n      if (flat[key]) {\n        if (flat[key].plurals) {\n          bflat[key].translated_value = getPluralArray(locale, flat[key], getPlurals(options));\n        } else {\n          bflat[key].translated_value = flat[key].value;\n        }\n      }\n    });\n    return parseGettext(locale, bflat, options);\n  }\n  return parseGettext(locale, flat, options);\n}", "export default (fn, multi = false) => new Promise((resolve, reject) => {\n  fn(\n    (error, ...result) => (\n      error\n        ? reject(error)\n        : resolve(multi ? result : result[0])\n    ),\n  );\n});\n", "export enum Role {\n    VIEWER = \"Viewer\",\n    EDITOR = \"Editor\"\n}\n", "export function isAnyArrayBuffer(value: unknown): value is ArrayBuffer {\n  return ['[object ArrayBuffer]', '[object SharedArrayBuffer]'].includes(\n    Object.prototype.toString.call(value)\n  );\n}\n\nexport function isUint8Array(value: unknown): value is Uint8Array {\n  return Object.prototype.toString.call(value) === '[object Uint8Array]';\n}\n\nexport function isBigInt64Array(value: unknown): value is BigInt64Array {\n  return Object.prototype.toString.call(value) === '[object BigInt64Array]';\n}\n\nexport function isBigUInt64Array(value: unknown): value is BigUint64Array {\n  return Object.prototype.toString.call(value) === '[object BigUint64Array]';\n}\n\nexport function isRegExp(d: unknown): d is RegExp {\n  return Object.prototype.toString.call(d) === '[object RegExp]';\n}\n\nexport function isMap(d: unknown): d is Map<unknown, unknown> {\n  return Object.prototype.toString.call(d) === '[object Map]';\n}\n\nexport function isDate(d: unknown): d is Date {\n  return Object.prototype.toString.call(d) === '[object Date]';\n}\n", "/** @internal */\nexport const BSON_MAJOR_VERSION = 5 as const;\n\n/** @internal */\nexport const BSON_INT32_MAX = 0x7fffffff;\n/** @internal */\nexport const BSON_INT32_MIN = -0x80000000;\n/** @internal */\nexport const BSON_INT64_MAX = Math.pow(2, 63) - 1;\n/** @internal */\nexport const BSON_INT64_MIN = -Math.pow(2, 63);\n\n/**\n * Any integer up to 2^53 can be precisely represented by a double.\n * @internal\n */\nexport const JS_INT_MAX = Math.pow(2, 53);\n\n/**\n * Any integer down to -2^53 can be precisely represented by a double.\n * @internal\n */\nexport const JS_INT_MIN = -Math.pow(2, 53);\n\n/** Number BSON Type @internal */\nexport const BSON_DATA_NUMBER = 1;\n\n/** String BSON Type @internal */\nexport const BSON_DATA_STRING = 2;\n\n/** Object BSON Type @internal */\nexport const BSON_DATA_OBJECT = 3;\n\n/** Array BSON Type @internal */\nexport const BSON_DATA_ARRAY = 4;\n\n/** Binary BSON Type @internal */\nexport const BSON_DATA_BINARY = 5;\n\n/** Binary BSON Type @internal */\nexport const BSON_DATA_UNDEFINED = 6;\n\n/** ObjectId BSON Type @internal */\nexport const BSON_DATA_OID = 7;\n\n/** Boolean BSON Type @internal */\nexport const BSON_DATA_BOOLEAN = 8;\n\n/** Date BSON Type @internal */\nexport const BSON_DATA_DATE = 9;\n\n/** null BSON Type @internal */\nexport const BSON_DATA_NULL = 10;\n\n/** RegExp BSON Type @internal */\nexport const BSON_DATA_REGEXP = 11;\n\n/** Code BSON Type @internal */\nexport const BSON_DATA_DBPOINTER = 12;\n\n/** Code BSON Type @internal */\nexport const BSON_DATA_CODE = 13;\n\n/** Symbol BSON Type @internal */\nexport const BSON_DATA_SYMBOL = 14;\n\n/** Code with Scope BSON Type @internal */\nexport const BSON_DATA_CODE_W_SCOPE = 15;\n\n/** 32 bit Integer BSON Type @internal */\nexport const BSON_DATA_INT = 16;\n\n/** Timestamp BSON Type @internal */\nexport const BSON_DATA_TIMESTAMP = 17;\n\n/** Long BSON Type @internal */\nexport const BSON_DATA_LONG = 18;\n\n/** Decimal128 BSON Type @internal */\nexport const BSON_DATA_DECIMAL128 = 19;\n\n/** MinKey BSON Type @internal */\nexport const BSON_DATA_MIN_KEY = 0xff;\n\n/** MaxKey BSON Type @internal */\nexport const BSON_DATA_MAX_KEY = 0x7f;\n\n/** Binary Default Type @internal */\nexport const BSON_BINARY_SUBTYPE_DEFAULT = 0;\n\n/** Binary Function Type @internal */\nexport const BSON_BINARY_SUBTYPE_FUNCTION = 1;\n\n/** Binary Byte Array Type @internal */\nexport const BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2;\n\n/** Binary Deprecated UUID Type @deprecated Please use BSON_BINARY_SUBTYPE_UUID_NEW @internal */\nexport const BSON_BINARY_SUBTYPE_UUID = 3;\n\n/** Binary UUID Type @internal */\nexport const BSON_BINARY_SUBTYPE_UUID_NEW = 4;\n\n/** Binary MD5 Type @internal */\nexport const BSON_BINARY_SUBTYPE_MD5 = 5;\n\n/** Encrypted BSON type @internal */\nexport const BSON_BINARY_SUBTYPE_ENCRYPTED = 6;\n\n/** Column BSON type @internal */\nexport const BSON_BINARY_SUBTYPE_COLUMN = 7;\n\n/** Binary User Defined Type @internal */\nexport const BSON_BINARY_SUBTYPE_USER_DEFINED = 128;\n\n/** @public */\nexport const BSONType = Object.freeze({\n  double: 1,\n  string: 2,\n  object: 3,\n  array: 4,\n  binData: 5,\n  undefined: 6,\n  objectId: 7,\n  bool: 8,\n  date: 9,\n  null: 10,\n  regex: 11,\n  dbPointer: 12,\n  javascript: 13,\n  symbol: 14,\n  javascriptWithScope: 15,\n  int: 16,\n  timestamp: 17,\n  long: 18,\n  decimal: 19,\n  minKey: -1,\n  maxKey: 127\n} as const);\n\n/** @public */\nexport type BSONType = (typeof BSONType)[keyof typeof BSONType];\n", "import { BSON_MAJOR_VERSION } from './constants';\n\n/**\n * @public\n * @category Error\n *\n * `BSONError` objects are thrown when BSON ecounters an error.\n *\n * This is the parent class for all the other errors thrown by this library.\n */\nexport class BSONError extends Error {\n  /**\n   * @internal\n   * The underlying algorithm for isBSONError may change to improve how strict it is\n   * about determining if an input is a BSONError. But it must remain backwards compatible\n   * with previous minors & patches of the current major version.\n   */\n  protected get bsonError(): true {\n    return true;\n  }\n\n  override get name(): string {\n    return 'BSONError';\n  }\n\n  constructor(message: string) {\n    super(message);\n  }\n\n  /**\n   * @public\n   *\n   * All errors thrown from the BSON library inherit from `BSONError`.\n   * This method can assist with determining if an error originates from the BSON library\n   * even if it does not pass an `instanceof` check against this class' constructor.\n   *\n   * @param value - any javascript value that needs type checking\n   */\n  public static isBSONError(value: unknown): value is BSONError {\n    return (\n      value != null &&\n      typeof value === 'object' &&\n      'bsonError' in value &&\n      value.bsonError === true &&\n      // Do not access the following properties, just check existence\n      'name' in value &&\n      'message' in value &&\n      'stack' in value\n    );\n  }\n}\n\n/**\n * @public\n * @category Error\n */\nexport class BSONVersionError extends BSONError {\n  get name(): 'BSONVersionError' {\n    return 'BSONVersionError';\n  }\n\n  constructor() {\n    super(`Unsupported BSON version, bson types must be from bson ${BSON_MAJOR_VERSION}.x.x`);\n  }\n}\n\n/**\n * @public\n * @category Error\n *\n * An error generated when BSON functions encounter an unexpected input\n * or reaches an unexpected/invalid internal state\n *\n */\nexport class BSONRuntimeError extends BSONError {\n  get name(): 'BSONRuntimeError' {\n    return 'BSONRuntimeError';\n  }\n\n  constructor(message: string) {\n    super(message);\n  }\n}\n", "import { BSONError } from '../error';\n\ntype NodeJsEncoding = 'base64' | 'hex' | 'utf8' | 'binary';\ntype NodeJsBuffer = ArrayBufferView &\n  Uint8Array & {\n    write(string: string, offset: number, length: undefined, encoding: 'utf8'): number;\n    copy(target: Uint8Array, targetStart: number, sourceStart: number, sourceEnd: number): number;\n    toString: (this: Uint8Array, encoding: NodeJsEncoding, start?: number, end?: number) => string;\n    equals: (this: Uint8Array, other: Uint8Array) => boolean;\n  };\ntype NodeJsBufferConstructor = Omit<Uint8ArrayConstructor, 'from'> & {\n  alloc: (size: number) => NodeJsBuffer;\n  from(array: number[]): NodeJsBuffer;\n  from(array: Uint8Array): NodeJsBuffer;\n  from(array: ArrayBuffer): NodeJsBuffer;\n  from(array: ArrayBuffer, byteOffset: number, byteLength: number): NodeJsBuffer;\n  from(base64: string, encoding: NodeJsEncoding): NodeJsBuffer;\n  byteLength(input: string, encoding: 'utf8'): number;\n  isBuffer(value: unknown): value is NodeJsBuffer;\n};\n\n// This can be nullish, but we gate the nodejs functions on being exported whether or not this exists\n// Node.js global\ndeclare const Buffer: NodeJsBufferConstructor;\ndeclare const require: (mod: 'crypto') => { randomBytes: (byteLength: number) => Uint8Array };\n\n/** @internal */\nexport function nodejsMathRandomBytes(byteLength: number) {\n  return nodeJsByteUtils.fromNumberArray(\n    Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256))\n  );\n}\n\n/**\n * @internal\n * WARNING: REQUIRE WILL BE REWRITTEN\n *\n * This code is carefully used by require_rewriter.mjs any modifications must be reflected in the plugin.\n *\n * @remarks\n * \"crypto\" is the only dependency BSON needs. This presents a problem for creating a bundle of the BSON library\n * in an es module format that can be used both on the browser and in Node.js. In Node.js when BSON is imported as\n * an es module, there will be no global require function defined, making the code below fallback to the much less desireable math.random bytes.\n * In order to make our es module bundle work as expected on Node.js we need to change this `require()` to a dynamic import, and the dynamic\n * import must be top-level awaited since es modules are async. So we rely on a custom rollup plugin to seek out the following lines of code\n * and replace `require` with `await import` and the IIFE line (`nodejsRandomBytes = (() => { ... })()`) with `nodejsRandomBytes = await (async () => { ... })()`\n * when generating an es module bundle.\n */\nconst nodejsRandomBytes: (byteLength: number) => Uint8Array = (() => {\n  try {\n    return require('crypto').randomBytes;\n  } catch {\n    return nodejsMathRandomBytes;\n  }\n})();\n\n/** @internal */\nexport const nodeJsByteUtils = {\n  toLocalBufferType(potentialBuffer: Uint8Array | NodeJsBuffer | ArrayBuffer): NodeJsBuffer {\n    if (Buffer.isBuffer(potentialBuffer)) {\n      return potentialBuffer;\n    }\n\n    if (ArrayBuffer.isView(potentialBuffer)) {\n      return Buffer.from(\n        potentialBuffer.buffer,\n        potentialBuffer.byteOffset,\n        potentialBuffer.byteLength\n      );\n    }\n\n    const stringTag =\n      potentialBuffer?.[Symbol.toStringTag] ?? Object.prototype.toString.call(potentialBuffer);\n    if (\n      stringTag === 'ArrayBuffer' ||\n      stringTag === 'SharedArrayBuffer' ||\n      stringTag === '[object ArrayBuffer]' ||\n      stringTag === '[object SharedArrayBuffer]'\n    ) {\n      return Buffer.from(potentialBuffer);\n    }\n\n    throw new BSONError(`Cannot create Buffer from ${String(potentialBuffer)}`);\n  },\n\n  allocate(size: number): NodeJsBuffer {\n    return Buffer.alloc(size);\n  },\n\n  equals(a: Uint8Array, b: Uint8Array): boolean {\n    return nodeJsByteUtils.toLocalBufferType(a).equals(b);\n  },\n\n  fromNumberArray(array: number[]): NodeJsBuffer {\n    return Buffer.from(array);\n  },\n\n  fromBase64(base64: string): NodeJsBuffer {\n    return Buffer.from(base64, 'base64');\n  },\n\n  toBase64(buffer: Uint8Array): string {\n    return nodeJsByteUtils.toLocalBufferType(buffer).toString('base64');\n  },\n\n  /** **Legacy** binary strings are an outdated method of data transfer. Do not add public API support for interpreting this format */\n  fromISO88591(codePoints: string): NodeJsBuffer {\n    return Buffer.from(codePoints, 'binary');\n  },\n\n  /** **Legacy** binary strings are an outdated method of data transfer. Do not add public API support for interpreting this format */\n  toISO88591(buffer: Uint8Array): string {\n    return nodeJsByteUtils.toLocalBufferType(buffer).toString('binary');\n  },\n\n  fromHex(hex: string): NodeJsBuffer {\n    return Buffer.from(hex, 'hex');\n  },\n\n  toHex(buffer: Uint8Array): string {\n    return nodeJsByteUtils.toLocalBufferType(buffer).toString('hex');\n  },\n\n  fromUTF8(text: string): NodeJsBuffer {\n    return Buffer.from(text, 'utf8');\n  },\n\n  toUTF8(buffer: Uint8Array, start: number, end: number): string {\n    return nodeJsByteUtils.toLocalBufferType(buffer).toString('utf8', start, end);\n  },\n\n  utf8ByteLength(input: string): number {\n    return Buffer.byteLength(input, 'utf8');\n  },\n\n  encodeUTF8Into(buffer: Uint8Array, source: string, byteOffset: number): number {\n    return nodeJsByteUtils.toLocalBufferType(buffer).write(source, byteOffset, undefined, 'utf8');\n  },\n\n  randomBytes: nodejsRandomBytes\n};\n", "import { BSONError } from '../error';\n\ntype TextDecoder = {\n  readonly encoding: string;\n  readonly fatal: boolean;\n  readonly ignoreBOM: boolean;\n  decode(input?: Uint8Array): string;\n};\ntype TextDecoderConstructor = {\n  new (label: 'utf8', options: { fatal: boolean; ignoreBOM?: boolean }): TextDecoder;\n};\n\ntype TextEncoder = {\n  readonly encoding: string;\n  encode(input?: string): Uint8Array;\n};\ntype TextEncoderConstructor = {\n  new (): TextEncoder;\n};\n\n// Web global\ndeclare const TextDecoder: TextDecoderConstructor;\ndeclare const TextEncoder: TextEncoderConstructor;\ndeclare const atob: (base64: string) => string;\ndeclare const btoa: (binary: string) => string;\n\ntype ArrayBufferViewWithTag = ArrayBufferView & {\n  [Symbol.toStringTag]?: string;\n};\n\nfunction isReactNative() {\n  const { navigator } = globalThis as { navigator?: { product?: string } };\n  return typeof navigator === 'object' && navigator.product === 'ReactNative';\n}\n\n/** @internal */\nexport function webMathRandomBytes(byteLength: number) {\n  if (byteLength < 0) {\n    throw new RangeError(`The argument 'byteLength' is invalid. Received ${byteLength}`);\n  }\n  return webByteUtils.fromNumberArray(\n    Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256))\n  );\n}\n\n/** @internal */\nconst webRandomBytes: (byteLength: number) => Uint8Array = (() => {\n  const { crypto } = globalThis as {\n    crypto?: { getRandomValues?: (space: Uint8Array) => Uint8Array };\n  };\n  if (crypto != null && typeof crypto.getRandomValues === 'function') {\n    return (byteLength: number) => {\n      // @ts-expect-error: crypto.getRandomValues cannot actually be null here\n      // You cannot separate getRandomValues from crypto (need to have this === crypto)\n      return crypto.getRandomValues(webByteUtils.allocate(byteLength));\n    };\n  } else {\n    if (isReactNative()) {\n      const { console } = globalThis as { console?: { warn?: (message: string) => void } };\n      console?.warn?.(\n        'BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.'\n      );\n    }\n    return webMathRandomBytes;\n  }\n})();\n\nconst HEX_DIGIT = /(\\d|[a-f])/i;\n\n/** @internal */\nexport const webByteUtils = {\n  toLocalBufferType(\n    potentialUint8array: Uint8Array | ArrayBufferViewWithTag | ArrayBuffer\n  ): Uint8Array {\n    const stringTag =\n      potentialUint8array?.[Symbol.toStringTag] ??\n      Object.prototype.toString.call(potentialUint8array);\n\n    if (stringTag === 'Uint8Array') {\n      return potentialUint8array as Uint8Array;\n    }\n\n    if (ArrayBuffer.isView(potentialUint8array)) {\n      return new Uint8Array(\n        potentialUint8array.buffer.slice(\n          potentialUint8array.byteOffset,\n          potentialUint8array.byteOffset + potentialUint8array.byteLength\n        )\n      );\n    }\n\n    if (\n      stringTag === 'ArrayBuffer' ||\n      stringTag === 'SharedArrayBuffer' ||\n      stringTag === '[object ArrayBuffer]' ||\n      stringTag === '[object SharedArrayBuffer]'\n    ) {\n      return new Uint8Array(potentialUint8array);\n    }\n\n    throw new BSONError(`Cannot make a Uint8Array from ${String(potentialUint8array)}`);\n  },\n\n  allocate(size: number): Uint8Array {\n    if (typeof size !== 'number') {\n      throw new TypeError(`The \"size\" argument must be of type number. Received ${String(size)}`);\n    }\n    return new Uint8Array(size);\n  },\n\n  equals(a: Uint8Array, b: Uint8Array): boolean {\n    if (a.byteLength !== b.byteLength) {\n      return false;\n    }\n    for (let i = 0; i < a.byteLength; i++) {\n      if (a[i] !== b[i]) {\n        return false;\n      }\n    }\n    return true;\n  },\n\n  fromNumberArray(array: number[]): Uint8Array {\n    return Uint8Array.from(array);\n  },\n\n  fromBase64(base64: string): Uint8Array {\n    return Uint8Array.from(atob(base64), c => c.charCodeAt(0));\n  },\n\n  toBase64(uint8array: Uint8Array): string {\n    return btoa(webByteUtils.toISO88591(uint8array));\n  },\n\n  /** **Legacy** binary strings are an outdated method of data transfer. Do not add public API support for interpreting this format */\n  fromISO88591(codePoints: string): Uint8Array {\n    return Uint8Array.from(codePoints, c => c.charCodeAt(0) & 0xff);\n  },\n\n  /** **Legacy** binary strings are an outdated method of data transfer. Do not add public API support for interpreting this format */\n  toISO88591(uint8array: Uint8Array): string {\n    return Array.from(Uint16Array.from(uint8array), b => String.fromCharCode(b)).join('');\n  },\n\n  fromHex(hex: string): Uint8Array {\n    const evenLengthHex = hex.length % 2 === 0 ? hex : hex.slice(0, hex.length - 1);\n    const buffer = [];\n\n    for (let i = 0; i < evenLengthHex.length; i += 2) {\n      const firstDigit = evenLengthHex[i];\n      const secondDigit = evenLengthHex[i + 1];\n\n      if (!HEX_DIGIT.test(firstDigit)) {\n        break;\n      }\n      if (!HEX_DIGIT.test(secondDigit)) {\n        break;\n      }\n\n      const hexDigit = Number.parseInt(`${firstDigit}${secondDigit}`, 16);\n      buffer.push(hexDigit);\n    }\n\n    return Uint8Array.from(buffer);\n  },\n\n  toHex(uint8array: Uint8Array): string {\n    return Array.from(uint8array, byte => byte.toString(16).padStart(2, '0')).join('');\n  },\n\n  fromUTF8(text: string): Uint8Array {\n    return new TextEncoder().encode(text);\n  },\n\n  toUTF8(uint8array: Uint8Array, start: number, end: number): string {\n    return new TextDecoder('utf8', { fatal: false }).decode(uint8array.slice(start, end));\n  },\n\n  utf8ByteLength(input: string): number {\n    return webByteUtils.fromUTF8(input).byteLength;\n  },\n\n  encodeUTF8Into(buffer: Uint8Array, source: string, byteOffset: number): number {\n    const bytes = webByteUtils.fromUTF8(source);\n    buffer.set(bytes, byteOffset);\n    return bytes.byteLength;\n  },\n\n  randomBytes: webRandomBytes\n};\n", "import { nodeJsByteUtils } from './node_byte_utils';\nimport { webByteUtils } from './web_byte_utils';\n\n/** @internal */\nexport type ByteUtils = {\n  /** Transforms the input to an instance of Buffer if running on node, otherwise Uint8Array */\n  toLocalBufferType(buffer: Uint8Array | ArrayBufferView | ArrayBuffer): Uint8Array;\n  /** Create empty space of size */\n  allocate: (size: number) => Uint8Array;\n  /** Check if two Uint8Arrays are deep equal */\n  equals: (a: Uint8Array, b: Uint8Array) => boolean;\n  /** Check if two Uint8Arrays are deep equal */\n  fromNumberArray: (array: number[]) => Uint8Array;\n  /** Create a Uint8Array from a base64 string */\n  fromBase64: (base64: string) => Uint8Array;\n  /** Create a base64 string from bytes */\n  toBase64: (buffer: Uint8Array) => string;\n  /** **Legacy** binary strings are an outdated method of data transfer. Do not add public API support for interpreting this format */\n  fromISO88591: (codePoints: string) => Uint8Array;\n  /** **Legacy** binary strings are an outdated method of data transfer. Do not add public API support for interpreting this format */\n  toISO88591: (buffer: Uint8Array) => string;\n  /** Create a Uint8Array from a hex string */\n  fromHex: (hex: string) => Uint8Array;\n  /** Create a hex string from bytes */\n  toHex: (buffer: Uint8Array) => string;\n  /** Create a Uint8Array containing utf8 code units from a string */\n  fromUTF8: (text: string) => Uint8Array;\n  /** Create a string from utf8 code units */\n  toUTF8: (buffer: Uint8Array, start: number, end: number) => string;\n  /** Get the utf8 code unit count from a string if it were to be transformed to utf8 */\n  utf8ByteLength: (input: string) => number;\n  /** Encode UTF8 bytes generated from `source` string into `destination` at byteOffset. Returns the number of bytes encoded. */\n  encodeUTF8Into(destination: Uint8Array, source: string, byteOffset: number): number;\n  /** Generate a Uint8Array filled with random bytes with byteLength */\n  randomBytes(byteLength: number): Uint8Array;\n};\n\ndeclare const Buffer: { new (): unknown; prototype?: { _isBuffer?: boolean } } | undefined;\n\n/**\n * Check that a global Buffer exists that is a function and\n * does not have a '_isBuffer' property defined on the prototype\n * (this is to prevent using the npm buffer)\n */\nconst hasGlobalBuffer = typeof Buffer === 'function' && Buffer.prototype?._isBuffer !== true;\n\n/**\n * This is the only ByteUtils that should be used across the rest of the BSON library.\n *\n * The type annotation is important here, it asserts that each of the platform specific\n * utils implementations are compatible with the common one.\n *\n * @internal\n */\nexport const ByteUtils: ByteUtils = hasGlobalBuffer ? nodeJsByteUtils : webByteUtils;\n\nexport class BSONDataView extends DataView {\n  static fromUint8Array(input: Uint8Array) {\n    return new DataView(input.buffer, input.byteOffset, input.byteLength);\n  }\n}\n", "import { BSON_MAJOR_VERSION } from './constants';\n\n/** @public */\nexport abstract class BSONValue {\n  /** @public */\n  public abstract get _bsontype(): string;\n\n  /** @internal */\n  get [Symbol.for('@@mdb.bson.version')](): typeof BSON_MAJOR_VERSION {\n    return BSON_MAJOR_VERSION;\n  }\n\n  /** @public */\n  public abstract inspect(): string;\n\n  /** @internal */\n  abstract toExtendedJSON(): unknown;\n}\n", "import { isUint8Array } from './parser/utils';\nimport type { EJSONOptions } from './extended_json';\nimport { BSONError } from './error';\nimport { BSON_BINARY_SUBTYPE_UUID_NEW } from './constants';\nimport { ByteUtils } from './utils/byte_utils';\nimport { BSONValue } from './bson_value';\n\n/** @public */\nexport type BinarySequence = Uint8Array | number[];\n\n/** @public */\nexport interface BinaryExtendedLegacy {\n  $type: string;\n  $binary: string;\n}\n\n/** @public */\nexport interface BinaryExtended {\n  $binary: {\n    subType: string;\n    base64: string;\n  };\n}\n\n/**\n * A class representation of the BSON Binary type.\n * @public\n * @category BSONType\n */\nexport class Binary extends BSONValue {\n  get _bsontype(): 'Binary' {\n    return 'Binary';\n  }\n\n  /**\n   * Binary default subtype\n   * @internal\n   */\n  private static readonly BSON_BINARY_SUBTYPE_DEFAULT = 0;\n\n  /** Initial buffer default size */\n  static readonly BUFFER_SIZE = 256;\n  /** Default BSON type */\n  static readonly SUBTYPE_DEFAULT = 0;\n  /** Function BSON type */\n  static readonly SUBTYPE_FUNCTION = 1;\n  /** Byte Array BSON type */\n  static readonly SUBTYPE_BYTE_ARRAY = 2;\n  /** Deprecated UUID BSON type @deprecated Please use SUBTYPE_UUID */\n  static readonly SUBTYPE_UUID_OLD = 3;\n  /** UUID BSON type */\n  static readonly SUBTYPE_UUID = 4;\n  /** MD5 BSON type */\n  static readonly SUBTYPE_MD5 = 5;\n  /** Encrypted BSON type */\n  static readonly SUBTYPE_ENCRYPTED = 6;\n  /** Column BSON type */\n  static readonly SUBTYPE_COLUMN = 7;\n  /** User BSON type */\n  static readonly SUBTYPE_USER_DEFINED = 128;\n\n  buffer!: Uint8Array;\n  sub_type!: number;\n  position!: number;\n\n  /**\n   * Create a new Binary instance.\n   *\n   * This constructor can accept a string as its first argument. In this case,\n   * this string will be encoded using ISO-8859-1, **not** using UTF-8.\n   * This is almost certainly not what you want. Use `new Binary(Buffer.from(string))`\n   * instead to convert the string to a Buffer using UTF-8 first.\n   *\n   * @param buffer - a buffer object containing the binary data.\n   * @param subType - the option binary type.\n   */\n  constructor(buffer?: string | BinarySequence, subType?: number) {\n    super();\n    if (\n      !(buffer == null) &&\n      !(typeof buffer === 'string') &&\n      !ArrayBuffer.isView(buffer) &&\n      !(buffer instanceof ArrayBuffer) &&\n      !Array.isArray(buffer)\n    ) {\n      throw new BSONError(\n        'Binary can only be constructed from string, Buffer, TypedArray, or Array<number>'\n      );\n    }\n\n    this.sub_type = subType ?? Binary.BSON_BINARY_SUBTYPE_DEFAULT;\n\n    if (buffer == null) {\n      // create an empty binary buffer\n      this.buffer = ByteUtils.allocate(Binary.BUFFER_SIZE);\n      this.position = 0;\n    } else {\n      if (typeof buffer === 'string') {\n        // string\n        this.buffer = ByteUtils.fromISO88591(buffer);\n      } else if (Array.isArray(buffer)) {\n        // number[]\n        this.buffer = ByteUtils.fromNumberArray(buffer);\n      } else {\n        // Buffer | TypedArray | ArrayBuffer\n        this.buffer = ByteUtils.toLocalBufferType(buffer);\n      }\n\n      this.position = this.buffer.byteLength;\n    }\n  }\n\n  /**\n   * Updates this binary with byte_value.\n   *\n   * @param byteValue - a single byte we wish to write.\n   */\n  put(byteValue: string | number | Uint8Array | number[]): void {\n    // If it's a string and a has more than one character throw an error\n    if (typeof byteValue === 'string' && byteValue.length !== 1) {\n      throw new BSONError('only accepts single character String');\n    } else if (typeof byteValue !== 'number' && byteValue.length !== 1)\n      throw new BSONError('only accepts single character Uint8Array or Array');\n\n    // Decode the byte value once\n    let decodedByte: number;\n    if (typeof byteValue === 'string') {\n      decodedByte = byteValue.charCodeAt(0);\n    } else if (typeof byteValue === 'number') {\n      decodedByte = byteValue;\n    } else {\n      decodedByte = byteValue[0];\n    }\n\n    if (decodedByte < 0 || decodedByte > 255) {\n      throw new BSONError('only accepts number in a valid unsigned byte range 0-255');\n    }\n\n    if (this.buffer.byteLength > this.position) {\n      this.buffer[this.position++] = decodedByte;\n    } else {\n      const newSpace = ByteUtils.allocate(Binary.BUFFER_SIZE + this.buffer.length);\n      newSpace.set(this.buffer, 0);\n      this.buffer = newSpace;\n      this.buffer[this.position++] = decodedByte;\n    }\n  }\n\n  /**\n   * Writes a buffer or string to the binary.\n   *\n   * @param sequence - a string or buffer to be written to the Binary BSON object.\n   * @param offset - specify the binary of where to write the content.\n   */\n  write(sequence: string | BinarySequence, offset: number): void {\n    offset = typeof offset === 'number' ? offset : this.position;\n\n    // If the buffer is to small let's extend the buffer\n    if (this.buffer.byteLength < offset + sequence.length) {\n      const newSpace = ByteUtils.allocate(this.buffer.byteLength + sequence.length);\n      newSpace.set(this.buffer, 0);\n\n      // Assign the new buffer\n      this.buffer = newSpace;\n    }\n\n    if (ArrayBuffer.isView(sequence)) {\n      this.buffer.set(ByteUtils.toLocalBufferType(sequence), offset);\n      this.position =\n        offset + sequence.byteLength > this.position ? offset + sequence.length : this.position;\n    } else if (typeof sequence === 'string') {\n      const bytes = ByteUtils.fromISO88591(sequence);\n      this.buffer.set(bytes, offset);\n      this.position =\n        offset + sequence.length > this.position ? offset + sequence.length : this.position;\n    }\n  }\n\n  /**\n   * Reads **length** bytes starting at **position**.\n   *\n   * @param position - read from the given position in the Binary.\n   * @param length - the number of bytes to read.\n   */\n  read(position: number, length: number): BinarySequence {\n    length = length && length > 0 ? length : this.position;\n\n    // Let's return the data based on the type we have\n    return this.buffer.slice(position, position + length);\n  }\n\n  /**\n   * Returns the value of this binary as a string.\n   * @param asRaw - Will skip converting to a string\n   * @remarks\n   * This is handy when calling this function conditionally for some key value pairs and not others\n   */\n  value(asRaw?: boolean): string | BinarySequence {\n    asRaw = !!asRaw;\n\n    // Optimize to serialize for the situation where the data == size of buffer\n    if (asRaw && this.buffer.length === this.position) {\n      return this.buffer;\n    }\n\n    // If it's a node.js buffer object\n    if (asRaw) {\n      return this.buffer.slice(0, this.position);\n    }\n    // TODO(NODE-4361): remove binary string support, value(true) should be the default / only option here.\n    return ByteUtils.toISO88591(this.buffer.subarray(0, this.position));\n  }\n\n  /** the length of the binary sequence */\n  length(): number {\n    return this.position;\n  }\n\n  toJSON(): string {\n    return ByteUtils.toBase64(this.buffer);\n  }\n\n  toString(encoding?: 'hex' | 'base64' | 'utf8' | 'utf-8'): string {\n    if (encoding === 'hex') return ByteUtils.toHex(this.buffer);\n    if (encoding === 'base64') return ByteUtils.toBase64(this.buffer);\n    if (encoding === 'utf8' || encoding === 'utf-8')\n      return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength);\n    return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength);\n  }\n\n  /** @internal */\n  toExtendedJSON(options?: EJSONOptions): BinaryExtendedLegacy | BinaryExtended {\n    options = options || {};\n    const base64String = ByteUtils.toBase64(this.buffer);\n\n    const subType = Number(this.sub_type).toString(16);\n    if (options.legacy) {\n      return {\n        $binary: base64String,\n        $type: subType.length === 1 ? '0' + subType : subType\n      };\n    }\n    return {\n      $binary: {\n        base64: base64String,\n        subType: subType.length === 1 ? '0' + subType : subType\n      }\n    };\n  }\n\n  toUUID(): UUID {\n    if (this.sub_type === Binary.SUBTYPE_UUID) {\n      return new UUID(this.buffer.slice(0, this.position));\n    }\n\n    throw new BSONError(\n      `Binary sub_type \"${this.sub_type}\" is not supported for converting to UUID. Only \"${Binary.SUBTYPE_UUID}\" is currently supported.`\n    );\n  }\n\n  /** Creates an Binary instance from a hex digit string */\n  static createFromHexString(hex: string, subType?: number): Binary {\n    return new Binary(ByteUtils.fromHex(hex), subType);\n  }\n\n  /** Creates an Binary instance from a base64 string */\n  static createFromBase64(base64: string, subType?: number): Binary {\n    return new Binary(ByteUtils.fromBase64(base64), subType);\n  }\n\n  /** @internal */\n  static fromExtendedJSON(\n    doc: BinaryExtendedLegacy | BinaryExtended | UUIDExtended,\n    options?: EJSONOptions\n  ): Binary {\n    options = options || {};\n    let data: Uint8Array | undefined;\n    let type;\n    if ('$binary' in doc) {\n      if (options.legacy && typeof doc.$binary === 'string' && '$type' in doc) {\n        type = doc.$type ? parseInt(doc.$type, 16) : 0;\n        data = ByteUtils.fromBase64(doc.$binary);\n      } else {\n        if (typeof doc.$binary !== 'string') {\n          type = doc.$binary.subType ? parseInt(doc.$binary.subType, 16) : 0;\n          data = ByteUtils.fromBase64(doc.$binary.base64);\n        }\n      }\n    } else if ('$uuid' in doc) {\n      type = 4;\n      data = UUID.bytesFromString(doc.$uuid);\n    }\n    if (!data) {\n      throw new BSONError(`Unexpected Binary Extended JSON format ${JSON.stringify(doc)}`);\n    }\n    return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type);\n  }\n\n  /** @internal */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    const base64 = ByteUtils.toBase64(this.buffer.subarray(0, this.position));\n    return `Binary.createFromBase64(\"${base64}\", ${this.sub_type})`;\n  }\n}\n\n/** @public */\nexport type UUIDExtended = {\n  $uuid: string;\n};\n\nconst UUID_BYTE_LENGTH = 16;\nconst UUID_WITHOUT_DASHES = /^[0-9A-F]{32}$/i;\nconst UUID_WITH_DASHES = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;\n\n/**\n * A class representation of the BSON UUID type.\n * @public\n */\nexport class UUID extends Binary {\n  /** @deprecated Hex string is no longer cached, this control will be removed in a future major release */\n  static cacheHexString = false;\n  /**\n   * Create a UUID type\n   *\n   * When the argument to the constructor is omitted a random v4 UUID will be generated.\n   *\n   * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer.\n   */\n  constructor(input?: string | Uint8Array | UUID) {\n    let bytes: Uint8Array;\n    if (input == null) {\n      bytes = UUID.generate();\n    } else if (input instanceof UUID) {\n      bytes = ByteUtils.toLocalBufferType(new Uint8Array(input.buffer));\n    } else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) {\n      bytes = ByteUtils.toLocalBufferType(input);\n    } else if (typeof input === 'string') {\n      bytes = UUID.bytesFromString(input);\n    } else {\n      throw new BSONError(\n        'Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'\n      );\n    }\n    super(bytes, BSON_BINARY_SUBTYPE_UUID_NEW);\n  }\n\n  /**\n   * The UUID bytes\n   * @readonly\n   */\n  get id(): Uint8Array {\n    return this.buffer;\n  }\n\n  set id(value: Uint8Array) {\n    this.buffer = value;\n  }\n\n  /**\n   * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated)\n   * @param includeDashes - should the string exclude dash-separators.\n   */\n  toHexString(includeDashes = true): string {\n    if (includeDashes) {\n      return [\n        ByteUtils.toHex(this.buffer.subarray(0, 4)),\n        ByteUtils.toHex(this.buffer.subarray(4, 6)),\n        ByteUtils.toHex(this.buffer.subarray(6, 8)),\n        ByteUtils.toHex(this.buffer.subarray(8, 10)),\n        ByteUtils.toHex(this.buffer.subarray(10, 16))\n      ].join('-');\n    }\n    return ByteUtils.toHex(this.buffer);\n  }\n\n  /**\n   * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified.\n   */\n  toString(encoding?: 'hex' | 'base64'): string {\n    if (encoding === 'hex') return ByteUtils.toHex(this.id);\n    if (encoding === 'base64') return ByteUtils.toBase64(this.id);\n    return this.toHexString();\n  }\n\n  /**\n   * Converts the id into its JSON string representation.\n   * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n   */\n  toJSON(): string {\n    return this.toHexString();\n  }\n\n  /**\n   * Compares the equality of this UUID with `otherID`.\n   *\n   * @param otherId - UUID instance to compare against.\n   */\n  equals(otherId: string | Uint8Array | UUID): boolean {\n    if (!otherId) {\n      return false;\n    }\n\n    if (otherId instanceof UUID) {\n      return ByteUtils.equals(otherId.id, this.id);\n    }\n\n    try {\n      return ByteUtils.equals(new UUID(otherId).id, this.id);\n    } catch {\n      return false;\n    }\n  }\n\n  /**\n   * Creates a Binary instance from the current UUID.\n   */\n  toBinary(): Binary {\n    return new Binary(this.id, Binary.SUBTYPE_UUID);\n  }\n\n  /**\n   * Generates a populated buffer containing a v4 uuid\n   */\n  static generate(): Uint8Array {\n    const bytes = ByteUtils.randomBytes(UUID_BYTE_LENGTH);\n\n    // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n    // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js\n    bytes[6] = (bytes[6] & 0x0f) | 0x40;\n    bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n    return bytes;\n  }\n\n  /**\n   * Checks if a value is a valid bson UUID\n   * @param input - UUID, string or Buffer to validate.\n   */\n  static isValid(input: string | Uint8Array | UUID | Binary): boolean {\n    if (!input) {\n      return false;\n    }\n\n    if (typeof input === 'string') {\n      return UUID.isValidUUIDString(input);\n    }\n\n    if (isUint8Array(input)) {\n      return input.byteLength === UUID_BYTE_LENGTH;\n    }\n\n    return (\n      input._bsontype === 'Binary' &&\n      input.sub_type === this.SUBTYPE_UUID &&\n      input.buffer.byteLength === 16\n    );\n  }\n\n  /**\n   * Creates an UUID from a hex string representation of an UUID.\n   * @param hexString - 32 or 36 character hex string (dashes excluded/included).\n   */\n  static override createFromHexString(hexString: string): UUID {\n    const buffer = UUID.bytesFromString(hexString);\n    return new UUID(buffer);\n  }\n\n  /** Creates an UUID from a base64 string representation of an UUID. */\n  static override createFromBase64(base64: string): UUID {\n    return new UUID(ByteUtils.fromBase64(base64));\n  }\n\n  /** @internal */\n  static bytesFromString(representation: string) {\n    if (!UUID.isValidUUIDString(representation)) {\n      throw new BSONError(\n        'UUID string representation must be 32 hex digits or canonical hyphenated representation'\n      );\n    }\n    return ByteUtils.fromHex(representation.replace(/-/g, ''));\n  }\n\n  /**\n   * @internal\n   *\n   * Validates a string to be a hex digit sequence with or without dashes.\n   * The canonical hyphenated representation of a uuid is hex in 8-4-4-4-12 groups.\n   */\n  static isValidUUIDString(representation: string) {\n    return UUID_WITHOUT_DASHES.test(representation) || UUID_WITH_DASHES.test(representation);\n  }\n\n  /**\n   * Converts to a string representation of this Id.\n   *\n   * @returns return the 36 character hex string representation.\n   * @internal\n   */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    return `new UUID(\"${this.toHexString()}\")`;\n  }\n}\n", "import type { Document } from './bson';\nimport { BSONValue } from './bson_value';\n\n/** @public */\nexport interface CodeExtended {\n  $code: string;\n  $scope?: Document;\n}\n\n/**\n * A class representation of the BSON Code type.\n * @public\n * @category BSONType\n */\nexport class Code extends BSONValue {\n  get _bsontype(): 'Code' {\n    return 'Code';\n  }\n\n  code: string;\n\n  // a code instance having a null scope is what determines whether\n  // it is BSONType 0x0D (just code) / 0x0F (code with scope)\n  scope: Document | null;\n\n  /**\n   * @param code - a string or function.\n   * @param scope - an optional scope for the function.\n   */\n  constructor(code: string | Function, scope?: Document | null) {\n    super();\n    this.code = code.toString();\n    this.scope = scope ?? null;\n  }\n\n  toJSON(): { code: string; scope?: Document } {\n    if (this.scope != null) {\n      return { code: this.code, scope: this.scope };\n    }\n\n    return { code: this.code };\n  }\n\n  /** @internal */\n  toExtendedJSON(): CodeExtended {\n    if (this.scope) {\n      return { $code: this.code, $scope: this.scope };\n    }\n\n    return { $code: this.code };\n  }\n\n  /** @internal */\n  static fromExtendedJSON(doc: CodeExtended): Code {\n    return new Code(doc.$code, doc.$scope);\n  }\n\n  /** @internal */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    const codeJson = this.toJSON();\n    return `new Code(\"${String(codeJson.code)}\"${\n      codeJson.scope != null ? `, ${JSON.stringify(codeJson.scope)}` : ''\n    })`;\n  }\n}\n", "import type { Document } from './bson';\nimport { BSONValue } from './bson_value';\nimport type { EJSONOptions } from './extended_json';\nimport type { ObjectId } from './objectid';\n\n/** @public */\nexport interface DBRefLike {\n  $ref: string;\n  $id: ObjectId;\n  $db?: string;\n}\n\n/** @internal */\nexport function isDBRefLike(value: unknown): value is DBRefLike {\n  return (\n    value != null &&\n    typeof value === 'object' &&\n    '$id' in value &&\n    value.$id != null &&\n    '$ref' in value &&\n    typeof value.$ref === 'string' &&\n    // If '$db' is defined it MUST be a string, otherwise it should be absent\n    (!('$db' in value) || ('$db' in value && typeof value.$db === 'string'))\n  );\n}\n\n/**\n * A class representation of the BSON DBRef type.\n * @public\n * @category BSONType\n */\nexport class DBRef extends BSONValue {\n  get _bsontype(): 'DBRef' {\n    return 'DBRef';\n  }\n\n  collection!: string;\n  oid!: ObjectId;\n  db?: string;\n  fields!: Document;\n\n  /**\n   * @param collection - the collection name.\n   * @param oid - the reference ObjectId.\n   * @param db - optional db name, if omitted the reference is local to the current db.\n   */\n  constructor(collection: string, oid: ObjectId, db?: string, fields?: Document) {\n    super();\n    // check if namespace has been provided\n    const parts = collection.split('.');\n    if (parts.length === 2) {\n      db = parts.shift();\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      collection = parts.shift()!;\n    }\n\n    this.collection = collection;\n    this.oid = oid;\n    this.db = db;\n    this.fields = fields || {};\n  }\n\n  // Property provided for compatibility with the 1.x parser\n  // the 1.x parser used a \"namespace\" property, while 4.x uses \"collection\"\n\n  /** @internal */\n  get namespace(): string {\n    return this.collection;\n  }\n\n  set namespace(value: string) {\n    this.collection = value;\n  }\n\n  toJSON(): DBRefLike & Document {\n    const o = Object.assign(\n      {\n        $ref: this.collection,\n        $id: this.oid\n      },\n      this.fields\n    );\n\n    if (this.db != null) o.$db = this.db;\n    return o;\n  }\n\n  /** @internal */\n  toExtendedJSON(options?: EJSONOptions): DBRefLike {\n    options = options || {};\n    let o: DBRefLike = {\n      $ref: this.collection,\n      $id: this.oid\n    };\n\n    if (options.legacy) {\n      return o;\n    }\n\n    if (this.db) o.$db = this.db;\n    o = Object.assign(o, this.fields);\n    return o;\n  }\n\n  /** @internal */\n  static fromExtendedJSON(doc: DBRefLike): DBRef {\n    const copy = Object.assign({}, doc) as Partial<DBRefLike>;\n    delete copy.$ref;\n    delete copy.$id;\n    delete copy.$db;\n    return new DBRef(doc.$ref, doc.$id, doc.$db, copy);\n  }\n\n  /** @internal */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    // NOTE: if OID is an ObjectId class it will just print the oid string.\n    const oid =\n      this.oid === undefined || this.oid.toString === undefined ? this.oid : this.oid.toString();\n    return `new DBRef(\"${this.namespace}\", new ObjectId(\"${String(oid)}\")${\n      this.db ? `, \"${this.db}\"` : ''\n    })`;\n  }\n}\n", "import { BSONValue } from './bson_value';\nimport { BSONError } from './error';\nimport type { EJSONOptions } from './extended_json';\nimport type { Timestamp } from './timestamp';\n\ninterface LongWASMHelpers {\n  /** Gets the high bits of the last operation performed */\n  get_high(this: void): number;\n  div_u(\n    this: void,\n    lowBits: number,\n    highBits: number,\n    lowBitsDivisor: number,\n    highBitsDivisor: number\n  ): number;\n  div_s(\n    this: void,\n    lowBits: number,\n    highBits: number,\n    lowBitsDivisor: number,\n    highBitsDivisor: number\n  ): number;\n  rem_u(\n    this: void,\n    lowBits: number,\n    highBits: number,\n    lowBitsDivisor: number,\n    highBitsDivisor: number\n  ): number;\n  rem_s(\n    this: void,\n    lowBits: number,\n    highBits: number,\n    lowBitsDivisor: number,\n    highBitsDivisor: number\n  ): number;\n  mul(\n    this: void,\n    lowBits: number,\n    highBits: number,\n    lowBitsMultiplier: number,\n    highBitsMultiplier: number\n  ): number;\n}\n\n/**\n * wasm optimizations, to do native i64 multiplication and divide\n */\nlet wasm: LongWASMHelpers | undefined = undefined;\n\n/* We do not want to have to include DOM types just for this check */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeclare const WebAssembly: any;\n\ntry {\n  wasm = new WebAssembly.Instance(\n    new WebAssembly.Module(\n      // prettier-ignore\n      new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])\n    ),\n    {}\n  ).exports as unknown as LongWASMHelpers;\n} catch {\n  // no wasm support\n}\n\nconst TWO_PWR_16_DBL = 1 << 16;\nconst TWO_PWR_24_DBL = 1 << 24;\nconst TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\nconst TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\nconst TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\n\n/** A cache of the Long representations of small integer values. */\nconst INT_CACHE: { [key: number]: Long } = {};\n\n/** A cache of the Long representations of small unsigned integer values. */\nconst UINT_CACHE: { [key: number]: Long } = {};\n\nconst MAX_INT64_STRING_LENGTH = 20;\n\nconst DECIMAL_REG_EX = /^(\\+?0|(\\+|-)?[1-9][0-9]*)$/;\n\n/** @public */\nexport interface LongExtended {\n  $numberLong: string;\n}\n\n/**\n * A class representing a 64-bit integer\n * @public\n * @category BSONType\n * @remarks\n * The internal representation of a long is the two given signed, 32-bit values.\n * We use 32-bit pieces because these are the size of integers on which\n * Javascript performs bit-operations.  For operations like addition and\n * multiplication, we split each number into 16 bit pieces, which can easily be\n * multiplied within Javascript's floating-point representation without overflow\n * or change in sign.\n * In the algorithms below, we frequently reduce the negative case to the\n * positive case by negating the input(s) and then post-processing the result.\n * Note that we must ALWAYS check specially whether those values are MIN_VALUE\n * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n * a positive number, it overflows back into a negative).  Not handling this\n * case would often result in infinite recursion.\n * Common constant values ZERO, ONE, NEG_ONE, etc. are found as static properties on this class.\n */\nexport class Long extends BSONValue {\n  get _bsontype(): 'Long' {\n    return 'Long';\n  }\n\n  /** An indicator used to reliably determine if an object is a Long or not. */\n  get __isLong__(): boolean {\n    return true;\n  }\n\n  /**\n   * The high 32 bits as a signed value.\n   */\n  high!: number;\n\n  /**\n   * The low 32 bits as a signed value.\n   */\n  low!: number;\n\n  /**\n   * Whether unsigned or not.\n   */\n  unsigned!: boolean;\n\n  /**\n   * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\n   *  See the from* functions below for more convenient ways of constructing Longs.\n   *\n   * Acceptable signatures are:\n   * - Long(low, high, unsigned?)\n   * - Long(bigint, unsigned?)\n   * - Long(string, unsigned?)\n   *\n   * @param low - The low (signed) 32 bits of the long\n   * @param high - The high (signed) 32 bits of the long\n   * @param unsigned - Whether unsigned or not, defaults to signed\n   */\n  constructor(low: number | bigint | string = 0, high?: number | boolean, unsigned?: boolean) {\n    super();\n    if (typeof low === 'bigint') {\n      Object.assign(this, Long.fromBigInt(low, !!high));\n    } else if (typeof low === 'string') {\n      Object.assign(this, Long.fromString(low, !!high));\n    } else {\n      this.low = low | 0;\n      this.high = (high as number) | 0;\n      this.unsigned = !!unsigned;\n    }\n  }\n\n  static TWO_PWR_24 = Long.fromInt(TWO_PWR_24_DBL);\n\n  /** Maximum unsigned value. */\n  static MAX_UNSIGNED_VALUE = Long.fromBits(0xffffffff | 0, 0xffffffff | 0, true);\n  /** Signed zero */\n  static ZERO = Long.fromInt(0);\n  /** Unsigned zero. */\n  static UZERO = Long.fromInt(0, true);\n  /** Signed one. */\n  static ONE = Long.fromInt(1);\n  /** Unsigned one. */\n  static UONE = Long.fromInt(1, true);\n  /** Signed negative one. */\n  static NEG_ONE = Long.fromInt(-1);\n  /** Maximum signed value. */\n  static MAX_VALUE = Long.fromBits(0xffffffff | 0, 0x7fffffff | 0, false);\n  /** Minimum signed value. */\n  static MIN_VALUE = Long.fromBits(0, 0x80000000 | 0, false);\n\n  /**\n   * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits.\n   * Each is assumed to use 32 bits.\n   * @param lowBits - The low 32 bits\n   * @param highBits - The high 32 bits\n   * @param unsigned - Whether unsigned or not, defaults to signed\n   * @returns The corresponding Long value\n   */\n  static fromBits(lowBits: number, highBits: number, unsigned?: boolean): Long {\n    return new Long(lowBits, highBits, unsigned);\n  }\n\n  /**\n   * Returns a Long representing the given 32 bit integer value.\n   * @param value - The 32 bit integer in question\n   * @param unsigned - Whether unsigned or not, defaults to signed\n   * @returns The corresponding Long value\n   */\n  static fromInt(value: number, unsigned?: boolean): Long {\n    let obj, cachedObj, cache;\n    if (unsigned) {\n      value >>>= 0;\n      if ((cache = 0 <= value && value < 256)) {\n        cachedObj = UINT_CACHE[value];\n        if (cachedObj) return cachedObj;\n      }\n      obj = Long.fromBits(value, (value | 0) < 0 ? -1 : 0, true);\n      if (cache) UINT_CACHE[value] = obj;\n      return obj;\n    } else {\n      value |= 0;\n      if ((cache = -128 <= value && value < 128)) {\n        cachedObj = INT_CACHE[value];\n        if (cachedObj) return cachedObj;\n      }\n      obj = Long.fromBits(value, value < 0 ? -1 : 0, false);\n      if (cache) INT_CACHE[value] = obj;\n      return obj;\n    }\n  }\n\n  /**\n   * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n   * @param value - The number in question\n   * @param unsigned - Whether unsigned or not, defaults to signed\n   * @returns The corresponding Long value\n   */\n  static fromNumber(value: number, unsigned?: boolean): Long {\n    if (isNaN(value)) return unsigned ? Long.UZERO : Long.ZERO;\n    if (unsigned) {\n      if (value < 0) return Long.UZERO;\n      if (value >= TWO_PWR_64_DBL) return Long.MAX_UNSIGNED_VALUE;\n    } else {\n      if (value <= -TWO_PWR_63_DBL) return Long.MIN_VALUE;\n      if (value + 1 >= TWO_PWR_63_DBL) return Long.MAX_VALUE;\n    }\n    if (value < 0) return Long.fromNumber(-value, unsigned).neg();\n    return Long.fromBits(value % TWO_PWR_32_DBL | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\n  }\n\n  /**\n   * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n   * @param value - The number in question\n   * @param unsigned - Whether unsigned or not, defaults to signed\n   * @returns The corresponding Long value\n   */\n  static fromBigInt(value: bigint, unsigned?: boolean): Long {\n    return Long.fromString(value.toString(), unsigned);\n  }\n\n  /**\n   * Returns a Long representation of the given string, written using the specified radix.\n   * @param str - The textual representation of the Long\n   * @param unsigned - Whether unsigned or not, defaults to signed\n   * @param radix - The radix in which the text is written (2-36), defaults to 10\n   * @returns The corresponding Long value\n   */\n  static fromString(str: string, unsigned?: boolean, radix?: number): Long {\n    if (str.length === 0) throw new BSONError('empty string');\n    if (str === 'NaN' || str === 'Infinity' || str === '+Infinity' || str === '-Infinity')\n      return Long.ZERO;\n    if (typeof unsigned === 'number') {\n      // For goog.math.long compatibility\n      (radix = unsigned), (unsigned = false);\n    } else {\n      unsigned = !!unsigned;\n    }\n    radix = radix || 10;\n    if (radix < 2 || 36 < radix) throw new BSONError('radix');\n\n    let p;\n    if ((p = str.indexOf('-')) > 0) throw new BSONError('interior hyphen');\n    else if (p === 0) {\n      return Long.fromString(str.substring(1), unsigned, radix).neg();\n    }\n\n    // Do several (8) digits each time through the loop, so as to\n    // minimize the calls to the very expensive emulated div.\n    const radixToPower = Long.fromNumber(Math.pow(radix, 8));\n\n    let result = Long.ZERO;\n    for (let i = 0; i < str.length; i += 8) {\n      const size = Math.min(8, str.length - i),\n        value = parseInt(str.substring(i, i + size), radix);\n      if (size < 8) {\n        const power = Long.fromNumber(Math.pow(radix, size));\n        result = result.mul(power).add(Long.fromNumber(value));\n      } else {\n        result = result.mul(radixToPower);\n        result = result.add(Long.fromNumber(value));\n      }\n    }\n    result.unsigned = unsigned;\n    return result;\n  }\n\n  /**\n   * Creates a Long from its byte representation.\n   * @param bytes - Byte representation\n   * @param unsigned - Whether unsigned or not, defaults to signed\n   * @param le - Whether little or big endian, defaults to big endian\n   * @returns The corresponding Long value\n   */\n  static fromBytes(bytes: number[], unsigned?: boolean, le?: boolean): Long {\n    return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\n  }\n\n  /**\n   * Creates a Long from its little endian byte representation.\n   * @param bytes - Little endian byte representation\n   * @param unsigned - Whether unsigned or not, defaults to signed\n   * @returns The corresponding Long value\n   */\n  static fromBytesLE(bytes: number[], unsigned?: boolean): Long {\n    return new Long(\n      bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24),\n      bytes[4] | (bytes[5] << 8) | (bytes[6] << 16) | (bytes[7] << 24),\n      unsigned\n    );\n  }\n\n  /**\n   * Creates a Long from its big endian byte representation.\n   * @param bytes - Big endian byte representation\n   * @param unsigned - Whether unsigned or not, defaults to signed\n   * @returns The corresponding Long value\n   */\n  static fromBytesBE(bytes: number[], unsigned?: boolean): Long {\n    return new Long(\n      (bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7],\n      (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3],\n      unsigned\n    );\n  }\n\n  /**\n   * Tests if the specified object is a Long.\n   */\n  static isLong(value: unknown): value is Long {\n    return (\n      value != null &&\n      typeof value === 'object' &&\n      '__isLong__' in value &&\n      value.__isLong__ === true\n    );\n  }\n\n  /**\n   * Converts the specified value to a Long.\n   * @param unsigned - Whether unsigned or not, defaults to signed\n   */\n  static fromValue(\n    val: number | string | { low: number; high: number; unsigned?: boolean },\n    unsigned?: boolean\n  ): Long {\n    if (typeof val === 'number') return Long.fromNumber(val, unsigned);\n    if (typeof val === 'string') return Long.fromString(val, unsigned);\n    // Throws for non-objects, converts non-instanceof Long:\n    return Long.fromBits(\n      val.low,\n      val.high,\n      typeof unsigned === 'boolean' ? unsigned : val.unsigned\n    );\n  }\n\n  /** Returns the sum of this and the specified Long. */\n  add(addend: string | number | Long | Timestamp): Long {\n    if (!Long.isLong(addend)) addend = Long.fromValue(addend);\n\n    // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n\n    const a48 = this.high >>> 16;\n    const a32 = this.high & 0xffff;\n    const a16 = this.low >>> 16;\n    const a00 = this.low & 0xffff;\n\n    const b48 = addend.high >>> 16;\n    const b32 = addend.high & 0xffff;\n    const b16 = addend.low >>> 16;\n    const b00 = addend.low & 0xffff;\n\n    let c48 = 0,\n      c32 = 0,\n      c16 = 0,\n      c00 = 0;\n    c00 += a00 + b00;\n    c16 += c00 >>> 16;\n    c00 &= 0xffff;\n    c16 += a16 + b16;\n    c32 += c16 >>> 16;\n    c16 &= 0xffff;\n    c32 += a32 + b32;\n    c48 += c32 >>> 16;\n    c32 &= 0xffff;\n    c48 += a48 + b48;\n    c48 &= 0xffff;\n    return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n  }\n\n  /**\n   * Returns the sum of this and the specified Long.\n   * @returns Sum\n   */\n  and(other: string | number | Long | Timestamp): Long {\n    if (!Long.isLong(other)) other = Long.fromValue(other);\n    return Long.fromBits(this.low & other.low, this.high & other.high, this.unsigned);\n  }\n\n  /**\n   * Compares this Long's value with the specified's.\n   * @returns 0 if they are the same, 1 if the this is greater and -1 if the given one is greater\n   */\n  compare(other: string | number | Long | Timestamp): 0 | 1 | -1 {\n    if (!Long.isLong(other)) other = Long.fromValue(other);\n    if (this.eq(other)) return 0;\n    const thisNeg = this.isNegative(),\n      otherNeg = other.isNegative();\n    if (thisNeg && !otherNeg) return -1;\n    if (!thisNeg && otherNeg) return 1;\n    // At this point the sign bits are the same\n    if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1;\n    // Both are positive if at least one is unsigned\n    return other.high >>> 0 > this.high >>> 0 ||\n      (other.high === this.high && other.low >>> 0 > this.low >>> 0)\n      ? -1\n      : 1;\n  }\n\n  /** This is an alias of {@link Long.compare} */\n  comp(other: string | number | Long | Timestamp): 0 | 1 | -1 {\n    return this.compare(other);\n  }\n\n  /**\n   * Returns this Long divided by the specified. The result is signed if this Long is signed or unsigned if this Long is unsigned.\n   * @returns Quotient\n   */\n  divide(divisor: string | number | Long | Timestamp): Long {\n    if (!Long.isLong(divisor)) divisor = Long.fromValue(divisor);\n    if (divisor.isZero()) throw new BSONError('division by zero');\n\n    // use wasm support if present\n    if (wasm) {\n      // guard against signed division overflow: the largest\n      // negative number / -1 would be 1 larger than the largest\n      // positive number, due to two's complement.\n      if (\n        !this.unsigned &&\n        this.high === -0x80000000 &&\n        divisor.low === -1 &&\n        divisor.high === -1\n      ) {\n        // be consistent with non-wasm code path\n        return this;\n      }\n      const low = (this.unsigned ? wasm.div_u : wasm.div_s)(\n        this.low,\n        this.high,\n        divisor.low,\n        divisor.high\n      );\n      return Long.fromBits(low, wasm.get_high(), this.unsigned);\n    }\n\n    if (this.isZero()) return this.unsigned ? Long.UZERO : Long.ZERO;\n    let approx, rem, res;\n    if (!this.unsigned) {\n      // This section is only relevant for signed longs and is derived from the\n      // closure library as a whole.\n      if (this.eq(Long.MIN_VALUE)) {\n        if (divisor.eq(Long.ONE) || divisor.eq(Long.NEG_ONE)) return Long.MIN_VALUE;\n        // recall that -MIN_VALUE == MIN_VALUE\n        else if (divisor.eq(Long.MIN_VALUE)) return Long.ONE;\n        else {\n          // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n          const halfThis = this.shr(1);\n          approx = halfThis.div(divisor).shl(1);\n          if (approx.eq(Long.ZERO)) {\n            return divisor.isNegative() ? Long.ONE : Long.NEG_ONE;\n          } else {\n            rem = this.sub(divisor.mul(approx));\n            res = approx.add(rem.div(divisor));\n            return res;\n          }\n        }\n      } else if (divisor.eq(Long.MIN_VALUE)) return this.unsigned ? Long.UZERO : Long.ZERO;\n      if (this.isNegative()) {\n        if (divisor.isNegative()) return this.neg().div(divisor.neg());\n        return this.neg().div(divisor).neg();\n      } else if (divisor.isNegative()) return this.div(divisor.neg()).neg();\n      res = Long.ZERO;\n    } else {\n      // The algorithm below has not been made for unsigned longs. It's therefore\n      // required to take special care of the MSB prior to running it.\n      if (!divisor.unsigned) divisor = divisor.toUnsigned();\n      if (divisor.gt(this)) return Long.UZERO;\n      if (divisor.gt(this.shru(1)))\n        // 15 >>> 1 = 7 ; with divisor = 8 ; true\n        return Long.UONE;\n      res = Long.UZERO;\n    }\n\n    // Repeat the following until the remainder is less than other:  find a\n    // floating-point that approximates remainder / other *from below*, add this\n    // into the result, and subtract it from the remainder.  It is critical that\n    // the approximate value is less than or equal to the real value so that the\n    // remainder never becomes negative.\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    rem = this;\n    while (rem.gte(divisor)) {\n      // Approximate the result of division. This may be a little greater or\n      // smaller than the actual value.\n      approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\n\n      // We will tweak the approximate result by changing it in the 48-th digit or\n      // the smallest non-fractional digit, whichever is larger.\n      const log2 = Math.ceil(Math.log(approx) / Math.LN2);\n      const delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48);\n      // Decrease the approximation until it is smaller than the remainder.  Note\n      // that if it is too large, the product overflows and is negative.\n      let approxRes = Long.fromNumber(approx);\n      let approxRem = approxRes.mul(divisor);\n      while (approxRem.isNegative() || approxRem.gt(rem)) {\n        approx -= delta;\n        approxRes = Long.fromNumber(approx, this.unsigned);\n        approxRem = approxRes.mul(divisor);\n      }\n\n      // We know the answer can't be zero... and actually, zero would cause\n      // infinite recursion since we would make no progress.\n      if (approxRes.isZero()) approxRes = Long.ONE;\n\n      res = res.add(approxRes);\n      rem = rem.sub(approxRem);\n    }\n    return res;\n  }\n\n  /**This is an alias of {@link Long.divide} */\n  div(divisor: string | number | Long | Timestamp): Long {\n    return this.divide(divisor);\n  }\n\n  /**\n   * Tests if this Long's value equals the specified's.\n   * @param other - Other value\n   */\n  equals(other: string | number | Long | Timestamp): boolean {\n    if (!Long.isLong(other)) other = Long.fromValue(other);\n    if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1)\n      return false;\n    return this.high === other.high && this.low === other.low;\n  }\n\n  /** This is an alias of {@link Long.equals} */\n  eq(other: string | number | Long | Timestamp): boolean {\n    return this.equals(other);\n  }\n\n  /** Gets the high 32 bits as a signed integer. */\n  getHighBits(): number {\n    return this.high;\n  }\n\n  /** Gets the high 32 bits as an unsigned integer. */\n  getHighBitsUnsigned(): number {\n    return this.high >>> 0;\n  }\n\n  /** Gets the low 32 bits as a signed integer. */\n  getLowBits(): number {\n    return this.low;\n  }\n\n  /** Gets the low 32 bits as an unsigned integer. */\n  getLowBitsUnsigned(): number {\n    return this.low >>> 0;\n  }\n\n  /** Gets the number of bits needed to represent the absolute value of this Long. */\n  getNumBitsAbs(): number {\n    if (this.isNegative()) {\n      // Unsigned Longs are never negative\n      return this.eq(Long.MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\n    }\n    const val = this.high !== 0 ? this.high : this.low;\n    let bit: number;\n    for (bit = 31; bit > 0; bit--) if ((val & (1 << bit)) !== 0) break;\n    return this.high !== 0 ? bit + 33 : bit + 1;\n  }\n\n  /** Tests if this Long's value is greater than the specified's. */\n  greaterThan(other: string | number | Long | Timestamp): boolean {\n    return this.comp(other) > 0;\n  }\n\n  /** This is an alias of {@link Long.greaterThan} */\n  gt(other: string | number | Long | Timestamp): boolean {\n    return this.greaterThan(other);\n  }\n\n  /** Tests if this Long's value is greater than or equal the specified's. */\n  greaterThanOrEqual(other: string | number | Long | Timestamp): boolean {\n    return this.comp(other) >= 0;\n  }\n\n  /** This is an alias of {@link Long.greaterThanOrEqual} */\n  gte(other: string | number | Long | Timestamp): boolean {\n    return this.greaterThanOrEqual(other);\n  }\n  /** This is an alias of {@link Long.greaterThanOrEqual} */\n  ge(other: string | number | Long | Timestamp): boolean {\n    return this.greaterThanOrEqual(other);\n  }\n\n  /** Tests if this Long's value is even. */\n  isEven(): boolean {\n    return (this.low & 1) === 0;\n  }\n\n  /** Tests if this Long's value is negative. */\n  isNegative(): boolean {\n    return !this.unsigned && this.high < 0;\n  }\n\n  /** Tests if this Long's value is odd. */\n  isOdd(): boolean {\n    return (this.low & 1) === 1;\n  }\n\n  /** Tests if this Long's value is positive. */\n  isPositive(): boolean {\n    return this.unsigned || this.high >= 0;\n  }\n\n  /** Tests if this Long's value equals zero. */\n  isZero(): boolean {\n    return this.high === 0 && this.low === 0;\n  }\n\n  /** Tests if this Long's value is less than the specified's. */\n  lessThan(other: string | number | Long | Timestamp): boolean {\n    return this.comp(other) < 0;\n  }\n\n  /** This is an alias of {@link Long#lessThan}. */\n  lt(other: string | number | Long | Timestamp): boolean {\n    return this.lessThan(other);\n  }\n\n  /** Tests if this Long's value is less than or equal the specified's. */\n  lessThanOrEqual(other: string | number | Long | Timestamp): boolean {\n    return this.comp(other) <= 0;\n  }\n\n  /** This is an alias of {@link Long.lessThanOrEqual} */\n  lte(other: string | number | Long | Timestamp): boolean {\n    return this.lessThanOrEqual(other);\n  }\n\n  /** Returns this Long modulo the specified. */\n  modulo(divisor: string | number | Long | Timestamp): Long {\n    if (!Long.isLong(divisor)) divisor = Long.fromValue(divisor);\n\n    // use wasm support if present\n    if (wasm) {\n      const low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(\n        this.low,\n        this.high,\n        divisor.low,\n        divisor.high\n      );\n      return Long.fromBits(low, wasm.get_high(), this.unsigned);\n    }\n\n    return this.sub(this.div(divisor).mul(divisor));\n  }\n\n  /** This is an alias of {@link Long.modulo} */\n  mod(divisor: string | number | Long | Timestamp): Long {\n    return this.modulo(divisor);\n  }\n  /** This is an alias of {@link Long.modulo} */\n  rem(divisor: string | number | Long | Timestamp): Long {\n    return this.modulo(divisor);\n  }\n\n  /**\n   * Returns the product of this and the specified Long.\n   * @param multiplier - Multiplier\n   * @returns Product\n   */\n  multiply(multiplier: string | number | Long | Timestamp): Long {\n    if (this.isZero()) return Long.ZERO;\n    if (!Long.isLong(multiplier)) multiplier = Long.fromValue(multiplier);\n\n    // use wasm support if present\n    if (wasm) {\n      const low = wasm.mul(this.low, this.high, multiplier.low, multiplier.high);\n      return Long.fromBits(low, wasm.get_high(), this.unsigned);\n    }\n\n    if (multiplier.isZero()) return Long.ZERO;\n    if (this.eq(Long.MIN_VALUE)) return multiplier.isOdd() ? Long.MIN_VALUE : Long.ZERO;\n    if (multiplier.eq(Long.MIN_VALUE)) return this.isOdd() ? Long.MIN_VALUE : Long.ZERO;\n\n    if (this.isNegative()) {\n      if (multiplier.isNegative()) return this.neg().mul(multiplier.neg());\n      else return this.neg().mul(multiplier).neg();\n    } else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg();\n\n    // If both longs are small, use float multiplication\n    if (this.lt(Long.TWO_PWR_24) && multiplier.lt(Long.TWO_PWR_24))\n      return Long.fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\n\n    // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n    // We can skip products that would overflow.\n\n    const a48 = this.high >>> 16;\n    const a32 = this.high & 0xffff;\n    const a16 = this.low >>> 16;\n    const a00 = this.low & 0xffff;\n\n    const b48 = multiplier.high >>> 16;\n    const b32 = multiplier.high & 0xffff;\n    const b16 = multiplier.low >>> 16;\n    const b00 = multiplier.low & 0xffff;\n\n    let c48 = 0,\n      c32 = 0,\n      c16 = 0,\n      c00 = 0;\n    c00 += a00 * b00;\n    c16 += c00 >>> 16;\n    c00 &= 0xffff;\n    c16 += a16 * b00;\n    c32 += c16 >>> 16;\n    c16 &= 0xffff;\n    c16 += a00 * b16;\n    c32 += c16 >>> 16;\n    c16 &= 0xffff;\n    c32 += a32 * b00;\n    c48 += c32 >>> 16;\n    c32 &= 0xffff;\n    c32 += a16 * b16;\n    c48 += c32 >>> 16;\n    c32 &= 0xffff;\n    c32 += a00 * b32;\n    c48 += c32 >>> 16;\n    c32 &= 0xffff;\n    c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n    c48 &= 0xffff;\n    return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n  }\n\n  /** This is an alias of {@link Long.multiply} */\n  mul(multiplier: string | number | Long | Timestamp): Long {\n    return this.multiply(multiplier);\n  }\n\n  /** Returns the Negation of this Long's value. */\n  negate(): Long {\n    if (!this.unsigned && this.eq(Long.MIN_VALUE)) return Long.MIN_VALUE;\n    return this.not().add(Long.ONE);\n  }\n\n  /** This is an alias of {@link Long.negate} */\n  neg(): Long {\n    return this.negate();\n  }\n\n  /** Returns the bitwise NOT of this Long. */\n  not(): Long {\n    return Long.fromBits(~this.low, ~this.high, this.unsigned);\n  }\n\n  /** Tests if this Long's value differs from the specified's. */\n  notEquals(other: string | number | Long | Timestamp): boolean {\n    return !this.equals(other);\n  }\n\n  /** This is an alias of {@link Long.notEquals} */\n  neq(other: string | number | Long | Timestamp): boolean {\n    return this.notEquals(other);\n  }\n  /** This is an alias of {@link Long.notEquals} */\n  ne(other: string | number | Long | Timestamp): boolean {\n    return this.notEquals(other);\n  }\n\n  /**\n   * Returns the bitwise OR of this Long and the specified.\n   */\n  or(other: number | string | Long): Long {\n    if (!Long.isLong(other)) other = Long.fromValue(other);\n    return Long.fromBits(this.low | other.low, this.high | other.high, this.unsigned);\n  }\n\n  /**\n   * Returns this Long with bits shifted to the left by the given amount.\n   * @param numBits - Number of bits\n   * @returns Shifted Long\n   */\n  shiftLeft(numBits: number | Long): Long {\n    if (Long.isLong(numBits)) numBits = numBits.toInt();\n    if ((numBits &= 63) === 0) return this;\n    else if (numBits < 32)\n      return Long.fromBits(\n        this.low << numBits,\n        (this.high << numBits) | (this.low >>> (32 - numBits)),\n        this.unsigned\n      );\n    else return Long.fromBits(0, this.low << (numBits - 32), this.unsigned);\n  }\n\n  /** This is an alias of {@link Long.shiftLeft} */\n  shl(numBits: number | Long): Long {\n    return this.shiftLeft(numBits);\n  }\n\n  /**\n   * Returns this Long with bits arithmetically shifted to the right by the given amount.\n   * @param numBits - Number of bits\n   * @returns Shifted Long\n   */\n  shiftRight(numBits: number | Long): Long {\n    if (Long.isLong(numBits)) numBits = numBits.toInt();\n    if ((numBits &= 63) === 0) return this;\n    else if (numBits < 32)\n      return Long.fromBits(\n        (this.low >>> numBits) | (this.high << (32 - numBits)),\n        this.high >> numBits,\n        this.unsigned\n      );\n    else return Long.fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\n  }\n\n  /** This is an alias of {@link Long.shiftRight} */\n  shr(numBits: number | Long): Long {\n    return this.shiftRight(numBits);\n  }\n\n  /**\n   * Returns this Long with bits logically shifted to the right by the given amount.\n   * @param numBits - Number of bits\n   * @returns Shifted Long\n   */\n  shiftRightUnsigned(numBits: Long | number): Long {\n    if (Long.isLong(numBits)) numBits = numBits.toInt();\n    numBits &= 63;\n    if (numBits === 0) return this;\n    else {\n      const high = this.high;\n      if (numBits < 32) {\n        const low = this.low;\n        return Long.fromBits(\n          (low >>> numBits) | (high << (32 - numBits)),\n          high >>> numBits,\n          this.unsigned\n        );\n      } else if (numBits === 32) return Long.fromBits(high, 0, this.unsigned);\n      else return Long.fromBits(high >>> (numBits - 32), 0, this.unsigned);\n    }\n  }\n\n  /** This is an alias of {@link Long.shiftRightUnsigned} */\n  shr_u(numBits: number | Long): Long {\n    return this.shiftRightUnsigned(numBits);\n  }\n  /** This is an alias of {@link Long.shiftRightUnsigned} */\n  shru(numBits: number | Long): Long {\n    return this.shiftRightUnsigned(numBits);\n  }\n\n  /**\n   * Returns the difference of this and the specified Long.\n   * @param subtrahend - Subtrahend\n   * @returns Difference\n   */\n  subtract(subtrahend: string | number | Long | Timestamp): Long {\n    if (!Long.isLong(subtrahend)) subtrahend = Long.fromValue(subtrahend);\n    return this.add(subtrahend.neg());\n  }\n\n  /** This is an alias of {@link Long.subtract} */\n  sub(subtrahend: string | number | Long | Timestamp): Long {\n    return this.subtract(subtrahend);\n  }\n\n  /** Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. */\n  toInt(): number {\n    return this.unsigned ? this.low >>> 0 : this.low;\n  }\n\n  /** Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). */\n  toNumber(): number {\n    if (this.unsigned) return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);\n    return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\n  }\n\n  /** Converts the Long to a BigInt (arbitrary precision). */\n  toBigInt(): bigint {\n    // eslint-disable-next-line no-restricted-globals -- This is allowed here as it is explicitly requesting a bigint\n    return BigInt(this.toString());\n  }\n\n  /**\n   * Converts this Long to its byte representation.\n   * @param le - Whether little or big endian, defaults to big endian\n   * @returns Byte representation\n   */\n  toBytes(le?: boolean): number[] {\n    return le ? this.toBytesLE() : this.toBytesBE();\n  }\n\n  /**\n   * Converts this Long to its little endian byte representation.\n   * @returns Little endian byte representation\n   */\n  toBytesLE(): number[] {\n    const hi = this.high,\n      lo = this.low;\n    return [\n      lo & 0xff,\n      (lo >>> 8) & 0xff,\n      (lo >>> 16) & 0xff,\n      lo >>> 24,\n      hi & 0xff,\n      (hi >>> 8) & 0xff,\n      (hi >>> 16) & 0xff,\n      hi >>> 24\n    ];\n  }\n\n  /**\n   * Converts this Long to its big endian byte representation.\n   * @returns Big endian byte representation\n   */\n  toBytesBE(): number[] {\n    const hi = this.high,\n      lo = this.low;\n    return [\n      hi >>> 24,\n      (hi >>> 16) & 0xff,\n      (hi >>> 8) & 0xff,\n      hi & 0xff,\n      lo >>> 24,\n      (lo >>> 16) & 0xff,\n      (lo >>> 8) & 0xff,\n      lo & 0xff\n    ];\n  }\n\n  /**\n   * Converts this Long to signed.\n   */\n  toSigned(): Long {\n    if (!this.unsigned) return this;\n    return Long.fromBits(this.low, this.high, false);\n  }\n\n  /**\n   * Converts the Long to a string written in the specified radix.\n   * @param radix - Radix (2-36), defaults to 10\n   * @throws RangeError If `radix` is out of range\n   */\n  toString(radix?: number): string {\n    radix = radix || 10;\n    if (radix < 2 || 36 < radix) throw new BSONError('radix');\n    if (this.isZero()) return '0';\n    if (this.isNegative()) {\n      // Unsigned Longs are never negative\n      if (this.eq(Long.MIN_VALUE)) {\n        // We need to change the Long value before it can be negated, so we remove\n        // the bottom-most digit in this base and then recurse to do the rest.\n        const radixLong = Long.fromNumber(radix),\n          div = this.div(radixLong),\n          rem1 = div.mul(radixLong).sub(this);\n        return div.toString(radix) + rem1.toInt().toString(radix);\n      } else return '-' + this.neg().toString(radix);\n    }\n\n    // Do several (6) digits each time through the loop, so as to\n    // minimize the calls to the very expensive emulated div.\n    const radixToPower = Long.fromNumber(Math.pow(radix, 6), this.unsigned);\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    let rem: Long = this;\n    let result = '';\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n      const remDiv = rem.div(radixToPower);\n      const intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0;\n      let digits = intval.toString(radix);\n      rem = remDiv;\n      if (rem.isZero()) {\n        return digits + result;\n      } else {\n        while (digits.length < 6) digits = '0' + digits;\n        result = '' + digits + result;\n      }\n    }\n  }\n\n  /** Converts this Long to unsigned. */\n  toUnsigned(): Long {\n    if (this.unsigned) return this;\n    return Long.fromBits(this.low, this.high, true);\n  }\n\n  /** Returns the bitwise XOR of this Long and the given one. */\n  xor(other: Long | number | string): Long {\n    if (!Long.isLong(other)) other = Long.fromValue(other);\n    return Long.fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\n  }\n\n  /** This is an alias of {@link Long.isZero} */\n  eqz(): boolean {\n    return this.isZero();\n  }\n\n  /** This is an alias of {@link Long.lessThanOrEqual} */\n  le(other: string | number | Long | Timestamp): boolean {\n    return this.lessThanOrEqual(other);\n  }\n\n  /*\n   ****************************************************************\n   *                  BSON SPECIFIC ADDITIONS                     *\n   ****************************************************************\n   */\n  toExtendedJSON(options?: EJSONOptions): number | LongExtended {\n    if (options && options.relaxed) return this.toNumber();\n    return { $numberLong: this.toString() };\n  }\n  static fromExtendedJSON(\n    doc: { $numberLong: string },\n    options?: EJSONOptions\n  ): number | Long | bigint {\n    const { useBigInt64 = false, relaxed = true } = { ...options };\n\n    if (doc.$numberLong.length > MAX_INT64_STRING_LENGTH) {\n      throw new BSONError('$numberLong string is too long');\n    }\n\n    if (!DECIMAL_REG_EX.test(doc.$numberLong)) {\n      throw new BSONError(`$numberLong string \"${doc.$numberLong}\" is in an invalid format`);\n    }\n\n    if (useBigInt64) {\n      /* eslint-disable no-restricted-globals -- Can use BigInt here as useBigInt64=true */\n      const bigIntResult = BigInt(doc.$numberLong);\n      return BigInt.asIntN(64, bigIntResult);\n      /* eslint-enable */\n    }\n\n    const longResult = Long.fromString(doc.$numberLong);\n    if (relaxed) {\n      return longResult.toNumber();\n    }\n    return longResult;\n  }\n\n  /** @internal */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    return `new Long(\"${this.toString()}\"${this.unsigned ? ', true' : ''})`;\n  }\n}\n", "import { BSONValue } from './bson_value';\nimport { BSONError } from './error';\nimport { Long } from './long';\nimport { isUint8Array } from './parser/utils';\nimport { ByteUtils } from './utils/byte_utils';\n\nconst PARSE_STRING_REGEXP = /^(\\+|-)?(\\d+|(\\d*\\.\\d*))?(E|e)?([-+])?(\\d+)?$/;\nconst PARSE_INF_REGEXP = /^(\\+|-)?(Infinity|inf)$/i;\nconst PARSE_NAN_REGEXP = /^(\\+|-)?NaN$/i;\n\nconst EXPONENT_MAX = 6111;\nconst EXPONENT_MIN = -6176;\nconst EXPONENT_BIAS = 6176;\nconst MAX_DIGITS = 34;\n\n// Nan value bits as 32 bit values (due to lack of longs)\nconst NAN_BUFFER = ByteUtils.fromNumberArray(\n  [\n    0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\n  ].reverse()\n);\n// Infinity value bits 32 bit values (due to lack of longs)\nconst INF_NEGATIVE_BUFFER = ByteUtils.fromNumberArray(\n  [\n    0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\n  ].reverse()\n);\nconst INF_POSITIVE_BUFFER = ByteUtils.fromNumberArray(\n  [\n    0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\n  ].reverse()\n);\n\nconst EXPONENT_REGEX = /^([-+])?(\\d+)?$/;\n\n// Extract least significant 5 bits\nconst COMBINATION_MASK = 0x1f;\n// Extract least significant 14 bits\nconst EXPONENT_MASK = 0x3fff;\n// Value of combination field for Inf\nconst COMBINATION_INFINITY = 30;\n// Value of combination field for NaN\nconst COMBINATION_NAN = 31;\n\n// Detect if the value is a digit\nfunction isDigit(value: string): boolean {\n  return !isNaN(parseInt(value, 10));\n}\n\n// Divide two uint128 values\nfunction divideu128(value: { parts: [number, number, number, number] }) {\n  const DIVISOR = Long.fromNumber(1000 * 1000 * 1000);\n  let _rem = Long.fromNumber(0);\n\n  if (!value.parts[0] && !value.parts[1] && !value.parts[2] && !value.parts[3]) {\n    return { quotient: value, rem: _rem };\n  }\n\n  for (let i = 0; i <= 3; i++) {\n    // Adjust remainder to match value of next dividend\n    _rem = _rem.shiftLeft(32);\n    // Add the divided to _rem\n    _rem = _rem.add(new Long(value.parts[i], 0));\n    value.parts[i] = _rem.div(DIVISOR).low;\n    _rem = _rem.modulo(DIVISOR);\n  }\n\n  return { quotient: value, rem: _rem };\n}\n\n// Multiply two Long values and return the 128 bit value\nfunction multiply64x2(left: Long, right: Long): { high: Long; low: Long } {\n  if (!left && !right) {\n    return { high: Long.fromNumber(0), low: Long.fromNumber(0) };\n  }\n\n  const leftHigh = left.shiftRightUnsigned(32);\n  const leftLow = new Long(left.getLowBits(), 0);\n  const rightHigh = right.shiftRightUnsigned(32);\n  const rightLow = new Long(right.getLowBits(), 0);\n\n  let productHigh = leftHigh.multiply(rightHigh);\n  let productMid = leftHigh.multiply(rightLow);\n  const productMid2 = leftLow.multiply(rightHigh);\n  let productLow = leftLow.multiply(rightLow);\n\n  productHigh = productHigh.add(productMid.shiftRightUnsigned(32));\n  productMid = new Long(productMid.getLowBits(), 0)\n    .add(productMid2)\n    .add(productLow.shiftRightUnsigned(32));\n\n  productHigh = productHigh.add(productMid.shiftRightUnsigned(32));\n  productLow = productMid.shiftLeft(32).add(new Long(productLow.getLowBits(), 0));\n\n  // Return the 128 bit result\n  return { high: productHigh, low: productLow };\n}\n\nfunction lessThan(left: Long, right: Long): boolean {\n  // Make values unsigned\n  const uhleft = left.high >>> 0;\n  const uhright = right.high >>> 0;\n\n  // Compare high bits first\n  if (uhleft < uhright) {\n    return true;\n  } else if (uhleft === uhright) {\n    const ulleft = left.low >>> 0;\n    const ulright = right.low >>> 0;\n    if (ulleft < ulright) return true;\n  }\n\n  return false;\n}\n\nfunction invalidErr(string: string, message: string) {\n  throw new BSONError(`\"${string}\" is not a valid Decimal128 string - ${message}`);\n}\n\n/** @public */\nexport interface Decimal128Extended {\n  $numberDecimal: string;\n}\n\n/**\n * A class representation of the BSON Decimal128 type.\n * @public\n * @category BSONType\n */\nexport class Decimal128 extends BSONValue {\n  get _bsontype(): 'Decimal128' {\n    return 'Decimal128';\n  }\n\n  readonly bytes!: Uint8Array;\n\n  /**\n   * @param bytes - a buffer containing the raw Decimal128 bytes in little endian order,\n   *                or a string representation as returned by .toString()\n   */\n  constructor(bytes: Uint8Array | string) {\n    super();\n    if (typeof bytes === 'string') {\n      this.bytes = Decimal128.fromString(bytes).bytes;\n    } else if (isUint8Array(bytes)) {\n      if (bytes.byteLength !== 16) {\n        throw new BSONError('Decimal128 must take a Buffer of 16 bytes');\n      }\n      this.bytes = bytes;\n    } else {\n      throw new BSONError('Decimal128 must take a Buffer or string');\n    }\n  }\n\n  /**\n   * Create a Decimal128 instance from a string representation\n   *\n   * @param representation - a numeric string representation.\n   */\n  static fromString(representation: string): Decimal128 {\n    return Decimal128._fromString(representation, { allowRounding: false });\n  }\n\n  /**\n   * Create a Decimal128 instance from a string representation, allowing for rounding to 34\n   * significant digits\n   *\n   * @example Example of a number that will be rounded\n   * ```ts\n   * > let d = Decimal128.fromString('37.499999999999999196428571428571375')\n   * Uncaught:\n   * BSONError: \"37.499999999999999196428571428571375\" is not a valid Decimal128 string - inexact rounding\n   * at invalidErr (/home/wajames/js-bson/lib/bson.cjs:1402:11)\n   * at Decimal128.fromStringInternal (/home/wajames/js-bson/lib/bson.cjs:1633:25)\n   * at Decimal128.fromString (/home/wajames/js-bson/lib/bson.cjs:1424:27)\n   *\n   * > d = Decimal128.fromStringWithRounding('37.499999999999999196428571428571375')\n   * new Decimal128(\"37.49999999999999919642857142857138\")\n   * ```\n   * @param representation - a numeric string representation.\n   */\n  static fromStringWithRounding(representation: string): Decimal128 {\n    return Decimal128._fromString(representation, { allowRounding: true });\n  }\n\n  private static _fromString(representation: string, options: { allowRounding: boolean }) {\n    // Parse state tracking\n    let isNegative = false;\n    let sawSign = false;\n    let sawRadix = false;\n    let foundNonZero = false;\n\n    // Total number of significant digits (no leading or trailing zero)\n    let significantDigits = 0;\n    // Total number of significand digits read\n    let nDigitsRead = 0;\n    // Total number of digits (no leading zeros)\n    let nDigits = 0;\n    // The number of the digits after radix\n    let radixPosition = 0;\n    // The index of the first non-zero in *str*\n    let firstNonZero = 0;\n\n    // Digits Array\n    const digits = [0];\n    // The number of digits in digits\n    let nDigitsStored = 0;\n    // Insertion pointer for digits\n    let digitsInsert = 0;\n    // The index of the last digit\n    let lastDigit = 0;\n\n    // Exponent\n    let exponent = 0;\n    // The high 17 digits of the significand\n    let significandHigh = new Long(0, 0);\n    // The low 17 digits of the significand\n    let significandLow = new Long(0, 0);\n    // The biased exponent\n    let biasedExponent = 0;\n\n    // Read index\n    let index = 0;\n\n    // Naively prevent against REDOS attacks.\n    // TODO: implementing a custom parsing for this, or refactoring the regex would yield\n    //       further gains.\n    if (representation.length >= 7000) {\n      throw new BSONError('' + representation + ' not a valid Decimal128 string');\n    }\n\n    // Results\n    const stringMatch = representation.match(PARSE_STRING_REGEXP);\n    const infMatch = representation.match(PARSE_INF_REGEXP);\n    const nanMatch = representation.match(PARSE_NAN_REGEXP);\n\n    // Validate the string\n    if ((!stringMatch && !infMatch && !nanMatch) || representation.length === 0) {\n      throw new BSONError('' + representation + ' not a valid Decimal128 string');\n    }\n\n    if (stringMatch) {\n      // full_match = stringMatch[0]\n      // sign = stringMatch[1]\n\n      const unsignedNumber = stringMatch[2];\n      // stringMatch[3] is undefined if a whole number (ex \"1\", 12\")\n      // but defined if a number w/ decimal in it (ex \"1.0, 12.2\")\n\n      const e = stringMatch[4];\n      const expSign = stringMatch[5];\n      const expNumber = stringMatch[6];\n\n      // they provided e, but didn't give an exponent number. for ex \"1e\"\n      if (e && expNumber === undefined) invalidErr(representation, 'missing exponent power');\n\n      // they provided e, but didn't give a number before it. for ex \"e1\"\n      if (e && unsignedNumber === undefined) invalidErr(representation, 'missing exponent base');\n\n      if (e === undefined && (expSign || expNumber)) {\n        invalidErr(representation, 'missing e before exponent');\n      }\n    }\n\n    // Get the negative or positive sign\n    if (representation[index] === '+' || representation[index] === '-') {\n      sawSign = true;\n      isNegative = representation[index++] === '-';\n    }\n\n    // Check if user passed Infinity or NaN\n    if (!isDigit(representation[index]) && representation[index] !== '.') {\n      if (representation[index] === 'i' || representation[index] === 'I') {\n        return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);\n      } else if (representation[index] === 'N') {\n        return new Decimal128(NAN_BUFFER);\n      }\n    }\n\n    // Read all the digits\n    while (isDigit(representation[index]) || representation[index] === '.') {\n      if (representation[index] === '.') {\n        if (sawRadix) invalidErr(representation, 'contains multiple periods');\n\n        sawRadix = true;\n        index = index + 1;\n        continue;\n      }\n\n      if (nDigitsStored < MAX_DIGITS) {\n        if (representation[index] !== '0' || foundNonZero) {\n          if (!foundNonZero) {\n            firstNonZero = nDigitsRead;\n          }\n\n          foundNonZero = true;\n\n          // Only store 34 digits\n          digits[digitsInsert++] = parseInt(representation[index], 10);\n          nDigitsStored = nDigitsStored + 1;\n        }\n      }\n\n      if (foundNonZero) nDigits = nDigits + 1;\n      if (sawRadix) radixPosition = radixPosition + 1;\n\n      nDigitsRead = nDigitsRead + 1;\n      index = index + 1;\n    }\n\n    if (sawRadix && !nDigitsRead)\n      throw new BSONError('' + representation + ' not a valid Decimal128 string');\n\n    // Read exponent if exists\n    if (representation[index] === 'e' || representation[index] === 'E') {\n      // Read exponent digits\n      const match = representation.substr(++index).match(EXPONENT_REGEX);\n\n      // No digits read\n      if (!match || !match[2]) return new Decimal128(NAN_BUFFER);\n\n      // Get exponent\n      exponent = parseInt(match[0], 10);\n\n      // Adjust the index\n      index = index + match[0].length;\n    }\n\n    // Return not a number\n    if (representation[index]) return new Decimal128(NAN_BUFFER);\n\n    // Done reading input\n    // Find first non-zero digit in digits\n    if (!nDigitsStored) {\n      digits[0] = 0;\n      nDigits = 1;\n      nDigitsStored = 1;\n      significantDigits = 0;\n    } else {\n      lastDigit = nDigitsStored - 1;\n      significantDigits = nDigits;\n      if (significantDigits !== 1) {\n        while (\n          representation[\n            firstNonZero + significantDigits - 1 + Number(sawSign) + Number(sawRadix)\n          ] === '0'\n        ) {\n          significantDigits = significantDigits - 1;\n        }\n      }\n    }\n\n    // Normalization of exponent\n    // Correct exponent based on radix position, and shift significand as needed\n    // to represent user input\n\n    // Overflow prevention\n    if (exponent <= radixPosition && radixPosition > exponent + (1 << 14)) {\n      exponent = EXPONENT_MIN;\n    } else {\n      exponent = exponent - radixPosition;\n    }\n\n    // Attempt to normalize the exponent\n    while (exponent > EXPONENT_MAX) {\n      // Shift exponent to significand and decrease\n      lastDigit = lastDigit + 1;\n      if (lastDigit >= MAX_DIGITS) {\n        // Check if we have a zero then just hard clamp, otherwise fail\n        if (significantDigits === 0) {\n          exponent = EXPONENT_MAX;\n          break;\n        }\n\n        invalidErr(representation, 'overflow');\n      }\n      exponent = exponent - 1;\n    }\n\n    if (options.allowRounding) {\n      while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {\n        // Shift last digit. can only do this if < significant digits than # stored.\n        if (lastDigit === 0 && significantDigits < nDigitsStored) {\n          exponent = EXPONENT_MIN;\n          significantDigits = 0;\n          break;\n        }\n\n        if (nDigitsStored < nDigits) {\n          // adjust to match digits not stored\n          nDigits = nDigits - 1;\n        } else {\n          // adjust to round\n          lastDigit = lastDigit - 1;\n        }\n\n        if (exponent < EXPONENT_MAX) {\n          exponent = exponent + 1;\n        } else {\n          // Check if we have a zero then just hard clamp, otherwise fail\n          const digitsString = digits.join('');\n          if (digitsString.match(/^0+$/)) {\n            exponent = EXPONENT_MAX;\n            break;\n          }\n          invalidErr(representation, 'overflow');\n        }\n      }\n\n      // Round\n      // We've normalized the exponent, but might still need to round.\n      if (lastDigit + 1 < significantDigits) {\n        let endOfString = nDigitsRead;\n\n        // If we have seen a radix point, 'string' is 1 longer than we have\n        // documented with ndigits_read, so inc the position of the first nonzero\n        // digit and the position that digits are read to.\n        if (sawRadix) {\n          firstNonZero = firstNonZero + 1;\n          endOfString = endOfString + 1;\n        }\n        // if negative, we need to increment again to account for - sign at start.\n        if (sawSign) {\n          firstNonZero = firstNonZero + 1;\n          endOfString = endOfString + 1;\n        }\n\n        const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);\n        let roundBit = 0;\n\n        if (roundDigit >= 5) {\n          roundBit = 1;\n          if (roundDigit === 5) {\n            roundBit = digits[lastDigit] % 2 === 1 ? 1 : 0;\n            for (let i = firstNonZero + lastDigit + 2; i < endOfString; i++) {\n              if (parseInt(representation[i], 10)) {\n                roundBit = 1;\n                break;\n              }\n            }\n          }\n        }\n\n        if (roundBit) {\n          let dIdx = lastDigit;\n\n          for (; dIdx >= 0; dIdx--) {\n            if (++digits[dIdx] > 9) {\n              digits[dIdx] = 0;\n\n              // overflowed most significant digit\n              if (dIdx === 0) {\n                if (exponent < EXPONENT_MAX) {\n                  exponent = exponent + 1;\n                  digits[dIdx] = 1;\n                } else {\n                  return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);\n                }\n              }\n            } else {\n              break;\n            }\n          }\n        }\n      }\n    } else {\n      while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {\n        // Shift last digit. can only do this if < significant digits than # stored.\n        if (lastDigit === 0) {\n          if (significantDigits === 0) {\n            exponent = EXPONENT_MIN;\n            break;\n          }\n\n          invalidErr(representation, 'exponent underflow');\n        }\n\n        if (nDigitsStored < nDigits) {\n          if (\n            representation[nDigits - 1 + Number(sawSign) + Number(sawRadix)] !== '0' &&\n            significantDigits !== 0\n          ) {\n            invalidErr(representation, 'inexact rounding');\n          }\n          // adjust to match digits not stored\n          nDigits = nDigits - 1;\n        } else {\n          if (digits[lastDigit] !== 0) {\n            invalidErr(representation, 'inexact rounding');\n          }\n          // adjust to round\n          lastDigit = lastDigit - 1;\n        }\n\n        if (exponent < EXPONENT_MAX) {\n          exponent = exponent + 1;\n        } else {\n          invalidErr(representation, 'overflow');\n        }\n      }\n\n      // Round\n      // We've normalized the exponent, but might still need to round.\n      if (lastDigit + 1 < significantDigits) {\n        // If we have seen a radix point, 'string' is 1 longer than we have\n        // documented with ndigits_read, so inc the position of the first nonzero\n        // digit and the position that digits are read to.\n        if (sawRadix) {\n          firstNonZero = firstNonZero + 1;\n        }\n        // if saw sign, we need to increment again to account for - or + sign at start.\n        if (sawSign) {\n          firstNonZero = firstNonZero + 1;\n        }\n\n        const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);\n\n        if (roundDigit !== 0) {\n          invalidErr(representation, 'inexact rounding');\n        }\n      }\n    }\n\n    // Encode significand\n    // The high 17 digits of the significand\n    significandHigh = Long.fromNumber(0);\n    // The low 17 digits of the significand\n    significandLow = Long.fromNumber(0);\n\n    // read a zero\n    if (significantDigits === 0) {\n      significandHigh = Long.fromNumber(0);\n      significandLow = Long.fromNumber(0);\n    } else if (lastDigit < 17) {\n      let dIdx = 0;\n      significandLow = Long.fromNumber(digits[dIdx++]);\n      significandHigh = new Long(0, 0);\n\n      for (; dIdx <= lastDigit; dIdx++) {\n        significandLow = significandLow.multiply(Long.fromNumber(10));\n        significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));\n      }\n    } else {\n      let dIdx = 0;\n      significandHigh = Long.fromNumber(digits[dIdx++]);\n\n      for (; dIdx <= lastDigit - 17; dIdx++) {\n        significandHigh = significandHigh.multiply(Long.fromNumber(10));\n        significandHigh = significandHigh.add(Long.fromNumber(digits[dIdx]));\n      }\n\n      significandLow = Long.fromNumber(digits[dIdx++]);\n\n      for (; dIdx <= lastDigit; dIdx++) {\n        significandLow = significandLow.multiply(Long.fromNumber(10));\n        significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));\n      }\n    }\n\n    const significand = multiply64x2(significandHigh, Long.fromString('100000000000000000'));\n    significand.low = significand.low.add(significandLow);\n\n    if (lessThan(significand.low, significandLow)) {\n      significand.high = significand.high.add(Long.fromNumber(1));\n    }\n\n    // Biased exponent\n    biasedExponent = exponent + EXPONENT_BIAS;\n    const dec = { low: Long.fromNumber(0), high: Long.fromNumber(0) };\n\n    // Encode combination, exponent, and significand.\n    if (\n      significand.high.shiftRightUnsigned(49).and(Long.fromNumber(1)).equals(Long.fromNumber(1))\n    ) {\n      // Encode '11' into bits 1 to 3\n      dec.high = dec.high.or(Long.fromNumber(0x3).shiftLeft(61));\n      dec.high = dec.high.or(\n        Long.fromNumber(biasedExponent).and(Long.fromNumber(0x3fff).shiftLeft(47))\n      );\n      dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x7fffffffffff)));\n    } else {\n      dec.high = dec.high.or(Long.fromNumber(biasedExponent & 0x3fff).shiftLeft(49));\n      dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x1ffffffffffff)));\n    }\n\n    dec.low = significand.low;\n\n    // Encode sign\n    if (isNegative) {\n      dec.high = dec.high.or(Long.fromString('9223372036854775808'));\n    }\n\n    // Encode into a buffer\n    const buffer = ByteUtils.allocate(16);\n    index = 0;\n\n    // Encode the low 64 bits of the decimal\n    // Encode low bits\n    buffer[index++] = dec.low.low & 0xff;\n    buffer[index++] = (dec.low.low >> 8) & 0xff;\n    buffer[index++] = (dec.low.low >> 16) & 0xff;\n    buffer[index++] = (dec.low.low >> 24) & 0xff;\n    // Encode high bits\n    buffer[index++] = dec.low.high & 0xff;\n    buffer[index++] = (dec.low.high >> 8) & 0xff;\n    buffer[index++] = (dec.low.high >> 16) & 0xff;\n    buffer[index++] = (dec.low.high >> 24) & 0xff;\n\n    // Encode the high 64 bits of the decimal\n    // Encode low bits\n    buffer[index++] = dec.high.low & 0xff;\n    buffer[index++] = (dec.high.low >> 8) & 0xff;\n    buffer[index++] = (dec.high.low >> 16) & 0xff;\n    buffer[index++] = (dec.high.low >> 24) & 0xff;\n    // Encode high bits\n    buffer[index++] = dec.high.high & 0xff;\n    buffer[index++] = (dec.high.high >> 8) & 0xff;\n    buffer[index++] = (dec.high.high >> 16) & 0xff;\n    buffer[index++] = (dec.high.high >> 24) & 0xff;\n\n    // Return the new Decimal128\n    return new Decimal128(buffer);\n  }\n  /** Create a string representation of the raw Decimal128 value */\n  toString(): string {\n    // Note: bits in this routine are referred to starting at 0,\n    // from the sign bit, towards the coefficient.\n\n    // decoded biased exponent (14 bits)\n    let biased_exponent;\n    // the number of significand digits\n    let significand_digits = 0;\n    // the base-10 digits in the significand\n    const significand = new Array<number>(36);\n    for (let i = 0; i < significand.length; i++) significand[i] = 0;\n    // read pointer into significand\n    let index = 0;\n\n    // true if the number is zero\n    let is_zero = false;\n\n    // the most significant significand bits (50-46)\n    let significand_msb;\n    // temporary storage for significand decoding\n    let significand128: { parts: [number, number, number, number] } = { parts: [0, 0, 0, 0] };\n    // indexing variables\n    let j, k;\n\n    // Output string\n    const string: string[] = [];\n\n    // Unpack index\n    index = 0;\n\n    // Buffer reference\n    const buffer = this.bytes;\n\n    // Unpack the low 64bits into a long\n    // bits 96 - 127\n    const low =\n      buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);\n    // bits 64 - 95\n    const midl =\n      buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);\n\n    // Unpack the high 64bits into a long\n    // bits 32 - 63\n    const midh =\n      buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);\n    // bits 0 - 31\n    const high =\n      buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);\n\n    // Unpack index\n    index = 0;\n\n    // Create the state of the decimal\n    const dec = {\n      low: new Long(low, midl),\n      high: new Long(midh, high)\n    };\n\n    if (dec.high.lessThan(Long.ZERO)) {\n      string.push('-');\n    }\n\n    // Decode combination field and exponent\n    // bits 1 - 5\n    const combination = (high >> 26) & COMBINATION_MASK;\n\n    if (combination >> 3 === 3) {\n      // Check for 'special' values\n      if (combination === COMBINATION_INFINITY) {\n        return string.join('') + 'Infinity';\n      } else if (combination === COMBINATION_NAN) {\n        return 'NaN';\n      } else {\n        biased_exponent = (high >> 15) & EXPONENT_MASK;\n        significand_msb = 0x08 + ((high >> 14) & 0x01);\n      }\n    } else {\n      significand_msb = (high >> 14) & 0x07;\n      biased_exponent = (high >> 17) & EXPONENT_MASK;\n    }\n\n    // unbiased exponent\n    const exponent = biased_exponent - EXPONENT_BIAS;\n\n    // Create string of significand digits\n\n    // Convert the 114-bit binary number represented by\n    // (significand_high, significand_low) to at most 34 decimal\n    // digits through modulo and division.\n    significand128.parts[0] = (high & 0x3fff) + ((significand_msb & 0xf) << 14);\n    significand128.parts[1] = midh;\n    significand128.parts[2] = midl;\n    significand128.parts[3] = low;\n\n    if (\n      significand128.parts[0] === 0 &&\n      significand128.parts[1] === 0 &&\n      significand128.parts[2] === 0 &&\n      significand128.parts[3] === 0\n    ) {\n      is_zero = true;\n    } else {\n      for (k = 3; k >= 0; k--) {\n        let least_digits = 0;\n        // Perform the divide\n        const result = divideu128(significand128);\n        significand128 = result.quotient;\n        least_digits = result.rem.low;\n\n        // We now have the 9 least significant digits (in base 2).\n        // Convert and output to string.\n        if (!least_digits) continue;\n\n        for (j = 8; j >= 0; j--) {\n          // significand[k * 9 + j] = Math.round(least_digits % 10);\n          significand[k * 9 + j] = least_digits % 10;\n          // least_digits = Math.round(least_digits / 10);\n          least_digits = Math.floor(least_digits / 10);\n        }\n      }\n    }\n\n    // Output format options:\n    // Scientific - [-]d.dddE(+/-)dd or [-]dE(+/-)dd\n    // Regular    - ddd.ddd\n\n    if (is_zero) {\n      significand_digits = 1;\n      significand[index] = 0;\n    } else {\n      significand_digits = 36;\n      while (!significand[index]) {\n        significand_digits = significand_digits - 1;\n        index = index + 1;\n      }\n    }\n\n    // the exponent if scientific notation is used\n    const scientific_exponent = significand_digits - 1 + exponent;\n\n    // The scientific exponent checks are dictated by the string conversion\n    // specification and are somewhat arbitrary cutoffs.\n    //\n    // We must check exponent > 0, because if this is the case, the number\n    // has trailing zeros.  However, we *cannot* output these trailing zeros,\n    // because doing so would change the precision of the value, and would\n    // change stored data if the string converted number is round tripped.\n    if (scientific_exponent >= 34 || scientific_exponent <= -7 || exponent > 0) {\n      // Scientific format\n\n      // if there are too many significant digits, we should just be treating numbers\n      // as + or - 0 and using the non-scientific exponent (this is for the \"invalid\n      // representation should be treated as 0/-0\" spec cases in decimal128-1.json)\n      if (significand_digits > 34) {\n        string.push(`${0}`);\n        if (exponent > 0) string.push(`E+${exponent}`);\n        else if (exponent < 0) string.push(`E${exponent}`);\n        return string.join('');\n      }\n\n      string.push(`${significand[index++]}`);\n      significand_digits = significand_digits - 1;\n\n      if (significand_digits) {\n        string.push('.');\n      }\n\n      for (let i = 0; i < significand_digits; i++) {\n        string.push(`${significand[index++]}`);\n      }\n\n      // Exponent\n      string.push('E');\n      if (scientific_exponent > 0) {\n        string.push(`+${scientific_exponent}`);\n      } else {\n        string.push(`${scientific_exponent}`);\n      }\n    } else {\n      // Regular format with no decimal place\n      if (exponent >= 0) {\n        for (let i = 0; i < significand_digits; i++) {\n          string.push(`${significand[index++]}`);\n        }\n      } else {\n        let radix_position = significand_digits + exponent;\n\n        // non-zero digits before radix\n        if (radix_position > 0) {\n          for (let i = 0; i < radix_position; i++) {\n            string.push(`${significand[index++]}`);\n          }\n        } else {\n          string.push('0');\n        }\n\n        string.push('.');\n        // add leading zeros after radix\n        while (radix_position++ < 0) {\n          string.push('0');\n        }\n\n        for (let i = 0; i < significand_digits - Math.max(radix_position - 1, 0); i++) {\n          string.push(`${significand[index++]}`);\n        }\n      }\n    }\n\n    return string.join('');\n  }\n\n  toJSON(): Decimal128Extended {\n    return { $numberDecimal: this.toString() };\n  }\n\n  /** @internal */\n  toExtendedJSON(): Decimal128Extended {\n    return { $numberDecimal: this.toString() };\n  }\n\n  /** @internal */\n  static fromExtendedJSON(doc: Decimal128Extended): Decimal128 {\n    return Decimal128.fromString(doc.$numberDecimal);\n  }\n\n  /** @internal */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    return `new Decimal128(\"${this.toString()}\")`;\n  }\n}\n", "import { BSONValue } from './bson_value';\nimport type { EJSONOptions } from './extended_json';\n\n/** @public */\nexport interface DoubleExtended {\n  $numberDouble: string;\n}\n\n/**\n * A class representation of the BSON Double type.\n * @public\n * @category BSONType\n */\nexport class Double extends BSONValue {\n  get _bsontype(): 'Double' {\n    return 'Double';\n  }\n\n  value!: number;\n  /**\n   * Create a Double type\n   *\n   * @param value - the number we want to represent as a double.\n   */\n  constructor(value: number) {\n    super();\n    if ((value as unknown) instanceof Number) {\n      value = value.valueOf();\n    }\n\n    this.value = +value;\n  }\n\n  /**\n   * Access the number value.\n   *\n   * @returns returns the wrapped double number.\n   */\n  valueOf(): number {\n    return this.value;\n  }\n\n  toJSON(): number {\n    return this.value;\n  }\n\n  toString(radix?: number): string {\n    return this.value.toString(radix);\n  }\n\n  /** @internal */\n  toExtendedJSON(options?: EJSONOptions): number | DoubleExtended {\n    if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) {\n      return this.value;\n    }\n\n    if (Object.is(Math.sign(this.value), -0)) {\n      // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user\n      // explicitly provided `-0` then we need to ensure the sign makes it into the output\n      return { $numberDouble: '-0.0' };\n    }\n\n    return {\n      $numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString()\n    };\n  }\n\n  /** @internal */\n  static fromExtendedJSON(doc: DoubleExtended, options?: EJSONOptions): number | Double {\n    const doubleValue = parseFloat(doc.$numberDouble);\n    return options && options.relaxed ? doubleValue : new Double(doubleValue);\n  }\n\n  /** @internal */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    const eJSON = this.toExtendedJSON() as DoubleExtended;\n    return `new Double(${eJSON.$numberDouble})`;\n  }\n}\n", "import { BSONValue } from './bson_value';\nimport type { EJSONOptions } from './extended_json';\n\n/** @public */\nexport interface Int32Extended {\n  $numberInt: string;\n}\n\n/**\n * A class representation of a BSON Int32 type.\n * @public\n * @category BSONType\n */\nexport class Int32 extends BSONValue {\n  get _bsontype(): 'Int32' {\n    return 'Int32';\n  }\n\n  value!: number;\n  /**\n   * Create an Int32 type\n   *\n   * @param value - the number we want to represent as an int32.\n   */\n  constructor(value: number | string) {\n    super();\n    if ((value as unknown) instanceof Number) {\n      value = value.valueOf();\n    }\n\n    this.value = +value | 0;\n  }\n\n  /**\n   * Access the number value.\n   *\n   * @returns returns the wrapped int32 number.\n   */\n  valueOf(): number {\n    return this.value;\n  }\n\n  toString(radix?: number): string {\n    return this.value.toString(radix);\n  }\n\n  toJSON(): number {\n    return this.value;\n  }\n\n  /** @internal */\n  toExtendedJSON(options?: EJSONOptions): number | Int32Extended {\n    if (options && (options.relaxed || options.legacy)) return this.value;\n    return { $numberInt: this.value.toString() };\n  }\n\n  /** @internal */\n  static fromExtendedJSON(doc: Int32Extended, options?: EJSONOptions): number | Int32 {\n    return options && options.relaxed ? parseInt(doc.$numberInt, 10) : new Int32(doc.$numberInt);\n  }\n\n  /** @internal */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    return `new Int32(${this.valueOf()})`;\n  }\n}\n", "import { BSONValue } from './bson_value';\n\n/** @public */\nexport interface MaxKeyExtended {\n  $maxKey: 1;\n}\n\n/**\n * A class representation of the BSON MaxKey type.\n * @public\n * @category BSONType\n */\nexport class MaxKey extends BSONValue {\n  get _bsontype(): 'MaxKey' {\n    return 'MaxKey';\n  }\n\n  /** @internal */\n  toExtendedJSON(): MaxKeyExtended {\n    return { $maxKey: 1 };\n  }\n\n  /** @internal */\n  static fromExtendedJSON(): MaxKey {\n    return new MaxKey();\n  }\n\n  /** @internal */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    return 'new MaxKey()';\n  }\n}\n", "import { BSONValue } from './bson_value';\n\n/** @public */\nexport interface MinKeyExtended {\n  $minKey: 1;\n}\n\n/**\n * A class representation of the BSON MinKey type.\n * @public\n * @category BSONType\n */\nexport class MinKey extends BSONValue {\n  get _bsontype(): 'MinKey' {\n    return 'MinKey';\n  }\n\n  /** @internal */\n  toExtendedJSON(): MinKeyExtended {\n    return { $minKey: 1 };\n  }\n\n  /** @internal */\n  static fromExtendedJSON(): MinKey {\n    return new MinKey();\n  }\n\n  /** @internal */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    return 'new MinKey()';\n  }\n}\n", "import { BSONValue } from './bson_value';\nimport { BSONError } from './error';\nimport { isUint8Array } from './parser/utils';\nimport { BSONDataView, ByteUtils } from './utils/byte_utils';\n\n// Regular expression that checks for hex value\nconst checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$');\n\n// Unique sequence for the current process (initialized on first use)\nlet PROCESS_UNIQUE: Uint8Array | null = null;\n\n/** @public */\nexport interface ObjectIdLike {\n  id: string | Uint8Array;\n  __id?: string;\n  toHexString(): string;\n}\n\n/** @public */\nexport interface ObjectIdExtended {\n  $oid: string;\n}\n\nconst kId = Symbol('id');\n\n/**\n * A class representation of the BSON ObjectId type.\n * @public\n * @category BSONType\n */\nexport class ObjectId extends BSONValue {\n  get _bsontype(): 'ObjectId' {\n    return 'ObjectId';\n  }\n\n  /** @internal */\n  private static index = Math.floor(Math.random() * 0xffffff);\n\n  static cacheHexString: boolean;\n\n  /** ObjectId Bytes @internal */\n  private [kId]!: Uint8Array;\n  /** ObjectId hexString cache @internal */\n  private __id?: string;\n\n  /**\n   * Create an ObjectId type\n   *\n   * @param inputId - Can be a 24 character hex string, 12 byte binary Buffer, or a number.\n   */\n  constructor(inputId?: string | number | ObjectId | ObjectIdLike | Uint8Array) {\n    super();\n    // workingId is set based on type of input and whether valid id exists for the input\n    let workingId;\n    if (typeof inputId === 'object' && inputId && 'id' in inputId) {\n      if (typeof inputId.id !== 'string' && !ArrayBuffer.isView(inputId.id)) {\n        throw new BSONError('Argument passed in must have an id that is of type string or Buffer');\n      }\n      if ('toHexString' in inputId && typeof inputId.toHexString === 'function') {\n        workingId = ByteUtils.fromHex(inputId.toHexString());\n      } else {\n        workingId = inputId.id;\n      }\n    } else {\n      workingId = inputId;\n    }\n\n    // the following cases use workingId to construct an ObjectId\n    if (workingId == null || typeof workingId === 'number') {\n      // The most common use case (blank id, new objectId instance)\n      // Generate a new id\n      this[kId] = ObjectId.generate(typeof workingId === 'number' ? workingId : undefined);\n    } else if (ArrayBuffer.isView(workingId) && workingId.byteLength === 12) {\n      // If intstanceof matches we can escape calling ensure buffer in Node.js environments\n      this[kId] = ByteUtils.toLocalBufferType(workingId);\n    } else if (typeof workingId === 'string') {\n      if (workingId.length === 12) {\n        // TODO(NODE-4361): Remove string of length 12 support\n        const bytes = ByteUtils.fromUTF8(workingId);\n        if (bytes.byteLength === 12) {\n          this[kId] = bytes;\n        } else {\n          throw new BSONError('Argument passed in must be a string of 12 bytes');\n        }\n      } else if (workingId.length === 24 && checkForHexRegExp.test(workingId)) {\n        this[kId] = ByteUtils.fromHex(workingId);\n      } else {\n        throw new BSONError(\n          'Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer'\n        );\n      }\n    } else {\n      throw new BSONError('Argument passed in does not match the accepted types');\n    }\n    // If we are caching the hex string\n    if (ObjectId.cacheHexString) {\n      this.__id = ByteUtils.toHex(this.id);\n    }\n  }\n\n  /**\n   * The ObjectId bytes\n   * @readonly\n   */\n  get id(): Uint8Array {\n    return this[kId];\n  }\n\n  set id(value: Uint8Array) {\n    this[kId] = value;\n    if (ObjectId.cacheHexString) {\n      this.__id = ByteUtils.toHex(value);\n    }\n  }\n\n  /** Returns the ObjectId id as a 24 character hex string representation */\n  toHexString(): string {\n    if (ObjectId.cacheHexString && this.__id) {\n      return this.__id;\n    }\n\n    const hexString = ByteUtils.toHex(this.id);\n\n    if (ObjectId.cacheHexString && !this.__id) {\n      this.__id = hexString;\n    }\n\n    return hexString;\n  }\n\n  /**\n   * Update the ObjectId index\n   * @internal\n   */\n  private static getInc(): number {\n    return (ObjectId.index = (ObjectId.index + 1) % 0xffffff);\n  }\n\n  /**\n   * Generate a 12 byte id buffer used in ObjectId's\n   *\n   * @param time - pass in a second based timestamp.\n   */\n  static generate(time?: number): Uint8Array {\n    if ('number' !== typeof time) {\n      time = Math.floor(Date.now() / 1000);\n    }\n\n    const inc = ObjectId.getInc();\n    const buffer = ByteUtils.allocate(12);\n\n    // 4-byte timestamp\n    BSONDataView.fromUint8Array(buffer).setUint32(0, time, false);\n\n    // set PROCESS_UNIQUE if yet not initialized\n    if (PROCESS_UNIQUE === null) {\n      PROCESS_UNIQUE = ByteUtils.randomBytes(5);\n    }\n\n    // 5-byte process unique\n    buffer[4] = PROCESS_UNIQUE[0];\n    buffer[5] = PROCESS_UNIQUE[1];\n    buffer[6] = PROCESS_UNIQUE[2];\n    buffer[7] = PROCESS_UNIQUE[3];\n    buffer[8] = PROCESS_UNIQUE[4];\n\n    // 3-byte counter\n    buffer[11] = inc & 0xff;\n    buffer[10] = (inc >> 8) & 0xff;\n    buffer[9] = (inc >> 16) & 0xff;\n\n    return buffer;\n  }\n\n  /**\n   * Converts the id into a 24 character hex string for printing, unless encoding is provided.\n   * @param encoding - hex or base64\n   */\n  toString(encoding?: 'hex' | 'base64'): string {\n    // Is the id a buffer then use the buffer toString method to return the format\n    if (encoding === 'base64') return ByteUtils.toBase64(this.id);\n    if (encoding === 'hex') return this.toHexString();\n    return this.toHexString();\n  }\n\n  /** Converts to its JSON the 24 character hex string representation. */\n  toJSON(): string {\n    return this.toHexString();\n  }\n\n  /**\n   * Compares the equality of this ObjectId with `otherID`.\n   *\n   * @param otherId - ObjectId instance to compare against.\n   */\n  equals(otherId: string | ObjectId | ObjectIdLike): boolean {\n    if (otherId === undefined || otherId === null) {\n      return false;\n    }\n\n    if (otherId instanceof ObjectId) {\n      return this[kId][11] === otherId[kId][11] && ByteUtils.equals(this[kId], otherId[kId]);\n    }\n\n    if (\n      typeof otherId === 'string' &&\n      ObjectId.isValid(otherId) &&\n      otherId.length === 12 &&\n      isUint8Array(this.id)\n    ) {\n      return ByteUtils.equals(this.id, ByteUtils.fromISO88591(otherId));\n    }\n\n    if (typeof otherId === 'string' && ObjectId.isValid(otherId) && otherId.length === 24) {\n      return otherId.toLowerCase() === this.toHexString();\n    }\n\n    if (typeof otherId === 'string' && ObjectId.isValid(otherId) && otherId.length === 12) {\n      return ByteUtils.equals(ByteUtils.fromUTF8(otherId), this.id);\n    }\n\n    if (\n      typeof otherId === 'object' &&\n      'toHexString' in otherId &&\n      typeof otherId.toHexString === 'function'\n    ) {\n      const otherIdString = otherId.toHexString();\n      const thisIdString = this.toHexString().toLowerCase();\n      return typeof otherIdString === 'string' && otherIdString.toLowerCase() === thisIdString;\n    }\n\n    return false;\n  }\n\n  /** Returns the generation date (accurate up to the second) that this ID was generated. */\n  getTimestamp(): Date {\n    const timestamp = new Date();\n    const time = BSONDataView.fromUint8Array(this.id).getUint32(0, false);\n    timestamp.setTime(Math.floor(time) * 1000);\n    return timestamp;\n  }\n\n  /** @internal */\n  static createPk(): ObjectId {\n    return new ObjectId();\n  }\n\n  /**\n   * Creates an ObjectId from a second based number, with the rest of the ObjectId zeroed out. Used for comparisons or sorting the ObjectId.\n   *\n   * @param time - an integer number representing a number of seconds.\n   */\n  static createFromTime(time: number): ObjectId {\n    const buffer = ByteUtils.fromNumberArray([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n    // Encode time into first 4 bytes\n    BSONDataView.fromUint8Array(buffer).setUint32(0, time, false);\n    // Return the new objectId\n    return new ObjectId(buffer);\n  }\n\n  /**\n   * Creates an ObjectId from a hex string representation of an ObjectId.\n   *\n   * @param hexString - create a ObjectId from a passed in 24 character hexstring.\n   */\n  static createFromHexString(hexString: string): ObjectId {\n    if (hexString?.length !== 24) {\n      throw new BSONError('hex string must be 24 characters');\n    }\n\n    return new ObjectId(ByteUtils.fromHex(hexString));\n  }\n\n  /** Creates an ObjectId instance from a base64 string */\n  static createFromBase64(base64: string): ObjectId {\n    if (base64?.length !== 16) {\n      throw new BSONError('base64 string must be 16 characters');\n    }\n\n    return new ObjectId(ByteUtils.fromBase64(base64));\n  }\n\n  /**\n   * Checks if a value is a valid bson ObjectId\n   *\n   * @param id - ObjectId instance to validate.\n   */\n  static isValid(id: string | number | ObjectId | ObjectIdLike | Uint8Array): boolean {\n    if (id == null) return false;\n\n    try {\n      new ObjectId(id);\n      return true;\n    } catch {\n      return false;\n    }\n  }\n\n  /** @internal */\n  toExtendedJSON(): ObjectIdExtended {\n    if (this.toHexString) return { $oid: this.toHexString() };\n    return { $oid: this.toString('hex') };\n  }\n\n  /** @internal */\n  static fromExtendedJSON(doc: ObjectIdExtended): ObjectId {\n    return new ObjectId(doc.$oid);\n  }\n\n  /**\n   * Converts to a string representation of this Id.\n   *\n   * @returns return the 24 character hex string representation.\n   * @internal\n   */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    return `new ObjectId(\"${this.toHexString()}\")`;\n  }\n}\n", "import { Binary } from '../binary';\nimport type { Document } from '../bson';\nimport { BSONVersionError } from '../error';\nimport * as constants from '../constants';\nimport { ByteUtils } from '../utils/byte_utils';\nimport { isAnyArrayBuffer, isDate, isRegExp } from './utils';\n\nexport function internalCalculateObjectSize(\n  object: Document,\n  serializeFunctions?: boolean,\n  ignoreUndefined?: boolean\n): number {\n  let totalLength = 4 + 1;\n\n  if (Array.isArray(object)) {\n    for (let i = 0; i < object.length; i++) {\n      totalLength += calculateElement(\n        i.toString(),\n        object[i],\n        serializeFunctions,\n        true,\n        ignoreUndefined\n      );\n    }\n  } else {\n    // If we have toBSON defined, override the current object\n\n    if (typeof object?.toBSON === 'function') {\n      object = object.toBSON();\n    }\n\n    // Calculate size\n    for (const key of Object.keys(object)) {\n      totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined);\n    }\n  }\n\n  return totalLength;\n}\n\n/** @internal */\nfunction calculateElement(\n  name: string,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  value: any,\n  serializeFunctions = false,\n  isArray = false,\n  ignoreUndefined = false\n) {\n  // If we have toBSON defined, override the current object\n  if (typeof value?.toBSON === 'function') {\n    value = value.toBSON();\n  }\n\n  switch (typeof value) {\n    case 'string':\n      return 1 + ByteUtils.utf8ByteLength(name) + 1 + 4 + ByteUtils.utf8ByteLength(value) + 1;\n    case 'number':\n      if (\n        Math.floor(value) === value &&\n        value >= constants.JS_INT_MIN &&\n        value <= constants.JS_INT_MAX\n      ) {\n        if (value >= constants.BSON_INT32_MIN && value <= constants.BSON_INT32_MAX) {\n          // 32 bit\n          return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (4 + 1);\n        } else {\n          return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);\n        }\n      } else {\n        // 64 bit\n        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);\n      }\n    case 'undefined':\n      if (isArray || !ignoreUndefined)\n        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;\n      return 0;\n    case 'boolean':\n      return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 1);\n    case 'object':\n      if (\n        value != null &&\n        typeof value._bsontype === 'string' &&\n        value[Symbol.for('@@mdb.bson.version')] !== constants.BSON_MAJOR_VERSION\n      ) {\n        throw new BSONVersionError();\n      } else if (value == null || value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {\n        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;\n      } else if (value._bsontype === 'ObjectId') {\n        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (12 + 1);\n      } else if (value instanceof Date || isDate(value)) {\n        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);\n      } else if (\n        ArrayBuffer.isView(value) ||\n        value instanceof ArrayBuffer ||\n        isAnyArrayBuffer(value)\n      ) {\n        return (\n          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 4 + 1) + value.byteLength\n        );\n      } else if (\n        value._bsontype === 'Long' ||\n        value._bsontype === 'Double' ||\n        value._bsontype === 'Timestamp'\n      ) {\n        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);\n      } else if (value._bsontype === 'Decimal128') {\n        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (16 + 1);\n      } else if (value._bsontype === 'Code') {\n        // Calculate size depending on the availability of a scope\n        if (value.scope != null && Object.keys(value.scope).length > 0) {\n          return (\n            (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +\n            1 +\n            4 +\n            4 +\n            ByteUtils.utf8ByteLength(value.code.toString()) +\n            1 +\n            internalCalculateObjectSize(value.scope, serializeFunctions, ignoreUndefined)\n          );\n        } else {\n          return (\n            (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +\n            1 +\n            4 +\n            ByteUtils.utf8ByteLength(value.code.toString()) +\n            1\n          );\n        }\n      } else if (value._bsontype === 'Binary') {\n        const binary: Binary = value;\n        // Check what kind of subtype we have\n        if (binary.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {\n          return (\n            (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +\n            (binary.position + 1 + 4 + 1 + 4)\n          );\n        } else {\n          return (\n            (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (binary.position + 1 + 4 + 1)\n          );\n        }\n      } else if (value._bsontype === 'Symbol') {\n        return (\n          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +\n          ByteUtils.utf8ByteLength(value.value) +\n          4 +\n          1 +\n          1\n        );\n      } else if (value._bsontype === 'DBRef') {\n        // Set up correct object for serialization\n        const ordered_values = Object.assign(\n          {\n            $ref: value.collection,\n            $id: value.oid\n          },\n          value.fields\n        );\n\n        // Add db reference if it exists\n        if (value.db != null) {\n          ordered_values['$db'] = value.db;\n        }\n\n        return (\n          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +\n          1 +\n          internalCalculateObjectSize(ordered_values, serializeFunctions, ignoreUndefined)\n        );\n      } else if (value instanceof RegExp || isRegExp(value)) {\n        return (\n          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +\n          1 +\n          ByteUtils.utf8ByteLength(value.source) +\n          1 +\n          (value.global ? 1 : 0) +\n          (value.ignoreCase ? 1 : 0) +\n          (value.multiline ? 1 : 0) +\n          1\n        );\n      } else if (value._bsontype === 'BSONRegExp') {\n        return (\n          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +\n          1 +\n          ByteUtils.utf8ByteLength(value.pattern) +\n          1 +\n          ByteUtils.utf8ByteLength(value.options) +\n          1\n        );\n      } else {\n        return (\n          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +\n          internalCalculateObjectSize(value, serializeFunctions, ignoreUndefined) +\n          1\n        );\n      }\n    case 'function':\n      if (serializeFunctions) {\n        return (\n          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +\n          1 +\n          4 +\n          ByteUtils.utf8ByteLength(value.toString()) +\n          1\n        );\n      }\n  }\n\n  return 0;\n}\n", "import { BSONValue } from './bson_value';\nimport { BSONError } from './error';\nimport type { EJSONOptions } from './extended_json';\n\nfunction alphabetize(str: string): string {\n  return str.split('').sort().join('');\n}\n\n/** @public */\nexport interface BSONRegExpExtendedLegacy {\n  $regex: string | BSONRegExp;\n  $options: string;\n}\n\n/** @public */\nexport interface BSONRegExpExtended {\n  $regularExpression: {\n    pattern: string;\n    options: string;\n  };\n}\n\n/**\n * A class representation of the BSON RegExp type.\n * @public\n * @category BSONType\n */\nexport class BSONRegExp extends BSONValue {\n  get _bsontype(): 'BSONRegExp' {\n    return 'BSONRegExp';\n  }\n\n  pattern!: string;\n  options!: string;\n  /**\n   * @param pattern - The regular expression pattern to match\n   * @param options - The regular expression options\n   */\n  constructor(pattern: string, options?: string) {\n    super();\n    this.pattern = pattern;\n    this.options = alphabetize(options ?? '');\n\n    if (this.pattern.indexOf('\\x00') !== -1) {\n      throw new BSONError(\n        `BSON Regex patterns cannot contain null bytes, found: ${JSON.stringify(this.pattern)}`\n      );\n    }\n    if (this.options.indexOf('\\x00') !== -1) {\n      throw new BSONError(\n        `BSON Regex options cannot contain null bytes, found: ${JSON.stringify(this.options)}`\n      );\n    }\n\n    // Validate options\n    for (let i = 0; i < this.options.length; i++) {\n      if (\n        !(\n          this.options[i] === 'i' ||\n          this.options[i] === 'm' ||\n          this.options[i] === 'x' ||\n          this.options[i] === 'l' ||\n          this.options[i] === 's' ||\n          this.options[i] === 'u'\n        )\n      ) {\n        throw new BSONError(`The regular expression option [${this.options[i]}] is not supported`);\n      }\n    }\n  }\n\n  static parseOptions(options?: string): string {\n    return options ? options.split('').sort().join('') : '';\n  }\n\n  /** @internal */\n  toExtendedJSON(options?: EJSONOptions): BSONRegExpExtendedLegacy | BSONRegExpExtended {\n    options = options || {};\n    if (options.legacy) {\n      return { $regex: this.pattern, $options: this.options };\n    }\n    return { $regularExpression: { pattern: this.pattern, options: this.options } };\n  }\n\n  /** @internal */\n  static fromExtendedJSON(doc: BSONRegExpExtendedLegacy | BSONRegExpExtended): BSONRegExp {\n    if ('$regex' in doc) {\n      if (typeof doc.$regex !== 'string') {\n        // This is for $regex query operators that have extended json values.\n        if (doc.$regex._bsontype === 'BSONRegExp') {\n          return doc as unknown as BSONRegExp;\n        }\n      } else {\n        return new BSONRegExp(doc.$regex, BSONRegExp.parseOptions(doc.$options));\n      }\n    }\n    if ('$regularExpression' in doc) {\n      return new BSONRegExp(\n        doc.$regularExpression.pattern,\n        BSONRegExp.parseOptions(doc.$regularExpression.options)\n      );\n    }\n    throw new BSONError(`Unexpected BSONRegExp EJSON object form: ${JSON.stringify(doc)}`);\n  }\n\n  /** @internal */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    return `new BSONRegExp(${JSON.stringify(this.pattern)}, ${JSON.stringify(this.options)})`;\n  }\n}\n", "import { BSONValue } from './bson_value';\n\n/** @public */\nexport interface BSONSymbolExtended {\n  $symbol: string;\n}\n\n/**\n * A class representation of the BSON Symbol type.\n * @public\n * @category BSONType\n */\nexport class BSONSymbol extends BSONValue {\n  get _bsontype(): 'BSONSymbol' {\n    return 'BSONSymbol';\n  }\n\n  value!: string;\n  /**\n   * @param value - the string representing the symbol.\n   */\n  constructor(value: string) {\n    super();\n    this.value = value;\n  }\n\n  /** Access the wrapped string value. */\n  valueOf(): string {\n    return this.value;\n  }\n\n  toString(): string {\n    return this.value;\n  }\n\n  inspect(): string {\n    return `new BSONSymbol(\"${this.value}\")`;\n  }\n\n  toJSON(): string {\n    return this.value;\n  }\n\n  /** @internal */\n  toExtendedJSON(): BSONSymbolExtended {\n    return { $symbol: this.value };\n  }\n\n  /** @internal */\n  static fromExtendedJSON(doc: BSONSymbolExtended): BSONSymbol {\n    return new BSONSymbol(doc.$symbol);\n  }\n\n  /** @internal */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n}\n", "import { BSONError } from './error';\nimport type { Int32 } from './int_32';\nimport { Long } from './long';\n\n/** @public */\nexport type TimestampOverrides = '_bsontype' | 'toExtendedJSON' | 'fromExtendedJSON' | 'inspect';\n/** @public */\nexport type LongWithoutOverrides = new (\n  low: unknown,\n  high?: number | boolean,\n  unsigned?: boolean\n) => {\n  [P in Exclude<keyof Long, TimestampOverrides>]: Long[P];\n};\n/** @public */\nexport const LongWithoutOverridesClass: LongWithoutOverrides =\n  Long as unknown as LongWithoutOverrides;\n\n/** @public */\nexport interface TimestampExtended {\n  $timestamp: {\n    t: number;\n    i: number;\n  };\n}\n\n/**\n * @public\n * @category BSONType\n */\nexport class Timestamp extends LongWithoutOverridesClass {\n  get _bsontype(): 'Timestamp' {\n    return 'Timestamp';\n  }\n\n  static readonly MAX_VALUE = Long.MAX_UNSIGNED_VALUE;\n\n  /**\n   * @param int - A 64-bit bigint representing the Timestamp.\n   */\n  constructor(int: bigint);\n  /**\n   * @param long - A 64-bit Long representing the Timestamp.\n   */\n  constructor(long: Long);\n  /**\n   * @param value - A pair of two values indicating timestamp and increment.\n   */\n  constructor(value: { t: number; i: number });\n  constructor(low?: bigint | Long | { t: number | Int32; i: number | Int32 }) {\n    if (low == null) {\n      super(0, 0, true);\n    } else if (typeof low === 'bigint') {\n      super(low, true);\n    } else if (Long.isLong(low)) {\n      super(low.low, low.high, true);\n    } else if (typeof low === 'object' && 't' in low && 'i' in low) {\n      if (typeof low.t !== 'number' && (typeof low.t !== 'object' || low.t._bsontype !== 'Int32')) {\n        throw new BSONError('Timestamp constructed from { t, i } must provide t as a number');\n      }\n      if (typeof low.i !== 'number' && (typeof low.i !== 'object' || low.i._bsontype !== 'Int32')) {\n        throw new BSONError('Timestamp constructed from { t, i } must provide i as a number');\n      }\n      const t = Number(low.t);\n      const i = Number(low.i);\n      if (t < 0 || Number.isNaN(t)) {\n        throw new BSONError('Timestamp constructed from { t, i } must provide a positive t');\n      }\n      if (i < 0 || Number.isNaN(i)) {\n        throw new BSONError('Timestamp constructed from { t, i } must provide a positive i');\n      }\n      if (t > 0xffff_ffff) {\n        throw new BSONError(\n          'Timestamp constructed from { t, i } must provide t equal or less than uint32 max'\n        );\n      }\n      if (i > 0xffff_ffff) {\n        throw new BSONError(\n          'Timestamp constructed from { t, i } must provide i equal or less than uint32 max'\n        );\n      }\n\n      super(i, t, true);\n    } else {\n      throw new BSONError(\n        'A Timestamp can only be constructed with: bigint, Long, or { t: number; i: number }'\n      );\n    }\n  }\n\n  toJSON(): { $timestamp: string } {\n    return {\n      $timestamp: this.toString()\n    };\n  }\n\n  /** Returns a Timestamp represented by the given (32-bit) integer value. */\n  static fromInt(value: number): Timestamp {\n    return new Timestamp(Long.fromInt(value, true));\n  }\n\n  /** Returns a Timestamp representing the given number value, provided that it is a finite number. Otherwise, zero is returned. */\n  static fromNumber(value: number): Timestamp {\n    return new Timestamp(Long.fromNumber(value, true));\n  }\n\n  /**\n   * Returns a Timestamp for the given high and low bits. Each is assumed to use 32 bits.\n   *\n   * @param lowBits - the low 32-bits.\n   * @param highBits - the high 32-bits.\n   */\n  static fromBits(lowBits: number, highBits: number): Timestamp {\n    return new Timestamp({ i: lowBits, t: highBits });\n  }\n\n  /**\n   * Returns a Timestamp from the given string, optionally using the given radix.\n   *\n   * @param str - the textual representation of the Timestamp.\n   * @param optRadix - the radix in which the text is written.\n   */\n  static fromString(str: string, optRadix: number): Timestamp {\n    return new Timestamp(Long.fromString(str, true, optRadix));\n  }\n\n  /** @internal */\n  toExtendedJSON(): TimestampExtended {\n    return { $timestamp: { t: this.high >>> 0, i: this.low >>> 0 } };\n  }\n\n  /** @internal */\n  static fromExtendedJSON(doc: TimestampExtended): Timestamp {\n    // The Long check is necessary because extended JSON has different behavior given the size of the input number\n    const i = Long.isLong(doc.$timestamp.i)\n      ? doc.$timestamp.i.getLowBitsUnsigned() // Need to fetch the least significant 32 bits\n      : doc.$timestamp.i;\n    const t = Long.isLong(doc.$timestamp.t)\n      ? doc.$timestamp.t.getLowBitsUnsigned() // Need to fetch the least significant 32 bits\n      : doc.$timestamp.t;\n    return new Timestamp({ t, i });\n  }\n\n  /** @internal */\n  [Symbol.for('nodejs.util.inspect.custom')](): string {\n    return this.inspect();\n  }\n\n  inspect(): string {\n    return `new Timestamp({ t: ${this.getHighBits()}, i: ${this.getLowBits()} })`;\n  }\n}\n", "const FIRST_BIT = 0x80;\nconst FIRST_TWO_BITS = 0xc0;\nconst FIRST_THREE_BITS = 0xe0;\nconst FIRST_FOUR_BITS = 0xf0;\nconst FIRST_FIVE_BITS = 0xf8;\n\nconst TWO_BIT_CHAR = 0xc0;\nconst THREE_BIT_CHAR = 0xe0;\nconst FOUR_BIT_CHAR = 0xf0;\nconst CONTINUING_CHAR = 0x80;\n\n/**\n * Determines if the passed in bytes are valid utf8\n * @param bytes - An array of 8-bit bytes. Must be indexable and have length property\n * @param start - The index to start validating\n * @param end - The index to end validating\n */\nexport function validateUtf8(\n  bytes: { [index: number]: number },\n  start: number,\n  end: number\n): boolean {\n  let continuation = 0;\n\n  for (let i = start; i < end; i += 1) {\n    const byte = bytes[i];\n\n    if (continuation) {\n      if ((byte & FIRST_TWO_BITS) !== CONTINUING_CHAR) {\n        return false;\n      }\n      continuation -= 1;\n    } else if (byte & FIRST_BIT) {\n      if ((byte & FIRST_THREE_BITS) === TWO_BIT_CHAR) {\n        continuation = 1;\n      } else if ((byte & FIRST_FOUR_BITS) === THREE_BIT_CHAR) {\n        continuation = 2;\n      } else if ((byte & FIRST_FIVE_BITS) === FOUR_BIT_CHAR) {\n        continuation = 3;\n      } else {\n        return false;\n      }\n    }\n  }\n\n  return !continuation;\n}\n", "import { Binary, UUID } from '../binary';\nimport type { Document } from '../bson';\nimport { Code } from '../code';\nimport * as constants from '../constants';\nimport { DBRef, type DBRefLike, isDBRefLike } from '../db_ref';\nimport { Decimal128 } from '../decimal128';\nimport { Double } from '../double';\nimport { BSONError } from '../error';\nimport { Int32 } from '../int_32';\nimport { Long } from '../long';\nimport { MaxKey } from '../max_key';\nimport { MinKey } from '../min_key';\nimport { ObjectId } from '../objectid';\nimport { BSONRegExp } from '../regexp';\nimport { BSONSymbol } from '../symbol';\nimport { Timestamp } from '../timestamp';\nimport { BSONDataView, ByteUtils } from '../utils/byte_utils';\nimport { validateUtf8 } from '../validate_utf8';\n\n/** @public */\nexport interface DeserializeOptions {\n  /**\n   * when deserializing a Long return as a BigInt.\n   * @defaultValue `false`\n   */\n  useBigInt64?: boolean;\n  /**\n   * when deserializing a Long will fit it into a Number if it's smaller than 53 bits.\n   * @defaultValue `true`\n   */\n  promoteLongs?: boolean;\n  /**\n   * when deserializing a Binary will return it as a node.js Buffer instance.\n   * @defaultValue `false`\n   */\n  promoteBuffers?: boolean;\n  /**\n   * when deserializing will promote BSON values to their Node.js closest equivalent types.\n   * @defaultValue `true`\n   */\n  promoteValues?: boolean;\n  /**\n   * allow to specify if there what fields we wish to return as unserialized raw buffer.\n   * @defaultValue `null`\n   */\n  fieldsAsRaw?: Document;\n  /**\n   * return BSON regular expressions as BSONRegExp instances.\n   * @defaultValue `false`\n   */\n  bsonRegExp?: boolean;\n  /**\n   * allows the buffer to be larger than the parsed BSON object.\n   * @defaultValue `false`\n   */\n  allowObjectSmallerThanBufferSize?: boolean;\n  /**\n   * Offset into buffer to begin reading document from\n   * @defaultValue `0`\n   */\n  index?: number;\n\n  raw?: boolean;\n  /** Allows for opt-out utf-8 validation for all keys or\n   * specified keys. Must be all true or all false.\n   *\n   * @example\n   * ```js\n   * // disables validation on all keys\n   *  validation: { utf8: false }\n   *\n   * // enables validation only on specified keys a, b, and c\n   *  validation: { utf8: { a: true, b: true, c: true } }\n   *\n   *  // disables validation only on specified keys a, b\n   *  validation: { utf8: { a: false, b: false } }\n   * ```\n   */\n  validation?: { utf8: boolean | Record<string, true> | Record<string, false> };\n}\n\n// Internal long versions\nconst JS_INT_MAX_LONG = Long.fromNumber(constants.JS_INT_MAX);\nconst JS_INT_MIN_LONG = Long.fromNumber(constants.JS_INT_MIN);\n\nexport function internalDeserialize(\n  buffer: Uint8Array,\n  options: DeserializeOptions,\n  isArray?: boolean\n): Document {\n  options = options == null ? {} : options;\n  const index = options && options.index ? options.index : 0;\n  // Read the document size\n  const size =\n    buffer[index] |\n    (buffer[index + 1] << 8) |\n    (buffer[index + 2] << 16) |\n    (buffer[index + 3] << 24);\n\n  if (size < 5) {\n    throw new BSONError(`bson size must be >= 5, is ${size}`);\n  }\n\n  if (options.allowObjectSmallerThanBufferSize && buffer.length < size) {\n    throw new BSONError(`buffer length ${buffer.length} must be >= bson size ${size}`);\n  }\n\n  if (!options.allowObjectSmallerThanBufferSize && buffer.length !== size) {\n    throw new BSONError(`buffer length ${buffer.length} must === bson size ${size}`);\n  }\n\n  if (size + index > buffer.byteLength) {\n    throw new BSONError(\n      `(bson size ${size} + options.index ${index} must be <= buffer length ${buffer.byteLength})`\n    );\n  }\n\n  // Illegal end value\n  if (buffer[index + size - 1] !== 0) {\n    throw new BSONError(\n      \"One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00\"\n    );\n  }\n\n  // Start deserialization\n  return deserializeObject(buffer, index, options, isArray);\n}\n\nconst allowedDBRefKeys = /^\\$ref$|^\\$id$|^\\$db$/;\n\nfunction deserializeObject(\n  buffer: Uint8Array,\n  index: number,\n  options: DeserializeOptions,\n  isArray = false\n) {\n  const fieldsAsRaw = options['fieldsAsRaw'] == null ? null : options['fieldsAsRaw'];\n\n  // Return raw bson buffer instead of parsing it\n  const raw = options['raw'] == null ? false : options['raw'];\n\n  // Return BSONRegExp objects instead of native regular expressions\n  const bsonRegExp = typeof options['bsonRegExp'] === 'boolean' ? options['bsonRegExp'] : false;\n\n  // Controls the promotion of values vs wrapper classes\n  const promoteBuffers = options.promoteBuffers ?? false;\n  const promoteLongs = options.promoteLongs ?? true;\n  const promoteValues = options.promoteValues ?? true;\n  const useBigInt64 = options.useBigInt64 ?? false;\n\n  if (useBigInt64 && !promoteValues) {\n    throw new BSONError('Must either request bigint or Long for int64 deserialization');\n  }\n\n  if (useBigInt64 && !promoteLongs) {\n    throw new BSONError('Must either request bigint or Long for int64 deserialization');\n  }\n\n  // Ensures default validation option if none given\n  const validation = options.validation == null ? { utf8: true } : options.validation;\n\n  // Shows if global utf-8 validation is enabled or disabled\n  let globalUTFValidation = true;\n  // Reflects utf-8 validation setting regardless of global or specific key validation\n  let validationSetting: boolean;\n  // Set of keys either to enable or disable validation on\n  const utf8KeysSet = new Set();\n\n  // Check for boolean uniformity and empty validation option\n  const utf8ValidatedKeys = validation.utf8;\n  if (typeof utf8ValidatedKeys === 'boolean') {\n    validationSetting = utf8ValidatedKeys;\n  } else {\n    globalUTFValidation = false;\n    const utf8ValidationValues = Object.keys(utf8ValidatedKeys).map(function (key) {\n      return utf8ValidatedKeys[key];\n    });\n    if (utf8ValidationValues.length === 0) {\n      throw new BSONError('UTF-8 validation setting cannot be empty');\n    }\n    if (typeof utf8ValidationValues[0] !== 'boolean') {\n      throw new BSONError('Invalid UTF-8 validation option, must specify boolean values');\n    }\n    validationSetting = utf8ValidationValues[0];\n    // Ensures boolean uniformity in utf-8 validation (all true or all false)\n    if (!utf8ValidationValues.every(item => item === validationSetting)) {\n      throw new BSONError('Invalid UTF-8 validation option - keys must be all true or all false');\n    }\n  }\n\n  // Add keys to set that will either be validated or not based on validationSetting\n  if (!globalUTFValidation) {\n    for (const key of Object.keys(utf8ValidatedKeys)) {\n      utf8KeysSet.add(key);\n    }\n  }\n\n  // Set the start index\n  const startIndex = index;\n\n  // Validate that we have at least 4 bytes of buffer\n  if (buffer.length < 5) throw new BSONError('corrupt bson message < 5 bytes long');\n\n  // Read the document size\n  const size =\n    buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);\n\n  // Ensure buffer is valid size\n  if (size < 5 || size > buffer.length) throw new BSONError('corrupt bson message');\n\n  // Create holding object\n  const object: Document = isArray ? [] : {};\n  // Used for arrays to skip having to perform utf8 decoding\n  let arrayIndex = 0;\n  const done = false;\n\n  let isPossibleDBRef = isArray ? false : null;\n\n  // While we have more left data left keep parsing\n  const dataview = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  while (!done) {\n    // Read the type\n    const elementType = buffer[index++];\n\n    // If we get a zero it's the last byte, exit\n    if (elementType === 0) break;\n\n    // Get the start search index\n    let i = index;\n    // Locate the end of the c string\n    while (buffer[i] !== 0x00 && i < buffer.length) {\n      i++;\n    }\n\n    // If are at the end of the buffer there is a problem with the document\n    if (i >= buffer.byteLength) throw new BSONError('Bad BSON Document: illegal CString');\n\n    // Represents the key\n    const name = isArray ? arrayIndex++ : ByteUtils.toUTF8(buffer, index, i);\n\n    // shouldValidateKey is true if the key should be validated, false otherwise\n    let shouldValidateKey = true;\n    if (globalUTFValidation || utf8KeysSet.has(name)) {\n      shouldValidateKey = validationSetting;\n    } else {\n      shouldValidateKey = !validationSetting;\n    }\n\n    if (isPossibleDBRef !== false && (name as string)[0] === '$') {\n      isPossibleDBRef = allowedDBRefKeys.test(name as string);\n    }\n    let value;\n\n    index = i + 1;\n\n    if (elementType === constants.BSON_DATA_STRING) {\n      const stringSize =\n        buffer[index++] |\n        (buffer[index++] << 8) |\n        (buffer[index++] << 16) |\n        (buffer[index++] << 24);\n      if (\n        stringSize <= 0 ||\n        stringSize > buffer.length - index ||\n        buffer[index + stringSize - 1] !== 0\n      ) {\n        throw new BSONError('bad string length in bson');\n      }\n      value = getValidatedString(buffer, index, index + stringSize - 1, shouldValidateKey);\n      index = index + stringSize;\n    } else if (elementType === constants.BSON_DATA_OID) {\n      const oid = ByteUtils.allocate(12);\n      oid.set(buffer.subarray(index, index + 12));\n      value = new ObjectId(oid);\n      index = index + 12;\n    } else if (elementType === constants.BSON_DATA_INT && promoteValues === false) {\n      value = new Int32(\n        buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24)\n      );\n    } else if (elementType === constants.BSON_DATA_INT) {\n      value =\n        buffer[index++] |\n        (buffer[index++] << 8) |\n        (buffer[index++] << 16) |\n        (buffer[index++] << 24);\n    } else if (elementType === constants.BSON_DATA_NUMBER && promoteValues === false) {\n      value = new Double(dataview.getFloat64(index, true));\n      index = index + 8;\n    } else if (elementType === constants.BSON_DATA_NUMBER) {\n      value = dataview.getFloat64(index, true);\n      index = index + 8;\n    } else if (elementType === constants.BSON_DATA_DATE) {\n      const lowBits =\n        buffer[index++] |\n        (buffer[index++] << 8) |\n        (buffer[index++] << 16) |\n        (buffer[index++] << 24);\n      const highBits =\n        buffer[index++] |\n        (buffer[index++] << 8) |\n        (buffer[index++] << 16) |\n        (buffer[index++] << 24);\n      value = new Date(new Long(lowBits, highBits).toNumber());\n    } else if (elementType === constants.BSON_DATA_BOOLEAN) {\n      if (buffer[index] !== 0 && buffer[index] !== 1)\n        throw new BSONError('illegal boolean type value');\n      value = buffer[index++] === 1;\n    } else if (elementType === constants.BSON_DATA_OBJECT) {\n      const _index = index;\n      const objectSize =\n        buffer[index] |\n        (buffer[index + 1] << 8) |\n        (buffer[index + 2] << 16) |\n        (buffer[index + 3] << 24);\n      if (objectSize <= 0 || objectSize > buffer.length - index)\n        throw new BSONError('bad embedded document length in bson');\n\n      // We have a raw value\n      if (raw) {\n        value = buffer.slice(index, index + objectSize);\n      } else {\n        let objectOptions = options;\n        if (!globalUTFValidation) {\n          objectOptions = { ...options, validation: { utf8: shouldValidateKey } };\n        }\n        value = deserializeObject(buffer, _index, objectOptions, false);\n      }\n\n      index = index + objectSize;\n    } else if (elementType === constants.BSON_DATA_ARRAY) {\n      const _index = index;\n      const objectSize =\n        buffer[index] |\n        (buffer[index + 1] << 8) |\n        (buffer[index + 2] << 16) |\n        (buffer[index + 3] << 24);\n      let arrayOptions: DeserializeOptions = options;\n\n      // Stop index\n      const stopIndex = index + objectSize;\n\n      // All elements of array to be returned as raw bson\n      if (fieldsAsRaw && fieldsAsRaw[name]) {\n        arrayOptions = { ...options, raw: true };\n      }\n\n      if (!globalUTFValidation) {\n        arrayOptions = { ...arrayOptions, validation: { utf8: shouldValidateKey } };\n      }\n      value = deserializeObject(buffer, _index, arrayOptions, true);\n      index = index + objectSize;\n\n      if (buffer[index - 1] !== 0) throw new BSONError('invalid array terminator byte');\n      if (index !== stopIndex) throw new BSONError('corrupted array bson');\n    } else if (elementType === constants.BSON_DATA_UNDEFINED) {\n      value = undefined;\n    } else if (elementType === constants.BSON_DATA_NULL) {\n      value = null;\n    } else if (elementType === constants.BSON_DATA_LONG) {\n      // Unpack the low and high bits\n      const dataview = BSONDataView.fromUint8Array(buffer.subarray(index, index + 8));\n\n      const lowBits =\n        buffer[index++] |\n        (buffer[index++] << 8) |\n        (buffer[index++] << 16) |\n        (buffer[index++] << 24);\n      const highBits =\n        buffer[index++] |\n        (buffer[index++] << 8) |\n        (buffer[index++] << 16) |\n        (buffer[index++] << 24);\n      const long = new Long(lowBits, highBits);\n      if (useBigInt64) {\n        value = dataview.getBigInt64(0, true);\n      } else if (promoteLongs && promoteValues === true) {\n        // Promote the long if possible\n        value =\n          long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG)\n            ? long.toNumber()\n            : long;\n      } else {\n        value = long;\n      }\n    } else if (elementType === constants.BSON_DATA_DECIMAL128) {\n      // Buffer to contain the decimal bytes\n      const bytes = ByteUtils.allocate(16);\n      // Copy the next 16 bytes into the bytes buffer\n      bytes.set(buffer.subarray(index, index + 16), 0);\n      // Update index\n      index = index + 16;\n      // Assign the new Decimal128 value\n      value = new Decimal128(bytes);\n    } else if (elementType === constants.BSON_DATA_BINARY) {\n      let binarySize =\n        buffer[index++] |\n        (buffer[index++] << 8) |\n        (buffer[index++] << 16) |\n        (buffer[index++] << 24);\n      const totalBinarySize = binarySize;\n      const subType = buffer[index++];\n\n      // Did we have a negative binary size, throw\n      if (binarySize < 0) throw new BSONError('Negative binary type element size found');\n\n      // Is the length longer than the document\n      if (binarySize > buffer.byteLength)\n        throw new BSONError('Binary type size larger than document size');\n\n      // Decode as raw Buffer object if options specifies it\n      if (buffer['slice'] != null) {\n        // If we have subtype 2 skip the 4 bytes for the size\n        if (subType === Binary.SUBTYPE_BYTE_ARRAY) {\n          binarySize =\n            buffer[index++] |\n            (buffer[index++] << 8) |\n            (buffer[index++] << 16) |\n            (buffer[index++] << 24);\n          if (binarySize < 0)\n            throw new BSONError('Negative binary type element size found for subtype 0x02');\n          if (binarySize > totalBinarySize - 4)\n            throw new BSONError('Binary type with subtype 0x02 contains too long binary size');\n          if (binarySize < totalBinarySize - 4)\n            throw new BSONError('Binary type with subtype 0x02 contains too short binary size');\n        }\n\n        if (promoteBuffers && promoteValues) {\n          value = ByteUtils.toLocalBufferType(buffer.slice(index, index + binarySize));\n        } else {\n          value = new Binary(buffer.slice(index, index + binarySize), subType);\n          if (subType === constants.BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {\n            value = value.toUUID();\n          }\n        }\n      } else {\n        const _buffer = ByteUtils.allocate(binarySize);\n        // If we have subtype 2 skip the 4 bytes for the size\n        if (subType === Binary.SUBTYPE_BYTE_ARRAY) {\n          binarySize =\n            buffer[index++] |\n            (buffer[index++] << 8) |\n            (buffer[index++] << 16) |\n            (buffer[index++] << 24);\n          if (binarySize < 0)\n            throw new BSONError('Negative binary type element size found for subtype 0x02');\n          if (binarySize > totalBinarySize - 4)\n            throw new BSONError('Binary type with subtype 0x02 contains too long binary size');\n          if (binarySize < totalBinarySize - 4)\n            throw new BSONError('Binary type with subtype 0x02 contains too short binary size');\n        }\n\n        // Copy the data\n        for (i = 0; i < binarySize; i++) {\n          _buffer[i] = buffer[index + i];\n        }\n\n        if (promoteBuffers && promoteValues) {\n          value = _buffer;\n        } else {\n          value = new Binary(buffer.slice(index, index + binarySize), subType);\n          if (subType === constants.BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {\n            value = value.toUUID();\n          }\n        }\n      }\n\n      // Update the index\n      index = index + binarySize;\n    } else if (elementType === constants.BSON_DATA_REGEXP && bsonRegExp === false) {\n      // Get the start search index\n      i = index;\n      // Locate the end of the c string\n      while (buffer[i] !== 0x00 && i < buffer.length) {\n        i++;\n      }\n      // If are at the end of the buffer there is a problem with the document\n      if (i >= buffer.length) throw new BSONError('Bad BSON Document: illegal CString');\n      // Return the C string\n      const source = ByteUtils.toUTF8(buffer, index, i);\n      // Create the regexp\n      index = i + 1;\n\n      // Get the start search index\n      i = index;\n      // Locate the end of the c string\n      while (buffer[i] !== 0x00 && i < buffer.length) {\n        i++;\n      }\n      // If are at the end of the buffer there is a problem with the document\n      if (i >= buffer.length) throw new BSONError('Bad BSON Document: illegal CString');\n      // Return the C string\n      const regExpOptions = ByteUtils.toUTF8(buffer, index, i);\n      index = i + 1;\n\n      // For each option add the corresponding one for javascript\n      const optionsArray = new Array(regExpOptions.length);\n\n      // Parse options\n      for (i = 0; i < regExpOptions.length; i++) {\n        switch (regExpOptions[i]) {\n          case 'm':\n            optionsArray[i] = 'm';\n            break;\n          case 's':\n            optionsArray[i] = 'g';\n            break;\n          case 'i':\n            optionsArray[i] = 'i';\n            break;\n        }\n      }\n\n      value = new RegExp(source, optionsArray.join(''));\n    } else if (elementType === constants.BSON_DATA_REGEXP && bsonRegExp === true) {\n      // Get the start search index\n      i = index;\n      // Locate the end of the c string\n      while (buffer[i] !== 0x00 && i < buffer.length) {\n        i++;\n      }\n      // If are at the end of the buffer there is a problem with the document\n      if (i >= buffer.length) throw new BSONError('Bad BSON Document: illegal CString');\n      // Return the C string\n      const source = ByteUtils.toUTF8(buffer, index, i);\n      index = i + 1;\n\n      // Get the start search index\n      i = index;\n      // Locate the end of the c string\n      while (buffer[i] !== 0x00 && i < buffer.length) {\n        i++;\n      }\n      // If are at the end of the buffer there is a problem with the document\n      if (i >= buffer.length) throw new BSONError('Bad BSON Document: illegal CString');\n      // Return the C string\n      const regExpOptions = ByteUtils.toUTF8(buffer, index, i);\n      index = i + 1;\n\n      // Set the object\n      value = new BSONRegExp(source, regExpOptions);\n    } else if (elementType === constants.BSON_DATA_SYMBOL) {\n      const stringSize =\n        buffer[index++] |\n        (buffer[index++] << 8) |\n        (buffer[index++] << 16) |\n        (buffer[index++] << 24);\n      if (\n        stringSize <= 0 ||\n        stringSize > buffer.length - index ||\n        buffer[index + stringSize - 1] !== 0\n      ) {\n        throw new BSONError('bad string length in bson');\n      }\n      const symbol = getValidatedString(buffer, index, index + stringSize - 1, shouldValidateKey);\n      value = promoteValues ? symbol : new BSONSymbol(symbol);\n      index = index + stringSize;\n    } else if (elementType === constants.BSON_DATA_TIMESTAMP) {\n      // We intentionally **do not** use bit shifting here\n      // Bit shifting in javascript coerces numbers to **signed** int32s\n      // We need to keep i, and t unsigned\n      const i =\n        buffer[index++] +\n        buffer[index++] * (1 << 8) +\n        buffer[index++] * (1 << 16) +\n        buffer[index++] * (1 << 24);\n      const t =\n        buffer[index++] +\n        buffer[index++] * (1 << 8) +\n        buffer[index++] * (1 << 16) +\n        buffer[index++] * (1 << 24);\n\n      value = new Timestamp({ i, t });\n    } else if (elementType === constants.BSON_DATA_MIN_KEY) {\n      value = new MinKey();\n    } else if (elementType === constants.BSON_DATA_MAX_KEY) {\n      value = new MaxKey();\n    } else if (elementType === constants.BSON_DATA_CODE) {\n      const stringSize =\n        buffer[index++] |\n        (buffer[index++] << 8) |\n        (buffer[index++] << 16) |\n        (buffer[index++] << 24);\n      if (\n        stringSize <= 0 ||\n        stringSize > buffer.length - index ||\n        buffer[index + stringSize - 1] !== 0\n      ) {\n        throw new BSONError('bad string length in bson');\n      }\n      const functionString = getValidatedString(\n        buffer,\n        index,\n        index + stringSize - 1,\n        shouldValidateKey\n      );\n\n      value = new Code(functionString);\n\n      // Update parse index position\n      index = index + stringSize;\n    } else if (elementType === constants.BSON_DATA_CODE_W_SCOPE) {\n      const totalSize =\n        buffer[index++] |\n        (buffer[index++] << 8) |\n        (buffer[index++] << 16) |\n        (buffer[index++] << 24);\n\n      // Element cannot be shorter than totalSize + stringSize + documentSize + terminator\n      if (totalSize < 4 + 4 + 4 + 1) {\n        throw new BSONError('code_w_scope total size shorter minimum expected length');\n      }\n\n      // Get the code string size\n      const stringSize =\n        buffer[index++] |\n        (buffer[index++] << 8) |\n        (buffer[index++] << 16) |\n        (buffer[index++] << 24);\n      // Check if we have a valid string\n      if (\n        stringSize <= 0 ||\n        stringSize > buffer.length - index ||\n        buffer[index + stringSize - 1] !== 0\n      ) {\n        throw new BSONError('bad string length in bson');\n      }\n\n      // Javascript function\n      const functionString = getValidatedString(\n        buffer,\n        index,\n        index + stringSize - 1,\n        shouldValidateKey\n      );\n      // Update parse index position\n      index = index + stringSize;\n      // Parse the element\n      const _index = index;\n      // Decode the size of the object document\n      const objectSize =\n        buffer[index] |\n        (buffer[index + 1] << 8) |\n        (buffer[index + 2] << 16) |\n        (buffer[index + 3] << 24);\n      // Decode the scope object\n      const scopeObject = deserializeObject(buffer, _index, options, false);\n      // Adjust the index\n      index = index + objectSize;\n\n      // Check if field length is too short\n      if (totalSize < 4 + 4 + objectSize + stringSize) {\n        throw new BSONError('code_w_scope total size is too short, truncating scope');\n      }\n\n      // Check if totalSize field is too long\n      if (totalSize > 4 + 4 + objectSize + stringSize) {\n        throw new BSONError('code_w_scope total size is too long, clips outer document');\n      }\n\n      value = new Code(functionString, scopeObject);\n    } else if (elementType === constants.BSON_DATA_DBPOINTER) {\n      // Get the code string size\n      const stringSize =\n        buffer[index++] |\n        (buffer[index++] << 8) |\n        (buffer[index++] << 16) |\n        (buffer[index++] << 24);\n      // Check if we have a valid string\n      if (\n        stringSize <= 0 ||\n        stringSize > buffer.length - index ||\n        buffer[index + stringSize - 1] !== 0\n      )\n        throw new BSONError('bad string length in bson');\n      // Namespace\n      if (validation != null && validation.utf8) {\n        if (!validateUtf8(buffer, index, index + stringSize - 1)) {\n          throw new BSONError('Invalid UTF-8 string in BSON document');\n        }\n      }\n      const namespace = ByteUtils.toUTF8(buffer, index, index + stringSize - 1);\n      // Update parse index position\n      index = index + stringSize;\n\n      // Read the oid\n      const oidBuffer = ByteUtils.allocate(12);\n      oidBuffer.set(buffer.subarray(index, index + 12), 0);\n      const oid = new ObjectId(oidBuffer);\n\n      // Update the index\n      index = index + 12;\n\n      // Upgrade to DBRef type\n      value = new DBRef(namespace, oid);\n    } else {\n      throw new BSONError(\n        `Detected unknown BSON type ${elementType.toString(16)} for fieldname \"${name}\"`\n      );\n    }\n    if (name === '__proto__') {\n      Object.defineProperty(object, name, {\n        value,\n        writable: true,\n        enumerable: true,\n        configurable: true\n      });\n    } else {\n      object[name] = value;\n    }\n  }\n\n  // Check if the deserialization was against a valid array/object\n  if (size !== index - startIndex) {\n    if (isArray) throw new BSONError('corrupt array bson');\n    throw new BSONError('corrupt object bson');\n  }\n\n  // if we did not find \"$ref\", \"$id\", \"$db\", or found an extraneous $key, don't make a DBRef\n  if (!isPossibleDBRef) return object;\n\n  if (isDBRefLike(object)) {\n    const copy = Object.assign({}, object) as Partial<DBRefLike>;\n    delete copy.$ref;\n    delete copy.$id;\n    delete copy.$db;\n    return new DBRef(object.$ref, object.$id, object.$db, copy);\n  }\n\n  return object;\n}\n\nfunction getValidatedString(\n  buffer: Uint8Array,\n  start: number,\n  end: number,\n  shouldValidateUtf8: boolean\n) {\n  const value = ByteUtils.toUTF8(buffer, start, end);\n  // if utf8 validation is on, do the check\n  if (shouldValidateUtf8) {\n    for (let i = 0; i < value.length; i++) {\n      if (value.charCodeAt(i) === 0xfffd) {\n        if (!validateUtf8(buffer, start, end)) {\n          throw new BSONError('Invalid UTF-8 string in BSON document');\n        }\n        break;\n      }\n    }\n  }\n  return value;\n}\n", "import { Binary } from '../binary';\nimport type { BSONSymbol, DBRef, Document, MaxKey } from '../bson';\nimport type { Code } from '../code';\nimport * as constants from '../constants';\nimport type { DBRefLike } from '../db_ref';\nimport type { Decimal128 } from '../decimal128';\nimport type { Double } from '../double';\nimport { BSONError, BSONVersionError } from '../error';\nimport type { Int32 } from '../int_32';\nimport { Long } from '../long';\nimport type { MinKey } from '../min_key';\nimport type { ObjectId } from '../objectid';\nimport type { BSONRegExp } from '../regexp';\nimport { ByteUtils } from '../utils/byte_utils';\nimport { isAnyArrayBuffer, isDate, isMap, isRegExp, isUint8Array } from './utils';\n\n/** @public */\nexport interface SerializeOptions {\n  /**\n   * the serializer will check if keys are valid.\n   * @defaultValue `false`\n   */\n  checkKeys?: boolean;\n  /**\n   * serialize the javascript functions\n   * @defaultValue `false`\n   */\n  serializeFunctions?: boolean;\n  /**\n   * serialize will not emit undefined fields\n   * note that the driver sets this to `false`\n   * @defaultValue `true`\n   */\n  ignoreUndefined?: boolean;\n  /** @internal Resize internal buffer */\n  minInternalBufferSize?: number;\n  /**\n   * the index in the buffer where we wish to start serializing into\n   * @defaultValue `0`\n   */\n  index?: number;\n}\n\nconst regexp = /\\x00/; // eslint-disable-line no-control-regex\nconst ignoreKeys = new Set(['$db', '$ref', '$id', '$clusterTime']);\n\n/*\n * isArray indicates if we are writing to a BSON array (type 0x04)\n * which forces the \"key\" which really an array index as a string to be written as ascii\n * This will catch any errors in index as a string generation\n */\n\nfunction serializeString(buffer: Uint8Array, key: string, value: string, index: number) {\n  // Encode String type\n  buffer[index++] = constants.BSON_DATA_STRING;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes + 1;\n  buffer[index - 1] = 0;\n  // Write the string\n  const size = ByteUtils.encodeUTF8Into(buffer, value, index + 4);\n  // Write the size of the string to buffer\n  buffer[index + 3] = ((size + 1) >> 24) & 0xff;\n  buffer[index + 2] = ((size + 1) >> 16) & 0xff;\n  buffer[index + 1] = ((size + 1) >> 8) & 0xff;\n  buffer[index] = (size + 1) & 0xff;\n  // Update index\n  index = index + 4 + size;\n  // Write zero\n  buffer[index++] = 0;\n  return index;\n}\n\nconst NUMBER_SPACE = new DataView(new ArrayBuffer(8), 0, 8);\nconst FOUR_BYTE_VIEW_ON_NUMBER = new Uint8Array(NUMBER_SPACE.buffer, 0, 4);\nconst EIGHT_BYTE_VIEW_ON_NUMBER = new Uint8Array(NUMBER_SPACE.buffer, 0, 8);\n\nfunction serializeNumber(buffer: Uint8Array, key: string, value: number, index: number) {\n  const isNegativeZero = Object.is(value, -0);\n\n  const type =\n    !isNegativeZero &&\n    Number.isSafeInteger(value) &&\n    value <= constants.BSON_INT32_MAX &&\n    value >= constants.BSON_INT32_MIN\n      ? constants.BSON_DATA_INT\n      : constants.BSON_DATA_NUMBER;\n\n  if (type === constants.BSON_DATA_INT) {\n    NUMBER_SPACE.setInt32(0, value, true);\n  } else {\n    NUMBER_SPACE.setFloat64(0, value, true);\n  }\n\n  const bytes =\n    type === constants.BSON_DATA_INT ? FOUR_BYTE_VIEW_ON_NUMBER : EIGHT_BYTE_VIEW_ON_NUMBER;\n\n  buffer[index++] = type;\n\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0x00;\n\n  buffer.set(bytes, index);\n  index += bytes.byteLength;\n\n  return index;\n}\n\nfunction serializeBigInt(buffer: Uint8Array, key: string, value: bigint, index: number) {\n  buffer[index++] = constants.BSON_DATA_LONG;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index += numberOfWrittenBytes;\n  buffer[index++] = 0;\n  NUMBER_SPACE.setBigInt64(0, value, true);\n  // Write BigInt value\n  buffer.set(EIGHT_BYTE_VIEW_ON_NUMBER, index);\n  index += EIGHT_BYTE_VIEW_ON_NUMBER.byteLength;\n  return index;\n}\n\nfunction serializeNull(buffer: Uint8Array, key: string, _: unknown, index: number) {\n  // Set long type\n  buffer[index++] = constants.BSON_DATA_NULL;\n\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n  return index;\n}\n\nfunction serializeBoolean(buffer: Uint8Array, key: string, value: boolean, index: number) {\n  // Write the type\n  buffer[index++] = constants.BSON_DATA_BOOLEAN;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n  // Encode the boolean value\n  buffer[index++] = value ? 1 : 0;\n  return index;\n}\n\nfunction serializeDate(buffer: Uint8Array, key: string, value: Date, index: number) {\n  // Write the type\n  buffer[index++] = constants.BSON_DATA_DATE;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n\n  // Write the date\n  const dateInMilis = Long.fromNumber(value.getTime());\n  const lowBits = dateInMilis.getLowBits();\n  const highBits = dateInMilis.getHighBits();\n  // Encode low bits\n  buffer[index++] = lowBits & 0xff;\n  buffer[index++] = (lowBits >> 8) & 0xff;\n  buffer[index++] = (lowBits >> 16) & 0xff;\n  buffer[index++] = (lowBits >> 24) & 0xff;\n  // Encode high bits\n  buffer[index++] = highBits & 0xff;\n  buffer[index++] = (highBits >> 8) & 0xff;\n  buffer[index++] = (highBits >> 16) & 0xff;\n  buffer[index++] = (highBits >> 24) & 0xff;\n  return index;\n}\n\nfunction serializeRegExp(buffer: Uint8Array, key: string, value: RegExp, index: number) {\n  // Write the type\n  buffer[index++] = constants.BSON_DATA_REGEXP;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n  if (value.source && value.source.match(regexp) != null) {\n    throw new BSONError('value ' + value.source + ' must not contain null bytes');\n  }\n  // Adjust the index\n  index = index + ByteUtils.encodeUTF8Into(buffer, value.source, index);\n  // Write zero\n  buffer[index++] = 0x00;\n  // Write the parameters\n  if (value.ignoreCase) buffer[index++] = 0x69; // i\n  if (value.global) buffer[index++] = 0x73; // s\n  if (value.multiline) buffer[index++] = 0x6d; // m\n\n  // Add ending zero\n  buffer[index++] = 0x00;\n  return index;\n}\n\nfunction serializeBSONRegExp(buffer: Uint8Array, key: string, value: BSONRegExp, index: number) {\n  // Write the type\n  buffer[index++] = constants.BSON_DATA_REGEXP;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n\n  // Check the pattern for 0 bytes\n  if (value.pattern.match(regexp) != null) {\n    // The BSON spec doesn't allow keys with null bytes because keys are\n    // null-terminated.\n    throw new BSONError('pattern ' + value.pattern + ' must not contain null bytes');\n  }\n\n  // Adjust the index\n  index = index + ByteUtils.encodeUTF8Into(buffer, value.pattern, index);\n  // Write zero\n  buffer[index++] = 0x00;\n  // Write the options\n  const sortedOptions = value.options.split('').sort().join('');\n  index = index + ByteUtils.encodeUTF8Into(buffer, sortedOptions, index);\n  // Add ending zero\n  buffer[index++] = 0x00;\n  return index;\n}\n\nfunction serializeMinMax(buffer: Uint8Array, key: string, value: MinKey | MaxKey, index: number) {\n  // Write the type of either min or max key\n  if (value === null) {\n    buffer[index++] = constants.BSON_DATA_NULL;\n  } else if (value._bsontype === 'MinKey') {\n    buffer[index++] = constants.BSON_DATA_MIN_KEY;\n  } else {\n    buffer[index++] = constants.BSON_DATA_MAX_KEY;\n  }\n\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n  return index;\n}\n\nfunction serializeObjectId(buffer: Uint8Array, key: string, value: ObjectId, index: number) {\n  // Write the type\n  buffer[index++] = constants.BSON_DATA_OID;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n\n  // Write the objectId into the shared buffer\n  if (isUint8Array(value.id)) {\n    buffer.set(value.id.subarray(0, 12), index);\n  } else {\n    throw new BSONError('object [' + JSON.stringify(value) + '] is not a valid ObjectId');\n  }\n\n  // Adjust index\n  return index + 12;\n}\n\nfunction serializeBuffer(buffer: Uint8Array, key: string, value: Uint8Array, index: number) {\n  // Write the type\n  buffer[index++] = constants.BSON_DATA_BINARY;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n  // Get size of the buffer (current write point)\n  const size = value.length;\n  // Write the size of the string to buffer\n  buffer[index++] = size & 0xff;\n  buffer[index++] = (size >> 8) & 0xff;\n  buffer[index++] = (size >> 16) & 0xff;\n  buffer[index++] = (size >> 24) & 0xff;\n  // Write the default subtype\n  buffer[index++] = constants.BSON_BINARY_SUBTYPE_DEFAULT;\n  // Copy the content form the binary field to the buffer\n  buffer.set(value, index);\n  // Adjust the index\n  index = index + size;\n  return index;\n}\n\nfunction serializeObject(\n  buffer: Uint8Array,\n  key: string,\n  value: Document,\n  index: number,\n  checkKeys: boolean,\n  depth: number,\n  serializeFunctions: boolean,\n  ignoreUndefined: boolean,\n  path: Set<Document>\n) {\n  if (path.has(value)) {\n    throw new BSONError('Cannot convert circular structure to BSON');\n  }\n\n  path.add(value);\n\n  // Write the type\n  buffer[index++] = Array.isArray(value) ? constants.BSON_DATA_ARRAY : constants.BSON_DATA_OBJECT;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n  const endIndex = serializeInto(\n    buffer,\n    value,\n    checkKeys,\n    index,\n    depth + 1,\n    serializeFunctions,\n    ignoreUndefined,\n    path\n  );\n\n  path.delete(value);\n\n  return endIndex;\n}\n\nfunction serializeDecimal128(buffer: Uint8Array, key: string, value: Decimal128, index: number) {\n  buffer[index++] = constants.BSON_DATA_DECIMAL128;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n  // Write the data from the value\n  buffer.set(value.bytes.subarray(0, 16), index);\n  return index + 16;\n}\n\nfunction serializeLong(buffer: Uint8Array, key: string, value: Long, index: number) {\n  // Write the type\n  buffer[index++] =\n    value._bsontype === 'Long' ? constants.BSON_DATA_LONG : constants.BSON_DATA_TIMESTAMP;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n  // Write the date\n  const lowBits = value.getLowBits();\n  const highBits = value.getHighBits();\n  // Encode low bits\n  buffer[index++] = lowBits & 0xff;\n  buffer[index++] = (lowBits >> 8) & 0xff;\n  buffer[index++] = (lowBits >> 16) & 0xff;\n  buffer[index++] = (lowBits >> 24) & 0xff;\n  // Encode high bits\n  buffer[index++] = highBits & 0xff;\n  buffer[index++] = (highBits >> 8) & 0xff;\n  buffer[index++] = (highBits >> 16) & 0xff;\n  buffer[index++] = (highBits >> 24) & 0xff;\n  return index;\n}\n\nfunction serializeInt32(buffer: Uint8Array, key: string, value: Int32 | number, index: number) {\n  value = value.valueOf();\n  // Set int type 32 bits or less\n  buffer[index++] = constants.BSON_DATA_INT;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n  // Write the int value\n  buffer[index++] = value & 0xff;\n  buffer[index++] = (value >> 8) & 0xff;\n  buffer[index++] = (value >> 16) & 0xff;\n  buffer[index++] = (value >> 24) & 0xff;\n  return index;\n}\n\nfunction serializeDouble(buffer: Uint8Array, key: string, value: Double, index: number) {\n  // Encode as double\n  buffer[index++] = constants.BSON_DATA_NUMBER;\n\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n\n  // Write float\n  NUMBER_SPACE.setFloat64(0, value.value, true);\n  buffer.set(EIGHT_BYTE_VIEW_ON_NUMBER, index);\n\n  // Adjust index\n  index = index + 8;\n  return index;\n}\n\nfunction serializeFunction(buffer: Uint8Array, key: string, value: Function, index: number) {\n  buffer[index++] = constants.BSON_DATA_CODE;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n  // Function string\n  const functionString = value.toString();\n\n  // Write the string\n  const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;\n  // Write the size of the string to buffer\n  buffer[index] = size & 0xff;\n  buffer[index + 1] = (size >> 8) & 0xff;\n  buffer[index + 2] = (size >> 16) & 0xff;\n  buffer[index + 3] = (size >> 24) & 0xff;\n  // Update index\n  index = index + 4 + size - 1;\n  // Write zero\n  buffer[index++] = 0;\n  return index;\n}\n\nfunction serializeCode(\n  buffer: Uint8Array,\n  key: string,\n  value: Code,\n  index: number,\n  checkKeys = false,\n  depth = 0,\n  serializeFunctions = false,\n  ignoreUndefined = true,\n  path: Set<Document>\n) {\n  if (value.scope && typeof value.scope === 'object') {\n    // Write the type\n    buffer[index++] = constants.BSON_DATA_CODE_W_SCOPE;\n    // Number of written bytes\n    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n    // Encode the name\n    index = index + numberOfWrittenBytes;\n    buffer[index++] = 0;\n\n    // Starting index\n    let startIndex = index;\n\n    // Serialize the function\n    // Get the function string\n    const functionString = value.code;\n    // Index adjustment\n    index = index + 4;\n    // Write string into buffer\n    const codeSize = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;\n    // Write the size of the string to buffer\n    buffer[index] = codeSize & 0xff;\n    buffer[index + 1] = (codeSize >> 8) & 0xff;\n    buffer[index + 2] = (codeSize >> 16) & 0xff;\n    buffer[index + 3] = (codeSize >> 24) & 0xff;\n    // Write end 0\n    buffer[index + 4 + codeSize - 1] = 0;\n    // Write the\n    index = index + codeSize + 4;\n\n    // Serialize the scope value\n    const endIndex = serializeInto(\n      buffer,\n      value.scope,\n      checkKeys,\n      index,\n      depth + 1,\n      serializeFunctions,\n      ignoreUndefined,\n      path\n    );\n    index = endIndex - 1;\n\n    // Writ the total\n    const totalSize = endIndex - startIndex;\n\n    // Write the total size of the object\n    buffer[startIndex++] = totalSize & 0xff;\n    buffer[startIndex++] = (totalSize >> 8) & 0xff;\n    buffer[startIndex++] = (totalSize >> 16) & 0xff;\n    buffer[startIndex++] = (totalSize >> 24) & 0xff;\n    // Write trailing zero\n    buffer[index++] = 0;\n  } else {\n    buffer[index++] = constants.BSON_DATA_CODE;\n    // Number of written bytes\n    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n    // Encode the name\n    index = index + numberOfWrittenBytes;\n    buffer[index++] = 0;\n    // Function string\n    const functionString = value.code.toString();\n    // Write the string\n    const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;\n    // Write the size of the string to buffer\n    buffer[index] = size & 0xff;\n    buffer[index + 1] = (size >> 8) & 0xff;\n    buffer[index + 2] = (size >> 16) & 0xff;\n    buffer[index + 3] = (size >> 24) & 0xff;\n    // Update index\n    index = index + 4 + size - 1;\n    // Write zero\n    buffer[index++] = 0;\n  }\n\n  return index;\n}\n\nfunction serializeBinary(buffer: Uint8Array, key: string, value: Binary, index: number) {\n  // Write the type\n  buffer[index++] = constants.BSON_DATA_BINARY;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n  // Extract the buffer\n  const data = value.buffer;\n  // Calculate size\n  let size = value.position;\n  // Add the deprecated 02 type 4 bytes of size to total\n  if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY) size = size + 4;\n  // Write the size of the string to buffer\n  buffer[index++] = size & 0xff;\n  buffer[index++] = (size >> 8) & 0xff;\n  buffer[index++] = (size >> 16) & 0xff;\n  buffer[index++] = (size >> 24) & 0xff;\n  // Write the subtype to the buffer\n  buffer[index++] = value.sub_type;\n\n  // If we have binary type 2 the 4 first bytes are the size\n  if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {\n    size = size - 4;\n    buffer[index++] = size & 0xff;\n    buffer[index++] = (size >> 8) & 0xff;\n    buffer[index++] = (size >> 16) & 0xff;\n    buffer[index++] = (size >> 24) & 0xff;\n  }\n\n  // Write the data to the object\n  buffer.set(data, index);\n  // Adjust the index\n  index = index + value.position;\n  return index;\n}\n\nfunction serializeSymbol(buffer: Uint8Array, key: string, value: BSONSymbol, index: number) {\n  // Write the type\n  buffer[index++] = constants.BSON_DATA_SYMBOL;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n  // Write the string\n  const size = ByteUtils.encodeUTF8Into(buffer, value.value, index + 4) + 1;\n  // Write the size of the string to buffer\n  buffer[index] = size & 0xff;\n  buffer[index + 1] = (size >> 8) & 0xff;\n  buffer[index + 2] = (size >> 16) & 0xff;\n  buffer[index + 3] = (size >> 24) & 0xff;\n  // Update index\n  index = index + 4 + size - 1;\n  // Write zero\n  buffer[index++] = 0x00;\n  return index;\n}\n\nfunction serializeDBRef(\n  buffer: Uint8Array,\n  key: string,\n  value: DBRef,\n  index: number,\n  depth: number,\n  serializeFunctions: boolean,\n  path: Set<Document>\n) {\n  // Write the type\n  buffer[index++] = constants.BSON_DATA_OBJECT;\n  // Number of written bytes\n  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);\n\n  // Encode the name\n  index = index + numberOfWrittenBytes;\n  buffer[index++] = 0;\n\n  let startIndex = index;\n  let output: DBRefLike = {\n    $ref: value.collection || value.namespace, // \"namespace\" was what library 1.x called \"collection\"\n    $id: value.oid\n  };\n\n  if (value.db != null) {\n    output.$db = value.db;\n  }\n\n  output = Object.assign(output, value.fields);\n  const endIndex = serializeInto(\n    buffer,\n    output,\n    false,\n    index,\n    depth + 1,\n    serializeFunctions,\n    true,\n    path\n  );\n\n  // Calculate object size\n  const size = endIndex - startIndex;\n  // Write the size\n  buffer[startIndex++] = size & 0xff;\n  buffer[startIndex++] = (size >> 8) & 0xff;\n  buffer[startIndex++] = (size >> 16) & 0xff;\n  buffer[startIndex++] = (size >> 24) & 0xff;\n  // Set index\n  return endIndex;\n}\n\nexport function serializeInto(\n  buffer: Uint8Array,\n  object: Document,\n  checkKeys: boolean,\n  startingIndex: number,\n  depth: number,\n  serializeFunctions: boolean,\n  ignoreUndefined: boolean,\n  path: Set<Document> | null\n): number {\n  if (path == null) {\n    // We are at the root input\n    if (object == null) {\n      // ONLY the root should turn into an empty document\n      // BSON Empty document has a size of 5 (LE)\n      buffer[0] = 0x05;\n      buffer[1] = 0x00;\n      buffer[2] = 0x00;\n      buffer[3] = 0x00;\n      // All documents end with null terminator\n      buffer[4] = 0x00;\n      return 5;\n    }\n\n    if (Array.isArray(object)) {\n      throw new BSONError('serialize does not support an array as the root input');\n    }\n    if (typeof object !== 'object') {\n      throw new BSONError('serialize does not support non-object as the root input');\n    } else if ('_bsontype' in object && typeof object._bsontype === 'string') {\n      throw new BSONError(`BSON types cannot be serialized as a document`);\n    } else if (\n      isDate(object) ||\n      isRegExp(object) ||\n      isUint8Array(object) ||\n      isAnyArrayBuffer(object)\n    ) {\n      throw new BSONError(`date, regexp, typedarray, and arraybuffer cannot be BSON documents`);\n    }\n\n    path = new Set();\n  }\n\n  // Push the object to the path\n  path.add(object);\n\n  // Start place to serialize into\n  let index = startingIndex + 4;\n\n  // Special case isArray\n  if (Array.isArray(object)) {\n    // Get object keys\n    for (let i = 0; i < object.length; i++) {\n      const key = `${i}`;\n      let value = object[i];\n\n      // Is there an override value\n      if (typeof value?.toBSON === 'function') {\n        value = value.toBSON();\n      }\n\n      if (typeof value === 'string') {\n        index = serializeString(buffer, key, value, index);\n      } else if (typeof value === 'number') {\n        index = serializeNumber(buffer, key, value, index);\n      } else if (typeof value === 'bigint') {\n        index = serializeBigInt(buffer, key, value, index);\n      } else if (typeof value === 'boolean') {\n        index = serializeBoolean(buffer, key, value, index);\n      } else if (value instanceof Date || isDate(value)) {\n        index = serializeDate(buffer, key, value, index);\n      } else if (value === undefined) {\n        index = serializeNull(buffer, key, value, index);\n      } else if (value === null) {\n        index = serializeNull(buffer, key, value, index);\n      } else if (isUint8Array(value)) {\n        index = serializeBuffer(buffer, key, value, index);\n      } else if (value instanceof RegExp || isRegExp(value)) {\n        index = serializeRegExp(buffer, key, value, index);\n      } else if (typeof value === 'object' && value._bsontype == null) {\n        index = serializeObject(\n          buffer,\n          key,\n          value,\n          index,\n          checkKeys,\n          depth,\n          serializeFunctions,\n          ignoreUndefined,\n          path\n        );\n      } else if (\n        typeof value === 'object' &&\n        value[Symbol.for('@@mdb.bson.version')] !== constants.BSON_MAJOR_VERSION\n      ) {\n        throw new BSONVersionError();\n      } else if (value._bsontype === 'ObjectId') {\n        index = serializeObjectId(buffer, key, value, index);\n      } else if (value._bsontype === 'Decimal128') {\n        index = serializeDecimal128(buffer, key, value, index);\n      } else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {\n        index = serializeLong(buffer, key, value, index);\n      } else if (value._bsontype === 'Double') {\n        index = serializeDouble(buffer, key, value, index);\n      } else if (typeof value === 'function' && serializeFunctions) {\n        index = serializeFunction(buffer, key, value, index);\n      } else if (value._bsontype === 'Code') {\n        index = serializeCode(\n          buffer,\n          key,\n          value,\n          index,\n          checkKeys,\n          depth,\n          serializeFunctions,\n          ignoreUndefined,\n          path\n        );\n      } else if (value._bsontype === 'Binary') {\n        index = serializeBinary(buffer, key, value, index);\n      } else if (value._bsontype === 'BSONSymbol') {\n        index = serializeSymbol(buffer, key, value, index);\n      } else if (value._bsontype === 'DBRef') {\n        index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);\n      } else if (value._bsontype === 'BSONRegExp') {\n        index = serializeBSONRegExp(buffer, key, value, index);\n      } else if (value._bsontype === 'Int32') {\n        index = serializeInt32(buffer, key, value, index);\n      } else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {\n        index = serializeMinMax(buffer, key, value, index);\n      } else if (typeof value._bsontype !== 'undefined') {\n        throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);\n      }\n    }\n  } else if (object instanceof Map || isMap(object)) {\n    const iterator = object.entries();\n    let done = false;\n\n    while (!done) {\n      // Unpack the next entry\n      const entry = iterator.next();\n      done = !!entry.done;\n      // Are we done, then skip and terminate\n      if (done) continue;\n\n      // Get the entry values\n      const key = entry.value[0];\n      let value = entry.value[1];\n\n      if (typeof value?.toBSON === 'function') {\n        value = value.toBSON();\n      }\n\n      // Check the type of the value\n      const type = typeof value;\n\n      // Check the key and throw error if it's illegal\n      if (typeof key === 'string' && !ignoreKeys.has(key)) {\n        if (key.match(regexp) != null) {\n          // The BSON spec doesn't allow keys with null bytes because keys are\n          // null-terminated.\n          throw new BSONError('key ' + key + ' must not contain null bytes');\n        }\n\n        if (checkKeys) {\n          if ('$' === key[0]) {\n            throw new BSONError('key ' + key + \" must not start with '$'\");\n          } else if (~key.indexOf('.')) {\n            throw new BSONError('key ' + key + \" must not contain '.'\");\n          }\n        }\n      }\n\n      if (type === 'string') {\n        index = serializeString(buffer, key, value, index);\n      } else if (type === 'number') {\n        index = serializeNumber(buffer, key, value, index);\n      } else if (type === 'bigint') {\n        index = serializeBigInt(buffer, key, value, index);\n      } else if (type === 'boolean') {\n        index = serializeBoolean(buffer, key, value, index);\n      } else if (value instanceof Date || isDate(value)) {\n        index = serializeDate(buffer, key, value, index);\n      } else if (value === null || (value === undefined && ignoreUndefined === false)) {\n        index = serializeNull(buffer, key, value, index);\n      } else if (isUint8Array(value)) {\n        index = serializeBuffer(buffer, key, value, index);\n      } else if (value instanceof RegExp || isRegExp(value)) {\n        index = serializeRegExp(buffer, key, value, index);\n      } else if (type === 'object' && value._bsontype == null) {\n        index = serializeObject(\n          buffer,\n          key,\n          value,\n          index,\n          checkKeys,\n          depth,\n          serializeFunctions,\n          ignoreUndefined,\n          path\n        );\n      } else if (\n        typeof value === 'object' &&\n        value[Symbol.for('@@mdb.bson.version')] !== constants.BSON_MAJOR_VERSION\n      ) {\n        throw new BSONVersionError();\n      } else if (value._bsontype === 'ObjectId') {\n        index = serializeObjectId(buffer, key, value, index);\n      } else if (type === 'object' && value._bsontype === 'Decimal128') {\n        index = serializeDecimal128(buffer, key, value, index);\n      } else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {\n        index = serializeLong(buffer, key, value, index);\n      } else if (value._bsontype === 'Double') {\n        index = serializeDouble(buffer, key, value, index);\n      } else if (value._bsontype === 'Code') {\n        index = serializeCode(\n          buffer,\n          key,\n          value,\n          index,\n          checkKeys,\n          depth,\n          serializeFunctions,\n          ignoreUndefined,\n          path\n        );\n      } else if (typeof value === 'function' && serializeFunctions) {\n        index = serializeFunction(buffer, key, value, index);\n      } else if (value._bsontype === 'Binary') {\n        index = serializeBinary(buffer, key, value, index);\n      } else if (value._bsontype === 'BSONSymbol') {\n        index = serializeSymbol(buffer, key, value, index);\n      } else if (value._bsontype === 'DBRef') {\n        index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);\n      } else if (value._bsontype === 'BSONRegExp') {\n        index = serializeBSONRegExp(buffer, key, value, index);\n      } else if (value._bsontype === 'Int32') {\n        index = serializeInt32(buffer, key, value, index);\n      } else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {\n        index = serializeMinMax(buffer, key, value, index);\n      } else if (typeof value._bsontype !== 'undefined') {\n        throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);\n      }\n    }\n  } else {\n    if (typeof object?.toBSON === 'function') {\n      // Provided a custom serialization method\n      object = object.toBSON();\n      if (object != null && typeof object !== 'object') {\n        throw new BSONError('toBSON function did not return an object');\n      }\n    }\n\n    // Iterate over all the keys\n    for (const key of Object.keys(object)) {\n      let value = object[key];\n      // Is there an override value\n      if (typeof value?.toBSON === 'function') {\n        value = value.toBSON();\n      }\n\n      // Check the type of the value\n      const type = typeof value;\n\n      // Check the key and throw error if it's illegal\n      if (typeof key === 'string' && !ignoreKeys.has(key)) {\n        if (key.match(regexp) != null) {\n          // The BSON spec doesn't allow keys with null bytes because keys are\n          // null-terminated.\n          throw new BSONError('key ' + key + ' must not contain null bytes');\n        }\n\n        if (checkKeys) {\n          if ('$' === key[0]) {\n            throw new BSONError('key ' + key + \" must not start with '$'\");\n          } else if (~key.indexOf('.')) {\n            throw new BSONError('key ' + key + \" must not contain '.'\");\n          }\n        }\n      }\n\n      if (type === 'string') {\n        index = serializeString(buffer, key, value, index);\n      } else if (type === 'number') {\n        index = serializeNumber(buffer, key, value, index);\n      } else if (type === 'bigint') {\n        index = serializeBigInt(buffer, key, value, index);\n      } else if (type === 'boolean') {\n        index = serializeBoolean(buffer, key, value, index);\n      } else if (value instanceof Date || isDate(value)) {\n        index = serializeDate(buffer, key, value, index);\n      } else if (value === undefined) {\n        if (ignoreUndefined === false) index = serializeNull(buffer, key, value, index);\n      } else if (value === null) {\n        index = serializeNull(buffer, key, value, index);\n      } else if (isUint8Array(value)) {\n        index = serializeBuffer(buffer, key, value, index);\n      } else if (value instanceof RegExp || isRegExp(value)) {\n        index = serializeRegExp(buffer, key, value, index);\n      } else if (type === 'object' && value._bsontype == null) {\n        index = serializeObject(\n          buffer,\n          key,\n          value,\n          index,\n          checkKeys,\n          depth,\n          serializeFunctions,\n          ignoreUndefined,\n          path\n        );\n      } else if (\n        typeof value === 'object' &&\n        value[Symbol.for('@@mdb.bson.version')] !== constants.BSON_MAJOR_VERSION\n      ) {\n        throw new BSONVersionError();\n      } else if (value._bsontype === 'ObjectId') {\n        index = serializeObjectId(buffer, key, value, index);\n      } else if (type === 'object' && value._bsontype === 'Decimal128') {\n        index = serializeDecimal128(buffer, key, value, index);\n      } else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {\n        index = serializeLong(buffer, key, value, index);\n      } else if (value._bsontype === 'Double') {\n        index = serializeDouble(buffer, key, value, index);\n      } else if (value._bsontype === 'Code') {\n        index = serializeCode(\n          buffer,\n          key,\n          value,\n          index,\n          checkKeys,\n          depth,\n          serializeFunctions,\n          ignoreUndefined,\n          path\n        );\n      } else if (typeof value === 'function' && serializeFunctions) {\n        index = serializeFunction(buffer, key, value, index);\n      } else if (value._bsontype === 'Binary') {\n        index = serializeBinary(buffer, key, value, index);\n      } else if (value._bsontype === 'BSONSymbol') {\n        index = serializeSymbol(buffer, key, value, index);\n      } else if (value._bsontype === 'DBRef') {\n        index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);\n      } else if (value._bsontype === 'BSONRegExp') {\n        index = serializeBSONRegExp(buffer, key, value, index);\n      } else if (value._bsontype === 'Int32') {\n        index = serializeInt32(buffer, key, value, index);\n      } else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {\n        index = serializeMinMax(buffer, key, value, index);\n      } else if (typeof value._bsontype !== 'undefined') {\n        throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);\n      }\n    }\n  }\n\n  // Remove the path\n  path.delete(object);\n\n  // Final padding byte for object\n  buffer[index++] = 0x00;\n\n  // Final size\n  const size = index - startingIndex;\n  // Write the size of the object\n  buffer[startingIndex++] = size & 0xff;\n  buffer[startingIndex++] = (size >> 8) & 0xff;\n  buffer[startingIndex++] = (size >> 16) & 0xff;\n  buffer[startingIndex++] = (size >> 24) & 0xff;\n  return index;\n}\n", "import { Binary } from './binary';\nimport type { Document } from './bson';\nimport { Code } from './code';\nimport {\n  BSON_INT32_MAX,\n  BSON_INT32_MIN,\n  BSON_INT64_MAX,\n  BSON_INT64_MIN,\n  BSON_MAJOR_VERSION\n} from './constants';\nimport { DBRef, isDBRefLike } from './db_ref';\nimport { Decimal128 } from './decimal128';\nimport { Double } from './double';\nimport { BSONError, BSONRuntimeError, BSONVersionError } from './error';\nimport { Int32 } from './int_32';\nimport { Long } from './long';\nimport { MaxKey } from './max_key';\nimport { MinKey } from './min_key';\nimport { ObjectId } from './objectid';\nimport { isDate, isRegExp, isMap } from './parser/utils';\nimport { BSONRegExp } from './regexp';\nimport { BSONSymbol } from './symbol';\nimport { Timestamp } from './timestamp';\n\n/** @public */\nexport type EJSONOptions = {\n  /**\n   * Output using the Extended JSON v1 spec\n   * @defaultValue `false`\n   */\n  legacy?: boolean;\n  /**\n   * Enable Extended JSON's `relaxed` mode, which attempts to return native JS types where possible, rather than BSON types\n   * @defaultValue `false` */\n  relaxed?: boolean;\n  /**\n   * Enable native bigint support\n   * @defaultValue `false`\n   */\n  useBigInt64?: boolean;\n};\n\n/** @internal */\ntype BSONType =\n  | Binary\n  | Code\n  | DBRef\n  | Decimal128\n  | Double\n  | Int32\n  | Long\n  | MaxKey\n  | MinKey\n  | ObjectId\n  | BSONRegExp\n  | BSONSymbol\n  | Timestamp;\n\nfunction isBSONType(value: unknown): value is BSONType {\n  return (\n    value != null &&\n    typeof value === 'object' &&\n    '_bsontype' in value &&\n    typeof value._bsontype === 'string'\n  );\n}\n\n// all the types where we don't need to do any special processing and can just pass the EJSON\n//straight to type.fromExtendedJSON\nconst keysToCodecs = {\n  $oid: ObjectId,\n  $binary: Binary,\n  $uuid: Binary,\n  $symbol: BSONSymbol,\n  $numberInt: Int32,\n  $numberDecimal: Decimal128,\n  $numberDouble: Double,\n  $numberLong: Long,\n  $minKey: MinKey,\n  $maxKey: MaxKey,\n  $regex: BSONRegExp,\n  $regularExpression: BSONRegExp,\n  $timestamp: Timestamp\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction deserializeValue(value: any, options: EJSONOptions = {}) {\n  if (typeof value === 'number') {\n    // TODO(NODE-4377): EJSON js number handling diverges from BSON\n    const in32BitRange = value <= BSON_INT32_MAX && value >= BSON_INT32_MIN;\n    const in64BitRange = value <= BSON_INT64_MAX && value >= BSON_INT64_MIN;\n\n    if (options.relaxed || options.legacy) {\n      return value;\n    }\n\n    if (Number.isInteger(value) && !Object.is(value, -0)) {\n      // interpret as being of the smallest BSON integer type that can represent the number exactly\n      if (in32BitRange) {\n        return new Int32(value);\n      }\n      if (in64BitRange) {\n        if (options.useBigInt64) {\n          // eslint-disable-next-line no-restricted-globals -- This is allowed here as useBigInt64=true\n          return BigInt(value);\n        }\n        return Long.fromNumber(value);\n      }\n    }\n\n    // If the number is a non-integer or out of integer range, should interpret as BSON Double.\n    return new Double(value);\n  }\n\n  // from here on out we're looking for bson types, so bail if its not an object\n  if (value == null || typeof value !== 'object') return value;\n\n  // upgrade deprecated undefined to null\n  if (value.$undefined) return null;\n\n  const keys = Object.keys(value).filter(\n    k => k.startsWith('$') && value[k] != null\n  ) as (keyof typeof keysToCodecs)[];\n  for (let i = 0; i < keys.length; i++) {\n    const c = keysToCodecs[keys[i]];\n    if (c) return c.fromExtendedJSON(value, options);\n  }\n\n  if (value.$date != null) {\n    const d = value.$date;\n    const date = new Date();\n\n    if (options.legacy) {\n      if (typeof d === 'number') date.setTime(d);\n      else if (typeof d === 'string') date.setTime(Date.parse(d));\n      else if (typeof d === 'bigint') date.setTime(Number(d));\n      else throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);\n    } else {\n      if (typeof d === 'string') date.setTime(Date.parse(d));\n      else if (Long.isLong(d)) date.setTime(d.toNumber());\n      else if (typeof d === 'number' && options.relaxed) date.setTime(d);\n      else if (typeof d === 'bigint') date.setTime(Number(d));\n      else throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);\n    }\n    return date;\n  }\n\n  if (value.$code != null) {\n    const copy = Object.assign({}, value);\n    if (value.$scope) {\n      copy.$scope = deserializeValue(value.$scope);\n    }\n\n    return Code.fromExtendedJSON(value);\n  }\n\n  if (isDBRefLike(value) || value.$dbPointer) {\n    const v = value.$ref ? value : value.$dbPointer;\n\n    // we run into this in a \"degenerate EJSON\" case (with $id and $ref order flipped)\n    // because of the order JSON.parse goes through the document\n    if (v instanceof DBRef) return v;\n\n    const dollarKeys = Object.keys(v).filter(k => k.startsWith('$'));\n    let valid = true;\n    dollarKeys.forEach(k => {\n      if (['$ref', '$id', '$db'].indexOf(k) === -1) valid = false;\n    });\n\n    // only make DBRef if $ keys are all valid\n    if (valid) return DBRef.fromExtendedJSON(v);\n  }\n\n  return value;\n}\n\ntype EJSONSerializeOptions = EJSONOptions & {\n  seenObjects: { obj: unknown; propertyName: string }[];\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction serializeArray(array: any[], options: EJSONSerializeOptions): any[] {\n  return array.map((v: unknown, index: number) => {\n    options.seenObjects.push({ propertyName: `index ${index}`, obj: null });\n    try {\n      return serializeValue(v, options);\n    } finally {\n      options.seenObjects.pop();\n    }\n  });\n}\n\nfunction getISOString(date: Date) {\n  const isoStr = date.toISOString();\n  // we should only show milliseconds in timestamp if they're non-zero\n  return date.getUTCMilliseconds() !== 0 ? isoStr : isoStr.slice(0, -5) + 'Z';\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction serializeValue(value: any, options: EJSONSerializeOptions): any {\n  if (value instanceof Map || isMap(value)) {\n    const obj: Record<string, unknown> = Object.create(null);\n    for (const [k, v] of value) {\n      if (typeof k !== 'string') {\n        throw new BSONError('Can only serialize maps with string keys');\n      }\n      obj[k] = v;\n    }\n\n    return serializeValue(obj, options);\n  }\n\n  if ((typeof value === 'object' || typeof value === 'function') && value !== null) {\n    const index = options.seenObjects.findIndex(entry => entry.obj === value);\n    if (index !== -1) {\n      const props = options.seenObjects.map(entry => entry.propertyName);\n      const leadingPart = props\n        .slice(0, index)\n        .map(prop => `${prop} -> `)\n        .join('');\n      const alreadySeen = props[index];\n      const circularPart =\n        ' -> ' +\n        props\n          .slice(index + 1, props.length - 1)\n          .map(prop => `${prop} -> `)\n          .join('');\n      const current = props[props.length - 1];\n      const leadingSpace = ' '.repeat(leadingPart.length + alreadySeen.length / 2);\n      const dashes = '-'.repeat(\n        circularPart.length + (alreadySeen.length + current.length) / 2 - 1\n      );\n\n      throw new BSONError(\n        'Converting circular structure to EJSON:\\n' +\n          `    ${leadingPart}${alreadySeen}${circularPart}${current}\\n` +\n          `    ${leadingSpace}\\\\${dashes}/`\n      );\n    }\n    options.seenObjects[options.seenObjects.length - 1].obj = value;\n  }\n\n  if (Array.isArray(value)) return serializeArray(value, options);\n\n  if (value === undefined) return null;\n\n  if (value instanceof Date || isDate(value)) {\n    const dateNum = value.getTime(),\n      // is it in year range 1970-9999?\n      inRange = dateNum > -1 && dateNum < 253402318800000;\n\n    if (options.legacy) {\n      return options.relaxed && inRange\n        ? { $date: value.getTime() }\n        : { $date: getISOString(value) };\n    }\n    return options.relaxed && inRange\n      ? { $date: getISOString(value) }\n      : { $date: { $numberLong: value.getTime().toString() } };\n  }\n\n  if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) {\n    if (Number.isInteger(value) && !Object.is(value, -0)) {\n      // interpret as being of the smallest BSON integer type that can represent the number exactly\n      if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {\n        return { $numberInt: value.toString() };\n      }\n      if (value >= BSON_INT64_MIN && value <= BSON_INT64_MAX) {\n        // TODO(NODE-4377): EJSON js number handling diverges from BSON\n        return { $numberLong: value.toString() };\n      }\n    }\n    return { $numberDouble: Object.is(value, -0) ? '-0.0' : value.toString() };\n  }\n\n  if (typeof value === 'bigint') {\n    /* eslint-disable no-restricted-globals -- This is allowed as we are accepting a bigint as input */\n    if (!options.relaxed) {\n      return { $numberLong: BigInt.asIntN(64, value).toString() };\n    }\n    return Number(BigInt.asIntN(64, value));\n    /* eslint-enable */\n  }\n\n  if (value instanceof RegExp || isRegExp(value)) {\n    let flags = value.flags;\n    if (flags === undefined) {\n      const match = value.toString().match(/[gimuy]*$/);\n      if (match) {\n        flags = match[0];\n      }\n    }\n\n    const rx = new BSONRegExp(value.source, flags);\n    return rx.toExtendedJSON(options);\n  }\n\n  if (value != null && typeof value === 'object') return serializeDocument(value, options);\n  return value;\n}\n\nconst BSON_TYPE_MAPPINGS = {\n  Binary: (o: Binary) => new Binary(o.value(), o.sub_type),\n  Code: (o: Code) => new Code(o.code, o.scope),\n  DBRef: (o: DBRef) => new DBRef(o.collection || o.namespace, o.oid, o.db, o.fields), // \"namespace\" for 1.x library backwards compat\n  Decimal128: (o: Decimal128) => new Decimal128(o.bytes),\n  Double: (o: Double) => new Double(o.value),\n  Int32: (o: Int32) => new Int32(o.value),\n  Long: (\n    o: Long & {\n      low_: number;\n      high_: number;\n      unsigned_: boolean | undefined;\n    }\n  ) =>\n    Long.fromBits(\n      // underscore variants for 1.x backwards compatibility\n      o.low != null ? o.low : o.low_,\n      o.low != null ? o.high : o.high_,\n      o.low != null ? o.unsigned : o.unsigned_\n    ),\n  MaxKey: () => new MaxKey(),\n  MinKey: () => new MinKey(),\n  ObjectId: (o: ObjectId) => new ObjectId(o),\n  BSONRegExp: (o: BSONRegExp) => new BSONRegExp(o.pattern, o.options),\n  BSONSymbol: (o: BSONSymbol) => new BSONSymbol(o.value),\n  Timestamp: (o: Timestamp) => Timestamp.fromBits(o.low, o.high)\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction serializeDocument(doc: any, options: EJSONSerializeOptions) {\n  if (doc == null || typeof doc !== 'object') throw new BSONError('not an object instance');\n\n  const bsontype: BSONType['_bsontype'] = doc._bsontype;\n  if (typeof bsontype === 'undefined') {\n    // It's a regular object. Recursively serialize its property values.\n    const _doc: Document = {};\n    for (const name of Object.keys(doc)) {\n      options.seenObjects.push({ propertyName: name, obj: null });\n      try {\n        const value = serializeValue(doc[name], options);\n        if (name === '__proto__') {\n          Object.defineProperty(_doc, name, {\n            value,\n            writable: true,\n            enumerable: true,\n            configurable: true\n          });\n        } else {\n          _doc[name] = value;\n        }\n      } finally {\n        options.seenObjects.pop();\n      }\n    }\n    return _doc;\n  } else if (\n    doc != null &&\n    typeof doc === 'object' &&\n    typeof doc._bsontype === 'string' &&\n    doc[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION\n  ) {\n    throw new BSONVersionError();\n  } else if (isBSONType(doc)) {\n    // the \"document\" is really just a BSON type object\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    let outDoc: any = doc;\n    if (typeof outDoc.toExtendedJSON !== 'function') {\n      // There's no EJSON serialization function on the object. It's probably an\n      // object created by a previous version of this library (or another library)\n      // that's duck-typing objects to look like they were generated by this library).\n      // Copy the object into this library's version of that type.\n      const mapper = BSON_TYPE_MAPPINGS[doc._bsontype];\n      if (!mapper) {\n        throw new BSONError('Unrecognized or invalid _bsontype: ' + doc._bsontype);\n      }\n      outDoc = mapper(outDoc);\n    }\n\n    // Two BSON types may have nested objects that may need to be serialized too\n    if (bsontype === 'Code' && outDoc.scope) {\n      outDoc = new Code(outDoc.code, serializeValue(outDoc.scope, options));\n    } else if (bsontype === 'DBRef' && outDoc.oid) {\n      outDoc = new DBRef(\n        serializeValue(outDoc.collection, options),\n        serializeValue(outDoc.oid, options),\n        serializeValue(outDoc.db, options),\n        serializeValue(outDoc.fields, options)\n      );\n    }\n\n    return outDoc.toExtendedJSON(options);\n  } else {\n    throw new BSONError('_bsontype must be a string, but was: ' + typeof bsontype);\n  }\n}\n\n/**\n * Parse an Extended JSON string, constructing the JavaScript value or object described by that\n * string.\n *\n * @example\n * ```js\n * const { EJSON } = require('bson');\n * const text = '{ \"int32\": { \"$numberInt\": \"10\" } }';\n *\n * // prints { int32: { [String: '10'] _bsontype: 'Int32', value: '10' } }\n * console.log(EJSON.parse(text, { relaxed: false }));\n *\n * // prints { int32: 10 }\n * console.log(EJSON.parse(text));\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction parse(text: string, options?: EJSONOptions): any {\n  const ejsonOptions = {\n    useBigInt64: options?.useBigInt64 ?? false,\n    relaxed: options?.relaxed ?? true,\n    legacy: options?.legacy ?? false\n  };\n  return JSON.parse(text, (key, value) => {\n    if (key.indexOf('\\x00') !== -1) {\n      throw new BSONError(\n        `BSON Document field names cannot contain null bytes, found: ${JSON.stringify(key)}`\n      );\n    }\n    return deserializeValue(value, ejsonOptions);\n  });\n}\n\n/**\n * Converts a BSON document to an Extended JSON string, optionally replacing values if a replacer\n * function is specified or optionally including only the specified properties if a replacer array\n * is specified.\n *\n * @param value - The value to convert to extended JSON\n * @param replacer - A function that alters the behavior of the stringification process, or an array of String and Number objects that serve as a whitelist for selecting/filtering the properties of the value object to be included in the JSON string. If this value is null or not provided, all properties of the object are included in the resulting JSON string\n * @param space - A String or Number object that's used to insert white space into the output JSON string for readability purposes.\n * @param options - Optional settings\n *\n * @example\n * ```js\n * const { EJSON } = require('bson');\n * const Int32 = require('mongodb').Int32;\n * const doc = { int32: new Int32(10) };\n *\n * // prints '{\"int32\":{\"$numberInt\":\"10\"}}'\n * console.log(EJSON.stringify(doc, { relaxed: false }));\n *\n * // prints '{\"int32\":10}'\n * console.log(EJSON.stringify(doc));\n * ```\n */\nfunction stringify(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  value: any,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  replacer?: (number | string)[] | ((this: any, key: string, value: any) => any) | EJSONOptions,\n  space?: string | number,\n  options?: EJSONOptions\n): string {\n  if (space != null && typeof space === 'object') {\n    options = space;\n    space = 0;\n  }\n  if (replacer != null && typeof replacer === 'object' && !Array.isArray(replacer)) {\n    options = replacer;\n    replacer = undefined;\n    space = 0;\n  }\n  const serializeOptions = Object.assign({ relaxed: true, legacy: false }, options, {\n    seenObjects: [{ propertyName: '(root)', obj: null }]\n  });\n\n  const doc = serializeValue(value, serializeOptions);\n  return JSON.stringify(doc, replacer as Parameters<JSON['stringify']>[1], space);\n}\n\n/**\n * Serializes an object to an Extended JSON string, and reparse it as a JavaScript object.\n *\n * @param value - The object to serialize\n * @param options - Optional settings passed to the `stringify` function\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction EJSONserialize(value: any, options?: EJSONOptions): Document {\n  options = options || {};\n  return JSON.parse(stringify(value, options));\n}\n\n/**\n * Deserializes an Extended JSON object into a plain JavaScript object with native/BSON types\n *\n * @param ejson - The Extended JSON object to deserialize\n * @param options - Optional settings passed to the parse method\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction EJSONdeserialize(ejson: Document, options?: EJSONOptions): any {\n  options = options || {};\n  return parse(JSON.stringify(ejson), options);\n}\n\n/** @public */\nconst EJSON: {\n  parse: typeof parse;\n  stringify: typeof stringify;\n  serialize: typeof EJSONserialize;\n  deserialize: typeof EJSONdeserialize;\n} = Object.create(null);\nEJSON.parse = parse;\nEJSON.stringify = stringify;\nEJSON.serialize = EJSONserialize;\nEJSON.deserialize = EJSONdeserialize;\nObject.freeze(EJSON);\nexport { EJSON };\n", "import { Binary, UUID } from './binary';\nimport { Code } from './code';\nimport { DBRef } from './db_ref';\nimport { Decimal128 } from './decimal128';\nimport { Double } from './double';\nimport { Int32 } from './int_32';\nimport { Long } from './long';\nimport { MaxKey } from './max_key';\nimport { MinKey } from './min_key';\nimport { ObjectId } from './objectid';\nimport { internalCalculateObjectSize } from './parser/calculate_size';\n// Parts of the parser\nimport { internalDeserialize, type DeserializeOptions } from './parser/deserializer';\nimport { serializeInto, type SerializeOptions } from './parser/serializer';\nimport { BSONRegExp } from './regexp';\nimport { BSONSymbol } from './symbol';\nimport { Timestamp } from './timestamp';\nimport { ByteUtils } from './utils/byte_utils';\nexport type { UUIDExtended, BinaryExtended, BinaryExtendedLegacy, BinarySequence } from './binary';\nexport type { CodeExtended } from './code';\nexport type { DBRefLike } from './db_ref';\nexport type { Decimal128Extended } from './decimal128';\nexport type { DoubleExtended } from './double';\nexport type { EJSONOptions } from './extended_json';\nexport type { Int32Extended } from './int_32';\nexport type { LongExtended } from './long';\nexport type { MaxKeyExtended } from './max_key';\nexport type { MinKeyExtended } from './min_key';\nexport type { ObjectIdExtended, ObjectIdLike } from './objectid';\nexport type { BSONRegExpExtended, BSONRegExpExtendedLegacy } from './regexp';\nexport type { BSONSymbolExtended } from './symbol';\nexport type { LongWithoutOverrides, TimestampExtended, TimestampOverrides } from './timestamp';\nexport type { LongWithoutOverridesClass } from './timestamp';\nexport type { SerializeOptions, DeserializeOptions };\n\nexport {\n  Code,\n  BSONSymbol,\n  DBRef,\n  Binary,\n  ObjectId,\n  UUID,\n  Long,\n  Timestamp,\n  Double,\n  Int32,\n  MinKey,\n  MaxKey,\n  BSONRegExp,\n  Decimal128\n};\nexport { BSONValue } from './bson_value';\nexport { BSONError, BSONVersionError, BSONRuntimeError } from './error';\nexport { BSONType } from './constants';\nexport { EJSON } from './extended_json';\n\n/** @public */\nexport interface Document {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  [key: string]: any;\n}\n\n/** @internal */\n// Default Max Size\nconst MAXSIZE = 1024 * 1024 * 17;\n\n// Current Internal Temporary Serialization Buffer\nlet buffer = ByteUtils.allocate(MAXSIZE);\n\n/**\n * Sets the size of the internal serialization buffer.\n *\n * @param size - The desired size for the internal serialization buffer in bytes\n * @public\n */\nexport function setInternalBufferSize(size: number): void {\n  // Resize the internal serialization buffer if needed\n  if (buffer.length < size) {\n    buffer = ByteUtils.allocate(size);\n  }\n}\n\n/**\n * Serialize a Javascript object.\n *\n * @param object - the Javascript object to serialize.\n * @returns Buffer object containing the serialized object.\n * @public\n */\nexport function serialize(object: Document, options: SerializeOptions = {}): Uint8Array {\n  // Unpack the options\n  const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;\n  const serializeFunctions =\n    typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;\n  const ignoreUndefined =\n    typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;\n  const minInternalBufferSize =\n    typeof options.minInternalBufferSize === 'number' ? options.minInternalBufferSize : MAXSIZE;\n\n  // Resize the internal serialization buffer if needed\n  if (buffer.length < minInternalBufferSize) {\n    buffer = ByteUtils.allocate(minInternalBufferSize);\n  }\n\n  // Attempt to serialize\n  const serializationIndex = serializeInto(\n    buffer,\n    object,\n    checkKeys,\n    0,\n    0,\n    serializeFunctions,\n    ignoreUndefined,\n    null\n  );\n\n  // Create the final buffer\n  const finishedBuffer = ByteUtils.allocate(serializationIndex);\n\n  // Copy into the finished buffer\n  finishedBuffer.set(buffer.subarray(0, serializationIndex), 0);\n\n  // Return the buffer\n  return finishedBuffer;\n}\n\n/**\n * Serialize a Javascript object using a predefined Buffer and index into the buffer,\n * useful when pre-allocating the space for serialization.\n *\n * @param object - the Javascript object to serialize.\n * @param finalBuffer - the Buffer you pre-allocated to store the serialized BSON object.\n * @returns the index pointing to the last written byte in the buffer.\n * @public\n */\nexport function serializeWithBufferAndIndex(\n  object: Document,\n  finalBuffer: Uint8Array,\n  options: SerializeOptions = {}\n): number {\n  // Unpack the options\n  const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;\n  const serializeFunctions =\n    typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;\n  const ignoreUndefined =\n    typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;\n  const startIndex = typeof options.index === 'number' ? options.index : 0;\n\n  // Attempt to serialize\n  const serializationIndex = serializeInto(\n    buffer,\n    object,\n    checkKeys,\n    0,\n    0,\n    serializeFunctions,\n    ignoreUndefined,\n    null\n  );\n\n  finalBuffer.set(buffer.subarray(0, serializationIndex), startIndex);\n\n  // Return the index\n  return startIndex + serializationIndex - 1;\n}\n\n/**\n * Deserialize data as BSON.\n *\n * @param buffer - the buffer containing the serialized set of BSON documents.\n * @returns returns the deserialized Javascript Object.\n * @public\n */\nexport function deserialize(buffer: Uint8Array, options: DeserializeOptions = {}): Document {\n  return internalDeserialize(ByteUtils.toLocalBufferType(buffer), options);\n}\n\n/** @public */\nexport type CalculateObjectSizeOptions = Pick<\n  SerializeOptions,\n  'serializeFunctions' | 'ignoreUndefined'\n>;\n\n/**\n * Calculate the bson size for a passed in Javascript object.\n *\n * @param object - the Javascript object to calculate the BSON byte size for\n * @returns size of BSON object in bytes\n * @public\n */\nexport function calculateObjectSize(\n  object: Document,\n  options: CalculateObjectSizeOptions = {}\n): number {\n  options = options || {};\n\n  const serializeFunctions =\n    typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;\n  const ignoreUndefined =\n    typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;\n\n  return internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined);\n}\n\n/**\n * Deserialize stream data as BSON documents.\n *\n * @param data - the buffer containing the serialized set of BSON documents.\n * @param startIndex - the start index in the data Buffer where the deserialization is to start.\n * @param numberOfDocuments - number of documents to deserialize.\n * @param documents - an array where to store the deserialized documents.\n * @param docStartIndex - the index in the documents array from where to start inserting documents.\n * @param options - additional options used for the deserialization.\n * @returns next index in the buffer after deserialization **x** numbers of documents.\n * @public\n */\nexport function deserializeStream(\n  data: Uint8Array | ArrayBuffer,\n  startIndex: number,\n  numberOfDocuments: number,\n  documents: Document[],\n  docStartIndex: number,\n  options: DeserializeOptions\n): number {\n  const internalOptions = Object.assign(\n    { allowObjectSmallerThanBufferSize: true, index: 0 },\n    options\n  );\n  const bufferData = ByteUtils.toLocalBufferType(data);\n\n  let index = startIndex;\n  // Loop over all documents\n  for (let i = 0; i < numberOfDocuments; i++) {\n    // Find size of the document\n    const size =\n      bufferData[index] |\n      (bufferData[index + 1] << 8) |\n      (bufferData[index + 2] << 16) |\n      (bufferData[index + 3] << 24);\n    // Update options with index\n    internalOptions.index = index;\n    // Parse the document at this point\n    documents[docStartIndex + i] = internalDeserialize(bufferData, internalOptions);\n    // Adjust index by the document size\n    index = index + size;\n  }\n\n  // Return object containing end index of parsing and list of documents\n  return index;\n}\n", "export enum OwnerType {\n    PEER = \"Peer\",\n    GROUP = \"Group\"\n}\n", "import {OwnerType} from \"./OwnerType\";\n\nexport interface Video {\n    ClippedVideos: bigint[],\n    Clips: { [videoID: string]: bigint },\n    Duration: bigint,\n    FileSize: bigint,\n    Owner: bigint,\n    OwnerType: OwnerType,\n    SpatialDataSize: bigint,\n    SpatialDataUrlS3: string,\n    SubtitlesSize: bigint,\n    SubtitlesUrlS3: string,\n    Tags: string[]\n    ThumbnailUrlS3: string,\n    Timestamp: bigint,\n    Title: string,\n    VideoUrlS3: string\n}\n\nexport enum VideoAttribute {\n    CLIPPED_VIDEOS = \"ClippedVideos\",\n    CLIPS = \"Clips\",\n    DURATION = \"Duration\",\n    FILE_SIZE = \"FileSize\",\n    OWNER = \"Owner\",\n    OWNER_TYPE = \"OwnerType\",\n    SPATIAL_DATA_SIZE = \"SpatialDataSize\",\n    SPATIAL_DATA_URL_S3 = \"SpatialDataUrlS3\",\n    SUBTITLES_SIZE = \"SubtitlesSize\",\n    SUBTITLES_URL_S3 = \"SubtitlesUrlS3\",\n    TAGS = \"Tags\",\n    THUMBNAIL_URL_S3 = \"ThumbnailUrlS3\",\n    TIMESTAMP = \"Timestamp\",\n    TITLE = \"Title\",\n    VIDEO_URL_S3 = \"VideoUrlS3\"\n}\n", "import {OwnerType} from \"@root/Types/OwnerType\";\n\n// TODO(@anthony) figure out a better structure for transporting attribute timestamps\nexport interface Document {\n    Categories: { value: string[]; timestamp: bigint };\n    FileSize: { value: bigint, timestamp: bigint };\n    InitialScale: { value: number; timestamp: bigint; };\n    Owner: { value: bigint; timestamp: bigint; };\n    OwnerType: { value: OwnerType; timestamp: bigint };\n    Parts: { value: string[]; timestamp: bigint; };\n    ThumbnailUrlS3: {value: string; timestamp: bigint;};\n    Title: { value: string; timestamp: bigint; };\n    UrlS3: { value: string; timestamp: bigint; };\n}\n\nexport enum DocumentAttribute {\n    CATEGORIES = \"Categories\",\n    FILE_SIZE = \"FileSize\",\n    INITIAL_SCALE = \"InitialScale\",\n    OWNER = \"Owner\",\n    OWNER_TYPE = \"OwnerType\",\n    PARTS = \"Parts\",\n    THUMBNAIL_URL_S3 = \"ThumbnailUrlS3\",\n    // @deprecated on 2025-01-13\n    THUMBNAIL = \"Thumbnail\",\n    TITLE = \"Title\",\n    URL_S3 = \"UrlS3\"\n}\n", "import {Role} from \"../Types/Role\";\nimport {ObjectId} from \"@root/node_modules/bson\";\nimport {OwnerType} from \"../Types/OwnerType\";\nimport {VideoAttribute} from \"../Types/Video\";\nimport {DocumentAttribute} from \"../Types/Document\";\nimport {RegionAWS} from \"../public/studio/WebAssembly.mjs\";\n\nexport const REGIONS: Record<Uppercase<RegionAWS>, RegionAWS> = {\n    'CA-CENTRAL-1': \"ca-central-1\",\n    'EU-WEST-3': \"eu-west-3\",\n    'US-EAST-1': \"us-east-1\"\n}\n\n// utils function shared with JS frontend and JS backend\nexport namespace UtilsShared {\n    const MIN_PEER_NAME_LENGTH = 2;\n    const MAX_PEER_NAME_LENGTH = 64;\n    const INVALID_CHARACTERS_FULL_NAME = new Set([\"!\", \"@\", \"#\", \"$\", \"%\", \"&\", \"*\", \"+\", \"/\", \"=\", \"?\", \"^\",\n        \"`\", \"|\", \"~\", \"\\\"\", \"\u00A8\", \"<\", \">\", \"\\uFFFD\"]);\n\n    // a single blue pixel in the form of a base64 string\n    export const PLACEHOLDER_IMAGE: string = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAA\" +\n        \"AXNSR0IArs4c6QAAAA1JREFUGFdjUG/Y/R8ABJYCYtJPB9cAAAAASUVORK5CYII=\";\n    export const UPPER_CASE_ALPHA: string = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n    export const LOWER_CASE_ALPHA: string = UPPER_CASE_ALPHA.toLowerCase();\n    export const DIGITS: string = \"0123456789\";\n    export const SPECIAL_CHARS: string = \"!@#$%^&*()_+-=[]{}|;':\\\",./<>?\\`~\";\n    export const CHARS_FOR_RANDOM_STRING: string = UPPER_CASE_ALPHA + LOWER_CASE_ALPHA + DIGITS;\n    export const PASSWORD_MAX_CHARACTERS = 256;\n    export const PASSWORD_MIN_CHARACTERS = 8;\n    export const PASSWORD_LENGTH_ERR = \"Your password need between 8 and 256 characters\";\n    export const PASSWORD_LOWER_ERR = \"Your password need at least one lowercase letter\";\n    export const PASSWORD_NUMBER_ERR = \"Your password need at least one number\";\n    export const PASSWORD_SPECIAL_ERR = \"Your password need least one special character\";\n    export const PASSWORD_UPPER_ERR = \"Your password need at least one uppercase letter\";\n\n    const charMap: Record<string, string> = {\n        // single quote\n        \"\u2018\": \"'\", // 8216 -> 39\n        \"\u2019\": \"'\", // 8217 -> 39\n        \"\u2032\": \"'\", // 8242 -> 39\n\n        // double quotes\n        \"\u2033\": '\"', // 8243 -> 34\n        \"\u201C\": '\"', // 8220 -> 34\n        \"\u201D\": '\"', // 8221 -> 34\n\n        // comma\n        \"\u201A\": \",\", // 8218 -> 44\n\n        // dash\n        \"\u2013\": \"-\", // 8211 -> 45\n        \"\u2014\": \"-\", // 8212 -> 45\n    };\n\n    export function cleanStringForASCIIExtended(value: string): string {\n        return Array.from(value, (char: string): string  => charMap[char] ?? char).join(\"\");\n    }\n\n    // convert timestamp (epoch time in seconds) to epoch day\n    export function toEpochDay(timestamp: bigint): bigint {\n        return timestamp / BigInt(86400);\n    }\n\n    /// generates a random 64-bit ID from a BSON object ID\n    export function generateRandomID(): bigint {\n\n        // we'll generate a bson object ID\n        const randomObjectID: ObjectId = new ObjectId();\n\n        // the 12 bytes of the bson object ID are as follows:\n        // 4 bytes : The UNIX timestamp in big-endian format\n        // 5 bytes : A random number\n        // 3 bytes : A 24-bit monotonic counter incrementing from rand() in big-endian\n\n        // we will fold the last 4 bytes onto the middle 4 to obtain a bigint (keeping timestamp)\n        const array: Uint32Array = new Uint32Array(randomObjectID.id.buffer);\n        array[1] ^= array[2];\n\n        // read first 8 bytes as bigint little-endian like the Core does\n        return new DataView(array.buffer, 0, 8).getBigUint64(0, true);\n    }\n\n\n    // gets the current month's usage of a given UsageData object and returns the result in bytes\n    export function computeCurrentMonthUsageData(usageData: { [epochDay: string] : number }): number {\n        const today: Date = new Date();\n        const {from, to}: {from: bigint, to: bigint} = getRangeTimestamps(today.getUTCFullYear(), today.getUTCMonth());\n        return computePeerUsageData(usageData, toEpochDay(from), toEpochDay(to));\n    }\n\n    // transform a PeerUsageData object into a single number\n    export function computePeerUsageData(data: { [epochDay: string] : number },\n                                         epochDayFrom: bigint = BigInt(0),\n                                         epochDayTo  : bigint = BigInt(Number.MAX_SAFE_INTEGER)): number {\n        if (!data)\n            return 0;\n\n        let total = 0;\n        for (const [epochDayStr, usage] of Object.entries(data)) {\n            const epochDay = BigInt(epochDayStr);\n            if(epochDay >= epochDayFrom && epochDay <= epochDayTo)\n                total += usage;\n        }\n        return total;\n    }\n\n    // get timestamp range for year/month (in seconds since January 1, 1970)\n    export function getRangeTimestamps(year: number, monthIndex: number | null = null): {from: bigint, to: bigint} {\n        const from : number = Date.UTC(year, monthIndex === null ? 0 : monthIndex, 1, 0, 0, 0, 0);\n        const to : number = Date.UTC(year, ((monthIndex === null ? 11 : monthIndex) + 1), 0, 23, 59, 59, 0);\n        return {\n            from: (BigInt(from) / BigInt(1000)),\n            to: (BigInt(to) / BigInt(1000))\n        };\n    }\n\n    /// converts a timestamp string into it's unix time in seconds\n    export function convertStringToTimestamp(timestampString: string): number {\n        if (!timestampString)\n            return 0;\n\n        // try to parse timestamp unix number\n        let timestampInt: number = parseInt(timestampString);\n        if (!isNaN(timestampInt) && timestampInt.toString() === timestampString)\n            return timestampInt;\n\n        // try to cast string into date object and get unix timestamp in millisecond\n        timestampInt = (new Date(timestampString)).getTime();\n        if (isNaN(timestampInt))\n            return 0;\n\n        // convert Millisecond into Seconds\n        return Number(BigInt(timestampInt) / BigInt(1000));\n    }\n\n    // extracts the encoded timestamp from the given ID (the first 32 bits)\n    export function getTimestampOfRandomID(ID: bigint): bigint {\n        const currentTimestamp: bigint = BigInt(Date.now()) / BigInt(1000);\n\n        // the Core uses little-endian so we need to re-assign it here as such\n        const array = new DataView(new ArrayBuffer(8));\n        array.setBigUint64(0, ID, true);\n\n        // decode first 4 bytes as big-endian because BSON encodes timestamp like so\n        const timestampID: bigint = BigInt(array.getUint32(0, false));\n\n        if (timestampID > currentTimestamp)\n            return BigInt(0);\n        return timestampID;\n    }\n\n    // generate a random string of length\n    export function generateRandomString(length: number) {\n        // source: https://stackoverflow.com/questions/1349404/generate-random-string-characters-in-javascript\n        let result = '';\n        let charactersLength = CHARS_FOR_RANDOM_STRING.length;\n        for (let i = 0; i < length; i++) {\n            result += CHARS_FOR_RANDOM_STRING.charAt(Math.floor(Math.random() * charactersLength));\n        }\n        return result;\n    }\n\n    function generateCryptoUint32(): number {\n        const [val] = crypto.getRandomValues(new Uint32Array(1));\n        return val;\n    }\n\n    export function generateCryptoCharacter(character: string): string {\n        return character[generateCryptoUint32() % character.length];\n    }\n    \n    // source: https://stackoverflow.com/a/60467595\n    export function md5(inputString: string): string {\n        if(!inputString)\n            return \"\";\n\n        const hc=\"0123456789abcdef\";\n        function rh(n: number) {let j,s=\"\";for(j=0;j<=3;j++) s+=hc.charAt((n>>(j*8+4))&0x0F)+hc.charAt((n>>(j*8))&0x0F);return s;}\n        function ad(x: number, y: number) {let l=(x&0xFFFF)+(y&0xFFFF);let m=(x>>16)+(y>>16)+(l>>16);return (m<<16)|(l&0xFFFF);}\n        function rl(n: number, c: number) {return (n<<c)|(n>>>(32-c));}\n        function cm(q: number,a: number,b: number,x: number,s: number,t: number) {return ad(rl(ad(ad(a,q),ad(x,t)),s),b);}\n        function ff(a: number,b: number,c: number,d: number,x: number,s: number,t: number) {return cm((b&c)|((~b)&d),a,b,x,s,t);}\n        function gg(a: number,b: number,c: number,d: number,x: number,s: number,t: number) {return cm((b&d)|(c&(~d)),a,b,x,s,t);}\n        function hh(a: number,b: number,c: number,d: number,x: number,s: number,t: number) {return cm(b^c^d,a,b,x,s,t);}\n        function ii(a: number,b: number,c: number,d: number,x: number,s: number,t: number) {return cm(c^(b|(~d)),a,b,x,s,t);}\n        function sb(x: string) {\n            let i;let nblk=((x.length+8)>>6)+1;let blks=new Array(nblk*16);for(i=0;i<nblk*16;i++) blks[i]=0;\n            for(i=0;i<x.length;i++) blks[i>>2]|=x.charCodeAt(i)<<((i%4)*8);\n            blks[i>>2]|=0x80<<((i%4)*8);blks[nblk*16-2]=x.length*8;return blks;\n        }\n        let i,x=sb(inputString),a=1732584193,b=-271733879,c=-1732584194,d=271733878,olda,oldb,oldc,oldd;\n        for(i=0;i<x.length;i+=16) {olda=a;oldb=b;oldc=c;oldd=d;\n            a=ff(a,b,c,d,x[i+ 0], 7, -680876936);d=ff(d,a,b,c,x[i+ 1],12, -389564586);c=ff(c,d,a,b,x[i+ 2],17,  606105819);\n            b=ff(b,c,d,a,x[i+ 3],22,-1044525330);a=ff(a,b,c,d,x[i+ 4], 7, -176418897);d=ff(d,a,b,c,x[i+ 5],12, 1200080426);\n            c=ff(c,d,a,b,x[i+ 6],17,-1473231341);b=ff(b,c,d,a,x[i+ 7],22,  -45705983);a=ff(a,b,c,d,x[i+ 8], 7, 1770035416);\n            d=ff(d,a,b,c,x[i+ 9],12,-1958414417);c=ff(c,d,a,b,x[i+10],17,     -42063);b=ff(b,c,d,a,x[i+11],22,-1990404162);\n            a=ff(a,b,c,d,x[i+12], 7, 1804603682);d=ff(d,a,b,c,x[i+13],12,  -40341101);c=ff(c,d,a,b,x[i+14],17,-1502002290);\n            b=ff(b,c,d,a,x[i+15],22, 1236535329);a=gg(a,b,c,d,x[i+ 1], 5, -165796510);d=gg(d,a,b,c,x[i+ 6], 9,-1069501632);\n            c=gg(c,d,a,b,x[i+11],14,  643717713);b=gg(b,c,d,a,x[i+ 0],20, -373897302);a=gg(a,b,c,d,x[i+ 5], 5, -701558691);\n            d=gg(d,a,b,c,x[i+10], 9,   38016083);c=gg(c,d,a,b,x[i+15],14, -660478335);b=gg(b,c,d,a,x[i+ 4],20, -405537848);\n            a=gg(a,b,c,d,x[i+ 9], 5,  568446438);d=gg(d,a,b,c,x[i+14], 9,-1019803690);c=gg(c,d,a,b,x[i+ 3],14, -187363961);\n            b=gg(b,c,d,a,x[i+ 8],20, 1163531501);a=gg(a,b,c,d,x[i+13], 5,-1444681467);d=gg(d,a,b,c,x[i+ 2], 9,  -51403784);\n            c=gg(c,d,a,b,x[i+ 7],14, 1735328473);b=gg(b,c,d,a,x[i+12],20,-1926607734);a=hh(a,b,c,d,x[i+ 5], 4,    -378558);\n            d=hh(d,a,b,c,x[i+ 8],11,-2022574463);c=hh(c,d,a,b,x[i+11],16, 1839030562);b=hh(b,c,d,a,x[i+14],23,  -35309556);\n            a=hh(a,b,c,d,x[i+ 1], 4,-1530992060);d=hh(d,a,b,c,x[i+ 4],11, 1272893353);c=hh(c,d,a,b,x[i+ 7],16, -155497632);\n            b=hh(b,c,d,a,x[i+10],23,-1094730640);a=hh(a,b,c,d,x[i+13], 4,  681279174);d=hh(d,a,b,c,x[i+ 0],11, -358537222);\n            c=hh(c,d,a,b,x[i+ 3],16, -722521979);b=hh(b,c,d,a,x[i+ 6],23,   76029189);a=hh(a,b,c,d,x[i+ 9], 4, -640364487);\n            d=hh(d,a,b,c,x[i+12],11, -421815835);c=hh(c,d,a,b,x[i+15],16,  530742520);b=hh(b,c,d,a,x[i+ 2],23, -995338651);\n            a=ii(a,b,c,d,x[i+ 0], 6, -198630844);d=ii(d,a,b,c,x[i+ 7],10, 1126891415);c=ii(c,d,a,b,x[i+14],15,-1416354905);\n            b=ii(b,c,d,a,x[i+ 5],21,  -57434055);a=ii(a,b,c,d,x[i+12], 6, 1700485571);d=ii(d,a,b,c,x[i+ 3],10,-1894986606);\n            c=ii(c,d,a,b,x[i+10],15,   -1051523);b=ii(b,c,d,a,x[i+ 1],21,-2054922799);a=ii(a,b,c,d,x[i+ 8], 6, 1873313359);\n            d=ii(d,a,b,c,x[i+15],10,  -30611744);c=ii(c,d,a,b,x[i+ 6],15,-1560198380);b=ii(b,c,d,a,x[i+13],21, 1309151649);\n            a=ii(a,b,c,d,x[i+ 4], 6, -145523070);d=ii(d,a,b,c,x[i+11],10,-1120210379);c=ii(c,d,a,b,x[i+ 2],15,  718787259);\n            b=ii(b,c,d,a,x[i+ 9],21, -343485551);a=ad(a,olda);b=ad(b,oldb);c=ad(c,oldc);d=ad(d,oldd);\n        }\n        return rh(a)+rh(b)+rh(c)+rh(d);\n    }\n\n    // converts string ID to BigInt\n    export function safelyConvertStringToBigInt(stringID: string): bigint {\n        try {\n            return BigInt(stringID); // attempt!\n        } catch (e) {\n            return BigInt(0); // unable to convert :(\n        }\n    }\n\n    export function getCorrespondingEnumValue<T>(enumType: T, value: string): T[keyof T] | null {\n\n        // check if the value is part of the enum's values\n        if (!enumType || typeof enumType !== \"object\" ||\n            !Object.values(enumType).map(value => value.toString()).includes(value))\n            return null;\n\n        // if there's no mapping, simple string enum, return it\n        const mappedValue: T[keyof T] | undefined = enumType[value as keyof T];\n        if (mappedValue === undefined)\n            return value as unknown as T[keyof T];\n\n        // if mapping to a number, return that, else it needs to be mapped again to get the numeric value\n        return typeof mappedValue === \"number\" ? mappedValue as unknown as T[keyof T]\n                                               : enumType[mappedValue as unknown as keyof T];\n    }\n\n    export function getCorrespondingRegion(region: string): RegionAWS|null {\n        return Object.values(REGIONS).includes(region as RegionAWS) ? region as RegionAWS : null;\n    }\n\n    export function getCorrespondingRole(worldRole: string): Role | undefined {\n        return Role[worldRole.toUpperCase() as keyof typeof Role];\n    }\n\n    export function getCorrespondingOwnerType(ownerTypeStr: string): OwnerType | undefined {\n        return OwnerType[ownerTypeStr.toUpperCase() as keyof typeof OwnerType];\n    }\n\n    export function getCorrespondingVideoAttribute(videoAttributeStr: string): VideoAttribute | undefined {\n        return Object.values(VideoAttribute).includes(videoAttributeStr as VideoAttribute)\n            ? videoAttributeStr as VideoAttribute\n            : undefined;\n    }\n\n    export function getCorrespondingDocumentAttribute(documentAttributeStr: string): DocumentAttribute | undefined {\n        return Object.values(DocumentAttribute).includes(documentAttributeStr as DocumentAttribute)\n            ? documentAttributeStr as DocumentAttribute\n            : undefined;\n    }\n\n    export function constructDeepSightSubDomain(domain: string, isProduction: boolean): string {\n        const endpointModifier: string = isProduction ? \"\" : \"staging.\";\n\n        // trying to get to the original domain\n        if (domain.endsWith(\"deepsight.ca\"))\n            domain = domain.slice(0, -12)\n\n        if (domain.endsWith(\"staging.\"))\n            domain = domain.slice(0, -8)\n\n        // if empty, that means the original domain was (staging.)deepsight.ca\n        if (!domain)\n            return endpointModifier + \"deepsight.ca\"\n\n        // get the client's domain\n        const domainSeparator = domain.lastIndexOf('.');\n        if (domainSeparator === -1 || domainSeparator === 0)\n            return \"\";\n        const domainModifier = domain.slice(0, domainSeparator + 1);\n\n        return domainModifier + endpointModifier + \"deepsight.ca\";\n    }\n\n    /// verify the host header from originating request\n    export function isProductionEndpoint(endpoint: string): boolean {\n        return endpoint === \"app.deepsight.ca\";\n    }\n\n    // source: https://stackoverflow.com/questions/7944460/detect-safari-browser\n    export function isSafariUserAgent(userAgent: string): boolean {\n        return Boolean(userAgent) && /^((?!chrome|android).)*safari/i.test(userAgent);\n    }\n\n    /// emulate a sleep using async function\n    export function sleep(ms: number): Promise<void> {\n        return new Promise((resolve) => setTimeout(resolve, ms));\n    }\n\n    export function isValidEmail(email: string): boolean {\n        // check for the presence of an @ symbol and at least one character before the @\n        const atSymbolIndex: number = email.indexOf('@');\n        if (atSymbolIndex === -1 || atSymbolIndex === 0)\n            return false;\n\n        // split the email into local part and domain part\n        const [localPart, domainPart] = email.split('@');\n\n        // check for the presence of a domain part and if it matches the specified domain (if provided)\n        if (!localPart.length || !domainPart.length)\n            return false;\n\n        // check for at least one dot in the domain part\n        const dotIndex: number = domainPart.indexOf('.');\n        return dotIndex !== -1 && dotIndex !== 0 && dotIndex !== domainPart.length - 1;\n    }\n\n    export function getPasswordValidationError(password: string): string {\n        if (password.length < PASSWORD_MIN_CHARACTERS || password.length > PASSWORD_MAX_CHARACTERS)\n            return PASSWORD_LENGTH_ERR;\n\n        const characters: string[] = [...password];\n        const upperCase: Set<string> = new Set<string>(UPPER_CASE_ALPHA);\n        if (!characters.some((character: string) => upperCase.has(character)))\n            return PASSWORD_UPPER_ERR;\n\n        const lowerCase: Set<string> = new Set<string>(LOWER_CASE_ALPHA);\n        if (!characters.some((character: string) => lowerCase.has(character)))\n            return PASSWORD_LOWER_ERR;\n\n        const digits: Set<string> = new Set<string>(DIGITS);\n        if (!characters.some((character: string) => digits.has(character)))\n            return PASSWORD_NUMBER_ERR;\n\n        const specialChars: Set<string> = new Set<string>(SPECIAL_CHARS);\n        if (!characters.some((character: string) => specialChars.has(character)))\n            return PASSWORD_SPECIAL_ERR;\n\n        return \"\";\n    }\n\n    export function isValidFullName(fullName: string): boolean {\n        // basic validation\n        if (!fullName || fullName.length < MIN_PEER_NAME_LENGTH || fullName.length > MAX_PEER_NAME_LENGTH ||\n            fullName.includes(\"  \") || fullName !== fullName.trim())\n            return false;\n\n        // invalid characters. If one character is invalid, return false\n        return ![...fullName].some((char: string) => INVALID_CHARACTERS_FULL_NAME.has(char));\n    }\n\n    /// encode raw 128 bits token to base 64\n    export function encodeTokenBase64(token: bigint): string {\n        if (token <= BigInt(0) || token >= BigInt(1) << BigInt(128))\n            return \"\";\n\n        const byteArray = new ArrayBuffer(16);\n        const viewArray = new DataView(byteArray);\n\n        // split into two 64-bit halves\n        const high: bigint = token >> BigInt(64);\n        const low: bigint = BigInt.asUintN(64, token);\n        viewArray.setBigUint64(8, high, true);\n        viewArray.setBigUint64(0, low,  true);\n\n        const uint8Array = new Uint8Array(byteArray);\n        return btoa(String.fromCharCode(...uint8Array));\n    }\n}\n", "import {Language} from \"@root/public/studio/WebAssembly.mjs\";\n\nexport const LANGUAGES: Record<Uppercase<Language>, Language> = {\n    ENGLISH: \"English\",\n    FRENCH: \"French\",\n    SPANISH: \"Spanish\",\n    GERMAN: \"German\",\n    DUTCH: \"Dutch\",\n};\n\nexport const LANGUAGE_VALUES: Language[] = Object.values(LANGUAGES);\n\nexport const DEFAULT_LANGUAGE: Language = LANGUAGES.ENGLISH;\n\nexport function getLanguageCode(language: Language): string {\n    switch (language) {\n        case LANGUAGES.FRENCH:  return \"fr\";\n        case LANGUAGES.SPANISH: return \"es\";\n        case LANGUAGES.GERMAN:  return \"de\";\n        case LANGUAGES.DUTCH:   return \"nl\";\n        case LANGUAGES.ENGLISH:\n        default: return \"en\";\n    }\n}\n\nexport function convertI18nextLanguage(i18nextLanguage: string): Language {\n    const languageMap: Record<string, Language> = {\n        fr: LANGUAGES.FRENCH,\n        en: LANGUAGES.ENGLISH,\n        es: LANGUAGES.SPANISH,\n        de: LANGUAGES.GERMAN,\n        nl: LANGUAGES.DUTCH\n    };\n\n    const code: string = i18nextLanguage.toLowerCase().slice(0, 2);\n    return languageMap[code] ?? DEFAULT_LANGUAGE;\n}\n\nexport function getCorrespondingLanguage(languageString: string): Language | null {\n    return LANGUAGE_VALUES.includes(languageString as Language) ? languageString as Language : null;\n}\n", "/*\n *\n * Main App component merging the Interface and the AR Engine\n * in the browser window.\n *\n */\nimport * as React from 'react';\nimport styled from 'styled-components';\nimport {white} from \"@root/react-components/src/values/colors/colors\";\nimport {Toolbar} from \"Components/Toolbar/Toolbar\";\nimport {LeftPanels, OPEN_PANELS_WIDTH, PanelOrder} from 'layouts/LeftPanels';\nimport {QuickActionEnum, QuickActions} from \"Views/QuickActions/QuickActions\";\nimport {FactoryEngine} from \"Engine/FactoryEngine\";\nimport {EngineCanvas} from \"@root/Frontend/Studio/Components/EngineCanvas/EngineCanvas\";\nimport {WorldsLibrary} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldsLibrary\";\nimport {ProgressBar} from \"@root/Frontend/Studio/Views/ProgressBar/ProgressBar\";\nimport i18next from \"i18next\";\nimport {\n    getCurrentPeerID,\n    getLanguage,\n    saveLanguage,\n    setCloudToken\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport {\n    getRemotePeerIDs,\n    joinSession,\n    updateSessionPeerInfo\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSession\";\nimport {\n    canUserEditCurrentWorld,\n    getAssetDocumentID,\n    getAssetID,\n    getAssetType,\n    getCurrentWorldID,\n    getDocumentTitleWorld,\n    getMissingTextureCount,\n    getNodeID,\n    getNodeName,\n    getPosition,\n    getRotation,\n    getScale,\n    getSelectedNodes,\n    getSelectedNodesCount,\n    getWorldThumbnail,\n    isNodeQR,\n    isSavingFinished,\n    setEditing,\n    updateWorldScreenShot\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\"\nimport {\n    changeLanguage,\n    duplicateToast,\n    isEmbed,\n    parseURL\n} from \"@utils/utils\";\nimport {EmbedOverlay} from \"Views/EmbedOverlay/EmbedOverlay\";\nimport {getCurrentStepID, getStepType, isAssetForCurrentStep} from \"Engine/AdapterWeb/Steps\";\nimport {\n    canCurrentPeerEditSequence,\n    getCurrentSequenceNodeVideoID\n} from \"Engine/AdapterWeb/Sequences\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {HelperLogin} from \"@root/Frontend/Login/HelperLogin\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {DataSourceGroups} from \"@root/Frontend/DataSources/DataSourceGroups\";\nimport {DataSourceSpeech} from \"@root/Frontend/DataSources/DataSourceSpeech\";\nimport {DataSourceStorage} from \"@root/Frontend/DataSources/DataSourceStorage\";\nimport {AssetType} from \"@backend/Types/AssetType\";\nimport {DataSourcePlans} from \"@root/Frontend/DataSources/DataSourcePlans\";\nimport {DataSourceSequences} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {Dialog} from \"@root/Frontend/Studio/DialogContainer\"\n// @ts-ignore\nimport HindSemiBold from \"@root/../ResourcesCommon/Core/Fonts/Hind-SemiBold.ttf\"\n// @ts-ignore\nimport RubikRegular from \"@root/../ResourcesCommon/Core/Fonts/Rubik-Regular.ttf\"\nimport {theme} from \"@root/Frontend/theme\";\nimport {ThemeProvider} from \"@mui/material/styles\";\nimport {DeepSightConnect} from \"@root/Frontend/Studio/Views/DeepSightConnect/DeepSightConnect\";\nimport {Box} from \"@mui/material\";\nimport {AnnouncementDialog} from \"@root/react-components/Announcements/AnnouncementDialog\";\nimport {DataSourceAnnouncements} from \"@root/Frontend/DataSources/DataSourceAnnouncements\";\nimport {VideoEditorContextProvider} from \"@root/Frontend/Studio/Contexts/VideoEditorContext\";\nimport {AssetPanel} from \"@root/Frontend/Studio/Views/PartsList/AssetPanel\";\nimport {StepsPanel} from \"@root/Frontend/Studio/Views/StepsList/StepsPanel\";\nimport {SelectedStepProvider} from \"@root/Frontend/Studio/Contexts/SelectedStepContext\";\nimport {isAssetForCurrentWorld} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {\n    ClassHandle,\n    CoreDelegate,\n    InterfaceFilter,\n    Language,\n    MainModule,\n    FilterStudio,\n    FilterLogin,\n    FilterViewer,\n    FilterWorld,\n    FilterEntities, FilterLoginGroup, FilterSequence, FilterSequenceList, FilterSettings, FilterLoginGroupDelegate,\n    FilterLoginGroupDelegateWeb, FilterCoordinator, FilterSequenceTags\n} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {SequencesPanel} from \"@root/Frontend/Studio/Views/SequencesPanel/SequencesPanel\";\nimport {isMobileOnly} from \"react-device-detect\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {Toast} from \"@root/react-components/src/misc/Toast\";\nimport {AppLoginDialog} from \"@root/Frontend/Login/AppLoginDialog\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {getOriginalText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterText\";\nimport {getStepTextID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequence\";\nimport {FacingMode, VideoOverlay} from \"@root/Frontend/Studio/Views/DeepSightConnect/VideoOverlay\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {isWorldLoaded} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWorld\";\nimport {Authentication} from \"@utils/Authentication\";\nimport {World, Sequence} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {convertI18nextLanguage} from \"@backend/Types/Language\";\n\nconst Interface = styled(\"div\")`\n    display: flex;\n    height: 100%;\n    width: 100%;\n    overflow: hidden;\n    user-select: none;\n    background-color: ${white};\n    \n    @font-face {\n        font-family: 'hind';\n        font-style: normal;\n        font-weight: 600;\n        font-display: swap;\n        src: url(${HindSemiBold}) format('truetype');\n     }\n\n    @font-face {\n        font-family: 'rubik';\n        font-style: normal;\n        font-weight: 400;\n        font-display: swap;\n        src: url(${RubikRegular}) format('truetype');\n    }\n`;\n\nexport const TRANSITIONS_SECONDS: number = 0.3;\n\ninterface AppState {\n    currentPeerID: bigint;\n    language: Language;\n    isEditing: boolean;\n    leftPanelsWidth: number;\n}\n\nexport class App extends React.Component implements Omit<CoreDelegate | FilterLoginGroupDelegate, keyof ClassHandle> {\n    state: AppState = {\n        currentPeerID: BigInt(0),\n        language: convertI18nextLanguage(i18next.language),\n        isEditing: false,\n        leftPanelsWidth: OPEN_PANELS_WIDTH\n    };\n\n    private static app: App;\n    private engine: MainModule;\n    private readonly authentication: Authentication = new Authentication();\n    private readonly helperLogin: HelperLogin = new HelperLogin(this.authentication);\n\n    public readonly dataSourceAnnouncements: DataSourceAnnouncements =\n        new DataSourceAnnouncements(this.authentication);\n    public readonly dataSourceGroups: DataSourceGroups = new DataSourceGroups(this.authentication);\n    public readonly dataSourcePeers: DataSourcePeers = new DataSourcePeers(this.authentication);\n    public readonly dataSourcePlans: DataSourcePlans = new DataSourcePlans(this.authentication);\n    public readonly dataSourceSequences: DataSourceSequences = new DataSourceSequences(this.authentication);\n    public readonly dataSourceSpeech: DataSourceSpeech = new DataSourceSpeech(this.authentication);\n    public readonly dataSourceStorage: DataSourceStorage = new DataSourceStorage(this.authentication);\n\n    progressBar: ProgressBar;\n\n    private lastSelectedNode: bigint = BigInt(0);\n    // TODO @balthazard : Change to private\n    public leftPanels: React.RefObject<LeftPanels> = React.createRef<LeftPanels>();\n    public toolbarRef: React.RefObject<Toolbar> = React.createRef<Toolbar>();\n    public quickActionsRef: React.RefObject<QuickActions> = React.createRef<QuickActions>();\n    private engineCanvas: React.RefObject<EngineCanvas> = React.createRef<EngineCanvas>();\n    private appLoginDialogRef: React.RefObject<AppLoginDialog> = React.createRef<AppLoginDialog>();\n    private deepSightConnectRef: React.RefObject<DeepSightConnect> = React.createRef<DeepSightConnect>();\n    private videoOverlayRef: React.RefObject<VideoOverlay> = React.createRef<VideoOverlay>();\n\n    private announcementDialogRef: React.RefObject<AnnouncementDialog> = React.createRef<AnnouncementDialog>();\n\n    private worldsLibraryRef: React.RefObject<WorldsLibrary> = React.createRef<WorldsLibrary>();\n\n    // Panels\n    private sequencesPanelRef: React.RefObject<SequencesPanel> = React.createRef<SequencesPanel>();\n    private assetsPanelRef: React.RefObject<AssetPanel> = React.createRef<AssetPanel>();\n    private stepsPanelRef: React.RefObject<StepsPanel> = React.createRef<StepsPanel>();\n\n    // should we render the full studio or the embed view\n    withoutInterface: boolean = false;\n\n    // eslint-disable-next-line constructor-super\n    constructor(props: object) {\n        if (App.app)  // eslint-disable-next-line no-constructor-return\n            return App.app;\n\n        super(props);\n        // will render without LeftPanels, Toolbar and DeepSightConnect\n        this.withoutInterface = isEmbed() || isMobileOnly;\n\n        // our Views\n        this.progressBar = new ProgressBar(this.withoutInterface ? 150 : 0);\n\n        // create URL object with current\n        const url: URL = new URL(window.location.href);\n        if (url.searchParams.get(\"forceFullStudio\") === \"yes\")\n            this.withoutInterface = false;\n\n        App.app = this;\n    }\n\n    override async componentDidMount() {\n        await this.initialize();\n\n        // need language in state to refresh AppLogin when the language changes\n        this.setState({ language: getLanguage() }, async () => await changeLanguage(this.state.language));\n\n        window.addEventListener(\"unload\", () => {\n            if (this.getFilterLoginGroup().isDeviceWhitelisted())\n                setCloudToken(\"\");\n        });\n    }\n\n    public static getInstance(): App { return App.app ?? new App({}); }\n\n    public getEngine(): MainModule { return this.engine; }\n\n    public getContextWebGL(): WebGL2RenderingContext | null {\n        return this.engineCanvas.current?.getCanvas()?.getContext(\"webgl2\") || null;\n    }\n\n    public getFilterCoordinator(): FilterCoordinator {\n        return this.engine.Core.getInstance().getFilterCoordinator();\n    }\n\n    public getFilterStudio(): FilterStudio {\n        return this.engine.getFilterStudio();\n    }\n\n    public getFilterLogin(): FilterLogin {\n        return this.getFilterStudio().getFilterLogin();\n    }\n\n    public getFilterLoginGroup(): FilterLoginGroup {\n        return this.getFilterLogin().getFilterLoginGroup();\n    }\n\n    public getFilterSettings(): FilterSettings {\n        return this.getFilterLogin().getFilterSettings();\n    }\n\n    public getFilterViewer(): FilterViewer {\n        return this.getFilterLogin().getFilterViewer();\n    }\n\n    public getFilterWorld(): FilterWorld {\n        return this.getFilterViewer().getFilterWorld();\n    }\n\n    public getFilterEntities(): FilterEntities {\n        return this.getFilterWorld().getFilterEntities();\n    }\n\n    public getFilterSequenceList(): FilterSequenceList {\n        return this.getFilterEntities().getFilterSequenceList();\n    }\n\n    public getFilterSequence(): FilterSequence {\n        return this.getFilterViewer().getFilterWorld().getFilterSequence();\n    }\n\n    public getFilterSequenceTags(): FilterSequenceTags {\n        return this.getFilterSequenceList().getFilterSequenceTags();\n    }\n\n    public getCurrentWorld(): World | null {\n        return this.getFilterWorld().getCurrentWorld();\n    }\n\n    public getSequence(sequenceID: bigint): Sequence | null {\n        using currentWorld: World | null = this.getCurrentWorld();\n        return currentWorld?.getSequence(sequenceID) ?? null;\n    }\n\n    public setCanvasPlaceholderVisibility(visible: boolean) {\n        this.engineCanvas.current?.setPlaceholderCanvasVisibility(visible);\n    }\n\n    // startup function\n    public async initialize() {\n        // create and initialize engine\n        this.engine = await FactoryEngine.create(this);\n        AdapterUtils.initialize(this.engine);\n        await FactoryEngine.initialize(this.engine);\n        this.authentication.setEngine(this.engine);\n\n        // Set the filterLoginGroupDelegate\n        const filterLoginGroupDelegate: FilterLoginGroupDelegateWeb =\n            this.engine.FilterLoginGroupDelegate.implement(this);\n        this.getFilterLoginGroup().setDelegate(filterLoginGroupDelegate);\n\n        // set the canvas size before checking the token to prevent flickering\n        this.engineCanvas.current?.resizeCanvas();\n\n        if (this.withoutInterface)\n            return;\n\n        const token: string = await this.authentication.getToken();\n        // validate the token\n        if (!await this.helperLogin.retrievePeerForCurrentToken(token) &&\n            !this.getFilterLoginGroup().isDeviceWhitelisted())\n            this.setLoginOpened(true);\n\n        // load the url\n        this.getFilterLogin().loadURL(window.location.href);\n    }\n\n    async initOnBoarding(){\n        let onBoardingClass = await import('./OnBoarding/OnBoarding');\n        let onBoarding = new onBoardingClass.OnBoarding();\n        onBoarding.render();\n    }\n\n    public isEditing(): boolean { return this.state.isEditing; }\n\n    public async setAudioRecording(enabled: boolean): Promise<boolean> {\n        return this.videoOverlayRef.current?.setAudioRecording(enabled) ?? false;\n    }\n\n    public async setVideoRecording(enabled: boolean): Promise<boolean> {\n        return this.videoOverlayRef.current?.setVideoRecording(enabled) ?? false;\n    }\n\n    public async setVideoFacingMode(facingMode: FacingMode): Promise<boolean> {\n        return this.videoOverlayRef.current?.setFacingMode(facingMode) ?? false;\n    }\n\n    public async getAudioTrack(): Promise<MediaStreamTrack | null> {\n        return this.videoOverlayRef.current?.getAudioTrack() ?? null;\n    }\n\n    public failedDocumentLoad(documentName: string) {\n        Prompt.alert(`${documentName} ${i18next.t(\"is unsupported\")}.`);\n    }\n\n    public refreshToolbar(){\n        const sequenceID: bigint = getCurrentSequenceID();\n        const selectedNodes: bigint[] = getSelectedNodes();\n\n        if (!selectedNodes.length || (Boolean(sequenceID) && !canCurrentPeerEditSequence(sequenceID))) {\n            this.toolbarRef.current?.setSlidersDisabled(true);\n            this.toolbarRef.current?.updateInfos(BigInt(0));\n            return;\n        }\n\n        // fetch selected node state\n        const nodeID: bigint = selectedNodes[0];\n\n        // update toolbar with the selectedNodeID\n        this.toolbarRef.current?.updateNode(nodeID);\n        this.toolbarRef.current?.updateInfos(nodeID);\n        this.toolbarRef.current?.updateSlider(getPosition(nodeID), getRotation(nodeID), getScale(nodeID));\n        this.toolbarRef.current?.setSlidersDisabled(false);\n    }\n\n    private async updateVideoOverlayStreaming() {\n\n        // Make sure not to change the recording state when in a session\n        if (getRemotePeerIDs().length)\n            return;\n\n        // Recording should always be disabled when in editing mode\n        if (this.state.isEditing) {\n            await this.setVideoRecording(false);\n            await this.setAudioRecording(false);\n            return;\n        }\n\n        // Enable / disable streaming depending on step type\n        const stepType: StepType | null = getStepType(getCurrentStepID());\n        switch (stepType){\n            case StepType.VIDEO:\n                await this.setVideoFacingMode(FacingMode.ENVIRONMENT);\n                await this.setVideoRecording(true);\n                await this.setAudioRecording(true);\n                break;\n            case StepType.PHOTO:\n                await this.setVideoFacingMode(FacingMode.ENVIRONMENT);\n                await this.setVideoRecording(true);\n                break;\n            case StepType.ANIMATED:\n            case StepType.BRANCHING:\n            case StepType.INPUT:\n            case StepType.QUESTION:\n            default:\n                await this.setVideoRecording(false);\n                await this.setAudioRecording(false);\n                break;\n        }\n    }\n\n    private setEditing(isEditing: boolean) {\n        if (this.state.isEditing === isEditing)\n            return;\n\n        setEditing(isEditing); // assign into the Core\n\n        this.setState({ isEditing }, async () => {\n            await this.updateVideoOverlayStreaming();\n\n            // exit full screen when going in editing mode\n            if (this.state.isEditing && document.fullscreenElement)\n                await document.exitFullscreen().catch(() => \n                    { AdapterLog.WARN(\"Cannot exit fullscreen mode\"); });\n        });\n    }\n\n    private setLeftPanelsWidth(leftPanelsWidth: number) {\n        if (this.state.leftPanelsWidth === leftPanelsWidth)\n            return; // already ok!\n\n        this.setState({ leftPanelsWidth });\n    }\n\n\n    /////////////////////////////// FilterLoginGroup Delegate ///////////////////////////////\n\n    public didRequestAuthentication() {\n        this.setLoginOpened(true);\n    }\n\n    public didAuthenticateWithGroup(groupID: bigint) {\n        this.getFilterLogin().didAuthenticateWithGroup(groupID);\n    }\n\n    /////////////////////////////// DeepSightCore Delegate ///////////////////////////////\n\n    public didChangeTopFilter(previousTopFilter: InterfaceFilter, newTopFilter: InterfaceFilter) {\n        AdapterLog.DEBUG(`didChangeTopFilter ${previousTopFilter.getName()} -> ${newTopFilter.getName()}`);\n\n        // FilterLogin\n        if (this.getFilterLogin().isAliasOf(newTopFilter)) {\n            this.setEditing(false);\n            this.setLoginOpened(true);\n        }\n\n        // FilterLoginGroup\n        if (this.getFilterLoginGroup().isAliasOf(newTopFilter) || this.getFilterSettings().isAliasOf(newTopFilter)) {\n            this.setEditing(false);\n            this.closeWorldLibrary();\n            this.setLoginOpened(false);\n        }\n\n        // FilterViewer\n        if (this.getFilterViewer().isAliasOf(newTopFilter))\n            this.openWorldLibrary();\n\n        // FilterWorld\n        const didChangeWorld: boolean =\n            (this.getFilterViewer().isAliasOf(previousTopFilter) && this.getFilterWorld().isAliasOf(newTopFilter)) ||\n            (this.getFilterWorld().isAliasOf(previousTopFilter) && this.getFilterEntities().isAliasOf(newTopFilter));\n\n        if (didChangeWorld) {\n            if (!isWorldLoaded(getCurrentWorldID()))\n                return;\n\n            const isEditing: boolean = canUserEditCurrentWorld();\n            this.setEditing(isEditing);\n            if (!isEditing && !document.fullscreenElement)\n                document.documentElement.requestFullscreen().catch(() =>\n                    { AdapterLog.WARN(\"Cannot enter fullscreen mode\"); });\n\n            if (this.leftPanels.current?.getActivePanel() !== PanelOrder.ASSETS)\n                this.openPanel(PanelOrder.ASSETS);\n        }\n\n        // FilterSequenceList\n        if (this.getFilterSequenceList().isAliasOf(newTopFilter)) {\n            const isSequenceSelected: boolean =\n                Boolean(this.getFilterSequenceList().getCurrentPendingSequenceID() || getCurrentSequenceID());\n            if (isSequenceSelected && this.leftPanels.current?.getActivePanel() !== PanelOrder.SEQUENCES)\n                this.openPanel(PanelOrder.SEQUENCES);\n        }\n    }\n\n    public didDetectCodeQR(dataCodeQR: string) {\n        console.log(dataCodeQR);\n    }\n\n    public didChangeSession(sessionID: bigint){\n        this.deepSightConnectRef.current?.updateSession(sessionID);\n    }\n\n    public didUpdateGroup(groupID: bigint) {\n        this.getFilterLoginGroup().didUpdateGroup(groupID);\n        this.worldsLibraryRef.current?.updateGroup(groupID);\n        this.assetsPanelRef.current?.updateGroup(groupID);\n        this.stepsPanelRef.current?.updateGroup(groupID);\n    }\n\n    public didReceivePacketFromDataChannel(peerID: bigint, packetNumber: number, packetTotal: number){\n        this.deepSightConnectRef.current?.updateReceivedPacketFromDataChannel(peerID, packetNumber, packetTotal);\n    }\n\n    /// updated download progress of URL (with fileTitle). TODO(@frank): Use mutlipart upload with chunks instead.\n    public didUpdateDownloadProgress(url: string, fileTitle: string, progress: number){\n        this.progressBar.update(fileTitle, true, progress);\n    }\n\n    public didSelectNode(nodeID: bigint) {\n        // same node or if we received a deselectNode, but we still have selected node, don't do anything\n        if (this.withoutInterface || this.lastSelectedNode === nodeID || (!nodeID && getSelectedNodesCount() > 0))\n            return;\n\n        // track last selected node\n        this.lastSelectedNode = nodeID;\n        this.refreshToolbar();\n\n        // only need to update the sliders if the node is an anchor Or the node was added to session\n        if (isNodeQR(nodeID))\n            return;\n\n        // update required modules\n        this.assetsPanelRef.current?.setSelectedNode(nodeID);\n        this.stepsPanelRef.current?.setSelectedNode(nodeID);\n    }\n\n    public didPlaceNode(nodeId: bigint){\n        // check if nodeQR\n        if (isNodeQR(nodeId))\n            return;\n\n        // get asset ID\n        let assetID: bigint = getAssetID(nodeId);\n\n        // early return if not an asset\n        if(Number(assetID) === 0) return console.log(\"node \" + nodeId + \" is not an asset\");\n\n        // get asset type\n        let assetType: AssetType = getAssetType(assetID);\n\n        // apply actions depending on the asset type\n        switch (assetType){\n            case AssetType.MODEL: {\n                // missing textures\n                if (getMissingTextureCount(assetID) > 0)\n                    this.toolbarRef.current?.openMissingTextureDialog();\n\n                // take world screenshot\n                updateWorldScreenShot();\n                break;\n            }\n            case AssetType.TEXT:\n            case AssetType.IMAGE:\n            case AssetType.VIDEO:\n                // take world screenshot\n                updateWorldScreenShot();\n                break;\n            default:\n                console.log(\"No actions for asset type \" + assetType + \" after didPlaceNode\");\n\n        }\n    }\n\n    public didUpdateNode(nodeID: bigint){\n        this.refreshToolbar();\n        this.assetsPanelRef.current?.updateNode(nodeID);\n        this.stepsPanelRef.current?.updateNode(nodeID);\n        this.toolbarRef.current?.updateNode(nodeID);\n    }\n\n    // node was released\n    public didReleaseNode(){\n        this.quickActionsRef.current?.updateUndoRedo();\n        updateWorldScreenShot();\n    }\n\n    // the worlds list is modified\n    public didUpdateWorldsList(){\n        if(this.withoutInterface)\n            return;\n\n        // Check plan max worlds\n        this.worldsLibraryRef.current?.updateWorldsList();\n\n        // update thumbnail when a new world is added\n        const currentWorldID: bigint = getCurrentWorldID();\n        if (currentWorldID && !getWorldThumbnail(currentWorldID))\n            updateWorldScreenShot();\n    }\n\n    // a world has been modified\n    public didUpdateWorld(worldID: bigint){\n        if(this.withoutInterface)\n            return;\n\n        this.quickActionsRef.current?.updateWorldInfo();\n        this.quickActionsRef.current?.updateActions();\n        this.quickActionsRef.current?.updatePeer(getCurrentPeerID());\n        this.toolbarRef.current?.refreshStepsPane();\n        this.stepsPanelRef.current?.updateStepList();\n        this.sequencesPanelRef.current?.updateSequencesList();\n\n        if (!worldID)\n            return;\n\n        // if not the current active world, stop here\n        if (getCurrentWorldID() !== worldID)\n            return;\n\n        this.closeWorldLibrary();\n\n        this.assetsPanelRef.current?.updateWorld(worldID);\n        this.assetsPanelRef.current?.updatePanelButtons();\n        this.toolbarRef.current?.updatePosSlidersLimit();\n    }\n\n    // a world metadata has changed\n    public didUpdateWorldMetadata(worldID: bigint) {\n        if (this.withoutInterface)\n            return;\n\n        this.worldsLibraryRef.current?.updateWorldsList();\n\n        // call when ownerID & ownerType are queried\n        this.worldsLibraryRef.current?.updateWorld(worldID);\n        this.quickActionsRef.current?.updateWorldInfo();\n        this.quickActionsRef.current?.updateMemberList();\n    }\n\n    // A world has been deleted\n    public didDeleteWorld(worldID: bigint) {\n\n        if (!getCurrentWorldID()) {\n            if (this.quickActionsRef.current?.worldPermissionsRef.current)\n                return window.location.replace(window.location.origin);\n            this.quickActionsRef.current?.enableAction(QuickActionEnum.SAVE, false);\n            this.quickActionsRef.current?.enableAction(QuickActionEnum.SHARE, false);\n            this.quickActionsRef.current?.enableAction(QuickActionEnum.PRINT_ANCHORS, false);\n            this.quickActionsRef.current?.updateWorldInfo();\n            this.assetsPanelRef.current?.updateWorld(BigInt(0));\n            this.assetsPanelRef.current?.updatePanelButtons();\n        }\n    }\n\n    public didUpdateDocument(documentID: bigint) {\n        if (this.worldsLibraryRef.current?.isOpen())\n            this.worldsLibraryRef.current.updateDocument(documentID);\n\n        this.assetsPanelRef.current?.updateDocument(documentID);\n        this.stepsPanelRef.current?.updateDocument(documentID);\n    }\n\n    public didUpdateAsset(assetID: bigint) {\n        if(this.withoutInterface)\n            return;\n\n        if (this.worldsLibraryRef.current?.isOpen())\n            this.worldsLibraryRef.current.updateWorldAsset(assetID);\n\n        // Notify the step panel so that it knows if the Sequence fully loaded\n        this.sequencesPanelRef.current?.updateSequence();\n\n        if (!isAssetForCurrentWorld(assetID) && !isAssetForCurrentStep(assetID))\n            return;\n\n        this.stepsPanelRef.current?.updateAsset(assetID);\n        this.assetsPanelRef.current?.updateAsset(assetID);\n        this.refreshToolbar();\n\n        const type: AssetType = getAssetType(assetID);\n        switch (type) {\n            case AssetType.MODEL: {\n                // stash newly loaded document for recently used\n                this.assetsPanelRef.current?.stashRecentDocumentID(getAssetDocumentID(assetID));\n                break;\n            }\n            case AssetType.TEXT:\n            case AssetType.IMAGE:\n            case AssetType.MTCONNECT:\n            case AssetType.VIDEO:\n                return; // ignore!\n            default: {\n                AdapterLog.WARN(\"Unhandled didUpdateAsset type: \" + type.toString());\n            }\n        }\n    }\n\n    public didDuplicateAsset(assetID: bigint) {\n        // get the asset type to query appropriate info\n        const assetType: AssetType = getAssetType(assetID);\n        const nodeID: bigint = getNodeID(assetID);\n        // title displayed in the duplicate asset toast\n        let assetTitle: string = \"\";\n        switch (assetType) {\n            case AssetType.MODEL:\n                // use the title of the document if it's a model\n                assetTitle = getDocumentTitleWorld(assetID);\n                break;\n            case AssetType.TEXT :\n                // get the text of the assetText\n                const nodeTextID: bigint = nodeID;\n                assetTitle =  nodeTextID === BigInt(0) ? \"Text Annotation\" : getNodeName(nodeTextID);\n                break;\n            case AssetType.IMAGE :\n                // get the name of the assetImage\n                const nodeImageID: bigint = nodeID;\n                assetTitle = nodeImageID === BigInt(0) ? \"Image Annotation\" : getNodeName(nodeImageID);\n                break;\n            case AssetType.VIDEO :\n                // get the name of the assetVideo\n                const nodeVideoID: bigint = nodeID;\n                assetTitle = nodeVideoID ? getNodeName(nodeVideoID) : \"Video Annotation\";\n                break;\n            default:\n                console.log(\"Unknown asset of type \" + assetType);\n                return;\n        }\n\n        this.stepsPanelRef.current?.updateAsset(assetID);\n        this.assetsPanelRef.current?.updateAsset(assetID);\n        duplicateToast(assetTitle);\n    }\n\n    public didDuplicateStep(stepID: bigint){\n        // get the step title and display it if not empty\n        const stepTitle = getOriginalText(getStepTextID(stepID));\n\n        if (stepTitle)\n            duplicateToast(stepTitle)\n    }\n\n    public didDeleteDocument(documentID: bigint){ }\n\n    public didStartSaving() {\n        this.quickActionsRef.current?.startSaving();\n    }\n\n    public didSaveAttribute(){\n        if (isSavingFinished()){\n            setTimeout(() => {\n                this.quickActionsRef.current?.resetAction(QuickActionEnum.SAVE);\n            },1500)\n        }\n    }\n\n    public didUpdatePeer(peerID: bigint) {\n        this.getFilterLoginGroup().didUpdatePeer(peerID);\n        this.getFilterSequence().updatePeer(peerID);\n        this.quickActionsRef.current?.updatePeer(peerID);\n        this.deepSightConnectRef.current?.updatePeer(peerID);\n        this.worldsLibraryRef.current?.updatePeer(peerID);\n        this.assetsPanelRef.current?.updatePeer(peerID);\n        this.stepsPanelRef.current?.updatePeer(peerID);\n        updateSessionPeerInfo(peerID);\n    }\n\n    public didUpdateText(textID: bigint) {\n        if (!textID)\n            return;\n        this.assetsPanelRef.current?.updateText(textID);\n        this.stepsPanelRef.current?.updateText(textID);\n    }\n\n    public didUpdateAudio(audioID: bigint) {\n        this.stepsPanelRef.current?.updateAudio(audioID);\n    }\n\n    public didUpdateVideo(videoID: bigint): void {\n        if (this.worldsLibraryRef.current?.isOpen())\n            this.worldsLibraryRef.current.updateVideo(videoID);\n\n        this.assetsPanelRef.current?.updateVideoAsset(videoID);\n        this.stepsPanelRef.current?.updateVideo(videoID);\n        this.refreshToolbar();\n        this.toolbarRef.current?.updateVideo(videoID);\n    }\n\n    public didUpdateVideoTimer(nodeVideoID: bigint, videoTimer: number) {\n        const currentSequenceNodeVideoID: bigint = getCurrentSequenceNodeVideoID();\n        if(currentSequenceNodeVideoID !== nodeVideoID)\n            return;\n\n        this.toolbarRef.current?.setSequenceVideoTimer(videoTimer * 1000);\n    }\n\n    public didUpdateSequence(sequenceID: bigint) {\n        if (getCurrentSequenceID() !== sequenceID)\n            return;\n\n        this.refreshToolbar();\n        this.toolbarRef.current?.updateSequence(sequenceID);\n        this.stepsPanelRef.current?.updateStepList();\n        this.stepsPanelRef.current?.updateSequence(sequenceID);\n        this.sequencesPanelRef.current?.updateSequence();\n        this.quickActionsRef.current?.enableAction(QuickActionEnum.PRINT_ANCHORS,\n            getCurrentSequenceID() === BigInt(0) && canUserEditCurrentWorld());\n    }\n\n    public didUpdateStep(stepID: bigint){\n        this.updateVideoOverlayStreaming();\n\n        if (!stepID)\n            return;\n\n        this.stepsPanelRef.current?.updateStep(stepID);\n        this.sequencesPanelRef.current?.updateStep(stepID);\n        this.sequencesPanelRef.current?.updateSequence();\n        if (stepID !== getCurrentStepID())\n            return;\n\n        this.toolbarRef.current?.updateStep(stepID);\n    }\n\n    public didChangeCloudToken(isValid: boolean): void {\n        this.getFilterLogin().handleCloudTokenChange(isValid);\n\n        const currentPeerID: bigint = getCurrentPeerID();\n        if (currentPeerID !== this.state.currentPeerID)\n            this.setState({ currentPeerID });\n\n        this.dataSourcePeers.invalidatePeer(currentPeerID);\n        this.worldsLibraryRef.current?.didChangeToken();\n\n        if (!isValid)\n            return;\n\n        // if we just logged in and there is a session code, join session\n        const url: URL = new URL(window.location.href);\n        const parsedURL: {session: string, document: string} = parseURL(url);\n        if (parsedURL.session) {\n            joinSession(parsedURL.session);\n            this.setEditing(true);\n            return;\n        }\n\n        // if logged in, refresh library and display announcements if any\n        const worldInvite: string = url.searchParams.get(\"worldInvite\") ?? \"\";\n        this.worldsLibraryRef.current?.setInvitedWorld(UtilsShared.safelyConvertStringToBigInt(worldInvite));\n        this.announcementDialogRef.current?.handleDialogAnnouncements();\n    }\n\n    public didUpdateSession(sessionID: bigint) {\n        this.deepSightConnectRef.current?.updateSession(sessionID);\n\n        // we check the connected peers and if the world have been share we need to close the WorldDialog\n        if (getRemotePeerIDs().length > 1)\n            this.closeWorldLibrary();\n    }\n\n    public didRequestMicrophone(active: boolean): void {\n        AdapterLog.INFO(\"didRequestMicrophone: \" + active);\n    }\n\n    /////////////////////////////////// END OF DeepSightCore ///////////////////////////////////\n\n    public setLoginOpened(opened: boolean) {\n        this.appLoginDialogRef.current?.setLoginDialogOpened(opened);\n    }\n\n    private async handleLanguageChange(language: Language){\n        this.appLoginDialogRef.current?.setLoginDialogOpened(false);\n        const isConfirm: boolean = await Prompt.confirm(i18next.t(\n            \"Changing the language to {{language}} will reload the page. Are you sure you want to continue?\",\n            { language: i18next.t(language) }\n        ));\n\n        if (!isConfirm) {\n            this.appLoginDialogRef.current?.setLoginDialogOpened(true);\n            return;\n        }\n\n        saveLanguage(language);\n        window.location.reload();\n    }\n\n    public isDocumentRecent(documentID: bigint): boolean {\n        if (this.assetsPanelRef.current)\n            return this.assetsPanelRef.current?.isDocumentRecent(documentID);\n        else if (this.stepsPanelRef.current)\n            return this.stepsPanelRef.current?.isDocumentRecent(documentID);\n\n        return false;\n    }\n\n    /////////////////////////////////// OPEN AND CLOSE DIALOG ///////////////////////////////////\n    public openAnchorsDialog() {\n        if(this.leftPanels.current?.getActivePanel() !== PanelOrder.ASSETS)\n            this.leftPanels.current?.openPanel(PanelOrder.ASSETS);\n\n        setTimeout(() => this.assetsPanelRef.current?.openAnchorsDialog(), 250);\n    }\n\n    public async openAssetsDialog(assetID: bigint = BigInt(0)): Promise<void> {\n        if (getCurrentSequenceID() === BigInt(0)) {\n            if (!this.assetsPanelRef.current)\n                 await this.openPanel(PanelOrder.ASSETS);\n            await this.assetsPanelRef.current?.openAssetsDialog(assetID);\n        }\n        else {\n            if (!this.stepsPanelRef.current)\n                await this.openPanel(PanelOrder.STEPS);\n            await this.stepsPanelRef.current?.openAssetsDialog(assetID);\n        }\n    }\n\n    public isAssetDialogOpen(): boolean { return Boolean(this.assetsPanelRef.current?.isAssetDialogOpen()); }\n\n    public async importFile(file: File): Promise<void> {\n        if(!file)\n            return;\n\n        // if adding to world (no sequence)\n        if (getCurrentSequenceID() === BigInt(0)) {\n            if (!this.assetsPanelRef.current)\n                await this.openPanel(PanelOrder.ASSETS);\n            await this.assetsPanelRef.current?.importFile(file);\n        }\n\n        // otherwise add to current step animated\n        else {\n            if (!this.stepsPanelRef.current)\n                await this.openPanel(PanelOrder.STEPS);\n            await this.stepsPanelRef.current?.importFile(file);\n        }\n    }\n\n    public openAnnouncementDialog() { this.announcementDialogRef.current?.openDialog(); }\n\n    public openWorldLibrary() {\n        this.assetsPanelRef.current?.closeAnchorsDialog();\n        if (!window.location.href.includes(\"session\"))\n            this.worldsLibraryRef.current?.openWorldLibraryDialog();\n    }\n\n    public closeWorldLibrary() {\n        this.worldsLibraryRef.current?.closeWorldLibraryDialog();\n    }\n\n    /////////////////////////////////// OPEN AND UPDATE PANELS ///////////////////////////////////\n\n    public async openPanel(panelToOpen: PanelOrder): Promise<void> {\n        await this.leftPanels.current?.openPanel(panelToOpen);\n    }\n\n    /////////////////////////////////// RENDER METHOD ///////////////////////////////////\n\n    public render() {\n        const hidePanels: boolean = !this.state.isEditing || this.withoutInterface;\n        const widthLeftPanels: number = hidePanels ? 0 : this.state.leftPanelsWidth;\n        const toolbarHeight: number = hidePanels ? 0 : Toolbar.HEIGHT;\n\n        return(\n            <ThemeProvider theme={theme}>\n                <Interface>\n                    {this.progressBar.render()}\n\n                    {/* Create a 2x2 grid: left column's width is leftPanelsWidth and the bottom row is toolbarHeight,\n                        the canvas takes the remaining space */}\n                    <Box style={{ display: \"grid\", width: \"100%\", transition: `${TRANSITIONS_SECONDS}s all`,\n                                  gridTemplateColumns: `${widthLeftPanels}px 1fr`,\n                                  gridTemplateRows: `1fr ${toolbarHeight}px` }}>\n                        {/* LeftPanels is the first column / row and spans 2 rows (100% of height) */}\n                        <Box style={{ gridColumn: \"1\", gridRow: \"1 / span 2\" }}>\n                            <LeftPanels\n                                ref={this.leftPanels}\n                                setPanelsWidth={(leftPanelsWidth: number) => this.setLeftPanelsWidth(leftPanelsWidth)}\n                                assetPanel={<AssetPanel ref={this.assetsPanelRef} />}\n                                sequencesPanel={<SequencesPanel ref={this.sequencesPanelRef} />}\n                                stepsPanel={\n                                    <SelectedStepProvider>\n                                        <StepsPanel ref={this.stepsPanelRef} />\n                                    </SelectedStepProvider>\n                                }\n                            />\n                        </Box>\n\n                        {/* The EngineCanvas is the second column, first row and takes all the space remaining space */}\n                        <Box style={{ gridColumn: \"2\", gridRow: \"1\", position: \"relative\", minHeight: 0 }}>\n                            <EngineCanvas ref={this.engineCanvas}/>\n                            <QuickActions\n                                ref={this.quickActionsRef}\n                                currentPeerID={this.state.currentPeerID}\n                                isEditing={this.state.isEditing}\n                                setEditing={(isEditing: boolean) => this.setEditing(isEditing)} />\n                        </Box>\n\n                        {/* Toolbar is the first column, second row and spans 2 columns (100% of width) */}\n                        <Box style={{ gridColumn: \"1 / span 2\", gridRow: \"2\", zIndex: 500 }}>\n                            <VideoEditorContextProvider>\n                                <Toolbar ref={this.toolbarRef} />\n                            </VideoEditorContextProvider>\n                        </Box>\n                    </Box>\n\n                    {/* Add overlay components */}\n                    {this.withoutInterface ?\n                        <EmbedOverlay /> :\n                        <>\n                            <Box style={{position: \"absolute\", right: \"0\", top: \"0\", zIndex: 1001}}>\n                                <VideoOverlay ref={this.videoOverlayRef} />\n                                <DeepSightConnect\n                                    ref={this.deepSightConnectRef}\n                                    currentPeerID={this.state.currentPeerID}/>\n                            </Box>\n                            <AppLoginDialog\n                                getAuthentication={() => this.authentication}\n                                ref={this.appLoginDialogRef}\n                                language={this.state.language}\n                                setLanguage={(language) => this.handleLanguageChange(language)}\n                                onTokenUpdated={(token: string) => setCloudToken(token)}\n                            />\n                            <AnnouncementDialog\n                                ref={this.announcementDialogRef}\n                                getApp={(): App => App.getInstance()}/>\n                            <WorldsLibrary ref={this.worldsLibraryRef}/>\n                        </>\n                    }\n                    <Box id=\"root-dialog\" ref={Dialog.appDialogRef}></Box>\n                    <Toast/>\n                    <Prompt/>\n                </Interface>\n            </ThemeProvider>\n        )\n    }\n}\n", "import * as React from 'react';\nimport styled from 'styled-components';\nimport {InfoPane} from \"Components/Toolbar/InfoPane\";\nimport {ModelPane} from \"Components/Toolbar/ModelPane/ModelPane\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport {AppInformation} from \"@root/Frontend/Studio/Components/Toolbar/AppInformation/AppInformation\";\nimport {Box} from \"@mui/material\";\nimport {VideoEditor} from \"@root/Frontend/Studio/Components/Toolbar/VideoEditor/VideoEditor\";\nimport {VideoScrubber} from \"@root/Frontend/Studio/Components/Video/VideoScrubber\";\nimport {\n    getCurrentSequenceID,\n    getSequenceVideoID\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {VideoEditorContext} from \"@root/Frontend/Studio/Contexts/VideoEditorContext\";\nimport {\n    getCurrentStepID,\n    getStepType\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {\n    canUserEditCurrentWorld,\n    getAssetID,\n    getAssetType,\n    getSelectedNodesCount\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {AssetType} from \"@backend/Types/AssetType\";\nimport {App} from \"@root/Frontend/Studio/App\";\n\nconst Wrapper = styled(Box)({\n    backgroundColor: dark,\n    position: \"relative\",\n    height: \"100%\",\n    display: \"grid\",\n    flexDirection: \"column\",\n    alignItems: \"flex-end\",\n    backfaceVisibility: \"hidden\"\n})\n\nconst ToolbarWrapper = styled(Box)({\n    display:\"flex\",\n    width: \"100%\",\n    height: \"100%\",\n    justifyContent: \"flex-end\"\n})\n\nconst Row = styled(Box)({\n    width: \"100%\",\n    display:\"flex\",\n    margin: \"3px 0\"\n})\n\nconst Col = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    margin: \"0 3px\",\n    \"& > svg\": {\n        width: \"90px\"\n    }\n})\n\nexport class Toolbar extends React.Component {\n    static contextType = VideoEditorContext;\n    context: React.ContextType<typeof VideoEditorContext>;\n\n    static readonly HEIGHT: number = 180;\n\n    private readonly infoPaneRef: React.RefObject<InfoPane> = React.createRef<InfoPane>();\n    private readonly modelPaneRef: React.RefObject<ModelPane> = React.createRef<ModelPane>();\n    private readonly appInformationRef: React.RefObject<AppInformation> = React.createRef<AppInformation>();\n    private readonly videoEditorRef: React.RefObject<VideoEditor> = React.createRef<VideoEditor>();\n    private readonly videoScrubberRef: React.RefObject<VideoScrubber> = React.createRef<VideoScrubber>();\n\n    public setSequenceVideoTimer(timer: number) { this.context.setVideoTimer(timer); }\n\n    public updateStep(stepID: bigint) {\n        if (stepID === getCurrentStepID()) {\n            this.videoEditorRef.current?.updateIsStepAnimatedSelected(getStepType(stepID) === StepType.ANIMATED);\n            this.videoScrubberRef.current?.updateSelectedRange();\n        }\n    }\n\n    public updateVideo(videoID: bigint) {\n        // Viewers will never see the sequence video, don't load it for nothing\n        if (!canUserEditCurrentWorld())\n            return;\n\n        // this is the active video, forward the update to the scrubber!\n        if (this.context.videoID === videoID)\n            this.videoScrubberRef.current?.updateSequenceVideo(videoID);\n\n        // Add the clipped Video\n        else if (this.context.isEditing)\n            this.videoEditorRef.current?.insertClippedVideo(videoID);\n    }\n\n    public updateSequence(sequenceID: bigint) {\n        if (getCurrentSequenceID() !== sequenceID)\n            return; // ignore, this is not the active sequence!\n\n        // don't load the video if the user is a viewer\n        if (!canUserEditCurrentWorld())\n            return;\n\n        // update the active videoID if the sequence now has one!\n        const videoID: bigint = getSequenceVideoID(sequenceID)\n        if (this.context.videoID !== videoID)\n            this.context.setVideoID(videoID);\n    }\n\n    public updateInfos(currentNodeID: bigint) {\n        let currentAssetID: bigint = BigInt(0);\n\n        if (currentNodeID !== BigInt(0)) {\n            currentAssetID = getAssetID(currentNodeID);\n\n            if (currentAssetID !== BigInt(0)) {\n                // only Model Asset should be able to rescale with the form,\n                // disable the scale button for the other asset type\n                this.setScaleButtonDisabled(getAssetType(currentAssetID) !== AssetType.MODEL);\n            }\n        }\n\n        const selectedNodesCount: number = getSelectedNodesCount();\n        this.infoPaneRef.current?.updateInfos(currentAssetID, currentNodeID, selectedNodesCount);\n\n    }\n\n    public updateNode(nodeID: bigint) {\n        this.modelPaneRef.current?.updateNode(nodeID);\n    }\n\n    public setSlidersDisabled(disabled: boolean){\n        this.modelPaneRef.current?.updateSlidersDisabled(disabled);\n    }\n\n    public setScaleButtonDisabled(scaleBtnDisabled: boolean) {\n        this.modelPaneRef.current?.updateScaleButtonDisabled(scaleBtnDisabled);\n    }\n\n    public updatePosSlidersLimit(){ this.modelPaneRef.current?.forceUpdate(); }\n\n    public updateSlider(position: {x: number, y: number, z: number}, rotation: {x: number, y: number, z: number},\n                        scale: number){\n        this.modelPaneRef.current?.refreshAllSliders(position, rotation, scale);\n    }\n\n    public rescalePrompt(assetID: bigint, saveAssetDocument: boolean = true) {\n      this.modelPaneRef.current?.openRescaleDialog(assetID, saveAssetDocument);\n    }\n\n    public destroyRescalePrompt(){ this.modelPaneRef.current?.closeRescaleDialog(); }\n\n    public refreshStepsPane(){\n        if(this.infoPaneRef?.current?.stepsPane?.current)\n            this.infoPaneRef.current.stepsPane.current.forceUpdate();\n    }\n\n    public forceUpdate(){\n        if(this.modelPaneRef.current)\n            this.modelPaneRef.current?.forceUpdate();\n        if(this.infoPaneRef.current)\n            this.infoPaneRef.current.forceUpdate();\n    }\n\n    public refreshVersion(){ this.appInformationRef.current?.forceUpdate(); }\n\n    public openMissingTextureDialog(){\n        this.infoPaneRef.current?.openMissingTextureDialog();\n    }\n\n    public render(): JSX.Element {\n        return (\n            <Wrapper>\n                <VideoScrubber ref={this.videoScrubberRef} videoID={this.context.videoID}/>\n                <ToolbarWrapper id={\"toolbar\"}>\n                    <Row>\n                        <Col style={{\n                            minWidth:336,\n                            maxWidth:336,\n                            display: \"flex\",\n                            alignItems: \"center\",\n                            justifyContent: \"center\"\n                        }}>\n                            <AppInformation ref={this.appInformationRef} />\n                        </Col>\n                        {this.context.isEditing ?\n                            <VideoEditor ref={this.videoEditorRef} /> :\n                            <Box sx={{display: \"flex\", width: \"100%\"}}>\n                                <Col style={{marginRight:6, maxWidth: 420}}> <InfoPane ref={this.infoPaneRef} /> </Col>\n                                <Col style={{minWidth:450}}> <ModelPane ref={this.modelPaneRef} /> </Col>\n                            </Box>\n                        }\n                    </Row>\n                </ToolbarWrapper>\n            </Wrapper>\n        )\n    }\n}\n", "import * as React from \"react\";\nimport {white, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {Warning} from \"@root/react-components/src/icons/Warning\";\nimport {StepsPane} from \"Components/Toolbar/StepsPane/StepsPane\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport i18next from \"i18next\";\nimport {MissingTexturesDialog} from \"@root/Frontend/Studio/Components/Toolbar/InfoPane/MissingTexturesDialog\";\nimport {\n    canUserEditCurrentWorld,\n    getAssetID,\n    getAssetTitle,\n    getAssetType, getDocumentTitleWorld,\n    getMissingTextureCount, getNodeName,\n    isNodeAnnotation, isNodeModel,\n    isNodeQR, updateAssetTitle, updatePartName\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {Box, styled} from \"@mui/material\";\nimport {AssetType} from \"@backend/Types/AssetType\";\nimport {Rename} from \"@root/react-components/src/icons/Rename\";\nimport {Check} from \"@root/react-components/src/icons/Check\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\n\nconst Wrapper = styled(Box)({\n    display: \"flex\",\n    height: \"100%\",\n    flexDirection: \"column\",\n    justifyContent: \"flex-start\",\n    margin: \"0px 12px 0px 6px\",\n    boxSizing: \"border-box\",\n});\n\nconst Row = styled(Box)({\n    display: \"flex\",\n    alignItems: \"end\",\n});\n\nconst IconContainer = styled(Box)((props:{ disabled?: number })=> ({\n    height: \"16px\",\n    width: \"16px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    margin: \"3px\",\n    pointerEvents: props.disabled ? \"none\" : \"auto\",\n    color: white,\n    opacity: props.disabled ? 0.5 : 1,\n    \"&:hover\": { cursor: props.disabled ? \"default\" : \"pointer\" },\n    \"& > svg\": {\n        height: \"100%\",\n        width: \"100%\"\n    }\n}));\n\ninterface InfoPaneState {\n    currentAssetID: bigint;\n    currentNodeID: bigint;\n    selectedNodesCount: number;\n    editPartName: string | null;\n    isMissingTexturesDialogOpen: boolean;\n}\n\nexport class InfoPane extends React.Component {\n    private readonly stepsPane: React.RefObject<StepsPane> = React.createRef<StepsPane>();\n    private readonly inputPartNameRef: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n\n    state: InfoPaneState = {\n        currentAssetID: BigInt(0),\n        currentNodeID: BigInt(0),\n        selectedNodesCount: 0,\n        editPartName: null,\n        isMissingTexturesDialogOpen: false\n    };\n\n    componentDidMount() { window.addEventListener(\"keydown\", this.keydown); }\n\n    componentWillUnmount() { window.removeEventListener(\"keydown\", this.keydown); }\n\n    public updateInfos(currentAssetID: bigint, currentNodeID: bigint, selectedNodesCount: number) {\n        this.setState({ currentAssetID, currentNodeID, selectedNodesCount });\n    }\n\n    private keydown = (e: KeyboardEvent) => {\n        if (e.key === \"Enter\" && this.state.editPartName && this.inputPartNameRef.current) {\n            e.stopPropagation();\n            this.renamePart(this.state.editPartName ?? \"\");\n        } else if (e.key === \"Escape\" && this.state.editPartName) {\n            e.stopPropagation();\n            this.setState({ editPartName: null });\n        }\n    };\n\n    // renders the warning if there are missing textures\n    private missingTextures() {\n        // only check for missing textures if one node model is selected\n        if (this.state.selectedNodesCount !== 1 || isNodeAnnotation(this.state.currentNodeID)\n            || isNodeQR(this.state.currentNodeID))\n            return;\n\n        // if there is no object selected or no missing textures return.\n        if (getMissingTextureCount(this.state.currentAssetID) < 1)\n            return;\n\n        // Warning icon\n        return (\n            <Tooltip title={i18next.t(\"Fix missing textures\")}>\n                <IconContainer color={yellow} onClick={() => this.openMissingTextureDialog()}>\n                    <Warning />\n                </IconContainer>\n            </Tooltip>\n        );\n    }\n\n    private getSelectedNodes(nodeID: bigint): string {\n        if (this.state.selectedNodesCount > 1)\n            // multiple selection\n            return i18next.t(\"Multiple Selected Parts\") + \" (\" + this.state.selectedNodesCount + \")\";\n        else if (isNodeModel(nodeID))\n            return getAssetTitle(getAssetID(nodeID));\n        else\n            return getNodeName(nodeID);\n    }\n\n    private getAssetName(): string {\n        if (this.state.selectedNodesCount > 1)\n            return i18next.t(\"Multiple assets selected\");\n\n        if (!this.state.currentNodeID || !this.state.currentAssetID)\n            return \"\";\n\n        const assetType: AssetType = getAssetType(this.state.currentAssetID);\n        let assetName: string = \"\";\n\n        switch (assetType){\n            case AssetType.MODEL:\n                assetName = getDocumentTitleWorld(this.state.currentAssetID);\n                break;\n\n            case AssetType.TEXT:\n                assetName = this.state.currentNodeID ? getNodeName(this.state.currentNodeID) : \"Text Annotation\";\n                break;\n\n            case AssetType.IMAGE:\n                assetName = this.state.currentNodeID  ? getNodeName(this.state.currentNodeID) : \"Image Annotation\";\n                break;\n\n            case AssetType.MTCONNECT:\n                assetName = this.state.currentNodeID ? getNodeName(this.state.currentNodeID) : \"Node Column\";\n                break;\n\n            case AssetType.VIDEO:\n                assetName = this.state.currentNodeID ? getNodeName(this.state.currentNodeID) : \"Node Video\";\n                break;\n\n            default: console.log(\"No actions for asset type \" + assetType + \" after didSelectNode\");\n        }\n        return assetName;\n    }\n\n    private renamePart(editPartName: string) {\n        if (isNodeModel(this.state.currentNodeID) && Boolean(editPartName))\n            updateAssetTitle(getAssetID(this.state.currentNodeID), editPartName);\n        else\n            updatePartName(this.state.currentNodeID, editPartName);\n\n        this.setState({ editPartName: null });\n    }\n\n    private async handleOpenEditing(e: React.MouseEvent<HTMLDivElement>) {\n        e.stopPropagation();\n\n        // edit annotation\n        if (isNodeAnnotation(this.state.currentNodeID)) {\n            // If the asset isn't a model, the editor Icon open the assetDialog to edit the step\n            await App.getInstance().openAssetsDialog(getAssetID(this.state.currentNodeID));\n            return;\n        }\n\n        this.setState({ editPartName: this.getSelectedNodes(this.state.currentNodeID) });\n\n        if (this.inputPartNameRef.current)\n            this.inputPartNameRef.current?.focus();\n    }\n\n    public openMissingTextureDialog(){\n        if (this.state.isMissingTexturesDialogOpen)\n            return;\n        this.setState({isMissingTexturesDialogOpen: true});\n    }\n\n    render() {\n        if (!App.getInstance().getEngine())\n            return <></>;\n\n        return(\n            <Wrapper>\n                <Row id=\"input-selection-asset\">\n                    <InputText\n                        id=\"input-selection-asset-text\"\n                        readOnly\n                        value={this.getAssetName()}\n                        placeholder={i18next.t(\"Selected Asset\")}\n                        label={i18next.t(\"Current Asset\")}\n                    />\n                    {this.missingTextures()}\n                </Row>\n                <Row>\n                    <InputText\n                        ref={this.inputPartNameRef}\n                        readOnly={this.state.editPartName === null}\n                        value={this.state.editPartName ?? this.getSelectedNodes(this.state.currentNodeID)}\n                        placeholder={i18next.t(\"Selected Parts\")}\n                        onChange={(editPartName: string) => this.setState({ editPartName })}\n                        label={i18next.t(\"Current Parts\")}\n                    />\n                    <Box style={{ display: \"flex\", gap: \"5px\", marginLeft: \"10px\" }}>\n                        {this.state.editPartName === null ?\n                            <IconContainer\n                                id=\"rename-asset-icon\"\n                                disabled={Number(this.state.selectedNodesCount !== 1 || !canUserEditCurrentWorld())}\n                                onClick={(e: React.MouseEvent<HTMLDivElement>) => this.handleOpenEditing(e)}\n                            >\n                                <Rename/>\n                            </IconContainer>\n                            :\n                            <>\n                                <IconContainer onClick={() => this.renamePart(this.state.editPartName ?? \"\")}>\n                                    <Check />\n                                </IconContainer>\n                                <IconContainer onClick={() => this.setState({ editPartName: null })}>\n                                    <Close />\n                                </IconContainer>\n                            </>\n                        }\n                    </Box>\n                </Row>\n                {/*{*/}\n                {/*    <StepsPane*/}\n                {/*        ref={this.stepsPane}*/}\n                {/*    />*/}\n                {/*}*/}\n                {this.state.isMissingTexturesDialogOpen &&\n                   <MissingTexturesDialog\n                       assetID={this.state.currentAssetID}\n                       onClose={() => this.setState({isMissingTexturesDialogOpen: false})}\n                   />\n\n                }\n            </Wrapper>\n        );\n    }\n}\n", "import React from \"react\";\n\nexport const Warning = () =>\n<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"exclamation-triangle\"\n     className=\"svg-inline--fa fa-exclamation-triangle fa-w-18\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n     viewBox=\"0 0 576 512\" style={{fill: \"currentcolor\"}}>\n    <path fill=\"currentColor\"\n          d=\"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"/>\n</svg>;", "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {dark, lighterDark, shadowWhite, white} from \"../values/colors/colors\";\nimport {Label} from \"../misc/Label\";\nimport {secondaryFontMedium} from \"../values/fonts/fonts\";\nimport {createRef, Fragment, ReactElement} from \"react\";\n\nconst Wrapper = styled(\"div\")`\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  position: relative;\n\n  & .autocomplete {\n    z-index: 99;\n    font: ${secondaryFontMedium};\n    position: absolute;\n    background-color: white;\n    width: 100%;\n    bottom: 0;\n    transform: translateY(100%);\n    border-right: 1px solid ${lighterDark};\n    border-bottom: 1px solid ${lighterDark};\n    border-left: 1px solid ${lighterDark};\n    padding: 6px 0;\n    box-sizing: border-box;\n    box-shadow: ${shadowWhite};\n    & > div{\n      cursor: pointer;\n      padding: 6px 6px;\n      &:hover{\n        background-color: ${lighterDark}30;\n      }\n      &.active{\n        background-color: ${lighterDark}50;\n      }\n    }\n  }\n`;\n\nconst Input = styled(\"input\")\n    <{\n        dark: boolean,\n        hasLabel: boolean,\n        center: boolean,\n        right: boolean\n    }>`\n    background: none;\n    border-top: 0;\n    border-right: 0;\n    border-left: 0;\n    border-bottom: 1px solid ${props => props.dark?dark:white};\n    outline: none;\n    color: ${props => props.dark?dark:white};\n    margin: ${props => props.hasLabel ? 0 : \"3px 0px\"};\n    font-size: 14px;\n    box-sizing: border-box;\n    padding: 0px 2px 3px;\n    font: ${secondaryFontMedium};\n    width: 100%;\n    text-align: ${props => props.center?\"center\":(props.right)?\"right\":\"left\"};\n    -webkit-appearance: none;\n    border-radius: 0;\n    position: relative;\n    &:hover{\n        cursor:${props => props.readOnly?\"default\":\"text\"};\n    }\n    &::placeholder{\n        color: ${ props => props.dark ? dark : white };\n        opacity: 0.5;\n    }\n`;\n\nexport const InputText = React.forwardRef(\n    (props : {\n        id?: string\n        label?: string | ReactElement | ReactElement[],\n        disabled?:boolean,\n        defaultValue?: string,\n        dark?: boolean,\n        center?: boolean,\n        right?: boolean,\n        readOnly?: boolean,\n        onChange?: Function,\n        placeholder?: string,\n        type?: string,\n        name?:string,\n        onFocus?: Function,\n        onBlur?: Function,\n        formNoValidate?: boolean,\n        options?: string[],\n        onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void\n        onOptionSelected?(index: number): void\n        value?: string\n    } = {\n        label: \"InputText\",\n        defaultValue: \"\",\n        dark: true,\n        center: false,\n        right: false,\n        readOnly: false,\n        onChange: () => {},\n        placeholder: \"Enter text here\",\n        type: \"text\",\n        name: \"\",\n        onFocus: () => {},\n        onBlur: () => {},\n        formNoValidate: false,\n        options: [\"first\", \"second\", 'third'],\n        onOptionSelected: null\n    }, ref: React.RefObject<HTMLInputElement>) => {\n\n        const autoCompleteRef = React.createRef<AutoComplete>();\n\n        if(!ref)\n            ref = createRef<HTMLInputElement>();\n\n        const selectFromAutoComplete = (index: number) => {\n            ref.current.value = props.options[index];\n            if(props.onChange)\n                props.onChange(props.options[index]);\n            if(props.onOptionSelected)\n                props.onOptionSelected(index);\n            ref.current.focus();\n            autoCompleteRef.current.setState({\n                searchStr: null,\n                active: null\n            });\n        }\n\n        return(\n            <Wrapper>\n                {\n                    (props.label) ?\n                        <Label style={{marginBottom: 2, marginTop: 2}} dark={props.dark}>\n                            <span>{props.label}</span>\n                        </Label>\n                        :\n                        <></>\n                }\n                <Input\n                    id={props.id}\n                    ref={ref}\n                    disabled={props.disabled}\n                    name={props.name ? props.name : null}\n                    center={props.center}\n                    right={props.right}\n                    readOnly={props.readOnly}\n                    hasLabel={props.label !== \"\"}\n                    onKeyDown={e => {\n                        if(props.onKeyDown)\n                            return props.onKeyDown(e);\n\n                        if(!props.options || !props.options.length)\n                            return;\n\n                        if(!autoCompleteRef || !autoCompleteRef.current)\n                            return;\n\n                        if(e.key === \"ArrowUp\" || e.key === \"ArrowDown\"){\n                            e.preventDefault();\n                            e.stopPropagation();\n\n                            if(e.key === \"ArrowDown\")\n                                autoCompleteRef.current.increaseActive();\n                            else // ArrowUp\n                                autoCompleteRef.current.decreaseActive();\n                        }else if(e.key === \"Enter\"){\n                            if(autoCompleteRef.current.state.active === null)\n                                return;\n\n                            e.preventDefault();\n                            e.stopPropagation();\n                            selectFromAutoComplete(autoCompleteRef.current.state.active);\n                        }\n\n                    }}\n                    onChange={e => {\n                        const value = e.target.value;\n                        if(props.options && autoCompleteRef.current) {\n                            autoCompleteRef.current.setState({\n                                searchStr: value,\n                                active: null\n                            });\n                        }\n                        props.onChange(value);\n                    }}\n                    defaultValue={props.defaultValue}\n                    placeholder={props.placeholder}\n                    type={props.type?props.type:\"text\"}\n                    dark={props.dark}\n                    onFocus={e => {\n                        if(props.options && autoCompleteRef.current) {\n                            autoCompleteRef.current.setState({\n                                searchStr: ref && ref.current ? ref.current.value : \"\"\n                            });\n                        }\n\n                        if(props.onFocus)\n                            props.onFocus(e.target.value);\n                    }}\n                    onBlur={e => {\n                        if(props.onBlur)\n                            props.onBlur(e);\n\n                        if(!autoCompleteRef || !autoCompleteRef.current || autoCompleteRef.current.isFocused)\n                            return;\n\n                        autoCompleteRef.current.setState({\n                            searchStr: null,\n                            active: null\n                        });\n                    }}\n                    formNoValidate={props.formNoValidate}\n                    onClick={e => {\n                        if(props.readOnly)\n                            return false;\n                        e.stopPropagation();\n                    }}\n                    value={props.value}\n                />\n                {props.options && props.options.length ? <AutoComplete\n                    ref={autoCompleteRef}\n                    options={props.options}\n                    onClick={selectFromAutoComplete}\n                /> : <></>}\n            </Wrapper>\n        )\n    });\n\nclass AutoComplete extends React.Component{\n    props: {\n        options: string[],\n        onClick(index: number): void\n    }\n    state: {\n        searchStr: string,\n        active: number\n    } = {\n        searchStr: null,\n        active: null\n    }\n    isFocused: boolean = false;\n\n    componentDidMount() {\n        this.isFocused = false;\n    }\n    componentDidUpdate(prevProps: Readonly<{}>, prevState: Readonly<{}>, snapshot?: any) {\n        this.isFocused = false;\n    }\n\n    hasOptions(){\n        if(this.props.options.length === 0)\n            return false;\n\n        if(this.state.searchStr === null)\n            return true;\n\n        return this.props.options.filter(option =>\n            option.toLowerCase().includes(this.state.searchStr.toLowerCase())).length > 0;\n    }\n\n    increaseActive(){\n        if(!this.hasOptions())\n            return;\n\n        if(this.state.active === null) {\n            if(this.state.searchStr === null)\n                return this.setState({active: 0});\n\n\n            for (let i = 0; i < this.props.options.length; i++) {\n                if(this.props.options[i].toLowerCase().includes(this.state.searchStr.toLowerCase()))\n                    return this.setState({active: i});\n            }\n        }\n\n        for (let i = this.state.active + 1; i < this.props.options.length; i++) {\n            if(this.props.options[i].toLowerCase().includes(this.state.searchStr.toLowerCase()))\n                return this.setState({active: i});\n        }\n    }\n    decreaseActive(){\n        if(!this.hasOptions() || this.state.active === null)\n            return;\n\n        for (let i = this.state.active - 1; i >= 0; i--) {\n            if(this.props.options[i].toLowerCase().includes(this.state.searchStr.toLowerCase()))\n                return this.setState({active: i});\n        }\n    }\n\n    render() {\n        if(this.state.searchStr === null || !this.hasOptions())\n            return <></>;\n\n        return <div className={\"autocomplete\"} onMouseOver={() => this.isFocused = true} onMouseOut={() => this.isFocused = false}>\n            {this.props.options.map((option, index) => {\n                if(!option.toLowerCase().includes(this.state.searchStr.toLowerCase()))\n                    return <Fragment key={\"option-\" + index} />;\n                return <div key={\"option-\" + index}\n                            className={this.state.active === index ? \"active\" : null}\n                            onClick={() => {this.props.onClick(index)}}>{option}</div>;\n            })}\n        </div>\n    }\n}\n", "import * as React from \"react\";\nimport styled from 'styled-components';\nimport {dark, grey} from \"../values/colors/colors\";\nimport {secondaryFontLarge, secondaryFontMedium, secondaryFontSmall, secondaryFontXSmall} from \"../values/fonts/fonts\";\nimport {CSSProperties} from \"react\";\n\nconst Wrapper = styled(\"div\")\n    <{\n        large: boolean,\n        medium: boolean,\n        small: boolean,\n        dark: boolean,\n    }>`\n    font:${props => props.large ? secondaryFontLarge : \n        props.medium ? secondaryFontMedium :\n            props.small ? secondaryFontSmall : secondaryFontXSmall};\n    color: ${props => props.dark?dark:grey};\n    margin-top: 6px;\n`;\n\n/**\n *\n * @param props\n */\nexport const Label = (props : {\n    dark?: boolean,\n    large?: boolean,\n    medium? : boolean,\n    small?: boolean,\n    style?: CSSProperties,\n    children?: React.ReactElement | React.ReactNode\n        } = {\n    dark: true,\n    large: false,\n    medium : false,\n    small: false,\n    children: <>Label</>\n}) => (\n    <Wrapper\n        dark={props.dark}\n        large={props.large}\n        medium={props.medium}\n        small={props.small}\n        style={{...props.style}}\n    >\n        {props.children}\n    </Wrapper>\n);", "import * as React from 'react';\nimport i18next from \"i18next\";\nimport {InputFile} from \"@root/react-components/src/inputs/InputFile\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport {getDocumentPathWorld, getMissingTexture, getMissingTextureCount, loadMissingTextures\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {primaryFontXLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, styled} from \"@mui/material\";\nimport { Button } from '@root/react-components/src/buttons/Button';\n\nconst ButtonsContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    gap: \"5px\",\n    paddingTop: \"5px\"\n});\n\nconst ScrollContainer = styled(Box)({\n    overflow: \"auto\",\n    maxHeight: \"300px\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n});\n\nconst MissingTex = styled(Box)({\n    font: secondaryFontMedium,\n    color: dark,\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    gap: \"10px\"\n});\n\ninterface MissingTexturesDialogProps {\n    assetID: bigint;\n    onClose: () => void;\n}\n\ninterface MissingTexturesDialogState {\n    documentPath: string;\n    missingTextures: string[];\n}\n\nexport class MissingTexturesDialog extends React.Component {\n    private missingFiles: File[] = [];\n\n    props: MissingTexturesDialogProps;\n    state: MissingTexturesDialogState = {\n        documentPath: \"\",\n        missingTextures: []\n    }\n\n    componentDidMount() {\n        // get document name\n        let documentPath: string = getDocumentPathWorld(this.props.assetID);\n        const posSlash: number = documentPath.lastIndexOf('/');\n        documentPath = (posSlash === -1 ? documentPath : documentPath.substring(0, posSlash));\n\n        // get missing texture count for current document\n        const missingTextureCount: number = getMissingTextureCount(this.props.assetID);\n        if (missingTextureCount <= 0)\n            return;\n\n        // get name of all missing texture files and alert user to input the files\n        const missingTextures = [];\n        for (let i = 0; i < missingTextureCount; i++)\n            missingTextures.push(getMissingTexture(this.props.assetID, i));\n\n        this.setState({ documentPath, missingTextures });\n    }\n\n    private onConfirm() {\n        loadMissingTextures(this.props.assetID, this.state.documentPath, this.missingFiles);\n        this.props.onClose();\n    }\n\n    render() {\n        return (\n            <Dialog size={DialogSize.sm}>\n                <Box style={{marginBottom: 20, font: primaryFontXLarge}}>\n                    {i18next.t(\"This model is missing textures!\")}\n                </Box>\n                <ScrollContainer>\n                    {this.state.missingTextures.map((missingTexture, index) => {\n                        const inputFile: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n                        const missingTextureArr: string[] = missingTexture.split(\".\");\n                        return (\n                            <MissingTex key={index} style={{marginBottom: 6}}>\n                                <Box style={{maxWidth: \"500px\", textWrap: \"wrap\", wordBreak: \"break-all\"}}>\n                                    {missingTexture}\n                                </Box>\n                                <InputFile\n                                    dark\n                                    ref={inputFile}\n                                    accept={\".\" + (missingTextureArr[missingTextureArr.length - 1]).toLocaleLowerCase()}\n                                    onChange={() => {\n                                        if (!inputFile.current?.files?.length)\n                                            return;\n\n                                        const file: File | null = inputFile.current.files.item(0);\n                                        if (!file)\n                                            return;\n\n                                        const blob: Blob = file.slice(0, file.size);\n                                        this.missingFiles.push(new File([blob], missingTexture));\n                                    }}\n                                />\n                            </MissingTex>\n                        )\n                    })}\n                </ScrollContainer>\n                <ButtonsContainer>\n                    <Button variant=\"outlined\" onClick={() => this.props.onClose()}> {i18next.t(\"Cancel\")} </Button>\n                    <Button onClick={() => this.onConfirm()}> {i18next.t(\"Load Textures\")} </Button>\n                </ButtonsContainer>\n            </Dialog>\n        );\n    }\n}\n", "import * as React from \"react\";\nimport styled from 'styled-components';\nimport {Label} from \"../misc/Label\";\nimport {Button} from \"../buttons/Button\";\nimport {InputText} from \"./InputText\";\nimport i18next from \"i18next\";\n\nconst Wrapper = styled(\"div\")`\n    display: flex;\n`;\nconst Right = styled(\"div\")`\n    display: flex;\n    flex-direction: column;\n    justify-content: flex-end;\n    margin-left: 6px;\n    width: calc(100% - 50px);\n`\n\nexport const InputFile = React.forwardRef((props: {\n    label?: string,\n    dark?: boolean,\n    defaultValue?: string,\n    accept?: string,\n    onChange?: Function\n                          } = {\n\n    label: \"InputFile\",\n    dark: true,\n    defaultValue: \"\",\n    accept: \"\",\n    onChange: () => {}\n}, ref: React.RefObject<HTMLInputElement> ) => {\n    let divRef = React.createRef<HTMLDivElement>();\n    let inputRef = React.createRef<HTMLInputElement>();\n    return(\n        <Wrapper\n            onClick={() => {\n                (divRef.current.querySelector(\"input[type=file]\") as HTMLInputElement).click();\n            }}\n        >\n            <Button color={props.dark ? \"dark\" : \"white\"} onClick={() => { return; }}>\n                {i18next.t(\"Browse\")}\n            </Button>\n            <Right ref={divRef}>\n                {\n                    (props.label) ?\n                        <Label dark={props.dark}>\n                            <span>{props.label}</span>\n                        </Label>\n                        :\n                        <></>\n                }\n                <input\n                    style={{display: \"none\"}}\n                    type={\"file\"}\n                    ref={ref}\n                    onChange={e => {\n                        inputRef.current.value = e.target.files[0].name\n\n                        if(props.onChange)\n                            props.onChange(e)\n                    }}\n                />\n                <InputText\n                    ref={inputRef}\n                    dark={props.dark}\n                    readOnly={true}\n                    placeholder={i18next.t(\"Select a file\")}\n                    defaultValue={props.defaultValue}\n                />\n            </Right>\n        </Wrapper>\n    )\n});\n", "import {App} from \"App\";\nimport * as React from 'react';\nimport {acceptedFormat, sanitizeFileName} from \"@utils/utils\";\nimport {\n    allocateBufferStringUTF8,\n    convertAndReleaseStringC,\n    countBytesUTF8,\n    decodeBufferInt,\n    decodeVec3,\n    readFile,\n    readFolder\n} from \"Engine/utils\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport i18next from \"i18next\";\nimport {Part} from \"Types/Part\";\nimport {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {AssetType} from \"@backend/Types/AssetType\";\nimport {Role} from \"@backend/Types/Role\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Toast} from \"@root/react-components/src/misc/Toast\";\nimport {Box} from \"@mui/material\";\nimport {draw, getCurrentPeerID, pushRenderFunction} from \"./AdapterWebAssembly\";\nimport {FilterStudio, Document, MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nfunction getEngine(): MainModule { return App.getInstance().getEngine(); }\n\n/// check if the world is shared\nexport function isWorldShared(): boolean {\n    return getEngine()?.isWorldShared() ?? false;\n}\n\n/// set the world to shared/not shared\nexport function setWorldShared(shared: boolean): boolean {\n    return getEngine()?.setWorldShared(shared) ?? false;\n}\n\n/// hides / un-hides all world nodes\nexport function setWorldNodesHidden(hidden: boolean) {\n    App.getInstance().getEngine()?.setWorldNodesHidden(hidden);\n}\n\n/// check if the world is shared\nexport function isWorldEditable(): boolean {\n    return getEngine()?.isWorldEditable() ?? false;\n}\n\n/// set the world to shared/not shared\nexport function setWorldEditable(editable: boolean) {\n    getEngine()?.setWorldEditable(editable);\n}\n\n/// checks if the current user is the owner of a world\nexport function isUserOwnerWorld(worldID: bigint): boolean{\n    return Boolean(getEngine()._isUserOwnerWorld(worldID));\n}\n\n/// return the ID of owner of the world\nexport function getOwnerID(worldID: bigint) {\n    return BigInt.asUintN(64, getEngine()._getOwnerID(worldID));\n}\n\n/// return the type of the owner of the world\nexport function getWorldOwnerType(worldID: bigint): OwnerType {\n    const engine = getEngine();\n    const ownerTypeStr: string = convertAndReleaseStringC(engine._getWorldOwnerType(worldID));\n    return ownerTypeStr ? ownerTypeStr as OwnerType : null;\n}\n\nexport function getWorldEntitiesIDs(worldID: bigint): bigint[] {\n    const engine = getEngine();\n    if (!engine)\n        return [];\n\n    // ask Core for encoded object hierarchy\n    const ptrSize = engine._malloc(4);\n    const ptrBSON = engine._getWorldEntitiesIDs(worldID, ptrSize)\n    const size: number = decodeBufferInt(ptrSize);\n\n    // convert from BSON object\n    const bson = engine.HEAPU8.subarray(ptrBSON, ptrBSON + size);\n    const buffer: Uint8Array = new Uint8Array(bson);\n    const entitiesBSON: { entitiesIDs: bigint[] } = UtilsBSON.deserializeBSON(Buffer.from(buffer));\n\n    // memory cleanup and return result\n    engine._free(ptrSize);\n    if (size !== 0)\n        engine._free(ptrBSON);\n    return entitiesBSON.entitiesIDs;\n}\n\nexport function getEntityName(entityID: bigint): string {\n    const engine = getEngine();\n    if (!engine)\n        return \"\";\n\n    return convertAndReleaseStringC(engine._getEntityName(entityID));\n}\n\nexport function isEntityArchived(entityID: bigint): boolean {\n    return Boolean(getEngine()._isEntityArchived(entityID));\n}\n\n/// get authorized emails for a given world\nexport function getAuthorizedEmails(worldID: bigint): Set<string> {\n    const engine = getEngine();\n\n    // ask core for encoded object hierarchy\n    const ptrSize = engine._malloc(4);\n    const ptrBSON = engine._getAuthorizedEmails(worldID, ptrSize);\n    const size = decodeBufferInt(ptrSize);\n    engine._free(ptrSize);\n    if (ptrBSON === 0)\n        return new Set();\n\n    // convert from BSON object\n    const bson = engine.HEAPU8.subarray(ptrBSON, ptrBSON + size);\n    const buffer = new Uint8Array(bson);\n    const emails = UtilsBSON.deserializeBSON(Buffer.from(buffer));\n\n    // memory cleanup and return result\n    engine._free(ptrBSON);\n    return new Set<string>(emails.emails);\n}\n\n/// get the role of the associated email for a given world\nexport function getAuthorizedEmailRole(worldID: bigint, email: string): Role | null {\n    const engine = getEngine();\n\n    const bufferEmail = allocateBufferStringUTF8(email);\n    const emailRole = convertAndReleaseStringC(\n        engine._getAuthorizedEmailRole(worldID, bufferEmail));\n    engine._free(bufferEmail);\n    return emailRole ? emailRole as Role : null;\n}\n\n/// get peer members of a given world\nexport function getWorldPeers(worldID: bigint): Set<bigint> {\n    const engine: MainModule = getEngine();\n\n    // ask Core for encoded object hierarchy\n    const ptrSize: number = engine._malloc(4);\n    const ptrBSON: number = engine._getWorldPeers(worldID, ptrSize);\n    const size: number = decodeBufferInt(ptrSize);\n    engine._free(ptrSize);\n    if (ptrBSON === 0)\n        return new Set();\n\n    // convert from BSON object\n    const bson = engine.HEAPU8.subarray(ptrBSON, ptrBSON + size);\n    const buffer = new Uint8Array(bson);\n    const peerIDs = UtilsBSON.deserializeBSON(Buffer.from(buffer));\n\n    // memory cleanup and return result\n    engine._free(ptrBSON);\n    return new Set<bigint>(peerIDs.peerIDs);\n}\n\nexport function getWorldGroups(worldID: bigint): Set<bigint>{\n    const engine: MainModule = getEngine();\n\n    // ask Core for world group list\n    const ptrSize: number = engine._malloc(4);\n    const ptrBSON: number = engine._getWorldGroups(worldID, ptrSize);\n    const size: number = decodeBufferInt(ptrSize);\n    engine._free(ptrSize);\n    if (ptrBSON === 0)\n        return new Set();\n\n    // convert from BSON object\n    const bson: Uint8Array = engine.HEAPU8.subarray(ptrBSON, ptrBSON + size);\n    const buffer = new Uint8Array(bson);\n    const groupIDs = UtilsBSON.deserializeBSON(Buffer.from(buffer));\n\n    // memory cleanup and return result\n    engine._free(ptrBSON);\n    return new Set<bigint>(groupIDs.groupIDs);\n}\n\nexport function getWorldGroupRole(worldID: bigint, groupID: bigint): Role | null {\n    const engine = getEngine();\n    const groupRole = convertAndReleaseStringC(engine._getWorldGroupRole(worldID, groupID));\n    return UtilsShared.getCorrespondingEnumValue(Role, groupRole);\n}\n\nexport function setWorldGroupRole(groupID: bigint, role: Role) {\n    getEngine()?.setWorldGroupRole(groupID, role);\n}\n\nexport function removeWorldGroup(worldID: bigint, groupID: bigint){\n    const engine = getEngine();\n    engine._removeWorldGroup(worldID, groupID);\n}\n\n/// get peer id given a username\nexport function getPeerFromUsername(username:string) {\n    const engine = getEngine();\n\n    const bufferUsername = allocateBufferStringUTF8(username);\n    const peerID = BigInt.asUintN(64, engine._getPeerFromUsername(bufferUsername));\n    engine._free(bufferUsername);\n    return peerID;\n}\n\nexport function getUsername(peerID: bigint): string {\n    const engine = getEngine();\n    return convertAndReleaseStringC(engine._getUsername(peerID));\n}\n\nexport function getPeerFullName(peerID: bigint) {\n    return convertAndReleaseStringC(getEngine()._getPeerFullName(peerID));\n}\n\nexport function getPeerGroups(peerID: bigint): Set<bigint>{\n    const engine = getEngine();\n    \n    if (!engine)\n        return new Set();\n\n    // ask Core for encoded object hierarchy\n    const ptrSize = engine._malloc(4);\n    const ptrBSON = engine._getPeerGroups(peerID, ptrSize);\n    const size = decodeBufferInt(ptrSize);\n    engine._free(ptrSize);\n    if (ptrBSON === 0)\n        return new Set();\n\n    // convert from BSON object\n    const bson = engine.HEAPU8.subarray(ptrBSON, ptrBSON + size);\n    const buffer = new Uint8Array(bson);\n    const groupIDs = UtilsBSON.deserializeBSON(Buffer.from(buffer));\n\n    // memory cleanup and return result\n    engine._free(ptrBSON);\n    return new Set<bigint>(groupIDs.groupIDs);\n}\n\nexport function getPeerGroupRole(peerID: bigint, groupID: bigint): Role | null {\n    const engine = getEngine();\n    const groupRole = convertAndReleaseStringC(engine._getPeerGroupRole(peerID, groupID));\n    return UtilsShared.getCorrespondingEnumValue(Role, groupRole);\n}\n\nexport function getGroupName(groupID: bigint): string {\n    const engine: MainModule = getEngine();\n    return engine?.getGroupName(groupID) ?? \"\";\n}\n\nexport function getGroupWorldIDs(groupID: bigint): bigint[] {\n    const engine: MainModule = getEngine();\n\n    // get group worlds from Core\n    const ptrSize: number = engine._malloc(4);\n    const ptrBSON: number = engine._getGroupWorldIDs(groupID, ptrSize);\n    const size: number = decodeBufferInt(ptrSize);\n    engine._free(ptrSize);\n    if (ptrBSON === 0)\n        return [];\n\n    // convert from BSON object\n    const bson = engine.HEAPU8.subarray(ptrBSON, ptrBSON + size);\n    const buffer = new Uint8Array(bson);\n    const worldIDs: { worldIDs: bigint[] } = UtilsBSON.deserializeBSON(Buffer.from(buffer));\n\n    // memory cleanup and return result\n    engine._free(ptrBSON);\n    return worldIDs.worldIDs;\n}\n\n/// remove the given email from the current world\nexport function removeEmailFromWorld(email: string): void {\n    getEngine()?.removeEmailFromWorld(email);\n}\n\n/// remove the given peer ID from the current world\nexport function removePeerFromWorld(peerID: bigint): void {\n    getEngine()?.removePeerFromWorld(peerID);\n}\n\n/// add world to user's list of worlds\nexport function addWorldToCurrentPeer(worldID: bigint) {\n    getEngine()._addWorldToCurrentPeer(worldID);\n}\n\n/// clone the world at index\nexport function cloneWorld(worldID: bigint, ownerID: bigint, ownerType: OwnerType, title: string): void {\n    const copiedWorldTitle: string = getWorldTitle(worldID);\n    const toastContent: JSX.Element = (\n        <Box>\n            {i18next.t(\"The world\")}&nbsp;\n            <span style={{fontWeight: \"bold\"}}>{copiedWorldTitle}</span>&nbsp;\n            {i18next.t(\"has been duplicate with the name\")}&nbsp;\n            <span style={{fontWeight: \"bold\"}}>{title}</span>\n        </Box>\n    );\n    Toast.showToast(toastContent);\n\n    const ownerTypeStr = allocateBufferStringUTF8(ownerType);\n    const worldTitle = allocateBufferStringUTF8(title);\n    const engine = getEngine();\n    engine._cloneWorld(worldID, ownerID, ownerTypeStr, worldTitle);\n    engine._free(ownerTypeStr);\n    engine._free(worldTitle);\n}\n\n/// changes the member's role in the world\nexport function setWorldMemberRole(peerEmail: string, role: string) {\n    getEngine()?.setWorldMemberRole(peerEmail, role);\n}\nexport function isSavingFinished() {\n    return getEngine()._isSavingFinished();\n}\n\n/// checks if the current user can edit the current world\nexport function canUserEditCurrentWorld(): boolean {\n    const worldID: bigint = getEngine()?.getCurrentWorldID() ?? BigInt(0);\n    return worldID ? canCurrentPeerEditWorld(worldID) : false;\n}\n\n/// check if the current peer can edit the given world\nexport function canCurrentPeerEditWorld(worldID: bigint): boolean {\n    if (!worldID || !getEngine())\n        return false;\n    // seems to return a number from c++, so we cast into a boolean just to be sure!\n    return Boolean(getEngine()._canCurrentPeerEditWorld(worldID));\n}\n\n/// check if the current peer can delete the given world\nexport function canCurrentPeerDeleteWorld(worldID: bigint): boolean {\n    if (!worldID)\n        return false;\n    return Boolean(getEngine()._canCurrentPeerDeleteWorld(worldID));\n}\n\n// TODO (ebalthazard): This should be move in a utils\n/// gets the amount of available worlds\nexport function getWorldsCount() {\n    let worldsCount: number = 0;\n    for (const worldID of getPeerWorldIDs(getCurrentPeerID()))\n        worldsCount++;\n\n    const groups: Set<bigint> = getPeerGroups(getCurrentPeerID());\n    for (const groupID of groups) {\n        const worldIDs: bigint[] = getGroupWorldIDs(groupID);\n        for (const worldID of worldIDs)\n            worldsCount++;\n    }\n\n    return worldsCount;\n}\n\n/// get current peer worlds\nexport function getPeerWorldIDs(peerID: bigint): bigint[] {\n    const engine: MainModule = getEngine();\n\n    if (!engine)\n        return [];\n\n    // get current peer worlds\n    const buffer: BigUint64Array = engine.getPeerWorlds(peerID);\n    const worldIDs: bigint[] = Array.from(buffer);\n    engine._free(buffer.byteOffset);\n    return worldIDs;\n}\n\n/// check if current user is authorized to world\nexport function isWorldAuthorized(worldID: bigint): boolean{\n    const engine = getEngine();\n    return Boolean(engine?._isWorldAuthorized(worldID));\n}\n\n// get world title\nexport function getWorldTitle(worldID: bigint): string {\n    if(!worldID)\n        return \"\";\n    const engine = getEngine();\n    return convertAndReleaseStringC(engine._getWorldTitle(worldID));\n}\n\n// get world thumbnail\nexport function getWorldThumbnail(worldID: bigint): string {\n    if(!worldID)\n        return \"\";\n    const engine = getEngine();\n    return convertAndReleaseStringC(engine._getWorldThumbnail(worldID));\n}\n\n// get the current world id\nexport function getCurrentWorldID(): bigint {\n    const engine = getEngine();\n    return engine ? BigInt.asUintN(64, engine.getCurrentWorldID()) : BigInt(0);\n}\n\n/// clear all models in world\nexport function clearWorld() {\n    getEngine()._clearWorld();\n}\n\n/// load a world into engine\nexport function loadWorld(worldID: bigint) {\n    getEngine()._loadWorld(worldID);\n\n    // if no documents will be loaded, simply tell app to update now\n    if(getEngine()._getAssetDocumentCount(worldID) === 0)\n        App.getInstance().didUpdateWorld(worldID);\n}\n\n/// load a world asset by the given ID\nexport function loadWorldAsset(worldID: bigint, assetID: bigint): boolean {\n    return Boolean(getEngine()._loadWorldAsset(worldID, assetID));\n}\n\n\n/// get the amount of available documents\nexport function getDocumentsCount() {\n    return getEngine()._getDocumentsCount();\n}\n\n/// get all document IDs\nexport function getDocuments(): Set<bigint> {\n    const engine = getEngine();\n\n    // ask core for encoded object hierarchy\n    const ptrSize = engine._malloc(4);\n    const ptrBSON = engine._getLibraryDocumentsID(ptrSize);\n    if (ptrBSON === 0)\n        return new Set<bigint>();\n    const size = decodeBufferInt(ptrSize);\n    engine._free(ptrSize);\n\n    // convert from BSON object\n    const bson = engine.HEAPU8.subarray(ptrBSON, ptrBSON + size);\n    const buffer = new Uint8Array(bson);\n    const documentIDs = UtilsBSON.deserializeBSON(Buffer.from(buffer));\n\n    // memory cleanup and return result\n    engine._free(ptrBSON);\n    return new Set<bigint>(documentIDs.documentIDs);\n}\n\n/// load the metadata of all the document IDs\nexport function loadLibraryDocumentsMetaData(documentIDs: bigint[]) : void {\n    if (!documentIDs.length)\n        return;\n\n    const engine: MainModule = getEngine();\n    const buffer: number = engine._malloc(documentIDs.length * 8);\n    const view = new BigUint64Array(engine.HEAPU8.buffer, buffer, documentIDs.length);\n    view.set(documentIDs);\n\n    engine.Cloud.getInstance().queryLibraryDocuments({data: buffer, size: view.length});\n    engine._free(buffer);\n}\n\n/// load metadata of document ID\nexport function loadDocumentMetadata(documentID: bigint) {\n    getEngine()._loadDocumentMetadata(documentID);\n}\n\nexport function isDocumentMetadataValid(documentID: bigint) {\n    return getEngine()._isDocumentMetadataValid(documentID);\n}\n\nexport function isDocumentDataValid(documentID: bigint) {\n    return getEngine()._isDocumentDataValid(documentID);\n}\n\nexport function duplicateSelectedAssets() {\n    const copiedAssetTitle: string = `${getAssetTitle(getSelectedAssetID())} ${i18next.t(\"copy\")}`;\n    const assetTitle: number = allocateBufferStringUTF8(copiedAssetTitle);\n\n    const engine = getEngine();\n    engine._duplicateSelectedAssets(assetTitle);\n    engine._free(assetTitle);\n}\n\nexport function getDocumentTitleCloud(documentID: bigint): string {\n    return convertAndReleaseStringC(getEngine()._getDocumentTitleCloud(documentID));\n}\n\nexport function loadDocumentThumbnail(documentID: bigint): boolean {\n    return Boolean(App.getInstance().getEngine()._loadDocumentThumbnail(documentID));\n}\n\nexport function isDocumentThumbnailLoaded(documentID: bigint): boolean {\n    return Boolean(App.getInstance().getEngine()._isDocumentThumbnailLoaded(documentID));\n}\n\nexport function getDocumentThumbnailUrlS3(documentID: bigint): string {\n    return convertAndReleaseStringC(getEngine()._getDocumentThumbnailUrlS3(documentID));\n}\n\nexport function getDocumentThumbnailLocalPath(documentID: bigint): string {\n    return convertAndReleaseStringC(getEngine()._getDocumentThumbnailLocalPath(documentID));\n}\n\nexport function getDocumentLocalPath(documentID: bigint): string {\n    return convertAndReleaseStringC(getEngine()._getDocumentLocalPath(documentID));\n}\n\n/// load documents into the engine\nexport async function addAssetDocumentToWorld(documentID: bigint): Promise<bigint> {\n    const engine = getEngine();\n    if (!engine)\n        return BigInt(0);\n\n    if (!getCurrentWorldID()){\n        const newWorld: bigint = await createNewWorld(i18next.t(\"New World\"), OwnerType.PEER, getCurrentPeerID());\n        if (!newWorld)\n            return BigInt(0);\n    } else if (!canUserEditCurrentWorld())\n        return BigInt(0);\n\n    return BigInt.asUintN(64, engine.addAssetDocumentToWorld(documentID));\n}\n\nexport async function saveModelToCore(file: File): Promise<string> {\n    return new Promise(async (resolve, reject) => {\n        // fetch app and engine\n        const engine = getEngine();\n\n        // TODO(@frank): We shouldn't create a World on the fly here, drag-and-drop should do it!\n        if(!getCurrentWorldID()){\n            const newWorld: bigint = await createNewWorld(i18next.t(\"New World\"), OwnerType.PEER, getCurrentPeerID());\n            if(!newWorld)\n                return reject(\"Failed to dynamicly create new world\");\n        }else if(!canUserEditCurrentWorld())\n            return reject(\"User cannot edit current world\");\n\n        // generate a path to load file in virtual file system\n        const path : string = `${engine.getTemporaryFolder()}/${UtilsShared.generateRandomString(8)}/`;\n        const sanitizedFileName: string = sanitizeFileName(file.name);\n        if (!sanitizedFileName || sanitizedFileName[0] === '.')\n            return reject(`File name ${file.name} is invalid`);\n\n        // handles single files\n        const callbackFile = function(filePath: string) {\n            resolve(filePath);\n        };\n\n        // handles compressed folder\n        const callbackFolder = function(filePath: string) {\n            const decompressedPath =\n                `${engine.getTemporaryFolder()}/${UtilsShared.generateRandomString(8)}/decompressed/`;\n\n            // create the output folder\n            AdapterUtils.ensureDirectoryExist(decompressedPath);\n\n            // convert paths to buffers\n            const bytesLengthCompressedPath = countBytesUTF8(filePath)\n            const compressedPathBuffer = engine._malloc(bytesLengthCompressedPath + 1);\n            engine.stringToUTF8(filePath, compressedPathBuffer, bytesLengthCompressedPath + 1);\n\n            const bytesLengthDecompressedPath = countBytesUTF8(decompressedPath);\n            const decompressedPathBuffer = engine._malloc(bytesLengthDecompressedPath + 1);\n            engine.stringToUTF8(decompressedPath, decompressedPathBuffer, bytesLengthDecompressedPath + 1);\n\n            // try to decompress\n            if(!engine._decompressFolder(compressedPathBuffer, decompressedPathBuffer)) {\n                App.getInstance().failedDocumentLoad(file.name);\n                return reject(\"Failed to decompress folder\");\n            }\n\n            const files = readFolder(decompressedPath);\n\n            for (const file of files) {\n                if (file.length === 0 || file[0] === '.')\n                    continue;\n\n                // get name of file and extension\n                const fileNameArr = file.split(\".\");\n                const extension = fileNameArr[fileNameArr.length -1];\n                if (!acceptedFormat.includes(extension.toUpperCase())) continue;\n\n                // Sanitize the file name\n                const sanitizedName: string = sanitizeFileName(file);\n                if (!sanitizedName || sanitizedName[0] === '.')\n                    return reject(`File name ${file} is invalid`);\n\n                if (sanitizedName === file) {\n                    callbackFile(decompressedPath + file);\n                    continue;\n                }\n\n                const oldPath: string = decompressedPath + file;\n                const newPath: string = decompressedPath + sanitizedName;\n\n                // Rename the file in the virtual filesystem\n                engine.FS.rename(oldPath, newPath);\n                callbackFile(newPath);\n            }\n\n            // free allocated memory for buffers\n            engine._free(compressedPathBuffer);\n            engine._free(decompressedPathBuffer);\n        }\n\n        // load the file into virtual file system, when done proceed to appropriate callback\n        const fileExtension = file.name.split('.').pop() ?? \"\";\n        if (fileExtension.toUpperCase() === \"ZIP\")\n            readFile(file, path, callbackFolder);\n        else {\n            // Patch readFile to use sanitized name\n            const sanitizedFile = new File([file], sanitizedFileName, { type: file.type });\n            readFile(sanitizedFile, path, callbackFile);\n        }\n    });\n}\n\n/// Create a new Document in the Cloud\nexport async function createNewDocument(filePath: string): Promise<Document | null> {\n    return new Promise<Document|null>((resolve) => App.getInstance().getEngine().createNewDocument(filePath, resolve));\n}\n\n/// sets an Asset to be placed (with the cursor)\nexport function setAssetForPlacement(assetID: bigint): boolean {\n    return getEngine()._setAssetForPlacement(assetID);\n}\n\nexport function setAnchorForPlacement(anchorID: bigint): boolean {\n    return getEngine()._setAnchorForPlacement(anchorID);\n}\n\nexport function getMissingTextureCount(assetID: bigint) {\n    return getEngine()?.getMissingTextureCount(assetID);\n}\n\nexport function getMissingTexture(assetID: bigint, index: number) {\n    return getEngine()?.getMissingTexture(assetID, index);\n}\n\nexport function loadMissingTextures(assetID: bigint, documentPath: string, textureFiles: File[]) {\n    // return if no textureFiles were given\n    if (!textureFiles.length)\n        return;\n\n    // load texture file to model when all written to FS\n    const loadTexturesToModel = function(filePath: string) {\n        const engine = getEngine();\n\n        const filePathBuffer = allocateBufferStringUTF8(filePath);\n        engine._loadMissingTextures(assetID);\n        engine._free(filePathBuffer);\n        updateDocumentThumbnail(getAssetDocumentID(assetID));\n    };\n\n    for (let i = 0; i < textureFiles.length; i++) {\n        const file: File = textureFiles[i];\n        const path: string = documentPath + '/';\n        readFile(file, path, loadTexturesToModel);\n    }\n};\n\nexport function getAssetID(nodeID: bigint): bigint {\n    const engine = getEngine();\n    if (!nodeID || !engine)\n        return BigInt(0);\n\n    return BigInt.asUintN(64, engine.getAssetID(nodeID));\n}\n\nexport function getNodeID(assetID: bigint): bigint {\n    const engine = getEngine();\n    if (!assetID || !engine)\n        return BigInt(0);\n    return BigInt.asUintN(64, engine.getNodeID(assetID));\n}\n\nexport function getAssetType(assetID: bigint): AssetType {\n    return getEngine()?.getAssetType(assetID) ?? AssetType.COUNT;\n}\n\n// Document ID\nexport function getAssetDocumentID(assetID: bigint): bigint{\n    const engine = getEngine();\n    return engine ? BigInt.asUintN(64, getEngine().getAssetDocumentID(assetID)) : BigInt(0);\n}\n\n// Asset Title\nexport function getAssetTitle(assetID: bigint): string {\n    if(!assetID)\n        return i18next.t(\"Unknown\");\n\n    return getEngine()?.getAssetTitle(assetID);\n}\n\n// NodeModel ID\nexport function getModelID(assetID: bigint): bigint {\n    const engine = getEngine();\n    return engine ? engine.getModelID(assetID) : BigInt(0);\n}\n\nexport function getSelectedAssetID(): bigint {\n    return BigInt.asUintN(64, getEngine()._getSelectedAssetID());\n}\n\nexport function getSelectedAnchorID() {\n    return BigInt.asUintN(64, getEngine()._getSelectedAnchorID());\n}\n\nexport function getSelectedSessionNodeID(): bigint {\n    return BigInt.asUintN(64, getEngine()._getSelectedSessionNodeID());\n}\n\nexport function updateAssetTitle(assetID: bigint, newTitle: string) {\n    if(!newTitle)\n        newTitle = i18next.t(\"Unnamed\");\n\n    getEngine()?.updateAssetTitle(assetID, newTitle);\n}\n\nexport function getDocumentTitleWorld(assetID: bigint): string {\n    const engine = getEngine();\n    if(!assetID || !engine)\n        return i18next.t(\"Unknown\");\n\n    return engine.getDocumentTitleWorld(assetID);\n}\n\nexport function getDocumentPathWorld(assetID: bigint): string {\n  return getEngine()?.getDocumentPathWorld(assetID) ?? \"\";\n}\n\nexport function getScale(nodeID: bigint): number {\n    if(nodeID === null)\n        return 0.1;\n\n    const engine = getEngine();\n\n    /// allocate memory for value\n    let buffer = engine._malloc(12);\n    engine._getNodeScale(nodeID, buffer);\n    const value: number = (new DataView(engine.HEAPU8.buffer, buffer, 12))\n        .getFloat32(0, true);\n    engine._free(buffer);\n\n    return value;\n}\n\nexport function scaleSelectedNodes(scale: number) {\n    getEngine()._scaleSelectedNodes(scale, scale, scale);\n}\n\nexport function getRotation(nodeID: bigint) {\n    if(nodeID === null)\n        return {x: 0, y: 0, z: 0};\n\n    const engine = getEngine();\n    let buffer = engine._malloc(12);\n    engine._getNodeRotation(nodeID, buffer);\n    let rotation = decodeVec3(buffer);\n    engine._free(buffer);\n\n    return {\n        x : rotation.x * 180 / Math.PI,\n        y : rotation.y * 180 / Math.PI,\n        z : rotation.z * 180 / Math.PI\n    };\n}\n\nexport function setRotationOfSelectedNodes(x: number, y: number, z: number) {\n    getEngine()._setRotationOfSelectedNodes(\n        x * Math.PI / 180,\n        y * Math.PI / 180,\n        z * Math.PI / 180\n    );\n}\n\nexport function getPosition(nodeID: bigint) : {x: number, y: number, z: number} {\n    if(nodeID === null)\n        return {x: 0, y: 0, z: 0};\n    const engine = getEngine();\n    const buffer = engine._malloc(12);\n    engine._getNodePosition(nodeID, buffer);\n    const pos = decodeVec3(buffer);\n    engine._free(buffer);\n    return pos;\n}\n\nexport function getModelBottom(modelID: bigint) : {x: number, y: number, z: number} {\n    const engine = getEngine();\n\n    let buffer = engine._malloc(12);\n    engine._getModelBottom(modelID, buffer);\n\n    let pos = decodeVec3(buffer);\n\n    engine._free(buffer);\n    return pos\n}\n\nexport function commitCommand() {\n    const app: App = App.getInstance();\n    getEngine()._commitCommand();\n    app.quickActionsRef.current?.updateUndoRedo();\n    updateWorldScreenShot();\n}\n\nexport function undoCommand()  {\n    const app: App = App.getInstance();\n    getEngine()._undoCommand();\n    app.quickActionsRef.current?.updateUndoRedo();\n    updateWorldScreenShot();\n}\n\nexport function redoCommand() {\n    const app: App = App.getInstance();\n    getEngine()._redoCommand();\n    app.quickActionsRef.current?.updateUndoRedo();\n    updateWorldScreenShot();\n}\n\nexport function getUndoStackSize() {\n    return getEngine()?._getUndoStackSize();\n}\n\nexport function getRedoStackSize() {\n  return getEngine()?._getRedoStackSize();\n}\n\nexport function moveSelectedNodes(x: number,y: number,z: number)  {\n    getEngine()._moveSelectedNodes(x, y, z);\n}\n\nexport function setEnvironment(width: number, height: number, depth: number, worldID: bigint) {\n    const engine = getEngine();\n    if (!engine)\n        return;\n\n    engine.setStudioDimensions(width, height, depth, worldID);\n}\n\nexport function saveWorldTitle() {\n    getEngine()?.saveCurrentWorldTitle();\n}\n\nexport function saveWorld(screenshot = true) {\n    const engine = getEngine();\n    if (!engine)\n        return;\n\n    document.getElementById(\"engineControls\").dispatchEvent(new KeyboardEvent('keyup',{'code':'KeyS'}));\n    document.getElementById(\"engineControls\").dispatchEvent(new KeyboardEvent('keyup',{'code':'MetaLeft'}));\n\n    engine.saveAllAnchors();\n    // getEngine().saveCurrentWorldDocuments();\n    if(screenshot)\n        updateWorldScreenShot();\n}\n\nexport function isWorldActive(worldID: bigint) {\n    return getEngine()?.isWorldActive(worldID) ?? false;\n}\n\nexport function getLoadedDocumentsCount(): number {\n    return getEngine()?.getLoadedDocumentsCount() ?? 0;\n}\n\nexport function getSequenceCount(worldID: bigint): number {\n    return worldID ? getEngine()._getSequenceCount(worldID) : 0;\n}\n\nexport async function createNewWorld(title: string, ownerType: OwnerType, ownerID: bigint): Promise<bigint> {\n    if (!title.trim())\n        return BigInt(0);\n\n    return new Promise<bigint>((resolve) => {\n        getEngine().createNewWorld(title, ownerType, ownerID, (worldID: bigint) => resolve(worldID));\n    });\n}\n\nexport function createNodeModel(documentLocalPath: string): bigint {\n    const engine = getEngine();\n    if (!engine)\n        return BigInt(0);\n\n    let localPathBuffer = allocateBufferStringUTF8(documentLocalPath);\n    const modelID: bigint = BigInt.asUintN(64, engine._createNodeModel(localPathBuffer));\n    engine._free(localPathBuffer);\n    return modelID;\n}\n\nexport function deleteNodeModel(modelID: bigint): void {\n    const engine = getEngine();\n    if (engine)\n        engine._deleteNodeModel(modelID);\n}\n\nexport function updateWorldScreenShot() {\n    const app: App = App.getInstance();\n\n    const engine = getEngine();\n    if (!engine)\n        return;\n    const worldID: bigint = getCurrentWorldID();\n    if (!worldID)\n        return;\n\n    let activeElement: HTMLElement;\n    let stashedCamera = {\n        pos: engine._malloc(12),\n        forward: engine._malloc(12)\n    };\n    pushRenderFunction((timestamp: number) => {\n        app.setCanvasPlaceholderVisibility(true);\n\n        activeElement = (document.activeElement as HTMLElement);\n        activeElement.blur();\n\n        engine._getCameraState(stashedCamera.pos, stashedCamera.forward);\n\n        engine._setCameraPosXYZ(0,3 + engine.getWorldDimensionH(worldID),5);\n        engine._setCameraForwardXYZ(0,-3,-5);\n\n        draw(timestamp);\n    });\n    pushRenderFunction((timestamp: number) => {\n        const screenshot = createNewCanvasScreenshot();\n        if (screenshot) {\n            // update world thumbnail\n            engine.updateWorldScreenshot(worldID, screenshot.dataRGBA, screenshot.size);\n            engine._free(screenshot.dataRGBA);\n        }\n\n        engine._setCameraState(stashedCamera.pos, stashedCamera.forward);\n        engine._free(stashedCamera.pos);\n        engine._free(stashedCamera.forward);\n\n        draw(timestamp);\n\n        if(activeElement)\n            activeElement.focus();\n    });\n    pushRenderFunction((timestamp: number) => {\n        app.setCanvasPlaceholderVisibility(false);\n\n        draw(timestamp)\n    });\n}\n\nexport function updateDocumentThumbnail(documentID: bigint){\n    const app = App.getInstance();\n    const engine = getEngine();\n    let activeElement: HTMLElement;\n    const stashedCamera = {\n        pos: engine._malloc(12),\n        forward: engine._malloc(12)\n    };\n    app.setCanvasPlaceholderVisibility(true);\n    const documentLocalPath: number = engine._getDocumentLocalPath(documentID);\n    const modelID: bigint = engine._createNodeModel(documentLocalPath);\n    engine._addNodeModelInNodesContainer(modelID);\n\n    // get model dimensions\n    const modelDimension = getModelDimensions(modelID);\n    let longestSide = modelDimension.x > modelDimension.y ? modelDimension.x : modelDimension.y;\n    longestSide = longestSide > modelDimension.z ? longestSide : modelDimension.z;\n\n    // camera and model position far away\n    const cameraPos = {x: 21, y: 1.25, z: 0.75}\n    const modelPos = {x: 20, y: -getModelBottom(modelID).y / longestSide, z: 0}\n\n    pushRenderFunction((timestamp: number) => {\n        activeElement = (document.activeElement as HTMLElement);\n        activeElement.blur();\n\n        engine._getCameraState(stashedCamera.pos, stashedCamera.forward);\n\n        // fit model in frame (1m)\n        applyScaleFactor(modelID, 1 / (longestSide * getScale(modelID)));\n\n        engine._setCameraPosXYZ(cameraPos.x, cameraPos.y, cameraPos.z);\n        engine._setModelPosition(modelID, modelPos.x, modelPos.y, modelPos.z);\n        engine._setCameraForwardXYZ(\n            modelPos.x - cameraPos.x,\n            modelDimension.y / 2 / longestSide - cameraPos.y,\n            modelPos.z - cameraPos.z\n        );\n\n        draw(timestamp);\n    })\n    pushRenderFunction((timestamp: number) => {\n        const screenshot = createNewCanvasScreenshot();\n        if (screenshot) {\n            const documentTitle: string = getDocumentTitleCloud(documentID);\n            const path: string = engine.writeImageToFileJPEG(documentTitle,\n                                                             screenshot.dataRGBA,\n                                                             screenshot.size,\n                                                             screenshot.size,\n                                                             4);\n            if (path) {\n                const pathBuffer: number = allocateBufferStringUTF8(path);\n                engine._updateDocumentThumbnail(documentID, pathBuffer);\n                engine._free(pathBuffer);\n            }\n\n            engine._free(screenshot.dataRGBA);\n        }\n        engine._removeNodeModelFromNodesContainer(modelID);\n        engine._deleteNodeModel(modelID);\n\n        engine._setCameraState(stashedCamera.pos, stashedCamera.forward);\n        engine._free(stashedCamera.pos);\n        engine._free(stashedCamera.forward);\n\n        draw(timestamp);\n\n        if(activeElement)\n            activeElement.focus();\n    })\n    pushRenderFunction((timestamp: number) => {\n        app.setCanvasPlaceholderVisibility(false);\n\n        draw(timestamp)\n    })\n}\n\n// Takes a screenshot of the canvas. The dataRGBA must be freed after using it\nexport function createNewCanvasScreenshot(): {dataRGBA: number, size: number} | null {\n    const app: App = App.getInstance();\n    const engine = getEngine();\n    const context: WebGL2RenderingContext | null = app.getContextWebGL();\n    if (!engine || !context)\n        return null;\n\n    // we only want the center square for the thumbnail\n    const canvasWidth: number = context.drawingBufferWidth;\n    const canvasHeight: number = context.drawingBufferHeight;\n    const size: number = Math.min(canvasWidth, canvasHeight);\n    let startingX: number = 0;\n    let startingY: number = 0;\n    if (canvasHeight < canvasWidth)\n        startingX = Math.floor((canvasWidth - canvasHeight) / 2);\n    else\n        startingY = Math.floor((canvasHeight - canvasWidth) / 2);\n\n    const pixelDataSize: number = (size ** 2) * 4;\n    const pixelData: Uint8Array = new Uint8Array(pixelDataSize);\n    context.readPixels(startingX, startingY, size, size, context.RGBA, context.UNSIGNED_BYTE, pixelData);\n\n    // the pixel data from the Webgl2 canvas starts at the bottom left of the image, so we need to flip it as\n    // we set it in the C++ since it expects the image to start at the top left\n    // Link: https://stackoverflow.com/questions/17248721/flipping-rgba-output-of-glreadpixels-c-opengl\n    // Example:\n    //   <-----STRIDE------>      <-----STRIDE------>\n    //  [RGBA7, RGBA8, RGBA9, => [RGBA1, RGBA2, RGBA3,\n    //   RGBA4, RGBA5, RGBA6, =>  RGBA4, RGBA5, RGBA6,\n    //   RGBA1, RGBA2, RGBA3] =>  RGBA7, RGBA8, RGBA9]\n    const screenshotRGBA = engine._malloc(pixelDataSize);\n    const stride: number = 4 * size;\n    for (let line: number = 0; line < size; ++line) {\n        const lineStart: number = stride * line;\n        const lineEnd: number = lineStart + stride;\n        const lineBuffer: Uint8Array = pixelData.subarray(lineStart, lineEnd);\n        engine.HEAPU8.set(lineBuffer, screenshotRGBA + (pixelDataSize - lineEnd));\n    }\n\n    return {\n        dataRGBA: screenshotRGBA,\n        size: size\n    };\n}\n\nexport function updateWorldTitle(worldID: bigint, newTitle: string) {\n    if (!newTitle.trim())\n        return;\n    const engine = getEngine();\n\n    let titleBuffer = allocateBufferStringUTF8(newTitle);\n    engine._updateWorldTitle(worldID, titleBuffer);\n    engine._free(titleBuffer);\n}\n\nexport function updateWorldOwner(worldID: bigint, ownerType: OwnerType, ownerID: bigint) {\n    if (!worldID || !ownerID || !ownerType)\n        return;\n    const engine = getEngine();\n    const ownerTypeStr = allocateBufferStringUTF8(ownerType);\n    engine._setNewWorldOwner(worldID, ownerTypeStr, ownerID);\n    engine._free(ownerTypeStr);\n}\n\nexport function updateDocumentTitleCloud(documentID: bigint, newTitle: string) {\n    if(newTitle === \"\" || !newTitle)\n        newTitle = i18next.t(\"Unnamed\");\n\n    const engine = getEngine();\n    if (!engine)\n        return;\n\n    const titleBuffer = allocateBufferStringUTF8(newTitle);\n    engine._updateDocumentTitleCloud(documentID, titleBuffer);\n    engine._free(titleBuffer)\n}\n\nexport function updateDocumentTitleWorld(assetID: bigint, newTitle: string) {\n    if (!newTitle)\n        newTitle = i18next.t(\"Unnamed\");\n\n    const engine = getEngine();\n    if (!engine)\n        return;\n\n    engine.updateDocumentTitleWorld(assetID, newTitle);\n}\n\nexport function deleteWorld(worldID: bigint): boolean {\n    return worldID ? Boolean(getEngine()._deleteWorld(worldID)) : false;\n}\n\nexport function leaveWorld(worldID: bigint): boolean {\n    return Boolean(getEngine()._leaveWorld(worldID));\n}\n\nexport function deleteDocument(documentID: bigint) {\n    getEngine()._deleteDocumentCloud(documentID);\n}\n\nexport function removeDocument(assetID: bigint) {\n    getEngine()._removeAssetDocument(assetID);\n    updateWorldScreenShot();\n}\n\nexport function getStudioHierarchy(): Part[] {\n    const engine = getEngine();\n\n    // fetch studio hierarchy as BSON\n    let ptrSize = engine._malloc(4);\n    const ptrBSON = engine._getStudioHierarchy(ptrSize);\n    const size: number = decodeBufferInt(ptrSize);\n\n    // empty bson (no parts)\n    if(size === 0 || ptrBSON === 0)\n        return [];\n\n    // convert from BSON to list of parts\n    let bson = engine.HEAPU8.subarray(ptrBSON, ptrBSON + size);\n    let buffer = new Uint8Array(bson);\n    const hierarchy = UtilsBSON.deserializeBSON(Buffer.from(buffer));\n\n    // memory cleanup and return result\n    engine._free(ptrSize);\n    if(size !== 0)\n        engine._free(ptrBSON);\n\n    // return the hierarchy as an object\n    return hierarchy[\"Nodes\"].childrens;\n}\n\nexport function getNodeName(nodeID: bigint) {\n    return convertAndReleaseStringC(getEngine()._getNodeName(nodeID));\n}\n\nexport function clickNodeID(nodeID: bigint, multiSelect: boolean)  {\n    const filterStudio: FilterStudio = getEngine().getFilterStudio();\n    if (!multiSelect)\n        filterStudio.deselectAllNodes();\n    filterStudio.clickNodeID(nodeID);\n}\n\nexport function clickFirstNodeModel()  {\n    getEngine()._clickFirstNodeModel();\n}\n\nexport function isNodeActive(nodeID: bigint): boolean {\n    return Boolean(getEngine()._isNodeActive(nodeID));\n}\n\nexport function isNodeModel(nodeID: bigint): boolean {\n    return Boolean(getEngine()._isNodeModel(nodeID));\n}\n\nexport function isNodeAnnotation(nodeID: bigint): boolean {\n    return Boolean(getEngine()._isNodeAnnotation(nodeID));\n}\n\nexport function isNodeQR(nodeID : bigint) {\n    return getEngine()._isNodeQR(nodeID);\n}\n\nexport function getSelectedNodes(): bigint[] {\n    const engine = getEngine();\n\n    // get node count\n    const nodeCount = engine._getSelectedNodesCount();\n    if (nodeCount === 0)\n        return [];\n\n    // allocate memory for node ids\n    let bufferNodesID = engine._malloc(nodeCount*8);\n\n    // load buffers with IDs\n    engine._getSelectedNodes(bufferNodesID);\n    let nodesID: bigint[] = [];\n    for (let i  = 0; i < nodeCount; i++) {\n        let offset = i*8;\n        let data = new DataView(engine.HEAPU8.buffer, bufferNodesID+offset, 8);\n        let nodeID = data.getBigUint64(0, true);\n        nodesID.push(nodeID);\n    }\n    engine._free(bufferNodesID);\n    return nodesID;\n};\n\nexport function getSelectedNodesCount() {\n  return getEngine()._getSelectedNodesCount();\n}\n\nexport function setHiddenRecursivelyNodeID(nodeID: bigint, hidden: boolean) {\n    getEngine()._setHiddenRecursivelyNodeID(nodeID, hidden);\n}\n\nexport function setSelectedNodesHidden(hidden: boolean)  {\n    getEngine()._setSelectedNodesHidden(hidden);\n}\n\nexport function updatePartName(nodeID: bigint, newName: string) {\n    if (newName === \"\" || !newName)\n        newName = i18next.t(\"Unnamed\");\n\n    const engine = getEngine();\n    const partNameBuffer: number = allocateBufferStringUTF8(newName);\n    engine._updatePartName(nodeID, partNameBuffer);\n    engine._free(partNameBuffer);\n}\n\nexport function getModelDimensions(modelID: bigint) : {x: number, y:number, z:number} {\n    const engine = getEngine();\n    let buffer = engine._malloc(12);\n    engine._getModelDimensions(modelID, buffer);\n\n    const documentDimensions = decodeVec3(buffer);\n    engine._free(buffer);\n\n    return documentDimensions;\n};\n\nexport function applyScaleFactor(modelID: bigint, factor: number) {\n    getEngine()._applyScaleFactor(modelID, factor);\n}\n\nexport function saveScaleToAssetDocument(assetID: bigint, factor: number) {\n    getEngine()._saveScaleToAssetDocument(assetID, factor);\n}\n\nexport function getInitialScale(documentID: bigint): number {\n    return getEngine()._getInitialScale(documentID);\n}\n\nexport function reCenterModel(assetID: bigint) {\n    getEngine()?.reCenterModel(assetID);\n}\n\nexport enum CameraView {\n    FRONT,\n    TOP,\n    LEFT\n}\nexport function setCameraView(cameraView: CameraView) {\n    getEngine()?._setCameraView(cameraView);\n}\n\nexport function attemptPlayAudio(audioID: bigint): boolean {\n    return Boolean(getEngine()._attemptPlayAudio(audioID));\n}\n\nexport function getDocumentSize(documentID: bigint): bigint {\n    return getEngine()._getDocumentSize(documentID);\n}\n\nexport function getDocumentUrlS3(documentID: bigint): string {\n    return convertAndReleaseStringC(App.getInstance().getEngine()._getDocumentUrlS3(documentID));\n}\n\nexport function queryPeerMetadata(peerID: bigint) {\n    return getEngine()._queryPeerMetadata(peerID);\n}\n\nexport function setEditing(isEditing: boolean) {\n    getEngine()?._setEditing(Number(isEditing));\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport type { ParameterizedString, PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n  switch (objectToString.call(wat)) {\n    case '[object Error]':\n    case '[object Exception]':\n    case '[object DOMException]':\n      return true;\n    default:\n      return isInstanceOf(wat, Error);\n  }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n  return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n  return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n  return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n  return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n  return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\n  return (\n    typeof wat === 'object' &&\n    wat !== null &&\n    '__sentry_template_string__' in wat &&\n    '__sentry_template_values__' in wat\n  );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n  return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record<string, unknown> {\n  return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n  return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n  return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n  return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike<any> {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n  return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n  return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n  try {\n    return wat instanceof base;\n  } catch (_e) {\n    return false;\n  }\n}\n\ninterface VueViewModel {\n  // Vue3\n  __isVue?: boolean;\n  // Vue2\n  _isVue?: boolean;\n}\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isVueViewModel(wat: unknown): boolean {\n  // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n  return !!(typeof wat === 'object' && wat !== null && ((wat as VueViewModel).__isVue || (wat as VueViewModel)._isVue));\n}\n", "import { isRegExp, isString, isVueViewModel } from './is';\n\nexport { escapeStringForRegex } from './vendor/escapeStringForRegex';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n  if (typeof str !== 'string' || max === 0) {\n    return str;\n  }\n  return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n  let newLine = line;\n  const lineLength = newLine.length;\n  if (lineLength <= 150) {\n    return newLine;\n  }\n  if (colno > lineLength) {\n    // eslint-disable-next-line no-param-reassign\n    colno = lineLength;\n  }\n\n  let start = Math.max(colno - 60, 0);\n  if (start < 5) {\n    start = 0;\n  }\n\n  let end = Math.min(start + 140, lineLength);\n  if (end > lineLength - 5) {\n    end = lineLength;\n  }\n  if (end === lineLength) {\n    start = Math.max(end - 140, 0);\n  }\n\n  newLine = newLine.slice(start, end);\n  if (start > 0) {\n    newLine = `'{snip} ${newLine}`;\n  }\n  if (end < lineLength) {\n    newLine += ' {snip}';\n  }\n\n  return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n  if (!Array.isArray(input)) {\n    return '';\n  }\n\n  const output = [];\n  // eslint-disable-next-line @typescript-eslint/prefer-for-of\n  for (let i = 0; i < input.length; i++) {\n    const value = input[i];\n    try {\n      // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n      // console warnings. This happens when a Vue template is rendered with\n      // an undeclared variable, which we try to stringify, ultimately causing\n      // Vue to issue another warning which repeats indefinitely.\n      // see: https://github.com/getsentry/sentry-javascript/pull/8981\n      if (isVueViewModel(value)) {\n        output.push('[VueViewModel]');\n      } else {\n        output.push(String(value));\n      }\n    } catch (e) {\n      output.push('[value cannot be serialized]');\n    }\n  }\n\n  return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nexport function isMatchingPattern(\n  value: string,\n  pattern: RegExp | string,\n  requireExactStringMatch: boolean = false,\n): boolean {\n  if (!isString(value)) {\n    return false;\n  }\n\n  if (isRegExp(pattern)) {\n    return pattern.test(value);\n  }\n  if (isString(pattern)) {\n    return requireExactStringMatch ? value === pattern : value.includes(pattern);\n  }\n\n  return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nexport function stringMatchesSomePattern(\n  testString: string,\n  patterns: Array<string | RegExp> = [],\n  requireExactStringMatch: boolean = false,\n): boolean {\n  return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n", "import type { Event, EventHint, Exception, ExtendedError, StackParser } from '@sentry/types';\n\nimport { isInstanceOf } from './is';\nimport { truncate } from './string';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n  exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n  parser: StackParser,\n  maxValueLimit: number = 250,\n  key: string,\n  limit: number,\n  event: Event,\n  hint?: EventHint,\n): void {\n  if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n    return;\n  }\n\n  // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n  const originalException: Exception | undefined =\n    event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n  // We only create exception grouping if there is an exception in the event.\n  if (originalException) {\n    event.exception.values = truncateAggregateExceptions(\n      aggregateExceptionsFromError(\n        exceptionFromErrorImplementation,\n        parser,\n        limit,\n        hint.originalException as ExtendedError,\n        key,\n        event.exception.values,\n        originalException,\n        0,\n      ),\n      maxValueLimit,\n    );\n  }\n}\n\nfunction aggregateExceptionsFromError(\n  exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n  parser: StackParser,\n  limit: number,\n  error: ExtendedError,\n  key: string,\n  prevExceptions: Exception[],\n  exception: Exception,\n  exceptionId: number,\n): Exception[] {\n  if (prevExceptions.length >= limit + 1) {\n    return prevExceptions;\n  }\n\n  let newExceptions = [...prevExceptions];\n\n  // Recursively call this function in order to walk down a chain of errors\n  if (isInstanceOf(error[key], Error)) {\n    applyExceptionGroupFieldsForParentException(exception, exceptionId);\n    const newException = exceptionFromErrorImplementation(parser, error[key]);\n    const newExceptionId = newExceptions.length;\n    applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n    newExceptions = aggregateExceptionsFromError(\n      exceptionFromErrorImplementation,\n      parser,\n      limit,\n      error[key],\n      key,\n      [newException, ...newExceptions],\n      newException,\n      newExceptionId,\n    );\n  }\n\n  // This will create exception grouping for AggregateErrors\n  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n  if (Array.isArray(error.errors)) {\n    error.errors.forEach((childError, i) => {\n      if (isInstanceOf(childError, Error)) {\n        applyExceptionGroupFieldsForParentException(exception, exceptionId);\n        const newException = exceptionFromErrorImplementation(parser, childError);\n        const newExceptionId = newExceptions.length;\n        applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n        newExceptions = aggregateExceptionsFromError(\n          exceptionFromErrorImplementation,\n          parser,\n          limit,\n          childError,\n          key,\n          [newException, ...newExceptions],\n          newException,\n          newExceptionId,\n        );\n      }\n    });\n  }\n\n  return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception: Exception, exceptionId: number): void {\n  // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n  exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n  exception.mechanism = {\n    ...exception.mechanism,\n    ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n    exception_id: exceptionId,\n  };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n  exception: Exception,\n  source: string,\n  exceptionId: number,\n  parentId: number | undefined,\n): void {\n  // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n  exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n  exception.mechanism = {\n    ...exception.mechanism,\n    type: 'chained',\n    source,\n    exception_id: exceptionId,\n    parent_id: parentId,\n  };\n}\n\n/**\n * Truncate the message (exception.value) of all exceptions in the event.\n * Because this event processor is ran after `applyClientOptions`,\n * we need to truncate the message of the added exceptions here.\n */\nfunction truncateAggregateExceptions(exceptions: Exception[], maxValueLength: number): Exception[] {\n  return exceptions.map(exception => {\n    if (exception.value) {\n      exception.value = truncate(exception.value, maxValueLength);\n    }\n    return exception;\n  });\n}\n", "/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Integration } from '@sentry/types';\n\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions  */\nexport interface InternalGlobal {\n  navigator?: { userAgent?: string };\n  console: Console;\n  Sentry?: {\n    Integrations?: Integration[];\n  };\n  onerror?: {\n    (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n    __SENTRY_INSTRUMENTED__?: true;\n    __SENTRY_LOADER__?: true;\n  };\n  onunhandledrejection?: {\n    (event: unknown): boolean;\n    __SENTRY_INSTRUMENTED__?: true;\n    __SENTRY_LOADER__?: true;\n  };\n  SENTRY_ENVIRONMENT?: string;\n  SENTRY_DSN?: string;\n  SENTRY_RELEASE?: {\n    id?: string;\n  };\n  SENTRY_SDK_SOURCE?: SdkSource;\n  /**\n   * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n   * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n   * file.\n   */\n  _sentryDebugIds?: Record<string, string>;\n  __SENTRY__: {\n    globalEventProcessors: any;\n    hub: any;\n    logger: any;\n    extensions?: {\n      /** Extension methods for the hub, which are bound to the current Hub instance */\n      // eslint-disable-next-line @typescript-eslint/ban-types\n      [key: string]: Function;\n    };\n  };\n  /**\n   * Raw module metadata that is injected by bundler plugins.\n   *\n   * Keys are `error.stack` strings, values are the metadata.\n   */\n  _sentryModuleMetadata?: Record<string, any>;\n}\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all 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,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj: { Math?: Math }): any | undefined {\n  return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ: InternalGlobal =\n  (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n  // eslint-disable-next-line no-restricted-globals\n  (typeof window == 'object' && isGlobalObj(window)) ||\n  (typeof self == 'object' && isGlobalObj(self)) ||\n  (typeof global == 'object' && isGlobalObj(global)) ||\n  (function (this: any) {\n    return this;\n  })() ||\n  {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nexport function getGlobalObject<T>(): T & InternalGlobal {\n  return GLOBAL_OBJ as T & InternalGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton<T>(name: keyof InternalGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n  const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n  const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n  const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n  return singleton;\n}\n", "import { isString } from './is';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\ntype SimpleNode = {\n  parentNode: SimpleNode;\n} | null;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(\n  elem: unknown,\n  options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\n  if (!elem) {\n    return '<unknown>';\n  }\n\n  // try/catch both:\n  // - accessing event.target (see getsentry/raven-js#838, #768)\n  // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n  // - can throw an exception in some circumstances.\n  try {\n    let currentElem = elem as SimpleNode;\n    const MAX_TRAVERSE_HEIGHT = 5;\n    const out = [];\n    let height = 0;\n    let len = 0;\n    const separator = ' > ';\n    const sepLength = separator.length;\n    let nextStr;\n    const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n    const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n    while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n      nextStr = _htmlElementAsString(currentElem, keyAttrs);\n      // bail out if\n      // - nextStr is the 'html' element\n      // - the length of the string that would be created exceeds maxStringLength\n      //   (ignore this limit if we are on the first iteration)\n      if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n        break;\n      }\n\n      out.push(nextStr);\n\n      len += nextStr.length;\n      currentElem = currentElem.parentNode;\n    }\n\n    return out.reverse().join(separator);\n  } catch (_oO) {\n    return '<unknown>';\n  }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n  const elem = el as {\n    tagName?: string;\n    id?: string;\n    className?: string;\n    getAttribute(key: string): string;\n  };\n\n  const out = [];\n  let className;\n  let classes;\n  let key;\n  let attr;\n  let i;\n\n  if (!elem || !elem.tagName) {\n    return '';\n  }\n\n  // @ts-expect-error WINDOW has HTMLElement\n  if (WINDOW.HTMLElement) {\n    // If using the component name annotation plugin, this value may be available on the DOM node\n    if (elem instanceof HTMLElement && elem.dataset && elem.dataset['sentryComponent']) {\n      return elem.dataset['sentryComponent'];\n    }\n  }\n\n  out.push(elem.tagName.toLowerCase());\n\n  // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n  const keyAttrPairs =\n    keyAttrs && keyAttrs.length\n      ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n      : null;\n\n  if (keyAttrPairs && keyAttrPairs.length) {\n    keyAttrPairs.forEach(keyAttrPair => {\n      out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n    });\n  } else {\n    if (elem.id) {\n      out.push(`#${elem.id}`);\n    }\n\n    // eslint-disable-next-line prefer-const\n    className = elem.className;\n    if (className && isString(className)) {\n      classes = className.split(/\\s+/);\n      for (i = 0; i < classes.length; i++) {\n        out.push(`.${classes[i]}`);\n      }\n    }\n  }\n  const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n  for (i = 0; i < allowedAttrs.length; i++) {\n    key = allowedAttrs[i];\n    attr = elem.getAttribute(key);\n    if (attr) {\n      out.push(`[${key}=\"${attr}\"]`);\n    }\n  }\n  return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n  try {\n    return WINDOW.document.location.href;\n  } catch (oO) {\n    return '';\n  }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement<Element>('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDomElement<E = any>(selector: string): E | null {\n  if (WINDOW.document && WINDOW.document.querySelector) {\n    return WINDOW.document.querySelector(selector) as unknown as E;\n  }\n  return null;\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` attribute. This attribute is added at build-time\n * by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nexport function getComponentName(elem: unknown): string | null {\n  // @ts-expect-error WINDOW has HTMLElement\n  if (!WINDOW.HTMLElement) {\n    return null;\n  }\n\n  let currentElem = elem as SimpleNode;\n  const MAX_TRAVERSE_HEIGHT = 5;\n  for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n    if (!currentElem) {\n      return null;\n    }\n\n    if (currentElem instanceof HTMLElement && currentElem.dataset['sentryComponent']) {\n      return currentElem.dataset['sentryComponent'];\n    }\n\n    currentElem = currentElem.parentNode;\n  }\n\n  return null;\n}\n", "declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n", "import type { ConsoleLevel } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n  'debug',\n  'info',\n  'warn',\n  'error',\n  'log',\n  'assert',\n  'trace',\n] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record<ConsoleLevel, LoggerMethod>;\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  [key in ConsoleLevel]?: (...args: any[]) => void;\n} = {};\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n  disable(): void;\n  enable(): void;\n  isEnabled(): boolean;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox<T>(callback: () => T): T {\n  if (!('console' in GLOBAL_OBJ)) {\n    return callback();\n  }\n\n  const console = GLOBAL_OBJ.console as Console;\n  const wrappedFuncs: Partial<LoggerConsoleMethods> = {};\n\n  const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n  // Restore all wrapped console methods\n  wrappedLevels.forEach(level => {\n    const originalConsoleMethod = originalConsoleMethods[level] as LoggerMethod;\n    wrappedFuncs[level] = console[level] as LoggerMethod | undefined;\n    console[level] = originalConsoleMethod;\n  });\n\n  try {\n    return callback();\n  } finally {\n    // Revert restoration to wrapped state\n    wrappedLevels.forEach(level => {\n      console[level] = wrappedFuncs[level] as LoggerMethod;\n    });\n  }\n}\n\nfunction makeLogger(): Logger {\n  let enabled = false;\n  const logger: Partial<Logger> = {\n    enable: () => {\n      enabled = true;\n    },\n    disable: () => {\n      enabled = false;\n    },\n    isEnabled: () => enabled,\n  };\n\n  if (DEBUG_BUILD) {\n    CONSOLE_LEVELS.forEach(name => {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      logger[name] = (...args: any[]) => {\n        if (enabled) {\n          consoleSandbox(() => {\n            GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n          });\n        }\n      };\n    });\n  } else {\n    CONSOLE_LEVELS.forEach(name => {\n      logger[name] = () => undefined;\n    });\n  }\n\n  return logger as Logger;\n}\n\nexport const logger = makeLogger();\n", "import type { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { consoleSandbox, logger } from './logger';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n  return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n  const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n  return (\n    `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n    `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n  );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nexport function dsnFromString(str: string): DsnComponents | undefined {\n  const match = DSN_REGEX.exec(str);\n\n  if (!match) {\n    // This should be logged to the console\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.error(`Invalid Sentry Dsn: ${str}`);\n    });\n    return undefined;\n  }\n\n  const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n  let path = '';\n  let projectId = lastPath;\n\n  const split = projectId.split('/');\n  if (split.length > 1) {\n    path = split.slice(0, -1).join('/');\n    projectId = split.pop() as string;\n  }\n\n  if (projectId) {\n    const projectMatch = projectId.match(/^\\d+/);\n    if (projectMatch) {\n      projectId = projectMatch[0];\n    }\n  }\n\n  return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n  return {\n    protocol: components.protocol,\n    publicKey: components.publicKey || '',\n    pass: components.pass || '',\n    host: components.host,\n    port: components.port || '',\n    path: components.path || '',\n    projectId: components.projectId,\n  };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean {\n  if (!DEBUG_BUILD) {\n    return true;\n  }\n\n  const { port, projectId, protocol } = dsn;\n\n  const requiredComponents: ReadonlyArray<keyof DsnComponents> = ['protocol', 'publicKey', 'host', 'projectId'];\n  const hasMissingRequiredComponent = requiredComponents.find(component => {\n    if (!dsn[component]) {\n      logger.error(`Invalid Sentry Dsn: ${component} missing`);\n      return true;\n    }\n    return false;\n  });\n\n  if (hasMissingRequiredComponent) {\n    return false;\n  }\n\n  if (!projectId.match(/^\\d+$/)) {\n    logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n    return false;\n  }\n\n  if (!isValidProtocol(protocol)) {\n    logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n    return false;\n  }\n\n  if (port && isNaN(parseInt(port, 10))) {\n    logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nexport function makeDsn(from: DsnLike): DsnComponents | undefined {\n  const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n  if (!components || !validateDsn(components)) {\n    return undefined;\n  }\n  return components;\n}\n", "import type { ConsoleLevel } from '@sentry/types';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n  /** Display name of this error instance. */\n  public name: string;\n\n  public logLevel: ConsoleLevel;\n\n  public constructor(public message: string, logLevel: ConsoleLevel = 'warn') {\n    super(message);\n\n    this.name = new.target.prototype.constructor.name;\n    // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n    // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n    // instances of `SentryError` fail `obj instanceof SentryError` checks.\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.logLevel = logLevel;\n  }\n}\n", "/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { logger } from './logger';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, <other\n * args>)` or `origMethod.apply(this, [<other args>])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n  if (!(name in source)) {\n    return;\n  }\n\n  const original = source[name] as () => any;\n  const wrapped = replacementFactory(original) as WrappedFunction;\n\n  // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n  // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n  if (typeof wrapped === 'function') {\n    markFunctionWrapped(wrapped, original);\n  }\n\n  source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\n  try {\n    Object.defineProperty(obj, name, {\n      // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n      value: value,\n      writable: true,\n      configurable: true,\n    });\n  } catch (o_O) {\n    DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n  }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n  try {\n    const proto = original.prototype || {};\n    wrapped.prototype = original.prototype = proto;\n    addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n  } catch (o_O) {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available.  See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n  return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n  return Object.keys(object)\n    .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n    .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n *  an Error.\n */\nexport function convertToPlainObject<V>(\n  value: V,\n):\n  | {\n      [ownProps: string]: unknown;\n      type: string;\n      target: string;\n      currentTarget: string;\n      detail?: unknown;\n    }\n  | {\n      [ownProps: string]: unknown;\n      message: string;\n      name: string;\n      stack?: string;\n    }\n  | V {\n  if (isError(value)) {\n    return {\n      message: value.message,\n      name: value.name,\n      stack: value.stack,\n      ...getOwnProperties(value),\n    };\n  } else if (isEvent(value)) {\n    const newObj: {\n      [ownProps: string]: unknown;\n      type: string;\n      target: string;\n      currentTarget: string;\n      detail?: unknown;\n    } = {\n      type: value.type,\n      target: serializeEventTarget(value.target),\n      currentTarget: serializeEventTarget(value.currentTarget),\n      ...getOwnProperties(value),\n    };\n\n    if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n      newObj.detail = value.detail;\n    }\n\n    return newObj;\n  } else {\n    return value;\n  }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n  try {\n    return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n  } catch (_oO) {\n    return '<unknown>';\n  }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n  if (typeof obj === 'object' && obj !== null) {\n    const extractedProps: { [key: string]: unknown } = {};\n    for (const property in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, property)) {\n        extractedProps[property] = (obj as Record<string, unknown>)[property];\n      }\n    }\n    return extractedProps;\n  } else {\n    return {};\n  }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record<string, unknown>, maxLength: number = 40): string {\n  const keys = Object.keys(convertToPlainObject(exception));\n  keys.sort();\n\n  if (!keys.length) {\n    return '[object has no keys]';\n  }\n\n  if (keys[0].length >= maxLength) {\n    return truncate(keys[0], maxLength);\n  }\n\n  for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n    const serialized = keys.slice(0, includedKeys).join(', ');\n    if (serialized.length > maxLength) {\n      continue;\n    }\n    if (includedKeys === keys.length) {\n      return serialized;\n    }\n    return truncate(serialized, maxLength);\n  }\n\n  return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys<T>(inputValue: T): T {\n  // This map keeps track of what already visited nodes map to.\n  // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n  // references as the input object.\n  const memoizationMap = new Map<unknown, unknown>();\n\n  // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n  return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys<T>(inputValue: T, memoizationMap: Map<unknown, unknown>): T {\n  if (isPojo(inputValue)) {\n    // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n    const memoVal = memoizationMap.get(inputValue);\n    if (memoVal !== undefined) {\n      return memoVal as T;\n    }\n\n    const returnValue: { [key: string]: any } = {};\n    // Store the mapping of this value in case we visit it again, in case of circular data\n    memoizationMap.set(inputValue, returnValue);\n\n    for (const key of Object.keys(inputValue)) {\n      if (typeof inputValue[key] !== 'undefined') {\n        returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n      }\n    }\n\n    return returnValue as T;\n  }\n\n  if (Array.isArray(inputValue)) {\n    // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n    const memoVal = memoizationMap.get(inputValue);\n    if (memoVal !== undefined) {\n      return memoVal as T;\n    }\n\n    const returnValue: unknown[] = [];\n    // Store the mapping of this value in case we visit it again, in case of circular data\n    memoizationMap.set(inputValue, returnValue);\n\n    inputValue.forEach((item: unknown) => {\n      returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n    });\n\n    return returnValue as unknown as T;\n  }\n\n  return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record<string, unknown> {\n  if (!isPlainObject(input)) {\n    return false;\n  }\n\n  try {\n    const name = (Object.getPrototypeOf(input) as { constructor: { name: string } }).constructor.name;\n    return !name || name === 'Object';\n  } catch {\n    return true;\n  }\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n  let objectified;\n  switch (true) {\n    case wat === undefined || wat === null:\n      objectified = new String(wat);\n      break;\n\n    // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n    // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n    // an object in order to wrap it.\n    case typeof wat === 'symbol' || typeof wat === 'bigint':\n      objectified = Object(wat);\n      break;\n\n    // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n    case isPrimitive(wat):\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      objectified = new (wat as any).constructor(wat);\n      break;\n\n    // by process of elimination, at this point we know that `wat` must already be an object\n    default:\n      objectified = wat;\n      break;\n  }\n  return objectified;\n}\n", "import type { StackFrame, StackLineParser, StackParser } from '@sentry/types';\n\nimport type { GetModuleFn } from './node-stack-trace';\nimport { filenameIsInApp, node } from './node-stack-trace';\n\nexport { filenameIsInApp };\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n  const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n  return (stack: string, skipFirst: number = 0): StackFrame[] => {\n    const frames: StackFrame[] = [];\n    const lines = stack.split('\\n');\n\n    for (let i = skipFirst; i < lines.length; i++) {\n      const line = lines[i];\n      // Ignore lines over 1kb as they are unlikely to be stack frames.\n      // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n      // input size. Huge strings can result in hangs/Denial of Service:\n      // https://github.com/getsentry/sentry-javascript/issues/2286\n      if (line.length > 1024) {\n        continue;\n      }\n\n      // https://github.com/getsentry/sentry-javascript/issues/5459\n      // Remove webpack (error: *) wrappers\n      const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n      // https://github.com/getsentry/sentry-javascript/issues/7813\n      // Skip Error: lines\n      if (cleanedLine.match(/\\S*Error: /)) {\n        continue;\n      }\n\n      for (const parser of sortedParsers) {\n        const frame = parser(cleanedLine);\n\n        if (frame) {\n          frames.push(frame);\n          break;\n        }\n      }\n\n      if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n        break;\n      }\n    }\n\n    return stripSentryFramesAndReverse(frames);\n  };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n  if (Array.isArray(stackParser)) {\n    return createStackParser(...stackParser);\n  }\n  return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray<StackFrame>): StackFrame[] {\n  if (!stack.length) {\n    return [];\n  }\n\n  const localStack = Array.from(stack);\n\n  // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n  if (/sentryWrapped/.test(localStack[localStack.length - 1].function || '')) {\n    localStack.pop();\n  }\n\n  // Reversing in the middle of the procedure allows us to just pop the values off the stack\n  localStack.reverse();\n\n  // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n  if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n    localStack.pop();\n\n    // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n    // is produced within the hub itself, making it:\n    //\n    //   Sentry.captureException()\n    //   getCurrentHub().captureException()\n    //\n    // instead of just the top `Sentry` call itself.\n    // This forces us to possibly strip an additional frame in the exact same was as above.\n    if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n      localStack.pop();\n    }\n  }\n\n  return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n    ...frame,\n    filename: frame.filename || localStack[localStack.length - 1].filename,\n    function: frame.function || '?',\n  }));\n}\n\nconst defaultFunctionName = '<anonymous>';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n  try {\n    if (!fn || typeof fn !== 'function') {\n      return defaultFunctionName;\n    }\n    return fn.name || defaultFunctionName;\n  } catch (e) {\n    // Just accessing custom props in some Selenium environments\n    // can cause a \"Permission denied\" exception (see raven-js#495).\n    return defaultFunctionName;\n  }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n  return [90, node(getModule)];\n}\n", "import { DEBUG_BUILD } from '../debug-build';\nimport { logger } from '../logger';\nimport { getFunctionName } from '../stacktrace';\n\nexport type InstrumentHandlerType = 'console' | 'dom' | 'fetch' | 'history' | 'xhr' | 'error' | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n  handlers[type] = handlers[type] || [];\n  (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nexport function resetInstrumentationHandlers(): void {\n  Object.keys(handlers).forEach(key => {\n    handlers[key as InstrumentHandlerType] = undefined;\n  });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\n  if (!instrumented[type]) {\n    instrumentFn();\n    instrumented[type] = true;\n  }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n  const typeHandlers = type && handlers[type];\n  if (!typeHandlers) {\n    return;\n  }\n\n  for (const handler of typeHandlers) {\n    try {\n      handler(data);\n    } catch (e) {\n      DEBUG_BUILD &&\n        logger.error(\n          `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n          e,\n        );\n    }\n  }\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { ConsoleLevel, HandlerDataConsole } from '@sentry/types';\n\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../logger';\nimport { fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): void {\n  const type = 'console';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole(): void {\n  if (!('console' in GLOBAL_OBJ)) {\n    return;\n  }\n\n  CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n    if (!(level in GLOBAL_OBJ.console)) {\n      return;\n    }\n\n    fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n      originalConsoleMethods[level] = originalConsoleMethod;\n\n      return function (...args: any[]): void {\n        const handlerData: HandlerDataConsole = { args, level };\n        triggerHandlers('console', handlerData);\n\n        const log = originalConsoleMethods[level];\n        log && log.apply(GLOBAL_OBJ.console, args);\n      };\n    });\n  });\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n  getRandomValues(array: Uint8Array): Uint8Array;\n  randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n  msCrypto?: CryptoInternal;\n  crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n  const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n  const crypto = gbl.crypto || gbl.msCrypto;\n\n  let getRandomByte = (): number => Math.random() * 16;\n  try {\n    if (crypto && crypto.randomUUID) {\n      return crypto.randomUUID().replace(/-/g, '');\n    }\n    if (crypto && crypto.getRandomValues) {\n      getRandomByte = () => {\n        // crypto.getRandomValues might return undefined instead of the typed array\n        // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n        // However, `typedArray` is still filled in-place.\n        // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n        const typedArray = new Uint8Array(1);\n        crypto.getRandomValues(typedArray);\n        return typedArray[0];\n      };\n    }\n  } catch (_) {\n    // some runtimes can crash invoking crypto\n    // https://github.com/getsentry/sentry-javascript/issues/8935\n  }\n\n  // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n  // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n  return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n    // eslint-disable-next-line no-bitwise\n    ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n  );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n  return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n  const { message, event_id: eventId } = event;\n  if (message) {\n    return message;\n  }\n\n  const firstException = getFirstException(event);\n  if (firstException) {\n    if (firstException.type && firstException.value) {\n      return `${firstException.type}: ${firstException.value}`;\n    }\n    return firstException.type || firstException.value || eventId || '<unknown>';\n  }\n  return eventId || '<unknown>';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n  const exception = (event.exception = event.exception || {});\n  const values = (exception.values = exception.values || []);\n  const firstException = (values[0] = values[0] || {});\n  if (!firstException.value) {\n    firstException.value = value || '';\n  }\n  if (!firstException.type) {\n    firstException.type = type || 'Error';\n  }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial<Mechanism>): void {\n  const firstException = getFirstException(event);\n  if (!firstException) {\n    return;\n  }\n\n  const defaultMechanism = { type: 'generic', handled: true };\n  const currentMechanism = firstException.mechanism;\n  firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n  if (newMechanism && 'data' in newMechanism) {\n    const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n    firstException.mechanism.data = mergedData;\n  }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n  /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n  major?: number;\n  minor?: number;\n  patch?: number;\n  prerelease?: string;\n  buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n  const match = input.match(SEMVER_REGEXP) || [];\n  const major = parseInt(match[1], 10);\n  const minor = parseInt(match[2], 10);\n  const patch = parseInt(match[3], 10);\n  return {\n    buildmetadata: match[5],\n    major: isNaN(major) ? undefined : major,\n    minor: isNaN(minor) ? undefined : minor,\n    patch: isNaN(patch) ? undefined : patch,\n    prerelease: match[4],\n  };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n  // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n  if (frame.lineno === undefined) {\n    return;\n  }\n\n  const maxLines = lines.length;\n  const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n  frame.pre_context = lines\n    .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n    .map((line: string) => snipLine(line, 0));\n\n  frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n  frame.post_context = lines\n    .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n    .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  if (exception && (exception as any).__sentry_captured__) {\n    return true;\n  }\n\n  try {\n    // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n    // `ExtraErrorData` integration\n    addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n  } catch (err) {\n    // `exception` is a primitive, so we can't mark it seen\n  }\n\n  return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify<T = unknown>(maybeArray: T | T[]): T[] {\n  return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n", "// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataDom } from '@sentry/types';\n\nimport { uuid4 } from '../misc';\nimport { addNonEnumerableProperty, fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\ntype SentryWrappedTarget = HTMLElement & { _sentryId?: string };\n\ntype AddEventListener = (\n  type: string,\n  listener: EventListenerOrEventListenerObject,\n  options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n  type: string,\n  listener: EventListenerOrEventListenerObject,\n  options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n  __sentry_instrumentation_handlers__?: {\n    [key in 'click' | 'keypress']?: {\n      handler?: Function;\n      /** The number of custom listeners attached to this element */\n      refCount: number;\n    };\n  };\n};\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\nconst DEBOUNCE_DURATION = 1000;\n\nlet debounceTimerID: number | undefined;\nlet lastCapturedEventType: string | undefined;\nlet lastCapturedEventTargetId: string | undefined;\n\n/**\n * Add an instrumentation handler for when a click or a keypress happens.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addClickKeypressInstrumentationHandler(handler: (data: HandlerDataDom) => void): void {\n  const type = 'dom';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentDOM);\n}\n\n/** Exported for tests only. */\nexport function instrumentDOM(): void {\n  if (!WINDOW.document) {\n    return;\n  }\n\n  // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n  // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n  // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n  const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n  const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n  WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n  WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n  // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n  // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n  // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n  // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n  // guaranteed to fire at least once.)\n  ['EventTarget', 'Node'].forEach((target: string) => {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    const proto = (WINDOW as any)[target] && (WINDOW as any)[target].prototype;\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n    if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n      return;\n    }\n\n    fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n      return function (\n        this: Element,\n        type: string,\n        listener: EventListenerOrEventListenerObject,\n        options?: boolean | AddEventListenerOptions,\n      ): AddEventListener {\n        if (type === 'click' || type == 'keypress') {\n          try {\n            const el = this as InstrumentedElement;\n            const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n            const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n            if (!handlerForType.handler) {\n              const handler = makeDOMEventHandler(triggerDOMHandler);\n              handlerForType.handler = handler;\n              originalAddEventListener.call(this, type, handler, options);\n            }\n\n            handlerForType.refCount++;\n          } catch (e) {\n            // Accessing dom properties is always fragile.\n            // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n          }\n        }\n\n        return originalAddEventListener.call(this, type, listener, options);\n      };\n    });\n\n    fill(\n      proto,\n      'removeEventListener',\n      function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n        return function (\n          this: Element,\n          type: string,\n          listener: EventListenerOrEventListenerObject,\n          options?: boolean | EventListenerOptions,\n        ): () => void {\n          if (type === 'click' || type == 'keypress') {\n            try {\n              const el = this as InstrumentedElement;\n              const handlers = el.__sentry_instrumentation_handlers__ || {};\n              const handlerForType = handlers[type];\n\n              if (handlerForType) {\n                handlerForType.refCount--;\n                // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n                if (handlerForType.refCount <= 0) {\n                  originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n                  handlerForType.handler = undefined;\n                  delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n                }\n\n                // If there are no longer any custom handlers of any type on this element, cleanup everything.\n                if (Object.keys(handlers).length === 0) {\n                  delete el.__sentry_instrumentation_handlers__;\n                }\n              }\n            } catch (e) {\n              // Accessing dom properties is always fragile.\n              // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n            }\n          }\n\n          return originalRemoveEventListener.call(this, type, listener, options);\n        };\n      },\n    );\n  });\n}\n\n/**\n * Check whether the event is similar to the last captured one. For example, two click events on the same button.\n */\nfunction isSimilarToLastCapturedEvent(event: Event): boolean {\n  // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n  if (event.type !== lastCapturedEventType) {\n    return false;\n  }\n\n  try {\n    // If both events have the same type, it's still possible that actions were performed on different targets.\n    // e.g. 2 clicks on different buttons.\n    if (!event.target || (event.target as SentryWrappedTarget)._sentryId !== lastCapturedEventTargetId) {\n      return false;\n    }\n  } catch (e) {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n  }\n\n  // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n  // to which an event listener was attached), we treat them as the same action, as we want to capture\n  // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n  return true;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(eventType: string, target: SentryWrappedTarget | null): boolean {\n  // We are only interested in filtering `keypress` events for now.\n  if (eventType !== 'keypress') {\n    return false;\n  }\n\n  if (!target || !target.tagName) {\n    return true;\n  }\n\n  // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n  // e.g.tabbing through elements, hotkeys, etc.\n  if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n */\nfunction makeDOMEventHandler(\n  handler: (data: HandlerDataDom) => void,\n  globalListener: boolean = false,\n): (event: Event) => void {\n  return (event: Event & { _sentryCaptured?: true }): void => {\n    // It's possible this handler might trigger multiple times for the same\n    // event (e.g. event propagation through node ancestors).\n    // Ignore if we've already captured that event.\n    if (!event || event['_sentryCaptured']) {\n      return;\n    }\n\n    const target = getEventTarget(event);\n\n    // We always want to skip _some_ events.\n    if (shouldSkipDOMEvent(event.type, target)) {\n      return;\n    }\n\n    // Mark event as \"seen\"\n    addNonEnumerableProperty(event, '_sentryCaptured', true);\n\n    if (target && !target._sentryId) {\n      // Add UUID to event target so we can identify if\n      addNonEnumerableProperty(target, '_sentryId', uuid4());\n    }\n\n    const name = event.type === 'keypress' ? 'input' : event.type;\n\n    // If there is no last captured event, it means that we can safely capture the new event and store it for future comparisons.\n    // If there is a last captured event, see if the new event is different enough to treat it as a unique one.\n    // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n    if (!isSimilarToLastCapturedEvent(event)) {\n      const handlerData: HandlerDataDom = { event, name, global: globalListener };\n      handler(handlerData);\n      lastCapturedEventType = event.type;\n      lastCapturedEventTargetId = target ? target._sentryId : undefined;\n    }\n\n    // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n    clearTimeout(debounceTimerID);\n    debounceTimerID = WINDOW.setTimeout(() => {\n      lastCapturedEventTargetId = undefined;\n      lastCapturedEventType = undefined;\n    }, DEBOUNCE_DURATION);\n  };\n}\n\nfunction getEventTarget(event: Event): SentryWrappedTarget | null {\n  try {\n    return event.target as SentryWrappedTarget | null;\n  } catch (e) {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n    return null;\n  }\n}\n", "import { DEBUG_BUILD } from './debug-build';\nimport { logger } from './logger';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\ndeclare const EdgeRuntime: string | undefined;\n\nexport { supportsHistory } from './vendor/supportsHistory';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n  try {\n    new ErrorEvent('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n  try {\n    // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n    // 1 argument required, but only 0 present.\n    // @ts-expect-error It really needs 1 argument, not 0.\n    new DOMError('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n  try {\n    new DOMException('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n  if (!('fetch' in WINDOW)) {\n    return false;\n  }\n\n  try {\n    new Headers();\n    new Request('http://www.example.com');\n    new Response();\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n  return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n  if (typeof EdgeRuntime === 'string') {\n    return true;\n  }\n\n  if (!supportsFetch()) {\n    return false;\n  }\n\n  // Fast path to avoid DOM I/O\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  if (isNativeFetch(WINDOW.fetch)) {\n    return true;\n  }\n\n  // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n  // so create a \"pure\" iframe to see if that has native fetch\n  let result = false;\n  const doc = WINDOW.document;\n  // eslint-disable-next-line deprecation/deprecation\n  if (doc && typeof (doc.createElement as unknown) === 'function') {\n    try {\n      const sandbox = doc.createElement('iframe');\n      sandbox.hidden = true;\n      doc.head.appendChild(sandbox);\n      if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        result = isNativeFetch(sandbox.contentWindow.fetch);\n      }\n      doc.head.removeChild(sandbox);\n    } catch (err) {\n      DEBUG_BUILD &&\n        logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n    }\n  }\n\n  return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n  return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n  // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n  // (see https://caniuse.com/#feat=referrer-policy),\n  // it doesn't. And it throws an exception instead of ignoring this parameter...\n  // REF: https://github.com/getsentry/raven-js/issues/1233\n\n  if (!supportsFetch()) {\n    return false;\n  }\n\n  try {\n    new Request('_', {\n      referrerPolicy: 'origin' as ReferrerPolicy,\n    });\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataFetch } from '@sentry/types';\n\nimport { fill } from '../object';\nimport { supportsNativeFetch } from '../supports';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\ntype FetchResource = string | { toString(): string } | { url: string };\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addFetchInstrumentationHandler(handler: (data: HandlerDataFetch) => void): void {\n  const type = 'fetch';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentFetch);\n}\n\nfunction instrumentFetch(): void {\n  if (!supportsNativeFetch()) {\n    return;\n  }\n\n  fill(GLOBAL_OBJ, 'fetch', function (originalFetch: () => void): () => void {\n    return function (...args: any[]): void {\n      const { method, url } = parseFetchArgs(args);\n\n      const handlerData: HandlerDataFetch = {\n        args,\n        fetchData: {\n          method,\n          url,\n        },\n        startTimestamp: Date.now(),\n      };\n\n      triggerHandlers('fetch', {\n        ...handlerData,\n      });\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      return originalFetch.apply(GLOBAL_OBJ, args).then(\n        (response: Response) => {\n          const finishedHandlerData: HandlerDataFetch = {\n            ...handlerData,\n            endTimestamp: Date.now(),\n            response,\n          };\n\n          triggerHandlers('fetch', finishedHandlerData);\n          return response;\n        },\n        (error: Error) => {\n          const erroredHandlerData: HandlerDataFetch = {\n            ...handlerData,\n            endTimestamp: Date.now(),\n            error,\n          };\n\n          triggerHandlers('fetch', erroredHandlerData);\n          // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n          //       it means the sentry.javascript SDK caught an error invoking your application code.\n          //       This is expected behavior and NOT indicative of a bug with sentry.javascript.\n          throw error;\n        },\n      );\n    };\n  });\n}\n\nfunction hasProp<T extends string>(obj: unknown, prop: T): obj is Record<string, string> {\n  return !!obj && typeof obj === 'object' && !!(obj as Record<string, string>)[prop];\n}\n\nfunction getUrlFromResource(resource: FetchResource): string {\n  if (typeof resource === 'string') {\n    return resource;\n  }\n\n  if (!resource) {\n    return '';\n  }\n\n  if (hasProp(resource, 'url')) {\n    return resource.url;\n  }\n\n  if (resource.toString) {\n    return resource.toString();\n  }\n\n  return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nexport function parseFetchArgs(fetchArgs: unknown[]): { method: string; url: string } {\n  if (fetchArgs.length === 0) {\n    return { method: 'GET', url: '' };\n  }\n\n  if (fetchArgs.length === 2) {\n    const [url, options] = fetchArgs as [FetchResource, object];\n\n    return {\n      url: getUrlFromResource(url),\n      method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n    };\n  }\n\n  const arg = fetchArgs[0];\n  return {\n    url: getUrlFromResource(arg as FetchResource),\n    method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n  };\n}\n", "import type { HandlerDataError } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n  const type = 'error';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\n  _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n  GLOBAL_OBJ.onerror = function (\n    msg: string | object,\n    url?: string,\n    line?: number,\n    column?: number,\n    error?: Error,\n  ): boolean {\n    const handlerData: HandlerDataError = {\n      column,\n      error,\n      line,\n      msg,\n      url,\n    };\n    triggerHandlers('error', handlerData);\n\n    if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n      // eslint-disable-next-line prefer-rest-params\n      return _oldOnErrorHandler.apply(this, arguments);\n    }\n\n    return false;\n  };\n\n  GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { HandlerDataUnhandledRejection } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n  handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n  const type = 'unhandledrejection';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\n  _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n  GLOBAL_OBJ.onunhandledrejection = function (e: any): boolean {\n    const handlerData: HandlerDataUnhandledRejection = e;\n    triggerHandlers('unhandledrejection', handlerData);\n\n    if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n      // eslint-disable-next-line prefer-rest-params\n      return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n    }\n\n    return true;\n  };\n\n  GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n", "// Based on https://github.com/angular/angular.js/pull/13945/files\n// The MIT License\n\n// Copyright (c) 2010-2016 Google, Inc. http://angularjs.org\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all 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,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport { getGlobalObject } from '../worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n  // NOTE: in Chrome App environment, touching history.pushState, *even inside\n  //       a try/catch block*, will cause Chrome to output an error to console.error\n  // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n  /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const chromeVar = (WINDOW as any).chrome;\n  const isChromePackagedApp = chromeVar && chromeVar.app && chromeVar.app.runtime;\n  /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n  const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n  return !isChromePackagedApp && hasHistoryApi;\n}\n", "// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataHistory } from '@sentry/types';\n\nimport { fill } from '../object';\nimport { supportsHistory } from '../supports';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nlet lastHref: string | undefined;\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addHistoryInstrumentationHandler(handler: (data: HandlerDataHistory) => void): void {\n  const type = 'history';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentHistory);\n}\n\nfunction instrumentHistory(): void {\n  if (!supportsHistory()) {\n    return;\n  }\n\n  const oldOnPopState = WINDOW.onpopstate;\n  WINDOW.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n    const to = WINDOW.location.href;\n    // keep track of the current URL state, as we always receive only the updated state\n    const from = lastHref;\n    lastHref = to;\n    const handlerData: HandlerDataHistory = { from, to };\n    triggerHandlers('history', handlerData);\n    if (oldOnPopState) {\n      // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n      // https://github.com/getsentry/sentry-javascript/issues/3344\n      // https://github.com/bugsnag/bugsnag-js/issues/469\n      try {\n        return oldOnPopState.apply(this, args);\n      } catch (_oO) {\n        // no-empty\n      }\n    }\n  };\n\n  function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n    return function (this: History, ...args: any[]): void {\n      const url = args.length > 2 ? args[2] : undefined;\n      if (url) {\n        // coerce to string (this is what pushState does)\n        const from = lastHref;\n        const to = String(url);\n        // keep track of the current URL state, as we always receive only the updated state\n        lastHref = to;\n        const handlerData: HandlerDataHistory = { from, to };\n        triggerHandlers('history', handlerData);\n      }\n      return originalHistoryFunction.apply(this, args);\n    };\n  }\n\n  fill(WINDOW.history, 'pushState', historyReplacementFunction);\n  fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n", "// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataXhr, SentryWrappedXMLHttpRequest, WrappedFunction } from '@sentry/types';\n\nimport { isString } from '../is';\nimport { fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nexport const SENTRY_XHR_DATA_KEY = '__sentry_xhr_v3__';\n\n/**\n * Add an instrumentation handler for when an XHR request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addXhrInstrumentationHandler(handler: (data: HandlerDataXhr) => void): void {\n  const type = 'xhr';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentXHR);\n}\n\n/** Exported only for tests. */\nexport function instrumentXHR(): void {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  if (!(WINDOW as any).XMLHttpRequest) {\n    return;\n  }\n\n  const xhrproto = XMLHttpRequest.prototype;\n\n  fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n    return function (this: XMLHttpRequest & SentryWrappedXMLHttpRequest, ...args: any[]): void {\n      const startTimestamp = Date.now();\n\n      // open() should always be called with two or more arguments\n      // But to be on the safe side, we actually validate this and bail out if we don't have a method & url\n      const method = isString(args[0]) ? args[0].toUpperCase() : undefined;\n      const url = parseUrl(args[1]);\n\n      if (!method || !url) {\n        return originalOpen.apply(this, args);\n      }\n\n      this[SENTRY_XHR_DATA_KEY] = {\n        method,\n        url,\n        request_headers: {},\n      };\n\n      // if Sentry key appears in URL, don't capture it as a request\n      if (method === 'POST' && url.match(/sentry_key/)) {\n        this.__sentry_own_request__ = true;\n      }\n\n      const onreadystatechangeHandler: () => void = () => {\n        // For whatever reason, this is not the same instance here as from the outer method\n        const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n        if (!xhrInfo) {\n          return;\n        }\n\n        if (this.readyState === 4) {\n          try {\n            // touching statusCode in some platforms throws\n            // an exception\n            xhrInfo.status_code = this.status;\n          } catch (e) {\n            /* do nothing */\n          }\n\n          const handlerData: HandlerDataXhr = {\n            args: [method, url],\n            endTimestamp: Date.now(),\n            startTimestamp,\n            xhr: this,\n          };\n          triggerHandlers('xhr', handlerData);\n        }\n      };\n\n      if ('onreadystatechange' in this && typeof this.onreadystatechange === 'function') {\n        fill(this, 'onreadystatechange', function (original: WrappedFunction): Function {\n          return function (this: SentryWrappedXMLHttpRequest, ...readyStateArgs: any[]): void {\n            onreadystatechangeHandler();\n            return original.apply(this, readyStateArgs);\n          };\n        });\n      } else {\n        this.addEventListener('readystatechange', onreadystatechangeHandler);\n      }\n\n      // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n      // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n      // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n      fill(this, 'setRequestHeader', function (original: WrappedFunction): Function {\n        return function (this: SentryWrappedXMLHttpRequest, ...setRequestHeaderArgs: unknown[]): void {\n          const [header, value] = setRequestHeaderArgs;\n\n          const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n          if (xhrInfo && isString(header) && isString(value)) {\n            xhrInfo.request_headers[header.toLowerCase()] = value;\n          }\n\n          return original.apply(this, setRequestHeaderArgs);\n        };\n      });\n\n      return originalOpen.apply(this, args);\n    };\n  });\n\n  fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n    return function (this: XMLHttpRequest & SentryWrappedXMLHttpRequest, ...args: any[]): void {\n      const sentryXhrData = this[SENTRY_XHR_DATA_KEY];\n\n      if (!sentryXhrData) {\n        return originalSend.apply(this, args);\n      }\n\n      if (args[0] !== undefined) {\n        sentryXhrData.body = args[0];\n      }\n\n      const handlerData: HandlerDataXhr = {\n        args: [sentryXhrData.method, sentryXhrData.url],\n        startTimestamp: Date.now(),\n        xhr: this,\n      };\n      triggerHandlers('xhr', handlerData);\n\n      return originalSend.apply(this, args);\n    };\n  });\n}\n\nfunction parseUrl(url: string | unknown): string | undefined {\n  if (isString(url)) {\n    return url;\n  }\n\n  try {\n    // url can be a string or URL\n    // but since URL is not available in IE11, we do not check for it,\n    // but simply assume it is an URL and return `toString()` from it (which returns the full URL)\n    // If that fails, we just return undefined\n    return (url as URL).toString();\n  } catch {} // eslint-disable-line no-empty\n\n  return undefined;\n}\n", "/*\n * This module exists for optimizations in the build process through rollup and terser.  We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n  return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n  // @ts-expect-error __SENTRY_SDK_SOURCE__ is injected by rollup during build process\n  return __SENTRY_SDK_SOURCE__;\n}\n", "/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n  // memoize\n  (obj: any) => boolean,\n  // unmemoize\n  (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n  const hasWeakSet = typeof WeakSet === 'function';\n  const inner: any = hasWeakSet ? new WeakSet() : [];\n  function memoize(obj: any): boolean {\n    if (hasWeakSet) {\n      if (inner.has(obj)) {\n        return true;\n      }\n      inner.add(obj);\n      return false;\n    }\n    // eslint-disable-next-line @typescript-eslint/prefer-for-of\n    for (let i = 0; i < inner.length; i++) {\n      const value = inner[i];\n      if (value === obj) {\n        return true;\n      }\n    }\n    inner.push(obj);\n    return false;\n  }\n\n  function unmemoize(obj: any): void {\n    if (hasWeakSet) {\n      inner.delete(obj);\n    } else {\n      for (let i = 0; i < inner.length; i++) {\n        if (inner[i] === obj) {\n          inner.splice(i, 1);\n          break;\n        }\n      }\n    }\n  }\n  return [memoize, unmemoize];\n}\n", "import type { Primitive } from '@sentry/types';\n\nimport { isNaN, isSyntheticEvent, isVueViewModel } from './is';\nimport type { MemoFunc } from './memo';\nimport { memoBuilder } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray<T> = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = 100, maxProperties: number = +Infinity): any {\n  try {\n    // since we're at the outermost level, we don't provide a key\n    return visit('', input, depth, maxProperties);\n  } catch (err) {\n    return { ERROR: `**non-serializable** (${err})` };\n  }\n}\n\n/** JSDoc */\nexport function normalizeToSize<T>(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object: { [key: string]: any },\n  // Default Node.js REPL depth\n  depth: number = 3,\n  // 100kB, as 200kB is max payload size, so half sounds reasonable\n  maxSize: number = 100 * 1024,\n): T {\n  const normalized = normalize(object, depth);\n\n  if (jsonSize(normalized) > maxSize) {\n    return normalizeToSize(object, depth - 1, maxSize);\n  }\n\n  return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n  key: string,\n  value: unknown,\n  depth: number = +Infinity,\n  maxProperties: number = +Infinity,\n  memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray<unknown> {\n  const [memoize, unmemoize] = memo;\n\n  // Get the simple cases out of the way first\n  if (\n    value == null || // this matches null and undefined -> eqeq not eqeqeq\n    (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))\n  ) {\n    return value as Primitive;\n  }\n\n  const stringified = stringifyValue(key, value);\n\n  // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n  // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n  if (!stringified.startsWith('[object ')) {\n    return stringified;\n  }\n\n  // From here on, we can assert that `value` is either an object or an array.\n\n  // Do not normalize objects that we know have already been normalized. As a general rule, the\n  // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n  // have already been normalized.\n  if ((value as ObjOrArray<unknown>)['__sentry_skip_normalization__']) {\n    return value as ObjOrArray<unknown>;\n  }\n\n  // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n  // We keep a certain amount of depth.\n  // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n  const remainingDepth =\n    typeof (value as ObjOrArray<unknown>)['__sentry_override_normalization_depth__'] === 'number'\n      ? ((value as ObjOrArray<unknown>)['__sentry_override_normalization_depth__'] as number)\n      : depth;\n\n  // We're also done if we've reached the max depth\n  if (remainingDepth === 0) {\n    // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n    return stringified.replace('object ', '');\n  }\n\n  // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n  if (memoize(value)) {\n    return '[Circular ~]';\n  }\n\n  // If the value has a `toJSON` method, we call it to extract more information\n  const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n  if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n    try {\n      const jsonValue = valueWithToJSON.toJSON();\n      // We need to normalize the return value of `.toJSON()` in case it has circular references\n      return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n    } catch (err) {\n      // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n    }\n  }\n\n  // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n  // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n  // property/entry, and keep track of the number of items we add to it.\n  const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray<unknown>;\n  let numAdded = 0;\n\n  // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n  // properties are non-enumerable and otherwise would get missed.\n  const visitable = convertToPlainObject(value as ObjOrArray<unknown>);\n\n  for (const visitKey in visitable) {\n    // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n    if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n      continue;\n    }\n\n    if (numAdded >= maxProperties) {\n      normalized[visitKey] = '[MaxProperties ~]';\n      break;\n    }\n\n    // Recursively visit all the child nodes\n    const visitValue = visitable[visitKey];\n    normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n    numAdded++;\n  }\n\n  // Once we've visited all the branches, remove the parent from memo storage\n  unmemoize(value);\n\n  // Return accumulated values\n  return normalized;\n}\n\n/**\n * @deprecated This export will be removed in v8.\n */\nexport { visit as walk };\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n  key: unknown,\n  // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n  // our internal use, it'll do\n  value: Exclude<unknown, string | number | boolean | null>,\n): string {\n  try {\n    if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n      return '[Domain]';\n    }\n\n    if (key === 'domainEmitter') {\n      return '[DomainEmitter]';\n    }\n\n    // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n    // which won't throw if they are not present.\n\n    if (typeof global !== 'undefined' && value === global) {\n      return '[Global]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof window !== 'undefined' && value === window) {\n      return '[Window]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof document !== 'undefined' && value === document) {\n      return '[Document]';\n    }\n\n    if (isVueViewModel(value)) {\n      return '[VueViewModel]';\n    }\n\n    // React's SyntheticEvent thingy\n    if (isSyntheticEvent(value)) {\n      return '[SyntheticEvent]';\n    }\n\n    if (typeof value === 'number' && value !== value) {\n      return '[NaN]';\n    }\n\n    if (typeof value === 'function') {\n      return `[Function: ${getFunctionName(value)}]`;\n    }\n\n    if (typeof value === 'symbol') {\n      return `[${String(value)}]`;\n    }\n\n    // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n    if (typeof value === 'bigint') {\n      return `[BigInt: ${String(value)}]`;\n    }\n\n    // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n    // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n    // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n    // we can make sure that only plain objects come out that way.\n    const objName = getConstructorName(value);\n\n    // Handle HTML Elements\n    if (/^HTML(\\w*)Element$/.test(objName)) {\n      return `[HTMLElement: ${objName}]`;\n    }\n\n    return `[object ${objName}]`;\n  } catch (err) {\n    return `**non-serializable** (${err})`;\n  }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value: unknown): string {\n  const prototype: Prototype | null = Object.getPrototypeOf(value);\n\n  return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n  // eslint-disable-next-line no-bitwise\n  return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n  return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nexport function normalizeUrlToBase(url: string, basePath: string): string {\n  const escapedBase = basePath\n    // Backslash to forward\n    .replace(/\\\\/g, '/')\n    // Escape RegExp special characters\n    .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n  let newUrl = url;\n  try {\n    newUrl = decodeURI(url);\n  } catch (_Oo) {\n    // Sometime this breaks\n  }\n  return (\n    newUrl\n      .replace(/\\\\/g, '/')\n      .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n      // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n      .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n  );\n}\n", "/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n  /** Pending */\n  PENDING = 0,\n  /** Resolved / OK */\n  RESOLVED = 1,\n  /** Rejected / Error */\n  REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike<void>;\nexport function resolvedSyncPromise<T>(value: T | PromiseLike<T>): PromiseLike<T>;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise<T>(value?: T | PromiseLike<T>): PromiseLike<T> {\n  return new SyncPromise(resolve => {\n    resolve(value);\n  });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise<T = never>(reason?: any): PromiseLike<T> {\n  return new SyncPromise((_, reject) => {\n    reject(reason);\n  });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise<T> implements PromiseLike<T> {\n  private _state: States;\n  private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n  private _value: any;\n\n  public constructor(\n    executor: (resolve: (value?: T | PromiseLike<T> | null) => void, reject: (reason?: any) => void) => void,\n  ) {\n    this._state = States.PENDING;\n    this._handlers = [];\n\n    try {\n      executor(this._resolve, this._reject);\n    } catch (e) {\n      this._reject(e);\n    }\n  }\n\n  /** JSDoc */\n  public then<TResult1 = T, TResult2 = never>(\n    onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n    onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n  ): PromiseLike<TResult1 | TResult2> {\n    return new SyncPromise((resolve, reject) => {\n      this._handlers.push([\n        false,\n        result => {\n          if (!onfulfilled) {\n            // TODO: ¯\\_(ツ)_/¯\n            // TODO: FIXME\n            resolve(result as any);\n          } else {\n            try {\n              resolve(onfulfilled(result));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n        reason => {\n          if (!onrejected) {\n            reject(reason);\n          } else {\n            try {\n              resolve(onrejected(reason));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n      ]);\n      this._executeHandlers();\n    });\n  }\n\n  /** JSDoc */\n  public catch<TResult = never>(\n    onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null,\n  ): PromiseLike<T | TResult> {\n    return this.then(val => val, onrejected);\n  }\n\n  /** JSDoc */\n  public finally<TResult>(onfinally?: (() => void) | null): PromiseLike<TResult> {\n    return new SyncPromise<TResult>((resolve, reject) => {\n      let val: TResult | any;\n      let isRejected: boolean;\n\n      return this.then(\n        value => {\n          isRejected = false;\n          val = value;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n        reason => {\n          isRejected = true;\n          val = reason;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n      ).then(() => {\n        if (isRejected) {\n          reject(val);\n          return;\n        }\n\n        resolve(val as unknown as any);\n      });\n    });\n  }\n\n  /** JSDoc */\n  private readonly _resolve = (value?: T | PromiseLike<T> | null) => {\n    this._setResult(States.RESOLVED, value);\n  };\n\n  /** JSDoc */\n  private readonly _reject = (reason?: any) => {\n    this._setResult(States.REJECTED, reason);\n  };\n\n  /** JSDoc */\n  private readonly _setResult = (state: States, value?: T | PromiseLike<T> | any) => {\n    if (this._state !== States.PENDING) {\n      return;\n    }\n\n    if (isThenable(value)) {\n      void (value as PromiseLike<T>).then(this._resolve, this._reject);\n      return;\n    }\n\n    this._state = state;\n    this._value = value;\n\n    this._executeHandlers();\n  };\n\n  /** JSDoc */\n  private readonly _executeHandlers = () => {\n    if (this._state === States.PENDING) {\n      return;\n    }\n\n    const cachedHandlers = this._handlers.slice();\n    this._handlers = [];\n\n    cachedHandlers.forEach(handler => {\n      if (handler[0]) {\n        return;\n      }\n\n      if (this._state === States.RESOLVED) {\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        handler[1](this._value as unknown as any);\n      }\n\n      if (this._state === States.REJECTED) {\n        handler[2](this._value);\n      }\n\n      handler[0] = true;\n    });\n  };\n}\n\nexport { SyncPromise };\n", "import { SentryError } from './error';\nimport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer<T> {\n  // exposes the internal array so tests can assert on the state of it.\n  // XXX: this really should not be public api.\n  $: Array<PromiseLike<T>>;\n  add(taskProducer: () => PromiseLike<T>): PromiseLike<T>;\n  drain(timeout?: number): PromiseLike<boolean>;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer<T>(limit?: number): PromiseBuffer<T> {\n  const buffer: Array<PromiseLike<T>> = [];\n\n  function isReady(): boolean {\n    return limit === undefined || buffer.length < limit;\n  }\n\n  /**\n   * Remove a promise from the queue.\n   *\n   * @param task Can be any PromiseLike<T>\n   * @returns Removed promise.\n   */\n  function remove(task: PromiseLike<T>): PromiseLike<T> {\n    return buffer.splice(buffer.indexOf(task), 1)[0];\n  }\n\n  /**\n   * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n   *\n   * @param taskProducer A function producing any PromiseLike<T>; In previous versions this used to be `task:\n   *        PromiseLike<T>`, but under that model, Promises were instantly created on the call-site and their executor\n   *        functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n   *        requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n   *        limit check.\n   * @returns The original promise.\n   */\n  function add(taskProducer: () => PromiseLike<T>): PromiseLike<T> {\n    if (!isReady()) {\n      return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n    }\n\n    // start the task and add its promise to the queue\n    const task = taskProducer();\n    if (buffer.indexOf(task) === -1) {\n      buffer.push(task);\n    }\n    void task\n      .then(() => remove(task))\n      // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n      // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n      // have promises, so TS has to polyfill when down-compiling.)\n      .then(null, () =>\n        remove(task).then(null, () => {\n          // We have to add another catch here because `remove()` starts a new promise chain.\n        }),\n      );\n    return task;\n  }\n\n  /**\n   * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n   * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n   * `false` otherwise\n   */\n  function drain(timeout?: number): PromiseLike<boolean> {\n    return new SyncPromise<boolean>((resolve, reject) => {\n      let counter = buffer.length;\n\n      if (!counter) {\n        return resolve(true);\n      }\n\n      // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n      const capturedSetTimeout = setTimeout(() => {\n        if (timeout && timeout > 0) {\n          resolve(false);\n        }\n      }, timeout);\n\n      // if all promises resolve in time, cancel the timer and resolve to `true`\n      buffer.forEach(item => {\n        void resolvedSyncPromise(item).then(() => {\n          if (!--counter) {\n            clearTimeout(capturedSetTimeout);\n            resolve(true);\n          }\n        }, reject);\n      });\n    });\n  }\n\n  return {\n    $: buffer,\n    add,\n    drain,\n  };\n}\n", "type PartialURL = {\n  host?: string;\n  path?: string;\n  protocol?: string;\n  relative?: string;\n  search?: string;\n  hash?: string;\n};\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not <a/> href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): PartialURL {\n  if (!url) {\n    return {};\n  }\n\n  const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n  if (!match) {\n    return {};\n  }\n\n  // coerce to undefined values to empty string so we don't get 'undefined'\n  const query = match[6] || '';\n  const fragment = match[8] || '';\n  return {\n    host: match[4],\n    path: match[5],\n    protocol: match[2],\n    search: query,\n    hash: fragment,\n    relative: match[5] + query + fragment, // everything minus origin\n  };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n  // eslint-disable-next-line no-useless-escape\n  return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nexport function getNumberOfUrlSegments(url: string): number {\n  // split at '/' or at '\\/' to split regex urls correctly\n  return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span description\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nexport function getSanitizedUrlString(url: PartialURL): string {\n  const { protocol, host, path } = url;\n\n  const filteredHost =\n    (host &&\n      host\n        // Always filter out authority\n        .replace(/^.*@/, '[filtered]:[filtered]@')\n        // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n        // TODO: Use new URL global if it exists\n        .replace(/(:80)$/, '')\n        .replace(/(:443)$/, '')) ||\n    '';\n\n  return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n", "/* eslint-disable deprecation/deprecation */\nimport type { Severity, SeverityLevel } from '@sentry/types';\n\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nexport const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level: Severity | SeverityLevel | string): Severity {\n  return severityLevelFromString(level) as Severity;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n  return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') as SeverityLevel;\n}\n", "import { GLOBAL_OBJ } from './worldwide';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n  /**\n   * The millisecond timestamp at which measurement began, measured in Unix time.\n   */\n  timeOrigin: number;\n  /**\n   * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n   */\n  now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n *\n * TODO(v8): Return type should be rounded.\n */\nexport function dateTimestampInSeconds(): number {\n  return Date.now() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc(): () => number {\n  const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\n  if (!performance || !performance.now) {\n    return dateTimestampInSeconds;\n  }\n\n  // Some browser and environments don't have a timeOrigin, so we fallback to\n  // using Date.now() to compute the starting time.\n  const approxStartingTimeOrigin = Date.now() - performance.now();\n  const timeOrigin = performance.timeOrigin == undefined ? approxStartingTimeOrigin : performance.timeOrigin;\n\n  // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n  // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n  //\n  // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n  // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n  // correct for this.\n  // See: https://github.com/getsentry/sentry-javascript/issues/2590\n  // See: https://github.com/mdn/content/issues/4713\n  // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n  return () => {\n    return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS;\n  };\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds = createUnixTimestampInSecondsFunc();\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n  // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n  // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n  // data as reliable if they are within a reasonable threshold of the current time.\n\n  const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n  if (!performance || !performance.now) {\n    _browserPerformanceTimeOriginMode = 'none';\n    return undefined;\n  }\n\n  const threshold = 3600 * 1000;\n  const performanceNow = performance.now();\n  const dateNow = Date.now();\n\n  // if timeOrigin isn't available set delta to threshold so it isn't used\n  const timeOriginDelta = performance.timeOrigin\n    ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n    : threshold;\n  const timeOriginIsReliable = timeOriginDelta < threshold;\n\n  // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n  // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n  // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n  // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n  // Date API.\n  // eslint-disable-next-line deprecation/deprecation\n  const navigationStart = performance.timing && performance.timing.navigationStart;\n  const hasNavigationStart = typeof navigationStart === 'number';\n  // if navigationStart isn't available set delta to threshold so it isn't used\n  const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n  const navigationStartIsReliable = navigationStartDelta < threshold;\n\n  if (timeOriginIsReliable || navigationStartIsReliable) {\n    // Use the more reliable time origin\n    if (timeOriginDelta <= navigationStartDelta) {\n      _browserPerformanceTimeOriginMode = 'timeOrigin';\n      return performance.timeOrigin;\n    } else {\n      _browserPerformanceTimeOriginMode = 'navigationStart';\n      return navigationStart;\n    }\n  }\n\n  // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n  _browserPerformanceTimeOriginMode = 'dateNow';\n  return dateNow;\n})();\n", "import type {\n  Attachment,\n  AttachmentItem,\n  BaseEnvelopeHeaders,\n  BaseEnvelopeItemHeaders,\n  DataCategory,\n  DsnComponents,\n  Envelope,\n  EnvelopeItemType,\n  Event,\n  EventEnvelopeHeaders,\n  SdkInfo,\n  SdkMetadata,\n  TextEncoderInternal,\n} from '@sentry/types';\n\nimport { dsnToString } from './dsn';\nimport { normalize } from './normalize';\nimport { dropUndefinedKeys } from './object';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function createEnvelope<E extends Envelope>(headers: E[0], items: E[1] = []): E {\n  return [headers, items] as E;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function addItemToEnvelope<E extends Envelope>(envelope: E, newItem: E[1][number]): E {\n  const [headers, items] = envelope;\n  return [headers, [...items, newItem]] as unknown as E;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nexport function forEachEnvelopeItem<E extends Envelope>(\n  envelope: Envelope,\n  callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => boolean | void,\n): boolean {\n  const envelopeItems = envelope[1];\n\n  for (const envelopeItem of envelopeItems) {\n    const envelopeItemType = envelopeItem[0].type;\n    const result = callback(envelopeItem, envelopeItemType);\n\n    if (result) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nexport function envelopeContainsItemType(envelope: Envelope, types: EnvelopeItemType[]): boolean {\n  return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8.\n */\nfunction encodeUTF8(input: string, textEncoder?: TextEncoderInternal): Uint8Array {\n  const utf8 = textEncoder || new TextEncoder();\n  return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope, textEncoder?: TextEncoderInternal): string | Uint8Array {\n  const [envHeaders, items] = envelope;\n\n  // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n  let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n  function append(next: string | Uint8Array): void {\n    if (typeof parts === 'string') {\n      parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n    } else {\n      parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n    }\n  }\n\n  for (const item of items) {\n    const [itemHeaders, payload] = item;\n\n    append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n    if (typeof payload === 'string' || payload instanceof Uint8Array) {\n      append(payload);\n    } else {\n      let stringifiedPayload: string;\n      try {\n        stringifiedPayload = JSON.stringify(payload);\n      } catch (e) {\n        // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n        // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n        // performance impact but in this case a performance hit is better than throwing.\n        stringifiedPayload = JSON.stringify(normalize(payload));\n      }\n      append(stringifiedPayload);\n    }\n  }\n\n  return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n  const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n  const merged = new Uint8Array(totalLength);\n  let offset = 0;\n  for (const buffer of buffers) {\n    merged.set(buffer, offset);\n    offset += buffer.length;\n  }\n\n  return merged;\n}\n\nexport interface TextDecoderInternal {\n  decode(input?: Uint8Array): string;\n}\n\n/**\n * Parses an envelope\n */\nexport function parseEnvelope(\n  env: string | Uint8Array,\n  textEncoder: TextEncoderInternal,\n  textDecoder: TextDecoderInternal,\n): Envelope {\n  let buffer = typeof env === 'string' ? textEncoder.encode(env) : env;\n\n  function readBinary(length: number): Uint8Array {\n    const bin = buffer.subarray(0, length);\n    // Replace the buffer with the remaining data excluding trailing newline\n    buffer = buffer.subarray(length + 1);\n    return bin;\n  }\n\n  function readJson<T>(): T {\n    let i = buffer.indexOf(0xa);\n    // If we couldn't find a newline, we must have found the end of the buffer\n    if (i < 0) {\n      i = buffer.length;\n    }\n\n    return JSON.parse(textDecoder.decode(readBinary(i))) as T;\n  }\n\n  const envelopeHeader = readJson<BaseEnvelopeHeaders>();\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const items: [any, any][] = [];\n\n  while (buffer.length) {\n    const itemHeader = readJson<BaseEnvelopeItemHeaders>();\n    const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n    items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n  }\n\n  return [envelopeHeader, items];\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(\n  attachment: Attachment,\n  textEncoder?: TextEncoderInternal,\n): AttachmentItem {\n  const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n  return [\n    dropUndefinedKeys({\n      type: 'attachment',\n      length: buffer.length,\n      filename: attachment.filename,\n      content_type: attachment.contentType,\n      attachment_type: attachment.attachmentType,\n    }),\n    buffer,\n  ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record<EnvelopeItemType, DataCategory> = {\n  session: 'session',\n  sessions: 'session',\n  attachment: 'attachment',\n  transaction: 'transaction',\n  event: 'error',\n  client_report: 'internal',\n  user_report: 'default',\n  profile: 'profile',\n  replay_event: 'replay',\n  replay_recording: 'replay',\n  check_in: 'monitor',\n  feedback: 'feedback',\n  span: 'span',\n  statsd: 'metric_bucket',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n  return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nexport function getSdkMetadataForEnvelopeHeader(metadataOrEvent?: SdkMetadata | Event): SdkInfo | undefined {\n  if (!metadataOrEvent || !metadataOrEvent.sdk) {\n    return;\n  }\n  const { name, version } = metadataOrEvent.sdk;\n  return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nexport function createEventEnvelopeHeaders(\n  event: Event,\n  sdkInfo: SdkInfo | undefined,\n  tunnel: string | undefined,\n  dsn?: DsnComponents,\n): EventEnvelopeHeaders {\n  const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n  return {\n    event_id: event.event_id as string,\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n    ...(dynamicSamplingContext && {\n      trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n    }),\n  };\n}\n", "import type { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n  discarded_events: ClientReport['discarded_events'],\n  dsn?: string,\n  timestamp?: number,\n): ClientReportEnvelope {\n  const clientReportItem: ClientReportItem = [\n    { type: 'client_report' },\n    {\n      timestamp: timestamp || dateTimestampInSeconds(),\n      discarded_events,\n    },\n  ];\n  return createEnvelope<ClientReportEnvelope>(dsn ? { dsn } : {}, [clientReportItem]);\n}\n", "import type { DataCategory, TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record<string, number>;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n  const headerDelay = parseInt(`${header}`, 10);\n  if (!isNaN(headerDelay)) {\n    return headerDelay * 1000;\n  }\n\n  const headerDate = Date.parse(`${header}`);\n  if (!isNaN(headerDate)) {\n    return headerDate - now;\n  }\n\n  return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nexport function disabledUntil(limits: RateLimits, dataCategory: DataCategory): number {\n  return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, dataCategory: DataCategory, now: number = Date.now()): boolean {\n  return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n  limits: RateLimits,\n  { statusCode, headers }: TransportMakeRequestResponse,\n  now: number = Date.now(),\n): RateLimits {\n  const updatedRateLimits: RateLimits = {\n    ...limits,\n  };\n\n  // \"The name is case-insensitive.\"\n  // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n  const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n  const retryAfterHeader = headers && headers['retry-after'];\n\n  if (rateLimitHeader) {\n    /**\n     * rate limit headers are of the form\n     *     <header>,<header>,..\n     * where each <header> is of the form\n     *     <retry_after>: <categories>: <scope>: <reason_code>: <namespaces>\n     * where\n     *     <retry_after> is a delay in seconds\n     *     <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form\n     *         <category>;<category>;...\n     *     <scope> is what's being limited (org, project, or key) - ignored by SDK\n     *     <reason_code> is an arbitrary string like \"org_quota\" - ignored by SDK\n     *     <namespaces> Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n     *         Only present if rate limit applies to the metric_bucket data category.\n     */\n    for (const limit of rateLimitHeader.trim().split(',')) {\n      const [retryAfter, categories, , , namespaces] = limit.split(':', 5);\n      const headerDelay = parseInt(retryAfter, 10);\n      const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n      if (!categories) {\n        updatedRateLimits.all = now + delay;\n      } else {\n        for (const category of categories.split(';')) {\n          if (category === 'metric_bucket') {\n            // namespaces will be present when category === 'metric_bucket'\n            if (!namespaces || namespaces.split(';').includes('custom')) {\n              updatedRateLimits[category] = now + delay;\n            }\n          } else {\n            updatedRateLimits[category] = now + delay;\n          }\n        }\n      }\n    }\n  } else if (retryAfterHeader) {\n    updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n  } else if (statusCode === 429) {\n    updatedRateLimits.all = now + 60 * 1000;\n  }\n\n  return updatedRateLimits;\n}\n", "import type {\n  Client,\n  Event,\n  EventHint,\n  Exception,\n  Extras,\n  Hub,\n  Mechanism,\n  ParameterizedString,\n  Severity,\n  SeverityLevel,\n  StackFrame,\n  StackParser,\n} from '@sentry/types';\n\nimport { isError, isParameterizedString, isPlainObject } from './is';\nimport { addExceptionMechanism, addExceptionTypeValue } from './misc';\nimport { normalizeToSize } from './normalize';\nimport { extractExceptionKeysForMessage } from './object';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nexport function parseStackFrames(stackParser: StackParser, error: Error): StackFrame[] {\n  return stackParser(error.stack || '', 1);\n}\n\n/**\n * Extracts stack frames from the error and builds a Sentry Exception\n */\nexport function exceptionFromError(stackParser: StackParser, error: Error): Exception {\n  const exception: Exception = {\n    type: error.name || error.constructor.name,\n    value: error.message,\n  };\n\n  const frames = parseStackFrames(stackParser, error);\n  if (frames.length) {\n    exception.stacktrace = { frames };\n  }\n\n  return exception;\n}\n\nfunction getMessageForObject(exception: object): string {\n  if ('name' in exception && typeof exception.name === 'string') {\n    let message = `'${exception.name}' captured as exception`;\n\n    if ('message' in exception && typeof exception.message === 'string') {\n      message += ` with message '${exception.message}'`;\n    }\n\n    return message;\n  } else if ('message' in exception && typeof exception.message === 'string') {\n    return exception.message;\n  } else {\n    // This will allow us to group events based on top-level keys\n    // which is much better than creating new group when any key/value change\n    return `Object captured as exception with keys: ${extractExceptionKeysForMessage(\n      exception as Record<string, unknown>,\n    )}`;\n  }\n}\n\n/**\n * Builds and Event from a Exception\n *\n * TODO(v8): Remove getHub fallback\n * @hidden\n */\nexport function eventFromUnknownInput(\n  // eslint-disable-next-line deprecation/deprecation\n  getHubOrClient: (() => Hub) | Client | undefined,\n  stackParser: StackParser,\n  exception: unknown,\n  hint?: EventHint,\n): Event {\n  const client =\n    typeof getHubOrClient === 'function'\n      ? // eslint-disable-next-line deprecation/deprecation\n        getHubOrClient().getClient()\n      : getHubOrClient;\n\n  let ex: unknown = exception;\n  const providedMechanism: Mechanism | undefined =\n    hint && hint.data && (hint.data as { mechanism: Mechanism }).mechanism;\n  const mechanism: Mechanism = providedMechanism || {\n    handled: true,\n    type: 'generic',\n  };\n\n  let extras: Extras | undefined;\n\n  if (!isError(exception)) {\n    if (isPlainObject(exception)) {\n      const normalizeDepth = client && client.getOptions().normalizeDepth;\n      extras = { ['__serialized__']: normalizeToSize(exception as Record<string, unknown>, normalizeDepth) };\n\n      const message = getMessageForObject(exception);\n      ex = (hint && hint.syntheticException) || new Error(message);\n      (ex as Error).message = message;\n    } else {\n      // This handles when someone does: `throw \"something awesome\";`\n      // We use synthesized Error here so we can extract a (rough) stack trace.\n      ex = (hint && hint.syntheticException) || new Error(exception as string);\n      (ex as Error).message = exception as string;\n    }\n    mechanism.synthetic = true;\n  }\n\n  const event: Event = {\n    exception: {\n      values: [exceptionFromError(stackParser, ex as Error)],\n    },\n  };\n\n  if (extras) {\n    event.extra = extras;\n  }\n\n  addExceptionTypeValue(event, undefined, undefined);\n  addExceptionMechanism(event, mechanism);\n\n  return {\n    ...event,\n    event_id: hint && hint.event_id,\n  };\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n  stackParser: StackParser,\n  message: ParameterizedString,\n  // eslint-disable-next-line deprecation/deprecation\n  level: Severity | SeverityLevel = 'info',\n  hint?: EventHint,\n  attachStacktrace?: boolean,\n): Event {\n  const event: Event = {\n    event_id: hint && hint.event_id,\n    level,\n  };\n\n  if (attachStacktrace && hint && hint.syntheticException) {\n    const frames = parseStackFrames(stackParser, hint.syntheticException);\n    if (frames.length) {\n      event.exception = {\n        values: [\n          {\n            value: message,\n            stacktrace: { frames },\n          },\n        ],\n      };\n    }\n  }\n\n  if (isParameterizedString(message)) {\n    const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n    event.logentry = {\n      message: __sentry_template_string__,\n      params: __sentry_template_values__,\n    };\n    return event;\n  }\n\n  event.message = message;\n  return event;\n}\n", "declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n", "export const DEFAULT_ENVIRONMENT = 'production';\n", "import type { Event, EventHint, EventProcessor } from '@sentry/types';\nimport { SyncPromise, getGlobalSingleton, isThenable, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\n\n/**\n * Returns the global event processors.\n * @deprecated Global event processors will be removed in v8.\n */\nexport function getGlobalEventProcessors(): EventProcessor[] {\n  return getGlobalSingleton<EventProcessor[]>('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @deprecated Use `addEventProcessor` instead. Global event processors will be removed in v8.\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n  // eslint-disable-next-line deprecation/deprecation\n  getGlobalEventProcessors().push(callback);\n}\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n  processors: EventProcessor[],\n  event: Event | null,\n  hint: EventHint,\n  index: number = 0,\n): PromiseLike<Event | null> {\n  return new SyncPromise<Event | null>((resolve, reject) => {\n    const processor = processors[index];\n    if (event === null || typeof processor !== 'function') {\n      resolve(event);\n    } else {\n      const result = processor({ ...event }, hint) as Event | null;\n\n      DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n      if (isThenable(result)) {\n        void result\n          .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n          .then(null, reject);\n      } else {\n        void notifyEventProcessors(processors, result, hint, index + 1)\n          .then(resolve)\n          .then(null, reject);\n      }\n    }\n  });\n}\n", "import type { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit<SessionContext, 'started' | 'status'>): Session {\n  // Both timestamp and started are in seconds since the UNIX epoch.\n  const startingTime = timestampInSeconds();\n\n  const session: Session = {\n    sid: uuid4(),\n    init: true,\n    timestamp: startingTime,\n    started: startingTime,\n    duration: 0,\n    status: 'ok',\n    errors: 0,\n    ignoreDuration: false,\n    toJSON: () => sessionToJSON(session),\n  };\n\n  if (context) {\n    updateSession(session, context);\n  }\n\n  return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n  if (context.user) {\n    if (!session.ipAddress && context.user.ip_address) {\n      session.ipAddress = context.user.ip_address;\n    }\n\n    if (!session.did && !context.did) {\n      session.did = context.user.id || context.user.email || context.user.username;\n    }\n  }\n\n  session.timestamp = context.timestamp || timestampInSeconds();\n\n  if (context.abnormal_mechanism) {\n    session.abnormal_mechanism = context.abnormal_mechanism;\n  }\n\n  if (context.ignoreDuration) {\n    session.ignoreDuration = context.ignoreDuration;\n  }\n  if (context.sid) {\n    // Good enough uuid validation. — Kamil\n    session.sid = context.sid.length === 32 ? context.sid : uuid4();\n  }\n  if (context.init !== undefined) {\n    session.init = context.init;\n  }\n  if (!session.did && context.did) {\n    session.did = `${context.did}`;\n  }\n  if (typeof context.started === 'number') {\n    session.started = context.started;\n  }\n  if (session.ignoreDuration) {\n    session.duration = undefined;\n  } else if (typeof context.duration === 'number') {\n    session.duration = context.duration;\n  } else {\n    const duration = session.timestamp - session.started;\n    session.duration = duration >= 0 ? duration : 0;\n  }\n  if (context.release) {\n    session.release = context.release;\n  }\n  if (context.environment) {\n    session.environment = context.environment;\n  }\n  if (!session.ipAddress && context.ipAddress) {\n    session.ipAddress = context.ipAddress;\n  }\n  if (!session.userAgent && context.userAgent) {\n    session.userAgent = context.userAgent;\n  }\n  if (typeof context.errors === 'number') {\n    session.errors = context.errors;\n  }\n  if (context.status) {\n    session.status = context.status;\n  }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n *               this function will keep the previously set status, unless it was `'ok'` in which case\n *               it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude<SessionStatus, 'ok'>): void {\n  let context = {};\n  if (status) {\n    context = { status };\n  } else if (session.status === 'ok') {\n    context = { status: 'exited' };\n  }\n\n  updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n  return dropUndefinedKeys({\n    sid: `${session.sid}`,\n    init: session.init,\n    // Make sure that sec is converted to ms for date constructor\n    started: new Date(session.started * 1000).toISOString(),\n    timestamp: new Date(session.timestamp * 1000).toISOString(),\n    status: session.status,\n    errors: session.errors,\n    did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n    duration: session.duration,\n    abnormal_mechanism: session.abnormal_mechanism,\n    attrs: {\n      release: session.release,\n      environment: session.environment,\n      ip_address: session.ipAddress,\n      user_agent: session.userAgent,\n    },\n  });\n}\n", "import type { Span, SpanJSON, SpanTimeInput, TraceContext } from '@sentry/types';\nimport { dropUndefinedKeys, generateSentryTraceHeader, timestampInSeconds } from '@sentry/utils';\nimport type { Span as SpanClass } from '../tracing/span';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const TRACE_FLAG_SAMPLED = 0x1;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n */\nexport function spanToTraceContext(span: Span): TraceContext {\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n  const { data, op, parent_span_id, status, tags, origin } = spanToJSON(span);\n\n  return dropUndefinedKeys({\n    data,\n    op,\n    parent_span_id,\n    span_id,\n    status,\n    tags,\n    trace_id,\n    origin,\n  });\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nexport function spanToTraceHeader(span: Span): string {\n  const { traceId, spanId } = span.spanContext();\n  const sampled = spanIsSampled(span);\n  return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a span time input intp a timestamp in seconds.\n */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\n  if (typeof input === 'number') {\n    return ensureTimestampInSeconds(input);\n  }\n\n  if (Array.isArray(input)) {\n    // See {@link HrTime} for the array-based time format\n    return input[0] + input[1] / 1e9;\n  }\n\n  if (input instanceof Date) {\n    return ensureTimestampInSeconds(input.getTime());\n  }\n\n  return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp: number): number {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n * Note that all fields returned here are optional and need to be guarded against.\n *\n * Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n * This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n * And `spanToJSON` needs the Span class from `span.ts` to check here.\n * TODO v8: When we remove the deprecated stuff from `span.ts`, we can remove the circular dependency again.\n */\nexport function spanToJSON(span: Span): Partial<SpanJSON> {\n  if (spanIsSpanClass(span)) {\n    return span.getSpanJSON();\n  }\n\n  // Fallback: We also check for `.toJSON()` here...\n  // eslint-disable-next-line deprecation/deprecation\n  if (typeof span.toJSON === 'function') {\n    // eslint-disable-next-line deprecation/deprecation\n    return span.toJSON();\n  }\n\n  return {};\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSpanClass(span: Span): span is SpanClass {\n  return typeof (span as SpanClass).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nexport function spanIsSampled(span: Span): boolean {\n  // We align our trace flags with the ones OpenTelemetry use\n  // So we also check for sampled the same way they do.\n  const { traceFlags } = span.spanContext();\n  // eslint-disable-next-line no-bitwise\n  return Boolean(traceFlags & TRACE_FLAG_SAMPLED);\n}\n", "import type {\n  CaptureContext,\n  Client,\n  ClientOptions,\n  Event,\n  EventHint,\n  Scope as ScopeInterface,\n  ScopeContext,\n  StackFrame,\n  StackParser,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, addExceptionMechanism, dateTimestampInSeconds, normalize, truncate, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getGlobalEventProcessors, notifyEventProcessors } from '../eventProcessors';\nimport { Scope, getGlobalScope } from '../scope';\nimport { applyScopeDataToEvent, mergeScopeData } from './applyScopeDataToEvent';\nimport { spanToJSON } from './spanUtils';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\nexport type ExclusiveEventHintOrCaptureContext =\n  | (CaptureContext & Partial<{ [key in keyof EventHint]: never }>)\n  | (EventHint & Partial<{ [key in keyof ScopeContext]: never }>);\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nexport function prepareEvent(\n  options: ClientOptions,\n  event: Event,\n  hint: EventHint,\n  scope?: Scope,\n  client?: Client,\n  isolationScope?: Scope,\n): PromiseLike<Event | null> {\n  const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n  const prepared: Event = {\n    ...event,\n    event_id: event.event_id || hint.event_id || uuid4(),\n    timestamp: event.timestamp || dateTimestampInSeconds(),\n  };\n  const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n  applyClientOptions(prepared, options);\n  applyIntegrationsMetadata(prepared, integrations);\n\n  // Only put debug IDs onto frames for error events.\n  if (event.type === undefined) {\n    applyDebugIds(prepared, options.stackParser);\n  }\n\n  // If we have scope given to us, use it as the base for further modifications.\n  // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n  const finalScope = getFinalScope(scope, hint.captureContext);\n\n  if (hint.mechanism) {\n    addExceptionMechanism(prepared, hint.mechanism);\n  }\n\n  const clientEventProcessors = client && client.getEventProcessors ? client.getEventProcessors() : [];\n\n  // This should be the last thing called, since we want that\n  // {@link Hub.addEventProcessor} gets the finished prepared event.\n  // Merge scope data together\n  const data = getGlobalScope().getScopeData();\n\n  if (isolationScope) {\n    const isolationData = isolationScope.getScopeData();\n    mergeScopeData(data, isolationData);\n  }\n\n  if (finalScope) {\n    const finalScopeData = finalScope.getScopeData();\n    mergeScopeData(data, finalScopeData);\n  }\n\n  const attachments = [...(hint.attachments || []), ...data.attachments];\n  if (attachments.length) {\n    hint.attachments = attachments;\n  }\n\n  applyScopeDataToEvent(prepared, data);\n\n  // TODO (v8): Update this order to be: Global > Client > Scope\n  const eventProcessors = [\n    ...clientEventProcessors,\n    // eslint-disable-next-line deprecation/deprecation\n    ...getGlobalEventProcessors(),\n    // Run scope event processors _after_ all other processors\n    ...data.eventProcessors,\n  ];\n\n  const result = notifyEventProcessors(eventProcessors, prepared, hint);\n\n  return result.then(evt => {\n    if (evt) {\n      // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n      // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n      // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n      // any new data\n      applyDebugMeta(evt);\n    }\n\n    if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n      return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n    }\n    return evt;\n  });\n}\n\n/**\n *  Enhances event using the client configuration.\n *  It takes care of all \"static\" values like environment, release and `dist`,\n *  as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event: Event, options: ClientOptions): void {\n  const { environment, release, dist, maxValueLength = 250 } = options;\n\n  if (!('environment' in event)) {\n    event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n  }\n\n  if (event.release === undefined && release !== undefined) {\n    event.release = release;\n  }\n\n  if (event.dist === undefined && dist !== undefined) {\n    event.dist = dist;\n  }\n\n  if (event.message) {\n    event.message = truncate(event.message, maxValueLength);\n  }\n\n  const exception = event.exception && event.exception.values && event.exception.values[0];\n  if (exception && exception.value) {\n    exception.value = truncate(exception.value, maxValueLength);\n  }\n\n  const request = event.request;\n  if (request && request.url) {\n    request.url = truncate(request.url, maxValueLength);\n  }\n}\n\nconst debugIdStackParserCache = new WeakMap<StackParser, Map<string, StackFrame[]>>();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\n  const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n  if (!debugIdMap) {\n    return;\n  }\n\n  let debugIdStackFramesCache: Map<string, StackFrame[]>;\n  const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n  if (cachedDebugIdStackFrameCache) {\n    debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n  } else {\n    debugIdStackFramesCache = new Map<string, StackFrame[]>();\n    debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n  }\n\n  // Build a map of filename -> debug_id\n  const filenameDebugIdMap = Object.keys(debugIdMap).reduce<Record<string, string>>((acc, debugIdStackTrace) => {\n    let parsedStack: StackFrame[];\n    const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n    if (cachedParsedStack) {\n      parsedStack = cachedParsedStack;\n    } else {\n      parsedStack = stackParser(debugIdStackTrace);\n      debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n    }\n\n    for (let i = parsedStack.length - 1; i >= 0; i--) {\n      const stackFrame = parsedStack[i];\n      if (stackFrame.filename) {\n        acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n        break;\n      }\n    }\n    return acc;\n  }, {});\n\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    event!.exception!.values!.forEach(exception => {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      exception.stacktrace!.frames!.forEach(frame => {\n        if (frame.filename) {\n          frame.debug_id = filenameDebugIdMap[frame.filename];\n        }\n      });\n    });\n  } catch (e) {\n    // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n  }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nexport function applyDebugMeta(event: Event): void {\n  // Extract debug IDs and filenames from the stack frames on the event.\n  const filenameDebugIdMap: Record<string, string> = {};\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    event.exception!.values!.forEach(exception => {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      exception.stacktrace!.frames!.forEach(frame => {\n        if (frame.debug_id) {\n          if (frame.abs_path) {\n            filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n          } else if (frame.filename) {\n            filenameDebugIdMap[frame.filename] = frame.debug_id;\n          }\n          delete frame.debug_id;\n        }\n      });\n    });\n  } catch (e) {\n    // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n  }\n\n  if (Object.keys(filenameDebugIdMap).length === 0) {\n    return;\n  }\n\n  // Fill debug_meta information\n  event.debug_meta = event.debug_meta || {};\n  event.debug_meta.images = event.debug_meta.images || [];\n  const images = event.debug_meta.images;\n  Object.keys(filenameDebugIdMap).forEach(filename => {\n    images.push({\n      type: 'sourcemap',\n      code_file: filename,\n      debug_id: filenameDebugIdMap[filename],\n    });\n  });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event: Event, integrationNames: string[]): void {\n  if (integrationNames.length > 0) {\n    event.sdk = event.sdk || {};\n    event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n  }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n  if (!event) {\n    return null;\n  }\n\n  const normalized: Event = {\n    ...event,\n    ...(event.breadcrumbs && {\n      breadcrumbs: event.breadcrumbs.map(b => ({\n        ...b,\n        ...(b.data && {\n          data: normalize(b.data, depth, maxBreadth),\n        }),\n      })),\n    }),\n    ...(event.user && {\n      user: normalize(event.user, depth, maxBreadth),\n    }),\n    ...(event.contexts && {\n      contexts: normalize(event.contexts, depth, maxBreadth),\n    }),\n    ...(event.extra && {\n      extra: normalize(event.extra, depth, maxBreadth),\n    }),\n  };\n\n  // event.contexts.trace stores information about a Transaction. Similarly,\n  // event.spans[] stores information about child Spans. Given that a\n  // Transaction is conceptually a Span, normalization should apply to both\n  // Transactions and Spans consistently.\n  // For now the decision is to skip normalization of Transactions and Spans,\n  // so this block overwrites the normalized event to add back the original\n  // Transaction information prior to normalization.\n  if (event.contexts && event.contexts.trace && normalized.contexts) {\n    normalized.contexts.trace = event.contexts.trace;\n\n    // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n    if (event.contexts.trace.data) {\n      normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n    }\n  }\n\n  // event.spans[].data may contain circular/dangerous data so we need to normalize it\n  if (event.spans) {\n    normalized.spans = event.spans.map(span => {\n      const data = spanToJSON(span).data;\n\n      if (data) {\n        // This is a bit weird, as we generally have `Span` instances here, but to be safe we do not assume so\n        // eslint-disable-next-line deprecation/deprecation\n        span.data = normalize(data, depth, maxBreadth);\n      }\n\n      return span;\n    });\n  }\n\n  return normalized;\n}\n\nfunction getFinalScope(scope: Scope | undefined, captureContext: CaptureContext | undefined): Scope | undefined {\n  if (!captureContext) {\n    return scope;\n  }\n\n  const finalScope = scope ? scope.clone() : new Scope();\n  finalScope.update(captureContext);\n  return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nexport function parseEventHintOrCaptureContext(\n  hint: ExclusiveEventHintOrCaptureContext | undefined,\n): EventHint | undefined {\n  if (!hint) {\n    return undefined;\n  }\n\n  // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n  if (hintIsScopeOrFunction(hint)) {\n    return { captureContext: hint };\n  }\n\n  if (hintIsScopeContext(hint)) {\n    return {\n      captureContext: hint,\n    };\n  }\n\n  return hint;\n}\n\nfunction hintIsScopeOrFunction(\n  hint: CaptureContext | EventHint,\n): hint is ScopeInterface | ((scope: ScopeInterface) => ScopeInterface) {\n  return hint instanceof Scope || typeof hint === 'function';\n}\n\ntype ScopeContextProperty = keyof ScopeContext;\nconst captureContextKeys: readonly ScopeContextProperty[] = [\n  'user',\n  'level',\n  'extra',\n  'contexts',\n  'tags',\n  'fingerprint',\n  'requestSession',\n  'propagationContext',\n] as const;\n\nfunction hintIsScopeContext(hint: Partial<ScopeContext> | EventHint): hint is Partial<ScopeContext> {\n  return Object.keys(hint).some(key => captureContextKeys.includes(key as ScopeContextProperty));\n}\n", "import type {\n  Breadcrumb,\n  BreadcrumbHint,\n  CaptureContext,\n  CheckIn,\n  Client,\n  CustomSamplingContext,\n  Event,\n  EventHint,\n  Extra,\n  Extras,\n  FinishedCheckIn,\n  MonitorConfig,\n  Primitive,\n  Scope as ScopeInterface,\n  Session,\n  SessionContext,\n  Severity,\n  SeverityLevel,\n  Span,\n  TransactionContext,\n  User,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, isThenable, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Hub } from './hub';\nimport { runWithAsyncContext } from './hub';\nimport { getCurrentHub, getIsolationScope } from './hub';\nimport type { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nexport function captureException(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  exception: any,\n  hint?: ExclusiveEventHintOrCaptureContext,\n): string {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nexport function captureMessage(\n  message: string,\n  // eslint-disable-next-line deprecation/deprecation\n  captureContext?: CaptureContext | Severity | SeverityLevel,\n): string {\n  // This is necessary to provide explicit scopes upgrade, without changing the original\n  // arity of the `captureMessage(message, level)` method.\n  const level = typeof captureContext === 'string' ? captureContext : undefined;\n  const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param exception The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nexport function captureEvent(event: Event, hint?: EventHint): string {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n *\n * @deprecated Use getCurrentScope() directly.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function configureScope(callback: (scope: Scope) => void): ReturnType<Hub['configureScope']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): ReturnType<Hub['addBreadcrumb']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().addBreadcrumb(breadcrumb, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, deprecation/deprecation\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType<Hub['setContext']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtras(extras: Extras): ReturnType<Hub['setExtras']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtra(key: string, extra: Extra): ReturnType<Hub['setExtra']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType<Hub['setTags']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTag(key: string, value: Primitive): ReturnType<Hub['setTag']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setUser(user: User | null): ReturnType<Hub['setUser']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n *     pushScope();\n *     callback();\n *     popScope();\n */\nexport function withScope<T>(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope<T>(scope: ScopeInterface | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope<T>(\n  ...rest: [callback: (scope: Scope) => T] | [scope: ScopeInterface | undefined, callback: (scope: Scope) => T]\n): T {\n  // eslint-disable-next-line deprecation/deprecation\n  const hub = getCurrentHub();\n\n  // If a scope is defined, we want to make this the active scope instead of the default one\n  if (rest.length === 2) {\n    const [scope, callback] = rest;\n    if (!scope) {\n      // eslint-disable-next-line deprecation/deprecation\n      return hub.withScope(callback);\n    }\n\n    // eslint-disable-next-line deprecation/deprecation\n    return hub.withScope(() => {\n      // eslint-disable-next-line deprecation/deprecation\n      hub.getStackTop().scope = scope as Scope;\n      return callback(scope as Scope);\n    });\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  return hub.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n *\n * @param callback The callback in which the passed isolation scope is active. (Note: In environments without async\n * context strategy, the currently active isolation scope may change within execution of the callback.)\n * @returns The same value that `callback` returns.\n */\nexport function withIsolationScope<T>(callback: (isolationScope: Scope) => T): T {\n  return runWithAsyncContext(() => {\n    return callback(getIsolationScope());\n  });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback.\n *\n * @param span Spans started in the context of the provided callback will be children of this span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan<T>(span: Span, callback: (scope: Scope) => T): T {\n  return withScope(scope => {\n    // eslint-disable-next-line deprecation/deprecation\n    scope.setSpan(span);\n    return callback(scope);\n  });\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\nexport function startTransaction(\n  context: TransactionContext,\n  customSamplingContext?: CustomSamplingContext,\n  // eslint-disable-next-line deprecation/deprecation\n): ReturnType<Hub['startTransaction']> {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\n  const scope = getCurrentScope();\n  const client = getClient();\n  if (!client) {\n    DEBUG_BUILD && logger.warn('Cannot capture check-in. No client defined.');\n  } else if (!client.captureCheckIn) {\n    DEBUG_BUILD && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n  } else {\n    return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n  }\n\n  return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function withMonitor<T>(\n  monitorSlug: CheckIn['monitorSlug'],\n  callback: () => T,\n  upsertMonitorConfig?: MonitorConfig,\n): T {\n  const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n  const now = timestampInSeconds();\n\n  function finishCheckIn(status: FinishedCheckIn['status']): void {\n    captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n  }\n\n  let maybePromiseResult: T;\n  try {\n    maybePromiseResult = callback();\n  } catch (e) {\n    finishCheckIn('error');\n    throw e;\n  }\n\n  if (isThenable(maybePromiseResult)) {\n    Promise.resolve(maybePromiseResult).then(\n      () => {\n        finishCheckIn('ok');\n      },\n      () => {\n        finishCheckIn('error');\n      },\n    );\n  } else {\n    finishCheckIn('ok');\n  }\n\n  return maybePromiseResult;\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function flush(timeout?: number): Promise<boolean> {\n  const client = getClient();\n  if (client) {\n    return client.flush(timeout);\n  }\n  DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function close(timeout?: number): Promise<boolean> {\n  const client = getClient();\n  if (client) {\n    return client.close(timeout);\n  }\n  DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().lastEventId();\n}\n\n/**\n * Get the currently active client.\n */\nexport function getClient<C extends Client>(): C | undefined {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().getClient<C>();\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nexport function isInitialized(): boolean {\n  return !!getClient();\n}\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().getScope();\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nexport function startSession(context?: SessionContext): Session {\n  const client = getClient();\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n\n  const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n  // Will fetch userAgent if called from browser sdk\n  const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n  const session = makeSession({\n    release,\n    environment,\n    user: currentScope.getUser() || isolationScope.getUser(),\n    ...(userAgent && { userAgent }),\n    ...context,\n  });\n\n  // End existing session if there's one\n  const currentSession = isolationScope.getSession();\n  if (currentSession && currentSession.status === 'ok') {\n    updateSession(currentSession, { status: 'exited' });\n  }\n\n  endSession();\n\n  // Afterwards we set the new session on the scope\n  isolationScope.setSession(session);\n\n  // TODO (v8): Remove this and only use the isolation scope(?).\n  // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n  currentScope.setSession(session);\n\n  return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nexport function endSession(): void {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n\n  const session = currentScope.getSession() || isolationScope.getSession();\n  if (session) {\n    closeSession(session);\n  }\n  _sendSessionUpdate();\n\n  // the session is over; take it off of the scope\n  isolationScope.setSession();\n\n  // TODO (v8): Remove this and only use the isolation scope(?).\n  // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n  currentScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate(): void {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n  const client = getClient();\n  // TODO (v8): Remove currentScope and only use the isolation scope(?).\n  // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n  const session = currentScope.getSession() || isolationScope.getSession();\n  if (session && client && client.captureSession) {\n    client.captureSession(session);\n  }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n *            Defaults to `false`.\n */\nexport function captureSession(end: boolean = false): void {\n  // both send the update and pull the session from the scope\n  if (end) {\n    endSession();\n    return;\n  }\n\n  // only send the update\n  _sendSessionUpdate();\n}\n", "import type { Span } from '@sentry/types';\n\n/**\n * Returns the root span of a given span.\n *\n * As long as we use `Transaction`s internally, the returned root span\n * will be a `Transaction` but be aware that this might change in the future.\n *\n * If the given span has no root span or transaction, `undefined` is returned.\n */\nexport function getRootSpan(span: Span): Span | undefined {\n  // TODO (v8): Remove this check and just return span\n  // eslint-disable-next-line deprecation/deprecation\n  return span.transaction;\n}\n", "import type { Client, DynamicSamplingContext, Scope, Span, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient, getCurrentScope } from '../exports';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport { spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nexport function getDynamicSamplingContextFromClient(\n  trace_id: string,\n  client: Client,\n  scope?: Scope,\n): DynamicSamplingContext {\n  const options = client.getOptions();\n\n  const { publicKey: public_key } = client.getDsn() || {};\n  // TODO(v8): Remove segment from User\n  // eslint-disable-next-line deprecation/deprecation\n  const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n  const dsc = dropUndefinedKeys({\n    environment: options.environment || DEFAULT_ENVIRONMENT,\n    release: options.release,\n    user_segment,\n    public_key,\n    trace_id,\n  }) as DynamicSamplingContext;\n\n  client.emit && client.emit('createDsc', dsc);\n\n  return dsc;\n}\n\n/**\n * A Span with a frozen dynamic sampling context.\n */\ntype TransactionWithV7FrozenDsc = Transaction & { _frozenDynamicSamplingContext?: DynamicSamplingContext };\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly<Partial<DynamicSamplingContext>> {\n  const client = getClient();\n  if (!client) {\n    return {};\n  }\n\n  // passing emit=false here to only emit later once the DSC is actually populated\n  const dsc = getDynamicSamplingContextFromClient(spanToJSON(span).trace_id || '', client, getCurrentScope());\n\n  // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n  const txn = getRootSpan(span) as TransactionWithV7FrozenDsc | undefined;\n  if (!txn) {\n    return dsc;\n  }\n\n  // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n  // For now we need to avoid breaking users who directly created a txn with a DSC, where this field is still set.\n  // @see Transaction class constructor\n  const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext;\n  if (v7FrozenDsc) {\n    return v7FrozenDsc;\n  }\n\n  // TODO (v8): Replace txn.metadata with txn.attributes[]\n  // We can't do this yet because attributes aren't always set yet.\n  // eslint-disable-next-line deprecation/deprecation\n  const { sampleRate: maybeSampleRate, source } = txn.metadata;\n  if (maybeSampleRate != null) {\n    dsc.sample_rate = `${maybeSampleRate}`;\n  }\n\n  // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n  const jsonSpan = spanToJSON(txn);\n\n  // after JSON conversion, txn.name becomes jsonSpan.description\n  if (source && source !== 'url') {\n    dsc.transaction = jsonSpan.description;\n  }\n\n  dsc.sampled = String(spanIsSampled(txn));\n\n  client.emit && client.emit('createDsc', dsc);\n\n  return dsc;\n}\n", "import type { Breadcrumb, Event, ScopeData, Span } from '@sentry/types';\nimport { arrayify, dropUndefinedKeys } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport { getRootSpan } from './getRootSpan';\nimport { spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n  const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n  // Apply general data\n  applyDataToEvent(event, data);\n\n  // We want to set the trace context for normal events only if there isn't already\n  // a trace context on the event. There is a product feature in place where we link\n  // errors with transaction and it relies on that.\n  if (span) {\n    applySpanToEvent(event, span);\n  }\n\n  applyFingerprintToEvent(event, fingerprint);\n  applyBreadcrumbsToEvent(event, breadcrumbs);\n  applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n  const {\n    extra,\n    tags,\n    user,\n    contexts,\n    level,\n    sdkProcessingMetadata,\n    breadcrumbs,\n    fingerprint,\n    eventProcessors,\n    attachments,\n    propagationContext,\n    // eslint-disable-next-line deprecation/deprecation\n    transactionName,\n    span,\n  } = mergeData;\n\n  mergeAndOverwriteScopeData(data, 'extra', extra);\n  mergeAndOverwriteScopeData(data, 'tags', tags);\n  mergeAndOverwriteScopeData(data, 'user', user);\n  mergeAndOverwriteScopeData(data, 'contexts', contexts);\n  mergeAndOverwriteScopeData(data, 'sdkProcessingMetadata', sdkProcessingMetadata);\n\n  if (level) {\n    data.level = level;\n  }\n\n  if (transactionName) {\n    // eslint-disable-next-line deprecation/deprecation\n    data.transactionName = transactionName;\n  }\n\n  if (span) {\n    data.span = span;\n  }\n\n  if (breadcrumbs.length) {\n    data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n  }\n\n  if (fingerprint.length) {\n    data.fingerprint = [...data.fingerprint, ...fingerprint];\n  }\n\n  if (eventProcessors.length) {\n    data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n  }\n\n  if (attachments.length) {\n    data.attachments = [...data.attachments, ...attachments];\n  }\n\n  data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n  Prop extends 'extra' | 'tags' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n  Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n  if (mergeVal && Object.keys(mergeVal).length) {\n    // Clone object\n    data[prop] = { ...data[prop] };\n    for (const key in mergeVal) {\n      if (Object.prototype.hasOwnProperty.call(mergeVal, key)) {\n        data[prop][key] = mergeVal[key];\n      }\n    }\n  }\n}\n\n/** Exported only for tests */\nexport function mergeArray<Prop extends 'breadcrumbs' | 'fingerprint'>(\n  event: Event,\n  prop: Prop,\n  mergeVal: ScopeData[Prop],\n): void {\n  const prevVal = event[prop];\n  // If we are not merging any new values,\n  // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n  if (!mergeVal.length && (!prevVal || prevVal.length)) {\n    return;\n  }\n\n  const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n  event[prop] = merged.length ? merged : undefined;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n  const {\n    extra,\n    tags,\n    user,\n    contexts,\n    level,\n    // eslint-disable-next-line deprecation/deprecation\n    transactionName,\n  } = data;\n\n  const cleanedExtra = dropUndefinedKeys(extra);\n  if (cleanedExtra && Object.keys(cleanedExtra).length) {\n    event.extra = { ...cleanedExtra, ...event.extra };\n  }\n\n  const cleanedTags = dropUndefinedKeys(tags);\n  if (cleanedTags && Object.keys(cleanedTags).length) {\n    event.tags = { ...cleanedTags, ...event.tags };\n  }\n\n  const cleanedUser = dropUndefinedKeys(user);\n  if (cleanedUser && Object.keys(cleanedUser).length) {\n    event.user = { ...cleanedUser, ...event.user };\n  }\n\n  const cleanedContexts = dropUndefinedKeys(contexts);\n  if (cleanedContexts && Object.keys(cleanedContexts).length) {\n    event.contexts = { ...cleanedContexts, ...event.contexts };\n  }\n\n  if (level) {\n    event.level = level;\n  }\n\n  if (transactionName) {\n    event.transaction = transactionName;\n  }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n  const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n  event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n  event.sdkProcessingMetadata = {\n    ...event.sdkProcessingMetadata,\n    ...sdkProcessingMetadata,\n  };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n  event.contexts = { trace: spanToTraceContext(span), ...event.contexts };\n  const rootSpan = getRootSpan(span);\n  if (rootSpan) {\n    event.sdkProcessingMetadata = {\n      dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n      ...event.sdkProcessingMetadata,\n    };\n    const transactionName = spanToJSON(rootSpan).description;\n    if (transactionName) {\n      event.tags = { transaction: transactionName, ...event.tags };\n    }\n  }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n  // Make sure it's an array first and we actually have something in place\n  event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n  // If we have something on the scope, then merge it with event\n  if (fingerprint) {\n    event.fingerprint = event.fingerprint.concat(fingerprint);\n  }\n\n  // If we have no data at all, remove empty array default\n  if (event.fingerprint && !event.fingerprint.length) {\n    delete event.fingerprint;\n  }\n}\n", "/* eslint-disable max-lines */\nimport type {\n  Attachment,\n  Breadcrumb,\n  CaptureContext,\n  Client,\n  Context,\n  Contexts,\n  Event,\n  EventHint,\n  EventProcessor,\n  Extra,\n  Extras,\n  Primitive,\n  PropagationContext,\n  RequestSession,\n  Scope as ScopeInterface,\n  ScopeContext,\n  ScopeData,\n  Session,\n  Severity,\n  SeverityLevel,\n  Span,\n  Transaction,\n  User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, isPlainObject, logger, uuid4 } from '@sentry/utils';\n\nimport { getGlobalEventProcessors, notifyEventProcessors } from './eventProcessors';\nimport { updateSession } from './session';\nimport { applyScopeDataToEvent } from './utils/applyScopeDataToEvent';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * The global scope is kept in this module.\n * When accessing this via `getGlobalScope()` we'll make sure to set one if none is currently present.\n */\nlet globalScope: ScopeInterface | undefined;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n  /** Flag if notifying is happening. */\n  protected _notifyingListeners: boolean;\n\n  /** Callback for client to receive scope changes. */\n  protected _scopeListeners: Array<(scope: Scope) => void>;\n\n  /** Callback list that will be called after {@link applyToEvent}. */\n  protected _eventProcessors: EventProcessor[];\n\n  /** Array of breadcrumbs. */\n  protected _breadcrumbs: Breadcrumb[];\n\n  /** User */\n  protected _user: User;\n\n  /** Tags */\n  protected _tags: { [key: string]: Primitive };\n\n  /** Extra */\n  protected _extra: Extras;\n\n  /** Contexts */\n  protected _contexts: Contexts;\n\n  /** Attachments */\n  protected _attachments: Attachment[];\n\n  /** Propagation Context for distributed tracing */\n  protected _propagationContext: PropagationContext;\n\n  /**\n   * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n   * sent to Sentry\n   */\n  protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n  /** Fingerprint */\n  protected _fingerprint?: string[];\n\n  /** Severity */\n  // eslint-disable-next-line deprecation/deprecation\n  protected _level?: Severity | SeverityLevel;\n\n  /**\n   * Transaction Name\n   */\n  protected _transactionName?: string;\n\n  /** Span */\n  protected _span?: Span;\n\n  /** Session */\n  protected _session?: Session;\n\n  /** Request Mode Session Status */\n  protected _requestSession?: RequestSession;\n\n  /** The client on this scope */\n  protected _client?: Client;\n\n  // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n  public constructor() {\n    this._notifyingListeners = false;\n    this._scopeListeners = [];\n    this._eventProcessors = [];\n    this._breadcrumbs = [];\n    this._attachments = [];\n    this._user = {};\n    this._tags = {};\n    this._extra = {};\n    this._contexts = {};\n    this._sdkProcessingMetadata = {};\n    this._propagationContext = generatePropagationContext();\n  }\n\n  /**\n   * Inherit values from the parent scope.\n   * @deprecated Use `scope.clone()` and `new Scope()` instead.\n   */\n  public static clone(scope?: Scope): Scope {\n    return scope ? scope.clone() : new Scope();\n  }\n\n  /**\n   * Clone this scope instance.\n   */\n  public clone(): Scope {\n    const newScope = new Scope();\n    newScope._breadcrumbs = [...this._breadcrumbs];\n    newScope._tags = { ...this._tags };\n    newScope._extra = { ...this._extra };\n    newScope._contexts = { ...this._contexts };\n    newScope._user = this._user;\n    newScope._level = this._level;\n    newScope._span = this._span;\n    newScope._session = this._session;\n    newScope._transactionName = this._transactionName;\n    newScope._fingerprint = this._fingerprint;\n    newScope._eventProcessors = [...this._eventProcessors];\n    newScope._requestSession = this._requestSession;\n    newScope._attachments = [...this._attachments];\n    newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n    newScope._propagationContext = { ...this._propagationContext };\n    newScope._client = this._client;\n\n    return newScope;\n  }\n\n  /** Update the client on the scope. */\n  public setClient(client: Client | undefined): void {\n    this._client = client;\n  }\n\n  /**\n   * Get the client assigned to this scope.\n   *\n   * It is generally recommended to use the global function `Sentry.getClient()` instead, unless you know what you are doing.\n   */\n  public getClient(): Client | undefined {\n    return this._client;\n  }\n\n  /**\n   * Add internal on change listener. Used for sub SDKs that need to store the scope.\n   * @hidden\n   */\n  public addScopeListener(callback: (scope: Scope) => void): void {\n    this._scopeListeners.push(callback);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addEventProcessor(callback: EventProcessor): this {\n    this._eventProcessors.push(callback);\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setUser(user: User | null): this {\n    // If null is passed we want to unset everything, but still define keys,\n    // so that later down in the pipeline any existing values are cleared.\n    this._user = user || {\n      email: undefined,\n      id: undefined,\n      ip_address: undefined,\n      segment: undefined,\n      username: undefined,\n    };\n\n    if (this._session) {\n      updateSession(this._session, { user });\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getUser(): User | undefined {\n    return this._user;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getRequestSession(): RequestSession | undefined {\n    return this._requestSession;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setRequestSession(requestSession?: RequestSession): this {\n    this._requestSession = requestSession;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTags(tags: { [key: string]: Primitive }): this {\n    this._tags = {\n      ...this._tags,\n      ...tags,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTag(key: string, value: Primitive): this {\n    this._tags = { ...this._tags, [key]: value };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setExtras(extras: Extras): this {\n    this._extra = {\n      ...this._extra,\n      ...extras,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setExtra(key: string, extra: Extra): this {\n    this._extra = { ...this._extra, [key]: extra };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setFingerprint(fingerprint: string[]): this {\n    this._fingerprint = fingerprint;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setLevel(\n    // eslint-disable-next-line deprecation/deprecation\n    level: Severity | SeverityLevel,\n  ): this {\n    this._level = level;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the transaction name on the scope for future events.\n   */\n  public setTransactionName(name?: string): this {\n    this._transactionName = name;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setContext(key: string, context: Context | null): this {\n    if (context === null) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._contexts[key];\n    } else {\n      this._contexts[key] = context;\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the Span on the scope.\n   * @param span Span\n   * @deprecated Instead of setting a span on a scope, use `startSpan()`/`startSpanManual()` instead.\n   */\n  public setSpan(span?: Span): this {\n    this._span = span;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Returns the `Span` if there is one.\n   * @deprecated Use `getActiveSpan()` instead.\n   */\n  public getSpan(): Span | undefined {\n    return this._span;\n  }\n\n  /**\n   * Returns the `Transaction` attached to the scope (if there is one).\n   * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n   */\n  public getTransaction(): Transaction | undefined {\n    // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n    // have a pointer to the currently-active transaction.\n    const span = this._span;\n    // Cannot replace with getRootSpan because getRootSpan returns a span, not a transaction\n    // Also, this method will be removed anyway.\n    // eslint-disable-next-line deprecation/deprecation\n    return span && span.transaction;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setSession(session?: Session): this {\n    if (!session) {\n      delete this._session;\n    } else {\n      this._session = session;\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getSession(): Session | undefined {\n    return this._session;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public update(captureContext?: CaptureContext): this {\n    if (!captureContext) {\n      return this;\n    }\n\n    const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n    if (scopeToMerge instanceof Scope) {\n      const scopeData = scopeToMerge.getScopeData();\n\n      this._tags = { ...this._tags, ...scopeData.tags };\n      this._extra = { ...this._extra, ...scopeData.extra };\n      this._contexts = { ...this._contexts, ...scopeData.contexts };\n      if (scopeData.user && Object.keys(scopeData.user).length) {\n        this._user = scopeData.user;\n      }\n      if (scopeData.level) {\n        this._level = scopeData.level;\n      }\n      if (scopeData.fingerprint.length) {\n        this._fingerprint = scopeData.fingerprint;\n      }\n      if (scopeToMerge.getRequestSession()) {\n        this._requestSession = scopeToMerge.getRequestSession();\n      }\n      if (scopeData.propagationContext) {\n        this._propagationContext = scopeData.propagationContext;\n      }\n    } else if (isPlainObject(scopeToMerge)) {\n      const scopeContext = captureContext as ScopeContext;\n      this._tags = { ...this._tags, ...scopeContext.tags };\n      this._extra = { ...this._extra, ...scopeContext.extra };\n      this._contexts = { ...this._contexts, ...scopeContext.contexts };\n      if (scopeContext.user) {\n        this._user = scopeContext.user;\n      }\n      if (scopeContext.level) {\n        this._level = scopeContext.level;\n      }\n      if (scopeContext.fingerprint) {\n        this._fingerprint = scopeContext.fingerprint;\n      }\n      if (scopeContext.requestSession) {\n        this._requestSession = scopeContext.requestSession;\n      }\n      if (scopeContext.propagationContext) {\n        this._propagationContext = scopeContext.propagationContext;\n      }\n    }\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public clear(): this {\n    this._breadcrumbs = [];\n    this._tags = {};\n    this._extra = {};\n    this._user = {};\n    this._contexts = {};\n    this._level = undefined;\n    this._transactionName = undefined;\n    this._fingerprint = undefined;\n    this._requestSession = undefined;\n    this._span = undefined;\n    this._session = undefined;\n    this._notifyScopeListeners();\n    this._attachments = [];\n    this._propagationContext = generatePropagationContext();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n    const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n    // No data has been changed, so don't notify scope listeners\n    if (maxCrumbs <= 0) {\n      return this;\n    }\n\n    const mergedBreadcrumb = {\n      timestamp: dateTimestampInSeconds(),\n      ...breadcrumb,\n    };\n\n    const breadcrumbs = this._breadcrumbs;\n    breadcrumbs.push(mergedBreadcrumb);\n    this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs;\n\n    this._notifyScopeListeners();\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getLastBreadcrumb(): Breadcrumb | undefined {\n    return this._breadcrumbs[this._breadcrumbs.length - 1];\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public clearBreadcrumbs(): this {\n    this._breadcrumbs = [];\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addAttachment(attachment: Attachment): this {\n    this._attachments.push(attachment);\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `getScopeData()` instead.\n   */\n  public getAttachments(): Attachment[] {\n    const data = this.getScopeData();\n\n    return data.attachments;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public clearAttachments(): this {\n    this._attachments = [];\n    return this;\n  }\n\n  /** @inheritDoc */\n  public getScopeData(): ScopeData {\n    const {\n      _breadcrumbs,\n      _attachments,\n      _contexts,\n      _tags,\n      _extra,\n      _user,\n      _level,\n      _fingerprint,\n      _eventProcessors,\n      _propagationContext,\n      _sdkProcessingMetadata,\n      _transactionName,\n      _span,\n    } = this;\n\n    return {\n      breadcrumbs: _breadcrumbs,\n      attachments: _attachments,\n      contexts: _contexts,\n      tags: _tags,\n      extra: _extra,\n      user: _user,\n      level: _level,\n      fingerprint: _fingerprint || [],\n      eventProcessors: _eventProcessors,\n      propagationContext: _propagationContext,\n      sdkProcessingMetadata: _sdkProcessingMetadata,\n      transactionName: _transactionName,\n      span: _span,\n    };\n  }\n\n  /**\n   * Applies data from the scope to the event and runs all event processors on it.\n   *\n   * @param event Event\n   * @param hint Object containing additional information about the original exception, for use by the event processors.\n   * @hidden\n   * @deprecated Use `applyScopeDataToEvent()` directly\n   */\n  public applyToEvent(\n    event: Event,\n    hint: EventHint = {},\n    additionalEventProcessors: EventProcessor[] = [],\n  ): PromiseLike<Event | null> {\n    applyScopeDataToEvent(event, this.getScopeData());\n\n    // TODO (v8): Update this order to be: Global > Client > Scope\n    const eventProcessors: EventProcessor[] = [\n      ...additionalEventProcessors,\n      // eslint-disable-next-line deprecation/deprecation\n      ...getGlobalEventProcessors(),\n      ...this._eventProcessors,\n    ];\n\n    return notifyEventProcessors(eventProcessors, event, hint);\n  }\n\n  /**\n   * Add data which will be accessible during event processing but won't get sent to Sentry\n   */\n  public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n    this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setPropagationContext(context: PropagationContext): this {\n    this._propagationContext = context;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getPropagationContext(): PropagationContext {\n    return this._propagationContext;\n  }\n\n  /**\n   * Capture an exception for this scope.\n   *\n   * @param exception The exception to capture.\n   * @param hint Optinal additional data to attach to the Sentry event.\n   * @returns the id of the captured Sentry event.\n   */\n  public captureException(exception: unknown, hint?: EventHint): string {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n    if (!this._client) {\n      logger.warn('No client configured on scope - will not capture exception!');\n      return eventId;\n    }\n\n    const syntheticException = new Error('Sentry syntheticException');\n\n    this._client.captureException(\n      exception,\n      {\n        originalException: exception,\n        syntheticException,\n        ...hint,\n        event_id: eventId,\n      },\n      this,\n    );\n\n    return eventId;\n  }\n\n  /**\n   * Capture a message for this scope.\n   *\n   * @param message The message to capture.\n   * @param level An optional severity level to report the message with.\n   * @param hint Optional additional data to attach to the Sentry event.\n   * @returns the id of the captured message.\n   */\n  public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n    if (!this._client) {\n      logger.warn('No client configured on scope - will not capture message!');\n      return eventId;\n    }\n\n    const syntheticException = new Error(message);\n\n    this._client.captureMessage(\n      message,\n      level,\n      {\n        originalException: message,\n        syntheticException,\n        ...hint,\n        event_id: eventId,\n      },\n      this,\n    );\n\n    return eventId;\n  }\n\n  /**\n   * Captures a manually created event for this scope and sends it to Sentry.\n   *\n   * @param exception The event to capture.\n   * @param hint Optional additional data to attach to the Sentry event.\n   * @returns the id of the captured event.\n   */\n  public captureEvent(event: Event, hint?: EventHint): string {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n    if (!this._client) {\n      logger.warn('No client configured on scope - will not capture event!');\n      return eventId;\n    }\n\n    this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n    return eventId;\n  }\n\n  /**\n   * This will be called on every set call.\n   */\n  protected _notifyScopeListeners(): void {\n    // We need this check for this._notifyingListeners to be able to work on scope during updates\n    // If this check is not here we'll produce endless recursion when something is done with the scope\n    // during the callback.\n    if (!this._notifyingListeners) {\n      this._notifyingListeners = true;\n      this._scopeListeners.forEach(callback => {\n        callback(this);\n      });\n      this._notifyingListeners = false;\n    }\n  }\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nexport function getGlobalScope(): ScopeInterface {\n  if (!globalScope) {\n    globalScope = new Scope();\n  }\n\n  return globalScope;\n}\n\n/**\n * This is mainly needed for tests.\n * DO NOT USE this, as this is an internal API and subject to change.\n * @hidden\n */\nexport function setGlobalScope(scope: ScopeInterface | undefined): void {\n  globalScope = scope;\n}\n\nfunction generatePropagationContext(): PropagationContext {\n  return {\n    traceId: uuid4(),\n    spanId: uuid4().substring(16),\n  };\n}\n", "export const SDK_VERSION = '7.120.3';\n", "/* eslint-disable max-lines */\nimport type {\n  Breadcrumb,\n  BreadcrumbHint,\n  Client,\n  CustomSamplingContext,\n  Event,\n  EventHint,\n  Extra,\n  Extras,\n  Hub as HubInterface,\n  Integration,\n  IntegrationClass,\n  Primitive,\n  Session,\n  SessionContext,\n  Severity,\n  SeverityLevel,\n  Transaction,\n  TransactionContext,\n  User,\n} from '@sentry/types';\nimport {\n  GLOBAL_OBJ,\n  consoleSandbox,\n  dateTimestampInSeconds,\n  getGlobalSingleton,\n  isThenable,\n  logger,\n  uuid4,\n} from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport { SDK_VERSION } from './version';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = parseFloat(SDK_VERSION);\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\nexport interface RunWithAsyncContextOptions {\n  /** Whether to reuse an existing async context if one exists. Defaults to false. */\n  reuseExisting?: boolean;\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Strategy used to track async context.\n */\nexport interface AsyncContextStrategy {\n  /**\n   * Gets the current async context. Returns undefined if there is no current async context.\n   */\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub: () => Hub | undefined;\n  /**\n   * Runs the supplied callback in its own async context.\n   */\n  runWithAsyncContext<T>(callback: () => T, options: RunWithAsyncContextOptions): T;\n}\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n  client?: Client;\n  scope: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n  __SENTRY__?: {\n    // eslint-disable-next-line deprecation/deprecation\n    hub?: Hub;\n    acs?: AsyncContextStrategy;\n    /**\n     * Extra Hub properties injected by various SDKs\n     */\n    integrations?: Integration[];\n    extensions?: {\n      /** Extension methods for the hub, which are bound to the current Hub instance */\n      // eslint-disable-next-line @typescript-eslint/ban-types\n      [key: string]: Function;\n    };\n  };\n}\n\n/**\n * @deprecated The `Hub` class will be removed in version 8 of the SDK in favour of `Scope` and `Client` objects.\n *\n * If you previously used the `Hub` class directly, replace it with `Scope` and `Client` objects. More information:\n * - [Multiple Sentry Instances](https://docs.sentry.io/platforms/javascript/best-practices/multiple-sentry-instances/)\n * - [Browser Extensions](https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/)\n *\n * Some of our APIs are typed with the Hub class instead of the interface (e.g. `getCurrentHub`). Most of them are deprecated\n * themselves and will also be removed in version 8. More information:\n * - [Migration Guide](https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#deprecate-hub)\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class Hub implements HubInterface {\n  /** Is a {@link Layer}[] containing the client and scope */\n  private readonly _stack: Layer[];\n\n  /** Contains the last event id of a captured event.  */\n  private _lastEventId?: string;\n\n  private _isolationScope: Scope;\n\n  /**\n   * Creates a new instance of the hub, will push one {@link Layer} into the\n   * internal stack on creation.\n   *\n   * @param client bound to the hub.\n   * @param scope bound to the hub.\n   * @param version number, higher number means higher priority.\n   *\n   * @deprecated Instantiation of Hub objects is deprecated and the constructor will be removed in version 8 of the SDK.\n   *\n   * If you are currently using the Hub for multi-client use like so:\n   *\n   * ```\n   * // OLD\n   * const hub = new Hub();\n   * hub.bindClient(client);\n   * makeMain(hub)\n   * ```\n   *\n   * instead initialize the client as follows:\n   *\n   * ```\n   * // NEW\n   * Sentry.withIsolationScope(() => {\n   *    Sentry.setCurrentClient(client);\n   *    client.init();\n   * });\n   * ```\n   *\n   * If you are using the Hub to capture events like so:\n   *\n   * ```\n   * // OLD\n   * const client = new Client();\n   * const hub = new Hub(client);\n   * hub.captureException()\n   * ```\n   *\n   * instead capture isolated events as follows:\n   *\n   * ```\n   * // NEW\n   * const client = new Client();\n   * const scope = new Scope();\n   * scope.setClient(client);\n   * scope.captureException();\n   * ```\n   */\n  public constructor(\n    client?: Client,\n    scope?: Scope,\n    isolationScope?: Scope,\n    private readonly _version: number = API_VERSION,\n  ) {\n    let assignedScope;\n    if (!scope) {\n      assignedScope = new Scope();\n      assignedScope.setClient(client);\n    } else {\n      assignedScope = scope;\n    }\n\n    let assignedIsolationScope;\n    if (!isolationScope) {\n      assignedIsolationScope = new Scope();\n      assignedIsolationScope.setClient(client);\n    } else {\n      assignedIsolationScope = isolationScope;\n    }\n\n    this._stack = [{ scope: assignedScope }];\n\n    if (client) {\n      // eslint-disable-next-line deprecation/deprecation\n      this.bindClient(client);\n    }\n\n    this._isolationScope = assignedIsolationScope;\n  }\n\n  /**\n   * Checks if this hub's version is older than the given version.\n   *\n   * @param version A version number to compare to.\n   * @return True if the given version is newer; otherwise false.\n   *\n   * @deprecated This will be removed in v8.\n   */\n  public isOlderThan(version: number): boolean {\n    return this._version < version;\n  }\n\n  /**\n   * This binds the given client to the current scope.\n   * @param client An SDK client (client) instance.\n   *\n   * @deprecated Use `initAndBind()` directly, or `setCurrentClient()` and/or `client.init()` instead.\n   */\n  public bindClient(client?: Client): void {\n    // eslint-disable-next-line deprecation/deprecation\n    const top = this.getStackTop();\n    top.client = client;\n    top.scope.setClient(client);\n    // eslint-disable-next-line deprecation/deprecation\n    if (client && client.setupIntegrations) {\n      // eslint-disable-next-line deprecation/deprecation\n      client.setupIntegrations();\n    }\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `withScope` instead.\n   */\n  public pushScope(): Scope {\n    // We want to clone the content of prev scope\n    // eslint-disable-next-line deprecation/deprecation\n    const scope = this.getScope().clone();\n    // eslint-disable-next-line deprecation/deprecation\n    this.getStack().push({\n      // eslint-disable-next-line deprecation/deprecation\n      client: this.getClient(),\n      scope,\n    });\n    return scope;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `withScope` instead.\n   */\n  public popScope(): boolean {\n    // eslint-disable-next-line deprecation/deprecation\n    if (this.getStack().length <= 1) return false;\n    // eslint-disable-next-line deprecation/deprecation\n    return !!this.getStack().pop();\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.withScope()` instead.\n   */\n  public withScope<T>(callback: (scope: Scope) => T): T {\n    // eslint-disable-next-line deprecation/deprecation\n    const scope = this.pushScope();\n\n    let maybePromiseResult: T;\n    try {\n      maybePromiseResult = callback(scope);\n    } catch (e) {\n      // eslint-disable-next-line deprecation/deprecation\n      this.popScope();\n      throw e;\n    }\n\n    if (isThenable(maybePromiseResult)) {\n      // @ts-expect-error - isThenable returns the wrong type\n      return maybePromiseResult.then(\n        res => {\n          // eslint-disable-next-line deprecation/deprecation\n          this.popScope();\n          return res;\n        },\n        e => {\n          // eslint-disable-next-line deprecation/deprecation\n          this.popScope();\n          throw e;\n        },\n      );\n    }\n\n    // eslint-disable-next-line deprecation/deprecation\n    this.popScope();\n    return maybePromiseResult;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.getClient()` instead.\n   */\n  public getClient<C extends Client>(): C | undefined {\n    // eslint-disable-next-line deprecation/deprecation\n    return this.getStackTop().client as C;\n  }\n\n  /**\n   * Returns the scope of the top stack.\n   *\n   * @deprecated Use `Sentry.getCurrentScope()` instead.\n   */\n  public getScope(): Scope {\n    // eslint-disable-next-line deprecation/deprecation\n    return this.getStackTop().scope;\n  }\n\n  /**\n   * @deprecated Use `Sentry.getIsolationScope()` instead.\n   */\n  public getIsolationScope(): Scope {\n    return this._isolationScope;\n  }\n\n  /**\n   * Returns the scope stack for domains or the process.\n   * @deprecated This will be removed in v8.\n   */\n  public getStack(): Layer[] {\n    return this._stack;\n  }\n\n  /**\n   * Returns the topmost scope layer in the order domain > local > process.\n   * @deprecated This will be removed in v8.\n   */\n  public getStackTop(): Layer {\n    return this._stack[this._stack.length - 1];\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.captureException()` instead.\n   */\n  public captureException(exception: unknown, hint?: EventHint): string {\n    const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n    const syntheticException = new Error('Sentry syntheticException');\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().captureException(exception, {\n      originalException: exception,\n      syntheticException,\n      ...hint,\n      event_id: eventId,\n    });\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use  `Sentry.captureMessage()` instead.\n   */\n  public captureMessage(\n    message: string,\n    // eslint-disable-next-line deprecation/deprecation\n    level?: Severity | SeverityLevel,\n    hint?: EventHint,\n  ): string {\n    const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n    const syntheticException = new Error(message);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().captureMessage(message, level, {\n      originalException: message,\n      syntheticException,\n      ...hint,\n      event_id: eventId,\n    });\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.captureEvent()` instead.\n   */\n  public captureEvent(event: Event, hint?: EventHint): string {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n    if (!event.type) {\n      this._lastEventId = eventId;\n    }\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().captureEvent(event, { ...hint, event_id: eventId });\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated This will be removed in v8.\n   */\n  public lastEventId(): string | undefined {\n    return this._lastEventId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.addBreadcrumb()` instead.\n   */\n  public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n    // eslint-disable-next-line deprecation/deprecation\n    const { scope, client } = this.getStackTop();\n\n    if (!client) return;\n\n    const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n      (client.getOptions && client.getOptions()) || {};\n\n    if (maxBreadcrumbs <= 0) return;\n\n    const timestamp = dateTimestampInSeconds();\n    const mergedBreadcrumb = { timestamp, ...breadcrumb };\n    const finalBreadcrumb = beforeBreadcrumb\n      ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n      : mergedBreadcrumb;\n\n    if (finalBreadcrumb === null) return;\n\n    if (client.emit) {\n      client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n    }\n\n    // TODO(v8): I know this comment doesn't make much sense because the hub will be deprecated but I still wanted to\n    // write it down. In theory, we would have to add the breadcrumbs to the isolation scope here, however, that would\n    // duplicate all of the breadcrumbs. There was the possibility of adding breadcrumbs to both, the isolation scope\n    // and the normal scope, and deduplicating it down the line in the event processing pipeline. However, that would\n    // have been very fragile, because the breadcrumb objects would have needed to keep their identity all throughout\n    // the event processing pipeline.\n    // In the new implementation, the top level `Sentry.addBreadcrumb()` should ONLY write to the isolation scope.\n\n    scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setUser()` instead.\n   */\n  public setUser(user: User | null): void {\n    // TODO(v8): The top level `Sentry.setUser()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setUser(user);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setUser(user);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setTags()` instead.\n   */\n  public setTags(tags: { [key: string]: Primitive }): void {\n    // TODO(v8): The top level `Sentry.setTags()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setTags(tags);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setTags(tags);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setExtras()` instead.\n   */\n  public setExtras(extras: Extras): void {\n    // TODO(v8): The top level `Sentry.setExtras()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setExtras(extras);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setExtras(extras);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setTag()` instead.\n   */\n  public setTag(key: string, value: Primitive): void {\n    // TODO(v8): The top level `Sentry.setTag()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setTag(key, value);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setTag(key, value);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setExtra()` instead.\n   */\n  public setExtra(key: string, extra: Extra): void {\n    // TODO(v8): The top level `Sentry.setExtra()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setExtra(key, extra);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setExtra(key, extra);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setContext()` instead.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public setContext(name: string, context: { [key: string]: any } | null): void {\n    // TODO(v8): The top level `Sentry.setContext()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setContext(name, context);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setContext(name, context);\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `getScope()` directly.\n   */\n  public configureScope(callback: (scope: Scope) => void): void {\n    // eslint-disable-next-line deprecation/deprecation\n    const { scope, client } = this.getStackTop();\n    if (client) {\n      callback(scope);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line deprecation/deprecation\n  public run(callback: (hub: Hub) => void): void {\n    // eslint-disable-next-line deprecation/deprecation\n    const oldHub = makeMain(this);\n    try {\n      callback(this);\n    } finally {\n      // eslint-disable-next-line deprecation/deprecation\n      makeMain(oldHub);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.getClient().getIntegrationByName()` instead.\n   */\n  public getIntegration<T extends Integration>(integration: IntegrationClass<T>): T | null {\n    // eslint-disable-next-line deprecation/deprecation\n    const client = this.getClient();\n    if (!client) return null;\n    try {\n      // eslint-disable-next-line deprecation/deprecation\n      return client.getIntegration(integration);\n    } catch (_oO) {\n      DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n      return null;\n    }\n  }\n\n  /**\n   * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n   *\n   * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n   * new child span within the transaction or any span, call the respective `.startChild()` method.\n   *\n   * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n   *\n   * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n   * finished child spans will be sent to Sentry.\n   *\n   * @param context Properties of the new `Transaction`.\n   * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n   * default values). See {@link Options.tracesSampler}.\n   *\n   * @returns The transaction which was just started\n   *\n   * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n   */\n  public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n    const result = this._callExtensionMethod<Transaction>('startTransaction', context, customSamplingContext);\n\n    if (DEBUG_BUILD && !result) {\n      // eslint-disable-next-line deprecation/deprecation\n      const client = this.getClient();\n      if (!client) {\n        logger.warn(\n          \"Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'\",\n        );\n      } else {\n        logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n      }\n    }\n\n    return result;\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `spanToTraceHeader()` instead.\n   */\n  public traceHeaders(): { [key: string]: string } {\n    return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use top level `captureSession` instead.\n   */\n  public captureSession(endSession: boolean = false): void {\n    // both send the update and pull the session from the scope\n    if (endSession) {\n      // eslint-disable-next-line deprecation/deprecation\n      return this.endSession();\n    }\n\n    // only send the update\n    this._sendSessionUpdate();\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use top level `endSession` instead.\n   */\n  public endSession(): void {\n    // eslint-disable-next-line deprecation/deprecation\n    const layer = this.getStackTop();\n    const scope = layer.scope;\n    const session = scope.getSession();\n    if (session) {\n      closeSession(session);\n    }\n    this._sendSessionUpdate();\n\n    // the session is over; take it off of the scope\n    scope.setSession();\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use top level `startSession` instead.\n   */\n  public startSession(context?: SessionContext): Session {\n    // eslint-disable-next-line deprecation/deprecation\n    const { scope, client } = this.getStackTop();\n    const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n    // Will fetch userAgent if called from browser sdk\n    const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n    const session = makeSession({\n      release,\n      environment,\n      user: scope.getUser(),\n      ...(userAgent && { userAgent }),\n      ...context,\n    });\n\n    // End existing session if there's one\n    const currentSession = scope.getSession && scope.getSession();\n    if (currentSession && currentSession.status === 'ok') {\n      updateSession(currentSession, { status: 'exited' });\n    }\n    // eslint-disable-next-line deprecation/deprecation\n    this.endSession();\n\n    // Afterwards we set the new session on the scope\n    scope.setSession(session);\n\n    return session;\n  }\n\n  /**\n   * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n   * when Tracing is used.\n   *\n   * @deprecated Use top-level `getClient().getOptions().sendDefaultPii` instead. This function\n   * only unnecessarily increased API surface but only wrapped accessing the option.\n   */\n  public shouldSendDefaultPii(): boolean {\n    // eslint-disable-next-line deprecation/deprecation\n    const client = this.getClient();\n    const options = client && client.getOptions();\n    return Boolean(options && options.sendDefaultPii);\n  }\n\n  /**\n   * Sends the current Session on the scope\n   */\n  private _sendSessionUpdate(): void {\n    // eslint-disable-next-line deprecation/deprecation\n    const { scope, client } = this.getStackTop();\n\n    const session = scope.getSession();\n    if (session && client && client.captureSession) {\n      client.captureSession(session);\n    }\n  }\n\n  /**\n   * Calls global extension method and binding current instance to the function call\n   */\n  // @ts-expect-error Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  private _callExtensionMethod<T>(method: string, ...args: any[]): T {\n    const carrier = getMainCarrier();\n    const sentry = carrier.__SENTRY__;\n    if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n      return sentry.extensions[method].apply(this, args);\n    }\n    DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n  }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n  GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n    extensions: {},\n    hub: undefined,\n  };\n  return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n *\n * @deprecated Use `setCurrentClient()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function makeMain(hub: Hub): Hub {\n  const registry = getMainCarrier();\n  const oldHub = getHubFromCarrier(registry);\n  setHubOnCarrier(registry, hub);\n  return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n *\n * @deprecated Use the respective replacement method directly instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getCurrentHub(): Hub {\n  // Get main carrier (global for every environment)\n  const registry = getMainCarrier();\n\n  if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n    const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n    if (hub) {\n      return hub;\n    }\n  }\n\n  // Return hub that lives on a global object\n  return getGlobalHub(registry);\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current exection context,\n * meaning that it will remain stable for the same Hub.\n */\nexport function getIsolationScope(): Scope {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().getIsolationScope();\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction getGlobalHub(registry: Carrier = getMainCarrier()): Hub {\n  // If there's no hub, or its an old API, assign a new one\n\n  if (\n    !hasHubOnCarrier(registry) ||\n    // eslint-disable-next-line deprecation/deprecation\n    getHubFromCarrier(registry).isOlderThan(API_VERSION)\n  ) {\n    // eslint-disable-next-line deprecation/deprecation\n    setHubOnCarrier(registry, new Hub());\n  }\n\n  // Return hub that lives on a global object\n  return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function ensureHubOnCarrier(carrier: Carrier, parent: Hub = getGlobalHub()): void {\n  // If there's no hub on current domain, or it's an old API, assign a new one\n  if (\n    !hasHubOnCarrier(carrier) ||\n    // eslint-disable-next-line deprecation/deprecation\n    getHubFromCarrier(carrier).isOlderThan(API_VERSION)\n  ) {\n    // eslint-disable-next-line deprecation/deprecation\n    const client = parent.getClient();\n    // eslint-disable-next-line deprecation/deprecation\n    const scope = parent.getScope();\n    // eslint-disable-next-line deprecation/deprecation\n    const isolationScope = parent.getIsolationScope();\n    // eslint-disable-next-line deprecation/deprecation\n    setHubOnCarrier(carrier, new Hub(client, scope.clone(), isolationScope.clone()));\n  }\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\n  // Get main carrier (global for every environment)\n  const registry = getMainCarrier();\n  registry.__SENTRY__ = registry.__SENTRY__ || {};\n  registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nexport function runWithAsyncContext<T>(callback: () => T, options: RunWithAsyncContextOptions = {}): T {\n  const registry = getMainCarrier();\n\n  if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n    return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n  }\n\n  // if there was no strategy, fallback to just calling the callback\n  return callback();\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n  return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n  // eslint-disable-next-line deprecation/deprecation\n  return getGlobalSingleton<Hub>('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n  if (!carrier) return false;\n  const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n  __SENTRY__.hub = hub;\n  return true;\n}\n", "import type {\n  DsnComponents,\n  Event,\n  EventEnvelope,\n  EventItem,\n  SdkInfo,\n  SdkMetadata,\n  Session,\n  SessionAggregates,\n  SessionEnvelope,\n  SessionItem,\n} from '@sentry/types';\nimport {\n  createEnvelope,\n  createEventEnvelopeHeaders,\n  dsnToString,\n  getSdkMetadataForEnvelopeHeader,\n} from '@sentry/utils';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event: Event, sdkInfo?: SdkInfo): Event {\n  if (!sdkInfo) {\n    return event;\n  }\n  event.sdk = event.sdk || {};\n  event.sdk.name = event.sdk.name || sdkInfo.name;\n  event.sdk.version = event.sdk.version || sdkInfo.version;\n  event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n  event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n  return event;\n}\n\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(\n  session: Session | SessionAggregates,\n  dsn?: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): SessionEnvelope {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n  const envelopeHeaders = {\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n  };\n\n  const envelopeItem: SessionItem =\n    'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n  return createEnvelope<SessionEnvelope>(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nexport function createEventEnvelope(\n  event: Event,\n  dsn?: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): EventEnvelope {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n  /*\n    Note: Due to TS, event.type may be `replay_event`, theoretically.\n    In practice, we never call `createEventEnvelope` with `replay_event` type,\n    and we'd have to adjut a looot of types to make this work properly.\n    We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n    So the safe choice is to really guard against the replay_event type here.\n  */\n  const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n  enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n  const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n  // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n  // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n  // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n  // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n  delete event.sdkProcessingMetadata;\n\n  const eventItem: EventItem = [{ type: eventType }, event];\n  return createEnvelope<EventEnvelope>(envelopeHeaders, [eventItem]);\n}\n", "import type { ClientOptions, DsnComponents, DsnLike, SdkInfo } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n  const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n  const port = dsn.port ? `:${dsn.port}` : '';\n  return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n  return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n  return urlEncode({\n    // We send only the minimum set of required information. See\n    // https://github.com/getsentry/sentry-javascript/issues/2572.\n    sentry_key: dsn.publicKey,\n    sentry_version: SENTRY_API_VERSION,\n    ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n  });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(\n  dsn: DsnComponents,\n  // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n  // options: ClientOptions = {} as ClientOptions,\n  tunnelOrOptions: string | ClientOptions = {} as ClientOptions,\n): string {\n  // TODO (v8): Use this code instead\n  // const { tunnel, _metadata = {} } = options;\n  // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n  const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n  const sdkInfo =\n    typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n  return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n  dsnLike: DsnLike,\n  dialogOptions: {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    [key: string]: any;\n    user?: { name?: string; email?: string };\n  },\n): string {\n  const dsn = makeDsn(dsnLike);\n  if (!dsn) {\n    return '';\n  }\n\n  const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n  let encodedOptions = `dsn=${dsnToString(dsn)}`;\n  for (const key in dialogOptions) {\n    if (key === 'dsn') {\n      continue;\n    }\n\n    if (key === 'onClose') {\n      continue;\n    }\n\n    if (key === 'user') {\n      const user = dialogOptions.user;\n      if (!user) {\n        continue;\n      }\n      if (user.name) {\n        encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n      }\n      if (user.email) {\n        encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n      }\n    } else {\n      encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n    }\n  }\n\n  return `${endpoint}?${encodedOptions}`;\n}\n", "import type {\n  Client,\n  Event,\n  EventHint,\n  Integration,\n  IntegrationClass,\n  IntegrationFn,\n  IntegrationFnResult,\n  Options,\n} from '@sentry/types';\nimport { arrayify, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { addGlobalEventProcessor } from './eventProcessors';\nimport { getClient } from './exports';\nimport { getCurrentHub } from './hub';\n\ndeclare module '@sentry/types' {\n  interface Integration {\n    isDefaultInstance?: boolean;\n  }\n}\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n  [key: string]: Integration;\n};\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n  const integrationsByName: { [key: string]: Integration } = {};\n\n  integrations.forEach(currentInstance => {\n    const { name } = currentInstance;\n\n    const existingInstance = integrationsByName[name];\n\n    // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n    // default instance to overwrite an existing user instance\n    if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n      return;\n    }\n\n    integrationsByName[name] = currentInstance;\n  });\n\n  return Object.keys(integrationsByName).map(k => integrationsByName[k]);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(options: Pick<Options, 'defaultIntegrations' | 'integrations'>): Integration[] {\n  const defaultIntegrations = options.defaultIntegrations || [];\n  const userIntegrations = options.integrations;\n\n  // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n  defaultIntegrations.forEach(integration => {\n    integration.isDefaultInstance = true;\n  });\n\n  let integrations: Integration[];\n\n  if (Array.isArray(userIntegrations)) {\n    integrations = [...defaultIntegrations, ...userIntegrations];\n  } else if (typeof userIntegrations === 'function') {\n    integrations = arrayify(userIntegrations(defaultIntegrations));\n  } else {\n    integrations = defaultIntegrations;\n  }\n\n  const finalIntegrations = filterDuplicates(integrations);\n\n  // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n  // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n  // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n  // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n  const debugIndex = findIndex(finalIntegrations, integration => integration.name === 'Debug');\n  if (debugIndex !== -1) {\n    const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n    finalIntegrations.push(debugInstance);\n  }\n\n  return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(client: Client, integrations: Integration[]): IntegrationIndex {\n  const integrationIndex: IntegrationIndex = {};\n\n  integrations.forEach(integration => {\n    // guard against empty provided integrations\n    if (integration) {\n      setupIntegration(client, integration, integrationIndex);\n    }\n  });\n\n  return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nexport function afterSetupIntegrations(client: Client, integrations: Integration[]): void {\n  for (const integration of integrations) {\n    // guard against empty provided integrations\n    if (integration && integration.afterAllSetup) {\n      integration.afterAllSetup(client);\n    }\n  }\n}\n\n/** Setup a single integration.  */\nexport function setupIntegration(client: Client, integration: Integration, integrationIndex: IntegrationIndex): void {\n  if (integrationIndex[integration.name]) {\n    DEBUG_BUILD && logger.log(`Integration skipped because it was already installed: ${integration.name}`);\n    return;\n  }\n  integrationIndex[integration.name] = integration;\n\n  // `setupOnce` is only called the first time\n  if (installedIntegrations.indexOf(integration.name) === -1) {\n    // eslint-disable-next-line deprecation/deprecation\n    integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n    installedIntegrations.push(integration.name);\n  }\n\n  // `setup` is run for each client\n  if (integration.setup && typeof integration.setup === 'function') {\n    integration.setup(client);\n  }\n\n  if (client.on && typeof integration.preprocessEvent === 'function') {\n    const callback = integration.preprocessEvent.bind(integration) as typeof integration.preprocessEvent;\n    client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n  }\n\n  if (client.addEventProcessor && typeof integration.processEvent === 'function') {\n    const callback = integration.processEvent.bind(integration) as typeof integration.processEvent;\n\n    const processor = Object.assign((event: Event, hint: EventHint) => callback(event, hint, client), {\n      id: integration.name,\n    });\n\n    client.addEventProcessor(processor);\n  }\n\n  DEBUG_BUILD && logger.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current hub's client. */\nexport function addIntegration(integration: Integration): void {\n  const client = getClient();\n\n  if (!client || !client.addIntegration) {\n    DEBUG_BUILD && logger.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n    return;\n  }\n\n  client.addIntegration(integration);\n}\n\n// Polyfill for Array.findIndex(), which is not supported in ES5\nfunction findIndex<T>(arr: T[], callback: (item: T) => boolean): number {\n  for (let i = 0; i < arr.length; i++) {\n    if (callback(arr[i]) === true) {\n      return i;\n    }\n  }\n\n  return -1;\n}\n\n/**\n * Convert a new integration function to the legacy class syntax.\n * In v8, we can remove this and instead export the integration functions directly.\n *\n * @deprecated This will be removed in v8!\n */\nexport function convertIntegrationFnToClass<Fn extends IntegrationFn>(\n  name: string,\n  fn: Fn,\n): IntegrationClass<Integration> {\n  return Object.assign(\n    function ConvertedIntegration(...args: Parameters<Fn>): Integration {\n      return fn(...args);\n    },\n    { id: name },\n  ) as unknown as IntegrationClass<Integration>;\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nexport function defineIntegration<Fn extends IntegrationFn>(fn: Fn): (...args: Parameters<Fn>) => IntegrationFnResult {\n  return fn;\n}\n", "import type { MeasurementUnit, MetricBucketItem, Primitive } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport type { MetricType } from './types';\n\n/**\n * Generate bucket key from metric properties.\n */\nexport function getBucketKey(\n  metricType: MetricType,\n  name: string,\n  unit: MeasurementUnit,\n  tags: Record<string, string>,\n): string {\n  const stringifiedTags = Object.entries(dropUndefinedKeys(tags)).sort((a, b) => a[0].localeCompare(b[0]));\n  return `${metricType}${name}${unit}${stringifiedTags}`;\n}\n\n/* eslint-disable no-bitwise */\n/**\n * Simple hash function for strings.\n */\nexport function simpleHash(s: string): number {\n  let rv = 0;\n  for (let i = 0; i < s.length; i++) {\n    const c = s.charCodeAt(i);\n    rv = (rv << 5) - rv + c;\n    rv &= rv;\n  }\n  return rv >>> 0;\n}\n/* eslint-enable no-bitwise */\n\n/**\n * Serialize metrics buckets into a string based on statsd format.\n *\n * Example of format:\n * metric.name@second:1:1.2|d|#a:value,b:anothervalue|T12345677\n * Segments:\n * name: metric.name\n * unit: second\n * value: [1, 1.2]\n * type of metric: d (distribution)\n * tags: { a: value, b: anothervalue }\n * timestamp: 12345677\n */\nexport function serializeMetricBuckets(metricBucketItems: MetricBucketItem[]): string {\n  let out = '';\n  for (const item of metricBucketItems) {\n    const tagEntries = Object.entries(item.tags);\n    const maybeTags = tagEntries.length > 0 ? `|#${tagEntries.map(([key, value]) => `${key}:${value}`).join(',')}` : '';\n    out += `${item.name}@${item.unit}:${item.metric}|${item.metricType}${maybeTags}|T${item.timestamp}\\n`;\n  }\n  return out;\n}\n\n/** Sanitizes units */\nexport function sanitizeUnit(unit: string): string {\n  return unit.replace(/[^\\w]+/gi, '_');\n}\n\n/** Sanitizes metric keys */\nexport function sanitizeMetricKey(key: string): string {\n  return key.replace(/[^\\w\\-.]+/gi, '_');\n}\n\nfunction sanitizeTagKey(key: string): string {\n  return key.replace(/[^\\w\\-./]+/gi, '');\n}\n\nconst tagValueReplacements: [string, string][] = [\n  ['\\n', '\\\\n'],\n  ['\\r', '\\\\r'],\n  ['\\t', '\\\\t'],\n  ['\\\\', '\\\\\\\\'],\n  ['|', '\\\\u{7c}'],\n  [',', '\\\\u{2c}'],\n];\n\nfunction getCharOrReplacement(input: string): string {\n  for (const [search, replacement] of tagValueReplacements) {\n    if (input === search) {\n      return replacement;\n    }\n  }\n\n  return input;\n}\n\nfunction sanitizeTagValue(value: string): string {\n  return [...value].reduce((acc, char) => acc + getCharOrReplacement(char), '');\n}\n\n/**\n * Sanitizes tags.\n */\nexport function sanitizeTags(unsanitizedTags: Record<string, Primitive>): Record<string, string> {\n  const tags: Record<string, string> = {};\n  for (const key in unsanitizedTags) {\n    if (Object.prototype.hasOwnProperty.call(unsanitizedTags, key)) {\n      const sanitizedKey = sanitizeTagKey(key);\n      tags[sanitizedKey] = sanitizeTagValue(String(unsanitizedTags[key]));\n    }\n  }\n  return tags;\n}\n", "import type { DsnComponents, MetricBucketItem, SdkMetadata, StatsdEnvelope, StatsdItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\nimport { serializeMetricBuckets } from './utils';\n\n/**\n * Create envelope from a metric aggregate.\n */\nexport function createMetricEnvelope(\n  metricBucketItems: Array<MetricBucketItem>,\n  dsn?: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): StatsdEnvelope {\n  const headers: StatsdEnvelope[0] = {\n    sent_at: new Date().toISOString(),\n  };\n\n  if (metadata && metadata.sdk) {\n    headers.sdk = {\n      name: metadata.sdk.name,\n      version: metadata.sdk.version,\n    };\n  }\n\n  if (!!tunnel && dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n\n  const item = createMetricEnvelopeItem(metricBucketItems);\n  return createEnvelope<StatsdEnvelope>(headers, [item]);\n}\n\nfunction createMetricEnvelopeItem(metricBucketItems: MetricBucketItem[]): StatsdItem {\n  const payload = serializeMetricBuckets(metricBucketItems);\n  const metricHeaders: StatsdItem[0] = {\n    type: 'statsd',\n    length: payload.length,\n  };\n  return [metricHeaders, payload];\n}\n", "/* eslint-disable max-lines */\nimport type {\n  Breadcrumb,\n  BreadcrumbHint,\n  Client,\n  ClientOptions,\n  DataCategory,\n  DsnComponents,\n  DynamicSamplingContext,\n  Envelope,\n  ErrorEvent,\n  Event,\n  EventDropReason,\n  EventHint,\n  EventProcessor,\n  FeedbackEvent,\n  Integration,\n  IntegrationClass,\n  MetricBucketItem,\n  MetricsAggregator,\n  Outcome,\n  ParameterizedString,\n  SdkMetadata,\n  Session,\n  SessionAggregates,\n  Severity,\n  SeverityLevel,\n  StartSpanOptions,\n  Transaction,\n  TransactionEvent,\n  Transport,\n  TransportMakeRequestResponse,\n} from '@sentry/types';\nimport {\n  SentryError,\n  SyncPromise,\n  addItemToEnvelope,\n  checkOrSetAlreadyCaught,\n  createAttachmentEnvelopeItem,\n  isParameterizedString,\n  isPlainObject,\n  isPrimitive,\n  isThenable,\n  logger,\n  makeDsn,\n  rejectedSyncPromise,\n  resolvedSyncPromise,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport { getClient } from './exports';\nimport { getIsolationScope } from './hub';\nimport type { IntegrationIndex } from './integration';\nimport { afterSetupIntegrations } from './integration';\nimport { setupIntegration, setupIntegrations } from './integration';\nimport { createMetricEnvelope } from './metrics/envelope';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { getDynamicSamplingContextFromClient } from './tracing/dynamicSamplingContext';\nimport { prepareEvent } from './utils/prepareEvent';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient<NodeOptions> {\n *   public constructor(options: NodeOptions) {\n *     super(options);\n *   }\n *\n *   // ...\n * }\n */\nexport abstract class BaseClient<O extends ClientOptions> implements Client<O> {\n  /**\n   * A reference to a metrics aggregator\n   *\n   * @experimental Note this is alpha API. It may experience breaking changes in the future.\n   */\n  public metricsAggregator?: MetricsAggregator;\n\n  /** Options passed to the SDK. */\n  protected readonly _options: O;\n\n  /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n  protected readonly _dsn?: DsnComponents;\n\n  protected readonly _transport?: Transport;\n\n  /** Array of set up integrations. */\n  protected _integrations: IntegrationIndex;\n\n  /** Indicates whether this client's integrations have been set up. */\n  protected _integrationsInitialized: boolean;\n\n  /** Number of calls being processed */\n  protected _numProcessing: number;\n\n  protected _eventProcessors: EventProcessor[];\n\n  /** Holds flushable  */\n  private _outcomes: { [key: string]: number };\n\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  private _hooks: Record<string, Function[]>;\n\n  /**\n   * Initializes this client instance.\n   *\n   * @param options Options for the client.\n   */\n  protected constructor(options: O) {\n    this._options = options;\n    this._integrations = {};\n    this._integrationsInitialized = false;\n    this._numProcessing = 0;\n    this._outcomes = {};\n    this._hooks = {};\n    this._eventProcessors = [];\n\n    if (options.dsn) {\n      this._dsn = makeDsn(options.dsn);\n    } else {\n      DEBUG_BUILD && logger.warn('No DSN provided, client will not send events.');\n    }\n\n    if (this._dsn) {\n      const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n      this._transport = options.transport({\n        tunnel: this._options.tunnel,\n        recordDroppedEvent: this.recordDroppedEvent.bind(this),\n        ...options.transportOptions,\n        url,\n      });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n  public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n    // ensure we haven't captured this very object before\n    if (checkOrSetAlreadyCaught(exception)) {\n      DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n      return;\n    }\n\n    let eventId: string | undefined = hint && hint.event_id;\n\n    this._process(\n      this.eventFromException(exception, hint)\n        .then(event => this._captureEvent(event, hint, scope))\n        .then(result => {\n          eventId = result;\n        }),\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureMessage(\n    message: ParameterizedString,\n    // eslint-disable-next-line deprecation/deprecation\n    level?: Severity | SeverityLevel,\n    hint?: EventHint,\n    scope?: Scope,\n  ): string | undefined {\n    let eventId: string | undefined = hint && hint.event_id;\n\n    const eventMessage = isParameterizedString(message) ? message : String(message);\n\n    const promisedEvent = isPrimitive(message)\n      ? this.eventFromMessage(eventMessage, level, hint)\n      : this.eventFromException(message, hint);\n\n    this._process(\n      promisedEvent\n        .then(event => this._captureEvent(event, hint, scope))\n        .then(result => {\n          eventId = result;\n        }),\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n    // ensure we haven't captured this very object before\n    if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n      DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n      return;\n    }\n\n    let eventId: string | undefined = hint && hint.event_id;\n\n    const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n    const capturedSpanScope: Scope | undefined = sdkProcessingMetadata.capturedSpanScope;\n\n    this._process(\n      this._captureEvent(event, hint, capturedSpanScope || scope).then(result => {\n        eventId = result;\n      }),\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureSession(session: Session): void {\n    if (!(typeof session.release === 'string')) {\n      DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n    } else {\n      this.sendSession(session);\n      // After sending, we set init false to indicate it's not the first occurrence\n      updateSession(session, { init: false });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getDsn(): DsnComponents | undefined {\n    return this._dsn;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getOptions(): O {\n    return this._options;\n  }\n\n  /**\n   * @see SdkMetadata in @sentry/types\n   *\n   * @return The metadata of the SDK\n   */\n  public getSdkMetadata(): SdkMetadata | undefined {\n    return this._options._metadata;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getTransport(): Transport | undefined {\n    return this._transport;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public flush(timeout?: number): PromiseLike<boolean> {\n    const transport = this._transport;\n    if (transport) {\n      if (this.metricsAggregator) {\n        this.metricsAggregator.flush();\n      }\n      return this._isClientDoneProcessing(timeout).then(clientFinished => {\n        return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n      });\n    } else {\n      return resolvedSyncPromise(true);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public close(timeout?: number): PromiseLike<boolean> {\n    return this.flush(timeout).then(result => {\n      this.getOptions().enabled = false;\n      if (this.metricsAggregator) {\n        this.metricsAggregator.close();\n      }\n      return result;\n    });\n  }\n\n  /** Get all installed event processors. */\n  public getEventProcessors(): EventProcessor[] {\n    return this._eventProcessors;\n  }\n\n  /** @inheritDoc */\n  public addEventProcessor(eventProcessor: EventProcessor): void {\n    this._eventProcessors.push(eventProcessor);\n  }\n\n  /**\n   * This is an internal function to setup all integrations that should run on the client.\n   * @deprecated Use `client.init()` instead.\n   */\n  public setupIntegrations(forceInitialize?: boolean): void {\n    if ((forceInitialize && !this._integrationsInitialized) || (this._isEnabled() && !this._integrationsInitialized)) {\n      this._setupIntegrations();\n    }\n  }\n\n  /** @inheritdoc */\n  public init(): void {\n    if (this._isEnabled()) {\n      this._setupIntegrations();\n    }\n  }\n\n  /**\n   * Gets an installed integration by its `id`.\n   *\n   * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n   * @deprecated Use `getIntegrationByName()` instead.\n   */\n  public getIntegrationById(integrationId: string): Integration | undefined {\n    return this.getIntegrationByName(integrationId);\n  }\n\n  /**\n   * Gets an installed integration by its name.\n   *\n   * @returns The installed integration or `undefined` if no integration with that `name` was installed.\n   */\n  public getIntegrationByName<T extends Integration = Integration>(integrationName: string): T | undefined {\n    return this._integrations[integrationName] as T | undefined;\n  }\n\n  /**\n   * Returns the client's instance of the given integration class, it any.\n   * @deprecated Use `getIntegrationByName()` instead.\n   */\n  public getIntegration<T extends Integration>(integration: IntegrationClass<T>): T | null {\n    try {\n      return (this._integrations[integration.id] as T) || null;\n    } catch (_oO) {\n      DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n      return null;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addIntegration(integration: Integration): void {\n    const isAlreadyInstalled = this._integrations[integration.name];\n\n    // This hook takes care of only installing if not already installed\n    setupIntegration(this, integration, this._integrations);\n    // Here we need to check manually to make sure to not run this multiple times\n    if (!isAlreadyInstalled) {\n      afterSetupIntegrations(this, [integration]);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public sendEvent(event: Event, hint: EventHint = {}): void {\n    this.emit('beforeSendEvent', event, hint);\n\n    let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n    for (const attachment of hint.attachments || []) {\n      env = addItemToEnvelope(\n        env,\n        createAttachmentEnvelopeItem(\n          attachment,\n          this._options.transportOptions && this._options.transportOptions.textEncoder,\n        ),\n      );\n    }\n\n    const promise = this._sendEnvelope(env);\n    if (promise) {\n      promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public sendSession(session: Session | SessionAggregates): void {\n    const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n    // _sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this._sendEnvelope(env);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public recordDroppedEvent(reason: EventDropReason, category: DataCategory, eventOrCount?: Event | number): void {\n    if (this._options.sendClientReports) {\n      // TODO v9: We do not need the `event` passed as third argument anymore, and can possibly remove this overload\n      // If event is passed as third argument, we assume this is a count of 1\n      const count = typeof eventOrCount === 'number' ? eventOrCount : 1;\n\n      // We want to track each category (error, transaction, session, replay_event) separately\n      // but still keep the distinction between different type of outcomes.\n      // We could use nested maps, but it's much easier to read and type this way.\n      // A correct type for map-based implementation if we want to go that route\n      // would be `Partial<Record<SentryRequestType, Partial<Record<Outcome, number>>>>`\n      // With typescript 4.1 we could even use template literal types\n      const key = `${reason}:${category}`;\n      DEBUG_BUILD && logger.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n      this._outcomes[key] = (this._outcomes[key] || 0) + count;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureAggregateMetrics(metricBucketItems: Array<MetricBucketItem>): void {\n    DEBUG_BUILD && logger.log(`Flushing aggregated metrics, number of metrics: ${metricBucketItems.length}`);\n    const metricsEnvelope = createMetricEnvelope(\n      metricBucketItems,\n      this._dsn,\n      this._options._metadata,\n      this._options.tunnel,\n    );\n\n    // _sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this._sendEnvelope(metricsEnvelope);\n  }\n\n  // Keep on() & emit() signatures in sync with types' client.ts interface\n  /* eslint-disable @typescript-eslint/unified-signatures */\n\n  /** @inheritdoc */\n  public on(hook: 'startTransaction', callback: (transaction: Transaction) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'finishTransaction', callback: (transaction: Transaction) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint) => void): void;\n\n  /** @inheritdoc */\n  public on(\n    hook: 'afterSendEvent',\n    callback: (event: Event, sendResponse: TransportMakeRequestResponse | void) => void,\n  ): void;\n\n  /** @inheritdoc */\n  public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'otelSpanEnd', callback: (otelSpan: unknown, mutableOptions: { drop: boolean }) => void): void;\n\n  /** @inheritdoc */\n  public on(\n    hook: 'beforeSendFeedback',\n    callback: (feedback: FeedbackEvent, options?: { includeReplay: boolean }) => void,\n  ): void;\n\n  /** @inheritdoc */\n  public on(hook: 'startPageLoadSpan', callback: (options: StartSpanOptions) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'startNavigationSpan', callback: (options: StartSpanOptions) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: string, callback: unknown): void {\n    if (!this._hooks[hook]) {\n      this._hooks[hook] = [];\n    }\n\n    // @ts-expect-error We assue the types are correct\n    this._hooks[hook].push(callback);\n  }\n\n  /** @inheritdoc */\n  public emit(hook: 'startTransaction', transaction: Transaction): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'finishTransaction', transaction: Transaction): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse | void): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'createDsc', dsc: DynamicSamplingContext): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'otelSpanEnd', otelSpan: unknown, mutableOptions: { drop: boolean }): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { includeReplay: boolean }): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'startPageLoadSpan', options: StartSpanOptions): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'startNavigationSpan', options: StartSpanOptions): void;\n\n  /** @inheritdoc */\n  public emit(hook: string, ...rest: unknown[]): void {\n    if (this._hooks[hook]) {\n      this._hooks[hook].forEach(callback => callback(...rest));\n    }\n  }\n\n  /* eslint-enable @typescript-eslint/unified-signatures */\n\n  /** Setup integrations for this client. */\n  protected _setupIntegrations(): void {\n    const { integrations } = this._options;\n    this._integrations = setupIntegrations(this, integrations);\n    afterSetupIntegrations(this, integrations);\n\n    // TODO v8: We don't need this flag anymore\n    this._integrationsInitialized = true;\n  }\n\n  /** Updates existing session based on the provided event */\n  protected _updateSessionFromEvent(session: Session, event: Event): void {\n    let crashed = false;\n    let errored = false;\n    const exceptions = event.exception && event.exception.values;\n\n    if (exceptions) {\n      errored = true;\n\n      for (const ex of exceptions) {\n        const mechanism = ex.mechanism;\n        if (mechanism && mechanism.handled === false) {\n          crashed = true;\n          break;\n        }\n      }\n    }\n\n    // A session is updated and that session update is sent in only one of the two following scenarios:\n    // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n    // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n    const sessionNonTerminal = session.status === 'ok';\n    const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n    if (shouldUpdateAndSend) {\n      updateSession(session, {\n        ...(crashed && { status: 'crashed' }),\n        errors: session.errors || Number(errored || crashed),\n      });\n      this.captureSession(session);\n    }\n  }\n\n  /**\n   * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n   * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n   * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n   * `false` otherwise\n   */\n  protected _isClientDoneProcessing(timeout?: number): PromiseLike<boolean> {\n    return new SyncPromise(resolve => {\n      let ticked: number = 0;\n      const tick: number = 1;\n\n      const interval = setInterval(() => {\n        if (this._numProcessing == 0) {\n          clearInterval(interval);\n          resolve(true);\n        } else {\n          ticked += tick;\n          if (timeout && ticked >= timeout) {\n            clearInterval(interval);\n            resolve(false);\n          }\n        }\n      }, tick);\n    });\n  }\n\n  /** Determines whether this SDK is enabled and a transport is present. */\n  protected _isEnabled(): boolean {\n    return this.getOptions().enabled !== false && this._transport !== undefined;\n  }\n\n  /**\n   * Adds common information to events.\n   *\n   * The information includes release and environment from `options`,\n   * breadcrumbs and context (extra, tags and user) from the scope.\n   *\n   * Information that is already present in the event is never overwritten. For\n   * nested objects, such as the context, keys are merged.\n   *\n   * @param event The original event.\n   * @param hint May contain additional information about the original exception.\n   * @param scope A scope containing event metadata.\n   * @returns A new event with more information.\n   */\n  protected _prepareEvent(\n    event: Event,\n    hint: EventHint,\n    scope?: Scope,\n    isolationScope = getIsolationScope(),\n  ): PromiseLike<Event | null> {\n    const options = this.getOptions();\n    const integrations = Object.keys(this._integrations);\n    if (!hint.integrations && integrations.length > 0) {\n      hint.integrations = integrations;\n    }\n\n    this.emit('preprocessEvent', event, hint);\n\n    return prepareEvent(options, event, hint, scope, this, isolationScope).then(evt => {\n      if (evt === null) {\n        return evt;\n      }\n\n      const propagationContext = {\n        ...isolationScope.getPropagationContext(),\n        ...(scope ? scope.getPropagationContext() : undefined),\n      };\n\n      const trace = evt.contexts && evt.contexts.trace;\n      if (!trace && propagationContext) {\n        const { traceId: trace_id, spanId, parentSpanId, dsc } = propagationContext;\n        evt.contexts = {\n          trace: {\n            trace_id,\n            span_id: spanId,\n            parent_span_id: parentSpanId,\n          },\n          ...evt.contexts,\n        };\n\n        const dynamicSamplingContext = dsc ? dsc : getDynamicSamplingContextFromClient(trace_id, this, scope);\n\n        evt.sdkProcessingMetadata = {\n          dynamicSamplingContext,\n          ...evt.sdkProcessingMetadata,\n        };\n      }\n      return evt;\n    });\n  }\n\n  /**\n   * Processes the event and logs an error in case of rejection\n   * @param event\n   * @param hint\n   * @param scope\n   */\n  protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike<string | undefined> {\n    return this._processEvent(event, hint, scope).then(\n      finalEvent => {\n        return finalEvent.event_id;\n      },\n      reason => {\n        if (DEBUG_BUILD) {\n          // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n          // control flow, log just the message (no stack) as a log-level log.\n          const sentryError = reason as SentryError;\n          if (sentryError.logLevel === 'log') {\n            logger.log(sentryError.message);\n          } else {\n            logger.warn(sentryError);\n          }\n        }\n        return undefined;\n      },\n    );\n  }\n\n  /**\n   * Processes an event (either error or message) and sends it to Sentry.\n   *\n   * This also adds breadcrumbs and context information to the event. However,\n   * platform specific meta data (such as the User's IP address) must be added\n   * by the SDK implementor.\n   *\n   *\n   * @param event The event to send to Sentry.\n   * @param hint May contain additional information about the original exception.\n   * @param scope A scope containing event metadata.\n   * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n   */\n  protected _processEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike<Event> {\n    const options = this.getOptions();\n    const { sampleRate } = options;\n\n    const isTransaction = isTransactionEvent(event);\n    const isError = isErrorEvent(event);\n    const eventType = event.type || 'error';\n    const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n    // 1.0 === 100% events are sent\n    // 0.0 === 0% events are sent\n    // Sampling for transaction happens somewhere else\n    if (isError && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n      this.recordDroppedEvent('sample_rate', 'error', event);\n      return rejectedSyncPromise(\n        new SentryError(\n          `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n          'log',\n        ),\n      );\n    }\n\n    const dataCategory: DataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n    const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n    const capturedSpanIsolationScope: Scope | undefined = sdkProcessingMetadata.capturedSpanIsolationScope;\n\n    return this._prepareEvent(event, hint, scope, capturedSpanIsolationScope)\n      .then(prepared => {\n        if (prepared === null) {\n          this.recordDroppedEvent('event_processor', dataCategory, event);\n          throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n        }\n\n        const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n        if (isInternalException) {\n          return prepared;\n        }\n\n        const result = processBeforeSend(options, prepared, hint);\n        return _validateBeforeSendResult(result, beforeSendLabel);\n      })\n      .then(processedEvent => {\n        if (processedEvent === null) {\n          this.recordDroppedEvent('before_send', dataCategory, event);\n          if (isTransaction) {\n            const spans = event.spans || [];\n            // the transaction itself counts as one span, plus all the child spans that are added\n            const spanCount = 1 + spans.length;\n            this.recordDroppedEvent('before_send', 'span', spanCount);\n          }\n          throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n        }\n\n        const session = scope && scope.getSession();\n        if (!isTransaction && session) {\n          this._updateSessionFromEvent(session, processedEvent);\n        }\n\n        if (isTransaction) {\n          const spanCountBefore =\n            (processedEvent.sdkProcessingMetadata && processedEvent.sdkProcessingMetadata.spanCountBeforeProcessing) ||\n            0;\n          const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n          const droppedSpanCount = spanCountBefore - spanCountAfter;\n          if (droppedSpanCount > 0) {\n            this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n          }\n        }\n\n        // None of the Sentry built event processor will update transaction name,\n        // so if the transaction name has been changed by an event processor, we know\n        // it has to come from custom event processor added by a user\n        const transactionInfo = processedEvent.transaction_info;\n        if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n          const source = 'custom';\n          processedEvent.transaction_info = {\n            ...transactionInfo,\n            source,\n          };\n        }\n\n        this.sendEvent(processedEvent, hint);\n        return processedEvent;\n      })\n      .then(null, reason => {\n        if (reason instanceof SentryError) {\n          throw reason;\n        }\n\n        this.captureException(reason, {\n          data: {\n            __sentry__: true,\n          },\n          originalException: reason,\n        });\n        throw new SentryError(\n          `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n        );\n      });\n  }\n\n  /**\n   * Occupies the client with processing and event\n   */\n  protected _process<T>(promise: PromiseLike<T>): void {\n    this._numProcessing++;\n    void promise.then(\n      value => {\n        this._numProcessing--;\n        return value;\n      },\n      reason => {\n        this._numProcessing--;\n        return reason;\n      },\n    );\n  }\n\n  /**\n   * @inheritdoc\n   */\n  protected _sendEnvelope(envelope: Envelope): PromiseLike<void | TransportMakeRequestResponse> | void {\n    this.emit('beforeEnvelope', envelope);\n\n    if (this._isEnabled() && this._transport) {\n      return this._transport.send(envelope).then(null, reason => {\n        DEBUG_BUILD && logger.error('Error while sending event:', reason);\n      });\n    } else {\n      DEBUG_BUILD && logger.error('Transport disabled');\n    }\n  }\n\n  /**\n   * Clears outcomes on this client and returns them.\n   */\n  protected _clearOutcomes(): Outcome[] {\n    const outcomes = this._outcomes;\n    this._outcomes = {};\n    return Object.keys(outcomes).map(key => {\n      const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n      return {\n        reason,\n        category,\n        quantity: outcomes[key],\n      };\n    });\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n  public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike<Event>;\n\n  /**\n   * @inheritDoc\n   */\n  public abstract eventFromMessage(\n    _message: ParameterizedString,\n    // eslint-disable-next-line deprecation/deprecation\n    _level?: Severity | SeverityLevel,\n    _hint?: EventHint,\n  ): PromiseLike<Event>;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n  beforeSendResult: PromiseLike<Event | null> | Event | null,\n  beforeSendLabel: string,\n): PromiseLike<Event | null> | Event | null {\n  const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n  if (isThenable(beforeSendResult)) {\n    return beforeSendResult.then(\n      event => {\n        if (!isPlainObject(event) && event !== null) {\n          throw new SentryError(invalidValueError);\n        }\n        return event;\n      },\n      e => {\n        throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n      },\n    );\n  } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n    throw new SentryError(invalidValueError);\n  }\n  return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n  options: ClientOptions,\n  event: Event,\n  hint: EventHint,\n): PromiseLike<Event | null> | Event | null {\n  const { beforeSend, beforeSendTransaction } = options;\n\n  if (isErrorEvent(event) && beforeSend) {\n    return beforeSend(event, hint);\n  }\n\n  if (isTransactionEvent(event) && beforeSendTransaction) {\n    if (event.spans) {\n      // We store the # of spans before processing in SDK metadata,\n      // so we can compare it afterwards to determine how many spans were dropped\n      const spanCountBefore = event.spans.length;\n      event.sdkProcessingMetadata = {\n        ...event.sdkProcessingMetadata,\n        spanCountBeforeProcessing: spanCountBefore,\n      };\n    }\n    return beforeSendTransaction(event, hint);\n  }\n\n  return event;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n  return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\n  return event.type === 'transaction';\n}\n\n/**\n * Add an event processor to the current client.\n * This event processor will run for all events processed by this client.\n */\nexport function addEventProcessor(callback: EventProcessor): void {\n  const client = getClient();\n\n  if (!client || !client.addEventProcessor) {\n    return;\n  }\n\n  client.addEventProcessor(callback);\n}\n", "import type { Client, ClientOptions } from '@sentry/types';\nimport { consoleSandbox, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { getCurrentScope } from './exports';\nimport { getCurrentHub } from './hub';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass<F extends Client, O extends ClientOptions> = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind<F extends Client, O extends ClientOptions>(\n  clientClass: ClientClass<F, O>,\n  options: O,\n): void {\n  if (options.debug === true) {\n    if (DEBUG_BUILD) {\n      logger.enable();\n    } else {\n      // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n      consoleSandbox(() => {\n        // eslint-disable-next-line no-console\n        console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n      });\n    }\n  }\n  const scope = getCurrentScope();\n  scope.update(options.initialScope);\n\n  const client = new clientClass(options);\n  setCurrentClient(client);\n  initializeClient(client);\n}\n\n/**\n * Make the given client the current client.\n */\nexport function setCurrentClient(client: Client): void {\n  // eslint-disable-next-line deprecation/deprecation\n  const hub = getCurrentHub();\n  // eslint-disable-next-line deprecation/deprecation\n  const top = hub.getStackTop();\n  top.client = client;\n  top.scope.setClient(client);\n}\n\n/**\n * Initialize the client for the current scope.\n * Make sure to call this after `setCurrentClient()`.\n */\nfunction initializeClient(client: Client): void {\n  if (client.init) {\n    client.init();\n    // TODO v8: Remove this fallback\n    // eslint-disable-next-line deprecation/deprecation\n  } else if (client.setupIntegrations) {\n    // eslint-disable-next-line deprecation/deprecation\n    client.setupIntegrations();\n  }\n}\n", "import type {\n  Envelope,\n  EnvelopeItem,\n  EnvelopeItemType,\n  Event,\n  EventDropReason,\n  EventItem,\n  InternalBaseTransportOptions,\n  Transport,\n  TransportMakeRequestResponse,\n  TransportRequestExecutor,\n} from '@sentry/types';\nimport type { PromiseBuffer, RateLimits } from '@sentry/utils';\nimport {\n  SentryError,\n  createEnvelope,\n  envelopeItemTypeToDataCategory,\n  forEachEnvelopeItem,\n  isRateLimited,\n  logger,\n  makePromiseBuffer,\n  resolvedSyncPromise,\n  serializeEnvelope,\n  updateRateLimits,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n  options: InternalBaseTransportOptions,\n  makeRequest: TransportRequestExecutor,\n  buffer: PromiseBuffer<void | TransportMakeRequestResponse> = makePromiseBuffer(\n    options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n  ),\n): Transport {\n  let rateLimits: RateLimits = {};\n  const flush = (timeout?: number): PromiseLike<boolean> => buffer.drain(timeout);\n\n  function send(envelope: Envelope): PromiseLike<void | TransportMakeRequestResponse> {\n    const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n    // Drop rate limited items from envelope\n    forEachEnvelopeItem(envelope, (item, type) => {\n      const dataCategory = envelopeItemTypeToDataCategory(type);\n      if (isRateLimited(rateLimits, dataCategory)) {\n        const event: Event | undefined = getEventForEnvelopeItem(item, type);\n        options.recordDroppedEvent('ratelimit_backoff', dataCategory, event);\n      } else {\n        filteredEnvelopeItems.push(item);\n      }\n    });\n\n    // Skip sending if envelope is empty after filtering out rate limited events\n    if (filteredEnvelopeItems.length === 0) {\n      return resolvedSyncPromise();\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n    // Creates client report for each item in an envelope\n    const recordEnvelopeLoss = (reason: EventDropReason): void => {\n      forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n        const event: Event | undefined = getEventForEnvelopeItem(item, type);\n        options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n      });\n    };\n\n    const requestTask = (): PromiseLike<void | TransportMakeRequestResponse> =>\n      makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n        response => {\n          // We don't want to throw on NOK responses, but we want to at least log them\n          if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n            DEBUG_BUILD && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n          }\n\n          rateLimits = updateRateLimits(rateLimits, response);\n          return response;\n        },\n        error => {\n          recordEnvelopeLoss('network_error');\n          throw error;\n        },\n      );\n\n    return buffer.add(requestTask).then(\n      result => result,\n      error => {\n        if (error instanceof SentryError) {\n          DEBUG_BUILD && logger.error('Skipped sending event because buffer is full.');\n          recordEnvelopeLoss('queue_overflow');\n          return resolvedSyncPromise();\n        } else {\n          throw error;\n        }\n      },\n    );\n  }\n\n  // We use this to identifify if the transport is the base transport\n  // TODO (v8): Remove this again as we'll no longer need it\n  send.__sentry__baseTransport__ = true;\n\n  return {\n    send,\n    flush,\n  };\n}\n\nfunction getEventForEnvelopeItem(item: Envelope[1][number], type: EnvelopeItemType): Event | undefined {\n  if (type !== 'event' && type !== 'transaction') {\n    return undefined;\n  }\n\n  return Array.isArray(item) ? (item as EventItem)[1] : undefined;\n}\n", "import type { Options } from '@sentry/types';\nimport { SDK_VERSION } from '../version';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nexport function applySdkMetadata(options: Options, name: string, names = [name], source = 'npm'): void {\n  const metadata = options._metadata || {};\n\n  if (!metadata.sdk) {\n    metadata.sdk = {\n      name: `sentry.javascript.${name}`,\n      packages: names.map(name => ({\n        name: `${source}:@sentry/${name}`,\n        version: SDK_VERSION,\n      })),\n      version: SDK_VERSION,\n    };\n  }\n\n  options._metadata = metadata;\n}\n", "import type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { getEventDescription, logger, stringMatchesSomePattern } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [\n  /^Script error\\.?$/,\n  /^Javascript error: Script error\\.? on line 0$/,\n  /^ResizeObserver loop completed with undelivered notifications.$/,\n  /^Cannot redefine property: googletag$/,\n];\n\nconst DEFAULT_IGNORE_TRANSACTIONS = [\n  /^.*\\/healthcheck$/,\n  /^.*\\/healthy$/,\n  /^.*\\/live$/,\n  /^.*\\/ready$/,\n  /^.*\\/heartbeat$/,\n  /^.*\\/health$/,\n  /^.*\\/healthz$/,\n];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n  allowUrls: Array<string | RegExp>;\n  denyUrls: Array<string | RegExp>;\n  ignoreErrors: Array<string | RegExp>;\n  ignoreTransactions: Array<string | RegExp>;\n  ignoreInternal: boolean;\n  disableErrorDefaults: boolean;\n  disableTransactionDefaults: boolean;\n}\n\nconst INTEGRATION_NAME = 'InboundFilters';\nconst _inboundFiltersIntegration = ((options: Partial<InboundFiltersOptions> = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    processEvent(event, _hint, client) {\n      const clientOptions = client.getOptions();\n      const mergedOptions = _mergeOptions(options, clientOptions);\n      return _shouldDropEvent(event, mergedOptions) ? null : event;\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const inboundFiltersIntegration = defineIntegration(_inboundFiltersIntegration);\n\n/**\n * Inbound filters configurable by the user.\n * @deprecated Use `inboundFiltersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const InboundFilters = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  inboundFiltersIntegration,\n) as IntegrationClass<Integration & { preprocessEvent: (event: Event, hint: EventHint, client: Client) => void }> & {\n  new (\n    options?: Partial<{\n      allowUrls: Array<string | RegExp>;\n      denyUrls: Array<string | RegExp>;\n      ignoreErrors: Array<string | RegExp>;\n      ignoreTransactions: Array<string | RegExp>;\n      ignoreInternal: boolean;\n      disableErrorDefaults: boolean;\n      disableTransactionDefaults: boolean;\n    }>,\n  ): Integration;\n};\n\nfunction _mergeOptions(\n  internalOptions: Partial<InboundFiltersOptions> = {},\n  clientOptions: Partial<InboundFiltersOptions> = {},\n): Partial<InboundFiltersOptions> {\n  return {\n    allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n    denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n    ignoreErrors: [\n      ...(internalOptions.ignoreErrors || []),\n      ...(clientOptions.ignoreErrors || []),\n      ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n    ],\n    ignoreTransactions: [\n      ...(internalOptions.ignoreTransactions || []),\n      ...(clientOptions.ignoreTransactions || []),\n      ...(internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS),\n    ],\n    ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n  };\n}\n\nfunction _shouldDropEvent(event: Event, options: Partial<InboundFiltersOptions>): boolean {\n  if (options.ignoreInternal && _isSentryError(event)) {\n    DEBUG_BUILD &&\n      logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n    return true;\n  }\n  if (_isIgnoredError(event, options.ignoreErrors)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n      );\n    return true;\n  }\n  if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n      );\n    return true;\n  }\n  if (_isDeniedUrl(event, options.denyUrls)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n          event,\n        )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n      );\n    return true;\n  }\n  if (!_isAllowedUrl(event, options.allowUrls)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n          event,\n        )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n      );\n    return true;\n  }\n  return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array<string | RegExp>): boolean {\n  // If event.type, this is not an error\n  if (event.type || !ignoreErrors || !ignoreErrors.length) {\n    return false;\n  }\n\n  return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array<string | RegExp>): boolean {\n  if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n    return false;\n  }\n\n  const name = event.transaction;\n  return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array<string | RegExp>): boolean {\n  // TODO: Use Glob instead?\n  if (!denyUrls || !denyUrls.length) {\n    return false;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array<string | RegExp>): boolean {\n  // TODO: Use Glob instead?\n  if (!allowUrls || !allowUrls.length) {\n    return true;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n  const possibleMessages: string[] = [];\n\n  if (event.message) {\n    possibleMessages.push(event.message);\n  }\n\n  let lastException;\n  try {\n    // @ts-expect-error Try catching to save bundle size\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    lastException = event.exception.values[event.exception.values.length - 1];\n  } catch (e) {\n    // try catching to save bundle size checking existence of variables\n  }\n\n  if (lastException) {\n    if (lastException.value) {\n      possibleMessages.push(lastException.value);\n      if (lastException.type) {\n        possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n      }\n    }\n  }\n\n  if (DEBUG_BUILD && possibleMessages.length === 0) {\n    logger.error(`Could not extract message for event ${getEventDescription(event)}`);\n  }\n\n  return possibleMessages;\n}\n\nfunction _isSentryError(event: Event): boolean {\n  try {\n    // @ts-expect-error can't be a sentry error if undefined\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    return event.exception.values[0].type === 'SentryError';\n  } catch (e) {\n    // ignore\n  }\n  return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n  for (let i = frames.length - 1; i >= 0; i--) {\n    const frame = frames[i];\n\n    if (frame && frame.filename !== '<anonymous>' && frame.filename !== '[native code]') {\n      return frame.filename || null;\n    }\n  }\n\n  return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n  try {\n    let frames;\n    try {\n      // @ts-expect-error we only care about frames if the whole thing here is defined\n      frames = event.exception.values[0].stacktrace.frames;\n    } catch (e) {\n      // ignore\n    }\n    return frames ? _getLastValidUrl(frames) : null;\n  } catch (oO) {\n    DEBUG_BUILD && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n    return null;\n  }\n}\n", "import type { Client, Integration, IntegrationClass, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\nimport { getClient } from '../exports';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\nlet originalFunctionToString: () => void;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap<Client, boolean>();\n\nconst _functionToStringIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      originalFunctionToString = Function.prototype.toString;\n\n      // intrinsics (like Function.prototype) might be immutable in some environments\n      // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n      try {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n          const originalFunction = getOriginalFunction(this);\n          const context =\n            SETUP_CLIENTS.has(getClient() as Client) && originalFunction !== undefined ? originalFunction : this;\n          return originalFunctionToString.apply(context, args);\n        };\n      } catch {\n        // ignore errors here, just don't patch this\n      }\n    },\n    setup(client) {\n      SETUP_CLIENTS.set(client, true);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n *   integrations: [\n *     functionToStringIntegration(),\n *   ],\n * });\n * ```\n */\nexport const functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * @deprecated Use `functionToStringIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const FunctionToString = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  functionToStringIntegration,\n) as IntegrationClass<Integration & { setupOnce: () => void }>;\n\n// eslint-disable-next-line deprecation/deprecation\nexport type FunctionToString = typeof FunctionToString;\n", "import type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport { applyAggregateErrorsToEvent, exceptionFromError } from '@sentry/utils';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\ninterface LinkedErrorsOptions {\n  key?: string;\n  limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n  const limit = options.limit || DEFAULT_LIMIT;\n  const key = options.key || DEFAULT_KEY;\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    preprocessEvent(event, hint, client) {\n      const options = client.getOptions();\n\n      applyAggregateErrorsToEvent(\n        exceptionFromError,\n        options.stackParser,\n        options.maxValueLength,\n        key,\n        limit,\n        event,\n        hint,\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\n/**\n * Adds SDK info to an event.\n * @deprecated Use `linkedErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration) as IntegrationClass<\n  Integration & { preprocessEvent: (event: Event, hint: EventHint, client: Client) => void }\n> & { new (options?: { key?: string; limit?: number }): Integration };\n", "export type { ClientClass } from './sdk';\nexport type { AsyncContextStrategy, Carrier, Layer, RunWithAsyncContextOptions } from './hub';\nexport type { OfflineStore, OfflineTransportOptions } from './transports/offline';\nexport type { ServerRuntimeClientOptions } from './server-runtime-client';\nexport type { RequestDataIntegrationOptions } from './integrations/requestdata';\nexport type { IntegrationIndex } from './integration';\n\nexport * from './tracing';\nexport * from './semanticAttributes';\nexport { createEventEnvelope, createSessionEnvelope } from './envelope';\nexport {\n  addBreadcrumb,\n  captureCheckIn,\n  withMonitor,\n  captureException,\n  captureEvent,\n  captureMessage,\n  close,\n  // eslint-disable-next-line deprecation/deprecation\n  configureScope,\n  flush,\n  lastEventId,\n  // eslint-disable-next-line deprecation/deprecation\n  startTransaction,\n  setContext,\n  setExtra,\n  setExtras,\n  setTag,\n  setTags,\n  setUser,\n  withScope,\n  withIsolationScope,\n  getClient,\n  isInitialized,\n  getCurrentScope,\n  startSession,\n  endSession,\n  captureSession,\n  withActiveSpan,\n} from './exports';\nexport {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub,\n  getIsolationScope,\n  getHubFromCarrier,\n  // eslint-disable-next-line deprecation/deprecation\n  Hub,\n  // eslint-disable-next-line deprecation/deprecation\n  makeMain,\n  getMainCarrier,\n  runWithAsyncContext,\n  setHubOnCarrier,\n  ensureHubOnCarrier,\n  setAsyncContextStrategy,\n} from './hub';\nexport { makeSession, closeSession, updateSession } from './session';\nexport { SessionFlusher } from './sessionflusher';\nexport { Scope, getGlobalScope, setGlobalScope } from './scope';\nexport {\n  notifyEventProcessors,\n  // eslint-disable-next-line deprecation/deprecation\n  addGlobalEventProcessor,\n} from './eventProcessors';\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint } from './api';\nexport { BaseClient, addEventProcessor } from './baseclient';\nexport { ServerRuntimeClient } from './server-runtime-client';\nexport { initAndBind, setCurrentClient } from './sdk';\nexport { createTransport } from './transports/base';\nexport { makeOfflineTransport } from './transports/offline';\nexport { makeMultiplexedTransport } from './transports/multiplexed';\nexport { SDK_VERSION } from './version';\nexport {\n  getIntegrationsToSetup,\n  addIntegration,\n  defineIntegration,\n  // eslint-disable-next-line deprecation/deprecation\n  convertIntegrationFnToClass,\n} from './integration';\nexport { applyScopeDataToEvent, mergeScopeData } from './utils/applyScopeDataToEvent';\nexport { prepareEvent } from './utils/prepareEvent';\nexport { createCheckInEnvelope } from './checkin';\nexport { createSpanEnvelope } from './span';\nexport { hasTracingEnabled } from './utils/hasTracingEnabled';\nexport { isSentryRequestUrl } from './utils/isSentryRequestUrl';\nexport { handleCallbackErrors } from './utils/handleCallbackErrors';\nexport { parameterize } from './utils/parameterize';\nexport { spanToTraceHeader, spanToJSON, spanIsSampled, spanToTraceContext } from './utils/spanUtils';\nexport { getRootSpan } from './utils/getRootSpan';\nexport { applySdkMetadata } from './utils/sdkMetadata';\nexport { DEFAULT_ENVIRONMENT } from './constants';\n/* eslint-disable deprecation/deprecation */\nexport { ModuleMetadata } from './integrations/metadata';\nexport { RequestData } from './integrations/requestdata';\nexport { InboundFilters } from './integrations/inboundfilters';\nexport { FunctionToString } from './integrations/functiontostring';\nexport { LinkedErrors } from './integrations/linkederrors';\n/* eslint-enable deprecation/deprecation */\nimport * as INTEGRATIONS from './integrations';\nexport { functionToStringIntegration } from './integrations/functiontostring';\nexport { inboundFiltersIntegration } from './integrations/inboundfilters';\nexport { linkedErrorsIntegration } from './integrations/linkederrors';\nexport { moduleMetadataIntegration } from './integrations/metadata';\nexport { requestDataIntegration } from './integrations/requestdata';\nexport { metrics } from './metrics/exports';\n\n/** @deprecated Import the integration function directly, e.g. `inboundFiltersIntegration()` instead of `new Integrations.InboundFilter(). */\nconst Integrations = INTEGRATIONS;\n\n// eslint-disable-next-line deprecation/deprecation\nexport { Integrations };\n", "import type { browserTracingIntegration } from '@sentry-internal/tracing';\nimport { BrowserTracing } from '@sentry-internal/tracing';\nimport { captureException, withScope } from '@sentry/core';\nimport type { DsnLike, Integration, Mechanism, WrappedFunction } from '@sentry/types';\nimport {\n  GLOBAL_OBJ,\n  addExceptionMechanism,\n  addExceptionTypeValue,\n  addNonEnumerableProperty,\n  getOriginalFunction,\n  markFunctionWrapped,\n} from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n  return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n  // onerror should trigger before setTimeout\n  ignoreOnError++;\n  setTimeout(() => {\n    ignoreOnError--;\n  });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n  fn: WrappedFunction,\n  options: {\n    mechanism?: Mechanism;\n  } = {},\n  before?: WrappedFunction,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n  // for future readers what this does is wrap a function and then create\n  // a bi-directional wrapping between them.\n  //\n  // example: wrapped = wrap(original);\n  //  original.__sentry_wrapped__ -> wrapped\n  //  wrapped.__sentry_original__ -> original\n\n  if (typeof fn !== 'function') {\n    return fn;\n  }\n\n  try {\n    // if we're dealing with a function that was previously wrapped, return\n    // the original wrapper.\n    const wrapper = fn.__sentry_wrapped__;\n    if (wrapper) {\n      if (typeof wrapper === 'function') {\n        return wrapper;\n      } else {\n        // If we find that the `__sentry_wrapped__` function is not a function at the time of accessing it, it means\n        // that something messed with it. In that case we want to return the originally passed function.\n        return fn;\n      }\n    }\n\n    // We don't wanna wrap it twice\n    if (getOriginalFunction(fn)) {\n      return fn;\n    }\n  } catch (e) {\n    // Just accessing custom props in some Selenium environments\n    // can cause a \"Permission denied\" exception (see raven-js#495).\n    // Bail on wrapping and return the function as-is (defers to window.onerror).\n    return fn;\n  }\n\n  /* eslint-disable prefer-rest-params */\n  // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n  const sentryWrapped: WrappedFunction = function (this: unknown): void {\n    const args = Array.prototype.slice.call(arguments);\n\n    try {\n      if (before && typeof before === 'function') {\n        before.apply(this, arguments);\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n      const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n      // Attempt to invoke user-land function\n      // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n      //       means the sentry.javascript SDK caught an error invoking your application code. This\n      //       is expected behavior and NOT indicative of a bug with sentry.javascript.\n      return fn.apply(this, wrappedArguments);\n    } catch (ex) {\n      ignoreNextOnError();\n\n      withScope(scope => {\n        scope.addEventProcessor(event => {\n          if (options.mechanism) {\n            addExceptionTypeValue(event, undefined, undefined);\n            addExceptionMechanism(event, options.mechanism);\n          }\n\n          event.extra = {\n            ...event.extra,\n            arguments: args,\n          };\n\n          return event;\n        });\n\n        captureException(ex);\n      });\n\n      throw ex;\n    }\n  };\n  /* eslint-enable prefer-rest-params */\n\n  // Accessing some objects may throw\n  // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n  try {\n    for (const property in fn) {\n      if (Object.prototype.hasOwnProperty.call(fn, property)) {\n        sentryWrapped[property] = fn[property];\n      }\n    }\n  } catch (_oO) {} // eslint-disable-line no-empty\n\n  // Signal that this function has been wrapped/filled already\n  // for both debugging and to prevent it to being wrapped/filled twice\n  markFunctionWrapped(sentryWrapped, fn);\n\n  addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n  // Restore original function name (not all browsers allow that)\n  try {\n    const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n    if (descriptor.configurable) {\n      Object.defineProperty(sentryWrapped, 'name', {\n        get(): string {\n          return fn.name;\n        },\n      });\n    }\n    // eslint-disable-next-line no-empty\n  } catch (_oO) {}\n\n  return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n *\n * @deprecated This type will be removed in the next major version of the Sentry SDK. `showReportDialog` will still be around, however the `eventId` option will now be required.\n */\nexport interface ReportDialogOptions {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  [key: string]: any;\n  eventId?: string;\n  dsn?: DsnLike;\n  user?: {\n    email?: string;\n    name?: string;\n  };\n  lang?: string;\n  title?: string;\n  subtitle?: string;\n  subtitle2?: string;\n  labelName?: string;\n  labelEmail?: string;\n  labelComments?: string;\n  labelClose?: string;\n  labelSubmit?: string;\n  errorGeneric?: string;\n  errorFormEntry?: string;\n  successMessage?: string;\n  /** Callback after reportDialog showed up */\n  onLoad?(this: void): void;\n  /** Callback after reportDialog closed */\n  onClose?(this: void): void;\n}\n\n/**\n * This is a slim shim of `browserTracingIntegration` for the CDN bundles.\n * Since the actual functional integration uses a different code from `BrowserTracing`,\n * we want to avoid shipping both of them in the CDN bundles, as that would blow up the size.\n * Instead, we provide a functional integration with the same API, but the old implementation.\n * This means that it's not possible to register custom routing instrumentation, but that's OK for now.\n * We also don't expose the utilities for this anyhow in the CDN bundles.\n * For users that need custom routing in CDN bundles, they have to continue using `new BrowserTracing()` until v8.\n */\nexport function bundleBrowserTracingIntegration(\n  options: Parameters<typeof browserTracingIntegration>[0] = {},\n): Integration {\n  // Migrate some options from the old integration to the new one\n  // eslint-disable-next-line deprecation/deprecation\n  const opts: ConstructorParameters<typeof BrowserTracing>[0] = options;\n\n  if (typeof options.markBackgroundSpan === 'boolean') {\n    opts.markBackgroundTransactions = options.markBackgroundSpan;\n  }\n\n  if (typeof options.instrumentPageLoad === 'boolean') {\n    opts.startTransactionOnPageLoad = options.instrumentPageLoad;\n  }\n\n  if (typeof options.instrumentNavigation === 'boolean') {\n    opts.startTransactionOnLocationChange = options.instrumentNavigation;\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  return new BrowserTracing(opts);\n}\n", "declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n", "import { getClient } from '@sentry/core';\nimport type {\n  Event,\n  EventHint,\n  Exception,\n  ParameterizedString,\n  Severity,\n  SeverityLevel,\n  StackFrame,\n  StackParser,\n} from '@sentry/types';\nimport {\n  addExceptionMechanism,\n  addExceptionTypeValue,\n  extractExceptionKeysForMessage,\n  isDOMError,\n  isDOMException,\n  isError,\n  isErrorEvent,\n  isEvent,\n  isParameterizedString,\n  isPlainObject,\n  normalizeToSize,\n  resolvedSyncPromise,\n} from '@sentry/utils';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n  // Get the frames first since Opera can lose the stack if we touch anything else first\n  const frames = parseStackFrames(stackParser, ex);\n\n  const exception: Exception = {\n    type: ex && ex.name,\n    value: extractMessage(ex),\n  };\n\n  if (frames.length) {\n    exception.stacktrace = { frames };\n  }\n\n  if (exception.type === undefined && exception.value === '') {\n    exception.value = 'Unrecoverable error caught';\n  }\n\n  return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n  stackParser: StackParser,\n  exception: Record<string, unknown>,\n  syntheticException?: Error,\n  isUnhandledRejection?: boolean,\n): Event {\n  const client = getClient();\n  const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n  const event: Event = {\n    exception: {\n      values: [\n        {\n          type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n          value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n        },\n      ],\n    },\n    extra: {\n      __serialized__: normalizeToSize(exception, normalizeDepth),\n    },\n  };\n\n  if (syntheticException) {\n    const frames = parseStackFrames(stackParser, syntheticException);\n    if (frames.length) {\n      // event.exception.values[0] has been set above\n      (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n    }\n  }\n\n  return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n  return {\n    exception: {\n      values: [exceptionFromError(stackParser, ex)],\n    },\n  };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n  stackParser: StackParser,\n  ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n  // Access and store the stacktrace property before doing ANYTHING\n  // else to it because Opera is not very good at providing it\n  // reliably in other circumstances.\n  const stacktrace = ex.stacktrace || ex.stack || '';\n\n  const popSize = getPopSize(ex);\n\n  try {\n    return stackParser(stacktrace, popSize);\n  } catch (e) {\n    // no-empty\n  }\n\n  return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n  if (ex) {\n    if (typeof ex.framesToPop === 'number') {\n      return ex.framesToPop;\n    }\n\n    if (reactMinifiedRegexp.test(ex.message)) {\n      return 1;\n    }\n  }\n\n  return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n  const message = ex && ex.message;\n  if (!message) {\n    return 'No error message';\n  }\n  if (message.error && typeof message.error.message === 'string') {\n    return message.error.message;\n  }\n  return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n  stackParser: StackParser,\n  exception: unknown,\n  hint?: EventHint,\n  attachStacktrace?: boolean,\n): PromiseLike<Event> {\n  const syntheticException = (hint && hint.syntheticException) || undefined;\n  const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n  addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n  event.level = 'error';\n  if (hint && hint.event_id) {\n    event.event_id = hint.event_id;\n  }\n  return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n  stackParser: StackParser,\n  message: ParameterizedString,\n  // eslint-disable-next-line deprecation/deprecation\n  level: Severity | SeverityLevel = 'info',\n  hint?: EventHint,\n  attachStacktrace?: boolean,\n): PromiseLike<Event> {\n  const syntheticException = (hint && hint.syntheticException) || undefined;\n  const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n  event.level = level;\n  if (hint && hint.event_id) {\n    event.event_id = hint.event_id;\n  }\n  return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n  stackParser: StackParser,\n  exception: unknown,\n  syntheticException?: Error,\n  attachStacktrace?: boolean,\n  isUnhandledRejection?: boolean,\n): Event {\n  let event: Event;\n\n  if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n    // If it is an ErrorEvent with `error` property, extract it to get actual Error\n    const errorEvent = exception as ErrorEvent;\n    return eventFromError(stackParser, errorEvent.error as Error);\n  }\n\n  // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n  // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n  // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n  //\n  // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n  // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n  // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n  if (isDOMError(exception) || isDOMException(exception as DOMException)) {\n    const domException = exception as DOMException;\n\n    if ('stack' in (exception as Error)) {\n      event = eventFromError(stackParser, exception as Error);\n    } else {\n      const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n      const message = domException.message ? `${name}: ${domException.message}` : name;\n      event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n      addExceptionTypeValue(event, message);\n    }\n    if ('code' in domException) {\n      // eslint-disable-next-line deprecation/deprecation\n      event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n    }\n\n    return event;\n  }\n  if (isError(exception)) {\n    // we have a real Error object, do nothing\n    return eventFromError(stackParser, exception);\n  }\n  if (isPlainObject(exception) || isEvent(exception)) {\n    // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n    // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n    // group on any key/value change.\n    const objectException = exception as Record<string, unknown>;\n    event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n    addExceptionMechanism(event, {\n      synthetic: true,\n    });\n    return event;\n  }\n\n  // If none of previous checks were valid, then it means that it's not:\n  // - an instance of DOMError\n  // - an instance of DOMException\n  // - an instance of Event\n  // - an instance of Error\n  // - a valid ErrorEvent (one with an error property)\n  // - a plain Object\n  //\n  // So bail out and capture it as a simple message:\n  event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n  addExceptionTypeValue(event, `${exception}`, undefined);\n  addExceptionMechanism(event, {\n    synthetic: true,\n  });\n\n  return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n  stackParser: StackParser,\n  message: ParameterizedString,\n  syntheticException?: Error,\n  attachStacktrace?: boolean,\n): Event {\n  const event: Event = {};\n\n  if (attachStacktrace && syntheticException) {\n    const frames = parseStackFrames(stackParser, syntheticException);\n    if (frames.length) {\n      event.exception = {\n        values: [{ value: message, stacktrace: { frames } }],\n      };\n    }\n  }\n\n  if (isParameterizedString(message)) {\n    const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n    event.logentry = {\n      message: __sentry_template_string__,\n      params: __sentry_template_values__,\n    };\n    return event;\n  }\n\n  event.message = message;\n  return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n  exception: Record<string, unknown>,\n  { isUnhandledRejection }: { isUnhandledRejection?: boolean },\n): string {\n  const keys = extractExceptionKeysForMessage(exception);\n  const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n  // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n  // We still want to try to get a decent message for these cases\n  if (isErrorEvent(exception)) {\n    return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n  }\n\n  if (isEvent(exception)) {\n    const className = getObjectClassName(exception);\n    return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n  }\n\n  return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj: unknown): string | undefined | void {\n  try {\n    const prototype: Prototype | null = Object.getPrototypeOf(obj);\n    return prototype ? prototype.constructor.name : undefined;\n  } catch (e) {\n    // ignore errors here\n  }\n}\n", "import type { DsnComponents, EventEnvelope, SdkMetadata, UserFeedback, UserFeedbackItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\n\n/**\n * Creates an envelope from a user feedback.\n */\nexport function createUserFeedbackEnvelope(\n  feedback: UserFeedback,\n  {\n    metadata,\n    tunnel,\n    dsn,\n  }: {\n    metadata: SdkMetadata | undefined;\n    tunnel: string | undefined;\n    dsn: DsnComponents | undefined;\n  },\n): EventEnvelope {\n  const headers: EventEnvelope[0] = {\n    event_id: feedback.event_id,\n    sent_at: new Date().toISOString(),\n    ...(metadata &&\n      metadata.sdk && {\n        sdk: {\n          name: metadata.sdk.name,\n          version: metadata.sdk.version,\n        },\n      }),\n    ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n  };\n  const item = createUserFeedbackEnvelopeItem(feedback);\n\n  return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback: UserFeedback): UserFeedbackItem {\n  const feedbackHeaders: UserFeedbackItem[0] = {\n    type: 'user_report',\n  };\n  return [feedbackHeaders, feedback];\n}\n", "import type { Scope } from '@sentry/core';\nimport { applySdkMetadata } from '@sentry/core';\nimport { BaseClient } from '@sentry/core';\nimport type {\n  BrowserClientProfilingOptions,\n  BrowserClientReplayOptions,\n  ClientOptions,\n  Event,\n  EventHint,\n  Options,\n  ParameterizedString,\n  Severity,\n  SeverityLevel,\n  UserFeedback,\n} from '@sentry/types';\nimport { createClientReportEnvelope, dsnToString, getSDKSource, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { WINDOW } from './helpers';\nimport type { BrowserTransportOptions } from './transports/types';\nimport { createUserFeedbackEnvelope } from './userfeedback';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport type BrowserOptions = Options<BrowserTransportOptions> &\n  BrowserClientReplayOptions &\n  BrowserClientProfilingOptions;\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport type BrowserClientOptions = ClientOptions<BrowserTransportOptions> &\n  BrowserClientReplayOptions &\n  BrowserClientProfilingOptions;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient<BrowserClientOptions> {\n  /**\n   * Creates a new Browser SDK instance.\n   *\n   * @param options Configuration options for this SDK.\n   */\n  public constructor(options: BrowserClientOptions) {\n    const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n    applySdkMetadata(options, 'browser', ['browser'], sdkSource);\n\n    super(options);\n\n    if (options.sendClientReports && WINDOW.document) {\n      WINDOW.document.addEventListener('visibilitychange', () => {\n        if (WINDOW.document.visibilityState === 'hidden') {\n          this._flushOutcomes();\n        }\n      });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public eventFromException(exception: unknown, hint?: EventHint): PromiseLike<Event> {\n    return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public eventFromMessage(\n    message: ParameterizedString,\n    // eslint-disable-next-line deprecation/deprecation\n    level: Severity | SeverityLevel = 'info',\n    hint?: EventHint,\n  ): PromiseLike<Event> {\n    return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n  }\n\n  /**\n   * Sends user feedback to Sentry.\n   */\n  public captureUserFeedback(feedback: UserFeedback): void {\n    if (!this._isEnabled()) {\n      DEBUG_BUILD && logger.warn('SDK not enabled, will not capture user feedback.');\n      return;\n    }\n\n    const envelope = createUserFeedbackEnvelope(feedback, {\n      metadata: this.getSdkMetadata(),\n      dsn: this.getDsn(),\n      tunnel: this.getOptions().tunnel,\n    });\n\n    // _sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this._sendEnvelope(envelope);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike<Event | null> {\n    event.platform = event.platform || 'javascript';\n    return super._prepareEvent(event, hint, scope);\n  }\n\n  /**\n   * Sends client reports as an envelope.\n   */\n  private _flushOutcomes(): void {\n    const outcomes = this._clearOutcomes();\n\n    if (outcomes.length === 0) {\n      DEBUG_BUILD && logger.log('No outcomes to send');\n      return;\n    }\n\n    // This is really the only place where we want to check for a DSN and only send outcomes then\n    if (!this._dsn) {\n      DEBUG_BUILD && logger.log('No dsn provided, will not send outcomes');\n      return;\n    }\n\n    DEBUG_BUILD && logger.log('Sending outcomes:', outcomes);\n\n    const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n    // _sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this._sendEnvelope(envelope);\n  }\n}\n", "import { isNativeFetch, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\nlet cachedFetchImpl: FetchImpl | undefined = undefined;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n *   const p = f.apply(this, arguments);\n *\n *   p.then(function() {\n *     console.log('hi.');\n *   });\n *\n *   return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome:  Failed to fetch\n * Edge:    Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari:  resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n  if (cachedFetchImpl) {\n    return cachedFetchImpl;\n  }\n\n  /* eslint-disable @typescript-eslint/unbound-method */\n\n  // Fast path to avoid DOM I/O\n  if (isNativeFetch(WINDOW.fetch)) {\n    return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n  }\n\n  const document = WINDOW.document;\n  let fetchImpl = WINDOW.fetch;\n  // eslint-disable-next-line deprecation/deprecation\n  if (document && typeof document.createElement === 'function') {\n    try {\n      const sandbox = document.createElement('iframe');\n      sandbox.hidden = true;\n      document.head.appendChild(sandbox);\n      const contentWindow = sandbox.contentWindow;\n      if (contentWindow && contentWindow.fetch) {\n        fetchImpl = contentWindow.fetch;\n      }\n      document.head.removeChild(sandbox);\n    } catch (e) {\n      DEBUG_BUILD && logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n    }\n  }\n\n  return (cachedFetchImpl = fetchImpl.bind(WINDOW));\n  /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nexport function clearCachedFetchImplementation(): void {\n  cachedFetchImpl = undefined;\n}\n", "import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { rejectedSyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\nimport type { FetchImpl } from './utils';\nimport { clearCachedFetchImplementation, getNativeFetchImplementation } from './utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n  options: BrowserTransportOptions,\n  nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): Transport {\n  let pendingBodySize = 0;\n  let pendingCount = 0;\n\n  function makeRequest(request: TransportRequest): PromiseLike<TransportMakeRequestResponse> {\n    const requestSize = request.body.length;\n    pendingBodySize += requestSize;\n    pendingCount++;\n\n    const requestOptions: RequestInit = {\n      body: request.body,\n      method: 'POST',\n      referrerPolicy: 'origin',\n      headers: options.headers,\n      // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n      // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n      // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n      // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n      // Gotchas:\n      // - `keepalive` isn't supported by Firefox\n      // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n      //   If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n      //   We will therefore only activate the flag when we're below that limit.\n      // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n      // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n      keepalive: pendingBodySize <= 60_000 && pendingCount < 15,\n      ...options.fetchOptions,\n    };\n\n    try {\n      return nativeFetch(options.url, requestOptions).then(response => {\n        pendingBodySize -= requestSize;\n        pendingCount--;\n        return {\n          statusCode: response.status,\n          headers: {\n            'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n            'retry-after': response.headers.get('Retry-After'),\n          },\n        };\n      });\n    } catch (e) {\n      clearCachedFetchImplementation();\n      pendingBodySize -= requestSize;\n      pendingCount--;\n      return rejectedSyncPromise(e);\n    }\n  }\n\n  return createTransport(options, makeRequest);\n}\n", "import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeXHRTransport(options: BrowserTransportOptions): Transport {\n  function makeRequest(request: TransportRequest): PromiseLike<TransportMakeRequestResponse> {\n    return new SyncPromise((resolve, reject) => {\n      const xhr = new XMLHttpRequest();\n\n      xhr.onerror = reject;\n\n      xhr.onreadystatechange = (): void => {\n        if (xhr.readyState === XHR_READYSTATE_DONE) {\n          resolve({\n            statusCode: xhr.status,\n            headers: {\n              'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n              'retry-after': xhr.getResponseHeader('Retry-After'),\n            },\n          });\n        }\n      };\n\n      xhr.open('POST', options.url);\n\n      for (const header in options.headers) {\n        if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n          xhr.setRequestHeader(header, options.headers[header]);\n        }\n      }\n\n      xhr.send(request.body);\n    });\n  }\n\n  return createTransport(options, makeRequest);\n}\n", "// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re - written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n  const frame: StackFrame = {\n    filename,\n    function: func,\n    in_app: true, // All browser frames are considered in_app\n  };\n\n  if (lineno !== undefined) {\n    frame.lineno = lineno;\n  }\n\n  if (colno !== undefined) {\n    frame.colno = colno;\n  }\n\n  return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n  /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn: StackLineParserFn = line => {\n  const parts = chromeRegex.exec(line);\n\n  if (parts) {\n    const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n    if (isEval) {\n      const subMatch = chromeEvalRegex.exec(parts[2]);\n\n      if (subMatch) {\n        // throw out eval line/column and use top-most line/column number\n        parts[2] = subMatch[1]; // url\n        parts[3] = subMatch[2]; // line\n        parts[4] = subMatch[3]; // column\n      }\n    }\n\n    // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n    // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n    const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n    return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n  }\n\n  return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chromeStackParserFn];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n  /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n  const parts = geckoREgex.exec(line);\n\n  if (parts) {\n    const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n    if (isEval) {\n      const subMatch = geckoEvalRegex.exec(parts[3]);\n\n      if (subMatch) {\n        // throw out eval line/column and use top-most line number\n        parts[1] = parts[1] || 'eval';\n        parts[3] = subMatch[1];\n        parts[4] = subMatch[2];\n        parts[5] = ''; // no column when eval\n      }\n    }\n\n    let filename = parts[3];\n    let func = parts[1] || UNKNOWN_FUNCTION;\n    [func, filename] = extractSafariExtensionDetails(func, filename);\n\n    return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n  }\n\n  return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n  const parts = winjsRegex.exec(line);\n\n  return parts\n    ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n    : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n  const parts = opera10Regex.exec(line);\n  return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n  / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n  const parts = opera11Regex.exec(line);\n  return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n *   at function@url:row:col\n *   at function@url:row:col\n *   at function@url:row:col\n *\n * it produces something like:\n *\n *   function@url:row:col\n *   function@url:row:col\n *   function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n  const isSafariExtension = func.indexOf('safari-extension') !== -1;\n  const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n  return isSafariExtension || isSafariWebExtension\n    ? [\n        func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n        isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n      ]\n    : [func, filename];\n};\n", "/* eslint-disable max-lines */\nimport { addBreadcrumb, convertIntegrationFnToClass, defineIntegration, getClient } from '@sentry/core';\nimport type {\n  Client,\n  Event as SentryEvent,\n  HandlerDataConsole,\n  HandlerDataDom,\n  HandlerDataFetch,\n  HandlerDataHistory,\n  HandlerDataXhr,\n  Integration,\n  IntegrationClass,\n  IntegrationFn,\n} from '@sentry/types';\nimport type {\n  Breadcrumb,\n  FetchBreadcrumbData,\n  FetchBreadcrumbHint,\n  XhrBreadcrumbData,\n  XhrBreadcrumbHint,\n} from '@sentry/types/build/types/breadcrumb';\nimport {\n  SENTRY_XHR_DATA_KEY,\n  addClickKeypressInstrumentationHandler,\n  addConsoleInstrumentationHandler,\n  addFetchInstrumentationHandler,\n  addHistoryInstrumentationHandler,\n  addXhrInstrumentationHandler,\n  getComponentName,\n  getEventDescription,\n  htmlTreeAsString,\n  logger,\n  parseUrl,\n  safeJoin,\n  severityLevelFromString,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\ninterface BreadcrumbsOptions {\n  console: boolean;\n  dom:\n    | boolean\n    | {\n        serializeAttribute?: string | string[];\n        maxStringLength?: number;\n      };\n  fetch: boolean;\n  history: boolean;\n  sentry: boolean;\n  xhr: boolean;\n}\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst INTEGRATION_NAME = 'Breadcrumbs';\n\nconst _breadcrumbsIntegration = ((options: Partial<BreadcrumbsOptions> = {}) => {\n  const _options = {\n    console: true,\n    dom: true,\n    fetch: true,\n    history: true,\n    sentry: true,\n    xhr: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    setup(client) {\n      if (_options.console) {\n        addConsoleInstrumentationHandler(_getConsoleBreadcrumbHandler(client));\n      }\n      if (_options.dom) {\n        addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom));\n      }\n      if (_options.xhr) {\n        addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client));\n      }\n      if (_options.fetch) {\n        addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client));\n      }\n      if (_options.history) {\n        addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client));\n      }\n      if (_options.sentry && client.on) {\n        client.on('beforeSendEvent', _getSentryBreadcrumbHandler(client));\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration);\n\n/**\n * Default Breadcrumbs instrumentations\n *\n * @deprecated Use `breadcrumbsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Breadcrumbs = convertIntegrationFnToClass(INTEGRATION_NAME, breadcrumbsIntegration) as IntegrationClass<\n  Integration & { setup: (client: Client) => void }\n> & {\n  new (\n    options?: Partial<{\n      console: boolean;\n      dom:\n        | boolean\n        | {\n            serializeAttribute?: string | string[];\n            maxStringLength?: number;\n          };\n      fetch: boolean;\n      history: boolean;\n      sentry: boolean;\n      xhr: boolean;\n    }>,\n  ): Integration;\n};\n\n/**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\nfunction _getSentryBreadcrumbHandler(client: Client): (event: SentryEvent) => void {\n  return function addSentryBreadcrumb(event: SentryEvent): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    addBreadcrumb(\n      {\n        category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n        event_id: event.event_id,\n        level: event.level,\n        message: getEventDescription(event),\n      },\n      {\n        event,\n      },\n    );\n  };\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _getDomBreadcrumbHandler(\n  client: Client,\n  dom: BreadcrumbsOptions['dom'],\n): (handlerData: HandlerDataDom) => void {\n  return function _innerDomBreadcrumb(handlerData: HandlerDataDom): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    let target;\n    let componentName;\n    let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n    let maxStringLength =\n      typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n    if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n      DEBUG_BUILD &&\n        logger.warn(\n          `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n        );\n      maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n    }\n\n    if (typeof keyAttrs === 'string') {\n      keyAttrs = [keyAttrs];\n    }\n\n    // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n    try {\n      const event = handlerData.event as Event | Node;\n      const element = _isEvent(event) ? event.target : event;\n\n      target = htmlTreeAsString(element, { keyAttrs, maxStringLength });\n      componentName = getComponentName(element);\n    } catch (e) {\n      target = '<unknown>';\n    }\n\n    if (target.length === 0) {\n      return;\n    }\n\n    const breadcrumb: Breadcrumb = {\n      category: `ui.${handlerData.name}`,\n      message: target,\n    };\n\n    if (componentName) {\n      breadcrumb.data = { 'ui.component_name': componentName };\n    }\n\n    addBreadcrumb(breadcrumb, {\n      event: handlerData.event,\n      name: handlerData.name,\n      global: handlerData.global,\n    });\n  };\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _getConsoleBreadcrumbHandler(client: Client): (handlerData: HandlerDataConsole) => void {\n  return function _consoleBreadcrumb(handlerData: HandlerDataConsole): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const breadcrumb = {\n      category: 'console',\n      data: {\n        arguments: handlerData.args,\n        logger: 'console',\n      },\n      level: severityLevelFromString(handlerData.level),\n      message: safeJoin(handlerData.args, ' '),\n    };\n\n    if (handlerData.level === 'assert') {\n      if (handlerData.args[0] === false) {\n        breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n        breadcrumb.data.arguments = handlerData.args.slice(1);\n      } else {\n        // Don't capture a breadcrumb for passed assertions\n        return;\n      }\n    }\n\n    addBreadcrumb(breadcrumb, {\n      input: handlerData.args,\n      level: handlerData.level,\n    });\n  };\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _getXhrBreadcrumbHandler(client: Client): (handlerData: HandlerDataXhr) => void {\n  return function _xhrBreadcrumb(handlerData: HandlerDataXhr): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const { startTimestamp, endTimestamp } = handlerData;\n\n    const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n    // We only capture complete, non-sentry requests\n    if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n      return;\n    }\n\n    const { method, url, status_code, body } = sentryXhrData;\n\n    const data: XhrBreadcrumbData = {\n      method,\n      url,\n      status_code,\n    };\n\n    const hint: XhrBreadcrumbHint = {\n      xhr: handlerData.xhr,\n      input: body,\n      startTimestamp,\n      endTimestamp,\n    };\n\n    addBreadcrumb(\n      {\n        category: 'xhr',\n        data,\n        type: 'http',\n      },\n      hint,\n    );\n  };\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _getFetchBreadcrumbHandler(client: Client): (handlerData: HandlerDataFetch) => void {\n  return function _fetchBreadcrumb(handlerData: HandlerDataFetch): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const { startTimestamp, endTimestamp } = handlerData;\n\n    // We only capture complete fetch requests\n    if (!endTimestamp) {\n      return;\n    }\n\n    if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n      // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n      return;\n    }\n\n    if (handlerData.error) {\n      const data: FetchBreadcrumbData = handlerData.fetchData;\n      const hint: FetchBreadcrumbHint = {\n        data: handlerData.error,\n        input: handlerData.args,\n        startTimestamp,\n        endTimestamp,\n      };\n\n      addBreadcrumb(\n        {\n          category: 'fetch',\n          data,\n          level: 'error',\n          type: 'http',\n        },\n        hint,\n      );\n    } else {\n      const response = handlerData.response as Response | undefined;\n      const data: FetchBreadcrumbData = {\n        ...handlerData.fetchData,\n        status_code: response && response.status,\n      };\n      const hint: FetchBreadcrumbHint = {\n        input: handlerData.args,\n        response,\n        startTimestamp,\n        endTimestamp,\n      };\n      addBreadcrumb(\n        {\n          category: 'fetch',\n          data,\n          type: 'http',\n        },\n        hint,\n      );\n    }\n  };\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _getHistoryBreadcrumbHandler(client: Client): (handlerData: HandlerDataHistory) => void {\n  return function _historyBreadcrumb(handlerData: HandlerDataHistory): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    let from: string | undefined = handlerData.from;\n    let to: string | undefined = handlerData.to;\n    const parsedLoc = parseUrl(WINDOW.location.href);\n    let parsedFrom = from ? parseUrl(from) : undefined;\n    const parsedTo = parseUrl(to);\n\n    // Initial pushState doesn't provide `from` information\n    if (!parsedFrom || !parsedFrom.path) {\n      parsedFrom = parsedLoc;\n    }\n\n    // Use only the path component of the URL if the URL matches the current\n    // document (almost all the time when using pushState)\n    if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n      to = parsedTo.relative;\n    }\n    if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n      from = parsedFrom.relative;\n    }\n\n    addBreadcrumb({\n      category: 'navigation',\n      data: {\n        from,\n        to,\n      },\n    });\n  };\n}\n\nfunction _isEvent(event: unknown): event is Event {\n  return !!event && !!(event as Record<string, unknown>).target;\n}\n", "import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Exception, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n  let previousEvent: Event | undefined;\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    processEvent(currentEvent) {\n      // We want to ignore any non-error type events, e.g. transactions or replays\n      // These should never be deduped, and also not be compared against as _previousEvent.\n      if (currentEvent.type) {\n        return currentEvent;\n      }\n\n      // Juuust in case something goes wrong\n      try {\n        if (_shouldDropEvent(currentEvent, previousEvent)) {\n          DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n          return null;\n        }\n      } catch (_oO) {} // eslint-disable-line no-empty\n\n      return (previousEvent = currentEvent);\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/**\n * Deduplication filter.\n * @deprecated Use `dedupeIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Dedupe = convertIntegrationFnToClass(INTEGRATION_NAME, dedupeIntegration) as IntegrationClass<\n  Integration & { processEvent: (event: Event) => Event }\n>;\n\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n  if (!previousEvent) {\n    return false;\n  }\n\n  if (_isSameMessageEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n\n  if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n  const currentMessage = currentEvent.message;\n  const previousMessage = previousEvent.message;\n\n  // If neither event has a message property, they were both exceptions, so bail out\n  if (!currentMessage && !previousMessage) {\n    return false;\n  }\n\n  // If only one event has a stacktrace, but not the other one, they are not the same\n  if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n    return false;\n  }\n\n  if (currentMessage !== previousMessage) {\n    return false;\n  }\n\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n  const previousException = _getExceptionFromEvent(previousEvent);\n  const currentException = _getExceptionFromEvent(currentEvent);\n\n  if (!previousException || !currentException) {\n    return false;\n  }\n\n  if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n    return false;\n  }\n\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n  let currentFrames = _getFramesFromEvent(currentEvent);\n  let previousFrames = _getFramesFromEvent(previousEvent);\n\n  // If neither event has a stacktrace, they are assumed to be the same\n  if (!currentFrames && !previousFrames) {\n    return true;\n  }\n\n  // If only one event has a stacktrace, but not the other one, they are not the same\n  if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n    return false;\n  }\n\n  currentFrames = currentFrames as StackFrame[];\n  previousFrames = previousFrames as StackFrame[];\n\n  // If number of frames differ, they are not the same\n  if (previousFrames.length !== currentFrames.length) {\n    return false;\n  }\n\n  // Otherwise, compare the two\n  for (let i = 0; i < previousFrames.length; i++) {\n    const frameA = previousFrames[i];\n    const frameB = currentFrames[i];\n\n    if (\n      frameA.filename !== frameB.filename ||\n      frameA.lineno !== frameB.lineno ||\n      frameA.colno !== frameB.colno ||\n      frameA.function !== frameB.function\n    ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n  let currentFingerprint = currentEvent.fingerprint;\n  let previousFingerprint = previousEvent.fingerprint;\n\n  // If neither event has a fingerprint, they are assumed to be the same\n  if (!currentFingerprint && !previousFingerprint) {\n    return true;\n  }\n\n  // If only one event has a fingerprint, but not the other one, they are not the same\n  if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n    return false;\n  }\n\n  currentFingerprint = currentFingerprint as string[];\n  previousFingerprint = previousFingerprint as string[];\n\n  // Otherwise, compare the two\n  try {\n    return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n  } catch (_oO) {\n    return false;\n  }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n  return event.exception && event.exception.values && event.exception.values[0];\n}\n\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n  const exception = event.exception;\n\n  if (exception) {\n    try {\n      // @ts-expect-error Object could be undefined\n      return exception.values[0].stacktrace.frames;\n    } catch (_oO) {\n      return undefined;\n    }\n  }\n  return undefined;\n}\n", "/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { captureEvent, convertIntegrationFnToClass, defineIntegration, getClient } from '@sentry/core';\nimport type {\n  Client,\n  Event,\n  Integration,\n  IntegrationClass,\n  IntegrationFn,\n  Primitive,\n  StackParser,\n} from '@sentry/types';\nimport {\n  addGlobalErrorInstrumentationHandler,\n  addGlobalUnhandledRejectionInstrumentationHandler,\n  getLocationHref,\n  isErrorEvent,\n  isPrimitive,\n  isString,\n  logger,\n} from '@sentry/utils';\n\nimport type { BrowserClient } from '../client';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\ntype GlobalHandlersIntegrations = Record<GlobalHandlersIntegrationsOptionKeys, boolean>;\n\nconst INTEGRATION_NAME = 'GlobalHandlers';\n\nconst _globalHandlersIntegration = ((options: Partial<GlobalHandlersIntegrations> = {}) => {\n  const _options = {\n    onerror: true,\n    onunhandledrejection: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      Error.stackTraceLimit = 50;\n    },\n    setup(client) {\n      if (_options.onerror) {\n        _installGlobalOnErrorHandler(client);\n        globalHandlerLog('onerror');\n      }\n      if (_options.onunhandledrejection) {\n        _installGlobalOnUnhandledRejectionHandler(client);\n        globalHandlerLog('onunhandledrejection');\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const globalHandlersIntegration = defineIntegration(_globalHandlersIntegration);\n\n/**\n * Global handlers.\n * @deprecated Use `globalHandlersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const GlobalHandlers = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  globalHandlersIntegration,\n) as IntegrationClass<Integration & { setup: (client: Client) => void }> & {\n  new (options?: Partial<GlobalHandlersIntegrations>): Integration;\n};\n\nfunction _installGlobalOnErrorHandler(client: Client): void {\n  addGlobalErrorInstrumentationHandler(data => {\n    const { stackParser, attachStacktrace } = getOptions();\n\n    if (getClient() !== client || shouldIgnoreOnError()) {\n      return;\n    }\n\n    const { msg, url, line, column, error } = data;\n\n    const event =\n      error === undefined && isString(msg)\n        ? _eventFromIncompleteOnError(msg, url, line, column)\n        : _enhanceEventWithInitialFrame(\n            eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n            url,\n            line,\n            column,\n          );\n\n    event.level = 'error';\n\n    captureEvent(event, {\n      originalException: error,\n      mechanism: {\n        handled: false,\n        type: 'onerror',\n      },\n    });\n  });\n}\n\nfunction _installGlobalOnUnhandledRejectionHandler(client: Client): void {\n  addGlobalUnhandledRejectionInstrumentationHandler(e => {\n    const { stackParser, attachStacktrace } = getOptions();\n\n    if (getClient() !== client || shouldIgnoreOnError()) {\n      return;\n    }\n\n    const error = _getUnhandledRejectionError(e as unknown);\n\n    const event = isPrimitive(error)\n      ? _eventFromRejectionWithPrimitive(error)\n      : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n    event.level = 'error';\n\n    captureEvent(event, {\n      originalException: error,\n      mechanism: {\n        handled: false,\n        type: 'onunhandledrejection',\n      },\n    });\n  });\n}\n\nfunction _getUnhandledRejectionError(error: unknown): unknown {\n  if (isPrimitive(error)) {\n    return error;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const e = error as any;\n\n  // dig the object of the rejection out of known event types\n  try {\n    // PromiseRejectionEvents store the object of the rejection under 'reason'\n    // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n    if ('reason' in e) {\n      return e.reason;\n    }\n\n    // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n    // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n    // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n    // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n    // https://github.com/getsentry/sentry-javascript/issues/2380\n    else if ('detail' in e && 'reason' in e.detail) {\n      return e.detail.reason;\n    }\n  } catch {} // eslint-disable-line no-empty\n\n  return error;\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n  return {\n    exception: {\n      values: [\n        {\n          type: 'UnhandledRejection',\n          // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n          value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n        },\n      ],\n    },\n  };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n  const ERROR_TYPES_RE =\n    /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n  // If 'message' is ErrorEvent, get real message from inside\n  let message = isErrorEvent(msg) ? msg.message : msg;\n  let name = 'Error';\n\n  const groups = message.match(ERROR_TYPES_RE);\n  if (groups) {\n    name = groups[1];\n    message = groups[2];\n  }\n\n  const event = {\n    exception: {\n      values: [\n        {\n          type: name,\n          value: message,\n        },\n      ],\n    },\n  };\n\n  return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n  // event.exception\n  const e = (event.exception = event.exception || {});\n  // event.exception.values\n  const ev = (e.values = e.values || []);\n  // event.exception.values[0]\n  const ev0 = (ev[0] = ev[0] || {});\n  // event.exception.values[0].stacktrace\n  const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n  // event.exception.values[0].stacktrace.frames\n  const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n  const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n  const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n  const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n  // event.exception.values[0].stacktrace.frames\n  if (ev0sf.length === 0) {\n    ev0sf.push({\n      colno,\n      filename,\n      function: '?',\n      in_app: true,\n      lineno,\n    });\n  }\n\n  return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n  DEBUG_BUILD && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction getOptions(): { stackParser: StackParser; attachStacktrace?: boolean } {\n  const client = getClient<BrowserClient>();\n  const options = (client && client.getOptions()) || {\n    stackParser: () => [],\n    attachStacktrace: false,\n  };\n  return options;\n}\n", "import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\n\nimport { WINDOW } from '../helpers';\n\nconst INTEGRATION_NAME = 'HttpContext';\n\nconst _httpContextIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    preprocessEvent(event) {\n      // if none of the information we want exists, don't bother\n      if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n        return;\n      }\n\n      // grab as much info as exists and add it to the event\n      const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n      const { referrer } = WINDOW.document || {};\n      const { userAgent } = WINDOW.navigator || {};\n\n      const headers = {\n        ...(event.request && event.request.headers),\n        ...(referrer && { Referer: referrer }),\n        ...(userAgent && { 'User-Agent': userAgent }),\n      };\n      const request = { ...event.request, ...(url && { url }), headers };\n\n      event.request = request;\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const httpContextIntegration = defineIntegration(_httpContextIntegration);\n\n/**\n * HttpContext integration collects information about HTTP request headers.\n * @deprecated Use `httpContextIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const HttpContext = convertIntegrationFnToClass(INTEGRATION_NAME, httpContextIntegration) as IntegrationClass<\n  Integration & { preprocessEvent: (event: Event) => void }\n>;\n", "import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport { applyAggregateErrorsToEvent } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder';\n\ninterface LinkedErrorsOptions {\n  key?: string;\n  limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n  const limit = options.limit || DEFAULT_LIMIT;\n  const key = options.key || DEFAULT_KEY;\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    preprocessEvent(event, hint, client) {\n      const options = client.getOptions();\n\n      applyAggregateErrorsToEvent(\n        // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n        exceptionFromError,\n        options.stackParser,\n        options.maxValueLength,\n        key,\n        limit,\n        event,\n        hint,\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\n/**\n * Aggregrate linked errors in an event.\n * @deprecated Use `linkedErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration) as IntegrationClass<\n  Integration & { preprocessEvent: (event: Event, hint: EventHint, client: Client) => void }\n> & { new (options?: { key?: string; limit?: number }): Integration };\n", "import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Integration, IntegrationClass, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\n\nimport { WINDOW, wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n  'EventTarget',\n  'Window',\n  'Node',\n  'ApplicationCache',\n  'AudioTrackList',\n  'BroadcastChannel',\n  'ChannelMergerNode',\n  'CryptoOperation',\n  'EventSource',\n  'FileReader',\n  'HTMLUnknownElement',\n  'IDBDatabase',\n  'IDBRequest',\n  'IDBTransaction',\n  'KeyOperation',\n  'MediaController',\n  'MessagePort',\n  'ModalWindow',\n  'Notification',\n  'SVGElementInstance',\n  'Screen',\n  'SharedWorker',\n  'TextTrack',\n  'TextTrackCue',\n  'TextTrackList',\n  'WebSocket',\n  'WebSocketWorker',\n  'Worker',\n  'XMLHttpRequest',\n  'XMLHttpRequestEventTarget',\n  'XMLHttpRequestUpload',\n];\n\nconst INTEGRATION_NAME = 'TryCatch';\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\ninterface TryCatchOptions {\n  setTimeout: boolean;\n  setInterval: boolean;\n  requestAnimationFrame: boolean;\n  XMLHttpRequest: boolean;\n  eventTarget: boolean | string[];\n}\n\nconst _browserApiErrorsIntegration = ((options: Partial<TryCatchOptions> = {}) => {\n  const _options = {\n    XMLHttpRequest: true,\n    eventTarget: true,\n    requestAnimationFrame: true,\n    setInterval: true,\n    setTimeout: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO: This currently only works for the first client this is setup\n    // We may want to adjust this to check for client etc.\n    setupOnce() {\n      if (_options.setTimeout) {\n        fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n      }\n\n      if (_options.setInterval) {\n        fill(WINDOW, 'setInterval', _wrapTimeFunction);\n      }\n\n      if (_options.requestAnimationFrame) {\n        fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n      }\n\n      if (_options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n        fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n      }\n\n      const eventTargetOption = _options.eventTarget;\n      if (eventTargetOption) {\n        const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n        eventTarget.forEach(_wrapEventTarget);\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration);\n\n/**\n * Wrap timer functions and event targets to catch errors and provide better meta data.\n * @deprecated Use `browserApiErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const TryCatch = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  browserApiErrorsIntegration,\n) as IntegrationClass<Integration> & {\n  new (options?: {\n    setTimeout: boolean;\n    setInterval: boolean;\n    requestAnimationFrame: boolean;\n    XMLHttpRequest: boolean;\n    eventTarget: boolean | string[];\n  }): Integration;\n};\n\nfunction _wrapTimeFunction(original: () => void): () => number {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: any, ...args: any[]): number {\n    const originalCallback = args[0];\n    args[0] = wrap(originalCallback, {\n      mechanism: {\n        data: { function: getFunctionName(original) },\n        handled: false,\n        type: 'instrument',\n      },\n    });\n    return original.apply(this, args);\n  };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: any, callback: () => void): () => void {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    return original.apply(this, [\n      wrap(callback, {\n        mechanism: {\n          data: {\n            function: 'requestAnimationFrame',\n            handler: getFunctionName(original),\n          },\n          handled: false,\n          type: 'instrument',\n        },\n      }),\n    ]);\n  };\n}\n\nfunction _wrapXHR(originalSend: () => void): () => void {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: XMLHttpRequest, ...args: any[]): void {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const xhr = this;\n    const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n    xmlHttpRequestProps.forEach(prop => {\n      if (prop in xhr && typeof xhr[prop] === 'function') {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        fill(xhr, prop, function (original: WrappedFunction): () => any {\n          const wrapOptions = {\n            mechanism: {\n              data: {\n                function: prop,\n                handler: getFunctionName(original),\n              },\n              handled: false,\n              type: 'instrument',\n            },\n          };\n\n          // If Instrument integration has been called before TryCatch, get the name of original function\n          const originalFunction = getOriginalFunction(original);\n          if (originalFunction) {\n            wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n          }\n\n          // Otherwise wrap directly\n          return wrap(original, wrapOptions);\n        });\n      }\n    });\n\n    return originalSend.apply(this, args);\n  };\n}\n\nfunction _wrapEventTarget(target: string): void {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const globalObject = WINDOW as { [key: string]: any };\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  const proto = globalObject[target] && globalObject[target].prototype;\n\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n  if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n    return;\n  }\n\n  fill(proto, 'addEventListener', function (original: VoidFunction,): (\n    eventName: string,\n    fn: EventListenerObject,\n    options?: boolean | AddEventListenerOptions,\n  ) => void {\n    return function (\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this: any,\n      eventName: string,\n      fn: EventListenerObject,\n      options?: boolean | AddEventListenerOptions,\n    ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n      try {\n        if (typeof fn.handleEvent === 'function') {\n          // ESlint disable explanation:\n          //  First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n          //  introduce a bug here, because bind returns a new function that doesn't have our\n          //  flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n          //  Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n          // eslint-disable-next-line @typescript-eslint/unbound-method\n          fn.handleEvent = wrap(fn.handleEvent, {\n            mechanism: {\n              data: {\n                function: 'handleEvent',\n                handler: getFunctionName(fn),\n                target,\n              },\n              handled: false,\n              type: 'instrument',\n            },\n          });\n        }\n      } catch (err) {\n        // can sometimes get 'Permission denied to access property \"handle Event'\n      }\n\n      return original.apply(this, [\n        eventName,\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        wrap(fn as any as WrappedFunction, {\n          mechanism: {\n            data: {\n              function: 'addEventListener',\n              handler: getFunctionName(fn),\n              target,\n            },\n            handled: false,\n            type: 'instrument',\n          },\n        }),\n        options,\n      ]);\n    };\n  });\n\n  fill(\n    proto,\n    'removeEventListener',\n    function (\n      originalRemoveEventListener: () => void,\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n      return function (\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        this: any,\n        eventName: string,\n        fn: EventListenerObject,\n        options?: boolean | EventListenerOptions,\n      ): () => void {\n        /**\n         * There are 2 possible scenarios here:\n         *\n         * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n         * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n         * as a pass-through, and call original `removeEventListener` with it.\n         *\n         * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n         * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n         * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n         * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n         * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n         *\n         * When someone adds a handler prior to initialization, and then do it again, but after,\n         * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n         * to get rid of the initial handler and it'd stick there forever.\n         */\n        const wrappedEventHandler = fn as unknown as WrappedFunction;\n        try {\n          const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n          if (originalEventHandler) {\n            originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n          }\n        } catch (e) {\n          // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n        }\n        return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n      };\n    },\n  );\n}\n", "import type { Hub } from '@sentry/core';\nimport { functionToStringIntegration, inboundFiltersIntegration } from '@sentry/core';\nimport {\n  captureSession,\n  getClient,\n  getCurrentHub,\n  getIntegrationsToSetup,\n  getReportDialogEndpoint,\n  initAndBind,\n  startSession,\n} from '@sentry/core';\nimport type { Integration, Options, UserFeedback } from '@sentry/types';\nimport {\n  addHistoryInstrumentationHandler,\n  logger,\n  stackParserFromStackParserOptions,\n  supportsFetch,\n} from '@sentry/utils';\n\nimport type { BrowserClientOptions, BrowserOptions } from './client';\nimport { BrowserClient } from './client';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { ReportDialogOptions } from './helpers';\nimport { WINDOW, wrap as internalWrap } from './helpers';\nimport { breadcrumbsIntegration } from './integrations/breadcrumbs';\nimport { dedupeIntegration } from './integrations/dedupe';\nimport { globalHandlersIntegration } from './integrations/globalhandlers';\nimport { httpContextIntegration } from './integrations/httpcontext';\nimport { linkedErrorsIntegration } from './integrations/linkederrors';\nimport { browserApiErrorsIntegration } from './integrations/trycatch';\nimport { defaultStackParser } from './stack-parsers';\nimport { makeFetchTransport, makeXHRTransport } from './transports';\n\n/** @deprecated Use `getDefaultIntegrations(options)` instead. */\nexport const defaultIntegrations = [\n  inboundFiltersIntegration(),\n  functionToStringIntegration(),\n  browserApiErrorsIntegration(),\n  breadcrumbsIntegration(),\n  globalHandlersIntegration(),\n  linkedErrorsIntegration(),\n  dedupeIntegration(),\n  httpContextIntegration(),\n];\n\n/** Get the default integrations for the browser SDK. */\nexport function getDefaultIntegrations(_options: Options): Integration[] {\n  // We return a copy of the defaultIntegrations here to avoid mutating this\n  return [\n    // eslint-disable-next-line deprecation/deprecation\n    ...defaultIntegrations,\n  ];\n}\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\ndeclare const __SENTRY_RELEASE__: string | undefined;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n *   dsn: '__DSN__',\n *   // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n *   scope.setExtra({ battery: 0.7 });\n *   scope.setTag({ user_mode: 'admin' });\n *   scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n *   message: 'My Breadcrumb',\n *   // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n *   message: 'Manual',\n *   stacktrace: [\n *     // ...\n *   ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n  if (options.defaultIntegrations === undefined) {\n    options.defaultIntegrations = getDefaultIntegrations(options);\n  }\n  if (options.release === undefined) {\n    // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n    if (typeof __SENTRY_RELEASE__ === 'string') {\n      options.release = __SENTRY_RELEASE__;\n    }\n\n    // This supports the variable that sentry-webpack-plugin injects\n    if (WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id) {\n      options.release = WINDOW.SENTRY_RELEASE.id;\n    }\n  }\n  if (options.autoSessionTracking === undefined) {\n    options.autoSessionTracking = true;\n  }\n  if (options.sendClientReports === undefined) {\n    options.sendClientReports = true;\n  }\n\n  const clientOptions: BrowserClientOptions = {\n    ...options,\n    stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n    integrations: getIntegrationsToSetup(options),\n    transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n  };\n\n  initAndBind(BrowserClient, clientOptions);\n\n  if (options.autoSessionTracking) {\n    startSessionTracking();\n  }\n}\n\ntype NewReportDialogOptions = ReportDialogOptions & { eventId: string }; // eslint-disable-line\n\ninterface ShowReportDialogFunction {\n  /**\n   * Present the user with a report dialog.\n   *\n   * @param options Everything is optional, we try to fetch all info need from the global scope.\n   */\n  (options: NewReportDialogOptions): void;\n\n  /**\n   * Present the user with a report dialog.\n   *\n   * @param options Everything is optional, we try to fetch all info need from the global scope.\n   *\n   * @deprecated Please always pass an `options` argument with `eventId`. The `hub` argument will not be used in the next version of the SDK.\n   */\n  // eslint-disable-next-line deprecation/deprecation\n  (options?: ReportDialogOptions, hub?: Hub): void;\n}\n\nexport const showReportDialog: ShowReportDialogFunction = (\n  // eslint-disable-next-line deprecation/deprecation\n  options: ReportDialogOptions = {},\n  // eslint-disable-next-line deprecation/deprecation\n  hub: Hub = getCurrentHub(),\n) => {\n  // doesn't work without a document (React Native)\n  if (!WINDOW.document) {\n    DEBUG_BUILD && logger.error('Global document not defined in showReportDialog call');\n    return;\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  const { client, scope } = hub.getStackTop();\n  const dsn = options.dsn || (client && client.getDsn());\n  if (!dsn) {\n    DEBUG_BUILD && logger.error('DSN not configured for showReportDialog call');\n    return;\n  }\n\n  if (scope) {\n    options.user = {\n      ...scope.getUser(),\n      ...options.user,\n    };\n  }\n\n  if (!options.eventId) {\n    // eslint-disable-next-line deprecation/deprecation\n    options.eventId = hub.lastEventId();\n  }\n\n  const script = WINDOW.document.createElement('script');\n  script.async = true;\n  script.crossOrigin = 'anonymous';\n  script.src = getReportDialogEndpoint(dsn, options);\n\n  if (options.onLoad) {\n    script.onload = options.onLoad;\n  }\n\n  const { onClose } = options;\n  if (onClose) {\n    const reportDialogClosedMessageHandler = (event: MessageEvent): void => {\n      if (event.data === '__sentry_reportdialog_closed__') {\n        try {\n          onClose();\n        } finally {\n          WINDOW.removeEventListener('message', reportDialogClosedMessageHandler);\n        }\n      }\n    };\n    WINDOW.addEventListener('message', reportDialogClosedMessageHandler);\n  }\n\n  const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n  if (injectionPoint) {\n    injectionPoint.appendChild(script);\n  } else {\n    DEBUG_BUILD && logger.error('Not injecting report dialog. No injection point found in HTML');\n  }\n};\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n  // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n  callback();\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @deprecated This function will be removed in v8.\n * It is not part of Sentry's official API and it's easily replaceable by using a try/catch block\n * and calling Sentry.captureException.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// TODO(v8): Remove this function\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn: (...args: any) => any): any {\n  return internalWrap(fn)();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n  if (typeof WINDOW.document === 'undefined') {\n    DEBUG_BUILD && logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n    return;\n  }\n\n  // The session duration for browser sessions does not track a meaningful\n  // concept that can be used as a metric.\n  // Automatically captured sessions are akin to page views, and thus we\n  // discard their duration.\n  startSession({ ignoreDuration: true });\n  captureSession();\n\n  // We want to create a session for every navigation as well\n  addHistoryInstrumentationHandler(({ from, to }) => {\n    // Don't create an additional session for the initial route or if the location did not change\n    if (from !== undefined && from !== to) {\n      startSession({ ignoreDuration: true });\n      captureSession();\n    }\n  });\n}\n\n/**\n * Captures user feedback and sends it to Sentry.\n */\nexport function captureUserFeedback(feedback: UserFeedback): void {\n  const client = getClient<BrowserClient>();\n  if (client) {\n    client.captureUserFeedback(feedback);\n  }\n}\n", "export * from './exports';\n\nimport { Integrations as CoreIntegrations } from '@sentry/core';\n\nimport { WINDOW } from './helpers';\nimport * as BrowserIntegrations from './integrations';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nif (WINDOW.Sentry && WINDOW.Sentry.Integrations) {\n  windowIntegrations = WINDOW.Sentry.Integrations;\n}\n\n/** @deprecated Import the integration function directly, e.g. `inboundFiltersIntegration()` instead of `new Integrations.InboundFilter(). */\nconst INTEGRATIONS = {\n  ...windowIntegrations,\n  // eslint-disable-next-line deprecation/deprecation\n  ...CoreIntegrations,\n  ...BrowserIntegrations,\n};\n\n// eslint-disable-next-line deprecation/deprecation\nexport { INTEGRATIONS as Integrations };\n\nexport {\n  // eslint-disable-next-line deprecation/deprecation\n  InternalReplay as Replay,\n  internalReplayIntegration as replayIntegration,\n  internalGetReplay as getReplay,\n} from '@sentry/replay';\nexport type {\n  InternalReplayEventType as ReplayEventType,\n  InternalReplayEventWithTime as ReplayEventWithTime,\n  InternalReplayBreadcrumbFrame as ReplayBreadcrumbFrame,\n  InternalReplayBreadcrumbFrameEvent as ReplayBreadcrumbFrameEvent,\n  InternalReplayOptionFrameEvent as ReplayOptionFrameEvent,\n  InternalReplayFrame as ReplayFrame,\n  InternalReplayFrameEvent as ReplayFrameEvent,\n  InternalReplaySpanFrame as ReplaySpanFrame,\n  InternalReplaySpanFrameEvent as ReplaySpanFrameEvent,\n} from '@sentry/replay';\n\nexport {\n  // eslint-disable-next-line deprecation/deprecation\n  ReplayCanvas,\n  replayCanvasIntegration,\n} from '@sentry-internal/replay-canvas';\n\nexport {\n  // eslint-disable-next-line deprecation/deprecation\n  Feedback,\n  feedbackIntegration,\n  sendFeedback,\n} from '@sentry-internal/feedback';\n\nexport {\n  captureConsoleIntegration,\n  dedupeIntegration,\n  debugIntegration,\n  extraErrorDataIntegration,\n  reportingObserverIntegration,\n  rewriteFramesIntegration,\n  sessionTimingIntegration,\n  httpClientIntegration,\n  contextLinesIntegration,\n} from '@sentry/integrations';\n\nexport {\n  // eslint-disable-next-line deprecation/deprecation\n  BrowserTracing,\n  defaultRequestInstrumentationOptions,\n  instrumentOutgoingRequests,\n  browserTracingIntegration,\n  startBrowserTracingNavigationSpan,\n  startBrowserTracingPageLoadSpan,\n} from '@sentry-internal/tracing';\nexport type { RequestInstrumentationOptions } from '@sentry-internal/tracing';\nexport {\n  addTracingExtensions,\n  setMeasurement,\n  // eslint-disable-next-line deprecation/deprecation\n  extractTraceparentData,\n  // eslint-disable-next-line deprecation/deprecation\n  getActiveTransaction,\n  // eslint-disable-next-line deprecation/deprecation\n  spanStatusfromHttpCode,\n  getSpanStatusFromHttpCode,\n  setHttpStatus,\n  // eslint-disable-next-line deprecation/deprecation\n  trace,\n  makeMultiplexedTransport,\n  // eslint-disable-next-line deprecation/deprecation\n  ModuleMetadata,\n  moduleMetadataIntegration,\n} from '@sentry/core';\nexport type { SpanStatusType } from '@sentry/core';\nexport type { Span } from '@sentry/types';\nexport { makeBrowserOfflineTransport } from './transports/offline';\nexport { onProfilingStartRouteTransaction } from './profiling/hubextensions';\nexport {\n  // eslint-disable-next-line deprecation/deprecation\n  BrowserProfilingIntegration,\n  browserProfilingIntegration,\n} from './profiling/integration';\n", "import type { BrowserOptions } from '@sentry/browser';\nimport { init as browserInit } from '@sentry/browser';\nimport { applySdkMetadata } from '@sentry/core';\n\n/**\n * Inits the React SDK\n */\nexport function init(options: BrowserOptions): void {\n  const opts = {\n    ...options,\n  };\n\n  applySdkMetadata(opts, 'react');\n\n  browserInit(opts);\n}\n", "import {App} from \"App\";\nimport {allocateBufferStringUTF8, countBytesUTF8} from \"Engine/utils\";\nimport {addBreadcrumb, captureException, captureMessage} from '@sentry/react';\n\n/// Adapter for calling into DeepSightCore Logging framework\nexport namespace AdapterLog {\n\n    function logWhenEngineUnavailable(level: string, message: string){\n        console.log(\"[\" + new Date().toLocaleTimeString() + \"] [\" + level + \"] \" + message);\n    }\n\n    export function TRACE(message: string): void {\n        const engine = App.getInstance()?.getEngine();\n        if(!engine) {\n            logWhenEngineUnavailable(\"TRACE\", message);\n            return;\n        }\n        try {\n            const bufferMessage = allocateBufferStringUTF8(message);\n            engine._dsclogTRACE(bufferMessage, countBytesUTF8(message));\n            engine._free(bufferMessage);\n        }\n        catch (error){\n            console.error(\"Engine crashed:\", error);\n            logWhenEngineUnavailable(\"TRACE\", message);\n        }\n    }\n\n    export function DEBUG(message: string): void {\n        const engine = App.getInstance()?.getEngine();\n        if(!engine) {\n            logWhenEngineUnavailable(\"DEBUG\", message);\n            return;\n        }\n        try {\n            const bufferMessage = allocateBufferStringUTF8(message);\n            engine._dsclogDEBUG(bufferMessage, countBytesUTF8(message));\n            engine._free(bufferMessage);\n        }\n        catch (error){\n            console.error(\"Engine crashed:\", error);\n            logWhenEngineUnavailable(\"DEBUG\", message);\n        }\n    }\n\n    export function INFO(message: string): void {\n        const appInstance: App = App.getInstance();\n        if(!appInstance)\n            captureMessage(message);\n\n        const engine = App.getInstance()?.getEngine();\n        if(!engine) {\n            logWhenEngineUnavailable(\"INFO\", message);\n            return;\n        }\n        try {\n            const bufferMessage = allocateBufferStringUTF8(message);\n            engine._dsclogINFO(bufferMessage, countBytesUTF8(message));\n            engine._free(bufferMessage);\n        }\n        catch (error){\n            console.error(\"Engine crashed:\", error);\n            logWhenEngineUnavailable(\"INFO\", message);\n        }\n    }\n\n    export function WARN(message: string): void {\n        const appInstance: App = App.getInstance();\n        if(!appInstance)\n            addBreadcrumb({\n                category: \"Warning\",\n                message: message,\n                level: \"warning\",\n            });\n\n        const engine = App.getInstance()?.getEngine();\n        if(!engine) {\n            logWhenEngineUnavailable(\"WARN\", message);\n            return;\n        }\n        try {\n            const bufferMessage = allocateBufferStringUTF8(message);\n            engine._dsclogWARN(bufferMessage, countBytesUTF8(message));\n            engine._free(bufferMessage);\n        }\n        catch (error){\n            console.error(\"Engine crashed:\", error);\n            logWhenEngineUnavailable(\"WARN\", message);\n        }\n    }\n\n    export function ERROR(message: string): void {\n        const appInstance: App = App.getInstance();\n\n        if(!appInstance)\n            captureException(new Error(message));\n\n\n        const engine = appInstance?.getEngine();\n        if(!engine) {\n            logWhenEngineUnavailable(\"ERROR\", message);\n            return;\n        }\n\n        try {\n            const bufferMessage = allocateBufferStringUTF8(message);\n            engine._dsclogERROR(bufferMessage, countBytesUTF8(message));\n            engine._free(bufferMessage);\n        }\n        catch (error){\n            console.error(\"Engine crashed:\", error);\n            logWhenEngineUnavailable(\"ERROR\", message);\n        }\n    }\n\n    export function CRITICAL(message: string): void {\n        const appInstance: App = App.getInstance();\n        if(!appInstance)\n            captureException(new Error(\"CRITICAL: \" + message));\n\n        const engine = App.getInstance()?.getEngine();\n        if(!engine) {\n            logWhenEngineUnavailable(\"CRITICAL\", message);\n            return;\n        }\n        try {\n            const bufferMessage = allocateBufferStringUTF8(message);\n            engine._dsclogCRITICAL(bufferMessage, countBytesUTF8(message));\n            engine._free(bufferMessage);\n        }\n        catch (error){\n            console.error(\"Engine crashed:\", error);\n            logWhenEngineUnavailable(\"CRITICAL\", message);\n        }\n    }\n}", "import {App} from \"@root/Frontend/Studio/App\";\nimport i18next from \"i18next\";\nimport {MainModule, Language} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {DAY_IN_SECONDS} from \"@utils/utils\";\n\n// add group to sequence\nexport function addGroupsExclusive(sequenceID: bigint, groupID: bigint): void {\n    App.getInstance().getEngine()?.addGroupExclusive(sequenceID, groupID);\n}\n\n/// clone a sequence\nexport function cloneSequence(sequenceID: bigint, newTitle: string): bigint {\n    const engine: MainModule = App.getInstance().getEngine();\n    if (!engine)\n        return BigInt(0);\n\n    const cloneSequenceID: bigint = engine.cloneSequence(sequenceID, newTitle.trim() ? newTitle :\n                                                                                       getSequenceTitle(sequenceID));\n    return BigInt.asUintN(64, cloneSequenceID);\n}\n\n/// delete a sequence\nexport function deleteSequence(sequenceID: bigint): boolean {\n    return Boolean(App.getInstance().getEngine()?.deleteSequence(sequenceID));\n}\n\n/// get the child Sequence ID\nexport function getChildSequenceID(sequenceID: bigint): bigint {\n    const engine: MainModule = App.getInstance().getEngine();\n    return engine ? BigInt.asUintN(64, engine.getChildSequenceID(sequenceID)) : BigInt(0);\n}\n\n/// get current sequence\nexport function getCurrentSequenceID(): bigint {\n    const engine: MainModule = App.getInstance().getEngine();\n    return engine ? BigInt.asUintN(64, engine.getCurrentSequenceID()) : BigInt(0);\n}\n\n/// return an array of IDs of sequences with revisions\nexport function getCurrentWorldSequencesList(): bigint[] {\n    const engine: MainModule = App.getInstance().getEngine();\n    if (!engine)\n        return [];\n\n    const buffer: BigUint64Array = engine.getCurrentWorldSequencesList();\n    const sequenceIDs: bigint[] = Array.from(buffer);\n    engine._free(buffer.byteOffset);\n\n    return sequenceIDs;\n}\n\n\n/// return sequence groups exclusive\nexport function getGroupsExclusive(sequenceID: bigint): Set<bigint> {\n    const engine: MainModule = App.getInstance().getEngine();\n    if (!engine)\n        return new Set();\n\n    const buffer: BigUint64Array = engine.getGroupsExclusive(sequenceID);\n    const groupsExclusive: Set<bigint> = new Set(Array.from(buffer));\n    engine._free(buffer.byteOffset);\n\n    return groupsExclusive;\n}\n\n/// get the parent Sequence ID\nexport function getParentSequenceID(sequenceID: bigint): bigint {\n    const engine: MainModule = App.getInstance().getEngine();\n    return engine ? BigInt.asUintN(64, engine.getParentSequenceID(sequenceID)) : BigInt(0);\n}\n\n/// get the publisher ID\nexport function getPeerPublisherID(sequenceID: bigint): bigint {\n    const engine: MainModule = App.getInstance().getEngine();\n    return engine ? BigInt.asUintN(64, engine.getPeerPublisherID(sequenceID)) : BigInt(0);\n}\n\n/// get the published timestamp\nexport function getPublishedTimestamp(sequenceID: bigint): bigint {\n    const engine: MainModule = App.getInstance().getEngine();\n    return engine ? BigInt.asUintN(64, engine.getPublishedTimestamp(sequenceID)) : BigInt(0);\n}\n\nexport function getSequenceLevel(sequenceID: bigint): bigint {\n    const engine: MainModule = App.getInstance().getEngine();\n    return engine ? BigInt.asUintN(64, engine.getSequenceLevel(sequenceID)) : BigInt(0);\n}\n\nexport function getSequenceExpirationDays(sequenceID: bigint): bigint {\n    const engine: MainModule = App.getInstance().getEngine();\n    return engine ? BigInt.asUintN(64, engine.getSequenceExpiration(sequenceID)) / DAY_IN_SECONDS : BigInt(0);\n}\n\n/// returns the notes of the given sequenceID\nexport function getSequenceNotes(sequenceID: bigint): string {\n    if (!sequenceID)\n        return \"\";\n\n    return App.getInstance().getEngine()?.getSequenceNotes(sequenceID) ?? \"\";\n}\n\n/// get a sequence's steps count\nexport function getSequenceStepsCount(sequenceID: bigint): number {\n    return App.getInstance().getEngine()?.getSequenceStepsCount(sequenceID) ?? 0;\n}\n\n/// get sequence title\nexport function getSequenceTitle(sequenceID: bigint): string {\n    if (!sequenceID)\n        return \"\";\n\n    return App.getInstance().getEngine()?.getSequenceTitle(sequenceID) ?? \"\";\n}\n\n/// returns a sequence's video ID\nexport function getSequenceVideoID(sequenceID: bigint): bigint {\n    const engine: MainModule = App.getInstance().getEngine();\n    return engine ? BigInt.asUintN(64, engine.getSequenceVideoID(sequenceID)) : BigInt(0);\n}\n\n/// returns the critical status of the given sequenceID\nexport function isSequenceCritical(sequenceID: bigint): boolean {\n    if (!sequenceID)\n        return false;\n\n    return Boolean(App.getInstance().getEngine()?.isSequenceCritical(sequenceID));\n}\n\n/// verify if a sequence is loaded\nexport function isSequenceLoaded(sequenceID: bigint): boolean {\n    return Boolean(App.getInstance().getEngine()?.isSequenceLoaded(sequenceID));\n}\n\n// remove group from sequence\nexport function removeGroupsExclusive(sequenceID: bigint, groupID: bigint) {\n    App.getInstance().getEngine()?.removeGroupExclusive(sequenceID, groupID);\n}\n\n/// restore a sequence\nexport function restoreSequence(sequenceID: bigint): bigint {\n    const engine: MainModule = App.getInstance().getEngine();\n    return engine ? BigInt.asUintN(64, App.getInstance().getEngine()?.restoreSequence(sequenceID)) : BigInt(0);\n}\n\n/// saves the new critical status to the given sequence by ID\nexport function saveSequenceCritical(sequenceID: bigint, critical: boolean) {\n    if (!sequenceID)\n        return;\n\n    App.getInstance().getEngine()?.saveSequenceCritical(sequenceID, critical);\n}\n\nexport function saveSequenceLevel(sequenceID: bigint, level: bigint) {\n    if (!sequenceID)\n        return;\n\n    App.getInstance().getEngine()?.saveSequenceLevel(sequenceID, Number(level));\n}\n\n/// saves the new expiration of the given sequenceID\nexport function saveSequenceExpiration(sequenceID: bigint, expirationDays: bigint) {\n    if (!sequenceID)\n        return;\n\n    const expirationSeconds: bigint = expirationDays * DAY_IN_SECONDS;\n    App.getInstance().getEngine()?.saveSequenceExpiration(sequenceID, expirationSeconds);\n}\n\n/// saves the new notes to the given sequence by ID\nexport function saveSequenceNotes(sequenceID: bigint, notes: string) {\n    if (!sequenceID)\n        return;\n\n    App.getInstance().getEngine()?.saveSequenceNotes(sequenceID, notes);\n}\n\n/// updates the language for the specified sequence\nexport function setSequenceLanguage(sequenceID: bigint, newLanguage: Language) {\n    if (!sequenceID)\n        return;\n\n    App.getInstance().getEngine()?.setSequenceLanguage(sequenceID, newLanguage);\n}\n\n/// sets the new sorting criteria for the sequences\nexport function setSequencesSorting(criteria: number, isAscending: boolean) {\n    App.getInstance().getEngine()?.setSequencesSorting(criteria, isAscending);\n}\n\n/// update sequence title\nexport function updateSequenceTitle(sequenceID: bigint, title: string) {\n    if (!sequenceID)\n        return;\n\n    App.getInstance().getEngine()?.updateSequenceTitle(sequenceID, title.trim() === \"\" ? i18next.t(\"Unnamed Sequence\") :\n        title);\n}\n", "import {App} from \"App\";\nimport {\n    allocateBufferStringUTF8,\n    convertAndReleaseStringC,\n    readFile\n} from \"Engine/utils\";\nimport i18next from \"i18next\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Toast} from \"@root/react-components/src/misc/Toast\";\nimport {Box} from \"@mui/material\";\nimport * as React from \"react\";\nimport {MainModule} from \"@backend/public/studio/WebAssembly.mjs\";\n\nexport function getStepsCount(){\n    const engine = App.getInstance().getEngine();\n\n    if(!engine)\n        return 0;\n\n    return engine._getCurrentSequenceStepsCount();\n}\n\nexport function getCurrentStepID(): bigint {\n    const engine = App.getInstance().getEngine();\n\n    if(!engine)\n        return BigInt(0);\n\n    return BigInt.asUintN(64, engine._getCurrentStepID());\n}\n\nexport function getStepIDAtIndex(index: number){\n    return BigInt.asUintN(64, App.getInstance().getEngine()._getStepIDAtIndex(index));\n}\n\nexport function getCurrentStepIndex(){\n    const engine = App.getInstance().getEngine();\n    return engine._getCurrentStepIndex();\n}\n\nexport function isPlaying(): boolean {\n    const engine = App.getInstance().getEngine();\n    return engine ? Boolean(engine._isCurrentStepActive()) : false;\n}\n\nexport function getStepState() {\n    const engine = App.getInstance().getEngine();\n    if(!engine)\n        return \"\";\n\n    if(engine._isCurrentStepActive())\n        return \"Playing\";\n    else if(engine._getStepProgress() !== 0 && engine._getStepProgress() !== 1)\n        return \"Paused\";\n    else if(engine._isAtStart())\n        return \"Start\";\n    else\n        return \"End\";\n};\n\nexport function isAtStart(): boolean {\n    return Boolean(App.getInstance().getEngine()._isAtStart());\n}\n\nexport function selectStep(stepID: bigint) {\n    return BigInt.asUintN(64, App.getInstance().getEngine()._selectStep(stepID));\n}\n\nexport function toStart() {\n    App.getInstance().getEngine()._goToStepStart();\n    App.getInstance().refreshToolbar();\n}\n\nexport function toEnd() {\n    App.getInstance().getEngine()._goToStepEnd();\n    App.getInstance().refreshToolbar();\n}\n\nexport function addStep(stepIndex: number, stepType: StepType) : bigint {\n    return BigInt.asUintN(64, App.getInstance().getEngine()._addStep(stepIndex, stepType));\n}\n\nexport function duplicateStep(stepID: bigint){\n    const engine = App.getInstance().getEngine();\n    engine._duplicateStep(stepID);\n}\n\nexport function getStepType(stepID: bigint): StepType | null {\n    if(!stepID)\n        return null;\n\n    const type: number = App.getInstance().getEngine()._getStepType(stepID);\n    return type < Object.keys(StepType).length / 2 ? type as StepType : null;\n}\n\nexport function getStepsList(): bigint[] {\n    const stepsIDs: bigint[] = [];\n\n    for (let i = 0; i < getStepsCount(); i++)\n        stepsIDs.push(getStepIDAtIndex(i));\n\n    return stepsIDs;\n}\n\nexport function getStepAnimatedDuration(stepID: bigint): number {\n    return App.getInstance().getEngine()._getStepDuration(stepID);\n}\n\nexport function getStepAnimatedBackAndForth(stepID: bigint): boolean {\n    return Boolean(App.getInstance().getEngine()._isStepAnimationBackAndForth(stepID));\n}\n\nexport function getStepAnimatedReferenceImageFilePath(stepID: bigint): string {\n    return convertAndReleaseStringC(App.getInstance().getEngine()._getAnimatedStepImageFilePath(stepID));\n}\n\nexport function getStepAnimatedReferenceVideoID(stepID: bigint): bigint {\n    return BigInt.asUintN(64, App.getInstance().getEngine()._getAnimatedStepVideo(stepID));\n}\n\nexport function updateStepDuration(stepID: bigint, duration: number): void {\n    if (stepID && duration !== undefined)\n        App.getInstance().getEngine()._setStepDuration(stepID, duration);\n}\n\nexport function updateStepBackAndForth(stepID: bigint, backAndForth: boolean): void {\n    if (stepID && backAndForth !== undefined)\n        App.getInstance().getEngine()._setStepAnimationBackAndForth(stepID, backAndForth);\n}\n\nexport function updateStepImageFilePath(stepID: bigint, imageFilePath: string): void {\n    if (!stepID || imageFilePath === undefined || imageFilePath === null)\n        return;\n\n    const filePathBuffer = allocateBufferStringUTF8(imageFilePath);\n    const engine = App.getInstance().getEngine();\n    engine._setAnimatedStepImageFilePath(stepID, filePathBuffer);\n    engine._free(filePathBuffer);\n}\n\nexport function updateStepAnimatedVideoID(stepID: bigint, videoID: bigint): void {\n    if (stepID)\n        App.getInstance().getEngine()._setAnimatedStepVideoID(stepID, videoID);\n}\n\nexport function saveFileToCore(file: File): Promise<string>{\n    const engine: MainModule = App.getInstance().getEngine();\n    const path: string = engine.getTemporaryFolder() + '/' + UtilsShared.generateRandomString(8) + '/';\n    // load file with file reader\n    return new Promise( (res) => readFile(file, path, (filePath: string) => {\n        res(filePath);\n    }));\n}\n\nexport function updateStepQuestionCorrectAnswer(stepID: bigint, correctAnswer: string) {\n    if (!stepID)\n        return;\n\n    const correctAnswerBuffer = allocateBufferStringUTF8(correctAnswer);\n    const engine = App.getInstance().getEngine();\n    engine._setStepQuestionCorrectAnswer(stepID, correctAnswerBuffer);\n    engine._free(correctAnswerBuffer)\n}\n\nexport function getProgress(): number {\n    const activeStepID: bigint = getCurrentStepID();\n\n    if(!activeStepID)\n        return 0;\n\n    const activeStepType: StepType | null = getStepType(activeStepID);\n    return activeStepType === StepType.ANIMATED ? App.getInstance().getEngine()._getStepProgress() : 0;\n}\n\nexport function playStep() {\n    App.getInstance().getEngine()._activateCurrentStep();\n}\n\nexport function stopStep() {\n    App.getInstance().getEngine()._disableCurrentStep();\n    App.getInstance().refreshToolbar();\n}\n\nexport function isStartSaved(stepID: bigint): boolean {\n    const engine = App.getInstance().getEngine();\n    return engine ? Boolean(engine._isStepSaved(stepID, 1)) : false;\n}\n\nexport function isEndSaved(stepID: bigint): boolean {\n    const engine = App.getInstance().getEngine();\n    return engine ? Boolean(engine._isStepSaved(stepID, 0)) : false;\n}\n\nexport function deleteStep(stepID: bigint) {\n    return BigInt.asUintN(64, App.getInstance().getEngine()._deleteStep(stepID));\n}\n\nexport function reverseSteps(sequenceID: bigint): boolean {\n    const engine = App.getInstance().getEngine();\n    return engine ? Boolean(engine._reverseSteps(sequenceID)) : false;\n}\n\nexport function reverseStepAnimated(stepID: bigint) {\n    Toast.showToast(<Box>{i18next.t(\"The step have been reversed\")}</Box>);\n    App.getInstance().getEngine()._reverseStepAnimated(stepID);\n}\n\n//////////////////////////////// TOOLS ////////////////////////////////\n\n/// adds a temporary asset document to the current step\nexport function addTemporaryAssetDocument(documentID: bigint): bigint {\n    const engine = App.getInstance().getEngine();\n    return BigInt.asUintN(64, engine._addTemporaryAssetDocumentToCurrentStep(documentID));\n}\n\nexport function isStepAsset(assetID: bigint): boolean {\n    return App.getInstance().getEngine().isStepAsset(getCurrentStepID(), assetID);\n}\n\n/// Remove a tool from a step\nexport function removeTemporaryAsset(assetID: bigint) {\n    const engine = App.getInstance().getEngine();\n    if (!assetID) {\n        console.log(\"unable to remove temporary asset \", assetID);\n        return;\n    }\n    engine._removeTemporaryAsset(assetID);\n}\n\nexport function canProceedToNextStep(): boolean {\n    return Boolean(App.getInstance().getEngine()._canProceedToNextStep());\n}\n\nexport function canProceedToPreviousStep(): boolean {\n    return Boolean(App.getInstance().getEngine()._canProceedToPreviousStep());\n}\n\nexport function nextStep(){\n    return BigInt.asUintN(64, App.getInstance().getEngine()._nextStep());\n}\n\nexport function previousStep(){\n    return BigInt.asUintN(64, App.getInstance().getEngine()._previousStep());\n}\n\nexport function isAssetForCurrentStep(assetID: bigint): boolean {\n    const engine = App.getInstance().getEngine();\n    return engine ? Boolean(engine._isAssetForCurrentStep(assetID)) : false;\n}\n", "import {JumpDestination} from \"@root/public/studio/WebAssembly.mjs\";\n\n/// this enum needs to match exactly what is inside the Core at: Core/Entities/Step.h\nexport enum StepType {\n    ANIMATED = 0,\n    BRANCHING = 1,\n    QUESTION = 2,\n    PHOTO = 3,\n    VIDEO = 4,\n    INPUT = 5\n}\n\nexport enum StepAttribute {\n    TEXT = \"Text\",\n    TYPE = \"Type\"\n}\n\nexport interface Step {\n    Text: {value: bigint, timestamp: bigint},\n    Type: {value: string, timestamp: bigint}\n}\n\n////////////////////////////// Step Animated //////////////////////////////\n\nexport const StepAnimatedAttribute = {\n    ...StepAttribute,\n    DURATION: \"Duration\",\n    BACK_AND_FORTH: \"BackAndForth\",\n    REFERENCE_IMAGE_URL_S3: \"ReferenceImageUrlS3\",\n    REFERENCE_VIDEO: \"ReferenceVideo\",\n    TEMPORARY_ASSETS_LIST: \"Assets\",\n    TEMPORARY_ASSET_STATE: \"TemporaryAssetState\",\n    WORLD_ASSET_STATE: \"WorldAssetState\",\n    WORLD_ASSET_DOCUMENT_PARTS_STATE: \"WorldAssetDocumentPartsState\"\n} as const;\n\nexport type StepAnimatedAttributeType = typeof StepAnimatedAttribute[keyof typeof StepAnimatedAttribute];\n\nexport interface StepAnimated extends Step {\n    Duration: {value: string | null, timestamp: bigint},\n    BackAndForth: {value: string, timestamp: bigint},\n    ReferenceImageUrlS3: {value: string, timestamp: bigint},\n    ReferenceVideo: {value: bigint, timestamp: bigint},\n    Assets: {value: AssetInfo[], timestamp: bigint},\n    TemporaryAssetState: {value: States[], timestamp: bigint},\n    WorldAssetState: {value: States[], timestamp: bigint},\n    WorldAssetDocumentPartsState: {value: PartsStates[], timestamp: bigint}\n}\n\nexport type PartsStates = {\n    AssetID: bigint,\n    PartsStart?: Buffer,\n    PartsEnd?: Buffer,\n    StartTimestamp?: bigint,\n    EndTimestamp?: bigint\n}\n\nexport type States = {\n    AssetID: bigint,\n    Start?: Buffer,\n    End?: Buffer,\n    StartTimestamp?: bigint,\n    EndTimestamp?: bigint\n}\n\nexport type AssetStateInfo = {\n    assetID: bigint,\n    isStart: boolean,\n}\n\n// TODO(@marco) update type to {[assetID: string]: AssetType}\nexport type AssetInfo = {\n    AssetID: bigint,\n    Type: string\n}\n\n////////////////////////////// Step Question //////////////////////////////\n\nexport const StepQuestionAttribute = {\n    ...StepAttribute,\n    TEXT_ANSWERS: \"TextAnswers\",\n    CORRECT_ANSWER: \"CorrectAnswer\",\n    TEXT_EXPLANATION: \"TextExplanation\",\n\n    // TODO (Marco): Remove these @deprecated attributes in a few months\n    ANSWERS: \"Answers\",\n    EXPLANATION: \"Explanation\"\n} as const;\n\nexport type StepQuestionAttributeType = typeof StepQuestionAttribute[keyof typeof StepQuestionAttribute];\n\nexport interface StepQuestion extends Step {\n    TextAnswers: {value: bigint[], timestamp: bigint},\n    CorrectAnswer: {value: string, timestamp: bigint},\n    TextExplanation: {value: bigint, timestamp: bigint},\n    Explanation: {value: string, timestamp: bigint},\n    Answers: {value: string[], timestamp: bigint}\n}\n\nexport const STEP_QUESTION_ANSWERS_LIMIT: number = 6;\n\n////////////////////////////// Step Branching //////////////////////////////\n\nexport const StepBranchingAttribute = {\n    ...StepAttribute,\n    JUMP_DESTINATION_YES: \"JumpDestinationYes\",\n    JUMP_DESTINATION_NO: \"JumpDestinationNo\"\n} as const;\n\nexport type StepBranchingAttributeType = typeof StepBranchingAttribute[keyof typeof StepBranchingAttribute];\n\nexport enum DestinationType {\n    Continue = \"Continue\",\n    Step     = \"Step\",\n    Sequence = \"Sequence\"\n}\n\nexport interface StepBranching extends Step {\n    JumpDestinationYes: {value: JumpDestination, timestamp: bigint},\n    JumpDestinationNo: {value: JumpDestination, timestamp: bigint}\n}\n\n////////////////////////////// Step Photo //////////////////////////////\n\nexport interface StepPhoto extends Step {\n    ReferenceImageUrlS3: {value: string, timestamp: bigint},\n    ReferenceImageBounds: {value: Bounds, timestamp: bigint}\n}\n\nexport const StepPhotoAttribute = {\n    ...StepAttribute,\n    REFERENCE_IMAGE_URL_S3: \"ReferenceImageUrlS3\",\n    REFERENCE_IMAGE_BOUNDS: \"ReferenceImageBounds\"\n} as const;\n\nexport type StepPhotoAttributeType = typeof StepPhotoAttribute[keyof typeof StepPhotoAttribute];\n\nexport type Bounds = { x: number, y: number, w: number, h: number };\nexport type BoundsKeys = keyof Bounds;\n\n////////////////////////////// Step Input //////////////////////////////\n\nexport const StepInputAttribute = {\n    ...StepAttribute,\n    MINIMUM: \"Minimum\",\n    MAXIMUM: \"Maximum\",\n    TEXT_EXPLANATION: \"TextExplanation\",\n} as const;\n\nexport type StepInputAttributeType = typeof StepInputAttribute[keyof typeof StepInputAttribute];\n\nexport interface StepInput extends Step {\n    Minimum: {value: number | null, timestamp: bigint},\n    Maximum: {value: number | null, timestamp: bigint},\n    TextExplanation: {value: bigint, timestamp: bigint},\n}\n\n////////////////////////////// Common //////////////////////////////\n\nexport const AllStepAttributes = {\n    ...StepAnimatedAttribute,\n    ...StepQuestionAttribute,\n    ...StepBranchingAttribute,\n    ...StepPhotoAttribute,\n    ...StepInputAttribute\n} as const;\n\nexport type AllStepAttributesType = typeof AllStepAttributes[keyof typeof AllStepAttributes];\n\n/// Converts the string into its StepType equivalent\nexport function convertStringToStepType(stepType: string): StepType {\n    if (stepType === \"Confirm\")\n        stepType = StepType[StepType.BRANCHING];\n    return StepType[stepType.toUpperCase() as keyof typeof StepType];\n}\n\n// convert StepType to a string(\"Animated\", \"Branching\", \"Question\", etc.)\nexport function convertStepTypeToString(stepType: StepType): string {\n    if (!StepType[stepType])\n        return \"Undefined\";\n    const lowerCaseType: string = StepType[stepType].toLowerCase();\n    return lowerCaseType[0].toUpperCase() + lowerCaseType.slice(1);\n}\n\nexport class EventStepAttributeChanged {\n    static readonly EVENT_STEP_ATTRIBUTED_CHANGED: string = \"stepAttribute.changed\";\n    worldID: bigint;\n    sequenceID: bigint;\n    stepID: bigint;\n    attribute: string;\n    timestamp: bigint;\n    info?: AssetStateInfo;\n}", "import {MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {App} from \"@root/Frontend/Studio/App\";\n\nexport class AdapterUtils {\n    private static _engine: MainModule;\n\n    public static initialize(engine: MainModule) {\n        AdapterUtils._engine = engine;\n    }\n\n    public static ensureDirectoryExist(filePath: string) {\n        let slashPos = filePath.indexOf('/');\n        const engine = AdapterUtils._engine;\n        while ( slashPos !== -1 ) {\n            const dirName = filePath.substring(0, slashPos);\n            if (dirName && !engine.directoryExists(dirName))\n                engine.FS.mkdir(dirName, 511);\n            slashPos = filePath.indexOf('/', slashPos+1);\n        }\n    }\n\n    public static getUniqueFilePath(folderName: string, fileName: string): string {\n        const engine = AdapterUtils._engine;\n        let filePath = `${folderName}/${fileName}`;\n\n        // split at last dot to get file name and extension\n        const lastDotIndex: number = fileName.lastIndexOf(\".\");\n\n        let name: string = fileName;\n        let extension: string = \"\";\n        if(lastDotIndex >= 0) {\n            name = fileName.substring(0, lastDotIndex);\n            extension = fileName.substring(lastDotIndex);\n        }\n\n        let count: number = 0;\n        while (engine.directoryExists(filePath))\n            filePath = `${folderName}/${name}(${++count})${extension}`;\n\n        return filePath;\n    }\n\n    // Load the given file in the core and return the file path\n    public static saveFileToCore(file: File): Promise<string> {\n        return new Promise<string>((resolve) => {\n            const fileReader: FileReader = new FileReader();\n            fileReader.onload = (e: ProgressEvent<FileReader>) => {\n                if (!e.target)\n                    resolve(\"\");\n\n                const arrayFile: ArrayBuffer = e.target?.result as ArrayBuffer;\n                const arrayBufferView: Uint8Array = new Uint8Array(arrayFile);\n                const engine = AdapterUtils._engine;\n\n                // save the file into the FileSystem locally\n                const tmpFolder: string = engine.getTemporaryFolder();\n                const filePath: string = AdapterUtils.getUniqueFilePath(tmpFolder, file.name);\n\n                // make the directory in the virtual file system\n                AdapterUtils.ensureDirectoryExist(filePath);\n\n                const stream = engine.FS.open(filePath, 'w+');\n                engine.FS.write(stream, arrayBufferView, 0, arrayBufferView.byteLength);\n                engine.FS.close(stream);\n\n                // resolve the promise with the file path in the core\n                resolve(filePath);\n            };\n            fileReader.readAsArrayBuffer(file);\n        });\n    }\n\n    // get a file binary content in Core\n    public static getCoreFileBinary(fileName: string, directory: string): Uint8Array{\n        const engine = AdapterUtils._engine;\n\n        if (!fileName)\n            return new Uint8Array();\n\n        // attempt to locate the full path\n        const path: string = engine.getCoreFilePath(fileName, directory);\n        if (!path)\n            return new Uint8Array();\n\n        return engine.FS.readFile(path, { encoding: 'binary' });\n    }\n\n    public static createBlobUrlFromFilePath(filePath: string): string {\n        if (!filePath)\n            return \"\";\n\n        const binaryArray: Uint8Array = AdapterUtils.getCoreFileBinary(filePath, \"\");\n        if (!binaryArray.length)\n            return \"\";\n        const blob: Blob = new Blob([binaryArray], {type: \"octet/stream\"});\n        return URL.createObjectURL(blob);\n    }\n\n    public static formatSeconds(seconds: bigint): string {\n        return App.getInstance().getEngine().formatSeconds(seconds);\n    }\n}\n", "import {App} from \"@root/Frontend/Studio/App\";\nimport i18next from \"i18next\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {MainModule} from \"@backend/public/studio/WebAssembly.mjs\";\nimport {STEP_QUESTION_ANSWERS_LIMIT} from \"@backend/Types/Step\";\n\nexport function containsTextAnswer(stepID: bigint, textID: bigint): boolean {\n    return App.getInstance().getEngine().containsTextAnswer(stepID, textID);\n}\n\nexport function getStepQuestionAnswers(stepID: bigint): string[] {\n    return App.getInstance().getEngine().getStepQuestionAnswers(stepID);\n}\n\nexport function getStepQuestionCorrectAnswer(stepID: bigint): string {\n    return App.getInstance().getEngine().getStepQuestionCorrectAnswer(stepID);\n}\n\nexport function getStepQuestionAnswerTexts(stepID: bigint): bigint[] {\n    const engine: MainModule = App.getInstance().getEngine();\n\n    const buffer: BigUint64Array = engine.getStepQuestionAnswerTexts(stepID);\n    const textIDs: bigint[] = Array.from(buffer);\n    engine._free(buffer.byteOffset);\n\n    return textIDs;\n}\n\nexport function getStepTextID(stepID: bigint): bigint {\n    return BigInt.asUintN(64, App.getInstance().getEngine().getStepTextID(stepID));\n}\n\nexport function getStepQuestionTextExplanationID(stepID: bigint): bigint {\n    return BigInt.asUintN(64, App.getInstance().getEngine().getStepQuestionTextExplanationID(stepID));\n}\n\nexport function removeAnswer(stepID: bigint, index: number) {\n    if (index < 0 || index >= STEP_QUESTION_ANSWERS_LIMIT)\n        return;\n    App.getInstance().getEngine().removeAnswer(stepID, index);\n}\n\nexport function updateAnswerOriginalText(stepID: bigint, originalText: string, index: number) {\n    if (index < 0 || index >= STEP_QUESTION_ANSWERS_LIMIT)\n        return;\n    App.getInstance().getEngine().updateAnswerOriginalText(stepID, originalText, index);\n}\n\nexport function updateQuestionExplanationOriginalText(stepID: bigint, originalText: string) {\n    App.getInstance().getEngine().updateQuestionExplanationOriginalText(stepID, originalText);\n}\n\nexport function updateStepOriginalText(stepID: bigint, title: string) {\n    const newTitle: string = title ? UtilsShared.cleanStringForASCIIExtended(title) : i18next.t(\"Unnamed Step\");\n    App.getInstance().getEngine().updateStepOriginalText(stepID, newTitle);\n}\n\nexport function saveStepInitializeAssetIDs(stepID: bigint) {\n    App.getInstance().getEngine().saveStepInitializeAssetIDs(stepID);\n}\n\nexport function generateVideoAnnotatedTimeline(videoID: bigint): number {\n    return App.getInstance().getEngine().generateVideoAnnotatedTimeline(videoID);\n}\n\nexport function getAnnotatedTimelineProgress(videoID: bigint): number {\n    return App.getInstance().getEngine().getAnnotatedTimelineProgress(videoID);\n}\n\nexport function getAnnotatedTimelineTimestamps(videoID: bigint): bigint[] {\n    return App.getInstance().getEngine().getAnnotatedTimelineTimestamps(videoID);\n}\n\nexport function getAnnotatedTimelineDescription(videoID: bigint, timestamp: bigint): string {\n    return App.getInstance().getEngine().getAnnotatedTimelineDescription(videoID, timestamp);\n}\n\nexport function reorderStepList(newStepIDs: bigint[]): boolean {\n    const engine = App.getInstance().getEngine();\n\n    // create buffer uint64_t (bigint) to store the new step IDs order\n    const buffer: number = engine._malloc(newStepIDs.length * 8);\n    const arrayView      = new BigUint64Array(engine.HEAPU8.buffer, buffer, newStepIDs.length);\n    arrayView.set(newStepIDs);\n\n    const isReorder: boolean = Boolean(engine.reorderStepList(buffer, newStepIDs.length));\n    engine._free(buffer);\n    return isReorder;\n}\n", "import {App} from \"@root/Frontend/Studio/App\";\n\n/// Get the original text\nexport function getOriginalText(textID: bigint): string {\n    return App.getInstance().getEngine().getOriginalText(textID);\n}\n\n/// Removes all translations\nexport function resetAllTranslations(textID: bigint) {\n    return App.getInstance().getEngine().resetAllTranslations(textID);\n}", "/*\n    Util functions for adapter and facade\n */\n\nimport {Language} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {getCurrentWorldID, getWorldTitle} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {\n    getCurrentSequenceID,\n    getSequenceTitle\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {getStepsList} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {detectLanguageOfGivenPhrases} from \"@utils/utils\";\nimport {App} from \"App\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {getStepTextID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequence\";\nimport {getOriginalText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterText\";\n\n/// return current URL: (protocol:)//(hostname)(:port)\nexport function getUrlAPI(): string {\n    return window.location.protocol + \"//\" + window.location.host;\n}\n\nexport function decodeBufferInt(ptr:number): number {\n    return (new DataView(App.getInstance().getEngine().HEAPU8.buffer, ptr, 4))\n        .getInt32(0, true);\n}\n\nexport function isPowerOf2(x: number): boolean {\n    return !(x === 0) && !(x & (x - 1));\n}\n\n//TODO: remove this function and use saveFileToCore(file) instead\nexport function readFile(file: File, path: string, callback: Function) {\n    // file: file object\n    // path: path without file name\n    // callback: what to do on successful file load\n    const fileReader: any = new FileReader();\n    fileReader.name = file;\n    fileReader.onload = function (e: any) {\n        const arrayFile = e.target.result;\n        const arrayBufferView = new Uint8Array(arrayFile as ArrayBuffer);\n\n        // save the file into the FileSystem locally\n        const filePath = path + e.target.name.name;\n\n        // make the directory in the virtual file system\n        AdapterUtils.ensureDirectoryExist(filePath);\n\n        const engine = App.getInstance().getEngine();\n        const stream = engine.FS.open(filePath, 'w+');\n        engine.FS.write(stream, arrayBufferView, 0, arrayBufferView.byteLength);\n        engine.FS.close(stream);\n\n        // call back to function passed in\n        callback(filePath);\n    };\n    fileReader.readAsArrayBuffer(file);\n}\n\nexport function convertModelFileToGLB(filePath: string): string {\n    const engine = App.getInstance().getEngine();\n    const filePathBuffer = allocateBufferStringUTF8(filePath);\n    const filePathGLB = convertAndReleaseStringC(engine._convertModelFileToGLB(filePathBuffer));\n    engine._free(filePathBuffer);\n    return filePathGLB;\n}\n\n/// returns a list of files found in folder (TODO: Make recursive to check folders inside a folder)\nexport function readFolder(path: string) {\n    const engine = App.getInstance().getEngine();\n    if (!engine.directoryExists(path)) {\n        console.log(\"unable to read Folder \" + path + \" does not exist.\");\n        return [];\n    }\n\n    return engine.FS.readdir(path);\n}\n\nexport function loadFile(e: any, path: string) {\n    return new Promise(function () {\n        let arrayFile = e.target.result;\n        let arrayBufferView = new Uint8Array(arrayFile);\n\n        // save the file into the FileSystem locally\n        const fileName = e.target.name.name;\n        const filePath = path + fileName;\n\n        const engine = App.getInstance().getEngine();\n        const stream = engine.FS.open(filePath, 'w+');\n        engine.FS.write(stream, arrayBufferView, 0, arrayBufferView.byteLength);\n        engine.FS.close(stream);\n\n    });\n}\n\nexport function convertAndReleaseStringC(stringPtr: number): string {\n    if (!stringPtr)\n        return \"\";\n    const engine = App.getInstance().getEngine();\n    const str = engine.UTF8ToString(stringPtr);\n    engine._free(stringPtr);\n    return str;\n}\n\nexport function allocateBufferStringUTF8(str: string): number {\n    const strLength = countBytesUTF8(str);\n    const engine = App.getInstance().getEngine();\n    const strBuffer = engine._malloc(strLength + 1);\n    engine.stringToUTF8(str, strBuffer, strLength + 1);\n    return strBuffer;\n}\n\nexport function decodeListInt32(buffer: number, size: number): number[] {\n    const list = [];\n    for (let i: number = 0; i < size; i++) {\n        const offset: number = i * 4;\n        const int32: number = decodeBufferInt(buffer + offset);\n        list.push(int32);\n    }\n    return list;\n}\n\nexport function decodeVec3(buffer: number): {x: number, y: number, z: number} {\n    const engine = App.getInstance().getEngine();\n    const x: number = (new DataView(engine.HEAPU8.buffer, buffer, 4)).getFloat32(0, true);\n    const y: number = (new DataView(engine.HEAPU8.buffer, buffer + 4, 4)).getFloat32(0, true);\n    const z: number = (new DataView(engine.HEAPU8.buffer, buffer + 8, 4)).getFloat32(0, true);\n\n    return { x, y, z };\n}\n\nexport function countBytesUTF8(stringUTF8: string): number {\n    return new Blob([stringUTF8]).size;\n}\n\nexport function detectLanguageOfCurrentSequence(): Language | undefined {\n    const currentSequenceID: bigint = getCurrentSequenceID();\n    if (!currentSequenceID)\n        return undefined;\n\n    // use all the step titles available to try to detect the right language needed\n    const sourceLanguage: Language | undefined = detectLanguageOfGivenPhrases([\n        ...getStepsList().map((stepID: bigint) => getOriginalText(getStepTextID(stepID))),\n        getSequenceTitle(currentSequenceID),\n        getWorldTitle(getCurrentWorldID())\n    ]);\n    if (!sourceLanguage) {\n        AdapterLog.ERROR(\"Could not detect supported language for title from sequence \" + currentSequenceID);\n        return undefined;\n    }\n\n    return sourceLanguage;\n}\n", "import {Long, DeserializeOptions, deserialize} from \"@root/node_modules/bson\";\n\nexport namespace UtilsBSON {\n\n    function recursivelyConvertLongToBigInt(JSONObject: any) {\n        if (!JSONObject || typeof JSONObject !== 'object')\n            return;\n\n        Object.keys(JSONObject).forEach((key, index) => {\n            const value : any = JSONObject[key];\n            if (Long.isLong(value)) {\n                JSONObject[key] = convertLongToBigIntAsUnsigned(value);\n            }\n\n            else if (typeof JSONObject[key] === 'object')\n                recursivelyConvertLongToBigInt(JSONObject[key]);\n        });\n    }\n\n    export function deserializeBSON(bson: Buffer | ArrayBuffer,\n                                    convertBSONLongsToBigInt: boolean = true,\n                                    options: DeserializeOptions = {promoteLongs: false, promoteBuffers: true}): any {\n        // make sure we have a NodeJS buffer and not a Browser JS ArrayBuffer\n        const bufferBSON: Buffer = bson instanceof ArrayBuffer ? Buffer.from(bson) : bson;\n\n        // deserialize\n        const objectJSON = deserialize(bufferBSON, options);\n\n        // convert BSON Long to bigint if any expected\n        if (convertBSONLongsToBigInt)\n            recursivelyConvertLongToBigInt(objectJSON)\n\n        // return JS Object\n        return objectJSON;\n    }\n\n    function convertLongToBigIntAsUnsigned(val: Long): bigint {\n        const lowerBits  : number = val.getLowBitsUnsigned();\n        const higherBits : number = val.getHighBitsUnsigned();\n\n        return BigInt.asUintN(32, BigInt(lowerBits)) |\n               BigInt.asUintN(32, BigInt(higherBits)) << BigInt(32);\n    }\n}\n", "// TODO: 'Model' should be called 'Document' and use enum string instead to prevent reordering issues!\n/// This should match exactly what's in the Core: \"Asset.h\"\nexport enum AssetType {\n    MODEL,\n    IMAGE,\n    TEXT,\n    VIDEO,\n    MTCONNECT,\n    COUNT\n}\n\nexport function getAssetTypeString(type: AssetType) : string{\n    switch(type){\n        case AssetType.MTCONNECT: return \"MTConnect\"; // special case!\n        case AssetType.COUNT: return \"\";\n        default: // simply lowercase the letters after the first one :)\n            const assetTypeStr: string = AssetType[type];\n            return assetTypeStr[0] + assetTypeStr.slice(1).toLowerCase();\n    }\n}\n\nexport enum AssetAttribute {\n    INITIAL_STATE = \"InitialState\",\n    INITIAL_PARTS_STATE = \"InitialPartsState\",\n    OBSERVED_DATA_ITEMS = \"ObservedDataItems\",\n    AGENT_URL = \"AgentURL\",\n    PROBE = \"Probe\",\n    DOCUMENT = \"Document\",\n    ALWAYS_FACE_CAMERA = \"AlwaysFaceCamera\",\n    IMAGE_URL_S3 = \"ImageUrlS3\",\n    TITLE = \"Title\",\n    TYPE = \"Type\",\n    HEADER = \"Header\",\n    TEXT = \"Text\",\n    VIDEO = \"Video\",\n    DEFAULT_ORIENTATION_Z = \"DefaultOrientationZ\",\n    TEXT_HEADER = \"TextHeader\",\n    TEXT_BODY = \"TextBody\",\n}\n\nexport interface Asset {\n    InitialState: {value: Buffer, timestamp: bigint};\n    InitialPartsState: {value: Buffer, timestamp: bigint};\n    ObservedDataItems: {value: string[], timestamp: bigint};\n    AgentURL: {value: string, timestamp: bigint};\n    Probe: {value: string, timestamp: bigint};\n    AlwaysFaceCamera: {value: string, timestamp: bigint};\n    ImageUrlS3: {value: string, timestamp: bigint};\n    Title: {value: string, timestamp: bigint};\n    Type: {value: string, timestamp: bigint};\n    Header: {value: string, timestamp: bigint};\n    Text: {value: string, timestamp: bigint};\n    TextHeader: {value: bigint, timestamp: bigint};\n    TextBody: {value: bigint, timestamp: bigint};\n    DefaultOrientationZ: {value: string, timestamp: bigint};\n    Document: {value: string, timestamp: bigint};\n    Video: {value: string, timestamp: bigint};\n}\n\nexport interface AssetState {\n    position: Uint8Array;\n    rotation: Uint8Array;\n    scale: Uint8Array;\n    hidden: Uint8Array;\n}\n\nexport interface AssetPartsState {\n    partsState: AssetState[] | null;\n}\n\nexport class EventWorldAssetAttributeChanged {\n    static readonly EVENT_WORLD_ASSET_ATTRIBUTE_CHANGED: string = \"worldAssetAttribute.changed\";\n    worldID: bigint;\n    assetID: bigint;\n    attribute: AssetAttribute;\n    timestamp: bigint;\n}\n\nexport class EventStepAssetAttributeChanged {\n    static readonly EVENT_STEP_ASSET_ATTRIBUTE_CHANGED: string = \"stepAssetAttribute.changed\";\n    worldID: bigint;\n    sequenceID: bigint;\n    stepID: bigint;\n    assetID: bigint;\n    attribute: AssetAttribute;\n    timestamp: bigint;\n}\n", "import {App} from \"@root/Frontend/Studio/App\";\nimport {Language, MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nlet _previousTime : number = 0;\nconst fps : number = 31;\nlet _draw : FrameRequestCallback;\nlet _drawRequestID: number;\nconst _pendingRenderFunctions: FrameRequestCallback[] = [];\n\n// Triggers the AnimationFrame for the 3D canvas\nexport function draw(timestamp: number) {\n    const engine: MainModule | null = App.getInstance()?.getEngine() ?? null;\n    if (!engine)\n        return;\n\n    const elapsedTime: number = (timestamp - _previousTime) / 1000;\n\n    const fpsInterval: number = 1 / fps;\n\n    if (elapsedTime >= fpsInterval) {\n        // account for fps throttle\n        _previousTime = timestamp - (elapsedTime % fpsInterval);\n\n        if(!engine.readDepthData()){\n            // we call set timeout 0 because 'requestAnimationFrame' would recursively call itself,\n            // causing warnings when control would not go back to main loop after failed read depth\n            setTimeout(() => {\n                _drawRequestID = window.requestAnimationFrame(_draw);\n            }, 0)\n            return;\n        }\n\n        // updates the Core in WebAssembly ()\n        engine.update(elapsedTime);\n\n        // draws the Core in WebAssembly\n        engine.draw();\n\n        if(_pendingRenderFunctions.length) {\n            // set timeout is used with 0 to guarantee control is given back to user agent's main loop\n            setTimeout(() => {\n                _drawRequestID = window.requestAnimationFrame(_pendingRenderFunctions.shift());\n            }, 0)\n            return;\n        }\n    }\n\n    // set timeout is used with 0 to guarantee control is given back to user agent's main loop\n    setTimeout(() => {\n        _drawRequestID = window.requestAnimationFrame(_draw);\n    }, 0)\n}\n\nexport function pushRenderFunction(renderFunction: FrameRequestCallback){\n    _pendingRenderFunctions.push(renderFunction);\n}\n\n/// get the frame rate\nexport function getFrameRate(): number {\n    const engine = App.getInstance().getEngine();\n    if (!engine)\n        return 0;\n\n    return engine.getFrameRate();\n}\n\n/// get the memory usage\nexport function getMemoryUsage(): bigint {\n    const engine = App.getInstance().getEngine();\n    if (!engine)\n        return BigInt(0);\n\n    return engine.getMemoryUsage();\n}\n\nexport function getLanguage(): Language {\n    return App.getInstance().getEngine()?.getLanguage();\n}\n\nexport function saveLanguage(language: Language) {\n    return App.getInstance().getEngine()?.saveLanguage(language);\n}\n\n/// initialize draw\nexport function startDraw(drawFunction: FrameRequestCallback) {\n    if(drawFunction !== undefined)\n        _draw = drawFunction;\n    _drawRequestID = window.requestAnimationFrame(_draw);\n}\n\n/// pause drawing of the engine\nexport function pauseDraw() {\n    window.cancelAnimationFrame(_drawRequestID);\n}\n\n/// get Core Git Version\nexport function getCoreVersion(): string {\n    return App.getInstance().getEngine().getCoreVersion();\n}\n\n/// get Core Git Commit\nexport function getCoreGitCommit(): string {\n    return App.getInstance().getEngine().getCoreGitCommit();\n}\n\nexport function isAuthenticated() : boolean {\n    return Boolean(App.getInstance().getEngine().isAuthenticated());\n}\n\n/// get Peer ID for whoever is logged in\nexport function getCurrentPeerID(): bigint{\n    if(!App.getInstance().getEngine())\n        return BigInt(0);\n    return BigInt.asUintN(64, App.getInstance().getEngine().getCurrentPeerID());\n}\n\n\n/// returns if the peer is connected or not\nexport function isPeerConnected(peerID: bigint) : boolean {\n    const engine = App.getInstance().getEngine();\n    return engine.isPeerConnected(peerID);\n}\n\nexport function setCloudToken(token: string) {\n    const engine = App.getInstance().getEngine();\n    engine.setCloudToken(token);\n}\n", "import * as React from \"react\";\nimport styled from 'styled-components';\nimport {dark, overlay, white} from \"@root/react-components/src/values/colors/colors\";\nimport {secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {createRef, CSSProperties} from \"react\";\nimport ReactDOM from \"react-dom\";\n\nconst Wrapper = styled(\"div\")<{\n    zIndex: number\n    centerEngine: boolean\n}>`\n     height: 100%;\n     width: ${props => props.centerEngine ? \"calc(100% - 342px)\" : \"100%\"};\n     position: fixed;\n     top:0;\n     right:0;\n     z-index: ${props => props.zIndex ? props.zIndex : 999};\n     background-color:${ overlay };\n     display: flex;\n     align-items: center;\n     justify-content: center;\n\n`;\n\nconst Inner = styled(\"div\")\n    <{\n        backgroundColor: string,\n        sizeDialog: DialogSize | undefined\n    }>`\n    max-height: 90%;\n    background-color: ${props => props.backgroundColor};\n    border-radius: 24px;\n    padding: 24px;\n    box-sizing: border-box;\n    color: ${ dark };\n    font:${secondaryFontMedium};\n    display:flex;\n    box-shadow: rgba(0, 0, 0, 0.16) 0px 3px 6px, rgba(0, 0, 0, 0.23) 0px 3px 6px;\n    flex-direction: column;\n        min-width: ${(props) => {\n        switch(props.sizeDialog) {\n            case DialogSize.xs:\n                return \"400px\";\n            case DialogSize.sm:\n                return \"600px\";\n            case DialogSize.md:\n                return \"800px\";\n            case DialogSize.lg:\n                return \"1000px\";\n            case DialogSize.xl:\n                return \"1200px\";\n            default:\n                return \"fit-content\";\n        }\n    }};\n`;\n\nexport enum DialogSize {\n    xs = \"xs\",\n    sm = \"sm\",\n    md = \"md\",\n    lg = \"lg\",\n    xl = \"xl\",\n}\n\ninterface DialogProps {\n    id?: string;\n    size?: DialogSize;\n    backgroundColor?: string;\n    zIndex?: number;\n    onClose?: () => void;\n    onEnter?: () => void;\n    closeOnClickOutside?: boolean;\n    centerEngine?: boolean;\n    style?: CSSProperties;\n    innerStyle?: CSSProperties;\n    children: React.ReactNode;\n}\n\n// TODO @ebalthazard: react-component\nexport class Dialog extends React.Component {\n    private dialogRef = createRef<HTMLDivElement>();\n    public static appDialogRef: React.RefObject<HTMLDivElement> = createRef<HTMLDivElement>();\n\n    props: DialogProps;\n\n    constructor(props: DialogProps) {\n        super(props);\n\n        // bind(this) create a function each time, so we need to bind this to handleClickOutside in the constructor\n        // if we want to remove the function when the component unmount\n        this.handleClickOutside = this.handleClickOutside.bind(this);\n        this.keydown = this.keydown.bind(this);\n    }\n\n    // Add the div newDialog to the modal-root id\n    componentDidMount() {\n        window.addEventListener(\"keydown\", this.keydown);\n\n        if(this.props.closeOnClickOutside)\n            window.addEventListener('mousedown', this.handleClickOutside);\n    }\n\n    // Remove the div newDialog to the modal-root id\n    componentWillUnmount() {\n        window.removeEventListener(\"keydown\", this.keydown);\n\n        if (this.props.closeOnClickOutside)\n            window.removeEventListener('mousedown', this.handleClickOutside);\n    }\n\n    handleClickOutside(e: MouseEvent) {\n        if (this.props.onClose &&\n            this.props.closeOnClickOutside &&\n            !this.dialogRef.current?.contains(e.target as Node)) {\n            e.stopPropagation();\n            this.props.onClose();\n        }\n    }\n\n    keydown(e: KeyboardEvent) {\n        if (e.key === \"Escape\" && this.props.onClose) {\n            e.stopPropagation();\n            this.props.onClose();\n        } else if(e.key === \"Enter\" && this.props.onEnter) {\n            e.stopPropagation();\n            this.props.onEnter()\n        }\n    }\n\n    // Add dialog container to the div newDialog\n    render() {\n        if (Dialog.appDialogRef.current)\n            return ReactDOM.createPortal(\n                <Wrapper\n                    id={this.props.id}\n                    zIndex={this.props.zIndex ?? 999}\n                    centerEngine={this.props.centerEngine ?? false}\n                    style={{...this.props.style}}>\n                    <Inner\n                        ref={this.dialogRef}\n                        backgroundColor={this.props.backgroundColor ?? white}\n                        sizeDialog={this.props.size}\n                        style={{ ...this.props.innerStyle }}\n                        onClick={(e) => e.stopPropagation()}\n                    >\n                        {this.props.children}\n                    </Inner>\n                </Wrapper>,\n                Dialog.appDialogRef.current\n            );\n        else\n            return null;\n    }\n}\n\n", "import React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function Rename(): JSX.Element {\n    return (\n        <SvgIcon xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 416.03 415.93\">\n            <path fill=\"currentColor\"\n                  d=\"M242.63,83.1l90.2,90.2a9.78,9.78,0,0,1,0,13.8L114.43,405.5l-92.8,10.3A19.45,19.45,0,0,1,.13,394.3l10.3-92.8L228.83,83.1a9.78,9.78,0,0,1,13.8,0Zm162-22.9-48.8-48.8a39.11,39.11,0,0,0-55.2,0l-35.4,35.4a9.78,9.78,0,0,0,0,13.8l90.2,90.2a9.78,9.78,0,0,0,13.8,0l35.4-35.4A39.11,39.11,0,0,0,404.63,60.2Z\"/>\n        </SvgIcon>\n    );\n}\n", "import * as React from 'react';\nimport {SvgIcon} from \"@mui/material\";\n\nexport function Check() {\n    return <SvgIcon viewBox=\"0 0 24 24\">\n        <svg xmlns=\"http://www.w3.org/2000/svg\">\n            <path d=\"M5.268,10.732c-0.976-0.976-2.559-0.976-3.536,0s-0.976,2.559,0,3.536l4.645,4.645 c1.449,1.449,3.797,1.449,5.246,0L12.536,18L5.268,10.732z M22.268,4.732c-0.976-0.976-2.559-0.976-3.536,0L9,14.464L12.536,18l9.732-9.732C23.244,7.291,23.244,5.708,22.268,4.732z\"/>\n        </svg>\n    </SvgIcon>;\n}", "import * as React from \"react\";\nimport {white} from \"@root/react-components/src/values/colors/colors\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {SliderController} from \"@root/react-components/src/inputs/slider/SliderController\";\nimport i18next from \"i18next\";\nimport {\n    commitCommand, getSelectedAssetID, scaleSelectedNodes, moveSelectedNodes, setRotationOfSelectedNodes,\n    setAssetForPlacement, getSelectedAnchorID, setAnchorForPlacement, getScale, getSelectedNodesCount, getSelectedNodes,\n    getCurrentWorldID, getSelectedSessionNodeID,\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Loading} from \"@root/react-components/src/logo/Loading\";\nimport {Box, styled, Tooltip} from \"@mui/material\";\nimport {RescaleDialog} from \"@root/Frontend/Studio/Components/Toolbar/ModelPane/RescaleDialog\";\nimport {ModelPaneSliders} from \"@root/Frontend/Studio/Components/Toolbar/ModelPane/ModelPaneSliders\";\nimport {MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nconst Wrapper = styled(Box)((props:{disabled: boolean}) => ({\n    height: \"100%\",\n    margin: \"6px 3px\",\n    color: white,\n    boxSizing: \"border-box\",\n    padding: \"0 6px\",\n    display: \"flex\",\n    position: \"relative\",\n    flexDirection: \"column\",\n    opacity: props.disabled ? \"0.4\" : \"1\",\n    pointerEvents: props.disabled ? \"none\" : \"auto\"\n}));\n\nconst Row = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    marginBottom: \"6px\"\n});\n\nconst Col = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"space-between\"\n});\n\nconst ButtonWrapper = styled(Box)({\n    marginLeft: \"12px\"\n});\n\nexport enum MovementType {\n    POSITION = \"position\",\n    ROTATION = \"rotation\",\n    SCALE = \"scale\"\n}\n\nexport type vec3 = {x: number, y: number, z: number};\n\ninterface ModelPaneState {\n    singleNodeSelected: boolean;\n    repositionButtonDisabled: boolean;\n    slidersDisabled: boolean;\n    scaleButtonDisabled: boolean;\n    positionLimits: [number, number, number];\n    rescaleAssetID: bigint;\n    updateScaleAsset: boolean;\n    scale: number;\n}\n\n/// Pane for model attributes : Scale, Rotation, Position\nexport class ModelPane extends React.Component {\n    static readonly MAX_NODE_HEIGHT = 10; // Must match MAX_NODE_HEIGHT in model studio\n    static readonly MIN_SLIDER_SCALE: number = 0.001;\n    static readonly MAX_SLIDER_SCALE: number = 100;\n    private readonly refPosSliders: React.RefObject<ModelPaneSliders> = React.createRef();\n    private readonly refRotSliders:  React.RefObject<ModelPaneSliders> = React.createRef();\n\n    state: ModelPaneState = {\n        singleNodeSelected: false,\n        slidersDisabled: true,\n        repositionButtonDisabled: true,\n        scaleButtonDisabled: true,\n        positionLimits: [0, 0, 0],\n        rescaleAssetID: BigInt(0),\n        updateScaleAsset: true,\n        scale: 0\n    };\n\n    componentDidMount() {\n        window.addEventListener(\"keydown\", this.handleKeyPress.bind(this));\n    }\n\n    componentWillUnmount() {\n        window.removeEventListener(\"keydown\", this.handleKeyPress);\n    }\n\n    componentDidUpdate() {\n        const engine: MainModule = App.getInstance().getEngine();\n        if (!engine)\n            return;\n\n        const depth: number = engine.getWorldDimensionD(getCurrentWorldID());\n        const width: number = engine.getWorldDimensionW(getCurrentWorldID());\n        const limitWidth: number = width / 2;\n        const limitDepth: number = depth / 2;\n\n        if (limitWidth !== this.state.positionLimits[0] || limitDepth !== this.state.positionLimits[2])\n            this.setState({ positionLimits: [limitWidth, ModelPane.MAX_NODE_HEIGHT, limitDepth] });\n    }\n\n    public refreshAllSliders(position: vec3, rotation: vec3, scale: number) {\n        this.refPosSliders.current?.setValues(position);\n        this.refRotSliders.current?.setValues(rotation);\n\n        if (scale !== this.state.scale)\n            this.setState({ scale });\n    }\n\n    public updateNode(nodeID: bigint) {\n        const singleNodeSelected: boolean = getSelectedNodesCount() === 1;\n        if (this.state.singleNodeSelected !== singleNodeSelected)\n            this.setState({ singleNodeSelected });\n\n        if (singleNodeSelected) {\n            const scale: number = getScale(nodeID);\n            if (this.state.scale !== scale)\n                this.setState({ scale });\n        }\n\n        const repositionButtonDisabled: boolean = !this.canPeerRepositionNode(singleNodeSelected);\n        if (this.state.repositionButtonDisabled !== repositionButtonDisabled)\n            this.setState({ repositionButtonDisabled });\n    }\n\n    public updateScaleButtonDisabled(scaleButtonDisabled: boolean) {\n        if (scaleButtonDisabled !== this.state.scaleButtonDisabled)\n            this.setState({ scaleButtonDisabled });\n    }\n\n    public updateSlidersDisabled(slidersDisabled: boolean) {\n        if (slidersDisabled)\n            this.refreshAllSliders({ x: 0, y: 0, z: 0 }, { x: 0, y: 0, z: 0 }, 0);\n\n        if (slidersDisabled !== this.state.slidersDisabled)\n            this.setState({ slidersDisabled });\n    }\n\n    public openRescaleDialog(assetID: bigint, updateScaleAsset: boolean) {\n        this.setState({ rescaleAssetID: assetID, updateScaleAsset });\n    }\n\n    public closeRescaleDialog() {\n        this.setState({ rescaleAssetID: BigInt(0) });\n    }\n\n    private handleChangePositions(oldValues: number[], newValues: number[]) {\n\n        // get all selected node IDs\n        const selectedNodeIDs: bigint[] = getSelectedNodes();\n        if (selectedNodeIDs.length === 0)\n            return;\n\n        const deltas: number[] = newValues.map((newValue: number, index: number) => newValue - oldValues[index]);\n        // send delta to engine (relative movement)\n        moveSelectedNodes(deltas[0], deltas[1], deltas[2]);\n    }\n\n    private handleChangeRotation(newValues: number[]) {\n        setRotationOfSelectedNodes(newValues[0], newValues[1], newValues[2]);\n    }\n\n    private handleKeyPress(event: KeyboardEvent){\n        // only process event if CTRL + K and if a singleNodeSelected\n        if (!event.metaKey || event.code !== \"KeyK\" ! || !this.state.singleNodeSelected)\n            return;\n        event.stopPropagation();\n        event.preventDefault();\n        this.repositionSelectedNode();\n    }\n\n    private repositionSelectedNode(){\n        // set asset for placement\n        const assetID: bigint = getSelectedAssetID();\n        if (assetID) {\n            setAssetForPlacement(assetID);\n            return;\n        }\n\n        // set anchor for placement\n        const anchorID: bigint = getSelectedAnchorID();\n        if (anchorID) {\n            setAnchorForPlacement(anchorID);\n            return;\n        }\n\n        // set Session Added Noded for placement\n        const sessionNodeID: bigint = getSelectedSessionNodeID();\n        if (sessionNodeID)\n            App.getInstance().getEngine().setSessionNodeForPlacement(sessionNodeID);\n    }\n\n    private handleChangeScale(newScale: number) {\n        if (newScale === 0)\n            newScale = ModelPane.MIN_SLIDER_SCALE;\n\n        this.setState((prevState: ModelPaneState) => {\n            const previous: number  = prevState.scale ?? ModelPane.MIN_SLIDER_SCALE;\n            const ratio: number = newScale / previous;\n\n            if (ratio === 1)\n                return null;\n\n            scaleSelectedNodes(ratio);\n            return { scale: newScale };\n        });\n    }\n\n    private canPeerRepositionNode(singleNodeSelected: boolean): boolean {\n        if (!singleNodeSelected)\n            return false;\n        return Boolean(getSelectedAssetID() || getSelectedAnchorID() || getSelectedSessionNodeID());\n    }\n\n    render() {\n        if (!App.getInstance().getEngine()) {\n            return <div style={{\n                height: \"100%\",\n                width: \"100%\",\n                display: \"flex\",\n                alignItems: \"center\",\n                justifyContent: \"flex-start\"\n            }}>\n                <Loading/>\n            </div>\n        }\n\n        return (\n            <>\n            <Wrapper disabled={this.state.slidersDisabled}>\n                <Row style={{height: \"100%\"}}>\n                    <Col id=\"position-sliders\" style={{ position: \"relative\", paddingRight: \"15px\" }}>\n                        <ModelPaneSliders\n                            id=\"position-slider\"\n                            ref={this.refPosSliders}\n                            title={i18next.t(\"Absolute Position\")}\n                            unit=\"m\"\n                            limits={this.state.positionLimits}\n                            onChangeValues={(oldValues: number[], newValues: number[]) =>\n                                this.handleChangePositions(oldValues, newValues)}\n                            movementType={MovementType.POSITION}\n                        />\n                    </Col>\n                    <Col id=\"rotation-sliders\" style={{ position: \"relative\", paddingRight: \"10px\" }}>\n                        <ModelPaneSliders\n                            id=\"rotation-slider\"\n                            ref={this.refRotSliders}\n                            title={i18next.t(\"Absolute Rotation\")}\n                            unit=\"\u00B0\"\n                            limits={[180,180,180]}\n                            onChangeValues={(_: number[], newValues: number[]) => this.handleChangeRotation(newValues)}\n                            movementType={MovementType.ROTATION}\n                        />\n                    </Col>\n                </Row>\n                <Row>\n                    <Col>\n                        <Row id={\"scale-slider\"}>\n                            <SliderController\n                                id=\"scale-slider-x\"\n                                onChange={(newValue: number) => this.handleChangeScale(newValue)}\n                                value={this.state.scale}\n                                onEnd={() => commitCommand()}\n                                label={i18next.t(\"Scale\")}\n                                min={ModelPane.MIN_SLIDER_SCALE}\n                                max={ModelPane.MAX_SLIDER_SCALE}\n                                exponential={1000}\n                                unit=\"x\"\n                            />\n                            <ButtonWrapper>\n                                <Button\n                                    id=\"rescale\"\n                                    variant=\"outlined\"\n                                    color=\"white\"\n                                    disabled={this.state.scaleButtonDisabled || !this.state.singleNodeSelected}\n                                    onClick={() => {\n                                        const selectedAssetID = getSelectedAssetID();\n                                        if (!selectedAssetID)\n                                            return;\n                                        this.openRescaleDialog(selectedAssetID, true);\n                                    }}\n                                >\n                                    {i18next.t(\"Rescale\")}\n                                </Button>\n                            </ButtonWrapper>\n                            <Tooltip title={`${i18next.t(\"Reposition\")} (CMD/CTRL+K)`}>\n                                <ButtonWrapper>\n                                    <Button variant=\"outlined\"\n                                            color=\"white\"\n                                            disabled={this.state.repositionButtonDisabled}\n                                            onClick={()=> this.repositionSelectedNode()}>\n                                        {i18next.t(\"Reposition\")}\n                                    </Button>\n                                </ButtonWrapper>\n                            </Tooltip>\n                        </Row>\n                    </Col>\n                </Row>\n            </Wrapper>\n            {this.state.rescaleAssetID &&\n                <RescaleDialog\n                    assetID={this.state.rescaleAssetID}\n                    saveAssetDocument={this.state.updateScaleAsset}\n                    onClose={() => this.closeRescaleDialog()}\n                />\n            }\n            </>\n        );\n    }\n}\n", "import React, {RefObject, useEffect, useRef, useState} from \"react\";\nimport {styled} from \"@mui/material/styles\";\nimport {InputText} from \"../InputText\";\nimport {Label} from \"../../misc/Label\";\nimport {secondaryFontSmall} from \"../../values/fonts/fonts\";\nimport {Slider} from \"./Slider\";\nimport {dark, white} from \"../../values/colors/colors\";\nimport {Box} from \"@mui/material\";\n\nconst Wrapper = styled(Box)<{ disabled: boolean }>((props: { disabled: number }) => ({\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    opacity: props.disabled ? 0.5 : 1,\n    pointerEvents: props.disabled ? \"none\" : \"auto\",\n}));\n\nconst Row = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n});\n\nconst Metric = styled(Box)({\n    maxWidth: 62,\n    marginLeft: 12,\n    display: \"flex\",\n    \"& > div:first-of-type\": {\n        width: \"calc(100% - 12px)\",\n    },\n});\n\nconst Unit = styled(Box)({\n    font: secondaryFontSmall,\n    display: \"flex\",\n    alignItems: \"end\",\n    minWidth: 8,\n    marginBottom: 8,\n});\n\nconst SubLabel = styled(Box)<{ color: string }>((props: { color: string }) => ({\n    marginBottom: 6,\n    display: \"block\",\n    marginRight: 6,\n    color: props.color || white,\n}));\n\ninterface SliderControllerProps {\n    id?: string;\n    disabled?: boolean;\n    color?: string;\n    min: number;\n    max: number;\n    value: number;\n    label?: string;\n    unit: string;\n    subLabel?: string;\n    exponential?: number;\n    onChange: (value: number) => void;\n    onEnd: (value: number) => void;\n}\n\nexport function SliderController(props: SliderControllerProps)  {\n    const [sliderValue, setSliderValue] = useState<number>(0);\n    const [textValue, setTextValue] = useState<string>(\"0\");\n    const textRef: RefObject<HTMLInputElement> = useRef<HTMLInputElement>(null);\n\n    useEffect(() => {\n        const validated: number = validateValue(props.value);\n        setSliderValue(validated);\n        setTextValue(props.value.toString());\n    }, [props.value]);\n\n    function handleChangeText(newValue: string, isEnd: boolean) {\n        const newValueParse: number = parseFloat(newValue);\n        setTextValue(newValue.toString());\n        if (isNaN(newValueParse))\n            return;\n\n        const validatedValue: number = validateValue(newValueParse);\n        setSliderValue(validatedValue);\n\n        if (isEnd)\n            props.onEnd(validatedValue);\n        else\n            props.onChange(validatedValue);\n    }\n\n    function handleOnChange(newValue: number, isEnd: boolean) {\n        if (props.disabled)\n            return;\n\n        const validatedValue: number = validateValue(newValue);\n        setTextValue(newValue.toString());\n        setSliderValue(validatedValue);\n\n        if (isEnd)\n            props.onEnd(validatedValue);\n        else\n            props.onChange(validatedValue);\n    }\n\n\n    function validateValue(newValue: number): number {\n        if (newValue < props.min)\n            return props.min;\n\n        return newValue > props.max ? props.max : newValue;\n    }\n\n    return (\n        <Wrapper disabled={props.disabled}>\n            {props.label && (<Row> <Label medium dark={props.color === dark}> {props.label} </Label> </Row>)}\n\n            <Row>\n                {props.subLabel && (\n                    <Label medium> <SubLabel color={props.color || \"\"}>{props.subLabel}</SubLabel> </Label>\n                )}\n                <Slider\n                    id={props.id}\n                    value={sliderValue}\n                    exponential={props.exponential}\n                    min={props.min}\n                    max={props.max}\n                    onChange={(newValue: number) => handleOnChange(newValue, false)}\n                    onEnd={(newValue: number) => handleOnChange(newValue, true)}\n                />\n                <Metric>\n                    <InputText\n                        dark={props.color === dark}\n                        ref={textRef}\n                        disabled={props.disabled}\n                        value={textValue}\n                        onBlur={() => handleChangeText(textValue, true)}\n                        onChange={(newValue: string) => handleChangeText(newValue, false)}\n                        right\n                    />\n                    {props.unit && <Unit>{props.unit}</Unit>}\n                </Metric>\n            </Row>\n        </Wrapper>\n    );\n}\n", "import React, {MutableRefObject, RefObject, useEffect, useRef} from \"react\";\nimport {grey, lightPrimary, primary} from \"../../values/colors/colors\";\nimport {Box, styled} from \"@mui/material\";\n\nconst Wrapper = styled(Box)({\n    width: \"100%\",\n    height: 18,\n    position: \"relative\",\n    display: \"flex\",\n    alignItems: \"center\",\n});\n\nconst Handle = styled(Box)<{ left?: number }>({\n    width: 18,\n    height: 18,\n    borderRadius: \"50%\",\n    position: \"absolute\",\n    backgroundColor: grey,\n    transform: \"translateX(-50%)\",\n    cursor: \"pointer\",\n});\n\nconst Slide = styled(Box)({\n    height: 6,\n    width: \"100%\",\n    borderRadius: 5,\n    backgroundColor: lightPrimary,\n    overflow: \"hidden\",\n});\n\nconst Inner = styled(Box)({\n    height: \"100%\",\n    backgroundColor: primary,\n});\n\ninterface SlideProps {\n    id?: string;\n    value: number;\n    max: number;\n    min: number;\n    exponential?: number;\n    onChange: (value: number) => void;\n    onEnd?: (value: number) => void;\n}\n\nexport function Slider(props: SlideProps) {\n    const slideRef: RefObject<HTMLDivElement> = useRef<HTMLDivElement>(null);\n    const innerRef: RefObject<HTMLDivElement> = useRef<HTMLDivElement>(null);\n    const handleRef: RefObject<HTMLDivElement> = useRef<HTMLDivElement>(null);\n\n    const dragging: MutableRefObject<boolean> = useRef(false);\n    const currentPercent: MutableRefObject<number> = useRef(0);\n\n    useEffect(() => {\n        currentPercent.current = valueToPercent(props.value);\n        updateUI();\n    }, [props.value, props.min, props.max]);\n\n    function calcExponentialValueFromPos(base: number, pos: number): number {\n        return base ? -1 / base + Math.pow(base, pos - 1) : pos;\n    }\n\n    function calcPositionFromValue(base: number, value: number): number {\n        return Math.log(value + 1 / base) / Math.log(base) + 1;\n    }\n\n    function percentToValue(percent: number) {\n        const range: number = props.max - props.min;\n        const norm: number = percent / 100;\n\n        if (!props.exponential) {\n            return props.min + norm * range;\n        }\n\n        const expoValue: number = calcExponentialValueFromPos(props.exponential, norm);\n        return props.min + expoValue * range;\n    }\n\n    function onPointerMove(e: PointerEvent) {\n        if (!dragging.current || !slideRef.current)\n            return;\n\n        const rect: DOMRect = slideRef.current.getBoundingClientRect();\n        const raw: number = ((e.clientX - rect.left) / rect.width) * 100;\n        const clamped: number = Math.min(100, Math.max(0, raw));\n\n\n        currentPercent.current = clamped;\n        updateUI();\n\n        props.onChange(percentToValue(clamped));\n    }\n\n    function onPointerUp() {\n        if (!dragging.current)\n            return;\n        dragging.current = false;\n\n        const value: number = percentToValue(currentPercent.current);\n        props.onEnd?.(value);\n\n        window.removeEventListener(\"pointermove\", onPointerMove);\n        window.removeEventListener(\"pointerup\", onPointerUp);\n    }\n\n    function onPointerDown(e: React.PointerEvent) {\n        dragging.current = true;\n        onPointerMove(e.nativeEvent);\n\n        window.addEventListener(\"pointermove\", onPointerMove);\n        window.addEventListener(\"pointerup\", onPointerUp);\n    }\n\n    function valueToPercent(value: number): number {\n        const range: number = props.max - props.min;\n        const norm: number = (value - props.min) / range;\n        return props.exponential ? calcPositionFromValue(props.exponential, norm) * 100 : norm * 100;\n    }\n\n    function updateUI() {\n        if (!handleRef.current || !innerRef.current)\n            return;\n\n        innerRef.current.style.width = `${currentPercent.current}%`;\n        handleRef.current.style.left = `${currentPercent.current}%`;\n    }\n\n    return (\n        <Wrapper>\n            <Handle id={props.id} ref={handleRef} onPointerDown={onPointerDown} />\n            <Slide ref={slideRef}> <Inner ref={innerRef} /> </Slide>\n        </Wrapper>\n    );\n}\n", "import * as React from \"react\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {\n    applyScaleFactor, getAssetDocumentID, getModelDimensions, getModelID,\n    getScale, saveScaleToAssetDocument\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {RescaleForm} from \"@root/Frontend/Studio/Components/Toolbar/RescaleForm\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Document, Cloud} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\n\nconst ContentWrapper = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\"\n});\n\nconst ButtonsContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"end\",\n    gap: \"10px\",\n    width: \"100%\"\n});\n\ninterface RescaleDialogProps {\n    assetID: bigint;\n    saveAssetDocument: boolean;\n    onClose: () => void;\n}\n\ninterface RescaleDialogState {\n    modelID: bigint;\n}\n\nexport class RescaleDialog extends React.Component {\n\n    props: RescaleDialogProps;\n    state: RescaleDialogState = {\n        modelID: BigInt(0)\n    }\n\n    componentDidMount() {\n        const modelID: bigint = getModelID(this.props.assetID);\n        this.setState({ modelID });\n    }\n\n    private applyScale(currentFactor: number, initialFactor: number) {\n        if (this.props.saveAssetDocument)\n            saveScaleToAssetDocument(this.props.assetID, currentFactor / initialFactor);\n        else {\n            const cloud: Cloud = App.getInstance().getEngine().Cloud.getInstance();\n            const documentID: bigint = getAssetDocumentID(this.props.assetID);\n            using document: Document | null = documentID ? cloud.getDocumentByID(documentID) : null;\n            document?.saveInitialScale(currentFactor);\n        }\n        this.props.onClose();\n    }\n\n    render() {\n        const dimensions: { x: number, y: number, z: number } = getModelDimensions(this.state.modelID);\n        const initialFactor: number = getScale(this.state.modelID);\n        let currentFactor: number = initialFactor;\n\n        return (\n            <Dialog\n                size={DialogSize.xs}\n                closeOnClickOutside\n                onEnter={() => this.applyScale(currentFactor, initialFactor)}\n            >\n                {this.state.modelID ?\n                    <ContentWrapper>\n                        <RescaleForm\n                            defaultValue={Math.floor((currentFactor + Number.EPSILON) * 100000000) / 100000000}\n                            onChange={(factor: number) => {\n                                applyScaleFactor(this.state.modelID, 1 / currentFactor);\n                                currentFactor = factor;\n                                applyScaleFactor(this.state.modelID, currentFactor);\n                            }}\n                            dimensions={{\n                                x: dimensions.x * initialFactor,\n                                y: dimensions.y * initialFactor,\n                                z: dimensions.z * initialFactor\n                            }}\n                        />\n                        <ButtonsContainer>\n                            <Button\n                                variant=\"outlined\"\n                                onClick={() => {\n                                    applyScaleFactor(this.state.modelID, initialFactor / currentFactor);\n                                    this.props.onClose();\n                                }}\n                            >\n                                {i18next.t(\"Cancel\")}\n                            </Button>\n                            <Button onClick={() => this.applyScale(currentFactor, initialFactor)}>\n                                {i18next.t(\"Apply\")}\n                            </Button>\n                        </ButtonsContainer>\n                    </ContentWrapper>\n                :\n                    <CenteredLoading/>\n                }\n            </Dialog>\n        );\n    }\n}", "import * as React from 'react';\nimport i18next from \"i18next\";\nimport {dark, red} from \"@root/react-components/src/values/colors/colors\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Box, styled} from \"@mui/material\";\nimport {drawCuboid} from \"@utils/utils\";\n\nconst FormContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\"\n});\n\nconst HeaderContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    width: \"100%\"\n});\n\nconst MainTitle = styled(Box) ({\n    color: dark,\n    font: primaryFontXLarge,\n    fontSize: \"21px\",\n    width: \"100%\"\n});\n\nconst ScaleInputWrapper = styled(Box)({\n    paddingBottom: \"12px\",\n    textAlign: \"left\",\n    maxWidth: \"100px\"\n});\n\ninterface RescaleFormProps {\n    defaultValue: number,\n    onChange: (factor: number) => void,\n    dimensions: {x: number, y: number, z:number}\n}\n\ninterface RescaleFormState {\n    scale: number;\n    errorMessage: string;\n}\n\nexport class RescaleForm extends React.Component {\n    private canvasRef: React.RefObject<HTMLCanvasElement> = React.createRef<HTMLCanvasElement>();\n\n    props: RescaleFormProps;\n    state: RescaleFormState = {\n        scale : 1,\n        errorMessage: \"\"\n    }\n\n    componentDidMount() { this.setDrawModelScale(); }\n\n    private setDrawModelScale(): void {\n        const boundingBox: DOMRect | undefined = this.canvasRef.current?.getBoundingClientRect();\n\n        const dimensionX: number = this.props.dimensions.x * this.state.scale + Number.EPSILON;\n        const dimensionY: number = this.props.dimensions.y * this.state.scale + Number.EPSILON;\n        const dimensionZ: number = this.props.dimensions.z * this.state.scale + Number.EPSILON;\n\n        drawCuboid(\n            this.canvasRef.current,\n            boundingBox?.width ?? 0,\n            boundingBox?.height ?? 0,\n            { x: dimensionX, y: dimensionY, z: dimensionZ }\n        );\n\n        const errorMessage: string = dimensionX > 50 || dimensionY > 50 || dimensionZ > 50 ?\n            i18next.t(\"Model exceeds 50m, use Scale Factor to resize\") : \"\";\n\n        if (this.state.errorMessage !== errorMessage)\n            this.setState({errorMessage});\n    }\n\n    private setNewScale(factor: string): void {\n        let currentFactor: number = Number.parseFloat(factor);\n        if (!currentFactor)\n            currentFactor = 1;\n\n        this.props.onChange(currentFactor);\n        this.setState({scale: currentFactor}, () => this.setDrawModelScale());\n    }\n\n    render() {\n        return (\n            <>\n                <FormContainer>\n                    <HeaderContainer>\n                        <MainTitle>{i18next.t(\"Rescale\")}</MainTitle>\n                        <ScaleInputWrapper>\n                            <InputText\n                                onChange={(factor: string) => this.setNewScale(factor)}\n                                dark\n                                label={i18next.t(\"Scale Factor\")}\n                                defaultValue={this.props.defaultValue.toString()}\n                            />\n                        </ScaleInputWrapper>\n                    </HeaderContainer>\n                    { this.state.errorMessage &&\n                        <Box style={{color: red, font: primaryFontLarge, maxWidth: \"350px\", textAlign: \"center\"}}>\n                            {`${i18next.t(\"Warning\").toUpperCase()}: ${this.state.errorMessage} !`}\n                        </Box>\n                    }\n                </FormContainer>\n                <Box>\n                    <canvas height={300} width={260} ref={this.canvasRef} />\n                </Box>\n            </>\n        )\n    }\n}\n", "import React, {ReactElement} from 'react';\nimport {Loading} from '../logo/Loading';\nimport styled from 'styled-components';\n\nconst Wrapper = styled(\"div\")`\n    height: 100%;\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n`;\n\nexport function CenteredLoading(props: {children?: string | ReactElement, color?: string, customID?: string}){\n    return (\n        <Wrapper id={props.customID ?? \"centered-loading\"}>\n            <Loading color={props.color} /> {props.children}\n        </Wrapper>\n    );\n}", "import React, {RefObject} from \"react\";\nimport {SliderWrapper} from \"./SliderWrapper\";\nimport {TextAreaSlider} from \"./TextAreaSlider\";\nimport {commitCommand} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport i18next from \"i18next\";\nimport {MovementType, vec3} from \"./ModelPane\";\nimport {Box, styled} from \"@mui/material\";\nimport {theme} from \"@root/Frontend/theme\";\n\nconst TextAreaWrapper = styled(Box)({\n    width: \"50px\",\n    height: \"100%\",\n    position: \"absolute\",\n    top: \"20px\",\n    right: \"40px\",\n    [theme.breakpoints.up(1300)]: { right: \"36px\" },\n    [theme.breakpoints.up(1500)]: { right: \"40px\" },\n    [theme.breakpoints.up(1700)]: { right: \"45px\" },\n    [theme.breakpoints.up(1900)]: { right: \"53px\" },\n    [theme.breakpoints.up(2100)]: { right: \"55px\" },\n});\n\ninterface ModelPaneSlidersProps {\n    id: string;\n    unit: string;\n    title: string;\n    limits: [number, number, number];\n    onChangeValues: (oldValues: number[], newValues: number[]) => void;\n    movementType: MovementType;\n}\n\ninterface ModelPaneSlidersState {\n    clampedValues: number[];\n    realValues: number[];\n}\n\nexport class ModelPaneSliders extends React.Component {\n    private readonly refTextArea: RefObject<TextAreaSlider> = React.createRef<TextAreaSlider>();\n\n    props: ModelPaneSlidersProps;\n    state: ModelPaneSlidersState = {\n        clampedValues: [0,0,0],\n        realValues: [0,0,0]\n    }\n\n    private clampValue(value: number, index: number): number {\n        const limits: number = this.props.limits[index];\n        return Math.min(Math.max(value, -limits), limits);\n    }\n\n    // called when values change externally\n    public setValues(values: vec3) {\n        const clampedValues: number[] = [\n            this.clampValue(values.x, 0),\n            this.clampValue(values.y, 1),\n            this.clampValue(values.z, 2),\n        ];\n\n        this.setState({ clampedValues, realValues: [values.x, values.y, values.z] });\n    }\n\n    private handleTextAreaChange(unclampValues: number[]) {\n        const isOutOfLimits: boolean = unclampValues.some((value: number, i: number) => {\n            if (isNaN(value))\n                return true;\n            const limit: number = this.props.limits[i];\n            return value < -limit || value > limit;\n        });\n\n        if (isOutOfLimits)\n            return;\n\n        const oldValues: number[] = this.state.realValues;\n        const newValues: number[] = unclampValues.map((value: number, i: number) => this.clampValue(value, i));\n        this.setState({ clampedValues: newValues, realValues: unclampValues });\n        this.props.onChangeValues(oldValues, newValues);\n        commitCommand();\n    }\n\n    private handleOnChangeSlider(value: number, index: number){\n        const stateValues: number[] = [...this.state.clampedValues];\n\n        const newValues: number[] = [...stateValues];\n        newValues[index] = this.clampValue(value, index);\n\n        // slider modification will always result as clamped values\n        this.setState({ clampedValues: newValues, realValues: newValues });\n\n        // notify with clamped values\n        this.props.onChangeValues(stateValues, newValues);\n    }\n\n    render() {\n        return (\n            <>\n                <SliderWrapper\n                    id={this.props.id + \"-x\"}\n                    label={this.props.title}\n                    value={this.state.clampedValues[0]}\n                    min={-this.props.limits[0]}\n                    max={this.props.limits[0]}\n                    onChange={(value: number) => this.handleOnChangeSlider(value, 0)}\n                    subLabel={\"x\"}\n                    unit={this.props.unit}\n                    movementType={this.props.movementType}\n                />\n                <SliderWrapper\n                    id={this.props.id + \"-y\"}\n                    value={this.state.clampedValues[1]}\n                    min={-this.props.limits[1]}\n                    max={this.props.limits[1]}\n                    onChange={(value: number) => this.handleOnChangeSlider(value, 1)}\n                    subLabel={\"y\"}\n                    unit={this.props.unit}\n                    movementType={this.props.movementType}\n                />\n                <SliderWrapper\n                    id={this.props.id + \"-z\"}\n                    value={this.state.clampedValues[2]}\n                    min={-this.props.limits[2]}\n                    max={this.props.limits[2]}\n                    onChange={(value: number) => this.handleOnChangeSlider(value, 2)}\n                    subLabel={\"z\"}\n                    unit={this.props.unit}\n                    movementType={this.props.movementType}\n                />\n\n                <TextAreaWrapper>\n                    <TextAreaSlider\n                        ref={this.refTextArea}\n                        values={this.state.realValues}\n                        onChange={(values: number[]) => this.handleTextAreaChange(values)}\n                    />\n                </TextAreaWrapper>\n            </>\n        );\n    }\n}\n", "import React, {RefObject} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {Slider} from \"@root/react-components/src/inputs/slider/Slider\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport {secondaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {commitCommand} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Chevron} from \"@root/react-components/src/icons/Chevron\";\nimport {lighterDark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {MovementType} from \"@root/Frontend/Studio/Components/Toolbar/ModelPane/ModelPane\";\n\n\nconst Wrapper = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n});\n\nconst Row = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-around\",\n});\n\nconst MeticulousContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n});\n\nconst MeticulousButton = styled(Box)((props: { arrowdown: number }) => ({\n    display: \"flex\",\n    height: \"10px\",\n    width: \"10px\",\n    padding: \"1px\",\n    \"&:hover\": {\n        cursor: \"pointer\",\n        backgroundColor: lighterDark,\n    },\n    \"> svg\": {\n        transform: props.arrowdown ? \"rotate(90deg)\" : \"rotate(-90deg)\",\n    },\n}));\n\nconst Metric = styled(Box)({\n    maxWidth: \"62px\",\n    marginLeft: \"12px\",\n    display: \"flex\",\n    \"& > div:first-of-type\": {\n        width: \"100%\",\n    },\n});\n\nconst Unit = styled(Box)({\n    font: secondaryFontSmall,\n    display: \"flex\",\n    alignItems: \"flex-end\",\n    minWidth: \"8px\",\n});\n\nconst SubLabel = styled(Box)({\n    marginBottom: \"6px\",\n    marginRight: \"6px\",\n    color: white,\n});\n\nconst SliderBox = styled(Box)({\n    width: \"75%\",\n});\n\ninterface SliderWrapperProps {\n    id?: string;\n    value: number;\n    min: number;\n    max: number;\n    label?: string;\n    unit: string;\n    subLabel?: string;\n    onChange: (value: number) => void;\n    movementType: MovementType;\n}\n\nexport class SliderWrapper extends React.Component {\n    private readonly refText: RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n\n    props: SliderWrapperProps;\n\n    private meticulousUpdates(isMinus: boolean) {\n        const increment: number = this.props.movementType === MovementType.POSITION ? 0.01 : 1;\n        const value: number = this.props.value + increment * (isMinus ? -1 : 1);\n        this.props.onChange(value);\n        commitCommand();\n    }\n\n    render() {\n        return (\n            <Wrapper>\n                {this.props.label && <Row> <Label style={{ width: \"100%\" }} medium> {this.props.label} </Label> </Row>}\n\n                <Row>\n                    {this.props.subLabel && <Label medium> <SubLabel> {this.props.subLabel} </SubLabel> </Label>}\n\n                    <SliderBox>\n                        <Slider\n                            id={this.props.id}\n                            value={this.props.value}\n                            max={this.props.max}\n                            min={this.props.min}\n                            onChange={(value: number) => this.props.onChange(value)}\n                            onEnd={() => commitCommand()}\n                        />\n                    </SliderBox>\n\n                    <Metric>\n                        <InputText ref={this.refText} disabled right />\n                        {this.props.unit && <Unit> {this.props.unit} </Unit>}\n                    </Metric>\n\n                    <MeticulousContainer>\n                        <MeticulousButton arrowdown={0} onClick={() => this.meticulousUpdates(false)}>\n                            <Chevron />\n                        </MeticulousButton>\n                        <MeticulousButton arrowdown={1} onClick={() => this.meticulousUpdates(true)}>\n                            <Chevron />\n                        </MeticulousButton>\n                    </MeticulousContainer>\n                </Row>\n            </Wrapper>\n        );\n    }\n}\n", "import React from \"react\";\n\nexport const Chevron = () =>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n        <path fill=\"currentColor\"\n            d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/>\n    </svg>;\n", "import * as React from \"react\";\nimport {white} from \"@root/react-components/src/values/colors/colors\";\nimport {secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {ChangeEvent} from \"react\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {Box, styled} from \"@mui/material\";\n\nconst Wrapper = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\"\n})\n\nconst Input = styled(\"textarea\")({\n    background: \"none\",\n    border: \"0\",\n    outline: \"none\",\n    color: white ,\n    textAlign: \"right\",\n    boxSizing: \"border-box\",\n    font: secondaryFontMedium,\n    width: \"100%\",\n    WebkitAppearance: \"none\",\n    borderRadius: \"0\",\n    resize: \"none\",\n    overflow:\"hidden\",\n    padding: \"2px 0px\",\n});\n\ninterface TextAreaSliderProps {\n    onChange: (newValues: number[]) => void;\n    values: number[];\n}\n\nexport class TextAreaSlider extends React.Component {\n    props: TextAreaSliderProps;\n    state: { textAreaValue: string } = { textAreaValue: \"\" };\n\n    componentDidUpdate(prevProps: Readonly<TextAreaSliderProps>) {\n        if (prevProps.values !== this.props.values)\n            this.setNewValues(this.props.values)\n    }\n\n    public setNewValues(newValues: number[]) {\n        if(newValues.length !== 3)\n            return;\n\n        const newValuesFormatted: string[] = newValues.map(value => {\n            // converts to fixed point, then remove trailing 0, into string max 7 characters\n            return parseFloat(value.toFixed(6)).toString().substring(0,7);\n        });\n\n        this.setState({\n            textAreaValue: newValuesFormatted.join('\\n')\n        });\n    }\n\n    private handleOnKeyPress(keyboardEvent: React.KeyboardEvent<HTMLTextAreaElement>) {\n        if (keyboardEvent.key !== \"Enter\")\n            return;\n\n        const newValueSplit: string[] = this.state.textAreaValue.split('\\n');\n\n        this.props.onChange([\n            parseFloat(newValueSplit[0]),\n            parseFloat(newValueSplit[1]),\n            parseFloat(newValueSplit[2])\n        ]);\n    }\n\n    private handleChangeTextArea(textAreaValue: string) {\n        let newValue: string = textAreaValue;\n\n        if(newValue === \"\")\n            newValue = \"\\n\\n\";\n\n        // 23 => 7 characters by line + 2 return line characters\n        if(newValue.split('\\n').length !== 3 || newValue.length > 23)\n            return;\n\n        const formatValue: string[] = newValue.split(\"\\n\").map(value => value.substring(0,7));\n\n        this.setState({\n            textAreaValue: formatValue.join(\"\\n\")\n        });\n    }\n\n    render(): JSX.Element {\n        return(\n            <Wrapper>\n                <Input\n                    value={this.state.textAreaValue}\n                    style={{ lineHeight: \"27px\" }}\n                    onChange={\n                        (event: ChangeEvent<HTMLTextAreaElement>) => this.handleChangeTextArea(event.target.value)\n                    }\n                    rows={3}\n                    wrap=\"hard\"\n                    onKeyPress={(event:React.KeyboardEvent<HTMLTextAreaElement>) => this.handleOnKeyPress(event)}\n                    onClick={e => {\n                        e.stopPropagation();\n                    }}\n                />\n            </Wrapper>\n        )\n    }\n}\n", "import {createTheme, Theme} from '@mui/material/styles';\nimport {darkenPrimary, darkenRed, darkenWhite, lightDark, lightPrimary, lightWhite, primary, red, white, yellow, dark}\n    from \"../react-components/src/values/colors/colors\";\nimport {PaletteColorOptions} from \"@mui/material\";\n\nexport const theme: Theme = createTheme({\n    breakpoints: {\n        values: {\n            xs: 320,\n            // Small Mobile devices\n            sm: 480,\n            // Mobile devices\n            md: 768,\n            // Tablets\n            lg: 1025,\n            // Laptops & small screens\n            xl: 1200,\n            // Large screens & TV\n        },\n    },\n    palette: {\n        primary: {\n            main: primary,\n            light: lightPrimary,\n            dark: darkenPrimary,\n            contrastText: white,\n        },\n        error: {\n            main: red,\n            dark: darkenRed,\n            contrastText: white\n        },\n        warning: {\n            main: yellow,\n        },\n        darkenWhite: {\n            light: lightWhite,\n            main: white,\n            dark: darkenWhite,\n            contrastText: dark\n        },\n        white: {\n            light: lightWhite,\n            main: white,\n            dark: darkenWhite,\n            contrastText: primary\n        },\n        dark: {\n            main: lightDark,\n            dark: dark,\n            contrastText: white\n        },\n        background: {\n            default: white,\n            paper: lightWhite,\n        },\n    },\n    typography: {\n        fontFamily: 'hind, Arial Black, Gadget, sans-serif',\n        fontSize: 12,\n        h1: {\n            fontSize: '4rem',\n        },\n        h2: {\n            fontSize: '3rem',\n        },\n        h3: {\n            fontSize: '2.3rem',\n        },\n        h4: {\n            fontSize: '1.8rem',\n        },\n        h5: {\n            fontSize: '1.2rem',\n        },\n        h6: {\n            fontSize: '1rem',\n        },\n        subtitle2: {\n            fontFamily: 'rubik, Helvetica, Arial, sans-serif',\n            fontWeight: 500,\n            fontSize: '0.8rem',\n        },\n        subtitle1: {\n            fontSize: '0.8rem',\n        },\n        body1: {\n            fontSize: '1rem',\n        },\n        body2: {\n            fontSize: '0.9rem',\n            fontFamily: 'rubik, Helvetica, Arial, sans-serif',\n            fontWeight: 500,\n        },\n    }\n});\n\ndeclare module '@mui/material/styles' {\n    interface Palette {\n        dark: PaletteColorOptions;\n        white: PaletteColorOptions;\n        darkenWhite: PaletteColorOptions;\n    }\n    interface PaletteOptions {\n        dark: PaletteColorOptions;\n        white: PaletteColorOptions;\n        darkenWhite: PaletteColorOptions;\n    }\n}\n\ndeclare module '@mui/material/Button' {\n    interface ButtonPropsColorOverrides {\n        white: true;\n        dark: true;\n    }\n}\n\ndeclare module '@mui/material/Chip' {\n    interface ChipPropsColorOverrides {\n        darkenWhite: true;\n        dark: true;\n    }\n}\n", "import * as React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {Logo} from \"@root/react-components/src/logo/Logo\";\nimport {darkenWhite, lighterDark, primary, red, white, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {\n    primaryFontXLarge,\n    secondaryFontMedium,\n    secondaryFontSmall,\n    secondaryFontXSmall\n} from \"@root/react-components/src/values/fonts/fonts\";\nimport {getCoreGitCommit, getCoreVersion, getFrameRate, getMemoryUsage} from \"Engine/AdapterWeb/AdapterWebAssembly\";\nimport {App} from \"App\";\nimport {WarningDialog} from \"@root/Frontend/Studio/Components/Toolbar/AppInformation/WarningDialog\";\nimport {convertBytesIntoPrettyDataAmount, DataAmount, DataUnit} from \"@utils/utils\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport i18next from \"i18next\";\nimport {PanelOrder} from \"@root/Frontend/Studio/layouts/LeftPanels\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\n// @ts-ignore\nimport ACKNOWLEDGEMENTS from \"./../../../../../../Apple/DeepSight/Settings.bundle/en.lproj/Acknowledgements.strings\";\nimport {OnBoarding, OnBoardingStage} from \"@root/Frontend/Studio/OnBoarding/OnBoarding\";\n\nconst Wrapper = styled(Box)({\n    marginLeft: \"110px\",\n    color: white,\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    height: \"100%\",\n    justifyContent: \"center\",\n    width: \"calc(100% - 100px)\",\n    \"& > div > svg\": {\n        marginTop: \"12px\",\n        height: \"64px\",\n        width: \"92px\"\n    }\n});\n\nconst DynamicAppInfo = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"row\",\n    paddingBottom: \"4px\",\n    font: secondaryFontMedium,\n    \"& > div\": {\n        textIndent: \"4px\"\n    }\n});\n\nconst Version = styled(Box)({\n    color: darkenWhite,\n    font: secondaryFontSmall,\n    marginTop: \"6px\",\n    cursor: \"pointer\",\n    textDecoration: \"underline\"\n});\n\nconst Commit = styled(Box)({\n    color: lighterDark,\n    font: secondaryFontXSmall,\n    marginTop: \"6px\"\n});\n\nconst AcknowledgementsLink = styled(Box)({\n    color: darkenWhite,\n    font: secondaryFontSmall,\n    cursor: \"pointer\",\n    textDecoration: \"underline\",\n    marginTop: \"4px\"\n});\n\nconst DialogContentWrapper = styled(Box)({\n    whiteSpace: \"pre-wrap\",\n    maxHeight: \"60vh\",\n    width: \"600px\",\n    overflowY: \"auto\",\n    padding: \"4px 0\",\n    \"&::-webkit-scrollbar\": {\n        width: \"10px\",\n        height: \"10px\",\n    },\n    \"&::-webkit-scrollbar-track\": {\n        background: \"transparent\",\n    },\n    \"&::-webkit-scrollbar-thumb\": {\n        backgroundColor: primary,\n        borderRadius: \"10px\",\n    },\n});\n\nconst ButtonWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"12px\"\n});\n\nconst InfoGraphic = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"center\",\n    \"& > img\": {\n        height: \"35vh\",\n        border: `5px solid ${primary}`\n    }\n});\n\ninterface AppInformationState {\n    dialogLicensesOpened: boolean;\n    dialogMemoryOpened: boolean;\n    acknowledgedWarning: boolean;\n    memoryUsage: bigint;\n    frameRate: number;\n}\n\n// Bottom left logo with version number including memory usage and frame rate\nexport class AppInformation extends React.Component {\n    private static readonly MEMORY_LIMIT: DataAmount = new DataAmount(1.3, DataUnit.GB);\n    private static readonly MEMORY_WARNING_PERCENTAGE: number = 0.8;\n    state: AppInformationState = {\n        dialogLicensesOpened: false,\n        dialogMemoryOpened: false,\n        acknowledgedWarning: false,\n        memoryUsage: BigInt(0),\n        frameRate: 0\n    };\n\n    componentDidMount() {\n        this.updateDynamicAppInformation();\n    }\n\n    private setMemoryUsage(memoryUsage: bigint) {\n\n        // update the memory usage div element and its percentage only if the usage has changed\n        if (this.state.memoryUsage === memoryUsage)\n            return;\n\n        // verify if we went above the limit for the warning to show up (and we haven't acknowledged yet)!\n        const memoryUsagePercentage: number = Number(memoryUsage) / AppInformation.MEMORY_LIMIT.toExactBytes();\n        if (!this.state.acknowledgedWarning && memoryUsagePercentage > AppInformation.MEMORY_WARNING_PERCENTAGE)\n            this.setState({ dialogMemoryOpened: true });\n\n        this.setState({memoryUsage});\n    }\n\n    private getMemoryLabelColor(memoryUsagePercentage: number): string {\n        if (memoryUsagePercentage >= 1)\n            return red;\n        else if (memoryUsagePercentage >= AppInformation.MEMORY_WARNING_PERCENTAGE)\n            return yellow;\n        else\n            return white;\n    }\n\n    private setFrameRate(frameRate: number) {\n        // update the frame rate div element only if the fps has changed\n        const frameRateRounded: number = Math.round(frameRate);\n        if (frameRateRounded !== this.state.frameRate)\n            this.setState({ frameRate: frameRateRounded });\n    }\n\n    private updateDynamicAppInformation() {\n        this.setMemoryUsage(getMemoryUsage());\n        this.setFrameRate(getFrameRate());\n        window.requestAnimationFrame(() => this.updateDynamicAppInformation());\n    }\n\n    private closeWarningDialog() {\n        this.setState({ acknowledgedWarning: true, dialogMemoryOpened: false });\n\n        const app: App = App.getInstance();\n        if (!app.isAssetDialogOpen())\n            app.openPanel(PanelOrder.CLOSED);\n    }\n\n    private async startOnBoarding() {\n        if (!OnBoarding.getInstance())\n            await App.getInstance().initOnBoarding();\n\n        OnBoarding.getInstance().goToStage(OnBoardingStage.INTRODUCTION);\n    }\n\n    render() {\n        if (!App.getInstance().getEngine())\n            return <></>;\n\n        // compute a few things from memory usage\n        const memUsage: DataAmount  = convertBytesIntoPrettyDataAmount(Number(this.state.memoryUsage));\n        const memPercentage: number = Number(this.state.memoryUsage) / AppInformation.MEMORY_LIMIT.toExactBytes();\n        const memLabelColor: string = this.getMemoryLabelColor(memPercentage);\n\n        // remove the beginning and end of ACKNOWLEDGEMENTS string\n        const PREFIX: string = '\"Licenses\" = \"';\n        let acknowledgements: string = ACKNOWLEDGEMENTS as string;\n        if (acknowledgements.startsWith(PREFIX))\n            acknowledgements = acknowledgements.slice(PREFIX.length, -3);\n\n        return(\n            <Wrapper>\n                <Tooltip\n                    title={i18next.t(\"If the memory usage limit is passed, then the world could become unstable\")\n                        + \".\"}>\n                    <DynamicAppInfo>\n                        {i18next.t(\"Memory Usage\")}:\n                        <Box sx={{ color: memLabelColor }}>\n                            {memUsage.toString()} / {AppInformation.MEMORY_LIMIT.toString()}\n                        </Box>\n                    </DynamicAppInfo>\n                </Tooltip>\n                <DynamicAppInfo>\n                    {i18next.t(\"Frame Rate\")}:<div>{this.state.frameRate} fps</div>\n                </DynamicAppInfo>\n                <div onClick={async () => await this.startOnBoarding()} style={{ cursor: \"pointer\" }}>\n                    <Logo />\n                </div>\n                <Version onClick={() => App.getInstance().openAnnouncementDialog()}>\n                    Version {getCoreVersion()}\n                </Version>\n                <Commit>\n                    {getCoreGitCommit()}\n                </Commit>\n                <AcknowledgementsLink onClick={() => this.setState({ dialogLicensesOpened: true })}>\n                    {i18next.t(\"Acknowledgements\")}\n                </AcknowledgementsLink>\n                {this.state.dialogMemoryOpened &&\n                    <WarningDialog onClose={() => this.closeWarningDialog()}>\n                        <span>\n                            {i18next.t(\"Your memory usage has passed the warning threshold, your world may become\")}\n                            <strong>{\" \" + i18next.t(\"unstable\")}</strong>{\" \" + i18next.t(\"or\") + \" \"}\n                            <strong>{i18next.t(\"not load at all\")}</strong>{\".\"}\n                        </span>\n                        <span>\n                            {i18next.t(\"If you switched worlds, then it will help to refresh Studio to reset the \" +\n                                \"memory usage\") + \".\"}\n                        </span>\n                        <span>\n                            {i18next.t(\"You can check your memory usage by following the steps in the image below\")\n                                + \".\"}\n                        </span>\n                        <InfoGraphic>\n                            <img\n                                src={\"./AppInformationInfographic.png\"}\n                                alt={i18next.t(\"Close the current panel (Worlds, Assets or Sequences)\")}\n                            />\n                        </InfoGraphic>\n                    </WarningDialog>\n                }\n                {this.state.dialogLicensesOpened &&\n                    <Dialog\n                        size={DialogSize.xs}\n                        onClose={() => this.setState({ dialogLicensesOpened: false })}\n                        closeOnClickOutside\n                    >\n                        <Box sx={{ font: primaryFontXLarge }}>{i18next.t(\"Acknowledgements\")}</Box>\n                        <DialogContentWrapper>\n                            {acknowledgements}\n                        </DialogContentWrapper>\n                        <ButtonWrapper>\n                            <Button onClick={() => this.setState({ dialogLicensesOpened: false })}>\n                                {i18next.t(\"Close\")}\n                            </Button>\n                        </ButtonWrapper>\n                    </Dialog>\n                }\n            </Wrapper>\n        );\n    }\n}\n\n", "import React from \"react\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Box, styled} from \"@mui/material\";\nimport {primaryFontXLarge, secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\n\nconst Title = styled(Box)({\n    font: primaryFontXLarge,\n});\n\nconst Content = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    paddingTop: 10,\n    gap: 5,\n    minWidth: \"600px\",\n    font: secondaryFontLarge\n});\n\nconst ButtonWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"12px\"\n});\n\ninterface WarningDialogProps {\n    onClose: () => void,\n    children: React.ReactNode\n}\n\nexport class WarningDialog extends React.Component {\n    props: WarningDialogProps;\n\n    render(): JSX.Element {\n        return (\n            <Dialog\n                size={DialogSize.xs}\n                onClose={() => this.props.onClose()}\n            >\n                <Title>{i18next.t(\"Warning\")}</Title>\n                <Content>{this.props.children}</Content>\n                <ButtonWrapper>\n                    <Button onClick={() => this.props.onClose()}>\n                        {i18next.t(\"I understand\")}\n                    </Button>\n                </ButtonWrapper>\n            </Dialog>\n        );\n    }\n}\n", "import * as React from 'react';\nimport {Panel} from \"@root/Frontend/Studio/layouts/Panel\";\nimport {Box, styled} from \"@mui/material\";\nimport {primary, white, dark} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from 'i18next';\nimport {TRANSITIONS_SECONDS} from \"@root/Frontend/Studio/App\";\n\nexport const OPEN_PANELS_WIDTH: number = 342\nexport const CLOSE_PANELS_WIDTH: number = 108\nconst Wrapper = styled(Box) ({\n    display: \"grid\",\n    height: \"100%\",\n    overflow: \"hidden\",\n    transition: `${TRANSITIONS_SECONDS}s all`,\n});\n\nexport enum PanelOrder {\n    ASSETS,\n    SEQUENCES,\n    STEPS,\n    CLOSED\n}\n\ninterface LeftPanelsInterface {\n    setPanelsWidth: (leftPanelWidth: number) => void\n    assetPanel: JSX.Element\n    sequencesPanel: JSX.Element\n    stepsPanel: JSX.Element\n}\n\ninterface LeftPanelsState {\n    active: number\n}\n\nexport class LeftPanels extends React.Component {\n    props: LeftPanelsInterface;\n    state: LeftPanelsState = { active: PanelOrder.ASSETS };\n\n    public getActivePanel(): PanelOrder { return this.state.active; }\n\n    public async openPanel(index: PanelOrder): Promise<void> {\n        const prevIndex: number = this.state.active;\n\n        await new Promise<void>((resolve) => {\n            this.setState({active: this.state.active === index ? PanelOrder.CLOSED : index}, () => resolve())\n        });\n\n        if (prevIndex === PanelOrder.CLOSED || this.state.active === PanelOrder.CLOSED)\n            this.props.setPanelsWidth(this.state.active === PanelOrder.CLOSED ? CLOSE_PANELS_WIDTH : OPEN_PANELS_WIDTH);\n    }\n\n    render(){\n        return(\n            <Wrapper id=\"left-panels\">\n                <Panel\n                    activePanel={this.state.active}\n                    bgColor={dark}\n                    index={PanelOrder.ASSETS}\n                    title={i18next.t(\"Assets\")}\n                    handleChangePanel={() => this.openPanel(PanelOrder.ASSETS)}\n                >\n                    {this.state.active === PanelOrder.ASSETS && this.props.assetPanel}\n                </Panel>\n                <Panel\n                    activePanel={this.state.active}\n                    bgColor={primary}\n                    index={PanelOrder.SEQUENCES}\n                    title={i18next.t(\"Sequences\")}\n                    handleChangePanel={() => this.openPanel(PanelOrder.SEQUENCES)}\n                >\n                    {this.state.active === PanelOrder.SEQUENCES && this.props.sequencesPanel}\n                </Panel>\n                <Panel\n                    activePanel={this.state.active}\n                    bgColor={white}\n                    index={PanelOrder.STEPS}\n                    title={i18next.t(\"Steps\")}\n                    handleChangePanel={() => this.openPanel(PanelOrder.STEPS)}\n                >\n                    {this.state.active === PanelOrder.STEPS && this.props.stepsPanel}\n                </Panel>\n            </Wrapper>\n        )\n    }\n}\n", "import * as React from \"react\";\nimport {CircleArrow} from \"@root/react-components/src/icons/CircleArrow\";\nimport {dark, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Box, styled} from \"@mui/material\";\n\nconst PANEL_BG_COLOR: string[] = [dark, primary, white];\nconst PADDING_CONSTANT: number = 36;\nconst WIDTH_CONSTANT: number = 270;\n\nconst PanelContainer = styled(Box)((props: {index: number, active: number}) => ({\n    gridArea: \"1 / 1\",\n    overflow: \"hidden\",\n    backgroundColor: PANEL_BG_COLOR[props.index % PANEL_BG_COLOR.length],\n    height: \"100%\",\n    width: `${WIDTH_CONSTANT}px`,\n    borderBottomRightRadius: \"48px\",\n    color: PANEL_BG_COLOR[props.index % PANEL_BG_COLOR.length] === white ? primary : white,\n    fontSize: \"21px\",\n    zIndex: 999 - props.index,\n    transition: \"0.3s all\",\n    transform: props.active - props.index <= 0 ?\n        \"\" : `translateX(calc(-100% + ${(props.index + 1) * PADDING_CONSTANT}px))`,\n    paddingLeft: `${props.index * PADDING_CONSTANT}px`,\n    display: \"flex\",\n    flexDirection: \"column\",\n    \"&:hover\": {\n        cursor: \"pointer\",\n    }\n}));\n\nconst TopContainer = styled(Box)((props: { open: number }) => ({\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: props.open ? \"space-between\" : \"flex-end\",\n    padding: props.open ? \"24px 12px 12px 12px\" : \"24px 10px 12px 24px\",\n    boxSizing: \"border-box\",\n    position: \"relative\",\n    height: \"70px\",\n}));\n\nconst Title = styled(Box)({\n    font: primaryFontXLarge\n});\n\nconst RotTitle = styled(Box)({\n    font: primaryFontXLarge,\n    writingMode: \"vertical-rl\",\n    transform: \"rotate(180deg)\",\n    position: \"absolute\",\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    transition: \"0.3s opacity\",\n    height: \"400px\",\n    top: \"54px\",\n    right: \"6px\",\n});\n\nconst Icon = styled(Box)((props: { isactive: Number }) => ({\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    transform: props.isactive ? \"rotate(180deg)\" : \"rotate(90deg)\",\n    transition: \"0.3s all\",\n    height: \"20px\",\n    width: \"20px\",\n    \"&:hover\": {\n        fill: primary,\n        cursor: \"pointer\"\n    }\n}));\n\nconst Content = styled(Box)({\n    height: \"calc(100% - 70px)\",\n    width: \"100%\"\n});\n\ninterface PanelProps {\n    children: JSX.Element | false\n    activePanel: number\n    title: string\n    index: number\n    bgColor: string\n    handleChangePanel: (e: React.MouseEvent<HTMLDivElement>) => void\n}\n\nexport class Panel extends React.Component {\n    props: PanelProps;\n\n    render() {\n        const isActive: boolean = this.props.activePanel === this.props.index;\n        return (\n            <PanelContainer\n                index={this.props.index}\n                active={this.props.activePanel}\n                onClick={(e: React.MouseEvent<HTMLDivElement>) => !isActive && this.props.handleChangePanel(e)}\n            >\n                <TopContainer open={Number(isActive)}>\n                    {isActive && <Title> {this.props.title} </Title>}\n                    <Icon\n                        id={`left-panel-${this.props.index}-btn`}\n                        isactive={Number(isActive)}\n                        onClick={(e: React.MouseEvent<HTMLDivElement>) => this.props.handleChangePanel(e)}\n                    >\n                        <CircleArrow />\n                    </Icon>\n                    {!isActive && <RotTitle> {this.props.title} </RotTitle>}\n                </TopContainer>\n                <Content id={`panel-${this.props.index}`} data-is-active={isActive}>\n                    {this.props.activePanel === this.props.index && this.props.children}\n                </Content>\n            </PanelContainer>\n        )\n    }\n}\n", "import React from \"react\";\n\nexport function CircleArrow() {\n    return (\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n            <path style={{fill: \"currentColor\"}} d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm2 12l-4.5 4.5 1.527 1.5 5.973-6-5.973-6-1.527 1.5 4.5 4.5z\"/>\n        </svg>\n    );\n}\n", "\"Licenses\" = \"Portions of the application may utilize the following copyrighted material, the use of which is hereby acknowledged:\n\n\nThe ANGLE Project Authors - ANGLE\nCopyright 2018 The ANGLE Project Authors. All rights reserved.\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\nRedistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\nRedistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\nNeither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission.\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\nAssimp team - assimp (Open Asset Import Library)\nCopyright (c) 2006-2021, assimp team. All rights reserved.\nRedistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n* Neither the name of the assimp team, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission of the assimp team.\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\nThe FFmpeg developers - FFmpeg\nCopyright (c) 2000-2024 the FFmpeg developers\nThis product uses FFmpeg (LGPLv2.1) for multimedia processing. FFmpeg source and license are available at https://github.com/FFmpeg/FFmpeg/tree/n5.1\nGNU LESSER GENERAL PUBLIC LICENSE\nVersion 2.1, February 1999\nCopyright (C) 1991, 1999 Free Software Foundation, Inc.\n51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\nEveryone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.\n[This is the first released version of the Lesser GPL.  It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.]\nPreamble\nThe licenses for most software are designed to take away your freedom to share and change it.  By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.\nThis license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it.  You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.\nWhen we speak of free software, we are referring to freedom of use, not price.  Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get t if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.\nTo protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights.  These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.\nFor example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you.  You must make sure that they, too, receive or can get the source code.  If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it.  And you must show them these terms so they know their rights.\nWe protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.\nTo protect each distributor, we want to make it very clear that there is no warranty for the free library.  Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.\nFinally, software patents pose a constant threat to the existence of any free program.  We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder.  Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.\nMost GNU software, including some libraries, is covered by the ordinary GNU General Public License.  This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License.  We use this license for certain libraries in order to permit linking those libraries into non-free programs.\nWhen a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library.  The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom.  The Lesser General Public License permits more lax criteria for linking other code with the library.\nWe call this license the 'Lesser' General Public License because it does Less to protect the user's freedom than the ordinary General Public License.  It also provides other free software developers Less of an advantage over competing non-free programs.  These disadvantages are the reason we use the ordinary General Public License for many libraries.  However, the Lesser license provides advantages in certain special circumstances.\nFor example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard.  To achieve this, non-free programs must be allowed to use the library.  A more frequent case is that a free library does the same job as widely used non-free libraries.  In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.\nIn other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software.  For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating\nsystem.\nAlthough the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.\nThe precise terms and conditions for copying, distribution and modification follow.  Pay close attention to the difference between a 'work based on the library' and a 'work that uses the library'.  The former contains code derived from the library, whereas the latter must be combined with the library in order to run.\nGNU LESSER GENERAL PUBLIC LICENSE\nTERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called 'this License'). Each licensee is addressed as 'you'.\nA 'library' means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.\nThe 'Library', below, refers to any such software library or work which has been distributed under these terms.  A 'work based on the Library' means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language.  (Hereinafter, translation is included without limitation in the term 'modification'.)\n'Source code' for a work means the preferred form of the work for making modifications to it.  For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.\nActivities other than copying, distribution and modification are not covered by this License; they are outside its scope.  The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it).  Whether that is true depends on what the Library does and what the program that uses the Library does.\n1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.\nYou may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\n2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\na) The modified work must itself be a software library.\nb) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.\nc) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.\nd) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.\n(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application.  Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)\nThese requirements apply to the modified work as a whole.  If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works.  But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\nThus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.\nIn addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\n3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library.  To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License.  (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.)  Do not make any other change in these notices.\nOnce this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.\nThis option is useful when you wish to copy part of the code of the Library into a program that is not a library.\n4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.\nIf distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.\n5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a 'work that uses the Library'.  Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.\nHowever, linking a 'work that uses the Library' with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a 'work that uses the library'.  The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.\nWhen a 'work that uses the Library' uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library.  The threshold for this to be true is not precisely defined by law.\nIf such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work.  (Executables containing this object code plus portions of the Library will still fall under Section 6.)\nOtherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.\n6. As an exception to the Sections above, you may also combine or link a 'work that uses the Library' with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.\nYou must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License.  You must supply a copy of this License.  If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License.  Also, you must do one of these things:\na) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable 'work that uses the Library', as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library.  (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)\nb) Use a suitable shared library mechanism for linking with the Library.  A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.\nc) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.\nd) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.\ne) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.\nFor an executable, the required form of the 'work that uses the Library' must include any data and utility programs needed for reproducing the executable from it.  However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\nIt may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system.  Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.\n7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:\na) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities.  This must be distributed under the terms of the Sections above.\nb) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.\n8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License.  Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License.  However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\n9. You are not required to accept this License, since you have not signed it.  However, nothing else grants you permission to modify or distribute the Library or its derivative works.  These actions are prohibited by law if you do not accept this License.  Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.\n10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions.  You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.\n11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License.  If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all.  For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.\nIf any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.\nIt is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices.  Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\nThis section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\n12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded.  In such case, this License incorporates the limitation as if written in the body of this License.\n13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\nEach version is given a distinguishing version number.  If the Library specifies a version number of this License which applies to it and 'any later version', you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation.  If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.\n14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission.  For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this.  Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\nNO WARRANTY\n15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY 'AS IS' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n\n\nVictor Zverovich and {fmt} contributors - fmt\nCopyright (c) 2012 - present, Victor Zverovich and {fmt} contributors\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nG-Truc Creation - GLM\nCopyright (c) 2005 - G-Truc Creation\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nThe Independent JPEG Group - JPEG software\nThis software is copyright (C) 1991-2020, Thomas G. Lane, Guido Vollbeding. All Rights Reserved except as specified below.\nThe authors make NO WARRANTY or representation, either express or implied, with respect to this software, its quality, accuracy, merchantability, or fitness for a particular purpose.  This software is provided 'AS IS', and you, its user, assume the entire risk as to its quality and accuracy.\nPermission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions:\n(1) If any part of the source code for this software is distributed, then this README file must be included, with this copyright and no-warranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation.\n(2) If only executable code is distributed, then the accompanying documentation must state that 'this software is based in part on the work of the Independent JPEG Group'.\n(3) Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind.\nThese conditions apply to any software derived from or based on the IJG code, not just to the unmodified library.  If you use our work, you ought to acknowledge us.\nPermission is NOT granted for the use of any IJG author's name or company name in advertising or publicity relating to this software or products derived from it. This software may be referred to only as 'the Independent JPEG Group's software'.\nWe specifically permit and encourage the use of this software as the basis of commercial products, provided that all warranty or liability claims are assumed by the product vendor.\n\n\nM. Nunberg - jsonsl\nCopyright (c) 2012-2015 M. Nunberg <mnunberg\uFF20haskalah.org>\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\nMongoDB, Inc. - libbson\nCopyright 2009-present MongoDB, Inc.\nApache License Version 2.0, January 2004\nhttp://www.apache.org/licenses/\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n1. Definitions.\n'License' shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\n'Licensor' shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\n'Legal Entity' shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, 'control' means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\n'You' (or 'Your') shall mean an individual or Legal Entity exercising permissions granted by this License.\n'Source' form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\n'Object' form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\n'Work' shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\n'Derivative Works' shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\n'Contribution' shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, 'submitted' means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as 'Not a Contribution.'\n'Contributor' shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\n2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\n3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.\n4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\n(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and\n(b) You must cause any modified files to carry prominent notices stating that You changed the files; and\n(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\n(d) If the Work includes a 'NOTICE' text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\nYou may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\n5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\n6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\n7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\n8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\n9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.\nEND OF TERMS AND CONDITIONS\nAPPENDIX: How to apply the Apache License to your work.\nTo apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets '[]' replaced with your own identifying information. (Don't include the brackets!)  The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same 'printed page' as the copyright notice for easier identification within third-party archives.\nCopyright [yyyy] [name of copyright owner]\nLicensed under the Apache License, Version 2.0 (the 'License'); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n\nD. R. Commander, Viktor Szathm\u00E1ry - libjpeg-turbo\nCopyright (C)2009-2024 D. R. Commander.  All Rights Reserved.\nCopyright (C)2015 Viktor Szathm\u00E1ry.  All Rights Reserved.\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n- Neither the name of the libjpeg-turbo Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS', AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\nThe LibYuv Project Authors - libyuv\nCopyright 2011 The LibYuv Project Authors. All rights reserved. \nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n* Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\nDaniil Goncharov - magic_enum\nCopyright (c) 2019 - 2024 Daniil Goncharov\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nRAD Game Tools, Valve Software, Rich Geldreich, Tenacious Software LLC - miniz\nCopyright 2013-2014 RAD Game Tools and Valve Software\nCopyright 2010-2014 Rich Geldreich and Tenacious Software LLC\nAll Rights Reserved.\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nOpenCV.org Foundation - OpenCV\nCopyright (c) 2000-2024 OpenCV.org Foundation\nApache License Version 2.0, January 2004\nhttp://www.apache.org/licenses/\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n1. Definitions.\n'License' shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\n'Licensor' shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\n'Legal Entity' shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, 'control' means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\n'You' (or 'Your') shall mean an individual or Legal Entity exercising permissions granted by this License.\n'Source' form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\n'Object' form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\n'Work' shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\n'Derivative Works' shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\n'Contribution' shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, 'submitted' means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as 'Not a Contribution.'\n'Contributor' shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\n2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\n3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.\n4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\n(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and\n(b) You must cause any modified files to carry prominent notices stating that You changed the files; and\n(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\n(d) If the Work includes a 'NOTICE' text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\nYou may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\n5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\n6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\n7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\n8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\n9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.\nEND OF TERMS AND CONDITIONS\nAPPENDIX: How to apply the Apache License to your work.\nTo apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets '[]' replaced with your own identifying information. (Don't include the brackets!)  The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same 'printed page' as the copyright notice for easier identification within third-party archives.\nCopyright [yyyy] [name of copyright owner]\nLicensed under the Apache License, Version 2.0 (the 'License'); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n\nThe Khronos Group Inc. - OpenXR\nCopyright (c) 2013-2025 The Khronos Group Inc. All rights reserved.\nApache License Version 2.0, January 2004\nhttp://www.apache.org/licenses/\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n1. Definitions.\n'License' shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\n'Licensor' shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\n'Legal Entity' shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, 'control' means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\n'You' (or 'Your') shall mean an individual or Legal Entity exercising permissions granted by this License.\n'Source' form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\n'Object' form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\n'Work' shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\n'Derivative Works' shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\n'Contribution' shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, 'submitted' means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as 'Not a Contribution.'\n'Contributor' shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\n2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\n3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.\n4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\n(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and\n(b) You must cause any modified files to carry prominent notices stating that You changed the files; and\n(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\n(d) If the Work includes a 'NOTICE' text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\nYou may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\n5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\n6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\n7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\n8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\n9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.\nEND OF TERMS AND CONDITIONS\nAPPENDIX: How to apply the Apache License to your work.\nTo apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets '[]' replaced with your own identifying information. (Don't include the brackets!)  The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same 'printed page' as the copyright notice for easier identification within third-party archives.\nCopyright [yyyy] [name of copyright owner]\nLicensed under the Apache License, Version 2.0 (the 'License'); you may not use this file except in compliance with the License. You may obtain a copy of the License at\nhttp://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n\nPoly2Tri Contributors - Poly2Tri\nPoly2Tri Copyright (c) 2009-2010, Poly2Tri Contributors. All rights reserved.\nhttp://code.google.com/p/poly2tri/\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n* Neither the name of Poly2Tri nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\nArseny Kapoulkine - pugixml\nCopyright (c) 2006-2023 Arseny Kapoulkine\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \u201CSoftware\u201D), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \u201CAS IS\u201D, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nPierre Vigier - Quadtree\nCopyright (c) 2019 Pierre Vigier\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nDaniel Beer - quirc\nCopyright (C) 2010-2012 Daniel Beer <dlbeer\uFF20gmail.com>\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\nTHE SOFTWARE IS PROVIDED 'AS IS' AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n\nDaniil Goncharov, Alexander Gorbunov - semver\nCopyright (c) 2018 - 2025 Daniil Goncharov\nCopyright (c) 2020 - 2025 Alexander Gorbunov\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nSentry and individual contributors - Sentry\nCopyright (c) 2019 Sentry (https://sentry.io) and individual contributors. All rights reserved.\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nGabi Melman - spdlog\nCopyright (c) 2016 Gabi Melman.                                       \nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nSean Barrett - stb\nCopyright (c) 2017 Sean Barrett\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nThe tinygettext project authors - tinygettext\nCopyright (c) 2004-2016\n* Bastiaan Zapf <bzapf@example.org>\n* Christoph Sommer <mail@christoph-sommer.de>\n* Georg Kilzer (leper) <leper@wildfiregames.com>\n* Ingo Ruhnke <grumbel@gmail.com>\n* Mathnerd314 <mathnerd314.gph@gmail.com>\n* Matt McCutchen <matt@mattmccutchen.net>\n* Matthias Braun <matze@braunis.de>\n* Nathan Phillip Brink <ohnobinki@ohnopublishing.net>\n* Poren Chiang <ren.chiang@gmail.com>\n* Ravu al Hemio <ondra.hosek@gmail.com>\n* Ryan Flegel <rflegel@gmail.com>\n* Tim Goya <tuxdev103@gmail.com>\n* Tobias Markus <tobbi.bugs@gmail.com>\n* Wolfgang Becker <uafr@gmx.de>\nThis software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgement in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\n\nThe WebRTC project authors - WebRTC\nCopyright (c) 2011, The WebRTC project authors. All rights reserved.\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n* Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\nJean-loup Gailly and Mark Adler - zlib\n(C) 1995-2024 Jean-loup Gailly and Mark Adler\nThis software is provided 'as-is', without any express or implied warranty.  In no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\nJean-loup Gailly        Mark Adler\njloup\uFF20gzip.org          madler\uFF20alumni.caltech.edu\n\";\n", "import React from \"react\";\nimport {Box, Divider, styled} from \"@mui/material\";\nimport {darkGrey, white} from \"@root/react-components/src/values/colors/colors\";\nimport {convertSecondsToTimer} from \"@utils/utils\";\nimport {VideoEditorContext} from \"@root/Frontend/Studio/Contexts/VideoEditorContext\";\nimport {clipSequenceVideo} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {\n    getCurrentSequenceID,\n    getSequenceVideoID\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {LoadingOverlay} from \"@root/react-components/src/misc/LoadingOverlay\";\nimport i18next from \"i18next\";\nimport {ClipWrapper, ThumbnailWrapper,} from \"@root/Frontend/Studio/Components/Toolbar/VideoEditor/ClippedVideo\";\nimport {CreateWorld} from \"@root/react-components/src/icons/CreateWorld\";\nimport {ClippedVideosList} from \"@root/Frontend/Studio/Components/Toolbar/VideoEditor/ClippedVideosList\";\nimport {\n    getClippedVideoIDs,\n    getVideoThumbnailUrlS3,\n    isVideoMetadataValid,\n    queryVideoMetadata\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {getCurrentStepID, getStepType} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {getCurrentWorldID, getOwnerID, getWorldOwnerType} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport getTimestampOfRandomID = UtilsShared.getTimestampOfRandomID;\nimport {createNewVideo} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterCloud\";\n\nconst EditorWrapper = styled(Box)({\n    display: \"flex\",\n    width: \"100%\",\n    flexDirection: \"column\",\n    padding: \"20px 20px 10px 20px\",\n    color: white,\n    font: primaryFontLarge,\n    overflow: \"hidden\"\n});\n\ninterface VideoEditorState {\n    clippedVideos: Set<bigint>,\n    isClippingVideo: boolean,\n    isStepAnimatedSelected: boolean\n}\n\nexport class VideoEditor extends React.Component {\n    static contextType = VideoEditorContext;\n\n    context: React.ContextType<typeof VideoEditorContext>;\n    state: VideoEditorState = {\n        clippedVideos: new Set<bigint>(),\n        isClippingVideo: false,\n        isStepAnimatedSelected: getStepType(getCurrentStepID()) === StepType.ANIMATED\n    };\n\n    componentDidMount() {\n        const clippedVideos: bigint[] = getClippedVideoIDs(getSequenceVideoID(getCurrentSequenceID()));\n        for(const videoID of clippedVideos) {\n            if(!isVideoMetadataValid(videoID))\n                queryVideoMetadata(videoID)\n            else\n                this.insertClippedVideo(videoID);\n        }\n    }\n\n    public updateIsStepAnimatedSelected(isStepAnimatedSelected: boolean) { this.setState({ isStepAnimatedSelected }); }\n\n    public insertClippedVideo(clippedVideoID: bigint) {\n        if (!getClippedVideoIDs(this.context.videoID).includes(clippedVideoID))\n            return;\n\n        this.setState((prevState: VideoEditorState) =>\n        ({ clippedVideos: new Set([clippedVideoID, ...prevState.clippedVideos].sort(\n                (a: bigint, b: bigint) => Number(getTimestampOfRandomID(b) - getTimestampOfRandomID(a)))),\n           isClippingVideo: false\n        }));\n    }\n\n    private handleClipVideoClick(startClipMs: number, endClipMs: number) {\n        this.setState({ isClippingVideo: true }, async () => {\n            const currentWorldID: bigint = getCurrentWorldID();\n            const ownerID: bigint = getOwnerID(currentWorldID);\n            const ownerType: OwnerType = getWorldOwnerType(currentWorldID);\n            const videoID: bigint = await createNewVideo(ownerID, ownerType);\n            if (videoID)\n                clipSequenceVideo(videoID, startClipMs, endClipMs);\n        });\n    }\n\n    public render() {\n        if (this.state.clippedVideos.size !== getClippedVideoIDs(getSequenceVideoID(getCurrentSequenceID())).length)\n            return <CenteredLoading />\n\n        const [startClipMs, endClipMs]: [number, number] = this.context.selectedRange;\n        return (\n            <EditorWrapper>\n                {i18next.t(\"Clipped Videos Library\")}\n                <Divider sx={{ backgroundColor: darkGrey }} />\n                <Box style={{ display: \"flex\", marginTop: \"5px\" }}>\n                    <ClipWrapper\n                        id=\"clip-video-button\"\n                        enabled={Number(true)}\n                        onClick={() => this.handleClipVideoClick(startClipMs, endClipMs)}>\n                        <ThumbnailWrapper style={{ width: \"75px\", height: \"75px\" }}>\n                            <CreateWorld fill={white} />\n                            <Box style={{ marginTop: \"3px\" }}>\n                                {`${convertSecondsToTimer(startClipMs / 1000)} - \n                                ${convertSecondsToTimer(endClipMs / 1000)}`}\n                            </Box>\n                        </ThumbnailWrapper>\n                    </ClipWrapper>\n                    <ClippedVideosList\n                        clippedVideos={this.state.clippedVideos}\n                        isStepAnimatedSelected={this.state.isStepAnimatedSelected}/>\n                </Box>\n\n                {this.state.isClippingVideo && <LoadingOverlay /> }\n            </EditorWrapper>\n        );\n    }\n}\n", "import React, {ReactElement} from \"react\";\nimport {\n    getCurrentSequenceVideoDuration,\n    setSequenceVideoTimer\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\n\ninterface VideoEditor {\n    videoID: bigint;\n    videoTimer: number;\n    isEditing: boolean;\n    selectedRange: [number, number];\n\n    setVideoID: (videoID: bigint) => void;\n    setVideoTimer: (videoTimer: number) => void;\n    setIsEditing: (isEditing: boolean, callback?: () => void) => void;\n    setSelectedRange: (selectedRange: [number, number]) => void;\n}\n\nexport const VideoEditorContext: React.Context<VideoEditor> = React.createContext<VideoEditor>({\n    videoID: BigInt(0),\n    videoTimer: 0,\n    isEditing: false,\n    selectedRange: [0, 15000],\n\n    setVideoID: (videoID: bigint) => {},\n    setVideoTimer: (videoTimer: number) => {},\n    setIsEditing: (isEditing: boolean, callback?: () => void) => {},\n    setSelectedRange: (selectedRange: [number, number]) => {},\n});\n\nexport class VideoEditorContextProvider extends React.Component {\n    props: { children: ReactElement };\n    state: VideoEditor = {\n        videoID: BigInt(0),\n        videoTimer: 0,\n        isEditing: false,\n        selectedRange: [0, 15000],\n\n        setVideoID: (videoID: bigint) => this.setVideoID(videoID),\n        setVideoTimer: (videoTimer: number) => this.setVideoTimer(videoTimer),\n        setIsEditing: (isEditing: boolean, callback?: () => void) => this.setIsEditing(isEditing, callback),\n        setSelectedRange: (selectedRange: [number, number]) => this.setSelectedRange(selectedRange),\n    }\n\n    public setVideoID(videoID: bigint) {\n        if(videoID !== this.state.videoID)\n            this.setState({\n                videoID,\n                videoTimer: 0,\n                isEditing: false,\n                selectedRange: [0, 15000]\n            });\n    }\n\n    public setVideoTimer(videoTimer: number) {\n        if(videoTimer !== this.state.videoTimer)\n            this.setState({ videoTimer });\n    }\n\n    public setIsEditing(isEditing: boolean, callback?: () => void) {\n        if(isEditing !== this.state.isEditing)\n            this.setState({ isEditing }, callback);\n    }\n\n    public setSelectedRange(range: [number, number]) {\n        // Clamp selected range between 0 and video's duration\n        const duration: number = getCurrentSequenceVideoDuration() * 1000;\n        const selectedRange = [Math.max(0, range[0]), Math.min(duration, range[1])];\n\n        // if we moved only the left side, set timer to left value\n        if (selectedRange[0] !== this.state.selectedRange[0] && selectedRange[1] === this.state.selectedRange[1]) {\n            this.setVideoTimer(selectedRange[0]);\n            setSequenceVideoTimer(selectedRange[0] / 1000);\n        }\n\n        // if we moved only the right side, set timer to right value\n        else if (selectedRange[0] === this.state.selectedRange[0] && selectedRange[1] !== this.state.selectedRange[1]) {\n            this.setVideoTimer(selectedRange[1]);\n            setSequenceVideoTimer(selectedRange[1] / 1000);\n        }\n\n        if(selectedRange !== this.state.selectedRange)\n            this.setState({ selectedRange });\n    }\n\n    render() {\n        return (\n            <VideoEditorContext.Provider value={this.state}>\n                {this.props.children}\n            </VideoEditorContext.Provider>\n        );\n    }\n}\n", "// TODO @ebalthazard: change the file name for \"Sequence.ts\"\nimport {App} from \"App\";\nimport {allocateBufferStringUTF8, detectLanguageOfCurrentSequence} from \"Engine/utils\";\nimport i18next from \"i18next\";\nimport {Toast} from \"@root/react-components/src/misc/Toast\";\nimport * as React from \"react\";\nimport {Box} from \"@mui/material\";\nimport {MainModule, Language, World, Sequence} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\n\nexport function canCurrentPeerEditSequence(sequenceID: bigint): boolean {\n    return Boolean(App.getInstance().getEngine()?._canCurrentPeerEditSequence(sequenceID));\n}\n\nexport function isCurrentSequenceLoaded(): boolean {\n    return Boolean(App.getInstance().getEngine()._isCurrentSequenceLoaded());\n}\n\nexport function addNewSequence(title: string): bigint{\n    const engine: MainModule = App.getInstance().getEngine();\n    if (!engine)\n        return BigInt(0);\n\n    const newTitle: string = title.trim() === \"\" ? i18next.t(\"Unnamed Sequence\") : title;\n    const newSequenceID: bigint = engine.addNewSequence(newTitle);\n    return BigInt.asUintN(64, newSequenceID);\n}\n\nexport function isCurrentSequenceShowOnlyDynamics(): boolean {\n    return Boolean(App.getInstance().getEngine()._isCurrentSequenceShowOnlyDynamics());\n}\n\nexport function setCurrentSequenceShowOnlyDynamics(showOnlyDynamic: boolean){\n    const toastContent: JSX.Element = (\n        <Box>\n            {i18next.t(showOnlyDynamic ?\n                \"You are now in dynamic mode, only your dynamic content will be visible during the animations\" :\n                \"You quit dynamic mode, all the content will be visible during the animation\"\n            )}\n        </Box>\n    )\n    Toast.showToast(toastContent);\n    return App.getInstance().getEngine()._setCurrentSequenceShowOnlyDynamics(showOnlyDynamic);\n}\n\nexport function saveCurrentSequenceObjectiveGrade(objectiveGrade: number) {\n    App.getInstance().getEngine()._saveCurrentSequenceObjectiveGrade(objectiveGrade);\n}\n\nexport function getCurrentSequenceObjectiveGrade(): number {\n    return App.getInstance().getEngine()._getCurrentSequenceObjectiveGrade();\n}\n\nexport function isCurrentSequenceInEvaluationMode(): boolean {\n    return Boolean(App.getInstance().getEngine()._isCurrentSequenceInEvaluationMode());\n}\n\nexport function saveCurrentSequenceObjectiveVisualizations(objectiveVisualizations: bigint) {\n    App.getInstance().getEngine()._saveCurrentSequenceObjectiveVisualizations(objectiveVisualizations);\n}\n\nexport function getCurrentSequenceObjectiveVisualizations(): bigint {\n    return BigInt.asUintN(64, App.getInstance().getEngine()._getCurrentSequenceObjectiveVisualizations());\n}\n\nexport function getCurrentSequenceNodeVideoID(): bigint {\n    return BigInt.asUintN(64, App.getInstance().getEngine()._getCurrentSequenceNodeVideoID());\n}\n\nexport function setSequenceVideoPath(videoPath: string) {\n    const engine = App.getInstance().getEngine();\n    const videoPathBuffer = allocateBufferStringUTF8(videoPath);\n\n    engine._setSequenceVideoPath(videoPathBuffer);\n    engine._free(videoPathBuffer);\n}\n\nexport function setSequenceVideoPlaying(isPlaying: boolean) {\n    App.getInstance().getEngine()._setSequenceVideoPlaying(isPlaying);\n}\n\nexport function getCurrentSequenceVideoDuration(): number {\n    return App.getInstance().getEngine()._getCurrentSequenceVideoDuration();\n}\n\nexport function setSequenceVideoTimer(newTime: number) {\n    return App.getInstance().getEngine()._setSequenceVideoTimer(newTime);\n}\n\nexport function setSequenceVideoHidden(hidden: boolean) {\n    App.getInstance().getEngine()._setSequenceVideoHidden(hidden);\n}\n\nexport function setSequenceVideoAvatarHidden(hidden: boolean) {\n    App.getInstance().getEngine()._setSequenceVideoAvatarHidden(hidden);\n}\n\nexport function setSequenceVideoHandsHidden(hidden: boolean) {\n    App.getInstance().getEngine()._setSequenceVideoHandsHidden(hidden);\n}\n\nexport function clipSequenceVideo(clipVideoID: bigint, startMs: number, endMs: number) {\n    App.getInstance().getEngine()._clipSequenceVideo(clipVideoID, startMs, endMs);\n}\n\nexport function setSequenceVideoFirstPerson(firstPerson: boolean){\n    App.getInstance().getEngine()?._setSequenceVideoFirstPerson(firstPerson);\n}\n\n/// attempts to get the sequence's language, or detects it if not specified\nexport function findLanguageForCurrentSequence(): Language | undefined {\n    const currentSequenceID: bigint = getCurrentSequenceID();\n    using currentWorld: World | null = App.getInstance().getCurrentWorld();\n    if (!currentWorld || !currentSequenceID)\n        return undefined;\n    using sequence: Sequence | null = currentWorld?.getSequence(currentSequenceID) ?? null;\n    return sequence?.getLanguage() ?? detectLanguageOfCurrentSequence();\n}\n", "import * as React from 'react';\nimport {Box, styled} from \"@mui/material\";\nimport {Loading} from \"@root/react-components/src/logo/Loading\";\n\nconst Overlay = styled(Box)({\n    height: \"100%\",\n    width: \"100%\",\n    position: \"fixed\",\n    top: \"0\",\n    left: \"0\",\n    backgroundColor: \"rgba(20,20,20,.7)\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    zIndex: \"1000\"\n});\n\ninterface LoadingOverlayProps {\n    id?: string;\n}\n\nexport class LoadingOverlay extends React.Component{\n    props: LoadingOverlayProps;\n    render() {\n        return <Overlay id={this.props.id}><Loading /></Overlay>\n    }\n}\n", "import React from \"react\";\nimport {Box, Popover, styled} from \"@mui/material\";\nimport {lighterDark, primary, white, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontMedium, primaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {Plus} from \"@root/react-components/src/icons/Plus\";\nimport {addAsset, updateAssetAlwaysFaceCamera,\n    updateAssetVideoID} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {AssetType} from \"@backend/Types/AssetType\";\nimport {updateAssetTitle} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport i18next from \"i18next\";\nimport {getCurrentStepID, updateStepAnimatedVideoID} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {\n    getVideoFileSize,\n    getVideoTitle,\n    getVideoUrlS3,\n    isVideoMetadataValid\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\n\nexport const ClipWrapper = styled(Box)((props: {enabled: number}) => ({\n    height: \"110px\",\n    width: \"95px\",\n    boxSizing: \"border-box\",\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    padding: \"6px 12px\",\n    marginLeft: \"4px\",\n    borderRadius: \"12px\",\n    \"&:hover\": {\n        backgroundColor: props.enabled ? lighterDark : \"unset\",\n        cursor: props.enabled ? \"pointer\" : \"not-allowed\",\n    },\n    opacity: props.enabled ? \"1\" : \"0.2\"\n}));\n\nexport const ThumbnailWrapper = styled(Box)({\n    width: \"55px\",\n    height: \"55px\",\n    position: \"relative\",\n    font: primaryFontMedium,\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    borderRadius: \"8px\",\n    overflow: \"hidden\"\n});\n\nconst TitleWrapper = styled(Box)((props: { is_disabled: number }) => ({\n    marginTop: \"3px\",\n    font: primaryFontSmall,\n    overflow: \"hidden\",\n    width: \"90px\",\n    height: \"30px\",\n    textAlign: \"center\",\n    opacity: props.is_disabled ? 0.5 : 1,\n}));\n\nconst HoverWrapper = styled(Box)({\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    width: \"100%\",\n    height: \"100%\",\n    opacity: \"0\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    \"&:hover\": { opacity: \"1\" }\n});\n\nconst AddIconWrapper = styled(Box)((props: {enabled: number}) => ({\n    height: \"24px\",\n    width: \"24px\",\n    margin: \"auto\",\n    padding: \"6px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    boxSizing: \"border-box\",\n    borderRadius: \"50%\",\n    opacity: props.enabled ? \"1\" : \"0.8\",\n    backgroundColor: props.enabled ? yellow : lighterDark,\n    cursor: props.enabled ? \"pointer\" : \"not-allowed\",\n    \"& > svg\": {\n        width: \"100%\",\n        height: \"100%\"\n    }\n}));\n\nconst MenuItem = styled(Box)({\n    padding: \"4px 12px\",\n    borderRadius: \"3px\",\n    userSelect: \"none\",\n    textAlign: \"left\",\n    backgroundColor: white,\n    color: primary,\n    font: primaryFontMedium,\n    cursor: \"pointer\",\n    \"&:hover\": {\n        color: white,\n        backgroundColor: primary\n    }\n});\n\ninterface ClippedVideoProps {\n    videoID: bigint;\n    getClipThumbnail: (videoID: bigint) => Promise<string>;\n    isStepAnimatedSelected: boolean;\n}\n\ninterface ClippedVideoState {\n    thumbnail: string;\n    title: string;\n    optionsAnchor: HTMLDivElement | null;\n    isDisabled: boolean;\n}\n\nexport class ClippedVideo extends React.PureComponent {\n    props: ClippedVideoProps;\n    state: ClippedVideoState = { thumbnail: \"\", title: \"\", optionsAnchor: null, isDisabled: false };\n\n    private wrapperRef: React.RefObject<HTMLDivElement> = React.createRef();\n\n    override async componentDidMount(): Promise<void> {\n        await this.updateVideo();\n    }\n\n    override async componentDidUpdate(prevProps: Readonly<ClippedVideoProps>): Promise<void> {\n        if (prevProps.videoID !== this.props.videoID)\n            await this.updateVideo();\n    }\n\n    private async updateVideo() {\n        const thumbnail: string = await this.props.getClipThumbnail(this.props.videoID);\n        if (this.wrapperRef.current && thumbnail !== this.state.thumbnail)\n            this.setState({ thumbnail });\n\n        const isDisabled: boolean = this.isVideoDisabled(this.props.videoID);\n        if (isDisabled !== this.state.isDisabled)\n            this.setState({ isDisabled });\n\n        const title: string = getVideoTitle(this.props.videoID);\n        if (title !== this.state.title)\n            this.setState({ title });\n    }\n\n    private handleAddVideoAsset(videoID: bigint) {\n        if (this.state.isDisabled)\n            return;\n\n        const now: Date = new Date();\n        const options: Intl.DateTimeFormatOptions = { hour: '2-digit', minute: '2-digit', hour12: false };\n\n        const assetID: bigint = addAsset(AssetType.VIDEO, true);\n        updateAssetVideoID(assetID, videoID);\n        updateAssetTitle(assetID, `${now.toLocaleDateString()} ${now.toLocaleTimeString([], options)}`);\n        updateAssetAlwaysFaceCamera(assetID, false);\n        this.setState({ optionsAnchor: null });\n    }\n\n    private handleAddVideoReference(videoID: bigint) {\n        if (this.state.isDisabled)\n            return;\n\n        updateStepAnimatedVideoID(getCurrentStepID(), videoID);\n        this.setState({ optionsAnchor: null });\n    }\n\n    private isVideoDisabled(videoID: bigint): boolean {\n        return isVideoMetadataValid(videoID) && (!getVideoUrlS3(videoID) || !getVideoFileSize(videoID));\n    }\n\n    render() {\n        return (\n            <ClipWrapper ref={this.wrapperRef} enabled={Number(!this.state.isDisabled)}>\n                <ThumbnailWrapper>\n                    <img alt=\"\" src={this.state.thumbnail} style={{width: \"100%\"}} crossOrigin=\"anonymous\"/>\n                    <Tooltip enterDelay={500}\n                             placement=\"top\"\n                             title={this.props.isStepAnimatedSelected ? \"\" : i18next.t(\"Select a Step Animated First\")}\n                    >\n                        <HoverWrapper>\n                            <AddIconWrapper\n                                className=\"clipped-video-add-icon\"\n                                enabled={Number(this.props.isStepAnimatedSelected && !this.state.isDisabled)}\n                                onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n                                    if (this.state.isDisabled)\n                                        return;\n                                    this.setState({optionsAnchor: e.currentTarget});\n                                }}\n                            >\n                                <Plus/>\n                            </AddIconWrapper>\n                            <Popover\n                                open={Boolean(this.state.optionsAnchor)}\n                                onClose={() => this.setState({ optionsAnchor: null })}\n                                anchorEl={this.state.optionsAnchor}\n                                anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\n                            >\n                                <Box sx={{ display: \"flex\", flexDirection: \"column\" }}>\n                                    <MenuItem\n                                        id=\"clipped-video-add-video-reference\"\n                                        onClick={() => this.handleAddVideoReference(this.props.videoID)}>\n                                        {i18next.t(\"Add as reference video\")}\n                                    </MenuItem>\n                                    <MenuItem\n                                        id=\"clipped-video-add-video-asset\"\n                                        onClick={() => this.handleAddVideoAsset(this.props.videoID)}>\n                                        {i18next.t(\"Add as an asset\")}\n                                    </MenuItem>\n                                </Box>\n                            </Popover>\n                        </HoverWrapper>\n                    </Tooltip>\n                </ThumbnailWrapper>\n                <Tooltip title={this.state.title} placement=\"top\" enterDelay={1000}\n                    PopperProps={{ modifiers: [ { name: \"offset\", options: { offset: [0, -75] } } ]}}>\n                    <TitleWrapper is_disabled={Number(this.state.isDisabled)}>\n                        {this.state.title}\n                    </TitleWrapper>\n                </Tooltip>\n            </ClipWrapper>\n        );\n    }\n}\n", "import React from \"react\";\n\nexport const Plus = (props: { fill?: string }) =>\n<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"plus\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n    <path fill={props.fill ?? \"currentColor\"} d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"/>\n</svg>;\n", "\nexport namespace MTConnect {\n\n    /// Representation of an observed DataItem\n    export enum Representation {\n        TEXT = \"Text\",\n        GRAPH = \"Graph\",\n    }\n\n    /// Category of a dataItem\n    export enum Category {\n        UNKNOWN = \"Unknown\",\n        CONDITION = \"Condition\",\n        SAMPLE = \"Sample\",\n        EVENT = \"Event\",\n    }\n\n    export interface DataItem {\n        unit?: string;\n        category: Category;\n    }\n}\n", "import {App} from \"App\";\nimport {AssetType} from \"@backend/Types/AssetType\";\nimport {allocateBufferStringUTF8, decodeBufferInt} from \"Engine/utils\";\nimport {AssetDataImage} from \"Types/Asset\";\nimport {MTConnect} from \"@root/Frontend/Studio/Types/MTConnect\";\nimport {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {MainModule} from \"@backend/public/studio/WebAssembly.mjs\";\n\nfunction getEngine(): MainModule { return App.getInstance().getEngine(); }\n\n/// adds an asset to current step or world\nexport function addAsset(type: AssetType, temporary: boolean): bigint {\n    const engine = getEngine();\n    if (!engine)\n        return BigInt(0);\n\n    const assetID = BigInt.asUintN(64, temporary ? engine._addTemporaryAssetToCurrentStep(type) :\n                                engine.addAssetToWorld(type));\n    if (!assetID) {\n        console.log(\"unable to create asset\");\n        return BigInt(0);\n    }\n    return assetID;\n}\n\n/// set asset image file\nexport function updateAssetImageFile(assetID: bigint, filePath: string): void {\n    getEngine()?.setAssetImageFilePath(assetID, filePath);\n}\n\nexport function updateAssetMTConnectAgentURL(assetID: bigint, agentURL: string) {\n    if (!agentURL)\n        return;\n    // strip last slash if present\n    if(agentURL.endsWith('/'))\n        agentURL.slice(0, -1);\n\n    getEngine()?.updateAssetMTConnectAgentURL(assetID, agentURL);\n}\n\n/// set asset video path\nexport function updateAssetVideoID(assetID: bigint, videoID: bigint) {\n    getEngine()?.setAssetVideoID(assetID, videoID);\n}\n\n/// set asset text/image always face camera flag\nexport function updateAssetAlwaysFaceCamera(assetID: bigint, alwaysFaceCamera: boolean) {\n    getEngine()?.setAssetAlwaysFaceCamera(assetID, alwaysFaceCamera);\n}\n\n/// set asset image/video default Z orientation\nexport function updateAssetDefaultOrientationZ(assetID: bigint, defaultOrientationZ: number) {\n    getEngine()?.setAssetDefaultOrientationZ(assetID, defaultOrientationZ);\n}\n\n/// remove the asset from the current world\nexport function removeAssetFromWorld(assetID: bigint): void {\n    getEngine()?.removeAssetFromWorld(assetID);\n}\n\n/// checks if the current peer can edit a given asset\nexport function canCurrentPeerEditAsset(): boolean {\n    return Boolean(App.getInstance().getEngine()?._canCurrentPeerEditAsset());\n}\n\n/// return the asset image file path\nexport function getAssetImageData(assetID: bigint): AssetDataImage {\n    const engine: MainModule = getEngine();\n    if (!engine)\n        return { title: \"\", imageFilePath: \"\", alwaysFaceCamera: false, defaultOrientationZ: 0 };\n\n    const imageFilePath: string = engine.getAssetImageFilePath(assetID);\n    const alwaysFaceCamera: boolean = engine.isAssetAlwaysFacingCamera(assetID);\n    const title: string = engine.getAssetTitle(assetID);\n    const defaultOrientationZ: number = engine.getAssetDefaultOrientationZ(assetID);\n    return { imageFilePath, title, alwaysFaceCamera, defaultOrientationZ };\n}\n\nexport function getImageResolution(filePath: string): [number, number] {\n    return [getEngine()?.getImageResolutionWidth(filePath) ?? 0,\n            getEngine()?.getImageResolutionHeight(filePath) ?? 0];\n}\n\nexport function getAssetVideoID(assetID: bigint): bigint {\n    const engine: MainModule = getEngine();\n    return engine ? BigInt.asUintN(64, engine.getAssetVideoID(assetID)) : BigInt(0);\n}\n\nexport function getAssetVideoFilePath(assetID: bigint): string {\n    return getEngine()?.getAssetVideoFilePath(assetID) ?? \"\";\n}\n\nexport function isAssetAlwaysFacingCamera(assetID: bigint): boolean {\n    return getEngine()?.isAssetAlwaysFacingCamera(assetID) ?? false;\n}\n\n/// return the dataItem associated with the given assetID and dataItemID\nexport function getMTConnectDataItem(assetID: bigint, dataItemID: string) : MTConnect.DataItem {\n    const engine = App.getInstance().getEngine();\n    if (!engine)\n        return { category: MTConnect.Category.UNKNOWN };\n\n    const dataItem : MTConnect.DataItem = {\n        category: Object.values(MTConnect.Category)[engine.getDataItemCategory(assetID, dataItemID)]\n    };\n\n    if (dataItem.category === MTConnect.Category.SAMPLE)\n        dataItem.unit = engine.getMTConnectDataItemUnit(assetID, dataItemID);\n    return dataItem;\n}\n\n/// return the observed dataItem label associated with the given assetID and dataItemID\nexport function getObservedMTConnectDataItemLabel(assetID: bigint, dataItemID: string) : string {\n    return getEngine()?.getMTConnectDataItemLabel(assetID, dataItemID) ?? \"\";\n}\n\n/// return the observed dataItem representation associated with the given assetID and dataItemID\nexport function getObservedMTConnectDataItemRepresentation(assetID: bigint,\n                                                           dataItemID: string): MTConnect.Representation {\n    const engine: MainModule = App.getInstance().getEngine();\n    if (!engine)\n        return MTConnect.Representation.TEXT;\n\n    const representation: number = engine.getMTConnectDataItemRepresentation(assetID, dataItemID);\n    return Object.values(MTConnect.Representation)[representation];\n}\n\nexport function updateMTConnectDataItemLabel(assetID: bigint, dataItemID: string, label: string) {\n    if(!label)\n        return;\n\n    getEngine()?.updateMTConnectDataItemLabel(assetID, dataItemID, label);\n}\n\nexport function updateMTConnectDataItemRepresentation(\n    assetID: bigint, dataItemID: string, representationIndex: number) {\n    // representation should be passed as enum, but prevents converting by passing the index\n    getEngine()?.updateMTConnectDataItemRepresentation(assetID, dataItemID, representationIndex);\n}\n\n/// gets the assetMTConnect agent URL\nexport function getAssetMTConnectAgentURL(assetID: bigint): string {\n    return getEngine()?.getAssetMTConnectAgentURL(assetID) ?? \"\";\n}\n\n/// get the MTConnect data associated with the given assetID\nexport function getAssetMTConnectAvailableDataItems(assetID: bigint): Set<string> {\n    const engine: MainModule = getEngine();\n    if (!engine)\n        return new Set<string>();\n\n    const availableDataItemIDs: string[] = engine.getAvailableDataItemIDs(assetID);\n    return new Set(availableDataItemIDs);\n}\n\n/// get the MTConnect data associated with the given assetID\nexport function getAssetMTConnectObservedDataItems(assetID: bigint): string[] {\n    const engine: MainModule = getEngine();\n    return engine ? engine.getObservedDataItemIDs(assetID) : [];\n}\n\nexport function addObservedMTConnectDataItem(assetID: bigint, dataItemID: string){\n    getEngine()?.addObservedMTConnectDataItem(assetID, dataItemID);\n}\n\nexport function removeObservedMTConnectDataItem(assetID: bigint, dataItemID: string){\n    getEngine()?.removeObservedMTConnectDataItem(assetID, dataItemID);\n}\n\nexport function getVideoFileDuration(filePath: string): number {\n    const engine = App.getInstance().getEngine();\n    if (!engine)\n        return 0;\n\n    const filePathBuffer = allocateBufferStringUTF8(filePath);\n    const videoDuration = engine._getVideoFileDuration(filePathBuffer);\n    engine._free(filePathBuffer);\n    return videoDuration;\n}\n\nexport function getVideoResolution(filePath: string) : [number, number] {\n    const engine = App.getInstance().getEngine();\n    const ptrSize = engine._malloc(4);\n    const filePathBuffer = allocateBufferStringUTF8(filePath);\n    const ptrBSON = engine._getVideoResolution(filePathBuffer, ptrSize);\n\n    const size: number = decodeBufferInt(ptrSize);\n    const bson = engine.HEAPU8.subarray(ptrBSON, ptrBSON + size);\n    const buffer: Uint8Array = new Uint8Array(bson);\n    const resolution = UtilsBSON.deserializeBSON(Buffer.from(buffer));\n\n    engine._free(ptrSize);\n    engine._free(filePathBuffer);\n    if(size)\n        engine._free(ptrBSON);\n\n    return [Number(resolution.width), Number(resolution.height)];\n}\n\nexport function isVideoPixelFormatSupported(filePath: string): boolean {\n    const engine: MainModule = App.getInstance().getEngine();\n    const filePathBuffer: number = allocateBufferStringUTF8(filePath);\n\n    const isPixelFormatSupported: boolean = Boolean(engine._isVideoPixelFormatSupported(filePathBuffer));\n    engine._free(filePathBuffer);\n\n    return isPixelFormatSupported;\n}\n\nexport function deleteVideo(videoID: bigint) {\n    App.getInstance().getEngine()._deleteVideo(videoID);\n}\n\n///////////////////////////////////////////////////// WORLD ASSETS /////////////////////////////////////////////////////\n\n// gets the document ID associated with the given world asset document\nexport function getWorldAssetDocumentID(worldID: bigint, assetID: bigint): bigint {\n    const engine = App.getInstance().getEngine();\n    return engine ? BigInt.asUintN(64, engine._getWorldAssetDocumentID(worldID, assetID)) : BigInt(0);\n}\n\n// returns the asset type of the given world asset\nexport function getWorldAssetType(worldID: bigint, assetID: bigint): AssetType {\n    return App.getInstance().getEngine()._getWorldAssetType(worldID, assetID);\n}\n\n// gets the video ID associated with the given world asset video\nexport function getWorldAssetVideoID(worldID: bigint, assetID: bigint): bigint {\n    const engine = App.getInstance().getEngine();\n    return engine ? BigInt.asUintN(64, engine._getWorldAssetVideoID(worldID, assetID)) : BigInt(0);\n}\n\n// returns if the asset is for the current world\nexport function isAssetForCurrentWorld(assetID: bigint): boolean {\n    if (!assetID)\n        return false;\n\n    return getEngine()?.isAssetForCurrentWorld(assetID) ?? false;\n}\n\n// checks if the given world asset is loaded\nexport function isWorldAssetLoaded(worldID: bigint, assetID: bigint): boolean {\n    const engine = App.getInstance().getEngine();\n    return engine ? Boolean(engine._isWorldAssetLoaded(worldID, assetID)) : false;\n}\n", "import {App} from \"@root/Frontend/Studio/App\";\nimport {allocateBufferStringUTF8, decodeBufferInt} from \"@root/Frontend/Studio/Engine/utils\";\nimport {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nexport function isVideoMetadataValid(videoID: bigint): boolean {\n    return App.getInstance().getEngine().isVideoMetadataValid(videoID);\n}\n\nexport function queryVideoMetadata(videoID: bigint): void {\n    App.getInstance().getEngine().queryVideoMetadata(videoID);\n}\n\nexport function queryLibraryVideos(videoIDs: bigint[]): void {\n    if (!videoIDs.length)\n        return;\n\n    const engine: MainModule = App.getInstance().getEngine();\n    const buffer: number = engine._malloc(videoIDs.length * 8);\n    const view = new BigUint64Array(engine.HEAPU8.buffer, buffer, videoIDs.length);\n    view.set(videoIDs);\n\n    engine.Cloud.getInstance().queryLibraryVideos({data: buffer, size: view.length});\n    engine._free(buffer);\n}\n\nexport function isVideoLoaded(videoID: bigint): boolean {\n    return App.getInstance().getEngine().isVideoLoaded(videoID);\n}\n\nexport function loadVideo(videoID: bigint): void {\n    App.getInstance().getEngine().loadVideo(videoID);\n}\n\nexport function loadVideoThumbnail(videoID: bigint): void {\n    App.getInstance().getEngine().loadVideoThumbnail(videoID);\n}\n\nexport function isVideoThumbnailLoaded(videoID: bigint): boolean {\n    return App.getInstance().getEngine().isVideoThumbnailLoaded(videoID);\n}\n\nexport function getVideoLocalPath(videoID: bigint): string {\n    if (!videoID)\n        return \"\";\n    return App.getInstance().getEngine().getVideoLocalPath(videoID);\n}\n\nexport function getVideoSubtitlesUrlS3(videoID: bigint): string {\n    return App.getInstance().getEngine().getVideoSubtitlesUrlS3(videoID);\n}\n\nexport function getVideoSubtitlesLocalPath(videoID: bigint): string {\n    return App.getInstance().getEngine().getVideoSubtitlesLocalPath(videoID);\n}\n\nexport function getVideoUrlS3(videoID: bigint): string {\n    return App.getInstance().getEngine().getVideoUrlS3(videoID);\n}\n\nexport function getVideoThumbnailUrlS3(videoID: bigint): string {\n    return App.getInstance().getEngine().getVideoThumbnailUrlS3(videoID);\n}\n\nexport function getVideoThumbnailLocalPath(videoID: bigint): string {\n    return App.getInstance().getEngine().getVideoThumbnailLocalPath(videoID);\n}\n\nexport function getVideoTitle(videoID: bigint): string {\n    return App.getInstance().getEngine().getVideoTitle(videoID);\n}\n\nexport function getVideoFileSize(videoID: bigint): bigint {\n    return App.getInstance().getEngine().getVideoFileSize(videoID);\n}\n\nexport function getVideoDuration(videoID: bigint): bigint {\n    return App.getInstance().getEngine().getVideoDuration(videoID);\n}\n\nexport function getClippedVideoIDs(videoID: bigint): bigint[] {\n    return App.getInstance().getEngine().getClippedVideoIDs(videoID);\n}\n\nexport function getClippedVideoStartMs(parentVideoID: bigint, videoID: bigint): bigint {\n    return App.getInstance().getEngine().getClippedVideoStartMs(parentVideoID, videoID);\n}\n\nexport function updateVideoFilePath(videoID: bigint, filePath: string) {\n    const engine = App.getInstance().getEngine();\n    const filePathBuffer = allocateBufferStringUTF8(filePath);\n    engine._setVideoFilePath(videoID, filePathBuffer);\n    engine._free(filePathBuffer);\n}\n\nexport function updateVideoTitle(videoID: bigint, newTitle: string): void {\n    App.getInstance().getEngine().updateVideoTitle(videoID, newTitle);\n}\n\nexport function getVideoTags(videoID: bigint): string[] {\n    if (!videoID)\n        return [];\n\n    const engine = App.getInstance().getEngine();\n\n    const ptrSize: number = engine._malloc(4);\n    const ptrBSON: number = engine._getVideoTags(videoID, ptrSize);\n    if (ptrBSON === 0) {\n        engine._free(ptrSize);\n        return [];\n    }\n\n    const size: number = decodeBufferInt(ptrSize);\n    const bson = engine.HEAPU8.subarray(ptrBSON, ptrBSON + size);\n    const buffer = new Uint8Array(bson);\n    const bufferDeserialized: { tags: string[] } = UtilsBSON.deserializeBSON(Buffer.from(buffer));\n\n    engine._free(ptrSize);\n    if (size !== 0)\n        engine._free(ptrBSON);\n\n    return bufferDeserialized.tags;\n}\n\nexport function addVideoTag(videoID: bigint, tag: string) {\n    const tagBuffer = allocateBufferStringUTF8(tag.trim());\n    const engine = App.getInstance().getEngine();\n    engine._addVideoTag(videoID, tagBuffer);\n    engine._free(tagBuffer);\n}\n\nexport function removeVideoTag(videoID: bigint, tag: string) {\n    const tagBuffer = allocateBufferStringUTF8(tag.trim());\n    const engine = App.getInstance().getEngine();\n    engine._removeVideoTag(videoID, tagBuffer);\n    engine._free(tagBuffer);\n}\n\nexport function extractAudioFromVideo(videoFilePath: string): string {\n    return App.getInstance().getEngine().extractAudioFromVideo(videoFilePath);\n}\n\n// generate new subtitles if possible\nexport function saveVideoSubtitles(videoID: bigint, subtitlesFilePath: string) {\n    App.getInstance().getEngine().saveVideoSubtitles(videoID, subtitlesFilePath);\n}\n", "import React from 'react';\nexport function CreateWorld(props: {size?:number,  fill?:string}) {\n    return <svg width=\"100%\" height=\"100%\" viewBox={`0 0 24 24`} fill={props.fill} xmlns=\"http://www.w3.org/2000/svg\">\n        <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M11.5 17V7H12.5V17H11.5Z\" fill={props.fill}/>\n        <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M12 23C18.0751 23 23 18.0751 23 12C23 5.92487 18.0751 1 12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23ZM12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\" fill={props.fill} />\n        <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M17 12.5H7V11.5H17V12.5Z\" fill={props.fill}/>\n    </svg>\n}\n\n", "import React from \"react\";\nimport {FixedSizeList} from \"react-window\";\nimport {Box, styled} from \"@mui/material\";\nimport {dark, lighterDark} from \"@root/react-components/src/values/colors/colors\";\nimport {ClippedVideo} from \"@root/Frontend/Studio/Components/Toolbar/VideoEditor/ClippedVideo\";\nimport i18next from \"i18next\";\nimport {getVideoThumbnailUrlS3} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {ObjectTypeS3} from \"@backend/Types/ObjectTypeS3\";\nimport {PLACEHOLDER_IMAGE} from \"@utils/utils\";\n\nconst ListContainer = styled(Box)({\n    flexGrow: \"1\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n});\n\nconst ClipsList = styled(FixedSizeList)({\n    \"&::-webkit-scrollbar\": { height: \"10px\"},\n    \"&::-webkit-scrollbar-thumb\": {\n        backgroundColor: lighterDark,\n        borderRadius: \"6px\",\n        border: `2px solid ${dark}`\n    }\n})\n\ninterface ClippedVideosListProps {\n    clippedVideos: Set<bigint>,\n    isStepAnimatedSelected: boolean\n}\n\ninterface ClippedVideosListState {\n    listWidth: number;\n}\n\nexport class ClippedVideosList extends React.PureComponent {\n    props: ClippedVideosListProps;\n    state: ClippedVideosListState = { listWidth: 0 };\n\n    private listContainerRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    private resizeObserver: ResizeObserver = null;\n    private thumbnailsCache: Map<bigint, string> = new Map();\n\n    componentDidMount() {\n        this.resizeObserver = new ResizeObserver(() => {\n            if(this.listContainerRef.current)\n                this.setState({ listWidth: this.listContainerRef.current.clientWidth });\n        });\n\n        if (this.listContainerRef.current)\n            this.resizeObserver.observe(this.listContainerRef.current);\n    }\n\n    private async getClipThumbnail(videoID: bigint): Promise<string> {\n        if (this.thumbnailsCache.has(videoID))\n            return this.thumbnailsCache.get(videoID) ?? PLACEHOLDER_IMAGE;\n\n        const thumbnailUrlS3: string = getVideoThumbnailUrlS3(videoID);\n\n        if (!thumbnailUrlS3)\n            return PLACEHOLDER_IMAGE;\n\n        const thumbnail = await App.getInstance().dataSourceStorage.getPreSignedUrl(thumbnailUrlS3, ObjectTypeS3.IMAGE);\n        this.thumbnailsCache.set(videoID, thumbnail);\n\n        return thumbnail;\n    }\n\n    render() {\n        return (\n            <ListContainer id=\"clips-list\" ref={this.listContainerRef}>\n                {this.props.clippedVideos.size && this.state.listWidth ?\n                    <ClipsList\n                        itemSize={95}\n                        height={120}\n                        itemCount={this.props.clippedVideos.size}\n                        width={this.state.listWidth}\n                        layout=\"horizontal\"\n                    >\n                        {({index, style}) => (\n                            <Box style={style}\n                                 id={[...this.props.clippedVideos][index].toString()}\n                                 className=\"clipped-video-item\"\n                            >\n                                <ClippedVideo\n                                    videoID={[...this.props.clippedVideos][index]}\n                                    getClipThumbnail={async (videoID: bigint) => await this.getClipThumbnail(videoID)}\n                                    isStepAnimatedSelected={this.props.isStepAnimatedSelected}\n                                />\n                            </Box>\n                        )}\n                    </ClipsList>\n                :\n                    i18next.t(\"No clipped videos, use the + button to create a new clip\")\n                }\n            </ListContainer>\n        );\n    }\n}", "// @flow\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\n\nconst hasNativePerformanceNow =\n  typeof performance === 'object' && typeof performance.now === 'function';\n\nconst now = hasNativePerformanceNow\n  ? () => performance.now()\n  : () => Date.now();\n\nexport type TimeoutID = {|\n  id: AnimationFrameID,\n|};\n\nexport function cancelTimeout(timeoutID: TimeoutID) {\n  cancelAnimationFrame(timeoutID.id);\n}\n\nexport function requestTimeout(callback: Function, delay: number): TimeoutID {\n  const start = now();\n\n  function tick() {\n    if (now() - start >= delay) {\n      callback.call(null);\n    } else {\n      timeoutID.id = requestAnimationFrame(tick);\n    }\n  }\n\n  const timeoutID: TimeoutID = {\n    id: requestAnimationFrame(tick),\n  };\n\n  return timeoutID;\n}\n", "// @flow\n\nlet size: number = -1;\n\n// This utility copied from \"dom-helpers\" package.\nexport function getScrollbarSize(recalculate?: boolean = false): number {\n  if (size === -1 || recalculate) {\n    const div = document.createElement('div');\n    const style = div.style;\n    style.width = '50px';\n    style.height = '50px';\n    style.overflow = 'scroll';\n\n    ((document.body: any): HTMLBodyElement).appendChild(div);\n\n    size = div.offsetWidth - div.clientWidth;\n\n    ((document.body: any): HTMLBodyElement).removeChild(div);\n  }\n\n  return size;\n}\n\nexport type RTLOffsetType =\n  | 'negative'\n  | 'positive-descending'\n  | 'positive-ascending';\n\nlet cachedRTLResult: RTLOffsetType | null = null;\n\n// TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\nexport function getRTLOffsetType(recalculate?: boolean = false): RTLOffsetType {\n  if (cachedRTLResult === null || recalculate) {\n    const outerDiv = document.createElement('div');\n    const outerStyle = outerDiv.style;\n    outerStyle.width = '50px';\n    outerStyle.height = '50px';\n    outerStyle.overflow = 'scroll';\n    outerStyle.direction = 'rtl';\n\n    const innerDiv = document.createElement('div');\n    const innerStyle = innerDiv.style;\n    innerStyle.width = '100px';\n    innerStyle.height = '100px';\n\n    outerDiv.appendChild(innerDiv);\n\n    ((document.body: any): HTMLBodyElement).appendChild(outerDiv);\n\n    if (outerDiv.scrollLeft > 0) {\n      cachedRTLResult = 'positive-descending';\n    } else {\n      outerDiv.scrollLeft = 1;\n      if (outerDiv.scrollLeft === 0) {\n        cachedRTLResult = 'negative';\n      } else {\n        cachedRTLResult = 'positive-ascending';\n      }\n    }\n\n    ((document.body: any): HTMLBodyElement).removeChild(outerDiv);\n\n    return cachedRTLResult;\n  }\n\n  return cachedRTLResult;\n}\n", "// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\ntype Direction = 'ltr' | 'rtl';\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n\ntype RenderComponentProps<T> = {|\n  columnIndex: number,\n  data: T,\n  isScrolling?: boolean,\n  rowIndex: number,\n  style: Object,\n|};\nexport type RenderComponent<T> = React$ComponentType<\n  $Shape<RenderComponentProps<T>>\n>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype OnItemsRenderedCallback = ({\n  overscanColumnStartIndex: number,\n  overscanColumnStopIndex: number,\n  overscanRowStartIndex: number,\n  overscanRowStopIndex: number,\n  visibleColumnStartIndex: number,\n  visibleColumnStopIndex: number,\n  visibleRowStartIndex: number,\n  visibleRowStopIndex: number,\n}) => void;\ntype OnScrollCallback = ({\n  horizontalScrollDirection: ScrollDirection,\n  scrollLeft: number,\n  scrollTop: number,\n  scrollUpdateWasRequested: boolean,\n  verticalScrollDirection: ScrollDirection,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent<HTMLDivElement>;\ntype ItemStyleCache = { [key: string]: Object };\n\ntype OuterProps = {|\n  children: React$Node,\n  className: string | void,\n  onScroll: ScrollEvent => void,\n  style: {\n    [string]: mixed,\n  },\n|};\n\ntype InnerProps = {|\n  children: React$Node,\n  style: {\n    [string]: mixed,\n  },\n|};\n\nexport type Props<T> = {|\n  children: RenderComponent<T>,\n  className?: string,\n  columnCount: number,\n  columnWidth: itemSize,\n  direction: Direction,\n  height: number,\n  initialScrollLeft?: number,\n  initialScrollTop?: number,\n  innerRef?: any,\n  innerElementType?: string | React$AbstractComponent<InnerProps, any>,\n  innerTagName?: string, // deprecated\n  itemData: T,\n  itemKey?: (params: {|\n    columnIndex: number,\n    data: T,\n    rowIndex: number,\n  |}) => any,\n  onItemsRendered?: OnItemsRenderedCallback,\n  onScroll?: OnScrollCallback,\n  outerRef?: any,\n  outerElementType?: string | React$AbstractComponent<OuterProps, any>,\n  outerTagName?: string, // deprecated\n  overscanColumnCount?: number,\n  overscanColumnsCount?: number, // deprecated\n  overscanCount?: number, // deprecated\n  overscanRowCount?: number,\n  overscanRowsCount?: number, // deprecated\n  rowCount: number,\n  rowHeight: itemSize,\n  style?: Object,\n  useIsScrolling: boolean,\n  width: number,\n|};\n\ntype State = {|\n  instance: any,\n  isScrolling: boolean,\n  horizontalScrollDirection: ScrollDirection,\n  scrollLeft: number,\n  scrollTop: number,\n  scrollUpdateWasRequested: boolean,\n  verticalScrollDirection: ScrollDirection,\n|};\n\ntype getItemOffset = (\n  props: Props<any>,\n  index: number,\n  instanceProps: any\n) => number;\ntype getItemSize = (\n  props: Props<any>,\n  index: number,\n  instanceProps: any\n) => number;\ntype getEstimatedTotalSize = (props: Props<any>, instanceProps: any) => number;\ntype GetOffsetForItemAndAlignment = (\n  props: Props<any>,\n  index: number,\n  align: ScrollToAlign,\n  scrollOffset: number,\n  instanceProps: any,\n  scrollbarSize: number\n) => number;\ntype GetStartIndexForOffset = (\n  props: Props<any>,\n  offset: number,\n  instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n  props: Props<any>,\n  startIndex: number,\n  scrollOffset: number,\n  instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props<any>, instance: any) => any;\ntype ValidateProps = (props: Props<any>) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = ({ columnIndex, data, rowIndex }) =>\n  `${rowIndex}:${columnIndex}`;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsOverscanCount = null;\nlet devWarningsOverscanRowsColumnsCount = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n  if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n    devWarningsOverscanCount = new WeakSet();\n    devWarningsOverscanRowsColumnsCount = new WeakSet();\n    devWarningsTagName = new WeakSet();\n  }\n}\n\nexport default function createGridComponent({\n  getColumnOffset,\n  getColumnStartIndexForOffset,\n  getColumnStopIndexForStartIndex,\n  getColumnWidth,\n  getEstimatedTotalHeight,\n  getEstimatedTotalWidth,\n  getOffsetForColumnAndAlignment,\n  getOffsetForRowAndAlignment,\n  getRowHeight,\n  getRowOffset,\n  getRowStartIndexForOffset,\n  getRowStopIndexForStartIndex,\n  initInstanceProps,\n  shouldResetStyleCacheOnItemSizeChange,\n  validateProps,\n}: {|\n  getColumnOffset: getItemOffset,\n  getColumnStartIndexForOffset: GetStartIndexForOffset,\n  getColumnStopIndexForStartIndex: GetStopIndexForStartIndex,\n  getColumnWidth: getItemSize,\n  getEstimatedTotalHeight: getEstimatedTotalSize,\n  getEstimatedTotalWidth: getEstimatedTotalSize,\n  getOffsetForColumnAndAlignment: GetOffsetForItemAndAlignment,\n  getOffsetForRowAndAlignment: GetOffsetForItemAndAlignment,\n  getRowOffset: getItemOffset,\n  getRowHeight: getItemSize,\n  getRowStartIndexForOffset: GetStartIndexForOffset,\n  getRowStopIndexForStartIndex: GetStopIndexForStartIndex,\n  initInstanceProps: InitInstanceProps,\n  shouldResetStyleCacheOnItemSizeChange: boolean,\n  validateProps: ValidateProps,\n|}) {\n  return class Grid<T> extends PureComponent<Props<T>, State> {\n    _instanceProps: any = initInstanceProps(this.props, this);\n    _resetIsScrollingTimeoutId: TimeoutID | null = null;\n    _outerRef: ?HTMLDivElement;\n\n    static defaultProps = {\n      direction: 'ltr',\n      itemData: undefined,\n      useIsScrolling: false,\n    };\n\n    state: State = {\n      instance: this,\n      isScrolling: false,\n      horizontalScrollDirection: 'forward',\n      scrollLeft:\n        typeof this.props.initialScrollLeft === 'number'\n          ? this.props.initialScrollLeft\n          : 0,\n      scrollTop:\n        typeof this.props.initialScrollTop === 'number'\n          ? this.props.initialScrollTop\n          : 0,\n      scrollUpdateWasRequested: false,\n      verticalScrollDirection: 'forward',\n    };\n\n    // Always use explicit constructor for React components.\n    // It produces less code after transpilation. (#26)\n    // eslint-disable-next-line no-useless-constructor\n    constructor(props: Props<T>) {\n      super(props);\n    }\n\n    static getDerivedStateFromProps(\n      nextProps: Props<T>,\n      prevState: State\n    ): $Shape<State> | null {\n      validateSharedProps(nextProps, prevState);\n      validateProps(nextProps);\n      return null;\n    }\n\n    scrollTo({\n      scrollLeft,\n      scrollTop,\n    }: {\n      scrollLeft: number,\n      scrollTop: number,\n    }): void {\n      if (scrollLeft !== undefined) {\n        scrollLeft = Math.max(0, scrollLeft);\n      }\n      if (scrollTop !== undefined) {\n        scrollTop = Math.max(0, scrollTop);\n      }\n\n      this.setState(prevState => {\n        if (scrollLeft === undefined) {\n          scrollLeft = prevState.scrollLeft;\n        }\n        if (scrollTop === undefined) {\n          scrollTop = prevState.scrollTop;\n        }\n\n        if (\n          prevState.scrollLeft === scrollLeft &&\n          prevState.scrollTop === scrollTop\n        ) {\n          return null;\n        }\n\n        return {\n          horizontalScrollDirection:\n            prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          scrollUpdateWasRequested: true,\n          verticalScrollDirection:\n            prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n        };\n      }, this._resetIsScrollingDebounced);\n    }\n\n    scrollToItem({\n      align = 'auto',\n      columnIndex,\n      rowIndex,\n    }: {\n      align: ScrollToAlign,\n      columnIndex?: number,\n      rowIndex?: number,\n    }): void {\n      const { columnCount, height, rowCount, width } = this.props;\n      const { scrollLeft, scrollTop } = this.state;\n      const scrollbarSize = getScrollbarSize();\n\n      if (columnIndex !== undefined) {\n        columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n      }\n      if (rowIndex !== undefined) {\n        rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n      }\n\n      const estimatedTotalHeight = getEstimatedTotalHeight(\n        this.props,\n        this._instanceProps\n      );\n      const estimatedTotalWidth = getEstimatedTotalWidth(\n        this.props,\n        this._instanceProps\n      );\n\n      // The scrollbar size should be considered when scrolling an item into view,\n      // to ensure it's fully visible.\n      // But we only need to account for its size when it's actually visible.\n      const horizontalScrollbarSize =\n        estimatedTotalWidth > width ? scrollbarSize : 0;\n      const verticalScrollbarSize =\n        estimatedTotalHeight > height ? scrollbarSize : 0;\n\n      this.scrollTo({\n        scrollLeft:\n          columnIndex !== undefined\n            ? getOffsetForColumnAndAlignment(\n                this.props,\n                columnIndex,\n                align,\n                scrollLeft,\n                this._instanceProps,\n                verticalScrollbarSize\n              )\n            : scrollLeft,\n        scrollTop:\n          rowIndex !== undefined\n            ? getOffsetForRowAndAlignment(\n                this.props,\n                rowIndex,\n                align,\n                scrollTop,\n                this._instanceProps,\n                horizontalScrollbarSize\n              )\n            : scrollTop,\n      });\n    }\n\n    componentDidMount() {\n      const { initialScrollLeft, initialScrollTop } = this.props;\n\n      if (this._outerRef != null) {\n        const outerRef = ((this._outerRef: any): HTMLElement);\n        if (typeof initialScrollLeft === 'number') {\n          outerRef.scrollLeft = initialScrollLeft;\n        }\n        if (typeof initialScrollTop === 'number') {\n          outerRef.scrollTop = initialScrollTop;\n        }\n      }\n\n      this._callPropsCallbacks();\n    }\n\n    componentDidUpdate() {\n      const { direction } = this.props;\n      const { scrollLeft, scrollTop, scrollUpdateWasRequested } = this.state;\n\n      if (scrollUpdateWasRequested && this._outerRef != null) {\n        // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n        // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n        // So we need to determine which browser behavior we're dealing with, and mimic it.\n        const outerRef = ((this._outerRef: any): HTMLElement);\n        if (direction === 'rtl') {\n          switch (getRTLOffsetType()) {\n            case 'negative':\n              outerRef.scrollLeft = -scrollLeft;\n              break;\n            case 'positive-ascending':\n              outerRef.scrollLeft = scrollLeft;\n              break;\n            default:\n              const { clientWidth, scrollWidth } = outerRef;\n              outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n              break;\n          }\n        } else {\n          outerRef.scrollLeft = Math.max(0, scrollLeft);\n        }\n\n        outerRef.scrollTop = Math.max(0, scrollTop);\n      }\n\n      this._callPropsCallbacks();\n    }\n\n    componentWillUnmount() {\n      if (this._resetIsScrollingTimeoutId !== null) {\n        cancelTimeout(this._resetIsScrollingTimeoutId);\n      }\n    }\n\n    render() {\n      const {\n        children,\n        className,\n        columnCount,\n        direction,\n        height,\n        innerRef,\n        innerElementType,\n        innerTagName,\n        itemData,\n        itemKey = defaultItemKey,\n        outerElementType,\n        outerTagName,\n        rowCount,\n        style,\n        useIsScrolling,\n        width,\n      } = this.props;\n      const { isScrolling } = this.state;\n\n      const [\n        columnStartIndex,\n        columnStopIndex,\n      ] = this._getHorizontalRangeToRender();\n      const [rowStartIndex, rowStopIndex] = this._getVerticalRangeToRender();\n\n      const items = [];\n      if (columnCount > 0 && rowCount) {\n        for (\n          let rowIndex = rowStartIndex;\n          rowIndex <= rowStopIndex;\n          rowIndex++\n        ) {\n          for (\n            let columnIndex = columnStartIndex;\n            columnIndex <= columnStopIndex;\n            columnIndex++\n          ) {\n            items.push(\n              createElement(children, {\n                columnIndex,\n                data: itemData,\n                isScrolling: useIsScrolling ? isScrolling : undefined,\n                key: itemKey({ columnIndex, data: itemData, rowIndex }),\n                rowIndex,\n                style: this._getItemStyle(rowIndex, columnIndex),\n              })\n            );\n          }\n        }\n      }\n\n      // Read this value AFTER items have been created,\n      // So their actual sizes (if variable) are taken into consideration.\n      const estimatedTotalHeight = getEstimatedTotalHeight(\n        this.props,\n        this._instanceProps\n      );\n      const estimatedTotalWidth = getEstimatedTotalWidth(\n        this.props,\n        this._instanceProps\n      );\n\n      return createElement(\n        outerElementType || outerTagName || 'div',\n        {\n          className,\n          onScroll: this._onScroll,\n          ref: this._outerRefSetter,\n          style: {\n            position: 'relative',\n            height,\n            width,\n            overflow: 'auto',\n            WebkitOverflowScrolling: 'touch',\n            willChange: 'transform',\n            direction,\n            ...style,\n          },\n        },\n        createElement(innerElementType || innerTagName || 'div', {\n          children: items,\n          ref: innerRef,\n          style: {\n            height: estimatedTotalHeight,\n            pointerEvents: isScrolling ? 'none' : undefined,\n            width: estimatedTotalWidth,\n          },\n        })\n      );\n    }\n\n    _callOnItemsRendered: (\n      overscanColumnStartIndex: number,\n      overscanColumnStopIndex: number,\n      overscanRowStartIndex: number,\n      overscanRowStopIndex: number,\n      visibleColumnStartIndex: number,\n      visibleColumnStopIndex: number,\n      visibleRowStartIndex: number,\n      visibleRowStopIndex: number\n    ) => void;\n    _callOnItemsRendered = memoizeOne(\n      (\n        overscanColumnStartIndex: number,\n        overscanColumnStopIndex: number,\n        overscanRowStartIndex: number,\n        overscanRowStopIndex: number,\n        visibleColumnStartIndex: number,\n        visibleColumnStopIndex: number,\n        visibleRowStartIndex: number,\n        visibleRowStopIndex: number\n      ) =>\n        ((this.props.onItemsRendered: any): OnItemsRenderedCallback)({\n          overscanColumnStartIndex,\n          overscanColumnStopIndex,\n          overscanRowStartIndex,\n          overscanRowStopIndex,\n          visibleColumnStartIndex,\n          visibleColumnStopIndex,\n          visibleRowStartIndex,\n          visibleRowStopIndex,\n        })\n    );\n\n    _callOnScroll: (\n      scrollLeft: number,\n      scrollTop: number,\n      horizontalScrollDirection: ScrollDirection,\n      verticalScrollDirection: ScrollDirection,\n      scrollUpdateWasRequested: boolean\n    ) => void;\n    _callOnScroll = memoizeOne(\n      (\n        scrollLeft: number,\n        scrollTop: number,\n        horizontalScrollDirection: ScrollDirection,\n        verticalScrollDirection: ScrollDirection,\n        scrollUpdateWasRequested: boolean\n      ) =>\n        ((this.props.onScroll: any): OnScrollCallback)({\n          horizontalScrollDirection,\n          scrollLeft,\n          scrollTop,\n          verticalScrollDirection,\n          scrollUpdateWasRequested,\n        })\n    );\n\n    _callPropsCallbacks() {\n      const { columnCount, onItemsRendered, onScroll, rowCount } = this.props;\n\n      if (typeof onItemsRendered === 'function') {\n        if (columnCount > 0 && rowCount > 0) {\n          const [\n            overscanColumnStartIndex,\n            overscanColumnStopIndex,\n            visibleColumnStartIndex,\n            visibleColumnStopIndex,\n          ] = this._getHorizontalRangeToRender();\n          const [\n            overscanRowStartIndex,\n            overscanRowStopIndex,\n            visibleRowStartIndex,\n            visibleRowStopIndex,\n          ] = this._getVerticalRangeToRender();\n          this._callOnItemsRendered(\n            overscanColumnStartIndex,\n            overscanColumnStopIndex,\n            overscanRowStartIndex,\n            overscanRowStopIndex,\n            visibleColumnStartIndex,\n            visibleColumnStopIndex,\n            visibleRowStartIndex,\n            visibleRowStopIndex\n          );\n        }\n      }\n\n      if (typeof onScroll === 'function') {\n        const {\n          horizontalScrollDirection,\n          scrollLeft,\n          scrollTop,\n          scrollUpdateWasRequested,\n          verticalScrollDirection,\n        } = this.state;\n        this._callOnScroll(\n          scrollLeft,\n          scrollTop,\n          horizontalScrollDirection,\n          verticalScrollDirection,\n          scrollUpdateWasRequested\n        );\n      }\n    }\n\n    // Lazily create and cache item styles while scrolling,\n    // So that pure component sCU will prevent re-renders.\n    // We maintain this cache, and pass a style prop rather than index,\n    // So that List can clear cached styles and force item re-render if necessary.\n    _getItemStyle: (rowIndex: number, columnIndex: number) => Object;\n    _getItemStyle = (rowIndex: number, columnIndex: number): Object => {\n      const { columnWidth, direction, rowHeight } = this.props;\n\n      const itemStyleCache = this._getItemStyleCache(\n        shouldResetStyleCacheOnItemSizeChange && columnWidth,\n        shouldResetStyleCacheOnItemSizeChange && direction,\n        shouldResetStyleCacheOnItemSizeChange && rowHeight\n      );\n\n      const key = `${rowIndex}:${columnIndex}`;\n\n      let style;\n      if (itemStyleCache.hasOwnProperty(key)) {\n        style = itemStyleCache[key];\n      } else {\n        const offset = getColumnOffset(\n          this.props,\n          columnIndex,\n          this._instanceProps\n        );\n        const isRtl = direction === 'rtl';\n        itemStyleCache[key] = style = {\n          position: 'absolute',\n          left: isRtl ? undefined : offset,\n          right: isRtl ? offset : undefined,\n          top: getRowOffset(this.props, rowIndex, this._instanceProps),\n          height: getRowHeight(this.props, rowIndex, this._instanceProps),\n          width: getColumnWidth(this.props, columnIndex, this._instanceProps),\n        };\n      }\n\n      return style;\n    };\n\n    _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n    _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n    _getHorizontalRangeToRender(): [number, number, number, number] {\n      const {\n        columnCount,\n        overscanColumnCount,\n        overscanColumnsCount,\n        overscanCount,\n        rowCount,\n      } = this.props;\n      const { horizontalScrollDirection, isScrolling, scrollLeft } = this.state;\n\n      const overscanCountResolved: number =\n        overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n      if (columnCount === 0 || rowCount === 0) {\n        return [0, 0, 0, 0];\n      }\n\n      const startIndex = getColumnStartIndexForOffset(\n        this.props,\n        scrollLeft,\n        this._instanceProps\n      );\n      const stopIndex = getColumnStopIndexForStartIndex(\n        this.props,\n        startIndex,\n        scrollLeft,\n        this._instanceProps\n      );\n\n      // Overscan by one item in each direction so that tab/focus works.\n      // If there isn't at least one extra item, tab loops back around.\n      const overscanBackward =\n        !isScrolling || horizontalScrollDirection === 'backward'\n          ? Math.max(1, overscanCountResolved)\n          : 1;\n      const overscanForward =\n        !isScrolling || horizontalScrollDirection === 'forward'\n          ? Math.max(1, overscanCountResolved)\n          : 1;\n\n      return [\n        Math.max(0, startIndex - overscanBackward),\n        Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)),\n        startIndex,\n        stopIndex,\n      ];\n    }\n\n    _getVerticalRangeToRender(): [number, number, number, number] {\n      const {\n        columnCount,\n        overscanCount,\n        overscanRowCount,\n        overscanRowsCount,\n        rowCount,\n      } = this.props;\n      const { isScrolling, verticalScrollDirection, scrollTop } = this.state;\n\n      const overscanCountResolved: number =\n        overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n      if (columnCount === 0 || rowCount === 0) {\n        return [0, 0, 0, 0];\n      }\n\n      const startIndex = getRowStartIndexForOffset(\n        this.props,\n        scrollTop,\n        this._instanceProps\n      );\n      const stopIndex = getRowStopIndexForStartIndex(\n        this.props,\n        startIndex,\n        scrollTop,\n        this._instanceProps\n      );\n\n      // Overscan by one item in each direction so that tab/focus works.\n      // If there isn't at least one extra item, tab loops back around.\n      const overscanBackward =\n        !isScrolling || verticalScrollDirection === 'backward'\n          ? Math.max(1, overscanCountResolved)\n          : 1;\n      const overscanForward =\n        !isScrolling || verticalScrollDirection === 'forward'\n          ? Math.max(1, overscanCountResolved)\n          : 1;\n\n      return [\n        Math.max(0, startIndex - overscanBackward),\n        Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)),\n        startIndex,\n        stopIndex,\n      ];\n    }\n\n    _onScroll = (event: ScrollEvent): void => {\n      const {\n        clientHeight,\n        clientWidth,\n        scrollLeft,\n        scrollTop,\n        scrollHeight,\n        scrollWidth,\n      } = event.currentTarget;\n      this.setState(prevState => {\n        if (\n          prevState.scrollLeft === scrollLeft &&\n          prevState.scrollTop === scrollTop\n        ) {\n          // Scroll position may have been updated by cDM/cDU,\n          // In which case we don't need to trigger another render,\n          // And we don't want to update state.isScrolling.\n          return null;\n        }\n\n        const { direction } = this.props;\n\n        // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n        // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n        // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n        // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n        let calculatedScrollLeft = scrollLeft;\n        if (direction === 'rtl') {\n          switch (getRTLOffsetType()) {\n            case 'negative':\n              calculatedScrollLeft = -scrollLeft;\n              break;\n            case 'positive-descending':\n              calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n              break;\n          }\n        }\n\n        // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n        calculatedScrollLeft = Math.max(\n          0,\n          Math.min(calculatedScrollLeft, scrollWidth - clientWidth)\n        );\n        const calculatedScrollTop = Math.max(\n          0,\n          Math.min(scrollTop, scrollHeight - clientHeight)\n        );\n\n        return {\n          isScrolling: true,\n          horizontalScrollDirection:\n            prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n          scrollLeft: calculatedScrollLeft,\n          scrollTop: calculatedScrollTop,\n          verticalScrollDirection:\n            prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n          scrollUpdateWasRequested: false,\n        };\n      }, this._resetIsScrollingDebounced);\n    };\n\n    _outerRefSetter = (ref: any): void => {\n      const { outerRef } = this.props;\n\n      this._outerRef = ((ref: any): HTMLDivElement);\n\n      if (typeof outerRef === 'function') {\n        outerRef(ref);\n      } else if (\n        outerRef != null &&\n        typeof outerRef === 'object' &&\n        outerRef.hasOwnProperty('current')\n      ) {\n        outerRef.current = ref;\n      }\n    };\n\n    _resetIsScrollingDebounced = () => {\n      if (this._resetIsScrollingTimeoutId !== null) {\n        cancelTimeout(this._resetIsScrollingTimeoutId);\n      }\n\n      this._resetIsScrollingTimeoutId = requestTimeout(\n        this._resetIsScrolling,\n        IS_SCROLLING_DEBOUNCE_INTERVAL\n      );\n    };\n\n    _resetIsScrolling = () => {\n      this._resetIsScrollingTimeoutId = null;\n\n      this.setState({ isScrolling: false }, () => {\n        // Clear style cache after state update has been committed.\n        // This way we don't break pure sCU for items that don't use isScrolling param.\n        this._getItemStyleCache(-1);\n      });\n    };\n  };\n}\n\nconst validateSharedProps = (\n  {\n    children,\n    direction,\n    height,\n    innerTagName,\n    outerTagName,\n    overscanColumnsCount,\n    overscanCount,\n    overscanRowsCount,\n    width,\n  }: Props<any>,\n  { instance }: State\n): void => {\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof overscanCount === 'number') {\n      if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n        devWarningsOverscanCount.add(instance);\n        console.warn(\n          'The overscanCount prop has been deprecated. ' +\n            'Please use the overscanColumnCount and overscanRowCount props instead.'\n        );\n      }\n    }\n\n    if (\n      typeof overscanColumnsCount === 'number' ||\n      typeof overscanRowsCount === 'number'\n    ) {\n      if (\n        devWarningsOverscanRowsColumnsCount &&\n        !devWarningsOverscanRowsColumnsCount.has(instance)\n      ) {\n        devWarningsOverscanRowsColumnsCount.add(instance);\n        console.warn(\n          'The overscanColumnsCount and overscanRowsCount props have been deprecated. ' +\n            'Please use the overscanColumnCount and overscanRowCount props instead.'\n        );\n      }\n    }\n\n    if (innerTagName != null || outerTagName != null) {\n      if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n        devWarningsTagName.add(instance);\n        console.warn(\n          'The innerTagName and outerTagName props have been deprecated. ' +\n            'Please use the innerElementType and outerElementType props instead.'\n        );\n      }\n    }\n\n    if (children == null) {\n      throw Error(\n        'An invalid \"children\" prop has been specified. ' +\n          'Value should be a React component. ' +\n          `\"${children === null ? 'null' : typeof children}\" was specified.`\n      );\n    }\n\n    switch (direction) {\n      case 'ltr':\n      case 'rtl':\n        // Valid values\n        break;\n      default:\n        throw Error(\n          'An invalid \"direction\" prop has been specified. ' +\n            'Value should be either \"ltr\" or \"rtl\". ' +\n            `\"${direction}\" was specified.`\n        );\n    }\n\n    if (typeof width !== 'number') {\n      throw Error(\n        'An invalid \"width\" prop has been specified. ' +\n          'Grids must specify a number for width. ' +\n          `\"${width === null ? 'null' : typeof width}\" was specified.`\n      );\n    }\n\n    if (typeof height !== 'number') {\n      throw Error(\n        'An invalid \"height\" prop has been specified. ' +\n          'Grids must specify a number for height. ' +\n          `\"${height === null ? 'null' : typeof height}\" was specified.`\n      );\n    }\n  }\n};\n", "// @flow\n\nimport createGridComponent from './createGridComponent';\n\nimport type { Props, ScrollToAlign } from './createGridComponent';\n\nconst DEFAULT_ESTIMATED_ITEM_SIZE = 50;\n\ntype VariableSizeProps = {|\n  estimatedColumnWidth: number,\n  estimatedRowHeight: number,\n  ...Props<any>,\n|};\n\ntype itemSizeGetter = (index: number) => number;\ntype ItemType = 'column' | 'row';\n\ntype ItemMetadata = {|\n  offset: number,\n  size: number,\n|};\ntype ItemMetadataMap = { [index: number]: ItemMetadata };\ntype InstanceProps = {|\n  columnMetadataMap: ItemMetadataMap,\n  estimatedColumnWidth: number,\n  estimatedRowHeight: number,\n  lastMeasuredColumnIndex: number,\n  lastMeasuredRowIndex: number,\n  rowMetadataMap: ItemMetadataMap,\n|};\n\nconst getEstimatedTotalHeight = (\n  { rowCount }: Props<any>,\n  { rowMetadataMap, estimatedRowHeight, lastMeasuredRowIndex }: InstanceProps\n) => {\n  let totalSizeOfMeasuredRows = 0;\n\n  // Edge case check for when the number of items decreases while a scroll is in progress.\n  // https://github.com/bvaughn/react-window/pull/138\n  if (lastMeasuredRowIndex >= rowCount) {\n    lastMeasuredRowIndex = rowCount - 1;\n  }\n\n  if (lastMeasuredRowIndex >= 0) {\n    const itemMetadata = rowMetadataMap[lastMeasuredRowIndex];\n    totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n  }\n\n  const numUnmeasuredItems = rowCount - lastMeasuredRowIndex - 1;\n  const totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedRowHeight;\n\n  return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nconst getEstimatedTotalWidth = (\n  { columnCount }: Props<any>,\n  {\n    columnMetadataMap,\n    estimatedColumnWidth,\n    lastMeasuredColumnIndex,\n  }: InstanceProps\n) => {\n  let totalSizeOfMeasuredRows = 0;\n\n  // Edge case check for when the number of items decreases while a scroll is in progress.\n  // https://github.com/bvaughn/react-window/pull/138\n  if (lastMeasuredColumnIndex >= columnCount) {\n    lastMeasuredColumnIndex = columnCount - 1;\n  }\n\n  if (lastMeasuredColumnIndex >= 0) {\n    const itemMetadata = columnMetadataMap[lastMeasuredColumnIndex];\n    totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n  }\n\n  const numUnmeasuredItems = columnCount - lastMeasuredColumnIndex - 1;\n  const totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedColumnWidth;\n\n  return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nconst getItemMetadata = (\n  itemType: ItemType,\n  props: Props<any>,\n  index: number,\n  instanceProps: InstanceProps\n): ItemMetadata => {\n  let itemMetadataMap, itemSize, lastMeasuredIndex;\n  if (itemType === 'column') {\n    itemMetadataMap = instanceProps.columnMetadataMap;\n    itemSize = ((props.columnWidth: any): itemSizeGetter);\n    lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n  } else {\n    itemMetadataMap = instanceProps.rowMetadataMap;\n    itemSize = ((props.rowHeight: any): itemSizeGetter);\n    lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n  }\n\n  if (index > lastMeasuredIndex) {\n    let offset = 0;\n    if (lastMeasuredIndex >= 0) {\n      const itemMetadata = itemMetadataMap[lastMeasuredIndex];\n      offset = itemMetadata.offset + itemMetadata.size;\n    }\n\n    for (let i = lastMeasuredIndex + 1; i <= index; i++) {\n      let size = itemSize(i);\n\n      itemMetadataMap[i] = {\n        offset,\n        size,\n      };\n\n      offset += size;\n    }\n\n    if (itemType === 'column') {\n      instanceProps.lastMeasuredColumnIndex = index;\n    } else {\n      instanceProps.lastMeasuredRowIndex = index;\n    }\n  }\n\n  return itemMetadataMap[index];\n};\n\nconst findNearestItem = (\n  itemType: ItemType,\n  props: Props<any>,\n  instanceProps: InstanceProps,\n  offset: number\n) => {\n  let itemMetadataMap, lastMeasuredIndex;\n  if (itemType === 'column') {\n    itemMetadataMap = instanceProps.columnMetadataMap;\n    lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n  } else {\n    itemMetadataMap = instanceProps.rowMetadataMap;\n    lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n  }\n\n  const lastMeasuredItemOffset =\n    lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n  if (lastMeasuredItemOffset >= offset) {\n    // If we've already measured items within this range just use a binary search as it's faster.\n    return findNearestItemBinarySearch(\n      itemType,\n      props,\n      instanceProps,\n      lastMeasuredIndex,\n      0,\n      offset\n    );\n  } else {\n    // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n    // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n    // The overall complexity for this approach is O(log n).\n    return findNearestItemExponentialSearch(\n      itemType,\n      props,\n      instanceProps,\n      Math.max(0, lastMeasuredIndex),\n      offset\n    );\n  }\n};\n\nconst findNearestItemBinarySearch = (\n  itemType: ItemType,\n  props: Props<any>,\n  instanceProps: InstanceProps,\n  high: number,\n  low: number,\n  offset: number\n): number => {\n  while (low <= high) {\n    const middle = low + Math.floor((high - low) / 2);\n    const currentOffset = getItemMetadata(\n      itemType,\n      props,\n      middle,\n      instanceProps\n    ).offset;\n\n    if (currentOffset === offset) {\n      return middle;\n    } else if (currentOffset < offset) {\n      low = middle + 1;\n    } else if (currentOffset > offset) {\n      high = middle - 1;\n    }\n  }\n\n  if (low > 0) {\n    return low - 1;\n  } else {\n    return 0;\n  }\n};\n\nconst findNearestItemExponentialSearch = (\n  itemType: ItemType,\n  props: Props<any>,\n  instanceProps: InstanceProps,\n  index: number,\n  offset: number\n): number => {\n  const itemCount = itemType === 'column' ? props.columnCount : props.rowCount;\n  let interval = 1;\n\n  while (\n    index < itemCount &&\n    getItemMetadata(itemType, props, index, instanceProps).offset < offset\n  ) {\n    index += interval;\n    interval *= 2;\n  }\n\n  return findNearestItemBinarySearch(\n    itemType,\n    props,\n    instanceProps,\n    Math.min(index, itemCount - 1),\n    Math.floor(index / 2),\n    offset\n  );\n};\n\nconst getOffsetForIndexAndAlignment = (\n  itemType: ItemType,\n  props: Props<any>,\n  index: number,\n  align: ScrollToAlign,\n  scrollOffset: number,\n  instanceProps: InstanceProps,\n  scrollbarSize: number\n): number => {\n  const size = itemType === 'column' ? props.width : props.height;\n  const itemMetadata = getItemMetadata(itemType, props, index, instanceProps);\n\n  // Get estimated total size after ItemMetadata is computed,\n  // To ensure it reflects actual measurements instead of just estimates.\n  const estimatedTotalSize =\n    itemType === 'column'\n      ? getEstimatedTotalWidth(props, instanceProps)\n      : getEstimatedTotalHeight(props, instanceProps);\n\n  const maxOffset = Math.max(\n    0,\n    Math.min(estimatedTotalSize - size, itemMetadata.offset)\n  );\n  const minOffset = Math.max(\n    0,\n    itemMetadata.offset - size + scrollbarSize + itemMetadata.size\n  );\n\n  if (align === 'smart') {\n    if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n      align = 'auto';\n    } else {\n      align = 'center';\n    }\n  }\n\n  switch (align) {\n    case 'start':\n      return maxOffset;\n    case 'end':\n      return minOffset;\n    case 'center':\n      return Math.round(minOffset + (maxOffset - minOffset) / 2);\n    case 'auto':\n    default:\n      if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n        return scrollOffset;\n      } else if (minOffset > maxOffset) {\n        // Because we only take into account the scrollbar size when calculating minOffset\n        // this value can be larger than maxOffset when at the end of the list\n        return minOffset;\n      } else if (scrollOffset < minOffset) {\n        return minOffset;\n      } else {\n        return maxOffset;\n      }\n  }\n};\n\nconst VariableSizeGrid = createGridComponent({\n  getColumnOffset: (\n    props: Props<any>,\n    index: number,\n    instanceProps: InstanceProps\n  ): number => getItemMetadata('column', props, index, instanceProps).offset,\n\n  getColumnStartIndexForOffset: (\n    props: Props<any>,\n    scrollLeft: number,\n    instanceProps: InstanceProps\n  ): number => findNearestItem('column', props, instanceProps, scrollLeft),\n\n  getColumnStopIndexForStartIndex: (\n    props: Props<any>,\n    startIndex: number,\n    scrollLeft: number,\n    instanceProps: InstanceProps\n  ): number => {\n    const { columnCount, width } = props;\n\n    const itemMetadata = getItemMetadata(\n      'column',\n      props,\n      startIndex,\n      instanceProps\n    );\n    const maxOffset = scrollLeft + width;\n\n    let offset = itemMetadata.offset + itemMetadata.size;\n    let stopIndex = startIndex;\n\n    while (stopIndex < columnCount - 1 && offset < maxOffset) {\n      stopIndex++;\n      offset += getItemMetadata('column', props, stopIndex, instanceProps).size;\n    }\n\n    return stopIndex;\n  },\n\n  getColumnWidth: (\n    props: Props<any>,\n    index: number,\n    instanceProps: InstanceProps\n  ): number => instanceProps.columnMetadataMap[index].size,\n\n  getEstimatedTotalHeight,\n  getEstimatedTotalWidth,\n\n  getOffsetForColumnAndAlignment: (\n    props: Props<any>,\n    index: number,\n    align: ScrollToAlign,\n    scrollOffset: number,\n    instanceProps: InstanceProps,\n    scrollbarSize: number\n  ): number =>\n    getOffsetForIndexAndAlignment(\n      'column',\n      props,\n      index,\n      align,\n      scrollOffset,\n      instanceProps,\n      scrollbarSize\n    ),\n\n  getOffsetForRowAndAlignment: (\n    props: Props<any>,\n    index: number,\n    align: ScrollToAlign,\n    scrollOffset: number,\n    instanceProps: InstanceProps,\n    scrollbarSize: number\n  ): number =>\n    getOffsetForIndexAndAlignment(\n      'row',\n      props,\n      index,\n      align,\n      scrollOffset,\n      instanceProps,\n      scrollbarSize\n    ),\n\n  getRowOffset: (\n    props: Props<any>,\n    index: number,\n    instanceProps: InstanceProps\n  ): number => getItemMetadata('row', props, index, instanceProps).offset,\n\n  getRowHeight: (\n    props: Props<any>,\n    index: number,\n    instanceProps: InstanceProps\n  ): number => instanceProps.rowMetadataMap[index].size,\n\n  getRowStartIndexForOffset: (\n    props: Props<any>,\n    scrollTop: number,\n    instanceProps: InstanceProps\n  ): number => findNearestItem('row', props, instanceProps, scrollTop),\n\n  getRowStopIndexForStartIndex: (\n    props: Props<any>,\n    startIndex: number,\n    scrollTop: number,\n    instanceProps: InstanceProps\n  ): number => {\n    const { rowCount, height } = props;\n\n    const itemMetadata = getItemMetadata(\n      'row',\n      props,\n      startIndex,\n      instanceProps\n    );\n    const maxOffset = scrollTop + height;\n\n    let offset = itemMetadata.offset + itemMetadata.size;\n    let stopIndex = startIndex;\n\n    while (stopIndex < rowCount - 1 && offset < maxOffset) {\n      stopIndex++;\n      offset += getItemMetadata('row', props, stopIndex, instanceProps).size;\n    }\n\n    return stopIndex;\n  },\n\n  initInstanceProps(props: Props<any>, instance: any): InstanceProps {\n    const {\n      estimatedColumnWidth,\n      estimatedRowHeight,\n    } = ((props: any): VariableSizeProps);\n\n    const instanceProps = {\n      columnMetadataMap: {},\n      estimatedColumnWidth: estimatedColumnWidth || DEFAULT_ESTIMATED_ITEM_SIZE,\n      estimatedRowHeight: estimatedRowHeight || DEFAULT_ESTIMATED_ITEM_SIZE,\n      lastMeasuredColumnIndex: -1,\n      lastMeasuredRowIndex: -1,\n      rowMetadataMap: {},\n    };\n\n    instance.resetAfterColumnIndex = (\n      columnIndex: number,\n      shouldForceUpdate?: boolean = true\n    ) => {\n      instance.resetAfterIndices({ columnIndex, shouldForceUpdate });\n    };\n\n    instance.resetAfterRowIndex = (\n      rowIndex: number,\n      shouldForceUpdate?: boolean = true\n    ) => {\n      instance.resetAfterIndices({ rowIndex, shouldForceUpdate });\n    };\n\n    instance.resetAfterIndices = ({\n      columnIndex,\n      rowIndex,\n      shouldForceUpdate = true,\n    }: {\n      columnIndex?: number,\n      rowIndex?: number,\n      shouldForceUpdate: boolean,\n    }) => {\n      if (typeof columnIndex === 'number') {\n        instanceProps.lastMeasuredColumnIndex = Math.min(\n          instanceProps.lastMeasuredColumnIndex,\n          columnIndex - 1\n        );\n      }\n      if (typeof rowIndex === 'number') {\n        instanceProps.lastMeasuredRowIndex = Math.min(\n          instanceProps.lastMeasuredRowIndex,\n          rowIndex - 1\n        );\n      }\n\n      // We could potentially optimize further by only evicting styles after this index,\n      // But since styles are only cached while scrolling is in progress-\n      // It seems an unnecessary optimization.\n      // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n      instance._getItemStyleCache(-1);\n\n      if (shouldForceUpdate) {\n        instance.forceUpdate();\n      }\n    };\n\n    return instanceProps;\n  },\n\n  shouldResetStyleCacheOnItemSizeChange: false,\n\n  validateProps: ({ columnWidth, rowHeight }: Props<any>): void => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof columnWidth !== 'function') {\n        throw Error(\n          'An invalid \"columnWidth\" prop has been specified. ' +\n            'Value should be a function. ' +\n            `\"${\n              columnWidth === null ? 'null' : typeof columnWidth\n            }\" was specified.`\n        );\n      } else if (typeof rowHeight !== 'function') {\n        throw Error(\n          'An invalid \"rowHeight\" prop has been specified. ' +\n            'Value should be a function. ' +\n            `\"${rowHeight === null ? 'null' : typeof rowHeight}\" was specified.`\n        );\n      }\n    }\n  },\n});\n\nexport default VariableSizeGrid;\n", "// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n// TODO Deprecate directions \"horizontal\" and \"vertical\"\ntype Direction = 'ltr' | 'rtl' | 'horizontal' | 'vertical';\ntype Layout = 'horizontal' | 'vertical';\n\ntype RenderComponentProps<T> = {|\n  data: T,\n  index: number,\n  isScrolling?: boolean,\n  style: Object,\n|};\ntype RenderComponent<T> = React$ComponentType<$Shape<RenderComponentProps<T>>>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype onItemsRenderedCallback = ({\n  overscanStartIndex: number,\n  overscanStopIndex: number,\n  visibleStartIndex: number,\n  visibleStopIndex: number,\n}) => void;\ntype onScrollCallback = ({\n  scrollDirection: ScrollDirection,\n  scrollOffset: number,\n  scrollUpdateWasRequested: boolean,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent<HTMLDivElement>;\ntype ItemStyleCache = { [index: number]: Object };\n\ntype OuterProps = {|\n  children: React$Node,\n  className: string | void,\n  onScroll: ScrollEvent => void,\n  style: {\n    [string]: mixed,\n  },\n|};\n\ntype InnerProps = {|\n  children: React$Node,\n  style: {\n    [string]: mixed,\n  },\n|};\n\nexport type Props<T> = {|\n  children: RenderComponent<T>,\n  className?: string,\n  direction: Direction,\n  height: number | string,\n  initialScrollOffset?: number,\n  innerRef?: any,\n  innerElementType?: string | React$AbstractComponent<InnerProps, any>,\n  innerTagName?: string, // deprecated\n  itemCount: number,\n  itemData: T,\n  itemKey?: (index: number, data: T) => any,\n  itemSize: itemSize,\n  layout: Layout,\n  onItemsRendered?: onItemsRenderedCallback,\n  onScroll?: onScrollCallback,\n  outerRef?: any,\n  outerElementType?: string | React$AbstractComponent<OuterProps, any>,\n  outerTagName?: string, // deprecated\n  overscanCount: number,\n  style?: Object,\n  useIsScrolling: boolean,\n  width: number | string,\n|};\n\ntype State = {|\n  instance: any,\n  isScrolling: boolean,\n  scrollDirection: ScrollDirection,\n  scrollOffset: number,\n  scrollUpdateWasRequested: boolean,\n|};\n\ntype GetItemOffset = (\n  props: Props<any>,\n  index: number,\n  instanceProps: any\n) => number;\ntype GetItemSize = (\n  props: Props<any>,\n  index: number,\n  instanceProps: any\n) => number;\ntype GetEstimatedTotalSize = (props: Props<any>, instanceProps: any) => number;\ntype GetOffsetForIndexAndAlignment = (\n  props: Props<any>,\n  index: number,\n  align: ScrollToAlign,\n  scrollOffset: number,\n  instanceProps: any\n) => number;\ntype GetStartIndexForOffset = (\n  props: Props<any>,\n  offset: number,\n  instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n  props: Props<any>,\n  startIndex: number,\n  scrollOffset: number,\n  instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props<any>, instance: any) => any;\ntype ValidateProps = (props: Props<any>) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = (index: number, data: any) => index;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsDirection = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n  if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n    devWarningsDirection = new WeakSet();\n    devWarningsTagName = new WeakSet();\n  }\n}\n\nexport default function createListComponent({\n  getItemOffset,\n  getEstimatedTotalSize,\n  getItemSize,\n  getOffsetForIndexAndAlignment,\n  getStartIndexForOffset,\n  getStopIndexForStartIndex,\n  initInstanceProps,\n  shouldResetStyleCacheOnItemSizeChange,\n  validateProps,\n}: {|\n  getItemOffset: GetItemOffset,\n  getEstimatedTotalSize: GetEstimatedTotalSize,\n  getItemSize: GetItemSize,\n  getOffsetForIndexAndAlignment: GetOffsetForIndexAndAlignment,\n  getStartIndexForOffset: GetStartIndexForOffset,\n  getStopIndexForStartIndex: GetStopIndexForStartIndex,\n  initInstanceProps: InitInstanceProps,\n  shouldResetStyleCacheOnItemSizeChange: boolean,\n  validateProps: ValidateProps,\n|}) {\n  return class List<T> extends PureComponent<Props<T>, State> {\n    _instanceProps: any = initInstanceProps(this.props, this);\n    _outerRef: ?HTMLDivElement;\n    _resetIsScrollingTimeoutId: TimeoutID | null = null;\n\n    static defaultProps = {\n      direction: 'ltr',\n      itemData: undefined,\n      layout: 'vertical',\n      overscanCount: 2,\n      useIsScrolling: false,\n    };\n\n    state: State = {\n      instance: this,\n      isScrolling: false,\n      scrollDirection: 'forward',\n      scrollOffset:\n        typeof this.props.initialScrollOffset === 'number'\n          ? this.props.initialScrollOffset\n          : 0,\n      scrollUpdateWasRequested: false,\n    };\n\n    // Always use explicit constructor for React components.\n    // It produces less code after transpilation. (#26)\n    // eslint-disable-next-line no-useless-constructor\n    constructor(props: Props<T>) {\n      super(props);\n    }\n\n    static getDerivedStateFromProps(\n      nextProps: Props<T>,\n      prevState: State\n    ): $Shape<State> | null {\n      validateSharedProps(nextProps, prevState);\n      validateProps(nextProps);\n      return null;\n    }\n\n    scrollTo(scrollOffset: number): void {\n      scrollOffset = Math.max(0, scrollOffset);\n\n      this.setState(prevState => {\n        if (prevState.scrollOffset === scrollOffset) {\n          return null;\n        }\n        return {\n          scrollDirection:\n            prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n          scrollOffset: scrollOffset,\n          scrollUpdateWasRequested: true,\n        };\n      }, this._resetIsScrollingDebounced);\n    }\n\n    scrollToItem(index: number, align: ScrollToAlign = 'auto'): void {\n      const { itemCount, layout } = this.props;\n      const { scrollOffset } = this.state;\n\n      index = Math.max(0, Math.min(index, itemCount - 1));\n\n      // The scrollbar size should be considered when scrolling an item into view, to ensure it's fully visible.\n      // But we only need to account for its size when it's actually visible.\n      // This is an edge case for lists; normally they only scroll in the dominant direction.\n      let scrollbarSize = 0;\n      if (this._outerRef) {\n        const outerRef = ((this._outerRef: any): HTMLElement);\n        if (layout === 'vertical') {\n          scrollbarSize =\n            outerRef.scrollWidth > outerRef.clientWidth\n              ? getScrollbarSize()\n              : 0;\n        } else {\n          scrollbarSize =\n            outerRef.scrollHeight > outerRef.clientHeight\n              ? getScrollbarSize()\n              : 0;\n        }\n      }\n\n      this.scrollTo(\n        getOffsetForIndexAndAlignment(\n          this.props,\n          index,\n          align,\n          scrollOffset,\n          this._instanceProps,\n          scrollbarSize\n        )\n      );\n    }\n\n    componentDidMount() {\n      const { direction, initialScrollOffset, layout } = this.props;\n\n      if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n        const outerRef = ((this._outerRef: any): HTMLElement);\n        // TODO Deprecate direction \"horizontal\"\n        if (direction === 'horizontal' || layout === 'horizontal') {\n          outerRef.scrollLeft = initialScrollOffset;\n        } else {\n          outerRef.scrollTop = initialScrollOffset;\n        }\n      }\n\n      this._callPropsCallbacks();\n    }\n\n    componentDidUpdate() {\n      const { direction, layout } = this.props;\n      const { scrollOffset, scrollUpdateWasRequested } = this.state;\n\n      if (scrollUpdateWasRequested && this._outerRef != null) {\n        const outerRef = ((this._outerRef: any): HTMLElement);\n\n        // TODO Deprecate direction \"horizontal\"\n        if (direction === 'horizontal' || layout === 'horizontal') {\n          if (direction === 'rtl') {\n            // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n            // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n            // So we need to determine which browser behavior we're dealing with, and mimic it.\n            switch (getRTLOffsetType()) {\n              case 'negative':\n                outerRef.scrollLeft = -scrollOffset;\n                break;\n              case 'positive-ascending':\n                outerRef.scrollLeft = scrollOffset;\n                break;\n              default:\n                const { clientWidth, scrollWidth } = outerRef;\n                outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n                break;\n            }\n          } else {\n            outerRef.scrollLeft = scrollOffset;\n          }\n        } else {\n          outerRef.scrollTop = scrollOffset;\n        }\n      }\n\n      this._callPropsCallbacks();\n    }\n\n    componentWillUnmount() {\n      if (this._resetIsScrollingTimeoutId !== null) {\n        cancelTimeout(this._resetIsScrollingTimeoutId);\n      }\n    }\n\n    render() {\n      const {\n        children,\n        className,\n        direction,\n        height,\n        innerRef,\n        innerElementType,\n        innerTagName,\n        itemCount,\n        itemData,\n        itemKey = defaultItemKey,\n        layout,\n        outerElementType,\n        outerTagName,\n        style,\n        useIsScrolling,\n        width,\n      } = this.props;\n      const { isScrolling } = this.state;\n\n      // TODO Deprecate direction \"horizontal\"\n      const isHorizontal =\n        direction === 'horizontal' || layout === 'horizontal';\n\n      const onScroll = isHorizontal\n        ? this._onScrollHorizontal\n        : this._onScrollVertical;\n\n      const [startIndex, stopIndex] = this._getRangeToRender();\n\n      const items = [];\n      if (itemCount > 0) {\n        for (let index = startIndex; index <= stopIndex; index++) {\n          items.push(\n            createElement(children, {\n              data: itemData,\n              key: itemKey(index, itemData),\n              index,\n              isScrolling: useIsScrolling ? isScrolling : undefined,\n              style: this._getItemStyle(index),\n            })\n          );\n        }\n      }\n\n      // Read this value AFTER items have been created,\n      // So their actual sizes (if variable) are taken into consideration.\n      const estimatedTotalSize = getEstimatedTotalSize(\n        this.props,\n        this._instanceProps\n      );\n\n      return createElement(\n        outerElementType || outerTagName || 'div',\n        {\n          className,\n          onScroll,\n          ref: this._outerRefSetter,\n          style: {\n            position: 'relative',\n            height,\n            width,\n            overflow: 'auto',\n            WebkitOverflowScrolling: 'touch',\n            willChange: 'transform',\n            direction,\n            ...style,\n          },\n        },\n        createElement(innerElementType || innerTagName || 'div', {\n          children: items,\n          ref: innerRef,\n          style: {\n            height: isHorizontal ? '100%' : estimatedTotalSize,\n            pointerEvents: isScrolling ? 'none' : undefined,\n            width: isHorizontal ? estimatedTotalSize : '100%',\n          },\n        })\n      );\n    }\n\n    _callOnItemsRendered: (\n      overscanStartIndex: number,\n      overscanStopIndex: number,\n      visibleStartIndex: number,\n      visibleStopIndex: number\n    ) => void;\n    _callOnItemsRendered = memoizeOne(\n      (\n        overscanStartIndex: number,\n        overscanStopIndex: number,\n        visibleStartIndex: number,\n        visibleStopIndex: number\n      ) =>\n        ((this.props.onItemsRendered: any): onItemsRenderedCallback)({\n          overscanStartIndex,\n          overscanStopIndex,\n          visibleStartIndex,\n          visibleStopIndex,\n        })\n    );\n\n    _callOnScroll: (\n      scrollDirection: ScrollDirection,\n      scrollOffset: number,\n      scrollUpdateWasRequested: boolean\n    ) => void;\n    _callOnScroll = memoizeOne(\n      (\n        scrollDirection: ScrollDirection,\n        scrollOffset: number,\n        scrollUpdateWasRequested: boolean\n      ) =>\n        ((this.props.onScroll: any): onScrollCallback)({\n          scrollDirection,\n          scrollOffset,\n          scrollUpdateWasRequested,\n        })\n    );\n\n    _callPropsCallbacks() {\n      if (typeof this.props.onItemsRendered === 'function') {\n        const { itemCount } = this.props;\n        if (itemCount > 0) {\n          const [\n            overscanStartIndex,\n            overscanStopIndex,\n            visibleStartIndex,\n            visibleStopIndex,\n          ] = this._getRangeToRender();\n          this._callOnItemsRendered(\n            overscanStartIndex,\n            overscanStopIndex,\n            visibleStartIndex,\n            visibleStopIndex\n          );\n        }\n      }\n\n      if (typeof this.props.onScroll === 'function') {\n        const {\n          scrollDirection,\n          scrollOffset,\n          scrollUpdateWasRequested,\n        } = this.state;\n        this._callOnScroll(\n          scrollDirection,\n          scrollOffset,\n          scrollUpdateWasRequested\n        );\n      }\n    }\n\n    // Lazily create and cache item styles while scrolling,\n    // So that pure component sCU will prevent re-renders.\n    // We maintain this cache, and pass a style prop rather than index,\n    // So that List can clear cached styles and force item re-render if necessary.\n    _getItemStyle: (index: number) => Object;\n    _getItemStyle = (index: number): Object => {\n      const { direction, itemSize, layout } = this.props;\n\n      const itemStyleCache = this._getItemStyleCache(\n        shouldResetStyleCacheOnItemSizeChange && itemSize,\n        shouldResetStyleCacheOnItemSizeChange && layout,\n        shouldResetStyleCacheOnItemSizeChange && direction\n      );\n\n      let style;\n      if (itemStyleCache.hasOwnProperty(index)) {\n        style = itemStyleCache[index];\n      } else {\n        const offset = getItemOffset(this.props, index, this._instanceProps);\n        const size = getItemSize(this.props, index, this._instanceProps);\n\n        // TODO Deprecate direction \"horizontal\"\n        const isHorizontal =\n          direction === 'horizontal' || layout === 'horizontal';\n\n        const isRtl = direction === 'rtl';\n        const offsetHorizontal = isHorizontal ? offset : 0;\n        itemStyleCache[index] = style = {\n          position: 'absolute',\n          left: isRtl ? undefined : offsetHorizontal,\n          right: isRtl ? offsetHorizontal : undefined,\n          top: !isHorizontal ? offset : 0,\n          height: !isHorizontal ? size : '100%',\n          width: isHorizontal ? size : '100%',\n        };\n      }\n\n      return style;\n    };\n\n    _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n    _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n    _getRangeToRender(): [number, number, number, number] {\n      const { itemCount, overscanCount } = this.props;\n      const { isScrolling, scrollDirection, scrollOffset } = this.state;\n\n      if (itemCount === 0) {\n        return [0, 0, 0, 0];\n      }\n\n      const startIndex = getStartIndexForOffset(\n        this.props,\n        scrollOffset,\n        this._instanceProps\n      );\n      const stopIndex = getStopIndexForStartIndex(\n        this.props,\n        startIndex,\n        scrollOffset,\n        this._instanceProps\n      );\n\n      // Overscan by one item in each direction so that tab/focus works.\n      // If there isn't at least one extra item, tab loops back around.\n      const overscanBackward =\n        !isScrolling || scrollDirection === 'backward'\n          ? Math.max(1, overscanCount)\n          : 1;\n      const overscanForward =\n        !isScrolling || scrollDirection === 'forward'\n          ? Math.max(1, overscanCount)\n          : 1;\n\n      return [\n        Math.max(0, startIndex - overscanBackward),\n        Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)),\n        startIndex,\n        stopIndex,\n      ];\n    }\n\n    _onScrollHorizontal = (event: ScrollEvent): void => {\n      const { clientWidth, scrollLeft, scrollWidth } = event.currentTarget;\n      this.setState(prevState => {\n        if (prevState.scrollOffset === scrollLeft) {\n          // Scroll position may have been updated by cDM/cDU,\n          // In which case we don't need to trigger another render,\n          // And we don't want to update state.isScrolling.\n          return null;\n        }\n\n        const { direction } = this.props;\n\n        let scrollOffset = scrollLeft;\n        if (direction === 'rtl') {\n          // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n          // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n          // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n          // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n          switch (getRTLOffsetType()) {\n            case 'negative':\n              scrollOffset = -scrollLeft;\n              break;\n            case 'positive-descending':\n              scrollOffset = scrollWidth - clientWidth - scrollLeft;\n              break;\n          }\n        }\n\n        // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n        scrollOffset = Math.max(\n          0,\n          Math.min(scrollOffset, scrollWidth - clientWidth)\n        );\n\n        return {\n          isScrolling: true,\n          scrollDirection:\n            prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n          scrollOffset,\n          scrollUpdateWasRequested: false,\n        };\n      }, this._resetIsScrollingDebounced);\n    };\n\n    _onScrollVertical = (event: ScrollEvent): void => {\n      const { clientHeight, scrollHeight, scrollTop } = event.currentTarget;\n      this.setState(prevState => {\n        if (prevState.scrollOffset === scrollTop) {\n          // Scroll position may have been updated by cDM/cDU,\n          // In which case we don't need to trigger another render,\n          // And we don't want to update state.isScrolling.\n          return null;\n        }\n\n        // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n        const scrollOffset = Math.max(\n          0,\n          Math.min(scrollTop, scrollHeight - clientHeight)\n        );\n\n        return {\n          isScrolling: true,\n          scrollDirection:\n            prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n          scrollOffset,\n          scrollUpdateWasRequested: false,\n        };\n      }, this._resetIsScrollingDebounced);\n    };\n\n    _outerRefSetter = (ref: any): void => {\n      const { outerRef } = this.props;\n\n      this._outerRef = ((ref: any): HTMLDivElement);\n\n      if (typeof outerRef === 'function') {\n        outerRef(ref);\n      } else if (\n        outerRef != null &&\n        typeof outerRef === 'object' &&\n        outerRef.hasOwnProperty('current')\n      ) {\n        outerRef.current = ref;\n      }\n    };\n\n    _resetIsScrollingDebounced = () => {\n      if (this._resetIsScrollingTimeoutId !== null) {\n        cancelTimeout(this._resetIsScrollingTimeoutId);\n      }\n\n      this._resetIsScrollingTimeoutId = requestTimeout(\n        this._resetIsScrolling,\n        IS_SCROLLING_DEBOUNCE_INTERVAL\n      );\n    };\n\n    _resetIsScrolling = () => {\n      this._resetIsScrollingTimeoutId = null;\n\n      this.setState({ isScrolling: false }, () => {\n        // Clear style cache after state update has been committed.\n        // This way we don't break pure sCU for items that don't use isScrolling param.\n        this._getItemStyleCache(-1, null);\n      });\n    };\n  };\n}\n\n// NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nconst validateSharedProps = (\n  {\n    children,\n    direction,\n    height,\n    layout,\n    innerTagName,\n    outerTagName,\n    width,\n  }: Props<any>,\n  { instance }: State\n): void => {\n  if (process.env.NODE_ENV !== 'production') {\n    if (innerTagName != null || outerTagName != null) {\n      if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n        devWarningsTagName.add(instance);\n        console.warn(\n          'The innerTagName and outerTagName props have been deprecated. ' +\n            'Please use the innerElementType and outerElementType props instead.'\n        );\n      }\n    }\n\n    // TODO Deprecate direction \"horizontal\"\n    const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n    switch (direction) {\n      case 'horizontal':\n      case 'vertical':\n        if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n          devWarningsDirection.add(instance);\n          console.warn(\n            'The direction prop should be either \"ltr\" (default) or \"rtl\". ' +\n              'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.'\n          );\n        }\n        break;\n      case 'ltr':\n      case 'rtl':\n        // Valid values\n        break;\n      default:\n        throw Error(\n          'An invalid \"direction\" prop has been specified. ' +\n            'Value should be either \"ltr\" or \"rtl\". ' +\n            `\"${direction}\" was specified.`\n        );\n    }\n\n    switch (layout) {\n      case 'horizontal':\n      case 'vertical':\n        // Valid values\n        break;\n      default:\n        throw Error(\n          'An invalid \"layout\" prop has been specified. ' +\n            'Value should be either \"horizontal\" or \"vertical\". ' +\n            `\"${layout}\" was specified.`\n        );\n    }\n\n    if (children == null) {\n      throw Error(\n        'An invalid \"children\" prop has been specified. ' +\n          'Value should be a React component. ' +\n          `\"${children === null ? 'null' : typeof children}\" was specified.`\n      );\n    }\n\n    if (isHorizontal && typeof width !== 'number') {\n      throw Error(\n        'An invalid \"width\" prop has been specified. ' +\n          'Horizontal lists must specify a number for width. ' +\n          `\"${width === null ? 'null' : typeof width}\" was specified.`\n      );\n    } else if (!isHorizontal && typeof height !== 'number') {\n      throw Error(\n        'An invalid \"height\" prop has been specified. ' +\n          'Vertical lists must specify a number for height. ' +\n          `\"${height === null ? 'null' : typeof height}\" was specified.`\n      );\n    }\n  }\n};\n", "// @flow\n\nimport createListComponent from './createListComponent';\n\nimport type { Props, ScrollToAlign } from './createListComponent';\n\nconst DEFAULT_ESTIMATED_ITEM_SIZE = 50;\n\ntype VariableSizeProps = {|\n  estimatedItemSize: number,\n  ...Props<any>,\n|};\n\ntype itemSizeGetter = (index: number) => number;\n\ntype ItemMetadata = {|\n  offset: number,\n  size: number,\n|};\ntype InstanceProps = {|\n  itemMetadataMap: { [index: number]: ItemMetadata },\n  estimatedItemSize: number,\n  lastMeasuredIndex: number,\n|};\n\nconst getItemMetadata = (\n  props: Props<any>,\n  index: number,\n  instanceProps: InstanceProps\n): ItemMetadata => {\n  const { itemSize } = ((props: any): VariableSizeProps);\n  const { itemMetadataMap, lastMeasuredIndex } = instanceProps;\n\n  if (index > lastMeasuredIndex) {\n    let offset = 0;\n    if (lastMeasuredIndex >= 0) {\n      const itemMetadata = itemMetadataMap[lastMeasuredIndex];\n      offset = itemMetadata.offset + itemMetadata.size;\n    }\n\n    for (let i = lastMeasuredIndex + 1; i <= index; i++) {\n      let size = ((itemSize: any): itemSizeGetter)(i);\n\n      itemMetadataMap[i] = {\n        offset,\n        size,\n      };\n\n      offset += size;\n    }\n\n    instanceProps.lastMeasuredIndex = index;\n  }\n\n  return itemMetadataMap[index];\n};\n\nconst findNearestItem = (\n  props: Props<any>,\n  instanceProps: InstanceProps,\n  offset: number\n) => {\n  const { itemMetadataMap, lastMeasuredIndex } = instanceProps;\n\n  const lastMeasuredItemOffset =\n    lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n  if (lastMeasuredItemOffset >= offset) {\n    // If we've already measured items within this range just use a binary search as it's faster.\n    return findNearestItemBinarySearch(\n      props,\n      instanceProps,\n      lastMeasuredIndex,\n      0,\n      offset\n    );\n  } else {\n    // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n    // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n    // The overall complexity for this approach is O(log n).\n    return findNearestItemExponentialSearch(\n      props,\n      instanceProps,\n      Math.max(0, lastMeasuredIndex),\n      offset\n    );\n  }\n};\n\nconst findNearestItemBinarySearch = (\n  props: Props<any>,\n  instanceProps: InstanceProps,\n  high: number,\n  low: number,\n  offset: number\n): number => {\n  while (low <= high) {\n    const middle = low + Math.floor((high - low) / 2);\n    const currentOffset = getItemMetadata(props, middle, instanceProps).offset;\n\n    if (currentOffset === offset) {\n      return middle;\n    } else if (currentOffset < offset) {\n      low = middle + 1;\n    } else if (currentOffset > offset) {\n      high = middle - 1;\n    }\n  }\n\n  if (low > 0) {\n    return low - 1;\n  } else {\n    return 0;\n  }\n};\n\nconst findNearestItemExponentialSearch = (\n  props: Props<any>,\n  instanceProps: InstanceProps,\n  index: number,\n  offset: number\n): number => {\n  const { itemCount } = props;\n  let interval = 1;\n\n  while (\n    index < itemCount &&\n    getItemMetadata(props, index, instanceProps).offset < offset\n  ) {\n    index += interval;\n    interval *= 2;\n  }\n\n  return findNearestItemBinarySearch(\n    props,\n    instanceProps,\n    Math.min(index, itemCount - 1),\n    Math.floor(index / 2),\n    offset\n  );\n};\n\nconst getEstimatedTotalSize = (\n  { itemCount }: Props<any>,\n  { itemMetadataMap, estimatedItemSize, lastMeasuredIndex }: InstanceProps\n) => {\n  let totalSizeOfMeasuredItems = 0;\n\n  // Edge case check for when the number of items decreases while a scroll is in progress.\n  // https://github.com/bvaughn/react-window/pull/138\n  if (lastMeasuredIndex >= itemCount) {\n    lastMeasuredIndex = itemCount - 1;\n  }\n\n  if (lastMeasuredIndex >= 0) {\n    const itemMetadata = itemMetadataMap[lastMeasuredIndex];\n    totalSizeOfMeasuredItems = itemMetadata.offset + itemMetadata.size;\n  }\n\n  const numUnmeasuredItems = itemCount - lastMeasuredIndex - 1;\n  const totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize;\n\n  return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems;\n};\n\nconst VariableSizeList = createListComponent({\n  getItemOffset: (\n    props: Props<any>,\n    index: number,\n    instanceProps: InstanceProps\n  ): number => getItemMetadata(props, index, instanceProps).offset,\n\n  getItemSize: (\n    props: Props<any>,\n    index: number,\n    instanceProps: InstanceProps\n  ): number => instanceProps.itemMetadataMap[index].size,\n\n  getEstimatedTotalSize,\n\n  getOffsetForIndexAndAlignment: (\n    props: Props<any>,\n    index: number,\n    align: ScrollToAlign,\n    scrollOffset: number,\n    instanceProps: InstanceProps,\n    scrollbarSize: number\n  ): number => {\n    const { direction, height, layout, width } = props;\n\n    // TODO Deprecate direction \"horizontal\"\n    const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    const size = (((isHorizontal ? width : height): any): number);\n    const itemMetadata = getItemMetadata(props, index, instanceProps);\n\n    // Get estimated total size after ItemMetadata is computed,\n    // To ensure it reflects actual measurements instead of just estimates.\n    const estimatedTotalSize = getEstimatedTotalSize(props, instanceProps);\n\n    const maxOffset = Math.max(\n      0,\n      Math.min(estimatedTotalSize - size, itemMetadata.offset)\n    );\n    const minOffset = Math.max(\n      0,\n      itemMetadata.offset - size + itemMetadata.size + scrollbarSize\n    );\n\n    if (align === 'smart') {\n      if (\n        scrollOffset >= minOffset - size &&\n        scrollOffset <= maxOffset + size\n      ) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n      case 'end':\n        return minOffset;\n      case 'center':\n        return Math.round(minOffset + (maxOffset - minOffset) / 2);\n      case 'auto':\n      default:\n        if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n          return scrollOffset;\n        } else if (scrollOffset < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n    }\n  },\n\n  getStartIndexForOffset: (\n    props: Props<any>,\n    offset: number,\n    instanceProps: InstanceProps\n  ): number => findNearestItem(props, instanceProps, offset),\n\n  getStopIndexForStartIndex: (\n    props: Props<any>,\n    startIndex: number,\n    scrollOffset: number,\n    instanceProps: InstanceProps\n  ): number => {\n    const { direction, height, itemCount, layout, width } = props;\n\n    // TODO Deprecate direction \"horizontal\"\n    const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    const size = (((isHorizontal ? width : height): any): number);\n    const itemMetadata = getItemMetadata(props, startIndex, instanceProps);\n    const maxOffset = scrollOffset + size;\n\n    let offset = itemMetadata.offset + itemMetadata.size;\n    let stopIndex = startIndex;\n\n    while (stopIndex < itemCount - 1 && offset < maxOffset) {\n      stopIndex++;\n      offset += getItemMetadata(props, stopIndex, instanceProps).size;\n    }\n\n    return stopIndex;\n  },\n\n  initInstanceProps(props: Props<any>, instance: any): InstanceProps {\n    const { estimatedItemSize } = ((props: any): VariableSizeProps);\n\n    const instanceProps = {\n      itemMetadataMap: {},\n      estimatedItemSize: estimatedItemSize || DEFAULT_ESTIMATED_ITEM_SIZE,\n      lastMeasuredIndex: -1,\n    };\n\n    instance.resetAfterIndex = (\n      index: number,\n      shouldForceUpdate?: boolean = true\n    ) => {\n      instanceProps.lastMeasuredIndex = Math.min(\n        instanceProps.lastMeasuredIndex,\n        index - 1\n      );\n\n      // We could potentially optimize further by only evicting styles after this index,\n      // But since styles are only cached while scrolling is in progress-\n      // It seems an unnecessary optimization.\n      // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n      instance._getItemStyleCache(-1);\n\n      if (shouldForceUpdate) {\n        instance.forceUpdate();\n      }\n    };\n\n    return instanceProps;\n  },\n\n  shouldResetStyleCacheOnItemSizeChange: false,\n\n  validateProps: ({ itemSize }: Props<any>): void => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof itemSize !== 'function') {\n        throw Error(\n          'An invalid \"itemSize\" prop has been specified. ' +\n            'Value should be a function. ' +\n            `\"${itemSize === null ? 'null' : typeof itemSize}\" was specified.`\n        );\n      }\n    }\n  },\n});\n\nexport default VariableSizeList;\n", "// @flow\n\nimport createGridComponent from './createGridComponent';\n\nimport type { Props, ScrollToAlign } from './createGridComponent';\n\nconst FixedSizeGrid = createGridComponent({\n  getColumnOffset: ({ columnWidth }: Props<any>, index: number): number =>\n    index * ((columnWidth: any): number),\n\n  getColumnWidth: ({ columnWidth }: Props<any>, index: number): number =>\n    ((columnWidth: any): number),\n\n  getRowOffset: ({ rowHeight }: Props<any>, index: number): number =>\n    index * ((rowHeight: any): number),\n\n  getRowHeight: ({ rowHeight }: Props<any>, index: number): number =>\n    ((rowHeight: any): number),\n\n  getEstimatedTotalHeight: ({ rowCount, rowHeight }: Props<any>) =>\n    ((rowHeight: any): number) * rowCount,\n\n  getEstimatedTotalWidth: ({ columnCount, columnWidth }: Props<any>) =>\n    ((columnWidth: any): number) * columnCount,\n\n  getOffsetForColumnAndAlignment: (\n    { columnCount, columnWidth, width }: Props<any>,\n    columnIndex: number,\n    align: ScrollToAlign,\n    scrollLeft: number,\n    instanceProps: typeof undefined,\n    scrollbarSize: number\n  ): number => {\n    const lastColumnOffset = Math.max(\n      0,\n      columnCount * ((columnWidth: any): number) - width\n    );\n    const maxOffset = Math.min(\n      lastColumnOffset,\n      columnIndex * ((columnWidth: any): number)\n    );\n    const minOffset = Math.max(\n      0,\n      columnIndex * ((columnWidth: any): number) -\n        width +\n        scrollbarSize +\n        ((columnWidth: any): number)\n    );\n\n    if (align === 'smart') {\n      if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n      case 'end':\n        return minOffset;\n      case 'center':\n        // \"Centered\" offset is usually the average of the min and max.\n        // But near the edges of the list, this doesn't hold true.\n        const middleOffset = Math.round(\n          minOffset + (maxOffset - minOffset) / 2\n        );\n        if (middleOffset < Math.ceil(width / 2)) {\n          return 0; // near the beginning\n        } else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {\n          return lastColumnOffset; // near the end\n        } else {\n          return middleOffset;\n        }\n      case 'auto':\n      default:\n        if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {\n          return scrollLeft;\n        } else if (minOffset > maxOffset) {\n          // Because we only take into account the scrollbar size when calculating minOffset\n          // this value can be larger than maxOffset when at the end of the list\n          return minOffset;\n        } else if (scrollLeft < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n    }\n  },\n\n  getOffsetForRowAndAlignment: (\n    { rowHeight, height, rowCount }: Props<any>,\n    rowIndex: number,\n    align: ScrollToAlign,\n    scrollTop: number,\n    instanceProps: typeof undefined,\n    scrollbarSize: number\n  ): number => {\n    const lastRowOffset = Math.max(\n      0,\n      rowCount * ((rowHeight: any): number) - height\n    );\n    const maxOffset = Math.min(\n      lastRowOffset,\n      rowIndex * ((rowHeight: any): number)\n    );\n    const minOffset = Math.max(\n      0,\n      rowIndex * ((rowHeight: any): number) -\n        height +\n        scrollbarSize +\n        ((rowHeight: any): number)\n    );\n\n    if (align === 'smart') {\n      if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n      case 'end':\n        return minOffset;\n      case 'center':\n        // \"Centered\" offset is usually the average of the min and max.\n        // But near the edges of the list, this doesn't hold true.\n        const middleOffset = Math.round(\n          minOffset + (maxOffset - minOffset) / 2\n        );\n        if (middleOffset < Math.ceil(height / 2)) {\n          return 0; // near the beginning\n        } else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {\n          return lastRowOffset; // near the end\n        } else {\n          return middleOffset;\n        }\n      case 'auto':\n      default:\n        if (scrollTop >= minOffset && scrollTop <= maxOffset) {\n          return scrollTop;\n        } else if (minOffset > maxOffset) {\n          // Because we only take into account the scrollbar size when calculating minOffset\n          // this value can be larger than maxOffset when at the end of the list\n          return minOffset;\n        } else if (scrollTop < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n    }\n  },\n\n  getColumnStartIndexForOffset: (\n    { columnWidth, columnCount }: Props<any>,\n    scrollLeft: number\n  ): number =>\n    Math.max(\n      0,\n      Math.min(\n        columnCount - 1,\n        Math.floor(scrollLeft / ((columnWidth: any): number))\n      )\n    ),\n\n  getColumnStopIndexForStartIndex: (\n    { columnWidth, columnCount, width }: Props<any>,\n    startIndex: number,\n    scrollLeft: number\n  ): number => {\n    const left = startIndex * ((columnWidth: any): number);\n    const numVisibleColumns = Math.ceil(\n      (width + scrollLeft - left) / ((columnWidth: any): number)\n    );\n    return Math.max(\n      0,\n      Math.min(\n        columnCount - 1,\n        startIndex + numVisibleColumns - 1 // -1 is because stop index is inclusive\n      )\n    );\n  },\n\n  getRowStartIndexForOffset: (\n    { rowHeight, rowCount }: Props<any>,\n    scrollTop: number\n  ): number =>\n    Math.max(\n      0,\n      Math.min(rowCount - 1, Math.floor(scrollTop / ((rowHeight: any): number)))\n    ),\n\n  getRowStopIndexForStartIndex: (\n    { rowHeight, rowCount, height }: Props<any>,\n    startIndex: number,\n    scrollTop: number\n  ): number => {\n    const top = startIndex * ((rowHeight: any): number);\n    const numVisibleRows = Math.ceil(\n      (height + scrollTop - top) / ((rowHeight: any): number)\n    );\n    return Math.max(\n      0,\n      Math.min(\n        rowCount - 1,\n        startIndex + numVisibleRows - 1 // -1 is because stop index is inclusive\n      )\n    );\n  },\n\n  initInstanceProps(props: Props<any>): any {\n    // Noop\n  },\n\n  shouldResetStyleCacheOnItemSizeChange: true,\n\n  validateProps: ({ columnWidth, rowHeight }: Props<any>): void => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof columnWidth !== 'number') {\n        throw Error(\n          'An invalid \"columnWidth\" prop has been specified. ' +\n            'Value should be a number. ' +\n            `\"${\n              columnWidth === null ? 'null' : typeof columnWidth\n            }\" was specified.`\n        );\n      }\n\n      if (typeof rowHeight !== 'number') {\n        throw Error(\n          'An invalid \"rowHeight\" prop has been specified. ' +\n            'Value should be a number. ' +\n            `\"${rowHeight === null ? 'null' : typeof rowHeight}\" was specified.`\n        );\n      }\n    }\n  },\n});\n\nexport default FixedSizeGrid;\n", "// @flow\n\nimport createListComponent from './createListComponent';\n\nimport type { Props, ScrollToAlign } from './createListComponent';\n\ntype InstanceProps = any;\n\nconst FixedSizeList = createListComponent({\n  getItemOffset: ({ itemSize }: Props<any>, index: number): number =>\n    index * ((itemSize: any): number),\n\n  getItemSize: ({ itemSize }: Props<any>, index: number): number =>\n    ((itemSize: any): number),\n\n  getEstimatedTotalSize: ({ itemCount, itemSize }: Props<any>) =>\n    ((itemSize: any): number) * itemCount,\n\n  getOffsetForIndexAndAlignment: (\n    { direction, height, itemCount, itemSize, layout, width }: Props<any>,\n    index: number,\n    align: ScrollToAlign,\n    scrollOffset: number,\n    instanceProps: InstanceProps,\n    scrollbarSize: number\n  ): number => {\n    // TODO Deprecate direction \"horizontal\"\n    const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    const size = (((isHorizontal ? width : height): any): number);\n    const lastItemOffset = Math.max(\n      0,\n      itemCount * ((itemSize: any): number) - size\n    );\n    const maxOffset = Math.min(\n      lastItemOffset,\n      index * ((itemSize: any): number)\n    );\n    const minOffset = Math.max(\n      0,\n      index * ((itemSize: any): number) -\n        size +\n        ((itemSize: any): number) +\n        scrollbarSize\n    );\n\n    if (align === 'smart') {\n      if (\n        scrollOffset >= minOffset - size &&\n        scrollOffset <= maxOffset + size\n      ) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n      case 'end':\n        return minOffset;\n      case 'center': {\n        // \"Centered\" offset is usually the average of the min and max.\n        // But near the edges of the list, this doesn't hold true.\n        const middleOffset = Math.round(\n          minOffset + (maxOffset - minOffset) / 2\n        );\n        if (middleOffset < Math.ceil(size / 2)) {\n          return 0; // near the beginning\n        } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n          return lastItemOffset; // near the end\n        } else {\n          return middleOffset;\n        }\n      }\n      case 'auto':\n      default:\n        if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n          return scrollOffset;\n        } else if (scrollOffset < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n    }\n  },\n\n  getStartIndexForOffset: (\n    { itemCount, itemSize }: Props<any>,\n    offset: number\n  ): number =>\n    Math.max(\n      0,\n      Math.min(itemCount - 1, Math.floor(offset / ((itemSize: any): number)))\n    ),\n\n  getStopIndexForStartIndex: (\n    { direction, height, itemCount, itemSize, layout, width }: Props<any>,\n    startIndex: number,\n    scrollOffset: number\n  ): number => {\n    // TODO Deprecate direction \"horizontal\"\n    const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    const offset = startIndex * ((itemSize: any): number);\n    const size = (((isHorizontal ? width : height): any): number);\n    const numVisibleItems = Math.ceil(\n      (size + scrollOffset - offset) / ((itemSize: any): number)\n    );\n    return Math.max(\n      0,\n      Math.min(\n        itemCount - 1,\n        startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n      )\n    );\n  },\n\n  initInstanceProps(props: Props<any>): any {\n    // Noop\n  },\n\n  shouldResetStyleCacheOnItemSizeChange: true,\n\n  validateProps: ({ itemSize }: Props<any>): void => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof itemSize !== 'number') {\n        throw Error(\n          'An invalid \"itemSize\" prop has been specified. ' +\n            'Value should be a number. ' +\n            `\"${itemSize === null ? 'null' : typeof itemSize}\" was specified.`\n        );\n      }\n    }\n  },\n});\n\nexport default FixedSizeList;\n", "// @flow\n\n// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nexport default function shallowDiffers(prev: Object, next: Object): boolean {\n  for (let attribute in prev) {\n    if (!(attribute in next)) {\n      return true;\n    }\n  }\n  for (let attribute in next) {\n    if (prev[attribute] !== next[attribute]) {\n      return true;\n    }\n  }\n  return false;\n}\n", "// @flow\n\nimport shallowDiffers from './shallowDiffers';\n\n// Custom comparison function for React.memo().\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-api.html#reactmemo\nexport default function areEqual(\n  prevProps: Object,\n  nextProps: Object\n): boolean {\n  const { style: prevStyle, ...prevRest } = prevProps;\n  const { style: nextStyle, ...nextRest } = nextProps;\n\n  return (\n    !shallowDiffers(prevStyle, nextStyle) && !shallowDiffers(prevRest, nextRest)\n  );\n}\n", "// @flow\n\nimport areEqual from './areEqual';\nimport shallowDiffers from './shallowDiffers';\n\n// Custom shouldComponentUpdate for class components.\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-component.html#shouldcomponentupdate\nexport default function shouldComponentUpdate(\n  nextProps: Object,\n  nextState: Object\n): boolean {\n  return (\n    !areEqual(this.props, nextProps) || shallowDiffers(this.state, nextState)\n  );\n}\n", "import {App} from \"@root/Frontend/Studio/App\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Text} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\n/// Create New Text in the Cloud\nexport function createNewText(ownerID: bigint, ownerType: OwnerType) : Promise<Text | null> {\n    return new Promise<Text|null>((resolve) => {\n        App.getInstance().getEngine().createNewText(ownerID, ownerType, (text: Text | null) => { resolve(text); });\n    });\n}\n\n/// Create New Video in the Cloud\nexport async function createNewVideo(ownerID: bigint, ownerType: OwnerType): Promise<bigint> {\n    return new Promise<bigint>((resolve) => {\n        App.getInstance().getEngine().createNewVideo(ownerID, ownerType, (videoID: bigint) => resolve(videoID));\n    });\n}\n", "import React from \"react\";\nimport {Box, Slider, styled} from \"@mui/material\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {dark, darkenPrimary, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Play} from \"@root/react-components/src/icons/Play\";\nimport {primaryFontLarge, primaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {convertSecondsToTimer, VIDEO_TRANSCRIPTION_DURATION_LIMIT} from \"@utils/utils\";\nimport {Pause} from \"@root/react-components/src/icons/Pause\";\nimport {Volume} from \"@root/react-components/src/icons/Volume\";\nimport {Muted} from \"@root/react-components/src/icons/Muted\";\nimport {VideoEdit} from \"@root/react-components/src/icons/VideoEdit\";\nimport {VideoFeed} from \"@root/Frontend/Studio/Components/Video/VideoFeed\";\nimport {\n    getCurrentSequenceVideoDuration,\n    setSequenceVideoAvatarHidden,\n    setSequenceVideoFirstPerson,\n    setSequenceVideoHandsHidden,\n    setSequenceVideoHidden,\n    setSequenceVideoPath,\n    setSequenceVideoPlaying,\n    setSequenceVideoTimer\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {\n    extractAudioFromVideo,\n    getClippedVideoStartMs,\n    getVideoDuration,\n    getVideoLocalPath,\n    getVideoSubtitlesLocalPath,\n    getVideoThumbnailLocalPath,\n    getVideoUrlS3,\n    isVideoLoaded,\n    isVideoMetadataValid,\n    loadVideo,\n    queryVideoMetadata,\n    saveVideoSubtitles\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {VideoClipper} from \"@root/Frontend/Studio/Components/Video/VideoClipper\";\nimport {ScrubberImagesList} from \"@root/Frontend/Studio/Components/Video/ScrubberImagesList\";\nimport {VideoEditorContext} from \"@root/Frontend/Studio/Contexts/VideoEditorContext\";\nimport {OPEN_PANELS_WIDTH} from \"@root/Frontend/Studio/layouts/LeftPanels\";\nimport {VideoLarge} from \"@root/react-components/src/icons/VideoLarge\";\nimport {VideoSmall} from \"@root/react-components/src/icons/VideoSmall\";\nimport {LAYER, LAYERS_VALUES, LayersDropdown} from \"@root/Frontend/Studio/Components/Video/LayersDropdown\";\nimport {Video} from \"@root/react-components/src/icons/Video\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {canUserEditCurrentWorld, setWorldNodesHidden} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport i18next from \"i18next\";\nimport {VideoSubtitle} from \"@root/react-components/src/misc/VideoSubtitle\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {LoadingOverlay} from \"@root/react-components/src/misc/LoadingOverlay\";\nimport {Toolbar} from \"@root/Frontend/Studio/Components/Toolbar/Toolbar\";\nimport {\n    getCurrentStepID,\n    getStepAnimatedReferenceVideoID,\n    getStepType\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {StepType} from \"@backend/Types/Step\";\n\nconst Wrapper = styled(Box)({\n    display: \"flex\",\n    position: \"absolute\",\n    width: \"100%\",\n    backgroundColor: dark\n});\n\nconst VideoScrubberWrapper = styled(Box) ({\n    position: \"relative\",\n    flexGrow: \"1\",\n});\n\nconst VideoWrapper = styled(Box)((props: {bottom: number}) => ({\n    position: \"absolute\",\n    bottom: props.bottom,\n    right: \"0\",\n    display: \"flex\"\n}));\n\nconst ScrubberWrapper = styled(Box)({\n    position: \"absolute\",\n    width: \"100%\",\n    top: \"0\",\n    transform: \"translateY(calc(-50% + 2px))\",  // 2px = MuiSlider-rail's height (4px) / 2\n    display: \"flex\",\n    alignItems: \"center\",\n    height: \"20px\",\n});\n\nconst ScrubberImagesWrapper = styled(Box)((props: {overflow: string, height: string}) => ({\n    width: \"100%\",\n    height: props.height,\n    position: \"absolute\",\n    display: \"flex\",\n    overflow: props.overflow,\n}));\n\nconst EditorWrapper = styled(Box)({\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    position: \"relative\"\n});\n\nconst ControlsWrapper = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\"\n});\n\nconst Icon = styled(Box)({\n    padding: \"15px\",\n    color: white,\n    width: \"20px\",\n    height: \"20px\",\n    cursor: \"pointer\"\n});\n\nconst VideoActionIconWrapper = styled(Box)((props: {firstperson: number}) => ({\n    position: \"absolute\",\n    padding: \"2px\",\n    boxSizing: \"border-box\",\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: props.firstperson ? \"end\" : \"space-between\",\n    bottom: props.firstperson ? \"0\" : \"unset\"\n}));\n\nconst VideoActionIcon = styled(Box)({\n    color: white,\n    backgroundColor: `${dark}AA`,\n    cursor: \"pointer\",\n    zIndex: \"10\",\n    borderRadius: \"20px\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"32px\",\n    height: \"32px\",\n    transition: \"0.2s\",\n    \"&:hover\": { backgroundColor: dark },\n    \"& svg\": {\n        width: \"20px\",\n        height: \"20px\"\n    },\n});\n\nconst Timer = styled(Box)({\n    color: white,\n    padding: \"0 15px 0 15px\",\n    font: primaryFontLarge,\n    width: \"85px\",\n});\n\nconst Divider = styled(Box)({\n    position: \"absolute\",\n    bottom: \"0\",\n    width: \"100%\",\n    height: \"1px\",\n    background: `-webkit-gradient(radial, 50% 50%, 0, 50% 50%, 750, from(${darkenPrimary}), to(${dark}))`\n});\n\nconst TimeLineWrapper = styled(Box)({\n    height: \"20px\",\n    width: \"100%\",\n    boxSizing: \"border-box\",\n    position: \"relative\",\n    opacity: \"80%\",\n});\n\nconst TimeLine = styled(Box)((props: {left: number}) => ({\n    left: `${props.left}%`,\n    position: \"absolute\",\n    bottom: \"2px\",\n    height: \"13px\",\n    boxSizing: \"border-box\",\n    display: \"flex\",\n    alignItems: \"center\",\n    borderLeft: `1px solid ${white}`,\n    color: white, font: primaryFontSmall,\n    padding: \"4px 0 0 4px\"\n}));\n\nconst EditorScrubber = styled(Slider)((props: {display: string}) => ({\n    position: \"absolute\",\n    bottom: \"0\",\n    margin: \"0 3px 0 1px\",\n    height: `calc(100% + 7px)`,\n    padding: \"0\",\n    zIndex: \"2\",\n\n    \"& .MuiSlider-thumb\": {\n        display: props.display,\n        pointerEvents: \"all\",\n        backgroundColor: white,\n        width: \"18px\",\n        clipPath: \"polygon(0% 0%, 43% 15%, 43% 100%, 57% 100%, 57% 15%, 100% 0%)\",\n        borderRadius: \"0\",\n        transition: 'none',\n        height: \"100%\",\n        boxShadow: \"none\",\n    },\n    \"& .MuiSlider-track\": { display: 'none' },\n    \"& .MuiSlider-rail\": { opacity: \"0\" },\n}));\n\nconst Scrubber = styled(Slider)({\n    \"& .MuiSlider-thumb\": {\n        transition: 'none'\n    },\n    \"& .MuiSlider-track\": {\n        transition: 'none',\n        borderRadius: '0'\n    },\n    \"& .MuiSlider-rail\": {\n        borderRadius: '0'\n    },\n});\n\nconst FakeScrubberTrackRight = styled(Box)({\n    cursor: \"pointer\",\n    backgroundColor: primary,\n    width: \"10px\",\n    opacity: \"0.38\",\n    height: \"4px\",\n});\n\nconst FakeScrubberTrackLeft = styled(Box)({\n    cursor: \"pointer\",\n    backgroundColor: primary,\n    width: \"10px\",\n    height: \"6px\",\n});\n\nconst VideoIconWrapper = styled(Box)((props: {disabled: number}) => ({\n    position: \"absolute\",\n    top: \"-48px\",\n    right: \"0px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    color: white,\n    backgroundColor: dark,\n    borderTopLeftRadius: \"24px\",\n    width: \"48px\",\n    height: \"48px\",\n    transition: \"0.2s\",\n    \"&:hover\": {\n        color: props.disabled ? white : primary,\n        cursor: props.disabled ? \"default\" : \"pointer\"\n    },\n    \"& svg\": { width: \"24px\" }\n}));\n\ninterface VideoScrubberProps {\n    videoID: bigint;\n}\n\ninterface VideoScrubberState {\n    thumbnailPath: string;\n    thumbnailBlobURL: string;\n    duration: number;\n    playing: boolean;\n    muted: boolean;\n    minTime: number;\n    firstPerson: boolean;\n    selectedLayers: LAYER[];\n    videoTranscript: string[] | null;\n    videoPath: string;\n    videoBlobURL: string;\n    subtitlesPath: string;\n    subtitlesBlobURL: string;\n    videoSubtitle: string;\n    isExpanded: boolean;\n}\n\nconst defaultState: VideoScrubberState = {\n    playing: false,\n    muted: true,\n    thumbnailPath: \"\",\n    thumbnailBlobURL: \"\",\n    duration: 0,\n    minTime: 0,\n    firstPerson: false,\n    selectedLayers: [],\n    videoTranscript: null,\n    videoPath: \"\",\n    videoBlobURL: \"\",\n    subtitlesPath: \"\",\n    subtitlesBlobURL: \"\",\n    videoSubtitle: \"\",\n    isExpanded: false\n};\n\nexport class VideoScrubber extends React.Component {\n    static contextType = VideoEditorContext;\n    context: React.ContextType<typeof VideoEditorContext>;\n\n    props: VideoScrubberProps;\n    state: VideoScrubberState = defaultState;\n\n    static readonly TIME_LINE_SPACINGS: number[] = [0, 0.25, 0.5, 0.75, 1];\n    static readonly HEIGHT: number = 70;\n\n    private isPlayingBeforeScrub: boolean | null = null;\n\n    private readonly videoFeedRef: React.RefObject<VideoFeed> = React.createRef<VideoFeed>();\n    private readonly scrubberImagesListRef: React.RefObject<ScrubberImagesList> = React.createRef<ScrubberImagesList>();\n\n    override async componentDidUpdate(prevProps: Readonly<VideoScrubberProps>, prevState: VideoScrubberState) {\n        if (prevProps.videoID !== this.props.videoID)\n            await this.updateSequenceVideo(this.props.videoID);\n\n        if (prevState.playing !== this.state.playing) {\n            if (this.context.videoTimer === this.state.duration && this.state.playing)\n                setSequenceVideoTimer(0);\n            setSequenceVideoPlaying(this.state.playing);\n            return;\n        }\n\n        if (this.state.playing && this.context.videoTimer === this.state.duration)\n            this.setState({ playing: false });\n    }\n\n    public async updateSequenceVideo(videoID: bigint) {\n        if (!videoID || this.isVideoDeleted(videoID)) {\n            this.closeVideo(); // make sure previous video was properly closed\n            return;\n        }\n\n        if (!isVideoMetadataValid(videoID)) {\n            queryVideoMetadata(videoID);\n            return;\n        }\n\n        if (!isVideoLoaded(videoID)) {\n            loadVideo(videoID);\n            return;\n        }\n\n        // update the video thumbnail if the path has changed\n        const thumbnailPath: string = getVideoThumbnailLocalPath(videoID);\n        if (this.state.thumbnailPath !== thumbnailPath) {\n            const thumbnailBlobURL: string = AdapterUtils.createBlobUrlFromFilePath(thumbnailPath);\n            if (this.state.thumbnailBlobURL)\n                URL.revokeObjectURL(this.state.thumbnailBlobURL);\n            this.setState({ thumbnailPath, thumbnailBlobURL });\n        }\n\n        // if we don't have subtitles for this video, generate them\n        let subtitlesPath: string = getVideoSubtitlesLocalPath(videoID);\n        if (!subtitlesPath) {\n            const subtitlesBlob: Blob | null = await this.generateVideoSubtitles(videoID);\n            if (subtitlesBlob) {\n                // convert the subtitles blob to a file to save it\n                const blobType: string = subtitlesBlob.type;\n                const extension: string = blobType.substring(blobType.indexOf(\"/\") + 1);\n                subtitlesPath = await AdapterUtils.saveFileToCore(new File([subtitlesBlob], `${videoID}.${extension}`));\n                saveVideoSubtitles(videoID, subtitlesPath);\n            }\n        }\n\n        // update the subtitles path if the file has changed\n        if (this.state.subtitlesPath !== subtitlesPath) {\n            const subtitlesBlobURL: string = AdapterUtils.createBlobUrlFromFilePath(subtitlesPath);\n            if (this.state.subtitlesBlobURL)\n                URL.revokeObjectURL(this.state.subtitlesBlobURL);\n            this.setState({ subtitlesPath, subtitlesBlobURL });\n        }\n\n        // update the video blob and duration if the video path has changed\n        const videoPath: string = getVideoLocalPath(videoID);\n        if (this.state.videoPath !== videoPath) {\n            setSequenceVideoPath(videoPath);\n            const videoBlobURL: string = AdapterUtils.createBlobUrlFromFilePath(videoPath);\n            if (this.state.videoBlobURL)\n                URL.revokeObjectURL(this.state.videoBlobURL);\n\n            const duration: number = getCurrentSequenceVideoDuration() * 1000;\n            this.setState({ videoPath, videoBlobURL, duration });\n        }\n    }\n\n    private async generateVideoSubtitles(videoID: bigint): Promise<Blob | null> {\n        // if the video duration is greater than 30 minutes, the extracted audio will be too big for transcription\n        if (getVideoDuration(videoID) > VIDEO_TRANSCRIPTION_DURATION_LIMIT)\n            return null;\n\n        const audioFilePath: string = extractAudioFromVideo(getVideoLocalPath(videoID));\n        if (!audioFilePath)\n            return null;\n\n        const audioBlob: Blob = new Blob([AdapterUtils.getCoreFileBinary(audioFilePath, \"\")], {type: \"audio/m4a\"});\n        return await App.getInstance().dataSourceSpeech.transcribeSpeech(audioBlob);\n    }\n\n    private getMaxTime(): number {\n        const maxDisplayedTime: number = 60000 * 2      // 2 minutes\n        return Math.min(maxDisplayedTime, this.state.duration);\n    }\n\n    private handleSliderChange(newTime: number) {\n        if(this.isPlayingBeforeScrub === null)\n            this.isPlayingBeforeScrub = this.state.playing;\n\n        this.setVideoTimer(newTime);\n        this.setState({ playing: false });\n    }\n\n    private handleSliderChangeCommitted() {\n        this.setState({ playing: this.isPlayingBeforeScrub });\n        this.isPlayingBeforeScrub = null;\n    }\n\n    private setVideoTimer(videoTimer: number) {\n        this.context.setVideoTimer(videoTimer);\n        setSequenceVideoTimer(videoTimer / 1000);\n    }\n\n    private isTimerInRange() {\n        return this.context.videoTimer >= this.state.minTime &&\n               this.context.videoTimer <= this.state.minTime + this.getMaxTime();\n    }\n\n    private setFirstPersonView(isFirstPerson: boolean) {\n        this.setState({firstPerson: isFirstPerson}, () => {\n            setSequenceVideoFirstPerson(this.state.firstPerson);\n            if (this.state.isExpanded)\n                this.setLayers(this.state.firstPerson ? [LAYER.SUBTITLES, LAYER.VIDEO] : LAYERS_VALUES);\n        });\n    }\n\n    private setMinTime = (minTime: number, updateSelectedRange: boolean) => {\n        const oldMinTime: number = this.state.minTime;\n        this.setState({ minTime })\n\n        if (updateSelectedRange) {\n            const diff: number = minTime - oldMinTime;\n            this.context.setSelectedRange([this.context.selectedRange[0] + diff, this.context.selectedRange[1] + diff]);\n        }\n    }\n\n    public updateSelectedRange = () => {\n        const stepID: bigint = getCurrentStepID();\n        if (!this.context.isEditing || getStepType(stepID) !== StepType.ANIMATED)\n            return;\n\n        const referenceVideoID: bigint = getStepAnimatedReferenceVideoID(stepID);\n        if (!referenceVideoID)\n            return;\n\n        const startTimestamp: bigint = getClippedVideoStartMs(this.context.videoID, referenceVideoID);\n        const videoLength: bigint = getVideoDuration(referenceVideoID) * BigInt(1000);\n\n        const selectedRange: [number, number] = [ Number(startTimestamp), Number(startTimestamp + videoLength) ];\n        this.context.setSelectedRange(selectedRange);\n        this.scrubberImagesListRef.current?.updateScrollOffset(selectedRange);\n\n        // set the scrubber line to start of selected range\n        this.setVideoTimer(selectedRange[0]);\n    }\n\n    private getSelectedRange = (): [number, number] => this.context.selectedRange;\n\n    private isVideoDeleted(videoID: bigint): boolean {\n        return Boolean(videoID) && isVideoMetadataValid(videoID) && !getVideoUrlS3(videoID);\n    }\n\n    private closeVideo(): void {\n        this.setState({ isExpanded: false });\n        this.setLayers([LAYER.SCAN]);\n        this.setFirstPersonView(false);\n        this.context.setIsEditing(false);\n    }\n\n    private setLayers(layers: LAYER[]) {\n\n        // after state has been assigned, update each layer in the Core!\n        this.setState({ selectedLayers: layers }, () => {\n            LAYERS_VALUES.forEach((layer: LAYER) => {\n                switch(layer) {\n                    case LAYER.HEAD: setSequenceVideoAvatarHidden(!this.state.selectedLayers.includes(layer)); break;\n                    case LAYER.HANDS: setSequenceVideoHandsHidden(!this.state.selectedLayers.includes(layer)); break;\n                    case LAYER.SCAN:\n                        if (App.getInstance().isEditing())\n                            setWorldNodesHidden(!this.state.selectedLayers.includes(layer));\n                        break;\n                    case LAYER.VIDEO:\n                        if (this.state.firstPerson)\n                            setSequenceVideoHidden(!this.state.selectedLayers.includes(layer));\n                        break;\n                    case LAYER.SUBTITLES:\n                    default: break;\n                }\n            });\n        });\n    }\n\n    render() {\n        // if no video, nothing to render!\n        if (!this.context.videoID || !App.getInstance().isEditing())\n            return null;\n\n        // wait for video to load\n        if (!this.state.videoBlobURL && !this.isVideoDeleted(this.context.videoID))\n            return <LoadingOverlay id=\"loading-overlay\" />;\n\n        // if not expanded render simple icon\n        if (!this.state.isExpanded || !this.state.videoBlobURL)\n            return <Tooltip title={this.isVideoDeleted(this.context.videoID) ? i18next.t(\"Video unavailable\") : \"\"}>\n                <VideoIconWrapper\n                    id=\"cci-video-icon\"\n                    disabled={Number(this.isVideoDeleted(this.context.videoID))}\n                    onClick={() => {\n                        this.setLayers(LAYERS_VALUES);\n                        this.setState({isExpanded: true});\n                    }}>\n                    <Video />\n                </VideoIconWrapper>\n            </Tooltip>;\n\n        return (\n            <Wrapper style={{ bottom: `${Toolbar.HEIGHT}px`, height: `${VideoScrubber.HEIGHT}px` }}>\n                <Box style={{width: `${OPEN_PANELS_WIDTH}px`}} />\n                <VideoScrubberWrapper>\n                    {this.state.selectedLayers.includes(LAYER.SUBTITLES) &&\n                        <VideoSubtitle\n                            bottom={VideoScrubber.HEIGHT + 6}\n                            maxHeight={window.innerHeight - (Toolbar.HEIGHT + VideoScrubber.HEIGHT + 90)}\n                            maxWidth={window.innerWidth * 0.5}\n                            subtitle={this.state.videoSubtitle}\n                            transcript={this.state.videoTranscript}\n                        />\n                    }\n                    <VideoWrapper bottom={VideoScrubber.HEIGHT}>\n                        <VideoFeed\n                            ref={this.videoFeedRef}\n                            url={this.state.videoBlobURL}\n                            thumbnail={this.state.thumbnailBlobURL}\n                            subtitlesURL={this.state.subtitlesBlobURL}\n                            playing={this.state.playing}\n                            timer={this.context.videoTimer}\n                            hidden={this.state.firstPerson || !this.state.selectedLayers.includes(LAYER.VIDEO)}\n                            muted={this.state.muted}\n                            onSubtitleChange={(subtitle: string) => this.setState({ videoSubtitle: subtitle })}\n                            setVideoTranscript={(videoTranscript: string[] | null) => this.setState({\n                                videoTranscript\n                            })}\n                        />\n                        {this.state.selectedLayers.includes(LAYER.VIDEO) &&\n                            <VideoActionIconWrapper firstperson={Number(this.state.firstPerson)}>\n                                <VideoActionIcon onClick={() => this.setFirstPersonView(!this.state.firstPerson)}>\n                                    {this.state.firstPerson ? <VideoSmall/> : <VideoLarge/>}\n                                </VideoActionIcon>\n                                <VideoActionIcon\n                                    onClick={() => this.closeVideo()}\n                                    style={{display: this.state.firstPerson ? \"none\" : \"flex\"}}\n                                >\n                                    <Close />\n                                </VideoActionIcon>\n                            </VideoActionIconWrapper>\n                        }\n                    </VideoWrapper>\n\n                    {!this.context.isEditing &&\n                        <ScrubberWrapper>\n                            <FakeScrubberTrackLeft onClick={() => this.setVideoTimer(0)}/>\n                            <Scrubber onChange={(_, newTime: number) => this.handleSliderChange(newTime)}\n                                      onChangeCommitted={() => this.handleSliderChangeCommitted()}\n                                      value={this.context.videoTimer}\n                                      max={this.state.duration}/>\n                            <FakeScrubberTrackRight onClick={() => this.setVideoTimer(this.state.duration)}/>\n                        </ScrubberWrapper>\n                    }\n                    <Box sx={{height: \"100%\", display: \"flex\", justifyContent: \"space-around\"}}>\n                        <ControlsWrapper>\n                            <Icon onClick={() =>\n                                this.setState((prevState: VideoScrubberState) => ({ playing: !prevState.playing}))}>\n                                {this.state.playing ? <Pause /> : <Play />}\n                            </Icon>\n                            <Icon onClick={() =>\n                                this.setState((prevState: VideoScrubberState) => ({ muted: !prevState.muted }))}>\n                                {this.state.muted ? <Muted /> : <Volume />}\n                            </Icon>\n                            <Timer>\n                                {`${convertSecondsToTimer(this.context.videoTimer / 1000)} \n                                / ${convertSecondsToTimer(this.state.duration / 1000)}`}\n                            </Timer>\n                        </ControlsWrapper>\n\n                        <Box sx={{width: \"80%\"}}>\n                            {this.context.isEditing && <EditorWrapper>\n                                <TimeLineWrapper>\n                                    {VideoScrubber.TIME_LINE_SPACINGS.map((percentage: number, index: number) =>\n                                        <TimeLine key={index} left={percentage * 100}>\n                                            {convertSecondsToTimer(\n                                                (this.state.minTime + (this.getMaxTime() * percentage)) / 1000\n                                            )}\n                                        </TimeLine>\n                                    )}\n                                </TimeLineWrapper>\n\n                                <ScrubberImagesWrapper overflow=\"visible\"\n                                                       height={`calc(100% - ${ScrubberImagesList.SCROLL_HEIGHT}px)`}>\n                                    <EditorScrubber\n                                        onChange={(_, newTime: number) => this.handleSliderChange(newTime)}\n                                        onChangeCommitted={() => this.handleSliderChangeCommitted()}\n                                        value={this.context.videoTimer}\n                                        min={this.state.minTime}\n                                        max={this.state.minTime + this.getMaxTime()}\n                                        display={this.isTimerInRange() ? \"block\" : \"none\"}/>\n                                </ScrubberImagesWrapper>\n\n                                <Box sx={{position: \"relative\", flexGrow: \"1\"}}>\n                                    <ScrubberImagesWrapper overflow=\"hidden\" height=\"100%\">\n                                        <ScrubberImagesList\n                                            ref={this.scrubberImagesListRef}\n                                            duration={this.state.duration}\n                                            maxTime={this.getMaxTime()}\n                                            videoUrl={this.state.videoBlobURL}\n                                            setMinTime={this.setMinTime}\n                                            getSelectedRange={this.getSelectedRange}/>\n                                    </ScrubberImagesWrapper>\n                                    <ScrubberImagesWrapper\n                                        overflow=\"hidden\"\n                                        height={`calc(100% - ${ScrubberImagesList.SCROLL_HEIGHT}px)`}>\n                                        <VideoClipper\n                                            minTime={this.state.minTime}\n                                            maxTime={this.getMaxTime()}\n                                            selectedRange={this.context.selectedRange}\n                                        />\n                                    </ScrubberImagesWrapper>\n                                </Box>\n\n                            </EditorWrapper>}\n                        </Box>\n\n                        <ControlsWrapper>\n                            <Icon\n                                id=\"video-edit-icon\"\n                                style={{ color: this.context.isEditing ? primary : white,\n                                         display: canUserEditCurrentWorld() ? \"block\" : \"none\" }}\n                                onClick={() =>\n                                    this.context.setIsEditing(!this.context.isEditing, this.updateSelectedRange)\n                                }>\n                            <VideoEdit />\n                            </Icon>\n                            <Icon>\n                                <LayersDropdown\n                                    setSelectedLayers={(selectedLayers: LAYER[]) => this.setLayers(selectedLayers)}\n                                    selectedLayers={this.state.selectedLayers}\n                                    videoTranscript={this.state.videoTranscript ?? []}\n                                />\n                            </Icon>\n                        </ControlsWrapper>\n                        <Divider />\n                    </Box>\n                </VideoScrubberWrapper>\n            </Wrapper>\n        )\n    }\n}\n", "import React from 'react';\n\nexport const Play = (props: {fill?: string}) => (\n    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"play\"\n         className=\"svg-inline--fa fa-play fa-w-14\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n        <path fill={props.fill ? props.fill : \"currentColor\"}\n              d=\"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\"/>\n    </svg>\n);", "import React from 'react';\n\nexport const Pause = () => (\n    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"pause\"\n         className=\"svg-inline--fa fa-pause fa-w-14\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n         viewBox=\"0 0 448 512\">\n        <path fill=\"currentColor\"\n              d=\"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\" />\n    </svg>\n);", "import React from \"react\";\n\nexport const Volume = () =>\n    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g clipPath=\"url(#clip0_1_188)\">\n            <path d=\"M8.95958 3.33047L5.2525 7.5H1C0.4475 7.5 0 8.00344 0 8.625V15.375C0 15.9961 0.4475 16.5 1 16.5H5.2525L8.95958 20.6695C9.58583 21.3741 10.6667 20.8791 10.6667 19.8741V4.12594C10.6667 3.12 9.585 2.62688 8.95958 3.33047ZM18.6813 0.936097C18.2158 0.592504 17.5904 0.737347 17.285 1.26188C16.9792 1.78547 17.1092 2.48907 17.5746 2.83266C20.3358 4.87125 21.9837 8.29829 21.9837 12.0005C21.9837 15.7027 20.3358 19.1297 17.5746 21.1683C17.1092 21.5114 16.9792 22.2155 17.285 22.7386C17.5783 23.2406 18.1988 23.4211 18.6813 23.0644C22.0113 20.6053 24 16.4686 24 12C24 7.53141 22.0113 3.39516 18.6813 0.936097ZM20 12C20 9.02204 18.6642 6.28407 16.4263 4.67625C15.96 4.34157 15.3417 4.49719 15.0462 5.02594C14.7508 5.55469 14.8888 6.25453 15.355 6.58969C17.0112 7.77985 18 9.80204 18 12C18 14.198 17.0112 16.2202 15.355 17.4103C14.8888 17.745 14.7508 18.4448 15.0462 18.9741C15.3175 19.4597 15.9263 19.6838 16.4263 19.3238C18.6642 17.7159 20 14.9784 20 12ZM14.0929 8.39672C13.6104 8.1 13.0017 8.29547 12.7342 8.83969C12.4679 9.38391 12.6442 10.0678 13.1279 10.3683C13.6658 10.7006 14 11.3264 14 12C14 12.6741 13.6658 13.2994 13.1283 13.6317C12.6446 13.9322 12.4683 14.6161 12.7346 15.1603C13.0025 15.7069 13.6117 15.9009 14.0933 15.6033C15.2696 14.8744 16.0004 13.4939 16.0004 11.9995C16.0004 10.5052 15.2696 9.12516 14.0929 8.39672Z\" fill=\"currentColor\"/>\n        </g>\n        <defs>\n            <clipPath id=\"clip0_1_188\">\n                <rect width=\"24\" height=\"24\" fill=\"currentColor\"/>\n            </clipPath>\n        </defs>\n    </svg>\n", "import React from \"react\";\n\nexport const Muted = () =>\n    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g clipPath=\"url(#clip0_2027_216)\">\n            <path d=\"M8.95958 3.33047L5.2525 7.5H1C0.4475 7.5 0 8.00344 0 8.625V15.375C0 15.9961 0.4475 16.5 1 16.5H5.2525L8.95958 20.6695C9.58583 21.3741 10.6667 20.8791 10.6667 19.8741V4.12594C10.6667 3.12 9.585 2.62688 8.95958 3.33047ZM18.6813 0.936097C18.2158 0.592504 17.5904 0.737347 17.285 1.26188C16.9792 1.78547 17.1092 2.48907 17.5746 2.83266C20.3358 4.87125 21.9838 8.29829 21.9838 12.0005C21.9838 15.7027 20.3358 19.1297 17.5746 21.1683C17.1092 21.5114 16.9792 22.2155 17.285 22.7386C17.5783 23.2406 18.1988 23.4211 18.6813 23.0644C22.0113 20.6053 24 16.4686 24 12C24 7.53141 22.0113 3.39516 18.6813 0.936097ZM20 12C20 9.02204 18.6642 6.28407 16.4263 4.67625C15.96 4.34157 15.3417 4.49719 15.0462 5.02594C14.7508 5.55469 14.8888 6.25453 15.355 6.58969C17.0113 7.77985 18 9.80204 18 12C18 14.198 17.0113 16.2202 15.355 17.4103C14.8888 17.745 14.7508 18.4448 15.0462 18.9741C15.3175 19.4597 15.9263 19.6838 16.4263 19.3238C18.6642 17.7159 20 14.9784 20 12ZM14.0929 8.39672C13.6104 8.1 13.0017 8.29547 12.7342 8.83969C12.4679 9.38391 12.6442 10.0678 13.1279 10.3683C13.6658 10.7006 14 11.3264 14 12C14 12.6741 13.6658 13.2994 13.1283 13.6317C12.6446 13.9322 12.4683 14.6161 12.7346 15.1603C13.0025 15.7069 13.6117 15.9009 14.0933 15.6033C15.2696 14.8744 16.0004 13.4939 16.0004 11.9995C16.0004 10.5052 15.2696 9.12516 14.0929 8.39672Z\" fill=\"currentColor\"/>\n        </g>\n        <path d=\"M1.20001 1.20001L22.6961 22.6961\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\"/>\n        <defs>\n            <clipPath id=\"clip0_2027_216\">\n                <rect width=\"24\" height=\"24\" fill=\"currentColor\"/>\n            </clipPath>\n        </defs>\n    </svg>\n", "import * as React from 'react';\n\nexport function VideoEdit() {\n    return <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g clipPath=\"url(#clip0_2246_206)\">\n            <line x1=\"18\" y1=\"4\" x2=\"18\" y2=\"23\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n            <line x1=\"2\" y1=\"9.5\" x2=\"5.2\" y2=\"9.5\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n            <line x1=\"19\" y1=\"9.5\" x2=\"22\" y2=\"9.5\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n            <line x1=\"19\" y1=\"14\" x2=\"22\" y2=\"14\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n            <line x1=\"19\" y1=\"18.5\" x2=\"22\" y2=\"18.5\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n            <line x1=\"2\" y1=\"14\" x2=\"5\" y2=\"14\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n            <line x1=\"19\" y1=\"5\" x2=\"22\" y2=\"5\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n            <line x1=\"2\" y1=\"18.5\" x2=\"5\" y2=\"18.5\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n            <line x1=\"1\" y1=\"23\" x2=\"23\" y2=\"23\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n            <line x1=\"23\" y1=\"26\" x2=\"23\" y2=\"4\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n            <line x1=\"1\" y1=\"25\" x2=\"1\" y2=\"4\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n            <path d=\"M5 9V9C6.10457 9 7 9.89543 7 11V22H5V9Z\" fill=\"currentColor\"/>\n            <path d=\"M6 4H17V6H7.2C6.53726 6 6 5.46274 6 4.8V4Z\" fill=\"currentColor\"/>\n            <rect x=\"1.19151\" y=\"3.43562\" width=\"0.5\" height=\"16.5\" transform=\"rotate(-37 1.19151 3.43562)\" fill=\"#D9D9D9\" stroke=\"currentColor\" strokeWidth=\"1\"/>\n            <rect x=\"0.589706\" y=\"2.637\" width=\"2.5\" height=\"0.5\" transform=\"rotate(-37 0.589706 2.637)\" fill=\"#D9D9D9\" stroke=\"currentColor\" strokeWidth=\"1\"/>\n            <rect x=\"2.98561\" y=\"0.831554\" width=\"0.5\" height=\"17.5\" transform=\"rotate(-37 2.98561 0.831554)\" fill=\"#D9D9D9\" stroke=\"currentColor\" strokeWidth=\"1\"/>\n            <rect x=\"3.1938\" y=\"4.43107\" width=\"1.5\" height=\"0.5\" transform=\"rotate(-37 3.1938 4.43107)\" fill=\"#D9D9D9\" stroke=\"currentColor\" strokeWidth=\"1\"/>\n            <path d=\"M13.9477 15.4225L14.6342 18.3669L11.9931 16.8954L13.9477 15.4225Z\" stroke=\"currentColor\"/>\n        </g>\n        <defs>\n            <clipPath id=\"clip0_2246_206\">\n                <rect width=\"24\" height=\"24\" fill=\"white\"/>\n            </clipPath>\n        </defs>\n    </svg>\n\n\n\n\n}\n", "import React from \"react\";\nimport {styled} from \"@mui/material\";\n\nconst Video = styled(\"video\")({\n    maxHeight: \"230px\",\n    maxWidth: \"230px\"\n});\n\ninterface VideoFeedProps {\n    url: string;\n    thumbnail: string;\n    subtitlesURL: string;\n    playing: boolean;\n    timer: number;\n    muted: boolean;\n    hidden: boolean;\n    onSubtitleChange: (videoSubtitle: string) => void;\n    setVideoTranscript: (videoTranscript: string[] | null) => void;\n}\n\nexport class VideoFeed extends React.Component {\n    props: VideoFeedProps;\n    private videoRef: React.RefObject<HTMLVideoElement> = React.createRef<HTMLVideoElement>();\n\n    componentDidMount() {\n        this.setupSubtitlesTextTrack();\n    }\n\n    override async componentDidUpdate(prevProps: VideoFeedProps) {\n        if (!this.videoRef.current)\n            return;\n\n        // start / stop video html element\n        if (prevProps.playing !== this.props.playing) {\n            if (this.props.playing)\n                await this.videoRef.current?.play();\n            else\n                this.videoRef.current?.pause();\n        }\n\n        // we only want to set the video current time if the change was generated by the scrubber\n        if (Math.abs((this.props.timer / 1000) - this.videoRef.current?.currentTime) > 0.4)\n            this.videoRef.current.currentTime = this.props.timer / 1000;\n\n        // if subtitles loaded after the video, we need to set up the cue change event\n        if (!prevProps.subtitlesURL && this.props.subtitlesURL)\n            this.setupSubtitlesTextTrack();\n    }\n\n    componentWillUnmount() {\n        this.props.onSubtitleChange(\"\");\n        this.props.setVideoTranscript(null);\n        const textTracks: TextTrackList | undefined = this.videoRef.current?.textTracks;\n        if (!textTracks || textTracks.length === 0)\n            return;\n        textTracks[0].oncuechange = null;\n    }\n\n    private setupSubtitlesTextTrack() {\n        const textTracks: TextTrackList | undefined = this.videoRef.current?.textTracks;\n        if (!textTracks || textTracks.length === 0)\n            return;\n\n        const textTrack: TextTrack = textTracks[0];\n        textTrack.mode = \"hidden\";\n        textTrack.oncuechange = () => {\n            const activeCueList: TextTrackCueList | null = textTrack.activeCues;\n            const activeCueText: string = activeCueList?.length ? (activeCueList[0] as VTTCue).text : \"\";\n            this.props.onSubtitleChange(activeCueText);\n        };\n    }\n\n    private setVideoTranscript() {\n        const textTracks: TextTrackList | undefined = this.videoRef.current?.textTracks;\n        if (!textTracks?.length) {\n            this.props.setVideoTranscript([]);\n            return;\n        }\n\n        const textTrack: TextTrack = textTracks[0];\n        const textTrackCues: TextTrackCueList | null = textTrack.cues;\n        if (!textTrackCues)\n            return;\n\n        const transcriptionCues: string[] = [];\n        for (let i = 0; i < textTrackCues.length; ++i)\n            transcriptionCues.push((textTrackCues[i] as VTTCue).text);\n\n        if (transcriptionCues.length)\n            this.props.setVideoTranscript(transcriptionCues);\n    }\n\n    render(): JSX.Element {\n        return (\n            <Video\n                id=\"cci-video-feed\"\n                ref={this.videoRef}\n                src={this.props.url}\n                style={{opacity: Number(!this.props.hidden)}}\n                muted={this.props.muted}\n                poster={this.props.thumbnail ?? \"\"}\n                onLoadedMetadata={() => this.setVideoTranscript()}\n            >\n                { Boolean(this.props.subtitlesURL) &&\n                    <track\n                        default\n                        kind={\"subtitles\"}\n                        src={this.props.subtitlesURL}\n                    />\n                }\n            </Video>\n        );\n    }\n}\n", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {primary} from \"@root/react-components/src/values/colors/colors\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {VideoScrubber} from \"@root/Frontend/Studio/Components/Video/VideoScrubber\";\nimport {VideoEditorContext} from \"@root/Frontend/Studio/Contexts/VideoEditorContext\";\n\nconst Wrapper = styled(Box)((props: {cursor: string}) => ({\n    position: \"relative\",\n    width: \"100%\",\n    height: \"100%\",\n    cursor: props.cursor\n}));\n\nconst Clipper = styled(Box)((props: {width: number, left: number}) => ({\n    width: `${props.width}px`,\n    height: \"100%\",\n    position: \"absolute\",\n    left: `${props.left}px`,\n    display: \"flex\",\n    alignItems: \"center\",\n    boxSizing: \"border-box\",\n    borderRadius: \"4px\",\n    border: `2px ${primary}`,\n    borderStyle: \"solid none\",\n    zIndex: \"3\"\n}));\n\nconst ClipperSide = styled(Box)((props: {cursor: string}) => ({\n    width: \"7px\",\n    height: \"100%\",\n    backgroundColor: primary,\n    cursor: props.cursor\n}));\n\nconst ClipperBody = styled(Box)((props: {cursor: string}) => ({\n    height: \"100%\",\n    backgroundColor: \"rgba(39, 128, 187, 0.5)\",\n    flexGrow: \"1\",\n    cursor: props.cursor\n}));\n\nenum DragItem {\n    LEFT,\n    MIDDLE,\n    RIGHT\n}\n\ninterface VideoClipperProps {\n    minTime: number,\n    maxTime: number,\n    selectedRange: [number, number]\n}\n\ninterface VideoClipperState {\n    left: number,\n    bodyWidth: number,\n    cursor: string,\n}\n\nexport class VideoClipper extends React.PureComponent {\n    static contextType = VideoEditorContext;\n\n    context: React.ContextType<typeof VideoEditorContext>;\n    props: VideoClipperProps;\n    state: VideoClipperState = {\n        left: 0,\n        bodyWidth: 0,\n        cursor: null,\n    }\n\n    private clipperWrapperRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    private currentDragItem: DragItem = null;\n    private lastDragValue: number = null;\n\n    static readonly DEFAULT_CLIP_MS: number = 15000;\n    static readonly MIN_CLIP_MS: number = 5000;\n    static readonly MAX_CLIP_MS: number = 20000;\n\n    componentDidMount() {\n        const ratioMs: number = VideoClipper.DEFAULT_CLIP_MS / this.props.maxTime;\n        const wrapperWidth: number = this.clipperWrapperRef.current?.clientWidth;\n        this.setState({ bodyWidth: Math.min(ratioMs * wrapperWidth, wrapperWidth) });\n\n        window.addEventListener(\"mousemove\", this.handleDrag);\n        window.addEventListener(\"mouseup\", this.handleDragOver);\n    }\n\n    componentWillUnmount() {\n        window.removeEventListener(\"mousemove\", this.handleDrag);\n        window.removeEventListener(\"mouseup\", this.handleDragOver);\n    }\n\n    componentDidUpdate(prevProps: VideoClipperProps) {\n        if (prevProps.selectedRange !== this.props.selectedRange || prevProps.minTime !== this.props.minTime)\n            this.updateSelectedRange(this.props.selectedRange);\n    }\n\n    private updateSelectedRange(selectedRange: [number, number]) {\n        const wrapperWidth: number = this.clipperWrapperRef.current?.clientWidth ?? 0;\n        const left: number = (selectedRange[0] - this.props.minTime) / this.props.maxTime * wrapperWidth;\n        const bodyWidth: number = ((selectedRange[1] - this.props.minTime) / this.props.maxTime * wrapperWidth) - left;\n        this.setState({left, bodyWidth});\n    }\n\n    private sendSelectedRange() {\n        const wrapperWidth: number = this.clipperWrapperRef.current?.clientWidth;\n\n        // Compute start and end in ms\n        const startMs: number\n            = Math.round(this.props.minTime + (this.state.left / wrapperWidth) * this.props.maxTime);\n        const endMs: number\n            = Math.round(this.props.minTime + ((this.state.left + this.state.bodyWidth) / wrapperWidth)\n              * this.props.maxTime);\n\n        this.context.setSelectedRange([startMs, endMs])\n    }\n\n    // **This needs to be an arrow function if we want to use it as an event listener on window\n    private handleDrag = (event: MouseEvent) => {\n        if(this.currentDragItem === null)\n            return;\n\n        const offset: number = event.clientX - this.lastDragValue;\n        const wrapperWidth: number = this.clipperWrapperRef.current?.clientWidth;\n        let bodyWidth: number = this.state.bodyWidth;\n        let left: number = this.state.left;\n\n        // Compute extreme values\n        let maxWidth: number = (VideoClipper.MAX_CLIP_MS / this.props.maxTime) * wrapperWidth;\n        const minWidth: number\n            = Math.min((VideoClipper.MIN_CLIP_MS / this.props.maxTime) * wrapperWidth, wrapperWidth);\n        let maxLeft: number = left + bodyWidth - minWidth;\n        let minLeft: number = Math.max(0, left + bodyWidth - maxWidth);\n\n        switch(this.currentDragItem) {\n            case DragItem.LEFT:\n                maxWidth = Math.min(maxWidth, left + bodyWidth);\n                bodyWidth -= offset;\n                left += offset\n                break;\n            case DragItem.MIDDLE:\n                maxLeft = wrapperWidth - bodyWidth;\n                minLeft = 0;\n                left += offset\n                break;\n            case DragItem.RIGHT:\n                maxWidth = Math.min(maxWidth, wrapperWidth - left);\n                bodyWidth += offset;\n                break;\n            default:\n                return;\n        }\n\n        // Clamp\n        bodyWidth = Math.min(Math.max(bodyWidth, minWidth), maxWidth);\n        left = Math.min(Math.max(left, minLeft), maxLeft);\n\n        if(bodyWidth === this.state.bodyWidth && left === this.state.left)\n            return;\n\n        this.setState({ left, bodyWidth }, () => this.sendSelectedRange());\n        this.lastDragValue = event.clientX;\n    }\n\n    private handleDragStart(event: React.MouseEvent, dragItem: DragItem) {\n        this.currentDragItem = dragItem;\n        this.setState({ cursor: dragItem === DragItem.MIDDLE ? \"grab\" : \"col-resize\" });\n\n        this.lastDragValue = event.clientX;\n    }\n\n    // **This needs to be an arrow function if we want to use it as an event listener on window\n    private handleDragOver = () => {\n        this.currentDragItem = null;\n        this.setState({ cursor: null });\n    }\n\n    render() {\n        return <Wrapper ref={this.clipperWrapperRef} cursor={this.state.cursor ?? \"auto\"}>\n            <Clipper width={this.state.bodyWidth} left={this.state.left}>\n                <ClipperSide onMouseDown={(event: React.MouseEvent) => this.handleDragStart(event, DragItem.LEFT)}\n                             cursor={this.state.cursor ?? \"col-resize\"}/>\n                <ClipperBody onMouseDown={(event: React.MouseEvent) => this.handleDragStart(event, DragItem.MIDDLE)}\n                             cursor={this.state.cursor ?? \"grab\"}/>\n                <ClipperSide onMouseDown={(event: React.MouseEvent) => this.handleDragStart(event, DragItem.RIGHT)}\n                             cursor={this.state.cursor ?? \"col-resize\"}/>\n            </Clipper>\n        </Wrapper>\n\n    }\n}", "import React, {CSSProperties} from \"react\";\nimport {FixedSizeList} from \"react-window\";\nimport {generateVideoThumbnailURL} from \"@utils/utils\";\nimport {Box, styled} from \"@mui/material\";\nimport {dark, lighterDark} from \"@root/react-components/src/values/colors/colors\";\nimport {ScrubberImage} from \"@root/Frontend/Studio/Components/Video/ScrubberImage\";\n\nconst List = styled(FixedSizeList)((props: {scrollHeight: number}) => ({\n    // style only applied for Mozilla Firefox web pages\n    \"@-moz-document url-prefix()\": {\n        scrollbarWidth: \"thin\",\n    },\n\n    \"&::-webkit-scrollbar\": {\n        height: `${props.scrollHeight}px`\n    },\n\n    \"&::-webkit-scrollbar-thumb\": {\n        backgroundColor: lighterDark,\n        borderRadius: \"6px\",\n        border: `2px solid ${dark}`\n    }\n}));\n\ninterface ScrubberImagesProps {\n    duration: number,\n    maxTime: number,\n    videoUrl: string,\n    setMinTime: (minTime: number, updateSelectedRange: boolean) => void,\n    getSelectedRange: () => [number, number]\n}\n\nexport class ScrubberImagesList extends React.PureComponent {\n    props: ScrubberImagesProps;\n    state: { imagesCount: number } = { imagesCount: 0 };\n\n    static readonly SCROLL_HEIGHT: number = 10;\n\n    private decoderPromise: Promise<string> = null;\n    private decodedThumbnailUrls: Map<number, string> = new Map();\n\n    private listContainerRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    private listRef: React.RefObject<FixedSizeList> = React.createRef<FixedSizeList>();\n    private resizeObserver: ResizeObserver = null;\n\n    private imagesCanvas: HTMLCanvasElement = document.createElement(\"canvas\");\n    private videoDecoder: HTMLVideoElement = document.createElement(\"video\");\n\n    override async componentDidMount() {\n        if(!this.props.videoUrl)\n            return;\n\n        await this.resizeDecoder(this.props.videoUrl);\n\n        // Set state when we resize so we rerender the list\n        this.resizeObserver = new ResizeObserver(() => {\n            const imagesCount: number = Math.ceil((this.props.duration / this.props.maxTime) *\n                                        (this.listContainerRef.current?.clientWidth / this.videoDecoder.width));\n            this.setState({ imagesCount }, () => this.updateScrollOffset(this.props.getSelectedRange()));\n        });\n        this.resizeObserver.observe(this.listContainerRef.current);\n    }\n\n    componentWillUnmount() {\n        this.resizeObserver?.disconnect();\n\n        for(const url of this.decodedThumbnailUrls.values())\n            URL.revokeObjectURL(url);\n    }\n\n    public updateScrollOffset(selectedRange: [number, number]) {\n        const totalWidthPx: number = this.videoDecoder.width * this.state.imagesCount;\n        const pixelPerSecond: number = totalWidthPx / this.props.duration;\n        const centerSelectedRange: number = (selectedRange[0] + selectedRange[1]) / 2;\n        const centerMax: number = this.props.maxTime / 2;\n\n        // put the selected range in the center of the timeline\n        this.listRef.current?.scrollTo((centerSelectedRange - centerMax) * pixelPerSecond);\n    }\n\n    private async resizeDecoder(videoUrl: string) {\n        const [width, height] = await this.computeDecodingDimensions(videoUrl);\n        this.videoDecoder.width = width;\n        this.videoDecoder.height = height;\n        this.imagesCanvas.width = width;\n        this.imagesCanvas.height = height;\n    }\n\n    private async computeDecodingDimensions(videoUrl: string): Promise<[number, number]> {\n        // Return video's width and height when we have the video's metadata\n        return new Promise((resolve) => {\n            this.videoDecoder.onloadedmetadata = () => {\n                const height: number = this.listContainerRef.current?.clientHeight - ScrubberImagesList.SCROLL_HEIGHT;\n                const width: number = height * (this.videoDecoder.videoWidth / this.videoDecoder.videoHeight);\n                resolve([width, height]);\n            }\n            this.videoDecoder.src = videoUrl;\n        });\n    }\n\n    private async generateScrubberImage(timeMS: number, image: React.RefObject<HTMLDivElement>): Promise<string> {\n        // Check if we already have a cached url for this time\n        let thumbnailUrl: string = this.decodedThumbnailUrls.get(timeMS);\n        if(thumbnailUrl)\n            return thumbnailUrl;\n\n        // If the decoder is already working on a promise, let it finish\n        while(this.decoderPromise)\n            await this.decoderPromise;\n\n        // If the image component is not mounted anymore, skip image generation\n        if(!image.current)\n            return \"\";\n\n        // Assign the new decoder promise and await it\n        this.decoderPromise = generateVideoThumbnailURL(this.videoDecoder, this.imagesCanvas, timeMS);\n\n        thumbnailUrl = await this.decoderPromise;\n        this.decodedThumbnailUrls.set(timeMS, thumbnailUrl);\n        this.decoderPromise = null;\n\n        return thumbnailUrl;\n    }\n\n    private renderScrubberImage(index: number, style: CSSProperties): JSX.Element {\n        const positionPixel: number = index * this.videoDecoder.width;\n        const totalWidthPixel: number = this.videoDecoder.width * this.state.imagesCount;\n        const timeMS: number = (positionPixel / totalWidthPixel) * this.props.duration;\n\n        return (\n            <ScrubberImage style={style} timeMS={timeMS}\n                           generateScrubberImage={async (timeMS: number, image: React.RefObject<HTMLDivElement>) =>\n                               await this.generateScrubberImage(timeMS, image)}/>\n        )\n    }\n\n    private handleScroll(scrollOffset: number, scrollUpdateWasRequested: boolean): void {\n        const totalWidthPx: number = this.videoDecoder.width * this.state.imagesCount;\n        const min: number = this.props.duration * (scrollOffset / totalWidthPx);\n        const newMinTime: number = Math.min(min, this.props.duration - this.props.maxTime)\n        this.props.setMinTime(newMinTime, !scrollUpdateWasRequested);\n    }\n\n    render() {\n        return (\n            <Box style={{width: \"100%\"}} ref={this.listContainerRef}>\n                {this.state.imagesCount && this.videoDecoder.width &&\n                    <List ref={this.listRef}\n                          itemSize={this.videoDecoder.width}\n                          itemCount={this.state.imagesCount}\n                          width={this.listContainerRef.current?.clientWidth}\n                          height=\"50px\"\n                          scrollHeight={ScrubberImagesList.SCROLL_HEIGHT}\n                          layout=\"horizontal\"\n                          onScroll={({scrollOffset, scrollUpdateWasRequested}) =>\n                              this.handleScroll(scrollOffset, scrollUpdateWasRequested)}>\n                        {({index, style}) => this.renderScrubberImage(index, style)}\n                    </List>\n                }\n            </Box>\n        );\n    }\n}\n", "import React, {CSSProperties} from \"react\";\nimport {Box} from \"@mui/material\";\n\ninterface ScrubberImageProps {\n    style: CSSProperties,\n    timeMS: number,\n    generateScrubberImage: (timeMS: number, image: React.RefObject<HTMLDivElement>) => Promise<string>\n}\n\nexport class ScrubberImage extends React.Component {\n    props: ScrubberImageProps;\n    state: { imageUrl: string } = { imageUrl: \"\" }\n    private imageRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n\n    override async componentDidMount() {\n        const imageUrl: string = await this.props.generateScrubberImage(this.props.timeMS, this.imageRef);\n\n        if(this.imageRef.current)\n            this.setState({ imageUrl });\n    }\n\n    render() {\n        return (\n            <Box ref={this.imageRef}>\n                {this.state.imageUrl ? <img alt=\"\" style={this.props.style} src={this.state.imageUrl} />\n                                     : <Box style={this.props.style}/>}\n\n            </Box>\n        );\n    }\n}", "import * as React from 'react';\n\nexport const VideoLarge = () => (\n    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path d=\"M0 3C0 1.34315 1.34315 0 3 0H20C21.6569 0 23 1.34315 23 3V3H0V3Z\" fill=\"currentColor\"/>\n            <path d=\"M3 22C1.34315 22 0 20.6569 0 19L0 3H3L3 22V22Z\" fill=\"currentColor\"/>\n            <path d=\"M20 12V3H23V12H20Z\" fill=\"currentColor\"/>\n            <path d=\"M3 19H13V22H3V19Z\" fill=\"currentColor\"/>\n            <rect x=\"6\" y=\"6\" width=\"8\" height=\"6\" rx=\"1\" fill=\"currentColor\"/>\n            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.3096 22.5125C22.9283 22.8961 22.3101 22.8961 21.9288 22.5125L14.5456 15.084C14.1643 14.7003 14.1643 14.0783 14.5456 13.6947C14.9269 13.311 15.5451 13.311 15.9264 13.6947L23.3096 21.1232C23.6909 21.5068 23.6909 22.1288 23.3096 22.5125Z\" fill=\"currentColor\"/>\n            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M15.2128 19.2637C14.6735 19.2637 14.2364 18.8238 14.2363 18.2813L14.2363 14.3517C14.2363 13.8091 14.6734 13.3693 15.2126 13.3693C15.7519 13.3693 16.1891 13.8091 16.1891 14.3517L16.1891 18.2812C16.1891 18.8238 15.752 19.2636 15.2128 19.2637Z\" fill=\"currentColor\"/>\n            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M20.1436 14.3517C20.1436 14.8942 19.7064 15.334 19.1672 15.334H15.2616C14.7224 15.334 14.2852 14.8942 14.2852 14.3517C14.2852 13.8091 14.7224 13.3693 15.2616 13.3693H19.1672C19.7064 13.3693 20.1436 13.8091 20.1436 14.3517Z\" fill=\"currentColor\"/>\n    </svg>\n\n);", "import * as React from 'react';\n\nexport const VideoSmall = () => (\n    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M0 3C0 1.34315 1.34315 0 3 0H20C21.6569 0 23 1.34315 23 3V3H0V3Z\" fill=\"currentColor\"/>\n        <path d=\"M3 22C1.34315 22 0 20.6569 0 19L0 3H3L3 22V22Z\" fill=\"currentColor\"/>\n        <path d=\"M20 12V3H23V12H20Z\" fill=\"currentColor\"/>\n        <path d=\"M3 19H13V22H3V19Z\" fill=\"currentColor\"/>\n        <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M5.69041 5.69466C6.07172 5.31101 6.68994 5.31101 7.07125 5.69466L14.4544 13.1232C14.8357 13.5068 14.8357 14.1288 14.4544 14.5125C14.0731 14.8961 13.4549 14.8961 13.0736 14.5125L5.69041 7.08397C5.30911 6.70032 5.30911 6.0783 5.69041 5.69466Z\" fill=\"currentColor\"/>\n        <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M13.7872 8.9435C14.3265 8.94349 14.7636 9.38331 14.7637 9.92587L14.7637 13.8554C14.7637 14.398 14.3266 14.8378 13.7874 14.8379C13.2481 14.8379 12.8109 14.398 12.8109 13.8555L12.8109 9.92591C12.8109 9.38335 13.248 8.94351 13.7872 8.9435Z\" fill=\"currentColor\"/>\n        <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M8.85641 13.8555C8.85641 13.3129 9.29356 12.8731 9.83281 12.8731H13.7384C14.2776 12.8731 14.7148 13.3129 14.7148 13.8555C14.7148 14.3981 14.2776 14.8379 13.7384 14.8379H9.83281C9.29356 14.8379 8.85641 14.3981 8.85641 13.8555Z\" fill=\"currentColor\"/>\n        <rect x=\"16\" y=\"16\" width=\"8\" height=\"6\" rx=\"1\" fill=\"currentColor\"/>\n    </svg>\n\n);", "import React from \"react\";\nimport {MultipleSelect} from \"@root/react-components/src/inputs/MultipleSelect\";\nimport {Layers} from \"@root/react-components/src/icons/Layers\";\nimport {getCurrentSequenceVideoDuration} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {\n    getCurrentSequenceID,\n    getSequenceVideoID\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {getVideoSubtitlesLocalPath, isVideoLoaded} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {detectLanguageOfGivenPhrases, VIDEO_TRANSCRIPTION_DURATION_LIMIT} from \"@utils/utils\";\nimport isEqual from \"lodash/isEqual\";\n\nexport enum LAYER {\n    HEAD = \"Head\",\n    HANDS = \"Hands\",\n    SCAN = \"3D Scan\",\n    SUBTITLES = \"Subtitles\",\n    VIDEO = \"Video\"\n}\n\nexport const LAYERS_VALUES: LAYER[] = Object.values(LAYER);\n\ninterface LayersDropdownProps {\n    selectedLayers: LAYER[];\n    setSelectedLayers: (selectedLayers: LAYER[]) => void;\n    videoTranscript: string[];\n}\n\nexport class LayersDropdown extends React.Component {\n    props: LayersDropdownProps;\n    state: {\n        unselectableLayerReasons: string[];\n    } = {\n        unselectableLayerReasons: []\n    };\n\n    componentDidUpdate(prevProps: LayersDropdownProps) {\n        if (!isEqual(prevProps.videoTranscript, this.props.videoTranscript))\n            this.setUnselectableLayerReasons();\n    }\n\n    private setUnselectableLayerReasons(): void {\n        const unselectableLayerReasons: string[] = Array.from({length: LAYERS_VALUES.length}, (): string => \"\");\n\n        // check if the sequence video has subtitles\n        const sequenceVideoID: bigint = getSequenceVideoID(getCurrentSequenceID());\n        if (getVideoSubtitlesLocalPath(sequenceVideoID)) {\n            if (this.props.videoTranscript.length && !detectLanguageOfGivenPhrases(this.props.videoTranscript, 0.15))\n                unselectableLayerReasons[LAYERS_VALUES.indexOf(LAYER.SUBTITLES)] =\n                    `${i18next.t(\"Subtitles are unavailable in a supported language\")}.`;\n            return this.setState({ unselectableLayerReasons });\n        }\n\n        // if the sequence video is longer than 30 minutes then subtitles will not be generated\n        if (getCurrentSequenceVideoDuration() > VIDEO_TRANSCRIPTION_DURATION_LIMIT) {\n            unselectableLayerReasons[LAYERS_VALUES.indexOf(LAYER.SUBTITLES)] =\n                `${i18next.t(\"Subtitles are not supported for videos longer than 30 minutes\")}.`;\n        }\n        else if (isVideoLoaded(sequenceVideoID)) {\n            unselectableLayerReasons[LAYERS_VALUES.indexOf(LAYER.SUBTITLES)] =\n                `${i18next.t(\"Subtitles are currently unavailable, please try again later\")}.`;\n        }\n        this.setState({ unselectableLayerReasons });\n    }\n\n    render() {\n        return (\n            <MultipleSelect\n                id=\"cci-layers\"\n                unselectableOptionReasons={this.state.unselectableLayerReasons}\n                selectedIndexes={this.props.selectedLayers.map((layer: LAYER) => LAYERS_VALUES.indexOf(layer))}\n                icon={<Layers />}\n                options={LAYERS_VALUES}\n                optionsStyle={{ color: dark }}\n                onChange={(selectedLayers: number[]) =>\n                    this.props.setSelectedLayers(selectedLayers.map((index: number) => LAYERS_VALUES[index]))} />\n        )\n    }\n}", "import * as React from 'react';\nimport styled from 'styled-components';\nimport { primaryFontLarge } from '../values/fonts/fonts';\nimport {darkenWhite, lighterDark, lightGrey, lightWhite, primary} from \"../values/colors/colors\";\nimport {DownArrow} from \"../icons/DownArrow\";\nimport {Box} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {Tooltip} from \"../misc/Tooltip\";\n\nconst SelectWrapper = styled.div<{selected: boolean}>`\n    height: 24px;\n    line-height: 24px;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    position: relative;\n    background-color: transparent;\n    padding: 2px 6px;\n    border: 1.5px solid ${props => props.selected ? primary : lightGrey};\n    border-radius: 3px;\n    outline: none;\n    font: ${primaryFontLarge};\n    transition: border 0.3s ease, background-color 0.5s ease;\n\n    &:hover {\n        border: 1.5px solid  ${primary}  \n    }\n`\n\nconst OptionsWrapper = styled.div`\n    right: 0px;\n    width: max-content;\n    font: ${primaryFontLarge};\n    position: absolute;\n    background-color: ${darkenWhite};\n    z-index: 1000;\n    cursor: pointer;\n    margin-top: 3px;\n    box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 1px 3px 1px;\n    border-radius: 3px\n`\n\nconst Option = styled.div<{color: string}>`\n    display:flex;\n    justify-content:space-between;\n    align-items: center;\n    color: ${props => props.color};\n    padding: 4px 10px;\n    min-width: 100px;\n    border-radius: 3px;\n    user-select: none;  \n    &:hover {\n        color: white;\n        background-color: ${primary};\n    }\n`\n\nconst Checkbox = styled.div<{checked: boolean, selectable: boolean}>`\n    & {\n        margin-left:5px;\n        background-color: ${props => props.checked ? primary :\n                props.selectable ? lightWhite : lightGrey};\n        border: solid 1px ${primary};\n        border-radius: 2.5px;\n        transition: background-color 0.1s ease;\n    }\n\n    // hide the html checkbox\n    & > input {\n        margin:0px;\n        display:none;\n    },\n\n    // Create a custom checkbox\n    & > span {\n        top: 0;\n        left: 0;\n        height: 16px;\n        width: 16px;\n    }   \n\n    & > span:after {\n        content: \"\";\n        position: relative;\n        display: none;\n        }\n    // Show the checkmark when checked \n    & > input:checked ~ span:after {\n        display: block;\n    }\n\n    // Style the checkmark/indicator\n    & > span:after {\n        left: 4px;\n        top: 1px;\n        width: 4px;\n        height: 8px;\n        border: solid white;\n        border-width: 0 3px 3px 0;\n        border-radius:2px;\n        -webkit-transform: rotate(45deg);\n        -ms-transform: rotate(45deg);\n        transform: rotate(45deg);\n    }\n        \n`\n\nconst ArrowWrapper = styled.div<{ selected: boolean }>`\n    display:flex;\n    align-items:center;\n    margin-left:5px;\n    transform: ${props => props.selected ? \"rotateX(180deg)\" : \"rotateX(0deg)\"};\n`\n\ninterface MultipleSelectProps {\n    selectedIndexes: number[],\n    unselectableOptionReasons?: string[],\n    options: string[],\n    onChange: (newSelectedIndexList: number[]) => void,\n    style?: React.CSSProperties,\n    optionsStyle?: React.CSSProperties,\n    label?: string,\n    icon?: JSX.Element,\n    id?: string\n}\n\nexport class MultipleSelect extends React.Component {\n    multipleSelectRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    optionsRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    props: MultipleSelectProps;\n    state: { selected: boolean } = { selected: false };\n\n    componentDidMount() {\n        // detect if we click outside of dropdown\n        document.addEventListener(\"mousedown\", (event) => {\n            if (this.multipleSelectRef.current && !this.multipleSelectRef.current.contains(event.target as Node)) \n                this.setState({ selected: false });\n        });\n    }\n\n    componentDidUpdate() {\n        // make sure options are always on screen\n        if(this.state.selected && this.optionsRef.current) {\n            const left = this.optionsRef.current.getBoundingClientRect().left\n            if(left < 0)\n                this.optionsRef.current.style.transform = `translateX(${-left + 10}px)`;\n\n            const right = this.optionsRef.current.getBoundingClientRect().right\n            if(right > window.innerWidth)\n                this.optionsRef.current.style.transform = `translateX(${-right + window.innerWidth - 10}px)`;\n        }\n    }\n\n    changeSelectedOptionsList(index: number) {\n        const newSelectedIndexList: number[] = this.isIndexOptionSelected(index)\n            ? this.props.selectedIndexes.filter(i => index !== i)\n            : [...this.props.selectedIndexes, index];\n\n        this.props.onChange(newSelectedIndexList);\n    }\n\n    private isIndexOptionSelectable(index: number): boolean {\n        return !this.props.unselectableOptionReasons || !this.props.unselectableOptionReasons[index];\n    }\n\n    private isIndexOptionSelected(index: number): boolean {\n        if (!this.isIndexOptionSelectable(index))\n            return false;\n        return this.props.selectedIndexes.indexOf(index) !== -1;\n    }\n    \n    render(): JSX.Element {\n        return <div\n            ref={this.multipleSelectRef}\n            style={{position: \"relative\", width: \"maxWidth\", borderRadius: \"3px\", ...this.props.style}}\n        >\n            <Box\n                id={this.props.id ?? \"\"}\n                onClick={() => this.setState({ selected: !this.state.selected})}\n            >\n                {this.props.icon ?\n                    this.props.icon\n                    :\n                    <SelectWrapper selected={this.state.selected}>\n                        <p style={{height: \"20px\", margin: 0, userSelect: \"none\", width: \"max-content\"}}>\n                            {this.props.label}\n                        </p>\n                        <ArrowWrapper selected={this.state.selected}>\n                            <DownArrow width={\"12\"} height={\"12\"}/>\n                        </ArrowWrapper>\n                    </SelectWrapper>\n                }\n            </Box>\n            {this.state.selected && <OptionsWrapper ref={this.optionsRef} style={{ ...this.props.optionsStyle }}>\n                {this.props.options.map((option, index) => {\n                    const unselectableReason: string = this.props.unselectableOptionReasons ?\n                        this.props.unselectableOptionReasons[index] :\n                        \"\";\n                    return <Tooltip title={unselectableReason} placement={\"left\"} key={index}>\n                        <Option\n                            id={option.toLowerCase()}\n                            onClick={() => {\n                                if (unselectableReason)\n                                    return;\n                                this.changeSelectedOptionsList(index);\n                            }}\n                            style={{ cursor: unselectableReason ? \"default\" : \"pointer\" }}\n                            color={this.isIndexOptionSelected(index) ?\n                                primary : unselectableReason ? lighterDark : \"currentColor\"}\n                        >\n                            <span style={{ margin: \"0px\", paddingLeft: \"4px\" }}>\n                                {i18next.t(option)}\n                            </span>\n                            <Checkbox\n                                className=\"checkbox\"\n                                checked={this.isIndexOptionSelected(index)}\n                                selectable={this.isIndexOptionSelectable(index)}\n                            >\n                                <input\n                                    type=\"checkbox\"\n                                    readOnly\n                                    checked={this.isIndexOptionSelected(index)}\n                                />\n                                <span/>\n                            </Checkbox>\n                        </Option>\n                    </Tooltip>;\n                })}\n            </OptionsWrapper>}\n        </div>;\n    }\n}", "import React from \"react\";\nimport {ReactElement} from \"react\";\nimport {lightDark} from \"../values/colors/colors\";\n\nexport function DownArrow(props: { width?: string, height?: string, fill?: string}): ReactElement {\n    return (\n        <svg width={props.width} height={props.height} viewBox=\"0 0 30 17\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path fill={props.fill ?? lightDark}\n                  d=\"M13.5858 16.1984C14.3668 16.9794 15.6332 16.9794 16.4142 16.1984L29.1421 3.47047C29.9232 2.68942 29.9232 1.42309 29.1421 0.642042C28.3611 -0.139007 27.0948 -0.139007 26.3137 0.642042L15 11.9558L3.68629 0.642042C2.90524 -0.139007 1.63891 -0.139007 0.857864 0.642042C0.0768158 1.42309 0.0768158 2.68942 0.857864 3.47047L13.5858 16.1984ZM13 12V14.7842H17V12H13Z\"/>\n        </svg>\n    );\n}\n", "import * as React from 'react';\n\nexport const Layers = () => (\n    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g clipPath=\"url(#clip0_2373_332)\">\n            <path d=\"M1.10926 7L12 1.13576L22.8907 7L12 12.8642L1.10926 7Z\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n            <path d=\"M0.15089 16.8829C0.410172 16.3953 1.01567 16.2102 1.50331 16.4695L13.12 22.6462C13.2825 22.7326 13.3442 22.9344 13.2578 23.097V23.097C12.8256 23.9097 11.8165 24.2182 11.0037 23.7861L0.564367 18.2354C0.0767282 17.9761 -0.108392 17.3706 0.15089 16.8829V16.8829Z\" fill=\"currentColor\"/>\n            <path d=\"M11.354 23.291C11.1033 22.7989 11.2989 22.1968 11.791 21.946L22.4831 16.4981C22.9752 16.2474 23.5773 16.4431 23.8281 16.9352V16.9352C24.0788 17.4273 23.8831 18.0294 23.3911 18.2802L12.699 23.728C12.2069 23.9788 11.6047 23.7831 11.354 23.291V23.291Z\" fill=\"currentColor\"/>\n            <path d=\"M0.15089 11.6829C0.410172 11.1953 1.01567 11.0102 1.50331 11.2695L13.12 17.4461C13.2825 17.5326 13.3442 17.7344 13.2578 17.8969V17.8969C12.8256 18.7097 11.8165 19.0182 11.0037 18.5861L0.564367 13.0354C0.0767282 12.7761 -0.108392 12.1706 0.15089 11.6829V11.6829Z\" fill=\"currentColor\"/>\n            <path d=\"M11.354 18.091C11.1033 17.5989 11.2989 16.9968 11.791 16.746L22.4831 11.2981C22.9752 11.0474 23.5773 11.2431 23.8281 11.7352V11.7352C24.0788 12.2272 23.8831 12.8294 23.3911 13.0801L12.699 18.528C12.2069 18.7788 11.6047 18.5831 11.354 18.091V18.091Z\" fill=\"currentColor\"/>\n        </g>\n        <defs>\n            <clipPath id=\"clip0_2373_332\">\n                <rect width=\"24\" height=\"24\" fill=\"white\"/>\n            </clipPath>\n        </defs>\n    </svg>\n);", "import * as React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function Video(): JSX.Element {\n    return (\n        <SvgIcon xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\">\n            <path fill=\"currentColor\"\n                d=\"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\"/>\n        </SvgIcon>\n    );\n}\n", "import React from \"react\";\nimport {Box, IconButton, styled} from \"@mui/material\";\nimport {white} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {lightDark, lighterDark} from \"../values/colors/colors\";\nimport {ExpandLess} from \"../icons/ExpandLess\";\nimport {ExpandMore} from \"../icons/ExpandMore\";\nimport isEqual from \"lodash/isEqual\";\nimport {detectLanguageOfGivenPhrases} from \"@utils/utils\";\nimport i18next from \"i18next\";\n\nconst Wrapper = styled(Box)((props: { bottom: number }) => ({\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    gap: \"6px\",\n    position: \"absolute\",\n    left: \"50%\",\n    transform: \"translateX(-50%)\",\n    bottom: props.bottom\n}));\n\nconst SubtitleWrapper = styled(Box)({\n    display: \"block\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    backgroundColor: \"rgba(54, 62, 71, 0.8)\",\n    boxSizing: \"border-box\",\n    borderRadius: \"10px\",\n    padding: \"0 10px\",\n    width: \"max-content\"\n});\n\nconst TextWrapper = styled(Box)((props: {is_expanded: number, max_height: number, max_width: number}) => ({\n    color: white,\n    font: primaryFontLarge,\n    lineHeight: \"26px\",\n    userSelect: \"text\",\n    whiteSpace: \"pre-line\",\n    textAlign: props.is_expanded ? \"start\" : \"center\",\n    padding: \"4px 0\",\n    maxHeight: props.max_height ? props.max_height : \"none\",\n    maxWidth: props.max_width ? props.max_width : \"none\",\n    overflowY: \"auto\",\n    \"&::first-letter\": {\n        textTransform: \"capitalize\"\n    },\n\n    // Supported by Chrome and Firefox\n    scrollbarWidth: \"thin\",\n    scrollbarColor: `${lighterDark} ${lightDark}`,\n\n    // Supported by Safari\n    /* width */\n    \"&::-webkit-scrollbar\": {\n        width: \"7px\",\n        height: \"10px\",\n    },\n\n    /* Track */\n    \"&::-webkit-scrollbar-track\": {\n        backgroundColor: lightDark,\n    },\n\n    /* Handle */\n    \"&::-webkit-scrollbar-thumb\": {\n        background: lighterDark,\n        cursor: \"pointer\",\n        borderRadius: \"6px\",\n    }\n}));\n\nconst CircularIconButton = styled(IconButton)({\n    borderRadius: \"50%\",\n    backgroundColor: \"rgba(54, 62, 71, 0.8)\",\n    height: \"24px\",\n    width: \"24px\",\n    padding: \"0\",\n    \"& > button\": {\n        color: \"rgba(54, 62, 71, 0.8)\"\n    }\n});\n\ninterface VideoSubtitleProps {\n    bottom: number;\n    maxHeight: number;\n    maxWidth: number;\n    subtitle: string;\n    transcript: string[] | null;\n}\n\ninterface VideoSubtitleState {\n    isExpanded: boolean;\n    subtitlesUnavailableReason: string;\n}\n\nexport class VideoSubtitle extends React.Component {\n    props: VideoSubtitleProps;\n    state: VideoSubtitleState = {\n        isExpanded: false,\n        subtitlesUnavailableReason: \"\"\n    };\n\n    componentDidMount() {\n        this.updateSubtitlesUnavailableReason();\n    }\n\n    componentDidUpdate(prevProps: VideoSubtitleProps) {\n\n        // if transcript changed, need to detect if it's a supported language!\n        if (!isEqual(prevProps.transcript, this.props.transcript))\n            this.updateSubtitlesUnavailableReason();\n    }\n\n    private updateSubtitlesUnavailableReason() {\n        if (this.props.transcript === null)\n            return;\n\n        let subtitlesUnavailableReason: string = \"\";\n        if (!this.props.transcript.length && !this.props.subtitle)\n            subtitlesUnavailableReason = `${i18next.t(\"Subtitles are currently unavailable, please try again later\")}.`;\n        else if (!detectLanguageOfGivenPhrases(this.props.transcript, 0.15))\n            subtitlesUnavailableReason = `${i18next.t(\"Subtitles are unavailable in a supported language\")}.`;\n\n         this.setState({ subtitlesUnavailableReason });\n    }\n\n    private getSubtitleText(): string {\n        if (this.state.subtitlesUnavailableReason)\n            return this.state.subtitlesUnavailableReason;\n        else if (this.state.isExpanded && this.props.transcript)\n            return this.props.transcript.join(\"\\n\");\n        return this.props.subtitle;\n    }\n\n    render(): JSX.Element {\n        const subtitle: string = this.getSubtitleText();\n        return (\n            <Wrapper bottom={this.props.bottom}>\n                { (this.props.transcript && this.props.transcript.length > 1) &&\n                    <CircularIconButton\n                        disableRipple\n                        onClick={() => this.setState((prevState: VideoSubtitleState) => ({\n                            isExpanded: !prevState.isExpanded\n                        }))}\n                    >\n                        { this.state.isExpanded ?\n                            <ExpandMore size={24} fill={white}/>\n                            :\n                            <ExpandLess size={24} fill={white}/>\n                        }\n                    </CircularIconButton>\n                }\n                { (subtitle || this.state.isExpanded) &&\n                    <SubtitleWrapper>\n                        <TextWrapper\n                            is_expanded={Number(this.state.isExpanded)}\n                            max_height={this.props.maxHeight}\n                            max_width={this.props.maxWidth}\n                        >\n                            {subtitle}\n                        </TextWrapper>\n                    </SubtitleWrapper>\n                }\n            </Wrapper>\n        );\n    }\n}\n", "import React from 'react';\nexport function ExpandLess(props: {size:number,  fill?:string}) {\n    return <svg xmlns=\"http://www.w3.org/2000/svg\"\n                fill={props.fill}\n                viewBox={`0 0 ${props.size * 2} ${props.size * 2}`}\n                style={{width:\"100%\", height:\"100%\", minWidth: props.size}} >\n        <path d=\"M14.15 30.75 12 28.6l12-12 12 11.95-2.15 2.15L24 20.85Z\"/>\n    </svg>\n}\n\n", "import * as React from 'react';\n\nexport function ExpandMore(props: { size: number, fill?: string }): JSX.Element {\n    return (\n        <svg\n            xmlns=\"http://www.w3.org/2000/svg\"\n            fill={props.fill}\n            viewBox={`0 0 ${props.size * 2} ${props.size * 2}`}\n            style={{width:\"100%\", height:\"100%\", minWidth: props.size}}\n        >\n            <path d=\"m24 30.75-12-12 2.15-2.15L24 26.5l9.85-9.85L36 18.8Z\"/>\n        </svg>\n    );\n}", "import * as React from 'react';\nimport {ActionIcon} from \"Views/QuickActions/ActionIcon\"\nimport {CloudChecked} from \"@root/react-components/src/icons/CloudChecked\";\nimport {Undo} from \"@root/react-components/src/icons/Undo\";\nimport {Redo} from \"@root/react-components/src/icons/Redo\";\nimport {\n    CameraView, canUserEditCurrentWorld, getRedoStackSize, getUndoStackSize,\n    redoCommand, saveWorld, setCameraView, undoCommand,\n    isWorldAuthorized, getCurrentWorldID\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {\n    CubeViewFront,\n    CubeViewLeft,\n    CubeViewTop\n} from \"@root/react-components/src/icons/CubeViews\";\nimport {dark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {WorldPermissions} from \"Views/WorldPermissions/WorldPermissions\";\nimport {Video} from \"@root/react-components/src/icons/Video\";\nimport {App} from \"App\";\nimport i18next from \"i18next\";\nimport {Toast} from \"@root/react-components/src/misc/Toast\";\nimport {Share} from \"@root/react-components/src/icons/Share\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {WorldInfos} from \"Views/EmbedOverlay/WorldInfos\";\nimport {Tools} from \"@root/react-components/src/icons/Tools\";\nimport {Box, styled} from \"@mui/material\";\nimport {PrinterIcon} from \"@root/react-components/src/icons/PrinterIcon\";\nimport {GoToConsole} from \"@root/react-components/src/icons/GoToConsole\";\nimport {GoToDocumentation} from \"@root/react-components/src/icons/GoToDocumentation\";\nimport {World} from \"@root/react-components/src/icons/World\";\nimport {Navigation} from \"@root/react-components/src/icons/Navigation\";\nimport {Tooltip} from '@root/react-components/src/misc/Tooltip';\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Avatar} from \"@root/Frontend/Studio/Views/QuickActions/Avatar\";\nimport {PreviewMode} from \"@root/react-components/src/icons/PreviewMode\";\nimport {EditorMode} from \"@root/react-components/src/icons/EditorMode\";\nimport {SettingsIcon} from \"@root/react-components/src/icons/SettingsIcon\";\nimport {\n    FilterCoordinator,\n    FilterLoginGroup,\n    FilterSequenceTags,\n    FilterSettings,\n    Language\n} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {Back} from \"@root/react-components/src/icons/Back\";\nimport isEqual from \"lodash/isEqual\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\n\nconst SPACING_QUICKACTIONS: number = 8;\n\nconst Wrapper = styled(Box)({\n    transition: \"0.25s all\",\n    display: \"flex\",\n    position: \"absolute\",\n    alignItems: \"center\",\n    left: `${SPACING_QUICKACTIONS}px`,\n    top: \"6px\",\n    zIndex: \"1010\",\n    flexDirection: \"row\",\n    gap: \"5px\"\n});\n\nconst PopupContainer = styled(Box)({\n    padding: \"6px 8px\",\n    backgroundColor: dark,\n    borderRadius: \"10px\",\n    color: white,\n    display: \"flex\",\n    flexDirection: \"column\",\n    font: primaryFontMedium,\n    whiteSpace: \"nowrap\",\n    \"& > div\": {\n        display: \"flex\",\n        alignItems: \"center\",\n        \"&:hover\": {\n            cursor: \"pointer\"\n        }\n    },\n    \"& svg\": {\n        height: \"24px\",\n        width: \"24px\",\n        margin: \"3px\"\n    }\n});\n\nconst Popup = styled(Box)({\n    position: \"absolute\",\n    paddingTop: \"4px\",\n});\n\nconst IconContainer = styled(Box)((props: {disabled?: number}) => ({\n    height: \"24px\",\n    opacity: props.disabled ? \"0.4\" : \"1\",\n    cursor: props.disabled ? \"default\" : \"pointer\",\n}));\n\nexport enum QuickActionEnum {\n    SETTINGS = \"Settings\",\n    SAVE = \"Save\",\n    UNDO = \"Undo\",\n    REDO = \"Redo\",\n    PREVIEW = \"Preview\",\n    PRINT_ANCHORS = \"Print anchors\",\n    SHARE = \"Share\",\n    RESET_VIEW = \"Reset view\",\n    DEEPSIGHT_LINKS = \"DeepSight links\",\n}\n\ninterface Action {\n    icon: React.ReactElement\n    enabled: boolean\n    ref: React.RefObject<ActionIcon>\n    onClick?: (e?: React.MouseEvent) => void\n    onMouseOver?: (e: React.MouseEvent) => void\n    onMouseEnter?: (e: React.MouseEvent) => void\n    onMouseLeave?: (e: React.MouseEvent) => void\n    isLoading: boolean\n    children?: React.ReactElement\n    showChildren?: boolean\n}\n\ntype QuickActionsType = { [action in QuickActionEnum]: Action | null; }\n\ntype QuickActionsState = QuickActionsType & {\n    openWorldPermission: boolean;\n    settingsOpened: boolean;\n}\n\ninterface QuickActionProps {\n    currentPeerID: bigint;\n    isEditing: boolean;\n    setEditing: (isEditing: boolean) => void;\n}\n\nconst DEFAULT_ACTIONS: QuickActionsType = {\n    [QuickActionEnum.SETTINGS]: null,\n    [QuickActionEnum.SAVE]: null,\n    [QuickActionEnum.UNDO]: null,\n    [QuickActionEnum.REDO]: null,\n    [QuickActionEnum.PRINT_ANCHORS]: null,\n    [QuickActionEnum.SHARE]: null,\n    [QuickActionEnum.RESET_VIEW]: null,\n    [QuickActionEnum.DEEPSIGHT_LINKS]: null,\n    [QuickActionEnum.PREVIEW]: null,\n};\n\nexport class QuickActions extends React.Component {\n    private readonly wrapper: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    private readonly worldInfosRef: React.RefObject<WorldInfos> = React.createRef<WorldInfos>();\n    private readonly worldPermissionsRef: React.RefObject<WorldPermissions> = React.createRef();\n    private readonly avatarRef: React.RefObject<Avatar> = React.createRef<Avatar>();\n\n    private isEditingBeforeSettings: boolean = false;\n\n    props: QuickActionProps;\n    state: QuickActionsState = {\n        ...DEFAULT_ACTIONS,\n        openWorldPermission: false,\n        settingsOpened: false,\n    };\n\n    override componentDidUpdate(prevProps: QuickActionProps) {\n        if (prevProps.isEditing !== this.props.isEditing)\n            this.setState({ ...this.getActions(this.props.isEditing) });\n\n        if (prevProps.currentPeerID !== this.props.currentPeerID) {\n            this.setState({\n                ...this.getActions(this.props.isEditing),\n                settingsOpened: false\n            });\n        }\n    }\n\n    private getActions(isEditing: boolean): QuickActionsType {\n        const filterLoginGroup: FilterLoginGroup = App.getInstance().getFilterLoginGroup();\n        let actions: QuickActionsType = {\n            ...DEFAULT_ACTIONS,\n            [QuickActionEnum.SETTINGS]: filterLoginGroup.canCurrentPeerWhitelistGroup() ? {\n                icon: this.state.settingsOpened ? <Back /> : <SettingsIcon/>,\n                enabled: true,\n                ref: React.createRef(),\n                onClick: () => this.setSettingsOpened(!this.state.settingsOpened),\n                isLoading: false\n            } : null,\n        }\n\n        // If we are currently viewing the settings, return only the settings action (back button)\n        if (this.state.settingsOpened)\n            return actions;\n\n        // If we are in viewer mode, return only Settings, Preview and Links\n        actions = {\n            ...actions,\n            [QuickActionEnum.PREVIEW]: canUserEditCurrentWorld() ? {\n                icon: isEditing ? <PreviewMode /> : <EditorMode />,\n                enabled: isWorldAuthorized(getCurrentWorldID()),\n                ref: React.createRef(),\n                onClick: () => this.setEditing(!this.props.isEditing),\n                isLoading: false\n            } : null,\n            [QuickActionEnum.DEEPSIGHT_LINKS]: {\n                icon: <Navigation/>,\n                enabled: true,\n                ref: React.createRef(),\n                isLoading: false,\n                onMouseEnter: () => this.setDeepSightLinksOpen(true),\n                onMouseLeave: () => this.setDeepSightLinksOpen(false),\n                showChildren: false\n            }\n        };\n\n        if (!isEditing)\n            return actions;\n\n        return {\n            ...actions,\n            [QuickActionEnum.SAVE]: {\n                icon: <CloudChecked innerColor={dark}/>,\n                enabled: canUserEditCurrentWorld(),\n                ref: React.createRef(),\n                onClick: () => {\n                    if (!canUserEditCurrentWorld())\n                        return;\n\n                    // notify user we are auto-saving\n                    Toast.showToast(<>{`${i18next.t(\"Don't worry, DeepSight auto-saves your work\")}.`}</>);\n\n                    saveWorld();\n                },\n                isLoading: false\n            },\n            [QuickActionEnum.UNDO]: {\n                icon: <Undo/>,\n                enabled: getUndoStackSize() > 0,\n                ref: React.createRef(),\n                onClick: () => undoCommand(),\n                isLoading: false\n            },\n            [QuickActionEnum.REDO]: {\n                icon: <Redo/>,\n                enabled: getRedoStackSize() > 0,\n                ref: React.createRef(),\n                onClick: () => redoCommand(),\n                isLoading: false\n            },\n            [QuickActionEnum.PRINT_ANCHORS]: {\n                icon: <PrinterIcon/>,\n                enabled: Boolean(getCurrentWorldID()),\n                ref: React.createRef(),\n                onClick: () => App.getInstance().openAnchorsDialog(),\n                isLoading: false\n            },\n            [QuickActionEnum.SHARE]: {\n                icon: <Share/>,\n                enabled: isWorldAuthorized(getCurrentWorldID()),\n                ref: React.createRef(),\n                onClick: () => this.setState({openWorldPermission: true}),\n                isLoading: false\n            },\n            [QuickActionEnum.RESET_VIEW]: {\n                icon: <Video/>,\n                enabled: true,\n                ref: React.createRef(),\n                isLoading: false,\n                onMouseEnter: () => this.setResetView(true),\n                onMouseLeave: () => this.setResetView(false),\n                showChildren: false\n            }\n        };\n    }\n\n    public updateActions() {\n        const actions: QuickActionsType = this.getActions(this.props.isEditing);\n        if (!isEqual(actions, this.state))\n            this.setState({ ...actions });\n    }\n\n    public startSaving(){\n        if (this.state[QuickActionEnum.SAVE]) {\n            this.setState((prevState: QuickActionsState) => ({\n                [QuickActionEnum.SAVE]: { ...prevState[QuickActionEnum.SAVE], isLoading: true }\n            }));\n        }\n    }\n\n    public enableAction(quickAction: QuickActionEnum, enabled: boolean = true){\n        if (this.state[quickAction]) {\n            this.setState((prevState: QuickActionsState) => ({\n                [quickAction]: { ...prevState[quickAction], enabled }\n            }));\n        }\n    }\n\n    public resetAction(quickAction: QuickActionEnum){\n        if (this.state[quickAction])\n            this.setState((prevState: QuickActionsState) => ({\n                [quickAction]: { ...prevState[quickAction], isLoading: false }\n            }));\n    }\n\n    public updateUndoRedo(){\n        this.enableAction(QuickActionEnum.UNDO, getUndoStackSize() > 0);\n        this.enableAction(QuickActionEnum.REDO, getRedoStackSize() > 0);\n    }\n\n    public updateWorldInfo() {\n        if (this.worldInfosRef.current && isWorldAuthorized(getCurrentWorldID()))\n            this.worldInfosRef.current?.updateWorldInfos();\n    }\n\n    public updateMemberList() {\n        this.worldPermissionsRef.current?.updateMemberList();\n    }\n\n    public updatePeer(peerID: bigint) {\n        this.updateActions();\n        this.worldPermissionsRef.current?.updatePeer(peerID);\n        this.avatarRef.current?.updatePeer(peerID);\n    }\n\n    private setSettingsOpened(settingsOpened: boolean) {\n        if (this.state.settingsOpened === settingsOpened)\n            return;\n\n        const app: App = App.getInstance();\n        const coordinator: FilterCoordinator = app.getFilterCoordinator();\n        const filterSettings: FilterSettings = app.getFilterSettings();\n\n        if (settingsOpened) {\n            if (!coordinator.isTopFilter(filterSettings))\n                coordinator.pushFilter(coordinator.getTopFilter(), filterSettings);\n            this.isEditingBeforeSettings = this.props.isEditing;\n        } else {\n            if (coordinator.isTopFilter(filterSettings))\n                coordinator.popFilter(filterSettings);\n            this.props.setEditing(this.isEditingBeforeSettings);\n        }\n\n        this.setState({ settingsOpened }, () => { this.updateActions() });\n    }\n\n    private setEditing(isEditing: boolean) {\n        this.props.setEditing(isEditing);\n\n        const app: App = App.getInstance();\n        const coordinator: FilterCoordinator = app.getFilterCoordinator();\n        const tagSelector: FilterSequenceTags = app.getFilterSequenceTags();\n\n        if (!isEditing)\n            document.documentElement.requestFullscreen().catch(() =>\n                { AdapterLog.WARN(\"Cannot enter fullscreen mode\"); });\n        else if (coordinator.isTopFilter(tagSelector))\n            coordinator.popFilter(tagSelector);\n    }\n\n    private setResetView(open: boolean) {\n        this.setState((prevState: QuickActionsState) => ({\n            [QuickActionEnum.RESET_VIEW]: {\n                ...prevState[QuickActionEnum.RESET_VIEW],\n                children: open ?\n                    <Popup>\n                        <PopupContainer>\n                            <div\n                                id=\"set-camera-view-top\"\n                                onClick={() => setCameraView(CameraView.TOP)}\n                            >\n                                <CubeViewTop />\n                                {i18next.t(\"Top\")}\n                            </div>\n                            <div\n                                id=\"set-camera-view-front\"\n                                onClick={() => setCameraView(CameraView.FRONT)}\n                            >\n                                <CubeViewFront />\n                                {i18next.t(\"Front\")}\n                            </div>\n                            <div\n                                id=\"set-camera-view-left\"\n                                onClick={() => setCameraView(CameraView.LEFT)}\n                            >\n                                <CubeViewLeft />\n                                {i18next.t(\"Left\")}\n                            </div>\n                        </PopupContainer>\n                    </Popup>\n                    :\n                    undefined\n            }\n        }))\n    }\n\n    private setDeepSightLinksOpen(open: boolean) {\n        this.setState((prevState: QuickActionsState) => ({\n            [QuickActionEnum.DEEPSIGHT_LINKS]: {\n                ...prevState[QuickActionEnum.DEEPSIGHT_LINKS],\n                children: open ?\n                    <Popup>\n                        <PopupContainer>\n                            <Box onClick={() => window.open(\"/console\")}>\n                                <GoToConsole />\n                                {i18next.t(\"Go to Console\")}\n                            </Box>\n                            <Box onClick={() => window.open(\"https://www.deepsight.ca/docs\")}>\n                                <GoToDocumentation />\n                                {i18next.t(\"Go to Documentation\")}\n                            </Box>\n                            <Box onClick={() => i18next.language === \"fr\" ?\n                                window.open(\"https://share.hsforms.com/1aLGMtpmbQL6fEf3QAPNh2Q5hyvr\") :\n                                window.open(\"https://share.hsforms.com/1SpHwxdURTgKLoy-2NhIAvw5hyvr\")}>\n                                <Tools />\n                                {i18next.t(\"Submit a ticket\")}\n                            </Box>\n                        </PopupContainer>\n                    </Popup>\n                    :\n                    undefined\n            }\n        }));\n    }\n\n    private getAllQuickActions(): [QuickActionEnum, Action][] {\n        const quickActions: [QuickActionEnum, Action][] = [];\n        Object.entries(this.state)\n            .forEach(([key, property]: [string, QuickActionsState[keyof QuickActionsState]]) => {\n                const quickAction: QuickActionEnum | null = UtilsShared.getCorrespondingEnumValue(QuickActionEnum, key);\n                if (!quickAction || typeof property === \"boolean\" || !property)\n                    return;\n                quickActions.push([quickAction, property]);\n            });\n        return quickActions;\n    }\n\n    public render(){\n        if (!this.props.currentPeerID)\n            return <></>\n\n        return (\n            <Wrapper id=\"quick_actions\" ref={this.wrapper}>\n                {/* keep outside the QuickActionWrapper CSS*/}\n                <IconContainer id=\"quick-action-Account\">\n                    <Avatar ref={this.avatarRef} currentPeerID={this.props.currentPeerID}/>\n                </IconContainer>\n                {this.getAllQuickActions().map(([name, action]: [QuickActionEnum, Action]) =>\n                    <Box\n                        id={\"quick-action-\" + name.split(' ').join('-')}\n                        key={\"quick_action_\" + name}\n                        data-is-enabled={action.enabled}\n                        onClick={(e: React.MouseEvent) => action.enabled && action.onClick?.(e)}\n                        onMouseOver={(e: React.MouseEvent) => action.enabled && action.onMouseOver?.(e)}\n                        onMouseEnter={(e: React.MouseEvent) => action.enabled && action.onMouseEnter?.(e)}\n                        onMouseLeave={(e: React.MouseEvent) => action.enabled && action.onMouseLeave?.(e)}\n                    >\n                        <ActionIcon\n                            key={name}\n                            name={name}\n                            icon={action.icon}\n                            ref={action.ref}\n                            isEnabled={action.enabled}\n                            isLoading={action.isLoading}\n                            children={action.children}\n                        />\n                    </Box>\n                )}\n                {!this.state.settingsOpened && <Box style={{display: \"flex\", alignItems: \"center\", gap: \"5px\"}}>\n                    <Tooltip\n                        followCursor\n                        title={Number(window.location.href.includes(\"session\")) ?\n                            i18next.t(\"You cannot change worlds during a world sharing session\") :\n                            i18next.t(\"World library\")}>\n                        <IconContainer\n                            id=\"quick-action-World-library\"\n                            disabled={Number(window.location.href.includes(\"session\"))}\n                            onClick={() => App.getInstance().openWorldLibrary()}>\n                            <World color={white} />\n                        </IconContainer>\n                    </Tooltip>\n                    <WorldInfos ref={this.worldInfosRef} />\n                </Box>}\n                {this.state.openWorldPermission &&\n                    <WorldPermissions\n                        ref={this.worldPermissionsRef}\n                        setOpenDialog={(open: boolean) => this.setState({ openWorldPermission: open })}\n                    />\n                }\n            </Wrapper>\n        )\n    }\n}\n", "import * as React from 'react';\nimport {white} from \"@root/react-components/src/values/colors/colors\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {Loading} from \"@root/react-components/src/logo/Loading\";\nimport i18next from \"i18next\";\nimport {Box, styled} from \"@mui/material\";\nimport {QuickActionEnum} from \"@root/Frontend/Studio/Views/QuickActions/QuickActions\";\n\nconst Icon = styled(Box)((props:{enabled: number})=>({\n    color: white,\n    opacity: props.enabled ? \"1\" : \"0.4\" ,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    \"& > svg, & > div\": {\n        height: \"24px\",\n        width: \"24px\",\n        fill: white\n    },\n    \"&:hover\": {\n        cursor: props.enabled ? \"pointer\" : \"default\"\n    }\n}));\n\nexport class ActionIcon extends React.Component {\n    state: { tooltipOpened: boolean } = { tooltipOpened: false };\n    props: {\n        name: QuickActionEnum,\n        icon: React.ReactElement,\n        isEnabled: boolean,\n        isLoading: boolean,\n        children?: React.ReactElement,\n    };\n\n    private getActionName(name: QuickActionEnum): string {\n        switch (name) {\n            case QuickActionEnum.UNDO: return i18next.t(name) + \" (CMD/CTRL+Z)\";\n            case QuickActionEnum.REDO: return i18next.t(name) + \" (CMD/CTRL+SHIFT+Z)\";\n            default: return i18next.t(name);\n        }\n    }\n\n    render(){\n        return (\n            <>\n                <Tooltip title={!this.props.children && this.getActionName(this.props.name)}\n                         followCursor open={this.state.tooltipOpened}>\n                    <Icon\n                        enabled={Number(this.props.isEnabled)}\n                        onMouseEnter={() => this.setState({ tooltipOpened: true })}\n                        onMouseLeave={() => this.setState({ tooltipOpened: false })}\n                        onClick={() => this.setState({ tooltipOpened: false })}>\n                        {this.props.isLoading ? <Loading /> : this.props.icon}\n                    </Icon>\n                </Tooltip>\n                {this.props.children}\n            </>\n        )\n    }\n}\n", "import React from \"react\";\nimport {white} from \"../values/colors/colors\";\n\nexport const CloudChecked = (props: {\n        innerColor: string\n    }) =>\n    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M20.16 11.2975C20.3137 10.8962 20.4 10.4575 20.4 10C20.4 8.0125 18.7875 6.4 16.8 6.4C16.0613 6.4 15.3713 6.625 14.8013 7.0075C13.7625 5.2075 11.8238 4 9.6 4C6.285 4 3.6 6.685 3.6 10C3.6 10.1012 3.60375 10.2025 3.6075 10.3037C1.5075 11.0425 0 13.045 0 15.4C0 18.3812 2.41875 20.8 5.4 20.8H19.2C21.8513 20.8 24 18.6512 24 16C24 13.6787 22.35 11.74 20.16 11.2975Z\" fill=\"currentColor\"/>\n        <path d=\"M17.2071 11.2071L11 17.4142L7.29291 13.7071L8.70712 12.2929L11 14.5858L15.7929 9.79291L17.2071 11.2071Z\" fill={props?.innerColor ? props.innerColor : white}/>\n    </svg>\n;\n", "import React from \"react\";\n\nexport const Undo = () =>\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n    <path style={{fill: \"currentColor\"}} d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm3.222 18.917c5.666-5.905-.629-10.828-5.011-7.706l1.789 1.789h-6v-6l1.832 1.832c7.846-6.07 16.212 4.479 7.39 10.085z\"/>\n</svg>;\n", "import React from \"react\";\n\nexport const Redo = () =>\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n    <path style={{fill: \"currentColor\"}} d=\"M12,2C6.5,2,2,6.5,2,12s4.5,10,10,10s10-4.5,10-10S17.5,2,12,2z M12,0c6.6,0,12,5.4,12,12s-5.4,12-12,12S0,18.6,0,12S5.4,0,12,0z M8.8,18.9c-5.7-5.9,0.6-10.8,5-7.7L12,13h6V7l-1.8,1.8C8.3,2.8,0,13.3,8.8,18.9z\"/>\n</svg>;", "import React from 'react';\n\nexport const CubeViews = () =>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 179.3 169.7\">\n        <g fill={\"currentColor\"}>\n            <polygon points=\"66.4,100 34.4,87.5 34.4,107.5 66.4,123 \t\"/>\n            <polygon points=\"144.9,87.5 112.9,100 112.9,123 144.9,107.5 \t\"/>\n            <path d=\"M168.4,27.4L95.5,1.1c-3.8-1.4-8-1.4-11.8,0L10.9,27.3C4.3,29.7,0,35.8,0,42.5v75.9c0,6.1,3.6,11.7,9.3,14.5\n\t\tL82.1,168c4.7,2.3,10.3,2.3,15,0l72.8-35.1c5.7-2.7,9.3-8.4,9.3-14.5V42.5C179.3,35.8,174.9,29.7,168.4,27.4z M78.4,142.1l-56-27\n\t\tV69.9l56,21.9V142.1z M156.9,115.1l-56,27V91.8l56-21.9V115.1z M156.9,46.6L156.9,46.6L89.6,72.9h0l-14.8-5.8L22.4,46.6v-0.4\n\t\tL56,34.1C72.8,28.1,89.6,22,89.6,22h0l67.2,24.3V46.6z\"/>\n            <polygon points=\"56,46.9 89.6,60.1 123.3,46.9 89.6,34.7 \t\"/>\n        </g>\n    </svg>\n;\n\nexport const CubeViewTop = () =>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 179.3 169.7\">\n        <g fill={\"currentColor\"}>\n            <path d=\"M168.4,27.4L95.5,1.1c-3.8-1.4-8-1.4-11.8,0L10.9,27.3C4.3,29.7,0,35.8,0,42.5v75.9c0,6.1,3.6,11.7,9.3,14.5\n\t\tL82.1,168c4.7,2.3,10.3,2.3,15,0l72.8-35.1c5.7-2.7,9.3-8.4,9.3-14.5V42.5C179.3,35.8,174.9,29.7,168.4,27.4z M156.9,46.6\n\t\tL89.6,72.9h0L56,59.8L22.4,46.6v-0.4L56,34.1C72.8,28.1,89.6,22,89.6,22h0l67.2,24.3V46.6z\"/>\n            <polygon points=\"56,46.9 89.6,60.1 123.3,46.9 89.6,34.7 \t\"/>\n        </g>\n    </svg>\n\n;\nexport const CubeViewFront = () =>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 179.3 169.7\">\n        <g fill={\"currentColor\"}>\n            <path d=\"M168.4,27.4L95.5,1.1c-3.8-1.4-8-1.4-11.8,0L10.9,27.3C4.3,29.7,0,35.8,0,42.5v75.9c0,6.1,3.6,11.7,9.3,14.5\n\t\tL82.1,168c4.7,2.3,10.3,2.3,15,0l72.8-35.1c5.7-2.7,9.3-8.4,9.3-14.5V42.5C179.3,35.8,174.9,29.7,168.4,27.4z M78.4,142.1l-56-27\n\t\tV69.9l56,21.9V142.1z\"/>\n            <polygon points=\"66.4,100 34.4,87.5 34.4,107.5 66.4,123 \t\"/>\n        </g>\n    </svg>\n\n;\nexport const CubeViewLeft = () =>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 179.3 169.7\">\n        <g fill={\"currentColor\"}>\n            <path  d=\"M10.9,27.4L83.7,1.1c3.8-1.4,8-1.4,11.8,0l72.8,26.3c6.5,2.4,10.9,8.4,10.9,15.2v75.9c0,6.1-3.6,11.7-9.3,14.5\n\t\tL97.1,168c-4.7,2.3-10.3,2.3-15,0L9.3,132.9c-5.7-2.7-9.3-8.4-9.3-14.5V42.5C0,35.8,4.3,29.7,10.9,27.4z M100.8,142.1l56-27V69.9\n\t\tl-56,21.9V142.1z\"/>\n            <polygon points=\"112.8,100 144.8,87.5 144.8,107.5 112.8,123 \t\"/>\n        </g>\n    </svg>\n\n;", "import * as React from 'react';\nimport i18next from \"i18next\";\nimport {\n    canUserEditCurrentWorld,\n    getCurrentWorldID,\n    isWorldEditable,\n    isWorldShared,\n    setWorldEditable,\n    setWorldShared\n} from \"Engine/AdapterWeb/AdapterStudio\";\nimport {\n    primaryFontMedium,\n    primaryFontXLarge,\n} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Button} from '@root/react-components/src/buttons/Button';\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {SegmentedControl} from \"@root/react-components/src/inputs/SegmentedControl\";\nimport {copyToClipBoard} from \"@utils/utils\";\nimport {dark, lighterDark} from \"@root/react-components/src/values/colors/colors\";\nimport {Role} from \"@backend/Types/Role\";\nimport {InputSelect} from \"@root/react-components/src/inputs/InputSelect\";\nimport {Box} from \"@mui/material\";\nimport {WorldMemberList} from \"@root/Frontend/Studio/Views/WorldPermissions/WorldMemberList\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\n\ninterface WorldPermissionProps { setOpenDialog: (open: boolean) => void }\n\ninterface WorldPermissionsState { isPublic: boolean; isPublicEditable: boolean; }\n\nexport class WorldPermissions extends SmartComponent {\n    props: WorldPermissionProps;\n    state: WorldPermissionsState = { isPublic: isWorldShared(), isPublicEditable: isWorldEditable() };\n    private readonly worldMemberListRef: React.RefObject<WorldMemberList> = React.createRef<WorldMemberList>();\n\n    // local to string method to assure i18next is called\n    static worldRoleToString(worldRole: Role): string{\n        switch (worldRole){\n            case Role.VIEWER: return i18next.t(\"Viewer\");\n            case Role.EDITOR: return i18next.t(\"Editor\");\n            default: return worldRole;\n        }\n    }\n\n    public updateMemberList() { this.worldMemberListRef.current?.updateMemberList(); }\n\n    public updatePeer(peerID: bigint) { this.worldMemberListRef.current?.updatePeer(peerID); }\n\n    private getSharableLink(): string {\n        // construct link to access world directly\n        const url: URL = new URL(window.location.href);\n        return `${url.protocol}//${url.host}/world/${getCurrentWorldID()}`;\n    }\n\n    render() {\n        const currentPeerCanEditWorld: boolean = canUserEditCurrentWorld();\n        const isPublic: boolean = isWorldShared();\n\n        return (\n            <Dialog\n                id=\"world-permissions\"\n                size={DialogSize.md}\n                closeOnClickOutside\n                innerStyle={{ boxSizing: \"unset\" }}\n                onClose={() => this.props.setOpenDialog(false)}\n            >\n                <WorldMemberList ref={this.worldMemberListRef} closeDialog={() => this.props.setOpenDialog(false)} />\n\n                {/* Public/Editable section */}\n                <Box style={{font: primaryFontXLarge, marginTop: 12}}>{i18next.t(\"General Access\")}</Box>\n                <Box style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\"}}>\n                    <Box style={{ width: \"400px\" }}>\n                        <SegmentedControl\n                            dark\n                            defaultIndex={isPublic ? 1 : 0}\n                            value={isPublic ? 1 : 0}\n                            options={[\"Limited\", \"Public\"]}\n                            onChange={(index: number) => {\n                                setWorldShared(index === 1);\n                                this.setState({isPublic: index === 1})\n                            }}\n                            disabled={!currentPeerCanEditWorld}\n                        />\n                    </Box>\n                    <Button\n                        color=\"dark\"\n                        variant=\"outlined\"\n                        disabled={!canUserEditCurrentWorld()}\n                        onClick={() => copyToClipBoard(this.getSharableLink())}\n                    >\n                        {i18next.t(\"Copy Link\")}\n                    </Button>\n                </Box>\n\n                { isPublic &&\n                    <InputSelect\n                        dark\n                        options={Object.values(Role).map((role: Role) => WorldPermissions.worldRoleToString(role))}\n                        defaultValue={this.state.isPublicEditable ? WorldPermissions.worldRoleToString(Role.EDITOR) :\n                                                                    WorldPermissions.worldRoleToString(Role.VIEWER) }\n                        onChange={(value: string, index: number) => {\n                            setWorldEditable(index === 1);\n                            this.setState({isPublicEditable: index === 1})\n                        }}\n                        disabled={!currentPeerCanEditWorld}\n                        label={i18next.t(\"Someone with the link is considered a\")}\n                    />\n                }\n\n                <Box style={{color: lighterDark, marginTop: 3, marginBottom: 6}}>\n                    { isPublic ?\n                        <Box>\n                            {i18next.t(\"Anyone with the link can\")}&nbsp;\n                            <span style={{font: primaryFontMedium, color: dark}}>\n                                {this.state.isPublicEditable ? i18next.t(\"edit\") : i18next.t(\"view\")}\n                            </span>&nbsp;\n                            {i18next.t(\"this World\")}.\n                        </Box>\n                        :\n                        <Box> {i18next.t(\"Only Users shared with can access this World\")}. </Box>\n                    }\n                </Box>\n                {!canUserEditCurrentWorld() &&\n                    <Box style={{ font: primaryFontMedium, userSelect: \"auto\" }}>\n                        {i18next.t(\"World ID\")} : {getCurrentWorldID().toString()}\n                    </Box>\n                }\n                <input\n                    id=\"shareable-link\"\n                    style={{display:\"none\", userSelect: \"auto\"}}\n                    type={\"text\"}\n                    value={this.getSharableLink()}\n                    readOnly\n                />\n\n                <Box style={{ width: \"100%\", display: \"flex\", justifyContent: \"end\"}}>\n                    <Button\n                        variant=\"outlined\"\n                        id=\"world-permission-close-btn\"\n                        onClick={() => this.props.setOpenDialog(false)}\n                    >\n                        {i18next.t(\"Close\")}\n                    </Button>\n                </Box>\n            </Dialog>\n        );\n    }\n}\n", "import React from \"react\";\n\n// extend this component for any view needing async data loading\n// it will prevent from setting state on unmounted component\nexport abstract class SmartComponent<P = {}> extends React.Component<P> {\n    protected mounted: boolean = false;\n\n    // we override this to provide the breadcrumbs to the parent view\n    override componentDidMount() {\n        this.mounted = true;\n    }\n\n    // prevent any setState if component is unmounted\n    override setState(state: any, callback?: () => void) {\n        if(!this.mounted)\n            return;\n\n        super.setState(state, callback);\n    }\n\n    override componentWillUnmount() {\n        this.mounted = false;\n    };\n}", "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Label} from \"../misc/Label\";\nimport {dark, darkenGrey, grey, white} from \"../values/colors/colors\";\nimport {primaryFontMedium} from \"../values/fonts/fonts\";\nimport i18next from \"i18next\";\n\nconst Wrapper = styled(\"div\")`\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n`;\n\nconst Input = styled(\"div\")<{\n    itemCount: number,\n    dark: boolean,\n    disabled: boolean\n}>`\n    width: 100%;\n    border: 1px solid ${props => \n            props.disabled ? darkenGrey :\n                props.dark ? dark : white};\n    border-radius: 6px;\n    display: flex;\n    font: ${primaryFontMedium};\n    & > div {\n        width: ${props => 100 / props.itemCount}%;\n    }\n    & > div.active{\n        background-color: ${props => \n                props.disabled ? darkenGrey :\n                        props.dark ? dark : white};\n        color: ${props => \n                props.disabled ? grey :\n                    props.dark ? white : dark};\n    }\n`;\n\nconst Option = styled(\"div\")<{\n    dark: boolean,\n    disabled: boolean\n}>`\n    height: 100%;\n    border-radius: 3px;\n    text-align: center;\n    color: ${props =>\n            props.disabled ? darkenGrey :\n                    props.dark ? dark : white};\n    background-color: unset;\n    padding: 3px 0;\n    box-sizing: border-box;\n    &:hover{\n        cursor: pointer;\n    }\n`;\n\nexport class SegmentedControl extends React.Component{\n    props: {\n        optionsID?: string;\n        label?: string,\n        defaultValue?: string,\n        defaultIndex?: number,\n        dark?: boolean,\n        options: string[],\n        readOnly?: boolean,\n        disabled?: boolean,\n        value?: number\n        onChange(index: number): void,\n    }\n    inputRef: React.RefObject<HTMLDivElement> = React.createRef();\n    state: {\n        value: number\n    } = {\n        value: typeof this.props.defaultIndex === \"number\" ? this.props.defaultIndex :\n            this.props.defaultValue ? this.props.options.indexOf(this.props.defaultValue) : 0\n    }\n\n    componentDidUpdate() {\n        if(this.props.value !== this.state.value)\n            this.setState({ value: this.props.value });\n    }\n\n    setValue(index: number){\n        this.setState({value: index});\n    }\n\n    render(){\n        return <Wrapper ref={this.inputRef}>\n            {\n                (this.props.label) ?\n                    <Label dark={this.props.dark}>\n                        <span style={{display: \"block\", marginBottom: \"3px\"}}>{this.props.label}</span>\n                    </Label> : <></>\n            }\n            <Input disabled={this.props.disabled} dark={this.props.dark}\n                   itemCount={this.props.options.length} >\n                {\n                    this.props.options.map((option, index) => (\n                        <Option\n                            disabled={this.props.disabled}\n                            dark={this.props.dark}\n                            key={option + \"-\" + index}\n                            id={`${this.props.optionsID ?? \"\"}${option}-tab`}\n                            className={(this.state.value === index ? \"active\" : \"\") + \" option \" + option + \"-\" + index}\n                            onClick={() => {\n                                if(this.props.disabled)\n                                    return;\n                                this.setValue(index);\n                                this.props.onChange(index);\n                            }}\n                        >{ i18next.t(option)?? option }</Option>\n                    ))\n                }\n            </Input>\n        </Wrapper>\n    }\n}\n", "import * as React from \"react\";\nimport styled from 'styled-components';\nimport {dark, darkenWhite, lighterDark, white} from \"../values/colors/colors\";\nimport {Caret} from \"../icons/Caret\";\nimport {Label} from \"../misc/Label\";\nimport {secondaryFontMedium} from \"../values/fonts/fonts\";\n\n\nconst Wrapper = styled(\"div\")<{\n    dark: boolean\n}>`\n    border-bottom: 1px solid ${props => props.dark ? dark : white};\n    padding: 6px 2px 0 2px;\n    position: relative;\n    width: 100%;\n    box-sizing: border-box;\n    text-align: left;\n  display: flex;\n  flex-direction: column;\n`;\n\nconst Select = styled(\"select\")<{\n        dark: boolean,\n        disabled: boolean\n}>`   \n    position: relative;\n    z-index: 10;\n    width: 100%;\n    background: none;\n    color: ${props =>\n        props.dark ?\n            props.disabled ? lighterDark : dark :\n            props.disabled ? darkenWhite : white\n    };\n    font: ${secondaryFontMedium};\n    box-sizing: border-box;\n    border: 0;\n    outline: none;\n    -webkit-appearance: none;\n    -moz-appearance: none;\n    text-indent: 1px;\n    text-overflow: '';\n    &::-ms-expand {\n        display: none;\n    }\n    &:hover{\n        cursor: ${props => props.disabled?\"default\":\"pointer\"};\n    }\n`;\n\nconst Icon = styled(\"div\")\n    <{\n        show: boolean\n    }>`\n    display:${props => props.show?\"block\":\"none\"};\n    bottom: 3px;\n    height: 15px;\n    width: 15px;\n    transform: rotate(90deg);\n    position: absolute;\n    right: 0;\n    & > svg{\n        height: 100%;\n        width: 100%;\n    }\n`;\n\nexport const InputSelect = React.forwardRef((props: {\n    label?: string,\n    dark?: boolean,\n    defaultValue?: string,\n    disabled?: boolean,\n    disableFirst?: boolean,\n    options?: string[],\n    onChange?: Function,\n    disableDefaultOptions? :boolean,\n    onClick?: (e: React.MouseEvent) => void,\n    value?: string\n} = {\n    label: \"InputSelect\",\n    dark: true,\n    defaultValue: \"Select Something\",\n    disabled: false,\n    disableFirst: false,\n    options: [\"Option 1\", \"Option 2\", \"Option 3\"],\n    onChange: () => {}\n}, ref: React.RefObject<HTMLSelectElement> ) => {\n    return (\n        <Wrapper dark={props.dark ?? true}>\n            <div style={{marginBottom: 2}}><Label dark={props.dark}><span>{props.label}</span></Label></div>\n            <Select\n                ref={ref}\n                dark={props.dark ?? true}\n                defaultValue={props.defaultValue}\n                disabled={props.disabled ?? false}\n                onMouseDown={e => {\n                    if(props.disableDefaultOptions)\n                        e.preventDefault();\n                }}\n                onClick={(e: React.MouseEvent) => {\n                    if(props.onClick)\n                        props.onClick(e);\n\n                    e.stopPropagation();\n                }}\n                onChange={e => {\n                    props.onChange(e.target.value, e.target.selectedIndex);\n                }}\n                value={props.value}\n            >\n                {\n                    props.options?.map((option, index) => {\n                        return (\n                            <option\n                                key={index}\n                                value={option}\n                                disabled={index === 0 && props.disableFirst}\n                            >\n                                {option}\n                            </option>\n                        )\n                    })\n                }\n            </Select>\n            <Icon show={!props.disabled}>\n                <Caret/>\n            </Icon>\n        </Wrapper>\n    )\n});\n", "import React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function Caret(): JSX.Element {\n    return (\n        <SvgIcon xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 192 512\">\n            <path fill=\"currentColor\"\n                  d=\"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"/>\n        </SvgIcon>\n    );\n}\n", "import * as React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Role} from \"@backend/Types/Role\";\nimport {\n    canUserEditCurrentWorld,\n    getAuthorizedEmailRole,\n    getAuthorizedEmails,\n    getCurrentWorldID,\n    getOwnerID,\n    getPeerFromUsername,\n    getPeerGroups,\n    getUsername,\n    getWorldGroupRole,\n    getWorldGroups,\n    getWorldOwnerType,\n    getWorldPeers,\n    leaveWorld,\n    queryPeerMetadata,\n    removeEmailFromWorld,\n    removePeerFromWorld,\n    removeWorldGroup,\n    setWorldGroupRole,\n    setWorldMemberRole\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport i18next from \"i18next\";\nimport {primaryFontXLarge, secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {GroupItem} from \"@root/Frontend/Studio/Views/WorldPermissions/GroupItem\";\nimport {PeerItem} from \"@root/Frontend/Studio/Views/WorldPermissions/PeerItem\";\nimport {lightWhite, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {AddMemberInput} from \"@root/Frontend/Studio/Views/WorldPermissions/AddMemberInput\";\nimport {RemoveMember} from \"@root/Frontend/Studio/Views/WorldPermissions/RemoveMember\";\nimport {intersection, isEqual} from \"lodash\";\n\nconst ListContainer = styled(Box)({\n    padding: \"8px\",\n    marginTop: \"8px\",\n    backgroundColor: primary,\n    borderRadius: \"16px\",\n});\n\nconst List = styled(Box)({\n    overflow: \"auto\",\n    maxHeight: \"calc(100vh - 400px)\",\n    padding: \"8px\",\n    \"&\":{\n        \"&::-webkit-scrollbar\": { width: \"6px\", height: \"10px\" },\n        \"&::-webkit-scrollbar-thumb\": { background: white, borderRadius: \"10px\", border: \"solid 3px transparent\" },\n        \"&::-webkit-scrollbar-track\": {\n            width: 0,\n            backgroundColor: lightWhite,\n            borderRadius: \"10px\",\n            marginBlockEnd: \"1.3em\",\n        },\n    }\n});\n\ninterface WorldMemberListState {\n    ownerEmail: string;\n    newMemberInput: string;\n    sharedGroups: Map<bigint, Role>;\n    sharedPeers: Map<string, Role>; ///< Map of username -> peerID (peerID is 0 if no account yet!)\n    groupToRemove: bigint;\n    peerToRemove: string;\n}\n\nexport class WorldMemberList extends React.Component {\n\n    props: {closeDialog: () => void}\n    state: WorldMemberListState = {\n        ownerEmail: \"\",\n        newMemberInput: \"\",\n        sharedGroups: new Map<bigint, Role>(),\n        sharedPeers: new Map<string, Role>(),\n        groupToRemove: BigInt(0),\n        peerToRemove: \"\"\n    }\n\n    componentDidMount() {\n        const worldID: bigint = getCurrentWorldID();\n        if (!worldID)\n            return;\n\n        // gather all the peers whose usernames need to be loaded, world viewers can only see the owner\n        const worldPeerIDs: Set<bigint> = canUserEditCurrentWorld() ? getWorldPeers(worldID) : new Set();\n        if (getWorldOwnerType(worldID) === OwnerType.PEER)\n            worldPeerIDs.add(getOwnerID(worldID));\n\n        for (const peerID of worldPeerIDs)\n            queryPeerMetadata(peerID);\n\n        this.updateMemberList();\n    }\n\n    public updatePeer(peerID: bigint) {\n        if (!peerID)\n            return;\n\n        const peerUsername: string = getUsername(peerID);\n        if (peerID === getOwnerID(getCurrentWorldID()))\n            this.setState({ ownerEmail: peerUsername });\n\n        const role: Role | null = getAuthorizedEmailRole(getCurrentWorldID(), peerUsername);\n        if (!role || this.state.sharedPeers.get(peerUsername) === role)\n            return;\n\n        this.setState((prevState: WorldMemberListState) =>\n            ({ sharedPeers: new Map([...prevState.sharedPeers, [peerUsername, role] ])}));\n    }\n\n    public updateMemberList() {\n        const worldID: bigint = getCurrentWorldID();\n        if (!worldID)\n            return;\n\n        let ownerEmail: string = \"\";\n        const ownerID: bigint = getOwnerID(worldID);\n        const ownerType: OwnerType = getWorldOwnerType(worldID);\n        if (ownerType === OwnerType.PEER)\n            ownerEmail = getUsername(ownerID);\n\n        // peer world editors can see all members\n        if (canUserEditCurrentWorld()) {\n            const sharedGroups: Map<bigint, Role> = this.getSharedGroups(worldID);\n            const sharedPeers: Map<string, Role> = this.getSharedPeers(worldID);\n\n            if (this.state.ownerEmail === ownerEmail && isEqual(this.state.sharedGroups, sharedGroups) &&\n                isEqual(this.state.sharedPeers, sharedPeers))\n                return;\n\n            this.setState({ ownerEmail, sharedGroups, sharedPeers });\n            return;\n        }\n\n        // get the peers that have access to the world\n        const sharedPeers: Map<string, Role> = new Map<string, Role>();\n        // get the groups that have access to the world\n        const sharedGroups: Map<bigint, Role> = new Map<bigint, Role>();\n\n        const currentPeerID: bigint = getCurrentPeerID();\n        const currentPeerUsername: string = getUsername(currentPeerID);\n\n        // if the peer is a group member, we can add it to the peers list\n        if ([...getWorldPeers(worldID)].includes(currentPeerID))\n            // by using canUserEditCurrentWorld() we are dodging the null check of getAuthorizedEmailRole\n            sharedPeers.set(currentPeerUsername, canUserEditCurrentWorld() ? Role.EDITOR : Role.VIEWER);\n\n        // peer world viewers can see who the owner is (group owners are part of the sharedGroups collection)\n        if (ownerType === OwnerType.PEER) {\n            if (ownerEmail)\n                sharedPeers.set(ownerEmail, Role.EDITOR);\n        } else\n            sharedGroups.set(getOwnerID(worldID), Role.EDITOR);\n\n        const worldAndPeerGroupIDs: bigint[] =\n            intersection([...getPeerGroups(currentPeerID)], [...getWorldGroups(worldID)]);\n\n        // a peer world viewer can only see the group they're part of\n        for (const groupID of worldAndPeerGroupIDs)\n            sharedGroups.set(groupID, getWorldGroupRole(worldID, groupID) ?? Role.VIEWER);\n\n        this.setState({ ownerEmail, sharedGroups, sharedPeers });\n    }\n\n    private getSharedGroups(worldID: bigint): Map<bigint, Role> {\n        const worldGroupIDs: Set<bigint> = getWorldGroups(worldID);\n        const sharedGroups: Map<bigint, Role> = new Map<bigint, Role>();\n        for (const groupID of worldGroupIDs) {\n            const role: Role = getWorldGroupRole(worldID, groupID) ?? Role.VIEWER;\n            sharedGroups.set(groupID, role);\n        }\n\n        return sharedGroups;\n    }\n\n    private getSharedPeers(worldID: bigint): Map<string, Role> {\n        const sharedPeers: Map<string, Role> = new Map<string, Role>();\n\n        const peerWorldEmails: string[] = [...getAuthorizedEmails(worldID)];\n        for (const peerID of getWorldPeers(worldID)) {\n            const username: string = getUsername(peerID);\n            if (username)\n                peerWorldEmails.push(username);\n        }\n\n        for (const email of peerWorldEmails) {\n            const role: Role = getAuthorizedEmailRole(getCurrentWorldID(), email) ?? Role.VIEWER;\n            sharedPeers.set(email, role);\n        }\n\n        return sharedPeers;\n    }\n\n    private removePeer() {\n        const peerEmail: string = this.state.peerToRemove;\n        if (getUsername(getCurrentPeerID()) === peerEmail && leaveWorld(getCurrentWorldID())) {\n            this.props.closeDialog();\n            return;\n        }\n\n        const sharedPeers: Map<string, Role> = this.state.sharedPeers;\n        sharedPeers.delete(this.state.peerToRemove);\n        const peerID: bigint = getPeerFromUsername(peerEmail);\n\n        this.setState({ error: \"\", sharedPeers, peerToRemove: \"\" }, () => {\n            if (peerID)\n                removePeerFromWorld(peerID);\n            else\n                removeEmailFromWorld(peerEmail);\n        });\n    }\n\n    private removeGroup() {\n        const groupID: bigint = this.state.groupToRemove;\n        const worldID: bigint = getCurrentWorldID();\n        const sharedGroups: Map<bigint, Role> = this.state.sharedGroups;\n        sharedGroups.delete(groupID);\n        this.setState({ error: \"\", sharedGroups, groupToRemove: BigInt(0) },\n            () => removeWorldGroup(worldID, groupID));\n    }\n\n    private setGroupRole(groupID: bigint, role: Role) {\n        const sharedGroups: Map<bigint, Role> = this.state.sharedGroups;\n        sharedGroups.set(groupID, role);\n        this.setState({ error: \"\", sharedGroups }, () => setWorldGroupRole(groupID, role));\n    }\n\n    render() {\n        return (\n            <Box style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\"}}>\n                <Box style={{font: primaryFontXLarge}}> {i18next.t(\"Share your World\")} </Box>\n                {canUserEditCurrentWorld() &&\n                    <AddMemberInput\n                        sharedGroupIDs={[...this.state.sharedGroups.keys()]}\n                        setGroupRole={(groupID: bigint, role: Role) => this.setGroupRole(groupID, role)}\n                        addPeer={(peerUsername: string) =>\n                            this.setState((prevState: WorldMemberListState) =>\n                                ({ sharedPeers: new Map([...prevState.sharedPeers, [peerUsername, Role.VIEWER] ])}))}\n                    />\n                }\n                <ListContainer>\n                    <List>\n                        { this.state.sharedGroups.size > 0 &&\n                                <>\n                                    <Box style={{font: secondaryFontLarge, color: white, paddingBottom: \"4px\"}}>\n                                        {i18next.t(\"Shared with Groups\")}\n                                    </Box>\n                                    {[...this.state.sharedGroups].map(([groupID, role]) => {\n                                        if (this.state.groupToRemove === groupID)\n                                            return (\n                                                <RemoveMember\n                                                    key={\"group-\" + groupID}\n                                                    closeDialog={() => this.setState({ groupToRemove: BigInt(0) })}\n                                                    peerUsername={\"\"}\n                                                    groupID={this.state.groupToRemove}\n                                                    removePeer={async () => {}}\n                                                    removeGroup={() => this.removeGroup()}\n                                                />\n                                            )\n\n                                        return (\n                                            <GroupItem\n                                                key={\"group-\" + groupID}\n                                                groupID={groupID}\n                                                isOwner={getWorldOwnerType(getCurrentWorldID()) === OwnerType.GROUP &&\n                                                    groupID === getOwnerID(getCurrentWorldID())}\n                                                currentPeerHasAccess={canUserEditCurrentWorld()}\n                                                groupRole={role}\n                                                onChangeRole={(role: Role) => this.setGroupRole(groupID, role)}\n                                                onRemove={() => this.setState({ groupToRemove: groupID })}\n                                            />\n                                        )\n                                    })}\n                                </>\n                        }\n\n                        { this.state.sharedPeers.size > 0 &&\n                            <>\n                                <Box style={{font: secondaryFontLarge, color: white, paddingBottom: \"4px\"}}>\n                                    {i18next.t(\"Shared with Users\")}\n                                </Box>\n                                {[...this.state.sharedPeers.entries()].map(([peerEmail, role]) => {\n                                    if (this.state.peerToRemove && this.state.peerToRemove === peerEmail)\n                                        return (\n                                            <RemoveMember\n                                                key={peerEmail}\n                                                closeDialog={() => this.setState({ peerToRemove: BigInt(0) })}\n                                                peerUsername={this.state.peerToRemove}\n                                                groupID={BigInt(0)}\n                                                removePeer={() => this.removePeer()}\n                                                removeGroup={async () => {}}\n                                            />\n                                        )\n\n                                    return (\n                                        <PeerItem\n                                            key={peerEmail}\n                                            peerEmail={peerEmail}\n                                            isOwner={getWorldOwnerType(getCurrentWorldID()) === OwnerType.PEER &&\n                                                peerEmail === this.state.ownerEmail}\n                                            peerRole={role}\n                                            onChangeRole={(worldRole: Role) => setWorldMemberRole(peerEmail, worldRole)}\n                                            onRemove={() => this.setState({\n                                                peerToRemove: peerEmail\n                                            })}\n                                        />\n                                    )\n                                })}\n                            </>\n                        }\n                    </List>\n                </ListContainer>\n            </Box>\n        )\n    }\n}\n", "import {SmartComponent} from \"@utils/SmartComponent\";\nimport React from \"react\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {ListItem} from \"./ListItem\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {RadioButtons} from \"@root/Frontend/Console/components/RadioButtons\";\nimport {WorldPermissions} from \"@root/Frontend/Studio/Views/WorldPermissions/WorldPermissions\";\nimport {Role} from \"@backend/Types/Role\";\nimport i18next from \"i18next\";\nimport {getCurrentWorldID, getOwnerID, getWorldOwnerType} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Box} from \"@mui/material\";\n\nexport class GroupItem extends SmartComponent {\n    props: {\n        groupID: bigint,\n        isOwner: boolean,\n        groupRole: Role,\n        currentPeerHasAccess: boolean,\n        onChangeRole(role: Role): void,\n        onRemove(): void\n    }\n    state: {\n        name: string\n    } = {\n        name: \"\"\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const group = await App.getInstance().dataSourceGroups.getGroup(this.props.groupID);\n        this.setState({name: group.Name});\n    }\n\n    render() {\n        if (this.state.name === null)\n            return <Box className={\"loading\"}><CenteredLoading /></Box>;\n\n        const worldID: bigint = getCurrentWorldID();\n        const rolesArray: Role[] = Object.values(Role);\n        return (\n            <ListItem>\n                <Box>\n                    <img src={`https://secure.gravatar.com/avatar/${this.props.groupID.toString()}?s=80&d=identicon`}\n                         crossOrigin=\"anonymous\"/>\n                    <Box className={\"group-name\"}>{this.state.name}</Box>\n                </Box>\n                {getWorldOwnerType(worldID) === OwnerType.GROUP && this.props.groupID === getOwnerID(worldID) ?\n                    <>{i18next.t(\"Owner\")}</>\n                    :\n                    this.props.currentPeerHasAccess ?\n                        <>\n                            <Box style={{width: 90, marginRight: 6}}>\n                                <RadioButtons\n                                    options={rolesArray.map(role => WorldPermissions.worldRoleToString(role))}\n                                    defaultIndex={rolesArray.indexOf(this.props.groupRole)}\n                                    onChange={(index: number) => this.props.onChangeRole(rolesArray[index])}\n                                />\n                            </Box>\n                            <Button\n                                id=\"remove-permission-group\"\n                                color=\"error\"\n                                size=\"small\"\n                                onClick={this.props.onRemove}\n                            >\n                                {i18next.t(\"Remove\")}\n                            </Button>\n                        </>\n                        :\n                        <></>\n                }\n            </ListItem>\n        )\n    }\n}\n", "import React, {ReactElement} from \"react\";\nimport styled from \"styled-components\";\nimport {darkenWhite, lightWhite} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst Wrapper = styled.div`\n    background-color: ${lightWhite};\n    border: 2px solid ${darkenWhite};\n    border-radius: 12px;\n    height: 66px;\n    padding: 0px 12px;\n    width: 100%;\n    margin-bottom: 12px;\n    box-sizing: border-box;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    \n    & > div:first-child{\n        width: 60%;\n        display: flex;\n        align-items: center;\n        & > img {\n            height: 25px;\n            width: 25px;\n            min-width: 25px;\n            overflow: hidden;\n            border-radius: 50%;\n            margin-right: 6px;\n            object-fit: cover;\n        }\n        font: ${primaryFontLarge};\n        & > div {\n            max-width: 150px;\n            width: 100%;\n            overflow: hidden;\n            text-overflow: ellipsis;\n            white-space: nowrap;\n        }\n    }\n    & > div:last-child {\n        display: flex;\n        align-items: center;\n    }\n    \n    & > .loading {\n        width: 100%!important;\n        margin-right: 0;\n        & > div{\n            width: 100%!important;\n            max-width: unset!important;\n            height: 30px;\n        }\n    }\n`;\n\nexport function ListItem(props: {children: ReactElement | ReactElement[]}) {\n    return <Wrapper>\n        {props.children}\n    </Wrapper>\n}\n", "import React from \"react\";\nimport styled from \"styled-components\";\nimport {grey, lightDark, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst Wrapper = styled.div<{disabled: boolean}>`\n    width: 100%;\n    height: 100%;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    \n    & > div {\n        font: ${secondaryFontMedium};\n        color: ${lightDark};\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        cursor: ${props => props.disabled ? \"not-allowed\": \"pointer\"};\n        & > div:first-child {\n            margin-bottom: 6px;\n        }\n        & > div:last-child {\n            height: 12px;\n            width: 12px;\n            border: 2px solid ${props => props.disabled ? grey : primary};\n            border-radius: 50%;\n            overflow: hidden;\n            & > div {\n                height: 100%;\n                width: 100%;\n            }\n        }\n    }\n    \n    & .active {\n        background-color: ${props => props.disabled ? grey : primary};\n    }\n`;\n\nexport class RadioButtons extends React.Component {\n    props: {\n        options: string[],\n        defaultIndex: number,\n        onChange(index: number): void,\n        disabled: boolean\n    }\n\n    state: {activeIndex: number} = {activeIndex: this.props.defaultIndex}\n\n    setActiveIndex(index: number): void {\n        if (this.props.disabled)\n            return;\n\n        this.setState({activeIndex: index});\n\n        if (this.props.onChange)\n            this.props.onChange(index);\n    }\n\n    render() {\n        return (\n            <Wrapper disabled={this.props.disabled}>\n                {this.props.options.map((option, index) =>\n                    <div\n                        id={`option-${option.toLowerCase()}`}\n                        key={`option-${index}`}\n                        onClick={ () => this.setActiveIndex(index)}\n                    >\n                        <div> {option} </div>\n                        <div> <div className={index === this.state.activeIndex ? \"active\" : \"\"}/> </div>\n                    </div>\n                )}\n            </Wrapper>\n        );\n    }\n}", "import React from \"react\";\nimport {ListItem} from \"@root/Frontend/Studio/Views/WorldPermissions/ListItem\";\nimport {RadioButtons} from \"@root/Frontend/Console/components/RadioButtons\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Role} from \"@backend/Types/Role\";\nimport {WorldPermissions} from \"@root/Frontend/Studio/Views/WorldPermissions/WorldPermissions\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport i18next from \"i18next\";\nimport { getCurrentPeerID } from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport {\n    canUserEditCurrentWorld,\n    getUsername\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Box} from \"@mui/material\";\n\nexport class PeerItem extends React.Component {\n    props: {\n        peerEmail: string,\n        isOwner: boolean,\n        peerRole: Role,\n        onChangeRole(role: Role): void,\n        onRemove(): void\n    }\n\n    renderPeerRoleOptions() {\n        if (!this.props.peerRole || !this.props.peerEmail.length) {\n            return (<div className={\"loading\"} style={{maxHeight: 56}}>\n                <CenteredLoading />\n            </div>)\n        }\n        return <div style={{width: 90}}>\n            <RadioButtons\n                options={Object.values(Role).map(role => WorldPermissions.worldRoleToString(role))}\n                defaultIndex={Object.values(Role).indexOf(this.props.peerRole)}\n                onChange={(index: number) => this.props.onChangeRole(Object.values(Role)[index])}\n            />\n        </div>;\n    }\n\n    render() {\n        const isSelf: boolean = this.props.peerEmail === getUsername(getCurrentPeerID());\n        const canPeerEditWorld: boolean = canUserEditCurrentWorld();\n\n        return (\n            <ListItem>\n                <>\n                    {/* Section 1 - Peer Info */}\n                    <Box>\n                        <img src={`https://secure.gravatar.com/avatar/${UtilsShared.md5(this.props.peerEmail)}?s=80&d=identicon`}\n                             crossOrigin=\"anonymous\"/>\n                        <Box className={\"peer-name\"} style={{maxWidth:\"345px\"}}>{this.props.peerEmail}</Box>\n                    </Box>\n\n                    {/* Section 2 - Peer Role */}\n                    { (!this.props.isOwner && !isSelf && canPeerEditWorld) && this.renderPeerRoleOptions() }\n\n                    {/* Section 3 - Owner Text OR Leave/Remove Button */}\n                    { this.props.isOwner\n                        ? <Box>{i18next.t(\"Owner\")}</Box>\n                        : (isSelf || canPeerEditWorld) &&\n                        <Box>\n                            <Button\n                                id={isSelf ? \"leave-world\" : \"remove-permission-peer\"}\n                                color=\"error\"\n                                size=\"small\"\n                                onClick={this.props.onRemove}>\n                                {isSelf ? i18next.t(\"Leave\") : i18next.t(\"Remove\")}\n                            </Button>\n                        </Box>\n                    }\n                </>\n            </ListItem>\n        )\n    }\n}\n", "import React from \"react\"\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport i18next from \"i18next\";\nimport {Role} from \"@backend/Types/Role\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Box} from \"@mui/material\";\nimport {\n    canUserEditCurrentWorld, setWorldMemberRole\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Group} from \"@backend/Types/Group\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {DataSourceGroups} from \"@root/Frontend/DataSources/DataSourceGroups\";\nimport isEqual from \"lodash/isEqual\";\nimport {secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {red} from \"@root/react-components/src/values/colors/colors\";\n\ninterface AddMemberInputProps {\n    sharedGroupIDs: bigint[];\n    setGroupRole: (groupID: bigint, role: Role) => void;\n    addPeer: (peerUsername: string) => void;\n}\n\ninterface AddMemberInputState {\n    newMemberInput: string;\n    groups: Map<bigint, string>;\n    error: string;\n}\n\nexport class AddMemberInput extends React.Component {\n    private readonly dataSourcePeers: DataSourcePeers = App.getInstance().dataSourcePeers;\n    private readonly dataSourceGroups: DataSourceGroups = App.getInstance().dataSourceGroups;\n\n    props: AddMemberInputProps;\n    state: AddMemberInputState = {\n        newMemberInput: \"\",\n        groups: new Map<bigint, string>(),\n        error: \"\"\n    }\n\n    async componentDidMount() {\n        window.addEventListener(\"keydown\",  this.handleKeydown);\n        this.setState({ groups: await this.getPeerGroups() });\n    }\n\n    async componentDidUpdate(prevProps: Readonly<AddMemberInputProps>) {\n        if (!isEqual(prevProps.sharedGroupIDs, this.props.sharedGroupIDs))\n            this.setState({ groups: await this.getPeerGroups() });\n    }\n\n    componentWillUnmount() { window.removeEventListener(\"keydown\", this.handleKeydown); }\n\n    private handleKeydown = (event: KeyboardEvent) => {\n        if (event.key === \"Enter\")\n            this.addMember();\n    }\n\n    private async getPeerGroups(): Promise<Map<bigint, string>> {\n        const currentPeer: Peer = await this.dataSourcePeers.getPeer(getCurrentPeerID());\n\n        if (!currentPeer.group)\n            return new Map<bigint, string>();\n\n        const groups: Map<bigint, string> = new Map<bigint, string>();\n        for (const groupID of Object.keys(currentPeer.group).map((groupID: string) => BigInt(groupID))) {\n            if (this.props.sharedGroupIDs.includes(groupID))\n                continue;\n\n            const group: Group = await this.dataSourceGroups.getGroup(groupID);\n            groups.set(groupID, group.Name);\n        }\n\n        return groups;\n    }\n\n    private addMember() {\n        const email: string = this.state.newMemberInput;\n        // the email need to have two characters before and after the \"@\" and after the \".\"\n        if (email.includes(\"@\") && email.lastIndexOf('.') > email.indexOf('@') + 2 &&\n            email.length - email.lastIndexOf('.') >= 2 && email.indexOf('@') > 2) {\n            setWorldMemberRole(email, Role.VIEWER);\n            this.props.addPeer(email);\n        } else if (!email.includes(\"@\")) {\n            let groupID: bigint = BigInt(0);\n\n            // [groupID, group.name]\n            // find the groupID that match the input value\n            for (const group of this.state.groups.entries())\n                if (group[1] === email)\n                    groupID = group[0];\n\n            if (groupID && !this.props.sharedGroupIDs.includes(groupID)) {\n                this.setState({ newMemberInput: \"\", error: \"\" });\n                this.props.setGroupRole(groupID, Role.VIEWER);\n            } else\n                this.setState({ error: \"Unable to find the group or the group is already added\" });\n        }\n    }\n\n    render() {\n        return (\n            <>\n                <Box style={{ display: \"flex\", gap: \"10px\", alignItems: \"end\"}}>\n                    <InputText\n                        dark\n                        placeholder={i18next.t(\"Type Group name or User email\")}\n                        onChange={(newMemberInput: string) => this.setState({ newMemberInput, error: \"\" })}\n                        type=\"text\"\n                        options={[...this.state.groups.values()]}\n                        onOptionSelected={(index: number) => {\n                            this.setState({newPeerEmail: \"\", error: \"\"},\n                                () => this.props.setGroupRole([...this.state.groups.entries()][index][0], Role.VIEWER))\n                        }}\n                        readOnly={!canUserEditCurrentWorld()}\n                    />\n                    <Button id=\"submit-world-permission-input\" size=\"small\" onClick={() => this.addMember()}>\n                        {i18next.t(\"Add\")}\n                    </Button>\n                </Box>\n                {!!this.state.error &&\n                    <Box style={{font: secondaryFontMedium, color: red, marginTop: \"2px\"}}>\n                        {i18next.t(this.state.error)} ({this.state.newMemberInput})\n                    </Box>\n                }\n            </>\n        )\n    }\n}\n", "import React from \"react\"\nimport {primaryFontLarge, secondaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport {\n    getUsername, getWorldTitle, getCurrentWorldID\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Group} from \"@backend/Types/Group\";\nimport {darkenWhite, lightWhite} from \"@root/react-components/src/values/colors/colors\";\n\nconst Container = styled(Box)({\n    backgroundColor: lightWhite,\n    border: `2px solid ${darkenWhite}`,\n    borderRadius: \"12px\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    marginBottom: \"12px\",\n    padding: \"0px 12px\",\n    height: \"66px\",\n    boxSizing: \"border-box\"\n});\n\nconst ButtonsContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"end\",\n    alignItems: \"center\",\n    gap: \"8px\",\n    width: \"fit-content\"\n});\n\nconst TextContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    flex: 1,\n    justifyContent: \"center\"\n});\n\ninterface RemoveMemberProps {\n    closeDialog: () => void;\n    peerUsername: string;\n    groupID: bigint;\n    removePeer: () => void;\n    removeGroup: () => void;\n}\n\ninterface RemoveMemberState { name: string; }\n\nexport class RemoveMember extends React.Component {\n    props: RemoveMemberProps;\n    state: RemoveMemberState = { name: \"\" };\n\n    async componentDidMount() { await this.setNameToRemove(); }\n\n    private async setNameToRemove() {\n        if (this.props.peerUsername) {\n            this.setState({ name: this.props.peerUsername });\n            return;\n        }\n\n        const group: Group = await App.getInstance().dataSourceGroups.getGroup(this.props.groupID);\n        this.setState({ name: group.Name });\n    }\n\n    render() {\n        const isSelf: boolean = this.state.name === getUsername(getCurrentPeerID());\n\n        return (\n            <Container id=\"remove-member\">\n                <TextContainer>\n                    <Box style={{ font: primaryFontLarge }}> {i18next.t(\"Warning\")} </Box>\n                    <Box style={{ font: secondaryFontSmall }}>\n                        {isSelf ?\n                            <Box style={{maxWidth: \"550px\"}}>\n                                {`${i18next.t(\"Are you sure you want to leave\")} \n                                ${getWorldTitle(getCurrentWorldID())}`}.\n                                &nbsp;\n                                <span style={{fontWeight: \"bold\"}}>\n                                    {i18next.t(\"You won't be able to access this World anymore\")}.\n                                </span>\n                                &nbsp;{i18next.t(\"In order to regain access, another World Editor will need to invite you again\")}\n                            </Box>\n                            :\n                            <>\n                                {!!this.props.peerUsername ?\n                                    <>\n                                        <Box>\n                                            {`${i18next.t(\"Are you sure you want to remove\")} ${this.state.name} \n                                            ${i18next.t(\"from\")} ${getWorldTitle(getCurrentWorldID())} ?`}\n                                        </Box>\n                                    </>\n                                    :\n                                    <>\n                                        {`${i18next.t(\"Are you sure you want to remove the Group\")} ${this.state.name} \n                                          ${i18next.t(\"from\")} ${getWorldTitle(getCurrentWorldID())} ?`}\n                                    </>\n                                }\n                            </>\n                        }\n                    </Box>\n                </TextContainer>\n                <ButtonsContainer>\n                    <Button size=\"small\" variant=\"outlined\" onClick={() => this.props.closeDialog()}>\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                    <Button\n                        id=\"remove-peer-btn\"\n                        size=\"small\"\n                        color=\"error\"\n                        onClick={() => !!this.props.peerUsername ?\n                            this.props.removePeer() : this.props.removeGroup()}\n                    >\n                        {i18next.t(isSelf ? \"Leave\" : \"Remove\")}\n                    </Button>\n                </ButtonsContainer>\n            </Container>\n        )\n    }\n}\n", "import React from \"react\";\n\nexport const Share = () =>\n    <svg xmlns=\"http://www.w3.org/2000/svg\"\n         viewBox=\"0 0 576 512\">\n        <path fill=\"currentColor\"\n              d=\"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\"/>\n    </svg>;\n", "import * as React from \"react\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport styled from \"styled-components\";\nimport {white} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontMedium, secondaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {getCurrentPeerID} from \"Engine/AdapterWeb/AdapterWebAssembly\";\nimport {\n    getCurrentWorldID,\n    getOwnerID,\n    getWorldOwnerType,\n    getWorldTitle\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {Box} from \"@mui/material\";\n\nconst Wrap = styled(\"div\")`\n    min-height: 28px;\n    position: relative;\n    color: ${white};\n    font: ${primaryFontMedium};\n    & > div:last-child{\n        font: ${secondaryFontSmall}\n    }\n`;\n\nexport class WorldInfos extends SmartComponent {\n    state: {\n        title: string,\n        owner: string\n    } = {\n        title: \"\",\n        owner: \"\"\n    };\n\n    private async setWorldInfos(currentWorldID: bigint, currentPeerID: bigint, currentWorldTitle: string) {\n        const app: App = App.getInstance();\n    \n        // reset info if no world ID\n        if (currentWorldID === BigInt(0)) {\n            this.setState({\n                title: \"\",\n                owner: \"\"\n            });\n            return;\n        }\n    \n        const ownerID: bigint = getOwnerID(currentWorldID);\n        const ownerType: OwnerType = getWorldOwnerType(currentWorldID);\n        let ownerName: string = \"\";\n        switch (ownerType) {\n            case OwnerType.PEER:\n                if (ownerID !== currentPeerID)\n                    ownerName = (await app.dataSourcePeers.getPeer(ownerID)).fullName;\n                break;\n            case OwnerType.GROUP:\n                ownerName = (await app.dataSourceGroups.getGroup(ownerID)).Name;\n                break;\n            default:\n                AdapterLog.ERROR(\"Invalid owner type received from backend for world ID \" + currentWorldID);\n        }\n        this.setState({\n            title: currentWorldTitle,\n            owner: ownerName\n        });\n    }\n    \n    public async updateWorldInfos() {\n        const currentPeerID: bigint = getCurrentPeerID();\n        const currentWorldID: bigint = getCurrentWorldID();\n        const currentWorldTitle: string = getWorldTitle(currentWorldID);\n        await this.setWorldInfos(currentWorldID, currentPeerID, currentWorldTitle);\n    }\n\n    render() {\n        if (!this.state.title.length)\n            return <></>;\n\n        return (\n            <Wrap>\n                <Box id=\"world-infos-name\" style={{\n                    width: \"250px\",\n                    overflow: \"hidden\",\n                    textOverflow: \"ellipsis\",\n                    whiteSpace: \"nowrap\",\n                }}>\n                    {this.state.title}\n                </Box>\n                <Box id=\"world-infos-owner\">{this.state.owner ? i18next.t(\"by\") + \" \" + this.state.owner : \"\"}</Box>\n            </Wrap>\n        )\n    }\n}", "import * as React from 'react';\nexport function Tools() {\n    return (\n        <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n            <path fill=\"currentColor\"\n                  d=\"M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z\"/>\n        </svg>\n    )\n}", "\nimport React from 'react';\nexport function PrinterIcon() {\n    return (\n        <svg width=\"500\" height=\"500\" viewBox=\"0 0 500 500\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M0.857068 174.642C0.947391 152.026 19.2009 133.74 41.6865 133.74H458.313C480.799 133.74 499.053 152.026 499.143 174.642L500 389.163C500.09 411.908 481.784 430.395 459.17 430.395H392.904C381.629 430.395 372.489 421.202 372.489 409.861C372.489 398.521 381.629 389.328 392.904 389.328H459.17L458.313 174.807L41.6865 174.807L40.8297 389.328H107.606C118.881 389.328 128.021 398.521 128.021 409.861C128.021 421.202 118.881 430.395 107.606 430.395H40.8298C18.216 430.395 -0.0905025 411.908 0.000336608 389.163L0.857068 174.642Z\" fill=\"white\"/>\n            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M104.034 291.179C104.034 282.674 110.889 275.779 119.345 275.779H380.655C389.111 275.779 395.966 282.674 395.966 291.179C395.966 299.685 389.111 306.58 380.655 306.58H119.345C110.889 306.58 104.034 299.685 104.034 291.179Z\" fill=\"white\"/>\n            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M168.341 302.939V479.466H331.659V302.939H168.341ZM158.133 282.405C152.496 282.405 147.926 287.002 147.926 292.672V489.733C147.926 495.403 152.496 500 158.133 500H341.867C347.504 500 352.074 495.403 352.074 489.733V292.672C352.074 287.002 347.504 282.405 341.867 282.405H158.133Z\" fill=\"white\"/>\n            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M153.029 30.8008V140.742H346.971V30.8008H153.029ZM132.614 0C126.977 0 122.407 4.59667 122.407 10.2669V161.276C122.407 166.946 126.977 171.543 132.614 171.543H367.385C373.023 171.543 377.593 166.946 377.593 161.276V10.2669C377.593 4.59666 373.023 0 367.385 0H132.614Z\" fill=\"white\"/>\n            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M186.714 360.369C186.714 354.699 191.284 350.103 196.921 350.103H304.099C309.737 350.103 314.307 354.699 314.307 360.369C314.307 366.04 309.737 370.636 304.099 370.636H196.921C191.284 370.636 186.714 366.04 186.714 360.369Z\" fill=\"white\"/>\n            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M188.755 417.864C188.755 412.194 193.325 407.597 198.963 407.597H301.037C306.675 407.597 311.245 412.194 311.245 417.864C311.245 423.535 306.675 428.131 301.037 428.131H198.963C193.325 428.131 188.755 423.535 188.755 417.864Z\" fill=\"white\"/>\n        </svg>\n    )\n}\n\n", "\nimport React from 'react';\nexport function GoToConsole() {\n    return (\n        <svg width=\"461\" height=\"463\" viewBox=\"0 0 461 463\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path d=\"M30.9998 430.143L430.994 432.336M30.9327 430L30 30M112 355.572V224.998M211.5 356V94M313 355.571V168.999M412.5 356V61\" stroke=\"white\" strokeWidth=\"60\" strokeLinecap=\"round\"/>\n        </svg>\n    )\n}\n\n", "\nimport React from 'react';\nexport function GoToDocumentation() {\n    return (\n        <svg width=\"512\" height=\"512\" viewBox=\"0 0 512 512\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path d=\"M106.58 437.766C157.727 437.014 193.805 442.939 233.033 465.18C230.808 466.827 228.568 468.52 226.312 470.26L223.44 472.474H47.0037C42.8586 472.474 39.5 469.113 39.5 464.974V46.0641C39.5 41.9461 42.8652 38.547 47.0525 38.538L51.4341 38.5283C52.2581 38.5265 53.0789 38.5246 53.8966 38.5228V426.84V440.076L67.1111 439.32C81.2922 438.508 94.357 437.946 106.58 437.766ZM278.519 465.229C317.534 443.245 353.514 437.378 404.42 438.127C416.643 438.307 429.708 438.868 443.889 439.68L457.103 440.437V427.201V38.8837C457.921 38.8855 458.742 38.8873 459.566 38.8891L463.948 38.8988C468.135 38.9079 471.5 42.3069 471.5 46.425V465.335C471.5 469.474 468.141 472.835 463.996 472.835H288.496L284.689 469.899C282.619 468.303 280.563 466.746 278.519 465.229ZM181.737 58.7524C200.311 64.8734 215.887 74.5375 231.14 90.0119V392.255C219.557 387.635 207.76 383.903 195.555 380.996C170.724 375.083 145.46 372.919 118.897 372.716V49.8362C145.461 50.2263 165.586 53.4294 181.737 58.7524ZM279.86 392.616V90.3728C295.113 74.8984 310.689 65.2343 329.263 59.1132C345.414 53.7903 365.539 50.5872 392.103 50.197V373.077C365.54 373.28 340.276 375.444 315.445 381.357C303.24 384.264 291.443 387.996 279.86 392.616Z\" fill=\"white\" stroke=\"white\" strokeWidth=\"25\"/>\n        </svg>\n    )\n}\n\n", "import React from 'react';\nimport {dark} from \"../values/colors/colors\";\n\nexport function World({color = dark, width = \"24\", height = \"24\"}: {\n    color?: string,\n    width?: string,\n    height?: string\n}) {\n    return (<svg width={width} height={height} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path fill={color}\n              d=\"M11.0514 0.012614C10.517 0.0641765 9.51386 0.232926 9.01699 0.364176C7.36699 0.786052 5.73105 1.61105 4.41386 2.68449C4.01543 3.00793 2.72636 4.28761 2.76386 4.32043C2.77324 4.3298 3.13886 4.23136 3.5748 4.1048C4.21699 3.91261 4.5873 3.83761 5.48261 3.71105L6.59355 3.55636L7.07168 3.28918L7.55449 3.02199L8.10293 3.17199L8.65136 3.32668L9.53261 3.28449L10.4186 3.2423L10.7279 2.77355C10.8967 2.51574 11.0561 2.3048 11.0795 2.3048C11.1029 2.3048 11.3139 2.33293 11.5436 2.37043C11.9232 2.42668 12.0732 2.42199 13.0154 2.32824L14.0654 2.2298L14.3701 1.89699C14.5389 1.71886 14.8623 1.44699 15.0826 1.29699L15.4904 1.02511L16.0904 1.11418C16.4936 1.17511 16.7514 1.19386 16.8779 1.17043L17.0701 1.13293L16.7232 0.973552C15.8982 0.603239 14.6467 0.251676 13.6061 0.096989C13.1514 0.0266765 11.4826 -0.024886 11.0514 0.012614ZM14.1123 0.725114C14.3092 0.837614 14.4732 0.940739 14.4732 0.959489C14.4732 0.992302 13.5592 1.69543 13.4045 1.78449C13.3623 1.80793 13.0951 1.85011 12.8045 1.87824L12.2795 1.93449L12.0357 1.77511L11.792 1.62043L12.1342 1.4048C12.5889 1.12355 13.6951 0.504802 13.7232 0.514177C13.7373 0.518864 13.9107 0.612614 14.1123 0.725114ZM9.1623 1.40011L9.41074 1.50324L9.7623 1.39074C9.95449 1.3298 10.1186 1.28761 10.1279 1.30168C10.2123 1.41418 10.4889 1.92511 10.4748 1.93918C10.4607 1.94855 10.0951 2.05168 9.66386 2.16418L8.87168 2.37043L8.48261 2.15011L8.09355 1.9298L8.24355 1.81261C8.32324 1.74699 8.50136 1.60636 8.63261 1.49855C8.76386 1.39074 8.88105 1.30168 8.89511 1.30168C8.90449 1.29699 9.02636 1.34386 9.1623 1.40011Z\"/>\n        <path fill={color}\n              d=\"M14.6139 2.67042V2.91417L15.0873 3.38292C15.6404 3.93136 16.2076 4.55949 16.2076 4.62511C16.2076 4.64855 16.081 4.73293 15.9264 4.81261C15.6451 4.95324 15.6404 4.95324 15.4014 4.88293C15.2701 4.84543 14.9935 4.74699 14.792 4.66261L14.4264 4.51261V4.19855V3.88917L14.1826 3.79074C14.0467 3.73917 13.8264 3.6548 13.6951 3.60324L13.456 3.5048L13.2967 4.20792L13.1373 4.90636L12.6732 5.00949C12.4201 5.06574 12.2045 5.14074 12.1904 5.17355C12.1764 5.20636 12.1857 5.38449 12.2092 5.57199L12.2467 5.91418L12.8795 6.03605C13.2264 6.10168 13.517 6.15793 13.5217 6.15324C13.5264 6.14855 13.5779 5.87199 13.6342 5.53918C13.6904 5.20168 13.742 4.92511 13.7467 4.91574C13.7514 4.91105 13.9857 4.93918 14.267 4.98136C14.642 5.03761 14.8435 5.09386 15.017 5.1923C15.2326 5.31418 15.3029 5.32824 15.6639 5.32824H16.067L16.3295 5.85324C16.5779 6.35011 16.6342 6.42043 17.3185 7.12824L18.0404 7.87824L18.0123 8.07043C17.9467 8.47355 17.9982 8.4548 17.2623 8.35636L16.7935 8.29543L15.8045 8.7923L14.8107 9.28918L14.0889 10.1564C13.367 11.0236 13.3623 11.0282 13.2732 11.3986L13.1795 11.7736L12.9592 11.7876C12.7717 11.8017 12.6498 11.7642 12.2185 11.5673L11.7029 11.3329L11.2951 11.5345C11.0701 11.6423 10.8592 11.7454 10.831 11.7642C10.7935 11.7876 10.8029 11.8954 10.8639 12.1345C10.9107 12.322 10.9623 12.5376 10.981 12.6173L11.0139 12.7579L11.2154 12.5236L11.417 12.2892L11.7779 12.2751L12.1389 12.2564L12.106 12.7017L12.0732 13.1517L12.3639 13.2361C12.6264 13.3064 12.6826 13.3486 12.9592 13.6532L13.2592 13.9861L13.7326 13.8501L14.2014 13.7142L14.7029 13.7892C14.9748 13.8314 15.5185 13.9486 15.9076 14.0517C16.2967 14.1501 16.7467 14.2486 16.9107 14.2673C17.0842 14.2814 17.2389 14.3282 17.281 14.3704C17.3232 14.4126 17.5717 14.6939 17.8389 14.9939L18.3217 15.5376L19.3482 16.1423C19.9154 16.4704 20.3748 16.7657 20.3701 16.7892C20.3607 16.8173 20.0607 17.4032 19.6998 18.0876L19.0482 19.3392L18.3404 19.6626L17.6373 19.9861L17.3607 20.722L17.0842 21.4579L16.0998 22.1236C15.556 22.4892 15.0967 22.8032 15.0685 22.8173C15.0123 22.8595 14.806 23.5814 14.8482 23.6001C14.9045 23.6236 15.7154 23.3798 16.231 23.1829C20.342 21.6314 23.3092 17.9048 23.8717 13.5782C24.181 11.2111 23.8154 8.9423 22.7889 6.78605C22.4842 6.15324 21.9967 5.32824 21.9264 5.32824C21.9029 5.32824 21.8326 5.34699 21.7717 5.37043C21.7107 5.39386 21.2514 5.45011 20.7498 5.4923C20.2482 5.53449 19.7982 5.58605 19.7467 5.60949C19.6951 5.62824 19.5357 5.82511 19.3998 6.05011C19.2592 6.27043 19.142 6.45324 19.1373 6.45324C19.1326 6.45324 19.0389 6.42043 18.9264 6.38293C18.7951 6.33605 18.4951 6.10168 17.9982 5.65168L17.2623 4.99074L17.0701 4.4423C16.7373 3.50011 16.742 3.50949 16.231 3.05011L15.7623 2.62824L15.2467 2.52511C14.9654 2.46886 14.7029 2.42199 14.6748 2.42199C14.6326 2.42199 14.6139 2.50167 14.6139 2.67042Z\"/>\n        <path fill={color}\n              d=\"M2.12168 5.82042C1.99512 5.85324 1.83106 5.89542 1.76074 5.90949C1.62012 5.9423 1.41387 6.28917 1.04824 7.10011C-0.090818 9.63605 -0.311131 12.4814 0.434182 15.1861C0.823244 16.6157 1.50762 17.9986 2.44043 19.2454C2.87637 19.8267 4.15137 21.1017 4.73731 21.5423C7.14199 23.3376 10.0904 24.2001 12.9264 23.9329C13.2217 23.9048 13.4701 23.8767 13.4795 23.8673C13.4889 23.8626 13.4654 23.5392 13.4326 23.1501L13.3764 22.4423L13.6482 21.3173L13.9201 20.1923L13.6529 19.2407C13.3998 18.3407 13.3623 18.2423 12.9404 17.4595L12.4998 16.6345L12.8748 15.8423C13.0857 15.4064 13.2545 15.0314 13.2545 15.0032C13.2545 14.9751 13.0904 14.9048 12.8936 14.8439C12.542 14.7454 12.5092 14.722 12.0592 14.2767L11.5904 13.8173L10.5967 13.597L9.60762 13.372L9.27481 12.6923L8.94199 12.0079V12.4204V12.8329L8.79199 12.8189C8.65606 12.8048 8.56699 12.7017 7.78418 11.6423L6.92637 10.4798V9.52355V8.56261L6.31231 7.56417C5.97481 7.02042 5.68887 6.55636 5.67012 6.5423C5.65137 6.52355 5.19668 6.59386 4.65293 6.6923C3.80918 6.84699 3.57012 6.87511 2.99824 6.87511H2.32793L1.99981 6.66417C1.82168 6.55167 1.67637 6.43917 1.67637 6.42042C1.68106 6.39699 1.86387 6.2423 2.08418 6.06417C2.50137 5.73605 2.50606 5.72199 2.12168 5.82042Z\"/>\n    </svg>);\n}\n", "import React from \"react\";\nimport {white} from \"../values/colors/colors\";\n\nexport function Navigation(props: {fill?: string}) {\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <g clipPath=\"url(#clip0_2385_251)\">\n                <path fillRule=\"evenodd\" clipRule=\"evenodd\" fill={props.fill ?? white} d=\"M16 15L17.5 4.5L8 9L6.5 19.5L16 15ZM12 14C13.1046 14 14 13.1046 14 12C14 10.8954 13.1046 10 12 10C10.8954 10 10 10.8954 10 12C10 13.1046 10.8954 14 12 14Z\" />\n                <path fillRule=\"evenodd\" clipRule=\"evenodd\" fill={props.fill ?? white} d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24ZM12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\" />\n            </g>\n            <defs>\n                <clipPath id=\"clip0_2385_251\">\n                    <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"white\"/>\n                </clipPath>\n            </defs>\n        </svg>\n    )\n}\n\n", "import * as React from \"react\";\nimport styled from 'styled-components';\nimport {primary, red, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Exclamation} from \"@root/react-components/src/icons/Exclamation\";\nimport {millisecondsPerTimeUnit, TimeUnit} from \"@utils/utils\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport i18next from \"i18next\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {\n    getOwnerID,\n    getPeerWorldIDs,\n    getUsername,\n    getWorldOwnerType,\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Plan} from \"@backend/Types/Plan\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\n\nconst Wrapper = styled('div')`\n    position: relative;\n    display: flex;\n    width: 24px;\n    height: 24px;\n    align-items: center;\n    & > svg{\n        height: 12px;\n        width: 12px;\n        transform: rotate(-90deg);\n        \n        margin-left: 2px;\n    };\n    &:hover {\n      cursor: pointer;\n    }\n`;\n\nconst Circle = styled('div')`\n    height: 24px;\n    min-width: 24px;\n    max-width: 24px;\n    border-radius: 50%;\n    background-color: ${primary};\n    overflow: hidden;\n    & > img{\n        height: 100%;\n        width: 100%;\n        object-fit: cover;\n    }\n`;\n\nconst IssueMark = styled(\"div\")`\n    position: absolute;\n    background-color: ${red};\n    color: ${white};\n    height: 16px;\n    width: 16px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 4px;\n    left: 16px;\n    top: -4px;\n    border-radius: 50%;\n    box-sizing:border-box;\n    & > svg{\n        height: 100%;\n        width: 100%;\n    }\n`\n\ninterface AvatarState {\n    showWarning: boolean;\n    username: string;\n    planID: bigint;\n    numberOfWorlds: number;\n    planExpiration: number;\n    usageDownloads: number;\n    usageUploads: number;\n    planWorldsLimit: number;\n    planDocumentsLimit: number;\n    planUsageDownloads: number;\n    planUsageUploads: number;\n}\n\nconst defaultState: AvatarState = {\n    showWarning: false,\n    username: \"\",\n    planID: BigInt(0),\n    numberOfWorlds: 0,\n    planExpiration: 0,\n    usageDownloads: 0,\n    usageUploads: 0,\n    planWorldsLimit: 0,\n    planDocumentsLimit: 0,\n    planUsageDownloads: 0,\n    planUsageUploads: 0\n}\n\nexport class Avatar extends React.Component {\n    private readonly imageRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    private readonly app: App = App.getInstance();\n\n    props: { currentPeerID: bigint }\n    state: AvatarState = defaultState;\n\n    override async componentDidMount() {\n        await this.updatePeer(this.props.currentPeerID);\n    }\n\n    public async updatePeer(peerID: bigint) {\n        if (peerID !== this.props.currentPeerID)\n            return;\n\n        if(!peerID) {\n            this.setState(defaultState);\n            return;\n        }\n\n        const peer: Peer = await this.app.dataSourcePeers.getPeer(peerID);\n        if (!peer)\n            return;\n\n        // set plan world and document limits\n        const plan: Plan = await this.app.dataSourcePlans.getPlan(peer.plan);\n        if (this.state.planWorldsLimit !== plan.worlds || this.state.planDocumentsLimit !== plan.documents)\n            this.setState({\n                planWorldsLimit: plan.worlds,\n                planDocumentsLimit: plan.documents,\n                planUsageDownloads: plan.downloads,\n                planUsageUploads: plan.uploads\n            });\n\n        // set  usage downloads and uploads limit\n        const today: Date = new Date();\n        const currentMonthRange: {from: bigint, to: bigint} =\n            UtilsShared.getRangeTimestamps(today.getFullYear(), today.getMonth());\n\n        const usageDownloads: number = peer.usageDownloads ?\n            UtilsShared.computePeerUsageData(peer.usageDownloads, currentMonthRange.from, currentMonthRange.to) : 0;\n        if (this.state.usageDownloads !== usageDownloads)\n            this.setState({ usageDownloads });\n\n        const usageUploads: number = peer.usageUploads ?\n            UtilsShared.computePeerUsageData(peer.usageUploads, currentMonthRange.from, currentMonthRange.to) : 0;\n        if (this.state.usageUploads !== usageUploads)\n            this.setState({ usageUploads });\n\n        if (this.state.numberOfWorlds === 0) {\n            const worldIDs: bigint[] = getPeerWorldIDs(peerID);\n            let numberOfWorlds: number = 0;\n            for (const worldID of worldIDs) {\n                const ownerType: OwnerType = getWorldOwnerType(worldID);\n\n                if (ownerType === OwnerType.PEER && getOwnerID(worldID))\n                    numberOfWorlds++;\n            }\n\n            if (this.state.numberOfWorlds !== numberOfWorlds)\n                this.setState({ numberOfWorlds });\n        }\n\n        // set the plan expiration\n        const planExpiration: number = plan.time ? peer.timeStart + plan.time - Date.now() : 0;\n        if (this.state.planExpiration !== planExpiration)\n            this.setState({ planExpiration });\n\n        // set username\n        const username: string = getUsername(peerID);\n        if (username !== this.state.username)\n            this.setState({ username });\n    }\n\n    private showWarning(): boolean {\n        return this.state.numberOfWorlds >= this.state.planWorldsLimit ||\n            (this.state.planExpiration > 0 && millisecondsPerTimeUnit(TimeUnit.DAYS) * 3 > this.state.planExpiration) ||\n            this.state.usageDownloads >= this.state.planUsageDownloads ||\n            this.state.usageUploads >= this.state.planUsageUploads;\n    }\n\n    render(){\n        return(\n            <>\n                <Tooltip title={i18next.t(\"Account\")} followCursor>\n                    <Wrapper id=\"avatar-account-btn\" onClick={() => this.app.setLoginOpened(true)}>\n                        {this.showWarning() && <IssueMark> <Exclamation /> </IssueMark>}\n                        <Circle ref={this.imageRef}>\n                            {this.state.username &&\n                                <img\n                                    src={`https://secure.gravatar.com/avatar/${\n                                        UtilsShared.md5(this.state.username)}?s=80&d=identicon`}\n                                    onError={(e: React.SyntheticEvent<HTMLImageElement>) =>\n                                    { e.currentTarget.style.display = \"none\" }}\n                                    alt={\"Avatar\"}\n                                    crossOrigin=\"anonymous\"\n                                />\n                            }\n                        </Circle>\n                    </Wrapper>\n                </Tooltip>\n            </>\n        )\n    }\n}", "import * as React from 'react';\nexport const Exclamation = () =>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 192 512\">\n        <path fill=\"currentColor\"\n    d=\"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\"/>\n    </svg>", "import React from 'react';\nimport {SvgIcon} from \"@mui/material\";\n\nexport function PreviewMode(): JSX.Element {\n    return (\n        <SvgIcon xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n            <rect x=\"3.5\" y=\"1\" width=\"17\" height=\"17\" rx=\"1\" stroke=\"#FBFCFF\" strokeWidth=\"2\" fill=\"none\"/>\n            <rect x=\"6.67999\" y=\"23.1284\" width=\"8\" height=\"2\" rx=\"1\" transform=\"rotate(-50 6.67999 23.1284)\" fill=\"currentColor\"/>\n            <rect x=\"12.2121\" y=\"17\" width=\"8\" height=\"2\" rx=\"1\" transform=\"rotate(50 12.2121 17)\" fill=\"currentColor\"/>\n            <rect width=\"24\" height=\"2\" rx=\"1\" fill=\"currentColor\"/>\n            <rect x=\"11.6606\" y=\"10.8607\" width=\"7.42462\" height=\"1.5\" rx=\"0.75\" transform=\"rotate(135 11.6606 10.8607)\" fill=\"currentColor\"/>\n            <path d=\"M5.66064 15.0606C5.66064 14.6464 5.99643 14.3106 6.41064 14.3106H9.94878C10.363 14.3106 10.6988 14.6464 10.6988 15.0606C10.6988 15.4748 10.363 15.8106 9.94878 15.8106H6.41065C5.99643 15.8106 5.66064 15.4748 5.66064 15.0606Z\" fill=\"currentColor\"/>\n            <path d=\"M6.41064 15.7988C5.99643 15.7988 5.66064 15.463 5.66064 15.0488L5.66064 11.5106C5.66064 11.0964 5.99643 10.7606 6.41064 10.7606C6.82486 10.7606 7.16064 11.0964 7.16064 11.5106L7.16064 15.0488C7.16064 15.463 6.82486 15.7988 6.41064 15.7988Z\" fill=\"currentColor\"/>\n            <rect x=\"12.35\" y=\"8.14996\" width=\"7.42462\" height=\"1.5\" rx=\"0.75\" transform=\"rotate(-45 12.35 8.14996)\" fill=\"currentColor\"/>\n            <path d=\"M18.35 3.95001C18.35 4.36423 18.0142 4.70001 17.6 4.70001L14.0618 4.70001C13.6476 4.70001 13.3118 4.36423 13.3118 3.95001C13.3118 3.5358 13.6476 3.20001 14.0618 3.20001L17.6 3.20001C18.0142 3.20001 18.35 3.5358 18.35 3.95001Z\" fill=\"currentColor\"/>\n            <path d=\"M17.6 3.21185C18.0142 3.21185 18.35 3.54764 18.35 3.96185V7.49999C18.35 7.9142 18.0142 8.24999 17.6 8.24999C17.1858 8.24999 16.85 7.9142 16.85 7.49999V3.96185C16.85 3.54764 17.1858 3.21185 17.6 3.21185Z\" fill=\"currentColor\"/>\n        </SvgIcon>\n    )\n}\n", "import React from 'react';\nimport {SvgIcon} from \"@mui/material\";\n\nexport function EditorMode(): JSX.Element {\n    return (\n        <SvgIcon xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n            <rect x=\"3.5\" y=\"1\" width=\"17\" height=\"17\" rx=\"1\" stroke=\"#FBFCFF\" strokeWidth=\"2\" fill=\"none\"/>\n            <rect x=\"6.67999\" y=\"23.1284\" width=\"8\" height=\"2\" rx=\"1\" transform=\"rotate(-50 6.67999 23.1284)\" fill=\"currentColor\"/>\n            <rect x=\"12.2121\" y=\"17\" width=\"8\" height=\"2\" rx=\"1\" transform=\"rotate(50 12.2121 17)\" fill=\"currentColor\"/>\n            <rect width=\"24\" height=\"2\" rx=\"1\" fill=\"currentColor\"/>\n            <rect x=\"5.34998\" y=\"15.05\" width=\"7.42462\" height=\"1.5\" rx=\"0.75\" transform=\"rotate(-45 5.34998 15.05)\" fill=\"currentColor\"/>\n            <path d=\"M11.35 10.85C11.35 11.2643 11.0142 11.6 10.6 11.6H7.06184C6.64763 11.6 6.31184 11.2643 6.31184 10.85V10.85C6.31184 10.4358 6.64763 10.1 7.06184 10.1H10.6C11.0142 10.1 11.35 10.4358 11.35 10.85V10.85Z\" fill=\"currentColor\"/>\n            <path d=\"M10.6 10.1119C11.0142 10.1119 11.35 10.4477 11.35 10.8619V14.4C11.35 14.8142 11.0142 15.15 10.6 15.15V15.15C10.1858 15.15 9.84998 14.8142 9.84998 14.4V10.8619C9.84998 10.4477 10.1858 10.1119 10.6 10.1119V10.1119Z\" fill=\"currentColor\"/>\n            <rect x=\"18.6606\" y=\"3.96063\" width=\"7.42462\" height=\"1.5\" rx=\"0.75\" transform=\"rotate(135 18.6606 3.96063)\" fill=\"currentColor\"/>\n            <path d=\"M12.6606 8.16058C12.6606 7.74637 12.9964 7.41058 13.4106 7.41058H16.9488C17.363 7.41058 17.6988 7.74637 17.6988 8.16058V8.16058C17.6988 8.5748 17.363 8.91058 16.9488 8.91058H13.4106C12.9964 8.91058 12.6606 8.5748 12.6606 8.16058V8.16058Z\" fill=\"currentColor\"/>\n            <path d=\"M13.4106 8.89874C12.9964 8.89874 12.6606 8.56296 12.6606 8.14874V4.61061C12.6606 4.19639 12.9964 3.86061 13.4106 3.86061V3.86061C13.8249 3.86061 14.1606 4.19639 14.1606 4.61061V8.14874C14.1606 8.56296 13.8249 8.89874 13.4106 8.89874V8.89874Z\" fill=\"currentColor\"/>\n        </SvgIcon>\n    )\n}\n\n", "import React from \"react\";\n\nexport const SettingsIcon = () =>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n        <path style={{fill: \"currentColor\"}} d=\"M24 13.616v-3.232c-1.651-.587-2.694-.752-3.219-2.019v-.001c-.527-1.271.1-2.134.847-3.707l-2.285-2.285c-1.561.742-2.433 1.375-3.707.847h-.001c-1.269-.526-1.435-1.576-2.019-3.219h-3.232c-.582 1.635-.749 2.692-2.019 3.219h-.001c-1.271.528-2.132-.098-3.707-.847l-2.285 2.285c.745 1.568 1.375 2.434.847 3.707-.527 1.271-1.584 1.438-3.219 2.02v3.232c1.632.58 2.692.749 3.219 2.019.53 1.282-.114 2.166-.847 3.707l2.285 2.286c1.562-.743 2.434-1.375 3.707-.847h.001c1.27.526 1.436 1.579 2.019 3.219h3.232c.582-1.636.75-2.69 2.027-3.222h.001c1.262-.524 2.12.101 3.698.851l2.285-2.286c-.744-1.563-1.375-2.433-.848-3.706.527-1.271 1.588-1.44 3.221-2.021zm-12 2.384c-2.209 0-4-1.791-4-4s1.791-4 4-4 4 1.791 4 4-1.791 4-4 4z\"/>\n    </svg>;\n", "import * as React from \"react\";\n\nexport const Back = () =>\n    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M15.1909 8.10001V7.10001V8.10001ZM14.6454 21.1909V20.1909V21.1909ZM8.64546 20.1909C8.09317 20.1909 7.64546 20.6386 7.64546 21.1909C7.64546 21.7432 8.09317 22.1909 8.64546 22.1909V21.1909V20.1909ZM15.1909 8.10001V9.10001C17.5657 9.10001 19.2491 9.84555 20.3232 10.8693C21.4023 11.8978 21.9269 13.2616 21.899 14.625C21.8448 17.2704 19.6472 20.1909 14.6454 20.1909V21.1909V22.1909C20.5617 22.1909 23.8186 18.5659 23.8986 14.6659C23.9377 12.7566 23.1994 10.8477 21.7031 9.42159C20.202 7.99082 17.998 7.10001 15.1909 7.10001V8.10001ZM15.1909 8.10001V7.10001C12.5727 7.10001 10.8273 7.10002 8.10001 7.10001L8.1 8.10001L8.1 9.10001C10.8273 9.10002 12.5727 9.10001 15.1909 9.10001V8.10001ZM14.6454 21.1909V20.1909C14.6386 20.1909 14.6318 20.1909 14.625 20.1909C14.6182 20.1909 14.6115 20.1909 14.6047 20.1909C14.5979 20.1909 14.5912 20.1909 14.5844 20.1909C14.5777 20.1909 14.5709 20.1909 14.5642 20.1909C14.5575 20.1909 14.5508 20.1909 14.5441 20.1909C14.5374 20.1909 14.5307 20.1909 14.524 20.1909C14.5173 20.1909 14.5107 20.1909 14.504 20.1909C14.4974 20.1909 14.4907 20.1909 14.4841 20.1909C14.414 20.1909 14.4748 20.1909 14.4051 20.1909C14.3986 20.1909 14.3921 20.1909 14.3856 20.1909C14.3791 20.1909 14.3726 20.1909 14.3661 20.1909C14.3596 20.1909 14.3531 20.1909 14.3466 20.1909C14.3402 20.1909 14.3337 20.1909 14.3273 20.1909C14.3208 20.1909 14.3144 20.1909 14.308 20.1909C14.3016 20.1909 14.2952 20.1909 14.2888 20.1909C14.2824 20.1909 14.276 20.1909 14.2696 20.1909C14.2633 20.1909 14.2569 20.1909 14.2505 20.1909C14.2442 20.1909 14.2378 20.1909 14.2315 20.1909C14.2252 20.1909 14.2189 20.1909 14.2126 20.1909C14.2063 20.1909 14.2 20.1909 14.1937 20.1909C14.1874 20.1909 14.1811 20.1909 14.1749 20.1909C14.1686 20.1909 14.1624 20.1909 14.1561 20.1909C14.1499 20.1909 14.1437 20.1909 14.1374 20.1909C14.1312 20.1909 14.125 20.1909 14.1188 20.1909C14.1126 20.1909 14.1065 20.1909 14.1003 20.1909C14.0941 20.1909 14.088 20.1909 14.0818 20.1909C14.0757 20.1909 14.0695 20.1909 14.0634 20.1909C14.0573 20.1909 14.0511 20.1909 14.045 20.1909C14.0389 20.1909 14.0328 20.1909 14.0268 20.1909C14.0207 20.1909 14.0146 20.1909 14.0085 20.1909C14.0025 20.1909 13.9964 20.1909 13.9904 20.1909C13.9843 20.1909 13.9783 20.1909 13.9723 20.1909C13.9663 20.1909 13.9603 20.1909 13.9543 20.1909C13.9483 20.1909 13.9423 20.1909 13.9363 20.1909C13.9303 20.1909 13.9244 20.1909 13.9184 20.1909C13.9124 20.1909 13.9065 20.1909 13.9006 20.1909C13.8946 20.1909 13.8887 20.1909 13.8828 20.1909C13.8203 20.1909 13.8745 20.1909 13.8124 20.1909C13.8065 20.1909 13.8007 20.1909 13.7949 20.1909C13.7891 20.1909 13.7833 20.1909 13.7775 20.1909C13.7717 20.1909 13.7659 20.1909 13.7602 20.1909C13.7544 20.1909 13.7487 20.1909 13.7429 20.1909C13.7372 20.1909 13.7314 20.1909 13.7257 20.1909C13.72 20.1909 13.7143 20.1909 13.7086 20.1909C13.7029 20.1909 13.6972 20.1909 13.6915 20.1909C13.6858 20.1909 13.6801 20.1909 13.6745 20.1909C13.6688 20.1909 13.6631 20.1909 13.6575 20.1909C13.6518 20.1909 13.6462 20.1909 13.6406 20.1909C13.635 20.1909 13.6294 20.1909 13.6237 20.1909C13.6181 20.1909 13.6125 20.1909 13.607 20.1909C13.6014 20.1909 13.5958 20.1909 13.5902 20.1909C13.5847 20.1909 13.5791 20.1909 13.5736 20.1909C13.568 20.1909 13.5625 20.1909 13.557 20.1909C13.5515 20.1909 13.5459 20.1909 13.5404 20.1909C13.5349 20.1909 13.5294 20.1909 13.524 20.1909C13.5185 20.1909 13.513 20.1909 13.5075 20.1909C13.5021 20.1909 13.4966 20.1909 13.4912 20.1909C13.4857 20.1909 13.4803 20.1909 13.4749 20.1909C13.4694 20.1909 13.464 20.1909 13.4586 20.1909C13.4532 20.1909 13.4478 20.1909 13.4424 20.1909C13.437 20.1909 13.4316 20.1909 13.4263 20.1909C13.4209 20.1909 13.4155 20.1909 13.4102 20.1909C13.4048 20.1909 13.3995 20.1909 13.3942 20.1909C13.3888 20.1909 13.3835 20.1909 13.3782 20.1909C13.3729 20.1909 13.3676 20.1909 13.3623 20.1909C13.357 20.1909 13.3517 20.1909 13.3465 20.1909C13.3412 20.1909 13.3359 20.1909 13.3307 20.1909C13.3254 20.1909 13.3202 20.1909 13.3149 20.1909C13.3097 20.1909 13.3045 20.1909 13.2992 20.1909C13.294 20.1909 13.2888 20.1909 13.2836 20.1909C13.2784 20.1909 13.2732 20.1909 13.268 20.1909C13.2629 20.1909 13.2577 20.1909 13.2525 20.1909C13.2474 20.1909 13.2422 20.1909 13.2371 20.1909C13.2319 20.1909 13.2268 20.1909 13.2217 20.1909C13.2165 20.1909 13.2114 20.1909 13.2063 20.1909C13.2012 20.1909 13.1961 20.1909 13.191 20.1909C13.1859 20.1909 13.1808 20.1909 13.1758 20.1909C13.1707 20.1909 13.1656 20.1909 13.1606 20.1909C13.1555 20.1909 13.1505 20.1909 13.1454 20.1909C13.1404 20.1909 13.1354 20.1909 13.1303 20.1909C13.1253 20.1909 13.1203 20.1909 13.1153 20.1909C13.1103 20.1909 13.1053 20.1909 13.1003 20.1909C13.0954 20.1909 13.0904 20.1909 13.0854 20.1909C13.0804 20.1909 13.0755 20.1909 13.0705 20.1909C13.0656 20.1909 13.0607 20.1909 13.0557 20.1909C13.0508 20.1909 13.0459 20.1909 13.041 20.1909C13.036 20.1909 13.0311 20.1909 13.0262 20.1909C13.0213 20.1909 13.0165 20.1909 13.0116 20.1909C13.0067 20.1909 13.0018 20.1909 12.997 20.1909C12.9921 20.1909 12.9872 20.1909 12.9824 20.1909C12.9776 20.1909 12.9727 20.1909 12.9679 20.1909C12.9631 20.1909 12.9582 20.1909 12.9534 20.1909C12.9486 20.1909 12.9438 20.1909 12.939 20.1909C12.9342 20.1909 12.9294 20.1909 12.9247 20.1909C12.9199 20.1909 12.9151 20.1909 12.9103 20.1909C12.9056 20.1909 12.9008 20.1909 12.8961 20.1909C12.8913 20.1909 12.8866 20.1909 12.8819 20.1909C12.8771 20.1909 12.8724 20.1909 12.8677 20.1909C12.863 20.1909 12.8583 20.1909 12.8536 20.1909C12.8489 20.1909 12.8442 20.1909 12.8395 20.1909C12.8349 20.1909 12.8302 20.1909 12.8255 20.1909C12.8209 20.1909 12.8162 20.1909 12.8116 20.1909C12.8069 20.1909 12.8023 20.1909 12.7976 20.1909C12.793 20.1909 12.7884 20.1909 12.7838 20.1909C12.7791 20.1909 12.7745 20.1909 12.7699 20.1909C12.7653 20.1909 12.7607 20.1909 12.7562 20.1909C12.7516 20.1909 12.747 20.1909 12.7424 20.1909C12.7379 20.1909 12.7333 20.1909 12.7288 20.1909C12.7242 20.1909 12.7197 20.1909 12.7151 20.1909C12.7106 20.1909 12.7061 20.1909 12.7015 20.1909C12.697 20.1909 12.6925 20.1909 12.688 20.1909C12.6835 20.1909 12.679 20.1909 12.6745 20.1909C12.67 20.1909 12.6655 20.1909 12.661 20.1909C12.6566 20.1909 12.6521 20.1909 12.6476 20.1909C12.6432 20.1909 12.6387 20.1909 12.6343 20.1909C12.6298 20.1909 12.6254 20.1909 12.621 20.1909C12.6165 20.1909 12.6121 20.1909 12.6077 20.1909C12.6033 20.1909 12.5989 20.1909 12.5945 20.1909C12.5901 20.1909 12.5857 20.1909 12.5813 20.1909C12.5769 20.1909 12.5725 20.1909 12.5682 20.1909C12.5638 20.1909 12.5594 20.1909 12.5551 20.1909C12.5507 20.1909 12.5464 20.1909 12.542 20.1909C12.5377 20.1909 12.5334 20.1909 12.529 20.1909C12.5247 20.1909 12.5204 20.1909 12.5161 20.1909C12.5118 20.1909 12.5075 20.1909 12.5032 20.1909C12.4989 20.1909 12.4946 20.1909 12.4903 20.1909C12.486 20.1909 12.4817 20.1909 12.4775 20.1909C12.4732 20.1909 12.4689 20.1909 12.4647 20.1909C12.4604 20.1909 12.4562 20.1909 12.4519 20.1909C12.4477 20.1909 12.4435 20.1909 12.4392 20.1909C12.435 20.1909 12.4308 20.1909 12.4266 20.1909C12.4224 20.1909 12.4181 20.1909 12.4139 20.1909C12.4097 20.1909 12.4056 20.1909 12.4014 20.1909C12.3972 20.1909 12.393 20.1909 12.3888 20.1909C12.3847 20.1909 12.3805 20.1909 12.3763 20.1909C12.3722 20.1909 12.368 20.1909 12.3639 20.1909C12.3597 20.1909 12.3556 20.1909 12.3515 20.1909C12.3473 20.1909 12.3432 20.1909 12.3391 20.1909C12.335 20.1909 12.3309 20.1909 12.3268 20.1909C12.3227 20.1909 12.3186 20.1909 12.3145 20.1909C12.3104 20.1909 12.3063 20.1909 12.3022 20.1909C12.2981 20.1909 12.2941 20.1909 12.29 20.1909C12.2859 20.1909 12.2819 20.1909 12.2778 20.1909C12.2738 20.1909 12.2697 20.1909 12.2657 20.1909C12.2617 20.1909 12.2576 20.1909 12.2536 20.1909C12.2496 20.1909 12.2455 20.1909 12.2415 20.1909C12.2375 20.1909 12.2335 20.1909 12.2295 20.1909C12.2255 20.1909 12.2215 20.1909 12.2175 20.1909C12.2135 20.1909 12.2096 20.1909 12.2056 20.1909C12.2016 20.1909 12.1976 20.1909 12.1937 20.1909C12.1897 20.1909 12.1858 20.1909 12.1818 20.1909C12.1779 20.1909 12.1739 20.1909 12.17 20.1909C12.166 20.1909 12.1621 20.1909 12.1582 20.1909C12.1543 20.1909 12.1503 20.1909 12.1464 20.1909C12.1425 20.1909 12.1386 20.1909 12.1347 20.1909C12.1308 20.1909 12.1269 20.1909 12.123 20.1909C12.1191 20.1909 12.1152 20.1909 12.1114 20.1909C12.1075 20.1909 12.1036 20.1909 12.0998 20.1909C12.0959 20.1909 12.092 20.1909 12.0882 20.1909C12.0843 20.1909 12.0805 20.1909 12.0766 20.1909C12.0728 20.1909 12.069 20.1909 12.0651 20.1909C12.0613 20.1909 12.0575 20.1909 12.0537 20.1909C12.0498 20.1909 12.046 20.1909 12.0422 20.1909C12.0384 20.1909 12.0346 20.1909 12.0308 20.1909C12.027 20.1909 12.0232 20.1909 12.0194 20.1909C12.0157 20.1909 12.0119 20.1909 12.0081 20.1909C12.0043 20.1909 12.0006 20.1909 11.9968 20.1909C11.993 20.1909 11.9893 20.1909 11.9855 20.1909C11.9818 20.1909 11.978 20.1909 11.9743 20.1909C11.9706 20.1909 11.9668 20.1909 11.9631 20.1909C11.9594 20.1909 11.9557 20.1909 11.9519 20.1909C11.9482 20.1909 11.9445 20.1909 11.9408 20.1909C11.9371 20.1909 11.9334 20.1909 11.9297 20.1909C11.926 20.1909 11.9223 20.1909 11.9186 20.1909C11.9149 20.1909 11.9113 20.1909 11.9076 20.1909C11.9039 20.1909 11.9002 20.1909 11.8966 20.1909C11.8929 20.1909 11.8893 20.1909 11.8856 20.1909C11.8819 20.1909 11.8783 20.1909 11.8747 20.1909C11.871 20.1909 11.8674 20.1909 11.8637 20.1909C11.8601 20.1909 11.8565 20.1909 11.8529 20.1909C11.8492 20.1909 11.8456 20.1909 11.842 20.1909C11.8384 20.1909 11.8348 20.1909 11.8312 20.1909C11.8276 20.1909 11.824 20.1909 11.8204 20.1909C11.8168 20.1909 11.8132 20.1909 11.8096 20.1909C11.8061 20.1909 11.8025 20.1909 11.7989 20.1909C11.7953 20.1909 11.7918 20.1909 11.7882 20.1909C11.7846 20.1909 11.7811 20.1909 11.7775 20.1909C11.774 20.1909 11.7704 20.1909 11.7669 20.1909C11.7633 20.1909 11.7598 20.1909 11.7563 20.1909C11.7527 20.1909 11.7492 20.1909 11.7457 20.1909C11.7422 20.1909 11.7386 20.1909 11.7351 20.1909C11.7316 20.1909 11.7281 20.1909 11.7246 20.1909C11.7211 20.1909 11.7176 20.1909 11.7141 20.1909C11.7106 20.1909 11.7071 20.1909 11.7036 20.1909C11.7001 20.1909 11.6967 20.1909 11.6932 20.1909C11.6897 20.1909 11.6862 20.1909 11.6828 20.1909C11.6793 20.1909 11.6758 20.1909 11.6724 20.1909C11.6689 20.1909 11.6655 20.1909 11.662 20.1909C11.6586 20.1909 11.6551 20.1909 11.6517 20.1909C11.6482 20.1909 11.6448 20.1909 11.6414 20.1909C11.6379 20.1909 11.6345 20.1909 11.6311 20.1909C11.6277 20.1909 11.6242 20.1909 11.6208 20.1909C11.5488 20.1909 11.6111 20.1909 11.5397 20.1909C11.5363 20.1909 11.533 20.1909 11.5296 20.1909C11.5263 20.1909 11.5229 20.1909 11.5196 20.1909C11.5163 20.1909 11.5129 20.1909 11.5096 20.1909C11.5063 20.1909 11.503 20.1909 11.4997 20.1909C11.4963 20.1909 11.493 20.1909 11.4897 20.1909C11.4864 20.1909 11.4831 20.1909 11.4798 20.1909C11.4765 20.1909 11.4732 20.1909 11.4699 20.1909C11.4666 20.1909 11.4633 20.1909 11.46 20.1909C11.4567 20.1909 11.4535 20.1909 11.4502 20.1909C11.4469 20.1909 11.4436 20.1909 11.4403 20.1909C11.4371 20.1909 11.4338 20.1909 11.4305 20.1909C11.4273 20.1909 11.424 20.1909 11.4208 20.1909C11.4175 20.1909 11.4142 20.1909 11.411 20.1909C11.4077 20.1909 11.4045 20.1909 11.4012 20.1909C11.398 20.1909 11.3948 20.1909 11.3915 20.1909C11.3883 20.1909 11.385 20.1909 11.3818 20.1909C11.3786 20.1909 11.3754 20.1909 11.3721 20.1909C11.3689 20.1909 11.3657 20.1909 11.3625 20.1909C11.3593 20.1909 11.356 20.1909 11.3528 20.1909C11.3496 20.1909 11.3464 20.1909 11.3432 20.1909C11.34 20.1909 11.3368 20.1909 11.3336 20.1909C11.3304 20.1909 11.3272 20.1909 11.324 20.1909C11.3208 20.1909 11.3176 20.1909 11.3145 20.1909C11.3113 20.1909 11.3081 20.1909 11.3049 20.1909C11.3017 20.1909 11.2986 20.1909 11.2954 20.1909C11.2922 20.1909 11.289 20.1909 11.2859 20.1909C11.2827 20.1909 11.2795 20.1909 11.2764 20.1909C11.2732 20.1909 11.2701 20.1909 11.2669 20.1909C11.2638 20.1909 11.2606 20.1909 11.2575 20.1909C11.2543 20.1909 11.2512 20.1909 11.248 20.1909C11.2449 20.1909 11.2417 20.1909 11.2386 20.1909C11.2355 20.1909 11.2323 20.1909 11.2292 20.1909C11.2261 20.1909 11.2229 20.1909 11.2198 20.1909C11.2167 20.1909 11.2136 20.1909 11.2104 20.1909C11.2073 20.1909 11.2042 20.1909 11.2011 20.1909C11.198 20.1909 11.1948 20.1909 11.1917 20.1909C11.1886 20.1909 11.1855 20.1909 11.1824 20.1909C11.1793 20.1909 11.1762 20.1909 11.1731 20.1909C11.17 20.1909 11.1669 20.1909 11.1638 20.1909C11.1607 20.1909 11.1576 20.1909 11.1545 20.1909C11.1515 20.1909 11.1484 20.1909 11.1453 20.1909C11.1422 20.1909 11.1391 20.1909 11.136 20.1909C11.133 20.1909 11.1299 20.1909 11.1268 20.1909C11.1237 20.1909 11.1207 20.1909 11.1176 20.1909C11.1145 20.1909 11.1114 20.1909 11.1084 20.1909C11.1053 20.1909 11.1023 20.1909 11.0992 20.1909C11.0961 20.1909 11.0931 20.1909 11.09 20.1909C11.087 20.1909 11.0839 20.1909 11.0809 20.1909C11.0778 20.1909 11.0748 20.1909 11.0717 20.1909C11.0687 20.1909 11.0656 20.1909 11.0626 20.1909C11.0595 20.1909 11.0565 20.1909 11.0534 20.1909C11.0504 20.1909 11.0474 20.1909 11.0443 20.1909C11.0413 20.1909 11.0383 20.1909 11.0352 20.1909C11.0322 20.1909 11.0292 20.1909 11.0262 20.1909C11.0231 20.1909 11.0201 20.1909 11.0171 20.1909C11.0141 20.1909 11.011 20.1909 11.008 20.1909C11.005 20.1909 11.002 20.1909 10.999 20.1909C10.9959 20.1909 10.9929 20.1909 10.9899 20.1909C10.9869 20.1909 10.9839 20.1909 10.9809 20.1909C10.9779 20.1909 10.9749 20.1909 10.9719 20.1909C10.9689 20.1909 10.9659 20.1909 10.9629 20.1909C10.9599 20.1909 10.9569 20.1909 10.9539 20.1909C10.9509 20.1909 10.9479 20.1909 10.9449 20.1909C10.9419 20.1909 10.9389 20.1909 10.9359 20.1909C10.9329 20.1909 10.9299 20.1909 10.9269 20.1909C10.9239 20.1909 10.921 20.1909 10.918 20.1909C10.915 20.1909 10.912 20.1909 10.909 20.1909C10.906 20.1909 10.9031 20.1909 10.9001 20.1909C10.8971 20.1909 10.8941 20.1909 10.8911 20.1909C10.8882 20.1909 10.8852 20.1909 10.8822 20.1909C10.8792 20.1909 10.8763 20.1909 10.8733 20.1909C10.8703 20.1909 10.8674 20.1909 10.8644 20.1909C10.8614 20.1909 10.8585 20.1909 10.8555 20.1909C10.8525 20.1909 10.8496 20.1909 10.8466 20.1909C10.8436 20.1909 10.8407 20.1909 10.8377 20.1909C10.8348 20.1909 10.8318 20.1909 10.8288 20.1909C10.8259 20.1909 10.8229 20.1909 10.82 20.1909C10.817 20.1909 10.8141 20.1909 10.8111 20.1909C10.8082 20.1909 10.8052 20.1909 10.8022 20.1909C10.7993 20.1909 10.7963 20.1909 10.7934 20.1909C10.7904 20.1909 10.7875 20.1909 10.7846 20.1909C10.7816 20.1909 10.7787 20.1909 10.7757 20.1909C10.7728 20.1909 10.7698 20.1909 10.7669 20.1909C10.7639 20.1909 10.761 20.1909 10.758 20.1909C10.7551 20.1909 10.7522 20.1909 10.7492 20.1909C10.7463 20.1909 10.7433 20.1909 10.7404 20.1909C10.7375 20.1909 10.7345 20.1909 10.7316 20.1909C10.7287 20.1909 10.7257 20.1909 10.7228 20.1909C10.7198 20.1909 10.7169 20.1909 10.714 20.1909C10.711 20.1909 10.7081 20.1909 10.7052 20.1909C10.7022 20.1909 10.6993 20.1909 10.6964 20.1909C10.6934 20.1909 10.6905 20.1909 10.6876 20.1909C10.6847 20.1909 10.6817 20.1909 10.6788 20.1909C10.6759 20.1909 10.6729 20.1909 10.67 20.1909C10.6671 20.1909 10.6641 20.1909 10.6612 20.1909C10.6583 20.1909 10.6554 20.1909 10.6524 20.1909C10.6495 20.1909 10.6466 20.1909 10.6437 20.1909C10.6407 20.1909 10.6378 20.1909 10.6349 20.1909C10.632 20.1909 10.629 20.1909 10.6261 20.1909C10.6232 20.1909 10.6203 20.1909 10.6173 20.1909C10.6144 20.1909 10.6115 20.1909 10.6086 20.1909C10.6056 20.1909 10.6027 20.1909 10.5998 20.1909C10.5969 20.1909 10.5939 20.1909 10.591 20.1909C10.5881 20.1909 10.5852 20.1909 10.5822 20.1909C10.5793 20.1909 10.5764 20.1909 10.5735 20.1909C10.5706 20.1909 10.5676 20.1909 10.5647 20.1909C10.5618 20.1909 10.5589 20.1909 10.5559 20.1909C10.553 20.1909 10.5501 20.1909 10.5472 20.1909C10.5442 20.1909 10.5413 20.1909 10.5384 20.1909C10.5355 20.1909 10.5326 20.1909 10.5296 20.1909C10.5267 20.1909 10.5238 20.1909 10.5209 20.1909C10.5179 20.1909 10.515 20.1909 10.5121 20.1909C10.5092 20.1909 10.5062 20.1909 10.5033 20.1909C10.5004 20.1909 10.4975 20.1909 10.4945 20.1909C10.4916 20.1909 10.4887 20.1909 10.4858 20.1909C10.4828 20.1909 10.4799 20.1909 10.477 20.1909C10.4741 20.1909 10.4711 20.1909 10.4682 20.1909C10.4653 20.1909 10.4624 20.1909 10.4594 20.1909C10.4565 20.1909 10.4536 20.1909 10.4507 20.1909C10.4477 20.1909 10.4448 20.1909 10.4419 20.1909C10.3169 20.1909 10.4261 20.1909 10.3007 20.1909C10.2978 20.1909 10.2948 20.1909 10.2919 20.1909C10.2889 20.1909 10.2859 20.1909 10.283 20.1909C10.28 20.1909 10.2771 20.1909 10.2741 20.1909C10.2711 20.1909 10.2682 20.1909 10.2652 20.1909C10.2623 20.1909 10.2593 20.1909 10.2563 20.1909C10.2534 20.1909 10.2504 20.1909 10.2474 20.1909C10.2444 20.1909 10.2415 20.1909 10.2385 20.1909C10.2355 20.1909 10.2326 20.1909 10.2296 20.1909C10.2266 20.1909 10.2236 20.1909 10.2207 20.1909C10.2177 20.1909 10.2147 20.1909 10.2117 20.1909C10.2087 20.1909 10.2058 20.1909 10.2028 20.1909C10.1998 20.1909 10.1968 20.1909 10.1938 20.1909C10.1908 20.1909 10.1878 20.1909 10.1849 20.1909C10.1819 20.1909 10.1789 20.1909 10.1759 20.1909C10.1729 20.1909 10.1699 20.1909 10.1669 20.1909C10.1639 20.1909 10.1609 20.1909 10.1579 20.1909C10.1549 20.1909 10.1519 20.1909 10.1489 20.1909C10.1459 20.1909 10.1429 20.1909 10.1399 20.1909C10.1369 20.1909 10.1339 20.1909 10.1309 20.1909C10.1279 20.1909 10.1249 20.1909 10.1218 20.1909C10.1188 20.1909 10.1158 20.1909 10.1128 20.1909C10.1098 20.1909 10.1068 20.1909 10.1037 20.1909C10.1007 20.1909 10.0977 20.1909 10.0947 20.1909C10.0916 20.1909 10.0886 20.1909 10.0856 20.1909C10.0826 20.1909 10.0795 20.1909 10.0765 20.1909C10.0735 20.1909 10.0704 20.1909 10.0674 20.1909C10.0644 20.1909 10.0613 20.1909 10.0583 20.1909C10.0552 20.1909 10.0522 20.1909 10.0491 20.1909C10.0461 20.1909 10.0431 20.1909 10.04 20.1909C10.037 20.1909 10.0339 20.1909 10.0309 20.1909C10.0278 20.1909 10.0247 20.1909 10.0217 20.1909C10.0186 20.1909 10.0156 20.1909 10.0125 20.1909C10.0094 20.1909 10.0064 20.1909 10.0033 20.1909C10.0002 20.1909 9.99717 20.1909 9.9941 20.1909C9.99102 20.1909 9.98795 20.1909 9.98487 20.1909C9.9818 20.1909 9.97872 20.1909 9.97563 20.1909C9.97255 20.1909 9.96947 20.1909 9.96638 20.1909C9.96329 20.1909 9.96021 20.1909 9.95711 20.1909C9.95402 20.1909 9.95093 20.1909 9.94783 20.1909C9.94474 20.1909 9.94164 20.1909 9.93853 20.1909C9.93543 20.1909 9.93233 20.1909 9.92922 20.1909C9.92611 20.1909 9.923 20.1909 9.91989 20.1909C9.91678 20.1909 9.91366 20.1909 9.91055 20.1909C9.90743 20.1909 9.90431 20.1909 9.90119 20.1909C9.89806 20.1909 9.89494 20.1909 9.89181 20.1909C9.88868 20.1909 9.88555 20.1909 9.88241 20.1909C9.87928 20.1909 9.87614 20.1909 9.873 20.1909C9.86986 20.1909 9.86672 20.1909 9.86357 20.1909C9.86043 20.1909 9.85728 20.1909 9.85413 20.1909C9.85098 20.1909 9.84782 20.1909 9.84466 20.1909C9.84151 20.1909 9.83835 20.1909 9.83518 20.1909C9.83202 20.1909 9.82885 20.1909 9.82568 20.1909C9.82252 20.1909 9.81934 20.1909 9.81617 20.1909C9.81299 20.1909 9.80981 20.1909 9.80663 20.1909C9.80345 20.1909 9.80027 20.1909 9.79708 20.1909C9.79389 20.1909 9.7907 20.1909 9.7875 20.1909C9.78431 20.1909 9.78111 20.1909 9.77791 20.1909C9.77471 20.1909 9.77151 20.1909 9.7683 20.1909C9.76509 20.1909 9.76188 20.1909 9.75867 20.1909C9.75546 20.1909 9.75224 20.1909 9.74902 20.1909C9.7458 20.1909 9.74257 20.1909 9.73935 20.1909C9.73612 20.1909 9.73289 20.1909 9.72966 20.1909C9.72642 20.1909 9.72318 20.1909 9.71994 20.1909C9.7167 20.1909 9.71346 20.1909 9.71021 20.1909C9.70696 20.1909 9.70371 20.1909 9.70046 20.1909C9.6972 20.1909 9.69394 20.1909 9.69068 20.1909C9.68742 20.1909 9.68416 20.1909 9.68089 20.1909C9.67762 20.1909 9.67435 20.1909 9.67107 20.1909C9.66779 20.1909 9.66451 20.1909 9.66123 20.1909C9.65795 20.1909 9.65466 20.1909 9.65137 20.1909C9.64808 20.1909 9.64478 20.1909 9.64149 20.1909C9.63819 20.1909 9.63489 20.1909 9.63158 20.1909C9.59611 20.1909 9.62732 20.1909 9.59173 20.1909C9.58839 20.1909 9.58505 20.1909 9.58171 20.1909C9.57836 20.1909 9.57501 20.1909 9.57166 20.1909C9.56831 20.1909 9.56495 20.1909 9.56159 20.1909C9.55823 20.1909 9.55486 20.1909 9.5515 20.1909C9.54813 20.1909 9.54475 20.1909 9.54138 20.1909C9.538 20.1909 9.53462 20.1909 9.53123 20.1909C9.52785 20.1909 9.52446 20.1909 9.52107 20.1909C9.51767 20.1909 9.51427 20.1909 9.51087 20.1909C9.50747 20.1909 9.50406 20.1909 9.50065 20.1909C9.49724 20.1909 9.49383 20.1909 9.49041 20.1909C9.48699 20.1909 9.48357 20.1909 9.48014 20.1909C9.47671 20.1909 9.47328 20.1909 9.46984 20.1909C9.46641 20.1909 9.46297 20.1909 9.45952 20.1909C9.45608 20.1909 9.45263 20.1909 9.44917 20.1909C9.44572 20.1909 9.44226 20.1909 9.4388 20.1909C9.43533 20.1909 9.43186 20.1909 9.42839 20.1909C9.42492 20.1909 9.42144 20.1909 9.41796 20.1909C9.41448 20.1909 9.411 20.1909 9.40751 20.1909C9.40402 20.1909 9.40052 20.1909 9.39702 20.1909C9.39352 20.1909 9.39002 20.1909 9.38651 20.1909C9.383 20.1909 9.37949 20.1909 9.37597 20.1909C9.37245 20.1909 9.36893 20.1909 9.3654 20.1909C9.36187 20.1909 9.35834 20.1909 9.3548 20.1909C9.35126 20.1909 9.34772 20.1909 9.34417 20.1909C9.34063 20.1909 9.33707 20.1909 9.33352 20.1909C9.32996 20.1909 9.3264 20.1909 9.32283 20.1909C9.31927 20.1909 9.31569 20.1909 9.31212 20.1909C9.30854 20.1909 9.30496 20.1909 9.30137 20.1909C9.29779 20.1909 9.2942 20.1909 9.2906 20.1909C9.287 20.1909 9.2834 20.1909 9.2798 20.1909C9.27619 20.1909 9.27258 20.1909 9.26896 20.1909C9.26535 20.1909 9.26172 20.1909 9.2581 20.1909C9.25447 20.1909 9.25084 20.1909 9.2472 20.1909C9.24357 20.1909 9.23992 20.1909 9.23628 20.1909C9.23263 20.1909 9.22898 20.1909 9.22532 20.1909C9.22166 20.1909 9.218 20.1909 9.21433 20.1909C9.21066 20.1909 9.20699 20.1909 9.20331 20.1909C9.19963 20.1909 9.19594 20.1909 9.19226 20.1909C9.18857 20.1909 9.18487 20.1909 9.18117 20.1909C9.17747 20.1909 9.17376 20.1909 9.17005 20.1909C9.16634 20.1909 9.16263 20.1909 9.1589 20.1909C9.15518 20.1909 9.15145 20.1909 9.14772 20.1909C9.14399 20.1909 9.14025 20.1909 9.1365 20.1909C9.13276 20.1909 9.12901 20.1909 9.12526 20.1909C9.1215 20.1909 9.11774 20.1909 9.11397 20.1909C9.11021 20.1909 9.10643 20.1909 9.10266 20.1909C9.09888 20.1909 9.0951 20.1909 9.09131 20.1909C9.08752 20.1909 9.08372 20.1909 9.07992 20.1909C9.07612 20.1909 9.07232 20.1909 9.0685 20.1909C9.06469 20.1909 9.06087 20.1909 9.05705 20.1909C9.05323 20.1909 9.0494 20.1909 9.04556 20.1909C9.04173 20.1909 9.03789 20.1909 9.03404 20.1909C9.03019 20.1909 9.02634 20.1909 9.02248 20.1909C9.01862 20.1909 9.01476 20.1909 9.01089 20.1909C9.00702 20.1909 9.00314 20.1909 8.99926 20.1909C8.99538 20.1909 8.99149 20.1909 8.98759 20.1909C8.9837 20.1909 8.9798 20.1909 8.97589 20.1909C8.97198 20.1909 8.96807 20.1909 8.96415 20.1909C8.96023 20.1909 8.95631 20.1909 8.95238 20.1909C8.94845 20.1909 8.94451 20.1909 8.94057 20.1909C8.93662 20.1909 8.93267 20.1909 8.92872 20.1909C8.92476 20.1909 8.9208 20.1909 8.91683 20.1909C8.91286 20.1909 8.90889 20.1909 8.90491 20.1909C8.90093 20.1909 8.89694 20.1909 8.89295 20.1909C8.88896 20.1909 8.88496 20.1909 8.88095 20.1909C8.87694 20.1909 8.87293 20.1909 8.86891 20.1909C8.86489 20.1909 8.86087 20.1909 8.85684 20.1909C8.85281 20.1909 8.84877 20.1909 8.84472 20.1909C8.84068 20.1909 8.83663 20.1909 8.83257 20.1909C8.82851 20.1909 8.82445 20.1909 8.82038 20.1909C8.81631 20.1909 8.81223 20.1909 8.80815 20.1909C8.80406 20.1909 8.79997 20.1909 8.79587 20.1909C8.79178 20.1909 8.78767 20.1909 8.78356 20.1909C8.77945 20.1909 8.77534 20.1909 8.77121 20.1909C8.76709 20.1909 8.76296 20.1909 8.75882 20.1909C8.75469 20.1909 8.75054 20.1909 8.74639 20.1909C8.74224 20.1909 8.73808 20.1909 8.73392 20.1909C8.72975 20.1909 8.72558 20.1909 8.72141 20.1909C8.71723 20.1909 8.71304 20.1909 8.70885 20.1909C8.70466 20.1909 8.70046 20.1909 8.69626 20.1909C8.69205 20.1909 8.68784 20.1909 8.68362 20.1909C8.6794 20.1909 8.67517 20.1909 8.67094 20.1909C8.66671 20.1909 8.66247 20.1909 8.65822 20.1909C8.65397 20.1909 8.64972 20.1909 8.64546 20.1909V21.1909V22.1909C8.64972 22.1909 8.65397 22.1909 8.65822 22.1909C8.66247 22.1909 8.66671 22.1909 8.67094 22.1909C8.67517 22.1909 8.6794 22.1909 8.68362 22.1909C8.68784 22.1909 8.69205 22.1909 8.69626 22.1909C8.70046 22.1909 8.70466 22.1909 8.70885 22.1909C8.71304 22.1909 8.71723 22.1909 8.72141 22.1909C8.72558 22.1909 8.72975 22.1909 8.73392 22.1909C8.73808 22.1909 8.74224 22.1909 8.74639 22.1909C8.75054 22.1909 8.75469 22.1909 8.75882 22.1909C8.76296 22.1909 8.76709 22.1909 8.77121 22.1909C8.77534 22.1909 8.77945 22.1909 8.78356 22.1909C8.78767 22.1909 8.79178 22.1909 8.79587 22.1909C8.79997 22.1909 8.80406 22.1909 8.80815 22.1909C8.81223 22.1909 8.81631 22.1909 8.82038 22.1909C8.82445 22.1909 8.82851 22.1909 8.83257 22.1909C8.83663 22.1909 8.84068 22.1909 8.84472 22.1909C8.84877 22.1909 8.85281 22.1909 8.85684 22.1909C8.86087 22.1909 8.86489 22.1909 8.86891 22.1909C8.87293 22.1909 8.87694 22.1909 8.88095 22.1909C8.88496 22.1909 8.88896 22.1909 8.89295 22.1909C8.89694 22.1909 8.90093 22.1909 8.90491 22.1909C8.90889 22.1909 8.91286 22.1909 8.91683 22.1909C8.9208 22.1909 8.92476 22.1909 8.92872 22.1909C8.93267 22.1909 8.93662 22.1909 8.94057 22.1909C8.94451 22.1909 8.94845 22.1909 8.95238 22.1909C8.95631 22.1909 8.96023 22.1909 8.96415 22.1909C8.96807 22.1909 8.97198 22.1909 8.97589 22.1909C8.9798 22.1909 8.9837 22.1909 8.98759 22.1909C8.99149 22.1909 8.99538 22.1909 8.99926 22.1909C9.00314 22.1909 9.00702 22.1909 9.01089 22.1909C9.01476 22.1909 9.01862 22.1909 9.02248 22.1909C9.02634 22.1909 9.03019 22.1909 9.03404 22.1909C9.03789 22.1909 9.04173 22.1909 9.04556 22.1909C9.0494 22.1909 9.05323 22.1909 9.05705 22.1909C9.06087 22.1909 9.06469 22.1909 9.0685 22.1909C9.07232 22.1909 9.07612 22.1909 9.07992 22.1909C9.08372 22.1909 9.08752 22.1909 9.09131 22.1909C9.0951 22.1909 9.09888 22.1909 9.10266 22.1909C9.10643 22.1909 9.11021 22.1909 9.11397 22.1909C9.11774 22.1909 9.1215 22.1909 9.12526 22.1909C9.12901 22.1909 9.13276 22.1909 9.1365 22.1909C9.14025 22.1909 9.14399 22.1909 9.14772 22.1909C9.15145 22.1909 9.15518 22.1909 9.1589 22.1909C9.16263 22.1909 9.16634 22.1909 9.17005 22.1909C9.17376 22.1909 9.17747 22.1909 9.18117 22.1909C9.18487 22.1909 9.18857 22.1909 9.19226 22.1909C9.19594 22.1909 9.19963 22.1909 9.20331 22.1909C9.20699 22.1909 9.21066 22.1909 9.21433 22.1909C9.218 22.1909 9.22166 22.1909 9.22532 22.1909C9.22898 22.1909 9.23263 22.1909 9.23628 22.1909C9.23992 22.1909 9.24357 22.1909 9.2472 22.1909C9.25084 22.1909 9.25447 22.1909 9.2581 22.1909C9.26172 22.1909 9.26535 22.1909 9.26896 22.1909C9.27258 22.1909 9.27619 22.1909 9.2798 22.1909C9.2834 22.1909 9.287 22.1909 9.2906 22.1909C9.2942 22.1909 9.29779 22.1909 9.30137 22.1909C9.30496 22.1909 9.30854 22.1909 9.31212 22.1909C9.31569 22.1909 9.31927 22.1909 9.32283 22.1909C9.3264 22.1909 9.32996 22.1909 9.33352 22.1909C9.33707 22.1909 9.34063 22.1909 9.34417 22.1909C9.34772 22.1909 9.35126 22.1909 9.3548 22.1909C9.35834 22.1909 9.36187 22.1909 9.3654 22.1909C9.36893 22.1909 9.37245 22.1909 9.37597 22.1909C9.37949 22.1909 9.383 22.1909 9.38651 22.1909C9.39002 22.1909 9.39352 22.1909 9.39702 22.1909C9.40052 22.1909 9.40402 22.1909 9.40751 22.1909C9.411 22.1909 9.41448 22.1909 9.41796 22.1909C9.42144 22.1909 9.42492 22.1909 9.42839 22.1909C9.43186 22.1909 9.43533 22.1909 9.4388 22.1909C9.44226 22.1909 9.44572 22.1909 9.44917 22.1909C9.45263 22.1909 9.45608 22.1909 9.45952 22.1909C9.46297 22.1909 9.46641 22.1909 9.46984 22.1909C9.47328 22.1909 9.47671 22.1909 9.48014 22.1909C9.48357 22.1909 9.48699 22.1909 9.49041 22.1909C9.49383 22.1909 9.49724 22.1909 9.50065 22.1909C9.50406 22.1909 9.50747 22.1909 9.51087 22.1909C9.51427 22.1909 9.51767 22.1909 9.52107 22.1909C9.52446 22.1909 9.52785 22.1909 9.53123 22.1909C9.53462 22.1909 9.538 22.1909 9.54138 22.1909C9.54475 22.1909 9.54813 22.1909 9.5515 22.1909C9.62252 22.1909 9.56106 22.1909 9.63158 22.1909C9.63489 22.1909 9.63819 22.1909 9.64149 22.1909C9.64478 22.1909 9.64808 22.1909 9.65137 22.1909C9.65466 22.1909 9.65795 22.1909 9.66123 22.1909C9.66451 22.1909 9.66779 22.1909 9.67107 22.1909C9.67435 22.1909 9.67762 22.1909 9.68089 22.1909C9.68416 22.1909 9.68742 22.1909 9.69068 22.1909C9.69394 22.1909 9.6972 22.1909 9.70046 22.1909C9.70371 22.1909 9.70696 22.1909 9.71021 22.1909C9.71346 22.1909 9.7167 22.1909 9.71994 22.1909C9.72318 22.1909 9.72642 22.1909 9.72966 22.1909C9.73289 22.1909 9.73612 22.1909 9.73935 22.1909C9.74257 22.1909 9.7458 22.1909 9.74902 22.1909C9.75224 22.1909 9.75546 22.1909 9.75867 22.1909C9.76188 22.1909 9.76509 22.1909 9.7683 22.1909C9.77151 22.1909 9.77471 22.1909 9.77791 22.1909C9.78111 22.1909 9.78431 22.1909 9.7875 22.1909C9.7907 22.1909 9.79389 22.1909 9.79708 22.1909C9.80027 22.1909 9.80345 22.1909 9.80663 22.1909C9.80981 22.1909 9.81299 22.1909 9.81617 22.1909C9.81934 22.1909 9.82252 22.1909 9.82568 22.1909C9.82885 22.1909 9.83202 22.1909 9.83518 22.1909C9.83835 22.1909 9.84151 22.1909 9.84466 22.1909C9.84782 22.1909 9.85098 22.1909 9.85413 22.1909C9.85728 22.1909 9.86043 22.1909 9.86357 22.1909C9.86672 22.1909 9.86986 22.1909 9.873 22.1909C9.87614 22.1909 9.87928 22.1909 9.88241 22.1909C9.88555 22.1909 9.88868 22.1909 9.89181 22.1909C9.89494 22.1909 9.89806 22.1909 9.90119 22.1909C9.90431 22.1909 9.90743 22.1909 9.91055 22.1909C9.91366 22.1909 9.91678 22.1909 9.91989 22.1909C9.923 22.1909 9.92611 22.1909 9.92922 22.1909C9.93233 22.1909 9.93543 22.1909 9.93853 22.1909C9.94164 22.1909 9.94474 22.1909 9.94783 22.1909C9.95093 22.1909 9.95402 22.1909 9.95711 22.1909C9.96021 22.1909 9.96329 22.1909 9.96638 22.1909C9.96947 22.1909 9.97255 22.1909 9.97563 22.1909C9.97872 22.1909 9.9818 22.1909 9.98487 22.1909C9.98795 22.1909 9.99102 22.1909 9.9941 22.1909C9.99717 22.1909 10.0002 22.1909 10.0033 22.1909C10.0064 22.1909 10.0094 22.1909 10.0125 22.1909C10.0156 22.1909 10.0186 22.1909 10.0217 22.1909C10.0247 22.1909 10.0278 22.1909 10.0309 22.1909C10.0339 22.1909 10.037 22.1909 10.04 22.1909C10.0431 22.1909 10.0461 22.1909 10.0491 22.1909C10.0522 22.1909 10.0552 22.1909 10.0583 22.1909C10.0613 22.1909 10.0644 22.1909 10.0674 22.1909C10.0704 22.1909 10.0735 22.1909 10.0765 22.1909C10.0795 22.1909 10.0826 22.1909 10.0856 22.1909C10.0886 22.1909 10.0916 22.1909 10.0947 22.1909C10.0977 22.1909 10.1007 22.1909 10.1037 22.1909C10.1068 22.1909 10.1098 22.1909 10.1128 22.1909C10.1158 22.1909 10.1188 22.1909 10.1218 22.1909C10.1249 22.1909 10.1279 22.1909 10.1309 22.1909C10.1339 22.1909 10.1369 22.1909 10.1399 22.1909C10.1429 22.1909 10.1459 22.1909 10.1489 22.1909C10.1519 22.1909 10.1549 22.1909 10.1579 22.1909C10.1609 22.1909 10.1639 22.1909 10.1669 22.1909C10.1699 22.1909 10.1729 22.1909 10.1759 22.1909C10.1789 22.1909 10.1819 22.1909 10.1849 22.1909C10.1878 22.1909 10.1908 22.1909 10.1938 22.1909C10.1968 22.1909 10.1998 22.1909 10.2028 22.1909C10.2058 22.1909 10.2087 22.1909 10.2117 22.1909C10.2147 22.1909 10.2177 22.1909 10.2207 22.1909C10.2236 22.1909 10.2266 22.1909 10.2296 22.1909C10.2326 22.1909 10.2355 22.1909 10.2385 22.1909C10.2415 22.1909 10.2444 22.1909 10.2474 22.1909C10.2504 22.1909 10.2534 22.1909 10.2563 22.1909C10.2593 22.1909 10.2623 22.1909 10.2652 22.1909C10.2682 22.1909 10.2711 22.1909 10.2741 22.1909C10.2771 22.1909 10.28 22.1909 10.283 22.1909C10.2859 22.1909 10.2889 22.1909 10.2919 22.1909C10.2948 22.1909 10.2978 22.1909 10.3007 22.1909C10.4261 22.1909 10.3169 22.1909 10.4419 22.1909C10.4448 22.1909 10.4477 22.1909 10.4507 22.1909C10.4536 22.1909 10.4565 22.1909 10.4594 22.1909C10.4624 22.1909 10.4653 22.1909 10.4682 22.1909C10.4711 22.1909 10.4741 22.1909 10.477 22.1909C10.4799 22.1909 10.4828 22.1909 10.4858 22.1909C10.4887 22.1909 10.4916 22.1909 10.4945 22.1909C10.4975 22.1909 10.5004 22.1909 10.5033 22.1909C10.5062 22.1909 10.5092 22.1909 10.5121 22.1909C10.515 22.1909 10.5179 22.1909 10.5209 22.1909C10.5238 22.1909 10.5267 22.1909 10.5296 22.1909C10.5326 22.1909 10.5355 22.1909 10.5384 22.1909C10.5413 22.1909 10.5442 22.1909 10.5472 22.1909C10.5501 22.1909 10.553 22.1909 10.5559 22.1909C10.5589 22.1909 10.5618 22.1909 10.5647 22.1909C10.5676 22.1909 10.5706 22.1909 10.5735 22.1909C10.5764 22.1909 10.5793 22.1909 10.5822 22.1909C10.5852 22.1909 10.5881 22.1909 10.591 22.1909C10.5939 22.1909 10.5969 22.1909 10.5998 22.1909C10.6027 22.1909 10.6056 22.1909 10.6086 22.1909C10.6115 22.1909 10.6144 22.1909 10.6173 22.1909C10.6203 22.1909 10.6232 22.1909 10.6261 22.1909C10.629 22.1909 10.632 22.1909 10.6349 22.1909C10.6378 22.1909 10.6407 22.1909 10.6437 22.1909C10.6466 22.1909 10.6495 22.1909 10.6524 22.1909C10.6554 22.1909 10.6583 22.1909 10.6612 22.1909C10.6641 22.1909 10.6671 22.1909 10.67 22.1909C10.6729 22.1909 10.6759 22.1909 10.6788 22.1909C10.6817 22.1909 10.6847 22.1909 10.6876 22.1909C10.6905 22.1909 10.6934 22.1909 10.6964 22.1909C10.6993 22.1909 10.7022 22.1909 10.7052 22.1909C10.7081 22.1909 10.711 22.1909 10.714 22.1909C10.7169 22.1909 10.7198 22.1909 10.7228 22.1909C10.7257 22.1909 10.7287 22.1909 10.7316 22.1909C10.7345 22.1909 10.7375 22.1909 10.7404 22.1909C10.7433 22.1909 10.7463 22.1909 10.7492 22.1909C10.7522 22.1909 10.7551 22.1909 10.758 22.1909C10.761 22.1909 10.7639 22.1909 10.7669 22.1909C10.7698 22.1909 10.7728 22.1909 10.7757 22.1909C10.7787 22.1909 10.7816 22.1909 10.7846 22.1909C10.7875 22.1909 10.7904 22.1909 10.7934 22.1909C10.7963 22.1909 10.7993 22.1909 10.8022 22.1909C10.8052 22.1909 10.8082 22.1909 10.8111 22.1909C10.8141 22.1909 10.817 22.1909 10.82 22.1909C10.8229 22.1909 10.8259 22.1909 10.8288 22.1909C10.8318 22.1909 10.8348 22.1909 10.8377 22.1909C10.8407 22.1909 10.8436 22.1909 10.8466 22.1909C10.8496 22.1909 10.8525 22.1909 10.8555 22.1909C10.8585 22.1909 10.8614 22.1909 10.8644 22.1909C10.8674 22.1909 10.8703 22.1909 10.8733 22.1909C10.8763 22.1909 10.8792 22.1909 10.8822 22.1909C10.8852 22.1909 10.8882 22.1909 10.8911 22.1909C10.8941 22.1909 10.8971 22.1909 10.9001 22.1909C10.9031 22.1909 10.906 22.1909 10.909 22.1909C10.912 22.1909 10.915 22.1909 10.918 22.1909C10.921 22.1909 10.9239 22.1909 10.9269 22.1909C10.9299 22.1909 10.9329 22.1909 10.9359 22.1909C10.9389 22.1909 10.9419 22.1909 10.9449 22.1909C10.9479 22.1909 10.9509 22.1909 10.9539 22.1909C10.9569 22.1909 10.9599 22.1909 10.9629 22.1909C10.9659 22.1909 10.9689 22.1909 10.9719 22.1909C10.9749 22.1909 10.9779 22.1909 10.9809 22.1909C10.9839 22.1909 10.9869 22.1909 10.9899 22.1909C10.9929 22.1909 10.9959 22.1909 10.999 22.1909C11.002 22.1909 11.005 22.1909 11.008 22.1909C11.011 22.1909 11.0141 22.1909 11.0171 22.1909C11.0201 22.1909 11.0231 22.1909 11.0262 22.1909C11.0292 22.1909 11.0322 22.1909 11.0352 22.1909C11.0383 22.1909 11.0413 22.1909 11.0443 22.1909C11.0474 22.1909 11.0504 22.1909 11.0534 22.1909C11.0565 22.1909 11.0595 22.1909 11.0626 22.1909C11.0656 22.1909 11.0687 22.1909 11.0717 22.1909C11.0748 22.1909 11.0778 22.1909 11.0809 22.1909C11.0839 22.1909 11.087 22.1909 11.09 22.1909C11.0931 22.1909 11.0961 22.1909 11.0992 22.1909C11.1023 22.1909 11.1053 22.1909 11.1084 22.1909C11.1114 22.1909 11.1145 22.1909 11.1176 22.1909C11.1207 22.1909 11.1237 22.1909 11.1268 22.1909C11.1299 22.1909 11.133 22.1909 11.136 22.1909C11.1391 22.1909 11.1422 22.1909 11.1453 22.1909C11.1484 22.1909 11.1515 22.1909 11.1545 22.1909C11.1576 22.1909 11.1607 22.1909 11.1638 22.1909C11.1669 22.1909 11.17 22.1909 11.1731 22.1909C11.1762 22.1909 11.1793 22.1909 11.1824 22.1909C11.1855 22.1909 11.1886 22.1909 11.1917 22.1909C11.1948 22.1909 11.198 22.1909 11.2011 22.1909C11.2042 22.1909 11.2073 22.1909 11.2104 22.1909C11.2136 22.1909 11.2167 22.1909 11.2198 22.1909C11.2229 22.1909 11.2261 22.1909 11.2292 22.1909C11.2323 22.1909 11.2355 22.1909 11.2386 22.1909C11.2417 22.1909 11.2449 22.1909 11.248 22.1909C11.2512 22.1909 11.2543 22.1909 11.2575 22.1909C11.2606 22.1909 11.2638 22.1909 11.2669 22.1909C11.2701 22.1909 11.2732 22.1909 11.2764 22.1909C11.2795 22.1909 11.2827 22.1909 11.2859 22.1909C11.289 22.1909 11.2922 22.1909 11.2954 22.1909C11.2986 22.1909 11.3017 22.1909 11.3049 22.1909C11.3081 22.1909 11.3113 22.1909 11.3145 22.1909C11.3176 22.1909 11.3208 22.1909 11.324 22.1909C11.3272 22.1909 11.3304 22.1909 11.3336 22.1909C11.3368 22.1909 11.34 22.1909 11.3432 22.1909C11.3464 22.1909 11.3496 22.1909 11.3528 22.1909C11.356 22.1909 11.3593 22.1909 11.3625 22.1909C11.3657 22.1909 11.3689 22.1909 11.3721 22.1909C11.3754 22.1909 11.3786 22.1909 11.3818 22.1909C11.385 22.1909 11.3883 22.1909 11.3915 22.1909C11.3948 22.1909 11.398 22.1909 11.4012 22.1909C11.4045 22.1909 11.4077 22.1909 11.411 22.1909C11.4142 22.1909 11.4175 22.1909 11.4208 22.1909C11.424 22.1909 11.4273 22.1909 11.4305 22.1909C11.4338 22.1909 11.4371 22.1909 11.4403 22.1909C11.4436 22.1909 11.4469 22.1909 11.4502 22.1909C11.4535 22.1909 11.4567 22.1909 11.46 22.1909C11.4633 22.1909 11.4666 22.1909 11.4699 22.1909C11.4732 22.1909 11.4765 22.1909 11.4798 22.1909C11.4831 22.1909 11.4864 22.1909 11.4897 22.1909C11.493 22.1909 11.4963 22.1909 11.4997 22.1909C11.503 22.1909 11.5063 22.1909 11.5096 22.1909C11.5129 22.1909 11.5163 22.1909 11.5196 22.1909C11.5229 22.1909 11.5263 22.1909 11.5296 22.1909C11.533 22.1909 11.5363 22.1909 11.5397 22.1909C11.543 22.1909 11.5464 22.1909 11.5497 22.1909C11.5531 22.1909 11.5564 22.1909 11.5598 22.1909C11.5632 22.1909 11.5665 22.1909 11.5699 22.1909C11.5733 22.1909 11.5767 22.1909 11.58 22.1909C11.5834 22.1909 11.5868 22.1909 11.5902 22.1909C11.5936 22.1909 11.597 22.1909 11.6004 22.1909C11.6038 22.1909 11.6072 22.1909 11.6106 22.1909C11.614 22.1909 11.6174 22.1909 11.6208 22.1909C11.6242 22.1909 11.6277 22.1909 11.6311 22.1909C11.6345 22.1909 11.6379 22.1909 11.6414 22.1909C11.6448 22.1909 11.6482 22.1909 11.6517 22.1909C11.6551 22.1909 11.6586 22.1909 11.662 22.1909C11.6655 22.1909 11.6689 22.1909 11.6724 22.1909C11.6758 22.1909 11.6793 22.1909 11.6828 22.1909C11.6862 22.1909 11.6897 22.1909 11.6932 22.1909C11.6967 22.1909 11.7001 22.1909 11.7036 22.1909C11.7071 22.1909 11.7106 22.1909 11.7141 22.1909C11.7176 22.1909 11.7211 22.1909 11.7246 22.1909C11.7281 22.1909 11.7316 22.1909 11.7351 22.1909C11.7386 22.1909 11.7422 22.1909 11.7457 22.1909C11.7492 22.1909 11.7527 22.1909 11.7563 22.1909C11.7598 22.1909 11.7633 22.1909 11.7669 22.1909C11.7704 22.1909 11.774 22.1909 11.7775 22.1909C11.7811 22.1909 11.7846 22.1909 11.7882 22.1909C11.7918 22.1909 11.7953 22.1909 11.7989 22.1909C11.8025 22.1909 11.8061 22.1909 11.8096 22.1909C11.8132 22.1909 11.8168 22.1909 11.8204 22.1909C11.824 22.1909 11.8276 22.1909 11.8312 22.1909C11.8348 22.1909 11.8384 22.1909 11.842 22.1909C11.8456 22.1909 11.8492 22.1909 11.8529 22.1909C11.8565 22.1909 11.8601 22.1909 11.8637 22.1909C11.8674 22.1909 11.871 22.1909 11.8747 22.1909C11.8783 22.1909 11.8819 22.1909 11.8856 22.1909C11.8893 22.1909 11.8929 22.1909 11.8966 22.1909C11.9002 22.1909 11.9039 22.1909 11.9076 22.1909C11.9113 22.1909 11.9149 22.1909 11.9186 22.1909C11.9223 22.1909 11.926 22.1909 11.9297 22.1909C11.9334 22.1909 11.9371 22.1909 11.9408 22.1909C11.9445 22.1909 11.9482 22.1909 11.9519 22.1909C11.9557 22.1909 11.9594 22.1909 11.9631 22.1909C11.9668 22.1909 11.9706 22.1909 11.9743 22.1909C11.978 22.1909 11.9818 22.1909 11.9855 22.1909C11.9893 22.1909 11.993 22.1909 11.9968 22.1909C12.0006 22.1909 12.0043 22.1909 12.0081 22.1909C12.0119 22.1909 12.0157 22.1909 12.0194 22.1909C12.0232 22.1909 12.027 22.1909 12.0308 22.1909C12.0346 22.1909 12.0384 22.1909 12.0422 22.1909C12.046 22.1909 12.0498 22.1909 12.0537 22.1909C12.0575 22.1909 12.0613 22.1909 12.0651 22.1909C12.069 22.1909 12.0728 22.1909 12.0766 22.1909C12.0805 22.1909 12.0843 22.1909 12.0882 22.1909C12.092 22.1909 12.0959 22.1909 12.0998 22.1909C12.1036 22.1909 12.1075 22.1909 12.1114 22.1909C12.1152 22.1909 12.1191 22.1909 12.123 22.1909C12.1269 22.1909 12.1308 22.1909 12.1347 22.1909C12.1386 22.1909 12.1425 22.1909 12.1464 22.1909C12.318 22.1909 12.3568 22.1909 12.542 22.1909C12.7273 22.1909 12.781 22.1909 12.9824 22.1909C12.9872 22.1909 12.9921 22.1909 12.997 22.1909C13.0018 22.1909 13.0067 22.1909 13.0116 22.1909C13.0165 22.1909 13.0213 22.1909 13.0262 22.1909C13.0311 22.1909 13.036 22.1909 13.041 22.1909C13.0459 22.1909 13.0508 22.1909 13.0557 22.1909C13.0607 22.1909 13.0656 22.1909 13.0705 22.1909C13.0755 22.1909 13.0804 22.1909 13.0854 22.1909C13.0904 22.1909 13.0954 22.1909 13.1003 22.1909C13.1053 22.1909 13.1103 22.1909 13.1153 22.1909C13.1203 22.1909 13.1253 22.1909 13.1303 22.1909C13.1354 22.1909 13.1404 22.1909 13.1454 22.1909C13.1505 22.1909 13.1555 22.1909 13.1606 22.1909C13.1656 22.1909 13.1707 22.1909 13.1758 22.1909C13.1808 22.1909 13.1859 22.1909 13.191 22.1909C13.1961 22.1909 13.2012 22.1909 13.2063 22.1909C13.2114 22.1909 13.2165 22.1909 13.2217 22.1909C13.2268 22.1909 13.2319 22.1909 13.2371 22.1909C13.2422 22.1909 13.2474 22.1909 13.2525 22.1909C13.2577 22.1909 13.2629 22.1909 13.268 22.1909C13.2732 22.1909 13.2784 22.1909 13.2836 22.1909C13.2888 22.1909 13.294 22.1909 13.2992 22.1909C13.3045 22.1909 13.3097 22.1909 13.3149 22.1909C13.3202 22.1909 13.3254 22.1909 13.3307 22.1909C13.3359 22.1909 13.3412 22.1909 13.3465 22.1909C13.3517 22.1909 13.357 22.1909 13.3623 22.1909C13.3676 22.1909 13.3729 22.1909 13.3782 22.1909C13.3835 22.1909 13.3888 22.1909 13.3942 22.1909C13.3995 22.1909 13.4048 22.1909 13.4102 22.1909C13.4155 22.1909 13.4209 22.1909 13.4263 22.1909C13.4316 22.1909 13.437 22.1909 13.4424 22.1909C13.4478 22.1909 13.4532 22.1909 13.4586 22.1909C13.464 22.1909 13.4694 22.1909 13.4749 22.1909C13.4803 22.1909 13.4857 22.1909 13.4912 22.1909C13.4966 22.1909 13.5021 22.1909 13.5075 22.1909C13.513 22.1909 13.5185 22.1909 13.524 22.1909C13.5294 22.1909 13.5349 22.1909 13.5404 22.1909C13.5459 22.1909 13.5515 22.1909 13.557 22.1909C13.5625 22.1909 13.568 22.1909 13.5736 22.1909C13.5791 22.1909 13.5847 22.1909 13.5902 22.1909C13.5958 22.1909 13.6014 22.1909 13.607 22.1909C13.6125 22.1909 13.6181 22.1909 13.6237 22.1909C13.6294 22.1909 13.635 22.1909 13.6406 22.1909C13.6462 22.1909 13.6518 22.1909 13.6575 22.1909C13.6631 22.1909 13.6688 22.1909 13.6745 22.1909C13.6801 22.1909 13.6858 22.1909 13.6915 22.1909C13.6972 22.1909 13.7029 22.1909 13.7086 22.1909C13.7143 22.1909 13.72 22.1909 13.7257 22.1909C13.7314 22.1909 13.7372 22.1909 13.7429 22.1909C13.7487 22.1909 13.7544 22.1909 13.7602 22.1909C13.7659 22.1909 13.7717 22.1909 13.7775 22.1909C13.7833 22.1909 13.7891 22.1909 13.7949 22.1909C13.8007 22.1909 13.8065 22.1909 13.8124 22.1909C13.8745 22.1909 13.8203 22.1909 13.8828 22.1909C13.8887 22.1909 13.8946 22.1909 13.9006 22.1909C13.9065 22.1909 13.9124 22.1909 13.9184 22.1909C13.9244 22.1909 13.9303 22.1909 13.9363 22.1909C13.9423 22.1909 13.9483 22.1909 13.9543 22.1909C13.9603 22.1909 13.9663 22.1909 13.9723 22.1909C13.9783 22.1909 13.9843 22.1909 13.9904 22.1909C13.9964 22.1909 14.0025 22.1909 14.0085 22.1909C14.0146 22.1909 14.0207 22.1909 14.0268 22.1909C14.0328 22.1909 14.0389 22.1909 14.045 22.1909C14.0511 22.1909 14.0573 22.1909 14.0634 22.1909C14.0695 22.1909 14.0757 22.1909 14.0818 22.1909C14.088 22.1909 14.0941 22.1909 14.1003 22.1909C14.1065 22.1909 14.1126 22.1909 14.1188 22.1909C14.125 22.1909 14.1312 22.1909 14.1374 22.1909C14.1437 22.1909 14.1499 22.1909 14.1561 22.1909C14.1624 22.1909 14.1686 22.1909 14.1749 22.1909C14.1811 22.1909 14.1874 22.1909 14.1937 22.1909C14.2 22.1909 14.2063 22.1909 14.2126 22.1909C14.2189 22.1909 14.2252 22.1909 14.2315 22.1909C14.2378 22.1909 14.2442 22.1909 14.2505 22.1909C14.2569 22.1909 14.2633 22.1909 14.2696 22.1909C14.276 22.1909 14.2824 22.1909 14.2888 22.1909C14.2952 22.1909 14.3016 22.1909 14.308 22.1909C14.3144 22.1909 14.3208 22.1909 14.3273 22.1909C14.3337 22.1909 14.3402 22.1909 14.3466 22.1909C14.3531 22.1909 14.3596 22.1909 14.3661 22.1909C14.3726 22.1909 14.3791 22.1909 14.3856 22.1909C14.3921 22.1909 14.3986 22.1909 14.4051 22.1909C14.4401 22.1909 14.4094 22.1909 14.4445 22.1909C14.4511 22.1909 14.4577 22.1909 14.4643 22.1909C14.4709 22.1909 14.4775 22.1909 14.4841 22.1909C14.4907 22.1909 14.4974 22.1909 14.504 22.1909C14.5107 22.1909 14.5173 22.1909 14.524 22.1909C14.5307 22.1909 14.5374 22.1909 14.5441 22.1909C14.5508 22.1909 14.5575 22.1909 14.5642 22.1909C14.5709 22.1909 14.5777 22.1909 14.5844 22.1909C14.5912 22.1909 14.5979 22.1909 14.6047 22.1909C14.6115 22.1909 14.6182 22.1909 14.625 22.1909C14.6318 22.1909 14.6386 22.1909 14.6454 22.1909V21.1909Z\" fill=\"#F1F7FF\"/>\n        <path d=\"M0.506345 9.00451C-0.162011 8.61993 -0.162012 7.65557 0.506343 7.271L9.90127 1.86511C10.5679 1.48151 11.4 1.96272 11.4 2.73187L11.4 13.5436C11.4 14.3128 10.5679 14.794 9.90127 14.4104L0.506345 9.00451Z\" fill=\"#F1F7FF\"/>\n    </svg>\n", "import {App} from \"../App\";\nimport {AdapterLog} from \"./AdapterWeb/AdapterLog\";\nimport isEqual from \"lodash/isEqual\";\nimport {\n    ChannelType,\n    ClassHandle,\n    Frame,\n    InterfacePeerConnection,\n    InterfacePeerConnectionDelegate,\n    MainModule,\n    SpanByte,\n    StatePeer,\n    StateChannel,\n    StateICE,\n    uvec2\n} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {VideoStreamTrackGenerator, VideoTrackGenerator} from \"./VideoStreamTrackGenerator\";\nimport {FacingMode} from \"@root/Frontend/Studio/Views/DeepSightConnect/VideoOverlay\";\nimport {engineName} from \"react-device-detect\";\n\n// WebRTC Overview: https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_calling\n\nexport class PeerConnectionWeb implements Omit<InterfacePeerConnection, keyof ClassHandle> {\n\n    // Constants for PACKET_MAX_SIZE and BUFFER_CAPACITY of data channels (from Core)\n    public static readonly PACKET_MAX_SIZE: number = 65500;  ///< PacketWebRTC::PACKET_MAX_SIZE\n    public static readonly BUFFER_CAPACITY: number = 655000; ///< PacketWebRTC::BUFFER_CAPACITY\n\n    //////////////////////////////// Private Members ////////////////////////////////\n\n    private readonly _peerID: bigint;                                      ///< PeerID\n    private readonly _peerConnection: RTCPeerConnection;                   ///< PeerConnection\n    private readonly _videoLocal: VideoTrackGenerator;                     ///< Local video track generator\n    private readonly _videoRemote: HTMLVideoElement;                       ///< remote video receiving the feed\n    private readonly _videoWriter: WritableStreamDefaultWriter;            ///< Writer for the local video track\n    private _channelFast: RTCDataChannel | null               = null;      ///< Data Channel Fast\n    private _channelReliable: RTCDataChannel | null           = null;      ///< Data Channel Reliable\n    private _delegate: InterfacePeerConnectionDelegate | null = null;      ///< Delegate of PeerConnection\n    private _localMediaStream: MediaStream | null             = null;      ///< local media stream\n    private _videoPlaying: boolean                            = false;     ///< flag when video is playing\n    private _lastFrameReceivedTimestampRTP : bigint           = BigInt(0); ///< Last Frame received (RTP)\n\n    //////////////////////////////// Static Methods ////////////////////////////////\n\n    private static getEngine() : MainModule { return App.getInstance().getEngine(); }\n\n    private static log(something: any): null {\n        if(something instanceof Error)\n            AdapterLog.ERROR(\"PeerWebRTC: \" + something.toString());\n        else\n            AdapterLog.INFO(\"PeerWebRTC: \" + (something ? something.toString() : \"\"));\n        return null;\n    }\n\n    /// creates a video in the dom for receiving\n    private static createRemoteVideo() : HTMLVideoElement {\n        const video : HTMLVideoElement = document.createElement(\"video\");\n        video.autoplay = true;\n        video.style.position = \"fixed\";\n        video.style.top = \"0\";\n        video.style.zIndex = \"999\";\n        video.style.display = \"none\";\n\n        // TODO: this video element should be in the React Hierarchy!\n        document.getElementsByTagName(\"BODY\")[0].appendChild(video);\n        return video;\n    }\n\n    ///////////////////////////////// Constructor //////////////////////////////////\n\n    /// Constructor\n    public constructor(peerID: bigint, delegatePtr: number){\n        this._peerID = peerID;\n        this._delegate = PeerConnectionWeb.getEngine().InterfacePeerConnection.castToDelegate(delegatePtr);\n        this._peerConnection = this.createPeerConnection();\n        this._videoRemote = PeerConnectionWeb.createRemoteVideo();\n        this._videoRemote.addEventListener(\"playing\", () => { this._videoPlaying = true; }, true);\n\n        AdapterLog.INFO(\"Adding data channels for peer: \" + this._peerID);\n        this._channelFast = this.addDataChannel(\"FAST\");\n        this._channelReliable = this.addDataChannel(\"RELIABLE\");\n        if (!this._channelFast)\n            AdapterLog.ERROR(\"Could not create data channel fast!\");\n        if (!this._channelReliable)\n            AdapterLog.ERROR(\"Could not create data channel reliable!\");\n\n        // Create a local VideoTrackGenerator using the MediaStreamTrackGenerator API\n        if (typeof window.MediaStreamTrackGenerator === \"function\"){\n            const videoGenerator: MediaStreamVideoTrackGenerator = new MediaStreamTrackGenerator({ kind: \"video\" });\n            this._videoLocal = Object.assign(videoGenerator, {track: videoGenerator as MediaStreamVideoTrack });\n        }\n\n        // or polyfill using VideoStreamTrackGenerator (which uses 2D Canvas under the hood)\n        else\n            this._videoLocal = new VideoStreamTrackGenerator();\n\n        // Save the associated writer\n        this._videoWriter = this._videoLocal.writable.getWriter();\n    }\n\n    /////////////////////////////// Getter & Setter ///////////////////////////////\n\n    /// Assign PeerConnection Delegate\n    setDelegate(delegatePtr: InterfacePeerConnectionDelegate): void { this._delegate = delegatePtr; }\n\n    /// sets the current remote description for signaling purposes\n    setRemoteDescription(descriptionSDP: string, isOffer: boolean) : boolean {\n\n        // we need to extract the SDP into a RTCSessionDescription\n        const dict : RTCSessionDescriptionInit = {\n            sdp  : descriptionSDP,\n            type : (isOffer ? \"offer\" : \"answer\")\n        };\n        const sessionDescription: RTCSessionDescription = new RTCSessionDescription(dict);\n\n        AdapterLog.DEBUG(\"Setting remote \" + (isOffer ? \"offer\" : \"answer\") + \" SDP\");\n\n        // if an offer, we set the remote description (and will create response after)\n        if(isOffer)\n            this._peerConnection.setRemoteDescription(sessionDescription)\n                .then(this.onRemoteDescriptionOfferSet.bind(this)).catch(PeerConnectionWeb.log);\n\n        // if an answer, verify if we're already stable before assigning it\n        else if (this._peerConnection.signalingState === \"stable\")\n            AdapterLog.INFO(\"Duplicate remote answer ignored (peer already stable)\");\n        else\n            this._peerConnection.setRemoteDescription(sessionDescription).catch(PeerConnectionWeb.log);\n\n        return true;\n    }\n\n    /// restart the ICE discovery (causes renegotiation)\n    restartICE(): void {\n        this._peerConnection.restartIce();\n    }\n\n    /// adds an ice candidate to the peer connection received\n    addCandidateICE(candidateICE: string, lineIndex: number, mediaID: string) : boolean {\n\n        // extract from memory into array, then into a new RTCIceCandidate\n        const candidateInfo : RTCIceCandidateInit = {\n                  candidate : candidateICE,\n                     sdpMid : mediaID,\n              sdpMLineIndex : lineIndex\n        };\n        const candidate = new RTCIceCandidate(candidateInfo);\n\n        // verify if the remote description has been set\n        if(!this._peerConnection.remoteDescription || !this._peerConnection.localDescription){\n            AdapterLog.WARN(\"Can't add IceCandidate before both description are set:\" + candidateInfo.candidate);\n            return false;\n        }\n\n        // add the ICE candidate to the current peer connection\n        this._peerConnection.addIceCandidate(candidate).catch(PeerConnectionWeb.log);\n        return true;\n    }\n\n    /// sends a frame to a WebRTC peer\n    async sendVideoFrame(frame: Frame, rotated: boolean): Promise<void> {\n\n        // get frame infos\n        const sizeY: uvec2 = frame.getSize();\n        const contiguousSizeY: number = sizeY.x * sizeY.y;\n        const contiguousSizeUV: number = contiguousSizeY / 4;\n        const timestampNS: bigint = frame.getTimeImageNS();\n        const dataY: SpanByte = frame.getDataY();\n        const dataU: SpanByte = frame.getDataU();\n        const dataV: SpanByte = frame.getDataV();\n\n        // Read source bytes from unsigned heap view.\n        const heap: Uint8Array = PeerConnectionWeb.getEngine().HEAPU8;\n        const planeLayout: PlaneLayout[] = [];\n        let buffer: Uint8Array;\n\n        // Safari doesn't support SharedArrayBuffer backed VideoFrame, copy into an intermediate buffer!\n        // TODO(Marco): Remove if fixed\n        if (engineName === \"WebKit\") {\n            const yOffset = 0;\n            const uOffset: number = contiguousSizeY;\n            const vOffset: number = contiguousSizeY + contiguousSizeUV;\n            buffer = new Uint8Array(contiguousSizeY + contiguousSizeUV * 2);\n            buffer.set(heap.subarray(dataY.data, dataY.data + contiguousSizeY), yOffset);\n            buffer.set(heap.subarray(dataU.data, dataU.data + contiguousSizeUV), uOffset);\n            buffer.set(heap.subarray(dataV.data, dataV.data + contiguousSizeUV), vOffset);\n            planeLayout.push(\n                { offset: yOffset, stride: sizeY.x },\n                { offset: uOffset, stride: sizeY.x / 2 },\n                { offset: vOffset, stride: sizeY.x / 2 }\n            );\n        }\n        else {\n            buffer = heap;\n            planeLayout.push(\n                { offset: dataY.data, stride: sizeY.x },\n                { offset: dataU.data, stride: sizeY.x / 2 },\n                { offset: dataV.data, stride: sizeY.x / 2 }\n            );\n        }\n\n        // construct frame buffer options.\n        const options : VideoFrameBufferInit = {\n            format: \"I420\",\n            codedWidth: sizeY.x,\n            codedHeight: sizeY.y,\n            timestamp: Number(timestampNS / BigInt(1000)), // convert to microseconds\n            layout: planeLayout\n        }\n\n        // retrieve frame data to construct the VideoFrame\n        const videoFrame: VideoFrame = new VideoFrame(buffer, options);\n\n        // try to send the frame to the peer and close it\n        try {\n            await this._videoWriter.write(videoFrame);\n        } catch(error) {\n            AdapterLog.ERROR(\"VideoWriter:\" + error.toString());\n        }\n        videoFrame.close();\n    }\n\n    /// returns the state of the corresponding channel type\n    getChannelState(type: ChannelType): StateChannel {\n        let channel: RTCDataChannel | null = null;\n        switch (type){\n            case PeerConnectionWeb.getEngine().ChannelType.FAST:     channel = this._channelFast; break;\n            case PeerConnectionWeb.getEngine().ChannelType.RELIABLE: channel = this._channelReliable; break;\n        }\n        return channel?.readyState.toUpperCase() as Uppercase<RTCDataChannelState> ?? \"CLOSED\";\n    }\n\n    /// Send message to peer\n    sendMessageFast(message: SpanByte) : number {\n\n        // check if we can send fast\n        if(this._channelFast?.readyState !== \"open\")\n            return 0;\n\n        // check if the buffer is too full to send\n        const dataChannelFastBufferedAmount = this._channelFast.bufferedAmount + message.size;\n        if(dataChannelFastBufferedAmount > PeerConnectionWeb.BUFFER_CAPACITY) {\n            AdapterLog.WARN(\"Fast data channel buffer is full, message will be dropped...\\n\");\n            return 0\n        }\n\n        // converts the message ptr into an Uint8Array\n        const array: Uint8Array = PeerConnectionWeb.getEngine().HEAPU8.slice(message.data, message.data + message.size);\n\n        // send data and catch any exceptions on fail\n        try {\n            this._channelFast.send(array);\n            return dataChannelFastBufferedAmount;\n        } catch(error) {\n            AdapterLog.ERROR(\"DataChannel Fast:\" + error.toString());\n            return 0;\n        }\n    }\n\n    /// Send message to peer\n    public sendMessageReliable(message: SpanByte, bufferedAmount : number) : number {\n\n        // check if we can send reliably\n        if(this._channelReliable?.readyState !== \"open\")\n            return 0;\n\n        // check if the buffer is too full to send\n        const newBufferedAmount = Math.max(bufferedAmount, this._channelReliable.bufferedAmount) + message.size;\n        if(newBufferedAmount > PeerConnectionWeb.BUFFER_CAPACITY) {\n            AdapterLog.ERROR(\"Reliable data channel buffer full, QueueDataChannelReliable should not send!\\n\");\n            return 0;\n        }\n\n        // converts the message ptr into an Uint8Array\n        const array: Uint8Array = PeerConnectionWeb.getEngine().HEAPU8.slice(message.data, message.data + message.size);\n\n        // send data and catch any exceptions on fail\n        try {\n            this._channelReliable.send(array);\n            return newBufferedAmount;\n        } catch(error) {\n            AdapterLog.ERROR(\"DataChannel Reliable:\" + JSON.stringify(error));\n            return 0;\n        }\n    }\n\n    //////////////////////////////// Private Methods /////////////////////////////////\n\n    /// returns the preferred codecs for video (See discussion: https://github.com/w3c/webrtc-pc/issues/2888)\n    private static getPreferredCodecsForVideoTransceivers(): RTCRtpCodec[] {\n\n        // fetch the RTPCapabilities for the receiver and the sender transceiver\n        const capabilitiesReceiver: RTCRtpCapabilities | null = RTCRtpReceiver.getCapabilities(\"video\");\n        const capabilitiesSender: RTCRtpCapabilities | null = RTCRtpSender.getCapabilities(\"video\");\n        if(!capabilitiesReceiver || !capabilitiesSender){\n            AdapterLog.ERROR(\"Unable to gather preferred codecs for video transceivers\");\n            return [];\n        }\n\n        // 'setCodecPreferences' doesn't affect which codec the implementation decides to send.\n        // It only affects which codecs the implementation indicates that it prefers to receive.\n        //                                                                             - Gandhi\n        const filteredCodecs: RTCRtpCodec[] = [];\n        for(const codec of capabilitiesReceiver.codecs){\n            AdapterLog.INFO(\"Codec \" + codec.mimeType + \" \" + codec.clockRate);\n\n            // we will remove everything not H264, H265 or AV1\n            if (!codec.mimeType.endsWith(\"H264\") &&\n                !codec.mimeType.endsWith(\"H265\") &&\n                !codec.mimeType.endsWith(\"AV1\"))\n                continue;\n\n            // we will skip codecs that the sender doesn't support\n            if (!capabilitiesSender.codecs.find((sendCodec: RTCRtpCodec) => isEqual(sendCodec, codec)))\n                continue;\n\n            // we will skip codec we already have added (duplicates)\n            if (filteredCodecs.find((currentCodec: RTCRtpCodec) => isEqual(currentCodec, codec)))\n                continue;\n\n            // add it!\n            AdapterLog.INFO(\"Added!\");\n            filteredCodecs.push(codec);\n        }\n\n        AdapterLog.INFO(\"Codecs sender accepted count: \" + filteredCodecs.length);\n        return filteredCodecs;\n    }\n\n    /// creates and sets the local offer for RTC Peer Connection Sent\n    async initMediaStream(): Promise<void> {\n        if (this._localMediaStream){\n            AdapterLog.WARN(\"Local MediaStream already initialized!\");\n            return;\n        }\n        this._localMediaStream = new MediaStream();\n\n        AdapterLog.INFO(\"Adding audio & video tracks for peer: \" + this._peerID);\n        const audioTrack: MediaStreamTrack | null = await this.getAudioTrack();\n        if (!this.addAudioTrack(audioTrack, this._localMediaStream))\n            AdapterLog.WARN(\"Problem adding audio track!\");\n\n        // set the video facing mode to user and add the video track\n        if (!await App.getInstance().setVideoFacingMode(FacingMode.USER))\n            AdapterLog.WARN(\"Could not set video facing mode to user!\");\n        if (!await App.getInstance().setVideoRecording(true))\n            AdapterLog.WARN(\"Could not start video recording!\");\n        if (!this.addVideoTrack(this._videoLocal.track, this._localMediaStream))\n            AdapterLog.WARN(\"Problem adding video track!\");\n    }\n\n    private addDataChannel(channelType: keyof MainModule[\"ChannelType\"]): RTCDataChannel {\n        const type: ChannelType = PeerConnectionWeb.getEngine().ChannelType[channelType];\n\n        // adds a data channel to the peer connection\n        const channelOptions: RTCDataChannelInit = {\n            id: type,\n            negotiated: true,\n            ordered: type === PeerConnectionWeb.getEngine().ChannelType.RELIABLE,\n        };\n        if (type === PeerConnectionWeb.getEngine().ChannelType.FAST)\n            channelOptions.maxRetransmits = 0;\n\n        // create the data channel with binary type arrayBuffer\n        const channel: RTCDataChannel = this._peerConnection.createDataChannel(channelType, channelOptions);\n        channel.binaryType = \"arraybuffer\";\n\n        // add the event handler\n        channel.onopen = this.onDataChannelStateChange.bind(this);\n        channel.onclose = this.onDataChannelStateChange.bind(this);\n        channel.onclosing = this.onDataChannelStateChange.bind(this);\n        channel.onmessage = this.onDataChannelMessage.bind(this);\n        channel.onbufferedamountlow = this.onBufferedAmountLow.bind(this);\n        channel.onerror = this.onDataChannelError.bind(this);\n        return channel;\n    }\n\n    private addVideoTrack(videoTrack: MediaStreamTrack | null, mediaStream: MediaStream): boolean {\n        if(!videoTrack){\n            AdapterLog.WARN(\"No video track found!\");\n            return false;\n        }\n\n        AdapterLog.INFO(\"Adding video track[\" + videoTrack.id + \"] to peer connection\");\n        let videoSender: RTCRtpSender | null = null;\n        try {\n            videoSender = this._peerConnection.addTrack(videoTrack, mediaStream);\n            AdapterLog.INFO(\"Added video track!\")\n        } catch(error) {\n            AdapterLog.ERROR(\"Could not add track: \" + error.toString());\n            return false;\n        }\n\n        // locate the transceiver associated with our track\n        let videoTransceiver: RTCRtpTransceiver | null = null;\n        for(const transceiver of this._peerConnection.getTransceivers()){\n            if(transceiver.sender !== videoSender || transceiver.sender.track !== videoTrack)\n                continue;\n            videoTransceiver = transceiver;\n        }\n        if(!videoTransceiver){\n            AdapterLog.ERROR(\"Could not locate transceiver associated with video track!\");\n            return false;\n        }\n\n        // we will retrieve the supported codec list, and filter out anything not H264 or AV1\n        const codecs: RTCRtpCodec[] = PeerConnectionWeb.getPreferredCodecsForVideoTransceivers();\n        if(codecs.length) {\n            AdapterLog.INFO(\"Setting \" + codecs.length + \" codec preference\");\n            videoTransceiver.setCodecPreferences?.(codecs);\n        }\n        return true;\n    }\n\n    private addAudioTrack(audioTrack: MediaStreamTrack | null, mediaStream: MediaStream): boolean {\n        if(!audioTrack){\n            AdapterLog.WARN(\"No audio track found!\");\n            return false;\n        }\n\n        AdapterLog.INFO(\"Adding audio track \" + audioTrack.id + \" to peer connection\");\n        try {\n            const audioSender: RTCRtpSender = this._peerConnection.addTrack(audioTrack, mediaStream);\n            AdapterLog.DEBUG(\"Added audio track!\")\n        } catch(error) {\n            AdapterLog.ERROR(\"Could not add audio track: \" + error.toString());\n            return false;\n        }\n\n        // TODO(@frank): maybe locate audio transceiver associated with our track to set codec preference?\n        return true;\n    }\n\n    /// creates RTC peer connection\n    private createPeerConnection(): RTCPeerConnection {\n\n        // create the ice servers\n        const STUNServer: RTCIceServer = { urls: \"stun:stun.l.google.com:19302\"};\n        const iceServers: RTCIceServer[] = [ STUNServer ];\n\n        // only add a TURN server if we have all the auth info\n        const usernameTURN: string   = PeerConnectionWeb.getEngine().getUsernameTURN();\n        const credentialTURN: string = PeerConnectionWeb.getEngine().getCredentialTURN();\n        const urlTURN: string        = PeerConnectionWeb.getEngine().getUrlTURN();\n        if (usernameTURN && credentialTURN && urlTURN) {\n            const TURNServer: RTCIceServer = { urls: urlTURN, username: usernameTURN, credential: credentialTURN };\n            iceServers.push(TURNServer);\n        }\n\n        // create basic peer connection and callback for data channel creation\n        const config : RTCConfiguration = {\n            // Uncomment the following line to force the TURN server\n            // iceTransportPolicy: \"relay\",\n            iceServers: iceServers\n        };\n        const peerConnection = new RTCPeerConnection(config);\n        peerConnection.onnegotiationneeded = this.onNegotiationNeeded.bind(this);\n        peerConnection.oniceconnectionstatechange = this.onIceConnectionStateChanged.bind(this);\n        peerConnection.onconnectionstatechange = this.onPeerConnectionStateChanged.bind(this);\n        peerConnection.ondatachannel = this.onDataChannel.bind(this);\n        peerConnection.ontrack = this.onTrack.bind(this);\n        peerConnection.onicecandidate = this.onNewIceCandidate.bind(this);\n\n        return peerConnection;\n    }\n\n    private async getAudioTrack(): Promise<MediaStreamTrack | null> {\n        if (!await App.getInstance().setAudioRecording(true)){\n            AdapterLog.WARN(\"Could not start audio recording!\");\n            return null;\n        }\n        return App.getInstance().getAudioTrack();\n    }\n\n    /// this is the opportunity for the Frame to be sent to the Core\n    public update(elapsedTime: number) : void {\n\n        // check if video is playing\n        if( this._videoRemote == null ||\n            this._videoRemote.paused  ||\n           !this._videoPlaying )\n            return;\n\n        // Retrieve the media stream from the video remote\n        const mediaStream = this._videoRemote.srcObject as MediaStream;\n        if(!mediaStream)\n            return;\n\n        // retrieve the 'video' receivers which will have the timestamp\n        const allReceivers : RTCRtpReceiver[] = this._peerConnection.getReceivers();\n        let videoReceiver : RTCRtpReceiver | null = null;\n        for(const receiver of allReceivers)\n            if(receiver.track.kind == 'video')\n                videoReceiver = receiver;\n        if(videoReceiver == null)\n            return;\n\n        // but this returns valid timestamps :)\n        const allSources : RTCRtpSynchronizationSource[] = videoReceiver.getSynchronizationSources();\n        if(allSources.length == 0)\n            return;\n        const source: RTCRtpSynchronizationSource = allSources[0];\n\n        // we don't do anything if it's the same timestamp as last time\n        if(!Number.isInteger(source.rtpTimestamp))\n            return AdapterLog.ERROR(\"TimeStamp is not an Integer: \" + source.rtpTimestamp);\n        const timestampRTP: bigint = BigInt(source.rtpTimestamp);\n\n        //if the timestamp rtp is the same as last time, we ignore\n        if(timestampRTP == this._lastFrameReceivedTimestampRTP)\n            return;\n        this._lastFrameReceivedTimestampRTP = timestampRTP;\n\n        // fetch last frame texture ID and set the received timestamp\n        const engine : MainModule = PeerConnectionWeb.getEngine();\n        const textureID: number = engine.InterfacePeerConnection.getFrameFromPeer(this._peerID,\n            timestampRTP, this._videoRemote.videoWidth, this._videoRemote.videoHeight);\n\n        // if we could not get a texture ID, return\n        if (textureID == 0)\n            return;\n\n        const texture : WebGLTexture = engine.GL.textures[textureID];\n\n        // bind the texture and copy from the video remote\n        const gl : WebGLRenderingContext = engine.ctx;\n        gl.activeTexture(gl.TEXTURE0);\n        gl.bindTexture(gl.TEXTURE_2D, texture);\n        gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._videoRemote);\n    }\n\n    ///////////////////////////////// Event Handler //////////////////////////////////\n\n    /// got a new data channel on the peer connection\n    private onDataChannel(event: RTCDataChannelEvent): void {\n        const channel : RTCDataChannel = event.channel;\n        AdapterLog.INFO(\"Got data channel:\" + channel.label);\n    }\n\n    /// got a new track stream, set it to the video element on the page\n    private onTrack(event: RTCTrackEvent): void {\n\n        // verify it's a video, don't handle audio yet...\n        const track: MediaStreamTrack = event.track;\n        switch(track.kind){ // TODO(@frank): maybe do something with the track?\n            case \"video\": break;\n            case \"audio\": break;\n            default:\n                AdapterLog.ERROR(\"Received unknown track \" + event.track.kind + \", ignoring...\");\n                return;\n        }\n\n        // use the MediaStream associated with the track, otherwise re-use one we might have created already\n        let remoteMediaStream: MediaStream | null = event.streams.length ? event.streams[0] : null;\n        if(remoteMediaStream)\n            AdapterLog.INFO(\"Track \" + track.kind + \" is already associated to media stream \" + remoteMediaStream.id);\n        else if(this._videoRemote.srcObject) {\n            remoteMediaStream = this._videoRemote.srcObject as MediaStream;\n            remoteMediaStream.addTrack(track);\n            AdapterLog.WARN(`Received ${track.kind} track ${track.id}, reused stream ${remoteMediaStream.id}`);\n        }\n\n        // if we didn't have one already, we will have to create a media stream for it\n        else {\n            remoteMediaStream = new MediaStream();\n            remoteMediaStream.addTrack(track);\n            AdapterLog.WARN(`Received ${track.kind} track ${track.id}, created stream ${remoteMediaStream.id}`);\n        }\n\n        // verify if already assigned to video element\n        if(this._videoRemote.srcObject === remoteMediaStream)\n            return AdapterLog.INFO(\"Already assigned video remote, skipping...\");\n\n        // set the video stream as src object\n        this._videoRemote.srcObject = remoteMediaStream;\n        AdapterLog.INFO(\"Track \" + track.kind + \" remote stream was set!\");\n    }\n\n    /// receive function from data channel\n    private onDataChannelMessage(event: MessageEvent): void {\n\n        // Firefox defaults event.data to a Blob, but we should have forced it to be 'arraybuffer'\n        const data : Blob | ArrayBuffer = event.data;\n        if(data instanceof Blob)\n            return AdapterLog.ERROR(\"Received message Blob from Firefox, shouldn't happen, aborting!\");\n\n        // convert here into a Uint8Array\n        const answer : Uint8Array = new Uint8Array(data);\n\n        // make sure the message isn't empty\n        if(answer.length === 0){\n            AdapterLog.ERROR(\"Empty message from peer...\");\n            return;\n        }\n\n        // malloc enough space for the message and copy into heap\n        const engine : MainModule = PeerConnectionWeb.getEngine();\n        const bufferPtr = engine._malloc(answer.length);\n        engine.HEAPU8.set(answer, bufferPtr);\n\n        // hand off the message to the core and free the buffer\n        this._delegate?.didReceivePacketWebRTC({ data: bufferPtr, size: answer.length });\n        engine._free(bufferPtr);\n    }\n\n    private async onNegotiationNeeded(event: Event): Promise<void>{\n        if (!this._delegate)\n            return AdapterLog.ERROR(\"No delegate set for peer connection renegotiation!\");\n\n        // if we don't need to create the offer, we can return here\n        if (!this._delegate.didNeedNegotiationWebRTC())\n            return;\n\n        if (!this._localMediaStream)\n            await this.initMediaStream();\n\n        // create initial offer and set it\n        const options: RTCOfferOptions = {\n            offerToReceiveAudio : true,\n            offerToReceiveVideo : true\n        };\n\n        const offer: RTCSessionDescriptionInit | null = await this._peerConnection.createOffer(options).catch(PeerConnectionWeb.log);\n        if(!offer || !offer.sdp) {\n            AdapterLog.ERROR(\"createOffer failed, could not setLocalDescription...\");\n            return;\n        }\n        AdapterLog.DEBUG(\"Setting local offer\");\n        await this._peerConnection.setLocalDescription(offer).catch(PeerConnectionWeb.log);\n\n        AdapterLog.INFO(\"Finished setting local \" + offer.type + \" for peer \" + this._peerID);\n\n        // hand off the message to the delegate\n        this._delegate?.didProduceSignalingWebRTC(offer.sdp, true);\n    }\n\n    /// handles ice connection changed\n    private onIceConnectionStateChanged(event: Event): void {\n        const peer: RTCPeerConnection = event.target as RTCPeerConnection;\n        const state: StateICE = peer.iceConnectionState.toUpperCase() as Uppercase<RTCIceConnectionState>;\n        this._delegate?.didChangeStateIceWebRTC(state);\n    }\n\n    private onPeerConnectionStateChanged(event: Event): void {\n        const peer: RTCPeerConnection = event.target as RTCPeerConnection;\n        const state: StatePeer = peer.connectionState.toUpperCase() as Uppercase<RTCPeerConnectionState>;\n        this._delegate?.didChangeStatePeerConnectionWebRTC(state);\n    }\n\n    /// creates an answer to this description after it was set\n    private async onRemoteDescriptionOfferSet(): Promise<void> {\n\n        // make sure the media stream with audio and video tracks is initialized\n        if (!this._localMediaStream)\n            await this.initMediaStream();\n\n        // create an answer to the offer and set it!\n        const answer: RTCSessionDescriptionInit | null = await this._peerConnection.createAnswer().catch(PeerConnectionWeb.log);\n        if(!answer || !answer.sdp) {\n            AdapterLog.ERROR(\"Could not create Answer!\");\n            return;\n        }\n        await this._peerConnection.setLocalDescription(answer).catch(PeerConnectionWeb.log);\n\n        AdapterLog.INFO(\"Finished setting local \" + answer.type + \" for peer \" + this._peerID);\n\n        // hand off the message to the delegate\n        this._delegate?.didProduceSignalingWebRTC(answer.sdp, false);\n    }\n\n    /// on data channel open, we save it\n    private onDataChannelStateChange(event: Event): void {\n        const channel : RTCDataChannel = event.target as RTCDataChannel;\n        const state: StateChannel = channel.readyState.toUpperCase() as Uppercase<RTCDataChannelState>;\n        this._delegate?.didChangeStateChannelWebRTC(channel.id as ChannelType, state);\n    }\n\n    /// on data channel error, we set it to null\n    private onDataChannelError(error: ErrorEvent): void {\n        const channel : RTCDataChannel = error.target as RTCDataChannel;\n        AdapterLog.ERROR(\"onDataChannelError \" + channel.label + \": \" + error.message);\n\n        // recreate a new data channel\n        if (channel === this._channelFast)\n            this._channelFast = this.addDataChannel(\"FAST\");\n        else if (channel === this._channelReliable)\n            this._channelReliable = this.addDataChannel(\"RELIABLE\");\n        else\n            AdapterLog.ERROR(\"Unexpected channel label:\" + channel.label);\n    }\n\n    private onBufferedAmountLow(event : Event): void {\n        const channel : RTCDataChannel = event.target as RTCDataChannel;\n\n        // update buffered amount\n        if(channel === this._channelFast) {\n            // does not keep track here\n        }else if(channel === this._channelReliable) {\n            this._delegate?.didChangeBufferedAmountChannelReliableWebRTC(channel.bufferedAmount);\n        }else\n            AdapterLog.ERROR(\"Error, data channel label is neither fast or reliable!\");\n    }\n\n    /// handle new ice candidate\n    private onNewIceCandidate(iceIceBaby: RTCPeerConnectionIceEvent): void {\n        const candidateICE: RTCIceCandidate | null = iceIceBaby.candidate;\n        if (!candidateICE || !candidateICE.sdpMid){\n            AdapterLog.INFO(\"Empty ice candidate\");\n            return;\n        }\n\n        // hand off the message to the core and free the buffers\n        this._delegate?.didGenerateIceCandidateWebRTC(candidateICE.sdpMLineIndex ?? 0,  candidateICE.candidate,\n                                                      candidateICE.sdpMid);\n    }\n}\n", "// VideoTrackGenerator: https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackGenerator\nexport interface VideoTrackGenerator {\n    readonly muted: boolean\n    readonly track: MediaStreamTrack\n    readonly writable: WritableStream<VideoFrame>\n}\n\n/// https://blog.mozilla.org/webrtc/unbundling-mediastreamtrackprocessor-and-videotrackgenerator/\nexport class VideoStreamTrackGenerator implements VideoTrackGenerator, UnderlyingSink<VideoFrame> {\n    readonly canvas: HTMLCanvasElement;\n    readonly context2D: CanvasRenderingContext2D | null;\n    readonly writable: WritableStream<VideoFrame>;\n    readonly track: MediaStreamVideoTrack;\n    get muted(): boolean { return this.track.muted; }\n\n    constructor() {\n        this.canvas = document.createElement(\"canvas\");\n        this.context2D = this.canvas.getContext('2d', {desynchronized: true});\n        [this.track] = this.canvas.captureStream().getVideoTracks();\n        this.writable = new WritableStream(this);\n    }\n\n    public write(frame: VideoFrame) {\n        this.canvas.width = frame.displayWidth;\n        this.canvas.height = frame.displayHeight;\n        this.context2D?.drawImage(frame, 0, 0, this.canvas.width, this.canvas.height);\n    }\n\n    public close() { this.track.stop(); }\n\n    public abort(reason?: unknown) { this.track.stop(); }\n\n}", "import * as React from \"react\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {Box} from \"@mui/material\";\nimport {MainModule, SpanByte} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {VideoStreamTrackProcessor} from \"@root/Frontend/Studio/Views/DeepSightConnect/VideoStreamTrackProcessor\";\n\nexport enum FacingMode {\n    USER = \"user\",\n    ENVIRONMENT = \"environment\"\n}\n\nexport class VideoOverlay extends React.PureComponent {\n\n    // keep references to HTML elements\n    private readonly video: React.RefObject<HTMLVideoElement> = React.createRef<HTMLVideoElement>();\n\n    private audioEnabled: boolean = false;\n    private videoEnabled: boolean = false;\n    private audioStream: Promise<MediaStream | null> | null = null;\n    private videoStream: MediaStream | null = null;\n    private facingMode: FacingMode = FacingMode.USER;\n\n    private frameReader: ReadableStreamDefaultReader<VideoFrame> | null = null;\n\n    componentWillUnmount() {\n        this.setVideoStream(null);\n    }\n\n    public async setAudioRecording(enabled: boolean): Promise<boolean> {\n        if (this.audioEnabled === enabled)\n            return true;\n\n        // if we don't have an audio stream yet, create one\n        const audioStream: MediaStream | null = await this.getAudioStream();\n        if (!audioStream)\n            return false;\n\n        // we're enabling or disabling the audio track\n        for (const track of audioStream.getTracks())\n            track.enabled = enabled;\n        this.audioEnabled = enabled;\n        return true;\n    }\n\n    public async setVideoRecording(enabled: boolean): Promise<boolean> {\n        if (this.videoEnabled === enabled)\n            return true; // already ok!\n\n        // if we're enabling the video, acquire the stream to assign it to the video element\n        if (enabled) {\n            const stream: MediaStream | null =\n                await this.createMediaStream({ audio: false, video: { facingMode: this.facingMode } });\n            if (!stream) {\n                AdapterLog.ERROR(\"Could not acquire video media stream\");\n                return false;\n            }\n            this.setVideoStream(stream);\n        }\n\n        // stop the stream and hide the video element\n        else\n            this.setVideoStream(null)\n\n        this.videoEnabled = enabled;\n        return true;\n    }\n\n    public async setFacingMode(facingMode: FacingMode): Promise<boolean> {\n        if (this.facingMode === facingMode)\n            return true; // already ok!\n\n        // if the video is enabled, we need to stop the current stream and acquire a new one\n        if (this.videoEnabled)\n            this.setVideoStream(null);\n\n        // acquire the stream with the new facing mode\n        const stream: MediaStream | null = await this.createMediaStream({ audio: false, video: { facingMode } });\n        if (!stream) {\n            AdapterLog.ERROR(\"Could not acquire video media stream\");\n            return false;\n        }\n        this.setVideoStream(stream);\n\n        this.facingMode = facingMode;\n        return true;\n    }\n\n    public async getAudioTrack(): Promise<MediaStreamTrack | null> {\n        const stream: MediaStream | null = await this.getAudioStream();\n        const tracks: MediaStreamTrack[] = stream?.getAudioTracks() ?? [];\n        return tracks.length ? tracks[0] : null;\n    }\n\n    private getAudioStream(): Promise<MediaStream | null> {\n        if (!this.audioStream) {\n            this.audioStream = this.createMediaStream({ audio: true, video: false});\n\n            // set audio params in the core (we only need to do this once)\n            this.audioStream.then((audioStream: MediaStream | null) =>\n                this.setAudioEncodingParameters(audioStream?.getAudioTracks()[0] ?? null))\n        }\n\n        return this.audioStream;\n    }\n\n    private async createMediaStream(constraints: MediaStreamConstraints): Promise<MediaStream | null> {\n        if (!navigator.mediaDevices) {\n            AdapterLog.WARN(\"Can't getUserMedia when non-secure(use localhost or HTTPS)\");\n            return null;\n        }\n\n        // try to acquire the media stream from the user media\n        let stream: MediaStream | null = null;\n        try { stream = await navigator.mediaDevices.getUserMedia(constraints); }\n        catch (error) {\n            AdapterLog.ERROR(\"Could not access user media stream: \" + error.toString());\n            return null;\n        }\n\n        return stream;\n    }\n\n    private setVideoTrack(videoTrack: MediaStreamVideoTrack | null): void {\n\n        // Clear the current frame reader if there is any\n        if (this.frameReader){\n            this.frameReader.cancel().catch(AdapterLog.ERROR);\n            this.frameReader = null;\n        }\n\n        if (!this.video.current || !videoTrack)\n            return;\n\n        const isProcessorSupported: boolean = typeof window.MediaStreamTrackProcessor === \"function\"\n        const mediaStreamTrackProcessor: MediaStreamTrackProcessor<VideoFrame> = isProcessorSupported ?\n            new MediaStreamTrackProcessor({track: videoTrack}) : new VideoStreamTrackProcessor(this.video.current);\n\n        const frameReader: ReadableStreamDefaultReader<VideoFrame> = mediaStreamTrackProcessor.readable.getReader();\n        videoTrack.onended = async () => await frameReader.cancel();\n        this.frameReader = frameReader;\n        this.readNextFrame(frameReader).catch(AdapterLog.ERROR); // fire-and-forget\n    }\n\n    private async readNextFrame(frameReader: ReadableStreamDefaultReader<VideoFrame>): Promise<void> {\n        const engine: MainModule = App.getInstance().getEngine();\n\n        // Read the next frame from the stream\n        const result: ReadableStreamReadResult<VideoFrame> = await frameReader.read();\n        if (result.done)\n            return;\n        const frame: VideoFrame | undefined = result.value;\n        if (!frame)\n            return;\n\n        // Copy frame info and data\n        const timestampNS: bigint = BigInt(frame.timestamp) * 1000n;\n        const format: VideoPixelFormat | null = frame.format;\n        const width: number = frame.codedWidth;\n        const height: number = frame.codedHeight;\n        const frameSize: number = frame.allocationSize();\n\n        // Copy the frame's data into wasm memory\n        const frameDataPtr: number = engine._malloc(frameSize);\n        const frameBuffer: Uint8Array = new Uint8Array(engine.HEAPU8.buffer, frameDataPtr, frameSize);\n        const layout: PlaneLayout[] = await frame.copyTo(frameBuffer);\n\n        frame.close();\n\n        switch (format) {\n            case \"NV12\": {\n                if (layout.length < 2) {\n                    AdapterLog.ERROR(`Received invalid layout of length ${layout.length} for NV12`);\n                    break;\n                }\n\n                const dataY: SpanByte = { data: frameDataPtr + layout[0].offset, size: layout[0].stride * height };\n                const dataUV: SpanByte =\n                    { data: frameDataPtr + layout[1].offset, size: layout[1].stride * height / 2 };\n                engine.sendFrameBufferNV12(dataY, layout[0].stride, dataUV, layout[1].stride, width, height,\n                                           timestampNS);\n                engine._free(frameDataPtr)\n                return this.readNextFrame(frameReader);\n            }\n            case \"I420\": {\n                if (layout.length < 3) {\n                    AdapterLog.ERROR(`Received invalid layout of length ${layout.length} for I420`);\n                    break;\n                }\n\n                const dataY: SpanByte = { data: frameDataPtr + layout[0].offset, size: layout[0].stride * height };\n                const dataU: SpanByte =\n                    { data: frameDataPtr + layout[1].offset, size: layout[1].stride * height / 2 };\n                const dataV: SpanByte =\n                    { data: frameDataPtr + layout[2].offset, size: layout[2].stride * height / 2 };\n                engine.sendFrameBufferYUV(dataY, layout[0].stride, dataU, layout[1].stride, dataV, layout[2].stride,\n                                          width, height, timestampNS);\n                engine._free(frameDataPtr)\n                return this.readNextFrame(frameReader);\n            }\n            default:\n                AdapterLog.ERROR(`Unknown frame format ${format}`);\n                break;\n        }\n\n        // stop frame reader and exit loop\n        engine._free(frameDataPtr)\n        await frameReader.cancel();\n    }\n\n    private setAudioEncodingParameters(audioTrack: MediaStreamTrack | null) {\n        const engine: MainModule = App.getInstance().getEngine();\n        const settings: MediaTrackSettings | null = audioTrack?.getSettings() ?? null;\n        engine.setAudioEncodingParameters(settings?.sampleRate || 44100, settings?.channelCount || 1);\n    }\n\n    private setVideoStream(mediaStream: MediaStream | null): void {\n\n        // check already ok\n        if (this.videoStream === mediaStream)\n            return;\n\n        // if we had a video stream, stop all the tracks!\n        if (this.videoStream)\n            for (const track of this.videoStream.getTracks())\n                track.stop();\n\n        // assign the new media stream to the HTMLVideoElement\n        this.videoStream = mediaStream;\n        if (this.video.current) {\n            this.video.current.srcObject = mediaStream;\n            this.video.current.style.display = mediaStream ? \"block\" : \"none\";\n        }\n\n        const [videoTrack]: MediaStreamVideoTrack[] = mediaStream?.getVideoTracks() ?? [];\n        this.setVideoTrack(videoTrack);\n    }\n\n    render() {\n        return (\n            <Box>\n                <video\n                    style={{\n                        maxWidth: \"200px\",\n                        display: \"none\"\n                    }}\n                    ref={this.video}\n                    playsInline\n                    autoPlay\n                    muted\n                />\n            </Box>\n        )\n    }\n}\n", "export class VideoStreamTrackProcessor implements MediaStreamTrackProcessor<VideoFrame>, UnderlyingSource<VideoFrame> {\n    public readonly readable: ReadableStream<VideoFrame>;\n    public readonly writableControl: WritableStream<MediaStreamTrackSignal>;\n\n    private readonly video: HTMLVideoElement;\n    private controller: ReadableStreamDefaultController;\n    private frameCallbackID: number = 0;\n\n    constructor(video: HTMLVideoElement) {\n        this.video = video;\n        this.readable = new ReadableStream(this);\n    }\n\n    public start(controller: ReadableStreamDefaultController) {\n        this.controller = controller;\n        this.video.requestVideoFrameCallback((ts: number) => this.enqueueFrame(ts));\n    }\n\n    public cancel() {\n        if (this.frameCallbackID) {\n            this.video.cancelVideoFrameCallback(this.frameCallbackID)\n            this.frameCallbackID = 0;\n        }\n    }\n\n    private enqueueFrame(timestampMs: number) {\n        const frame = new VideoFrame(this.video, {timestamp: timestampMs * 1000});\n        this.controller.enqueue(frame);\n        this.frameCallbackID = this.video.requestVideoFrameCallback((ts: number) => this.enqueueFrame(ts));\n    }\n}\n", "import {PeerConnectionWeb} from \"@root/Frontend/Studio/Engine/PeerConnectionWeb\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {AdapterLog} from \"../AdapterWeb/AdapterLog\";\nimport {MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nexport class FacadeWeb {\n\n    /////////////////////////////////////////// Private Members ///////////////////////////////////////////\n\n    readonly _engine: MainModule                                    ///< The WebAssembly Core\n    private _contextWebGL: WebGL2RenderingContext;                  ///< WebGL2 rendering context\n    private _peerConnectionDiscover: RTCPeerConnection;             ///< RTCPeerConnection for discovering IP\n    private _privateIP: number = 0;                                 ///< private IP discovered\n    private _audioPlayer: HTMLAudioElement = new Audio();\n\n    /////////////////////////////////////////// Public Methods ///////////////////////////////////////////\n\n    constructor(engine: MainModule) {\n        this._engine = engine;\n    }\n\n    /// return the WebAssembly Module\n    public getEngine(): MainModule { return this._engine; }\n\n    public setContextWebGL(contextIndex: number){\n        this._contextWebGL = this._engine.GL.contexts[contextIndex].GLctx;\n    }\n\n    createPeerConnectionDiscover() {\n\n        // try to create PeerConnection (might throw if no internet connection)\n        try{ this._peerConnectionDiscover = new RTCPeerConnection({iceServers: []}); }\n        catch(error){ return AdapterLog.WARN(\"Problem PeerConnection:\" + error.toString()); }\n\n        // creates assign bogus data channel and offer\n        this._peerConnectionDiscover.createDataChannel(\"discoverIP\");\n        this._peerConnectionDiscover.createOffer().then(\n            (description: RTCSessionDescriptionInit) => {\n                this._peerConnectionDiscover.setLocalDescription(description).catch(FacadeWeb.log);\n            }\n        ).catch(FacadeWeb.log);\n\n        //when ice candidate is discovered (save private IP)\n        this._peerConnectionDiscover.onicecandidate = (ice: RTCPeerConnectionIceEvent) => {\n            if (ice && ice.candidate && ice.candidate.candidate) {\n                const ipArray = /([0-9]{1,3}(\\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/.exec(ice.candidate.candidate);\n                if (ipArray === null) {\n                    return;\n                }\n                const ip = ipArray[1];\n                const parts = ip.split(\".\");\n                const privateIPparsing: number[] = [\n                    parseInt(parts[3]) << 24,\n                    parseInt(parts[2]) << 16,\n                    parseInt(parts[1]) << 8,\n                    parseInt(parts[0])\n                ];\n                this._privateIP = privateIPparsing[0] | privateIPparsing[1] |\n                    privateIPparsing[2] | privateIPparsing[3] ;\n            }\n        }\n    }\n\n    /// fetches the private IP (if it was found)\n    getPrivateIP(): number { return this._privateIP; }\n\n    /// returns the HEAP size which corresponds to the amount of memory in use\n    getCurrentMemoryUsage(): number { return this.getEngine().HEAPU8.length; }\n\n    /// creates peer connection WebRTC. TODO(@frank): figure out how to not do this back and forth between JS and WASM.\n    createPeerConnectionWeb(peerID: bigint, delegate: number) : void {\n        const peer = this.getEngine().InterfacePeerConnection.implement(new PeerConnectionWeb(peerID, delegate));\n        this.getEngine().FacadeWeb.registerPeerConnection(peerID, peer);\n    }\n\n    // plays the audio file\n    playSound(pathPtr: number, pathSize: number) {\n        // converts the audioPathPtr -> string\n        const audioPath: string = this.convertBufferToString(pathPtr, pathSize);\n\n        // locates the extension\n        const index: number = audioPath.lastIndexOf(\".\");\n        const extension: string = (index === -1 ? \"\" : audioPath.substring(index + 1));\n\n        // converts from virtual filesystem to blob (if necessary)\n        const audioBinary: Uint8Array = AdapterUtils.getCoreFileBinary(audioPath, \"\");\n        const url: string = URL.createObjectURL(new Blob([audioBinary], {\"type\": \"audio/\" + extension}));\n\n        // pause old audio and revoke its url to prevent memory leaks\n        if (this._audioPlayer.src) {\n            this._audioPlayer.pause();\n            URL.revokeObjectURL(this._audioPlayer.src);\n        }\n\n        this._audioPlayer.src = url;\n        this._audioPlayer.play().catch(() => { /* fails silently */ });\n        return true;\n    }\n\n    /// change the WebGL provoking mode\n    glProvokingVertexWEBGL(provokingMode: number){\n        interface WEBGL_provoking_vertex { provokingVertexWEBGL:(provokeMode: number) => void }\n        const extension: WEBGL_provoking_vertex | null = this._contextWebGL?.getExtension(\"WEBGL_provoking_vertex\");\n        extension?.provokingVertexWEBGL(provokingMode);\n    }\n\n    ////////////////////////////////// Helper Methods //////////////////////////////////\n\n    public convertBufferToString(buffer: number, size: number): string {\n        const array = this.getEngine().HEAPU8.slice(buffer, buffer + size);\n        return new TextDecoder(\"utf8\").decode(array);\n    }\n\n    //////////////////////////////////// Callbacks ////////////////////////////////////\n    // Don't forget to .bind(this) for the callback to be called on 'this' instance. //\n    ///////////////////////////////////////////////////////////////////////////////////\n\n    /// this is just a function for logging something\n    public static log(something: any){\n        AdapterLog.INFO(\"FacadeWeb: \" + something.toString());\n    }\n}\n", "// This code implements the `-sMODULARIZE` settings by taking the generated\n// JS program code (INNER_JS_CODE) and wrapping it in a factory function.\n\n// When targeting node and ES6 we use `await import ..` in the generated code\n// so the outer function needs to be marked as async.\nasync function MainModuleFactory(moduleArg = {}) {\n  var moduleRtn;\n\n// include: shell.js\n// include: minimum_runtime_check.js\n(function() {\n  // \"30.0.0\" -> 300000\n  function humanReadableVersionToPacked(str) {\n    str = str.split(\"-\")[0];\n    // Remove any trailing part from e.g. \"12.53.3-alpha\"\n    var vers = str.split(\".\").slice(0, 3);\n    while (vers.length < 3) vers.push(\"00\");\n    vers = vers.map((n, i, arr) => n.padStart(2, \"0\"));\n    return vers.join(\"\");\n  }\n  // 300000 -> \"30.0.0\"\n  var packedVersionToHumanReadable = n => [ n / 1e4 | 0, (n / 100 | 0) % 100, n % 100 ].join(\".\");\n  var TARGET_NOT_SUPPORTED = 2147483647;\n  // Note: We use a typeof check here instead of optional chaining using\n  // globalThis because older browsers might not have globalThis defined.\n  var currentNodeVersion = typeof process !== \"undefined\" && process.versions?.node ? humanReadableVersionToPacked(process.versions.node) : TARGET_NOT_SUPPORTED;\n  if (currentNodeVersion < 180300) {\n    throw new Error(`This emscripten-generated code requires node v${packedVersionToHumanReadable(180300)} (detected v${packedVersionToHumanReadable(currentNodeVersion)})`);\n  }\n  var userAgent = typeof navigator !== \"undefined\" && navigator.userAgent;\n  if (!userAgent) {\n    return;\n  }\n  var currentSafariVersion = userAgent.includes(\"Safari/\") && !userAgent.includes(\"Chrome/\") && userAgent.match(/Version\\/(\\d+\\.?\\d*\\.?\\d*)/) ? humanReadableVersionToPacked(userAgent.match(/Version\\/(\\d+\\.?\\d*\\.?\\d*)/)[1]) : TARGET_NOT_SUPPORTED;\n  if (currentSafariVersion < 15e4) {\n    throw new Error(`This emscripten-generated code requires Safari v${packedVersionToHumanReadable(15e4)} (detected v${currentSafariVersion})`);\n  }\n  var currentFirefoxVersion = userAgent.match(/Firefox\\/(\\d+(?:\\.\\d+)?)/) ? parseFloat(userAgent.match(/Firefox\\/(\\d+(?:\\.\\d+)?)/)[1]) : TARGET_NOT_SUPPORTED;\n  if (currentFirefoxVersion < 114) {\n    throw new Error(`This emscripten-generated code requires Firefox v114 (detected v${currentFirefoxVersion})`);\n  }\n  var currentChromeVersion = userAgent.match(/Chrome\\/(\\d+(?:\\.\\d+)?)/) ? parseFloat(userAgent.match(/Chrome\\/(\\d+(?:\\.\\d+)?)/)[1]) : TARGET_NOT_SUPPORTED;\n  if (currentChromeVersion < 85) {\n    throw new Error(`This emscripten-generated code requires Chrome v85 (detected v${currentChromeVersion})`);\n  }\n})();\n\n// end include: minimum_runtime_check.js\n// The Module object: Our interface to the outside world. We import\n// and export values on it. There are various ways Module can be used:\n// 1. Not defined. We create it here\n// 2. A function parameter, function(moduleArg) => Promise<Module>\n// 3. pre-run appended it, var Module = {}; ..generated code..\n// 4. External script tag defines var Module.\n// We need to check if Module already exists (e.g. case 3 above).\n// Substitution will be replaced with actual code on later stage of the build,\n// this way Closure Compiler will not mangle it (e.g. case 4. above).\n// Note that if you want to run closure, and also to use Module\n// after the generated code, you will need to define   var Module = {};\n// before the code. Then that object will be used in the code, and you\n// can continue to use Module afterwards as well.\nvar Module = moduleArg;\n\n// Determine the runtime environment we are in. You can customize this by\n// setting the ENVIRONMENT setting at compile time (see settings.js).\n// Attempt to auto-detect the environment\nvar ENVIRONMENT_IS_WEB = !!globalThis.window;\n\nvar ENVIRONMENT_IS_WORKER = !!globalThis.WorkerGlobalScope;\n\n// N.b. Electron.js environment is simultaneously a NODE-environment, but\n// also a web environment.\nvar ENVIRONMENT_IS_NODE = globalThis.process?.versions?.node && globalThis.process?.type != \"renderer\";\n\nvar ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\n\n// Three configurations we can be running in:\n// 1) We could be the application main() thread running in the main JS UI thread. (ENVIRONMENT_IS_WORKER == false and ENVIRONMENT_IS_PTHREAD == false)\n// 2) We could be the application main() running directly in a worker. (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false)\n// 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true)\n// The way we signal to a worker that it is hosting a pthread is to construct\n// it with a specific name.\nvar ENVIRONMENT_IS_PTHREAD = ENVIRONMENT_IS_WORKER && globalThis.name?.startsWith(\"em-pthread\");\n\nif (ENVIRONMENT_IS_PTHREAD) {\n  assert(!globalThis.moduleLoaded, \"module should only be loaded once on each pthread worker\");\n  globalThis.moduleLoaded = true;\n}\n\nif (ENVIRONMENT_IS_NODE) {\n  // When building an ES module `require` is not normally available.\n  // We need to use `createRequire()` to construct the require()` function.\n  const {createRequire} = await import(\"node:module\");\n  /** @suppress{duplicate} */ var require = createRequire(import.meta.url);\n  var worker_threads = require(\"node:worker_threads\");\n  globalThis.Worker = worker_threads.Worker;\n  ENVIRONMENT_IS_WORKER = !worker_threads.isMainThread;\n  // Under node we set `workerData` to `em-pthread` to signal that the worker\n  // is hosting a pthread.\n  ENVIRONMENT_IS_PTHREAD = ENVIRONMENT_IS_WORKER && worker_threads.workerData == \"em-pthread\";\n}\n\n// --pre-jses are emitted after the Module integration code, so that they can\n// refer to Module (if they choose; they can also define Module)\n// include: /tmp/tmp91ca47ia.js\nif (!Module[\"expectedDataFileDownloads\"]) Module[\"expectedDataFileDownloads\"] = 0;\n\nModule[\"expectedDataFileDownloads\"]++;\n\n(() => {\n  // Do not attempt to redownload the virtual filesystem data when in a pthread or a Wasm Worker context.\n  var isPthread = typeof ENVIRONMENT_IS_PTHREAD != \"undefined\" && ENVIRONMENT_IS_PTHREAD;\n  var isWasmWorker = typeof ENVIRONMENT_IS_WASM_WORKER != \"undefined\" && ENVIRONMENT_IS_WASM_WORKER;\n  if (isPthread || isWasmWorker) return;\n  var isNode = globalThis.process && globalThis.process.versions && globalThis.process.versions.node && globalThis.process.type != \"renderer\";\n  async function loadPackage(metadata) {\n    var PACKAGE_PATH = \"\";\n    if (typeof window === \"object\") {\n      PACKAGE_PATH = window[\"encodeURIComponent\"](window.location.pathname.substring(0, window.location.pathname.lastIndexOf(\"/\")) + \"/\");\n    } else if (typeof process === \"undefined\" && typeof location !== \"undefined\") {\n      // web worker\n      PACKAGE_PATH = encodeURIComponent(location.pathname.substring(0, location.pathname.lastIndexOf(\"/\")) + \"/\");\n    }\n    var PACKAGE_NAME = \"Frontend/Studio/Engine/WebAssembly.data\";\n    var REMOTE_PACKAGE_BASE = \"WebAssembly.data\";\n    var REMOTE_PACKAGE_NAME = Module[\"locateFile\"] ? Module[\"locateFile\"](REMOTE_PACKAGE_BASE, \"\") : REMOTE_PACKAGE_BASE;\n    var REMOTE_PACKAGE_SIZE = metadata[\"remote_package_size\"];\n    async function fetchRemotePackage(packageName, packageSize) {\n      if (isNode) {\n        var contents = require(\"fs\").readFileSync(packageName);\n        return new Uint8Array(contents).buffer;\n      }\n      if (!Module[\"dataFileDownloads\"]) Module[\"dataFileDownloads\"] = {};\n      try {\n        var response = await fetch(packageName);\n      } catch (e) {\n        throw new Error(`Network Error: ${packageName}`, {\n          e\n        });\n      }\n      if (!response.ok) {\n        throw new Error(`${response.status}: ${response.url}`);\n      }\n      const chunks = [];\n      const headers = response.headers;\n      const total = Number(headers.get(\"Content-Length\") || packageSize);\n      let loaded = 0;\n      Module[\"setStatus\"] && Module[\"setStatus\"](\"Downloading data...\");\n      const reader = response.body.getReader();\n      while (1) {\n        var {done, value} = await reader.read();\n        if (done) break;\n        chunks.push(value);\n        loaded += value.length;\n        Module[\"dataFileDownloads\"][packageName] = {\n          loaded,\n          total\n        };\n        let totalLoaded = 0;\n        let totalSize = 0;\n        for (const download of Object.values(Module[\"dataFileDownloads\"])) {\n          totalLoaded += download.loaded;\n          totalSize += download.total;\n        }\n        Module[\"setStatus\"] && Module[\"setStatus\"](`Downloading data... (${totalLoaded}/${totalSize})`);\n      }\n      const packageData = new Uint8Array(chunks.map(c => c.length).reduce((a, b) => a + b, 0));\n      let offset = 0;\n      for (const chunk of chunks) {\n        packageData.set(chunk, offset);\n        offset += chunk.length;\n      }\n      return packageData.buffer;\n    }\n    var fetchPromise;\n    var fetched = Module[\"getPreloadedPackage\"] && Module[\"getPreloadedPackage\"](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE);\n    if (!fetched) {\n      // Note that we don't use await here because we want to execute the\n      // the rest of this function immediately.\n      fetchPromise = fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE);\n    }\n    async function runWithFS(Module) {\n      function assert(check, msg) {\n        if (!check) throw new Error(msg);\n      }\n      Module[\"FS_createPath\"](\"/\", \"Audio\", true, true);\n      Module[\"FS_createPath\"](\"/\", \"Fonts\", true, true);\n      Module[\"FS_createPath\"](\"/\", \"Images\", true, true);\n      Module[\"FS_createPath\"](\"/\", \"Models\", true, true);\n      Module[\"FS_createPath\"](\"/\", \"Shader\", true, true);\n      Module[\"FS_createPath\"](\"/\", \"Translations\", true, true);\n      for (var file of metadata[\"files\"]) {\n        var name = file[\"filename\"];\n        Module[\"addRunDependency\"](`fp ${name}`);\n      }\n      async function processPackageData(arrayBuffer) {\n        assert(arrayBuffer, \"Loading data file failed.\");\n        assert(arrayBuffer.constructor.name === ArrayBuffer.name, \"bad input to processPackageData \" + arrayBuffer.constructor.name);\n        var byteArray = new Uint8Array(arrayBuffer);\n        // Reuse the bytearray from the XHR as the source for file reads.\n        for (var file of metadata[\"files\"]) {\n          var name = file[\"filename\"];\n          var data = byteArray.subarray(file[\"start\"], file[\"end\"]);\n          // canOwn this data in the filesystem, it is a slice into the heap that will never change\n          Module[\"FS_createDataFile\"](name, null, data, true, true, true);\n          Module[\"removeRunDependency\"](`fp ${name}`);\n        }\n        Module[\"removeRunDependency\"](\"datafile_Frontend/Studio/Engine/WebAssembly.data\");\n      }\n      Module[\"addRunDependency\"](\"datafile_Frontend/Studio/Engine/WebAssembly.data\");\n      if (!Module[\"preloadResults\"]) Module[\"preloadResults\"] = {};\n      Module[\"preloadResults\"][PACKAGE_NAME] = {\n        fromCache: false\n      };\n      if (!fetched) {\n        fetched = await fetchPromise;\n      }\n      processPackageData(fetched);\n    }\n    if (Module[\"calledRun\"]) {\n      runWithFS(Module);\n    } else {\n      if (!Module[\"preRun\"]) Module[\"preRun\"] = [];\n      Module[\"preRun\"].push(runWithFS);\n    }\n  }\n  loadPackage({\n    \"files\": [ {\n      \"filename\": \"/Audio/PhotoSound.mp3\",\n      \"start\": 0,\n      \"end\": 12480\n    }, {\n      \"filename\": \"/Audio/SoundMotionDown.wav\",\n      \"start\": 12480,\n      \"end\": 26714\n    }, {\n      \"filename\": \"/Audio/SoundMotionUp.wav\",\n      \"start\": 26714,\n      \"end\": 35690\n    }, {\n      \"filename\": \"/Audio/error.mp3\",\n      \"start\": 35690,\n      \"end\": 38960\n    }, {\n      \"filename\": \"/Audio/sound_click.mp3\",\n      \"start\": 38960,\n      \"end\": 43255\n    }, {\n      \"filename\": \"/Audio/success.mp3\",\n      \"start\": 43255,\n      \"end\": 52576\n    }, {\n      \"filename\": \"/Fonts/Hind-SemiBold.ttf\",\n      \"start\": 52576,\n      \"end\": 95456\n    }, {\n      \"filename\": \"/Fonts/Rubik-Regular.ttf\",\n      \"start\": 95456,\n      \"end\": 169820\n    }, {\n      \"filename\": \"/Images/AddItem.png\",\n      \"start\": 169820,\n      \"end\": 174372\n    }, {\n      \"filename\": \"/Images/CheckMark.png\",\n      \"start\": 174372,\n      \"end\": 179823\n    }, {\n      \"filename\": \"/Images/GroupIcon.png\",\n      \"start\": 179823,\n      \"end\": 191157\n    }, {\n      \"filename\": \"/Images/IconCollapse.png\",\n      \"start\": 191157,\n      \"end\": 193293\n    }, {\n      \"filename\": \"/Images/IconDown.png\",\n      \"start\": 193293,\n      \"end\": 194621\n    }, {\n      \"filename\": \"/Images/IconExpand.png\",\n      \"start\": 194621,\n      \"end\": 196590\n    }, {\n      \"filename\": \"/Images/IconFilter.png\",\n      \"start\": 196590,\n      \"end\": 206977\n    }, {\n      \"filename\": \"/Images/IconLeft.png\",\n      \"start\": 206977,\n      \"end\": 207758\n    }, {\n      \"filename\": \"/Images/IconPlay.png\",\n      \"start\": 207758,\n      \"end\": 212474\n    }, {\n      \"filename\": \"/Images/IconRestart.png\",\n      \"start\": 212474,\n      \"end\": 215353\n    }, {\n      \"filename\": \"/Images/IconRight.png\",\n      \"start\": 215353,\n      \"end\": 216135\n    }, {\n      \"filename\": \"/Images/IconUp.png\",\n      \"start\": 216135,\n      \"end\": 217344\n    }, {\n      \"filename\": \"/Images/Sad.png\",\n      \"start\": 217344,\n      \"end\": 222749\n    }, {\n      \"filename\": \"/Images/Smiley.png\",\n      \"start\": 222749,\n      \"end\": 228152\n    }, {\n      \"filename\": \"/Images/Star.png\",\n      \"start\": 228152,\n      \"end\": 230738\n    }, {\n      \"filename\": \"/Images/StopVideo.png\",\n      \"start\": 230738,\n      \"end\": 231523\n    }, {\n      \"filename\": \"/Images/backArrow.png\",\n      \"start\": 231523,\n      \"end\": 232796\n    }, {\n      \"filename\": \"/Images/backspace.png\",\n      \"start\": 232796,\n      \"end\": 236075\n    }, {\n      \"filename\": \"/Images/cursor.png\",\n      \"start\": 236075,\n      \"end\": 236605\n    }, {\n      \"filename\": \"/Images/dee.png\",\n      \"start\": 236605,\n      \"end\": 237369\n    }, {\n      \"filename\": \"/Images/entities.png\",\n      \"start\": 237369,\n      \"end\": 239460\n    }, {\n      \"filename\": \"/Images/eye.png\",\n      \"start\": 239460,\n      \"end\": 239942\n    }, {\n      \"filename\": \"/Images/stepsList.png\",\n      \"start\": 239942,\n      \"end\": 251626\n    }, {\n      \"filename\": \"/Images/targetQR.png\",\n      \"start\": 251626,\n      \"end\": 256037\n    }, {\n      \"filename\": \"/Images/tile.png\",\n      \"start\": 256037,\n      \"end\": 262189\n    }, {\n      \"filename\": \"/Images/viewLastAttempt.png\",\n      \"start\": 262189,\n      \"end\": 275629\n    }, {\n      \"filename\": \"/Images/watermark.png\",\n      \"start\": 275629,\n      \"end\": 277661\n    }, {\n      \"filename\": \"/Models/Arc.dae\",\n      \"start\": 277661,\n      \"end\": 309140\n    }, {\n      \"filename\": \"/Models/arrow.fbx\",\n      \"start\": 309140,\n      \"end\": 338165\n    }, {\n      \"filename\": \"/Models/avatar.fbx\",\n      \"start\": 338165,\n      \"end\": 364486\n    }, {\n      \"filename\": \"/Models/handLeft.glb\",\n      \"start\": 364486,\n      \"end\": 497798\n    }, {\n      \"filename\": \"/Models/handRight.glb\",\n      \"start\": 497798,\n      \"end\": 631034\n    }, {\n      \"filename\": \"/Models/loading.fbx\",\n      \"start\": 631034,\n      \"end\": 776906\n    }, {\n      \"filename\": \"/Models/pointer.fbx\",\n      \"start\": 776906,\n      \"end\": 812682\n    }, {\n      \"filename\": \"/Shader/ShaderBlitDepth.fsh\",\n      \"start\": 812682,\n      \"end\": 813350\n    }, {\n      \"filename\": \"/Shader/ShaderBlitDepth.vsh\",\n      \"start\": 813350,\n      \"end\": 813760\n    }, {\n      \"filename\": \"/Shader/ShaderBuilding.fsh\",\n      \"start\": 813760,\n      \"end\": 814626\n    }, {\n      \"filename\": \"/Shader/ShaderBuilding.vsh\",\n      \"start\": 814626,\n      \"end\": 816106\n    }, {\n      \"filename\": \"/Shader/ShaderBuildingRoof.fsh\",\n      \"start\": 816106,\n      \"end\": 817511\n    }, {\n      \"filename\": \"/Shader/ShaderBuildingRoof.vsh\",\n      \"start\": 817511,\n      \"end\": 819178\n    }, {\n      \"filename\": \"/Shader/ShaderBuildingWall.fsh\",\n      \"start\": 819178,\n      \"end\": 820584\n    }, {\n      \"filename\": \"/Shader/ShaderBuildingWall.vsh\",\n      \"start\": 820584,\n      \"end\": 822290\n    }, {\n      \"filename\": \"/Shader/ShaderColor.fsh\",\n      \"start\": 822290,\n      \"end\": 822575\n    }, {\n      \"filename\": \"/Shader/ShaderColor.vsh\",\n      \"start\": 822575,\n      \"end\": 822756\n    }, {\n      \"filename\": \"/Shader/ShaderCursor.fsh\",\n      \"start\": 822756,\n      \"end\": 823047\n    }, {\n      \"filename\": \"/Shader/ShaderCursor.vsh\",\n      \"start\": 823047,\n      \"end\": 823353\n    }, {\n      \"filename\": \"/Shader/ShaderEmpty.fsh\",\n      \"start\": 823353,\n      \"end\": 823531\n    }, {\n      \"filename\": \"/Shader/ShaderGlyph.fsh\",\n      \"start\": 823531,\n      \"end\": 823984\n    }, {\n      \"filename\": \"/Shader/ShaderGlyph.vsh\",\n      \"start\": 823984,\n      \"end\": 825103\n    }, {\n      \"filename\": \"/Shader/ShaderHeaderGLES3.fsh\",\n      \"start\": 825103,\n      \"end\": 825468\n    }, {\n      \"filename\": \"/Shader/ShaderHeaderGLES3.vsh\",\n      \"start\": 825468,\n      \"end\": 826086\n    }, {\n      \"filename\": \"/Shader/ShaderLine.fsh\",\n      \"start\": 826086,\n      \"end\": 826337\n    }, {\n      \"filename\": \"/Shader/ShaderLine.vsh\",\n      \"start\": 826337,\n      \"end\": 827570\n    }, {\n      \"filename\": \"/Shader/ShaderMap.fsh\",\n      \"start\": 827570,\n      \"end\": 828127\n    }, {\n      \"filename\": \"/Shader/ShaderMap.vsh\",\n      \"start\": 828127,\n      \"end\": 829759\n    }, {\n      \"filename\": \"/Shader/ShaderMaterial.fsh\",\n      \"start\": 829759,\n      \"end\": 831699\n    }, {\n      \"filename\": \"/Shader/ShaderMaterial.vsh\",\n      \"start\": 831699,\n      \"end\": 833470\n    }, {\n      \"filename\": \"/Shader/ShaderMaterialAnimated.vsh\",\n      \"start\": 833470,\n      \"end\": 835107\n    }, {\n      \"filename\": \"/Shader/ShaderMaterialAnimatedTexture.vsh\",\n      \"start\": 835107,\n      \"end\": 837020\n    }, {\n      \"filename\": \"/Shader/ShaderMaterialTexture.fsh\",\n      \"start\": 837020,\n      \"end\": 839130\n    }, {\n      \"filename\": \"/Shader/ShaderMaterialTexture.vsh\",\n      \"start\": 839130,\n      \"end\": 841157\n    }, {\n      \"filename\": \"/Shader/ShaderPath.fsh\",\n      \"start\": 841157,\n      \"end\": 841848\n    }, {\n      \"filename\": \"/Shader/ShaderPath.vsh\",\n      \"start\": 841848,\n      \"end\": 842183\n    }, {\n      \"filename\": \"/Shader/ShaderRoundedRect.fsh\",\n      \"start\": 842183,\n      \"end\": 845449\n    }, {\n      \"filename\": \"/Shader/ShaderRoundedRect.vsh\",\n      \"start\": 845449,\n      \"end\": 847211\n    }, {\n      \"filename\": \"/Shader/ShaderSpatialMesh.fsh\",\n      \"start\": 847211,\n      \"end\": 847657\n    }, {\n      \"filename\": \"/Shader/ShaderSpatialMesh.vsh\",\n      \"start\": 847657,\n      \"end\": 847929\n    }, {\n      \"filename\": \"/Shader/ShaderStencil.fsh\",\n      \"start\": 847929,\n      \"end\": 848220\n    }, {\n      \"filename\": \"/Shader/ShaderStencil.vsh\",\n      \"start\": 848220,\n      \"end\": 848425\n    }, {\n      \"filename\": \"/Shader/ShaderSurface.fsh\",\n      \"start\": 848425,\n      \"end\": 849120\n    }, {\n      \"filename\": \"/Shader/ShaderSurface.vsh\",\n      \"start\": 849120,\n      \"end\": 849859\n    }, {\n      \"filename\": \"/Shader/ShaderTexture.fsh\",\n      \"start\": 849859,\n      \"end\": 850825\n    }, {\n      \"filename\": \"/Shader/ShaderTexture.vsh\",\n      \"start\": 850825,\n      \"end\": 851233\n    }, {\n      \"filename\": \"/Shader/ShaderTextureAtlas.fsh\",\n      \"start\": 851233,\n      \"end\": 851784\n    }, {\n      \"filename\": \"/Shader/ShaderTextureAtlas.vsh\",\n      \"start\": 851784,\n      \"end\": 852350\n    }, {\n      \"filename\": \"/Shader/ShaderTextureYUV.fsh\",\n      \"start\": 852350,\n      \"end\": 853557\n    }, {\n      \"filename\": \"/Shader/ShaderTranslucent.fsh\",\n      \"start\": 853557,\n      \"end\": 853830\n    }, {\n      \"filename\": \"/Shader/ShaderTranslucent.vsh\",\n      \"start\": 853830,\n      \"end\": 854097\n    }, {\n      \"filename\": \"/Translations/de.po\",\n      \"start\": 854097,\n      \"end\": 861528\n    }, {\n      \"filename\": \"/Translations/en.po\",\n      \"start\": 861528,\n      \"end\": 868404\n    }, {\n      \"filename\": \"/Translations/es.po\",\n      \"start\": 868404,\n      \"end\": 875671\n    }, {\n      \"filename\": \"/Translations/fr.po\",\n      \"start\": 875671,\n      \"end\": 883170\n    }, {\n      \"filename\": \"/Translations/nl.po\",\n      \"start\": 883170,\n      \"end\": 890343\n    } ],\n    \"remote_package_size\": 890343\n  });\n})();\n\n// end include: /tmp/tmp91ca47ia.js\n// include: /tmp/tmpf38n_lcs.js\n// All the pre-js content up to here must remain later on, we need to run\n// it.\nif ((typeof ENVIRONMENT_IS_WASM_WORKER != \"undefined\" && ENVIRONMENT_IS_WASM_WORKER) || (typeof ENVIRONMENT_IS_PTHREAD != \"undefined\" && ENVIRONMENT_IS_PTHREAD) || (typeof ENVIRONMENT_IS_AUDIO_WORKLET != \"undefined\" && ENVIRONMENT_IS_AUDIO_WORKLET)) Module[\"preRun\"] = [];\n\nvar necessaryPreJSTasks = Module[\"preRun\"].slice();\n\n// end include: /tmp/tmpf38n_lcs.js\n// include: /tmp/tmpucnh1q5m.js\nif (!Module[\"preRun\"]) throw \"Module.preRun should exist because file support used it; did a pre-js delete it?\";\n\nnecessaryPreJSTasks.forEach(task => {\n  if (Module[\"preRun\"].indexOf(task) < 0) throw \"All preRun tasks that exist before user pre-js code should remain after; did you replace Module or modify Module.preRun?\";\n});\n\n// end include: /tmp/tmpucnh1q5m.js\nvar programArgs = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = (status, toThrow) => {\n  throw toThrow;\n};\n\nvar _scriptName = import.meta.url;\n\n// `/` should be present at the end if `scriptDirectory` is not empty\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n  if (Module[\"locateFile\"]) {\n    return Module[\"locateFile\"](path, scriptDirectory);\n  }\n  return scriptDirectory + path;\n}\n\n// Hooks that are implemented differently in different runtime environments.\nvar readAsync, readBinary;\n\nif (ENVIRONMENT_IS_NODE) {\n  const isNode = globalThis.process?.versions?.node && globalThis.process?.type != \"renderer\";\n  if (!isNode) throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");\n  // These modules will usually be used on Node.js. Load them eagerly to avoid\n  // the complexity of lazy-loading.\n  var fs = require(\"node:fs\");\n  if (_scriptName.startsWith(\"file:\")) {\n    scriptDirectory = require(\"node:path\").dirname(require(\"node:url\").fileURLToPath(_scriptName)) + \"/\";\n  }\n  // include: node_shell_read.js\n  readBinary = filename => {\n    // We need to re-wrap `file://` strings to URLs.\n    filename = isFileURI(filename) ? new URL(filename) : filename;\n    var ret = fs.readFileSync(filename);\n    assert(Buffer.isBuffer(ret));\n    return ret;\n  };\n  readAsync = async (filename, binary = true) => {\n    // See the comment in the `readBinary` function.\n    filename = isFileURI(filename) ? new URL(filename) : filename;\n    var ret = fs.readFileSync(filename, binary ? undefined : \"utf8\");\n    assert(binary ? Buffer.isBuffer(ret) : typeof ret == \"string\");\n    return ret;\n  };\n  // end include: node_shell_read.js\n  if (process.argv.length > 1) {\n    thisProgram = process.argv[1].replace(/\\\\/g, \"/\");\n  }\n  programArgs = process.argv.slice(2);\n  quit_ = (status, toThrow) => {\n    process.exitCode = status;\n    throw toThrow;\n  };\n} else if (ENVIRONMENT_IS_SHELL) {} else // Note that this includes Node.js workers when relevant (pthreads is enabled).\n// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and\n// ENVIRONMENT_IS_NODE.\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n  try {\n    scriptDirectory = new URL(\".\", _scriptName).href;\n  } catch {}\n  if (!(globalThis.window || globalThis.WorkerGlobalScope)) throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");\n  // Differentiate the Web Worker from the Node Worker case, as reading must\n  // be done differently.\n  if (!ENVIRONMENT_IS_NODE) {\n    // include: web_or_worker_shell_read.js\n    if (ENVIRONMENT_IS_WORKER) {\n      readBinary = url => {\n        var xhr = new XMLHttpRequest;\n        xhr.open(\"GET\", url, false);\n        xhr.responseType = \"arraybuffer\";\n        xhr.send(null);\n        return new Uint8Array(/** @type{!ArrayBuffer} */ (xhr.response));\n      };\n    }\n    readAsync = async url => {\n      // Fetch has some additional restrictions over XHR, like it can't be used on a file:// url.\n      // See https://github.com/github/fetch/pull/92#issuecomment-140665932\n      // Cordova or Electron apps are typically loaded from a file:// url.\n      // So use XHR on webview if URL is a file URL.\n      if (isFileURI(url)) {\n        return new Promise((resolve, reject) => {\n          var xhr = new XMLHttpRequest;\n          xhr.open(\"GET\", url, true);\n          xhr.responseType = \"arraybuffer\";\n          xhr.onload = () => {\n            if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) {\n              // file URLs can return 0\n              resolve(xhr.response);\n              return;\n            }\n            reject(xhr.status);\n          };\n          xhr.onerror = reject;\n          xhr.send(null);\n        });\n      }\n      var response = await fetch(url, {\n        credentials: \"same-origin\"\n      });\n      if (response.ok) {\n        return response.arrayBuffer();\n      }\n      throw new Error(response.status + \" : \" + response.url);\n    };\n  }\n} else {\n  throw new Error(\"environment detection error\");\n}\n\n// Set up the out() and err() hooks, which are how we can print to stdout or\n// stderr, respectively.\n// Normally just binding console.log/console.error here works fine, but\n// under node (with workers) we see missing/out-of-order messages so route\n// directly to stdout and stderr.\n// See https://github.com/emscripten-core/emscripten/issues/14804\nvar defaultPrint = console.log.bind(console);\n\nvar defaultPrintErr = console.error.bind(console);\n\nif (ENVIRONMENT_IS_NODE) {\n  var utils = require(\"node:util\");\n  var stringify = a => typeof a == \"object\" ? utils.inspect(a) : a;\n  defaultPrint = (...args) => fs.writeSync(1, args.map(stringify).join(\" \") + \"\\n\");\n  defaultPrintErr = (...args) => fs.writeSync(2, args.map(stringify).join(\" \") + \"\\n\");\n}\n\nvar out = defaultPrint;\n\nvar err = defaultPrintErr;\n\n// perform assertions in shell.js after we set up out() and err(), as otherwise\n// if an assertion fails it cannot print the message\nassert(ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER || ENVIRONMENT_IS_NODE, \"pthreads do not work in this environment yet (need Web Workers, or an alternative to them)\");\n\nassert(!ENVIRONMENT_IS_SHELL, \"shell environment detected but not enabled at build time (add `shell` to `-sENVIRONMENT` to enable)\");\n\n// end include: shell.js\n// include: preamble.js\n// === Preamble library stuff ===\n// Documentation for the public APIs defined in this file must be updated in:\n//    site/source/docs/api_reference/preamble.js.rst\n// A prebuilt local version of the documentation is available at:\n//    site/build/text/docs/api_reference/preamble.js.txt\n// You can also build docs locally as HTML or other formats in site/\n// An online HTML version (which may be of a different version of Emscripten)\n//    is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html\nvar dynamicLibraries = [];\n\nvar wasmBinary;\n\nif (!globalThis.WebAssembly) {\n  err(\"no native wasm support detected\");\n}\n\n// Wasm globals\n// For sending to workers.\nvar wasmModule;\n\n//========================================\n// Runtime essentials\n//========================================\n// whether we are quitting the application. no code should run after this.\n// set in exit() and abort()\nvar ABORT = false;\n\n// set by exit() and abort().  Passed to 'onExit' handler.\n// NOTE: This is also used as the process return code in shell environments\n// but only when noExitRuntime is false.\nvar EXITSTATUS;\n\n// In STRICT mode, we only define assert() when ASSERTIONS is set.  i.e. we\n// don't define it at all in release modes.  This matches the behaviour of\n// MINIMAL_RUNTIME.\n// TODO(sbc): Make this the default even without STRICT enabled.\n/** @type {function(*, string=)} */ function assert(condition, text) {\n  if (!condition) {\n    abort(\"Assertion failed\" + (text ? \": \" + text : \"\"));\n  }\n}\n\n// We used to include malloc/free by default in the past. Show a helpful error in\n// builds with assertions.\n/**\n * Indicates whether filename is delivered via file protocol (as opposed to http/https)\n * @noinline\n */ var isFileURI = filename => filename.startsWith(\"file://\");\n\n// include: runtime_common.js\n// include: runtime_stack_check.js\n// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode.\nfunction writeStackCookie() {\n  var max = _emscripten_stack_get_end();\n  assert((max & 3) == 0);\n  // If the stack ends at address zero we write our cookies 4 bytes into the\n  // stack.  This prevents interference with SAFE_HEAP and ASAN which also\n  // monitor writes to address zero.\n  if (max == 0) {\n    max += 4;\n  }\n  // The stack grow downwards towards _emscripten_stack_get_end.\n  // We write cookies to the final two words in the stack and detect if they are\n  // ever overwritten.\n  (growMemViews(), HEAPU32)[((max) >> 2)] = 34821223;\n  (growMemViews(), HEAPU32)[(((max) + (4)) >> 2)] = 2310721022;\n  // Also test the global address 0 for integrity.\n  (growMemViews(), HEAPU32)[((0) >> 2)] = 1668509029;\n}\n\nfunction checkStackCookie() {\n  if (ABORT) return;\n  var max = _emscripten_stack_get_end();\n  // See writeStackCookie().\n  if (max == 0) {\n    max += 4;\n  }\n  var cookie1 = (growMemViews(), HEAPU32)[((max) >> 2)];\n  var cookie2 = (growMemViews(), HEAPU32)[(((max) + (4)) >> 2)];\n  if (cookie1 != 34821223 || cookie2 != 2310721022) {\n    abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`);\n  }\n  // Also test the global address 0 for integrity.\n  if ((growMemViews(), HEAPU32)[((0) >> 2)] != 1668509029) {\n    abort(\"Runtime error: The application has corrupted its heap memory area (address zero)!\");\n  }\n}\n\n// end include: runtime_stack_check.js\n// include: runtime_exceptions.js\n// Base Emscripten EH error class\nclass EmscriptenEH {}\n\nclass EmscriptenSjLj extends EmscriptenEH {}\n\n// end include: runtime_exceptions.js\n// include: runtime_debug.js\nvar runtimeDebug = true;\n\n// Switch to false at runtime to disable logging at the right times\n// Used by XXXXX_DEBUG settings to output debug messages.\nfunction dbg(...args) {\n  if (!runtimeDebug && typeof runtimeDebug != \"undefined\") return;\n  // Avoid using the console for debugging in multi-threaded node applications\n  // See https://github.com/emscripten-core/emscripten/issues/14804\n  if (ENVIRONMENT_IS_NODE) {\n    // TODO(sbc): Unify with err/out implementation in shell.sh.\n    var fs = require(\"node:fs\");\n    var utils = require(\"node:util\");\n    function stringify(a) {\n      switch (typeof a) {\n       case \"object\":\n        return utils.inspect(a);\n\n       case \"undefined\":\n        return \"undefined\";\n      }\n      return a;\n    }\n    fs.writeSync(2, args.map(stringify).join(\" \") + \"\\n\");\n  } else // TODO(sbc): Make this configurable somehow.  Its not always convenient for\n  // logging to show up as warnings.\n  console.warn(...args);\n}\n\n// Endianness check\n(() => {\n  var h16 = new Int16Array(1);\n  var h8 = new Int8Array(h16.buffer);\n  h16[0] = 25459;\n  if (h8[0] !== 115 || h8[1] !== 99) abort(\"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)\");\n})();\n\nfunction consumedModuleProp(prop) {\n  if (!Object.getOwnPropertyDescriptor(Module, prop)) {\n    Object.defineProperty(Module, prop, {\n      configurable: true,\n      set() {\n        abort(`Attempt to set \\`Module.${prop}\\` after it has already been processed.  This can happen, for example, when code is injected via '--post-js' rather than '--pre-js'`);\n      }\n    });\n  }\n}\n\nfunction makeInvalidEarlyAccess(name) {\n  return () => assert(false, `call to '${name}' via reference taken before Wasm module initialization`);\n}\n\nfunction ignoredModuleProp(prop) {\n  if (Object.getOwnPropertyDescriptor(Module, prop)) {\n    abort(`\\`Module.${prop}\\` was supplied but \\`${prop}\\` not included in INCOMING_MODULE_JS_API`);\n  }\n}\n\n// forcing the filesystem exports a few things by default\nfunction isExportedByForceFilesystem(name) {\n  return name === \"FS_createPath\" || name === \"FS_createDataFile\" || name === \"FS_createPreloadedFile\" || name === \"FS_preloadFile\" || name === \"FS_unlink\" || name === \"addRunDependency\" || name === \"removeRunDependency\";\n}\n\nfunction missingLibrarySymbol(sym) {\n  // Any symbol that is not included from the JS library is also (by definition)\n  // not exported on the Module object.\n  unexportedRuntimeSymbol(sym);\n}\n\nfunction unexportedRuntimeSymbol(sym) {\n  if (ENVIRONMENT_IS_PTHREAD) {\n    return;\n  }\n  if (!Object.getOwnPropertyDescriptor(Module, sym)) {\n    Object.defineProperty(Module, sym, {\n      configurable: true,\n      get() {\n        var msg = `'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;\n        if (isExportedByForceFilesystem(sym)) {\n          msg += \". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you\";\n        }\n        abort(msg);\n      }\n    });\n  }\n}\n\n/**\n * Override `err`/`out`/`dbg` to report thread / worker information\n */ function initWorkerLogging() {\n  function getLogPrefix() {\n    var t = 0;\n    if (runtimeInitialized && typeof _pthread_self != \"undefined\") {\n      t = _pthread_self();\n    }\n    return `w:${workerID},t:${ptrToString(t)}:`;\n  }\n  // Prefix all dbg() messages with the calling thread info.\n  var origDbg = dbg;\n  dbg = (...args) => origDbg(getLogPrefix(), ...args);\n}\n\ninitWorkerLogging();\n\n// end include: runtime_debug.js\n// Support for growable heap + pthreads, where the buffer may change, so JS views\n// must be updated.\nfunction growMemViews() {\n  // `updateMemoryViews` updates all the views simultaneously, so it's enough to check any of them.\n  if (wasmMemory.buffer != HEAP8.buffer) {\n    updateMemoryViews();\n  }\n}\n\nvar readyPromiseResolve, readyPromiseReject;\n\nif (ENVIRONMENT_IS_NODE && (ENVIRONMENT_IS_PTHREAD)) {\n  // Create as web-worker-like an environment as we can.\n  globalThis.self = globalThis;\n  var parentPort = worker_threads.parentPort;\n  // Deno and Bun already have `postMessage` defined on the global scope and\n  // deliver messages to `globalThis.onmessage`, so we must not duplicate that\n  // behavior here if `postMessage` is already present.\n  if (!globalThis.postMessage) {\n    parentPort.on(\"message\", msg => globalThis.onmessage?.({\n      data: msg\n    }));\n    globalThis.postMessage = msg => parentPort.postMessage(msg);\n  }\n  // Node.js Workers do not pass postMessage()s and uncaught exception events to the parent\n  // thread necessarily in the same order where they were generated in sequential program order.\n  // See https://github.com/nodejs/node/issues/59617\n  // To remedy this, capture all uncaughtExceptions in the Worker, and sequentialize those over\n  // to the same postMessage pipe that other messages use.\n  process.on(\"uncaughtException\", err => {\n    postMessage({\n      cmd: 8,\n      error: err\n    });\n    // Also shut down the Worker to match the same semantics as if this uncaughtException\n    // handler was not registered.\n    // (n.b. this will not shut down the whole Node.js app process, but just the Worker)\n    process.exit(1);\n  });\n}\n\n// include: runtime_pthread.js\n// Pthread Web Worker handling code.\n// This code runs only on pthread web workers and handles pthread setup\n// and communication with the main thread via postMessage.\n// Unique ID of the current pthread worker (zero on non-pthread-workers\n// including the main thread).\nvar workerID = 0;\n\n// Map of modules to be shared with new threads.  This gets populated by the\n// main thread and shared with all new workers via the initial `load` message.\nvar sharedModules = {};\n\nvar startWorker;\n\nif (ENVIRONMENT_IS_PTHREAD) {\n  // Thread-local guard variable for one-time init of the JS state\n  var initializedJS = false;\n  // Turn unhandled rejected promises into errors so that the main thread will be\n  // notified about them.\n  self.onunhandledrejection = e => {\n    throw e.reason || e;\n  };\n  function handleMessage(e) {\n    try {\n      var msgData = e.data;\n      //dbg('msgData: ' + Object.keys(msgData));\n      var cmd = msgData.cmd;\n      if (cmd == 1) {\n        // Preload command that is called once per worker to parse and load the Emscripten code.\n        workerID = msgData.workerID;\n        // Until we initialize the runtime, queue up any further incoming messages.\n        let messageQueue = [];\n        self.onmessage = e => messageQueue.push(e);\n        // And add a callback for when the runtime is initialized.\n        startWorker = () => {\n          // Notify the main thread that this thread has loaded.\n          postMessage({\n            cmd: 3\n          });\n          // Process any messages that were queued before the thread was ready.\n          for (let msg of messageQueue) {\n            handleMessage(msg);\n          }\n          // Restore the real message handler.\n          self.onmessage = handleMessage;\n        };\n        dynamicLibraries = msgData.dynamicLibraries;\n        sharedModules = msgData.sharedModules;\n        // Use `const` here to ensure that the variable is scoped only to\n        // that iteration, allowing safe reference from a closure.\n        for (const handler of msgData.handlers) {\n          // If the main module has a handler for a certain event, but no\n          // handler exists on the pthread worker, then proxy that handler\n          // back to the main thread.\n          if (!Module[handler] || Module[handler].proxy) {\n            Module[handler] = (...args) => {\n              postMessage({\n                cmd: 9,\n                handler,\n                args\n              });\n            };\n            // Rebind the out / err handlers if needed\n            if (handler == \"print\") out = Module[handler];\n            if (handler == \"printErr\") err = Module[handler];\n          }\n        }\n        wasmMemory = msgData.wasmMemory;\n        updateMemoryViews();\n        wasmModule = msgData.wasmModule;\n        createWasm();\n        run();\n      } else if (cmd == 2) {\n        assert(msgData.pthread_ptr);\n        // Call inside JS module to set up the stack frame for this pthread in JS module scope.\n        // This needs to be the first thing that we do, as we cannot call to any C/C++ functions\n        // until the thread stack is initialized.\n        establishStackSpace(msgData.pthread_ptr);\n        // Pass the thread address to wasm to store it for fast access.\n        __emscripten_thread_init(msgData.pthread_ptr, /*is_main=*/ 0, /*is_runtime=*/ 0, /*can_block=*/ 1, 0, 0);\n        PThread.threadInitTLS();\n        // Await mailbox notifications with `Atomics.waitAsync` so we can start\n        // using the fast `Atomics.notify` notification path.\n        __emscripten_thread_mailbox_await(msgData.pthread_ptr);\n        if (!initializedJS) {\n          // Embind must initialize itself on all threads, as it generates support JS.\n          // We only do this once per worker since they get reused\n          __embind_initialize_bindings();\n          initializedJS = true;\n        }\n        try {\n          invokeEntryPoint(msgData.start_routine, msgData.arg);\n        } catch (ex) {\n          if (ex != \"unwind\") {\n            // The pthread \"crashed\".  Do not call `_emscripten_thread_exit` (which\n            // would make this thread joinable).  Instead, re-throw the exception\n            // and let the top level handler propagate it back to the main thread.\n            throw ex;\n          }\n        }\n      } else if (cmd == 4) {\n        if (initializedJS) {\n          checkMailbox();\n        }\n      } else if (cmd) {\n        // The received message looks like something that should be handled by this message\n        // handler, (since there is a cmd field present), but is not one of the\n        // recognized commands:\n        err(`worker: received unknown command ${cmd}`);\n        err(msgData);\n      }\n    } catch (ex) {\n      err(`worker: onmessage() captured an uncaught exception: ${ex}`);\n      if (ex?.stack) err(ex.stack);\n      __emscripten_thread_crashed();\n      throw ex;\n    }\n  }\n  self.onmessage = handleMessage;\n}\n\n// ENVIRONMENT_IS_PTHREAD\n// end include: runtime_pthread.js\n// Memory management\nvar runtimeInitialized = false;\n\nfunction updateMemoryViews() {\n  var b = wasmMemory.buffer;\n  HEAP8 = new Int8Array(b);\n  HEAP16 = new Int16Array(b);\n  Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n  HEAPU16 = new Uint16Array(b);\n  HEAP32 = new Int32Array(b);\n  HEAPU32 = new Uint32Array(b);\n  HEAPF32 = new Float32Array(b);\n  HEAPF64 = new Float64Array(b);\n  HEAP64 = new BigInt64Array(b);\n  HEAPU64 = new BigUint64Array(b);\n}\n\n// In non-standalone/normal mode, we create the memory here.\n// include: runtime_init_memory.js\n// Create the wasm memory. (Note: this only applies if IMPORTED_MEMORY is defined)\n// check for full engine support (use string 'subarray' to avoid closure compiler confusion)\nfunction initMemory() {\n  if ((ENVIRONMENT_IS_PTHREAD)) {\n    return;\n  }\n  if (Module[\"wasmMemory\"]) {\n    wasmMemory = Module[\"wasmMemory\"];\n  } else {\n    var INITIAL_MEMORY = Module[\"INITIAL_MEMORY\"] || 16777216;\n    assert(INITIAL_MEMORY >= 65536, `INITIAL_MEMORY should be larger than STACK_SIZE, was ${INITIAL_MEMORY}! (STACK_SIZE=65536)`);\n    /** @suppress {checkTypes} */ wasmMemory = new WebAssembly.Memory({\n      \"initial\": INITIAL_MEMORY / 65536,\n      // In theory we should not need to emit the maximum if we want \"unlimited\"\n      // or 4GB of memory, but VMs error on that atm, see\n      // https://github.com/emscripten-core/emscripten/issues/14130\n      // And in the pthreads case we definitely need to emit a maximum. So\n      // always emit one.\n      \"maximum\": 32768,\n      \"shared\": true\n    });\n  }\n  updateMemoryViews();\n}\n\n// end include: runtime_init_memory.js\n// include: memoryprofiler.js\n// end include: memoryprofiler.js\n// end include: runtime_common.js\nassert(globalThis.Int32Array && globalThis.Float64Array && Int32Array.prototype.subarray && Int32Array.prototype.set, \"JS engine does not provide full typed array support\");\n\nvar __RELOC_FUNCS__ = [];\n\nfunction preRun() {\n  assert(!ENVIRONMENT_IS_PTHREAD);\n  // PThreads reuse the runtime from the main thread.\n  if (Module[\"preRun\"]) {\n    if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n    while (Module[\"preRun\"].length) {\n      addOnPreRun(Module[\"preRun\"].shift());\n    }\n  }\n  consumedModuleProp(\"preRun\");\n  // Begin ATPRERUNS hooks\n  callRuntimeCallbacks(onPreRuns);\n}\n\nfunction initRuntime() {\n  assert(!runtimeInitialized);\n  runtimeInitialized = true;\n  if (ENVIRONMENT_IS_PTHREAD) return startWorker();\n  checkStackCookie();\n  callRuntimeCallbacks(__RELOC_FUNCS__);\n  // No ATINITS hooks\n  wasmExports[\"__wasm_call_ctors\"]();\n  // Begin ATPOSTCTORS hooks\n  callRuntimeCallbacks(onPostCtors);\n}\n\nfunction preMain() {\n  checkStackCookie();\n}\n\nfunction postRun() {\n  checkStackCookie();\n  if ((ENVIRONMENT_IS_PTHREAD)) {\n    return;\n  }\n  // PThreads reuse the runtime from the main thread.\n  if (Module[\"postRun\"]) {\n    if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n    while (Module[\"postRun\"].length) {\n      addOnPostRun(Module[\"postRun\"].shift());\n    }\n  }\n  consumedModuleProp(\"postRun\");\n  // Begin ATPOSTRUNS hooks\n  callRuntimeCallbacks(onPostRuns);\n}\n\n/**\n * @param {string|number=} what\n */ function abort(what) {\n  Module[\"onAbort\"]?.(what);\n  what = `Aborted(${what})`;\n  // TODO(sbc): Should we remove printing and leave it up to whoever\n  // catches the exception?\n  err(what);\n  ABORT = true;\n  // Use a wasm runtime error, because a JS error might be seen as a foreign\n  // exception, which means we'd run destructors on it. We need the error to\n  // simply make the program stop.\n  // FIXME This approach does not work in Wasm EH because it currently does not assume\n  // all RuntimeErrors are from traps; it decides whether a RuntimeError is from\n  // a trap or not based on a hidden field within the object. So at the moment\n  // we don't have a way of throwing a wasm trap from JS. TODO Make a JS API that\n  // allows this in the wasm spec.\n  // Suppress closure compiler warning here. Closure compiler's builtin extern\n  // definition for WebAssembly.RuntimeError claims it takes no arguments even\n  // though it can.\n  // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure gets fixed.\n  /** @suppress {checkTypes} */ var e = new WebAssembly.RuntimeError(what);\n  readyPromiseReject?.(e);\n  // Throw the error whether or not MODULARIZE is set because abort is used\n  // in code paths apart from instantiation where an exception is expected\n  // to be thrown when abort is called.\n  throw e;\n}\n\nfunction createExportWrapper(name, nargs) {\n  return (...args) => {\n    assert(runtimeInitialized, `native function \\`${name}\\` called before runtime initialization`);\n    var f = wasmExports[name];\n    assert(f, `exported native function \\`${name}\\` not found`);\n    // Only assert for too many arguments. Too few can be valid since the missing arguments will be zero filled.\n    assert(args.length <= nargs, `native function \\`${name}\\` called with ${args.length} args but expects ${nargs}`);\n    return f(...args);\n  };\n}\n\nvar wasmBinaryFile;\n\nfunction findWasmBinary() {\n  if (Module[\"locateFile\"]) {\n    return locateFile(\"WebAssembly.wasm\");\n  }\n  // Use bundler-friendly `new URL(..., import.meta.url)` pattern; works in browsers too.\n  return new URL(\"WebAssembly.wasm\", import.meta.url).href;\n}\n\nfunction getBinarySync(file) {\n  if (file == wasmBinaryFile && wasmBinary) {\n    return new Uint8Array(wasmBinary);\n  }\n  if (readBinary) {\n    return readBinary(file);\n  }\n  // Throwing a plain string here, even though it not normally advisable since\n  // this gets turning into an `abort` in instantiateArrayBuffer.\n  throw \"both async and sync fetching of the wasm failed\";\n}\n\nasync function getWasmBinary(binaryFile) {\n  // If we don't have the binary yet, load it asynchronously using readAsync.\n  if (!wasmBinary) {\n    // Fetch the binary using readAsync\n    try {\n      var response = await readAsync(binaryFile);\n      return new Uint8Array(response);\n    } catch {}\n  }\n  // Otherwise, getBinarySync should be able to get it synchronously\n  return getBinarySync(binaryFile);\n}\n\nasync function instantiateArrayBuffer(binaryFile, imports) {\n  try {\n    var binary = await getWasmBinary(binaryFile);\n    var instance = await WebAssembly.instantiate(binary, imports);\n    return instance;\n  } catch (reason) {\n    err(`failed to asynchronously prepare wasm: ${reason}`);\n    // Warn on some common problems.\n    if (isFileURI(binaryFile)) {\n      err(`warning: Loading from a file URI (${binaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`);\n    }\n    abort(reason);\n  }\n}\n\nasync function instantiateAsync(binary, binaryFile, imports) {\n  if (!binary && !isFileURI(binaryFile) && !ENVIRONMENT_IS_NODE) {\n    try {\n      var response = fetch(binaryFile, {\n        credentials: \"same-origin\"\n      });\n      var instantiationResult = await WebAssembly.instantiateStreaming(response, imports);\n      return instantiationResult;\n    } catch (reason) {\n      // We expect the most common failure cause to be a bad MIME type for the binary,\n      // in which case falling back to ArrayBuffer instantiation should work.\n      err(`wasm streaming compile failed: ${reason}`);\n      err(\"falling back to ArrayBuffer instantiation\");\n    }\n  }\n  return instantiateArrayBuffer(binaryFile, imports);\n}\n\nfunction getWasmImports() {\n  assignWasmImports();\n  // prepare imports\n  var GOTProxyHandler = new Proxy(new Set([]), GOTHandler);\n  var imports = {\n    \"env\": wasmImports,\n    \"wasi_snapshot_preview1\": wasmImports,\n    \"GOT.mem\": GOTProxyHandler,\n    \"GOT.func\": GOTProxyHandler\n  };\n  return imports;\n}\n\n// Create the wasm instance.\n// Receives the wasm imports, returns the exports.\nasync function createWasm() {\n  // Load the wasm module and create an instance of using native support in the JS engine.\n  // handle a generated wasm instance, receiving its exports and\n  // performing other necessary setup\n  /** @param {WebAssembly.Module=} module*/ function receiveInstance(instance, module) {\n    wasmExports = instance.exports;\n    var origExports = wasmExports;\n    mergeLibSymbols(wasmExports, \"main\");\n    var metadata = getDylinkMetadata(module);\n    if (metadata.neededDynlibs) {\n      dynamicLibraries = metadata.neededDynlibs.concat(dynamicLibraries);\n    }\n    registerTLSInit(wasmExports[\"_emscripten_tls_init\"], instance.exports, metadata);\n    assignWasmExports(wasmExports);\n    updateGOT(origExports);\n    LDSO.init();\n    loadDylibs();\n    // We now have the Wasm module loaded up, keep a reference to the compiled module so we can post it to the workers.\n    wasmModule = module;\n    return wasmExports;\n  }\n  // Prefer streaming instantiation if available.\n  // Async compilation can be confusing when an error on the page overwrites Module\n  // (for example, if the order of elements is wrong, and the one defining Module is\n  // later), so we save Module and check it later.\n  var trueModule = Module;\n  function receiveInstantiationResult(result) {\n    // 'result' is a ResultObject object which has both the module and instance.\n    // receiveInstance() will swap in the exports (to Module.asm) so they can be called\n    assert(Module === trueModule, \"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?\");\n    trueModule = null;\n    return receiveInstance(result[\"instance\"], result[\"module\"]);\n  }\n  var info = getWasmImports();\n  // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback\n  // to manually instantiate the Wasm module themselves. This allows pages to\n  // run the instantiation parallel to any other async startup actions they are\n  // performing.\n  // Also pthreads and wasm workers initialize the wasm instance through this\n  // path.\n  if (Module[\"instantiateWasm\"]) {\n    return new Promise((resolve, reject) => {\n      try {\n        Module[\"instantiateWasm\"](info, (inst, mod) => {\n          resolve(receiveInstance(inst, mod));\n        });\n      } catch (e) {\n        err(`Module.instantiateWasm callback failed with error: ${e}`);\n        reject(e);\n      }\n    });\n  }\n  if ((ENVIRONMENT_IS_PTHREAD)) {\n    // Instantiate from the module that was received via postMessage from\n    // the main thread. We can just use sync instantiation in the worker.\n    assert(wasmModule, \"wasmModule should have been received via postMessage\");\n    var instance = new WebAssembly.Instance(wasmModule, getWasmImports());\n    return receiveInstance(instance, wasmModule);\n  }\n  wasmBinaryFile ??= findWasmBinary();\n  var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info);\n  var exports = receiveInstantiationResult(result);\n  return exports;\n}\n\n// end include: preamble.js\n// Begin JS library code\nclass ExitStatus {\n  name=\"ExitStatus\";\n  constructor(status) {\n    this.message = `Program terminated with exit(${status})`;\n    this.status = status;\n  }\n}\n\nvar GOT = {};\n\nvar GOTHandler = {\n  get(weakImports, symName) {\n    var rtn = GOT[symName];\n    if (!rtn) {\n      rtn = GOT[symName] = new WebAssembly.Global({\n        \"value\": \"i32\",\n        \"mutable\": true\n      }, -1);\n    }\n    if (!weakImports.has(symName)) {\n      // Any non-weak reference to a symbol marks it as `required`, which\n      // enabled `reportUndefinedSymbols` to report undefined symbol errors\n      // correctly.\n      rtn.required = true;\n    }\n    return rtn;\n  }\n};\n\n/** @type {!Int16Array} */ var HEAP16;\n\n/** @type {!Int32Array} */ var HEAP32;\n\n/** not-@type {!BigInt64Array} */ var HEAP64;\n\n/** @type {!Int8Array} */ var HEAP8;\n\n/** @type {!Float32Array} */ var HEAPF32;\n\n/** @type {!Float64Array} */ var HEAPF64;\n\n/** @type {!Uint16Array} */ var HEAPU16;\n\n/** @type {!Uint32Array} */ var HEAPU32;\n\n/** not-@type {!BigUint64Array} */ var HEAPU64;\n\n/** @type {!Uint8Array} */ var HEAPU8;\n\nvar terminateWorker = worker => {\n  worker.terminate();\n  // terminate() can be asynchronous, so in theory the worker can continue\n  // to run for some amount of time after termination.  However from our POV\n  // the worker is now dead and we don't want to hear from it again, so we stub\n  // out its message handler here.  This avoids having to check in each of\n  // the onmessage handlers if the message was coming from a valid worker.\n  worker.onmessage = e => {\n    var cmd = e.data.cmd;\n    err(`received \"${cmd}\" command from terminated worker: ${worker.workerID}`);\n  };\n};\n\nvar cleanupThread = pthread_ptr => {\n  assert(!ENVIRONMENT_IS_PTHREAD, \"cleanupThread() should only be called from the main thread\");\n  assert(pthread_ptr, \"null pthread_ptr passed to cleanupThread\");\n  var worker = PThread.pthreads[pthread_ptr];\n  PThread.finishedThreads.delete(pthread_ptr);\n  if (pthread_ptr in PThread.outstandingPromises) {\n    PThread.outstandingPromises[pthread_ptr].resolve();\n  }\n  assert(worker);\n  PThread.returnWorkerToPool(worker);\n};\n\nvar callRuntimeCallbacks = callbacks => {\n  while (callbacks.length > 0) {\n    // Pass the module as the first argument.\n    callbacks.shift()(Module);\n  }\n};\n\nvar onPreRuns = [];\n\nvar addOnPreRun = cb => onPreRuns.push(cb);\n\nvar markAsFinished = pthread_ptr => {\n  PThread.finishedThreads.add(pthread_ptr);\n  if (pthread_ptr in PThread.outstandingPromises) {\n    PThread.outstandingPromises[pthread_ptr].resolve();\n  }\n};\n\nvar runDependencies = 0;\n\nvar dependenciesFulfilled = null;\n\nvar runDependencyTracking = {};\n\nvar runDependencyWatcher = null;\n\nvar removeRunDependency = id => {\n  runDependencies--;\n  Module[\"monitorRunDependencies\"]?.(runDependencies);\n  assert(id, \"removeRunDependency requires an ID\");\n  assert(runDependencyTracking[id]);\n  delete runDependencyTracking[id];\n  if (runDependencies == 0) {\n    if (runDependencyWatcher !== null) {\n      clearInterval(runDependencyWatcher);\n      runDependencyWatcher = null;\n    }\n    if (dependenciesFulfilled) {\n      var callback = dependenciesFulfilled;\n      dependenciesFulfilled = null;\n      callback();\n    }\n  }\n};\n\nvar addRunDependency = id => {\n  runDependencies++;\n  Module[\"monitorRunDependencies\"]?.(runDependencies);\n  assert(id, \"addRunDependency requires an ID\");\n  assert(!runDependencyTracking[id]);\n  runDependencyTracking[id] = 1;\n  if (runDependencyWatcher === null && globalThis.setInterval) {\n    // Check for missing dependencies every few seconds\n    runDependencyWatcher = setInterval(() => {\n      if (ABORT) {\n        clearInterval(runDependencyWatcher);\n        runDependencyWatcher = null;\n        return;\n      }\n      var shown = false;\n      for (var dep in runDependencyTracking) {\n        if (!shown) {\n          shown = true;\n          err(\"still waiting on run dependencies:\");\n        }\n        err(`dependency: ${dep}`);\n      }\n      if (shown) {\n        err(\"(end of list)\");\n      }\n    }, 1e4);\n    // Prevent this timer from keeping the runtime alive if nothing\n    // else is.\n    runDependencyWatcher.unref?.();\n  }\n};\n\nvar spawnThread = threadParams => {\n  assert(!ENVIRONMENT_IS_PTHREAD, \"spawnThread() should only be called from the main thread\");\n  assert(threadParams.pthread_ptr, \"spawnThread called with null pthread ptr\");\n  var worker = PThread.getNewWorker();\n  if (!worker) {\n    // No available workers in the PThread pool.\n    return 6;\n  }\n  assert(!worker.pthread_ptr);\n  // Add to pthreads map\n  PThread.pthreads[threadParams.pthread_ptr] = worker;\n  worker.pthread_ptr = threadParams.pthread_ptr;\n  var msg = {\n    cmd: 2,\n    start_routine: threadParams.startRoutine,\n    arg: threadParams.arg,\n    pthread_ptr: threadParams.pthread_ptr\n  };\n  // Ask the worker to start executing its pthread entry point function.\n  worker.postMessage(msg, threadParams.transferList);\n  return 0;\n};\n\nvar runtimeKeepaliveCounter = 0;\n\nvar keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;\n\nvar stackSave = () => _emscripten_stack_get_current();\n\nvar stackRestore = val => __emscripten_stack_restore(val);\n\nvar stackAlloc = sz => __emscripten_stack_alloc(sz);\n\n/** @type{function(number, (number|boolean), ...number)} */ var proxyToMainThread = (funcIndex, emAsmAddr, proxyMode, ...callArgs) => {\n  // EM_ASM proxying is done by passing a pointer to the address of the EM_ASM\n  // content as `emAsmAddr`.  JS library proxying is done by passing an index\n  // into `proxiedJSCallArgs` as `funcIndex`. If `emAsmAddr` is non-zero then\n  // `funcIndex` will be ignored.\n  // Additional arguments are passed after the first three are the actual\n  // function arguments.\n  // The serialization buffer contains the number of call params, and then\n  // all the args here.\n  // We also pass 'proxyMode' to C separately, since C needs to look at it.\n  // Allocate a buffer (on the stack), which will be copied if necessary by\n  // the C code.\n  // First passed parameter specifies the number of arguments to the function.\n  // When BigInt support is enabled, we must handle types in a more complex\n  // way, detecting at runtime if a value is a BigInt or not (as we have no\n  // type info here). To do that, add a \"prefix\" before each value that\n  // indicates if it is a BigInt, which effectively doubles the number of\n  // values we serialize for proxying. TODO: pack this?\n  var bufSize = 8 * callArgs.length * 2;\n  var sp = stackSave();\n  var args = stackAlloc(bufSize);\n  var b = ((args) >> 3);\n  for (var arg of callArgs) {\n    if (typeof arg == \"bigint\") {\n      // The prefix is non-zero to indicate a bigint.\n      (growMemViews(), HEAP64)[b++] = 1n;\n      (growMemViews(), HEAP64)[b++] = arg;\n    } else {\n      // The prefix is zero to indicate a JS Number.\n      (growMemViews(), HEAP64)[b++] = 0n;\n      (growMemViews(), HEAPF64)[b++] = arg;\n    }\n  }\n  var rtn = __emscripten_run_js_on_main_thread(funcIndex, emAsmAddr, bufSize, args, proxyMode);\n  stackRestore(sp);\n  return rtn;\n};\n\nfunction _proc_exit(code) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(0, 0, 1, code);\n  EXITSTATUS = code;\n  if (!keepRuntimeAlive()) {\n    PThread.terminateAllThreads();\n    Module[\"onExit\"]?.(code);\n    ABORT = true;\n  }\n  quit_(code, new ExitStatus(code));\n}\n\n_proc_exit.sig = \"vi\";\n\nfunction exitOnMainThread(returnCode) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(1, 0, 0, returnCode);\n  _exit(returnCode);\n}\n\n/** @param {boolean|number=} implicit */ var exitJS = (status, implicit) => {\n  EXITSTATUS = status;\n  checkUnflushedContent();\n  if (ENVIRONMENT_IS_PTHREAD) {\n    // implicit exit can never happen on a pthread\n    assert(!implicit);\n    // When running in a pthread we propagate the exit back to the main thread\n    // where it can decide if the whole process should be shut down or not.\n    // The pthread may have decided not to exit its own runtime, for example\n    // because it runs a main loop, but that doesn't affect the main thread.\n    exitOnMainThread(status);\n    throw \"unwind\";\n  }\n  // if exit() was called explicitly, warn the user if the runtime isn't actually being shut down\n  if (keepRuntimeAlive() && !implicit) {\n    var msg = `program exited (with status: ${status}), but keepRuntimeAlive() is set (counter=${runtimeKeepaliveCounter}) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`;\n    readyPromiseReject?.(msg);\n    err(msg);\n  }\n  _proc_exit(status);\n};\n\nvar _exit = exitJS;\n\n_exit.sig = \"vi\";\n\nvar waitAsyncPolyfilled = (!Atomics.waitAsync || (globalThis.navigator?.userAgent && Number((navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./) || [])[2]) < 91));\n\nfunction ptrToString(ptr) {\n  assert(typeof ptr === \"number\", `ptrToString expects a number, got ${typeof ptr}`);\n  // Convert to 32-bit unsigned value\n  ptr >>>= 0;\n  return \"0x\" + ptr.toString(16).padStart(8, \"0\");\n}\n\nvar PThread = {\n  unusedWorkers: [],\n  tlsInitFunctions: [],\n  pthreads: {},\n  outstandingPromises: {},\n  finishedThreads: new Set,\n  nextWorkerID: 1,\n  init() {\n    if ((!(ENVIRONMENT_IS_PTHREAD))) {\n      PThread.initMainThread();\n    }\n  },\n  initMainThread() {\n    var pthreadPoolSize = 3;\n    // Start loading up the Worker pool, if requested.\n    while (pthreadPoolSize--) {\n      PThread.allocateUnusedWorker();\n    }\n    // MINIMAL_RUNTIME takes care of calling loadWasmModuleToAllWorkers\n    // in postamble_minimal.js\n    addOnPreRun(async () => {\n      var pthreadPoolReady = PThread.loadWasmModuleToAllWorkers();\n      addRunDependency(\"loading-workers\");\n      await pthreadPoolReady;\n      removeRunDependency(\"loading-workers\");\n    });\n  },\n  terminateAllThreads: () => {\n    assert(!ENVIRONMENT_IS_PTHREAD, \"terminateAllThreads() should only be called from the main thread\");\n    // Attempt to kill all workers.  Sadly (at least on the web) there is no\n    // way to terminate a worker synchronously, or to be notified when a\n    // worker is actually terminated.  This means there is some risk that\n    // pthreads will continue to be executing after `worker.terminate` has\n    // returned.  For this reason, we don't call `returnWorkerToPool` here or\n    // free the underlying pthread data structures.\n    for (var worker of Object.values(PThread.pthreads)) {\n      terminateWorker(worker);\n    }\n    for (var worker of PThread.unusedWorkers) {\n      terminateWorker(worker);\n    }\n    PThread.unusedWorkers = [];\n    PThread.pthreads = {};\n  },\n  terminateRuntime: () => {\n    assert(!ENVIRONMENT_IS_PTHREAD, \"terminateRuntime() should only be called from the main thread\");\n    PThread.terminateAllThreads();\n    var pthread_ptr = _pthread_self();\n    ___set_thread_state(0, 0, 0, 1);\n    if (!waitAsyncPolyfilled) {\n      // Break the waitAsync loop.  Note that checkMailbox will not\n      // re-register since the `___set_thread_state` above causes _pthread_self\n      // to return 0.\n      Atomics.notify((growMemViews(), HEAP32), ((pthread_ptr) >> 2));\n    }\n  },\n  returnWorkerToPool: worker => {\n    // We don't want to run main thread queued calls here, since we are doing\n    // some operations that leave the worker queue in an invalid state until\n    // we are completely done (it would be bad if free() ends up calling a\n    // queued pthread_create which looks at the global data structures we are\n    // modifying). To achieve that, defer the free() until the very end, when\n    // we are all done.\n    var pthread_ptr = worker.pthread_ptr;\n    delete PThread.pthreads[pthread_ptr];\n    // Note: worker is intentionally not terminated so the pool can\n    // dynamically grow.\n    PThread.unusedWorkers.push(worker);\n    // Not a running Worker anymore\n    // Detach the worker from the pthread object, and return it to the\n    // worker pool as an unused worker.\n    worker.pthread_ptr = 0;\n    // Finally, free the underlying (and now-unused) pthread structure in\n    // linear memory.\n    __emscripten_thread_free_data(pthread_ptr);\n  },\n  threadInitTLS() {\n    // Call thread init functions (these are the _emscripten_tls_init for each\n    // module loaded.\n    PThread.tlsInitFunctions.forEach(f => f());\n  },\n  loadWasmModuleToWorker: worker => new Promise(onFinishedLoading => {\n    worker.onmessage = e => {\n      var d = e.data;\n      var cmd = d.cmd;\n      // If this message is intended to a recipient that is not the main\n      // thread, forward it to the target thread. This is currently only\n      // used by `CMD_CHECK_MAILBOX`.\n      if (d.targetThread) {\n        // pthreads should not be relaying messages to themselves.\n        assert(d.targetThread != _pthread_self());\n        var targetWorker = PThread.pthreads[d.targetThread];\n        if (!targetWorker) err(`worker sent message (${cmd}) to pthread (${d.targetThread}) that no longer exists`);\n        targetWorker?.postMessage(d);\n        return;\n      }\n      if (d === \"setimmediate\" || d === \"_si\") {\n        // Worker wants to postMessage() to itself to implement setImmediate()\n        // emulation.\n        worker.postMessage(d);\n        return;\n      }\n      switch (cmd) {\n       case 4:\n        checkMailbox();\n        break;\n\n       case 5:\n        spawnThread(d);\n        break;\n\n       case 6:\n        // cleanupThread needs to be run via callUserCallback since it calls\n        // back into user code to free thread data. Without this it's possible\n        // the unwind or ExitStatus exception could escape here.\n        callUserCallback(() => cleanupThread(d.thread));\n        break;\n\n       case 7:\n        markAsFinished(d.thread);\n        break;\n\n       case 3:\n        if (ENVIRONMENT_IS_NODE && !worker.strongref) {\n          // Once worker is loaded & idle, mark it as weakly referenced,\n          // so that mere existence of a Worker in the pool does not prevent\n          // Node.js from exiting the app.\n          worker.unref();\n        }\n        onFinishedLoading(worker);\n        break;\n\n       case 8:\n        // Message handler for Node.js specific out-of-order behavior:\n        // https://github.com/nodejs/node/issues/59617\n        // A pthread sent an uncaught exception event. Re-raise it on the main thread.\n        worker.onerror(d.error);\n        break;\n\n       case 9:\n        Module[d.handler](...d.args);\n        break;\n\n       default:\n        // The received message looks like something that should be handled by this message\n        // handler, (since there is a e.data.cmd field present), but is not one of the\n        // recognized commands:\n        if (cmd) err(`worker sent an unknown command ${cmd}`);\n      }\n    };\n    worker.onerror = e => {\n      var message = \"worker sent an error!\";\n      if (worker.pthread_ptr) {\n        message = `Pthread ${ptrToString(worker.pthread_ptr)} sent an error!`;\n      }\n      err(`${message} ${e.filename}:${e.lineno}: ${e.message}`);\n      throw e;\n    };\n    if (ENVIRONMENT_IS_NODE) {\n      worker.on(\"message\", data => worker.onmessage({\n        data\n      }));\n      worker.on(\"error\", e => worker.onerror(e));\n    }\n    assert(wasmMemory instanceof WebAssembly.Memory, \"wasmMemory should have been loaded by now\");\n    assert(wasmModule instanceof WebAssembly.Module, \"wasmModule should have been loaded by now\");\n    // When running on a pthread, none of the incoming parameters on the module\n    // object are present. Proxy known handlers back to the main thread if specified.\n    var handlers = [];\n    var knownHandlers = [ \"onExit\", \"onAbort\", \"print\", \"printErr\" ];\n    for (var handler of knownHandlers) {\n      if (Module.propertyIsEnumerable(handler)) {\n        handlers.push(handler);\n      }\n    }\n    // Ask the new worker to load up the Emscripten-compiled page. This is a heavy operation.\n    worker.postMessage({\n      cmd: 1,\n      handlers,\n      wasmMemory,\n      wasmModule,\n      dynamicLibraries,\n      // Share all modules that have been loaded so far.  New workers\n      // won't start running threads until these are all loaded.\n      sharedModules,\n      workerID: worker.workerID\n    });\n  }),\n  async loadWasmModuleToAllWorkers() {\n    // Instantiation is synchronous in pthreads.\n    if (ENVIRONMENT_IS_PTHREAD) {\n      return;\n    }\n    let pthreadPoolReady = Promise.all(PThread.unusedWorkers.map(PThread.loadWasmModuleToWorker));\n    return pthreadPoolReady;\n  },\n  allocateUnusedWorker() {\n    var worker;\n    // If we're using module output, use bundler-friendly pattern.\n    if (Module[\"mainScriptUrlOrBlob\"]) {\n      var pthreadMainJs = Module[\"mainScriptUrlOrBlob\"];\n      if (typeof pthreadMainJs != \"string\") {\n        pthreadMainJs = URL.createObjectURL(pthreadMainJs);\n      }\n      worker = new Worker(pthreadMainJs, {\n        \"type\": \"module\",\n        // This is the way that we signal to the node worker that it is hosting\n        // a pthread.\n        \"workerData\": \"em-pthread\",\n        // In WasmFS, close() is not proxied to the main thread. Suppress\n        // warnings when a thread closes a file descriptor it didn't open.\n        // See: https://github.com/emscripten-core/emscripten/issues/24731\n        \"trackUnmanagedFds\": false,\n        // This is the way that we signal to the Web Worker that it is hosting\n        // a pthread.\n        \"name\": \"em-pthread-\" + PThread.nextWorkerID\n      });\n    } else // We need to generate the URL with import.meta.url as the base URL of the JS file\n    // instead of just using new URL(import.meta.url) because bundlers only recognize\n    // the first case in their bundling step. The latter ends up producing an invalid\n    // URL to import from the server (e.g., for webpack the file:// path).\n    // See https://github.com/webpack/webpack/issues/12638\n    worker = new Worker(new URL(\"WebAssembly.mjs\", import.meta.url), {\n      \"type\": \"module\",\n      // This is the way that we signal to the node worker that it is hosting\n      // a pthread.\n      \"workerData\": \"em-pthread\",\n      // In WasmFS, close() is not proxied to the main thread. Suppress\n      // warnings when a thread closes a file descriptor it didn't open.\n      // See: https://github.com/emscripten-core/emscripten/issues/24731\n      \"trackUnmanagedFds\": false,\n      // This is the way that we signal to the Web Worker that it is hosting\n      // a pthread.\n      \"name\": \"em-pthread-\" + PThread.nextWorkerID\n    });\n    worker.workerID = PThread.nextWorkerID++;\n    PThread.unusedWorkers.push(worker);\n    return worker;\n  },\n  getNewWorker() {\n    if (PThread.unusedWorkers.length == 0) {\n      // PTHREAD_POOL_SIZE_STRICT should show a warning and, if set to level `2`, return from the function.\n      // However, if we're in Node.js, then we can create new workers on the fly and PTHREAD_POOL_SIZE_STRICT\n      // should be ignored altogether.\n      if (!ENVIRONMENT_IS_NODE) {\n        err(\"Tried to spawn a new thread, but the thread pool is exhausted.\\n\" + \"This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.\\n\" + \"If you want to increase the pool size, use setting `-sPTHREAD_POOL_SIZE=...`.\" + \"\\nIf you want to throw an explicit error instead of the risk of deadlocking in those cases, use setting `-sPTHREAD_POOL_SIZE_STRICT=2`.\");\n      }\n      var newWorker = PThread.allocateUnusedWorker();\n      PThread.loadWasmModuleToWorker(newWorker);\n    }\n    return PThread.unusedWorkers.pop();\n  }\n};\n\nvar onPostRuns = [];\n\nvar addOnPostRun = cb => onPostRuns.push(cb);\n\nfunction establishStackSpace(pthread_ptr) {\n  var stackHigh = (growMemViews(), HEAPU32)[(((pthread_ptr) + (48)) >> 2)];\n  var stackSize = (growMemViews(), HEAPU32)[(((pthread_ptr) + (52)) >> 2)];\n  var stackLow = stackHigh - stackSize;\n  assert(stackHigh != 0);\n  assert(stackLow != 0);\n  assert(stackHigh > stackLow, \"stackHigh must be higher then stackLow\");\n  // Set stack limits used by `emscripten/stack.h` function.  These limits are\n  // cached in wasm-side globals to make checks as fast as possible.\n  _emscripten_stack_set_limits(stackHigh, stackLow);\n  // Call inside wasm module to set up the stack frame for this pthread in wasm module scope\n  stackRestore(stackHigh);\n  // Write the stack cookie last, after we have set up the proper bounds and\n  // current position of the stack.\n  writeStackCookie();\n}\n\nvar UTF8Decoder = globalThis.TextDecoder && new TextDecoder;\n\nvar findStringEnd = (heapOrArray, idx, maxBytesToRead, ignoreNul) => {\n  var maxIdx = idx + maxBytesToRead;\n  if (ignoreNul) return maxIdx;\n  // TextDecoder needs to know the byte length in advance, it doesn't stop on\n  // null terminator by itself.\n  // As a tiny code save trick, compare idx against maxIdx using a negation,\n  // so that maxBytesToRead=undefined/NaN means Infinity.\n  while (heapOrArray[idx] && !(idx >= maxIdx)) ++idx;\n  return idx;\n};\n\nvar warnOnce = text => {\n  warnOnce.shown ||= {};\n  if (!warnOnce.shown[text]) {\n    warnOnce.shown[text] = 1;\n    if (ENVIRONMENT_IS_NODE) text = \"warning: \" + text;\n    err(text);\n  }\n};\n\n/**\n   * Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given\n   * array that contains uint8 values, returns a copy of that string as a\n   * Javascript String object.\n   * heapOrArray is either a regular array, or a JavaScript typed array view.\n   * @param {number=} idx\n   * @param {number=} maxBytesToRead\n   * @param {boolean=} ignoreNul - If true, the function will not stop on a NUL character.\n   * @return {string}\n   */ var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead, ignoreNul) => {\n  var endPtr = findStringEnd(heapOrArray, idx, maxBytesToRead, ignoreNul);\n  // When using conditional TextDecoder, skip it for short strings as the overhead of the native call is not worth it.\n  if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n    return UTF8Decoder.decode(heapOrArray.slice(idx, endPtr));\n  }\n  var str = \"\";\n  while (idx < endPtr) {\n    // For UTF8 byte structure, see:\n    // http://en.wikipedia.org/wiki/UTF-8#Description\n    // https://www.ietf.org/rfc/rfc2279.txt\n    // https://tools.ietf.org/html/rfc3629\n    var u0 = heapOrArray[idx++];\n    if (!(u0 & 128)) {\n      str += String.fromCharCode(u0);\n      continue;\n    }\n    var u1 = heapOrArray[idx++] & 63;\n    if ((u0 & 224) == 192) {\n      str += String.fromCharCode(((u0 & 31) << 6) | u1);\n      continue;\n    }\n    var u2 = heapOrArray[idx++] & 63;\n    if ((u0 & 240) == 224) {\n      u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;\n    } else {\n      if ((u0 & 248) != 240) warnOnce(`Invalid UTF-8 leading byte ${ptrToString(u0)} encountered when deserializing a UTF-8 string in wasm memory to a JS string!`);\n      u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63);\n    }\n    if (u0 < 65536) {\n      str += String.fromCharCode(u0);\n    } else {\n      var ch = u0 - 65536;\n      str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023));\n    }\n  }\n  return str;\n};\n\nvar getDylinkMetadata = binary => {\n  var offset = 0;\n  var end = 0;\n  function getU8() {\n    return binary[offset++];\n  }\n  function getLEB() {\n    var ret = 0;\n    var mul = 1;\n    while (1) {\n      var byte = binary[offset++];\n      ret += ((byte & 127) * mul);\n      mul *= 128;\n      if (!(byte & 128)) break;\n    }\n    return ret;\n  }\n  function getString() {\n    var len = getLEB();\n    offset += len;\n    return UTF8ArrayToString(binary, offset - len, len);\n  }\n  function getStringList() {\n    var count = getLEB();\n    var rtn = [];\n    while (count--) rtn.push(getString());\n    return rtn;\n  }\n  /** @param {string=} message */ function failIf(condition, message) {\n    if (condition) throw new Error(message);\n  }\n  if (binary instanceof WebAssembly.Module) {\n    var dylinkSection = WebAssembly.Module.customSections(binary, \"dylink.0\");\n    failIf(dylinkSection.length === 0, \"need dylink section\");\n    binary = new Uint8Array(dylinkSection[0]);\n    end = binary.length;\n  } else {\n    var int32View = new Uint32Array(new Uint8Array(binary.subarray(0, 24)).buffer);\n    var magicNumberFound = int32View[0] == 1836278016;\n    failIf(!magicNumberFound, \"need to see wasm magic number\");\n    // \\0asm\n    // we should see the dylink custom section right after the magic number and wasm version\n    failIf(binary[8] !== 0, \"need the dylink section to be first\");\n    offset = 9;\n    var section_size = getLEB();\n    // section size\n    end = offset + section_size;\n    var name = getString();\n    failIf(name !== \"dylink.0\");\n  }\n  var customSection = {\n    neededDynlibs: [],\n    tlsExports: new Set,\n    weakImports: new Set,\n    runtimePaths: []\n  };\n  var WASM_DYLINK_MEM_INFO = 1;\n  var WASM_DYLINK_NEEDED = 2;\n  var WASM_DYLINK_EXPORT_INFO = 3;\n  var WASM_DYLINK_IMPORT_INFO = 4;\n  var WASM_DYLINK_RUNTIME_PATH = 5;\n  var WASM_SYMBOL_TLS = 256;\n  var WASM_SYMBOL_BINDING_MASK = 3;\n  var WASM_SYMBOL_BINDING_WEAK = 1;\n  while (offset < end) {\n    var subsectionType = getU8();\n    var subsectionSize = getLEB();\n    if (subsectionType === WASM_DYLINK_MEM_INFO) {\n      customSection.memorySize = getLEB();\n      customSection.memoryAlign = getLEB();\n      customSection.tableSize = getLEB();\n      customSection.tableAlign = getLEB();\n    } else if (subsectionType === WASM_DYLINK_NEEDED) {\n      customSection.neededDynlibs = getStringList();\n    } else if (subsectionType === WASM_DYLINK_EXPORT_INFO) {\n      var count = getLEB();\n      while (count--) {\n        var symname = getString();\n        var flags = getLEB();\n        if (flags & WASM_SYMBOL_TLS) {\n          customSection.tlsExports.add(symname);\n        }\n      }\n    } else if (subsectionType === WASM_DYLINK_IMPORT_INFO) {\n      var count = getLEB();\n      while (count--) {\n        var modname = getString();\n        var symname = getString();\n        var flags = getLEB();\n        if ((flags & WASM_SYMBOL_BINDING_MASK) == WASM_SYMBOL_BINDING_WEAK) {\n          customSection.weakImports.add(symname);\n        }\n      }\n    } else if (subsectionType === WASM_DYLINK_RUNTIME_PATH) {\n      customSection.runtimePaths = getStringList();\n    } else {\n      err(\"unknown dylink.0 subsection:\", subsectionType);\n      // unknown subsection\n      offset += subsectionSize;\n    }\n  }\n  var tableAlign = Math.pow(2, customSection.tableAlign);\n  assert(tableAlign === 1, `invalid tableAlign ${tableAlign}`);\n  assert(offset == end);\n  return customSection;\n};\n\n/** @suppress{checkTypes} */ var getWasmTableEntry = funcPtr => wasmTable.get(funcPtr);\n\nvar invokeEntryPoint = (ptr, arg) => {\n  // An old thread on this worker may have been canceled without returning the\n  // `runtimeKeepaliveCounter` to zero. Reset it now so the new thread won't\n  // be affected.\n  runtimeKeepaliveCounter = 0;\n  // Same for noExitRuntime.  The default for pthreads should always be false\n  // otherwise pthreads would never complete and attempts to pthread_join to\n  // them would block forever.\n  // pthreads can still choose to set `noExitRuntime` explicitly, or\n  // call emscripten_unwind_to_js_event_loop to extend their lifetime beyond\n  // their main function.  See comment in src/runtime_pthread.js for more.\n  noExitRuntime = 0;\n  // Before we call the thread entry point, make sure any shared libraries\n  // have been loaded on this thread.  Otherwise our table might be not be\n  // in sync and might not contain the function pointer `ptr` at all.\n  __emscripten_dlsync_self();\n  // pthread entry points are always of signature 'void *ThreadMain(void *arg)'\n  // Native codebases sometimes spawn threads with other thread entry point\n  // signatures, such as void ThreadMain(void *arg), void *ThreadMain(), or\n  // void ThreadMain().  That is not acceptable per C/C++ specification, but\n  // x86 compiler ABI extensions enable that to work. If you find the\n  // following line to crash, either change the signature to \"proper\" void\n  // *ThreadMain(void *arg) form, or try linking with the Emscripten linker\n  // flag -sEMULATE_FUNCTION_POINTER_CASTS to add in emulation for this x86\n  // ABI extension.\n  var result = getWasmTableEntry(ptr)(arg);\n  checkStackCookie();\n  function finish(result) {\n    // In MINIMAL_RUNTIME the noExitRuntime concept does not apply to\n    // pthreads. To exit a pthread with live runtime, use the function\n    // emscripten_unwind_to_js_event_loop() in the pthread body.\n    if (keepRuntimeAlive()) {\n      EXITSTATUS = result;\n      return;\n    }\n    __emscripten_thread_exit(result);\n  }\n  finish(result);\n};\n\nvar newDSO = (name, handle, syms) => {\n  var dso = {\n    refcount: Infinity,\n    name,\n    exports: syms,\n    global: true\n  };\n  LDSO.loadedLibsByName[name] = dso;\n  if (handle != undefined) {\n    LDSO.loadedLibsByHandle[handle] = dso;\n  }\n  return dso;\n};\n\nvar LDSO = {\n  loadedLibsByName: {},\n  loadedLibsByHandle: {},\n  init() {\n    // This function needs to run after the initial wasmImports object\n    // as been created.\n    assert(wasmImports);\n    newDSO(\"__main__\", 0, wasmImports);\n  }\n};\n\nvar alignMemory = (size, alignment) => {\n  assert(alignment, \"alignment argument is required\");\n  return Math.ceil(size / alignment) * alignment;\n};\n\nvar getMemory = size => {\n  // After the runtime is initialized, we must only use sbrk() normally.\n  if (runtimeInitialized) {\n    // Currently we don't support freeing of static data when modules are\n    // unloaded via dlclose.  This function is tagged as `noleakcheck` to\n    // avoid having this reported as leak.\n    return _calloc(size, 1);\n  }\n  var ret = ___heap_base;\n  // Keep __heap_base stack aligned.\n  var end = ret + alignMemory(size, 16);\n  //dbg(ret);\n  //dbg(HEAP8.length);\n  assert(end <= (growMemViews(), HEAP8).length, \"failure to getMemory - memory growth etc. is not supported there, call malloc/sbrk directly or increase INITIAL_MEMORY\");\n  ___heap_base = end;\n  // After allocating the memory from the start of the heap we need to ensure\n  // that once the program starts it doesn't use this region.  In relocatable\n  // mode we can just update the __heap_base symbol that we are exporting to\n  // the main module.\n  if (!ENVIRONMENT_IS_PTHREAD) {\n    var sbrk_ptr = _emscripten_get_sbrk_ptr();\n    (growMemViews(), HEAPU32)[((sbrk_ptr) >> 2)] = end;\n  }\n  return ret;\n};\n\nvar isInternalSym = symName => [ \"memory\", \"__memory_base\", \"__table_base\", \"__stack_pointer\", \"__indirect_function_table\", \"__cpp_exception\", \"__c_longjmp\", \"__wasm_apply_data_relocs\", \"__dso_handle\", \"__tls_size\", \"__tls_align\", \"__set_stack_limits\", \"_emscripten_tls_init\", \"__wasm_init_tls\", \"__wasm_call_ctors\", \"__start_em_asm\", \"__stop_em_asm\", \"__start_em_js\", \"__stop_em_js\" ].includes(symName) || symName.startsWith(\"__em_js__\");\n\nvar updateTableMap = (offset, count) => {\n  if (functionsInTableMap) {\n    for (var i = offset; i < offset + count; i++) {\n      var item = getWasmTableEntry(i);\n      // Ignore null values.\n      if (item) {\n        functionsInTableMap.set(item, i);\n      }\n    }\n  }\n};\n\nvar functionsInTableMap;\n\nvar getFunctionAddress = func => {\n  // First, create the map if this is the first use.\n  if (!functionsInTableMap) {\n    functionsInTableMap = new WeakMap;\n    updateTableMap(0, wasmTable.length);\n  }\n  return functionsInTableMap.get(func) || 0;\n};\n\nvar freeTableIndexes = [];\n\nvar getEmptyTableSlot = () => {\n  // Reuse a free index if there is one, otherwise grow.\n  if (freeTableIndexes.length) {\n    return freeTableIndexes.pop();\n  }\n  try {\n    // Grow the table\n    return wasmTable[\"grow\"](1);\n  } catch (err) {\n    if (!(err instanceof RangeError)) {\n      throw err;\n    }\n    abort(\"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\");\n  }\n};\n\n/** @suppress{checkTypes} */ var setWasmTableEntry = (idx, func) => wasmTable.set(idx, func);\n\nvar uleb128EncodeWithLen = arr => {\n  const n = arr.length;\n  assert(n < 16384);\n  // Note: this LEB128 length encoding produces extra byte for n < 128,\n  // but we don't care as it's only used in a temporary representation.\n  return [ (n % 128) | 128, n >> 7, ...arr ];\n};\n\nvar wasmTypeCodes = {\n  \"i\": 127,\n  // i32\n  \"p\": 127,\n  // i32\n  \"j\": 126,\n  // i64\n  \"f\": 125,\n  // f32\n  \"d\": 124,\n  // f64\n  \"e\": 111\n};\n\nvar generateTypePack = types => uleb128EncodeWithLen(Array.from(types, type => {\n  var code = wasmTypeCodes[type];\n  assert(code, `invalid signature char: ${type}`);\n  return code;\n}));\n\nvar convertJsFunctionToWasm = (func, sig) => {\n  // TODO: If the type reflection proposal ever makes progress we can use\n  // it here instead of creatign a new module.\n  var bytes = Uint8Array.of(0, 97, 115, 109, // magic (\"\\0asm\")\n  1, 0, 0, 0, // version: 1\n  1, // Type section code\n  // The module is static, with the exception of the type section, which is\n  // generated based on the signature passed in.\n  ...uleb128EncodeWithLen([ 1, // count: 1\n  96, // param types\n  ...generateTypePack(sig.slice(1)), // return types (for now only supporting [] if `void` and single [T] otherwise)\n  ...generateTypePack(sig[0] === \"v\" ? \"\" : sig[0]) ]), // The rest of the module is static\n  2, 7, // import section\n  // (import \"e\" \"f\" (func 0 (type 0)))\n  1, 1, 101, 1, 102, 0, 0, 7, 5, // export section\n  // (export \"f\" (func 0 (type 0)))\n  1, 1, 102, 0, 0);\n  // We can compile this wasm module synchronously because it is very small.\n  // This accepts an import (at \"e.f\"), that it reroutes to an export (at \"f\")\n  var module = new WebAssembly.Module(bytes);\n  var instance = new WebAssembly.Instance(module, {\n    \"e\": {\n      \"f\": func\n    }\n  });\n  var wrappedFunc = instance.exports[\"f\"];\n  return wrappedFunc;\n};\n\n/** @param {string=} sig */ var addFunction = (func, sig) => {\n  assert(typeof func != \"undefined\");\n  // Check if the function is already in the table, to ensure each function\n  // gets a unique index.\n  var rtn = getFunctionAddress(func);\n  if (rtn) {\n    return rtn;\n  }\n  // It's not in the table, add it now.\n  var ret = getEmptyTableSlot();\n  // Set the new value.\n  try {\n    // Attempting to call this with JS function will cause table.set() to fail\n    setWasmTableEntry(ret, func);\n  } catch (err) {\n    if (!(err instanceof TypeError)) {\n      throw err;\n    }\n    assert(typeof sig != \"undefined\", \"Missing signature argument to addFunction: \" + func);\n    var wrapped = convertJsFunctionToWasm(func, sig);\n    setWasmTableEntry(ret, wrapped);\n  }\n  functionsInTableMap.set(func, ret);\n  return ret;\n};\n\n/** @param {boolean=} replace */ var updateGOT = (exports, replace) => {\n  for (var symName in exports) {\n    if (isInternalSym(symName)) {\n      continue;\n    }\n    var value = exports[symName];\n    var existingEntry = GOT[symName] && GOT[symName].value != -1;\n    if (replace || !existingEntry) {\n      var newValue;\n      if (typeof value == \"function\") {\n        newValue = addFunction(value);\n      } else if (typeof value.value == \"number\") {\n        newValue = value;\n      } else {\n        // The GOT can only contain addresses (i.e data addresses or function\n        // addresses so we currently ignore other types export here.\n        continue;\n      }\n      GOT[symName] ??= new WebAssembly.Global({\n        \"value\": \"i32\",\n        \"mutable\": true\n      });\n      GOT[symName].value = newValue;\n    }\n  }\n};\n\nvar isImmutableGlobal = val => {\n  if (val instanceof WebAssembly.Global) {\n    try {\n      val.value = val.value;\n    } catch {\n      return true;\n    }\n  }\n  return false;\n};\n\nvar relocateExports = (exports, memoryBase = 0) => {\n  function relocateExport(name, value) {\n    // Detect immutable wasm global exports. These represent data addresses\n    // which are relative to `memoryBase`\n    if (isImmutableGlobal(value)) {\n      return new WebAssembly.Global({\n        \"value\": \"i32\"\n      }, value.value + memoryBase);\n    }\n    // Return unmodified value (no relocation required).\n    return value;\n  }\n  var relocated = {};\n  for (var e in exports) {\n    relocated[e] = relocateExport(e, exports[e]);\n  }\n  return relocated;\n};\n\nvar isSymbolDefined = symName => {\n  // Ignore 'stub' symbols that are auto-generated as part of the original\n  // `wasmImports` used to instantiate the main module.\n  var existing = wasmImports[symName];\n  if (!existing || existing.stub) {\n    return false;\n  }\n  return true;\n};\n\nvar createNamedFunction = (name, func) => Object.defineProperty(func, \"name\", {\n  value: name\n});\n\nvar dynCall = (sig, ptr, args = [], promising = false) => {\n  assert(ptr, `null function pointer in dynCall`);\n  assert(!promising, \"async dynCall is not supported in this mode\");\n  assert(getWasmTableEntry(ptr), `missing table entry in dynCall: ${ptr}`);\n  var func = getWasmTableEntry(ptr);\n  var rtn = func(...args);\n  function convert(rtn) {\n    return rtn;\n  }\n  return convert(rtn);\n};\n\nvar createInvokeFunction = sig => (ptr, ...args) => {\n  var sp = stackSave();\n  try {\n    return dynCall(sig, ptr, args);\n  } catch (e) {\n    stackRestore(sp);\n    // Create a try-catch guard that rethrows the Emscripten EH exception.\n    // Exceptions thrown from C++ and longjmps will be an instance of\n    // EmscriptenEH.\n    if (!(e instanceof EmscriptenEH)) throw e;\n    _setThrew(1, 0);\n    // In theory this if statement could be done on\n    // creating the function, but I just added this to\n    // save wasting code space as it only happens on exception.\n    if (sig[0] == \"j\") return 0n;\n  }\n};\n\nvar resolveGlobalSymbol = (symName, direct = false) => {\n  var sym;\n  if (isSymbolDefined(symName)) {\n    sym = wasmImports[symName];\n  } else if (symName.startsWith(\"invoke_\")) {\n    // Create (and cache) new invoke_ functions on demand.\n    sym = wasmImports[symName] = createNamedFunction(symName, createInvokeFunction(symName.split(\"_\")[1]));\n  }\n  return {\n    sym,\n    name: symName\n  };\n};\n\nvar onPostCtors = [];\n\nvar addOnPostCtor = cb => onPostCtors.push(cb);\n\n/**\n   * Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the\n   * emscripten HEAP, returns a copy of that string as a Javascript String object.\n   *\n   * @param {number} ptr\n   * @param {number=} maxBytesToRead - An optional length that specifies the\n   *   maximum number of bytes to read. You can omit this parameter to scan the\n   *   string until the first 0 byte. If maxBytesToRead is passed, and the string\n   *   at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the\n   *   string will cut short at that byte index.\n   * @param {boolean=} ignoreNul - If true, the function will not stop on a NUL character.\n   * @return {string}\n   */ var UTF8ToString = (ptr, maxBytesToRead, ignoreNul) => {\n  assert(typeof ptr == \"number\", `UTF8ToString expects a number (got ${typeof ptr})`);\n  return ptr ? UTF8ArrayToString((growMemViews(), HEAPU8), ptr, maxBytesToRead, ignoreNul) : \"\";\n};\n\n/**\n    * @param {string=} libName\n    * @param {Object=} localScope\n    * @param {number=} handle\n    */ var loadWebAssemblyModule = (binary, flags, libName, localScope, handle) => {\n  var metadata = getDylinkMetadata(binary);\n  // loadModule loads the wasm module after all its dependencies have been loaded.\n  // can be called both sync/async.\n  function loadModule() {\n    var originalTable = wasmTable;\n    // The first thread to load a given module needs to allocate the static\n    // table and memory regions.  Later threads re-use the same table region\n    // and can ignore the memory region (since memory is shared between\n    // threads already).\n    // If `handle` is specified then it is assumed that the calling thread has\n    // exclusive access to it for the duration of this function.  See the\n    // locking in `dynlink.c`.\n    var firstLoad = !handle || !(growMemViews(), HEAP8)[(handle) + (8)];\n    if (firstLoad) {\n      // alignments are powers of 2\n      var memAlign = Math.pow(2, metadata.memoryAlign);\n      // prepare memory\n      var memoryBase = metadata.memorySize ? alignMemory(getMemory(metadata.memorySize + memAlign), memAlign) : 0;\n      // TODO: add to cleanups\n      var tableBase = metadata.tableSize ? wasmTable.length : 0;\n      if (handle) {\n        (growMemViews(), HEAP8)[(handle) + (8)] = 1;\n        (growMemViews(), HEAPU32)[(((handle) + (12)) >> 2)] = memoryBase;\n        (growMemViews(), HEAP32)[(((handle) + (16)) >> 2)] = metadata.memorySize;\n        (growMemViews(), HEAPU32)[(((handle) + (20)) >> 2)] = tableBase;\n        (growMemViews(), HEAP32)[(((handle) + (24)) >> 2)] = metadata.tableSize;\n      }\n    } else {\n      // Read the values for tableBase and memoryBase from shared memory. The\n      // thread that first loaded the DLL already set these values.\n      memoryBase = (growMemViews(), HEAPU32)[(((handle) + (12)) >> 2)];\n      tableBase = (growMemViews(), HEAPU32)[(((handle) + (20)) >> 2)];\n    }\n    if (metadata.tableSize) {\n      assert(wasmTable.length == tableBase, `unexpected table size while loading ${libName}: ${wasmTable.length}`);\n      wasmTable.grow(metadata.tableSize);\n    }\n    // This is the export map that we ultimately return.  We declare it here\n    // so it can be used within resolveSymbol.  We resolve symbols against\n    // this local symbol map in the case where they are not present on the\n    // global Module object.  We need this fallback because Modules sometime\n    // need to import their own symbols\n    var moduleExports;\n    function resolveSymbol(sym) {\n      var resolved = resolveGlobalSymbol(sym).sym;\n      if (!resolved && localScope) {\n        resolved = localScope[sym];\n      }\n      if (!resolved) {\n        resolved = moduleExports[sym];\n      }\n      assert(resolved, `undefined symbol '${sym}'. perhaps a side module was not linked in? if this global was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment`);\n      return resolved;\n    }\n    // TODO kill \u2193\u2193\u2193 (except \"symbols local to this module\", it will likely be\n    // not needed if we require that if A wants symbols from B it has to link\n    // to B explicitly: similarly to -Wl,--no-undefined)\n    // wasm dynamic libraries are pure wasm, so they cannot assist in\n    // their own loading. When side module A wants to import something\n    // provided by a side module B that is loaded later, we need to\n    // add a layer of indirection, but worse, we can't even tell what\n    // to add the indirection for, without inspecting what A's imports\n    // are. To do that here, we use a JS proxy (another option would\n    // be to inspect the binary directly).\n    var proxyHandler = {\n      get(stubs, prop) {\n        // symbols that should be local to this module\n        switch (prop) {\n         case \"__memory_base\":\n          return memoryBase;\n\n         case \"__table_base\":\n          return tableBase;\n        }\n        if (prop in wasmImports && !wasmImports[prop].stub) {\n          // No stub needed, symbol already exists in symbol table\n          var res = wasmImports[prop];\n          return res;\n        }\n        // Return a stub function that will resolve the symbol\n        // when first called.\n        if (!(prop in stubs)) {\n          var resolved;\n          stubs[prop] = (...args) => {\n            resolved ||= resolveSymbol(prop);\n            return resolved(...args);\n          };\n        }\n        return stubs[prop];\n      }\n    };\n    var proxy = new Proxy({}, proxyHandler);\n    var GOTProxy = new Proxy(metadata.weakImports, GOTHandler);\n    var info = {\n      \"GOT.mem\": GOTProxy,\n      \"GOT.func\": GOTProxy,\n      \"env\": proxy,\n      \"wasi_snapshot_preview1\": proxy\n    };\n    function postInstantiation(module, instance) {\n      // the table should be unchanged\n      assert(wasmTable === originalTable);\n      if (!ENVIRONMENT_IS_PTHREAD && libName) {\n        // cache all loaded modules in `sharedModules`, which gets passed\n        // to new workers when they are created.\n        sharedModules[libName] = module;\n      }\n      // add new entries to functionsInTableMap\n      updateTableMap(tableBase, metadata.tableSize);\n      moduleExports = relocateExports(instance.exports, memoryBase);\n      updateGOT(moduleExports);\n      if (!flags.allowUndefined) {\n        reportUndefinedSymbols();\n      }\n      function addEmAsm(addr, body) {\n        var args = [];\n        for (var arity = 0; ;arity++) {\n          var argName = \"$\" + arity;\n          if (!body.includes(argName)) break;\n          args.push(argName);\n        }\n        args = args.join(\",\");\n        var func = `(${args}) => { ${body} };`;\n        abort(\"DYNAMIC_EXECUTION=0 was set, cannot eval\");\n      }\n      // Add any EM_ASM functions that exist in the side module\n      if (\"__start_em_asm\" in moduleExports) {\n        var start = moduleExports[\"__start_em_asm\"].value;\n        var stop = moduleExports[\"__stop_em_asm\"].value;\n        while (start < stop) {\n          var jsString = UTF8ToString(start);\n          addEmAsm(start, jsString);\n          start = (growMemViews(), HEAPU8).indexOf(0, start) + 1;\n        }\n      }\n      function addEmJs(name, cSig, body) {\n        // The signature here is a C signature (e.g. \"(int foo, char* bar)\").\n        // See `create_em_js` in emcc.py` for the build-time version of this\n        // code.\n        var jsArgs = [];\n        cSig = cSig.slice(1, -1);\n        if (cSig != \"void\") {\n          cSig = cSig.split(\",\");\n          for (var arg of cSig) {\n            var jsArg = arg.split(\" \").pop();\n            jsArgs.push(jsArg.replaceAll(\"*\", \"\"));\n          }\n        }\n        var func = `(${jsArgs}) => ${body};`;\n        abort(\"DYNAMIC_EXECUTION=0 was set, cannot eval\");\n      }\n      for (var name in moduleExports) {\n        if (name.startsWith(\"__em_js__\")) {\n          var start = moduleExports[name].value;\n          var jsString = UTF8ToString(start);\n          // EM_JS strings are stored in the data section in the form\n          // SIG<::>BODY.\n          var [sig, body] = jsString.split(\"<::>\");\n          addEmJs(name.replace(\"__em_js__\", \"\"), sig, body);\n          delete moduleExports[name];\n        }\n      }\n      // initialize the module\n      // Only one thread should call __wasm_call_ctors, but all threads need\n      // to call _emscripten_tls_init\n      registerTLSInit(moduleExports[\"_emscripten_tls_init\"], instance.exports, metadata);\n      if (firstLoad) {\n        var applyRelocs = moduleExports[\"__wasm_apply_data_relocs\"];\n        if (applyRelocs) {\n          if (runtimeInitialized) {\n            applyRelocs();\n          } else {\n            __RELOC_FUNCS__.push(applyRelocs);\n          }\n        }\n        var init = moduleExports[\"__wasm_call_ctors\"];\n        if (init) {\n          if (runtimeInitialized) {\n            init();\n          } else {\n            // we aren't ready to run compiled code yet\n            addOnPostCtor(init);\n          }\n        }\n      }\n      return moduleExports;\n    }\n    if (flags.loadAsync) {\n      return (async () => {\n        var instance;\n        if (binary instanceof WebAssembly.Module) {\n          instance = new WebAssembly.Instance(binary, info);\n        } else {\n          // Destructuring assignment without declaration has to be wrapped\n          // with parens or parser will treat the l-value as an object\n          // literal instead.\n          ((({module: binary, instance} = await WebAssembly.instantiate(binary, info))));\n        }\n        return postInstantiation(binary, instance);\n      })();\n    }\n    var module = binary instanceof WebAssembly.Module ? binary : new WebAssembly.Module(binary);\n    var instance = new WebAssembly.Instance(module, info);\n    return postInstantiation(module, instance);\n  }\n  // We need to set rpath in flags based on the current library's rpath.\n  // We can't mutate flags or else if a depends on b and c and b depends on d,\n  // then c will be loaded with b's rpath instead of a's.\n  flags = {\n    ...flags,\n    rpath: {\n      parentLibPath: libName,\n      paths: metadata.runtimePaths\n    }\n  };\n  // now load needed libraries and the module itself.\n  if (flags.loadAsync) {\n    return metadata.neededDynlibs.reduce((chain, needed) => chain.then(() => {\n      needed = findLibraryFS(needed, flags.rpath) ?? needed;\n      return loadDynamicLibrary(needed, flags, localScope);\n    }), Promise.resolve()).then(loadModule);\n  }\n  for (var needed of metadata.neededDynlibs) {\n    needed = findLibraryFS(needed, flags.rpath) ?? needed;\n    loadDynamicLibrary(needed, flags, localScope);\n  }\n  return loadModule();\n};\n\nvar mergeLibSymbols = (exports, libName) => {\n  // add symbols into global namespace TODO: weak linking etc.\n  for (var [sym, exp] of Object.entries(exports)) {\n    // When RTLD_GLOBAL is enabled, the symbols defined by this shared object\n    // will be made available for symbol resolution of subsequently loaded\n    // shared objects.\n    // We should copy the symbols (which include methods and variables) from\n    // SIDE_MODULE to MAIN_MODULE.\n    const setImport = target => {\n      if (!isSymbolDefined(target)) {\n        wasmImports[target] = exp;\n      }\n    };\n    setImport(sym);\n    // Special case for handling of main symbol:  If a side module exports\n    // `main` that also acts a definition for `__main_argc_argv` and vice\n    // versa.\n    const main_alias = \"__main_argc_argv\";\n    if (sym == \"main\") {\n      setImport(main_alias);\n    }\n    if (sym == main_alias) {\n      setImport(\"main\");\n    }\n  }\n};\n\nvar asyncLoad = async url => {\n  var arrayBuffer = await readAsync(url);\n  assert(arrayBuffer, `Loading data file \"${url}\" failed (no arrayBuffer).`);\n  return new Uint8Array(arrayBuffer);\n};\n\nvar preloadPlugins = [];\n\nvar registerWasmPlugin = () => {\n  // Use string keys here for public methods to avoid minification since the\n  // plugin consumer also uses string keys.\n  var wasmPlugin = {\n    promiseChainEnd: Promise.resolve(),\n    \"canHandle\": name => !Module[\"noWasmDecoding\"] && name.endsWith(\".so\"),\n    \"handle\": async (byteArray, name) => // loadWebAssemblyModule can not load modules out-of-order, so rather\n    // than just running the promises in parallel, this makes a chain of\n    // promises to run in series.\n    wasmPlugin.promiseChainEnd = wasmPlugin.promiseChainEnd.then(async () => {\n      try {\n        var exports = await loadWebAssemblyModule(byteArray, {\n          loadAsync: true,\n          nodelete: true\n        }, name, {});\n      } catch (error) {\n        throw new Error(`failed to instantiate wasm: ${name}: ${error}`);\n      }\n      preloadedWasm[name] = exports;\n      return byteArray;\n    })\n  };\n  preloadPlugins.push(wasmPlugin);\n};\n\nvar preloadedWasm = {};\n\nvar PATH = {\n  isAbs: path => path.charAt(0) === \"/\",\n  splitPath: filename => {\n    var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n    return splitPathRe.exec(filename).slice(1);\n  },\n  normalizeArray: (parts, allowAboveRoot) => {\n    // if the path tries to go above the root, `up` ends up > 0\n    var up = 0;\n    for (var i = parts.length - 1; i >= 0; i--) {\n      var last = parts[i];\n      if (last === \".\") {\n        parts.splice(i, 1);\n      } else if (last === \"..\") {\n        parts.splice(i, 1);\n        up++;\n      } else if (up) {\n        parts.splice(i, 1);\n        up--;\n      }\n    }\n    // if the path is allowed to go above the root, restore leading ..s\n    if (allowAboveRoot) {\n      for (;up; up--) {\n        parts.unshift(\"..\");\n      }\n    }\n    return parts;\n  },\n  normalize: path => {\n    var isAbsolute = PATH.isAbs(path), trailingSlash = path.slice(-1) === \"/\";\n    // Normalize the path\n    path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n    if (!path && !isAbsolute) {\n      path = \".\";\n    }\n    if (path && trailingSlash) {\n      path += \"/\";\n    }\n    return (isAbsolute ? \"/\" : \"\") + path;\n  },\n  dirname: path => {\n    var result = PATH.splitPath(path), root = result[0], dir = result[1];\n    if (!root && !dir) {\n      // No dirname whatsoever\n      return \".\";\n    }\n    if (dir) {\n      // It has a dirname, strip trailing slash\n      dir = dir.slice(0, -1);\n    }\n    return root + dir;\n  },\n  basename: path => path && path.match(/([^\\/]+|\\/)\\/*$/)[1],\n  join: (...paths) => PATH.normalize(paths.join(\"/\")),\n  join2: (l, r) => PATH.normalize(l + \"/\" + r)\n};\n\nvar replaceORIGIN = (parentLibName, rpath) => {\n  if (rpath.startsWith(\"$ORIGIN\")) {\n    // TODO: what to do if we only know the relative path of the file? It will return \".\" here.\n    var origin = PATH.dirname(parentLibName);\n    return rpath.replace(\"$ORIGIN\", origin);\n  }\n  return rpath;\n};\n\nvar withStackSave = f => {\n  var stack = stackSave();\n  var ret = f();\n  stackRestore(stack);\n  return ret;\n};\n\nvar lengthBytesUTF8 = str => {\n  var len = 0;\n  for (var i = 0; i < str.length; ++i) {\n    // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code\n    // unit, not a Unicode code point of the character! So decode\n    // UTF16->UTF32->UTF8.\n    // See http://unicode.org/faq/utf_bom.html#utf16-3\n    var c = str.charCodeAt(i);\n    // possibly a lead surrogate\n    if (c <= 127) {\n      len++;\n    } else if (c <= 2047) {\n      len += 2;\n    } else if (c >= 55296 && c <= 57343) {\n      len += 4;\n      ++i;\n    } else {\n      len += 3;\n    }\n  }\n  return len;\n};\n\nvar stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n  assert(typeof str === \"string\", `stringToUTF8Array expects a string (got ${typeof str})`);\n  // Parameter maxBytesToWrite is not optional. Negative values, 0, null,\n  // undefined and false each don't write out any bytes.\n  if (!(maxBytesToWrite > 0)) return 0;\n  var startIdx = outIdx;\n  var endIdx = outIdx + maxBytesToWrite - 1;\n  // -1 for string null terminator.\n  for (var i = 0; i < str.length; ++i) {\n    // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description\n    // and https://www.ietf.org/rfc/rfc2279.txt\n    // and https://tools.ietf.org/html/rfc3629\n    var u = str.codePointAt(i);\n    if (u <= 127) {\n      if (outIdx >= endIdx) break;\n      heap[outIdx++] = u;\n    } else if (u <= 2047) {\n      if (outIdx + 1 >= endIdx) break;\n      heap[outIdx++] = 192 | (u >> 6);\n      heap[outIdx++] = 128 | (u & 63);\n    } else if (u <= 65535) {\n      if (outIdx + 2 >= endIdx) break;\n      heap[outIdx++] = 224 | (u >> 12);\n      heap[outIdx++] = 128 | ((u >> 6) & 63);\n      heap[outIdx++] = 128 | (u & 63);\n    } else {\n      if (outIdx + 3 >= endIdx) break;\n      if (u > 1114111) warnOnce(`Invalid Unicode code point ${ptrToString(u)} encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).`);\n      heap[outIdx++] = 240 | (u >> 18);\n      heap[outIdx++] = 128 | ((u >> 12) & 63);\n      heap[outIdx++] = 128 | ((u >> 6) & 63);\n      heap[outIdx++] = 128 | (u & 63);\n      // Gotcha: if codePoint is over 0xFFFF, it is represented as a surrogate pair in UTF-16.\n      // We need to manually skip over the second code unit for correct iteration.\n      i++;\n    }\n  }\n  // Null-terminate the pointer to the buffer.\n  heap[outIdx] = 0;\n  return outIdx - startIdx;\n};\n\nvar stringToUTF8 = (str, outPtr, maxBytesToWrite) => {\n  assert(typeof maxBytesToWrite == \"number\", \"stringToUTF8 requires a third parameter that specifies the length of the output buffer\");\n  return stringToUTF8Array(str, (growMemViews(), HEAPU8), outPtr, maxBytesToWrite);\n};\n\nvar stringToUTF8OnStack = str => {\n  var size = lengthBytesUTF8(str) + 1;\n  var ret = stackAlloc(size);\n  stringToUTF8(str, ret, size);\n  return ret;\n};\n\nvar wasmFSPreloadedFiles = [];\n\nvar wasmFSPreloadedDirs = [];\n\nvar wasmFSPreloadingFlushed = false;\n\nvar readI53FromI64 = ptr => (growMemViews(), HEAPU32)[((ptr) >> 2)] + (growMemViews(), \nHEAP32)[(((ptr) + (4)) >> 2)] * 4294967296;\n\nvar readI53FromU64 = ptr => (growMemViews(), HEAPU32)[((ptr) >> 2)] + (growMemViews(), \nHEAPU32)[(((ptr) + (4)) >> 2)] * 4294967296;\n\nvar FS_mknod = (path, mode, dev) => FS.handleError(withStackSave(() => {\n  var pathBuffer = stringToUTF8OnStack(path);\n  return __wasmfs_mknod(pathBuffer, mode, dev);\n}));\n\nvar FS_create = (path, mode = 438) => {\n  mode &= 4095;\n  mode |= 32768;\n  return FS_mknod(path, mode, 0);\n};\n\nvar FS_fileDataToTypedArray = data => {\n  if (typeof data == \"string\") {\n    data = intArrayFromString(data, true);\n  }\n  if (!data.subarray) {\n    data = new Uint8Array(data);\n  }\n  return data;\n};\n\nvar FS_writeFile = (path, data) => {\n  var sp = stackSave();\n  var pathBuffer = stringToUTF8OnStack(path);\n  data = FS_fileDataToTypedArray(data);\n  var len = data.length;\n  var dataBuffer = _malloc(len);\n  assert(dataBuffer);\n  (growMemViews(), HEAPU8).set(data, dataBuffer);\n  var ret = __wasmfs_write_file(pathBuffer, dataBuffer, len);\n  _free(dataBuffer);\n  stackRestore(sp);\n  return ret;\n};\n\nvar FS_createDataFile = (parent, name, fileData, canRead, canWrite, canOwn) => {\n  var pathName = name ? parent + \"/\" + name : parent;\n  var mode = FS_getMode(canRead, canWrite);\n  if (!wasmFSPreloadingFlushed) {\n    // WasmFS code in the wasm is not ready to be called yet. Cache the\n    // files we want to create here in JS, and WasmFS will read them\n    // later.\n    wasmFSPreloadedFiles.push({\n      pathName,\n      fileData,\n      mode\n    });\n  } else {\n    // WasmFS is already running, so create the file normally.\n    FS_create(pathName, mode);\n    FS_writeFile(pathName, fileData);\n  }\n};\n\nvar PATH_FS = {\n  resolve: (...args) => {\n    var resolvedPath = \"\", resolvedAbsolute = false;\n    for (var i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n      var path = (i >= 0) ? args[i] : FS.cwd();\n      // Skip empty and invalid entries\n      if (typeof path != \"string\") {\n        throw new TypeError(\"Arguments to path.resolve must be strings\");\n      } else if (!path) {\n        return \"\";\n      }\n      resolvedPath = path + \"/\" + resolvedPath;\n      resolvedAbsolute = PATH.isAbs(path);\n    }\n    // At this point the path should be resolved to a full absolute path, but\n    // handle relative paths to be safe (might happen when process.cwd() fails)\n    resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n    return ((resolvedAbsolute ? \"/\" : \"\") + resolvedPath) || \".\";\n  },\n  relative: (from, to) => {\n    from = PATH_FS.resolve(from).slice(1);\n    to = PATH_FS.resolve(to).slice(1);\n    function trim(arr) {\n      var start = 0;\n      for (;start < arr.length; start++) {\n        if (arr[start] !== \"\") break;\n      }\n      var end = arr.length - 1;\n      for (;end >= 0; end--) {\n        if (arr[end] !== \"\") break;\n      }\n      if (start > end) return [];\n      return arr.slice(start, end - start + 1);\n    }\n    var fromParts = trim(from.split(\"/\"));\n    var toParts = trim(to.split(\"/\"));\n    var length = Math.min(fromParts.length, toParts.length);\n    var samePartsLength = length;\n    for (var i = 0; i < length; i++) {\n      if (fromParts[i] !== toParts[i]) {\n        samePartsLength = i;\n        break;\n      }\n    }\n    var outputParts = [];\n    for (var i = samePartsLength; i < fromParts.length; i++) {\n      outputParts.push(\"..\");\n    }\n    outputParts = outputParts.concat(toParts.slice(samePartsLength));\n    return outputParts.join(\"/\");\n  }\n};\n\nvar getUniqueRunDependency = id => {\n  var orig = id;\n  while (1) {\n    if (!runDependencyTracking[id]) return id;\n    id = orig + Math.random();\n  }\n};\n\nvar FS_handledByPreloadPlugin = async (byteArray, fullname) => {\n  // Ensure plugins are ready.\n  if (typeof Browser != \"undefined\") Browser.init();\n  for (var plugin of preloadPlugins) {\n    if (plugin[\"canHandle\"](fullname)) {\n      assert(plugin[\"handle\"].constructor.name === \"AsyncFunction\", \"Filesystem plugin handlers must be async functions (See #24914)\");\n      return plugin[\"handle\"](byteArray, fullname);\n    }\n  }\n  // If no plugin handled this file then return the original/unmodified\n  // byteArray.\n  return byteArray;\n};\n\nvar FS_preloadFile = async (parent, name, url, canRead, canWrite, dontCreateFile, canOwn, preFinish) => {\n  // TODO we should allow people to just pass in a complete filename instead\n  // of parent and name being that we just join them anyways\n  var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n  var dep = getUniqueRunDependency(`cp ${fullname}`);\n  // might have several active requests for the same fullname\n  addRunDependency(dep);\n  try {\n    var byteArray = url;\n    if (typeof url == \"string\") {\n      byteArray = await asyncLoad(url);\n    }\n    byteArray = await FS_handledByPreloadPlugin(byteArray, fullname);\n    preFinish?.();\n    if (!dontCreateFile) {\n      FS_createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n    }\n  } finally {\n    removeRunDependency(dep);\n  }\n};\n\nvar FS_createPreloadedFile = (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n  FS_preloadFile(parent, name, url, canRead, canWrite, dontCreateFile, canOwn, preFinish).then(onload).catch(onerror);\n};\n\nvar FS_getMode = (canRead, canWrite) => {\n  var mode = 0;\n  if (canRead) mode |= 292 | 73;\n  if (canWrite) mode |= 146;\n  return mode;\n};\n\nvar FS_modeStringToFlags = str => {\n  if (typeof str != \"string\") return str;\n  var flagModes = {\n    \"r\": 0,\n    \"r+\": 2,\n    \"w\": 512 | 64 | 1,\n    \"w+\": 512 | 64 | 2,\n    \"a\": 1024 | 64 | 1,\n    \"a+\": 1024 | 64 | 2\n  };\n  var flags = flagModes[str];\n  if (typeof flags == \"undefined\") {\n    throw new Error(`Unknown file open mode: ${str}`);\n  }\n  return flags;\n};\n\nvar FS_mkdir = (path, mode = 511) => FS.handleError(withStackSave(() => {\n  var buffer = stringToUTF8OnStack(path);\n  return __wasmfs_mkdir(buffer, mode);\n}));\n\n/**\n   * @param {number=} mode Optionally, the mode to create in. Uses mkdir's\n   *                       default if not set.\n   */ var FS_mkdirTree = (path, mode) => {\n  var dirs = path.split(\"/\");\n  var d = \"\";\n  for (var dir of dirs) {\n    if (!dir) continue;\n    if (d || PATH.isAbs(path)) d += \"/\";\n    d += dir;\n    try {\n      FS_mkdir(d, mode);\n    } catch (e) {\n      if (e.errno != 20) throw e;\n    }\n  }\n};\n\nvar FS_unlink = path => withStackSave(() => {\n  var buffer = stringToUTF8OnStack(path);\n  return __wasmfs_unlink(buffer);\n});\n\nvar wasmFS$backends = {};\n\nvar wasmFSDevices = {};\n\nvar wasmFSDeviceStreams = {};\n\nvar FS = {\n  ErrnoError: class extends Error {\n    name=\"ErrnoError\";\n    message=\"FS error\";\n    constructor(code) {\n      super();\n      this.errno = code;\n    }\n  },\n  handleError(returnValue) {\n    // Assume errors correspond to negative returnValues\n    // since some functions like _wasmfs_open() return positive\n    // numbers on success (some callers of this function may need to negate the parameter).\n    if (returnValue < 0) {\n      throw new FS.ErrnoError(-returnValue);\n    }\n    return returnValue;\n  },\n  createDataFile(parent, name, fileData, canRead, canWrite, canOwn) {\n    FS_createDataFile(parent, name, fileData, canRead, canWrite, canOwn);\n  },\n  createPath(parent, path, canRead, canWrite) {\n    // Cache file path directory names.\n    var parts = path.split(\"/\").reverse();\n    while (parts.length) {\n      var part = parts.pop();\n      if (!part) continue;\n      var current = PATH.join2(parent, part);\n      if (!wasmFSPreloadingFlushed) {\n        wasmFSPreloadedDirs.push({\n          parentPath: parent,\n          childName: part\n        });\n      } else {\n        try {\n          FS.mkdir(current);\n        } catch (e) {\n          if (e.errno != 20) throw e;\n        }\n      }\n      parent = current;\n    }\n    return current;\n  },\n  createPreloadedFile(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {\n    return FS_createPreloadedFile(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish);\n  },\n  async preloadFile(parent, name, url, canRead, canWrite, dontCreateFile, canOwn, preFinish) {\n    return FS_preloadFile(parent, name, url, canRead, canWrite, dontCreateFile, canOwn, preFinish);\n  },\n  readFile(path, opts = {}) {\n    opts.encoding = opts.encoding || \"binary\";\n    if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n      throw new Error(`Invalid encoding type \"${opts.encoding}\"`);\n    }\n    var buf, length;\n    // Copy the file into a JS buffer on the heap.\n    withStackSave(() => {\n      var bufPtr = stackAlloc(4);\n      var sizePtr = stackAlloc(4);\n      FS.handleError(-__wasmfs_read_file(stringToUTF8OnStack(path), bufPtr, sizePtr));\n      buf = (growMemViews(), HEAPU32)[((bufPtr) >> 2)];\n      length = readI53FromI64(sizePtr);\n    });\n    // Default return type is binary.\n    // The buffer contents exist 8 bytes after the returned pointer.\n    return opts.encoding === \"utf8\" ? UTF8ToString(buf, length) : (growMemViews(), HEAPU8).slice(buf, buf + length);\n  },\n  cwd: () => UTF8ToString(__wasmfs_get_cwd()),\n  analyzePath(path) {\n    // TODO: Consider simplifying this API, which for now matches the JS FS.\n    var exists = !!FS.findObject(path);\n    return {\n      exists,\n      object: {\n        contents: exists ? FS.readFile(path) : null\n      }\n    };\n  },\n  mkdir: (path, mode) => FS_mkdir(path, mode),\n  mkdirTree: (path, mode) => FS_mkdirTree(path, mode),\n  rmdir: path => FS.handleError(withStackSave(() => __wasmfs_rmdir(stringToUTF8OnStack(path)))),\n  open: (path, flags, mode = 438) => withStackSave(() => {\n    flags = FS_modeStringToFlags(flags);\n    var buffer = stringToUTF8OnStack(path);\n    var fd = FS.handleError(__wasmfs_open(buffer, flags, mode));\n    return {\n      fd\n    };\n  }),\n  create: (path, mode) => FS_create(path, mode),\n  close: stream => FS.handleError(-__wasmfs_close(stream.fd)),\n  unlink: path => FS_unlink(path),\n  chdir: path => withStackSave(() => __wasmfs_chdir(stringToUTF8OnStack(path))),\n  read(stream, buffer, offset, length, position) {\n    var seeking = typeof position != \"undefined\";\n    var dataBuffer = _malloc(length);\n    var bytesRead;\n    if (seeking) {\n      bytesRead = __wasmfs_pread(stream.fd, dataBuffer, length, BigInt(position));\n    } else {\n      bytesRead = __wasmfs_read(stream.fd, dataBuffer, length);\n    }\n    if (bytesRead > 0) {\n      buffer.set((growMemViews(), HEAPU8).subarray(dataBuffer, dataBuffer + bytesRead), offset);\n    }\n    _free(dataBuffer);\n    return FS.handleError(bytesRead);\n  },\n  write(stream, buffer, offset, length, position, canOwn) {\n    var seeking = typeof position != \"undefined\";\n    var dataBuffer = _malloc(length);\n    for (var i = 0; i < length; i++) {\n      (growMemViews(), HEAP8)[(dataBuffer) + (i)] = buffer[offset + i];\n    }\n    var bytesRead;\n    if (seeking) {\n      bytesRead = __wasmfs_pwrite(stream.fd, dataBuffer, length, BigInt(position));\n    } else {\n      bytesRead = __wasmfs_write(stream.fd, dataBuffer, length);\n    }\n    _free(dataBuffer);\n    return FS.handleError(bytesRead);\n  },\n  writeFile: (path, data) => FS_writeFile(path, data),\n  mmap: (stream, length, offset, prot, flags) => {\n    var buf = FS.handleError(__wasmfs_mmap(length, prot, flags, stream.fd, BigInt(offset)));\n    return {\n      ptr: buf,\n      allocated: true\n    };\n  },\n  msync: (stream, bufferPtr, offset, length, mmapFlags) => {\n    assert(offset === 0);\n    // TODO: assert that stream has the fd corresponding to the mapped buffer (bufferPtr).\n    return FS.handleError(__wasmfs_msync(bufferPtr, length, mmapFlags));\n  },\n  munmap: (addr, length) => (FS.handleError(__wasmfs_munmap(addr, length))),\n  symlink: (target, linkpath) => withStackSave(() => (__wasmfs_symlink(stringToUTF8OnStack(target), stringToUTF8OnStack(linkpath)))),\n  readlink(path) {\n    return withStackSave(() => {\n      var bufPtr = stackAlloc(4);\n      FS.handleError(__wasmfs_readlink(stringToUTF8OnStack(path), bufPtr));\n      var readBuffer = (growMemViews(), HEAPU32)[((bufPtr) >> 2)];\n      return UTF8ToString(readBuffer);\n    });\n  },\n  statBufToObject(statBuf) {\n    // i53/u53 are enough for times and ino in practice.\n    return {\n      dev: (growMemViews(), HEAPU32)[((statBuf) >> 2)],\n      mode: (growMemViews(), HEAPU32)[(((statBuf) + (4)) >> 2)],\n      nlink: (growMemViews(), HEAPU32)[(((statBuf) + (8)) >> 2)],\n      uid: (growMemViews(), HEAPU32)[(((statBuf) + (12)) >> 2)],\n      gid: (growMemViews(), HEAPU32)[(((statBuf) + (16)) >> 2)],\n      rdev: (growMemViews(), HEAPU32)[(((statBuf) + (20)) >> 2)],\n      size: readI53FromI64((statBuf) + (24)),\n      blksize: (growMemViews(), HEAP32)[(((statBuf) + (32)) >> 2)],\n      blocks: (growMemViews(), HEAP32)[(((statBuf) + (36)) >> 2)],\n      atime: readI53FromI64((statBuf) + (40)),\n      mtime: readI53FromI64((statBuf) + (56)),\n      ctime: readI53FromI64((statBuf) + (72)),\n      ino: readI53FromU64((statBuf) + (88))\n    };\n  },\n  stat(path) {\n    return withStackSave(() => {\n      var statBuf = stackAlloc(96);\n      FS.handleError(__wasmfs_stat(stringToUTF8OnStack(path), statBuf));\n      return FS.statBufToObject(statBuf);\n    });\n  },\n  lstat(path) {\n    return withStackSave(() => {\n      var statBuf = stackAlloc(96);\n      FS.handleError(__wasmfs_lstat(stringToUTF8OnStack(path), statBuf));\n      return FS.statBufToObject(statBuf);\n    });\n  },\n  chmod(path, mode) {\n    return FS.handleError(withStackSave(() => {\n      var buffer = stringToUTF8OnStack(path);\n      return __wasmfs_chmod(buffer, mode);\n    }));\n  },\n  lchmod(path, mode) {\n    return FS.handleError(withStackSave(() => {\n      var buffer = stringToUTF8OnStack(path);\n      return __wasmfs_lchmod(buffer, mode);\n    }));\n  },\n  fchmod(fd, mode) {\n    return FS.handleError(__wasmfs_fchmod(fd, mode));\n  },\n  utime: (path, atime, mtime) => (FS.handleError(withStackSave(() => (__wasmfs_utime(stringToUTF8OnStack(path), atime, mtime))))),\n  truncate(path, len) {\n    return FS.handleError(withStackSave(() => (__wasmfs_truncate(stringToUTF8OnStack(path), BigInt(len)))));\n  },\n  ftruncate(fd, len) {\n    return FS.handleError(__wasmfs_ftruncate(fd, BigInt(len)));\n  },\n  findObject(path) {\n    var result = withStackSave(() => __wasmfs_identify(stringToUTF8OnStack(path)));\n    if (result == 44) {\n      return null;\n    }\n    return {\n      isFolder: result == 31,\n      isDevice: false\n    };\n  },\n  readdir: path => withStackSave(() => {\n    var pathBuffer = stringToUTF8OnStack(path);\n    var entries = [];\n    var state = __wasmfs_readdir_start(pathBuffer);\n    if (!state) {\n      // TODO: The old FS threw an ErrnoError here.\n      throw new Error(\"No such directory\");\n    }\n    var entry;\n    while (entry = __wasmfs_readdir_get(state)) {\n      entries.push(UTF8ToString(entry));\n    }\n    __wasmfs_readdir_finish(state);\n    return entries;\n  }),\n  mount: (type, opts, mountpoint) => {\n    if (typeof type == \"string\") {\n      // The filesystem was not included, and instead we have an error\n      // message stored in the variable.\n      throw type;\n    }\n    var backendPointer = type.createBackend(opts);\n    return FS.handleError(withStackSave(() => __wasmfs_mount(stringToUTF8OnStack(mountpoint), backendPointer)));\n  },\n  unmount: mountpoint => (FS.handleError(withStackSave(() => _wasmfs_unmount(stringToUTF8OnStack(mountpoint))))),\n  mknod: (path, mode, dev) => FS_mknod(path, mode, dev),\n  makedev: (ma, mi) => ((ma) << 8 | (mi)),\n  registerDevice(dev, ops) {\n    var backendPointer = _wasmfs_create_jsimpl_backend();\n    var definedOps = {\n      userRead: ops.read,\n      userWrite: ops.write,\n      allocFile: file => {\n        wasmFSDeviceStreams[file] = {};\n      },\n      freeFile: file => {\n        wasmFSDeviceStreams[file] = undefined;\n      },\n      getSize: file => {},\n      // Devices cannot be resized.\n      setSize: (file, size) => 0,\n      read: (file, buffer, length, offset) => {\n        var bufferArray = (growMemViews(), HEAP8).subarray(buffer, buffer + length);\n        try {\n          var bytesRead = definedOps.userRead(wasmFSDeviceStreams[file], bufferArray, 0, length, offset);\n        } catch (e) {\n          return -e.errno;\n        }\n        (growMemViews(), HEAP8).set(bufferArray, buffer);\n        return bytesRead;\n      },\n      write: (file, buffer, length, offset) => {\n        var bufferArray = (growMemViews(), HEAP8).subarray(buffer, buffer + length);\n        try {\n          var bytesWritten = definedOps.userWrite(wasmFSDeviceStreams[file], bufferArray, 0, length, offset);\n        } catch (e) {\n          return -e.errno;\n        }\n        (growMemViews(), HEAP8).set(bufferArray, buffer);\n        return bytesWritten;\n      }\n    };\n    wasmFS$backends[backendPointer] = definedOps;\n    wasmFSDevices[dev] = backendPointer;\n  },\n  createDevice(parent, name, input, output) {\n    if (typeof parent != \"string\") {\n      // The old API allowed parents to be objects, which do not exist in WasmFS.\n      throw new Error(\"Only string paths are accepted\");\n    }\n    var path = PATH.join2(parent, name);\n    var mode = FS_getMode(!!input, !!output);\n    FS.createDevice.major ??= 64;\n    var dev = FS.makedev(FS.createDevice.major++, 0);\n    // Create a fake device with a set of stream ops to emulate\n    // the old API's createDevice().\n    FS.registerDevice(dev, {\n      read(stream, buffer, offset, length, pos) {\n        var bytesRead = 0;\n        for (var i = 0; i < length; i++) {\n          var result;\n          try {\n            result = input();\n          } catch (e) {\n            throw new FS.ErrnoError(29);\n          }\n          if (result === undefined && bytesRead === 0) {\n            throw new FS.ErrnoError(6);\n          }\n          if (result === null || result === undefined) break;\n          bytesRead++;\n          buffer[offset + i] = result;\n        }\n        return bytesRead;\n      },\n      write(stream, buffer, offset, length, pos) {\n        for (var i = 0; i < length; i++) {\n          try {\n            output(buffer[offset + i]);\n          } catch (e) {\n            throw new FS.ErrnoError(29);\n          }\n        }\n        return i;\n      }\n    });\n    return FS.mkdev(path, mode, dev);\n  },\n  mkdev(path, mode, dev) {\n    if (typeof dev === \"undefined\") {\n      dev = mode;\n      mode = 438;\n    }\n    var deviceBackend = wasmFSDevices[dev];\n    if (!deviceBackend) {\n      throw new Error(\"Invalid device ID.\");\n    }\n    return FS.handleError(withStackSave(() => (_wasmfs_create_file(stringToUTF8OnStack(path), mode, deviceBackend))));\n  },\n  rename(oldPath, newPath) {\n    return FS.handleError(withStackSave(() => {\n      var oldPathBuffer = stringToUTF8OnStack(oldPath);\n      var newPathBuffer = stringToUTF8OnStack(newPath);\n      return __wasmfs_rename(oldPathBuffer, newPathBuffer);\n    }));\n  },\n  llseek(stream, offset, whence) {\n    return FS.handleError(__wasmfs_llseek(stream.fd, BigInt(offset), whence));\n  }\n};\n\nvar findLibraryFS = (libName, rpath) => {\n  // If we're preloading a dynamic library, the runtime is not ready to call\n  // __wasmfs_identify or __emscripten_find_dylib. So just quit out.\n  // This means that DT_NEEDED for the main module and transitive dependencies\n  // of it won't work with this code path. Similarly, it means that calling\n  // loadDynamicLibrary in a preRun hook can't use this code path.\n  if (!runtimeInitialized) {\n    return undefined;\n  }\n  if (PATH.isAbs(libName)) {\n    var result = withStackSave(() => __wasmfs_identify(stringToUTF8OnStack(libName)));\n    return result === 20 ? libName : undefined;\n  }\n  var rpathResolved = (rpath?.paths || []).map(p => replaceORIGIN(rpath?.parentLibPath, p));\n  return withStackSave(() => {\n    // In dylink.c we use: `char buf[2*NAME_MAX+2];` and NAME_MAX is 255.\n    // So we use the same size here.\n    var bufSize = 2 * 255 + 2;\n    var buf = stackAlloc(bufSize);\n    var rpathC = stringToUTF8OnStack(rpathResolved.join(\":\"));\n    var libNameC = stringToUTF8OnStack(libName);\n    var resLibNameC = __emscripten_find_dylib(buf, rpathC, libNameC, bufSize);\n    return resLibNameC ? UTF8ToString(resLibNameC) : undefined;\n  });\n};\n\n/**\n     * @param {number=} handle\n     * @param {Object=} localScope\n     */ function loadDynamicLibrary(libName, flags = {\n  global: true,\n  nodelete: true\n}, localScope, handle) {\n  // when loadDynamicLibrary did not have flags, libraries were loaded\n  // globally & permanently\n  var dso = LDSO.loadedLibsByName[libName];\n  if (dso) {\n    // the library is being loaded or has been loaded already.\n    assert(dso.exports !== \"loading\", `attempt to load '${libName}' a second time, before the first load completed`);\n    if (!flags.global) {\n      if (localScope) {\n        Object.assign(localScope, dso.exports);\n      }\n    } else if (!dso.global) {\n      // The library was previously loaded only locally but now\n      // we have a request with global=true.\n      dso.global = true;\n      mergeLibSymbols(dso.exports, libName);\n    }\n    // same for \"nodelete\"\n    if (flags.nodelete && dso.refcount !== Infinity) {\n      dso.refcount = Infinity;\n    }\n    dso.refcount++;\n    if (handle) {\n      LDSO.loadedLibsByHandle[handle] = dso;\n    }\n    return flags.loadAsync ? Promise.resolve(true) : true;\n  }\n  // allocate new DSO\n  dso = newDSO(libName, handle, \"loading\");\n  dso.refcount = flags.nodelete ? Infinity : 1;\n  dso.global = flags.global;\n  // libName -> libData\n  function loadLibData() {\n    var sharedMod = sharedModules[libName];\n    if (sharedMod) {\n      return flags.loadAsync ? Promise.resolve(sharedMod) : sharedMod;\n    }\n    // for wasm, we can use fetch for async, but for fs mode we can only imitate it\n    if (handle) {\n      var data = (growMemViews(), HEAPU32)[(((handle) + (28)) >> 2)];\n      var dataSize = (growMemViews(), HEAPU32)[(((handle) + (32)) >> 2)];\n      if (data && dataSize) {\n        var libData = (growMemViews(), HEAP8).slice(data, data + dataSize);\n        return flags.loadAsync ? Promise.resolve(libData) : libData;\n      }\n    }\n    var f = findLibraryFS(libName, flags.rpath);\n    if (f) {\n      var libData = FS.readFile(f, {\n        encoding: \"binary\"\n      });\n      return flags.loadAsync ? Promise.resolve(libData) : libData;\n    }\n    var libFile = locateFile(libName);\n    if (flags.loadAsync) {\n      return asyncLoad(libFile);\n    }\n    // load the binary synchronously\n    if (!readBinary) {\n      throw new Error(`${libFile}: file not found, and synchronous loading of external files is not available`);\n    }\n    return readBinary(libFile);\n  }\n  // libName -> exports\n  function getExports() {\n    // lookup preloaded cache first\n    var preloaded = preloadedWasm[libName];\n    if (preloaded) {\n      return flags.loadAsync ? Promise.resolve(preloaded) : preloaded;\n    }\n    // module not preloaded - load lib data and create new module from it\n    if (flags.loadAsync) {\n      return loadLibData().then(libData => loadWebAssemblyModule(libData, flags, libName, localScope, handle));\n    }\n    return loadWebAssemblyModule(loadLibData(), flags, libName, localScope, handle);\n  }\n  // module for lib is loaded - update the dso & global namespace\n  function moduleLoaded(exports) {\n    if (dso.global) {\n      mergeLibSymbols(exports, libName);\n    } else if (localScope) {\n      Object.assign(localScope, exports);\n    }\n    dso.exports = exports;\n  }\n  if (flags.loadAsync) {\n    return getExports().then(exports => {\n      moduleLoaded(exports);\n      return true;\n    });\n  }\n  moduleLoaded(getExports());\n  return true;\n}\n\nvar reportUndefinedSymbols = () => {\n  for (var [symName, entry] of Object.entries(GOT)) {\n    if (entry.value == -1) {\n      var value = resolveGlobalSymbol(symName, true).sym;\n      if (!value && !entry.required) {\n        // Ignore undefined symbols that are imported as weak.\n        entry.value = 0;\n        continue;\n      }\n      assert(value, `undefined symbol '${symName}'. perhaps a side module was not linked in? if this global was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment`);\n      if (typeof value == \"function\") {\n        /** @suppress {checkTypes} */ entry.value = addFunction(value, value.sig);\n      } else if (typeof value == \"number\") {\n        entry.value = value;\n      } else if (typeof value.value == \"number\") {\n        entry.value = value;\n      } else {\n        throw new Error(`bad export type for '${symName}': ${typeof value} (${value})`);\n      }\n    }\n  }\n};\n\nvar loadDylibs = async () => {\n  if (!dynamicLibraries.length) {\n    reportUndefinedSymbols();\n    return;\n  }\n  addRunDependency(\"loadDylibs\");\n  // Load binaries asynchronously\n  for (var lib of dynamicLibraries) {\n    await loadDynamicLibrary(lib, {\n      loadAsync: true,\n      global: true,\n      nodelete: true,\n      allowUndefined: true\n    });\n  }\n  // we got them all, wonderful\n  reportUndefinedSymbols();\n  removeRunDependency(\"loadDylibs\");\n};\n\nvar noExitRuntime = true;\n\nvar registerTLSInit = (tlsInitFunc, moduleExports, metadata) => {\n  // In relocatable builds, we use the result of calling tlsInitFunc\n  // (`_emscripten_tls_init`) to relocate the TLS exports of the module\n  // according to this new __tls_base.\n  function tlsInitWrapper() {\n    var __tls_base = tlsInitFunc();\n    if (!__tls_base) {\n      // __tls_base should never be zero if there are tls exports\n      assert(__tls_base || metadata.tlsExports.size == 0);\n      return;\n    }\n    var tlsExports = {};\n    metadata.tlsExports.forEach(s => tlsExports[s] = moduleExports[s]);\n    updateGOT(relocateExports(tlsExports, __tls_base), /*replace=*/ true);\n  }\n  // Register this function so that its gets called for each thread on\n  // startup.\n  PThread.tlsInitFunctions.push(tlsInitWrapper);\n  // If the main thread is already running we also need to call this function\n  // now.  If the main thread is not yet running this will happen when it\n  // is initialized and processes `PThread.tlsInitFunctions`.\n  if (runtimeInitialized) {\n    tlsInitWrapper();\n  }\n};\n\nvar wasmMemory;\n\nfunction _CavlcParamCal_c(...args) {\n  if (!wasmImports[\"CavlcParamCal_c\"] || wasmImports[\"CavlcParamCal_c\"].stub) abort(\"external symbol 'CavlcParamCal_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"CavlcParamCal_c\"](...args);\n}\n\n_CavlcParamCal_c.stub = true;\n\nfunction __Z13WelsCopy4x4_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z13WelsCopy4x4_cPhiS_i\"] || wasmImports[\"_Z13WelsCopy4x4_cPhiS_i\"].stub) abort(\"external symbol '_Z13WelsCopy4x4_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z13WelsCopy4x4_cPhiS_i\"](...args);\n}\n\n__Z13WelsCopy4x4_cPhiS_i.stub = true;\n\nfunction __Z13WelsCopy4x8_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z13WelsCopy4x8_cPhiS_i\"] || wasmImports[\"_Z13WelsCopy4x8_cPhiS_i\"].stub) abort(\"external symbol '_Z13WelsCopy4x8_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z13WelsCopy4x8_cPhiS_i\"](...args);\n}\n\n__Z13WelsCopy4x8_cPhiS_i.stub = true;\n\nfunction __Z13WelsCopy8x4_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z13WelsCopy8x4_cPhiS_i\"] || wasmImports[\"_Z13WelsCopy8x4_cPhiS_i\"].stub) abort(\"external symbol '_Z13WelsCopy8x4_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z13WelsCopy8x4_cPhiS_i\"](...args);\n}\n\n__Z13WelsCopy8x4_cPhiS_i.stub = true;\n\nfunction __Z13WelsCopy8x8_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z13WelsCopy8x8_cPhiS_i\"] || wasmImports[\"_Z13WelsCopy8x8_cPhiS_i\"].stub) abort(\"external symbol '_Z13WelsCopy8x8_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z13WelsCopy8x8_cPhiS_i\"](...args);\n}\n\n__Z13WelsCopy8x8_cPhiS_i.stub = true;\n\nfunction __Z14WelsCopy16x8_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z14WelsCopy16x8_cPhiS_i\"] || wasmImports[\"_Z14WelsCopy16x8_cPhiS_i\"].stub) abort(\"external symbol '_Z14WelsCopy16x8_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z14WelsCopy16x8_cPhiS_i\"](...args);\n}\n\n__Z14WelsCopy16x8_cPhiS_i.stub = true;\n\nfunction __Z14WelsCopy8x16_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z14WelsCopy8x16_cPhiS_i\"] || wasmImports[\"_Z14WelsCopy8x16_cPhiS_i\"].stub) abort(\"external symbol '_Z14WelsCopy8x16_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z14WelsCopy8x16_cPhiS_i\"](...args);\n}\n\n__Z14WelsCopy8x16_cPhiS_i.stub = true;\n\nfunction __Z15WelsCopy16x16_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z15WelsCopy16x16_cPhiS_i\"] || wasmImports[\"_Z15WelsCopy16x16_cPhiS_i\"].stub) abort(\"external symbol '_Z15WelsCopy16x16_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z15WelsCopy16x16_cPhiS_i\"](...args);\n}\n\n__Z15WelsCopy16x16_cPhiS_i.stub = true;\n\nfunction __Z17DeblockLumaEq4H_cPhiii(...args) {\n  if (!wasmImports[\"_Z17DeblockLumaEq4H_cPhiii\"] || wasmImports[\"_Z17DeblockLumaEq4H_cPhiii\"].stub) abort(\"external symbol '_Z17DeblockLumaEq4H_cPhiii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z17DeblockLumaEq4H_cPhiii\"](...args);\n}\n\n__Z17DeblockLumaEq4H_cPhiii.stub = true;\n\nfunction __Z17DeblockLumaEq4V_cPhiii(...args) {\n  if (!wasmImports[\"_Z17DeblockLumaEq4V_cPhiii\"] || wasmImports[\"_Z17DeblockLumaEq4V_cPhiii\"].stub) abort(\"external symbol '_Z17DeblockLumaEq4V_cPhiii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z17DeblockLumaEq4V_cPhiii\"](...args);\n}\n\n__Z17DeblockLumaEq4V_cPhiii.stub = true;\n\nfunction __Z17DeblockLumaLt4H_cPhiiiPa(...args) {\n  if (!wasmImports[\"_Z17DeblockLumaLt4H_cPhiiiPa\"] || wasmImports[\"_Z17DeblockLumaLt4H_cPhiiiPa\"].stub) abort(\"external symbol '_Z17DeblockLumaLt4H_cPhiiiPa' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z17DeblockLumaLt4H_cPhiiiPa\"](...args);\n}\n\n__Z17DeblockLumaLt4H_cPhiiiPa.stub = true;\n\nfunction __Z17DeblockLumaLt4V_cPhiiiPa(...args) {\n  if (!wasmImports[\"_Z17DeblockLumaLt4V_cPhiiiPa\"] || wasmImports[\"_Z17DeblockLumaLt4V_cPhiiiPa\"].stub) abort(\"external symbol '_Z17DeblockLumaLt4V_cPhiiiPa' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z17DeblockLumaLt4V_cPhiiiPa\"](...args);\n}\n\n__Z17DeblockLumaLt4V_cPhiiiPa.stub = true;\n\nfunction __Z18WelsNonZeroCount_cPa(...args) {\n  if (!wasmImports[\"_Z18WelsNonZeroCount_cPa\"] || wasmImports[\"_Z18WelsNonZeroCount_cPa\"].stub) abort(\"external symbol '_Z18WelsNonZeroCount_cPa' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z18WelsNonZeroCount_cPa\"](...args);\n}\n\n__Z18WelsNonZeroCount_cPa.stub = true;\n\nfunction __Z18WelsSampleSad4x4_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z18WelsSampleSad4x4_cPhiS_i\"] || wasmImports[\"_Z18WelsSampleSad4x4_cPhiS_i\"].stub) abort(\"external symbol '_Z18WelsSampleSad4x4_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z18WelsSampleSad4x4_cPhiS_i\"](...args);\n}\n\n__Z18WelsSampleSad4x4_cPhiS_i.stub = true;\n\nfunction __Z18WelsSampleSad4x8_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z18WelsSampleSad4x8_cPhiS_i\"] || wasmImports[\"_Z18WelsSampleSad4x8_cPhiS_i\"].stub) abort(\"external symbol '_Z18WelsSampleSad4x8_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z18WelsSampleSad4x8_cPhiS_i\"](...args);\n}\n\n__Z18WelsSampleSad4x8_cPhiS_i.stub = true;\n\nfunction __Z18WelsSampleSad8x4_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z18WelsSampleSad8x4_cPhiS_i\"] || wasmImports[\"_Z18WelsSampleSad8x4_cPhiS_i\"].stub) abort(\"external symbol '_Z18WelsSampleSad8x4_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z18WelsSampleSad8x4_cPhiS_i\"](...args);\n}\n\n__Z18WelsSampleSad8x4_cPhiS_i.stub = true;\n\nfunction __Z18WelsSampleSad8x8_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z18WelsSampleSad8x8_cPhiS_i\"] || wasmImports[\"_Z18WelsSampleSad8x8_cPhiS_i\"].stub) abort(\"external symbol '_Z18WelsSampleSad8x8_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z18WelsSampleSad8x8_cPhiS_i\"](...args);\n}\n\n__Z18WelsSampleSad8x8_cPhiS_i.stub = true;\n\nfunction __Z19DeblockChromaEq4H_cPhS_iii(...args) {\n  if (!wasmImports[\"_Z19DeblockChromaEq4H_cPhS_iii\"] || wasmImports[\"_Z19DeblockChromaEq4H_cPhS_iii\"].stub) abort(\"external symbol '_Z19DeblockChromaEq4H_cPhS_iii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z19DeblockChromaEq4H_cPhS_iii\"](...args);\n}\n\n__Z19DeblockChromaEq4H_cPhS_iii.stub = true;\n\nfunction __Z19DeblockChromaEq4V_cPhS_iii(...args) {\n  if (!wasmImports[\"_Z19DeblockChromaEq4V_cPhS_iii\"] || wasmImports[\"_Z19DeblockChromaEq4V_cPhS_iii\"].stub) abort(\"external symbol '_Z19DeblockChromaEq4V_cPhS_iii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z19DeblockChromaEq4V_cPhS_iii\"](...args);\n}\n\n__Z19DeblockChromaEq4V_cPhS_iii.stub = true;\n\nfunction __Z19DeblockChromaLt4H_cPhS_iiiPa(...args) {\n  if (!wasmImports[\"_Z19DeblockChromaLt4H_cPhS_iiiPa\"] || wasmImports[\"_Z19DeblockChromaLt4H_cPhS_iiiPa\"].stub) abort(\"external symbol '_Z19DeblockChromaLt4H_cPhS_iiiPa' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z19DeblockChromaLt4H_cPhS_iiiPa\"](...args);\n}\n\n__Z19DeblockChromaLt4H_cPhS_iiiPa.stub = true;\n\nfunction __Z19DeblockChromaLt4V_cPhS_iiiPa(...args) {\n  if (!wasmImports[\"_Z19DeblockChromaLt4V_cPhS_iiiPa\"] || wasmImports[\"_Z19DeblockChromaLt4V_cPhS_iiiPa\"].stub) abort(\"external symbol '_Z19DeblockChromaLt4V_cPhS_iiiPa' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z19DeblockChromaLt4V_cPhS_iiiPa\"](...args);\n}\n\n__Z19DeblockChromaLt4V_cPhS_iiiPa.stub = true;\n\nfunction __Z19WelsSampleSad16x8_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z19WelsSampleSad16x8_cPhiS_i\"] || wasmImports[\"_Z19WelsSampleSad16x8_cPhiS_i\"].stub) abort(\"external symbol '_Z19WelsSampleSad16x8_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z19WelsSampleSad16x8_cPhiS_i\"](...args);\n}\n\n__Z19WelsSampleSad16x8_cPhiS_i.stub = true;\n\nfunction __Z19WelsSampleSad8x16_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z19WelsSampleSad8x16_cPhiS_i\"] || wasmImports[\"_Z19WelsSampleSad8x16_cPhiS_i\"].stub) abort(\"external symbol '_Z19WelsSampleSad8x16_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z19WelsSampleSad8x16_cPhiS_i\"](...args);\n}\n\n__Z19WelsSampleSad8x16_cPhiS_i.stub = true;\n\nfunction __Z20WelsSampleSad16x16_cPhiS_i(...args) {\n  if (!wasmImports[\"_Z20WelsSampleSad16x16_cPhiS_i\"] || wasmImports[\"_Z20WelsSampleSad16x16_cPhiS_i\"].stub) abort(\"external symbol '_Z20WelsSampleSad16x16_cPhiS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z20WelsSampleSad16x16_cPhiS_i\"](...args);\n}\n\n__Z20WelsSampleSad16x16_cPhiS_i.stub = true;\n\nfunction __Z21WelsI16x16LumaPredH_cPhS_i(...args) {\n  if (!wasmImports[\"_Z21WelsI16x16LumaPredH_cPhS_i\"] || wasmImports[\"_Z21WelsI16x16LumaPredH_cPhS_i\"].stub) abort(\"external symbol '_Z21WelsI16x16LumaPredH_cPhS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z21WelsI16x16LumaPredH_cPhS_i\"](...args);\n}\n\n__Z21WelsI16x16LumaPredH_cPhS_i.stub = true;\n\nfunction __Z21WelsI16x16LumaPredV_cPhS_i(...args) {\n  if (!wasmImports[\"_Z21WelsI16x16LumaPredV_cPhS_i\"] || wasmImports[\"_Z21WelsI16x16LumaPredV_cPhS_i\"].stub) abort(\"external symbol '_Z21WelsI16x16LumaPredV_cPhS_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z21WelsI16x16LumaPredV_cPhS_i\"](...args);\n}\n\n__Z21WelsI16x16LumaPredV_cPhS_i.stub = true;\n\nfunction __Z22WelsSampleSadFour4x4_cPhiS_iPi(...args) {\n  if (!wasmImports[\"_Z22WelsSampleSadFour4x4_cPhiS_iPi\"] || wasmImports[\"_Z22WelsSampleSadFour4x4_cPhiS_iPi\"].stub) abort(\"external symbol '_Z22WelsSampleSadFour4x4_cPhiS_iPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z22WelsSampleSadFour4x4_cPhiS_iPi\"](...args);\n}\n\n__Z22WelsSampleSadFour4x4_cPhiS_iPi.stub = true;\n\nfunction __Z22WelsSampleSadFour4x8_cPhiS_iPi(...args) {\n  if (!wasmImports[\"_Z22WelsSampleSadFour4x8_cPhiS_iPi\"] || wasmImports[\"_Z22WelsSampleSadFour4x8_cPhiS_iPi\"].stub) abort(\"external symbol '_Z22WelsSampleSadFour4x8_cPhiS_iPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z22WelsSampleSadFour4x8_cPhiS_iPi\"](...args);\n}\n\n__Z22WelsSampleSadFour4x8_cPhiS_iPi.stub = true;\n\nfunction __Z22WelsSampleSadFour8x4_cPhiS_iPi(...args) {\n  if (!wasmImports[\"_Z22WelsSampleSadFour8x4_cPhiS_iPi\"] || wasmImports[\"_Z22WelsSampleSadFour8x4_cPhiS_iPi\"].stub) abort(\"external symbol '_Z22WelsSampleSadFour8x4_cPhiS_iPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z22WelsSampleSadFour8x4_cPhiS_iPi\"](...args);\n}\n\n__Z22WelsSampleSadFour8x4_cPhiS_iPi.stub = true;\n\nfunction __Z22WelsSampleSadFour8x8_cPhiS_iPi(...args) {\n  if (!wasmImports[\"_Z22WelsSampleSadFour8x8_cPhiS_iPi\"] || wasmImports[\"_Z22WelsSampleSadFour8x8_cPhiS_iPi\"].stub) abort(\"external symbol '_Z22WelsSampleSadFour8x8_cPhiS_iPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z22WelsSampleSadFour8x8_cPhiS_iPi\"](...args);\n}\n\n__Z22WelsSampleSadFour8x8_cPhiS_iPi.stub = true;\n\nfunction __Z23WelsSampleSadFour16x8_cPhiS_iPi(...args) {\n  if (!wasmImports[\"_Z23WelsSampleSadFour16x8_cPhiS_iPi\"] || wasmImports[\"_Z23WelsSampleSadFour16x8_cPhiS_iPi\"].stub) abort(\"external symbol '_Z23WelsSampleSadFour16x8_cPhiS_iPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z23WelsSampleSadFour16x8_cPhiS_iPi\"](...args);\n}\n\n__Z23WelsSampleSadFour16x8_cPhiS_iPi.stub = true;\n\nfunction __Z23WelsSampleSadFour8x16_cPhiS_iPi(...args) {\n  if (!wasmImports[\"_Z23WelsSampleSadFour8x16_cPhiS_iPi\"] || wasmImports[\"_Z23WelsSampleSadFour8x16_cPhiS_iPi\"].stub) abort(\"external symbol '_Z23WelsSampleSadFour8x16_cPhiS_iPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z23WelsSampleSadFour8x16_cPhiS_iPi\"](...args);\n}\n\n__Z23WelsSampleSadFour8x16_cPhiS_iPi.stub = true;\n\nfunction __Z24WelsSampleSadFour16x16_cPhiS_iPi(...args) {\n  if (!wasmImports[\"_Z24WelsSampleSadFour16x16_cPhiS_iPi\"] || wasmImports[\"_Z24WelsSampleSadFour16x16_cPhiS_iPi\"].stub) abort(\"external symbol '_Z24WelsSampleSadFour16x16_cPhiS_iPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z24WelsSampleSadFour16x16_cPhiS_iPi\"](...args);\n}\n\n__Z24WelsSampleSadFour16x16_cPhiS_iPi.stub = true;\n\nfunction __Z25WelsSetMemMultiplebytes_cPvjii(...args) {\n  if (!wasmImports[\"_Z25WelsSetMemMultiplebytes_cPvjii\"] || wasmImports[\"_Z25WelsSetMemMultiplebytes_cPvjii\"].stub) abort(\"external symbol '_Z25WelsSetMemMultiplebytes_cPvjii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_Z25WelsSetMemMultiplebytes_cPvjii\"](...args);\n}\n\n__Z25WelsSetMemMultiplebytes_cPvjii.stub = true;\n\nfunction __ZN10WelsCommon11CWelsThread10SetEndFlagEb(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon11CWelsThread10SetEndFlagEb\"] || wasmImports[\"_ZN10WelsCommon11CWelsThread10SetEndFlagEb\"].stub) abort(\"external symbol '_ZN10WelsCommon11CWelsThread10SetEndFlagEb' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon11CWelsThread10SetEndFlagEb\"](...args);\n}\n\n__ZN10WelsCommon11CWelsThread10SetEndFlagEb.stub = true;\n\nfunction __ZN10WelsCommon11CWelsThread10SetRunningEb(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon11CWelsThread10SetRunningEb\"] || wasmImports[\"_ZN10WelsCommon11CWelsThread10SetRunningEb\"].stub) abort(\"external symbol '_ZN10WelsCommon11CWelsThread10SetRunningEb' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon11CWelsThread10SetRunningEb\"](...args);\n}\n\n__ZN10WelsCommon11CWelsThread10SetRunningEb.stub = true;\n\nfunction __ZN10WelsCommon11CWelsThread12SignalThreadEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon11CWelsThread12SignalThreadEv\"] || wasmImports[\"_ZN10WelsCommon11CWelsThread12SignalThreadEv\"].stub) abort(\"external symbol '_ZN10WelsCommon11CWelsThread12SignalThreadEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon11CWelsThread12SignalThreadEv\"](...args);\n}\n\n__ZN10WelsCommon11CWelsThread12SignalThreadEv.stub = true;\n\nfunction __ZN10WelsCommon11CWelsThread4KillEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon11CWelsThread4KillEv\"] || wasmImports[\"_ZN10WelsCommon11CWelsThread4KillEv\"].stub) abort(\"external symbol '_ZN10WelsCommon11CWelsThread4KillEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon11CWelsThread4KillEv\"](...args);\n}\n\n__ZN10WelsCommon11CWelsThread4KillEv.stub = true;\n\nfunction __ZN10WelsCommon11CWelsThread5StartEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon11CWelsThread5StartEv\"] || wasmImports[\"_ZN10WelsCommon11CWelsThread5StartEv\"].stub) abort(\"external symbol '_ZN10WelsCommon11CWelsThread5StartEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon11CWelsThread5StartEv\"](...args);\n}\n\n__ZN10WelsCommon11CWelsThread5StartEv.stub = true;\n\nfunction __ZN10WelsCommon11CWelsThread6ThreadEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon11CWelsThread6ThreadEv\"] || wasmImports[\"_ZN10WelsCommon11CWelsThread6ThreadEv\"].stub) abort(\"external symbol '_ZN10WelsCommon11CWelsThread6ThreadEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon11CWelsThread6ThreadEv\"](...args);\n}\n\n__ZN10WelsCommon11CWelsThread6ThreadEv.stub = true;\n\nfunction __ZN10WelsCommon11CWelsThread9TheThreadEPv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon11CWelsThread9TheThreadEPv\"] || wasmImports[\"_ZN10WelsCommon11CWelsThread9TheThreadEPv\"].stub) abort(\"external symbol '_ZN10WelsCommon11CWelsThread9TheThreadEPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon11CWelsThread9TheThreadEPv\"](...args);\n}\n\n__ZN10WelsCommon11CWelsThread9TheThreadEPv.stub = true;\n\nfunction __ZN10WelsCommon11CWelsThreadD0Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon11CWelsThreadD0Ev\"] || wasmImports[\"_ZN10WelsCommon11CWelsThreadD0Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon11CWelsThreadD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon11CWelsThreadD0Ev\"](...args);\n}\n\n__ZN10WelsCommon11CWelsThreadD0Ev.stub = true;\n\nfunction __ZN10WelsCommon11CWelsThreadD1Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon11CWelsThreadD1Ev\"] || wasmImports[\"_ZN10WelsCommon11CWelsThreadD1Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon11CWelsThreadD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon11CWelsThreadD1Ev\"](...args);\n}\n\n__ZN10WelsCommon11CWelsThreadD1Ev.stub = true;\n\nfunction __ZN10WelsCommon12CMemoryAlignD0Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon12CMemoryAlignD0Ev\"] || wasmImports[\"_ZN10WelsCommon12CMemoryAlignD0Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon12CMemoryAlignD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon12CMemoryAlignD0Ev\"](...args);\n}\n\n__ZN10WelsCommon12CMemoryAlignD0Ev.stub = true;\n\nfunction __ZN10WelsCommon12CMemoryAlignD1Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon12CMemoryAlignD1Ev\"] || wasmImports[\"_ZN10WelsCommon12CMemoryAlignD1Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon12CMemoryAlignD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon12CMemoryAlignD1Ev\"](...args);\n}\n\n__ZN10WelsCommon12CMemoryAlignD1Ev.stub = true;\n\nfunction __ZN10WelsCommon15CWelsTaskThread11ExecuteTaskEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon15CWelsTaskThread11ExecuteTaskEv\"] || wasmImports[\"_ZN10WelsCommon15CWelsTaskThread11ExecuteTaskEv\"].stub) abort(\"external symbol '_ZN10WelsCommon15CWelsTaskThread11ExecuteTaskEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon15CWelsTaskThread11ExecuteTaskEv\"](...args);\n}\n\n__ZN10WelsCommon15CWelsTaskThread11ExecuteTaskEv.stub = true;\n\nfunction __ZN10WelsCommon15CWelsTaskThreadD0Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon15CWelsTaskThreadD0Ev\"] || wasmImports[\"_ZN10WelsCommon15CWelsTaskThreadD0Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon15CWelsTaskThreadD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon15CWelsTaskThreadD0Ev\"](...args);\n}\n\n__ZN10WelsCommon15CWelsTaskThreadD0Ev.stub = true;\n\nfunction __ZN10WelsCommon15CWelsTaskThreadD1Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon15CWelsTaskThreadD1Ev\"] || wasmImports[\"_ZN10WelsCommon15CWelsTaskThreadD1Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon15CWelsTaskThreadD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon15CWelsTaskThreadD1Ev\"](...args);\n}\n\n__ZN10WelsCommon15CWelsTaskThreadD1Ev.stub = true;\n\nfunction __ZN10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE\"] || wasmImports[\"_ZN10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE\"].stub) abort(\"external symbol '_ZN10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE\"](...args);\n}\n\n__ZN10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE.stub = true;\n\nfunction __ZN10WelsCommon15CWelsThreadPool11ExecuteTaskEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon15CWelsThreadPool11ExecuteTaskEv\"] || wasmImports[\"_ZN10WelsCommon15CWelsThreadPool11ExecuteTaskEv\"].stub) abort(\"external symbol '_ZN10WelsCommon15CWelsThreadPool11ExecuteTaskEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon15CWelsThreadPool11ExecuteTaskEv\"](...args);\n}\n\n__ZN10WelsCommon15CWelsThreadPool11ExecuteTaskEv.stub = true;\n\nfunction __ZN10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE\"] || wasmImports[\"_ZN10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE\"].stub) abort(\"external symbol '_ZN10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE\"](...args);\n}\n\n__ZN10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE.stub = true;\n\nfunction __ZN10WelsCommon15CWelsThreadPool11m_iRefCountE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon15CWelsThreadPool11m_iRefCountE\"] || wasmImports[\"_ZN10WelsCommon15CWelsThreadPool11m_iRefCountE\"].stub) abort(\"external symbol '_ZN10WelsCommon15CWelsThreadPool11m_iRefCountE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon15CWelsThreadPool11m_iRefCountE\"](...args);\n}\n\n__ZN10WelsCommon15CWelsThreadPool11m_iRefCountE.stub = true;\n\nfunction __ZN10WelsCommon15CWelsThreadPool15m_iMaxThreadNumE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon15CWelsThreadPool15m_iMaxThreadNumE\"] || wasmImports[\"_ZN10WelsCommon15CWelsThreadPool15m_iMaxThreadNumE\"].stub) abort(\"external symbol '_ZN10WelsCommon15CWelsThreadPool15m_iMaxThreadNumE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon15CWelsThreadPool15m_iMaxThreadNumE\"](...args);\n}\n\n__ZN10WelsCommon15CWelsThreadPool15m_iMaxThreadNumE.stub = true;\n\nfunction __ZN10WelsCommon15CWelsThreadPool17m_pThreadPoolSelfE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon15CWelsThreadPool17m_pThreadPoolSelfE\"] || wasmImports[\"_ZN10WelsCommon15CWelsThreadPool17m_pThreadPoolSelfE\"].stub) abort(\"external symbol '_ZN10WelsCommon15CWelsThreadPool17m_pThreadPoolSelfE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon15CWelsThreadPool17m_pThreadPoolSelfE\"](...args);\n}\n\n__ZN10WelsCommon15CWelsThreadPool17m_pThreadPoolSelfE.stub = true;\n\nfunction __ZN10WelsCommon15CWelsThreadPoolD0Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon15CWelsThreadPoolD0Ev\"] || wasmImports[\"_ZN10WelsCommon15CWelsThreadPoolD0Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon15CWelsThreadPoolD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon15CWelsThreadPoolD0Ev\"](...args);\n}\n\n__ZN10WelsCommon15CWelsThreadPoolD0Ev.stub = true;\n\nfunction __ZN10WelsCommon15CWelsThreadPoolD1Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon15CWelsThreadPoolD1Ev\"] || wasmImports[\"_ZN10WelsCommon15CWelsThreadPoolD1Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon15CWelsThreadPoolD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon15CWelsThreadPoolD1Ev\"](...args);\n}\n\n__ZN10WelsCommon15CWelsThreadPoolD1Ev.stub = true;\n\nfunction __ZN10WelsCommon15g_ksLevelLimitsE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon15g_ksLevelLimitsE\"] || wasmImports[\"_ZN10WelsCommon15g_ksLevelLimitsE\"].stub) abort(\"external symbol '_ZN10WelsCommon15g_ksLevelLimitsE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon15g_ksLevelLimitsE\"](...args);\n}\n\n__ZN10WelsCommon15g_ksLevelLimitsE.stub = true;\n\nfunction __ZN10WelsCommon17g_kuiDequantCoeffE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon17g_kuiDequantCoeffE\"] || wasmImports[\"_ZN10WelsCommon17g_kuiDequantCoeffE\"].stub) abort(\"external symbol '_ZN10WelsCommon17g_kuiDequantCoeffE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon17g_kuiDequantCoeffE\"](...args);\n}\n\n__ZN10WelsCommon17g_kuiDequantCoeffE.stub = true;\n\nfunction __ZN10WelsCommon18g_kuiCabacRangeLpsE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon18g_kuiCabacRangeLpsE\"] || wasmImports[\"_ZN10WelsCommon18g_kuiCabacRangeLpsE\"].stub) abort(\"external symbol '_ZN10WelsCommon18g_kuiCabacRangeLpsE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon18g_kuiCabacRangeLpsE\"](...args);\n}\n\n__ZN10WelsCommon18g_kuiCabacRangeLpsE.stub = true;\n\nfunction __ZN10WelsCommon18g_kuiChromaQpTableE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon18g_kuiChromaQpTableE\"] || wasmImports[\"_ZN10WelsCommon18g_kuiChromaQpTableE\"].stub) abort(\"external symbol '_ZN10WelsCommon18g_kuiChromaQpTableE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon18g_kuiChromaQpTableE\"](...args);\n}\n\n__ZN10WelsCommon18g_kuiChromaQpTableE.stub = true;\n\nfunction __ZN10WelsCommon19g_kuiCache30ScanIdxE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon19g_kuiCache30ScanIdxE\"] || wasmImports[\"_ZN10WelsCommon19g_kuiCache30ScanIdxE\"].stub) abort(\"external symbol '_ZN10WelsCommon19g_kuiCache30ScanIdxE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon19g_kuiCache30ScanIdxE\"](...args);\n}\n\n__ZN10WelsCommon19g_kuiCache30ScanIdxE.stub = true;\n\nfunction __ZN10WelsCommon19g_kuiGolombUELengthE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon19g_kuiGolombUELengthE\"] || wasmImports[\"_ZN10WelsCommon19g_kuiGolombUELengthE\"].stub) abort(\"external symbol '_ZN10WelsCommon19g_kuiGolombUELengthE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon19g_kuiGolombUELengthE\"](...args);\n}\n\n__ZN10WelsCommon19g_kuiGolombUELengthE.stub = true;\n\nfunction __ZN10WelsCommon20g_kuiMbCountScan4IdxE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon20g_kuiMbCountScan4IdxE\"] || wasmImports[\"_ZN10WelsCommon20g_kuiMbCountScan4IdxE\"].stub) abort(\"external symbol '_ZN10WelsCommon20g_kuiMbCountScan4IdxE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon20g_kuiMbCountScan4IdxE\"](...args);\n}\n\n__ZN10WelsCommon20g_kuiMbCountScan4IdxE.stub = true;\n\nfunction __ZN10WelsCommon20g_kuiStateTransTableE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon20g_kuiStateTransTableE\"] || wasmImports[\"_ZN10WelsCommon20g_kuiStateTransTableE\"].stub) abort(\"external symbol '_ZN10WelsCommon20g_kuiStateTransTableE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon20g_kuiStateTransTableE\"](...args);\n}\n\n__ZN10WelsCommon20g_kuiStateTransTableE.stub = true;\n\nfunction __ZN10WelsCommon22CWelsNonDuplicatedListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon22CWelsNonDuplicatedListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_\"] || wasmImports[\"_ZN10WelsCommon22CWelsNonDuplicatedListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_\"].stub) abort(\"external symbol '_ZN10WelsCommon22CWelsNonDuplicatedListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon22CWelsNonDuplicatedListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_\"](...args);\n}\n\n__ZN10WelsCommon22CWelsNonDuplicatedListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_.stub = true;\n\nfunction __ZN10WelsCommon22CWelsNonDuplicatedListINS_15CWelsTaskThreadEE9push_backEPS1_(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon22CWelsNonDuplicatedListINS_15CWelsTaskThreadEE9push_backEPS1_\"] || wasmImports[\"_ZN10WelsCommon22CWelsNonDuplicatedListINS_15CWelsTaskThreadEE9push_backEPS1_\"].stub) abort(\"external symbol '_ZN10WelsCommon22CWelsNonDuplicatedListINS_15CWelsTaskThreadEE9push_backEPS1_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon22CWelsNonDuplicatedListINS_15CWelsTaskThreadEE9push_backEPS1_\"](...args);\n}\n\n__ZN10WelsCommon22CWelsNonDuplicatedListINS_15CWelsTaskThreadEE9push_backEPS1_.stub = true;\n\nfunction __ZN10WelsCommon22CWelsNonDuplicatedListINS_9IWelsTaskEE9push_backEPS1_(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon22CWelsNonDuplicatedListINS_9IWelsTaskEE9push_backEPS1_\"] || wasmImports[\"_ZN10WelsCommon22CWelsNonDuplicatedListINS_9IWelsTaskEE9push_backEPS1_\"].stub) abort(\"external symbol '_ZN10WelsCommon22CWelsNonDuplicatedListINS_9IWelsTaskEE9push_backEPS1_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon22CWelsNonDuplicatedListINS_9IWelsTaskEE9push_backEPS1_\"](...args);\n}\n\n__ZN10WelsCommon22CWelsNonDuplicatedListINS_9IWelsTaskEE9push_backEPS1_.stub = true;\n\nfunction __ZN10WelsCommon25g_kiCabacGlobalContextIdxE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon25g_kiCabacGlobalContextIdxE\"] || wasmImports[\"_ZN10WelsCommon25g_kiCabacGlobalContextIdxE\"].stub) abort(\"external symbol '_ZN10WelsCommon25g_kiCabacGlobalContextIdxE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon25g_kiCabacGlobalContextIdxE\"](...args);\n}\n\n__ZN10WelsCommon25g_kiCabacGlobalContextIdxE.stub = true;\n\nfunction __ZN10WelsCommon25g_kuiCache48CountScan4IdxE(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon25g_kuiCache48CountScan4IdxE\"] || wasmImports[\"_ZN10WelsCommon25g_kuiCache48CountScan4IdxE\"].stub) abort(\"external symbol '_ZN10WelsCommon25g_kuiCache48CountScan4IdxE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon25g_kuiCache48CountScan4IdxE\"](...args);\n}\n\n__ZN10WelsCommon25g_kuiCache48CountScan4IdxE.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE10ExpandListEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE10ExpandListEv\"] || wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE10ExpandListEv\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE10ExpandListEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE10ExpandListEv\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE10ExpandListEv.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE11InitStorageEPNS_5SNodeIS2_EEi(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE11InitStorageEPNS_5SNodeIS2_EEi\"] || wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE11InitStorageEPNS_5SNodeIS2_EEi\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE11InitStorageEPNS_5SNodeIS2_EEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE11InitStorageEPNS_5SNodeIS2_EEi\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE11InitStorageEPNS_5SNodeIS2_EEi.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE12ResetStorageEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE12ResetStorageEv\"] || wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE12ResetStorageEv\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE12ResetStorageEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE12ResetStorageEv\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE12ResetStorageEv.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE7getNodeEi(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE7getNodeEi\"] || wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE7getNodeEi\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE7getNodeEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE7getNodeEi\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE7getNodeEi.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE8findNodeEPS2_(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE8findNodeEPS2_\"] || wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE8findNodeEPS2_\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE8findNodeEPS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE8findNodeEPS2_\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE8findNodeEPS2_.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9pop_frontEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9pop_frontEv\"] || wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9pop_frontEv\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9pop_frontEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9pop_frontEv\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9pop_frontEv.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_\"] || wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEED2Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEED2Ev\"] || wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEED2Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEED2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEED2Ev\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEED2Ev.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE10ExpandListEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE10ExpandListEv\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE10ExpandListEv\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE10ExpandListEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE10ExpandListEv\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE10ExpandListEv.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE11InitStorageEPNS_5SNodeIS1_EEi(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE11InitStorageEPNS_5SNodeIS1_EEi\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE11InitStorageEPNS_5SNodeIS1_EEi\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE11InitStorageEPNS_5SNodeIS1_EEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE11InitStorageEPNS_5SNodeIS1_EEi\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE11InitStorageEPNS_5SNodeIS1_EEi.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE12ResetStorageEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE12ResetStorageEv\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE12ResetStorageEv\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE12ResetStorageEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE12ResetStorageEv\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE12ResetStorageEv.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE5eraseEPS1_(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE5eraseEPS1_\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE5eraseEPS1_\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE5eraseEPS1_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE5eraseEPS1_\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE5eraseEPS1_.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE8findNodeEPS1_(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE8findNodeEPS1_\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE8findNodeEPS1_\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE8findNodeEPS1_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE8findNodeEPS1_\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE8findNodeEPS1_.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9pop_frontEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9pop_frontEv\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9pop_frontEv\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9pop_frontEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9pop_frontEv\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9pop_frontEv.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9push_backEPS1_(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9push_backEPS1_\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9push_backEPS1_\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9push_backEPS1_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9push_backEPS1_\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9push_backEPS1_.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEED2Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEED2Ev\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEED2Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEED2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEED2Ev\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEED2Ev.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_9IWelsTaskEE10ExpandListEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE10ExpandListEv\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE10ExpandListEv\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE10ExpandListEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE10ExpandListEv\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_9IWelsTaskEE10ExpandListEv.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_9IWelsTaskEE11InitStorageEPNS_5SNodeIS1_EEi(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE11InitStorageEPNS_5SNodeIS1_EEi\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE11InitStorageEPNS_5SNodeIS1_EEi\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE11InitStorageEPNS_5SNodeIS1_EEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE11InitStorageEPNS_5SNodeIS1_EEi\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_9IWelsTaskEE11InitStorageEPNS_5SNodeIS1_EEi.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_9IWelsTaskEE12ResetStorageEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE12ResetStorageEv\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE12ResetStorageEv\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE12ResetStorageEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE12ResetStorageEv\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_9IWelsTaskEE12ResetStorageEv.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_9IWelsTaskEE8findNodeEPS1_(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE8findNodeEPS1_\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE8findNodeEPS1_\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE8findNodeEPS1_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE8findNodeEPS1_\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_9IWelsTaskEE8findNodeEPS1_.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9pop_frontEv(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9pop_frontEv\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9pop_frontEv\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9pop_frontEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9pop_frontEv\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9pop_frontEv.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9push_backEPS1_(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9push_backEPS1_\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9push_backEPS1_\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9push_backEPS1_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9push_backEPS1_\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9push_backEPS1_.stub = true;\n\nfunction __ZN10WelsCommon9CWelsListINS_9IWelsTaskEED2Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEED2Ev\"] || wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEED2Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsListINS_9IWelsTaskEED2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsListINS_9IWelsTaskEED2Ev\"](...args);\n}\n\n__ZN10WelsCommon9CWelsListINS_9IWelsTaskEED2Ev.stub = true;\n\nfunction __ZN10WelsCommon9CWelsLockC2Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsLockC2Ev\"] || wasmImports[\"_ZN10WelsCommon9CWelsLockC2Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsLockC2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsLockC2Ev\"](...args);\n}\n\n__ZN10WelsCommon9CWelsLockC2Ev.stub = true;\n\nfunction __ZN10WelsCommon9CWelsLockD0Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsLockD0Ev\"] || wasmImports[\"_ZN10WelsCommon9CWelsLockD0Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsLockD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsLockD0Ev\"](...args);\n}\n\n__ZN10WelsCommon9CWelsLockD0Ev.stub = true;\n\nfunction __ZN10WelsCommon9CWelsLockD2Ev(...args) {\n  if (!wasmImports[\"_ZN10WelsCommon9CWelsLockD2Ev\"] || wasmImports[\"_ZN10WelsCommon9CWelsLockD2Ev\"].stub) abort(\"external symbol '_ZN10WelsCommon9CWelsLockD2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN10WelsCommon9CWelsLockD2Ev\"](...args);\n}\n\n__ZN10WelsCommon9CWelsLockD2Ev.stub = true;\n\nfunction __ZN14welsCodecTrace16StaticCodecTraceEPviPKcS0_(...args) {\n  if (!wasmImports[\"_ZN14welsCodecTrace16StaticCodecTraceEPviPKcS0_\"] || wasmImports[\"_ZN14welsCodecTrace16StaticCodecTraceEPviPKcS0_\"].stub) abort(\"external symbol '_ZN14welsCodecTrace16StaticCodecTraceEPviPKcS0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN14welsCodecTrace16StaticCodecTraceEPviPKcS0_\"](...args);\n}\n\n__ZN14welsCodecTrace16StaticCodecTraceEPviPKcS0_.stub = true;\n\nfunction __ZN6WelsVP12CVpFrameWork14SpecialFeatureEiPvS1_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP12CVpFrameWork14SpecialFeatureEiPvS1_\"] || wasmImports[\"_ZN6WelsVP12CVpFrameWork14SpecialFeatureEiPvS1_\"].stub) abort(\"external symbol '_ZN6WelsVP12CVpFrameWork14SpecialFeatureEiPvS1_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP12CVpFrameWork14SpecialFeatureEiPvS1_\"](...args);\n}\n\n__ZN6WelsVP12CVpFrameWork14SpecialFeatureEiPvS1_.stub = true;\n\nfunction __ZN6WelsVP12CVpFrameWork3GetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP12CVpFrameWork3GetEiPv\"] || wasmImports[\"_ZN6WelsVP12CVpFrameWork3GetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP12CVpFrameWork3GetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP12CVpFrameWork3GetEiPv\"](...args);\n}\n\n__ZN6WelsVP12CVpFrameWork3GetEiPv.stub = true;\n\nfunction __ZN6WelsVP12CVpFrameWork3SetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP12CVpFrameWork3SetEiPv\"] || wasmImports[\"_ZN6WelsVP12CVpFrameWork3SetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP12CVpFrameWork3SetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP12CVpFrameWork3SetEiPv\"](...args);\n}\n\n__ZN6WelsVP12CVpFrameWork3SetEiPv.stub = true;\n\nfunction __ZN6WelsVP12CVpFrameWork4InitEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP12CVpFrameWork4InitEiPv\"] || wasmImports[\"_ZN6WelsVP12CVpFrameWork4InitEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP12CVpFrameWork4InitEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP12CVpFrameWork4InitEiPv\"](...args);\n}\n\n__ZN6WelsVP12CVpFrameWork4InitEiPv.stub = true;\n\nfunction __ZN6WelsVP12CVpFrameWork5FlushEi(...args) {\n  if (!wasmImports[\"_ZN6WelsVP12CVpFrameWork5FlushEi\"] || wasmImports[\"_ZN6WelsVP12CVpFrameWork5FlushEi\"].stub) abort(\"external symbol '_ZN6WelsVP12CVpFrameWork5FlushEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP12CVpFrameWork5FlushEi\"](...args);\n}\n\n__ZN6WelsVP12CVpFrameWork5FlushEi.stub = true;\n\nfunction __ZN6WelsVP12CVpFrameWork6UninitEi(...args) {\n  if (!wasmImports[\"_ZN6WelsVP12CVpFrameWork6UninitEi\"] || wasmImports[\"_ZN6WelsVP12CVpFrameWork6UninitEi\"].stub) abort(\"external symbol '_ZN6WelsVP12CVpFrameWork6UninitEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP12CVpFrameWork6UninitEi\"](...args);\n}\n\n__ZN6WelsVP12CVpFrameWork6UninitEi.stub = true;\n\nfunction __ZN6WelsVP12CVpFrameWork7ProcessEiP7SPixMapS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP12CVpFrameWork7ProcessEiP7SPixMapS2_\"] || wasmImports[\"_ZN6WelsVP12CVpFrameWork7ProcessEiP7SPixMapS2_\"].stub) abort(\"external symbol '_ZN6WelsVP12CVpFrameWork7ProcessEiP7SPixMapS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP12CVpFrameWork7ProcessEiP7SPixMapS2_\"](...args);\n}\n\n__ZN6WelsVP12CVpFrameWork7ProcessEiP7SPixMapS2_.stub = true;\n\nfunction __ZN6WelsVP12CVpFrameWorkD0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP12CVpFrameWorkD0Ev\"] || wasmImports[\"_ZN6WelsVP12CVpFrameWorkD0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP12CVpFrameWorkD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP12CVpFrameWorkD0Ev\"](...args);\n}\n\n__ZN6WelsVP12CVpFrameWorkD0Ev.stub = true;\n\nfunction __ZN6WelsVP12CVpFrameWorkD1Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP12CVpFrameWorkD1Ev\"] || wasmImports[\"_ZN6WelsVP12CVpFrameWorkD1Ev\"].stub) abort(\"external symbol '_ZN6WelsVP12CVpFrameWorkD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP12CVpFrameWorkD1Ev\"](...args);\n}\n\n__ZN6WelsVP12CVpFrameWorkD1Ev.stub = true;\n\nfunction __ZN6WelsVP12GomSampleSadEPjPiS1_h(...args) {\n  if (!wasmImports[\"_ZN6WelsVP12GomSampleSadEPjPiS1_h\"] || wasmImports[\"_ZN6WelsVP12GomSampleSadEPjPiS1_h\"].stub) abort(\"external symbol '_ZN6WelsVP12GomSampleSadEPjPiS1_h' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP12GomSampleSadEPjPiS1_h\"](...args);\n}\n\n__ZN6WelsVP12GomSampleSadEPjPiS1_h.stub = true;\n\nfunction __ZN6WelsVP12VAACalcSad_cEPKhS1_iiiPiS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP12VAACalcSad_cEPKhS1_iiiPiS2_\"] || wasmImports[\"_ZN6WelsVP12VAACalcSad_cEPKhS1_iiiPiS2_\"].stub) abort(\"external symbol '_ZN6WelsVP12VAACalcSad_cEPKhS1_iiiPiS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP12VAACalcSad_cEPKhS1_iiiPiS2_\"](...args);\n}\n\n__ZN6WelsVP12VAACalcSad_cEPKhS1_iiiPiS2_.stub = true;\n\nfunction __ZN6WelsVP13CDownsampling7ProcessEiP7SPixMapS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP13CDownsampling7ProcessEiP7SPixMapS2_\"] || wasmImports[\"_ZN6WelsVP13CDownsampling7ProcessEiP7SPixMapS2_\"].stub) abort(\"external symbol '_ZN6WelsVP13CDownsampling7ProcessEiP7SPixMapS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP13CDownsampling7ProcessEiP7SPixMapS2_\"](...args);\n}\n\n__ZN6WelsVP13CDownsampling7ProcessEiP7SPixMapS2_.stub = true;\n\nfunction __ZN6WelsVP13CDownsamplingD0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP13CDownsamplingD0Ev\"] || wasmImports[\"_ZN6WelsVP13CDownsamplingD0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP13CDownsamplingD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP13CDownsamplingD0Ev\"](...args);\n}\n\n__ZN6WelsVP13CDownsamplingD0Ev.stub = true;\n\nfunction __ZN6WelsVP13CDownsamplingD1Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP13CDownsamplingD1Ev\"] || wasmImports[\"_ZN6WelsVP13CDownsamplingD1Ev\"].stub) abort(\"external symbol '_ZN6WelsVP13CDownsamplingD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP13CDownsamplingD1Ev\"](...args);\n}\n\n__ZN6WelsVP13CDownsamplingD1Ev.stub = true;\n\nfunction __ZN6WelsVP14CImageRotating7ProcessEiP7SPixMapS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP14CImageRotating7ProcessEiP7SPixMapS2_\"] || wasmImports[\"_ZN6WelsVP14CImageRotating7ProcessEiP7SPixMapS2_\"].stub) abort(\"external symbol '_ZN6WelsVP14CImageRotating7ProcessEiP7SPixMapS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP14CImageRotating7ProcessEiP7SPixMapS2_\"](...args);\n}\n\n__ZN6WelsVP14CImageRotating7ProcessEiP7SPixMapS2_.stub = true;\n\nfunction __ZN6WelsVP14CImageRotatingD0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP14CImageRotatingD0Ev\"] || wasmImports[\"_ZN6WelsVP14CImageRotatingD0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP14CImageRotatingD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP14CImageRotatingD0Ev\"](...args);\n}\n\n__ZN6WelsVP14CImageRotatingD0Ev.stub = true;\n\nfunction __ZN6WelsVP14CImageRotatingD1Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP14CImageRotatingD1Ev\"] || wasmImports[\"_ZN6WelsVP14CImageRotatingD1Ev\"].stub) abort(\"external symbol '_ZN6WelsVP14CImageRotatingD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP14CImageRotatingD1Ev\"](...args);\n}\n\n__ZN6WelsVP14CImageRotatingD1Ev.stub = true;\n\nfunction __ZN6WelsVP14SpecialFeatureEPviS0_S0_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP14SpecialFeatureEPviS0_S0_\"] || wasmImports[\"_ZN6WelsVP14SpecialFeatureEPviS0_S0_\"].stub) abort(\"external symbol '_ZN6WelsVP14SpecialFeatureEPviS0_S0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP14SpecialFeatureEPviS0_S0_\"](...args);\n}\n\n__ZN6WelsVP14SpecialFeatureEPviS0_S0_.stub = true;\n\nfunction __ZN6WelsVP15CVAACalculation3SetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP15CVAACalculation3SetEiPv\"] || wasmImports[\"_ZN6WelsVP15CVAACalculation3SetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP15CVAACalculation3SetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP15CVAACalculation3SetEiPv\"](...args);\n}\n\n__ZN6WelsVP15CVAACalculation3SetEiPv.stub = true;\n\nfunction __ZN6WelsVP15CVAACalculation7ProcessEiP7SPixMapS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP15CVAACalculation7ProcessEiP7SPixMapS2_\"] || wasmImports[\"_ZN6WelsVP15CVAACalculation7ProcessEiP7SPixMapS2_\"].stub) abort(\"external symbol '_ZN6WelsVP15CVAACalculation7ProcessEiP7SPixMapS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP15CVAACalculation7ProcessEiP7SPixMapS2_\"](...args);\n}\n\n__ZN6WelsVP15CVAACalculation7ProcessEiP7SPixMapS2_.stub = true;\n\nfunction __ZN6WelsVP15CVAACalculationD0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP15CVAACalculationD0Ev\"] || wasmImports[\"_ZN6WelsVP15CVAACalculationD0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP15CVAACalculationD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP15CVAACalculationD0Ev\"](...args);\n}\n\n__ZN6WelsVP15CVAACalculationD0Ev.stub = true;\n\nfunction __ZN6WelsVP15CVAACalculationD1Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP15CVAACalculationD1Ev\"] || wasmImports[\"_ZN6WelsVP15CVAACalculationD1Ev\"].stub) abort(\"external symbol '_ZN6WelsVP15CVAACalculationD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP15CVAACalculationD1Ev\"](...args);\n}\n\n__ZN6WelsVP15CVAACalculationD1Ev.stub = true;\n\nfunction __ZN6WelsVP15VAACalcSadBgd_cEPKhS1_iiiPiS2_S2_Ph(...args) {\n  if (!wasmImports[\"_ZN6WelsVP15VAACalcSadBgd_cEPKhS1_iiiPiS2_S2_Ph\"] || wasmImports[\"_ZN6WelsVP15VAACalcSadBgd_cEPKhS1_iiiPiS2_S2_Ph\"].stub) abort(\"external symbol '_ZN6WelsVP15VAACalcSadBgd_cEPKhS1_iiiPiS2_S2_Ph' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP15VAACalcSadBgd_cEPKhS1_iiiPiS2_S2_Ph\"](...args);\n}\n\n__ZN6WelsVP15VAACalcSadBgd_cEPKhS1_iiiPiS2_S2_Ph.stub = true;\n\nfunction __ZN6WelsVP15VAACalcSadSsd_cEPKhS1_iiiPiS2_S2_S2_S2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP15VAACalcSadSsd_cEPKhS1_iiiPiS2_S2_S2_S2_\"] || wasmImports[\"_ZN6WelsVP15VAACalcSadSsd_cEPKhS1_iiiPiS2_S2_S2_S2_\"].stub) abort(\"external symbol '_ZN6WelsVP15VAACalcSadSsd_cEPKhS1_iiiPiS2_S2_S2_S2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP15VAACalcSadSsd_cEPKhS1_iiiPiS2_S2_S2_S2_\"](...args);\n}\n\n__ZN6WelsVP15VAACalcSadSsd_cEPKhS1_iiiPiS2_S2_S2_S2_.stub = true;\n\nfunction __ZN6WelsVP15VAACalcSadVar_cEPKhS1_iiiPiS2_S2_S2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP15VAACalcSadVar_cEPKhS1_iiiPiS2_S2_S2_\"] || wasmImports[\"_ZN6WelsVP15VAACalcSadVar_cEPKhS1_iiiPiS2_S2_S2_\"].stub) abort(\"external symbol '_ZN6WelsVP15VAACalcSadVar_cEPKhS1_iiiPiS2_S2_S2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP15VAACalcSadVar_cEPKhS1_iiiPiS2_S2_S2_\"](...args);\n}\n\n__ZN6WelsVP15VAACalcSadVar_cEPKhS1_iiiPiS2_S2_S2_.stub = true;\n\nfunction __ZN6WelsVP16CScrollDetection3GetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP16CScrollDetection3GetEiPv\"] || wasmImports[\"_ZN6WelsVP16CScrollDetection3GetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP16CScrollDetection3GetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP16CScrollDetection3GetEiPv\"](...args);\n}\n\n__ZN6WelsVP16CScrollDetection3GetEiPv.stub = true;\n\nfunction __ZN6WelsVP16CScrollDetection3SetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP16CScrollDetection3SetEiPv\"] || wasmImports[\"_ZN6WelsVP16CScrollDetection3SetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP16CScrollDetection3SetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP16CScrollDetection3SetEiPv\"](...args);\n}\n\n__ZN6WelsVP16CScrollDetection3SetEiPv.stub = true;\n\nfunction __ZN6WelsVP16CScrollDetection7ProcessEiP7SPixMapS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP16CScrollDetection7ProcessEiP7SPixMapS2_\"] || wasmImports[\"_ZN6WelsVP16CScrollDetection7ProcessEiP7SPixMapS2_\"].stub) abort(\"external symbol '_ZN6WelsVP16CScrollDetection7ProcessEiP7SPixMapS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP16CScrollDetection7ProcessEiP7SPixMapS2_\"](...args);\n}\n\n__ZN6WelsVP16CScrollDetection7ProcessEiP7SPixMapS2_.stub = true;\n\nfunction __ZN6WelsVP16CScrollDetectionD0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP16CScrollDetectionD0Ev\"] || wasmImports[\"_ZN6WelsVP16CScrollDetectionD0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP16CScrollDetectionD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP16CScrollDetectionD0Ev\"](...args);\n}\n\n__ZN6WelsVP16CScrollDetectionD0Ev.stub = true;\n\nfunction __ZN6WelsVP16ImageRotate90D_cEPhjjjS0_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP16ImageRotate90D_cEPhjjjS0_\"] || wasmImports[\"_ZN6WelsVP16ImageRotate90D_cEPhjjjS0_\"].stub) abort(\"external symbol '_ZN6WelsVP16ImageRotate90D_cEPhjjjS0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP16ImageRotate90D_cEPhjjjS0_\"](...args);\n}\n\n__ZN6WelsVP16ImageRotate90D_cEPhjjjS0_.stub = true;\n\nfunction __ZN6WelsVP17ImageRotate180D_cEPhjjjS0_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP17ImageRotate180D_cEPhjjjS0_\"] || wasmImports[\"_ZN6WelsVP17ImageRotate180D_cEPhjjjS0_\"].stub) abort(\"external symbol '_ZN6WelsVP17ImageRotate180D_cEPhjjjS0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP17ImageRotate180D_cEPhjjjS0_\"](...args);\n}\n\n__ZN6WelsVP17ImageRotate180D_cEPhjjjS0_.stub = true;\n\nfunction __ZN6WelsVP17ImageRotate270D_cEPhjjjS0_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP17ImageRotate270D_cEPhjjjS0_\"] || wasmImports[\"_ZN6WelsVP17ImageRotate270D_cEPhjjjS0_\"].stub) abort(\"external symbol '_ZN6WelsVP17ImageRotate270D_cEPhjjjS0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP17ImageRotate270D_cEPhjjjS0_\"](...args);\n}\n\n__ZN6WelsVP17ImageRotate270D_cEPhjjjS0_.stub = true;\n\nfunction __ZN6WelsVP18VAACalcSadSsdBgd_cEPKhS1_iiiPiS2_S2_S2_S2_S2_Ph(...args) {\n  if (!wasmImports[\"_ZN6WelsVP18VAACalcSadSsdBgd_cEPKhS1_iiiPiS2_S2_S2_S2_S2_Ph\"] || wasmImports[\"_ZN6WelsVP18VAACalcSadSsdBgd_cEPKhS1_iiiPiS2_S2_S2_S2_S2_Ph\"].stub) abort(\"external symbol '_ZN6WelsVP18VAACalcSadSsdBgd_cEPKhS1_iiiPiS2_S2_S2_S2_S2_Ph' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP18VAACalcSadSsdBgd_cEPKhS1_iiiPiS2_S2_S2_S2_S2_Ph\"](...args);\n}\n\n__ZN6WelsVP18VAACalcSadSsdBgd_cEPKhS1_iiiPiS2_S2_S2_S2_S2_Ph.stub = true;\n\nfunction __ZN6WelsVP19CComplexityAnalysis3GetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP19CComplexityAnalysis3GetEiPv\"] || wasmImports[\"_ZN6WelsVP19CComplexityAnalysis3GetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP19CComplexityAnalysis3GetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP19CComplexityAnalysis3GetEiPv\"](...args);\n}\n\n__ZN6WelsVP19CComplexityAnalysis3GetEiPv.stub = true;\n\nfunction __ZN6WelsVP19CComplexityAnalysis3SetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP19CComplexityAnalysis3SetEiPv\"] || wasmImports[\"_ZN6WelsVP19CComplexityAnalysis3SetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP19CComplexityAnalysis3SetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP19CComplexityAnalysis3SetEiPv\"](...args);\n}\n\n__ZN6WelsVP19CComplexityAnalysis3SetEiPv.stub = true;\n\nfunction __ZN6WelsVP19CComplexityAnalysis7ProcessEiP7SPixMapS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP19CComplexityAnalysis7ProcessEiP7SPixMapS2_\"] || wasmImports[\"_ZN6WelsVP19CComplexityAnalysis7ProcessEiP7SPixMapS2_\"].stub) abort(\"external symbol '_ZN6WelsVP19CComplexityAnalysis7ProcessEiP7SPixMapS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP19CComplexityAnalysis7ProcessEiP7SPixMapS2_\"](...args);\n}\n\n__ZN6WelsVP19CComplexityAnalysis7ProcessEiP7SPixMapS2_.stub = true;\n\nfunction __ZN6WelsVP19CComplexityAnalysisD0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP19CComplexityAnalysisD0Ev\"] || wasmImports[\"_ZN6WelsVP19CComplexityAnalysisD0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP19CComplexityAnalysisD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP19CComplexityAnalysisD0Ev\"](...args);\n}\n\n__ZN6WelsVP19CComplexityAnalysisD0Ev.stub = true;\n\nfunction __ZN6WelsVP19CComplexityAnalysisD1Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP19CComplexityAnalysisD1Ev\"] || wasmImports[\"_ZN6WelsVP19CComplexityAnalysisD1Ev\"].stub) abort(\"external symbol '_ZN6WelsVP19CComplexityAnalysisD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP19CComplexityAnalysisD1Ev\"](...args);\n}\n\n__ZN6WelsVP19CComplexityAnalysisD1Ev.stub = true;\n\nfunction __ZN6WelsVP20CBackgroundDetection17BackgroundErosionEPNS_13SBackgroundOUEPS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP20CBackgroundDetection17BackgroundErosionEPNS_13SBackgroundOUEPS2_\"] || wasmImports[\"_ZN6WelsVP20CBackgroundDetection17BackgroundErosionEPNS_13SBackgroundOUEPS2_\"].stub) abort(\"external symbol '_ZN6WelsVP20CBackgroundDetection17BackgroundErosionEPNS_13SBackgroundOUEPS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP20CBackgroundDetection17BackgroundErosionEPNS_13SBackgroundOUEPS2_\"](...args);\n}\n\n__ZN6WelsVP20CBackgroundDetection17BackgroundErosionEPNS_13SBackgroundOUEPS2_.stub = true;\n\nfunction __ZN6WelsVP20CBackgroundDetection18ForegroundDilationEPNS_13SBackgroundOUEPS2_PNS0_9vBGDParamEi(...args) {\n  if (!wasmImports[\"_ZN6WelsVP20CBackgroundDetection18ForegroundDilationEPNS_13SBackgroundOUEPS2_PNS0_9vBGDParamEi\"] || wasmImports[\"_ZN6WelsVP20CBackgroundDetection18ForegroundDilationEPNS_13SBackgroundOUEPS2_PNS0_9vBGDParamEi\"].stub) abort(\"external symbol '_ZN6WelsVP20CBackgroundDetection18ForegroundDilationEPNS_13SBackgroundOUEPS2_PNS0_9vBGDParamEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP20CBackgroundDetection18ForegroundDilationEPNS_13SBackgroundOUEPS2_PNS0_9vBGDParamEi\"](...args);\n}\n\n__ZN6WelsVP20CBackgroundDetection18ForegroundDilationEPNS_13SBackgroundOUEPS2_PNS0_9vBGDParamEi.stub = true;\n\nfunction __ZN6WelsVP20CBackgroundDetection21AllocateOUArrayMemoryEii(...args) {\n  if (!wasmImports[\"_ZN6WelsVP20CBackgroundDetection21AllocateOUArrayMemoryEii\"] || wasmImports[\"_ZN6WelsVP20CBackgroundDetection21AllocateOUArrayMemoryEii\"].stub) abort(\"external symbol '_ZN6WelsVP20CBackgroundDetection21AllocateOUArrayMemoryEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP20CBackgroundDetection21AllocateOUArrayMemoryEii\"](...args);\n}\n\n__ZN6WelsVP20CBackgroundDetection21AllocateOUArrayMemoryEii.stub = true;\n\nfunction __ZN6WelsVP20CBackgroundDetection22CalculateAsdChromaEdgeEPhS1_i(...args) {\n  if (!wasmImports[\"_ZN6WelsVP20CBackgroundDetection22CalculateAsdChromaEdgeEPhS1_i\"] || wasmImports[\"_ZN6WelsVP20CBackgroundDetection22CalculateAsdChromaEdgeEPhS1_i\"].stub) abort(\"external symbol '_ZN6WelsVP20CBackgroundDetection22CalculateAsdChromaEdgeEPhS1_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP20CBackgroundDetection22CalculateAsdChromaEdgeEPhS1_i\"](...args);\n}\n\n__ZN6WelsVP20CBackgroundDetection22CalculateAsdChromaEdgeEPhS1_i.stub = true;\n\nfunction __ZN6WelsVP20CBackgroundDetection22UpperOUForegroundCheckEPNS_13SBackgroundOUEPaii(...args) {\n  if (!wasmImports[\"_ZN6WelsVP20CBackgroundDetection22UpperOUForegroundCheckEPNS_13SBackgroundOUEPaii\"] || wasmImports[\"_ZN6WelsVP20CBackgroundDetection22UpperOUForegroundCheckEPNS_13SBackgroundOUEPaii\"].stub) abort(\"external symbol '_ZN6WelsVP20CBackgroundDetection22UpperOUForegroundCheckEPNS_13SBackgroundOUEPaii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP20CBackgroundDetection22UpperOUForegroundCheckEPNS_13SBackgroundOUEPaii\"](...args);\n}\n\n__ZN6WelsVP20CBackgroundDetection22UpperOUForegroundCheckEPNS_13SBackgroundOUEPaii.stub = true;\n\nfunction __ZN6WelsVP20CBackgroundDetection24ForegroundDilation23LumaEPNS_13SBackgroundOUEPS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP20CBackgroundDetection24ForegroundDilation23LumaEPNS_13SBackgroundOUEPS2_\"] || wasmImports[\"_ZN6WelsVP20CBackgroundDetection24ForegroundDilation23LumaEPNS_13SBackgroundOUEPS2_\"].stub) abort(\"external symbol '_ZN6WelsVP20CBackgroundDetection24ForegroundDilation23LumaEPNS_13SBackgroundOUEPS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP20CBackgroundDetection24ForegroundDilation23LumaEPNS_13SBackgroundOUEPS2_\"](...args);\n}\n\n__ZN6WelsVP20CBackgroundDetection24ForegroundDilation23LumaEPNS_13SBackgroundOUEPS2_.stub = true;\n\nfunction __ZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamE(...args) {\n  if (!wasmImports[\"_ZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamE\"] || wasmImports[\"_ZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamE\"].stub) abort(\"external symbol '_ZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamE\"](...args);\n}\n\n__ZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamE.stub = true;\n\nfunction __ZN6WelsVP20CBackgroundDetection3SetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP20CBackgroundDetection3SetEiPv\"] || wasmImports[\"_ZN6WelsVP20CBackgroundDetection3SetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP20CBackgroundDetection3SetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP20CBackgroundDetection3SetEiPv\"](...args);\n}\n\n__ZN6WelsVP20CBackgroundDetection3SetEiPv.stub = true;\n\nfunction __ZN6WelsVP20CBackgroundDetection7ProcessEiP7SPixMapS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP20CBackgroundDetection7ProcessEiP7SPixMapS2_\"] || wasmImports[\"_ZN6WelsVP20CBackgroundDetection7ProcessEiP7SPixMapS2_\"].stub) abort(\"external symbol '_ZN6WelsVP20CBackgroundDetection7ProcessEiP7SPixMapS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP20CBackgroundDetection7ProcessEiP7SPixMapS2_\"](...args);\n}\n\n__ZN6WelsVP20CBackgroundDetection7ProcessEiP7SPixMapS2_.stub = true;\n\nfunction __ZN6WelsVP20CBackgroundDetectionD0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP20CBackgroundDetectionD0Ev\"] || wasmImports[\"_ZN6WelsVP20CBackgroundDetectionD0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP20CBackgroundDetectionD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP20CBackgroundDetectionD0Ev\"](...args);\n}\n\n__ZN6WelsVP20CBackgroundDetectionD0Ev.stub = true;\n\nfunction __ZN6WelsVP20CBackgroundDetectionD1Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP20CBackgroundDetectionD1Ev\"] || wasmImports[\"_ZN6WelsVP20CBackgroundDetectionD1Ev\"].stub) abort(\"external symbol '_ZN6WelsVP20CBackgroundDetectionD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP20CBackgroundDetectionD1Ev\"](...args);\n}\n\n__ZN6WelsVP20CBackgroundDetectionD1Ev.stub = true;\n\nfunction __ZN6WelsVP21CAdaptiveQuantization3GetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CAdaptiveQuantization3GetEiPv\"] || wasmImports[\"_ZN6WelsVP21CAdaptiveQuantization3GetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP21CAdaptiveQuantization3GetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CAdaptiveQuantization3GetEiPv\"](...args);\n}\n\n__ZN6WelsVP21CAdaptiveQuantization3GetEiPv.stub = true;\n\nfunction __ZN6WelsVP21CAdaptiveQuantization3SetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CAdaptiveQuantization3SetEiPv\"] || wasmImports[\"_ZN6WelsVP21CAdaptiveQuantization3SetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP21CAdaptiveQuantization3SetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CAdaptiveQuantization3SetEiPv\"](...args);\n}\n\n__ZN6WelsVP21CAdaptiveQuantization3SetEiPv.stub = true;\n\nfunction __ZN6WelsVP21CAdaptiveQuantization7ProcessEiP7SPixMapS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CAdaptiveQuantization7ProcessEiP7SPixMapS2_\"] || wasmImports[\"_ZN6WelsVP21CAdaptiveQuantization7ProcessEiP7SPixMapS2_\"].stub) abort(\"external symbol '_ZN6WelsVP21CAdaptiveQuantization7ProcessEiP7SPixMapS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CAdaptiveQuantization7ProcessEiP7SPixMapS2_\"](...args);\n}\n\n__ZN6WelsVP21CAdaptiveQuantization7ProcessEiP7SPixMapS2_.stub = true;\n\nfunction __ZN6WelsVP21CAdaptiveQuantizationD0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CAdaptiveQuantizationD0Ev\"] || wasmImports[\"_ZN6WelsVP21CAdaptiveQuantizationD0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP21CAdaptiveQuantizationD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CAdaptiveQuantizationD0Ev\"](...args);\n}\n\n__ZN6WelsVP21CAdaptiveQuantizationD0Ev.stub = true;\n\nfunction __ZN6WelsVP21CAdaptiveQuantizationD1Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CAdaptiveQuantizationD1Ev\"] || wasmImports[\"_ZN6WelsVP21CAdaptiveQuantizationD1Ev\"].stub) abort(\"external symbol '_ZN6WelsVP21CAdaptiveQuantizationD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CAdaptiveQuantizationD1Ev\"](...args);\n}\n\n__ZN6WelsVP21CAdaptiveQuantizationD1Ev.stub = true;\n\nfunction __ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3GetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3GetEiPv\"] || wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3GetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3GetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3GetEiPv\"](...args);\n}\n\n__ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3GetEiPv.stub = true;\n\nfunction __ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3SetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3SetEiPv\"] || wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3SetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3SetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3SetEiPv\"](...args);\n}\n\n__ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3SetEiPv.stub = true;\n\nfunction __ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE7ProcessEiP7SPixMapS4_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE7ProcessEiP7SPixMapS4_\"] || wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE7ProcessEiP7SPixMapS4_\"].stub) abort(\"external symbol '_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE7ProcessEiP7SPixMapS4_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE7ProcessEiP7SPixMapS4_\"](...args);\n}\n\n__ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE7ProcessEiP7SPixMapS4_.stub = true;\n\nfunction __ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEC2E8EMethodsi(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEC2E8EMethodsi\"] || wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEC2E8EMethodsi\"].stub) abort(\"external symbol '_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEC2E8EMethodsi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEC2E8EMethodsi\"](...args);\n}\n\n__ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEC2E8EMethodsi.stub = true;\n\nfunction __ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED0Ev\"] || wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED0Ev\"](...args);\n}\n\n__ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED0Ev.stub = true;\n\nfunction __ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED2Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED2Ev\"] || wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED2Ev\"].stub) abort(\"external symbol '_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED2Ev\"](...args);\n}\n\n__ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED2Ev.stub = true;\n\nfunction __ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3GetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3GetEiPv\"] || wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3GetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3GetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3GetEiPv\"](...args);\n}\n\n__ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3GetEiPv.stub = true;\n\nfunction __ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3SetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3SetEiPv\"] || wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3SetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3SetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3SetEiPv\"](...args);\n}\n\n__ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3SetEiPv.stub = true;\n\nfunction __ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE7ProcessEiP7SPixMapS4_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE7ProcessEiP7SPixMapS4_\"] || wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE7ProcessEiP7SPixMapS4_\"].stub) abort(\"external symbol '_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE7ProcessEiP7SPixMapS4_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE7ProcessEiP7SPixMapS4_\"](...args);\n}\n\n__ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE7ProcessEiP7SPixMapS4_.stub = true;\n\nfunction __ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEC2E8EMethodsi(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEC2E8EMethodsi\"] || wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEC2E8EMethodsi\"].stub) abort(\"external symbol '_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEC2E8EMethodsi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEC2E8EMethodsi\"](...args);\n}\n\n__ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEC2E8EMethodsi.stub = true;\n\nfunction __ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED0Ev\"] || wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED0Ev\"](...args);\n}\n\n__ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED0Ev.stub = true;\n\nfunction __ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED2Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED2Ev\"] || wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED2Ev\"].stub) abort(\"external symbol '_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED2Ev\"](...args);\n}\n\n__ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED2Ev.stub = true;\n\nfunction __ZN6WelsVP21SampleVariance16x16_cEPhiS0_iP18SMotionTextureUnit(...args) {\n  if (!wasmImports[\"_ZN6WelsVP21SampleVariance16x16_cEPhiS0_iP18SMotionTextureUnit\"] || wasmImports[\"_ZN6WelsVP21SampleVariance16x16_cEPhiS0_iP18SMotionTextureUnit\"].stub) abort(\"external symbol '_ZN6WelsVP21SampleVariance16x16_cEPhiS0_iP18SMotionTextureUnit' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP21SampleVariance16x16_cEPhiS0_iP18SMotionTextureUnit\"](...args);\n}\n\n__ZN6WelsVP21SampleVariance16x16_cEPhiS0_iP18SMotionTextureUnit.stub = true;\n\nfunction __ZN6WelsVP22BilateralLumaFilter8_cEPhi(...args) {\n  if (!wasmImports[\"_ZN6WelsVP22BilateralLumaFilter8_cEPhi\"] || wasmImports[\"_ZN6WelsVP22BilateralLumaFilter8_cEPhi\"].stub) abort(\"external symbol '_ZN6WelsVP22BilateralLumaFilter8_cEPhi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP22BilateralLumaFilter8_cEPhi\"](...args);\n}\n\n__ZN6WelsVP22BilateralLumaFilter8_cEPhi.stub = true;\n\nfunction __ZN6WelsVP23WaverageChromaFilter8_cEPhi(...args) {\n  if (!wasmImports[\"_ZN6WelsVP23WaverageChromaFilter8_cEPhi\"] || wasmImports[\"_ZN6WelsVP23WaverageChromaFilter8_cEPhi\"].stub) abort(\"external symbol '_ZN6WelsVP23WaverageChromaFilter8_cEPhi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP23WaverageChromaFilter8_cEPhi\"](...args);\n}\n\n__ZN6WelsVP23WaverageChromaFilter8_cEPhi.stub = true;\n\nfunction __ZN6WelsVP25CComplexityAnalysisScreen3GetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreen3GetEiPv\"] || wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreen3GetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP25CComplexityAnalysisScreen3GetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreen3GetEiPv\"](...args);\n}\n\n__ZN6WelsVP25CComplexityAnalysisScreen3GetEiPv.stub = true;\n\nfunction __ZN6WelsVP25CComplexityAnalysisScreen3SetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreen3SetEiPv\"] || wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreen3SetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP25CComplexityAnalysisScreen3SetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreen3SetEiPv\"](...args);\n}\n\n__ZN6WelsVP25CComplexityAnalysisScreen3SetEiPv.stub = true;\n\nfunction __ZN6WelsVP25CComplexityAnalysisScreen7ProcessEiP7SPixMapS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreen7ProcessEiP7SPixMapS2_\"] || wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreen7ProcessEiP7SPixMapS2_\"].stub) abort(\"external symbol '_ZN6WelsVP25CComplexityAnalysisScreen7ProcessEiP7SPixMapS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreen7ProcessEiP7SPixMapS2_\"](...args);\n}\n\n__ZN6WelsVP25CComplexityAnalysisScreen7ProcessEiP7SPixMapS2_.stub = true;\n\nfunction __ZN6WelsVP25CComplexityAnalysisScreenD0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreenD0Ev\"] || wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreenD0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP25CComplexityAnalysisScreenD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreenD0Ev\"](...args);\n}\n\n__ZN6WelsVP25CComplexityAnalysisScreenD0Ev.stub = true;\n\nfunction __ZN6WelsVP25CComplexityAnalysisScreenD1Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreenD1Ev\"] || wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreenD1Ev\"].stub) abort(\"external symbol '_ZN6WelsVP25CComplexityAnalysisScreenD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP25CComplexityAnalysisScreenD1Ev\"](...args);\n}\n\n__ZN6WelsVP25CComplexityAnalysisScreenD1Ev.stub = true;\n\nfunction __ZN6WelsVP25CSceneChangeDetectorVideoD0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP25CSceneChangeDetectorVideoD0Ev\"] || wasmImports[\"_ZN6WelsVP25CSceneChangeDetectorVideoD0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP25CSceneChangeDetectorVideoD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP25CSceneChangeDetectorVideoD0Ev\"](...args);\n}\n\n__ZN6WelsVP25CSceneChangeDetectorVideoD0Ev.stub = true;\n\nfunction __ZN6WelsVP25CSceneChangeDetectorVideoD2Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP25CSceneChangeDetectorVideoD2Ev\"] || wasmImports[\"_ZN6WelsVP25CSceneChangeDetectorVideoD2Ev\"].stub) abort(\"external symbol '_ZN6WelsVP25CSceneChangeDetectorVideoD2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP25CSceneChangeDetectorVideoD2Ev\"](...args);\n}\n\n__ZN6WelsVP25CSceneChangeDetectorVideoD2Ev.stub = true;\n\nfunction __ZN6WelsVP25CSceneChangeDetectorVideoclERNS_11SLocalParamE(...args) {\n  if (!wasmImports[\"_ZN6WelsVP25CSceneChangeDetectorVideoclERNS_11SLocalParamE\"] || wasmImports[\"_ZN6WelsVP25CSceneChangeDetectorVideoclERNS_11SLocalParamE\"].stub) abort(\"external symbol '_ZN6WelsVP25CSceneChangeDetectorVideoclERNS_11SLocalParamE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP25CSceneChangeDetectorVideoclERNS_11SLocalParamE\"](...args);\n}\n\n__ZN6WelsVP25CSceneChangeDetectorVideoclERNS_11SLocalParamE.stub = true;\n\nfunction __ZN6WelsVP26CSceneChangeDetectorScreenD0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP26CSceneChangeDetectorScreenD0Ev\"] || wasmImports[\"_ZN6WelsVP26CSceneChangeDetectorScreenD0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP26CSceneChangeDetectorScreenD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP26CSceneChangeDetectorScreenD0Ev\"](...args);\n}\n\n__ZN6WelsVP26CSceneChangeDetectorScreenD0Ev.stub = true;\n\nfunction __ZN6WelsVP26CSceneChangeDetectorScreenclERNS_11SLocalParamE(...args) {\n  if (!wasmImports[\"_ZN6WelsVP26CSceneChangeDetectorScreenclERNS_11SLocalParamE\"] || wasmImports[\"_ZN6WelsVP26CSceneChangeDetectorScreenclERNS_11SLocalParamE\"].stub) abort(\"external symbol '_ZN6WelsVP26CSceneChangeDetectorScreenclERNS_11SLocalParamE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP26CSceneChangeDetectorScreenclERNS_11SLocalParamE\"](...args);\n}\n\n__ZN6WelsVP26CSceneChangeDetectorScreenclERNS_11SLocalParamE.stub = true;\n\nfunction __ZN6WelsVP27DyadicBilinearDownsampler_cEPhiS0_iii(...args) {\n  if (!wasmImports[\"_ZN6WelsVP27DyadicBilinearDownsampler_cEPhiS0_iii\"] || wasmImports[\"_ZN6WelsVP27DyadicBilinearDownsampler_cEPhiS0_iii\"].stub) abort(\"external symbol '_ZN6WelsVP27DyadicBilinearDownsampler_cEPhiS0_iii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP27DyadicBilinearDownsampler_cEPhiS0_iii\"](...args);\n}\n\n__ZN6WelsVP27DyadicBilinearDownsampler_cEPhiS0_iii.stub = true;\n\nfunction __ZN6WelsVP28GomSampleSadExceptBackgroundEPjPiS1_h(...args) {\n  if (!wasmImports[\"_ZN6WelsVP28GomSampleSadExceptBackgroundEPjPiS1_h\"] || wasmImports[\"_ZN6WelsVP28GomSampleSadExceptBackgroundEPjPiS1_h\"].stub) abort(\"external symbol '_ZN6WelsVP28GomSampleSadExceptBackgroundEPjPiS1_h' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP28GomSampleSadExceptBackgroundEPjPiS1_h\"](...args);\n}\n\n__ZN6WelsVP28GomSampleSadExceptBackgroundEPjPiS1_h.stub = true;\n\nfunction __ZN6WelsVP32GeneralBilinearFastDownsampler_cEPhiiiS0_iii(...args) {\n  if (!wasmImports[\"_ZN6WelsVP32GeneralBilinearFastDownsampler_cEPhiiiS0_iii\"] || wasmImports[\"_ZN6WelsVP32GeneralBilinearFastDownsampler_cEPhiiiS0_iii\"].stub) abort(\"external symbol '_ZN6WelsVP32GeneralBilinearFastDownsampler_cEPhiiiS0_iii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP32GeneralBilinearFastDownsampler_cEPhiiiS0_iii\"](...args);\n}\n\n__ZN6WelsVP32GeneralBilinearFastDownsampler_cEPhiiiS0_iii.stub = true;\n\nfunction __ZN6WelsVP34DyadicBilinearQuarterDownsampler_cEPhiS0_iii(...args) {\n  if (!wasmImports[\"_ZN6WelsVP34DyadicBilinearQuarterDownsampler_cEPhiS0_iii\"] || wasmImports[\"_ZN6WelsVP34DyadicBilinearQuarterDownsampler_cEPhiS0_iii\"].stub) abort(\"external symbol '_ZN6WelsVP34DyadicBilinearQuarterDownsampler_cEPhiS0_iii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP34DyadicBilinearQuarterDownsampler_cEPhiS0_iii\"](...args);\n}\n\n__ZN6WelsVP34DyadicBilinearQuarterDownsampler_cEPhiS0_iii.stub = true;\n\nfunction __ZN6WelsVP35DyadicBilinearOneThirdDownsampler_cEPhiS0_iii(...args) {\n  if (!wasmImports[\"_ZN6WelsVP35DyadicBilinearOneThirdDownsampler_cEPhiS0_iii\"] || wasmImports[\"_ZN6WelsVP35DyadicBilinearOneThirdDownsampler_cEPhiS0_iii\"].stub) abort(\"external symbol '_ZN6WelsVP35DyadicBilinearOneThirdDownsampler_cEPhiS0_iii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP35DyadicBilinearOneThirdDownsampler_cEPhiS0_iii\"](...args);\n}\n\n__ZN6WelsVP35DyadicBilinearOneThirdDownsampler_cEPhiS0_iii.stub = true;\n\nfunction __ZN6WelsVP36GeneralBilinearAccurateDownsampler_cEPhiiiS0_iii(...args) {\n  if (!wasmImports[\"_ZN6WelsVP36GeneralBilinearAccurateDownsampler_cEPhiiiS0_iii\"] || wasmImports[\"_ZN6WelsVP36GeneralBilinearAccurateDownsampler_cEPhiiiS0_iii\"].stub) abort(\"external symbol '_ZN6WelsVP36GeneralBilinearAccurateDownsampler_cEPhiiiS0_iii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP36GeneralBilinearAccurateDownsampler_cEPhiiiS0_iii\"](...args);\n}\n\n__ZN6WelsVP36GeneralBilinearAccurateDownsampler_cEPhiiiS0_iii.stub = true;\n\nfunction __ZN6WelsVP3GetEPviS0_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP3GetEPviS0_\"] || wasmImports[\"_ZN6WelsVP3GetEPviS0_\"].stub) abort(\"external symbol '_ZN6WelsVP3GetEPviS0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP3GetEPviS0_\"](...args);\n}\n\n__ZN6WelsVP3GetEPviS0_.stub = true;\n\nfunction __ZN6WelsVP3SetEPviS0_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP3SetEPviS0_\"] || wasmImports[\"_ZN6WelsVP3SetEPviS0_\"].stub) abort(\"external symbol '_ZN6WelsVP3SetEPviS0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP3SetEPviS0_\"](...args);\n}\n\n__ZN6WelsVP3SetEPviS0_.stub = true;\n\nfunction __ZN6WelsVP4InitEPviS0_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP4InitEPviS0_\"] || wasmImports[\"_ZN6WelsVP4InitEPviS0_\"].stub) abort(\"external symbol '_ZN6WelsVP4InitEPviS0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP4InitEPviS0_\"](...args);\n}\n\n__ZN6WelsVP4InitEPviS0_.stub = true;\n\nfunction __ZN6WelsVP5FlushEPvi(...args) {\n  if (!wasmImports[\"_ZN6WelsVP5FlushEPvi\"] || wasmImports[\"_ZN6WelsVP5FlushEPvi\"].stub) abort(\"external symbol '_ZN6WelsVP5FlushEPvi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP5FlushEPvi\"](...args);\n}\n\n__ZN6WelsVP5FlushEPvi.stub = true;\n\nfunction __ZN6WelsVP6UninitEPvi(...args) {\n  if (!wasmImports[\"_ZN6WelsVP6UninitEPvi\"] || wasmImports[\"_ZN6WelsVP6UninitEPvi\"].stub) abort(\"external symbol '_ZN6WelsVP6UninitEPvi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP6UninitEPvi\"](...args);\n}\n\n__ZN6WelsVP6UninitEPvi.stub = true;\n\nfunction __ZN6WelsVP7ProcessEPviP7SPixMapS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP7ProcessEPviP7SPixMapS2_\"] || wasmImports[\"_ZN6WelsVP7ProcessEPviP7SPixMapS2_\"].stub) abort(\"external symbol '_ZN6WelsVP7ProcessEPviP7SPixMapS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP7ProcessEPviP7SPixMapS2_\"](...args);\n}\n\n__ZN6WelsVP7ProcessEPviP7SPixMapS2_.stub = true;\n\nfunction __ZN6WelsVP9CDenoiser7ProcessEiP7SPixMapS2_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP9CDenoiser7ProcessEiP7SPixMapS2_\"] || wasmImports[\"_ZN6WelsVP9CDenoiser7ProcessEiP7SPixMapS2_\"].stub) abort(\"external symbol '_ZN6WelsVP9CDenoiser7ProcessEiP7SPixMapS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP9CDenoiser7ProcessEiP7SPixMapS2_\"](...args);\n}\n\n__ZN6WelsVP9CDenoiser7ProcessEiP7SPixMapS2_.stub = true;\n\nfunction __ZN6WelsVP9CDenoiserD0Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP9CDenoiserD0Ev\"] || wasmImports[\"_ZN6WelsVP9CDenoiserD0Ev\"].stub) abort(\"external symbol '_ZN6WelsVP9CDenoiserD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP9CDenoiserD0Ev\"](...args);\n}\n\n__ZN6WelsVP9CDenoiserD0Ev.stub = true;\n\nfunction __ZN6WelsVP9CDenoiserD1Ev(...args) {\n  if (!wasmImports[\"_ZN6WelsVP9CDenoiserD1Ev\"] || wasmImports[\"_ZN6WelsVP9CDenoiserD1Ev\"].stub) abort(\"external symbol '_ZN6WelsVP9CDenoiserD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP9CDenoiserD1Ev\"](...args);\n}\n\n__ZN6WelsVP9CDenoiserD1Ev.stub = true;\n\nfunction __ZN6WelsVP9IStrategy14SpecialFeatureEiPvS1_(...args) {\n  if (!wasmImports[\"_ZN6WelsVP9IStrategy14SpecialFeatureEiPvS1_\"] || wasmImports[\"_ZN6WelsVP9IStrategy14SpecialFeatureEiPvS1_\"].stub) abort(\"external symbol '_ZN6WelsVP9IStrategy14SpecialFeatureEiPvS1_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP9IStrategy14SpecialFeatureEiPvS1_\"](...args);\n}\n\n__ZN6WelsVP9IStrategy14SpecialFeatureEiPvS1_.stub = true;\n\nfunction __ZN6WelsVP9IStrategy3GetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP9IStrategy3GetEiPv\"] || wasmImports[\"_ZN6WelsVP9IStrategy3GetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP9IStrategy3GetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP9IStrategy3GetEiPv\"](...args);\n}\n\n__ZN6WelsVP9IStrategy3GetEiPv.stub = true;\n\nfunction __ZN6WelsVP9IStrategy3SetEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP9IStrategy3SetEiPv\"] || wasmImports[\"_ZN6WelsVP9IStrategy3SetEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP9IStrategy3SetEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP9IStrategy3SetEiPv\"](...args);\n}\n\n__ZN6WelsVP9IStrategy3SetEiPv.stub = true;\n\nfunction __ZN6WelsVP9IStrategy4InitEiPv(...args) {\n  if (!wasmImports[\"_ZN6WelsVP9IStrategy4InitEiPv\"] || wasmImports[\"_ZN6WelsVP9IStrategy4InitEiPv\"].stub) abort(\"external symbol '_ZN6WelsVP9IStrategy4InitEiPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP9IStrategy4InitEiPv\"](...args);\n}\n\n__ZN6WelsVP9IStrategy4InitEiPv.stub = true;\n\nfunction __ZN6WelsVP9IStrategy5FlushEi(...args) {\n  if (!wasmImports[\"_ZN6WelsVP9IStrategy5FlushEi\"] || wasmImports[\"_ZN6WelsVP9IStrategy5FlushEi\"].stub) abort(\"external symbol '_ZN6WelsVP9IStrategy5FlushEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP9IStrategy5FlushEi\"](...args);\n}\n\n__ZN6WelsVP9IStrategy5FlushEi.stub = true;\n\nfunction __ZN6WelsVP9IStrategy6UninitEi(...args) {\n  if (!wasmImports[\"_ZN6WelsVP9IStrategy6UninitEi\"] || wasmImports[\"_ZN6WelsVP9IStrategy6UninitEi\"].stub) abort(\"external symbol '_ZN6WelsVP9IStrategy6UninitEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN6WelsVP9IStrategy6UninitEi\"](...args);\n}\n\n__ZN6WelsVP9IStrategy6UninitEi.stub = true;\n\nfunction __ZN7IWelsVPD2Ev(...args) {\n  if (!wasmImports[\"_ZN7IWelsVPD2Ev\"] || wasmImports[\"_ZN7IWelsVPD2Ev\"].stub) abort(\"external symbol '_ZN7IWelsVPD2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7IWelsVPD2Ev\"](...args);\n}\n\n__ZN7IWelsVPD2Ev.stub = true;\n\nfunction __ZN7WelsEnc10IsMbStaticEPi15EStaticBlockIdc(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc10IsMbStaticEPi15EStaticBlockIdc\"] || wasmImports[\"_ZN7WelsEnc10IsMbStaticEPi15EStaticBlockIdc\"].stub) abort(\"external symbol '_ZN7WelsEnc10IsMbStaticEPi15EStaticBlockIdc' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc10IsMbStaticEPi15EStaticBlockIdc\"](...args);\n}\n\n__ZN7WelsEnc10IsMbStaticEPi15EStaticBlockIdc.stub = true;\n\nfunction __ZN7WelsEnc10TagPicture8SetUnrefEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc10TagPicture8SetUnrefEv\"] || wasmImports[\"_ZN7WelsEnc10TagPicture8SetUnrefEv\"].stub) abort(\"external symbol '_ZN7WelsEnc10TagPicture8SetUnrefEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc10TagPicture8SetUnrefEv\"](...args);\n}\n\n__ZN7WelsEnc10TagPicture8SetUnrefEv.stub = true;\n\nfunction __ZN7WelsEnc11CheckBorderEiiiiii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc11CheckBorderEiiiiii\"] || wasmImports[\"_ZN7WelsEnc11CheckBorderEiiiiii\"].stub) abort(\"external symbol '_ZN7WelsEnc11CheckBorderEiiiiii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc11CheckBorderEiiiiii\"](...args);\n}\n\n__ZN7WelsEnc11CheckBorderEiiiiii.stub = true;\n\nfunction __ZN7WelsEnc11WelsDctT4_cEPsPhiS1_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc11WelsDctT4_cEPsPhiS1_i\"] || wasmImports[\"_ZN7WelsEnc11WelsDctT4_cEPsPhiS1_i\"].stub) abort(\"external symbol '_ZN7WelsEnc11WelsDctT4_cEPsPhiS1_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc11WelsDctT4_cEPsPhiS1_i\"](...args);\n}\n\n__ZN7WelsEnc11WelsDctT4_cEPsPhiS1_i.stub = true;\n\nfunction __ZN7WelsEnc11g_kiQuantMFE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc11g_kiQuantMFE\"] || wasmImports[\"_ZN7WelsEnc11g_kiQuantMFE\"].stub) abort(\"external symbol '_ZN7WelsEnc11g_kiQuantMFE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc11g_kiQuantMFE\"](...args);\n}\n\n__ZN7WelsEnc11g_kiQuantMFE.stub = true;\n\nfunction __ZN7WelsEnc12QStepx16ByQpE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc12QStepx16ByQpE\"] || wasmImports[\"_ZN7WelsEnc12QStepx16ByQpE\"].stub) abort(\"external symbol '_ZN7WelsEnc12QStepx16ByQpE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc12QStepx16ByQpE\"](...args);\n}\n\n__ZN7WelsEnc12QStepx16ByQpE.stub = true;\n\nfunction __ZN7WelsEnc12UpdateMbMv_cEPNS_9SMVUnitXYES0_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc12UpdateMbMv_cEPNS_9SMVUnitXYES0_\"] || wasmImports[\"_ZN7WelsEnc12UpdateMbMv_cEPNS_9SMVUnitXYES0_\"].stub) abort(\"external symbol '_ZN7WelsEnc12UpdateMbMv_cEPNS_9SMVUnitXYES0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc12UpdateMbMv_cEPNS_9SMVUnitXYES0_\"](...args);\n}\n\n__ZN7WelsEnc12UpdateMbMv_cEPNS_9SMVUnitXYES0_.stub = true;\n\nfunction __ZN7WelsEnc13CWelsBaseTaskD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc13CWelsBaseTaskD0Ev\"] || wasmImports[\"_ZN7WelsEnc13CWelsBaseTaskD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc13CWelsBaseTaskD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc13CWelsBaseTaskD0Ev\"](...args);\n}\n\n__ZN7WelsEnc13CWelsBaseTaskD0Ev.stub = true;\n\nfunction __ZN7WelsEnc13CWelsBaseTaskD1Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc13CWelsBaseTaskD1Ev\"] || wasmImports[\"_ZN7WelsEnc13CWelsBaseTaskD1Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc13CWelsBaseTaskD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc13CWelsBaseTaskD1Ev\"](...args);\n}\n\n__ZN7WelsEnc13CWelsBaseTaskD1Ev.stub = true;\n\nfunction __ZN7WelsEnc13GetBsPosCabacEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc13GetBsPosCabacEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc13GetBsPosCabacEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc13GetBsPosCabacEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc13GetBsPosCabacEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc13GetBsPosCabacEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc13GetBsPosCavlcEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc13GetBsPosCavlcEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc13GetBsPosCavlcEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc13GetBsPosCavlcEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc13GetBsPosCavlcEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc13GetBsPosCavlcEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc13WelsMdInterMbEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc13WelsMdInterMbEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE\"] || wasmImports[\"_ZN7WelsEnc13WelsMdInterMbEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE\"].stub) abort(\"external symbol '_ZN7WelsEnc13WelsMdInterMbEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc13WelsMdInterMbEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE\"](...args);\n}\n\n__ZN7WelsEnc13WelsMdInterMbEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE.stub = true;\n\nfunction __ZN7WelsEnc14WelsCodePSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc14WelsCodePSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc14WelsCodePSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc14WelsCodePSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc14WelsCodePSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc14WelsCodePSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc14WelsQuant4x4_cEPsPKsS2_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc14WelsQuant4x4_cEPsPKsS2_\"] || wasmImports[\"_ZN7WelsEnc14WelsQuant4x4_cEPsPKsS2_\"].stub) abort(\"external symbol '_ZN7WelsEnc14WelsQuant4x4_cEPsPKsS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc14WelsQuant4x4_cEPsPKsS2_\"](...args);\n}\n\n__ZN7WelsEnc14WelsQuant4x4_cEPsPKsS2_.stub = true;\n\nfunction __ZN7WelsEnc15CWelsPreProcessD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc15CWelsPreProcessD0Ev\"] || wasmImports[\"_ZN7WelsEnc15CWelsPreProcessD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc15CWelsPreProcessD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc15CWelsPreProcessD0Ev\"](...args);\n}\n\n__ZN7WelsEnc15CWelsPreProcessD0Ev.stub = true;\n\nfunction __ZN7WelsEnc15CWelsPreProcessD1Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc15CWelsPreProcessD1Ev\"] || wasmImports[\"_ZN7WelsEnc15CWelsPreProcessD1Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc15CWelsPreProcessD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc15CWelsPreProcessD1Ev\"](...args);\n}\n\n__ZN7WelsEnc15CWelsPreProcessD1Ev.stub = true;\n\nfunction __ZN7WelsEnc15CWelsPreProcessD2Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc15CWelsPreProcessD2Ev\"] || wasmImports[\"_ZN7WelsEnc15CWelsPreProcessD2Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc15CWelsPreProcessD2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc15CWelsPreProcessD2Ev\"](...args);\n}\n\n__ZN7WelsEnc15CWelsPreProcessD2Ev.stub = true;\n\nfunction __ZN7WelsEnc15JudgeScrollSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc15JudgeScrollSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE\"] || wasmImports[\"_ZN7WelsEnc15JudgeScrollSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE\"].stub) abort(\"external symbol '_ZN7WelsEnc15JudgeScrollSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc15JudgeScrollSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE\"](...args);\n}\n\n__ZN7WelsEnc15JudgeScrollSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE.stub = true;\n\nfunction __ZN7WelsEnc15JudgeStaticSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc15JudgeStaticSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE\"] || wasmImports[\"_ZN7WelsEnc15JudgeStaticSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE\"].stub) abort(\"external symbol '_ZN7WelsEnc15JudgeStaticSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc15JudgeStaticSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE\"](...args);\n}\n\n__ZN7WelsEnc15JudgeStaticSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE.stub = true;\n\nfunction __ZN7WelsEnc15UpdateFMESwitchEPNS_10TagDqLayerE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc15UpdateFMESwitchEPNS_10TagDqLayerE\"] || wasmImports[\"_ZN7WelsEnc15UpdateFMESwitchEPNS_10TagDqLayerE\"].stub) abort(\"external symbol '_ZN7WelsEnc15UpdateFMESwitchEPNS_10TagDqLayerE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc15UpdateFMESwitchEPNS_10TagDqLayerE\"](...args);\n}\n\n__ZN7WelsEnc15UpdateFMESwitchEPNS_10TagDqLayerE.stub = true;\n\nfunction __ZN7WelsEnc15WelsDctFourT4_cEPsPhiS1_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc15WelsDctFourT4_cEPsPhiS1_i\"] || wasmImports[\"_ZN7WelsEnc15WelsDctFourT4_cEPsPhiS1_i\"].stub) abort(\"external symbol '_ZN7WelsEnc15WelsDctFourT4_cEPsPhiS1_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc15WelsDctFourT4_cEPsPhiS1_i\"](...args);\n}\n\n__ZN7WelsEnc15WelsDctFourT4_cEPsPhiS1_i.stub = true;\n\nfunction __ZN7WelsEnc15WelsIDctT4Rec_cEPhiS0_iPs(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc15WelsIDctT4Rec_cEPhiS0_iPs\"] || wasmImports[\"_ZN7WelsEnc15WelsIDctT4Rec_cEPhiS0_iPs\"].stub) abort(\"external symbol '_ZN7WelsEnc15WelsIDctT4Rec_cEPhiS0_iPs' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc15WelsIDctT4Rec_cEPhiS0_iPs\"](...args);\n}\n\n__ZN7WelsEnc15WelsIDctT4Rec_cEPhiS0_iPs.stub = true;\n\nfunction __ZN7WelsEnc15WelsISliceMdEncEPNS_13TagWelsEncCtxEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc15WelsISliceMdEncEPNS_13TagWelsEncCtxEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc15WelsISliceMdEncEPNS_13TagWelsEncCtxEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc15WelsISliceMdEncEPNS_13TagWelsEncCtxEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc15WelsISliceMdEncEPNS_13TagWelsEncCtxEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc15WelsISliceMdEncEPNS_13TagWelsEncCtxEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc15WelsRcMbInitGomEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc15WelsRcMbInitGomEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc15WelsRcMbInitGomEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc15WelsRcMbInitGomEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc15WelsRcMbInitGomEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc15WelsRcMbInitGomEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc15WelsScan4x4Ac_cEPsS0_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc15WelsScan4x4Ac_cEPsS0_\"] || wasmImports[\"_ZN7WelsEnc15WelsScan4x4Ac_cEPsS0_\"].stub) abort(\"external symbol '_ZN7WelsEnc15WelsScan4x4Ac_cEPsS0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc15WelsScan4x4Ac_cEPsS0_\"](...args);\n}\n\n__ZN7WelsEnc15WelsScan4x4Ac_cEPsS0_.stub = true;\n\nfunction __ZN7WelsEnc15g_kiQpCostTableE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc15g_kiQpCostTableE\"] || wasmImports[\"_ZN7WelsEnc15g_kiQpCostTableE\"].stub) abort(\"external symbol '_ZN7WelsEnc15g_kiQpCostTableE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc15g_kiQpCostTableE\"](...args);\n}\n\n__ZN7WelsEnc15g_kiQpCostTableE.stub = true;\n\nfunction __ZN7WelsEnc16LineFullSearch_cEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPtiissb(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc16LineFullSearch_cEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPtiissb\"] || wasmImports[\"_ZN7WelsEnc16LineFullSearch_cEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPtiissb\"].stub) abort(\"external symbol '_ZN7WelsEnc16LineFullSearch_cEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPtiissb' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc16LineFullSearch_cEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPtiissb\"](...args);\n}\n\n__ZN7WelsEnc16LineFullSearch_cEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPtiissb.stub = true;\n\nfunction __ZN7WelsEnc16WelsDequant4x4_cEPsPKt(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc16WelsDequant4x4_cEPsPKt\"] || wasmImports[\"_ZN7WelsEnc16WelsDequant4x4_cEPsPKt\"].stub) abort(\"external symbol '_ZN7WelsEnc16WelsDequant4x4_cEPsPKt' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc16WelsDequant4x4_cEPsPKt\"](...args);\n}\n\n__ZN7WelsEnc16WelsDequant4x4_cEPsPKt.stub = true;\n\nfunction __ZN7WelsEnc16WelsQuant4x4Dc_cEPsss(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc16WelsQuant4x4Dc_cEPsss\"] || wasmImports[\"_ZN7WelsEnc16WelsQuant4x4Dc_cEPsss\"].stub) abort(\"external symbol '_ZN7WelsEnc16WelsQuant4x4Dc_cEPsss' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc16WelsQuant4x4Dc_cEPsss\"](...args);\n}\n\n__ZN7WelsEnc16WelsQuant4x4Dc_cEPsss.stub = true;\n\nfunction __ZN7WelsEnc16WelsSetMemZero_cEPvi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc16WelsSetMemZero_cEPvi\"] || wasmImports[\"_ZN7WelsEnc16WelsSetMemZero_cEPvi\"].stub) abort(\"external symbol '_ZN7WelsEnc16WelsSetMemZero_cEPvi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc16WelsSetMemZero_cEPvi\"](...args);\n}\n\n__ZN7WelsEnc16WelsSetMemZero_cEPvi.stub = true;\n\nfunction __ZN7WelsEnc16g_kiQuantInterFFE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc16g_kiQuantInterFFE\"] || wasmImports[\"_ZN7WelsEnc16g_kiQuantInterFFE\"].stub) abort(\"external symbol '_ZN7WelsEnc16g_kiQuantInterFFE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc16g_kiQuantInterFFE\"](...args);\n}\n\n__ZN7WelsEnc16g_kiQuantInterFFE.stub = true;\n\nfunction __ZN7WelsEnc17CalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc17CalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii\"] || wasmImports[\"_ZN7WelsEnc17CalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii\"].stub) abort(\"external symbol '_ZN7WelsEnc17CalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc17CalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii\"](...args);\n}\n\n__ZN7WelsEnc17CalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii.stub = true;\n\nfunction __ZN7WelsEnc17MeRefineQuarPixelEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_18TagMeRefinePointerEiiPNS_13TagQuarParamsEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc17MeRefineQuarPixelEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_18TagMeRefinePointerEiiPNS_13TagQuarParamsEi\"] || wasmImports[\"_ZN7WelsEnc17MeRefineQuarPixelEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_18TagMeRefinePointerEiiPNS_13TagQuarParamsEi\"].stub) abort(\"external symbol '_ZN7WelsEnc17MeRefineQuarPixelEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_18TagMeRefinePointerEiiPNS_13TagQuarParamsEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc17MeRefineQuarPixelEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_18TagMeRefinePointerEiiPNS_13TagQuarParamsEi\"](...args);\n}\n\n__ZN7WelsEnc17MeRefineQuarPixelEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_18TagMeRefinePointerEiiPNS_13TagQuarParamsEi.stub = true;\n\nfunction __ZN7WelsEnc17WelsDiamondSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc17WelsDiamondSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii\"] || wasmImports[\"_ZN7WelsEnc17WelsDiamondSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii\"].stub) abort(\"external symbol '_ZN7WelsEnc17WelsDiamondSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc17WelsDiamondSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii\"](...args);\n}\n\n__ZN7WelsEnc17WelsDiamondSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii.stub = true;\n\nfunction __ZN7WelsEnc17WelsScan4x4DcAc_cEPsS0_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc17WelsScan4x4DcAc_cEPsS0_\"] || wasmImports[\"_ZN7WelsEnc17WelsScan4x4DcAc_cEPsS0_\"].stub) abort(\"external symbol '_ZN7WelsEnc17WelsScan4x4DcAc_cEPsS0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc17WelsScan4x4DcAc_cEPsS0_\"](...args);\n}\n\n__ZN7WelsEnc17WelsScan4x4DcAc_cEPsS0_.stub = true;\n\nfunction __ZN7WelsEnc17g_kiMapModeI16x16E(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc17g_kiMapModeI16x16E\"] || wasmImports[\"_ZN7WelsEnc17g_kiMapModeI16x16E\"].stub) abort(\"external symbol '_ZN7WelsEnc17g_kiMapModeI16x16E' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc17g_kiMapModeI16x16E\"](...args);\n}\n\n__ZN7WelsEnc17g_kiMapModeI16x16E.stub = true;\n\nfunction __ZN7WelsEnc17g_kuiVlcRunBeforeE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc17g_kuiVlcRunBeforeE\"] || wasmImports[\"_ZN7WelsEnc17g_kuiVlcRunBeforeE\"].stub) abort(\"external symbol '_ZN7WelsEnc17g_kuiVlcRunBeforeE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc17g_kuiVlcRunBeforeE\"](...args);\n}\n\n__ZN7WelsEnc17g_kuiVlcRunBeforeE.stub = true;\n\nfunction __ZN7WelsEnc18CheckDirectionalMvEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18CheckDirectionalMvEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi\"] || wasmImports[\"_ZN7WelsEnc18CheckDirectionalMvEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi\"].stub) abort(\"external symbol '_ZN7WelsEnc18CheckDirectionalMvEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18CheckDirectionalMvEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi\"](...args);\n}\n\n__ZN7WelsEnc18CheckDirectionalMvEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi.stub = true;\n\nfunction __ZN7WelsEnc18DeblockingBSCalc_cEPNS_22TagWelsFuncPointerListEPNS_5TagMBEPA4_A4_hjiii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18DeblockingBSCalc_cEPNS_22TagWelsFuncPointerListEPNS_5TagMBEPA4_A4_hjiii\"] || wasmImports[\"_ZN7WelsEnc18DeblockingBSCalc_cEPNS_22TagWelsFuncPointerListEPNS_5TagMBEPA4_A4_hjiii\"].stub) abort(\"external symbol '_ZN7WelsEnc18DeblockingBSCalc_cEPNS_22TagWelsFuncPointerListEPNS_5TagMBEPA4_A4_hjiii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18DeblockingBSCalc_cEPNS_22TagWelsFuncPointerListEPNS_5TagMBEPA4_A4_hjiii\"](...args);\n}\n\n__ZN7WelsEnc18DeblockingBSCalc_cEPNS_22TagWelsFuncPointerListEPNS_5TagMBEPA4_A4_hjiii.stub = true;\n\nfunction __ZN7WelsEnc18IsMbScrolledStaticEPi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18IsMbScrolledStaticEPi\"] || wasmImports[\"_ZN7WelsEnc18IsMbScrolledStaticEPi\"].stub) abort(\"external symbol '_ZN7WelsEnc18IsMbScrolledStaticEPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18IsMbScrolledStaticEPi\"](...args);\n}\n\n__ZN7WelsEnc18IsMbScrolledStaticEPi.stub = true;\n\nfunction __ZN7WelsEnc18SetScrollingMvToMdEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18SetScrollingMvToMdEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE\"] || wasmImports[\"_ZN7WelsEnc18SetScrollingMvToMdEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE\"].stub) abort(\"external symbol '_ZN7WelsEnc18SetScrollingMvToMdEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18SetScrollingMvToMdEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE\"](...args);\n}\n\n__ZN7WelsEnc18SetScrollingMvToMdEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE.stub = true;\n\nfunction __ZN7WelsEnc18StashMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18StashMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi\"] || wasmImports[\"_ZN7WelsEnc18StashMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi\"].stub) abort(\"external symbol '_ZN7WelsEnc18StashMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18StashMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi\"](...args);\n}\n\n__ZN7WelsEnc18StashMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi.stub = true;\n\nfunction __ZN7WelsEnc18StashMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18StashMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi\"] || wasmImports[\"_ZN7WelsEnc18StashMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi\"].stub) abort(\"external symbol '_ZN7WelsEnc18StashMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18StashMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi\"](...args);\n}\n\n__ZN7WelsEnc18StashMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi.stub = true;\n\nfunction __ZN7WelsEnc18WelsHadamardT4Dc_cEPsS0_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18WelsHadamardT4Dc_cEPsS0_\"] || wasmImports[\"_ZN7WelsEnc18WelsHadamardT4Dc_cEPsS0_\"].stub) abort(\"external symbol '_ZN7WelsEnc18WelsHadamardT4Dc_cEPsS0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18WelsHadamardT4Dc_cEPsS0_\"](...args);\n}\n\n__ZN7WelsEnc18WelsHadamardT4Dc_cEPsS0_.stub = true;\n\nfunction __ZN7WelsEnc18WelsIChromaPredH_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18WelsIChromaPredH_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc18WelsIChromaPredH_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc18WelsIChromaPredH_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18WelsIChromaPredH_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc18WelsIChromaPredH_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc18WelsIChromaPredV_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18WelsIChromaPredV_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc18WelsIChromaPredV_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc18WelsIChromaPredV_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18WelsIChromaPredV_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc18WelsIChromaPredV_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc18WelsQuantFour4x4_cEPsPKsS2_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18WelsQuantFour4x4_cEPsPKsS2_\"] || wasmImports[\"_ZN7WelsEnc18WelsQuantFour4x4_cEPsPKsS2_\"].stub) abort(\"external symbol '_ZN7WelsEnc18WelsQuantFour4x4_cEPsPKsS2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18WelsQuantFour4x4_cEPsPKsS2_\"](...args);\n}\n\n__ZN7WelsEnc18WelsQuantFour4x4_cEPsPKsS2_.stub = true;\n\nfunction __ZN7WelsEnc18g_kuiEncNcMapTableE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18g_kuiEncNcMapTableE\"] || wasmImports[\"_ZN7WelsEnc18g_kuiEncNcMapTableE\"].stub) abort(\"external symbol '_ZN7WelsEnc18g_kuiEncNcMapTableE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18g_kuiEncNcMapTableE\"](...args);\n}\n\n__ZN7WelsEnc18g_kuiEncNcMapTableE.stub = true;\n\nfunction __ZN7WelsEnc18g_kuiSmb4AddrIn256E(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18g_kuiSmb4AddrIn256E\"] || wasmImports[\"_ZN7WelsEnc18g_kuiSmb4AddrIn256E\"].stub) abort(\"external symbol '_ZN7WelsEnc18g_kuiSmb4AddrIn256E' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18g_kuiSmb4AddrIn256E\"](...args);\n}\n\n__ZN7WelsEnc18g_kuiSmb4AddrIn256E.stub = true;\n\nfunction __ZN7WelsEnc18g_kuiVlcCoeffTokenE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18g_kuiVlcCoeffTokenE\"] || wasmImports[\"_ZN7WelsEnc18g_kuiVlcCoeffTokenE\"].stub) abort(\"external symbol '_ZN7WelsEnc18g_kuiVlcCoeffTokenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18g_kuiVlcCoeffTokenE\"](...args);\n}\n\n__ZN7WelsEnc18g_kuiVlcCoeffTokenE.stub = true;\n\nfunction __ZN7WelsEnc18g_kuiVlcTotalZerosE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc18g_kuiVlcTotalZerosE\"] || wasmImports[\"_ZN7WelsEnc18g_kuiVlcTotalZerosE\"].stub) abort(\"external symbol '_ZN7WelsEnc18g_kuiVlcTotalZerosE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc18g_kuiVlcTotalZerosE\"](...args);\n}\n\n__ZN7WelsEnc18g_kuiVlcTotalZerosE.stub = true;\n\nfunction __ZN7WelsEnc19CWelsH264SVCEncoder10InitializeEPK15TagEncParamBase(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder10InitializeEPK15TagEncParamBase\"] || wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder10InitializeEPK15TagEncParamBase\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsH264SVCEncoder10InitializeEPK15TagEncParamBase' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder10InitializeEPK15TagEncParamBase\"](...args);\n}\n\n__ZN7WelsEnc19CWelsH264SVCEncoder10InitializeEPK15TagEncParamBase.stub = true;\n\nfunction __ZN7WelsEnc19CWelsH264SVCEncoder11EncodeFrameEPK16Source_Picture_sP12SFrameBSInfo(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder11EncodeFrameEPK16Source_Picture_sP12SFrameBSInfo\"] || wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder11EncodeFrameEPK16Source_Picture_sP12SFrameBSInfo\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsH264SVCEncoder11EncodeFrameEPK16Source_Picture_sP12SFrameBSInfo' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder11EncodeFrameEPK16Source_Picture_sP12SFrameBSInfo\"](...args);\n}\n\n__ZN7WelsEnc19CWelsH264SVCEncoder11EncodeFrameEPK16Source_Picture_sP12SFrameBSInfo.stub = true;\n\nfunction __ZN7WelsEnc19CWelsH264SVCEncoder12UninitializeEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder12UninitializeEv\"] || wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder12UninitializeEv\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsH264SVCEncoder12UninitializeEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder12UninitializeEv\"](...args);\n}\n\n__ZN7WelsEnc19CWelsH264SVCEncoder12UninitializeEv.stub = true;\n\nfunction __ZN7WelsEnc19CWelsH264SVCEncoder13InitializeExtEPK14TagEncParamExt(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder13InitializeExtEPK14TagEncParamExt\"] || wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder13InitializeExtEPK14TagEncParamExt\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsH264SVCEncoder13InitializeExtEPK14TagEncParamExt' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder13InitializeExtEPK14TagEncParamExt\"](...args);\n}\n\n__ZN7WelsEnc19CWelsH264SVCEncoder13InitializeExtEPK14TagEncParamExt.stub = true;\n\nfunction __ZN7WelsEnc19CWelsH264SVCEncoder15ForceIntraFrameEbi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder15ForceIntraFrameEbi\"] || wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder15ForceIntraFrameEbi\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsH264SVCEncoder15ForceIntraFrameEbi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder15ForceIntraFrameEbi\"](...args);\n}\n\n__ZN7WelsEnc19CWelsH264SVCEncoder15ForceIntraFrameEbi.stub = true;\n\nfunction __ZN7WelsEnc19CWelsH264SVCEncoder16GetDefaultParamsEP14TagEncParamExt(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder16GetDefaultParamsEP14TagEncParamExt\"] || wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder16GetDefaultParamsEP14TagEncParamExt\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsH264SVCEncoder16GetDefaultParamsEP14TagEncParamExt' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder16GetDefaultParamsEP14TagEncParamExt\"](...args);\n}\n\n__ZN7WelsEnc19CWelsH264SVCEncoder16GetDefaultParamsEP14TagEncParamExt.stub = true;\n\nfunction __ZN7WelsEnc19CWelsH264SVCEncoder19EncodeFrameInternalEPK16Source_Picture_sP12SFrameBSInfo(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder19EncodeFrameInternalEPK16Source_Picture_sP12SFrameBSInfo\"] || wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder19EncodeFrameInternalEPK16Source_Picture_sP12SFrameBSInfo\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsH264SVCEncoder19EncodeFrameInternalEPK16Source_Picture_sP12SFrameBSInfo' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder19EncodeFrameInternalEPK16Source_Picture_sP12SFrameBSInfo\"](...args);\n}\n\n__ZN7WelsEnc19CWelsH264SVCEncoder19EncodeFrameInternalEPK16Source_Picture_sP12SFrameBSInfo.stub = true;\n\nfunction __ZN7WelsEnc19CWelsH264SVCEncoder19EncodeParameterSetsEP12SFrameBSInfo(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder19EncodeParameterSetsEP12SFrameBSInfo\"] || wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder19EncodeParameterSetsEP12SFrameBSInfo\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsH264SVCEncoder19EncodeParameterSetsEP12SFrameBSInfo' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder19EncodeParameterSetsEP12SFrameBSInfo\"](...args);\n}\n\n__ZN7WelsEnc19CWelsH264SVCEncoder19EncodeParameterSetsEP12SFrameBSInfo.stub = true;\n\nfunction __ZN7WelsEnc19CWelsH264SVCEncoder9GetOptionE14ENCODER_OPTIONPv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder9GetOptionE14ENCODER_OPTIONPv\"] || wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder9GetOptionE14ENCODER_OPTIONPv\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsH264SVCEncoder9GetOptionE14ENCODER_OPTIONPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder9GetOptionE14ENCODER_OPTIONPv\"](...args);\n}\n\n__ZN7WelsEnc19CWelsH264SVCEncoder9GetOptionE14ENCODER_OPTIONPv.stub = true;\n\nfunction __ZN7WelsEnc19CWelsH264SVCEncoder9SetOptionE14ENCODER_OPTIONPv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder9SetOptionE14ENCODER_OPTIONPv\"] || wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder9SetOptionE14ENCODER_OPTIONPv\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsH264SVCEncoder9SetOptionE14ENCODER_OPTIONPv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoder9SetOptionE14ENCODER_OPTIONPv\"](...args);\n}\n\n__ZN7WelsEnc19CWelsH264SVCEncoder9SetOptionE14ENCODER_OPTIONPv.stub = true;\n\nfunction __ZN7WelsEnc19CWelsH264SVCEncoderD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoderD0Ev\"] || wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoderD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsH264SVCEncoderD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoderD0Ev\"](...args);\n}\n\n__ZN7WelsEnc19CWelsH264SVCEncoderD0Ev.stub = true;\n\nfunction __ZN7WelsEnc19CWelsH264SVCEncoderD1Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoderD1Ev\"] || wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoderD1Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsH264SVCEncoderD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsH264SVCEncoderD1Ev\"](...args);\n}\n\n__ZN7WelsEnc19CWelsH264SVCEncoderD1Ev.stub = true;\n\nfunction __ZN7WelsEnc19CWelsTaskManageBase11CreateTasksEPNS_13TagWelsEncCtxEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase11CreateTasksEPNS_13TagWelsEncCtxEi\"] || wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase11CreateTasksEPNS_13TagWelsEncCtxEi\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsTaskManageBase11CreateTasksEPNS_13TagWelsEncCtxEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase11CreateTasksEPNS_13TagWelsEncCtxEi\"](...args);\n}\n\n__ZN7WelsEnc19CWelsTaskManageBase11CreateTasksEPNS_13TagWelsEncCtxEi.stub = true;\n\nfunction __ZN7WelsEnc19CWelsTaskManageBase12ExecuteTasksENS_13CWelsBaseTask9ETaskTypeE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase12ExecuteTasksENS_13CWelsBaseTask9ETaskTypeE\"] || wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase12ExecuteTasksENS_13CWelsBaseTask9ETaskTypeE\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsTaskManageBase12ExecuteTasksENS_13CWelsBaseTask9ETaskTypeE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase12ExecuteTasksENS_13CWelsBaseTask9ETaskTypeE\"](...args);\n}\n\n__ZN7WelsEnc19CWelsTaskManageBase12ExecuteTasksENS_13CWelsBaseTask9ETaskTypeE.stub = true;\n\nfunction __ZN7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv\"] || wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv\"](...args);\n}\n\n__ZN7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv.stub = true;\n\nfunction __ZN7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv\"] || wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv\"](...args);\n}\n\n__ZN7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv.stub = true;\n\nfunction __ZN7WelsEnc19CWelsTaskManageBase22GetThreadPoolThreadNumEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase22GetThreadPoolThreadNumEv\"] || wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase22GetThreadPoolThreadNumEv\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsTaskManageBase22GetThreadPoolThreadNumEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase22GetThreadPoolThreadNumEv\"](...args);\n}\n\n__ZN7WelsEnc19CWelsTaskManageBase22GetThreadPoolThreadNumEv.stub = true;\n\nfunction __ZN7WelsEnc19CWelsTaskManageBase4InitEPNS_13TagWelsEncCtxE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase4InitEPNS_13TagWelsEncCtxE\"] || wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase4InitEPNS_13TagWelsEncCtxE\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsTaskManageBase4InitEPNS_13TagWelsEncCtxE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase4InitEPNS_13TagWelsEncCtxE\"](...args);\n}\n\n__ZN7WelsEnc19CWelsTaskManageBase4InitEPNS_13TagWelsEncCtxE.stub = true;\n\nfunction __ZN7WelsEnc19CWelsTaskManageBase6UninitEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase6UninitEv\"] || wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase6UninitEv\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsTaskManageBase6UninitEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase6UninitEv\"](...args);\n}\n\n__ZN7WelsEnc19CWelsTaskManageBase6UninitEv.stub = true;\n\nfunction __ZN7WelsEnc19CWelsTaskManageBase9InitFrameEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase9InitFrameEi\"] || wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase9InitFrameEi\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsTaskManageBase9InitFrameEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBase9InitFrameEi\"](...args);\n}\n\n__ZN7WelsEnc19CWelsTaskManageBase9InitFrameEi.stub = true;\n\nfunction __ZN7WelsEnc19CWelsTaskManageBaseD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBaseD0Ev\"] || wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBaseD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsTaskManageBaseD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBaseD0Ev\"](...args);\n}\n\n__ZN7WelsEnc19CWelsTaskManageBaseD0Ev.stub = true;\n\nfunction __ZN7WelsEnc19CWelsTaskManageBaseD1Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBaseD1Ev\"] || wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBaseD1Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc19CWelsTaskManageBaseD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19CWelsTaskManageBaseD1Ev\"](...args);\n}\n\n__ZN7WelsEnc19CWelsTaskManageBaseD1Ev.stub = true;\n\nfunction __ZN7WelsEnc19UpdateFMESwitchNullEPNS_10TagDqLayerE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19UpdateFMESwitchNullEPNS_10TagDqLayerE\"] || wasmImports[\"_ZN7WelsEnc19UpdateFMESwitchNullEPNS_10TagDqLayerE\"].stub) abort(\"external symbol '_ZN7WelsEnc19UpdateFMESwitchNullEPNS_10TagDqLayerE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19UpdateFMESwitchNullEPNS_10TagDqLayerE\"](...args);\n}\n\n__ZN7WelsEnc19UpdateFMESwitchNullEPNS_10TagDqLayerE.stub = true;\n\nfunction __ZN7WelsEnc19WelsI4x4LumaPredH_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19WelsI4x4LumaPredH_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc19WelsI4x4LumaPredH_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc19WelsI4x4LumaPredH_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19WelsI4x4LumaPredH_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc19WelsI4x4LumaPredH_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc19WelsI4x4LumaPredV_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19WelsI4x4LumaPredV_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc19WelsI4x4LumaPredV_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc19WelsI4x4LumaPredV_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19WelsI4x4LumaPredV_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc19WelsI4x4LumaPredV_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc19WelsIChromaPredDc_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19WelsIChromaPredDc_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc19WelsIChromaPredDc_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc19WelsIChromaPredDc_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19WelsIChromaPredDc_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc19WelsIChromaPredDc_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc19WelsIDctFourT4Rec_cEPhiS0_iPs(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19WelsIDctFourT4Rec_cEPhiS0_iPs\"] || wasmImports[\"_ZN7WelsEnc19WelsIDctFourT4Rec_cEPhiS0_iPs\"].stub) abort(\"external symbol '_ZN7WelsEnc19WelsIDctFourT4Rec_cEPhiS0_iPs' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19WelsIDctFourT4Rec_cEPhiS0_iPs\"](...args);\n}\n\n__ZN7WelsEnc19WelsIDctFourT4Rec_cEPhiS0_iPs.stub = true;\n\nfunction __ZN7WelsEnc19WelsMdUpdateBGDInfoEPNS_10TagDqLayerEPNS_5TagMBEbi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19WelsMdUpdateBGDInfoEPNS_10TagDqLayerEPNS_5TagMBEbi\"] || wasmImports[\"_ZN7WelsEnc19WelsMdUpdateBGDInfoEPNS_10TagDqLayerEPNS_5TagMBEbi\"].stub) abort(\"external symbol '_ZN7WelsEnc19WelsMdUpdateBGDInfoEPNS_10TagDqLayerEPNS_5TagMBEbi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19WelsMdUpdateBGDInfoEPNS_10TagDqLayerEPNS_5TagMBEbi\"](...args);\n}\n\n__ZN7WelsEnc19WelsMdUpdateBGDInfoEPNS_10TagDqLayerEPNS_5TagMBEbi.stub = true;\n\nfunction __ZN7WelsEnc19WelsRcMbInitDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19WelsRcMbInitDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc19WelsRcMbInitDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc19WelsRcMbInitDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19WelsRcMbInitDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc19WelsRcMbInitDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc19WelsSampleSatd4x4_cEPhiS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19WelsSampleSatd4x4_cEPhiS0_i\"] || wasmImports[\"_ZN7WelsEnc19WelsSampleSatd4x4_cEPhiS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc19WelsSampleSatd4x4_cEPhiS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19WelsSampleSatd4x4_cEPhiS0_i\"](...args);\n}\n\n__ZN7WelsEnc19WelsSampleSatd4x4_cEPhiS0_i.stub = true;\n\nfunction __ZN7WelsEnc19WelsSampleSatd4x8_cEPhiS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19WelsSampleSatd4x8_cEPhiS0_i\"] || wasmImports[\"_ZN7WelsEnc19WelsSampleSatd4x8_cEPhiS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc19WelsSampleSatd4x8_cEPhiS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19WelsSampleSatd4x8_cEPhiS0_i\"](...args);\n}\n\n__ZN7WelsEnc19WelsSampleSatd4x8_cEPhiS0_i.stub = true;\n\nfunction __ZN7WelsEnc19WelsSampleSatd8x4_cEPhiS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19WelsSampleSatd8x4_cEPhiS0_i\"] || wasmImports[\"_ZN7WelsEnc19WelsSampleSatd8x4_cEPhiS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc19WelsSampleSatd8x4_cEPhiS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19WelsSampleSatd8x4_cEPhiS0_i\"](...args);\n}\n\n__ZN7WelsEnc19WelsSampleSatd8x4_cEPhiS0_i.stub = true;\n\nfunction __ZN7WelsEnc19WelsSampleSatd8x8_cEPhiS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc19WelsSampleSatd8x8_cEPhiS0_i\"] || wasmImports[\"_ZN7WelsEnc19WelsSampleSatd8x8_cEPhiS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc19WelsSampleSatd8x8_cEPhiS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc19WelsSampleSatd8x8_cEPhiS0_i\"](...args);\n}\n\n__ZN7WelsEnc19WelsSampleSatd8x8_cEPhiS0_i.stub = true;\n\nfunction __ZN7WelsEnc20CWelsPreProcessVideo17DetectSceneChangeEPNS_10TagPictureES2_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20CWelsPreProcessVideo17DetectSceneChangeEPNS_10TagPictureES2_\"] || wasmImports[\"_ZN7WelsEnc20CWelsPreProcessVideo17DetectSceneChangeEPNS_10TagPictureES2_\"].stub) abort(\"external symbol '_ZN7WelsEnc20CWelsPreProcessVideo17DetectSceneChangeEPNS_10TagPictureES2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20CWelsPreProcessVideo17DetectSceneChangeEPNS_10TagPictureES2_\"](...args);\n}\n\n__ZN7WelsEnc20CWelsPreProcessVideo17DetectSceneChangeEPNS_10TagPictureES2_.stub = true;\n\nfunction __ZN7WelsEnc20CWelsPreProcessVideo19GetCurrentOrigFrameEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20CWelsPreProcessVideo19GetCurrentOrigFrameEi\"] || wasmImports[\"_ZN7WelsEnc20CWelsPreProcessVideo19GetCurrentOrigFrameEi\"].stub) abort(\"external symbol '_ZN7WelsEnc20CWelsPreProcessVideo19GetCurrentOrigFrameEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20CWelsPreProcessVideo19GetCurrentOrigFrameEi\"](...args);\n}\n\n__ZN7WelsEnc20CWelsPreProcessVideo19GetCurrentOrigFrameEi.stub = true;\n\nfunction __ZN7WelsEnc20CWelsPreProcessVideoD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20CWelsPreProcessVideoD0Ev\"] || wasmImports[\"_ZN7WelsEnc20CWelsPreProcessVideoD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc20CWelsPreProcessVideoD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20CWelsPreProcessVideoD0Ev\"](...args);\n}\n\n__ZN7WelsEnc20CWelsPreProcessVideoD0Ev.stub = true;\n\nfunction __ZN7WelsEnc20CWelsUpdateMbMapTask7ExecuteEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20CWelsUpdateMbMapTask7ExecuteEv\"] || wasmImports[\"_ZN7WelsEnc20CWelsUpdateMbMapTask7ExecuteEv\"].stub) abort(\"external symbol '_ZN7WelsEnc20CWelsUpdateMbMapTask7ExecuteEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20CWelsUpdateMbMapTask7ExecuteEv\"](...args);\n}\n\n__ZN7WelsEnc20CWelsUpdateMbMapTask7ExecuteEv.stub = true;\n\nfunction __ZN7WelsEnc20CWelsUpdateMbMapTaskD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20CWelsUpdateMbMapTaskD0Ev\"] || wasmImports[\"_ZN7WelsEnc20CWelsUpdateMbMapTaskD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc20CWelsUpdateMbMapTaskD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20CWelsUpdateMbMapTaskD0Ev\"](...args);\n}\n\n__ZN7WelsEnc20CWelsUpdateMbMapTaskD0Ev.stub = true;\n\nfunction __ZN7WelsEnc20CWelsUpdateMbMapTaskD1Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20CWelsUpdateMbMapTaskD1Ev\"] || wasmImports[\"_ZN7WelsEnc20CWelsUpdateMbMapTaskD1Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc20CWelsUpdateMbMapTaskD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20CWelsUpdateMbMapTaskD1Ev\"](...args);\n}\n\n__ZN7WelsEnc20CWelsUpdateMbMapTaskD1Ev.stub = true;\n\nfunction __ZN7WelsEnc20IsMbCollocatedStaticEPi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20IsMbCollocatedStaticEPi\"] || wasmImports[\"_ZN7WelsEnc20IsMbCollocatedStaticEPi\"].stub) abort(\"external symbol '_ZN7WelsEnc20IsMbCollocatedStaticEPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20IsMbCollocatedStaticEPi\"](...args);\n}\n\n__ZN7WelsEnc20IsMbCollocatedStaticEPi.stub = true;\n\nfunction __ZN7WelsEnc20NotCalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20NotCalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii\"] || wasmImports[\"_ZN7WelsEnc20NotCalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii\"].stub) abort(\"external symbol '_ZN7WelsEnc20NotCalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20NotCalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii\"](...args);\n}\n\n__ZN7WelsEnc20NotCalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii.stub = true;\n\nfunction __ZN7WelsEnc20WelsDequantFour4x4_cEPsPKt(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20WelsDequantFour4x4_cEPsPKt\"] || wasmImports[\"_ZN7WelsEnc20WelsDequantFour4x4_cEPsPKt\"].stub) abort(\"external symbol '_ZN7WelsEnc20WelsDequantFour4x4_cEPsPKt' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20WelsDequantFour4x4_cEPsPKt\"](...args);\n}\n\n__ZN7WelsEnc20WelsDequantFour4x4_cEPsPKt.stub = true;\n\nfunction __ZN7WelsEnc20WelsI4x4LumaPredDc_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredDc_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredDc_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc20WelsI4x4LumaPredDc_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredDc_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc20WelsI4x4LumaPredDc_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc20WelsI4x4LumaPredHD_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredHD_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredHD_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc20WelsI4x4LumaPredHD_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredHD_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc20WelsI4x4LumaPredHD_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc20WelsI4x4LumaPredHU_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredHU_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredHU_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc20WelsI4x4LumaPredHU_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredHU_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc20WelsI4x4LumaPredHU_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc20WelsI4x4LumaPredVL_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredVL_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredVL_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc20WelsI4x4LumaPredVL_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredVL_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc20WelsI4x4LumaPredVL_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc20WelsI4x4LumaPredVR_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredVR_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredVR_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc20WelsI4x4LumaPredVR_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20WelsI4x4LumaPredVR_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc20WelsI4x4LumaPredVR_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc20WelsInitInterMDStrucEPKNS_5TagMBEPtiPNS_9TagWelsMDE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20WelsInitInterMDStrucEPKNS_5TagMBEPtiPNS_9TagWelsMDE\"] || wasmImports[\"_ZN7WelsEnc20WelsInitInterMDStrucEPKNS_5TagMBEPtiPNS_9TagWelsMDE\"].stub) abort(\"external symbol '_ZN7WelsEnc20WelsInitInterMDStrucEPKNS_5TagMBEPtiPNS_9TagWelsMDE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20WelsInitInterMDStrucEPKNS_5TagMBEPtiPNS_9TagWelsMDE\"](...args);\n}\n\n__ZN7WelsEnc20WelsInitInterMDStrucEPKNS_5TagMBEPtiPNS_9TagWelsMDE.stub = true;\n\nfunction __ZN7WelsEnc20WelsMdFirstIntraModeEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20WelsMdFirstIntraModeEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE\"] || wasmImports[\"_ZN7WelsEnc20WelsMdFirstIntraModeEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE\"].stub) abort(\"external symbol '_ZN7WelsEnc20WelsMdFirstIntraModeEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20WelsMdFirstIntraModeEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE\"](...args);\n}\n\n__ZN7WelsEnc20WelsMdFirstIntraModeEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE.stub = true;\n\nfunction __ZN7WelsEnc20WelsRcPictureInitGomEPNS_13TagWelsEncCtxEx(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20WelsRcPictureInitGomEPNS_13TagWelsEncCtxEx\"] || wasmImports[\"_ZN7WelsEnc20WelsRcPictureInitGomEPNS_13TagWelsEncCtxEx\"].stub) abort(\"external symbol '_ZN7WelsEnc20WelsRcPictureInitGomEPNS_13TagWelsEncCtxEx' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20WelsRcPictureInitGomEPNS_13TagWelsEncCtxEx\"](...args);\n}\n\n__ZN7WelsEnc20WelsRcPictureInitGomEPNS_13TagWelsEncCtxEx.stub = true;\n\nfunction __ZN7WelsEnc20WelsSampleSatd16x8_cEPhiS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20WelsSampleSatd16x8_cEPhiS0_i\"] || wasmImports[\"_ZN7WelsEnc20WelsSampleSatd16x8_cEPhiS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc20WelsSampleSatd16x8_cEPhiS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20WelsSampleSatd16x8_cEPhiS0_i\"](...args);\n}\n\n__ZN7WelsEnc20WelsSampleSatd16x8_cEPhiS0_i.stub = true;\n\nfunction __ZN7WelsEnc20WelsSampleSatd8x16_cEPhiS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20WelsSampleSatd8x16_cEPhiS0_i\"] || wasmImports[\"_ZN7WelsEnc20WelsSampleSatd8x16_cEPhiS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc20WelsSampleSatd8x16_cEPhiS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20WelsSampleSatd8x16_cEPhiS0_i\"](...args);\n}\n\n__ZN7WelsEnc20WelsSampleSatd8x16_cEPhiS0_i.stub = true;\n\nfunction __ZN7WelsEnc20WelsSliceHeaderWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc20WelsSliceHeaderWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE\"] || wasmImports[\"_ZN7WelsEnc20WelsSliceHeaderWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE\"].stub) abort(\"external symbol '_ZN7WelsEnc20WelsSliceHeaderWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc20WelsSliceHeaderWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE\"](...args);\n}\n\n__ZN7WelsEnc20WelsSliceHeaderWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE.stub = true;\n\nfunction __ZN7WelsEnc21CWelsPreProcessScreen17DetectSceneChangeEPNS_10TagPictureES2_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21CWelsPreProcessScreen17DetectSceneChangeEPNS_10TagPictureES2_\"] || wasmImports[\"_ZN7WelsEnc21CWelsPreProcessScreen17DetectSceneChangeEPNS_10TagPictureES2_\"].stub) abort(\"external symbol '_ZN7WelsEnc21CWelsPreProcessScreen17DetectSceneChangeEPNS_10TagPictureES2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21CWelsPreProcessScreen17DetectSceneChangeEPNS_10TagPictureES2_\"](...args);\n}\n\n__ZN7WelsEnc21CWelsPreProcessScreen17DetectSceneChangeEPNS_10TagPictureES2_.stub = true;\n\nfunction __ZN7WelsEnc21CWelsPreProcessScreen19GetCurrentOrigFrameEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21CWelsPreProcessScreen19GetCurrentOrigFrameEi\"] || wasmImports[\"_ZN7WelsEnc21CWelsPreProcessScreen19GetCurrentOrigFrameEi\"].stub) abort(\"external symbol '_ZN7WelsEnc21CWelsPreProcessScreen19GetCurrentOrigFrameEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21CWelsPreProcessScreen19GetCurrentOrigFrameEi\"](...args);\n}\n\n__ZN7WelsEnc21CWelsPreProcessScreen19GetCurrentOrigFrameEi.stub = true;\n\nfunction __ZN7WelsEnc21CWelsPreProcessScreenD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21CWelsPreProcessScreenD0Ev\"] || wasmImports[\"_ZN7WelsEnc21CWelsPreProcessScreenD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc21CWelsPreProcessScreenD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21CWelsPreProcessScreenD0Ev\"](...args);\n}\n\n__ZN7WelsEnc21CWelsPreProcessScreenD0Ev.stub = true;\n\nfunction __ZN7WelsEnc21CWelsReference_Screen12BuildRefListEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen12BuildRefListEii\"] || wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen12BuildRefListEii\"].stub) abort(\"external symbol '_ZN7WelsEnc21CWelsReference_Screen12BuildRefListEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen12BuildRefListEii\"](...args);\n}\n\n__ZN7WelsEnc21CWelsReference_Screen12BuildRefListEii.stub = true;\n\nfunction __ZN7WelsEnc21CWelsReference_Screen13UpdateRefListEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen13UpdateRefListEv\"] || wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen13UpdateRefListEv\"].stub) abort(\"external symbol '_ZN7WelsEnc21CWelsReference_Screen13UpdateRefListEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen13UpdateRefListEv\"](...args);\n}\n\n__ZN7WelsEnc21CWelsReference_Screen13UpdateRefListEv.stub = true;\n\nfunction __ZN7WelsEnc21CWelsReference_Screen17AfterBuildRefListEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen17AfterBuildRefListEv\"] || wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen17AfterBuildRefListEv\"].stub) abort(\"external symbol '_ZN7WelsEnc21CWelsReference_Screen17AfterBuildRefListEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen17AfterBuildRefListEv\"](...args);\n}\n\n__ZN7WelsEnc21CWelsReference_Screen17AfterBuildRefListEv.stub = true;\n\nfunction __ZN7WelsEnc21CWelsReference_Screen18EndofUpdateRefListEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen18EndofUpdateRefListEv\"] || wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen18EndofUpdateRefListEv\"].stub) abort(\"external symbol '_ZN7WelsEnc21CWelsReference_Screen18EndofUpdateRefListEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen18EndofUpdateRefListEv\"](...args);\n}\n\n__ZN7WelsEnc21CWelsReference_Screen18EndofUpdateRefListEv.stub = true;\n\nfunction __ZN7WelsEnc21CWelsReference_Screen7MarkPicEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen7MarkPicEv\"] || wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen7MarkPicEv\"].stub) abort(\"external symbol '_ZN7WelsEnc21CWelsReference_Screen7MarkPicEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21CWelsReference_Screen7MarkPicEv\"](...args);\n}\n\n__ZN7WelsEnc21CWelsReference_Screen7MarkPicEv.stub = true;\n\nfunction __ZN7WelsEnc21CWelsReference_ScreenD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21CWelsReference_ScreenD0Ev\"] || wasmImports[\"_ZN7WelsEnc21CWelsReference_ScreenD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc21CWelsReference_ScreenD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21CWelsReference_ScreenD0Ev\"](...args);\n}\n\n__ZN7WelsEnc21CWelsReference_ScreenD0Ev.stub = true;\n\nfunction __ZN7WelsEnc21StashPopMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21StashPopMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc21StashPopMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc21StashPopMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21StashPopMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc21StashPopMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc21StashPopMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21StashPopMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc21StashPopMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc21StashPopMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21StashPopMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc21StashPopMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc21SumOf8x8SingleBlock_cEPhi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21SumOf8x8SingleBlock_cEPhi\"] || wasmImports[\"_ZN7WelsEnc21SumOf8x8SingleBlock_cEPhi\"].stub) abort(\"external symbol '_ZN7WelsEnc21SumOf8x8SingleBlock_cEPhi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21SumOf8x8SingleBlock_cEPhi\"](...args);\n}\n\n__ZN7WelsEnc21SumOf8x8SingleBlock_cEPhi.stub = true;\n\nfunction __ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultER14TagEncParamExt(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultER14TagEncParamExt\"] || wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultER14TagEncParamExt\"].stub) abort(\"external symbol '_ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultER14TagEncParamExt' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultER14TagEncParamExt\"](...args);\n}\n\n__ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultER14TagEncParamExt.stub = true;\n\nfunction __ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultEv\"] || wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultEv\"].stub) abort(\"external symbol '_ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultEv\"](...args);\n}\n\n__ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultEv.stub = true;\n\nfunction __ZN7WelsEnc21TagWelsSvcCodingParam13GetBaseParamsEP15TagEncParamBase(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam13GetBaseParamsEP15TagEncParamBase\"] || wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam13GetBaseParamsEP15TagEncParamBase\"].stub) abort(\"external symbol '_ZN7WelsEnc21TagWelsSvcCodingParam13GetBaseParamsEP15TagEncParamBase' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam13GetBaseParamsEP15TagEncParamBase\"](...args);\n}\n\n__ZN7WelsEnc21TagWelsSvcCodingParam13GetBaseParamsEP15TagEncParamBase.stub = true;\n\nfunction __ZN7WelsEnc21TagWelsSvcCodingParam14ParamTranscodeERK14TagEncParamExt(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam14ParamTranscodeERK14TagEncParamExt\"] || wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam14ParamTranscodeERK14TagEncParamExt\"].stub) abort(\"external symbol '_ZN7WelsEnc21TagWelsSvcCodingParam14ParamTranscodeERK14TagEncParamExt' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam14ParamTranscodeERK14TagEncParamExt\"](...args);\n}\n\n__ZN7WelsEnc21TagWelsSvcCodingParam14ParamTranscodeERK14TagEncParamExt.stub = true;\n\nfunction __ZN7WelsEnc21TagWelsSvcCodingParam18ParamBaseTranscodeERK15TagEncParamBase(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam18ParamBaseTranscodeERK15TagEncParamBase\"] || wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam18ParamBaseTranscodeERK15TagEncParamBase\"].stub) abort(\"external symbol '_ZN7WelsEnc21TagWelsSvcCodingParam18ParamBaseTranscodeERK15TagEncParamBase' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam18ParamBaseTranscodeERK15TagEncParamBase\"](...args);\n}\n\n__ZN7WelsEnc21TagWelsSvcCodingParam18ParamBaseTranscodeERK15TagEncParamBase.stub = true;\n\nfunction __ZN7WelsEnc21TagWelsSvcCodingParam22SetActualPicResolutionEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam22SetActualPicResolutionEv\"] || wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam22SetActualPicResolutionEv\"].stub) abort(\"external symbol '_ZN7WelsEnc21TagWelsSvcCodingParam22SetActualPicResolutionEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam22SetActualPicResolutionEv\"](...args);\n}\n\n__ZN7WelsEnc21TagWelsSvcCodingParam22SetActualPicResolutionEv.stub = true;\n\nfunction __ZN7WelsEnc21TagWelsSvcCodingParam25DetermineTemporalSettingsEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam25DetermineTemporalSettingsEv\"] || wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam25DetermineTemporalSettingsEv\"].stub) abort(\"external symbol '_ZN7WelsEnc21TagWelsSvcCodingParam25DetermineTemporalSettingsEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21TagWelsSvcCodingParam25DetermineTemporalSettingsEv\"](...args);\n}\n\n__ZN7WelsEnc21TagWelsSvcCodingParam25DetermineTemporalSettingsEv.stub = true;\n\nfunction __ZN7WelsEnc21WelsI4x4LumaPredDDL_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21WelsI4x4LumaPredDDL_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc21WelsI4x4LumaPredDDL_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc21WelsI4x4LumaPredDDL_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21WelsI4x4LumaPredDDL_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc21WelsI4x4LumaPredDDL_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc21WelsI4x4LumaPredDDR_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21WelsI4x4LumaPredDDR_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc21WelsI4x4LumaPredDDR_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc21WelsI4x4LumaPredDDR_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21WelsI4x4LumaPredDDR_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc21WelsI4x4LumaPredDDR_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc21WelsIChromaPredDcNA_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21WelsIChromaPredDcNA_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc21WelsIChromaPredDcNA_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc21WelsIChromaPredDcNA_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21WelsIChromaPredDcNA_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc21WelsIChromaPredDcNA_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc21WelsIDctRecI16x16Dc_cEPhiS0_iPs(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21WelsIDctRecI16x16Dc_cEPhiS0_iPs\"] || wasmImports[\"_ZN7WelsEnc21WelsIDctRecI16x16Dc_cEPhiS0_iPs\"].stub) abort(\"external symbol '_ZN7WelsEnc21WelsIDctRecI16x16Dc_cEPhiS0_iPs' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21WelsIDctRecI16x16Dc_cEPhiS0_iPs\"](...args);\n}\n\n__ZN7WelsEnc21WelsIDctRecI16x16Dc_cEPhiS0_iPs.stub = true;\n\nfunction __ZN7WelsEnc21WelsMotionCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21WelsMotionCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii\"] || wasmImports[\"_ZN7WelsEnc21WelsMotionCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii\"].stub) abort(\"external symbol '_ZN7WelsEnc21WelsMotionCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21WelsMotionCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii\"](...args);\n}\n\n__ZN7WelsEnc21WelsMotionCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii.stub = true;\n\nfunction __ZN7WelsEnc21WelsQuantFour4x4Max_cEPsPKsS2_S0_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21WelsQuantFour4x4Max_cEPsPKsS2_S0_\"] || wasmImports[\"_ZN7WelsEnc21WelsQuantFour4x4Max_cEPsPKsS2_S0_\"].stub) abort(\"external symbol '_ZN7WelsEnc21WelsQuantFour4x4Max_cEPsPKsS2_S0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21WelsQuantFour4x4Max_cEPsPKsS2_S0_\"](...args);\n}\n\n__ZN7WelsEnc21WelsQuantFour4x4Max_cEPsPKsS2_S0_.stub = true;\n\nfunction __ZN7WelsEnc21WelsRcMbInfoUpdateGomEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21WelsRcMbInfoUpdateGomEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc21WelsRcMbInfoUpdateGomEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc21WelsRcMbInfoUpdateGomEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21WelsRcMbInfoUpdateGomEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc21WelsRcMbInfoUpdateGomEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc21WelsSampleSatd16x16_cEPhiS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21WelsSampleSatd16x16_cEPhiS0_i\"] || wasmImports[\"_ZN7WelsEnc21WelsSampleSatd16x16_cEPhiS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc21WelsSampleSatd16x16_cEPhiS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21WelsSampleSatd16x16_cEPhiS0_i\"](...args);\n}\n\n__ZN7WelsEnc21WelsSampleSatd16x16_cEPhiS0_i.stub = true;\n\nfunction __ZN7WelsEnc21WelsSpatialWriteMbSynEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc21WelsSpatialWriteMbSynEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE\"] || wasmImports[\"_ZN7WelsEnc21WelsSpatialWriteMbSynEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE\"].stub) abort(\"external symbol '_ZN7WelsEnc21WelsSpatialWriteMbSynEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc21WelsSpatialWriteMbSynEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE\"](...args);\n}\n\n__ZN7WelsEnc21WelsSpatialWriteMbSynEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE.stub = true;\n\nfunction __ZN7WelsEnc22AnalysisVaaInfoIntra_cEPhi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22AnalysisVaaInfoIntra_cEPhi\"] || wasmImports[\"_ZN7WelsEnc22AnalysisVaaInfoIntra_cEPhi\"].stub) abort(\"external symbol '_ZN7WelsEnc22AnalysisVaaInfoIntra_cEPhi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22AnalysisVaaInfoIntra_cEPhi\"](...args);\n}\n\n__ZN7WelsEnc22AnalysisVaaInfoIntra_cEPhi.stub = true;\n\nfunction __ZN7WelsEnc22CWelsSliceEncodingTask10FinishTaskEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTask10FinishTaskEv\"] || wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTask10FinishTaskEv\"].stub) abort(\"external symbol '_ZN7WelsEnc22CWelsSliceEncodingTask10FinishTaskEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTask10FinishTaskEv\"](...args);\n}\n\n__ZN7WelsEnc22CWelsSliceEncodingTask10FinishTaskEv.stub = true;\n\nfunction __ZN7WelsEnc22CWelsSliceEncodingTask11ExecuteTaskEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTask11ExecuteTaskEv\"] || wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTask11ExecuteTaskEv\"].stub) abort(\"external symbol '_ZN7WelsEnc22CWelsSliceEncodingTask11ExecuteTaskEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTask11ExecuteTaskEv\"](...args);\n}\n\n__ZN7WelsEnc22CWelsSliceEncodingTask11ExecuteTaskEv.stub = true;\n\nfunction __ZN7WelsEnc22CWelsSliceEncodingTask7ExecuteEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTask7ExecuteEv\"] || wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTask7ExecuteEv\"].stub) abort(\"external symbol '_ZN7WelsEnc22CWelsSliceEncodingTask7ExecuteEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTask7ExecuteEv\"](...args);\n}\n\n__ZN7WelsEnc22CWelsSliceEncodingTask7ExecuteEv.stub = true;\n\nfunction __ZN7WelsEnc22CWelsSliceEncodingTask8InitTaskEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTask8InitTaskEv\"] || wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTask8InitTaskEv\"].stub) abort(\"external symbol '_ZN7WelsEnc22CWelsSliceEncodingTask8InitTaskEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTask8InitTaskEv\"](...args);\n}\n\n__ZN7WelsEnc22CWelsSliceEncodingTask8InitTaskEv.stub = true;\n\nfunction __ZN7WelsEnc22CWelsSliceEncodingTaskD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTaskD0Ev\"] || wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTaskD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc22CWelsSliceEncodingTaskD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTaskD0Ev\"](...args);\n}\n\n__ZN7WelsEnc22CWelsSliceEncodingTaskD0Ev.stub = true;\n\nfunction __ZN7WelsEnc22CWelsSliceEncodingTaskD1Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTaskD1Ev\"] || wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTaskD1Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc22CWelsSliceEncodingTaskD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTaskD1Ev\"](...args);\n}\n\n__ZN7WelsEnc22CWelsSliceEncodingTaskD1Ev.stub = true;\n\nfunction __ZN7WelsEnc22CWelsSliceEncodingTaskD2Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTaskD2Ev\"] || wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTaskD2Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc22CWelsSliceEncodingTaskD2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22CWelsSliceEncodingTaskD2Ev\"](...args);\n}\n\n__ZN7WelsEnc22CWelsSliceEncodingTaskD2Ev.stub = true;\n\nfunction __ZN7WelsEnc22IWelsReferenceStrategyD2Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22IWelsReferenceStrategyD2Ev\"] || wasmImports[\"_ZN7WelsEnc22IWelsReferenceStrategyD2Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc22IWelsReferenceStrategyD2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22IWelsReferenceStrategyD2Ev\"](...args);\n}\n\n__ZN7WelsEnc22IWelsReferenceStrategyD2Ev.stub = true;\n\nfunction __ZN7WelsEnc22SetScrollingMvToMdNullEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22SetScrollingMvToMdNullEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE\"] || wasmImports[\"_ZN7WelsEnc22SetScrollingMvToMdNullEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE\"].stub) abort(\"external symbol '_ZN7WelsEnc22SetScrollingMvToMdNullEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22SetScrollingMvToMdNullEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE\"](...args);\n}\n\n__ZN7WelsEnc22SetScrollingMvToMdNullEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE.stub = true;\n\nfunction __ZN7WelsEnc22SumOf8x8BlockOfFrame_cEPhiiiPtPj(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22SumOf8x8BlockOfFrame_cEPhiiiPtPj\"] || wasmImports[\"_ZN7WelsEnc22SumOf8x8BlockOfFrame_cEPhiiiPtPj\"].stub) abort(\"external symbol '_ZN7WelsEnc22SumOf8x8BlockOfFrame_cEPhiiiPtPj' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22SumOf8x8BlockOfFrame_cEPhiiiPtPj\"](...args);\n}\n\n__ZN7WelsEnc22SumOf8x8BlockOfFrame_cEPhiiiPtPj.stub = true;\n\nfunction __ZN7WelsEnc22WelsDiamondCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22WelsDiamondCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii\"] || wasmImports[\"_ZN7WelsEnc22WelsDiamondCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii\"].stub) abort(\"external symbol '_ZN7WelsEnc22WelsDiamondCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22WelsDiamondCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii\"](...args);\n}\n\n__ZN7WelsEnc22WelsDiamondCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii.stub = true;\n\nfunction __ZN7WelsEnc22WelsGetNoneZeroCount_cEPs(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22WelsGetNoneZeroCount_cEPs\"] || wasmImports[\"_ZN7WelsEnc22WelsGetNoneZeroCount_cEPs\"].stub) abort(\"external symbol '_ZN7WelsEnc22WelsGetNoneZeroCount_cEPs' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22WelsGetNoneZeroCount_cEPs\"](...args);\n}\n\n__ZN7WelsEnc22WelsGetNoneZeroCount_cEPs.stub = true;\n\nfunction __ZN7WelsEnc22WelsHadamardQuant2x2_cEPsssS0_S0_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22WelsHadamardQuant2x2_cEPsssS0_S0_\"] || wasmImports[\"_ZN7WelsEnc22WelsHadamardQuant2x2_cEPsssS0_S0_\"].stub) abort(\"external symbol '_ZN7WelsEnc22WelsHadamardQuant2x2_cEPsssS0_S0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22WelsHadamardQuant2x2_cEPsssS0_S0_\"](...args);\n}\n\n__ZN7WelsEnc22WelsHadamardQuant2x2_cEPsssS0_S0_.stub = true;\n\nfunction __ZN7WelsEnc22WelsI16x16LumaPredDc_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22WelsI16x16LumaPredDc_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc22WelsI16x16LumaPredDc_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc22WelsI16x16LumaPredDc_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22WelsI16x16LumaPredDc_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc22WelsI16x16LumaPredDc_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc22WelsI4x4LumaPredDcNA_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22WelsI4x4LumaPredDcNA_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc22WelsI4x4LumaPredDcNA_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc22WelsI4x4LumaPredDcNA_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22WelsI4x4LumaPredDcNA_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc22WelsI4x4LumaPredDcNA_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc22WelsIChromaPredDcTop_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22WelsIChromaPredDcTop_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc22WelsIChromaPredDcTop_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc22WelsIChromaPredDcTop_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22WelsIChromaPredDcTop_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc22WelsIChromaPredDcTop_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc22WelsIChromaPredPlane_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22WelsIChromaPredPlane_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc22WelsIChromaPredPlane_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc22WelsIChromaPredPlane_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22WelsIChromaPredPlane_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc22WelsIChromaPredPlane_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc22WelsISliceMdEncDynamicEPNS_13TagWelsEncCtxEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22WelsISliceMdEncDynamicEPNS_13TagWelsEncCtxEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc22WelsISliceMdEncDynamicEPNS_13TagWelsEncCtxEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc22WelsISliceMdEncDynamicEPNS_13TagWelsEncCtxEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22WelsISliceMdEncDynamicEPNS_13TagWelsEncCtxEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc22WelsISliceMdEncDynamicEPNS_13TagWelsEncCtxEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc22g_kiMapModeIntraChromaE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc22g_kiMapModeIntraChromaE\"] || wasmImports[\"_ZN7WelsEnc22g_kiMapModeIntraChromaE\"].stub) abort(\"external symbol '_ZN7WelsEnc22g_kiMapModeIntraChromaE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc22g_kiMapModeIntraChromaE\"](...args);\n}\n\n__ZN7WelsEnc22g_kiMapModeIntraChromaE.stub = true;\n\nfunction __ZN7WelsEnc23CheckDirectionalMvFalseEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc23CheckDirectionalMvFalseEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi\"] || wasmImports[\"_ZN7WelsEnc23CheckDirectionalMvFalseEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi\"].stub) abort(\"external symbol '_ZN7WelsEnc23CheckDirectionalMvFalseEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc23CheckDirectionalMvFalseEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi\"](...args);\n}\n\n__ZN7WelsEnc23CheckDirectionalMvFalseEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi.stub = true;\n\nfunction __ZN7WelsEnc23IsCostLessEqualSkipCostEiiiPKNS_10TagPictureEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc23IsCostLessEqualSkipCostEiiiPKNS_10TagPictureEii\"] || wasmImports[\"_ZN7WelsEnc23IsCostLessEqualSkipCostEiiiPKNS_10TagPictureEii\"].stub) abort(\"external symbol '_ZN7WelsEnc23IsCostLessEqualSkipCostEiiiPKNS_10TagPictureEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc23IsCostLessEqualSkipCostEiiiPKNS_10TagPictureEii\"](...args);\n}\n\n__ZN7WelsEnc23IsCostLessEqualSkipCostEiiiPKNS_10TagPictureEii.stub = true;\n\nfunction __ZN7WelsEnc23SumOf16x16SingleBlock_cEPhi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc23SumOf16x16SingleBlock_cEPhi\"] || wasmImports[\"_ZN7WelsEnc23SumOf16x16SingleBlock_cEPhi\"].stub) abort(\"external symbol '_ZN7WelsEnc23SumOf16x16SingleBlock_cEPhi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc23SumOf16x16SingleBlock_cEPhi\"](...args);\n}\n\n__ZN7WelsEnc23SumOf16x16SingleBlock_cEPhi.stub = true;\n\nfunction __ZN7WelsEnc23WelsCabacEncodeDecisionEPNS_11TagCabacCtxEij(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc23WelsCabacEncodeDecisionEPNS_11TagCabacCtxEij\"] || wasmImports[\"_ZN7WelsEnc23WelsCabacEncodeDecisionEPNS_11TagCabacCtxEij\"].stub) abort(\"external symbol '_ZN7WelsEnc23WelsCabacEncodeDecisionEPNS_11TagCabacCtxEij' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc23WelsCabacEncodeDecisionEPNS_11TagCabacCtxEij\"](...args);\n}\n\n__ZN7WelsEnc23WelsCabacEncodeDecisionEPNS_11TagCabacCtxEij.stub = true;\n\nfunction __ZN7WelsEnc23WelsI4x4LumaPredDcTop_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc23WelsI4x4LumaPredDcTop_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc23WelsI4x4LumaPredDcTop_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc23WelsI4x4LumaPredDcTop_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc23WelsI4x4LumaPredDcTop_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc23WelsI4x4LumaPredDcTop_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc23WelsI4x4LumaPredVLTop_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc23WelsI4x4LumaPredVLTop_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc23WelsI4x4LumaPredVLTop_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc23WelsI4x4LumaPredVLTop_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc23WelsI4x4LumaPredVLTop_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc23WelsI4x4LumaPredVLTop_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc23WelsIChromaPredDcLeft_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc23WelsIChromaPredDcLeft_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc23WelsIChromaPredDcLeft_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc23WelsIChromaPredDcLeft_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc23WelsIChromaPredDcLeft_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc23WelsIChromaPredDcLeft_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc23WelsMdUpdateBGDInfoNULLEPNS_10TagDqLayerEPNS_5TagMBEbi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc23WelsMdUpdateBGDInfoNULLEPNS_10TagDqLayerEPNS_5TagMBEbi\"] || wasmImports[\"_ZN7WelsEnc23WelsMdUpdateBGDInfoNULLEPNS_10TagDqLayerEPNS_5TagMBEbi\"].stub) abort(\"external symbol '_ZN7WelsEnc23WelsMdUpdateBGDInfoNULLEPNS_10TagDqLayerEPNS_5TagMBEbi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc23WelsMdUpdateBGDInfoNULLEPNS_10TagDqLayerEPNS_5TagMBEbi\"](...args);\n}\n\n__ZN7WelsEnc23WelsMdUpdateBGDInfoNULLEPNS_10TagDqLayerEPNS_5TagMBEbi.stub = true;\n\nfunction __ZN7WelsEnc23WelsRcPostFrameSkippingEPNS_13TagWelsEncCtxEix(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc23WelsRcPostFrameSkippingEPNS_13TagWelsEncCtxEix\"] || wasmImports[\"_ZN7WelsEnc23WelsRcPostFrameSkippingEPNS_13TagWelsEncCtxEix\"].stub) abort(\"external symbol '_ZN7WelsEnc23WelsRcPostFrameSkippingEPNS_13TagWelsEncCtxEix' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc23WelsRcPostFrameSkippingEPNS_13TagWelsEncCtxEix\"](...args);\n}\n\n__ZN7WelsEnc23WelsRcPostFrameSkippingEPNS_13TagWelsEncCtxEix.stub = true;\n\nfunction __ZN7WelsEnc23WelsSliceHeaderExtWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc23WelsSliceHeaderExtWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE\"] || wasmImports[\"_ZN7WelsEnc23WelsSliceHeaderExtWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE\"].stub) abort(\"external symbol '_ZN7WelsEnc23WelsSliceHeaderExtWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc23WelsSliceHeaderExtWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE\"](...args);\n}\n\n__ZN7WelsEnc23WelsSliceHeaderExtWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE.stub = true;\n\nfunction __ZN7WelsEnc24CheckFrameSkipBasedMaxbrEPNS_13TagWelsEncCtxExi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24CheckFrameSkipBasedMaxbrEPNS_13TagWelsEncCtxExi\"] || wasmImports[\"_ZN7WelsEnc24CheckFrameSkipBasedMaxbrEPNS_13TagWelsEncCtxExi\"].stub) abort(\"external symbol '_ZN7WelsEnc24CheckFrameSkipBasedMaxbrEPNS_13TagWelsEncCtxExi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24CheckFrameSkipBasedMaxbrEPNS_13TagWelsEncCtxExi\"](...args);\n}\n\n__ZN7WelsEnc24CheckFrameSkipBasedMaxbrEPNS_13TagWelsEncCtxExi.stub = true;\n\nfunction __ZN7WelsEnc24MdInterAnalysisVaaInfo_cEPi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24MdInterAnalysisVaaInfo_cEPi\"] || wasmImports[\"_ZN7WelsEnc24MdInterAnalysisVaaInfo_cEPi\"].stub) abort(\"external symbol '_ZN7WelsEnc24MdInterAnalysisVaaInfo_cEPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24MdInterAnalysisVaaInfo_cEPi\"](...args);\n}\n\n__ZN7WelsEnc24MdInterAnalysisVaaInfo_cEPi.stub = true;\n\nfunction __ZN7WelsEnc24SumOf16x16BlockOfFrame_cEPhiiiPtPj(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24SumOf16x16BlockOfFrame_cEPhiiiPtPj\"] || wasmImports[\"_ZN7WelsEnc24SumOf16x16BlockOfFrame_cEPhiiiPtPj\"].stub) abort(\"external symbol '_ZN7WelsEnc24SumOf16x16BlockOfFrame_cEPhiiiPtPj' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24SumOf16x16BlockOfFrame_cEPhiiiPtPj\"](...args);\n}\n\n__ZN7WelsEnc24SumOf16x16BlockOfFrame_cEPhiiiPtPj.stub = true;\n\nfunction __ZN7WelsEnc24WelsCabacEncodeBypassOneEPNS_11TagCabacCtxEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24WelsCabacEncodeBypassOneEPNS_11TagCabacCtxEi\"] || wasmImports[\"_ZN7WelsEnc24WelsCabacEncodeBypassOneEPNS_11TagCabacCtxEi\"].stub) abort(\"external symbol '_ZN7WelsEnc24WelsCabacEncodeBypassOneEPNS_11TagCabacCtxEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24WelsCabacEncodeBypassOneEPNS_11TagCabacCtxEi\"](...args);\n}\n\n__ZN7WelsEnc24WelsCabacEncodeBypassOneEPNS_11TagCabacCtxEi.stub = true;\n\nfunction __ZN7WelsEnc24WelsI16x16LumaPredDcNA_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24WelsI16x16LumaPredDcNA_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc24WelsI16x16LumaPredDcNA_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc24WelsI16x16LumaPredDcNA_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24WelsI16x16LumaPredDcNA_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc24WelsI16x16LumaPredDcNA_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc24WelsI4x4LumaPredDDLTop_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24WelsI4x4LumaPredDDLTop_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc24WelsI4x4LumaPredDDLTop_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc24WelsI4x4LumaPredDDLTop_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24WelsI4x4LumaPredDDLTop_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc24WelsI4x4LumaPredDDLTop_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc24WelsI4x4LumaPredDcLeft_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24WelsI4x4LumaPredDcLeft_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc24WelsI4x4LumaPredDcLeft_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc24WelsI4x4LumaPredDcLeft_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24WelsI4x4LumaPredDcLeft_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc24WelsI4x4LumaPredDcLeft_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc24WelsMdInterFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24WelsMdInterFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi\"] || wasmImports[\"_ZN7WelsEnc24WelsMdInterFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi\"].stub) abort(\"external symbol '_ZN7WelsEnc24WelsMdInterFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24WelsMdInterFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi\"](...args);\n}\n\n__ZN7WelsEnc24WelsMdInterFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi.stub = true;\n\nfunction __ZN7WelsEnc24WelsMdInterJudgeBGDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24WelsMdInterJudgeBGDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb\"] || wasmImports[\"_ZN7WelsEnc24WelsMdInterJudgeBGDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb\"].stub) abort(\"external symbol '_ZN7WelsEnc24WelsMdInterJudgeBGDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24WelsMdInterJudgeBGDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb\"](...args);\n}\n\n__ZN7WelsEnc24WelsMdInterJudgeBGDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb.stub = true;\n\nfunction __ZN7WelsEnc24WelsMdInterJudgeSCDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24WelsMdInterJudgeSCDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE\"] || wasmImports[\"_ZN7WelsEnc24WelsMdInterJudgeSCDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE\"].stub) abort(\"external symbol '_ZN7WelsEnc24WelsMdInterJudgeSCDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24WelsMdInterJudgeSCDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE\"](...args);\n}\n\n__ZN7WelsEnc24WelsMdInterJudgeSCDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE.stub = true;\n\nfunction __ZN7WelsEnc24WelsMdIntraFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24WelsMdIntraFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE\"] || wasmImports[\"_ZN7WelsEnc24WelsMdIntraFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE\"].stub) abort(\"external symbol '_ZN7WelsEnc24WelsMdIntraFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24WelsMdIntraFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE\"](...args);\n}\n\n__ZN7WelsEnc24WelsMdIntraFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE.stub = true;\n\nfunction __ZN7WelsEnc24WelsMotionEstimateSearchEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24WelsMotionEstimateSearchEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc24WelsMotionEstimateSearchEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc24WelsMotionEstimateSearchEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24WelsMotionEstimateSearchEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc24WelsMotionEstimateSearchEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc24WelsRcPictureInitDisableEPNS_13TagWelsEncCtxEx(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24WelsRcPictureInitDisableEPNS_13TagWelsEncCtxEx\"] || wasmImports[\"_ZN7WelsEnc24WelsRcPictureInitDisableEPNS_13TagWelsEncCtxEx\"].stub) abort(\"external symbol '_ZN7WelsEnc24WelsRcPictureInitDisableEPNS_13TagWelsEncCtxEx' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24WelsRcPictureInitDisableEPNS_13TagWelsEncCtxEx\"](...args);\n}\n\n__ZN7WelsEnc24WelsRcPictureInitDisableEPNS_13TagWelsEncCtxEx.stub = true;\n\nfunction __ZN7WelsEnc24g_kuiTemporalIdListTableE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc24g_kuiTemporalIdListTableE\"] || wasmImports[\"_ZN7WelsEnc24g_kuiTemporalIdListTableE\"].stub) abort(\"external symbol '_ZN7WelsEnc24g_kuiTemporalIdListTableE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc24g_kuiTemporalIdListTableE\"](...args);\n}\n\n__ZN7WelsEnc24g_kuiTemporalIdListTableE.stub = true;\n\nfunction __ZN7WelsEnc25SetMvWithinIntegerMvRangeEiiiiiPNS_9SMVUnitXYES1_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc25SetMvWithinIntegerMvRangeEiiiiiPNS_9SMVUnitXYES1_\"] || wasmImports[\"_ZN7WelsEnc25SetMvWithinIntegerMvRangeEiiiiiPNS_9SMVUnitXYES1_\"].stub) abort(\"external symbol '_ZN7WelsEnc25SetMvWithinIntegerMvRangeEiiiiiPNS_9SMVUnitXYES1_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc25SetMvWithinIntegerMvRangeEiiiiiPNS_9SMVUnitXYES1_\"](...args);\n}\n\n__ZN7WelsEnc25SetMvWithinIntegerMvRangeEiiiiiPNS_9SMVUnitXYES1_.stub = true;\n\nfunction __ZN7WelsEnc25VaaBackgroundMbDataUpdateEPNS_22TagWelsFuncPointerListEPNS_15TagVAAFrameInfoEPNS_5TagMBE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc25VaaBackgroundMbDataUpdateEPNS_22TagWelsFuncPointerListEPNS_15TagVAAFrameInfoEPNS_5TagMBE\"] || wasmImports[\"_ZN7WelsEnc25VaaBackgroundMbDataUpdateEPNS_22TagWelsFuncPointerListEPNS_15TagVAAFrameInfoEPNS_5TagMBE\"].stub) abort(\"external symbol '_ZN7WelsEnc25VaaBackgroundMbDataUpdateEPNS_22TagWelsFuncPointerListEPNS_15TagVAAFrameInfoEPNS_5TagMBE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc25VaaBackgroundMbDataUpdateEPNS_22TagWelsFuncPointerListEPNS_15TagVAAFrameInfoEPNS_5TagMBE\"](...args);\n}\n\n__ZN7WelsEnc25VaaBackgroundMbDataUpdateEPNS_22TagWelsFuncPointerListEPNS_15TagVAAFrameInfoEPNS_5TagMBE.stub = true;\n\nfunction __ZN7WelsEnc25WelsCabacEncodeUpdateLow_EPNS_11TagCabacCtxE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc25WelsCabacEncodeUpdateLow_EPNS_11TagCabacCtxE\"] || wasmImports[\"_ZN7WelsEnc25WelsCabacEncodeUpdateLow_EPNS_11TagCabacCtxE\"].stub) abort(\"external symbol '_ZN7WelsEnc25WelsCabacEncodeUpdateLow_EPNS_11TagCabacCtxE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc25WelsCabacEncodeUpdateLow_EPNS_11TagCabacCtxE\"](...args);\n}\n\n__ZN7WelsEnc25WelsCabacEncodeUpdateLow_EPNS_11TagCabacCtxE.stub = true;\n\nfunction __ZN7WelsEnc25WelsCodePOverDynamicSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc25WelsCodePOverDynamicSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc25WelsCodePOverDynamicSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc25WelsCodePOverDynamicSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc25WelsCodePOverDynamicSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc25WelsCodePOverDynamicSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc25WelsDequantIHadamard4x4_cEPst(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc25WelsDequantIHadamard4x4_cEPst\"] || wasmImports[\"_ZN7WelsEnc25WelsDequantIHadamard4x4_cEPst\"].stub) abort(\"external symbol '_ZN7WelsEnc25WelsDequantIHadamard4x4_cEPst' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc25WelsDequantIHadamard4x4_cEPst\"](...args);\n}\n\n__ZN7WelsEnc25WelsDequantIHadamard4x4_cEPst.stub = true;\n\nfunction __ZN7WelsEnc25WelsI16x16LumaPredDcTop_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc25WelsI16x16LumaPredDcTop_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc25WelsI16x16LumaPredDcTop_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc25WelsI16x16LumaPredDcTop_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc25WelsI16x16LumaPredDcTop_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc25WelsI16x16LumaPredDcTop_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc25WelsI16x16LumaPredPlane_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc25WelsI16x16LumaPredPlane_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc25WelsI16x16LumaPredPlane_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc25WelsI16x16LumaPredPlane_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc25WelsI16x16LumaPredPlane_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc25WelsI16x16LumaPredPlane_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc25WelsMdInterMbEnhancelayerEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc25WelsMdInterMbEnhancelayerEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE\"] || wasmImports[\"_ZN7WelsEnc25WelsMdInterMbEnhancelayerEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE\"].stub) abort(\"external symbol '_ZN7WelsEnc25WelsMdInterMbEnhancelayerEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc25WelsMdInterMbEnhancelayerEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE\"](...args);\n}\n\n__ZN7WelsEnc25WelsMdInterMbEnhancelayerEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE.stub = true;\n\nfunction __ZN7WelsEnc25WelsRcMbInfoUpdateDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc25WelsRcMbInfoUpdateDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc25WelsRcMbInfoUpdateDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc25WelsRcMbInfoUpdateDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc25WelsRcMbInfoUpdateDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc25WelsRcMbInfoUpdateDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc26DeblockingBSInsideMBNormalEPNS_5TagMBEPA4_A4_hPa(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc26DeblockingBSInsideMBNormalEPNS_5TagMBEPA4_A4_hPa\"] || wasmImports[\"_ZN7WelsEnc26DeblockingBSInsideMBNormalEPNS_5TagMBEPA4_A4_hPa\"].stub) abort(\"external symbol '_ZN7WelsEnc26DeblockingBSInsideMBNormalEPNS_5TagMBEPA4_A4_hPa' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc26DeblockingBSInsideMBNormalEPNS_5TagMBEPA4_A4_hPa\"](...args);\n}\n\n__ZN7WelsEnc26DeblockingBSInsideMBNormalEPNS_5TagMBEPA4_A4_hPa.stub = true;\n\nfunction __ZN7WelsEnc26InitializeHashforFeature_cEPjPtiPS1_S2_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc26InitializeHashforFeature_cEPjPtiPS1_S2_\"] || wasmImports[\"_ZN7WelsEnc26InitializeHashforFeature_cEPjPtiPS1_S2_\"].stub) abort(\"external symbol '_ZN7WelsEnc26InitializeHashforFeature_cEPjPtiPS1_S2_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc26InitializeHashforFeature_cEPjPtiPS1_S2_\"](...args);\n}\n\n__ZN7WelsEnc26InitializeHashforFeature_cEPjPtiPS1_S2_.stub = true;\n\nfunction __ZN7WelsEnc26WelsHadamardQuant2x2Skip_cEPsss(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc26WelsHadamardQuant2x2Skip_cEPsss\"] || wasmImports[\"_ZN7WelsEnc26WelsHadamardQuant2x2Skip_cEPsss\"].stub) abort(\"external symbol '_ZN7WelsEnc26WelsHadamardQuant2x2Skip_cEPsss' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc26WelsHadamardQuant2x2Skip_cEPsss\"](...args);\n}\n\n__ZN7WelsEnc26WelsHadamardQuant2x2Skip_cEPsss.stub = true;\n\nfunction __ZN7WelsEnc26WelsI16x16LumaPredDcLeft_cEPhS0_i(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc26WelsI16x16LumaPredDcLeft_cEPhS0_i\"] || wasmImports[\"_ZN7WelsEnc26WelsI16x16LumaPredDcLeft_cEPhS0_i\"].stub) abort(\"external symbol '_ZN7WelsEnc26WelsI16x16LumaPredDcLeft_cEPhS0_i' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc26WelsI16x16LumaPredDcLeft_cEPhS0_i\"](...args);\n}\n\n__ZN7WelsEnc26WelsI16x16LumaPredDcLeft_cEPhS0_i.stub = true;\n\nfunction __ZN7WelsEnc26WelsRcPictureInfoUpdateGomEPNS_13TagWelsEncCtxEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc26WelsRcPictureInfoUpdateGomEPNS_13TagWelsEncCtxEi\"] || wasmImports[\"_ZN7WelsEnc26WelsRcPictureInfoUpdateGomEPNS_13TagWelsEncCtxEi\"].stub) abort(\"external symbol '_ZN7WelsEnc26WelsRcPictureInfoUpdateGomEPNS_13TagWelsEncCtxEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc26WelsRcPictureInfoUpdateGomEPNS_13TagWelsEncCtxEi\"](...args);\n}\n\n__ZN7WelsEnc26WelsRcPictureInfoUpdateGomEPNS_13TagWelsEncCtxEi.stub = true;\n\nfunction __ZN7WelsEnc26WelsSpatialWriteMbSynCabacEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc26WelsSpatialWriteMbSynCabacEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE\"] || wasmImports[\"_ZN7WelsEnc26WelsSpatialWriteMbSynCabacEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE\"].stub) abort(\"external symbol '_ZN7WelsEnc26WelsSpatialWriteMbSynCabacEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc26WelsSpatialWriteMbSynCabacEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE\"](...args);\n}\n\n__ZN7WelsEnc26WelsSpatialWriteMbSynCabacEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE.stub = true;\n\nfunction __ZN7WelsEnc26g_kuiVlcTotalZerosChromaDcE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc26g_kuiVlcTotalZerosChromaDcE\"] || wasmImports[\"_ZN7WelsEnc26g_kuiVlcTotalZerosChromaDcE\"].stub) abort(\"external symbol '_ZN7WelsEnc26g_kuiVlcTotalZerosChromaDcE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc26g_kuiVlcTotalZerosChromaDcE\"](...args);\n}\n\n__ZN7WelsEnc26g_kuiVlcTotalZerosChromaDcE.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant13UpdatePpsListEPNS_13TagWelsEncCtxE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant13UpdatePpsListEPNS_13TagWelsEncCtxE\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant13UpdatePpsListEPNS_13TagWelsEncCtxE\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant13UpdatePpsListEPNS_13TagWelsEncCtxE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant13UpdatePpsListEPNS_13TagWelsEncCtxE\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant13UpdatePpsListEPNS_13TagWelsEncCtxE.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant14GetPpsIdOffsetEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant14GetPpsIdOffsetEi\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant14GetPpsIdOffsetEi\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant14GetPpsIdOffsetEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant14GetPpsIdOffsetEi\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant14GetPpsIdOffsetEi.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant14GetSpsIdOffsetEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant14GetSpsIdOffsetEii\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant14GetSpsIdOffsetEii\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant14GetSpsIdOffsetEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant14GetSpsIdOffsetEii\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant14GetSpsIdOffsetEii.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant15GetCurrentPpsIdEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15GetCurrentPpsIdEii\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15GetCurrentPpsIdEii\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant15GetCurrentPpsIdEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15GetCurrentPpsIdEii\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant15GetCurrentPpsIdEii.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededPpsNumEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededPpsNumEv\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededPpsNumEv\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededPpsNumEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededPpsNumEv\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededPpsNumEv.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededSpsNumEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededSpsNumEv\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededSpsNumEv\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededSpsNumEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededSpsNumEv\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededSpsNumEv.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant16SetUseSubsetFlagEjb(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant16SetUseSubsetFlagEjb\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant16SetUseSubsetFlagEjb\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant16SetUseSubsetFlagEjb' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant16SetUseSubsetFlagEjb\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant16SetUseSubsetFlagEjb.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant16UpdateParaSetNumEPNS_13TagWelsEncCtxE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant16UpdateParaSetNumEPNS_13TagWelsEncCtxE\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant16UpdateParaSetNumEPNS_13TagWelsEncCtxE\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant16UpdateParaSetNumEPNS_13TagWelsEncCtxE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant16UpdateParaSetNumEPNS_13TagWelsEncCtxE\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant16UpdateParaSetNumEPNS_13TagWelsEncCtxE.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant18GetSpsIdOffsetListEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant18GetSpsIdOffsetListEi\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant18GetSpsIdOffsetListEi\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant18GetSpsIdOffsetListEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant18GetSpsIdOffsetListEi\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant18GetSpsIdOffsetListEi.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant21GetNeededSubsetSpsNumEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant21GetNeededSubsetSpsNumEv\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant21GetNeededSubsetSpsNumEv\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant21GetNeededSubsetSpsNumEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant21GetNeededSubsetSpsNumEv\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant21GetNeededSubsetSpsNumEv.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant22GetAllNeededParasetNumEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant22GetAllNeededParasetNumEv\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant22GetAllNeededParasetNumEv\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant22GetAllNeededParasetNumEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant22GetAllNeededParasetNumEv\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant22GetAllNeededParasetNumEv.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant6UpdateEji(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant6UpdateEji\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant6UpdateEji\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant6UpdateEji' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant6UpdateEji\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant6UpdateEji.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstant9GetSpsIdxEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant9GetSpsIdxEi\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant9GetSpsIdxEi\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstant9GetSpsIdxEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstant9GetSpsIdxEi\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstant9GetSpsIdxEi.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstantD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstantD0Ev\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstantD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstantD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstantD0Ev\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstantD0Ev.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstantD1Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstantD1Ev\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstantD1Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstantD1Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstantD1Ev\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstantD1Ev.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetIdConstantD2Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstantD2Ev\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstantD2Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetIdConstantD2Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetIdConstantD2Ev\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetIdConstantD2Ev.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetSpsListing12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetSpsListing12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetSpsListing12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetSpsListing14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetSpsListing14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetSpsListing14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetSpsListing15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetSpsListing15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetSpsListing15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetSpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetSpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetSpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetSpsListing18CheckPpsGeneratingEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing18CheckPpsGeneratingEv\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing18CheckPpsGeneratingEv\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetSpsListing18CheckPpsGeneratingEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing18CheckPpsGeneratingEv\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetSpsListing18CheckPpsGeneratingEv.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetSpsListing21GetNeededSubsetSpsNumEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing21GetNeededSubsetSpsNumEv\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing21GetNeededSubsetSpsNumEv\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetSpsListing21GetNeededSubsetSpsNumEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing21GetNeededSubsetSpsNumEv\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetSpsListing21GetNeededSubsetSpsNumEv.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetSpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetSpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetSpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetSpsListing23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetSpsListing23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetSpsListing23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetSpsListing8SpsResetEPNS_13TagWelsEncCtxEb(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing8SpsResetEPNS_13TagWelsEncCtxEb\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing8SpsResetEPNS_13TagWelsEncCtxEb\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetSpsListing8SpsResetEPNS_13TagWelsEncCtxEb' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing8SpsResetEPNS_13TagWelsEncCtxEb\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetSpsListing8SpsResetEPNS_13TagWelsEncCtxEb.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetSpsListing9GetSpsIdxEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing9GetSpsIdxEi\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing9GetSpsIdxEi\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetSpsListing9GetSpsIdxEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListing9GetSpsIdxEi\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetSpsListing9GetSpsIdxEi.stub = true;\n\nfunction __ZN7WelsEnc27CWelsParametersetSpsListingD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListingD0Ev\"] || wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListingD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc27CWelsParametersetSpsListingD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27CWelsParametersetSpsListingD0Ev\"](...args);\n}\n\n__ZN7WelsEnc27CWelsParametersetSpsListingD0Ev.stub = true;\n\nfunction __ZN7WelsEnc27DeblockingBSInsideMBAvsbaseEPaPA4_A4_hi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27DeblockingBSInsideMBAvsbaseEPaPA4_A4_hi\"] || wasmImports[\"_ZN7WelsEnc27DeblockingBSInsideMBAvsbaseEPaPA4_A4_hi\"].stub) abort(\"external symbol '_ZN7WelsEnc27DeblockingBSInsideMBAvsbaseEPaPA4_A4_hi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27DeblockingBSInsideMBAvsbaseEPaPA4_A4_hi\"](...args);\n}\n\n__ZN7WelsEnc27DeblockingBSInsideMBAvsbaseEPaPA4_A4_hi.stub = true;\n\nfunction __ZN7WelsEnc27WelsCalculateSingleCtr4x4_cEPs(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27WelsCalculateSingleCtr4x4_cEPs\"] || wasmImports[\"_ZN7WelsEnc27WelsCalculateSingleCtr4x4_cEPs\"].stub) abort(\"external symbol '_ZN7WelsEnc27WelsCalculateSingleCtr4x4_cEPs' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27WelsCalculateSingleCtr4x4_cEPs\"](...args);\n}\n\n__ZN7WelsEnc27WelsCalculateSingleCtr4x4_cEPs.stub = true;\n\nfunction __ZN7WelsEnc27WelsMdInterFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27WelsMdInterFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi\"] || wasmImports[\"_ZN7WelsEnc27WelsMdInterFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi\"].stub) abort(\"external symbol '_ZN7WelsEnc27WelsMdInterFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27WelsMdInterFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi\"](...args);\n}\n\n__ZN7WelsEnc27WelsMdInterFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi.stub = true;\n\nfunction __ZN7WelsEnc27WelsMdIntraFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc27WelsMdIntraFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE\"] || wasmImports[\"_ZN7WelsEnc27WelsMdIntraFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE\"].stub) abort(\"external symbol '_ZN7WelsEnc27WelsMdIntraFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc27WelsMdIntraFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE\"](...args);\n}\n\n__ZN7WelsEnc27WelsMdIntraFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE.stub = true;\n\nfunction __ZN7WelsEnc28CWelsReference_TemporalLayer12BuildRefListEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer12BuildRefListEii\"] || wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer12BuildRefListEii\"].stub) abort(\"external symbol '_ZN7WelsEnc28CWelsReference_TemporalLayer12BuildRefListEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer12BuildRefListEii\"](...args);\n}\n\n__ZN7WelsEnc28CWelsReference_TemporalLayer12BuildRefListEii.stub = true;\n\nfunction __ZN7WelsEnc28CWelsReference_TemporalLayer13UpdateRefListEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer13UpdateRefListEv\"] || wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer13UpdateRefListEv\"].stub) abort(\"external symbol '_ZN7WelsEnc28CWelsReference_TemporalLayer13UpdateRefListEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer13UpdateRefListEv\"](...args);\n}\n\n__ZN7WelsEnc28CWelsReference_TemporalLayer13UpdateRefListEv.stub = true;\n\nfunction __ZN7WelsEnc28CWelsReference_TemporalLayer17AfterBuildRefListEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer17AfterBuildRefListEv\"] || wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer17AfterBuildRefListEv\"].stub) abort(\"external symbol '_ZN7WelsEnc28CWelsReference_TemporalLayer17AfterBuildRefListEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer17AfterBuildRefListEv\"](...args);\n}\n\n__ZN7WelsEnc28CWelsReference_TemporalLayer17AfterBuildRefListEv.stub = true;\n\nfunction __ZN7WelsEnc28CWelsReference_TemporalLayer18EndofUpdateRefListEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer18EndofUpdateRefListEv\"] || wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer18EndofUpdateRefListEv\"].stub) abort(\"external symbol '_ZN7WelsEnc28CWelsReference_TemporalLayer18EndofUpdateRefListEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer18EndofUpdateRefListEv\"](...args);\n}\n\n__ZN7WelsEnc28CWelsReference_TemporalLayer18EndofUpdateRefListEv.stub = true;\n\nfunction __ZN7WelsEnc28CWelsReference_TemporalLayer4InitEPNS_13TagWelsEncCtxE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer4InitEPNS_13TagWelsEncCtxE\"] || wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer4InitEPNS_13TagWelsEncCtxE\"].stub) abort(\"external symbol '_ZN7WelsEnc28CWelsReference_TemporalLayer4InitEPNS_13TagWelsEncCtxE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer4InitEPNS_13TagWelsEncCtxE\"](...args);\n}\n\n__ZN7WelsEnc28CWelsReference_TemporalLayer4InitEPNS_13TagWelsEncCtxE.stub = true;\n\nfunction __ZN7WelsEnc28CWelsReference_TemporalLayer7MarkPicEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer7MarkPicEv\"] || wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer7MarkPicEv\"].stub) abort(\"external symbol '_ZN7WelsEnc28CWelsReference_TemporalLayer7MarkPicEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayer7MarkPicEv\"](...args);\n}\n\n__ZN7WelsEnc28CWelsReference_TemporalLayer7MarkPicEv.stub = true;\n\nfunction __ZN7WelsEnc28CWelsReference_TemporalLayerD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayerD0Ev\"] || wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayerD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc28CWelsReference_TemporalLayerD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc28CWelsReference_TemporalLayerD0Ev\"](...args);\n}\n\n__ZN7WelsEnc28CWelsReference_TemporalLayerD0Ev.stub = true;\n\nfunction __ZN7WelsEnc28DeblockingFilterSliceAvcbaseEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc28DeblockingFilterSliceAvcbaseEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc28DeblockingFilterSliceAvcbaseEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc28DeblockingFilterSliceAvcbaseEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc28DeblockingFilterSliceAvcbaseEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc28DeblockingFilterSliceAvcbaseEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc28UpdateBufferWhenFrameSkippedEPNS_13TagWelsEncCtxEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc28UpdateBufferWhenFrameSkippedEPNS_13TagWelsEncCtxEi\"] || wasmImports[\"_ZN7WelsEnc28UpdateBufferWhenFrameSkippedEPNS_13TagWelsEncCtxEi\"].stub) abort(\"external symbol '_ZN7WelsEnc28UpdateBufferWhenFrameSkippedEPNS_13TagWelsEncCtxEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc28UpdateBufferWhenFrameSkippedEPNS_13TagWelsEncCtxEi\"](...args);\n}\n\n__ZN7WelsEnc28UpdateBufferWhenFrameSkippedEPNS_13TagWelsEncCtxEi.stub = true;\n\nfunction __ZN7WelsEnc28UpdateMaxBrCheckWindowStatusEPNS_13TagWelsEncCtxEix(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc28UpdateMaxBrCheckWindowStatusEPNS_13TagWelsEncCtxEix\"] || wasmImports[\"_ZN7WelsEnc28UpdateMaxBrCheckWindowStatusEPNS_13TagWelsEncCtxEix\"].stub) abort(\"external symbol '_ZN7WelsEnc28UpdateMaxBrCheckWindowStatusEPNS_13TagWelsEncCtxEix' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc28UpdateMaxBrCheckWindowStatusEPNS_13TagWelsEncCtxEix\"](...args);\n}\n\n__ZN7WelsEnc28UpdateMaxBrCheckWindowStatusEPNS_13TagWelsEncCtxEix.stub = true;\n\nfunction __ZN7WelsEnc29CWelsParametersetIdIncreasing14GetPpsIdOffsetEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc29CWelsParametersetIdIncreasing14GetPpsIdOffsetEi\"] || wasmImports[\"_ZN7WelsEnc29CWelsParametersetIdIncreasing14GetPpsIdOffsetEi\"].stub) abort(\"external symbol '_ZN7WelsEnc29CWelsParametersetIdIncreasing14GetPpsIdOffsetEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc29CWelsParametersetIdIncreasing14GetPpsIdOffsetEi\"](...args);\n}\n\n__ZN7WelsEnc29CWelsParametersetIdIncreasing14GetPpsIdOffsetEi.stub = true;\n\nfunction __ZN7WelsEnc29CWelsParametersetIdIncreasing14GetSpsIdOffsetEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc29CWelsParametersetIdIncreasing14GetSpsIdOffsetEii\"] || wasmImports[\"_ZN7WelsEnc29CWelsParametersetIdIncreasing14GetSpsIdOffsetEii\"].stub) abort(\"external symbol '_ZN7WelsEnc29CWelsParametersetIdIncreasing14GetSpsIdOffsetEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc29CWelsParametersetIdIncreasing14GetSpsIdOffsetEii\"](...args);\n}\n\n__ZN7WelsEnc29CWelsParametersetIdIncreasing14GetSpsIdOffsetEii.stub = true;\n\nfunction __ZN7WelsEnc29CWelsParametersetIdIncreasing6UpdateEji(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc29CWelsParametersetIdIncreasing6UpdateEji\"] || wasmImports[\"_ZN7WelsEnc29CWelsParametersetIdIncreasing6UpdateEji\"].stub) abort(\"external symbol '_ZN7WelsEnc29CWelsParametersetIdIncreasing6UpdateEji' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc29CWelsParametersetIdIncreasing6UpdateEji\"](...args);\n}\n\n__ZN7WelsEnc29CWelsParametersetIdIncreasing6UpdateEji.stub = true;\n\nfunction __ZN7WelsEnc29CWelsParametersetIdIncreasingD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc29CWelsParametersetIdIncreasingD0Ev\"] || wasmImports[\"_ZN7WelsEnc29CWelsParametersetIdIncreasingD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc29CWelsParametersetIdIncreasingD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc29CWelsParametersetIdIncreasingD0Ev\"](...args);\n}\n\n__ZN7WelsEnc29CWelsParametersetIdIncreasingD0Ev.stub = true;\n\nfunction __ZN7WelsEnc29FillNeighborCacheInterWithBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc29FillNeighborCacheInterWithBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa\"] || wasmImports[\"_ZN7WelsEnc29FillNeighborCacheInterWithBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa\"].stub) abort(\"external symbol '_ZN7WelsEnc29FillNeighborCacheInterWithBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc29FillNeighborCacheInterWithBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa\"](...args);\n}\n\n__ZN7WelsEnc29FillNeighborCacheInterWithBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa.stub = true;\n\nfunction __ZN7WelsEnc29WelRcPictureInitBufferBasedQpEPNS_13TagWelsEncCtxEx(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc29WelRcPictureInitBufferBasedQpEPNS_13TagWelsEncCtxEx\"] || wasmImports[\"_ZN7WelsEnc29WelRcPictureInitBufferBasedQpEPNS_13TagWelsEncCtxEx\"].stub) abort(\"external symbol '_ZN7WelsEnc29WelRcPictureInitBufferBasedQpEPNS_13TagWelsEncCtxEx' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc29WelRcPictureInitBufferBasedQpEPNS_13TagWelsEncCtxEx\"](...args);\n}\n\n__ZN7WelsEnc29WelRcPictureInitBufferBasedQpEPNS_13TagWelsEncCtxEx.stub = true;\n\nfunction __ZN7WelsEnc29WelsDiamondCrossFeatureSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc29WelsDiamondCrossFeatureSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii\"] || wasmImports[\"_ZN7WelsEnc29WelsDiamondCrossFeatureSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii\"].stub) abort(\"external symbol '_ZN7WelsEnc29WelsDiamondCrossFeatureSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc29WelsDiamondCrossFeatureSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii\"](...args);\n}\n\n__ZN7WelsEnc29WelsDiamondCrossFeatureSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii.stub = true;\n\nfunction __ZN7WelsEnc29WelsMdInterJudgeBGDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc29WelsMdInterJudgeBGDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb\"] || wasmImports[\"_ZN7WelsEnc29WelsMdInterJudgeBGDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb\"].stub) abort(\"external symbol '_ZN7WelsEnc29WelsMdInterJudgeBGDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc29WelsMdInterJudgeBGDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb\"](...args);\n}\n\n__ZN7WelsEnc29WelsMdInterJudgeBGDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb.stub = true;\n\nfunction __ZN7WelsEnc29WelsMdInterJudgeSCDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc29WelsMdInterJudgeSCDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE\"] || wasmImports[\"_ZN7WelsEnc29WelsMdInterJudgeSCDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE\"].stub) abort(\"external symbol '_ZN7WelsEnc29WelsMdInterJudgeSCDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc29WelsMdInterJudgeSCDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE\"](...args);\n}\n\n__ZN7WelsEnc29WelsMdInterJudgeSCDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetIdNonConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetIdNonConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetIdNonConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetIdNonConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetIdNonConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetIdNonConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetIdNonConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetIdNonConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetIdNonConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetIdNonConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetIdNonConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetIdNonConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetIdNonConstantD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetIdNonConstantD0Ev\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetIdNonConstantD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetIdNonConstantD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetIdNonConstantD0Ev\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetIdNonConstantD0Ev.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetSpsPpsListing13UpdatePpsListEPNS_13TagWelsEncCtxE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing13UpdatePpsListEPNS_13TagWelsEncCtxE\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing13UpdatePpsListEPNS_13TagWelsEncCtxE\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetSpsPpsListing13UpdatePpsListEPNS_13TagWelsEncCtxE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing13UpdatePpsListEPNS_13TagWelsEncCtxE\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetSpsPpsListing13UpdatePpsListEPNS_13TagWelsEncCtxE.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetSpsPpsListing15GetCurrentPpsIdEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing15GetCurrentPpsIdEii\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing15GetCurrentPpsIdEii\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetSpsPpsListing15GetCurrentPpsIdEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing15GetCurrentPpsIdEii\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetSpsPpsListing15GetCurrentPpsIdEii.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetSpsPpsListing15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetSpsPpsListing15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetSpsPpsListing15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetSpsPpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetSpsPpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetSpsPpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetSpsPpsListing18CheckPpsGeneratingEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing18CheckPpsGeneratingEv\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing18CheckPpsGeneratingEv\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetSpsPpsListing18CheckPpsGeneratingEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing18CheckPpsGeneratingEv\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetSpsPpsListing18CheckPpsGeneratingEv.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetSpsPpsListing21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetSpsPpsListing21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetSpsPpsListing21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetSpsPpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetSpsPpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetSpsPpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetSpsPpsListing7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetSpsPpsListing7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetSpsPpsListing7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetSpsPpsListing8SpsResetEPNS_13TagWelsEncCtxEb(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing8SpsResetEPNS_13TagWelsEncCtxEb\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing8SpsResetEPNS_13TagWelsEncCtxEb\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetSpsPpsListing8SpsResetEPNS_13TagWelsEncCtxEb' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListing8SpsResetEPNS_13TagWelsEncCtxEb\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetSpsPpsListing8SpsResetEPNS_13TagWelsEncCtxEb.stub = true;\n\nfunction __ZN7WelsEnc30CWelsParametersetSpsPpsListingD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListingD0Ev\"] || wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListingD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsParametersetSpsPpsListingD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsParametersetSpsPpsListingD0Ev\"](...args);\n}\n\n__ZN7WelsEnc30CWelsParametersetSpsPpsListingD0Ev.stub = true;\n\nfunction __ZN7WelsEnc30CWelsReference_LosslessWithLtr12BuildRefListEii(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtr12BuildRefListEii\"] || wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtr12BuildRefListEii\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsReference_LosslessWithLtr12BuildRefListEii' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtr12BuildRefListEii\"](...args);\n}\n\n__ZN7WelsEnc30CWelsReference_LosslessWithLtr12BuildRefListEii.stub = true;\n\nfunction __ZN7WelsEnc30CWelsReference_LosslessWithLtr13UpdateRefListEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtr13UpdateRefListEv\"] || wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtr13UpdateRefListEv\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsReference_LosslessWithLtr13UpdateRefListEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtr13UpdateRefListEv\"](...args);\n}\n\n__ZN7WelsEnc30CWelsReference_LosslessWithLtr13UpdateRefListEv.stub = true;\n\nfunction __ZN7WelsEnc30CWelsReference_LosslessWithLtr18EndofUpdateRefListEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtr18EndofUpdateRefListEv\"] || wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtr18EndofUpdateRefListEv\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsReference_LosslessWithLtr18EndofUpdateRefListEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtr18EndofUpdateRefListEv\"](...args);\n}\n\n__ZN7WelsEnc30CWelsReference_LosslessWithLtr18EndofUpdateRefListEv.stub = true;\n\nfunction __ZN7WelsEnc30CWelsReference_LosslessWithLtr7MarkPicEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtr7MarkPicEv\"] || wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtr7MarkPicEv\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsReference_LosslessWithLtr7MarkPicEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtr7MarkPicEv\"](...args);\n}\n\n__ZN7WelsEnc30CWelsReference_LosslessWithLtr7MarkPicEv.stub = true;\n\nfunction __ZN7WelsEnc30CWelsReference_LosslessWithLtrD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtrD0Ev\"] || wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtrD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc30CWelsReference_LosslessWithLtrD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30CWelsReference_LosslessWithLtrD0Ev\"](...args);\n}\n\n__ZN7WelsEnc30CWelsReference_LosslessWithLtrD0Ev.stub = true;\n\nfunction __ZN7WelsEnc30WelsMotionEstimateSearchStaticEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30WelsMotionEstimateSearchStaticEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc30WelsMotionEstimateSearchStaticEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc30WelsMotionEstimateSearchStaticEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30WelsMotionEstimateSearchStaticEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc30WelsMotionEstimateSearchStaticEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc30WelsRcFrameDelayJudgeTimeStampEPNS_13TagWelsEncCtxExi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30WelsRcFrameDelayJudgeTimeStampEPNS_13TagWelsEncCtxExi\"] || wasmImports[\"_ZN7WelsEnc30WelsRcFrameDelayJudgeTimeStampEPNS_13TagWelsEncCtxExi\"].stub) abort(\"external symbol '_ZN7WelsEnc30WelsRcFrameDelayJudgeTimeStampEPNS_13TagWelsEncCtxExi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30WelsRcFrameDelayJudgeTimeStampEPNS_13TagWelsEncCtxExi\"](...args);\n}\n\n__ZN7WelsEnc30WelsRcFrameDelayJudgeTimeStampEPNS_13TagWelsEncCtxExi.stub = true;\n\nfunction __ZN7WelsEnc30WelsRcPictureInfoUpdateDisableEPNS_13TagWelsEncCtxEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc30WelsRcPictureInfoUpdateDisableEPNS_13TagWelsEncCtxEi\"] || wasmImports[\"_ZN7WelsEnc30WelsRcPictureInfoUpdateDisableEPNS_13TagWelsEncCtxEi\"].stub) abort(\"external symbol '_ZN7WelsEnc30WelsRcPictureInfoUpdateDisableEPNS_13TagWelsEncCtxEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc30WelsRcPictureInfoUpdateDisableEPNS_13TagWelsEncCtxEi\"](...args);\n}\n\n__ZN7WelsEnc30WelsRcPictureInfoUpdateDisableEPNS_13TagWelsEncCtxEi.stub = true;\n\nfunction __ZN7WelsEnc32DeblockingFilterSliceAvcbaseNullEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc32DeblockingFilterSliceAvcbaseNullEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc32DeblockingFilterSliceAvcbaseNullEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc32DeblockingFilterSliceAvcbaseNullEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc32DeblockingFilterSliceAvcbaseNullEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc32DeblockingFilterSliceAvcbaseNullEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc32FillNeighborCacheInterWithoutBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc32FillNeighborCacheInterWithoutBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa\"] || wasmImports[\"_ZN7WelsEnc32FillNeighborCacheInterWithoutBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa\"].stub) abort(\"external symbol '_ZN7WelsEnc32FillNeighborCacheInterWithoutBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc32FillNeighborCacheInterWithoutBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa\"](...args);\n}\n\n__ZN7WelsEnc32FillNeighborCacheInterWithoutBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa.stub = true;\n\nfunction __ZN7WelsEnc32FillQpelLocationByFeatureValue_cEPtiiPS0_(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc32FillQpelLocationByFeatureValue_cEPtiiPS0_\"] || wasmImports[\"_ZN7WelsEnc32FillQpelLocationByFeatureValue_cEPtiiPS0_\"].stub) abort(\"external symbol '_ZN7WelsEnc32FillQpelLocationByFeatureValue_cEPtiiPS0_' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc32FillQpelLocationByFeatureValue_cEPtiiPS0_\"](...args);\n}\n\n__ZN7WelsEnc32FillQpelLocationByFeatureValue_cEPtiiPS0_.stub = true;\n\nfunction __ZN7WelsEnc32WelsMotionEstimateSearchScrolledEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc32WelsMotionEstimateSearchScrolledEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE\"] || wasmImports[\"_ZN7WelsEnc32WelsMotionEstimateSearchScrolledEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE\"].stub) abort(\"external symbol '_ZN7WelsEnc32WelsMotionEstimateSearchScrolledEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc32WelsMotionEstimateSearchScrolledEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE\"](...args);\n}\n\n__ZN7WelsEnc32WelsMotionEstimateSearchScrolledEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE.stub = true;\n\nfunction __ZN7WelsEnc35WelsMdInterFinePartitionVaaOnScreenEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc35WelsMdInterFinePartitionVaaOnScreenEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi\"] || wasmImports[\"_ZN7WelsEnc35WelsMdInterFinePartitionVaaOnScreenEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi\"].stub) abort(\"external symbol '_ZN7WelsEnc35WelsMdInterFinePartitionVaaOnScreenEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc35WelsMdInterFinePartitionVaaOnScreenEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi\"](...args);\n}\n\n__ZN7WelsEnc35WelsMdInterFinePartitionVaaOnScreenEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi.stub = true;\n\nfunction __ZN7WelsEnc35WelsRcPictureInfoUpdateGomTimeStampEPNS_13TagWelsEncCtxEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc35WelsRcPictureInfoUpdateGomTimeStampEPNS_13TagWelsEncCtxEi\"] || wasmImports[\"_ZN7WelsEnc35WelsRcPictureInfoUpdateGomTimeStampEPNS_13TagWelsEncCtxEi\"].stub) abort(\"external symbol '_ZN7WelsEnc35WelsRcPictureInfoUpdateGomTimeStampEPNS_13TagWelsEncCtxEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc35WelsRcPictureInfoUpdateGomTimeStampEPNS_13TagWelsEncCtxEi\"](...args);\n}\n\n__ZN7WelsEnc35WelsRcPictureInfoUpdateGomTimeStampEPNS_13TagWelsEncCtxEi.stub = true;\n\nfunction __ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask10FinishTaskEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask10FinishTaskEv\"] || wasmImports[\"_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask10FinishTaskEv\"].stub) abort(\"external symbol '_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask10FinishTaskEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask10FinishTaskEv\"](...args);\n}\n\n__ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask10FinishTaskEv.stub = true;\n\nfunction __ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask8InitTaskEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask8InitTaskEv\"] || wasmImports[\"_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask8InitTaskEv\"].stub) abort(\"external symbol '_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask8InitTaskEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask8InitTaskEv\"](...args);\n}\n\n__ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask8InitTaskEv.stub = true;\n\nfunction __ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi\"] || wasmImports[\"_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi\"].stub) abort(\"external symbol '_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi\"](...args);\n}\n\n__ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi.stub = true;\n\nfunction __ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskD0Ev\"] || wasmImports[\"_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskD0Ev\"](...args);\n}\n\n__ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskD0Ev.stub = true;\n\nfunction __ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11ExecuteTaskEv(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11ExecuteTaskEv\"] || wasmImports[\"_ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11ExecuteTaskEv\"].stub) abort(\"external symbol '_ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11ExecuteTaskEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11ExecuteTaskEv\"](...args);\n}\n\n__ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11ExecuteTaskEv.stub = true;\n\nfunction __ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi\"] || wasmImports[\"_ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi\"].stub) abort(\"external symbol '_ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi\"](...args);\n}\n\n__ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi.stub = true;\n\nfunction __ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskD0Ev\"] || wasmImports[\"_ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskD0Ev\"](...args);\n}\n\n__ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskD0Ev.stub = true;\n\nfunction __ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing14GetPpsIdOffsetEi(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing14GetPpsIdOffsetEi\"] || wasmImports[\"_ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing14GetPpsIdOffsetEi\"].stub) abort(\"external symbol '_ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing14GetPpsIdOffsetEi' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing14GetPpsIdOffsetEi\"](...args);\n}\n\n__ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing14GetPpsIdOffsetEi.stub = true;\n\nfunction __ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing6UpdateEji(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing6UpdateEji\"] || wasmImports[\"_ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing6UpdateEji\"].stub) abort(\"external symbol '_ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing6UpdateEji' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing6UpdateEji\"](...args);\n}\n\n__ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing6UpdateEji.stub = true;\n\nfunction __ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingD0Ev(...args) {\n  if (!wasmImports[\"_ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingD0Ev\"] || wasmImports[\"_ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingD0Ev\"].stub) abort(\"external symbol '_ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingD0Ev' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingD0Ev\"](...args);\n}\n\n__ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingD0Ev.stub = true;\n\nfunction __ZNK7WelsEnc20CWelsUpdateMbMapTask11GetTaskTypeEv(...args) {\n  if (!wasmImports[\"_ZNK7WelsEnc20CWelsUpdateMbMapTask11GetTaskTypeEv\"] || wasmImports[\"_ZNK7WelsEnc20CWelsUpdateMbMapTask11GetTaskTypeEv\"].stub) abort(\"external symbol '_ZNK7WelsEnc20CWelsUpdateMbMapTask11GetTaskTypeEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZNK7WelsEnc20CWelsUpdateMbMapTask11GetTaskTypeEv\"](...args);\n}\n\n__ZNK7WelsEnc20CWelsUpdateMbMapTask11GetTaskTypeEv.stub = true;\n\nfunction __ZNK7WelsEnc22CWelsSliceEncodingTask11GetTaskTypeEv(...args) {\n  if (!wasmImports[\"_ZNK7WelsEnc22CWelsSliceEncodingTask11GetTaskTypeEv\"] || wasmImports[\"_ZNK7WelsEnc22CWelsSliceEncodingTask11GetTaskTypeEv\"].stub) abort(\"external symbol '_ZNK7WelsEnc22CWelsSliceEncodingTask11GetTaskTypeEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZNK7WelsEnc22CWelsSliceEncodingTask11GetTaskTypeEv\"](...args);\n}\n\n__ZNK7WelsEnc22CWelsSliceEncodingTask11GetTaskTypeEv.stub = true;\n\nfunction __ZNK7WelsEnc37CWelsLoadBalancingSlicingEncodingTask11GetTaskTypeEv(...args) {\n  if (!wasmImports[\"_ZNK7WelsEnc37CWelsLoadBalancingSlicingEncodingTask11GetTaskTypeEv\"] || wasmImports[\"_ZNK7WelsEnc37CWelsLoadBalancingSlicingEncodingTask11GetTaskTypeEv\"].stub) abort(\"external symbol '_ZNK7WelsEnc37CWelsLoadBalancingSlicingEncodingTask11GetTaskTypeEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZNK7WelsEnc37CWelsLoadBalancingSlicingEncodingTask11GetTaskTypeEv\"](...args);\n}\n\n__ZNK7WelsEnc37CWelsLoadBalancingSlicingEncodingTask11GetTaskTypeEv.stub = true;\n\nfunction __ZNK7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11GetTaskTypeEv(...args) {\n  if (!wasmImports[\"_ZNK7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11GetTaskTypeEv\"] || wasmImports[\"_ZNK7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11GetTaskTypeEv\"].stub) abort(\"external symbol '_ZNK7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11GetTaskTypeEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZNK7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11GetTaskTypeEv\"](...args);\n}\n\n__ZNK7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11GetTaskTypeEv.stub = true;\n\nfunction __ZTI11ISVCEncoder(...args) {\n  if (!wasmImports[\"_ZTI11ISVCEncoder\"] || wasmImports[\"_ZTI11ISVCEncoder\"].stub) abort(\"external symbol '_ZTI11ISVCEncoder' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTI11ISVCEncoder\"](...args);\n}\n\n__ZTI11ISVCEncoder.stub = true;\n\nfunction __ZTI7IWelsVP(...args) {\n  if (!wasmImports[\"_ZTI7IWelsVP\"] || wasmImports[\"_ZTI7IWelsVP\"].stub) abort(\"external symbol '_ZTI7IWelsVP' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTI7IWelsVP\"](...args);\n}\n\n__ZTI7IWelsVP.stub = true;\n\nfunction __ZTIN10WelsCommon11CWelsThreadE(...args) {\n  if (!wasmImports[\"_ZTIN10WelsCommon11CWelsThreadE\"] || wasmImports[\"_ZTIN10WelsCommon11CWelsThreadE\"].stub) abort(\"external symbol '_ZTIN10WelsCommon11CWelsThreadE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN10WelsCommon11CWelsThreadE\"](...args);\n}\n\n__ZTIN10WelsCommon11CWelsThreadE.stub = true;\n\nfunction __ZTIN10WelsCommon12CMemoryAlignE(...args) {\n  if (!wasmImports[\"_ZTIN10WelsCommon12CMemoryAlignE\"] || wasmImports[\"_ZTIN10WelsCommon12CMemoryAlignE\"].stub) abort(\"external symbol '_ZTIN10WelsCommon12CMemoryAlignE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN10WelsCommon12CMemoryAlignE\"](...args);\n}\n\n__ZTIN10WelsCommon12CMemoryAlignE.stub = true;\n\nfunction __ZTIN10WelsCommon13IWelsTaskSinkE(...args) {\n  if (!wasmImports[\"_ZTIN10WelsCommon13IWelsTaskSinkE\"] || wasmImports[\"_ZTIN10WelsCommon13IWelsTaskSinkE\"].stub) abort(\"external symbol '_ZTIN10WelsCommon13IWelsTaskSinkE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN10WelsCommon13IWelsTaskSinkE\"](...args);\n}\n\n__ZTIN10WelsCommon13IWelsTaskSinkE.stub = true;\n\nfunction __ZTIN10WelsCommon15CWelsTaskThreadE(...args) {\n  if (!wasmImports[\"_ZTIN10WelsCommon15CWelsTaskThreadE\"] || wasmImports[\"_ZTIN10WelsCommon15CWelsTaskThreadE\"].stub) abort(\"external symbol '_ZTIN10WelsCommon15CWelsTaskThreadE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN10WelsCommon15CWelsTaskThreadE\"](...args);\n}\n\n__ZTIN10WelsCommon15CWelsTaskThreadE.stub = true;\n\nfunction __ZTIN10WelsCommon15CWelsThreadPoolE(...args) {\n  if (!wasmImports[\"_ZTIN10WelsCommon15CWelsThreadPoolE\"] || wasmImports[\"_ZTIN10WelsCommon15CWelsThreadPoolE\"].stub) abort(\"external symbol '_ZTIN10WelsCommon15CWelsThreadPoolE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN10WelsCommon15CWelsThreadPoolE\"](...args);\n}\n\n__ZTIN10WelsCommon15CWelsThreadPoolE.stub = true;\n\nfunction __ZTIN10WelsCommon19IWelsTaskThreadSinkE(...args) {\n  if (!wasmImports[\"_ZTIN10WelsCommon19IWelsTaskThreadSinkE\"] || wasmImports[\"_ZTIN10WelsCommon19IWelsTaskThreadSinkE\"].stub) abort(\"external symbol '_ZTIN10WelsCommon19IWelsTaskThreadSinkE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN10WelsCommon19IWelsTaskThreadSinkE\"](...args);\n}\n\n__ZTIN10WelsCommon19IWelsTaskThreadSinkE.stub = true;\n\nfunction __ZTIN10WelsCommon9CWelsLockE(...args) {\n  if (!wasmImports[\"_ZTIN10WelsCommon9CWelsLockE\"] || wasmImports[\"_ZTIN10WelsCommon9CWelsLockE\"].stub) abort(\"external symbol '_ZTIN10WelsCommon9CWelsLockE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN10WelsCommon9CWelsLockE\"](...args);\n}\n\n__ZTIN10WelsCommon9CWelsLockE.stub = true;\n\nfunction __ZTIN10WelsCommon9IWelsTaskE(...args) {\n  if (!wasmImports[\"_ZTIN10WelsCommon9IWelsTaskE\"] || wasmImports[\"_ZTIN10WelsCommon9IWelsTaskE\"].stub) abort(\"external symbol '_ZTIN10WelsCommon9IWelsTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN10WelsCommon9IWelsTaskE\"](...args);\n}\n\n__ZTIN10WelsCommon9IWelsTaskE.stub = true;\n\nfunction __ZTIN6WelsVP12CVpFrameWorkE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP12CVpFrameWorkE\"] || wasmImports[\"_ZTIN6WelsVP12CVpFrameWorkE\"].stub) abort(\"external symbol '_ZTIN6WelsVP12CVpFrameWorkE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP12CVpFrameWorkE\"](...args);\n}\n\n__ZTIN6WelsVP12CVpFrameWorkE.stub = true;\n\nfunction __ZTIN6WelsVP13CDownsamplingE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP13CDownsamplingE\"] || wasmImports[\"_ZTIN6WelsVP13CDownsamplingE\"].stub) abort(\"external symbol '_ZTIN6WelsVP13CDownsamplingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP13CDownsamplingE\"](...args);\n}\n\n__ZTIN6WelsVP13CDownsamplingE.stub = true;\n\nfunction __ZTIN6WelsVP14CImageRotatingE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP14CImageRotatingE\"] || wasmImports[\"_ZTIN6WelsVP14CImageRotatingE\"].stub) abort(\"external symbol '_ZTIN6WelsVP14CImageRotatingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP14CImageRotatingE\"](...args);\n}\n\n__ZTIN6WelsVP14CImageRotatingE.stub = true;\n\nfunction __ZTIN6WelsVP15CVAACalculationE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP15CVAACalculationE\"] || wasmImports[\"_ZTIN6WelsVP15CVAACalculationE\"].stub) abort(\"external symbol '_ZTIN6WelsVP15CVAACalculationE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP15CVAACalculationE\"](...args);\n}\n\n__ZTIN6WelsVP15CVAACalculationE.stub = true;\n\nfunction __ZTIN6WelsVP16CScrollDetectionE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP16CScrollDetectionE\"] || wasmImports[\"_ZTIN6WelsVP16CScrollDetectionE\"].stub) abort(\"external symbol '_ZTIN6WelsVP16CScrollDetectionE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP16CScrollDetectionE\"](...args);\n}\n\n__ZTIN6WelsVP16CScrollDetectionE.stub = true;\n\nfunction __ZTIN6WelsVP19CComplexityAnalysisE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP19CComplexityAnalysisE\"] || wasmImports[\"_ZTIN6WelsVP19CComplexityAnalysisE\"].stub) abort(\"external symbol '_ZTIN6WelsVP19CComplexityAnalysisE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP19CComplexityAnalysisE\"](...args);\n}\n\n__ZTIN6WelsVP19CComplexityAnalysisE.stub = true;\n\nfunction __ZTIN6WelsVP20CBackgroundDetectionE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP20CBackgroundDetectionE\"] || wasmImports[\"_ZTIN6WelsVP20CBackgroundDetectionE\"].stub) abort(\"external symbol '_ZTIN6WelsVP20CBackgroundDetectionE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP20CBackgroundDetectionE\"](...args);\n}\n\n__ZTIN6WelsVP20CBackgroundDetectionE.stub = true;\n\nfunction __ZTIN6WelsVP21CAdaptiveQuantizationE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP21CAdaptiveQuantizationE\"] || wasmImports[\"_ZTIN6WelsVP21CAdaptiveQuantizationE\"].stub) abort(\"external symbol '_ZTIN6WelsVP21CAdaptiveQuantizationE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP21CAdaptiveQuantizationE\"](...args);\n}\n\n__ZTIN6WelsVP21CAdaptiveQuantizationE.stub = true;\n\nfunction __ZTIN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE\"] || wasmImports[\"_ZTIN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE\"].stub) abort(\"external symbol '_ZTIN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE\"](...args);\n}\n\n__ZTIN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE.stub = true;\n\nfunction __ZTIN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE\"] || wasmImports[\"_ZTIN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE\"].stub) abort(\"external symbol '_ZTIN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE\"](...args);\n}\n\n__ZTIN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE.stub = true;\n\nfunction __ZTIN6WelsVP25CComplexityAnalysisScreenE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP25CComplexityAnalysisScreenE\"] || wasmImports[\"_ZTIN6WelsVP25CComplexityAnalysisScreenE\"].stub) abort(\"external symbol '_ZTIN6WelsVP25CComplexityAnalysisScreenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP25CComplexityAnalysisScreenE\"](...args);\n}\n\n__ZTIN6WelsVP25CComplexityAnalysisScreenE.stub = true;\n\nfunction __ZTIN6WelsVP25CSceneChangeDetectorVideoE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP25CSceneChangeDetectorVideoE\"] || wasmImports[\"_ZTIN6WelsVP25CSceneChangeDetectorVideoE\"].stub) abort(\"external symbol '_ZTIN6WelsVP25CSceneChangeDetectorVideoE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP25CSceneChangeDetectorVideoE\"](...args);\n}\n\n__ZTIN6WelsVP25CSceneChangeDetectorVideoE.stub = true;\n\nfunction __ZTIN6WelsVP26CSceneChangeDetectorScreenE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP26CSceneChangeDetectorScreenE\"] || wasmImports[\"_ZTIN6WelsVP26CSceneChangeDetectorScreenE\"].stub) abort(\"external symbol '_ZTIN6WelsVP26CSceneChangeDetectorScreenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP26CSceneChangeDetectorScreenE\"](...args);\n}\n\n__ZTIN6WelsVP26CSceneChangeDetectorScreenE.stub = true;\n\nfunction __ZTIN6WelsVP9CDenoiserE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP9CDenoiserE\"] || wasmImports[\"_ZTIN6WelsVP9CDenoiserE\"].stub) abort(\"external symbol '_ZTIN6WelsVP9CDenoiserE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP9CDenoiserE\"](...args);\n}\n\n__ZTIN6WelsVP9CDenoiserE.stub = true;\n\nfunction __ZTIN6WelsVP9IStrategyE(...args) {\n  if (!wasmImports[\"_ZTIN6WelsVP9IStrategyE\"] || wasmImports[\"_ZTIN6WelsVP9IStrategyE\"].stub) abort(\"external symbol '_ZTIN6WelsVP9IStrategyE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN6WelsVP9IStrategyE\"](...args);\n}\n\n__ZTIN6WelsVP9IStrategyE.stub = true;\n\nfunction __ZTIN7WelsEnc13CWelsBaseTaskE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc13CWelsBaseTaskE\"] || wasmImports[\"_ZTIN7WelsEnc13CWelsBaseTaskE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc13CWelsBaseTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc13CWelsBaseTaskE\"](...args);\n}\n\n__ZTIN7WelsEnc13CWelsBaseTaskE.stub = true;\n\nfunction __ZTIN7WelsEnc15CWelsPreProcessE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc15CWelsPreProcessE\"] || wasmImports[\"_ZTIN7WelsEnc15CWelsPreProcessE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc15CWelsPreProcessE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc15CWelsPreProcessE\"](...args);\n}\n\n__ZTIN7WelsEnc15CWelsPreProcessE.stub = true;\n\nfunction __ZTIN7WelsEnc15IWelsTaskManageE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc15IWelsTaskManageE\"] || wasmImports[\"_ZTIN7WelsEnc15IWelsTaskManageE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc15IWelsTaskManageE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc15IWelsTaskManageE\"](...args);\n}\n\n__ZTIN7WelsEnc15IWelsTaskManageE.stub = true;\n\nfunction __ZTIN7WelsEnc19CWelsH264SVCEncoderE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc19CWelsH264SVCEncoderE\"] || wasmImports[\"_ZTIN7WelsEnc19CWelsH264SVCEncoderE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc19CWelsH264SVCEncoderE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc19CWelsH264SVCEncoderE\"](...args);\n}\n\n__ZTIN7WelsEnc19CWelsH264SVCEncoderE.stub = true;\n\nfunction __ZTIN7WelsEnc19CWelsTaskManageBaseE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc19CWelsTaskManageBaseE\"] || wasmImports[\"_ZTIN7WelsEnc19CWelsTaskManageBaseE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc19CWelsTaskManageBaseE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc19CWelsTaskManageBaseE\"](...args);\n}\n\n__ZTIN7WelsEnc19CWelsTaskManageBaseE.stub = true;\n\nfunction __ZTIN7WelsEnc20CWelsPreProcessVideoE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc20CWelsPreProcessVideoE\"] || wasmImports[\"_ZTIN7WelsEnc20CWelsPreProcessVideoE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc20CWelsPreProcessVideoE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc20CWelsPreProcessVideoE\"](...args);\n}\n\n__ZTIN7WelsEnc20CWelsPreProcessVideoE.stub = true;\n\nfunction __ZTIN7WelsEnc20CWelsUpdateMbMapTaskE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc20CWelsUpdateMbMapTaskE\"] || wasmImports[\"_ZTIN7WelsEnc20CWelsUpdateMbMapTaskE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc20CWelsUpdateMbMapTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc20CWelsUpdateMbMapTaskE\"](...args);\n}\n\n__ZTIN7WelsEnc20CWelsUpdateMbMapTaskE.stub = true;\n\nfunction __ZTIN7WelsEnc21CWelsPreProcessScreenE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc21CWelsPreProcessScreenE\"] || wasmImports[\"_ZTIN7WelsEnc21CWelsPreProcessScreenE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc21CWelsPreProcessScreenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc21CWelsPreProcessScreenE\"](...args);\n}\n\n__ZTIN7WelsEnc21CWelsPreProcessScreenE.stub = true;\n\nfunction __ZTIN7WelsEnc21CWelsReference_ScreenE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc21CWelsReference_ScreenE\"] || wasmImports[\"_ZTIN7WelsEnc21CWelsReference_ScreenE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc21CWelsReference_ScreenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc21CWelsReference_ScreenE\"](...args);\n}\n\n__ZTIN7WelsEnc21CWelsReference_ScreenE.stub = true;\n\nfunction __ZTIN7WelsEnc22CWelsSliceEncodingTaskE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc22CWelsSliceEncodingTaskE\"] || wasmImports[\"_ZTIN7WelsEnc22CWelsSliceEncodingTaskE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc22CWelsSliceEncodingTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc22CWelsSliceEncodingTaskE\"](...args);\n}\n\n__ZTIN7WelsEnc22CWelsSliceEncodingTaskE.stub = true;\n\nfunction __ZTIN7WelsEnc22IWelsReferenceStrategyE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc22IWelsReferenceStrategyE\"] || wasmImports[\"_ZTIN7WelsEnc22IWelsReferenceStrategyE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc22IWelsReferenceStrategyE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc22IWelsReferenceStrategyE\"](...args);\n}\n\n__ZTIN7WelsEnc22IWelsReferenceStrategyE.stub = true;\n\nfunction __ZTIN7WelsEnc25IWelsParametersetStrategyE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc25IWelsParametersetStrategyE\"] || wasmImports[\"_ZTIN7WelsEnc25IWelsParametersetStrategyE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc25IWelsParametersetStrategyE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc25IWelsParametersetStrategyE\"](...args);\n}\n\n__ZTIN7WelsEnc25IWelsParametersetStrategyE.stub = true;\n\nfunction __ZTIN7WelsEnc27CWelsParametersetIdConstantE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc27CWelsParametersetIdConstantE\"] || wasmImports[\"_ZTIN7WelsEnc27CWelsParametersetIdConstantE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc27CWelsParametersetIdConstantE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc27CWelsParametersetIdConstantE\"](...args);\n}\n\n__ZTIN7WelsEnc27CWelsParametersetIdConstantE.stub = true;\n\nfunction __ZTIN7WelsEnc27CWelsParametersetSpsListingE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc27CWelsParametersetSpsListingE\"] || wasmImports[\"_ZTIN7WelsEnc27CWelsParametersetSpsListingE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc27CWelsParametersetSpsListingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc27CWelsParametersetSpsListingE\"](...args);\n}\n\n__ZTIN7WelsEnc27CWelsParametersetSpsListingE.stub = true;\n\nfunction __ZTIN7WelsEnc28CWelsReference_TemporalLayerE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc28CWelsReference_TemporalLayerE\"] || wasmImports[\"_ZTIN7WelsEnc28CWelsReference_TemporalLayerE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc28CWelsReference_TemporalLayerE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc28CWelsReference_TemporalLayerE\"](...args);\n}\n\n__ZTIN7WelsEnc28CWelsReference_TemporalLayerE.stub = true;\n\nfunction __ZTIN7WelsEnc29CWelsParametersetIdIncreasingE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc29CWelsParametersetIdIncreasingE\"] || wasmImports[\"_ZTIN7WelsEnc29CWelsParametersetIdIncreasingE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc29CWelsParametersetIdIncreasingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc29CWelsParametersetIdIncreasingE\"](...args);\n}\n\n__ZTIN7WelsEnc29CWelsParametersetIdIncreasingE.stub = true;\n\nfunction __ZTIN7WelsEnc30CWelsParametersetIdNonConstantE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc30CWelsParametersetIdNonConstantE\"] || wasmImports[\"_ZTIN7WelsEnc30CWelsParametersetIdNonConstantE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc30CWelsParametersetIdNonConstantE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc30CWelsParametersetIdNonConstantE\"](...args);\n}\n\n__ZTIN7WelsEnc30CWelsParametersetIdNonConstantE.stub = true;\n\nfunction __ZTIN7WelsEnc30CWelsParametersetSpsPpsListingE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc30CWelsParametersetSpsPpsListingE\"] || wasmImports[\"_ZTIN7WelsEnc30CWelsParametersetSpsPpsListingE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc30CWelsParametersetSpsPpsListingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc30CWelsParametersetSpsPpsListingE\"](...args);\n}\n\n__ZTIN7WelsEnc30CWelsParametersetSpsPpsListingE.stub = true;\n\nfunction __ZTIN7WelsEnc30CWelsReference_LosslessWithLtrE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc30CWelsReference_LosslessWithLtrE\"] || wasmImports[\"_ZTIN7WelsEnc30CWelsReference_LosslessWithLtrE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc30CWelsReference_LosslessWithLtrE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc30CWelsReference_LosslessWithLtrE\"](...args);\n}\n\n__ZTIN7WelsEnc30CWelsReference_LosslessWithLtrE.stub = true;\n\nfunction __ZTIN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE\"] || wasmImports[\"_ZTIN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE\"](...args);\n}\n\n__ZTIN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE.stub = true;\n\nfunction __ZTIN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE\"] || wasmImports[\"_ZTIN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE\"](...args);\n}\n\n__ZTIN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE.stub = true;\n\nfunction __ZTIN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE(...args) {\n  if (!wasmImports[\"_ZTIN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE\"] || wasmImports[\"_ZTIN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE\"].stub) abort(\"external symbol '_ZTIN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTIN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE\"](...args);\n}\n\n__ZTIN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE.stub = true;\n\nfunction __ZTS11ISVCEncoder(...args) {\n  if (!wasmImports[\"_ZTS11ISVCEncoder\"] || wasmImports[\"_ZTS11ISVCEncoder\"].stub) abort(\"external symbol '_ZTS11ISVCEncoder' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTS11ISVCEncoder\"](...args);\n}\n\n__ZTS11ISVCEncoder.stub = true;\n\nfunction __ZTS7IWelsVP(...args) {\n  if (!wasmImports[\"_ZTS7IWelsVP\"] || wasmImports[\"_ZTS7IWelsVP\"].stub) abort(\"external symbol '_ZTS7IWelsVP' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTS7IWelsVP\"](...args);\n}\n\n__ZTS7IWelsVP.stub = true;\n\nfunction __ZTSN10WelsCommon11CWelsThreadE(...args) {\n  if (!wasmImports[\"_ZTSN10WelsCommon11CWelsThreadE\"] || wasmImports[\"_ZTSN10WelsCommon11CWelsThreadE\"].stub) abort(\"external symbol '_ZTSN10WelsCommon11CWelsThreadE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN10WelsCommon11CWelsThreadE\"](...args);\n}\n\n__ZTSN10WelsCommon11CWelsThreadE.stub = true;\n\nfunction __ZTSN10WelsCommon12CMemoryAlignE(...args) {\n  if (!wasmImports[\"_ZTSN10WelsCommon12CMemoryAlignE\"] || wasmImports[\"_ZTSN10WelsCommon12CMemoryAlignE\"].stub) abort(\"external symbol '_ZTSN10WelsCommon12CMemoryAlignE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN10WelsCommon12CMemoryAlignE\"](...args);\n}\n\n__ZTSN10WelsCommon12CMemoryAlignE.stub = true;\n\nfunction __ZTSN10WelsCommon13IWelsTaskSinkE(...args) {\n  if (!wasmImports[\"_ZTSN10WelsCommon13IWelsTaskSinkE\"] || wasmImports[\"_ZTSN10WelsCommon13IWelsTaskSinkE\"].stub) abort(\"external symbol '_ZTSN10WelsCommon13IWelsTaskSinkE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN10WelsCommon13IWelsTaskSinkE\"](...args);\n}\n\n__ZTSN10WelsCommon13IWelsTaskSinkE.stub = true;\n\nfunction __ZTSN10WelsCommon15CWelsTaskThreadE(...args) {\n  if (!wasmImports[\"_ZTSN10WelsCommon15CWelsTaskThreadE\"] || wasmImports[\"_ZTSN10WelsCommon15CWelsTaskThreadE\"].stub) abort(\"external symbol '_ZTSN10WelsCommon15CWelsTaskThreadE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN10WelsCommon15CWelsTaskThreadE\"](...args);\n}\n\n__ZTSN10WelsCommon15CWelsTaskThreadE.stub = true;\n\nfunction __ZTSN10WelsCommon15CWelsThreadPoolE(...args) {\n  if (!wasmImports[\"_ZTSN10WelsCommon15CWelsThreadPoolE\"] || wasmImports[\"_ZTSN10WelsCommon15CWelsThreadPoolE\"].stub) abort(\"external symbol '_ZTSN10WelsCommon15CWelsThreadPoolE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN10WelsCommon15CWelsThreadPoolE\"](...args);\n}\n\n__ZTSN10WelsCommon15CWelsThreadPoolE.stub = true;\n\nfunction __ZTSN10WelsCommon19IWelsTaskThreadSinkE(...args) {\n  if (!wasmImports[\"_ZTSN10WelsCommon19IWelsTaskThreadSinkE\"] || wasmImports[\"_ZTSN10WelsCommon19IWelsTaskThreadSinkE\"].stub) abort(\"external symbol '_ZTSN10WelsCommon19IWelsTaskThreadSinkE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN10WelsCommon19IWelsTaskThreadSinkE\"](...args);\n}\n\n__ZTSN10WelsCommon19IWelsTaskThreadSinkE.stub = true;\n\nfunction __ZTSN10WelsCommon9CWelsLockE(...args) {\n  if (!wasmImports[\"_ZTSN10WelsCommon9CWelsLockE\"] || wasmImports[\"_ZTSN10WelsCommon9CWelsLockE\"].stub) abort(\"external symbol '_ZTSN10WelsCommon9CWelsLockE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN10WelsCommon9CWelsLockE\"](...args);\n}\n\n__ZTSN10WelsCommon9CWelsLockE.stub = true;\n\nfunction __ZTSN10WelsCommon9IWelsTaskE(...args) {\n  if (!wasmImports[\"_ZTSN10WelsCommon9IWelsTaskE\"] || wasmImports[\"_ZTSN10WelsCommon9IWelsTaskE\"].stub) abort(\"external symbol '_ZTSN10WelsCommon9IWelsTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN10WelsCommon9IWelsTaskE\"](...args);\n}\n\n__ZTSN10WelsCommon9IWelsTaskE.stub = true;\n\nfunction __ZTSN6WelsVP12CVpFrameWorkE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP12CVpFrameWorkE\"] || wasmImports[\"_ZTSN6WelsVP12CVpFrameWorkE\"].stub) abort(\"external symbol '_ZTSN6WelsVP12CVpFrameWorkE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP12CVpFrameWorkE\"](...args);\n}\n\n__ZTSN6WelsVP12CVpFrameWorkE.stub = true;\n\nfunction __ZTSN6WelsVP13CDownsamplingE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP13CDownsamplingE\"] || wasmImports[\"_ZTSN6WelsVP13CDownsamplingE\"].stub) abort(\"external symbol '_ZTSN6WelsVP13CDownsamplingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP13CDownsamplingE\"](...args);\n}\n\n__ZTSN6WelsVP13CDownsamplingE.stub = true;\n\nfunction __ZTSN6WelsVP14CImageRotatingE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP14CImageRotatingE\"] || wasmImports[\"_ZTSN6WelsVP14CImageRotatingE\"].stub) abort(\"external symbol '_ZTSN6WelsVP14CImageRotatingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP14CImageRotatingE\"](...args);\n}\n\n__ZTSN6WelsVP14CImageRotatingE.stub = true;\n\nfunction __ZTSN6WelsVP15CVAACalculationE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP15CVAACalculationE\"] || wasmImports[\"_ZTSN6WelsVP15CVAACalculationE\"].stub) abort(\"external symbol '_ZTSN6WelsVP15CVAACalculationE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP15CVAACalculationE\"](...args);\n}\n\n__ZTSN6WelsVP15CVAACalculationE.stub = true;\n\nfunction __ZTSN6WelsVP16CScrollDetectionE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP16CScrollDetectionE\"] || wasmImports[\"_ZTSN6WelsVP16CScrollDetectionE\"].stub) abort(\"external symbol '_ZTSN6WelsVP16CScrollDetectionE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP16CScrollDetectionE\"](...args);\n}\n\n__ZTSN6WelsVP16CScrollDetectionE.stub = true;\n\nfunction __ZTSN6WelsVP19CComplexityAnalysisE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP19CComplexityAnalysisE\"] || wasmImports[\"_ZTSN6WelsVP19CComplexityAnalysisE\"].stub) abort(\"external symbol '_ZTSN6WelsVP19CComplexityAnalysisE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP19CComplexityAnalysisE\"](...args);\n}\n\n__ZTSN6WelsVP19CComplexityAnalysisE.stub = true;\n\nfunction __ZTSN6WelsVP20CBackgroundDetectionE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP20CBackgroundDetectionE\"] || wasmImports[\"_ZTSN6WelsVP20CBackgroundDetectionE\"].stub) abort(\"external symbol '_ZTSN6WelsVP20CBackgroundDetectionE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP20CBackgroundDetectionE\"](...args);\n}\n\n__ZTSN6WelsVP20CBackgroundDetectionE.stub = true;\n\nfunction __ZTSN6WelsVP21CAdaptiveQuantizationE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP21CAdaptiveQuantizationE\"] || wasmImports[\"_ZTSN6WelsVP21CAdaptiveQuantizationE\"].stub) abort(\"external symbol '_ZTSN6WelsVP21CAdaptiveQuantizationE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP21CAdaptiveQuantizationE\"](...args);\n}\n\n__ZTSN6WelsVP21CAdaptiveQuantizationE.stub = true;\n\nfunction __ZTSN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE\"] || wasmImports[\"_ZTSN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE\"].stub) abort(\"external symbol '_ZTSN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE\"](...args);\n}\n\n__ZTSN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE.stub = true;\n\nfunction __ZTSN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE\"] || wasmImports[\"_ZTSN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE\"].stub) abort(\"external symbol '_ZTSN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE\"](...args);\n}\n\n__ZTSN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE.stub = true;\n\nfunction __ZTSN6WelsVP25CComplexityAnalysisScreenE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP25CComplexityAnalysisScreenE\"] || wasmImports[\"_ZTSN6WelsVP25CComplexityAnalysisScreenE\"].stub) abort(\"external symbol '_ZTSN6WelsVP25CComplexityAnalysisScreenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP25CComplexityAnalysisScreenE\"](...args);\n}\n\n__ZTSN6WelsVP25CComplexityAnalysisScreenE.stub = true;\n\nfunction __ZTSN6WelsVP25CSceneChangeDetectorVideoE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP25CSceneChangeDetectorVideoE\"] || wasmImports[\"_ZTSN6WelsVP25CSceneChangeDetectorVideoE\"].stub) abort(\"external symbol '_ZTSN6WelsVP25CSceneChangeDetectorVideoE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP25CSceneChangeDetectorVideoE\"](...args);\n}\n\n__ZTSN6WelsVP25CSceneChangeDetectorVideoE.stub = true;\n\nfunction __ZTSN6WelsVP26CSceneChangeDetectorScreenE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP26CSceneChangeDetectorScreenE\"] || wasmImports[\"_ZTSN6WelsVP26CSceneChangeDetectorScreenE\"].stub) abort(\"external symbol '_ZTSN6WelsVP26CSceneChangeDetectorScreenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP26CSceneChangeDetectorScreenE\"](...args);\n}\n\n__ZTSN6WelsVP26CSceneChangeDetectorScreenE.stub = true;\n\nfunction __ZTSN6WelsVP9CDenoiserE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP9CDenoiserE\"] || wasmImports[\"_ZTSN6WelsVP9CDenoiserE\"].stub) abort(\"external symbol '_ZTSN6WelsVP9CDenoiserE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP9CDenoiserE\"](...args);\n}\n\n__ZTSN6WelsVP9CDenoiserE.stub = true;\n\nfunction __ZTSN6WelsVP9IStrategyE(...args) {\n  if (!wasmImports[\"_ZTSN6WelsVP9IStrategyE\"] || wasmImports[\"_ZTSN6WelsVP9IStrategyE\"].stub) abort(\"external symbol '_ZTSN6WelsVP9IStrategyE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN6WelsVP9IStrategyE\"](...args);\n}\n\n__ZTSN6WelsVP9IStrategyE.stub = true;\n\nfunction __ZTSN7WelsEnc13CWelsBaseTaskE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc13CWelsBaseTaskE\"] || wasmImports[\"_ZTSN7WelsEnc13CWelsBaseTaskE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc13CWelsBaseTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc13CWelsBaseTaskE\"](...args);\n}\n\n__ZTSN7WelsEnc13CWelsBaseTaskE.stub = true;\n\nfunction __ZTSN7WelsEnc15CWelsPreProcessE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc15CWelsPreProcessE\"] || wasmImports[\"_ZTSN7WelsEnc15CWelsPreProcessE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc15CWelsPreProcessE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc15CWelsPreProcessE\"](...args);\n}\n\n__ZTSN7WelsEnc15CWelsPreProcessE.stub = true;\n\nfunction __ZTSN7WelsEnc15IWelsTaskManageE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc15IWelsTaskManageE\"] || wasmImports[\"_ZTSN7WelsEnc15IWelsTaskManageE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc15IWelsTaskManageE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc15IWelsTaskManageE\"](...args);\n}\n\n__ZTSN7WelsEnc15IWelsTaskManageE.stub = true;\n\nfunction __ZTSN7WelsEnc19CWelsH264SVCEncoderE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc19CWelsH264SVCEncoderE\"] || wasmImports[\"_ZTSN7WelsEnc19CWelsH264SVCEncoderE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc19CWelsH264SVCEncoderE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc19CWelsH264SVCEncoderE\"](...args);\n}\n\n__ZTSN7WelsEnc19CWelsH264SVCEncoderE.stub = true;\n\nfunction __ZTSN7WelsEnc19CWelsTaskManageBaseE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc19CWelsTaskManageBaseE\"] || wasmImports[\"_ZTSN7WelsEnc19CWelsTaskManageBaseE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc19CWelsTaskManageBaseE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc19CWelsTaskManageBaseE\"](...args);\n}\n\n__ZTSN7WelsEnc19CWelsTaskManageBaseE.stub = true;\n\nfunction __ZTSN7WelsEnc20CWelsPreProcessVideoE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc20CWelsPreProcessVideoE\"] || wasmImports[\"_ZTSN7WelsEnc20CWelsPreProcessVideoE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc20CWelsPreProcessVideoE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc20CWelsPreProcessVideoE\"](...args);\n}\n\n__ZTSN7WelsEnc20CWelsPreProcessVideoE.stub = true;\n\nfunction __ZTSN7WelsEnc20CWelsUpdateMbMapTaskE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc20CWelsUpdateMbMapTaskE\"] || wasmImports[\"_ZTSN7WelsEnc20CWelsUpdateMbMapTaskE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc20CWelsUpdateMbMapTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc20CWelsUpdateMbMapTaskE\"](...args);\n}\n\n__ZTSN7WelsEnc20CWelsUpdateMbMapTaskE.stub = true;\n\nfunction __ZTSN7WelsEnc21CWelsPreProcessScreenE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc21CWelsPreProcessScreenE\"] || wasmImports[\"_ZTSN7WelsEnc21CWelsPreProcessScreenE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc21CWelsPreProcessScreenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc21CWelsPreProcessScreenE\"](...args);\n}\n\n__ZTSN7WelsEnc21CWelsPreProcessScreenE.stub = true;\n\nfunction __ZTSN7WelsEnc21CWelsReference_ScreenE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc21CWelsReference_ScreenE\"] || wasmImports[\"_ZTSN7WelsEnc21CWelsReference_ScreenE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc21CWelsReference_ScreenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc21CWelsReference_ScreenE\"](...args);\n}\n\n__ZTSN7WelsEnc21CWelsReference_ScreenE.stub = true;\n\nfunction __ZTSN7WelsEnc22CWelsSliceEncodingTaskE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc22CWelsSliceEncodingTaskE\"] || wasmImports[\"_ZTSN7WelsEnc22CWelsSliceEncodingTaskE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc22CWelsSliceEncodingTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc22CWelsSliceEncodingTaskE\"](...args);\n}\n\n__ZTSN7WelsEnc22CWelsSliceEncodingTaskE.stub = true;\n\nfunction __ZTSN7WelsEnc22IWelsReferenceStrategyE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc22IWelsReferenceStrategyE\"] || wasmImports[\"_ZTSN7WelsEnc22IWelsReferenceStrategyE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc22IWelsReferenceStrategyE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc22IWelsReferenceStrategyE\"](...args);\n}\n\n__ZTSN7WelsEnc22IWelsReferenceStrategyE.stub = true;\n\nfunction __ZTSN7WelsEnc25IWelsParametersetStrategyE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc25IWelsParametersetStrategyE\"] || wasmImports[\"_ZTSN7WelsEnc25IWelsParametersetStrategyE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc25IWelsParametersetStrategyE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc25IWelsParametersetStrategyE\"](...args);\n}\n\n__ZTSN7WelsEnc25IWelsParametersetStrategyE.stub = true;\n\nfunction __ZTSN7WelsEnc27CWelsParametersetIdConstantE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc27CWelsParametersetIdConstantE\"] || wasmImports[\"_ZTSN7WelsEnc27CWelsParametersetIdConstantE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc27CWelsParametersetIdConstantE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc27CWelsParametersetIdConstantE\"](...args);\n}\n\n__ZTSN7WelsEnc27CWelsParametersetIdConstantE.stub = true;\n\nfunction __ZTSN7WelsEnc27CWelsParametersetSpsListingE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc27CWelsParametersetSpsListingE\"] || wasmImports[\"_ZTSN7WelsEnc27CWelsParametersetSpsListingE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc27CWelsParametersetSpsListingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc27CWelsParametersetSpsListingE\"](...args);\n}\n\n__ZTSN7WelsEnc27CWelsParametersetSpsListingE.stub = true;\n\nfunction __ZTSN7WelsEnc28CWelsReference_TemporalLayerE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc28CWelsReference_TemporalLayerE\"] || wasmImports[\"_ZTSN7WelsEnc28CWelsReference_TemporalLayerE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc28CWelsReference_TemporalLayerE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc28CWelsReference_TemporalLayerE\"](...args);\n}\n\n__ZTSN7WelsEnc28CWelsReference_TemporalLayerE.stub = true;\n\nfunction __ZTSN7WelsEnc29CWelsParametersetIdIncreasingE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc29CWelsParametersetIdIncreasingE\"] || wasmImports[\"_ZTSN7WelsEnc29CWelsParametersetIdIncreasingE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc29CWelsParametersetIdIncreasingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc29CWelsParametersetIdIncreasingE\"](...args);\n}\n\n__ZTSN7WelsEnc29CWelsParametersetIdIncreasingE.stub = true;\n\nfunction __ZTSN7WelsEnc30CWelsParametersetIdNonConstantE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc30CWelsParametersetIdNonConstantE\"] || wasmImports[\"_ZTSN7WelsEnc30CWelsParametersetIdNonConstantE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc30CWelsParametersetIdNonConstantE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc30CWelsParametersetIdNonConstantE\"](...args);\n}\n\n__ZTSN7WelsEnc30CWelsParametersetIdNonConstantE.stub = true;\n\nfunction __ZTSN7WelsEnc30CWelsParametersetSpsPpsListingE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc30CWelsParametersetSpsPpsListingE\"] || wasmImports[\"_ZTSN7WelsEnc30CWelsParametersetSpsPpsListingE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc30CWelsParametersetSpsPpsListingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc30CWelsParametersetSpsPpsListingE\"](...args);\n}\n\n__ZTSN7WelsEnc30CWelsParametersetSpsPpsListingE.stub = true;\n\nfunction __ZTSN7WelsEnc30CWelsReference_LosslessWithLtrE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc30CWelsReference_LosslessWithLtrE\"] || wasmImports[\"_ZTSN7WelsEnc30CWelsReference_LosslessWithLtrE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc30CWelsReference_LosslessWithLtrE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc30CWelsReference_LosslessWithLtrE\"](...args);\n}\n\n__ZTSN7WelsEnc30CWelsReference_LosslessWithLtrE.stub = true;\n\nfunction __ZTSN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE\"] || wasmImports[\"_ZTSN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE\"](...args);\n}\n\n__ZTSN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE.stub = true;\n\nfunction __ZTSN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE\"] || wasmImports[\"_ZTSN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE\"](...args);\n}\n\n__ZTSN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE.stub = true;\n\nfunction __ZTSN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE(...args) {\n  if (!wasmImports[\"_ZTSN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE\"] || wasmImports[\"_ZTSN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE\"].stub) abort(\"external symbol '_ZTSN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTSN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE\"](...args);\n}\n\n__ZTSN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE.stub = true;\n\nfunction __ZTVN10WelsCommon11CWelsThreadE(...args) {\n  if (!wasmImports[\"_ZTVN10WelsCommon11CWelsThreadE\"] || wasmImports[\"_ZTVN10WelsCommon11CWelsThreadE\"].stub) abort(\"external symbol '_ZTVN10WelsCommon11CWelsThreadE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN10WelsCommon11CWelsThreadE\"](...args);\n}\n\n__ZTVN10WelsCommon11CWelsThreadE.stub = true;\n\nfunction __ZTVN10WelsCommon12CMemoryAlignE(...args) {\n  if (!wasmImports[\"_ZTVN10WelsCommon12CMemoryAlignE\"] || wasmImports[\"_ZTVN10WelsCommon12CMemoryAlignE\"].stub) abort(\"external symbol '_ZTVN10WelsCommon12CMemoryAlignE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN10WelsCommon12CMemoryAlignE\"](...args);\n}\n\n__ZTVN10WelsCommon12CMemoryAlignE.stub = true;\n\nfunction __ZTVN10WelsCommon15CWelsTaskThreadE(...args) {\n  if (!wasmImports[\"_ZTVN10WelsCommon15CWelsTaskThreadE\"] || wasmImports[\"_ZTVN10WelsCommon15CWelsTaskThreadE\"].stub) abort(\"external symbol '_ZTVN10WelsCommon15CWelsTaskThreadE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN10WelsCommon15CWelsTaskThreadE\"](...args);\n}\n\n__ZTVN10WelsCommon15CWelsTaskThreadE.stub = true;\n\nfunction __ZTVN10WelsCommon15CWelsThreadPoolE(...args) {\n  if (!wasmImports[\"_ZTVN10WelsCommon15CWelsThreadPoolE\"] || wasmImports[\"_ZTVN10WelsCommon15CWelsThreadPoolE\"].stub) abort(\"external symbol '_ZTVN10WelsCommon15CWelsThreadPoolE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN10WelsCommon15CWelsThreadPoolE\"](...args);\n}\n\n__ZTVN10WelsCommon15CWelsThreadPoolE.stub = true;\n\nfunction __ZTVN10WelsCommon9CWelsLockE(...args) {\n  if (!wasmImports[\"_ZTVN10WelsCommon9CWelsLockE\"] || wasmImports[\"_ZTVN10WelsCommon9CWelsLockE\"].stub) abort(\"external symbol '_ZTVN10WelsCommon9CWelsLockE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN10WelsCommon9CWelsLockE\"](...args);\n}\n\n__ZTVN10WelsCommon9CWelsLockE.stub = true;\n\nfunction __ZTVN6WelsVP12CVpFrameWorkE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP12CVpFrameWorkE\"] || wasmImports[\"_ZTVN6WelsVP12CVpFrameWorkE\"].stub) abort(\"external symbol '_ZTVN6WelsVP12CVpFrameWorkE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP12CVpFrameWorkE\"](...args);\n}\n\n__ZTVN6WelsVP12CVpFrameWorkE.stub = true;\n\nfunction __ZTVN6WelsVP13CDownsamplingE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP13CDownsamplingE\"] || wasmImports[\"_ZTVN6WelsVP13CDownsamplingE\"].stub) abort(\"external symbol '_ZTVN6WelsVP13CDownsamplingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP13CDownsamplingE\"](...args);\n}\n\n__ZTVN6WelsVP13CDownsamplingE.stub = true;\n\nfunction __ZTVN6WelsVP14CImageRotatingE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP14CImageRotatingE\"] || wasmImports[\"_ZTVN6WelsVP14CImageRotatingE\"].stub) abort(\"external symbol '_ZTVN6WelsVP14CImageRotatingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP14CImageRotatingE\"](...args);\n}\n\n__ZTVN6WelsVP14CImageRotatingE.stub = true;\n\nfunction __ZTVN6WelsVP15CVAACalculationE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP15CVAACalculationE\"] || wasmImports[\"_ZTVN6WelsVP15CVAACalculationE\"].stub) abort(\"external symbol '_ZTVN6WelsVP15CVAACalculationE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP15CVAACalculationE\"](...args);\n}\n\n__ZTVN6WelsVP15CVAACalculationE.stub = true;\n\nfunction __ZTVN6WelsVP16CScrollDetectionE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP16CScrollDetectionE\"] || wasmImports[\"_ZTVN6WelsVP16CScrollDetectionE\"].stub) abort(\"external symbol '_ZTVN6WelsVP16CScrollDetectionE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP16CScrollDetectionE\"](...args);\n}\n\n__ZTVN6WelsVP16CScrollDetectionE.stub = true;\n\nfunction __ZTVN6WelsVP19CComplexityAnalysisE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP19CComplexityAnalysisE\"] || wasmImports[\"_ZTVN6WelsVP19CComplexityAnalysisE\"].stub) abort(\"external symbol '_ZTVN6WelsVP19CComplexityAnalysisE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP19CComplexityAnalysisE\"](...args);\n}\n\n__ZTVN6WelsVP19CComplexityAnalysisE.stub = true;\n\nfunction __ZTVN6WelsVP20CBackgroundDetectionE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP20CBackgroundDetectionE\"] || wasmImports[\"_ZTVN6WelsVP20CBackgroundDetectionE\"].stub) abort(\"external symbol '_ZTVN6WelsVP20CBackgroundDetectionE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP20CBackgroundDetectionE\"](...args);\n}\n\n__ZTVN6WelsVP20CBackgroundDetectionE.stub = true;\n\nfunction __ZTVN6WelsVP21CAdaptiveQuantizationE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP21CAdaptiveQuantizationE\"] || wasmImports[\"_ZTVN6WelsVP21CAdaptiveQuantizationE\"].stub) abort(\"external symbol '_ZTVN6WelsVP21CAdaptiveQuantizationE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP21CAdaptiveQuantizationE\"](...args);\n}\n\n__ZTVN6WelsVP21CAdaptiveQuantizationE.stub = true;\n\nfunction __ZTVN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE\"] || wasmImports[\"_ZTVN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE\"].stub) abort(\"external symbol '_ZTVN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE\"](...args);\n}\n\n__ZTVN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE.stub = true;\n\nfunction __ZTVN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE\"] || wasmImports[\"_ZTVN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE\"].stub) abort(\"external symbol '_ZTVN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE\"](...args);\n}\n\n__ZTVN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE.stub = true;\n\nfunction __ZTVN6WelsVP25CComplexityAnalysisScreenE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP25CComplexityAnalysisScreenE\"] || wasmImports[\"_ZTVN6WelsVP25CComplexityAnalysisScreenE\"].stub) abort(\"external symbol '_ZTVN6WelsVP25CComplexityAnalysisScreenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP25CComplexityAnalysisScreenE\"](...args);\n}\n\n__ZTVN6WelsVP25CComplexityAnalysisScreenE.stub = true;\n\nfunction __ZTVN6WelsVP25CSceneChangeDetectorVideoE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP25CSceneChangeDetectorVideoE\"] || wasmImports[\"_ZTVN6WelsVP25CSceneChangeDetectorVideoE\"].stub) abort(\"external symbol '_ZTVN6WelsVP25CSceneChangeDetectorVideoE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP25CSceneChangeDetectorVideoE\"](...args);\n}\n\n__ZTVN6WelsVP25CSceneChangeDetectorVideoE.stub = true;\n\nfunction __ZTVN6WelsVP26CSceneChangeDetectorScreenE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP26CSceneChangeDetectorScreenE\"] || wasmImports[\"_ZTVN6WelsVP26CSceneChangeDetectorScreenE\"].stub) abort(\"external symbol '_ZTVN6WelsVP26CSceneChangeDetectorScreenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP26CSceneChangeDetectorScreenE\"](...args);\n}\n\n__ZTVN6WelsVP26CSceneChangeDetectorScreenE.stub = true;\n\nfunction __ZTVN6WelsVP9CDenoiserE(...args) {\n  if (!wasmImports[\"_ZTVN6WelsVP9CDenoiserE\"] || wasmImports[\"_ZTVN6WelsVP9CDenoiserE\"].stub) abort(\"external symbol '_ZTVN6WelsVP9CDenoiserE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN6WelsVP9CDenoiserE\"](...args);\n}\n\n__ZTVN6WelsVP9CDenoiserE.stub = true;\n\nfunction __ZTVN7WelsEnc15CWelsPreProcessE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc15CWelsPreProcessE\"] || wasmImports[\"_ZTVN7WelsEnc15CWelsPreProcessE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc15CWelsPreProcessE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc15CWelsPreProcessE\"](...args);\n}\n\n__ZTVN7WelsEnc15CWelsPreProcessE.stub = true;\n\nfunction __ZTVN7WelsEnc19CWelsH264SVCEncoderE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc19CWelsH264SVCEncoderE\"] || wasmImports[\"_ZTVN7WelsEnc19CWelsH264SVCEncoderE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc19CWelsH264SVCEncoderE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc19CWelsH264SVCEncoderE\"](...args);\n}\n\n__ZTVN7WelsEnc19CWelsH264SVCEncoderE.stub = true;\n\nfunction __ZTVN7WelsEnc19CWelsTaskManageBaseE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc19CWelsTaskManageBaseE\"] || wasmImports[\"_ZTVN7WelsEnc19CWelsTaskManageBaseE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc19CWelsTaskManageBaseE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc19CWelsTaskManageBaseE\"](...args);\n}\n\n__ZTVN7WelsEnc19CWelsTaskManageBaseE.stub = true;\n\nfunction __ZTVN7WelsEnc20CWelsPreProcessVideoE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc20CWelsPreProcessVideoE\"] || wasmImports[\"_ZTVN7WelsEnc20CWelsPreProcessVideoE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc20CWelsPreProcessVideoE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc20CWelsPreProcessVideoE\"](...args);\n}\n\n__ZTVN7WelsEnc20CWelsPreProcessVideoE.stub = true;\n\nfunction __ZTVN7WelsEnc20CWelsUpdateMbMapTaskE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc20CWelsUpdateMbMapTaskE\"] || wasmImports[\"_ZTVN7WelsEnc20CWelsUpdateMbMapTaskE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc20CWelsUpdateMbMapTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc20CWelsUpdateMbMapTaskE\"](...args);\n}\n\n__ZTVN7WelsEnc20CWelsUpdateMbMapTaskE.stub = true;\n\nfunction __ZTVN7WelsEnc21CWelsPreProcessScreenE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc21CWelsPreProcessScreenE\"] || wasmImports[\"_ZTVN7WelsEnc21CWelsPreProcessScreenE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc21CWelsPreProcessScreenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc21CWelsPreProcessScreenE\"](...args);\n}\n\n__ZTVN7WelsEnc21CWelsPreProcessScreenE.stub = true;\n\nfunction __ZTVN7WelsEnc21CWelsReference_ScreenE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc21CWelsReference_ScreenE\"] || wasmImports[\"_ZTVN7WelsEnc21CWelsReference_ScreenE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc21CWelsReference_ScreenE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc21CWelsReference_ScreenE\"](...args);\n}\n\n__ZTVN7WelsEnc21CWelsReference_ScreenE.stub = true;\n\nfunction __ZTVN7WelsEnc22CWelsSliceEncodingTaskE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc22CWelsSliceEncodingTaskE\"] || wasmImports[\"_ZTVN7WelsEnc22CWelsSliceEncodingTaskE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc22CWelsSliceEncodingTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc22CWelsSliceEncodingTaskE\"](...args);\n}\n\n__ZTVN7WelsEnc22CWelsSliceEncodingTaskE.stub = true;\n\nfunction __ZTVN7WelsEnc27CWelsParametersetIdConstantE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc27CWelsParametersetIdConstantE\"] || wasmImports[\"_ZTVN7WelsEnc27CWelsParametersetIdConstantE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc27CWelsParametersetIdConstantE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc27CWelsParametersetIdConstantE\"](...args);\n}\n\n__ZTVN7WelsEnc27CWelsParametersetIdConstantE.stub = true;\n\nfunction __ZTVN7WelsEnc27CWelsParametersetSpsListingE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc27CWelsParametersetSpsListingE\"] || wasmImports[\"_ZTVN7WelsEnc27CWelsParametersetSpsListingE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc27CWelsParametersetSpsListingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc27CWelsParametersetSpsListingE\"](...args);\n}\n\n__ZTVN7WelsEnc27CWelsParametersetSpsListingE.stub = true;\n\nfunction __ZTVN7WelsEnc28CWelsReference_TemporalLayerE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc28CWelsReference_TemporalLayerE\"] || wasmImports[\"_ZTVN7WelsEnc28CWelsReference_TemporalLayerE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc28CWelsReference_TemporalLayerE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc28CWelsReference_TemporalLayerE\"](...args);\n}\n\n__ZTVN7WelsEnc28CWelsReference_TemporalLayerE.stub = true;\n\nfunction __ZTVN7WelsEnc29CWelsParametersetIdIncreasingE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc29CWelsParametersetIdIncreasingE\"] || wasmImports[\"_ZTVN7WelsEnc29CWelsParametersetIdIncreasingE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc29CWelsParametersetIdIncreasingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc29CWelsParametersetIdIncreasingE\"](...args);\n}\n\n__ZTVN7WelsEnc29CWelsParametersetIdIncreasingE.stub = true;\n\nfunction __ZTVN7WelsEnc30CWelsParametersetSpsPpsListingE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc30CWelsParametersetSpsPpsListingE\"] || wasmImports[\"_ZTVN7WelsEnc30CWelsParametersetSpsPpsListingE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc30CWelsParametersetSpsPpsListingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc30CWelsParametersetSpsPpsListingE\"](...args);\n}\n\n__ZTVN7WelsEnc30CWelsParametersetSpsPpsListingE.stub = true;\n\nfunction __ZTVN7WelsEnc30CWelsReference_LosslessWithLtrE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc30CWelsReference_LosslessWithLtrE\"] || wasmImports[\"_ZTVN7WelsEnc30CWelsReference_LosslessWithLtrE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc30CWelsReference_LosslessWithLtrE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc30CWelsReference_LosslessWithLtrE\"](...args);\n}\n\n__ZTVN7WelsEnc30CWelsReference_LosslessWithLtrE.stub = true;\n\nfunction __ZTVN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE\"] || wasmImports[\"_ZTVN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE\"](...args);\n}\n\n__ZTVN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE.stub = true;\n\nfunction __ZTVN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE\"] || wasmImports[\"_ZTVN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE\"](...args);\n}\n\n__ZTVN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE.stub = true;\n\nfunction __ZTVN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE(...args) {\n  if (!wasmImports[\"_ZTVN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE\"] || wasmImports[\"_ZTVN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE\"].stub) abort(\"external symbol '_ZTVN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZTVN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE\"](...args);\n}\n\n__ZTVN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE.stub = true;\n\nfunction __ZThn4_N7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv(...args) {\n  if (!wasmImports[\"_ZThn4_N7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv\"] || wasmImports[\"_ZThn4_N7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv\"].stub) abort(\"external symbol '_ZThn4_N7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZThn4_N7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv\"](...args);\n}\n\n__ZThn4_N7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv.stub = true;\n\nfunction __ZThn4_N7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv(...args) {\n  if (!wasmImports[\"_ZThn4_N7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv\"] || wasmImports[\"_ZThn4_N7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv\"].stub) abort(\"external symbol '_ZThn4_N7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZThn4_N7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv\"](...args);\n}\n\n__ZThn4_N7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv.stub = true;\n\nfunction __ZThn72_N10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE(...args) {\n  if (!wasmImports[\"_ZThn72_N10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE\"] || wasmImports[\"_ZThn72_N10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE\"].stub) abort(\"external symbol '_ZThn72_N10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZThn72_N10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE\"](...args);\n}\n\n__ZThn72_N10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE.stub = true;\n\nfunction __ZThn72_N10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE(...args) {\n  if (!wasmImports[\"_ZThn72_N10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE\"] || wasmImports[\"_ZThn72_N10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE\"].stub) abort(\"external symbol '_ZThn72_N10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZThn72_N10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE\"](...args);\n}\n\n__ZThn72_N10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE.stub = true;\n\nfunction __ZZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamEE7kaOUPos(...args) {\n  if (!wasmImports[\"_ZZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamEE7kaOUPos\"] || wasmImports[\"_ZZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamEE7kaOUPos\"].stub) abort(\"external symbol '_ZZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamEE7kaOUPos' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"_ZZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamEE7kaOUPos\"](...args);\n}\n\n__ZZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamEE7kaOUPos.stub = true;\n\nvar ___assert_fail = (condition, filename, line, func) => abort(`Assertion failed: ${UTF8ToString(condition)}, at: ` + [ filename ? UTF8ToString(filename) : \"unknown filename\", line, func ? UTF8ToString(func) : \"unknown function\" ]);\n\n___assert_fail.sig = \"vppip\";\n\nvar ___call_sighandler = (fp, sig) => getWasmTableEntry(fp)(sig);\n\n___call_sighandler.sig = \"vpi\";\n\nclass ExceptionInfo {\n  // excPtr - Thrown object pointer to wrap. Metadata pointer is calculated from it.\n  constructor(excPtr) {\n    this.excPtr = excPtr;\n    this.ptr = excPtr - 24;\n  }\n  set_type(type) {\n    (growMemViews(), HEAPU32)[(((this.ptr) + (4)) >> 2)] = type;\n  }\n  get_type() {\n    return (growMemViews(), HEAPU32)[(((this.ptr) + (4)) >> 2)];\n  }\n  set_destructor(destructor) {\n    (growMemViews(), HEAPU32)[(((this.ptr) + (8)) >> 2)] = destructor;\n  }\n  get_destructor() {\n    return (growMemViews(), HEAPU32)[(((this.ptr) + (8)) >> 2)];\n  }\n  set_caught(caught) {\n    caught = caught ? 1 : 0;\n    (growMemViews(), HEAP8)[(this.ptr) + (12)] = caught;\n  }\n  get_caught() {\n    return (growMemViews(), HEAP8)[(this.ptr) + (12)] != 0;\n  }\n  set_rethrown(rethrown) {\n    rethrown = rethrown ? 1 : 0;\n    (growMemViews(), HEAP8)[(this.ptr) + (13)] = rethrown;\n  }\n  get_rethrown() {\n    return (growMemViews(), HEAP8)[(this.ptr) + (13)] != 0;\n  }\n  // Initialize native structure fields. Should be called once after allocated.\n  init(type, destructor) {\n    this.set_adjusted_ptr(0);\n    this.set_type(type);\n    this.set_destructor(destructor);\n  }\n  set_adjusted_ptr(adjustedPtr) {\n    (growMemViews(), HEAPU32)[(((this.ptr) + (16)) >> 2)] = adjustedPtr;\n  }\n  get_adjusted_ptr() {\n    return (growMemViews(), HEAPU32)[(((this.ptr) + (16)) >> 2)];\n  }\n}\n\nvar uncaughtExceptionCount = 0;\n\nvar ___cxa_throw = (ptr, type, destructor) => {\n  var info = new ExceptionInfo(ptr);\n  // Initialize ExceptionInfo content after it was allocated in __cxa_allocate_exception.\n  info.init(type, destructor);\n  uncaughtExceptionCount++;\n  assert(false, \"Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch. (note: in dynamic linking, if a side module wants exceptions, the main module must be built with that support)\");\n};\n\n___cxa_throw.sig = \"vppp\";\n\nfunction pthreadCreateProxied(pthread_ptr, attr, startRoutine, arg) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(2, 0, 1, pthread_ptr, attr, startRoutine, arg);\n  return ___pthread_create_js(pthread_ptr, attr, startRoutine, arg);\n}\n\nvar _emscripten_has_threading_support = () => !!globalThis.SharedArrayBuffer;\n\n_emscripten_has_threading_support.sig = \"i\";\n\nvar ___pthread_create_js = (pthread_ptr, attr, startRoutine, arg) => {\n  if (!_emscripten_has_threading_support()) {\n    dbg(\"pthread_create: environment does not support SharedArrayBuffer, pthreads are not available\");\n    return 6;\n  }\n  // List of JS objects that will transfer ownership to the Worker hosting the thread\n  var transferList = [];\n  var error = 0;\n  // Synchronously proxy the thread creation to main thread if possible. If we\n  // need to transfer ownership of objects, then proxy asynchronously via\n  // postMessage.\n  if (ENVIRONMENT_IS_PTHREAD && (transferList.length === 0 || error)) {\n    return pthreadCreateProxied(pthread_ptr, attr, startRoutine, arg);\n  }\n  // If on the main thread, and accessing Canvas/OffscreenCanvas failed, abort\n  // with the detected error.\n  if (error) return error;\n  var threadParams = {\n    startRoutine,\n    pthread_ptr,\n    arg,\n    transferList\n  };\n  if (ENVIRONMENT_IS_PTHREAD) {\n    // The prepopulated pool of web workers that can host pthreads is stored\n    // in the main JS thread. Therefore if a pthread is attempting to spawn a\n    // new thread, the thread creation must be deferred to the main JS thread.\n    threadParams.cmd = 5;\n    postMessage(threadParams, transferList);\n    // When we defer thread creation this way, we have no way to detect thread\n    // creation synchronously today, so we have to assume success and return 0.\n    return 0;\n  }\n  // We are the main thread, so we have the pthread warmup pool in this\n  // thread and can fire off JS thread creation directly ourselves.\n  return spawnThread(threadParams);\n};\n\n___pthread_create_js.sig = \"ipppp\";\n\nvar __abort_js = () => abort(\"native code called abort()\");\n\n__abort_js.sig = \"v\";\n\nvar dlSetError = msg => {\n  var sp = stackSave();\n  var cmsg = stringToUTF8OnStack(msg);\n  ___dl_seterr(cmsg, 0);\n  stackRestore(sp);\n};\n\nvar dlopenInternal = (handle, jsflags) => {\n  // void *dlopen(const char *file, int mode);\n  // http://pubs.opengroup.org/onlinepubs/009695399/functions/dlopen.html\n  var filename = UTF8ToString(handle + 36);\n  var flags = (growMemViews(), HEAP32)[(((handle) + (4)) >> 2)];\n  filename = PATH.normalize(filename);\n  var global = Boolean(flags & 256);\n  var localScope = global ? null : {};\n  // We don't care about RTLD_NOW and RTLD_LAZY.\n  var combinedFlags = {\n    global,\n    nodelete: Boolean(flags & 4096),\n    loadAsync: jsflags.loadAsync\n  };\n  if (jsflags.loadAsync) {\n    return loadDynamicLibrary(filename, combinedFlags, localScope, handle);\n  }\n  try {\n    return loadDynamicLibrary(filename, combinedFlags, localScope, handle);\n  } catch (e) {\n    err(`error loading dynamic library ${filename}: ${e}`);\n    dlSetError(`could not load dynamic lib: ${filename}\\n${e}`);\n    return 0;\n  }\n};\n\nvar __dlopen_js = handle => dlopenInternal(handle, {\n  loadAsync: false\n});\n\n__dlopen_js.sig = \"pp\";\n\nvar __dlsym_catchup_js = (handle, symbolIndex) => {\n  var lib = LDSO.loadedLibsByHandle[handle];\n  var symDict = lib.exports;\n  var symName = Object.keys(symDict)[symbolIndex];\n  var sym = symDict[symName];\n  var result = addFunction(sym, sym.sig);\n  return result;\n};\n\n__dlsym_catchup_js.sig = \"ppi\";\n\nvar emval_freelist = [];\n\nvar emval_handles = [ 0, 1, , 1, null, 1, true, 1, false, 1 ];\n\nvar BindingError = class BindingError extends Error {\n  constructor(message) {\n    super(message);\n    this.name = \"BindingError\";\n  }\n};\n\nvar throwBindingError = message => {\n  throw new BindingError(message);\n};\n\nvar Emval = {\n  toValue: handle => {\n    if (!handle) {\n      throwBindingError(`Cannot use deleted val. handle = ${handle}`);\n    }\n    // handle 2 is supposed to be `undefined`.\n    assert(handle === 2 || emval_handles[handle] !== undefined && handle % 2 === 0, `invalid handle: ${handle}`);\n    return emval_handles[handle];\n  },\n  toHandle: value => {\n    switch (value) {\n     case undefined:\n      return 2;\n\n     case null:\n      return 4;\n\n     case true:\n      return 6;\n\n     case false:\n      return 8;\n\n     default:\n      {\n        const handle = emval_freelist.pop() || emval_handles.length;\n        emval_handles[handle] = value;\n        emval_handles[handle + 1] = 1;\n        return handle;\n      }\n    }\n  }\n};\n\nclass PureVirtualError extends Error {}\n\nvar AsciiToString = ptr => {\n  var str = \"\";\n  while (1) {\n    var ch = (growMemViews(), HEAPU8)[ptr++];\n    if (!ch) return str;\n    str += String.fromCharCode(ch);\n  }\n};\n\nvar registeredInstances = {};\n\nvar getBasestPointer = (class_, ptr) => {\n  if (ptr === undefined) {\n    throwBindingError(\"ptr should not be undefined\");\n  }\n  while (class_.baseClass) {\n    ptr = class_.upcast(ptr);\n    class_ = class_.baseClass;\n  }\n  return ptr;\n};\n\nvar registerInheritedInstance = (class_, ptr, instance) => {\n  ptr = getBasestPointer(class_, ptr);\n  if (registeredInstances.hasOwnProperty(ptr)) {\n    throwBindingError(`Tried to register registered instance: ${ptr}`);\n  } else {\n    registeredInstances[ptr] = instance;\n  }\n};\n\nvar registeredTypes = {};\n\nvar getTypeName = type => {\n  var ptr = ___getTypeName(type);\n  var rv = AsciiToString(ptr);\n  _free(ptr);\n  return rv;\n};\n\nvar requireRegisteredType = (rawType, humanName) => {\n  var impl = registeredTypes[rawType];\n  if (undefined === impl) {\n    throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`);\n  }\n  return impl;\n};\n\nvar unregisterInheritedInstance = (class_, ptr) => {\n  ptr = getBasestPointer(class_, ptr);\n  if (registeredInstances.hasOwnProperty(ptr)) {\n    delete registeredInstances[ptr];\n  } else {\n    throwBindingError(`Tried to unregister unregistered instance: ${ptr}`);\n  }\n};\n\nvar detachFinalizer = handle => {};\n\nvar finalizationRegistry = false;\n\nvar runDestructor = $$ => {\n  if ($$.smartPtr) {\n    $$.smartPtrType.rawDestructor($$.smartPtr);\n  } else {\n    $$.ptrType.registeredClass.rawDestructor($$.ptr);\n  }\n};\n\nvar releaseClassHandle = $$ => {\n  $$.count.value -= 1;\n  var toDelete = 0 === $$.count.value;\n  if (toDelete) {\n    runDestructor($$);\n  }\n};\n\nvar downcastPointer = (ptr, ptrClass, desiredClass) => {\n  if (ptrClass === desiredClass) {\n    return ptr;\n  }\n  if (undefined === desiredClass.baseClass) {\n    return null;\n  }\n  var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass);\n  if (rv === null) {\n    return null;\n  }\n  return desiredClass.downcast(rv);\n};\n\nvar registeredPointers = {};\n\nvar getInheritedInstance = (class_, ptr) => {\n  ptr = getBasestPointer(class_, ptr);\n  return registeredInstances[ptr];\n};\n\nvar InternalError = class InternalError extends Error {\n  constructor(message) {\n    super(message);\n    this.name = \"InternalError\";\n  }\n};\n\nvar throwInternalError = message => {\n  throw new InternalError(message);\n};\n\nvar makeClassHandle = (prototype, record) => {\n  if (!record.ptrType || !record.ptr) {\n    throwInternalError(\"makeClassHandle requires ptr and ptrType\");\n  }\n  var hasSmartPtrType = !!record.smartPtrType;\n  var hasSmartPtr = !!record.smartPtr;\n  if (hasSmartPtrType !== hasSmartPtr) {\n    throwInternalError(\"Both smartPtrType and smartPtr must be specified\");\n  }\n  record.count = {\n    value: 1\n  };\n  return attachFinalizer(Object.create(prototype, {\n    $$: {\n      value: record,\n      writable: true\n    }\n  }));\n};\n\n/** @suppress {globalThis} */ function RegisteredPointer_fromWireType(ptr) {\n  // ptr is a raw pointer (or a raw smartpointer)\n  // rawPointer is a maybe-null raw pointer\n  var rawPointer = this.getPointee(ptr);\n  if (!rawPointer) {\n    this.destructor(ptr);\n    return null;\n  }\n  var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer);\n  if (undefined !== registeredInstance) {\n    // JS object has been neutered, time to repopulate it\n    if (0 === registeredInstance.$$.count.value) {\n      registeredInstance.$$.ptr = rawPointer;\n      registeredInstance.$$.smartPtr = ptr;\n      return registeredInstance[\"clone\"]();\n    } else {\n      // else, just increment reference count on existing object\n      // it already has a reference to the smart pointer\n      var rv = registeredInstance[\"clone\"]();\n      this.destructor(ptr);\n      return rv;\n    }\n  }\n  function makeDefaultHandle() {\n    if (this.isSmartPointer) {\n      return makeClassHandle(this.registeredClass.instancePrototype, {\n        ptrType: this.pointeeType,\n        ptr: rawPointer,\n        smartPtrType: this,\n        smartPtr: ptr\n      });\n    } else {\n      return makeClassHandle(this.registeredClass.instancePrototype, {\n        ptrType: this,\n        ptr\n      });\n    }\n  }\n  var actualType = this.registeredClass.getActualType(rawPointer);\n  var registeredPointerRecord = registeredPointers[actualType];\n  if (!registeredPointerRecord) {\n    return makeDefaultHandle.call(this);\n  }\n  var toType;\n  if (this.isConst) {\n    toType = registeredPointerRecord.constPointerType;\n  } else {\n    toType = registeredPointerRecord.pointerType;\n  }\n  var dp = downcastPointer(rawPointer, this.registeredClass, toType.registeredClass);\n  if (dp === null) {\n    return makeDefaultHandle.call(this);\n  }\n  if (this.isSmartPointer) {\n    return makeClassHandle(toType.registeredClass.instancePrototype, {\n      ptrType: toType,\n      ptr: dp,\n      smartPtrType: this,\n      smartPtr: ptr\n    });\n  } else {\n    return makeClassHandle(toType.registeredClass.instancePrototype, {\n      ptrType: toType,\n      ptr: dp\n    });\n  }\n}\n\nvar attachFinalizer = handle => {\n  if (!globalThis.FinalizationRegistry) {\n    attachFinalizer = handle => handle;\n    return handle;\n  }\n  // If the running environment has a FinalizationRegistry (see\n  // https://github.com/tc39/proposal-weakrefs), then attach finalizers\n  // for class handles.  We check for the presence of FinalizationRegistry\n  // at run-time, not build-time.\n  finalizationRegistry = new FinalizationRegistry(info => {\n    console.warn(info.leakWarning);\n    releaseClassHandle(info.$$);\n  });\n  attachFinalizer = handle => {\n    var $$ = handle.$$;\n    var hasSmartPtr = !!$$.smartPtr;\n    if (hasSmartPtr) {\n      // We should not call the destructor on raw pointers in case other code expects the pointee to live\n      var info = {\n        $$\n      };\n      // Create a warning as an Error instance in advance so that we can store\n      // the current stacktrace and point to it when / if a leak is detected.\n      // This is more useful than the empty stacktrace of `FinalizationRegistry`\n      // callback.\n      var cls = $$.ptrType.registeredClass;\n      var err = new Error(`Embind found a leaked C++ instance ${cls.name} <${ptrToString($$.ptr)}>.\\n` + \"We'll free it automatically in this case, but this functionality is not reliable across various environments.\\n\" + \"Make sure to invoke .delete() manually once you're done with the instance instead.\\n\" + \"Originally allocated\");\n      // `.stack` will add \"at ...\" after this sentence\n      if (\"captureStackTrace\" in Error) {\n        Error.captureStackTrace(err, RegisteredPointer_fromWireType);\n      }\n      info.leakWarning = err.stack.replace(/^Error: /, \"\");\n      finalizationRegistry.register(handle, info, handle);\n    }\n    return handle;\n  };\n  detachFinalizer = handle => finalizationRegistry.unregister(handle);\n  return attachFinalizer(handle);\n};\n\nvar __embind_create_inheriting_constructor = (constructorName, wrapperType, properties) => {\n  constructorName = AsciiToString(constructorName);\n  wrapperType = requireRegisteredType(wrapperType, \"wrapper\");\n  properties = Emval.toValue(properties);\n  var registeredClass = wrapperType.registeredClass;\n  var wrapperPrototype = registeredClass.instancePrototype;\n  var baseClass = registeredClass.baseClass;\n  var baseClassPrototype = baseClass.instancePrototype;\n  var baseConstructor = registeredClass.baseClass.constructor;\n  var ctor = createNamedFunction(constructorName, function(...args) {\n    for (var name of registeredClass.baseClass.pureVirtualFunctions) {\n      if (this[name] === baseClassPrototype[name]) {\n        throw new PureVirtualError(`Pure virtual function ${name} must be implemented in JavaScript`);\n      }\n    }\n    Object.defineProperty(this, \"__parent\", {\n      value: wrapperPrototype\n    });\n    this[\"__construct\"](...args);\n  });\n  // It's a little nasty that we're modifying the wrapper prototype here.\n  wrapperPrototype[\"__construct\"] = function __construct(...args) {\n    if (this === wrapperPrototype) {\n      throwBindingError(\"Pass correct 'this' to __construct\");\n    }\n    var inner = baseConstructor[\"implement\"](this, ...args);\n    detachFinalizer(inner);\n    var $$ = inner.$$;\n    inner[\"notifyOnDestruction\"]();\n    $$.preservePointerOnDelete = true;\n    Object.defineProperties(this, {\n      $$: {\n        value: $$\n      }\n    });\n    attachFinalizer(this);\n    registerInheritedInstance(registeredClass, $$.ptr, this);\n  };\n  wrapperPrototype[\"__destruct\"] = function __destruct() {\n    if (this === wrapperPrototype) {\n      throwBindingError(\"Pass correct 'this' to __destruct\");\n    }\n    detachFinalizer(this);\n    unregisterInheritedInstance(registeredClass, this.$$.ptr);\n  };\n  ctor.prototype = Object.create(wrapperPrototype);\n  Object.assign(ctor.prototype, properties);\n  return Emval.toHandle(ctor);\n};\n\n__embind_create_inheriting_constructor.sig = \"pppp\";\n\nvar structRegistrations = {};\n\nvar runDestructors = destructors => {\n  while (destructors.length) {\n    var ptr = destructors.pop();\n    var del = destructors.pop();\n    del(ptr);\n  }\n};\n\n/** @suppress {globalThis} */ function readPointer(pointer) {\n  return this.fromWireType((growMemViews(), HEAPU32)[((pointer) >> 2)]);\n}\n\nvar awaitingDependencies = {};\n\nvar typeDependencies = {};\n\nvar whenDependentTypesAreResolved = (myTypes, dependentTypes, getTypeConverters) => {\n  myTypes.forEach(type => typeDependencies[type] = dependentTypes);\n  function onComplete(typeConverters) {\n    var myTypeConverters = getTypeConverters(typeConverters);\n    if (myTypeConverters.length !== myTypes.length) {\n      throwInternalError(\"Mismatched type converter count\");\n    }\n    for (var i = 0; i < myTypes.length; ++i) {\n      registerType(myTypes[i], myTypeConverters[i]);\n    }\n  }\n  var typeConverters = new Array(dependentTypes.length);\n  var unregisteredTypes = [];\n  var registered = 0;\n  for (let [i, dt] of dependentTypes.entries()) {\n    if (registeredTypes.hasOwnProperty(dt)) {\n      typeConverters[i] = registeredTypes[dt];\n    } else {\n      unregisteredTypes.push(dt);\n      if (!awaitingDependencies.hasOwnProperty(dt)) {\n        awaitingDependencies[dt] = [];\n      }\n      awaitingDependencies[dt].push(() => {\n        typeConverters[i] = registeredTypes[dt];\n        ++registered;\n        if (registered === unregisteredTypes.length) {\n          onComplete(typeConverters);\n        }\n      });\n    }\n  }\n  if (0 === unregisteredTypes.length) {\n    onComplete(typeConverters);\n  }\n};\n\nvar __embind_finalize_value_object = structType => {\n  var reg = structRegistrations[structType];\n  delete structRegistrations[structType];\n  var rawConstructor = reg.rawConstructor;\n  var rawDestructor = reg.rawDestructor;\n  var fieldRecords = reg.fields;\n  var fieldTypes = fieldRecords.map(field => field.getterReturnType).concat(fieldRecords.map(field => field.setterArgumentType));\n  whenDependentTypesAreResolved([ structType ], fieldTypes, fieldTypes => {\n    var fields = {};\n    for (var [i, field] of fieldRecords.entries()) {\n      const getterReturnType = fieldTypes[i];\n      const getter = field.getter;\n      const getterContext = field.getterContext;\n      const setterArgumentType = fieldTypes[i + fieldRecords.length];\n      const setter = field.setter;\n      const setterContext = field.setterContext;\n      fields[field.fieldName] = {\n        read: ptr => getterReturnType.fromWireType(getter(getterContext, ptr)),\n        write: (ptr, o) => {\n          var destructors = [];\n          setter(setterContext, ptr, setterArgumentType.toWireType(destructors, o));\n          runDestructors(destructors);\n        },\n        optional: getterReturnType.optional\n      };\n    }\n    return [ {\n      name: reg.name,\n      fromWireType: ptr => {\n        var rv = {};\n        for (var i in fields) {\n          rv[i] = fields[i].read(ptr);\n        }\n        rawDestructor(ptr);\n        return rv;\n      },\n      toWireType: (destructors, o) => {\n        // todo: Here we have an opportunity for -O3 level \"unsafe\" optimizations:\n        // assume all fields are present without checking.\n        for (var fieldName in fields) {\n          if (!(fieldName in o) && !fields[fieldName].optional) {\n            throw new TypeError(`Missing field: \"${fieldName}\"`);\n          }\n        }\n        var ptr = rawConstructor();\n        for (fieldName in fields) {\n          fields[fieldName].write(ptr, o[fieldName]);\n        }\n        if (destructors !== null) {\n          destructors.push(rawDestructor, ptr);\n        }\n        return ptr;\n      },\n      readValueFromPointer: readPointer,\n      destructorFunction: rawDestructor\n    } ];\n  });\n};\n\n__embind_finalize_value_object.sig = \"vp\";\n\n/** @param {Object=} options */ function sharedRegisterType(rawType, registeredInstance, options = {}) {\n  var name = registeredInstance.name;\n  if (!rawType) {\n    throwBindingError(`type \"${name}\" must have a positive integer typeid pointer`);\n  }\n  if (registeredTypes.hasOwnProperty(rawType)) {\n    if (options.ignoreDuplicateRegistrations) {\n      return;\n    } else {\n      throwBindingError(`Cannot register type '${name}' twice`);\n    }\n  }\n  registeredTypes[rawType] = registeredInstance;\n  delete typeDependencies[rawType];\n  if (awaitingDependencies.hasOwnProperty(rawType)) {\n    var callbacks = awaitingDependencies[rawType];\n    delete awaitingDependencies[rawType];\n    callbacks.forEach(cb => cb());\n  }\n}\n\n/** @param {Object=} options */ function registerType(rawType, registeredInstance, options = {}) {\n  return sharedRegisterType(rawType, registeredInstance, options);\n}\n\nvar integerReadValueFromPointer = (name, width, signed) => {\n  // integers are quite common, so generate very specialized functions\n  switch (width) {\n   case 1:\n    return signed ? pointer => (growMemViews(), HEAP8)[pointer] : pointer => (growMemViews(), \n    HEAPU8)[pointer];\n\n   case 2:\n    return signed ? pointer => (growMemViews(), HEAP16)[((pointer) >> 1)] : pointer => (growMemViews(), \n    HEAPU16)[((pointer) >> 1)];\n\n   case 4:\n    return signed ? pointer => (growMemViews(), HEAP32)[((pointer) >> 2)] : pointer => (growMemViews(), \n    HEAPU32)[((pointer) >> 2)];\n\n   case 8:\n    return signed ? pointer => (growMemViews(), HEAP64)[((pointer) >> 3)] : pointer => (growMemViews(), \n    HEAPU64)[((pointer) >> 3)];\n\n   default:\n    throw new TypeError(`invalid integer width (${width}): ${name}`);\n  }\n};\n\nvar embindRepr = v => {\n  if (v === null) {\n    return \"null\";\n  }\n  var t = typeof v;\n  if (t === \"object\" || t === \"array\" || t === \"function\") {\n    return v.toString();\n  } else {\n    return \"\" + v;\n  }\n};\n\nvar assertIntegerRange = (typeName, value, minRange, maxRange) => {\n  if (value < minRange || value > maxRange) {\n    throw new TypeError(`Passing a number \"${embindRepr(value)}\" from JS side to C/C++ side to an argument of type \"${typeName}\", which is outside the valid range [${minRange}, ${maxRange}]!`);\n  }\n};\n\n/** @suppress {globalThis} */ var __embind_register_bigint = (primitiveType, name, size, minRange, maxRange) => {\n  name = AsciiToString(name);\n  const isUnsignedType = minRange === 0n;\n  let fromWireType = value => value;\n  if (isUnsignedType) {\n    // uint64 get converted to int64 in ABI, fix them up like we do for 32-bit integers.\n    const bitSize = size * 8;\n    fromWireType = value => BigInt.asUintN(bitSize, value);\n    maxRange = fromWireType(maxRange);\n  }\n  registerType(primitiveType, {\n    name,\n    fromWireType,\n    toWireType: (destructors, value) => {\n      if (typeof value == \"number\") {\n        value = BigInt(value);\n      } else if (typeof value != \"bigint\") {\n        throw new TypeError(`Cannot convert \"${embindRepr(value)}\" to ${name}`);\n      }\n      assertIntegerRange(name, value, minRange, maxRange);\n      return value;\n    },\n    readValueFromPointer: integerReadValueFromPointer(name, size, !isUnsignedType),\n    destructorFunction: null\n  });\n};\n\n__embind_register_bigint.sig = \"vpppjj\";\n\n/** @suppress {globalThis} */ var __embind_register_bool = (rawType, name, trueValue, falseValue) => {\n  name = AsciiToString(name);\n  registerType(rawType, {\n    name,\n    fromWireType: function(wt) {\n      // ambiguous emscripten ABI: sometimes return values are\n      // true or false, and sometimes integers (0 or 1)\n      return !!wt;\n    },\n    toWireType: function(destructors, o) {\n      return o ? trueValue : falseValue;\n    },\n    readValueFromPointer: function(pointer) {\n      return this.fromWireType((growMemViews(), HEAPU8)[pointer]);\n    },\n    destructorFunction: null\n  });\n};\n\n__embind_register_bool.sig = \"vppii\";\n\nvar shallowCopyInternalPointer = o => ({\n  count: o.count,\n  deleteScheduled: o.deleteScheduled,\n  preservePointerOnDelete: o.preservePointerOnDelete,\n  ptr: o.ptr,\n  ptrType: o.ptrType,\n  smartPtr: o.smartPtr,\n  smartPtrType: o.smartPtrType\n});\n\nvar throwInstanceAlreadyDeleted = obj => {\n  function getInstanceTypeName(handle) {\n    return handle.$$.ptrType.registeredClass.name;\n  }\n  throwBindingError(getInstanceTypeName(obj) + \" instance already deleted\");\n};\n\nvar deletionQueue = [];\n\nvar flushPendingDeletes = () => {\n  while (deletionQueue.length) {\n    var obj = deletionQueue.pop();\n    obj.$$.deleteScheduled = false;\n    obj[\"delete\"]();\n  }\n};\n\nvar delayFunction;\n\nvar init_ClassHandle = () => {\n  let proto = ClassHandle.prototype;\n  Object.assign(proto, {\n    \"isAliasOf\"(other) {\n      if (!(this instanceof ClassHandle)) {\n        return false;\n      }\n      if (!(other instanceof ClassHandle)) {\n        return false;\n      }\n      var leftClass = this.$$.ptrType.registeredClass;\n      var left = this.$$.ptr;\n      other.$$ = /** @type {Object} */ (other.$$);\n      var rightClass = other.$$.ptrType.registeredClass;\n      var right = other.$$.ptr;\n      while (leftClass.baseClass) {\n        left = leftClass.upcast(left);\n        leftClass = leftClass.baseClass;\n      }\n      while (rightClass.baseClass) {\n        right = rightClass.upcast(right);\n        rightClass = rightClass.baseClass;\n      }\n      return leftClass === rightClass && left === right;\n    },\n    \"clone\"() {\n      if (!this.$$.ptr) {\n        throwInstanceAlreadyDeleted(this);\n      }\n      if (this.$$.preservePointerOnDelete) {\n        this.$$.count.value += 1;\n        return this;\n      } else {\n        var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), {\n          $$: {\n            value: shallowCopyInternalPointer(this.$$)\n          }\n        }));\n        clone.$$.count.value += 1;\n        clone.$$.deleteScheduled = false;\n        return clone;\n      }\n    },\n    \"delete\"() {\n      if (!this.$$.ptr) {\n        throwInstanceAlreadyDeleted(this);\n      }\n      if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {\n        throwBindingError(\"Object already scheduled for deletion\");\n      }\n      detachFinalizer(this);\n      releaseClassHandle(this.$$);\n      if (!this.$$.preservePointerOnDelete) {\n        this.$$.smartPtr = undefined;\n        this.$$.ptr = undefined;\n      }\n    },\n    \"isDeleted\"() {\n      return !this.$$.ptr;\n    },\n    \"deleteLater\"() {\n      if (!this.$$.ptr) {\n        throwInstanceAlreadyDeleted(this);\n      }\n      if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {\n        throwBindingError(\"Object already scheduled for deletion\");\n      }\n      deletionQueue.push(this);\n      if (deletionQueue.length === 1 && delayFunction) {\n        delayFunction(flushPendingDeletes);\n      }\n      this.$$.deleteScheduled = true;\n      return this;\n    }\n  });\n  // Support `using ...` from https://github.com/tc39/proposal-explicit-resource-management.\n  const symbolDispose = Symbol.dispose;\n  if (symbolDispose) {\n    proto[symbolDispose] = proto[\"delete\"];\n  }\n};\n\n/** @constructor */ function ClassHandle() {}\n\nvar ensureOverloadTable = (proto, methodName, humanName) => {\n  if (undefined === proto[methodName].overloadTable) {\n    var prevFunc = proto[methodName];\n    // Inject an overload resolver function that routes to the appropriate overload based on the number of arguments.\n    proto[methodName] = function(...args) {\n      // TODO This check can be removed in -O3 level \"unsafe\" optimizations.\n      if (!proto[methodName].overloadTable.hasOwnProperty(args.length)) {\n        throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`);\n      }\n      return proto[methodName].overloadTable[args.length].apply(this, args);\n    };\n    // Move the previous function into the overload table.\n    proto[methodName].overloadTable = [];\n    proto[methodName].overloadTable[prevFunc.argCount] = prevFunc;\n  }\n};\n\n/** @param {number=} numArguments */ var exposePublicSymbol = (name, value, numArguments) => {\n  if (Module.hasOwnProperty(name)) {\n    if (undefined === numArguments || (undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments])) {\n      throwBindingError(`Cannot register public name '${name}' twice`);\n    }\n    // We are exposing a function with the same name as an existing function. Create an overload table and a function selector\n    // that routes between the two.\n    ensureOverloadTable(Module, name, name);\n    if (Module[name].overloadTable.hasOwnProperty(numArguments)) {\n      throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`);\n    }\n    // Add the new function into the overload table.\n    Module[name].overloadTable[numArguments] = value;\n  } else {\n    Module[name] = value;\n    Module[name].argCount = numArguments;\n  }\n};\n\nvar char_0 = 48;\n\nvar char_9 = 57;\n\nvar makeLegalFunctionName = name => {\n  assert(typeof name === \"string\");\n  name = name.replace(/[^a-zA-Z0-9_]/g, \"$\");\n  var f = name.charCodeAt(0);\n  if (f >= char_0 && f <= char_9) {\n    return `_${name}`;\n  }\n  return name;\n};\n\n/** @constructor */ function RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast) {\n  this.name = name;\n  this.constructor = constructor;\n  this.instancePrototype = instancePrototype;\n  this.rawDestructor = rawDestructor;\n  this.baseClass = baseClass;\n  this.getActualType = getActualType;\n  this.upcast = upcast;\n  this.downcast = downcast;\n  this.pureVirtualFunctions = [];\n}\n\nvar upcastPointer = (ptr, ptrClass, desiredClass) => {\n  while (ptrClass !== desiredClass) {\n    if (!ptrClass.upcast) {\n      throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`);\n    }\n    ptr = ptrClass.upcast(ptr);\n    ptrClass = ptrClass.baseClass;\n  }\n  return ptr;\n};\n\n/** @suppress {globalThis} */ function constNoSmartPtrRawPointerToWireType(destructors, handle) {\n  if (handle === null) {\n    if (this.isReference) {\n      throwBindingError(`null is not a valid ${this.name}`);\n    }\n    return 0;\n  }\n  if (!handle.$$) {\n    throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`);\n  }\n  if (!handle.$$.ptr) {\n    throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`);\n  }\n  var handleClass = handle.$$.ptrType.registeredClass;\n  var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n  return ptr;\n}\n\n/** @suppress {globalThis} */ function genericPointerToWireType(destructors, handle) {\n  var ptr;\n  if (handle === null) {\n    if (this.isReference) {\n      throwBindingError(`null is not a valid ${this.name}`);\n    }\n    if (this.isSmartPointer) {\n      ptr = this.rawConstructor();\n      if (destructors !== null) {\n        destructors.push(this.rawDestructor, ptr);\n      }\n      return ptr;\n    } else {\n      return 0;\n    }\n  }\n  if (!handle || !handle.$$) {\n    throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`);\n  }\n  if (!handle.$$.ptr) {\n    throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`);\n  }\n  if (!this.isConst && handle.$$.ptrType.isConst) {\n    throwBindingError(`Cannot convert argument of type ${(handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name)} to parameter type ${this.name}`);\n  }\n  var handleClass = handle.$$.ptrType.registeredClass;\n  ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n  if (this.isSmartPointer) {\n    // TODO: this is not strictly true\n    // We could support BY_EMVAL conversions from raw pointers to smart pointers\n    // because the smart pointer can hold a reference to the handle\n    if (undefined === handle.$$.smartPtr) {\n      throwBindingError(\"Passing raw pointer to smart pointer is illegal\");\n    }\n    switch (this.sharingPolicy) {\n     case 0:\n      // NONE\n      // no upcasting\n      if (handle.$$.smartPtrType === this) {\n        ptr = handle.$$.smartPtr;\n      } else {\n        throwBindingError(`Cannot convert argument of type ${(handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name)} to parameter type ${this.name}`);\n      }\n      break;\n\n     case 1:\n      // INTRUSIVE\n      ptr = handle.$$.smartPtr;\n      break;\n\n     case 2:\n      // BY_EMVAL\n      if (handle.$$.smartPtrType === this) {\n        ptr = handle.$$.smartPtr;\n      } else {\n        var clonedHandle = handle[\"clone\"]();\n        ptr = this.rawShare(ptr, Emval.toHandle(() => clonedHandle[\"delete\"]()));\n        if (destructors !== null) {\n          destructors.push(this.rawDestructor, ptr);\n        }\n      }\n      break;\n\n     default:\n      throwBindingError(\"Unsupported sharing policy\");\n    }\n  }\n  return ptr;\n}\n\n/** @suppress {globalThis} */ function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) {\n  if (handle === null) {\n    if (this.isReference) {\n      throwBindingError(`null is not a valid ${this.name}`);\n    }\n    return 0;\n  }\n  if (!handle.$$) {\n    throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`);\n  }\n  if (!handle.$$.ptr) {\n    throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`);\n  }\n  if (handle.$$.ptrType.isConst) {\n    throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`);\n  }\n  var handleClass = handle.$$.ptrType.registeredClass;\n  var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n  return ptr;\n}\n\nvar init_RegisteredPointer = () => {\n  Object.assign(RegisteredPointer.prototype, {\n    getPointee(ptr) {\n      if (this.rawGetPointee) {\n        ptr = this.rawGetPointee(ptr);\n      }\n      return ptr;\n    },\n    destructor(ptr) {\n      this.rawDestructor?.(ptr);\n    },\n    readValueFromPointer: readPointer,\n    fromWireType: RegisteredPointer_fromWireType\n  });\n};\n\n/** @constructor\n    @param {*=} pointeeType,\n    @param {*=} sharingPolicy,\n    @param {*=} rawGetPointee,\n    @param {*=} rawConstructor,\n    @param {*=} rawShare,\n    @param {*=} rawDestructor,\n     */ function RegisteredPointer(name, registeredClass, isReference, isConst, // smart pointer properties\nisSmartPointer, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor) {\n  this.name = name;\n  this.registeredClass = registeredClass;\n  this.isReference = isReference;\n  this.isConst = isConst;\n  // smart pointer properties\n  this.isSmartPointer = isSmartPointer;\n  this.pointeeType = pointeeType;\n  this.sharingPolicy = sharingPolicy;\n  this.rawGetPointee = rawGetPointee;\n  this.rawConstructor = rawConstructor;\n  this.rawShare = rawShare;\n  this.rawDestructor = rawDestructor;\n  if (!isSmartPointer && registeredClass.baseClass === undefined) {\n    if (isConst) {\n      this.toWireType = constNoSmartPtrRawPointerToWireType;\n      this.destructorFunction = null;\n    } else {\n      this.toWireType = nonConstNoSmartPtrRawPointerToWireType;\n      this.destructorFunction = null;\n    }\n  } else {\n    this.toWireType = genericPointerToWireType;\n  }\n}\n\n/** @param {number=} numArguments */ var replacePublicSymbol = (name, value, numArguments) => {\n  if (!Module.hasOwnProperty(name)) {\n    throwInternalError(\"Replacing nonexistent public symbol\");\n  }\n  // If there's an overload table for this symbol, replace the symbol in the overload table instead.\n  if (undefined !== Module[name].overloadTable && undefined !== numArguments) {\n    Module[name].overloadTable[numArguments] = value;\n  } else {\n    Module[name] = value;\n    Module[name].argCount = numArguments;\n  }\n};\n\nvar embind__requireFunction = (signature, rawFunction, isAsync = false) => {\n  assert(!isAsync, \"async bindings are only supported with JSPI\");\n  signature = AsciiToString(signature);\n  function makeDynCaller() {\n    var rtn = getWasmTableEntry(rawFunction);\n    return rtn;\n  }\n  var fp = makeDynCaller();\n  if (typeof fp != \"function\") {\n    throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`);\n  }\n  return fp;\n};\n\nclass UnboundTypeError extends Error {}\n\nvar throwUnboundTypeError = (message, types) => {\n  var unboundTypes = [];\n  var seen = {};\n  function visit(type) {\n    if (seen[type]) {\n      return;\n    }\n    if (registeredTypes[type]) {\n      return;\n    }\n    if (typeDependencies[type]) {\n      typeDependencies[type].forEach(visit);\n      return;\n    }\n    unboundTypes.push(type);\n    seen[type] = true;\n  }\n  types.forEach(visit);\n  throw new UnboundTypeError(`${message}: ` + unboundTypes.map(getTypeName).join([ \", \" ]));\n};\n\nvar __embind_register_class = (rawType, rawPointerType, rawConstPointerType, baseClassRawType, getActualTypeSignature, getActualType, upcastSignature, upcast, downcastSignature, downcast, name, destructorSignature, rawDestructor) => {\n  name = AsciiToString(name);\n  getActualType = embind__requireFunction(getActualTypeSignature, getActualType);\n  upcast &&= embind__requireFunction(upcastSignature, upcast);\n  downcast &&= embind__requireFunction(downcastSignature, downcast);\n  rawDestructor = embind__requireFunction(destructorSignature, rawDestructor);\n  var legalFunctionName = makeLegalFunctionName(name);\n  exposePublicSymbol(legalFunctionName, function() {\n    // this code cannot run if baseClassRawType is zero\n    throwUnboundTypeError(`Cannot construct ${name} due to unbound types`, [ baseClassRawType ]);\n  });\n  whenDependentTypesAreResolved([ rawType, rawPointerType, rawConstPointerType ], baseClassRawType ? [ baseClassRawType ] : [], base => {\n    base = base[0];\n    var baseClass;\n    var basePrototype;\n    if (baseClassRawType) {\n      baseClass = base.registeredClass;\n      basePrototype = baseClass.instancePrototype;\n    } else {\n      basePrototype = ClassHandle.prototype;\n    }\n    var constructor = createNamedFunction(name, function(...args) {\n      if (Object.getPrototypeOf(this) !== instancePrototype) {\n        throw new BindingError(`Use 'new' to construct ${name}`);\n      }\n      if (undefined === registeredClass.constructor_body) {\n        throw new BindingError(`${name} has no accessible constructor`);\n      }\n      var body = registeredClass.constructor_body[args.length];\n      if (undefined === body) {\n        throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`);\n      }\n      return body.apply(this, args);\n    });\n    var instancePrototype = Object.create(basePrototype, {\n      constructor: {\n        value: constructor\n      }\n    });\n    constructor.prototype = instancePrototype;\n    var registeredClass = new RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast);\n    if (registeredClass.baseClass) {\n      // Keep track of class hierarchy. Used to allow sub-classes to inherit class functions.\n      registeredClass.baseClass.__derivedClasses ??= [];\n      registeredClass.baseClass.__derivedClasses.push(registeredClass);\n    }\n    var referenceConverter = new RegisteredPointer(name, registeredClass, true, false, false);\n    var pointerConverter = new RegisteredPointer(name + \"*\", registeredClass, false, false, false);\n    var constPointerConverter = new RegisteredPointer(name + \" const*\", registeredClass, false, true, false);\n    registeredPointers[rawType] = {\n      pointerType: pointerConverter,\n      constPointerType: constPointerConverter\n    };\n    replacePublicSymbol(legalFunctionName, constructor);\n    return [ referenceConverter, pointerConverter, constPointerConverter ];\n  });\n};\n\n__embind_register_class.sig = \"vppppppppppppp\";\n\nfunction usesDestructorStack(argTypes) {\n  // Skip return value at index 0 - it's not deleted here.\n  for (var i = 1; i < argTypes.length; ++i) {\n    // The type does not define a destructor function - must use dynamic stack\n    if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction getRequiredArgCount(argTypes) {\n  var requiredArgCount = argTypes.length - 2;\n  for (var i = argTypes.length - 1; i >= 2; --i) {\n    if (!argTypes[i].optional) {\n      break;\n    }\n    requiredArgCount--;\n  }\n  return requiredArgCount;\n}\n\nfunction checkArgCount(numArgs, minArgs, maxArgs, humanName, throwBindingError) {\n  if (numArgs < minArgs || numArgs > maxArgs) {\n    var argCountMessage = minArgs == maxArgs ? minArgs : `${minArgs} to ${maxArgs}`;\n    throwBindingError(`function ${humanName} called with ${numArgs} arguments, expected ${argCountMessage}`);\n  }\n}\n\nfunction craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc, /** boolean= */ isAsync) {\n  // humanName: a human-readable string name for the function to be generated.\n  // argTypes: An array that contains the embind type objects for all types in the function signature.\n  //    argTypes[0] is the type object for the function return value.\n  //    argTypes[1] is the type object for function this object/class type, or null if not crafting an invoker for a class method.\n  //    argTypes[2...] are the actual function parameters.\n  // classType: The embind type object for the class to be bound, or null if this is not a method of a class.\n  // cppInvokerFunc: JS Function object to the C++-side function that interops into C++ code.\n  // cppTargetFunc: Function pointer (an integer to FUNCTION_TABLE) to the target C++ function the cppInvokerFunc will end up calling.\n  // isAsync: Optional. If true, returns an async function. Async bindings are only supported with JSPI.\n  var argCount = argTypes.length;\n  if (argCount < 2) {\n    throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");\n  }\n  assert(!isAsync, \"async bindings are only supported with JSPI\");\n  var isClassMethodFunc = (argTypes[1] !== null && classType !== null);\n  // Free functions with signature \"void function()\" do not need an invoker that marshalls between wire types.\n  // TODO: This omits argument count check - enable only at -O3 or similar.\n  //    if (ENABLE_UNSAFE_OPTS && argCount == 2 && argTypes[0].name == \"void\" && !isClassMethodFunc) {\n  //       return FUNCTION_TABLE[fn];\n  //    }\n  // Determine if we need to use a dynamic stack to store the destructors for the function parameters.\n  // TODO: Remove this completely once all function invokers are being dynamically generated.\n  var needsDestructorStack = usesDestructorStack(argTypes);\n  var returns = !argTypes[0].isVoid;\n  var expectedArgCount = argCount - 2;\n  var minArgs = getRequiredArgCount(argTypes);\n  var argsWired = new Array(expectedArgCount);\n  var invokerFuncArgs = [];\n  var destructors = [];\n  var invokerFn = function(...args) {\n    checkArgCount(args.length, minArgs, expectedArgCount, humanName, throwBindingError);\n    destructors.length = 0;\n    var thisWired;\n    invokerFuncArgs.length = isClassMethodFunc ? 2 : 1;\n    invokerFuncArgs[0] = cppTargetFunc;\n    if (isClassMethodFunc) {\n      thisWired = argTypes[1].toWireType(destructors, this);\n      invokerFuncArgs[1] = thisWired;\n    }\n    for (var i = 0; i < expectedArgCount; ++i) {\n      argsWired[i] = argTypes[i + 2].toWireType(destructors, args[i]);\n      invokerFuncArgs.push(argsWired[i]);\n    }\n    var rv = cppInvokerFunc(...invokerFuncArgs);\n    function onDone(rv) {\n      if (needsDestructorStack) {\n        runDestructors(destructors);\n      } else {\n        for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; i++) {\n          var param = i === 1 ? thisWired : argsWired[i - 2];\n          if (argTypes[i].destructorFunction !== null) {\n            argTypes[i].destructorFunction(param);\n          }\n        }\n      }\n      if (returns) {\n        return argTypes[0].fromWireType(rv);\n      }\n    }\n    return onDone(rv);\n  };\n  return createNamedFunction(humanName, invokerFn);\n}\n\nvar heap32VectorToArray = (count, firstElement) => {\n  var array = [];\n  for (var i = 0; i < count; i++) {\n    // TODO(https://github.com/emscripten-core/emscripten/issues/17310):\n    // Find a way to hoist the `>> 2` or `>> 3` out of this loop.\n    array.push((growMemViews(), HEAPU32)[(((firstElement) + (i * 4)) >> 2)]);\n  }\n  return array;\n};\n\nvar getFunctionName = signature => {\n  signature = signature.trim();\n  const argsIndex = signature.indexOf(\"(\");\n  if (argsIndex === -1) return signature;\n  assert(signature.endsWith(\")\"), \"Parentheses for argument names should match.\");\n  return signature.slice(0, argsIndex);\n};\n\nvar __embind_register_class_class_function = (rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, fn, isAsync, isNonnullReturn) => {\n  var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n  methodName = AsciiToString(methodName);\n  methodName = getFunctionName(methodName);\n  rawInvoker = embind__requireFunction(invokerSignature, rawInvoker, isAsync);\n  whenDependentTypesAreResolved([], [ rawClassType ], classType => {\n    classType = classType[0];\n    var humanName = `${classType.name}.${methodName}`;\n    function unboundTypesHandler() {\n      throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`, rawArgTypes);\n    }\n    if (methodName.startsWith(\"@@\")) {\n      methodName = Symbol[methodName.substring(2)];\n    }\n    var proto = classType.registeredClass.constructor;\n    if (undefined === proto[methodName]) {\n      // This is the first function to be registered with this name.\n      unboundTypesHandler.argCount = argCount - 1;\n      proto[methodName] = unboundTypesHandler;\n    } else {\n      // There was an existing function with the same name registered. Set up\n      // a function overload routing table.\n      ensureOverloadTable(proto, methodName, humanName);\n      proto[methodName].overloadTable[argCount - 1] = unboundTypesHandler;\n    }\n    whenDependentTypesAreResolved([], rawArgTypes, argTypes => {\n      // Replace the initial unbound-types-handler stub with the proper\n      // function. If multiple overloads are registered, the function handlers\n      // go into an overload table.\n      var invokerArgsArray = [ argTypes[0], null ].concat(argTypes.slice(1));\n      var func = craftInvokerFunction(humanName, invokerArgsArray, null, rawInvoker, fn, isAsync);\n      if (undefined === proto[methodName].overloadTable) {\n        func.argCount = argCount - 1;\n        proto[methodName] = func;\n      } else {\n        proto[methodName].overloadTable[argCount - 1] = func;\n      }\n      if (classType.registeredClass.__derivedClasses) {\n        for (const derivedClass of classType.registeredClass.__derivedClasses) {\n          if (!derivedClass.constructor.hasOwnProperty(methodName)) {\n            // TODO: Add support for overloads\n            derivedClass.constructor[methodName] = func;\n          }\n        }\n      }\n      return [];\n    });\n    return [];\n  });\n};\n\n__embind_register_class_class_function.sig = \"vppippppii\";\n\nvar __embind_register_class_class_property = (rawClassType, fieldName, rawFieldType, rawFieldPtr, getterSignature, getter, setterSignature, setter) => {\n  fieldName = AsciiToString(fieldName);\n  getter = embind__requireFunction(getterSignature, getter);\n  whenDependentTypesAreResolved([], [ rawClassType ], classType => {\n    classType = classType[0];\n    var humanName = `${classType.name}.${fieldName}`;\n    var desc = {\n      get() {\n        throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`, [ rawFieldType ]);\n      },\n      enumerable: true,\n      configurable: true\n    };\n    if (setter) {\n      desc.set = () => {\n        throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`, [ rawFieldType ]);\n      };\n    } else {\n      desc.set = v => {\n        throwBindingError(`${humanName} is a read-only property`);\n      };\n    }\n    Object.defineProperty(classType.registeredClass.constructor, fieldName, desc);\n    whenDependentTypesAreResolved([], [ rawFieldType ], fieldType => {\n      fieldType = fieldType[0];\n      var desc = {\n        get() {\n          return fieldType.fromWireType(getter(rawFieldPtr));\n        },\n        enumerable: true\n      };\n      if (setter) {\n        setter = embind__requireFunction(setterSignature, setter);\n        desc.set = v => {\n          var destructors = [];\n          setter(rawFieldPtr, fieldType.toWireType(destructors, v));\n          runDestructors(destructors);\n        };\n      }\n      Object.defineProperty(classType.registeredClass.constructor, fieldName, desc);\n      return [];\n    });\n    return [];\n  });\n};\n\n__embind_register_class_class_property.sig = \"vpppppppp\";\n\nvar __embind_register_class_function = (rawClassType, methodName, argCount, rawArgTypesAddr, // [ReturnType, ThisType, Args...]\ninvokerSignature, rawInvoker, context, isPureVirtual, isAsync, isNonnullReturn) => {\n  var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n  methodName = AsciiToString(methodName);\n  methodName = getFunctionName(methodName);\n  rawInvoker = embind__requireFunction(invokerSignature, rawInvoker, isAsync);\n  whenDependentTypesAreResolved([], [ rawClassType ], classType => {\n    classType = classType[0];\n    var humanName = `${classType.name}.${methodName}`;\n    if (methodName.startsWith(\"@@\")) {\n      methodName = Symbol[methodName.substring(2)];\n    }\n    if (isPureVirtual) {\n      classType.registeredClass.pureVirtualFunctions.push(methodName);\n    }\n    function unboundTypesHandler() {\n      throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`, rawArgTypes);\n    }\n    var proto = classType.registeredClass.instancePrototype;\n    var method = proto[methodName];\n    if (undefined === method || (undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2)) {\n      // This is the first overload to be registered, OR we are replacing a\n      // function in the base class with a function in the derived class.\n      unboundTypesHandler.argCount = argCount - 2;\n      unboundTypesHandler.className = classType.name;\n      proto[methodName] = unboundTypesHandler;\n    } else {\n      // There was an existing function with the same name registered. Set up\n      // a function overload routing table.\n      ensureOverloadTable(proto, methodName, humanName);\n      proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler;\n    }\n    whenDependentTypesAreResolved([], rawArgTypes, argTypes => {\n      var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context, isAsync);\n      // Replace the initial unbound-handler-stub function with the\n      // appropriate member function, now that all types are resolved. If\n      // multiple overloads are registered for this function, the function\n      // goes into an overload table.\n      if (undefined === proto[methodName].overloadTable) {\n        // Set argCount in case an overload is registered later\n        memberFunction.argCount = argCount - 2;\n        proto[methodName] = memberFunction;\n      } else {\n        proto[methodName].overloadTable[argCount - 2] = memberFunction;\n      }\n      return [];\n    });\n    return [];\n  });\n};\n\n__embind_register_class_function.sig = \"vppippppiii\";\n\nvar __emval_decref = handle => {\n  if (handle > 9 && 0 === --emval_handles[handle + 1]) {\n    assert(emval_handles[handle] !== undefined, `decref for unallocated handle`);\n    var value = emval_handles[handle];\n    emval_handles[handle] = undefined;\n    emval_freelist.push(handle);\n  }\n};\n\n__emval_decref.sig = \"vp\";\n\nvar EmValType = {\n  name: \"emscripten::val\",\n  fromWireType: handle => {\n    var rv = Emval.toValue(handle);\n    __emval_decref(handle);\n    return rv;\n  },\n  toWireType: (destructors, value) => Emval.toHandle(value),\n  readValueFromPointer: readPointer,\n  destructorFunction: null\n};\n\nvar __embind_register_emval = rawType => registerType(rawType, EmValType);\n\n__embind_register_emval.sig = \"vp\";\n\nvar enumReadValueFromPointer = (name, width, signed) => {\n  switch (width) {\n   case 1:\n    return signed ? function(pointer) {\n      return this.fromWireType((growMemViews(), HEAP8)[pointer]);\n    } : function(pointer) {\n      return this.fromWireType((growMemViews(), HEAPU8)[pointer]);\n    };\n\n   case 2:\n    return signed ? function(pointer) {\n      return this.fromWireType((growMemViews(), HEAP16)[((pointer) >> 1)]);\n    } : function(pointer) {\n      return this.fromWireType((growMemViews(), HEAPU16)[((pointer) >> 1)]);\n    };\n\n   case 4:\n    return signed ? function(pointer) {\n      return this.fromWireType((growMemViews(), HEAP32)[((pointer) >> 2)]);\n    } : function(pointer) {\n      return this.fromWireType((growMemViews(), HEAPU32)[((pointer) >> 2)]);\n    };\n\n   default:\n    throw new TypeError(`invalid integer width (${width}): ${name}`);\n  }\n};\n\nfunction getEnumValueType(rawValueType) {\n  // This must match the values of enum_value_type in wire.h\n  return rawValueType === 0 ? \"object\" : (rawValueType === 1 ? \"number\" : \"string\");\n}\n\n/** @suppress {globalThis} */ var __embind_register_enum = (rawType, name, size, isSigned, rawValueType) => {\n  name = AsciiToString(name);\n  const valueType = getEnumValueType(rawValueType);\n  switch (valueType) {\n   case \"object\":\n    {\n      function ctor() {}\n      ctor.values = {};\n      registerType(rawType, {\n        name,\n        constructor: ctor,\n        valueType,\n        fromWireType: function(c) {\n          return this.constructor.values[c];\n        },\n        toWireType: (destructors, c) => c.value,\n        readValueFromPointer: enumReadValueFromPointer(name, size, isSigned),\n        destructorFunction: null\n      });\n      exposePublicSymbol(name, ctor);\n      break;\n    }\n\n   case \"number\":\n    {\n      var keysMap = {};\n      registerType(rawType, {\n        name,\n        keysMap,\n        valueType,\n        fromWireType: c => c,\n        toWireType: (destructors, c) => c,\n        readValueFromPointer: enumReadValueFromPointer(name, size, isSigned),\n        destructorFunction: null\n      });\n      exposePublicSymbol(name, keysMap);\n      // Just exposes a simple dict. argCount is meaningless here,\n      delete Module[name].argCount;\n      break;\n    }\n\n   case \"string\":\n    {\n      var valuesMap = {};\n      var reverseMap = {};\n      var keysMap = {};\n      registerType(rawType, {\n        name,\n        valuesMap,\n        reverseMap,\n        keysMap,\n        valueType,\n        fromWireType: function(c) {\n          return this.reverseMap[c];\n        },\n        toWireType: function(destructors, c) {\n          return this.valuesMap[c];\n        },\n        readValueFromPointer: enumReadValueFromPointer(name, size, isSigned),\n        destructorFunction: null\n      });\n      exposePublicSymbol(name, keysMap);\n      // Just exposes a simple dict. argCount is meaningless here,\n      delete Module[name].argCount;\n      break;\n    }\n  }\n};\n\n__embind_register_enum.sig = \"vpppii\";\n\nvar __embind_register_enum_value = (rawEnumType, name, enumValue) => {\n  var enumType = requireRegisteredType(rawEnumType, \"enum\");\n  name = AsciiToString(name);\n  switch (enumType.valueType) {\n   case \"object\":\n    {\n      var Enum = enumType.constructor;\n      var Value = Object.create(enumType.constructor.prototype, {\n        value: {\n          value: enumValue\n        },\n        constructor: {\n          value: createNamedFunction(`${enumType.name}_${name}`, function() {})\n        }\n      });\n      Enum.values[enumValue] = Value;\n      Enum[name] = Value;\n      break;\n    }\n\n   case \"number\":\n    {\n      enumType.keysMap[name] = enumValue;\n      break;\n    }\n\n   case \"string\":\n    {\n      enumType.valuesMap[name] = enumValue;\n      enumType.reverseMap[enumValue] = name;\n      enumType.keysMap[name] = name;\n      break;\n    }\n  }\n};\n\n__embind_register_enum_value.sig = \"vppi\";\n\nvar floatReadValueFromPointer = (name, width) => {\n  switch (width) {\n   case 4:\n    return function(pointer) {\n      return this.fromWireType((growMemViews(), HEAPF32)[((pointer) >> 2)]);\n    };\n\n   case 8:\n    return function(pointer) {\n      return this.fromWireType((growMemViews(), HEAPF64)[((pointer) >> 3)]);\n    };\n\n   default:\n    throw new TypeError(`invalid float width (${width}): ${name}`);\n  }\n};\n\nvar __embind_register_float = (rawType, name, size) => {\n  name = AsciiToString(name);\n  registerType(rawType, {\n    name,\n    fromWireType: value => value,\n    toWireType: (destructors, value) => {\n      if (typeof value != \"number\" && typeof value != \"boolean\") {\n        throw new TypeError(`Cannot convert ${embindRepr(value)} to ${name}`);\n      }\n      // The VM will perform JS to Wasm value conversion, according to the spec:\n      // https://www.w3.org/TR/wasm-js-api-1/#towebassemblyvalue\n      return value;\n    },\n    readValueFromPointer: floatReadValueFromPointer(name, size),\n    destructorFunction: null\n  });\n};\n\n__embind_register_float.sig = \"vppp\";\n\nvar __embind_register_function = (name, argCount, rawArgTypesAddr, signature, rawInvoker, fn, isAsync, isNonnullReturn) => {\n  var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n  name = AsciiToString(name);\n  name = getFunctionName(name);\n  rawInvoker = embind__requireFunction(signature, rawInvoker, isAsync);\n  exposePublicSymbol(name, function() {\n    throwUnboundTypeError(`Cannot call ${name} due to unbound types`, argTypes);\n  }, argCount - 1);\n  whenDependentTypesAreResolved([], argTypes, argTypes => {\n    var invokerArgsArray = [ argTypes[0], null ].concat(argTypes.slice(1));\n    replacePublicSymbol(name, craftInvokerFunction(name, invokerArgsArray, null, rawInvoker, fn, isAsync), argCount - 1);\n    return [];\n  });\n};\n\n__embind_register_function.sig = \"vpippppii\";\n\n/** @suppress {globalThis} */ var __embind_register_integer = (primitiveType, name, size, minRange, maxRange) => {\n  name = AsciiToString(name);\n  const isUnsignedType = minRange === 0;\n  let fromWireType = value => value;\n  if (isUnsignedType) {\n    var bitshift = 32 - 8 * size;\n    fromWireType = value => (value << bitshift) >>> bitshift;\n    maxRange = fromWireType(maxRange);\n  }\n  registerType(primitiveType, {\n    name,\n    fromWireType,\n    toWireType: (destructors, value) => {\n      if (typeof value != \"number\" && typeof value != \"boolean\") {\n        throw new TypeError(`Cannot convert \"${embindRepr(value)}\" to ${name}`);\n      }\n      assertIntegerRange(name, value, minRange, maxRange);\n      // The VM will perform JS to Wasm value conversion, according to the spec:\n      // https://www.w3.org/TR/wasm-js-api-1/#towebassemblyvalue\n      return value;\n    },\n    readValueFromPointer: integerReadValueFromPointer(name, size, minRange !== 0),\n    destructorFunction: null\n  });\n};\n\n__embind_register_integer.sig = \"vpppii\";\n\nvar __embind_register_memory_view = (rawType, dataTypeIndex, name) => {\n  var typeMapping = [ Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array, BigInt64Array, BigUint64Array ];\n  var TA = typeMapping[dataTypeIndex];\n  function decodeMemoryView(handle) {\n    var size = (growMemViews(), HEAPU32)[((handle) >> 2)];\n    var data = (growMemViews(), HEAPU32)[(((handle) + (4)) >> 2)];\n    return new TA((growMemViews(), HEAP8).buffer, data, size);\n  }\n  name = AsciiToString(name);\n  registerType(rawType, {\n    name,\n    fromWireType: decodeMemoryView,\n    readValueFromPointer: decodeMemoryView\n  }, {\n    ignoreDuplicateRegistrations: true\n  });\n};\n\n__embind_register_memory_view.sig = \"vpip\";\n\nvar EmValOptionalType = Object.assign({\n  optional: true\n}, EmValType);\n\nvar __embind_register_optional = (rawOptionalType, rawType) => {\n  registerType(rawOptionalType, EmValOptionalType);\n};\n\n__embind_register_optional.sig = \"vpp\";\n\nvar __embind_register_smart_ptr = (rawType, rawPointeeType, name, sharingPolicy, getPointeeSignature, rawGetPointee, constructorSignature, rawConstructor, shareSignature, rawShare, destructorSignature, rawDestructor) => {\n  name = AsciiToString(name);\n  rawGetPointee = embind__requireFunction(getPointeeSignature, rawGetPointee);\n  rawConstructor = embind__requireFunction(constructorSignature, rawConstructor);\n  rawShare = embind__requireFunction(shareSignature, rawShare);\n  rawDestructor = embind__requireFunction(destructorSignature, rawDestructor);\n  whenDependentTypesAreResolved([ rawType ], [ rawPointeeType ], pointeeType => {\n    pointeeType = pointeeType[0];\n    var registeredPointer = new RegisteredPointer(name, pointeeType.registeredClass, false, false, // smart pointer properties\n    true, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor);\n    return [ registeredPointer ];\n  });\n};\n\n__embind_register_smart_ptr.sig = \"vpppipppppppp\";\n\nvar __embind_register_std_string = (rawType, name) => {\n  name = AsciiToString(name);\n  var stdStringIsUTF8 = true;\n  registerType(rawType, {\n    name,\n    // For some method names we use string keys here since they are part of\n    // the public/external API and/or used by the runtime-generated code.\n    fromWireType(value) {\n      var length = (growMemViews(), HEAPU32)[((value) >> 2)];\n      var payload = value + 4;\n      var str;\n      if (stdStringIsUTF8) {\n        str = UTF8ToString(payload, length, true);\n      } else {\n        str = \"\";\n        for (var i = 0; i < length; ++i) {\n          str += String.fromCharCode((growMemViews(), HEAPU8)[payload + i]);\n        }\n      }\n      _free(value);\n      return str;\n    },\n    toWireType(destructors, value) {\n      if (value instanceof ArrayBuffer) {\n        value = new Uint8Array(value);\n      }\n      var length;\n      var valueIsOfTypeString = (typeof value == \"string\");\n      // We accept `string` or array views with single byte elements\n      if (!(valueIsOfTypeString || (ArrayBuffer.isView(value) && value.BYTES_PER_ELEMENT == 1))) {\n        throwBindingError(\"Cannot pass non-string to std::string\");\n      }\n      if (stdStringIsUTF8 && valueIsOfTypeString) {\n        length = lengthBytesUTF8(value);\n      } else {\n        length = value.length;\n      }\n      // assumes POINTER_SIZE alignment\n      var base = _malloc(4 + length + 1);\n      var ptr = base + 4;\n      (growMemViews(), HEAPU32)[((base) >> 2)] = length;\n      if (valueIsOfTypeString) {\n        if (stdStringIsUTF8) {\n          stringToUTF8(value, ptr, length + 1);\n        } else {\n          for (var i = 0; i < length; ++i) {\n            var charCode = value.charCodeAt(i);\n            if (charCode > 255) {\n              _free(base);\n              throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\");\n            }\n            (growMemViews(), HEAPU8)[ptr + i] = charCode;\n          }\n        }\n      } else {\n        (growMemViews(), HEAPU8).set(value, ptr);\n      }\n      if (destructors !== null) {\n        destructors.push(_free, base);\n      }\n      return base;\n    },\n    readValueFromPointer: readPointer,\n    destructorFunction(ptr) {\n      _free(ptr);\n    }\n  });\n};\n\n__embind_register_std_string.sig = \"vpp\";\n\nvar UTF16Decoder = globalThis.TextDecoder ? new TextDecoder(\"utf-16le\") : undefined;\n\nvar UTF16ToString = (ptr, maxBytesToRead, ignoreNul) => {\n  assert(ptr % 2 == 0, \"pointer passed to UTF16ToString must be 2-byte aligned\");\n  var idx = ((ptr) >> 1);\n  var endIdx = findStringEnd((growMemViews(), HEAPU16), idx, maxBytesToRead / 2, ignoreNul);\n  // When using conditional TextDecoder, skip it for short strings as the overhead of the native call is not worth it.\n  if (endIdx - idx > 16 && UTF16Decoder) return UTF16Decoder.decode((growMemViews(), \n  HEAPU16).slice(idx, endIdx));\n  // Fallback: decode without UTF16Decoder\n  var str = \"\";\n  // If maxBytesToRead is not passed explicitly, it will be undefined, and the\n  // for-loop's condition will always evaluate to true. The loop is then\n  // terminated on the first null char.\n  for (var i = idx; i < endIdx; ++i) {\n    var codeUnit = (growMemViews(), HEAPU16)[i];\n    // fromCharCode constructs a character from a UTF-16 code unit, so we can\n    // pass the UTF16 string right through.\n    str += String.fromCharCode(codeUnit);\n  }\n  return str;\n};\n\nvar stringToUTF16 = (str, outPtr, maxBytesToWrite) => {\n  assert(outPtr % 2 == 0, \"pointer passed to stringToUTF16 must be 2-byte aligned\");\n  assert(typeof maxBytesToWrite == \"number\", \"stringToUTF16 requires a third parameter that specifies the length of the output buffer\");\n  // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.\n  maxBytesToWrite ??= 2147483647;\n  if (maxBytesToWrite < 2) return 0;\n  maxBytesToWrite -= 2;\n  // Null terminator.\n  var startPtr = outPtr;\n  var numCharsToWrite = (maxBytesToWrite < str.length * 2) ? (maxBytesToWrite / 2) : str.length;\n  for (var i = 0; i < numCharsToWrite; ++i) {\n    // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.\n    var codeUnit = str.charCodeAt(i);\n    // possibly a lead surrogate\n    (growMemViews(), HEAP16)[((outPtr) >> 1)] = codeUnit;\n    outPtr += 2;\n  }\n  // Null-terminate the pointer to the HEAP.\n  (growMemViews(), HEAP16)[((outPtr) >> 1)] = 0;\n  return outPtr - startPtr;\n};\n\nvar lengthBytesUTF16 = str => str.length * 2;\n\nvar UTF32ToString = (ptr, maxBytesToRead, ignoreNul) => {\n  assert(ptr % 4 == 0, \"pointer passed to UTF32ToString must be 2-byte aligned\");\n  var str = \"\";\n  var startIdx = ((ptr) >> 2);\n  // If maxBytesToRead is not passed explicitly, it will be undefined, and this\n  // will always evaluate to true. This saves on code size.\n  for (var i = 0; !(i >= maxBytesToRead / 4); i++) {\n    var utf32 = (growMemViews(), HEAPU32)[startIdx + i];\n    if (!utf32 && !ignoreNul) break;\n    str += String.fromCodePoint(utf32);\n  }\n  return str;\n};\n\nvar stringToUTF32 = (str, outPtr, maxBytesToWrite) => {\n  assert(outPtr % 4 == 0, \"pointer passed to stringToUTF32 must be 4-byte aligned\");\n  assert(typeof maxBytesToWrite == \"number\", \"stringToUTF32 requires a third parameter that specifies the length of the output buffer\");\n  // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.\n  maxBytesToWrite ??= 2147483647;\n  if (maxBytesToWrite < 4) return 0;\n  var startPtr = outPtr;\n  var endPtr = startPtr + maxBytesToWrite - 4;\n  for (var i = 0; i < str.length; ++i) {\n    var codePoint = str.codePointAt(i);\n    // Gotcha: if codePoint is over 0xFFFF, it is represented as a surrogate pair in UTF-16.\n    // We need to manually skip over the second code unit for correct iteration.\n    if (codePoint > 65535) {\n      i++;\n    }\n    (growMemViews(), HEAP32)[((outPtr) >> 2)] = codePoint;\n    outPtr += 4;\n    if (outPtr + 4 > endPtr) break;\n  }\n  // Null-terminate the pointer to the HEAP.\n  (growMemViews(), HEAP32)[((outPtr) >> 2)] = 0;\n  return outPtr - startPtr;\n};\n\nvar lengthBytesUTF32 = str => {\n  var len = 0;\n  for (var i = 0; i < str.length; ++i) {\n    var codePoint = str.codePointAt(i);\n    // Gotcha: if codePoint is over 0xFFFF, it is represented as a surrogate pair in UTF-16.\n    // We need to manually skip over the second code unit for correct iteration.\n    if (codePoint > 65535) {\n      i++;\n    }\n    len += 4;\n  }\n  return len;\n};\n\nvar __embind_register_std_wstring = (rawType, charSize, name) => {\n  name = AsciiToString(name);\n  var decodeString, encodeString, lengthBytesUTF;\n  if (charSize === 2) {\n    decodeString = UTF16ToString;\n    encodeString = stringToUTF16;\n    lengthBytesUTF = lengthBytesUTF16;\n  } else {\n    assert(charSize === 4, \"only 2-byte and 4-byte strings are currently supported\");\n    decodeString = UTF32ToString;\n    encodeString = stringToUTF32;\n    lengthBytesUTF = lengthBytesUTF32;\n  }\n  registerType(rawType, {\n    name,\n    fromWireType: value => {\n      // Code mostly taken from _embind_register_std_string fromWireType\n      var length = (growMemViews(), HEAPU32)[((value) >> 2)];\n      var str = decodeString(value + 4, length * charSize, true);\n      _free(value);\n      return str;\n    },\n    toWireType: (destructors, value) => {\n      if (!(typeof value == \"string\")) {\n        throwBindingError(`Cannot pass non-string to C++ string type ${name}`);\n      }\n      // assumes POINTER_SIZE alignment\n      var length = lengthBytesUTF(value);\n      var ptr = _malloc(4 + length + charSize);\n      (growMemViews(), HEAPU32)[((ptr) >> 2)] = length / charSize;\n      encodeString(value, ptr + 4, length + charSize);\n      if (destructors !== null) {\n        destructors.push(_free, ptr);\n      }\n      return ptr;\n    },\n    readValueFromPointer: readPointer,\n    destructorFunction(ptr) {\n      _free(ptr);\n    }\n  });\n};\n\n__embind_register_std_wstring.sig = \"vppp\";\n\nvar __embind_register_value_object = (rawType, name, constructorSignature, rawConstructor, destructorSignature, rawDestructor) => {\n  structRegistrations[rawType] = {\n    name: AsciiToString(name),\n    rawConstructor: embind__requireFunction(constructorSignature, rawConstructor),\n    rawDestructor: embind__requireFunction(destructorSignature, rawDestructor),\n    fields: []\n  };\n};\n\n__embind_register_value_object.sig = \"vpppppp\";\n\nvar __embind_register_value_object_field = (structType, fieldName, getterReturnType, getterSignature, getter, getterContext, setterArgumentType, setterSignature, setter, setterContext) => {\n  structRegistrations[structType].fields.push({\n    fieldName: AsciiToString(fieldName),\n    getterReturnType,\n    getter: embind__requireFunction(getterSignature, getter),\n    getterContext,\n    setterArgumentType,\n    setter: embind__requireFunction(setterSignature, setter),\n    setterContext\n  });\n};\n\n__embind_register_value_object_field.sig = \"vpppppppppp\";\n\nvar __embind_register_void = (rawType, name) => {\n  name = AsciiToString(name);\n  registerType(rawType, {\n    isVoid: true,\n    // void return values can be optimized out sometimes\n    name,\n    fromWireType: () => undefined,\n    // TODO: assert if anything else is given?\n    toWireType: (destructors, o) => undefined\n  });\n};\n\n__embind_register_void.sig = \"vpp\";\n\nvar handleException = e => {\n  // Certain exception types we do not treat as errors since they are used for\n  // internal control flow.\n  // 1. ExitStatus, which is thrown by exit()\n  // 2. \"unwind\", which is thrown by emscripten_unwind_to_js_event_loop() and others\n  //    that wish to return to JS event loop.\n  if (e instanceof ExitStatus || e == \"unwind\") {\n    return EXITSTATUS;\n  }\n  checkStackCookie();\n  if (e instanceof WebAssembly.RuntimeError) {\n    if (_emscripten_stack_get_current() <= 0) {\n      err(\"Stack overflow detected.  You can try increasing -sSTACK_SIZE (currently set to 65536)\");\n    }\n  }\n  quit_(1, e);\n};\n\nvar maybeExit = () => {\n  if (!keepRuntimeAlive()) {\n    try {\n      if (ENVIRONMENT_IS_PTHREAD) {\n        // exit the current thread, but only if there is one active.\n        // TODO(https://github.com/emscripten-core/emscripten/issues/25076):\n        // Unify this check with the runtimeExited check above\n        if (_pthread_self()) __emscripten_thread_exit(EXITSTATUS);\n        return;\n      }\n      _exit(EXITSTATUS);\n    } catch (e) {\n      handleException(e);\n    }\n  }\n};\n\nvar callUserCallback = func => {\n  if (ABORT) {\n    err(\"user callback triggered after runtime exited or application aborted.  Ignoring.\");\n    return;\n  }\n  try {\n    return func();\n  } catch (e) {\n    handleException(e);\n  } finally {\n    maybeExit();\n  }\n};\n\nvar runtimeKeepalivePush = () => {\n  runtimeKeepaliveCounter += 1;\n};\n\nruntimeKeepalivePush.sig = \"v\";\n\nvar runtimeKeepalivePop = () => {\n  assert(runtimeKeepaliveCounter > 0);\n  runtimeKeepaliveCounter -= 1;\n};\n\nruntimeKeepalivePop.sig = \"v\";\n\nvar __emscripten_dlopen_js = (handle, onsuccess, onerror, user_data) => {\n  /** @param {Object=} e */ function errorCallback(e) {\n    var filename = UTF8ToString(handle + 36);\n    dlSetError(`'Could not load dynamic lib: ${filename}\\n${e}`);\n    runtimeKeepalivePop();\n    callUserCallback(() => getWasmTableEntry(onerror)(handle, user_data));\n  }\n  function successCallback() {\n    runtimeKeepalivePop();\n    callUserCallback(() => getWasmTableEntry(onsuccess)(handle, user_data));\n  }\n  runtimeKeepalivePush();\n  var promise = dlopenInternal(handle, {\n    loadAsync: true\n  });\n  if (promise) {\n    promise.then(successCallback, errorCallback);\n  } else {\n    errorCallback();\n  }\n};\n\n__emscripten_dlopen_js.sig = \"vpppp\";\n\nfunction __emscripten_fetch_get_response_headers(id, dst, dstSizeBytes) {\n  var responseHeaders = Fetch.xhrs.get(id).getAllResponseHeaders();\n  return stringToUTF8(responseHeaders, dst, dstSizeBytes) + 1;\n}\n\n__emscripten_fetch_get_response_headers.sig = \"pipp\";\n\nfunction __emscripten_fetch_get_response_headers_length(id) {\n  return lengthBytesUTF8(Fetch.xhrs.get(id).getAllResponseHeaders());\n}\n\n__emscripten_fetch_get_response_headers_length.sig = \"pi\";\n\nvar __emscripten_init_main_thread_js = tb => {\n  var can_block = !ENVIRONMENT_IS_WEB;\n  // Feature detect whether the main thread can block.\n  try {\n    Atomics.wait((growMemViews(), HEAP32), 0, 0, 0);\n    can_block = true;\n  } catch (e) {}\n  // Pass the thread address to the native code where they are stored in wasm\n  // globals which act as a form of TLS. Global constructors trying\n  // to access this value will read the wrong value, but that is UB anyway.\n  __emscripten_thread_init(tb, /*is_main=*/ !ENVIRONMENT_IS_WORKER, /*is_runtime=*/ 1, can_block, /*default_stacksize=*/ 65536, /*start_profiling=*/ false);\n  PThread.threadInitTLS();\n};\n\n__emscripten_init_main_thread_js.sig = \"vp\";\n\nvar __emscripten_thread_mailbox_await = pthread_ptr => {\n  if (!waitAsyncPolyfilled) {\n    // Wait on the pthread's initial self-pointer field because it is easy and\n    // safe to access from sending threads that need to notify the waiting\n    // thread.\n    // Note: Under wasm64 only the low 32-bit of the pthread_ptr are\n    // read/compared here, but we don't actually care about the exact values\n    // here as long as they match.\n    var wait = Atomics.waitAsync((growMemViews(), HEAP32), ((pthread_ptr) >> 2), pthread_ptr);\n    assert(wait.async);\n    wait.value.then(checkMailbox);\n    var waitingAsync = pthread_ptr + 112;\n    Atomics.store((growMemViews(), HEAP32), ((waitingAsync) >> 2), 1);\n  }\n};\n\n__emscripten_thread_mailbox_await.sig = \"vp\";\n\nvar checkMailbox = () => {\n  // checkMailbox can be called after the pthread has shut down. See\n  // Pthread.terminateRuntime().\n  // In this case we return silently without re-registering using waitAsync.\n  // Perhaps there is a more universal way we can detect runtime has exited.\n  // TODO(https://github.com/emscripten-core/emscripten/issues/25076)\n  var pthread_ptr = _pthread_self();\n  if (!pthread_ptr) return;\n  callUserCallback(() => {\n    // If we are using Atomics.waitAsync as our notification mechanism, wait\n    // for a notification before processing the mailbox to avoid missing any\n    // work that could otherwise arrive after we've finished processing the\n    // mailbox and before we're ready for the next notification.\n    __emscripten_thread_mailbox_await(pthread_ptr);\n    __emscripten_check_mailbox();\n  });\n};\n\nvar __emscripten_notify_mailbox_postmessage = (targetThread, currThreadId) => {\n  if (targetThread == currThreadId) {\n    setTimeout(checkMailbox);\n  } else if (ENVIRONMENT_IS_PTHREAD) {\n    postMessage({\n      targetThread,\n      cmd: 4\n    });\n  } else {\n    var worker = PThread.pthreads[targetThread];\n    if (!worker) {\n      err(`Cannot send message to thread with ID ${targetThread}, unknown thread ID!`);\n      return;\n    }\n    worker.postMessage({\n      cmd: 4\n    });\n  }\n};\n\n__emscripten_notify_mailbox_postmessage.sig = \"vpp\";\n\nvar proxiedJSCallArgs = [];\n\nvar __emscripten_receive_on_main_thread_js = (funcIndex, emAsmAddr, callingThread, bufSize, args, ctx, ctxArgs) => {\n  // Sometimes we need to backproxy events to the calling thread (e.g.\n  // HTML5 DOM events handlers such as\n  // emscripten_set_mousemove_callback()), so keep track in a globally\n  // accessible variable about the thread that initiated the proxying.\n  proxiedJSCallArgs.length = 0;\n  var b = ((args) >> 3);\n  var end = ((args + bufSize) >> 3);\n  while (b < end) {\n    var arg;\n    if ((growMemViews(), HEAP64)[b++]) {\n      // It's a BigInt.\n      arg = (growMemViews(), HEAP64)[b++];\n    } else {\n      // It's a Number.\n      arg = (growMemViews(), HEAPF64)[b++];\n    }\n    proxiedJSCallArgs.push(arg);\n  }\n  // Proxied JS library funcs use funcIndex and EM_ASM functions use emAsmAddr\n  var func = emAsmAddr ? ASM_CONSTS[emAsmAddr] : proxiedFunctionTable[funcIndex];\n  assert(!(funcIndex && emAsmAddr));\n  assert(func.length == proxiedJSCallArgs.length, \"Call args mismatch in _emscripten_receive_on_main_thread_js\");\n  PThread.currentProxiedOperationCallerThread = callingThread;\n  var rtn = func(...proxiedJSCallArgs);\n  PThread.currentProxiedOperationCallerThread = 0;\n  if (ctx) {\n    rtn.then(rtn => __emscripten_run_js_on_main_thread_done(ctx, ctxArgs, rtn));\n    return;\n  }\n  // Proxied functions can return any type except bigint.  All other types\n  // coerce to f64/double (the return type of this function in C) but not\n  // bigint.\n  assert(typeof rtn != \"bigint\");\n  return rtn;\n};\n\n__emscripten_receive_on_main_thread_js.sig = \"dippippp\";\n\nvar __emscripten_runtime_keepalive_clear = () => {\n  noExitRuntime = false;\n  runtimeKeepaliveCounter = 0;\n};\n\n__emscripten_runtime_keepalive_clear.sig = \"v\";\n\nvar __emscripten_thread_cleanup = thread => {\n  // Called when a thread needs to be cleaned up so it can be reused.\n  // A thread is considered reusable when it either returns from its\n  // entry point, calls pthread_exit, or acts upon a cancellation.\n  // Detached threads are responsible for calling this themselves,\n  // otherwise pthread_join is responsible for calling this.\n  if (!ENVIRONMENT_IS_PTHREAD) cleanupThread(thread); else postMessage({\n    cmd: 6,\n    thread\n  });\n};\n\n__emscripten_thread_cleanup.sig = \"vp\";\n\nvar __emscripten_thread_exit_joinable = thread => {\n  // Called when a thread exits and is joinable.  We mark these threads\n  // as finished, which means they are in state where are no longer actually\n  // running, but remain around waiting to be joined.  In this state they\n  // cannot run any more proxied work.\n  if (!ENVIRONMENT_IS_PTHREAD) markAsFinished(thread); else postMessage({\n    cmd: 7,\n    thread\n  });\n};\n\n__emscripten_thread_exit_joinable.sig = \"vp\";\n\nvar __emscripten_thread_set_strongref = thread => {\n  // Called when a thread needs to be strongly referenced.\n  // Currently only used for:\n  // - keeping the \"main\" thread alive in PROXY_TO_PTHREAD mode;\n  // - crashed threads that need to propagate the uncaught exception\n  //   back to the main thread.\n  if (ENVIRONMENT_IS_NODE) {\n    var worker = PThread.pthreads[thread];\n    worker.ref();\n    // Also, record that we called strongref, in case this function is called\n    // bafore the 'loaded' callback from the thread (where we would normally\n    // `unref` it.\n    worker.strongref = 1;\n  }\n};\n\n__emscripten_thread_set_strongref.sig = \"vp\";\n\nvar emval_methodCallers = [];\n\nvar emval_addMethodCaller = caller => {\n  var id = emval_methodCallers.length;\n  emval_methodCallers.push(caller);\n  return id;\n};\n\nvar emval_lookupTypes = (argCount, argTypes) => {\n  var a = new Array(argCount);\n  for (var i = 0; i < argCount; ++i) {\n    a[i] = requireRegisteredType((growMemViews(), HEAPU32)[(((argTypes) + (i * 4)) >> 2)], `parameter ${i}`);\n  }\n  return a;\n};\n\nvar emval_returnValue = (toReturnWire, destructorsRef, handle) => {\n  var destructors = [];\n  var result = toReturnWire(destructors, handle);\n  if (destructors.length) {\n    // void, primitives and any other types w/o destructors don't need to allocate a handle\n    (growMemViews(), HEAPU32)[((destructorsRef) >> 2)] = Emval.toHandle(destructors);\n  }\n  return result;\n};\n\nvar emval_symbols = {};\n\nvar getStringOrSymbol = address => {\n  var symbol = emval_symbols[address];\n  if (symbol === undefined) {\n    return AsciiToString(address);\n  }\n  return symbol;\n};\n\nvar __emval_create_invoker = (argCount, argTypesPtr, kind) => {\n  var GenericWireTypeSize = 8;\n  var [retType, ...argTypes] = emval_lookupTypes(argCount, argTypesPtr);\n  var toReturnWire = retType.toWireType.bind(retType);\n  var argFromPtr = argTypes.map(type => type.readValueFromPointer.bind(type));\n  argCount--;\n  // remove the extracted return type\n  var argN = new Array(argCount);\n  var invokerFunction = (handle, methodName, destructorsRef, args) => {\n    var offset = 0;\n    for (var i = 0; i < argCount; ++i) {\n      argN[i] = argFromPtr[i](args + offset);\n      offset += GenericWireTypeSize;\n    }\n    var rv;\n    switch (kind) {\n     case 0:\n      rv = Emval.toValue(handle).apply(null, argN);\n      break;\n\n     case 2:\n      rv = Reflect.construct(Emval.toValue(handle), argN);\n      break;\n\n     case 3:\n      // no-op, just return the argument\n      rv = argN[0];\n      break;\n\n     case 1:\n      rv = Emval.toValue(handle)[getStringOrSymbol(methodName)](...argN);\n      break;\n    }\n    return emval_returnValue(toReturnWire, destructorsRef, rv);\n  };\n  var functionName = `methodCaller<(${argTypes.map(t => t.name)}) => ${retType.name}>`;\n  return emval_addMethodCaller(createNamedFunction(functionName, invokerFunction));\n};\n\n__emval_create_invoker.sig = \"pipi\";\n\nvar __emval_get_global = name => {\n  if (!name) {\n    return Emval.toHandle(globalThis);\n  }\n  name = getStringOrSymbol(name);\n  return Emval.toHandle(globalThis[name]);\n};\n\n__emval_get_global.sig = \"pp\";\n\nvar __emval_get_property = (handle, key) => {\n  handle = Emval.toValue(handle);\n  key = Emval.toValue(key);\n  return Emval.toHandle(handle[key]);\n};\n\n__emval_get_property.sig = \"ppp\";\n\nvar __emval_incref = handle => {\n  if (handle > 9) {\n    emval_handles[handle + 1] += 1;\n  }\n};\n\n__emval_incref.sig = \"vp\";\n\nvar __emval_invoke = (caller, handle, methodName, destructorsRef, args) => emval_methodCallers[caller](handle, methodName, destructorsRef, args);\n\n__emval_invoke.sig = \"dppppp\";\n\nvar __emval_new_array = () => Emval.toHandle([]);\n\n__emval_new_array.sig = \"p\";\n\nvar __emval_new_array_from_memory_view = view => {\n  view = Emval.toValue(view);\n  // using for..loop is faster than Array.from\n  var a = new Array(view.length);\n  for (var i = 0; i < view.length; i++) a[i] = view[i];\n  return Emval.toHandle(a);\n};\n\n__emval_new_array_from_memory_view.sig = \"pp\";\n\nvar __emval_new_cstring = v => Emval.toHandle(getStringOrSymbol(v));\n\n__emval_new_cstring.sig = \"pp\";\n\nvar __emval_run_destructors = handle => {\n  var destructors = Emval.toValue(handle);\n  runDestructors(destructors);\n  __emval_decref(handle);\n};\n\n__emval_run_destructors.sig = \"vp\";\n\nvar INT53_MAX = 9007199254740992;\n\nvar INT53_MIN = -9007199254740992;\n\nvar bigintToI53Checked = num => (num < INT53_MIN || num > INT53_MAX) ? NaN : Number(num);\n\nfunction __gmtime_js(time, tmPtr) {\n  time = bigintToI53Checked(time);\n  var date = new Date(time * 1e3);\n  (growMemViews(), HEAP32)[((tmPtr) >> 2)] = date.getUTCSeconds();\n  (growMemViews(), HEAP32)[(((tmPtr) + (4)) >> 2)] = date.getUTCMinutes();\n  (growMemViews(), HEAP32)[(((tmPtr) + (8)) >> 2)] = date.getUTCHours();\n  (growMemViews(), HEAP32)[(((tmPtr) + (12)) >> 2)] = date.getUTCDate();\n  (growMemViews(), HEAP32)[(((tmPtr) + (16)) >> 2)] = date.getUTCMonth();\n  (growMemViews(), HEAP32)[(((tmPtr) + (20)) >> 2)] = date.getUTCFullYear() - 1900;\n  (growMemViews(), HEAP32)[(((tmPtr) + (24)) >> 2)] = date.getUTCDay();\n  var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n  var yday = ((date.getTime() - start) / (1e3 * 60 * 60 * 24)) | 0;\n  (growMemViews(), HEAP32)[(((tmPtr) + (28)) >> 2)] = yday;\n}\n\n__gmtime_js.sig = \"vjp\";\n\nvar isLeapYear = year => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n\nvar MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ];\n\nvar MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ];\n\nvar ydayFromDate = date => {\n  var leap = isLeapYear(date.getFullYear());\n  var monthDaysCumulative = (leap ? MONTH_DAYS_LEAP_CUMULATIVE : MONTH_DAYS_REGULAR_CUMULATIVE);\n  var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n  // -1 since it's days since Jan 1\n  return yday;\n};\n\nfunction __localtime_js(time, tmPtr) {\n  time = bigintToI53Checked(time);\n  var date = new Date(time * 1e3);\n  (growMemViews(), HEAP32)[((tmPtr) >> 2)] = date.getSeconds();\n  (growMemViews(), HEAP32)[(((tmPtr) + (4)) >> 2)] = date.getMinutes();\n  (growMemViews(), HEAP32)[(((tmPtr) + (8)) >> 2)] = date.getHours();\n  (growMemViews(), HEAP32)[(((tmPtr) + (12)) >> 2)] = date.getDate();\n  (growMemViews(), HEAP32)[(((tmPtr) + (16)) >> 2)] = date.getMonth();\n  (growMemViews(), HEAP32)[(((tmPtr) + (20)) >> 2)] = date.getFullYear() - 1900;\n  (growMemViews(), HEAP32)[(((tmPtr) + (24)) >> 2)] = date.getDay();\n  var yday = ydayFromDate(date) | 0;\n  (growMemViews(), HEAP32)[(((tmPtr) + (28)) >> 2)] = yday;\n  (growMemViews(), HEAP32)[(((tmPtr) + (36)) >> 2)] = -(date.getTimezoneOffset() * 60);\n  // Attention: DST is in December in South, and some regions don't have DST at all.\n  var start = new Date(date.getFullYear(), 0, 1);\n  var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n  var winterOffset = start.getTimezoneOffset();\n  var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n  (growMemViews(), HEAP32)[(((tmPtr) + (32)) >> 2)] = dst;\n}\n\n__localtime_js.sig = \"vjp\";\n\nvar __mktime_js = function(tmPtr) {\n  var ret = (() => {\n    var date = new Date((growMemViews(), HEAP32)[(((tmPtr) + (20)) >> 2)] + 1900, (growMemViews(), \n    HEAP32)[(((tmPtr) + (16)) >> 2)], (growMemViews(), HEAP32)[(((tmPtr) + (12)) >> 2)], (growMemViews(), \n    HEAP32)[(((tmPtr) + (8)) >> 2)], (growMemViews(), HEAP32)[(((tmPtr) + (4)) >> 2)], (growMemViews(), \n    HEAP32)[((tmPtr) >> 2)], 0);\n    if (isNaN(date.getTime())) {\n      return -1;\n    }\n    // There's an ambiguous hour when the time goes back; the tm_isdst field is\n    // used to disambiguate it.  Date() basically guesses, so we fix it up if it\n    // guessed wrong, or fill in tm_isdst with the guess if it's -1.\n    var dst = (growMemViews(), HEAP32)[(((tmPtr) + (32)) >> 2)];\n    var guessedOffset = date.getTimezoneOffset();\n    var start = new Date(date.getFullYear(), 0, 1);\n    var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n    var winterOffset = start.getTimezoneOffset();\n    var dstOffset = Math.min(winterOffset, summerOffset);\n    // DST is in December in South\n    if (dst < 0) {\n      // Attention: some regions don't have DST at all.\n      (growMemViews(), HEAP32)[(((tmPtr) + (32)) >> 2)] = Number(summerOffset != winterOffset && dstOffset == guessedOffset);\n    } else if ((dst > 0) != (dstOffset == guessedOffset)) {\n      var nonDstOffset = Math.max(winterOffset, summerOffset);\n      var trueOffset = dst > 0 ? dstOffset : nonDstOffset;\n      // Don't try setMinutes(date.getMinutes() + ...) -- it's messed up.\n      date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4);\n    }\n    (growMemViews(), HEAP32)[(((tmPtr) + (24)) >> 2)] = date.getDay();\n    var yday = ydayFromDate(date) | 0;\n    (growMemViews(), HEAP32)[(((tmPtr) + (28)) >> 2)] = yday;\n    // To match expected behavior, update fields from date\n    (growMemViews(), HEAP32)[((tmPtr) >> 2)] = date.getSeconds();\n    (growMemViews(), HEAP32)[(((tmPtr) + (4)) >> 2)] = date.getMinutes();\n    (growMemViews(), HEAP32)[(((tmPtr) + (8)) >> 2)] = date.getHours();\n    (growMemViews(), HEAP32)[(((tmPtr) + (12)) >> 2)] = date.getDate();\n    (growMemViews(), HEAP32)[(((tmPtr) + (16)) >> 2)] = date.getMonth();\n    (growMemViews(), HEAP32)[(((tmPtr) + (20)) >> 2)] = date.getYear();\n    // Return time in seconds\n    return date.getTime() / 1e3;\n  })();\n  return BigInt(ret);\n};\n\n__mktime_js.sig = \"jp\";\n\nvar __timegm_js = function(tmPtr) {\n  var ret = (() => {\n    var time = Date.UTC((growMemViews(), HEAP32)[(((tmPtr) + (20)) >> 2)] + 1900, (growMemViews(), \n    HEAP32)[(((tmPtr) + (16)) >> 2)], (growMemViews(), HEAP32)[(((tmPtr) + (12)) >> 2)], (growMemViews(), \n    HEAP32)[(((tmPtr) + (8)) >> 2)], (growMemViews(), HEAP32)[(((tmPtr) + (4)) >> 2)], (growMemViews(), \n    HEAP32)[((tmPtr) >> 2)], 0);\n    var date = new Date(time);\n    (growMemViews(), HEAP32)[(((tmPtr) + (24)) >> 2)] = date.getUTCDay();\n    var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n    var yday = ((date.getTime() - start) / (1e3 * 60 * 60 * 24)) | 0;\n    (growMemViews(), HEAP32)[(((tmPtr) + (28)) >> 2)] = yday;\n    return date.getTime() / 1e3;\n  })();\n  return BigInt(ret);\n};\n\n__timegm_js.sig = \"jp\";\n\nvar __tzset_js = (timezone, daylight, std_name, dst_name) => {\n  // TODO: Use (malleable) environment variables instead of system settings.\n  var currentYear = (new Date).getFullYear();\n  var winter = new Date(currentYear, 0, 1);\n  var summer = new Date(currentYear, 6, 1);\n  var winterOffset = winter.getTimezoneOffset();\n  var summerOffset = summer.getTimezoneOffset();\n  // Local standard timezone offset. Local standard time is not adjusted for\n  // daylight savings.  This code uses the fact that getTimezoneOffset returns\n  // a greater value during Standard Time versus Daylight Saving Time (DST).\n  // Thus it determines the expected output during Standard Time, and it\n  // compares whether the output of the given date the same (Standard) or less\n  // (DST).\n  var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n  // timezone is specified as seconds west of UTC (\"The external variable\n  // `timezone` shall be set to the difference, in seconds, between\n  // Coordinated Universal Time (UTC) and local standard time.\"), the same\n  // as returned by stdTimezoneOffset.\n  // See http://pubs.opengroup.org/onlinepubs/009695399/functions/tzset.html\n  (growMemViews(), HEAPU32)[((timezone) >> 2)] = stdTimezoneOffset * 60;\n  (growMemViews(), HEAP32)[((daylight) >> 2)] = Number(winterOffset != summerOffset);\n  var extractZone = timezoneOffset => {\n    // Why inverse sign?\n    // Read here https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\n    var sign = timezoneOffset >= 0 ? \"-\" : \"+\";\n    var absOffset = Math.abs(timezoneOffset);\n    var hours = String(Math.floor(absOffset / 60)).padStart(2, \"0\");\n    var minutes = String(absOffset % 60).padStart(2, \"0\");\n    return `UTC${sign}${hours}${minutes}`;\n  };\n  var winterName = extractZone(winterOffset);\n  var summerName = extractZone(summerOffset);\n  assert(winterName);\n  assert(summerName);\n  assert(lengthBytesUTF8(winterName) <= 16, `timezone name truncated to fit in TZNAME_MAX (${winterName})`);\n  assert(lengthBytesUTF8(summerName) <= 16, `timezone name truncated to fit in TZNAME_MAX (${summerName})`);\n  if (summerOffset < winterOffset) {\n    // Northern hemisphere\n    stringToUTF8(winterName, std_name, 17);\n    stringToUTF8(summerName, dst_name, 17);\n  } else {\n    stringToUTF8(winterName, dst_name, 17);\n    stringToUTF8(summerName, std_name, 17);\n  }\n};\n\n__tzset_js.sig = \"vpppp\";\n\nvar __wasmfs_copy_preloaded_file_data = (index, buffer) => (growMemViews(), HEAPU8).set(wasmFSPreloadedFiles[index].fileData, buffer);\n\n__wasmfs_copy_preloaded_file_data.sig = \"vip\";\n\nvar __wasmfs_get_num_preloaded_dirs = () => wasmFSPreloadedDirs.length;\n\n__wasmfs_get_num_preloaded_dirs.sig = \"i\";\n\nvar __wasmfs_get_num_preloaded_files = () => {\n  // When this method is called from WasmFS it means that we are about to\n  // flush all the preloaded data, so mark that. (There is no call that\n  // occurs at the end of that flushing, which would be more natural, but it\n  // is fine to mark the flushing here as during the flushing itself no user\n  // code can run, so nothing will check whether we have flushed or not.)\n  wasmFSPreloadingFlushed = true;\n  return wasmFSPreloadedFiles.length;\n};\n\n__wasmfs_get_num_preloaded_files.sig = \"i\";\n\nvar __wasmfs_get_preloaded_child_path = (index, childNameBuffer) => {\n  var s = wasmFSPreloadedDirs[index].childName;\n  var len = lengthBytesUTF8(s) + 1;\n  stringToUTF8(s, childNameBuffer, len);\n};\n\n__wasmfs_get_preloaded_child_path.sig = \"vip\";\n\nvar __wasmfs_get_preloaded_file_mode = index => wasmFSPreloadedFiles[index].mode;\n\n__wasmfs_get_preloaded_file_mode.sig = \"ii\";\n\nvar __wasmfs_get_preloaded_file_size = index => wasmFSPreloadedFiles[index].fileData.length;\n\n__wasmfs_get_preloaded_file_size.sig = \"pi\";\n\nvar __wasmfs_get_preloaded_parent_path = (index, parentPathBuffer) => {\n  var s = wasmFSPreloadedDirs[index].parentPath;\n  var len = lengthBytesUTF8(s) + 1;\n  stringToUTF8(s, parentPathBuffer, len);\n};\n\n__wasmfs_get_preloaded_parent_path.sig = \"vip\";\n\nvar __wasmfs_get_preloaded_path_name = (index, fileNameBuffer) => {\n  var s = wasmFSPreloadedFiles[index].pathName;\n  var len = lengthBytesUTF8(s) + 1;\n  stringToUTF8(s, fileNameBuffer, len);\n};\n\n__wasmfs_get_preloaded_path_name.sig = \"vip\";\n\nvar __wasmfs_jsimpl_alloc_file = (backend, file) => {\n  assert(wasmFS$backends[backend]);\n  return wasmFS$backends[backend].allocFile(file);\n};\n\n__wasmfs_jsimpl_alloc_file.sig = \"vpp\";\n\nvar __wasmfs_jsimpl_free_file = (backend, file) => {\n  assert(wasmFS$backends[backend]);\n  return wasmFS$backends[backend].freeFile(file);\n};\n\n__wasmfs_jsimpl_free_file.sig = \"vpp\";\n\nvar __wasmfs_jsimpl_get_size = (backend, file) => {\n  assert(wasmFS$backends[backend]);\n  return wasmFS$backends[backend].getSize(file);\n};\n\n__wasmfs_jsimpl_get_size.sig = \"ipp\";\n\nfunction __wasmfs_jsimpl_read(backend, file, buffer, length, offset) {\n  offset = bigintToI53Checked(offset);\n  assert(wasmFS$backends[backend]);\n  if (!wasmFS$backends[backend].read) {\n    return -28;\n  }\n  return wasmFS$backends[backend].read(file, buffer, length, offset);\n}\n\n__wasmfs_jsimpl_read.sig = \"ippppj\";\n\nfunction __wasmfs_jsimpl_set_size(backend, file, size) {\n  size = bigintToI53Checked(size);\n  assert(wasmFS$backends[backend]);\n  return wasmFS$backends[backend].setSize(file, size);\n}\n\n__wasmfs_jsimpl_set_size.sig = \"ippj\";\n\nfunction __wasmfs_jsimpl_write(backend, file, buffer, length, offset) {\n  offset = bigintToI53Checked(offset);\n  assert(wasmFS$backends[backend]);\n  if (!wasmFS$backends[backend].write) {\n    return -28;\n  }\n  return wasmFS$backends[backend].write(file, buffer, length, offset);\n}\n\n__wasmfs_jsimpl_write.sig = \"ippppj\";\n\nclass HandleAllocator {\n  allocated=[ undefined ];\n  freelist=[];\n  get(id) {\n    assert(this.allocated[id] !== undefined, `invalid handle: ${id}`);\n    return this.allocated[id];\n  }\n  has(id) {\n    return this.allocated[id] !== undefined;\n  }\n  allocate(handle) {\n    var id = this.freelist.pop() ?? this.allocated.length;\n    this.allocated[id] = handle;\n    return id;\n  }\n  free(id) {\n    assert(this.allocated[id] !== undefined);\n    // Set the slot to `undefined` rather than using `delete` here since\n    // apparently arrays with holes in them can be less efficient.\n    this.allocated[id] = undefined;\n    this.freelist.push(id);\n  }\n}\n\nvar wasmfsOPFSAccessHandles = new HandleAllocator;\n\nvar wasmfsOPFSProxyFinish = ctx => {\n  // When using pthreads the proxy needs to know when the work is finished.\n  // When used with JSPI the work will be executed in an async block so there\n  // is no need to notify when done.\n  _emscripten_proxy_finish(ctx);\n};\n\nvar __wasmfs_opfs_close_access = async (ctx, accessID, errPtr) => {\n  let accessHandle = wasmfsOPFSAccessHandles.get(accessID);\n  try {\n    await accessHandle.close();\n  } catch {\n    let err = -29;\n    (growMemViews(), HEAP32)[((errPtr) >> 2)] = err;\n  }\n  wasmfsOPFSAccessHandles.free(accessID);\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_close_access.sig = \"vpip\";\n\nvar wasmfsOPFSBlobs = new HandleAllocator;\n\nvar __wasmfs_opfs_close_blob = blobID => {\n  wasmfsOPFSBlobs.free(blobID);\n};\n\n__wasmfs_opfs_close_blob.sig = \"vi\";\n\nvar __wasmfs_opfs_flush_access = async (ctx, accessID, errPtr) => {\n  let accessHandle = wasmfsOPFSAccessHandles.get(accessID);\n  try {\n    await accessHandle.flush();\n  } catch {\n    let err = -29;\n    (growMemViews(), HEAP32)[((errPtr) >> 2)] = err;\n  }\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_flush_access.sig = \"vpip\";\n\nvar wasmfsOPFSDirectoryHandles = new HandleAllocator;\n\nvar __wasmfs_opfs_free_directory = dirID => {\n  wasmfsOPFSDirectoryHandles.free(dirID);\n};\n\n__wasmfs_opfs_free_directory.sig = \"vi\";\n\nvar wasmfsOPFSFileHandles = new HandleAllocator;\n\nvar __wasmfs_opfs_free_file = fileID => {\n  wasmfsOPFSFileHandles.free(fileID);\n};\n\n__wasmfs_opfs_free_file.sig = \"vi\";\n\nvar wasmfsOPFSGetOrCreateFile = async (parent, name, create) => {\n  let parentHandle = wasmfsOPFSDirectoryHandles.get(parent);\n  let fileHandle;\n  try {\n    fileHandle = await parentHandle.getFileHandle(name, {\n      create\n    });\n  } catch (e) {\n    if (e.name === \"NotFoundError\") {\n      return -20;\n    }\n    if (e.name === \"TypeMismatchError\") {\n      return -31;\n    }\n    err(\"unexpected error:\", e, e.stack);\n    return -29;\n  }\n  return wasmfsOPFSFileHandles.allocate(fileHandle);\n};\n\nvar wasmfsOPFSGetOrCreateDir = async (parent, name, create) => {\n  let parentHandle = wasmfsOPFSDirectoryHandles.get(parent);\n  let childHandle;\n  try {\n    childHandle = await parentHandle.getDirectoryHandle(name, {\n      create\n    });\n  } catch (e) {\n    if (e.name === \"NotFoundError\") {\n      return -20;\n    }\n    if (e.name === \"TypeMismatchError\") {\n      return -54;\n    }\n    err(\"unexpected error:\", e, e.stack);\n    return -29;\n  }\n  return wasmfsOPFSDirectoryHandles.allocate(childHandle);\n};\n\nvar __wasmfs_opfs_get_child = async (ctx, parent, namePtr, childTypePtr, childIDPtr) => {\n  let name = UTF8ToString(namePtr);\n  let childType = 1;\n  let childID = await wasmfsOPFSGetOrCreateFile(parent, name, false);\n  if (childID == -31) {\n    childType = 2;\n    childID = await wasmfsOPFSGetOrCreateDir(parent, name, false);\n  }\n  (growMemViews(), HEAP32)[((childTypePtr) >> 2)] = childType;\n  (growMemViews(), HEAP32)[((childIDPtr) >> 2)] = childID;\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_get_child.sig = \"vpippp\";\n\nvar __wasmfs_opfs_get_entries = async (ctx, dirID, entriesPtr, errPtr) => {\n  let dirHandle = wasmfsOPFSDirectoryHandles.get(dirID);\n  // TODO: Use 'for await' once Acorn supports that.\n  try {\n    let iter = dirHandle.entries();\n    for (let entry; entry = await iter.next(), !entry.done; ) {\n      let [name, child] = entry.value;\n      let sp = stackSave();\n      let namePtr = stringToUTF8OnStack(name);\n      let type = child.kind == \"file\" ? 1 : 2;\n      __wasmfs_opfs_record_entry(entriesPtr, namePtr, type);\n      stackRestore(sp);\n    }\n  } catch {\n    let err = -29;\n    (growMemViews(), HEAP32)[((errPtr) >> 2)] = err;\n  }\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_get_entries.sig = \"vpipp\";\n\nvar __wasmfs_opfs_get_size_access = async (ctx, accessID, sizePtr) => {\n  let accessHandle = wasmfsOPFSAccessHandles.get(accessID);\n  let size;\n  try {\n    size = await accessHandle.getSize();\n  } catch {\n    size = -29;\n  }\n  (growMemViews(), HEAP64)[((sizePtr) >> 3)] = BigInt(size);\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_get_size_access.sig = \"vpip\";\n\nvar __wasmfs_opfs_get_size_blob = function(blobID) {\n  var ret = (() => wasmfsOPFSBlobs.get(blobID).size)();\n  return BigInt(ret);\n};\n\n__wasmfs_opfs_get_size_blob.sig = \"ji\";\n\nvar __wasmfs_opfs_get_size_file = async (ctx, fileID, sizePtr) => {\n  let fileHandle = wasmfsOPFSFileHandles.get(fileID);\n  let size;\n  try {\n    size = (await fileHandle.getFile()).size;\n  } catch {\n    size = -29;\n  }\n  (growMemViews(), HEAP64)[((sizePtr) >> 3)] = BigInt(size);\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_get_size_file.sig = \"vpip\";\n\nvar __wasmfs_opfs_init_root_directory = async ctx => {\n  // allocated.length starts off as 1 since 0 is a reserved handle\n  if (wasmfsOPFSDirectoryHandles.allocated.length == 1) {\n    // Closure compiler errors on this as it does not recognize the OPFS\n    // API yet, it seems. Unfortunately an existing annotation for this is in\n    // the closure compiler codebase, and cannot be overridden in user code\n    // (it complains on a duplicate type annotation), so just suppress it.\n    /** @suppress {checkTypes} */ let root = await navigator.storage.getDirectory();\n    wasmfsOPFSDirectoryHandles.allocated.push(root);\n  }\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_init_root_directory.sig = \"vp\";\n\nvar __wasmfs_opfs_insert_directory = async (ctx, parent, namePtr, childIDPtr) => {\n  let name = UTF8ToString(namePtr);\n  let childID = await wasmfsOPFSGetOrCreateDir(parent, name, true);\n  (growMemViews(), HEAP32)[((childIDPtr) >> 2)] = childID;\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_insert_directory.sig = \"vpipp\";\n\nvar __wasmfs_opfs_insert_file = async (ctx, parent, namePtr, childIDPtr) => {\n  let name = UTF8ToString(namePtr);\n  let childID = await wasmfsOPFSGetOrCreateFile(parent, name, true);\n  (growMemViews(), HEAP32)[((childIDPtr) >> 2)] = childID;\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_insert_file.sig = \"vpipp\";\n\nvar __wasmfs_opfs_move_file = async (ctx, fileID, newParentID, namePtr, errPtr) => {\n  let name = UTF8ToString(namePtr);\n  let fileHandle = wasmfsOPFSFileHandles.get(fileID);\n  let newDirHandle = wasmfsOPFSDirectoryHandles.get(newParentID);\n  try {\n    await fileHandle.move(newDirHandle, name);\n  } catch {\n    let err = -29;\n    (growMemViews(), HEAP32)[((errPtr) >> 2)] = err;\n  }\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_move_file.sig = \"vpiipp\";\n\nvar __wasmfs_opfs_open_access = async (ctx, fileID, accessIDPtr) => {\n  let fileHandle = wasmfsOPFSFileHandles.get(fileID);\n  let accessID;\n  try {\n    let accessHandle;\n    // TODO: Remove this once the Access Handles API has settled.\n    // TODO: Closure is confused by this code that supports two versions of\n    //       the same API, so suppress type checking on it.\n    /** @suppress {checkTypes} */ var len = FileSystemFileHandle.prototype.createSyncAccessHandle.length;\n    if (len == 0) {\n      accessHandle = await fileHandle.createSyncAccessHandle();\n    } else {\n      accessHandle = await fileHandle.createSyncAccessHandle({\n        mode: \"in-place\"\n      });\n    }\n    accessID = wasmfsOPFSAccessHandles.allocate(accessHandle);\n  } catch (e) {\n    // TODO: Presumably only one of these will appear in the final API?\n    if (e.name === \"InvalidStateError\" || e.name === \"NoModificationAllowedError\") {\n      accessID = -2;\n    } else {\n      err(\"unexpected error:\", e, e.stack);\n      accessID = -29;\n    }\n  }\n  (growMemViews(), HEAP32)[((accessIDPtr) >> 2)] = accessID;\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_open_access.sig = \"vpip\";\n\nvar __wasmfs_opfs_open_blob = async (ctx, fileID, blobIDPtr) => {\n  let fileHandle = wasmfsOPFSFileHandles.get(fileID);\n  let blobID;\n  try {\n    let blob = await fileHandle.getFile();\n    blobID = wasmfsOPFSBlobs.allocate(blob);\n  } catch (e) {\n    if (e.name === \"NotAllowedError\") {\n      blobID = -2;\n    } else {\n      err(\"unexpected error:\", e, e.stack);\n      blobID = -29;\n    }\n  }\n  (growMemViews(), HEAP32)[((blobIDPtr) >> 2)] = blobID;\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_open_blob.sig = \"vpip\";\n\nfunction __wasmfs_opfs_read_access(accessID, bufPtr, len, pos) {\n  pos = bigintToI53Checked(pos);\n  let accessHandle = wasmfsOPFSAccessHandles.get(accessID);\n  let data = (growMemViews(), HEAPU8).subarray(bufPtr, bufPtr + len);\n  try {\n    return accessHandle.read(data, {\n      at: pos\n    });\n  } catch (e) {\n    if (e.name == \"TypeError\") {\n      return -28;\n    }\n    err(\"unexpected error:\", e, e.stack);\n    return -29;\n  }\n}\n\n__wasmfs_opfs_read_access.sig = \"iipij\";\n\nasync function __wasmfs_opfs_read_blob(ctx, blobID, bufPtr, len, pos, nreadPtr) {\n  pos = bigintToI53Checked(pos);\n  let blob = wasmfsOPFSBlobs.get(blobID);\n  let slice = blob.slice(pos, pos + len);\n  let nread = 0;\n  try {\n    // TODO: Use ReadableStreamBYOBReader once\n    // https://bugs.chromium.org/p/chromium/issues/detail?id=1189621 is\n    // resolved.\n    let buf = await slice.arrayBuffer();\n    let data = new Uint8Array(buf);\n    (growMemViews(), HEAPU8).set(data, bufPtr);\n    nread += data.length;\n  } catch (e) {\n    if (e instanceof RangeError) {\n      nread = -21;\n    } else {\n      err(\"unexpected error:\", e, e.stack);\n      nread = -29;\n    }\n  }\n  (growMemViews(), HEAP32)[((nreadPtr) >> 2)] = nread;\n  wasmfsOPFSProxyFinish(ctx);\n}\n\n__wasmfs_opfs_read_blob.sig = \"ipipijp\";\n\nvar __wasmfs_opfs_remove_child = async (ctx, dirID, namePtr, errPtr) => {\n  let name = UTF8ToString(namePtr);\n  let dirHandle = wasmfsOPFSDirectoryHandles.get(dirID);\n  try {\n    await dirHandle.removeEntry(name);\n  } catch {\n    let err = -29;\n    (growMemViews(), HEAP32)[((errPtr) >> 2)] = err;\n  }\n  wasmfsOPFSProxyFinish(ctx);\n};\n\n__wasmfs_opfs_remove_child.sig = \"vpipp\";\n\nasync function __wasmfs_opfs_set_size_access(ctx, accessID, size, errPtr) {\n  size = bigintToI53Checked(size);\n  let accessHandle = wasmfsOPFSAccessHandles.get(accessID);\n  try {\n    await accessHandle.truncate(size);\n  } catch {\n    let err = -29;\n    (growMemViews(), HEAP32)[((errPtr) >> 2)] = err;\n  }\n  wasmfsOPFSProxyFinish(ctx);\n}\n\n__wasmfs_opfs_set_size_access.sig = \"vpijp\";\n\nasync function __wasmfs_opfs_set_size_file(ctx, fileID, size, errPtr) {\n  size = bigintToI53Checked(size);\n  let fileHandle = wasmfsOPFSFileHandles.get(fileID);\n  try {\n    let writable = await fileHandle.createWritable({\n      keepExistingData: true\n    });\n    await writable.truncate(size);\n    await writable.close();\n  } catch {\n    let err = -29;\n    (growMemViews(), HEAP32)[((errPtr) >> 2)] = err;\n  }\n  wasmfsOPFSProxyFinish(ctx);\n}\n\n__wasmfs_opfs_set_size_file.sig = \"vpijp\";\n\nfunction __wasmfs_opfs_write_access(accessID, bufPtr, len, pos) {\n  pos = bigintToI53Checked(pos);\n  let accessHandle = wasmfsOPFSAccessHandles.get(accessID);\n  let data = (growMemViews(), HEAPU8).subarray(bufPtr, bufPtr + len);\n  try {\n    return accessHandle.write(data, {\n      at: pos\n    });\n  } catch (e) {\n    if (e.name == \"TypeError\") {\n      return -28;\n    }\n    err(\"unexpected error:\", e, e.stack);\n    return -29;\n  }\n}\n\n__wasmfs_opfs_write_access.sig = \"iipij\";\n\nvar FS_stdin_getChar_buffer = [];\n\n/** @type {function(string, boolean=, number=)} */ var intArrayFromString = (stringy, dontAddNull, length) => {\n  var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n  var u8array = new Array(len);\n  var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n  if (dontAddNull) u8array.length = numBytesWritten;\n  return u8array;\n};\n\nvar FS_stdin_getChar = () => {\n  if (!FS_stdin_getChar_buffer.length) {\n    var result = null;\n    if (ENVIRONMENT_IS_NODE) {\n      // we will read data by chunks of BUFSIZE\n      var BUFSIZE = 256;\n      var buf = Buffer.alloc(BUFSIZE);\n      var bytesRead = 0;\n      // For some reason we must suppress a closure warning here, even though\n      // fd definitely exists on process.stdin, and is even the proper way to\n      // get the fd of stdin,\n      // https://github.com/nodejs/help/issues/2136#issuecomment-523649904\n      // This started to happen after moving this logic out of library_tty.js,\n      // so it is related to the surrounding code in some unclear manner.\n      /** @suppress {missingProperties} */ var fd = process.stdin.fd;\n      try {\n        bytesRead = fs.readSync(fd, buf, 0, BUFSIZE);\n      } catch (e) {\n        // Cross-platform differences: on Windows, reading EOF throws an\n        // exception, but on other OSes, reading EOF returns 0. Uniformize\n        // behavior by treating the EOF exception to return 0.\n        if (e.toString().includes(\"EOF\")) bytesRead = 0; else throw e;\n      }\n      if (bytesRead > 0) {\n        result = buf.slice(0, bytesRead).toString(\"utf-8\");\n      }\n    } else if (globalThis.window?.prompt) {\n      // Browser.\n      result = window.prompt(\"Input: \");\n      // returns null on cancel\n      if (result !== null) {\n        result += \"\\n\";\n      }\n    } else {}\n    if (!result) {\n      return null;\n    }\n    FS_stdin_getChar_buffer = intArrayFromString(result, true);\n  }\n  return FS_stdin_getChar_buffer.shift();\n};\n\nvar __wasmfs_stdin_get_char = () => {\n  // Return the read character, or -1 to indicate EOF.\n  var c = FS_stdin_getChar();\n  if (typeof c === \"number\") {\n    return c;\n  }\n  return -1;\n};\n\n__wasmfs_stdin_get_char.sig = \"i\";\n\nvar __wasmfs_thread_utils_heartbeat = queue => {\n  var intervalID = setInterval(() => {\n    if (ABORT) {\n      clearInterval(intervalID);\n    } else {\n      _emscripten_proxy_execute_queue(queue);\n    }\n  }, 50);\n};\n\n__wasmfs_thread_utils_heartbeat.sig = \"vp\";\n\nfunction _av_buffer_alloc(...args) {\n  if (!wasmImports[\"av_buffer_alloc\"] || wasmImports[\"av_buffer_alloc\"].stub) abort(\"external symbol 'av_buffer_alloc' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_buffer_alloc\"](...args);\n}\n\n_av_buffer_alloc.stub = true;\n\nfunction _av_buffer_allocz(...args) {\n  if (!wasmImports[\"av_buffer_allocz\"] || wasmImports[\"av_buffer_allocz\"].stub) abort(\"external symbol 'av_buffer_allocz' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_buffer_allocz\"](...args);\n}\n\n_av_buffer_allocz.stub = true;\n\nfunction _av_buffer_default_free(...args) {\n  if (!wasmImports[\"av_buffer_default_free\"] || wasmImports[\"av_buffer_default_free\"].stub) abort(\"external symbol 'av_buffer_default_free' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_buffer_default_free\"](...args);\n}\n\n_av_buffer_default_free.stub = true;\n\nfunction _av_buffer_unref(...args) {\n  if (!wasmImports[\"av_buffer_unref\"] || wasmImports[\"av_buffer_unref\"].stub) abort(\"external symbol 'av_buffer_unref' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_buffer_unref\"](...args);\n}\n\n_av_buffer_unref.stub = true;\n\nfunction _av_channel_layout_copy(...args) {\n  if (!wasmImports[\"av_channel_layout_copy\"] || wasmImports[\"av_channel_layout_copy\"].stub) abort(\"external symbol 'av_channel_layout_copy' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_channel_layout_copy\"](...args);\n}\n\n_av_channel_layout_copy.stub = true;\n\nfunction _av_codec_is_decoder(...args) {\n  if (!wasmImports[\"av_codec_is_decoder\"] || wasmImports[\"av_codec_is_decoder\"].stub) abort(\"external symbol 'av_codec_is_decoder' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_codec_is_decoder\"](...args);\n}\n\n_av_codec_is_decoder.stub = true;\n\nfunction _av_codec_is_encoder(...args) {\n  if (!wasmImports[\"av_codec_is_encoder\"] || wasmImports[\"av_codec_is_encoder\"].stub) abort(\"external symbol 'av_codec_is_encoder' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_codec_is_encoder\"](...args);\n}\n\n_av_codec_is_encoder.stub = true;\n\nfunction _av_default_item_name(...args) {\n  if (!wasmImports[\"av_default_item_name\"] || wasmImports[\"av_default_item_name\"].stub) abort(\"external symbol 'av_default_item_name' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_default_item_name\"](...args);\n}\n\n_av_default_item_name.stub = true;\n\nfunction _av_display_rotation_get(...args) {\n  if (!wasmImports[\"av_display_rotation_get\"] || wasmImports[\"av_display_rotation_get\"].stub) abort(\"external symbol 'av_display_rotation_get' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_display_rotation_get\"](...args);\n}\n\n_av_display_rotation_get.stub = true;\n\nfunction _av_display_rotation_set(...args) {\n  if (!wasmImports[\"av_display_rotation_set\"] || wasmImports[\"av_display_rotation_set\"].stub) abort(\"external symbol 'av_display_rotation_set' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_display_rotation_set\"](...args);\n}\n\n_av_display_rotation_set.stub = true;\n\nfunction _av_dump_format(...args) {\n  if (!wasmImports[\"av_dump_format\"] || wasmImports[\"av_dump_format\"].stub) abort(\"external symbol 'av_dump_format' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_dump_format\"](...args);\n}\n\n_av_dump_format.stub = true;\n\nfunction _av_frame_alloc(...args) {\n  if (!wasmImports[\"av_frame_alloc\"] || wasmImports[\"av_frame_alloc\"].stub) abort(\"external symbol 'av_frame_alloc' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_frame_alloc\"](...args);\n}\n\n_av_frame_alloc.stub = true;\n\nfunction _av_frame_copy(...args) {\n  if (!wasmImports[\"av_frame_copy\"] || wasmImports[\"av_frame_copy\"].stub) abort(\"external symbol 'av_frame_copy' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_frame_copy\"](...args);\n}\n\n_av_frame_copy.stub = true;\n\nfunction _av_frame_free(...args) {\n  if (!wasmImports[\"av_frame_free\"] || wasmImports[\"av_frame_free\"].stub) abort(\"external symbol 'av_frame_free' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_frame_free\"](...args);\n}\n\n_av_frame_free.stub = true;\n\nfunction _av_frame_get_buffer(...args) {\n  if (!wasmImports[\"av_frame_get_buffer\"] || wasmImports[\"av_frame_get_buffer\"].stub) abort(\"external symbol 'av_frame_get_buffer' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_frame_get_buffer\"](...args);\n}\n\n_av_frame_get_buffer.stub = true;\n\nfunction _av_frame_make_writable(...args) {\n  if (!wasmImports[\"av_frame_make_writable\"] || wasmImports[\"av_frame_make_writable\"].stub) abort(\"external symbol 'av_frame_make_writable' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_frame_make_writable\"](...args);\n}\n\n_av_frame_make_writable.stub = true;\n\nfunction _av_free(...args) {\n  if (!wasmImports[\"av_free\"] || wasmImports[\"av_free\"].stub) abort(\"external symbol 'av_free' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_free\"](...args);\n}\n\n_av_free.stub = true;\n\nfunction _av_get_pix_fmt(...args) {\n  if (!wasmImports[\"av_get_pix_fmt\"] || wasmImports[\"av_get_pix_fmt\"].stub) abort(\"external symbol 'av_get_pix_fmt' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_get_pix_fmt\"](...args);\n}\n\n_av_get_pix_fmt.stub = true;\n\nfunction _av_get_pix_fmt_name(...args) {\n  if (!wasmImports[\"av_get_pix_fmt_name\"] || wasmImports[\"av_get_pix_fmt_name\"].stub) abort(\"external symbol 'av_get_pix_fmt_name' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_get_pix_fmt_name\"](...args);\n}\n\n_av_get_pix_fmt_name.stub = true;\n\nfunction _av_get_sample_fmt(...args) {\n  if (!wasmImports[\"av_get_sample_fmt\"] || wasmImports[\"av_get_sample_fmt\"].stub) abort(\"external symbol 'av_get_sample_fmt' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_get_sample_fmt\"](...args);\n}\n\n_av_get_sample_fmt.stub = true;\n\nfunction _av_guess_format(...args) {\n  if (!wasmImports[\"av_guess_format\"] || wasmImports[\"av_guess_format\"].stub) abort(\"external symbol 'av_guess_format' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_guess_format\"](...args);\n}\n\n_av_guess_format.stub = true;\n\nfunction _av_hwframe_transfer_data(...args) {\n  if (!wasmImports[\"av_hwframe_transfer_data\"] || wasmImports[\"av_hwframe_transfer_data\"].stub) abort(\"external symbol 'av_hwframe_transfer_data' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_hwframe_transfer_data\"](...args);\n}\n\n_av_hwframe_transfer_data.stub = true;\n\nfunction _av_hwframe_transfer_get_formats(...args) {\n  if (!wasmImports[\"av_hwframe_transfer_get_formats\"] || wasmImports[\"av_hwframe_transfer_get_formats\"].stub) abort(\"external symbol 'av_hwframe_transfer_get_formats' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_hwframe_transfer_get_formats\"](...args);\n}\n\n_av_hwframe_transfer_get_formats.stub = true;\n\nfunction _av_image_copy_plane_uc_from(...args) {\n  if (!wasmImports[\"av_image_copy_plane_uc_from\"] || wasmImports[\"av_image_copy_plane_uc_from\"].stub) abort(\"external symbol 'av_image_copy_plane_uc_from' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_image_copy_plane_uc_from\"](...args);\n}\n\n_av_image_copy_plane_uc_from.stub = true;\n\nfunction _av_interleaved_write_frame(...args) {\n  if (!wasmImports[\"av_interleaved_write_frame\"] || wasmImports[\"av_interleaved_write_frame\"].stub) abort(\"external symbol 'av_interleaved_write_frame' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_interleaved_write_frame\"](...args);\n}\n\n_av_interleaved_write_frame.stub = true;\n\nfunction _av_log_default_callback(...args) {\n  if (!wasmImports[\"av_log_default_callback\"] || wasmImports[\"av_log_default_callback\"].stub) abort(\"external symbol 'av_log_default_callback' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_log_default_callback\"](...args);\n}\n\n_av_log_default_callback.stub = true;\n\nfunction _av_log_format_line2(...args) {\n  if (!wasmImports[\"av_log_format_line2\"] || wasmImports[\"av_log_format_line2\"].stub) abort(\"external symbol 'av_log_format_line2' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_log_format_line2\"](...args);\n}\n\n_av_log_format_line2.stub = true;\n\nfunction _av_log_set_callback(...args) {\n  if (!wasmImports[\"av_log_set_callback\"] || wasmImports[\"av_log_set_callback\"].stub) abort(\"external symbol 'av_log_set_callback' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_log_set_callback\"](...args);\n}\n\n_av_log_set_callback.stub = true;\n\nfunction _av_opt_query_ranges_default(...args) {\n  if (!wasmImports[\"av_opt_query_ranges_default\"] || wasmImports[\"av_opt_query_ranges_default\"].stub) abort(\"external symbol 'av_opt_query_ranges_default' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_opt_query_ranges_default\"](...args);\n}\n\n_av_opt_query_ranges_default.stub = true;\n\nfunction _av_opt_set(...args) {\n  if (!wasmImports[\"av_opt_set\"] || wasmImports[\"av_opt_set\"].stub) abort(\"external symbol 'av_opt_set' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_opt_set\"](...args);\n}\n\n_av_opt_set.stub = true;\n\nfunction _av_opt_set_chlayout(...args) {\n  if (!wasmImports[\"av_opt_set_chlayout\"] || wasmImports[\"av_opt_set_chlayout\"].stub) abort(\"external symbol 'av_opt_set_chlayout' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_opt_set_chlayout\"](...args);\n}\n\n_av_opt_set_chlayout.stub = true;\n\nfunction _av_opt_set_int(...args) {\n  if (!wasmImports[\"av_opt_set_int\"] || wasmImports[\"av_opt_set_int\"].stub) abort(\"external symbol 'av_opt_set_int' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_opt_set_int\"](...args);\n}\n\n_av_opt_set_int.stub = true;\n\nfunction _av_opt_set_sample_fmt(...args) {\n  if (!wasmImports[\"av_opt_set_sample_fmt\"] || wasmImports[\"av_opt_set_sample_fmt\"].stub) abort(\"external symbol 'av_opt_set_sample_fmt' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_opt_set_sample_fmt\"](...args);\n}\n\n_av_opt_set_sample_fmt.stub = true;\n\nfunction _av_packet_alloc(...args) {\n  if (!wasmImports[\"av_packet_alloc\"] || wasmImports[\"av_packet_alloc\"].stub) abort(\"external symbol 'av_packet_alloc' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_packet_alloc\"](...args);\n}\n\n_av_packet_alloc.stub = true;\n\nfunction _av_packet_free(...args) {\n  if (!wasmImports[\"av_packet_free\"] || wasmImports[\"av_packet_free\"].stub) abort(\"external symbol 'av_packet_free' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_packet_free\"](...args);\n}\n\n_av_packet_free.stub = true;\n\nfunction _av_packet_ref(...args) {\n  if (!wasmImports[\"av_packet_ref\"] || wasmImports[\"av_packet_ref\"].stub) abort(\"external symbol 'av_packet_ref' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_packet_ref\"](...args);\n}\n\n_av_packet_ref.stub = true;\n\nfunction _av_packet_rescale_ts(...args) {\n  if (!wasmImports[\"av_packet_rescale_ts\"] || wasmImports[\"av_packet_rescale_ts\"].stub) abort(\"external symbol 'av_packet_rescale_ts' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_packet_rescale_ts\"](...args);\n}\n\n_av_packet_rescale_ts.stub = true;\n\nfunction _av_packet_unref(...args) {\n  if (!wasmImports[\"av_packet_unref\"] || wasmImports[\"av_packet_unref\"].stub) abort(\"external symbol 'av_packet_unref' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_packet_unref\"](...args);\n}\n\n_av_packet_unref.stub = true;\n\nfunction _av_read_frame(...args) {\n  if (!wasmImports[\"av_read_frame\"] || wasmImports[\"av_read_frame\"].stub) abort(\"external symbol 'av_read_frame' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_read_frame\"](...args);\n}\n\n_av_read_frame.stub = true;\n\nfunction _av_rescale_q(...args) {\n  if (!wasmImports[\"av_rescale_q\"] || wasmImports[\"av_rescale_q\"].stub) abort(\"external symbol 'av_rescale_q' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_rescale_q\"](...args);\n}\n\n_av_rescale_q.stub = true;\n\nfunction _av_seek_frame(...args) {\n  if (!wasmImports[\"av_seek_frame\"] || wasmImports[\"av_seek_frame\"].stub) abort(\"external symbol 'av_seek_frame' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_seek_frame\"](...args);\n}\n\n_av_seek_frame.stub = true;\n\nfunction _av_sha_size(...args) {\n  if (!wasmImports[\"av_sha_size\"] || wasmImports[\"av_sha_size\"].stub) abort(\"external symbol 'av_sha_size' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_sha_size\"](...args);\n}\n\n_av_sha_size.stub = true;\n\nfunction _av_stream_get_side_data(...args) {\n  if (!wasmImports[\"av_stream_get_side_data\"] || wasmImports[\"av_stream_get_side_data\"].stub) abort(\"external symbol 'av_stream_get_side_data' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_stream_get_side_data\"](...args);\n}\n\n_av_stream_get_side_data.stub = true;\n\nfunction _av_stream_new_side_data(...args) {\n  if (!wasmImports[\"av_stream_new_side_data\"] || wasmImports[\"av_stream_new_side_data\"].stub) abort(\"external symbol 'av_stream_new_side_data' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_stream_new_side_data\"](...args);\n}\n\n_av_stream_new_side_data.stub = true;\n\nfunction _av_strerror(...args) {\n  if (!wasmImports[\"av_strerror\"] || wasmImports[\"av_strerror\"].stub) abort(\"external symbol 'av_strerror' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_strerror\"](...args);\n}\n\n_av_strerror.stub = true;\n\nfunction _av_write_trailer(...args) {\n  if (!wasmImports[\"av_write_trailer\"] || wasmImports[\"av_write_trailer\"].stub) abort(\"external symbol 'av_write_trailer' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"av_write_trailer\"](...args);\n}\n\n_av_write_trailer.stub = true;\n\nfunction _avcodec_alloc_context3(...args) {\n  if (!wasmImports[\"avcodec_alloc_context3\"] || wasmImports[\"avcodec_alloc_context3\"].stub) abort(\"external symbol 'avcodec_alloc_context3' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_alloc_context3\"](...args);\n}\n\n_avcodec_alloc_context3.stub = true;\n\nfunction _avcodec_default_execute(...args) {\n  if (!wasmImports[\"avcodec_default_execute\"] || wasmImports[\"avcodec_default_execute\"].stub) abort(\"external symbol 'avcodec_default_execute' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_default_execute\"](...args);\n}\n\n_avcodec_default_execute.stub = true;\n\nfunction _avcodec_default_execute2(...args) {\n  if (!wasmImports[\"avcodec_default_execute2\"] || wasmImports[\"avcodec_default_execute2\"].stub) abort(\"external symbol 'avcodec_default_execute2' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_default_execute2\"](...args);\n}\n\n_avcodec_default_execute2.stub = true;\n\nfunction _avcodec_default_get_buffer2(...args) {\n  if (!wasmImports[\"avcodec_default_get_buffer2\"] || wasmImports[\"avcodec_default_get_buffer2\"].stub) abort(\"external symbol 'avcodec_default_get_buffer2' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_default_get_buffer2\"](...args);\n}\n\n_avcodec_default_get_buffer2.stub = true;\n\nfunction _avcodec_default_get_encode_buffer(...args) {\n  if (!wasmImports[\"avcodec_default_get_encode_buffer\"] || wasmImports[\"avcodec_default_get_encode_buffer\"].stub) abort(\"external symbol 'avcodec_default_get_encode_buffer' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_default_get_encode_buffer\"](...args);\n}\n\n_avcodec_default_get_encode_buffer.stub = true;\n\nfunction _avcodec_default_get_format(...args) {\n  if (!wasmImports[\"avcodec_default_get_format\"] || wasmImports[\"avcodec_default_get_format\"].stub) abort(\"external symbol 'avcodec_default_get_format' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_default_get_format\"](...args);\n}\n\n_avcodec_default_get_format.stub = true;\n\nfunction _avcodec_find_decoder(...args) {\n  if (!wasmImports[\"avcodec_find_decoder\"] || wasmImports[\"avcodec_find_decoder\"].stub) abort(\"external symbol 'avcodec_find_decoder' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_find_decoder\"](...args);\n}\n\n_avcodec_find_decoder.stub = true;\n\nfunction _avcodec_find_encoder(...args) {\n  if (!wasmImports[\"avcodec_find_encoder\"] || wasmImports[\"avcodec_find_encoder\"].stub) abort(\"external symbol 'avcodec_find_encoder' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_find_encoder\"](...args);\n}\n\n_avcodec_find_encoder.stub = true;\n\nfunction _avcodec_free_context(...args) {\n  if (!wasmImports[\"avcodec_free_context\"] || wasmImports[\"avcodec_free_context\"].stub) abort(\"external symbol 'avcodec_free_context' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_free_context\"](...args);\n}\n\n_avcodec_free_context.stub = true;\n\nfunction _avcodec_open2(...args) {\n  if (!wasmImports[\"avcodec_open2\"] || wasmImports[\"avcodec_open2\"].stub) abort(\"external symbol 'avcodec_open2' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_open2\"](...args);\n}\n\n_avcodec_open2.stub = true;\n\nfunction _avcodec_parameters_copy(...args) {\n  if (!wasmImports[\"avcodec_parameters_copy\"] || wasmImports[\"avcodec_parameters_copy\"].stub) abort(\"external symbol 'avcodec_parameters_copy' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_parameters_copy\"](...args);\n}\n\n_avcodec_parameters_copy.stub = true;\n\nfunction _avcodec_parameters_from_context(...args) {\n  if (!wasmImports[\"avcodec_parameters_from_context\"] || wasmImports[\"avcodec_parameters_from_context\"].stub) abort(\"external symbol 'avcodec_parameters_from_context' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_parameters_from_context\"](...args);\n}\n\n_avcodec_parameters_from_context.stub = true;\n\nfunction _avcodec_parameters_to_context(...args) {\n  if (!wasmImports[\"avcodec_parameters_to_context\"] || wasmImports[\"avcodec_parameters_to_context\"].stub) abort(\"external symbol 'avcodec_parameters_to_context' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_parameters_to_context\"](...args);\n}\n\n_avcodec_parameters_to_context.stub = true;\n\nfunction _avcodec_receive_frame(...args) {\n  if (!wasmImports[\"avcodec_receive_frame\"] || wasmImports[\"avcodec_receive_frame\"].stub) abort(\"external symbol 'avcodec_receive_frame' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_receive_frame\"](...args);\n}\n\n_avcodec_receive_frame.stub = true;\n\nfunction _avcodec_receive_packet(...args) {\n  if (!wasmImports[\"avcodec_receive_packet\"] || wasmImports[\"avcodec_receive_packet\"].stub) abort(\"external symbol 'avcodec_receive_packet' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_receive_packet\"](...args);\n}\n\n_avcodec_receive_packet.stub = true;\n\nfunction _avcodec_send_frame(...args) {\n  if (!wasmImports[\"avcodec_send_frame\"] || wasmImports[\"avcodec_send_frame\"].stub) abort(\"external symbol 'avcodec_send_frame' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_send_frame\"](...args);\n}\n\n_avcodec_send_frame.stub = true;\n\nfunction _avcodec_send_packet(...args) {\n  if (!wasmImports[\"avcodec_send_packet\"] || wasmImports[\"avcodec_send_packet\"].stub) abort(\"external symbol 'avcodec_send_packet' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avcodec_send_packet\"](...args);\n}\n\n_avcodec_send_packet.stub = true;\n\nfunction _avformat_alloc_context(...args) {\n  if (!wasmImports[\"avformat_alloc_context\"] || wasmImports[\"avformat_alloc_context\"].stub) abort(\"external symbol 'avformat_alloc_context' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avformat_alloc_context\"](...args);\n}\n\n_avformat_alloc_context.stub = true;\n\nfunction _avformat_alloc_output_context2(...args) {\n  if (!wasmImports[\"avformat_alloc_output_context2\"] || wasmImports[\"avformat_alloc_output_context2\"].stub) abort(\"external symbol 'avformat_alloc_output_context2' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avformat_alloc_output_context2\"](...args);\n}\n\n_avformat_alloc_output_context2.stub = true;\n\nfunction _avformat_close_input(...args) {\n  if (!wasmImports[\"avformat_close_input\"] || wasmImports[\"avformat_close_input\"].stub) abort(\"external symbol 'avformat_close_input' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avformat_close_input\"](...args);\n}\n\n_avformat_close_input.stub = true;\n\nfunction _avformat_find_stream_info(...args) {\n  if (!wasmImports[\"avformat_find_stream_info\"] || wasmImports[\"avformat_find_stream_info\"].stub) abort(\"external symbol 'avformat_find_stream_info' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avformat_find_stream_info\"](...args);\n}\n\n_avformat_find_stream_info.stub = true;\n\nfunction _avformat_free_context(...args) {\n  if (!wasmImports[\"avformat_free_context\"] || wasmImports[\"avformat_free_context\"].stub) abort(\"external symbol 'avformat_free_context' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avformat_free_context\"](...args);\n}\n\n_avformat_free_context.stub = true;\n\nfunction _avformat_new_stream(...args) {\n  if (!wasmImports[\"avformat_new_stream\"] || wasmImports[\"avformat_new_stream\"].stub) abort(\"external symbol 'avformat_new_stream' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avformat_new_stream\"](...args);\n}\n\n_avformat_new_stream.stub = true;\n\nfunction _avformat_open_input(...args) {\n  if (!wasmImports[\"avformat_open_input\"] || wasmImports[\"avformat_open_input\"].stub) abort(\"external symbol 'avformat_open_input' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avformat_open_input\"](...args);\n}\n\n_avformat_open_input.stub = true;\n\nfunction _avformat_seek_file(...args) {\n  if (!wasmImports[\"avformat_seek_file\"] || wasmImports[\"avformat_seek_file\"].stub) abort(\"external symbol 'avformat_seek_file' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avformat_seek_file\"](...args);\n}\n\n_avformat_seek_file.stub = true;\n\nfunction _avformat_write_header(...args) {\n  if (!wasmImports[\"avformat_write_header\"] || wasmImports[\"avformat_write_header\"].stub) abort(\"external symbol 'avformat_write_header' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avformat_write_header\"](...args);\n}\n\n_avformat_write_header.stub = true;\n\nfunction _avio_close(...args) {\n  if (!wasmImports[\"avio_close\"] || wasmImports[\"avio_close\"].stub) abort(\"external symbol 'avio_close' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avio_close\"](...args);\n}\n\n_avio_close.stub = true;\n\nfunction _avio_open(...args) {\n  if (!wasmImports[\"avio_open\"] || wasmImports[\"avio_open\"].stub) abort(\"external symbol 'avio_open' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avio_open\"](...args);\n}\n\n_avio_open.stub = true;\n\nfunction _avio_rb16(...args) {\n  if (!wasmImports[\"avio_rb16\"] || wasmImports[\"avio_rb16\"].stub) abort(\"external symbol 'avio_rb16' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avio_rb16\"](...args);\n}\n\n_avio_rb16.stub = true;\n\nfunction _avio_rl16(...args) {\n  if (!wasmImports[\"avio_rl16\"] || wasmImports[\"avio_rl16\"].stub) abort(\"external symbol 'avio_rl16' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avio_rl16\"](...args);\n}\n\n_avio_rl16.stub = true;\n\nfunction _avpriv_scalarproduct_float_c(...args) {\n  if (!wasmImports[\"avpriv_scalarproduct_float_c\"] || wasmImports[\"avpriv_scalarproduct_float_c\"].stub) abort(\"external symbol 'avpriv_scalarproduct_float_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"avpriv_scalarproduct_float_c\"](...args);\n}\n\n_avpriv_scalarproduct_float_c.stub = true;\n\nvar _emscripten_get_now = () => performance.timeOrigin + performance.now();\n\n_emscripten_get_now.sig = \"d\";\n\nvar _emscripten_date_now = () => Date.now();\n\n_emscripten_date_now.sig = \"d\";\n\nvar nowIsMonotonic = 1;\n\nvar checkWasiClock = clock_id => clock_id >= 0 && clock_id <= 3;\n\nfunction _clock_time_get(clk_id, ignored_precision, ptime) {\n  ignored_precision = bigintToI53Checked(ignored_precision);\n  if (!checkWasiClock(clk_id)) {\n    return 28;\n  }\n  var now;\n  // all wasi clocks but realtime are monotonic\n  if (clk_id === 0) {\n    now = _emscripten_date_now();\n  } else if (nowIsMonotonic) {\n    now = _emscripten_get_now();\n  } else {\n    return 52;\n  }\n  // \"now\" is in ms, and wasi times are in ns.\n  var nsec = Math.round(now * 1e3 * 1e3);\n  (growMemViews(), HEAP64)[((ptime) >> 3)] = BigInt(nsec);\n  return 0;\n}\n\n_clock_time_get.sig = \"iijp\";\n\nfunction _deinterleaveBytes(...args) {\n  if (!wasmImports[\"deinterleaveBytes\"] || wasmImports[\"deinterleaveBytes\"].stub) abort(\"external symbol 'deinterleaveBytes' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"deinterleaveBytes\"](...args);\n}\n\n_deinterleaveBytes.stub = true;\n\nvar readEmAsmArgsArray = [];\n\nvar readEmAsmArgs = (sigPtr, buf) => {\n  // Nobody should have mutated _readEmAsmArgsArray underneath us to be something else than an array.\n  assert(Array.isArray(readEmAsmArgsArray));\n  // The input buffer is allocated on the stack, so it must be stack-aligned.\n  assert(buf % 16 == 0);\n  readEmAsmArgsArray.length = 0;\n  var ch;\n  // Most arguments are i32s, so shift the buffer pointer so it is a plain\n  // index into HEAP32.\n  while (ch = (growMemViews(), HEAPU8)[sigPtr++]) {\n    var chr = String.fromCharCode(ch);\n    var validChars = [ \"d\", \"f\", \"i\", \"p\" ];\n    // In WASM_BIGINT mode we support passing i64 values as bigint.\n    validChars.push(\"j\");\n    assert(validChars.includes(chr), `Invalid character ${ch}(\"${chr}\") in readEmAsmArgs! Use only [${validChars}], and do not specify \"v\" for void return argument.`);\n    // Floats are always passed as doubles, so all types except for 'i'\n    // are 8 bytes and require alignment.\n    var wide = (ch != 105);\n    wide &= (ch != 112);\n    buf += wide && (buf % 8) ? 4 : 0;\n    readEmAsmArgsArray.push(// Special case for pointers under wasm64 or CAN_ADDRESS_2GB mode.\n    ch == 112 ? (growMemViews(), HEAPU32)[((buf) >> 2)] : ch == 106 ? (growMemViews(), \n    HEAP64)[((buf) >> 3)] : ch == 105 ? (growMemViews(), HEAP32)[((buf) >> 2)] : (growMemViews(), \n    HEAPF64)[((buf) >> 3)]);\n    buf += wide ? 8 : 4;\n  }\n  return readEmAsmArgsArray;\n};\n\nvar runEmAsmFunction = (code, sigPtr, argbuf) => {\n  var args = readEmAsmArgs(sigPtr, argbuf);\n  assert(ASM_CONSTS.hasOwnProperty(code), `No EM_ASM constant found at address ${code}.  The loaded WebAssembly file is likely out of sync with the generated JavaScript.`);\n  return ASM_CONSTS[code](...args);\n};\n\nvar _emscripten_asm_const_int = (code, sigPtr, argbuf) => runEmAsmFunction(code, sigPtr, argbuf);\n\n_emscripten_asm_const_int.sig = \"ippp\";\n\nvar runMainThreadEmAsm = (emAsmAddr, sigPtr, argbuf, sync) => {\n  var args = readEmAsmArgs(sigPtr, argbuf);\n  if (ENVIRONMENT_IS_PTHREAD) {\n    // EM_ASM functions are variadic, receiving the actual arguments as a buffer\n    // in memory. the last parameter (argBuf) points to that data. We need to\n    // always un-variadify that, *before proxying*, as in the async case this\n    // is a stack allocation that LLVM made, which may go away before the main\n    // thread gets the message. For that reason we handle proxying *after* the\n    // call to readEmAsmArgs, and therefore we do that manually here instead\n    // of using __proxy. (And for simplicity, do the same in the sync\n    // case as well, even though it's not strictly necessary, to keep the two\n    // code paths as similar as possible on both sides.)\n    return proxyToMainThread(0, emAsmAddr, sync, ...args);\n  }\n  assert(ASM_CONSTS.hasOwnProperty(emAsmAddr), `No EM_ASM constant found at address ${emAsmAddr}.  The loaded WebAssembly file is likely out of sync with the generated JavaScript.`);\n  return ASM_CONSTS[emAsmAddr](...args);\n};\n\nvar _emscripten_asm_const_int_sync_on_main_thread = (emAsmAddr, sigPtr, argbuf) => runMainThreadEmAsm(emAsmAddr, sigPtr, argbuf, 1);\n\n_emscripten_asm_const_int_sync_on_main_thread.sig = \"ippp\";\n\nvar _emscripten_check_blocking_allowed = () => {\n  if (ENVIRONMENT_IS_NODE) return;\n  if (ENVIRONMENT_IS_WORKER) return;\n  // Blocking in a worker/pthread is fine.\n  warnOnce(\"Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread\");\n};\n\n_emscripten_check_blocking_allowed.sig = \"v\";\n\nvar _emscripten_err = str => err(UTF8ToString(str));\n\n_emscripten_err.sig = \"vp\";\n\nvar _emscripten_exit_with_live_runtime = () => {\n  runtimeKeepalivePush();\n  throw \"unwind\";\n};\n\n_emscripten_exit_with_live_runtime.sig = \"v\";\n\nfunction _emscripten_fetch_free(id) {\n  if (Fetch.xhrs.has(id)) {\n    var xhr = Fetch.xhrs.get(id);\n    Fetch.xhrs.free(id);\n    // check if fetch is still in progress and should be aborted\n    if (xhr.readyState > 0 && xhr.readyState < 4) {\n      xhr.abort();\n    }\n  }\n}\n\n_emscripten_fetch_free.sig = \"vi\";\n\nvar jsStackTrace = () => (new Error).stack.toString();\n\n/** @param {number=} flags */ var getCallstack = flags => {\n  var callstack = jsStackTrace();\n  if (flags & 8) {\n    warnOnce(\"emscripten_log with EM_LOG_C_STACK no longer has any effect\");\n  }\n  // Process all lines:\n  var lines = callstack.split(\"\\n\");\n  callstack = \"\";\n  // Extract components of form:\n  // '       Object._main@http://server.com:4324:12'\n  var firefoxRe = new RegExp(\"\\\\s*(.*?)@(.*?):([0-9]+):([0-9]+)\");\n  // Extract components of form:\n  // '    at Object._main (http://server.com/file.html:4324:12)'\n  var chromeRe = new RegExp(\"\\\\s*at (.*?) \\\\((.*):(.*):(.*)\\\\)\");\n  for (var line of lines) {\n    var symbolName = \"\";\n    var file = \"\";\n    var lineno = 0;\n    var column = 0;\n    var parts = chromeRe.exec(line);\n    if (parts?.length == 5) {\n      symbolName = parts[1];\n      file = parts[2];\n      lineno = parts[3];\n      column = parts[4];\n    } else {\n      parts = firefoxRe.exec(line);\n      if (parts?.length >= 4) {\n        symbolName = parts[1];\n        file = parts[2];\n        lineno = parts[3];\n        // Old Firefox doesn't carry column information, but in new FF30, it\n        // is present. See https://bugzil.la/762556\n        column = parts[4] | 0;\n      } else {\n        // Was not able to extract this line for demangling/sourcemapping\n        // purposes. Output it as-is.\n        callstack += line + \"\\n\";\n        continue;\n      }\n    }\n    // Find the symbols in the callstack that corresponds to the functions that\n    // report callstack information, and remove everything up to these from the\n    // output.\n    if (symbolName == \"_emscripten_log\" || symbolName == \"_emscripten_get_callstack\") {\n      callstack = \"\";\n      continue;\n    }\n    if ((flags & 24)) {\n      if (flags & 64) {\n        file = file.substring(file.replace(/\\\\/g, \"/\").lastIndexOf(\"/\") + 1);\n      }\n      callstack += `    at ${symbolName} (${file}:${lineno}:${column})\\n`;\n    }\n  }\n  // Trim extra whitespace at the end of the output.\n  callstack = callstack.replace(/\\s+$/, \"\");\n  return callstack;\n};\n\nvar _emscripten_get_callstack = (flags, str, maxbytes) => {\n  var callstack = getCallstack(flags);\n  // User can query the required amount of bytes to hold the callstack.\n  if (!str || maxbytes <= 0) {\n    return lengthBytesUTF8(callstack) + 1;\n  }\n  // Output callstack string as C string to HEAP.\n  var bytesWrittenExcludingNull = stringToUTF8(callstack, str, maxbytes);\n  // Return number of bytes written, including null.\n  return bytesWrittenExcludingNull + 1;\n};\n\n_emscripten_get_callstack.sig = \"iipi\";\n\nvar getHeapMax = () => // Stay one Wasm page short of 4GB: while e.g. Chrome is able to allocate\n// full 4GB Wasm memories, the size will wrap back to 0 bytes in Wasm side\n// for any code that deals with heap sizes, which would require special\n// casing all heap size related code to treat 0 specially.\n2147483648;\n\nvar _emscripten_get_heap_max = () => getHeapMax();\n\n_emscripten_get_heap_max.sig = \"p\";\n\nvar _emscripten_has_asyncify = () => 0;\n\n_emscripten_has_asyncify.sig = \"i\";\n\nvar _emscripten_num_logical_cores = () => ENVIRONMENT_IS_NODE ? require(\"node:os\").cpus().length : navigator[\"hardwareConcurrency\"];\n\n_emscripten_num_logical_cores.sig = \"i\";\n\nvar _emscripten_out = str => out(UTF8ToString(str));\n\n_emscripten_out.sig = \"vp\";\n\nvar promiseMap = new HandleAllocator;\n\nvar _emscripten_promise_destroy = id => {\n  promiseMap.free(id);\n};\n\n_emscripten_promise_destroy.sig = \"vp\";\n\nvar getPromise = id => promiseMap.get(id).promise;\n\nvar _emscripten_promise_resolve = (id, result, value) => {\n  var info = promiseMap.get(id);\n  switch (result) {\n   case 0:\n    info.resolve(value);\n    return;\n\n   case 1:\n    info.resolve(getPromise(value));\n    return;\n\n   case 2:\n    info.resolve(getPromise(value));\n    _emscripten_promise_destroy(value);\n    return;\n\n   case 3:\n    info.reject(value);\n    return;\n  }\n  abort(`unexpected promise callback result ${result}`);\n};\n\n_emscripten_promise_resolve.sig = \"vpip\";\n\nvar growMemory = size => {\n  var oldHeapSize = wasmMemory.buffer.byteLength;\n  var pages = ((size - oldHeapSize + 65535) / 65536) | 0;\n  try {\n    // round size grow request up to wasm page size (fixed 64KB per spec)\n    wasmMemory.grow(pages);\n    // .grow() takes a delta compared to the previous size\n    updateMemoryViews();\n    return 1;\n  } catch (e) {\n    err(`growMemory: Attempted to grow heap from ${oldHeapSize} bytes to ${size} bytes, but got error: ${e}`);\n  }\n};\n\nvar _emscripten_resize_heap = requestedSize => {\n  var oldSize = (growMemViews(), HEAPU8).length;\n  // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned.\n  requestedSize >>>= 0;\n  // With multithreaded builds, races can happen (another thread might increase the size\n  // in between), so return a failure, and let the caller retry.\n  if (requestedSize <= oldSize) {\n    return false;\n  }\n  // Memory resize rules:\n  // 1.  Always increase heap size to at least the requested size, rounded up\n  //     to next page multiple.\n  // 2a. If MEMORY_GROWTH_LINEAR_STEP == -1, excessively resize the heap\n  //     geometrically: increase the heap size according to\n  //     MEMORY_GROWTH_GEOMETRIC_STEP factor (default +20%), At most\n  //     overreserve by MEMORY_GROWTH_GEOMETRIC_CAP bytes (default 96MB).\n  // 2b. If MEMORY_GROWTH_LINEAR_STEP != -1, excessively resize the heap\n  //     linearly: increase the heap size by at least\n  //     MEMORY_GROWTH_LINEAR_STEP bytes.\n  // 3.  Max size for the heap is capped at 2048MB-WASM_PAGE_SIZE, or by\n  //     MAXIMUM_MEMORY, or by ASAN limit, depending on which is smallest\n  // 4.  If we were unable to allocate as much memory, it may be due to\n  //     over-eager decision to excessively reserve due to (3) above.\n  //     Hence if an allocation fails, cut down on the amount of excess\n  //     growth, in an attempt to succeed to perform a smaller allocation.\n  // A limit is set for how much we can grow. We should not exceed that\n  // (the wasm binary specifies it, so if we tried, we'd fail anyhow).\n  var maxHeapSize = getHeapMax();\n  if (requestedSize > maxHeapSize) {\n    err(`Cannot enlarge memory, requested ${requestedSize} bytes, but the limit is ${maxHeapSize} bytes!`);\n    return false;\n  }\n  // Loop through potential heap size increases. If we attempt a too eager\n  // reservation that fails, cut down on the attempted size and reserve a\n  // smaller bump instead. (max 3 times, chosen somewhat arbitrarily)\n  for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n    var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n    // ensure geometric growth\n    // but limit overreserving (default to capping at +96MB overgrowth at most)\n    overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n    var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));\n    var replacement = growMemory(newSize);\n    if (replacement) {\n      return true;\n    }\n  }\n  err(`Failed to grow the heap from ${oldSize} bytes to ${newSize} bytes, not enough memory!`);\n  return false;\n};\n\n_emscripten_resize_heap.sig = \"ip\";\n\nvar onExits = [];\n\nvar JSEvents = {\n  removeAllEventListeners() {\n    while (JSEvents.eventHandlers.length) {\n      JSEvents._removeHandler(JSEvents.eventHandlers.length - 1);\n    }\n    JSEvents.deferredCalls = [];\n  },\n  inEventHandler: 0,\n  deferredCalls: [],\n  deferCall(targetFunction, precedence, argsList) {\n    function arraysHaveEqualContent(arrA, arrB) {\n      if (arrA.length != arrB.length) return false;\n      for (var i in arrA) {\n        if (arrA[i] != arrB[i]) return false;\n      }\n      return true;\n    }\n    // Test if the given call was already queued, and if so, don't add it again.\n    for (var call of JSEvents.deferredCalls) {\n      if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) {\n        return;\n      }\n    }\n    JSEvents.deferredCalls.push({\n      targetFunction,\n      precedence,\n      argsList\n    });\n    JSEvents.deferredCalls.sort((x, y) => x.precedence - y.precedence);\n  },\n  removeDeferredCalls(targetFunction) {\n    JSEvents.deferredCalls = JSEvents.deferredCalls.filter(call => call.targetFunction != targetFunction);\n  },\n  canPerformEventHandlerRequests() {\n    // Browsers that support navigator.userActivation.isActive: https://developer.mozilla.org/en-US/docs/Web/API/UserActivation/isActive\n    if (navigator.userActivation) {\n      // Verify against transient activation status from UserActivation API\n      // whether it is possible to perform a request here without needing to defer. See\n      // https://developer.mozilla.org/en-US/docs/Web/Security/User_activation#transient_activation\n      // and https://caniuse.com/mdn-api_useractivation\n      return navigator.userActivation.isActive;\n    }\n    return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls;\n  },\n  runDeferredCalls() {\n    if (!JSEvents.canPerformEventHandlerRequests()) {\n      return;\n    }\n    var deferredCalls = JSEvents.deferredCalls;\n    JSEvents.deferredCalls = [];\n    for (var call of deferredCalls) {\n      call.targetFunction(...call.argsList);\n    }\n  },\n  eventHandlers: [],\n  removeAllHandlersOnTarget: (target, eventTypeString) => {\n    for (var i = 0; i < JSEvents.eventHandlers.length; ++i) {\n      if (JSEvents.eventHandlers[i].target == target && (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString)) {\n        JSEvents._removeHandler(i--);\n      }\n    }\n  },\n  _removeHandler(i) {\n    var h = JSEvents.eventHandlers[i];\n    h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture);\n    JSEvents.eventHandlers.splice(i, 1);\n  },\n  registerOrRemoveHandler(eventHandler) {\n    if (!eventHandler.target) {\n      err(\"registerOrRemoveHandler: the target element for event handler registration does not exist, when processing the following event handler registration:\");\n      console.dir(eventHandler);\n      return -4;\n    }\n    if (eventHandler.callbackfunc) {\n      eventHandler.eventListenerFunc = function(event) {\n        // Increment nesting count for the event handler.\n        ++JSEvents.inEventHandler;\n        JSEvents.currentEventHandler = eventHandler;\n        // Process any old deferred calls the user has placed.\n        JSEvents.runDeferredCalls();\n        // Process the actual event, calls back to user C code handler.\n        eventHandler.handlerFunc(event);\n        // Process any new deferred calls that were placed right now from this event handler.\n        JSEvents.runDeferredCalls();\n        // Out of event handler - restore nesting count.\n        --JSEvents.inEventHandler;\n      };\n      eventHandler.target.addEventListener(eventHandler.eventTypeString, eventHandler.eventListenerFunc, eventHandler.useCapture);\n      JSEvents.eventHandlers.push(eventHandler);\n    } else {\n      for (var i = 0; i < JSEvents.eventHandlers.length; ++i) {\n        if (JSEvents.eventHandlers[i].target == eventHandler.target && JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString) {\n          JSEvents._removeHandler(i--);\n        }\n      }\n    }\n    return 0;\n  },\n  removeSingleHandler(eventHandler) {\n    let success = false;\n    for (let i = 0; i < JSEvents.eventHandlers.length; ++i) {\n      const handler = JSEvents.eventHandlers[i];\n      if (handler.target === eventHandler.target && handler.eventTypeId === eventHandler.eventTypeId && handler.callbackfunc === eventHandler.callbackfunc && handler.userData === eventHandler.userData) {\n        // in some very rare cases (ex: Safari / fullscreen events), there is more than 1 handler (eventTypeString is different)\n        JSEvents._removeHandler(i--);\n        success = true;\n      }\n    }\n    return success ? 0 : -5;\n  },\n  getTargetThreadForEventCallback(targetThread) {\n    switch (targetThread) {\n     case 1:\n      // The event callback for the current event should be called on the\n      // main browser thread. (0 == don't proxy)\n      return 0;\n\n     case 2:\n      // The event callback for the current event should be backproxied to\n      // the thread that is registering the event.\n      // This can be 0 in the case that the caller uses\n      // EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD but on the main thread\n      // itself.\n      return PThread.currentProxiedOperationCallerThread;\n\n     default:\n      // The event callback for the current event should be proxied to the\n      // given specific thread.\n      return targetThread;\n    }\n  },\n  getNodeNameForTarget(target) {\n    if (target == window) return \"#window\";\n    if (target == screen) return \"#screen\";\n    return target?.nodeName ?? \"\";\n  },\n  fullscreenEnabled() {\n    return document.fullscreenEnabled || document.webkitFullscreenEnabled;\n  }\n};\n\nvar maybeCStringToJsString = cString => cString > 2 ? UTF8ToString(cString) : cString;\n\n/** @type {Object} */ var specialHTMLTargets = [ 0, globalThis.document ?? 0, globalThis.window ?? 0 ];\n\nvar findEventTarget = target => {\n  target = maybeCStringToJsString(target);\n  var domElement = specialHTMLTargets[target] || globalThis.document?.querySelector(target);\n  return domElement;\n};\n\nvar registerBeforeUnloadEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) => {\n  var beforeUnloadEventHandlerFunc = e => {\n    // Note: This is always called on the main browser thread, since it needs synchronously return a value!\n    var confirmationMessage = getWasmTableEntry(callbackfunc)(eventTypeId, 0, userData);\n    if (confirmationMessage) {\n      confirmationMessage = UTF8ToString(confirmationMessage);\n    }\n    if (confirmationMessage) {\n      e.preventDefault();\n      e.returnValue = confirmationMessage;\n      return confirmationMessage;\n    }\n  };\n  var eventHandler = {\n    target: findEventTarget(target),\n    eventTypeString,\n    eventTypeId,\n    userData,\n    callbackfunc,\n    handlerFunc: beforeUnloadEventHandlerFunc,\n    useCapture\n  };\n  return JSEvents.registerOrRemoveHandler(eventHandler);\n};\n\nfunction _emscripten_set_beforeunload_callback_on_thread(userData, callbackfunc, targetThread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(3, 0, 1, userData, callbackfunc, targetThread);\n  if (typeof onbeforeunload == \"undefined\") return -1;\n  // beforeunload callback can only be registered on the main browser thread, because the page will go away immediately after returning from the handler,\n  // and there is no time to start proxying it anywhere.\n  if (targetThread !== 1) return -5;\n  return registerBeforeUnloadEventCallback(2, userData, true, callbackfunc, 28, \"beforeunload\");\n}\n\n_emscripten_set_beforeunload_callback_on_thread.sig = \"ippp\";\n\nvar registerKeyEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n  targetThread = JSEvents.getTargetThreadForEventCallback(targetThread);\n  var eventSize = 160;\n  JSEvents.keyEvent ||= _malloc(eventSize);\n  var keyEventHandlerFunc = e => {\n    assert(e);\n    var keyEventData = JSEvents.keyEvent;\n    (growMemViews(), HEAPF64)[((keyEventData) >> 3)] = e.timeStamp;\n    var idx = ((keyEventData) >> 2);\n    (growMemViews(), HEAP32)[idx + 2] = e.location;\n    (growMemViews(), HEAP8)[keyEventData + 12] = e.ctrlKey;\n    (growMemViews(), HEAP8)[keyEventData + 13] = e.shiftKey;\n    (growMemViews(), HEAP8)[keyEventData + 14] = e.altKey;\n    (growMemViews(), HEAP8)[keyEventData + 15] = e.metaKey;\n    (growMemViews(), HEAP8)[keyEventData + 16] = e.repeat;\n    (growMemViews(), HEAP32)[idx + 5] = e.charCode;\n    (growMemViews(), HEAP32)[idx + 6] = e.keyCode;\n    (growMemViews(), HEAP32)[idx + 7] = e.which;\n    stringToUTF8(e.key ?? \"\", keyEventData + 32, 32);\n    stringToUTF8(e.code ?? \"\", keyEventData + 64, 32);\n    stringToUTF8(e.char ?? \"\", keyEventData + 96, 32);\n    stringToUTF8(e.locale ?? \"\", keyEventData + 128, 32);\n    if (targetThread) __emscripten_run_callback_on_thread(targetThread, callbackfunc, eventTypeId, keyEventData, eventSize, userData); else if (getWasmTableEntry(callbackfunc)(eventTypeId, keyEventData, userData)) e.preventDefault();\n  };\n  var eventHandler = {\n    target: findEventTarget(target),\n    eventTypeString,\n    eventTypeId,\n    userData,\n    callbackfunc,\n    handlerFunc: keyEventHandlerFunc,\n    useCapture\n  };\n  return JSEvents.registerOrRemoveHandler(eventHandler);\n};\n\nfunction _emscripten_set_keydown_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(4, 0, 1, target, userData, useCapture, callbackfunc, targetThread);\n  return registerKeyEventCallback(target, userData, useCapture, callbackfunc, 2, \"keydown\", targetThread);\n}\n\n_emscripten_set_keydown_callback_on_thread.sig = \"ippipp\";\n\nfunction _emscripten_set_keyup_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(5, 0, 1, target, userData, useCapture, callbackfunc, targetThread);\n  return registerKeyEventCallback(target, userData, useCapture, callbackfunc, 3, \"keyup\", targetThread);\n}\n\n_emscripten_set_keyup_callback_on_thread.sig = \"ippipp\";\n\nvar getBoundingClientRect = e => specialHTMLTargets.indexOf(e) < 0 ? e.getBoundingClientRect() : {\n  \"left\": 0,\n  \"top\": 0\n};\n\nvar fillMouseEventData = (eventStruct, e, target) => {\n  assert(eventStruct % 4 == 0);\n  (growMemViews(), HEAPF64)[((eventStruct) >> 3)] = e.timeStamp;\n  var idx = ((eventStruct) >> 2);\n  (growMemViews(), HEAP32)[idx + 2] = e.screenX;\n  (growMemViews(), HEAP32)[idx + 3] = e.screenY;\n  (growMemViews(), HEAP32)[idx + 4] = e.clientX;\n  (growMemViews(), HEAP32)[idx + 5] = e.clientY;\n  (growMemViews(), HEAP8)[eventStruct + 24] = e.ctrlKey;\n  (growMemViews(), HEAP8)[eventStruct + 25] = e.shiftKey;\n  (growMemViews(), HEAP8)[eventStruct + 26] = e.altKey;\n  (growMemViews(), HEAP8)[eventStruct + 27] = e.metaKey;\n  (growMemViews(), HEAP16)[idx * 2 + 14] = e.button;\n  (growMemViews(), HEAP16)[idx * 2 + 15] = e.buttons;\n  (growMemViews(), HEAP32)[idx + 8] = e[\"movementX\"];\n  (growMemViews(), HEAP32)[idx + 9] = e[\"movementY\"];\n  // Note: rect contains doubles (truncated to placate SAFE_HEAP, which is the same behaviour when writing to HEAP32 anyway)\n  var rect = getBoundingClientRect(target);\n  (growMemViews(), HEAP32)[idx + 10] = e.clientX - (rect.left | 0);\n  (growMemViews(), HEAP32)[idx + 11] = e.clientY - (rect.top | 0);\n};\n\nvar registerMouseEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n  targetThread = JSEvents.getTargetThreadForEventCallback(targetThread);\n  var eventSize = 64;\n  JSEvents.mouseEvent ||= _malloc(eventSize);\n  target = findEventTarget(target);\n  var mouseEventHandlerFunc = e => {\n    // TODO: Make this access thread safe, or this could update live while app is reading it.\n    fillMouseEventData(JSEvents.mouseEvent, e, target);\n    if (targetThread) {\n      __emscripten_run_callback_on_thread(targetThread, callbackfunc, eventTypeId, JSEvents.mouseEvent, eventSize, userData);\n    } else if (getWasmTableEntry(callbackfunc)(eventTypeId, JSEvents.mouseEvent, userData)) e.preventDefault();\n  };\n  var eventHandler = {\n    target,\n    allowsDeferredCalls: eventTypeString != \"mousemove\" && eventTypeString != \"mouseenter\" && eventTypeString != \"mouseleave\",\n    // Mouse move events do not allow fullscreen/pointer lock requests to be handled in them!\n    eventTypeString,\n    eventTypeId,\n    userData,\n    callbackfunc,\n    handlerFunc: mouseEventHandlerFunc,\n    useCapture\n  };\n  return JSEvents.registerOrRemoveHandler(eventHandler);\n};\n\nfunction _emscripten_set_mousedown_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(6, 0, 1, target, userData, useCapture, callbackfunc, targetThread);\n  return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 5, \"mousedown\", targetThread);\n}\n\n_emscripten_set_mousedown_callback_on_thread.sig = \"ippipp\";\n\nfunction _emscripten_set_mouseleave_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(7, 0, 1, target, userData, useCapture, callbackfunc, targetThread);\n  return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 34, \"mouseleave\", targetThread);\n}\n\n_emscripten_set_mouseleave_callback_on_thread.sig = \"ippipp\";\n\nfunction _emscripten_set_mousemove_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(8, 0, 1, target, userData, useCapture, callbackfunc, targetThread);\n  return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 8, \"mousemove\", targetThread);\n}\n\n_emscripten_set_mousemove_callback_on_thread.sig = \"ippipp\";\n\nfunction _emscripten_set_mouseup_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(9, 0, 1, target, userData, useCapture, callbackfunc, targetThread);\n  return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 6, \"mouseup\", targetThread);\n}\n\n_emscripten_set_mouseup_callback_on_thread.sig = \"ippipp\";\n\nvar registerTouchEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n  targetThread = JSEvents.getTargetThreadForEventCallback(targetThread);\n  var eventSize = 1552;\n  JSEvents.touchEvent ||= _malloc(eventSize);\n  target = findEventTarget(target);\n  var touchEventHandlerFunc = e => {\n    assert(e);\n    var t, touches = {}, et = e.touches;\n    // To ease marshalling different kinds of touches that browser reports (all touches are listed in e.touches,\n    // only changed touches in e.changedTouches, and touches on target at a.targetTouches), mark a boolean in\n    // each Touch object so that we can later loop only once over all touches we see to marshall over to Wasm.\n    for (let t of et) {\n      // Browser might recycle the generated Touch objects between each frame (Firefox on Android), so reset any\n      // changed/target states we may have set from previous frame.\n      t.isChanged = t.onTarget = 0;\n      touches[t.identifier] = t;\n    }\n    // Mark which touches are part of the changedTouches list.\n    for (let t of e.changedTouches) {\n      t.isChanged = 1;\n      touches[t.identifier] = t;\n    }\n    // Mark which touches are part of the targetTouches list.\n    for (let t of e.targetTouches) {\n      touches[t.identifier].onTarget = 1;\n    }\n    var touchEvent = JSEvents.touchEvent;\n    (growMemViews(), HEAPF64)[((touchEvent) >> 3)] = e.timeStamp;\n    (growMemViews(), HEAP8)[touchEvent + 12] = e.ctrlKey;\n    (growMemViews(), HEAP8)[touchEvent + 13] = e.shiftKey;\n    (growMemViews(), HEAP8)[touchEvent + 14] = e.altKey;\n    (growMemViews(), HEAP8)[touchEvent + 15] = e.metaKey;\n    var idx = touchEvent + 16;\n    var targetRect = getBoundingClientRect(target);\n    var numTouches = 0;\n    for (let t of Object.values(touches)) {\n      var idx32 = ((idx) >> 2);\n      // Pre-shift the ptr to index to HEAP32 to save code size\n      (growMemViews(), HEAP32)[idx32 + 0] = t.identifier;\n      (growMemViews(), HEAP32)[idx32 + 1] = t.screenX;\n      (growMemViews(), HEAP32)[idx32 + 2] = t.screenY;\n      (growMemViews(), HEAP32)[idx32 + 3] = t.clientX;\n      (growMemViews(), HEAP32)[idx32 + 4] = t.clientY;\n      (growMemViews(), HEAP32)[idx32 + 5] = t.pageX;\n      (growMemViews(), HEAP32)[idx32 + 6] = t.pageY;\n      (growMemViews(), HEAP8)[idx + 28] = t.isChanged;\n      (growMemViews(), HEAP8)[idx + 29] = t.onTarget;\n      (growMemViews(), HEAP32)[idx32 + 8] = t.clientX - (targetRect.left | 0);\n      (growMemViews(), HEAP32)[idx32 + 9] = t.clientY - (targetRect.top | 0);\n      idx += 48;\n      if (++numTouches > 31) {\n        break;\n      }\n    }\n    (growMemViews(), HEAP32)[(((touchEvent) + (8)) >> 2)] = numTouches;\n    if (targetThread) __emscripten_run_callback_on_thread(targetThread, callbackfunc, eventTypeId, touchEvent, eventSize, userData); else if (getWasmTableEntry(callbackfunc)(eventTypeId, touchEvent, userData)) e.preventDefault();\n  };\n  var eventHandler = {\n    target,\n    allowsDeferredCalls: eventTypeString == \"touchstart\" || eventTypeString == \"touchend\",\n    eventTypeString,\n    eventTypeId,\n    userData,\n    callbackfunc,\n    handlerFunc: touchEventHandlerFunc,\n    useCapture\n  };\n  return JSEvents.registerOrRemoveHandler(eventHandler);\n};\n\nfunction _emscripten_set_touchend_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(10, 0, 1, target, userData, useCapture, callbackfunc, targetThread);\n  return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 23, \"touchend\", targetThread);\n}\n\n_emscripten_set_touchend_callback_on_thread.sig = \"ippipp\";\n\nfunction _emscripten_set_touchmove_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(11, 0, 1, target, userData, useCapture, callbackfunc, targetThread);\n  return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 24, \"touchmove\", targetThread);\n}\n\n_emscripten_set_touchmove_callback_on_thread.sig = \"ippipp\";\n\nfunction _emscripten_set_touchstart_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(12, 0, 1, target, userData, useCapture, callbackfunc, targetThread);\n  return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 22, \"touchstart\", targetThread);\n}\n\n_emscripten_set_touchstart_callback_on_thread.sig = \"ippipp\";\n\nvar registerWheelEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n  targetThread = JSEvents.getTargetThreadForEventCallback(targetThread);\n  var eventSize = 96;\n  JSEvents.wheelEvent ||= _malloc(eventSize);\n  // The DOM Level 3 events spec event 'wheel'\n  var wheelHandlerFunc = e => {\n    var wheelEvent = JSEvents.wheelEvent;\n    fillMouseEventData(wheelEvent, e, target);\n    (growMemViews(), HEAPF64)[(((wheelEvent) + (64)) >> 3)] = e[\"deltaX\"];\n    (growMemViews(), HEAPF64)[(((wheelEvent) + (72)) >> 3)] = e[\"deltaY\"];\n    (growMemViews(), HEAPF64)[(((wheelEvent) + (80)) >> 3)] = e[\"deltaZ\"];\n    (growMemViews(), HEAP32)[(((wheelEvent) + (88)) >> 2)] = e[\"deltaMode\"];\n    if (targetThread) __emscripten_run_callback_on_thread(targetThread, callbackfunc, eventTypeId, wheelEvent, eventSize, userData); else if (getWasmTableEntry(callbackfunc)(eventTypeId, wheelEvent, userData)) e.preventDefault();\n  };\n  var eventHandler = {\n    target,\n    allowsDeferredCalls: true,\n    eventTypeString,\n    eventTypeId,\n    userData,\n    callbackfunc,\n    handlerFunc: wheelHandlerFunc,\n    useCapture\n  };\n  return JSEvents.registerOrRemoveHandler(eventHandler);\n};\n\nfunction _emscripten_set_wheel_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(13, 0, 1, target, userData, useCapture, callbackfunc, targetThread);\n  target = findEventTarget(target);\n  if (!target) return -4;\n  if (typeof target.onwheel != \"undefined\") {\n    return registerWheelEventCallback(target, userData, useCapture, callbackfunc, 9, \"wheel\", targetThread);\n  } else {\n    return -1;\n  }\n}\n\n_emscripten_set_wheel_callback_on_thread.sig = \"ippipp\";\n\nvar Fetch = {\n  async openDatabase(dbname, dbversion) {\n    return new Promise((resolve, reject) => {\n      try {\n        var openRequest = indexedDB.open(dbname, dbversion);\n      } catch (e) {\n        return reject(e);\n      }\n      openRequest.onupgradeneeded = event => {\n        var db = /** @type {IDBDatabase} */ (event.target.result);\n        if (db.objectStoreNames.contains(\"FILES\")) {\n          db.deleteObjectStore(\"FILES\");\n        }\n        db.createObjectStore(\"FILES\");\n      };\n      openRequest.onsuccess = event => resolve(event.target.result);\n      openRequest.onerror = reject;\n    });\n  },\n  async init() {\n    Fetch.xhrs = new HandleAllocator;\n    if (ENVIRONMENT_IS_PTHREAD) return;\n    addRunDependency(\"library_fetch_init\");\n    try {\n      var db = await Fetch.openDatabase(\"emscripten_filesystem\", 1);\n      Fetch.dbInstance = db;\n    } catch (e) {\n      Fetch.dbInstance = false;\n    } finally {\n      removeRunDependency(\"library_fetch_init\");\n    }\n  }\n};\n\nfunction fetchXHR(fetch, onsuccess, onerror, onprogress, onreadystatechange) {\n  var url = (growMemViews(), HEAPU32)[(((fetch) + (8)) >> 2)];\n  if (!url) {\n    onerror(fetch, \"no url specified!\");\n    return;\n  }\n  var url_ = UTF8ToString(url);\n  var fetch_attr = fetch + 108;\n  var requestMethod = UTF8ToString(fetch_attr + 0);\n  requestMethod ||= \"GET\";\n  var timeoutMsecs = (growMemViews(), HEAPU32)[(((fetch_attr) + (56)) >> 2)];\n  var userName = (growMemViews(), HEAPU32)[(((fetch_attr) + (68)) >> 2)];\n  var password = (growMemViews(), HEAPU32)[(((fetch_attr) + (72)) >> 2)];\n  var requestHeaders = (growMemViews(), HEAPU32)[(((fetch_attr) + (76)) >> 2)];\n  var overriddenMimeType = (growMemViews(), HEAPU32)[(((fetch_attr) + (80)) >> 2)];\n  var dataPtr = (growMemViews(), HEAPU32)[(((fetch_attr) + (84)) >> 2)];\n  var dataLength = (growMemViews(), HEAPU32)[(((fetch_attr) + (88)) >> 2)];\n  var fetchAttributes = (growMemViews(), HEAPU32)[(((fetch_attr) + (52)) >> 2)];\n  var fetchAttrLoadToMemory = !!(fetchAttributes & 1);\n  var fetchAttrStreamData = !!(fetchAttributes & 2);\n  var fetchAttrSynchronous = !!(fetchAttributes & 64);\n  var userNameStr = userName ? UTF8ToString(userName) : undefined;\n  var passwordStr = password ? UTF8ToString(password) : undefined;\n  if (fetchAttrStreamData) {\n    var xhr = new FetchXHR;\n  } else {\n    var xhr = new XMLHttpRequest;\n  }\n  xhr.withCredentials = !!(growMemViews(), HEAPU8)[(fetch_attr) + (60)];\n  xhr._streamData = fetchAttrStreamData;\n  xhr.open(requestMethod, url_, !fetchAttrSynchronous, userNameStr, passwordStr);\n  if (!fetchAttrSynchronous) xhr.timeout = timeoutMsecs;\n  // XHR timeout field is only accessible in async XHRs, and must be set after .open() but before .send().\n  xhr.url_ = url_;\n  // Save the url for debugging purposes (and for comparing to the responseURL that server side advertised)\n  xhr.responseType = \"arraybuffer\";\n  if (overriddenMimeType) {\n    var overriddenMimeTypeStr = UTF8ToString(overriddenMimeType);\n    xhr.overrideMimeType(overriddenMimeTypeStr);\n  }\n  if (requestHeaders) {\n    for (;;) {\n      var key = (growMemViews(), HEAPU32)[((requestHeaders) >> 2)];\n      if (!key) break;\n      var value = (growMemViews(), HEAPU32)[(((requestHeaders) + (4)) >> 2)];\n      if (!value) break;\n      requestHeaders += 8;\n      var keyStr = UTF8ToString(key);\n      var valueStr = UTF8ToString(value);\n      xhr.setRequestHeader(keyStr, valueStr);\n    }\n  }\n  var id = Fetch.xhrs.allocate(xhr);\n  (growMemViews(), HEAPU32)[((fetch) >> 2)] = id;\n  var data = (dataPtr && dataLength) ? (growMemViews(), HEAPU8).slice(dataPtr, dataPtr + dataLength) : null;\n  // TODO: Support specifying custom headers to the request.\n  // Share the code to save the response, as we need to do so both on success\n  // and on error (despite an error, there may be a response, like a 404 page).\n  // This receives a condition, which determines whether to save the xhr's\n  // response, or just 0.\n  function saveResponseAndStatus() {\n    var ptr = 0;\n    var ptrLen = 0;\n    if (xhr.response && fetchAttrLoadToMemory && (growMemViews(), HEAPU32)[(((fetch) + (12)) >> 2)] === 0) {\n      ptrLen = xhr.response.byteLength;\n    }\n    if (ptrLen > 0) {\n      // The data pointer malloc()ed here has the same lifetime as the emscripten_fetch_t structure itself has, and is\n      // freed when emscripten_fetch_close() is called.\n      ptr = _realloc((growMemViews(), HEAPU32)[(((fetch) + (12)) >> 2)], ptrLen);\n      (growMemViews(), HEAPU8).set(new Uint8Array(/** @type{Array<number>} */ (xhr.response)), ptr);\n    }\n    (growMemViews(), HEAPU32)[(((fetch) + (12)) >> 2)] = ptr;\n    writeI53ToI64(fetch + 16, ptrLen);\n    writeI53ToI64(fetch + 24, 0);\n    var len = xhr.response?.byteLength ?? 0;\n    if (len) {\n      // If the final XHR.onload handler receives the bytedata to compute total length, report that,\n      // otherwise don't write anything out here, which will retain the latest byte size reported in\n      // the most recent XHR.onprogress handler.\n      writeI53ToI64(fetch + 32, len);\n    }\n    (growMemViews(), HEAP16)[(((fetch) + (40)) >> 1)] = xhr.readyState;\n    (growMemViews(), HEAP16)[(((fetch) + (42)) >> 1)] = xhr.status;\n    if (xhr.statusText) stringToUTF8(xhr.statusText, fetch + 44, 64);\n    if (fetchAttrSynchronous) {\n      // The response url pointer malloc()ed here has the same lifetime as the emscripten_fetch_t structure itself has, and is\n      // freed when emscripten_fetch_close() is called.\n      var ruPtr = stringToNewUTF8(xhr.responseURL);\n      (growMemViews(), HEAPU32)[(((fetch) + (200)) >> 2)] = ruPtr;\n    }\n  }\n  xhr.onload = e => {\n    // check if xhr was aborted by user and don't try to call back\n    if (!Fetch.xhrs.has(id)) {\n      return;\n    }\n    saveResponseAndStatus();\n    if (xhr.status >= 200 && xhr.status < 300) {\n      if (fetchAttrStreamData) {\n        assert(xhr.response === null);\n      }\n      onsuccess(fetch, xhr, e);\n    } else {\n      onerror(fetch, e);\n    }\n  };\n  xhr.onerror = e => {\n    // check if xhr was aborted by user and don't try to call back\n    if (!Fetch.xhrs.has(id)) {\n      return;\n    }\n    saveResponseAndStatus();\n    onerror(fetch, e);\n  };\n  xhr.ontimeout = e => {\n    // check if xhr was aborted by user and don't try to call back\n    if (!Fetch.xhrs.has(id)) {\n      return;\n    }\n    onerror(fetch, e);\n  };\n  xhr.onprogress = e => {\n    // check if xhr was aborted by user and don't try to call back\n    if (!Fetch.xhrs.has(id)) {\n      return;\n    }\n    var ptrLen = (fetchAttrLoadToMemory && fetchAttrStreamData) ? xhr.response?.byteLength ?? 0 : 0;\n    // Specifies the maximum chunk size that a streaming fetch will transfer from\n    // JS over to WebAssembly side. Used to cap a streaming fetch to avoid\n    // overallocating WebAssembly memory needlessly.\n    var FETCH_STREAMING_MAX_CHUNK_SIZE = 8 * 1024 * 1024;\n    for (var bytePos = 0; bytePos < ptrLen || !ptrLen; ) {\n      var sz = Math.min(ptrLen - bytePos, FETCH_STREAMING_MAX_CHUNK_SIZE);\n      var ptr = 0;\n      if (sz > 0 && fetchAttrLoadToMemory && fetchAttrStreamData) {\n        // Even though we are doing a streaming fetch (i.e. in small chunks), Safari may call onprogress with a huge\n        // chunk size. This will be a problem for Wasm applications that intend to use streaming fetch to process\n        // an input file in small chunks (to avoid blowing up the WebAssembly heap size). Therefore apply a max\n        // chunk size ceiling to the received chunks, and transfer the data over to WebAssembly using max sized chunks.\n        assert(onprogress, \"streaming fetch requires an onprogress handler\");\n        // The data pointer malloc()ed here has the same lifetime as the emscripten_fetch_t structure itself has, and is\n        // freed when emscripten_fetch_close() is called.\n        ptr = _realloc((growMemViews(), HEAPU32)[(((fetch) + (12)) >> 2)], sz);\n        (growMemViews(), HEAPU8).set(new Uint8Array(/** @type{Array<number>} */ (xhr.response), bytePos, sz), ptr);\n      }\n      (growMemViews(), HEAPU32)[(((fetch) + (12)) >> 2)] = ptr;\n      writeI53ToI64(fetch + 16, sz);\n      writeI53ToI64(fetch + 24, e.loaded - ptrLen + bytePos);\n      writeI53ToI64(fetch + 32, e.total);\n      (growMemViews(), HEAP16)[(((fetch) + (40)) >> 1)] = xhr.readyState;\n      var status = xhr.status;\n      // If loading files from a source that does not give HTTP status code, assume success if we get data bytes\n      if (xhr.readyState >= 3 && xhr.status === 0 && e.loaded > 0) status = 200;\n      (growMemViews(), HEAP16)[(((fetch) + (42)) >> 1)] = status;\n      if (xhr.statusText) stringToUTF8(xhr.statusText, fetch + 44, 64);\n      onprogress(fetch, e);\n      bytePos += sz;\n      if (!ptrLen) break;\n    }\n  };\n  xhr.onreadystatechange = e => {\n    // check if xhr was aborted by user and don't try to call back\n    if (!Fetch.xhrs.has(id)) {\n      runtimeKeepalivePop();\n      return;\n    }\n    (growMemViews(), HEAP16)[(((fetch) + (40)) >> 1)] = xhr.readyState;\n    if (xhr.readyState >= 2) {\n      (growMemViews(), HEAP16)[(((fetch) + (42)) >> 1)] = xhr.status;\n    }\n    if (!fetchAttrSynchronous && (xhr.readyState === 2 && xhr.responseURL.length > 0)) {\n      // The response url pointer malloc()ed here has the same lifetime as the emscripten_fetch_t structure itself has, and is\n      // freed when emscripten_fetch_close() is called.\n      var ruPtr = stringToNewUTF8(xhr.responseURL);\n      (growMemViews(), HEAPU32)[(((fetch) + (200)) >> 2)] = ruPtr;\n    }\n    onreadystatechange(fetch, e);\n  };\n  try {\n    xhr.send(data);\n  } catch (e) {\n    onerror(fetch, e);\n  }\n}\n\nvar writeI53ToI64 = (ptr, num) => {\n  (growMemViews(), HEAPU32)[((ptr) >> 2)] = num;\n  var lower = (growMemViews(), HEAPU32)[((ptr) >> 2)];\n  (growMemViews(), HEAPU32)[(((ptr) + (4)) >> 2)] = (num - lower) / 4294967296;\n  var deserialized = (num >= 0) ? readI53FromU64(ptr) : readI53FromI64(ptr);\n  var offset = ((ptr) >> 2);\n  if (deserialized != num) warnOnce(`writeI53ToI64() out of range: serialized JS Number ${num} to Wasm heap as bytes lo=${ptrToString((growMemViews(), \n  HEAPU32)[offset])}, hi=${ptrToString((growMemViews(), HEAPU32)[offset + 1])}, which deserializes back to ${deserialized} instead!`);\n};\n\nvar stringToNewUTF8 = str => {\n  var size = lengthBytesUTF8(str) + 1;\n  var ret = _malloc(size);\n  if (ret) stringToUTF8(str, ret, size);\n  return ret;\n};\n\nfunction fetchCacheData(/** @type {IDBDatabase} */ db, fetch, data, onsuccess, onerror) {\n  if (!db) {\n    onerror(fetch, 0, \"IndexedDB not available!\");\n    return;\n  }\n  var fetch_attr = fetch + 108;\n  var destinationPath = (growMemViews(), HEAPU32)[(((fetch_attr) + (64)) >> 2)];\n  destinationPath ||= (growMemViews(), HEAPU32)[(((fetch) + (8)) >> 2)];\n  var destinationPathStr = UTF8ToString(destinationPath);\n  try {\n    var transaction = db.transaction([ \"FILES\" ], \"readwrite\");\n    var packages = transaction.objectStore(\"FILES\");\n    var putRequest = packages.put(data, destinationPathStr);\n    putRequest.onsuccess = event => {\n      (growMemViews(), HEAP16)[(((fetch) + (40)) >> 1)] = 4;\n      // Mimic XHR readyState 4 === 'DONE: The operation is complete'\n      (growMemViews(), HEAP16)[(((fetch) + (42)) >> 1)] = 200;\n      // Mimic XHR HTTP status code 200 \"OK\"\n      stringToUTF8(\"OK\", fetch + 44, 64);\n      onsuccess(fetch, 0, destinationPathStr);\n    };\n    putRequest.onerror = error => {\n      // Most likely we got an error if IndexedDB is unwilling to store any more data for this page.\n      // TODO: Can we identify and break down different IndexedDB-provided errors and convert those\n      // to more HTTP status codes for more information?\n      (growMemViews(), HEAP16)[(((fetch) + (40)) >> 1)] = 4;\n      // Mimic XHR readyState 4 === 'DONE: The operation is complete'\n      (growMemViews(), HEAP16)[(((fetch) + (42)) >> 1)] = 413;\n      // Mimic XHR HTTP status code 413 \"Payload Too Large\"\n      stringToUTF8(\"Payload Too Large\", fetch + 44, 64);\n      onerror(fetch, 0, error);\n    };\n  } catch (e) {\n    onerror(fetch, 0, e);\n  }\n}\n\nfunction fetchLoadCachedData(db, fetch, onsuccess, onerror) {\n  if (!db) {\n    onerror(fetch, 0, \"IndexedDB not available!\");\n    return;\n  }\n  var fetch_attr = fetch + 108;\n  var path = (growMemViews(), HEAPU32)[(((fetch_attr) + (64)) >> 2)];\n  path ||= (growMemViews(), HEAPU32)[(((fetch) + (8)) >> 2)];\n  var pathStr = UTF8ToString(path);\n  try {\n    var transaction = db.transaction([ \"FILES\" ], \"readonly\");\n    var packages = transaction.objectStore(\"FILES\");\n    var getRequest = packages.get(pathStr);\n    getRequest.onsuccess = event => {\n      if (event.target.result) {\n        var value = event.target.result;\n        var len = value.byteLength || value.length;\n        // The data pointer malloc()ed here has the same lifetime as the emscripten_fetch_t structure itself has, and is\n        // freed when emscripten_fetch_close() is called.\n        var ptr = _malloc(len);\n        (growMemViews(), HEAPU8).set(new Uint8Array(value), ptr);\n        (growMemViews(), HEAPU32)[(((fetch) + (12)) >> 2)] = ptr;\n        writeI53ToI64(fetch + 16, len);\n        writeI53ToI64(fetch + 24, 0);\n        writeI53ToI64(fetch + 32, len);\n        (growMemViews(), HEAP16)[(((fetch) + (40)) >> 1)] = 4;\n        // Mimic XHR readyState 4 === 'DONE: The operation is complete'\n        (growMemViews(), HEAP16)[(((fetch) + (42)) >> 1)] = 200;\n        // Mimic XHR HTTP status code 200 \"OK\"\n        stringToUTF8(\"OK\", fetch + 44, 64);\n        onsuccess(fetch, 0, value);\n      } else {\n        // Succeeded to load, but the load came back with the value of undefined, treat that as an error since we never store undefined in db.\n        (growMemViews(), HEAP16)[(((fetch) + (40)) >> 1)] = 4;\n        // Mimic XHR readyState 4 === 'DONE: The operation is complete'\n        (growMemViews(), HEAP16)[(((fetch) + (42)) >> 1)] = 404;\n        // Mimic XHR HTTP status code 404 \"Not Found\"\n        stringToUTF8(\"Not Found\", fetch + 44, 64);\n        onerror(fetch, 0, \"no data\");\n      }\n    };\n    getRequest.onerror = error => {\n      (growMemViews(), HEAP16)[(((fetch) + (40)) >> 1)] = 4;\n      // Mimic XHR readyState 4 === 'DONE: The operation is complete'\n      (growMemViews(), HEAP16)[(((fetch) + (42)) >> 1)] = 404;\n      // Mimic XHR HTTP status code 404 \"Not Found\"\n      stringToUTF8(\"Not Found\", fetch + 44, 64);\n      onerror(fetch, 0, error);\n    };\n  } catch (e) {\n    onerror(fetch, 0, e);\n  }\n}\n\nfunction fetchDeleteCachedData(db, fetch, onsuccess, onerror) {\n  if (!db) {\n    onerror(fetch, 0, \"IndexedDB not available!\");\n    return;\n  }\n  var fetch_attr = fetch + 108;\n  var path = (growMemViews(), HEAPU32)[(((fetch_attr) + (64)) >> 2)];\n  path ||= (growMemViews(), HEAPU32)[(((fetch) + (8)) >> 2)];\n  var pathStr = UTF8ToString(path);\n  try {\n    var transaction = db.transaction([ \"FILES\" ], \"readwrite\");\n    var packages = transaction.objectStore(\"FILES\");\n    var request = packages.delete(pathStr);\n    request.onsuccess = event => {\n      var value = event.target.result;\n      (growMemViews(), HEAPU32)[(((fetch) + (12)) >> 2)] = 0;\n      writeI53ToI64(fetch + 16, 0);\n      writeI53ToI64(fetch + 24, 0);\n      writeI53ToI64(fetch + 32, 0);\n      // Mimic XHR readyState 4 === 'DONE: The operation is complete'\n      (growMemViews(), HEAP16)[(((fetch) + (40)) >> 1)] = 4;\n      // Mimic XHR HTTP status code 200 \"OK\"\n      (growMemViews(), HEAP16)[(((fetch) + (42)) >> 1)] = 200;\n      stringToUTF8(\"OK\", fetch + 44, 64);\n      onsuccess(fetch, 0, value);\n    };\n    request.onerror = error => {\n      (growMemViews(), HEAP16)[(((fetch) + (40)) >> 1)] = 4;\n      // Mimic XHR readyState 4 === 'DONE: The operation is complete'\n      (growMemViews(), HEAP16)[(((fetch) + (42)) >> 1)] = 404;\n      // Mimic XHR HTTP status code 404 \"Not Found\"\n      stringToUTF8(\"Not Found\", fetch + 44, 64);\n      onerror(fetch, 0, error);\n    };\n  } catch (e) {\n    onerror(fetch, 0, e);\n  }\n}\n\nclass FetchXHR {\n  // --- Public XHR Properties ---\n  // Event Handlers\n  onload=null;\n  onerror=null;\n  onprogress=null;\n  onreadystatechange=null;\n  ontimeout=null;\n  // Request Configuration\n  responseType=\"arraybuffer\";\n  withCredentials=false;\n  timeout=0;\n  // Standard XHR timeout property\n  // Response / State Properties\n  readyState=0;\n  // 0: UNSENT\n  response=null;\n  responseURL=\"\";\n  status=0;\n  statusText=\"\";\n  // --- Internal Properties ---\n  _method=\"\";\n  _url=\"\";\n  _headers={};\n  _abortController=null;\n  _aborted=false;\n  _responseHeaders=null;\n  // When enabled the the data will be streamed using progress events. If the full result is needed\n  // the data must be collected during the progress events.\n  _streamData=false;\n  // --- Private state management ---\n  _changeReadyState(state) {\n    this.readyState = state;\n    this.onreadystatechange?.();\n  }\n  // --- Public XHR Methods ---\n  /**\n   * Initializes a request.\n   * @param {string} method The HTTP request method (e.g., 'GET', 'POST').\n   * @param {string} url The URL to send the request to.\n   * @param {boolean} [async=true] This parameter is ignored as Fetch is always async.\n   * @param {string|null} [user=null] The username for basic authentication.\n   * @param {string|null} [password=null] The password for basic authentication.\n   */ open(method, url, async = true, user = null, password = null) {\n    if (this.readyState !== 0 && this.readyState !== 4) {\n      console.warn(\"FetchXHR.open() called while a request is in progress.\");\n      this.abort();\n    }\n    // Reset internal state for the new request\n    this._method = method;\n    this._url = url;\n    this._headers = {};\n    this._responseHeaders = null;\n    // The async parameter is part of the XHR API but is an error here because\n    // the Fetch API is inherently asynchronous and does not support synchronous requests.\n    if (!async) {\n      throw new Error(\"FetchXHR does not support synchronous requests.\");\n    }\n    // Handle Basic Authentication if user/password are provided.\n    // This creates a base64-encoded string and sets the Authorization header.\n    if (user) {\n      const credentials = btoa(`${user}:${password ?? \"\"}`);\n      this._headers[\"Authorization\"] = `Basic ${credentials}`;\n    }\n    this._changeReadyState(1);\n  }\n  /**\n   * Sets the value of an HTTP request header.\n   * @param {string} header The name of the header.\n   * @param {string} value The value of the header.\n   */ setRequestHeader(header, value) {\n    if (this.readyState !== 1) {\n      throw new Error(\"setRequestHeader can only be called when state is OPENED.\");\n    }\n    this._headers[header] = value;\n  }\n  /**\n   * This method is not effectively implemented because Fetch API relies on the\n   * server's Content-Type header and does not support overriding the MIME type\n   * on the client side in the same way as XHR.\n   * @param {string} mimetype The MIME type to use.\n   */ overrideMimeType(mimetype) {\n    throw new Error(\"overrideMimeType is not supported by the Fetch API and has no effect.\");\n  }\n  /**\n   * Returns a string containing all the response headers, separated by CRLF.\n   * @returns {string} The response headers.\n   */ getAllResponseHeaders() {\n    if (!this._responseHeaders) {\n      return \"\";\n    }\n    let headersString = \"\";\n    // The Headers object is iterable.\n    for (const [key, value] of this._responseHeaders.entries()) {\n      headersString += `${key}: ${value}\\r\\n`;\n    }\n    return headersString;\n  }\n  /**\n   * Sends the request.\n   * @param body The body of the request.\n   */ async send(body = null) {\n    if (this.readyState !== 1) {\n      throw new Error(\"send() can only be called when state is OPENED.\");\n    }\n    this._abortController = new AbortController;\n    const signal = this._abortController.signal;\n    // Handle timeout\n    let timeoutID;\n    if (this.timeout > 0) {\n      timeoutID = setTimeout(() => this._abortController.abort(new DOMException(\"The user aborted a request.\", \"TimeoutError\")), this.timeout);\n    }\n    const fetchOptions = {\n      method: this._method,\n      headers: this._headers,\n      body,\n      signal,\n      credentials: this.withCredentials ? \"include\" : \"same-origin\"\n    };\n    try {\n      const response = await fetch(this._url, fetchOptions);\n      // Populate response properties once headers are received\n      this.status = response.status;\n      this.statusText = response.statusText;\n      this.responseURL = response.url;\n      this._responseHeaders = response.headers;\n      this._changeReadyState(2);\n      // 2: HEADERS_RECEIVED\n      // Start processing the body\n      this._changeReadyState(3);\n      // 3: LOADING\n      if (!response.body) {\n        throw new Error(\"Response has no body to read.\");\n      }\n      const reader = response.body.getReader();\n      const contentLength = +response.headers.get(\"Content-Length\");\n      let receivedLength = 0;\n      // When streaming data don't collect all of the chunks into one large chunk. It's up to the\n      // user to collect the data as it comes in.\n      const chunks = this._streamData ? null : [];\n      while (true) {\n        const {done, value} = await reader.read();\n        if (done) {\n          break;\n        }\n        if (!this._streamData) {\n          chunks.push(value);\n        }\n        receivedLength += value.length;\n        if (this.onprogress) {\n          // Convert to ArrayBuffer as requested by responseType.\n          this.response = value.buffer;\n          const progressEvent = {\n            lengthComputable: contentLength > 0,\n            loaded: receivedLength,\n            total: contentLength\n          };\n          this.onprogress(progressEvent);\n        }\n      }\n      if (this._streamData) {\n        this.response = null;\n      } else {\n        // Combine chunks into a single Uint8Array.\n        const allChunks = new Uint8Array(receivedLength);\n        let position = 0;\n        for (const chunk of chunks) {\n          allChunks.set(chunk, position);\n          position += chunk.length;\n        }\n        // Convert to ArrayBuffer as requested by responseType\n        this.response = allChunks.buffer;\n      }\n    } catch (error) {\n      this.statusText = error.message;\n      if (error.name === \"AbortError\") {} else if (error.name === \"TimeoutError\") {\n        this.ontimeout?.();\n      } else {\n        // This is a network error\n        this.onerror?.();\n      }\n    } finally {\n      clearTimeout(timeoutID);\n      if (!this._aborted) {\n        this._changeReadyState(4);\n        // 4: DONE\n        // The XHR 'load' event fires for successful HTTP statuses (2xx) as well as\n        // unsuccessful ones (4xx, 5xx). The 'error' event is for network failures.\n        this.onload?.();\n      }\n    }\n  }\n  /**\n   * Aborts the request if it has already been sent.\n   */ abort() {\n    this._aborted = true;\n    this.status = 0;\n    this._changeReadyState(4);\n    // 4: DONE\n    this._abortController?.abort();\n  }\n}\n\nfunction _emscripten_start_fetch(fetch, successcb, errorcb, progresscb, readystatechangecb) {\n  // Avoid shutting down the runtime since we want to wait for the async\n  // response.\n  runtimeKeepalivePush();\n  var fetch_attr = fetch + 108;\n  var onsuccess = (growMemViews(), HEAPU32)[(((fetch_attr) + (36)) >> 2)];\n  var onerror = (growMemViews(), HEAPU32)[(((fetch_attr) + (40)) >> 2)];\n  var onprogress = (growMemViews(), HEAPU32)[(((fetch_attr) + (44)) >> 2)];\n  var onreadystatechange = (growMemViews(), HEAPU32)[(((fetch_attr) + (48)) >> 2)];\n  var fetchAttributes = (growMemViews(), HEAPU32)[(((fetch_attr) + (52)) >> 2)];\n  var fetchAttrSynchronous = !!(fetchAttributes & 64);\n  function doCallback(f) {\n    if (fetchAttrSynchronous) {\n      f();\n    } else {\n      callUserCallback(f);\n    }\n  }\n  var reportSuccess = (fetch, xhr, e) => {\n    runtimeKeepalivePop();\n    doCallback(() => {\n      if (onsuccess) getWasmTableEntry(onsuccess)(fetch); else successcb?.(fetch);\n    });\n  };\n  var reportProgress = (fetch, e) => {\n    doCallback(() => {\n      if (onprogress) getWasmTableEntry(onprogress)(fetch); else progresscb?.(fetch);\n    });\n  };\n  var reportError = (fetch, e) => {\n    runtimeKeepalivePop();\n    doCallback(() => {\n      if (onerror) getWasmTableEntry(onerror)(fetch); else errorcb?.(fetch);\n    });\n  };\n  var reportReadyStateChange = (fetch, e) => {\n    doCallback(() => {\n      if (onreadystatechange) getWasmTableEntry(onreadystatechange)(fetch); else readystatechangecb?.(fetch);\n    });\n  };\n  var performUncachedXhr = (fetch, xhr, e) => {\n    fetchXHR(fetch, reportSuccess, reportError, reportProgress, reportReadyStateChange);\n  };\n  var cacheResultAndReportSuccess = (fetch, xhr, e) => {\n    var storeSuccess = (fetch, xhr, e) => {\n      runtimeKeepalivePop();\n      doCallback(() => {\n        if (onsuccess) getWasmTableEntry(onsuccess)(fetch); else successcb?.(fetch);\n      });\n    };\n    var storeError = (fetch, xhr, e) => {\n      runtimeKeepalivePop();\n      doCallback(() => {\n        if (onsuccess) getWasmTableEntry(onsuccess)(fetch); else successcb?.(fetch);\n      });\n    };\n    fetchCacheData(Fetch.dbInstance, fetch, xhr.response, storeSuccess, storeError);\n  };\n  var performCachedXhr = (fetch, xhr, e) => {\n    fetchXHR(fetch, cacheResultAndReportSuccess, reportError, reportProgress, reportReadyStateChange);\n  };\n  var requestMethod = UTF8ToString(fetch_attr + 0);\n  var fetchAttrReplace = !!(fetchAttributes & 16);\n  var fetchAttrPersistFile = !!(fetchAttributes & 4);\n  var fetchAttrNoDownload = !!(fetchAttributes & 32);\n  if (requestMethod === \"EM_IDB_STORE\") {\n    // TODO(?): Here we perform a clone of the data, because storing shared typed arrays to IndexedDB does not seem to be allowed.\n    var ptr = (growMemViews(), HEAPU32)[(((fetch_attr) + (84)) >> 2)];\n    var size = (growMemViews(), HEAPU32)[(((fetch_attr) + (88)) >> 2)];\n    fetchCacheData(Fetch.dbInstance, fetch, (growMemViews(), HEAPU8).slice(ptr, ptr + size), reportSuccess, reportError);\n  } else if (requestMethod === \"EM_IDB_DELETE\") {\n    fetchDeleteCachedData(Fetch.dbInstance, fetch, reportSuccess, reportError);\n  } else if (!fetchAttrReplace) {\n    fetchLoadCachedData(Fetch.dbInstance, fetch, reportSuccess, fetchAttrNoDownload ? reportError : (fetchAttrPersistFile ? performCachedXhr : performUncachedXhr));\n  } else if (!fetchAttrNoDownload) {\n    fetchXHR(fetch, fetchAttrPersistFile ? cacheResultAndReportSuccess : reportSuccess, reportError, reportProgress, reportReadyStateChange);\n  } else {\n    return 0;\n  }\n  return fetch;\n}\n\n_emscripten_start_fetch.sig = \"vp\";\n\nvar _emscripten_unwind_to_js_event_loop = () => {\n  throw \"unwind\";\n};\n\n_emscripten_unwind_to_js_event_loop.sig = \"v\";\n\nvar GLctx;\n\nvar webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance = ctx => // Closure is expected to be allowed to minify the '.dibvbi' property, so not accessing it quoted.\n!!(ctx.dibvbi = ctx.getExtension(\"WEBGL_draw_instanced_base_vertex_base_instance\"));\n\nvar webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance = ctx => !!(ctx.mdibvbi = ctx.getExtension(\"WEBGL_multi_draw_instanced_base_vertex_base_instance\"));\n\nvar webgl_enable_EXT_polygon_offset_clamp = ctx => !!(ctx.extPolygonOffsetClamp = ctx.getExtension(\"EXT_polygon_offset_clamp\"));\n\nvar webgl_enable_EXT_clip_control = ctx => !!(ctx.extClipControl = ctx.getExtension(\"EXT_clip_control\"));\n\nvar webgl_enable_WEBGL_polygon_mode = ctx => !!(ctx.webglPolygonMode = ctx.getExtension(\"WEBGL_polygon_mode\"));\n\nvar webgl_enable_WEBGL_multi_draw = ctx => // Closure is expected to be allowed to minify the '.multiDrawWebgl' property, so not accessing it quoted.\n!!(ctx.multiDrawWebgl = ctx.getExtension(\"WEBGL_multi_draw\"));\n\nvar getEmscriptenSupportedExtensions = ctx => {\n  // Restrict the list of advertised extensions to those that we actually\n  // support.\n  var supportedExtensions = [ // WebGL 2 extensions\n  \"EXT_color_buffer_float\", \"EXT_conservative_depth\", \"EXT_disjoint_timer_query_webgl2\", \"EXT_texture_norm16\", \"NV_shader_noperspective_interpolation\", \"WEBGL_clip_cull_distance\", // WebGL 1 and WebGL 2 extensions\n  \"EXT_clip_control\", \"EXT_color_buffer_half_float\", \"EXT_depth_clamp\", \"EXT_float_blend\", \"EXT_polygon_offset_clamp\", \"EXT_texture_compression_bptc\", \"EXT_texture_compression_rgtc\", \"EXT_texture_filter_anisotropic\", \"KHR_parallel_shader_compile\", \"OES_texture_float_linear\", \"WEBGL_blend_func_extended\", \"WEBGL_compressed_texture_astc\", \"WEBGL_compressed_texture_etc\", \"WEBGL_compressed_texture_etc1\", \"WEBGL_compressed_texture_s3tc\", \"WEBGL_compressed_texture_s3tc_srgb\", \"WEBGL_debug_renderer_info\", \"WEBGL_debug_shaders\", \"WEBGL_lose_context\", \"WEBGL_multi_draw\", \"WEBGL_polygon_mode\" ];\n  // .getSupportedExtensions() can return null if context is lost, so coerce to empty array.\n  return ctx.getSupportedExtensions()?.filter(ext => supportedExtensions.includes(ext)) ?? [];\n};\n\nvar GL = {\n  counter: 1,\n  buffers: [],\n  programs: [],\n  framebuffers: [],\n  renderbuffers: [],\n  textures: [],\n  shaders: [],\n  vaos: [],\n  contexts: {},\n  offscreenCanvases: {},\n  queries: [],\n  samplers: [],\n  transformFeedbacks: [],\n  syncs: [],\n  stringCache: {},\n  stringiCache: {},\n  unpackAlignment: 4,\n  unpackRowLength: 0,\n  recordError: errorCode => {\n    if (!GL.lastError) {\n      GL.lastError = errorCode;\n    }\n  },\n  getNewId: table => {\n    var ret = GL.counter++;\n    for (var i = table.length; i < ret; i++) {\n      table[i] = null;\n    }\n    return ret;\n  },\n  genObject: (n, buffers, createFunction, objectTable) => {\n    for (var i = 0; i < n; i++) {\n      var buffer = GLctx[createFunction]();\n      var id = buffer && GL.getNewId(objectTable);\n      if (buffer) {\n        buffer.name = id;\n        objectTable[id] = buffer;\n      } else {\n        GL.recordError(1282);\n      }\n      (growMemViews(), HEAP32)[(((buffers) + (i * 4)) >> 2)] = id;\n    }\n  },\n  getSource: (shader, count, string, length) => {\n    var source = \"\";\n    for (var i = 0; i < count; ++i) {\n      var len = length ? (growMemViews(), HEAPU32)[(((length) + (i * 4)) >> 2)] : undefined;\n      source += UTF8ToString((growMemViews(), HEAPU32)[(((string) + (i * 4)) >> 2)], len);\n    }\n    return source;\n  },\n  createContext: (/** @type {HTMLCanvasElement} */ canvas, webGLContextAttributes) => {\n    // BUG: Workaround Safari WebGL issue: After successfully acquiring WebGL\n    // context on a canvas, calling .getContext() will always return that\n    // context independent of which 'webgl' or 'webgl2'\n    // context version was passed. See:\n    //   https://webkit.org/b/222758\n    // and:\n    //   https://github.com/emscripten-core/emscripten/issues/13295.\n    // TODO: Once the bug is fixed and shipped in Safari, adjust the Safari\n    // version field in above check.\n    if (!canvas.getContextSafariWebGL2Fixed) {\n      canvas.getContextSafariWebGL2Fixed = canvas.getContext;\n      /** @type {function(this:HTMLCanvasElement, string, (Object|null)=): (Object|null)} */ function fixedGetContext(ver, attrs) {\n        var gl = canvas.getContextSafariWebGL2Fixed(ver, attrs);\n        return ((ver == \"webgl\") == (gl instanceof WebGLRenderingContext)) ? gl : null;\n      }\n      canvas.getContext = fixedGetContext;\n    }\n    var ctx = canvas.getContext(\"webgl2\", webGLContextAttributes);\n    if (!ctx) return 0;\n    var handle = GL.registerContext(ctx, webGLContextAttributes);\n    return handle;\n  },\n  registerContext: (ctx, webGLContextAttributes) => {\n    // with pthreads a context is a location in memory with some synchronized\n    // data between threads\n    var handle = _malloc(8);\n    (growMemViews(), HEAPU32)[(((handle) + (4)) >> 2)] = _pthread_self();\n    // the thread pointer of the thread that owns the control of the context\n    var context = {\n      handle,\n      attributes: webGLContextAttributes,\n      version: webGLContextAttributes.majorVersion,\n      GLctx: ctx\n    };\n    // Store the created context object so that we can access the context\n    // given a canvas without having to pass the parameters again.\n    if (ctx.canvas) ctx.canvas.GLctxObject = context;\n    GL.contexts[handle] = context;\n    if (typeof webGLContextAttributes.enableExtensionsByDefault == \"undefined\" || webGLContextAttributes.enableExtensionsByDefault) {\n      GL.initExtensions(context);\n    }\n    return handle;\n  },\n  makeContextCurrent: contextHandle => {\n    // Active Emscripten GL layer context object.\n    GL.currentContext = GL.contexts[contextHandle];\n    // Active WebGL context object.\n    Module[\"ctx\"] = GLctx = GL.currentContext?.GLctx;\n    return !(contextHandle && !GLctx);\n  },\n  getContext: contextHandle => GL.contexts[contextHandle],\n  deleteContext: contextHandle => {\n    if (GL.currentContext === GL.contexts[contextHandle]) {\n      GL.currentContext = null;\n    }\n    if (typeof JSEvents == \"object\") {\n      // Release all JS event handlers on the DOM element that the GL context is\n      // associated with since the context is now deleted.\n      JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);\n    }\n    // Make sure the canvas object no longer refers to the context object so\n    // there are no GC surprises.\n    if (GL.contexts[contextHandle]?.GLctx.canvas) {\n      GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined;\n    }\n    _free(GL.contexts[contextHandle].handle);\n    GL.contexts[contextHandle] = null;\n  },\n  initExtensions: context => {\n    // If this function is called without a specific context object, init the\n    // extensions of the currently active context.\n    context ||= GL.currentContext;\n    if (context.initExtensionsDone) return;\n    context.initExtensionsDone = true;\n    var GLctx = context.GLctx;\n    // Detect the presence of a few extensions manually, since the GL interop\n    // layer itself will need to know if they exist.\n    // Extensions that are available in both WebGL 1 and WebGL 2\n    webgl_enable_WEBGL_multi_draw(GLctx);\n    webgl_enable_EXT_polygon_offset_clamp(GLctx);\n    webgl_enable_EXT_clip_control(GLctx);\n    webgl_enable_WEBGL_polygon_mode(GLctx);\n    // Extensions that are available from WebGL >= 2 (no-op if called on a WebGL 1 context active)\n    webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);\n    webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);\n    // On WebGL 2, EXT_disjoint_timer_query is replaced with an alternative\n    // that's based on core APIs, and exposes only the queryCounterEXT()\n    // entrypoint.\n    if (context.version >= 2) {\n      GLctx.disjointTimerQueryExt = GLctx.getExtension(\"EXT_disjoint_timer_query_webgl2\");\n    }\n    // However, Firefox exposes the WebGL 1 version on WebGL 2 as well and\n    // thus we look for the WebGL 1 version again if the WebGL 2 version\n    // isn't present. https://bugzil.la/1328882\n    if (context.version < 2 || !GLctx.disjointTimerQueryExt) {\n      GLctx.disjointTimerQueryExt = GLctx.getExtension(\"EXT_disjoint_timer_query\");\n    }\n    for (var ext of getEmscriptenSupportedExtensions(GLctx)) {\n      // WEBGL_lose_context, WEBGL_debug_renderer_info and WEBGL_debug_shaders\n      // are not enabled by default.\n      if (!ext.includes(\"lose_context\") && !ext.includes(\"debug\")) {\n        // Call .getExtension() to enable that extension permanently.\n        GLctx.getExtension(ext);\n      }\n    }\n  }\n};\n\nvar webglPowerPreferences = [ \"default\", \"low-power\", \"high-performance\" ];\n\nvar findCanvasEventTarget = findEventTarget;\n\nvar _emscripten_webgl_do_create_context = (target, attributes) => {\n  assert(attributes);\n  var attr32 = ((attributes) >> 2);\n  var powerPreference = (growMemViews(), HEAP32)[attr32 + (8 >> 2)];\n  var contextAttributes = {\n    \"alpha\": !!(growMemViews(), HEAP8)[attributes + 0],\n    \"depth\": !!(growMemViews(), HEAP8)[attributes + 1],\n    \"stencil\": !!(growMemViews(), HEAP8)[attributes + 2],\n    \"antialias\": !!(growMemViews(), HEAP8)[attributes + 3],\n    \"premultipliedAlpha\": !!(growMemViews(), HEAP8)[attributes + 4],\n    \"preserveDrawingBuffer\": !!(growMemViews(), HEAP8)[attributes + 5],\n    \"powerPreference\": webglPowerPreferences[powerPreference],\n    \"failIfMajorPerformanceCaveat\": !!(growMemViews(), HEAP8)[attributes + 12],\n    // The following are not predefined WebGL context attributes in the WebGL specification, so the property names can be minified by Closure.\n    majorVersion: (growMemViews(), HEAP32)[attr32 + (16 >> 2)],\n    minorVersion: (growMemViews(), HEAP32)[attr32 + (20 >> 2)],\n    enableExtensionsByDefault: (growMemViews(), HEAP8)[attributes + 24],\n    explicitSwapControl: (growMemViews(), HEAP8)[attributes + 25],\n    proxyContextToMainThread: (growMemViews(), HEAP32)[attr32 + (28 >> 2)],\n    renderViaOffscreenBackBuffer: (growMemViews(), HEAP8)[attributes + 32]\n  };\n  //  TODO: Make these into hard errors at some point in the future\n  if (contextAttributes.majorVersion !== 1 && contextAttributes.majorVersion !== 2) {\n    err(`Invalid WebGL version requested: ${contextAttributes.majorVersion}`);\n  }\n  if (contextAttributes.majorVersion !== 2) {\n    err(\"WebGL 1 requested but only WebGL 2 is supported (MIN_WEBGL_VERSION is 2)\");\n  }\n  var canvas = findCanvasEventTarget(target);\n  if (!canvas) {\n    return 0;\n  }\n  if (contextAttributes.explicitSwapControl) {\n    return 0;\n  }\n  var contextHandle = GL.createContext(canvas, contextAttributes);\n  return contextHandle;\n};\n\n_emscripten_webgl_do_create_context.sig = \"ppp\";\n\nvar _emscripten_webgl_create_context = _emscripten_webgl_do_create_context;\n\n_emscripten_webgl_create_context.sig = \"ppp\";\n\nvar _emscripten_webgl_enable_extension = (contextHandle, extension) => {\n  var context = GL.getContext(contextHandle);\n  var extString = UTF8ToString(extension);\n  if (extString.startsWith(\"GL_\")) extString = extString.slice(3);\n  // Allow enabling extensions both with \"GL_\" prefix and without.\n  // Switch-board that pulls in code for all GL extensions, even if those are not used :/\n  // Build with -sGL_SUPPORT_SIMPLE_ENABLE_EXTENSIONS=0 to avoid this.\n  if (extString == \"WEBGL_draw_instanced_base_vertex_base_instance\") webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);\n  if (extString == \"WEBGL_multi_draw_instanced_base_vertex_base_instance\") webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);\n  if (extString == \"WEBGL_multi_draw\") webgl_enable_WEBGL_multi_draw(GLctx);\n  if (extString == \"EXT_polygon_offset_clamp\") webgl_enable_EXT_polygon_offset_clamp(GLctx);\n  if (extString == \"EXT_clip_control\") webgl_enable_EXT_clip_control(GLctx);\n  if (extString == \"WEBGL_polygon_mode\") webgl_enable_WEBGL_polygon_mode(GLctx);\n  var ext = context.GLctx.getExtension(extString);\n  return !!ext;\n};\n\n_emscripten_webgl_enable_extension.sig = \"ipp\";\n\nvar _emscripten_webgl_get_supported_extensions = () => stringToNewUTF8(GLctx.getSupportedExtensions().join(\" \"));\n\n_emscripten_webgl_get_supported_extensions.sig = \"p\";\n\nvar _emscripten_webgl_make_context_current = contextHandle => {\n  var success = GL.makeContextCurrent(contextHandle);\n  return success ? 0 : -5;\n};\n\n_emscripten_webgl_make_context_current.sig = \"ip\";\n\nvar webSockets = new HandleAllocator;\n\nvar WS = {\n  socketEvent: null,\n  getSocket(socketId) {\n    if (!webSockets.has(socketId)) {\n      return 0;\n    }\n    return webSockets.get(socketId);\n  },\n  getSocketEvent(socketId) {\n    // Singleton event pointer.  Use EmscriptenWebSocketCloseEvent, which is\n    // the largest event struct\n    this.socketEvent ||= _malloc(520);\n    (growMemViews(), HEAPU32)[((this.socketEvent) >> 2)] = socketId;\n    return this.socketEvent;\n  }\n};\n\nfunction _emscripten_websocket_close(socketId, code, reason) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(14, 0, 1, socketId, code, reason);\n  var socket = WS.getSocket(socketId);\n  if (!socket) {\n    return -3;\n  }\n  var reasonStr = reason ? UTF8ToString(reason) : undefined;\n  // According to WebSocket specification, only close codes that are recognized have integer values\n  // 1000-4999, with 3000-3999 and 4000-4999 denoting user-specified close codes:\n  // https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n  // Therefore be careful to call the .close() function with exact number and types of parameters.\n  // Coerce code==0 to undefined, since Wasm->JS call can only marshal integers, and 0 is not allowed.\n  if (reason) socket.close(code || undefined, UTF8ToString(reason)); else if (code) socket.close(code); else socket.close();\n  return 0;\n}\n\n_emscripten_websocket_close.sig = \"iiip\";\n\nfunction _emscripten_websocket_delete(socketId) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(15, 0, 1, socketId);\n  var socket = WS.getSocket(socketId);\n  if (!socket) {\n    return -3;\n  }\n  socket.onopen = socket.onerror = socket.onclose = socket.onmessage = null;\n  webSockets.free(socketId);\n  return 0;\n}\n\n_emscripten_websocket_delete.sig = \"ii\";\n\nfunction _emscripten_websocket_is_supported() {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(16, 0, 1);\n  return typeof WebSocket != \"undefined\";\n}\n\n_emscripten_websocket_is_supported.sig = \"i\";\n\nfunction _emscripten_websocket_new(createAttributes) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(17, 0, 1, createAttributes);\n  if (!globalThis.WebSocket) {\n    return -1;\n  }\n  if (!createAttributes) {\n    return -5;\n  }\n  var url = UTF8ToString((growMemViews(), HEAPU32)[((createAttributes) >> 2)]);\n  var protocols = (growMemViews(), HEAPU32)[(((createAttributes) + (4)) >> 2)];\n  // TODO: Add support for createOnMainThread==false; currently all WebSocket connections are created on the main thread.\n  // var createOnMainThread = HEAP8[createAttributes+2];\n  var socket = protocols ? new WebSocket(url, UTF8ToString(protocols).split(\",\")) : new WebSocket(url);\n  // We always marshal received WebSocket data back to Wasm, so enable receiving the data as arraybuffers for easy marshalling.\n  socket.binaryType = \"arraybuffer\";\n  // TODO: While strictly not necessary, this ID would be good to be unique across all threads to avoid confusion.\n  var socketId = webSockets.allocate(socket);\n  return socketId;\n}\n\n_emscripten_websocket_new.sig = \"ip\";\n\nfunction _emscripten_websocket_send_utf8_text(socketId, textData) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(18, 0, 1, socketId, textData);\n  var socket = WS.getSocket(socketId);\n  if (!socket) {\n    return -3;\n  }\n  var str = UTF8ToString(textData);\n  socket.send(str);\n  return 0;\n}\n\n_emscripten_websocket_send_utf8_text.sig = \"iip\";\n\nfunction _emscripten_websocket_set_onclose_callback_on_thread(socketId, userData, callbackFunc, thread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(19, 0, 1, socketId, userData, callbackFunc, thread);\n  var socket = WS.getSocket(socketId);\n  if (!socket) {\n    return -3;\n  }\n  socket.onclose = e => {\n    var eventPtr = WS.getSocketEvent(socketId);\n    (growMemViews(), HEAP8)[(eventPtr) + (4)] = e.wasClean, (growMemViews(), HEAP16)[(((eventPtr) + (6)) >> 1)] = e.code, \n    stringToUTF8(e.reason, eventPtr + 8, 512);\n    getWasmTableEntry(callbackFunc)(0, eventPtr, userData);\n  };\n  return 0;\n}\n\n_emscripten_websocket_set_onclose_callback_on_thread.sig = \"iippp\";\n\nfunction _emscripten_websocket_set_onerror_callback_on_thread(socketId, userData, callbackFunc, thread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(20, 0, 1, socketId, userData, callbackFunc, thread);\n  var socket = WS.getSocket(socketId);\n  if (!socket) {\n    return -3;\n  }\n  socket.onerror = e => {\n    var eventPtr = WS.getSocketEvent(socketId);\n    getWasmTableEntry(callbackFunc)(0, eventPtr, userData);\n  };\n  return 0;\n}\n\n_emscripten_websocket_set_onerror_callback_on_thread.sig = \"iippp\";\n\nfunction _emscripten_websocket_set_onmessage_callback_on_thread(socketId, userData, callbackFunc, thread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(21, 0, 1, socketId, userData, callbackFunc, thread);\n  var socket = WS.getSocket(socketId);\n  if (!socket) {\n    return -3;\n  }\n  socket.onmessage = e => {\n    var isText = typeof e.data == \"string\";\n    if (isText) {\n      var buf = stringToNewUTF8(e.data);\n      var len = lengthBytesUTF8(e.data) + 1;\n    } else {\n      var len = e.data.byteLength;\n      var buf = _malloc(len);\n      (growMemViews(), HEAP8).set(new Uint8Array(e.data), buf);\n    }\n    var eventPtr = WS.getSocketEvent(socketId);\n    (growMemViews(), HEAPU32)[(((eventPtr) + (4)) >> 2)] = buf, (growMemViews(), HEAP32)[(((eventPtr) + (8)) >> 2)] = len, \n    (growMemViews(), HEAP8)[(eventPtr) + (12)] = isText, getWasmTableEntry(callbackFunc)(0, eventPtr, userData);\n    _free(buf);\n  };\n  return 0;\n}\n\n_emscripten_websocket_set_onmessage_callback_on_thread.sig = \"iippp\";\n\nfunction _emscripten_websocket_set_onopen_callback_on_thread(socketId, userData, callbackFunc, thread) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(22, 0, 1, socketId, userData, callbackFunc, thread);\n  // TODO:\n  //    if (thread == 2 ||\n  //      (thread == _pthread_self()) return emscripten_websocket_set_onopen_callback_on_calling_thread(socketId, userData, callbackFunc);\n  var socket = WS.getSocket(socketId);\n  if (!socket) {\n    return -3;\n  }\n  socket.onopen = e => {\n    var eventPtr = WS.getSocketEvent(socketId);\n    getWasmTableEntry(callbackFunc)(0, eventPtr, userData);\n  };\n  return 0;\n}\n\n_emscripten_websocket_set_onopen_callback_on_thread.sig = \"iippp\";\n\nvar ENV = {};\n\nvar getExecutableName = () => thisProgram;\n\nvar getEnvStrings = () => {\n  if (!getEnvStrings.strings) {\n    // Default values.\n    var lang = (globalThis.navigator?.language ?? \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n    var env = {\n      \"USER\": \"web_user\",\n      \"LOGNAME\": \"web_user\",\n      \"PATH\": \"/\",\n      \"PWD\": \"/\",\n      \"HOME\": \"/home/web_user\",\n      \"LANG\": lang,\n      \"_\": getExecutableName()\n    };\n    // Apply the user-provided values, if any.\n    for (var x in ENV) {\n      // x is a key in ENV; if ENV[x] is undefined, that means it was\n      // explicitly set to be so. We allow user code to do that to\n      // force variables with default values to remain unset.\n      if (ENV[x] === undefined) delete env[x]; else env[x] = ENV[x];\n    }\n    var strings = [];\n    for (var x in env) {\n      strings.push(`${x}=${env[x]}`);\n    }\n    getEnvStrings.strings = strings;\n  }\n  return getEnvStrings.strings;\n};\n\nfunction _environ_get(__environ, environ_buf) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(23, 0, 1, __environ, environ_buf);\n  var bufSize = 0;\n  var envp = 0;\n  for (var string of getEnvStrings()) {\n    var ptr = environ_buf + bufSize;\n    (growMemViews(), HEAPU32)[(((__environ) + (envp)) >> 2)] = ptr;\n    bufSize += stringToUTF8(string, ptr, Infinity) + 1;\n    envp += 4;\n  }\n  return 0;\n}\n\n_environ_get.sig = \"ipp\";\n\nfunction _environ_sizes_get(penviron_count, penviron_buf_size) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(24, 0, 1, penviron_count, penviron_buf_size);\n  var strings = getEnvStrings();\n  (growMemViews(), HEAPU32)[((penviron_count) >> 2)] = strings.length;\n  var bufSize = 0;\n  for (var string of strings) {\n    bufSize += lengthBytesUTF8(string) + 1;\n  }\n  (growMemViews(), HEAPU32)[((penviron_buf_size) >> 2)] = bufSize;\n  return 0;\n}\n\n_environ_sizes_get.sig = \"ipp\";\n\nfunction _ff_aac_adjust_common_ltp(...args) {\n  if (!wasmImports[\"ff_aac_adjust_common_ltp\"] || wasmImports[\"ff_aac_adjust_common_ltp\"].stub) abort(\"external symbol 'ff_aac_adjust_common_ltp' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_adjust_common_ltp\"](...args);\n}\n\n_ff_aac_adjust_common_ltp.stub = true;\n\nfunction _ff_aac_adjust_common_pred(...args) {\n  if (!wasmImports[\"ff_aac_adjust_common_pred\"] || wasmImports[\"ff_aac_adjust_common_pred\"].stub) abort(\"external symbol 'ff_aac_adjust_common_pred' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_adjust_common_pred\"](...args);\n}\n\n_ff_aac_adjust_common_pred.stub = true;\n\nfunction _ff_aac_apply_main_pred(...args) {\n  if (!wasmImports[\"ff_aac_apply_main_pred\"] || wasmImports[\"ff_aac_apply_main_pred\"].stub) abort(\"external symbol 'ff_aac_apply_main_pred' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_apply_main_pred\"](...args);\n}\n\n_ff_aac_apply_main_pred.stub = true;\n\nfunction _ff_aac_apply_tns(...args) {\n  if (!wasmImports[\"ff_aac_apply_tns\"] || wasmImports[\"ff_aac_apply_tns\"].stub) abort(\"external symbol 'ff_aac_apply_tns' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_apply_tns\"](...args);\n}\n\n_ff_aac_apply_tns.stub = true;\n\nfunction _ff_aac_codebook_vector_idx(...args) {\n  if (!wasmImports[\"ff_aac_codebook_vector_idx\"] || wasmImports[\"ff_aac_codebook_vector_idx\"].stub) abort(\"external symbol 'ff_aac_codebook_vector_idx' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_codebook_vector_idx\"](...args);\n}\n\n_ff_aac_codebook_vector_idx.stub = true;\n\nfunction _ff_aac_codebook_vector_vals(...args) {\n  if (!wasmImports[\"ff_aac_codebook_vector_vals\"] || wasmImports[\"ff_aac_codebook_vector_vals\"].stub) abort(\"external symbol 'ff_aac_codebook_vector_vals' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_codebook_vector_vals\"](...args);\n}\n\n_ff_aac_codebook_vector_vals.stub = true;\n\nfunction _ff_aac_codebook_vectors(...args) {\n  if (!wasmImports[\"ff_aac_codebook_vectors\"] || wasmImports[\"ff_aac_codebook_vectors\"].stub) abort(\"external symbol 'ff_aac_codebook_vectors' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_codebook_vectors\"](...args);\n}\n\n_ff_aac_codebook_vectors.stub = true;\n\nfunction _ff_aac_coders(...args) {\n  if (!wasmImports[\"ff_aac_coders\"] || wasmImports[\"ff_aac_coders\"].stub) abort(\"external symbol 'ff_aac_coders' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_coders\"](...args);\n}\n\n_ff_aac_coders.stub = true;\n\nfunction _ff_aac_decoder(...args) {\n  if (!wasmImports[\"ff_aac_decoder\"] || wasmImports[\"ff_aac_decoder\"].stub) abort(\"external symbol 'ff_aac_decoder' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_decoder\"](...args);\n}\n\n_ff_aac_decoder.stub = true;\n\nfunction _ff_aac_eld_window_480(...args) {\n  if (!wasmImports[\"ff_aac_eld_window_480\"] || wasmImports[\"ff_aac_eld_window_480\"].stub) abort(\"external symbol 'ff_aac_eld_window_480' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_eld_window_480\"](...args);\n}\n\n_ff_aac_eld_window_480.stub = true;\n\nfunction _ff_aac_eld_window_512(...args) {\n  if (!wasmImports[\"ff_aac_eld_window_512\"] || wasmImports[\"ff_aac_eld_window_512\"].stub) abort(\"external symbol 'ff_aac_eld_window_512' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_eld_window_512\"](...args);\n}\n\n_ff_aac_eld_window_512.stub = true;\n\nfunction _ff_aac_encode_ltp_info(...args) {\n  if (!wasmImports[\"ff_aac_encode_ltp_info\"] || wasmImports[\"ff_aac_encode_ltp_info\"].stub) abort(\"external symbol 'ff_aac_encode_ltp_info' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_encode_ltp_info\"](...args);\n}\n\n_ff_aac_encode_ltp_info.stub = true;\n\nfunction _ff_aac_encode_main_pred(...args) {\n  if (!wasmImports[\"ff_aac_encode_main_pred\"] || wasmImports[\"ff_aac_encode_main_pred\"].stub) abort(\"external symbol 'ff_aac_encode_main_pred' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_encode_main_pred\"](...args);\n}\n\n_ff_aac_encode_main_pred.stub = true;\n\nfunction _ff_aac_encode_tns_info(...args) {\n  if (!wasmImports[\"ff_aac_encode_tns_info\"] || wasmImports[\"ff_aac_encode_tns_info\"].stub) abort(\"external symbol 'ff_aac_encode_tns_info' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_encode_tns_info\"](...args);\n}\n\n_ff_aac_encode_tns_info.stub = true;\n\nfunction _ff_aac_encoder(...args) {\n  if (!wasmImports[\"ff_aac_encoder\"] || wasmImports[\"ff_aac_encoder\"].stub) abort(\"external symbol 'ff_aac_encoder' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_encoder\"](...args);\n}\n\n_ff_aac_encoder.stub = true;\n\nfunction _ff_aac_kbd_long_1024(...args) {\n  if (!wasmImports[\"ff_aac_kbd_long_1024\"] || wasmImports[\"ff_aac_kbd_long_1024\"].stub) abort(\"external symbol 'ff_aac_kbd_long_1024' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_kbd_long_1024\"](...args);\n}\n\n_ff_aac_kbd_long_1024.stub = true;\n\nfunction _ff_aac_kbd_short_128(...args) {\n  if (!wasmImports[\"ff_aac_kbd_short_128\"] || wasmImports[\"ff_aac_kbd_short_128\"].stub) abort(\"external symbol 'ff_aac_kbd_short_128' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_kbd_short_128\"](...args);\n}\n\n_ff_aac_kbd_short_128.stub = true;\n\nfunction _ff_aac_ltp_insert_new_frame(...args) {\n  if (!wasmImports[\"ff_aac_ltp_insert_new_frame\"] || wasmImports[\"ff_aac_ltp_insert_new_frame\"].stub) abort(\"external symbol 'ff_aac_ltp_insert_new_frame' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_ltp_insert_new_frame\"](...args);\n}\n\n_ff_aac_ltp_insert_new_frame.stub = true;\n\nfunction _ff_aac_num_swb_1024(...args) {\n  if (!wasmImports[\"ff_aac_num_swb_1024\"] || wasmImports[\"ff_aac_num_swb_1024\"].stub) abort(\"external symbol 'ff_aac_num_swb_1024' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_num_swb_1024\"](...args);\n}\n\n_ff_aac_num_swb_1024.stub = true;\n\nfunction _ff_aac_num_swb_120(...args) {\n  if (!wasmImports[\"ff_aac_num_swb_120\"] || wasmImports[\"ff_aac_num_swb_120\"].stub) abort(\"external symbol 'ff_aac_num_swb_120' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_num_swb_120\"](...args);\n}\n\n_ff_aac_num_swb_120.stub = true;\n\nfunction _ff_aac_num_swb_128(...args) {\n  if (!wasmImports[\"ff_aac_num_swb_128\"] || wasmImports[\"ff_aac_num_swb_128\"].stub) abort(\"external symbol 'ff_aac_num_swb_128' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_num_swb_128\"](...args);\n}\n\n_ff_aac_num_swb_128.stub = true;\n\nfunction _ff_aac_num_swb_480(...args) {\n  if (!wasmImports[\"ff_aac_num_swb_480\"] || wasmImports[\"ff_aac_num_swb_480\"].stub) abort(\"external symbol 'ff_aac_num_swb_480' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_num_swb_480\"](...args);\n}\n\n_ff_aac_num_swb_480.stub = true;\n\nfunction _ff_aac_num_swb_512(...args) {\n  if (!wasmImports[\"ff_aac_num_swb_512\"] || wasmImports[\"ff_aac_num_swb_512\"].stub) abort(\"external symbol 'ff_aac_num_swb_512' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_num_swb_512\"](...args);\n}\n\n_ff_aac_num_swb_512.stub = true;\n\nfunction _ff_aac_num_swb_960(...args) {\n  if (!wasmImports[\"ff_aac_num_swb_960\"] || wasmImports[\"ff_aac_num_swb_960\"].stub) abort(\"external symbol 'ff_aac_num_swb_960' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_num_swb_960\"](...args);\n}\n\n_ff_aac_num_swb_960.stub = true;\n\nfunction _ff_aac_pow2sf_tab(...args) {\n  if (!wasmImports[\"ff_aac_pow2sf_tab\"] || wasmImports[\"ff_aac_pow2sf_tab\"].stub) abort(\"external symbol 'ff_aac_pow2sf_tab' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_pow2sf_tab\"](...args);\n}\n\n_ff_aac_pow2sf_tab.stub = true;\n\nfunction _ff_aac_pow34sf_tab(...args) {\n  if (!wasmImports[\"ff_aac_pow34sf_tab\"] || wasmImports[\"ff_aac_pow34sf_tab\"].stub) abort(\"external symbol 'ff_aac_pow34sf_tab' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_pow34sf_tab\"](...args);\n}\n\n_ff_aac_pow34sf_tab.stub = true;\n\nfunction _ff_aac_pred_sfb_max(...args) {\n  if (!wasmImports[\"ff_aac_pred_sfb_max\"] || wasmImports[\"ff_aac_pred_sfb_max\"].stub) abort(\"external symbol 'ff_aac_pred_sfb_max' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_pred_sfb_max\"](...args);\n}\n\n_ff_aac_pred_sfb_max.stub = true;\n\nfunction _ff_aac_psy_model(...args) {\n  if (!wasmImports[\"ff_aac_psy_model\"] || wasmImports[\"ff_aac_psy_model\"].stub) abort(\"external symbol 'ff_aac_psy_model' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_psy_model\"](...args);\n}\n\n_ff_aac_psy_model.stub = true;\n\nfunction _ff_aac_scalefactor_bits(...args) {\n  if (!wasmImports[\"ff_aac_scalefactor_bits\"] || wasmImports[\"ff_aac_scalefactor_bits\"].stub) abort(\"external symbol 'ff_aac_scalefactor_bits' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_scalefactor_bits\"](...args);\n}\n\n_ff_aac_scalefactor_bits.stub = true;\n\nfunction _ff_aac_scalefactor_code(...args) {\n  if (!wasmImports[\"ff_aac_scalefactor_code\"] || wasmImports[\"ff_aac_scalefactor_code\"].stub) abort(\"external symbol 'ff_aac_scalefactor_code' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_scalefactor_code\"](...args);\n}\n\n_ff_aac_scalefactor_code.stub = true;\n\nfunction _ff_aac_search_for_is(...args) {\n  if (!wasmImports[\"ff_aac_search_for_is\"] || wasmImports[\"ff_aac_search_for_is\"].stub) abort(\"external symbol 'ff_aac_search_for_is' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_search_for_is\"](...args);\n}\n\n_ff_aac_search_for_is.stub = true;\n\nfunction _ff_aac_search_for_ltp(...args) {\n  if (!wasmImports[\"ff_aac_search_for_ltp\"] || wasmImports[\"ff_aac_search_for_ltp\"].stub) abort(\"external symbol 'ff_aac_search_for_ltp' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_search_for_ltp\"](...args);\n}\n\n_ff_aac_search_for_ltp.stub = true;\n\nfunction _ff_aac_search_for_pred(...args) {\n  if (!wasmImports[\"ff_aac_search_for_pred\"] || wasmImports[\"ff_aac_search_for_pred\"].stub) abort(\"external symbol 'ff_aac_search_for_pred' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_search_for_pred\"](...args);\n}\n\n_ff_aac_search_for_pred.stub = true;\n\nfunction _ff_aac_search_for_tns(...args) {\n  if (!wasmImports[\"ff_aac_search_for_tns\"] || wasmImports[\"ff_aac_search_for_tns\"].stub) abort(\"external symbol 'ff_aac_search_for_tns' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_search_for_tns\"](...args);\n}\n\n_ff_aac_search_for_tns.stub = true;\n\nfunction _ff_aac_spectral_bits(...args) {\n  if (!wasmImports[\"ff_aac_spectral_bits\"] || wasmImports[\"ff_aac_spectral_bits\"].stub) abort(\"external symbol 'ff_aac_spectral_bits' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_spectral_bits\"](...args);\n}\n\n_ff_aac_spectral_bits.stub = true;\n\nfunction _ff_aac_spectral_codes(...args) {\n  if (!wasmImports[\"ff_aac_spectral_codes\"] || wasmImports[\"ff_aac_spectral_codes\"].stub) abort(\"external symbol 'ff_aac_spectral_codes' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_spectral_codes\"](...args);\n}\n\n_ff_aac_spectral_codes.stub = true;\n\nfunction _ff_aac_spectral_sizes(...args) {\n  if (!wasmImports[\"ff_aac_spectral_sizes\"] || wasmImports[\"ff_aac_spectral_sizes\"].stub) abort(\"external symbol 'ff_aac_spectral_sizes' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_spectral_sizes\"](...args);\n}\n\n_ff_aac_spectral_sizes.stub = true;\n\nfunction _ff_aac_swb_size_1024(...args) {\n  if (!wasmImports[\"ff_aac_swb_size_1024\"] || wasmImports[\"ff_aac_swb_size_1024\"].stub) abort(\"external symbol 'ff_aac_swb_size_1024' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_swb_size_1024\"](...args);\n}\n\n_ff_aac_swb_size_1024.stub = true;\n\nfunction _ff_aac_swb_size_1024_len(...args) {\n  if (!wasmImports[\"ff_aac_swb_size_1024_len\"] || wasmImports[\"ff_aac_swb_size_1024_len\"].stub) abort(\"external symbol 'ff_aac_swb_size_1024_len' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_swb_size_1024_len\"](...args);\n}\n\n_ff_aac_swb_size_1024_len.stub = true;\n\nfunction _ff_aac_swb_size_128(...args) {\n  if (!wasmImports[\"ff_aac_swb_size_128\"] || wasmImports[\"ff_aac_swb_size_128\"].stub) abort(\"external symbol 'ff_aac_swb_size_128' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_swb_size_128\"](...args);\n}\n\n_ff_aac_swb_size_128.stub = true;\n\nfunction _ff_aac_swb_size_128_len(...args) {\n  if (!wasmImports[\"ff_aac_swb_size_128_len\"] || wasmImports[\"ff_aac_swb_size_128_len\"].stub) abort(\"external symbol 'ff_aac_swb_size_128_len' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_swb_size_128_len\"](...args);\n}\n\n_ff_aac_swb_size_128_len.stub = true;\n\nfunction _ff_aac_update_ltp(...args) {\n  if (!wasmImports[\"ff_aac_update_ltp\"] || wasmImports[\"ff_aac_update_ltp\"].stub) abort(\"external symbol 'ff_aac_update_ltp' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_aac_update_ltp\"](...args);\n}\n\n_ff_aac_update_ltp.stub = true;\n\nfunction _ff_ac3_channel_layout_tab(...args) {\n  if (!wasmImports[\"ff_ac3_channel_layout_tab\"] || wasmImports[\"ff_ac3_channel_layout_tab\"].stub) abort(\"external symbol 'ff_ac3_channel_layout_tab' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_ac3_channel_layout_tab\"](...args);\n}\n\n_ff_ac3_channel_layout_tab.stub = true;\n\nfunction _ff_avio_class(...args) {\n  if (!wasmImports[\"ff_avio_class\"] || wasmImports[\"ff_avio_class\"].stub) abort(\"external symbol 'ff_avio_class' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_avio_class\"](...args);\n}\n\n_ff_avio_class.stub = true;\n\nfunction _ff_bsf_child_class_iterate(...args) {\n  if (!wasmImports[\"ff_bsf_child_class_iterate\"] || wasmImports[\"ff_bsf_child_class_iterate\"].stub) abort(\"external symbol 'ff_bsf_child_class_iterate' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_bsf_child_class_iterate\"](...args);\n}\n\n_ff_bsf_child_class_iterate.stub = true;\n\nfunction _ff_cbrt_tab(...args) {\n  if (!wasmImports[\"ff_cbrt_tab\"] || wasmImports[\"ff_cbrt_tab\"].stub) abort(\"external symbol 'ff_cbrt_tab' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cbrt_tab\"](...args);\n}\n\n_ff_cbrt_tab.stub = true;\n\nfunction _ff_codec_bmp_tags(...args) {\n  if (!wasmImports[\"ff_codec_bmp_tags\"] || wasmImports[\"ff_codec_bmp_tags\"].stub) abort(\"external symbol 'ff_codec_bmp_tags' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_codec_bmp_tags\"](...args);\n}\n\n_ff_codec_bmp_tags.stub = true;\n\nfunction _ff_codec_movaudio_tags(...args) {\n  if (!wasmImports[\"ff_codec_movaudio_tags\"] || wasmImports[\"ff_codec_movaudio_tags\"].stub) abort(\"external symbol 'ff_codec_movaudio_tags' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_codec_movaudio_tags\"](...args);\n}\n\n_ff_codec_movaudio_tags.stub = true;\n\nfunction _ff_codec_movdata_tags(...args) {\n  if (!wasmImports[\"ff_codec_movdata_tags\"] || wasmImports[\"ff_codec_movdata_tags\"].stub) abort(\"external symbol 'ff_codec_movdata_tags' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_codec_movdata_tags\"](...args);\n}\n\n_ff_codec_movdata_tags.stub = true;\n\nfunction _ff_codec_movsubtitle_tags(...args) {\n  if (!wasmImports[\"ff_codec_movsubtitle_tags\"] || wasmImports[\"ff_codec_movsubtitle_tags\"].stub) abort(\"external symbol 'ff_codec_movsubtitle_tags' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_codec_movsubtitle_tags\"](...args);\n}\n\n_ff_codec_movsubtitle_tags.stub = true;\n\nfunction _ff_codec_movvideo_tags(...args) {\n  if (!wasmImports[\"ff_codec_movvideo_tags\"] || wasmImports[\"ff_codec_movvideo_tags\"].stub) abort(\"external symbol 'ff_codec_movvideo_tags' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_codec_movvideo_tags\"](...args);\n}\n\n_ff_codec_movvideo_tags.stub = true;\n\nfunction _ff_codec_wav_guids(...args) {\n  if (!wasmImports[\"ff_codec_wav_guids\"] || wasmImports[\"ff_codec_wav_guids\"].stub) abort(\"external symbol 'ff_codec_wav_guids' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_codec_wav_guids\"](...args);\n}\n\n_ff_codec_wav_guids.stub = true;\n\nfunction _ff_codec_wav_tags(...args) {\n  if (!wasmImports[\"ff_codec_wav_tags\"] || wasmImports[\"ff_codec_wav_tags\"].stub) abort(\"external symbol 'ff_codec_wav_tags' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_codec_wav_tags\"](...args);\n}\n\n_ff_codec_wav_tags.stub = true;\n\nfunction _ff_cos_1024(...args) {\n  if (!wasmImports[\"ff_cos_1024\"] || wasmImports[\"ff_cos_1024\"].stub) abort(\"external symbol 'ff_cos_1024' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_1024\"](...args);\n}\n\n_ff_cos_1024.stub = true;\n\nfunction _ff_cos_128(...args) {\n  if (!wasmImports[\"ff_cos_128\"] || wasmImports[\"ff_cos_128\"].stub) abort(\"external symbol 'ff_cos_128' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_128\"](...args);\n}\n\n_ff_cos_128.stub = true;\n\nfunction _ff_cos_131072(...args) {\n  if (!wasmImports[\"ff_cos_131072\"] || wasmImports[\"ff_cos_131072\"].stub) abort(\"external symbol 'ff_cos_131072' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_131072\"](...args);\n}\n\n_ff_cos_131072.stub = true;\n\nfunction _ff_cos_16(...args) {\n  if (!wasmImports[\"ff_cos_16\"] || wasmImports[\"ff_cos_16\"].stub) abort(\"external symbol 'ff_cos_16' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_16\"](...args);\n}\n\n_ff_cos_16.stub = true;\n\nfunction _ff_cos_16384(...args) {\n  if (!wasmImports[\"ff_cos_16384\"] || wasmImports[\"ff_cos_16384\"].stub) abort(\"external symbol 'ff_cos_16384' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_16384\"](...args);\n}\n\n_ff_cos_16384.stub = true;\n\nfunction _ff_cos_2048(...args) {\n  if (!wasmImports[\"ff_cos_2048\"] || wasmImports[\"ff_cos_2048\"].stub) abort(\"external symbol 'ff_cos_2048' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_2048\"](...args);\n}\n\n_ff_cos_2048.stub = true;\n\nfunction _ff_cos_256(...args) {\n  if (!wasmImports[\"ff_cos_256\"] || wasmImports[\"ff_cos_256\"].stub) abort(\"external symbol 'ff_cos_256' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_256\"](...args);\n}\n\n_ff_cos_256.stub = true;\n\nfunction _ff_cos_32(...args) {\n  if (!wasmImports[\"ff_cos_32\"] || wasmImports[\"ff_cos_32\"].stub) abort(\"external symbol 'ff_cos_32' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_32\"](...args);\n}\n\n_ff_cos_32.stub = true;\n\nfunction _ff_cos_32768(...args) {\n  if (!wasmImports[\"ff_cos_32768\"] || wasmImports[\"ff_cos_32768\"].stub) abort(\"external symbol 'ff_cos_32768' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_32768\"](...args);\n}\n\n_ff_cos_32768.stub = true;\n\nfunction _ff_cos_4096(...args) {\n  if (!wasmImports[\"ff_cos_4096\"] || wasmImports[\"ff_cos_4096\"].stub) abort(\"external symbol 'ff_cos_4096' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_4096\"](...args);\n}\n\n_ff_cos_4096.stub = true;\n\nfunction _ff_cos_512(...args) {\n  if (!wasmImports[\"ff_cos_512\"] || wasmImports[\"ff_cos_512\"].stub) abort(\"external symbol 'ff_cos_512' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_512\"](...args);\n}\n\n_ff_cos_512.stub = true;\n\nfunction _ff_cos_64(...args) {\n  if (!wasmImports[\"ff_cos_64\"] || wasmImports[\"ff_cos_64\"].stub) abort(\"external symbol 'ff_cos_64' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_64\"](...args);\n}\n\n_ff_cos_64.stub = true;\n\nfunction _ff_cos_65536(...args) {\n  if (!wasmImports[\"ff_cos_65536\"] || wasmImports[\"ff_cos_65536\"].stub) abort(\"external symbol 'ff_cos_65536' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_65536\"](...args);\n}\n\n_ff_cos_65536.stub = true;\n\nfunction _ff_cos_8192(...args) {\n  if (!wasmImports[\"ff_cos_8192\"] || wasmImports[\"ff_cos_8192\"].stub) abort(\"external symbol 'ff_cos_8192' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_8192\"](...args);\n}\n\n_ff_cos_8192.stub = true;\n\nfunction _ff_cos_tabs(...args) {\n  if (!wasmImports[\"ff_cos_tabs\"] || wasmImports[\"ff_cos_tabs\"].stub) abort(\"external symbol 'ff_cos_tabs' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_cos_tabs\"](...args);\n}\n\n_ff_cos_tabs.stub = true;\n\nfunction _ff_crop_tab(...args) {\n  if (!wasmImports[\"ff_crop_tab\"] || wasmImports[\"ff_crop_tab\"].stub) abort(\"external symbol 'ff_crop_tab' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_crop_tab\"](...args);\n}\n\n_ff_crop_tab.stub = true;\n\nfunction _ff_dither_2x2_4(...args) {\n  if (!wasmImports[\"ff_dither_2x2_4\"] || wasmImports[\"ff_dither_2x2_4\"].stub) abort(\"external symbol 'ff_dither_2x2_4' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_dither_2x2_4\"](...args);\n}\n\n_ff_dither_2x2_4.stub = true;\n\nfunction _ff_dither_2x2_8(...args) {\n  if (!wasmImports[\"ff_dither_2x2_8\"] || wasmImports[\"ff_dither_2x2_8\"].stub) abort(\"external symbol 'ff_dither_2x2_8' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_dither_2x2_8\"](...args);\n}\n\n_ff_dither_2x2_8.stub = true;\n\nfunction _ff_dither_4x4_16(...args) {\n  if (!wasmImports[\"ff_dither_4x4_16\"] || wasmImports[\"ff_dither_4x4_16\"].stub) abort(\"external symbol 'ff_dither_4x4_16' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_dither_4x4_16\"](...args);\n}\n\n_ff_dither_4x4_16.stub = true;\n\nfunction _ff_dither_8x8_128(...args) {\n  if (!wasmImports[\"ff_dither_8x8_128\"] || wasmImports[\"ff_dither_8x8_128\"].stub) abort(\"external symbol 'ff_dither_8x8_128' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_dither_8x8_128\"](...args);\n}\n\n_ff_dither_8x8_128.stub = true;\n\nfunction _ff_dither_8x8_220(...args) {\n  if (!wasmImports[\"ff_dither_8x8_220\"] || wasmImports[\"ff_dither_8x8_220\"].stub) abort(\"external symbol 'ff_dither_8x8_220' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_dither_8x8_220\"](...args);\n}\n\n_ff_dither_8x8_220.stub = true;\n\nfunction _ff_dither_8x8_32(...args) {\n  if (!wasmImports[\"ff_dither_8x8_32\"] || wasmImports[\"ff_dither_8x8_32\"].stub) abort(\"external symbol 'ff_dither_8x8_32' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_dither_8x8_32\"](...args);\n}\n\n_ff_dither_8x8_32.stub = true;\n\nfunction _ff_dither_8x8_73(...args) {\n  if (!wasmImports[\"ff_dither_8x8_73\"] || wasmImports[\"ff_dither_8x8_73\"].stub) abort(\"external symbol 'ff_dither_8x8_73' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_dither_8x8_73\"](...args);\n}\n\n_ff_dither_8x8_73.stub = true;\n\nfunction _ff_emulated_edge_mc_8(...args) {\n  if (!wasmImports[\"ff_emulated_edge_mc_8\"] || wasmImports[\"ff_emulated_edge_mc_8\"].stub) abort(\"external symbol 'ff_emulated_edge_mc_8' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_emulated_edge_mc_8\"](...args);\n}\n\n_ff_emulated_edge_mc_8.stub = true;\n\nfunction _ff_file_protocol(...args) {\n  if (!wasmImports[\"ff_file_protocol\"] || wasmImports[\"ff_file_protocol\"].stub) abort(\"external symbol 'ff_file_protocol' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_file_protocol\"](...args);\n}\n\n_ff_file_protocol.stub = true;\n\nfunction _ff_format_io_close_default(...args) {\n  if (!wasmImports[\"ff_format_io_close_default\"] || wasmImports[\"ff_format_io_close_default\"].stub) abort(\"external symbol 'ff_format_io_close_default' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_format_io_close_default\"](...args);\n}\n\n_ff_format_io_close_default.stub = true;\n\nfunction _ff_golomb_vlc_len(...args) {\n  if (!wasmImports[\"ff_golomb_vlc_len\"] || wasmImports[\"ff_golomb_vlc_len\"].stub) abort(\"external symbol 'ff_golomb_vlc_len' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_golomb_vlc_len\"](...args);\n}\n\n_ff_golomb_vlc_len.stub = true;\n\nfunction _ff_h264_b_mb_type_info(...args) {\n  if (!wasmImports[\"ff_h264_b_mb_type_info\"] || wasmImports[\"ff_h264_b_mb_type_info\"].stub) abort(\"external symbol 'ff_h264_b_mb_type_info' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_b_mb_type_info\"](...args);\n}\n\n_ff_h264_b_mb_type_info.stub = true;\n\nfunction _ff_h264_b_sub_mb_type_info(...args) {\n  if (!wasmImports[\"ff_h264_b_sub_mb_type_info\"] || wasmImports[\"ff_h264_b_sub_mb_type_info\"].stub) abort(\"external symbol 'ff_h264_b_sub_mb_type_info' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_b_sub_mb_type_info\"](...args);\n}\n\n_ff_h264_b_sub_mb_type_info.stub = true;\n\nfunction _ff_h264_cabac_tables(...args) {\n  if (!wasmImports[\"ff_h264_cabac_tables\"] || wasmImports[\"ff_h264_cabac_tables\"].stub) abort(\"external symbol 'ff_h264_cabac_tables' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_cabac_tables\"](...args);\n}\n\n_ff_h264_cabac_tables.stub = true;\n\nfunction _ff_h264_chroma422_dc_dequant_idct_10_c(...args) {\n  if (!wasmImports[\"ff_h264_chroma422_dc_dequant_idct_10_c\"] || wasmImports[\"ff_h264_chroma422_dc_dequant_idct_10_c\"].stub) abort(\"external symbol 'ff_h264_chroma422_dc_dequant_idct_10_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma422_dc_dequant_idct_10_c\"](...args);\n}\n\n_ff_h264_chroma422_dc_dequant_idct_10_c.stub = true;\n\nfunction _ff_h264_chroma422_dc_dequant_idct_12_c(...args) {\n  if (!wasmImports[\"ff_h264_chroma422_dc_dequant_idct_12_c\"] || wasmImports[\"ff_h264_chroma422_dc_dequant_idct_12_c\"].stub) abort(\"external symbol 'ff_h264_chroma422_dc_dequant_idct_12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma422_dc_dequant_idct_12_c\"](...args);\n}\n\n_ff_h264_chroma422_dc_dequant_idct_12_c.stub = true;\n\nfunction _ff_h264_chroma422_dc_dequant_idct_14_c(...args) {\n  if (!wasmImports[\"ff_h264_chroma422_dc_dequant_idct_14_c\"] || wasmImports[\"ff_h264_chroma422_dc_dequant_idct_14_c\"].stub) abort(\"external symbol 'ff_h264_chroma422_dc_dequant_idct_14_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma422_dc_dequant_idct_14_c\"](...args);\n}\n\n_ff_h264_chroma422_dc_dequant_idct_14_c.stub = true;\n\nfunction _ff_h264_chroma422_dc_dequant_idct_8_c(...args) {\n  if (!wasmImports[\"ff_h264_chroma422_dc_dequant_idct_8_c\"] || wasmImports[\"ff_h264_chroma422_dc_dequant_idct_8_c\"].stub) abort(\"external symbol 'ff_h264_chroma422_dc_dequant_idct_8_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma422_dc_dequant_idct_8_c\"](...args);\n}\n\n_ff_h264_chroma422_dc_dequant_idct_8_c.stub = true;\n\nfunction _ff_h264_chroma422_dc_dequant_idct_9_c(...args) {\n  if (!wasmImports[\"ff_h264_chroma422_dc_dequant_idct_9_c\"] || wasmImports[\"ff_h264_chroma422_dc_dequant_idct_9_c\"].stub) abort(\"external symbol 'ff_h264_chroma422_dc_dequant_idct_9_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma422_dc_dequant_idct_9_c\"](...args);\n}\n\n_ff_h264_chroma422_dc_dequant_idct_9_c.stub = true;\n\nfunction _ff_h264_chroma422_dc_scan(...args) {\n  if (!wasmImports[\"ff_h264_chroma422_dc_scan\"] || wasmImports[\"ff_h264_chroma422_dc_scan\"].stub) abort(\"external symbol 'ff_h264_chroma422_dc_scan' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma422_dc_scan\"](...args);\n}\n\n_ff_h264_chroma422_dc_scan.stub = true;\n\nfunction _ff_h264_chroma_dc_dequant_idct_10_c(...args) {\n  if (!wasmImports[\"ff_h264_chroma_dc_dequant_idct_10_c\"] || wasmImports[\"ff_h264_chroma_dc_dequant_idct_10_c\"].stub) abort(\"external symbol 'ff_h264_chroma_dc_dequant_idct_10_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma_dc_dequant_idct_10_c\"](...args);\n}\n\n_ff_h264_chroma_dc_dequant_idct_10_c.stub = true;\n\nfunction _ff_h264_chroma_dc_dequant_idct_12_c(...args) {\n  if (!wasmImports[\"ff_h264_chroma_dc_dequant_idct_12_c\"] || wasmImports[\"ff_h264_chroma_dc_dequant_idct_12_c\"].stub) abort(\"external symbol 'ff_h264_chroma_dc_dequant_idct_12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma_dc_dequant_idct_12_c\"](...args);\n}\n\n_ff_h264_chroma_dc_dequant_idct_12_c.stub = true;\n\nfunction _ff_h264_chroma_dc_dequant_idct_14_c(...args) {\n  if (!wasmImports[\"ff_h264_chroma_dc_dequant_idct_14_c\"] || wasmImports[\"ff_h264_chroma_dc_dequant_idct_14_c\"].stub) abort(\"external symbol 'ff_h264_chroma_dc_dequant_idct_14_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma_dc_dequant_idct_14_c\"](...args);\n}\n\n_ff_h264_chroma_dc_dequant_idct_14_c.stub = true;\n\nfunction _ff_h264_chroma_dc_dequant_idct_8_c(...args) {\n  if (!wasmImports[\"ff_h264_chroma_dc_dequant_idct_8_c\"] || wasmImports[\"ff_h264_chroma_dc_dequant_idct_8_c\"].stub) abort(\"external symbol 'ff_h264_chroma_dc_dequant_idct_8_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma_dc_dequant_idct_8_c\"](...args);\n}\n\n_ff_h264_chroma_dc_dequant_idct_8_c.stub = true;\n\nfunction _ff_h264_chroma_dc_dequant_idct_9_c(...args) {\n  if (!wasmImports[\"ff_h264_chroma_dc_dequant_idct_9_c\"] || wasmImports[\"ff_h264_chroma_dc_dequant_idct_9_c\"].stub) abort(\"external symbol 'ff_h264_chroma_dc_dequant_idct_9_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma_dc_dequant_idct_9_c\"](...args);\n}\n\n_ff_h264_chroma_dc_dequant_idct_9_c.stub = true;\n\nfunction _ff_h264_chroma_dc_scan(...args) {\n  if (!wasmImports[\"ff_h264_chroma_dc_scan\"] || wasmImports[\"ff_h264_chroma_dc_scan\"].stub) abort(\"external symbol 'ff_h264_chroma_dc_scan' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma_dc_scan\"](...args);\n}\n\n_ff_h264_chroma_dc_scan.stub = true;\n\nfunction _ff_h264_chroma_qp(...args) {\n  if (!wasmImports[\"ff_h264_chroma_qp\"] || wasmImports[\"ff_h264_chroma_qp\"].stub) abort(\"external symbol 'ff_h264_chroma_qp' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_chroma_qp\"](...args);\n}\n\n_ff_h264_chroma_qp.stub = true;\n\nfunction _ff_h264_decode_init_vlc(...args) {\n  if (!wasmImports[\"ff_h264_decode_init_vlc\"] || wasmImports[\"ff_h264_decode_init_vlc\"].stub) abort(\"external symbol 'ff_h264_decode_init_vlc' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_decode_init_vlc\"](...args);\n}\n\n_ff_h264_decode_init_vlc.stub = true;\n\nfunction _ff_h264_decoder(...args) {\n  if (!wasmImports[\"ff_h264_decoder\"] || wasmImports[\"ff_h264_decoder\"].stub) abort(\"external symbol 'ff_h264_decoder' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_decoder\"](...args);\n}\n\n_ff_h264_decoder.stub = true;\n\nfunction _ff_h264_dequant4_coeff_init(...args) {\n  if (!wasmImports[\"ff_h264_dequant4_coeff_init\"] || wasmImports[\"ff_h264_dequant4_coeff_init\"].stub) abort(\"external symbol 'ff_h264_dequant4_coeff_init' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_dequant4_coeff_init\"](...args);\n}\n\n_ff_h264_dequant4_coeff_init.stub = true;\n\nfunction _ff_h264_dequant8_coeff_init(...args) {\n  if (!wasmImports[\"ff_h264_dequant8_coeff_init\"] || wasmImports[\"ff_h264_dequant8_coeff_init\"].stub) abort(\"external symbol 'ff_h264_dequant8_coeff_init' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_dequant8_coeff_init\"](...args);\n}\n\n_ff_h264_dequant8_coeff_init.stub = true;\n\nfunction _ff_h264_dequant8_coeff_init_scan(...args) {\n  if (!wasmImports[\"ff_h264_dequant8_coeff_init_scan\"] || wasmImports[\"ff_h264_dequant8_coeff_init_scan\"].stub) abort(\"external symbol 'ff_h264_dequant8_coeff_init_scan' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_dequant8_coeff_init_scan\"](...args);\n}\n\n_ff_h264_dequant8_coeff_init_scan.stub = true;\n\nfunction _ff_h264_golomb_to_inter_cbp(...args) {\n  if (!wasmImports[\"ff_h264_golomb_to_inter_cbp\"] || wasmImports[\"ff_h264_golomb_to_inter_cbp\"].stub) abort(\"external symbol 'ff_h264_golomb_to_inter_cbp' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_golomb_to_inter_cbp\"](...args);\n}\n\n_ff_h264_golomb_to_inter_cbp.stub = true;\n\nfunction _ff_h264_golomb_to_intra4x4_cbp(...args) {\n  if (!wasmImports[\"ff_h264_golomb_to_intra4x4_cbp\"] || wasmImports[\"ff_h264_golomb_to_intra4x4_cbp\"].stub) abort(\"external symbol 'ff_h264_golomb_to_intra4x4_cbp' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_golomb_to_intra4x4_cbp\"](...args);\n}\n\n_ff_h264_golomb_to_intra4x4_cbp.stub = true;\n\nfunction _ff_h264_golomb_to_pict_type(...args) {\n  if (!wasmImports[\"ff_h264_golomb_to_pict_type\"] || wasmImports[\"ff_h264_golomb_to_pict_type\"].stub) abort(\"external symbol 'ff_h264_golomb_to_pict_type' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_golomb_to_pict_type\"](...args);\n}\n\n_ff_h264_golomb_to_pict_type.stub = true;\n\nfunction _ff_h264_i_mb_type_info(...args) {\n  if (!wasmImports[\"ff_h264_i_mb_type_info\"] || wasmImports[\"ff_h264_i_mb_type_info\"].stub) abort(\"external symbol 'ff_h264_i_mb_type_info' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_i_mb_type_info\"](...args);\n}\n\n_ff_h264_i_mb_type_info.stub = true;\n\nfunction _ff_h264_idct8_add4_10_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_add4_10_c\"] || wasmImports[\"ff_h264_idct8_add4_10_c\"].stub) abort(\"external symbol 'ff_h264_idct8_add4_10_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_add4_10_c\"](...args);\n}\n\n_ff_h264_idct8_add4_10_c.stub = true;\n\nfunction _ff_h264_idct8_add4_12_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_add4_12_c\"] || wasmImports[\"ff_h264_idct8_add4_12_c\"].stub) abort(\"external symbol 'ff_h264_idct8_add4_12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_add4_12_c\"](...args);\n}\n\n_ff_h264_idct8_add4_12_c.stub = true;\n\nfunction _ff_h264_idct8_add4_14_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_add4_14_c\"] || wasmImports[\"ff_h264_idct8_add4_14_c\"].stub) abort(\"external symbol 'ff_h264_idct8_add4_14_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_add4_14_c\"](...args);\n}\n\n_ff_h264_idct8_add4_14_c.stub = true;\n\nfunction _ff_h264_idct8_add4_8_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_add4_8_c\"] || wasmImports[\"ff_h264_idct8_add4_8_c\"].stub) abort(\"external symbol 'ff_h264_idct8_add4_8_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_add4_8_c\"](...args);\n}\n\n_ff_h264_idct8_add4_8_c.stub = true;\n\nfunction _ff_h264_idct8_add4_9_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_add4_9_c\"] || wasmImports[\"ff_h264_idct8_add4_9_c\"].stub) abort(\"external symbol 'ff_h264_idct8_add4_9_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_add4_9_c\"](...args);\n}\n\n_ff_h264_idct8_add4_9_c.stub = true;\n\nfunction _ff_h264_idct8_add_10_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_add_10_c\"] || wasmImports[\"ff_h264_idct8_add_10_c\"].stub) abort(\"external symbol 'ff_h264_idct8_add_10_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_add_10_c\"](...args);\n}\n\n_ff_h264_idct8_add_10_c.stub = true;\n\nfunction _ff_h264_idct8_add_12_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_add_12_c\"] || wasmImports[\"ff_h264_idct8_add_12_c\"].stub) abort(\"external symbol 'ff_h264_idct8_add_12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_add_12_c\"](...args);\n}\n\n_ff_h264_idct8_add_12_c.stub = true;\n\nfunction _ff_h264_idct8_add_14_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_add_14_c\"] || wasmImports[\"ff_h264_idct8_add_14_c\"].stub) abort(\"external symbol 'ff_h264_idct8_add_14_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_add_14_c\"](...args);\n}\n\n_ff_h264_idct8_add_14_c.stub = true;\n\nfunction _ff_h264_idct8_add_8_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_add_8_c\"] || wasmImports[\"ff_h264_idct8_add_8_c\"].stub) abort(\"external symbol 'ff_h264_idct8_add_8_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_add_8_c\"](...args);\n}\n\n_ff_h264_idct8_add_8_c.stub = true;\n\nfunction _ff_h264_idct8_add_9_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_add_9_c\"] || wasmImports[\"ff_h264_idct8_add_9_c\"].stub) abort(\"external symbol 'ff_h264_idct8_add_9_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_add_9_c\"](...args);\n}\n\n_ff_h264_idct8_add_9_c.stub = true;\n\nfunction _ff_h264_idct8_dc_add_10_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_dc_add_10_c\"] || wasmImports[\"ff_h264_idct8_dc_add_10_c\"].stub) abort(\"external symbol 'ff_h264_idct8_dc_add_10_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_dc_add_10_c\"](...args);\n}\n\n_ff_h264_idct8_dc_add_10_c.stub = true;\n\nfunction _ff_h264_idct8_dc_add_12_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_dc_add_12_c\"] || wasmImports[\"ff_h264_idct8_dc_add_12_c\"].stub) abort(\"external symbol 'ff_h264_idct8_dc_add_12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_dc_add_12_c\"](...args);\n}\n\n_ff_h264_idct8_dc_add_12_c.stub = true;\n\nfunction _ff_h264_idct8_dc_add_14_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_dc_add_14_c\"] || wasmImports[\"ff_h264_idct8_dc_add_14_c\"].stub) abort(\"external symbol 'ff_h264_idct8_dc_add_14_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_dc_add_14_c\"](...args);\n}\n\n_ff_h264_idct8_dc_add_14_c.stub = true;\n\nfunction _ff_h264_idct8_dc_add_8_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_dc_add_8_c\"] || wasmImports[\"ff_h264_idct8_dc_add_8_c\"].stub) abort(\"external symbol 'ff_h264_idct8_dc_add_8_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_dc_add_8_c\"](...args);\n}\n\n_ff_h264_idct8_dc_add_8_c.stub = true;\n\nfunction _ff_h264_idct8_dc_add_9_c(...args) {\n  if (!wasmImports[\"ff_h264_idct8_dc_add_9_c\"] || wasmImports[\"ff_h264_idct8_dc_add_9_c\"].stub) abort(\"external symbol 'ff_h264_idct8_dc_add_9_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct8_dc_add_9_c\"](...args);\n}\n\n_ff_h264_idct8_dc_add_9_c.stub = true;\n\nfunction _ff_h264_idct_add16_10_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add16_10_c\"] || wasmImports[\"ff_h264_idct_add16_10_c\"].stub) abort(\"external symbol 'ff_h264_idct_add16_10_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add16_10_c\"](...args);\n}\n\n_ff_h264_idct_add16_10_c.stub = true;\n\nfunction _ff_h264_idct_add16_12_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add16_12_c\"] || wasmImports[\"ff_h264_idct_add16_12_c\"].stub) abort(\"external symbol 'ff_h264_idct_add16_12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add16_12_c\"](...args);\n}\n\n_ff_h264_idct_add16_12_c.stub = true;\n\nfunction _ff_h264_idct_add16_14_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add16_14_c\"] || wasmImports[\"ff_h264_idct_add16_14_c\"].stub) abort(\"external symbol 'ff_h264_idct_add16_14_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add16_14_c\"](...args);\n}\n\n_ff_h264_idct_add16_14_c.stub = true;\n\nfunction _ff_h264_idct_add16_8_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add16_8_c\"] || wasmImports[\"ff_h264_idct_add16_8_c\"].stub) abort(\"external symbol 'ff_h264_idct_add16_8_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add16_8_c\"](...args);\n}\n\n_ff_h264_idct_add16_8_c.stub = true;\n\nfunction _ff_h264_idct_add16_9_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add16_9_c\"] || wasmImports[\"ff_h264_idct_add16_9_c\"].stub) abort(\"external symbol 'ff_h264_idct_add16_9_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add16_9_c\"](...args);\n}\n\n_ff_h264_idct_add16_9_c.stub = true;\n\nfunction _ff_h264_idct_add16intra_10_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add16intra_10_c\"] || wasmImports[\"ff_h264_idct_add16intra_10_c\"].stub) abort(\"external symbol 'ff_h264_idct_add16intra_10_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add16intra_10_c\"](...args);\n}\n\n_ff_h264_idct_add16intra_10_c.stub = true;\n\nfunction _ff_h264_idct_add16intra_12_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add16intra_12_c\"] || wasmImports[\"ff_h264_idct_add16intra_12_c\"].stub) abort(\"external symbol 'ff_h264_idct_add16intra_12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add16intra_12_c\"](...args);\n}\n\n_ff_h264_idct_add16intra_12_c.stub = true;\n\nfunction _ff_h264_idct_add16intra_14_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add16intra_14_c\"] || wasmImports[\"ff_h264_idct_add16intra_14_c\"].stub) abort(\"external symbol 'ff_h264_idct_add16intra_14_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add16intra_14_c\"](...args);\n}\n\n_ff_h264_idct_add16intra_14_c.stub = true;\n\nfunction _ff_h264_idct_add16intra_8_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add16intra_8_c\"] || wasmImports[\"ff_h264_idct_add16intra_8_c\"].stub) abort(\"external symbol 'ff_h264_idct_add16intra_8_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add16intra_8_c\"](...args);\n}\n\n_ff_h264_idct_add16intra_8_c.stub = true;\n\nfunction _ff_h264_idct_add16intra_9_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add16intra_9_c\"] || wasmImports[\"ff_h264_idct_add16intra_9_c\"].stub) abort(\"external symbol 'ff_h264_idct_add16intra_9_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add16intra_9_c\"](...args);\n}\n\n_ff_h264_idct_add16intra_9_c.stub = true;\n\nfunction _ff_h264_idct_add8_10_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add8_10_c\"] || wasmImports[\"ff_h264_idct_add8_10_c\"].stub) abort(\"external symbol 'ff_h264_idct_add8_10_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add8_10_c\"](...args);\n}\n\n_ff_h264_idct_add8_10_c.stub = true;\n\nfunction _ff_h264_idct_add8_12_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add8_12_c\"] || wasmImports[\"ff_h264_idct_add8_12_c\"].stub) abort(\"external symbol 'ff_h264_idct_add8_12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add8_12_c\"](...args);\n}\n\n_ff_h264_idct_add8_12_c.stub = true;\n\nfunction _ff_h264_idct_add8_14_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add8_14_c\"] || wasmImports[\"ff_h264_idct_add8_14_c\"].stub) abort(\"external symbol 'ff_h264_idct_add8_14_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add8_14_c\"](...args);\n}\n\n_ff_h264_idct_add8_14_c.stub = true;\n\nfunction _ff_h264_idct_add8_422_10_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add8_422_10_c\"] || wasmImports[\"ff_h264_idct_add8_422_10_c\"].stub) abort(\"external symbol 'ff_h264_idct_add8_422_10_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add8_422_10_c\"](...args);\n}\n\n_ff_h264_idct_add8_422_10_c.stub = true;\n\nfunction _ff_h264_idct_add8_422_12_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add8_422_12_c\"] || wasmImports[\"ff_h264_idct_add8_422_12_c\"].stub) abort(\"external symbol 'ff_h264_idct_add8_422_12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add8_422_12_c\"](...args);\n}\n\n_ff_h264_idct_add8_422_12_c.stub = true;\n\nfunction _ff_h264_idct_add8_422_14_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add8_422_14_c\"] || wasmImports[\"ff_h264_idct_add8_422_14_c\"].stub) abort(\"external symbol 'ff_h264_idct_add8_422_14_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add8_422_14_c\"](...args);\n}\n\n_ff_h264_idct_add8_422_14_c.stub = true;\n\nfunction _ff_h264_idct_add8_422_8_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add8_422_8_c\"] || wasmImports[\"ff_h264_idct_add8_422_8_c\"].stub) abort(\"external symbol 'ff_h264_idct_add8_422_8_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add8_422_8_c\"](...args);\n}\n\n_ff_h264_idct_add8_422_8_c.stub = true;\n\nfunction _ff_h264_idct_add8_422_9_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add8_422_9_c\"] || wasmImports[\"ff_h264_idct_add8_422_9_c\"].stub) abort(\"external symbol 'ff_h264_idct_add8_422_9_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add8_422_9_c\"](...args);\n}\n\n_ff_h264_idct_add8_422_9_c.stub = true;\n\nfunction _ff_h264_idct_add8_8_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add8_8_c\"] || wasmImports[\"ff_h264_idct_add8_8_c\"].stub) abort(\"external symbol 'ff_h264_idct_add8_8_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add8_8_c\"](...args);\n}\n\n_ff_h264_idct_add8_8_c.stub = true;\n\nfunction _ff_h264_idct_add8_9_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add8_9_c\"] || wasmImports[\"ff_h264_idct_add8_9_c\"].stub) abort(\"external symbol 'ff_h264_idct_add8_9_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add8_9_c\"](...args);\n}\n\n_ff_h264_idct_add8_9_c.stub = true;\n\nfunction _ff_h264_idct_add_10_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add_10_c\"] || wasmImports[\"ff_h264_idct_add_10_c\"].stub) abort(\"external symbol 'ff_h264_idct_add_10_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add_10_c\"](...args);\n}\n\n_ff_h264_idct_add_10_c.stub = true;\n\nfunction _ff_h264_idct_add_12_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add_12_c\"] || wasmImports[\"ff_h264_idct_add_12_c\"].stub) abort(\"external symbol 'ff_h264_idct_add_12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add_12_c\"](...args);\n}\n\n_ff_h264_idct_add_12_c.stub = true;\n\nfunction _ff_h264_idct_add_14_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add_14_c\"] || wasmImports[\"ff_h264_idct_add_14_c\"].stub) abort(\"external symbol 'ff_h264_idct_add_14_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add_14_c\"](...args);\n}\n\n_ff_h264_idct_add_14_c.stub = true;\n\nfunction _ff_h264_idct_add_8_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add_8_c\"] || wasmImports[\"ff_h264_idct_add_8_c\"].stub) abort(\"external symbol 'ff_h264_idct_add_8_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add_8_c\"](...args);\n}\n\n_ff_h264_idct_add_8_c.stub = true;\n\nfunction _ff_h264_idct_add_9_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_add_9_c\"] || wasmImports[\"ff_h264_idct_add_9_c\"].stub) abort(\"external symbol 'ff_h264_idct_add_9_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_add_9_c\"](...args);\n}\n\n_ff_h264_idct_add_9_c.stub = true;\n\nfunction _ff_h264_idct_dc_add_10_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_dc_add_10_c\"] || wasmImports[\"ff_h264_idct_dc_add_10_c\"].stub) abort(\"external symbol 'ff_h264_idct_dc_add_10_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_dc_add_10_c\"](...args);\n}\n\n_ff_h264_idct_dc_add_10_c.stub = true;\n\nfunction _ff_h264_idct_dc_add_12_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_dc_add_12_c\"] || wasmImports[\"ff_h264_idct_dc_add_12_c\"].stub) abort(\"external symbol 'ff_h264_idct_dc_add_12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_dc_add_12_c\"](...args);\n}\n\n_ff_h264_idct_dc_add_12_c.stub = true;\n\nfunction _ff_h264_idct_dc_add_14_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_dc_add_14_c\"] || wasmImports[\"ff_h264_idct_dc_add_14_c\"].stub) abort(\"external symbol 'ff_h264_idct_dc_add_14_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_dc_add_14_c\"](...args);\n}\n\n_ff_h264_idct_dc_add_14_c.stub = true;\n\nfunction _ff_h264_idct_dc_add_8_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_dc_add_8_c\"] || wasmImports[\"ff_h264_idct_dc_add_8_c\"].stub) abort(\"external symbol 'ff_h264_idct_dc_add_8_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_dc_add_8_c\"](...args);\n}\n\n_ff_h264_idct_dc_add_8_c.stub = true;\n\nfunction _ff_h264_idct_dc_add_9_c(...args) {\n  if (!wasmImports[\"ff_h264_idct_dc_add_9_c\"] || wasmImports[\"ff_h264_idct_dc_add_9_c\"].stub) abort(\"external symbol 'ff_h264_idct_dc_add_9_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_idct_dc_add_9_c\"](...args);\n}\n\n_ff_h264_idct_dc_add_9_c.stub = true;\n\nfunction _ff_h264_luma_dc_dequant_idct_10_c(...args) {\n  if (!wasmImports[\"ff_h264_luma_dc_dequant_idct_10_c\"] || wasmImports[\"ff_h264_luma_dc_dequant_idct_10_c\"].stub) abort(\"external symbol 'ff_h264_luma_dc_dequant_idct_10_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_luma_dc_dequant_idct_10_c\"](...args);\n}\n\n_ff_h264_luma_dc_dequant_idct_10_c.stub = true;\n\nfunction _ff_h264_luma_dc_dequant_idct_12_c(...args) {\n  if (!wasmImports[\"ff_h264_luma_dc_dequant_idct_12_c\"] || wasmImports[\"ff_h264_luma_dc_dequant_idct_12_c\"].stub) abort(\"external symbol 'ff_h264_luma_dc_dequant_idct_12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_luma_dc_dequant_idct_12_c\"](...args);\n}\n\n_ff_h264_luma_dc_dequant_idct_12_c.stub = true;\n\nfunction _ff_h264_luma_dc_dequant_idct_14_c(...args) {\n  if (!wasmImports[\"ff_h264_luma_dc_dequant_idct_14_c\"] || wasmImports[\"ff_h264_luma_dc_dequant_idct_14_c\"].stub) abort(\"external symbol 'ff_h264_luma_dc_dequant_idct_14_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_luma_dc_dequant_idct_14_c\"](...args);\n}\n\n_ff_h264_luma_dc_dequant_idct_14_c.stub = true;\n\nfunction _ff_h264_luma_dc_dequant_idct_8_c(...args) {\n  if (!wasmImports[\"ff_h264_luma_dc_dequant_idct_8_c\"] || wasmImports[\"ff_h264_luma_dc_dequant_idct_8_c\"].stub) abort(\"external symbol 'ff_h264_luma_dc_dequant_idct_8_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_luma_dc_dequant_idct_8_c\"](...args);\n}\n\n_ff_h264_luma_dc_dequant_idct_8_c.stub = true;\n\nfunction _ff_h264_luma_dc_dequant_idct_9_c(...args) {\n  if (!wasmImports[\"ff_h264_luma_dc_dequant_idct_9_c\"] || wasmImports[\"ff_h264_luma_dc_dequant_idct_9_c\"].stub) abort(\"external symbol 'ff_h264_luma_dc_dequant_idct_9_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_luma_dc_dequant_idct_9_c\"](...args);\n}\n\n_ff_h264_luma_dc_dequant_idct_9_c.stub = true;\n\nfunction _ff_h264_mb_sizes(...args) {\n  if (!wasmImports[\"ff_h264_mb_sizes\"] || wasmImports[\"ff_h264_mb_sizes\"].stub) abort(\"external symbol 'ff_h264_mb_sizes' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_mb_sizes\"](...args);\n}\n\n_ff_h264_mb_sizes.stub = true;\n\nfunction _ff_h264_p_mb_type_info(...args) {\n  if (!wasmImports[\"ff_h264_p_mb_type_info\"] || wasmImports[\"ff_h264_p_mb_type_info\"].stub) abort(\"external symbol 'ff_h264_p_mb_type_info' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_p_mb_type_info\"](...args);\n}\n\n_ff_h264_p_mb_type_info.stub = true;\n\nfunction _ff_h264_p_sub_mb_type_info(...args) {\n  if (!wasmImports[\"ff_h264_p_sub_mb_type_info\"] || wasmImports[\"ff_h264_p_sub_mb_type_info\"].stub) abort(\"external symbol 'ff_h264_p_sub_mb_type_info' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_p_sub_mb_type_info\"](...args);\n}\n\n_ff_h264_p_sub_mb_type_info.stub = true;\n\nfunction _ff_h264_quant_div6(...args) {\n  if (!wasmImports[\"ff_h264_quant_div6\"] || wasmImports[\"ff_h264_quant_div6\"].stub) abort(\"external symbol 'ff_h264_quant_div6' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_quant_div6\"](...args);\n}\n\n_ff_h264_quant_div6.stub = true;\n\nfunction _ff_h264_quant_rem6(...args) {\n  if (!wasmImports[\"ff_h264_quant_rem6\"] || wasmImports[\"ff_h264_quant_rem6\"].stub) abort(\"external symbol 'ff_h264_quant_rem6' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_quant_rem6\"](...args);\n}\n\n_ff_h264_quant_rem6.stub = true;\n\nfunction _ff_h264_update_thread_context(...args) {\n  if (!wasmImports[\"ff_h264_update_thread_context\"] || wasmImports[\"ff_h264_update_thread_context\"].stub) abort(\"external symbol 'ff_h264_update_thread_context' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_update_thread_context\"](...args);\n}\n\n_ff_h264_update_thread_context.stub = true;\n\nfunction _ff_h264_update_thread_context_for_user(...args) {\n  if (!wasmImports[\"ff_h264_update_thread_context_for_user\"] || wasmImports[\"ff_h264_update_thread_context_for_user\"].stub) abort(\"external symbol 'ff_h264_update_thread_context_for_user' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_h264_update_thread_context_for_user\"](...args);\n}\n\n_ff_h264_update_thread_context_for_user.stub = true;\n\nfunction _ff_hcscale_fast_c(...args) {\n  if (!wasmImports[\"ff_hcscale_fast_c\"] || wasmImports[\"ff_hcscale_fast_c\"].stub) abort(\"external symbol 'ff_hcscale_fast_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_hcscale_fast_c\"](...args);\n}\n\n_ff_hcscale_fast_c.stub = true;\n\nfunction _ff_hyscale_fast_c(...args) {\n  if (!wasmImports[\"ff_hyscale_fast_c\"] || wasmImports[\"ff_hyscale_fast_c\"].stub) abort(\"external symbol 'ff_hyscale_fast_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_hyscale_fast_c\"](...args);\n}\n\n_ff_hyscale_fast_c.stub = true;\n\nfunction _ff_id3v1_genre_str(...args) {\n  if (!wasmImports[\"ff_id3v1_genre_str\"] || wasmImports[\"ff_id3v1_genre_str\"].stub) abort(\"external symbol 'ff_id3v1_genre_str' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_id3v1_genre_str\"](...args);\n}\n\n_ff_id3v1_genre_str.stub = true;\n\nfunction _ff_id3v2_34_metadata_conv(...args) {\n  if (!wasmImports[\"ff_id3v2_34_metadata_conv\"] || wasmImports[\"ff_id3v2_34_metadata_conv\"].stub) abort(\"external symbol 'ff_id3v2_34_metadata_conv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_id3v2_34_metadata_conv\"](...args);\n}\n\n_ff_id3v2_34_metadata_conv.stub = true;\n\nfunction _ff_id3v2_4_metadata_conv(...args) {\n  if (!wasmImports[\"ff_id3v2_4_metadata_conv\"] || wasmImports[\"ff_id3v2_4_metadata_conv\"].stub) abort(\"external symbol 'ff_id3v2_4_metadata_conv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_id3v2_4_metadata_conv\"](...args);\n}\n\n_ff_id3v2_4_metadata_conv.stub = true;\n\nfunction _ff_id3v2_mime_tags(...args) {\n  if (!wasmImports[\"ff_id3v2_mime_tags\"] || wasmImports[\"ff_id3v2_mime_tags\"].stub) abort(\"external symbol 'ff_id3v2_mime_tags' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_id3v2_mime_tags\"](...args);\n}\n\n_ff_id3v2_mime_tags.stub = true;\n\nfunction _ff_id3v2_picture_types(...args) {\n  if (!wasmImports[\"ff_id3v2_picture_types\"] || wasmImports[\"ff_id3v2_picture_types\"].stub) abort(\"external symbol 'ff_id3v2_picture_types' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_id3v2_picture_types\"](...args);\n}\n\n_ff_id3v2_picture_types.stub = true;\n\nfunction _ff_imdct_calc_c(...args) {\n  if (!wasmImports[\"ff_imdct_calc_c\"] || wasmImports[\"ff_imdct_calc_c\"].stub) abort(\"external symbol 'ff_imdct_calc_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_imdct_calc_c\"](...args);\n}\n\n_ff_imdct_calc_c.stub = true;\n\nfunction _ff_imdct_half_c(...args) {\n  if (!wasmImports[\"ff_imdct_half_c\"] || wasmImports[\"ff_imdct_half_c\"].stub) abort(\"external symbol 'ff_imdct_half_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_imdct_half_c\"](...args);\n}\n\n_ff_imdct_half_c.stub = true;\n\nfunction _ff_interleave_packet_passthrough(...args) {\n  if (!wasmImports[\"ff_interleave_packet_passthrough\"] || wasmImports[\"ff_interleave_packet_passthrough\"].stub) abort(\"external symbol 'ff_interleave_packet_passthrough' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_interleave_packet_passthrough\"](...args);\n}\n\n_ff_interleave_packet_passthrough.stub = true;\n\nfunction _ff_interleave_packet_per_dts(...args) {\n  if (!wasmImports[\"ff_interleave_packet_per_dts\"] || wasmImports[\"ff_interleave_packet_per_dts\"].stub) abort(\"external symbol 'ff_interleave_packet_per_dts' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_interleave_packet_per_dts\"](...args);\n}\n\n_ff_interleave_packet_per_dts.stub = true;\n\nfunction _ff_ipod_muxer(...args) {\n  if (!wasmImports[\"ff_ipod_muxer\"] || wasmImports[\"ff_ipod_muxer\"].stub) abort(\"external symbol 'ff_ipod_muxer' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_ipod_muxer\"](...args);\n}\n\n_ff_ipod_muxer.stub = true;\n\nfunction _ff_k_to_i_20(...args) {\n  if (!wasmImports[\"ff_k_to_i_20\"] || wasmImports[\"ff_k_to_i_20\"].stub) abort(\"external symbol 'ff_k_to_i_20' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_k_to_i_20\"](...args);\n}\n\n_ff_k_to_i_20.stub = true;\n\nfunction _ff_k_to_i_34(...args) {\n  if (!wasmImports[\"ff_k_to_i_34\"] || wasmImports[\"ff_k_to_i_34\"].stub) abort(\"external symbol 'ff_k_to_i_34' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_k_to_i_34\"](...args);\n}\n\n_ff_k_to_i_34.stub = true;\n\nfunction _ff_libopenh264_encoder(...args) {\n  if (!wasmImports[\"ff_libopenh264_encoder\"] || wasmImports[\"ff_libopenh264_encoder\"].stub) abort(\"external symbol 'ff_libopenh264_encoder' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_libopenh264_encoder\"](...args);\n}\n\n_ff_libopenh264_encoder.stub = true;\n\nfunction _ff_libopenh264_trace_callback(...args) {\n  if (!wasmImports[\"ff_libopenh264_trace_callback\"] || wasmImports[\"ff_libopenh264_trace_callback\"].stub) abort(\"external symbol 'ff_libopenh264_trace_callback' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_libopenh264_trace_callback\"](...args);\n}\n\n_ff_libopenh264_trace_callback.stub = true;\n\nfunction _ff_log2_tab(...args) {\n  if (!wasmImports[\"ff_log2_tab\"] || wasmImports[\"ff_log2_tab\"].stub) abort(\"external symbol 'ff_log2_tab' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_log2_tab\"](...args);\n}\n\n_ff_log2_tab.stub = true;\n\nfunction _ff_mdct_calc_c(...args) {\n  if (!wasmImports[\"ff_mdct_calc_c\"] || wasmImports[\"ff_mdct_calc_c\"].stub) abort(\"external symbol 'ff_mdct_calc_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_mdct_calc_c\"](...args);\n}\n\n_ff_mdct_calc_c.stub = true;\n\nfunction _ff_mov_demuxer(...args) {\n  if (!wasmImports[\"ff_mov_demuxer\"] || wasmImports[\"ff_mov_demuxer\"].stub) abort(\"external symbol 'ff_mov_demuxer' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_mov_demuxer\"](...args);\n}\n\n_ff_mov_demuxer.stub = true;\n\nfunction _ff_mov_track_kind_table(...args) {\n  if (!wasmImports[\"ff_mov_track_kind_table\"] || wasmImports[\"ff_mov_track_kind_table\"].stub) abort(\"external symbol 'ff_mov_track_kind_table' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_mov_track_kind_table\"](...args);\n}\n\n_ff_mov_track_kind_table.stub = true;\n\nfunction _ff_mp4_muxer(...args) {\n  if (!wasmImports[\"ff_mp4_muxer\"] || wasmImports[\"ff_mp4_muxer\"].stub) abort(\"external symbol 'ff_mp4_muxer' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_mp4_muxer\"](...args);\n}\n\n_ff_mp4_muxer.stub = true;\n\nfunction _ff_mp4_obj_type(...args) {\n  if (!wasmImports[\"ff_mp4_obj_type\"] || wasmImports[\"ff_mp4_obj_type\"].stub) abort(\"external symbol 'ff_mp4_obj_type' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_mp4_obj_type\"](...args);\n}\n\n_ff_mp4_obj_type.stub = true;\n\nfunction _ff_mpa_freq_tab(...args) {\n  if (!wasmImports[\"ff_mpa_freq_tab\"] || wasmImports[\"ff_mpa_freq_tab\"].stub) abort(\"external symbol 'ff_mpa_freq_tab' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_mpa_freq_tab\"](...args);\n}\n\n_ff_mpa_freq_tab.stub = true;\n\nfunction _ff_mpeg4audio_channels(...args) {\n  if (!wasmImports[\"ff_mpeg4audio_channels\"] || wasmImports[\"ff_mpeg4audio_channels\"].stub) abort(\"external symbol 'ff_mpeg4audio_channels' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_mpeg4audio_channels\"](...args);\n}\n\n_ff_mpeg4audio_channels.stub = true;\n\nfunction _ff_mpeg4audio_sample_rates(...args) {\n  if (!wasmImports[\"ff_mpeg4audio_sample_rates\"] || wasmImports[\"ff_mpeg4audio_sample_rates\"].stub) abort(\"external symbol 'ff_mpeg4audio_sample_rates' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_mpeg4audio_sample_rates\"](...args);\n}\n\n_ff_mpeg4audio_sample_rates.stub = true;\n\nfunction _ff_reverse(...args) {\n  if (!wasmImports[\"ff_reverse\"] || wasmImports[\"ff_reverse\"].stub) abort(\"external symbol 'ff_reverse' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_reverse\"](...args);\n}\n\n_ff_reverse.stub = true;\n\nfunction _ff_rgb24toyv12(...args) {\n  if (!wasmImports[\"ff_rgb24toyv12\"] || wasmImports[\"ff_rgb24toyv12\"].stub) abort(\"external symbol 'ff_rgb24toyv12' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_rgb24toyv12\"](...args);\n}\n\n_ff_rgb24toyv12.stub = true;\n\nfunction _ff_rgb24toyv12_c(...args) {\n  if (!wasmImports[\"ff_rgb24toyv12_c\"] || wasmImports[\"ff_rgb24toyv12_c\"].stub) abort(\"external symbol 'ff_rgb24toyv12_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_rgb24toyv12_c\"](...args);\n}\n\n_ff_rgb24toyv12_c.stub = true;\n\nfunction _ff_riff_info_conv(...args) {\n  if (!wasmImports[\"ff_riff_info_conv\"] || wasmImports[\"ff_riff_info_conv\"].stub) abort(\"external symbol 'ff_riff_info_conv' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_riff_info_conv\"](...args);\n}\n\n_ff_riff_info_conv.stub = true;\n\nfunction _ff_sbr_noise_table(...args) {\n  if (!wasmImports[\"ff_sbr_noise_table\"] || wasmImports[\"ff_sbr_noise_table\"].stub) abort(\"external symbol 'ff_sbr_noise_table' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sbr_noise_table\"](...args);\n}\n\n_ff_sbr_noise_table.stub = true;\n\nfunction _ff_se_golomb_vlc_code(...args) {\n  if (!wasmImports[\"ff_se_golomb_vlc_code\"] || wasmImports[\"ff_se_golomb_vlc_code\"].stub) abort(\"external symbol 'ff_se_golomb_vlc_code' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_se_golomb_vlc_code\"](...args);\n}\n\n_ff_se_golomb_vlc_code.stub = true;\n\nfunction _ff_sine_1024(...args) {\n  if (!wasmImports[\"ff_sine_1024\"] || wasmImports[\"ff_sine_1024\"].stub) abort(\"external symbol 'ff_sine_1024' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sine_1024\"](...args);\n}\n\n_ff_sine_1024.stub = true;\n\nfunction _ff_sine_128(...args) {\n  if (!wasmImports[\"ff_sine_128\"] || wasmImports[\"ff_sine_128\"].stub) abort(\"external symbol 'ff_sine_128' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sine_128\"](...args);\n}\n\n_ff_sine_128.stub = true;\n\nfunction _ff_sine_2048(...args) {\n  if (!wasmImports[\"ff_sine_2048\"] || wasmImports[\"ff_sine_2048\"].stub) abort(\"external symbol 'ff_sine_2048' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sine_2048\"](...args);\n}\n\n_ff_sine_2048.stub = true;\n\nfunction _ff_sine_256(...args) {\n  if (!wasmImports[\"ff_sine_256\"] || wasmImports[\"ff_sine_256\"].stub) abort(\"external symbol 'ff_sine_256' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sine_256\"](...args);\n}\n\n_ff_sine_256.stub = true;\n\nfunction _ff_sine_32(...args) {\n  if (!wasmImports[\"ff_sine_32\"] || wasmImports[\"ff_sine_32\"].stub) abort(\"external symbol 'ff_sine_32' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sine_32\"](...args);\n}\n\n_ff_sine_32.stub = true;\n\nfunction _ff_sine_4096(...args) {\n  if (!wasmImports[\"ff_sine_4096\"] || wasmImports[\"ff_sine_4096\"].stub) abort(\"external symbol 'ff_sine_4096' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sine_4096\"](...args);\n}\n\n_ff_sine_4096.stub = true;\n\nfunction _ff_sine_512(...args) {\n  if (!wasmImports[\"ff_sine_512\"] || wasmImports[\"ff_sine_512\"].stub) abort(\"external symbol 'ff_sine_512' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sine_512\"](...args);\n}\n\n_ff_sine_512.stub = true;\n\nfunction _ff_sine_64(...args) {\n  if (!wasmImports[\"ff_sine_64\"] || wasmImports[\"ff_sine_64\"].stub) abort(\"external symbol 'ff_sine_64' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sine_64\"](...args);\n}\n\n_ff_sine_64.stub = true;\n\nfunction _ff_sine_8192(...args) {\n  if (!wasmImports[\"ff_sine_8192\"] || wasmImports[\"ff_sine_8192\"].stub) abort(\"external symbol 'ff_sine_8192' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sine_8192\"](...args);\n}\n\n_ff_sine_8192.stub = true;\n\nfunction _ff_sine_windows(...args) {\n  if (!wasmImports[\"ff_sine_windows\"] || wasmImports[\"ff_sine_windows\"].stub) abort(\"external symbol 'ff_sine_windows' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sine_windows\"](...args);\n}\n\n_ff_sine_windows.stub = true;\n\nfunction _ff_startcode_find_candidate_c(...args) {\n  if (!wasmImports[\"ff_startcode_find_candidate_c\"] || wasmImports[\"ff_startcode_find_candidate_c\"].stub) abort(\"external symbol 'ff_startcode_find_candidate_c' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_startcode_find_candidate_c\"](...args);\n}\n\n_ff_startcode_find_candidate_c.stub = true;\n\nfunction _ff_swb_offset_1024(...args) {\n  if (!wasmImports[\"ff_swb_offset_1024\"] || wasmImports[\"ff_swb_offset_1024\"].stub) abort(\"external symbol 'ff_swb_offset_1024' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_swb_offset_1024\"](...args);\n}\n\n_ff_swb_offset_1024.stub = true;\n\nfunction _ff_swb_offset_120(...args) {\n  if (!wasmImports[\"ff_swb_offset_120\"] || wasmImports[\"ff_swb_offset_120\"].stub) abort(\"external symbol 'ff_swb_offset_120' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_swb_offset_120\"](...args);\n}\n\n_ff_swb_offset_120.stub = true;\n\nfunction _ff_swb_offset_128(...args) {\n  if (!wasmImports[\"ff_swb_offset_128\"] || wasmImports[\"ff_swb_offset_128\"].stub) abort(\"external symbol 'ff_swb_offset_128' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_swb_offset_128\"](...args);\n}\n\n_ff_swb_offset_128.stub = true;\n\nfunction _ff_swb_offset_480(...args) {\n  if (!wasmImports[\"ff_swb_offset_480\"] || wasmImports[\"ff_swb_offset_480\"].stub) abort(\"external symbol 'ff_swb_offset_480' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_swb_offset_480\"](...args);\n}\n\n_ff_swb_offset_480.stub = true;\n\nfunction _ff_swb_offset_512(...args) {\n  if (!wasmImports[\"ff_swb_offset_512\"] || wasmImports[\"ff_swb_offset_512\"].stub) abort(\"external symbol 'ff_swb_offset_512' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_swb_offset_512\"](...args);\n}\n\n_ff_swb_offset_512.stub = true;\n\nfunction _ff_swb_offset_960(...args) {\n  if (!wasmImports[\"ff_swb_offset_960\"] || wasmImports[\"ff_swb_offset_960\"].stub) abort(\"external symbol 'ff_swb_offset_960' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_swb_offset_960\"](...args);\n}\n\n_ff_swb_offset_960.stub = true;\n\nfunction _ff_sws_alphablendaway(...args) {\n  if (!wasmImports[\"ff_sws_alphablendaway\"] || wasmImports[\"ff_sws_alphablendaway\"].stub) abort(\"external symbol 'ff_sws_alphablendaway' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sws_alphablendaway\"](...args);\n}\n\n_ff_sws_alphablendaway.stub = true;\n\nfunction _ff_sws_context_class(...args) {\n  if (!wasmImports[\"ff_sws_context_class\"] || wasmImports[\"ff_sws_context_class\"].stub) abort(\"external symbol 'ff_sws_context_class' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sws_context_class\"](...args);\n}\n\n_ff_sws_context_class.stub = true;\n\nfunction _ff_sws_rgb2rgb_init(...args) {\n  if (!wasmImports[\"ff_sws_rgb2rgb_init\"] || wasmImports[\"ff_sws_rgb2rgb_init\"].stub) abort(\"external symbol 'ff_sws_rgb2rgb_init' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sws_rgb2rgb_init\"](...args);\n}\n\n_ff_sws_rgb2rgb_init.stub = true;\n\nfunction _ff_sws_slice_worker(...args) {\n  if (!wasmImports[\"ff_sws_slice_worker\"] || wasmImports[\"ff_sws_slice_worker\"].stub) abort(\"external symbol 'ff_sws_slice_worker' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_sws_slice_worker\"](...args);\n}\n\n_ff_sws_slice_worker.stub = true;\n\nfunction _ff_tns_max_bands_1024(...args) {\n  if (!wasmImports[\"ff_tns_max_bands_1024\"] || wasmImports[\"ff_tns_max_bands_1024\"].stub) abort(\"external symbol 'ff_tns_max_bands_1024' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_tns_max_bands_1024\"](...args);\n}\n\n_ff_tns_max_bands_1024.stub = true;\n\nfunction _ff_tns_max_bands_128(...args) {\n  if (!wasmImports[\"ff_tns_max_bands_128\"] || wasmImports[\"ff_tns_max_bands_128\"].stub) abort(\"external symbol 'ff_tns_max_bands_128' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_tns_max_bands_128\"](...args);\n}\n\n_ff_tns_max_bands_128.stub = true;\n\nfunction _ff_tns_max_bands_480(...args) {\n  if (!wasmImports[\"ff_tns_max_bands_480\"] || wasmImports[\"ff_tns_max_bands_480\"].stub) abort(\"external symbol 'ff_tns_max_bands_480' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_tns_max_bands_480\"](...args);\n}\n\n_ff_tns_max_bands_480.stub = true;\n\nfunction _ff_tns_max_bands_512(...args) {\n  if (!wasmImports[\"ff_tns_max_bands_512\"] || wasmImports[\"ff_tns_max_bands_512\"].stub) abort(\"external symbol 'ff_tns_max_bands_512' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_tns_max_bands_512\"](...args);\n}\n\n_ff_tns_max_bands_512.stub = true;\n\nfunction _ff_ue_golomb_vlc_code(...args) {\n  if (!wasmImports[\"ff_ue_golomb_vlc_code\"] || wasmImports[\"ff_ue_golomb_vlc_code\"].stub) abort(\"external symbol 'ff_ue_golomb_vlc_code' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_ue_golomb_vlc_code\"](...args);\n}\n\n_ff_ue_golomb_vlc_code.stub = true;\n\nfunction _ff_urlcontext_child_class_iterate(...args) {\n  if (!wasmImports[\"ff_urlcontext_child_class_iterate\"] || wasmImports[\"ff_urlcontext_child_class_iterate\"].stub) abort(\"external symbol 'ff_urlcontext_child_class_iterate' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_urlcontext_child_class_iterate\"](...args);\n}\n\n_ff_urlcontext_child_class_iterate.stub = true;\n\nfunction _ff_wav_codec_tags_list(...args) {\n  if (!wasmImports[\"ff_wav_codec_tags_list\"] || wasmImports[\"ff_wav_codec_tags_list\"].stub) abort(\"external symbol 'ff_wav_codec_tags_list' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_wav_codec_tags_list\"](...args);\n}\n\n_ff_wav_codec_tags_list.stub = true;\n\nfunction _ff_wav_demuxer(...args) {\n  if (!wasmImports[\"ff_wav_demuxer\"] || wasmImports[\"ff_wav_demuxer\"].stub) abort(\"external symbol 'ff_wav_demuxer' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_wav_demuxer\"](...args);\n}\n\n_ff_wav_demuxer.stub = true;\n\nfunction _ff_yuv2rgb_coeffs(...args) {\n  if (!wasmImports[\"ff_yuv2rgb_coeffs\"] || wasmImports[\"ff_yuv2rgb_coeffs\"].stub) abort(\"external symbol 'ff_yuv2rgb_coeffs' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_yuv2rgb_coeffs\"](...args);\n}\n\n_ff_yuv2rgb_coeffs.stub = true;\n\nfunction _ff_zigzag_direct(...args) {\n  if (!wasmImports[\"ff_zigzag_direct\"] || wasmImports[\"ff_zigzag_direct\"].stub) abort(\"external symbol 'ff_zigzag_direct' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_zigzag_direct\"](...args);\n}\n\n_ff_zigzag_direct.stub = true;\n\nfunction _ff_zigzag_scan(...args) {\n  if (!wasmImports[\"ff_zigzag_scan\"] || wasmImports[\"ff_zigzag_scan\"].stub) abort(\"external symbol 'ff_zigzag_scan' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ff_zigzag_scan\"](...args);\n}\n\n_ff_zigzag_scan.stub = true;\n\nfunction _ffurl_context_class(...args) {\n  if (!wasmImports[\"ffurl_context_class\"] || wasmImports[\"ffurl_context_class\"].stub) abort(\"external symbol 'ffurl_context_class' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ffurl_context_class\"](...args);\n}\n\n_ffurl_context_class.stub = true;\n\nfunction _ffurl_get_short_seek(...args) {\n  if (!wasmImports[\"ffurl_get_short_seek\"] || wasmImports[\"ffurl_get_short_seek\"].stub) abort(\"external symbol 'ffurl_get_short_seek' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ffurl_get_short_seek\"](...args);\n}\n\n_ffurl_get_short_seek.stub = true;\n\nfunction _ffurl_read(...args) {\n  if (!wasmImports[\"ffurl_read\"] || wasmImports[\"ffurl_read\"].stub) abort(\"external symbol 'ffurl_read' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ffurl_read\"](...args);\n}\n\n_ffurl_read.stub = true;\n\nfunction _ffurl_seek(...args) {\n  if (!wasmImports[\"ffurl_seek\"] || wasmImports[\"ffurl_seek\"].stub) abort(\"external symbol 'ffurl_seek' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ffurl_seek\"](...args);\n}\n\n_ffurl_seek.stub = true;\n\nfunction _ffurl_write(...args) {\n  if (!wasmImports[\"ffurl_write\"] || wasmImports[\"ffurl_write\"].stub) abort(\"external symbol 'ffurl_write' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"ffurl_write\"](...args);\n}\n\n_ffurl_write.stub = true;\n\nvar inetPton4 = str => {\n  var b = str.split(\".\");\n  for (var i = 0; i < 4; i++) {\n    var tmp = Number(b[i]);\n    if (isNaN(tmp)) return null;\n    b[i] = tmp;\n  }\n  return (b[0] | (b[1] << 8) | (b[2] << 16) | (b[3] << 24)) >>> 0;\n};\n\nvar inetPton6 = str => {\n  var words;\n  var w, offset, z;\n  /* http://home.deds.nl/~aeron/regex/ */ var valid6regx = /^((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|$))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})$/i;\n  var parts = [];\n  if (!valid6regx.test(str)) {\n    return null;\n  }\n  if (str === \"::\") {\n    return [ 0, 0, 0, 0, 0, 0, 0, 0 ];\n  }\n  // Z placeholder to keep track of zeros when splitting the string on \":\"\n  if (str.startsWith(\"::\")) {\n    str = str.replace(\"::\", \"Z:\");\n  } else {\n    str = str.replace(\"::\", \":Z:\");\n  }\n  if (str.indexOf(\".\") > 0) {\n    // parse IPv4 embedded address\n    str = str.replace(new RegExp(\"[.]\", \"g\"), \":\");\n    words = str.split(\":\");\n    words[words.length - 4] = Number(words[words.length - 4]) + Number(words[words.length - 3]) * 256;\n    words[words.length - 3] = Number(words[words.length - 2]) + Number(words[words.length - 1]) * 256;\n    words = words.slice(0, words.length - 2);\n  } else {\n    words = str.split(\":\");\n  }\n  offset = 0;\n  z = 0;\n  for (w = 0; w < words.length; w++) {\n    if (typeof words[w] == \"string\") {\n      if (words[w] === \"Z\") {\n        // compressed zeros - write appropriate number of zero words\n        for (z = 0; z < (8 - words.length + 1); z++) {\n          parts[w + z] = 0;\n        }\n        offset = z - 1;\n      } else {\n        // parse hex field to 16-bit value and write it in network byte-order\n        parts[w + offset] = _htons(parseInt(words[w], 16));\n      }\n    } else {\n      // parsed IPv4 words\n      parts[w + offset] = words[w];\n    }\n  }\n  return [ (parts[1] << 16) | parts[0], (parts[3] << 16) | parts[2], (parts[5] << 16) | parts[4], (parts[7] << 16) | parts[6] ];\n};\n\nvar DNS = {\n  address_map: {\n    id: 1,\n    addrs: {},\n    names: {}\n  },\n  lookup_name(name) {\n    // If the name is already a valid ipv4 / ipv6 address, don't generate a fake one.\n    var res = inetPton4(name);\n    if (res !== null) {\n      return name;\n    }\n    res = inetPton6(name);\n    if (res !== null) {\n      return name;\n    }\n    // See if this name is already mapped.\n    var addr;\n    if (DNS.address_map.addrs[name]) {\n      addr = DNS.address_map.addrs[name];\n    } else {\n      var id = DNS.address_map.id++;\n      assert(id < 65535, \"exceeded max address mappings of 65535\");\n      addr = \"172.29.\" + (id & 255) + \".\" + (id & 65280);\n      DNS.address_map.names[addr] = name;\n      DNS.address_map.addrs[name] = addr;\n    }\n    return addr;\n  },\n  lookup_addr(addr) {\n    if (DNS.address_map.names[addr]) {\n      return DNS.address_map.names[addr];\n    }\n    return null;\n  }\n};\n\nvar inetNtop4 = addr => (addr & 255) + \".\" + ((addr >> 8) & 255) + \".\" + ((addr >> 16) & 255) + \".\" + ((addr >> 24) & 255);\n\nvar inetNtop6 = ints => {\n  //  ref:  http://www.ietf.org/rfc/rfc2373.txt - section 2.5.4\n  //  Format for IPv4 compatible and mapped  128-bit IPv6 Addresses\n  //  128-bits are split into eight 16-bit words\n  //  stored in network byte order (big-endian)\n  //  |                80 bits               | 16 |      32 bits        |\n  //  +-----------------------------------------------------------------+\n  //  |               10 bytes               |  2 |      4 bytes        |\n  //  +--------------------------------------+--------------------------+\n  //  +               5 words                |  1 |      2 words        |\n  //  +--------------------------------------+--------------------------+\n  //  |0000..............................0000|0000|    IPv4 ADDRESS     | (compatible)\n  //  +--------------------------------------+----+---------------------+\n  //  |0000..............................0000|FFFF|    IPv4 ADDRESS     | (mapped)\n  //  +--------------------------------------+----+---------------------+\n  var str = \"\";\n  var word = 0;\n  var longest = 0;\n  var lastzero = 0;\n  var zstart = 0;\n  var len = 0;\n  var i = 0;\n  var parts = [ ints[0] & 65535, (ints[0] >> 16), ints[1] & 65535, (ints[1] >> 16), ints[2] & 65535, (ints[2] >> 16), ints[3] & 65535, (ints[3] >> 16) ];\n  // Handle IPv4-compatible, IPv4-mapped, loopback and any/unspecified addresses\n  var hasipv4 = true;\n  var v4part = \"\";\n  // check if the 10 high-order bytes are all zeros (first 5 words)\n  for (i = 0; i < 5; i++) {\n    if (parts[i] !== 0) {\n      hasipv4 = false;\n      break;\n    }\n  }\n  if (hasipv4) {\n    // low-order 32-bits store an IPv4 address (bytes 13 to 16) (last 2 words)\n    v4part = inetNtop4(parts[6] | (parts[7] << 16));\n    // IPv4-mapped IPv6 address if 16-bit value (bytes 11 and 12) == 0xFFFF (6th word)\n    if (parts[5] === -1) {\n      str = \"::ffff:\";\n      str += v4part;\n      return str;\n    }\n    // IPv4-compatible IPv6 address if 16-bit value (bytes 11 and 12) == 0x0000 (6th word)\n    if (parts[5] === 0) {\n      str = \"::\";\n      // special case IPv6 addresses\n      if (v4part === \"0.0.0.0\") v4part = \"\";\n      // any/unspecified address\n      if (v4part === \"0.0.0.1\") v4part = \"1\";\n      // loopback address\n      str += v4part;\n      return str;\n    }\n  }\n  // Handle all other IPv6 addresses\n  // first run to find the longest contiguous zero words\n  for (word = 0; word < 8; word++) {\n    if (parts[word] === 0) {\n      if (word - lastzero > 1) {\n        len = 0;\n      }\n      lastzero = word;\n      len++;\n    }\n    if (len > longest) {\n      longest = len;\n      zstart = word - longest + 1;\n    }\n  }\n  for (word = 0; word < 8; word++) {\n    if (longest > 1) {\n      // compress contiguous zeros - to produce \"::\"\n      if (parts[word] === 0 && word >= zstart && word < (zstart + longest)) {\n        if (word === zstart) {\n          str += \":\";\n          if (zstart === 0) str += \":\";\n        }\n        continue;\n      }\n    }\n    // converts 16-bit words from big-endian to little-endian before converting to hex string\n    str += Number(_ntohs(parts[word] & 65535)).toString(16);\n    str += word < 7 ? \":\" : \"\";\n  }\n  return str;\n};\n\nvar zeroMemory = (ptr, size) => (growMemViews(), HEAPU8).fill(0, ptr, ptr + size);\n\n/** @param {number=} addrlen */ var writeSockaddr = (sa, family, addr, port, addrlen) => {\n  switch (family) {\n   case 2:\n    addr = inetPton4(addr);\n    zeroMemory(sa, 16);\n    if (addrlen) {\n      (growMemViews(), HEAP32)[((addrlen) >> 2)] = 16;\n    }\n    (growMemViews(), HEAP16)[((sa) >> 1)] = family;\n    (growMemViews(), HEAP32)[(((sa) + (4)) >> 2)] = addr;\n    (growMemViews(), HEAP16)[(((sa) + (2)) >> 1)] = _htons(port);\n    break;\n\n   case 10:\n    addr = inetPton6(addr);\n    zeroMemory(sa, 28);\n    if (addrlen) {\n      (growMemViews(), HEAP32)[((addrlen) >> 2)] = 28;\n    }\n    (growMemViews(), HEAP32)[((sa) >> 2)] = family;\n    (growMemViews(), HEAP32)[(((sa) + (8)) >> 2)] = addr[0];\n    (growMemViews(), HEAP32)[(((sa) + (12)) >> 2)] = addr[1];\n    (growMemViews(), HEAP32)[(((sa) + (16)) >> 2)] = addr[2];\n    (growMemViews(), HEAP32)[(((sa) + (20)) >> 2)] = addr[3];\n    (growMemViews(), HEAP16)[(((sa) + (2)) >> 1)] = _htons(port);\n    break;\n\n   default:\n    return 5;\n  }\n  return 0;\n};\n\nfunction _getaddrinfo(node, service, hint, out) {\n  if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(25, 0, 1, node, service, hint, out);\n  var addr = 0;\n  var port = 0;\n  var flags = 0;\n  var family = 0;\n  var type = 0;\n  var proto = 0;\n  var ai;\n  function allocaddrinfo(family, type, proto, canon, addr, port) {\n    var sa, salen, ai;\n    var errno;\n    salen = family === 10 ? 28 : 16;\n    addr = family === 10 ? inetNtop6(addr) : inetNtop4(addr);\n    sa = _malloc(salen);\n    errno = writeSockaddr(sa, family, addr, port);\n    assert(!errno);\n    ai = _malloc(32);\n    (growMemViews(), HEAP32)[(((ai) + (4)) >> 2)] = family;\n    (growMemViews(), HEAP32)[(((ai) + (8)) >> 2)] = type;\n    (growMemViews(), HEAP32)[(((ai) + (12)) >> 2)] = proto;\n    (growMemViews(), HEAPU32)[(((ai) + (24)) >> 2)] = canon;\n    (growMemViews(), HEAPU32)[(((ai) + (20)) >> 2)] = sa;\n    if (family === 10) {\n      (growMemViews(), HEAP32)[(((ai) + (16)) >> 2)] = 28;\n    } else {\n      (growMemViews(), HEAP32)[(((ai) + (16)) >> 2)] = 16;\n    }\n    (growMemViews(), HEAP32)[(((ai) + (28)) >> 2)] = 0;\n    return ai;\n  }\n  if (hint) {\n    flags = (growMemViews(), HEAP32)[((hint) >> 2)];\n    family = (growMemViews(), HEAP32)[(((hint) + (4)) >> 2)];\n    type = (growMemViews(), HEAP32)[(((hint) + (8)) >> 2)];\n    proto = (growMemViews(), HEAP32)[(((hint) + (12)) >> 2)];\n  }\n  if (type && !proto) {\n    proto = type === 2 ? 17 : 6;\n  }\n  if (!type && proto) {\n    type = proto === 17 ? 2 : 1;\n  }\n  // If type or proto are set to zero in hints we should really be returning multiple addrinfo values, but for\n  // now default to a TCP STREAM socket so we can at least return a sensible addrinfo given NULL hints.\n  if (proto === 0) {\n    proto = 6;\n  }\n  if (type === 0) {\n    type = 1;\n  }\n  if (!node && !service) {\n    return -2;\n  }\n  if (flags & ~(1 | 2 | 4 | 1024 | 8 | 16 | 32)) {\n    return -1;\n  }\n  if (hint !== 0 && ((growMemViews(), HEAP32)[((hint) >> 2)] & 2) && !node) {\n    return -1;\n  }\n  if (flags & 32) {\n    // TODO\n    return -2;\n  }\n  if (type !== 0 && type !== 1 && type !== 2) {\n    return -7;\n  }\n  if (family !== 0 && family !== 2 && family !== 10) {\n    return -6;\n  }\n  if (service) {\n    service = UTF8ToString(service);\n    port = parseInt(service, 10);\n    if (isNaN(port)) {\n      if (flags & 1024) {\n        return -2;\n      }\n      // TODO support resolving well-known service names from:\n      // http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt\n      return -8;\n    }\n  }\n  if (!node) {\n    if (family === 0) {\n      family = 2;\n    }\n    if ((flags & 1) === 0) {\n      if (family === 2) {\n        addr = _htonl(2130706433);\n      } else {\n        addr = [ 0, 0, 0, _htonl(1) ];\n      }\n    }\n    ai = allocaddrinfo(family, type, proto, null, addr, port);\n    (growMemViews(), HEAPU32)[((out) >> 2)] = ai;\n    return 0;\n  }\n  // try as a numeric address\n  node = UTF8ToString(node);\n  addr = inetPton4(node);\n  if (addr !== null) {\n    // incoming node is a valid ipv4 address\n    if (family === 0 || family === 2) {\n      family = 2;\n    } else if (family === 10 && (flags & 8)) {\n      addr = [ 0, 0, _htonl(65535), addr ];\n      family = 10;\n    } else {\n      return -2;\n    }\n  } else {\n    addr = inetPton6(node);\n    if (addr !== null) {\n      // incoming node is a valid ipv6 address\n      if (family === 0 || family === 10) {\n        family = 10;\n      } else {\n        return -2;\n      }\n    }\n  }\n  if (addr != null) {\n    ai = allocaddrinfo(family, type, proto, node, addr, port);\n    (growMemViews(), HEAPU32)[((out) >> 2)] = ai;\n    return 0;\n  }\n  if (flags & 4) {\n    return -2;\n  }\n  // try as a hostname\n  // resolve the hostname to a temporary fake address\n  node = DNS.lookup_name(node);\n  addr = inetPton4(node);\n  if (family === 0) {\n    family = 2;\n  } else if (family === 10) {\n    addr = [ 0, 0, _htonl(65535), addr ];\n  }\n  ai = allocaddrinfo(family, type, proto, null, addr, port);\n  (growMemViews(), HEAPU32)[((out) >> 2)] = ai;\n  return 0;\n}\n\n_getaddrinfo.sig = \"ipppp\";\n\nvar readSockaddr = (sa, salen) => {\n  // family / port offsets are common to both sockaddr_in and sockaddr_in6\n  var family = (growMemViews(), HEAP16)[((sa) >> 1)];\n  var port = _ntohs((growMemViews(), HEAPU16)[(((sa) + (2)) >> 1)]);\n  var addr;\n  switch (family) {\n   case 2:\n    if (salen !== 16) {\n      return {\n        errno: 28\n      };\n    }\n    addr = (growMemViews(), HEAP32)[(((sa) + (4)) >> 2)];\n    addr = inetNtop4(addr);\n    break;\n\n   case 10:\n    if (salen !== 28) {\n      return {\n        errno: 28\n      };\n    }\n    addr = [ (growMemViews(), HEAP32)[(((sa) + (8)) >> 2)], (growMemViews(), HEAP32)[(((sa) + (12)) >> 2)], (growMemViews(), \n    HEAP32)[(((sa) + (16)) >> 2)], (growMemViews(), HEAP32)[(((sa) + (20)) >> 2)] ];\n    addr = inetNtop6(addr);\n    break;\n\n   default:\n    return {\n      errno: 5\n    };\n  }\n  return {\n    family,\n    addr,\n    port\n  };\n};\n\nvar _getnameinfo = (sa, salen, node, nodelen, serv, servlen, flags) => {\n  var info = readSockaddr(sa, salen);\n  if (info.errno) {\n    return -6;\n  }\n  var port = info.port;\n  var addr = info.addr;\n  var overflowed = false;\n  if (node && nodelen) {\n    var lookup;\n    if ((flags & 1) || !(lookup = DNS.lookup_addr(addr))) {\n      if (flags & 8) {\n        return -2;\n      }\n    } else {\n      addr = lookup;\n    }\n    var numBytesWrittenExclNull = stringToUTF8(addr, node, nodelen);\n    if (numBytesWrittenExclNull + 1 >= nodelen) {\n      overflowed = true;\n    }\n  }\n  if (serv && servlen) {\n    port = \"\" + port;\n    var numBytesWrittenExclNull = stringToUTF8(port, serv, servlen);\n    if (numBytesWrittenExclNull + 1 >= servlen) {\n      overflowed = true;\n    }\n  }\n  if (overflowed) {\n    // Note: even when we overflow, getnameinfo() is specced to write out the truncated results.\n    return -12;\n  }\n  return 0;\n};\n\n_getnameinfo.sig = \"ipipipii\";\n\nvar _emscripten_glActiveTexture = x0 => GLctx.activeTexture(x0);\n\n_emscripten_glActiveTexture.sig = \"vi\";\n\nvar _glActiveTexture = _emscripten_glActiveTexture;\n\n_glActiveTexture.sig = \"vi\";\n\nvar _emscripten_glAttachShader = (program, shader) => {\n  GLctx.attachShader(GL.programs[program], GL.shaders[shader]);\n};\n\n_emscripten_glAttachShader.sig = \"vii\";\n\nvar _glAttachShader = _emscripten_glAttachShader;\n\n_glAttachShader.sig = \"vii\";\n\nvar _emscripten_glBindAttribLocation = (program, index, name) => {\n  GLctx.bindAttribLocation(GL.programs[program], index, UTF8ToString(name));\n};\n\n_emscripten_glBindAttribLocation.sig = \"viip\";\n\nvar _glBindAttribLocation = _emscripten_glBindAttribLocation;\n\n_glBindAttribLocation.sig = \"viip\";\n\nvar _emscripten_glBindBuffer = (target, buffer) => {\n  if (target == 35051) {\n    // In WebGL 2 glReadPixels entry point, we need to use a different WebGL 2\n    // API function call when a buffer is bound to\n    // GL_PIXEL_PACK_BUFFER_BINDING point, so must keep track whether that\n    // binding point is non-null to know what is the proper API function to\n    // call.\n    GLctx.currentPixelPackBufferBinding = buffer;\n  } else if (target == 35052) {\n    // In WebGL 2 gl(Compressed)Tex(Sub)Image[23]D entry points, we need to\n    // use a different WebGL 2 API function call when a buffer is bound to\n    // GL_PIXEL_UNPACK_BUFFER_BINDING point, so must keep track whether that\n    // binding point is non-null to know what is the proper API function to\n    // call.\n    GLctx.currentPixelUnpackBufferBinding = buffer;\n  }\n  GLctx.bindBuffer(target, GL.buffers[buffer]);\n};\n\n_emscripten_glBindBuffer.sig = \"vii\";\n\nvar _glBindBuffer = _emscripten_glBindBuffer;\n\n_glBindBuffer.sig = \"vii\";\n\nvar _emscripten_glBindFramebuffer = (target, framebuffer) => {\n  GLctx.bindFramebuffer(target, GL.framebuffers[framebuffer]);\n};\n\n_emscripten_glBindFramebuffer.sig = \"vii\";\n\nvar _glBindFramebuffer = _emscripten_glBindFramebuffer;\n\n_glBindFramebuffer.sig = \"vii\";\n\nvar _emscripten_glBindRenderbuffer = (target, renderbuffer) => {\n  GLctx.bindRenderbuffer(target, GL.renderbuffers[renderbuffer]);\n};\n\n_emscripten_glBindRenderbuffer.sig = \"vii\";\n\nvar _glBindRenderbuffer = _emscripten_glBindRenderbuffer;\n\n_glBindRenderbuffer.sig = \"vii\";\n\nvar _emscripten_glBindTexture = (target, texture) => {\n  GLctx.bindTexture(target, GL.textures[texture]);\n};\n\n_emscripten_glBindTexture.sig = \"vii\";\n\nvar _glBindTexture = _emscripten_glBindTexture;\n\n_glBindTexture.sig = \"vii\";\n\nvar _emscripten_glBlendFunc = (x0, x1) => GLctx.blendFunc(x0, x1);\n\n_emscripten_glBlendFunc.sig = \"vii\";\n\nvar _glBlendFunc = _emscripten_glBlendFunc;\n\n_glBlendFunc.sig = \"vii\";\n\nvar _emscripten_glBlitFramebuffer = (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9) => GLctx.blitFramebuffer(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9);\n\n_emscripten_glBlitFramebuffer.sig = \"viiiiiiiiii\";\n\nvar _glBlitFramebuffer = _emscripten_glBlitFramebuffer;\n\n_glBlitFramebuffer.sig = \"viiiiiiiiii\";\n\nvar _emscripten_glBufferData = (target, size, data, usage) => {\n  if (true) {\n    // If size is zero, WebGL would interpret uploading the whole input\n    // arraybuffer (starting from given offset), which would not make sense in\n    // WebAssembly, so avoid uploading if size is zero. However we must still\n    // call bufferData to establish a backing storage of zero bytes.\n    if (data && size) {\n      GLctx.bufferData(target, (growMemViews(), HEAPU8), usage, data, size);\n    } else {\n      GLctx.bufferData(target, size, usage);\n    }\n    return;\n  }\n};\n\n_emscripten_glBufferData.sig = \"vippi\";\n\nvar _glBufferData = _emscripten_glBufferData;\n\n_glBufferData.sig = \"vippi\";\n\nvar _emscripten_glCheckFramebufferStatus = x0 => GLctx.checkFramebufferStatus(x0);\n\n_emscripten_glCheckFramebufferStatus.sig = \"ii\";\n\nvar _glCheckFramebufferStatus = _emscripten_glCheckFramebufferStatus;\n\n_glCheckFramebufferStatus.sig = \"ii\";\n\nvar _emscripten_glClear = x0 => GLctx.clear(x0);\n\n_emscripten_glClear.sig = \"vi\";\n\nvar _glClear = _emscripten_glClear;\n\n_glClear.sig = \"vi\";\n\nvar _emscripten_glClearColor = (x0, x1, x2, x3) => GLctx.clearColor(x0, x1, x2, x3);\n\n_emscripten_glClearColor.sig = \"vffff\";\n\nvar _glClearColor = _emscripten_glClearColor;\n\n_glClearColor.sig = \"vffff\";\n\nvar _emscripten_glClearDepthf = x0 => GLctx.clearDepth(x0);\n\n_emscripten_glClearDepthf.sig = \"vf\";\n\nvar _glClearDepthf = _emscripten_glClearDepthf;\n\n_glClearDepthf.sig = \"vf\";\n\nvar _emscripten_glClearStencil = x0 => GLctx.clearStencil(x0);\n\n_emscripten_glClearStencil.sig = \"vi\";\n\nvar _glClearStencil = _emscripten_glClearStencil;\n\n_glClearStencil.sig = \"vi\";\n\nvar _emscripten_glClipControlEXT = (origin, depth) => {\n  GLctx.extClipControl[\"clipControlEXT\"](origin, depth);\n};\n\n_emscripten_glClipControlEXT.sig = \"vii\";\n\nvar _glClipControlEXT = _emscripten_glClipControlEXT;\n\nvar _emscripten_glColorMask = (red, green, blue, alpha) => {\n  GLctx.colorMask(!!red, !!green, !!blue, !!alpha);\n};\n\n_emscripten_glColorMask.sig = \"viiii\";\n\nvar _glColorMask = _emscripten_glColorMask;\n\n_glColorMask.sig = \"viiii\";\n\nvar _emscripten_glCompileShader = shader => {\n  GLctx.compileShader(GL.shaders[shader]);\n};\n\n_emscripten_glCompileShader.sig = \"vi\";\n\nvar _glCompileShader = _emscripten_glCompileShader;\n\n_glCompileShader.sig = \"vi\";\n\nvar _emscripten_glCreateProgram = () => {\n  var id = GL.getNewId(GL.programs);\n  var program = GLctx.createProgram();\n  // Store additional information needed for each shader program:\n  program.name = id;\n  // Lazy cache results of\n  // glGetProgramiv(GL_ACTIVE_UNIFORM_MAX_LENGTH/GL_ACTIVE_ATTRIBUTE_MAX_LENGTH/GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH)\n  program.maxUniformLength = program.maxAttributeLength = program.maxUniformBlockNameLength = 0;\n  program.uniformIdCounter = 1;\n  GL.programs[id] = program;\n  return id;\n};\n\n_emscripten_glCreateProgram.sig = \"i\";\n\nvar _glCreateProgram = _emscripten_glCreateProgram;\n\n_glCreateProgram.sig = \"i\";\n\nvar _emscripten_glCreateShader = shaderType => {\n  var id = GL.getNewId(GL.shaders);\n  GL.shaders[id] = GLctx.createShader(shaderType);\n  return id;\n};\n\n_emscripten_glCreateShader.sig = \"ii\";\n\nvar _glCreateShader = _emscripten_glCreateShader;\n\n_glCreateShader.sig = \"ii\";\n\nvar _emscripten_glCullFace = x0 => GLctx.cullFace(x0);\n\n_emscripten_glCullFace.sig = \"vi\";\n\nvar _glCullFace = _emscripten_glCullFace;\n\n_glCullFace.sig = \"vi\";\n\nvar _emscripten_glDeleteBuffers = (n, buffers) => {\n  for (var i = 0; i < n; i++) {\n    var id = (growMemViews(), HEAP32)[(((buffers) + (i * 4)) >> 2)];\n    var buffer = GL.buffers[id];\n    // From spec: \"glDeleteBuffers silently ignores 0's and names that do not\n    // correspond to existing buffer objects.\"\n    if (!buffer) continue;\n    GLctx.deleteBuffer(buffer);\n    buffer.name = 0;\n    GL.buffers[id] = null;\n    if (id == GLctx.currentPixelPackBufferBinding) GLctx.currentPixelPackBufferBinding = 0;\n    if (id == GLctx.currentPixelUnpackBufferBinding) GLctx.currentPixelUnpackBufferBinding = 0;\n  }\n};\n\n_emscripten_glDeleteBuffers.sig = \"vip\";\n\nvar _glDeleteBuffers = _emscripten_glDeleteBuffers;\n\n_glDeleteBuffers.sig = \"vip\";\n\nvar _emscripten_glDeleteFramebuffers = (n, framebuffers) => {\n  for (var i = 0; i < n; ++i) {\n    var id = (growMemViews(), HEAP32)[(((framebuffers) + (i * 4)) >> 2)];\n    var framebuffer = GL.framebuffers[id];\n    if (!framebuffer) continue;\n    // GL spec: \"glDeleteFramebuffers silently ignores 0s and names that do not correspond to existing framebuffer objects\".\n    GLctx.deleteFramebuffer(framebuffer);\n    framebuffer.name = 0;\n    GL.framebuffers[id] = null;\n  }\n};\n\n_emscripten_glDeleteFramebuffers.sig = \"vip\";\n\nvar _glDeleteFramebuffers = _emscripten_glDeleteFramebuffers;\n\n_glDeleteFramebuffers.sig = \"vip\";\n\nvar _emscripten_glDeleteProgram = id => {\n  if (!id) return;\n  var program = GL.programs[id];\n  if (!program) {\n    // glDeleteProgram actually signals an error when deleting a nonexisting\n    // object, unlike some other GL delete functions.\n    GL.recordError(1281);\n    return;\n  }\n  GLctx.deleteProgram(program);\n  program.name = 0;\n  GL.programs[id] = null;\n};\n\n_emscripten_glDeleteProgram.sig = \"vi\";\n\nvar _glDeleteProgram = _emscripten_glDeleteProgram;\n\n_glDeleteProgram.sig = \"vi\";\n\nvar _emscripten_glDeleteRenderbuffers = (n, renderbuffers) => {\n  for (var i = 0; i < n; i++) {\n    var id = (growMemViews(), HEAP32)[(((renderbuffers) + (i * 4)) >> 2)];\n    var renderbuffer = GL.renderbuffers[id];\n    if (!renderbuffer) continue;\n    // GL spec: \"glDeleteRenderbuffers silently ignores 0s and names that do not correspond to existing renderbuffer objects\".\n    GLctx.deleteRenderbuffer(renderbuffer);\n    renderbuffer.name = 0;\n    GL.renderbuffers[id] = null;\n  }\n};\n\n_emscripten_glDeleteRenderbuffers.sig = \"vip\";\n\nvar _glDeleteRenderbuffers = _emscripten_glDeleteRenderbuffers;\n\n_glDeleteRenderbuffers.sig = \"vip\";\n\nvar _emscripten_glDeleteShader = id => {\n  if (!id) return;\n  var shader = GL.shaders[id];\n  if (!shader) {\n    // glDeleteShader actually signals an error when deleting a nonexisting\n    // object, unlike some other GL delete functions.\n    GL.recordError(1281);\n    return;\n  }\n  GLctx.deleteShader(shader);\n  GL.shaders[id] = null;\n};\n\n_emscripten_glDeleteShader.sig = \"vi\";\n\nvar _glDeleteShader = _emscripten_glDeleteShader;\n\n_glDeleteShader.sig = \"vi\";\n\nvar _emscripten_glDeleteSync = id => {\n  if (!id) return;\n  var sync = GL.syncs[id];\n  if (!sync) {\n    // glDeleteSync signals an error when deleting a nonexisting object, unlike some other GL delete functions.\n    GL.recordError(1281);\n    return;\n  }\n  GLctx.deleteSync(sync);\n  sync.name = 0;\n  GL.syncs[id] = null;\n};\n\n_emscripten_glDeleteSync.sig = \"vp\";\n\nvar _glDeleteSync = _emscripten_glDeleteSync;\n\n_glDeleteSync.sig = \"vp\";\n\nvar _emscripten_glDeleteTextures = (n, textures) => {\n  for (var i = 0; i < n; i++) {\n    var id = (growMemViews(), HEAP32)[(((textures) + (i * 4)) >> 2)];\n    var texture = GL.textures[id];\n    // GL spec: \"glDeleteTextures silently ignores 0s and names that do not\n    // correspond to existing textures\".\n    if (!texture) continue;\n    GLctx.deleteTexture(texture);\n    texture.name = 0;\n    GL.textures[id] = null;\n  }\n};\n\n_emscripten_glDeleteTextures.sig = \"vip\";\n\nvar _glDeleteTextures = _emscripten_glDeleteTextures;\n\n_glDeleteTextures.sig = \"vip\";\n\nvar _emscripten_glDepthFunc = x0 => GLctx.depthFunc(x0);\n\n_emscripten_glDepthFunc.sig = \"vi\";\n\nvar _glDepthFunc = _emscripten_glDepthFunc;\n\n_glDepthFunc.sig = \"vi\";\n\nvar _emscripten_glDepthMask = flag => {\n  GLctx.depthMask(!!flag);\n};\n\n_emscripten_glDepthMask.sig = \"vi\";\n\nvar _glDepthMask = _emscripten_glDepthMask;\n\n_glDepthMask.sig = \"vi\";\n\nvar _emscripten_glDepthRangef = (x0, x1) => GLctx.depthRange(x0, x1);\n\n_emscripten_glDepthRangef.sig = \"vff\";\n\nvar _glDepthRangef = _emscripten_glDepthRangef;\n\n_glDepthRangef.sig = \"vff\";\n\nvar _emscripten_glDetachShader = (program, shader) => {\n  GLctx.detachShader(GL.programs[program], GL.shaders[shader]);\n};\n\n_emscripten_glDetachShader.sig = \"vii\";\n\nvar _glDetachShader = _emscripten_glDetachShader;\n\n_glDetachShader.sig = \"vii\";\n\nvar _emscripten_glDisable = x0 => GLctx.disable(x0);\n\n_emscripten_glDisable.sig = \"vi\";\n\nvar _glDisable = _emscripten_glDisable;\n\n_glDisable.sig = \"vi\";\n\nvar _emscripten_glDisableVertexAttribArray = index => {\n  GLctx.disableVertexAttribArray(index);\n};\n\n_emscripten_glDisableVertexAttribArray.sig = \"vi\";\n\nvar _glDisableVertexAttribArray = _emscripten_glDisableVertexAttribArray;\n\n_glDisableVertexAttribArray.sig = \"vi\";\n\nvar _emscripten_glDrawArrays = (mode, first, count) => {\n  GLctx.drawArrays(mode, first, count);\n};\n\n_emscripten_glDrawArrays.sig = \"viii\";\n\nvar _glDrawArrays = _emscripten_glDrawArrays;\n\n_glDrawArrays.sig = \"viii\";\n\nvar _emscripten_glDrawArraysInstanced = (mode, first, count, primcount) => {\n  GLctx.drawArraysInstanced(mode, first, count, primcount);\n};\n\n_emscripten_glDrawArraysInstanced.sig = \"viiii\";\n\nvar _glDrawArraysInstanced = _emscripten_glDrawArraysInstanced;\n\n_glDrawArraysInstanced.sig = \"viiii\";\n\nvar _emscripten_glDrawElements = (mode, count, type, indices) => {\n  GLctx.drawElements(mode, count, type, indices);\n};\n\n_emscripten_glDrawElements.sig = \"viiip\";\n\nvar _glDrawElements = _emscripten_glDrawElements;\n\n_glDrawElements.sig = \"viiip\";\n\nvar _emscripten_glDrawElementsInstanced = (mode, count, type, indices, primcount) => {\n  GLctx.drawElementsInstanced(mode, count, type, indices, primcount);\n};\n\n_emscripten_glDrawElementsInstanced.sig = \"viiipi\";\n\nvar _glDrawElementsInstanced = _emscripten_glDrawElementsInstanced;\n\n_glDrawElementsInstanced.sig = \"viiipi\";\n\nvar _emscripten_glEnable = x0 => GLctx.enable(x0);\n\n_emscripten_glEnable.sig = \"vi\";\n\nvar _glEnable = _emscripten_glEnable;\n\n_glEnable.sig = \"vi\";\n\nvar _emscripten_glEnableVertexAttribArray = index => {\n  GLctx.enableVertexAttribArray(index);\n};\n\n_emscripten_glEnableVertexAttribArray.sig = \"vi\";\n\nvar _glEnableVertexAttribArray = _emscripten_glEnableVertexAttribArray;\n\n_glEnableVertexAttribArray.sig = \"vi\";\n\nvar _emscripten_glFenceSync = (condition, flags) => {\n  var sync = GLctx.fenceSync(condition, flags);\n  if (sync) {\n    var id = GL.getNewId(GL.syncs);\n    sync.name = id;\n    GL.syncs[id] = sync;\n    return id;\n  }\n  return 0;\n};\n\n_emscripten_glFenceSync.sig = \"pii\";\n\nvar _glFenceSync = _emscripten_glFenceSync;\n\n_glFenceSync.sig = \"pii\";\n\nvar _emscripten_glFramebufferRenderbuffer = (target, attachment, renderbuffertarget, renderbuffer) => {\n  GLctx.framebufferRenderbuffer(target, attachment, renderbuffertarget, GL.renderbuffers[renderbuffer]);\n};\n\n_emscripten_glFramebufferRenderbuffer.sig = \"viiii\";\n\nvar _glFramebufferRenderbuffer = _emscripten_glFramebufferRenderbuffer;\n\n_glFramebufferRenderbuffer.sig = \"viiii\";\n\nvar _emscripten_glFramebufferTexture2D = (target, attachment, textarget, texture, level) => {\n  GLctx.framebufferTexture2D(target, attachment, textarget, GL.textures[texture], level);\n};\n\n_emscripten_glFramebufferTexture2D.sig = \"viiiii\";\n\nvar _glFramebufferTexture2D = _emscripten_glFramebufferTexture2D;\n\n_glFramebufferTexture2D.sig = \"viiiii\";\n\nvar _emscripten_glFrontFace = x0 => GLctx.frontFace(x0);\n\n_emscripten_glFrontFace.sig = \"vi\";\n\nvar _glFrontFace = _emscripten_glFrontFace;\n\n_glFrontFace.sig = \"vi\";\n\nvar _emscripten_glGenBuffers = (n, buffers) => {\n  GL.genObject(n, buffers, \"createBuffer\", GL.buffers);\n};\n\n_emscripten_glGenBuffers.sig = \"vip\";\n\nvar _glGenBuffers = _emscripten_glGenBuffers;\n\n_glGenBuffers.sig = \"vip\";\n\nvar _emscripten_glGenFramebuffers = (n, ids) => {\n  GL.genObject(n, ids, \"createFramebuffer\", GL.framebuffers);\n};\n\n_emscripten_glGenFramebuffers.sig = \"vip\";\n\nvar _glGenFramebuffers = _emscripten_glGenFramebuffers;\n\n_glGenFramebuffers.sig = \"vip\";\n\nvar _emscripten_glGenRenderbuffers = (n, renderbuffers) => {\n  GL.genObject(n, renderbuffers, \"createRenderbuffer\", GL.renderbuffers);\n};\n\n_emscripten_glGenRenderbuffers.sig = \"vip\";\n\nvar _glGenRenderbuffers = _emscripten_glGenRenderbuffers;\n\n_glGenRenderbuffers.sig = \"vip\";\n\nvar _emscripten_glGenTextures = (n, textures) => {\n  GL.genObject(n, textures, \"createTexture\", GL.textures);\n};\n\n_emscripten_glGenTextures.sig = \"vip\";\n\nvar _glGenTextures = _emscripten_glGenTextures;\n\n_glGenTextures.sig = \"vip\";\n\nvar _emscripten_glGetBufferSubData = (target, offset, size, data) => {\n  if (!data) {\n    // GLES2 specification does not specify how to behave if data is a null pointer. Since calling this function does not make sense\n    // if data == null, issue a GL error to notify user about it.\n    GL.recordError(1281);\n    return;\n  }\n  size && GLctx.getBufferSubData(target, offset, (growMemViews(), HEAPU8), data, size);\n};\n\n_emscripten_glGetBufferSubData.sig = \"vippp\";\n\nvar _glGetBufferSubData = _emscripten_glGetBufferSubData;\n\n_glGetBufferSubData.sig = \"vippp\";\n\nvar _emscripten_glGetError = () => {\n  var error = GLctx.getError() || GL.lastError;\n  GL.lastError = 0;\n  return error;\n};\n\n_emscripten_glGetError.sig = \"i\";\n\nvar _glGetError = _emscripten_glGetError;\n\n_glGetError.sig = \"i\";\n\nvar webglGetExtensions = () => {\n  var exts = getEmscriptenSupportedExtensions(GLctx);\n  exts = exts.concat(exts.map(e => \"GL_\" + e));\n  return exts;\n};\n\nvar emscriptenWebGLGet = (name_, p, type) => {\n  // Guard against user passing a null pointer.\n  // Note that GLES2 spec does not say anything about how passing a null\n  // pointer should be treated.  Testing on desktop core GL 3, the application\n  // crashes on glGetIntegerv to a null pointer, but better to report an error\n  // instead of doing anything random.\n  if (!p) {\n    GL.recordError(1281);\n    return;\n  }\n  var ret = undefined;\n  switch (name_) {\n   // Handle a few trivial GLES values\n    case 36346:\n    // GL_SHADER_COMPILER\n    ret = 1;\n    break;\n\n   case 36344:\n    // GL_SHADER_BINARY_FORMATS\n    if (type != 0 && type != 1) {\n      GL.recordError(1280);\n    }\n    // Do not write anything to the out pointer, since no binary formats are\n    // supported.\n    return;\n\n   case 34814:\n   // GL_NUM_PROGRAM_BINARY_FORMATS\n    case 36345:\n    // GL_NUM_SHADER_BINARY_FORMATS\n    ret = 0;\n    break;\n\n   case 34466:\n    // GL_NUM_COMPRESSED_TEXTURE_FORMATS\n    // WebGL doesn't have GL_NUM_COMPRESSED_TEXTURE_FORMATS (it's obsolete\n    // since GL_COMPRESSED_TEXTURE_FORMATS returns a JS array that can be\n    // queried for length), so implement it ourselves to allow C++ GLES2\n    // code to get the length.\n    var formats = GLctx.getParameter(34467);\n    ret = formats ? formats.length : 0;\n    break;\n\n   case 33309:\n    // GL_NUM_EXTENSIONS\n    if (GL.currentContext.version < 2) {\n      // Calling GLES3/WebGL2 function with a GLES2/WebGL1 context\n      GL.recordError(1282);\n      return;\n    }\n    ret = webglGetExtensions().length;\n    break;\n\n   case 33307:\n   // GL_MAJOR_VERSION\n    case 33308:\n    // GL_MINOR_VERSION\n    if (GL.currentContext.version < 2) {\n      GL.recordError(1280);\n      // GL_INVALID_ENUM\n      return;\n    }\n    ret = name_ == 33307 ? 3 : 0;\n    // return version 3.0\n    break;\n  }\n  if (ret === undefined) {\n    var result = GLctx.getParameter(name_);\n    switch (typeof result) {\n     case \"number\":\n      ret = result;\n      break;\n\n     case \"boolean\":\n      ret = result ? 1 : 0;\n      break;\n\n     case \"string\":\n      GL.recordError(1280);\n      // GL_INVALID_ENUM\n      return;\n\n     case \"object\":\n      if (result === null) {\n        // null is a valid result for some (e.g., which buffer is bound -\n        // perhaps nothing is bound), but otherwise can mean an invalid\n        // name_, which we need to report as an error\n        switch (name_) {\n         case 34964:\n         // ARRAY_BUFFER_BINDING\n          case 35725:\n         // CURRENT_PROGRAM\n          case 34965:\n         // ELEMENT_ARRAY_BUFFER_BINDING\n          case 36006:\n         // FRAMEBUFFER_BINDING or DRAW_FRAMEBUFFER_BINDING\n          case 36007:\n         // RENDERBUFFER_BINDING\n          case 32873:\n         // TEXTURE_BINDING_2D\n          case 34229:\n         // WebGL 2 GL_VERTEX_ARRAY_BINDING, or WebGL 1 extension OES_vertex_array_object GL_VERTEX_ARRAY_BINDING_OES\n          case 36662:\n         // COPY_READ_BUFFER_BINDING or COPY_READ_BUFFER\n          case 36663:\n         // COPY_WRITE_BUFFER_BINDING or COPY_WRITE_BUFFER\n          case 35053:\n         // PIXEL_PACK_BUFFER_BINDING\n          case 35055:\n         // PIXEL_UNPACK_BUFFER_BINDING\n          case 36010:\n         // READ_FRAMEBUFFER_BINDING\n          case 35097:\n         // SAMPLER_BINDING\n          case 35869:\n         // TEXTURE_BINDING_2D_ARRAY\n          case 32874:\n         // TEXTURE_BINDING_3D\n          case 36389:\n         // TRANSFORM_FEEDBACK_BINDING\n          case 35983:\n         // TRANSFORM_FEEDBACK_BUFFER_BINDING\n          case 35368:\n         // UNIFORM_BUFFER_BINDING\n          case 34068:\n          {\n            // TEXTURE_BINDING_CUBE_MAP\n            ret = 0;\n            break;\n          }\n\n         default:\n          {\n            GL.recordError(1280);\n            // GL_INVALID_ENUM\n            return;\n          }\n        }\n      } else if (result instanceof Float32Array || result instanceof Uint32Array || result instanceof Int32Array || result instanceof Array) {\n        for (var i = 0; i < result.length; ++i) {\n          switch (type) {\n           case 0:\n            (growMemViews(), HEAP32)[(((p) + (i * 4)) >> 2)] = result[i];\n            break;\n\n           case 2:\n            (growMemViews(), HEAPF32)[(((p) + (i * 4)) >> 2)] = result[i];\n            break;\n\n           case 4:\n            (growMemViews(), HEAP8)[(p) + (i)] = result[i] ? 1 : 0;\n            break;\n          }\n        }\n        return;\n      } else {\n        try {\n          ret = result.name | 0;\n        } catch (e) {\n          GL.recordError(1280);\n          // GL_INVALID_ENUM\n          err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);\n          return;\n        }\n      }\n      break;\n\n     default:\n      GL.recordError(1280);\n      // GL_INVALID_ENUM\n      err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof (result)}!`);\n      return;\n    }\n  }\n  switch (type) {\n   case 1:\n    writeI53ToI64(p, ret);\n    break;\n\n   case 0:\n    (growMemViews(), HEAP32)[((p) >> 2)] = ret;\n    break;\n\n   case 2:\n    (growMemViews(), HEAPF32)[((p) >> 2)] = ret;\n    break;\n\n   case 4:\n    (growMemViews(), HEAP8)[p] = ret ? 1 : 0;\n    break;\n  }\n};\n\nvar _emscripten_glGetFloatv = (name_, p) => emscriptenWebGLGet(name_, p, 2);\n\n_emscripten_glGetFloatv.sig = \"vip\";\n\nvar _glGetFloatv = _emscripten_glGetFloatv;\n\n_glGetFloatv.sig = \"vip\";\n\nvar _emscripten_glGetIntegerv = (name_, p) => emscriptenWebGLGet(name_, p, 0);\n\n_emscripten_glGetIntegerv.sig = \"vip\";\n\nvar _glGetIntegerv = _emscripten_glGetIntegerv;\n\n_glGetIntegerv.sig = \"vip\";\n\nvar _emscripten_glGetProgramInfoLog = (program, maxLength, length, infoLog) => {\n  var log = GLctx.getProgramInfoLog(GL.programs[program]);\n  if (log === null) log = \"(unknown error)\";\n  var numBytesWrittenExclNull = (maxLength > 0 && infoLog) ? stringToUTF8(log, infoLog, maxLength) : 0;\n  if (length) (growMemViews(), HEAP32)[((length) >> 2)] = numBytesWrittenExclNull;\n};\n\n_emscripten_glGetProgramInfoLog.sig = \"viipp\";\n\nvar _glGetProgramInfoLog = _emscripten_glGetProgramInfoLog;\n\n_glGetProgramInfoLog.sig = \"viipp\";\n\nvar _emscripten_glGetProgramiv = (program, pname, p) => {\n  if (!p) {\n    // GLES2 specification does not specify how to behave if p is a null\n    // pointer. Since calling this function does not make sense if p == null,\n    // issue a GL error to notify user about it.\n    GL.recordError(1281);\n    return;\n  }\n  if (program >= GL.counter) {\n    GL.recordError(1281);\n    return;\n  }\n  program = GL.programs[program];\n  if (pname == 35716) {\n    // GL_INFO_LOG_LENGTH\n    var log = GLctx.getProgramInfoLog(program);\n    if (log === null) log = \"(unknown error)\";\n    (growMemViews(), HEAP32)[((p) >> 2)] = log.length + 1;\n  } else if (pname == 35719) {\n    if (!program.maxUniformLength) {\n      var numActiveUniforms = GLctx.getProgramParameter(program, 35718);\n      for (var i = 0; i < numActiveUniforms; ++i) {\n        program.maxUniformLength = Math.max(program.maxUniformLength, GLctx.getActiveUniform(program, i).name.length + 1);\n      }\n    }\n    (growMemViews(), HEAP32)[((p) >> 2)] = program.maxUniformLength;\n  } else if (pname == 35722) {\n    if (!program.maxAttributeLength) {\n      var numActiveAttributes = GLctx.getProgramParameter(program, 35721);\n      for (var i = 0; i < numActiveAttributes; ++i) {\n        program.maxAttributeLength = Math.max(program.maxAttributeLength, GLctx.getActiveAttrib(program, i).name.length + 1);\n      }\n    }\n    (growMemViews(), HEAP32)[((p) >> 2)] = program.maxAttributeLength;\n  } else if (pname == 35381) {\n    if (!program.maxUniformBlockNameLength) {\n      var numActiveUniformBlocks = GLctx.getProgramParameter(program, 35382);\n      for (var i = 0; i < numActiveUniformBlocks; ++i) {\n        program.maxUniformBlockNameLength = Math.max(program.maxUniformBlockNameLength, GLctx.getActiveUniformBlockName(program, i).length + 1);\n      }\n    }\n    (growMemViews(), HEAP32)[((p) >> 2)] = program.maxUniformBlockNameLength;\n  } else {\n    (growMemViews(), HEAP32)[((p) >> 2)] = GLctx.getProgramParameter(program, pname);\n  }\n};\n\n_emscripten_glGetProgramiv.sig = \"viip\";\n\nvar _glGetProgramiv = _emscripten_glGetProgramiv;\n\n_glGetProgramiv.sig = \"viip\";\n\nvar _emscripten_glGetShaderInfoLog = (shader, maxLength, length, infoLog) => {\n  var log = GLctx.getShaderInfoLog(GL.shaders[shader]);\n  if (log === null) log = \"(unknown error)\";\n  var numBytesWrittenExclNull = (maxLength > 0 && infoLog) ? stringToUTF8(log, infoLog, maxLength) : 0;\n  if (length) (growMemViews(), HEAP32)[((length) >> 2)] = numBytesWrittenExclNull;\n};\n\n_emscripten_glGetShaderInfoLog.sig = \"viipp\";\n\nvar _glGetShaderInfoLog = _emscripten_glGetShaderInfoLog;\n\n_glGetShaderInfoLog.sig = \"viipp\";\n\nvar _emscripten_glGetShaderiv = (shader, pname, p) => {\n  if (!p) {\n    // GLES2 specification does not specify how to behave if p is a null\n    // pointer. Since calling this function does not make sense if p == null,\n    // issue a GL error to notify user about it.\n    GL.recordError(1281);\n    return;\n  }\n  if (pname == 35716) {\n    // GL_INFO_LOG_LENGTH\n    var log = GLctx.getShaderInfoLog(GL.shaders[shader]);\n    if (log === null) log = \"(unknown error)\";\n    // The GLES2 specification says that if the shader has an empty info log,\n    // a value of 0 is returned. Otherwise the log has a null char appended.\n    // (An empty string is falsey, so we can just check that instead of\n    // looking at log.length.)\n    var logLength = log ? log.length + 1 : 0;\n    (growMemViews(), HEAP32)[((p) >> 2)] = logLength;\n  } else if (pname == 35720) {\n    // GL_SHADER_SOURCE_LENGTH\n    var source = GLctx.getShaderSource(GL.shaders[shader]);\n    // source may be a null, or the empty string, both of which are falsey\n    // values that we report a 0 length for.\n    var sourceLength = source ? source.length + 1 : 0;\n    (growMemViews(), HEAP32)[((p) >> 2)] = sourceLength;\n  } else {\n    (growMemViews(), HEAP32)[((p) >> 2)] = GLctx.getShaderParameter(GL.shaders[shader], pname);\n  }\n};\n\n_emscripten_glGetShaderiv.sig = \"viip\";\n\nvar _glGetShaderiv = _emscripten_glGetShaderiv;\n\n_glGetShaderiv.sig = \"viip\";\n\nvar _emscripten_glGetString = name_ => {\n  var ret = GL.stringCache[name_];\n  if (!ret) {\n    switch (name_) {\n     case 7939:\n      ret = stringToNewUTF8(webglGetExtensions().join(\" \"));\n      break;\n\n     case 7936:\n     case 7937:\n     case 37445:\n     case 37446:\n      var s = GLctx.getParameter(name_);\n      if (!s) {\n        GL.recordError(1280);\n      }\n      ret = s ? stringToNewUTF8(s) : 0;\n      break;\n\n     case 7938:\n      var webGLVersion = GLctx.getParameter(7938);\n      // return GLES version string corresponding to the version of the WebGL context\n      var glVersion = `OpenGL ES 2.0 (${webGLVersion})`;\n      if (true) glVersion = `OpenGL ES 3.0 (${webGLVersion})`;\n      ret = stringToNewUTF8(glVersion);\n      break;\n\n     case 35724:\n      var glslVersion = GLctx.getParameter(35724);\n      // extract the version number 'N.M' from the string 'WebGL GLSL ES N.M ...'\n      var ver_re = /^WebGL GLSL ES ([0-9]\\.[0-9][0-9]?)(?:$| .*)/;\n      var ver_num = glslVersion.match(ver_re);\n      if (ver_num !== null) {\n        if (ver_num[1].length == 3) ver_num[1] = ver_num[1] + \"0\";\n        // ensure minor version has 2 digits\n        glslVersion = `OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`;\n      }\n      ret = stringToNewUTF8(glslVersion);\n      break;\n\n     default:\n      GL.recordError(1280);\n    }\n    GL.stringCache[name_] = ret;\n  }\n  return ret;\n};\n\n_emscripten_glGetString.sig = \"pi\";\n\nvar _glGetString = _emscripten_glGetString;\n\n_glGetString.sig = \"pi\";\n\nvar _emscripten_glGetSynciv = (sync, pname, bufSize, length, values) => {\n  if (bufSize < 0) {\n    // GLES3 specification does not specify how to behave if bufSize < 0, however in the spec wording for glGetInternalformativ, it does say that GL_INVALID_VALUE should be raised,\n    // so raise GL_INVALID_VALUE here as well.\n    GL.recordError(1281);\n    return;\n  }\n  if (!values) {\n    // GLES3 specification does not specify how to behave if values is a null pointer. Since calling this function does not make sense\n    // if values == null, issue a GL error to notify user about it.\n    GL.recordError(1281);\n    return;\n  }\n  var ret = GLctx.getSyncParameter(GL.syncs[sync], pname);\n  if (ret !== null) {\n    (growMemViews(), HEAP32)[((values) >> 2)] = ret;\n    if (length) (growMemViews(), HEAP32)[((length) >> 2)] = 1;\n  }\n};\n\n_emscripten_glGetSynciv.sig = \"vpiipp\";\n\nvar _glGetSynciv = _emscripten_glGetSynciv;\n\n_glGetSynciv.sig = \"vpiipp\";\n\n/** @suppress {checkTypes} */ var jstoi_q = str => parseInt(str);\n\n/** @noinline */ var webglGetLeftBracePos = name => name.slice(-1) == \"]\" && name.lastIndexOf(\"[\");\n\nvar webglPrepareUniformLocationsBeforeFirstUse = program => {\n  var uniformLocsById = program.uniformLocsById, // Maps GLuint -> WebGLUniformLocation\n  uniformSizeAndIdsByName = program.uniformSizeAndIdsByName, // Maps name -> [uniform array length, GLuint]\n  i, j;\n  // On the first time invocation of glGetUniformLocation on this shader program:\n  // initialize cache data structures and discover which uniforms are arrays.\n  if (!uniformLocsById) {\n    // maps GLint integer locations to WebGLUniformLocations\n    program.uniformLocsById = uniformLocsById = {};\n    // maps integer locations back to uniform name strings, so that we can lazily fetch uniform array locations\n    program.uniformArrayNamesById = {};\n    var numActiveUniforms = GLctx.getProgramParameter(program, 35718);\n    for (i = 0; i < numActiveUniforms; ++i) {\n      var u = GLctx.getActiveUniform(program, i);\n      var nm = u.name;\n      var sz = u.size;\n      var lb = webglGetLeftBracePos(nm);\n      var arrayName = lb > 0 ? nm.slice(0, lb) : nm;\n      // Assign a new location.\n      var id = program.uniformIdCounter;\n      program.uniformIdCounter += sz;\n      // Eagerly get the location of the uniformArray[0] base element.\n      // The remaining indices >0 will be left for lazy evaluation to\n      // improve performance. Those may never be needed to fetch, if the\n      // application fills arrays always in full starting from the first\n      // element of the array.\n      uniformSizeAndIdsByName[arrayName] = [ sz, id ];\n      // Store placeholder integers in place that highlight that these\n      // >0 index locations are array indices pending population.\n      for (j = 0; j < sz; ++j) {\n        uniformLocsById[id] = j;\n        program.uniformArrayNamesById[id++] = arrayName;\n      }\n    }\n  }\n};\n\nvar _emscripten_glGetUniformLocation = (program, name) => {\n  name = UTF8ToString(name);\n  if (program = GL.programs[program]) {\n    webglPrepareUniformLocationsBeforeFirstUse(program);\n    var uniformLocsById = program.uniformLocsById;\n    // Maps GLuint -> WebGLUniformLocation\n    var arrayIndex = 0;\n    var uniformBaseName = name;\n    // Invariant: when populating integer IDs for uniform locations, we must\n    // maintain the precondition that arrays reside in contiguous addresses,\n    // i.e. for a 'vec4 colors[10];', colors[4] must be at location\n    // colors[0]+4.  However, user might call glGetUniformLocation(program,\n    // \"colors\") for an array, so we cannot discover based on the user input\n    // arguments whether the uniform we are dealing with is an array. The only\n    // way to discover which uniforms are arrays is to enumerate over all the\n    // active uniforms in the program.\n    var leftBrace = webglGetLeftBracePos(name);\n    // If user passed an array accessor \"[index]\", parse the array index off the accessor.\n    if (leftBrace > 0) {\n      arrayIndex = jstoi_q(name.slice(leftBrace + 1)) >>> 0;\n      // \"index]\", coerce parseInt(']') with >>>0 to treat \"foo[]\" as \"foo[0]\" and foo[-1] as unsigned out-of-bounds.\n      uniformBaseName = name.slice(0, leftBrace);\n    }\n    // Have we cached the location of this uniform before?\n    // A pair [array length, GLint of the uniform location]\n    var sizeAndId = program.uniformSizeAndIdsByName[uniformBaseName];\n    // If a uniform with this name exists, and if its index is within the\n    // array limits (if it's even an array), query the WebGLlocation, or\n    // return an existing cached location.\n    if (sizeAndId && arrayIndex < sizeAndId[0]) {\n      arrayIndex += sizeAndId[1];\n      // Add the base location of the uniform to the array index offset.\n      if ((uniformLocsById[arrayIndex] = uniformLocsById[arrayIndex] || GLctx.getUniformLocation(program, name))) {\n        return arrayIndex;\n      }\n    }\n  } else {\n    // N.b. we are currently unable to distinguish between GL program IDs that\n    // never existed vs GL program IDs that have been deleted, so report\n    // GL_INVALID_VALUE in both cases.\n    GL.recordError(1281);\n  }\n  return -1;\n};\n\n_emscripten_glGetUniformLocation.sig = \"iip\";\n\nvar _glGetUniformLocation = _emscripten_glGetUniformLocation;\n\n_glGetUniformLocation.sig = \"iip\";\n\nvar _emscripten_glIsEnabled = x0 => GLctx.isEnabled(x0);\n\n_emscripten_glIsEnabled.sig = \"ii\";\n\nvar _glIsEnabled = _emscripten_glIsEnabled;\n\n_glIsEnabled.sig = \"ii\";\n\nvar _emscripten_glLinkProgram = program => {\n  program = GL.programs[program];\n  GLctx.linkProgram(program);\n  // Invalidate earlier computed uniform->ID mappings, those have now become stale\n  program.uniformLocsById = 0;\n  // Mark as null-like so that glGetUniformLocation() knows to populate this again.\n  program.uniformSizeAndIdsByName = {};\n};\n\n_emscripten_glLinkProgram.sig = \"vi\";\n\nvar _glLinkProgram = _emscripten_glLinkProgram;\n\n_glLinkProgram.sig = \"vi\";\n\nvar _emscripten_glPixelStorei = (pname, param) => {\n  if (pname == 3317) {\n    GL.unpackAlignment = param;\n  } else if (pname == 3314) {\n    GL.unpackRowLength = param;\n  }\n  GLctx.pixelStorei(pname, param);\n};\n\n_emscripten_glPixelStorei.sig = \"vii\";\n\nvar _glPixelStorei = _emscripten_glPixelStorei;\n\n_glPixelStorei.sig = \"vii\";\n\nvar heapObjectForWebGLType = type => {\n  // Micro-optimization for size: Subtract lowest GL enum number (0x1400/* GL_BYTE */) from type to compare\n  // smaller values for the heap, for shorter generated code size.\n  // Also the type HEAPU16 is not tested for explicitly, but any unrecognized type will return out HEAPU16.\n  // (since most types are HEAPU16)\n  type -= 5120;\n  if (type == 0) return (growMemViews(), HEAP8);\n  if (type == 1) return (growMemViews(), HEAPU8);\n  if (type == 2) return (growMemViews(), HEAP16);\n  if (type == 4) return (growMemViews(), HEAP32);\n  if (type == 6) return (growMemViews(), HEAPF32);\n  if (type == 5 || type == 28922 || type == 28520 || type == 30779 || type == 30782) return (growMemViews(), \n  HEAPU32);\n  return (growMemViews(), HEAPU16);\n};\n\nvar toTypedArrayIndex = (pointer, heap) => pointer >>> (31 - Math.clz32(heap.BYTES_PER_ELEMENT));\n\nvar _emscripten_glReadPixels = (x, y, width, height, format, type, pixels) => {\n  if (true) {\n    if (GLctx.currentPixelPackBufferBinding) {\n      GLctx.readPixels(x, y, width, height, format, type, pixels);\n      return;\n    }\n    var heap = heapObjectForWebGLType(type);\n    var target = toTypedArrayIndex(pixels, heap);\n    GLctx.readPixels(x, y, width, height, format, type, heap, target);\n    return;\n  }\n};\n\n_emscripten_glReadPixels.sig = \"viiiiiip\";\n\nvar _glReadPixels = _emscripten_glReadPixels;\n\n_glReadPixels.sig = \"viiiiiip\";\n\nvar _emscripten_glRenderbufferStorage = (x0, x1, x2, x3) => GLctx.renderbufferStorage(x0, x1, x2, x3);\n\n_emscripten_glRenderbufferStorage.sig = \"viiii\";\n\nvar _glRenderbufferStorage = _emscripten_glRenderbufferStorage;\n\n_glRenderbufferStorage.sig = \"viiii\";\n\nvar _emscripten_glShaderSource = (shader, count, string, length) => {\n  var source = GL.getSource(shader, count, string, length);\n  GLctx.shaderSource(GL.shaders[shader], source);\n};\n\n_emscripten_glShaderSource.sig = \"viipp\";\n\nvar _glShaderSource = _emscripten_glShaderSource;\n\n_glShaderSource.sig = \"viipp\";\n\nvar _emscripten_glStencilFunc = (x0, x1, x2) => GLctx.stencilFunc(x0, x1, x2);\n\n_emscripten_glStencilFunc.sig = \"viii\";\n\nvar _glStencilFunc = _emscripten_glStencilFunc;\n\n_glStencilFunc.sig = \"viii\";\n\nvar _emscripten_glStencilOp = (x0, x1, x2) => GLctx.stencilOp(x0, x1, x2);\n\n_emscripten_glStencilOp.sig = \"viii\";\n\nvar _glStencilOp = _emscripten_glStencilOp;\n\n_glStencilOp.sig = \"viii\";\n\nvar computeUnpackAlignedImageSize = (width, height, sizePerPixel) => {\n  function roundedToNextMultipleOf(x, y) {\n    return (x + y - 1) & -y;\n  }\n  var plainRowSize = (GL.unpackRowLength || width) * sizePerPixel;\n  var alignedRowSize = roundedToNextMultipleOf(plainRowSize, GL.unpackAlignment);\n  return height * alignedRowSize;\n};\n\nvar colorChannelsInGlTextureFormat = format => {\n  // Micro-optimizations for size: map format to size by subtracting smallest\n  // enum value (0x1902) from all values first.  Also omit the most common\n  // size value (1) from the list, which is assumed by formats not on the\n  // list.\n  var colorChannels = {\n    // 0x1902 /* GL_DEPTH_COMPONENT */ - 0x1902: 1,\n    // 0x1906 /* GL_ALPHA */ - 0x1902: 1,\n    5: 3,\n    6: 4,\n    // 0x1909 /* GL_LUMINANCE */ - 0x1902: 1,\n    8: 2,\n    29502: 3,\n    29504: 4,\n    // 0x1903 /* GL_RED */ - 0x1902: 1,\n    26917: 2,\n    26918: 2,\n    // 0x8D94 /* GL_RED_INTEGER */ - 0x1902: 1,\n    29846: 3,\n    29847: 4\n  };\n  return colorChannels[format - 6402] || 1;\n};\n\nvar emscriptenWebGLGetTexPixelData = (type, format, width, height, pixels) => {\n  var heap = heapObjectForWebGLType(type);\n  var sizePerPixel = colorChannelsInGlTextureFormat(format) * heap.BYTES_PER_ELEMENT;\n  var bytes = computeUnpackAlignedImageSize(width, height, sizePerPixel);\n  return heap.subarray(toTypedArrayIndex(pixels, heap), toTypedArrayIndex(pixels + bytes, heap));\n};\n\nvar _emscripten_glTexImage2D = (target, level, internalFormat, width, height, border, format, type, pixels) => {\n  if (true) {\n    if (GLctx.currentPixelUnpackBufferBinding) {\n      GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixels);\n      return;\n    }\n    if (pixels) {\n      var heap = heapObjectForWebGLType(type);\n      var index = toTypedArrayIndex(pixels, heap);\n      GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, heap, index);\n      return;\n    }\n  }\n  var pixelData = pixels ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels) : null;\n  GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixelData);\n};\n\n_emscripten_glTexImage2D.sig = \"viiiiiiiip\";\n\nvar _glTexImage2D = _emscripten_glTexImage2D;\n\n_glTexImage2D.sig = \"viiiiiiiip\";\n\nvar _emscripten_glTexImage3D = (target, level, internalFormat, width, height, depth, border, format, type, pixels) => {\n  if (GLctx.currentPixelUnpackBufferBinding) {\n    GLctx.texImage3D(target, level, internalFormat, width, height, depth, border, format, type, pixels);\n  } else if (pixels) {\n    var heap = heapObjectForWebGLType(type);\n    GLctx.texImage3D(target, level, internalFormat, width, height, depth, border, format, type, heap, toTypedArrayIndex(pixels, heap));\n  } else {\n    GLctx.texImage3D(target, level, internalFormat, width, height, depth, border, format, type, null);\n  }\n};\n\n_emscripten_glTexImage3D.sig = \"viiiiiiiiip\";\n\nvar _glTexImage3D = _emscripten_glTexImage3D;\n\n_glTexImage3D.sig = \"viiiiiiiiip\";\n\nvar _emscripten_glTexParameteri = (x0, x1, x2) => GLctx.texParameteri(x0, x1, x2);\n\n_emscripten_glTexParameteri.sig = \"viii\";\n\nvar _glTexParameteri = _emscripten_glTexParameteri;\n\n_glTexParameteri.sig = \"viii\";\n\nvar webglGetProgramUniformLocation = (program, location) => {\n  if (program) {\n    var webglLoc = program.uniformLocsById[location];\n    // program.uniformLocsById[location] stores either an integer, or a\n    // WebGLUniformLocation.\n    // If an integer, we have not yet bound the location, so do it now. The\n    // integer value specifies the array index we should bind to.\n    if (typeof webglLoc == \"number\") {\n      program.uniformLocsById[location] = webglLoc = GLctx.getUniformLocation(program, program.uniformArrayNamesById[location] + (webglLoc > 0 ? `[${webglLoc}]` : \"\"));\n    }\n    // Else an already cached WebGLUniformLocation, return it.\n    return webglLoc;\n  } else {\n    GL.recordError(1282);\n  }\n};\n\nvar webglGetUniformLocation = location => webglGetProgramUniformLocation(GLctx.currentProgram, location);\n\nvar _emscripten_glUniform1f = (location, v0) => {\n  GLctx.uniform1f(webglGetUniformLocation(location), v0);\n};\n\n_emscripten_glUniform1f.sig = \"vif\";\n\nvar _glUniform1f = _emscripten_glUniform1f;\n\n_glUniform1f.sig = \"vif\";\n\nvar _emscripten_glUniform1fv = (location, count, value) => {\n  count && GLctx.uniform1fv(webglGetUniformLocation(location), (growMemViews(), HEAPF32), ((value) >> 2), count);\n};\n\n_emscripten_glUniform1fv.sig = \"viip\";\n\nvar _glUniform1fv = _emscripten_glUniform1fv;\n\n_glUniform1fv.sig = \"viip\";\n\nvar _emscripten_glUniform1i = (location, v0) => {\n  GLctx.uniform1i(webglGetUniformLocation(location), v0);\n};\n\n_emscripten_glUniform1i.sig = \"vii\";\n\nvar _glUniform1i = _emscripten_glUniform1i;\n\n_glUniform1i.sig = \"vii\";\n\nvar _emscripten_glUniform1iv = (location, count, value) => {\n  count && GLctx.uniform1iv(webglGetUniformLocation(location), (growMemViews(), HEAP32), ((value) >> 2), count);\n};\n\n_emscripten_glUniform1iv.sig = \"viip\";\n\nvar _glUniform1iv = _emscripten_glUniform1iv;\n\n_glUniform1iv.sig = \"viip\";\n\nvar _emscripten_glUniform1ui = (location, v0) => {\n  GLctx.uniform1ui(webglGetUniformLocation(location), v0);\n};\n\n_emscripten_glUniform1ui.sig = \"vii\";\n\nvar _glUniform1ui = _emscripten_glUniform1ui;\n\n_glUniform1ui.sig = \"vii\";\n\nvar _emscripten_glUniform2f = (location, v0, v1) => {\n  GLctx.uniform2f(webglGetUniformLocation(location), v0, v1);\n};\n\n_emscripten_glUniform2f.sig = \"viff\";\n\nvar _glUniform2f = _emscripten_glUniform2f;\n\n_glUniform2f.sig = \"viff\";\n\nvar _emscripten_glUniform2fv = (location, count, value) => {\n  count && GLctx.uniform2fv(webglGetUniformLocation(location), (growMemViews(), HEAPF32), ((value) >> 2), count * 2);\n};\n\n_emscripten_glUniform2fv.sig = \"viip\";\n\nvar _glUniform2fv = _emscripten_glUniform2fv;\n\n_glUniform2fv.sig = \"viip\";\n\nvar _emscripten_glUniform3fv = (location, count, value) => {\n  count && GLctx.uniform3fv(webglGetUniformLocation(location), (growMemViews(), HEAPF32), ((value) >> 2), count * 3);\n};\n\n_emscripten_glUniform3fv.sig = \"viip\";\n\nvar _glUniform3fv = _emscripten_glUniform3fv;\n\n_glUniform3fv.sig = \"viip\";\n\nvar _emscripten_glUniform4f = (location, v0, v1, v2, v3) => {\n  GLctx.uniform4f(webglGetUniformLocation(location), v0, v1, v2, v3);\n};\n\n_emscripten_glUniform4f.sig = \"viffff\";\n\nvar _glUniform4f = _emscripten_glUniform4f;\n\n_glUniform4f.sig = \"viffff\";\n\nvar _emscripten_glUniform4fv = (location, count, value) => {\n  count && GLctx.uniform4fv(webglGetUniformLocation(location), (growMemViews(), HEAPF32), ((value) >> 2), count * 4);\n};\n\n_emscripten_glUniform4fv.sig = \"viip\";\n\nvar _glUniform4fv = _emscripten_glUniform4fv;\n\n_glUniform4fv.sig = \"viip\";\n\nvar _emscripten_glUniform4uiv = (location, count, value) => {\n  count && GLctx.uniform4uiv(webglGetUniformLocation(location), (growMemViews(), HEAPU32), ((value) >> 2), count * 4);\n};\n\n_emscripten_glUniform4uiv.sig = \"viip\";\n\nvar _glUniform4uiv = _emscripten_glUniform4uiv;\n\n_glUniform4uiv.sig = \"viip\";\n\nvar _emscripten_glUniformMatrix3fv = (location, count, transpose, value) => {\n  count && GLctx.uniformMatrix3fv(webglGetUniformLocation(location), !!transpose, (growMemViews(), \n  HEAPF32), ((value) >> 2), count * 9);\n};\n\n_emscripten_glUniformMatrix3fv.sig = \"viiip\";\n\nvar _glUniformMatrix3fv = _emscripten_glUniformMatrix3fv;\n\n_glUniformMatrix3fv.sig = \"viiip\";\n\nvar _emscripten_glUniformMatrix4fv = (location, count, transpose, value) => {\n  count && GLctx.uniformMatrix4fv(webglGetUniformLocation(location), !!transpose, (growMemViews(), \n  HEAPF32), ((value) >> 2), count * 16);\n};\n\n_emscripten_glUniformMatrix4fv.sig = \"viiip\";\n\nvar _glUniformMatrix4fv = _emscripten_glUniformMatrix4fv;\n\n_glUniformMatrix4fv.sig = \"viiip\";\n\nvar _emscripten_glUseProgram = program => {\n  program = GL.programs[program];\n  GLctx.useProgram(program);\n  // Record the currently active program so that we can access the uniform\n  // mapping table of that program.\n  GLctx.currentProgram = program;\n};\n\n_emscripten_glUseProgram.sig = \"vi\";\n\nvar _glUseProgram = _emscripten_glUseProgram;\n\n_glUseProgram.sig = \"vi\";\n\nvar _emscripten_glVertexAttrib4f = (x0, x1, x2, x3, x4) => GLctx.vertexAttrib4f(x0, x1, x2, x3, x4);\n\n_emscripten_glVertexAttrib4f.sig = \"viffff\";\n\nvar _glVertexAttrib4f = _emscripten_glVertexAttrib4f;\n\n_glVertexAttrib4f.sig = \"viffff\";\n\nvar _emscripten_glVertexAttribDivisor = (index, divisor) => {\n  GLctx.vertexAttribDivisor(index, divisor);\n};\n\n_emscripten_glVertexAttribDivisor.sig = \"vii\";\n\nvar _glVertexAttribDivisor = _emscripten_glVertexAttribDivisor;\n\n_glVertexAttribDivisor.sig = \"vii\";\n\nvar _emscripten_glVertexAttribIPointer = (index, size, type, stride, ptr) => {\n  GLctx.vertexAttribIPointer(index, size, type, stride, ptr);\n};\n\n_emscripten_glVertexAttribIPointer.sig = \"viiiip\";\n\nvar _glVertexAttribIPointer = _emscripten_glVertexAttribIPointer;\n\n_glVertexAttribIPointer.sig = \"viiiip\";\n\nvar _emscripten_glVertexAttribPointer = (index, size, type, normalized, stride, ptr) => {\n  GLctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr);\n};\n\n_emscripten_glVertexAttribPointer.sig = \"viiiiip\";\n\nvar _glVertexAttribPointer = _emscripten_glVertexAttribPointer;\n\n_glVertexAttribPointer.sig = \"viiiiip\";\n\nvar _emscripten_glViewport = (x0, x1, x2, x3) => GLctx.viewport(x0, x1, x2, x3);\n\n_emscripten_glViewport.sig = \"viiii\";\n\nvar _glViewport = _emscripten_glViewport;\n\n_glViewport.sig = \"viiii\";\n\nfunction _interleaveBytes(...args) {\n  if (!wasmImports[\"interleaveBytes\"] || wasmImports[\"interleaveBytes\"].stub) abort(\"external symbol 'interleaveBytes' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"interleaveBytes\"](...args);\n}\n\n_interleaveBytes.stub = true;\n\nfunction _planar2x(...args) {\n  if (!wasmImports[\"planar2x\"] || wasmImports[\"planar2x\"].stub) abort(\"external symbol 'planar2x' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"planar2x\"](...args);\n}\n\n_planar2x.stub = true;\n\nvar initRandomFill = () => {\n  // This block is not needed on v19+ since crypto.getRandomValues is builtin\n  if (ENVIRONMENT_IS_NODE) {\n    var nodeCrypto = require(\"node:crypto\");\n    return view => nodeCrypto.randomFillSync(view);\n  }\n  // like with most Web APIs, we can't use Web Crypto API directly on shared memory,\n  // so we need to create an intermediate buffer and copy it to the destination\n  return view => (view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))), \n  0);\n};\n\nvar randomFill = view => (randomFill = initRandomFill())(view);\n\nvar _random_get = (buffer, size) => randomFill((growMemViews(), HEAPU8).subarray(buffer, buffer + size));\n\n_random_get.sig = \"ipp\";\n\nfunction _rgb12to15(...args) {\n  if (!wasmImports[\"rgb12to15\"] || wasmImports[\"rgb12to15\"].stub) abort(\"external symbol 'rgb12to15' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb12to15\"](...args);\n}\n\n_rgb12to15.stub = true;\n\nfunction _rgb12tobgr12(...args) {\n  if (!wasmImports[\"rgb12tobgr12\"] || wasmImports[\"rgb12tobgr12\"].stub) abort(\"external symbol 'rgb12tobgr12' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb12tobgr12\"](...args);\n}\n\n_rgb12tobgr12.stub = true;\n\nfunction _rgb15to16(...args) {\n  if (!wasmImports[\"rgb15to16\"] || wasmImports[\"rgb15to16\"].stub) abort(\"external symbol 'rgb15to16' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb15to16\"](...args);\n}\n\n_rgb15to16.stub = true;\n\nfunction _rgb15to24(...args) {\n  if (!wasmImports[\"rgb15to24\"] || wasmImports[\"rgb15to24\"].stub) abort(\"external symbol 'rgb15to24' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb15to24\"](...args);\n}\n\n_rgb15to24.stub = true;\n\nfunction _rgb15to32(...args) {\n  if (!wasmImports[\"rgb15to32\"] || wasmImports[\"rgb15to32\"].stub) abort(\"external symbol 'rgb15to32' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb15to32\"](...args);\n}\n\n_rgb15to32.stub = true;\n\nfunction _rgb15tobgr15(...args) {\n  if (!wasmImports[\"rgb15tobgr15\"] || wasmImports[\"rgb15tobgr15\"].stub) abort(\"external symbol 'rgb15tobgr15' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb15tobgr15\"](...args);\n}\n\n_rgb15tobgr15.stub = true;\n\nfunction _rgb15tobgr16(...args) {\n  if (!wasmImports[\"rgb15tobgr16\"] || wasmImports[\"rgb15tobgr16\"].stub) abort(\"external symbol 'rgb15tobgr16' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb15tobgr16\"](...args);\n}\n\n_rgb15tobgr16.stub = true;\n\nfunction _rgb15tobgr24(...args) {\n  if (!wasmImports[\"rgb15tobgr24\"] || wasmImports[\"rgb15tobgr24\"].stub) abort(\"external symbol 'rgb15tobgr24' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb15tobgr24\"](...args);\n}\n\n_rgb15tobgr24.stub = true;\n\nfunction _rgb15tobgr32(...args) {\n  if (!wasmImports[\"rgb15tobgr32\"] || wasmImports[\"rgb15tobgr32\"].stub) abort(\"external symbol 'rgb15tobgr32' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb15tobgr32\"](...args);\n}\n\n_rgb15tobgr32.stub = true;\n\nfunction _rgb16to15(...args) {\n  if (!wasmImports[\"rgb16to15\"] || wasmImports[\"rgb16to15\"].stub) abort(\"external symbol 'rgb16to15' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb16to15\"](...args);\n}\n\n_rgb16to15.stub = true;\n\nfunction _rgb16to24(...args) {\n  if (!wasmImports[\"rgb16to24\"] || wasmImports[\"rgb16to24\"].stub) abort(\"external symbol 'rgb16to24' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb16to24\"](...args);\n}\n\n_rgb16to24.stub = true;\n\nfunction _rgb16to32(...args) {\n  if (!wasmImports[\"rgb16to32\"] || wasmImports[\"rgb16to32\"].stub) abort(\"external symbol 'rgb16to32' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb16to32\"](...args);\n}\n\n_rgb16to32.stub = true;\n\nfunction _rgb16tobgr15(...args) {\n  if (!wasmImports[\"rgb16tobgr15\"] || wasmImports[\"rgb16tobgr15\"].stub) abort(\"external symbol 'rgb16tobgr15' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb16tobgr15\"](...args);\n}\n\n_rgb16tobgr15.stub = true;\n\nfunction _rgb16tobgr16(...args) {\n  if (!wasmImports[\"rgb16tobgr16\"] || wasmImports[\"rgb16tobgr16\"].stub) abort(\"external symbol 'rgb16tobgr16' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb16tobgr16\"](...args);\n}\n\n_rgb16tobgr16.stub = true;\n\nfunction _rgb16tobgr24(...args) {\n  if (!wasmImports[\"rgb16tobgr24\"] || wasmImports[\"rgb16tobgr24\"].stub) abort(\"external symbol 'rgb16tobgr24' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb16tobgr24\"](...args);\n}\n\n_rgb16tobgr24.stub = true;\n\nfunction _rgb16tobgr32(...args) {\n  if (!wasmImports[\"rgb16tobgr32\"] || wasmImports[\"rgb16tobgr32\"].stub) abort(\"external symbol 'rgb16tobgr32' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb16tobgr32\"](...args);\n}\n\n_rgb16tobgr32.stub = true;\n\nfunction _rgb24to15(...args) {\n  if (!wasmImports[\"rgb24to15\"] || wasmImports[\"rgb24to15\"].stub) abort(\"external symbol 'rgb24to15' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb24to15\"](...args);\n}\n\n_rgb24to15.stub = true;\n\nfunction _rgb24to16(...args) {\n  if (!wasmImports[\"rgb24to16\"] || wasmImports[\"rgb24to16\"].stub) abort(\"external symbol 'rgb24to16' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb24to16\"](...args);\n}\n\n_rgb24to16.stub = true;\n\nfunction _rgb24to32(...args) {\n  if (!wasmImports[\"rgb24to32\"] || wasmImports[\"rgb24to32\"].stub) abort(\"external symbol 'rgb24to32' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb24to32\"](...args);\n}\n\n_rgb24to32.stub = true;\n\nfunction _rgb24tobgr15(...args) {\n  if (!wasmImports[\"rgb24tobgr15\"] || wasmImports[\"rgb24tobgr15\"].stub) abort(\"external symbol 'rgb24tobgr15' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb24tobgr15\"](...args);\n}\n\n_rgb24tobgr15.stub = true;\n\nfunction _rgb24tobgr16(...args) {\n  if (!wasmImports[\"rgb24tobgr16\"] || wasmImports[\"rgb24tobgr16\"].stub) abort(\"external symbol 'rgb24tobgr16' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb24tobgr16\"](...args);\n}\n\n_rgb24tobgr16.stub = true;\n\nfunction _rgb24tobgr24(...args) {\n  if (!wasmImports[\"rgb24tobgr24\"] || wasmImports[\"rgb24tobgr24\"].stub) abort(\"external symbol 'rgb24tobgr24' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb24tobgr24\"](...args);\n}\n\n_rgb24tobgr24.stub = true;\n\nfunction _rgb24tobgr32(...args) {\n  if (!wasmImports[\"rgb24tobgr32\"] || wasmImports[\"rgb24tobgr32\"].stub) abort(\"external symbol 'rgb24tobgr32' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb24tobgr32\"](...args);\n}\n\n_rgb24tobgr32.stub = true;\n\nfunction _rgb32to15(...args) {\n  if (!wasmImports[\"rgb32to15\"] || wasmImports[\"rgb32to15\"].stub) abort(\"external symbol 'rgb32to15' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb32to15\"](...args);\n}\n\n_rgb32to15.stub = true;\n\nfunction _rgb32to16(...args) {\n  if (!wasmImports[\"rgb32to16\"] || wasmImports[\"rgb32to16\"].stub) abort(\"external symbol 'rgb32to16' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb32to16\"](...args);\n}\n\n_rgb32to16.stub = true;\n\nfunction _rgb32to24(...args) {\n  if (!wasmImports[\"rgb32to24\"] || wasmImports[\"rgb32to24\"].stub) abort(\"external symbol 'rgb32to24' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb32to24\"](...args);\n}\n\n_rgb32to24.stub = true;\n\nfunction _rgb32tobgr15(...args) {\n  if (!wasmImports[\"rgb32tobgr15\"] || wasmImports[\"rgb32tobgr15\"].stub) abort(\"external symbol 'rgb32tobgr15' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb32tobgr15\"](...args);\n}\n\n_rgb32tobgr15.stub = true;\n\nfunction _rgb32tobgr16(...args) {\n  if (!wasmImports[\"rgb32tobgr16\"] || wasmImports[\"rgb32tobgr16\"].stub) abort(\"external symbol 'rgb32tobgr16' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb32tobgr16\"](...args);\n}\n\n_rgb32tobgr16.stub = true;\n\nfunction _rgb32tobgr24(...args) {\n  if (!wasmImports[\"rgb32tobgr24\"] || wasmImports[\"rgb32tobgr24\"].stub) abort(\"external symbol 'rgb32tobgr24' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb32tobgr24\"](...args);\n}\n\n_rgb32tobgr24.stub = true;\n\nfunction _rgb48to64_bswap(...args) {\n  if (!wasmImports[\"rgb48to64_bswap\"] || wasmImports[\"rgb48to64_bswap\"].stub) abort(\"external symbol 'rgb48to64_bswap' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb48to64_bswap\"](...args);\n}\n\n_rgb48to64_bswap.stub = true;\n\nfunction _rgb48to64_nobswap(...args) {\n  if (!wasmImports[\"rgb48to64_nobswap\"] || wasmImports[\"rgb48to64_nobswap\"].stub) abort(\"external symbol 'rgb48to64_nobswap' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb48to64_nobswap\"](...args);\n}\n\n_rgb48to64_nobswap.stub = true;\n\nfunction _rgb48tobgr48_bswap(...args) {\n  if (!wasmImports[\"rgb48tobgr48_bswap\"] || wasmImports[\"rgb48tobgr48_bswap\"].stub) abort(\"external symbol 'rgb48tobgr48_bswap' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb48tobgr48_bswap\"](...args);\n}\n\n_rgb48tobgr48_bswap.stub = true;\n\nfunction _rgb48tobgr48_nobswap(...args) {\n  if (!wasmImports[\"rgb48tobgr48_nobswap\"] || wasmImports[\"rgb48tobgr48_nobswap\"].stub) abort(\"external symbol 'rgb48tobgr48_nobswap' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb48tobgr48_nobswap\"](...args);\n}\n\n_rgb48tobgr48_nobswap.stub = true;\n\nfunction _rgb48tobgr64_bswap(...args) {\n  if (!wasmImports[\"rgb48tobgr64_bswap\"] || wasmImports[\"rgb48tobgr64_bswap\"].stub) abort(\"external symbol 'rgb48tobgr64_bswap' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb48tobgr64_bswap\"](...args);\n}\n\n_rgb48tobgr64_bswap.stub = true;\n\nfunction _rgb48tobgr64_nobswap(...args) {\n  if (!wasmImports[\"rgb48tobgr64_nobswap\"] || wasmImports[\"rgb48tobgr64_nobswap\"].stub) abort(\"external symbol 'rgb48tobgr64_nobswap' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb48tobgr64_nobswap\"](...args);\n}\n\n_rgb48tobgr64_nobswap.stub = true;\n\nfunction _rgb64to48_bswap(...args) {\n  if (!wasmImports[\"rgb64to48_bswap\"] || wasmImports[\"rgb64to48_bswap\"].stub) abort(\"external symbol 'rgb64to48_bswap' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb64to48_bswap\"](...args);\n}\n\n_rgb64to48_bswap.stub = true;\n\nfunction _rgb64to48_nobswap(...args) {\n  if (!wasmImports[\"rgb64to48_nobswap\"] || wasmImports[\"rgb64to48_nobswap\"].stub) abort(\"external symbol 'rgb64to48_nobswap' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb64to48_nobswap\"](...args);\n}\n\n_rgb64to48_nobswap.stub = true;\n\nfunction _rgb64tobgr48_bswap(...args) {\n  if (!wasmImports[\"rgb64tobgr48_bswap\"] || wasmImports[\"rgb64tobgr48_bswap\"].stub) abort(\"external symbol 'rgb64tobgr48_bswap' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb64tobgr48_bswap\"](...args);\n}\n\n_rgb64tobgr48_bswap.stub = true;\n\nfunction _rgb64tobgr48_nobswap(...args) {\n  if (!wasmImports[\"rgb64tobgr48_nobswap\"] || wasmImports[\"rgb64tobgr48_nobswap\"].stub) abort(\"external symbol 'rgb64tobgr48_nobswap' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"rgb64tobgr48_nobswap\"](...args);\n}\n\n_rgb64tobgr48_nobswap.stub = true;\n\nfunction _shuffle_bytes_0321(...args) {\n  if (!wasmImports[\"shuffle_bytes_0321\"] || wasmImports[\"shuffle_bytes_0321\"].stub) abort(\"external symbol 'shuffle_bytes_0321' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"shuffle_bytes_0321\"](...args);\n}\n\n_shuffle_bytes_0321.stub = true;\n\nfunction _shuffle_bytes_1230(...args) {\n  if (!wasmImports[\"shuffle_bytes_1230\"] || wasmImports[\"shuffle_bytes_1230\"].stub) abort(\"external symbol 'shuffle_bytes_1230' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"shuffle_bytes_1230\"](...args);\n}\n\n_shuffle_bytes_1230.stub = true;\n\nfunction _shuffle_bytes_2103(...args) {\n  if (!wasmImports[\"shuffle_bytes_2103\"] || wasmImports[\"shuffle_bytes_2103\"].stub) abort(\"external symbol 'shuffle_bytes_2103' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"shuffle_bytes_2103\"](...args);\n}\n\n_shuffle_bytes_2103.stub = true;\n\nfunction _shuffle_bytes_3012(...args) {\n  if (!wasmImports[\"shuffle_bytes_3012\"] || wasmImports[\"shuffle_bytes_3012\"].stub) abort(\"external symbol 'shuffle_bytes_3012' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"shuffle_bytes_3012\"](...args);\n}\n\n_shuffle_bytes_3012.stub = true;\n\nfunction _shuffle_bytes_3210(...args) {\n  if (!wasmImports[\"shuffle_bytes_3210\"] || wasmImports[\"shuffle_bytes_3210\"].stub) abort(\"external symbol 'shuffle_bytes_3210' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"shuffle_bytes_3210\"](...args);\n}\n\n_shuffle_bytes_3210.stub = true;\n\nfunction _swr_alloc(...args) {\n  if (!wasmImports[\"swr_alloc\"] || wasmImports[\"swr_alloc\"].stub) abort(\"external symbol 'swr_alloc' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"swr_alloc\"](...args);\n}\n\n_swr_alloc.stub = true;\n\nfunction _swr_convert(...args) {\n  if (!wasmImports[\"swr_convert\"] || wasmImports[\"swr_convert\"].stub) abort(\"external symbol 'swr_convert' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"swr_convert\"](...args);\n}\n\n_swr_convert.stub = true;\n\nfunction _swr_init(...args) {\n  if (!wasmImports[\"swr_init\"] || wasmImports[\"swr_init\"].stub) abort(\"external symbol 'swr_init' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"swr_init\"](...args);\n}\n\n_swr_init.stub = true;\n\nfunction _swri_resampler(...args) {\n  if (!wasmImports[\"swri_resampler\"] || wasmImports[\"swri_resampler\"].stub) abort(\"external symbol 'swri_resampler' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"swri_resampler\"](...args);\n}\n\n_swri_resampler.stub = true;\n\nfunction _sws_convertPalette8ToPacked24(...args) {\n  if (!wasmImports[\"sws_convertPalette8ToPacked24\"] || wasmImports[\"sws_convertPalette8ToPacked24\"].stub) abort(\"external symbol 'sws_convertPalette8ToPacked24' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"sws_convertPalette8ToPacked24\"](...args);\n}\n\n_sws_convertPalette8ToPacked24.stub = true;\n\nfunction _sws_convertPalette8ToPacked32(...args) {\n  if (!wasmImports[\"sws_convertPalette8ToPacked32\"] || wasmImports[\"sws_convertPalette8ToPacked32\"].stub) abort(\"external symbol 'sws_convertPalette8ToPacked32' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"sws_convertPalette8ToPacked32\"](...args);\n}\n\n_sws_convertPalette8ToPacked32.stub = true;\n\nfunction _sws_freeContext(...args) {\n  if (!wasmImports[\"sws_freeContext\"] || wasmImports[\"sws_freeContext\"].stub) abort(\"external symbol 'sws_freeContext' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"sws_freeContext\"](...args);\n}\n\n_sws_freeContext.stub = true;\n\nfunction _sws_getContext(...args) {\n  if (!wasmImports[\"sws_getContext\"] || wasmImports[\"sws_getContext\"].stub) abort(\"external symbol 'sws_getContext' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"sws_getContext\"](...args);\n}\n\n_sws_getContext.stub = true;\n\nfunction _sws_scale(...args) {\n  if (!wasmImports[\"sws_scale\"] || wasmImports[\"sws_scale\"].stub) abort(\"external symbol 'sws_scale' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"sws_scale\"](...args);\n}\n\n_sws_scale.stub = true;\n\nvar writeArrayToMemory = (array, buffer) => {\n  assert(array.length >= 0, \"writeArrayToMemory array must have a length (should be an array or typed array)\");\n  (growMemViews(), HEAP8).set(array, buffer);\n};\n\nvar _uuid_generate = out => {\n  // void uuid_generate(uuid_t out);\n  var uuid = new Uint8Array(16);\n  randomFill(uuid);\n  // Makes uuid compliant to RFC-4122\n  uuid[6] = (uuid[6] & 15) | 64;\n  // uuid version\n  uuid[8] = (uuid[8] & 63) | 128;\n  // uuid variant\n  writeArrayToMemory(uuid, out);\n};\n\n_uuid_generate.sig = \"vp\";\n\n/** @param {number|boolean=} upper */ var _uuid_unparse = (uu, out, upper) => {\n  // void uuid_unparse(const uuid_t uu, char *out);\n  var i = 0;\n  var uuid = \"xxxx-xx-xx-xx-xxxxxx\".replace(/[x]/g, function(c) {\n    var r = upper ? ((growMemViews(), HEAPU8)[(uu) + (i)]).toString(16).toUpperCase() : ((growMemViews(), \n    HEAPU8)[(uu) + (i)]).toString(16);\n    r = (r.length === 1) ? \"0\" + r : r;\n    // Zero pad single digit hex values\n    i++;\n    return r;\n  });\n  stringToUTF8(uuid, out, 37);\n};\n\n_uuid_unparse.sig = \"vpp\";\n\nfunction _uyvytoyuv420(...args) {\n  if (!wasmImports[\"uyvytoyuv420\"] || wasmImports[\"uyvytoyuv420\"].stub) abort(\"external symbol 'uyvytoyuv420' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"uyvytoyuv420\"](...args);\n}\n\n_uyvytoyuv420.stub = true;\n\nfunction _uyvytoyuv422(...args) {\n  if (!wasmImports[\"uyvytoyuv422\"] || wasmImports[\"uyvytoyuv422\"].stub) abort(\"external symbol 'uyvytoyuv422' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"uyvytoyuv422\"](...args);\n}\n\n_uyvytoyuv422.stub = true;\n\nfunction _vu9_to_vu12(...args) {\n  if (!wasmImports[\"vu9_to_vu12\"] || wasmImports[\"vu9_to_vu12\"].stub) abort(\"external symbol 'vu9_to_vu12' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"vu9_to_vu12\"](...args);\n}\n\n_vu9_to_vu12.stub = true;\n\nfunction _yuv422ptouyvy(...args) {\n  if (!wasmImports[\"yuv422ptouyvy\"] || wasmImports[\"yuv422ptouyvy\"].stub) abort(\"external symbol 'yuv422ptouyvy' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"yuv422ptouyvy\"](...args);\n}\n\n_yuv422ptouyvy.stub = true;\n\nfunction _yuv422ptoyuy2(...args) {\n  if (!wasmImports[\"yuv422ptoyuy2\"] || wasmImports[\"yuv422ptoyuy2\"].stub) abort(\"external symbol 'yuv422ptoyuy2' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"yuv422ptoyuy2\"](...args);\n}\n\n_yuv422ptoyuy2.stub = true;\n\nfunction _yuy2toyv12(...args) {\n  if (!wasmImports[\"yuy2toyv12\"] || wasmImports[\"yuy2toyv12\"].stub) abort(\"external symbol 'yuy2toyv12' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"yuy2toyv12\"](...args);\n}\n\n_yuy2toyv12.stub = true;\n\nfunction _yuyvtoyuv420(...args) {\n  if (!wasmImports[\"yuyvtoyuv420\"] || wasmImports[\"yuyvtoyuv420\"].stub) abort(\"external symbol 'yuyvtoyuv420' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"yuyvtoyuv420\"](...args);\n}\n\n_yuyvtoyuv420.stub = true;\n\nfunction _yuyvtoyuv422(...args) {\n  if (!wasmImports[\"yuyvtoyuv422\"] || wasmImports[\"yuyvtoyuv422\"].stub) abort(\"external symbol 'yuyvtoyuv422' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"yuyvtoyuv422\"](...args);\n}\n\n_yuyvtoyuv422.stub = true;\n\nfunction _yv12touyvy(...args) {\n  if (!wasmImports[\"yv12touyvy\"] || wasmImports[\"yv12touyvy\"].stub) abort(\"external symbol 'yv12touyvy' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"yv12touyvy\"](...args);\n}\n\n_yv12touyvy.stub = true;\n\nfunction _yv12toyuy2(...args) {\n  if (!wasmImports[\"yv12toyuy2\"] || wasmImports[\"yv12toyuy2\"].stub) abort(\"external symbol 'yv12toyuy2' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"yv12toyuy2\"](...args);\n}\n\n_yv12toyuy2.stub = true;\n\nfunction _yvu9_to_yuy2(...args) {\n  if (!wasmImports[\"yvu9_to_yuy2\"] || wasmImports[\"yvu9_to_yuy2\"].stub) abort(\"external symbol 'yvu9_to_yuy2' is missing. perhaps a side module was not linked in? if this function was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment\");\n  return wasmImports[\"yvu9_to_yuy2\"](...args);\n}\n\n_yvu9_to_yuy2.stub = true;\n\nvar FS_createPath = FS.createPath;\n\nPThread.init();\n\nregisterWasmPlugin();\n\nassert(emval_handles.length === 5 * 2);\n\ninit_ClassHandle();\n\ninit_RegisteredPointer();\n\nFetch.init();\n\n// End JS library code\n// include: postlibrary.js\n// This file is included after the automatically-generated JS library code\n// but before the wasm module is created.\n{\n  // With WASM_ESM_INTEGRATION this has to happen at the top level and not\n  // delayed until processModuleArgs.\n  initMemory();\n  // Begin ATMODULES hooks\n  if (Module[\"preloadPlugins\"]) preloadPlugins = Module[\"preloadPlugins\"];\n  if (Module[\"noExitRuntime\"]) noExitRuntime = Module[\"noExitRuntime\"];\n  if (Module[\"print\"]) out = Module[\"print\"];\n  if (Module[\"printErr\"]) err = Module[\"printErr\"];\n  if (Module[\"dynamicLibraries\"]) dynamicLibraries = Module[\"dynamicLibraries\"];\n  if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n  // End ATMODULES hooks\n  checkIncomingModuleAPI();\n  if (Module[\"arguments\"]) programArgs = Module[\"arguments\"];\n  if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n  // Assertions on removed incoming Module JS APIs.\n  assert(typeof Module[\"memoryInitializerPrefixURL\"] == \"undefined\", \"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\");\n  assert(typeof Module[\"pthreadMainPrefixURL\"] == \"undefined\", \"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\");\n  assert(typeof Module[\"cdInitializerPrefixURL\"] == \"undefined\", \"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\");\n  assert(typeof Module[\"filePackagePrefixURL\"] == \"undefined\", \"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\");\n  assert(typeof Module[\"read\"] == \"undefined\", \"Module.read option was removed\");\n  assert(typeof Module[\"readAsync\"] == \"undefined\", \"Module.readAsync option was removed (modify readAsync in JS)\");\n  assert(typeof Module[\"readBinary\"] == \"undefined\", \"Module.readBinary option was removed (modify readBinary in JS)\");\n  assert(typeof Module[\"setWindowTitle\"] == \"undefined\", \"Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)\");\n  assert(typeof Module[\"TOTAL_MEMORY\"] == \"undefined\", \"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY\");\n  assert(typeof Module[\"ENVIRONMENT\"] == \"undefined\", \"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)\");\n  assert(typeof Module[\"STACK_SIZE\"] == \"undefined\", \"STACK_SIZE can no longer be set at runtime.  Use -sSTACK_SIZE at link time\");\n  if (Module[\"preInit\"]) {\n    if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n    while (Module[\"preInit\"].length > 0) {\n      Module[\"preInit\"].shift()();\n    }\n  }\n  consumedModuleProp(\"preInit\");\n}\n\n// Begin runtime exports\nModule[\"addRunDependency\"] = addRunDependency;\n\nModule[\"removeRunDependency\"] = removeRunDependency;\n\nModule[\"UTF8ToString\"] = UTF8ToString;\n\nModule[\"stringToUTF8\"] = stringToUTF8;\n\nModule[\"FS_preloadFile\"] = FS_preloadFile;\n\nModule[\"FS_unlink\"] = FS_unlink;\n\nModule[\"FS_createPath\"] = FS_createPath;\n\nModule[\"FS\"] = FS;\n\nModule[\"FS_createDataFile\"] = FS_createDataFile;\n\nModule[\"GL\"] = GL;\n\nvar missingLibrarySymbols = [ \"writeI53ToI64Clamped\", \"writeI53ToI64Signaling\", \"writeI53ToU64Clamped\", \"writeI53ToU64Signaling\", \"convertI32PairToI53\", \"convertI32PairToI53Checked\", \"convertU32PairToI53\", \"getTempRet0\", \"setTempRet0\", \"strError\", \"autoResumeAudioContext\", \"getDynCaller\", \"asmjsMangle\", \"mmapAlloc\", \"addOnInit\", \"addOnPreMain\", \"STACK_SIZE\", \"STACK_ALIGN\", \"POINTER_SIZE\", \"ASSERTIONS\", \"ccall\", \"cwrap\", \"removeFunction\", \"intArrayToString\", \"stringToAscii\", \"registerUiEventCallback\", \"registerFocusEventCallback\", \"fillDeviceOrientationEventData\", \"registerDeviceOrientationEventCallback\", \"fillDeviceMotionEventData\", \"registerDeviceMotionEventCallback\", \"screenOrientation\", \"fillOrientationChangeEventData\", \"registerOrientationChangeEventCallback\", \"fillFullscreenChangeEventData\", \"registerFullscreenChangeEventCallback\", \"JSEvents_requestFullscreen\", \"JSEvents_resizeCanvasForFullscreen\", \"registerRestoreOldStyle\", \"hideEverythingExceptGivenElement\", \"restoreHiddenElements\", \"setLetterbox\", \"softFullscreenResizeWebGLRenderTarget\", \"doRequestFullscreen\", \"fillPointerlockChangeEventData\", \"registerPointerlockChangeEventCallback\", \"registerPointerlockErrorEventCallback\", \"requestPointerLock\", \"fillVisibilityChangeEventData\", \"registerVisibilityChangeEventCallback\", \"fillGamepadEventData\", \"registerGamepadEventCallback\", \"fillBatteryEventData\", \"registerBatteryEventCallback\", \"setCanvasElementSizeCallingThread\", \"setCanvasElementSizeMainThread\", \"setCanvasElementSize\", \"getCanvasSizeCallingThread\", \"getCanvasSizeMainThread\", \"getCanvasElementSize\", \"convertPCtoSourceLocation\", \"flush_NO_FILESYSTEM\", \"wasiRightsToMuslOFlags\", \"wasiOFlagsToMuslOFlags\", \"safeSetTimeout\", \"setImmediateWrapped\", \"safeRequestAnimationFrame\", \"clearImmediateWrapped\", \"registerPostMainLoop\", \"registerPreMainLoop\", \"makePromise\", \"addPromise\", \"idsToPromises\", \"makePromiseCallback\", \"findMatchingCatch\", \"incrementUncaughtExceptionCount\", \"decrementUncaughtExceptionCount\", \"Browser_asyncPrepareDataCounter\", \"arraySum\", \"addDays\", \"wasmfsNodeConvertNodeCode\", \"wasmfsTry\", \"wasmfsNodeFixStat\", \"wasmfsNodeLstat\", \"wasmfsNodeFstat\", \"emscriptenWebGLGetUniform\", \"emscriptenWebGLGetVertexAttrib\", \"__glGetActiveAttribOrUniform\", \"emscriptenWebGLGetIndexed\", \"ALLOC_NORMAL\", \"ALLOC_STACK\", \"allocate\", \"writeStringToMemory\", \"writeAsciiToMemory\", \"allocateUTF8\", \"allocateUTF8OnStack\", \"demangle\", \"stackTrace\", \"getNativeTypeSize\", \"dlsyncThreadsAsync\", \"getFunctionArgsName\", \"createJsInvokerSignature\", \"createJsInvoker\", \"getInheritedInstanceCount\", \"getLiveInheritedInstances\", \"installIndexedIterator\", \"setDelayFunction\", \"validateThis\", \"count_emval_handles\", \"writeGLArray\", \"emscripten_webgl_destroy_context_before_on_calling_thread\", \"registerWebGlEventCallback\" ];\n\nmissingLibrarySymbols.forEach(missingLibrarySymbol);\n\nvar unexportedSymbols = [ \"run\", \"out\", \"err\", \"callMain\", \"abort\", \"wasmExports\", \"writeStackCookie\", \"checkStackCookie\", \"writeI53ToI64\", \"readI53FromI64\", \"readI53FromU64\", \"INT53_MAX\", \"INT53_MIN\", \"bigintToI53Checked\", \"HEAP8\", \"HEAP16\", \"HEAPU16\", \"HEAP32\", \"HEAPU32\", \"HEAPF32\", \"HEAPF64\", \"HEAP64\", \"HEAPU64\", \"stackSave\", \"stackRestore\", \"stackAlloc\", \"createNamedFunction\", \"ptrToString\", \"zeroMemory\", \"exitJS\", \"getHeapMax\", \"growMemory\", \"ENV\", \"withStackSave\", \"ERRNO_CODES\", \"inetPton4\", \"inetNtop4\", \"inetPton6\", \"inetNtop6\", \"readSockaddr\", \"writeSockaddr\", \"DNS\", \"Protocols\", \"Sockets\", \"timers\", \"warnOnce\", \"readEmAsmArgsArray\", \"readEmAsmArgs\", \"runEmAsmFunction\", \"runMainThreadEmAsm\", \"jstoi_q\", \"getExecutableName\", \"dynCall\", \"setWasmTableEntry\", \"getWasmTableEntry\", \"handleException\", \"keepRuntimeAlive\", \"runtimeKeepalivePush\", \"runtimeKeepalivePop\", \"callUserCallback\", \"maybeExit\", \"asyncLoad\", \"alignMemory\", \"HandleAllocator\", \"wasmTable\", \"wasmMemory\", \"getUniqueRunDependency\", \"noExitRuntime\", \"addOnPreRun\", \"addOnPostCtor\", \"addOnExit\", \"addOnPostRun\", \"convertJsFunctionToWasm\", \"freeTableIndexes\", \"functionsInTableMap\", \"getEmptyTableSlot\", \"updateTableMap\", \"getFunctionAddress\", \"addFunction\", \"setValue\", \"getValue\", \"PATH\", \"PATH_FS\", \"UTF8Decoder\", \"UTF8ArrayToString\", \"stringToUTF8Array\", \"lengthBytesUTF8\", \"intArrayFromString\", \"AsciiToString\", \"UTF16Decoder\", \"UTF16ToString\", \"stringToUTF16\", \"lengthBytesUTF16\", \"UTF32ToString\", \"stringToUTF32\", \"lengthBytesUTF32\", \"stringToNewUTF8\", \"stringToUTF8OnStack\", \"writeArrayToMemory\", \"JSEvents\", \"registerKeyEventCallback\", \"specialHTMLTargets\", \"maybeCStringToJsString\", \"findEventTarget\", \"findCanvasEventTarget\", \"getBoundingClientRect\", \"fillMouseEventData\", \"registerMouseEventCallback\", \"registerWheelEventCallback\", \"currentFullscreenStrategy\", \"restoreOldWindowedStyle\", \"registerTouchEventCallback\", \"registerBeforeUnloadEventCallback\", \"jsStackTrace\", \"getCallstack\", \"UNWIND_CACHE\", \"ExitStatus\", \"getEnvStrings\", \"checkWasiClock\", \"initRandomFill\", \"randomFill\", \"emSetImmediate\", \"emClearImmediate_deps\", \"emClearImmediate\", \"promiseMap\", \"getPromise\", \"uncaughtExceptionCount\", \"exceptionCaught\", \"ExceptionInfo\", \"Browser\", \"requestFullscreen\", \"requestFullScreen\", \"setCanvasSize\", \"getUserMedia\", \"createContext\", \"getPreloadedImageData__data\", \"wget\", \"MONTH_DAYS_REGULAR\", \"MONTH_DAYS_LEAP\", \"MONTH_DAYS_REGULAR_CUMULATIVE\", \"MONTH_DAYS_LEAP_CUMULATIVE\", \"isLeapYear\", \"ydayFromDate\", \"registerWasmPlugin\", \"preloadedWasm\", \"replaceORIGIN\", \"isSymbolDefined\", \"GOT\", \"LDSO\", \"getMemory\", \"mergeLibSymbols\", \"loadWebAssemblyModule\", \"newDSO\", \"findLibraryFS\", \"loadDynamicLibrary\", \"dlopenInternal\", \"preloadPlugins\", \"FS_createPreloadedFile\", \"FS_modeStringToFlags\", \"FS_getMode\", \"FS_fileDataToTypedArray\", \"FS_stdin_getChar_buffer\", \"FS_stdin_getChar\", \"FS_createDevice\", \"FS_readFile\", \"MEMFS\", \"wasmFSPreloadedFiles\", \"wasmFSPreloadedDirs\", \"wasmFSPreloadingFlushed\", \"wasmFSDevices\", \"wasmFSDeviceStreams\", \"FS_mknod\", \"FS_create\", \"FS_writeFile\", \"FS_mkdir\", \"FS_mkdirTree\", \"wasmFS$JSMemoryFiles\", \"wasmFS$backends\", \"wasmFS$JSMemoryRanges\", \"wasmfsNodeIsWindows\", \"wasmfsOPFSDirectoryHandles\", \"wasmfsOPFSFileHandles\", \"wasmfsOPFSAccessHandles\", \"wasmfsOPFSBlobs\", \"wasmfsOPFSProxyFinish\", \"wasmfsOPFSGetOrCreateFile\", \"wasmfsOPFSGetOrCreateDir\", \"waitAsyncPolyfilled\", \"tempFixedLengthArray\", \"miniTempWebGLFloatBuffers\", \"miniTempWebGLIntBuffers\", \"heapObjectForWebGLType\", \"toTypedArrayIndex\", \"webgl_enable_WEBGL_multi_draw\", \"webgl_enable_EXT_polygon_offset_clamp\", \"webgl_enable_EXT_clip_control\", \"webgl_enable_WEBGL_polygon_mode\", \"emscriptenWebGLGet\", \"computeUnpackAlignedImageSize\", \"colorChannelsInGlTextureFormat\", \"emscriptenWebGLGetTexPixelData\", \"webglGetProgramUniformLocation\", \"webglGetUniformLocation\", \"webglPrepareUniformLocationsBeforeFirstUse\", \"webglGetLeftBracePos\", \"webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance\", \"webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance\", \"print\", \"printErr\", \"jstoi_s\", \"PThread\", \"terminateWorker\", \"cleanupThread\", \"registerTLSInit\", \"spawnThread\", \"exitOnMainThread\", \"proxyToMainThread\", \"proxiedJSCallArgs\", \"invokeEntryPoint\", \"markAsFinished\", \"checkMailbox\", \"InternalError\", \"BindingError\", \"throwInternalError\", \"throwBindingError\", \"registeredTypes\", \"awaitingDependencies\", \"typeDependencies\", \"tupleRegistrations\", \"structRegistrations\", \"sharedRegisterType\", \"whenDependentTypesAreResolved\", \"getTypeName\", \"getFunctionName\", \"heap32VectorToArray\", \"requireRegisteredType\", \"usesDestructorStack\", \"checkArgCount\", \"getEnumValueType\", \"getRequiredArgCount\", \"UnboundTypeError\", \"PureVirtualError\", \"EmValType\", \"EmValOptionalType\", \"throwUnboundTypeError\", \"ensureOverloadTable\", \"exposePublicSymbol\", \"replacePublicSymbol\", \"embindRepr\", \"registeredInstances\", \"getBasestPointer\", \"registerInheritedInstance\", \"unregisterInheritedInstance\", \"getInheritedInstance\", \"registeredPointers\", \"registerType\", \"integerReadValueFromPointer\", \"enumReadValueFromPointer\", \"floatReadValueFromPointer\", \"assertIntegerRange\", \"readPointer\", \"runDestructors\", \"craftInvokerFunction\", \"embind__requireFunction\", \"genericPointerToWireType\", \"constNoSmartPtrRawPointerToWireType\", \"nonConstNoSmartPtrRawPointerToWireType\", \"init_RegisteredPointer\", \"RegisteredPointer\", \"RegisteredPointer_fromWireType\", \"runDestructor\", \"releaseClassHandle\", \"finalizationRegistry\", \"detachFinalizer_deps\", \"detachFinalizer\", \"attachFinalizer\", \"makeClassHandle\", \"init_ClassHandle\", \"ClassHandle\", \"throwInstanceAlreadyDeleted\", \"deletionQueue\", \"flushPendingDeletes\", \"delayFunction\", \"RegisteredClass\", \"shallowCopyInternalPointer\", \"downcastPointer\", \"upcastPointer\", \"char_0\", \"char_9\", \"makeLegalFunctionName\", \"emval_freelist\", \"emval_handles\", \"emval_symbols\", \"getStringOrSymbol\", \"Emval\", \"emval_returnValue\", \"emval_lookupTypes\", \"emval_methodCallers\", \"emval_addMethodCaller\", \"webSockets\", \"WS\", \"EGL\", \"Fetch\", \"fetchDeleteCachedData\", \"fetchLoadCachedData\", \"fetchCacheData\", \"fetchXHR\", \"FetchXHR\" ];\n\nunexportedSymbols.forEach(unexportedRuntimeSymbol);\n\n// End runtime exports\n// Begin JS library exports\n// End JS library exports\n// end include: postlibrary.js\n// proxiedFunctionTable specifies the list of functions that can be called\n// either synchronously or asynchronously from other threads in postMessage()d\n// or internally queued events. This way a pthread in a Worker can synchronously\n// access e.g. the DOM on the main thread.\nvar proxiedFunctionTable = [ _proc_exit, exitOnMainThread, pthreadCreateProxied, _emscripten_set_beforeunload_callback_on_thread, _emscripten_set_keydown_callback_on_thread, _emscripten_set_keyup_callback_on_thread, _emscripten_set_mousedown_callback_on_thread, _emscripten_set_mouseleave_callback_on_thread, _emscripten_set_mousemove_callback_on_thread, _emscripten_set_mouseup_callback_on_thread, _emscripten_set_touchend_callback_on_thread, _emscripten_set_touchmove_callback_on_thread, _emscripten_set_touchstart_callback_on_thread, _emscripten_set_wheel_callback_on_thread, _emscripten_websocket_close, _emscripten_websocket_delete, _emscripten_websocket_is_supported, _emscripten_websocket_new, _emscripten_websocket_send_utf8_text, _emscripten_websocket_set_onclose_callback_on_thread, _emscripten_websocket_set_onerror_callback_on_thread, _emscripten_websocket_set_onmessage_callback_on_thread, _emscripten_websocket_set_onopen_callback_on_thread, _environ_get, _environ_sizes_get, _getaddrinfo ];\n\nfunction checkIncomingModuleAPI() {\n  ignoredModuleProp(\"fetchSettings\");\n  ignoredModuleProp(\"logReadFiles\");\n  ignoredModuleProp(\"loadSplitModule\");\n  ignoredModuleProp(\"onMalloc\");\n  ignoredModuleProp(\"onRealloc\");\n  ignoredModuleProp(\"onFree\");\n  ignoredModuleProp(\"onSbrkGrow\");\n}\n\nvar ASM_CONSTS = {\n  682280: () => navigator.userAgent.includes(\"Safari\") && navigator.userAgent.includes(\"Version/15.4\"),\n  682379: $0 => {\n    window.facadeWeb.setContextWebGL($0);\n  },\n  682418: $0 => {\n    if (global === undefined || global.engine === undefined || global.sys === undefined) {\n      console.log(\"Engine or sys is undefined...\");\n      return false;\n    }\n    let value = global.sys.uuid ? global.sys.uuid.trim() : \"\";\n    if (!value.length) return false;\n    if (value.length > 255) {\n      console.log(\"String too long...\");\n      return false;\n    }\n    const encoder = new TextEncoder;\n    const arrayBuffer = new Uint8Array(encoder.encode(value));\n    global.engine.HEAPU8.set(arrayBuffer, $0);\n    return true;\n  },\n  682889: $0 => {\n    if (global === undefined || global.os === undefined || global.engine === undefined) {\n      console.log(\"OS or Engine is undefined...\");\n      return false;\n    }\n    let arrayCpus = global.os.cpus();\n    if (arrayCpus.length == 0) {\n      console.log(\"No CPU detected...\");\n      return false;\n    }\n    let cpu = arrayCpus[0].model;\n    if (cpu.length > 255) {\n      console.log(\"String too long...\");\n      return false;\n    }\n    const encoder = new TextEncoder;\n    const arrayBuffer = new Uint8Array(encoder.encode(cpu));\n    global.engine.HEAPU8.set(arrayBuffer, $0);\n    return true;\n  },\n  683403: $0 => {\n    if (global === undefined || global.bb === undefined || global.engine === undefined) {\n      console.log(\"BB or Engine is undefined...\");\n      return false;\n    }\n    let mb = global.bb.serial;\n    if (mb.length > 255) {\n      console.log(\"String too long...\");\n      return false;\n    }\n    const encoder = new TextEncoder;\n    const arrayBuffer = new Uint8Array(encoder.encode(mb));\n    global.engine.HEAPU8.set(arrayBuffer, $0);\n    return true;\n  },\n  683800: () => window.facadeWeb.getCurrentMemoryUsage(),\n  683853: ($0, $1) => window.facadeWeb.playSound($0, $1),\n  683900: () => window.facadeWeb.getPrivateIP(),\n  683944: ($0, $1) => {\n    const peerID = BigInt.asUintN(64, $0);\n    window.facadeWeb.createPeerConnectionWeb(peerID, $1);\n  },\n  684041: $0 => {\n    window.facadeWeb.glProvokingVertexWEBGL($0);\n  }\n};\n\n// Imports from the Wasm binary.\nvar _main = Module[\"_main\"] = makeInvalidEarlyAccess(\"_main\");\n\nvar _free = Module[\"_free\"] = makeInvalidEarlyAccess(\"_free\");\n\nvar _malloc = Module[\"_malloc\"] = makeInvalidEarlyAccess(\"_malloc\");\n\nvar ___multi3 = makeInvalidEarlyAccess(\"___multi3\");\n\nvar __ZdlPvm = makeInvalidEarlyAccess(\"__ZdlPvm\");\n\nvar _strlen = makeInvalidEarlyAccess(\"_strlen\");\n\nvar _memcmp = makeInvalidEarlyAccess(\"_memcmp\");\n\nvar __Znwm = makeInvalidEarlyAccess(\"__Znwm\");\n\nvar _pthread_self = makeInvalidEarlyAccess(\"_pthread_self\");\n\nvar ___cxa_guard_acquire = makeInvalidEarlyAccess(\"___cxa_guard_acquire\");\n\nvar ___cxa_guard_release = makeInvalidEarlyAccess(\"___cxa_guard_release\");\n\nvar ___cxa_pure_virtual = makeInvalidEarlyAccess(\"___cxa_pure_virtual\");\n\nvar _isCurrentSequenceLoaded = Module[\"_isCurrentSequenceLoaded\"] = makeInvalidEarlyAccess(\"_isCurrentSequenceLoaded\");\n\nvar _isCurrentSequenceShowOnlyDynamics = Module[\"_isCurrentSequenceShowOnlyDynamics\"] = makeInvalidEarlyAccess(\"_isCurrentSequenceShowOnlyDynamics\");\n\nvar _setCurrentSequenceShowOnlyDynamics = Module[\"_setCurrentSequenceShowOnlyDynamics\"] = makeInvalidEarlyAccess(\"_setCurrentSequenceShowOnlyDynamics\");\n\nvar _saveCurrentSequenceObjectiveGrade = Module[\"_saveCurrentSequenceObjectiveGrade\"] = makeInvalidEarlyAccess(\"_saveCurrentSequenceObjectiveGrade\");\n\nvar _getCurrentSequenceObjectiveGrade = Module[\"_getCurrentSequenceObjectiveGrade\"] = makeInvalidEarlyAccess(\"_getCurrentSequenceObjectiveGrade\");\n\nvar _isCurrentSequenceInEvaluationMode = Module[\"_isCurrentSequenceInEvaluationMode\"] = makeInvalidEarlyAccess(\"_isCurrentSequenceInEvaluationMode\");\n\nvar _saveCurrentSequenceObjectiveVisualizations = Module[\"_saveCurrentSequenceObjectiveVisualizations\"] = makeInvalidEarlyAccess(\"_saveCurrentSequenceObjectiveVisualizations\");\n\nvar _getCurrentSequenceObjectiveVisualizations = Module[\"_getCurrentSequenceObjectiveVisualizations\"] = makeInvalidEarlyAccess(\"_getCurrentSequenceObjectiveVisualizations\");\n\nvar _getCurrentSequenceNodeVideoID = Module[\"_getCurrentSequenceNodeVideoID\"] = makeInvalidEarlyAccess(\"_getCurrentSequenceNodeVideoID\");\n\nvar _setSequenceVideoPath = Module[\"_setSequenceVideoPath\"] = makeInvalidEarlyAccess(\"_setSequenceVideoPath\");\n\nvar _setSequenceVideoPlaying = Module[\"_setSequenceVideoPlaying\"] = makeInvalidEarlyAccess(\"_setSequenceVideoPlaying\");\n\nvar _getCurrentSequenceVideoDuration = Module[\"_getCurrentSequenceVideoDuration\"] = makeInvalidEarlyAccess(\"_getCurrentSequenceVideoDuration\");\n\nvar _setSequenceVideoTimer = Module[\"_setSequenceVideoTimer\"] = makeInvalidEarlyAccess(\"_setSequenceVideoTimer\");\n\nvar _setSequenceVideoHidden = Module[\"_setSequenceVideoHidden\"] = makeInvalidEarlyAccess(\"_setSequenceVideoHidden\");\n\nvar _setSequenceVideoAvatarHidden = Module[\"_setSequenceVideoAvatarHidden\"] = makeInvalidEarlyAccess(\"_setSequenceVideoAvatarHidden\");\n\nvar _setSequenceVideoHandsHidden = Module[\"_setSequenceVideoHandsHidden\"] = makeInvalidEarlyAccess(\"_setSequenceVideoHandsHidden\");\n\nvar _clipSequenceVideo = Module[\"_clipSequenceVideo\"] = makeInvalidEarlyAccess(\"_clipSequenceVideo\");\n\nvar _setSequenceVideoFirstPerson = Module[\"_setSequenceVideoFirstPerson\"] = makeInvalidEarlyAccess(\"_setSequenceVideoFirstPerson\");\n\nvar _getCurrentSequenceStepsCount = Module[\"_getCurrentSequenceStepsCount\"] = makeInvalidEarlyAccess(\"_getCurrentSequenceStepsCount\");\n\nvar _getCurrentStepIndex = Module[\"_getCurrentStepIndex\"] = makeInvalidEarlyAccess(\"_getCurrentStepIndex\");\n\nvar _getCurrentStepID = Module[\"_getCurrentStepID\"] = makeInvalidEarlyAccess(\"_getCurrentStepID\");\n\nvar _getStepIDAtIndex = Module[\"_getStepIDAtIndex\"] = makeInvalidEarlyAccess(\"_getStepIDAtIndex\");\n\nvar _addStep = Module[\"_addStep\"] = makeInvalidEarlyAccess(\"_addStep\");\n\nvar _duplicateStep = Module[\"_duplicateStep\"] = makeInvalidEarlyAccess(\"_duplicateStep\");\n\nvar _selectStep = Module[\"_selectStep\"] = makeInvalidEarlyAccess(\"_selectStep\");\n\nvar _goToStepStart = Module[\"_goToStepStart\"] = makeInvalidEarlyAccess(\"_goToStepStart\");\n\nvar _goToStepEnd = Module[\"_goToStepEnd\"] = makeInvalidEarlyAccess(\"_goToStepEnd\");\n\nvar _getStepType = Module[\"_getStepType\"] = makeInvalidEarlyAccess(\"_getStepType\");\n\nvar _getStepDuration = Module[\"_getStepDuration\"] = makeInvalidEarlyAccess(\"_getStepDuration\");\n\nvar _setStepDuration = Module[\"_setStepDuration\"] = makeInvalidEarlyAccess(\"_setStepDuration\");\n\nvar _getAnimatedStepImageFilePath = Module[\"_getAnimatedStepImageFilePath\"] = makeInvalidEarlyAccess(\"_getAnimatedStepImageFilePath\");\n\nvar _getAnimatedStepVideo = Module[\"_getAnimatedStepVideo\"] = makeInvalidEarlyAccess(\"_getAnimatedStepVideo\");\n\nvar _setAnimatedStepImageFilePath = Module[\"_setAnimatedStepImageFilePath\"] = makeInvalidEarlyAccess(\"_setAnimatedStepImageFilePath\");\n\nvar _setAnimatedStepVideoID = Module[\"_setAnimatedStepVideoID\"] = makeInvalidEarlyAccess(\"_setAnimatedStepVideoID\");\n\nvar _isStepAnimationBackAndForth = Module[\"_isStepAnimationBackAndForth\"] = makeInvalidEarlyAccess(\"_isStepAnimationBackAndForth\");\n\nvar _setStepAnimationBackAndForth = Module[\"_setStepAnimationBackAndForth\"] = makeInvalidEarlyAccess(\"_setStepAnimationBackAndForth\");\n\nvar _setStepQuestionCorrectAnswer = Module[\"_setStepQuestionCorrectAnswer\"] = makeInvalidEarlyAccess(\"_setStepQuestionCorrectAnswer\");\n\nvar _getStepProgress = Module[\"_getStepProgress\"] = makeInvalidEarlyAccess(\"_getStepProgress\");\n\nvar _isAtStart = Module[\"_isAtStart\"] = makeInvalidEarlyAccess(\"_isAtStart\");\n\nvar _isStepSaved = Module[\"_isStepSaved\"] = makeInvalidEarlyAccess(\"_isStepSaved\");\n\nvar _isCurrentStepActive = Module[\"_isCurrentStepActive\"] = makeInvalidEarlyAccess(\"_isCurrentStepActive\");\n\nvar _activateCurrentStep = Module[\"_activateCurrentStep\"] = makeInvalidEarlyAccess(\"_activateCurrentStep\");\n\nvar _disableCurrentStep = Module[\"_disableCurrentStep\"] = makeInvalidEarlyAccess(\"_disableCurrentStep\");\n\nvar _deleteStep = Module[\"_deleteStep\"] = makeInvalidEarlyAccess(\"_deleteStep\");\n\nvar _reverseSteps = Module[\"_reverseSteps\"] = makeInvalidEarlyAccess(\"_reverseSteps\");\n\nvar _reverseStepAnimated = Module[\"_reverseStepAnimated\"] = makeInvalidEarlyAccess(\"_reverseStepAnimated\");\n\nvar _removeTemporaryAsset = Module[\"_removeTemporaryAsset\"] = makeInvalidEarlyAccess(\"_removeTemporaryAsset\");\n\nvar _getTemporaryAssetID = Module[\"_getTemporaryAssetID\"] = makeInvalidEarlyAccess(\"_getTemporaryAssetID\");\n\nvar _canProceedToNextStep = Module[\"_canProceedToNextStep\"] = makeInvalidEarlyAccess(\"_canProceedToNextStep\");\n\nvar _canProceedToPreviousStep = Module[\"_canProceedToPreviousStep\"] = makeInvalidEarlyAccess(\"_canProceedToPreviousStep\");\n\nvar _nextStep = Module[\"_nextStep\"] = makeInvalidEarlyAccess(\"_nextStep\");\n\nvar _previousStep = Module[\"_previousStep\"] = makeInvalidEarlyAccess(\"_previousStep\");\n\nvar _isAssetForCurrentStep = Module[\"_isAssetForCurrentStep\"] = makeInvalidEarlyAccess(\"_isAssetForCurrentStep\");\n\nvar _commitCommand = Module[\"_commitCommand\"] = makeInvalidEarlyAccess(\"_commitCommand\");\n\nvar _undoCommand = Module[\"_undoCommand\"] = makeInvalidEarlyAccess(\"_undoCommand\");\n\nvar _redoCommand = Module[\"_redoCommand\"] = makeInvalidEarlyAccess(\"_redoCommand\");\n\nvar _getUndoStackSize = Module[\"_getUndoStackSize\"] = makeInvalidEarlyAccess(\"_getUndoStackSize\");\n\nvar _getRedoStackSize = Module[\"_getRedoStackSize\"] = makeInvalidEarlyAccess(\"_getRedoStackSize\");\n\nvar _moveSelectedNodes = Module[\"_moveSelectedNodes\"] = makeInvalidEarlyAccess(\"_moveSelectedNodes\");\n\nvar _scaleSelectedNodes = Module[\"_scaleSelectedNodes\"] = makeInvalidEarlyAccess(\"_scaleSelectedNodes\");\n\nvar _setRotationOfSelectedNodes = Module[\"_setRotationOfSelectedNodes\"] = makeInvalidEarlyAccess(\"_setRotationOfSelectedNodes\");\n\nvar _sinf = makeInvalidEarlyAccess(\"_sinf\");\n\nvar _cosf = makeInvalidEarlyAccess(\"_cosf\");\n\nvar _saveScaleToAssetDocument = Module[\"_saveScaleToAssetDocument\"] = makeInvalidEarlyAccess(\"_saveScaleToAssetDocument\");\n\nvar _setCameraView = Module[\"_setCameraView\"] = makeInvalidEarlyAccess(\"_setCameraView\");\n\nvar _getCameraState = Module[\"_getCameraState\"] = makeInvalidEarlyAccess(\"_getCameraState\");\n\nvar _setCameraState = Module[\"_setCameraState\"] = makeInvalidEarlyAccess(\"_setCameraState\");\n\nvar _setCameraPosXYZ = Module[\"_setCameraPosXYZ\"] = makeInvalidEarlyAccess(\"_setCameraPosXYZ\");\n\nvar _setCameraForwardXYZ = Module[\"_setCameraForwardXYZ\"] = makeInvalidEarlyAccess(\"_setCameraForwardXYZ\");\n\nvar _setModelPosition = Module[\"_setModelPosition\"] = makeInvalidEarlyAccess(\"_setModelPosition\");\n\nvar _getModelBottom = Module[\"_getModelBottom\"] = makeInvalidEarlyAccess(\"_getModelBottom\");\n\nvar _getModelDimensions = Module[\"_getModelDimensions\"] = makeInvalidEarlyAccess(\"_getModelDimensions\");\n\nvar _getNodePosition = Module[\"_getNodePosition\"] = makeInvalidEarlyAccess(\"_getNodePosition\");\n\nvar _getNodeScale = Module[\"_getNodeScale\"] = makeInvalidEarlyAccess(\"_getNodeScale\");\n\nvar _getNodeRotation = Module[\"_getNodeRotation\"] = makeInvalidEarlyAccess(\"_getNodeRotation\");\n\nvar _getStudioHierarchy = Module[\"_getStudioHierarchy\"] = makeInvalidEarlyAccess(\"_getStudioHierarchy\");\n\nvar _clickFirstNodeModel = Module[\"_clickFirstNodeModel\"] = makeInvalidEarlyAccess(\"_clickFirstNodeModel\");\n\nvar _isNodeActive = Module[\"_isNodeActive\"] = makeInvalidEarlyAccess(\"_isNodeActive\");\n\nvar _isNodeAnnotation = Module[\"_isNodeAnnotation\"] = makeInvalidEarlyAccess(\"_isNodeAnnotation\");\n\nvar _isNodeModel = Module[\"_isNodeModel\"] = makeInvalidEarlyAccess(\"_isNodeModel\");\n\nvar _isNodeQR = Module[\"_isNodeQR\"] = makeInvalidEarlyAccess(\"_isNodeQR\");\n\nvar _getSelectedNodesCount = Module[\"_getSelectedNodesCount\"] = makeInvalidEarlyAccess(\"_getSelectedNodesCount\");\n\nvar _getSelectedNodes = Module[\"_getSelectedNodes\"] = makeInvalidEarlyAccess(\"_getSelectedNodes\");\n\nvar _getSelectedAssetID = Module[\"_getSelectedAssetID\"] = makeInvalidEarlyAccess(\"_getSelectedAssetID\");\n\nvar _getSelectedAnchorID = Module[\"_getSelectedAnchorID\"] = makeInvalidEarlyAccess(\"_getSelectedAnchorID\");\n\nvar _getSelectedSessionNodeID = Module[\"_getSelectedSessionNodeID\"] = makeInvalidEarlyAccess(\"_getSelectedSessionNodeID\");\n\nvar _setHiddenRecursivelyNodeID = Module[\"_setHiddenRecursivelyNodeID\"] = makeInvalidEarlyAccess(\"_setHiddenRecursivelyNodeID\");\n\nvar _setSelectedNodesHidden = Module[\"_setSelectedNodesHidden\"] = makeInvalidEarlyAccess(\"_setSelectedNodesHidden\");\n\nvar _getWorldAssetType = Module[\"_getWorldAssetType\"] = makeInvalidEarlyAccess(\"_getWorldAssetType\");\n\nvar _getNodeName = Module[\"_getNodeName\"] = makeInvalidEarlyAccess(\"_getNodeName\");\n\nvar _applyScaleFactor = Module[\"_applyScaleFactor\"] = makeInvalidEarlyAccess(\"_applyScaleFactor\");\n\nvar _getInitialScale = Module[\"_getInitialScale\"] = makeInvalidEarlyAccess(\"_getInitialScale\");\n\nvar _decompressFolder = Module[\"_decompressFolder\"] = makeInvalidEarlyAccess(\"_decompressFolder\");\n\nvar _getOwnerID = Module[\"_getOwnerID\"] = makeInvalidEarlyAccess(\"_getOwnerID\");\n\nvar _getWorldOwnerType = Module[\"_getWorldOwnerType\"] = makeInvalidEarlyAccess(\"_getWorldOwnerType\");\n\nvar _getUsername = Module[\"_getUsername\"] = makeInvalidEarlyAccess(\"_getUsername\");\n\nvar _getPeerFullName = Module[\"_getPeerFullName\"] = makeInvalidEarlyAccess(\"_getPeerFullName\");\n\nvar _getPeerGroups = Module[\"_getPeerGroups\"] = makeInvalidEarlyAccess(\"_getPeerGroups\");\n\nvar _getPeerGroupRole = Module[\"_getPeerGroupRole\"] = makeInvalidEarlyAccess(\"_getPeerGroupRole\");\n\nvar _getGroupWorldIDs = Module[\"_getGroupWorldIDs\"] = makeInvalidEarlyAccess(\"_getGroupWorldIDs\");\n\nvar _getAuthorizedEmails = Module[\"_getAuthorizedEmails\"] = makeInvalidEarlyAccess(\"_getAuthorizedEmails\");\n\nvar _getAuthorizedEmailRole = Module[\"_getAuthorizedEmailRole\"] = makeInvalidEarlyAccess(\"_getAuthorizedEmailRole\");\n\nvar _getWorldPeers = Module[\"_getWorldPeers\"] = makeInvalidEarlyAccess(\"_getWorldPeers\");\n\nvar _getWorldPeerRole = Module[\"_getWorldPeerRole\"] = makeInvalidEarlyAccess(\"_getWorldPeerRole\");\n\nvar _getPeerFromUsername = Module[\"_getPeerFromUsername\"] = makeInvalidEarlyAccess(\"_getPeerFromUsername\");\n\nvar _setNewWorldOwner = Module[\"_setNewWorldOwner\"] = makeInvalidEarlyAccess(\"_setNewWorldOwner\");\n\nvar _isSavingFinished = Module[\"_isSavingFinished\"] = makeInvalidEarlyAccess(\"_isSavingFinished\");\n\nvar _getWorldGroups = Module[\"_getWorldGroups\"] = makeInvalidEarlyAccess(\"_getWorldGroups\");\n\nvar _getWorldGroupRole = Module[\"_getWorldGroupRole\"] = makeInvalidEarlyAccess(\"_getWorldGroupRole\");\n\nvar _removeWorldGroup = Module[\"_removeWorldGroup\"] = makeInvalidEarlyAccess(\"_removeWorldGroup\");\n\nvar _isUserOwnerWorld = Module[\"_isUserOwnerWorld\"] = makeInvalidEarlyAccess(\"_isUserOwnerWorld\");\n\nvar _canCurrentPeerEditWorld = Module[\"_canCurrentPeerEditWorld\"] = makeInvalidEarlyAccess(\"_canCurrentPeerEditWorld\");\n\nvar _canCurrentPeerEditSequence = Module[\"_canCurrentPeerEditSequence\"] = makeInvalidEarlyAccess(\"_canCurrentPeerEditSequence\");\n\nvar _canCurrentPeerEditAsset = Module[\"_canCurrentPeerEditAsset\"] = makeInvalidEarlyAccess(\"_canCurrentPeerEditAsset\");\n\nvar _canCurrentPeerDeleteWorld = Module[\"_canCurrentPeerDeleteWorld\"] = makeInvalidEarlyAccess(\"_canCurrentPeerDeleteWorld\");\n\nvar _addWorldToCurrentPeer = Module[\"_addWorldToCurrentPeer\"] = makeInvalidEarlyAccess(\"_addWorldToCurrentPeer\");\n\nvar _cloneWorld = Module[\"_cloneWorld\"] = makeInvalidEarlyAccess(\"_cloneWorld\");\n\nvar _loadWorld = Module[\"_loadWorld\"] = makeInvalidEarlyAccess(\"_loadWorld\");\n\nvar _loadWorldAsset = Module[\"_loadWorldAsset\"] = makeInvalidEarlyAccess(\"_loadWorldAsset\");\n\nvar _getLibraryDocumentsID = Module[\"_getLibraryDocumentsID\"] = makeInvalidEarlyAccess(\"_getLibraryDocumentsID\");\n\nvar _loadDocumentMetadata = Module[\"_loadDocumentMetadata\"] = makeInvalidEarlyAccess(\"_loadDocumentMetadata\");\n\nvar _getDocumentSize = Module[\"_getDocumentSize\"] = makeInvalidEarlyAccess(\"_getDocumentSize\");\n\nvar _clearWorld = Module[\"_clearWorld\"] = makeInvalidEarlyAccess(\"_clearWorld\");\n\nvar _deleteWorld = Module[\"_deleteWorld\"] = makeInvalidEarlyAccess(\"_deleteWorld\");\n\nvar _leaveWorld = Module[\"_leaveWorld\"] = makeInvalidEarlyAccess(\"_leaveWorld\");\n\nvar _getWorldTitle = Module[\"_getWorldTitle\"] = makeInvalidEarlyAccess(\"_getWorldTitle\");\n\nvar _isWorldAuthorized = Module[\"_isWorldAuthorized\"] = makeInvalidEarlyAccess(\"_isWorldAuthorized\");\n\nvar _isWorldMetadataValid = Module[\"_isWorldMetadataValid\"] = makeInvalidEarlyAccess(\"_isWorldMetadataValid\");\n\nvar _updateWorldTitle = Module[\"_updateWorldTitle\"] = makeInvalidEarlyAccess(\"_updateWorldTitle\");\n\nvar _getWorldThumbnail = Module[\"_getWorldThumbnail\"] = makeInvalidEarlyAccess(\"_getWorldThumbnail\");\n\nvar _getAssetDocumentCount = Module[\"_getAssetDocumentCount\"] = makeInvalidEarlyAccess(\"_getAssetDocumentCount\");\n\nvar _getWorldAssetDocumentID = Module[\"_getWorldAssetDocumentID\"] = makeInvalidEarlyAccess(\"_getWorldAssetDocumentID\");\n\nvar _getWorldEntitiesIDs = Module[\"_getWorldEntitiesIDs\"] = makeInvalidEarlyAccess(\"_getWorldEntitiesIDs\");\n\nvar _getEntityName = Module[\"_getEntityName\"] = makeInvalidEarlyAccess(\"_getEntityName\");\n\nvar _isEntityArchived = Module[\"_isEntityArchived\"] = makeInvalidEarlyAccess(\"_isEntityArchived\");\n\nvar _removeAssetDocument = Module[\"_removeAssetDocument\"] = makeInvalidEarlyAccess(\"_removeAssetDocument\");\n\nvar _getDocumentsCount = Module[\"_getDocumentsCount\"] = makeInvalidEarlyAccess(\"_getDocumentsCount\");\n\nvar _createNodeModel = Module[\"_createNodeModel\"] = makeInvalidEarlyAccess(\"_createNodeModel\");\n\nvar _deleteNodeModel = Module[\"_deleteNodeModel\"] = makeInvalidEarlyAccess(\"_deleteNodeModel\");\n\nvar _addNodeModelInNodesContainer = Module[\"_addNodeModelInNodesContainer\"] = makeInvalidEarlyAccess(\"_addNodeModelInNodesContainer\");\n\nvar _removeNodeModelFromNodesContainer = Module[\"_removeNodeModelFromNodesContainer\"] = makeInvalidEarlyAccess(\"_removeNodeModelFromNodesContainer\");\n\nvar _getDocumentLocalPath = Module[\"_getDocumentLocalPath\"] = makeInvalidEarlyAccess(\"_getDocumentLocalPath\");\n\nvar _loadMissingTextures = Module[\"_loadMissingTextures\"] = makeInvalidEarlyAccess(\"_loadMissingTextures\");\n\nvar _getDocumentTitleCloud = Module[\"_getDocumentTitleCloud\"] = makeInvalidEarlyAccess(\"_getDocumentTitleCloud\");\n\nvar _updateDocumentTitleCloud = Module[\"_updateDocumentTitleCloud\"] = makeInvalidEarlyAccess(\"_updateDocumentTitleCloud\");\n\nvar _addTemporaryAssetDocumentToCurrentStep = Module[\"_addTemporaryAssetDocumentToCurrentStep\"] = makeInvalidEarlyAccess(\"_addTemporaryAssetDocumentToCurrentStep\");\n\nvar _addTemporaryAssetToCurrentStep = Module[\"_addTemporaryAssetToCurrentStep\"] = makeInvalidEarlyAccess(\"_addTemporaryAssetToCurrentStep\");\n\nvar _loadDocumentThumbnail = Module[\"_loadDocumentThumbnail\"] = makeInvalidEarlyAccess(\"_loadDocumentThumbnail\");\n\nvar _isDocumentThumbnailLoaded = Module[\"_isDocumentThumbnailLoaded\"] = makeInvalidEarlyAccess(\"_isDocumentThumbnailLoaded\");\n\nvar _getDocumentThumbnailUrlS3 = Module[\"_getDocumentThumbnailUrlS3\"] = makeInvalidEarlyAccess(\"_getDocumentThumbnailUrlS3\");\n\nvar _getDocumentThumbnailLocalPath = Module[\"_getDocumentThumbnailLocalPath\"] = makeInvalidEarlyAccess(\"_getDocumentThumbnailLocalPath\");\n\nvar _updateDocumentThumbnail = Module[\"_updateDocumentThumbnail\"] = makeInvalidEarlyAccess(\"_updateDocumentThumbnail\");\n\nvar _deleteDocumentCloud = Module[\"_deleteDocumentCloud\"] = makeInvalidEarlyAccess(\"_deleteDocumentCloud\");\n\nvar _updatePartName = Module[\"_updatePartName\"] = makeInvalidEarlyAccess(\"_updatePartName\");\n\nvar _setAssetForPlacement = Module[\"_setAssetForPlacement\"] = makeInvalidEarlyAccess(\"_setAssetForPlacement\");\n\nvar _setAnchorForPlacement = Module[\"_setAnchorForPlacement\"] = makeInvalidEarlyAccess(\"_setAnchorForPlacement\");\n\nvar _isDocumentMetadataValid = Module[\"_isDocumentMetadataValid\"] = makeInvalidEarlyAccess(\"_isDocumentMetadataValid\");\n\nvar _isDocumentDataValid = Module[\"_isDocumentDataValid\"] = makeInvalidEarlyAccess(\"_isDocumentDataValid\");\n\nvar _duplicateSelectedAssets = Module[\"_duplicateSelectedAssets\"] = makeInvalidEarlyAccess(\"_duplicateSelectedAssets\");\n\nvar _getDocumentUrlS3 = Module[\"_getDocumentUrlS3\"] = makeInvalidEarlyAccess(\"_getDocumentUrlS3\");\n\nvar _createNewAnchor = Module[\"_createNewAnchor\"] = makeInvalidEarlyAccess(\"_createNewAnchor\");\n\nvar _deleteAnchor = Module[\"_deleteAnchor\"] = makeInvalidEarlyAccess(\"_deleteAnchor\");\n\nvar _getWorldAssetVideoID = Module[\"_getWorldAssetVideoID\"] = makeInvalidEarlyAccess(\"_getWorldAssetVideoID\");\n\nvar _setVideoFilePath = Module[\"_setVideoFilePath\"] = makeInvalidEarlyAccess(\"_setVideoFilePath\");\n\nvar _deleteVideo = Module[\"_deleteVideo\"] = makeInvalidEarlyAccess(\"_deleteVideo\");\n\nvar _convertModelFileToGLB = Module[\"_convertModelFileToGLB\"] = makeInvalidEarlyAccess(\"_convertModelFileToGLB\");\n\nvar _getVideoFileDuration = Module[\"_getVideoFileDuration\"] = makeInvalidEarlyAccess(\"_getVideoFileDuration\");\n\nvar _getVideoResolution = Module[\"_getVideoResolution\"] = makeInvalidEarlyAccess(\"_getVideoResolution\");\n\nvar _isVideoPixelFormatSupported = Module[\"_isVideoPixelFormatSupported\"] = makeInvalidEarlyAccess(\"_isVideoPixelFormatSupported\");\n\nvar _getVideoTags = Module[\"_getVideoTags\"] = makeInvalidEarlyAccess(\"_getVideoTags\");\n\nvar _addVideoTag = Module[\"_addVideoTag\"] = makeInvalidEarlyAccess(\"_addVideoTag\");\n\nvar _removeVideoTag = Module[\"_removeVideoTag\"] = makeInvalidEarlyAccess(\"_removeVideoTag\");\n\nvar _attemptPlayAudio = Module[\"_attemptPlayAudio\"] = makeInvalidEarlyAccess(\"_attemptPlayAudio\");\n\nvar _isWorldAssetLoaded = Module[\"_isWorldAssetLoaded\"] = makeInvalidEarlyAccess(\"_isWorldAssetLoaded\");\n\nvar _getSequenceCount = Module[\"_getSequenceCount\"] = makeInvalidEarlyAccess(\"_getSequenceCount\");\n\nvar _queryPeerMetadata = Module[\"_queryPeerMetadata\"] = makeInvalidEarlyAccess(\"_queryPeerMetadata\");\n\nvar _setEditing = Module[\"_setEditing\"] = makeInvalidEarlyAccess(\"_setEditing\");\n\nvar _atan2f = makeInvalidEarlyAccess(\"_atan2f\");\n\nvar _dsclogTRACE = Module[\"_dsclogTRACE\"] = makeInvalidEarlyAccess(\"_dsclogTRACE\");\n\nvar _dsclogDEBUG = Module[\"_dsclogDEBUG\"] = makeInvalidEarlyAccess(\"_dsclogDEBUG\");\n\nvar _dsclogINFO = Module[\"_dsclogINFO\"] = makeInvalidEarlyAccess(\"_dsclogINFO\");\n\nvar _dsclogWARN = Module[\"_dsclogWARN\"] = makeInvalidEarlyAccess(\"_dsclogWARN\");\n\nvar _dsclogERROR = Module[\"_dsclogERROR\"] = makeInvalidEarlyAccess(\"_dsclogERROR\");\n\nvar _dsclogCRITICAL = Module[\"_dsclogCRITICAL\"] = makeInvalidEarlyAccess(\"_dsclogCRITICAL\");\n\nvar ___multf3 = makeInvalidEarlyAccess(\"___multf3\");\n\nvar _pthread_create = makeInvalidEarlyAccess(\"_pthread_create\");\n\nvar _fiprintf = makeInvalidEarlyAccess(\"_fiprintf\");\n\nvar _abort = makeInvalidEarlyAccess(\"_abort\");\n\nvar _fwrite = makeInvalidEarlyAccess(\"_fwrite\");\n\nvar _gettimeofday = makeInvalidEarlyAccess(\"_gettimeofday\");\n\nvar _clock_gettime = makeInvalidEarlyAccess(\"_clock_gettime\");\n\nvar _getpid = makeInvalidEarlyAccess(\"_getpid\");\n\nvar _pthread_once = makeInvalidEarlyAccess(\"_pthread_once\");\n\nvar _sscanf = makeInvalidEarlyAccess(\"_sscanf\");\n\nvar _strftime = makeInvalidEarlyAccess(\"_strftime\");\n\nvar _strncmp = makeInvalidEarlyAccess(\"_strncmp\");\n\nvar _strchr = makeInvalidEarlyAccess(\"_strchr\");\n\nvar _strcmp = makeInvalidEarlyAccess(\"_strcmp\");\n\nvar _read = makeInvalidEarlyAccess(\"_read\");\n\nvar ___errno_location = makeInvalidEarlyAccess(\"___errno_location\");\n\nvar _close = makeInvalidEarlyAccess(\"_close\");\n\nvar _open = makeInvalidEarlyAccess(\"_open\");\n\nvar _strtod = makeInvalidEarlyAccess(\"_strtod\");\n\nvar _calloc = makeInvalidEarlyAccess(\"_calloc\");\n\nvar _realloc = makeInvalidEarlyAccess(\"_realloc\");\n\nvar _vsnprintf = makeInvalidEarlyAccess(\"_vsnprintf\");\n\nvar _strncpy = makeInvalidEarlyAccess(\"_strncpy\");\n\nvar _strspn = makeInvalidEarlyAccess(\"_strspn\");\n\nvar _strcpy = makeInvalidEarlyAccess(\"_strcpy\");\n\nvar _strtoul = makeInvalidEarlyAccess(\"_strtoul\");\n\nvar _fclose = makeInvalidEarlyAccess(\"_fclose\");\n\nvar _fopen = makeInvalidEarlyAccess(\"_fopen\");\n\nvar _mktime = makeInvalidEarlyAccess(\"_mktime\");\n\nvar _localtime = makeInvalidEarlyAccess(\"_localtime\");\n\nvar _fflush = makeInvalidEarlyAccess(\"_fflush\");\n\nvar _cos = makeInvalidEarlyAccess(\"_cos\");\n\nvar _sin = makeInvalidEarlyAccess(\"_sin\");\n\nvar _acos = makeInvalidEarlyAccess(\"_acos\");\n\nvar _exp = makeInvalidEarlyAccess(\"_exp\");\n\nvar _fmod = makeInvalidEarlyAccess(\"_fmod\");\n\nvar _strstr = makeInvalidEarlyAccess(\"_strstr\");\n\nvar _snprintf = makeInvalidEarlyAccess(\"_snprintf\");\n\nvar _atoi = makeInvalidEarlyAccess(\"_atoi\");\n\nvar _strtoull = makeInvalidEarlyAccess(\"_strtoull\");\n\nvar _strtol = makeInvalidEarlyAccess(\"_strtol\");\n\nvar _round = makeInvalidEarlyAccess(\"_round\");\n\nvar _roundf = makeInvalidEarlyAccess(\"_roundf\");\n\nvar _memchr = makeInvalidEarlyAccess(\"_memchr\");\n\nvar _lrint = makeInvalidEarlyAccess(\"_lrint\");\n\nvar _lrintf = makeInvalidEarlyAccess(\"_lrintf\");\n\nvar _pow = makeInvalidEarlyAccess(\"_pow\");\n\nvar _expf = makeInvalidEarlyAccess(\"_expf\");\n\nvar _logf = makeInvalidEarlyAccess(\"_logf\");\n\nvar _log = makeInvalidEarlyAccess(\"_log\");\n\nvar _log10 = makeInvalidEarlyAccess(\"_log10\");\n\nvar _sysconf = makeInvalidEarlyAccess(\"_sysconf\");\n\nvar _pthread_mutex_lock = makeInvalidEarlyAccess(\"_pthread_mutex_lock\");\n\nvar _pthread_cond_wait = makeInvalidEarlyAccess(\"_pthread_cond_wait\");\n\nvar _pthread_mutex_unlock = makeInvalidEarlyAccess(\"_pthread_mutex_unlock\");\n\nvar _pthread_cond_broadcast = makeInvalidEarlyAccess(\"_pthread_cond_broadcast\");\n\nvar _pthread_mutex_init = makeInvalidEarlyAccess(\"_pthread_mutex_init\");\n\nvar _pthread_cond_init = makeInvalidEarlyAccess(\"_pthread_cond_init\");\n\nvar _pthread_cond_destroy = makeInvalidEarlyAccess(\"_pthread_cond_destroy\");\n\nvar _pthread_mutex_destroy = makeInvalidEarlyAccess(\"_pthread_mutex_destroy\");\n\nvar _pthread_cond_signal = makeInvalidEarlyAccess(\"_pthread_cond_signal\");\n\nvar _pthread_join = makeInvalidEarlyAccess(\"_pthread_join\");\n\nvar _strrchr = makeInvalidEarlyAccess(\"_strrchr\");\n\nvar _fseek = makeInvalidEarlyAccess(\"_fseek\");\n\nvar _fputs = makeInvalidEarlyAccess(\"_fputs\");\n\nvar _getenv = makeInvalidEarlyAccess(\"_getenv\");\n\nvar _mkstemp = makeInvalidEarlyAccess(\"_mkstemp\");\n\nvar _atanf = makeInvalidEarlyAccess(\"_atanf\");\n\nvar _mkdir = makeInvalidEarlyAccess(\"_mkdir\");\n\nvar _powf = makeInvalidEarlyAccess(\"_powf\");\n\nvar ___getTypeName = makeInvalidEarlyAccess(\"___getTypeName\");\n\nvar __embind_initialize_bindings = makeInvalidEarlyAccess(\"__embind_initialize_bindings\");\n\nvar __emscripten_run_callback_on_thread = makeInvalidEarlyAccess(\"__emscripten_run_callback_on_thread\");\n\nvar _atan2 = makeInvalidEarlyAccess(\"_atan2\");\n\nvar __emscripten_tls_init = makeInvalidEarlyAccess(\"__emscripten_tls_init\");\n\nvar _strtoll = makeInvalidEarlyAccess(\"_strtoll\");\n\nvar _iprintf = makeInvalidEarlyAccess(\"_iprintf\");\n\nvar _fstat = makeInvalidEarlyAccess(\"_fstat\");\n\nvar _rmdir = makeInvalidEarlyAccess(\"_rmdir\");\n\nvar _unlink = makeInvalidEarlyAccess(\"_unlink\");\n\nvar _write = makeInvalidEarlyAccess(\"_write\");\n\nvar _emscripten_builtin_memalign = makeInvalidEarlyAccess(\"_emscripten_builtin_memalign\");\n\nvar _fabs = makeInvalidEarlyAccess(\"_fabs\");\n\nvar _scalbn = makeInvalidEarlyAccess(\"_scalbn\");\n\nvar _fdopen = makeInvalidEarlyAccess(\"_fdopen\");\n\nvar _access = makeInvalidEarlyAccess(\"_access\");\n\nvar _asin = makeInvalidEarlyAccess(\"_asin\");\n\nvar _atan = makeInvalidEarlyAccess(\"_atan\");\n\nvar _bsearch = makeInvalidEarlyAccess(\"_bsearch\");\n\nvar _cbrt = makeInvalidEarlyAccess(\"_cbrt\");\n\nvar _cbrtf = makeInvalidEarlyAccess(\"_cbrtf\");\n\nvar _clock = makeInvalidEarlyAccess(\"_clock\");\n\nvar _cosh = makeInvalidEarlyAccess(\"_cosh\");\n\nvar ___dl_seterr = makeInvalidEarlyAccess(\"___dl_seterr\");\n\nvar __emscripten_dlsync_self_async = makeInvalidEarlyAccess(\"__emscripten_dlsync_self_async\");\n\nvar __emscripten_dlsync_self = makeInvalidEarlyAccess(\"__emscripten_dlsync_self\");\n\nvar __emscripten_proxy_dlsync_async = makeInvalidEarlyAccess(\"__emscripten_proxy_dlsync_async\");\n\nvar __emscripten_proxy_dlsync = makeInvalidEarlyAccess(\"__emscripten_proxy_dlsync\");\n\nvar __emscripten_find_dylib = makeInvalidEarlyAccess(\"__emscripten_find_dylib\");\n\nvar __emscripten_thread_init = makeInvalidEarlyAccess(\"__emscripten_thread_init\");\n\nvar ___set_thread_state = makeInvalidEarlyAccess(\"___set_thread_state\");\n\nvar __emscripten_thread_crashed = makeInvalidEarlyAccess(\"__emscripten_thread_crashed\");\n\nvar _exp2 = makeInvalidEarlyAccess(\"_exp2\");\n\nvar _exp2f = makeInvalidEarlyAccess(\"_exp2f\");\n\nvar _emscripten_proxy_execute_queue = makeInvalidEarlyAccess(\"_emscripten_proxy_execute_queue\");\n\nvar _strcspn = makeInvalidEarlyAccess(\"_strcspn\");\n\nvar _lseek = makeInvalidEarlyAccess(\"_lseek\");\n\nvar _fcntl = makeInvalidEarlyAccess(\"_fcntl\");\n\nvar ___small_fprintf = makeInvalidEarlyAccess(\"___small_fprintf\");\n\nvar _fputc = makeInvalidEarlyAccess(\"_fputc\");\n\nvar _frexp = makeInvalidEarlyAccess(\"_frexp\");\n\nvar _emscripten_stack_get_end = makeInvalidEarlyAccess(\"_emscripten_stack_get_end\");\n\nvar _emscripten_stack_get_base = makeInvalidEarlyAccess(\"_emscripten_stack_get_base\");\n\nvar _gmtime = makeInvalidEarlyAccess(\"_gmtime\");\n\nvar _htonl = makeInvalidEarlyAccess(\"_htonl\");\n\nvar _htons = makeInvalidEarlyAccess(\"_htons\");\n\nvar _hypot = makeInvalidEarlyAccess(\"_hypot\");\n\nvar _llrint = makeInvalidEarlyAccess(\"_llrint\");\n\nvar _llrintf = makeInvalidEarlyAccess(\"_llrintf\");\n\nvar _log2f = makeInvalidEarlyAccess(\"_log2f\");\n\nvar _ntohl = makeInvalidEarlyAccess(\"_ntohl\");\n\nvar _ntohs = makeInvalidEarlyAccess(\"_ntohs\");\n\nvar _poll = makeInvalidEarlyAccess(\"_poll\");\n\nvar ___small_printf = makeInvalidEarlyAccess(\"___small_printf\");\n\nvar _emscripten_proxy_finish = makeInvalidEarlyAccess(\"_emscripten_proxy_finish\");\n\nvar __emscripten_run_js_on_main_thread_done = makeInvalidEarlyAccess(\"__emscripten_run_js_on_main_thread_done\");\n\nvar __emscripten_run_js_on_main_thread = makeInvalidEarlyAccess(\"__emscripten_run_js_on_main_thread\");\n\nvar _pthread_attr_destroy = makeInvalidEarlyAccess(\"_pthread_attr_destroy\");\n\nvar _pthread_attr_init = makeInvalidEarlyAccess(\"_pthread_attr_init\");\n\nvar _pthread_attr_setschedpolicy = makeInvalidEarlyAccess(\"_pthread_attr_setschedpolicy\");\n\nvar _pthread_attr_setscope = makeInvalidEarlyAccess(\"_pthread_attr_setscope\");\n\nvar __emscripten_thread_free_data = makeInvalidEarlyAccess(\"__emscripten_thread_free_data\");\n\nvar __emscripten_thread_exit = makeInvalidEarlyAccess(\"__emscripten_thread_exit\");\n\nvar _puts = makeInvalidEarlyAccess(\"_puts\");\n\nvar _qsort = makeInvalidEarlyAccess(\"_qsort\");\n\nvar _rename = makeInvalidEarlyAccess(\"_rename\");\n\nvar _sem_destroy = makeInvalidEarlyAccess(\"_sem_destroy\");\n\nvar _sem_init = makeInvalidEarlyAccess(\"_sem_init\");\n\nvar _sem_post = makeInvalidEarlyAccess(\"_sem_post\");\n\nvar _sem_timedwait = makeInvalidEarlyAccess(\"_sem_timedwait\");\n\nvar _sem_trywait = makeInvalidEarlyAccess(\"_sem_trywait\");\n\nvar _sem_wait = makeInvalidEarlyAccess(\"_sem_wait\");\n\nvar _sinh = makeInvalidEarlyAccess(\"_sinh\");\n\nvar ___addtf3 = makeInvalidEarlyAccess(\"___addtf3\");\n\nvar ___extenddftf2 = makeInvalidEarlyAccess(\"___extenddftf2\");\n\nvar ___floatunsitf = makeInvalidEarlyAccess(\"___floatunsitf\");\n\nvar ___trunctfdf2 = makeInvalidEarlyAccess(\"___trunctfdf2\");\n\nvar _tan = makeInvalidEarlyAccess(\"_tan\");\n\nvar _tanh = makeInvalidEarlyAccess(\"_tanh\");\n\nvar __emscripten_check_mailbox = makeInvalidEarlyAccess(\"__emscripten_check_mailbox\");\n\nvar _usleep = makeInvalidEarlyAccess(\"_usleep\");\n\nvar _emscripten_get_sbrk_ptr = makeInvalidEarlyAccess(\"_emscripten_get_sbrk_ptr\");\n\nvar _setThrew = makeInvalidEarlyAccess(\"_setThrew\");\n\nvar _emscripten_stack_init = makeInvalidEarlyAccess(\"_emscripten_stack_init\");\n\nvar _emscripten_stack_set_limits = makeInvalidEarlyAccess(\"_emscripten_stack_set_limits\");\n\nvar _emscripten_stack_get_free = makeInvalidEarlyAccess(\"_emscripten_stack_get_free\");\n\nvar __emscripten_stack_restore = makeInvalidEarlyAccess(\"__emscripten_stack_restore\");\n\nvar __emscripten_stack_alloc = makeInvalidEarlyAccess(\"__emscripten_stack_alloc\");\n\nvar _emscripten_stack_get_current = makeInvalidEarlyAccess(\"_emscripten_stack_get_current\");\n\nvar _accept = makeInvalidEarlyAccess(\"_accept\");\n\nvar _bind = makeInvalidEarlyAccess(\"_bind\");\n\nvar _connect = makeInvalidEarlyAccess(\"_connect\");\n\nvar _freeaddrinfo = makeInvalidEarlyAccess(\"_freeaddrinfo\");\n\nvar _getsockopt = makeInvalidEarlyAccess(\"_getsockopt\");\n\nvar _listen = makeInvalidEarlyAccess(\"_listen\");\n\nvar _setsockopt = makeInvalidEarlyAccess(\"_setsockopt\");\n\nvar _socket = makeInvalidEarlyAccess(\"_socket\");\n\nvar __wasmfs_read_file = makeInvalidEarlyAccess(\"__wasmfs_read_file\");\n\nvar __wasmfs_write_file = makeInvalidEarlyAccess(\"__wasmfs_write_file\");\n\nvar __wasmfs_mkdir = makeInvalidEarlyAccess(\"__wasmfs_mkdir\");\n\nvar __wasmfs_rmdir = makeInvalidEarlyAccess(\"__wasmfs_rmdir\");\n\nvar __wasmfs_open = makeInvalidEarlyAccess(\"__wasmfs_open\");\n\nvar __wasmfs_mknod = makeInvalidEarlyAccess(\"__wasmfs_mknod\");\n\nvar __wasmfs_unlink = makeInvalidEarlyAccess(\"__wasmfs_unlink\");\n\nvar __wasmfs_chdir = makeInvalidEarlyAccess(\"__wasmfs_chdir\");\n\nvar __wasmfs_symlink = makeInvalidEarlyAccess(\"__wasmfs_symlink\");\n\nvar __wasmfs_readlink = makeInvalidEarlyAccess(\"__wasmfs_readlink\");\n\nvar __wasmfs_write = makeInvalidEarlyAccess(\"__wasmfs_write\");\n\nvar __wasmfs_pwrite = makeInvalidEarlyAccess(\"__wasmfs_pwrite\");\n\nvar __wasmfs_chmod = makeInvalidEarlyAccess(\"__wasmfs_chmod\");\n\nvar __wasmfs_fchmod = makeInvalidEarlyAccess(\"__wasmfs_fchmod\");\n\nvar __wasmfs_lchmod = makeInvalidEarlyAccess(\"__wasmfs_lchmod\");\n\nvar __wasmfs_llseek = makeInvalidEarlyAccess(\"__wasmfs_llseek\");\n\nvar __wasmfs_rename = makeInvalidEarlyAccess(\"__wasmfs_rename\");\n\nvar __wasmfs_read = makeInvalidEarlyAccess(\"__wasmfs_read\");\n\nvar __wasmfs_pread = makeInvalidEarlyAccess(\"__wasmfs_pread\");\n\nvar __wasmfs_truncate = makeInvalidEarlyAccess(\"__wasmfs_truncate\");\n\nvar __wasmfs_ftruncate = makeInvalidEarlyAccess(\"__wasmfs_ftruncate\");\n\nvar __wasmfs_close = makeInvalidEarlyAccess(\"__wasmfs_close\");\n\nvar __wasmfs_mmap = makeInvalidEarlyAccess(\"__wasmfs_mmap\");\n\nvar __wasmfs_msync = makeInvalidEarlyAccess(\"__wasmfs_msync\");\n\nvar __wasmfs_munmap = makeInvalidEarlyAccess(\"__wasmfs_munmap\");\n\nvar __wasmfs_utime = makeInvalidEarlyAccess(\"__wasmfs_utime\");\n\nvar __wasmfs_stat = makeInvalidEarlyAccess(\"__wasmfs_stat\");\n\nvar __wasmfs_lstat = makeInvalidEarlyAccess(\"__wasmfs_lstat\");\n\nvar __wasmfs_mount = makeInvalidEarlyAccess(\"__wasmfs_mount\");\n\nvar __wasmfs_identify = makeInvalidEarlyAccess(\"__wasmfs_identify\");\n\nvar __wasmfs_readdir_start = makeInvalidEarlyAccess(\"__wasmfs_readdir_start\");\n\nvar __wasmfs_readdir_get = makeInvalidEarlyAccess(\"__wasmfs_readdir_get\");\n\nvar __wasmfs_readdir_finish = makeInvalidEarlyAccess(\"__wasmfs_readdir_finish\");\n\nvar __wasmfs_get_cwd = makeInvalidEarlyAccess(\"__wasmfs_get_cwd\");\n\nvar _wasmfs_create_jsimpl_backend = makeInvalidEarlyAccess(\"_wasmfs_create_jsimpl_backend\");\n\nvar _wasmfs_create_memory_backend = makeInvalidEarlyAccess(\"_wasmfs_create_memory_backend\");\n\nvar __wasmfs_opfs_record_entry = makeInvalidEarlyAccess(\"__wasmfs_opfs_record_entry\");\n\nvar _wasmfs_create_file = makeInvalidEarlyAccess(\"_wasmfs_create_file\");\n\nvar _wasmfs_unmount = makeInvalidEarlyAccess(\"_wasmfs_unmount\");\n\nvar _wasmfs_flush = makeInvalidEarlyAccess(\"_wasmfs_flush\");\n\nvar ___stack_pointer = makeInvalidEarlyAccess(\"___stack_pointer\");\n\nvar ___table_base = makeInvalidEarlyAccess(\"___table_base\");\n\nvar ___memory_base = makeInvalidEarlyAccess(\"___memory_base\");\n\nvar __indirect_function_table = makeInvalidEarlyAccess(\"__indirect_function_table\");\n\nvar __ZTVN10__cxxabiv120__si_class_type_infoE = makeInvalidEarlyAccess(\"__ZTVN10__cxxabiv120__si_class_type_infoE\");\n\nvar __ZTVN10__cxxabiv117__class_type_infoE = makeInvalidEarlyAccess(\"__ZTVN10__cxxabiv117__class_type_infoE\");\n\nvar __ZTVN10__cxxabiv121__vmi_class_type_infoE = makeInvalidEarlyAccess(\"__ZTVN10__cxxabiv121__vmi_class_type_infoE\");\n\nvar _stderr = makeInvalidEarlyAccess(\"_stderr\");\n\nvar ___heap_base = makeInvalidEarlyAccess(\"___heap_base\");\n\nvar wasmTable = makeInvalidEarlyAccess(\"wasmTable\");\n\nfunction assignWasmExports(wasmExports) {\n  assert(typeof wasmExports[\"__main_argc_argv\"] != \"undefined\", \"missing Wasm export: __main_argc_argv\");\n  assert(typeof wasmExports[\"free\"] != \"undefined\", \"missing Wasm export: free\");\n  assert(typeof wasmExports[\"malloc\"] != \"undefined\", \"missing Wasm export: malloc\");\n  assert(typeof wasmExports[\"__multi3\"] != \"undefined\", \"missing Wasm export: __multi3\");\n  assert(typeof wasmExports[\"_ZdlPvm\"] != \"undefined\", \"missing Wasm export: _ZdlPvm\");\n  assert(typeof wasmExports[\"strlen\"] != \"undefined\", \"missing Wasm export: strlen\");\n  assert(typeof wasmExports[\"memcmp\"] != \"undefined\", \"missing Wasm export: memcmp\");\n  assert(typeof wasmExports[\"_Znwm\"] != \"undefined\", \"missing Wasm export: _Znwm\");\n  assert(typeof wasmExports[\"pthread_self\"] != \"undefined\", \"missing Wasm export: pthread_self\");\n  assert(typeof wasmExports[\"__cxa_guard_acquire\"] != \"undefined\", \"missing Wasm export: __cxa_guard_acquire\");\n  assert(typeof wasmExports[\"__cxa_guard_release\"] != \"undefined\", \"missing Wasm export: __cxa_guard_release\");\n  assert(typeof wasmExports[\"__cxa_pure_virtual\"] != \"undefined\", \"missing Wasm export: __cxa_pure_virtual\");\n  assert(typeof wasmExports[\"isCurrentSequenceLoaded\"] != \"undefined\", \"missing Wasm export: isCurrentSequenceLoaded\");\n  assert(typeof wasmExports[\"isCurrentSequenceShowOnlyDynamics\"] != \"undefined\", \"missing Wasm export: isCurrentSequenceShowOnlyDynamics\");\n  assert(typeof wasmExports[\"setCurrentSequenceShowOnlyDynamics\"] != \"undefined\", \"missing Wasm export: setCurrentSequenceShowOnlyDynamics\");\n  assert(typeof wasmExports[\"saveCurrentSequenceObjectiveGrade\"] != \"undefined\", \"missing Wasm export: saveCurrentSequenceObjectiveGrade\");\n  assert(typeof wasmExports[\"getCurrentSequenceObjectiveGrade\"] != \"undefined\", \"missing Wasm export: getCurrentSequenceObjectiveGrade\");\n  assert(typeof wasmExports[\"isCurrentSequenceInEvaluationMode\"] != \"undefined\", \"missing Wasm export: isCurrentSequenceInEvaluationMode\");\n  assert(typeof wasmExports[\"saveCurrentSequenceObjectiveVisualizations\"] != \"undefined\", \"missing Wasm export: saveCurrentSequenceObjectiveVisualizations\");\n  assert(typeof wasmExports[\"getCurrentSequenceObjectiveVisualizations\"] != \"undefined\", \"missing Wasm export: getCurrentSequenceObjectiveVisualizations\");\n  assert(typeof wasmExports[\"getCurrentSequenceNodeVideoID\"] != \"undefined\", \"missing Wasm export: getCurrentSequenceNodeVideoID\");\n  assert(typeof wasmExports[\"setSequenceVideoPath\"] != \"undefined\", \"missing Wasm export: setSequenceVideoPath\");\n  assert(typeof wasmExports[\"setSequenceVideoPlaying\"] != \"undefined\", \"missing Wasm export: setSequenceVideoPlaying\");\n  assert(typeof wasmExports[\"getCurrentSequenceVideoDuration\"] != \"undefined\", \"missing Wasm export: getCurrentSequenceVideoDuration\");\n  assert(typeof wasmExports[\"setSequenceVideoTimer\"] != \"undefined\", \"missing Wasm export: setSequenceVideoTimer\");\n  assert(typeof wasmExports[\"setSequenceVideoHidden\"] != \"undefined\", \"missing Wasm export: setSequenceVideoHidden\");\n  assert(typeof wasmExports[\"setSequenceVideoAvatarHidden\"] != \"undefined\", \"missing Wasm export: setSequenceVideoAvatarHidden\");\n  assert(typeof wasmExports[\"setSequenceVideoHandsHidden\"] != \"undefined\", \"missing Wasm export: setSequenceVideoHandsHidden\");\n  assert(typeof wasmExports[\"clipSequenceVideo\"] != \"undefined\", \"missing Wasm export: clipSequenceVideo\");\n  assert(typeof wasmExports[\"setSequenceVideoFirstPerson\"] != \"undefined\", \"missing Wasm export: setSequenceVideoFirstPerson\");\n  assert(typeof wasmExports[\"getCurrentSequenceStepsCount\"] != \"undefined\", \"missing Wasm export: getCurrentSequenceStepsCount\");\n  assert(typeof wasmExports[\"getCurrentStepIndex\"] != \"undefined\", \"missing Wasm export: getCurrentStepIndex\");\n  assert(typeof wasmExports[\"getCurrentStepID\"] != \"undefined\", \"missing Wasm export: getCurrentStepID\");\n  assert(typeof wasmExports[\"getStepIDAtIndex\"] != \"undefined\", \"missing Wasm export: getStepIDAtIndex\");\n  assert(typeof wasmExports[\"addStep\"] != \"undefined\", \"missing Wasm export: addStep\");\n  assert(typeof wasmExports[\"duplicateStep\"] != \"undefined\", \"missing Wasm export: duplicateStep\");\n  assert(typeof wasmExports[\"selectStep\"] != \"undefined\", \"missing Wasm export: selectStep\");\n  assert(typeof wasmExports[\"goToStepStart\"] != \"undefined\", \"missing Wasm export: goToStepStart\");\n  assert(typeof wasmExports[\"goToStepEnd\"] != \"undefined\", \"missing Wasm export: goToStepEnd\");\n  assert(typeof wasmExports[\"getStepType\"] != \"undefined\", \"missing Wasm export: getStepType\");\n  assert(typeof wasmExports[\"getStepDuration\"] != \"undefined\", \"missing Wasm export: getStepDuration\");\n  assert(typeof wasmExports[\"setStepDuration\"] != \"undefined\", \"missing Wasm export: setStepDuration\");\n  assert(typeof wasmExports[\"getAnimatedStepImageFilePath\"] != \"undefined\", \"missing Wasm export: getAnimatedStepImageFilePath\");\n  assert(typeof wasmExports[\"getAnimatedStepVideo\"] != \"undefined\", \"missing Wasm export: getAnimatedStepVideo\");\n  assert(typeof wasmExports[\"setAnimatedStepImageFilePath\"] != \"undefined\", \"missing Wasm export: setAnimatedStepImageFilePath\");\n  assert(typeof wasmExports[\"setAnimatedStepVideoID\"] != \"undefined\", \"missing Wasm export: setAnimatedStepVideoID\");\n  assert(typeof wasmExports[\"isStepAnimationBackAndForth\"] != \"undefined\", \"missing Wasm export: isStepAnimationBackAndForth\");\n  assert(typeof wasmExports[\"setStepAnimationBackAndForth\"] != \"undefined\", \"missing Wasm export: setStepAnimationBackAndForth\");\n  assert(typeof wasmExports[\"setStepQuestionCorrectAnswer\"] != \"undefined\", \"missing Wasm export: setStepQuestionCorrectAnswer\");\n  assert(typeof wasmExports[\"getStepProgress\"] != \"undefined\", \"missing Wasm export: getStepProgress\");\n  assert(typeof wasmExports[\"isAtStart\"] != \"undefined\", \"missing Wasm export: isAtStart\");\n  assert(typeof wasmExports[\"isStepSaved\"] != \"undefined\", \"missing Wasm export: isStepSaved\");\n  assert(typeof wasmExports[\"isCurrentStepActive\"] != \"undefined\", \"missing Wasm export: isCurrentStepActive\");\n  assert(typeof wasmExports[\"activateCurrentStep\"] != \"undefined\", \"missing Wasm export: activateCurrentStep\");\n  assert(typeof wasmExports[\"disableCurrentStep\"] != \"undefined\", \"missing Wasm export: disableCurrentStep\");\n  assert(typeof wasmExports[\"deleteStep\"] != \"undefined\", \"missing Wasm export: deleteStep\");\n  assert(typeof wasmExports[\"reverseSteps\"] != \"undefined\", \"missing Wasm export: reverseSteps\");\n  assert(typeof wasmExports[\"reverseStepAnimated\"] != \"undefined\", \"missing Wasm export: reverseStepAnimated\");\n  assert(typeof wasmExports[\"removeTemporaryAsset\"] != \"undefined\", \"missing Wasm export: removeTemporaryAsset\");\n  assert(typeof wasmExports[\"getTemporaryAssetID\"] != \"undefined\", \"missing Wasm export: getTemporaryAssetID\");\n  assert(typeof wasmExports[\"canProceedToNextStep\"] != \"undefined\", \"missing Wasm export: canProceedToNextStep\");\n  assert(typeof wasmExports[\"canProceedToPreviousStep\"] != \"undefined\", \"missing Wasm export: canProceedToPreviousStep\");\n  assert(typeof wasmExports[\"nextStep\"] != \"undefined\", \"missing Wasm export: nextStep\");\n  assert(typeof wasmExports[\"previousStep\"] != \"undefined\", \"missing Wasm export: previousStep\");\n  assert(typeof wasmExports[\"isAssetForCurrentStep\"] != \"undefined\", \"missing Wasm export: isAssetForCurrentStep\");\n  assert(typeof wasmExports[\"commitCommand\"] != \"undefined\", \"missing Wasm export: commitCommand\");\n  assert(typeof wasmExports[\"undoCommand\"] != \"undefined\", \"missing Wasm export: undoCommand\");\n  assert(typeof wasmExports[\"redoCommand\"] != \"undefined\", \"missing Wasm export: redoCommand\");\n  assert(typeof wasmExports[\"getUndoStackSize\"] != \"undefined\", \"missing Wasm export: getUndoStackSize\");\n  assert(typeof wasmExports[\"getRedoStackSize\"] != \"undefined\", \"missing Wasm export: getRedoStackSize\");\n  assert(typeof wasmExports[\"moveSelectedNodes\"] != \"undefined\", \"missing Wasm export: moveSelectedNodes\");\n  assert(typeof wasmExports[\"scaleSelectedNodes\"] != \"undefined\", \"missing Wasm export: scaleSelectedNodes\");\n  assert(typeof wasmExports[\"setRotationOfSelectedNodes\"] != \"undefined\", \"missing Wasm export: setRotationOfSelectedNodes\");\n  assert(typeof wasmExports[\"sinf\"] != \"undefined\", \"missing Wasm export: sinf\");\n  assert(typeof wasmExports[\"cosf\"] != \"undefined\", \"missing Wasm export: cosf\");\n  assert(typeof wasmExports[\"saveScaleToAssetDocument\"] != \"undefined\", \"missing Wasm export: saveScaleToAssetDocument\");\n  assert(typeof wasmExports[\"setCameraView\"] != \"undefined\", \"missing Wasm export: setCameraView\");\n  assert(typeof wasmExports[\"getCameraState\"] != \"undefined\", \"missing Wasm export: getCameraState\");\n  assert(typeof wasmExports[\"setCameraState\"] != \"undefined\", \"missing Wasm export: setCameraState\");\n  assert(typeof wasmExports[\"setCameraPosXYZ\"] != \"undefined\", \"missing Wasm export: setCameraPosXYZ\");\n  assert(typeof wasmExports[\"setCameraForwardXYZ\"] != \"undefined\", \"missing Wasm export: setCameraForwardXYZ\");\n  assert(typeof wasmExports[\"setModelPosition\"] != \"undefined\", \"missing Wasm export: setModelPosition\");\n  assert(typeof wasmExports[\"getModelBottom\"] != \"undefined\", \"missing Wasm export: getModelBottom\");\n  assert(typeof wasmExports[\"getModelDimensions\"] != \"undefined\", \"missing Wasm export: getModelDimensions\");\n  assert(typeof wasmExports[\"getNodePosition\"] != \"undefined\", \"missing Wasm export: getNodePosition\");\n  assert(typeof wasmExports[\"getNodeScale\"] != \"undefined\", \"missing Wasm export: getNodeScale\");\n  assert(typeof wasmExports[\"getNodeRotation\"] != \"undefined\", \"missing Wasm export: getNodeRotation\");\n  assert(typeof wasmExports[\"getStudioHierarchy\"] != \"undefined\", \"missing Wasm export: getStudioHierarchy\");\n  assert(typeof wasmExports[\"clickFirstNodeModel\"] != \"undefined\", \"missing Wasm export: clickFirstNodeModel\");\n  assert(typeof wasmExports[\"isNodeActive\"] != \"undefined\", \"missing Wasm export: isNodeActive\");\n  assert(typeof wasmExports[\"isNodeAnnotation\"] != \"undefined\", \"missing Wasm export: isNodeAnnotation\");\n  assert(typeof wasmExports[\"isNodeModel\"] != \"undefined\", \"missing Wasm export: isNodeModel\");\n  assert(typeof wasmExports[\"isNodeQR\"] != \"undefined\", \"missing Wasm export: isNodeQR\");\n  assert(typeof wasmExports[\"getSelectedNodesCount\"] != \"undefined\", \"missing Wasm export: getSelectedNodesCount\");\n  assert(typeof wasmExports[\"getSelectedNodes\"] != \"undefined\", \"missing Wasm export: getSelectedNodes\");\n  assert(typeof wasmExports[\"getSelectedAssetID\"] != \"undefined\", \"missing Wasm export: getSelectedAssetID\");\n  assert(typeof wasmExports[\"getSelectedAnchorID\"] != \"undefined\", \"missing Wasm export: getSelectedAnchorID\");\n  assert(typeof wasmExports[\"getSelectedSessionNodeID\"] != \"undefined\", \"missing Wasm export: getSelectedSessionNodeID\");\n  assert(typeof wasmExports[\"setHiddenRecursivelyNodeID\"] != \"undefined\", \"missing Wasm export: setHiddenRecursivelyNodeID\");\n  assert(typeof wasmExports[\"setSelectedNodesHidden\"] != \"undefined\", \"missing Wasm export: setSelectedNodesHidden\");\n  assert(typeof wasmExports[\"getWorldAssetType\"] != \"undefined\", \"missing Wasm export: getWorldAssetType\");\n  assert(typeof wasmExports[\"getNodeName\"] != \"undefined\", \"missing Wasm export: getNodeName\");\n  assert(typeof wasmExports[\"applyScaleFactor\"] != \"undefined\", \"missing Wasm export: applyScaleFactor\");\n  assert(typeof wasmExports[\"getInitialScale\"] != \"undefined\", \"missing Wasm export: getInitialScale\");\n  assert(typeof wasmExports[\"decompressFolder\"] != \"undefined\", \"missing Wasm export: decompressFolder\");\n  assert(typeof wasmExports[\"getOwnerID\"] != \"undefined\", \"missing Wasm export: getOwnerID\");\n  assert(typeof wasmExports[\"getWorldOwnerType\"] != \"undefined\", \"missing Wasm export: getWorldOwnerType\");\n  assert(typeof wasmExports[\"getUsername\"] != \"undefined\", \"missing Wasm export: getUsername\");\n  assert(typeof wasmExports[\"getPeerFullName\"] != \"undefined\", \"missing Wasm export: getPeerFullName\");\n  assert(typeof wasmExports[\"getPeerGroups\"] != \"undefined\", \"missing Wasm export: getPeerGroups\");\n  assert(typeof wasmExports[\"getPeerGroupRole\"] != \"undefined\", \"missing Wasm export: getPeerGroupRole\");\n  assert(typeof wasmExports[\"getGroupWorldIDs\"] != \"undefined\", \"missing Wasm export: getGroupWorldIDs\");\n  assert(typeof wasmExports[\"getAuthorizedEmails\"] != \"undefined\", \"missing Wasm export: getAuthorizedEmails\");\n  assert(typeof wasmExports[\"getAuthorizedEmailRole\"] != \"undefined\", \"missing Wasm export: getAuthorizedEmailRole\");\n  assert(typeof wasmExports[\"getWorldPeers\"] != \"undefined\", \"missing Wasm export: getWorldPeers\");\n  assert(typeof wasmExports[\"getWorldPeerRole\"] != \"undefined\", \"missing Wasm export: getWorldPeerRole\");\n  assert(typeof wasmExports[\"getPeerFromUsername\"] != \"undefined\", \"missing Wasm export: getPeerFromUsername\");\n  assert(typeof wasmExports[\"setNewWorldOwner\"] != \"undefined\", \"missing Wasm export: setNewWorldOwner\");\n  assert(typeof wasmExports[\"isSavingFinished\"] != \"undefined\", \"missing Wasm export: isSavingFinished\");\n  assert(typeof wasmExports[\"getWorldGroups\"] != \"undefined\", \"missing Wasm export: getWorldGroups\");\n  assert(typeof wasmExports[\"getWorldGroupRole\"] != \"undefined\", \"missing Wasm export: getWorldGroupRole\");\n  assert(typeof wasmExports[\"removeWorldGroup\"] != \"undefined\", \"missing Wasm export: removeWorldGroup\");\n  assert(typeof wasmExports[\"isUserOwnerWorld\"] != \"undefined\", \"missing Wasm export: isUserOwnerWorld\");\n  assert(typeof wasmExports[\"canCurrentPeerEditWorld\"] != \"undefined\", \"missing Wasm export: canCurrentPeerEditWorld\");\n  assert(typeof wasmExports[\"canCurrentPeerEditSequence\"] != \"undefined\", \"missing Wasm export: canCurrentPeerEditSequence\");\n  assert(typeof wasmExports[\"canCurrentPeerEditAsset\"] != \"undefined\", \"missing Wasm export: canCurrentPeerEditAsset\");\n  assert(typeof wasmExports[\"canCurrentPeerDeleteWorld\"] != \"undefined\", \"missing Wasm export: canCurrentPeerDeleteWorld\");\n  assert(typeof wasmExports[\"addWorldToCurrentPeer\"] != \"undefined\", \"missing Wasm export: addWorldToCurrentPeer\");\n  assert(typeof wasmExports[\"cloneWorld\"] != \"undefined\", \"missing Wasm export: cloneWorld\");\n  assert(typeof wasmExports[\"loadWorld\"] != \"undefined\", \"missing Wasm export: loadWorld\");\n  assert(typeof wasmExports[\"loadWorldAsset\"] != \"undefined\", \"missing Wasm export: loadWorldAsset\");\n  assert(typeof wasmExports[\"getLibraryDocumentsID\"] != \"undefined\", \"missing Wasm export: getLibraryDocumentsID\");\n  assert(typeof wasmExports[\"loadDocumentMetadata\"] != \"undefined\", \"missing Wasm export: loadDocumentMetadata\");\n  assert(typeof wasmExports[\"getDocumentSize\"] != \"undefined\", \"missing Wasm export: getDocumentSize\");\n  assert(typeof wasmExports[\"clearWorld\"] != \"undefined\", \"missing Wasm export: clearWorld\");\n  assert(typeof wasmExports[\"deleteWorld\"] != \"undefined\", \"missing Wasm export: deleteWorld\");\n  assert(typeof wasmExports[\"leaveWorld\"] != \"undefined\", \"missing Wasm export: leaveWorld\");\n  assert(typeof wasmExports[\"getWorldTitle\"] != \"undefined\", \"missing Wasm export: getWorldTitle\");\n  assert(typeof wasmExports[\"isWorldAuthorized\"] != \"undefined\", \"missing Wasm export: isWorldAuthorized\");\n  assert(typeof wasmExports[\"isWorldMetadataValid\"] != \"undefined\", \"missing Wasm export: isWorldMetadataValid\");\n  assert(typeof wasmExports[\"updateWorldTitle\"] != \"undefined\", \"missing Wasm export: updateWorldTitle\");\n  assert(typeof wasmExports[\"getWorldThumbnail\"] != \"undefined\", \"missing Wasm export: getWorldThumbnail\");\n  assert(typeof wasmExports[\"getAssetDocumentCount\"] != \"undefined\", \"missing Wasm export: getAssetDocumentCount\");\n  assert(typeof wasmExports[\"getWorldAssetDocumentID\"] != \"undefined\", \"missing Wasm export: getWorldAssetDocumentID\");\n  assert(typeof wasmExports[\"getWorldEntitiesIDs\"] != \"undefined\", \"missing Wasm export: getWorldEntitiesIDs\");\n  assert(typeof wasmExports[\"getEntityName\"] != \"undefined\", \"missing Wasm export: getEntityName\");\n  assert(typeof wasmExports[\"isEntityArchived\"] != \"undefined\", \"missing Wasm export: isEntityArchived\");\n  assert(typeof wasmExports[\"removeAssetDocument\"] != \"undefined\", \"missing Wasm export: removeAssetDocument\");\n  assert(typeof wasmExports[\"getDocumentsCount\"] != \"undefined\", \"missing Wasm export: getDocumentsCount\");\n  assert(typeof wasmExports[\"createNodeModel\"] != \"undefined\", \"missing Wasm export: createNodeModel\");\n  assert(typeof wasmExports[\"deleteNodeModel\"] != \"undefined\", \"missing Wasm export: deleteNodeModel\");\n  assert(typeof wasmExports[\"addNodeModelInNodesContainer\"] != \"undefined\", \"missing Wasm export: addNodeModelInNodesContainer\");\n  assert(typeof wasmExports[\"removeNodeModelFromNodesContainer\"] != \"undefined\", \"missing Wasm export: removeNodeModelFromNodesContainer\");\n  assert(typeof wasmExports[\"getDocumentLocalPath\"] != \"undefined\", \"missing Wasm export: getDocumentLocalPath\");\n  assert(typeof wasmExports[\"loadMissingTextures\"] != \"undefined\", \"missing Wasm export: loadMissingTextures\");\n  assert(typeof wasmExports[\"getDocumentTitleCloud\"] != \"undefined\", \"missing Wasm export: getDocumentTitleCloud\");\n  assert(typeof wasmExports[\"updateDocumentTitleCloud\"] != \"undefined\", \"missing Wasm export: updateDocumentTitleCloud\");\n  assert(typeof wasmExports[\"addTemporaryAssetDocumentToCurrentStep\"] != \"undefined\", \"missing Wasm export: addTemporaryAssetDocumentToCurrentStep\");\n  assert(typeof wasmExports[\"addTemporaryAssetToCurrentStep\"] != \"undefined\", \"missing Wasm export: addTemporaryAssetToCurrentStep\");\n  assert(typeof wasmExports[\"loadDocumentThumbnail\"] != \"undefined\", \"missing Wasm export: loadDocumentThumbnail\");\n  assert(typeof wasmExports[\"isDocumentThumbnailLoaded\"] != \"undefined\", \"missing Wasm export: isDocumentThumbnailLoaded\");\n  assert(typeof wasmExports[\"getDocumentThumbnailUrlS3\"] != \"undefined\", \"missing Wasm export: getDocumentThumbnailUrlS3\");\n  assert(typeof wasmExports[\"getDocumentThumbnailLocalPath\"] != \"undefined\", \"missing Wasm export: getDocumentThumbnailLocalPath\");\n  assert(typeof wasmExports[\"updateDocumentThumbnail\"] != \"undefined\", \"missing Wasm export: updateDocumentThumbnail\");\n  assert(typeof wasmExports[\"deleteDocumentCloud\"] != \"undefined\", \"missing Wasm export: deleteDocumentCloud\");\n  assert(typeof wasmExports[\"updatePartName\"] != \"undefined\", \"missing Wasm export: updatePartName\");\n  assert(typeof wasmExports[\"setAssetForPlacement\"] != \"undefined\", \"missing Wasm export: setAssetForPlacement\");\n  assert(typeof wasmExports[\"setAnchorForPlacement\"] != \"undefined\", \"missing Wasm export: setAnchorForPlacement\");\n  assert(typeof wasmExports[\"isDocumentMetadataValid\"] != \"undefined\", \"missing Wasm export: isDocumentMetadataValid\");\n  assert(typeof wasmExports[\"isDocumentDataValid\"] != \"undefined\", \"missing Wasm export: isDocumentDataValid\");\n  assert(typeof wasmExports[\"duplicateSelectedAssets\"] != \"undefined\", \"missing Wasm export: duplicateSelectedAssets\");\n  assert(typeof wasmExports[\"getDocumentUrlS3\"] != \"undefined\", \"missing Wasm export: getDocumentUrlS3\");\n  assert(typeof wasmExports[\"createNewAnchor\"] != \"undefined\", \"missing Wasm export: createNewAnchor\");\n  assert(typeof wasmExports[\"deleteAnchor\"] != \"undefined\", \"missing Wasm export: deleteAnchor\");\n  assert(typeof wasmExports[\"getWorldAssetVideoID\"] != \"undefined\", \"missing Wasm export: getWorldAssetVideoID\");\n  assert(typeof wasmExports[\"setVideoFilePath\"] != \"undefined\", \"missing Wasm export: setVideoFilePath\");\n  assert(typeof wasmExports[\"deleteVideo\"] != \"undefined\", \"missing Wasm export: deleteVideo\");\n  assert(typeof wasmExports[\"convertModelFileToGLB\"] != \"undefined\", \"missing Wasm export: convertModelFileToGLB\");\n  assert(typeof wasmExports[\"getVideoFileDuration\"] != \"undefined\", \"missing Wasm export: getVideoFileDuration\");\n  assert(typeof wasmExports[\"getVideoResolution\"] != \"undefined\", \"missing Wasm export: getVideoResolution\");\n  assert(typeof wasmExports[\"isVideoPixelFormatSupported\"] != \"undefined\", \"missing Wasm export: isVideoPixelFormatSupported\");\n  assert(typeof wasmExports[\"getVideoTags\"] != \"undefined\", \"missing Wasm export: getVideoTags\");\n  assert(typeof wasmExports[\"addVideoTag\"] != \"undefined\", \"missing Wasm export: addVideoTag\");\n  assert(typeof wasmExports[\"removeVideoTag\"] != \"undefined\", \"missing Wasm export: removeVideoTag\");\n  assert(typeof wasmExports[\"attemptPlayAudio\"] != \"undefined\", \"missing Wasm export: attemptPlayAudio\");\n  assert(typeof wasmExports[\"isWorldAssetLoaded\"] != \"undefined\", \"missing Wasm export: isWorldAssetLoaded\");\n  assert(typeof wasmExports[\"getSequenceCount\"] != \"undefined\", \"missing Wasm export: getSequenceCount\");\n  assert(typeof wasmExports[\"queryPeerMetadata\"] != \"undefined\", \"missing Wasm export: queryPeerMetadata\");\n  assert(typeof wasmExports[\"setEditing\"] != \"undefined\", \"missing Wasm export: setEditing\");\n  assert(typeof wasmExports[\"atan2f\"] != \"undefined\", \"missing Wasm export: atan2f\");\n  assert(typeof wasmExports[\"dsclogTRACE\"] != \"undefined\", \"missing Wasm export: dsclogTRACE\");\n  assert(typeof wasmExports[\"dsclogDEBUG\"] != \"undefined\", \"missing Wasm export: dsclogDEBUG\");\n  assert(typeof wasmExports[\"dsclogINFO\"] != \"undefined\", \"missing Wasm export: dsclogINFO\");\n  assert(typeof wasmExports[\"dsclogWARN\"] != \"undefined\", \"missing Wasm export: dsclogWARN\");\n  assert(typeof wasmExports[\"dsclogERROR\"] != \"undefined\", \"missing Wasm export: dsclogERROR\");\n  assert(typeof wasmExports[\"dsclogCRITICAL\"] != \"undefined\", \"missing Wasm export: dsclogCRITICAL\");\n  assert(typeof wasmExports[\"__multf3\"] != \"undefined\", \"missing Wasm export: __multf3\");\n  assert(typeof wasmExports[\"pthread_create\"] != \"undefined\", \"missing Wasm export: pthread_create\");\n  assert(typeof wasmExports[\"fiprintf\"] != \"undefined\", \"missing Wasm export: fiprintf\");\n  assert(typeof wasmExports[\"abort\"] != \"undefined\", \"missing Wasm export: abort\");\n  assert(typeof wasmExports[\"fwrite\"] != \"undefined\", \"missing Wasm export: fwrite\");\n  assert(typeof wasmExports[\"gettimeofday\"] != \"undefined\", \"missing Wasm export: gettimeofday\");\n  assert(typeof wasmExports[\"clock_gettime\"] != \"undefined\", \"missing Wasm export: clock_gettime\");\n  assert(typeof wasmExports[\"getpid\"] != \"undefined\", \"missing Wasm export: getpid\");\n  assert(typeof wasmExports[\"pthread_once\"] != \"undefined\", \"missing Wasm export: pthread_once\");\n  assert(typeof wasmExports[\"sscanf\"] != \"undefined\", \"missing Wasm export: sscanf\");\n  assert(typeof wasmExports[\"strftime\"] != \"undefined\", \"missing Wasm export: strftime\");\n  assert(typeof wasmExports[\"strncmp\"] != \"undefined\", \"missing Wasm export: strncmp\");\n  assert(typeof wasmExports[\"strchr\"] != \"undefined\", \"missing Wasm export: strchr\");\n  assert(typeof wasmExports[\"strcmp\"] != \"undefined\", \"missing Wasm export: strcmp\");\n  assert(typeof wasmExports[\"read\"] != \"undefined\", \"missing Wasm export: read\");\n  assert(typeof wasmExports[\"__errno_location\"] != \"undefined\", \"missing Wasm export: __errno_location\");\n  assert(typeof wasmExports[\"close\"] != \"undefined\", \"missing Wasm export: close\");\n  assert(typeof wasmExports[\"open\"] != \"undefined\", \"missing Wasm export: open\");\n  assert(typeof wasmExports[\"strtod\"] != \"undefined\", \"missing Wasm export: strtod\");\n  assert(typeof wasmExports[\"calloc\"] != \"undefined\", \"missing Wasm export: calloc\");\n  assert(typeof wasmExports[\"realloc\"] != \"undefined\", \"missing Wasm export: realloc\");\n  assert(typeof wasmExports[\"vsnprintf\"] != \"undefined\", \"missing Wasm export: vsnprintf\");\n  assert(typeof wasmExports[\"strncpy\"] != \"undefined\", \"missing Wasm export: strncpy\");\n  assert(typeof wasmExports[\"strspn\"] != \"undefined\", \"missing Wasm export: strspn\");\n  assert(typeof wasmExports[\"strcpy\"] != \"undefined\", \"missing Wasm export: strcpy\");\n  assert(typeof wasmExports[\"strtoul\"] != \"undefined\", \"missing Wasm export: strtoul\");\n  assert(typeof wasmExports[\"fclose\"] != \"undefined\", \"missing Wasm export: fclose\");\n  assert(typeof wasmExports[\"fopen\"] != \"undefined\", \"missing Wasm export: fopen\");\n  assert(typeof wasmExports[\"mktime\"] != \"undefined\", \"missing Wasm export: mktime\");\n  assert(typeof wasmExports[\"localtime\"] != \"undefined\", \"missing Wasm export: localtime\");\n  assert(typeof wasmExports[\"fflush\"] != \"undefined\", \"missing Wasm export: fflush\");\n  assert(typeof wasmExports[\"cos\"] != \"undefined\", \"missing Wasm export: cos\");\n  assert(typeof wasmExports[\"sin\"] != \"undefined\", \"missing Wasm export: sin\");\n  assert(typeof wasmExports[\"acos\"] != \"undefined\", \"missing Wasm export: acos\");\n  assert(typeof wasmExports[\"exp\"] != \"undefined\", \"missing Wasm export: exp\");\n  assert(typeof wasmExports[\"fmod\"] != \"undefined\", \"missing Wasm export: fmod\");\n  assert(typeof wasmExports[\"strstr\"] != \"undefined\", \"missing Wasm export: strstr\");\n  assert(typeof wasmExports[\"snprintf\"] != \"undefined\", \"missing Wasm export: snprintf\");\n  assert(typeof wasmExports[\"atoi\"] != \"undefined\", \"missing Wasm export: atoi\");\n  assert(typeof wasmExports[\"strtoull\"] != \"undefined\", \"missing Wasm export: strtoull\");\n  assert(typeof wasmExports[\"strtol\"] != \"undefined\", \"missing Wasm export: strtol\");\n  assert(typeof wasmExports[\"round\"] != \"undefined\", \"missing Wasm export: round\");\n  assert(typeof wasmExports[\"roundf\"] != \"undefined\", \"missing Wasm export: roundf\");\n  assert(typeof wasmExports[\"memchr\"] != \"undefined\", \"missing Wasm export: memchr\");\n  assert(typeof wasmExports[\"lrint\"] != \"undefined\", \"missing Wasm export: lrint\");\n  assert(typeof wasmExports[\"lrintf\"] != \"undefined\", \"missing Wasm export: lrintf\");\n  assert(typeof wasmExports[\"pow\"] != \"undefined\", \"missing Wasm export: pow\");\n  assert(typeof wasmExports[\"expf\"] != \"undefined\", \"missing Wasm export: expf\");\n  assert(typeof wasmExports[\"logf\"] != \"undefined\", \"missing Wasm export: logf\");\n  assert(typeof wasmExports[\"log\"] != \"undefined\", \"missing Wasm export: log\");\n  assert(typeof wasmExports[\"log10\"] != \"undefined\", \"missing Wasm export: log10\");\n  assert(typeof wasmExports[\"sysconf\"] != \"undefined\", \"missing Wasm export: sysconf\");\n  assert(typeof wasmExports[\"pthread_mutex_lock\"] != \"undefined\", \"missing Wasm export: pthread_mutex_lock\");\n  assert(typeof wasmExports[\"pthread_cond_wait\"] != \"undefined\", \"missing Wasm export: pthread_cond_wait\");\n  assert(typeof wasmExports[\"pthread_mutex_unlock\"] != \"undefined\", \"missing Wasm export: pthread_mutex_unlock\");\n  assert(typeof wasmExports[\"pthread_cond_broadcast\"] != \"undefined\", \"missing Wasm export: pthread_cond_broadcast\");\n  assert(typeof wasmExports[\"pthread_mutex_init\"] != \"undefined\", \"missing Wasm export: pthread_mutex_init\");\n  assert(typeof wasmExports[\"pthread_cond_init\"] != \"undefined\", \"missing Wasm export: pthread_cond_init\");\n  assert(typeof wasmExports[\"pthread_cond_destroy\"] != \"undefined\", \"missing Wasm export: pthread_cond_destroy\");\n  assert(typeof wasmExports[\"pthread_mutex_destroy\"] != \"undefined\", \"missing Wasm export: pthread_mutex_destroy\");\n  assert(typeof wasmExports[\"pthread_cond_signal\"] != \"undefined\", \"missing Wasm export: pthread_cond_signal\");\n  assert(typeof wasmExports[\"pthread_join\"] != \"undefined\", \"missing Wasm export: pthread_join\");\n  assert(typeof wasmExports[\"strrchr\"] != \"undefined\", \"missing Wasm export: strrchr\");\n  assert(typeof wasmExports[\"fseek\"] != \"undefined\", \"missing Wasm export: fseek\");\n  assert(typeof wasmExports[\"fputs\"] != \"undefined\", \"missing Wasm export: fputs\");\n  assert(typeof wasmExports[\"getenv\"] != \"undefined\", \"missing Wasm export: getenv\");\n  assert(typeof wasmExports[\"mkstemp\"] != \"undefined\", \"missing Wasm export: mkstemp\");\n  assert(typeof wasmExports[\"atanf\"] != \"undefined\", \"missing Wasm export: atanf\");\n  assert(typeof wasmExports[\"mkdir\"] != \"undefined\", \"missing Wasm export: mkdir\");\n  assert(typeof wasmExports[\"powf\"] != \"undefined\", \"missing Wasm export: powf\");\n  assert(typeof wasmExports[\"__getTypeName\"] != \"undefined\", \"missing Wasm export: __getTypeName\");\n  assert(typeof wasmExports[\"_embind_initialize_bindings\"] != \"undefined\", \"missing Wasm export: _embind_initialize_bindings\");\n  assert(typeof wasmExports[\"_emscripten_run_callback_on_thread\"] != \"undefined\", \"missing Wasm export: _emscripten_run_callback_on_thread\");\n  assert(typeof wasmExports[\"atan2\"] != \"undefined\", \"missing Wasm export: atan2\");\n  assert(typeof wasmExports[\"_emscripten_tls_init\"] != \"undefined\", \"missing Wasm export: _emscripten_tls_init\");\n  assert(typeof wasmExports[\"strtoll\"] != \"undefined\", \"missing Wasm export: strtoll\");\n  assert(typeof wasmExports[\"iprintf\"] != \"undefined\", \"missing Wasm export: iprintf\");\n  assert(typeof wasmExports[\"fstat\"] != \"undefined\", \"missing Wasm export: fstat\");\n  assert(typeof wasmExports[\"rmdir\"] != \"undefined\", \"missing Wasm export: rmdir\");\n  assert(typeof wasmExports[\"unlink\"] != \"undefined\", \"missing Wasm export: unlink\");\n  assert(typeof wasmExports[\"write\"] != \"undefined\", \"missing Wasm export: write\");\n  assert(typeof wasmExports[\"emscripten_builtin_memalign\"] != \"undefined\", \"missing Wasm export: emscripten_builtin_memalign\");\n  assert(typeof wasmExports[\"fabs\"] != \"undefined\", \"missing Wasm export: fabs\");\n  assert(typeof wasmExports[\"scalbn\"] != \"undefined\", \"missing Wasm export: scalbn\");\n  assert(typeof wasmExports[\"fdopen\"] != \"undefined\", \"missing Wasm export: fdopen\");\n  assert(typeof wasmExports[\"access\"] != \"undefined\", \"missing Wasm export: access\");\n  assert(typeof wasmExports[\"asin\"] != \"undefined\", \"missing Wasm export: asin\");\n  assert(typeof wasmExports[\"atan\"] != \"undefined\", \"missing Wasm export: atan\");\n  assert(typeof wasmExports[\"bsearch\"] != \"undefined\", \"missing Wasm export: bsearch\");\n  assert(typeof wasmExports[\"cbrt\"] != \"undefined\", \"missing Wasm export: cbrt\");\n  assert(typeof wasmExports[\"cbrtf\"] != \"undefined\", \"missing Wasm export: cbrtf\");\n  assert(typeof wasmExports[\"clock\"] != \"undefined\", \"missing Wasm export: clock\");\n  assert(typeof wasmExports[\"cosh\"] != \"undefined\", \"missing Wasm export: cosh\");\n  assert(typeof wasmExports[\"__dl_seterr\"] != \"undefined\", \"missing Wasm export: __dl_seterr\");\n  assert(typeof wasmExports[\"_emscripten_dlsync_self_async\"] != \"undefined\", \"missing Wasm export: _emscripten_dlsync_self_async\");\n  assert(typeof wasmExports[\"_emscripten_dlsync_self\"] != \"undefined\", \"missing Wasm export: _emscripten_dlsync_self\");\n  assert(typeof wasmExports[\"_emscripten_proxy_dlsync_async\"] != \"undefined\", \"missing Wasm export: _emscripten_proxy_dlsync_async\");\n  assert(typeof wasmExports[\"_emscripten_proxy_dlsync\"] != \"undefined\", \"missing Wasm export: _emscripten_proxy_dlsync\");\n  assert(typeof wasmExports[\"_emscripten_find_dylib\"] != \"undefined\", \"missing Wasm export: _emscripten_find_dylib\");\n  assert(typeof wasmExports[\"_emscripten_thread_init\"] != \"undefined\", \"missing Wasm export: _emscripten_thread_init\");\n  assert(typeof wasmExports[\"__set_thread_state\"] != \"undefined\", \"missing Wasm export: __set_thread_state\");\n  assert(typeof wasmExports[\"_emscripten_thread_crashed\"] != \"undefined\", \"missing Wasm export: _emscripten_thread_crashed\");\n  assert(typeof wasmExports[\"exp2\"] != \"undefined\", \"missing Wasm export: exp2\");\n  assert(typeof wasmExports[\"exp2f\"] != \"undefined\", \"missing Wasm export: exp2f\");\n  assert(typeof wasmExports[\"emscripten_proxy_execute_queue\"] != \"undefined\", \"missing Wasm export: emscripten_proxy_execute_queue\");\n  assert(typeof wasmExports[\"strcspn\"] != \"undefined\", \"missing Wasm export: strcspn\");\n  assert(typeof wasmExports[\"lseek\"] != \"undefined\", \"missing Wasm export: lseek\");\n  assert(typeof wasmExports[\"fcntl\"] != \"undefined\", \"missing Wasm export: fcntl\");\n  assert(typeof wasmExports[\"__small_fprintf\"] != \"undefined\", \"missing Wasm export: __small_fprintf\");\n  assert(typeof wasmExports[\"fputc\"] != \"undefined\", \"missing Wasm export: fputc\");\n  assert(typeof wasmExports[\"frexp\"] != \"undefined\", \"missing Wasm export: frexp\");\n  assert(typeof wasmExports[\"emscripten_stack_get_end\"] != \"undefined\", \"missing Wasm export: emscripten_stack_get_end\");\n  assert(typeof wasmExports[\"emscripten_stack_get_base\"] != \"undefined\", \"missing Wasm export: emscripten_stack_get_base\");\n  assert(typeof wasmExports[\"gmtime\"] != \"undefined\", \"missing Wasm export: gmtime\");\n  assert(typeof wasmExports[\"htonl\"] != \"undefined\", \"missing Wasm export: htonl\");\n  assert(typeof wasmExports[\"htons\"] != \"undefined\", \"missing Wasm export: htons\");\n  assert(typeof wasmExports[\"hypot\"] != \"undefined\", \"missing Wasm export: hypot\");\n  assert(typeof wasmExports[\"llrint\"] != \"undefined\", \"missing Wasm export: llrint\");\n  assert(typeof wasmExports[\"llrintf\"] != \"undefined\", \"missing Wasm export: llrintf\");\n  assert(typeof wasmExports[\"log2f\"] != \"undefined\", \"missing Wasm export: log2f\");\n  assert(typeof wasmExports[\"ntohl\"] != \"undefined\", \"missing Wasm export: ntohl\");\n  assert(typeof wasmExports[\"ntohs\"] != \"undefined\", \"missing Wasm export: ntohs\");\n  assert(typeof wasmExports[\"poll\"] != \"undefined\", \"missing Wasm export: poll\");\n  assert(typeof wasmExports[\"__small_printf\"] != \"undefined\", \"missing Wasm export: __small_printf\");\n  assert(typeof wasmExports[\"emscripten_proxy_finish\"] != \"undefined\", \"missing Wasm export: emscripten_proxy_finish\");\n  assert(typeof wasmExports[\"_emscripten_run_js_on_main_thread_done\"] != \"undefined\", \"missing Wasm export: _emscripten_run_js_on_main_thread_done\");\n  assert(typeof wasmExports[\"_emscripten_run_js_on_main_thread\"] != \"undefined\", \"missing Wasm export: _emscripten_run_js_on_main_thread\");\n  assert(typeof wasmExports[\"pthread_attr_destroy\"] != \"undefined\", \"missing Wasm export: pthread_attr_destroy\");\n  assert(typeof wasmExports[\"pthread_attr_init\"] != \"undefined\", \"missing Wasm export: pthread_attr_init\");\n  assert(typeof wasmExports[\"pthread_attr_setschedpolicy\"] != \"undefined\", \"missing Wasm export: pthread_attr_setschedpolicy\");\n  assert(typeof wasmExports[\"pthread_attr_setscope\"] != \"undefined\", \"missing Wasm export: pthread_attr_setscope\");\n  assert(typeof wasmExports[\"_emscripten_thread_free_data\"] != \"undefined\", \"missing Wasm export: _emscripten_thread_free_data\");\n  assert(typeof wasmExports[\"_emscripten_thread_exit\"] != \"undefined\", \"missing Wasm export: _emscripten_thread_exit\");\n  assert(typeof wasmExports[\"puts\"] != \"undefined\", \"missing Wasm export: puts\");\n  assert(typeof wasmExports[\"qsort\"] != \"undefined\", \"missing Wasm export: qsort\");\n  assert(typeof wasmExports[\"rename\"] != \"undefined\", \"missing Wasm export: rename\");\n  assert(typeof wasmExports[\"sem_destroy\"] != \"undefined\", \"missing Wasm export: sem_destroy\");\n  assert(typeof wasmExports[\"sem_init\"] != \"undefined\", \"missing Wasm export: sem_init\");\n  assert(typeof wasmExports[\"sem_post\"] != \"undefined\", \"missing Wasm export: sem_post\");\n  assert(typeof wasmExports[\"sem_timedwait\"] != \"undefined\", \"missing Wasm export: sem_timedwait\");\n  assert(typeof wasmExports[\"sem_trywait\"] != \"undefined\", \"missing Wasm export: sem_trywait\");\n  assert(typeof wasmExports[\"sem_wait\"] != \"undefined\", \"missing Wasm export: sem_wait\");\n  assert(typeof wasmExports[\"sinh\"] != \"undefined\", \"missing Wasm export: sinh\");\n  assert(typeof wasmExports[\"__addtf3\"] != \"undefined\", \"missing Wasm export: __addtf3\");\n  assert(typeof wasmExports[\"__extenddftf2\"] != \"undefined\", \"missing Wasm export: __extenddftf2\");\n  assert(typeof wasmExports[\"__floatunsitf\"] != \"undefined\", \"missing Wasm export: __floatunsitf\");\n  assert(typeof wasmExports[\"__trunctfdf2\"] != \"undefined\", \"missing Wasm export: __trunctfdf2\");\n  assert(typeof wasmExports[\"tan\"] != \"undefined\", \"missing Wasm export: tan\");\n  assert(typeof wasmExports[\"tanh\"] != \"undefined\", \"missing Wasm export: tanh\");\n  assert(typeof wasmExports[\"_emscripten_check_mailbox\"] != \"undefined\", \"missing Wasm export: _emscripten_check_mailbox\");\n  assert(typeof wasmExports[\"usleep\"] != \"undefined\", \"missing Wasm export: usleep\");\n  assert(typeof wasmExports[\"emscripten_get_sbrk_ptr\"] != \"undefined\", \"missing Wasm export: emscripten_get_sbrk_ptr\");\n  assert(typeof wasmExports[\"setThrew\"] != \"undefined\", \"missing Wasm export: setThrew\");\n  assert(typeof wasmExports[\"emscripten_stack_init\"] != \"undefined\", \"missing Wasm export: emscripten_stack_init\");\n  assert(typeof wasmExports[\"emscripten_stack_set_limits\"] != \"undefined\", \"missing Wasm export: emscripten_stack_set_limits\");\n  assert(typeof wasmExports[\"emscripten_stack_get_free\"] != \"undefined\", \"missing Wasm export: emscripten_stack_get_free\");\n  assert(typeof wasmExports[\"_emscripten_stack_restore\"] != \"undefined\", \"missing Wasm export: _emscripten_stack_restore\");\n  assert(typeof wasmExports[\"_emscripten_stack_alloc\"] != \"undefined\", \"missing Wasm export: _emscripten_stack_alloc\");\n  assert(typeof wasmExports[\"emscripten_stack_get_current\"] != \"undefined\", \"missing Wasm export: emscripten_stack_get_current\");\n  assert(typeof wasmExports[\"accept\"] != \"undefined\", \"missing Wasm export: accept\");\n  assert(typeof wasmExports[\"bind\"] != \"undefined\", \"missing Wasm export: bind\");\n  assert(typeof wasmExports[\"connect\"] != \"undefined\", \"missing Wasm export: connect\");\n  assert(typeof wasmExports[\"freeaddrinfo\"] != \"undefined\", \"missing Wasm export: freeaddrinfo\");\n  assert(typeof wasmExports[\"getsockopt\"] != \"undefined\", \"missing Wasm export: getsockopt\");\n  assert(typeof wasmExports[\"listen\"] != \"undefined\", \"missing Wasm export: listen\");\n  assert(typeof wasmExports[\"setsockopt\"] != \"undefined\", \"missing Wasm export: setsockopt\");\n  assert(typeof wasmExports[\"socket\"] != \"undefined\", \"missing Wasm export: socket\");\n  assert(typeof wasmExports[\"_wasmfs_read_file\"] != \"undefined\", \"missing Wasm export: _wasmfs_read_file\");\n  assert(typeof wasmExports[\"_wasmfs_write_file\"] != \"undefined\", \"missing Wasm export: _wasmfs_write_file\");\n  assert(typeof wasmExports[\"_wasmfs_mkdir\"] != \"undefined\", \"missing Wasm export: _wasmfs_mkdir\");\n  assert(typeof wasmExports[\"_wasmfs_rmdir\"] != \"undefined\", \"missing Wasm export: _wasmfs_rmdir\");\n  assert(typeof wasmExports[\"_wasmfs_open\"] != \"undefined\", \"missing Wasm export: _wasmfs_open\");\n  assert(typeof wasmExports[\"_wasmfs_mknod\"] != \"undefined\", \"missing Wasm export: _wasmfs_mknod\");\n  assert(typeof wasmExports[\"_wasmfs_unlink\"] != \"undefined\", \"missing Wasm export: _wasmfs_unlink\");\n  assert(typeof wasmExports[\"_wasmfs_chdir\"] != \"undefined\", \"missing Wasm export: _wasmfs_chdir\");\n  assert(typeof wasmExports[\"_wasmfs_symlink\"] != \"undefined\", \"missing Wasm export: _wasmfs_symlink\");\n  assert(typeof wasmExports[\"_wasmfs_readlink\"] != \"undefined\", \"missing Wasm export: _wasmfs_readlink\");\n  assert(typeof wasmExports[\"_wasmfs_write\"] != \"undefined\", \"missing Wasm export: _wasmfs_write\");\n  assert(typeof wasmExports[\"_wasmfs_pwrite\"] != \"undefined\", \"missing Wasm export: _wasmfs_pwrite\");\n  assert(typeof wasmExports[\"_wasmfs_chmod\"] != \"undefined\", \"missing Wasm export: _wasmfs_chmod\");\n  assert(typeof wasmExports[\"_wasmfs_fchmod\"] != \"undefined\", \"missing Wasm export: _wasmfs_fchmod\");\n  assert(typeof wasmExports[\"_wasmfs_lchmod\"] != \"undefined\", \"missing Wasm export: _wasmfs_lchmod\");\n  assert(typeof wasmExports[\"_wasmfs_llseek\"] != \"undefined\", \"missing Wasm export: _wasmfs_llseek\");\n  assert(typeof wasmExports[\"_wasmfs_rename\"] != \"undefined\", \"missing Wasm export: _wasmfs_rename\");\n  assert(typeof wasmExports[\"_wasmfs_read\"] != \"undefined\", \"missing Wasm export: _wasmfs_read\");\n  assert(typeof wasmExports[\"_wasmfs_pread\"] != \"undefined\", \"missing Wasm export: _wasmfs_pread\");\n  assert(typeof wasmExports[\"_wasmfs_truncate\"] != \"undefined\", \"missing Wasm export: _wasmfs_truncate\");\n  assert(typeof wasmExports[\"_wasmfs_ftruncate\"] != \"undefined\", \"missing Wasm export: _wasmfs_ftruncate\");\n  assert(typeof wasmExports[\"_wasmfs_close\"] != \"undefined\", \"missing Wasm export: _wasmfs_close\");\n  assert(typeof wasmExports[\"_wasmfs_mmap\"] != \"undefined\", \"missing Wasm export: _wasmfs_mmap\");\n  assert(typeof wasmExports[\"_wasmfs_msync\"] != \"undefined\", \"missing Wasm export: _wasmfs_msync\");\n  assert(typeof wasmExports[\"_wasmfs_munmap\"] != \"undefined\", \"missing Wasm export: _wasmfs_munmap\");\n  assert(typeof wasmExports[\"_wasmfs_utime\"] != \"undefined\", \"missing Wasm export: _wasmfs_utime\");\n  assert(typeof wasmExports[\"_wasmfs_stat\"] != \"undefined\", \"missing Wasm export: _wasmfs_stat\");\n  assert(typeof wasmExports[\"_wasmfs_lstat\"] != \"undefined\", \"missing Wasm export: _wasmfs_lstat\");\n  assert(typeof wasmExports[\"_wasmfs_mount\"] != \"undefined\", \"missing Wasm export: _wasmfs_mount\");\n  assert(typeof wasmExports[\"_wasmfs_identify\"] != \"undefined\", \"missing Wasm export: _wasmfs_identify\");\n  assert(typeof wasmExports[\"_wasmfs_readdir_start\"] != \"undefined\", \"missing Wasm export: _wasmfs_readdir_start\");\n  assert(typeof wasmExports[\"_wasmfs_readdir_get\"] != \"undefined\", \"missing Wasm export: _wasmfs_readdir_get\");\n  assert(typeof wasmExports[\"_wasmfs_readdir_finish\"] != \"undefined\", \"missing Wasm export: _wasmfs_readdir_finish\");\n  assert(typeof wasmExports[\"_wasmfs_get_cwd\"] != \"undefined\", \"missing Wasm export: _wasmfs_get_cwd\");\n  assert(typeof wasmExports[\"wasmfs_create_jsimpl_backend\"] != \"undefined\", \"missing Wasm export: wasmfs_create_jsimpl_backend\");\n  assert(typeof wasmExports[\"wasmfs_create_memory_backend\"] != \"undefined\", \"missing Wasm export: wasmfs_create_memory_backend\");\n  assert(typeof wasmExports[\"_wasmfs_opfs_record_entry\"] != \"undefined\", \"missing Wasm export: _wasmfs_opfs_record_entry\");\n  assert(typeof wasmExports[\"wasmfs_create_file\"] != \"undefined\", \"missing Wasm export: wasmfs_create_file\");\n  assert(typeof wasmExports[\"wasmfs_unmount\"] != \"undefined\", \"missing Wasm export: wasmfs_unmount\");\n  assert(typeof wasmExports[\"wasmfs_flush\"] != \"undefined\", \"missing Wasm export: wasmfs_flush\");\n  assert(typeof wasmExports[\"__stack_pointer\"] != \"undefined\", \"missing Wasm export: __stack_pointer\");\n  assert(typeof wasmExports[\"__table_base\"] != \"undefined\", \"missing Wasm export: __table_base\");\n  assert(typeof wasmExports[\"__memory_base\"] != \"undefined\", \"missing Wasm export: __memory_base\");\n  assert(typeof wasmExports[\"__indirect_function_table\"] != \"undefined\", \"missing Wasm export: __indirect_function_table\");\n  assert(typeof wasmExports[\"_ZTVN10__cxxabiv120__si_class_type_infoE\"] != \"undefined\", \"missing Wasm export: _ZTVN10__cxxabiv120__si_class_type_infoE\");\n  assert(typeof wasmExports[\"_ZTVN10__cxxabiv117__class_type_infoE\"] != \"undefined\", \"missing Wasm export: _ZTVN10__cxxabiv117__class_type_infoE\");\n  assert(typeof wasmExports[\"_ZTVN10__cxxabiv121__vmi_class_type_infoE\"] != \"undefined\", \"missing Wasm export: _ZTVN10__cxxabiv121__vmi_class_type_infoE\");\n  assert(typeof wasmExports[\"stderr\"] != \"undefined\", \"missing Wasm export: stderr\");\n  assert(typeof wasmExports[\"__heap_base\"] != \"undefined\", \"missing Wasm export: __heap_base\");\n  _main = Module[\"_main\"] = createExportWrapper(\"__main_argc_argv\", 2);\n  _free = Module[\"_free\"] = createExportWrapper(\"free\", 1);\n  _malloc = Module[\"_malloc\"] = createExportWrapper(\"malloc\", 1);\n  ___multi3 = createExportWrapper(\"__multi3\", 5);\n  __ZdlPvm = createExportWrapper(\"_ZdlPvm\", 2);\n  _strlen = createExportWrapper(\"strlen\", 1);\n  _memcmp = createExportWrapper(\"memcmp\", 3);\n  __Znwm = createExportWrapper(\"_Znwm\", 1);\n  _pthread_self = wasmExports[\"pthread_self\"];\n  ___cxa_guard_acquire = createExportWrapper(\"__cxa_guard_acquire\", 1);\n  ___cxa_guard_release = createExportWrapper(\"__cxa_guard_release\", 1);\n  ___cxa_pure_virtual = createExportWrapper(\"__cxa_pure_virtual\", 0);\n  _isCurrentSequenceLoaded = Module[\"_isCurrentSequenceLoaded\"] = createExportWrapper(\"isCurrentSequenceLoaded\", 0);\n  _isCurrentSequenceShowOnlyDynamics = Module[\"_isCurrentSequenceShowOnlyDynamics\"] = createExportWrapper(\"isCurrentSequenceShowOnlyDynamics\", 0);\n  _setCurrentSequenceShowOnlyDynamics = Module[\"_setCurrentSequenceShowOnlyDynamics\"] = createExportWrapper(\"setCurrentSequenceShowOnlyDynamics\", 1);\n  _saveCurrentSequenceObjectiveGrade = Module[\"_saveCurrentSequenceObjectiveGrade\"] = createExportWrapper(\"saveCurrentSequenceObjectiveGrade\", 1);\n  _getCurrentSequenceObjectiveGrade = Module[\"_getCurrentSequenceObjectiveGrade\"] = createExportWrapper(\"getCurrentSequenceObjectiveGrade\", 0);\n  _isCurrentSequenceInEvaluationMode = Module[\"_isCurrentSequenceInEvaluationMode\"] = createExportWrapper(\"isCurrentSequenceInEvaluationMode\", 0);\n  _saveCurrentSequenceObjectiveVisualizations = Module[\"_saveCurrentSequenceObjectiveVisualizations\"] = createExportWrapper(\"saveCurrentSequenceObjectiveVisualizations\", 1);\n  _getCurrentSequenceObjectiveVisualizations = Module[\"_getCurrentSequenceObjectiveVisualizations\"] = createExportWrapper(\"getCurrentSequenceObjectiveVisualizations\", 0);\n  _getCurrentSequenceNodeVideoID = Module[\"_getCurrentSequenceNodeVideoID\"] = createExportWrapper(\"getCurrentSequenceNodeVideoID\", 0);\n  _setSequenceVideoPath = Module[\"_setSequenceVideoPath\"] = createExportWrapper(\"setSequenceVideoPath\", 1);\n  _setSequenceVideoPlaying = Module[\"_setSequenceVideoPlaying\"] = createExportWrapper(\"setSequenceVideoPlaying\", 1);\n  _getCurrentSequenceVideoDuration = Module[\"_getCurrentSequenceVideoDuration\"] = createExportWrapper(\"getCurrentSequenceVideoDuration\", 0);\n  _setSequenceVideoTimer = Module[\"_setSequenceVideoTimer\"] = createExportWrapper(\"setSequenceVideoTimer\", 1);\n  _setSequenceVideoHidden = Module[\"_setSequenceVideoHidden\"] = createExportWrapper(\"setSequenceVideoHidden\", 1);\n  _setSequenceVideoAvatarHidden = Module[\"_setSequenceVideoAvatarHidden\"] = createExportWrapper(\"setSequenceVideoAvatarHidden\", 1);\n  _setSequenceVideoHandsHidden = Module[\"_setSequenceVideoHandsHidden\"] = createExportWrapper(\"setSequenceVideoHandsHidden\", 1);\n  _clipSequenceVideo = Module[\"_clipSequenceVideo\"] = createExportWrapper(\"clipSequenceVideo\", 3);\n  _setSequenceVideoFirstPerson = Module[\"_setSequenceVideoFirstPerson\"] = createExportWrapper(\"setSequenceVideoFirstPerson\", 1);\n  _getCurrentSequenceStepsCount = Module[\"_getCurrentSequenceStepsCount\"] = createExportWrapper(\"getCurrentSequenceStepsCount\", 0);\n  _getCurrentStepIndex = Module[\"_getCurrentStepIndex\"] = createExportWrapper(\"getCurrentStepIndex\", 0);\n  _getCurrentStepID = Module[\"_getCurrentStepID\"] = createExportWrapper(\"getCurrentStepID\", 0);\n  _getStepIDAtIndex = Module[\"_getStepIDAtIndex\"] = createExportWrapper(\"getStepIDAtIndex\", 1);\n  _addStep = Module[\"_addStep\"] = createExportWrapper(\"addStep\", 2);\n  _duplicateStep = Module[\"_duplicateStep\"] = createExportWrapper(\"duplicateStep\", 1);\n  _selectStep = Module[\"_selectStep\"] = createExportWrapper(\"selectStep\", 1);\n  _goToStepStart = Module[\"_goToStepStart\"] = createExportWrapper(\"goToStepStart\", 0);\n  _goToStepEnd = Module[\"_goToStepEnd\"] = createExportWrapper(\"goToStepEnd\", 0);\n  _getStepType = Module[\"_getStepType\"] = createExportWrapper(\"getStepType\", 1);\n  _getStepDuration = Module[\"_getStepDuration\"] = createExportWrapper(\"getStepDuration\", 1);\n  _setStepDuration = Module[\"_setStepDuration\"] = createExportWrapper(\"setStepDuration\", 2);\n  _getAnimatedStepImageFilePath = Module[\"_getAnimatedStepImageFilePath\"] = createExportWrapper(\"getAnimatedStepImageFilePath\", 1);\n  _getAnimatedStepVideo = Module[\"_getAnimatedStepVideo\"] = createExportWrapper(\"getAnimatedStepVideo\", 1);\n  _setAnimatedStepImageFilePath = Module[\"_setAnimatedStepImageFilePath\"] = createExportWrapper(\"setAnimatedStepImageFilePath\", 2);\n  _setAnimatedStepVideoID = Module[\"_setAnimatedStepVideoID\"] = createExportWrapper(\"setAnimatedStepVideoID\", 2);\n  _isStepAnimationBackAndForth = Module[\"_isStepAnimationBackAndForth\"] = createExportWrapper(\"isStepAnimationBackAndForth\", 1);\n  _setStepAnimationBackAndForth = Module[\"_setStepAnimationBackAndForth\"] = createExportWrapper(\"setStepAnimationBackAndForth\", 2);\n  _setStepQuestionCorrectAnswer = Module[\"_setStepQuestionCorrectAnswer\"] = createExportWrapper(\"setStepQuestionCorrectAnswer\", 2);\n  _getStepProgress = Module[\"_getStepProgress\"] = createExportWrapper(\"getStepProgress\", 0);\n  _isAtStart = Module[\"_isAtStart\"] = createExportWrapper(\"isAtStart\", 0);\n  _isStepSaved = Module[\"_isStepSaved\"] = createExportWrapper(\"isStepSaved\", 2);\n  _isCurrentStepActive = Module[\"_isCurrentStepActive\"] = createExportWrapper(\"isCurrentStepActive\", 0);\n  _activateCurrentStep = Module[\"_activateCurrentStep\"] = createExportWrapper(\"activateCurrentStep\", 0);\n  _disableCurrentStep = Module[\"_disableCurrentStep\"] = createExportWrapper(\"disableCurrentStep\", 0);\n  _deleteStep = Module[\"_deleteStep\"] = createExportWrapper(\"deleteStep\", 1);\n  _reverseSteps = Module[\"_reverseSteps\"] = createExportWrapper(\"reverseSteps\", 1);\n  _reverseStepAnimated = Module[\"_reverseStepAnimated\"] = createExportWrapper(\"reverseStepAnimated\", 1);\n  _removeTemporaryAsset = Module[\"_removeTemporaryAsset\"] = createExportWrapper(\"removeTemporaryAsset\", 1);\n  _getTemporaryAssetID = Module[\"_getTemporaryAssetID\"] = createExportWrapper(\"getTemporaryAssetID\", 1);\n  _canProceedToNextStep = Module[\"_canProceedToNextStep\"] = createExportWrapper(\"canProceedToNextStep\", 0);\n  _canProceedToPreviousStep = Module[\"_canProceedToPreviousStep\"] = createExportWrapper(\"canProceedToPreviousStep\", 0);\n  _nextStep = Module[\"_nextStep\"] = createExportWrapper(\"nextStep\", 0);\n  _previousStep = Module[\"_previousStep\"] = createExportWrapper(\"previousStep\", 0);\n  _isAssetForCurrentStep = Module[\"_isAssetForCurrentStep\"] = createExportWrapper(\"isAssetForCurrentStep\", 1);\n  _commitCommand = Module[\"_commitCommand\"] = createExportWrapper(\"commitCommand\", 0);\n  _undoCommand = Module[\"_undoCommand\"] = createExportWrapper(\"undoCommand\", 0);\n  _redoCommand = Module[\"_redoCommand\"] = createExportWrapper(\"redoCommand\", 0);\n  _getUndoStackSize = Module[\"_getUndoStackSize\"] = createExportWrapper(\"getUndoStackSize\", 0);\n  _getRedoStackSize = Module[\"_getRedoStackSize\"] = createExportWrapper(\"getRedoStackSize\", 0);\n  _moveSelectedNodes = Module[\"_moveSelectedNodes\"] = createExportWrapper(\"moveSelectedNodes\", 3);\n  _scaleSelectedNodes = Module[\"_scaleSelectedNodes\"] = createExportWrapper(\"scaleSelectedNodes\", 3);\n  _setRotationOfSelectedNodes = Module[\"_setRotationOfSelectedNodes\"] = createExportWrapper(\"setRotationOfSelectedNodes\", 3);\n  _sinf = createExportWrapper(\"sinf\", 1);\n  _cosf = createExportWrapper(\"cosf\", 1);\n  _saveScaleToAssetDocument = Module[\"_saveScaleToAssetDocument\"] = createExportWrapper(\"saveScaleToAssetDocument\", 2);\n  _setCameraView = Module[\"_setCameraView\"] = createExportWrapper(\"setCameraView\", 1);\n  _getCameraState = Module[\"_getCameraState\"] = createExportWrapper(\"getCameraState\", 2);\n  _setCameraState = Module[\"_setCameraState\"] = createExportWrapper(\"setCameraState\", 2);\n  _setCameraPosXYZ = Module[\"_setCameraPosXYZ\"] = createExportWrapper(\"setCameraPosXYZ\", 3);\n  _setCameraForwardXYZ = Module[\"_setCameraForwardXYZ\"] = createExportWrapper(\"setCameraForwardXYZ\", 3);\n  _setModelPosition = Module[\"_setModelPosition\"] = createExportWrapper(\"setModelPosition\", 4);\n  _getModelBottom = Module[\"_getModelBottom\"] = createExportWrapper(\"getModelBottom\", 2);\n  _getModelDimensions = Module[\"_getModelDimensions\"] = createExportWrapper(\"getModelDimensions\", 2);\n  _getNodePosition = Module[\"_getNodePosition\"] = createExportWrapper(\"getNodePosition\", 2);\n  _getNodeScale = Module[\"_getNodeScale\"] = createExportWrapper(\"getNodeScale\", 2);\n  _getNodeRotation = Module[\"_getNodeRotation\"] = createExportWrapper(\"getNodeRotation\", 2);\n  _getStudioHierarchy = Module[\"_getStudioHierarchy\"] = createExportWrapper(\"getStudioHierarchy\", 1);\n  _clickFirstNodeModel = Module[\"_clickFirstNodeModel\"] = createExportWrapper(\"clickFirstNodeModel\", 0);\n  _isNodeActive = Module[\"_isNodeActive\"] = createExportWrapper(\"isNodeActive\", 1);\n  _isNodeAnnotation = Module[\"_isNodeAnnotation\"] = createExportWrapper(\"isNodeAnnotation\", 1);\n  _isNodeModel = Module[\"_isNodeModel\"] = createExportWrapper(\"isNodeModel\", 1);\n  _isNodeQR = Module[\"_isNodeQR\"] = createExportWrapper(\"isNodeQR\", 1);\n  _getSelectedNodesCount = Module[\"_getSelectedNodesCount\"] = createExportWrapper(\"getSelectedNodesCount\", 0);\n  _getSelectedNodes = Module[\"_getSelectedNodes\"] = createExportWrapper(\"getSelectedNodes\", 1);\n  _getSelectedAssetID = Module[\"_getSelectedAssetID\"] = createExportWrapper(\"getSelectedAssetID\", 0);\n  _getSelectedAnchorID = Module[\"_getSelectedAnchorID\"] = createExportWrapper(\"getSelectedAnchorID\", 0);\n  _getSelectedSessionNodeID = Module[\"_getSelectedSessionNodeID\"] = createExportWrapper(\"getSelectedSessionNodeID\", 0);\n  _setHiddenRecursivelyNodeID = Module[\"_setHiddenRecursivelyNodeID\"] = createExportWrapper(\"setHiddenRecursivelyNodeID\", 2);\n  _setSelectedNodesHidden = Module[\"_setSelectedNodesHidden\"] = createExportWrapper(\"setSelectedNodesHidden\", 1);\n  _getWorldAssetType = Module[\"_getWorldAssetType\"] = createExportWrapper(\"getWorldAssetType\", 2);\n  _getNodeName = Module[\"_getNodeName\"] = createExportWrapper(\"getNodeName\", 1);\n  _applyScaleFactor = Module[\"_applyScaleFactor\"] = createExportWrapper(\"applyScaleFactor\", 2);\n  _getInitialScale = Module[\"_getInitialScale\"] = createExportWrapper(\"getInitialScale\", 1);\n  _decompressFolder = Module[\"_decompressFolder\"] = createExportWrapper(\"decompressFolder\", 2);\n  _getOwnerID = Module[\"_getOwnerID\"] = createExportWrapper(\"getOwnerID\", 1);\n  _getWorldOwnerType = Module[\"_getWorldOwnerType\"] = createExportWrapper(\"getWorldOwnerType\", 1);\n  _getUsername = Module[\"_getUsername\"] = createExportWrapper(\"getUsername\", 1);\n  _getPeerFullName = Module[\"_getPeerFullName\"] = createExportWrapper(\"getPeerFullName\", 1);\n  _getPeerGroups = Module[\"_getPeerGroups\"] = createExportWrapper(\"getPeerGroups\", 2);\n  _getPeerGroupRole = Module[\"_getPeerGroupRole\"] = createExportWrapper(\"getPeerGroupRole\", 2);\n  _getGroupWorldIDs = Module[\"_getGroupWorldIDs\"] = createExportWrapper(\"getGroupWorldIDs\", 2);\n  _getAuthorizedEmails = Module[\"_getAuthorizedEmails\"] = createExportWrapper(\"getAuthorizedEmails\", 2);\n  _getAuthorizedEmailRole = Module[\"_getAuthorizedEmailRole\"] = createExportWrapper(\"getAuthorizedEmailRole\", 2);\n  _getWorldPeers = Module[\"_getWorldPeers\"] = createExportWrapper(\"getWorldPeers\", 2);\n  _getWorldPeerRole = Module[\"_getWorldPeerRole\"] = createExportWrapper(\"getWorldPeerRole\", 2);\n  _getPeerFromUsername = Module[\"_getPeerFromUsername\"] = createExportWrapper(\"getPeerFromUsername\", 1);\n  _setNewWorldOwner = Module[\"_setNewWorldOwner\"] = createExportWrapper(\"setNewWorldOwner\", 3);\n  _isSavingFinished = Module[\"_isSavingFinished\"] = createExportWrapper(\"isSavingFinished\", 0);\n  _getWorldGroups = Module[\"_getWorldGroups\"] = createExportWrapper(\"getWorldGroups\", 2);\n  _getWorldGroupRole = Module[\"_getWorldGroupRole\"] = createExportWrapper(\"getWorldGroupRole\", 2);\n  _removeWorldGroup = Module[\"_removeWorldGroup\"] = createExportWrapper(\"removeWorldGroup\", 2);\n  _isUserOwnerWorld = Module[\"_isUserOwnerWorld\"] = createExportWrapper(\"isUserOwnerWorld\", 1);\n  _canCurrentPeerEditWorld = Module[\"_canCurrentPeerEditWorld\"] = createExportWrapper(\"canCurrentPeerEditWorld\", 1);\n  _canCurrentPeerEditSequence = Module[\"_canCurrentPeerEditSequence\"] = createExportWrapper(\"canCurrentPeerEditSequence\", 1);\n  _canCurrentPeerEditAsset = Module[\"_canCurrentPeerEditAsset\"] = createExportWrapper(\"canCurrentPeerEditAsset\", 0);\n  _canCurrentPeerDeleteWorld = Module[\"_canCurrentPeerDeleteWorld\"] = createExportWrapper(\"canCurrentPeerDeleteWorld\", 1);\n  _addWorldToCurrentPeer = Module[\"_addWorldToCurrentPeer\"] = createExportWrapper(\"addWorldToCurrentPeer\", 1);\n  _cloneWorld = Module[\"_cloneWorld\"] = createExportWrapper(\"cloneWorld\", 4);\n  _loadWorld = Module[\"_loadWorld\"] = createExportWrapper(\"loadWorld\", 1);\n  _loadWorldAsset = Module[\"_loadWorldAsset\"] = createExportWrapper(\"loadWorldAsset\", 2);\n  _getLibraryDocumentsID = Module[\"_getLibraryDocumentsID\"] = createExportWrapper(\"getLibraryDocumentsID\", 1);\n  _loadDocumentMetadata = Module[\"_loadDocumentMetadata\"] = createExportWrapper(\"loadDocumentMetadata\", 1);\n  _getDocumentSize = Module[\"_getDocumentSize\"] = createExportWrapper(\"getDocumentSize\", 1);\n  _clearWorld = Module[\"_clearWorld\"] = createExportWrapper(\"clearWorld\", 0);\n  _deleteWorld = Module[\"_deleteWorld\"] = createExportWrapper(\"deleteWorld\", 1);\n  _leaveWorld = Module[\"_leaveWorld\"] = createExportWrapper(\"leaveWorld\", 1);\n  _getWorldTitle = Module[\"_getWorldTitle\"] = createExportWrapper(\"getWorldTitle\", 1);\n  _isWorldAuthorized = Module[\"_isWorldAuthorized\"] = createExportWrapper(\"isWorldAuthorized\", 1);\n  _isWorldMetadataValid = Module[\"_isWorldMetadataValid\"] = createExportWrapper(\"isWorldMetadataValid\", 1);\n  _updateWorldTitle = Module[\"_updateWorldTitle\"] = createExportWrapper(\"updateWorldTitle\", 2);\n  _getWorldThumbnail = Module[\"_getWorldThumbnail\"] = createExportWrapper(\"getWorldThumbnail\", 1);\n  _getAssetDocumentCount = Module[\"_getAssetDocumentCount\"] = createExportWrapper(\"getAssetDocumentCount\", 1);\n  _getWorldAssetDocumentID = Module[\"_getWorldAssetDocumentID\"] = createExportWrapper(\"getWorldAssetDocumentID\", 2);\n  _getWorldEntitiesIDs = Module[\"_getWorldEntitiesIDs\"] = createExportWrapper(\"getWorldEntitiesIDs\", 2);\n  _getEntityName = Module[\"_getEntityName\"] = createExportWrapper(\"getEntityName\", 1);\n  _isEntityArchived = Module[\"_isEntityArchived\"] = createExportWrapper(\"isEntityArchived\", 1);\n  _removeAssetDocument = Module[\"_removeAssetDocument\"] = createExportWrapper(\"removeAssetDocument\", 1);\n  _getDocumentsCount = Module[\"_getDocumentsCount\"] = createExportWrapper(\"getDocumentsCount\", 0);\n  _createNodeModel = Module[\"_createNodeModel\"] = createExportWrapper(\"createNodeModel\", 1);\n  _deleteNodeModel = Module[\"_deleteNodeModel\"] = createExportWrapper(\"deleteNodeModel\", 1);\n  _addNodeModelInNodesContainer = Module[\"_addNodeModelInNodesContainer\"] = createExportWrapper(\"addNodeModelInNodesContainer\", 1);\n  _removeNodeModelFromNodesContainer = Module[\"_removeNodeModelFromNodesContainer\"] = createExportWrapper(\"removeNodeModelFromNodesContainer\", 1);\n  _getDocumentLocalPath = Module[\"_getDocumentLocalPath\"] = createExportWrapper(\"getDocumentLocalPath\", 1);\n  _loadMissingTextures = Module[\"_loadMissingTextures\"] = createExportWrapper(\"loadMissingTextures\", 1);\n  _getDocumentTitleCloud = Module[\"_getDocumentTitleCloud\"] = createExportWrapper(\"getDocumentTitleCloud\", 1);\n  _updateDocumentTitleCloud = Module[\"_updateDocumentTitleCloud\"] = createExportWrapper(\"updateDocumentTitleCloud\", 2);\n  _addTemporaryAssetDocumentToCurrentStep = Module[\"_addTemporaryAssetDocumentToCurrentStep\"] = createExportWrapper(\"addTemporaryAssetDocumentToCurrentStep\", 1);\n  _addTemporaryAssetToCurrentStep = Module[\"_addTemporaryAssetToCurrentStep\"] = createExportWrapper(\"addTemporaryAssetToCurrentStep\", 1);\n  _loadDocumentThumbnail = Module[\"_loadDocumentThumbnail\"] = createExportWrapper(\"loadDocumentThumbnail\", 1);\n  _isDocumentThumbnailLoaded = Module[\"_isDocumentThumbnailLoaded\"] = createExportWrapper(\"isDocumentThumbnailLoaded\", 1);\n  _getDocumentThumbnailUrlS3 = Module[\"_getDocumentThumbnailUrlS3\"] = createExportWrapper(\"getDocumentThumbnailUrlS3\", 1);\n  _getDocumentThumbnailLocalPath = Module[\"_getDocumentThumbnailLocalPath\"] = createExportWrapper(\"getDocumentThumbnailLocalPath\", 1);\n  _updateDocumentThumbnail = Module[\"_updateDocumentThumbnail\"] = createExportWrapper(\"updateDocumentThumbnail\", 2);\n  _deleteDocumentCloud = Module[\"_deleteDocumentCloud\"] = createExportWrapper(\"deleteDocumentCloud\", 1);\n  _updatePartName = Module[\"_updatePartName\"] = createExportWrapper(\"updatePartName\", 2);\n  _setAssetForPlacement = Module[\"_setAssetForPlacement\"] = createExportWrapper(\"setAssetForPlacement\", 1);\n  _setAnchorForPlacement = Module[\"_setAnchorForPlacement\"] = createExportWrapper(\"setAnchorForPlacement\", 1);\n  _isDocumentMetadataValid = Module[\"_isDocumentMetadataValid\"] = createExportWrapper(\"isDocumentMetadataValid\", 1);\n  _isDocumentDataValid = Module[\"_isDocumentDataValid\"] = createExportWrapper(\"isDocumentDataValid\", 1);\n  _duplicateSelectedAssets = Module[\"_duplicateSelectedAssets\"] = createExportWrapper(\"duplicateSelectedAssets\", 1);\n  _getDocumentUrlS3 = Module[\"_getDocumentUrlS3\"] = createExportWrapper(\"getDocumentUrlS3\", 1);\n  _createNewAnchor = Module[\"_createNewAnchor\"] = createExportWrapper(\"createNewAnchor\", 4);\n  _deleteAnchor = Module[\"_deleteAnchor\"] = createExportWrapper(\"deleteAnchor\", 1);\n  _getWorldAssetVideoID = Module[\"_getWorldAssetVideoID\"] = createExportWrapper(\"getWorldAssetVideoID\", 2);\n  _setVideoFilePath = Module[\"_setVideoFilePath\"] = createExportWrapper(\"setVideoFilePath\", 2);\n  _deleteVideo = Module[\"_deleteVideo\"] = createExportWrapper(\"deleteVideo\", 1);\n  _convertModelFileToGLB = Module[\"_convertModelFileToGLB\"] = createExportWrapper(\"convertModelFileToGLB\", 1);\n  _getVideoFileDuration = Module[\"_getVideoFileDuration\"] = createExportWrapper(\"getVideoFileDuration\", 1);\n  _getVideoResolution = Module[\"_getVideoResolution\"] = createExportWrapper(\"getVideoResolution\", 2);\n  _isVideoPixelFormatSupported = Module[\"_isVideoPixelFormatSupported\"] = createExportWrapper(\"isVideoPixelFormatSupported\", 1);\n  _getVideoTags = Module[\"_getVideoTags\"] = createExportWrapper(\"getVideoTags\", 2);\n  _addVideoTag = Module[\"_addVideoTag\"] = createExportWrapper(\"addVideoTag\", 2);\n  _removeVideoTag = Module[\"_removeVideoTag\"] = createExportWrapper(\"removeVideoTag\", 2);\n  _attemptPlayAudio = Module[\"_attemptPlayAudio\"] = createExportWrapper(\"attemptPlayAudio\", 1);\n  _isWorldAssetLoaded = Module[\"_isWorldAssetLoaded\"] = createExportWrapper(\"isWorldAssetLoaded\", 2);\n  _getSequenceCount = Module[\"_getSequenceCount\"] = createExportWrapper(\"getSequenceCount\", 1);\n  _queryPeerMetadata = Module[\"_queryPeerMetadata\"] = createExportWrapper(\"queryPeerMetadata\", 1);\n  _setEditing = Module[\"_setEditing\"] = createExportWrapper(\"setEditing\", 1);\n  _atan2f = createExportWrapper(\"atan2f\", 2);\n  _dsclogTRACE = Module[\"_dsclogTRACE\"] = createExportWrapper(\"dsclogTRACE\", 2);\n  _dsclogDEBUG = Module[\"_dsclogDEBUG\"] = createExportWrapper(\"dsclogDEBUG\", 2);\n  _dsclogINFO = Module[\"_dsclogINFO\"] = createExportWrapper(\"dsclogINFO\", 2);\n  _dsclogWARN = Module[\"_dsclogWARN\"] = createExportWrapper(\"dsclogWARN\", 2);\n  _dsclogERROR = Module[\"_dsclogERROR\"] = createExportWrapper(\"dsclogERROR\", 2);\n  _dsclogCRITICAL = Module[\"_dsclogCRITICAL\"] = createExportWrapper(\"dsclogCRITICAL\", 2);\n  ___multf3 = createExportWrapper(\"__multf3\", 5);\n  _pthread_create = createExportWrapper(\"pthread_create\", 4);\n  _fiprintf = createExportWrapper(\"fiprintf\", 3);\n  _abort = createExportWrapper(\"abort\", 0);\n  _fwrite = createExportWrapper(\"fwrite\", 4);\n  _gettimeofday = createExportWrapper(\"gettimeofday\", 2);\n  _clock_gettime = createExportWrapper(\"clock_gettime\", 2);\n  _getpid = createExportWrapper(\"getpid\", 0);\n  _pthread_once = createExportWrapper(\"pthread_once\", 2);\n  _sscanf = createExportWrapper(\"sscanf\", 3);\n  _strftime = createExportWrapper(\"strftime\", 4);\n  _strncmp = createExportWrapper(\"strncmp\", 3);\n  _strchr = createExportWrapper(\"strchr\", 2);\n  _strcmp = createExportWrapper(\"strcmp\", 2);\n  _read = createExportWrapper(\"read\", 3);\n  ___errno_location = createExportWrapper(\"__errno_location\", 0);\n  _close = createExportWrapper(\"close\", 1);\n  _open = createExportWrapper(\"open\", 3);\n  _strtod = createExportWrapper(\"strtod\", 2);\n  _calloc = createExportWrapper(\"calloc\", 2);\n  _realloc = createExportWrapper(\"realloc\", 2);\n  _vsnprintf = createExportWrapper(\"vsnprintf\", 4);\n  _strncpy = createExportWrapper(\"strncpy\", 3);\n  _strspn = createExportWrapper(\"strspn\", 2);\n  _strcpy = createExportWrapper(\"strcpy\", 2);\n  _strtoul = createExportWrapper(\"strtoul\", 3);\n  _fclose = createExportWrapper(\"fclose\", 1);\n  _fopen = createExportWrapper(\"fopen\", 2);\n  _mktime = createExportWrapper(\"mktime\", 1);\n  _localtime = createExportWrapper(\"localtime\", 1);\n  _fflush = createExportWrapper(\"fflush\", 1);\n  _cos = createExportWrapper(\"cos\", 1);\n  _sin = createExportWrapper(\"sin\", 1);\n  _acos = createExportWrapper(\"acos\", 1);\n  _exp = createExportWrapper(\"exp\", 1);\n  _fmod = createExportWrapper(\"fmod\", 2);\n  _strstr = createExportWrapper(\"strstr\", 2);\n  _snprintf = createExportWrapper(\"snprintf\", 4);\n  _atoi = createExportWrapper(\"atoi\", 1);\n  _strtoull = createExportWrapper(\"strtoull\", 3);\n  _strtol = createExportWrapper(\"strtol\", 3);\n  _round = createExportWrapper(\"round\", 1);\n  _roundf = createExportWrapper(\"roundf\", 1);\n  _memchr = createExportWrapper(\"memchr\", 3);\n  _lrint = createExportWrapper(\"lrint\", 1);\n  _lrintf = createExportWrapper(\"lrintf\", 1);\n  _pow = createExportWrapper(\"pow\", 2);\n  _expf = createExportWrapper(\"expf\", 1);\n  _logf = createExportWrapper(\"logf\", 1);\n  _log = createExportWrapper(\"log\", 1);\n  _log10 = createExportWrapper(\"log10\", 1);\n  _sysconf = createExportWrapper(\"sysconf\", 1);\n  _pthread_mutex_lock = createExportWrapper(\"pthread_mutex_lock\", 1);\n  _pthread_cond_wait = createExportWrapper(\"pthread_cond_wait\", 2);\n  _pthread_mutex_unlock = createExportWrapper(\"pthread_mutex_unlock\", 1);\n  _pthread_cond_broadcast = createExportWrapper(\"pthread_cond_broadcast\", 1);\n  _pthread_mutex_init = createExportWrapper(\"pthread_mutex_init\", 2);\n  _pthread_cond_init = createExportWrapper(\"pthread_cond_init\", 2);\n  _pthread_cond_destroy = createExportWrapper(\"pthread_cond_destroy\", 1);\n  _pthread_mutex_destroy = createExportWrapper(\"pthread_mutex_destroy\", 1);\n  _pthread_cond_signal = createExportWrapper(\"pthread_cond_signal\", 1);\n  _pthread_join = createExportWrapper(\"pthread_join\", 2);\n  _strrchr = createExportWrapper(\"strrchr\", 2);\n  _fseek = createExportWrapper(\"fseek\", 3);\n  _fputs = createExportWrapper(\"fputs\", 2);\n  _getenv = createExportWrapper(\"getenv\", 1);\n  _mkstemp = createExportWrapper(\"mkstemp\", 1);\n  _atanf = createExportWrapper(\"atanf\", 1);\n  _mkdir = createExportWrapper(\"mkdir\", 2);\n  _powf = createExportWrapper(\"powf\", 2);\n  ___getTypeName = createExportWrapper(\"__getTypeName\", 1);\n  __embind_initialize_bindings = createExportWrapper(\"_embind_initialize_bindings\", 0);\n  __emscripten_run_callback_on_thread = createExportWrapper(\"_emscripten_run_callback_on_thread\", 6);\n  _atan2 = createExportWrapper(\"atan2\", 2);\n  __emscripten_tls_init = createExportWrapper(\"_emscripten_tls_init\", 0);\n  _strtoll = createExportWrapper(\"strtoll\", 3);\n  _iprintf = createExportWrapper(\"iprintf\", 2);\n  _fstat = createExportWrapper(\"fstat\", 2);\n  _rmdir = createExportWrapper(\"rmdir\", 1);\n  _unlink = createExportWrapper(\"unlink\", 1);\n  _write = createExportWrapper(\"write\", 3);\n  _emscripten_builtin_memalign = createExportWrapper(\"emscripten_builtin_memalign\", 2);\n  _fabs = createExportWrapper(\"fabs\", 1);\n  _scalbn = createExportWrapper(\"scalbn\", 2);\n  _fdopen = createExportWrapper(\"fdopen\", 2);\n  _access = createExportWrapper(\"access\", 2);\n  _asin = createExportWrapper(\"asin\", 1);\n  _atan = createExportWrapper(\"atan\", 1);\n  _bsearch = createExportWrapper(\"bsearch\", 5);\n  _cbrt = createExportWrapper(\"cbrt\", 1);\n  _cbrtf = createExportWrapper(\"cbrtf\", 1);\n  _clock = createExportWrapper(\"clock\", 0);\n  _cosh = createExportWrapper(\"cosh\", 1);\n  ___dl_seterr = createExportWrapper(\"__dl_seterr\", 2);\n  __emscripten_dlsync_self_async = createExportWrapper(\"_emscripten_dlsync_self_async\", 1);\n  __emscripten_dlsync_self = createExportWrapper(\"_emscripten_dlsync_self\", 0);\n  __emscripten_proxy_dlsync_async = createExportWrapper(\"_emscripten_proxy_dlsync_async\", 2);\n  __emscripten_proxy_dlsync = createExportWrapper(\"_emscripten_proxy_dlsync\", 1);\n  __emscripten_find_dylib = createExportWrapper(\"_emscripten_find_dylib\", 4);\n  __emscripten_thread_init = createExportWrapper(\"_emscripten_thread_init\", 6);\n  ___set_thread_state = createExportWrapper(\"__set_thread_state\", 4);\n  __emscripten_thread_crashed = createExportWrapper(\"_emscripten_thread_crashed\", 0);\n  _exp2 = createExportWrapper(\"exp2\", 1);\n  _exp2f = createExportWrapper(\"exp2f\", 1);\n  _emscripten_proxy_execute_queue = createExportWrapper(\"emscripten_proxy_execute_queue\", 1);\n  _strcspn = createExportWrapper(\"strcspn\", 2);\n  _lseek = createExportWrapper(\"lseek\", 3);\n  _fcntl = createExportWrapper(\"fcntl\", 3);\n  ___small_fprintf = createExportWrapper(\"__small_fprintf\", 3);\n  _fputc = createExportWrapper(\"fputc\", 2);\n  _frexp = createExportWrapper(\"frexp\", 2);\n  _emscripten_stack_get_end = wasmExports[\"emscripten_stack_get_end\"];\n  _emscripten_stack_get_base = wasmExports[\"emscripten_stack_get_base\"];\n  _gmtime = createExportWrapper(\"gmtime\", 1);\n  _htonl = createExportWrapper(\"htonl\", 1);\n  _htons = createExportWrapper(\"htons\", 1);\n  _hypot = createExportWrapper(\"hypot\", 2);\n  _llrint = createExportWrapper(\"llrint\", 1);\n  _llrintf = createExportWrapper(\"llrintf\", 1);\n  _log2f = createExportWrapper(\"log2f\", 1);\n  _ntohl = createExportWrapper(\"ntohl\", 1);\n  _ntohs = createExportWrapper(\"ntohs\", 1);\n  _poll = createExportWrapper(\"poll\", 3);\n  ___small_printf = createExportWrapper(\"__small_printf\", 2);\n  _emscripten_proxy_finish = createExportWrapper(\"emscripten_proxy_finish\", 1);\n  __emscripten_run_js_on_main_thread_done = createExportWrapper(\"_emscripten_run_js_on_main_thread_done\", 3);\n  __emscripten_run_js_on_main_thread = createExportWrapper(\"_emscripten_run_js_on_main_thread\", 5);\n  _pthread_attr_destroy = createExportWrapper(\"pthread_attr_destroy\", 1);\n  _pthread_attr_init = createExportWrapper(\"pthread_attr_init\", 1);\n  _pthread_attr_setschedpolicy = createExportWrapper(\"pthread_attr_setschedpolicy\", 2);\n  _pthread_attr_setscope = createExportWrapper(\"pthread_attr_setscope\", 2);\n  __emscripten_thread_free_data = createExportWrapper(\"_emscripten_thread_free_data\", 1);\n  __emscripten_thread_exit = createExportWrapper(\"_emscripten_thread_exit\", 1);\n  _puts = createExportWrapper(\"puts\", 1);\n  _qsort = createExportWrapper(\"qsort\", 4);\n  _rename = createExportWrapper(\"rename\", 2);\n  _sem_destroy = createExportWrapper(\"sem_destroy\", 1);\n  _sem_init = createExportWrapper(\"sem_init\", 3);\n  _sem_post = createExportWrapper(\"sem_post\", 1);\n  _sem_timedwait = createExportWrapper(\"sem_timedwait\", 2);\n  _sem_trywait = createExportWrapper(\"sem_trywait\", 1);\n  _sem_wait = createExportWrapper(\"sem_wait\", 1);\n  _sinh = createExportWrapper(\"sinh\", 1);\n  ___addtf3 = createExportWrapper(\"__addtf3\", 5);\n  ___extenddftf2 = createExportWrapper(\"__extenddftf2\", 2);\n  ___floatunsitf = createExportWrapper(\"__floatunsitf\", 2);\n  ___trunctfdf2 = createExportWrapper(\"__trunctfdf2\", 2);\n  _tan = createExportWrapper(\"tan\", 1);\n  _tanh = createExportWrapper(\"tanh\", 1);\n  __emscripten_check_mailbox = createExportWrapper(\"_emscripten_check_mailbox\", 0);\n  _usleep = createExportWrapper(\"usleep\", 1);\n  _emscripten_get_sbrk_ptr = wasmExports[\"emscripten_get_sbrk_ptr\"];\n  _setThrew = createExportWrapper(\"setThrew\", 2);\n  _emscripten_stack_init = wasmExports[\"emscripten_stack_init\"];\n  _emscripten_stack_set_limits = wasmExports[\"emscripten_stack_set_limits\"];\n  _emscripten_stack_get_free = wasmExports[\"emscripten_stack_get_free\"];\n  __emscripten_stack_restore = wasmExports[\"_emscripten_stack_restore\"];\n  __emscripten_stack_alloc = wasmExports[\"_emscripten_stack_alloc\"];\n  _emscripten_stack_get_current = wasmExports[\"emscripten_stack_get_current\"];\n  _accept = createExportWrapper(\"accept\", 3);\n  _bind = createExportWrapper(\"bind\", 3);\n  _connect = createExportWrapper(\"connect\", 3);\n  _freeaddrinfo = createExportWrapper(\"freeaddrinfo\", 1);\n  _getsockopt = createExportWrapper(\"getsockopt\", 5);\n  _listen = createExportWrapper(\"listen\", 2);\n  _setsockopt = createExportWrapper(\"setsockopt\", 5);\n  _socket = createExportWrapper(\"socket\", 3);\n  __wasmfs_read_file = createExportWrapper(\"_wasmfs_read_file\", 3);\n  __wasmfs_write_file = createExportWrapper(\"_wasmfs_write_file\", 3);\n  __wasmfs_mkdir = createExportWrapper(\"_wasmfs_mkdir\", 2);\n  __wasmfs_rmdir = createExportWrapper(\"_wasmfs_rmdir\", 1);\n  __wasmfs_open = createExportWrapper(\"_wasmfs_open\", 3);\n  __wasmfs_mknod = createExportWrapper(\"_wasmfs_mknod\", 3);\n  __wasmfs_unlink = createExportWrapper(\"_wasmfs_unlink\", 1);\n  __wasmfs_chdir = createExportWrapper(\"_wasmfs_chdir\", 1);\n  __wasmfs_symlink = createExportWrapper(\"_wasmfs_symlink\", 2);\n  __wasmfs_readlink = createExportWrapper(\"_wasmfs_readlink\", 2);\n  __wasmfs_write = createExportWrapper(\"_wasmfs_write\", 3);\n  __wasmfs_pwrite = createExportWrapper(\"_wasmfs_pwrite\", 4);\n  __wasmfs_chmod = createExportWrapper(\"_wasmfs_chmod\", 2);\n  __wasmfs_fchmod = createExportWrapper(\"_wasmfs_fchmod\", 2);\n  __wasmfs_lchmod = createExportWrapper(\"_wasmfs_lchmod\", 2);\n  __wasmfs_llseek = createExportWrapper(\"_wasmfs_llseek\", 3);\n  __wasmfs_rename = createExportWrapper(\"_wasmfs_rename\", 2);\n  __wasmfs_read = createExportWrapper(\"_wasmfs_read\", 3);\n  __wasmfs_pread = createExportWrapper(\"_wasmfs_pread\", 4);\n  __wasmfs_truncate = createExportWrapper(\"_wasmfs_truncate\", 2);\n  __wasmfs_ftruncate = createExportWrapper(\"_wasmfs_ftruncate\", 2);\n  __wasmfs_close = createExportWrapper(\"_wasmfs_close\", 1);\n  __wasmfs_mmap = createExportWrapper(\"_wasmfs_mmap\", 5);\n  __wasmfs_msync = createExportWrapper(\"_wasmfs_msync\", 3);\n  __wasmfs_munmap = createExportWrapper(\"_wasmfs_munmap\", 2);\n  __wasmfs_utime = createExportWrapper(\"_wasmfs_utime\", 3);\n  __wasmfs_stat = createExportWrapper(\"_wasmfs_stat\", 2);\n  __wasmfs_lstat = createExportWrapper(\"_wasmfs_lstat\", 2);\n  __wasmfs_mount = createExportWrapper(\"_wasmfs_mount\", 2);\n  __wasmfs_identify = createExportWrapper(\"_wasmfs_identify\", 1);\n  __wasmfs_readdir_start = createExportWrapper(\"_wasmfs_readdir_start\", 1);\n  __wasmfs_readdir_get = createExportWrapper(\"_wasmfs_readdir_get\", 1);\n  __wasmfs_readdir_finish = createExportWrapper(\"_wasmfs_readdir_finish\", 1);\n  __wasmfs_get_cwd = createExportWrapper(\"_wasmfs_get_cwd\", 0);\n  _wasmfs_create_jsimpl_backend = createExportWrapper(\"wasmfs_create_jsimpl_backend\", 0);\n  _wasmfs_create_memory_backend = createExportWrapper(\"wasmfs_create_memory_backend\", 0);\n  __wasmfs_opfs_record_entry = createExportWrapper(\"_wasmfs_opfs_record_entry\", 3);\n  _wasmfs_create_file = createExportWrapper(\"wasmfs_create_file\", 3);\n  _wasmfs_unmount = createExportWrapper(\"wasmfs_unmount\", 1);\n  _wasmfs_flush = createExportWrapper(\"wasmfs_flush\", 0);\n  ___stack_pointer = wasmExports[\"__stack_pointer\"];\n  ___table_base = wasmExports[\"__table_base\"].value;\n  ___memory_base = wasmExports[\"__memory_base\"].value;\n  __indirect_function_table = wasmTable = wasmExports[\"__indirect_function_table\"];\n  __ZTVN10__cxxabiv120__si_class_type_infoE = wasmExports[\"_ZTVN10__cxxabiv120__si_class_type_infoE\"].value;\n  __ZTVN10__cxxabiv117__class_type_infoE = wasmExports[\"_ZTVN10__cxxabiv117__class_type_infoE\"].value;\n  __ZTVN10__cxxabiv121__vmi_class_type_infoE = wasmExports[\"_ZTVN10__cxxabiv121__vmi_class_type_infoE\"].value;\n  _stderr = wasmExports[\"stderr\"].value;\n  ___heap_base = wasmExports[\"__heap_base\"].value;\n}\n\nvar wasmImports;\n\nfunction assignWasmImports() {\n  wasmImports = {\n    /** @export */ CavlcParamCal_c: _CavlcParamCal_c,\n    /** @export */ _Z13WelsCopy4x4_cPhiS_i: __Z13WelsCopy4x4_cPhiS_i,\n    /** @export */ _Z13WelsCopy4x8_cPhiS_i: __Z13WelsCopy4x8_cPhiS_i,\n    /** @export */ _Z13WelsCopy8x4_cPhiS_i: __Z13WelsCopy8x4_cPhiS_i,\n    /** @export */ _Z13WelsCopy8x8_cPhiS_i: __Z13WelsCopy8x8_cPhiS_i,\n    /** @export */ _Z14WelsCopy16x8_cPhiS_i: __Z14WelsCopy16x8_cPhiS_i,\n    /** @export */ _Z14WelsCopy8x16_cPhiS_i: __Z14WelsCopy8x16_cPhiS_i,\n    /** @export */ _Z15WelsCopy16x16_cPhiS_i: __Z15WelsCopy16x16_cPhiS_i,\n    /** @export */ _Z17DeblockLumaEq4H_cPhiii: __Z17DeblockLumaEq4H_cPhiii,\n    /** @export */ _Z17DeblockLumaEq4V_cPhiii: __Z17DeblockLumaEq4V_cPhiii,\n    /** @export */ _Z17DeblockLumaLt4H_cPhiiiPa: __Z17DeblockLumaLt4H_cPhiiiPa,\n    /** @export */ _Z17DeblockLumaLt4V_cPhiiiPa: __Z17DeblockLumaLt4V_cPhiiiPa,\n    /** @export */ _Z18WelsNonZeroCount_cPa: __Z18WelsNonZeroCount_cPa,\n    /** @export */ _Z18WelsSampleSad4x4_cPhiS_i: __Z18WelsSampleSad4x4_cPhiS_i,\n    /** @export */ _Z18WelsSampleSad4x8_cPhiS_i: __Z18WelsSampleSad4x8_cPhiS_i,\n    /** @export */ _Z18WelsSampleSad8x4_cPhiS_i: __Z18WelsSampleSad8x4_cPhiS_i,\n    /** @export */ _Z18WelsSampleSad8x8_cPhiS_i: __Z18WelsSampleSad8x8_cPhiS_i,\n    /** @export */ _Z19DeblockChromaEq4H_cPhS_iii: __Z19DeblockChromaEq4H_cPhS_iii,\n    /** @export */ _Z19DeblockChromaEq4V_cPhS_iii: __Z19DeblockChromaEq4V_cPhS_iii,\n    /** @export */ _Z19DeblockChromaLt4H_cPhS_iiiPa: __Z19DeblockChromaLt4H_cPhS_iiiPa,\n    /** @export */ _Z19DeblockChromaLt4V_cPhS_iiiPa: __Z19DeblockChromaLt4V_cPhS_iiiPa,\n    /** @export */ _Z19WelsSampleSad16x8_cPhiS_i: __Z19WelsSampleSad16x8_cPhiS_i,\n    /** @export */ _Z19WelsSampleSad8x16_cPhiS_i: __Z19WelsSampleSad8x16_cPhiS_i,\n    /** @export */ _Z20WelsSampleSad16x16_cPhiS_i: __Z20WelsSampleSad16x16_cPhiS_i,\n    /** @export */ _Z21WelsI16x16LumaPredH_cPhS_i: __Z21WelsI16x16LumaPredH_cPhS_i,\n    /** @export */ _Z21WelsI16x16LumaPredV_cPhS_i: __Z21WelsI16x16LumaPredV_cPhS_i,\n    /** @export */ _Z22WelsSampleSadFour4x4_cPhiS_iPi: __Z22WelsSampleSadFour4x4_cPhiS_iPi,\n    /** @export */ _Z22WelsSampleSadFour4x8_cPhiS_iPi: __Z22WelsSampleSadFour4x8_cPhiS_iPi,\n    /** @export */ _Z22WelsSampleSadFour8x4_cPhiS_iPi: __Z22WelsSampleSadFour8x4_cPhiS_iPi,\n    /** @export */ _Z22WelsSampleSadFour8x8_cPhiS_iPi: __Z22WelsSampleSadFour8x8_cPhiS_iPi,\n    /** @export */ _Z23WelsSampleSadFour16x8_cPhiS_iPi: __Z23WelsSampleSadFour16x8_cPhiS_iPi,\n    /** @export */ _Z23WelsSampleSadFour8x16_cPhiS_iPi: __Z23WelsSampleSadFour8x16_cPhiS_iPi,\n    /** @export */ _Z24WelsSampleSadFour16x16_cPhiS_iPi: __Z24WelsSampleSadFour16x16_cPhiS_iPi,\n    /** @export */ _Z25WelsSetMemMultiplebytes_cPvjii: __Z25WelsSetMemMultiplebytes_cPvjii,\n    /** @export */ _ZN10WelsCommon11CWelsThread10SetEndFlagEb: __ZN10WelsCommon11CWelsThread10SetEndFlagEb,\n    /** @export */ _ZN10WelsCommon11CWelsThread10SetRunningEb: __ZN10WelsCommon11CWelsThread10SetRunningEb,\n    /** @export */ _ZN10WelsCommon11CWelsThread12SignalThreadEv: __ZN10WelsCommon11CWelsThread12SignalThreadEv,\n    /** @export */ _ZN10WelsCommon11CWelsThread4KillEv: __ZN10WelsCommon11CWelsThread4KillEv,\n    /** @export */ _ZN10WelsCommon11CWelsThread5StartEv: __ZN10WelsCommon11CWelsThread5StartEv,\n    /** @export */ _ZN10WelsCommon11CWelsThread6ThreadEv: __ZN10WelsCommon11CWelsThread6ThreadEv,\n    /** @export */ _ZN10WelsCommon11CWelsThread9TheThreadEPv: __ZN10WelsCommon11CWelsThread9TheThreadEPv,\n    /** @export */ _ZN10WelsCommon11CWelsThreadD0Ev: __ZN10WelsCommon11CWelsThreadD0Ev,\n    /** @export */ _ZN10WelsCommon11CWelsThreadD1Ev: __ZN10WelsCommon11CWelsThreadD1Ev,\n    /** @export */ _ZN10WelsCommon12CMemoryAlignD0Ev: __ZN10WelsCommon12CMemoryAlignD0Ev,\n    /** @export */ _ZN10WelsCommon12CMemoryAlignD1Ev: __ZN10WelsCommon12CMemoryAlignD1Ev,\n    /** @export */ _ZN10WelsCommon15CWelsTaskThread11ExecuteTaskEv: __ZN10WelsCommon15CWelsTaskThread11ExecuteTaskEv,\n    /** @export */ _ZN10WelsCommon15CWelsTaskThreadD0Ev: __ZN10WelsCommon15CWelsTaskThreadD0Ev,\n    /** @export */ _ZN10WelsCommon15CWelsTaskThreadD1Ev: __ZN10WelsCommon15CWelsTaskThreadD1Ev,\n    /** @export */ _ZN10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE: __ZN10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE,\n    /** @export */ _ZN10WelsCommon15CWelsThreadPool11ExecuteTaskEv: __ZN10WelsCommon15CWelsThreadPool11ExecuteTaskEv,\n    /** @export */ _ZN10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE: __ZN10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE,\n    /** @export */ _ZN10WelsCommon15CWelsThreadPool11m_iRefCountE: __ZN10WelsCommon15CWelsThreadPool11m_iRefCountE,\n    /** @export */ _ZN10WelsCommon15CWelsThreadPool15m_iMaxThreadNumE: __ZN10WelsCommon15CWelsThreadPool15m_iMaxThreadNumE,\n    /** @export */ _ZN10WelsCommon15CWelsThreadPool17m_pThreadPoolSelfE: __ZN10WelsCommon15CWelsThreadPool17m_pThreadPoolSelfE,\n    /** @export */ _ZN10WelsCommon15CWelsThreadPoolD0Ev: __ZN10WelsCommon15CWelsThreadPoolD0Ev,\n    /** @export */ _ZN10WelsCommon15CWelsThreadPoolD1Ev: __ZN10WelsCommon15CWelsThreadPoolD1Ev,\n    /** @export */ _ZN10WelsCommon15g_ksLevelLimitsE: __ZN10WelsCommon15g_ksLevelLimitsE,\n    /** @export */ _ZN10WelsCommon17g_kuiDequantCoeffE: __ZN10WelsCommon17g_kuiDequantCoeffE,\n    /** @export */ _ZN10WelsCommon18g_kuiCabacRangeLpsE: __ZN10WelsCommon18g_kuiCabacRangeLpsE,\n    /** @export */ _ZN10WelsCommon18g_kuiChromaQpTableE: __ZN10WelsCommon18g_kuiChromaQpTableE,\n    /** @export */ _ZN10WelsCommon19g_kuiCache30ScanIdxE: __ZN10WelsCommon19g_kuiCache30ScanIdxE,\n    /** @export */ _ZN10WelsCommon19g_kuiGolombUELengthE: __ZN10WelsCommon19g_kuiGolombUELengthE,\n    /** @export */ _ZN10WelsCommon20g_kuiMbCountScan4IdxE: __ZN10WelsCommon20g_kuiMbCountScan4IdxE,\n    /** @export */ _ZN10WelsCommon20g_kuiStateTransTableE: __ZN10WelsCommon20g_kuiStateTransTableE,\n    /** @export */ _ZN10WelsCommon22CWelsNonDuplicatedListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_: __ZN10WelsCommon22CWelsNonDuplicatedListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_,\n    /** @export */ _ZN10WelsCommon22CWelsNonDuplicatedListINS_15CWelsTaskThreadEE9push_backEPS1_: __ZN10WelsCommon22CWelsNonDuplicatedListINS_15CWelsTaskThreadEE9push_backEPS1_,\n    /** @export */ _ZN10WelsCommon22CWelsNonDuplicatedListINS_9IWelsTaskEE9push_backEPS1_: __ZN10WelsCommon22CWelsNonDuplicatedListINS_9IWelsTaskEE9push_backEPS1_,\n    /** @export */ _ZN10WelsCommon25g_kiCabacGlobalContextIdxE: __ZN10WelsCommon25g_kiCabacGlobalContextIdxE,\n    /** @export */ _ZN10WelsCommon25g_kuiCache48CountScan4IdxE: __ZN10WelsCommon25g_kuiCache48CountScan4IdxE,\n    /** @export */ _ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE10ExpandListEv: __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE10ExpandListEv,\n    /** @export */ _ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE11InitStorageEPNS_5SNodeIS2_EEi: __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE11InitStorageEPNS_5SNodeIS2_EEi,\n    /** @export */ _ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE12ResetStorageEv: __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE12ResetStorageEv,\n    /** @export */ _ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE7getNodeEi: __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE7getNodeEi,\n    /** @export */ _ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE8findNodeEPS2_: __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE8findNodeEPS2_,\n    /** @export */ _ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9pop_frontEv: __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9pop_frontEv,\n    /** @export */ _ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_: __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEE9push_backEPS2_,\n    /** @export */ _ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEED2Ev: __ZN10WelsCommon9CWelsListIN7WelsEnc13CWelsBaseTaskEED2Ev,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE10ExpandListEv: __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE10ExpandListEv,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE11InitStorageEPNS_5SNodeIS1_EEi: __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE11InitStorageEPNS_5SNodeIS1_EEi,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE12ResetStorageEv: __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE12ResetStorageEv,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE5eraseEPS1_: __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE5eraseEPS1_,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE8findNodeEPS1_: __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE8findNodeEPS1_,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9pop_frontEv: __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9pop_frontEv,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9push_backEPS1_: __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEE9push_backEPS1_,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEED2Ev: __ZN10WelsCommon9CWelsListINS_15CWelsTaskThreadEED2Ev,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_9IWelsTaskEE10ExpandListEv: __ZN10WelsCommon9CWelsListINS_9IWelsTaskEE10ExpandListEv,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_9IWelsTaskEE11InitStorageEPNS_5SNodeIS1_EEi: __ZN10WelsCommon9CWelsListINS_9IWelsTaskEE11InitStorageEPNS_5SNodeIS1_EEi,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_9IWelsTaskEE12ResetStorageEv: __ZN10WelsCommon9CWelsListINS_9IWelsTaskEE12ResetStorageEv,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_9IWelsTaskEE8findNodeEPS1_: __ZN10WelsCommon9CWelsListINS_9IWelsTaskEE8findNodeEPS1_,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9pop_frontEv: __ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9pop_frontEv,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9push_backEPS1_: __ZN10WelsCommon9CWelsListINS_9IWelsTaskEE9push_backEPS1_,\n    /** @export */ _ZN10WelsCommon9CWelsListINS_9IWelsTaskEED2Ev: __ZN10WelsCommon9CWelsListINS_9IWelsTaskEED2Ev,\n    /** @export */ _ZN10WelsCommon9CWelsLockC2Ev: __ZN10WelsCommon9CWelsLockC2Ev,\n    /** @export */ _ZN10WelsCommon9CWelsLockD0Ev: __ZN10WelsCommon9CWelsLockD0Ev,\n    /** @export */ _ZN10WelsCommon9CWelsLockD2Ev: __ZN10WelsCommon9CWelsLockD2Ev,\n    /** @export */ _ZN14welsCodecTrace16StaticCodecTraceEPviPKcS0_: __ZN14welsCodecTrace16StaticCodecTraceEPviPKcS0_,\n    /** @export */ _ZN6WelsVP12CVpFrameWork14SpecialFeatureEiPvS1_: __ZN6WelsVP12CVpFrameWork14SpecialFeatureEiPvS1_,\n    /** @export */ _ZN6WelsVP12CVpFrameWork3GetEiPv: __ZN6WelsVP12CVpFrameWork3GetEiPv,\n    /** @export */ _ZN6WelsVP12CVpFrameWork3SetEiPv: __ZN6WelsVP12CVpFrameWork3SetEiPv,\n    /** @export */ _ZN6WelsVP12CVpFrameWork4InitEiPv: __ZN6WelsVP12CVpFrameWork4InitEiPv,\n    /** @export */ _ZN6WelsVP12CVpFrameWork5FlushEi: __ZN6WelsVP12CVpFrameWork5FlushEi,\n    /** @export */ _ZN6WelsVP12CVpFrameWork6UninitEi: __ZN6WelsVP12CVpFrameWork6UninitEi,\n    /** @export */ _ZN6WelsVP12CVpFrameWork7ProcessEiP7SPixMapS2_: __ZN6WelsVP12CVpFrameWork7ProcessEiP7SPixMapS2_,\n    /** @export */ _ZN6WelsVP12CVpFrameWorkD0Ev: __ZN6WelsVP12CVpFrameWorkD0Ev,\n    /** @export */ _ZN6WelsVP12CVpFrameWorkD1Ev: __ZN6WelsVP12CVpFrameWorkD1Ev,\n    /** @export */ _ZN6WelsVP12GomSampleSadEPjPiS1_h: __ZN6WelsVP12GomSampleSadEPjPiS1_h,\n    /** @export */ _ZN6WelsVP12VAACalcSad_cEPKhS1_iiiPiS2_: __ZN6WelsVP12VAACalcSad_cEPKhS1_iiiPiS2_,\n    /** @export */ _ZN6WelsVP13CDownsampling7ProcessEiP7SPixMapS2_: __ZN6WelsVP13CDownsampling7ProcessEiP7SPixMapS2_,\n    /** @export */ _ZN6WelsVP13CDownsamplingD0Ev: __ZN6WelsVP13CDownsamplingD0Ev,\n    /** @export */ _ZN6WelsVP13CDownsamplingD1Ev: __ZN6WelsVP13CDownsamplingD1Ev,\n    /** @export */ _ZN6WelsVP14CImageRotating7ProcessEiP7SPixMapS2_: __ZN6WelsVP14CImageRotating7ProcessEiP7SPixMapS2_,\n    /** @export */ _ZN6WelsVP14CImageRotatingD0Ev: __ZN6WelsVP14CImageRotatingD0Ev,\n    /** @export */ _ZN6WelsVP14CImageRotatingD1Ev: __ZN6WelsVP14CImageRotatingD1Ev,\n    /** @export */ _ZN6WelsVP14SpecialFeatureEPviS0_S0_: __ZN6WelsVP14SpecialFeatureEPviS0_S0_,\n    /** @export */ _ZN6WelsVP15CVAACalculation3SetEiPv: __ZN6WelsVP15CVAACalculation3SetEiPv,\n    /** @export */ _ZN6WelsVP15CVAACalculation7ProcessEiP7SPixMapS2_: __ZN6WelsVP15CVAACalculation7ProcessEiP7SPixMapS2_,\n    /** @export */ _ZN6WelsVP15CVAACalculationD0Ev: __ZN6WelsVP15CVAACalculationD0Ev,\n    /** @export */ _ZN6WelsVP15CVAACalculationD1Ev: __ZN6WelsVP15CVAACalculationD1Ev,\n    /** @export */ _ZN6WelsVP15VAACalcSadBgd_cEPKhS1_iiiPiS2_S2_Ph: __ZN6WelsVP15VAACalcSadBgd_cEPKhS1_iiiPiS2_S2_Ph,\n    /** @export */ _ZN6WelsVP15VAACalcSadSsd_cEPKhS1_iiiPiS2_S2_S2_S2_: __ZN6WelsVP15VAACalcSadSsd_cEPKhS1_iiiPiS2_S2_S2_S2_,\n    /** @export */ _ZN6WelsVP15VAACalcSadVar_cEPKhS1_iiiPiS2_S2_S2_: __ZN6WelsVP15VAACalcSadVar_cEPKhS1_iiiPiS2_S2_S2_,\n    /** @export */ _ZN6WelsVP16CScrollDetection3GetEiPv: __ZN6WelsVP16CScrollDetection3GetEiPv,\n    /** @export */ _ZN6WelsVP16CScrollDetection3SetEiPv: __ZN6WelsVP16CScrollDetection3SetEiPv,\n    /** @export */ _ZN6WelsVP16CScrollDetection7ProcessEiP7SPixMapS2_: __ZN6WelsVP16CScrollDetection7ProcessEiP7SPixMapS2_,\n    /** @export */ _ZN6WelsVP16CScrollDetectionD0Ev: __ZN6WelsVP16CScrollDetectionD0Ev,\n    /** @export */ _ZN6WelsVP16ImageRotate90D_cEPhjjjS0_: __ZN6WelsVP16ImageRotate90D_cEPhjjjS0_,\n    /** @export */ _ZN6WelsVP17ImageRotate180D_cEPhjjjS0_: __ZN6WelsVP17ImageRotate180D_cEPhjjjS0_,\n    /** @export */ _ZN6WelsVP17ImageRotate270D_cEPhjjjS0_: __ZN6WelsVP17ImageRotate270D_cEPhjjjS0_,\n    /** @export */ _ZN6WelsVP18VAACalcSadSsdBgd_cEPKhS1_iiiPiS2_S2_S2_S2_S2_Ph: __ZN6WelsVP18VAACalcSadSsdBgd_cEPKhS1_iiiPiS2_S2_S2_S2_S2_Ph,\n    /** @export */ _ZN6WelsVP19CComplexityAnalysis3GetEiPv: __ZN6WelsVP19CComplexityAnalysis3GetEiPv,\n    /** @export */ _ZN6WelsVP19CComplexityAnalysis3SetEiPv: __ZN6WelsVP19CComplexityAnalysis3SetEiPv,\n    /** @export */ _ZN6WelsVP19CComplexityAnalysis7ProcessEiP7SPixMapS2_: __ZN6WelsVP19CComplexityAnalysis7ProcessEiP7SPixMapS2_,\n    /** @export */ _ZN6WelsVP19CComplexityAnalysisD0Ev: __ZN6WelsVP19CComplexityAnalysisD0Ev,\n    /** @export */ _ZN6WelsVP19CComplexityAnalysisD1Ev: __ZN6WelsVP19CComplexityAnalysisD1Ev,\n    /** @export */ _ZN6WelsVP20CBackgroundDetection17BackgroundErosionEPNS_13SBackgroundOUEPS2_: __ZN6WelsVP20CBackgroundDetection17BackgroundErosionEPNS_13SBackgroundOUEPS2_,\n    /** @export */ _ZN6WelsVP20CBackgroundDetection18ForegroundDilationEPNS_13SBackgroundOUEPS2_PNS0_9vBGDParamEi: __ZN6WelsVP20CBackgroundDetection18ForegroundDilationEPNS_13SBackgroundOUEPS2_PNS0_9vBGDParamEi,\n    /** @export */ _ZN6WelsVP20CBackgroundDetection21AllocateOUArrayMemoryEii: __ZN6WelsVP20CBackgroundDetection21AllocateOUArrayMemoryEii,\n    /** @export */ _ZN6WelsVP20CBackgroundDetection22CalculateAsdChromaEdgeEPhS1_i: __ZN6WelsVP20CBackgroundDetection22CalculateAsdChromaEdgeEPhS1_i,\n    /** @export */ _ZN6WelsVP20CBackgroundDetection22UpperOUForegroundCheckEPNS_13SBackgroundOUEPaii: __ZN6WelsVP20CBackgroundDetection22UpperOUForegroundCheckEPNS_13SBackgroundOUEPaii,\n    /** @export */ _ZN6WelsVP20CBackgroundDetection24ForegroundDilation23LumaEPNS_13SBackgroundOUEPS2_: __ZN6WelsVP20CBackgroundDetection24ForegroundDilation23LumaEPNS_13SBackgroundOUEPS2_,\n    /** @export */ _ZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamE: __ZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamE,\n    /** @export */ _ZN6WelsVP20CBackgroundDetection3SetEiPv: __ZN6WelsVP20CBackgroundDetection3SetEiPv,\n    /** @export */ _ZN6WelsVP20CBackgroundDetection7ProcessEiP7SPixMapS2_: __ZN6WelsVP20CBackgroundDetection7ProcessEiP7SPixMapS2_,\n    /** @export */ _ZN6WelsVP20CBackgroundDetectionD0Ev: __ZN6WelsVP20CBackgroundDetectionD0Ev,\n    /** @export */ _ZN6WelsVP20CBackgroundDetectionD1Ev: __ZN6WelsVP20CBackgroundDetectionD1Ev,\n    /** @export */ _ZN6WelsVP21CAdaptiveQuantization3GetEiPv: __ZN6WelsVP21CAdaptiveQuantization3GetEiPv,\n    /** @export */ _ZN6WelsVP21CAdaptiveQuantization3SetEiPv: __ZN6WelsVP21CAdaptiveQuantization3SetEiPv,\n    /** @export */ _ZN6WelsVP21CAdaptiveQuantization7ProcessEiP7SPixMapS2_: __ZN6WelsVP21CAdaptiveQuantization7ProcessEiP7SPixMapS2_,\n    /** @export */ _ZN6WelsVP21CAdaptiveQuantizationD0Ev: __ZN6WelsVP21CAdaptiveQuantizationD0Ev,\n    /** @export */ _ZN6WelsVP21CAdaptiveQuantizationD1Ev: __ZN6WelsVP21CAdaptiveQuantizationD1Ev,\n    /** @export */ _ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3GetEiPv: __ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3GetEiPv,\n    /** @export */ _ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3SetEiPv: __ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE3SetEiPv,\n    /** @export */ _ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE7ProcessEiP7SPixMapS4_: __ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEE7ProcessEiP7SPixMapS4_,\n    /** @export */ _ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEC2E8EMethodsi: __ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEC2E8EMethodsi,\n    /** @export */ _ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED0Ev: __ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED0Ev,\n    /** @export */ _ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED2Ev: __ZN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEED2Ev,\n    /** @export */ _ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3GetEiPv: __ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3GetEiPv,\n    /** @export */ _ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3SetEiPv: __ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE3SetEiPv,\n    /** @export */ _ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE7ProcessEiP7SPixMapS4_: __ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEE7ProcessEiP7SPixMapS4_,\n    /** @export */ _ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEC2E8EMethodsi: __ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEC2E8EMethodsi,\n    /** @export */ _ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED0Ev: __ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED0Ev,\n    /** @export */ _ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED2Ev: __ZN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEED2Ev,\n    /** @export */ _ZN6WelsVP21SampleVariance16x16_cEPhiS0_iP18SMotionTextureUnit: __ZN6WelsVP21SampleVariance16x16_cEPhiS0_iP18SMotionTextureUnit,\n    /** @export */ _ZN6WelsVP22BilateralLumaFilter8_cEPhi: __ZN6WelsVP22BilateralLumaFilter8_cEPhi,\n    /** @export */ _ZN6WelsVP23WaverageChromaFilter8_cEPhi: __ZN6WelsVP23WaverageChromaFilter8_cEPhi,\n    /** @export */ _ZN6WelsVP25CComplexityAnalysisScreen3GetEiPv: __ZN6WelsVP25CComplexityAnalysisScreen3GetEiPv,\n    /** @export */ _ZN6WelsVP25CComplexityAnalysisScreen3SetEiPv: __ZN6WelsVP25CComplexityAnalysisScreen3SetEiPv,\n    /** @export */ _ZN6WelsVP25CComplexityAnalysisScreen7ProcessEiP7SPixMapS2_: __ZN6WelsVP25CComplexityAnalysisScreen7ProcessEiP7SPixMapS2_,\n    /** @export */ _ZN6WelsVP25CComplexityAnalysisScreenD0Ev: __ZN6WelsVP25CComplexityAnalysisScreenD0Ev,\n    /** @export */ _ZN6WelsVP25CComplexityAnalysisScreenD1Ev: __ZN6WelsVP25CComplexityAnalysisScreenD1Ev,\n    /** @export */ _ZN6WelsVP25CSceneChangeDetectorVideoD0Ev: __ZN6WelsVP25CSceneChangeDetectorVideoD0Ev,\n    /** @export */ _ZN6WelsVP25CSceneChangeDetectorVideoD2Ev: __ZN6WelsVP25CSceneChangeDetectorVideoD2Ev,\n    /** @export */ _ZN6WelsVP25CSceneChangeDetectorVideoclERNS_11SLocalParamE: __ZN6WelsVP25CSceneChangeDetectorVideoclERNS_11SLocalParamE,\n    /** @export */ _ZN6WelsVP26CSceneChangeDetectorScreenD0Ev: __ZN6WelsVP26CSceneChangeDetectorScreenD0Ev,\n    /** @export */ _ZN6WelsVP26CSceneChangeDetectorScreenclERNS_11SLocalParamE: __ZN6WelsVP26CSceneChangeDetectorScreenclERNS_11SLocalParamE,\n    /** @export */ _ZN6WelsVP27DyadicBilinearDownsampler_cEPhiS0_iii: __ZN6WelsVP27DyadicBilinearDownsampler_cEPhiS0_iii,\n    /** @export */ _ZN6WelsVP28GomSampleSadExceptBackgroundEPjPiS1_h: __ZN6WelsVP28GomSampleSadExceptBackgroundEPjPiS1_h,\n    /** @export */ _ZN6WelsVP32GeneralBilinearFastDownsampler_cEPhiiiS0_iii: __ZN6WelsVP32GeneralBilinearFastDownsampler_cEPhiiiS0_iii,\n    /** @export */ _ZN6WelsVP34DyadicBilinearQuarterDownsampler_cEPhiS0_iii: __ZN6WelsVP34DyadicBilinearQuarterDownsampler_cEPhiS0_iii,\n    /** @export */ _ZN6WelsVP35DyadicBilinearOneThirdDownsampler_cEPhiS0_iii: __ZN6WelsVP35DyadicBilinearOneThirdDownsampler_cEPhiS0_iii,\n    /** @export */ _ZN6WelsVP36GeneralBilinearAccurateDownsampler_cEPhiiiS0_iii: __ZN6WelsVP36GeneralBilinearAccurateDownsampler_cEPhiiiS0_iii,\n    /** @export */ _ZN6WelsVP3GetEPviS0_: __ZN6WelsVP3GetEPviS0_,\n    /** @export */ _ZN6WelsVP3SetEPviS0_: __ZN6WelsVP3SetEPviS0_,\n    /** @export */ _ZN6WelsVP4InitEPviS0_: __ZN6WelsVP4InitEPviS0_,\n    /** @export */ _ZN6WelsVP5FlushEPvi: __ZN6WelsVP5FlushEPvi,\n    /** @export */ _ZN6WelsVP6UninitEPvi: __ZN6WelsVP6UninitEPvi,\n    /** @export */ _ZN6WelsVP7ProcessEPviP7SPixMapS2_: __ZN6WelsVP7ProcessEPviP7SPixMapS2_,\n    /** @export */ _ZN6WelsVP9CDenoiser7ProcessEiP7SPixMapS2_: __ZN6WelsVP9CDenoiser7ProcessEiP7SPixMapS2_,\n    /** @export */ _ZN6WelsVP9CDenoiserD0Ev: __ZN6WelsVP9CDenoiserD0Ev,\n    /** @export */ _ZN6WelsVP9CDenoiserD1Ev: __ZN6WelsVP9CDenoiserD1Ev,\n    /** @export */ _ZN6WelsVP9IStrategy14SpecialFeatureEiPvS1_: __ZN6WelsVP9IStrategy14SpecialFeatureEiPvS1_,\n    /** @export */ _ZN6WelsVP9IStrategy3GetEiPv: __ZN6WelsVP9IStrategy3GetEiPv,\n    /** @export */ _ZN6WelsVP9IStrategy3SetEiPv: __ZN6WelsVP9IStrategy3SetEiPv,\n    /** @export */ _ZN6WelsVP9IStrategy4InitEiPv: __ZN6WelsVP9IStrategy4InitEiPv,\n    /** @export */ _ZN6WelsVP9IStrategy5FlushEi: __ZN6WelsVP9IStrategy5FlushEi,\n    /** @export */ _ZN6WelsVP9IStrategy6UninitEi: __ZN6WelsVP9IStrategy6UninitEi,\n    /** @export */ _ZN7IWelsVPD2Ev: __ZN7IWelsVPD2Ev,\n    /** @export */ _ZN7WelsEnc10IsMbStaticEPi15EStaticBlockIdc: __ZN7WelsEnc10IsMbStaticEPi15EStaticBlockIdc,\n    /** @export */ _ZN7WelsEnc10TagPicture8SetUnrefEv: __ZN7WelsEnc10TagPicture8SetUnrefEv,\n    /** @export */ _ZN7WelsEnc11CheckBorderEiiiiii: __ZN7WelsEnc11CheckBorderEiiiiii,\n    /** @export */ _ZN7WelsEnc11WelsDctT4_cEPsPhiS1_i: __ZN7WelsEnc11WelsDctT4_cEPsPhiS1_i,\n    /** @export */ _ZN7WelsEnc11g_kiQuantMFE: __ZN7WelsEnc11g_kiQuantMFE,\n    /** @export */ _ZN7WelsEnc12QStepx16ByQpE: __ZN7WelsEnc12QStepx16ByQpE,\n    /** @export */ _ZN7WelsEnc12UpdateMbMv_cEPNS_9SMVUnitXYES0_: __ZN7WelsEnc12UpdateMbMv_cEPNS_9SMVUnitXYES0_,\n    /** @export */ _ZN7WelsEnc13CWelsBaseTaskD0Ev: __ZN7WelsEnc13CWelsBaseTaskD0Ev,\n    /** @export */ _ZN7WelsEnc13CWelsBaseTaskD1Ev: __ZN7WelsEnc13CWelsBaseTaskD1Ev,\n    /** @export */ _ZN7WelsEnc13GetBsPosCabacEPNS_8TagSliceE: __ZN7WelsEnc13GetBsPosCabacEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc13GetBsPosCavlcEPNS_8TagSliceE: __ZN7WelsEnc13GetBsPosCavlcEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc13WelsMdInterMbEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE: __ZN7WelsEnc13WelsMdInterMbEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE,\n    /** @export */ _ZN7WelsEnc14WelsCodePSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE: __ZN7WelsEnc14WelsCodePSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc14WelsQuant4x4_cEPsPKsS2_: __ZN7WelsEnc14WelsQuant4x4_cEPsPKsS2_,\n    /** @export */ _ZN7WelsEnc15CWelsPreProcessD0Ev: __ZN7WelsEnc15CWelsPreProcessD0Ev,\n    /** @export */ _ZN7WelsEnc15CWelsPreProcessD1Ev: __ZN7WelsEnc15CWelsPreProcessD1Ev,\n    /** @export */ _ZN7WelsEnc15CWelsPreProcessD2Ev: __ZN7WelsEnc15CWelsPreProcessD2Ev,\n    /** @export */ _ZN7WelsEnc15JudgeScrollSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE: __ZN7WelsEnc15JudgeScrollSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE,\n    /** @export */ _ZN7WelsEnc15JudgeStaticSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE: __ZN7WelsEnc15JudgeStaticSkipEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_10TagMbCacheEPNS_9TagWelsMDE,\n    /** @export */ _ZN7WelsEnc15UpdateFMESwitchEPNS_10TagDqLayerE: __ZN7WelsEnc15UpdateFMESwitchEPNS_10TagDqLayerE,\n    /** @export */ _ZN7WelsEnc15WelsDctFourT4_cEPsPhiS1_i: __ZN7WelsEnc15WelsDctFourT4_cEPsPhiS1_i,\n    /** @export */ _ZN7WelsEnc15WelsIDctT4Rec_cEPhiS0_iPs: __ZN7WelsEnc15WelsIDctT4Rec_cEPhiS0_iPs,\n    /** @export */ _ZN7WelsEnc15WelsISliceMdEncEPNS_13TagWelsEncCtxEPNS_8TagSliceE: __ZN7WelsEnc15WelsISliceMdEncEPNS_13TagWelsEncCtxEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc15WelsRcMbInitGomEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE: __ZN7WelsEnc15WelsRcMbInitGomEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc15WelsScan4x4Ac_cEPsS0_: __ZN7WelsEnc15WelsScan4x4Ac_cEPsS0_,\n    /** @export */ _ZN7WelsEnc15g_kiQpCostTableE: __ZN7WelsEnc15g_kiQpCostTableE,\n    /** @export */ _ZN7WelsEnc16LineFullSearch_cEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPtiissb: __ZN7WelsEnc16LineFullSearch_cEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPtiissb,\n    /** @export */ _ZN7WelsEnc16WelsDequant4x4_cEPsPKt: __ZN7WelsEnc16WelsDequant4x4_cEPsPKt,\n    /** @export */ _ZN7WelsEnc16WelsQuant4x4Dc_cEPsss: __ZN7WelsEnc16WelsQuant4x4Dc_cEPsss,\n    /** @export */ _ZN7WelsEnc16WelsSetMemZero_cEPvi: __ZN7WelsEnc16WelsSetMemZero_cEPvi,\n    /** @export */ _ZN7WelsEnc16g_kiQuantInterFFE: __ZN7WelsEnc16g_kiQuantInterFFE,\n    /** @export */ _ZN7WelsEnc17CalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii: __ZN7WelsEnc17CalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii,\n    /** @export */ _ZN7WelsEnc17MeRefineQuarPixelEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_18TagMeRefinePointerEiiPNS_13TagQuarParamsEi: __ZN7WelsEnc17MeRefineQuarPixelEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_18TagMeRefinePointerEiiPNS_13TagQuarParamsEi,\n    /** @export */ _ZN7WelsEnc17WelsDiamondSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii: __ZN7WelsEnc17WelsDiamondSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii,\n    /** @export */ _ZN7WelsEnc17WelsScan4x4DcAc_cEPsS0_: __ZN7WelsEnc17WelsScan4x4DcAc_cEPsS0_,\n    /** @export */ _ZN7WelsEnc17g_kiMapModeI16x16E: __ZN7WelsEnc17g_kiMapModeI16x16E,\n    /** @export */ _ZN7WelsEnc17g_kuiVlcRunBeforeE: __ZN7WelsEnc17g_kuiVlcRunBeforeE,\n    /** @export */ _ZN7WelsEnc18CheckDirectionalMvEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi: __ZN7WelsEnc18CheckDirectionalMvEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi,\n    /** @export */ _ZN7WelsEnc18DeblockingBSCalc_cEPNS_22TagWelsFuncPointerListEPNS_5TagMBEPA4_A4_hjiii: __ZN7WelsEnc18DeblockingBSCalc_cEPNS_22TagWelsFuncPointerListEPNS_5TagMBEPA4_A4_hjiii,\n    /** @export */ _ZN7WelsEnc18IsMbScrolledStaticEPi: __ZN7WelsEnc18IsMbScrolledStaticEPi,\n    /** @export */ _ZN7WelsEnc18SetScrollingMvToMdEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE: __ZN7WelsEnc18SetScrollingMvToMdEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE,\n    /** @export */ _ZN7WelsEnc18StashMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi: __ZN7WelsEnc18StashMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi,\n    /** @export */ _ZN7WelsEnc18StashMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi: __ZN7WelsEnc18StashMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceEi,\n    /** @export */ _ZN7WelsEnc18WelsHadamardT4Dc_cEPsS0_: __ZN7WelsEnc18WelsHadamardT4Dc_cEPsS0_,\n    /** @export */ _ZN7WelsEnc18WelsIChromaPredH_cEPhS0_i: __ZN7WelsEnc18WelsIChromaPredH_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc18WelsIChromaPredV_cEPhS0_i: __ZN7WelsEnc18WelsIChromaPredV_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc18WelsQuantFour4x4_cEPsPKsS2_: __ZN7WelsEnc18WelsQuantFour4x4_cEPsPKsS2_,\n    /** @export */ _ZN7WelsEnc18g_kuiEncNcMapTableE: __ZN7WelsEnc18g_kuiEncNcMapTableE,\n    /** @export */ _ZN7WelsEnc18g_kuiSmb4AddrIn256E: __ZN7WelsEnc18g_kuiSmb4AddrIn256E,\n    /** @export */ _ZN7WelsEnc18g_kuiVlcCoeffTokenE: __ZN7WelsEnc18g_kuiVlcCoeffTokenE,\n    /** @export */ _ZN7WelsEnc18g_kuiVlcTotalZerosE: __ZN7WelsEnc18g_kuiVlcTotalZerosE,\n    /** @export */ _ZN7WelsEnc19CWelsH264SVCEncoder10InitializeEPK15TagEncParamBase: __ZN7WelsEnc19CWelsH264SVCEncoder10InitializeEPK15TagEncParamBase,\n    /** @export */ _ZN7WelsEnc19CWelsH264SVCEncoder11EncodeFrameEPK16Source_Picture_sP12SFrameBSInfo: __ZN7WelsEnc19CWelsH264SVCEncoder11EncodeFrameEPK16Source_Picture_sP12SFrameBSInfo,\n    /** @export */ _ZN7WelsEnc19CWelsH264SVCEncoder12UninitializeEv: __ZN7WelsEnc19CWelsH264SVCEncoder12UninitializeEv,\n    /** @export */ _ZN7WelsEnc19CWelsH264SVCEncoder13InitializeExtEPK14TagEncParamExt: __ZN7WelsEnc19CWelsH264SVCEncoder13InitializeExtEPK14TagEncParamExt,\n    /** @export */ _ZN7WelsEnc19CWelsH264SVCEncoder15ForceIntraFrameEbi: __ZN7WelsEnc19CWelsH264SVCEncoder15ForceIntraFrameEbi,\n    /** @export */ _ZN7WelsEnc19CWelsH264SVCEncoder16GetDefaultParamsEP14TagEncParamExt: __ZN7WelsEnc19CWelsH264SVCEncoder16GetDefaultParamsEP14TagEncParamExt,\n    /** @export */ _ZN7WelsEnc19CWelsH264SVCEncoder19EncodeFrameInternalEPK16Source_Picture_sP12SFrameBSInfo: __ZN7WelsEnc19CWelsH264SVCEncoder19EncodeFrameInternalEPK16Source_Picture_sP12SFrameBSInfo,\n    /** @export */ _ZN7WelsEnc19CWelsH264SVCEncoder19EncodeParameterSetsEP12SFrameBSInfo: __ZN7WelsEnc19CWelsH264SVCEncoder19EncodeParameterSetsEP12SFrameBSInfo,\n    /** @export */ _ZN7WelsEnc19CWelsH264SVCEncoder9GetOptionE14ENCODER_OPTIONPv: __ZN7WelsEnc19CWelsH264SVCEncoder9GetOptionE14ENCODER_OPTIONPv,\n    /** @export */ _ZN7WelsEnc19CWelsH264SVCEncoder9SetOptionE14ENCODER_OPTIONPv: __ZN7WelsEnc19CWelsH264SVCEncoder9SetOptionE14ENCODER_OPTIONPv,\n    /** @export */ _ZN7WelsEnc19CWelsH264SVCEncoderD0Ev: __ZN7WelsEnc19CWelsH264SVCEncoderD0Ev,\n    /** @export */ _ZN7WelsEnc19CWelsH264SVCEncoderD1Ev: __ZN7WelsEnc19CWelsH264SVCEncoderD1Ev,\n    /** @export */ _ZN7WelsEnc19CWelsTaskManageBase11CreateTasksEPNS_13TagWelsEncCtxEi: __ZN7WelsEnc19CWelsTaskManageBase11CreateTasksEPNS_13TagWelsEncCtxEi,\n    /** @export */ _ZN7WelsEnc19CWelsTaskManageBase12ExecuteTasksENS_13CWelsBaseTask9ETaskTypeE: __ZN7WelsEnc19CWelsTaskManageBase12ExecuteTasksENS_13CWelsBaseTask9ETaskTypeE,\n    /** @export */ _ZN7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv: __ZN7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv,\n    /** @export */ _ZN7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv: __ZN7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv,\n    /** @export */ _ZN7WelsEnc19CWelsTaskManageBase22GetThreadPoolThreadNumEv: __ZN7WelsEnc19CWelsTaskManageBase22GetThreadPoolThreadNumEv,\n    /** @export */ _ZN7WelsEnc19CWelsTaskManageBase4InitEPNS_13TagWelsEncCtxE: __ZN7WelsEnc19CWelsTaskManageBase4InitEPNS_13TagWelsEncCtxE,\n    /** @export */ _ZN7WelsEnc19CWelsTaskManageBase6UninitEv: __ZN7WelsEnc19CWelsTaskManageBase6UninitEv,\n    /** @export */ _ZN7WelsEnc19CWelsTaskManageBase9InitFrameEi: __ZN7WelsEnc19CWelsTaskManageBase9InitFrameEi,\n    /** @export */ _ZN7WelsEnc19CWelsTaskManageBaseD0Ev: __ZN7WelsEnc19CWelsTaskManageBaseD0Ev,\n    /** @export */ _ZN7WelsEnc19CWelsTaskManageBaseD1Ev: __ZN7WelsEnc19CWelsTaskManageBaseD1Ev,\n    /** @export */ _ZN7WelsEnc19UpdateFMESwitchNullEPNS_10TagDqLayerE: __ZN7WelsEnc19UpdateFMESwitchNullEPNS_10TagDqLayerE,\n    /** @export */ _ZN7WelsEnc19WelsI4x4LumaPredH_cEPhS0_i: __ZN7WelsEnc19WelsI4x4LumaPredH_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc19WelsI4x4LumaPredV_cEPhS0_i: __ZN7WelsEnc19WelsI4x4LumaPredV_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc19WelsIChromaPredDc_cEPhS0_i: __ZN7WelsEnc19WelsIChromaPredDc_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc19WelsIDctFourT4Rec_cEPhiS0_iPs: __ZN7WelsEnc19WelsIDctFourT4Rec_cEPhiS0_iPs,\n    /** @export */ _ZN7WelsEnc19WelsMdUpdateBGDInfoEPNS_10TagDqLayerEPNS_5TagMBEbi: __ZN7WelsEnc19WelsMdUpdateBGDInfoEPNS_10TagDqLayerEPNS_5TagMBEbi,\n    /** @export */ _ZN7WelsEnc19WelsRcMbInitDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE: __ZN7WelsEnc19WelsRcMbInitDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc19WelsSampleSatd4x4_cEPhiS0_i: __ZN7WelsEnc19WelsSampleSatd4x4_cEPhiS0_i,\n    /** @export */ _ZN7WelsEnc19WelsSampleSatd4x8_cEPhiS0_i: __ZN7WelsEnc19WelsSampleSatd4x8_cEPhiS0_i,\n    /** @export */ _ZN7WelsEnc19WelsSampleSatd8x4_cEPhiS0_i: __ZN7WelsEnc19WelsSampleSatd8x4_cEPhiS0_i,\n    /** @export */ _ZN7WelsEnc19WelsSampleSatd8x8_cEPhiS0_i: __ZN7WelsEnc19WelsSampleSatd8x8_cEPhiS0_i,\n    /** @export */ _ZN7WelsEnc20CWelsPreProcessVideo17DetectSceneChangeEPNS_10TagPictureES2_: __ZN7WelsEnc20CWelsPreProcessVideo17DetectSceneChangeEPNS_10TagPictureES2_,\n    /** @export */ _ZN7WelsEnc20CWelsPreProcessVideo19GetCurrentOrigFrameEi: __ZN7WelsEnc20CWelsPreProcessVideo19GetCurrentOrigFrameEi,\n    /** @export */ _ZN7WelsEnc20CWelsPreProcessVideoD0Ev: __ZN7WelsEnc20CWelsPreProcessVideoD0Ev,\n    /** @export */ _ZN7WelsEnc20CWelsUpdateMbMapTask7ExecuteEv: __ZN7WelsEnc20CWelsUpdateMbMapTask7ExecuteEv,\n    /** @export */ _ZN7WelsEnc20CWelsUpdateMbMapTaskD0Ev: __ZN7WelsEnc20CWelsUpdateMbMapTaskD0Ev,\n    /** @export */ _ZN7WelsEnc20CWelsUpdateMbMapTaskD1Ev: __ZN7WelsEnc20CWelsUpdateMbMapTaskD1Ev,\n    /** @export */ _ZN7WelsEnc20IsMbCollocatedStaticEPi: __ZN7WelsEnc20IsMbCollocatedStaticEPi,\n    /** @export */ _ZN7WelsEnc20NotCalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii: __ZN7WelsEnc20NotCalculateSatdCostEPFiPhiS0_iEPNS_9TagWelsMEEii,\n    /** @export */ _ZN7WelsEnc20WelsDequantFour4x4_cEPsPKt: __ZN7WelsEnc20WelsDequantFour4x4_cEPsPKt,\n    /** @export */ _ZN7WelsEnc20WelsI4x4LumaPredDc_cEPhS0_i: __ZN7WelsEnc20WelsI4x4LumaPredDc_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc20WelsI4x4LumaPredHD_cEPhS0_i: __ZN7WelsEnc20WelsI4x4LumaPredHD_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc20WelsI4x4LumaPredHU_cEPhS0_i: __ZN7WelsEnc20WelsI4x4LumaPredHU_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc20WelsI4x4LumaPredVL_cEPhS0_i: __ZN7WelsEnc20WelsI4x4LumaPredVL_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc20WelsI4x4LumaPredVR_cEPhS0_i: __ZN7WelsEnc20WelsI4x4LumaPredVR_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc20WelsInitInterMDStrucEPKNS_5TagMBEPtiPNS_9TagWelsMDE: __ZN7WelsEnc20WelsInitInterMDStrucEPKNS_5TagMBEPtiPNS_9TagWelsMDE,\n    /** @export */ _ZN7WelsEnc20WelsMdFirstIntraModeEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE: __ZN7WelsEnc20WelsMdFirstIntraModeEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE,\n    /** @export */ _ZN7WelsEnc20WelsRcPictureInitGomEPNS_13TagWelsEncCtxEx: __ZN7WelsEnc20WelsRcPictureInitGomEPNS_13TagWelsEncCtxEx,\n    /** @export */ _ZN7WelsEnc20WelsSampleSatd16x8_cEPhiS0_i: __ZN7WelsEnc20WelsSampleSatd16x8_cEPhiS0_i,\n    /** @export */ _ZN7WelsEnc20WelsSampleSatd8x16_cEPhiS0_i: __ZN7WelsEnc20WelsSampleSatd8x16_cEPhiS0_i,\n    /** @export */ _ZN7WelsEnc20WelsSliceHeaderWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE: __ZN7WelsEnc20WelsSliceHeaderWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE,\n    /** @export */ _ZN7WelsEnc21CWelsPreProcessScreen17DetectSceneChangeEPNS_10TagPictureES2_: __ZN7WelsEnc21CWelsPreProcessScreen17DetectSceneChangeEPNS_10TagPictureES2_,\n    /** @export */ _ZN7WelsEnc21CWelsPreProcessScreen19GetCurrentOrigFrameEi: __ZN7WelsEnc21CWelsPreProcessScreen19GetCurrentOrigFrameEi,\n    /** @export */ _ZN7WelsEnc21CWelsPreProcessScreenD0Ev: __ZN7WelsEnc21CWelsPreProcessScreenD0Ev,\n    /** @export */ _ZN7WelsEnc21CWelsReference_Screen12BuildRefListEii: __ZN7WelsEnc21CWelsReference_Screen12BuildRefListEii,\n    /** @export */ _ZN7WelsEnc21CWelsReference_Screen13UpdateRefListEv: __ZN7WelsEnc21CWelsReference_Screen13UpdateRefListEv,\n    /** @export */ _ZN7WelsEnc21CWelsReference_Screen17AfterBuildRefListEv: __ZN7WelsEnc21CWelsReference_Screen17AfterBuildRefListEv,\n    /** @export */ _ZN7WelsEnc21CWelsReference_Screen18EndofUpdateRefListEv: __ZN7WelsEnc21CWelsReference_Screen18EndofUpdateRefListEv,\n    /** @export */ _ZN7WelsEnc21CWelsReference_Screen7MarkPicEv: __ZN7WelsEnc21CWelsReference_Screen7MarkPicEv,\n    /** @export */ _ZN7WelsEnc21CWelsReference_ScreenD0Ev: __ZN7WelsEnc21CWelsReference_ScreenD0Ev,\n    /** @export */ _ZN7WelsEnc21StashPopMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE: __ZN7WelsEnc21StashPopMBStatusCabacEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc21StashPopMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE: __ZN7WelsEnc21StashPopMBStatusCavlcEPNS_22TagDynamicSlicingStackEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc21SumOf8x8SingleBlock_cEPhi: __ZN7WelsEnc21SumOf8x8SingleBlock_cEPhi,\n    /** @export */ _ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultER14TagEncParamExt: __ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultER14TagEncParamExt,\n    /** @export */ _ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultEv: __ZN7WelsEnc21TagWelsSvcCodingParam11FillDefaultEv,\n    /** @export */ _ZN7WelsEnc21TagWelsSvcCodingParam13GetBaseParamsEP15TagEncParamBase: __ZN7WelsEnc21TagWelsSvcCodingParam13GetBaseParamsEP15TagEncParamBase,\n    /** @export */ _ZN7WelsEnc21TagWelsSvcCodingParam14ParamTranscodeERK14TagEncParamExt: __ZN7WelsEnc21TagWelsSvcCodingParam14ParamTranscodeERK14TagEncParamExt,\n    /** @export */ _ZN7WelsEnc21TagWelsSvcCodingParam18ParamBaseTranscodeERK15TagEncParamBase: __ZN7WelsEnc21TagWelsSvcCodingParam18ParamBaseTranscodeERK15TagEncParamBase,\n    /** @export */ _ZN7WelsEnc21TagWelsSvcCodingParam22SetActualPicResolutionEv: __ZN7WelsEnc21TagWelsSvcCodingParam22SetActualPicResolutionEv,\n    /** @export */ _ZN7WelsEnc21TagWelsSvcCodingParam25DetermineTemporalSettingsEv: __ZN7WelsEnc21TagWelsSvcCodingParam25DetermineTemporalSettingsEv,\n    /** @export */ _ZN7WelsEnc21WelsI4x4LumaPredDDL_cEPhS0_i: __ZN7WelsEnc21WelsI4x4LumaPredDDL_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc21WelsI4x4LumaPredDDR_cEPhS0_i: __ZN7WelsEnc21WelsI4x4LumaPredDDR_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc21WelsIChromaPredDcNA_cEPhS0_i: __ZN7WelsEnc21WelsIChromaPredDcNA_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc21WelsIDctRecI16x16Dc_cEPhiS0_iPs: __ZN7WelsEnc21WelsIDctRecI16x16Dc_cEPhiS0_iPs,\n    /** @export */ _ZN7WelsEnc21WelsMotionCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii: __ZN7WelsEnc21WelsMotionCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii,\n    /** @export */ _ZN7WelsEnc21WelsQuantFour4x4Max_cEPsPKsS2_S0_: __ZN7WelsEnc21WelsQuantFour4x4Max_cEPsPKsS2_S0_,\n    /** @export */ _ZN7WelsEnc21WelsRcMbInfoUpdateGomEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE: __ZN7WelsEnc21WelsRcMbInfoUpdateGomEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc21WelsSampleSatd16x16_cEPhiS0_i: __ZN7WelsEnc21WelsSampleSatd16x16_cEPhiS0_i,\n    /** @export */ _ZN7WelsEnc21WelsSpatialWriteMbSynEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE: __ZN7WelsEnc21WelsSpatialWriteMbSynEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE,\n    /** @export */ _ZN7WelsEnc22AnalysisVaaInfoIntra_cEPhi: __ZN7WelsEnc22AnalysisVaaInfoIntra_cEPhi,\n    /** @export */ _ZN7WelsEnc22CWelsSliceEncodingTask10FinishTaskEv: __ZN7WelsEnc22CWelsSliceEncodingTask10FinishTaskEv,\n    /** @export */ _ZN7WelsEnc22CWelsSliceEncodingTask11ExecuteTaskEv: __ZN7WelsEnc22CWelsSliceEncodingTask11ExecuteTaskEv,\n    /** @export */ _ZN7WelsEnc22CWelsSliceEncodingTask7ExecuteEv: __ZN7WelsEnc22CWelsSliceEncodingTask7ExecuteEv,\n    /** @export */ _ZN7WelsEnc22CWelsSliceEncodingTask8InitTaskEv: __ZN7WelsEnc22CWelsSliceEncodingTask8InitTaskEv,\n    /** @export */ _ZN7WelsEnc22CWelsSliceEncodingTaskD0Ev: __ZN7WelsEnc22CWelsSliceEncodingTaskD0Ev,\n    /** @export */ _ZN7WelsEnc22CWelsSliceEncodingTaskD1Ev: __ZN7WelsEnc22CWelsSliceEncodingTaskD1Ev,\n    /** @export */ _ZN7WelsEnc22CWelsSliceEncodingTaskD2Ev: __ZN7WelsEnc22CWelsSliceEncodingTaskD2Ev,\n    /** @export */ _ZN7WelsEnc22IWelsReferenceStrategyD2Ev: __ZN7WelsEnc22IWelsReferenceStrategyD2Ev,\n    /** @export */ _ZN7WelsEnc22SetScrollingMvToMdNullEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE: __ZN7WelsEnc22SetScrollingMvToMdNullEPNS_15TagVAAFrameInfoEPNS_9TagWelsMDE,\n    /** @export */ _ZN7WelsEnc22SumOf8x8BlockOfFrame_cEPhiiiPtPj: __ZN7WelsEnc22SumOf8x8BlockOfFrame_cEPhiiiPtPj,\n    /** @export */ _ZN7WelsEnc22WelsDiamondCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii: __ZN7WelsEnc22WelsDiamondCrossSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii,\n    /** @export */ _ZN7WelsEnc22WelsGetNoneZeroCount_cEPs: __ZN7WelsEnc22WelsGetNoneZeroCount_cEPs,\n    /** @export */ _ZN7WelsEnc22WelsHadamardQuant2x2_cEPsssS0_S0_: __ZN7WelsEnc22WelsHadamardQuant2x2_cEPsssS0_S0_,\n    /** @export */ _ZN7WelsEnc22WelsI16x16LumaPredDc_cEPhS0_i: __ZN7WelsEnc22WelsI16x16LumaPredDc_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc22WelsI4x4LumaPredDcNA_cEPhS0_i: __ZN7WelsEnc22WelsI4x4LumaPredDcNA_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc22WelsIChromaPredDcTop_cEPhS0_i: __ZN7WelsEnc22WelsIChromaPredDcTop_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc22WelsIChromaPredPlane_cEPhS0_i: __ZN7WelsEnc22WelsIChromaPredPlane_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc22WelsISliceMdEncDynamicEPNS_13TagWelsEncCtxEPNS_8TagSliceE: __ZN7WelsEnc22WelsISliceMdEncDynamicEPNS_13TagWelsEncCtxEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc22g_kiMapModeIntraChromaE: __ZN7WelsEnc22g_kiMapModeIntraChromaE,\n    /** @export */ _ZN7WelsEnc23CheckDirectionalMvFalseEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi: __ZN7WelsEnc23CheckDirectionalMvFalseEPFiPhiS0_iEPNS_9TagWelsMEENS_9SMVUnitXYES5_iiRi,\n    /** @export */ _ZN7WelsEnc23IsCostLessEqualSkipCostEiiiPKNS_10TagPictureEii: __ZN7WelsEnc23IsCostLessEqualSkipCostEiiiPKNS_10TagPictureEii,\n    /** @export */ _ZN7WelsEnc23SumOf16x16SingleBlock_cEPhi: __ZN7WelsEnc23SumOf16x16SingleBlock_cEPhi,\n    /** @export */ _ZN7WelsEnc23WelsCabacEncodeDecisionEPNS_11TagCabacCtxEij: __ZN7WelsEnc23WelsCabacEncodeDecisionEPNS_11TagCabacCtxEij,\n    /** @export */ _ZN7WelsEnc23WelsI4x4LumaPredDcTop_cEPhS0_i: __ZN7WelsEnc23WelsI4x4LumaPredDcTop_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc23WelsI4x4LumaPredVLTop_cEPhS0_i: __ZN7WelsEnc23WelsI4x4LumaPredVLTop_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc23WelsIChromaPredDcLeft_cEPhS0_i: __ZN7WelsEnc23WelsIChromaPredDcLeft_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc23WelsMdUpdateBGDInfoNULLEPNS_10TagDqLayerEPNS_5TagMBEbi: __ZN7WelsEnc23WelsMdUpdateBGDInfoNULLEPNS_10TagDqLayerEPNS_5TagMBEbi,\n    /** @export */ _ZN7WelsEnc23WelsRcPostFrameSkippingEPNS_13TagWelsEncCtxEix: __ZN7WelsEnc23WelsRcPostFrameSkippingEPNS_13TagWelsEncCtxEix,\n    /** @export */ _ZN7WelsEnc23WelsSliceHeaderExtWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE: __ZN7WelsEnc23WelsSliceHeaderExtWriteEPNS_13TagWelsEncCtxEPN10WelsCommon15TagBitStringAuxEPNS_10TagDqLayerEPNS_8TagSliceEPNS_25IWelsParametersetStrategyE,\n    /** @export */ _ZN7WelsEnc24CheckFrameSkipBasedMaxbrEPNS_13TagWelsEncCtxExi: __ZN7WelsEnc24CheckFrameSkipBasedMaxbrEPNS_13TagWelsEncCtxExi,\n    /** @export */ _ZN7WelsEnc24MdInterAnalysisVaaInfo_cEPi: __ZN7WelsEnc24MdInterAnalysisVaaInfo_cEPi,\n    /** @export */ _ZN7WelsEnc24SumOf16x16BlockOfFrame_cEPhiiiPtPj: __ZN7WelsEnc24SumOf16x16BlockOfFrame_cEPhiiiPtPj,\n    /** @export */ _ZN7WelsEnc24WelsCabacEncodeBypassOneEPNS_11TagCabacCtxEi: __ZN7WelsEnc24WelsCabacEncodeBypassOneEPNS_11TagCabacCtxEi,\n    /** @export */ _ZN7WelsEnc24WelsI16x16LumaPredDcNA_cEPhS0_i: __ZN7WelsEnc24WelsI16x16LumaPredDcNA_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc24WelsI4x4LumaPredDDLTop_cEPhS0_i: __ZN7WelsEnc24WelsI4x4LumaPredDDLTop_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc24WelsI4x4LumaPredDcLeft_cEPhS0_i: __ZN7WelsEnc24WelsI4x4LumaPredDcLeft_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc24WelsMdInterFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi: __ZN7WelsEnc24WelsMdInterFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi,\n    /** @export */ _ZN7WelsEnc24WelsMdInterJudgeBGDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb: __ZN7WelsEnc24WelsMdInterJudgeBGDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb,\n    /** @export */ _ZN7WelsEnc24WelsMdInterJudgeSCDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE: __ZN7WelsEnc24WelsMdInterJudgeSCDPskipEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE,\n    /** @export */ _ZN7WelsEnc24WelsMdIntraFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE: __ZN7WelsEnc24WelsMdIntraFinePartitionEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE,\n    /** @export */ _ZN7WelsEnc24WelsMotionEstimateSearchEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE: __ZN7WelsEnc24WelsMotionEstimateSearchEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc24WelsRcPictureInitDisableEPNS_13TagWelsEncCtxEx: __ZN7WelsEnc24WelsRcPictureInitDisableEPNS_13TagWelsEncCtxEx,\n    /** @export */ _ZN7WelsEnc24g_kuiTemporalIdListTableE: __ZN7WelsEnc24g_kuiTemporalIdListTableE,\n    /** @export */ _ZN7WelsEnc25SetMvWithinIntegerMvRangeEiiiiiPNS_9SMVUnitXYES1_: __ZN7WelsEnc25SetMvWithinIntegerMvRangeEiiiiiPNS_9SMVUnitXYES1_,\n    /** @export */ _ZN7WelsEnc25VaaBackgroundMbDataUpdateEPNS_22TagWelsFuncPointerListEPNS_15TagVAAFrameInfoEPNS_5TagMBE: __ZN7WelsEnc25VaaBackgroundMbDataUpdateEPNS_22TagWelsFuncPointerListEPNS_15TagVAAFrameInfoEPNS_5TagMBE,\n    /** @export */ _ZN7WelsEnc25WelsCabacEncodeUpdateLow_EPNS_11TagCabacCtxE: __ZN7WelsEnc25WelsCabacEncodeUpdateLow_EPNS_11TagCabacCtxE,\n    /** @export */ _ZN7WelsEnc25WelsCodePOverDynamicSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE: __ZN7WelsEnc25WelsCodePOverDynamicSliceEPNS_13TagWelsEncCtxEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc25WelsDequantIHadamard4x4_cEPst: __ZN7WelsEnc25WelsDequantIHadamard4x4_cEPst,\n    /** @export */ _ZN7WelsEnc25WelsI16x16LumaPredDcTop_cEPhS0_i: __ZN7WelsEnc25WelsI16x16LumaPredDcTop_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc25WelsI16x16LumaPredPlane_cEPhS0_i: __ZN7WelsEnc25WelsI16x16LumaPredPlane_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc25WelsMdInterMbEnhancelayerEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE: __ZN7WelsEnc25WelsMdInterMbEnhancelayerEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE,\n    /** @export */ _ZN7WelsEnc25WelsRcMbInfoUpdateDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE: __ZN7WelsEnc25WelsRcMbInfoUpdateDisableEPNS_13TagWelsEncCtxEPNS_5TagMBEiPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc26DeblockingBSInsideMBNormalEPNS_5TagMBEPA4_A4_hPa: __ZN7WelsEnc26DeblockingBSInsideMBNormalEPNS_5TagMBEPA4_A4_hPa,\n    /** @export */ _ZN7WelsEnc26InitializeHashforFeature_cEPjPtiPS1_S2_: __ZN7WelsEnc26InitializeHashforFeature_cEPjPtiPS1_S2_,\n    /** @export */ _ZN7WelsEnc26WelsHadamardQuant2x2Skip_cEPsss: __ZN7WelsEnc26WelsHadamardQuant2x2Skip_cEPsss,\n    /** @export */ _ZN7WelsEnc26WelsI16x16LumaPredDcLeft_cEPhS0_i: __ZN7WelsEnc26WelsI16x16LumaPredDcLeft_cEPhS0_i,\n    /** @export */ _ZN7WelsEnc26WelsRcPictureInfoUpdateGomEPNS_13TagWelsEncCtxEi: __ZN7WelsEnc26WelsRcPictureInfoUpdateGomEPNS_13TagWelsEncCtxEi,\n    /** @export */ _ZN7WelsEnc26WelsSpatialWriteMbSynCabacEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE: __ZN7WelsEnc26WelsSpatialWriteMbSynCabacEPNS_13TagWelsEncCtxEPNS_8TagSliceEPNS_5TagMBE,\n    /** @export */ _ZN7WelsEnc26g_kuiVlcTotalZerosChromaDcE: __ZN7WelsEnc26g_kuiVlcTotalZerosChromaDcE,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE: __ZN7WelsEnc27CWelsParametersetIdConstant12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant13UpdatePpsListEPNS_13TagWelsEncCtxE: __ZN7WelsEnc27CWelsParametersetIdConstant13UpdatePpsListEPNS_13TagWelsEncCtxE,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb: __ZN7WelsEnc27CWelsParametersetIdConstant14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant14GetPpsIdOffsetEi: __ZN7WelsEnc27CWelsParametersetIdConstant14GetPpsIdOffsetEi,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant14GetSpsIdOffsetEii: __ZN7WelsEnc27CWelsParametersetIdConstant14GetSpsIdOffsetEii,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant15GetCurrentPpsIdEii: __ZN7WelsEnc27CWelsParametersetIdConstant15GetCurrentPpsIdEii,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededPpsNumEv: __ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededPpsNumEv,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededSpsNumEv: __ZN7WelsEnc27CWelsParametersetIdConstant15GetNeededSpsNumEv,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE: __ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE: __ZN7WelsEnc27CWelsParametersetIdConstant15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant16SetUseSubsetFlagEjb: __ZN7WelsEnc27CWelsParametersetIdConstant16SetUseSubsetFlagEjb,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant16UpdateParaSetNumEPNS_13TagWelsEncCtxE: __ZN7WelsEnc27CWelsParametersetIdConstant16UpdateParaSetNumEPNS_13TagWelsEncCtxE,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant18GetSpsIdOffsetListEi: __ZN7WelsEnc27CWelsParametersetIdConstant18GetSpsIdOffsetListEi,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant21GetNeededSubsetSpsNumEv: __ZN7WelsEnc27CWelsParametersetIdConstant21GetNeededSubsetSpsNumEv,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi: __ZN7WelsEnc27CWelsParametersetIdConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant22GetAllNeededParasetNumEv: __ZN7WelsEnc27CWelsParametersetIdConstant22GetAllNeededParasetNumEv,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE: __ZN7WelsEnc27CWelsParametersetIdConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext: __ZN7WelsEnc27CWelsParametersetIdConstant23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant6UpdateEji: __ZN7WelsEnc27CWelsParametersetIdConstant6UpdateEji,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb: __ZN7WelsEnc27CWelsParametersetIdConstant7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstant9GetSpsIdxEi: __ZN7WelsEnc27CWelsParametersetIdConstant9GetSpsIdxEi,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstantD0Ev: __ZN7WelsEnc27CWelsParametersetIdConstantD0Ev,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstantD1Ev: __ZN7WelsEnc27CWelsParametersetIdConstantD1Ev,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetIdConstantD2Ev: __ZN7WelsEnc27CWelsParametersetIdConstantD2Ev,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetSpsListing12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE: __ZN7WelsEnc27CWelsParametersetSpsListing12LoadPreviousEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsEPNS_10TagWelsPPSE,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetSpsListing14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb: __ZN7WelsEnc27CWelsParametersetSpsListing14GenerateNewSpsEPNS_13TagWelsEncCtxEbiijRPNS_10TagWelsSPSERPNS_12TagSubsetSpsEb,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetSpsListing15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE: __ZN7WelsEnc27CWelsParametersetSpsListing15LoadPreviousSpsEPNS_22TagExistingParasetListEPNS_10TagWelsSPSEPNS_12TagSubsetSpsE,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetSpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE: __ZN7WelsEnc27CWelsParametersetSpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetSpsListing18CheckPpsGeneratingEv: __ZN7WelsEnc27CWelsParametersetSpsListing18CheckPpsGeneratingEv,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetSpsListing21GetNeededSubsetSpsNumEv: __ZN7WelsEnc27CWelsParametersetSpsListing21GetNeededSubsetSpsNumEv,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetSpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE: __ZN7WelsEnc27CWelsParametersetSpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetSpsListing23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext: __ZN7WelsEnc27CWelsParametersetSpsListing23CheckParamCompatibilityEPNS_21TagWelsSvcCodingParamEP13TagLogContext,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetSpsListing8SpsResetEPNS_13TagWelsEncCtxEb: __ZN7WelsEnc27CWelsParametersetSpsListing8SpsResetEPNS_13TagWelsEncCtxEb,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetSpsListing9GetSpsIdxEi: __ZN7WelsEnc27CWelsParametersetSpsListing9GetSpsIdxEi,\n    /** @export */ _ZN7WelsEnc27CWelsParametersetSpsListingD0Ev: __ZN7WelsEnc27CWelsParametersetSpsListingD0Ev,\n    /** @export */ _ZN7WelsEnc27DeblockingBSInsideMBAvsbaseEPaPA4_A4_hi: __ZN7WelsEnc27DeblockingBSInsideMBAvsbaseEPaPA4_A4_hi,\n    /** @export */ _ZN7WelsEnc27WelsCalculateSingleCtr4x4_cEPs: __ZN7WelsEnc27WelsCalculateSingleCtr4x4_cEPs,\n    /** @export */ _ZN7WelsEnc27WelsMdInterFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi: __ZN7WelsEnc27WelsMdInterFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi,\n    /** @export */ _ZN7WelsEnc27WelsMdIntraFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE: __ZN7WelsEnc27WelsMdIntraFinePartitionVaaEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_5TagMBEPNS_10TagMbCacheE,\n    /** @export */ _ZN7WelsEnc28CWelsReference_TemporalLayer12BuildRefListEii: __ZN7WelsEnc28CWelsReference_TemporalLayer12BuildRefListEii,\n    /** @export */ _ZN7WelsEnc28CWelsReference_TemporalLayer13UpdateRefListEv: __ZN7WelsEnc28CWelsReference_TemporalLayer13UpdateRefListEv,\n    /** @export */ _ZN7WelsEnc28CWelsReference_TemporalLayer17AfterBuildRefListEv: __ZN7WelsEnc28CWelsReference_TemporalLayer17AfterBuildRefListEv,\n    /** @export */ _ZN7WelsEnc28CWelsReference_TemporalLayer18EndofUpdateRefListEv: __ZN7WelsEnc28CWelsReference_TemporalLayer18EndofUpdateRefListEv,\n    /** @export */ _ZN7WelsEnc28CWelsReference_TemporalLayer4InitEPNS_13TagWelsEncCtxE: __ZN7WelsEnc28CWelsReference_TemporalLayer4InitEPNS_13TagWelsEncCtxE,\n    /** @export */ _ZN7WelsEnc28CWelsReference_TemporalLayer7MarkPicEv: __ZN7WelsEnc28CWelsReference_TemporalLayer7MarkPicEv,\n    /** @export */ _ZN7WelsEnc28CWelsReference_TemporalLayerD0Ev: __ZN7WelsEnc28CWelsReference_TemporalLayerD0Ev,\n    /** @export */ _ZN7WelsEnc28DeblockingFilterSliceAvcbaseEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE: __ZN7WelsEnc28DeblockingFilterSliceAvcbaseEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc28UpdateBufferWhenFrameSkippedEPNS_13TagWelsEncCtxEi: __ZN7WelsEnc28UpdateBufferWhenFrameSkippedEPNS_13TagWelsEncCtxEi,\n    /** @export */ _ZN7WelsEnc28UpdateMaxBrCheckWindowStatusEPNS_13TagWelsEncCtxEix: __ZN7WelsEnc28UpdateMaxBrCheckWindowStatusEPNS_13TagWelsEncCtxEix,\n    /** @export */ _ZN7WelsEnc29CWelsParametersetIdIncreasing14GetPpsIdOffsetEi: __ZN7WelsEnc29CWelsParametersetIdIncreasing14GetPpsIdOffsetEi,\n    /** @export */ _ZN7WelsEnc29CWelsParametersetIdIncreasing14GetSpsIdOffsetEii: __ZN7WelsEnc29CWelsParametersetIdIncreasing14GetSpsIdOffsetEii,\n    /** @export */ _ZN7WelsEnc29CWelsParametersetIdIncreasing6UpdateEji: __ZN7WelsEnc29CWelsParametersetIdIncreasing6UpdateEji,\n    /** @export */ _ZN7WelsEnc29CWelsParametersetIdIncreasingD0Ev: __ZN7WelsEnc29CWelsParametersetIdIncreasingD0Ev,\n    /** @export */ _ZN7WelsEnc29FillNeighborCacheInterWithBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa: __ZN7WelsEnc29FillNeighborCacheInterWithBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa,\n    /** @export */ _ZN7WelsEnc29WelRcPictureInitBufferBasedQpEPNS_13TagWelsEncCtxEx: __ZN7WelsEnc29WelRcPictureInitBufferBasedQpEPNS_13TagWelsEncCtxEx,\n    /** @export */ _ZN7WelsEnc29WelsDiamondCrossFeatureSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii: __ZN7WelsEnc29WelsDiamondCrossFeatureSearchEPNS_22TagWelsFuncPointerListEPNS_9TagWelsMEEPNS_8TagSliceEii,\n    /** @export */ _ZN7WelsEnc29WelsMdInterJudgeBGDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb: __ZN7WelsEnc29WelsMdInterJudgeBGDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheEPb,\n    /** @export */ _ZN7WelsEnc29WelsMdInterJudgeSCDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE: __ZN7WelsEnc29WelsMdInterJudgeSCDPskipFalseEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEPNS_10TagMbCacheE,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetIdNonConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi: __ZN7WelsEnc30CWelsParametersetIdNonConstant21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetIdNonConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE: __ZN7WelsEnc30CWelsParametersetIdNonConstant22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetIdNonConstantD0Ev: __ZN7WelsEnc30CWelsParametersetIdNonConstantD0Ev,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetSpsPpsListing13UpdatePpsListEPNS_13TagWelsEncCtxE: __ZN7WelsEnc30CWelsParametersetSpsPpsListing13UpdatePpsListEPNS_13TagWelsEncCtxE,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetSpsPpsListing15GetCurrentPpsIdEii: __ZN7WelsEnc30CWelsParametersetSpsPpsListing15GetCurrentPpsIdEii,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetSpsPpsListing15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE: __ZN7WelsEnc30CWelsParametersetSpsPpsListing15LoadPreviousPpsEPNS_22TagExistingParasetListEPNS_10TagWelsPPSE,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetSpsPpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE: __ZN7WelsEnc30CWelsParametersetSpsPpsListing16UpdateParaSetNumEPNS_13TagWelsEncCtxE,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetSpsPpsListing18CheckPpsGeneratingEv: __ZN7WelsEnc30CWelsParametersetSpsPpsListing18CheckPpsGeneratingEv,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetSpsPpsListing21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi: __ZN7WelsEnc30CWelsParametersetSpsPpsListing21LoadPreviousStructureEPNS_24TagParaSetOffsetVariableEPi,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetSpsPpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE: __ZN7WelsEnc30CWelsParametersetSpsPpsListing22OutputCurrentStructureEPNS_24TagParaSetOffsetVariableEPiPNS_13TagWelsEncCtxEPNS_22TagExistingParasetListE,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetSpsPpsListing7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb: __ZN7WelsEnc30CWelsParametersetSpsPpsListing7InitPpsEPNS_13TagWelsEncCtxEjPNS_10TagWelsSPSEPNS_12TagSubsetSpsEjbbb,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetSpsPpsListing8SpsResetEPNS_13TagWelsEncCtxEb: __ZN7WelsEnc30CWelsParametersetSpsPpsListing8SpsResetEPNS_13TagWelsEncCtxEb,\n    /** @export */ _ZN7WelsEnc30CWelsParametersetSpsPpsListingD0Ev: __ZN7WelsEnc30CWelsParametersetSpsPpsListingD0Ev,\n    /** @export */ _ZN7WelsEnc30CWelsReference_LosslessWithLtr12BuildRefListEii: __ZN7WelsEnc30CWelsReference_LosslessWithLtr12BuildRefListEii,\n    /** @export */ _ZN7WelsEnc30CWelsReference_LosslessWithLtr13UpdateRefListEv: __ZN7WelsEnc30CWelsReference_LosslessWithLtr13UpdateRefListEv,\n    /** @export */ _ZN7WelsEnc30CWelsReference_LosslessWithLtr18EndofUpdateRefListEv: __ZN7WelsEnc30CWelsReference_LosslessWithLtr18EndofUpdateRefListEv,\n    /** @export */ _ZN7WelsEnc30CWelsReference_LosslessWithLtr7MarkPicEv: __ZN7WelsEnc30CWelsReference_LosslessWithLtr7MarkPicEv,\n    /** @export */ _ZN7WelsEnc30CWelsReference_LosslessWithLtrD0Ev: __ZN7WelsEnc30CWelsReference_LosslessWithLtrD0Ev,\n    /** @export */ _ZN7WelsEnc30WelsMotionEstimateSearchStaticEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE: __ZN7WelsEnc30WelsMotionEstimateSearchStaticEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc30WelsRcFrameDelayJudgeTimeStampEPNS_13TagWelsEncCtxExi: __ZN7WelsEnc30WelsRcFrameDelayJudgeTimeStampEPNS_13TagWelsEncCtxExi,\n    /** @export */ _ZN7WelsEnc30WelsRcPictureInfoUpdateDisableEPNS_13TagWelsEncCtxEi: __ZN7WelsEnc30WelsRcPictureInfoUpdateDisableEPNS_13TagWelsEncCtxEi,\n    /** @export */ _ZN7WelsEnc32DeblockingFilterSliceAvcbaseNullEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE: __ZN7WelsEnc32DeblockingFilterSliceAvcbaseNullEPNS_10TagDqLayerEPNS_22TagWelsFuncPointerListEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc32FillNeighborCacheInterWithoutBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa: __ZN7WelsEnc32FillNeighborCacheInterWithoutBGDEPNS_10TagMbCacheEPNS_5TagMBEiPa,\n    /** @export */ _ZN7WelsEnc32FillQpelLocationByFeatureValue_cEPtiiPS0_: __ZN7WelsEnc32FillQpelLocationByFeatureValue_cEPtiiPS0_,\n    /** @export */ _ZN7WelsEnc32WelsMotionEstimateSearchScrolledEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE: __ZN7WelsEnc32WelsMotionEstimateSearchScrolledEPNS_22TagWelsFuncPointerListEPNS_10TagDqLayerEPNS_9TagWelsMEEPNS_8TagSliceE,\n    /** @export */ _ZN7WelsEnc35WelsMdInterFinePartitionVaaOnScreenEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi: __ZN7WelsEnc35WelsMdInterFinePartitionVaaOnScreenEPNS_13TagWelsEncCtxEPNS_9TagWelsMDEPNS_8TagSliceEPNS_5TagMBEi,\n    /** @export */ _ZN7WelsEnc35WelsRcPictureInfoUpdateGomTimeStampEPNS_13TagWelsEncCtxEi: __ZN7WelsEnc35WelsRcPictureInfoUpdateGomTimeStampEPNS_13TagWelsEncCtxEi,\n    /** @export */ _ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask10FinishTaskEv: __ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask10FinishTaskEv,\n    /** @export */ _ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask8InitTaskEv: __ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTask8InitTaskEv,\n    /** @export */ _ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi: __ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi,\n    /** @export */ _ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskD0Ev: __ZN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskD0Ev,\n    /** @export */ _ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11ExecuteTaskEv: __ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11ExecuteTaskEv,\n    /** @export */ _ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi: __ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskC2EPN10WelsCommon13IWelsTaskSinkEPNS_13TagWelsEncCtxEi,\n    /** @export */ _ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskD0Ev: __ZN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskD0Ev,\n    /** @export */ _ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing14GetPpsIdOffsetEi: __ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing14GetPpsIdOffsetEi,\n    /** @export */ _ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing6UpdateEji: __ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasing6UpdateEji,\n    /** @export */ _ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingD0Ev: __ZN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingD0Ev,\n    /** @export */ _ZNK7WelsEnc20CWelsUpdateMbMapTask11GetTaskTypeEv: __ZNK7WelsEnc20CWelsUpdateMbMapTask11GetTaskTypeEv,\n    /** @export */ _ZNK7WelsEnc22CWelsSliceEncodingTask11GetTaskTypeEv: __ZNK7WelsEnc22CWelsSliceEncodingTask11GetTaskTypeEv,\n    /** @export */ _ZNK7WelsEnc37CWelsLoadBalancingSlicingEncodingTask11GetTaskTypeEv: __ZNK7WelsEnc37CWelsLoadBalancingSlicingEncodingTask11GetTaskTypeEv,\n    /** @export */ _ZNK7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11GetTaskTypeEv: __ZNK7WelsEnc39CWelsConstrainedSizeSlicingEncodingTask11GetTaskTypeEv,\n    /** @export */ _ZTI11ISVCEncoder: __ZTI11ISVCEncoder,\n    /** @export */ _ZTI7IWelsVP: __ZTI7IWelsVP,\n    /** @export */ _ZTIN10WelsCommon11CWelsThreadE: __ZTIN10WelsCommon11CWelsThreadE,\n    /** @export */ _ZTIN10WelsCommon12CMemoryAlignE: __ZTIN10WelsCommon12CMemoryAlignE,\n    /** @export */ _ZTIN10WelsCommon13IWelsTaskSinkE: __ZTIN10WelsCommon13IWelsTaskSinkE,\n    /** @export */ _ZTIN10WelsCommon15CWelsTaskThreadE: __ZTIN10WelsCommon15CWelsTaskThreadE,\n    /** @export */ _ZTIN10WelsCommon15CWelsThreadPoolE: __ZTIN10WelsCommon15CWelsThreadPoolE,\n    /** @export */ _ZTIN10WelsCommon19IWelsTaskThreadSinkE: __ZTIN10WelsCommon19IWelsTaskThreadSinkE,\n    /** @export */ _ZTIN10WelsCommon9CWelsLockE: __ZTIN10WelsCommon9CWelsLockE,\n    /** @export */ _ZTIN10WelsCommon9IWelsTaskE: __ZTIN10WelsCommon9IWelsTaskE,\n    /** @export */ _ZTIN6WelsVP12CVpFrameWorkE: __ZTIN6WelsVP12CVpFrameWorkE,\n    /** @export */ _ZTIN6WelsVP13CDownsamplingE: __ZTIN6WelsVP13CDownsamplingE,\n    /** @export */ _ZTIN6WelsVP14CImageRotatingE: __ZTIN6WelsVP14CImageRotatingE,\n    /** @export */ _ZTIN6WelsVP15CVAACalculationE: __ZTIN6WelsVP15CVAACalculationE,\n    /** @export */ _ZTIN6WelsVP16CScrollDetectionE: __ZTIN6WelsVP16CScrollDetectionE,\n    /** @export */ _ZTIN6WelsVP19CComplexityAnalysisE: __ZTIN6WelsVP19CComplexityAnalysisE,\n    /** @export */ _ZTIN6WelsVP20CBackgroundDetectionE: __ZTIN6WelsVP20CBackgroundDetectionE,\n    /** @export */ _ZTIN6WelsVP21CAdaptiveQuantizationE: __ZTIN6WelsVP21CAdaptiveQuantizationE,\n    /** @export */ _ZTIN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE: __ZTIN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE,\n    /** @export */ _ZTIN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE: __ZTIN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE,\n    /** @export */ _ZTIN6WelsVP25CComplexityAnalysisScreenE: __ZTIN6WelsVP25CComplexityAnalysisScreenE,\n    /** @export */ _ZTIN6WelsVP25CSceneChangeDetectorVideoE: __ZTIN6WelsVP25CSceneChangeDetectorVideoE,\n    /** @export */ _ZTIN6WelsVP26CSceneChangeDetectorScreenE: __ZTIN6WelsVP26CSceneChangeDetectorScreenE,\n    /** @export */ _ZTIN6WelsVP9CDenoiserE: __ZTIN6WelsVP9CDenoiserE,\n    /** @export */ _ZTIN6WelsVP9IStrategyE: __ZTIN6WelsVP9IStrategyE,\n    /** @export */ _ZTIN7WelsEnc13CWelsBaseTaskE: __ZTIN7WelsEnc13CWelsBaseTaskE,\n    /** @export */ _ZTIN7WelsEnc15CWelsPreProcessE: __ZTIN7WelsEnc15CWelsPreProcessE,\n    /** @export */ _ZTIN7WelsEnc15IWelsTaskManageE: __ZTIN7WelsEnc15IWelsTaskManageE,\n    /** @export */ _ZTIN7WelsEnc19CWelsH264SVCEncoderE: __ZTIN7WelsEnc19CWelsH264SVCEncoderE,\n    /** @export */ _ZTIN7WelsEnc19CWelsTaskManageBaseE: __ZTIN7WelsEnc19CWelsTaskManageBaseE,\n    /** @export */ _ZTIN7WelsEnc20CWelsPreProcessVideoE: __ZTIN7WelsEnc20CWelsPreProcessVideoE,\n    /** @export */ _ZTIN7WelsEnc20CWelsUpdateMbMapTaskE: __ZTIN7WelsEnc20CWelsUpdateMbMapTaskE,\n    /** @export */ _ZTIN7WelsEnc21CWelsPreProcessScreenE: __ZTIN7WelsEnc21CWelsPreProcessScreenE,\n    /** @export */ _ZTIN7WelsEnc21CWelsReference_ScreenE: __ZTIN7WelsEnc21CWelsReference_ScreenE,\n    /** @export */ _ZTIN7WelsEnc22CWelsSliceEncodingTaskE: __ZTIN7WelsEnc22CWelsSliceEncodingTaskE,\n    /** @export */ _ZTIN7WelsEnc22IWelsReferenceStrategyE: __ZTIN7WelsEnc22IWelsReferenceStrategyE,\n    /** @export */ _ZTIN7WelsEnc25IWelsParametersetStrategyE: __ZTIN7WelsEnc25IWelsParametersetStrategyE,\n    /** @export */ _ZTIN7WelsEnc27CWelsParametersetIdConstantE: __ZTIN7WelsEnc27CWelsParametersetIdConstantE,\n    /** @export */ _ZTIN7WelsEnc27CWelsParametersetSpsListingE: __ZTIN7WelsEnc27CWelsParametersetSpsListingE,\n    /** @export */ _ZTIN7WelsEnc28CWelsReference_TemporalLayerE: __ZTIN7WelsEnc28CWelsReference_TemporalLayerE,\n    /** @export */ _ZTIN7WelsEnc29CWelsParametersetIdIncreasingE: __ZTIN7WelsEnc29CWelsParametersetIdIncreasingE,\n    /** @export */ _ZTIN7WelsEnc30CWelsParametersetIdNonConstantE: __ZTIN7WelsEnc30CWelsParametersetIdNonConstantE,\n    /** @export */ _ZTIN7WelsEnc30CWelsParametersetSpsPpsListingE: __ZTIN7WelsEnc30CWelsParametersetSpsPpsListingE,\n    /** @export */ _ZTIN7WelsEnc30CWelsReference_LosslessWithLtrE: __ZTIN7WelsEnc30CWelsReference_LosslessWithLtrE,\n    /** @export */ _ZTIN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE: __ZTIN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE,\n    /** @export */ _ZTIN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE: __ZTIN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE,\n    /** @export */ _ZTIN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE: __ZTIN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE,\n    /** @export */ _ZTS11ISVCEncoder: __ZTS11ISVCEncoder,\n    /** @export */ _ZTS7IWelsVP: __ZTS7IWelsVP,\n    /** @export */ _ZTSN10WelsCommon11CWelsThreadE: __ZTSN10WelsCommon11CWelsThreadE,\n    /** @export */ _ZTSN10WelsCommon12CMemoryAlignE: __ZTSN10WelsCommon12CMemoryAlignE,\n    /** @export */ _ZTSN10WelsCommon13IWelsTaskSinkE: __ZTSN10WelsCommon13IWelsTaskSinkE,\n    /** @export */ _ZTSN10WelsCommon15CWelsTaskThreadE: __ZTSN10WelsCommon15CWelsTaskThreadE,\n    /** @export */ _ZTSN10WelsCommon15CWelsThreadPoolE: __ZTSN10WelsCommon15CWelsThreadPoolE,\n    /** @export */ _ZTSN10WelsCommon19IWelsTaskThreadSinkE: __ZTSN10WelsCommon19IWelsTaskThreadSinkE,\n    /** @export */ _ZTSN10WelsCommon9CWelsLockE: __ZTSN10WelsCommon9CWelsLockE,\n    /** @export */ _ZTSN10WelsCommon9IWelsTaskE: __ZTSN10WelsCommon9IWelsTaskE,\n    /** @export */ _ZTSN6WelsVP12CVpFrameWorkE: __ZTSN6WelsVP12CVpFrameWorkE,\n    /** @export */ _ZTSN6WelsVP13CDownsamplingE: __ZTSN6WelsVP13CDownsamplingE,\n    /** @export */ _ZTSN6WelsVP14CImageRotatingE: __ZTSN6WelsVP14CImageRotatingE,\n    /** @export */ _ZTSN6WelsVP15CVAACalculationE: __ZTSN6WelsVP15CVAACalculationE,\n    /** @export */ _ZTSN6WelsVP16CScrollDetectionE: __ZTSN6WelsVP16CScrollDetectionE,\n    /** @export */ _ZTSN6WelsVP19CComplexityAnalysisE: __ZTSN6WelsVP19CComplexityAnalysisE,\n    /** @export */ _ZTSN6WelsVP20CBackgroundDetectionE: __ZTSN6WelsVP20CBackgroundDetectionE,\n    /** @export */ _ZTSN6WelsVP21CAdaptiveQuantizationE: __ZTSN6WelsVP21CAdaptiveQuantizationE,\n    /** @export */ _ZTSN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE: __ZTSN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE,\n    /** @export */ _ZTSN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE: __ZTSN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE,\n    /** @export */ _ZTSN6WelsVP25CComplexityAnalysisScreenE: __ZTSN6WelsVP25CComplexityAnalysisScreenE,\n    /** @export */ _ZTSN6WelsVP25CSceneChangeDetectorVideoE: __ZTSN6WelsVP25CSceneChangeDetectorVideoE,\n    /** @export */ _ZTSN6WelsVP26CSceneChangeDetectorScreenE: __ZTSN6WelsVP26CSceneChangeDetectorScreenE,\n    /** @export */ _ZTSN6WelsVP9CDenoiserE: __ZTSN6WelsVP9CDenoiserE,\n    /** @export */ _ZTSN6WelsVP9IStrategyE: __ZTSN6WelsVP9IStrategyE,\n    /** @export */ _ZTSN7WelsEnc13CWelsBaseTaskE: __ZTSN7WelsEnc13CWelsBaseTaskE,\n    /** @export */ _ZTSN7WelsEnc15CWelsPreProcessE: __ZTSN7WelsEnc15CWelsPreProcessE,\n    /** @export */ _ZTSN7WelsEnc15IWelsTaskManageE: __ZTSN7WelsEnc15IWelsTaskManageE,\n    /** @export */ _ZTSN7WelsEnc19CWelsH264SVCEncoderE: __ZTSN7WelsEnc19CWelsH264SVCEncoderE,\n    /** @export */ _ZTSN7WelsEnc19CWelsTaskManageBaseE: __ZTSN7WelsEnc19CWelsTaskManageBaseE,\n    /** @export */ _ZTSN7WelsEnc20CWelsPreProcessVideoE: __ZTSN7WelsEnc20CWelsPreProcessVideoE,\n    /** @export */ _ZTSN7WelsEnc20CWelsUpdateMbMapTaskE: __ZTSN7WelsEnc20CWelsUpdateMbMapTaskE,\n    /** @export */ _ZTSN7WelsEnc21CWelsPreProcessScreenE: __ZTSN7WelsEnc21CWelsPreProcessScreenE,\n    /** @export */ _ZTSN7WelsEnc21CWelsReference_ScreenE: __ZTSN7WelsEnc21CWelsReference_ScreenE,\n    /** @export */ _ZTSN7WelsEnc22CWelsSliceEncodingTaskE: __ZTSN7WelsEnc22CWelsSliceEncodingTaskE,\n    /** @export */ _ZTSN7WelsEnc22IWelsReferenceStrategyE: __ZTSN7WelsEnc22IWelsReferenceStrategyE,\n    /** @export */ _ZTSN7WelsEnc25IWelsParametersetStrategyE: __ZTSN7WelsEnc25IWelsParametersetStrategyE,\n    /** @export */ _ZTSN7WelsEnc27CWelsParametersetIdConstantE: __ZTSN7WelsEnc27CWelsParametersetIdConstantE,\n    /** @export */ _ZTSN7WelsEnc27CWelsParametersetSpsListingE: __ZTSN7WelsEnc27CWelsParametersetSpsListingE,\n    /** @export */ _ZTSN7WelsEnc28CWelsReference_TemporalLayerE: __ZTSN7WelsEnc28CWelsReference_TemporalLayerE,\n    /** @export */ _ZTSN7WelsEnc29CWelsParametersetIdIncreasingE: __ZTSN7WelsEnc29CWelsParametersetIdIncreasingE,\n    /** @export */ _ZTSN7WelsEnc30CWelsParametersetIdNonConstantE: __ZTSN7WelsEnc30CWelsParametersetIdNonConstantE,\n    /** @export */ _ZTSN7WelsEnc30CWelsParametersetSpsPpsListingE: __ZTSN7WelsEnc30CWelsParametersetSpsPpsListingE,\n    /** @export */ _ZTSN7WelsEnc30CWelsReference_LosslessWithLtrE: __ZTSN7WelsEnc30CWelsReference_LosslessWithLtrE,\n    /** @export */ _ZTSN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE: __ZTSN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE,\n    /** @export */ _ZTSN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE: __ZTSN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE,\n    /** @export */ _ZTSN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE: __ZTSN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE,\n    /** @export */ _ZTVN10WelsCommon11CWelsThreadE: __ZTVN10WelsCommon11CWelsThreadE,\n    /** @export */ _ZTVN10WelsCommon12CMemoryAlignE: __ZTVN10WelsCommon12CMemoryAlignE,\n    /** @export */ _ZTVN10WelsCommon15CWelsTaskThreadE: __ZTVN10WelsCommon15CWelsTaskThreadE,\n    /** @export */ _ZTVN10WelsCommon15CWelsThreadPoolE: __ZTVN10WelsCommon15CWelsThreadPoolE,\n    /** @export */ _ZTVN10WelsCommon9CWelsLockE: __ZTVN10WelsCommon9CWelsLockE,\n    /** @export */ _ZTVN6WelsVP12CVpFrameWorkE: __ZTVN6WelsVP12CVpFrameWorkE,\n    /** @export */ _ZTVN6WelsVP13CDownsamplingE: __ZTVN6WelsVP13CDownsamplingE,\n    /** @export */ _ZTVN6WelsVP14CImageRotatingE: __ZTVN6WelsVP14CImageRotatingE,\n    /** @export */ _ZTVN6WelsVP15CVAACalculationE: __ZTVN6WelsVP15CVAACalculationE,\n    /** @export */ _ZTVN6WelsVP16CScrollDetectionE: __ZTVN6WelsVP16CScrollDetectionE,\n    /** @export */ _ZTVN6WelsVP19CComplexityAnalysisE: __ZTVN6WelsVP19CComplexityAnalysisE,\n    /** @export */ _ZTVN6WelsVP20CBackgroundDetectionE: __ZTVN6WelsVP20CBackgroundDetectionE,\n    /** @export */ _ZTVN6WelsVP21CAdaptiveQuantizationE: __ZTVN6WelsVP21CAdaptiveQuantizationE,\n    /** @export */ _ZTVN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE: __ZTVN6WelsVP21CSceneChangeDetectionINS_25CSceneChangeDetectorVideoEEE,\n    /** @export */ _ZTVN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE: __ZTVN6WelsVP21CSceneChangeDetectionINS_26CSceneChangeDetectorScreenEEE,\n    /** @export */ _ZTVN6WelsVP25CComplexityAnalysisScreenE: __ZTVN6WelsVP25CComplexityAnalysisScreenE,\n    /** @export */ _ZTVN6WelsVP25CSceneChangeDetectorVideoE: __ZTVN6WelsVP25CSceneChangeDetectorVideoE,\n    /** @export */ _ZTVN6WelsVP26CSceneChangeDetectorScreenE: __ZTVN6WelsVP26CSceneChangeDetectorScreenE,\n    /** @export */ _ZTVN6WelsVP9CDenoiserE: __ZTVN6WelsVP9CDenoiserE,\n    /** @export */ _ZTVN7WelsEnc15CWelsPreProcessE: __ZTVN7WelsEnc15CWelsPreProcessE,\n    /** @export */ _ZTVN7WelsEnc19CWelsH264SVCEncoderE: __ZTVN7WelsEnc19CWelsH264SVCEncoderE,\n    /** @export */ _ZTVN7WelsEnc19CWelsTaskManageBaseE: __ZTVN7WelsEnc19CWelsTaskManageBaseE,\n    /** @export */ _ZTVN7WelsEnc20CWelsPreProcessVideoE: __ZTVN7WelsEnc20CWelsPreProcessVideoE,\n    /** @export */ _ZTVN7WelsEnc20CWelsUpdateMbMapTaskE: __ZTVN7WelsEnc20CWelsUpdateMbMapTaskE,\n    /** @export */ _ZTVN7WelsEnc21CWelsPreProcessScreenE: __ZTVN7WelsEnc21CWelsPreProcessScreenE,\n    /** @export */ _ZTVN7WelsEnc21CWelsReference_ScreenE: __ZTVN7WelsEnc21CWelsReference_ScreenE,\n    /** @export */ _ZTVN7WelsEnc22CWelsSliceEncodingTaskE: __ZTVN7WelsEnc22CWelsSliceEncodingTaskE,\n    /** @export */ _ZTVN7WelsEnc27CWelsParametersetIdConstantE: __ZTVN7WelsEnc27CWelsParametersetIdConstantE,\n    /** @export */ _ZTVN7WelsEnc27CWelsParametersetSpsListingE: __ZTVN7WelsEnc27CWelsParametersetSpsListingE,\n    /** @export */ _ZTVN7WelsEnc28CWelsReference_TemporalLayerE: __ZTVN7WelsEnc28CWelsReference_TemporalLayerE,\n    /** @export */ _ZTVN7WelsEnc29CWelsParametersetIdIncreasingE: __ZTVN7WelsEnc29CWelsParametersetIdIncreasingE,\n    /** @export */ _ZTVN7WelsEnc30CWelsParametersetSpsPpsListingE: __ZTVN7WelsEnc30CWelsParametersetSpsPpsListingE,\n    /** @export */ _ZTVN7WelsEnc30CWelsReference_LosslessWithLtrE: __ZTVN7WelsEnc30CWelsReference_LosslessWithLtrE,\n    /** @export */ _ZTVN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE: __ZTVN7WelsEnc37CWelsLoadBalancingSlicingEncodingTaskE,\n    /** @export */ _ZTVN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE: __ZTVN7WelsEnc39CWelsConstrainedSizeSlicingEncodingTaskE,\n    /** @export */ _ZTVN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE: __ZTVN7WelsEnc40CWelsParametersetSpsListingPpsIncreasingE,\n    /** @export */ _ZThn4_N7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv: __ZThn4_N7WelsEnc19CWelsTaskManageBase14OnTaskExecutedEv,\n    /** @export */ _ZThn4_N7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv: __ZThn4_N7WelsEnc19CWelsTaskManageBase15OnTaskCancelledEv,\n    /** @export */ _ZThn72_N10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE: __ZThn72_N10WelsCommon15CWelsThreadPool10OnTaskStopEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE,\n    /** @export */ _ZThn72_N10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE: __ZThn72_N10WelsCommon15CWelsThreadPool11OnTaskStartEPNS_15CWelsTaskThreadEPNS_9IWelsTaskE,\n    /** @export */ _ZZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamEE7kaOUPos: __ZZN6WelsVP20CBackgroundDetection26ForegroundDilation23ChromaEaiiPNS0_9vBGDParamEE7kaOUPos,\n    /** @export */ __assert_fail: ___assert_fail,\n    /** @export */ __call_sighandler: ___call_sighandler,\n    /** @export */ __cxa_throw: ___cxa_throw,\n    /** @export */ __pthread_create_js: ___pthread_create_js,\n    /** @export */ _abort_js: __abort_js,\n    /** @export */ _dlopen_js: __dlopen_js,\n    /** @export */ _dlsym_catchup_js: __dlsym_catchup_js,\n    /** @export */ _embind_create_inheriting_constructor: __embind_create_inheriting_constructor,\n    /** @export */ _embind_finalize_value_object: __embind_finalize_value_object,\n    /** @export */ _embind_register_bigint: __embind_register_bigint,\n    /** @export */ _embind_register_bool: __embind_register_bool,\n    /** @export */ _embind_register_class: __embind_register_class,\n    /** @export */ _embind_register_class_class_function: __embind_register_class_class_function,\n    /** @export */ _embind_register_class_class_property: __embind_register_class_class_property,\n    /** @export */ _embind_register_class_function: __embind_register_class_function,\n    /** @export */ _embind_register_emval: __embind_register_emval,\n    /** @export */ _embind_register_enum: __embind_register_enum,\n    /** @export */ _embind_register_enum_value: __embind_register_enum_value,\n    /** @export */ _embind_register_float: __embind_register_float,\n    /** @export */ _embind_register_function: __embind_register_function,\n    /** @export */ _embind_register_integer: __embind_register_integer,\n    /** @export */ _embind_register_memory_view: __embind_register_memory_view,\n    /** @export */ _embind_register_optional: __embind_register_optional,\n    /** @export */ _embind_register_smart_ptr: __embind_register_smart_ptr,\n    /** @export */ _embind_register_std_string: __embind_register_std_string,\n    /** @export */ _embind_register_std_wstring: __embind_register_std_wstring,\n    /** @export */ _embind_register_value_object: __embind_register_value_object,\n    /** @export */ _embind_register_value_object_field: __embind_register_value_object_field,\n    /** @export */ _embind_register_void: __embind_register_void,\n    /** @export */ _emscripten_dlopen_js: __emscripten_dlopen_js,\n    /** @export */ _emscripten_fetch_get_response_headers: __emscripten_fetch_get_response_headers,\n    /** @export */ _emscripten_fetch_get_response_headers_length: __emscripten_fetch_get_response_headers_length,\n    /** @export */ _emscripten_init_main_thread_js: __emscripten_init_main_thread_js,\n    /** @export */ _emscripten_notify_mailbox_postmessage: __emscripten_notify_mailbox_postmessage,\n    /** @export */ _emscripten_receive_on_main_thread_js: __emscripten_receive_on_main_thread_js,\n    /** @export */ _emscripten_runtime_keepalive_clear: __emscripten_runtime_keepalive_clear,\n    /** @export */ _emscripten_thread_cleanup: __emscripten_thread_cleanup,\n    /** @export */ _emscripten_thread_exit_joinable: __emscripten_thread_exit_joinable,\n    /** @export */ _emscripten_thread_mailbox_await: __emscripten_thread_mailbox_await,\n    /** @export */ _emscripten_thread_set_strongref: __emscripten_thread_set_strongref,\n    /** @export */ _emval_create_invoker: __emval_create_invoker,\n    /** @export */ _emval_decref: __emval_decref,\n    /** @export */ _emval_get_global: __emval_get_global,\n    /** @export */ _emval_get_property: __emval_get_property,\n    /** @export */ _emval_incref: __emval_incref,\n    /** @export */ _emval_invoke: __emval_invoke,\n    /** @export */ _emval_new_array: __emval_new_array,\n    /** @export */ _emval_new_array_from_memory_view: __emval_new_array_from_memory_view,\n    /** @export */ _emval_new_cstring: __emval_new_cstring,\n    /** @export */ _emval_run_destructors: __emval_run_destructors,\n    /** @export */ _gmtime_js: __gmtime_js,\n    /** @export */ _localtime_js: __localtime_js,\n    /** @export */ _mktime_js: __mktime_js,\n    /** @export */ _timegm_js: __timegm_js,\n    /** @export */ _tzset_js: __tzset_js,\n    /** @export */ _wasmfs_copy_preloaded_file_data: __wasmfs_copy_preloaded_file_data,\n    /** @export */ _wasmfs_get_num_preloaded_dirs: __wasmfs_get_num_preloaded_dirs,\n    /** @export */ _wasmfs_get_num_preloaded_files: __wasmfs_get_num_preloaded_files,\n    /** @export */ _wasmfs_get_preloaded_child_path: __wasmfs_get_preloaded_child_path,\n    /** @export */ _wasmfs_get_preloaded_file_mode: __wasmfs_get_preloaded_file_mode,\n    /** @export */ _wasmfs_get_preloaded_file_size: __wasmfs_get_preloaded_file_size,\n    /** @export */ _wasmfs_get_preloaded_parent_path: __wasmfs_get_preloaded_parent_path,\n    /** @export */ _wasmfs_get_preloaded_path_name: __wasmfs_get_preloaded_path_name,\n    /** @export */ _wasmfs_jsimpl_alloc_file: __wasmfs_jsimpl_alloc_file,\n    /** @export */ _wasmfs_jsimpl_free_file: __wasmfs_jsimpl_free_file,\n    /** @export */ _wasmfs_jsimpl_get_size: __wasmfs_jsimpl_get_size,\n    /** @export */ _wasmfs_jsimpl_read: __wasmfs_jsimpl_read,\n    /** @export */ _wasmfs_jsimpl_set_size: __wasmfs_jsimpl_set_size,\n    /** @export */ _wasmfs_jsimpl_write: __wasmfs_jsimpl_write,\n    /** @export */ _wasmfs_opfs_close_access: __wasmfs_opfs_close_access,\n    /** @export */ _wasmfs_opfs_close_blob: __wasmfs_opfs_close_blob,\n    /** @export */ _wasmfs_opfs_flush_access: __wasmfs_opfs_flush_access,\n    /** @export */ _wasmfs_opfs_free_directory: __wasmfs_opfs_free_directory,\n    /** @export */ _wasmfs_opfs_free_file: __wasmfs_opfs_free_file,\n    /** @export */ _wasmfs_opfs_get_child: __wasmfs_opfs_get_child,\n    /** @export */ _wasmfs_opfs_get_entries: __wasmfs_opfs_get_entries,\n    /** @export */ _wasmfs_opfs_get_size_access: __wasmfs_opfs_get_size_access,\n    /** @export */ _wasmfs_opfs_get_size_blob: __wasmfs_opfs_get_size_blob,\n    /** @export */ _wasmfs_opfs_get_size_file: __wasmfs_opfs_get_size_file,\n    /** @export */ _wasmfs_opfs_init_root_directory: __wasmfs_opfs_init_root_directory,\n    /** @export */ _wasmfs_opfs_insert_directory: __wasmfs_opfs_insert_directory,\n    /** @export */ _wasmfs_opfs_insert_file: __wasmfs_opfs_insert_file,\n    /** @export */ _wasmfs_opfs_move_file: __wasmfs_opfs_move_file,\n    /** @export */ _wasmfs_opfs_open_access: __wasmfs_opfs_open_access,\n    /** @export */ _wasmfs_opfs_open_blob: __wasmfs_opfs_open_blob,\n    /** @export */ _wasmfs_opfs_read_access: __wasmfs_opfs_read_access,\n    /** @export */ _wasmfs_opfs_read_blob: __wasmfs_opfs_read_blob,\n    /** @export */ _wasmfs_opfs_remove_child: __wasmfs_opfs_remove_child,\n    /** @export */ _wasmfs_opfs_set_size_access: __wasmfs_opfs_set_size_access,\n    /** @export */ _wasmfs_opfs_set_size_file: __wasmfs_opfs_set_size_file,\n    /** @export */ _wasmfs_opfs_write_access: __wasmfs_opfs_write_access,\n    /** @export */ _wasmfs_stdin_get_char: __wasmfs_stdin_get_char,\n    /** @export */ _wasmfs_thread_utils_heartbeat: __wasmfs_thread_utils_heartbeat,\n    /** @export */ av_buffer_alloc: _av_buffer_alloc,\n    /** @export */ av_buffer_allocz: _av_buffer_allocz,\n    /** @export */ av_buffer_default_free: _av_buffer_default_free,\n    /** @export */ av_buffer_unref: _av_buffer_unref,\n    /** @export */ av_channel_layout_copy: _av_channel_layout_copy,\n    /** @export */ av_codec_is_decoder: _av_codec_is_decoder,\n    /** @export */ av_codec_is_encoder: _av_codec_is_encoder,\n    /** @export */ av_default_item_name: _av_default_item_name,\n    /** @export */ av_display_rotation_get: _av_display_rotation_get,\n    /** @export */ av_display_rotation_set: _av_display_rotation_set,\n    /** @export */ av_dump_format: _av_dump_format,\n    /** @export */ av_frame_alloc: _av_frame_alloc,\n    /** @export */ av_frame_copy: _av_frame_copy,\n    /** @export */ av_frame_free: _av_frame_free,\n    /** @export */ av_frame_get_buffer: _av_frame_get_buffer,\n    /** @export */ av_frame_make_writable: _av_frame_make_writable,\n    /** @export */ av_free: _av_free,\n    /** @export */ av_get_pix_fmt: _av_get_pix_fmt,\n    /** @export */ av_get_pix_fmt_name: _av_get_pix_fmt_name,\n    /** @export */ av_get_sample_fmt: _av_get_sample_fmt,\n    /** @export */ av_guess_format: _av_guess_format,\n    /** @export */ av_hwframe_transfer_data: _av_hwframe_transfer_data,\n    /** @export */ av_hwframe_transfer_get_formats: _av_hwframe_transfer_get_formats,\n    /** @export */ av_image_copy_plane_uc_from: _av_image_copy_plane_uc_from,\n    /** @export */ av_interleaved_write_frame: _av_interleaved_write_frame,\n    /** @export */ av_log_default_callback: _av_log_default_callback,\n    /** @export */ av_log_format_line2: _av_log_format_line2,\n    /** @export */ av_log_set_callback: _av_log_set_callback,\n    /** @export */ av_opt_query_ranges_default: _av_opt_query_ranges_default,\n    /** @export */ av_opt_set: _av_opt_set,\n    /** @export */ av_opt_set_chlayout: _av_opt_set_chlayout,\n    /** @export */ av_opt_set_int: _av_opt_set_int,\n    /** @export */ av_opt_set_sample_fmt: _av_opt_set_sample_fmt,\n    /** @export */ av_packet_alloc: _av_packet_alloc,\n    /** @export */ av_packet_free: _av_packet_free,\n    /** @export */ av_packet_ref: _av_packet_ref,\n    /** @export */ av_packet_rescale_ts: _av_packet_rescale_ts,\n    /** @export */ av_packet_unref: _av_packet_unref,\n    /** @export */ av_read_frame: _av_read_frame,\n    /** @export */ av_rescale_q: _av_rescale_q,\n    /** @export */ av_seek_frame: _av_seek_frame,\n    /** @export */ av_sha_size: _av_sha_size,\n    /** @export */ av_stream_get_side_data: _av_stream_get_side_data,\n    /** @export */ av_stream_new_side_data: _av_stream_new_side_data,\n    /** @export */ av_strerror: _av_strerror,\n    /** @export */ av_write_trailer: _av_write_trailer,\n    /** @export */ avcodec_alloc_context3: _avcodec_alloc_context3,\n    /** @export */ avcodec_default_execute: _avcodec_default_execute,\n    /** @export */ avcodec_default_execute2: _avcodec_default_execute2,\n    /** @export */ avcodec_default_get_buffer2: _avcodec_default_get_buffer2,\n    /** @export */ avcodec_default_get_encode_buffer: _avcodec_default_get_encode_buffer,\n    /** @export */ avcodec_default_get_format: _avcodec_default_get_format,\n    /** @export */ avcodec_find_decoder: _avcodec_find_decoder,\n    /** @export */ avcodec_find_encoder: _avcodec_find_encoder,\n    /** @export */ avcodec_free_context: _avcodec_free_context,\n    /** @export */ avcodec_open2: _avcodec_open2,\n    /** @export */ avcodec_parameters_copy: _avcodec_parameters_copy,\n    /** @export */ avcodec_parameters_from_context: _avcodec_parameters_from_context,\n    /** @export */ avcodec_parameters_to_context: _avcodec_parameters_to_context,\n    /** @export */ avcodec_receive_frame: _avcodec_receive_frame,\n    /** @export */ avcodec_receive_packet: _avcodec_receive_packet,\n    /** @export */ avcodec_send_frame: _avcodec_send_frame,\n    /** @export */ avcodec_send_packet: _avcodec_send_packet,\n    /** @export */ avformat_alloc_context: _avformat_alloc_context,\n    /** @export */ avformat_alloc_output_context2: _avformat_alloc_output_context2,\n    /** @export */ avformat_close_input: _avformat_close_input,\n    /** @export */ avformat_find_stream_info: _avformat_find_stream_info,\n    /** @export */ avformat_free_context: _avformat_free_context,\n    /** @export */ avformat_new_stream: _avformat_new_stream,\n    /** @export */ avformat_open_input: _avformat_open_input,\n    /** @export */ avformat_seek_file: _avformat_seek_file,\n    /** @export */ avformat_write_header: _avformat_write_header,\n    /** @export */ avio_close: _avio_close,\n    /** @export */ avio_open: _avio_open,\n    /** @export */ avio_rb16: _avio_rb16,\n    /** @export */ avio_rl16: _avio_rl16,\n    /** @export */ avpriv_scalarproduct_float_c: _avpriv_scalarproduct_float_c,\n    /** @export */ clock_time_get: _clock_time_get,\n    /** @export */ deinterleaveBytes: _deinterleaveBytes,\n    /** @export */ emscripten_asm_const_int: _emscripten_asm_const_int,\n    /** @export */ emscripten_asm_const_int_sync_on_main_thread: _emscripten_asm_const_int_sync_on_main_thread,\n    /** @export */ emscripten_check_blocking_allowed: _emscripten_check_blocking_allowed,\n    /** @export */ emscripten_date_now: _emscripten_date_now,\n    /** @export */ emscripten_err: _emscripten_err,\n    /** @export */ emscripten_exit_with_live_runtime: _emscripten_exit_with_live_runtime,\n    /** @export */ emscripten_fetch_free: _emscripten_fetch_free,\n    /** @export */ emscripten_get_callstack: _emscripten_get_callstack,\n    /** @export */ emscripten_get_heap_max: _emscripten_get_heap_max,\n    /** @export */ emscripten_get_now: _emscripten_get_now,\n    /** @export */ emscripten_has_asyncify: _emscripten_has_asyncify,\n    /** @export */ emscripten_num_logical_cores: _emscripten_num_logical_cores,\n    /** @export */ emscripten_out: _emscripten_out,\n    /** @export */ emscripten_promise_destroy: _emscripten_promise_destroy,\n    /** @export */ emscripten_promise_resolve: _emscripten_promise_resolve,\n    /** @export */ emscripten_resize_heap: _emscripten_resize_heap,\n    /** @export */ emscripten_set_beforeunload_callback_on_thread: _emscripten_set_beforeunload_callback_on_thread,\n    /** @export */ emscripten_set_keydown_callback_on_thread: _emscripten_set_keydown_callback_on_thread,\n    /** @export */ emscripten_set_keyup_callback_on_thread: _emscripten_set_keyup_callback_on_thread,\n    /** @export */ emscripten_set_mousedown_callback_on_thread: _emscripten_set_mousedown_callback_on_thread,\n    /** @export */ emscripten_set_mouseleave_callback_on_thread: _emscripten_set_mouseleave_callback_on_thread,\n    /** @export */ emscripten_set_mousemove_callback_on_thread: _emscripten_set_mousemove_callback_on_thread,\n    /** @export */ emscripten_set_mouseup_callback_on_thread: _emscripten_set_mouseup_callback_on_thread,\n    /** @export */ emscripten_set_touchend_callback_on_thread: _emscripten_set_touchend_callback_on_thread,\n    /** @export */ emscripten_set_touchmove_callback_on_thread: _emscripten_set_touchmove_callback_on_thread,\n    /** @export */ emscripten_set_touchstart_callback_on_thread: _emscripten_set_touchstart_callback_on_thread,\n    /** @export */ emscripten_set_wheel_callback_on_thread: _emscripten_set_wheel_callback_on_thread,\n    /** @export */ emscripten_start_fetch: _emscripten_start_fetch,\n    /** @export */ emscripten_unwind_to_js_event_loop: _emscripten_unwind_to_js_event_loop,\n    /** @export */ emscripten_webgl_create_context: _emscripten_webgl_create_context,\n    /** @export */ emscripten_webgl_enable_extension: _emscripten_webgl_enable_extension,\n    /** @export */ emscripten_webgl_get_supported_extensions: _emscripten_webgl_get_supported_extensions,\n    /** @export */ emscripten_webgl_make_context_current: _emscripten_webgl_make_context_current,\n    /** @export */ emscripten_websocket_close: _emscripten_websocket_close,\n    /** @export */ emscripten_websocket_delete: _emscripten_websocket_delete,\n    /** @export */ emscripten_websocket_is_supported: _emscripten_websocket_is_supported,\n    /** @export */ emscripten_websocket_new: _emscripten_websocket_new,\n    /** @export */ emscripten_websocket_send_utf8_text: _emscripten_websocket_send_utf8_text,\n    /** @export */ emscripten_websocket_set_onclose_callback_on_thread: _emscripten_websocket_set_onclose_callback_on_thread,\n    /** @export */ emscripten_websocket_set_onerror_callback_on_thread: _emscripten_websocket_set_onerror_callback_on_thread,\n    /** @export */ emscripten_websocket_set_onmessage_callback_on_thread: _emscripten_websocket_set_onmessage_callback_on_thread,\n    /** @export */ emscripten_websocket_set_onopen_callback_on_thread: _emscripten_websocket_set_onopen_callback_on_thread,\n    /** @export */ environ_get: _environ_get,\n    /** @export */ environ_sizes_get: _environ_sizes_get,\n    /** @export */ exit: _exit,\n    /** @export */ ff_aac_adjust_common_ltp: _ff_aac_adjust_common_ltp,\n    /** @export */ ff_aac_adjust_common_pred: _ff_aac_adjust_common_pred,\n    /** @export */ ff_aac_apply_main_pred: _ff_aac_apply_main_pred,\n    /** @export */ ff_aac_apply_tns: _ff_aac_apply_tns,\n    /** @export */ ff_aac_codebook_vector_idx: _ff_aac_codebook_vector_idx,\n    /** @export */ ff_aac_codebook_vector_vals: _ff_aac_codebook_vector_vals,\n    /** @export */ ff_aac_codebook_vectors: _ff_aac_codebook_vectors,\n    /** @export */ ff_aac_coders: _ff_aac_coders,\n    /** @export */ ff_aac_decoder: _ff_aac_decoder,\n    /** @export */ ff_aac_eld_window_480: _ff_aac_eld_window_480,\n    /** @export */ ff_aac_eld_window_512: _ff_aac_eld_window_512,\n    /** @export */ ff_aac_encode_ltp_info: _ff_aac_encode_ltp_info,\n    /** @export */ ff_aac_encode_main_pred: _ff_aac_encode_main_pred,\n    /** @export */ ff_aac_encode_tns_info: _ff_aac_encode_tns_info,\n    /** @export */ ff_aac_encoder: _ff_aac_encoder,\n    /** @export */ ff_aac_kbd_long_1024: _ff_aac_kbd_long_1024,\n    /** @export */ ff_aac_kbd_short_128: _ff_aac_kbd_short_128,\n    /** @export */ ff_aac_ltp_insert_new_frame: _ff_aac_ltp_insert_new_frame,\n    /** @export */ ff_aac_num_swb_1024: _ff_aac_num_swb_1024,\n    /** @export */ ff_aac_num_swb_120: _ff_aac_num_swb_120,\n    /** @export */ ff_aac_num_swb_128: _ff_aac_num_swb_128,\n    /** @export */ ff_aac_num_swb_480: _ff_aac_num_swb_480,\n    /** @export */ ff_aac_num_swb_512: _ff_aac_num_swb_512,\n    /** @export */ ff_aac_num_swb_960: _ff_aac_num_swb_960,\n    /** @export */ ff_aac_pow2sf_tab: _ff_aac_pow2sf_tab,\n    /** @export */ ff_aac_pow34sf_tab: _ff_aac_pow34sf_tab,\n    /** @export */ ff_aac_pred_sfb_max: _ff_aac_pred_sfb_max,\n    /** @export */ ff_aac_psy_model: _ff_aac_psy_model,\n    /** @export */ ff_aac_scalefactor_bits: _ff_aac_scalefactor_bits,\n    /** @export */ ff_aac_scalefactor_code: _ff_aac_scalefactor_code,\n    /** @export */ ff_aac_search_for_is: _ff_aac_search_for_is,\n    /** @export */ ff_aac_search_for_ltp: _ff_aac_search_for_ltp,\n    /** @export */ ff_aac_search_for_pred: _ff_aac_search_for_pred,\n    /** @export */ ff_aac_search_for_tns: _ff_aac_search_for_tns,\n    /** @export */ ff_aac_spectral_bits: _ff_aac_spectral_bits,\n    /** @export */ ff_aac_spectral_codes: _ff_aac_spectral_codes,\n    /** @export */ ff_aac_spectral_sizes: _ff_aac_spectral_sizes,\n    /** @export */ ff_aac_swb_size_1024: _ff_aac_swb_size_1024,\n    /** @export */ ff_aac_swb_size_1024_len: _ff_aac_swb_size_1024_len,\n    /** @export */ ff_aac_swb_size_128: _ff_aac_swb_size_128,\n    /** @export */ ff_aac_swb_size_128_len: _ff_aac_swb_size_128_len,\n    /** @export */ ff_aac_update_ltp: _ff_aac_update_ltp,\n    /** @export */ ff_ac3_channel_layout_tab: _ff_ac3_channel_layout_tab,\n    /** @export */ ff_avio_class: _ff_avio_class,\n    /** @export */ ff_bsf_child_class_iterate: _ff_bsf_child_class_iterate,\n    /** @export */ ff_cbrt_tab: _ff_cbrt_tab,\n    /** @export */ ff_codec_bmp_tags: _ff_codec_bmp_tags,\n    /** @export */ ff_codec_movaudio_tags: _ff_codec_movaudio_tags,\n    /** @export */ ff_codec_movdata_tags: _ff_codec_movdata_tags,\n    /** @export */ ff_codec_movsubtitle_tags: _ff_codec_movsubtitle_tags,\n    /** @export */ ff_codec_movvideo_tags: _ff_codec_movvideo_tags,\n    /** @export */ ff_codec_wav_guids: _ff_codec_wav_guids,\n    /** @export */ ff_codec_wav_tags: _ff_codec_wav_tags,\n    /** @export */ ff_cos_1024: _ff_cos_1024,\n    /** @export */ ff_cos_128: _ff_cos_128,\n    /** @export */ ff_cos_131072: _ff_cos_131072,\n    /** @export */ ff_cos_16: _ff_cos_16,\n    /** @export */ ff_cos_16384: _ff_cos_16384,\n    /** @export */ ff_cos_2048: _ff_cos_2048,\n    /** @export */ ff_cos_256: _ff_cos_256,\n    /** @export */ ff_cos_32: _ff_cos_32,\n    /** @export */ ff_cos_32768: _ff_cos_32768,\n    /** @export */ ff_cos_4096: _ff_cos_4096,\n    /** @export */ ff_cos_512: _ff_cos_512,\n    /** @export */ ff_cos_64: _ff_cos_64,\n    /** @export */ ff_cos_65536: _ff_cos_65536,\n    /** @export */ ff_cos_8192: _ff_cos_8192,\n    /** @export */ ff_cos_tabs: _ff_cos_tabs,\n    /** @export */ ff_crop_tab: _ff_crop_tab,\n    /** @export */ ff_dither_2x2_4: _ff_dither_2x2_4,\n    /** @export */ ff_dither_2x2_8: _ff_dither_2x2_8,\n    /** @export */ ff_dither_4x4_16: _ff_dither_4x4_16,\n    /** @export */ ff_dither_8x8_128: _ff_dither_8x8_128,\n    /** @export */ ff_dither_8x8_220: _ff_dither_8x8_220,\n    /** @export */ ff_dither_8x8_32: _ff_dither_8x8_32,\n    /** @export */ ff_dither_8x8_73: _ff_dither_8x8_73,\n    /** @export */ ff_emulated_edge_mc_8: _ff_emulated_edge_mc_8,\n    /** @export */ ff_file_protocol: _ff_file_protocol,\n    /** @export */ ff_format_io_close_default: _ff_format_io_close_default,\n    /** @export */ ff_golomb_vlc_len: _ff_golomb_vlc_len,\n    /** @export */ ff_h264_b_mb_type_info: _ff_h264_b_mb_type_info,\n    /** @export */ ff_h264_b_sub_mb_type_info: _ff_h264_b_sub_mb_type_info,\n    /** @export */ ff_h264_cabac_tables: _ff_h264_cabac_tables,\n    /** @export */ ff_h264_chroma422_dc_dequant_idct_10_c: _ff_h264_chroma422_dc_dequant_idct_10_c,\n    /** @export */ ff_h264_chroma422_dc_dequant_idct_12_c: _ff_h264_chroma422_dc_dequant_idct_12_c,\n    /** @export */ ff_h264_chroma422_dc_dequant_idct_14_c: _ff_h264_chroma422_dc_dequant_idct_14_c,\n    /** @export */ ff_h264_chroma422_dc_dequant_idct_8_c: _ff_h264_chroma422_dc_dequant_idct_8_c,\n    /** @export */ ff_h264_chroma422_dc_dequant_idct_9_c: _ff_h264_chroma422_dc_dequant_idct_9_c,\n    /** @export */ ff_h264_chroma422_dc_scan: _ff_h264_chroma422_dc_scan,\n    /** @export */ ff_h264_chroma_dc_dequant_idct_10_c: _ff_h264_chroma_dc_dequant_idct_10_c,\n    /** @export */ ff_h264_chroma_dc_dequant_idct_12_c: _ff_h264_chroma_dc_dequant_idct_12_c,\n    /** @export */ ff_h264_chroma_dc_dequant_idct_14_c: _ff_h264_chroma_dc_dequant_idct_14_c,\n    /** @export */ ff_h264_chroma_dc_dequant_idct_8_c: _ff_h264_chroma_dc_dequant_idct_8_c,\n    /** @export */ ff_h264_chroma_dc_dequant_idct_9_c: _ff_h264_chroma_dc_dequant_idct_9_c,\n    /** @export */ ff_h264_chroma_dc_scan: _ff_h264_chroma_dc_scan,\n    /** @export */ ff_h264_chroma_qp: _ff_h264_chroma_qp,\n    /** @export */ ff_h264_decode_init_vlc: _ff_h264_decode_init_vlc,\n    /** @export */ ff_h264_decoder: _ff_h264_decoder,\n    /** @export */ ff_h264_dequant4_coeff_init: _ff_h264_dequant4_coeff_init,\n    /** @export */ ff_h264_dequant8_coeff_init: _ff_h264_dequant8_coeff_init,\n    /** @export */ ff_h264_dequant8_coeff_init_scan: _ff_h264_dequant8_coeff_init_scan,\n    /** @export */ ff_h264_golomb_to_inter_cbp: _ff_h264_golomb_to_inter_cbp,\n    /** @export */ ff_h264_golomb_to_intra4x4_cbp: _ff_h264_golomb_to_intra4x4_cbp,\n    /** @export */ ff_h264_golomb_to_pict_type: _ff_h264_golomb_to_pict_type,\n    /** @export */ ff_h264_i_mb_type_info: _ff_h264_i_mb_type_info,\n    /** @export */ ff_h264_idct8_add4_10_c: _ff_h264_idct8_add4_10_c,\n    /** @export */ ff_h264_idct8_add4_12_c: _ff_h264_idct8_add4_12_c,\n    /** @export */ ff_h264_idct8_add4_14_c: _ff_h264_idct8_add4_14_c,\n    /** @export */ ff_h264_idct8_add4_8_c: _ff_h264_idct8_add4_8_c,\n    /** @export */ ff_h264_idct8_add4_9_c: _ff_h264_idct8_add4_9_c,\n    /** @export */ ff_h264_idct8_add_10_c: _ff_h264_idct8_add_10_c,\n    /** @export */ ff_h264_idct8_add_12_c: _ff_h264_idct8_add_12_c,\n    /** @export */ ff_h264_idct8_add_14_c: _ff_h264_idct8_add_14_c,\n    /** @export */ ff_h264_idct8_add_8_c: _ff_h264_idct8_add_8_c,\n    /** @export */ ff_h264_idct8_add_9_c: _ff_h264_idct8_add_9_c,\n    /** @export */ ff_h264_idct8_dc_add_10_c: _ff_h264_idct8_dc_add_10_c,\n    /** @export */ ff_h264_idct8_dc_add_12_c: _ff_h264_idct8_dc_add_12_c,\n    /** @export */ ff_h264_idct8_dc_add_14_c: _ff_h264_idct8_dc_add_14_c,\n    /** @export */ ff_h264_idct8_dc_add_8_c: _ff_h264_idct8_dc_add_8_c,\n    /** @export */ ff_h264_idct8_dc_add_9_c: _ff_h264_idct8_dc_add_9_c,\n    /** @export */ ff_h264_idct_add16_10_c: _ff_h264_idct_add16_10_c,\n    /** @export */ ff_h264_idct_add16_12_c: _ff_h264_idct_add16_12_c,\n    /** @export */ ff_h264_idct_add16_14_c: _ff_h264_idct_add16_14_c,\n    /** @export */ ff_h264_idct_add16_8_c: _ff_h264_idct_add16_8_c,\n    /** @export */ ff_h264_idct_add16_9_c: _ff_h264_idct_add16_9_c,\n    /** @export */ ff_h264_idct_add16intra_10_c: _ff_h264_idct_add16intra_10_c,\n    /** @export */ ff_h264_idct_add16intra_12_c: _ff_h264_idct_add16intra_12_c,\n    /** @export */ ff_h264_idct_add16intra_14_c: _ff_h264_idct_add16intra_14_c,\n    /** @export */ ff_h264_idct_add16intra_8_c: _ff_h264_idct_add16intra_8_c,\n    /** @export */ ff_h264_idct_add16intra_9_c: _ff_h264_idct_add16intra_9_c,\n    /** @export */ ff_h264_idct_add8_10_c: _ff_h264_idct_add8_10_c,\n    /** @export */ ff_h264_idct_add8_12_c: _ff_h264_idct_add8_12_c,\n    /** @export */ ff_h264_idct_add8_14_c: _ff_h264_idct_add8_14_c,\n    /** @export */ ff_h264_idct_add8_422_10_c: _ff_h264_idct_add8_422_10_c,\n    /** @export */ ff_h264_idct_add8_422_12_c: _ff_h264_idct_add8_422_12_c,\n    /** @export */ ff_h264_idct_add8_422_14_c: _ff_h264_idct_add8_422_14_c,\n    /** @export */ ff_h264_idct_add8_422_8_c: _ff_h264_idct_add8_422_8_c,\n    /** @export */ ff_h264_idct_add8_422_9_c: _ff_h264_idct_add8_422_9_c,\n    /** @export */ ff_h264_idct_add8_8_c: _ff_h264_idct_add8_8_c,\n    /** @export */ ff_h264_idct_add8_9_c: _ff_h264_idct_add8_9_c,\n    /** @export */ ff_h264_idct_add_10_c: _ff_h264_idct_add_10_c,\n    /** @export */ ff_h264_idct_add_12_c: _ff_h264_idct_add_12_c,\n    /** @export */ ff_h264_idct_add_14_c: _ff_h264_idct_add_14_c,\n    /** @export */ ff_h264_idct_add_8_c: _ff_h264_idct_add_8_c,\n    /** @export */ ff_h264_idct_add_9_c: _ff_h264_idct_add_9_c,\n    /** @export */ ff_h264_idct_dc_add_10_c: _ff_h264_idct_dc_add_10_c,\n    /** @export */ ff_h264_idct_dc_add_12_c: _ff_h264_idct_dc_add_12_c,\n    /** @export */ ff_h264_idct_dc_add_14_c: _ff_h264_idct_dc_add_14_c,\n    /** @export */ ff_h264_idct_dc_add_8_c: _ff_h264_idct_dc_add_8_c,\n    /** @export */ ff_h264_idct_dc_add_9_c: _ff_h264_idct_dc_add_9_c,\n    /** @export */ ff_h264_luma_dc_dequant_idct_10_c: _ff_h264_luma_dc_dequant_idct_10_c,\n    /** @export */ ff_h264_luma_dc_dequant_idct_12_c: _ff_h264_luma_dc_dequant_idct_12_c,\n    /** @export */ ff_h264_luma_dc_dequant_idct_14_c: _ff_h264_luma_dc_dequant_idct_14_c,\n    /** @export */ ff_h264_luma_dc_dequant_idct_8_c: _ff_h264_luma_dc_dequant_idct_8_c,\n    /** @export */ ff_h264_luma_dc_dequant_idct_9_c: _ff_h264_luma_dc_dequant_idct_9_c,\n    /** @export */ ff_h264_mb_sizes: _ff_h264_mb_sizes,\n    /** @export */ ff_h264_p_mb_type_info: _ff_h264_p_mb_type_info,\n    /** @export */ ff_h264_p_sub_mb_type_info: _ff_h264_p_sub_mb_type_info,\n    /** @export */ ff_h264_quant_div6: _ff_h264_quant_div6,\n    /** @export */ ff_h264_quant_rem6: _ff_h264_quant_rem6,\n    /** @export */ ff_h264_update_thread_context: _ff_h264_update_thread_context,\n    /** @export */ ff_h264_update_thread_context_for_user: _ff_h264_update_thread_context_for_user,\n    /** @export */ ff_hcscale_fast_c: _ff_hcscale_fast_c,\n    /** @export */ ff_hyscale_fast_c: _ff_hyscale_fast_c,\n    /** @export */ ff_id3v1_genre_str: _ff_id3v1_genre_str,\n    /** @export */ ff_id3v2_34_metadata_conv: _ff_id3v2_34_metadata_conv,\n    /** @export */ ff_id3v2_4_metadata_conv: _ff_id3v2_4_metadata_conv,\n    /** @export */ ff_id3v2_mime_tags: _ff_id3v2_mime_tags,\n    /** @export */ ff_id3v2_picture_types: _ff_id3v2_picture_types,\n    /** @export */ ff_imdct_calc_c: _ff_imdct_calc_c,\n    /** @export */ ff_imdct_half_c: _ff_imdct_half_c,\n    /** @export */ ff_interleave_packet_passthrough: _ff_interleave_packet_passthrough,\n    /** @export */ ff_interleave_packet_per_dts: _ff_interleave_packet_per_dts,\n    /** @export */ ff_ipod_muxer: _ff_ipod_muxer,\n    /** @export */ ff_k_to_i_20: _ff_k_to_i_20,\n    /** @export */ ff_k_to_i_34: _ff_k_to_i_34,\n    /** @export */ ff_libopenh264_encoder: _ff_libopenh264_encoder,\n    /** @export */ ff_libopenh264_trace_callback: _ff_libopenh264_trace_callback,\n    /** @export */ ff_log2_tab: _ff_log2_tab,\n    /** @export */ ff_mdct_calc_c: _ff_mdct_calc_c,\n    /** @export */ ff_mov_demuxer: _ff_mov_demuxer,\n    /** @export */ ff_mov_track_kind_table: _ff_mov_track_kind_table,\n    /** @export */ ff_mp4_muxer: _ff_mp4_muxer,\n    /** @export */ ff_mp4_obj_type: _ff_mp4_obj_type,\n    /** @export */ ff_mpa_freq_tab: _ff_mpa_freq_tab,\n    /** @export */ ff_mpeg4audio_channels: _ff_mpeg4audio_channels,\n    /** @export */ ff_mpeg4audio_sample_rates: _ff_mpeg4audio_sample_rates,\n    /** @export */ ff_reverse: _ff_reverse,\n    /** @export */ ff_rgb24toyv12: _ff_rgb24toyv12,\n    /** @export */ ff_rgb24toyv12_c: _ff_rgb24toyv12_c,\n    /** @export */ ff_riff_info_conv: _ff_riff_info_conv,\n    /** @export */ ff_sbr_noise_table: _ff_sbr_noise_table,\n    /** @export */ ff_se_golomb_vlc_code: _ff_se_golomb_vlc_code,\n    /** @export */ ff_sine_1024: _ff_sine_1024,\n    /** @export */ ff_sine_128: _ff_sine_128,\n    /** @export */ ff_sine_2048: _ff_sine_2048,\n    /** @export */ ff_sine_256: _ff_sine_256,\n    /** @export */ ff_sine_32: _ff_sine_32,\n    /** @export */ ff_sine_4096: _ff_sine_4096,\n    /** @export */ ff_sine_512: _ff_sine_512,\n    /** @export */ ff_sine_64: _ff_sine_64,\n    /** @export */ ff_sine_8192: _ff_sine_8192,\n    /** @export */ ff_sine_windows: _ff_sine_windows,\n    /** @export */ ff_startcode_find_candidate_c: _ff_startcode_find_candidate_c,\n    /** @export */ ff_swb_offset_1024: _ff_swb_offset_1024,\n    /** @export */ ff_swb_offset_120: _ff_swb_offset_120,\n    /** @export */ ff_swb_offset_128: _ff_swb_offset_128,\n    /** @export */ ff_swb_offset_480: _ff_swb_offset_480,\n    /** @export */ ff_swb_offset_512: _ff_swb_offset_512,\n    /** @export */ ff_swb_offset_960: _ff_swb_offset_960,\n    /** @export */ ff_sws_alphablendaway: _ff_sws_alphablendaway,\n    /** @export */ ff_sws_context_class: _ff_sws_context_class,\n    /** @export */ ff_sws_rgb2rgb_init: _ff_sws_rgb2rgb_init,\n    /** @export */ ff_sws_slice_worker: _ff_sws_slice_worker,\n    /** @export */ ff_tns_max_bands_1024: _ff_tns_max_bands_1024,\n    /** @export */ ff_tns_max_bands_128: _ff_tns_max_bands_128,\n    /** @export */ ff_tns_max_bands_480: _ff_tns_max_bands_480,\n    /** @export */ ff_tns_max_bands_512: _ff_tns_max_bands_512,\n    /** @export */ ff_ue_golomb_vlc_code: _ff_ue_golomb_vlc_code,\n    /** @export */ ff_urlcontext_child_class_iterate: _ff_urlcontext_child_class_iterate,\n    /** @export */ ff_wav_codec_tags_list: _ff_wav_codec_tags_list,\n    /** @export */ ff_wav_demuxer: _ff_wav_demuxer,\n    /** @export */ ff_yuv2rgb_coeffs: _ff_yuv2rgb_coeffs,\n    /** @export */ ff_zigzag_direct: _ff_zigzag_direct,\n    /** @export */ ff_zigzag_scan: _ff_zigzag_scan,\n    /** @export */ ffurl_context_class: _ffurl_context_class,\n    /** @export */ ffurl_get_short_seek: _ffurl_get_short_seek,\n    /** @export */ ffurl_read: _ffurl_read,\n    /** @export */ ffurl_seek: _ffurl_seek,\n    /** @export */ ffurl_write: _ffurl_write,\n    /** @export */ getaddrinfo: _getaddrinfo,\n    /** @export */ getnameinfo: _getnameinfo,\n    /** @export */ glActiveTexture: _glActiveTexture,\n    /** @export */ glAttachShader: _glAttachShader,\n    /** @export */ glBindAttribLocation: _glBindAttribLocation,\n    /** @export */ glBindBuffer: _glBindBuffer,\n    /** @export */ glBindFramebuffer: _glBindFramebuffer,\n    /** @export */ glBindRenderbuffer: _glBindRenderbuffer,\n    /** @export */ glBindTexture: _glBindTexture,\n    /** @export */ glBlendFunc: _glBlendFunc,\n    /** @export */ glBlitFramebuffer: _glBlitFramebuffer,\n    /** @export */ glBufferData: _glBufferData,\n    /** @export */ glCheckFramebufferStatus: _glCheckFramebufferStatus,\n    /** @export */ glClear: _glClear,\n    /** @export */ glClearColor: _glClearColor,\n    /** @export */ glClearDepthf: _glClearDepthf,\n    /** @export */ glClearStencil: _glClearStencil,\n    /** @export */ glClipControlEXT: _glClipControlEXT,\n    /** @export */ glColorMask: _glColorMask,\n    /** @export */ glCompileShader: _glCompileShader,\n    /** @export */ glCreateProgram: _glCreateProgram,\n    /** @export */ glCreateShader: _glCreateShader,\n    /** @export */ glCullFace: _glCullFace,\n    /** @export */ glDeleteBuffers: _glDeleteBuffers,\n    /** @export */ glDeleteFramebuffers: _glDeleteFramebuffers,\n    /** @export */ glDeleteProgram: _glDeleteProgram,\n    /** @export */ glDeleteRenderbuffers: _glDeleteRenderbuffers,\n    /** @export */ glDeleteShader: _glDeleteShader,\n    /** @export */ glDeleteSync: _glDeleteSync,\n    /** @export */ glDeleteTextures: _glDeleteTextures,\n    /** @export */ glDepthFunc: _glDepthFunc,\n    /** @export */ glDepthMask: _glDepthMask,\n    /** @export */ glDepthRangef: _glDepthRangef,\n    /** @export */ glDetachShader: _glDetachShader,\n    /** @export */ glDisable: _glDisable,\n    /** @export */ glDisableVertexAttribArray: _glDisableVertexAttribArray,\n    /** @export */ glDrawArrays: _glDrawArrays,\n    /** @export */ glDrawArraysInstanced: _glDrawArraysInstanced,\n    /** @export */ glDrawElements: _glDrawElements,\n    /** @export */ glDrawElementsInstanced: _glDrawElementsInstanced,\n    /** @export */ glEnable: _glEnable,\n    /** @export */ glEnableVertexAttribArray: _glEnableVertexAttribArray,\n    /** @export */ glFenceSync: _glFenceSync,\n    /** @export */ glFramebufferRenderbuffer: _glFramebufferRenderbuffer,\n    /** @export */ glFramebufferTexture2D: _glFramebufferTexture2D,\n    /** @export */ glFrontFace: _glFrontFace,\n    /** @export */ glGenBuffers: _glGenBuffers,\n    /** @export */ glGenFramebuffers: _glGenFramebuffers,\n    /** @export */ glGenRenderbuffers: _glGenRenderbuffers,\n    /** @export */ glGenTextures: _glGenTextures,\n    /** @export */ glGetBufferSubData: _glGetBufferSubData,\n    /** @export */ glGetError: _glGetError,\n    /** @export */ glGetFloatv: _glGetFloatv,\n    /** @export */ glGetIntegerv: _glGetIntegerv,\n    /** @export */ glGetProgramInfoLog: _glGetProgramInfoLog,\n    /** @export */ glGetProgramiv: _glGetProgramiv,\n    /** @export */ glGetShaderInfoLog: _glGetShaderInfoLog,\n    /** @export */ glGetShaderiv: _glGetShaderiv,\n    /** @export */ glGetString: _glGetString,\n    /** @export */ glGetSynciv: _glGetSynciv,\n    /** @export */ glGetUniformLocation: _glGetUniformLocation,\n    /** @export */ glIsEnabled: _glIsEnabled,\n    /** @export */ glLinkProgram: _glLinkProgram,\n    /** @export */ glPixelStorei: _glPixelStorei,\n    /** @export */ glReadPixels: _glReadPixels,\n    /** @export */ glRenderbufferStorage: _glRenderbufferStorage,\n    /** @export */ glShaderSource: _glShaderSource,\n    /** @export */ glStencilFunc: _glStencilFunc,\n    /** @export */ glStencilOp: _glStencilOp,\n    /** @export */ glTexImage2D: _glTexImage2D,\n    /** @export */ glTexImage3D: _glTexImage3D,\n    /** @export */ glTexParameteri: _glTexParameteri,\n    /** @export */ glUniform1f: _glUniform1f,\n    /** @export */ glUniform1fv: _glUniform1fv,\n    /** @export */ glUniform1i: _glUniform1i,\n    /** @export */ glUniform1iv: _glUniform1iv,\n    /** @export */ glUniform1ui: _glUniform1ui,\n    /** @export */ glUniform2f: _glUniform2f,\n    /** @export */ glUniform2fv: _glUniform2fv,\n    /** @export */ glUniform3fv: _glUniform3fv,\n    /** @export */ glUniform4f: _glUniform4f,\n    /** @export */ glUniform4fv: _glUniform4fv,\n    /** @export */ glUniform4uiv: _glUniform4uiv,\n    /** @export */ glUniformMatrix3fv: _glUniformMatrix3fv,\n    /** @export */ glUniformMatrix4fv: _glUniformMatrix4fv,\n    /** @export */ glUseProgram: _glUseProgram,\n    /** @export */ glVertexAttrib4f: _glVertexAttrib4f,\n    /** @export */ glVertexAttribDivisor: _glVertexAttribDivisor,\n    /** @export */ glVertexAttribIPointer: _glVertexAttribIPointer,\n    /** @export */ glVertexAttribPointer: _glVertexAttribPointer,\n    /** @export */ glViewport: _glViewport,\n    /** @export */ interleaveBytes: _interleaveBytes,\n    /** @export */ memory: wasmMemory,\n    /** @export */ planar2x: _planar2x,\n    /** @export */ proc_exit: _proc_exit,\n    /** @export */ random_get: _random_get,\n    /** @export */ rgb12to15: _rgb12to15,\n    /** @export */ rgb12tobgr12: _rgb12tobgr12,\n    /** @export */ rgb15to16: _rgb15to16,\n    /** @export */ rgb15to24: _rgb15to24,\n    /** @export */ rgb15to32: _rgb15to32,\n    /** @export */ rgb15tobgr15: _rgb15tobgr15,\n    /** @export */ rgb15tobgr16: _rgb15tobgr16,\n    /** @export */ rgb15tobgr24: _rgb15tobgr24,\n    /** @export */ rgb15tobgr32: _rgb15tobgr32,\n    /** @export */ rgb16to15: _rgb16to15,\n    /** @export */ rgb16to24: _rgb16to24,\n    /** @export */ rgb16to32: _rgb16to32,\n    /** @export */ rgb16tobgr15: _rgb16tobgr15,\n    /** @export */ rgb16tobgr16: _rgb16tobgr16,\n    /** @export */ rgb16tobgr24: _rgb16tobgr24,\n    /** @export */ rgb16tobgr32: _rgb16tobgr32,\n    /** @export */ rgb24to15: _rgb24to15,\n    /** @export */ rgb24to16: _rgb24to16,\n    /** @export */ rgb24to32: _rgb24to32,\n    /** @export */ rgb24tobgr15: _rgb24tobgr15,\n    /** @export */ rgb24tobgr16: _rgb24tobgr16,\n    /** @export */ rgb24tobgr24: _rgb24tobgr24,\n    /** @export */ rgb24tobgr32: _rgb24tobgr32,\n    /** @export */ rgb32to15: _rgb32to15,\n    /** @export */ rgb32to16: _rgb32to16,\n    /** @export */ rgb32to24: _rgb32to24,\n    /** @export */ rgb32tobgr15: _rgb32tobgr15,\n    /** @export */ rgb32tobgr16: _rgb32tobgr16,\n    /** @export */ rgb32tobgr24: _rgb32tobgr24,\n    /** @export */ rgb48to64_bswap: _rgb48to64_bswap,\n    /** @export */ rgb48to64_nobswap: _rgb48to64_nobswap,\n    /** @export */ rgb48tobgr48_bswap: _rgb48tobgr48_bswap,\n    /** @export */ rgb48tobgr48_nobswap: _rgb48tobgr48_nobswap,\n    /** @export */ rgb48tobgr64_bswap: _rgb48tobgr64_bswap,\n    /** @export */ rgb48tobgr64_nobswap: _rgb48tobgr64_nobswap,\n    /** @export */ rgb64to48_bswap: _rgb64to48_bswap,\n    /** @export */ rgb64to48_nobswap: _rgb64to48_nobswap,\n    /** @export */ rgb64tobgr48_bswap: _rgb64tobgr48_bswap,\n    /** @export */ rgb64tobgr48_nobswap: _rgb64tobgr48_nobswap,\n    /** @export */ shuffle_bytes_0321: _shuffle_bytes_0321,\n    /** @export */ shuffle_bytes_1230: _shuffle_bytes_1230,\n    /** @export */ shuffle_bytes_2103: _shuffle_bytes_2103,\n    /** @export */ shuffle_bytes_3012: _shuffle_bytes_3012,\n    /** @export */ shuffle_bytes_3210: _shuffle_bytes_3210,\n    /** @export */ swr_alloc: _swr_alloc,\n    /** @export */ swr_convert: _swr_convert,\n    /** @export */ swr_init: _swr_init,\n    /** @export */ swri_resampler: _swri_resampler,\n    /** @export */ sws_convertPalette8ToPacked24: _sws_convertPalette8ToPacked24,\n    /** @export */ sws_convertPalette8ToPacked32: _sws_convertPalette8ToPacked32,\n    /** @export */ sws_freeContext: _sws_freeContext,\n    /** @export */ sws_getContext: _sws_getContext,\n    /** @export */ sws_scale: _sws_scale,\n    /** @export */ uuid_generate: _uuid_generate,\n    /** @export */ uuid_unparse: _uuid_unparse,\n    /** @export */ uyvytoyuv420: _uyvytoyuv420,\n    /** @export */ uyvytoyuv422: _uyvytoyuv422,\n    /** @export */ vu9_to_vu12: _vu9_to_vu12,\n    /** @export */ yuv422ptouyvy: _yuv422ptouyvy,\n    /** @export */ yuv422ptoyuy2: _yuv422ptoyuy2,\n    /** @export */ yuy2toyv12: _yuy2toyv12,\n    /** @export */ yuyvtoyuv420: _yuyvtoyuv420,\n    /** @export */ yuyvtoyuv422: _yuyvtoyuv422,\n    /** @export */ yv12touyvy: _yv12touyvy,\n    /** @export */ yv12toyuy2: _yv12toyuy2,\n    /** @export */ yvu9_to_yuy2: _yvu9_to_yuy2\n  };\n}\n\n// include: postamble.js\n// === Auto-generated postamble setup entry stuff ===\nvar calledRun;\n\nfunction callMain(args = []) {\n  assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module[\"onRuntimeInitialized\"])');\n  assert(typeof onPreRuns === \"undefined\" || onPreRuns.length == 0, \"cannot call main when preRun functions remain to be called\");\n  var entryFunction = resolveGlobalSymbol(\"main\").sym;\n  // Main modules can't tell if they have main() at compile time, since it may\n  // arrive from a dynamic library.\n  if (!entryFunction) return;\n  args.unshift(thisProgram);\n  var argc = args.length;\n  var argv = stackAlloc((argc + 1) * 4);\n  var argv_ptr = argv;\n  for (var arg of args) {\n    (growMemViews(), HEAPU32)[((argv_ptr) >> 2)] = stringToUTF8OnStack(arg);\n    argv_ptr += 4;\n  }\n  (growMemViews(), HEAPU32)[((argv_ptr) >> 2)] = 0;\n  try {\n    var ret = entryFunction(argc, argv);\n    // if we're not running an evented main loop, it's time to exit\n    exitJS(ret, /* implicit = */ true);\n    return ret;\n  } catch (e) {\n    return handleException(e);\n  }\n}\n\nfunction stackCheckInit() {\n  // This is normally called automatically during __wasm_call_ctors but need to\n  // get these values before even running any of the ctors so we call it redundantly\n  // here.\n  // See $establishStackSpace for the equivalent code that runs on a thread\n  assert(!ENVIRONMENT_IS_PTHREAD);\n  _emscripten_stack_init();\n  // TODO(sbc): Move writeStackCookie to native to to avoid this.\n  writeStackCookie();\n}\n\nfunction run(args = programArgs) {\n  if (runDependencies > 0) {\n    dependenciesFulfilled = run;\n    return;\n  }\n  if ((ENVIRONMENT_IS_PTHREAD)) {\n    readyPromiseResolve?.(Module);\n    initRuntime();\n    return;\n  }\n  stackCheckInit();\n  preRun();\n  // a preRun added a dependency, run will be called later\n  if (runDependencies > 0) {\n    dependenciesFulfilled = run;\n    return;\n  }\n  function doRun() {\n    // run may have just been called through dependencies being fulfilled just in this very frame,\n    // or while the async setStatus time below was happening\n    assert(!calledRun);\n    calledRun = true;\n    Module[\"calledRun\"] = true;\n    if (ABORT) return;\n    initRuntime();\n    preMain();\n    readyPromiseResolve?.(Module);\n    Module[\"onRuntimeInitialized\"]?.();\n    consumedModuleProp(\"onRuntimeInitialized\");\n    var noInitialRun = Module[\"noInitialRun\"] || false;\n    if (!noInitialRun) callMain(args);\n    postRun();\n  }\n  if (Module[\"setStatus\"]) {\n    Module[\"setStatus\"](\"Running...\");\n    setTimeout(() => {\n      setTimeout(() => Module[\"setStatus\"](\"\"), 1);\n      doRun();\n    }, 1);\n  } else {\n    doRun();\n  }\n  checkStackCookie();\n}\n\nfunction checkUnflushedContent() {\n  // Compiler settings do not allow exiting the runtime, so flushing\n  // the streams is not possible. but in ASSERTIONS mode we check\n  // if there was something to flush, and if so tell the user they\n  // should request that the runtime be exitable.\n  // Normally we would not even include flush() at all, but in ASSERTIONS\n  // builds we do so just for this check, and here we see if there is any\n  // content to flush, that is, we check if there would have been\n  // something a non-ASSERTIONS build would have not seen.\n  // How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0\n  // mode (which has its own special function for this; otherwise, all\n  // the code is inside libc)\n  var oldOut = out;\n  var oldErr = err;\n  var has = false;\n  out = err = x => {\n    has = true;\n  };\n  try {\n    // it doesn't matter if it fails\n    // In WasmFS we must also flush the WasmFS internal buffers, for this check\n    // to work.\n    _wasmfs_flush();\n  } catch (e) {}\n  out = oldOut;\n  err = oldErr;\n  if (has) {\n    warnOnce(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.\");\n    warnOnce(\"(this may also be due to not including full filesystem support - try building with -sFORCE_FILESYSTEM)\");\n  }\n}\n\nvar wasmExports;\n\nif ((!(ENVIRONMENT_IS_PTHREAD))) {\n  // Call createWasm on startup if we are the main thread.\n  // Worker threads call this once they receive the module via postMessage\n  // In modularize mode the generated code is within a factory function so we\n  // can use await here (since it's not top-level-await).\n  wasmExports = await (createWasm());\n  run();\n}\n\n// end include: postamble.js\n// include: postamble_modularize.js\n// In MODULARIZE mode we wrap the generated code in a factory function\n// and return either the Module itself, or a promise of the module.\n// We assign to the `moduleRtn` global here and configure closure to see\n// this as an extern so it won't get minified.\nif (runtimeInitialized) {\n  moduleRtn = Module;\n} else {\n  // Set up the promise that indicates the Module is initialized\n  moduleRtn = new Promise((resolve, reject) => {\n    readyPromiseResolve = resolve;\n    readyPromiseReject = reject;\n  });\n}\n\n// Assertion for attempting to access module properties on the incoming\n// moduleArg.  In the past we used this object as the prototype of the module\n// and assigned properties to it, but now we return a distinct object.  This\n// keeps the instance private until it is ready (i.e the promise has been\n// resolved).\nfor (const prop of Object.keys(Module)) {\n  if (!(prop in moduleArg)) {\n    Object.defineProperty(moduleArg, prop, {\n      configurable: true,\n      get() {\n        abort(`Access to module property ('${prop}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`);\n      }\n    });\n  }\n}\n\n\n  return moduleRtn;\n}\n\n// Export using a UMD style export, or ES6 exports if selected\nexport default MainModuleFactory;\n\n// Create code for detecting if we are running in a pthread.\n// Normally this detection is done when the module is itself run but\n// when running in MODULARIZE mode we need use this to know if we should\n// run the module constructor on startup (true only for pthreads).\nvar isPthread = globalThis.name?.startsWith('em-pthread');\n// In order to support both web and node we also need to detect node here.\nvar isNode = globalThis.process?.versions?.node && globalThis.process?.type != 'renderer';\nif (isNode) isPthread = (await import('node:worker_threads')).workerData === 'em-pthread'\n\nisPthread && MainModuleFactory();\n\n", "import {App} from \"App\";\nimport {FacadeWeb} from \"Engine/FacadeWeb/FacadeWeb\";\nimport {getUrlAPI} from \"./utils\";\nimport {\n    draw,\n    startDraw,\n    setBrowserUserAgent,\n    setCloudUrlAPI\n} from \"./AdapterWeb/AdapterWebAssembly\";\nimport MainModuleFactory, {\n    ClassHandle,\n    CoreDelegate,\n    CoreDelegateWeb,\n    MainModule\n} from \"./WebAssembly.mjs\";\nimport {engineName, fullBrowserVersion} from 'react-device-detect';\nimport {sleep} from \"@utils/utils\";\n\n/// React component that holds the C++ 3D engine Adapter in WebAssembly for the Web (it also loads FacadeWeb)\nexport class FactoryEngine {\n\n    private static webassemblyDATA : ArrayBuffer = null;\n\n    private static locateFile(path: string) : string {\n        if (path.endsWith(\"WebAssembly.wasm\"))\n            return \"/WebAssembly.wasm\";\n        if (path.endsWith(\"libffmpeg.wasm\"))\n            return \"/libffmpeg.wasm\";\n        if (path.endsWith(\"WebAssembly.data\"))\n            return \"/WebAssembly.data\";\n        console.error(\"Unexpected locateFile with path:\" + path);\n        return path;\n    }\n\n    private static async download(url : string) : Promise<ArrayBuffer> {\n        return new Promise((resolve, reject) => {\n            const xhr: XMLHttpRequest = new XMLHttpRequest();\n            xhr.open('GET', url, true);\n            xhr.responseType = 'arraybuffer';\n            xhr.onload = function() { resolve(xhr.response); };\n            xhr.onerror = function(e) { reject(e); };\n            xhr.send(null);\n        });\n    }\n\n    private static getPreloadedPackage(remotePackageName: string,\n                                       remotePackageSize: number): ArrayBuffer {\n        console.log('Runtime asking for remote package ' + remotePackageName +\n                    ', expected size ' + remotePackageSize + 'bytes.');\n        if (remotePackageName.endsWith(\".data\"))\n            return FactoryEngine.webassemblyDATA;\n        return null;\n    }\n\n    /// This will return a Promise containing the Emscripten Module\n    public static async create(coreDelegate: Omit<CoreDelegate, keyof ClassHandle> | null): Promise<MainModule> {\n\n        // await the download of \".data\"\n        const urlDATA = FactoryEngine.locateFile(\"WebAssembly.data\");\n        FactoryEngine.webassemblyDATA = await FactoryEngine.download(urlDATA);\n\n        // Safari (WebKit) has many bugs related to WebAssembly.Memory, so we allocate it preemptively!\n        const WASM_BLOCK_SIZE: number = 64 * 1024;\n        const MEGABYTE: number = 1024 * 1024;\n        const wasmMemory: WebAssembly.Memory | undefined = engineName === \"WebKit\" ? new WebAssembly.Memory({\n            // Version 26.2: memory growth (+ pthread) issue, so start at 1GB\n            initial: (fullBrowserVersion.startsWith(\"26.2\") ? 1000 : 32) * MEGABYTE / WASM_BLOCK_SIZE,\n            maximum: 1750 * MEGABYTE / WASM_BLOCK_SIZE, // 28000 pages = 1.75GB (max on older iOS devices)\n            shared: true\n        }) : undefined;\n\n        // asynchronously load the WASM\n        const module: MainModule = await MainModuleFactory({\n            locateFile: FactoryEngine.locateFile,\n            getPreloadedPackage: FactoryEngine.getPreloadedPackage,\n            mainScriptUrlOrBlob: `${getUrlAPI()}/WebAssembly.mjs`,\n            wasmMemory: wasmMemory\n        });\n\n        // If delegate is not null, create Core Delegate Web to assign it!\n        if (coreDelegate) {\n            const coreDelegateWeb: CoreDelegateWeb = module.CoreDelegate.implement(coreDelegate);\n            module.Core.getInstance().setDelegate(coreDelegateWeb);\n        }\n\n        // sets the FacadeWeb on the window for the Core to be able to reach\n        window.facadeWeb = new FacadeWeb(module);\n\n        // init OPFS first to make sure core has access to local storage\n        await new Promise<void>((resolve) => { module.FacadeWeb.initOPFS(() => { resolve(); }) });\n\n        return module;\n    }\n\n    public static async initialize(engine: MainModule) {\n\n        // @ts-ignore compatibility for Firefox and Safari\n        window.RTCPeerConnection ||= window.mozRTCPeerConnection || window.webkitRTCPeerConnection;\n\n        // creates RTC Peer Connection for discovering local IP\n        window.facadeWeb.createPeerConnectionDiscover();\n\n        // read the current URL endpoint and send it to the Core\n        const urlAPI: string = getUrlAPI();\n        console.log(\"Setting engine Url API:\", urlAPI);\n\n        // we will now wait until the URL api is set\n        engine.setCloudUrlAPI(urlAPI);\n        while(urlAPI !== engine.getCloudUrlAPI())\n            await sleep(50);\n\n        // read the user agent and send it to core\n        engine.setBrowserUserAgent(global.navigator.userAgent);\n\n        // call init on the Core in WebAssembly\n        engine.init();\n\n        // We are now ready!\n        startDraw(draw);\n\n        // every keydown except for those on a input or TextArea redirect\n        // to the engineControls for WASD & Arrows movements\n        window.addEventListener(\"keydown\", (event: KeyboardEvent) => {\n            if (!(event.target instanceof HTMLInputElement) && !(event.target instanceof HTMLTextAreaElement))\n                document.getElementById(\"engineControls\")?.focus();\n        });\n\n        // bind escape button to deselect all\n        window.addEventListener('keydown', (event) => {\n            if(event.key === 'Escape') {\n                engine.getFilterStudio().deselectAllNodes();\n                App.getInstance().didSelectNode(BigInt(0));\n            }\n        });\n    }\n}", "import * as React from 'react';\nimport styled from 'styled-components';\nimport {Box} from \"@mui/material\";\nimport {lightDark} from \"@root/react-components/src/values/colors/colors\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {DragAndDrop} from \"@root/Frontend/Studio/Views/DragAndDrop/DragAndDrop\";\n\nconst Wrapper = styled(Box)({\n    height: \"100%\",\n    width: \"100%\",\n    backgroundColor: lightDark,\n    \"& > canvas\" : {\n        height: \"100%\",\n        width: \"100%\",\n    }\n});\n\n\nexport class EngineCanvas extends React.Component {\n    static readonly CANVAS_ID: string = \"engineCanvas\";\n    static readonly CONTROLS_ID: string = \"engineControls\";\n\n    private readonly canvasWrapperRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    private readonly canvasRef: React.RefObject<HTMLCanvasElement> = React.createRef<HTMLCanvasElement>();\n    private readonly canvasPlaceholderRef: React.RefObject<HTMLCanvasElement> = React.createRef<HTMLCanvasElement>();\n\n    private resizeObserver: ResizeObserver | null = null;\n    private resizeTimeout: ReturnType<typeof setTimeout> | null = null;\n\n    componentDidMount() {\n        this.resizeObserver = new ResizeObserver(() => {\n            if (this.resizeTimeout)\n                clearTimeout(this.resizeTimeout);\n\n            this.resizeTimeout = setTimeout(() => this.resizeCanvas(), 100);\n        });\n\n        if (this.canvasWrapperRef.current)\n            this.resizeObserver.observe(this.canvasWrapperRef.current);\n\n        this.canvasRef.current?.addEventListener(\"click\", this.handleCanvasClick);\n    }\n\n    componentWillUnmount() {\n        if (this.resizeObserver)\n            this.resizeObserver.disconnect();\n\n        if (this.resizeTimeout)\n            clearTimeout(this.resizeTimeout);\n\n        this.canvasRef.current?.removeEventListener(\"click\", this.handleCanvasClick);\n    }\n\n    private handleCanvasClick = () => document.getElementById(\"engineControls\")?.focus();\n\n    public getCanvas(): HTMLCanvasElement | null { return this.canvasRef.current; }\n\n    public resizeCanvas() {\n        if (!this.canvasWrapperRef.current || !this.canvasRef.current)\n            return;\n\n        const pixelPerPoint: number = window.devicePixelRatio || 1;\n        const width: number = this.canvasWrapperRef.current.offsetWidth * pixelPerPoint;\n        const height: number = this.canvasWrapperRef.current.offsetHeight * pixelPerPoint;\n\n        this.canvasRef.current.width = width;\n        this.canvasRef.current.height = height;\n\n        App.getInstance().getEngine()?.setPixelPerPoint(pixelPerPoint);\n        App.getInstance().getEngine()?.setViewportSize(width, height);\n    }\n\n    public setPlaceholderCanvasVisibility(visible: boolean) {\n        if (!this.canvasPlaceholderRef.current || !this.canvasRef.current)\n            return;\n\n        const ctx: CanvasRenderingContext2D | null = this.canvasPlaceholderRef.current.getContext(\"2d\");\n        if (!ctx)\n            return;\n\n        if(visible) {\n            this.canvasPlaceholderRef.current.style.display = \"block\";\n            this.canvasPlaceholderRef.current.width = this.canvasRef.current.width;\n            this.canvasPlaceholderRef.current.height = this.canvasRef.current.height;\n            ctx.drawImage(this.canvasRef.current, 0, 0);\n        }\n        else\n            this.canvasPlaceholderRef.current.style.display = \"none\";\n    }\n\n    public render(){\n        return (\n            <Wrapper ref={this.canvasWrapperRef}>\n                <canvas style={{display: \"none\"}} ref={this.canvasPlaceholderRef}/>\n                <canvas id={EngineCanvas.CANVAS_ID} ref={this.canvasRef} onContextMenu={e => e.preventDefault()}/>\n                <div tabIndex={0} id={EngineCanvas.CONTROLS_ID} style={{ position: \"fixed\", zIndex: -1, top:0, left: 0 }} />\n                <DragAndDrop />\n            </Wrapper>\n        )\n    }\n}\n", "import * as React from 'react';\nimport i18next from \"i18next\";\nimport {App} from \"App\";\nimport {getCurrentStepID, getStepType} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {canUserEditCurrentWorld} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {overlay, primary, red, shadowBlue, white} from \"@root/react-components/src/values/colors/colors\";\nimport {secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\nimport {Box, styled} from \"@mui/material\";\n\nconst Wrapper = styled(Box)({\n    position: \"fixed\",\n    height: \"100%\",\n    width: \"100%\",\n    backgroundColor: overlay,\n    color: white,\n    display: \"block\",\n    top: 0,\n    left: 0,\n    zIndex: 9999999,\n    font: secondaryFontMedium\n});\n\nconst Circle = styled(Box)((props: {red?: number}) => ({\n    height: \"300px\",\n    width: \"300px\",\n    position: \"absolute\",\n    borderRadius: \"50%\",\n    backgroundColor: props.red ? red : primary,\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    padding: \"30px\",\n    textAlign: \"center\",\n    boxShadow: shadowBlue,\n    transform: \"translate(-50%, -55%)\"\n}));\n\ninterface DragAndDropState {\n    showBalloon: boolean;\n    errorMessage: string;\n}\n\nexport class DragAndDrop extends React.Component {\n    private readonly balloonRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n\n    state: DragAndDropState = { showBalloon: false, errorMessage: \"\" };\n\n    constructor(props: any) {\n        super(props);\n        this.dragEnter = this.dragEnter.bind(this);\n        this.dragOver = this.dragOver.bind(this);\n        this.dropped = this.dropped.bind(this);\n    }\n\n    componentDidMount() { this.initializeDragAndDrop(); }\n\n    componentWillUnmount() { this.removeDragAndDrop(); }\n\n    public initializeDragAndDrop(){\n        window.addEventListener('dragenter', this.dragEnter);\n        window.addEventListener('dragover', this.dragOver);\n        window.addEventListener('drop', this.dropped);\n    }\n\n    public removeDragAndDrop(){\n        window.removeEventListener('dragenter', this.dragEnter);\n        window.removeEventListener('dragover', this.dragOver);\n        window.removeEventListener('drop', this.dropped);\n    }\n\n    private dragEnter(event: DragEvent){\n        event.stopPropagation();\n        event.preventDefault();\n        if (!event.dataTransfer?.types.includes('Files'))\n            return;\n\n        let errorMessage: string = canUserEditCurrentWorld() ? \"\" : i18next.t(\"You cannot add Models to this World\");\n        if (!errorMessage)\n            errorMessage = Boolean(getCurrentSequenceID()) && getStepType(getCurrentStepID()) !== StepType.ANIMATED ?\n                i18next.t(\"You can only add a model inside an animated step or while in the world state\") : \"\";\n\n        this.setState({ showBalloon: true, errorMessage });\n    }\n\n    private dragOver(event: DragEvent){\n        event.stopPropagation();\n        event.preventDefault();\n\n        if (!event.dataTransfer?.types.includes('Files') || !this.balloonRef.current)\n            return;\n\n        // center the balloon on the mouse when dragging\n        this.balloonRef.current.style.left = `${event.clientX}px`;\n        this.balloonRef.current.style.top = `${event.clientY}px`\n    }\n\n    private async dropped(event: DragEvent): Promise<void> {\n        event.preventDefault();\n        event.stopPropagation();\n\n        const files: FileList | undefined = event.dataTransfer?.files;\n        if (!files?.length) {\n            this.dragEnd();\n            return;\n        }\n\n        const errorMessage: string = !files || files.length !== 1 ?\n            i18next.t(\"Drop only one file at the time\") : this.state.errorMessage;\n\n        this.dragEnd(errorMessage);\n        if (!errorMessage)\n            await App.getInstance().importFile(files[0]);\n    }\n\n    private dragEnd(errorMessage: string = \"\") {\n        this.setState({ errorMessage, showBalloon: false });\n        if (errorMessage)\n            Prompt.alert(errorMessage);\n    }\n\n    public render(){\n\n        return (\n            <>\n                {this.state.showBalloon &&\n                    <Wrapper>\n                        <Circle ref={this.balloonRef} red={Number(Boolean(this.state.errorMessage))}>\n                            {this.state.errorMessage ? i18next.t(this.state.errorMessage) :\n                                i18next.t(\"Drop 3D model here\")\n                            }\n                        </Circle>\n                    </Wrapper>\n                }\n            </>\n        );\n    }\n}", "import * as React from \"react\";\nimport styled from 'styled-components';\nimport {dark, overlay, white} from \"../values/colors/colors\";\nimport {primaryFontXLarge,secondaryFontLarge,secondaryFontMedium} from \"../values/fonts/fonts\";\nimport {Box} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {Button} from \"../buttons/Button\";\n\nconst Overlay = styled(Box)({\n    height: \"100%\",\n    width: \"100%\",\n    position: \"fixed\",\n    top: 0,\n    right: 0,\n    zIndex: 1000,\n    backgroundColor: overlay,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n});\n\nconst Inner = styled(Box)({\n    maxWidth: \"450px\",\n    textAlign: \"center\",\n    backgroundColor: white,\n    borderRadius: \"24px\",\n    padding: \"24px\",\n    boxSizing: \"border-box\",\n    color: dark,\n    font: secondaryFontMedium,\n    display: \"flex\",\n    boxShadow: \"rgba(0, 0, 0, 0.16) 0px 3px 6px, rgba(0, 0, 0, 0.23) 0px 3px 6px\",\n    flexDirection: \"column\",\n    gap: \"8px\"\n});\n\nconst Title = styled(Box)({\n    font: primaryFontXLarge\n});\n\nconst MessageWrapper = styled(Box)({\n    height: \"fit-content\",\n    maxHeight: \"450px\",\n    padding: \"12px 6px\",\n    overflowY: \"auto\",\n    textAlign: \"left\"\n});\n\nexport const ButtonsContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    gap: \"10px\"\n});\n\ninterface PromptState {\n    message: string;\n    btnLabel: string;\n    isAnAlert: boolean | null;\n    isConfirmButtonRed: boolean;\n}\n\nexport class Prompt extends React.Component {\n    private static instance: Prompt | null = null;\n    private static resolver: (value: (boolean | PromiseLike<boolean>)) => void;\n\n    state: PromptState = {\n        message: \"\",\n        btnLabel: \"\",\n        isAnAlert: null,\n        isConfirmButtonRed: false\n    }\n\n    constructor(props: object) {\n        super(props);\n        Prompt.instance = this; // Set the static instance to this component\n    }\n\n    //  alert is only  a message without any action (except \"I understand\")\n    public static alert(message: string, btnLabel: string = i18next.t(\"I understand\"))  {\n        const instance: Prompt | null = Prompt.instance;\n        if (!instance) {\n            console.error(\"Error: Prompt has no instance\"); // log error and abort!\n            return;\n        }\n        instance.setState({message, btnLabel: btnLabel ?? i18next.t(\"I understand\"), isAnAlert: true});\n    }\n\n    // confirm is confirmation message with 2 actions: Confirm or Cancel\n    public static confirm(message: string, confirmLabel = i18next.t(\"Confirm\"), isConfirmButtonRed = false): Promise<boolean> | boolean {\n        const instance: Prompt | null = Prompt.instance;\n        if (!instance) {\n            console.error(\"Error: Prompt has no instance\"); // log error and abort!\n            return false;\n        }\n\n        const confirmedPromise: Promise<boolean> = new Promise((res) => {\n            Prompt.resolver = res;\n        });\n\n        instance.setState({\n            message,\n            btnLabel: confirmLabel ?? i18next.t(\"I understand\"),\n            isAnAlert: false,\n            isConfirmButtonRed\n        });\n\n        return confirmedPromise;\n    }\n\n    private static onClose() {\n        if (!Prompt.instance)\n            return;\n\n        Prompt.instance.setState({message: \"\", btnLabel: \"\", isAnAlert: null});\n    }\n\n    render() {\n        if (!this.state.message || this.state.isAnAlert === null)\n            return null;\n\n        return(\n            <Overlay>\n                <Inner onClick={(e: React.MouseEvent<HTMLDivElement>) => e.stopPropagation()}>\n                    <Title style={{textAlign: this.state.isAnAlert ? \"center\" : \"left\"}}>\n                        {i18next.t(\"Warning\")}\n                    </Title>\n                    { this.state.isAnAlert ?\n                        <>\n                            <MessageWrapper>\n                                {this.state.message.split('\\n').map((line: string, index: number) =>\n                                    <Box key={index} style={{padding: \"2px\"}}> {line} </Box>\n                                )}\n                            </MessageWrapper>\n                            <Button style={{margin: \"0px auto\", width: \"fit-content\"}} onClick={() => Prompt.onClose()}>\n                                   {this.state.btnLabel}\n                            </Button>\n                        </>\n                    :\n                        <>\n                            <Box style={{padding: \"0px 0px 10px\", font: secondaryFontLarge, textAlign: \"left\"}}>\n                                {this.state.message}\n                            </Box>\n                            <ButtonsContainer>\n                                <Button\n                                    variant=\"outlined\"\n                                    onClick={() => {\n                                        Prompt.resolver(false);\n                                        Prompt.onClose();\n                                    }}\n                                >\n                                    {i18next.t(\"Cancel\")}\n                                </Button>\n                                <Button\n                                    id=\"prompt-confirmation-btn\"\n                                    color={ this.state.isConfirmButtonRed ? \"error\" : \"primary\" }\n                                    onClick={() => {\n                                        Prompt.resolver(true);\n                                        Prompt.onClose();\n                                    }}\n                                >\n                                    {this.state.btnLabel}\n                                </Button>\n                            </ButtonsContainer>\n                        </>\n                    }\n                </Inner>\n            </Overlay>\n        );\n    }\n}\n", "import * as React from 'react';\nimport styled from 'styled-components';\nimport {WorldsCollection} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldsCollection\";\nimport {Box} from \"@mui/material\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {WorldLibraryFilters} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldLibraryFilters\";\nimport {\n    addWorldToCurrentPeer,\n    cloneWorld,\n    createNewWorld,\n    deleteWorld,\n    getCurrentWorldID,\n    getPeerWorldIDs,\n    isWorldAuthorized,\n    leaveWorld,\n    loadWorld\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {secondaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {dark, lightDark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {CreateWorld} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/CreateWorld\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {WorldInformation} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/WorldInformation\";\nimport {DeleteWorld} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/DeleteWorld\";\nimport {WorldSidePanel} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/WorldSidePanel\";\nimport isEqual from \"lodash/isEqual\";\nimport {isWorldLoaded, queryWorldMetadata} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWorld\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\n\nconst DialogContainer = styled(Box)({\n    padding: \"40px\",\n    position: \"relative\"\n});\n\nconst Header = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n});\n\nconst Title = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: \"8px\",\n    font: secondaryFontXLarge,\n    color: white,\n});\n\nconst WorldNumberTitle = styled(Box)({\n    font: secondaryFontXLarge,\n    fontWeight: \"bold\",\n    backgroundColor: white,\n    padding: \"4px 6px 2px 6px\",\n    borderRadius: \"6px\",\n    color: dark\n});\n\nconst DialogContent = styled(Box)({\n    display: \"flex\",\n    padding: \"24px 24px 0px 24px\",\n    height: \"600px\",\n    maxHeight: \"65vh\",\n    gap: \"20px\"\n});\n\nexport enum PANEL_STATE {\n    CLOSED,\n    CREATE_WORLD,\n    RENAME_WORLD,\n    CLONE_WORLD,\n    DELETE_WORLD\n}\n\ninterface WorldLibraryState {\n    isOpen: boolean;\n    worldIDs: bigint[];\n    panelWorldID: bigint;\n    panelState: PANEL_STATE;\n    invitedWorldID: bigint;\n}\n\nconst initialState: WorldLibraryState = {\n    isOpen: false,\n    worldIDs: [],\n    panelState: PANEL_STATE.CLOSED,\n    panelWorldID: BigInt(0),\n    invitedWorldID: BigInt(0)\n}\n\nexport class WorldsLibrary extends React.Component {\n    private readonly worldCollection: React.RefObject<WorldsCollection> = React.createRef<WorldsCollection>();\n    private readonly worldInformationRef: React.RefObject<WorldInformation> = React.createRef<WorldInformation>();\n    private readonly worldsLibraryFiltersRef: React.RefObject<WorldLibraryFilters> =\n        React.createRef<WorldLibraryFilters>();\n\n    state: WorldLibraryState = initialState;\n\n    public isOpen(): boolean {\n        return this.state.isOpen;\n    }\n\n    public updateWorldsList() {\n        this.worldsLibraryFiltersRef.current?.updateWorldsList();\n    }\n\n    public updateWorld(worldID: bigint) {\n        this.worldCollection.current?.updateWorld(worldID);\n        if (this.state.invitedWorldID === worldID && isWorldAuthorized(worldID)) {\n            loadWorld(worldID);\n            this.setState({ invitedWorldID: BigInt(0) });\n        }\n    }\n\n    public openWorldLibraryDialog() { this.setState({ isOpen: true }); }\n\n    public updateWorldAsset(assetID: bigint) {\n        this.worldInformationRef.current?.updateWorldAsset(assetID);\n    }\n\n    public updateDocument(documentID: bigint) {\n        this.worldInformationRef.current?.updateDocument(documentID);\n    }\n\n    public updateVideo(videoID: bigint) {\n        this.worldInformationRef.current?.updateVideo(videoID);\n    }\n\n    public didChangeToken() {\n        this.worldsLibraryFiltersRef.current?.didChangeToken();\n    }\n\n    public updatePeer(peerID: bigint) {\n        this.worldsLibraryFiltersRef.current?.updatePeer(peerID)\n        this.worldInformationRef.current?.updatePeer(peerID);\n    }\n\n    public updateGroup(groupID: bigint) { this.worldsLibraryFiltersRef.current?.updateGroup(groupID); }\n\n    public closeWorldLibraryDialog() { this.setState({ ...initialState }); }\n\n    public setInvitedWorld(invitedWorldID: bigint) {\n        if (!invitedWorldID)\n            return;\n\n        const peerWorlds: bigint[] = getPeerWorldIDs(getCurrentPeerID());\n        if (invitedWorldID && !peerWorlds.includes(invitedWorldID))\n            addWorldToCurrentPeer(invitedWorldID);\n\n        this.setState({ invitedWorldID }, () => queryWorldMetadata(invitedWorldID));\n    }\n\n    private async createWorld(title: string, ownerType: OwnerType, ownerID: bigint): Promise<bigint> {\n        const newWorldID: bigint = await createNewWorld(title, ownerType, ownerID);\n        if (newWorldID) // TODO(@frank): world should probably be added to the list after creation!\n            AdapterLog.INFO(`World created with ID: ${newWorldID}`);\n        else {\n            AdapterLog.ERROR(\"Unable to create world!\");\n            return BigInt(0);\n        }\n        if (!isWorldLoaded(newWorldID))\n            AdapterLog.ERROR(\"World should be loaded after creation!\");\n        return newWorldID;\n    }\n\n    private handleDeleteWorld(canPeerDeleteWorld: boolean) {\n        if (canPeerDeleteWorld)\n            deleteWorld(this.state.panelWorldID);\n        else\n            leaveWorld(this.state.panelWorldID);\n\n        this.setState((prevState: WorldLibraryState) => ({\n            worldIDs: prevState.worldIDs?.filter((worldID: bigint): boolean => worldID !== this.state.panelWorldID)\n        }));\n        this.closePanel();\n    }\n\n    private closePanel() {\n        this.setState({ panelWorldID: null, panelState: PANEL_STATE.CLOSED });\n    }\n\n    private onWorldsChange(worldIDs: bigint[]) {\n        if (isEqual(this.state.worldIDs, worldIDs))\n            return;\n\n        this.worldCollection.current?.clearWorldsListRefMap();\n        this.setState({ worldIDs });\n    }\n\n    private handleSelectWorld(worldID: bigint) {\n        loadWorld(worldID);\n        this.closeWorldLibraryDialog();\n    }\n\n    public render() {\n        if (!this.state.isOpen)\n            return <></>;\n\n        return (\n            <Dialog\n                id=\"world-library-dialog\"\n                size={DialogSize.lg}\n                backgroundColor={lightDark}\n                innerStyle={{ padding: \"0px\", overflow: \"hidden\" }}\n                onClose={() => getCurrentWorldID() ? this.closeWorldLibraryDialog() : null}\n                closeOnClickOutside={Boolean(getCurrentWorldID())}\n            >\n                <DialogContainer>\n                    <WorldSidePanel\n                        isOpen={this.state.panelState !== PANEL_STATE.CLOSED}\n                        closePanel={() => this.closePanel()}>\n                        {{\n                            [PANEL_STATE.CREATE_WORLD]: (\n                                <CreateWorld\n                                    worldID={BigInt(0)}\n                                    closePanel={() => this.closePanel()}\n                                    createWorld={async (title: string, ownerType: OwnerType, ownerID: bigint) =>\n                                        this.handleSelectWorld(await this.createWorld(title, ownerType, ownerID))\n                                    }\n                                />\n                            ),\n                            [PANEL_STATE.CLONE_WORLD]: (\n                                <CreateWorld\n                                    worldID={this.state.panelWorldID}\n                                    closePanel={() => this.closePanel()}\n                                    createWorld={(title: string, ownerType: OwnerType, ownerID: bigint) =>\n                                        cloneWorld(this.state.panelWorldID, ownerID, ownerType, title)\n                                    }\n                                />\n                            ),\n                            [PANEL_STATE.RENAME_WORLD]: (\n                                <WorldInformation\n                                    ref={this.worldInformationRef}\n                                    worldID={this.state.panelWorldID}\n                                    isOpen={this.state.panelState === PANEL_STATE.RENAME_WORLD}\n                                    closePanel={() => this.closePanel()}\n                                />\n                            ),\n                            [PANEL_STATE.DELETE_WORLD]: (\n                                <DeleteWorld\n                                    worldID={this.state.panelWorldID}\n                                    isOpen={this.state.panelState === PANEL_STATE.DELETE_WORLD}\n                                    handleDeleteWorld={(canPeerDeleteWorld: boolean) =>\n                                        this.handleDeleteWorld(canPeerDeleteWorld)}\n                                    closePanel={() => this.closePanel()}\n                                />\n                            ),\n                            [PANEL_STATE.CLOSED]: null\n                        }[this.state.panelState]}\n                    </WorldSidePanel>\n                    <Header>\n                        <Title>\n                            {i18next.t(\"World library\")}\n                            <WorldNumberTitle id=\"worlds-library-counter\">\n                                {this.state.worldIDs?.length ?? 0}\n                            </WorldNumberTitle>\n                        </Title>\n                        <WorldLibraryFilters\n                            ref={this.worldsLibraryFiltersRef}\n                            onWorldsChange={(worldIDs: bigint[]) => this.onWorldsChange(worldIDs)}\n                        />\n                    </Header>\n                    <DialogContent>\n                        {this.state.worldIDs &&\n                            <WorldsCollection\n                                ref={this.worldCollection}\n                                worldIDs={this.state.worldIDs}\n                                handleSelectWorld={(worldID: bigint) => this.handleSelectWorld(worldID)}\n                                openWorldPanel={(panelState: PANEL_STATE, panelWorldID: bigint) =>\n                                    this.setState({ panelState, panelWorldID })\n                                }\n                            />\n                        }\n                    </DialogContent>\n                </DialogContainer>\n            </Dialog>\n        )\n    }\n}\n", "import React from \"react\";\nimport {FixedSizeGrid, GridChildComponentProps} from \"react-window\";\nimport {WorldItem} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldItem\";\nimport AutoSizer from \"react-virtualized-auto-sizer\";\nimport {lighterDark, lightGrey, white} from \"@root/react-components/src/values/colors/colors\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {Box, styled} from \"@mui/material\";\nimport {PANEL_STATE} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldsLibrary\";\nimport {CreateWorld} from \"@root/react-components/src/icons/CreateWorld\";\nimport i18next from \"i18next\";\nimport {secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst WorldCollectionContainer = styled(Box)({\n    display: \"flex\",\n    height: \"100%\",\n    width: \"100%\",\n    flexDirection: \"column\",\n    gap: \"4px\"\n});\n\nconst WorldItemContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"center\",\n});\n\nconst ButtonCreateWorld = styled(Box)({\n    width: \"148px\",\n    height: \"190px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    flexDirection: \"column\",\n    borderRadius: \"12px\",\n    margin: \"3px 0\",\n    opacity: 1,\n    \"&:hover\": {\n        backgroundColor: lighterDark,\n        cursor: \"pointer\",\n    }\n});\n\nconst TitleCreateWorld = styled(Box)({\n    font: secondaryFontLarge,\n    color: white,\n    textAlign: \"center\"\n});\n\nconst IconButtonContainer = styled(Box)({\n    width: \"100px\",\n    height: \"100px\",\n    paddingBottom: \"22px\"\n});\n\nconst GridWrap = styled(Box)({\n    display: \"flex\",\n    height: \"100%\",\n    width: \"100%\",\n});\n\nconst List = styled(FixedSizeGrid)({\n    /* width */\n    \"&::-webkit-scrollbar\": {\n        width: \"10px\",\n        height: \"10px\"\n    },\n    /* Track */\n    \"&::-webkit-scrollbar-track\": {\n        backgroundColor: \"transparent\"\n    },\n    /* Handle */\n    \"&::-webkit-scrollbar-thumb\": {\n        borderRadius: \"10px\",\n        background: lightGrey\n    },\n    /* Handle on hover */\n    \"&::-webkit-scrollbar-thumb:hover\": {\n        background: lighterDark\n    }\n})\n\nconst WORLD_NUMBER_PER_ROW: number = 5;\n\ninterface WorldsCollectionProps {\n    worldIDs: bigint[];\n    handleSelectWorld: (worldID: bigint) => void;\n    openWorldPanel: (panelState: PANEL_STATE, worldID?: bigint) => void;\n}\n\nexport class WorldsCollection extends React.Component {\n    private readonly mapWorldItemsRef: Map<bigint, React.RefObject<WorldItem>> = new Map();\n    props: WorldsCollectionProps;\n\n    public updateWorld(worldID: bigint) { this.mapWorldItemsRef.get(worldID)?.current?.updateWorld(); }\n\n    public clearWorldsListRefMap() { this.mapWorldItemsRef.clear(); }\n\n    private worldCellRenderer(props: GridChildComponentProps): JSX.Element {\n        const index: number = props.rowIndex * WORLD_NUMBER_PER_ROW + props.columnIndex;\n\n        if (index >= this.props.worldIDs.length + 1)\n            return <></>;\n\n        if(index === 0)\n            return (\n                <WorldItemContainer style={props.style}>\n                    <ButtonCreateWorld\n                        id=\"new-world-btn\"\n                        onClick={() => this.props.openWorldPanel(PANEL_STATE.CREATE_WORLD)}\n                    >\n                        <IconButtonContainer> <CreateWorld fill={white} /> </IconButtonContainer>\n                        <TitleCreateWorld> {i18next.t(\"Create World\")} </TitleCreateWorld>\n                    </ButtonCreateWorld>\n                </WorldItemContainer>\n            );\n\n        const worldID: bigint = this.props.worldIDs[index - 1];\n        const worldRef: React.RefObject<WorldItem> = React.createRef<WorldItem>();\n        this.mapWorldItemsRef.set(worldID, worldRef);\n\n        return (\n            <WorldItemContainer style={props.style}>\n                <WorldItem\n                    ref={worldRef}\n                    worldID={worldID}\n                    handleSelectWorld={(worldID: bigint) => this.props.handleSelectWorld(worldID)}\n                    openWorldPanel={(panelState: PANEL_STATE) => this.props.openWorldPanel(panelState, worldID)}\n                />\n            </WorldItemContainer>\n        );\n    }\n\n    render() {\n        if (!this.props.worldIDs)\n            return <CenteredLoading />\n\n        return(\n            <WorldCollectionContainer id=\"worlds-collection-panel\">\n                <GridWrap>\n                    <AutoSizer>\n                        {(props: {height: number, width: number}) =>\n                            <List\n                                height={props.height}\n                                width={props.width}\n                                columnCount={WORLD_NUMBER_PER_ROW}\n                                // scrollbar width : 10px divided in 3 cols\n                                columnWidth={props.width / WORLD_NUMBER_PER_ROW - (10 / WORLD_NUMBER_PER_ROW)}\n                                rowCount={Math.ceil((this.props.worldIDs.length + 1) / WORLD_NUMBER_PER_ROW)}\n                                rowHeight={200}\n                                style={{ overflowX: \"hidden\"}}\n                            >\n                                {this.worldCellRenderer.bind(this)}\n                            </List>\n                        }\n                    </AutoSizer>\n                </GridWrap>\n            </WorldCollectionContainer>\n        )\n    }\n}\n", "import * as React from \"react\";\nimport {\n    canCurrentPeerDeleteWorld,\n    canCurrentPeerEditWorld,\n    getCurrentWorldID, getPeerGroups, getWorldGroups,\n    getWorldPeers,\n    getWorldThumbnail,\n    getWorldTitle,\n    isWorldAuthorized,\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {green, lighterDark, lightWhite, primary, red, white} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Box, styled} from \"@mui/material\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Delete} from \"@root/react-components/src/icons/Delete\";\nimport {Duplicate} from \"@root/react-components/src/icons/Duplicate\";\nimport {PANEL_STATE} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldsLibrary\";\nimport {Info} from \"@root/react-components/src/icons/Info\";\nimport {isWorldLoaded, queryWorldMetadata} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWorld\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\n\n// 1px primary color image\n// source: https://shoonia.github.io/1x1/#2780bbff\nconst PLACEHOLDER_IMAGE = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAA1JREFUGFdjUG/Y/R8ABJYCYtJPB9cAAAAASUVORK5CYII=\"\n\nconst Container = styled(Box)({\n    width: \"139px\",\n    height: \"190px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"column\",\n    gap: \"6px\",\n    padding: \"4px\",\n    borderRadius: \"13px\",\n    color: white,\n    position: \"relative\",\n    \"& .world_icon_container\": {\n        opacity: \"0\",\n    },\n    \"&:hover, &.activeWorld\": {\n        backgroundColor: lighterDark,\n        transition: \"all 0.3s\",\n        cursor: \"pointer\",\n        \"& .world_icon_container\": {\n            opacity: \"1\",\n            transition: \"all 0.3s\",\n        }\n    }\n});\n\nconst WorldIconsContainer = styled(Box)({\n    position: \"absolute\",\n    right: \"10px\",\n    bottom: \"60px\",\n    display: \"flex\",\n    height: \"30px\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    gap: \"4px\"\n});\n\nconst WorldIcon = styled(Box)((props: {disabled?: number}) => ({\n    width: \"26px\",\n    height: \"26px\",\n    display: props.disabled ? \"none\" : \"flex\",\n    pointerEvents: props.disabled ? \"none\" : \"auto\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderRadius: \"16px\",\n    \"& svg\": {\n        width: \"16px\",\n        height: \"16px\",\n        color: lightWhite,\n    }\n}));\n\nconst WorldThumbnailContainer = styled(Box)({\n    width: \"135px\",\n    height: \"135px\",\n    minHeight: \"135px\",\n    overflow: \"hidden\",\n    borderRadius: \"13px\",\n    display: \"flex\",\n    justifyContent: \"center\",\n});\n\nconst WorldTitle = styled(\"span\")({\n    margin: \"auto\",\n    width: \"100%\",\n    font: secondaryFontLarge,\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    display: \"-webkit-box\",\n    flexDirection: \"column\",\n    wordWrap: \"break-word\",\n    // Deprecated but it doesn't seem to have a functional alternative. Work on Chrome & Firefox\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_flexible_box_layout/Basic_concepts_of_flexbox\n    WebkitBoxOrient: \"vertical\",\n    WebkitLineClamp: \"3\",\n    textAlign: \"center\"\n});\n\ninterface WorldItemProps {\n    worldID: bigint\n    handleSelectWorld: (worldID: bigint) => void\n    openWorldPanel: (panelState: PANEL_STATE) => void\n}\n\ninterface WorldItemState {\n    title: string,\n    thumbnail: string,\n    isDeleteDialogOpen: boolean\n    isCloneWorldDialogOpen: boolean\n}\n\nexport class WorldItem extends React.Component {\n    props: WorldItemProps\n    state: WorldItemState = {\n        title: null,\n        thumbnail: null,\n        isDeleteDialogOpen: false,\n        isCloneWorldDialogOpen: false\n    }\n\n    componentDidMount() {\n        // When a peer loses access to a world, the only way to know it\u2019s loaded is by checking if the title was fetched\n        if (isWorldLoaded(this.props.worldID) || getWorldTitle(this.props.worldID))\n            this.updateWorld();\n        else\n            queryWorldMetadata(this.props.worldID);\n    }\n\n    public updateWorld() {\n\n        const title: string = getWorldTitle(this.props.worldID);\n        if (title !== this.state.title)\n            this.setState({ title });\n\n        let thumbnail: string = getWorldThumbnail(this.props.worldID);\n        if (!thumbnail || !isWorldAuthorized(this.props.worldID))\n            thumbnail = PLACEHOLDER_IMAGE;\n        if (thumbnail !== this.state.thumbnail)\n            this.setState({ thumbnail });\n    }\n\n    private handleSelectWorld(worldID: bigint) {\n        if (isWorldAuthorized(worldID))\n            this.props.handleSelectWorld(worldID);\n    }\n\n    private openWorldPanel(e: React.MouseEvent<HTMLDivElement>, panelState: PANEL_STATE) {\n        e.stopPropagation();\n        this.props.openWorldPanel(panelState);\n    }\n\n    private isDeleteWorldEnabled(worldID: bigint): boolean {\n        if (canCurrentPeerDeleteWorld(worldID))\n            return true;\n\n        const peerID: bigint = getCurrentPeerID();\n        const peerGroupIDs: Set<bigint> = getPeerGroups(peerID);\n        const worldGroups: bigint[] = [...getWorldGroups(worldID)];\n\n        return !worldGroups.some((groupID: bigint) => peerGroupIDs.has(groupID)) &&\n            !getWorldPeers(worldID).has(peerID);\n    }\n\n    render() {\n        if (!this.state.title || !this.state.thumbnail)\n            return <CenteredLoading />;\n\n        return(\n            <>\n                <Tooltip\n                    id=\"world-access-revoked-tooltip\"\n                    // The tooltip is hidden if the string title is empty\n                    title={isWorldAuthorized(this.props.worldID) ? \"\" : i18next.t(\"Access revoked\")}\n                    arrow\n                    placement=\"top\">\n                    <Container\n                        id={this.props.worldID.toString()}\n                        className={`world-item ${getCurrentWorldID() === this.props.worldID && \"activeWorld\"}`}\n                        onClick={() => this.handleSelectWorld(this.props.worldID)}\n                    >\n                        <WorldThumbnailContainer>\n                            <img\n                                style={{ width: \"100%\", height: \"100%\", objectFit: \"cover\"}}\n                                draggable={false} src={this.state.thumbnail}\n                                alt=\"Thumb\"\n                            />\n                        </WorldThumbnailContainer>\n                        <WorldIconsContainer>\n                            <WorldIcon\n                                id=\"rename-world-icon-button\"\n                                style={{ backgroundColor: primary }}\n                                className=\"world_icon_container\"\n                                disabled={Number(!canCurrentPeerEditWorld(this.props.worldID))}\n                                onClick={(e: React.MouseEvent<HTMLDivElement>) =>\n                                    this.openWorldPanel(e, PANEL_STATE.RENAME_WORLD)}\n                            >\n                                <Info />\n                            </WorldIcon>\n                            <WorldIcon\n                                id={`delete-world-icon-button-${this.props.worldID.toString()}`}\n                                style={{ backgroundColor: red }}\n                                className=\"world_icon_container\"\n                                disabled={Number(!this.isDeleteWorldEnabled(this.props.worldID))}\n                                onClick={(e: React.MouseEvent<HTMLDivElement>) =>\n                                    this.openWorldPanel(e, PANEL_STATE.DELETE_WORLD)}\n                            >\n                                <Delete />\n                            </WorldIcon>\n                            <WorldIcon\n                                id={`duplicate-world-icon-button-${this.props.worldID.toString()}`}\n                                style={{ backgroundColor: green }}\n                                className=\"world_icon_container\"\n                                disabled={Number(!isWorldAuthorized(this.props.worldID))}\n                                onClick={(e: React.MouseEvent<HTMLDivElement>) =>\n                                    this.openWorldPanel(e, PANEL_STATE.CLONE_WORLD)}\n                            >\n                                <Duplicate />\n                            </WorldIcon>\n                        </WorldIconsContainer>\n                        <WorldTitle id=\"world-title\"> {this.state.title} </WorldTitle>\n                    </Container>\n                </Tooltip>\n            </>\n        )\n    }\n}\n", "import React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function Delete(): JSX.Element {\n    return (\n        <SvgIcon xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n            <path fill=\"currentColor\"\n                  d=\"M432,32H312l-9.4-18.7A24,24,0,0,0,281.1,0H166.8a23.72,23.72,0,0,0-21.4,13.3L136,32H16A16,16,0,0,0,0,48V80A16,16,0,0,0,16,96H432a16,16,0,0,0,16-16V48A16,16,0,0,0,432,32ZM53.2,467a48,48,0,0,0,47.9,45H346.9a48,48,0,0,0,47.9-45L416,128H32Z\"/>\n        </SvgIcon>\n    );\n}\n", "import React from 'react';\n\nexport const Duplicate = () => (\n    <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        viewBox=\"0 0 512 512\"\n    >\n        <path fill=\"currentColor\"\n              d=\"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\"/>\n    </svg>\n);\n", "import React from \"react\";\nimport styled from \"styled-components\";\nimport {dark, white} from \"../values/colors/colors\";\n\nexport const Info = () =>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 192 512\">\n        <path fill=\"currentColor\"\n    d=\"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\"/>\n    </svg>;\n\nexport const InfoIcon = styled(\"div\")`\n    height: 14px;\n    width: 14px;\n    display: inline-flex;\n    background-color: ${dark};\n    border-radius: 50%;\n    color: ${white};\n    box-sizing: border-box;\n    padding: 3px;\n    vertical-align: middle;\n    margin-left: 3px;\n    & svg{\n        height: 100%;\n        width: 100%;\n    }\n`;\n", "import {App} from \"@root/Frontend/Studio/App\";\n\nexport function queryWorldMetadata(worldID: bigint): boolean {\n    return App.getInstance().getEngine().queryWorldMetadata(worldID);\n}\n\nexport function isWorldLoaded(worldID: bigint): boolean {\n    return App.getInstance().getEngine().isWorldLoaded(worldID)\n}", "import { Component, createElement } from 'react';\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Use 'export' statement over 'module.exports' assignment\n **/\n\n// Check `document` and `window` in case of server-side rendering\nlet windowObject;\nif (typeof window !== \"undefined\") {\n  windowObject = window;\n\n  // eslint-disable-next-line no-restricted-globals\n} else if (typeof self !== \"undefined\") {\n  // eslint-disable-next-line no-restricted-globals\n  windowObject = self;\n} else {\n  windowObject = global;\n}\nlet cancelFrame = null;\nlet requestFrame = null;\nconst TIMEOUT_DURATION = 20;\nconst clearTimeoutFn = windowObject.clearTimeout;\nconst setTimeoutFn = windowObject.setTimeout;\nconst cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;\nconst requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;\nif (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {\n  // For environments that don't support animation frame,\n  // fallback to a setTimeout based approach.\n  cancelFrame = clearTimeoutFn;\n  requestFrame = function requestAnimationFrameViaSetTimeout(callback) {\n    return setTimeoutFn(callback, TIMEOUT_DURATION);\n  };\n} else {\n  // Counter intuitively, environments that support animation frames can be trickier.\n  // Chrome's \"Throttle non-visible cross-origin iframes\" flag can prevent rAFs from being called.\n  // In this case, we should fallback to a setTimeout() implementation.\n  cancelFrame = function cancelFrame([animationFrameID, timeoutID]) {\n    cancelAnimationFrameFn(animationFrameID);\n    clearTimeoutFn(timeoutID);\n  };\n  requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {\n    const animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {\n      clearTimeoutFn(timeoutID);\n      callback();\n    });\n    const timeoutID = setTimeoutFn(function timeoutCallback() {\n      cancelAnimationFrameFn(animationFrameID);\n      callback();\n    }, TIMEOUT_DURATION);\n    return [animationFrameID, timeoutID];\n  };\n}\nfunction createDetectElementResize(nonce) {\n  let animationKeyframes;\n  let animationName;\n  let animationStartEvent;\n  let animationStyle;\n  let checkTriggers;\n  let resetTriggers;\n  let scrollListener;\n  const attachEvent = typeof document !== \"undefined\" && document.attachEvent;\n  if (!attachEvent) {\n    resetTriggers = function (element) {\n      const triggers = element.__resizeTriggers__,\n        expand = triggers.firstElementChild,\n        contract = triggers.lastElementChild,\n        expandChild = expand.firstElementChild;\n      contract.scrollLeft = contract.scrollWidth;\n      contract.scrollTop = contract.scrollHeight;\n      expandChild.style.width = expand.offsetWidth + 1 + \"px\";\n      expandChild.style.height = expand.offsetHeight + 1 + \"px\";\n      expand.scrollLeft = expand.scrollWidth;\n      expand.scrollTop = expand.scrollHeight;\n    };\n    checkTriggers = function (element) {\n      return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;\n    };\n    scrollListener = function (e) {\n      // Don't measure (which forces) reflow for scrolls that happen inside of children!\n      if (e.target.className && typeof e.target.className.indexOf === \"function\" && e.target.className.indexOf(\"contract-trigger\") < 0 && e.target.className.indexOf(\"expand-trigger\") < 0) {\n        return;\n      }\n      const element = this;\n      resetTriggers(this);\n      if (this.__resizeRAF__) {\n        cancelFrame(this.__resizeRAF__);\n      }\n      this.__resizeRAF__ = requestFrame(function animationFrame() {\n        if (checkTriggers(element)) {\n          element.__resizeLast__.width = element.offsetWidth;\n          element.__resizeLast__.height = element.offsetHeight;\n          element.__resizeListeners__.forEach(function forEachResizeListener(fn) {\n            fn.call(element, e);\n          });\n        }\n      });\n    };\n\n    /* Detect CSS Animations support to detect element display/re-attach */\n    let animation = false;\n    let keyframeprefix = \"\";\n    animationStartEvent = \"animationstart\";\n    const domPrefixes = \"Webkit Moz O ms\".split(\" \");\n    let startEvents = \"webkitAnimationStart animationstart oAnimationStart MSAnimationStart\".split(\" \");\n    let pfx = \"\";\n    {\n      const elm = document.createElement(\"fakeelement\");\n      if (elm.style.animationName !== undefined) {\n        animation = true;\n      }\n      if (animation === false) {\n        for (let i = 0; i < domPrefixes.length; i++) {\n          if (elm.style[domPrefixes[i] + \"AnimationName\"] !== undefined) {\n            pfx = domPrefixes[i];\n            keyframeprefix = \"-\" + pfx.toLowerCase() + \"-\";\n            animationStartEvent = startEvents[i];\n            animation = true;\n            break;\n          }\n        }\n      }\n    }\n    animationName = \"resizeanim\";\n    animationKeyframes = \"@\" + keyframeprefix + \"keyframes \" + animationName + \" { from { opacity: 0; } to { opacity: 0; } } \";\n    animationStyle = keyframeprefix + \"animation: 1ms \" + animationName + \"; \";\n  }\n  const createStyles = function (doc) {\n    if (!doc.getElementById(\"detectElementResize\")) {\n      //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n      const css = (animationKeyframes ? animationKeyframes : \"\") + \".resize-triggers { \" + (animationStyle ? animationStyle : \"\") + \"visibility: hidden; opacity: 0; } \" + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n        head = doc.head || doc.getElementsByTagName(\"head\")[0],\n        style = doc.createElement(\"style\");\n      style.id = \"detectElementResize\";\n      style.type = \"text/css\";\n      if (nonce != null) {\n        style.setAttribute(\"nonce\", nonce);\n      }\n      if (style.styleSheet) {\n        style.styleSheet.cssText = css;\n      } else {\n        style.appendChild(doc.createTextNode(css));\n      }\n      head.appendChild(style);\n    }\n  };\n  const addResizeListener = function (element, fn) {\n    if (attachEvent) {\n      element.attachEvent(\"onresize\", fn);\n    } else {\n      if (!element.__resizeTriggers__) {\n        const doc = element.ownerDocument;\n        const elementStyle = windowObject.getComputedStyle(element);\n        if (elementStyle && elementStyle.position === \"static\") {\n          element.style.position = \"relative\";\n        }\n        createStyles(doc);\n        element.__resizeLast__ = {};\n        element.__resizeListeners__ = [];\n        (element.__resizeTriggers__ = doc.createElement(\"div\")).className = \"resize-triggers\";\n        const expandTrigger = doc.createElement(\"div\");\n        expandTrigger.className = \"expand-trigger\";\n        expandTrigger.appendChild(doc.createElement(\"div\"));\n        const contractTrigger = doc.createElement(\"div\");\n        contractTrigger.className = \"contract-trigger\";\n        element.__resizeTriggers__.appendChild(expandTrigger);\n        element.__resizeTriggers__.appendChild(contractTrigger);\n        element.appendChild(element.__resizeTriggers__);\n        resetTriggers(element);\n        element.addEventListener(\"scroll\", scrollListener, true);\n\n        /* Listen for a css animation to detect element display/re-attach */\n        if (animationStartEvent) {\n          element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n            if (e.animationName === animationName) {\n              resetTriggers(element);\n            }\n          };\n          element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n        }\n      }\n      element.__resizeListeners__.push(fn);\n    }\n  };\n  const removeResizeListener = function (element, fn) {\n    if (attachEvent) {\n      element.detachEvent(\"onresize\", fn);\n    } else {\n      element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n      if (!element.__resizeListeners__.length) {\n        element.removeEventListener(\"scroll\", scrollListener, true);\n        if (element.__resizeTriggers__.__animationListener__) {\n          element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n          element.__resizeTriggers__.__animationListener__ = null;\n        }\n        try {\n          element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n        } catch (e) {\n          // Preact compat; see developit/preact-compat/issues/228\n        }\n      }\n    }\n  };\n  return {\n    addResizeListener,\n    removeResizeListener\n  };\n}\n\nclass AutoSizer extends Component {\n  constructor(...args) {\n    super(...args);\n    this.state = {\n      height: this.props.defaultHeight || 0,\n      scaledHeight: this.props.defaultHeight || 0,\n      scaledWidth: this.props.defaultWidth || 0,\n      width: this.props.defaultWidth || 0\n    };\n    this._autoSizer = null;\n    this._detectElementResize = null;\n    this._parentNode = null;\n    this._resizeObserver = null;\n    this._timeoutId = null;\n    this._onResize = () => {\n      this._timeoutId = null;\n      const {\n        disableHeight,\n        disableWidth,\n        onResize\n      } = this.props;\n      if (this._parentNode) {\n        // Guard against AutoSizer component being removed from the DOM immediately after being added.\n        // This can result in invalid style values which can result in NaN values if we don't handle them.\n        // See issue #150 for more context.\n\n        const style = window.getComputedStyle(this._parentNode) || {};\n        const paddingLeft = parseFloat(style.paddingLeft || \"0\");\n        const paddingRight = parseFloat(style.paddingRight || \"0\");\n        const paddingTop = parseFloat(style.paddingTop || \"0\");\n        const paddingBottom = parseFloat(style.paddingBottom || \"0\");\n        const rect = this._parentNode.getBoundingClientRect();\n        const scaledHeight = rect.height - paddingTop - paddingBottom;\n        const scaledWidth = rect.width - paddingLeft - paddingRight;\n        const height = this._parentNode.offsetHeight - paddingTop - paddingBottom;\n        const width = this._parentNode.offsetWidth - paddingLeft - paddingRight;\n        if (!disableHeight && (this.state.height !== height || this.state.scaledHeight !== scaledHeight) || !disableWidth && (this.state.width !== width || this.state.scaledWidth !== scaledWidth)) {\n          this.setState({\n            height,\n            width,\n            scaledHeight,\n            scaledWidth\n          });\n          if (typeof onResize === \"function\") {\n            onResize({\n              height,\n              scaledHeight,\n              scaledWidth,\n              width\n            });\n          }\n        }\n      }\n    };\n    this._setRef = autoSizer => {\n      this._autoSizer = autoSizer;\n    };\n  }\n  componentDidMount() {\n    const {\n      nonce\n    } = this.props;\n    const parentNode = this._autoSizer ? this._autoSizer.parentNode : null;\n    if (parentNode != null && parentNode.ownerDocument && parentNode.ownerDocument.defaultView && parentNode instanceof parentNode.ownerDocument.defaultView.HTMLElement) {\n      // Delay access of parentNode until mount.\n      // This handles edge-cases where the component has already been unmounted before its ref has been set,\n      // As well as libraries like react-lite which have a slightly different lifecycle.\n      this._parentNode = parentNode;\n\n      // Use ResizeObserver from the same context where parentNode (which we will observe) was defined\n      // Using just global can result into onResize events not being emitted in cases with multiple realms\n      const ResizeObserverInstance = parentNode.ownerDocument.defaultView.ResizeObserver;\n      if (ResizeObserverInstance != null) {\n        this._resizeObserver = new ResizeObserverInstance(() => {\n          // Guard against \"ResizeObserver loop limit exceeded\" error;\n          // could be triggered if the state update causes the ResizeObserver handler to run long.\n          // See https://github.com/bvaughn/react-virtualized-auto-sizer/issues/55\n          this._timeoutId = setTimeout(this._onResize, 0);\n        });\n        this._resizeObserver.observe(parentNode);\n      } else {\n        // Defer requiring resize handler in order to support server-side rendering.\n        // See issue #41\n        this._detectElementResize = createDetectElementResize(nonce);\n        this._detectElementResize.addResizeListener(parentNode, this._onResize);\n      }\n      this._onResize();\n    }\n  }\n  componentWillUnmount() {\n    if (this._parentNode) {\n      if (this._detectElementResize) {\n        this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n      }\n      if (this._timeoutId !== null) {\n        clearTimeout(this._timeoutId);\n      }\n      if (this._resizeObserver) {\n        this._resizeObserver.disconnect();\n      }\n    }\n  }\n  render() {\n    const {\n      children,\n      defaultHeight,\n      defaultWidth,\n      disableHeight = false,\n      disableWidth = false,\n      doNotBailOutOnEmptyChildren = false,\n      nonce,\n      onResize,\n      style = {},\n      tagName = \"div\",\n      ...rest\n    } = this.props;\n    const {\n      height,\n      scaledHeight,\n      scaledWidth,\n      width\n    } = this.state;\n\n    // Outer div should not force width/height since that may prevent containers from shrinking.\n    // Inner component should overflow and use calculated width/height.\n    // See issue #68 for more information.\n    const outerStyle = {\n      overflow: \"visible\"\n    };\n    const childParams = {};\n\n    // Avoid rendering children before the initial measurements have been collected.\n    // At best this would just be wasting cycles.\n    let bailoutOnChildren = false;\n    if (!disableHeight) {\n      if (height === 0) {\n        bailoutOnChildren = true;\n      }\n      outerStyle.height = 0;\n      childParams.height = height;\n      childParams.scaledHeight = scaledHeight;\n    }\n    if (!disableWidth) {\n      if (width === 0) {\n        bailoutOnChildren = true;\n      }\n      outerStyle.width = 0;\n      childParams.width = width;\n      childParams.scaledWidth = scaledWidth;\n    }\n    if (doNotBailOutOnEmptyChildren) {\n      bailoutOnChildren = false;\n    }\n    return createElement(tagName, {\n      ref: this._setRef,\n      style: {\n        ...outerStyle,\n        ...style\n      },\n      ...rest\n    }, !bailoutOnChildren && children(childParams));\n  }\n}\n\nfunction isHeightAndWidthProps(props) {\n  return props && props.disableHeight !== true && props.disableWidth !== true;\n}\nfunction isHeightOnlyProps(props) {\n  return props && props.disableHeight !== true && props.disableWidth === true;\n}\nfunction isWidthOnlyProps(props) {\n  return props && props.disableHeight === true && props.disableWidth !== true;\n}\n\nexport { AutoSizer as default, isHeightAndWidthProps, isHeightOnlyProps, isWidthOnlyProps };\n", "import React from \"react\"\nimport {SearchBar} from \"@root/react-components/src/inputs/SearchBar\";\nimport i18next from \"i18next\";\nimport {Box, styled} from \"@mui/material\";\nimport {white} from \"@root/react-components/src/values/colors/colors\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport {\n    getPeerWorldIDs,\n    getGroupWorldIDs,\n    getOwnerID,\n    getWorldTitle,\n    isWorldAuthorized,\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {FilterType, Sorting} from \"@root/Frontend/Studio/Components/Sorting\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {WorldLibraryParsingPopover} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldLibraryParsingPopover\";\nimport {isWorldLoaded, queryWorldMetadata} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWorld\";\nimport isEqual from \"lodash/isEqual\";\nimport {MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {App} from \"@root/Frontend/Studio/App\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    gap:\"16px\",\n    alignItems: \"center\",\n});\n\ninterface WorldLibraryFiltersProps {\n    onWorldsChange: (worldIDs: bigint[]) => void;\n}\n\ninterface WorldLibraryFiltersState {\n    filtersAnchor: HTMLButtonElement | null;\n    searchStr: string;\n    isShareWith: boolean;\n    isRevokeAccess: boolean;\n    filterType: FilterType;\n    isAscendant: boolean;\n    groupNames: Map<bigint, string>;\n    selectedOwnerID: bigint;\n}\n\nexport class WorldLibraryFilters extends React.Component {\n    private readonly filtersRefContainer: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n\n    props: WorldLibraryFiltersProps;\n    state: WorldLibraryFiltersState = {\n        filtersAnchor: null,\n        searchStr: \"\",\n        isShareWith: true,\n        isRevokeAccess: true,\n        filterType: FilterType.CREATION_DATE,\n        isAscendant: true,\n        groupNames: new Map<bigint, string>(),\n        selectedOwnerID: getCurrentPeerID(),\n    };\n\n    componentDidMount() {\n\n        // gather current peer groups, sort them alphabetically and update the state\n        const groups: bigint[] = App.getInstance().getFilterViewer().getAllAvailableGroupIDs();\n        this.setState({ groupNames: this.sortGroupsAlphabetically(groups) }, () => this.updateWorldsList());\n    }\n\n    componentDidUpdate(prevProps: Readonly<WorldLibraryFiltersProps>, prevState: Readonly<WorldLibraryFiltersState>) {\n        if (isEqual(prevState, this.state))\n            return;\n\n        const worldIDs: bigint[] = this.getWorldIDs(this.state.selectedOwnerID);\n        const unloadedWorldIDs: bigint[] = worldIDs.filter((worldID: bigint) => !isWorldLoaded(worldID));\n\n        // if a filter or a sorting value is change, we need to load all worlds metadata\n        if (unloadedWorldIDs.length && (this.state.filterType === FilterType.ALPHA || !this.state.isAscendant ||\n            this.state.searchStr.length || !this.state.isRevokeAccess || !this.state.isShareWith)) {\n            for (const worldID of unloadedWorldIDs)\n                queryWorldMetadata(worldID);\n        } else\n            this.updateWorldsList();\n    }\n\n    /////////////////////// Public ///////////////////////\n    public updateGroup(groupID: bigint) {\n        if (!this.state.groupNames.has(groupID))\n            return;\n\n        // re-sort alphabetically the groups\n        const groupIDs: bigint[] = Array.from(this.state.groupNames.keys());\n        this.setState({ groupNames: this.sortGroupsAlphabetically(groupIDs) }, () => this.updateWorldsList());\n    }\n\n    public updatePeer(peerID: bigint) {\n        if (peerID !== getCurrentPeerID())\n            return;\n\n        // iterate all groups and fetch information if not loaded\n        const engine: MainModule = App.getInstance().getEngine();\n        const groups: bigint[] = App.getInstance().getFilterViewer().getAllAvailableGroupIDs();\n        for (const groupID of groups)\n            if (!engine.isGroupLoaded(groupID))\n                engine.loadGroup(groupID);\n\n        this.setState({ groupNames: this.sortGroupsAlphabetically(groups) }, () => this.updateWorldsList());\n    }\n\n    public didChangeToken() {\n        const selectedOwnerID: bigint = getCurrentPeerID();\n        this.setState({ selectedOwnerID }, () => this.updatePeer(this.state.selectedOwnerID));\n    }\n\n    public updateWorldsList() {\n        if (!getCurrentPeerID()) {\n            this.props.onWorldsChange([]);\n            return;\n        }\n\n        let worldIDs: bigint[] = this.getWorldIDs(this.state.selectedOwnerID);\n        worldIDs = this.filterWorldIDs(worldIDs);\n        this.props.onWorldsChange(worldIDs);\n    }\n\n    /////////////////////// Private ///////////////////////\n    private filterWorldIDs(worldIDs: bigint[]): bigint[] {\n        if (!worldIDs.length)\n            return [];\n\n        if (this.state.searchStr.length)\n            worldIDs = worldIDs.filter((worldID: bigint) =>\n                getWorldTitle(worldID).toLowerCase().includes(this.state.searchStr.toLowerCase()));\n\n        if (!this.state.isRevokeAccess)\n            worldIDs = worldIDs.filter((worldID: bigint) => isWorldAuthorized(worldID));\n\n        // show only the worlds owned by the current selected owner\n        if (!this.state.isShareWith)\n            worldIDs = worldIDs.filter((worldID: bigint) => getOwnerID(worldID) === this.state.selectedOwnerID);\n\n        worldIDs.sort((worldID1: bigint, worldID2: bigint) => this.compareWorlds(worldID1, worldID2));\n        return worldIDs;\n    }\n\n    private compareWorlds(worldID1: bigint, worldID2: bigint): number {\n        switch (this.state.filterType) {\n            case FilterType.ALPHA : {\n                const title1: string = getWorldTitle(worldID1);\n                const title2: string = getWorldTitle(worldID2);\n                return this.state.isAscendant ? title1.localeCompare(title2) : title2.localeCompare(title1);\n            }\n            case FilterType.CREATION_DATE : {\n                const time1: bigint = UtilsShared.getTimestampOfRandomID(worldID1);\n                const time2: bigint = UtilsShared.getTimestampOfRandomID(worldID2);\n                return this.state.isAscendant ? Number(time2 - time1) : Number(time1 - time2);\n            }\n            default: {\n                return 0;\n            }\n        }\n    }\n\n    // returns the group name or the groupID if the string is empty\n    private getGroupName(groupID: bigint): string {\n        const engine: MainModule | null = App.getInstance().getEngine();\n        const groupName: string = engine?.getGroupName(groupID) ?? \"\";\n        return groupName.length ? groupName : groupID.toString() ;\n    }\n\n    private getWorldIDs(selectedOwnerID: bigint): bigint[] {\n        const currentPeerID: bigint = getCurrentPeerID();\n\n        if (selectedOwnerID === currentPeerID)\n            return getPeerWorldIDs(currentPeerID);\n\n        // if none of the condition were true, the selectedOwnerID is a group\n        return getGroupWorldIDs(selectedOwnerID);\n    }\n\n    private sortGroupsAlphabetically(groups: bigint[]): Map<bigint, string> {\n        const sortedGroups: bigint[] = [...groups].sort((groupA: bigint, groupB: bigint) => {\n            return this.getGroupName(groupA).toLowerCase().localeCompare(this.getGroupName(groupB).toLowerCase());\n        });\n        return new Map(sortedGroups.map((groupID: bigint) => [groupID, this.getGroupName(groupID)]));\n    }\n\n    private handleChangeGroupFilter(index: number) {\n\n        // return \"My Worlds\"\n        if (index === 0) {\n            this.setState({ selectedOwnerID: getCurrentPeerID() });\n            return;\n        }\n\n        // return a groupID\n        const selectedOwnerID: bigint = Array.from(this.state.groupNames.keys())[index - 1];\n        this.setState({ selectedOwnerID });\n    }\n\n    private handleChangeFilter(filterType: FilterType) {\n        if(filterType === this.state.filterType) {\n            this.setState((prevState: WorldLibraryFiltersState) => ({\n                isAscendant: !prevState.isAscendant\n            }));\n            return;\n        }\n\n        this.setState({ filterType, isAscendant: true });\n    }\n\n    render() {\n        return (\n            <Container ref={this.filtersRefContainer}>\n                <Select\n                    options={[i18next.t(\"My Worlds\"), ...this.state.groupNames.values()]}\n                    default={0}\n                    onChange={(index: number) => this.handleChangeGroupFilter(index)}\n                    style={{ backgroundColor: white, width: \"150px\" }}\n                    styleOptionsWrapper={{ maxHeight: \"400px\", overflow: \"auto\" }}\n                />\n                <SearchBar\n                    id=\"world-library-search\"\n                    onChange={(searchStr: string) => this.setState({ searchStr })}\n                    placeholder={i18next.t(\"Search\")}\n                    style={{ width: \"200px\" }}\n                />\n                <WorldLibraryParsingPopover\n                    isRevokeAccess={this.state.isRevokeAccess}\n                    isShareWith={this.state.isShareWith}\n                    onRevokeAccessChange={() => this.setState((prevState: WorldLibraryFiltersState) => ({\n                        isRevokeAccess: !prevState.isRevokeAccess\n                    }))}\n                    onShareWithChange={() => this.setState((prevState: WorldLibraryFiltersState) => ({\n                        isShareWith: !prevState.isShareWith\n                    }))}\n                />\n                <Sorting\n                    containerRef={this.filtersRefContainer}\n                    handleChangeFilter={(filterType: FilterType) => this.handleChangeFilter(filterType)}\n                    filterType={this.state.filterType}\n                    isAscendant={this.state.isAscendant}\n                    white\n                />\n            </Container>\n        )\n    }\n}\n", "import * as React from \"react\";\n\nimport {Search} from \"../icons/Search\";\nimport {dark, grey} from \"../values/colors/colors\";\nimport {secondaryFontMedium} from \"../values/fonts/fonts\";\nimport {CSSProperties} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\n\nconst Wrapper = styled(Box)({\n    width: \"100%\",\n    position: \"relative\"\n})\n\nconst Input = styled(\"input\")((props: {small: number}) => ({\n    width: \"100%\",\n    border: `1.5px solid ${grey}`,\n    borderRadius: \"18px\",\n    height: props.small ? \"28px\" : \"34px\",\n    outline: \"none\",\n    padding: \"6px 10px\",\n    boxSizing: \"border-box\",\n    color: dark,\n    font: secondaryFontMedium,\n}));\n\nconst Submit = styled(Box)((props: {small: number}) => ({\n    position: \"absolute\",\n    top: props.small ? \"5px\" : \"7px\",\n    right: \"12px\",\n    height: \"18px\",\n    width: \"18px\",\n    color: grey,\n    \"& > svg\": {\n        height: \"100%\",\n        width: \"100%\"\n    }\n}));\n\nexport enum SearchBarSize {\n    SMALL = \"small\",\n    MEDIUM = \"medium\"\n}\n\nexport class SearchBar extends React.Component {\n    props: {\n        id?: string\n        style?: CSSProperties,\n        onChange: (searchString: string) => void,\n        onEnter?: () => void,\n        placeholder?: string,\n        size?: SearchBarSize\n    };\n\n    render() {\n        return (\n            <Wrapper style={{...this.props.style, backgroundColor: \"transparent\"}}>\n                <Input\n                    id={this.props.id ?? \"search-bar\"}\n                    onChange={(e: React.ChangeEvent<HTMLInputElement>) => this.props.onChange(e.target.value)}\n                    onClick={(e: React.MouseEvent<HTMLInputElement>) => e.stopPropagation()}\n                    placeholder={this.props.placeholder ?? i18next.t(\"Search\")}\n                    type=\"text\"\n                    onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\n                        if (e.key === \"Enter\") {\n                            e.preventDefault();\n                            this.props.onEnter?.();\n                        }\n                    }}\n                    small={Number(this.props.size === SearchBarSize.SMALL)}\n                />\n                <Submit small={Number(this.props.size === SearchBarSize.SMALL)}> <Search/> </Submit>\n            </Wrapper>\n        )\n    }\n}\n", "import React from \"react\";\n\nexport const Search = () =>\n    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"search\"\n         className=\"svg-inline--fa fa-search fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n         viewBox=\"0 0 512 512\">\n        <path fill=\"currentColor\"\n              d=\"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\"/>\n    </svg>;\n", "import * as React from 'react';\nimport styled from 'styled-components';\nimport {primaryFontLarge} from \"../values/fonts/fonts\";\nimport {darkenPrimary, darkenWhite, lightGrey, primary} from \"../values/colors/colors\";\nimport {DownArrow} from \"../icons/DownArrow\";\n\nconst SelectWrapper = styled.div<{selected: boolean, readonly: boolean, withBorders: boolean, disable: boolean}>`\n    cursor: ${props => props.disable ? \"not-allowed\" : \"pointer\"};\n    height: 24px;\n    line-height: 24px;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    position: relative;\n    background-color: transparent;\n    padding: 2px 6px;\n    border: ${props => props.withBorders ? `1.5px solid ${props.selected ? primary : lightGrey}` : \"none\"};\n    border-radius: 3px;\n    outline: none;\n    font: ${primaryFontLarge};\n    transition: border 0.3s ease, background-color 0.5s ease;\n    pointer-events: ${props => props.readonly ? \"none\" : \"auto\"};\n    &:hover {\n      border: ${props => props.withBorders ? `1.5px solid  ${props.disable ? lightGrey : primary}` : \"none\"};\n      & > div {\n          color: ${props => props.withBorders ? \"inherit\": primary};\n        \n        & > svg > path{ \n          fill: ${props => props.withBorders ? \"inherit\": primary};\n        }\n      }\n    };\n    opacity: ${props => props.disable ? \"0.6\" : \"1\"};\n`\n\nconst OptionsWrapper = styled.div<{ fullWidth: boolean }>`\n    right: 0px;\n    width: ${props => props.fullWidth ? \"100%\" : \"max-content\" };\n    max-width: 250px;\n    font: ${primaryFontLarge};\n    position: absolute;\n    background-color: ${darkenWhite};\n    z-index: 1000;\n    cursor: pointer;\n    margin-top: 3px;\n    box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 1px 3px 1px;\n    border-radius: 3px;\n    max-height: 200px;\n    overflow-y: auto;\n\n    /* width */\n    &::-webkit-scrollbar {\n      width: 10px;\n      height: 10px;\n    }\n  \n    /* Handle */\n    &::-webkit-scrollbar-thumb {\n      background: ${primary};\n      border-radius: 10px;\n    }\n    \n    /* Handle on hover */\n    &::-webkit-scrollbar-thumb:hover {\n      background: ${darkenPrimary};\n    }\n`\n\nconst Option = styled.div<{color: string}>`\n    color: ${props => props.color};\n    padding: 4px 24px 4px 15px;\n    border-radius: 3px;\n    user-select: none;\n    max-width: 500px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    text-align: left;\n    &:hover {\n        color: white;\n        background-color: ${primary};\n    }\n`\n\nconst ArrowWrapper = styled.div<{ selected: number }>`\n    display: flex;\n    align-items: center;\n    margin-left: 5px;\n    transform: ${props => props.selected ? \"rotateX(180deg)\" : \"rotateX(0deg)\"};\n`\n\nconst ValueLabel = styled.div`\n    height: 20px;\n    margin: 0;\n    userSelect: none;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    overflow: hidden;\n`\n\ninterface SelectProps {\n    id?: string,\n    options: string[] | JSX.Element[],\n    onChange: (option: number) => void,\n    fullWidth?: boolean,\n    default?: number,\n    placeholder?: string,\n    style?: React.CSSProperties,\n    styleWrapper?: React.CSSProperties,\n    styleOptionsWrapper?: React.CSSProperties,\n    styleValueLabel?: React.CSSProperties,\n    withBorders?: boolean,\n    readonly?: boolean,\n    disable?: boolean\n}\n\ninterface SelectState {\n    isOpen: boolean,\n    currentOption: number\n}\n\nexport class Select extends React.Component {\n    selectRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    optionsRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n\n    props: SelectProps;\n    state: SelectState = { isOpen: false, currentOption: 0 }\n\n    componentDidMount() {\n        // detect if we click outside of dropdown\n        document.addEventListener(\"mousedown\", (event) => {\n            if (this.selectRef.current && !this.selectRef.current.contains(event.target as Node)) {\n                this.setState({ isOpen: false })\n            }\n        });\n        this.setState({ currentOption: this.props.default ?? 0 });\n    }\n\n    componentDidUpdate(prevProps: Readonly<SelectProps>) {\n        // make sure options are always on screen\n        if(this.state.isOpen && this.optionsRef.current) {\n            const left = this.optionsRef.current.getBoundingClientRect().left\n            if(left < 0)\n                this.optionsRef.current.style.transform = `translateX(${-left + 10}px)`;\n\n            const right = this.optionsRef.current.getBoundingClientRect().right\n            if(right > window.innerWidth)\n                this.optionsRef.current.style.transform = `translateX(${-right + window.innerWidth - 10}px)`;\n        }\n        if (prevProps.default !== this.props.default)\n            this.setState({ currentOption: this.props.default });\n    }\n\n    //TODO(eric): refactor setDefault\n    setDefault(currentOption: number){ this.setState({currentOption}); }\n\n    selectOption(option: number) {\n        this.setState({ isOpen: false, currentOption: option });\n        this.props.onChange(option);\n    }\n\n    setOpenState() {\n        if (this.props.disable)\n            return;\n\n        this.setState((prevState : SelectState) => ({isOpen: !prevState.isOpen}));\n    }\n\n    render() {\n        return <div ref={this.selectRef}\n                    style={{position: \"relative\", borderRadius: \"3px\", ...this.props.style}}>\n            <SelectWrapper\n                id={this.props.id}\n                readonly={this.props.readonly ?? false}\n                onClick={() => this.setOpenState()}\n                selected={this.state.isOpen}\n                withBorders={this.props.withBorders ?? true}\n                disable={this.props.disable ?? false}\n                style={{...this.props.styleWrapper}}\n            >\n                <ValueLabel id={`${this.props.id}-selected`} style={{...this.props.styleValueLabel}}>\n                    {this.state.currentOption === -1 ? (this.props.placeholder ?? \"\")\n                                                     : this.props.options[this.state.currentOption]}\n                </ValueLabel>\n                {!this.props.readonly &&\n                    <ArrowWrapper selected={this.state.isOpen}>\n                        <DownArrow width={\"12px\"} height={\"12px\"}/>\n                    </ArrowWrapper>\n                }\n            </SelectWrapper>\n            {this.state.isOpen &&\n                <OptionsWrapper\n                    ref={this.optionsRef}\n                    fullWidth={this.props.fullWidth ?? false}\n                    style={{...this.props.styleOptionsWrapper}}>\n                    {this.props.options.map((option, i) =>\n                        <Option\n                            id={`select-option-${i}`}\n                            className={\"select-options\"}\n                            key={i}\n                            onClick={() => this.selectOption(i)}\n                            color={i === this.state.currentOption ? primary : \"currentColor\"}>\n                            {option}\n                        </Option>)\n                    }\n                </OptionsWrapper>\n            }\n        </div>\n    }\n}\n", "import React from \"react\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Box, Popover, styled} from \"@mui/material\";\nimport {lightGrey, primary, white, dark} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {ArrowLine} from \"@root/react-components/src/icons/ArrowLine\";\nimport {primaryFontLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {SortingArrows} from \"@root/react-components/src/icons/SortingArrows\";\n\nconst FilterContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\"\n});\n\nconst PopoverTitle = styled(Box)({\n    font: primaryFontLarge,\n    padding: \"4px\",\n    margin: \"8px 8px 4px 8px\",\n    borderBottom: `1px solid ${lightGrey}`,\n    userSelect: \"none\"\n});\n\nconst FilterWrapper = styled(Box)({\n    flex: 1,\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    gap: \"16px\",\n    padding: \"8px 16px\",\n    \"&:hover\": {\n        cursor: \"pointer\",\n        backgroundColor: primary,\n        color: white,\n        fill: white\n    }\n});\n\nconst FilterTitle = styled(Box)({\n    font: secondaryFontMedium,\n    userSelect: \"none\"\n});\n\nconst FilterIcon = styled(Box)((props: {is_rotated: number, is_display: number}) => ({\n    \"& svg\": {\n        opacity: props.is_display ? 1 : 0,\n        width: \"24px\",\n        height: \"24px\",\n        transform: props.is_rotated ? \"rotate(-90deg)\" : \"rotate(90deg)\"\n    }\n}));\n\nexport enum FilterType {\n    ALPHA = \"Alphabetical\",\n    CREATION_DATE = \"Date of creation\"\n}\n\ninterface SortingProps {\n    handleChangeFilter: (filterType: FilterType) => void;\n    filterType: FilterType;\n    isAscendant: boolean;\n    white?: boolean;\n    containerRef?: React.RefObject<HTMLDivElement>; // ref to handle closeOnClickOutside for a Dialog\n}\n\ninterface SortingState {\n    filtersAnchor: HTMLButtonElement | null;\n}\nexport class Sorting extends React.Component{\n\n    props: SortingProps;\n    state: SortingState = { filtersAnchor: null }\n\n    render() {\n        return (\n            <>\n                <Button\n                    variant=\"outlined\"\n                    color={this.props.white ? \"white\" : \"dark\"}\n                    sx={{ minWidth: \"unset\", minHeight: \"unset\", padding: \"6px\" }}\n                    onClick={(event: React.MouseEvent<HTMLButtonElement>) =>\n                        this.setState({ filtersAnchor: event.currentTarget })\n                    }\n                >\n                    <Box style={{ width: \"15px\", height: \"15px\", color: this.props.white ? white : dark }}>\n                        <SortingArrows fill={this.props.white ? white : dark}/>\n                    </Box>\n                </Button>\n                <Popover\n                    container={this.props.containerRef?.current ?? null}\n                    open={Boolean(this.state.filtersAnchor)}\n                    onClose={() => this.setState({ filtersAnchor: null })}\n                    anchorEl={this.state.filtersAnchor}\n                    anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n                >\n                    <FilterContainer>\n                        <PopoverTitle> {i18next.t(\"Sort by\")} </PopoverTitle>\n                        <Box>\n                            {Object.values(FilterType).map((filterType: FilterType) =>\n                                <FilterWrapper\n                                    key={filterType}\n                                    onClick={() => this.props.handleChangeFilter(filterType)}>\n                                    <FilterTitle>{i18next.t(filterType)}</FilterTitle>\n                                    <FilterIcon\n                                        is_display={Number(this.props.filterType === filterType)}\n                                        is_rotated={Number(this.props.isAscendant)}>\n                                        <ArrowLine />\n                                    </FilterIcon>\n                                </FilterWrapper>\n                            )}\n                        </Box>\n                    </FilterContainer>\n                </Popover>\n            </>\n        )\n    }\n}\n", "import * as React from 'react';\nimport {dark} from \"../values/colors/colors\";\n\nexport function ArrowLine({color = dark, style, width = \"48\", height = \"48\", stroke = \"1\"}:\n                          { color?: string, style?: React.CSSProperties, width?: string, height?: string, stroke?: string }) {\n    return (\n        <svg xmlns=\"http://www.w3.org/2000/svg\" height={width} viewBox=\"0 -960 960 960\" width={height} fill={color}\n             style={style}>\n            <path d=\"m561-242-43-42 168-168H160v-60h526L517-681l43-42 241 241-240 240Z\" strokeWidth={stroke}\n                  stroke={color}/>\n        </svg>\n    )\n}\n\n\n\n", "import React from \"react\";\nimport {dark} from \"../values/colors/colors\";\n\nexport function SortingArrows(props: {fill?: string}) {\n    return <svg viewBox=\"0 0 25 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M6.00001 1C6.00001 0.447715 6.44772 0 7.00001 0C7.55229 0 8.00001 0.447715 8.00001 1V23C8.00001 23.5523 7.55229 24 7.00001 24C6.44772 24 6.00001 23.5523 6.00001 23V1Z\" fill={props.fill ?? dark}/>\n        <path d=\"M11.8426 7.3613C12.1187 7.83959 11.9548 8.45118 11.4765 8.72732C10.9982 9.00347 10.3867 8.83959 10.1105 8.3613L6.11052 1.4331L7.84257 0.433096L11.8426 7.3613Z\" fill={props.fill ?? dark}/>\n        <path d=\"M3.83424 8.45698C3.5581 8.93527 2.94651 9.09915 2.46822 8.82301C1.98992 8.54686 1.82605 7.93527 2.10219 7.45698L6.10219 0.528778L7.83424 1.52878L3.83424 8.45698Z\" fill={props.fill ?? dark}/>\n        <path d=\"M18 23C18 23.5523 17.5523 24 17 24C16.4477 24 16 23.5523 16 23V1C16 0.447715 16.4477 0 17 0C17.5523 0 18 0.447715 18 1V23Z\" fill={props.fill ?? dark}/>\n        <path d=\"M12.1628 16.6387C11.8866 16.1604 12.0505 15.5488 12.5288 15.2727C13.0071 14.9965 13.6187 15.1604 13.8948 15.6387L17.8948 22.5669L16.1628 23.5669L12.1628 16.6387Z\" fill={props.fill ?? dark}/>\n        <path d=\"M20.155 15.543C20.4312 15.0647 21.0428 14.9009 21.5211 15.177C21.9993 15.4531 22.1632 16.0647 21.8871 16.543L17.8871 23.4712L16.155 22.4712L20.155 15.543Z\" fill={props.fill ?? dark}/>\n    </svg>\n}\n\n", "import React from \"react\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Box, Checkbox, Popover, styled} from \"@mui/material\";\nimport {lightGrey, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Filter} from \"@root/react-components/src/icons/Filter\";\n\nconst CheckboxWrapper = styled(Box)({\n    height: \"28px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    gap: \"8px\",\n    padding: \"8px 16px\",\n    \"&:hover\": {\n        cursor: \"pointer\",\n        backgroundColor: primary,\n        \"span, div\": { // span is the checkbox icon, div is the title\n            color: white\n        }\n    }\n});\n\nconst PopoverTitle = styled(Box)({\n    font: primaryFontLarge,\n    padding: \"4px\",\n    margin: \"8px 8px 4px 8px\",\n    borderBottom: `1px solid ${lightGrey}`,\n    userSelect: \"none\"\n});\n\ninterface WorldLibraryParsingPopoverProps {\n    isShareWith: boolean;\n    isRevokeAccess: boolean;\n    onRevokeAccessChange: () => void;\n    onShareWithChange: () => void;\n}\n\ninterface WorldLibraryParsingPopoverState {\n    popoverAnchor: HTMLButtonElement | null;\n}\n\nexport class WorldLibraryParsingPopover extends React.Component {\n    private readonly popoverContainerRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n\n    props: WorldLibraryParsingPopoverProps;\n    state: WorldLibraryParsingPopoverState = {\n        popoverAnchor: null\n    }\n\n    render() {\n        return (\n            <Box ref={this.popoverContainerRef}>\n                <Button\n                    variant=\"outlined\"\n                    color=\"white\"\n                    sx={{ minWidth: \"unset\", minHeight: \"unset\", padding: \"6px\" }}\n                    onClick={(event: React.MouseEvent<HTMLButtonElement>) =>\n                        this.setState({ popoverAnchor: event.currentTarget })\n                    }\n                >\n                    <Box style={{ width: \"15px\", height: \"15px\", color: white }}>\n                        <Filter />\n                    </Box>\n                </Button>\n                <Popover\n                    container={this.popoverContainerRef?.current ?? null}\n                    open={Boolean(this.state.popoverAnchor)}\n                    onClose={() => this.setState({ popoverAnchor: null })}\n                    anchorEl={this.state.popoverAnchor}\n                    anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n                >\n                    <Box style={{display: \"flex\", flexDirection: \"column\"}}>\n                        <PopoverTitle> {i18next.t(\"Filters\")} </PopoverTitle>\n                        <Box>\n                            <CheckboxWrapper onClick={() => this.props.onRevokeAccessChange()}>\n                                <Label dark medium style={{marginTop: \"0px\", whiteSpace:\"nowrap\", userSelect: \"none\"}}>\n                                    {i18next.t(\"Access revoked\")}\n                                </Label>\n                                <Checkbox\n                                    id=\"revoke-access-checkbox\"\n                                    style={{padding: \"0px\"}}\n                                    checked={this.props.isRevokeAccess}\n                                />\n                            </CheckboxWrapper>\n                            <CheckboxWrapper\n                                id=\"share-with-filter\"\n                                onClick={() => this.props.onShareWithChange()}\n                            >\n                                <Label dark medium style={{marginTop: \"0px\", whiteSpace:\"nowrap\", userSelect: \"none\"}}>\n                                    {i18next.t(\"Share with\")}\n                                </Label>\n                                <Checkbox\n                                    id=\"share-with-checkbox\"\n                                    style={{padding: \"0px\"}}\n                                    checked={this.props.isShareWith}\n                                />\n                            </CheckboxWrapper>\n                        </Box>\n                    </Box>\n                </Popover>\n            </Box>\n        )\n    }\n}", "import * as React from 'react';\n\nexport const Filter = () => (\n    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"filter\"\n         className=\"svg-inline--fa fa-filter fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n         viewBox=\"0 0 512 512\">\n        <path fill=\"currentColor\"\n              d=\"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\"/>\n    </svg>\n);", "import React from \"react\"\nimport i18next from \"i18next\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport {dark, darkenWhite, red} from \"@root/react-components/src/values/colors/colors\";\nimport {Role} from \"@backend/Types/Role\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport {\n    cloneWorld,\n    getGroupWorldIDs,\n    getOwnerID,\n    getPeerWorldIDs,\n    getWorldOwnerType,\n    getWorldTitle\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Box, styled} from \"@mui/material\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Group} from \"@backend/Types/Group\";\nimport {\n    ButtonsContainer,\n    MainTitle,\n    SectionTitle, WORLD_PANEL_SLIDING_ANIMATION_TIME\n} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/WorldSidePanel\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Plan} from \"@backend/Types/Plan\";\nimport {secondaryFontXSmall} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst Content = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n});\n\nconst WarningWrapper = styled(Box)((props: {show_message: number}) => ({\n    display: props.show_message ? \"flex\" : \"hidden\",\n    padding: \"6px 0px 0px\",\n    color: red,\n    textAlign: \"left\"\n}));\n\nexport const MAX_WORLD_TITLE_CHARACTERS: number = 50;\n\ninterface CreateWorldFormProps {\n    worldID?: bigint\n    createWorld: (title: string, ownerType: OwnerType, ownerID: bigint) => void\n    closePanel: () => void\n}\n\ninterface CreateWorldFormState {\n    title: string\n    ownerID: bigint | null\n    availableGroups: Map<bigint, string> | null\n    titleWarningMessage: string\n    planWarningMessage: string\n}\n\nexport class CreateWorld extends React.Component {\n    private readonly inputNameRef: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n    props: CreateWorldFormProps;\n    state: CreateWorldFormState = {\n        title: \"\",\n        ownerID: null,\n        availableGroups: null,\n        titleWarningMessage: \"\",\n        planWarningMessage: \"\"\n    };\n\n    override async componentDidMount() {\n        window.addEventListener(\"keydown\", this.handleKeydown);\n\n        const availableGroups: Map<bigint, string> = new Map<bigint, string>();\n        // TODO(@ebathalzard) figure out a better way of dealing with partial response\n        const peerMembership: { [p: string]: Role } | undefined =\n            (await App.getInstance().dataSourcePeers.getPeer(getCurrentPeerID())).group;\n\n        if (peerMembership)\n            for (const groupIDStr of Object.keys(peerMembership)) {\n                if (peerMembership[groupIDStr] === Role.EDITOR) {\n                    const groupID: bigint = BigInt(groupIDStr);\n                    availableGroups.set(groupID, (await App.getInstance().dataSourceGroups.getGroup(groupID)).Name);\n                }\n            }\n\n        // No need to do a check because the title and availableGroups will always be null (componentDidMount)\n        this.setState({\n            availableGroups,\n            title: this.props.worldID ? `${getWorldTitle(this.props.worldID)} ${i18next.t(\"copy\")}` : \"\"\n        });\n\n        setTimeout(() => this.inputNameRef.current?.focus(), WORLD_PANEL_SLIDING_ANIMATION_TIME);\n    }\n\n    componentWillUnmount() {\n        window.removeEventListener(\"keydown\", this.handleKeydown);\n    };\n\n    private handleKeydown = (event: KeyboardEvent) => {\n        if(event.key === \"Enter\")\n            this.handleCreateWorld();\n    }\n\n    private handleCreateWorld() {\n        if(Boolean(this.state.planWarningMessage) || Boolean(this.state.titleWarningMessage) ||\n            !this.state.ownerID || !this.state.title)\n            return;\n\n        const ownerType: OwnerType = this.state.ownerID !== getCurrentPeerID() ? OwnerType.GROUP : OwnerType.PEER;\n\n        if (this.props.worldID)\n            cloneWorld(this.props.worldID, this.state.ownerID, ownerType, this.state.title);\n        else\n            this.props.createWorld(this.state.title, ownerType, this.state.ownerID);\n\n        this.props.closePanel();\n    }\n\n    // TODO: (@gabthibaud) when World creation will be available in IOS/HoloLens, do the verification and validation in the core\n    private async handleChangeWorldOwner(index: number){\n        // if we selected current peer, assign 0 to ownerID (current peer is the last element)\n        if (index === this.state.availableGroups?.size) {\n            const currentPeerID: bigint = getCurrentPeerID();\n            const currentPeer: Peer = await App.getInstance().dataSourcePeers.getPeer(currentPeerID);\n            const plan: Plan = await App.getInstance().dataSourcePlans.getPlan(currentPeer.plan);\n            const worlds: number = plan?.worlds ?? 0;\n\n            let worldsCount: number = 0;\n            for (const worldID of getPeerWorldIDs(getCurrentPeerID()))\n                if (getWorldOwnerType(worldID) === OwnerType.PEER && getOwnerID(worldID) === currentPeerID)\n                    worldsCount++;\n\n            const planWarningMessage: string = worldsCount >= worlds ? i18next.t(\"Plan's worlds limit exceeded\") : \"\";\n            this.setState({ planWarningMessage, ownerID: currentPeerID });\n            return;\n        }\n\n        // if we selected a group, validate and assign it\n        const groupID: bigint = [...this.state.availableGroups.keys()][index];\n        const group: Group = await App.getInstance().dataSourceGroups.getGroup(groupID);\n        let planWarningMessage: string = group.Plan ? \"\" : i18next.t(\"This group does not have a plan\");\n\n        let worldsCount: number = 0;\n        for (const worldID of getGroupWorldIDs(groupID))\n            if (getWorldOwnerType(worldID) === OwnerType.GROUP && getOwnerID(worldID) === groupID)\n                worldsCount++;\n\n        const groupPlan: Plan = await App.getInstance().dataSourcePlans.getPlan(group.Plan);\n        if (worldsCount >= groupPlan.worlds)\n            planWarningMessage = i18next.t(\"Plan's worlds limit exceeded\");\n\n        this.setState((prevState: CreateWorldFormState) => ({\n            ownerID: planWarningMessage ? prevState.ownerID : groupID,\n            planWarningMessage,\n        }));\n    }\n\n    private isCreateButtonDisabled(): boolean {\n        return Boolean(this.state.planWarningMessage) ||\n               Boolean(this.state.titleWarningMessage) ||\n               !this.state.ownerID ||\n               !this.state.title\n    }\n\n    render() {\n        return (\n            <>\n                <Content>\n                    <MainTitle>\n                        {this.props.worldID ? i18next.t(\"Duplicate World\") : i18next.t(\"Create World\")}\n                    </MainTitle>\n                    <Box style={{ minHeight: \"60px\" }}>\n                        <SectionTitle> {i18next.t(\"World title\")} </SectionTitle>\n                        <InputText\n                            id=\"create-world-input-name\"\n                            ref={this.inputNameRef}\n                            value={this.state.title}\n                            dark\n                            placeholder={i18next.t(\"Enter a World title!\")}\n                            onChange={(title: string) =>\n                                this.setState({\n                                    title,\n                                    titleWarningMessage: !title.trim() ? i18next.t(\"A title is needed\") : \"\"\n                                })\n                            }\n                        />\n                        <Box style={{\n                            font: secondaryFontXSmall,\n                            color: this.state.title.length > MAX_WORLD_TITLE_CHARACTERS ? red : dark }}>\n                            {this.state.title.length}/{MAX_WORLD_TITLE_CHARACTERS} {i18next.t(\"characters\")}\n                        </Box>\n                        <WarningWrapper show_message={Number(Boolean(this.state.titleWarningMessage))}>\n                            {this.state.titleWarningMessage}\n                        </WarningWrapper>\n                    </Box>\n                    <Box style={{ minHeight: \"80px\" }}>\n                        <SectionTitle>\n                            {`${i18next.t(\"Choose a World Owner\")} (${i18next.t(\"Yourself or a Group\")})`}\n                        </SectionTitle>\n                        {!this.state.availableGroups ?\n                            <CenteredLoading/>\n                            :\n                            <Select\n                                id=\"select-world-owner\"\n                                fullWidth\n                                style={{ textAlign: \"left\", background: darkenWhite, borderRadius: \"4px\" }}\n                                styleOptionsWrapper={{ maxHeight: \"400px\", overflow: \"auto\" }}\n                                options={[...Array.from(this.state.availableGroups.values()), i18next.t(\"Myself\")]}\n                                onChange={(index: number) => this.handleChangeWorldOwner(index)}\n                                default={-1}\n                            />\n                        }\n                        <WarningWrapper show_message={Number(Boolean(this.state.planWarningMessage))}>\n                            {this.state.planWarningMessage}\n                        </WarningWrapper>\n                    </Box>\n                </Content>\n                <ButtonsContainer>\n                    <Button\n                        variant=\"outlined\"\n                        color=\"primary\"\n                        size=\"large\"\n                        onClick={() => this.props.closePanel()}\n                    >\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                    <Button\n                        id=\"save-new-world-btn\"\n                        disabled={this.isCreateButtonDisabled() || this.state.title.length > MAX_WORLD_TITLE_CHARACTERS}\n                        onClick={() => this.handleCreateWorld()}\n                        size=\"large\"\n                    >\n                        {i18next.t(\"Create\")}\n                    </Button>\n                </ButtonsContainer>\n            </>\n        )\n    }\n}\n", "import React, {ReactNode} from \"react\"\nimport {white, overlay, primary, dark, red} from \"@root/react-components/src/values/colors/colors\";\nimport {Box, styled} from \"@mui/material\";\nimport {secondaryFontLarge, secondaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst Overlay = styled(Box)({\n    position: \"absolute\",\n    width: \"100%\",\n    height: \"100%\",\n    top: 0,\n    left: 0,\n    backgroundColor: overlay,\n    zIndex: 999\n});\n\nconst WORLD_PANEL_WIDTH: number = 400\nexport const WORLD_PANEL_SLIDING_ANIMATION_TIME: number = 500\nconst WorldPanelContainer = styled(Box)((props: {open: number}) => ({\n    position: \"absolute\",\n    height: \"100%\",\n    width: `${WORLD_PANEL_WIDTH}px`,\n    right: props.open ? 0 : `-${WORLD_PANEL_WIDTH}px`,\n    top: 0,\n    backgroundColor: white,\n    zIndex: 1000,\n    borderRadius: \"24px\",\n    transition: `right ${WORLD_PANEL_SLIDING_ANIMATION_TIME}ms`,\n    display: \"flex\",\n}));\n\nconst WorldPanelContentContainer = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"space-between\",\n    padding: \"24px\"\n})\n\nexport const MainTitle = styled(Box)({\n    color: primary,\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    font: secondaryFontXLarge,\n    fontSize: \"22px\",\n    width: \"100%\",\n    paddingBottom: \"15px\"\n});\n\nexport const SectionTitle = styled(Box)({\n    color: dark,\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    font: secondaryFontLarge,\n    width: \"100%\",\n    paddingBottom: \"2px\"\n});\n\nexport const ButtonsContainer = styled(Box)({\n    paddingTop: \"10px\",\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    gap: \"10px\"\n});\n\nexport const WarningWrapper = styled(Box)((props: {show_message: number}) => ({\n    display: props.show_message ? \"flex\" : \"hidden\",\n    padding: \"6px 0px 0px\",\n    color: red,\n    textAlign: \"left\"\n}));\n\ninterface WorldPanelProps {\n    children: ReactNode\n    isOpen: boolean\n    closePanel: () => void\n}\n\nexport class WorldSidePanel extends React.Component {\n    props: WorldPanelProps;\n\n    render() {\n        return (\n            <>\n                {this.props.isOpen && <Overlay onClick={() => this.props.closePanel()} />}\n                <WorldPanelContainer open={Number(this.props.isOpen)}>\n                    <WorldPanelContentContainer>\n                        {this.props.isOpen && this.props.children}\n                    </WorldPanelContentContainer>\n                </WorldPanelContainer>\n            </>\n        )\n    }\n}", "import * as React from \"react\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Box, styled} from \"@mui/material\";\nimport {\n    ButtonsContainer,\n    MainTitle,\n    SectionTitle,\n    WarningWrapper,\n    WORLD_PANEL_SLIDING_ANIMATION_TIME,\n} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/WorldSidePanel\";\nimport i18next from \"i18next\";\nimport {\n    getCurrentWorldID,\n    getDocumentSize,\n    getOwnerID,\n    getSequenceCount,\n    getWorldTitle,\n    getWorldPeers,\n    getWorldGroups,\n    getWorldOwnerType,\n    getPeerFullName,\n    getPeerGroups,\n    getPeerGroupRole,\n    isUserOwnerWorld,\n    loadWorldAsset,\n    updateWorldTitle,\n    updateWorldOwner, setEnvironment\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {\n    secondaryFontLarge,\n    secondaryFontXLarge,\n    secondaryFontXSmall\n} from \"@root/react-components/src/values/fonts/fonts\";\nimport {AssetType} from \"@backend/Types/AssetType\";\nimport {\n    getWorldAssetDocumentID,\n    getWorldAssetType,\n    getWorldAssetVideoID,\n    isWorldAssetLoaded\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {getVideoFileSize} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {convertBytesIntoPrettyDataAmount} from \"@utils/utils\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Autocomplete, AutocompleteOption} from \"@root/react-components/src/inputs/Autocomplete\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Role} from \"@backend/Types/Role\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport {Group} from \"@backend/Types/Group\";\nimport {dark, lightGrey, red} from \"@root/react-components/src/values/colors/colors\";\nimport {MAX_WORLD_TITLE_CHARACTERS} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/CreateWorld\";\nimport {WorldDimensionsSliders} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/WorldDimensionsSliders\";\nimport {MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {Check} from \"@root/react-components/src/icons/Check\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\n\nconst Wrapper = styled(Box)({\n    overflow: \"auto\",\n    paddingRight: \"8px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"10px\",\n\n    \"&::-webkit-scrollbar\": {\n        width: \"8px\",\n        height: \"8px\",\n    },\n    \"&::-webkit-scrollbar-thumb\": {\n        backgroundColor: lightGrey,\n        borderRadius: \"10px\",\n    },\n});\n\nconst AutocompleteWrapper = styled(Box)({\n    display: 'flex',\n    alignItems: 'center',\n    gap: '10px'\n});\n\nconst RowInformation = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    padding: \"4px\",\n    gap: \"20px\"\n});\n\nconst TitleInformation = styled(Box)({\n    flex: 2,\n    font: secondaryFontLarge\n});\n\nconst ValueInformation = styled(Box)({\n    flex: 1,\n    textAlign: \"right\",\n    font: secondaryFontLarge\n});\n\nconst OverviewTitle = styled(Box)({\n    paddingTop: \"10px\",\n    display: \"flex\",\n    font: secondaryFontXLarge,\n    gap: \"4px\",\n    alignItems: \"center\"\n});\n\nconst IconContainer = styled(Box)((props: { is_disabled?: number }) => ({\n    width: \"15px\",\n    pointerEvents: props.is_disabled ? \"none\" : \"unset\",\n    cursor: props.is_disabled ? \"auto\" : \"pointer\",\n    opacity: props.is_disabled ? 0.6 : 1\n}));\n\ninterface WorldInformationProps {\n    isOpen: boolean\n    worldID: bigint\n    closePanel: () => void\n}\n\ninterface WorldInformationState {\n    title: string;\n    showWarningError: boolean;\n    documentIDs: bigint[];\n    numberOfImages: number;\n    videoIDs: bigint[];\n    totalDocumentStorageUsage: number;\n    totalVideoStorageUsage: number;\n    isEditingOwner: boolean;\n    worldOwnerID: bigint;\n    sharedPeersGroups: Map<bigint, string>;\n}\n\nconst OVERVIEW_EXPLANATION_TOOLTIP_TEXT: string = \"The following information concerns only permanent assets that\" +\n    \" belong to the world (which excludes any dynamic assets in the steps)\";\n\nconst WORLD_TRANSFER_EXPLANATION_TOOLTIP_TEXT: string = \"World owners may only transfer the world to a group or peer that the world has been shared with\"\nexport class WorldInformation extends React.Component {\n    private readonly app: App = App.getInstance();\n    private readonly inputNameRef: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n\n    props: WorldInformationProps;\n    state: WorldInformationState = {\n        title: \"\",\n        showWarningError: false,\n        documentIDs: [],\n        numberOfImages: 0,\n        videoIDs: [],\n        totalDocumentStorageUsage: 0,\n        totalVideoStorageUsage: 0,\n        isEditingOwner: false,\n        worldOwnerID: BigInt(0),\n        sharedPeersGroups: new Map<bigint, string>()\n    }\n\n    override async componentDidMount() {\n        const assetIDs: bigint[] = this.app.getEngine()?.getWorldAssetIDs(this.props.worldID);\n        for (const assetID of assetIDs) {\n            if (getCurrentWorldID() === this.props.worldID || isWorldAssetLoaded(this.props.worldID, assetID))\n                this.updateWorldAsset(assetID);\n            else\n                loadWorldAsset(this.props.worldID, assetID);\n        }\n    \n        // get world info\n        const worldPeerIDs: bigint[] = [...getWorldPeers(this.props.worldID)];\n        const worldGroupIDs: bigint[] = [...getWorldGroups(this.props.worldID)];\n        this.setState({\n            title: getWorldTitle(this.props.worldID),\n            worldOwnerID: getOwnerID(this.props.worldID),\n            sharedPeersGroups: await this.getSharedPeers(worldPeerIDs, worldGroupIDs)\n        });\n\n        setTimeout(() => this.inputNameRef.current?.focus(), WORLD_PANEL_SLIDING_ANIMATION_TIME);\n    }\n\n    private handleAutocompleteChange(option: AutocompleteOption) {\n        if (!option)\n            return;\n        \n        this.setState({ worldOwnerID: option.value });\n    }\n\n    private saveNewOwner() {\n        if (this.state.worldOwnerID === getOwnerID(this.props.worldID))\n            return;\n\n        const worldPeers: bigint[] = [...getWorldPeers(this.props.worldID)];\n        const ownerType: OwnerType = worldPeers.includes(this.state.worldOwnerID) ? OwnerType.PEER : OwnerType.GROUP;\n        updateWorldOwner(this.props.worldID, ownerType, this.state.worldOwnerID);\n\n        this.setState({ isEditingOwner: false });\n    }\n\n    private saveNewTitle() {\n        if (this.state.title === getWorldTitle(this.props.worldID) || this.state.showWarningError)\n            return\n\n        updateWorldTitle(this.props.worldID, this.state.title);\n    }\n\n    private async getSharedPeers(worldPeers: bigint[], worldGroups: bigint[]): Promise<Map<bigint, string>> {\n        const sharedPeersMap: Map<bigint, string> = this.state.sharedPeersGroups;\n        for (const peerID of worldPeers)\n            sharedPeersMap.set(peerID, getPeerFullName(peerID));\n\n        for (const groupID of worldGroups) {\n            const group: Group = await App.getInstance().dataSourceGroups.getGroup(groupID);\n            sharedPeersMap.set(groupID, group.Name);\n        }\n\n        return sharedPeersMap;\n    }\n\n    private isCurrentUserWorldOwner(): boolean {\n        const worldOwnerType: OwnerType = getWorldOwnerType(this.props.worldID);\n        if (worldOwnerType === OwnerType.PEER)\n            return isUserOwnerWorld(this.props.worldID);\n\n        // Editor peers of the group that own a world are allowed to transfer ownership\n        if (worldOwnerType === OwnerType.GROUP) {\n            const peerGroups: Set<bigint> = getPeerGroups(getCurrentPeerID());\n            const worldOwnerID: bigint = getOwnerID(this.props.worldID);\n            if (!peerGroups || !peerGroups.has(worldOwnerID))\n                return false;\n            \n            const role: Role | null = getPeerGroupRole(getCurrentPeerID(), worldOwnerID);\n            return role === Role.EDITOR;\n        }\n        \n        return false;\n    }\n\n    public updatePeer(peerID: bigint) {\n        const worldPeerIDs: bigint[] = [...getWorldPeers(this.props.worldID)];\n        if (!worldPeerIDs.includes(peerID))\n            return;\n\n        this.setState((prevState: WorldInformationState) => {\n            const sharedPeersGroups: Map<bigint, string> = prevState.sharedPeersGroups;\n            sharedPeersGroups.set(peerID, getPeerFullName(peerID));\n            return { sharedPeersGroups };\n        });    \n    }\n\n    public updateWorldAsset(assetID: bigint) {\n        if (!this.app.getEngine()?.getWorldAssetIDs(this.props.worldID).includes(assetID))\n            return;\n\n        const worldID: bigint = this.props.worldID;\n        const assetType: AssetType = getWorldAssetType(worldID, assetID);\n\n        this.setState((prevState: WorldInformationState) => {\n            const documentIDs: bigint[] = prevState.documentIDs;\n            let numberOfImages: number = prevState.numberOfImages;\n            const videoIDs: bigint[] = prevState.videoIDs;\n            let totalDocumentStorageUsage: number = prevState.totalDocumentStorageUsage;\n            let totalVideoStorageUsage: number = prevState.totalVideoStorageUsage;\n\n            switch (assetType) {\n                case AssetType.IMAGE:\n                    ++numberOfImages;\n                    break;\n                case AssetType.MODEL: {\n                    const assetDocumentID: bigint = getWorldAssetDocumentID(worldID, assetID);\n                    if (assetDocumentID) {\n                        documentIDs.push(assetDocumentID);\n                        totalDocumentStorageUsage += Number(getDocumentSize(assetDocumentID));\n                    }\n                    break;\n                }\n                case AssetType.VIDEO: {\n                    const assetVideoID: bigint = getWorldAssetVideoID(worldID, assetID);\n                    if (assetVideoID) {\n                        videoIDs.push(assetVideoID);\n                        totalVideoStorageUsage += Number(getVideoFileSize(assetVideoID));\n                    }\n                    break;\n                }\n                // ignore these cases\n                case AssetType.MTCONNECT:\n                case AssetType.TEXT:\n                case AssetType.COUNT:\n                default:\n                    break;\n            }\n\n            return {\n                documentIDs,\n                numberOfImages,\n                videoIDs,\n                totalDocumentStorageUsage,\n                totalVideoStorageUsage\n            }\n        });\n    }\n\n    public updateDocument(documentID: bigint) {\n        if (!this.state.documentIDs.includes(documentID))\n            return;\n\n        this.setState((prevState: WorldInformationState) => ({\n            totalDocumentStorageUsage: prevState.totalDocumentStorageUsage + Number(getDocumentSize(documentID))\n        }));\n    }\n\n    public updateVideo(videoID: bigint) {\n        if (!this.state.videoIDs.includes(videoID))\n            return;\n\n        this.setState((prevState: WorldInformationState) => ({\n            totalVideoStorageUsage: prevState.totalVideoStorageUsage + Number(getVideoFileSize(videoID))\n        }));\n    }\n\n    private handleClosePanel() {\n        const engine: MainModule = App.getInstance().getEngine();\n        setEnvironment(\n            engine.getWorldDimensionW(getCurrentWorldID()),\n            engine.getWorldDimensionH(getCurrentWorldID()),\n            engine.getWorldDimensionD(getCurrentWorldID()),\n            BigInt(0)\n        );\n        this.props.closePanel();\n    }\n\n    render() {\n        return (\n            <>\n                <MainTitle> {i18next.t(\"World information\")} </MainTitle>\n                <Wrapper>\n                    <Box>\n                        <SectionTitle> {i18next.t(\"World title\")} </SectionTitle>\n                        <InputText\n                            id=\"create-world-input-name\"\n                            ref={this.inputNameRef}\n                            value={this.state.title ?? \"\"}\n                            dark\n                            placeholder={i18next.t(\"Enter a World title!\")}\n                            onChange={(title: string) =>\n                                this.setState({ title, showWarningError: !title.trim() })}\n                            onBlur={() => this.saveNewTitle()}\n                            onKeyDown={(e: React.KeyboardEvent) => e.key === \"Enter\" && this.saveNewTitle()}\n                        />\n                        <Box style={{\n                            font: secondaryFontXSmall,\n                            color: this.state.title.length > MAX_WORLD_TITLE_CHARACTERS ? red : dark }}>\n                            {this.state.title.length}/{MAX_WORLD_TITLE_CHARACTERS} {i18next.t(\"characters\")}\n                        </Box>\n                        <WarningWrapper show_message={Number(this.state.showWarningError)}>\n                            {this.state.showWarningError && i18next.t(\"A title is needed\")}\n                        </WarningWrapper>\n                    </Box>\n\n                    {[...this.state.sharedPeersGroups.keys()].includes(this.state.worldOwnerID) &&\n                        <Box>\n                            <SectionTitle> \n                                {i18next.t(\"Owner\")} \n                                <Tooltip\n                                    placement=\"top\"\n                                    title={`${i18next.t(WORLD_TRANSFER_EXPLANATION_TOOLTIP_TEXT)}`}>\n                                    <InfoIcon style={{cursor: \"pointer\"}}>\n                                        <Info />\n                                    </InfoIcon>\n                                </Tooltip>\n                            </SectionTitle>\n                            <AutocompleteWrapper>\n                                    <Autocomplete\n                                        disablePortal\n                                        style={{ flexGrow: 1 }}\n                                        options={\n                                            Array.from(this.state.sharedPeersGroups).map(([peerID, peerName]) => ({\n                                                label: peerName, \n                                                value: peerID \n                                            }))\n                                        }\n                                        getOptionLabel={(option: AutocompleteOption) => option.label ?? \"\"}\n                                        value={{ \n                                            label: this.state.sharedPeersGroups.get(this.state.worldOwnerID) ?? \"\", \n                                            value: this.state.worldOwnerID \n                                        }}\n                                        onChange={(_: React.ChangeEvent<object>, value: AutocompleteOption) =>\n                                                this.handleAutocompleteChange(value)\n                                        }\n                                        disabled={!this.state.isEditingOwner}\n                                    />\n\n                                {this.isCurrentUserWorldOwner() && (\n                                    <ButtonsContainer style={{ paddingTop: \"0\" }}>\n                                        {this.state.isEditingOwner ?\n                                            <Box style={{ display: \"flex\", gap: \"15px\" , paddingTop: \"6px\"}}>\n                                                <IconContainer\n                                                    is_disabled={Number(this.state.worldOwnerID === getOwnerID(this.props.worldID))}\n                                                    onClick={() => this.saveNewOwner()}>\n                                                    <Check />\n                                                </IconContainer>\n                                                <IconContainer\n                                                    onClick={() => this.setState({ isEditingOwner: false })}>\n                                                    <Close />\n                                                </IconContainer>\n                                            </Box>\n                                        :\n                                            <Button onClick={() => this.setState({ isEditingOwner: true })}>\n                                                {i18next.t(\"Edit\")}\n                                            </Button>\n                                        }\n                                    </ButtonsContainer>\n                                )}\n                            </AutocompleteWrapper>\n                        </Box>\n                    }\n                    \n                    <Box style={{ display: \"flex\", flexDirection: \"column\", marginBottom: \"10px\"}}>\n                        <OverviewTitle>\n                            {i18next.t(\"Data overview\")}\n                            <Tooltip\n                                placement=\"top\"\n                                title={`${i18next.t(OVERVIEW_EXPLANATION_TOOLTIP_TEXT)}.`}>\n                                <InfoIcon style={{cursor: \"pointer\"}}>\n                                    <Info />\n                                </InfoIcon>\n                            </Tooltip>\n                        </OverviewTitle>\n                        <RowInformation>\n                            <TitleInformation>{i18next.t(\"Number of sequences\")}</TitleInformation>\n                            <ValueInformation>{getSequenceCount(this.props.worldID)}</ValueInformation>\n                        </RowInformation>\n                        <RowInformation>\n                            <TitleInformation>{i18next.t(\"Number of models\")}</TitleInformation>\n                            <ValueInformation>{this.state.documentIDs.length}</ValueInformation>\n                        </RowInformation>\n                        <RowInformation>\n                            <TitleInformation>{i18next.t(\"Total usage of models storage space\")}</TitleInformation>\n                            <ValueInformation>\n                                {convertBytesIntoPrettyDataAmount(this.state.totalDocumentStorageUsage).toString()}\n                            </ValueInformation>\n                        </RowInformation>\n                        <RowInformation style={{ paddingTop: \"10px\" }}>\n                            <TitleInformation>{i18next.t(\"Number of images\")}</TitleInformation>\n                            <ValueInformation>{this.state.numberOfImages}</ValueInformation>\n                        </RowInformation>\n                        <RowInformation>\n                            <TitleInformation>{i18next.t(\"Number of videos\")}</TitleInformation>\n                            <ValueInformation>{this.state.videoIDs.length}</ValueInformation>\n                        </RowInformation>\n                        <RowInformation>\n                            <TitleInformation>{i18next.t(\"Total usage of videos storage space\")}</TitleInformation>\n                            <ValueInformation>\n                                {convertBytesIntoPrettyDataAmount(this.state.totalVideoStorageUsage).toString()}\n                            </ValueInformation>\n                        </RowInformation>\n\n                        <OverviewTitle>\n                            {i18next.t(\"Grid Parameters\")}\n                        </OverviewTitle>\n                        <RowInformation>\n                            <WorldDimensionsSliders worldID={this.props.worldID}/>\n                        </RowInformation>\n                    </Box>\n                </Wrapper>\n\n                <ButtonsContainer>\n                    <Button variant=\"outlined\" color=\"primary\" size=\"large\" onClick={() => this.handleClosePanel()}>\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                </ButtonsContainer>\n            </>\n        );\n    }\n}\n", "import * as React from 'react';\nimport { primaryFontLarge } from \"../values/fonts/fonts\";\nimport {primary, darkenPrimary, white} from \"../values/colors/colors\";\nimport {\n    Autocomplete as MuiAutocomplete,\n    AutocompleteProps,\n    TextField,\n    Popper,\n    styled\n} from '@mui/material';\nimport i18next from \"i18next\";\n\nconst Option = styled(\"li\")({\n    font: primaryFontLarge,\n    \"&:hover, &.Mui-focused\": {\n        backgroundColor: `${primary} !important`,\n        color: white\n    }\n});\n\nconst PopperStyles = styled(Popper)({\n    width: \"fit-content !important\",\n    '& .MuiAutocomplete-listbox': {\n        '&::-webkit-scrollbar': {\n            width: '12px'\n        },\n        '&::-webkit-scrollbar-thumb': {\n            backgroundColor: `${primary}`,\n            borderRadius: '10px'\n        },\n        '&::-webkit-scrollbar-thumb:hover': {\n            backgroundColor: `${darkenPrimary}`\n        }\n    }\n});\n\nexport interface AutocompleteOption {\n    label: string;\n    value: bigint;\n}\n\nexport class Autocomplete extends React.Component {\n    props: Omit<AutocompleteProps<AutocompleteOption | string, false, boolean | undefined, false>, \"renderInput\">;\n\n    handleKeyDown = (event: React.KeyboardEvent) => {\n        if (event.key === 'Enter')\n            event.stopPropagation();\n    };\n\n    private defaultRenderOption(props: React.HTMLAttributes<HTMLLIElement>, option: AutocompleteOption | string) {\n        return <Option {...props} key={typeof option === \"string\" ? option : option.value.toString()}>\n            {typeof option === \"string\" ? option : option.label}\n        </Option>;\n    }\n\n    render() {\n        return (\n            <MuiAutocomplete\n                {...this.props}\n                options={this.props.options ?? []}\n                noOptionsText={i18next.t(\"No options\")}\n                renderInput={(params) => (\n                    <TextField\n                        {...params}\n                        size=\"small\"\n                        InputProps={{\n                            ...params.InputProps,\n                            sx: {\n                                ...this.props.style,\n                                '& .MuiInputBase-input': {\n                                    font: primaryFontLarge\n                                }\n                            }\n                        }}\n                        InputLabelProps={params.InputLabelProps}\n                    />\n                )}\n                isOptionEqualToValue={(option: string | AutocompleteOption, value: string | AutocompleteOption) =>\n                    typeof option === \"string\" || typeof value === \"string\" ?\n                        option === value : option.value === value.value\n                }\n                renderOption={this.props.renderOption ?? this.defaultRenderOption}\n                PopperComponent={(props) => <PopperStyles {...props} />}\n                style={{ ...this.props.style, backgroundColor: \"inherit\" }}\n                onKeyDown={this.handleKeyDown}\n            />\n        );\n    }\n}", "import React from \"react\";\nimport {canCurrentPeerEditWorld, setEnvironment} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {SliderController} from \"@root/react-components/src/inputs/slider/SliderController\";\nimport i18next from \"i18next\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Box} from \"@mui/material\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport {MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\ninterface WorldDimensionsSlidersProps {\n    worldID: bigint;\n}\n\ninterface WorldDimensionsSlidersState {\n    width: number;\n    depth: number;\n    height: number;\n}\n\nexport class WorldDimensionsSliders extends React.Component {\n    props: WorldDimensionsSlidersProps\n    state: WorldDimensionsSlidersState = {\n        width: App.getInstance().getEngine().getWorldDimensionW(this.props.worldID),\n        depth: App.getInstance().getEngine().getWorldDimensionD(this.props.worldID),\n        height: App.getInstance().getEngine().getWorldDimensionH(this.props.worldID)\n    };\n\n    private updateWorldDimensions(shouldSave: boolean) {\n        const engine: MainModule = App.getInstance().getEngine();\n        if (this.state.width === engine.getWorldDimensionW(this.props.worldID) &&\n            this.state.depth === engine.getWorldDimensionD(this.props.worldID) &&\n            this.state.height === engine.getWorldDimensionH(this.props.worldID))\n            return;\n\n        const worldID: bigint = shouldSave ? this.props.worldID : BigInt(0);\n        setEnvironment(this.state.width, this.state.height, this.state.depth, worldID);\n        App.getInstance().toolbarRef.current?.updatePosSlidersLimit();\n    }\n\n    render() {\n        return (\n            <Box style={{ display: \"flex\", flexDirection: \"column\", width: \"100%\", paddingLeft: \"5px\" }}>\n                <SliderController\n                    color={dark}\n                    label={i18next.t(\"Width\")}\n                    value={this.state.width}\n                    min={0.1}\n                    max={25}\n                    unit={\"m\"}\n                    onChange={(width: number) => this.setState({ width }, () => this.updateWorldDimensions(false))}\n                    onEnd={(width: number) => this.setState({ width }, () => this.updateWorldDimensions(true))}\n                />\n                <SliderController\n                    color={dark}\n                    label={i18next.t(\"Depth\")}\n                    value={this.state.depth}\n                    min={0.1}\n                    max={25}\n                    unit={\"m\"}\n                    onChange={(depth: number) => this.setState({ depth }, () => this.updateWorldDimensions(false))}\n                    onEnd={(depth: number) => this.setState({ depth }, () => this.updateWorldDimensions(true))}\n                />\n                <SliderController\n                    color={dark}\n                    label={i18next.t(\"Grid Height Position\")}\n                    value={this.state.height}\n                    min={-3}\n                    max={3}\n                    unit={\"m\"}\n                    onChange={(height: number) => this.setState({ height }, () => this.updateWorldDimensions(false))}\n                    onEnd={(height: number) => this.setState({ height }, () => this.updateWorldDimensions(true))}\n                />\n            </Box>\n        )\n    }\n}", "import React from \"react\"\nimport {Box} from \"@mui/material\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {\n    canCurrentPeerDeleteWorld,\n    getWorldTitle,\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {ButtonsContainer, MainTitle} from \"@root/Frontend/Studio/Views/WorldsLibrary/WorldSidePanel/WorldSidePanel\";\n\ninterface DeleteWorldProps {\n    worldID: bigint\n    isOpen: boolean\n    closePanel: () => void\n    handleDeleteWorld: (isOwner: boolean) => void\n}\n\ninterface DeleteWorldState {\n    canPeerDeleteWorld: boolean;\n}\n\nexport class DeleteWorld extends React.Component {\n    props: DeleteWorldProps;\n    state: DeleteWorldState = {\n        canPeerDeleteWorld: false\n    };\n\n\n    componentDidMount() {\n        this.setState({ canPeerDeleteWorld: canCurrentPeerDeleteWorld(this.props.worldID) });\n        window.addEventListener(\"keydown\",  this.handleKeydown);\n    }\n\n    componentWillUnmount() {\n        window.removeEventListener(\"keydown\", this.handleKeydown);\n    }\n\n    private handleKeydown = (event: KeyboardEvent)=> {\n        if(event.key === \"Enter\")\n            this.props.handleDeleteWorld(this.state.canPeerDeleteWorld);\n    }\n\n    private getDeleteMsg(canPeerDeleteWorld: boolean) {\n       return canPeerDeleteWorld ?\n           `${i18next.t(\"Are you sure you want to delete the world\")} ${getWorldTitle(this.props.worldID)}?` :\n           `${i18next.t(\"Are you sure you want to remove the world\")} ${getWorldTitle(this.props.worldID)} \n            ${i18next.t(\"from your library\")}?`;\n    }\n\n    render() {\n        return (\n            <>\n                <Box>\n                    <MainTitle> {i18next.t(\"Delete world\")} </MainTitle>\n                    <Box sx={{ font: primaryFontLarge, padding: \"10px 0px\" }}>\n                        {this.getDeleteMsg(this.state.canPeerDeleteWorld)}\n                    </Box>\n                </Box>\n                <ButtonsContainer>\n                    <Button variant=\"outlined\" onClick={() => this.props.closePanel()}>\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                    <Button\n                        id=\"world-delete-confirm\"\n                        color=\"error\"\n                        onClick={() => this.props.handleDeleteWorld(this.state.canPeerDeleteWorld)}\n                    >\n                        {i18next.t(\"Delete\")}\n                    </Button>\n                </ButtonsContainer>\n            </>\n        )\n    }\n}\n", "import * as React from 'react';\nimport {View} from \"Interface/View\";\nimport {ProgressBarWidget} from \"Views/ProgressBar/ProgressBarWidget\";\nimport {DownloadUpload} from \"Types/DownloadUpload\";\nimport i18next from \"i18next\";\n\nexport class ProgressBar extends View {\n    progressWidget: React.RefObject<ProgressBarWidget> = React.createRef<ProgressBarWidget>();\n    items: DownloadUpload[] = [];\n    widgetOffset: number ;\n\n    constructor(offset = 0) {\n        super(\"ProgressBar\");\n\n        this.widgetOffset = offset;\n\n        // set an alert in browser if something is uploading\n        window.addEventListener(\"beforeunload\", e => {\n            if(this.items.length > 0){\n                this.progressWidget.current?.setState({forceHide: false, display:true});\n\n                let confirmationMessage = i18next.t(\"Something is transferring\");\n\n                (e || window.event).returnValue = confirmationMessage; //Gecko + IE\n\n                return confirmationMessage;                            //Webkit, Safari, Chrome\n            }\n        });\n    }\n\n    public update(itemName: string, isDownload: boolean, progress: number){\n        // search to update or remove existing progress\n        let existingItem = false;\n        this.items.forEach((item, index) => {\n            if(item.item === itemName) {\n                existingItem = true;\n\n                if(progress === 1)\n                    this.items.splice(index, 1);\n                else\n                    item.progress = progress\n            }\n        });\n\n        // add new progress to queue\n        if(!existingItem && progress !== 1)\n            this.items.push({item: itemName, isDownload: isDownload, progress: progress});\n\n        // update widget\n        this.progressWidget.current?.setState({\n            display: this.items.length > 0,\n            progressItems: this.items\n        });\n\n        // finished all progress, make sure the widget appears on next events\n        if(this.items.length === 0)\n            this.progressWidget.current?.setState({forceHide: false})\n    };\n\n    public render(){\n        return (\n            <ProgressBarWidget\n                offset={this.widgetOffset}\n                ref={this.progressWidget}/>\n        )\n    }\n}", "import * as React from \"react\";\nimport {ReactElement} from \"react\";\n/*\n * Each module is defined as a view controller\n * the `render` Function allows us to know how to render it the first time\n * the `visible` attribute allows us to know if we should render/update it or not\n */\nexport class View {\n    readonly name: string;\n    private visible: boolean = true;\n    public views: View[] = [];\n    public style?: React.CSSProperties = {\n        height: \"100%\",\n        width: \"100%\"\n    };\n\n    public constructor(name: string) {\n        this.name = name;\n    }\n\n    public addView(view: View){\n        this.views.push(view);\n    }\n\n    public setStyle(style: React.CSSProperties){\n        this.style = style;\n    }\n\n    // recursive\n    public setVisible(visible: boolean): void{\n        this.visible = visible;\n        this.views.forEach(viewObject => {\n            viewObject.setVisible(visible)\n        });\n    }\n\n    public isVisible(): boolean {\n        return this.visible;\n    }\n\n    // call render recursively on this.views\n    public renderRecursive(height: number = 0, width: number = 0): ReactElement {\n        if (!this.visible)\n            return;\n\n        return(\n            <div key={this.name} data-name={this.name} style={this.style}>\n                {this.render(height, width)}\n                {\n                    this.views.map(view => {return view.renderRecursive(height, width)})\n                }\n            </div>\n        );\n    }\n\n    public postRenderRecursive(height: number = 0, width: number = 0){\n        if(!this.visible)\n            return;\n\n        this.postRender(height, width);\n        this.views.forEach(view => {view.postRender(height, width)});\n    }\n\n    /**\n     * Should always be override\n     * @param height: available height\n     * @param width: available width\n     */\n    public render(height: number = 0, width: number = 0): ReactElement {\n        return <></>;\n    }\n\n    public postRender(height: number = 0, width: number = 0){\n        console.log(this.name + \" has no post render\");\n    };\n\n}", "import * as React from 'react';\nimport styled from 'styled-components';\nimport i18next from \"i18next\";\nimport {\n    dark,\n    darkenPrimary,\n    lighterDark,\n    primary,\n    shadowWhite,\n    white\n} from \"@root/react-components/src/values/colors/colors\";\nimport {DownloadUpload} from \"Types/DownloadUpload\";\nimport {secondaryFontSmall, secondaryFontXSmall} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst Wrapper = styled(\"div\")\n    <{\n        show: boolean,\n        offset: number\n    }>`\n    width: 300px;\n    background-color: ${white};\n    position: fixed;\n    top: 0;\n    left: calc(50% - ${props => props.offset}px);\n    padding: 12px;\n    z-index: 9999;\n    border-bottom-right-radius: 24px;\n    border-bottom-left-radius: 24px;\n    box-shadow:${shadowWhite};\n    transition: 0.3s transform;\n    transform: translateY(${props => props.show ? 0 : \"-100%\"});\n`;\n\nconst ItemsWrapper = styled(\"div\")`\n    height: 100%;\n    width: 100%;\n    max-height: 90px;\n    overflow: auto;\n    & > div{\n        margin-top: 3px;\n    }\n`;\n\nconst Title = styled(\"div\")`\n    font:${secondaryFontSmall};\n    color:${dark};\n    font-size: 9pt;\n    width:100%;\n    text-align: center;\n`;\n\nconst ProgressBar = styled(\"div\")`\n    height: 8px;\n    width: calc(100% - 2px);\n    border-radius: 4px;\n    border: 1px solid ${lighterDark};\n    position: relative;\n    overflow: hidden;\n`;\n\nconst Inner = styled(\"div\")`\n    height: 100%;\n    position: absolute;\n    left:0;\n    top:0;\n    background-color:${primary};\n`;\n\nconst Hide = styled(\"div\")`\n    width:100%;\n    text-align:right;\n    font: ${secondaryFontXSmall};\n    color:${primary};\n    text-decoration: underline;\n    margin-top: 3px;\n    &:hover{\n        cursor: pointer;\n        color: ${darkenPrimary};\n    }\n`;\n\nconst parseFileName = (filepath: string) : string => {\n    if(filepath == null)\n        return \"\";\n\n    // if the filepath does not contain / or . it means it's already valid -> do nothing\n    if(!(filepath.includes(\"/\") || filepath.includes(\".\"))){\n        return filepath;\n    }\n\n    let fullFilePathArr = filepath.split(\"/\");\n    // only keep the part after the last /\n    let partAfterLastSlashArr = fullFilePathArr[fullFilePathArr.length - 1];\n    // the fileName is the part between the last / and the . after\n    return partAfterLastSlashArr.split(\".\")[0];\n};\n\nexport class ProgressBarWidget extends React.Component{\n    props:{\n        offset: number\n    };\n    state: {\n        display: boolean,\n        forceHide: boolean,\n        progressItems: DownloadUpload[]\n    } = {\n        display: false,\n        forceHide: false,\n        progressItems: []\n    };\n\n    render(){\n        return(\n            <Wrapper\n                offset={this.props.offset}\n                show={ this.state.display && !this.state.forceHide }>\n                <ItemsWrapper>\n                {\n                    this.state.progressItems.map((progress, index) => (\n                        <div key={index + progress.item}>\n                            <Title><em>{parseFileName(progress.item)}</em>&nbsp;\n                                {progress.isDownload ? i18next.t(\"is downloading from\") : i18next.t(\"is saving to\")}&nbsp;cloud</Title>\n                            <ProgressBar>\n                                <Inner\n                                    style={{width: progress.progress * 100 + \"%\"}} />\n                            </ProgressBar>\n                        </div>\n                    ))\n                }\n                </ItemsWrapper>\n                <Hide onClick={() => this.setState({display:false, forceHide: true})}>\n                    {i18next.t(\"Hide this\")}\n                </Hide>\n            </Wrapper>\n        )\n    }\n}", "import {App} from \"@root/Frontend/Studio/App\";\nimport {TypeOS} from \"@backend/Types/TypeOS\";\nimport {allocateBufferStringUTF8} from \"@root/Frontend/Studio/Engine/utils\";\n\n/// Called when peer info changes\nexport function updateSessionPeerInfo(peerID: bigint) : void {\n    if(peerID === BigInt(0))\n        return;\n    App.getInstance().getEngine().updateSessionPeerInfo(peerID);\n}\n\n// Returns the peer connection status\nexport function getPeerConnectionStatus(peerID: bigint): RTCPeerConnectionState {\n    if(peerID === BigInt(0))\n        return \"failed\";\n\n    return App.getInstance().getEngine().getPeerConnectionStatus(peerID).toLowerCase() as RTCPeerConnectionState;\n}\n\nexport function getPeerTypeOS(peerID: bigint): TypeOS {\n    return App.getInstance().getEngine().getPeerTypeOS(peerID);\n}\n\nexport function getAkaSessionID(): number {\n    return App.getInstance().getEngine().getAkaSessionID();\n}\n\n/// join an existing session\nexport function joinSession(akaSessionID: string) {\n    App.getInstance().getEngine().joinSession(Number(akaSessionID));\n}\n\nexport function isPeerAvatarHidden(peerID: bigint): boolean {\n    if(peerID === BigInt(0))\n        return false;\n    return App.getInstance().getEngine().isPeerAvatarHidden(peerID);\n}\n\nexport function setTargetPeer(peerID: bigint): boolean {\n    return App.getInstance().getEngine().setTargetPeer(peerID);\n}\n\nexport function getFollowedPeer(): bigint {\n    return BigInt.asUintN(64, App.getInstance().getEngine().getFollowedPeer());\n}\n\nexport function getRemotePeerIDs(): bigint[] {\n    const engine = App.getInstance().getEngine();\n    const buffer: BigUint64Array = engine.getRemotePeerIDs();\n    const array: bigint[] = Array.from(buffer);\n    engine._free(buffer.byteOffset);\n\n    return array;\n}\n\nexport function isPointerVisible(): boolean {\n    return App.getInstance().getEngine().isPointerVisible();\n}\n\nexport function dismissPointer() {\n    App.getInstance().getEngine().dismissPointer();\n}\n\nexport function addImageToSession(filePath: string) : bigint {\n    return BigInt.asUintN(64, App.getInstance().getEngine().addImageToSession(filePath));\n}", "import {View} from \"Interface/View\";\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport {Logo} from \"@root/react-components/src/logo/Logo\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {isEmbed} from \"@utils/utils\";\nimport {WorldInfos} from \"Views/EmbedOverlay/WorldInfos\";\nimport i18next from \"i18next\";\nimport {isMobileOnly} from \"react-device-detect\";\n\nconst LogoWrap = styled(\"a\")`\n    display: block;\n    top: 5px;\n    right: 5px;\n    height: 72px;\n    width: 72px;\n    position: fixed;\n`;\n\nexport class EmbedOverlay extends React.Component {\n    worldInfosRef: React.RefObject<WorldInfos> = React.createRef<WorldInfos>();\n    render(){\n        let url = new URL(window.location.href);\n        let btnLabel = i18next.t(\"View in Studio\");\n        if(isMobileOnly){\n            if(isEmbed()){\n                btnLabel = \"View in AR\"\n            }else{\n                // push user to top to display iOS Smart Banner!\n                setInterval(() => {\n                    window.scrollTo(0, -100);\n                }, 500);\n\n\n                btnLabel = i18next.t(\"Get the App\")\n                url = new URL(\"https://apps.apple.com/ca/app/deepsight/id1280256793\");\n            }\n        }\n\n        return(\n            <>\n                <LogoWrap target={\"_blank\"} href={\"https://www.deepsight.ca\"}><Logo /></LogoWrap>\n                <div style={{marginTop: 5, marginLeft: 5}}><WorldInfos ref={this.worldInfosRef} /></div>\n                <a style={{\n                    textDecoration: \"none\",\n                    position: \"fixed\",\n                    bottom: 6,\n                    left: \"50%\",\n                    transform: \"translateX(-50%)\",\n                    zIndex: 999\n                }} href={url.origin + url.pathname} target={\"_blank\"}>\n                    <Button onClick={() => {}}>{btnLabel}</Button>\n                </a>\n            </>\n        )\n    }\n}", "import * as React from \"react\";\nimport styled from 'styled-components';\nimport {dark, green, red, white, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {Logo} from \"@root/react-components/src/logo/Logo\";\nimport i18next from \"i18next\";\nimport {\n    secondaryFontMedium,\n    secondaryFontSmall,\n    secondaryFontXSmall\n} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Login} from \"../Login/Views/Login\";\nimport {SignUp} from \"../Login/Views/SignUp\";\nimport {EmailVerification} from \"../Login/Views/EmailVerification\";\nimport {LoggedIn} from \"../Login/Views/LoggedIn\";\nimport {ForgotPassword} from \"../Login/Views/ForgotPassword\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {changeLanguage, isProductionEnvironment} from \"@utils/utils\";\nimport {DataSourcePlans} from \"@root/Frontend/DataSources/DataSourcePlans\";\n// @ts-ignore\nimport HindSemiBold from \"@root/../ResourcesCommon/Core/Fonts/Hind-SemiBold.ttf\"\n// @ts-ignore\nimport RubikRegular from \"@root/../ResourcesCommon/Core/Fonts/Rubik-Regular.ttf\"\nimport {theme} from \"@root/Frontend/theme\";\nimport {ThemeProvider} from \"@mui/material/styles\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport {Box} from \"@mui/material\";\nimport {DataSourceStorage} from \"@root/Frontend/DataSources/DataSourceStorage\";\nimport {Language} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {Authentication} from \"@utils/Authentication\";\nimport {HelperLogin} from \"@root/Frontend/Login/HelperLogin\";\nimport {convertI18nextLanguage, DEFAULT_LANGUAGE, getLanguageCode, LANGUAGE_VALUES} from \"@backend/Types/Language\";\n\nexport const DIALOG_WIDTH = 330;\n\nconst Wrapper = styled(\"div\")`\n    height: 100%;\n    width: 100%;\n    display: flex;\n    justify-content: center;\n    align-items: center; \n\n    @font-face {\n        font-family: 'hind';\n        font-style: normal;\n        font-weight: 600;\n        font-display: swap;\n        src: url(${HindSemiBold}) format('truetype');\n    }\n\n    @font-face {\n        font-family: 'rubik';\n        font-style: normal;\n        font-weight: 400;\n        font-display: swap;\n        src: url(${RubikRegular}) format('truetype');\n    }\n`\n\nconst Inner = styled(\"div\")<{showBackground: boolean}>`\n    height: 100%;\n    width: 100%;\n    max-width: ${DIALOG_WIDTH}px;\n    max-height: 560px;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: space-between;\n    color: ${ white };\n    background-color: ${props => props.showBackground ? dark : \"transparent\"};\n    border-radius: 24px;\n    padding: 35px 24px;\n    box-sizing: border-box;\n    position: relative;\n    overflow: auto;\n`;\n\nconst LangSwitcher = styled(\"div\")`\n    width: 100%;\n    & > div {\n        width: 50px;\n        float: right;\n    }\n`;\n\nconst LogoWrapper = styled(\"div\")`\n    width: 100%;\n    align-items: center;\n    justify-content: space-between;\n    text-align: center;\n    background-color: transparent;\n    font: ${secondaryFontMedium};\n`;\n\nconst LogoContainer = styled(\"div\")`\n    width: 100%;\n    background-color: transparent;\n    & > svg {\n        max-width:120px;\n        max-height: 100%;\n        margin-bottom:6px\n    }\n`;\n\nconst ToggleSign = styled(\"div\")`\n    margin-top: 8px;\n    margin-bottom: 6px;\n    width: 100%;\n    display: flex;\n    justify-content: space-around;\n    font: ${secondaryFontMedium};\n    & > div{\n        opacity: 0.6;\n        &:hover{\n            opacity: 1;\n            cursor: pointer;\n        }\n    }\n    & > div.active{\n        opacity: 1;\n        text-decoration: underline;\n    }\n`;\n\nconst Message = styled(\"div\")<{\n    status: MessageStatus\n}>`\n    color: ${props => props.status === MessageStatus.Success ?\n        green : \n            props.status === MessageStatus.Warning ?\n                yellow :\n                    props.status === MessageStatus.Error ?\n                        red : white};\n    font: ${secondaryFontSmall};\n    text-align: center;\n`;\n\nconst Content = styled(\"form\")`\n    width: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    flex-direction: column;\n    font: ${secondaryFontMedium};\n    gap: 12px;\n    & > hr{\n        width: 100%;\n    }\n`\n\nconst SelectLanguageContainer = styled(\"div\")`\n    & svg path { fill: ${ white };\n`\n\nexport const Small = styled(\"div\")`\n    text-align: center;\n    font: ${secondaryFontXSmall};\n    opacity: 0.7;\n    &:hover{\n        cursor: pointer;\n        opacity: 1;\n    }\n`;\n\nexport enum LoginView{\n    LogIn,\n    SignUp,\n    EmailVerification,\n    ForgotPassword,\n    LoggedIn\n}\n\nexport enum MessageStatus{\n    Normal,\n    Success,\n    Warning,\n    Error\n}\n\nexport interface LoginForm {\n    onSubmit: (code?: number) => void;\n}\n\ninterface AppLoginProps {\n    getAuthentication?: () => Authentication;\n    language?: Language;\n    setLanguage?: (language: Language) => void;\n    onTokenUpdated?: (token: string) => void;\n    closeLogin?: () => void;\n}\n\ninterface AppLoginState {\n    view: LoginView,\n    showLangSwitcher: boolean,\n    showBackground: boolean,\n    email: string,\n    message: {\n        status: MessageStatus,\n        text: string\n    }\n}\n\nexport interface AppLoginFormProps {\n    onChangeEmail: (email: string) => void;\n    email: string;\n    onTokenUpdated?: (token: string) => void;\n}\n\nexport class AppLogin extends React.Component {\n    static app: AppLogin;\n\n    public readonly authentication: Authentication = this.props.getAuthentication?.() ?? new Authentication();\n    public readonly helperLogin: HelperLogin = new HelperLogin(this.authentication);\n    public readonly dataSourcePeers: DataSourcePeers = new DataSourcePeers(this.authentication);\n    public readonly dataSourcePlans: DataSourcePlans = new DataSourcePlans(this.authentication);\n    public readonly dataSourceStorage: DataSourceStorage = new DataSourceStorage(this.authentication);\n\n    static getInstance() { return AppLogin.app; }\n\n    props: AppLoginProps;\n    state: AppLoginState = {\n        view: LoginView.LogIn,\n        showLangSwitcher: true,\n        showBackground: true,\n        email: \"\",\n        message: {\n            status: MessageStatus.Normal,\n            text: \"\"\n        }\n    };\n\n    constructor(props: object) {\n        super(props);\n        AppLogin.app = this;\n    }\n\n    // Class members\n    private currentView: LoginForm | null = null;\n    private loginContainerRef: React.RefObject<HTMLDivElement> = React.createRef();\n\n    override async componentDidMount() {\n        // detect if we click outside of login\n        document.addEventListener(\"mousedown\", (event) => {\n            if (this.state.view !== LoginView.LoggedIn)\n                return;\n\n            if (this.loginContainerRef.current && !this.loginContainerRef.current.contains(event.target as Node))\n                this.props.closeLogin?.();\n        });\n\n        // check for language code (default to english)\n        const url: URL = new URL(window.location.href);\n        let currentLangCode: string | null = url.searchParams.get(\"languageCode\");\n        if (!currentLangCode)\n            currentLangCode = getLanguageCode(this.props.language);\n\n        await i18next.init({\n            lng: currentLangCode,\n            fallbackLng: 'en',\n        });\n\n        await changeLanguage(convertI18nextLanguage(currentLangCode));\n\n        // If these URL params are ignored, we can assume they\u2019re true\n        const showBackground: string = url.searchParams.get(\"showBackground\") ?? \"true\";\n        const showLangSwitcher: string = url.searchParams.get(\"showLangSwitcher\") ?? \"true\";\n        this.setState({\n            view: await this.getCurrentView(url),\n            showLangSwitcher: showLangSwitcher === \"true\",\n            showBackground: showBackground === \"true\"\n        });\n    }\n\n    override async componentDidUpdate(prevProps: AppLoginProps) {\n        if (prevProps.language !== this.props.language)\n            await changeLanguage(this.props.language ?? DEFAULT_LANGUAGE);\n    }\n\n    private async getCurrentView(url: URL) {\n        if(await this.authentication.getToken())\n            return LoginView.LoggedIn;\n\n        if(url.searchParams.get(\"verificationCode\"))\n            return url.searchParams.get(\"resetPass\") === \"yes\" ? LoginView.ForgotPassword : LoginView.EmailVerification;\n\n        return LoginView.LogIn;\n    }\n\n    private onTokenUpdated(token: string) {\n        if (!token)\n            this.setState({ view: LoginView.LogIn });\n\n        this.props.onTokenUpdated?.(token);\n    }\n\n    private async handleLangChange(newLanguage: Language) {\n        if (this.props.setLanguage)\n            this.props.setLanguage(newLanguage);\n        else {\n            await changeLanguage(newLanguage);\n            this.forceUpdate();\n        }\n    }\n\n\n    setMessage(text: string, status: MessageStatus = MessageStatus.Normal){\n        if(text === this.state.message.text && status === this.state.message.status)\n            return;\n\n        this.setState({\n            message: {\n                text: text,\n                status: status\n            }\n        })\n    }\n\n    setView(view: LoginView) { this.setState({ view }); }\n\n    render() {\n        return(\n            <ThemeProvider theme={theme}>\n                <Wrapper>\n                    <Inner ref={this.loginContainerRef} showBackground={this.state.showBackground}>\n                        {this.state.showLangSwitcher &&\n                            <LangSwitcher>\n                                <SelectLanguageContainer>\n                                    <Box style={{ font: secondaryFontXSmall }}>{i18next.t(\"Language\")}</Box>\n                                    <Select\n                                        default={LANGUAGE_VALUES.indexOf(this.props.language ?? DEFAULT_LANGUAGE)}\n                                        options={LANGUAGE_VALUES.map((lang: Language) => getLanguageCode(lang))}\n                                        onChange={async (index: number) =>\n                                            await this.handleLangChange(LANGUAGE_VALUES[index])}\n                                        withBorders={false}\n                                        styleOptionsWrapper={{ color: dark }}\n                                    />\n                                </SelectLanguageContainer>\n                            </LangSwitcher>\n                        }\n                        <LogoWrapper>\n                            <LogoContainer>\n                                <Logo />\n                            </LogoContainer>\n                            {\n                                isProductionEnvironment() ? \"\" :\n                                    <small>\n                                        {\n                                            `${i18next.t(\"Connected to\")} : ${window.location.protocol}//${window.location.hostname}` +\n                                            `${window.location.port ? \":\" + window.location.port : \"\"}`\n                                        }\n                                    </small>\n                            }\n                        </LogoWrapper>\n                        {\n                            this.state.view !== LoginView.LoggedIn ?\n                                <ToggleSign>\n                                    <div\n                                        className={this.state.view === LoginView.LogIn ? \"active\" : \"\"}\n                                        onClick={() => this.setState({\n                                            message: {text: \"\", status: MessageStatus.Normal},\n                                            view: LoginView.LogIn\n                                        })}>{i18next.t(\"Log In\")}</div>\n                                    <div\n                                        className={this.state.view === LoginView.SignUp ? \"active\" : \"\"}\n                                        onClick={() => this.setState({\n                                            message: {text: \"\", status: MessageStatus.Normal},\n                                            view: LoginView.SignUp\n                                        })}>{i18next.t(\"Sign Up\")}</div>\n                                </ToggleSign>\n                                : <></>\n                        }\n                        <Message id=\"message-status\" status={this.state.message.status}>\n                            {this.state.message.text ? i18next.t(this.state.message.text) : <>&nbsp;</>}\n                        </Message>\n                        <Content onSubmit={(e) => {\n                            e.preventDefault();\n                            this.currentView?.onSubmit();\n                        }}>\n                            {{\n                                [LoginView.LogIn]:\n                                    <Login\n                                        ref={(login: Login) => { this.currentView = login }}\n                                        onTokenUpdated={this.props.onTokenUpdated &&\n                                            ((token: string) => this.onTokenUpdated(token))}\n                                        onChangeEmail={(value: string) => this.setState({ email: value })}\n                                        email={this.state.email}\n                                    />,\n                                [LoginView.SignUp]:\n                                    <SignUp\n                                        ref={(signUp: SignUp) => { this.currentView = signUp }}\n                                        onChangeEmail={(value) => this.setState({ email: value })}\n                                        email={this.state.email}/>,\n                                [LoginView.EmailVerification]:\n                                    <EmailVerification\n                                        ref={(email: EmailVerification) => { this.currentView = email }}\n                                        onChangeEmail={(value) => this.setState({ email: value })}\n                                        email={this.state.email}/>,\n                                [LoginView.ForgotPassword]:\n                                    <ForgotPassword\n                                        ref={(forgotPass: ForgotPassword) => { this.currentView = forgotPass }}\n                                        onChangeEmail={(value) => this.setState({ email: value })}\n                                        email={this.state.email}/>,\n                                [LoginView.LoggedIn]:\n                                    <LoggedIn\n                                        onTokenUpdated={this.props.onTokenUpdated &&\n                                            ((token: string) => this.onTokenUpdated(token))}/>\n                            }[this.state.view]}\n                            <input type={\"submit\"} style={{display: \"none\"}}/>\n                        </Content>\n                        {\n                            this.state.view !== LoginView.EmailVerification && this.state.view !== LoginView.LoggedIn ?\n                                <Small onClick={() => {\n                                    this.setState({\n                                        message: {\n                                            text: \"\", status: MessageStatus.Normal\n                                        },\n                                        view: LoginView.EmailVerification\n                                    })\n                                }}>\n                                    {i18next.t(\"I have a verification code\")}\n                                </Small> :\n                                <></>\n                        }\n                    </Inner>\n                </Wrapper>\n            </ThemeProvider>\n        );\n    }\n}\n", "import React from \"react\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport i18next from \"i18next\";\nimport {\n    AppLogin,\n    AppLoginFormProps,\n    LoginForm,\n    LoginView,\n    MessageStatus,\n    Small\n} from \"../AppLogin\";\nimport {MSLoginButton} from \"@root/Frontend/Login/LoginWithMicrosoftButton\";\nimport {AuthenticationResult, PublicClientApplication} from \"@azure/msal-browser\";\nimport {primaryFontXLarge, secondaryFontXSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {dark, darkenPrimary, lightWhite} from \"@root/react-components/src/values/colors/colors\";\nimport {Switch} from \"@root/react-components/src/inputs/Switch\";\nimport {CONFIG_MSAL, LOGIN_REQUEST} from \"@root/Frontend/Login/AADAuthConfig\";\nimport {decodeTokenBase64, isProductionEnvironment, isStagingEnvironment} from \"@utils/utils\";\nimport {Dialog} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, styled} from \"@mui/material\";\nimport {UsernameChangeAlert} from \"@root/Frontend/Login/Views/UsernameChangeAlert\";\nimport {HelperLogin} from \"@root/Frontend/Login/HelperLogin\";\nimport {PasswordInput} from \"@root/Frontend/Console/components/PasswordInput\";\nimport {RegionAWS} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {SelectRegion} from \"@root/react-components/src/inputs/SelectRegion\";\n\nconst SwitchContainer = styled(Box)({\n    display: \"flex\",\n    font: secondaryFontXSmall,\n    justifyContent: \"flex-end\",\n    alignItems: \"center\",\n    textAlign: \"right\",\n    width: \"100%\",\n    margin: \"12px 0px\",\n    \"& > div\": {\n        maxWidth: \"calc(100% - 60px)\",\n        marginLeft: \"6px\"\n    }\n});\n\nconst ButtonsContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"end\",\n    gap: \"15px\",\n    paddingTop: \"10px\"\n});\n\ninterface LoginState {\n    isSignupDialogOpen: boolean;\n    newsletter: boolean;\n    region: RegionAWS|null;\n    availableBuckets: Map<string, RegionAWS>\n    token: string;\n    isUsernameDialogOpen: boolean;\n    password: string;\n}\n\nexport class Login extends React.Component implements LoginForm {\n    props: AppLoginFormProps;\n\n    private readonly app: AppLogin = AppLogin.getInstance();\n    private readonly helperLogin: HelperLogin = this.app.helperLogin;\n\n    private readonly instanceMSAL = new PublicClientApplication(CONFIG_MSAL);\n\n    state: LoginState = {\n        isSignupDialogOpen: false,\n        newsletter: true,\n        region: null,\n        availableBuckets: new Map(),\n        token: \"\",\n        isUsernameDialogOpen: false,\n        password: \"\",\n    };\n\n    async componentDidMount() {\n        this.setState({availableBuckets: await this.app.dataSourceStorage.getAvailableBucketsRegions()});\n        const result: AuthenticationResult | null = await this.instanceMSAL.handleRedirectPromise();\n        if (result?.accessToken)\n            await this.authenticateWithAADUserToken(result.accessToken);\n    }\n\n    private applyDeepSightToken(token: string) {\n        this.app.setMessage(i18next.t(\"Login Successful\"), MessageStatus.Success)\n\n        // if onTokenUpdated prop is set it means we have a way to communicate token change\n        if (this.props.onTokenUpdated)\n            this.props.onTokenUpdated(token);\n\n        // if we don't have props to communicate, set url and refresh page instead\n        else {\n            const url = new URL(window.location.href);\n            url.searchParams.set('token', decodeTokenBase64(token).toString());\n            window.location.href = url.toString();\n        }\n    }\n\n    public async onSubmit(): Promise<void>{\n        this.app.setMessage(\"\");\n\n        const username: string = this.props.email;\n        if (!username) {\n            this.app.setMessage(i18next.t(\"Please enter your email\"), MessageStatus.Warning);\n            return;\n        }\n\n        if (!this.state.password) {\n            this.app.setMessage(i18next.t(\"Please enter your password\"), MessageStatus.Warning);\n            return;\n        }\n\n        const token: string = await this.helperLogin.login(username, this.state.password);\n        if (!token)\n            return;\n\n        this.applyDeepSightToken(token);\n    }\n\n    private async onSignupConfirm(): Promise<void> {\n        const responseSignup: {username: string, token: string} =\n            await this.helperLogin.signUpFromMicrosoftJWT(this.state.token, this.state.newsletter,\n                                                          this.state.region as RegionAWS);\n\n        if (!responseSignup || !responseSignup.username || !responseSignup.token)\n            return;\n\n        if ((responseSignup.username as string).endsWith(\".deepsight.ca\")) {\n            this.setState({\n                username: responseSignup.username,\n                token: responseSignup.token,\n                isUsernameDialogOpen: true\n            });\n            return;\n        }\n        else\n            this.applyDeepSightToken(responseSignup.token);\n\n        this.setState({ isSignupDialogOpen: false });\n    }\n\n    private async authenticateWithAADUserToken(token: string): Promise<void> {\n        const responseLogin: {success: boolean, token: string} =\n            await this.helperLogin.authenticateWithAADUserToken(token);\n\n        if (!responseLogin.success || !responseLogin.token)\n            this.setState({ isSignupDialogOpen: true, token });\n        else\n            this.applyDeepSightToken(responseLogin.token);\n    }\n\n    async redirectToMicrosoftLogin() {\n        // attempt to acquire token silently first\n        try {\n            const response: AuthenticationResult = await this.instanceMSAL.acquireTokenSilent(LOGIN_REQUEST);\n            await this.authenticateWithAADUserToken(response.accessToken);\n        } catch (e) {\n            console.warn(\"Could not get AAD token silently\");\n        }\n\n        try {\n            await this.instanceMSAL.acquireTokenRedirect(LOGIN_REQUEST);\n        } catch (e) {\n            console.error(\"Could not request AAD token:\" + e.toString());\n        }\n    }\n\n    private closeUsernameAlert(){\n        this.setState({ isUsernameDialogOpen: false, isSignupDialogOpen: false });\n        this.applyDeepSightToken(this.state.token);\n    }\n\n    render(){\n        return(\n            <>\n                <InputText\n                    label={i18next.t(\"Username\")}\n                    name={\"username\"}\n                    type={\"username\"}\n                    placeholder={\"john@deepsight.ca\"}\n                    defaultValue={this.props.email}\n                    onChange={(value: string) => {\n                        this.props.onChangeEmail(value);\n                    }}\n                />\n                <PasswordInput\n                    onChange={(password: string) => this.setState({ password })}\n                    password={this.state.password}\n                />\n                <Small\n                    style={{textAlign: \"left\", width: \"100%\"}}\n                    onClick={() => {\n                        this.app.setView(LoginView.ForgotPassword)\n                    }}\n                >{i18next.t('Forgot Password')}</Small>\n                <Button color=\"white\" sx={{ color: dark }} onClick={() => this.onSubmit()}>\n                    {i18next.t(\"Login\")}\n                </Button>\n                {(isProductionEnvironment() || isStagingEnvironment()) &&\n                    <>\n                        <div style={{font: primaryFontXLarge, fontSize: \"14px\", color: lightWhite}}>\n                            {i18next.t(\"Or\")}\n                        </div>\n                        <div onClick={async () => await this.redirectToMicrosoftLogin()}>\n                            <MSLoginButton/>\n                        </div>\n                    </>\n                }\n                {this.state.isSignupDialogOpen &&\n                    <Dialog zIndex={2001}>\n                        <h2>{i18next.t(\"Welcome to DeepSight\")}!</h2>\n                        <div>\n                            {i18next.t(\"By signing up, that means that you read and accept the\")} <a\n                            style={{color: darkenPrimary}} href={\"https://www.deepsight.ca/terms-and-conditions\"}\n                            target={\"_blank\"}><em>{i18next.t(\"terms and conditions\")}</em></a>.\n                        </div>\n                        <SelectRegion\n                            region={this.state.region}\n                            disabled={false}\n                            options={this.state.availableBuckets}\n                            onChange={(bucket: string) =>\n                                this.setState({region: this.state.availableBuckets.get(bucket) ?? null})}\n                        />\n                        <SwitchContainer>\n                            <div>{i18next.t(\"I wish to receive emails about news and updates\")}.</div>\n                            <Switch\n                                initialValue\n                                onChange={(value: boolean) => this.setState({newsletter: value})}\n                            />\n                        </SwitchContainer>\n                        <ButtonsContainer>\n                            <Button onClick={() => this.setState({isSignupDialogOpen: false})}>\n                                {i18next.t(\"Cancel\")}\n                            </Button>\n                            <Button\n                                disabled={this.state.region === null}\n                                onClick={() => this.onSignupConfirm()}> {i18next.t(\"Sign Up\")} </Button>\n                        </ButtonsContainer>\n                    </Dialog>\n                }\n                {this.state.isUsernameDialogOpen &&\n                    <UsernameChangeAlert\n                        username={this.props.email}\n                        onClose={() => this.closeUsernameAlert()}\n                    />\n                }\n            </>\n        )\n    }\n}\n", "import React from \"react\";\n\nexport const MSLoginButton = () => (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"215\" height=\"41\" viewBox=\"0 0 215 41\"\n         style={{cursor: \"pointer\"}}>\n        <rect width=\"215\" height=\"41\" fill=\"#fff\"/>\n        <path d=\"M214,1V40H1V1H214m1-1H0V41H215V0Z\" fill=\"#8c8c8c\"/>\n        <path\n            d=\"M45.812,25.082V23.288a2.849,2.849,0,0,0,.576.4,4.5,4.5,0,0,0,.707.3,5.513,5.513,0,0,0,.747.187,3.965,3.965,0,0,0,.688.065,2.937,2.937,0,0,0,1.637-.365,1.2,1.2,0,0,0,.538-1.062,1.16,1.16,0,0,0-.179-.649,1.928,1.928,0,0,0-.5-.5,5.355,5.355,0,0,0-.757-.435q-.437-.209-.935-.436c-.356-.19-.687-.383-1-.578a4.358,4.358,0,0,1-.8-.648,2.728,2.728,0,0,1-.534-.8,2.6,2.6,0,0,1-.194-1.047,2.416,2.416,0,0,1,.333-1.285,2.811,2.811,0,0,1,.879-.9,4.026,4.026,0,0,1,1.242-.528,5.922,5.922,0,0,1,1.42-.172,5.715,5.715,0,0,1,2.4.374v1.721a3.832,3.832,0,0,0-2.3-.645,4.106,4.106,0,0,0-.773.074,2.348,2.348,0,0,0-.689.241,1.5,1.5,0,0,0-.494.433,1.054,1.054,0,0,0-.19.637,1.211,1.211,0,0,0,.146.608,1.551,1.551,0,0,0,.429.468,4.276,4.276,0,0,0,.688.414c.271.134.584.28.942.436q.547.285,1.036.6a4.881,4.881,0,0,1,.856.7,3.015,3.015,0,0,1,.586.846,2.464,2.464,0,0,1,.217,1.058,2.635,2.635,0,0,1-.322,1.348,2.608,2.608,0,0,1-.868.892,3.82,3.82,0,0,1-1.257.5,6.988,6.988,0,0,1-1.5.155c-.176,0-.392-.014-.649-.04s-.518-.067-.787-.117a7.772,7.772,0,0,1-.761-.187A2.4,2.4,0,0,1,45.812,25.082Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M55.129,16.426a1.02,1.02,0,0,1-.714-.272.89.89,0,0,1-.3-.688.916.916,0,0,1,.3-.7,1.008,1.008,0,0,1,.714-.278,1.039,1.039,0,0,1,.732.278.909.909,0,0,1,.3.7.9.9,0,0,1-.3.678A1.034,1.034,0,0,1,55.129,16.426Zm.842,9.074h-1.7V18h1.7Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M65.017,24.9q0,4.131-4.153,4.131a6.187,6.187,0,0,1-2.556-.491V26.986a4.726,4.726,0,0,0,2.337.7,2.342,2.342,0,0,0,2.672-2.628V24.24h-.029a2.947,2.947,0,0,1-4.742.436,4.041,4.041,0,0,1-.838-2.684,4.738,4.738,0,0,1,.9-3.04,3,3,0,0,1,2.476-1.128,2.384,2.384,0,0,1,2.2,1.216h.029V18h1.7Zm-1.684-2.835v-.973a1.91,1.91,0,0,0-.524-1.352A1.718,1.718,0,0,0,61.5,19.18a1.793,1.793,0,0,0-1.512.714,3.217,3.217,0,0,0-.546,2,2.774,2.774,0,0,0,.524,1.769,1.678,1.678,0,0,0,1.387.662,1.805,1.805,0,0,0,1.429-.632A2.391,2.391,0,0,0,63.333,22.064Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M73.908,25.5h-1.7V21.273q0-2.1-1.486-2.1a1.622,1.622,0,0,0-1.282.582,2.162,2.162,0,0,0-.5,1.469V25.5H67.229V18h1.707v1.245h.029A2.673,2.673,0,0,1,71.4,17.824a2.265,2.265,0,0,1,1.868.795,3.57,3.57,0,0,1,.644,2.3Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M80.962,16.426a1.02,1.02,0,0,1-.714-.272.89.89,0,0,1-.3-.688.916.916,0,0,1,.3-.7,1.008,1.008,0,0,1,.714-.278,1.039,1.039,0,0,1,.732.278.909.909,0,0,1,.3.7.9.9,0,0,1-.3.678A1.034,1.034,0,0,1,80.962,16.426ZM81.8,25.5H80.1V18h1.7Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M90.7,25.5H89V21.273q0-2.1-1.486-2.1a1.622,1.622,0,0,0-1.282.582,2.157,2.157,0,0,0-.506,1.469V25.5H84.023V18H85.73v1.245h.03a2.673,2.673,0,0,1,2.431-1.421,2.265,2.265,0,0,1,1.868.795,3.57,3.57,0,0,1,.644,2.3Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M106.984,18l-2.212,7.5h-1.78l-1.361-5.083a3.215,3.215,0,0,1-.1-.659H101.5a3.069,3.069,0,0,1-.131.644l-1.48,5.1H98.145L95.939,18H97.7l1.363,5.405a3.16,3.16,0,0,1,.087.645H99.2a3.384,3.384,0,0,1,.117-.659L100.832,18h1.6l1.347,5.428a3.732,3.732,0,0,1,.095.644h.052a3.387,3.387,0,0,1,.11-.644L105.365,18Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M109.1,16.426a1.018,1.018,0,0,1-.714-.272.886.886,0,0,1-.3-.688.912.912,0,0,1,.3-.7,1.006,1.006,0,0,1,.714-.278,1.039,1.039,0,0,1,.732.278.912.912,0,0,1,.3.7.9.9,0,0,1-.3.678A1.034,1.034,0,0,1,109.1,16.426Zm.841,9.074h-1.7V18h1.7Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M116.117,25.42a2.955,2.955,0,0,1-1.31.248q-2.182,0-2.183-2.094V19.333h-1.253V18h1.253V16.264l1.7-.483V18h1.794v1.333h-1.794v3.75a1.484,1.484,0,0,0,.241.952,1.006,1.006,0,0,0,.807.285,1.167,1.167,0,0,0,.746-.248Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M124.248,25.5h-1.7V21.4q0-2.226-1.487-2.226a1.556,1.556,0,0,0-1.26.644,2.568,2.568,0,0,0-.513,1.649V25.5h-1.707V14.4h1.707v4.849h.029a2.685,2.685,0,0,1,2.432-1.421q2.5,0,2.5,3.055Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M141.907,25.5h-1.728V18.7q0-.835.1-2.043h-.029a6.992,6.992,0,0,1-.285.988L136.831,25.5h-1.2l-3.143-7.793a7.236,7.236,0,0,1-.277-1.047h-.029q.057.63.058,2.058V25.5h-1.611V15h2.453l2.762,7a10.884,10.884,0,0,1,.41,1.2h.036c.181-.551.327-.962.44-1.23L139.541,15h2.366Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M145.158,16.426a1.022,1.022,0,0,1-.714-.272.89.89,0,0,1-.3-.688.916.916,0,0,1,.3-.7,1.009,1.009,0,0,1,.714-.278,1.043,1.043,0,0,1,.733.278.911.911,0,0,1,.3.7.9.9,0,0,1-.3.678A1.038,1.038,0,0,1,145.158,16.426ZM146,25.5h-1.7V18H146Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M153.589,25.156a4.2,4.2,0,0,1-2.131.52,3.606,3.606,0,0,1-2.695-1.044,3.691,3.691,0,0,1-1.026-2.706,4.07,4.07,0,0,1,1.1-2.978,3.944,3.944,0,0,1,2.948-1.124,4.3,4.3,0,0,1,1.81.36v1.582a2.743,2.743,0,0,0-1.67-.586,2.32,2.32,0,0,0-1.766.728,2.665,2.665,0,0,0-.688,1.908,2.536,2.536,0,0,0,.648,1.838,2.3,2.3,0,0,0,1.739.674,2.716,2.716,0,0,0,1.729-.652Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M159.625,19.619a1.4,1.4,0,0,0-.887-.242,1.513,1.513,0,0,0-1.259.682,3.04,3.04,0,0,0-.506,1.852V25.5h-1.7V18h1.7v1.545H157a2.606,2.606,0,0,1,.766-1.233,1.724,1.724,0,0,1,1.154-.444,1.432,1.432,0,0,1,.7.14Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M164.02,25.676a3.719,3.719,0,0,1-2.773-1.051,3.8,3.8,0,0,1-1.036-2.787,3.7,3.7,0,0,1,3.991-4.014,3.6,3.6,0,0,1,2.739,1.033,3.986,3.986,0,0,1,.982,2.864,3.932,3.932,0,0,1-1.059,2.875A3.8,3.8,0,0,1,164.02,25.676Zm.08-6.5a1.938,1.938,0,0,0-1.575.7,2.913,2.913,0,0,0-.579,1.919,2.744,2.744,0,0,0,.586,1.856,1.965,1.965,0,0,0,1.568.678,1.87,1.87,0,0,0,1.542-.666,2.956,2.956,0,0,0,.538-1.9,3,3,0,0,0-.538-1.911A1.858,1.858,0,0,0,164.1,19.18Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M169.182,25.266V23.691a3.392,3.392,0,0,0,2.1.725q1.539,0,1.538-.908a.714.714,0,0,0-.132-.436,1.241,1.241,0,0,0-.355-.318,2.784,2.784,0,0,0-.527-.25q-.3-.108-.677-.248a7.052,7.052,0,0,1-.832-.389,2.545,2.545,0,0,1-.615-.465,1.745,1.745,0,0,1-.37-.59,2.145,2.145,0,0,1-.125-.769,1.775,1.775,0,0,1,.256-.955,2.223,2.223,0,0,1,.69-.7,3.289,3.289,0,0,1,.98-.425,4.511,4.511,0,0,1,1.136-.143,5.181,5.181,0,0,1,1.86.315v1.487a3.136,3.136,0,0,0-1.816-.542,2.317,2.317,0,0,0-.582.066,1.472,1.472,0,0,0-.443.183.886.886,0,0,0-.286.282.669.669,0,0,0-.1.363.77.77,0,0,0,.1.41.93.93,0,0,0,.3.3,2.654,2.654,0,0,0,.483.234q.282.105.649.23a9.4,9.4,0,0,1,.867.4,2.886,2.886,0,0,1,.656.465,1.806,1.806,0,0,1,.417.6,2.034,2.034,0,0,1,.147.81,1.847,1.847,0,0,1-.264,1,2.205,2.205,0,0,1-.7.7,3.292,3.292,0,0,1-1.015.413,5.222,5.222,0,0,1-1.212.136A5.115,5.115,0,0,1,169.182,25.266Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M179.443,25.676a3.717,3.717,0,0,1-2.772-1.051,3.793,3.793,0,0,1-1.036-2.787,3.7,3.7,0,0,1,3.991-4.014,3.6,3.6,0,0,1,2.739,1.033,3.986,3.986,0,0,1,.982,2.864,3.932,3.932,0,0,1-1.059,2.875A3.8,3.8,0,0,1,179.443,25.676Zm.08-6.5a1.936,1.936,0,0,0-1.574.7,2.908,2.908,0,0,0-.579,1.919,2.739,2.739,0,0,0,.586,1.856,1.964,1.964,0,0,0,1.567.678,1.868,1.868,0,0,0,1.542-.666,2.95,2.95,0,0,0,.539-1.9,2.99,2.99,0,0,0-.539-1.911A1.857,1.857,0,0,0,179.523,19.18Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M189.067,15.781a1.533,1.533,0,0,0-.784-.2q-1.237,0-1.237,1.4V18h1.743v1.333h-1.736V25.5h-1.7V19.333h-1.282V18h1.282V16.784a2.362,2.362,0,0,1,.777-1.871,2.82,2.82,0,0,1,1.94-.684,2.879,2.879,0,0,1,1,.138Z\"\n            fill=\"#5e5e5e\"/>\n        <path\n            d=\"M194.23,25.42a2.955,2.955,0,0,1-1.31.248q-2.182,0-2.183-2.094V19.333h-1.253V18h1.253V16.264l1.7-.483V18h1.793v1.333h-1.793v3.75a1.484,1.484,0,0,0,.241.952,1,1,0,0,0,.806.285,1.165,1.165,0,0,0,.746-.248Z\"\n            fill=\"#5e5e5e\"/>\n        <rect x=\"13\" y=\"11\" width=\"9\" height=\"9\" fill=\"#f25022\"/>\n        <rect x=\"13\" y=\"21\" width=\"9\" height=\"9\" fill=\"#00a4ef\"/>\n        <rect x=\"23\" y=\"11\" width=\"9\" height=\"9\" fill=\"#7fba00\"/>\n        <rect x=\"23\" y=\"21\" width=\"9\" height=\"9\" fill=\"#ffb900\"/>\n    </svg>\n)", "/*! @azure/msal-browser v2.22.1 2022-03-07 */\n'use strict';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nfunction __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nfunction __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\n\nexport { __assign, __awaiter, __extends, __generator, __read, __spread };\n//# sourceMappingURL=_tslib.js.map\n", "/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nfunction __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\n\nexport { __assign, __awaiter, __extends, __generator, __spreadArrays };\n//# sourceMappingURL=_tslib.js.map\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const Constants = {\n    LIBRARY_NAME: \"MSAL.JS\",\n    SKU: \"msal.js.common\",\n    // Prefix for all library cache entries\n    CACHE_PREFIX: \"msal\",\n    // default authority\n    DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\n    DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\n    DEFAULT_COMMON_TENANT: \"common\",\n    // ADFS String\n    ADFS: \"adfs\",\n    // Default AAD Instance Discovery Endpoint\n    AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\n    // Resource delimiter - used for certain cache entries\n    RESOURCE_DELIM: \"|\",\n    // Placeholder for non-existent account ids/objects\n    NO_ACCOUNT: \"NO_ACCOUNT\",\n    // Claims\n    CLAIMS: \"claims\",\n    // Consumer UTID\n    CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\n    // Default scopes\n    OPENID_SCOPE: \"openid\",\n    PROFILE_SCOPE: \"profile\",\n    OFFLINE_ACCESS_SCOPE: \"offline_access\",\n    EMAIL_SCOPE: \"email\",\n    // Default response type for authorization code flow\n    CODE_RESPONSE_TYPE: \"code\",\n    CODE_GRANT_TYPE: \"authorization_code\",\n    RT_GRANT_TYPE: \"refresh_token\",\n    FRAGMENT_RESPONSE_MODE: \"fragment\",\n    S256_CODE_CHALLENGE_METHOD: \"S256\",\n    URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\n    AUTHORIZATION_PENDING: \"authorization_pending\",\n    NOT_DEFINED: \"not_defined\",\n    EMPTY_STRING: \"\",\n    FORWARD_SLASH: \"/\",\n    IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\n    IMDS_VERSION: \"2020-06-01\",\n    IMDS_TIMEOUT: 2000,\n    AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\n    REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\n    KNOWN_PUBLIC_CLOUDS: [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"],\n    TOKEN_RESPONSE_TYPE: \"token\",\n    ID_TOKEN_RESPONSE_TYPE: \"id_token\"\n};\n\nexport const OIDC_DEFAULT_SCOPES = [\n    Constants.OPENID_SCOPE,\n    Constants.PROFILE_SCOPE,\n    Constants.OFFLINE_ACCESS_SCOPE\n];\n\nexport const OIDC_SCOPES = [\n    ...OIDC_DEFAULT_SCOPES,\n    Constants.EMAIL_SCOPE\n];\n\n/**\n * Request header names\n */\nexport enum HeaderNames {\n    CONTENT_TYPE = \"Content-Type\",\n    RETRY_AFTER = \"Retry-After\",\n    CCS_HEADER = \"X-AnchorMailbox\",\n    WWWAuthenticate = \"WWW-Authenticate\",\n    AuthenticationInfo = \"Authentication-Info\"\n}\n\n/**\n * Persistent cache keys MSAL which stay while user is logged in.\n */\nexport enum PersistentCacheKeys {\n    ID_TOKEN = \"idtoken\",\n    CLIENT_INFO = \"client.info\",\n    ADAL_ID_TOKEN = \"adal.idtoken\",\n    ERROR = \"error\",\n    ERROR_DESC = \"error.description\",\n    ACTIVE_ACCOUNT = \"active-account\"\n}\n\n/**\n * String constants related to AAD Authority\n */\nexport enum AADAuthorityConstants {\n    COMMON = \"common\",\n    ORGANIZATIONS = \"organizations\",\n    CONSUMERS = \"consumers\"\n}\n\n/**\n * Keys in the hashParams sent by AAD Server\n */\nexport enum AADServerParamKeys {\n    CLIENT_ID = \"client_id\",\n    REDIRECT_URI = \"redirect_uri\",\n    RESPONSE_TYPE = \"response_type\",\n    RESPONSE_MODE = \"response_mode\",\n    GRANT_TYPE = \"grant_type\",\n    CLAIMS = \"claims\",\n    SCOPE = \"scope\",\n    ERROR = \"error\",\n    ERROR_DESCRIPTION = \"error_description\",\n    ACCESS_TOKEN = \"access_token\",\n    ID_TOKEN = \"id_token\",\n    REFRESH_TOKEN = \"refresh_token\",\n    EXPIRES_IN = \"expires_in\",\n    STATE = \"state\",\n    NONCE = \"nonce\",\n    PROMPT = \"prompt\",\n    SESSION_STATE = \"session_state\",\n    CLIENT_INFO = \"client_info\",\n    CODE = \"code\",\n    CODE_CHALLENGE = \"code_challenge\",\n    CODE_CHALLENGE_METHOD = \"code_challenge_method\",\n    CODE_VERIFIER = \"code_verifier\",\n    CLIENT_REQUEST_ID = \"client-request-id\",\n    X_CLIENT_SKU = \"x-client-SKU\",\n    X_CLIENT_VER = \"x-client-VER\",\n    X_CLIENT_OS = \"x-client-OS\",\n    X_CLIENT_CPU = \"x-client-CPU\",\n    X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\",\n    X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\",\n    X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\",\n    X_APP_NAME = \"x-app-name\",\n    X_APP_VER = \"x-app-ver\",\n    POST_LOGOUT_URI = \"post_logout_redirect_uri\",\n    ID_TOKEN_HINT= \"id_token_hint\",\n    DEVICE_CODE = \"device_code\",\n    CLIENT_SECRET = \"client_secret\",\n    CLIENT_ASSERTION = \"client_assertion\",\n    CLIENT_ASSERTION_TYPE = \"client_assertion_type\",\n    TOKEN_TYPE = \"token_type\",\n    REQ_CNF = \"req_cnf\",\n    OBO_ASSERTION = \"assertion\",\n    REQUESTED_TOKEN_USE = \"requested_token_use\",\n    ON_BEHALF_OF = \"on_behalf_of\",\n    FOCI = \"foci\",\n    CCS_HEADER = \"X-AnchorMailbox\",\n    RETURN_SPA_CODE = \"return_spa_code\",\n    NATIVE_BROKER = \"nativebroker\",\n    LOGOUT_HINT = \"logout_hint\"\n}\n\n/**\n * Claims request keys\n */\nexport enum ClaimsRequestKeys {\n    ACCESS_TOKEN = \"access_token\",\n    XMS_CC = \"xms_cc\"\n}\n\n/**\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\n */\nexport const PromptValue = {\n    LOGIN: \"login\",\n    SELECT_ACCOUNT: \"select_account\",\n    CONSENT: \"consent\",\n    NONE: \"none\",\n    CREATE: \"create\"\n};\n\n/**\n * SSO Types - generated to populate hints\n */\nexport enum SSOTypes {\n    ACCOUNT = \"account\",\n    SID = \"sid\",\n    LOGIN_HINT = \"login_hint\",\n    ID_TOKEN = \"id_token\",\n    DOMAIN_HINT = \"domain_hint\",\n    ORGANIZATIONS = \"organizations\",\n    CONSUMERS = \"consumers\",\n    ACCOUNT_ID = \"accountIdentifier\",\n    HOMEACCOUNT_ID = \"homeAccountIdentifier\"\n}\n\n/**\n * Disallowed extra query parameters.\n */\nexport const BlacklistedEQParams = [\n    SSOTypes.SID,\n    SSOTypes.LOGIN_HINT\n];\n\n/**\n * allowed values for codeVerifier\n */\nexport const CodeChallengeMethodValues = {\n    PLAIN: \"plain\",\n    S256: \"S256\"\n};\n\n/**\n * The method used to encode the code verifier for the code challenge parameter. can be one\n * of plain or s256. if excluded, code challenge is assumed to be plaintext. for more\n * information, see the pkce rcf: https://tools.ietf.org/html/rfc7636\n */\nexport const CodeChallengeMethodValuesArray: string[] = [\n    CodeChallengeMethodValues.PLAIN,\n    CodeChallengeMethodValues.S256\n];\n\n/**\n * allowed values for response_mode\n */\nexport enum ResponseMode {\n    QUERY = \"query\",\n    FRAGMENT = \"fragment\",\n    FORM_POST = \"form_post\"\n}\n\n/**\n * allowed grant_type\n */\nexport enum GrantType {\n    IMPLICIT_GRANT = \"implicit\",\n    AUTHORIZATION_CODE_GRANT = \"authorization_code\",\n    CLIENT_CREDENTIALS_GRANT = \"client_credentials\",\n    RESOURCE_OWNER_PASSWORD_GRANT = \"password\",\n    REFRESH_TOKEN_GRANT = \"refresh_token\",\n    DEVICE_CODE_GRANT = \"device_code\",\n    JWT_BEARER = \"urn:ietf:params:oauth:grant-type:jwt-bearer\"\n}\n\n/**\n * Account types in Cache\n */\nexport enum CacheAccountType {\n    MSSTS_ACCOUNT_TYPE = \"MSSTS\",\n    ADFS_ACCOUNT_TYPE = \"ADFS\",\n    MSAV1_ACCOUNT_TYPE = \"MSA\",\n    GENERIC_ACCOUNT_TYPE = \"Generic\" // NTLM, Kerberos, FBA, Basic etc\n}\n\n/**\n * Separators used in cache\n */\nexport enum Separators {\n    CACHE_KEY_SEPARATOR = \"-\",\n    CLIENT_INFO_SEPARATOR = \".\"\n}\n\n/**\n * Credential Type stored in the cache\n */\nexport enum CredentialType {\n    ID_TOKEN = \"IdToken\",\n    ACCESS_TOKEN = \"AccessToken\",\n    ACCESS_TOKEN_WITH_AUTH_SCHEME = \"AccessToken_With_AuthScheme\",\n    REFRESH_TOKEN = \"RefreshToken\",\n}\n\n/**\n * Credential Type stored in the cache\n */\nexport enum CacheSchemaType {\n    ACCOUNT = \"Account\",\n    CREDENTIAL = \"Credential\",\n    ID_TOKEN = \"IdToken\",\n    ACCESS_TOKEN = \"AccessToken\",\n    REFRESH_TOKEN = \"RefreshToken\",\n    APP_METADATA = \"AppMetadata\",\n    TEMPORARY = \"TempCache\",\n    TELEMETRY = \"Telemetry\",\n    UNDEFINED = \"Undefined\",\n    THROTTLING = \"Throttling\"\n}\n\n/**\n * Combine all cache types\n */\nexport enum CacheType {\n    ADFS = 1001,\n    MSA = 1002,\n    MSSTS = 1003,\n    GENERIC = 1004,\n    ACCESS_TOKEN = 2001,\n    REFRESH_TOKEN = 2002,\n    ID_TOKEN = 2003,\n    APP_METADATA = 3001,\n    UNDEFINED = 9999\n}\n\n/**\n * More Cache related constants\n */\nexport const APP_METADATA = \"appmetadata\";\nexport const CLIENT_INFO = \"client_info\";\nexport const THE_FAMILY_ID = \"1\";\n\nexport const AUTHORITY_METADATA_CONSTANTS = {\n    CACHE_KEY: \"authority-metadata\",\n    REFRESH_TIME_SECONDS: 3600 * 24 // 24 Hours\n};\n\nexport enum AuthorityMetadataSource {\n    CONFIG = \"config\",\n    CACHE = \"cache\",\n    NETWORK = \"network\"\n}\n\nexport const SERVER_TELEM_CONSTANTS = {\n    SCHEMA_VERSION: 5,\n    MAX_CUR_HEADER_BYTES: 80, // ESTS limit is 100B, set to 80 to provide a 20B buffer\n    MAX_LAST_HEADER_BYTES: 330, // ESTS limit is 350B, set to 330 to provide a 20B buffer,\n    MAX_CACHED_ERRORS: 50, // Limit the number of errors that can be stored to prevent uncontrolled size gains\n    CACHE_KEY: \"server-telemetry\",\n    CATEGORY_SEPARATOR: \"|\",\n    VALUE_SEPARATOR: \",\",\n    OVERFLOW_TRUE: \"1\",\n    OVERFLOW_FALSE: \"0\",\n    UNKNOWN_ERROR: \"unknown_error\"\n};\n\n/**\n * Type of the authentication request\n */\nexport enum AuthenticationScheme {\n    BEARER = \"Bearer\",\n    POP = \"pop\",\n    SSH = \"ssh-cert\"\n}\n\n/**\n * Constants related to throttling\n */\nexport const ThrottlingConstants = {\n    // Default time to throttle RequestThumbprint in seconds\n    DEFAULT_THROTTLE_TIME_SECONDS: 60,\n    // Default maximum time to throttle in seconds, overrides what the server sends back\n    DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\n    // Prefix for storing throttling entries\n    THROTTLING_PREFIX: \"throttling\",\n    // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\n    X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\"\n};\n\nexport const Errors = {\n    INVALID_GRANT_ERROR: \"invalid_grant\",\n    CLIENT_MISMATCH_ERROR: \"client_mismatch\",\n};\n\n/**\n * Password grant parameters\n */\nexport enum PasswordGrantConstants {\n    username = \"username\",\n    password = \"password\"\n}\n\n/**\n * Response codes\n */\nexport enum  ResponseCodes {\n    httpSuccess = 200,\n    httpBadRequest = 400\n}\n\n/**\n * Region Discovery Sources\n */\nexport enum RegionDiscoverySources {\n    FAILED_AUTO_DETECTION = \"1\",\n    INTERNAL_CACHE = \"2\",\n    ENVIRONMENT_VARIABLE = \"3\",\n    IMDS = \"4\",\n}\n\n/**\n * Region Discovery Outcomes\n */\nexport enum RegionDiscoveryOutcomes {\n    CONFIGURED_MATCHES_DETECTED = \"1\",\n    CONFIGURED_NO_AUTO_DETECTION = \"2\",\n    CONFIGURED_NOT_DETECTED = \"3\",\n    AUTO_DETECTION_REQUESTED_SUCCESSFUL = \"4\",\n    AUTO_DETECTION_REQUESTED_FAILED = \"5\"\n}\n\nexport enum CacheOutcome {\n    NO_CACHE_HIT = \"0\",\n    FORCE_REFRESH = \"1\",\n    NO_CACHED_ACCESS_TOKEN = \"2\",\n    CACHED_ACCESS_TOKEN_EXPIRED = \"3\",\n    REFRESH_CACHED_ACCESS_TOKEN = \"4\"\n}\n\nexport enum JsonTypes {\n    Jwt = \"JWT\",\n    Jwk = \"JWK\"\n}   \n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"../utils/Constants\";\n\n/**\n * AuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const AuthErrorMessage = {\n    unexpectedError: {\n        code: \"unexpected_error\",\n        desc: \"Unexpected error in authentication.\"\n    }\n};\n\n/**\n * General error class thrown by the MSAL.js library.\n */\nexport class AuthError extends Error {\n\n    /**\n     * Short string denoting error\n     */\n    errorCode: string;\n\n    /**\n     * Detailed description of error\n     */\n    errorMessage: string;\n\n    /**\n     * Describes the subclass of an error\n     */\n    subError: string;\n\n    /**\n     * CorrelationId associated with the error\n     */\n    correlationId: string;\n\n    constructor(errorCode?: string, errorMessage?: string, suberror?: string) {\n        const errorString = errorMessage ? `${errorCode}: ${errorMessage}` : errorCode;\n        super(errorString);\n        Object.setPrototypeOf(this, AuthError.prototype);\n\n        this.errorCode = errorCode || Constants.EMPTY_STRING;\n        this.errorMessage = errorMessage || Constants.EMPTY_STRING;\n        this.subError = suberror || Constants.EMPTY_STRING;\n        this.name = \"AuthError\";\n    }\n\n    setCorrelationId(correlationId: string): void {\n        this.correlationId = correlationId;\n    }\n\n    /**\n     * Creates an error that is thrown when something unexpected happens in the library.\n     * @param errDesc\n     */\n    static createUnexpectedError(errDesc: string): AuthError {\n        return new AuthError(AuthErrorMessage.unexpectedError.code, `${AuthErrorMessage.unexpectedError.desc}: ${errDesc}`);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"../error/AuthError\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\nimport { SignedHttpRequest } from \"./SignedHttpRequest\";\n\n/**\n * The PkceCodes type describes the structure\n * of objects that contain PKCE code\n * challenge and verifier pairs\n */\nexport type PkceCodes = {\n    verifier: string,\n    challenge: string\n};\n\nexport type SignedHttpRequestParameters = Pick<BaseAuthRequest, \"resourceRequestMethod\" | \"resourceRequestUri\" | \"shrClaims\" | \"shrNonce\" > & {\n    correlationId?: string\n};\n\n/**\n * Interface for crypto functions used by library\n */\nexport interface ICrypto {\n    /**\n     * Creates a guid randomly.\n     */\n    createNewGuid(): string;\n    /**\n     * base64 Encode string\n     * @param input \n     */\n    base64Encode(input: string): string;\n    /**\n     * base64 decode string\n     * @param input \n     */\n    base64Decode(input: string): string;\n    /**\n     * Generate PKCE codes for OAuth. See RFC here: https://tools.ietf.org/html/rfc7636\n     */\n    generatePkceCodes(): Promise<PkceCodes>;\n    /**\n     * Generates an JWK RSA S256 Thumbprint\n     * @param request\n     */\n    getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise<string>;\n    /**\n     * Removes cryptographic keypair from key store matching the keyId passed in\n     * @param kid \n     */\n    removeTokenBindingKey(kid: string): Promise<boolean>;\n    /**\n     * Removes all cryptographic keys from IndexedDB storage\n     */\n    clearKeystore(): Promise<boolean>;\n    /** \n     * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid.\n     * @param accessToken \n     */\n    signJwt(payload: SignedHttpRequest, kid: string, correlationId?: string): Promise<string>;\n    /**\n     * Returns the SHA-256 hash of an input string\n     * @param plainText\n     */\n    hashString(plainText: string): Promise<string>;\n}\n\nexport const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto = {\n    createNewGuid: (): string => {\n        const notImplErr = \"Crypto interface - createNewGuid() has not been implemented\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    },\n    base64Decode: (): string => {\n        const notImplErr = \"Crypto interface - base64Decode() has not been implemented\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    },\n    base64Encode: (): string => {\n        const notImplErr = \"Crypto interface - base64Encode() has not been implemented\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    },\n    async generatePkceCodes(): Promise<PkceCodes> {\n        const notImplErr = \"Crypto interface - generatePkceCodes() has not been implemented\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    },\n    async getPublicKeyThumbprint(): Promise<string> {\n        const notImplErr = \"Crypto interface - getPublicKeyThumbprint() has not been implemented\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    },\n    async removeTokenBindingKey(): Promise<boolean> {\n        const notImplErr = \"Crypto interface - removeTokenBindingKey() has not been implemented\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    },\n    async clearKeystore(): Promise<boolean> {\n        const notImplErr = \"Crypto interface - clearKeystore() has not been implemented\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    },\n    async signJwt(): Promise<string> {\n        const notImplErr = \"Crypto interface - signJwt() has not been implemented\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    },\n    async hashString(): Promise<string> {\n        const notImplErr = \"Crypto interface - hashString() has not been implemented\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n};\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError\";\n\n/**\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const ClientAuthErrorMessage = {\n    clientInfoDecodingError: {\n        code: \"client_info_decoding_error\",\n        desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\n    },\n    clientInfoEmptyError: {\n        code: \"client_info_empty_error\",\n        desc: \"The client info was empty. Please review the trace to determine the root cause.\"\n    },\n    tokenParsingError: {\n        code: \"token_parsing_error\",\n        desc: \"Token cannot be parsed. Please review stack trace to determine root cause.\"\n    },\n    nullOrEmptyToken: {\n        code: \"null_or_empty_token\",\n        desc: \"The token is null or empty. Please review the trace to determine the root cause.\"\n    },\n    endpointResolutionError: {\n        code: \"endpoints_resolution_error\",\n        desc: \"Error: could not resolve endpoints. Please check network and try again.\"\n    },\n    networkError: {\n        code: \"network_error\",\n        desc: \"Network request failed. Please check network trace to determine root cause.\"\n    },\n    unableToGetOpenidConfigError: {\n        code: \"openid_config_error\",\n        desc: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\"\n    },\n    hashNotDeserialized: {\n        code: \"hash_not_deserialized\",\n        desc: \"The hash parameters could not be deserialized. Please review the trace to determine the root cause.\"\n    },\n    blankGuidGenerated: {\n        code: \"blank_guid_generated\",\n        desc: \"The guid generated was blank. Please review the trace to determine the root cause.\"\n    },\n    invalidStateError: {\n        code: \"invalid_state\",\n        desc: \"State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState().\"\n    },\n    stateMismatchError: {\n        code: \"state_mismatch\",\n        desc: \"State mismatch error. Please check your network. Continued requests may cause cache overflow.\"\n    },\n    stateNotFoundError: {\n        code: \"state_not_found\",\n        desc: \"State not found\"\n    },\n    nonceMismatchError: {\n        code: \"nonce_mismatch\",\n        desc: \"Nonce mismatch error. This may be caused by a race condition in concurrent requests.\"\n    },\n    nonceNotFoundError: {\n        code: \"nonce_not_found\",\n        desc: \"nonce not found\"\n    },\n    noTokensFoundError: {\n        code: \"no_tokens_found\",\n        desc: \"No tokens were found for the given scopes, and no authorization code was passed to acquireToken. You must retrieve an authorization code before making a call to acquireToken().\"\n    },\n    multipleMatchingTokens: {\n        code: \"multiple_matching_tokens\",\n        desc: \"The cache contains multiple tokens satisfying the requirements. \" +\n            \"Call AcquireToken again providing more requirements such as authority or account.\"\n    },\n    multipleMatchingAccounts: {\n        code: \"multiple_matching_accounts\",\n        desc: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\"\n    },\n    multipleMatchingAppMetadata: {\n        code: \"multiple_matching_appMetadata\",\n        desc: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\"\n    },\n    tokenRequestCannotBeMade: {\n        code: \"request_cannot_be_made\",\n        desc: \"Token request cannot be made without authorization code or refresh token.\"\n    },\n    appendEmptyScopeError: {\n        code: \"cannot_append_empty_scope\",\n        desc: \"Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info.\"\n    },\n    removeEmptyScopeError: {\n        code: \"cannot_remove_empty_scope\",\n        desc: \"Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info.\"\n    },\n    appendScopeSetError: {\n        code: \"cannot_append_scopeset\",\n        desc: \"Cannot append ScopeSet due to error.\"\n    },\n    emptyInputScopeSetError: {\n        code: \"empty_input_scopeset\",\n        desc: \"Empty input ScopeSet cannot be processed.\"\n    },\n    DeviceCodePollingCancelled: {\n        code: \"device_code_polling_cancelled\",\n        desc: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\"\n    },\n    DeviceCodeExpired: {\n        code: \"device_code_expired\",\n        desc: \"Device code is expired.\"\n    },\n    DeviceCodeUnknownError: {\n        code: \"device_code_unknown_error\",\n        desc: \"Device code stopped polling for unknown reasons.\"\n    },\n    NoAccountInSilentRequest: {\n        code: \"no_account_in_silent_request\",\n        desc: \"Please pass an account object, silent flow is not supported without account information\"\n    },\n    invalidCacheRecord: {\n        code: \"invalid_cache_record\",\n        desc: \"Cache record object was null or undefined.\"\n    },\n    invalidCacheEnvironment: {\n        code: \"invalid_cache_environment\",\n        desc: \"Invalid environment when attempting to create cache entry\"\n    },\n    noAccountFound: {\n        code: \"no_account_found\",\n        desc: \"No account found in cache for given key.\"\n    },\n    CachePluginError: {\n        code: \"no cache plugin set on CacheManager\",\n        desc: \"ICachePlugin needs to be set before using readFromStorage or writeFromStorage\"\n    },\n    noCryptoObj: {\n        code: \"no_crypto_object\",\n        desc: \"No crypto object detected. This is required for the following operation: \"\n    },\n    invalidCacheType: {\n        code: \"invalid_cache_type\",\n        desc: \"Invalid cache type\"\n    },\n    unexpectedAccountType: {\n        code: \"unexpected_account_type\",\n        desc: \"Unexpected account type.\"\n    },\n    unexpectedCredentialType: {\n        code: \"unexpected_credential_type\",\n        desc: \"Unexpected credential type.\"\n    },\n    invalidAssertion: {\n        code: \"invalid_assertion\",\n        desc: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\"\n    },\n    invalidClientCredential: {\n        code: \"invalid_client_credential\",\n        desc: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\"\n    },\n    tokenRefreshRequired: {\n        code: \"token_refresh_required\",\n        desc: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\"\n    },\n    userTimeoutReached: {\n        code: \"user_timeout_reached\",\n        desc: \"User defined timeout for device code polling reached\",\n    },\n    tokenClaimsRequired: {\n        code: \"token_claims_cnf_required_for_signedjwt\",\n        desc: \"Cannot generate a POP jwt if the token_claims are not populated\"\n    },\n    noAuthorizationCodeFromServer: {\n        code: \"authorization_code_missing_from_server_response\",\n        desc: \"Server response does not contain an authorization code to proceed\"\n    },\n    noAzureRegionDetected: {\n        code: \"no_azure_region_detected\",\n        desc: \"No azure region was detected and no fallback was made available\"\n    },\n    accessTokenEntityNullError: {\n        code: \"access_token_entity_null\",\n        desc: \"Access token entity is null, please check logs and cache to ensure a valid access token is present.\"\n    },\n    bindingKeyNotRemovedError: {\n        code: \"binding_key_not_removed\",\n        desc: \"Could not remove the credential's binding key from storage.\"\n    },\n    logoutNotSupported: {\n        code: \"end_session_endpoint_not_supported\",\n        desc: \"Provided authority does not support logout.\"\n    },\n    keyIdMissing: {\n        code: \"key_id_missing\",\n        desc: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\"\n    }\n};\n\n/**\n * Error thrown when there is an error in the client code running on the browser.\n */\nexport class ClientAuthError extends AuthError {\n\n    constructor(errorCode: string, errorMessage?: string) {\n        super(errorCode, errorMessage);\n        this.name = \"ClientAuthError\";\n\n        Object.setPrototypeOf(this, ClientAuthError.prototype);\n    }\n\n    /**\n     * Creates an error thrown when client info object doesn't decode correctly.\n     * @param caughtError\n     */\n    static createClientInfoDecodingError(caughtError: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code,\n            `${ClientAuthErrorMessage.clientInfoDecodingError.desc} Failed with error: ${caughtError}`);\n    }\n\n    /**\n     * Creates an error thrown if the client info is empty.\n     * @param rawClientInfo\n     */\n    static createClientInfoEmptyError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.clientInfoEmptyError.code,\n            `${ClientAuthErrorMessage.clientInfoEmptyError.desc}`);\n    }\n\n    /**\n     * Creates an error thrown when the id token extraction errors out.\n     * @param err\n     */\n    static createTokenParsingError(caughtExtractionError: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.tokenParsingError.code,\n            `${ClientAuthErrorMessage.tokenParsingError.desc} Failed with error: ${caughtExtractionError}`);\n    }\n\n    /**\n     * Creates an error thrown when the id token string is null or empty.\n     * @param invalidRawTokenString\n     */\n    static createTokenNullOrEmptyError(invalidRawTokenString: string) : ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyToken.code,\n            `${ClientAuthErrorMessage.nullOrEmptyToken.desc} Raw Token Value: ${invalidRawTokenString}`);\n    }\n\n    /**\n     * Creates an error thrown when the endpoint discovery doesn't complete correctly.\n     */\n    static createEndpointDiscoveryIncompleteError(errDetail: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code,\n            `${ClientAuthErrorMessage.endpointResolutionError.desc} Detail: ${errDetail}`);\n    }\n\n    /**\n     * Creates an error thrown when the fetch client throws\n     */\n    static createNetworkError(endpoint: string, errDetail: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.networkError.code,\n            `${ClientAuthErrorMessage.networkError.desc} | Fetch client threw: ${errDetail} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n    }\n\n    /**\n     * Creates an error thrown when the openid-configuration endpoint cannot be reached or does not contain the required data\n     */\n    static createUnableToGetOpenidConfigError(errDetail: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.unableToGetOpenidConfigError.code,\n            `${ClientAuthErrorMessage.unableToGetOpenidConfigError.desc} Attempted to retrieve endpoints from: ${errDetail}`);\n    }\n\n    /**\n     * Creates an error thrown when the hash cannot be deserialized.\n     * @param hashParamObj\n     */\n    static createHashNotDeserializedError(hashParamObj: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.hashNotDeserialized.code,\n            `${ClientAuthErrorMessage.hashNotDeserialized.desc} Given Object: ${hashParamObj}`);\n    }\n\n    /**\n     * Creates an error thrown when the state cannot be parsed.\n     * @param invalidState\n     */\n    static createInvalidStateError(invalidState: string, errorString?: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code,\n            `${ClientAuthErrorMessage.invalidStateError.desc} Invalid State: ${invalidState}, Root Err: ${errorString}`);\n    }\n\n    /**\n     * Creates an error thrown when two states do not match.\n     */\n    static createStateMismatchError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.stateMismatchError.code,\n            ClientAuthErrorMessage.stateMismatchError.desc);\n    }\n\n    /**\n     * Creates an error thrown when the state is not present\n     * @param missingState\n     */\n    static createStateNotFoundError(missingState: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.stateNotFoundError.code,\n            `${ClientAuthErrorMessage.stateNotFoundError.desc}:  ${missingState}`);\n    }\n\n    /**\n     * Creates an error thrown when the nonce does not match.\n     */\n    static createNonceMismatchError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code,\n            ClientAuthErrorMessage.nonceMismatchError.desc);\n    }\n\n    /**\n     * Creates an error thrown when the mnonce is not present\n     * @param missingNonce\n     */\n    static createNonceNotFoundError(missingNonce: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.nonceNotFoundError.code,\n            `${ClientAuthErrorMessage.nonceNotFoundError.desc}:  ${missingNonce}`);\n    }\n\n    /**\n     * Throws error when multiple tokens are in cache.\n     */\n    static createMultipleMatchingTokensInCacheError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingTokens.code,\n            `${ClientAuthErrorMessage.multipleMatchingTokens.desc}.`);\n    }\n\n    /**\n     * Throws error when multiple accounts are in cache for the given params\n     */\n    static createMultipleMatchingAccountsInCacheError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAccounts.code,\n            ClientAuthErrorMessage.multipleMatchingAccounts.desc);\n    }\n\n    /**\n     * Throws error when multiple appMetada are in cache for the given clientId.\n     */\n    static createMultipleMatchingAppMetadataInCacheError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAppMetadata.code,\n            ClientAuthErrorMessage.multipleMatchingAppMetadata.desc);\n    }\n\n    /**\n     * Throws error when no auth code or refresh token is given to ServerTokenRequestParameters.\n     */\n    static createTokenRequestCannotBeMadeError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.tokenRequestCannotBeMade.code, ClientAuthErrorMessage.tokenRequestCannotBeMade.desc);\n    }\n\n    /**\n     * Throws error when attempting to append a null, undefined or empty scope to a set\n     * @param givenScope\n     */\n    static createAppendEmptyScopeToSetError(givenScope: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.appendEmptyScopeError.code, `${ClientAuthErrorMessage.appendEmptyScopeError.desc} Given Scope: ${givenScope}`);\n    }\n\n    /**\n     * Throws error when attempting to append a null, undefined or empty scope to a set\n     * @param givenScope\n     */\n    static createRemoveEmptyScopeFromSetError(givenScope: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.removeEmptyScopeError.code, `${ClientAuthErrorMessage.removeEmptyScopeError.desc} Given Scope: ${givenScope}`);\n    }\n\n    /**\n     * Throws error when attempting to append null or empty ScopeSet.\n     * @param appendError\n     */\n    static createAppendScopeSetError(appendError: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.appendScopeSetError.code, `${ClientAuthErrorMessage.appendScopeSetError.desc} Detail Error: ${appendError}`);\n    }\n\n    /**\n     * Throws error if ScopeSet is null or undefined.\n     * @param givenScopeSet\n     */\n    static createEmptyInputScopeSetError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.emptyInputScopeSetError.code, `${ClientAuthErrorMessage.emptyInputScopeSetError.desc}`);\n    }\n\n    /**\n     * Throws error if user sets CancellationToken.cancel = true during polling of token endpoint during device code flow\n     */\n    static createDeviceCodeCancelledError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.DeviceCodePollingCancelled.code, `${ClientAuthErrorMessage.DeviceCodePollingCancelled.desc}`);\n    }\n\n    /**\n     * Throws error if device code is expired\n     */\n    static createDeviceCodeExpiredError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeExpired.code, `${ClientAuthErrorMessage.DeviceCodeExpired.desc}`);\n    }\n\n    /**\n     * Throws error if device code is expired\n     */\n    static createDeviceCodeUnknownError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeUnknownError.code, `${ClientAuthErrorMessage.DeviceCodeUnknownError.desc}`);\n    }\n\n    /**\n     * Throws error when silent requests are made without an account object\n     */\n    static createNoAccountInSilentRequestError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.NoAccountInSilentRequest.code, `${ClientAuthErrorMessage.NoAccountInSilentRequest.desc}`);\n    }\n\n    /**\n     * Throws error when cache record is null or undefined.\n     */\n    static createNullOrUndefinedCacheRecord(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.invalidCacheRecord.code, ClientAuthErrorMessage.invalidCacheRecord.desc);\n    }\n\n    /**\n     * Throws error when provided environment is not part of the CloudDiscoveryMetadata object\n     */\n    static createInvalidCacheEnvironmentError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.invalidCacheEnvironment.code, ClientAuthErrorMessage.invalidCacheEnvironment.desc);\n    }\n\n    /**\n     * Throws error when account is not found in cache.\n     */\n    static createNoAccountFoundError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.noAccountFound.code, ClientAuthErrorMessage.noAccountFound.desc);\n    }\n\n    /**\n     * Throws error if ICachePlugin not set on CacheManager.\n     */\n    static createCachePluginError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.CachePluginError.code, `${ClientAuthErrorMessage.CachePluginError.desc}`);\n    }\n\n    /**\n     * Throws error if crypto object not found.\n     * @param operationName\n     */\n    static createNoCryptoObjectError(operationName: string): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.noCryptoObj.code, `${ClientAuthErrorMessage.noCryptoObj.desc}${operationName}`);\n    }\n\n    /**\n     * Throws error if cache type is invalid.\n     */\n    static createInvalidCacheTypeError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.invalidCacheType.code, `${ClientAuthErrorMessage.invalidCacheType.desc}`);\n    }\n\n    /**\n     * Throws error if unexpected account type.\n     */\n    static createUnexpectedAccountTypeError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.unexpectedAccountType.code, `${ClientAuthErrorMessage.unexpectedAccountType.desc}`);\n    }\n\n    /**\n     * Throws error if unexpected credential type.\n     */\n    static createUnexpectedCredentialTypeError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.unexpectedCredentialType.code, `${ClientAuthErrorMessage.unexpectedCredentialType.desc}`);\n    }\n\n    /**\n     * Throws error if client assertion is not valid.\n     */\n    static createInvalidAssertionError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.invalidAssertion.code, `${ClientAuthErrorMessage.invalidAssertion.desc}`);\n    }\n\n    /**\n     * Throws error if client assertion is not valid.\n     */\n    static createInvalidCredentialError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.invalidClientCredential.code, `${ClientAuthErrorMessage.invalidClientCredential.desc}`);\n    }\n\n    /**\n     * Throws error if token cannot be retrieved from cache due to refresh being required.\n     */\n    static createRefreshRequiredError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.tokenRefreshRequired.code, ClientAuthErrorMessage.tokenRefreshRequired.desc);\n    }\n\n    /**\n     * Throws error if the user defined timeout is reached.\n     */\n    static createUserTimeoutReachedError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.userTimeoutReached.code, ClientAuthErrorMessage.userTimeoutReached.desc);\n    }\n\n    /*\n     * Throws error if token claims are not populated for a signed jwt generation\n     */\n    static createTokenClaimsRequiredError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.tokenClaimsRequired.code, ClientAuthErrorMessage.tokenClaimsRequired.desc);\n    }\n\n    /**\n     * Throws error when the authorization code is missing from the server response\n     */\n    static createNoAuthCodeInServerResponseError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.noAuthorizationCodeFromServer.code, ClientAuthErrorMessage.noAuthorizationCodeFromServer.desc);\n    }\n\n    static createBindingKeyNotRemovedError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.bindingKeyNotRemovedError.code, ClientAuthErrorMessage.bindingKeyNotRemovedError.desc);\n    }\n\n    /**\n     * Thrown when logout is attempted for an authority that doesnt have an end_session_endpoint\n     */\n    static createLogoutNotSupportedError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.logoutNotSupported.code, ClientAuthErrorMessage.logoutNotSupported.desc);\n    }\n\n    /**\n     * Create an error when kid attribute is missing from a PoP token's cache record\n     */\n    static createKeyIdMissingError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.keyIdMissing.code, ClientAuthErrorMessage.keyIdMissing.desc);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DecodedAuthToken } from \"../account/DecodedAuthToken\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\n\n/**\n * @hidden\n */\nexport class StringUtils {\n\n    /**\n     * decode a JWT\n     *\n     * @param authToken\n     */\n    static decodeAuthToken(authToken: string): DecodedAuthToken {\n        if (StringUtils.isEmpty(authToken)) {\n            throw ClientAuthError.createTokenNullOrEmptyError(authToken);\n        }\n        const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\n        const matches = tokenPartsRegex.exec(authToken);\n        if (!matches || matches.length < 4) {\n            throw ClientAuthError.createTokenParsingError(`Given token is malformed: ${JSON.stringify(authToken)}`);\n        }\n        const crackedToken: DecodedAuthToken = {\n            header: matches[1],\n            JWSPayload: matches[2],\n            JWSSig: matches[3]\n        };\n        return crackedToken;\n    }\n\n    /**\n     * Check if a string is empty.\n     *\n     * @param str\n     */\n    static isEmpty(str?: string): boolean {\n        return (typeof str === \"undefined\" || !str || 0 === str.length);\n    }\n\n    /**\n     * Check if stringified object is empty\n     * @param strObj \n     */\n    static isEmptyObj(strObj?: string): boolean {\n        if (strObj && !StringUtils.isEmpty(strObj)) {\n            try {\n                const obj = JSON.parse(strObj);\n                return Object.keys(obj).length === 0;\n            } catch (e) {}\n        }\n        return true;\n    }\n\n    static startsWith(str: string, search: string): boolean {\n        return str.indexOf(search) === 0;\n    }\n\n    static endsWith(str: string, search: string): boolean {\n        return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\n    }\n\n    /**\n     * Parses string into an object.\n     *\n     * @param query\n     */\n    static queryStringToObject<T>(query: string): T {\n        const obj: {} = {};\n        const params = query.split(\"&\");\n        const decode = (s: string) => decodeURIComponent(s.replace(/\\+/g, \" \"));\n        params.forEach((pair) => {\n            if (pair.trim()) {\n                const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\n                if (key && value) {\n                    obj[decode(key)] = decode(value);\n                }\n            }\n        });\n        return obj as T;\n    }\n\n    /**\n     * Trims entries in an array.\n     *\n     * @param arr\n     */\n    static trimArrayEntries(arr: Array<string>): Array<string> {\n        return arr.map(entry => entry.trim());\n    }\n\n    /**\n     * Removes empty strings from array\n     * @param arr\n     */\n    static removeEmptyStringsFromArray(arr: Array<string>): Array<string> {\n        return arr.filter(entry => {\n            return !StringUtils.isEmpty(entry);\n        });\n    }\n\n    /**\n     * Attempts to parse a string into JSON\n     * @param str\n     */\n    static jsonParseHelper<T>(str: string): T | null {\n        try {\n            return JSON.parse(str) as T;\n        } catch (e) {\n            return null;\n        }\n    }\n\n    /**\n     * Tests if a given string matches a given pattern, with support for wildcards and queries.\n     * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\n     * @param input String to match against\n     */\n    static matchPattern(pattern: string, input: string): boolean {\n        /**\n         * Wildcard support: https://stackoverflow.com/a/3117248/4888559\n         * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\n         */\n        const regex: RegExp = new RegExp(pattern.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\*/g, \"[^ ]*\").replace(/\\?/g, \"\\\\\\?\")); // eslint-disable-line security/detect-non-literal-regexp\n\n        return regex.test(input);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { LoggerOptions } from \"../config/ClientConfiguration\";\nimport { Constants } from \"../utils/Constants\";\n\n/**\n * Options for logger messages.\n */\nexport type LoggerMessageOptions = {\n    logLevel: LogLevel,\n    containsPii?: boolean,\n    context?: string,\n    correlationId?: string\n};\n\n/**\n * Log message level.\n */\nexport enum LogLevel {\n    Error,\n    Warning,\n    Info,\n    Verbose,\n    Trace\n}\n\n/**\n * Callback to send the messages to.\n */\nexport interface ILoggerCallback {\n    (level: LogLevel, message: string, containsPii: boolean): void;\n}\n\n/**\n * Class which facilitates logging of messages to a specific place.\n */\nexport class Logger {\n\n    // Correlation ID for request, usually set by user.\n    private correlationId: string;\n\n    // Current log level, defaults to info.\n    private level: LogLevel = LogLevel.Info;\n\n    // Boolean describing whether PII logging is allowed.\n    private piiLoggingEnabled: boolean;\n\n    // Callback to send messages to.\n    private localCallback: ILoggerCallback;\n\n    // Package name implementing this logger\n    private packageName: string;\n\n    // Package version implementing this logger\n    private packageVersion: string;\n\n    constructor(loggerOptions: LoggerOptions, packageName?: string, packageVersion?: string) {\n        const defaultLoggerCallback = () => {\n            return;\n        };\n        this.localCallback = loggerOptions.loggerCallback || defaultLoggerCallback;\n        this.piiLoggingEnabled = loggerOptions.piiLoggingEnabled || false;\n        this.level = typeof(loggerOptions.logLevel) === \"number\" ? loggerOptions.logLevel : LogLevel.Info;\n        this.correlationId = loggerOptions.correlationId || Constants.EMPTY_STRING;\n\n        this.packageName = packageName || Constants.EMPTY_STRING;\n        this.packageVersion = packageVersion || Constants.EMPTY_STRING;\n    }\n\n    /**\n     * Create new Logger with existing configurations.\n     */\n    public clone(packageName: string, packageVersion: string, correlationId?: string): Logger {\n        return new Logger({loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level, correlationId: correlationId || this.correlationId}, packageName, packageVersion);\n    }\n\n    /**\n     * Log message with required options.\n     */\n    private logMessage(logMessage: string, options: LoggerMessageOptions): void {\n        if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\n            return;\n        }\n        const timestamp = new Date().toUTCString();\n\n        // Add correlationId to logs if set, correlationId provided on log messages take precedence\n        let logHeader: string;\n        if (!StringUtils.isEmpty(options.correlationId)) {\n            logHeader = `[${timestamp}] : [${options.correlationId}]`;\n        } else if (!StringUtils.isEmpty(this.correlationId)) {\n            logHeader = `[${timestamp}] : [${this.correlationId}]`;\n        } else {\n            logHeader = `[${timestamp}]`;\n        }\n\n        const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`;\n        // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\n        this.executeCallback(options.logLevel, log, options.containsPii || false);\n    }\n\n    /**\n     * Execute callback with message.\n     */\n    executeCallback(level: LogLevel, message: string, containsPii: boolean): void {\n        if (this.localCallback) {\n            this.localCallback(level, message, containsPii);\n        }\n    }\n\n    /**\n     * Logs error messages.\n     */\n    error(message: string, correlationId?: string): void {\n        this.logMessage(message, {\n            logLevel: LogLevel.Error,\n            containsPii: false,\n            correlationId: correlationId || Constants.EMPTY_STRING\n        });\n    }\n\n    /**\n     * Logs error messages with PII.\n     */\n    errorPii(message: string, correlationId?: string): void {\n        this.logMessage(message, {\n            logLevel: LogLevel.Error,\n            containsPii: true,\n            correlationId: correlationId || Constants.EMPTY_STRING\n        });\n    }\n\n    /**\n     * Logs warning messages.\n     */\n    warning(message: string, correlationId?: string): void {\n        this.logMessage(message, {\n            logLevel: LogLevel.Warning,\n            containsPii: false,\n            correlationId: correlationId || Constants.EMPTY_STRING\n        });\n    }\n\n    /**\n     * Logs warning messages with PII.\n     */\n    warningPii(message: string, correlationId?: string): void {\n        this.logMessage(message, {\n            logLevel: LogLevel.Warning,\n            containsPii: true,\n            correlationId: correlationId || Constants.EMPTY_STRING\n        });\n    }\n\n    /**\n     * Logs info messages.\n     */\n    info(message: string, correlationId?: string): void {\n        this.logMessage(message, {\n            logLevel: LogLevel.Info,\n            containsPii: false,\n            correlationId: correlationId || Constants.EMPTY_STRING\n        });\n    }\n\n    /**\n     * Logs info messages with PII.\n     */\n    infoPii(message: string, correlationId?: string): void {\n        this.logMessage(message, {\n            logLevel: LogLevel.Info,\n            containsPii: true,\n            correlationId: correlationId || Constants.EMPTY_STRING\n        });\n    }\n\n    /**\n     * Logs verbose messages.\n     */\n    verbose(message: string, correlationId?: string): void {\n        this.logMessage(message, {\n            logLevel: LogLevel.Verbose,\n            containsPii: false,\n            correlationId: correlationId || Constants.EMPTY_STRING\n        });\n    }\n\n    /**\n     * Logs verbose messages with PII.\n     */\n    verbosePii(message: string, correlationId?: string): void {\n        this.logMessage(message, {\n            logLevel: LogLevel.Verbose,\n            containsPii: true,\n            correlationId: correlationId || Constants.EMPTY_STRING\n        });\n    }\n\n    /**\n     * Logs trace messages.\n     */\n    trace(message: string, correlationId?: string): void {\n        this.logMessage(message, {\n            logLevel: LogLevel.Trace,\n            containsPii: false,\n            correlationId: correlationId || Constants.EMPTY_STRING\n        });\n    }\n\n    /**\n     * Logs trace messages with PII.\n     */\n    tracePii(message: string, correlationId?: string): void {\n        this.logMessage(message, {\n            logLevel: LogLevel.Trace,\n            containsPii: true,\n            correlationId: correlationId || Constants.EMPTY_STRING\n        });\n    }\n\n    /**\n     * Returns whether PII Logging is enabled or not.\n     */\n    isPiiLoggingEnabled(): boolean {\n        return this.piiLoggingEnabled || false;\n    }\n}\n", "/* eslint-disable header/header */\nexport const name = \"@azure/msal-common\";\nexport const version = \"6.4.0\";\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ProtocolMode } from \"./ProtocolMode\";\nimport { AzureRegionConfiguration } from \"./AzureRegionConfiguration\";\n\nexport type AuthorityOptions = {\n    protocolMode: ProtocolMode;\n    knownAuthorities: Array<string>;\n    cloudDiscoveryMetadata: string;\n    authorityMetadata: string;\n    azureRegionConfiguration?: AzureRegionConfiguration;\n};\n\nexport enum AzureCloudInstance {\n    // AzureCloudInstance is not specified.\n    None,\n\n    // Microsoft Azure public cloud\n    AzurePublic = \"https://login.microsoftonline.com\",\n\n    // Microsoft PPE\n    AzurePpe = \"https://login.windows-ppe.net\",\n\n    // Microsoft Chinese national cloud\n    AzureChina = \"https://login.chinacloudapi.cn\",\n\n    // Microsoft German national cloud (\"Black Forest\")\n    AzureGermany = \"https://login.microsoftonline.de\",\n\n    // US Government cloud\n    AzureUsGovernment = \"https://login.microsoftonline.us\",\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Separators, CredentialType, CacheType, Constants, AuthenticationScheme } from \"../../utils/Constants\";\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\n\n/**\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\n *\n * Key:Value Schema:\n *\n * Key: <home_account_id*>-<environment>-<credential_type>-<client_id>-<realm*>-<target*>-<requestedClaims*>-<scheme*>\n *\n * Value Schema:\n * {\n *      homeAccountId: home account identifier for the auth scheme,\n *      environment: entity that issued the token, represented as a full host\n *      credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n *      clientId: client ID of the application\n *      secret: Actual credential as a string\n *      familyId: Family ID identifier, usually only used for refresh tokens\n *      realm: Full tenant or organizational identifier that the account belongs to\n *      target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\n *      oboAssertion: access token passed in as part of OBO request\n *      tokenType: Matches the authentication scheme for which the token was issued (i.e. Bearer or pop)\n *      requestedClaimsHash: Matches the SHA 256 hash of the claims object included in the token request\n * }\n */\nexport class CredentialEntity {\n    homeAccountId: string;\n    environment: string;\n    credentialType: CredentialType;\n    clientId: string;\n    secret: string;\n    familyId?: string;\n    realm?: string;\n    target?: string;\n    oboAssertion?: string;\n    tokenType?: AuthenticationScheme;\n    keyId?: string;\n    requestedClaimsHash?: string;\n\n    /**\n     * Generate Account Id key component as per the schema: <home_account_id>-<environment>\n     */\n    generateAccountId(): string {\n        return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\n    }\n\n    /**\n     * Generate Credential Id key component as per the schema: <credential_type>-<client_id>-<realm>\n     */\n    generateCredentialId(): string {\n        return CredentialEntity.generateCredentialIdForCacheKey(\n            this.credentialType,\n            this.clientId,\n            this.realm,\n            this.familyId\n        );\n    }\n\n    /**\n     * Generate target key component as per schema: <target>\n     */\n    generateTarget(): string {\n        return CredentialEntity.generateTargetForCacheKey(this.target);\n    }\n\n    /**\n     * generates credential key\n     */\n    generateCredentialKey(): string {\n        return CredentialEntity.generateCredentialCacheKey(\n            this.homeAccountId,\n            this.environment,\n            this.credentialType,\n            this.clientId,\n            this.realm,\n            this.target,\n            this.familyId,\n            this.tokenType,\n            this.requestedClaimsHash\n        );\n    }\n\n    /**\n     * returns the type of the cache (in this case credential)\n     */\n    generateType(): number {\n        switch (this.credentialType) {\n            case CredentialType.ID_TOKEN:\n                return CacheType.ID_TOKEN;\n            case CredentialType.ACCESS_TOKEN:\n            case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\n                return CacheType.ACCESS_TOKEN;\n            case CredentialType.REFRESH_TOKEN:\n                return CacheType.REFRESH_TOKEN;\n            default: {\n                throw ClientAuthError.createUnexpectedCredentialTypeError();\n            }\n        }\n    }\n\n    /**\n     * helper function to return `CredentialType`\n     * @param key\n     */\n    static getCredentialType(key: string): string {\n        // First keyword search will match all \"AccessToken\" and \"AccessToken_With_AuthScheme\" credentials\n        if (key.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) !== -1) {\n            // Perform second search to differentiate between \"AccessToken\" and \"AccessToken_With_AuthScheme\" credential types\n            if (key.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) !== -1) {\n                return CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\n            }\n            return CredentialType.ACCESS_TOKEN;\n        } else if (key.indexOf(CredentialType.ID_TOKEN.toLowerCase()) !== -1) {\n            return CredentialType.ID_TOKEN;\n        } else if (key.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) !== -1) {\n            return CredentialType.REFRESH_TOKEN;\n        }\n\n        return Constants.NOT_DEFINED;\n    }\n\n    /**\n     * generates credential key\n     * <home_account_id*>-\\<environment>-<credential_type>-<client_id>-<realm\\*>-<target\\*>-<scheme\\*>\n     */\n    static generateCredentialCacheKey(\n        homeAccountId: string,\n        environment: string,\n        credentialType: CredentialType,\n        clientId: string,\n        realm?: string,\n        target?: string,\n        familyId?: string,\n        tokenType?: AuthenticationScheme,\n        requestedClaimsHash?: string\n    ): string {\n        const credentialKey = [\n            this.generateAccountIdForCacheKey(homeAccountId, environment),\n            this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\n            this.generateTargetForCacheKey(target),\n            this.generateClaimsHashForCacheKey(requestedClaimsHash),\n            this.generateSchemeForCacheKey(tokenType)\n        ];\n\n        return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n    }\n\n    /**\n     * generates Account Id for keys\n     * @param homeAccountId\n     * @param environment\n     */\n    private static generateAccountIdForCacheKey(\n        homeAccountId: string,\n        environment: string\n    ): string {\n        const accountId: Array<string> = [homeAccountId, environment];\n        return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n    }\n\n    /**\n     * Generates Credential Id for keys\n     * @param credentialType\n     * @param realm\n     * @param clientId\n     * @param familyId\n     */\n    private static generateCredentialIdForCacheKey(\n        credentialType: CredentialType,\n        clientId: string,\n        realm?: string,\n        familyId?: string\n    ): string {\n        const clientOrFamilyId =\n            credentialType === CredentialType.REFRESH_TOKEN\n                ? familyId || clientId\n                : clientId;\n        const credentialId: Array<string> = [\n            credentialType,\n            clientOrFamilyId,\n            realm || Constants.EMPTY_STRING,\n        ];\n\n        return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n    }\n\n    /**\n     * Generate target key component as per schema: <target>\n     */\n    private static generateTargetForCacheKey(scopes?: string): string {\n        return (scopes || Constants.EMPTY_STRING).toLowerCase();\n    }\n\n    /**\n     * Generate requested claims key component as per schema: <requestedClaims>\n     */\n    private static generateClaimsHashForCacheKey(requestedClaimsHash?: string): string {\n        return(requestedClaimsHash || Constants.EMPTY_STRING).toLowerCase();\n    }\n\n    /**\n     * Generate scheme key componenet as per schema: <scheme>\n     */\n    private static generateSchemeForCacheKey(tokenType?: string): string {\n        /*\n         * PoP Tokens and SSH certs include scheme in cache key\n         * Cast to lowercase to handle \"bearer\" from ADFS\n         */\n        return (tokenType && tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? tokenType.toLowerCase() : Constants.EMPTY_STRING;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientAuthError } from \"./ClientAuthError\";\n\n/**\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\n */\nexport const ClientConfigurationErrorMessage = {\n    redirectUriNotSet: {\n        code: \"redirect_uri_empty\",\n        desc: \"A redirect URI is required for all calls, and none has been set.\"\n    },\n    postLogoutUriNotSet: {\n        code: \"post_logout_uri_empty\",\n        desc: \"A post logout redirect has not been set.\"\n    },\n    claimsRequestParsingError: {\n        code: \"claims_request_parsing_error\",\n        desc: \"Could not parse the given claims request object.\"\n    },\n    authorityUriInsecure: {\n        code: \"authority_uri_insecure\",\n        desc: \"Authority URIs must use https.  Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\"\n    },\n    urlParseError: {\n        code: \"url_parse_error\",\n        desc: \"URL could not be parsed into appropriate segments.\"\n    },\n    urlEmptyError: {\n        code: \"empty_url_error\",\n        desc: \"URL was empty or null.\"\n    },\n    emptyScopesError: {\n        code: \"empty_input_scopes_error\",\n        desc: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\"\n    },\n    nonArrayScopesError: {\n        code: \"nonarray_input_scopes_error\",\n        desc: \"Scopes cannot be passed as non-array.\"\n    },\n    clientIdSingleScopeError: {\n        code: \"clientid_input_scopes_error\",\n        desc: \"Client ID can only be provided as a single scope.\"\n    },\n    invalidPrompt: {\n        code: \"invalid_prompt_value\",\n        desc: \"Supported prompt values are 'login', 'select_account', 'consent', 'create' and 'none'.  Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\n    },\n    invalidClaimsRequest: {\n        code: \"invalid_claims\",\n        desc: \"Given claims parameter must be a stringified JSON object.\"\n    },\n    tokenRequestEmptyError: {\n        code: \"token_request_empty\",\n        desc: \"Token request was empty and not found in cache.\"\n    },\n    logoutRequestEmptyError: {\n        code: \"logout_request_empty\",\n        desc: \"The logout request was null or undefined.\"\n    },\n    invalidCodeChallengeMethod: {\n        code: \"invalid_code_challenge_method\",\n        desc: \"code_challenge_method passed is invalid. Valid values are \\\"plain\\\" and \\\"S256\\\".\"\n    },\n    invalidCodeChallengeParams: {\n        code: \"pkce_params_missing\",\n        desc: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\"\n    },\n    invalidCloudDiscoveryMetadata: {\n        code: \"invalid_cloud_discovery_metadata\",\n        desc: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\"\n    },\n    invalidAuthorityMetadata: {\n        code: \"invalid_authority_metadata\",\n        desc: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\"\n    },\n    untrustedAuthority: {\n        code: \"untrusted_authority\",\n        desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\"\n    },\n    invalidAzureCloudInstance: {\n        code: \"invalid_azure_cloud_instance\",\n        desc: \"Invalid AzureCloudInstance provided. Please refer MSAL JS docs: aks.ms/msaljs/azure_cloud_instance for valid values\"\n    },\n    missingSshJwk: {\n        code: \"missing_ssh_jwk\",\n        desc: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\"\n    },\n    missingSshKid: {\n        code: \"missing_ssh_kid\",\n        desc: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\"\n    },\n    missingNonceAuthenticationHeader: {\n        code: \"missing_nonce_authentication_header\",\n        desc: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\"\n    },\n    invalidAuthenticationHeader: {\n        code: \"invalid_authentication_header\",\n        desc: \"Invalid authentication header provided\"\n    }\n};\n\n/**\n * Error thrown when there is an error in configuration of the MSAL.js library.\n */\nexport class ClientConfigurationError extends ClientAuthError {\n\n    constructor(errorCode: string, errorMessage?: string) {\n        super(errorCode, errorMessage);\n        this.name = \"ClientConfigurationError\";\n        Object.setPrototypeOf(this, ClientConfigurationError.prototype);\n    }\n\n    /**\n     * Creates an error thrown when the redirect uri is empty (not set by caller)\n     */\n    static createRedirectUriEmptyError(): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.redirectUriNotSet.code,\n            ClientConfigurationErrorMessage.redirectUriNotSet.desc);\n    }\n\n    /**\n     * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\n     */\n    static createPostLogoutRedirectUriEmptyError(): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.postLogoutUriNotSet.code,\n            ClientConfigurationErrorMessage.postLogoutUriNotSet.desc);\n    }\n\n    /**\n     * Creates an error thrown when the claims request could not be successfully parsed\n     */\n    static createClaimsRequestParsingError(claimsRequestParseError: string): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code,\n            `${ClientConfigurationErrorMessage.claimsRequestParsingError.desc} Given value: ${claimsRequestParseError}`);\n    }\n\n    /**\n     * Creates an error thrown if authority uri is given an insecure protocol.\n     * @param urlString\n     */\n    static createInsecureAuthorityUriError(urlString: string): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityUriInsecure.code,\n            `${ClientConfigurationErrorMessage.authorityUriInsecure.desc} Given URI: ${urlString}`);\n    }\n\n    /**\n     * Creates an error thrown if URL string does not parse into separate segments.\n     * @param urlString\n     */\n    static createUrlParseError(urlParseError: string): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.urlParseError.code,\n            `${ClientConfigurationErrorMessage.urlParseError.desc} Given Error: ${urlParseError}`);\n    }\n\n    /**\n     * Creates an error thrown if URL string is empty or null.\n     * @param urlString\n     */\n    static createUrlEmptyError(): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.urlEmptyError.code,\n            ClientConfigurationErrorMessage.urlEmptyError.desc);\n    }\n\n    /**\n     * Error thrown when scopes are empty.\n     * @param scopesValue\n     */\n    static createEmptyScopesArrayError(): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopesError.code,\n            `${ClientConfigurationErrorMessage.emptyScopesError.desc}`);\n    }\n\n    /**\n     * Error thrown when client id scope is not provided as single scope.\n     * @param inputScopes\n     */\n    static createClientIdSingleScopeError(inputScopes: Array<string>): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.clientIdSingleScopeError.code,\n            `${ClientConfigurationErrorMessage.clientIdSingleScopeError.desc} Given Scopes: ${inputScopes}`);\n    }\n\n    /**\n     * Error thrown when prompt is not an allowed type.\n     * @param promptValue\n     */\n    static createInvalidPromptError(promptValue: string): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code,\n            `${ClientConfigurationErrorMessage.invalidPrompt.desc} Given value: ${promptValue}`);\n    }\n\n    /**\n     * Creates error thrown when claims parameter is not a stringified JSON object\n     */\n    static createInvalidClaimsRequestError(): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidClaimsRequest.code,\n            ClientConfigurationErrorMessage.invalidClaimsRequest.desc);\n    }\n\n    /**\n     * Throws error when token request is empty and nothing cached in storage.\n     */\n    static createEmptyLogoutRequestError(): ClientConfigurationError {\n        return new ClientConfigurationError(\n            ClientConfigurationErrorMessage.logoutRequestEmptyError.code,\n            ClientConfigurationErrorMessage.logoutRequestEmptyError.desc\n        );\n    }\n\n    /**\n     * Throws error when token request is empty and nothing cached in storage.\n     */\n    static createEmptyTokenRequestError(): ClientConfigurationError {\n        return new ClientConfigurationError(\n            ClientConfigurationErrorMessage.tokenRequestEmptyError.code,\n            ClientConfigurationErrorMessage.tokenRequestEmptyError.desc\n        );\n    }\n\n    /**\n     * Throws error when an invalid code_challenge_method is passed by the user\n     */\n    static createInvalidCodeChallengeMethodError(): ClientConfigurationError {\n        return new ClientConfigurationError(\n            ClientConfigurationErrorMessage.invalidCodeChallengeMethod.code,\n            ClientConfigurationErrorMessage.invalidCodeChallengeMethod.desc\n        );\n    }\n\n    /**\n     * Throws error when both params: code_challenge and code_challenge_method are not passed together\n     */\n    static createInvalidCodeChallengeParamsError(): ClientConfigurationError {\n        return new ClientConfigurationError(\n            ClientConfigurationErrorMessage.invalidCodeChallengeParams.code,\n            ClientConfigurationErrorMessage.invalidCodeChallengeParams.desc\n        );\n    }\n\n    /**\n     * Throws an error when the user passes invalid cloudDiscoveryMetadata\n     */\n    static createInvalidCloudDiscoveryMetadataError(): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.code,\n            ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.desc);\n    }\n\n    /**\n     * Throws an error when the user passes invalid cloudDiscoveryMetadata\n     */\n    static createInvalidAuthorityMetadataError(): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadata.code,\n            ClientConfigurationErrorMessage.invalidAuthorityMetadata.desc);\n    }\n\n    /**\n     * Throws error when provided authority is not a member of the trusted host list\n     */\n    static createUntrustedAuthorityError(): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code,\n            ClientConfigurationErrorMessage.untrustedAuthority.desc);\n    }\n\n    /**\n     * Throws error when the AzureCloudInstance is set to an invalid value\n     */\n    static createInvalidAzureCloudInstanceError(): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAzureCloudInstance.code,\n            ClientConfigurationErrorMessage.invalidAzureCloudInstance.desc);\n    }\n\n    /**\n     * Throws an error when the authentication scheme is set to SSH but the SSH public key is omitted from the request\n     */\n    static createMissingSshJwkError(): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshJwk.code,\n            ClientConfigurationErrorMessage.missingSshJwk.desc);\n    }\n\n    /**\n     * Throws an error when the authentication scheme is set to SSH but the SSH public key ID is omitted from the request\n     */\n    static createMissingSshKidError(): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshKid.code,\n            ClientConfigurationErrorMessage.missingSshKid.desc);\n    }\n\n    /**\n     * Throws error when provided headers don't contain a header that a server nonce can be extracted from\n     */\n    static createMissingNonceAuthenticationHeadersError(): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.code,\n            ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.desc);\n    }\n\n    /**\n     * Throws error when a provided header is invalid in any way\n     */\n    static createInvalidAuthenticationHeaderError(invalidHeaderName: string, details: string): ClientConfigurationError {\n        return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthenticationHeader.code,\n            `${ClientConfigurationErrorMessage.invalidAuthenticationHeader.desc}. Invalid header: ${invalidHeaderName}. Details: ${details}`);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { Constants, OIDC_SCOPES } from \"../utils/Constants\";\n\n/**\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\n * to ensure uniqueness of strings.\n */\nexport class ScopeSet {\n    // Scopes as a Set of strings\n    private scopes: Set<string>;\n\n    constructor(inputScopes: Array<string>) {\n        // Filter empty string and null/undefined array items\n        const scopeArr = inputScopes ? StringUtils.trimArrayEntries([...inputScopes]) : [];\n        const filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : [];\n\n        // Validate and filter scopes (validate function throws if validation fails)\n        this.validateInputScopes(filteredInput);\n\n        this.scopes = new Set<string>(); // Iterator in constructor not supported by IE11\n        filteredInput.forEach(scope => this.scopes.add(scope));\n    }\n\n    /**\n     * Factory method to create ScopeSet from space-delimited string\n     * @param inputScopeString\n     * @param appClientId\n     * @param scopesRequired\n     */\n    static fromString(inputScopeString: string): ScopeSet {\n        const scopeString = inputScopeString || Constants.EMPTY_STRING;\n        const inputScopes: Array<string> = scopeString.split(\" \");\n        return new ScopeSet(inputScopes);\n    }\n\n    /**\n     * Used to validate the scopes input parameter requested  by the developer.\n     * @param {Array<string>} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\n     * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\n     */\n    private validateInputScopes(inputScopes: Array<string>): void {\n        // Check if scopes are required but not given or is an empty array\n        if (!inputScopes || inputScopes.length < 1) {\n            throw ClientConfigurationError.createEmptyScopesArrayError();\n        }\n    }\n\n    /**\n     * Check if a given scope is present in this set of scopes.\n     * @param scope\n     */\n    containsScope(scope: string): boolean {\n        const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\n        const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\n        // compare lowercase scopes\n        return !StringUtils.isEmpty(scope) ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false;\n    }\n\n    /**\n     * Check if a set of scopes is present in this set of scopes.\n     * @param scopeSet\n     */\n    containsScopeSet(scopeSet: ScopeSet): boolean {\n        if (!scopeSet || scopeSet.scopes.size <= 0) {\n            return false;\n        }\n\n        return (this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every(scope => this.containsScope(scope)));\n    }\n\n    /**\n     * Check if set of scopes contains only the defaults\n     */\n    containsOnlyOIDCScopes(): boolean {\n        let defaultScopeCount = 0;\n        OIDC_SCOPES.forEach((defaultScope: string) => {\n            if (this.containsScope(defaultScope)) {\n                defaultScopeCount += 1;\n            }\n        });\n\n        return this.scopes.size === defaultScopeCount;\n    }\n\n    /**\n     * Appends single scope if passed\n     * @param newScope\n     */\n    appendScope(newScope: string): void {\n        if (!StringUtils.isEmpty(newScope)) {\n            this.scopes.add(newScope.trim());\n        }\n    }\n\n    /**\n     * Appends multiple scopes if passed\n     * @param newScopes\n     */\n    appendScopes(newScopes: Array<string>): void {\n        try {\n            newScopes.forEach(newScope => this.appendScope(newScope));\n        } catch (e) {\n            throw ClientAuthError.createAppendScopeSetError(e);\n        }\n    }\n\n    /**\n     * Removes element from set of scopes.\n     * @param scope\n     */\n    removeScope(scope: string): void {\n        if (StringUtils.isEmpty(scope)) {\n            throw ClientAuthError.createRemoveEmptyScopeFromSetError(scope);\n        }\n        this.scopes.delete(scope.trim());\n    }\n\n    /**\n     * Removes default scopes from set of scopes\n     * Primarily used to prevent cache misses if the default scopes are not returned from the server\n     */\n    removeOIDCScopes(): void {\n        OIDC_SCOPES.forEach((defaultScope: string) => {\n            this.scopes.delete(defaultScope);\n        });\n    }\n\n    /**\n     * Combines an array of scopes with the current set of scopes.\n     * @param otherScopes\n     */\n    unionScopeSets(otherScopes: ScopeSet): Set<string> {\n        if (!otherScopes) {\n            throw ClientAuthError.createEmptyInputScopeSetError();\n        }\n        const unionScopes = new Set<string>(); // Iterator in constructor not supported in IE11\n        otherScopes.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\n        this.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\n        return unionScopes;\n    }\n\n    /**\n     * Check if scopes intersect between this set and another.\n     * @param otherScopes\n     */\n    intersectingScopeSets(otherScopes: ScopeSet): boolean {\n        if (!otherScopes) {\n            throw ClientAuthError.createEmptyInputScopeSetError();\n        }\n        \n        // Do not allow OIDC scopes to be the only intersecting scopes\n        if (!otherScopes.containsOnlyOIDCScopes()) {\n            otherScopes.removeOIDCScopes();\n        }\n        const unionScopes = this.unionScopeSets(otherScopes);\n        const sizeOtherScopes = otherScopes.getScopeCount();\n        const sizeThisScopes = this.getScopeCount();\n        const sizeUnionScopes = unionScopes.size;\n        return sizeUnionScopes < (sizeThisScopes + sizeOtherScopes);\n    }\n\n    /**\n     * Returns size of set of scopes.\n     */\n    getScopeCount(): number {\n        return this.scopes.size;\n    }\n\n    /**\n     * Returns the scopes as an array of string values\n     */\n    asArray(): Array<string> {\n        const array: Array<string> = [];\n        this.scopes.forEach(val => array.push(val));\n        return array;\n    }\n\n    /**\n     * Prints scopes into a space-delimited string\n     */\n    printScopes(): string {\n        if (this.scopes) {\n            const scopeArr = this.asArray();\n            return scopeArr.join(\" \");\n        }\n        return Constants.EMPTY_STRING;\n    }\n\n    /**\n     * Prints scopes into a space-delimited lower-case string (used for caching)\n     */\n    printScopesLowerCase(): string {\n        return this.printScopes().toLowerCase();\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { Separators, Constants } from \"../utils/Constants\";\n\n/**\n * Client info object which consists of two IDs. Need to add more info here.\n */\nexport type ClientInfo = {\n    uid: string,\n    utid: string\n};\n\n/**\n * Function to build a client info object from server clientInfo string\n * @param rawClientInfo\n * @param crypto\n */\nexport function buildClientInfo(rawClientInfo: string, crypto: ICrypto): ClientInfo {\n    if (StringUtils.isEmpty(rawClientInfo)) {\n        throw ClientAuthError.createClientInfoEmptyError();\n    }\n\n    try {\n        const decodedClientInfo: string = crypto.base64Decode(rawClientInfo);\n        return JSON.parse(decodedClientInfo) as ClientInfo;\n    } catch (e) {\n        throw ClientAuthError.createClientInfoDecodingError(e);\n    }\n}\n\n/**\n * Function to build a client info object from cached homeAccountId string\n * @param homeAccountId \n */\nexport function buildClientInfoFromHomeAccountId(homeAccountId: string): ClientInfo {\n    if (StringUtils.isEmpty(homeAccountId)) {\n        throw ClientAuthError.createClientInfoDecodingError(\"Home account ID was empty.\");\n    }\n    const clientInfoParts: string[] = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\n    return {\n        uid: clientInfoParts[0],\n        utid: clientInfoParts.length < 2 ? Constants.EMPTY_STRING : clientInfoParts[1]\n    };\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Authority types supported by MSAL.\n */\nexport enum AuthorityType {\n    Default,\n    Adfs\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n    Separators,\n    CacheAccountType,\n    CacheType,\n    Constants,\n} from \"../../utils/Constants\";\nimport { Authority } from \"../../authority/Authority\";\nimport { AuthToken } from \"../../account/AuthToken\";\nimport { ICrypto } from \"../../crypto/ICrypto\";\nimport { buildClientInfo } from \"../../account/ClientInfo\";\nimport { StringUtils } from \"../../utils/StringUtils\";\nimport { AccountInfo } from \"../../account/AccountInfo\";\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\nimport { AuthorityType } from \"../../authority/AuthorityType\";\nimport { Logger } from \"../../logger/Logger\";\nimport { TokenClaims } from \"../../account/TokenClaims\";\n\n/**\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\n *\n * Key : Value Schema\n *\n * Key: <home_account_id>-<environment>-<realm*>\n *\n * Value Schema:\n * {\n *      homeAccountId: home account identifier for the auth scheme,\n *      environment: entity that issued the token, represented as a full host\n *      realm: Full tenant or organizational identifier that the account belongs to\n *      localAccountId: Original tenant-specific accountID, usually used for legacy cases\n *      username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\n *      authorityType: Accounts authority type as a string\n *      name: Full name for the account, including given name and family name,\n *      clientInfo: Full base64 encoded client info received from ESTS\n *      lastModificationTime: last time this entity was modified in the cache\n *      lastModificationApp:\n *      oboAssertion: access token passed in as part of OBO request\n *      idTokenClaims: Object containing claims parsed from ID token\n *      nativeAccountId: Account identifier on the native device\n * }\n */\nexport class AccountEntity {\n    homeAccountId: string;\n    environment: string;\n    realm: string;\n    localAccountId: string;\n    username: string;\n    authorityType: string;\n    name?: string;\n    clientInfo?: string;\n    lastModificationTime?: string;\n    lastModificationApp?: string;\n    oboAssertion?: string;\n    cloudGraphHostName?: string;\n    msGraphHost?: string; \n    idTokenClaims?: TokenClaims;\n    nativeAccountId?: string;\n\n    /**\n     * Generate Account Id key component as per the schema: <home_account_id>-<environment>\n     */\n    generateAccountId(): string {\n        const accountId: Array<string> = [this.homeAccountId, this.environment];\n        return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n    }\n\n    /**\n     * Generate Account Cache Key as per the schema: <home_account_id>-<environment>-<realm*>\n     */\n    generateAccountKey(): string {\n        return AccountEntity.generateAccountCacheKey({\n            homeAccountId: this.homeAccountId,\n            environment: this.environment,\n            tenantId: this.realm,\n            username: this.username,\n            localAccountId: this.localAccountId\n        });\n    }\n\n    /**\n     * returns the type of the cache (in this case account)\n     */\n    generateType(): number {\n        switch (this.authorityType) {\n            case CacheAccountType.ADFS_ACCOUNT_TYPE:\n                return CacheType.ADFS;\n            case CacheAccountType.MSAV1_ACCOUNT_TYPE:\n                return CacheType.MSA;\n            case CacheAccountType.MSSTS_ACCOUNT_TYPE:\n                return CacheType.MSSTS;\n            case CacheAccountType.GENERIC_ACCOUNT_TYPE:\n                return CacheType.GENERIC;\n            default: {\n                throw ClientAuthError.createUnexpectedAccountTypeError();\n            }\n        }\n    }\n\n    /**\n     * Returns the AccountInfo interface for this account.\n     */\n    getAccountInfo(): AccountInfo {\n        return {\n            homeAccountId: this.homeAccountId,\n            environment: this.environment,\n            tenantId: this.realm,\n            username: this.username,\n            localAccountId: this.localAccountId,\n            name: this.name,\n            idTokenClaims: this.idTokenClaims,\n            nativeAccountId: this.nativeAccountId\n        };\n    }\n\n    /**\n     * Generates account key from interface\n     * @param accountInterface\n     */\n    static generateAccountCacheKey(accountInterface: AccountInfo): string {\n        const accountKey = [\n            accountInterface.homeAccountId,\n            accountInterface.environment || Constants.EMPTY_STRING,\n            accountInterface.tenantId || Constants.EMPTY_STRING,\n        ];\n\n        return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n    }\n\n    /**\n     * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\n     * @param clientInfo\n     * @param authority\n     * @param idToken\n     * @param policy\n     */\n    static createAccount(\n        clientInfo: string,\n        homeAccountId: string,\n        idToken: AuthToken,\n        authority?: Authority,\n        oboAssertion?: string,\n        cloudGraphHostName?: string,\n        msGraphHost?: string,\n        environment?: string,\n        nativeAccountId?: string\n    ): AccountEntity {\n        const account: AccountEntity = new AccountEntity();\n\n        account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\n        account.clientInfo = clientInfo;\n        account.homeAccountId = homeAccountId;\n        account.nativeAccountId = nativeAccountId;\n\n        const env = environment || (authority && authority.getPreferredCache());\n\n        if (!env) {\n            throw ClientAuthError.createInvalidCacheEnvironmentError();\n        }\n\n        account.environment = env;\n        // non AAD scenarios can have empty realm\n        account.realm = idToken?.claims?.tid || Constants.EMPTY_STRING;\n        account.oboAssertion = oboAssertion;\n        \n        if (idToken) {\n            account.idTokenClaims = idToken.claims;\n\n            // How do you account for MSA CID here?\n            account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || Constants.EMPTY_STRING;\n\n            /*\n             * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. In most cases it will contain a single email.\n             * This field should not be relied upon if a custom policy is configured to return more than 1 email.\n             */\n            account.username = idToken?.claims?.preferred_username || (idToken?.claims?.emails? idToken.claims.emails[0]: Constants.EMPTY_STRING);\n            account.name = idToken?.claims?.name;\n        }\n\n        account.cloudGraphHostName = cloudGraphHostName;\n        account.msGraphHost = msGraphHost;\n\n        return account;\n    }\n\n    /**\n     * Builds non-AAD/ADFS account.\n     * @param authority\n     * @param idToken\n     */\n    static createGenericAccount(\n        homeAccountId: string,\n        idToken: AuthToken,\n        authority?: Authority,\n        oboAssertion?: string,\n        cloudGraphHostName?: string,\n        msGraphHost?: string,\n        environment?: string\n    ): AccountEntity {\n        const account: AccountEntity = new AccountEntity();\n\n        account.authorityType = (authority && authority.authorityType === AuthorityType.Adfs) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\n        account.homeAccountId = homeAccountId;\n        // non AAD scenarios can have empty realm\n        account.realm = Constants.EMPTY_STRING;\n        account.oboAssertion = oboAssertion;\n\n        const env = environment || authority && authority.getPreferredCache();\n\n        if (!env) {\n            throw ClientAuthError.createInvalidCacheEnvironmentError();\n        }\n\n        if (idToken) {\n            // How do you account for MSA CID here?\n            account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || Constants.EMPTY_STRING;\n            // upn claim for most ADFS scenarios\n            account.username = idToken?.claims?.upn || Constants.EMPTY_STRING;\n            account.name = idToken?.claims?.name || Constants.EMPTY_STRING;\n            account.idTokenClaims = idToken?.claims;\n        }\n\n        account.environment = env;\n\n        account.cloudGraphHostName = cloudGraphHostName;\n        account.msGraphHost = msGraphHost;\n\n        /*\n         * add uniqueName to claims\n         * account.name = idToken.claims.uniqueName;\n         */\n\n        return account;\n    }\n\n    /**\n     * Generate HomeAccountId from server response\n     * @param serverClientInfo\n     * @param authType\n     */\n    static generateHomeAccountId(serverClientInfo: string, authType: AuthorityType, logger: Logger, cryptoObj: ICrypto, idToken?: AuthToken): string {\n\n        const accountId = idToken?.claims?.sub ? idToken.claims.sub : Constants.EMPTY_STRING;\n\n        // since ADFS does not have tid and does not set client_info\n        if (authType === AuthorityType.Adfs) {\n            return accountId;\n        }\n\n        // for cases where there is clientInfo\n        if (serverClientInfo) {\n            try {\n                const clientInfo = buildClientInfo(serverClientInfo, cryptoObj);\n                if (!StringUtils.isEmpty(clientInfo.uid) && !StringUtils.isEmpty(clientInfo.utid)) {\n                    return `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`;\n                }\n            } catch (e) {}\n        }\n\n        // default to \"sub\" claim\n        logger.verbose(\"No client info in response\");\n        return accountId;\n    }\n\n    /**\n     * Validates an entity: checks for all expected params\n     * @param entity\n     */\n    static isAccountEntity(entity: object): boolean {\n\n        if (!entity) {\n            return false;\n        }\n\n        return (\n            entity.hasOwnProperty(\"homeAccountId\") &&\n            entity.hasOwnProperty(\"environment\") &&\n            entity.hasOwnProperty(\"realm\") &&\n            entity.hasOwnProperty(\"localAccountId\") &&\n            entity.hasOwnProperty(\"username\") &&\n            entity.hasOwnProperty(\"authorityType\")\n        );\n    }\n\n    /**\n     * Helper function to determine whether 2 accountInfo objects represent the same account\n     * @param accountA \n     * @param accountB \n     * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\n     */\n    static accountInfoIsEqual(accountA: AccountInfo | null, accountB: AccountInfo | null, compareClaims?: boolean): boolean {\n        if (!accountA || !accountB) {\n            return false;\n        }\n\n        let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\n        if (compareClaims) {\n            const accountAClaims = (accountA.idTokenClaims || {}) as TokenClaims;\n            const accountBClaims = (accountB.idTokenClaims || {}) as TokenClaims;\n\n            // issued at timestamp and nonce are expected to change each time a new id token is acquired\n            claimsMatch = (accountAClaims.iat === accountBClaims.iat) &&\n            (accountAClaims.nonce === accountBClaims.nonce);\n        }\n\n        return (accountA.homeAccountId === accountB.homeAccountId) && \n            (accountA.localAccountId === accountB.localAccountId) &&\n            (accountA.username === accountB.username) &&\n            (accountA.tenantId === accountB.tenantId) &&\n            (accountA.environment === accountB.environment) &&\n            (accountA.nativeAccountId === accountB.nativeAccountId) &&\n            claimsMatch;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TokenClaims } from \"./TokenClaims\";\nimport { DecodedAuthToken } from \"./DecodedAuthToken\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ICrypto } from \"../crypto/ICrypto\";\n\n/**\n * JWT Token representation class. Parses token string and generates claims object.\n */\nexport class AuthToken {\n\n    // Raw Token string\n    rawToken: string;\n    // Claims inside token\n    claims: TokenClaims;\n    constructor(rawToken: string, crypto: ICrypto) {\n        if (StringUtils.isEmpty(rawToken)) {\n            throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\n        }\n\n        this.rawToken = rawToken;\n        this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\n    }\n\n    /**\n     * Extract token by decoding the rawToken\n     *\n     * @param encodedToken\n     */\n    static extractTokenClaims(encodedToken: string, crypto: ICrypto): TokenClaims {\n\n        const decodedToken: DecodedAuthToken = StringUtils.decodeAuthToken(encodedToken);\n\n        // token will be decoded to get the username\n        try {\n            const base64TokenPayload = decodedToken.JWSPayload;\n\n            // base64Decode() should throw an error if there is an issue\n            const base64Decoded = crypto.base64Decode(base64TokenPayload);\n            return JSON.parse(base64Decoded) as TokenClaims;\n        } catch (err) {\n            throw ClientAuthError.createTokenParsingError(err);\n        }\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountCache, AccountFilter, CredentialFilter, CredentialCache, ValidCredentialType, AppMetadataFilter, AppMetadataCache } from \"./utils/CacheTypes\";\nimport { CacheRecord } from \"./entities/CacheRecord\";\nimport { CacheSchemaType, CredentialType, Constants, APP_METADATA, THE_FAMILY_ID, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme } from \"../utils/Constants\";\nimport { CredentialEntity } from \"./entities/CredentialEntity\";\nimport { ScopeSet } from \"../request/ScopeSet\";\nimport { AccountEntity } from \"./entities/AccountEntity\";\nimport { AccessTokenEntity } from \"./entities/AccessTokenEntity\";\nimport { IdTokenEntity } from \"./entities/IdTokenEntity\";\nimport { RefreshTokenEntity } from \"./entities/RefreshTokenEntity\";\nimport { AuthError } from \"../error/AuthError\";\nimport { ICacheManager } from \"./interface/ICacheManager\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { AccountInfo } from \"../account/AccountInfo\";\nimport { AppMetadataEntity } from \"./entities/AppMetadataEntity\";\nimport { ServerTelemetryEntity } from \"./entities/ServerTelemetryEntity\";\nimport { ThrottlingEntity } from \"./entities/ThrottlingEntity\";\nimport { AuthToken } from \"../account/AuthToken\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { AuthorityMetadataEntity } from \"./entities/AuthorityMetadataEntity\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\n\n/**\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\n */\nexport abstract class CacheManager implements ICacheManager {\n    protected clientId: string;\n    protected cryptoImpl: ICrypto;\n\n    constructor(clientId: string, cryptoImpl: ICrypto) {\n        this.clientId = clientId;\n        this.cryptoImpl = cryptoImpl;\n    }\n\n    /**\n     * fetch the account entity from the platform cache\n     *  @param accountKey\n     */\n    abstract getAccount(accountKey: string): AccountEntity | null;\n\n    /**\n     * set account entity in the platform cache\n     * @param account\n     */\n    abstract setAccount(account: AccountEntity): void;\n\n    /**\n     * fetch the idToken entity from the platform cache\n     * @param idTokenKey\n     */\n    abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null;\n\n    /**\n     * set idToken entity to the platform cache\n     * @param idToken\n     */\n    abstract setIdTokenCredential(idToken: IdTokenEntity): void;\n\n    /**\n     * fetch the idToken entity from the platform cache\n     * @param accessTokenKey\n     */\n    abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null;\n\n    /**\n     * set idToken entity to the platform cache\n     * @param accessToken\n     */\n    abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void;\n\n    /**\n     * fetch the idToken entity from the platform cache\n     * @param refreshTokenKey\n     */\n    abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null;\n\n    /**\n     * set idToken entity to the platform cache\n     * @param refreshToken\n     */\n    abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void;\n\n    /**\n     * fetch appMetadata entity from the platform cache\n     * @param appMetadataKey\n     */\n    abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;\n\n    /**\n     * set appMetadata entity to the platform cache\n     * @param appMetadata\n     */\n    abstract setAppMetadata(appMetadata: AppMetadataEntity): void;\n\n    /**\n     * fetch server telemetry entity from the platform cache\n     * @param serverTelemetryKey\n     */\n    abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null;\n\n    /**\n     * set server telemetry entity to the platform cache\n     * @param serverTelemetryKey\n     * @param serverTelemetry\n     */\n    abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void;\n\n    /**\n     * fetch cloud discovery metadata entity from the platform cache\n     * @param key\n     */\n    abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;\n\n    /**\n     * \n     */\n    abstract getAuthorityMetadataKeys(): Array<string>;\n\n    /**\n     * set cloud discovery metadata entity to the platform cache\n     * @param key\n     * @param value\n     */\n    abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void;\n\n    /**\n     * fetch throttling entity from the platform cache\n     * @param throttlingCacheKey\n     */\n    abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null;\n\n    /**\n     * set throttling entity to the platform cache\n     * @param throttlingCacheKey\n     * @param throttlingCache\n     */\n    abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void;;\n\n    /**\n     * Function to remove an item from cache given its key.\n     * @param key\n     */\n    abstract removeItem(key: string, type?: string): boolean;\n\n    /**\n     * Function which returns boolean whether cache contains a specific key.\n     * @param key\n     */\n    abstract containsKey(key: string, type?: string): boolean;\n\n    /**\n     * Function which retrieves all current keys from the cache.\n     */\n    abstract getKeys(): string[];\n\n    /**\n     * Function which clears cache.\n     */\n    abstract clear(): Promise<void>;\n\n    /**\n     * Function which updates an outdated credential cache key\n     */\n    abstract updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string;\n\n    /**\n     * Returns all accounts in cache\n     */\n    getAllAccounts(): AccountInfo[] {\n        const currentAccounts: AccountCache = this.getAccountsFilteredBy();\n        const accountValues: AccountEntity[] = Object.keys(currentAccounts).map(accountKey => currentAccounts[accountKey]);\n        const numAccounts = accountValues.length;\n        if (numAccounts < 1) {\n            return [];\n        } else {\n            const allAccounts = accountValues.map<AccountInfo>((value) => {\n                const accountEntity = CacheManager.toObject<AccountEntity>(new AccountEntity(), value);\n                const accountInfo = accountEntity.getAccountInfo();\n                const idToken = this.readIdTokenFromCache(this.clientId, accountInfo);\n                if (idToken && !accountInfo.idTokenClaims) {\n                    accountInfo.idTokenClaims = new AuthToken(idToken.secret, this.cryptoImpl).claims;\n                }\n\n                return accountInfo;\n                \n            });\n            return allAccounts;\n        }\n    }\n\n    /**\n     * saves a cache record\n     * @param cacheRecord\n     */\n    async saveCacheRecord(cacheRecord: CacheRecord): Promise<void> {\n        if (!cacheRecord) {\n            throw ClientAuthError.createNullOrUndefinedCacheRecord();\n        }\n\n        if (!!cacheRecord.account) {\n            this.setAccount(cacheRecord.account);\n        }\n\n        if (!!cacheRecord.idToken) {\n            this.setIdTokenCredential(cacheRecord.idToken);\n        }\n\n        if (!!cacheRecord.accessToken) {\n            await this.saveAccessToken(cacheRecord.accessToken);\n        }\n\n        if (!!cacheRecord.refreshToken) {\n            this.setRefreshTokenCredential(cacheRecord.refreshToken);\n        }\n\n        if (!!cacheRecord.appMetadata) {\n            this.setAppMetadata(cacheRecord.appMetadata);\n        }\n    }\n\n    /**\n     * saves access token credential\n     * @param credential\n     */\n    private async saveAccessToken(credential: AccessTokenEntity): Promise<void> {\n        const currentTokenCache = this.getCredentialsFilteredBy({\n            clientId: credential.clientId,\n            credentialType: credential.credentialType,\n            environment: credential.environment,\n            homeAccountId: credential.homeAccountId,\n            realm: credential.realm,\n            tokenType: credential.tokenType,\n            requestedClaimsHash: credential.requestedClaimsHash\n        });\n\n        const currentScopes = ScopeSet.fromString(credential.target);\n        const currentAccessTokens: AccessTokenEntity[] = Object.keys(currentTokenCache.accessTokens).map(key => currentTokenCache.accessTokens[key]);\n\n        if (currentAccessTokens) {\n            const removedAccessTokens: Array<Promise<boolean>> = [];\n            currentAccessTokens.forEach((tokenEntity) => {\n                const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\n                if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\n                    removedAccessTokens.push(this.removeCredential(tokenEntity));\n                }\n            });\n            await Promise.all(removedAccessTokens);\n        }\n        this.setAccessTokenCredential(credential);\n    }\n\n    /**\n     * retrieve accounts matching all provided filters; if no filter is set, get all accounts\n     * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\n     * @param homeAccountId\n     * @param environment\n     * @param realm\n     */\n    getAccountsFilteredBy(accountFilter?: AccountFilter): AccountCache {\n        return this.getAccountsFilteredByInternal(\n            accountFilter ? accountFilter.homeAccountId : Constants.EMPTY_STRING,\n            accountFilter ? accountFilter.environment : Constants.EMPTY_STRING,\n            accountFilter ? accountFilter.realm : Constants.EMPTY_STRING\n        );\n    }\n\n    /**\n     * retrieve accounts matching all provided filters; if no filter is set, get all accounts\n     * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\n     * @param homeAccountId\n     * @param environment\n     * @param realm\n     */\n    private getAccountsFilteredByInternal(\n        homeAccountId?: string,\n        environment?: string,\n        realm?: string\n    ): AccountCache {\n        const allCacheKeys = this.getKeys();\n        const matchingAccounts: AccountCache = {};\n\n        allCacheKeys.forEach((cacheKey) => {\n            const entity: AccountEntity | null = this.getAccount(cacheKey);\n\n            if (!entity) {\n                return;\n            }\n\n            if (!!homeAccountId && !this.matchHomeAccountId(entity, homeAccountId)) {\n                return;\n            }\n\n            if (!!environment && !this.matchEnvironment(entity, environment)) {\n                return;\n            }\n\n            if (!!realm && !this.matchRealm(entity, realm)) {\n                return;\n            }\n\n            matchingAccounts[cacheKey] = entity;\n        });\n\n        return matchingAccounts;\n    }\n\n    /**\n     * retrieve credentails matching all provided filters; if no filter is set, get all credentials\n     * @param homeAccountId\n     * @param environment\n     * @param credentialType\n     * @param clientId\n     * @param realm\n     * @param target\n     */\n    getCredentialsFilteredBy(filter: CredentialFilter): CredentialCache {\n        return this.getCredentialsFilteredByInternal(\n            filter.homeAccountId,\n            filter.environment,\n            filter.credentialType,\n            filter.clientId,\n            filter.familyId,\n            filter.realm,\n            filter.target,\n            filter.oboAssertion,\n            filter.tokenType,\n            filter.keyId,\n            filter.requestedClaimsHash\n        );\n    }\n\n    /**\n     * Support function to help match credentials\n     * @param homeAccountId\n     * @param environment\n     * @param credentialType\n     * @param clientId\n     * @param realm\n     * @param target\n     * @param oboAssertion\n     * @param tokenType\n     */\n    private getCredentialsFilteredByInternal(\n        homeAccountId?: string,\n        environment?: string,\n        credentialType?: string,\n        clientId?: string,\n        familyId?: string,\n        realm?: string,\n        target?: string,\n        oboAssertion?: string,\n        tokenType?: AuthenticationScheme,\n        keyId?: string,\n        requestedClaimsHash?: string\n    ): CredentialCache {\n        const allCacheKeys = this.getKeys();\n        const matchingCredentials: CredentialCache = {\n            idTokens: {},\n            accessTokens: {},\n            refreshTokens: {},\n        };\n        \n        allCacheKeys.forEach((cacheKey) => {\n            // don't parse any non-credential type cache entities\n            const credType = CredentialEntity.getCredentialType(cacheKey);\n\n            if (credType === Constants.NOT_DEFINED) {\n                return;\n            }\n\n            // Attempt retrieval\n            const entity = this.getSpecificCredential(cacheKey, credType);\n\n            if (!entity) {\n                return;\n            }\n\n            if (!!oboAssertion && !this.matchOboAssertion(entity, oboAssertion)) {\n                return;\n            }\n\n            if (!!homeAccountId && !this.matchHomeAccountId(entity, homeAccountId)) {\n                return;\n            }\n\n            if (!!environment && !this.matchEnvironment(entity, environment)) {\n                return;\n            }\n\n            if (!!realm && !this.matchRealm(entity, realm)) {\n                return;\n            }\n\n            if (!!credentialType && !this.matchCredentialType(entity, credentialType)) {\n                return;\n            }\n\n            if (!!clientId && !this.matchClientId(entity, clientId)) {\n                return;\n            }\n\n            if (!!familyId && !this.matchFamilyId(entity, familyId)) {\n                return;\n            }\n\n            /*\n             * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\n             * Resource specific refresh tokens case will be added when the support is deemed necessary\n             */\n            if (!!target && !this.matchTarget(entity, target)) {\n                return;\n            }\n            \n            // If request OR cached entity has requested Claims Hash, check if they match\n            if (requestedClaimsHash || entity.requestedClaimsHash) {\n                // Don't match if either is undefined or they are different\n                if (entity.requestedClaimsHash !== requestedClaimsHash) {\n                    return;\n                }\n            }\n\n            // Access Token with Auth Scheme specific matching\n            if (credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\n                if(!!tokenType && !this.matchTokenType(entity, tokenType)) {\n                    return;\n                }\n\n                // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\n                if (tokenType === AuthenticationScheme.SSH) {\n                    if(keyId && !this.matchKeyId(entity, keyId)) {\n                        return;\n                    }\n                }\n            }\n\n            // At this point, the entity matches the request, update cache key if key schema has changed\n            const updatedCacheKey = this.updateCredentialCacheKey(cacheKey, entity);\n\n            switch (credType) {\n                case CredentialType.ID_TOKEN:\n                    matchingCredentials.idTokens[updatedCacheKey] = entity as IdTokenEntity;\n                    break;\n                case CredentialType.ACCESS_TOKEN:\n                case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\n                    matchingCredentials.accessTokens[updatedCacheKey] = entity as AccessTokenEntity;\n                    break;\n                case CredentialType.REFRESH_TOKEN:\n                    matchingCredentials.refreshTokens[updatedCacheKey] = entity as RefreshTokenEntity;\n                    break;\n            }\n        });\n\n        return matchingCredentials;\n    }\n\n    /**\n     * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\n     * @param filter\n     */\n    getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache {\n        return this.getAppMetadataFilteredByInternal(\n            filter.environment,\n            filter.clientId,\n        );\n    }\n\n    /**\n     * Support function to help match appMetadata\n     * @param environment\n     * @param clientId\n     */\n    private getAppMetadataFilteredByInternal(\n        environment?: string,\n        clientId?: string\n    ): AppMetadataCache {\n\n        const allCacheKeys = this.getKeys();\n        const matchingAppMetadata: AppMetadataCache = {};\n\n        allCacheKeys.forEach((cacheKey) => {\n            // don't parse any non-appMetadata type cache entities\n            if (!this.isAppMetadata(cacheKey)) {\n                return;\n            }\n\n            // Attempt retrieval\n            const entity = this.getAppMetadata(cacheKey);\n\n            if (!entity) {\n                return;\n            }\n\n            if (!!environment && !this.matchEnvironment(entity, environment)) {\n                return;\n            }\n\n            if (!!clientId && !this.matchClientId(entity, clientId)) {\n                return;\n            }\n\n            matchingAppMetadata[cacheKey] = entity;\n\n        });\n\n        return matchingAppMetadata;\n    }\n\n    /**\n     * retrieve authorityMetadata that contains a matching alias\n     * @param filter\n     */\n    getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null {\n        const allCacheKeys = this.getAuthorityMetadataKeys();\n        let matchedEntity = null;\n\n        allCacheKeys.forEach((cacheKey) => {\n            // don't parse any non-authorityMetadata type cache entities\n            if (!this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(this.clientId) === -1) {\n                return;\n            }\n\n            // Attempt retrieval\n            const entity = this.getAuthorityMetadata(cacheKey);\n\n            if (!entity) {\n                return;\n            }\n\n            if (entity.aliases.indexOf(host) === -1) {\n                return;\n            }\n\n            matchedEntity = entity;\n\n        });\n        \n        return matchedEntity;\n    }\n\n    /**\n     * Removes all accounts and related tokens from cache.\n     */\n    async removeAllAccounts(): Promise<boolean> {\n        const allCacheKeys = this.getKeys();\n        const removedAccounts: Array<Promise<boolean>> = [];\n\n        allCacheKeys.forEach((cacheKey) => {\n            const entity = this.getAccount(cacheKey);\n            if (!entity) {\n                return;\n            }\n            removedAccounts.push(this.removeAccount(cacheKey));\n        });\n        \n        await Promise.all(removedAccounts);\n        return true;\n    }\n\n    /**\n     * returns a boolean if the given account is removed\n     * @param account\n     */\n    async removeAccount(accountKey: string): Promise<boolean> {\n        const account = this.getAccount(accountKey);\n        if (!account) {\n            throw ClientAuthError.createNoAccountFoundError();\n        }\n        return (await this.removeAccountContext(account) && this.removeItem(accountKey, CacheSchemaType.ACCOUNT));\n    }\n\n    /**\n     * Removes credentials associated with the provided account\n     * @param account\n     */\n    async removeAccountContext(account: AccountEntity): Promise<boolean> {\n        const allCacheKeys = this.getKeys();\n        const accountId = account.generateAccountId();\n        const removedCredentials: Array<Promise<boolean>> = [];\n\n        allCacheKeys.forEach((cacheKey) => {\n            // don't parse any non-credential type cache entities\n            const credType = CredentialEntity.getCredentialType(cacheKey);\n            if (credType === Constants.NOT_DEFINED) {\n                return;\n            }\n\n            const cacheEntity = this.getSpecificCredential(cacheKey, credType);\n            if (!!cacheEntity && accountId === cacheEntity.generateAccountId()) {\n                removedCredentials.push(this.removeCredential(cacheEntity));\n            }\n        });\n\n        await Promise.all(removedCredentials);\n        return true;\n    }\n\n    /**\n     * returns a boolean if the given credential is removed\n     * @param credential\n     */\n    async removeCredential(credential: CredentialEntity): Promise<boolean> {\n        const key = credential.generateCredentialKey();\n\n        // Remove Token Binding Key from key store for PoP Tokens Credentials\n        if (credential.credentialType.toLowerCase() === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {\n            if(credential.tokenType === AuthenticationScheme.POP) {\n                const accessTokenWithAuthSchemeEntity = credential as AccessTokenEntity;\n                const kid = accessTokenWithAuthSchemeEntity.keyId;\n    \n                if (kid) {\n                    try {\n                        await this.cryptoImpl.removeTokenBindingKey(kid);\n                    } catch (error) {\n                        throw ClientAuthError.createBindingKeyNotRemovedError();\n                    }\n                }\n            }\n        }\n\n        return this.removeItem(key, CacheSchemaType.CREDENTIAL);\n    }\n\n    /**\n     * Removes all app metadata objects from cache.\n     */\n    removeAppMetadata(): boolean {\n        const allCacheKeys = this.getKeys();\n        allCacheKeys.forEach((cacheKey) => {\n            if (this.isAppMetadata(cacheKey)) {\n                this.removeItem(cacheKey, CacheSchemaType.APP_METADATA);\n            }\n        });\n\n        return true;\n    }\n\n    /**\n     * Retrieve the cached credentials into a cacherecord\n     * @param account\n     * @param clientId\n     * @param scopes\n     * @param environment\n     * @param authScheme\n     */\n    readCacheRecord(account: AccountInfo, clientId: string, request: BaseAuthRequest, environment: string): CacheRecord {\n\n        const cachedAccount = this.readAccountFromCache(account);\n        const cachedIdToken = this.readIdTokenFromCache(clientId, account);\n        const cachedAccessToken = this.readAccessTokenFromCache(clientId, account, request);\n        const cachedRefreshToken = this.readRefreshTokenFromCache(clientId, account, false);\n        const cachedAppMetadata = this.readAppMetadataFromCache(environment, clientId);\n\n        if (cachedAccount && cachedIdToken) {\n            cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\n        }\n\n        return {\n            account: cachedAccount,\n            idToken: cachedIdToken,\n            accessToken: cachedAccessToken,\n            refreshToken: cachedRefreshToken,\n            appMetadata: cachedAppMetadata,\n        };\n    }\n\n    /**\n     * Retrieve AccountEntity from cache\n     * @param account\n     */\n    readAccountFromCache(account: AccountInfo): AccountEntity | null {\n        const accountKey: string = AccountEntity.generateAccountCacheKey(account);\n        return this.getAccount(accountKey);\n    }\n\n    /**\n     * Retrieve IdTokenEntity from cache\n     * @param clientId\n     * @param account\n     * @param inputRealm\n     */\n    readIdTokenFromCache(clientId: string, account: AccountInfo): IdTokenEntity | null {\n        const idTokenFilter: CredentialFilter = {\n            homeAccountId: account.homeAccountId,\n            environment: account.environment,\n            credentialType: CredentialType.ID_TOKEN,\n            clientId: clientId,\n            realm: account.tenantId,\n        };\n\n        const credentialCache: CredentialCache = this.getCredentialsFilteredBy(idTokenFilter);\n        const idTokens = Object.keys(credentialCache.idTokens).map((key) => credentialCache.idTokens[key]);\n        const numIdTokens = idTokens.length;\n\n        if (numIdTokens < 1) {\n            return null;\n        } else if (numIdTokens > 1) {\n            throw ClientAuthError.createMultipleMatchingTokensInCacheError();\n        }\n\n        return idTokens[0] as IdTokenEntity;\n    }\n\n    /**\n     * Retrieve AccessTokenEntity from cache\n     * @param clientId\n     * @param account\n     * @param scopes\n     * @param authScheme\n     */\n    readAccessTokenFromCache(clientId: string, account: AccountInfo, request: BaseAuthRequest): AccessTokenEntity | null {\n        const scopes =  new ScopeSet(request.scopes || []);\n        const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\n        /*\n         * Distinguish between Bearer and PoP/SSH token cache types\n         * Cast to lowercase to handle \"bearer\" from ADFS\n         */\n        const credentialType = (authScheme && authScheme.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;\n\n        const accessTokenFilter: CredentialFilter = {\n            homeAccountId: account.homeAccountId,\n            environment: account.environment,\n            credentialType: credentialType,\n            clientId,\n            realm: account.tenantId,\n            target: scopes.printScopesLowerCase(),\n            tokenType: authScheme,\n            keyId: request.sshKid,\n            requestedClaimsHash: request.requestedClaimsHash\n        };\n\n        const credentialCache: CredentialCache = this.getCredentialsFilteredBy(accessTokenFilter);\n        \n        const accessTokens = Object.keys(credentialCache.accessTokens).map((key) => credentialCache.accessTokens[key]);\n        \n        const numAccessTokens = accessTokens.length;\n        if (numAccessTokens < 1) {\n            return null;\n        } else if (numAccessTokens > 1) {\n            throw ClientAuthError.createMultipleMatchingTokensInCacheError();\n        }\n\n        return accessTokens[0] as AccessTokenEntity;\n    }\n\n    /**\n     * Helper to retrieve the appropriate refresh token from cache\n     * @param clientId\n     * @param account\n     * @param familyRT\n     */\n    readRefreshTokenFromCache(clientId: string, account: AccountInfo, familyRT: boolean): RefreshTokenEntity | null {\n        const id = familyRT ? THE_FAMILY_ID : undefined;\n        const refreshTokenFilter: CredentialFilter = {\n            homeAccountId: account.homeAccountId,\n            environment: account.environment,\n            credentialType: CredentialType.REFRESH_TOKEN,\n            clientId: clientId,\n            familyId: id\n        };\n\n        const credentialCache: CredentialCache = this.getCredentialsFilteredBy(refreshTokenFilter);\n        const refreshTokens = Object.keys(credentialCache.refreshTokens).map((key) => credentialCache.refreshTokens[key]);\n\n        const numRefreshTokens = refreshTokens.length;\n        if (numRefreshTokens < 1) {\n            return null;\n        }\n        // address the else case after remove functions address environment aliases\n\n        return refreshTokens[0] as RefreshTokenEntity;\n    }\n\n    /**\n     * Retrieve AppMetadataEntity from cache\n     */\n    readAppMetadataFromCache(environment: string, clientId: string): AppMetadataEntity | null {\n        const appMetadataFilter: AppMetadataFilter = {\n            environment,\n            clientId,\n        };\n\n        const appMetadata: AppMetadataCache = this.getAppMetadataFilteredBy(appMetadataFilter);\n        const appMetadataEntries: AppMetadataEntity[] = Object.keys(appMetadata).map((key) => appMetadata[key]);\n\n        const numAppMetadata = appMetadataEntries.length;\n        if (numAppMetadata < 1) {\n            return null;\n        } else if (numAppMetadata > 1) {\n            throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\n        }\n\n        return appMetadataEntries[0] as AppMetadataEntity;\n    }\n\n    /**\n     * Return the family_id value associated  with FOCI\n     * @param environment\n     * @param clientId\n     */\n    isAppMetadataFOCI(environment: string, clientId: string): boolean {\n        const appMetadata = this.readAppMetadataFromCache(environment, clientId);\n        return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\n    }\n\n    /**\n     * helper to match account ids\n     * @param value\n     * @param homeAccountId\n     */\n    private matchHomeAccountId(entity: AccountEntity | CredentialEntity, homeAccountId: string): boolean {\n        return !!(entity.homeAccountId && homeAccountId === entity.homeAccountId);\n    }\n\n    /**\n     * helper to match assertion\n     * @param value\n     * @param oboAssertion\n     */\n    private matchOboAssertion(entity: AccountEntity | CredentialEntity, oboAssertion: string): boolean {\n        return !!(entity.oboAssertion && oboAssertion === entity.oboAssertion);\n    }\n\n    /**\n     * helper to match environment\n     * @param value\n     * @param environment\n     */\n    private matchEnvironment(entity: AccountEntity | CredentialEntity | AppMetadataEntity, environment: string): boolean {\n        const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\n        if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\n            return true;\n        }\n\n        return false;\n    }\n\n    /**\n     * helper to match credential type\n     * @param entity\n     * @param credentialType\n     */\n    private matchCredentialType(entity: CredentialEntity, credentialType: string): boolean {\n        return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\n    }\n\n    /**\n     * helper to match client ids\n     * @param entity\n     * @param clientId\n     */\n    private matchClientId(entity: CredentialEntity | AppMetadataEntity, clientId: string): boolean {\n        return !!(entity.clientId && clientId === entity.clientId);\n    }\n\n    /**\n     * helper to match family ids\n     * @param entity\n     * @param familyId\n     */\n    private matchFamilyId(entity: CredentialEntity | AppMetadataEntity, familyId: string): boolean {\n        return !!(entity.familyId && familyId === entity.familyId);\n    }\n\n    /**\n     * helper to match realm\n     * @param entity\n     * @param realm\n     */\n    private matchRealm(entity: AccountEntity | CredentialEntity, realm: string): boolean {\n        return !!(entity.realm && realm === entity.realm);\n    }\n\n    /**\n     * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\n     * @param entity\n     * @param target\n     */\n    private matchTarget(entity: CredentialEntity, target: string): boolean {\n        const isNotAccessTokenCredential = (entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME);\n\n        if ( isNotAccessTokenCredential || !entity.target) {\n            return false;\n        }\n\n        const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target);\n        const requestTargetScopeSet: ScopeSet = ScopeSet.fromString(target);\n\n        if (!requestTargetScopeSet.containsOnlyOIDCScopes()) {\n            requestTargetScopeSet.removeOIDCScopes(); // ignore OIDC scopes\n        } else {\n            requestTargetScopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\n        }\n        return entityScopeSet.containsScopeSet(requestTargetScopeSet);\n    }\n\n    /**\n     * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\n     * @param entity \n     * @param tokenType \n     */\n    private matchTokenType(entity: CredentialEntity, tokenType: AuthenticationScheme): boolean {\n        return !!(entity.tokenType && entity.tokenType === tokenType);\n    }\n\n    /**\n     * Returns true if the credential's keyId matches the one in the request, false otherwise\n     * @param entity \n     * @param tokenType \n     */\n    private matchKeyId(entity: CredentialEntity, keyId: string): boolean {\n        return !!(entity.keyId && entity.keyId === keyId);\n    }\n\n    /**\n     * returns if a given cache entity is of the type appmetadata\n     * @param key\n     */\n    private isAppMetadata(key: string): boolean {\n        return key.indexOf(APP_METADATA) !== -1;\n    }\n\n    /**\n     * returns if a given cache entity is of the type authoritymetadata\n     * @param key\n     */\n    protected isAuthorityMetadata(key: string): boolean {\n        return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\n    }\n\n    /**\n     * returns cache key used for cloud instance metadata\n     */\n    generateAuthorityMetadataCacheKey(authority: string): string {\n        return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\n    }\n\n    /**\n     * Returns the specific credential (IdToken/AccessToken/RefreshToken) from the cache\n     * @param key\n     * @param credType\n     */\n    private getSpecificCredential(key: string, credType: string): ValidCredentialType | null {\n        switch (credType) {\n            case CredentialType.ID_TOKEN: {\n                return this.getIdTokenCredential(key);\n            }\n            case CredentialType.ACCESS_TOKEN:\n            case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME: {\n                return this.getAccessTokenCredential(key);\n            }\n            case CredentialType.REFRESH_TOKEN: {\n                return this.getRefreshTokenCredential(key);\n            }\n            default:\n                return null;\n        }\n    }\n\n    /**\n     * Helper to convert serialized data to object\n     * @param obj\n     * @param json\n     */\n    static toObject<T>(obj: T, json: object): T {\n        for (const propertyName in json) {\n            obj[propertyName] = json[propertyName];\n        }\n        return obj;\n    }\n}\n\nexport class DefaultStorageClass extends CacheManager {\n    setAccount(): void {\n        const notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    getAccount(): AccountEntity {\n        const notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    setIdTokenCredential(): void {\n        const notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    getIdTokenCredential(): IdTokenEntity {\n        const notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    setAccessTokenCredential(): void {\n        const notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    getAccessTokenCredential(): AccessTokenEntity {\n        const notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    setRefreshTokenCredential(): void {\n        const notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    getRefreshTokenCredential(): RefreshTokenEntity {\n        const notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    setAppMetadata(): void {\n        const notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    getAppMetadata(): AppMetadataEntity {\n        const notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    setServerTelemetry(): void {\n        const notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    getServerTelemetry(): ServerTelemetryEntity {\n        const notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    setAuthorityMetadata(): void {\n        const notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    getAuthorityMetadata(): AuthorityMetadataEntity | null {\n        const notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    getAuthorityMetadataKeys(): Array<string> {\n        const notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    setThrottlingCache(): void {\n        const notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    getThrottlingCache(): ThrottlingEntity {\n        const notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    removeItem(): boolean {\n        const notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    containsKey(): boolean {\n        const notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    getKeys(): string[] {\n        const notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    async clear(): Promise<void> {\n        const notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n    updateCredentialCacheKey(): string {\n        const notImplErr = \"Storage interface - updateCredentialCacheKey() has not been implemented for the cacheStorage interface.\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from \"../crypto/ICrypto\";\nimport { AuthError } from \"../error/AuthError\";\nimport { ILoggerCallback, LogLevel } from \"../logger/Logger\";\nimport { Constants } from \"../utils/Constants\";\nimport { version } from \"../packageMetadata\";\nimport { Authority } from \"../authority/Authority\";\nimport { AzureCloudInstance } from \"../authority/AuthorityOptions\";\nimport { CacheManager, DefaultStorageClass } from \"../cache/CacheManager\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\n\n// Token renewal offset default in seconds\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\n\n/**\n * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL.\n *\n * This object allows you to configure important elements of MSAL functionality:\n * - authOptions                - Authentication for application\n * - cryptoInterface            - Implementation of crypto functions\n * - libraryInfo                - Library metadata\n * - telemetry                  - Telemetry options and data\n * - loggerOptions              - Logging for application\n * - networkInterface           - Network implementation\n * - storageInterface           - Storage implementation\n * - systemOptions              - Additional library options\n * - clientCredentials          - Credentials options for confidential clients\n */\nexport type ClientConfiguration = {\n    authOptions: AuthOptions,\n    systemOptions?: SystemOptions,\n    loggerOptions?: LoggerOptions,\n    storageInterface?: CacheManager,\n    networkInterface?: INetworkModule,\n    cryptoInterface?: ICrypto,\n    clientCredentials?: ClientCredentials,\n    libraryInfo?: LibraryInfo\n    telemetry?: TelemetryOptions,\n    serverTelemetryManager?: ServerTelemetryManager | null,\n    persistencePlugin?: ICachePlugin | null,\n    serializableCache?: ISerializableTokenCache | null\n};\n\nexport type CommonClientConfiguration = {\n    authOptions: Required<AuthOptions>,\n    systemOptions: Required<SystemOptions>,\n    loggerOptions : Required<LoggerOptions>,\n    storageInterface: CacheManager,\n    networkInterface : INetworkModule,\n    cryptoInterface : Required<ICrypto>,\n    libraryInfo : LibraryInfo,\n    telemetry: Required<TelemetryOptions>,\n    serverTelemetryManager: ServerTelemetryManager | null,\n    clientCredentials: ClientCredentials,\n    persistencePlugin: ICachePlugin | null,\n    serializableCache: ISerializableTokenCache | null\n};\n\n/**\n * Use this to configure the auth options in the ClientConfiguration object\n *\n * - clientId                    - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\n * - authority                   - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\n * - knownAuthorities            - An array of URIs that are known to be valid. Used in B2C scenarios.\n * - cloudDiscoveryMetadata      - A string containing the cloud discovery response. Used in AAD scenarios.\n * - clientCapabilities          - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\n * - protocolMode                - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\n */\nexport type AuthOptions = {\n    clientId: string;\n    authority: Authority;\n    clientCapabilities?: Array<string>;\n    azureCloudOptions?: AzureCloudOptions;\n};\n\n/**\n * Use this to configure token renewal info in the Configuration object\n *\n * - tokenRenewalOffsetSeconds    - Sets the window of offset needed to renew the token before expiry\n */\nexport type SystemOptions = {\n    tokenRenewalOffsetSeconds?: number;\n    preventCorsPreflight?: boolean;\n    proxyUrl?: string;\n};\n\n/**\n *  Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object\n *\n * - loggerCallback                - Callback for logger\n * - piiLoggingEnabled             - Sets whether pii logging is enabled\n * - logLevel                      - Sets the level at which logging happens\n * - correlationId                 - Sets the correlationId printed by the logger\n */\nexport type LoggerOptions = {\n    loggerCallback?: ILoggerCallback,\n    piiLoggingEnabled?: boolean,\n    logLevel?: LogLevel,\n    correlationId?: string\n};\n\n/**\n * Library-specific options\n */\nexport type LibraryInfo = {\n    sku: string,\n    version: string,\n    cpu: string,\n    os: string\n};\n\n/**\n * Credentials for confidential clients\n */\n\nexport type ClientAssertion = {\n    assertion: string,\n    assertionType: string\n};\n\nexport type ClientCredentials = {\n    clientSecret?: string,\n    clientAssertion?: ClientAssertion\n};\n\n/**\n * AzureCloudInstance specific options\n *\n * - azureCloudInstance             - string enum providing short notation for soverign and public cloud authorities\n * - tenant                         - provision to provide the tenant info\n */\nexport type AzureCloudOptions = {\n    azureCloudInstance: AzureCloudInstance;\n    tenant?: string,\n};\n\nexport type TelemetryOptions = {\n    application: ApplicationTelemetry;\n};\n\n/**\n * Telemetry information sent on request\n * - appName: Unique string name of an application\n * - appVersion: Version of the application using MSAL\n */\nexport type ApplicationTelemetry = {\n    appName: string;\n    appVersion: string;\n};\n\nexport const DEFAULT_SYSTEM_OPTIONS: Required<SystemOptions> = {\n    tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\n    preventCorsPreflight: false,\n    proxyUrl: Constants.EMPTY_STRING\n};\n\nconst DEFAULT_LOGGER_IMPLEMENTATION: Required<LoggerOptions> = {\n    loggerCallback: () => {\n        // allow users to not set loggerCallback\n    },\n    piiLoggingEnabled: false,\n    logLevel: LogLevel.Info,\n    correlationId: Constants.EMPTY_STRING\n};\n\nconst DEFAULT_NETWORK_IMPLEMENTATION: INetworkModule = {\n    async sendGetRequestAsync<T>(): Promise<T> {\n        const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    },\n    async sendPostRequestAsync<T>(): Promise<T> {\n        const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented\";\n        throw AuthError.createUnexpectedError(notImplErr);\n    }\n};\n\nconst DEFAULT_LIBRARY_INFO: LibraryInfo = {\n    sku: Constants.SKU,\n    version: version,\n    cpu: Constants.EMPTY_STRING,\n    os: Constants.EMPTY_STRING\n};\n\nconst DEFAULT_CLIENT_CREDENTIALS: ClientCredentials = {\n    clientSecret: Constants.EMPTY_STRING,\n    clientAssertion: undefined\n};\n\nconst DEFAULT_AZURE_CLOUD_OPTIONS: AzureCloudOptions = {\n    azureCloudInstance: AzureCloudInstance.None,\n    tenant: `${Constants.DEFAULT_COMMON_TENANT}`\n};\n\nconst DEFAULT_TELEMETRY_OPTIONS: Required<TelemetryOptions> = {\n    application: {\n        appName: \"\",\n        appVersion: \"\"\n    }\n};\n\n/**\n * Function that sets the default options when not explicitly configured from app developer\n *\n * @param Configuration\n *\n * @returns Configuration\n */\nexport function buildClientConfiguration(\n    {\n        authOptions: userAuthOptions,\n        systemOptions: userSystemOptions,\n        loggerOptions: userLoggerOption,\n        storageInterface: storageImplementation,\n        networkInterface: networkImplementation,\n        cryptoInterface: cryptoImplementation,\n        clientCredentials: clientCredentials,\n        libraryInfo: libraryInfo,\n        telemetry: telemetry,\n        serverTelemetryManager: serverTelemetryManager,\n        persistencePlugin: persistencePlugin,\n        serializableCache: serializableCache\n    }: ClientConfiguration): CommonClientConfiguration {\n\n    const loggerOptions = { ...DEFAULT_LOGGER_IMPLEMENTATION, ...userLoggerOption };\n\n    return {\n        authOptions: buildAuthOptions(userAuthOptions),\n        systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\n        loggerOptions: loggerOptions,\n        storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION),\n        networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\n        cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\n        clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\n        libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\n        telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\n        serverTelemetryManager: serverTelemetryManager || null,\n        persistencePlugin: persistencePlugin || null,\n        serializableCache: serializableCache || null\n    };\n}\n\n/**\n * Construct authoptions from the client and platform passed values\n * @param authOptions\n */\nfunction buildAuthOptions(authOptions: AuthOptions): Required<AuthOptions> {\n    return {\n        clientCapabilities: [],\n        azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\n        ...authOptions\n    };\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError\";\n\n/**\n * Error thrown when there is an error with the server code, for example, unavailability.\n */\nexport class ServerError extends AuthError {\n\n    constructor(errorCode?: string, errorMessage?: string, subError?: string) {\n        super(errorCode, errorMessage, subError);\n        this.name = \"ServerError\";\n\n        Object.setPrototypeOf(this, ServerError.prototype);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { NetworkResponse } from \"./NetworkManager\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\nimport { HeaderNames, CacheSchemaType, ThrottlingConstants, Constants } from \"../utils/Constants\";\nimport { CacheManager } from \"../cache/CacheManager\";\nimport { ServerError } from \"../error/ServerError\";\nimport { RequestThumbprint } from \"./RequestThumbprint\";\nimport { ThrottlingEntity } from \"../cache/entities/ThrottlingEntity\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\n\nexport class ThrottlingUtils {\n\n    /**\n     * Prepares a RequestThumbprint to be stored as a key.\n     * @param thumbprint\n     */\n    static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string {\n        return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\n    }\n\n    /**\n     * Performs necessary throttling checks before a network request.\n     * @param cacheManager\n     * @param thumbprint\n     */\n    static preProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint): void {\n        const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\n        const value = cacheManager.getThrottlingCache(key);\n\n        if (value) {\n            if (value.throttleTime < Date.now()) {\n                cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\n                return;\n            }\n            throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\n        }\n    }\n\n    /**\n     * Performs necessary throttling checks after a network request.\n     * @param cacheManager\n     * @param thumbprint\n     * @param response\n     */\n    static postProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint, response: NetworkResponse<ServerAuthorizationTokenResponse>): void {\n        if (ThrottlingUtils.checkResponseStatus(response) || ThrottlingUtils.checkResponseForRetryAfter(response)) {\n            const thumbprintValue: ThrottlingEntity = {\n                throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\n                error: response.body.error,\n                errorCodes: response.body.error_codes,\n                errorMessage: response.body.error_description,\n                subError: response.body.suberror\n            };\n            cacheManager.setThrottlingCache(\n                ThrottlingUtils.generateThrottlingStorageKey(thumbprint),\n                thumbprintValue\n            );\n        }\n    }\n\n    /**\n     * Checks a NetworkResponse object's status codes against 429 or 5xx\n     * @param response\n     */\n    static checkResponseStatus(response: NetworkResponse<ServerAuthorizationTokenResponse>): boolean {\n        return response.status === 429 || response.status >= 500 && response.status < 600;\n    }\n\n    /**\n     * Checks a NetworkResponse object's RetryAfter header\n     * @param response\n     */\n    static checkResponseForRetryAfter(response: NetworkResponse<ServerAuthorizationTokenResponse>): boolean {\n        if (response.headers) {\n            return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300);\n        }\n        return false;\n    }\n\n    /**\n     * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\n     * @param throttleTime\n     */\n    static calculateThrottleTime(throttleTime: number): number {\n        const time = throttleTime <= 0 ? 0 : throttleTime;\n\n        const currentSeconds = Date.now() / 1000;\n        return Math.floor(Math.min(\n            currentSeconds + (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS),\n            currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS\n        ) * 1000);\n    }\n\n    static removeThrottle(cacheManager: CacheManager, clientId: string, request: BaseAuthRequest, homeAccountIdentifier?: string): boolean {\n        const thumbprint: RequestThumbprint = {\n            clientId: clientId,\n            authority: request.authority,\n            scopes: request.scopes,\n            homeAccountIdentifier: homeAccountIdentifier,\n            claims: request.claims,\n            authenticationScheme: request.authenticationScheme,\n            resourceRequestMethod: request.resourceRequestMethod,\n            resourceRequestUri: request.resourceRequestUri,\n            shrClaims: request.shrClaims,\n            sshKid: request.sshKid\n        };\n\n        const key = this.generateThrottlingStorageKey(thumbprint);\n        return cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, NetworkRequestOptions } from \"./INetworkModule\";\nimport { RequestThumbprint } from \"./RequestThumbprint\";\nimport { ThrottlingUtils } from \"./ThrottlingUtils\";\nimport { CacheManager } from \"../cache/CacheManager\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { AuthError } from \"../error/AuthError\";\n\nexport type NetworkResponse<T> = {\n    headers: Record<string, string>;\n    body: T;\n    status: number;\n};\n\nexport class NetworkManager {\n    private networkClient: INetworkModule;\n    private cacheManager: CacheManager;\n\n    constructor(networkClient: INetworkModule, cacheManager: CacheManager) {\n        this.networkClient = networkClient;\n        this.cacheManager = cacheManager;\n    }\n\n    /**\n     * Wraps sendPostRequestAsync with necessary preflight and postflight logic\n     * @param thumbprint\n     * @param tokenEndpoint\n     * @param options\n     */\n    async sendPostRequest<T>(thumbprint: RequestThumbprint, tokenEndpoint: string, options: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n        ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\n\n        let response;\n        try {\n            response = await this.networkClient.sendPostRequestAsync<T>(tokenEndpoint, options);\n        } catch (e) {\n            if (e instanceof AuthError) {\n                throw e;\n            } else {\n                throw ClientAuthError.createNetworkError(tokenEndpoint, e);\n            }\n        }\n\n        ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\n\n        return response;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport type CcsCredential = {\n    credential: string,\n    type: CcsCredentialType\n};\n\nexport enum CcsCredentialType {\n    HOME_ACCOUNT_ID = \"home_account_id\",\n    UPN = \"UPN\"\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientConfiguration, buildClientConfiguration, CommonClientConfiguration } from \"../config/ClientConfiguration\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { NetworkManager, NetworkResponse } from \"../network/NetworkManager\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { Authority } from \"../authority/Authority\";\nimport { Logger } from \"../logger/Logger\";\nimport { Constants, HeaderNames } from \"../utils/Constants\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\nimport { CacheManager } from \"../cache/CacheManager\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\nimport { version, name } from \"../packageMetadata\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { CcsCredential, CcsCredentialType } from \"../account/CcsCredential\";\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo\";\n\n/**\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\n */\nexport abstract class BaseClient {\n    // Logger object\n    public logger: Logger;\n\n    // Application config\n    protected config: CommonClientConfiguration;\n\n    // Crypto Interface\n    protected cryptoUtils: ICrypto;\n\n    // Storage Interface\n    protected cacheManager: CacheManager;\n\n    // Network Interface\n    protected networkClient: INetworkModule;\n\n    // Server Telemetry Manager\n    protected serverTelemetryManager: ServerTelemetryManager | null;\n\n    // Network Manager\n    protected networkManager: NetworkManager;\n\n    // Default authority object\n    public authority: Authority;\n\n    protected constructor(configuration: ClientConfiguration) {\n        // Set the configuration\n        this.config = buildClientConfiguration(configuration);\n\n        // Initialize the logger\n        this.logger = new Logger(this.config.loggerOptions, name, version);\n\n        // Initialize crypto\n        this.cryptoUtils = this.config.cryptoInterface;\n\n        // Initialize storage interface\n        this.cacheManager = this.config.storageInterface;\n\n        // Set the network interface\n        this.networkClient = this.config.networkInterface;\n\n        // Set the NetworkManager\n        this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\n\n        // Set TelemetryManager\n        this.serverTelemetryManager = this.config.serverTelemetryManager;\n\n        // set Authority\n        this.authority = this.config.authOptions.authority;\n    }\n\n    /**\n     * Creates default headers for requests to token endpoint\n     */\n    protected createTokenRequestHeaders(ccsCred?: CcsCredential): Record<string, string> {\n        const headers: Record<string, string> = {};\n        headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\n\n        if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\n            switch (ccsCred.type) {\n                case CcsCredentialType.HOME_ACCOUNT_ID:\n                    try {\n                        const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\n                        headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\n                    } catch (e) {\n                        this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\n                    }\n                    break;\n                case CcsCredentialType.UPN:\n                    headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\n                    break;\n            }\n        }\n        return headers;\n    }\n\n    /**\n     * Http post to token endpoint\n     * @param tokenEndpoint\n     * @param queryString\n     * @param headers\n     * @param thumbprint\n     */\n    protected async executePostToTokenEndpoint(tokenEndpoint: string, queryString: string, headers: Record<string, string>, thumbprint: RequestThumbprint): Promise<NetworkResponse<ServerAuthorizationTokenResponse>> {\n        const response = await this.networkManager.sendPostRequest<ServerAuthorizationTokenResponse>(\n            thumbprint,\n            tokenEndpoint,\n            { body: queryString, headers: headers, proxyUrl: this.config.systemOptions.proxyUrl }\n        );\n\n        if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) {\n            // Telemetry data successfully logged by server, clear Telemetry cache\n            this.config.serverTelemetryManager.clearTelemetryCache();\n        }\n\n        return response;\n    }\n\n    /**\n     * Updates the authority object of the client. Endpoint discovery must be completed.\n     * @param updatedAuthority\n     */\n    updateAuthority(updatedAuthority: Authority): void {\n        if (!updatedAuthority.discoveryComplete()) {\n            throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Updated authority has not completed endpoint discovery.\");\n        }\n        this.authority = updatedAuthority;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { PromptValue, CodeChallengeMethodValues} from \"../utils/Constants\";\nimport { StringDict } from \"../utils/MsalTypes\";\n\n/**\n * Validates server consumable params from the \"request\" objects\n */\nexport class RequestValidator {\n\n    /**\n     * Utility to check if the `redirectUri` in the request is a non-null value\n     * @param redirectUri\n     */\n    static validateRedirectUri(redirectUri: string) : void {\n        if (StringUtils.isEmpty(redirectUri)) {\n            throw ClientConfigurationError.createRedirectUriEmptyError();\n        }\n    }\n\n    /**\n     * Utility to validate prompt sent by the user in the request\n     * @param prompt\n     */\n    static validatePrompt(prompt: string) : void {\n        const promptValues = [];\n\n        for (const value in PromptValue) {\n            promptValues.push(PromptValue[value]);\n        }\n\n        if (promptValues.indexOf(prompt) < 0) {\n            throw ClientConfigurationError.createInvalidPromptError(prompt);\n        }\n    }\n\n    static validateClaims(claims: string) : void {\n        try {\n            JSON.parse(claims);\n        } catch(e) {\n            throw ClientConfigurationError.createInvalidClaimsRequestError();\n        }\n    }\n\n    /**\n     * Utility to validate code_challenge and code_challenge_method\n     * @param codeChallenge\n     * @param codeChallengeMethod\n     */\n    static validateCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string) : void  {\n        if (StringUtils.isEmpty(codeChallenge) || StringUtils.isEmpty(codeChallengeMethod)) {\n            throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\n        } else {\n            this.validateCodeChallengeMethod(codeChallengeMethod);\n        }\n    }\n\n    /**\n     * Utility to validate code_challenge_method\n     * @param codeChallengeMethod\n     */\n    static validateCodeChallengeMethod(codeChallengeMethod: string) : void {\n        if (\n            [\n                CodeChallengeMethodValues.PLAIN,\n                CodeChallengeMethodValues.S256\n            ].indexOf(codeChallengeMethod) < 0\n        ) {\n            throw ClientConfigurationError.createInvalidCodeChallengeMethodError();\n        }\n    }\n\n    /**\n     * Removes unnecessary or duplicate query parameters from extraQueryParameters\n     * @param request\n     */\n    static sanitizeEQParams(eQParams: StringDict, queryParams: Map<string, string>) : StringDict {\n        if (!eQParams) {\n            return {};\n        }\n\n        // Remove any query parameters already included in SSO params\n        queryParams.forEach((value, key) => {\n            if (eQParams[key]) {\n                delete eQParams[key];\n            }\n        });\n\n        return eQParams;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AADServerParamKeys, Constants, ResponseMode, SSOTypes, CLIENT_INFO, AuthenticationScheme, ClaimsRequestKeys, PasswordGrantConstants, OIDC_DEFAULT_SCOPES, ThrottlingConstants, HeaderNames} from \"../utils/Constants\";\nimport { ScopeSet } from \"./ScopeSet\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { StringDict } from \"../utils/MsalTypes\";\nimport { RequestValidator } from \"./RequestValidator\";\nimport { ApplicationTelemetry, LibraryInfo } from \"../config/ClientConfiguration\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\nimport { ClientInfo } from \"../account/ClientInfo\";\n\nexport class RequestParameterBuilder {\n\n    private parameters: Map<string, string>;\n\n    constructor() {\n        this.parameters = new Map<string, string>();\n    }\n\n    /**\n     * add response_type = code\n     */\n    addResponseTypeCode(): void {\n        this.parameters.set(\n            AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)\n        );\n    }\n\n    /**\n     * add response_type = token id_token\n     */\n    addResponseTypeForTokenAndIdToken(): void {\n        this.parameters.set(\n            AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`)\n        );\n    }\n\n    /**\n     * add response_mode. defaults to query.\n     * @param responseMode\n     */\n    addResponseMode(responseMode?: ResponseMode): void {\n        this.parameters.set(\n            AADServerParamKeys.RESPONSE_MODE,\n            encodeURIComponent((responseMode) ? responseMode : ResponseMode.QUERY)\n        );\n    }\n\n    /**\n     * Add flag to indicate STS should attempt to use WAM if available\n     */\n    addNativeBroker(): void {\n        this.parameters.set(\n            AADServerParamKeys.NATIVE_BROKER,\n            encodeURIComponent(\"1\")\n        );\n    }\n\n    /**\n     * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\n     * @param scopeSet\n     * @param addOidcScopes\n     */\n    addScopes(scopes: string[], addOidcScopes: boolean = true): void {\n        const requestScopes = addOidcScopes ? [...scopes || [], ...OIDC_DEFAULT_SCOPES] : scopes || [];\n        const scopeSet = new ScopeSet(requestScopes);\n        this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));\n    }\n\n    /**\n     * add clientId\n     * @param clientId\n     */\n    addClientId(clientId: string): void {\n        this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));\n    }\n\n    /**\n     * add redirect_uri\n     * @param redirectUri\n     */\n    addRedirectUri(redirectUri: string): void {\n        RequestValidator.validateRedirectUri(redirectUri);\n        this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));\n    }\n\n    /**\n     * add post logout redirectUri\n     * @param redirectUri\n     */\n    addPostLogoutRedirectUri(redirectUri: string): void {\n        RequestValidator.validateRedirectUri(redirectUri);\n        this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));\n    }\n\n    /**\n     * add id_token_hint to logout request\n     * @param idTokenHint\n     */\n    addIdTokenHint(idTokenHint: string): void {\n        this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\n    }\n\n    /**\n     * add domain_hint\n     * @param domainHint\n     */\n    addDomainHint(domainHint: string): void {\n        this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));\n    }\n\n    /**\n     * add login_hint\n     * @param loginHint\n     */\n    addLoginHint(loginHint: string): void {\n        this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));\n    }\n\n    /**\n     * Adds the CCS (Cache Credential Service) query parameter for login_hint\n     * @param loginHint\n     */\n    addCcsUpn(loginHint: string): void {\n        this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`));\n    }\n\n    /**\n     * Adds the CCS (Cache Credential Service) query parameter for account object\n     * @param loginHint\n     */\n    addCcsOid(clientInfo: ClientInfo): void {\n        this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`));\n    }\n\n    /**\n     * add sid\n     * @param sid\n     */\n    addSid(sid: string): void {\n        this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));\n    }\n\n    /**\n     * add claims\n     * @param claims\n     */\n    addClaims(claims?: string, clientCapabilities?: Array<string>): void {\n        const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\n        RequestValidator.validateClaims(mergedClaims);\n        this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));\n    }\n\n    /**\n     * add correlationId\n     * @param correlationId\n     */\n    addCorrelationId(correlationId: string): void {\n        this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\n    }\n\n    /**\n     * add library info query params\n     * @param libraryInfo\n     */\n    addLibraryInfo(libraryInfo: LibraryInfo): void {\n        // Telemetry Info\n        this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\n        this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\n        if (libraryInfo.os) {\n            this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\n        }\n        if (libraryInfo.cpu) {\n            this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\n        }\n    }\n\n    /**\n     * Add client telemetry parameters\n     * @param appTelemetry\n     */\n    addApplicationTelemetry(appTelemetry: ApplicationTelemetry): void {\n        if (appTelemetry?.appName) {\n            this.parameters.set(AADServerParamKeys.X_APP_NAME, appTelemetry.appName);\n        }\n\n        if (appTelemetry?.appVersion) {\n            this.parameters.set(AADServerParamKeys.X_APP_VER, appTelemetry.appVersion);\n        }\n    }\n\n    /**\n     * add prompt\n     * @param prompt\n     */\n    addPrompt(prompt: string): void {\n        RequestValidator.validatePrompt(prompt);\n        this.parameters.set(`${AADServerParamKeys.PROMPT}`, encodeURIComponent(prompt));\n    }\n\n    /**\n     * add state\n     * @param state\n     */\n    addState(state: string): void {\n        if (!StringUtils.isEmpty(state)) {\n            this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));\n        }\n    }\n\n    /**\n     * add nonce\n     * @param nonce\n     */\n    addNonce(nonce: string): void {\n        this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));\n    }\n\n    /**\n     * add code_challenge and code_challenge_method\n     * - throw if either of them are not passed\n     * @param codeChallenge\n     * @param codeChallengeMethod\n     */\n    addCodeChallengeParams(\n        codeChallenge: string,\n        codeChallengeMethod: string\n    ): void {\n        RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\n        if (codeChallenge && codeChallengeMethod) {\n            this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));\n            this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\n        } else {\n            throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\n        }\n    }\n\n    /**\n     * add the `authorization_code` passed by the user to exchange for a token\n     * @param code\n     */\n    addAuthorizationCode(code: string): void {\n        this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\n    }\n\n    /**\n     * add the `authorization_code` passed by the user to exchange for a token\n     * @param code\n     */\n    addDeviceCode(code: string): void {\n        this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));\n    }\n\n    /**\n     * add the `refreshToken` passed by the user\n     * @param refreshToken\n     */\n    addRefreshToken(refreshToken: string): void {\n        this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));\n    }\n\n    /**\n     * add the `code_verifier` passed by the user to exchange for a token\n     * @param codeVerifier\n     */\n    addCodeVerifier(codeVerifier: string): void {\n        this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));\n    }\n\n    /**\n     * add client_secret\n     * @param clientSecret\n     */\n    addClientSecret(clientSecret: string): void {\n        this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));\n    }\n\n    /**\n     * add clientAssertion for confidential client flows\n     * @param clientAssertion\n     */\n    addClientAssertion(clientAssertion: string): void {\n        this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\n    }\n\n    /**\n     * add clientAssertionType for confidential client flows\n     * @param clientAssertionType\n     */\n    addClientAssertionType(clientAssertionType: string): void {\n        this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\n    }\n\n    /**\n     * add OBO assertion for confidential client flows\n     * @param clientAssertion\n     */\n    addOboAssertion(oboAssertion: string): void {\n        this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));\n    }\n\n    /**\n     * add grant type\n     * @param grantType\n     */\n    addRequestTokenUse(tokenUse: string): void {\n        this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\n    }\n\n    /**\n     * add grant type\n     * @param grantType\n     */\n    addGrantType(grantType: string): void {\n        this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));\n    }\n\n    /**\n     * add client info\n     *\n     */\n    addClientInfo(): void {\n        this.parameters.set(CLIENT_INFO, \"1\");\n    }\n\n    /**\n     * add extraQueryParams\n     * @param eQparams\n     */\n    addExtraQueryParameters(eQparams: StringDict): void {\n        RequestValidator.sanitizeEQParams(eQparams, this.parameters);\n        Object.keys(eQparams).forEach((key) => {\n            this.parameters.set(key, eQparams[key]);\n        });\n    }\n\n    addClientCapabilitiesToClaims(claims?: string, clientCapabilities?: Array<string>): string {\n        let mergedClaims: object;\n\n        // Parse provided claims into JSON object or initialize empty object\n        if (!claims) {\n            mergedClaims = {};\n        } else {\n            try {\n                mergedClaims = JSON.parse(claims);\n            } catch(e) {\n                throw ClientConfigurationError.createInvalidClaimsRequestError();\n            }\n        }\n\n        if (clientCapabilities && clientCapabilities.length > 0) {\n            if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)){\n                // Add access_token key to claims object\n                mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\n            }\n\n            // Add xms_cc claim with provided clientCapabilities to access_token key\n            mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\n                values: clientCapabilities\n            };\n        }\n\n        return JSON.stringify(mergedClaims);\n    }\n\n    /**\n     * adds `username` for Password Grant flow\n     * @param username\n     */\n    addUsername(username: string): void {\n        this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));\n    }\n\n    /**\n     * adds `password` for Password Grant flow\n     * @param password\n     */\n    addPassword(password: string): void {\n        this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));\n    }\n\n    /**\n     * add pop_jwk to query params\n     * @param cnfString\n     */\n    addPopToken(cnfString: string): void {\n        if (!StringUtils.isEmpty(cnfString)) {\n            this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\n            this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));\n        }\n    }\n\n    /**\n     * add SSH JWK and key ID to query params\n     */\n    addSshJwk(sshJwkString: string): void {\n        if(!StringUtils.isEmpty(sshJwkString)) {\n            this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.SSH);\n            this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(sshJwkString));\n        }\n    }\n\n    /**\n     * add server telemetry fields\n     * @param serverTelemetryManager\n     */\n    addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void {\n        this.parameters.set(AADServerParamKeys.X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\n        this.parameters.set(AADServerParamKeys.X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\n    }\n\n    /**\n     * Adds parameter that indicates to the server that throttling is supported\n     */\n    addThrottling(): void {\n        this.parameters.set(AADServerParamKeys.X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\n    }\n\n    /**\n     * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\n     */\n    addLogoutHint(logoutHint: string): void {\n        this.parameters.set(AADServerParamKeys.LOGOUT_HINT, encodeURIComponent(logoutHint));\n    }\n\n    /**\n     * Utility to create a URL from the params map\n     */\n    createQueryString(): string {\n        const queryParameterArray: Array<string> = new Array<string>();\n\n        this.parameters.forEach((value, key) => {\n            queryParameterArray.push(`${key}=${value}`);\n        });\n\n        return queryParameterArray.join(\"&\");\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CredentialEntity } from \"./CredentialEntity\";\nimport { CredentialType } from \"../../utils/Constants\";\n\n/**\n * ID_TOKEN Cache\n *\n * Key:Value Schema:\n *\n * Key Example: uid.utid-login.microsoftonline.com-idtoken-clientId-contoso.com-\n *\n * Value Schema:\n * {\n *      homeAccountId: home account identifier for the auth scheme,\n *      environment: entity that issued the token, represented as a full host\n *      credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n *      clientId: client ID of the application\n *      secret: Actual credential as a string\n *      realm: Full tenant or organizational identifier that the account belongs to\n * }\n */\nexport class IdTokenEntity extends CredentialEntity {\n    realm: string;\n\n    /**\n     * Create IdTokenEntity\n     * @param homeAccountId\n     * @param authenticationResult\n     * @param clientId\n     * @param authority\n     */\n    static createIdTokenEntity(\n        homeAccountId: string,\n        environment: string,\n        idToken: string,\n        clientId: string,\n        tenantId: string,\n        oboAssertion?: string\n    ): IdTokenEntity {\n        const idTokenEntity = new IdTokenEntity();\n\n        idTokenEntity.credentialType = CredentialType.ID_TOKEN;\n        idTokenEntity.homeAccountId = homeAccountId;\n        idTokenEntity.environment = environment;\n        idTokenEntity.clientId = clientId;\n        idTokenEntity.secret = idToken;\n        idTokenEntity.realm = tenantId;\n        idTokenEntity.oboAssertion = oboAssertion;\n\n        return idTokenEntity;\n    }\n\n    /**\n     * Validates an entity: checks for all expected params\n     * @param entity\n     */\n    static isIdTokenEntity(entity: object): boolean {\n\n        if (!entity) {\n            return false;\n        }\n\n        return (\n            entity.hasOwnProperty(\"homeAccountId\") &&\n            entity.hasOwnProperty(\"environment\") &&\n            entity.hasOwnProperty(\"credentialType\") &&\n            entity.hasOwnProperty(\"realm\") &&\n            entity.hasOwnProperty(\"clientId\") &&\n            entity.hasOwnProperty(\"secret\") &&\n            entity[\"credentialType\"] === CredentialType.ID_TOKEN\n        );\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Utility class which exposes functions for managing date and time operations.\n */\nexport class TimeUtils {\n\n    /**\n     * return the current time in Unix time (seconds).\n     */\n    static nowSeconds(): number {\n        // Date.getTime() returns in milliseconds.\n        return Math.round(new Date().getTime() / 1000.0);\n    }\n    \n    /**\n     * check if a token is expired based on given UTC time in seconds.\n     * @param expiresOn\n     */\n    static isTokenExpired(expiresOn: string, offset: number): boolean {\n        // check for access token expiry\n        const expirationSec = Number(expiresOn) || 0;\n        const offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset;\n\n        // If current time + offset is greater than token expiration time, then token is expired.\n        return (offsetCurrentTimeSec > expirationSec);\n    }\n\n    /**\n     * If the current time is earlier than the time that a token was cached at, we must discard the token\n     * i.e. The system clock was turned back after acquiring the cached token\n     * @param cachedAt \n     * @param offset \n     */\n    static wasClockTurnedBack(cachedAt: string): boolean {\n        const cachedAtSec = Number(cachedAt);\n\n        return cachedAtSec > TimeUtils.nowSeconds();\n    }\n\n    /**\n     * Waits for t number of milliseconds\n     * @param t number\n     * @param value T\n     */\n    static delay<T>(t: number, value?: T): Promise<T | void> {\n        return new Promise((resolve) => setTimeout(() => resolve(value), t));\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CredentialEntity } from \"./CredentialEntity\";\nimport { CredentialType, AuthenticationScheme } from \"../../utils/Constants\";\nimport { TimeUtils } from \"../../utils/TimeUtils\";\nimport { StringUtils } from \"../../utils/StringUtils\";\nimport { ICrypto } from \"../../crypto/ICrypto\";\nimport { TokenClaims } from \"../../account/TokenClaims\";\nimport { AuthToken } from \"../../account/AuthToken\";\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\n\n/**\n * ACCESS_TOKEN Credential Type\n *\n * Key:Value Schema:\n *\n * Key Example: uid.utid-login.microsoftonline.com-accesstoken-clientId-contoso.com-user.read\n *\n * Value Schema:\n * {\n *      homeAccountId: home account identifier for the auth scheme,\n *      environment: entity that issued the token, represented as a full host\n *      credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n *      clientId: client ID of the application\n *      secret: Actual credential as a string\n *      familyId: Family ID identifier, usually only used for refresh tokens\n *      realm: Full tenant or organizational identifier that the account belongs to\n *      target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\n *      cachedAt: Absolute device time when entry was created in the cache.\n *      expiresOn: Token expiry time, calculated based on current UTC time in seconds. Represented as a string.\n *      extendedExpiresOn: Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds.\n *      keyId: used for POP and SSH tokenTypes\n *      tokenType: Type of the token issued. Usually \"Bearer\"\n * }\n */\nexport class AccessTokenEntity extends CredentialEntity {\n    realm: string;\n    target: string;\n    cachedAt: string;\n    expiresOn: string;\n    extendedExpiresOn?: string;\n    refreshOn?: string;\n    keyId?: string; // for POP and SSH tokenTypes\n    tokenType?: AuthenticationScheme;\n    requestedClaims?: string;\n    requestedClaimsHash?: string;\n\n    /**\n     * Create AccessTokenEntity\n     * @param homeAccountId\n     * @param environment\n     * @param accessToken\n     * @param clientId\n     * @param tenantId\n     * @param scopes\n     * @param expiresOn\n     * @param extExpiresOn\n     */\n    static createAccessTokenEntity(\n        homeAccountId: string,\n        environment: string,\n        accessToken: string,\n        clientId: string,\n        tenantId: string,\n        scopes: string,\n        expiresOn: number,\n        extExpiresOn: number,\n        cryptoUtils: ICrypto,\n        refreshOn?: number,\n        tokenType?: AuthenticationScheme,\n        oboAssertion?: string,\n        keyId?: string,\n        requestedClaims?: string,\n        requestedClaimsHash?: string \n    ): AccessTokenEntity {\n        const atEntity: AccessTokenEntity = new AccessTokenEntity();\n\n        atEntity.homeAccountId = homeAccountId;\n        atEntity.credentialType = CredentialType.ACCESS_TOKEN;\n        atEntity.secret = accessToken;\n\n        const currentTime = TimeUtils.nowSeconds();\n        atEntity.cachedAt = currentTime.toString();\n\n        /*\n         * Token expiry time.\n         * This value should be  calculated based on the current UTC time measured locally and the value  expires_in Represented as a string in JSON.\n         */\n        atEntity.expiresOn = expiresOn.toString();\n        atEntity.extendedExpiresOn = extExpiresOn.toString();\n        if (refreshOn) {\n            atEntity.refreshOn = refreshOn.toString();\n        }\n\n        atEntity.environment = environment;\n        atEntity.clientId = clientId;\n        atEntity.realm = tenantId;\n        atEntity.target = scopes;\n        atEntity.oboAssertion = oboAssertion;\n\n        atEntity.tokenType = StringUtils.isEmpty(tokenType) ? AuthenticationScheme.BEARER : tokenType;\n\n        if (requestedClaims) {\n            atEntity.requestedClaims = requestedClaims;\n            atEntity.requestedClaimsHash = requestedClaimsHash;\n        }\n\n        /*\n         * Create Access Token With Auth Scheme instead of regular access token\n         * Cast to lower to handle \"bearer\" from ADFS\n         */\n        if (atEntity.tokenType?.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) {\n            atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\n            switch (atEntity.tokenType) {\n                case AuthenticationScheme.POP:\n                    // Make sure keyId is present and add it to credential\n                    const tokenClaims: TokenClaims | null = AuthToken.extractTokenClaims(accessToken, cryptoUtils);\n                    if (!tokenClaims?.cnf?.kid) {\n                        throw ClientAuthError.createTokenClaimsRequiredError();\n                    }\n                    atEntity.keyId = tokenClaims.cnf.kid;\n                    break;\n                case AuthenticationScheme.SSH:\n                    atEntity.keyId = keyId;\n            }\n        }\n\n        return atEntity;\n    }\n\n    /**\n     * Validates an entity: checks for all expected params\n     * @param entity\n     */\n    static isAccessTokenEntity(entity: object): boolean {\n\n        if (!entity) {\n            return false;\n        }\n\n        return (\n            entity.hasOwnProperty(\"homeAccountId\") &&\n            entity.hasOwnProperty(\"environment\") &&\n            entity.hasOwnProperty(\"credentialType\") &&\n            entity.hasOwnProperty(\"realm\") &&\n            entity.hasOwnProperty(\"clientId\") &&\n            entity.hasOwnProperty(\"secret\") &&\n            entity.hasOwnProperty(\"target\") &&\n            (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN || entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)\n        );\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CredentialEntity } from \"./CredentialEntity\";\nimport { CredentialType } from \"../../utils/Constants\";\n\n/**\n * REFRESH_TOKEN Cache\n *\n * Key:Value Schema:\n *\n * Key Example: uid.utid-login.microsoftonline.com-refreshtoken-clientId--\n *\n * Value:\n * {\n *      homeAccountId: home account identifier for the auth scheme,\n *      environment: entity that issued the token, represented as a full host\n *      credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n *      clientId: client ID of the application\n *      secret: Actual credential as a string\n *      familyId: Family ID identifier, '1' represents Microsoft Family\n *      realm: Full tenant or organizational identifier that the account belongs to\n *      target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\n * }\n */\nexport class RefreshTokenEntity extends CredentialEntity {\n    familyId?: string;\n\n    /**\n     * Create RefreshTokenEntity\n     * @param homeAccountId\n     * @param authenticationResult\n     * @param clientId\n     * @param authority\n     */\n    static createRefreshTokenEntity(\n        homeAccountId: string,\n        environment: string,\n        refreshToken: string,\n        clientId: string,\n        familyId?: string,\n        oboAssertion?: string\n    ): RefreshTokenEntity {\n        const rtEntity = new RefreshTokenEntity();\n\n        rtEntity.clientId = clientId;\n        rtEntity.credentialType = CredentialType.REFRESH_TOKEN;\n        rtEntity.environment = environment;\n        rtEntity.homeAccountId = homeAccountId;\n        rtEntity.secret = refreshToken;\n        rtEntity.oboAssertion = oboAssertion;\n\n        if (familyId)\n            rtEntity.familyId = familyId;\n\n        return rtEntity;\n    }\n\n    /**\n     * Validates an entity: checks for all expected params\n     * @param entity\n     */\n    static isRefreshTokenEntity(entity: object): boolean {\n\n        if (!entity) {\n            return false;\n        }\n\n        return (\n            entity.hasOwnProperty(\"homeAccountId\") &&\n            entity.hasOwnProperty(\"environment\") &&\n            entity.hasOwnProperty(\"credentialType\") &&\n            entity.hasOwnProperty(\"clientId\") &&\n            entity.hasOwnProperty(\"secret\") &&\n            entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN\n        );\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError\";\n\n/**\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\n */\nexport const InteractionRequiredServerErrorMessage = [\n    \"interaction_required\",\n    \"consent_required\",\n    \"login_required\"\n];\n\nexport const InteractionRequiredAuthSubErrorMessage = [\n    \"message_only\",\n    \"additional_action\",\n    \"basic_action\",\n    \"user_password_expired\",\n    \"consent_required\"\n];\n\n/**\n * Interaction required errors defined by the SDK\n */\nexport const InteractionRequiredAuthErrorMessage = {\n    noTokensFoundError: {\n        code: \"no_tokens_found\",\n        desc: \"No refresh token found in the cache. Please sign-in.\"\n    }\n};\n\n/**\n * Error thrown when user interaction is required.\n */\nexport class InteractionRequiredAuthError extends AuthError {\n\n    constructor(errorCode?: string, errorMessage?: string, subError?: string) {\n        super(errorCode, errorMessage, subError);\n        this.name = \"InteractionRequiredAuthError\";\n\n        Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\n    }\n\n    /**\n     * Helper function used to determine if an error thrown by the server requires interaction to resolve\n     * @param errorCode \n     * @param errorString \n     * @param subError \n     */\n    static isInteractionRequiredError(errorCode?: string, errorString?: string, subError?: string) : boolean {\n        const isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\n        const isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\n        const isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredServerErrorMessage.some((irErrorCode) => {\n            return errorString.indexOf(irErrorCode) > -1;\n        });\n\n        return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError;\n    }\n\n    /**\n     * Creates an error thrown when the authorization code required for a token request is null or empty.\n     */\n    static createNoTokensFoundError(): InteractionRequiredAuthError {\n        return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.noTokensFoundError.code, InteractionRequiredAuthErrorMessage.noTokensFoundError.desc);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IdTokenEntity } from \"./IdTokenEntity\";\nimport { AccessTokenEntity } from \"./AccessTokenEntity\";\nimport { RefreshTokenEntity } from \"./RefreshTokenEntity\";\nimport { AccountEntity } from \"./AccountEntity\";\nimport { AppMetadataEntity } from \"./AppMetadataEntity\";\n\nexport class CacheRecord {\n    account: AccountEntity | null;\n    idToken: IdTokenEntity | null;\n    accessToken: AccessTokenEntity | null;\n    refreshToken: RefreshTokenEntity | null;\n    appMetadata: AppMetadataEntity | null;\n\n    constructor(accountEntity?: AccountEntity | null, idTokenEntity?: IdTokenEntity | null, accessTokenEntity?: AccessTokenEntity | null, refreshTokenEntity?: RefreshTokenEntity | null, appMetadataEntity?: AppMetadataEntity | null) {\n        this.account = accountEntity || null;\n        this.idToken = idTokenEntity || null;\n        this.accessToken = accessTokenEntity || null;\n        this.refreshToken = refreshTokenEntity || null;\n        this.appMetadata = appMetadataEntity || null;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StringUtils } from \"./StringUtils\";\nimport { Constants } from \"./Constants\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\n\n/**\n * Type which defines the object that is stringified, encoded and sent in the state value.\n * Contains the following:\n * - id - unique identifier for this request\n * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly.\n * - platformState - string value sent from the platform.\n */\nexport type LibraryStateObject = {\n    id: string,\n    meta?: Record<string, string>\n};\n\n/**\n * Type which defines the stringified and encoded object sent to the service in the authorize request.\n */\nexport type RequestStateObject = {\n    userRequestState: string,\n    libraryState: LibraryStateObject\n};\n\n/**\n * Class which provides helpers for OAuth 2.0 protocol specific values\n */\nexport class ProtocolUtils {\n\n    /**\n     * Appends user state with random guid, or returns random guid.\n     * @param userState \n     * @param randomGuid \n     */\n    static setRequestState(cryptoObj: ICrypto, userState?: string, meta?: Record<string, string>): string {\n        const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\n        return !StringUtils.isEmpty(userState) ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` : libraryState;\n    }\n\n    /**\n     * Generates the state value used by the common library.\n     * @param randomGuid \n     * @param cryptoObj \n     */\n    static generateLibraryState(cryptoObj: ICrypto, meta?: Record<string, string>): string {\n        if (!cryptoObj) {\n            throw ClientAuthError.createNoCryptoObjectError(\"generateLibraryState\");\n        }\n\n        // Create a state object containing a unique id and the timestamp of the request creation\n        const stateObj: LibraryStateObject = {\n            id: cryptoObj.createNewGuid()\n        };\n\n        if (meta) {\n            stateObj.meta = meta;\n        }\n\n        const stateString = JSON.stringify(stateObj);\n\n        return cryptoObj.base64Encode(stateString);\n    }\n\n    /**\n     * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\n     * @param state \n     * @param cryptoObj \n     */\n    static parseRequestState(cryptoObj: ICrypto, state: string): RequestStateObject {\n        if (!cryptoObj) {\n            throw ClientAuthError.createNoCryptoObjectError(\"parseRequestState\");\n        }\n\n        if (StringUtils.isEmpty(state)) {\n            throw ClientAuthError.createInvalidStateError(state, \"Null, undefined or empty state\");\n        }\n\n        try {\n            // Split the state between library state and user passed state and decode them separately\n            const splitState = state.split(Constants.RESOURCE_DELIM);\n            const libraryState = splitState[0];\n            const userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : Constants.EMPTY_STRING;\n            const libraryStateString = cryptoObj.base64Decode(libraryState);\n            const libraryStateObj = JSON.parse(libraryStateString) as LibraryStateObject;\n            return {\n                userRequestState: !StringUtils.isEmpty(userState) ? userState : Constants.EMPTY_STRING,\n                libraryState: libraryStateObj\n            };\n        } catch(e) {\n            throw ClientAuthError.createInvalidStateError(state, e);\n        }\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { IUri } from \"./IUri\";\nimport { AADAuthorityConstants, Constants } from \"../utils/Constants\";\n\n/**\n * Url object class which can perform various transformations on url strings.\n */\nexport class UrlString {\n\n    // internal url string field\n    private _urlString: string;\n    public get urlString(): string {\n        return this._urlString;\n    }\n\n    constructor(url: string) {\n        this._urlString = url;\n        if (StringUtils.isEmpty(this._urlString)) {\n            // Throws error if url is empty\n            throw ClientConfigurationError.createUrlEmptyError();\n        }\n\n        if (StringUtils.isEmpty(this.getHash())) {\n            this._urlString = UrlString.canonicalizeUri(url);\n        }\n    }\n\n    /**\n     * Ensure urls are lower case and end with a / character.\n     * @param url\n     */\n    static canonicalizeUri(url: string): string {\n        if (url) {\n            let lowerCaseUrl = url.toLowerCase();\n\n            if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\n                lowerCaseUrl = lowerCaseUrl.slice(0, -1);\n            } else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\n                lowerCaseUrl = lowerCaseUrl.slice(0, -2);\n            }\n\n            if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\n                lowerCaseUrl += \"/\";\n            }\n\n            return lowerCaseUrl;\n        }\n\n        return url;\n    }\n\n    /**\n     * Throws if urlString passed is not a valid authority URI string.\n     */\n    validateAsUri(): void {\n        // Attempts to parse url for uri components\n        let components;\n        try {\n            components = this.getUrlComponents();\n        } catch (e) {\n            throw ClientConfigurationError.createUrlParseError(e);\n        }\n\n        // Throw error if URI or path segments are not parseable.\n        if (!components.HostNameAndPort || !components.PathSegments) {\n            throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\n        }\n\n        // Throw error if uri is insecure.\n        if(!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\n            throw ClientConfigurationError.createInsecureAuthorityUriError(this.urlString);\n        }\n    }\n\n    /**\n     * Given a url and a query string return the url with provided query string appended\n     * @param url\n     * @param queryString\n     */\n    static appendQueryString(url: string, queryString: string): string {\n        if (StringUtils.isEmpty(queryString)) {\n            return url;\n        }\n\n        return url.indexOf(\"?\") < 0 ? `${url}?${queryString}` : `${url}&${queryString}`;\n    }\n\n    /**\n     * Returns a url with the hash removed\n     * @param url\n     */\n    static removeHashFromUrl(url: string): string {\n        return UrlString.canonicalizeUri(url.split(\"#\")[0]);\n    }\n\n    /**\n     * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\n     * @param href The url\n     * @param tenantId The tenant id to replace\n     */\n    replaceTenantPath(tenantId: string): UrlString {\n        const urlObject = this.getUrlComponents();\n        const pathArray = urlObject.PathSegments;\n        if (tenantId && (pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS))) {\n            pathArray[0] = tenantId;\n        }\n        return UrlString.constructAuthorityUriFromObject(urlObject);\n    }\n\n    /**\n     * Returns the anchor part(#) of the URL\n     */\n    getHash(): string {\n        return UrlString.parseHash(this.urlString);\n    }\n\n    /**\n     * Parses out the components from a url string.\n     * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\n     */\n    getUrlComponents(): IUri {\n        // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\n        const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\n\n        // If url string does not match regEx, we throw an error\n        const match = this.urlString.match(regEx);\n        if (!match) {\n            throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\n        }\n\n        // Url component object\n        const urlComponents = {\n            Protocol: match[1],\n            HostNameAndPort: match[4],\n            AbsolutePath: match[5],\n            QueryString: match[7]\n        } as IUri;\n\n        let pathSegments = urlComponents.AbsolutePath.split(\"/\");\n        pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\n        urlComponents.PathSegments = pathSegments;\n\n        if (!StringUtils.isEmpty(urlComponents.QueryString) && urlComponents.QueryString.endsWith(\"/\")) {\n            urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length-1);\n        }\n        return urlComponents;\n    }\n\n    static getDomainFromUrl(url: string): string {\n        const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\n\n        const match = url.match(regEx);\n\n        if (!match) {\n            throw ClientConfigurationError.createUrlParseError(`Given url string: ${url}`);\n        }\n\n        return match[2];\n    }\n\n    static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string {\n        if (relativeUrl[0] === Constants.FORWARD_SLASH) {\n            const url = new UrlString(baseUrl);\n            const baseComponents = url.getUrlComponents();\n\n            return baseComponents.Protocol + \"//\" + baseComponents.HostNameAndPort + relativeUrl;\n        }\n\n        return relativeUrl;\n    }\n\n    /**\n     * Parses hash string from given string. Returns empty string if no hash symbol is found.\n     * @param hashString\n     */\n    static parseHash(hashString: string): string {\n        const hashIndex1 = hashString.indexOf(\"#\");\n        const hashIndex2 = hashString.indexOf(\"#/\");\n        if (hashIndex2 > -1) {\n            return hashString.substring(hashIndex2 + 2);\n        } else if (hashIndex1 > -1) {\n            return hashString.substring(hashIndex1 + 1);\n        }\n        return Constants.EMPTY_STRING;\n    }\n\n    static constructAuthorityUriFromObject(urlObject: IUri): UrlString {\n        return new UrlString(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + urlObject.PathSegments.join(\"/\"));\n    }\n\n    /**\n     * Returns URL hash as server auth code response object.\n     */\n    static getDeserializedHash(hash: string): ServerAuthorizationCodeResponse {\n        // Check if given hash is empty\n        if (StringUtils.isEmpty(hash)) {\n            return {};\n        }\n        // Strip the # symbol if present\n        const parsedHash = UrlString.parseHash(hash);\n        // If # symbol was not present, above will return empty string, so give original hash value\n        const deserializedHash: ServerAuthorizationCodeResponse = StringUtils.queryStringToObject<ServerAuthorizationCodeResponse>(StringUtils.isEmpty(parsedHash) ? hash : parsedHash);\n        // Check if deserialization didn't work\n        if (!deserializedHash) {\n            throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedHash));\n        }\n        return deserializedHash;\n    }\n\n    /**\n     * Check if the hash of the URL string contains known properties\n     */\n    static hashContainsKnownProperties(hash: string): boolean {\n        if (StringUtils.isEmpty(hash) || hash.indexOf(\"=\") < 0) {\n            // Hash doesn't contain key/value pairs\n            return false;\n        }\n\n        const parameters: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n        return !!(\n            parameters.code ||\n            parameters.error_description ||\n            parameters.error ||\n            parameters.state\n        );\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, SignedHttpRequestParameters } from \"./ICrypto\";\nimport { TimeUtils } from \"../utils/TimeUtils\";\nimport { UrlString } from \"../url/UrlString\";\n\n/**\n * See eSTS docs for more info.\n * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded.\n * -  xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values:\n *      - sw: software storage\n *      - uhw: hardware storage\n */\ntype ReqCnf = {\n    kid: string;\n    xms_ksl: KeyLocation;\n};\n\nexport type ReqCnfData = {\n    kid: string;\n    reqCnfString: string;\n    reqCnfHash: string;\n};\n\nenum KeyLocation {\n    SW = \"sw\",\n    UHW = \"uhw\"\n}\n\nexport class PopTokenGenerator {\n\n    private cryptoUtils: ICrypto;\n\n    constructor(cryptoUtils: ICrypto) {\n        this.cryptoUtils = cryptoUtils;\n    }\n\n    /**\n     * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\n     * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\n     * @param request\n     * @returns\n     */\n    async generateCnf(request: SignedHttpRequestParameters): Promise<ReqCnfData> {\n        const reqCnf = await this.generateKid(request);\n        const reqCnfString: string = this.cryptoUtils.base64Encode(JSON.stringify(reqCnf));\n\n        return {\n            kid: reqCnf.kid,\n            reqCnfString, \n            reqCnfHash: await this.cryptoUtils.hashString(reqCnfString) \n        };\n    }\n\n    /**\n     * Generates key_id for a SHR token request\n     * @param request\n     * @returns\n     */\n    async generateKid(request: SignedHttpRequestParameters): Promise<ReqCnf> {\n        const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\n\n        return {\n            kid: kidThumbprint,\n            xms_ksl: KeyLocation.SW\n        };\n    }\n\n    /**\n     * Signs the POP access_token with the local generated key-pair\n     * @param accessToken\n     * @param request\n     * @returns\n     */\n    async signPopToken(accessToken: string, keyId: string, request: SignedHttpRequestParameters): Promise<string> {\n        return this.signPayload(accessToken, keyId, request);\n    }\n\n    /**\n     * Utility function to generate the signed JWT for an access_token\n     * @param payload\n     * @param kid\n     * @param request\n     * @param claims\n     * @returns\n     */\n    async signPayload(payload: string, keyId: string, request: SignedHttpRequestParameters, claims?: object): Promise<string> {\n\n        // Deconstruct request to extract SHR parameters\n        const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce } = request;\n\n        const resourceUrlString = (resourceRequestUri) ? new UrlString(resourceRequestUri) : undefined;\n        const resourceUrlComponents = resourceUrlString?.getUrlComponents();\n        return await this.cryptoUtils.signJwt({\n            at: payload,\n            ts: TimeUtils.nowSeconds(),\n            m: resourceRequestMethod?.toUpperCase(),\n            u: resourceUrlComponents?.HostNameAndPort,\n            nonce: shrNonce || this.cryptoUtils.createNewGuid(),\n            p: resourceUrlComponents?.AbsolutePath,\n            q: (resourceUrlComponents?.QueryString) ? [[], resourceUrlComponents.QueryString] : undefined,\n            client_claims: shrClaims || undefined,\n            ...claims\n        }, keyId, request.correlationId);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { APP_METADATA, Separators } from \"../../utils/Constants\";\n\n/**\n * APP_METADATA Cache\n *\n * Key:Value Schema:\n *\n * Key: appmetadata-<environment>-<client_id>\n *\n * Value:\n * {\n *      clientId: client ID of the application\n *      environment: entity that issued the token, represented as a full host\n *      familyId: Family ID identifier, '1' represents Microsoft Family\n * }\n */\nexport class AppMetadataEntity {\n    clientId: string;\n    environment: string;\n    familyId?: string;\n\n    /**\n     * Generate AppMetadata Cache Key as per the schema: appmetadata-<environment>-<client_id>\n     */\n    generateAppMetadataKey(): string {\n        return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);\n    }\n\n    /**\n     * Generate AppMetadata Cache Key\n     */\n    static generateAppMetadataCacheKey(environment: string, clientId: string): string {\n        const appMetaDataKeyArray: Array<string> = [\n            APP_METADATA,\n            environment,\n            clientId,\n        ];\n        return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n    }\n\n    /**\n     * Creates AppMetadataEntity\n     * @param clientId\n     * @param environment\n     * @param familyId\n     */\n    static createAppMetadataEntity(clientId: string, environment: string, familyId?: string): AppMetadataEntity {\n        const appMetadata = new AppMetadataEntity();\n\n        appMetadata.clientId = clientId;\n        appMetadata.environment = environment;\n        if (familyId) {\n            appMetadata.familyId = familyId;\n        }\n\n        return appMetadata;\n    }\n\n    /**\n     * Validates an entity: checks for all expected params\n     * @param entity\n     */\n    static isAppMetadataEntity(key: string, entity: object): boolean {\n\n        if (!entity) {\n            return false;\n        }\n\n        return (\n            key.indexOf(APP_METADATA) === 0 &&\n            entity.hasOwnProperty(\"clientId\") &&\n            entity.hasOwnProperty(\"environment\")\n        );\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISerializableTokenCache } from \"../interface/ISerializableTokenCache\";\n\n/**\n * This class instance helps track the memory changes facilitating\n * decisions to read from and write to the persistent cache\n */export class TokenCacheContext {\n    /**\n     * boolean indicating cache change\n     */\n    hasChanged: boolean;\n    /**\n     * serializable token cache interface\n     */\n    cache: ISerializableTokenCache;\n\n    constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean) {\n        this.cache = tokenCache;\n        this.hasChanged = hasChanged;\n    }\n\n    /**\n     * boolean which indicates the changes in cache\n     */\n    get cacheHasChanged(): boolean {\n        return this.hasChanged;\n    }\n\n    /**\n     * function to retrieve the token cache\n     */\n    get tokenCache(): ISerializableTokenCache {\n        return this.cache;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerAuthorizationTokenResponse } from \"./ServerAuthorizationTokenResponse\";\nimport { buildClientInfo} from \"../account/ClientInfo\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ServerAuthorizationCodeResponse } from \"./ServerAuthorizationCodeResponse\";\nimport { Logger } from \"../logger/Logger\";\nimport { ServerError } from \"../error/ServerError\";\nimport { AuthToken } from \"../account/AuthToken\";\nimport { ScopeSet } from \"../request/ScopeSet\";\nimport { AuthenticationResult } from \"./AuthenticationResult\";\nimport { AccountEntity } from \"../cache/entities/AccountEntity\";\nimport { Authority } from \"../authority/Authority\";\nimport { AuthorityType } from \"../authority/AuthorityType\";\nimport { IdTokenEntity } from \"../cache/entities/IdTokenEntity\";\nimport { AccessTokenEntity } from \"../cache/entities/AccessTokenEntity\";\nimport { RefreshTokenEntity } from \"../cache/entities/RefreshTokenEntity\";\nimport { InteractionRequiredAuthError } from \"../error/InteractionRequiredAuthError\";\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\nimport { CacheManager } from \"../cache/CacheManager\";\nimport { ProtocolUtils, RequestStateObject } from \"../utils/ProtocolUtils\";\nimport { AuthenticationScheme, Constants, THE_FAMILY_ID } from \"../utils/Constants\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\nimport { AppMetadataEntity } from \"../cache/entities/AppMetadataEntity\";\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\nimport { TokenCacheContext } from \"../cache/persistence/TokenCacheContext\";\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\nimport { AuthorizationCodePayload } from \"./AuthorizationCodePayload\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\n\n/**\n * Class that handles response parsing.\n */\nexport class ResponseHandler {\n    private clientId: string;\n    private cacheStorage: CacheManager;\n    private cryptoObj: ICrypto;\n    private logger: Logger;\n    private homeAccountIdentifier: string;\n    private serializableCache: ISerializableTokenCache | null;\n    private persistencePlugin: ICachePlugin | null;\n\n    constructor(clientId: string, cacheStorage: CacheManager, cryptoObj: ICrypto, logger: Logger, serializableCache: ISerializableTokenCache | null, persistencePlugin: ICachePlugin | null) {\n        this.clientId = clientId;\n        this.cacheStorage = cacheStorage;\n        this.cryptoObj = cryptoObj;\n        this.logger = logger;\n        this.serializableCache = serializableCache;\n        this.persistencePlugin = persistencePlugin;\n    }\n\n    /**\n     * Function which validates server authorization code response.\n     * @param serverResponseHash\n     * @param cachedState\n     * @param cryptoObj\n     */\n    validateServerAuthorizationCodeResponse(serverResponseHash: ServerAuthorizationCodeResponse, cachedState: string, cryptoObj: ICrypto): void {\n\n        if (!serverResponseHash.state || !cachedState) {\n            throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError(\"Server State\") : ClientAuthError.createStateNotFoundError(\"Cached State\");\n        }\n\n        if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {\n            throw ClientAuthError.createStateMismatchError();\n        }\n\n        // Check for error\n        if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {\n            if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {\n                throw new InteractionRequiredAuthError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\n            }\n\n            throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\n        }\n\n        if (serverResponseHash.client_info) {\n            buildClientInfo(serverResponseHash.client_info, cryptoObj);\n        }\n    }\n\n    /**\n     * Function which validates server authorization token response.\n     * @param serverResponse\n     */\n    validateTokenResponse(serverResponse: ServerAuthorizationTokenResponse): void {\n        // Check for error\n        if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {\n            if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\n                throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror);\n            }\n\n            const errString = `${serverResponse.error_codes} - [${serverResponse.timestamp}]: ${serverResponse.error_description} - Correlation ID: ${serverResponse.correlation_id} - Trace ID: ${serverResponse.trace_id}`;\n            throw new ServerError(serverResponse.error, errString, serverResponse.suberror);\n        }\n    }\n\n    /**\n     * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\n     * @param serverTokenResponse\n     * @param authority\n     */\n    async handleServerTokenResponse(\n        serverTokenResponse: ServerAuthorizationTokenResponse,\n        authority: Authority,\n        reqTimestamp: number,\n        request: BaseAuthRequest,\n        authCodePayload?: AuthorizationCodePayload,\n        oboAssertion?: string,\n        handlingRefreshTokenResponse?: boolean): Promise<AuthenticationResult> {\n\n        // create an idToken object (not entity)\n        let idTokenObj: AuthToken | undefined;\n        if (serverTokenResponse.id_token) {\n            idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);\n            \n            // token nonce check (TODO: Add a warning if no nonce is given?)\n            if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {\n                if (idTokenObj.claims.nonce !== authCodePayload.nonce) {\n                    throw ClientAuthError.createNonceMismatchError();\n                }\n            }\n        }\n\n        // generate homeAccountId\n        this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);\n\n        // save the response tokens\n        let requestStateObj: RequestStateObject | undefined;\n        if (!!authCodePayload && !!authCodePayload.state) {\n            requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\n        }\n\n        // Add keyId from request to serverTokenResponse if defined\n        serverTokenResponse.key_id = serverTokenResponse.key_id || request.sshKid || undefined;\n\n        const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenObj, oboAssertion, authCodePayload);\n        let cacheContext;\n        try {\n            if (this.persistencePlugin && this.serializableCache) {\n                this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\n                cacheContext = new TokenCacheContext(this.serializableCache, true);\n                await this.persistencePlugin.beforeCacheAccess(cacheContext);\n            }\n            /*\n             * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\n             * If not present, we should return null, as it's the case that another application called removeAccount in between\n             * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal.\n             */\n            if (handlingRefreshTokenResponse && cacheRecord.account) {\n                const key = cacheRecord.account.generateAccountKey();\n                const account = this.cacheStorage.getAccount(key);\n                if (!account) {\n                    this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\n                    return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj);\n                }\n            }\n            await this.cacheStorage.saveCacheRecord(cacheRecord);\n        } finally {\n            if (this.persistencePlugin && this.serializableCache && cacheContext) {\n                this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\n                await this.persistencePlugin.afterCacheAccess(cacheContext);\n            }\n        }\n        return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, serverTokenResponse.spa_code);\n    }\n\n    /**\n     * Generates CacheRecord\n     * @param serverTokenResponse\n     * @param idTokenObj\n     * @param authority\n     */\n    private generateCacheRecord(serverTokenResponse: ServerAuthorizationTokenResponse, authority: Authority, reqTimestamp: number, request: BaseAuthRequest, idTokenObj?: AuthToken, oboAssertion?: string, authCodePayload?: AuthorizationCodePayload): CacheRecord {\n        const env = authority.getPreferredCache();\n        if (StringUtils.isEmpty(env)) {\n            throw ClientAuthError.createInvalidCacheEnvironmentError();\n        }\n\n        // IdToken: non AAD scenarios can have empty realm\n        let cachedIdToken: IdTokenEntity | undefined;\n        let cachedAccount: AccountEntity | undefined;\n        if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {\n            cachedIdToken = IdTokenEntity.createIdTokenEntity(\n                this.homeAccountIdentifier,\n                env,\n                serverTokenResponse.id_token || Constants.EMPTY_STRING,\n                this.clientId,\n                idTokenObj.claims.tid || Constants.EMPTY_STRING,\n                oboAssertion\n            );\n\n            cachedAccount = this.generateAccountEntity(\n                serverTokenResponse,\n                idTokenObj,\n                authority,\n                oboAssertion,\n                authCodePayload\n            );\n        }\n\n        // AccessToken\n        let cachedAccessToken: AccessTokenEntity | null = null;\n        if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {\n\n            // If scopes not returned in server response, use request scopes\n            const responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(request.scopes || []);\n\n            /*\n             * Use timestamp calculated before request\n             * Server may return timestamps as strings, parse to numbers if so.\n             */\n            const expiresIn: number = (typeof serverTokenResponse.expires_in === \"string\" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;\n            const extExpiresIn: number = (typeof serverTokenResponse.ext_expires_in === \"string\" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;\n            const refreshIn: number | undefined = (typeof serverTokenResponse.refresh_in === \"string\" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || undefined;\n            const tokenExpirationSeconds = reqTimestamp + expiresIn;\n            const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\n            const refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : undefined;\n\n            // non AAD scenarios can have empty realm\n            cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(\n                this.homeAccountIdentifier,\n                env,\n                serverTokenResponse.access_token || Constants.EMPTY_STRING,\n                this.clientId,\n                idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant,\n                responseScopes.printScopes(),\n                tokenExpirationSeconds,\n                extendedTokenExpirationSeconds,\n                this.cryptoObj,\n                refreshOnSeconds,\n                serverTokenResponse.token_type,\n                oboAssertion,\n                serverTokenResponse.key_id,\n                request.claims,\n                request.requestedClaimsHash\n            );\n        }\n        \n        // refreshToken\n        let cachedRefreshToken: RefreshTokenEntity | null = null;\n        if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {\n            cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(\n                this.homeAccountIdentifier,\n                env,\n                serverTokenResponse.refresh_token || Constants.EMPTY_STRING,\n                this.clientId,\n                serverTokenResponse.foci,\n                oboAssertion\n            );\n        }\n\n        // appMetadata\n        let cachedAppMetadata: AppMetadataEntity | null = null;\n        if (!StringUtils.isEmpty(serverTokenResponse.foci)) {\n            cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);\n        }\n\n        return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\n    }\n\n    /**\n     * Generate Account\n     * @param serverTokenResponse\n     * @param idToken\n     * @param authority\n     */\n    private generateAccountEntity(serverTokenResponse: ServerAuthorizationTokenResponse, idToken: AuthToken, authority: Authority, oboAssertion?: string, authCodePayload?: AuthorizationCodePayload): AccountEntity {\n        const authorityType = authority.authorityType;\n        const cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : Constants.EMPTY_STRING;\n        const msGraphhost = authCodePayload ? authCodePayload.msgraph_host : Constants.EMPTY_STRING;\n\n        // ADFS does not require client_info in the response\n        if (authorityType === AuthorityType.Adfs) {\n            this.logger.verbose(\"Authority type is ADFS, creating ADFS account\");\n            return AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, oboAssertion, cloudGraphHostName, msGraphhost);\n        }\n\n        // This fallback applies to B2C as well as they fall under an AAD account type.\n        if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === \"AAD\") {\n            throw ClientAuthError.createClientInfoEmptyError();\n        }\n\n        return serverTokenResponse.client_info ?\n            AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, idToken, authority, oboAssertion, cloudGraphHostName, msGraphhost) :\n            AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, oboAssertion, cloudGraphHostName, msGraphhost);\n    }\n\n    /**\n     * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\n     *\n     * Optionally takes a state string that is set as-is in the response.\n     *\n     * @param cacheRecord\n     * @param idTokenObj\n     * @param fromTokenCache\n     * @param stateString\n     */\n    static async generateAuthenticationResult(\n        cryptoObj: ICrypto, \n        authority: Authority,\n        cacheRecord: CacheRecord, \n        fromTokenCache: boolean, \n        request: BaseAuthRequest,\n        idTokenObj?: AuthToken,\n        requestState?: RequestStateObject,\n        code?: string\n    ): Promise<AuthenticationResult> {\n        let accessToken: string = Constants.EMPTY_STRING;\n        let responseScopes: Array<string> = [];\n        let expiresOn: Date | null = null;\n        let extExpiresOn: Date | undefined;\n        let familyId: string = Constants.EMPTY_STRING;\n\n        if (cacheRecord.accessToken) {\n            if (cacheRecord.accessToken.tokenType === AuthenticationScheme.POP) {\n                const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(cryptoObj);\n                const { secret, keyId } = cacheRecord.accessToken;\n\n                if (!keyId) {\n                    throw ClientAuthError.createKeyIdMissingError();\n                }\n\n                accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\n            } else {\n                accessToken = cacheRecord.accessToken.secret;\n            }\n            responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\n            expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\n            extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\n        }\n\n        if (cacheRecord.appMetadata) {\n            familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;\n        }\n        const uid = idTokenObj?.claims.oid || idTokenObj?.claims.sub || Constants.EMPTY_STRING;\n        const tid = idTokenObj?.claims.tid || Constants.EMPTY_STRING;\n\n        return {\n            authority: authority.canonicalAuthority,\n            uniqueId: uid,\n            tenantId: tid,\n            scopes: responseScopes,\n            account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,\n            idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\n            idTokenClaims: idTokenObj ? idTokenObj.claims : {},\n            accessToken: accessToken,\n            fromCache: fromTokenCache,\n            expiresOn: expiresOn,\n            correlationId: request.correlationId,\n            extExpiresOn: extExpiresOn,\n            familyId: familyId,\n            tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\n            state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,\n            cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || Constants.EMPTY_STRING,\n            msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\n            code,\n            fromNativeBroker: false\n        };\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BaseClient } from \"./BaseClient\";\nimport { CommonAuthorizationUrlRequest } from \"../request/CommonAuthorizationUrlRequest\";\nimport { CommonAuthorizationCodeRequest } from \"../request/CommonAuthorizationCodeRequest\";\nimport { Authority } from \"../authority/Authority\";\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\nimport { GrantType, AuthenticationScheme, PromptValue, Separators, AADServerParamKeys } from \"../utils/Constants\";\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\nimport { NetworkResponse } from \"../network/NetworkManager\";\nimport { ResponseHandler } from \"../response/ResponseHandler\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { UrlString } from \"../url/UrlString\";\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\nimport { CommonEndSessionRequest } from \"../request/CommonEndSessionRequest\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\nimport { AuthorizationCodePayload } from \"../response/AuthorizationCodePayload\";\nimport { TimeUtils } from \"../utils/TimeUtils\";\nimport { TokenClaims } from \"../account/TokenClaims\";\nimport { AccountInfo } from \"../account/AccountInfo\";\nimport { buildClientInfoFromHomeAccountId, buildClientInfo } from \"../account/ClientInfo\";\nimport { CcsCredentialType, CcsCredential } from \"../account/CcsCredential\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { RequestValidator } from \"../request/RequestValidator\";\n\n/**\n * Oauth2.0 Authorization Code client\n */\nexport class AuthorizationCodeClient extends BaseClient {\n    // Flag to indicate if client is for hybrid spa auth code redemption\n    protected includeRedirectUri: boolean = true;\n\n    constructor(configuration: ClientConfiguration) {\n        super(configuration);\n    }\n\n    /**\n     * Creates the URL of the authorization request letting the user input credentials and consent to the\n     * application. The URL target the /authorize endpoint of the authority configured in the\n     * application object.\n     *\n     * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\n     * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\n     * acquireToken(AuthorizationCodeRequest)\n     * @param request\n     */\n    async getAuthCodeUrl(request: CommonAuthorizationUrlRequest): Promise<string> {\n        const queryString = await this.createAuthCodeUrlQueryString(request);\n\n        return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString);\n    }\n\n    /**\n     * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\n     * authorization_code_grant\n     * @param request\n     */\n    async acquireToken(request: CommonAuthorizationCodeRequest, authCodePayload?: AuthorizationCodePayload): Promise<AuthenticationResult> {\n        this.logger.info(\"in acquireToken call\");\n        if (!request || StringUtils.isEmpty(request.code)) {\n            throw ClientAuthError.createTokenRequestCannotBeMadeError();\n        }\n\n        const reqTimestamp = TimeUtils.nowSeconds();\n        const response = await this.executeTokenRequest(this.authority, request);\n\n        const responseHandler = new ResponseHandler(\n            this.config.authOptions.clientId,\n            this.cacheManager,\n            this.cryptoUtils,\n            this.logger,\n            this.config.serializableCache,\n            this.config.persistencePlugin\n        );\n\n        // Validate response. This function throws a server error if an error is returned by the server.\n        responseHandler.validateTokenResponse(response.body);\n        return await responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, authCodePayload);\n    }\n\n    /**\n     * Handles the hash fragment response from public client code request. Returns a code response used by\n     * the client to exchange for a token in acquireToken.\n     * @param hashFragment\n     */\n    handleFragmentResponse(hashFragment: string, cachedState: string): AuthorizationCodePayload {\n        // Handle responses.\n        const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\n\n        // Deserialize hash fragment response parameters.\n        const hashUrlString = new UrlString(hashFragment);\n        // Deserialize hash fragment response parameters.\n        const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hashUrlString.getHash());\n\n        // Get code response\n        responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState, this.cryptoUtils);\n\n        // throw when there is no auth code in the response\n        if (!serverParams.code) {\n            throw ClientAuthError.createNoAuthCodeInServerResponseError();\n        }\n        return {\n            ...serverParams,\n            // Code param is optional in ServerAuthorizationCodeResponse but required in AuthorizationCodePaylod\n            code: serverParams.code\n        };\n    }\n\n    /**\n     * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\n     * Default behaviour is to redirect the user to `window.location.href`.\n     * @param authorityUri\n     */\n    getLogoutUri(logoutRequest: CommonEndSessionRequest): string {\n        // Throw error if logoutRequest is null/undefined\n        if (!logoutRequest) {\n            throw ClientConfigurationError.createEmptyLogoutRequestError();\n        }\n        const queryString = this.createLogoutUrlQueryString(logoutRequest);\n\n        // Construct logout URI.\n        return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\n    }\n\n    /**\n     * Executes POST request to token endpoint\n     * @param authority\n     * @param request\n     */\n    private async executeTokenRequest(authority: Authority, request: CommonAuthorizationCodeRequest): Promise<NetworkResponse<ServerAuthorizationTokenResponse>> {\n        const thumbprint: RequestThumbprint = {\n            clientId: this.config.authOptions.clientId,\n            authority: authority.canonicalAuthority,\n            scopes: request.scopes,\n            claims: request.claims,\n            authenticationScheme: request.authenticationScheme,\n            resourceRequestMethod: request.resourceRequestMethod,\n            resourceRequestUri: request.resourceRequestUri,\n            shrClaims: request.shrClaims,\n            sshKid: request.sshKid\n        };\n\n        const requestBody = await this.createTokenRequestBody(request);\n        const queryParameters = this.createTokenQueryParameters(request);\n        let ccsCredential: CcsCredential | undefined = undefined;\n        if (request.clientInfo) {\n            try {\n                const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\n                ccsCredential = {\n                    credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\n                    type: CcsCredentialType.HOME_ACCOUNT_ID\n                };\n            } catch (e) {\n                this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\n            }\n        }\n        const headers: Record<string, string> = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\n        const endpoint = StringUtils.isEmpty(queryParameters) ? authority.tokenEndpoint : `${authority.tokenEndpoint}?${queryParameters}`;\n\n        return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint);\n    }\n\n    /**\n     * Creates query string for the /token request\n     * @param request\n     */\n    private createTokenQueryParameters(request: CommonAuthorizationCodeRequest): string {\n        const parameterBuilder = new RequestParameterBuilder();\n\n        if (request.tokenQueryParameters) {\n            parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\n        }\n\n        return parameterBuilder.createQueryString();\n    }\n\n    /**\n     * Generates a map for all the params to be sent to the service\n     * @param request\n     */\n    private async createTokenRequestBody(request: CommonAuthorizationCodeRequest): Promise<string> {\n        const parameterBuilder = new RequestParameterBuilder();\n\n        parameterBuilder.addClientId(this.config.authOptions.clientId);\n\n        /*\n         * For hybrid spa flow, there will be a code but no verifier\n         * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\n         */\n        if (!this.includeRedirectUri) {\n            // Just validate\n            RequestValidator.validateRedirectUri(request.redirectUri);\n        } else {\n            // Validate and include redirect uri\n            parameterBuilder.addRedirectUri(request.redirectUri);\n        }\n\n        // Add scope array, parameter builder will add default scopes and dedupe\n        parameterBuilder.addScopes(request.scopes);\n\n        // add code: user set, not validated\n        parameterBuilder.addAuthorizationCode(request.code);\n\n        // Add library metadata\n        parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n        parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n        parameterBuilder.addThrottling();\n\n        if (this.serverTelemetryManager) {\n            parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n        }\n\n        // add code_verifier if passed\n        if (request.codeVerifier) {\n            parameterBuilder.addCodeVerifier(request.codeVerifier);\n        }\n\n        if (this.config.clientCredentials.clientSecret) {\n            parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\n        }\n\n        // Use clientAssertion from request, fallback to client assertion in base configuration\n        const clientAssertion = request.clientAssertion || this.config.clientCredentials.clientAssertion;\n\n        if (clientAssertion) {\n            parameterBuilder.addClientAssertion(clientAssertion.assertion);\n            parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\n        }\n\n        parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\n        parameterBuilder.addClientInfo();\n\n        if (request.authenticationScheme === AuthenticationScheme.POP) {\n            const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\n            const reqCnfData = await popTokenGenerator.generateCnf(request);\n            // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\n            parameterBuilder.addPopToken(reqCnfData.reqCnfString);\n        } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\n            if(request.sshJwk) {\n                parameterBuilder.addSshJwk(request.sshJwk);\n            } else {\n                throw ClientConfigurationError.createMissingSshJwkError();\n            }\n        }\n\n        const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\n        parameterBuilder.addCorrelationId(correlationId);\n\n        if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\n            parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n        }\n\n        let ccsCred: CcsCredential | undefined = undefined;\n        if (request.clientInfo) {\n            try {\n                const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\n                ccsCred = {\n                    credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\n                    type: CcsCredentialType.HOME_ACCOUNT_ID\n                };\n            } catch (e) {\n                this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\n            }\n        } else {\n            ccsCred = request.ccsCredential;\n        }\n\n        // Adds these as parameters in the request instead of headers to prevent CORS preflight request\n        if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\n            switch (ccsCred.type) {\n                case CcsCredentialType.HOME_ACCOUNT_ID:\n                    try {\n                        const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\n                        parameterBuilder.addCcsOid(clientInfo);\n                    } catch (e) {\n                        this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\n                    }\n                    break;\n                case CcsCredentialType.UPN:\n                    parameterBuilder.addCcsUpn(ccsCred.credential);\n                    break;\n            }\n        }\n\n        if (request.tokenBodyParameters) {\n            parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\n        }\n\n        // Add hybrid spa parameters if not already provided\n        if (request.enableSpaAuthorizationCode && (!request.tokenBodyParameters || !request.tokenBodyParameters[AADServerParamKeys.RETURN_SPA_CODE])) {\n            parameterBuilder.addExtraQueryParameters({\n                [AADServerParamKeys.RETURN_SPA_CODE]: \"1\"\n            });\n        }\n\n        return parameterBuilder.createQueryString();\n    }\n\n    /**\n     * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\n     * @param request\n     */\n    private async createAuthCodeUrlQueryString(request: CommonAuthorizationUrlRequest): Promise<string> {\n        const parameterBuilder = new RequestParameterBuilder();\n\n        parameterBuilder.addClientId(this.config.authOptions.clientId);\n\n        const requestScopes = [...request.scopes || [], ...request.extraScopesToConsent || []];\n        parameterBuilder.addScopes(requestScopes);\n\n        // validate the redirectUri (to be a non null value)\n        parameterBuilder.addRedirectUri(request.redirectUri);\n\n        // generate the correlationId if not set by the user and add\n        const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\n        parameterBuilder.addCorrelationId(correlationId);\n\n        // add response_mode. If not passed in it defaults to query.\n        parameterBuilder.addResponseMode(request.responseMode);\n\n        // add response_type = code\n        parameterBuilder.addResponseTypeCode();\n\n        // add library info parameters\n        parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n        parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n\n        // add client_info=1\n        parameterBuilder.addClientInfo();\n\n        if (request.codeChallenge && request.codeChallengeMethod) {\n            parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\n        }\n\n        if (request.prompt) {\n            parameterBuilder.addPrompt(request.prompt);\n        }\n\n        if (request.domainHint) {\n            parameterBuilder.addDomainHint(request.domainHint);\n        }\n\n        // Add sid or loginHint with preference for sid -> loginHint -> username of AccountInfo object\n        if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\n            // AAD will throw if prompt=select_account is passed with an account hint\n            if (request.sid && request.prompt === PromptValue.NONE) {\n                // SessionID is only used in silent calls\n                this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\n                parameterBuilder.addSid(request.sid);\n            } else if (request.account) {\n                const accountSid = this.extractAccountSid(request.account);\n                // If account and loginHint are provided, we will check account first for sid before adding loginHint\n                if (accountSid && request.prompt === PromptValue.NONE) {\n                    // SessionId is only used in silent calls\n                    this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\n                    parameterBuilder.addSid(accountSid);\n                    try {\n                        const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\n                        parameterBuilder.addCcsOid(clientInfo);\n                    } catch (e) {\n                        this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\n                    }\n                } else if (request.loginHint) {\n                    this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\n                    parameterBuilder.addLoginHint(request.loginHint);\n                    parameterBuilder.addCcsUpn(request.loginHint);\n                } else if (request.account.username) {\n                    // Fallback to account username if provided\n                    this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\n                    parameterBuilder.addLoginHint(request.account.username);\n                    try {\n                        const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\n                        parameterBuilder.addCcsOid(clientInfo);\n                    } catch (e) {\n                        this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +  e);\n                    }\n                }\n            } else if (request.loginHint) {\n                this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\n                parameterBuilder.addLoginHint(request.loginHint);\n                parameterBuilder.addCcsUpn(request.loginHint);\n            }\n        } else {\n            this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\n        }\n\n        if (request.nonce) {\n            parameterBuilder.addNonce(request.nonce);\n        }\n\n        if (request.state) {\n            parameterBuilder.addState(request.state);\n        }\n\n        if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\n            parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n        }\n\n        if (request.extraQueryParameters) {\n            parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\n        }\n\n        if (request.nativeBroker) {\n            // signal ests that this is a WAM call\n            parameterBuilder.addNativeBroker();\n\n            // pass the req_cnf for POP\n            if (request.authenticationScheme === AuthenticationScheme.POP) {\n                const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\n                // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\n                const reqCnfData = await popTokenGenerator.generateCnf(request);\n                parameterBuilder.addPopToken(reqCnfData.reqCnfHash);\n            }\n        }\n\n        return parameterBuilder.createQueryString();\n    }\n\n    /**\n     * This API validates the `EndSessionRequest` and creates a URL\n     * @param request\n     */\n    private createLogoutUrlQueryString(request: CommonEndSessionRequest): string {\n        const parameterBuilder = new RequestParameterBuilder();\n\n        if (request.postLogoutRedirectUri) {\n            parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\n        }\n\n        if (request.correlationId) {\n            parameterBuilder.addCorrelationId(request.correlationId);\n        }\n\n        if (request.idTokenHint) {\n            parameterBuilder.addIdTokenHint(request.idTokenHint);\n        }\n\n        if(request.state) {\n            parameterBuilder.addState(request.state);\n        }\n\n        if (request.logoutHint) {\n            parameterBuilder.addLogoutHint(request.logoutHint);\n        }\n\n        if (request.extraQueryParameters) {\n            parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\n        }\n\n        return parameterBuilder.createQueryString();\n    }\n\n    /**\n     * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\n     * @param account\n     */\n    private extractAccountSid(account: AccountInfo): string | null {\n        if (account.idTokenClaims) {\n            const tokenClaims = account.idTokenClaims as TokenClaims;\n            return tokenClaims.sid || null;\n        }\n        return null;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\nimport { BaseClient } from \"./BaseClient\";\nimport { CommonRefreshTokenRequest } from \"../request/CommonRefreshTokenRequest\";\nimport { Authority } from \"../authority/Authority\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\nimport { GrantType, AuthenticationScheme, Errors  } from \"../utils/Constants\";\nimport { ResponseHandler } from \"../response/ResponseHandler\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\nimport { NetworkResponse } from \"../network/NetworkManager\";\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { ServerError } from \"../error/ServerError\";\nimport { TimeUtils } from \"../utils/TimeUtils\";\nimport { UrlString } from \"../url/UrlString\";\nimport { CcsCredentialType } from \"../account/CcsCredential\";\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo\";\nimport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage } from \"../error/InteractionRequiredAuthError\";\n\n/**\n * OAuth2.0 refresh token client\n */\nexport class RefreshTokenClient extends BaseClient {\n\n    constructor(configuration: ClientConfiguration) {\n        super(configuration);\n    }\n\n    public async acquireToken(request: CommonRefreshTokenRequest): Promise<AuthenticationResult>{\n        const reqTimestamp = TimeUtils.nowSeconds();\n        const response = await this.executeTokenRequest(request, this.authority);\n\n        const responseHandler = new ResponseHandler(\n            this.config.authOptions.clientId,\n            this.cacheManager,\n            this.cryptoUtils,\n            this.logger,\n            this.config.serializableCache,\n            this.config.persistencePlugin\n        );\n\n        responseHandler.validateTokenResponse(response.body);\n        return responseHandler.handleServerTokenResponse(\n            response.body,\n            this.authority,\n            reqTimestamp,\n            request,\n            undefined,\n            undefined,\n            true\n        );\n    }\n\n    /**\n     * Gets cached refresh token and attaches to request, then calls acquireToken API\n     * @param request\n     */\n    public async acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n        // Cannot renew token if no request object is given.\n        if (!request) {\n            throw ClientConfigurationError.createEmptyTokenRequestError();\n        }\n\n        // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\n        if (!request.account) {\n            throw ClientAuthError.createNoAccountInSilentRequestError();\n        }\n\n        // try checking if FOCI is enabled for the given application\n        const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment, this.config.authOptions.clientId);\n\n        // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\n        if (isFOCI) {\n            try {\n                return this.acquireTokenWithCachedRefreshToken(request, true);\n            } catch (e) {\n                const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && e.errorCode === InteractionRequiredAuthErrorMessage.noTokensFoundError.code;\n                const clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR;\n\n                // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\n                if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\n                    return this.acquireTokenWithCachedRefreshToken(request, false);\n                // throw in all other cases\n                } else {\n                    throw e;\n                }\n            }\n        }\n\n        // fall back to application refresh token acquisition\n        return this.acquireTokenWithCachedRefreshToken(request, false);\n    }\n\n    /**\n     * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\n     * @param request\n     */\n    private async acquireTokenWithCachedRefreshToken(request: CommonSilentFlowRequest, foci: boolean) {\n        // fetches family RT or application RT based on FOCI value\n        const refreshToken = this.cacheManager.readRefreshTokenFromCache(this.config.authOptions.clientId, request.account, foci);\n\n        // no refresh Token\n        if (!refreshToken) {\n            throw InteractionRequiredAuthError.createNoTokensFoundError();\n        }\n\n        const refreshTokenRequest: CommonRefreshTokenRequest = {\n            ...request,\n            refreshToken: refreshToken.secret,\n            authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\n            ccsCredential: {\n                credential: request.account.homeAccountId,\n                type: CcsCredentialType.HOME_ACCOUNT_ID\n            }\n        };\n\n        return this.acquireToken(refreshTokenRequest);\n    }\n\n    /**\n     * Constructs the network message and makes a NW call to the underlying secure token service\n     * @param request\n     * @param authority\n     */\n    private async executeTokenRequest(request: CommonRefreshTokenRequest, authority: Authority)\n        : Promise<NetworkResponse<ServerAuthorizationTokenResponse>> {\n\n        const requestBody = await this.createTokenRequestBody(request);\n        const queryParameters = this.createTokenQueryParameters(request);\n        const headers: Record<string, string> = this.createTokenRequestHeaders(request.ccsCredential);\n        const thumbprint: RequestThumbprint = {\n            clientId: this.config.authOptions.clientId,\n            authority: authority.canonicalAuthority,\n            scopes: request.scopes,\n            claims: request.claims,\n            authenticationScheme: request.authenticationScheme,\n            resourceRequestMethod: request.resourceRequestMethod,\n            resourceRequestUri: request.resourceRequestUri,\n            shrClaims: request.shrClaims,\n            sshKid: request.sshKid\n        };\n\n        const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParameters);\n        return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint);\n    }\n\n    /**\n     * Creates query string for the /token request\n     * @param request \n     */\n    private createTokenQueryParameters(request: CommonRefreshTokenRequest): string {\n        const parameterBuilder = new RequestParameterBuilder();\n\n        if (request.tokenQueryParameters) {\n            parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\n        }\n\n        return parameterBuilder.createQueryString();\n    }\n\n    /**\n     * Helper function to create the token request body\n     * @param request\n     */\n    private async createTokenRequestBody(request: CommonRefreshTokenRequest): Promise<string> {\n        const parameterBuilder = new RequestParameterBuilder();\n\n        parameterBuilder.addClientId(this.config.authOptions.clientId);\n\n        parameterBuilder.addScopes(request.scopes);\n\n        parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\n\n        parameterBuilder.addClientInfo();\n\n        parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n        parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n        parameterBuilder.addThrottling();\n        \n        if (this.serverTelemetryManager) {\n            parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n        }\n\n        const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\n        parameterBuilder.addCorrelationId(correlationId);\n\n        parameterBuilder.addRefreshToken(request.refreshToken);\n\n        if (this.config.clientCredentials.clientSecret) {\n            parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\n        }\n\n        // Use clientAssertion from request, fallback to client assertion in base configuration\n        const clientAssertion = request.clientAssertion || this.config.clientCredentials.clientAssertion;\n\n        if (clientAssertion) {\n            parameterBuilder.addClientAssertion(clientAssertion.assertion);\n            parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\n        }\n\n        if (request.authenticationScheme === AuthenticationScheme.POP) {\n            const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\n            const reqCnfData = await popTokenGenerator.generateCnf(request);\n            // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\n            parameterBuilder.addPopToken(reqCnfData.reqCnfString);\n        } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\n            if(request.sshJwk) {\n                parameterBuilder.addSshJwk(request.sshJwk);\n            } else {\n                throw ClientConfigurationError.createMissingSshJwkError();\n            }\n        }\n\n        if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\n            parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n        }\n\n        if (this.config.systemOptions.preventCorsPreflight && request.ccsCredential) {\n            switch (request.ccsCredential.type) {\n                case CcsCredentialType.HOME_ACCOUNT_ID:\n                    try {\n                        const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\n                        parameterBuilder.addCcsOid(clientInfo);\n                    } catch (e) {\n                        this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\n                    }\n                    break;\n                case CcsCredentialType.UPN:\n                    parameterBuilder.addCcsUpn(request.ccsCredential.credential);\n                    break;\n            }\n        }\n\n        return parameterBuilder.createQueryString();\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BaseClient } from \"./BaseClient\";\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\nimport { AuthToken } from \"../account/AuthToken\";\nimport { TimeUtils } from \"../utils/TimeUtils\";\nimport { RefreshTokenClient } from \"./RefreshTokenClient\";\nimport { ClientAuthError, ClientAuthErrorMessage } from \"../error/ClientAuthError\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ResponseHandler } from \"../response/ResponseHandler\";\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\nimport { CacheOutcome } from \"../utils/Constants\";\n\nexport class SilentFlowClient extends BaseClient {\n\n    constructor(configuration: ClientConfiguration) {\n        super(configuration);\n    }\n\n    /**\n     * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\n     * the given token and returns the renewed token\n     * @param request\n     */\n    async acquireToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n        try {\n            return await this.acquireCachedToken(request);\n        } catch (e) {\n            if (e instanceof ClientAuthError && e.errorCode === ClientAuthErrorMessage.tokenRefreshRequired.code) {\n                const refreshTokenClient = new RefreshTokenClient(this.config);\n                return refreshTokenClient.acquireTokenByRefreshToken(request);\n            } else {\n                throw e;\n            }\n        }\n    }\n\n    /**\n     * Retrieves token from cache or throws an error if it must be refreshed.\n     * @param request\n     */\n    async acquireCachedToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n        // Cannot renew token if no request object is given.\n        if (!request) {\n            throw ClientConfigurationError.createEmptyTokenRequestError();\n        }\n\n        if (request.forceRefresh) {\n            // Must refresh due to present force_refresh flag.\n            this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.FORCE_REFRESH);\n            this.logger.info(\"SilentFlowClient:acquireCachedToken - Skipping cache because forceRefresh is true.\");\n            throw ClientAuthError.createRefreshRequiredError();\n        }\n\n        // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\n        if (!request.account) {\n            throw ClientAuthError.createNoAccountInSilentRequestError();\n        }\n\n        const environment = request.authority || this.authority.getPreferredCache();\n\n        const cacheRecord = this.cacheManager.readCacheRecord(request.account, this.config.authOptions.clientId, request, environment);\n        \n        if (!cacheRecord.accessToken) {\n            // Must refresh due to non-existent access_token.\n            this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\n            this.logger.info(\"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\");\n            throw ClientAuthError.createRefreshRequiredError();\n        } else if (\n            TimeUtils.wasClockTurnedBack(cacheRecord.accessToken.cachedAt) ||\n            TimeUtils.isTokenExpired(cacheRecord.accessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)\n        ) {\n            // Must refresh due to expired access_token.\n            this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\n            this.logger.info(`SilentFlowClient:acquireCachedToken - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`);\n            throw ClientAuthError.createRefreshRequiredError();\n        } else if (cacheRecord.accessToken.refreshOn && TimeUtils.isTokenExpired(cacheRecord.accessToken.refreshOn, 0)) {\n            // Must refresh due to the refresh_in value.\n            this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.REFRESH_CACHED_ACCESS_TOKEN);\n            this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'.\");\n            throw ClientAuthError.createRefreshRequiredError();\n        }\n\n        if (this.config.serverTelemetryManager) {\n            this.config.serverTelemetryManager.incrementCacheHits();\n        }\n\n        return await this.generateResultFromCacheRecord(cacheRecord, request);\n    }\n\n    /**\n     * Helper function to build response object from the CacheRecord\n     * @param cacheRecord\n     */\n    private async generateResultFromCacheRecord(cacheRecord: CacheRecord, request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n        let idTokenObj: AuthToken | undefined;\n        if (cacheRecord.idToken) {\n            idTokenObj = new AuthToken(cacheRecord.idToken.secret, this.config.cryptoInterface);\n        }\n        return await ResponseHandler.generateAuthenticationResult(\n            this.cryptoUtils,\n            this.authority,\n            cacheRecord,\n            true,\n            request,\n            idTokenObj\n        );\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization.\n */\nexport type OpenIdConfigResponse = {\n    authorization_endpoint: string;\n    token_endpoint: string;\n    end_session_endpoint?: string;\n    issuer: string;\n};\n\nexport function isOpenIdConfigResponse(response: object): boolean {\n    return (\n        response.hasOwnProperty(\"authorization_endpoint\") &&\n        response.hasOwnProperty(\"token_endpoint\") && \n        response.hasOwnProperty(\"issuer\")\n    );\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Protocol modes supported by MSAL.\n */\nexport enum ProtocolMode {\n    AAD = \"AAD\",\n    OIDC = \"OIDC\"\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CloudDiscoveryMetadata } from \"../../authority/CloudDiscoveryMetadata\";\nimport { OpenIdConfigResponse } from \"../../authority/OpenIdConfigResponse\";\nimport { AUTHORITY_METADATA_CONSTANTS } from \"../../utils/Constants\";\nimport { TimeUtils } from \"../../utils/TimeUtils\";\n\nexport class AuthorityMetadataEntity {\n    aliases: Array<string>;\n    preferred_cache: string;\n    preferred_network: string;\n    canonical_authority: string;\n    authorization_endpoint: string;\n    token_endpoint: string;\n    end_session_endpoint?: string;\n    issuer: string;\n    aliasesFromNetwork: boolean;\n    endpointsFromNetwork: boolean;\n    expiresAt: number;\n\n    constructor() {\n        this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\n    }\n\n    /**\n     * Update the entity with new aliases, preferred_cache and preferred_network values\n     * @param metadata \n     * @param fromNetwork \n     */\n    updateCloudDiscoveryMetadata(metadata: CloudDiscoveryMetadata, fromNetwork: boolean): void {\n        this.aliases = metadata.aliases;\n        this.preferred_cache = metadata.preferred_cache;\n        this.preferred_network = metadata.preferred_network;\n        this.aliasesFromNetwork = fromNetwork;\n    }\n\n    /**\n     * Update the entity with new endpoints\n     * @param metadata \n     * @param fromNetwork \n     */\n    updateEndpointMetadata(metadata: OpenIdConfigResponse, fromNetwork: boolean): void {\n        this.authorization_endpoint = metadata.authorization_endpoint;\n        this.token_endpoint = metadata.token_endpoint;\n        this.end_session_endpoint = metadata.end_session_endpoint;\n        this.issuer = metadata.issuer;\n        this.endpointsFromNetwork = fromNetwork;\n    }\n\n    /**\n     * Save the authority that was used to create this cache entry\n     * @param authority \n     */\n    updateCanonicalAuthority(authority: string): void {\n        this.canonical_authority = authority;\n    }\n\n    /**\n     * Reset the exiresAt value\n     */\n    resetExpiresAt(): void {\n        this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\n    }\n\n    /**\n     * Returns whether or not the data needs to be refreshed\n     */\n    isExpired(): boolean {\n        return this.expiresAt <= TimeUtils.nowSeconds();\n    }\n\n    /**\n     * Validates an entity: checks for all expected params\n     * @param entity\n     */\n    static isAuthorityMetadataEntity(key: string, entity: object): boolean {\n\n        if (!entity) {\n            return false;\n        }\n\n        return (\n            key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\n            entity.hasOwnProperty(\"aliases\") &&\n            entity.hasOwnProperty(\"preferred_cache\") &&\n            entity.hasOwnProperty(\"preferred_network\") &&\n            entity.hasOwnProperty(\"canonical_authority\") &&\n            entity.hasOwnProperty(\"authorization_endpoint\") &&\n            entity.hasOwnProperty(\"token_endpoint\") &&\n            entity.hasOwnProperty(\"issuer\") &&\n            entity.hasOwnProperty(\"aliasesFromNetwork\") &&\n            entity.hasOwnProperty(\"endpointsFromNetwork\") &&\n            entity.hasOwnProperty(\"expiresAt\")\n        );\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\n\n/**\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\n */\nexport type CloudInstanceDiscoveryResponse = {\n    tenant_discovery_endpoint: string;\n    metadata: Array<CloudDiscoveryMetadata>;\n};\n\nexport function isCloudInstanceDiscoveryResponse(response: object): boolean {\n    return (\n        response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\n        response.hasOwnProperty(\"metadata\")\n    );\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { NetworkResponse } from \"../network/NetworkManager\";\nimport { IMDSBadResponse } from \"../response/IMDSBadResponse\";\nimport { Constants, RegionDiscoverySources, ResponseCodes } from \"../utils/Constants\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\nimport { ImdsOptions } from \"./ImdsOptions\";\n\nexport class RegionDiscovery {\n    // Network interface to make requests with.\n    protected networkInterface: INetworkModule;\n    // Options for the IMDS endpoint request\n    protected static IMDS_OPTIONS: ImdsOptions = {\n        headers: {\n            Metadata: \"true\",\n        },\n    };\n\n    constructor(networkInterface: INetworkModule) {\n        this.networkInterface = networkInterface;\n    }\n\n    /**\n     * Detect the region from the application's environment.\n     * \n     * @returns Promise<string | null>\n     */\n    public async detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata, proxyUrl: string): Promise<string | null> {\n        // Initialize auto detected region with the region from the envrionment \n        let autodetectedRegionName = environmentRegion;\n\n        // Check if a region was detected from the environment, if not, attempt to get the region from IMDS \n        if (!autodetectedRegionName) {\n            const options = RegionDiscovery.IMDS_OPTIONS;\n            if (proxyUrl) {\n                options.proxyUrl = proxyUrl;\n            }\n\n            try {\n                const localIMDSVersionResponse = await this.getRegionFromIMDS(Constants.IMDS_VERSION, options);\n                if (localIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\n                    autodetectedRegionName = localIMDSVersionResponse.body;\n                    regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\n                } \n                \n                // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. \n                if (localIMDSVersionResponse.status === ResponseCodes.httpBadRequest) {\n                    const currentIMDSVersion = await this.getCurrentVersion(options);\n                    if (!currentIMDSVersion) {\n                        regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n                        return null;\n                    }\n\n                    const currentIMDSVersionResponse = await this.getRegionFromIMDS(currentIMDSVersion, options);\n                    if (currentIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\n                        autodetectedRegionName = currentIMDSVersionResponse.body;\n                        regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\n                    }\n                }\n            } catch(e) {\n                regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n                return null;\n            } \n        } else {\n            regionDiscoveryMetadata.region_source = RegionDiscoverySources.ENVIRONMENT_VARIABLE;\n        }\n\n        // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\n        if (!autodetectedRegionName) {\n            regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n        }\n\n        return autodetectedRegionName || null;\n    }\n\n    /**\n     * Make the call to the IMDS endpoint\n     * \n     * @param imdsEndpointUrl\n     * @returns Promise<NetworkResponse<string>>\n     */\n    private async getRegionFromIMDS(version: string, options: ImdsOptions): Promise<NetworkResponse<string>> {\n        return this.networkInterface.sendGetRequestAsync<string>(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);\n    }\n\n    /**\n     * Get the most recent version of the IMDS endpoint available\n     *  \n     * @returns Promise<string | null>\n     */\n    private async getCurrentVersion(options: ImdsOptions): Promise<string | null> {\n        try {\n            const response = await this.networkInterface.sendGetRequestAsync<IMDSBadResponse>(`${Constants.IMDS_ENDPOINT}?format=json`, options);\n\n            // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\n            if (response.status === ResponseCodes.httpBadRequest && response.body && response.body[\"newest-versions\"] && response.body[\"newest-versions\"].length > 0) {\n                return response.body[\"newest-versions\"][0];\n            }\n\n            return null;\n        } catch (e) {\n            return null;\n        }\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorityType } from \"./AuthorityType\";\nimport { isOpenIdConfigResponse, OpenIdConfigResponse } from \"./OpenIdConfigResponse\";\nimport { UrlString } from \"../url/UrlString\";\nimport { IUri } from \"../url/IUri\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { AuthorityMetadataSource, Constants, RegionDiscoveryOutcomes } from \"../utils/Constants\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ProtocolMode } from \"./ProtocolMode\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity\";\nimport { AuthorityOptions , AzureCloudInstance } from \"./AuthorityOptions\";\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\nimport { RegionDiscovery } from \"./RegionDiscovery\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\nimport { ImdsOptions } from \"./ImdsOptions\";\nimport { AzureCloudOptions } from \"../config/ClientConfiguration\";\n\n/**\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\n * endpoint. It will store the pertinent config data in this object for use during token calls.\n */\nexport class Authority {\n\n    // Canonical authority url string\n    private _canonicalAuthority: UrlString;\n    // Canonicaly authority url components\n    private _canonicalAuthorityUrlComponents: IUri | null;\n    // Network interface to make requests with.\n    protected networkInterface: INetworkModule;\n    // Cache Manager to cache network responses\n    protected cacheManager: ICacheManager;\n    // Protocol mode to construct endpoints\n    private authorityOptions: AuthorityOptions;\n    // Authority metadata\n    private metadata: AuthorityMetadataEntity;\n    // Region discovery service\n    private regionDiscovery: RegionDiscovery;\n    // Region discovery metadata\n    public regionDiscoveryMetadata: RegionDiscoveryMetadata;\n    // Proxy url string\n    private proxyUrl: string;\n\n    constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string) {\n        this.canonicalAuthority = authority;\n        this._canonicalAuthority.validateAsUri();\n        this.networkInterface = networkInterface;\n        this.cacheManager = cacheManager;\n        this.authorityOptions = authorityOptions;\n        this.regionDiscovery = new RegionDiscovery(networkInterface);\n        this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\n        this.proxyUrl = proxyUrl || Constants.EMPTY_STRING;\n    }\n\n    // See above for AuthorityType\n    public get authorityType(): AuthorityType {\n        const pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\n\n        if (pathSegments.length && pathSegments[0].toLowerCase() === Constants.ADFS) {\n            return AuthorityType.Adfs;\n        }\n\n        return AuthorityType.Default;\n    }\n\n    /**\n     * ProtocolMode enum representing the way endpoints are constructed.\n     */\n    public get protocolMode(): ProtocolMode {\n        return this.authorityOptions.protocolMode;\n    }\n\n    /**\n     * Returns authorityOptions which can be used to reinstantiate a new authority instance\n     */\n    public get options(): AuthorityOptions {\n        return this.authorityOptions;\n    }\n\n    /**\n     * A URL that is the authority set by the developer\n     */\n    public get canonicalAuthority(): string {\n        return this._canonicalAuthority.urlString;\n    }\n\n    /**\n     * Sets canonical authority.\n     */\n    public set canonicalAuthority(url: string) {\n        this._canonicalAuthority = new UrlString(url);\n        this._canonicalAuthority.validateAsUri();\n        this._canonicalAuthorityUrlComponents = null;\n    }\n\n    /**\n     * Get authority components.\n     */\n    public get canonicalAuthorityUrlComponents(): IUri {\n        if (!this._canonicalAuthorityUrlComponents) {\n            this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\n        }\n\n        return this._canonicalAuthorityUrlComponents;\n    }\n\n    /**\n     * Get hostname and port i.e. login.microsoftonline.com\n     */\n    public get hostnameAndPort(): string {\n        return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\n    }\n\n    /**\n     * Get tenant for authority.\n     */\n    public get tenant(): string {\n        return this.canonicalAuthorityUrlComponents.PathSegments[0];\n    }\n\n    /**\n     * OAuth /authorize endpoint for requests\n     */\n    public get authorizationEndpoint(): string {\n        if(this.discoveryComplete()) {\n            const endpoint = this.replacePath(this.metadata.authorization_endpoint);\n            return this.replaceTenant(endpoint);\n        } else {\n            throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n        }\n    }\n\n    /**\n     * OAuth /token endpoint for requests\n     */\n    public get tokenEndpoint(): string {\n        if(this.discoveryComplete()) {\n            const endpoint = this.replacePath(this.metadata.token_endpoint);\n            return this.replaceTenant(endpoint);\n        } else {\n            throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n        }\n    }\n\n    public get deviceCodeEndpoint(): string {\n        if(this.discoveryComplete()) {\n            const endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\n            return this.replaceTenant(endpoint);\n        } else {\n            throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n        }\n    }\n\n    /**\n     * OAuth logout endpoint for requests\n     */\n    public get endSessionEndpoint(): string {\n        if(this.discoveryComplete()) {\n            // ROPC policies may not have end_session_endpoint set\n            if (!this.metadata.end_session_endpoint) {\n                throw ClientAuthError.createLogoutNotSupportedError();\n            }\n            const endpoint = this.replacePath(this.metadata.end_session_endpoint);\n            return this.replaceTenant(endpoint);\n        } else {\n            throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n        }\n    }\n\n    /**\n     * OAuth issuer for requests\n     */\n    public get selfSignedJwtAudience(): string {\n        if(this.discoveryComplete()) {\n            const endpoint = this.replacePath(this.metadata.issuer);\n            return this.replaceTenant(endpoint);\n        } else {\n            throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n        }\n    }\n\n    /**\n     * Replaces tenant in url path with current tenant. Defaults to common.\n     * @param urlString\n     */\n    private replaceTenant(urlString: string): string {\n        return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\n    }\n\n    /**\n     * Replaces path such as tenant or policy with the current tenant or policy.\n     * @param urlString\n     */\n    private replacePath(urlString: string): string {\n        let endpoint = urlString;\n        const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\n        const cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n        const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\n\n        currentAuthorityParts.forEach((currentPart, index) => {\n            const cachedPart = cachedAuthorityParts[index];\n            if (currentPart !== cachedPart) {\n                endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\n            }\n        });\n\n        return endpoint;\n    }\n\n    /**\n     * The default open id configuration endpoint for any canonical authority.\n     */\n    protected get defaultOpenIdConfigurationEndpoint(): string {\n        if (this.authorityType === AuthorityType.Adfs || this.protocolMode === ProtocolMode.OIDC) {\n            return `${this.canonicalAuthority}.well-known/openid-configuration`;\n        }\n        return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\n    }\n\n    /**\n     * Boolean that returns whethr or not tenant discovery has been completed.\n     */\n    discoveryComplete(): boolean {\n        return !!this.metadata;\n    }\n\n    /**\n     * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\n     * and the /authorize, /token and logout endpoints.\n     */\n    public async resolveEndpointsAsync(): Promise<void> {\n        let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\n        if (!metadataEntity) {\n            metadataEntity = new AuthorityMetadataEntity();\n            metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\n        }\n\n        const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\n        this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\n        const endpointSource = await this.updateEndpointMetadata(metadataEntity);\n\n        if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\n            // Reset the expiration time unless both values came from a successful cache lookup\n            metadataEntity.resetExpiresAt();\n            metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\n        }\n\n        const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\n        this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\n        this.metadata = metadataEntity;\n    }\n\n    /**\n     * Update AuthorityMetadataEntity with new endpoints and return where the information came from\n     * @param metadataEntity\n     */\n    private async updateEndpointMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\n        let metadata = this.getEndpointMetadataFromConfig();\n        if (metadata) {\n            metadataEntity.updateEndpointMetadata(metadata, false);\n            return AuthorityMetadataSource.CONFIG;\n        }\n\n        if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\n            // No need to update\n            return AuthorityMetadataSource.CACHE;\n        }\n\n        metadata = await this.getEndpointMetadataFromNetwork();\n        if (metadata) {\n            // If the user prefers to use an azure region replace the global endpoints with regional information.\n            if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n                const autodetectedRegionName = await this.regionDiscovery.detectRegion(this.authorityOptions.azureRegionConfiguration.environmentRegion, this.regionDiscoveryMetadata, this.proxyUrl);\n\n                const azureRegion = this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG\n                    ? autodetectedRegionName\n                    : this.authorityOptions.azureRegionConfiguration.azureRegion;\n\n                if (this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\n                    this.regionDiscoveryMetadata.region_outcome = autodetectedRegionName ?\n                        RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL :\n                        RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\n                } else {\n                    if (autodetectedRegionName) {\n                        this.regionDiscoveryMetadata.region_outcome = (this.authorityOptions.azureRegionConfiguration.azureRegion === autodetectedRegionName) ?\n                            RegionDiscoveryOutcomes.CONFIGURED_MATCHES_DETECTED :\n                            RegionDiscoveryOutcomes.CONFIGURED_NOT_DETECTED;\n                    } else {\n                        this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\n                    }\n                }\n\n                if (azureRegion) {\n                    this.regionDiscoveryMetadata.region_used = azureRegion;\n                    metadata = Authority.replaceWithRegionalInformation(metadata, azureRegion);\n                }\n            }\n\n            metadataEntity.updateEndpointMetadata(metadata, true);\n            return AuthorityMetadataSource.NETWORK;\n        } else {\n            throw ClientAuthError.createUnableToGetOpenidConfigError(this.defaultOpenIdConfigurationEndpoint);\n        }\n    }\n\n    /**\n     * Compares the number of url components after the domain to determine if the cached authority metadata can be used for the requested authority\n     * Protects against same domain different authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\n     * @param metadataEntity\n     */\n    private isAuthoritySameType(metadataEntity: AuthorityMetadataEntity): boolean {\n        const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\n        const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n\n        return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\n    }\n\n    /**\n     * Parse authorityMetadata config option\n     */\n    private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\n        if (this.authorityOptions.authorityMetadata) {\n            try {\n                return JSON.parse(this.authorityOptions.authorityMetadata) as OpenIdConfigResponse;\n            } catch (e) {\n                throw ClientConfigurationError.createInvalidAuthorityMetadataError();\n            }\n        }\n\n        return null;\n    }\n\n    /**\n     * Gets OAuth endpoints from the given OpenID configuration endpoint.\n     */\n    private async getEndpointMetadataFromNetwork(): Promise<OpenIdConfigResponse | null> {\n        const options: ImdsOptions = {};\n        if (this.proxyUrl) {\n            options.proxyUrl = this.proxyUrl;\n        }\n\n        try {\n            const response = await this.networkInterface.sendGetRequestAsync<OpenIdConfigResponse>(this.defaultOpenIdConfigurationEndpoint, options);\n            return isOpenIdConfigResponse(response.body) ? response.body : null;\n        } catch (e) {\n            return null;\n        }\n    }\n\n    /**\n     * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache and returns where the information was retrived from\n     * @param cachedMetadata\n     * @param newMetadata\n     */\n    private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\n        let metadata = this.getCloudDiscoveryMetadataFromConfig();\n        if (metadata) {\n            metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\n            return AuthorityMetadataSource.CONFIG;\n        }\n\n        // If The cached metadata came from config but that config was not passed to this instance, we must go to the network\n        if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntity.isExpired()) {\n            // No need to update\n            return AuthorityMetadataSource.CACHE;\n        }\n\n        metadata = await this.getCloudDiscoveryMetadataFromNetwork();\n        if (metadata) {\n            metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\n            return AuthorityMetadataSource.NETWORK;\n        } else {\n            // Metadata could not be obtained from config, cache or network\n            throw ClientConfigurationError.createUntrustedAuthorityError();\n        }\n    }\n\n    /**\n     * Parse cloudDiscoveryMetadata config or check knownAuthorities\n     */\n    private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\n        // Check if network response was provided in config\n        if (this.authorityOptions.cloudDiscoveryMetadata) {\n            try {\n                const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\n                const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\n                if (metadata) {\n                    return metadata;\n                }\n            } catch (e) {\n                throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\n            }\n        }\n\n        // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\n        if (this.isInKnownAuthorities()) {\n            return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\n        }\n\n        return null;\n    }\n\n    /**\n     * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\n     * @param networkInterface\n     */\n    private async getCloudDiscoveryMetadataFromNetwork(): Promise<CloudDiscoveryMetadata | null> {\n        const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\n        const options: ImdsOptions = {};\n        if (this.proxyUrl) {\n            options.proxyUrl = this.proxyUrl;\n        }\n\n        let match = null;\n        try {\n            const response = await this.networkInterface.sendGetRequestAsync<CloudInstanceDiscoveryResponse>(instanceDiscoveryEndpoint, options);\n            const metadata = isCloudInstanceDiscoveryResponse(response.body) ? response.body.metadata : [];\n            if (metadata.length === 0) {\n                // If no metadata is returned, authority is untrusted\n                return null;\n            }\n            match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\n        } catch(e) {\n            return null;\n        }\n\n        if (!match) {\n            // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\n            match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\n        }\n        return match;\n    }\n\n    /**\n     * Helper function to determine if this host is included in the knownAuthorities config option\n     */\n    private isInKnownAuthorities(): boolean {\n        const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\n            return UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort;\n        });\n\n        return matches.length > 0;\n    }\n\n    /**\n     * helper function to populate the authority based on azureCloudOptions\n     * @param authorityString\n     * @param azureCloudOptions\n     */\n    static generateAuthority(authorityString: string, azureCloudOptions?: AzureCloudOptions): string {\n        let authorityAzureCloudInstance;\n\n        if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\n            const tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT;\n            authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\n        }\n\n        return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString;\n    }\n\n    /**\n     * Creates cloud discovery metadata object from a given host\n     * @param host\n     */\n    static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata {\n        return {\n            preferred_network: host,\n            preferred_cache: host,\n            aliases: [host]\n        };\n    }\n\n    /**\n     * Searches instance discovery network response for the entry that contains the host in the aliases list\n     * @param response\n     * @param authority\n     */\n    static getCloudDiscoveryMetadataFromNetworkResponse(response: CloudDiscoveryMetadata[], authority: string): CloudDiscoveryMetadata | null {\n        for (let i = 0; i < response.length; i++) {\n            const metadata = response[i];\n            if (metadata.aliases.indexOf(authority) > -1) {\n                return metadata;\n            }\n        }\n\n        return null;\n    }\n\n    /**\n     * helper function to generate environment from authority object\n     */\n    getPreferredCache(): string {\n        if(this.discoveryComplete()) {\n            return this.metadata.preferred_cache;\n        } else {\n            throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n        }\n    }\n\n    /**\n     * Returns whether or not the provided host is an alias of this authority instance\n     * @param host\n     */\n    isAlias(host: string): boolean {\n        return this.metadata.aliases.indexOf(host) > -1;\n    }\n\n    /**\n     * Checks whether the provided host is that of a public cloud authority\n     *\n     * @param authority string\n     * @returns bool\n     */\n    static isPublicCloudAuthority(host: string): boolean {\n        return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\n    }\n\n    /**\n     * Rebuild the authority string with the region\n     *\n     * @param host string\n     * @param region string\n     */\n    static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string {\n        // Create and validate a Url string object with the initial authority string\n        const authorityUrlInstance = new UrlString(host);\n        authorityUrlInstance.validateAsUri();\n\n        const authorityUrlParts = authorityUrlInstance.getUrlComponents();\n\n        let hostNameAndPort= `${region}.${authorityUrlParts.HostNameAndPort}`;\n\n        if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\n            hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\n        }\n\n        // Include the query string portion of the url\n        const url = UrlString.constructAuthorityUriFromObject({\n            ...authorityUrlInstance.getUrlComponents(),\n            HostNameAndPort: hostNameAndPort\n        }).urlString;\n\n        // Add the query string if a query string was provided\n        if (queryString) return `${url}?${queryString}`;\n\n        return url;\n    }\n\n    /**\n     * Replace the endpoints in the metadata object with their regional equivalents.\n     *\n     * @param metadata OpenIdConfigResponse\n     * @param azureRegion string\n     */\n    static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse {\n        metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\n        // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\n        metadata.token_endpoint = Authority.buildRegionalAuthorityString(metadata.token_endpoint, azureRegion, \"allowestsrnonmsi=true\");\n\n        if (metadata.end_session_endpoint) {\n            metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\n        }\n\n        return metadata;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Authority } from \"./Authority\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\nimport { AuthorityOptions } from \"./AuthorityOptions\";\n\nexport class AuthorityFactory {\n\n    /**\n     * Create an authority object of the correct type based on the url\n     * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n     *\n     * Also performs endpoint discovery.\n     *\n     * @param authorityUri\n     * @param networkClient\n     * @param protocolMode\n     */\n    static async createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string): Promise<Authority> {\n        // Initialize authority and perform discovery endpoint check.\n        const acquireTokenAuthority: Authority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions, proxyUrl);\n\n        try {\n            await acquireTokenAuthority.resolveEndpointsAsync();\n            return acquireTokenAuthority;\n        } catch (e) {\n            throw ClientAuthError.createEndpointDiscoveryIncompleteError(e);\n        }\n    }\n\n    /**\n     * Create an authority object of the correct type based on the url\n     * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n     *\n     * Does not perform endpoint discovery.\n     *\n     * @param authorityUrl\n     * @param networkInterface\n     * @param protocolMode\n     */\n    static createInstance(authorityUrl: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string): Authority {\n        // Throw error if authority url is empty\n        if (StringUtils.isEmpty(authorityUrl)) {\n            throw ClientConfigurationError.createUrlEmptyError();\n        }\n\n        return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, proxyUrl);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SERVER_TELEM_CONSTANTS } from \"../../utils/Constants\";\n\nexport class ServerTelemetryEntity {\n    failedRequests: Array<string|number>;\n    errors: string[];\n    cacheHits: number;\n\n    constructor() {\n        this.failedRequests = [];\n        this.errors = [];\n        this.cacheHits = 0;\n    }\n\n    /**\n     * validates if a given cache entry is \"Telemetry\", parses <key,value>\n     * @param key\n     * @param entity\n     */\n    static isServerTelemetryEntity(key: string, entity?: object): boolean {\n\n        const validateKey: boolean = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\n        let validateEntity: boolean = true;\n\n        if (entity) {\n            validateEntity =\n                entity.hasOwnProperty(\"failedRequests\") &&\n                entity.hasOwnProperty(\"errors\") &&\n                entity.hasOwnProperty(\"cacheHits\");\n        }\n\n        return validateKey && validateEntity;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ThrottlingConstants } from \"../../utils/Constants\";\n\nexport class ThrottlingEntity {\n    // Unix-time value representing the expiration of the throttle\n    throttleTime: number;\n    // Information provided by the server\n    error?: string;\n    errorCodes?: Array<string>;\n    errorMessage?: string;\n    subError?: string;\n\n    /**\n     * validates if a given cache entry is \"Throttling\", parses <key,value>\n     * @param key\n     * @param entity\n     */\n    static isThrottlingEntity(key: string, entity?: object): boolean {\n        \n        let validateKey: boolean = false;\n        if (key) {\n            validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\n        }\n        \n        let validateEntity: boolean = true;\n        if (entity) {\n            validateEntity = entity.hasOwnProperty(\"throttleTime\");\n        }\n\n        return validateKey && validateEntity;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"../error/AuthError\";\nimport { NetworkResponse } from \"./NetworkManager\";\n\n/**\n * Options allowed by network request APIs.\n */\nexport type NetworkRequestOptions = {\n    headers?: Record<string, string>,\n    body?: string;\n    proxyUrl?: string;\n};\n\n/**\n * Client network interface to send backend requests.\n * @interface\n */\nexport interface INetworkModule {\n\n    /**\n     * Interface function for async network \"GET\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\n     * @param url\n     * @param requestParams\n     * @param enableCaching\n     */\n    sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions, cancellationToken?: number): Promise<NetworkResponse<T>>;\n\n    /**\n     * Interface function for async network \"POST\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\n     * @param url\n     * @param requestParams\n     * @param enableCaching\n     */\n    sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>>;\n}\n\nexport const StubbedNetworkModule: INetworkModule = {\n    sendGetRequestAsync: () => {\n        const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented for the Network interface.\";\n        return Promise.reject(AuthError.createUnexpectedError(notImplErr));\n    },\n    sendPostRequestAsync: () => {\n        const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented for the Network interface.\";\n        return Promise.reject(AuthError.createUnexpectedError(notImplErr));\n    }\n};\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SERVER_TELEM_CONSTANTS, Separators, CacheOutcome, Constants, RegionDiscoverySources, RegionDiscoveryOutcomes } from \"../../utils/Constants\";\nimport { CacheManager } from \"../../cache/CacheManager\";\nimport { AuthError } from \"../../error/AuthError\";\nimport { ServerTelemetryRequest } from \"./ServerTelemetryRequest\";\nimport { ServerTelemetryEntity } from \"../../cache/entities/ServerTelemetryEntity\";\nimport { StringUtils } from \"../../utils/StringUtils\";\nimport { RegionDiscoveryMetadata } from \"../../authority/RegionDiscoveryMetadata\";\n\nexport class ServerTelemetryManager {\n    private cacheManager: CacheManager;\n    private apiId: number;\n    private correlationId: string;\n    private telemetryCacheKey: string;\n    private wrapperSKU: String;\n    private wrapperVer: String;\n    private regionUsed: string | undefined;\n    private regionSource: RegionDiscoverySources | undefined;\n    private regionOutcome: RegionDiscoveryOutcomes | undefined;\n    private cacheOutcome: CacheOutcome = CacheOutcome.NO_CACHE_HIT;\n\n    constructor(telemetryRequest: ServerTelemetryRequest, cacheManager: CacheManager) {\n        this.cacheManager = cacheManager;\n        this.apiId = telemetryRequest.apiId;\n        this.correlationId = telemetryRequest.correlationId;\n        this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\n        this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\n\n        this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId;\n    }\n\n    /**\n     * API to add MSER Telemetry to request\n     */\n    generateCurrentRequestHeaderValue(): string {\n        const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\n        const platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n        const regionDiscoveryFields = this.getRegionDiscoveryFields();\n        const requestWithRegionDiscoveryFields = [request, regionDiscoveryFields].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n\n        return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, requestWithRegionDiscoveryFields, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\n    }\n\n    /**\n     * API to add MSER Telemetry for the last failed request\n     */\n    generateLastRequestHeaderValue(): string {\n        const lastRequests = this.getLastRequests();\n\n        const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\n        const failedRequests = lastRequests.failedRequests.slice(0, 2*maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n        const errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n        const errorCount = lastRequests.errors.length;\n\n        // Indicate whether this header contains all data or partial data\n        const overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\n        const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n\n        return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, lastRequests.cacheHits, failedRequests, errors, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\n    }\n\n    /**\n     * API to cache token failures for MSER data capture\n     * @param error\n     */\n    cacheFailedRequest(error: AuthError): void {\n        const lastRequests = this.getLastRequests();\n        if (lastRequests.errors.length >= SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\n            // Remove a cached error to make room, first in first out\n            lastRequests.failedRequests.shift(); // apiId\n            lastRequests.failedRequests.shift(); // correlationId\n            lastRequests.errors.shift();\n        }\n        \n        lastRequests.failedRequests.push(this.apiId, this.correlationId);\n\n        if (!StringUtils.isEmpty(error.subError)) {\n            lastRequests.errors.push(error.subError);\n        } else if (!StringUtils.isEmpty(error.errorCode)) {\n            lastRequests.errors.push(error.errorCode);\n        } else if (!!error && error.toString()) {\n            lastRequests.errors.push(error.toString());\n        } else {\n            lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\n        }\n\n        this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\n\n        return;\n    }\n\n    /**\n     * Update server telemetry cache entry by incrementing cache hit counter\n     */\n    incrementCacheHits(): number {\n        const lastRequests = this.getLastRequests();\n        lastRequests.cacheHits += 1;\n\n        this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\n        return lastRequests.cacheHits;\n    }\n\n    /**\n     * Get the server telemetry entity from cache or initialize a new one\n     */\n    getLastRequests(): ServerTelemetryEntity {\n        const initialValue: ServerTelemetryEntity = new ServerTelemetryEntity();\n        const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey) as ServerTelemetryEntity;\n\n        return lastRequests || initialValue;\n    }\n\n    /**\n     * Remove server telemetry cache entry\n     */\n    clearTelemetryCache(): void {\n        const lastRequests = this.getLastRequests();\n        const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\n        const errorCount = lastRequests.errors.length;\n        if (numErrorsFlushed === errorCount) {\n            // All errors were sent on last request, clear Telemetry cache\n            this.cacheManager.removeItem(this.telemetryCacheKey);\n        } else {\n            // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\n            const serverTelemEntity = new ServerTelemetryEntity();\n            serverTelemEntity.failedRequests = lastRequests.failedRequests.slice(numErrorsFlushed*2); // failedRequests contains 2 items for each error\n            serverTelemEntity.errors = lastRequests.errors.slice(numErrorsFlushed);\n\n            this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\n        }\n    }\n\n    /**\n     * Returns the maximum number of errors that can be flushed to the server in the next network request\n     * @param serverTelemetryEntity\n     */\n    static maxErrorsToSend(serverTelemetryEntity: ServerTelemetryEntity): number {\n        let i;\n        let maxErrors = 0;\n        let dataSize = 0;\n        const errorCount = serverTelemetryEntity.errors.length;\n        for (i = 0; i < errorCount; i++) {\n            // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\n            const apiId = serverTelemetryEntity.failedRequests[2*i] || Constants.EMPTY_STRING;\n            const correlationId = serverTelemetryEntity.failedRequests[2*i + 1] || Constants.EMPTY_STRING;\n            const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\n\n            // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\n            dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3;\n\n            if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\n                // Adding this entry to the header would still keep header size below the limit\n                maxErrors += 1;\n            } else {\n                break;\n            }\n        }\n\n        return maxErrors;\n    }\n\n    /**\n     * Get the region discovery fields\n     * \n     * @returns string\n     */\n    getRegionDiscoveryFields(): string {\n        const regionDiscoveryFields: string[] = [];\n\n        regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\n        regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\n        regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\n\n        return regionDiscoveryFields.join(\",\");\n    }\n\n    /**\n     * Update the region discovery metadata\n     * \n     * @param regionDiscoveryMetadata\n     * @returns void\n     */\n    updateRegionDiscoveryMetadata(regionDiscoveryMetadata: RegionDiscoveryMetadata): void {\n        this.regionUsed = regionDiscoveryMetadata.region_used;\n        this.regionSource = regionDiscoveryMetadata.region_source;\n        this.regionOutcome = regionDiscoveryMetadata.region_outcome;\n    }\n\n    /**\n     * Set cache outcome \n     */\n    setCacheOutcome(cacheOutcome: CacheOutcome): void {\n        this.cacheOutcome = cacheOutcome;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { OIDC_DEFAULT_SCOPES } from \"@azure/msal-common\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\n\n/**\n * Constants\n */\nexport const BrowserConstants = {\n    /**\n     * Interaction in progress cache value\n     */\n    INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\n    /**\n     * Invalid grant error code\n     */\n    INVALID_GRANT_ERROR: \"invalid_grant\",\n    /**\n     * Default popup window width\n     */\n    POPUP_WIDTH: 483,\n    /**\n     * Default popup window height\n     */\n    POPUP_HEIGHT: 600,\n    /**\n     * Name of the popup window starts with\n     */\n    POPUP_NAME_PREFIX: \"msal\",\n    /**\n     * Default popup monitor poll interval in milliseconds\n     */\n    POLL_INTERVAL_MS: 50,\n    /**\n     * Msal-browser SKU\n     */\n    MSAL_SKU: \"msal.js.browser\",\n};\n\nexport enum BrowserCacheLocation {\n    LocalStorage = \"localStorage\",\n    SessionStorage = \"sessionStorage\",\n    MemoryStorage = \"memoryStorage\"\n}\n\n/**\n * HTTP Request types supported by MSAL.\n */\nexport enum HTTP_REQUEST_TYPE {\n    GET = \"GET\",\n    POST = \"POST\"\n}\n\n/**\n * Temporary cache keys for MSAL, deleted after any request.\n */\nexport enum TemporaryCacheKeys {\n    AUTHORITY = \"authority\",\n    ACQUIRE_TOKEN_ACCOUNT = \"acquireToken.account\",\n    SESSION_STATE = \"session.state\",\n    REQUEST_STATE = \"request.state\",\n    NONCE_IDTOKEN = \"nonce.id_token\",\n    ORIGIN_URI = \"request.origin\",\n    RENEW_STATUS = \"token.renew.status\",\n    URL_HASH = \"urlHash\",\n    REQUEST_PARAMS = \"request.params\",\n    SCOPES = \"scopes\",\n    INTERACTION_STATUS_KEY = \"interaction.status\",\n    CCS_CREDENTIAL = \"ccs.credential\",\n    CORRELATION_ID = \"request.correlationId\"\n}\n\n/**\n * Cache keys stored in-memory\n */\nexport enum InMemoryCacheKeys {\n    WRAPPER_SKU = \"wrapper.sku\",\n    WRAPPER_VER = \"wrapper.version\"\n}\n\n/**\n * API Codes for Telemetry purposes. \n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\n * 0-99 Silent Flow\n * 800-899 Auth Code Flow\n */\nexport enum ApiId {\n    acquireTokenRedirect = 861,\n    acquireTokenPopup = 862,\n    ssoSilent = 863,\n    acquireTokenSilent_authCode = 864,\n    handleRedirectPromise = 865,\n    acquireTokenByCode = 866,\n    acquireTokenSilent_silentFlow = 61,\n    logout = 961,\n    logoutPopup = 962\n}\n\n/*\n * Interaction type of the API - used for state and telemetry\n */\nexport enum InteractionType {\n    Redirect = \"redirect\",\n    Popup = \"popup\",\n    Silent = \"silent\",\n    None = \"none\"\n}\n\n/**\n * Types of interaction currently in progress.\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\n */\nexport enum InteractionStatus {\n    /**\n     * Initial status before interaction occurs\n     */\n    Startup = \"startup\",\n    /**\n     * Status set when all login calls occuring\n     */\n    Login = \"login\",\n    /**\n     * Status set when logout call occuring\n     */ \n    Logout = \"logout\",\n    /**\n     * Status set for acquireToken calls\n     */\n    AcquireToken = \"acquireToken\",\n    /**\n     * Status set for ssoSilent calls\n     */\n    SsoSilent = \"ssoSilent\",\n    /**\n     * Status set when handleRedirect in progress\n     */\n    HandleRedirect = \"handleRedirect\",\n    /**\n     * Status set when interaction is complete\n     */\n    None = \"none\"\n}\n\nexport const DEFAULT_REQUEST: RedirectRequest|PopupRequest = {\n    scopes: OIDC_DEFAULT_SCOPES\n};\n\n/**\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\n */\nexport const KEY_FORMAT_JWK = \"jwk\";\n\n// Supported wrapper SKUs\nexport enum WrapperSKU {\n    React = \"@azure/msal-react\",\n    Angular = \"@azure/msal-angular\"\n}\n\n// DatabaseStorage Constants\nexport const DB_NAME = \"msal.db\";\nexport const DB_VERSION = 1;\nexport const DB_TABLE_NAME = `${DB_NAME}.keys`;\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Utility class for math specific functions in browser.\n */\nexport class MathUtils {\n\n    /**\n     * Decimal to Hex\n     *\n     * @param num\n     */\n    static decimalToHex(num: number): string {\n        let hex: string = num.toString(16);\n        while (hex.length < 2) {\n            hex = \"0\" + hex;\n        }\n        return hex;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { MathUtils } from \"../utils/MathUtils\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\n\nexport class GuidGenerator {\n\n    // browser crypto object used to generate random values\n    private cryptoObj: BrowserCrypto;\n\n    constructor(cryptoObj: BrowserCrypto) {\n        this.cryptoObj = cryptoObj;\n    }\n\n    /*\n     * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\n     * pseudo-random numbers.\n     * The algorithm is as follows:\n     *     Set the two most significant bits (bits 6 and 7) of the\n     *        clock_seq_hi_and_reserved to zero and one, respectively.\n     *     Set the four most significant bits (bits 12 through 15) of the\n     *        time_hi_and_version field to the 4-bit version number from\n     *        Section 4.1.3. Version4\n     *     Set all the other bits to randomly (or pseudo-randomly) chosen\n     *     values.\n     * UUID                   = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\n     * time-low               = 4hexOctet\n     * time-mid               = 2hexOctet\n     * time-high-and-version  = 2hexOctet\n     * clock-seq-and-reserved = hexOctet:\n     * clock-seq-low          = hexOctet\n     * node                   = 6hexOctet\n     * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n     * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\n     * y values are 8, 9, A, B\n     */\n    generateGuid(): string {\n        try {\n            const buffer: Uint8Array = new Uint8Array(16);\n            this.cryptoObj.getRandomValues(buffer);\n\n            // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\n            buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\n            buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\n\n            // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\n            buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\n            buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\n\n            return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\n                + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\n                + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\n                + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\n                + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\n                + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\n                + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\n                + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\n        }\n        catch (err) {\n            const guidHolder: string = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\n            const hex: string = \"0123456789abcdef\";\n            let r: number = 0;\n            let guidResponse: string = \"\";\n            for (let i: number = 0; i < 36; i++) {\n                if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\n                    // each x and y needs to be random\n                    r = Math.random() * 16 | 0;\n                }\n                if (guidHolder[i] === \"x\") {\n                    guidResponse += hex[r];\n                } else if (guidHolder[i] === \"y\") {\n                    // clock-seq-and-reserved first hex is filtered and remaining hex values are random\n                    r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\n                    r |= 0x8; // set pos 3 to 1 as 1???\n                    guidResponse += hex[r];\n                } else {\n                    guidResponse += guidHolder[i];\n                }\n            }\n            return guidResponse;\n        }\n    }\n\n    /**\n     * verifies if a string is  GUID\n     * @param guid\n     */\n    static isGuid(guid: string): boolean {\n        const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n        return regexGuid.test(guid);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Utility functions for strings in a browser. See here for implementation details:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\n */\nexport class BrowserStringUtils {\n\n    /**\n     * Converts string to Uint8Array\n     * @param sDOMStr \n     */\n    static stringToUtf8Arr (sDOMStr: string): Uint8Array {\n        let nChr;\n        let nArrLen = 0;\n        const nStrLen = sDOMStr.length;\n        /* mapping... */\n        for (let nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\n            nChr = sDOMStr.charCodeAt(nMapIdx);\n            nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\n        }\n\n        const aBytes = new Uint8Array(nArrLen);\n\n        /* transcription... */\n\n        for (let nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\n            nChr = sDOMStr.charCodeAt(nChrIdx);\n            if (nChr < 128) {\n                /* one byte */\n                aBytes[nIdx++] = nChr;\n            } else if (nChr < 0x800) {\n                /* two bytes */\n                aBytes[nIdx++] = 192 + (nChr >>> 6);\n                aBytes[nIdx++] = 128 + (nChr & 63);\n            } else if (nChr < 0x10000) {\n                /* three bytes */\n                aBytes[nIdx++] = 224 + (nChr >>> 12);\n                aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n                aBytes[nIdx++] = 128 + (nChr & 63);\n            } else if (nChr < 0x200000) {\n                /* four bytes */\n                aBytes[nIdx++] = 240 + (nChr >>> 18);\n                aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n                aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n                aBytes[nIdx++] = 128 + (nChr & 63);\n            } else if (nChr < 0x4000000) {\n                /* five bytes */\n                aBytes[nIdx++] = 248 + (nChr >>> 24);\n                aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\n                aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n                aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n                aBytes[nIdx++] = 128 + (nChr & 63);\n            } else /* if (nChr <= 0x7fffffff) */ {\n                /* six bytes */\n                aBytes[nIdx++] = 252 + (nChr >>> 30);\n                aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\n                aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\n                aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n                aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n                aBytes[nIdx++] = 128 + (nChr & 63);\n            }\n        }\n\n        return aBytes;      \n    }\n\n    /**\n     * Converst string to ArrayBuffer\n     * @param dataString \n     */\n    static stringToArrayBuffer(dataString: string): ArrayBuffer {\n        const data = new ArrayBuffer(dataString.length);\n        const dataView = new Uint8Array(data);\n        for (let i: number = 0; i < dataString.length; i++) {\n            dataView[i] = dataString.charCodeAt(i);\n        }\n        return data;\n    }\n\n    /**\n     * Converts Uint8Array to a string\n     * @param aBytes \n     */\n    static utf8ArrToString (aBytes: Uint8Array): string {\n        let sView = \"\";\n        for (let nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\n            nPart = aBytes[nIdx];\n            sView += String.fromCharCode(\n                nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\n                    /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\n                    (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n                    : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\n                        (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n                        : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\n                            (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n                            : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\n                                (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n                                : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\n                                    (nPart - 192 << 6) + aBytes[++nIdx] - 128\n                                    : /* nPart < 127 ? */ /* one byte */\n                                    nPart\n            );\n        }\n        return sView;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\n\n/**\n * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\n */\nexport class Base64Encode {\n    \n    /**\n     * Returns URL Safe b64 encoded string from a plaintext string.\n     * @param input \n     */\n    urlEncode(input: string): string {\n        return encodeURIComponent(this.encode(input)\n            .replace(/=/g, \"\")\n            .replace(/\\+/g, \"-\")\n            .replace(/\\//g, \"_\"));\n    }\n\n    /**\n     * Returns URL Safe b64 encoded string from an int8Array.\n     * @param inputArr \n     */\n    urlEncodeArr(inputArr: Uint8Array): string {\n        return this.base64EncArr(inputArr)\n            .replace(/=/g, \"\")\n            .replace(/\\+/g, \"-\")\n            .replace(/\\//g, \"_\");\n    }\n\n    /**\n     * Returns b64 encoded string from plaintext string.\n     * @param input \n     */\n    encode(input: string): string {\n        const inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\n        return this.base64EncArr(inputUtf8Arr);\n    }\n\n    /**\n     * Base64 encode byte array\n     * @param aBytes \n     */\n    private base64EncArr(aBytes: Uint8Array): string {  \n        const eqLen = (3 - (aBytes.length % 3)) % 3;\n        let sB64Enc = \"\";\n      \n        for (let nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\n            nMod3 = nIdx % 3;\n            /* Uncomment the following line in order to split the output in lines 76-character long: */\n            /*\n             *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\n             */\n            nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\n            if (nMod3 === 2 || aBytes.length - nIdx === 1) {\n                sB64Enc += String.fromCharCode(\n                    this.uint6ToB64(nUint24 >>> 18 & 63), \n                    this.uint6ToB64(nUint24 >>> 12 & 63), \n                    this.uint6ToB64(nUint24 >>> 6 & 63), \n                    this.uint6ToB64(nUint24 & 63)\n                );\n                nUint24 = 0;\n            }\n        }\n\n        return  eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\n    }\n\n    /**\n     * Base64 string to array encoding helper\n     * @param nUint6 \n     */\n    private uint6ToB64 (nUint6: number): number {\n        return nUint6 < 26 ?\n            nUint6 + 65\n            : nUint6 < 52 ?\n                nUint6 + 71\n                : nUint6 < 62 ?\n                    nUint6 - 4\n                    : nUint6 === 62 ?\n                        43\n                        : nUint6 === 63 ?\n                            47\n                            :\n                            65;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\n\n/**\n * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\n */\nexport class Base64Decode {\n\n    /**\n     * Returns a URL-safe plaintext decoded string from b64 encoded input.\n     * @param input \n     */\n    decode(input: string): string {\n        let encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\n        switch (encodedString.length % 4) {\n            case 0:\n                break;\n            case 2:\n                encodedString += \"==\";\n                break;\n            case 3:\n                encodedString += \"=\";\n                break;\n            default:\n                throw new Error(\"Invalid base64 string\");\n        }\n\n        const inputUtf8Arr = this.base64DecToArr(encodedString);\n        return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\n    }\n\n    /**\n     * Decodes base64 into Uint8Array\n     * @param base64String \n     * @param nBlockSize \n     */\n    private base64DecToArr(base64String: string, nBlockSize?: number): Uint8Array {\n        const sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, \"\");\n        const nInLen = sB64Enc.length;\n        const nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\n        const aBytes = new Uint8Array(nOutLen);\n\n        for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n            nMod4 = nInIdx & 3;\n            nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\n            if (nMod4 === 3 || nInLen - nInIdx === 1) {\n                for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\n                    aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\n                }\n                nUint24 = 0;\n            }\n        }\n\n        return aBytes;\n    }\n\n    /**\n     * Base64 string to array decoding helper\n     * @param charNum \n     */\n    private b64ToUint6(charNum: number): number {\n        return charNum > 64 && charNum < 91 ?\n            charNum - 65\n            : charNum > 96 && charNum < 123 ? \n                charNum - 71\n                : charNum > 47 && charNum < 58 ?\n                    charNum + 4\n                    : charNum === 43 ?\n                        62\n                        : charNum === 47 ?\n                            63\n                            :\n                            0;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError, StringUtils } from \"@azure/msal-common\";\n\n/**\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const BrowserAuthErrorMessage = {\n    pkceNotGenerated: {\n        code: \"pkce_not_created\",\n        desc: \"The PKCE code challenge and verifier could not be generated.\"\n    },\n    cryptoDoesNotExist: {\n        code: \"crypto_nonexistent\",\n        desc: \"The crypto object or function is not available.\"\n    },\n    httpMethodNotImplementedError: {\n        code: \"http_method_not_implemented\",\n        desc: \"The HTTP method given has not been implemented in this library.\"\n    },\n    emptyNavigateUriError: {\n        code: \"empty_navigate_uri\",\n        desc: \"Navigation URI is empty. Please check stack trace for more info.\"\n    },\n    hashEmptyError: {\n        code: \"hash_empty_error\",\n        desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash.\"\n    },\n    hashDoesNotContainStateError: {\n        code: \"no_state_in_hash\",\n        desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\n    },\n    hashDoesNotContainKnownPropertiesError: {\n        code: \"hash_does_not_contain_known_properties\",\n        desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash.\"\n    },\n    unableToParseStateError: {\n        code: \"unable_to_parse_state\",\n        desc: \"Unable to parse state. Please verify that the request originated from msal.\"\n    },\n    stateInteractionTypeMismatchError: {\n        code: \"state_interaction_type_mismatch\",\n        desc: \"Hash contains state but the interaction type does not match the caller.\"\n    },\n    interactionInProgress: {\n        code: \"interaction_in_progress\",\n        desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API.  For more visit: aka.ms/msaljs/browser-errors.\"\n    },\n    popupWindowError: {\n        code: \"popup_window_error\",\n        desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\n    },\n    emptyWindowError: {\n        code: \"empty_window_error\",\n        desc: \"window.open returned null or undefined window object.\"\n    },\n    userCancelledError: {\n        code: \"user_cancelled\",\n        desc: \"User cancelled the flow.\"\n    },\n    monitorPopupTimeoutError: {\n        code: \"monitor_window_timeout\",\n        desc: \"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\n    },\n    monitorIframeTimeoutError: {\n        code: \"monitor_window_timeout\",\n        desc: \"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\n    },\n    redirectInIframeError: {\n        code: \"redirect_in_iframe\",\n        desc: \"Code flow is not supported inside an iframe. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\"\n    },\n    blockTokenRequestsInHiddenIframeError: {\n        code: \"block_iframe_reload\",\n        desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\n    },\n    blockAcquireTokenInPopupsError: {\n        code: \"block_nested_popups\",\n        desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\n    },\n    iframeClosedPrematurelyError: {\n        code: \"iframe_closed_prematurely\",\n        desc: \"The iframe being monitored was closed prematurely.\"\n    },\n    silentLogoutUnsupportedError: {\n        code: \"silent_logout_unsupported\",\n        desc: \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\"\n    },\n    noAccountError: {\n        code: \"no_account_error\",\n        desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\n    },\n    silentPromptValueError: {\n        code: \"silent_prompt_value_error\",\n        desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none'.\"\n    },\n    noTokenRequestCacheError: {\n        code: \"no_token_request_cache_error\",\n        desc: \"No token request found in cache.\"\n    },\n    unableToParseTokenRequestCacheError: {\n        code: \"unable_to_parse_token_request_cache_error\",\n        desc: \"The cached token request could not be parsed.\"\n    },\n    noCachedAuthorityError: {\n        code: \"no_cached_authority_error\",\n        desc: \"No cached authority found.\"\n    },\n    authRequestNotSet: {\n        code: \"auth_request_not_set_error\",\n        desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\n    },\n    invalidCacheType: {\n        code: \"invalid_cache_type\",\n        desc: \"Invalid cache type\"\n    },\n    notInBrowserEnvironment: {\n        code: \"non_browser_environment\",\n        desc: \"Login and token requests are not supported in non-browser environments.\"\n    },\n    databaseNotOpen: {\n        code: \"database_not_open\",\n        desc: \"Database is not open!\"\n    },\n    noNetworkConnectivity: {\n        code: \"no_network_connectivity\",\n        desc: \"No network connectivity. Check your internet connection.\"\n    },\n    postRequestFailed: {\n        code: \"post_request_failed\",\n        desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\n    },\n    getRequestFailed: {\n        code: \"get_request_failed\",\n        desc: \"Network request failed. Please check the network trace to determine root cause.\"\n    },\n    failedToParseNetworkResponse: {\n        code: \"failed_to_parse_response\",\n        desc: \"Failed to parse network response. Check network trace.\"\n    },\n    unableToLoadTokenError: {\n        code: \"unable_to_load_token\",\n        desc: \"Error loading token to cache.\"\n    },\n    signingKeyNotFoundInStorage: {\n        code: \"crypto_key_not_found\",\n        desc: \"Cryptographic Key or Keypair not found in browser storage.\"\n    },\n    authCodeRequired: {\n        code: \"auth_code_required\",\n        desc: \"An authorization code must be provided (as the `code` property on the request) to this flow.\"\n    },\n    databaseUnavailable: {\n        code: \"database_unavailable\",\n        desc: \"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.\"\n    }\n};\n\n/**\n * Browser library error class thrown by the MSAL.js library for SPAs\n */\nexport class BrowserAuthError extends AuthError {\n\n    constructor(errorCode: string, errorMessage?: string) {\n        super(errorCode, errorMessage);\n\n        Object.setPrototypeOf(this, BrowserAuthError.prototype);\n        this.name = \"BrowserAuthError\";\n    }\n\n    /**\n     * Creates an error thrown when PKCE is not implemented.\n     * @param errDetail \n     */\n    static createPkceNotGeneratedError(errDetail: string): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code,\n            `${BrowserAuthErrorMessage.pkceNotGenerated.desc} Detail:${errDetail}`);\n    }\n\n    /**\n     * Creates an error thrown when the crypto object is unavailable.\n     * @param errDetail \n     */\n    static createCryptoNotAvailableError(errDetail: string): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code,\n            `${BrowserAuthErrorMessage.cryptoDoesNotExist.desc} Detail:${errDetail}`);\n    }\n\n    /**\n     * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\n     * @param method \n     */\n    static createHttpMethodNotImplementedError(method: string): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code,\n            `${BrowserAuthErrorMessage.httpMethodNotImplementedError.desc} Given Method: ${method}`);\n    }\n\n    /**\n     * Creates an error thrown when the navigation URI is empty.\n     */\n    static createEmptyNavigationUriError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\n    }\n\n    /**\n     * Creates an error thrown when the hash string value is unexpectedly empty.\n     * @param hashValue \n     */\n    static createEmptyHashError(hashValue: string): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, `${BrowserAuthErrorMessage.hashEmptyError.desc} Given Url: ${hashValue}`);\n    }\n\n    /**\n     * Creates an error thrown when the hash string value is unexpectedly empty.\n     */\n    static createHashDoesNotContainStateError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\n    }\n\n    /**\n     * Creates an error thrown when the hash string value does not contain known properties\n     */\n    static createHashDoesNotContainKnownPropertiesError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\n    }\n\n    /**\n     * Creates an error thrown when the hash string value is unexpectedly empty.\n     */\n    static createUnableToParseStateError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\n    }\n\n    /**\n     * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\n     */\n    static createStateInteractionTypeMismatchError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\n    }\n\n    /**\n     * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\n     */\n    static createInteractionInProgressError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\n    }\n\n    /**\n     * Creates an error thrown when the popup window could not be opened.\n     * @param errDetail \n     */\n    static createPopupWindowError(errDetail?: string): BrowserAuthError {\n        let errorMessage = BrowserAuthErrorMessage.popupWindowError.desc;\n        errorMessage = !StringUtils.isEmpty(errDetail) ? `${errorMessage} Details: ${errDetail}` : errorMessage;\n        return new BrowserAuthError(BrowserAuthErrorMessage.popupWindowError.code, errorMessage);\n    }\n\n    /**\n     * Creates an error thrown when window.open returns an empty window object.\n     * @param errDetail \n     */\n    static createEmptyWindowCreatedError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\n    }\n\n    /**\n     * Creates an error thrown when the user closes a popup.\n     */\n    static createUserCancelledError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code,\n            BrowserAuthErrorMessage.userCancelledError.desc);\n    }\n\n    /**\n     * Creates an error thrown when monitorPopupFromHash times out for a given popup.\n     */\n    static createMonitorPopupTimeoutError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code,\n            BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\n    }\n\n    /**\n     * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\n     */\n    static createMonitorIframeTimeoutError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code,\n            BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\n    }\n\n    /**\n     * Creates an error thrown when navigateWindow is called inside an iframe.\n     * @param windowParentCheck \n     */\n    static createRedirectInIframeError(windowParentCheck: boolean): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code, \n            `${BrowserAuthErrorMessage.redirectInIframeError.desc} (window.parent !== window) => ${windowParentCheck}`);\n    }\n\n    /**\n     * Creates an error thrown when an auth reload is done inside an iframe.\n     */\n    static createBlockReloadInHiddenIframeError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code,\n            BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\n    }\n\n    /**\n     * Creates an error thrown when a popup attempts to call an acquireToken API\n     * @returns \n     */\n    static createBlockAcquireTokenInPopupsError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code, \n            BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\n    }\n\n    /**\n     * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\n     */\n    static createIframeClosedPrematurelyError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\n    }\n\n    /**\n     * Creates an error thrown when the logout API is called on any of the silent interaction clients\n     */\n    static createSilentLogoutUnsupportedError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.silentLogoutUnsupportedError.code, BrowserAuthErrorMessage.silentLogoutUnsupportedError.desc);\n    }\n\n    /**\n     * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\n     */\n    static createNoAccountError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\n    }\n\n    /**\n     * Creates an error thrown when a given prompt value is invalid for silent requests.\n     */\n    static createSilentPromptValueError(givenPrompt: string): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, `${BrowserAuthErrorMessage.silentPromptValueError.desc} Given value: ${givenPrompt}`);\n    }\n\n    /**\n     * Creates an error thrown when the cached token request could not be retrieved from the cache\n     */\n    static createUnableToParseTokenRequestCacheError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code,\n            BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\n    }\n\n    /**\n     * Creates an error thrown when the token request could not be retrieved from the cache\n     */\n    static createNoTokenRequestCacheError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code,\n            BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\n    }\n\n    /**\n     * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\n     */\n    static createAuthRequestNotSetError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code,\n            BrowserAuthErrorMessage.authRequestNotSet.desc);\n    }\n\n    /**\n     * Creates an error thrown when the authority could not be retrieved from the cache\n     */\n    static createNoCachedAuthorityError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code,\n            BrowserAuthErrorMessage.noCachedAuthorityError.desc);\n    }\n\n    /**\n     * Creates an error thrown if cache type is invalid.\n     */\n    static createInvalidCacheTypeError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, `${BrowserAuthErrorMessage.invalidCacheType.desc}`);\n    }\n\n    /**\n     * Create an error thrown when login and token requests are made from a non-browser environment\n     */\n    static createNonBrowserEnvironmentError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\n    }\n\n    /**\n     * Create an error thrown when indexDB database is not open\n     */\n    static createDatabaseNotOpenError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\n    }\n\n    /**\n     * Create an error thrown when token fetch fails due to no internet\n     */\n    static createNoNetworkConnectivityError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\n    }\n\n    /**\n     * Create an error thrown when token fetch fails due to reasons other than internet connectivity\n     */\n    static createPostRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, `${BrowserAuthErrorMessage.postRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n    }\n\n    /**\n     * Create an error thrown when get request fails due to reasons other than internet connectivity\n     */\n    static createGetRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, `${BrowserAuthErrorMessage.getRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n    }\n\n    /**\n     * Create an error thrown when network client fails to parse network response\n     */\n    static createFailedToParseNetworkResponseError(endpoint: string): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, `${BrowserAuthErrorMessage.failedToParseNetworkResponse.desc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n    }\n\n    /**\n     * Create an error thrown when the necessary information is not available to sideload tokens \n     */\n    static createUnableToLoadTokenError(errorDetail: string): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.unableToLoadTokenError.code, `${BrowserAuthErrorMessage.unableToLoadTokenError.desc} | ${errorDetail}`);\n    }\n  \n    /**\n     * Create an error thrown when the queried cryptographic key is not found in IndexedDB\n     */\n    static createSigningKeyNotFoundInStorageError(keyId: string): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code, `${BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc} | No match found for KeyId: ${keyId}`);\n    }\n\n    /**\n     * Create an error when an authorization code is required but not provided\n     */\n    static createAuthCodeRequiredError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.authCodeRequired.code, BrowserAuthErrorMessage.authCodeRequired.desc);\n    }\n\n    /**\n     * Create an error when IndexedDB is unavailable\n     */\n    static createDatabaseUnavailableError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { PkceCodes } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { Base64Encode } from \"../encode/Base64Encode\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\n\n// Constant byte array length\nconst RANDOM_BYTE_ARR_LENGTH = 32;\n\n/**\n * Class which exposes APIs to generate PKCE codes and code verifiers.\n */\nexport class PkceGenerator {\n\n    private base64Encode: Base64Encode;\n    private cryptoObj: BrowserCrypto;\n\n    constructor(cryptoObj: BrowserCrypto) {\n        this.base64Encode = new Base64Encode();\n        this.cryptoObj = cryptoObj;\n    }\n\n    /**\n     * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\n     */\n    async generateCodes(): Promise<PkceCodes> {\n        const codeVerifier = this.generateCodeVerifier();\n        const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);\n        return {\n            verifier: codeVerifier,\n            challenge: codeChallenge\n        };\n    }\n\n    /**\n     * Generates a random 32 byte buffer and returns the base64\n     * encoded string to be used as a PKCE Code Verifier\n     */\n    private generateCodeVerifier(): string {\n        try {\n            // Generate random values as utf-8\n            const buffer: Uint8Array = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\n            this.cryptoObj.getRandomValues(buffer);\n            // encode verifier as base64\n            const pkceCodeVerifierB64: string = this.base64Encode.urlEncodeArr(buffer);\n            return pkceCodeVerifierB64;\n        } catch (e) {\n            throw BrowserAuthError.createPkceNotGeneratedError(e);\n        }\n    }\n\n    /**\n     * Creates a base64 encoded PKCE Code Challenge string from the\n     * hash created from the PKCE Code Verifier supplied\n     */\n    private async generateCodeChallengeFromVerifier(pkceCodeVerifier: string): Promise<string> {\n        try {\n            // hashed verifier\n            const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);\n            // encode hash as base64\n            return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));\n        } catch (e) {\n            throw BrowserAuthError.createPkceNotGeneratedError(e);\n        }\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\nimport { Logger } from \"..\";\n/**\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\n */\n// RSA KeyGen Algorithm\nconst PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\n// SHA-256 hashing algorithm\nconst S256_HASH_ALG = \"SHA-256\";\n// MOD length for PoP tokens\nconst MODULUS_LENGTH = 2048;\n// Public Exponent\nconst PUBLIC_EXPONENT: Uint8Array = new Uint8Array([0x01, 0x00, 0x01]);\n\n/**\n * This class implements functions used by the browser library to perform cryptography operations such as\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\n */\nexport class BrowserCrypto {\n\n    private _keygenAlgorithmOptions: RsaHashedKeyGenParams;\n    private logger: Logger;\n\n    constructor(logger: Logger) {\n        this.logger = logger;\n        \n        if (!(this.hasCryptoAPI())) {\n            throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto or msCrypto object not available.\");\n        }\n\n        this._keygenAlgorithmOptions = {\n            name: PKCS1_V15_KEYGEN_ALG,\n            hash: S256_HASH_ALG,\n            modulusLength: MODULUS_LENGTH,\n            publicExponent: PUBLIC_EXPONENT\n        };\n    }\n\n    /**\n     * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\n     * @param dataString \n     */\n    async sha256Digest(dataString: string): Promise<ArrayBuffer> {\n        const data = BrowserStringUtils.stringToUtf8Arr(dataString);\n\n        return this.hasIECrypto() ? this.getMSCryptoDigest(S256_HASH_ALG, data) : this.getSubtleCryptoDigest(S256_HASH_ALG, data);\n    }\n\n    /**\n     * Populates buffer with cryptographically random values.\n     * @param dataBuffer \n     */\n    getRandomValues(dataBuffer: Uint8Array): void {\n        const cryptoObj = window[\"msCrypto\"] || window.crypto;\n        if (!cryptoObj.getRandomValues) {\n            throw BrowserAuthError.createCryptoNotAvailableError(\"getRandomValues does not exist.\");\n        }\n        cryptoObj.getRandomValues(dataBuffer);\n    }\n\n    /**\n     * Generates a keypair based on current keygen algorithm config.\n     * @param extractable \n     * @param usages \n     */\n    async generateKeyPair(extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKeyPair> {\n        return (\n            this.hasIECrypto() ? \n                this.msCryptoGenerateKey(extractable, usages) \n                : window.crypto.subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages)\n        ) as Promise<CryptoKeyPair>;\n    }\n\n    /**\n     * Export key as Json Web Key (JWK)\n     * @param key \n     * @param format \n     */\n    async exportJwk(key: CryptoKey): Promise<JsonWebKey> {\n        return this.hasIECrypto() ? this.msCryptoExportJwk(key) : window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key);\n    }\n\n    /**\n     * Imports key as Json Web Key (JWK), can set extractable and usages.\n     * @param key \n     * @param format \n     * @param extractable \n     * @param usages \n     */\n    async importJwk(key: JsonWebKey, extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKey> {\n        const keyString = BrowserCrypto.getJwkString(key);\n        const keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\n\n        return this.hasIECrypto() ? \n            this.msCryptoImportKey(keyBuffer, extractable, usages) \n            : window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, this._keygenAlgorithmOptions, extractable, usages);\n    }\n\n    /**\n     * Signs given data with given key\n     * @param key \n     * @param data \n     */\n    async sign(key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\n        return this.hasIECrypto() ?\n            this.msCryptoSign(key, data)\n            : window.crypto.subtle.sign(this._keygenAlgorithmOptions, key, data);\n    }\n\n    /**\n     * Check whether IE crypto or other browser cryptography is available.\n     */\n    private hasCryptoAPI(): boolean {\n        return this.hasIECrypto() || this.hasBrowserCrypto();\n    }\n\n    /**\n     * Checks whether IE crypto (AKA msCrypto) is available.\n     */\n    private hasIECrypto(): boolean {\n        return \"msCrypto\" in window;\n    }\n\n    /**\n     * Check whether browser crypto is available.\n     */\n    private hasBrowserCrypto(): boolean {\n        return \"crypto\" in window;\n    }\n\n    /**\n     * Helper function for SHA digest.\n     * @param algorithm \n     * @param data \n     */\n    private async getSubtleCryptoDigest(algorithm: string, data: Uint8Array): Promise<ArrayBuffer> {\n        return window.crypto.subtle.digest(algorithm, data);\n    }\n\n    /**\n     * IE Helper function for SHA digest.\n     * @param algorithm \n     * @param data \n     */\n    private async getMSCryptoDigest(algorithm: string, data: Uint8Array): Promise<ArrayBuffer> {\n        return new Promise((resolve, reject) => {\n            const digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\n            digestOperation.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike<ArrayBuffer>; }; }) => {\n                resolve(e.target.result);\n            });\n            digestOperation.addEventListener(\"error\", (error: string) => {\n                reject(error);\n            });\n        });\n    }\n\n    /**\n     * IE Helper function for generating a keypair\n     * @param extractable \n     * @param usages \n     */\n    private async msCryptoGenerateKey(extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKeyPair> {\n        return new Promise((resolve: Function, reject: Function) => {\n            const msGenerateKey = window[\"msCrypto\"].subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages);\n            msGenerateKey.addEventListener(\"complete\", (e: { target: { result: CryptoKeyPair | PromiseLike<CryptoKeyPair>; }; }) => {\n                resolve(e.target.result);\n            });\n\n            msGenerateKey.addEventListener(\"error\", (error: string) => {\n                reject(error);\n            });\n        });\n    }\n\n    /**\n     * IE Helper function for exportKey\n     * @param key \n     * @param format \n     */\n    private async msCryptoExportJwk(key: CryptoKey): Promise<JsonWebKey> {\n        return new Promise((resolve: Function, reject: Function) => {\n            const msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\n            msExportKey.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer; }; }) => {\n                const resultBuffer: ArrayBuffer = e.target.result;\n\n                const resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\n                    .replace(/\\r/g, \"\")\n                    .replace(/\\n/g, \"\")\n                    .replace(/\\t/g, \"\")\n                    .split(\" \").join(\"\")\n                    .replace(\"\\u0000\", \"\");\n\n                try {\n                    resolve(JSON.parse(resultString));\n                } catch (e) {\n                    reject(e);\n                }\n            });\n\n            msExportKey.addEventListener(\"error\", (error: string) => {\n                reject(error);\n            });\n        });\n    }\n\n    /**\n     * IE Helper function for importKey\n     * @param key \n     * @param format \n     * @param extractable \n     * @param usages \n     */\n    private async msCryptoImportKey(keyBuffer: ArrayBuffer, extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKey> {\n        return new Promise((resolve: Function, reject: Function) => {\n            const msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, this._keygenAlgorithmOptions, extractable, usages);\n            msImportKey.addEventListener(\"complete\", (e: { target: { result: CryptoKey | PromiseLike<CryptoKey>; }; }) => {\n                resolve(e.target.result);\n            });\n\n            msImportKey.addEventListener(\"error\", (error: string) => {\n                reject(error);\n            });\n        });\n    }\n\n    /**\n     * IE Helper function for sign JWT\n     * @param key \n     * @param data \n     */\n    private async msCryptoSign(key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\n        return new Promise((resolve: Function, reject: Function) => {\n            const msSign = window[\"msCrypto\"].subtle.sign(this._keygenAlgorithmOptions, key, data);\n            msSign.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike<ArrayBuffer>; }; }) => {\n                resolve(e.target.result);\n            });\n\n            msSign.addEventListener(\"error\", (error: string) => {\n                reject(error);\n            });\n        });\n    }\n\n    /**\n     * Returns stringified jwk.\n     * @param jwk \n     */\n    static getJwkString(jwk: JsonWebKey): string {\n        return JSON.stringify(jwk, Object.keys(jwk).sort());\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { DB_NAME, DB_TABLE_NAME, DB_VERSION } from \"../utils/BrowserConstants\";\nimport { IAsyncStorage } from \"./IAsyncMemoryStorage\";\n\ninterface IDBOpenDBRequestEvent extends Event {\n    target: IDBOpenDBRequest & EventTarget;\n}\n\ninterface IDBOpenOnUpgradeNeededEvent extends IDBVersionChangeEvent {\n    target: IDBOpenDBRequest & EventTarget;\n}\n\ninterface IDBRequestEvent extends Event {\n    target: IDBRequest & EventTarget;\n}\n\n/**\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\n */\nexport class DatabaseStorage<T> implements IAsyncStorage<T> {\n    private db: IDBDatabase|undefined;\n    private dbName: string;\n    private tableName: string;\n    private version: number;\n    private dbOpen: boolean;\n\n    constructor() {\n        this.dbName = DB_NAME;\n        this.version = DB_VERSION;\n        this.tableName = DB_TABLE_NAME;\n        this.dbOpen = false;\n    }\n\n    /**\n     * Opens IndexedDB instance.\n     */\n    async open(): Promise<void> {\n        return new Promise((resolve, reject) => {\n            const openDB = window.indexedDB.open(this.dbName, this.version);\n            openDB.addEventListener(\"upgradeneeded\", (e: IDBVersionChangeEvent) => {\n                const event = e as IDBOpenOnUpgradeNeededEvent;\n                event.target.result.createObjectStore(this.tableName);\n            });\n            openDB.addEventListener(\"success\", (e: Event) => {\n                const event = e as IDBOpenDBRequestEvent;\n                this.db = event.target.result;\n                this.dbOpen = true;\n                resolve();\n            });\n            openDB.addEventListener(\"error\",  () => reject(BrowserAuthError.createDatabaseUnavailableError()));\n        });\n    }\n\n    /**\n     * Opens database if it's not already open\n     */\n    private async validateDbIsOpen(): Promise<void> {\n        if (!this.dbOpen) {\n            return await this.open();\n        }\n    }\n\n    /**\n     * Retrieves item from IndexedDB instance.\n     * @param key \n     */\n    async getItem(key: string): Promise<T | null> {\n        await this.validateDbIsOpen();\n\n        return new Promise<T>((resolve, reject) => {\n            // TODO: Add timeouts?\n            if (!this.db) {\n                return reject(BrowserAuthError.createDatabaseNotOpenError());\n            }\n            const transaction = this.db.transaction([this.tableName], \"readonly\");\n            const objectStore = transaction.objectStore(this.tableName);\n            const dbGet = objectStore.get(key);\n            dbGet.addEventListener(\"success\", (e: Event) => {\n                const event = e as IDBRequestEvent;\n                resolve(event.target.result);\n            });\n            dbGet.addEventListener(\"error\", (e) => reject(e));\n        });\n    }\n\n    /**\n     * Adds item to IndexedDB under given key\n     * @param key \n     * @param payload \n     */\n    async setItem(key: string, payload: T): Promise<void> {\n        await this.validateDbIsOpen();\n\n        return new Promise<void>((resolve: Function, reject: Function) => {\n            // TODO: Add timeouts?\n            if (!this.db) {\n                return reject(BrowserAuthError.createDatabaseNotOpenError());\n            }\n            const transaction = this.db.transaction([this.tableName], \"readwrite\");\n\n            const objectStore = transaction.objectStore(this.tableName);\n\n            const dbPut = objectStore.put(payload, key);\n\n            dbPut.addEventListener(\"success\", () => resolve());\n            dbPut.addEventListener(\"error\", (e) => reject(e));\n        });\n    }\n\n    /**\n     * Removes item from IndexedDB under given key\n     * @param key\n     */\n    async removeItem(key: string): Promise<void> {\n        await this.validateDbIsOpen();\n\n        return new Promise<void>((resolve: Function, reject: Function) => {\n            if (!this.db) {\n                return reject(BrowserAuthError.createDatabaseNotOpenError());\n            }\n            const transaction = this.db.transaction([this.tableName], \"readwrite\");\n            const objectStore = transaction.objectStore(this.tableName);\n            const dbDelete = objectStore.delete(key);\n            dbDelete.addEventListener(\"success\", () => resolve());\n            dbDelete.addEventListener(\"error\", (e) => reject(e));\n        });\n    }\n\n    /**\n     * Get all the keys from the storage object as an iterable array of strings.\n     */\n    async getKeys(): Promise<string[]> {\n        await this.validateDbIsOpen();\n\n        return new Promise<string[]>((resolve: Function, reject: Function) => {\n            if (!this.db) {\n                return reject(BrowserAuthError.createDatabaseNotOpenError());\n            }\n\n            const transaction = this.db.transaction([this.tableName], \"readonly\");\n            const objectStore = transaction.objectStore(this.tableName);\n            const dbGetKeys = objectStore.getAllKeys();\n            dbGetKeys.addEventListener(\"success\", (e: Event) => {\n                const event = e as IDBRequestEvent;\n                resolve(event.target.result);\n            });\n            dbGetKeys.addEventListener(\"error\",  (e: Event) => reject(e));\n        });\n    }\n\n    /**\n     * \n     * Checks whether there is an object under the search key in the object store\n     */\n    async containsKey(key: string): Promise<boolean> {\n        await this.validateDbIsOpen();\n\n        return new Promise<boolean>((resolve: Function, reject: Function) => {\n            if (!this.db) {\n                return reject(BrowserAuthError.createDatabaseNotOpenError());\n            }\n            const transaction = this.db.transaction([this.tableName], \"readonly\");\n            const objectStore = transaction.objectStore(this.tableName);\n            const dbContainsKey = objectStore.count(key);\n            dbContainsKey.addEventListener(\"success\", (e: Event) => {\n                const event = e as IDBRequestEvent;\n                resolve(event.target.result === 1);\n            });\n            dbContainsKey.addEventListener(\"error\", (e: Event) => reject(e));\n        });\n    }\n\n    /**\n     * Deletes the MSAL database. The database is deleted rather than cleared to make it possible\n     * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues\n     * with IndexedDB database versions.\n     */\n    async deleteDatabase(): Promise<boolean> {\n        return new Promise<boolean>((resolve: Function, reject: Function) => {\n            const deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);\n            deleteDbRequest.addEventListener(\"success\", () => resolve(true));\n            deleteDbRequest.addEventListener(\"error\", () => reject(false));\n        });\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IWindowStorage } from \"./IWindowStorage\";\n\nexport class MemoryStorage<T> implements IWindowStorage<T> {\n\n    private cache: Map<string, T>;\n\n    constructor() {\n        this.cache = new Map<string, T>();\n    }\n\n    getItem(key: string): T | null {\n        return this.cache.get(key) || null;\n    }\n\n    setItem(key: string, value: T): void {\n        this.cache.set(key, value);\n    }\n\n    removeItem(key: string): void {\n        this.cache.delete(key);\n    }\n\n    getKeys(): string[] {\n        const cacheKeys: string[] = [];\n        this.cache.forEach((value: T, key: string) => {\n            cacheKeys.push(key);\n        });\n        return cacheKeys;\n    }\n\n    containsKey(key: string): boolean {\n        return this.cache.has(key);\n    }\n\n    clear() :void {\n        this.cache.clear();\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger } from \"@azure/msal-common\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\nimport { DatabaseStorage } from \"./DatabaseStorage\";\nimport { IAsyncStorage } from \"./IAsyncMemoryStorage\";\nimport { MemoryStorage } from \"./MemoryStorage\";\n\n/**\n * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper,\n * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable.\n */\nexport class AsyncMemoryStorage<T> implements IAsyncStorage<T> {\n    private inMemoryCache: MemoryStorage<T>;\n    private indexedDBCache: DatabaseStorage<T>;\n    private logger: Logger;\n\n    constructor(logger: Logger) {\n        this.inMemoryCache = new MemoryStorage<T>();\n        this.indexedDBCache = new DatabaseStorage<T>();\n        this.logger = logger;\n    }\n\n    private handleDatabaseAccessError(error: unknown): void {\n        if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.databaseUnavailable.code) {\n            this.logger.error(\"Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts.\");\n        }\n    }\n    /**\n     * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous\n     * storage object if item isn't found in-memory.\n     * @param key \n     */\n    async getItem(key: string): Promise<T | null> {\n        const item = this.inMemoryCache.getItem(key);\n        if(!item) {\n            try {\n                this.logger.verbose(\"Queried item not found in in-memory cache, now querying persistent storage.\");\n                return await this.indexedDBCache.getItem(key);\n            } catch (e) {\n                this.handleDatabaseAccessError(e);\n            }\n        }\n        return item;\n    }\n\n    /**\n     * Sets the item in the in-memory cache and then tries to set it in the asynchronous\n     * storage object with the given key.\n     * @param key \n     * @param value \n     */\n    async setItem(key: string, value: T): Promise<void> {\n        this.inMemoryCache.setItem(key, value);\n        try {\n            await this.indexedDBCache.setItem(key, value);\n        } catch (e) {\n            this.handleDatabaseAccessError(e);\n        }\n    }\n\n    /**\n     * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object.\n     * @param key \n     */\n    async removeItem(key: string): Promise<void> {\n        this.inMemoryCache.removeItem(key);\n        try {\n            await this.indexedDBCache.removeItem(key);\n        } catch (e) {\n            this.handleDatabaseAccessError(e);\n        }\n    }\n\n    /**\n     * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the \n     * asynchronous storage object.\n     */\n    async getKeys(): Promise<string[]> {\n        const cacheKeys = this.inMemoryCache.getKeys();\n        if (cacheKeys.length === 0) {\n            try {\n                this.logger.verbose(\"In-memory cache is empty, now querying persistent storage.\");\n                return await this.indexedDBCache.getKeys();\n            } catch (e) {\n                this.handleDatabaseAccessError(e);\n            }\n        }\n        return cacheKeys;\n    }\n\n    /**\n     * Returns true or false if the given key is present in the cache.\n     * @param key \n     */\n    async containsKey(key: string): Promise<boolean> {\n        const containsKey = this.inMemoryCache.containsKey(key);\n        if(!containsKey) {\n            try {\n                this.logger.verbose(\"Key not found in in-memory cache, now querying persistent storage.\");\n                return await this.indexedDBCache.containsKey(key);\n            } catch (e) {\n                this.handleDatabaseAccessError(e);\n            }\n        }\n        return containsKey;\n    }\n\n    /**\n     * Clears in-memory Map and tries to delete the IndexedDB database.\n     */\n    async clear(): Promise<void> {\n        this.inMemoryCache.clear();\n        try {\n            await this.indexedDBCache.deleteDatabase();\n        } catch (e) {\n            this.handleDatabaseAccessError(e);\n        }\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, Logger, PkceCodes, SignedHttpRequest, SignedHttpRequestParameters } from \"@azure/msal-common\";\nimport { GuidGenerator } from \"./GuidGenerator\";\nimport { Base64Encode } from \"../encode/Base64Encode\";\nimport { Base64Decode } from \"../encode/Base64Decode\";\nimport { PkceGenerator } from \"./PkceGenerator\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { AsyncMemoryStorage } from \"../cache/AsyncMemoryStorage\";\n\nexport type CachedKeyPair = {\n    publicKey: CryptoKey,\n    privateKey: CryptoKey,\n    requestMethod?: string,\n    requestUri?: string\n};\n\n/**\n * MSAL CryptoKeyStore DB Version 2\n */\nexport type CryptoKeyStore = {\n    asymmetricKeys: AsyncMemoryStorage<CachedKeyPair>;\n    symmetricKeys: AsyncMemoryStorage<CryptoKey>;\n};\n\n/**\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and \n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\n */\nexport class CryptoOps implements ICrypto {\n\n    private browserCrypto: BrowserCrypto;\n    private guidGenerator: GuidGenerator;\n    private b64Encode: Base64Encode;\n    private b64Decode: Base64Decode;\n    private pkceGenerator: PkceGenerator;\n    private logger: Logger;\n\n    private static POP_KEY_USAGES: Array<KeyUsage> = [\"sign\", \"verify\"];\n    private static EXTRACTABLE: boolean = true;\n    private cache: CryptoKeyStore;\n\n    constructor(logger: Logger) {\n        this.logger = logger;\n        // Browser crypto needs to be validated first before any other classes can be set.\n        this.browserCrypto = new BrowserCrypto(this.logger);\n        this.b64Encode = new Base64Encode();\n        this.b64Decode = new Base64Decode();\n        this.guidGenerator = new GuidGenerator(this.browserCrypto);\n        this.pkceGenerator = new PkceGenerator(this.browserCrypto);\n        this.cache = {\n            asymmetricKeys: new AsyncMemoryStorage<CachedKeyPair>(this.logger),\n            symmetricKeys: new AsyncMemoryStorage<CryptoKey>(this.logger)\n        };\n    }\n\n    /**\n     * Creates a new random GUID - used to populate state and nonce.\n     * @returns string (GUID)\n     */\n    createNewGuid(): string {\n        return this.guidGenerator.generateGuid();\n    }\n\n    /**\n     * Encodes input string to base64.\n     * @param input \n     */\n    base64Encode(input: string): string {\n        return this.b64Encode.encode(input);\n    }    \n    \n    /**\n     * Decodes input string from base64.\n     * @param input \n     */\n    base64Decode(input: string): string {\n        return this.b64Decode.decode(input);\n    }\n\n    /**\n     * Generates PKCE codes used in Authorization Code Flow.\n     */\n    async generatePkceCodes(): Promise<PkceCodes> {\n        return this.pkceGenerator.generateCodes();\n    }\n\n    /**\n     * Generates a keypair, stores it and returns a thumbprint\n     * @param request\n     */\n    async getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise<string> {\n        // Generate Keypair\n        const keyPair: CryptoKeyPair = await this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);\n\n        // Generate Thumbprint for Public Key\n        const publicKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.publicKey);\n        \n        const pubKeyThumprintObj: JsonWebKey = {\n            e: publicKeyJwk.e,\n            kty: publicKeyJwk.kty,\n            n: publicKeyJwk.n\n        };\n\n        const publicJwkString: string = BrowserCrypto.getJwkString(pubKeyThumprintObj);\n        const publicJwkHash = await this.hashString(publicJwkString);\n\n        // Generate Thumbprint for Private Key\n        const privateKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.privateKey);\n        // Re-import private key to make it unextractable\n        const unextractablePrivateKey: CryptoKey = await this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"]);\n\n        // Store Keypair data in keystore\n        await this.cache.asymmetricKeys.setItem(\n            publicJwkHash, \n            {\n                privateKey: unextractablePrivateKey,\n                publicKey: keyPair.publicKey,\n                requestMethod: request.resourceRequestMethod,\n                requestUri: request.resourceRequestUri\n            }\n        );\n\n        return publicJwkHash;\n    }\n\n    /**\n     * Removes cryptographic keypair from key store matching the keyId passed in\n     * @param kid \n     */\n    async removeTokenBindingKey(kid: string): Promise<boolean> {\n        await this.cache.asymmetricKeys.removeItem(kid);\n        const keyFound = await this.cache.asymmetricKeys.containsKey(kid);\n        return !keyFound;\n    }\n\n    /**\n     * Removes all cryptographic keys from IndexedDB storage\n     */\n    async clearKeystore(): Promise<boolean> {\n        const dataStoreNames = Object.keys(this.cache);\n        const databaseStorage = this.cache[dataStoreNames[0]];\n        return databaseStorage ? await databaseStorage.deleteDatabase() : false;\n    }\n\n    /**\n     * Signs the given object as a jwt payload with private key retrieved by given kid.\n     * @param payload \n     * @param kid \n     */\n    async signJwt(payload: SignedHttpRequest, kid: string): Promise<string> {\n        const cachedKeyPair = await this.cache.asymmetricKeys.getItem(kid);\n        \n        if (!cachedKeyPair) {\n            throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);\n        }\n\n        // Get public key as JWK\n        const publicKeyJwk = await this.browserCrypto.exportJwk(cachedKeyPair.publicKey);\n        const publicKeyJwkString = BrowserCrypto.getJwkString(publicKeyJwk);\n\n        // Generate header\n        const header = {\n            alg: publicKeyJwk.alg,\n            type: KEY_FORMAT_JWK\n        };\n        const encodedHeader = this.b64Encode.urlEncode(JSON.stringify(header));\n\n        // Generate payload\n        payload.cnf = {\n            jwk: JSON.parse(publicKeyJwkString)\n        };\n        const encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\n\n        // Form token string\n        const tokenString = `${encodedHeader}.${encodedPayload}`;\n\n        // Sign token\n        const tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\n        const signatureBuffer = await this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer);\n        const encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\n\n        return `${tokenString}.${encodedSignature}`;\n    }\n\n    /**\n     * Returns the SHA-256 hash of an input string\n     * @param plainText\n     */\n    async hashString(plainText: string): Promise<string> {\n        const hashBuffer: ArrayBuffer = await this.browserCrypto.sha256Digest(plainText);\n        const hashBytes = new Uint8Array(hashBuffer);\n        return this.b64Encode.urlEncodeArr(hashBytes);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"@azure/msal-common\";\n\n/**\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const BrowserConfigurationAuthErrorMessage = {\n    redirectUriNotSet: {\n        code: \"redirect_uri_empty\",\n        desc: \"A redirect URI is required for all calls, and none has been set.\"\n    },\n    postLogoutUriNotSet: {\n        code: \"post_logout_uri_empty\",\n        desc: \"A post logout redirect has not been set.\"\n    },\n    storageNotSupportedError: {\n        code: \"storage_not_supported\",\n        desc: \"Given storage configuration option was not supported.\"\n    },\n    noRedirectCallbacksSet: {\n        code: \"no_redirect_callbacks\",\n        desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\n            \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\n    },\n    invalidCallbackObject: {\n        code: \"invalid_callback_object\",\n        desc: \"The object passed for the callback was invalid. \" +\n          \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\n    },\n    stubPcaInstanceCalled: {\n        code: \"stubbed_public_client_application_called\",\n        desc: \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\"\n    },\n    inMemRedirectUnavailable: {\n        code: \"in_mem_redirect_unavailable\",\n        desc: \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\"\n    }\n};\n\n/**\n * Browser library error class thrown by the MSAL.js library for SPAs\n */\nexport class BrowserConfigurationAuthError extends AuthError {\n\n    constructor(errorCode: string, errorMessage?: string) {\n        super(errorCode, errorMessage);\n        this.name = \"BrowserConfigurationAuthError\";\n\n        Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype);\n    }\n\n    /**\n     * Creates an error thrown when the redirect uri is empty (not set by caller)\n     */\n    static createRedirectUriEmptyError(): BrowserConfigurationAuthError {\n        return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code,\n            BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\n    }\n\n    /**\n     * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\n     */\n    static createPostLogoutRedirectUriEmptyError(): BrowserConfigurationAuthError {\n        return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code,\n            BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\n    }\n\n    /**\n     * Creates error thrown when given storage location is not supported.\n     * @param givenStorageLocation \n     */\n    static createStorageNotSupportedError(givenStorageLocation: string): BrowserConfigurationAuthError {\n        return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, `${BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc} Given Location: ${givenStorageLocation}`);\n    }\n\n    /**\n     * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\n     */\n    static createRedirectCallbacksNotSetError(): BrowserConfigurationAuthError {\n        return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, \n            BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\n    }\n\n    /**\n     * Creates error thrown when the stub instance of PublicClientApplication is called.\n     */\n    static createStubPcaInstanceCalledError(): BrowserConfigurationAuthError {\n        return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code,\n            BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\n    }\n\n    /*\n     * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\n     */\n    static createInMemoryRedirectUnavailableError(): BrowserConfigurationAuthError {\n        return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\nimport { IWindowStorage } from \"./IWindowStorage\";\n\nexport class BrowserStorage implements IWindowStorage<string> {\n\n    private windowStorage: Storage;\n\n    constructor(cacheLocation: string) {\n        this.validateWindowStorage(cacheLocation);\n        this.windowStorage = window[cacheLocation];\n    }\n\n    private validateWindowStorage(cacheLocation: string): void {\n        if (cacheLocation !== BrowserCacheLocation.LocalStorage && cacheLocation !== BrowserCacheLocation.SessionStorage) {\n            throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\n        }\n        const storageSupported = !!window[cacheLocation];\n        if (!storageSupported) {\n            throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\n        }\n    }\n\n    getItem(key: string): string | null {\n        return this.windowStorage.getItem(key);\n    }\n\n    setItem(key: string, value: string): void {\n        this.windowStorage.setItem(key, value);\n    }\n\n    removeItem(key: string): void {\n        this.windowStorage.removeItem(key);\n    }\n\n    getKeys(): string[] {\n        return Object.keys(this.windowStorage);\n    }\n\n    containsKey(key: string): boolean {\n        return this.windowStorage.hasOwnProperty(key);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { InteractionType } from \"./BrowserConstants\";\nimport { StringUtils, ClientAuthError, ICrypto, RequestStateObject, ProtocolUtils, ServerAuthorizationCodeResponse, UrlString } from \"@azure/msal-common\";\n\nexport type BrowserStateObject = {\n    interactionType: InteractionType\n};\n\nexport class BrowserProtocolUtils {\n\n    /**\n     * Extracts the BrowserStateObject from the state string.\n     * @param browserCrypto \n     * @param state \n     */\n    static extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null {\n        if (StringUtils.isEmpty(state)) {\n            return null;\n        }\n\n        try {\n            const requestStateObj: RequestStateObject = ProtocolUtils.parseRequestState(browserCrypto, state);\n            return requestStateObj.libraryState.meta as BrowserStateObject;\n        } catch (e) {\n            throw ClientAuthError.createInvalidStateError(state, e);\n        }\n    }\n\n    /**\n     * Parses properties of server response from url hash\n     * @param locationHash Hash from url\n     */\n    static parseServerResponseFromHash(locationHash: string): ServerAuthorizationCodeResponse {\n        if (!locationHash) {\n            return {};\n        }\n        \n        const hashUrlString = new UrlString(locationHash);\n        return UrlString.getDeserializedHash(hashUrlString.getHash());\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants, PersistentCacheKeys, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AccountEntity, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, CacheManager, ServerTelemetryEntity, ThrottlingEntity, ProtocolUtils, Logger, AuthorityMetadataEntity, DEFAULT_CRYPTO_IMPLEMENTATION, AccountInfo, CcsCredential, CcsCredentialType, IdToken, ValidCredentialType } from \"@azure/msal-common\";\nimport { CacheOptions } from \"../config/Configuration\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserCacheLocation, InteractionType, TemporaryCacheKeys, InMemoryCacheKeys } from \"../utils/BrowserConstants\";\nimport { BrowserStorage } from \"./BrowserStorage\";\nimport { MemoryStorage } from \"./MemoryStorage\";\nimport { IWindowStorage } from \"./IWindowStorage\";\nimport { BrowserProtocolUtils } from \"../utils/BrowserProtocolUtils\";\n\n/**\n * This class implements the cache storage interface for MSAL through browser local or session storage.\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\n * parameters such as state and nonce, generally.\n */\nexport class BrowserCacheManager extends CacheManager {\n\n    // Cache configuration, either set by user or default values.\n    protected cacheConfig: Required<CacheOptions>;\n    // Window storage object (either local or sessionStorage)\n    protected browserStorage: IWindowStorage<string>;\n    // Internal in-memory storage object used for data used by msal that does not need to persist across page loads\n    protected internalStorage: MemoryStorage<string>;\n    // Temporary cache\n    protected temporaryCacheStorage: IWindowStorage<string>;\n    // Client id of application. Used in cache keys to partition cache correctly in the case of multiple instances of MSAL.\n    protected logger: Logger;\n\n    // Cookie life calculation (hours * minutes * seconds * ms)\n    protected readonly COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\n\n    constructor(clientId: string, cacheConfig: Required<CacheOptions>, cryptoImpl: ICrypto, logger: Logger) {\n        super(clientId, cryptoImpl);\n\n        this.cacheConfig = cacheConfig;\n        this.logger = logger;\n        this.internalStorage = new MemoryStorage();\n        this.browserStorage = this.setupBrowserStorage(this.cacheConfig.cacheLocation);\n        this.temporaryCacheStorage = this.setupTemporaryCacheStorage(this.cacheConfig.cacheLocation);\n\n        // Migrate any cache entries from older versions of MSAL.\n        this.migrateCacheEntries();\n    }\n\n    /**\n     * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\n     * @param cacheLocation\n     */\n    protected setupBrowserStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage<string> {\n        switch (cacheLocation) {\n            case BrowserCacheLocation.LocalStorage:\n            case BrowserCacheLocation.SessionStorage:\n                try {\n                    // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\n                    return new BrowserStorage(cacheLocation);\n                } catch (e) {\n                    this.logger.verbose(e);\n                    break;\n                }\n            case BrowserCacheLocation.MemoryStorage:\n            default:\n                break;\n        }\n        this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\n        return new MemoryStorage();\n    }\n\n    /**\n     *\n     * @param cacheLocation\n     */\n    protected setupTemporaryCacheStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage<string> {\n        switch (cacheLocation) {\n            case BrowserCacheLocation.LocalStorage:\n            case BrowserCacheLocation.SessionStorage:\n                try {\n                    // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\n                    return new BrowserStorage(BrowserCacheLocation.SessionStorage);\n                } catch (e) {\n                    this.logger.verbose(e);\n                    return this.internalStorage;\n                }\n            case BrowserCacheLocation.MemoryStorage:\n            default:\n                return this.internalStorage;\n        }\n    }\n\n    /**\n     * Migrate all old cache entries to new schema. No rollback supported.\n     * @param storeAuthStateInCookie\n     */\n    protected migrateCacheEntries(): void {\n        const idTokenKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ID_TOKEN}`;\n        const clientInfoKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.CLIENT_INFO}`;\n        const errorKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR}`;\n        const errorDescKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR_DESC}`;\n\n        const idTokenValue = this.browserStorage.getItem(idTokenKey);\n        const clientInfoValue = this.browserStorage.getItem(clientInfoKey);\n        const errorValue = this.browserStorage.getItem(errorKey);\n        const errorDescValue = this.browserStorage.getItem(errorDescKey);\n\n        const values = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\n        const keysToMigrate = [PersistentCacheKeys.ID_TOKEN, PersistentCacheKeys.CLIENT_INFO, PersistentCacheKeys.ERROR, PersistentCacheKeys.ERROR_DESC];\n\n        keysToMigrate.forEach((cacheKey:string, index: number) => this.migrateCacheEntry(cacheKey, values[index]));\n    }\n\n    /**\n     * Utility function to help with migration.\n     * @param newKey\n     * @param value\n     * @param storeAuthStateInCookie\n     */\n    protected migrateCacheEntry(newKey: string, value: string|null): void {\n        if (value) {\n            this.setTemporaryCache(newKey, value, true);\n        }\n    }\n\n    /**\n     * Parses passed value as JSON object, JSON.parse() will throw an error.\n     * @param input\n     */\n    protected validateAndParseJson(jsonValue: string): object | null {\n        try {\n            const parsedJson = JSON.parse(jsonValue);\n            /**\n             * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\n             * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\n             * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\n             *\n             */\n            return (parsedJson && typeof parsedJson === \"object\") ? parsedJson : null;\n        } catch (error) {\n            return null;\n        }\n    }\n\n    /**\n     * fetches the entry from the browser storage based off the key\n     * @param key\n     */\n    getItem(key: string): string | null {\n        return this.browserStorage.getItem(key);\n    }\n\n    /**\n     * sets the entry in the browser storage\n     * @param key\n     * @param value\n     */\n    setItem(key: string, value: string): void {\n        this.browserStorage.setItem(key, value);\n    }\n\n    /**\n     * fetch the account entity from the platform cache\n     * @param accountKey\n     */\n    getAccount(accountKey: string): AccountEntity | null {\n        const account = this.getItem(accountKey);\n        if (!account) {\n            return null;\n        }\n\n        const parsedAccount = this.validateAndParseJson(account);\n        if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\n            return null;\n        }\n\n        return CacheManager.toObject<AccountEntity>(new AccountEntity(), parsedAccount);\n    }\n\n    /**\n     * set account entity in the platform cache\n     * @param key\n     * @param value\n     */\n    setAccount(account: AccountEntity): void {\n        this.logger.trace(\"BrowserCacheManager.setAccount called\");\n        const key = account.generateAccountKey();\n        this.setItem(key, JSON.stringify(account));\n    }\n\n    /**\n     * generates idToken entity from a string\n     * @param idTokenKey\n     */\n    getIdTokenCredential(idTokenKey: string): IdTokenEntity | null {\n        const value = this.getItem(idTokenKey);\n        if (!value) {\n            this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\n            return null;\n        }\n\n        const parsedIdToken = this.validateAndParseJson(value);\n        if (!parsedIdToken || !IdTokenEntity.isIdTokenEntity(parsedIdToken)) {\n            this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\n            return null;\n        }\n\n        this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: cache hit\");\n        return CacheManager.toObject(new IdTokenEntity(), parsedIdToken);\n    }\n\n    /**\n     * set IdToken credential to the platform cache\n     * @param idToken\n     */\n    setIdTokenCredential(idToken: IdTokenEntity): void {\n        this.logger.trace(\"BrowserCacheManager.setIdTokenCredential called\");\n        const idTokenKey = idToken.generateCredentialKey();\n        this.setItem(idTokenKey, JSON.stringify(idToken));\n    }\n\n    /**\n     * generates accessToken entity from a string\n     * @param key\n     */\n    getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null {\n        const value = this.getItem(accessTokenKey);\n        if (!value) {\n            this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\n            return null;\n        }\n        const parsedAccessToken = this.validateAndParseJson(value);\n        if (!parsedAccessToken || !AccessTokenEntity.isAccessTokenEntity(parsedAccessToken)) {\n            this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\n            return null;\n        }\n\n        this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: cache hit\");\n        return CacheManager.toObject(new AccessTokenEntity(), parsedAccessToken);\n    }\n\n    /**\n     * set accessToken credential to the platform cache\n     * @param accessToken\n     */\n    setAccessTokenCredential(accessToken: AccessTokenEntity): void {\n        this.logger.trace(\"BrowserCacheManager.setAccessTokenCredential called\");\n        const accessTokenKey = accessToken.generateCredentialKey();\n        this.setItem(accessTokenKey, JSON.stringify(accessToken));\n    }\n\n    /**\n     * generates refreshToken entity from a string\n     * @param refreshTokenKey\n     */\n    getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null {\n        const value = this.getItem(refreshTokenKey);\n        if (!value) {\n            this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\n            return null;\n        }\n        const parsedRefreshToken = this.validateAndParseJson(value);\n        if (!parsedRefreshToken || !RefreshTokenEntity.isRefreshTokenEntity(parsedRefreshToken)) {\n            this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\n            return null;\n        }\n\n        this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: cache hit\");\n        return CacheManager.toObject(new RefreshTokenEntity(), parsedRefreshToken);\n    }\n\n    /**\n     * set refreshToken credential to the platform cache\n     * @param refreshToken\n     */\n    setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void {\n        this.logger.trace(\"BrowserCacheManager.setRefreshTokenCredential called\");\n        const refreshTokenKey = refreshToken.generateCredentialKey();\n        this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\n    }\n\n    /**\n     * fetch appMetadata entity from the platform cache\n     * @param appMetadataKey\n     */\n    getAppMetadata(appMetadataKey: string): AppMetadataEntity | null {\n        const value = this.getItem(appMetadataKey);\n        if (!value) {\n            this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\n            return null;\n        }\n\n        const parsedMetadata = this.validateAndParseJson(value);\n        if (!parsedMetadata || !AppMetadataEntity.isAppMetadataEntity(appMetadataKey, parsedMetadata)) {\n            this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\n            return null;\n        }\n\n        this.logger.trace(\"BrowserCacheManager.getAppMetadata: cache hit\");\n        return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);\n    }\n\n    /**\n     * set appMetadata entity to the platform cache\n     * @param appMetadata\n     */\n    setAppMetadata(appMetadata: AppMetadataEntity): void {\n        this.logger.trace(\"BrowserCacheManager.setAppMetadata called\");\n        const appMetadataKey = appMetadata.generateAppMetadataKey();\n        this.setItem(appMetadataKey, JSON.stringify(appMetadata));\n    }\n\n    /**\n     * fetch server telemetry entity from the platform cache\n     * @param serverTelemetryKey\n     */\n    getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null {\n        const value = this.getItem(serverTelemetryKey);\n        if (!value) {\n            this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\n            return null;\n        }\n        const parsedMetadata = this.validateAndParseJson(value);\n        if (!parsedMetadata || !ServerTelemetryEntity.isServerTelemetryEntity(serverTelemetryKey, parsedMetadata)) {\n            this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\n            return null;\n        }\n\n        this.logger.trace(\"BrowserCacheManager.getServerTelemetry: cache hit\");\n        return CacheManager.toObject(new ServerTelemetryEntity(), parsedMetadata);\n    }\n\n    /**\n     * set server telemetry entity to the platform cache\n     * @param serverTelemetryKey\n     * @param serverTelemetry\n     */\n    setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void {\n        this.logger.trace(\"BrowserCacheManager.setServerTelemetry called\");\n        this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\n    }\n\n    /**\n     *\n     */\n    getAuthorityMetadata(key: string) : AuthorityMetadataEntity | null {\n        const value = this.internalStorage.getItem(key);\n        if (!value) {\n            this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: called, no cache hit\");\n            return null;\n        }\n        const parsedMetadata = this.validateAndParseJson(value);\n        if (parsedMetadata && AuthorityMetadataEntity.isAuthorityMetadataEntity(key, parsedMetadata)) {\n            this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: cache hit\");\n            return CacheManager.toObject(new AuthorityMetadataEntity(), parsedMetadata);\n        }\n        return null;\n    }\n\n    /**\n     *\n     */\n    getAuthorityMetadataKeys(): Array<string> {\n        const allKeys = this.internalStorage.getKeys();\n        return allKeys.filter((key) => {\n            return this.isAuthorityMetadata(key);\n        });\n    }\n\n    /**\n     * Sets wrapper metadata in memory\n     * @param wrapperSKU \n     * @param wrapperVersion \n     */\n    setWrapperMetadata(wrapperSKU: string, wrapperVersion: string): void {\n        this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU);\n        this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion);\n    }\n\n    /**\n     * Returns wrapper metadata from in-memory storage\n     */\n    getWrapperMetadata(): [string, string] {\n        const sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || \"\";\n        const version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || \"\";\n        return [sku, version];\n    }\n\n    /**\n     *\n     * @param entity\n     */\n    setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void {\n        this.logger.trace(\"BrowserCacheManager.setAuthorityMetadata called\");\n        this.internalStorage.setItem(key, JSON.stringify(entity));\n    }\n\n    /**\n     * Gets the active account\n     */\n    getActiveAccount(): AccountInfo | null {\n        const activeAccountIdKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\n        const activeAccountId = this.browserStorage.getItem(activeAccountIdKey);\n        if (!activeAccountId) {\n            return null;\n        }\n        return this.getAccountInfoByFilter({localAccountId: activeAccountId})[0] || null;\n    }\n\n    /**\n     * Sets the active account's localAccountId in cache\n     * @param account \n     */\n    setActiveAccount(account: AccountInfo | null): void {\n        const activeAccountIdKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\n        if (account) {\n            this.logger.verbose(\"setActiveAccount: Active account set\");\n            this.browserStorage.setItem(activeAccountIdKey, account.localAccountId);\n        } else {\n            this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\n            this.browserStorage.removeItem(activeAccountIdKey);\n        }\n    }\n\n    /**\n     * Gets a list of accounts that match all of the filters provided\n     * @param account \n     */\n    getAccountInfoByFilter(accountFilter: Partial<Omit<AccountInfo, \"idTokenClaims\"|\"name\">>): AccountInfo[] {\n        const allAccounts = this.getAllAccounts();\n        return allAccounts.filter((accountObj) => {\n            if (accountFilter.username && accountFilter.username.toLowerCase() !== accountObj.username.toLowerCase()) {\n                return false;\n            }\n\n            if (accountFilter.homeAccountId && accountFilter.homeAccountId !== accountObj.homeAccountId) {\n                return false;\n            }\n\n            if (accountFilter.localAccountId && accountFilter.localAccountId !== accountObj.localAccountId) {\n                return false;\n            }\n\n            if (accountFilter.tenantId && accountFilter.tenantId !== accountObj.tenantId) {\n                return false;\n            }\n\n            if (accountFilter.environment && accountFilter.environment !== accountObj.environment) {\n                return false;\n            }\n            \n            return true;\n        });\n    }\n\n    /**\n     * fetch throttling entity from the platform cache\n     * @param throttlingCacheKey\n     */\n    getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null {\n        const value = this.getItem(throttlingCacheKey);\n        if (!value) {\n            this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\n            return null;\n        }\n\n        const parsedThrottlingCache = this.validateAndParseJson(value);\n        if (!parsedThrottlingCache || !ThrottlingEntity.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) {\n            this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\n            return null;\n        }\n\n        this.logger.trace(\"BrowserCacheManager.getThrottlingCache: cache hit\");\n        return CacheManager.toObject(new ThrottlingEntity(), parsedThrottlingCache);\n    }\n\n    /**\n     * set throttling entity to the platform cache\n     * @param throttlingCacheKey\n     * @param throttlingCache\n     */\n    setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void {\n        this.logger.trace(\"BrowserCacheManager.setThrottlingCache called\");\n        this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\n    }\n\n    /**\n     * Gets cache item with given key.\n     * Will retrieve from cookies if storeAuthStateInCookie is set to true.\n     * @param key\n     */\n    getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null {\n        const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\n        if (this.cacheConfig.storeAuthStateInCookie) {\n            const itemCookie = this.getItemCookie(key);\n            if (itemCookie) {\n                this.logger.trace(\"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\");\n                return itemCookie;\n            }\n        }\n\n        const value = this.temporaryCacheStorage.getItem(key);\n        if (!value) {\n            // If temp cache item not found in session/memory, check local storage for items set by old versions\n            if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) {\n                const item = this.browserStorage.getItem(key);\n                if (item) {\n                    this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage\");\n                    return item;\n                }\n            }\n            this.logger.trace(\"BrowserCacheManager.getTemporaryCache: No cache item found in local storage\");\n            return null;\n        }\n        this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item returned\");\n        return value;\n    }\n\n    /**\n     * Sets the cache item with the key and value given.\n     * Stores in cookie if storeAuthStateInCookie is set to true.\n     * This can cause cookie overflow if used incorrectly.\n     * @param key\n     * @param value\n     */\n    setTemporaryCache(cacheKey: string, value: string, generateKey?: boolean): void {\n        const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\n\n        this.temporaryCacheStorage.setItem(key, value);\n        if (this.cacheConfig.storeAuthStateInCookie) {\n            this.logger.trace(\"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\");\n            this.setItemCookie(key, value);\n        }\n    }\n\n    /**\n     * Removes the cache item with the given key.\n     * Will also clear the cookie item if storeAuthStateInCookie is set to true.\n     * @param key\n     */\n    removeItem(key: string): boolean {\n        this.browserStorage.removeItem(key);\n        this.temporaryCacheStorage.removeItem(key);\n        if (this.cacheConfig.storeAuthStateInCookie) {\n            this.logger.trace(\"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\");\n            this.clearItemCookie(key);\n        }\n        return true;\n    }\n\n    /**\n     * Checks whether key is in cache.\n     * @param key\n     */\n    containsKey(key: string): boolean {\n        return this.browserStorage.containsKey(key) || this.temporaryCacheStorage.containsKey(key);\n    }\n\n    /**\n     * Gets all keys in window.\n     */\n    getKeys(): string[] {\n        return [\n            ...this.browserStorage.getKeys(),\n            ...this.temporaryCacheStorage.getKeys()\n        ];\n    }\n\n    /**\n     * Clears all cache entries created by MSAL.\n     */\n    async clear(): Promise<void> {\n        // Removes all accounts and their credentials\n        await this.removeAllAccounts();\n        this.removeAppMetadata();\n\n        // Removes all remaining MSAL cache items\n        this.getKeys().forEach((cacheKey: string) => {\n            // Check if key contains msal prefix; For now, we are clearing all the cache items created by MSAL.js\n            if ((this.browserStorage.containsKey(cacheKey) || this.temporaryCacheStorage.containsKey(cacheKey)) && ((cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1) || (cacheKey.indexOf(this.clientId) !== -1))) {\n                this.removeItem(cacheKey);\n            }\n        });\n\n        this.internalStorage.clear();\n    }\n\n    /**\n     * Add value to cookies\n     * @param cookieName\n     * @param cookieValue\n     * @param expires\n     */\n    setItemCookie(cookieName: string, cookieValue: string, expires?: number): void {\n        let cookieStr = `${encodeURIComponent(cookieName)}=${encodeURIComponent(cookieValue)};path=/;`;\n        if (expires) {\n            const expireTime = this.getCookieExpirationTime(expires);\n            cookieStr += `expires=${expireTime};`;\n        }\n\n        if (this.cacheConfig.secureCookies) {\n            cookieStr += \"Secure;\";\n        }\n        \n        document.cookie = cookieStr;\n    }\n\n    /**\n     * Get one item by key from cookies\n     * @param cookieName\n     */\n    getItemCookie(cookieName: string): string {\n        const name = `${encodeURIComponent(cookieName)}=`;\n        const cookieList = document.cookie.split(\";\");\n        for (let i: number = 0; i < cookieList.length; i++) {\n            let cookie = cookieList[i];\n            while (cookie.charAt(0) === \" \") {\n                cookie = cookie.substring(1);\n            }\n            if (cookie.indexOf(name) === 0) {\n                return decodeURIComponent(cookie.substring(name.length, cookie.length));\n            }\n        }\n        return \"\";\n    }\n\n    /**\n     * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.\n     */\n    clearMsalCookies(): void {\n        const cookiePrefix = `${Constants.CACHE_PREFIX}.${this.clientId}`;\n        const cookieList = document.cookie.split(\";\");\n        cookieList.forEach((cookie: string): void => {\n            while (cookie.charAt(0) === \" \") {\n                // eslint-disable-next-line no-param-reassign\n                cookie = cookie.substring(1);\n            }\n            if (cookie.indexOf(cookiePrefix) === 0) {\n                const cookieKey = cookie.split(\"=\")[0];\n                this.clearItemCookie(cookieKey);\n            }\n        });\n    }\n\n    /**\n     * Clear an item in the cookies by key\n     * @param cookieName\n     */\n    clearItemCookie(cookieName: string): void {\n        this.setItemCookie(cookieName, \"\", -1);\n    }\n\n    /**\n     * Get cookie expiration time\n     * @param cookieLifeDays\n     */\n    getCookieExpirationTime(cookieLifeDays: number): string {\n        const today = new Date();\n        const expr = new Date(today.getTime() + cookieLifeDays * this.COOKIE_LIFE_MULTIPLIER);\n        return expr.toUTCString();\n    }\n\n    /**\n     * Gets the cache object referenced by the browser\n     */\n    getCache(): object {\n        return this.browserStorage;\n    }\n\n    /**\n     * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser\n     */\n    setCache(): void {\n        // sets nothing\n    }\n\n    /**\n     * Prepend msal.<client-id> to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\n     * @param key\n     * @param addInstanceId\n     */\n    generateCacheKey(key: string): string {\n        const generatedKey = this.validateAndParseJson(key);\n        if (!generatedKey) {\n            if (StringUtils.startsWith(key, Constants.CACHE_PREFIX) || StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)) {\n                return key;\n            }\n            return `${Constants.CACHE_PREFIX}.${this.clientId}.${key}`;\n        }\n\n        return JSON.stringify(key);\n    }\n\n    /**\n     * Create authorityKey to cache authority\n     * @param state\n     */\n    generateAuthorityKey(stateString: string): string {\n        const {\n            libraryState: {\n                id: stateId\n            }\n        } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\n\n        return this.generateCacheKey(`${TemporaryCacheKeys.AUTHORITY}.${stateId}`);\n    }\n\n    /**\n     * Create Nonce key to cache nonce\n     * @param state\n     */\n    generateNonceKey(stateString: string): string {\n        const {\n            libraryState: {\n                id: stateId\n            }\n        } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\n\n        return this.generateCacheKey(`${TemporaryCacheKeys.NONCE_IDTOKEN}.${stateId}`);\n    }\n\n    /**\n     * Creates full cache key for the request state\n     * @param stateString State string for the request\n     */\n    generateStateKey(stateString: string): string {\n        // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\n        const {\n            libraryState: {\n                id: stateId\n            }\n        } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\n        return this.generateCacheKey(`${TemporaryCacheKeys.REQUEST_STATE}.${stateId}`);\n    } \n\n    /**\n     * Gets the cached authority based on the cached state. Returns empty if no cached state found.\n     */\n    getCachedAuthority(cachedState: string): string | null {\n        const stateCacheKey = this.generateStateKey(cachedState);\n        const state = this.getTemporaryCache(stateCacheKey);\n        if (!state) {\n            return null;\n        }\n\n        const authorityCacheKey = this.generateAuthorityKey(state);\n        return this.getTemporaryCache(authorityCacheKey);\n    }\n\n    /**\n     * Updates account, authority, and state in cache\n     * @param serverAuthenticationRequest\n     * @param account\n     */\n    updateCacheEntries(state: string, nonce: string, authorityInstance: string, loginHint: string, account: AccountInfo|null): void {\n        this.logger.trace(\"BrowserCacheManager.updateCacheEntries called\");\n        // Cache the request state\n        const stateCacheKey = this.generateStateKey(state);\n        this.setTemporaryCache(stateCacheKey, state, false);\n\n        // Cache the nonce\n        const nonceCacheKey = this.generateNonceKey(state);\n        this.setTemporaryCache(nonceCacheKey, nonce, false);\n\n        // Cache authorityKey\n        const authorityCacheKey = this.generateAuthorityKey(state);\n        this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\n\n        if (account) {\n            const ccsCredential: CcsCredential = {\n                credential: account.homeAccountId,\n                type: CcsCredentialType.HOME_ACCOUNT_ID\n            };\n            this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\n        } else if (!StringUtils.isEmpty(loginHint)) {\n            const ccsCredential: CcsCredential = {\n                credential: loginHint,\n                type: CcsCredentialType.UPN\n            };\n            this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\n        }\n    }\n\n    /**\n     * Reset all temporary cache items\n     * @param state\n     */\n    resetRequestCache(state: string): void {\n        this.logger.trace(\"BrowserCacheManager.resetRequestCache called\");\n        // check state and remove associated cache items\n        if (!StringUtils.isEmpty(state)) {\n            this.getKeys().forEach(key => {\n                if (key.indexOf(state) !== -1) {\n                    this.removeItem(key);\n                }\n            });\n        }\n\n        // delete generic interactive request parameters\n        if (state) {\n            this.removeItem(this.generateStateKey(state));\n            this.removeItem(this.generateNonceKey(state));\n            this.removeItem(this.generateAuthorityKey(state));\n        }\n        this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\n        this.removeItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI));\n        this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));\n        this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID));\n        this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL));\n        this.setInteractionInProgress(false);\n    }\n\n    /**\n     * Removes temporary cache for the provided state\n     * @param stateString \n     */\n    cleanRequestByState(stateString: string): void {\n        this.logger.trace(\"BrowserCacheManager.cleanRequestByState called\");\n        // Interaction is completed - remove interaction status.\n        if (stateString) {\n            const stateKey = this.generateStateKey(stateString);\n            const cachedState = this.temporaryCacheStorage.getItem(stateKey);\n            this.logger.infoPii(`BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${cachedState}`);\n            this.resetRequestCache(cachedState || \"\");\n        }\n        this.clearMsalCookies();\n    }\n\n    /**\n     * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\n     * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\n     * @param interactionType \n     */\n    cleanRequestByInteractionType(interactionType: InteractionType): void {\n        this.logger.trace(\"BrowserCacheManager.cleanRequestByInteractionType called\");\n        // Loop through all keys to find state key\n        this.getKeys().forEach((key) => {\n            // If this key is not the state key, move on\n            if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\n                return;\n            }\n            \n            // Retrieve state value, return if not a valid value\n            const stateValue = this.temporaryCacheStorage.getItem(key);\n            if (!stateValue) {\n                return;\n            }\n            // Extract state and ensure it matches given InteractionType, then clean request cache\n            const parsedState = BrowserProtocolUtils.extractBrowserRequestState(this.cryptoImpl, stateValue);\n            if (parsedState && parsedState.interactionType === interactionType) {\n                this.logger.infoPii(`BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${stateValue}`);\n                this.resetRequestCache(stateValue);\n            }\n        });\n        this.clearMsalCookies();\n        this.setInteractionInProgress(false);\n    }\n\n    cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest, browserCrypto: ICrypto): void {\n        this.logger.trace(\"BrowserCacheManager.cacheCodeRequest called\");\n\n        const encodedValue = browserCrypto.base64Encode(JSON.stringify(authCodeRequest));\n        this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true);\n    }\n\n    /**\n     * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\n     */\n    getCachedRequest(state: string, browserCrypto: ICrypto): CommonAuthorizationCodeRequest {\n        this.logger.trace(\"BrowserCacheManager.getCachedRequest called\");\n        // Get token request from cache and parse as TokenExchangeParameters.\n        const encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true);\n        if (!encodedTokenRequest) {\n            throw BrowserAuthError.createNoTokenRequestCacheError();\n        }\n\n        const parsedRequest = this.validateAndParseJson(browserCrypto.base64Decode(encodedTokenRequest)) as CommonAuthorizationCodeRequest;\n        if (!parsedRequest) {\n            throw BrowserAuthError.createUnableToParseTokenRequestCacheError();\n        }\n        this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\n\n        // Get cached authority and use if no authority is cached with request.\n        if (StringUtils.isEmpty(parsedRequest.authority)) {\n            const authorityCacheKey: string = this.generateAuthorityKey(state);\n            const cachedAuthority = this.getTemporaryCache(authorityCacheKey);\n            if (!cachedAuthority) {\n                throw BrowserAuthError.createNoCachedAuthorityError();\n            }\n            parsedRequest.authority = cachedAuthority;\n        }\n\n        return parsedRequest;\n    }\n\n    isInteractionInProgress(matchClientId?: boolean): boolean {\n        const clientId = this.getInteractionInProgress();\n\n        if (matchClientId) {\n            return clientId === this.clientId;\n        } else {\n            return !!clientId;\n        }\n    }\n\n    getInteractionInProgress(): string | null {\n        const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;\n        return this.getTemporaryCache(key, false);\n    }\n\n    setInteractionInProgress(inProgress: boolean): void {\n        // Ensure we don't overwrite interaction in progress for a different clientId\n        const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;\n        if (inProgress) {\n            if (this.getInteractionInProgress()) {\n                throw BrowserAuthError.createInteractionInProgressError();\n            } else {\n                // No interaction is in progress\n                this.setTemporaryCache(key, this.clientId, false);\n            }\n        } else if (!inProgress && this.getInteractionInProgress() === this.clientId) {\n            this.removeItem(key);\n        }\n    }\n\n    /**\n     * Returns username retrieved from ADAL or MSAL v1 idToken\n     */\n    getLegacyLoginHint(): string | null {\n        // Only check for adal/msal token if no SSO params are being used\n        const adalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ADAL_ID_TOKEN);\n        if (adalIdTokenString) {\n            this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\n            this.logger.verbose(\"Cached ADAL id token retrieved.\");\n        }\n\n        // Check for cached MSAL v1 id token\n        const msalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ID_TOKEN, true);\n        if (msalIdTokenString) {\n            this.removeItem(this.generateCacheKey(PersistentCacheKeys.ID_TOKEN));\n            this.logger.verbose(\"Cached MSAL.js v1 id token retrieved\");\n        }\n\n        const cachedIdTokenString = msalIdTokenString || adalIdTokenString;\n        if (cachedIdTokenString) {\n            const cachedIdToken = new IdToken(cachedIdTokenString, this.cryptoImpl);\n            if (cachedIdToken.claims && cachedIdToken.claims.preferred_username) {\n                this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 preferred_username as loginHint\");\n                return cachedIdToken.claims.preferred_username;\n            }\n            else if (cachedIdToken.claims && cachedIdToken.claims.upn) {\n                this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 upn as loginHint\");\n                return cachedIdToken.claims.upn;\n            }\n            else {\n                this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, however, no account hint claim found. Enable preferred_username or upn id token claim to get SSO.\");\n            }\n        }\n\n        return null;\n    }\n\n    /**\n     * Updates a credential's cache key if the current cache key is outdated\n     */\n    updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string {\n        const updatedCacheKey = credential.generateCredentialKey();\n\n        if (currentCacheKey !== updatedCacheKey) {\n            const cacheItem = this.getItem(currentCacheKey);\n            if (cacheItem) {\n                this.removeItem(currentCacheKey);\n                this.setItem(updatedCacheKey, cacheItem);\n                this.logger.verbose(`Updated an outdated ${credential.credentialType} cache key`);\n                return updatedCacheKey;\n            } else {\n                this.logger.error(`Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`);\n            }\n        }\n\n        return currentCacheKey;\n    }\n}\n\nexport const DEFAULT_BROWSER_CACHE_MANAGER = (clientId: string, logger: Logger): BrowserCacheManager => {\n    const cacheOptions = {\n        cacheLocation: BrowserCacheLocation.MemoryStorage,\n        storeAuthStateInCookie: false,\n        secureCookies: false\n    };\n    return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger);\n};\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\n\n/**\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\n */\nexport class FetchClient implements INetworkModule {\n\n    /**\n     * Fetch Client for REST endpoints - Get request\n     * @param url \n     * @param headers \n     * @param body \n     */\n    async sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n        let response;\n        try {\n            response = await fetch(url, {\n                method: HTTP_REQUEST_TYPE.GET,\n                headers: this.getFetchHeaders(options)\n            });\n        } catch (e) {\n            if (window.navigator.onLine) {\n                throw BrowserAuthError.createGetRequestFailedError(e, url);\n            } else {\n                throw BrowserAuthError.createNoNetworkConnectivityError();\n            }\n        }\n\n        try {\n            return {\n                headers: this.getHeaderDict(response.headers),\n                body: await response.json() as T,\n                status: response.status\n            };\n        } catch (e) {\n            throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\n        }\n    }\n\n    /**\n     * Fetch Client for REST endpoints - Post request\n     * @param url \n     * @param headers \n     * @param body \n     */\n    async sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n        const reqBody = (options && options.body) || \"\";\n\n        let response;\n        try {\n            response = await fetch(url, {\n                method: HTTP_REQUEST_TYPE.POST,\n                headers: this.getFetchHeaders(options),\n                body: reqBody\n            });\n        } catch (e) {\n            if (window.navigator.onLine) {\n                throw BrowserAuthError.createPostRequestFailedError(e, url);\n            } else {\n                throw BrowserAuthError.createNoNetworkConnectivityError();\n            }\n        }\n\n        try {\n            return {\n                headers: this.getHeaderDict(response.headers),\n                body: await response.json() as T,\n                status: response.status\n            };\n        } catch (e) {\n            throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\n        }\n    }\n\n    /**\n     * Get Fetch API Headers object from string map\n     * @param inputHeaders \n     */\n    private getFetchHeaders(options?: NetworkRequestOptions): Headers {\n        const headers = new Headers();\n        if (!(options && options.headers)) {\n            return headers;\n        }\n        const optionsHeaders = options.headers;\n        Object.keys(optionsHeaders).forEach((key) => {\n            headers.append(key, optionsHeaders[key]);\n        });\n        return headers;\n    }\n\n    private getHeaderDict(headers: Headers): Record<string, string> {\n        const headerDict: Record<string, string> = {};\n        headers.forEach((value: string, key: string) => {\n            headerDict[key] = value;\n        });\n        return headerDict;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\n\n/**\n * This client implements the XMLHttpRequest class to send GET and POST requests.\n */\nexport class XhrClient implements INetworkModule {\n\n    /**\n     * XhrClient for REST endpoints - Get request\n     * @param url \n     * @param headers \n     * @param body \n     */\n    async sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n        return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options);\n    }\n\n    /**\n     * XhrClient for REST endpoints - Post request\n     * @param url \n     * @param headers \n     * @param body \n     */\n    async sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n        return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options);\n    }\n\n    /**\n     * Helper for XhrClient requests.\n     * @param url \n     * @param method \n     * @param options \n     */\n    private sendRequestAsync<T>(url: string, method: HTTP_REQUEST_TYPE, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n        return new Promise<NetworkResponse<T>>((resolve, reject) => {\n            const xhr = new XMLHttpRequest();\n            xhr.open(method, url, /* async: */ true);\n            this.setXhrHeaders(xhr, options);\n            xhr.onload = (): void => {\n                if (xhr.status < 200 || xhr.status >= 300) {\n                    if (method === HTTP_REQUEST_TYPE.POST) {\n                        reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\n                    } else {\n                        reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\n                    }\n                }\n                try {\n                    const jsonResponse = JSON.parse(xhr.responseText) as T;\n                    const networkResponse: NetworkResponse<T> = {\n                        headers: this.getHeaderDict(xhr),\n                        body: jsonResponse,\n                        status: xhr.status\n                    };\n                    resolve(networkResponse);\n                } catch (e) {\n                    reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\n                }\n            };\n\n            xhr.onerror = (): void => {\n                if (window.navigator.onLine) {\n                    if (method === HTTP_REQUEST_TYPE.POST) {\n                        reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\n                    } else {\n                        reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\n                    }\n                } else {\n                    reject(BrowserAuthError.createNoNetworkConnectivityError());\n                }\n            };\n\n            if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\n                xhr.send(options.body);\n            } else if (method === HTTP_REQUEST_TYPE.GET) {\n                xhr.send();\n            } else {\n                throw BrowserAuthError.createHttpMethodNotImplementedError(method);\n            }\n        });\n    }\n\n    /**\n     * Helper to set XHR headers for request.\n     * @param xhr \n     * @param options \n     */\n    private setXhrHeaders(xhr: XMLHttpRequest, options?: NetworkRequestOptions): void {\n        if (options && options.headers) {\n            const headers = options.headers;\n            Object.keys(headers).forEach((key: string) => {\n                xhr.setRequestHeader(key, headers[key]);\n            });\n        }\n    }\n\n    /**\n     * Gets a string map of the headers received in the response.\n     * \n     * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\n     * @param xhr \n     */\n    private getHeaderDict(xhr: XMLHttpRequest): Record<string, string> {\n        const headerString = xhr.getAllResponseHeaders();\n        const headerArr = headerString.trim().split(/[\\r\\n]+/);\n        const headerDict: Record<string, string> = {};\n        headerArr.forEach((value: string) => {\n            const parts = value.split(\": \");\n            const headerName = parts.shift();\n            const headerVal = parts.join(\": \");\n            if (headerName && headerVal) {\n                headerDict[headerName] = headerVal;\n            }\n        });\n\n        return headerDict;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants, INetworkModule, UrlString } from \"@azure/msal-common\";\nimport { FetchClient } from \"../network/FetchClient\";\nimport { XhrClient } from \"../network/XhrClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { InteractionType, BrowserConstants } from \"./BrowserConstants\";\n\n/**\n * Utility class for browser specific functions\n */\nexport class BrowserUtils {\n\n    // #region Window Navigation and URL management\n\n    /**\n     * Clears hash from window url.\n     */\n    static clearHash(contentWindow: Window): void {\n        // Office.js sets history.replaceState to null\n        contentWindow.location.hash = Constants.EMPTY_STRING;\n        if (typeof contentWindow.history.replaceState === \"function\") {\n            // Full removes \"#\" from url\n            contentWindow.history.replaceState(null, Constants.EMPTY_STRING, `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`);\n        }\n    }\n\n    /**\n     * Replaces current hash with hash from provided url\n     */\n    static replaceHash(url: string): void {\n        const urlParts = url.split(\"#\");\n        urlParts.shift(); // Remove part before the hash\n        window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : \"\";\n    }\n\n    /**\n     * Returns boolean of whether the current window is in an iframe or not.\n     */\n    static isInIframe(): boolean {\n        return window.parent !== window;\n    }\n\n    /**\n     * Returns boolean of whether or not the current window is a popup opened by msal\n     */\n    static isInPopup(): boolean {\n        return typeof window !== \"undefined\" && !!window.opener && \n            window.opener !== window && \n            typeof window.name === \"string\" && \n            window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0;\n    }\n\n    // #endregion\n\n    /**\n     * Returns current window URL as redirect uri\n     */\n    static getCurrentUri(): string {\n        return window.location.href.split(\"?\")[0].split(\"#\")[0];\n    }\n\n    /**\n     * Gets the homepage url for the current window location.\n     */\n    static getHomepage(): string {\n        const currentUrl = new UrlString(window.location.href);\n        const urlComponents = currentUrl.getUrlComponents();\n        return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`;\n    }\n\n    /**\n     * Returns best compatible network client object. \n     */\n    static getBrowserNetworkClient(): INetworkModule {\n        if (window.fetch && window.Headers) {\n            return new FetchClient();\n        } else {\n            return new XhrClient();\n        }\n    }\n\n    /**\n     * Throws error if we have completed an auth and are \n     * attempting another auth request inside an iframe.\n     */\n    static blockReloadInHiddenIframes(): void {\n        const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\n        // return an error if called from the hidden iframe created by the msal js silent calls\n        if (isResponseHash && BrowserUtils.isInIframe()) {\n            throw BrowserAuthError.createBlockReloadInHiddenIframeError();\n        }\n    }\n\n    /**\n     * Block redirect operations in iframes unless explicitly allowed\n     * @param interactionType Interaction type for the request\n     * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\n     */\n    static blockRedirectInIframe(interactionType: InteractionType, allowRedirectInIframe: boolean): void {\n        const isIframedApp = BrowserUtils.isInIframe();\n        if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\n            // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\n            throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\n        }\n    }\n\n    /**\n     * Block redirectUri loaded in popup from calling AcquireToken APIs\n     */\n    static blockAcquireTokenInPopups(): void {\n        // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\n        if (BrowserUtils.isInPopup()) {\n            throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\n        }\n    }\n\n    /**\n     * Throws error if token requests are made in non-browser environment\n     * @param isBrowserEnvironment Flag indicating if environment is a browser.\n     */\n    static blockNonBrowserEnvironment(isBrowserEnvironment: boolean): void {\n        if (!isBrowserEnvironment) {\n            throw BrowserAuthError.createNonBrowserEnvironmentError();\n        }\n    }\n\n    /**\n     * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\n     */\n    static detectIEOrEdge(): boolean {\n        const ua = window.navigator.userAgent;\n        const msie = ua.indexOf(\"MSIE \");\n        const msie11 = ua.indexOf(\"Trident/\");\n        const msedge = ua.indexOf(\"Edge/\");\n        const isIE = msie > 0 || msie11 > 0;\n        const isEdge = msedge > 0;\n        return isIE || isEdge;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INavigationClient } from \"./INavigationClient\";\nimport { NavigationOptions } from \"./NavigationOptions\";\n\nexport class NavigationClient implements INavigationClient {\n    /**\n     * Navigates to other pages within the same web application\n     * @param url \n     * @param options \n     */\n    navigateInternal(url: string, options: NavigationOptions): Promise<boolean>{\n        return NavigationClient.defaultNavigateWindow(url, options);\n    }\n\n    /**\n     * Navigates to other pages outside the web application i.e. the Identity Provider\n     * @param url \n     * @param options \n     */\n    navigateExternal(url: string, options: NavigationOptions): Promise<boolean> {\n        return NavigationClient.defaultNavigateWindow(url, options);\n    }\n\n    /**\n     * Default navigation implementation invoked by the internal and external functions\n     * @param url \n     * @param options \n     */\n    private static defaultNavigateWindow(url: string, options: NavigationOptions): Promise<boolean> {\n        if (options.noHistory) {\n            window.location.replace(url);\n        } else {\n            window.location.assign(url);\n        }\n\n        return new Promise((resolve) => {\n            setTimeout(() => {\n                resolve(true);\n            }, options.timeout);\n        });\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SystemOptions, LoggerOptions, INetworkModule, DEFAULT_SYSTEM_OPTIONS, Constants, ProtocolMode, LogLevel, StubbedNetworkModule, AzureCloudInstance, AzureCloudOptions } from \"@azure/msal-common\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NavigationClient } from \"../navigation/NavigationClient\";\n\n// Default timeout for popup windows and iframes in milliseconds\nexport const DEFAULT_POPUP_TIMEOUT_MS = 60000;\nexport const DEFAULT_IFRAME_TIMEOUT_MS = 6000;\nexport const DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\n\n/**\n * Use this to configure the auth options in the Configuration object\n *\n * - clientId                    - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\n * - authority                   - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\n * - knownAuthorities            - An array of URIs that are known to be valid. Used in B2C scenarios.\n * - cloudDiscoveryMetadata      - A string containing the cloud discovery response. Used in AAD scenarios.\n * - redirectUri                 - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal.\n * - postLogoutRedirectUri       - The redirect URI where the window navigates after a successful logout.\n * - navigateToLoginRequestUrl   - Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL.\n * - clientCapabilities          - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\n * - protocolMode                - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\n */\nexport type BrowserAuthOptions = {\n    clientId: string;\n    authority?: string;\n    knownAuthorities?: Array<string>;\n    cloudDiscoveryMetadata?: string;\n    authorityMetadata?: string;\n    redirectUri?: string;\n    postLogoutRedirectUri?: string | null;\n    navigateToLoginRequestUrl?: boolean;\n    clientCapabilities?: Array<string>;\n    protocolMode?: ProtocolMode;\n    azureCloudOptions?: AzureCloudOptions;\n};\n\n/**\n * Use this to configure the below cache configuration options:\n *\n * - cacheLocation              - Used to specify the cacheLocation user wants to set. Valid values are \"localStorage\" and \"sessionStorage\"\n * - storeAuthStateInCookie     - If set, MSAL stores the auth request state required for validation of the auth flows in the browser cookies. By default this flag is set to false.\n * - secureCookies              - If set, MSAL sets the \"Secure\" flag on cookies so they can only be sent over HTTPS. By default this flag is set to false.\n */\nexport type CacheOptions = {\n    cacheLocation?: BrowserCacheLocation | string;\n    storeAuthStateInCookie?: boolean;\n    secureCookies?: boolean;\n};\n\n/**\n * Library Specific Options\n *\n * - tokenRenewalOffsetSeconds    - Sets the window of offset needed to renew the token before expiry\n * - loggerOptions                - Used to initialize the Logger object (See ClientConfiguration.ts)\n * - networkClient                - Network interface implementation\n * - windowHashTimeout            - Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set.\n * - iframeHashTimeout            - Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set.\n * - loadFrameTimeout             - Sets the timeout for waiting for a response hash in an iframe or popup\n * - navigateFrameWait            - Maximum time the library should wait for a frame to load\n * - redirectNavigationTimeout    - Time to wait for redirection to occur before resolving promise\n * - asyncPopups                  - Sets whether popups are opened asynchronously. By default, this flag is set to false. When set to false, blank popups are opened before anything else happens. When set to true, popups are opened when making the network request.\n * - allowRedirectInIframe        - Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login).\n */\nexport type BrowserSystemOptions = SystemOptions & {\n    loggerOptions?: LoggerOptions;\n    networkClient?: INetworkModule;\n    navigationClient?: INavigationClient;\n    windowHashTimeout?: number;\n    iframeHashTimeout?: number;\n    loadFrameTimeout?: number;\n    navigateFrameWait?: number;\n    redirectNavigationTimeout?: number;\n    asyncPopups?: boolean;\n    allowRedirectInIframe?: boolean;\n};\n\n/**\n * Use the configuration object to configure MSAL and initialize the UserAgentApplication.\n *\n * This object allows you to configure important elements of MSAL functionality:\n * - auth: this is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform\n * - cache: this is where you configure cache location and whether to store cache in cookies\n * - system: this is where you can configure the network client, logger, token renewal offset\n */\nexport type Configuration = {\n    auth: BrowserAuthOptions,\n    cache?: CacheOptions,\n    system?: BrowserSystemOptions\n};\n\nexport type BrowserConfiguration = {\n    auth: Required<BrowserAuthOptions>,\n    cache: Required<CacheOptions>,\n    system: Required<BrowserSystemOptions>\n};\n\n/**\n * MSAL function that sets the default options when not explicitly configured from app developer\n *\n * @param auth\n * @param cache\n * @param system\n *\n * @returns Configuration object\n */\nexport function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem }: Configuration, isBrowserEnvironment: boolean): BrowserConfiguration {\n\n    // Default auth options for browser\n    const DEFAULT_AUTH_OPTIONS: Required<BrowserAuthOptions> = {\n        clientId: \"\",\n        authority: `${Constants.DEFAULT_AUTHORITY}`,\n        knownAuthorities: [],\n        cloudDiscoveryMetadata: \"\",\n        authorityMetadata: \"\",\n        redirectUri: \"\",\n        postLogoutRedirectUri: \"\",\n        navigateToLoginRequestUrl: true,\n        clientCapabilities: [],\n        protocolMode: ProtocolMode.AAD,\n        azureCloudOptions: {\n            azureCloudInstance: AzureCloudInstance.None,\n            tenant: \"\"\n        },\n    };\n\n    // Default cache options for browser\n    const DEFAULT_CACHE_OPTIONS: Required<CacheOptions> = {\n        cacheLocation: BrowserCacheLocation.SessionStorage,\n        storeAuthStateInCookie: false,\n        secureCookies: false\n    };\n\n    // Default logger options for browser\n    const DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\n        // eslint-disable-next-line @typescript-eslint/no-empty-function\n        loggerCallback: (): void => {},\n        logLevel: LogLevel.Info,\n        piiLoggingEnabled: false\n    };\n\n    // Default system options for browser\n    const DEFAULT_BROWSER_SYSTEM_OPTIONS: Required<BrowserSystemOptions> = {\n        ...DEFAULT_SYSTEM_OPTIONS,\n        loggerOptions: DEFAULT_LOGGER_OPTIONS,\n        networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule,\n        navigationClient: new NavigationClient(),\n        loadFrameTimeout: 0,\n        // If loadFrameTimeout is provided, use that as default.\n        windowHashTimeout: (userInputSystem && userInputSystem.loadFrameTimeout) || DEFAULT_POPUP_TIMEOUT_MS,\n        iframeHashTimeout: (userInputSystem && userInputSystem.loadFrameTimeout) || DEFAULT_IFRAME_TIMEOUT_MS,\n        navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0,\n        redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS,\n        asyncPopups: false,\n        allowRedirectInIframe: false\n    };\n\n    const overlayedConfig: BrowserConfiguration = {\n        auth: { ...DEFAULT_AUTH_OPTIONS, ...userInputAuth },\n        cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache },\n        system: { ...DEFAULT_BROWSER_SYSTEM_OPTIONS, ...userInputSystem }\n    };\n    return overlayedConfig;\n}\n", "/* eslint-disable header/header */\nexport const name = \"@azure/msal-browser\";\nexport const version = \"2.22.1\";\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport enum EventType {\n    ACCOUNT_ADDED = \"msal:accountAdded\",\n    ACCOUNT_REMOVED = \"msal:accountRemoved\",\n    LOGIN_START = \"msal:loginStart\",\n    LOGIN_SUCCESS = \"msal:loginSuccess\",\n    LOGIN_FAILURE = \"msal:loginFailure\",\n    ACQUIRE_TOKEN_START = \"msal:acquireTokenStart\",\n    ACQUIRE_TOKEN_SUCCESS = \"msal:acquireTokenSuccess\",\n    ACQUIRE_TOKEN_FAILURE = \"msal:acquireTokenFailure\",\n    ACQUIRE_TOKEN_NETWORK_START = \"msal:acquireTokenFromNetworkStart\",\n    SSO_SILENT_START = \"msal:ssoSilentStart\",\n    SSO_SILENT_SUCCESS = \"msal:ssoSilentSuccess\",\n    SSO_SILENT_FAILURE = \"msal:ssoSilentFailure\",\n    ACQUIRE_TOKEN_BY_CODE_START = \"msal:acquireTokenByCodeStart\",\n    ACQUIRE_TOKEN_BY_CODE_SUCCESS = \"msal:acquireTokenByCodeSuccess\",\n    ACQUIRE_TOKEN_BY_CODE_FAILURE = \"msal:acquireTokenByCodeFailure\",\n    HANDLE_REDIRECT_START = \"msal:handleRedirectStart\",\n    HANDLE_REDIRECT_END = \"msal:handleRedirectEnd\",\n    POPUP_OPENED = \"msal:popupOpened\",\n    LOGOUT_START = \"msal:logoutStart\",\n    LOGOUT_SUCCESS = \"msal:logoutSuccess\",\n    LOGOUT_FAILURE = \"msal:logoutFailure\",\n    LOGOUT_END = \"msal:logoutEnd\"\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, Logger, AccountEntity, CacheManager } from \"@azure/msal-common\";\nimport { InteractionType } from \"../utils/BrowserConstants\";\nimport { EventCallbackFunction, EventError, EventMessage, EventPayload } from \"./EventMessage\";\nimport { EventType } from \"./EventType\";\n\nexport class EventHandler {\n    // Callback for subscribing to events\n    private eventCallbacks: Map<string, EventCallbackFunction>;\n    private logger: Logger;\n    private browserCrypto: ICrypto;\n    private listeningToStorageEvents: boolean;\n\n    constructor(logger: Logger, browserCrypto: ICrypto) {\n        this.eventCallbacks = new Map();\n        this.logger = logger;\n        this.browserCrypto = browserCrypto;\n        this.listeningToStorageEvents = false;\n        this.handleAccountCacheChange = this.handleAccountCacheChange.bind(this);\n    }\n\n    /**\n     * Adds event callbacks to array\n     * @param callback\n     */\n    addEventCallback(callback: EventCallbackFunction): string | null {\n        if (typeof window !== \"undefined\") {\n            const callbackId = this.browserCrypto.createNewGuid();\n            this.eventCallbacks.set(callbackId, callback);\n            this.logger.verbose(`Event callback registered with id: ${callbackId}`);\n    \n            return callbackId;\n        }\n        \n        return null;\n    }\n\n    /**\n     * Removes callback with provided id from callback array\n     * @param callbackId\n     */\n    removeEventCallback(callbackId: string): void {\n        this.eventCallbacks.delete(callbackId);\n        this.logger.verbose(`Event callback ${callbackId} removed.`);\n    }\n\n    /**\n     * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n     */\n    enableAccountStorageEvents(): void {\n        if (typeof window === \"undefined\") {\n            return;\n        }\n\n        if (!this.listeningToStorageEvents) {\n            this.logger.verbose(\"Adding account storage listener.\");\n            this.listeningToStorageEvents = true;\n            window.addEventListener(\"storage\", this.handleAccountCacheChange);\n        } else {\n            this.logger.verbose(\"Account storage listener already registered.\");\n        }\n    }\n\n    /**\n     * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n     */\n    disableAccountStorageEvents(): void {\n        if (typeof window === \"undefined\") {\n            return;\n        }\n\n        if (this.listeningToStorageEvents) {\n            this.logger.verbose(\"Removing account storage listener.\");\n            window.removeEventListener(\"storage\", this.handleAccountCacheChange);\n            this.listeningToStorageEvents = false;\n        } else {\n            this.logger.verbose(\"No account storage listener registered.\");\n        }\n    }\n\n    /**\n     * Emits events by calling callback with event message\n     * @param eventType\n     * @param interactionType\n     * @param payload\n     * @param error\n     */\n    emitEvent(eventType: EventType, interactionType?: InteractionType, payload?: EventPayload, error?: EventError): void {\n        if (typeof window !== \"undefined\") {\n            const message: EventMessage = {\n                eventType: eventType,\n                interactionType: interactionType || null,\n                payload: payload || null,\n                error: error || null,\n                timestamp: Date.now()\n            };\n\n            this.logger.info(`Emitting event: ${eventType}`);\n\n            this.eventCallbacks.forEach((callback: EventCallbackFunction, callbackId: string) => {\n                this.logger.verbose(`Emitting event to callback ${callbackId}: ${eventType}`);\n                callback.apply(null, [message]);\n            });\n        }\n    }\n\n    /**\n     * Emit account added/removed events when cached accounts are changed in a different tab or frame\n     */\n    private handleAccountCacheChange(e: StorageEvent): void {\n        try {\n            const cacheValue = e.newValue || e.oldValue;\n            if (!cacheValue) {\n                return;\n            }\n            const parsedValue = JSON.parse(cacheValue);\n            if (typeof parsedValue !== \"object\" || !AccountEntity.isAccountEntity(parsedValue)) {\n                return;\n            }\n            const accountEntity = CacheManager.toObject<AccountEntity>(new AccountEntity(), parsedValue);\n            const accountInfo = accountEntity.getAccountInfo();\n            if (!e.oldValue && e.newValue) {\n                this.logger.info(\"Account was added to cache in a different window\");\n                this.emitEvent(EventType.ACCOUNT_ADDED, undefined, accountInfo);\n            } else if (!e.newValue && e.oldValue) {\n                this.logger.info(\"Account was removed from cache in a different window\");\n                this.emitEvent(EventType.ACCOUNT_REMOVED, undefined, accountInfo);\n            }\n        } catch (e) {\n            return;\n        }\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, INetworkModule, Logger, AuthenticationResult, AccountInfo, AccountEntity, BaseAuthRequest, AuthenticationScheme, UrlString, ServerTelemetryManager, ServerTelemetryRequest, ClientConfigurationError, StringUtils } from \"@azure/msal-common\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { version } from \"../packageMetadata\";\nimport { BrowserConstants } from \"../utils/BrowserConstants\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\n\nexport abstract class BaseInteractionClient {\n\n    protected config: BrowserConfiguration;\n    protected browserStorage: BrowserCacheManager;\n    protected browserCrypto: ICrypto;\n    protected networkClient: INetworkModule;\n    protected logger: Logger;\n    protected eventHandler: EventHandler;\n    protected correlationId: string;\n\n    constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, correlationId?: string) {\n        this.config = config;\n        this.browserStorage = storageImpl;\n        this.browserCrypto = browserCrypto;\n        this.networkClient = this.config.system.networkClient;\n        this.eventHandler = eventHandler;\n        this.correlationId = correlationId || this.browserCrypto.createNewGuid();\n        this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId);\n    }\n\n    abstract acquireToken(request: RedirectRequest|PopupRequest|SsoSilentRequest): Promise<AuthenticationResult|void>;\n\n    abstract logout(request: EndSessionRequest): Promise<void>;\n\n    protected async clearCacheOnLogout(account?: AccountInfo| null): Promise<void> {\n        if (account) {\n            if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) {\n                this.logger.verbose(\"Setting active account to null\");\n                this.browserStorage.setActiveAccount(null);\n            }\n            // Clear given account.\n            try {\n                await this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account));\n                this.logger.verbose(\"Cleared cache items belonging to the account provided in the logout request.\");\n            } catch (error) {\n                this.logger.error(\"Account provided in logout request was not found. Local cache unchanged.\");\n            }\n        } else {\n            try {\n                // Clear all accounts and tokens\n                await this.browserStorage.clear();\n                // Clear any stray keys from IndexedDB\n                await this.browserCrypto.clearKeystore();\n                this.logger.verbose(\"No account provided in logout request, clearing all cache items.\");\n            } catch(e) {\n                this.logger.error(\"Attempted to clear all MSAL cache items and failed. Local cache unchanged.\");\n            }\n        }\n    }\n\n    /**\n     * Initializer function for all request APIs\n     * @param request\n     */\n    protected async initializeBaseRequest(request: Partial<BaseAuthRequest>): Promise<BaseAuthRequest> {\n        this.logger.verbose(\"Initializing BaseAuthRequest\");\n        const authority = request.authority || this.config.auth.authority;\n\n        const scopes = [...((request && request.scopes) || [])];\n\n        const validatedRequest: BaseAuthRequest = {\n            ...request,\n            correlationId: this.correlationId,\n            authority,\n            scopes\n        };\n\n        // Set authenticationScheme to BEARER if not explicitly set in the request\n        if (!validatedRequest.authenticationScheme) {\n            validatedRequest.authenticationScheme = AuthenticationScheme.BEARER;\n            this.logger.verbose(\"Authentication Scheme wasn't explicitly set in request, defaulting to \\\"Bearer\\\" request\");\n        } else {\n            if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) {\n                if (!request.sshJwk) {\n                    throw ClientConfigurationError.createMissingSshJwkError();\n                }\n                if(!request.sshKid) {\n                    throw ClientConfigurationError.createMissingSshKidError();\n                }\n            }\n            this.logger.verbose(`Authentication Scheme set to \"${validatedRequest.authenticationScheme}\" as configured in Auth request`);\n        }\n\n        // Set requested claims hash if claims were requested\n        if (request.claims && !StringUtils.isEmpty(request.claims)) {\n            validatedRequest.requestedClaimsHash = await this.browserCrypto.hashString(request.claims);\n        } \n\n        return validatedRequest;\n    }\n\n    /**\n     *\n     * Use to get the redirect uri configured in MSAL or null.\n     * @param requestRedirectUri\n     * @returns Redirect URL\n     *\n     */\n    getRedirectUri(requestRedirectUri?: string): string {\n        this.logger.verbose(\"getRedirectUri called\");\n        const redirectUri = requestRedirectUri || this.config.auth.redirectUri || BrowserUtils.getCurrentUri();\n        return UrlString.getAbsoluteUrl(redirectUri, BrowserUtils.getCurrentUri());\n    }\n\n    /**\n     *\n     * @param apiId\n     * @param correlationId\n     * @param forceRefresh\n     */\n    protected initializeServerTelemetryManager(apiId: number, forceRefresh?: boolean): ServerTelemetryManager {\n        this.logger.verbose(\"initializeServerTelemetryManager called\");\n        const telemetryPayload: ServerTelemetryRequest = {\n            clientId: this.config.auth.clientId,\n            correlationId: this.correlationId,\n            apiId: apiId,\n            forceRefresh: forceRefresh || false,\n            wrapperSKU: this.browserStorage.getWrapperMetadata()[0],\n            wrapperVer: this.browserStorage.getWrapperMetadata()[1]\n        };\n\n        return new ServerTelemetryManager(telemetryPayload, this.browserStorage);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, Logger, ServerTelemetryManager, CommonAuthorizationCodeRequest, Constants, AuthorizationCodeClient, ClientConfiguration, AuthorityOptions, Authority, AuthorityFactory, ServerAuthorizationCodeResponse, UrlString, CommonEndSessionRequest, ProtocolUtils, ResponseMode, StringUtils, IdTokenClaims, AccountInfo, AzureCloudOptions } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { BrowserConstants, InteractionType } from \"../utils/BrowserConstants\";\nimport { version } from \"../packageMetadata\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserProtocolUtils, BrowserStateObject } from \"../utils/BrowserProtocolUtils\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\n\n/**\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\n */\nexport abstract class StandardInteractionClient extends BaseInteractionClient {\n    protected navigationClient: INavigationClient;\n\n    constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, correlationId?: string) {\n        super(config, storageImpl, browserCrypto, logger, eventHandler, correlationId);\n        this.navigationClient = navigationClient;\n    }\n\n    /**\n     * Generates an auth code request tied to the url request.\n     * @param request\n     */\n    protected async initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise<CommonAuthorizationCodeRequest> {\n        this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\n        const generatedPkceParams = await this.browserCrypto.generatePkceCodes();\n\n        const authCodeRequest: CommonAuthorizationCodeRequest = {\n            ...request,\n            redirectUri: request.redirectUri,\n            code: \"\",\n            codeVerifier: generatedPkceParams.verifier\n        };\n\n        request.codeChallenge = generatedPkceParams.challenge;\n        request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\n\n        return authCodeRequest;\n    }\n\n    /**\n     * Initializer for the logout request.\n     * @param logoutRequest\n     */\n    protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest {\n        this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest?.correlationId);\n\n        const validLogoutRequest: CommonEndSessionRequest = {\n            correlationId: this.browserCrypto.createNewGuid(),\n            ...logoutRequest\n        };\n\n        /**\n         * Set logout_hint to be login_hint from ID Token Claims if present\n         * and logoutHint attribute wasn't manually set in logout request\n         */\n        if (logoutRequest) {\n            // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\n            if (!logoutRequest.logoutHint) {\n                if(logoutRequest.account) {\n                    const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\n                    if (logoutHint) {\n                        this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\n                        validLogoutRequest.logoutHint = logoutHint;\n                    }\n                } else {\n                    this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\n                }\n            } else {\n                this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\n            }\n        } else {\n            this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\n        }\n\n        /*\n         * Only set redirect uri if logout request isn't provided or the set uri isn't null.\n         * Otherwise, use passed uri, config, or current page.\n         */\n        if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\n            if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\n                this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\n                validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n            } else if (this.config.auth.postLogoutRedirectUri === null) {\n                this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\n            } else if (this.config.auth.postLogoutRedirectUri) {\n                this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\n                validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n            } else {\n                this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\n                validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\n            }\n        } else {\n            this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\n        }\n\n        return validLogoutRequest;\n    }\n\n    /**\n     * Parses login_hint ID Token Claim out of AccountInfo object to be used as\n     * logout_hint in end session request.\n     * @param account\n     */\n    protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null {\n        const idTokenClaims: IdTokenClaims | undefined = account.idTokenClaims;\n        if (idTokenClaims) {\n            if (idTokenClaims.login_hint) {\n                return idTokenClaims.login_hint;\n            } else {\n                this.logger.verbose(\"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\");\n            }\n        } else {\n            this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\n        }\n\n        return null;\n    }\n\n    /**\n     * Creates an Authorization Code Client with the given authority, or the default authority.\n     * @param serverTelemetryManager\n     * @param authorityUrl\n     */\n    protected async createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<AuthorizationCodeClient> {\n        // Create auth module.\n        const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions);\n        return new AuthorizationCodeClient(clientConfig);\n    }\n\n    /**\n     * Creates a Client Configuration object with the given request authority, or the default authority.\n     * @param serverTelemetryManager\n     * @param requestAuthority\n     * @param requestCorrelationId\n     */\n    protected async getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<ClientConfiguration> {\n        this.logger.verbose(\"getClientConfiguration called\");\n        const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions);\n\n        return {\n            authOptions: {\n                clientId: this.config.auth.clientId,\n                authority: discoveredAuthority,\n                clientCapabilities: this.config.auth.clientCapabilities\n            },\n            systemOptions: {\n                tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\n                preventCorsPreflight: true\n            },\n            loggerOptions: {\n                loggerCallback: this.config.system.loggerOptions.loggerCallback,\n                piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\n                logLevel: this.config.system.loggerOptions.logLevel,\n                correlationId: this.correlationId\n            },\n            cryptoInterface: this.browserCrypto,\n            networkInterface: this.networkClient,\n            storageInterface: this.browserStorage,\n            serverTelemetryManager: serverTelemetryManager,\n            libraryInfo: {\n                sku: BrowserConstants.MSAL_SKU,\n                version: version,\n                cpu: \"\",\n                os: \"\"\n            }\n        };\n    }\n\n    /**\n     * @param hash\n     * @param interactionType\n     */\n    protected validateAndExtractStateFromHash(hash: string, interactionType: InteractionType, requestCorrelationId?: string): string {\n        this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\n        // Deserialize hash fragment response parameters.\n        const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n        if (!serverParams.state) {\n            throw BrowserAuthError.createHashDoesNotContainStateError();\n        }\n\n        const platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\n        if (!platformStateObj) {\n            throw BrowserAuthError.createUnableToParseStateError();\n        }\n\n        if (platformStateObj.interactionType !== interactionType) {\n            throw BrowserAuthError.createStateInteractionTypeMismatchError();\n        }\n\n        this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\n        return serverParams.state;\n    }\n\n    /**\n     * Used to get a discovered version of the default authority.\n     * @param requestAuthority\n     * @param requestCorrelationId\n     */\n    protected async getDiscoveredAuthority(requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<Authority> {\n        this.logger.verbose(\"getDiscoveredAuthority called\");\n        const authorityOptions: AuthorityOptions = {\n            protocolMode: this.config.auth.protocolMode,\n            knownAuthorities: this.config.auth.knownAuthorities,\n            cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n            authorityMetadata: this.config.auth.authorityMetadata,\n        };\n\n        // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority\n        const userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\n\n        // fall back to the authority from config\n        const builtAuthority = Authority.generateAuthority( userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\n        this.logger.verbose(\"Creating discovered authority with configured authority\");\n        return await AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions);\n    }\n\n    /**\n     * Helper to initialize required request parameters for interactive APIs and ssoSilent()\n     * @param request\n     * @param interactionType\n     */\n    protected async initializeAuthorizationRequest(request: RedirectRequest|PopupRequest|SsoSilentRequest, interactionType: InteractionType): Promise<AuthorizationUrlRequest> {\n        this.logger.verbose(\"initializeAuthorizationRequest called\");\n        const redirectUri = this.getRedirectUri(request.redirectUri);\n        const browserState: BrowserStateObject = {\n            interactionType: interactionType\n        };\n        const state = ProtocolUtils.setRequestState(\n            this.browserCrypto,\n            (request && request.state)|| Constants.EMPTY_STRING,\n            browserState\n        );\n\n        const validatedRequest: AuthorizationUrlRequest = {\n            ...await this.initializeBaseRequest(request),\n            redirectUri: redirectUri,\n            state: state,\n            nonce: request.nonce || this.browserCrypto.createNewGuid(),\n            responseMode: ResponseMode.FRAGMENT\n        };\n\n        const account = request.account || this.browserStorage.getActiveAccount();\n        if (account) {\n            this.logger.verbose(\"Setting validated request account\");\n            this.logger.verbosePii(`Setting validated request account: ${account}`);\n            validatedRequest.account = account;\n        }\n\n        // Check for ADAL/MSAL v1 SSO\n        if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\n            const legacyLoginHint = this.browserStorage.getLegacyLoginHint();\n            if (legacyLoginHint) {\n                validatedRequest.loginHint = legacyLoginHint;\n            }\n        }\n\n        return validatedRequest;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CommonEndSessionRequest, Constants, Logger, StringUtils } from \"@azure/msal-common\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { PopupParams } from \"../interaction_handler/PopupHandler\";\nimport { BrowserConstants, InteractionType } from \"./BrowserConstants\";\n\n/**\n * Popup configurations for setting dimensions and position of popup window\n */\nexport type PopupWindowAttributes = {\n    popupSize?: PopupSize,\n    popupPosition?: PopupPosition\n};\n\nexport type PopupSize = {\n    height: number;\n    width: number;\n};\n\nexport type PopupPosition = {\n    top: number;\n    left: number;\n};\n\nexport class PopupUtils {\n    private browserStorage: BrowserCacheManager;\n    private logger: Logger;\n    private currentWindow: Window|undefined;\n\n    constructor(storageImpl: BrowserCacheManager, logger: Logger) {\n        this.browserStorage = storageImpl;\n        this.logger = logger;\n\n        // Properly sets this reference for the unload event.\n        this.unloadWindow = this.unloadWindow.bind(this);\n    }\n\n    /**\n     * @hidden\n     *\n     * Configures popup window for login.\n     *\n     * @param urlNavigate\n     * @param title\n     * @param popUpWidth\n     * @param popUpHeight\n     * @param popupWindowAttributes\n     * @ignore\n     * @hidden\n     */\n    openPopup(urlNavigate: string, popupParams: PopupParams): Window {\n        try {\n            let popupWindow;\n            // Popup window passed in, setting url to navigate to\n            if (popupParams.popup) {\n                popupWindow = popupParams.popup;\n                this.logger.verbosePii(`Navigating popup window to: ${urlNavigate}`);\n                popupWindow.location.assign(urlNavigate);\n            } else if (typeof popupParams.popup === \"undefined\") {\n                // Popup will be undefined if it was not passed in\n                this.logger.verbosePii(`Opening popup window to: ${urlNavigate}`);\n                popupWindow = PopupUtils.openSizedPopup(urlNavigate, popupParams.popupName, popupParams.popupWindowAttributes, this.logger);\n            }\n\n            // Popup will be null if popups are blocked\n            if (!popupWindow) {\n                throw BrowserAuthError.createEmptyWindowCreatedError();\n            }\n            if (popupWindow.focus) {\n                popupWindow.focus();\n            }\n            this.currentWindow = popupWindow;\n            window.addEventListener(\"beforeunload\", this.unloadWindow);\n\n            return popupWindow;\n        } catch (e) {\n            this.logger.error(\"error opening popup \" + e.message);\n            this.browserStorage.setInteractionInProgress(false);\n            throw BrowserAuthError.createPopupWindowError(e.toString());\n        }\n    }\n\n    /**\n     * Helper function to set popup window dimensions and position\n     * @param urlNavigate \n     * @param popupName \n     * @param popupWindowAttributes \n     * @returns \n     */\n    static openSizedPopup(urlNavigate: string, popupName: string, popupWindowAttributes: PopupWindowAttributes, logger: Logger): Window|null {\n        /**\n         * adding winLeft and winTop to account for dual monitor\n         * using screenLeft and screenTop for IE8 and earlier\n         */\n        const winLeft = window.screenLeft ? window.screenLeft : window.screenX;\n        const winTop = window.screenTop ? window.screenTop : window.screenY;\n        /**\n         * window.innerWidth displays browser window\"s height and width excluding toolbars\n         * using document.documentElement.clientWidth for IE8 and earlier\n         */\n        const winWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n        const winHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\n\n        let width = popupWindowAttributes.popupSize?.width;\n        let height = popupWindowAttributes.popupSize?.height;\n        let top = popupWindowAttributes.popupPosition?.top;\n        let left = popupWindowAttributes.popupPosition?.left;\n\n        if (!width || width < 0 || width > winWidth) {\n            logger.verbose(\"Default popup window width used. Window width not configured or invalid.\");\n            width = BrowserConstants.POPUP_WIDTH;\n        }\n\n        if (!height || height < 0 || height > winHeight) {\n            logger.verbose(\"Default popup window height used. Window height not configured or invalid.\");\n            height = BrowserConstants.POPUP_HEIGHT;\n        }\n\n        if (!top || top < 0 || top > winHeight) {\n            logger.verbose(\"Default popup window top position used. Window top not configured or invalid.\");\n            top = Math.max(0, ((winHeight / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\n        }\n\n        if (!left || left < 0 || left > winWidth) {\n            logger.verbose(\"Default popup window left position used. Window left not configured or invalid.\");\n            left = Math.max(0, ((winWidth / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\n        }\n\n        return window.open(urlNavigate, popupName, `width=${width}, height=${height}, top=${top}, left=${left}, scrollbars=yes`);\n    }\n\n    /**\n     * Event callback to unload main window.\n     */\n    unloadWindow(e: Event): void {\n        this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\n        if (this.currentWindow) {\n            this.currentWindow.close();\n        }\n        // Guarantees browser unload will happen, so no other errors will be thrown.\n        e.preventDefault();\n    }\n\n    /**\n     * Closes popup, removes any state vars created during popup calls.\n     * @param popupWindow\n     */\n    cleanPopup(popupWindow?: Window): void {\n        if (popupWindow) {\n            // Close window.\n            popupWindow.close();\n        }\n        // Remove window unload function\n        window.removeEventListener(\"beforeunload\", this.unloadWindow);\n\n        // Interaction is completed - remove interaction status.\n        this.browserStorage.setInteractionInProgress(false);\n    }\n\n    /**\n     * Monitors a window until it loads a url with the same origin.\n     * @param popupWindow - window that is being monitored\n     */\n    monitorPopupForSameOrigin(popupWindow: Window): Promise<void> {\n        return new Promise((resolve, reject) => {\n            const intervalId = setInterval(() => {\n                if (popupWindow.closed) {\n                    // Window is closed\n                    this.cleanPopup();\n                    clearInterval(intervalId);\n                    reject(BrowserAuthError.createUserCancelledError());\n                    return;\n                }\n\n                let href: string = Constants.EMPTY_STRING;\n                try {\n                    /*\n                     * Will throw if cross origin,\n                     * which should be caught and ignored\n                     * since we need the interval to keep running while on STS UI.\n                     */\n                    href = popupWindow.location.href;\n                } catch (e) {}\n\n                // Don't process blank pages or cross domain\n                if (StringUtils.isEmpty(href) || href === \"about:blank\") {\n                    return;\n                }\n\n                clearInterval(intervalId);\n                resolve();\n            }, BrowserConstants.POLL_INTERVAL_MS);\n        });\n    }\n\n    /**\n     * Generates the name for the popup based on the client id and request\n     * @param clientId\n     * @param request\n     */\n    static generatePopupName(clientId: string, scopes: Array<string>, authority: string, correlationId: string): string {\n        return `${BrowserConstants.POPUP_NAME_PREFIX}.${clientId}.${scopes.join(\"-\")}.${authority}.${correlationId}`;\n    }\n\n    /**\n     * Generates the name for the popup based on the client id and request for logouts\n     * @param clientId \n     * @param request \n     */\n    static generateLogoutPopupName(clientId: string, request: CommonEndSessionRequest): string {\n        const homeAccountId = request.account && request.account.homeAccountId;\n        return `${BrowserConstants.POPUP_NAME_PREFIX}.${clientId}.${homeAccountId}.${request.correlationId}`;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodePayload , StringUtils, CommonAuthorizationCodeRequest, AuthenticationResult, AuthorizationCodeClient, AuthorityFactory, Authority, INetworkModule, ClientAuthError, CcsCredential, Logger } from \"@azure/msal-common\";\n\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { TemporaryCacheKeys } from \"../utils/BrowserConstants\";\n\nexport type InteractionParams = {};\n\n/**\n * Abstract class which defines operations for a browser interaction handling class.\n */\nexport abstract class InteractionHandler {\n\n    protected authModule: AuthorizationCodeClient;\n    protected browserStorage: BrowserCacheManager;\n    protected authCodeRequest: CommonAuthorizationCodeRequest;\n    protected browserRequestLogger: Logger;\n\n    constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger) {\n        this.authModule = authCodeModule;\n        this.browserStorage = storageImpl;\n        this.authCodeRequest = authCodeRequest;\n        this.browserRequestLogger = browserRequestLogger;\n    }\n\n    /**\n     * Function to enable user interaction.\n     * @param requestUrl\n     */\n    abstract initiateAuthRequest(requestUrl: string, params: InteractionParams): Window | Promise<HTMLIFrameElement> | Promise<void>;\n\n    /**\n     * Function to handle response parameters from hash.\n     * @param locationHash\n     */\n    async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise<AuthenticationResult> {\n        this.browserRequestLogger.verbose(\"InteractionHandler.handleCodeResponse called\");\n        // Check that location hash isn't empty.\n        if (StringUtils.isEmpty(locationHash)) {\n            throw BrowserAuthError.createEmptyHashError(locationHash);\n        }\n\n        // Handle code response.\n        const stateKey = this.browserStorage.generateStateKey(state);\n        const requestState = this.browserStorage.getTemporaryCache(stateKey);\n        if (!requestState) {\n            throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n        }\n        const authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n\n        return this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule);\n    }\n\n    /**\n     * Process auth code response from AAD\n     * @param authCodeResponse \n     * @param state \n     * @param authority \n     * @param networkModule \n     * @returns \n     */\n    async handleCodeResponseFromServer(authCodeResponse: AuthorizationCodePayload, state: string, authority: Authority, networkModule: INetworkModule, validateNonce: boolean = true): Promise<AuthenticationResult> {\n        this.browserRequestLogger.trace(\"InteractionHandler.handleCodeResponseFromServer called\");\n\n        // Handle code response.\n        const stateKey = this.browserStorage.generateStateKey(state);\n        const requestState = this.browserStorage.getTemporaryCache(stateKey);\n        if (!requestState) {\n            throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n        }\n        \n        // Get cached items\n        const nonceKey = this.browserStorage.generateNonceKey(requestState);\n        const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\n\n        // Assign code to request\n        this.authCodeRequest.code = authCodeResponse.code;\n\n        // Check for new cloud instance\n        if (authCodeResponse.cloud_instance_host_name) {\n            await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\n        }\n\n        // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)\n        if (validateNonce) {\n            authCodeResponse.nonce = cachedNonce || undefined;\n        }\n        \n        authCodeResponse.state = requestState;\n\n        // Add CCS parameters if available\n        if (authCodeResponse.client_info) {\n            this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n        } else {\n            const cachedCcsCred = this.checkCcsCredentials();\n            if (cachedCcsCred) {\n                this.authCodeRequest.ccsCredential = cachedCcsCred;\n            }\n        }\n\n        // Acquire token with retrieved code.\n        const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\n        this.browserStorage.cleanRequestByState(state);\n        return tokenResponse;\n    }\n\n    /**\n     * Updates authority based on cloudInstanceHostname\n     * @param cloudInstanceHostname \n     * @param authority \n     * @param networkModule \n     */\n    protected async updateTokenEndpointAuthority(cloudInstanceHostname: string, authority: Authority, networkModule: INetworkModule): Promise<void> {\n        const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${authority.tenant}/`;\n        const cloudInstanceAuthority = await AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options);\n        this.authModule.updateAuthority(cloudInstanceAuthority);\n    }\n\n    /**\n     * Looks up ccs creds in the cache\n     */\n    protected checkCcsCredentials(): CcsCredential | null {\n        // Look up ccs credential in temp cache\n        const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\n        if (cachedCcsCred) {\n            try {\n                return JSON.parse(cachedCcsCred) as CcsCredential;\n            } catch (e) {\n                this.authModule.logger.error(\"Cache credential could not be parsed\");\n                this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`);\n            }\n        }\n        return null;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient, Logger } from \"@azure/msal-common\";\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { PopupWindowAttributes, PopupUtils } from \"../utils/PopupUtils\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\n\nexport type PopupParams = InteractionParams & {\n    popup?: Window|null;\n    popupName: string;\n    popupWindowAttributes: PopupWindowAttributes\n};\n\n/**\n * This class implements the interaction handler base class for browsers. It is written specifically for handling\n * popup window scenarios. It includes functions for monitoring the popup window for a hash.\n */\nexport class PopupHandler extends InteractionHandler {\n    private popupUtils: PopupUtils;\n\n    constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger) {\n        super(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger);\n\n        // Properly sets this reference for the unload event.\n        this.popupUtils = new PopupUtils(storageImpl, browserRequestLogger);\n    }\n\n    /**\n     * Opens a popup window with given request Url.\n     * @param requestUrl\n     */\n    initiateAuthRequest(requestUrl: string, params: PopupParams): Window {\n        // Check that request url is not empty.\n        if (!StringUtils.isEmpty(requestUrl)) {\n            this.browserRequestLogger.infoPii(`Navigate to: ${requestUrl}`);\n            // Open the popup window to requestUrl.\n            return this.popupUtils.openPopup(requestUrl, params);\n        } else {\n            // Throw error if request URL is empty.\n            this.browserRequestLogger.error(\"Navigate url is empty\");\n            throw BrowserAuthError.createEmptyNavigationUriError();\n        }\n    }\n\n    /**\n     * Monitors a window until it loads a url with a known hash, or hits a specified timeout.\n     * @param popupWindow - window that is being monitored\n     * @param timeout - milliseconds until timeout\n     */\n    monitorPopupForHash(popupWindow: Window): Promise<string> {\n        return this.popupUtils.monitorPopupForSameOrigin(popupWindow).then(() => {\n            const contentHash = popupWindow.location.hash;\n            BrowserUtils.clearHash(popupWindow);\n            this.popupUtils.cleanPopup(popupWindow);\n\n            if (!contentHash) {\n                throw BrowserAuthError.createEmptyHashError(popupWindow.location.href);\n            }\n\n            if (UrlString.hashContainsKnownProperties(contentHash)) {\n                return contentHash;\n            } else {\n                throw BrowserAuthError.createHashDoesNotContainKnownPropertiesError();\n            }\n        }\n        );\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ThrottlingUtils, CommonEndSessionRequest, UrlString, AuthError, OIDC_DEFAULT_SCOPES } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { PopupWindowAttributes, PopupUtils } from \"../utils/PopupUtils\";\nimport { EventType } from \"../event/EventType\";\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\nimport { PopupHandler, PopupParams } from \"../interaction_handler/PopupHandler\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { PopupRequest } from \"../request/PopupRequest\";\n\nexport class PopupClient extends StandardInteractionClient {\n    /**\n     * Acquires tokens by opening a popup window to the /authorize endpoint of the authority\n     * @param request\n     */\n    acquireToken(request: PopupRequest): Promise<AuthenticationResult> {\n        try {\n            const popupName = PopupUtils.generatePopupName(this.config.auth.clientId, request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority, this.correlationId);\n            const popupWindowAttributes = request.popupWindowAttributes || {};\n\n            // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\n            if (this.config.system.asyncPopups) {\n                this.logger.verbose(\"asyncPopups set to true, acquiring token\");\n                // Passes on popup position and dimensions if in request\n                return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes);\n            } else {\n                // asyncPopups flag is set to false. Opens popup before acquiring token.\n                this.logger.verbose(\"asyncPopup set to false, opening popup before acquiring token\");\n                const popup = PopupUtils.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes, this.logger);\n                return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes, popup);\n            }\n        } catch (e) {\n            return Promise.reject(e);\n        }\n    }\n\n    /**\n     * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\n     * @param logoutRequest\n     */\n    logout(logoutRequest?: EndSessionPopupRequest): Promise<void> {\n        try {\n            this.logger.verbose(\"logoutPopup called\");\n            const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\n\n            const popupName = PopupUtils.generateLogoutPopupName(this.config.auth.clientId, validLogoutRequest);\n            const authority = logoutRequest && logoutRequest.authority;\n            const mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri;\n            const popupWindowAttributes = logoutRequest?.popupWindowAttributes || {};\n\n            // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\n            if (this.config.system.asyncPopups) {\n                this.logger.verbose(\"asyncPopups set to true\");\n                // Passes on popup position and dimensions if in request\n                return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, undefined, mainWindowRedirectUri);\n            } else {\n                // asyncPopups flag is set to false. Opens popup before logging out.\n                this.logger.verbose(\"asyncPopup set to false, opening popup\");\n                const popup = PopupUtils.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes, this.logger);\n                return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, popup, mainWindowRedirectUri);\n            }\n        } catch (e) {\n            // Since this function is synchronous we need to reject\n            return Promise.reject(e);\n        }\n    }\n\n    /**\n     * Helper which obtains an access_token for your API via opening a popup window in the user's browser\n     * @param validRequest\n     * @param popupName\n     * @param popup\n     * @param popupWindowAttributes\n     *\n     * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n     */\n    protected async acquireTokenPopupAsync(request: PopupRequest, popupName: string, popupWindowAttributes: PopupWindowAttributes, popup?: Window|null): Promise<AuthenticationResult> {\n        this.logger.verbose(\"acquireTokenPopupAsync called\");\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup);\n        const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Popup);\n        this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || \"\", validRequest.account || null);\n\n        try {\n            // Create auth code request and generate PKCE params\n            const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\n\n            // Initialize the client\n            const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions);\n            this.logger.verbose(\"Auth code client created\");\n\n            // Create acquire token url.\n            const navigateUrl = await authClient.getAuthCodeUrl(validRequest);\n\n            // Create popup interaction handler.\n            const interactionHandler = new PopupHandler(authClient, this.browserStorage, authCodeRequest, this.logger);\n\n            // Show the UI once the url has been created. Get the window handle for the popup.\n            const popupParameters: PopupParams = {\n                popup,\n                popupName,\n                popupWindowAttributes\n            };\n            const popupWindow: Window = interactionHandler.initiateAuthRequest(navigateUrl, popupParameters);\n            this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\n\n            // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\n            const hash = await interactionHandler.monitorPopupForHash(popupWindow);\n            const state = this.validateAndExtractStateFromHash(hash, InteractionType.Popup, validRequest.correlationId);\n\n            // Remove throttle if it exists\n            ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest);\n\n            // Handle response from hash string.\n            const result = await interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\n\n            return result;\n        } catch (e) {\n            if (popup) {\n                // Close the synchronous popup if an error is thrown before the window unload event is registered\n                popup.close();\n            }\n\n            if (e instanceof AuthError) {\n                e.setCorrelationId(this.correlationId);\n            }\n\n            serverTelemetryManager.cacheFailedRequest(e);\n            this.browserStorage.cleanRequestByState(validRequest.state);\n            throw e;\n        }\n    }\n\n    /**\n     *\n     * @param validRequest\n     * @param popupName\n     * @param requestAuthority\n     * @param popup\n     * @param mainWindowRedirectUri\n     * @param popupWindowAttributes\n     */\n    protected async logoutPopupAsync(validRequest: CommonEndSessionRequest, popupName: string, popupWindowAttributes: PopupWindowAttributes, requestAuthority?: string, popup?: Window|null, mainWindowRedirectUri?: string): Promise<void> {\n        this.logger.verbose(\"logoutPopupAsync called\");\n        this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Popup, validRequest);\n\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup);\n\n        try {\n            // Clear cache on logout\n            await this.clearCacheOnLogout(validRequest.account);\n\n            // Initialize the client\n            const authClient = await this.createAuthCodeClient(serverTelemetryManager, requestAuthority);\n            this.logger.verbose(\"Auth code client created\");\n\n            // Create logout string and navigate user window to logout.\n            const logoutUri: string = authClient.getLogoutUri(validRequest);\n\n            this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest);\n\n            const popupUtils = new PopupUtils(this.browserStorage, this.logger);\n            // Open the popup window to requestUrl.\n            const popupWindow = popupUtils.openPopup(logoutUri, {popupName, popupWindowAttributes, popup});\n            this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\n\n            try {\n                // Don't care if this throws an error (User Cancelled)\n                await popupUtils.monitorPopupForSameOrigin(popupWindow);\n                this.logger.verbose(\"Popup successfully redirected to postLogoutRedirectUri\");\n            } catch (e) {\n                this.logger.verbose(`Error occurred while monitoring popup for same origin. Session on server may remain active. Error: ${e}`);\n            }\n\n            popupUtils.cleanPopup(popupWindow);\n\n            if (mainWindowRedirectUri) {\n                const navigationOptions: NavigationOptions = {\n                    apiId: ApiId.logoutPopup,\n                    timeout: this.config.system.redirectNavigationTimeout,\n                    noHistory: false\n                };\n                const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, BrowserUtils.getCurrentUri());\n\n                this.logger.verbose(\"Redirecting main window to url specified in the request\");\n                this.logger.verbosePii(`Redirecting main window to: ${absoluteUrl}`);\n                this.navigationClient.navigateInternal(absoluteUrl, navigationOptions);\n            } else {\n                this.logger.verbose(\"No main window navigation requested\");\n            }\n        } catch (e) {\n            if (popup) {\n                // Close the synchronous popup if an error is thrown before the window unload event is registered\n                popup.close();\n            }\n\n            if (e instanceof AuthError) {\n                e.setCorrelationId(this.correlationId);\n            }\n\n            this.browserStorage.setInteractionInProgress(false);\n            this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Popup, null, e);\n            this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\n            serverTelemetryManager.cacheFailedRequest(e);\n            throw e;\n        }\n\n        this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodeClient, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AuthenticationResult, ThrottlingUtils, Authority, INetworkModule, ClientAuthError, Logger } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { ApiId, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\n\nexport type RedirectParams = InteractionParams & {\n    navigationClient: INavigationClient;\n    redirectTimeout: number;\n    redirectStartPage: string;\n    onRedirectNavigate?: (url: string) => void | boolean;\n};\n\nexport class RedirectHandler extends InteractionHandler {\n\n    private browserCrypto: ICrypto;\n\n    constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger, browserCrypto: ICrypto) {\n        super(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger);\n        this.browserCrypto = browserCrypto;\n    }\n\n    /**\n     * Redirects window to given URL.\n     * @param urlNavigate\n     */\n    async initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise<void> {\n        this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest called\");\n        // Navigate if valid URL\n        if (!StringUtils.isEmpty(requestUrl)) {\n            // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\n            if (params.redirectStartPage) {\n                this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\n                this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\n            }\n\n            // Set interaction status in the library.\n            this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\n            this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\n            this.browserRequestLogger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`);\n            const navigationOptions: NavigationOptions = {\n                apiId: ApiId.acquireTokenRedirect,\n                timeout: params.redirectTimeout,\n                noHistory: false\n            };\n            \n            // If onRedirectNavigate is implemented, invoke it and provide requestUrl\n            if (typeof params.onRedirectNavigate === \"function\") {\n                this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\n                const navigate = params.onRedirectNavigate(requestUrl);\n\n                // Returning false from onRedirectNavigate will stop navigation\n                if (navigate !== false) {\n                    this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\n                    await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n                    return;\n                } else {\n                    this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\n                    return;\n                }\n            } else {\n                // Navigate window to request URL\n                this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\n                await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n                return;\n            }\n        } else {\n            // Throw error if request URL is empty.\n            this.browserRequestLogger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\n            throw BrowserAuthError.createEmptyNavigationUriError();\n        }\n    }\n\n    /**\n     * Handle authorization code response in the window.\n     * @param hash\n     */\n    async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule, clientId?: string): Promise<AuthenticationResult> {\n        this.browserRequestLogger.verbose(\"RedirectHandler.handleCodeResponse called\");\n\n        // Check that location hash isn't empty.\n        if (StringUtils.isEmpty(locationHash)) {\n            throw BrowserAuthError.createEmptyHashError(locationHash);\n        }\n\n        // Interaction is completed - remove interaction status.\n        this.browserStorage.setInteractionInProgress(false);\n\n        // Handle code response.\n        const stateKey = this.browserStorage.generateStateKey(state);\n        const requestState = this.browserStorage.getTemporaryCache(stateKey);\n        if (!requestState) {\n            throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n        }\n        const authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n\n        // Get cached items\n        const nonceKey = this.browserStorage.generateNonceKey(requestState);\n        const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\n\n        // Assign code to request\n        this.authCodeRequest.code = authCodeResponse.code;\n\n        // Check for new cloud instance\n        if (authCodeResponse.cloud_instance_host_name) {\n            await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\n        }\n\n        authCodeResponse.nonce = cachedNonce || undefined;\n        authCodeResponse.state = requestState;\n\n        // Add CCS parameters if available\n        if (authCodeResponse.client_info) {\n            this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n        } else {\n            const cachedCcsCred = this.checkCcsCredentials();\n            if (cachedCcsCred) {\n                this.authCodeRequest.ccsCredential = cachedCcsCred;\n            }\n        }\n\n        // Remove throttle if it exists\n        if (clientId) {\n            ThrottlingUtils.removeThrottle(this.browserStorage, clientId, this.authCodeRequest);\n        }\n\n        // Acquire token with retrieved code.\n        const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\n\n        this.browserStorage.cleanRequestByState(state);\n        return tokenResponse;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, CommonAuthorizationCodeRequest, AuthorizationCodeClient, UrlString, AuthError, ServerTelemetryManager } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { ApiId, InteractionType, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { RedirectHandler } from \"../interaction_handler/RedirectHandler\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { EventType } from \"../event/EventType\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\n\nexport class RedirectClient extends StandardInteractionClient {\n    /**\n     * Redirects the page to the /authorize endpoint of the IDP\n     * @param request\n     */\n    async acquireToken(request: RedirectRequest): Promise<void> {\n        const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Redirect);\n        this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || \"\", validRequest.account || null);\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect);\n\n        const handleBackButton = (event: PageTransitionEvent) => {\n            // Clear temporary cache if the back button is clicked during the redirect flow.\n            if (event.persisted) {\n                this.logger.verbose(\"Page was restored from back/forward cache. Clearing temporary cache.\");\n                this.browserStorage.cleanRequestByState(validRequest.state);\n            }\n        };\n\n        try {\n            // Create auth code request and generate PKCE params\n            const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\n\n            // Initialize the client\n            const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions);\n            this.logger.verbose(\"Auth code client created\");\n\n            // Create redirect interaction handler.\n            const interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.browserCrypto);\n\n            // Create acquire token url.\n            const navigateUrl = await authClient.getAuthCodeUrl(validRequest);\n\n            const redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);\n            this.logger.verbosePii(`Redirect start page: ${redirectStartPage}`);\n\n            // Clear temporary cache if the back button is clicked during the redirect flow.\n            window.addEventListener(\"pageshow\", handleBackButton);\n\n            // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.\n            return await interactionHandler.initiateAuthRequest(navigateUrl, {\n                navigationClient: this.navigationClient,\n                redirectTimeout: this.config.system.redirectNavigationTimeout,\n                redirectStartPage: redirectStartPage,\n                onRedirectNavigate: request.onRedirectNavigate\n            });\n        } catch (e) {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(this.correlationId);\n            }\n            window.removeEventListener(\"pageshow\", handleBackButton);\n            serverTelemetryManager.cacheFailedRequest(e);\n            this.browserStorage.cleanRequestByState(validRequest.state);\n            throw e;\n        }\n    }\n\n    /**\n     * Checks if navigateToLoginRequestUrl is set, and:\n     * - if true, performs logic to cache and navigate\n     * - if false, handles hash string and parses response\n     * @param hash\n     */\n    async handleRedirectPromise(hash?: string): Promise<AuthenticationResult | null> {\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise);\n        try {\n            if (!this.browserStorage.isInteractionInProgress(true)) {\n                this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\n                return null;\n            }\n\n            const responseHash = this.getRedirectResponseHash(hash || window.location.hash);\n            if (!responseHash) {\n                // Not a recognized server response hash or hash not associated with a redirect request\n                this.logger.info(\"handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache.\");\n                this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\n                return null;\n            }\n\n            let state: string;\n            try {\n                state = this.validateAndExtractStateFromHash(responseHash, InteractionType.Redirect);\n                this.logger.verbose(\"State extracted from hash\");\n            } catch (e) {\n                this.logger.info(`handleRedirectPromise was unable to extract state due to: ${e}`);\n                this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\n                return null;\n            }\n\n            // If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated\n            const loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || \"\";\n            const loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl);\n            const currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href);\n\n            if (loginRequestUrlNormalized === currentUrlNormalized && this.config.auth.navigateToLoginRequestUrl) {\n                // We are on the page we need to navigate to - handle hash\n                this.logger.verbose(\"Current page is loginRequestUrl, handling hash\");\n                const handleHashResult = await this.handleHash(responseHash, state, serverTelemetryManager);\n\n                if (loginRequestUrl.indexOf(\"#\") > -1) {\n                    // Replace current hash with non-msal hash, if present\n                    BrowserUtils.replaceHash(loginRequestUrl);\n                }\n\n                return handleHashResult;\n            } else if (!this.config.auth.navigateToLoginRequestUrl) {\n                this.logger.verbose(\"NavigateToLoginRequestUrl set to false, handling hash\");\n                return this.handleHash(responseHash, state, serverTelemetryManager);\n            } else if (!BrowserUtils.isInIframe() || this.config.system.allowRedirectInIframe) {\n                /*\n                 * Returned from authority using redirect - need to perform navigation before processing response\n                 * Cache the hash to be retrieved after the next redirect\n                 */\n                this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);\n                const navigationOptions: NavigationOptions = {\n                    apiId: ApiId.handleRedirectPromise,\n                    timeout: this.config.system.redirectNavigationTimeout,\n                    noHistory: true\n                };\n\n                /**\n                 * Default behavior is to redirect to the start page and not process the hash now.\n                 * The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above.\n                 */\n                let processHashOnRedirect: boolean = true;\n                if (!loginRequestUrl || loginRequestUrl === \"null\") {\n                    // Redirect to home page if login request url is null (real null or the string null)\n                    const homepage = BrowserUtils.getHomepage();\n                    // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage\n                    this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);\n                    this.logger.warning(\"Unable to get valid login request url from cache, redirecting to home page\");\n                    processHashOnRedirect = await this.navigationClient.navigateInternal(homepage, navigationOptions);\n                } else {\n                    // Navigate to page that initiated the redirect request\n                    this.logger.verbose(`Navigating to loginRequestUrl: ${loginRequestUrl}`);\n                    processHashOnRedirect = await this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions);\n                }\n\n                // If navigateInternal implementation returns false, handle the hash now\n                if (!processHashOnRedirect) {\n                    return this.handleHash(responseHash, state, serverTelemetryManager);\n                }\n            }\n\n            return null;\n        } catch (e) {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(this.correlationId);\n            }\n            serverTelemetryManager.cacheFailedRequest(e);\n            this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\n            throw e;\n        }\n    }\n\n    /**\n     * Gets the response hash for a redirect request\n     * Returns null if interactionType in the state value is not \"redirect\" or the hash does not contain known properties\n     * @param hash\n     */\n    protected getRedirectResponseHash(hash: string): string | null {\n        this.logger.verbose(\"getRedirectResponseHash called\");\n        // Get current location hash from window or cache.\n        const isResponseHash: boolean = UrlString.hashContainsKnownProperties(hash);\n\n        if (isResponseHash) {\n            BrowserUtils.clearHash(window);\n            this.logger.verbose(\"Hash contains known properties, returning response hash\");\n            return hash;\n        }\n\n        const cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true);\n        this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH));\n\n        this.logger.verbose(\"Hash does not contain known properties, returning cached hash\");\n        return cachedHash;\n    }\n\n    /**\n     * Checks if hash exists and handles in window.\n     * @param hash\n     * @param state\n     */\n    protected async handleHash(hash: string, state: string, serverTelemetryManager: ServerTelemetryManager): Promise<AuthenticationResult> {\n        const cachedRequest = this.browserStorage.getCachedRequest(state, this.browserCrypto);\n        this.logger.verbose(\"handleHash called, retrieved cached request\");\n\n        // Hash contains known properties - handle and return in callback\n        const currentAuthority = this.browserStorage.getCachedAuthority(state);\n        if (!currentAuthority) {\n            throw BrowserAuthError.createNoCachedAuthorityError();\n        }\n\n        const authClient = await this.createAuthCodeClient(serverTelemetryManager, currentAuthority);\n        this.logger.verbose(\"Auth code client created\");\n        const interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.browserCrypto);\n        return await interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient, this.config.auth.clientId);\n    }\n\n    /**\n     * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\n     * Default behaviour is to redirect the user to `window.location.href`.\n     * @param logoutRequest\n     */\n    async logout(logoutRequest?: EndSessionRequest): Promise<void> {\n        this.logger.verbose(\"logoutRedirect called\");\n        const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout);\n\n        try {\n            this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest);\n\n            // Clear cache on logout\n            await this.clearCacheOnLogout(validLogoutRequest.account);\n\n            const navigationOptions: NavigationOptions = {\n                apiId: ApiId.logout,\n                timeout: this.config.system.redirectNavigationTimeout,\n                noHistory: false\n            };\n            const authClient = await this.createAuthCodeClient(serverTelemetryManager, logoutRequest && logoutRequest.authority);\n            this.logger.verbose(\"Auth code client created\");\n\n            // Create logout string and navigate user window to logout.\n            const logoutUri: string = authClient.getLogoutUri(validLogoutRequest);\n\n            this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest);\n            // Check if onRedirectNavigate is implemented, and invoke it if so\n            if (logoutRequest && typeof logoutRequest.onRedirectNavigate === \"function\") {\n                const navigate = logoutRequest.onRedirectNavigate(logoutUri);\n\n                if (navigate !== false) {\n                    this.logger.verbose(\"Logout onRedirectNavigate did not return false, navigating\");\n                    await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\n                    return;\n                } else {\n                    this.logger.verbose(\"Logout onRedirectNavigate returned false, stopping navigation\");\n                }\n            } else {\n                await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\n                return;\n            }\n        } catch(e) {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(this.correlationId);\n            }\n            serverTelemetryManager.cacheFailedRequest(e);\n            this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e);\n            this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\n            throw e;\n        }\n\n        this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\n    }\n\n    /**\n     * Use to get the redirectStartPage either from request or use current window\n     * @param requestStartPage\n     */\n    protected getRedirectStartPage(requestStartPage?: string): string {\n        const redirectStartPage = requestStartPage || window.location.href;\n        return UrlString.getAbsoluteUrl(redirectStartPage, BrowserUtils.getCurrentUri());\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient, Constants, Logger } from \"@azure/msal-common\";\nimport { InteractionHandler } from \"./InteractionHandler\";\nimport { BrowserConstants } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { DEFAULT_IFRAME_TIMEOUT_MS } from \"../config/Configuration\";\n\nexport class SilentHandler extends InteractionHandler {\n\n    private navigateFrameWait: number;\n    constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger, navigateFrameWait: number) {\n        super(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger);\n        this.navigateFrameWait = navigateFrameWait;\n    }\n\n    /**\n     * Creates a hidden iframe to given URL using user-requested scopes as an id.\n     * @param urlNavigate\n     * @param userRequestScopes\n     */\n    async initiateAuthRequest(requestUrl: string): Promise<HTMLIFrameElement> {\n        if (StringUtils.isEmpty(requestUrl)) {\n            // Throw error if request URL is empty.\n            this.browserRequestLogger.info(\"Navigate url is empty\");\n            throw BrowserAuthError.createEmptyNavigationUriError();\n        }\n\n        return this.navigateFrameWait ? await this.loadFrame(requestUrl) : this.loadFrameSync(requestUrl);\n    }\n\n    /**\n     * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\n     * @param iframe\n     * @param timeout\n     */\n    monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number): Promise<string> {\n        return new Promise((resolve, reject) => {\n            if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\n                this.browserRequestLogger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`);\n            }\n\n            /*\n             * Polling for iframes can be purely timing based,\n             * since we don't need to account for interaction.\n             */\n            const nowMark = window.performance.now();\n            const timeoutMark = nowMark + timeout;\n\n            const intervalId = setInterval(() => {\n                if (window.performance.now() > timeoutMark) {\n                    this.removeHiddenIframe(iframe);\n                    clearInterval(intervalId);\n                    reject(BrowserAuthError.createMonitorIframeTimeoutError());\n                    return;\n                }\n\n                let href: string = Constants.EMPTY_STRING;\n                const contentWindow = iframe.contentWindow;\n                try {\n                    /*\n                     * Will throw if cross origin,\n                     * which should be caught and ignored\n                     * since we need the interval to keep running while on STS UI.\n                     */\n                    href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\n                } catch (e) {}\n\n                if (StringUtils.isEmpty(href)) {\n                    return;\n                }\n\n                const contentHash = contentWindow ? contentWindow.location.hash: Constants.EMPTY_STRING;\n                if (UrlString.hashContainsKnownProperties(contentHash)) {\n                    // Success case\n                    this.removeHiddenIframe(iframe);\n                    clearInterval(intervalId);\n                    resolve(contentHash);\n                    return;\n                }\n            }, BrowserConstants.POLL_INTERVAL_MS);\n        });\n    }\n\n    /**\n     * @hidden\n     * Loads iframe with authorization endpoint URL\n     * @ignore\n     */\n    private loadFrame(urlNavigate: string): Promise<HTMLIFrameElement> {\n        /*\n         * This trick overcomes iframe navigation in IE\n         * IE does not load the page consistently in iframe\n         */\n\n        return new Promise((resolve, reject) => {\n            const frameHandle = this.createHiddenIframe();\n\n            setTimeout(() => {\n                if (!frameHandle) {\n                    reject(\"Unable to load iframe\");\n                    return;\n                }\n\n                frameHandle.src = urlNavigate;\n\n                resolve(frameHandle);\n            }, this.navigateFrameWait);\n        });\n    }\n\n    /**\n     * @hidden\n     * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\n     * @param urlNavigate\n     * @param frameName\n     * @param logger\n     */\n    private loadFrameSync(urlNavigate: string): HTMLIFrameElement{\n        const frameHandle = this.createHiddenIframe();\n\n        frameHandle.src = urlNavigate;\n\n        return frameHandle;\n    }\n\n    /**\n     * @hidden\n     * Creates a new hidden iframe or gets an existing one for silent token renewal.\n     * @ignore\n     */\n    private createHiddenIframe(): HTMLIFrameElement {\n        const authFrame = document.createElement(\"iframe\");\n\n        authFrame.style.visibility = \"hidden\";\n        authFrame.style.position = \"absolute\";\n        authFrame.style.width = authFrame.style.height = \"0\";\n        authFrame.style.border = \"0\";\n        authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\n        document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\n\n        return authFrame;\n    }\n\n    /**\n     * @hidden\n     * Removes a hidden iframe from the page.\n     * @ignore\n     */\n    private removeHiddenIframe(iframe: HTMLIFrameElement): void {\n        if (document.body === iframe.parentNode) {\n            document.body.removeChild(iframe);\n        }\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, ICrypto, Logger, StringUtils, PromptValue, CommonAuthorizationCodeRequest, AuthorizationCodeClient, AuthError } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\n\nexport class SilentIframeClient extends StandardInteractionClient {\n    protected apiId: ApiId;\n\n    constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, correlationId?: string) {\n        super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, correlationId);\n        this.apiId = apiId;\n    }\n\n    /**\n     * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none\n     * @param request\n     */\n    async acquireToken(request: SsoSilentRequest): Promise<AuthenticationResult> {\n        this.logger.verbose(\"acquireTokenByIframe called\");\n        // Check that we have some SSO data\n        if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\n            this.logger.warning(\"No user hint provided. The authorization server may need more information to complete this request.\");\n        }\n\n        // Check that prompt is set to none, throw error if it is set to anything else.\n        if (request.prompt && request.prompt !== PromptValue.NONE) {\n            throw BrowserAuthError.createSilentPromptValueError(request.prompt);\n        }\n\n        // Create silent request\n        const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest({\n            ...request,\n            prompt: PromptValue.NONE\n        }, InteractionType.Silent);\n        this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || \"\", silentRequest.account || null);\n\n        const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\n\n        try {\n            // Create auth code request and generate PKCE params\n            const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(silentRequest);\n\n            // Initialize the client\n            const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n            this.logger.verbose(\"Auth code client created\");\n\n            // Create authorize request url\n            const navigateUrl = await authClient.getAuthCodeUrl(silentRequest);\n\n            return await this.silentTokenHelper(navigateUrl, authCodeRequest, authClient, this.logger);\n        } catch (e) {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(this.correlationId);\n            }\n            serverTelemetryManager.cacheFailedRequest(e);\n            this.browserStorage.cleanRequestByState(silentRequest.state);\n            throw e;\n        }\n    }\n\n    /**\n     * Currently Unsupported\n     */\n    logout(): Promise<void> {\n        // Synchronous so we must reject\n        return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n    }\n\n    /**\n     * Helper which acquires an authorization code silently using a hidden iframe from given url\n     * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\n     * @param navigateUrl\n     * @param userRequestScopes\n     */\n    protected async silentTokenHelper(navigateUrl: string, authCodeRequest: CommonAuthorizationCodeRequest, authClient: AuthorizationCodeClient, browserRequestLogger: Logger): Promise<AuthenticationResult> {\n        // Create silent handler\n        const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, browserRequestLogger, this.config.system.navigateFrameWait);\n        // Get the frame handle for the silent request\n        const msalFrame = await silentHandler.initiateAuthRequest(navigateUrl);\n        // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\n        const hash = await silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout);\n        const state = this.validateAndExtractStateFromHash(hash, InteractionType.Silent, authCodeRequest.correlationId);\n\n        // Handle response from hash string\n        return silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { CommonSilentFlowRequest, AuthenticationResult, ServerTelemetryManager, RefreshTokenClient, AuthError, AzureCloudOptions } from \"@azure/msal-common\";\nimport { ApiId } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\n\nexport class SilentRefreshClient extends StandardInteractionClient {\n    /**\n     * Exchanges the refresh token for new tokens\n     * @param request\n     */\n    async acquireToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n        const silentRequest: CommonSilentFlowRequest = {\n            ...request,\n            ...await this.initializeBaseRequest(request)\n        };\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\n\n        const refreshTokenClient = await this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n        this.logger.verbose(\"Refresh token client created\");\n\n        // Send request to renew token. Auth module will throw errors if token cannot be renewed.\n        return refreshTokenClient.acquireTokenByRefreshToken(silentRequest).catch(e => {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(this.correlationId);\n            }\n            serverTelemetryManager.cacheFailedRequest(e);\n            throw e;\n        });\n    }\n\n    /**\n     * Currently Unsupported\n     */\n    logout(): Promise<void> {\n        // Synchronous so we must reject\n        return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n    }\n\n    /**\n     * Creates a Refresh Client with the given authority, or the default authority.\n     * @param serverTelemetryManager\n     * @param authorityUrl\n     */\n    protected async createRefreshTokenClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise<RefreshTokenClient> {\n        // Create auth module.\n        const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\n        return new RefreshTokenClient(clientConfig);\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccessTokenEntity, ICrypto, IdTokenEntity, Logger, ScopeSet, Authority, AuthorityOptions, ExternalTokenResponse, AccountEntity, AuthToken } from \"@azure/msal-common\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { BrowserCacheManager } from \"./BrowserCacheManager\";\nimport { ITokenCache } from \"./ITokenCache\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\n\nexport type LoadTokenOptions = {\n    clientInfo?: string,\n    extendedExpiresOn?: number\n};\n\n/**\n * Token cache manager\n */\nexport class TokenCache implements ITokenCache {\n    // Flag to indicate if in browser environment\n    public isBrowserEnvironment: boolean;\n    // Input configuration by developer/user\n    protected config: BrowserConfiguration;\n    // Browser cache storage\n    private storage: BrowserCacheManager;\n    // Logger\n    private logger: Logger;\n    // Crypto class\n    private cryptoObj: ICrypto;\n\n    constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto) {\n        this.isBrowserEnvironment = typeof window !== \"undefined\";\n        this.config = configuration;\n        this.storage = storage;\n        this.logger = logger;\n        this.cryptoObj = cryptoObj;\n    }\n\n    // Move getAllAccounts here and cache utility APIs\n\n    /**\n     * API to load tokens to msal-browser cache.\n     * @param request\n     * @param response\n     * @param options\n     */\n    loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): void {\n        this.logger.info(\"TokenCache - loadExternalTokens called\");\n\n        if (!response.id_token) {\n            throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes id token.\");\n        }\n\n        if (request.account) {\n            this.loadIdToken(response.id_token, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\n            this.loadAccessToken(request, response, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\n        } else if (request.authority) {\n\n            const authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);\n            const authorityOptions: AuthorityOptions = {\n                protocolMode: this.config.auth.protocolMode,\n                knownAuthorities: this.config.auth.knownAuthorities,\n                cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n                authorityMetadata: this.config.auth.authorityMetadata,\n            };\n            const authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions);\n\n            // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\n            if (options.clientInfo) {\n                this.logger.trace(\"TokenCache - homeAccountId from options\");\n                this.loadIdToken(response.id_token, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\n                this.loadAccessToken(request, response, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\n            } else if (response.client_info) {\n                this.logger.trace(\"TokenCache - homeAccountId from response\");\n                this.loadIdToken(response.id_token, response.client_info, authority.hostnameAndPort, authority.tenant, options);\n                this.loadAccessToken(request, response, response.client_info, authority.hostnameAndPort, authority.tenant, options);\n            } else {\n                throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide clientInfo in the response or options.\");\n            }\n        } else {\n            throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide a request with an account or a request with authority.\");\n        }\n    }\n\n    /**\n     * Helper function to load id tokens to msal-browser cache\n     * @param idToken\n     * @param homeAccountId\n     * @param environment\n     * @param tenantId\n     * @param options\n     */\n    private loadIdToken(idToken: string, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): void {\n\n        const idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken, this.config.auth.clientId, tenantId);\n        const idAuthToken = new AuthToken(idToken, this.cryptoObj);\n        const accountEntity = options.clientInfo ?\n            AccountEntity.createAccount(options.clientInfo, homeAccountId, idAuthToken, undefined, undefined, undefined, undefined, environment) :\n            AccountEntity.createGenericAccount(homeAccountId, idAuthToken, undefined, undefined, undefined, undefined, environment);\n\n        if (this.isBrowserEnvironment) {\n            this.logger.verbose(\"TokenCache - loading id token\");\n            this.storage.setAccount(accountEntity);\n            this.storage.setIdTokenCredential(idTokenEntity);\n        } else {\n            throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\n        }\n    }\n\n    /**\n     * Helper function to load access tokens to msal-browser cache\n     * @param request\n     * @param response\n     * @param options\n     * @param homeAccountId\n     * @param environment\n     * @param tenantId\n     * @returns\n     */\n    private loadAccessToken(request: SilentRequest, response: ExternalTokenResponse, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): void {\n\n        if (!response.access_token) {\n            this.logger.verbose(\"TokenCache - No access token provided for caching\");\n            return;\n        }\n\n        if (!response.expires_in) {\n            throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes expires_in value.\");\n        }\n\n        if (!options.extendedExpiresOn) {\n            throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide an extendedExpiresOn value in the options.\");\n        }\n\n        const scopes = new ScopeSet(request.scopes).printScopes();\n        const expiresOn = response.expires_in;\n        const extendedExpiresOn = options.extendedExpiresOn;\n\n        const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);\n\n        if (this.isBrowserEnvironment) {\n            this.logger.verbose(\"TokenCache - loading access token\");\n            this.storage.setAccessTokenCredential(accessTokenEntity);\n        } else {\n            throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\n        }\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodeClient, ClientConfiguration } from \"@azure/msal-common\";\n\nexport class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient {\n    constructor(config: ClientConfiguration) {\n        super(config);\n        this.includeRedirectUri = false;\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, ICrypto, Logger, CommonAuthorizationCodeRequest, AuthError } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\nimport { HybridSpaAuthorizationCodeClient } from \"./HybridSpaAuthorizationCodeClient\";\n\nexport class SilentAuthCodeClient extends StandardInteractionClient {\n    private apiId: ApiId;\n\n    constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, correlationId?: string) {\n        super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, correlationId);\n        this.apiId = apiId;\n    }\n    \n    /**\n     * Acquires a token silently by redeeming an authorization code against the /token endpoint\n     * @param request \n     */\n    async acquireToken(request: AuthorizationCodeRequest): Promise<AuthenticationResult> {\n        this.logger.trace(\"SilentAuthCodeClient.acquireToken called\");\n\n        // Auth code payload is required\n        if (!request.code) {\n            throw BrowserAuthError.createAuthCodeRequiredError();\n        }\n\n        // Create silent request\n        const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest(request, InteractionType.Silent);\n        this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || \"\", silentRequest.account || null);\n\n        const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\n\n        try {\n\n            // Create auth code request (PKCE not needed)\n            const authCodeRequest: CommonAuthorizationCodeRequest = {\n                ...silentRequest,\n                code: request.code\n            };\n\n            // Initialize the client\n            const clientConfig = await this.getClientConfiguration(serverTelemetryManager, silentRequest.authority);\n            const authClient: HybridSpaAuthorizationCodeClient = new HybridSpaAuthorizationCodeClient(clientConfig);\n            this.logger.verbose(\"Auth code client created\");\n\n            // Create silent handler\n            const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system.navigateFrameWait);\n\n            // Handle auth code parameters from request\n            return silentHandler.handleCodeResponseFromServer(\n                {\n                    code: request.code,\n                    msgraph_host: request.msGraphHost,\n                    cloud_graph_host_name: request.cloudGraphHostName,\n                    cloud_instance_host_name: request.cloudInstanceHostName\n                },\n                silentRequest.state, \n                authClient.authority, \n                this.networkClient,\n                false\n            );\n        } catch (e) {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(this.correlationId);\n            }\n            serverTelemetryManager.cacheFailedRequest(e);\n            this.browserStorage.cleanRequestByState(silentRequest.state);\n            throw e;\n        }\n    }\n\n    /**\n     * Currently Unsupported\n     */\n    logout(): Promise<void> {\n        // Synchronous so we must reject\n        return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CryptoOps } from \"../crypto/CryptoOps\";\nimport { StringUtils, ServerError, InteractionRequiredAuthError, AccountInfo, Constants, INetworkModule, AuthenticationResult, Logger, CommonSilentFlowRequest, ICrypto, DEFAULT_CRYPTO_IMPLEMENTATION } from \"@azure/msal-common\";\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from \"../cache/BrowserCacheManager\";\nimport { BrowserConfiguration, buildConfiguration, Configuration } from \"../config/Configuration\";\nimport { InteractionType, ApiId, BrowserConstants, BrowserCacheLocation, WrapperSKU, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { version, name } from \"../packageMetadata\";\nimport { EventCallbackFunction } from \"../event/EventMessage\";\nimport { EventType } from \"../event/EventType\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { PopupClient } from \"../interaction_client/PopupClient\";\nimport { RedirectClient } from \"../interaction_client/RedirectClient\";\nimport { SilentIframeClient } from \"../interaction_client/SilentIframeClient\";\nimport { SilentRefreshClient } from \"../interaction_client/SilentRefreshClient\";\nimport { TokenCache } from \"../cache/TokenCache\";\nimport { ITokenCache } from \"../cache/ITokenCache\";\nimport { SilentAuthCodeClient } from \"../interaction_client/SilentAuthCodeClient\";\nimport { BrowserAuthError  } from \"../error/BrowserAuthError\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\n\nexport abstract class ClientApplication {\n\n    // Crypto interface implementation\n    protected readonly browserCrypto: ICrypto;\n\n    // Storage interface implementation\n    protected readonly browserStorage: BrowserCacheManager;\n\n    // Network interface implementation\n    protected readonly networkClient: INetworkModule;\n\n    // Navigation interface implementation\n    protected navigationClient: INavigationClient;\n\n    // Input configuration by developer/user\n    protected config: BrowserConfiguration;\n\n    // Token cache implementation\n    private tokenCache: TokenCache;\n\n    // Logger\n    protected logger: Logger;\n\n    // Flag to indicate if in browser environment\n    protected isBrowserEnvironment: boolean;\n\n    protected eventHandler: EventHandler;\n\n    // Redirect Response Object\n    protected redirectResponse: Map<string, Promise<AuthenticationResult | null>>;\n\n    // Hybrid auth code responses\n    private hybridAuthCodeResponses: Map<string, Promise<AuthenticationResult>>;\n\n    /**\n     * @constructor\n     * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\n     *\n     * Important attributes in the Configuration object for auth are:\n     * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\n     * - authority: the authority URL for your application.\n     * - redirect_uri: the uri of your application registered in the portal.\n     *\n     * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\n     * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\n     * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\n     * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\n     * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\n     * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\n     *\n     * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\n     * Full B2C functionality will be available in this library in future versions.\n     *\n     * @param configuration Object for the MSAL PublicClientApplication instance\n     */\n    constructor(configuration: Configuration) {\n        /*\n         * If loaded in an environment where window is not available,\n         * set internal flag to false so that further requests fail.\n         * This is to support server-side rendering environments.\n         */\n        this.isBrowserEnvironment = typeof window !== \"undefined\";\n        // Set the configuration.\n        this.config = buildConfiguration(configuration, this.isBrowserEnvironment);\n\n        // Initialize logger\n        this.logger = new Logger(this.config.system.loggerOptions, name, version);\n        \n        // Initialize the network module class.\n        this.networkClient = this.config.system.networkClient;\n        \n        // Initialize the navigation client class.\n        this.navigationClient = this.config.system.navigationClient;\n        \n        // Initialize redirectResponse Map\n        this.redirectResponse = new Map();\n\n        // Initial hybrid spa map\n        this.hybridAuthCodeResponses = new Map();\n        \n        // Initialize the crypto class.\n        this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps(this.logger) : DEFAULT_CRYPTO_IMPLEMENTATION;\n\n        this.eventHandler = new EventHandler(this.logger, this.browserCrypto);\n\n        // Initialize the browser storage class.\n        this.browserStorage = this.isBrowserEnvironment ? \n            new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger) : \n            DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger);\n\n        // Initialize the token cache\n        this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto);\n    }\n\n    // #region Redirect Flow\n\n    /**\n     * Event handler function which allows users to fire events after the PublicClientApplication object\n     * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\n     * auth flows.\n     * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\n     * @returns Token response or null. If the return value is null, then no auth redirect was detected.\n     */\n    async handleRedirectPromise(hash?: string): Promise<AuthenticationResult | null> {\n        this.logger.verbose(\"handleRedirectPromise called\");\n        const loggedInAccounts = this.getAllAccounts();\n        if (this.isBrowserEnvironment) {\n            /**\n             * Store the promise on the PublicClientApplication instance if this is the first invocation of handleRedirectPromise,\n             * otherwise return the promise from the first invocation. Prevents race conditions when handleRedirectPromise is called\n             * several times concurrently.\n             */\n            const redirectResponseKey = hash || Constants.EMPTY_STRING;\n            let response = this.redirectResponse.get(redirectResponseKey);\n            if (typeof response === \"undefined\") {\n                this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect);\n                this.logger.verbose(\"handleRedirectPromise has been called for the first time, storing the promise\");\n                const correlationId = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || \"\";\n                const redirectClient = new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, correlationId);\n                response = redirectClient.handleRedirectPromise(hash)\n                    .then((result: AuthenticationResult | null) => {\n                        if (result) {\n                            // Emit login event if number of accounts change\n                            const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\n                            if (isLoggingIn) {\n                                this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);\n                                this.logger.verbose(\"handleRedirectResponse returned result, login success\");\n                            } else {\n                                this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result);\n                                this.logger.verbose(\"handleRedirectResponse returned result, acquire token success\");\n                            }\n                        }\n                        this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\n\n                        return result;\n                    })\n                    .catch((e) => {\n                    // Emit login event if there is an account\n                        if (loggedInAccounts.length > 0) {\n                            this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\n                        } else {\n                            this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\n                        }\n                        this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\n\n                        throw e;\n                    });\n                this.redirectResponse.set(redirectResponseKey, response);\n            } else {\n                this.logger.verbose(\"handleRedirectPromise has been called previously, returning the result from the first call\");\n            }\n            \n            return response;\n        }\n        this.logger.verbose(\"handleRedirectPromise returns null, not browser environment\");\n        return null;\n    }\n\n    /**\n     * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\n     * the page, so any code that follows this function will not execute.\n     *\n     * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\n     * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\n     *\n     * @param request\n     */\n    async acquireTokenRedirect(request: RedirectRequest): Promise<void> {\n        // Preflight request\n        this.logger.verbose(\"acquireTokenRedirect called\");\n        this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\n\n        // If logged in, emit acquire token events\n        const isLoggedIn = this.getAllAccounts().length > 0;\n        if (isLoggedIn) {\n            this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request);\n        } else {\n            this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request);\n        }\n        \n        const redirectClient = new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, request.correlationId);\n        return redirectClient.acquireToken(request).catch((e) => {\n            // If logged in, emit acquire token events\n            if (isLoggedIn) {\n                this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\n            } else {\n                this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\n            }\n            throw e;\n        });\n    }\n\n    // #endregion\n\n    // #region Popup Flow\n\n    /**\n     * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\n     *\n     * @param request\n     *\n     * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n     */\n    acquireTokenPopup(request: PopupRequest): Promise<AuthenticationResult> {\n        try {\n            this.logger.verbose(\"acquireTokenPopup called\", request.correlationId);\n            this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\n        } catch (e) {\n            // Since this function is syncronous we need to reject\n            return Promise.reject(e);\n        }\n\n        // If logged in, emit acquire token events\n        const loggedInAccounts = this.getAllAccounts();\n        if (loggedInAccounts.length > 0) {\n            this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request);\n        } else {\n            this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Popup, request);\n        }\n\n        const popupClient = new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, request.correlationId);\n\n        return popupClient.acquireToken(request).then((result) => {\n            // If logged in, emit acquire token events\n            const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\n            if (isLoggingIn) {\n                this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result);\n            } else {\n                this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);\n            }\n\n            return result;\n        }).catch((e) => {\n            if (loggedInAccounts.length > 0) {\n                this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);\n            } else {\n                this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e);\n            }\n            // Since this function is syncronous we need to reject\n            return Promise.reject(e);\n        });\n    }\n\n    // #endregion\n\n    // #region Silent Flow\n\n    /**\n     * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\n     * - Any browser using a form of Intelligent Tracking Prevention\n     * - If there is not an established session with the service\n     *\n     * In these cases, the request must be done inside a popup or full frame redirect.\n     *\n     * For the cases where interaction is required, you cannot send a request with prompt=none.\n     *\n     * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\n     * you session on the server still exists.\n     * @param request {@link SsoSilentRequest}\n     *\n     * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n     */\n    async ssoSilent(request: SsoSilentRequest): Promise<AuthenticationResult> {\n        this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\n        this.logger.verbose(\"ssoSilent called\", request.correlationId);\n        this.eventHandler.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, request);\n\n        try {\n            const silentIframeClient = new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, request.correlationId);\n            const silentTokenResult = await silentIframeClient.acquireToken(request);\n            this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, silentTokenResult);\n            return silentTokenResult;\n        } catch (e) {\n            this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e);\n            throw e;\n        }\n    }\n\n    /**\n     * This function redeems an authorization code (passed as code) from the eSTS token endpoint.\n     * This authorization code should be acquired server-side using a confidential client to acquire a spa_code.\n     * This API is not indended for normal authorization code acquisition and redemption.\n     * \n     * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client.\n     * \n     * @param request {@link AuthorizationCodeRequest}\n     * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n     */\n    async acquireTokenByCode(request: AuthorizationCodeRequest): Promise<AuthenticationResult> {\n        this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\n        this.logger.trace(\"acquireTokenByCode called\", request.correlationId);\n        this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, InteractionType.Silent, request);\n\n        try {\n            if (!request.code) {\n                throw BrowserAuthError.createAuthCodeRequiredError();\n            }\n\n            let response = this.hybridAuthCodeResponses.get(request.code);\n            if (!response) {\n                this.logger.verbose(\"Initiating new acquireTokenByCode request\", request.correlationId);\n                response = this.acquireTokenByCodeAsync(request)\n                    .then((result: AuthenticationResult) => {\n                        this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, InteractionType.Silent, result);\n                        this.hybridAuthCodeResponses.delete(request.code);\n                        return result;\n                    })\n                    .catch((error: Error) => {\n                        this.hybridAuthCodeResponses.delete(request.code);\n                        throw error;\n                    });\n\n                this.hybridAuthCodeResponses.set(request.code, response);\n            } else {\n                this.logger.verbose(\"Existing acquireTokenByCode request found\", request.correlationId);\n            }\n            \n            return response;\n        } catch (e) {\n            this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, e);\n            throw e;\n        }\n    }\n\n    /**\n     * Creates a SilentAuthCodeClient to redeem an authorization code.\n     * @param request \n     * @returns Result of the operation to redeem the authorization code\n     */\n    private async acquireTokenByCodeAsync(request: AuthorizationCodeRequest): Promise<AuthenticationResult> {\n        this.logger.trace(\"acquireTokenByCodeAsync called\", request.correlationId);\n        const silentAuthCodeClient = new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, request.correlationId);\n        const silentTokenResult = await silentAuthCodeClient.acquireToken(request);\n        return silentTokenResult;\n    }\n\n    /**\n     * Use this function to obtain a token before every call to the API / resource provider\n     *\n     * MSAL return's a cached token when available\n     * Or it send's a request to the STS to obtain a new token using a refresh token.\n     *\n     * @param {@link SilentRequest}\n     *\n     * To renew idToken, please pass clientId as the only scope in the Authentication Parameters\n     * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n     */\n    protected async acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n        this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, request);\n        // block the reload if it occurred inside a hidden iframe\n        BrowserUtils.blockReloadInHiddenIframes();\n\n        const silentRefreshClient = new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, request.correlationId);\n\n        return silentRefreshClient.acquireToken(request).catch(e => {\n            const isServerError = e instanceof ServerError;\n            const isInteractionRequiredError = e instanceof InteractionRequiredAuthError;\n            const isInvalidGrantError = (e.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\n            if (isServerError && isInvalidGrantError && !isInteractionRequiredError) {\n                this.logger.verbose(\"Refresh token expired or invalid, attempting acquire token by iframe\", request.correlationId);\n\n                const silentIframeClient = new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenSilent_authCode, request.correlationId);\n                return silentIframeClient.acquireToken(request);\n            }\n            throw e;\n        });\n    }\n\n    // #endregion\n\n    // #region Logout\n\n    /**\n     * Deprecated logout function. Use logoutRedirect or logoutPopup instead\n     * @param logoutRequest \n     * @deprecated\n     */\n    async logout(logoutRequest?: EndSessionRequest): Promise<void> {\n        this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\");\n        return this.logoutRedirect(logoutRequest);\n    }\n\n    /**\n     * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\n     * Default behaviour is to redirect the user to `window.location.href`.\n     * @param logoutRequest\n     */\n    async logoutRedirect(logoutRequest?: EndSessionRequest): Promise<void> {\n        this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\n        const redirectClient = new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, logoutRequest?.correlationId);\n        return redirectClient.logout(logoutRequest);\n    }\n\n    /**\n     * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\n     * @param logoutRequest \n     */\n    logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise<void> {\n        try{\n            this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\n            const popupClient = new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, logoutRequest?.correlationId);\n            return popupClient.logout(logoutRequest);\n        } catch (e) {\n            // Since this function is syncronous we need to reject\n            return Promise.reject(e);\n        }\n    }\n\n    // #endregion\n\n    // #region Account APIs\n\n    /**\n     * Returns all accounts that MSAL currently has data for.\n     * (the account object is created at the time of successful login)\n     * or empty array when no accounts are found\n     * @returns Array of account objects in cache\n     */\n    getAllAccounts(): AccountInfo[] {\n        this.logger.verbose(\"getAllAccounts called\");\n        return this.isBrowserEnvironment ? this.browserStorage.getAllAccounts() : [];\n    }\n\n    /**\n     * Returns the signed in account matching username.\n     * (the account object is created at the time of successful login)\n     * or null when no matching account is found.\n     * This API is provided for convenience but getAccountById should be used for best reliability\n     * @param userName\n     * @returns The account object stored in MSAL\n     */\n    getAccountByUsername(userName: string): AccountInfo|null {\n        const allAccounts = this.getAllAccounts();\n        if (!StringUtils.isEmpty(userName) && allAccounts && allAccounts.length) {\n            this.logger.verbose(\"Account matching username found, returning\");\n            this.logger.verbosePii(`Returning signed-in accounts matching username: ${userName}`);\n            return allAccounts.filter(accountObj => accountObj.username.toLowerCase() === userName.toLowerCase())[0] || null;\n        } else {\n            this.logger.verbose(\"getAccountByUsername: No matching account found, returning null\");\n            return null;\n        }\n    }\n\n    /**\n     * Returns the signed in account matching homeAccountId.\n     * (the account object is created at the time of successful login)\n     * or null when no matching account is found\n     * @param homeAccountId\n     * @returns The account object stored in MSAL\n     */\n    getAccountByHomeId(homeAccountId: string): AccountInfo|null {\n        const allAccounts = this.getAllAccounts();\n        if (!StringUtils.isEmpty(homeAccountId) && allAccounts && allAccounts.length) {\n            this.logger.verbose(\"Account matching homeAccountId found, returning\");\n            this.logger.verbosePii(`Returning signed-in accounts matching homeAccountId: ${homeAccountId}`);\n            return allAccounts.filter(accountObj => accountObj.homeAccountId === homeAccountId)[0] || null;\n        } else {\n            this.logger.verbose(\"getAccountByHomeId: No matching account found, returning null\");\n            return null;\n        }\n    }\n\n    /**\n     * Returns the signed in account matching localAccountId.\n     * (the account object is created at the time of successful login)\n     * or null when no matching account is found\n     * @param localAccountId\n     * @returns The account object stored in MSAL\n     */\n    getAccountByLocalId(localAccountId: string): AccountInfo | null {\n        const allAccounts = this.getAllAccounts();\n        if (!StringUtils.isEmpty(localAccountId) && allAccounts && allAccounts.length) {\n            this.logger.verbose(\"Account matching localAccountId found, returning\");\n            this.logger.verbosePii(`Returning signed-in accounts matching localAccountId: ${localAccountId}`);\n            return allAccounts.filter(accountObj => accountObj.localAccountId === localAccountId)[0] || null;\n        } else {\n            this.logger.verbose(\"getAccountByLocalId: No matching account found, returning null\");\n            return null;\n        }\n    }\n\n    /**\n     * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\n     * @param account\n     */\n    setActiveAccount(account: AccountInfo | null): void {\n        this.browserStorage.setActiveAccount(account);\n    }\n\n    /**\n     * Gets the currently active account\n     */\n    getActiveAccount(): AccountInfo | null {\n        return this.browserStorage.getActiveAccount();\n    }\n\n    // #endregion\n\n    // #region Helpers\n\n    /**\n     * Helper to validate app environment before making an auth request\n     * * @param interactionType\n     */\n    protected preflightBrowserEnvironmentCheck(interactionType: InteractionType): void {\n        this.logger.verbose(\"preflightBrowserEnvironmentCheck started\");\n        // Block request if not in browser environment\n        BrowserUtils.blockNonBrowserEnvironment(this.isBrowserEnvironment);\n\n        // Block redirects if in an iframe\n        BrowserUtils.blockRedirectInIframe(interactionType, this.config.system.allowRedirectInIframe);\n\n        // Block auth requests inside a hidden iframe\n        BrowserUtils.blockReloadInHiddenIframes();\n\n        // Block redirectUri opened in a popup from calling MSAL APIs\n        BrowserUtils.blockAcquireTokenInPopups();\n\n        // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\n        if (interactionType === InteractionType.Redirect &&\n            this.config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\n            !this.config.cache.storeAuthStateInCookie) {\n            throw BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError();\n        }\n\n        if (interactionType === InteractionType.Redirect || interactionType === InteractionType.Popup) {\n            this.preflightInteractiveRequest();\n        }\n    }\n\n    /**\n     * Helper to validate app environment before making a request.\n     * @param request\n     * @param interactionType\n     */\n    protected preflightInteractiveRequest(): void {\n        this.logger.verbose(\"preflightInteractiveRequest called, validating app environment\");\n        // block the reload if it occurred inside a hidden iframe\n        BrowserUtils.blockReloadInHiddenIframes();\n\n        // Set interaction in progress temporary cache or throw if alread set.\n        this.browserStorage.setInteractionInProgress(true);\n    }\n\n    /**\n     * Adds event callbacks to array\n     * @param callback\n     */\n    addEventCallback(callback: EventCallbackFunction): string | null {\n        return this.eventHandler.addEventCallback(callback);\n    }\n\n    /**\n     * Removes callback with provided id from callback array\n     * @param callbackId\n     */\n    removeEventCallback(callbackId: string): void {\n        this.eventHandler.removeEventCallback(callbackId);\n    }\n\n    /**\n     * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n     */\n    enableAccountStorageEvents(): void {\n        this.eventHandler.enableAccountStorageEvents();\n    }\n\n    /**\n     * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n     */\n    disableAccountStorageEvents(): void {\n        this.eventHandler.disableAccountStorageEvents();\n    }\n\n    /**\n     * Gets the token cache for the application.\n     */\n    getTokenCache(): ITokenCache {\n        return this.tokenCache;\n    }\n\n    /**\n     * Returns the logger instance\n     */\n    getLogger(): Logger {\n        return this.logger;\n    }\n\n    /**\n     * Replaces the default logger set in configurations with new Logger with new configurations\n     * @param logger Logger instance\n     */\n    setLogger(logger: Logger): void {\n        this.logger = logger;\n    }\n\n    /**\n     * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\n     * @param sku\n     * @param version\n     */\n    initializeWrapperLibrary(sku: WrapperSKU, version: string): void {\n        // Validate the SKU passed in is one we expect\n        this.browserStorage.setWrapperMetadata(sku, version);\n    }\n\n    /**\n     * Sets navigation client\n     * @param navigationClient\n     */\n    setNavigationClient(navigationClient: INavigationClient): void {\n        this.navigationClient = navigationClient;\n    }\n\n    /**\n     * Returns the configuration object\n     */\n    getConfiguration(): BrowserConfiguration {\n        return this.config;\n    }\n\n    // #endregion\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { CommonSilentFlowRequest, AuthenticationResult, SilentFlowClient, ServerTelemetryManager, AccountInfo, AzureCloudOptions} from \"@azure/msal-common\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { EventType } from \"../event/EventType\";\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\n\nexport class SilentCacheClient extends StandardInteractionClient {\n    /**\n     * Returns unexpired tokens from the cache, if available\n     * @param silentRequest\n     */\n    async acquireToken(silentRequest: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n        // Telemetry manager only used to increment cacheHits here\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\n\n        const silentAuthClient = await this.createSilentFlowClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n        this.logger.verbose(\"Silent auth client created\");\n\n        try {\n            const cachedToken = await silentAuthClient.acquireCachedToken(silentRequest);\n            this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, cachedToken);\n            return cachedToken;\n        } catch (error) {\n            if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code) {\n                this.logger.verbose(\"Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair.\");\n            }\n            throw error;\n        }\n    }\n\n    /**\n     * Currently Unsupported\n     */\n    logout(): Promise<void> {\n        // Synchronous so we must reject\n        return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n    }\n\n    /**\n     * Creates an Silent Flow Client with the given authority, or the default authority.\n     * @param serverTelemetryManager\n     * @param authorityUrl\n     */\n    protected async createSilentFlowClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise<SilentFlowClient> {\n        // Create auth module.\n        const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\n        return new SilentFlowClient(clientConfig);\n    }\n\n    async initializeSilentRequest(request: SilentRequest, account: AccountInfo): Promise<CommonSilentFlowRequest> {\n        return {\n            ...request,\n            ...await this.initializeBaseRequest(request),\n            account: account,\n            forceRefresh: request.forceRefresh || false\n        };\n    }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountInfo, AuthenticationResult, RequestThumbprint } from \"@azure/msal-common\";\nimport { Configuration } from \"../config/Configuration\";\nimport { DEFAULT_REQUEST, InteractionType } from \"../utils/BrowserConstants\";\nimport { IPublicClientApplication } from \"./IPublicClientApplication\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { ClientApplication } from \"./ClientApplication\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { EventType } from \"../event/EventType\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { SilentCacheClient } from \"../interaction_client/SilentCacheClient\";\n\n/**\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\n */\nexport class PublicClientApplication extends ClientApplication implements IPublicClientApplication {\n\n    // Active requests\n    private activeSilentTokenRequests: Map<string, Promise<AuthenticationResult>>;\n\n    /**\n     * @constructor\n     * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\n     *\n     * Important attributes in the Configuration object for auth are:\n     * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\n     * - authority: the authority URL for your application.\n     * - redirect_uri: the uri of your application registered in the portal.\n     *\n     * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\n     * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\n     * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\n     * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\n     * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\n     * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\n     *\n     * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\n     * Full B2C functionality will be available in this library in future versions.\n     *\n     * @param configuration object for the MSAL PublicClientApplication instance\n     */\n    constructor(configuration: Configuration) {\n        super(configuration);\n\n        this.activeSilentTokenRequests = new Map();\n    }\n\n    /**\n     * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\n     * any code that follows this function will not execute.\n     *\n     * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\n     * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\n     *\n     * @param request\n     */\n    async loginRedirect(request?: RedirectRequest): Promise<void> {\n        this.logger.verbose(\"loginRedirect called\");\n        return this.acquireTokenRedirect(request || DEFAULT_REQUEST);\n    }\n\n    /**\n     * Use when initiating the login process via opening a popup window in the user's browser\n     *\n     * @param request\n     *\n     * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n     */\n    loginPopup(request?: PopupRequest): Promise<AuthenticationResult> {\n        this.logger.verbose(\"loginPopup called\");\n        return this.acquireTokenPopup(request || DEFAULT_REQUEST);\n    }\n\n    /**\n     * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made.\n     *\n     * @param {@link (SilentRequest:type)}\n     * @returns {Promise.<AuthenticationResult>} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\n     */\n    async acquireTokenSilent(request: SilentRequest): Promise<AuthenticationResult> {\n        this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\n        this.logger.verbose(\"acquireTokenSilent called\", request.correlationId);\n        const account = request.account || this.getActiveAccount();\n        if (!account) {\n            throw BrowserAuthError.createNoAccountError();\n        }\n        const thumbprint: RequestThumbprint = {\n            clientId: this.config.auth.clientId,\n            authority: request.authority || \"\",\n            scopes: request.scopes,\n            homeAccountIdentifier: account.homeAccountId,\n            claims: request.claims,\n            authenticationScheme: request.authenticationScheme,\n            resourceRequestMethod: request.resourceRequestMethod,\n            resourceRequestUri: request.resourceRequestUri,\n            shrClaims: request.shrClaims,\n            sshKid: request.sshKid\n        };\n        const silentRequestKey = JSON.stringify(thumbprint);\n        const cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey);\n        if (typeof cachedResponse === \"undefined\") {\n            this.logger.verbose(\"acquireTokenSilent called for the first time, storing active request\", request.correlationId);\n            const response = this.acquireTokenSilentAsync(request, account)\n                .then((result) => {\n                    this.activeSilentTokenRequests.delete(silentRequestKey);\n                    return result;\n                })\n                .catch((error) => {\n                    this.activeSilentTokenRequests.delete(silentRequestKey);\n                    throw error;\n                });\n            this.activeSilentTokenRequests.set(silentRequestKey, response);\n            return response;\n        } else {\n            this.logger.verbose(\"acquireTokenSilent has been called previously, returning the result from the first call\", request.correlationId);\n            return cachedResponse;\n        }\n    }\n\n    /**\n     * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token.\n     * @param {@link (SilentRequest:type)}\n     * @param {@link (AccountInfo:type)}\n     * @returns {Promise.<AuthenticationResult>} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} \n     */\n    protected async acquireTokenSilentAsync(request: SilentRequest, account: AccountInfo): Promise<AuthenticationResult>{\n        const silentCacheClient = new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, request.correlationId);\n        const silentRequest = await silentCacheClient.initializeSilentRequest(request, account);\n        this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\n\n        return silentCacheClient.acquireToken(silentRequest).catch(async () => {\n            try {\n                const tokenRenewalResult = await this.acquireTokenByRefreshToken(silentRequest);\n                this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, tokenRenewalResult);\n                return tokenRenewalResult;\n            } catch (tokenRenewalError) {\n                this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError);\n                throw tokenRenewalError;\n            }\n        });\n    }\n}\n", "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {blueGradient, grey, redGradient} from \"../values/colors/colors\";\nimport {CSSProperties} from \"react\";\n\nconst Wrapper = styled(\"div\")\n    <{\n    disabled: boolean\n    }>`\n    & > div {\n        height: 24px;\n        width: 44px;\n        position:relative;\n        opacity: ${props => props.disabled?0.3:1};\n        &:hover{\n            cursor: pointer;\n        }\n    }\n    & > div > div:first-child {\n        height: 100%;\n        width:24px;\n        border-radius: 50%;\n        background-color: ${grey};\n        position: absolute;\n        transition: 0.3s all;\n        z-index: 10;\n        \n    }\n    & > div.yes > div:first-child {\n        left: calc(100% - 24px);\n    }\n    & > div.no > div:first-child {\n        left: 0%;\n    }\n    \n    \n    & > div > div:last-child{\n        height: 100%;\n        width: 100%;\n        border-radius: 12px;\n        background-image: ${blueGradient};\n        transition: 0.3s 0.3s background-image;\n        transition-delay: 1s;\n        position:relative;\n        overflow: hidden;\n        &::after{\n            content: '';\n            position:absolute;\n            height:100%;\n            width:100%;\n            background-image: ${redGradient};\n            left: 0;\n            top: 0;\n            transition: 0.3s 0.25s opacity\n        }\n    }\n    & > div.yes > div:last-child {\n        &::after{\n            opacity: 0;\n        }\n    }\n    & > div.no > div:last-child {\n        &::after{\n            opacity: 1;\n        }\n    }\n`;\n\nexport const Switch = (props: {\n    id?: string\n    disabled?: boolean,\n    onChange?: Function,\n    initialValue?: boolean\n    style?: CSSProperties\n                       } = {\n    disabled: false,\n    onChange: () => {},\n    initialValue: true\n}) => {\n    let wrapperRef = React.createRef<HTMLDivElement>();\n    let value = props.initialValue;\n    return(\n        <Wrapper\n            id={props.id}\n            style={props.style}\n            disabled={props.disabled}\n            onClick={() => {\n                     if(props.disabled)\n                         return;\n                     value = !value;\n                     (wrapperRef.current as Element).classList.add(value ? \"yes\" : \"no\");\n                     (wrapperRef.current as Element).classList.remove(!value ? \"yes\" : \"no\");\n                     props.onChange(value);\n                 }}\n        >\n            <div\n                ref={wrapperRef}\n                className={props.initialValue ? \"yes\" : \"no\"}\n            >\n                <div/>\n                <div/>\n            </div>\n        </Wrapper>\n    )\n};\n", "import {Configuration, PopupRequest} from \"@azure/msal-browser\";\n\nexport const CONFIG_MSAL: Configuration = {\n    auth: {\n        clientId: \"df799922-a3ab-43aa-bde4-8c1b8630eb19\",\n        authority: \"https://login.microsoftonline.com/common\",\n        redirectUri: window.location.origin + (window.location.pathname === \"/\" ? \"\" : \"/login\"),\n    },\n    cache: {\n        cacheLocation: \"sessionStorage\", // This configures where your cache will be stored\n        storeAuthStateInCookie: false, // Set this to \"true\" if you are having issues on IE11 or Edge\n    }\n};\n\n// Add scopes here for ID token to be used at Microsoft identity platform endpoints.\nexport const LOGIN_REQUEST: PopupRequest = {\n    scopes: [\"api://df799922-a3ab-43aa-bde4-8c1b8630eb19/aad.user.retrieval\"]\n};\n", "import ReactDOM from \"react-dom\";\nimport React, {createRef} from \"react\";\nimport i18next from \"i18next\";\nimport {primaryFontLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Box, styled} from \"@mui/material\";\nimport {dark, overlay, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Login} from \"@root/Frontend/Login/Views/Login\";\n\nconst Overlay = styled(Box)({\n    height: \"100%\",\n    width: \"100%\",\n    position: \"fixed\",\n    top: 0,\n    right: 0,\n    zIndex: 1000,\n    backgroundColor: overlay,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n});\n\nconst Inner = styled(Box)({\n    maxWidth: \"450px\",\n    textAlign: \"center\",\n    backgroundColor: white,\n    borderRadius: \"24px\",\n    padding: \"24px\",\n    boxSizing: \"border-box\",\n    color: dark,\n    font: secondaryFontMedium,\n    display: \"flex\",\n    boxShadow: \"rgba(0, 0, 0, 0.16) 0px 3px 6px, rgba(0, 0, 0, 0.23) 0px 3px 6px\",\n    flexDirection: \"column\",\n    gap: \"8px\"\n});\n\nconst ButtonWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"center\",\n    paddingTop: \"10px\"\n});\n\ninterface UsernameChangeAlertProps {\n    username: string;\n    onClose: () => void;\n}\n\nexport class UsernameChangeAlert extends React.Component {\n    props: UsernameChangeAlertProps;\n\n    render() {\n        return (\n            <Overlay>\n                <Inner onClick={(e: React.MouseEvent<HTMLDivElement>) => e.stopPropagation()}>\n                    <div>\n                        {i18next.t(\"Your organization is managed by DeepSight. Your username has been set to\")}:\n                    </div>\n                    <div style={{font: primaryFontLarge, padding: \"10px 0px\", overflowWrap: \"break-word\"}}>\n                        {this.props.username}\n                    </div>\n                    <div>\n                        {i18next.t(\"Please use this username for login\")}\n                    </div>\n                    <ButtonWrapper>\n                        <Button onClick={() => this.props.onClose()}> {i18next.t(\"I understand\")} </Button>\n                    </ButtonWrapper>\n                </Inner>\n            </Overlay>\n        );\n    }\n}", "import {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport i18next from \"i18next\";\nimport {Unhide} from \"@root/react-components/src/icons/Unhide\";\nimport {Hide} from \"@root/react-components/src/icons/Hide\";\nimport React from \"react\";\nimport {lighterDark, white, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {InfoIcon} from \"@root/react-components/src/misc/InfoIcon\";\nimport {Box, styled} from \"@mui/material\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Regenerate} from \"@root/react-components/src/icons/Regenerate\";\nimport {generatePassword} from \"@utils/utils\";\n\nconst Wrapper = styled(Box)({\n    position: \"relative\",\n    width: \"100%\",\n});\n\nconst IconsContainer = styled(Box)({\n    position: \"absolute\",\n    cursor: \"pointer\",\n    display: \"flex\",\n    gap: \"8px\",\n    right: \"0px\",\n    top: \"50%\"\n});\n\nconst IconWrapper = styled(Box)({\n    color: lighterDark,\n    \"& svg\": {\n        height: \"18px\",\n        width: \"18px\"\n    }\n});\n\ninterface PasswordInputProps {\n    dark?: boolean;\n    placeholder?: string;\n    password: string;\n    onChange: (value: string) => void;\n    handleError?: (error: string) => void;\n    showRegenerateIcon?: boolean;\n    showPassword?: boolean;\n    showInfoIcon?: boolean;\n}\n\ninterface PasswordInputState {\n    showPassword: boolean;\n}\n\nexport class PasswordInput extends React.Component {\n    props: PasswordInputProps;\n    state: PasswordInputState = {\n        showPassword: this.props.showPassword ?? false,\n    };\n\n    private onChange(newPassword: string) {\n        this.props.onChange(newPassword);\n\n        const errors: string = UtilsShared.getPasswordValidationError(newPassword);\n        if (this.props.handleError)\n            this.props.handleError(errors);\n    }\n\n    private getErrors(): React.ReactNode[] {\n        const allPasswordErrors: string[] = [\n            UtilsShared.PASSWORD_LENGTH_ERR,\n            UtilsShared.PASSWORD_LOWER_ERR,\n            UtilsShared.PASSWORD_UPPER_ERR,\n            UtilsShared.PASSWORD_NUMBER_ERR,\n            UtilsShared.PASSWORD_SPECIAL_ERR\n        ];\n        return allPasswordErrors.map((error: string) => (\n            <Box key={error}>{i18next.t(error)}</Box>\n        ));\n    }\n\n    render(){\n        return (\n            <Wrapper>\n                <InputText\n                    type={this.state.showPassword ? \"text\" : \"password\"}\n                    name=\"password\"\n                    dark={this.props.dark ?? false}\n                    placeholder={\"\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\"}\n                    value={this.props.password}\n                    onChange={(newPassword: string) => this.onChange(newPassword)}\n                    label={\n                        <> {i18next.t(\"Password\")}\n                            {this.props.showInfoIcon &&\n                                <InfoIcon\n                                    white={!this.props.dark}\n                                    text={this.getErrors()}\n                                />\n                            }\n                        </>\n                    }\n                />\n                <IconsContainer>\n                    {this.props.showRegenerateIcon &&\n                        <IconWrapper onClick={() => this.onChange(generatePassword())}>\n                            <Regenerate color={white} fillColor={yellow} />\n                        </IconWrapper>\n                    }\n                    {Boolean(this.props.password) &&\n                        <IconWrapper onClick={() =>\n                            this.setState((prevState: PasswordInputState) => ({ showPassword: !prevState.showPassword }))}\n                        >\n                            {this.state.showPassword ? <Unhide /> : <Hide />}\n                        </IconWrapper>}\n                </IconsContainer>\n            </Wrapper>\n        );\n    }\n}\n", "import React from \"react\";\nimport {dark} from \"../values/colors/colors\";\n\nexport function Unhide(props: { fill?: string }){\n    return (\n        <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"eye-slash\"\n             className=\"svg-inline--fa fa-eye-slash fa-w-20\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n             viewBox=\"0 0 640 512\">\n            <path fill=\"currentColor\"\n                  d=\"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35\n               0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0\n               1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29\n               135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16\n               0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0\n               0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65\n               47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0\n               0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z\">\n            </path>\n        </svg>\n    )\n}\n", "import React from \"react\";\n\nexport const Hide = () =>\n    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"eye\"\n         className=\"svg-inline--fa fa-eye fa-w-18\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\">\n        <path fill=\"currentColor\"\n              d=\"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71\n               376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1\n               144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78\n                95.78 0 1 0 288 160z\">\n        </path>\n    </svg>;", "import React, {ReactNode} from \"react\";\nimport styled from \"styled-components\";\nimport { Info } from \"../icons/Info\";\nimport { dark, white } from \"../values/colors/colors\";\nimport {Tooltip} from \"./Tooltip\";\n\nconst Wrapper = styled(\"div\")\n<{\n    dark: number\n}>`\n    height: 14px;\n    width: 14px;\n    display: inline-flex;\n    background-color: ${props => props.dark ? dark : white};\n    border-radius: 50%;\n    color: ${props => props.dark ? white : dark};\n    box-sizing: border-box;\n    padding: 3px;\n    vertical-align: middle;\n    z-index: 3000;\n    margin-left: 3px;\n    & svg{\n        height: 100%;\n        width: 100%;\n        max-height: 100%;\n        max-width: 100%;\n        min-height: 100%;\n        min-width: 100%;\n    }\n`;\n\nexport function InfoIcon(props: {text?: string | ReactNode, white?: boolean}): JSX.Element {\n    return (\n        <Tooltip title={props.text}\n                 white={Number(props.white)}\n                 slotProps={{\n                     popper: {\n                         sx: {\n                             zIndex: 3000, // Forces the tooltip to the very front\n                         },\n                     },\n                 }}\n        >\n            <Wrapper dark={Number(!props.white)}>\n                <Info />\n            </Wrapper>\n        </Tooltip>\n    );\n}", "import React, {ReactElement} from \"react\";\nimport {white} from \"../values/colors/colors\";\nimport {yellow} from \"../values/colors/colors\";\n\nexport function Regenerate(props: { color?: string, fillColor?: string }): ReactElement {\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path d=\"M21.4286 0H2.57143C1.15179 0 0 1.15179 0 2.57143V21.4286C0 22.8482 1.15179 24 2.57143 24H21.4286C22.8482 24 24 22.8482 24 21.4286V2.57143C24 1.15179 22.8482 0 21.4286 0Z\"\n                  fill={props.fillColor ?? yellow}/>\n            <path d=\"M12.1 6.54999C13.5042 6.54999 14.877 6.9664 16.0445 7.74655C17.2121 8.52671 18.1222 9.63558 18.6595 10.9329C19.1969 12.2303 19.3375 13.6579 19.0636 15.0351C18.7896 16.4124 18.1134 17.6775 17.1205 18.6704C16.1275 19.6634 14.8624 20.3396 13.4851 20.6136C12.1079 20.8875 10.6803 20.7469 9.38295 20.2095C8.08559 19.6722 6.97672 18.7621 6.19657 17.5945C5.41641 16.4269 5 15.0542 5 13.65L8.55 13.65C8.55 14.3521 8.7582 15.0385 9.14828 15.6223C9.53836 16.2061 10.0928 16.6611 10.7415 16.9298C11.3902 17.1985 12.1039 17.2688 12.7926 17.1318C13.4812 16.9948 14.1138 16.6567 14.6102 16.1602C15.1067 15.6637 15.4448 15.0312 15.5818 14.3426C15.7188 13.6539 15.6485 12.9401 15.3798 12.2915C15.1111 11.6428 14.6561 11.0883 14.0723 10.6983C13.4885 10.3082 12.8021 10.1 12.1 10.1L12.1 6.54999Z\"\n                  fill={props.color ?? white}/>\n            <path d=\"M5.64558 8.74431C5.34205 8.54716 5.34205 8.10283 5.64558 7.90568L11.3276 4.21506C11.6603 3.99901 12.1 4.23774 12.1 4.63438L12.1 12.0156C12.1 12.4122 11.6603 12.651 11.3276 12.4349L5.64558 8.74431Z\"\n                  fill={props.color ?? white}/>\n            <path d=\"M5 13.65H8.55C8.55 13.65 8.5525 11.2833 6.775 11.2833C4.9975 11.2833 5 13.65 5 13.65Z\"\n                  fill={props.color ?? white}/>\n        </svg>\n    );\n}", "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {RegionAWS} from \"../../../Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {darkenGrey, lightDark} from \"../values/colors/colors\";\nimport {Select} from \"./Select\";\nimport {primaryFontLarge} from \"../values/fonts/fonts\";\nimport {Box} from \"@mui/material\";\nimport i18next from \"i18next\";\n\nconst SelectRegionWrapper = styled.div`\n    width: 100%;\n    max-width: 520px;\n`;\n\ninterface SelectRegionProps {\n    region: RegionAWS | null;\n    disabled?: boolean;\n    options: Map<string, RegionAWS>;\n    onChange: (bucket: string) => void;\n    dark?: boolean;\n}\n\ninterface SelectRegionState {\n    bucket: string;\n}\n\nexport class SelectRegion extends React.Component<SelectRegionProps, SelectRegionState> {\n    public static readonly EXPLANATION: string = \"Region where data is hosted\";\n    public static readonly REGION_FLAG: Record<RegionAWS, string> = {\n        \"us-east-1\": \"\uD83C\uDDFA\uD83C\uDDF8\",\n        \"ca-central-1\": \"\uD83C\uDDE8\uD83C\uDDE6\",\n        \"eu-west-3\": \"\uD83C\uDDEA\uD83C\uDDFA\"\n    };\n    public static readonly REGION_NAME: Record<RegionAWS, string> = {\n        \"us-east-1\": \"United States\",\n        \"ca-central-1\": \"Canada\",\n        \"eu-west-3\": \"Europe\"\n    };\n\n    state: SelectRegionState = { bucket: \"\" }\n\n    override async componentDidMount() {\n\n        // find the current bucket for the associated region\n        if (this.props.region) {\n            for (const [bucket, value] of this.props.options) {\n                if (value === this.props.region) {\n                    this.setState({bucket});\n                    break;\n                }\n            }\n        }\n    }\n\n    private handleRegionChange(index: number) {\n        const buckets: string[] = Array.from(this.props.options.keys());\n        const bucket: string = buckets[index];\n        this.setState({bucket});\n        this.props.onChange(bucket);\n    }\n\n    private constructOptions(): string[] {\n        const hasUniqueRegions: boolean = this.props.options.size === new Set(this.props.options.values()).size;\n        const options: string[] = [];\n        for (const [bucket, region] of this.props.options.entries())\n            options.push(SelectRegion.REGION_FLAG[region] + \" \" + i18next.t(SelectRegion.REGION_NAME[region]) +\n                        (hasUniqueRegions ? \"\" : \" (\" + bucket + \")\"));\n        return options;\n    }\n\n    render(): React.ReactElement {\n\n        // if we already have bucket (that cannot be modified), simply display it!\n        if (this.props.region && this.props.disabled) {\n            return <Box style={{font: primaryFontLarge}}>\n                {SelectRegion.REGION_FLAG[this.props.region] + \" \" + i18next.t(SelectRegion.REGION_NAME[this.props.region])}\n            </Box>\n        }\n\n        // construct region options and find current selected.\n        const selectOptions: string[] = this.constructOptions();\n        let selectedIndex: number = -1;\n        if (this.state.bucket.length)\n            selectedIndex = Array.from(this.props.options.keys()).indexOf(this.state.bucket);\n\n        return (\n            <SelectRegionWrapper>\n                <Select\n                    id=\"select-region\"\n                    options={selectOptions}\n                    onChange={(index) => this.handleRegionChange(index)}\n                    default={selectedIndex}\n                    placeholder={selectedIndex === -1 ? i18next.t(\"Pick a Region\") : \"\"}\n                    disable={this.props.disabled}\n                    fullWidth={true}\n                    styleWrapper={{\n                        minHeight: \"20px\", padding: \"2px 8px\", borderRadius: \"12px\",\n                        background: this.props.dark ? lightDark : \"white\"\n                    }}\n                    styleOptionsWrapper={{\n                        backgroundColor: this.props.dark ? lightDark : \"white\",\n                        color: this.props.dark ? \"white\" : \"inherit\"\n                    }}\n                    styleValueLabel={selectedIndex === -1 ? { color: darkenGrey, fontStyle: \"italic\" } : undefined}\n                />\n            </SelectRegionWrapper>\n        );\n    }\n}", "import React from \"react\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {Switch} from \"@root/react-components/src/inputs/Switch\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport i18next from \"i18next\";\nimport {white, dark} from \"@root/react-components/src/values/colors/colors\";\nimport {secondaryFontXSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {LoginForm, AppLogin, LoginView, MessageStatus, AppLoginFormProps} from \"../AppLogin\";\nimport {Box, styled} from \"@mui/material\";\nimport {UsernameChangeAlert} from \"@root/Frontend/Login/Views/UsernameChangeAlert\";\nimport {PasswordInput} from \"@root/Frontend/Console/components/PasswordInput\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {RegionAWS} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {SelectRegion} from \"@root/react-components/src/inputs/SelectRegion\";\nimport {InfoIcon} from \"@root/react-components/src/misc/InfoIcon\";\n\nconst FormFields = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"6px\",\n    width: \"100%\"\n});\n\nconst RegionContainer = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: \"8px\",\n    width: \"100%\"\n});\n\nconst LabelWithTooltip = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    color: white,\n});\n\nconst SwitchContainer = styled(Box)({\n    display: \"flex\",\n    font: secondaryFontXSmall,\n    justifyContent: \"flex-end\",\n    alignItems: \"center\",\n    textAlign: \"right\",\n    width: \"100%\",\n    gap: \"3px\",\n    \"& > div\": {\n        maxWidth: \"calc(100% - 50px)\"\n    }\n});\n\ninterface SignupState {\n    isUsernameDialogOpen: boolean;\n    fullName: string;\n    password: string;\n    repeatPassword: string;\n    acceptsTerms: boolean;\n    acceptsEmails: boolean;\n    region: RegionAWS | null;\n    availableBuckets: Map<string, RegionAWS>;\n}\n\nexport class SignUp extends React.Component implements LoginForm {\n    private readonly appLogin: AppLogin = AppLogin.getInstance();\n\n    props: AppLoginFormProps;\n\n    state: SignupState = {\n        isUsernameDialogOpen: false,\n        fullName: \"\",\n        password: \"\",\n        repeatPassword: \"\",\n        acceptsTerms: false,\n        acceptsEmails: true,\n        region: null,\n        availableBuckets: new Map()\n    }\n\n    override async componentDidMount() {\n        this.setState({ availableBuckets: await this.appLogin.dataSourceStorage.getAvailableBucketsRegions() });\n    }\n\n    public async onSubmit() {\n        \n        const signUpError: string = this.getSignUpFormError();\n        if (signUpError) {\n            this.appLogin.setMessage(signUpError, MessageStatus.Error);\n            return;\n        }\n\n        this.appLogin.setMessage(\"\");\n        const email: string = await this.appLogin.helperLogin.signUp(\n            this.props.email,\n            this.state.fullName,\n            this.state.password,\n            this.state.region as RegionAWS,\n            this.state.acceptsTerms,\n            this.state.acceptsEmails\n        );\n\n        if (email && email !== this.props.email) {\n            this.setState({isUsernameDialogOpen: true });\n            this.props.onChangeEmail(email);\n            return;\n        }\n\n        this.sendVerificationMessage();\n    }\n\n    private sendVerificationMessage(){\n        this.appLogin.setMessage(i18next.t(\"Please check your emails for verification.\"), MessageStatus.Normal);\n        this.appLogin.setView(LoginView.EmailVerification);\n    }\n\n    private getSignUpFormError(): string {\n\n        // validate fullName\n        if (!UtilsShared.isValidFullName(this.state.fullName))\n            return \"Invalid name\";\n\n        // validate email\n        const email: string = this.props.email;\n        if(!UtilsShared.isValidEmail(email))\n            return \"Invalid email address.\";\n\n        // validate password\n        const password: string = this.state.password;\n        if (password.length < 8)\n            return \"Your password is not long enough.\";\n        else if (password !== this.state.repeatPassword)\n            return \"The passwords didn't match.\";\n        else if (password.toLowerCase().includes(email.split(\"@\")[0].toLowerCase()))\n            return \"Your password cannot contain your username.\";\n\n        //Validate accepts terms\n        if (!this.state.acceptsTerms)\n            return \"You need to accept the terms and condition.\";\n\n        // validate region\n        if (!this.state.region)\n            return \"You need to select a region.\";\n\n        return \"\";\n    }\n\n\n    private closeUsernameAlert() {\n        this.setState({ isUsernameDialogOpen: false });\n        this.props.onChangeEmail(this.props.email);\n        this.sendVerificationMessage();\n    }\n\n    private updateFullName(fullName: string) {\n        this.setState({ fullName });\n\n        if (UtilsShared.isValidFullName(fullName))\n            this.appLogin.setMessage(\"\", MessageStatus.Normal);\n        else\n            this.appLogin.setMessage(\"Invalid name\", MessageStatus.Error);\n    }\n\n    render() {\n        return (\n            <>\n                <FormFields>\n                    <InputText\n                        label={i18next.t(\"Full Name\")}\n                        placeholder={\"John Do\"}\n                        name={\"name\"}\n                        onChange={(fullName: string) => this.updateFullName(fullName)}\n                    />\n                    <InputText\n                        label={i18next.t(\"Email\")}\n                        placeholder={\"john@deepsight.ca\"}\n                        name={\"email\"}\n                        type={\"email\"}\n                        defaultValue={this.props.email}\n                        onChange={(value: string) => {\n                            this.props.onChangeEmail(value);\n                        }}\n                    />\n                    <PasswordInput\n                        onChange={(value: string) => {\n                            this.setState({ password: value });\n                        }}\n                        showInfoIcon\n                        password={this.state.password}\n                        handleError={(error)=> this.appLogin.setMessage(error, MessageStatus.Error)}\n                    />\n                    <PasswordInput\n                        password={this.state.repeatPassword}\n                        onChange={(value: string) => this.setState({ repeatPassword: value })}\n                    />\n                    <RegionContainer>\n                        <LabelWithTooltip>\n                            <Box>{i18next.t(\"Region\")}</Box>\n                            <InfoIcon white={true} text={SelectRegion.EXPLANATION}/>\n                        </LabelWithTooltip>\n                        <SelectRegion\n                            region={this.state.region}\n                            disabled={false}\n                            options={this.state.availableBuckets}\n                            onChange={(bucket: string) =>\n                                this.setState({region: this.state.availableBuckets.get(bucket) ?? null})}\n                            dark={true}\n                        />\n                    </RegionContainer>\n                    <SwitchContainer>\n                        <div>{i18next.t(\"I wish to receive emails about news and updates\")}</div>\n                        <Switch\n                            initialValue={true}\n                            onChange={(value: boolean) => this.setState({acceptsEmails: value})}\n                        />\n                    </SwitchContainer>\n                    <SwitchContainer>\n                        <div>{i18next.t(\"I have read and accepted the\")}\n                            <a\n                                style={{color: white}}\n                                href={\"https://www.deepsight.ca/terms-and-conditions\"}\n                                target={\"_blank\"}\n                            >\n                                <em>{i18next.t(\"terms and conditions\")}</em>\n                            </a>\n                        </div>\n                        <Switch\n                            onChange={(value: boolean) => {\n                                this.setState({acceptsTerms: value});\n                            }}\n                        />\n                    </SwitchContainer>\n                    <Button color=\"white\" sx={{ color: dark, alignSelf: \"center\" }}\n                            onClick={() => this.onSubmit()}>\n                        {i18next.t(\"Sign Up\")}\n                    </Button>\n                </FormFields>\n                {this.state.isUsernameDialogOpen &&\n                    <UsernameChangeAlert\n                        username={this.props.email}\n                        onClose={() => this.closeUsernameAlert()}\n                    />\n                }\n            </>\n        );\n    }\n}\n", "import React from \"react\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {\n    AppLogin,\n    AppLoginFormProps,\n    LoginForm,\n    LoginView,\n    MessageStatus,\n    Small\n} from \"../AppLogin\";\nimport i18next from \"i18next\";\nimport {InputSixDigitCode} from \"@root/react-components/src/inputs/InputSixDigitCode\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\n\nexport class EmailVerification extends React.Component implements LoginForm {\n    private readonly appLogin: AppLogin = AppLogin.getInstance();\n\n    props: AppLoginFormProps;\n    state: { code: number } = { code: 0 };\n\n    componentDidMount() {\n        const url = new URL(window.location.href);\n\n        const email: string | null = url.searchParams.get(\"email\");\n        if (email) {\n            this.props.onChangeEmail(email);\n        }\n\n        const codeString: string | null = url.searchParams.get(\"verificationCode\");\n        if (codeString && codeString?.length === InputSixDigitCode.DIGIT_COUNT) {\n            const code: number = parseInt(codeString); \n            if (Number.isFinite(code))\n                this.setState({ code });\n        }\n    }\n\n    async onSubmit(code: number){\n        AppLogin.getInstance().setMessage(\"\", MessageStatus.Normal);\n\n        if(!this.props.email){\n            AppLogin.getInstance().setMessage(\"Please enter your email\", MessageStatus.Warning);\n            return;\n        }\n\n        if(!code)\n            return AppLogin.getInstance().setMessage(\"Please the six digits you received by email\", MessageStatus.Warning);\n\n        const responseVerifyEmail: Response | null = await fetch(\"/api/Login/verifyEmail\", {\n            method: \"POST\",\n            headers: {\n                ...await this.appLogin.authentication.getDefaultHeaders(),\n                \"Content-Type\": \"application/json;charset=UTF-8\"\n            },\n            body: JSON.stringify({\n                username: this.props.email ?? \"\",\n                code\n            })\n        }).catch(() => null);\n        if (!responseVerifyEmail?.ok)\n            return AppLogin.getInstance().setMessage(i18next.t(\"There was a problem. Please try again.\"), MessageStatus.Warning);\n\n        const responseJSON = UtilsBSON.deserializeBSON(await responseVerifyEmail.arrayBuffer());\n        if(!responseJSON.success)\n            return AppLogin.getInstance().setMessage(responseJSON.msg, MessageStatus.Warning);\n\n        AppLogin.getInstance().setMessage(responseJSON.msg, MessageStatus.Success);\n\n        let url = new URL(window.location.href);\n        url.searchParams.delete(\"verificationCode\");\n        url.searchParams.delete(\"email\");\n        window.history.pushState({}, '', url.toString());\n\n        setTimeout(() => {\n            AppLogin.getInstance().setMessage(i18next.t(\"Please log in\"), MessageStatus.Normal);\n            AppLogin.getInstance().setView(LoginView.LogIn)\n        }, 1500);\n    }\n\n    async resendCode(){\n        if(!this.props.email)\n            return AppLogin.getInstance().setMessage(\"Please enter your email\", MessageStatus.Warning);\n\n        const responseResendCode: Response | null = await fetch(\"/api/Login/resendCode\", {\n            method: \"POST\",\n            headers: {\n                ...await this.appLogin.authentication.getDefaultHeaders(),\n                \"Content-Type\": \"application/json;charset=UTF-8\"\n            },\n            body: JSON.stringify({\n                username: this.props.email,\n                lang: AppLogin.getInstance().lang\n            })\n        }).catch(() => null);\n        if (!responseResendCode?.ok)\n            return AppLogin.getInstance().setMessage(i18next.t(\"There was a problem. Please try again.\"), MessageStatus.Warning);\n\n        const responseJSON = UtilsBSON.deserializeBSON(await responseResendCode.arrayBuffer());\n        if(!responseJSON.success)\n            return AppLogin.getInstance().setMessage(responseJSON.msg, MessageStatus.Warning);\n\n        AppLogin.getInstance().setMessage(responseJSON.msg, MessageStatus.Success);\n    }\n\n    render(){\n        return(\n            <>\n                <InputText\n                    label={i18next.t(\"Email\")}\n                    placeholder={\"john@deepsight.ca\"}\n                    type={\"email\"}\n                    name={\"email\"}\n                    defaultValue={this.props.email}\n                    onChange={(value: string) => {\n                        this.props.onChangeEmail(value);\n                    }}\n                />\n                <div>{i18next.t(\"Enter your verification code\")}</div>\n                <InputSixDigitCode\n                    autoFocus={true}\n                    onFulfilled={(code: number) => {\n                        this.setState({ code });\n                        this.onSubmit(code);\n                    }}\n                />\n                <Small\n                    onClick={() => {\n                        this.resendCode()\n                    }}\n                >{i18next.t(\"Resend Code\")}</Small>\n                <Button color=\"white\" onClick={() => this.onSubmit(this.state.code)}>{i18next.t(\"Verify\")}</Button>\n            </>\n        )\n    }\n}\n", "import React, {createRef, RefObject} from \"react\";\nimport styled from \"styled-components\";\nimport { Box } from \"@mui/material\";\nimport { dark, grey, red } from \"../values/colors/colors\";\nimport { secondaryFontMedium } from \"../values/fonts/fonts\";\n\nconst Container = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    gap: \"8px\"\n});\n\nconst Wrap = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    maxWidth: \"300px\",\n    width: \"100%\",\n    \"& > input\": {\n        height: \"38px\",\n        width: \"26px\",\n        border: `1px solid ${grey}`,\n        borderRadius: \"3px\",\n        outline: 0,\n        textAlign: \"center\",\n        font: secondaryFontMedium,\n        color: dark,\n    },\n});\n\nconst ErrorSlot = styled(Box)({\n    minHeight: \"15px\",\n    width: \"100%\",\n    textAlign: \"center\",\n    color: red\n});\n\ninterface InputSixDigitCodeProps {\n    onEdited?: () => void;\n    onChanged?: (value: number) => void;\n    onFulfilled: (value: number) => void;\n    autoFocus?: boolean;\n    initialValue?: number;\n    error?: string;\n}\n\ninterface InputSixDigitCodeState {\n    digits: string[];\n}\n\nexport class InputSixDigitCode extends React.Component<InputSixDigitCodeProps, InputSixDigitCodeState> {\n    public static DIGIT_COUNT: number = 6;\n    private inputRefs: RefObject<HTMLInputElement>[] = \n        Array(InputSixDigitCode.DIGIT_COUNT).fill(null).map(() => createRef<HTMLInputElement>());\n\n    state: InputSixDigitCodeState = {\n        digits: this.props.initialValue \n        ? String(this.props.initialValue).padStart(InputSixDigitCode.DIGIT_COUNT, '0').split('') \n        : Array(InputSixDigitCode.DIGIT_COUNT).fill(\"\")\n    };\n\n    componentDidMount() {\n        if (this.props.autoFocus)\n            this.inputRefs[0]?.current?.focus();\n    }\n\n    private isDigit(value: string): boolean {\n        return value.length === 1 && value >= \"0\" && value <= \"9\";\n    }\n\n    public isValid(code: string): boolean {\n        if (code.length !== InputSixDigitCode.DIGIT_COUNT)\n            return false;\n\n        return code.split(\"\").every((digit: string) => this.isDigit(digit));\n    }\n\n    private submit() {\n        const code: string = this.state.digits.join(\"\");\n        if (!this.isValid(code))\n            return;\n\n        this.props.onFulfilled(parseInt(code));\n    }\n\n    private notifyChanged() {\n        if (!this.props.onChanged)\n            return;\n        const code: string = this.state.digits.join(\"\");\n        this.props.onChanged?.(this.isValid(code) ? parseInt(code) : 0);\n    }\n\n    private focusNextOrSubmit(nextFocusIndex: number) {\n        if (nextFocusIndex < this.state.digits.length) {\n            this.inputRefs[nextFocusIndex]?.current?.focus();\n            return;\n        }\n        this.submit();\n    }\n\n    private updateDigit(index: number, value: string, nextFocusIndex: number) {\n        if (value !== \"\" && !this.isDigit(value))\n            return;\n\n        if (this.props.error && this.props.onEdited)\n            this.props.onEdited();\n\n        this.setState((prev: InputSixDigitCodeState) => {\n            const digits: string[] = [...prev.digits];\n            digits[index] = value;\n            return { digits };\n        }, () => {\n            this.notifyChanged();\n\n            // Clear/delete path\n            if (value === \"\") {\n                if (nextFocusIndex >= 0 &&\n                    nextFocusIndex < this.state.digits.length &&\n                    nextFocusIndex !== index)\n                    this.inputRefs[nextFocusIndex]?.current?.focus();\n                return;\n            }\n\n            this.focusNextOrSubmit(nextFocusIndex);\n        });\n    }\n\n    private handleChange(index: number, event: React.ChangeEvent<HTMLInputElement>) {\n        const value: string = event.target.value;\n\n        // Handles cut, delete...\n        if (value === \"\") {\n            this.updateDigit(index, \"\", index);\n            return;\n        }\n\n        const lastChar: string = value[value.length - 1];\n        this.updateDigit(index, lastChar, index + 1);\n    }\n\n    private handlePaste(index: number, event: React.ClipboardEvent<HTMLInputElement>) {\n        const pastedDigits: string[] = [...event.clipboardData.getData(\"text\")]\n        if (pastedDigits.some((digits: string) => !this.isDigit(digits)))\n            return;\n\n        event.preventDefault();\n        if (this.props.error && this.props.onEdited)\n            this.props.onEdited();\n\n        const digits: string[] = [...this.state.digits];\n        for (let offset: number = 0; offset < pastedDigits.length; offset++)\n            digits[index + offset] = pastedDigits[offset];\n        this.setState({ digits }, () => {\n            this.notifyChanged();\n            this.focusNextOrSubmit(index + pastedDigits.length);\n        });\n    }\n\n    private handleKeyDown(index: number, event: React.KeyboardEvent<HTMLInputElement>) {\n        const key: string = event.key;\n\n        if (key === \"Backspace\") {\n            event.preventDefault();\n            this.updateDigit(index, \"\", index - 1);\n        }\n\n        if (key === \"Enter\") {\n            event.preventDefault();\n            this.submit();\n        }\n    }\n\n    render(): JSX.Element {\n        return (\n            <Container>\n                <Wrap>\n                    {this.inputRefs.map((inputRef: React.RefObject<HTMLInputElement>, index: number) => (\n                        <input\n                            type={\"tel\"}\n                            key={\"input-\" + index}\n                            className={\"six-digit-code-input\"}\n                            value={this.state.digits[index]}\n                            ref={inputRef}\n                            onClick={(event: React.MouseEvent<HTMLInputElement>) => event.stopPropagation()}\n                            onPaste={(event: React.ClipboardEvent<HTMLInputElement>) => this.handlePaste(index, event)}\n                            onKeyDown={(event: React.KeyboardEvent<HTMLInputElement>) => this.handleKeyDown(index, event)}\n                            onChange={(event: React.ChangeEvent<HTMLInputElement>)=> this.handleChange(index, event)}\n                        />\n                    ))}\n                </Wrap>\n                {this.props.error !== undefined &&\n                    <ErrorSlot> {this.props.error && <> {this.props.error} </>} </ErrorSlot> }\n            </Container>\n        );\n    }\n}\n", "import React from \"react\";\nimport {Loading} from \"@root/react-components/src/logo/Loading\";\nimport {secondaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {AppLogin, LoginView, MessageStatus} from \"../AppLogin\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport i18next from \"i18next\";\nimport {dark, red, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {Peer} from \"@backend/Types/Peer\";\nimport {\n    convertBytesIntoPrettyDataAmount,\n    millisecondsPerTimeUnit,\n    TimeAmount,\n    TimeUnit,\n    setLocalKeyValuePair,\n    getLocalValue,\n} from \"@utils/utils\";\nimport { UtilsBSON } from \"@backend/Utils/UtilsBSON\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {DEFAULT_PLAN, Plan} from \"@backend/Types/Plan\";\nimport {Box, styled} from \"@mui/material\";\nimport {LoginDeviceLink} from \"@root/Frontend/Login/Views/LoginDeviceLink\";\nimport {DeviceIcon} from \"@root/react-components/src/icons/DeviceIcon\";\nimport {ExternalLink} from \"@root/react-components/src/icons/ExternalLink\";\nimport {HelperLogin} from \"@root/Frontend/Login/HelperLogin\";\nimport {getUrlAPI} from \"@root/Frontend/Studio/Engine/utils\";\nimport {Authentication} from \"@utils/Authentication\";\n\nconst DeviceLinkButton = styled(Box)({\n    position: \"absolute\",\n    top: \"35px\",\n    left: \"24px\",\n    width: \"36px\",\n    height: \"36px\",\n    cursor: \"pointer\",\n    \"svg\": {\n        width: \"100%\",\n        height: \"100%\",\n    }\n});\n\nconst Info = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    paddingBottom: \"12px\"\n});\n\ninterface LoggedInState {\n    peer: Peer | null;\n    plan: Plan;\n    peerStorage: number;\n    isDeviceLoginOpen: boolean;\n}\n\nexport class LoggedIn extends React.Component {\n    private readonly helperLogin: HelperLogin = AppLogin.getInstance().helperLogin;\n\n    props: { onTokenUpdated?: (token: string) => void };\n    state: LoggedInState = {\n        peer: null,\n        plan: DEFAULT_PLAN,\n        peerStorage: 0,\n        isDeviceLoginOpen: false\n    }\n\n    private readonly logoutRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n\n    override async componentDidMount() {\n        const url: URL = new URL(window.location.href);\n        await this.assignStateFromURL(url);\n        this.logoutRef.current?.scrollIntoView({ behavior: \"smooth\", block: \"end\" });\n    }\n\n    async assignStateFromURL(url: URL) {\n\n        let token: string = await getLocalValue(Authentication.TOKEN_KEY);\n        const tokenURL: bigint = UtilsShared.safelyConvertStringToBigInt(url.searchParams.get(\"token\") ?? \"\");\n\n        // If there was a token in the URL, set it in the local storage\n        if (tokenURL) {\n            token = UtilsShared.encodeTokenBase64(tokenURL);\n            await setLocalKeyValuePair(Authentication.TOKEN_KEY, token);\n        }\n\n        const peerID: bigint = await this.helperLogin.retrievePeerForCurrentToken(token);\n        if (!peerID) {\n            AppLogin.getInstance().setMessage(\"You need to login again\", MessageStatus.Warning);\n            setTimeout(() => {\n                AppLogin.getInstance().setView(LoginView.LogIn)\n            }, 1000)\n            return;\n        }\n\n        const appLogin: AppLogin = AppLogin.getInstance();\n        const currentPeer: Peer = await appLogin.dataSourcePeers.getPeer(peerID);\n\n        this.setState({\n            peer: currentPeer,\n            plan: await appLogin.dataSourcePlans.getPlan(currentPeer.plan),\n            peerStorage: await appLogin.dataSourceStorage.getPeerStorageUsage(peerID),\n            isDeviceLoginOpen: url.searchParams.get(\"link\") === \"true\"\n        });\n    }\n\n    async logout() {\n        const token: string = await getLocalValue(Authentication.TOKEN_KEY);\n        if (!token)\n            console.error(\"logout : No local token found!\")\n\n        const responseLogout: Response | null = await fetch(\"/api/Login/invalidateToken\", {\n            method: \"POST\",\n            headers: { \"Content-Type\": \"application/octet-stream\" },\n            body: token\n        }).catch(() => null);\n        if (!responseLogout?.ok) {\n            AppLogin.getInstance().setMessage(i18next.t(\"There was a problem. Please try again.\"), MessageStatus.Error);\n            return;\n        }\n\n        const responseJSON = UtilsBSON.deserializeBSON(await responseLogout.arrayBuffer());\n        if (!responseJSON.success)\n            return AppLogin.getInstance().setMessage(responseJSON.msg, MessageStatus.Error);\n\n        // clear url and remove token from storage\n        const url: URL = new URL(window.location.href)\n        url.searchParams.delete(\"token\");\n\n        // if onTokenUpdated prop is set it means we have a way to communicate token change\n        if (this.props.onTokenUpdated) {\n            window.history.pushState({}, '', url.origin);\n            this.props.onTokenUpdated(\"\");\n\n        // if we don't have props to communicate, refresh page instead\n        } else {\n            await setLocalKeyValuePair(Authentication.TOKEN_KEY, \"\");\n            window.location.href = url.toString();\n        }\n    }\n\n    render() {\n        if (!this.state.peer || !this.state.plan)\n            return (\n                <>\n                    <Loading/>\n                    <Box style={{font: secondaryFontSmall}}> {i18next.t(\"Logging In\")}... </Box>\n                </>\n            );\n\n        const peerPlanTimeLeft: number = this.state.plan.time ?\n            (this.state.peer.timeStart + this.state.plan.time) - Date.now() : 0;\n        const today: Date = new Date();\n        const epochTimeRange: { from: bigint, to: bigint } =\n            UtilsShared.getRangeTimestamps(today.getFullYear(), today.getMonth());\n        const epochDayFrom: bigint = UtilsShared.toEpochDay(epochTimeRange.from);\n        const epochDayTo: bigint = UtilsShared.toEpochDay(epochTimeRange.to);\n\n        return (\n            <Box style={{ width: \"100%\" }}>\n                <>\n                {<Tooltip\n                    title={i18next.t(\"Connect your device\")}\n                    placement=\"right-start\"\n                    arrow\n                    slotProps={{\n                        tooltip: {sx: { backgroundColor: `${white}DD`, color: dark}},\n                        arrow: {sx: {color: white}},\n                        popper: { sx: {zIndex: 2100} }\n                    }}\n                >\n                    <DeviceLinkButton\n                        id=\"login-device-link-btn\"\n                        onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n                            e.preventDefault();\n                            this.setState({isDeviceLoginOpen: true});\n                        }}\n                    >\n                        <DeviceIcon color={white} />\n                    </DeviceLinkButton>\n                </Tooltip>}\n\n                <Info style={{ paddingBottom: \"0\" }}>\n                    <Box>\n                        {i18next.t(\"Hi\")} <strong>{this.state.peer.fullName}</strong>,\n                    </Box>\n                    <Tooltip title={i18next.t(\"Manage Account\")}\n                        placement=\"right-start\"\n                        arrow\n                        slotProps={{\n                            tooltip: {sx: { backgroundColor: white, color: dark}},\n                            arrow: {sx: {color: white}},\n                            popper: { sx: {zIndex: 2100} }\n                        }}\n                    >\n                        <a href={`${getUrlAPI()}/Console/Management/Peers/${this.state.peer.ID}`} target=\"_blank\" >\n                            <Box style={{ width: \"16px\", height: \"16px\" }}><ExternalLink size={12} fill={white} /></Box>\n                        </a>\n                    </Tooltip>\n                </Info>\n                <hr/>\n\n                <Info>\n                    {i18next.t(\"Current Plan\")}\n                    <Box><strong>{this.state.plan.title}</strong></Box>\n                </Info>\n\n                <Info>\n                    {i18next.t(\"Expires In\")}\n                    <Box style={{color: peerPlanTimeLeft < 0 &&\n                                        peerPlanTimeLeft < millisecondsPerTimeUnit(TimeUnit.DAYS) * 3 ? red : \"\"}}\n                    >\n                        <strong>\n                            {peerPlanTimeLeft ?\n                                (new TimeAmount(peerPlanTimeLeft, TimeUnit.MILLISECONDS)).toPrettyHumanTime() : i18next.t(\"Never\")}\n                        </strong>\n                    </Box>\n                </Info>\n\n                <Info style={{ paddingBottom: \"0\" }}>\n                    {i18next.t(\"Usage\")}\n                    <Box style={{width: \"100%\", textAlign: \"right\"}}>\n                       <Box><strong>{i18next.t(\"Worlds\")}</strong></Box>\n                       <Box style={{color: this.state.peer.worlds.length >= this.state.plan.worlds ? red : \"unset\"}}>\n                           {this.state.peer.worlds.length}/{this.state.plan.worlds}\n                       </Box>\n\n                       <Box><strong>{i18next.t(\"Models\")}</strong></Box>\n                       <Box style={{color: this.state.peer.documents.length >= this.state.plan.documents ?\n                                    red : \"unset\"}}\n                       >\n                           {this.state.peer.documents.length}/{this.state.plan.documents}\n                       </Box>\n\n                       <Box><strong>{i18next.t(\"Data Storage\")}</strong></Box>\n                       <Box style={{color: this.state.peerStorage >= this.state.plan.storage ? red : \"unset\"}}>\n                           {convertBytesIntoPrettyDataAmount(this.state.peerStorage).toString()}/\n                           {convertBytesIntoPrettyDataAmount(this.state.plan.storage).toString()}\n                       </Box>\n\n                        <Box><strong>{i18next.t(\"Uploads\")} <small>({i18next.t(\"this month\")})</small></strong></Box>\n                        {this.state.peer?.usageUploads &&\n                           <Box style={{color: UtilsShared.computePeerUsageData(this.state.peer.usageUploads,\n                                       epochDayFrom, epochDayTo) >= this.state.plan.uploads ? red : \"unset\"}}\n                           >\n                               {convertBytesIntoPrettyDataAmount(UtilsShared.computePeerUsageData(\n                               this.state.peer.usageUploads, epochDayFrom, epochDayTo)).toString()}/\n                               {convertBytesIntoPrettyDataAmount(this.state.plan.uploads).toString()}\n                           </Box>\n                        }\n\n                        <Box><strong>{i18next.t(\"Downloads\")} <small>({i18next.t(\"this month\")})</small></strong></Box>\n                        {this.state.peer?.usageDownloads &&\n                            <Box style={{color: UtilsShared.computePeerUsageData(this.state.peer.usageDownloads,\n                                        epochDayFrom, epochDayTo) >= this.state.plan.downloads ? red : \"unset\"}}\n                            >\n                                {convertBytesIntoPrettyDataAmount(UtilsShared.computePeerUsageData(\n                                this.state.peer.usageDownloads, epochDayFrom, epochDayTo)).toString()}/\n                                {convertBytesIntoPrettyDataAmount(this.state.plan.downloads).toString()}\n                            </Box>\n                        }\n                    </Box>\n                </Info>\n\n                <hr/>\n                <Box ref={this.logoutRef} style={{width: \"100%\", textAlign: \"center\"}}>\n                    <Button color=\"white\" onClick={() => this.logout()}>{i18next.t(\"Logout\")}</Button>\n                </Box>\n                </>\n                {this.state.isDeviceLoginOpen &&\n                    <LoginDeviceLink onClose={() => this.setState({isDeviceLoginOpen: false})}/>\n                }\n            </Box>\n        )\n    }\n}\n", "export interface Plan {\n    title: string,\n    worlds: number,     ///< The world count limit this plan has\n    documents: number,  ///< The document count limit this plan has\n    storage: number,    ///< The storage limit this plan has in bytes\n    uploads: number,    ///< The monthly upload limit this plan has in bytes\n    downloads: number,  ///< The monthly downloads limit this plan has in bytes\n    time: number        ///< The period of time in milliseconds that this plan is active/non-expired\n}\n\nexport const DEFAULT_PLAN: Plan = {\n    title: \"No plan\",\n    worlds: 0,\n    documents: 0,\n    storage: 0,\n    uploads: 0,\n    downloads: 0,\n    time: 0,\n}\n\nexport enum DefaultPlanType {\n    DEFAULT_SIGNUP = \"DefaultSignUp\",\n    DEFAULT_IMPORT = \"DefaultImport\"\n}\n", "import React, { useEffect, useState } from \"react\";\nimport i18next from \"i18next\";\nimport { Box, styled } from \"@mui/material\";\nimport { AppLogin, MessageStatus } from \"@root/Frontend/Login/AppLogin\";\nimport { Button } from \"@root/react-components/src/buttons/Button\";\nimport { Close } from \"@root/react-components/src/icons/Close\";\nimport { InputSixDigitCode } from \"@root/react-components/src/inputs/InputSixDigitCode\";\nimport { SegmentedControl } from \"@root/react-components/src/inputs/SegmentedControl\";\nimport { Loading } from \"@root/react-components/src/logo/Loading\";\nimport { dark, primary, red, white } from \"@root/react-components/src/values/colors/colors\";\nimport { primaryFontXLarge } from \"@root/react-components/src/values/fonts/fonts\";\n\nenum SegmentedOption {\n    PIN = \"PIN\",\n    QR = \"QR\"\n}\n\nconst Overlay = styled(Box)({\n    position: \"fixed\",\n    top: \"0\",\n    left: \"0\",\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    paddingTop: \"64px\"\n});\n\nconst CustomPopup = styled(Box)({\n    width: \"330px\",\n    backgroundColor: white,\n    padding: \"10px 0px 10px 0px\",\n    borderRadius: \"24px\"\n});\n\nconst HeaderRow = styled(Box)({\n    position: \"relative\",\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\"\n});\n\nconst CloseWrapper = styled(Box)({\n    position: \"absolute\",\n    right: \"16px\",\n    top: \"2px\",\n    width: \"24px\",\n    height: \"24px\",\n    svg: {\n        width: \"24px\",\n        height: \"24px\",\n        color: primary\n    }\n});\n\nconst ToggleWrapper = styled(Box)({\n    width: \"200px\",\n    display: \"flex\"\n});\n\nconst Body = styled(Box)({\n    height: \"386px\"\n});\n\nconst PinContainer = styled(Box)({\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    position: \"relative\",\n    justifyContent: \"flex-start\"\n});\n\nconst PinTitle = styled(Box)({\n    flex: 1,\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    font: primaryFontXLarge,\n    color: dark\n});\n\nconst PinBody = styled(Box)({\n    width: \"100%\",\n    flex: 2,\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    gap: \"12px\",\n    padding: \"8px 0 0 0\",\n    color: dark,\n});\n\nconst PinLoadingStatus = styled(Box)({\n    position: \"absolute\",\n    left: \"0\",\n    right: \"0\",\n    bottom: \"28px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    gap: \"8px\",\n    color: dark\n});\n\nconst QrWrapper = styled(Box)((props: { background_image: string }) => ({\n    height: \"330px\",\n    width: \"330px\",\n    backgroundBlendMode: \"multiply\",\n    backgroundImage: props.background_image,\n    backgroundSize: \"contain\",\n    backgroundColor: white,\n    backgroundRepeat: \"no-repeat\",\n    backgroundPosition: \"center\"\n}));\n\nconst LoadingWrapper = styled(Box)({\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    paddingTop: \"10px\",\n    color: dark\n});\n\nconst QrBody = styled(Box)({\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"flex-start\",\n    color: dark\n});\n\ninterface LoginDeviceLinkProps {\n    onClose: () => void;\n}\n\nexport function LoginDeviceLink(props: LoginDeviceLinkProps) {\n    const appLogin: AppLogin = AppLogin.getInstance();\n    const [mode, setMode] = useState<SegmentedOption>(SegmentedOption.PIN);\n    const modeOptions: SegmentedOption[] = [SegmentedOption.PIN, SegmentedOption.QR];\n\n    const [pinCode, setPinCode] = useState<number>(0);\n    const [pinError, setPinError] = useState<string>(\"\");\n    const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\n    const [qrError, setQrError] = useState<string>(\"\");\n    const [imageBuffer, setImageBuffer] = useState<Buffer | null>(null);\n\n    useEffect(() => {\n        if (mode === SegmentedOption.PIN)\n            return;\n\n        appLogin.helperLogin.generateAuthenticationQR().then((buffer: Buffer | null) => {\n            if (!buffer) {\n                setQrError(i18next.t(\"Something went wrong...\"));\n                return;\n            }\n            setImageBuffer(buffer);\n        });\n    }, [mode]);\n\n    async function submitPinCode(userPin: number) {\n        if (isSubmitting)\n            return;\n\n        if (userPin < 100000 || userPin > 999999 || !Number.isFinite(userPin)) {\n            setPinError(i18next.t(\"Enter the 6-digit code\"));\n            return;\n        }\n\n        setIsSubmitting(true);\n        const didLink: boolean = await appLogin.helperLogin.linkByPin(userPin);\n        setIsSubmitting(false);\n\n        if (!didLink) {\n            setPinError(i18next.t(\"Failed to link account\"));\n            return;\n        }\n\n        AppLogin.getInstance().setMessage(i18next.t(\"Account linked\"), MessageStatus.Success);\n        props.onClose();\n    }\n\n    function handleModeChange(nextMode: SegmentedOption) {\n        setMode(nextMode);\n        setPinError(\"\");\n        setIsSubmitting(false);\n        setQrError(\"\");\n    }\n\n    return (\n        <Overlay onClick={() => props.onClose()}>\n            <CustomPopup onClick={(event: React.MouseEvent<HTMLDivElement>) => event.stopPropagation()}>\n                <HeaderRow>\n                    <ToggleWrapper>\n                        <SegmentedControl\n                            optionsID=\"login-mode-\"\n                            options={modeOptions}\n                            dark={true}\n                            value={modeOptions.indexOf(mode)}\n                            onChange={(index: number) => handleModeChange(modeOptions[index])}\n                        />\n                    </ToggleWrapper>\n\n                    <CloseWrapper onClick={() => props.onClose()}>\n                        <Close />\n                    </CloseWrapper>\n                </HeaderRow>\n\n                <Body>\n                    {mode === SegmentedOption.PIN &&\n                        <PinContainer>\n                            <PinTitle>{i18next.t(\"Link your account\")}</PinTitle>\n                            <PinBody>\n                                <Box sx={{ marginLeft: \"16px\", marginRight: \"16px\", textAlign: \"center\" }}>\n                                    {i18next.t(\"Enter the 6-digit code shown on your device\")}\n                                </Box>\n\n                                <InputSixDigitCode\n                                    autoFocus={true}\n                                    error={pinError}\n                                    onEdited={() => setPinError(\"\")}\n                                    onChanged={(code: number) => setPinCode(code)}\n                                    onFulfilled={(code: number) => submitPinCode(code)}\n                                />\n\n                                <Button\n                                    color=\"primary\"\n                                    disabled={isSubmitting}\n                                    onClick={() => submitPinCode(pinCode)}\n                                >\n                                    {i18next.t(\"Confirm\")}\n                                </Button>\n\n                            </PinBody>\n                            {isSubmitting &&\n                                <PinLoadingStatus>\n                                    <Loading />\n                                    {i18next.t(\"Linking account\")}\n                                </PinLoadingStatus>\n                            }\n                        </PinContainer>\n                    }\n                    {mode === SegmentedOption.QR &&\n                        <QrBody>\n                            {qrError &&\n                                <Box style={{ color: red, textAlign: \"center\", paddingBottom: \"8px\" }}>{qrError}</Box>\n                            }\n                            {imageBuffer ?\n                                <>\n                                    <QrWrapper background_image={\n                                        `url(data:image/png;base64,${imageBuffer.toString(\"base64\")})`} />\n                                    <Box style={{ width: \"100%\", padding: \"16px 12px\", textAlign: \"center\" }}>\n                                        {i18next.t(\"Scan this QR code to connect with your device\")}\n                                    </Box>\n                                </>\n                            :\n                                <LoadingWrapper>\n                                    <Loading />\n                                    {i18next.t(\"Generating device token\")}\n                                </LoadingWrapper>\n                            }\n                        </QrBody>\n                    }\n                </Body>\n            </CustomPopup>\n        </Overlay>\n    );\n}\n", "import React from \"react\";\nimport { dark } from \"../values/colors/colors\";\n\nexport function DeviceIcon(props: { color?: string }) {\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"10.55 2.16 31.45 25.4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path d=\"M28.1602 5.21484L28.1602 13.2466C27.5298 13.2533 26.8983 13.2712 26.2734 13.307L26.2734 6.14062L14.9883 6.14062L14.9883 23.0156L16.2839 23.0156C16.5646 24.564 17.2318 25.9381 18.1872 26.9883L16.2891 26.9883C14.3789 26.9883 13.1016 25.7695 13.1016 23.9414L13.1016 5.21484C13.1016 3.38672 14.3789 2.16797 16.2891 2.16797L24.9727 2.16797C26.8828 2.16797 28.1602 3.38672 28.1602 5.21484ZM19.9453 4.13672C19.9453 4.52344 20.2617 4.83984 20.6484 4.83984C21.0234 4.83984 21.3281 4.52344 21.3281 4.13672C21.3281 3.76172 21.0234 3.45703 20.6484 3.45703C20.2617 3.45703 19.9453 3.76172 19.9453 4.13672Z\"\n                fill={props.color ?? dark} />\n            <path d=\"M28.8633 25.1016C30.1172 25.1016 31.6406 27.5625 34.7344 27.5625C37.7461 27.5625 40.0195 24.8438 40.0195 21.3047C40.0195 15.5156 34.8867 14.8359 28.8633 14.8359C22.8633 14.8359 17.7305 15.5273 17.7305 21.3047C17.7305 24.8438 19.9805 27.5625 23.0156 27.5625C26.0977 27.5625 27.5977 25.1016 28.8633 25.1016ZM28.8633 23.2383C26.4727 23.2383 25.4531 25.6758 23.0156 25.6758C20.9062 25.6758 19.6172 24.0938 19.6172 21.3047C19.6172 17.1445 23.0625 16.7227 28.8633 16.7227C34.6875 16.7227 38.1328 17.1328 38.1328 21.3047C38.1328 24.0938 36.832 25.6758 34.7344 25.6758C32.2852 25.6758 31.2539 23.2383 28.8633 23.2383Z\"\n                fill={props.color ?? dark} />\n        </svg>\n    );\n}\n", "import React from 'react';\nexport function ExternalLink(props: {size:number, fill?:string}) {\n    return <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        fill={props.fill}\n        viewBox={`0 0 ${props.size * 2} ${props.size * 2}`}>\n        <path d=\"M 5 3 C 3.9069372 3 3 3.9069372 3 5 L 3 19 C 3 20.093063 3.9069372 21 5 21 L 19 21 C 20.093063 21 21 20.093063 21 19 L 21 12 L 19 12 L 19 19 L 5 19 L 5 5 L 12 5 L 12 3 L 5 3 z M 14 3 L 14 5 L 17.585938 5 L 8.2929688 14.292969 L 9.7070312 15.707031 L 19 6.4140625 L 19 10 L 21 10 L 21 3 L 14 3 z\"/>\n    </svg>\n}\n\n", "\"1.6.3\"", "// @ts-ignore\nimport VERSION from \"../../../VERSION.txt\";\nimport {getLocalValue} from \"@utils/utils\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport type {MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nexport class Authentication {\n    public static readonly TOKEN_KEY: string = \"token\";\n    private engine: MainModule | null = null;\n\n    public setEngine(engine: MainModule | null): void {\n        this.engine = engine;\n    }\n\n    public async getToken(): Promise<string> {\n        // If there is a token in the url, use it\n        const url: URL = new URL(window.location.href)\n        const tokenURL: bigint = UtilsShared.safelyConvertStringToBigInt(url.searchParams.get(\"token\") ?? \"\");\n        if (tokenURL)\n            return UtilsShared.encodeTokenBase64(tokenURL);\n\n        // If no token in url, use the one in local storage\n        if (this.engine)\n            return this.engine.Core.getInstance().getFacadeOS().getLocalValue(Authentication.TOKEN_KEY);\n\n        return await getLocalValue(Authentication.TOKEN_KEY);\n    }\n\n    public async getDefaultHeaders(): Promise<{\"Accept-Version\": string, \"Authorization\": string}> {\n        return {\n            \"Authorization\": await this.getToken(),\n            \"Accept-Version\": (VERSION as string).replaceAll('\"', \"\")\n        };\n    }\n}\n\n// this is only used by integration tests and should not be used for anything else\n(window as any).isUserLoggedIn = async () => Boolean(await getLocalValue(Authentication.TOKEN_KEY));\n", "import React from \"react\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {AppLogin, AppLoginFormProps, LoginForm, LoginView, MessageStatus} from \"../AppLogin\";\nimport {InputSixDigitCode} from \"@root/react-components/src/inputs/InputSixDigitCode\";\nimport { UtilsBSON } from \"@backend/Utils/UtilsBSON\";\nimport {PasswordInput} from \"@root/Frontend/Console/components/PasswordInput\";\n\ninterface ForgotPasswordState {\n    codeSent: boolean;\n    code: number;\n    password: string;\n    passwordRepeat: string;\n}\n\nexport class ForgotPassword extends React.Component implements LoginForm {\n    private readonly appLogin: AppLogin = AppLogin.getInstance();\n\n    props: AppLoginFormProps;\n\n    state: ForgotPasswordState = {\n        codeSent: false,\n        code: 0,\n        password: \"\",\n        passwordRepeat: \"\",\n    }\n\n    componentDidMount() {\n        const url = new URL(window.location.href);\n\n        document.addEventListener(\"keydown\", this.handleSendCode);\n\n        const email: string | null = url.searchParams.get(\"email\");\n        if (email) {\n            this.props.onChangeEmail(email);\n        }\n\n        const codeString: string | null = url.searchParams.get(\"verificationCode\");\n        if (codeString && codeString?.length === InputSixDigitCode.DIGIT_COUNT) {\n            const code: number = parseInt(codeString); \n            if (Number.isFinite(code))\n                this.setState({ codeSent: true, code });\n        }\n    }\n\n    componentWillUnmount() {\n        document.removeEventListener(\"keydown\", this.handleSendCode);\n    }\n\n    private handleSendCode = async (e: KeyboardEvent) => {\n        if (e.key !== \"Enter\" || this.state.codeSent)\n            return;\n\n        e.preventDefault();\n        await this.sendCode();\n    }\n\n    async sendCode(){\n        this.appLogin.setMessage(\"\", MessageStatus.Normal);\n\n        if(!this.props.email)\n            return this.appLogin.setMessage(\"Please enter your username\", MessageStatus.Warning);\n\n        const responseResendCode: Response | null = await fetch(\"/api/Login/resendCode\", {\n            method: \"POST\",\n            headers: {\n                ...await this.appLogin.authentication.getDefaultHeaders(),\n                \"Content-Type\": \"application/json;charset=UTF-8\"\n            },\n            body: JSON.stringify({\n                username: this.props.email,\n                forPassword: true\n            })\n        }).catch(() => null);\n\n        if (!responseResendCode?.ok)\n            return this.appLogin.setMessage(i18next.t(\"There was a problem. Please try again.\"), MessageStatus.Error);\n\n        let responseJSON = UtilsBSON.deserializeBSON(await responseResendCode.arrayBuffer());\n\n        if(!responseJSON.success)\n            return this.appLogin.setMessage(responseJSON.msg, MessageStatus.Error);\n\n        this.appLogin.setMessage(responseJSON.msg, MessageStatus.Success);\n        this.setState({codeSent: true});\n    }\n\n    async onSubmit(code: number){\n        this.appLogin.setMessage(\"\", MessageStatus.Normal);\n\n        if(!this.props.email)\n            return this.appLogin.setMessage(i18next.t(\"Please enter your username\"), MessageStatus.Warning);\n\n        if(this.state.codeSent && !code)\n            return this.appLogin.setMessage(i18next.t(\"Please the six digits you received by email\"), MessageStatus.Warning);\n\n        if(this.state.password === \"\")\n            return this.appLogin.setMessage(i18next.t(\"Enter new password\"), MessageStatus.Warning);\n\n        if(this.state.passwordRepeat === \"\")\n            return this.appLogin.setMessage(i18next.t(\"Passwords are not matching\"), MessageStatus.Warning);\n\n        const responseResetPass: Response | null = await fetch(\"/api/Login/resetPass\", {\n            method: \"POST\",\n            headers: { \"Content-Type\": \"application/json;charset=UTF-8\" },\n            body: JSON.stringify({\n                username: this.props.email,\n                code,\n                password: this.state.password,\n                repeatPassword: this.state.passwordRepeat,\n            })\n        }).catch(() => null);\n        if (!responseResetPass?.ok)\n            return this.appLogin.setMessage(i18next.t(\"There was a problem. Please try again.\"), MessageStatus.Error);\n\n        let responseJSON = UtilsBSON.deserializeBSON(await responseResetPass.arrayBuffer());\n        if(!responseJSON.success)\n            return this.appLogin.setMessage(responseJSON.msg, MessageStatus.Error);\n\n        this.appLogin.setMessage(responseJSON.msg, MessageStatus.Success);\n\n        let url = new URL(window.location.href);\n        url.searchParams.delete(\"verificationCode\");\n        url.searchParams.delete(\"email\");\n        url.searchParams.delete(\"resetPass\");\n        window.history.pushState({}, '', url.toString());\n\n        setTimeout(() => {\n            this.appLogin.setMessage(i18next.t(\"Please log in\"), MessageStatus.Normal);\n            this.appLogin.setView(LoginView.LogIn)\n        }, 1500);\n    }\n\n    render(){\n        return(\n            <>\n                <div>{i18next.t(\"Please enter your DeepSight username\")}</div>\n                <InputText\n                    label={i18next.t(\"Username\")}\n                    placeholder={\"john@deepsight.ca\"}\n                    type={\"email\"}\n                    name={\"email\"}\n                    defaultValue={this.props.email}\n                    onChange={(value: string) => {\n                        this.props.onChangeEmail(value);\n                    }}\n                />\n                {\n                    this.state.codeSent ?\n                        <>\n                            <PasswordInput\n                                password={this.state.password}\n                                onChange={(value) => this.setState({password: value})}\n                                handleError={(error: string) => this.appLogin.setMessage(error, MessageStatus.Error)}\n                                showInfoIcon\n                            />\n                            <PasswordInput\n                                password={this.state.passwordRepeat}\n                                onChange={(value) => this.setState({passwordRepeat: value})}\n                            />\n                            <InputSixDigitCode\n                                onFulfilled={(code: number) => {\n                                    this.setState({ code });\n                                    this.onSubmit(code);\n                                }}\n                            />\n                            <Button color=\"white\" onClick={() => this.onSubmit(this.state.code)}\n                            >{i18next.t(\"Submit\")}</Button>\n                    </> :\n                    <>\n                        <Button color=\"white\" onClick={() => this.sendCode()}>\n                            {i18next.t(\"Verify\")}\n                        </Button>\n                    </>\n                }\n            </>\n        )\n    }\n}\n", "import {Role} from \"@root/Types/Role\";\nimport {RegionAWS} from \"@root/public/studio/WebAssembly.mjs\";\n\nexport enum SortCriteriaPeers{\n    LOGIN,\n    DOWNLOADS,\n    UPLOADS,\n    STORAGE,\n    COUNT\n}\n\nexport interface Peer {\n    archivedDate: bigint,\n    audios: bigint[],\n    documents: bigint[],\n    domainsManaged?: string[],\n    email: string,\n    entities: bigint[],\n    fullName: string,\n    // TODO(@anthony) should be renamed to Groups\n    group: { [groupID: string]: Role },\n    ID: bigint,\n    logins?: { [addressIP: string]: bigint[] } ///< Object of IP -> array of unix timestamps\n    passwordAssigned?: boolean,\n    plan: bigint,\n    region: RegionAWS|null,\n    sessions: bigint[]\n    storage: number,\n    timeStart: number,             ///< The epoch timestamp in milliseconds when the peer's plan started\n    usageDownloads?: { [epochDay: string] : number },\n    usageUploads?: { [epochDay: string] : number },\n    username: string,\n    verified?: \"0\" | \"1\",\n    videos: bigint[],\n    worlds: bigint[],\n}\n\nexport enum PeerAttribute {\n    ARCHIVED_DATE = \"ArchivedDate\",\n    AUDIOS = \"Audios\",\n    DOCUMENTS = \"Documents\",\n    DOMAINS_MANAGED = \"DomainsManaged\",\n    EMAIL = \"Email\",\n    ENTITIES = \"Entities\",\n    FULL_NAME = \"FullName\",\n    GROUP = \"Group\",\n    LOGINS = \"Logins\",\n    PASSWORD_ASSIGNED = \"PasswordAssigned\",\n    PLAN = \"Plan\",\n    REGION = \"Region\",\n    SESSIONS = \"Sessions\",\n    STORAGE = \"Storage\",\n    TIME_START = \"TimeStart\",\n    USAGE_DOWNLOADS = \"UsageDownloads\",\n    USAGE_UPLOADS = \"UsageUploads\",\n    USERNAME = \"Username\",\n    VERIFIED = \"Verified\",\n    VIDEOS = \"Videos\",\n    WORLDS = \"Worlds\"\n}\n\nexport class EventPeerAccountCreated {\n    static readonly EVENT_PEER_ACCOUNT_CREATED: string = \"peerAccount.created\";\n    newPeerID: bigint;\n}\n", "import React from \"react\";\nimport {NavLink, Route, BrowserRouter as Router, Switch} from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport {SideNav} from \"@root/Frontend/Console/SideNav\";\nimport {Dashboard} from \"@root/Frontend/Console/Views/Dashboard/Dashboard\";\nimport {Management, ManagementWithRouter} from \"@root/Frontend/Console/Views/Management/Management\";\nimport { Users } from \"@root/react-components/src/icons/Users\";\nimport { Home } from \"@root/react-components/src/icons/Home\";\nimport {DataSourceGroups} from \"@root/Frontend/DataSources/DataSourceGroups\";\nimport {lightDark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {DataSourceStorage} from \"@root/Frontend/DataSources/DataSourceStorage\";\nimport {DataSourceWorlds} from \"@root/Frontend/DataSources/DataSourceWorlds\";\nimport i18next from \"i18next\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {Analytics, AnalyticsWithRouter} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {DataSourceSequences} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {DataSourceSteps} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {WindowDimensionsProvider} from \"@root/Frontend/Console/contexts/WindowDimensionsContext\";\nimport {changeLanguage} from \"@utils/utils\";\nimport {DataSourcePlans} from \"@root/Frontend/DataSources/DataSourcePlans\";\nimport {DataSourceVideo} from \"@root/Frontend/DataSources/DataSourceVideo\";\nimport {Dialog} from \"@root/Frontend/Studio/DialogContainer\";\nimport {init} from '@sentry/react';\n// @ts-ignore\nimport SENTRY_DSN from \"../../../SENTRY_DSN.txt\";\n// @ts-ignore\nimport HindSemiBold from \"@root/../ResourcesCommon/Core/Fonts/Hind-SemiBold.ttf\"\n// @ts-ignore\nimport RubikRegular from \"@root/../ResourcesCommon/Core/Fonts/Rubik-Regular.ttf\"\nimport { theme } from \"@root/Frontend/theme\";\nimport { ThemeProvider } from '@mui/material/styles';\nimport {InsightsWithRouter} from \"@root/Frontend/Console/Views/Insights/Insights\";\nimport {Bulb} from \"@root/react-components/src/icons/Bulb\";\nimport {EntitiesWithRouter} from \"@root/Frontend/Console/Views/Entities/Entities\";\nimport {DataSourceEntities} from \"@root/Frontend/DataSources/DataSourceEntities\";\nimport {DataSourceSpeech} from \"@root/Frontend/DataSources/DataSourceSpeech\";\nimport {MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {FactoryEngine} from \"Engine/FactoryEngine\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {Entities} from \"@root/react-components/src/icons/Entities\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\nimport {Box} from \"@mui/material\";\nimport {AppLoginDialog} from \"@root/Frontend/Login/AppLoginDialog\";\nimport {HelperLogin} from \"@root/Frontend/Login/HelperLogin\";\nimport {DataSourceSessions} from \"@root/Frontend/DataSources/DataSourceSessions\";\nimport {DataSourceText} from \"@root/Frontend/DataSources/DataSourceText\";\nimport {Language} from \"@backend/public/studio/WebAssembly.mjs\";\nimport {Authentication} from \"@utils/Authentication\";\nimport {EngineCanvas} from \"@root/Frontend/Studio/Components/EngineCanvas/EngineCanvas\";\nimport {AnnouncementDialog} from \"@root/react-components/Announcements/AnnouncementDialog\";\nimport {DataSourceAnnouncements} from \"@root/Frontend/DataSources/DataSourceAnnouncements\";\nimport {convertI18nextLanguage} from \"@backend/Types/Language\";\n\nconst Wrapper = styled.div`\n    height: 100%;\n    width: 100%;\n    display: flex;\n    justify-content: flex-end;\n    \n    @font-face {\n        font-family: 'hind';\n        font-style: normal;\n        font-weight: 600;\n        font-display: swap;\n        src: url(${HindSemiBold}) format('truetype');\n     }\n\n    @font-face {\n        font-family: 'rubik';\n        font-style: normal;\n        font-weight: 400;\n        font-display: swap;\n        src: url(${RubikRegular}) format('truetype');\n    }\n`;\n\nconst ViewWrapper = styled.div`\n    position: relative;\n    right: 0;\n    box-sizing: border-box;\n    transition: 0.3s all;\n    color: ${lightDark};\n    height: 100%;\n    @media (max-width: 768px) {\n        padding: ${SideNav.HEIGHT_MOBILE}px 12px 0px 12px;\n        width: 100%!important;\n    }\n    & > div {\n        width: 100%;\n        height: 100%;\n        max-width: 1400px;\n        margin: 0 auto;\n    }\n`;\n\n// TODO: Move to react-components\nconst GraphLine = () => <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill={\"currentColor\"} d=\"M64 400C64 408.8 71.16 416 80 416H480C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H80C35.82 480 0 444.2 0 400V64C0 46.33 14.33 32 32 32C49.67 32 64 46.33 64 64V400zM342.6 278.6C330.1 291.1 309.9 291.1 297.4 278.6L240 221.3L150.6 310.6C138.1 323.1 117.9 323.1 105.4 310.6C92.88 298.1 92.88 277.9 105.4 265.4L217.4 153.4C229.9 140.9 250.1 140.9 262.6 153.4L320 210.7L425.4 105.4C437.9 92.88 458.1 92.88 470.6 105.4C483.1 117.9 483.1 138.1 470.6 150.6L342.6 278.6z\"/></svg>\nexport const GraphBars = () => <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><path fill={\"currentColor\"} d=\"M160 80C160 53.49 181.5 32 208 32H240C266.5 32 288 53.49 288 80V432C288 458.5 266.5 480 240 480H208C181.5 480 160 458.5 160 432V80zM0 272C0 245.5 21.49 224 48 224H80C106.5 224 128 245.5 128 272V432C128 458.5 106.5 480 80 480H48C21.49 480 0 458.5 0 432V272zM400 96C426.5 96 448 117.5 448 144V432C448 458.5 426.5 480 400 480H368C341.5 480 320 458.5 320 432V144C320 117.5 341.5 96 368 96H400z\"/></svg>\n// TODO: react-component\nexport const SequencesIcon = () => <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><g transform=\"translate(0,512) scale(0.1,-0.1)\" fill={\"currentColor\"}><path d=\"M3995 4690 l-140 -140 130 -130 130 -130 -398 0 -397 0 0 -200 0 -200 397 0 398 0 -130 -130 -130 -130 143 -143 142 -142 370 370 370 370 -373 373 -372 372 -140 -140z\"/><path d=\"M2443 4566 c-219 -53 -383 -261 -383 -486 0 -270 230 -500 500 -500 270 0 500 230 500 500 0 274 -233 503 -508 499 -31 0 -80 -6 -109 -13z\"/><path d=\"M1475 4279 c-265 -38 -531 -206 -684 -432 -53 -79 -119 -227 -143 -323 -33 -133 -31 -351 4 -485 48 -177 133 -325 263 -454 128 -128 272 -212 448 -261 75 -21 122 -27 255 -31 l162 -6 0 202 0 201 -113 0 c-207 0 -338 51 -467 180 -87 86 -131 163 -160 276 -36 141 -18 295 52 427 19 36 64 94 108 138 127 128 261 178 473 179 l107 0 0 200 0 200 -122 -1 c-68 -1 -150 -5 -183 -10z\"/><path d=\"M2443 2966 c-219 -53 -383 -261 -383 -486 0 -270 230 -500 500 -500 270 0 500 230 500 500 0 274 -233 503 -508 499 -31 0 -80 -6 -109 -13z\"/><path d=\"M3320 2491 l0 -201 108 0 c210 -1 343 -51 473 -180 153 -153 212 -359 159 -564 -29 -113 -73 -190 -160 -276 -129 -129 -260 -180 -467 -180 l-113 0 0 -201 0 -202 163 6 c176 5 257 22 393 78 220 92 431 305 525 531 56 135 73 227 73 388 0 182 -22 279 -99 435 -103 211 -251 358 -460 460 -152 74 -243 95 -437 102 l-158 6 0 -202z\"/><path d=\"M2443 1366 c-219 -53 -383 -261 -383 -486 0 -270 230 -500 500 -500 230 0 442 172 489 398 35 166 -15 330 -138 453 -126 126 -299 176 -468 135z\"/><path d=\"M620 890 l0 -200 580 0 580 0 0 200 0 200 -580 0 -580 0 0 -200z\"/></g></svg>\n// TODO: react-component\nexport const StepsIcon = () => <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><g fill={\"currentColor\"} transform=\"translate(0,512) scale(0.1,-0.1)\"><path d=\"M3701 5102 c-43 -21 -70 -57 -81 -108 -5 -21 -10 -272 -10 -556 l0 -517 -542 -3 c-522 -3 -544 -4 -577 -23 -19 -11 -43 -33 -55 -48 -21 -28 -21 -37 -24 -582 l-2 -555 -555 -2 c-545 -3 -554 -3 -582 -24 -15 -12 -37 -36 -48 -55 -19 -33 -20 -55 -23 -576 l-3 -542 -542 -3 c-521 -3 -543 -4 -576 -23 -19 -11 -43 -33 -55 -48 -21 -28 -21 -36 -24 -673 -2 -631 -2 -645 18 -684 13 -26 34 -47 60 -60 39 -20 53 -20 2480 -20 2427 0 2441 0 2480 20 26 13 47 34 60 60 20 39 20 53 20 2480 0 2427 0 2441 -20 2480 -13 26 -34 47 -60 60 -38 19 -58 20 -672 20 -583 0 -636 -1 -667 -18z\"/></g></svg>\n\ntype State = {\n    language: Language,\n    currentPeerID: bigint,\n    sideNavOpened: boolean,\n}\n\nexport class AppConsole extends React.Component {\n    state: State = {\n        language: convertI18nextLanguage(i18next.language),\n        currentPeerID: BigInt(0),\n        sideNavOpened: window.localStorage.getItem(\"sidenav-opened\") === \"true\",\n    }\n\n    private static app: AppConsole;\n    private engine: MainModule;\n    private readonly authentication: Authentication = new Authentication();\n    private readonly helperLogin: HelperLogin = new HelperLogin(this.authentication);\n\n    private appLoginDialogRef: React.RefObject<AppLoginDialog> = React.createRef();\n    private announcementDialogRef: React.RefObject<AnnouncementDialog> = React.createRef<AnnouncementDialog>();\n\n    // TODO: there should be a function that return this.state.currentPeerID instead\n    public readonly dataSourcePlans: DataSourcePlans = new DataSourcePlans(this.authentication);\n    public readonly dataSourcePeers: DataSourcePeers = new DataSourcePeers(this.authentication);\n    public readonly dataSourceGroups: DataSourceGroups = new DataSourceGroups(this.authentication);\n    public readonly dataSourceWorlds: DataSourceWorlds = new DataSourceWorlds(this.authentication);\n    public readonly dataSourceSequences: DataSourceSequences = new DataSourceSequences(this.authentication);\n    public readonly dataSourceSessions: DataSourceSessions = new DataSourceSessions(this.authentication);\n    public readonly dataSourceSpeech: DataSourceSpeech = new DataSourceSpeech(this.authentication);\n    public readonly dataSourceSteps: DataSourceSteps =\n        new DataSourceSteps(this.authentication, this.dataSourceSequences);\n    public readonly dataSourceStorage: DataSourceStorage = new DataSourceStorage(this.authentication);\n    public readonly dataSourceVideo: DataSourceVideo =\n        new DataSourceVideo(this.authentication, this.dataSourceStorage);\n    public readonly dataSourceAttemptLogs: DataSourceAttemptLogs =\n        new DataSourceAttemptLogs(this.authentication, this.dataSourceSequences);\n    public readonly dataSourceEntities: DataSourceEntities = new DataSourceEntities(this.authentication);\n    public readonly dataSourceText: DataSourceText = new DataSourceText(this.authentication);\n    public readonly dataSourceAnnouncements: DataSourceAnnouncements = new DataSourceAnnouncements(this.authentication);\n\n   // eslint-disable-next-line constructor-super\n    constructor(props: object) {\n        if (AppConsole.app)  // eslint-disable-next-line no-constructor-return\n            return AppConsole.app;\n\n        super(props);\n        // Initialize Sentry\n        init({\n            dsn: (SENTRY_DSN as string).replaceAll('\"', \"\"),\n            // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring\n            tracesSampleRate: 0,\n        });\n\n        AppConsole.app = this;\n    }\n\n    // startup function\n    private async initialize(): Promise<void> {\n        // create and initialize engine\n        this.engine = await FactoryEngine.create(null);\n        this.engine.FacadeWeb.setWebSocketEnabled(false);\n        AdapterUtils.initialize(this.engine);\n        await FactoryEngine.initialize(this.engine);\n        this.authentication.setEngine(this.engine);\n    }\n\n    override async componentDidMount() {\n        await this.initialize();\n        await this.updateToken(await this.authentication.getToken());\n        await this.handleLangChange(this.engine.getLanguage());\n    }\n\n    async componentDidUpdate(_: Record<string, never>, prevState: State) {\n        // update the language when the user logs in\n        if (!prevState.currentPeerID && this.state.currentPeerID)\n            this.announcementDialogRef.current?.handleDialogAnnouncements();\n    }\n\n    public static getInstance(): AppConsole {\n        return AppConsole.app ?? new AppConsole({});\n    }\n\n    public getEngine(): MainModule { return this.engine; }\n\n    public get currentPeerID(): bigint { return this.state.currentPeerID; }\n\n    public closeSideNav() {\n        if (!this.state.sideNavOpened)\n            return;\n        window.localStorage.setItem(\"sidenav-opened\", false.toString());\n        this.setState({ sideNavOpened: false });\n    }\n\n    public async updateToken(token: string) {\n        this.engine.setCloudToken(token);\n\n        const currentPeerID: bigint = await this.helperLogin.retrievePeerForCurrentToken(token);\n        if (currentPeerID) {\n            // If token is valid, force update token in WebAssembly OPFS\n            this.engine.Core.getInstance().getFacadeOS().setLocalKeyValuePair(Authentication.TOKEN_KEY, token);\n            // make sure the current private peer attributes are fetch\n            this.dataSourcePeers.invalidatePeer(currentPeerID);\n            await this.dataSourcePeers.getPeer(currentPeerID);\n        }\n\n        this.setState({ currentPeerID }, () => {\n            if (!this.state.currentPeerID)\n                this.appLoginDialogRef.current?.setLoginDialogOpened(true);\n        });\n    }\n\n    private async handleLangChange(language: Language) {\n        await changeLanguage(language);\n        this.engine.saveLanguage(language);\n        this.setState({ language });\n    }\n\n    render() {\n        return (\n            <>\n                <Box style={{ display: \"none\" }}>\n                    <canvas id={EngineCanvas.CANVAS_ID} />\n                    <div id={EngineCanvas.CONTROLS_ID} />\n                </Box>\n\n                <AppLoginDialog\n                    ref={this.appLoginDialogRef}\n                    getAuthentication={() => this.authentication}\n                    language={this.state.language}\n                    setLanguage={async (language: Language) => await this.handleLangChange(language)}\n                    onTokenUpdated={async (token: string) => await this.updateToken(token)}\n                />\n\n                {this.state.currentPeerID &&\n                    <ThemeProvider theme={theme}>\n                        <WindowDimensionsProvider sideNavOpened={this.state.sideNavOpened}>\n                            <Wrapper>\n                                <Router>\n                                    <SideNav\n                                        open={this.state.sideNavOpened}\n                                        onOpen={() => {\n                                            window.localStorage.setItem(\"sidenav-opened\", true.toString());\n                                            this.setState({sideNavOpened: true});\n                                        }}\n                                        onClose={() => this.closeSideNav()}\n                                        handleLangChange={(language: Language) => this.handleLangChange(language)}>\n                                        <NavLink exact activeClassName={\"active\"} to={\"/Console\"}>\n                                            <Home/><span>{i18next.t(\"Dashboard\")}</span></NavLink>\n                                        <NavLink activeClassName={\"active\"} to={Management.BASE_PATH}>\n                                            <Users/><span>{i18next.t(\"Management\")}</span></NavLink>\n                                        <NavLink activeClassName={\"active\"} to={\"/Console/Entities\"}>\n                                            <Entities color={white}/><span>{i18next.t(\"Entities\")}</span></NavLink>\n                                        <NavLink activeClassName={\"active\"} to={Analytics.BASE_PATH}>\n                                            <GraphLine/><span>{i18next.t(\"Analytics\")}</span></NavLink>\n                                        <NavLink activeClassName={\"active\"} to={\"/Console/Insights\"}>\n                                            <Bulb/><span>{i18next.t(\"Insights\")}</span></NavLink>\n                                    </SideNav>\n                                    <ViewWrapper style={{\n                                        width: `calc(100% - ${this.state.sideNavOpened ?\n                                            SideNav.WIDTH_OPEN : SideNav.WIDTH_CLOSED}px)`\n                                    }}>\n                                        <div>\n                                            <Switch>\n                                                <Route exact path=\"/Console\"><Dashboard/></Route>\n                                                <Route path=\"/Console/Management*\"><ManagementWithRouter/></Route>\n                                                <Route path=\"/Console/Analytics*\"><AnalyticsWithRouter/></Route>\n                                                <Route path=\"/Console/Insights*\"><InsightsWithRouter/></Route>\n                                                <Route path=\"/Console/Entities*\"><EntitiesWithRouter/></Route>\n                                            </Switch>\n                                        </div>\n                                    </ViewWrapper>\n                                </Router>\n                                <AnnouncementDialog\n                                    ref={this.announcementDialogRef}\n                                    getApp={(): AppConsole => AppConsole.getInstance()}/>\n                                <Box id=\"root-dialog\" ref={Dialog.appDialogRef}></Box>\n                                <Prompt/>\n                            </Wrapper>\n                        </WindowDimensionsProvider>\n                    </ThemeProvider>\n                }\n            </>\n        );\n    }\n}\n", "import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n  return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n  var pathname = path || '/';\n  var search = '';\n  var hash = '';\n  var hashIndex = pathname.indexOf('#');\n\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n\n  if (searchIndex !== -1) {\n    search = pathname.substr(searchIndex);\n    pathname = pathname.substr(0, searchIndex);\n  }\n\n  return {\n    pathname: pathname,\n    search: search === '?' ? '' : search,\n    hash: hash === '#' ? '' : hash\n  };\n}\nfunction createPath(location) {\n  var pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n  var path = pathname || '/';\n  if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n  return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n  var location;\n\n  if (typeof path === 'string') {\n    // Two-arg form: push(path, state)\n    location = parsePath(path);\n    location.state = state;\n  } else {\n    // One-arg form: push(location)\n    location = _extends({}, path);\n    if (location.pathname === undefined) location.pathname = '';\n\n    if (location.search) {\n      if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n    } else {\n      location.search = '';\n    }\n\n    if (location.hash) {\n      if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n    } else {\n      location.hash = '';\n    }\n\n    if (state !== undefined && location.state === undefined) location.state = state;\n  }\n\n  try {\n    location.pathname = decodeURI(location.pathname);\n  } catch (e) {\n    if (e instanceof URIError) {\n      throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n    } else {\n      throw e;\n    }\n  }\n\n  if (key) location.key = key;\n\n  if (currentLocation) {\n    // Resolve incomplete/relative pathname relative to current location.\n    if (!location.pathname) {\n      location.pathname = currentLocation.pathname;\n    } else if (location.pathname.charAt(0) !== '/') {\n      location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n    }\n  } else {\n    // When there is no prior location and pathname is empty, set it to /\n    if (!location.pathname) {\n      location.pathname = '/';\n    }\n  }\n\n  return location;\n}\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n  var prompt = null;\n\n  function setPrompt(nextPrompt) {\n    process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n    prompt = nextPrompt;\n    return function () {\n      if (prompt === nextPrompt) prompt = null;\n    };\n  }\n\n  function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n    // TODO: If another transition starts while we're still confirming\n    // the previous one, we may end up in a weird state. Figure out the\n    // best way to handle this.\n    if (prompt != null) {\n      var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n      if (typeof result === 'string') {\n        if (typeof getUserConfirmation === 'function') {\n          getUserConfirmation(result, callback);\n        } else {\n          process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n          callback(true);\n        }\n      } else {\n        // Return false from a transition hook to cancel the transition.\n        callback(result !== false);\n      }\n    } else {\n      callback(true);\n    }\n  }\n\n  var listeners = [];\n\n  function appendListener(fn) {\n    var isActive = true;\n\n    function listener() {\n      if (isActive) fn.apply(void 0, arguments);\n    }\n\n    listeners.push(listener);\n    return function () {\n      isActive = false;\n      listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function notifyListeners() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    listeners.forEach(function (listener) {\n      return listener.apply(void 0, args);\n    });\n  }\n\n  return {\n    setPrompt: setPrompt,\n    confirmTransitionTo: confirmTransitionTo,\n    appendListener: appendListener,\n    notifyListeners: notifyListeners\n  };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n  callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = window.navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n  return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n  try {\n    return window.history.state || {};\n  } catch (e) {\n    // IE 11 sometimes throws when accessing window.history.state\n    // See https://github.com/ReactTraining/history/pull/289\n    return {};\n  }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canUseHistory = supportsHistory();\n  var needsHashChangeListener = !supportsPopStateOnHashChange();\n  var _props = props,\n      _props$forceRefresh = _props.forceRefresh,\n      forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n  function getDOMLocation(historyState) {\n    var _ref = historyState || {},\n        key = _ref.key,\n        state = _ref.state;\n\n    var _window$location = window.location,\n        pathname = _window$location.pathname,\n        search = _window$location.search,\n        hash = _window$location.hash;\n    var path = pathname + search + hash;\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path, state, key);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function handlePopState(event) {\n    // Ignore extraneous popstate events in WebKit.\n    if (isExtraneousPopstateEvent(event)) return;\n    handlePop(getDOMLocation(event.state));\n  }\n\n  function handleHashChange() {\n    handlePop(getDOMLocation(getHistoryState()));\n  }\n\n  var forceNextPop = false;\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of keys we've seen in sessionStorage.\n    // Instead, we just default to 0 for keys we don't know.\n\n    var toIndex = allKeys.indexOf(toLocation.key);\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allKeys.indexOf(fromLocation.key);\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  }\n\n  var initialLocation = getDOMLocation(getHistoryState());\n  var allKeys = [initialLocation.key]; // Public interface\n\n  function createHref(location) {\n    return basename + createPath(location);\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.pushState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.href = href;\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          var nextKeys = allKeys.slice(0, prevIndex + 1);\n          nextKeys.push(location.key);\n          allKeys = nextKeys;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n        window.location.href = href;\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.replaceState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.replace(href);\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n        window.location.replace(href);\n      }\n    });\n  }\n\n  function go(n) {\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n  hashbang: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n    },\n    decodePath: function decodePath(path) {\n      return path.charAt(0) === '!' ? path.substr(1) : path;\n    }\n  },\n  noslash: {\n    encodePath: stripLeadingSlash,\n    decodePath: addLeadingSlash\n  },\n  slash: {\n    encodePath: addLeadingSlash,\n    decodePath: addLeadingSlash\n  }\n};\n\nfunction stripHash(url) {\n  var hashIndex = url.indexOf('#');\n  return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var hashIndex = href.indexOf('#');\n  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n  window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n  var _props = props,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$hashType = _props.hashType,\n      hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n  var _HashPathCoders$hashT = HashPathCoders[hashType],\n      encodePath = _HashPathCoders$hashT.encodePath,\n      decodePath = _HashPathCoders$hashT.decodePath;\n\n  function getDOMLocation() {\n    var path = decodePath(getHashPath());\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  var forceNextPop = false;\n  var ignorePath = null;\n\n  function locationsAreEqual$$1(a, b) {\n    return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n  }\n\n  function handleHashChange() {\n    var path = getHashPath();\n    var encodedPath = encodePath(path);\n\n    if (path !== encodedPath) {\n      // Ensure we always have a properly-encoded hash.\n      replaceHashPath(encodedPath);\n    } else {\n      var location = getDOMLocation();\n      var prevLocation = history.location;\n      if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n      if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n      ignorePath = null;\n      handlePop(location);\n    }\n  }\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of paths we've seen in sessionStorage.\n    // Instead, we just default to 0 for paths we don't know.\n\n    var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  } // Ensure the hash is encoded properly before doing anything else.\n\n\n  var path = getHashPath();\n  var encodedPath = encodePath(path);\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n  var initialLocation = getDOMLocation();\n  var allPaths = [createPath(initialLocation)]; // Public interface\n\n  function createHref(location) {\n    var baseTag = document.querySelector('base');\n    var href = '';\n\n    if (baseTag && baseTag.getAttribute('href')) {\n      href = stripHash(window.location.href);\n    }\n\n    return href + '#' + encodePath(basename + createPath(location));\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a PUSH, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        pushHashPath(encodedPath);\n        var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n        var nextPaths = allPaths.slice(0, prevIndex + 1);\n        nextPaths.push(path);\n        allPaths = nextPaths;\n        setState({\n          action: action,\n          location: location\n        });\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n        setState();\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        replaceHashPath(encodedPath);\n      }\n\n      var prevIndex = allPaths.indexOf(createPath(history.location));\n      if (prevIndex !== -1) allPaths[prevIndex] = path;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(HashChangeEvent$1, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(HashChangeEvent$1, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n  return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _props = props,\n      getUserConfirmation = _props.getUserConfirmation,\n      _props$initialEntries = _props.initialEntries,\n      initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n      _props$initialIndex = _props.initialIndex,\n      initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = history.entries.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var index = clamp(initialIndex, 0, initialEntries.length - 1);\n  var entries = initialEntries.map(function (entry) {\n    return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n  }); // Public interface\n\n  var createHref = createPath;\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var prevIndex = history.index;\n      var nextIndex = prevIndex + 1;\n      var nextEntries = history.entries.slice(0);\n\n      if (nextEntries.length > nextIndex) {\n        nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n      } else {\n        nextEntries.push(location);\n      }\n\n      setState({\n        action: action,\n        location: location,\n        index: nextIndex,\n        entries: nextEntries\n      });\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      history.entries[history.index] = location;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n    var action = 'POP';\n    var location = history.entries[nextIndex];\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (ok) {\n        setState({\n          action: action,\n          location: location,\n          index: nextIndex\n        });\n      } else {\n        // Mimic the behavior of DOM histories by\n        // causing a render after a cancelled POP.\n        setState();\n      }\n    });\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function canGo(n) {\n    var nextIndex = history.index + n;\n    return nextIndex >= 0 && nextIndex < history.entries.length;\n  }\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    return transitionManager.setPrompt(prompt);\n  }\n\n  function listen(listener) {\n    return transitionManager.appendListener(listener);\n  }\n\n  var history = {\n    length: entries.length,\n    action: 'POP',\n    location: entries[index],\n    index: index,\n    entries: entries,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    canGo: canGo,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n", "function isAbsolute(pathname) {\n  return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n    list[i] = list[k];\n  }\n\n  list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n  if (from === undefined) from = '';\n\n  var toParts = (to && to.split('/')) || [];\n  var fromParts = (from && from.split('/')) || [];\n\n  var isToAbs = to && isAbsolute(to);\n  var isFromAbs = from && isAbsolute(from);\n  var mustEndAbs = isToAbs || isFromAbs;\n\n  if (to && isAbsolute(to)) {\n    // to is absolute\n    fromParts = toParts;\n  } else if (toParts.length) {\n    // to is relative, drop the filename\n    fromParts.pop();\n    fromParts = fromParts.concat(toParts);\n  }\n\n  if (!fromParts.length) return '/';\n\n  var hasTrailingSlash;\n  if (fromParts.length) {\n    var last = fromParts[fromParts.length - 1];\n    hasTrailingSlash = last === '.' || last === '..' || last === '';\n  } else {\n    hasTrailingSlash = false;\n  }\n\n  var up = 0;\n  for (var i = fromParts.length; i >= 0; i--) {\n    var part = fromParts[i];\n\n    if (part === '.') {\n      spliceOne(fromParts, i);\n    } else if (part === '..') {\n      spliceOne(fromParts, i);\n      up++;\n    } else if (up) {\n      spliceOne(fromParts, i);\n      up--;\n    }\n  }\n\n  if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n  if (\n    mustEndAbs &&\n    fromParts[0] !== '' &&\n    (!fromParts[0] || !isAbsolute(fromParts[0]))\n  )\n    fromParts.unshift('');\n\n  var result = fromParts.join('/');\n\n  if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n  return result;\n}\n\nexport default resolvePathname;\n", "function valueOf(obj) {\n  return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n  // Test for strict equality first.\n  if (a === b) return true;\n\n  // Otherwise, if either of them == null they are not equal.\n  if (a == null || b == null) return false;\n\n  if (Array.isArray(a)) {\n    return (\n      Array.isArray(b) &&\n      a.length === b.length &&\n      a.every(function(item, index) {\n        return valueEqual(item, b[index]);\n      })\n    );\n  }\n\n  if (typeof a === 'object' || typeof b === 'object') {\n    var aValue = valueOf(a);\n    var bValue = valueOf(b);\n\n    if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n    return Object.keys(Object.assign({}, a, b)).every(function(key) {\n      return valueEqual(a[key], b[key]);\n    });\n  }\n\n  return false;\n}\n\nexport default valueEqual;\n", "var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n  if (!isProduction) {\n    if (condition) {\n      return;\n    }\n\n    var text = \"Warning: \" + message;\n\n    if (typeof console !== 'undefined') {\n      console.warn(text);\n    }\n\n    try {\n      throw Error(text);\n    } catch (x) {}\n  }\n}\n\nexport default warning;\n", "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", "// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n  typeof globalThis !== \"undefined\" // 'global proper'\n    ? // eslint-disable-next-line no-undef\n      globalThis\n    : typeof window !== \"undefined\"\n    ? window // Browser\n    : typeof global !== \"undefined\"\n    ? global // node.js\n    : {};\n\nfunction getUniqueId() {\n  let key = \"__global_unique_id__\";\n  return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    // eslint-disable-next-line no-self-compare\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  let handlers = [];\n  return {\n    on(handler) {\n      handlers.push(handler);\n    },\n\n    off(handler) {\n      handlers = handlers.filter(h => h !== handler);\n    },\n\n    get() {\n      return value;\n    },\n\n    set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(handler => handler(value, changedBits));\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n  const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n  class Provider extends React.Component {\n    emitter = createEventEmitter(this.props.value);\n\n    static childContextTypes = {\n      [contextProp]: PropTypes.object.isRequired\n    };\n\n    getChildContext() {\n      return {\n        [contextProp]: this.emitter\n      };\n    }\n\n    componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        let oldValue = this.props.value;\n        let newValue = nextProps.value;\n        let changedBits;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0; // No change\n        } else {\n          changedBits =\n            typeof calculateChangedBits === \"function\"\n              ? calculateChangedBits(oldValue, newValue)\n              : MAX_SIGNED_31_BIT_INT;\n          if (process.env.NODE_ENV !== \"production\") {\n            warning(\n              (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n              \"calculateChangedBits: Expected the return value to be a \" +\n                \"31-bit integer. Instead received: \" +\n                changedBits\n            );\n          }\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    }\n\n    render() {\n      return this.props.children;\n    }\n  }\n\n  class Consumer extends React.Component {\n    static contextTypes = {\n      [contextProp]: PropTypes.object\n    };\n\n    observedBits;\n\n    state = {\n      value: this.getValue()\n    };\n\n    componentWillReceiveProps(nextProps) {\n      let { observedBits } = nextProps;\n      this.observedBits =\n        observedBits === undefined || observedBits === null\n          ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n          : observedBits;\n    }\n\n    componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n      let { observedBits } = this.props;\n      this.observedBits =\n        observedBits === undefined || observedBits === null\n          ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n          : observedBits;\n    }\n\n    componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    }\n\n    getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    }\n\n    onUpdate = (newValue, changedBits) => {\n      const observedBits = this.observedBits | 0;\n      if ((observedBits & changedBits) !== 0) {\n        this.setState({ value: this.getValue() });\n      }\n    };\n\n    render() {\n      return onlyChild(this.props.children)(this.state.value);\n    }\n  }\n\n  return {\n    Provider,\n    Consumer\n  };\n}\n", "// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n", "// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n  const context = createContext();\n  context.displayName = name;\n\n  return context;\n};\n\nexport default createNamedContext;\n", "import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n", "import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n  static computeRootMatch(pathname) {\n    return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n  }\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      location: props.history.location\n    };\n\n    // This is a bit of a hack. We have to start listening for location\n    // changes here in the constructor in case there are any <Redirect>s\n    // on the initial render. If there are, they will replace/push when\n    // they mount and since cDM fires in children before parents, we may\n    // get a new location before the <Router> is mounted.\n    this._isMounted = false;\n    this._pendingLocation = null;\n\n    if (!props.staticContext) {\n      this.unlisten = props.history.listen(location => {\n        this._pendingLocation = location;\n      });\n    }\n  }\n\n  componentDidMount() {\n    this._isMounted = true;\n\n    if (this.unlisten) {\n      // Any pre-mount location changes have been captured at\n      // this point, so unregister the listener.\n      this.unlisten();\n    }\n    if (!this.props.staticContext) {\n      this.unlisten = this.props.history.listen(location => {\n        if (this._isMounted) {\n          this.setState({ location });\n        }\n      });\n    }\n    if (this._pendingLocation) {\n      this.setState({ location: this._pendingLocation });\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.unlisten) {\n      this.unlisten();\n      this._isMounted = false;\n      this._pendingLocation = null;\n    }\n  }\n\n  render() {\n    return (\n      <RouterContext.Provider\n        value={{\n          history: this.props.history,\n          location: this.state.location,\n          match: Router.computeRootMatch(this.state.location.pathname),\n          staticContext: this.props.staticContext\n        }}\n      >\n        <HistoryContext.Provider\n          children={this.props.children || null}\n          value={this.props.history}\n        />\n      </RouterContext.Provider>\n    );\n  }\n}\n\nif (__DEV__) {\n  Router.propTypes = {\n    children: PropTypes.node,\n    history: PropTypes.object.isRequired,\n    staticContext: PropTypes.object\n  };\n\n  Router.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      prevProps.history === this.props.history,\n      \"You cannot change <Router history>\"\n    );\n  };\n}\n\nexport default Router;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  MemoryRouter.propTypes = {\n    initialEntries: PropTypes.array,\n    initialIndex: PropTypes.number,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number,\n    children: PropTypes.node\n  };\n\n  MemoryRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n    );\n  };\n}\n\nexport default MemoryRouter;\n", "import React from \"react\";\n\nclass Lifecycle extends React.Component {\n  componentDidMount() {\n    if (this.props.onMount) this.props.onMount.call(this, this);\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n  }\n\n  componentWillUnmount() {\n    if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n  }\n\n  render() {\n    return null;\n  }\n}\n\nexport default Lifecycle;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\nfunction Prompt({ message, when = true }) {\n  return (\n    <RouterContext.Consumer>\n      {context => {\n        invariant(context, \"You should not use <Prompt> outside a <Router>\");\n\n        if (!when || context.staticContext) return null;\n\n        const method = context.history.block;\n\n        return (\n          <Lifecycle\n            onMount={self => {\n              self.release = method(message);\n            }}\n            onUpdate={(self, prevProps) => {\n              if (prevProps.message !== message) {\n                self.release();\n                self.release = method(message);\n              }\n            }}\n            onUnmount={self => {\n              self.release();\n            }}\n            message={message}\n          />\n        );\n      }}\n    </RouterContext.Consumer>\n  );\n}\n\nif (__DEV__) {\n  const messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n\n  Prompt.propTypes = {\n    when: PropTypes.bool,\n    message: messageType.isRequired\n  };\n}\n\nexport default Prompt;\n", "import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n  if (cache[path]) return cache[path];\n\n  const generator = pathToRegexp.compile(path);\n\n  if (cacheCount < cacheLimit) {\n    cache[path] = generator;\n    cacheCount++;\n  }\n\n  return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n  return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n  return (\n    <RouterContext.Consumer>\n      {context => {\n        invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n        const { history, staticContext } = context;\n\n        const method = push ? history.push : history.replace;\n        const location = createLocation(\n          computedMatch\n            ? typeof to === \"string\"\n              ? generatePath(to, computedMatch.params)\n              : {\n                  ...to,\n                  pathname: generatePath(to.pathname, computedMatch.params)\n                }\n            : to\n        );\n\n        // When rendering in a static context,\n        // set the new location immediately.\n        if (staticContext) {\n          method(location);\n          return null;\n        }\n\n        return (\n          <Lifecycle\n            onMount={() => {\n              method(location);\n            }}\n            onUpdate={(self, prevProps) => {\n              const prevLocation = createLocation(prevProps.to);\n              if (\n                !locationsAreEqual(prevLocation, {\n                  ...location,\n                  key: prevLocation.key\n                })\n              ) {\n                method(location);\n              }\n            }}\n            to={to}\n          />\n        );\n      }}\n    </RouterContext.Consumer>\n  );\n}\n\nif (__DEV__) {\n  Redirect.propTypes = {\n    push: PropTypes.bool,\n    from: PropTypes.string,\n    to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n  };\n}\n\nexport default Redirect;\n", "import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n  const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n  const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n  if (pathCache[path]) return pathCache[path];\n\n  const keys = [];\n  const regexp = pathToRegexp(path, keys, options);\n  const result = { regexp, keys };\n\n  if (cacheCount < cacheLimit) {\n    pathCache[path] = result;\n    cacheCount++;\n  }\n\n  return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n  if (typeof options === \"string\" || Array.isArray(options)) {\n    options = { path: options };\n  }\n\n  const { path, exact = false, strict = false, sensitive = false } = options;\n\n  const paths = [].concat(path);\n\n  return paths.reduce((matched, path) => {\n    if (!path && path !== \"\") return null;\n    if (matched) return matched;\n\n    const { regexp, keys } = compilePath(path, {\n      end: exact,\n      strict,\n      sensitive\n    });\n    const match = regexp.exec(pathname);\n\n    if (!match) return null;\n\n    const [url, ...values] = match;\n    const isExact = pathname === url;\n\n    if (exact && !isExact) return null;\n\n    return {\n      path, // the path used to match\n      url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n      isExact, // whether or not we matched exactly\n      params: keys.reduce((memo, key, index) => {\n        memo[key.name] = values[index];\n        return memo;\n      }, {})\n    };\n  }, null);\n}\n\nexport default matchPath;\n", "import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n  return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n  const value = children(props);\n\n  warning(\n    value !== undefined,\n    \"You returned `undefined` from the `children` function of \" +\n      `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n      \"should have returned a React element or `null`\"\n  );\n\n  return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n  render() {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Route> outside a <Router>\");\n\n          const location = this.props.location || context.location;\n          const match = this.props.computedMatch\n            ? this.props.computedMatch // <Switch> already computed the match for us\n            : this.props.path\n            ? matchPath(location.pathname, this.props)\n            : context.match;\n\n          const props = { ...context, location, match };\n\n          let { children, component, render } = this.props;\n\n          // Preact uses an empty array as children by\n          // default, so use null if that's the case.\n          if (Array.isArray(children) && isEmptyChildren(children)) {\n            children = null;\n          }\n\n          return (\n            <RouterContext.Provider value={props}>\n              {props.match\n                ? children\n                  ? typeof children === \"function\"\n                    ? __DEV__\n                      ? evalChildrenDev(children, props, this.props.path)\n                      : children(props)\n                    : children\n                  : component\n                  ? React.createElement(component, props)\n                  : render\n                  ? render(props)\n                  : null\n                : typeof children === \"function\"\n                ? __DEV__\n                  ? evalChildrenDev(children, props, this.props.path)\n                  : children(props)\n                : null}\n            </RouterContext.Provider>\n          );\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n}\n\nif (__DEV__) {\n  Route.propTypes = {\n    children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n    component: (props, propName) => {\n      if (props[propName] && !isValidElementType(props[propName])) {\n        return new Error(\n          `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n        );\n      }\n    },\n    exact: PropTypes.bool,\n    location: PropTypes.object,\n    path: PropTypes.oneOfType([\n      PropTypes.string,\n      PropTypes.arrayOf(PropTypes.string)\n    ]),\n    render: PropTypes.func,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool\n  };\n\n  Route.prototype.componentDidMount = function() {\n    warning(\n      !(\n        this.props.children &&\n        !isEmptyChildren(this.props.children) &&\n        this.props.component\n      ),\n      \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n    );\n\n    warning(\n      !(\n        this.props.children &&\n        !isEmptyChildren(this.props.children) &&\n        this.props.render\n      ),\n      \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n    );\n\n    warning(\n      !(this.props.component && this.props.render),\n      \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n    );\n  };\n\n  Route.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      !(this.props.location && !prevProps.location),\n      '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n    );\n\n    warning(\n      !(!this.props.location && prevProps.location),\n      '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n    );\n  };\n}\n\nexport default Route;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n  if (!basename) return location;\n\n  return {\n    ...location,\n    pathname: addLeadingSlash(basename) + location.pathname\n  };\n}\n\nfunction stripBasename(basename, location) {\n  if (!basename) return location;\n\n  const base = addLeadingSlash(basename);\n\n  if (location.pathname.indexOf(base) !== 0) return location;\n\n  return {\n    ...location,\n    pathname: location.pathname.substr(base.length)\n  };\n}\n\nfunction createURL(location) {\n  return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n  return () => {\n    invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n  };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n  navigateTo(location, action) {\n    const { basename = \"\", context = {} } = this.props;\n    context.action = action;\n    context.location = addBasename(basename, createLocation(location));\n    context.url = createURL(context.location);\n  }\n\n  handlePush = location => this.navigateTo(location, \"PUSH\");\n  handleReplace = location => this.navigateTo(location, \"REPLACE\");\n  handleListen = () => noop;\n  handleBlock = () => noop;\n\n  render() {\n    const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n    const history = {\n      createHref: path => addLeadingSlash(basename + createURL(path)),\n      action: \"POP\",\n      location: stripBasename(basename, createLocation(location)),\n      push: this.handlePush,\n      replace: this.handleReplace,\n      go: staticHandler(\"go\"),\n      goBack: staticHandler(\"goBack\"),\n      goForward: staticHandler(\"goForward\"),\n      listen: this.handleListen,\n      block: this.handleBlock\n    };\n\n    return <Router {...rest} history={history} staticContext={context} />;\n  }\n}\n\nif (__DEV__) {\n  StaticRouter.propTypes = {\n    basename: PropTypes.string,\n    context: PropTypes.object,\n    location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n  };\n\n  StaticRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n    );\n  };\n}\n\nexport default StaticRouter;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n  render() {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n          const location = this.props.location || context.location;\n\n          let element, match;\n\n          // We use React.Children.forEach instead of React.Children.toArray().find()\n          // here because toArray adds keys to all child elements and we do not want\n          // to trigger an unmount/remount for two <Route>s that render the same\n          // component at different URLs.\n          React.Children.forEach(this.props.children, child => {\n            if (match == null && React.isValidElement(child)) {\n              element = child;\n\n              const path = child.props.path || child.props.from;\n\n              match = path\n                ? matchPath(location.pathname, { ...child.props, path })\n                : context.match;\n            }\n          });\n\n          return match\n            ? React.cloneElement(element, { location, computedMatch: match })\n            : null;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n}\n\nif (__DEV__) {\n  Switch.propTypes = {\n    children: PropTypes.node,\n    location: PropTypes.object\n  };\n\n  Switch.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      !(this.props.location && !prevProps.location),\n      '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n    );\n\n    warning(\n      !(!this.props.location && prevProps.location),\n      '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n    );\n  };\n}\n\nexport default Switch;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n  const displayName = `withRouter(${Component.displayName || Component.name})`;\n  const C = props => {\n    const { wrappedComponentRef, ...remainingProps } = props;\n\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(\n            context,\n            `You should not use <${displayName} /> outside a <Router>`\n          );\n          return (\n            <Component\n              {...remainingProps}\n              {...context}\n              ref={wrappedComponentRef}\n            />\n          );\n        }}\n      </RouterContext.Consumer>\n    );\n  };\n\n  C.displayName = displayName;\n  C.WrappedComponent = Component;\n\n  if (__DEV__) {\n    C.propTypes = {\n      wrappedComponentRef: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.func,\n        PropTypes.object\n      ])\n    };\n  }\n\n  return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n", "import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useHistory()\"\n    );\n  }\n\n  return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useLocation()\"\n    );\n  }\n\n  return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useParams()\"\n    );\n  }\n\n  const match = useContext(RouterContext).match;\n  return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useRouteMatch()\"\n    );\n  }\n\n  const location = useLocation();\n  const match = useContext(RouterContext).match;\n  return path ? matchPath(location.pathname, path) : match;\n}\n", "if (__DEV__) {\n  if (typeof window !== \"undefined\") {\n    const global = window;\n    const key = \"__react_router_build__\";\n    const buildNames = { cjs: \"CommonJS\", esm: \"ES modules\", umd: \"UMD\" };\n\n    if (global[key] && global[key] !== process.env.BUILD_FORMAT) {\n      const initialBuildName = buildNames[global[key]];\n      const secondaryBuildName = buildNames[process.env.BUILD_FORMAT];\n\n      // TODO: Add link to article that explains in detail how to avoid\n      // loading 2 different builds.\n      throw new Error(\n        `You are loading the ${secondaryBuildName} build of React Router ` +\n          `on a page that is already running the ${initialBuildName} ` +\n          `build, so things won't work right.`\n      );\n    }\n\n    global[key] = process.env.BUILD_FORMAT;\n  }\n}\n\nexport { default as MemoryRouter } from \"./MemoryRouter.js\";\nexport { default as Prompt } from \"./Prompt.js\";\nexport { default as Redirect } from \"./Redirect.js\";\nexport { default as Route } from \"./Route.js\";\nexport { default as Router } from \"./Router.js\";\nexport { default as StaticRouter } from \"./StaticRouter.js\";\nexport { default as Switch } from \"./Switch.js\";\nexport { default as generatePath } from \"./generatePath.js\";\nexport { default as matchPath } from \"./matchPath.js\";\nexport { default as withRouter } from \"./withRouter.js\";\n\nexport { default as __HistoryContext } from \"./HistoryContext.js\";\nexport { default as __RouterContext } from \"./RouterContext.js\";\n\nexport { useHistory, useLocation, useParams, useRouteMatch } from \"./hooks.js\";\n", "import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  BrowserRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    forceRefresh: PropTypes.bool,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number\n  };\n\n  BrowserRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n    );\n  };\n}\n\nexport default BrowserRouter;\n", "import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  HashRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    getUserConfirmation: PropTypes.func,\n    hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n  };\n\n  HashRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<HashRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n    );\n  };\n}\n\nexport default HashRouter;\n", "import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n  typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n  return typeof to === \"string\"\n    ? createLocation(to, null, null, currentLocation)\n    : to;\n};\n", "import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n  resolveToLocation,\n  normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n  (\n    {\n      innerRef, // TODO: deprecate\n      navigate,\n      onClick,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const { target } = rest;\n\n    let props = {\n      ...rest,\n      onClick: event => {\n        try {\n          if (onClick) onClick(event);\n        } catch (ex) {\n          event.preventDefault();\n          throw ex;\n        }\n\n        if (\n          !event.defaultPrevented && // onClick prevented default\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          event.preventDefault();\n          navigate();\n        }\n      }\n    };\n\n    // React 15 compat\n    if (forwardRefShim !== forwardRef) {\n      props.ref = forwardedRef || innerRef;\n    } else {\n      props.ref = innerRef;\n    }\n\n    /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n    return <a {...props} />;\n  }\n);\n\nif (__DEV__) {\n  LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n  (\n    {\n      component = LinkAnchor,\n      replace,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Link> outside a <Router>\");\n\n          const { history } = context;\n\n          const location = normalizeToLocation(\n            resolveToLocation(to, context.location),\n            context.location\n          );\n\n          const href = location ? history.createHref(location) : \"\";\n          const props = {\n            ...rest,\n            href,\n            navigate() {\n              const location = resolveToLocation(to, context.location);\n              const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n              const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n              method(location);\n            }\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return React.createElement(component, props);\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  const toType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.object,\n    PropTypes.func\n  ]);\n  const refType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.func,\n    PropTypes.shape({ current: PropTypes.any })\n  ]);\n\n  Link.displayName = \"Link\";\n\n  Link.propTypes = {\n    innerRef: refType,\n    onClick: PropTypes.func,\n    replace: PropTypes.bool,\n    target: PropTypes.string,\n    to: toType.isRequired\n  };\n}\n\nexport default Link;\n", "import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n  resolveToLocation,\n  normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n  return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n  (\n    {\n      \"aria-current\": ariaCurrent = \"page\",\n      activeClassName = \"active\", // TODO: deprecate\n      activeStyle, // TODO: deprecate\n      className: classNameProp,\n      exact,\n      isActive: isActiveProp,\n      location: locationProp,\n      sensitive,\n      strict,\n      style: styleProp,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n          const currentLocation = locationProp || context.location;\n          const toLocation = normalizeToLocation(\n            resolveToLocation(to, currentLocation),\n            currentLocation\n          );\n          const { pathname: path } = toLocation;\n          // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n          const escapedPath =\n            path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n          const match = escapedPath\n            ? matchPath(currentLocation.pathname, {\n                path: escapedPath,\n                exact,\n                sensitive,\n                strict\n              })\n            : null;\n          const isActive = !!(isActiveProp\n            ? isActiveProp(match, currentLocation)\n            : match);\n\n          let className =\n            typeof classNameProp === \"function\"\n              ? classNameProp(isActive)\n              : classNameProp;\n\n          let style =\n            typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n          if (isActive) {\n            className = joinClassnames(className, activeClassName);\n            style = { ...style, ...activeStyle };\n          }\n\n          const props = {\n            \"aria-current\": (isActive && ariaCurrent) || null,\n            className,\n            style,\n            to: toLocation,\n            ...rest\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return <Link {...props} />;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  NavLink.displayName = \"NavLink\";\n\n  const ariaCurrentType = PropTypes.oneOf([\n    \"page\",\n    \"step\",\n    \"location\",\n    \"date\",\n    \"time\",\n    \"true\",\n    \"false\"\n  ]);\n\n  NavLink.propTypes = {\n    ...Link.propTypes,\n    \"aria-current\": ariaCurrentType,\n    activeClassName: PropTypes.string,\n    activeStyle: PropTypes.object,\n    className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n    exact: PropTypes.bool,\n    isActive: PropTypes.func,\n    location: PropTypes.object,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool,\n    style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n  };\n}\n\nexport default NavLink;\n", "import React, {ReactElement} from \"react\";\nimport styled from \"styled-components\";\nimport {\n    dark, darkenGrey, lightDark, lighterDark,\n    lightWhite, overlay, primary, white\n} from \"@root/react-components/src/values/colors/colors\";\nimport {\n    primaryFontLarge, primaryFontXLarge,\n    secondaryFontLarge, secondaryFontMedium, secondaryFontXSmall\n} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Logo} from \"@root/react-components/src/logo/Logo\";\nimport {CircleArrow} from \"@root/react-components/src/icons/CircleArrow\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {SmartComponent} from \"@utils//SmartComponent\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Plan} from \"@backend/Types/Plan\";\nimport i18next from \"i18next\";\nimport {Box} from \"@mui/material\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport {Language} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {getLanguageCode, LANGUAGE_VALUES} from \"@backend/Types/Language\";\n\nexport class SideNav extends SmartComponent {\n    static readonly HEIGHT_MOBILE: number = 72;\n    static readonly WIDTH_OPEN: number = 300;\n    static readonly WIDTH_CLOSED: number = 74;\n    static readonly HEIGHT_TOGGLE: number = 28;\n    static readonly HEIGHT_LOGO: number = 100;\n    static readonly HEIGHT_AVATAR: number = 124;\n\n    props: {\n        children: ReactElement[],\n        onOpen(): void,\n        onClose(): void,\n        handleLangChange(language: Language): void\n        open: boolean\n    }\n    state: {\n        peer: Peer,\n        plan: Plan\n    } = {\n        peer: null,\n        plan: null\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        window.addEventListener('beforeprint', () => this.props.onClose());\n        const appConsole: AppConsole = AppConsole.getInstance();\n        const currentPeer: Peer = await appConsole.dataSourcePeers.getPeer(appConsole.currentPeerID);\n        this.setState({\n            peer: currentPeer,\n            plan: await appConsole.dataSourcePlans.getPlan(currentPeer.plan)\n        });\n    }\n\n    private setMenuOpen() {\n        if (this.props.open)\n            this.props.onClose();\n        else\n            this.props.onOpen();\n    }\n\n    render() {\n        const currentLanguage: Language = AppConsole.getInstance().getEngine().getLanguage();\n        return (<>\n            <LogoMobile>\n                <Logo symbolOnly />\n            </LogoMobile>\n\n            <Wrapper opened={this.props.open}>\n                <div>\n                    <TopWrapper justifyContent={this.props.open ? \"space-between\" : \"center\"}>\n                        {this.props.open &&\n                            <LangSwitcher>\n                                <SelectLanguageContainer>\n                                    <Box style={{ font: secondaryFontXSmall, textAlign: \"left\" }}>\n                                        {i18next.t(\"Language\")}\n                                    </Box>\n                                    <Select\n                                        default={LANGUAGE_VALUES.indexOf(currentLanguage)}\n                                        options={LANGUAGE_VALUES.map((lang: Language)=> getLanguageCode(lang))}\n                                        onChange={(index: number) =>\n                                            this.props.handleLangChange(LANGUAGE_VALUES[index])}\n                                        withBorders={false}\n                                        styleOptionsWrapper={{ color: dark }}\n                                    />\n                                </SelectLanguageContainer>\n                            </LangSwitcher>\n                        }\n                        <OpenCloseIcon>\n                            <div id=\"side-nav-open-menu\" onClick={() => this.setMenuOpen()}>\n                                <CircleArrow />\n                            </div>\n                        </OpenCloseIcon>\n                    </TopWrapper>\n                    <PeerIdentification>\n                        <div>\n                            {this.state.peer ?\n                                <img src={`https://secure.gravatar.com/avatar/${UtilsShared.md5(this.state.peer.username)}?s=80&d=identicon`}\n                                     onError={(e) => {e.currentTarget.style.display = \"none\"}}\n                                     crossOrigin=\"anonymous\"/> :\n                                <></>\n                            }\n                        </div>\n                        <div>\n                            <div>{this.state.peer?.fullName}</div>\n                            <div>{i18next.t(this.state.plan?.title)}</div>\n                        </div>\n                    </PeerIdentification>\n                    <Menu>\n                        <div>\n                            {this.props.children.map((menuItem, index) =>\n                                <div key={\"menu-item-\"+index} className={\"nav-item\"}>{menuItem}</div>)}\n                        </div>\n                        <div id={\"logout\"} onClick={async () => {\n                            // clear url and remove token from storage\n                            const url: URL = new URL(window.location.href)\n                            window.history.pushState({}, '', `${url.origin}/Console`);\n                            await AppConsole.getInstance().updateToken(\"\");\n                        }}>\n                            <a>\n                                {/* TODO: Move icon to React-Components */}\n                                <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n                                    <path fill=\"currentColor\" d=\"M4.5 22.5H7.5C8.32969 22.5 9 21.8297 9 21C9 20.1703 8.32969 19.5 7.5 19.5H4.5C3.67172 19.5 3 18.8283 3 18V6C3 5.17172 3.67172 4.5 4.5 4.5H7.5C8.32969 4.5 9 3.82828 9 3C9 2.17172 8.32969 1.5 7.5 1.5H4.5C2.01469 1.5 0 3.51469 0 6V18C0 20.4844 2.01469 22.5 4.5 22.5ZM23.6625 11.1797L16.9078 4.80469C16.5809 4.49634 16.1016 4.41211 15.6891 4.58934C15.2764 4.76733 15.0089 5.17388 15.0089 5.62294L15.0046 8.99794L9.0046 8.99789C8.17538 8.99789 7.50367 9.66961 7.50367 10.4979V13.4979C7.50367 14.3262 8.17585 14.9979 9.0046 14.9979L15.0046 14.9979L15.0089 18.3307C15.0089 18.7797 15.2764 19.1862 15.6891 19.3643C16.1017 19.5416 16.5811 19.4573 16.9078 19.149L23.6625 12.774C24.1125 12.3937 24.1125 11.6063 23.6625 11.1797Z\" />\n                                </svg>\n                                <span>{i18next.t(\"Logout\")}</span>\n                            </a>\n                        </div>\n                    </Menu>\n                    <LogoWrapper>\n                        <div className={\"small-logo\"}>\n                            <Logo symbolOnly />\n                        </div>\n                        <div className={\"full-logo\"}>\n                            <Logo />\n                            <div>Console</div>\n                        </div>\n                    </LogoWrapper>\n                </div>\n            </Wrapper>\n\n            <DarkOverlay className={\"dark-overlay\"} onClick={() => this.setMenuOpen()} />\n        </>);\n    }\n}\n\n\nconst Wrapper = styled.div<{\n    opened: boolean\n}>`\n    height: 100%;\n    position: fixed;\n    top: 0;\n    left: 0;\n    background-color: ${lightDark};\n    width: ${props => props.opened ? SideNav.WIDTH_OPEN : SideNav.WIDTH_CLOSED}px;\n    border-bottom-right-radius: 48px;\n    padding: ${props => props.opened ? \"24px\" : \"24px 12px\"};\n    box-sizing: border-box;\n    transition: 0.3s width;\n    z-index: 2;\n    overflow: hidden;\n    & > div {\n        height: 100%;\n        width: ${props => props.opened ? SideNav.WIDTH_OPEN - 48 : SideNav.WIDTH_CLOSED - 24}px;\n        & > div:first-child{\n            text-align: ${props => props.opened ? \"right\" : \"center\"};\n            & #side-nav-open-menu > svg{\n                transform: rotate(${props => props.opened ? 180 : 0}deg);\n            }\n        }\n        & > div:nth-child(2){\n            background-color: ${props => props.opened ? null : \"transparent\"};\n            border: ${props => props.opened ? null : \"none\"};\n            padding: ${props => props.opened ? null : \"12px 0\"};\n            & > div:first-child {\n                margin: ${props => props.opened ? null : 0};\n            }\n        }\n        & > div:nth-child(3){\n            margin: ${props => props.opened ? null : 0};\n            & a {\n                padding: ${props => props.opened ? null : 12}px;\n                & span {\n                    display: ${props => props.opened ? null : \"none\"};\n                }\n                & svg {\n                    margin: ${props => props.opened ? null : \"0\"};\n                }\n            }\n        }\n        & > div:last-child .small-logo{\n            display: ${props => props.opened ? \"none\" : \"block\"};\n        }\n        & > div:last-child .full-logo {\n            display: ${props => props.opened ? \"block\" : \"none\"};\n        }\n    }\n    \n    @media (max-width: 768px) {\n        & + .dark-overlay {\n            display: block;\n        }\n    }\n    \n    @media (max-width: 768px) {\n        height: ${props => props.opened ? null : SideNav.HEIGHT_MOBILE}px;\n        padding: ${props => props.opened ? null : 20}px;\n        & > div {\n            & > div:first-child{\n                text-align: ${props => props.opened ? null : \"left\"};\n            }\n            & > div:not(:first-child) {\n                display: ${props => props.opened ? null : \"none\"};\n            }\n        }\n        \n        & + .dark-overlay {\n            display: ${props => props.opened ? null : \"none\"};\n        }\n    }\n    \n`;\n\nconst LangSwitcher = styled.div`\n    & > div {\n        width: 50px;\n        padding: 0;\n    }\n`;\n\nconst TopWrapper = styled.div<{justifyContent: string}>`\n    display: flex;\n    justify-content: ${props => props.justifyContent};\n    align-items: center;\n`\n\nconst OpenCloseIcon = styled.div`\n    color: ${white};\n    height: ${SideNav.HEIGHT_TOGGLE}px;\n    text-align: right;\n    margin-top: 10px;\n    & > div{\n        display: inline-block;\n        & svg {\n            cursor: pointer;\n        }\n    }\n    @media print {\n        display: none\n    }\n`;\n\nconst LogoWrapper = styled.div`\n    border-top: thin solid ${dark};\n    padding-top: 24px;\n    text-align: center;\n    height: ${SideNav.HEIGHT_LOGO}px;\n    color: ${white};\n    font: ${secondaryFontMedium};\n    & svg {\n        width: 100%;\n        height: 48px;\n        margin-bottom: 8px;\n    }\n    & .small-logo{\n        margin-top: 12px;\n        padding: 0 6px;\n        box-sizing: border-box;\n    }\n`;\n\nconst PeerIdentification = styled.div`\n    width: 100%;\n    background-color: ${lighterDark};\n    border: 1px solid ${darkenGrey};\n    display: flex;\n    border-radius: 32px;\n    padding: 12px 18px;\n    box-sizing: border-box;\n    height: ${SideNav.HEIGHT_AVATAR - 48}px;\n    margin: 24px 0;\n    color: ${white};\n    font: ${secondaryFontLarge};\n    & > div:first-child {\n        height: 50px;\n        width: 50px;\n        border-radius: 50%;\n        overflow: hidden;\n        margin-right: 12px;\n        background-color: ${primary};\n        & img{\n            height: 100%;\n            width: 100%;\n            object-fit: center;\n        }\n    }\n    & > div:last-child {\n        width: calc(100% - 62px);\n        & > div {\n            white-space: nowrap;\n            overflow: hidden;\n            text-overflow: ellipsis;\n            &:first-child {\n                font: ${primaryFontXLarge};\n            }\n        }\n    }\n`;\n\nconst LogoMobile = styled.div`\n    position: absolute;\n    top: 0;\n    right: 0;\n    height: ${SideNav.HEIGHT_MOBILE}px;\n    width: 50px;\n    display: none;\n    & svg{\n        height: 100%;\n        width: 100%;\n    }\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n\nconst SelectLanguageContainer = styled.div`\n    color: ${white};\n    & svg path { fill: ${ white };\n`\n\nconst DarkOverlay = styled.div`\n    position: fixed;\n    height: 100%;\n    width: 100%;\n    background-color: ${overlay};\n    top: 0;\n    left: 0;\n    display: none;\n    z-index: 1;\n`;\n\nconst Menu = styled.div`\n    height: calc(100% - ${SideNav.HEIGHT_TOGGLE + SideNav.HEIGHT_AVATAR + SideNav.HEIGHT_LOGO}px);\n    margin-left: 14px;\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n    & a {\n        display: inline-block;\n        color: ${lightWhite};\n        cursor: pointer;\n        font: ${primaryFontLarge};\n        text-decoration: none;\n        box-sizing: border-box;\n        padding: 12px 24px 12px 18px;\n        margin-bottom: 12px;\n        border-radius: 12px;\n        &.active {\n            background-color: ${lighterDark};\n        }\n        \n        & svg{\n            height: 24px;\n            width: 24px;\n            margin-right: 24px;\n            vertical-align: middle;\n        }\n    }\n`;\n", "import React from \"react\";\nimport {ViewTitle} from \"@root/Frontend/Console/components/ViewTitle\";\nimport i18next from \"i18next\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {ViewSubtitle} from \"@root/Frontend/Console/components/ViewSubtitle\";\nimport {FiltersInterface, FiltersRow} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {Box, styled} from \"@mui/material\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {getRangeDateValueByFilterOption} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {AttemptsByTimeGraph} from \"@root/Frontend/Console/widgets/AttemptsByTimeGraph\";\nimport {MostActivePeers} from \"@root/Frontend/Console/Views/Dashboard/MostActive/MostActivePeers\";\nimport {MostActiveGroups} from \"@root/Frontend/Console/Views/Dashboard/MostActive/MostActiveGroups\";\nimport {MostActiveWorlds} from \"@root/Frontend/Console/Views/Dashboard/MostActive/MostActiveWorlds\";\nimport { AnalyticsSummary } from \"./AnalyticsSummary\";\n\nconst Header = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n});\n\nconst Row = styled(Box)({\n    display: \"grid\",\n    gridTemplateColumns: \"1fr\",\n    gap: \"24px\",\n    [theme.breakpoints.up('lg')]: {\n        gridTemplateColumns: \"1fr 1fr 1fr\",\n    }\n})\n\nconst ContainerMostActive = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"0px 16px\"\n});\n\nconst FiltersWrapper = styled(Box)({\n    display: \"flex\",\n    gap: \"12px\"\n});\n\nconst Container = styled(Box)({\n    padding: \"0px 16px\"\n});\n\nconst Body = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"24px\",\n    paddingBottom: \"16px\",\n    [theme.breakpoints.down('md')]: {\n        padding: \"12px\"\n    },\n});\n\ninterface DashboardState {\n    filters: FiltersInterface\n}\n\nexport class Dashboard extends SmartComponent {\n\n    state: DashboardState = {\n        filters: {\n            filterDate: FilterDateOptions.LAST_30_DAYS,\n            dateRange: getRangeDateValueByFilterOption(FilterDateOptions.LAST_30_DAYS),\n        }\n    }\n\n    render() {\n        return <>\n            <Header>\n                <ViewTitle>{i18next.t(\"Dashboard\")}</ViewTitle>\n                <FiltersWrapper>\n                    <FiltersRow\n                        filters={this.state.filters}\n                        handleOnChangeFilter={(filters: FiltersInterface) => this.setState({filters})}\n                        hideCustomDate\n                    />\n                </FiltersWrapper>\n            </Header>\n            <Body>\n                <AnalyticsSummary\n                    filterDate={this.state.filters.filterDate as FilterDateOptions}/>\n                <Container>\n                    <Box>\n                        <ViewSubtitle style={{marginRight: \"20px\"}}>{i18next.t(\"Active users\")}</ViewSubtitle>\n                        <AttemptsByTimeGraph\n                            filterDate={this.state.filters.filterDate as FilterDateOptions}\n                        />\n                    </Box>\n                </Container>\n                <ContainerMostActive>\n                    <ViewSubtitle>{i18next.t(\"Most Active\")}</ViewSubtitle>\n                    <Row>\n                        <MostActiveWorlds filterDate={this.state.filters.filterDate as FilterDateOptions}/>\n                        <MostActiveGroups filterDate={this.state.filters.filterDate as FilterDateOptions}/>\n                        <MostActivePeers filterDate={this.state.filters.filterDate as FilterDateOptions}/>\n                    </Row>\n                </ContainerMostActive>\n            </Body>\n        </>\n    }\n}\n", "import React from \"react\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {lightDark} from \"@root/react-components/src/values/colors/colors\";\n\nexport function ViewTitle(props: {children: string, style?: React.CSSProperties}) {\n    return <div id={\"view-title\"}\n                style={{font: primaryFontXLarge,\n                        fontSize: \"28px\",\n                        color: lightDark,\n                        padding: \"15px\",\n                        ...props.style}}>\n                {props.children}\n            </div>\n}", "import React, {ReactElement} from \"react\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {lightDark} from \"@root/react-components/src/values/colors/colors\";\n\nexport function ViewSubtitle(props: {children: string | ReactElement, style?: React.CSSProperties}) {\n    return <div id={\"view-subtitle\"}\n                style={{margin: \"24px 0 12px\",\n                        color: lightDark,\n                        font: primaryFontXLarge,\n                        ...props.style}}>\n                {props.children}\n            </div>\n}", "import React, {MouseEvent, useEffect, useRef, useState} from \"react\";\nimport {convertTypeOSToString, TypeOS} from \"@backend/Types/TypeOS\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport {FilterDateOptions, getFilterDatesAsStrings} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {MultipleSelect} from \"@root/react-components/src/inputs/MultipleSelect\";\nimport i18next from \"i18next\";\nimport DateRangePicker from \"@root/react-components/src/inputs/DateRangePicker\";\nimport {getRangeDateValueByFilterOption} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport {Box, Popover, styled} from \"@mui/material\";\nimport {Entity} from \"@backend/Types/Entity\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {timestampToString} from \"@utils/utils\";\nimport {Filter} from \"@root/react-components/src/icons/Filter\";\nimport {isMobileOnly} from \"react-device-detect\";\nimport {primary} from \"@root/react-components/src/values/colors/colors\";\nimport {Group} from \"@backend/Types/Group\";\n\nconst FilterIconWrapper = styled(Box)({\n    width: \"14px\",\n    height: \"14px\",\n    color: primary,\n    border: `2px solid ${primary}`,\n    padding: \"5px\",\n    borderRadius: \"50%\"\n});\n\nconst MobileFitlersContainer = styled(Box)({\n    display: \"flex\",\n    padding: \"10px\",\n    gap: \"10px\",\n    height: \"calc(100vh - 150px)\",\n    width: \"calc(100vw - 50px)\",\n    flexDirection: \"column\"\n});\n\nexport const FILTER_OS_LIST: TypeOS[] = [TypeOS.APPLE, TypeOS.WEB, TypeOS.HOLOLENS];\nexport interface FiltersInterface {\n    filterDate?: FilterDateOptions;\n    dateRange?: [bigint, bigint];\n    filterOS?: TypeOS[];\n    selectedEntity?: bigint;\n    selectedPeer?: bigint;\n    selectedGroupID?: bigint;\n}\n\nexport interface FilterProps {\n    id?: string;\n    filters: FiltersInterface;\n    hideCustomDate?: boolean;\n    handleOnChangeFilter: (newFilters: FiltersInterface) => void;\n    backgroundColor?: string;\n    peerIDs?: bigint[];\n    groupIDs?: bigint[];\n    onlyGroups?: boolean;\n    allEntities?: bigint[];\n    disablePeerFilter?: boolean;\n}\n\nexport function FiltersRow(props: FilterProps) {\n    const selectFilterDateRef: React.RefObject<Select> = useRef<Select>(null);\n\n    const currentPeerID: bigint = AppConsole.getInstance().currentPeerID;\n    const filterDate: FilterDateOptions | undefined = props.filters.filterDate;\n    const dateRange: [bigint, bigint] | undefined = props.filters.dateRange;\n    const filterOS: TypeOS[] | undefined = props.filters.filterOS;\n    const selectedEntity: bigint | undefined = props.filters.selectedEntity;\n    const selectedPeerID: bigint | undefined = props.disablePeerFilter ? currentPeerID : props.filters.selectedPeer;\n    const selectedGroupID: bigint | undefined = props.filters.selectedGroupID;\n\n    const [filtersAnchor, setFiltersAnchor] = useState<HTMLDivElement | null>(null);\n\n    const [selectedFiltersOS, setSelectedFiltersOS] =\n        useState(filterOS?.map((os: TypeOS) => FILTER_OS_LIST.indexOf(os)) ?? []);\n    // the date range specifically used by the date picker\n    const [dateRangePicker, setDateRangePicker] = useState<[bigint, bigint] | null>(null);\n    const customFilterDateRef = useRef<HTMLDivElement | null>(null);\n    const [peerNameByID, setPeerMap] = useState<Map<bigint, string>>(new Map());\n    const [groupNameByID, setGroupNameByID] = useState<Map<bigint, string>>(new Map());\n    const [entityByName, setEntityByName] = useState<Map<string, bigint>>(new Map());\n\n    useEffect(() => {\n        if(!filterOS)\n            return;\n\n        props.handleOnChangeFilter({\n            ...props.filters,\n            filterOS: selectedFiltersOS.map(indexOS => FILTER_OS_LIST[indexOS])\n        });\n    }, [selectedFiltersOS]);\n\n    useEffect(() => {\n        fetchEntityNames().then((entityByName: Map<string, bigint>) => setEntityByName(entityByName));\n    }, [props.allEntities]);\n\n    useEffect(() => {\n        fetchGroupNames().then((groupNameByID: Map<bigint, string>) => setGroupNameByID(groupNameByID));\n    }, [props.groupIDs]);\n\n    useEffect(() => {\n        fetchPeerNames().then((peerNameByID: Map<bigint, string>) => setPeerMap(peerNameByID));\n    }, [props.peerIDs]);\n\n    async function fetchEntityNames(): Promise<Map<string, bigint>> {\n        const entityByName: Map<string, bigint> = new Map();\n        if (!props.allEntities?.length)\n            return entityByName;\n\n        for (const entityID of props.allEntities) {\n            const entity: Entity = await AppConsole.getInstance().dataSourceEntities.getEntityByID(entityID);\n            entityByName.set(entity.Name.value, entityID);\n        }\n        return entityByName;\n    }\n\n    function onSelectEntity(index: number): void {\n        if (index === 0) {\n            props.handleOnChangeFilter({...props.filters, \"selectedEntity\": BigInt(0)});\n            return;\n        }\n\n        // index - 1, because of the \"All entities\" option\n        const entityName: string = [...entityByName.keys()][index - 1];\n        props.handleOnChangeFilter({...props.filters, \"selectedEntity\": entityByName.get(entityName)});\n    }\n\n    function getDefaultEntityIndex(entityID: bigint | undefined): number {\n        if (!entityID)\n            return 0;\n\n        const entities: bigint[] = [...entityByName.values()];\n        //indexOf + 1 because of the \"All entities\" option in the Select\n        return entities.indexOf(entityID) + 1;\n    }\n\n    function handleChangeFilterDate(value: number) {\n        if (value === FilterDateOptions.CUSTOM) {\n            // if a date range have been selected previously, show it when the date picker opens.\n            const newDateRange: [bigint, bigint] = dateRange && filterDate === FilterDateOptions.CUSTOM ?\n                dateRange : [BigInt(0), BigInt(0)];\n            setDateRangePicker(newDateRange);\n            return;\n        }\n\n        props.handleOnChangeFilter({\n            ...props.filters,\n            filterDate: value,\n            dateRange: getRangeDateValueByFilterOption(value)\n        });\n    }\n\n    function getFilterDateOptions(): string[] {\n        if (filterDate === FilterDateOptions.CUSTOM && dateRange) {\n            const startDate: string = timestampToString(dateRange[0], false, false);\n            const endDate: string = timestampToString(dateRange[1], false, false);\n            return [...getFilterDatesAsStrings(true), `${startDate} - ${endDate}`]\n        }\n\n        return getFilterDatesAsStrings(props.hideCustomDate);\n    }\n\n    async function fetchGroupNames(): Promise<Map<bigint, string>> {\n        const app: AppConsole = AppConsole.getInstance();\n        const groupNameByID: Map<bigint, string> = new Map();\n\n        if (!props.groupIDs?.length)\n            return groupNameByID;\n\n        for (const groupID of props.groupIDs) {\n            const group: Group = await app.dataSourceGroups.getGroup(groupID);\n            groupNameByID.set(groupID, group.Name);\n        }\n\n        return new Map(\n            [...groupNameByID.entries()].sort(([, nameA]: [bigint, string], [, nameB]: [bigint, string]) =>\n                nameA.localeCompare(nameB)\n            )\n        );\n    }\n\n    async function fetchPeerNames(): Promise<Map<bigint, string>> {\n        const peerNameByID: Map<bigint, string> = new Map();\n\n        if (props.disablePeerFilter) {\n            const peer: Peer = await AppConsole.getInstance().dataSourcePeers.getPeer(currentPeerID);\n            peerNameByID.set(currentPeerID, peer.fullName);\n            return peerNameByID;\n        }\n\n        if (!props.peerIDs?.length)\n            return peerNameByID;\n\n        for (const peerID of props.peerIDs) {\n            const peer: Peer = await AppConsole.getInstance().dataSourcePeers.getPeer(peerID);\n            peerNameByID.set(peerID, peer.fullName);\n        }\n\n        return new Map(\n            [...peerNameByID].sort(([, nameA]: [bigint, string], [, nameB]: [bigint, string]) =>\n                nameA.localeCompare(nameB)\n            )\n        );\n    }\n\n    function onGroupSelect(index: number) {\n        const groupIDs: bigint[] = [...groupNameByID.keys()];\n        if (index > groupIDs.length + 1)\n            return;\n\n        let selectedGroupID: bigint = BigInt(0);\n        if (index === 0 && !props.onlyGroups)\n            // My Worlds\n            selectedGroupID = AppConsole.getInstance().currentPeerID;\n        else if (index > 0 && index < groupIDs.length + 1)\n            // index - 1 because of the 'All Groups' option\n            selectedGroupID = groupIDs[index - 1];\n\n        props.handleOnChangeFilter({...props.filters, selectedGroupID});\n    }\n\n    function onPeerSelect(index: number): void {\n        const peerIDs: bigint[] = [...peerNameByID.keys()];\n        if (index > peerIDs.length + 1)\n            return;\n\n        // index - 1 because of the 'All Users' option\n        const selectedPeer: bigint = index === 0 ? BigInt(0) : peerIDs[index - 1];\n        props.handleOnChangeFilter({...props.filters, selectedPeer});\n    }\n\n    function getDefaultPeerIndex(peerID: bigint): number {\n        if (!peerID)\n            return 0;\n\n        const peers: bigint[] = [...peerNameByID.keys()];\n        //indexOf + 1 because of the \"All Users\" option in the Select\n        return peers.indexOf(peerID) + 1;\n    }\n\n    function getDefaultGroupIndex(groupID: bigint): number {\n        if (!groupID || (!props.onlyGroups && groupID === currentPeerID))\n            return 0;\n\n        const groupIndex: number = [...groupNameByID.keys()].indexOf(groupID);\n        return groupIndex >= 0 ? groupIndex + 1 : 0;\n    }\n\n    function cancelDatePicker() {\n        selectFilterDateRef.current?.setDefault(filterDate?.valueOf() ?? FilterDateOptions.All_TIME);\n        setDateRangePicker(null);\n    }\n\n    function onChangeRangeDate(startTime: bigint, endTime: bigint) {\n        setDateRangePicker([startTime, endTime]);\n        if (!endTime) {\n            setDateRangePicker([startTime, endTime]);\n            return;\n        }\n\n        props.handleOnChangeFilter({\n            ...props.filters,\n            filterDate: FilterDateOptions.CUSTOM,\n            dateRange: [startTime, endTime]\n        });\n        setDateRangePicker(null);\n    }\n\n    function renderFilters() {\n        const groupOptions: string[] = props.onlyGroups ? [i18next.t(\"All Groups\"), ...groupNameByID.values()] :\n            [i18next.t(\"My Worlds\"), ...groupNameByID.values()]\n\n        return (\n            <>\n                {props.groupIDs !== undefined && selectedGroupID !== undefined &&\n                    <Select\n                        id={props.id ? `group-${props.id}` : 'group-filter'}\n                        options={groupOptions}\n                        default={getDefaultGroupIndex(selectedGroupID)}\n                        onChange={(index: number) => onGroupSelect(index)}\n                        style={{ backgroundColor: props.backgroundColor ?? \"unset\", maxWidth: \"200px\" }}\n                    />\n                }\n                {props.peerIDs !== undefined && selectedPeerID !== undefined &&\n                    <Select\n                        id={props.id ? `peer-${props.id}` : 'peer-filter'}\n                        options={[i18next.t(\"All Users\"), ...peerNameByID.values()]}\n                        default={getDefaultPeerIndex(selectedPeerID ?? BigInt(0))}\n                        onChange={(index: number) => onPeerSelect(index)}\n                        style={{ backgroundColor: props.backgroundColor ?? \"unset\" }}\n                        disable={props.disablePeerFilter ?? false}\n                    />\n                }\n                {props.allEntities !== undefined && selectedEntity !== undefined &&\n                    <Select\n                        id={props.id ? `entity-${props.id}` : 'entity-filter'}\n                        options={entityByName.size ? [i18next.t(\"All Entities\"), ...entityByName.keys()]\n                            : [i18next.t(\"No Entity\")]\n                        }\n                        default={getDefaultEntityIndex(selectedEntity)}\n                        onChange={(index: number) => onSelectEntity(index)}\n                        style={{ backgroundColor: props.backgroundColor ?? \"unset\" }}\n                        disable={!entityByName.size}\n                    />\n                }\n                {filterDate !== undefined &&\n                    <Box style={{ display: \"flex\", flexDirection: \"column\" }}>\n                        <Select\n                            ref={selectFilterDateRef}\n                            id={props.id ? `date-${props.id}` : 'date-filter'}\n                            options={getFilterDateOptions()}\n                            default={filterDate}\n                            onChange={(value: number) => handleChangeFilterDate(value)}\n                            style={{ backgroundColor: props.backgroundColor ?? \"unset\" }}\n                            styleOptionsWrapper={{ maxHeight: \"unset\" }}\n                        />\n                        <Box ref={customFilterDateRef} />\n                        {dateRangePicker !== null &&\n                            <Popover\n                                open\n                                anchorEl={customFilterDateRef.current}\n                                onClose={() => cancelDatePicker()}\n                                anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n                                transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n                            >\n                                <DateRangePicker\n                                    startDate={dateRangePicker[0]}\n                                    endDate={dateRangePicker[1]}\n                                    onChangeRangeDate={(startTime: bigint, endTime: bigint) =>\n                                        onChangeRangeDate(startTime, endTime)}\n                                    getLanguage={() => i18next.language}\n                                />\n                            </Popover>\n                        }\n                    </Box>\n                }\n                {filterOS &&\n                    <MultipleSelect\n                        id={props.id ? `os-${props.id}` : 'os-filter'}\n                        selectedIndexes={selectedFiltersOS}\n                        options={FILTER_OS_LIST.map((os: TypeOS) => convertTypeOSToString(os))}\n                        onChange={(value: number[]) => setSelectedFiltersOS(value)}\n                        label={\n                            props.filters.filterOS?.length === FILTER_OS_LIST.length\n                                ? i18next.t(\"All OS\")\n                                : i18next.t(\"OS Filters\")}\n                        style={{ backgroundColor: props.backgroundColor ?? \"unset\" }}\n                    />\n                }\n            </>\n        )\n    }\n\n    if (isMobileOnly)\n        return (\n            <>\n                <FilterIconWrapper\n                    onClick={(event: MouseEvent<HTMLDivElement>) => setFiltersAnchor(event.currentTarget)}\n                >\n                    <Filter />\n                </FilterIconWrapper>\n                <Popover\n                    open={Boolean(filtersAnchor)}\n                    onClose={() => setFiltersAnchor(null)}\n                    anchorEl={filtersAnchor}\n                    anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n                >\n                    <MobileFitlersContainer>{ renderFilters() }</MobileFitlersContainer>\n                </Popover>\n            </>\n        )\n\n    return renderFilters();\n}\n", "\n/// Type OS (same as what's inside 'InterfaceFacadeOS.h')\nexport enum TypeOS {\n    UNKNOWN = 0,\n    ANDROID_OS = 1,\n    APPLE = 2,\n    WEB = 3,\n    HOLOLENS = 4,\n    COUNT\n}\n\n/// Converts the string into its TypeOS equivalent\nexport function convertStringToTypeOS(type: string): TypeOS {\n\n    // deprecated 'iOS' -> 'Apple' 2023-06\n    if(type == \"iOS\") return TypeOS.APPLE;\n\n    const typeOS : TypeOS | undefined = TypeOS[type as keyof typeof TypeOS]\n    return typeOS === undefined ? TypeOS.UNKNOWN : typeOS;\n}\n\n/// convert TypeOS to a string(\"UNKNOWN\", \"ANDROID_OS\", \"iOS\", etc.)\nexport function convertTypeOSToString(typeOS: TypeOS): string {\n    switch (typeOS) {\n        case TypeOS.ANDROID_OS: return \"Android\";\n        case TypeOS.HOLOLENS:   return \"Hololens\";\n        case TypeOS.APPLE:      return \"Apple\";\n        case TypeOS.WEB:        return \"Web\";\n        case TypeOS.UNKNOWN:\n        default:                return \"Unknown\";\n    }\n}", "import i18next from \"i18next\";\n\nexport enum FilterDateOptions {\n    LAST_24_HOURS = 0,\n    LAST_7_DAYS   = 1,\n    LAST_30_DAYS  = 2,\n    LAST_90_DAYS  = 3,\n    LAST_YEAR     = 4,\n    All_TIME      = 5,\n    CUSTOM        = 6,\n}\n\nexport function convertFilterDateToString(date: FilterDateOptions): string {\n    switch(date) {\n        case FilterDateOptions.LAST_24_HOURS:\n            return i18next.t(\"Last 24 Hours\");\n        case FilterDateOptions.LAST_7_DAYS:\n            return i18next.t(\"Last 7 Days\");\n        case FilterDateOptions.LAST_30_DAYS:\n            return i18next.t(\"Last 30 Days\");\n        case FilterDateOptions.LAST_90_DAYS:\n            return i18next.t(\"Last 90 Days\");\n        case FilterDateOptions.LAST_YEAR:\n            return i18next.t(\"Last Year\");\n        case FilterDateOptions.All_TIME:\n            return i18next.t(\"All Time\");\n        case FilterDateOptions.CUSTOM:\n            return i18next.t(\"Custom\");\n        default:\n            return i18next.t(\"Invalid Filter Date\");\n    }\n}\n\nexport function getFilterDatesAsStrings(hideCustom: boolean = false): string[] {\n    const filterDatesAsStrings: string[] = [];\n    for (let i: number = 0; i < Object.keys(FilterDateOptions).length / 2; i++) {\n        if (hideCustom && i === FilterDateOptions.CUSTOM)\n            continue;\n\n        filterDatesAsStrings.push(convertFilterDateToString(i));\n    }\n\n    return filterDatesAsStrings;\n}\n", "import _extends from \"@babel/runtime/helpers/esm/extends\";\n/* eslint-disable class-methods-use-this */\nimport defaultDayjs from 'dayjs';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\nimport customParseFormatPlugin from 'dayjs/plugin/customParseFormat';\nimport localizedFormatPlugin from 'dayjs/plugin/localizedFormat';\nimport isBetweenPlugin from 'dayjs/plugin/isBetween';\nimport { buildWarning } from '../internals/utils/warning';\ndefaultDayjs.extend(customParseFormatPlugin);\ndefaultDayjs.extend(localizedFormatPlugin);\ndefaultDayjs.extend(isBetweenPlugin);\nconst localeNotFoundWarning = buildWarning(['Your locale has not been found.', 'Either the locale key is not a supported one. Locales supported by dayjs are available here: https://github.com/iamkun/dayjs/tree/dev/src/locale', \"Or you forget to import the locale from 'dayjs/locale/{localeUsed}'\", 'fallback on English locale']);\nconst formatTokenMap = {\n  // Year\n  YY: 'year',\n  YYYY: {\n    sectionType: 'year',\n    contentType: 'digit',\n    maxLength: 4\n  },\n  // Month\n  M: {\n    sectionType: 'month',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  MM: 'month',\n  MMM: {\n    sectionType: 'month',\n    contentType: 'letter'\n  },\n  MMMM: {\n    sectionType: 'month',\n    contentType: 'letter'\n  },\n  // Day of the month\n  D: {\n    sectionType: 'day',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  DD: 'day',\n  Do: {\n    sectionType: 'day',\n    contentType: 'digit-with-letter'\n  },\n  // Day of the week\n  d: {\n    sectionType: 'weekDay',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  dd: {\n    sectionType: 'weekDay',\n    contentType: 'letter'\n  },\n  ddd: {\n    sectionType: 'weekDay',\n    contentType: 'letter'\n  },\n  dddd: {\n    sectionType: 'weekDay',\n    contentType: 'letter'\n  },\n  // Meridiem\n  A: 'meridiem',\n  a: 'meridiem',\n  // Hours\n  H: {\n    sectionType: 'hours',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  HH: 'hours',\n  h: {\n    sectionType: 'hours',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  hh: 'hours',\n  // Minutes\n  m: {\n    sectionType: 'minutes',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  mm: 'minutes',\n  // Seconds\n  s: {\n    sectionType: 'seconds',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  ss: 'seconds'\n};\nconst defaultFormats = {\n  year: 'YYYY',\n  month: 'MMMM',\n  monthShort: 'MMM',\n  dayOfMonth: 'D',\n  weekday: 'dddd',\n  weekdayShort: 'dd',\n  hours24h: 'HH',\n  hours12h: 'hh',\n  meridiem: 'A',\n  minutes: 'mm',\n  seconds: 'ss',\n  fullDate: 'll',\n  fullDateWithWeekday: 'dddd, LL',\n  keyboardDate: 'L',\n  shortDate: 'MMM D',\n  normalDate: 'D MMMM',\n  normalDateWithWeekday: 'ddd, MMM D',\n  monthAndYear: 'MMMM YYYY',\n  monthAndDate: 'MMMM D',\n  fullTime: 'LT',\n  fullTime12h: 'hh:mm A',\n  fullTime24h: 'HH:mm',\n  fullDateTime: 'lll',\n  fullDateTime12h: 'll hh:mm A',\n  fullDateTime24h: 'll HH:mm',\n  keyboardDateTime: 'L LT',\n  keyboardDateTime12h: 'L hh:mm A',\n  keyboardDateTime24h: 'L HH:mm'\n};\nconst MISSING_UTC_PLUGIN = ['Missing UTC plugin', 'To be able to use UTC or timezones, you have to enable the `utc` plugin', 'Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc'].join('\\n');\nconst MISSING_TIMEZONE_PLUGIN = ['Missing timezone plugin', 'To be able to use timezones, you have to enable both the `utc` and the `timezone` plugin', 'Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-timezone'].join('\\n');\nconst withLocale = (dayjs, locale) => !locale ? dayjs : (...args) => dayjs(...args).locale(locale);\n\n/**\n * Based on `@date-io/dayjs`\n *\n * MIT License\n *\n * Copyright (c) 2017 Dmitriy Kovalenko\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, 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,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport class AdapterDayjs {\n  constructor({\n    locale: _locale,\n    formats,\n    instance\n  } = {}) {\n    var _this$rawDayJsInstanc;\n    this.isMUIAdapter = true;\n    this.isTimezoneCompatible = true;\n    this.lib = 'dayjs';\n    this.rawDayJsInstance = void 0;\n    this.dayjs = void 0;\n    this.locale = void 0;\n    this.formats = void 0;\n    this.escapedCharacters = {\n      start: '[',\n      end: ']'\n    };\n    this.formatTokenMap = formatTokenMap;\n    this.setLocaleToValue = value => {\n      const expectedLocale = this.getCurrentLocaleCode();\n      if (expectedLocale === value.locale()) {\n        return value;\n      }\n      return value.locale(expectedLocale);\n    };\n    this.hasUTCPlugin = () => typeof defaultDayjs.utc !== 'undefined';\n    this.hasTimezonePlugin = () => typeof defaultDayjs.tz !== 'undefined';\n    this.isSame = (value, comparing, comparisonTemplate) => {\n      const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));\n      return value.format(comparisonTemplate) === comparingInValueTimezone.format(comparisonTemplate);\n    };\n    /**\n     * Replaces \"default\" by undefined and \"system\" by the system timezone before passing it to `dayjs`.\n     */\n    this.cleanTimezone = timezone => {\n      switch (timezone) {\n        case 'default':\n          {\n            return undefined;\n          }\n        case 'system':\n          {\n            return defaultDayjs.tz.guess();\n          }\n        default:\n          {\n            return timezone;\n          }\n      }\n    };\n    this.createSystemDate = value => {\n      // TODO v7: Stop using `this.rawDayJsInstance` (drop the `instance` param on the adapters)\n      /* istanbul ignore next */\n      if (this.rawDayJsInstance) {\n        return this.rawDayJsInstance(value);\n      }\n      if (this.hasUTCPlugin() && this.hasTimezonePlugin()) {\n        const timezone = defaultDayjs.tz.guess();\n\n        // We can't change the system timezone in the tests\n        /* istanbul ignore next */\n        if (timezone !== 'UTC') {\n          return defaultDayjs.tz(value, timezone);\n        }\n        return defaultDayjs(value);\n      }\n      return defaultDayjs(value);\n    };\n    this.createUTCDate = value => {\n      /* istanbul ignore next */\n      if (!this.hasUTCPlugin()) {\n        throw new Error(MISSING_UTC_PLUGIN);\n      }\n      return defaultDayjs.utc(value);\n    };\n    this.createTZDate = (value, timezone) => {\n      /* istanbul ignore next */\n      if (!this.hasUTCPlugin()) {\n        throw new Error(MISSING_UTC_PLUGIN);\n      }\n\n      /* istanbul ignore next */\n      if (!this.hasTimezonePlugin()) {\n        throw new Error(MISSING_TIMEZONE_PLUGIN);\n      }\n      const keepLocalTime = value !== undefined && !value.endsWith('Z');\n      return defaultDayjs(value).tz(this.cleanTimezone(timezone), keepLocalTime);\n    };\n    this.getLocaleFormats = () => {\n      const locales = defaultDayjs.Ls;\n      const locale = this.locale || 'en';\n      let localeObject = locales[locale];\n      if (localeObject === undefined) {\n        localeNotFoundWarning();\n        localeObject = locales.en;\n      }\n      return localeObject.formats;\n    };\n    /**\n     * If the new day does not have the same offset as the old one (when switching to summer day time for example),\n     * Then dayjs will not automatically adjust the offset (moment does).\n     * We have to parse again the value to make sure the `fixOffset` method is applied.\n     * See https://github.com/iamkun/dayjs/blob/b3624de619d6e734cd0ffdbbd3502185041c1b60/src/plugin/timezone/index.js#L72\n     */\n    this.adjustOffset = value => {\n      if (!this.hasTimezonePlugin()) {\n        return value;\n      }\n      const timezone = this.getTimezone(value);\n      if (timezone !== 'UTC') {\n        var _fixedValue$$offset, _value$$offset;\n        const fixedValue = value.tz(this.cleanTimezone(timezone), true);\n        // @ts-ignore\n        if (((_fixedValue$$offset = fixedValue.$offset) != null ? _fixedValue$$offset : 0) === ((_value$$offset = value.$offset) != null ? _value$$offset : 0)) {\n          return value;\n        }\n        // Change only what is needed to avoid creating a new object with unwanted data\n        // Especially important when used in an environment where utc or timezone dates are used only in some places\n        // Reference: https://github.com/mui/mui-x/issues/13290\n        // @ts-ignore\n        value.$offset = fixedValue.$offset;\n      }\n      return value;\n    };\n    this.date = value => {\n      if (value === null) {\n        return null;\n      }\n      return this.dayjs(value);\n    };\n    this.dateWithTimezone = (value, timezone) => {\n      if (value === null) {\n        return null;\n      }\n      let parsedValue;\n      if (timezone === 'UTC') {\n        parsedValue = this.createUTCDate(value);\n      } else if (timezone === 'system' || timezone === 'default' && !this.hasTimezonePlugin()) {\n        parsedValue = this.createSystemDate(value);\n      } else {\n        parsedValue = this.createTZDate(value, timezone);\n      }\n      if (this.locale === undefined) {\n        return parsedValue;\n      }\n      return parsedValue.locale(this.locale);\n    };\n    this.getTimezone = value => {\n      if (this.hasTimezonePlugin()) {\n        var _value$$x;\n        // @ts-ignore\n        const zone = (_value$$x = value.$x) == null ? void 0 : _value$$x.$timezone;\n        if (zone) {\n          return zone;\n        }\n      }\n      if (this.hasUTCPlugin() && value.isUTC()) {\n        return 'UTC';\n      }\n      return 'system';\n    };\n    this.setTimezone = (value, timezone) => {\n      if (this.getTimezone(value) === timezone) {\n        return value;\n      }\n      if (timezone === 'UTC') {\n        /* istanbul ignore next */\n        if (!this.hasUTCPlugin()) {\n          throw new Error(MISSING_UTC_PLUGIN);\n        }\n        return value.utc();\n      }\n\n      // We know that we have the UTC plugin.\n      // Otherwise, the value timezone would always equal \"system\".\n      // And it would be caught by the first \"if\" of this method.\n      if (timezone === 'system') {\n        return value.local();\n      }\n      if (!this.hasTimezonePlugin()) {\n        if (timezone === 'default') {\n          return value;\n        }\n\n        /* istanbul ignore next */\n        throw new Error(MISSING_TIMEZONE_PLUGIN);\n      }\n      return defaultDayjs.tz(value, this.cleanTimezone(timezone));\n    };\n    this.toJsDate = value => {\n      return value.toDate();\n    };\n    this.parseISO = isoString => {\n      return this.dayjs(isoString);\n    };\n    this.toISO = value => {\n      return value.toISOString();\n    };\n    this.parse = (value, format) => {\n      if (value === '') {\n        return null;\n      }\n      return this.dayjs(value, format, this.locale, true);\n    };\n    this.getCurrentLocaleCode = () => {\n      return this.locale || 'en';\n    };\n    this.is12HourCycleInCurrentLocale = () => {\n      /* istanbul ignore next */\n      return /A|a/.test(this.getLocaleFormats().LT || '');\n    };\n    this.expandFormat = format => {\n      const localeFormats = this.getLocaleFormats();\n\n      // @see https://github.com/iamkun/dayjs/blob/dev/src/plugin/localizedFormat/index.js\n      const t = formatBis => formatBis.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g, (_, a, b) => a || b.slice(1));\n      return format.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g, (_, a, b) => {\n        const B = b && b.toUpperCase();\n        return a || localeFormats[b] || t(localeFormats[B]);\n      });\n    };\n    this.getFormatHelperText = format => {\n      return this.expandFormat(format).replace(/a/gi, '(a|p)m').toLocaleLowerCase();\n    };\n    this.isNull = value => {\n      return value === null;\n    };\n    this.isValid = value => {\n      return this.dayjs(value).isValid();\n    };\n    this.format = (value, formatKey) => {\n      return this.formatByString(value, this.formats[formatKey]);\n    };\n    this.formatByString = (value, formatString) => {\n      return this.dayjs(value).format(formatString);\n    };\n    this.formatNumber = numberToFormat => {\n      return numberToFormat;\n    };\n    this.getDiff = (value, comparing, unit) => {\n      return value.diff(comparing, unit);\n    };\n    this.isEqual = (value, comparing) => {\n      if (value === null && comparing === null) {\n        return true;\n      }\n      return this.dayjs(value).toDate().getTime() === this.dayjs(comparing).toDate().getTime();\n    };\n    this.isSameYear = (value, comparing) => {\n      return this.isSame(value, comparing, 'YYYY');\n    };\n    this.isSameMonth = (value, comparing) => {\n      return this.isSame(value, comparing, 'YYYY-MM');\n    };\n    this.isSameDay = (value, comparing) => {\n      return this.isSame(value, comparing, 'YYYY-MM-DD');\n    };\n    this.isSameHour = (value, comparing) => {\n      return value.isSame(comparing, 'hour');\n    };\n    this.isAfter = (value, comparing) => {\n      return value > comparing;\n    };\n    this.isAfterYear = (value, comparing) => {\n      if (!this.hasUTCPlugin()) {\n        return value.isAfter(comparing, 'year');\n      }\n      return !this.isSameYear(value, comparing) && value.utc() > comparing.utc();\n    };\n    this.isAfterDay = (value, comparing) => {\n      if (!this.hasUTCPlugin()) {\n        return value.isAfter(comparing, 'day');\n      }\n      return !this.isSameDay(value, comparing) && value.utc() > comparing.utc();\n    };\n    this.isBefore = (value, comparing) => {\n      return value < comparing;\n    };\n    this.isBeforeYear = (value, comparing) => {\n      if (!this.hasUTCPlugin()) {\n        return value.isBefore(comparing, 'year');\n      }\n      return !this.isSameYear(value, comparing) && value.utc() < comparing.utc();\n    };\n    this.isBeforeDay = (value, comparing) => {\n      if (!this.hasUTCPlugin()) {\n        return value.isBefore(comparing, 'day');\n      }\n      return !this.isSameDay(value, comparing) && value.utc() < comparing.utc();\n    };\n    this.isWithinRange = (value, [start, end]) => {\n      return value >= start && value <= end;\n    };\n    this.startOfYear = value => {\n      return this.adjustOffset(value.startOf('year'));\n    };\n    this.startOfMonth = value => {\n      return this.adjustOffset(value.startOf('month'));\n    };\n    this.startOfWeek = value => {\n      return this.adjustOffset(value.startOf('week'));\n    };\n    this.startOfDay = value => {\n      return this.adjustOffset(value.startOf('day'));\n    };\n    this.endOfYear = value => {\n      return this.adjustOffset(value.endOf('year'));\n    };\n    this.endOfMonth = value => {\n      return this.adjustOffset(value.endOf('month'));\n    };\n    this.endOfWeek = value => {\n      return this.adjustOffset(value.endOf('week'));\n    };\n    this.endOfDay = value => {\n      return this.adjustOffset(value.endOf('day'));\n    };\n    this.addYears = (value, amount) => {\n      return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'year') : value.add(amount, 'year'));\n    };\n    this.addMonths = (value, amount) => {\n      return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'month') : value.add(amount, 'month'));\n    };\n    this.addWeeks = (value, amount) => {\n      return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'week') : value.add(amount, 'week'));\n    };\n    this.addDays = (value, amount) => {\n      return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'day') : value.add(amount, 'day'));\n    };\n    this.addHours = (value, amount) => {\n      return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'hour') : value.add(amount, 'hour'));\n    };\n    this.addMinutes = (value, amount) => {\n      return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'minute') : value.add(amount, 'minute'));\n    };\n    this.addSeconds = (value, amount) => {\n      return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'second') : value.add(amount, 'second'));\n    };\n    this.getYear = value => {\n      return value.year();\n    };\n    this.getMonth = value => {\n      return value.month();\n    };\n    this.getDate = value => {\n      return value.date();\n    };\n    this.getHours = value => {\n      return value.hour();\n    };\n    this.getMinutes = value => {\n      return value.minute();\n    };\n    this.getSeconds = value => {\n      return value.second();\n    };\n    this.getMilliseconds = value => {\n      return value.millisecond();\n    };\n    this.setYear = (value, year) => {\n      return this.adjustOffset(value.set('year', year));\n    };\n    this.setMonth = (value, month) => {\n      return this.adjustOffset(value.set('month', month));\n    };\n    this.setDate = (value, date) => {\n      return this.adjustOffset(value.set('date', date));\n    };\n    this.setHours = (value, hours) => {\n      return this.adjustOffset(value.set('hour', hours));\n    };\n    this.setMinutes = (value, minutes) => {\n      return this.adjustOffset(value.set('minute', minutes));\n    };\n    this.setSeconds = (value, seconds) => {\n      return this.adjustOffset(value.set('second', seconds));\n    };\n    this.setMilliseconds = (value, milliseconds) => {\n      return this.adjustOffset(value.set('millisecond', milliseconds));\n    };\n    this.getDaysInMonth = value => {\n      return value.daysInMonth();\n    };\n    this.getNextMonth = value => {\n      return this.addMonths(value, 1);\n    };\n    this.getPreviousMonth = value => {\n      return this.addMonths(value, -1);\n    };\n    this.getMonthArray = value => {\n      const firstMonth = value.startOf('year');\n      const monthArray = [firstMonth];\n      while (monthArray.length < 12) {\n        const prevMonth = monthArray[monthArray.length - 1];\n        monthArray.push(this.addMonths(prevMonth, 1));\n      }\n      return monthArray;\n    };\n    this.mergeDateAndTime = (dateParam, timeParam) => {\n      return dateParam.hour(timeParam.hour()).minute(timeParam.minute()).second(timeParam.second());\n    };\n    this.getWeekdays = () => {\n      const start = this.dayjs().startOf('week');\n      return [0, 1, 2, 3, 4, 5, 6].map(diff => this.formatByString(this.addDays(start, diff), 'dd'));\n    };\n    this.getWeekArray = value => {\n      const cleanValue = this.setLocaleToValue(value);\n      const start = cleanValue.startOf('month').startOf('week');\n      const end = cleanValue.endOf('month').endOf('week');\n      let count = 0;\n      let current = start;\n      const nestedWeeks = [];\n      while (current < end) {\n        const weekNumber = Math.floor(count / 7);\n        nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];\n        nestedWeeks[weekNumber].push(current);\n        current = this.addDays(current, 1);\n        count += 1;\n      }\n      return nestedWeeks;\n    };\n    this.getWeekNumber = value => {\n      return value.week();\n    };\n    this.getYearRange = (start, end) => {\n      const startDate = start.startOf('year');\n      const endDate = end.endOf('year');\n      const years = [];\n      let current = startDate;\n      while (current < endDate) {\n        years.push(current);\n        current = this.addYears(current, 1);\n      }\n      return years;\n    };\n    this.getMeridiemText = ampm => {\n      return ampm === 'am' ? 'AM' : 'PM';\n    };\n    this.rawDayJsInstance = instance;\n    this.dayjs = withLocale((_this$rawDayJsInstanc = this.rawDayJsInstance) != null ? _this$rawDayJsInstanc : defaultDayjs, _locale);\n    this.locale = _locale;\n    this.formats = _extends({}, defaultFormats, formats);\n    defaultDayjs.extend(weekOfYear);\n  }\n}", "export const buildDeprecatedPropsWarning = message => {\n  let alreadyWarned = false;\n  if (process.env.NODE_ENV === 'production') {\n    return () => {};\n  }\n  const cleanMessage = Array.isArray(message) ? message.join('\\n') : message;\n  return deprecatedProps => {\n    const deprecatedKeys = Object.entries(deprecatedProps).filter(([, value]) => value !== undefined).map(([key]) => `- ${key}`);\n    if (!alreadyWarned && deprecatedKeys.length > 0) {\n      alreadyWarned = true;\n      console.warn([cleanMessage, 'deprecated props observed:', ...deprecatedKeys].join('\\n'));\n    }\n  };\n};\nexport const buildWarning = (message, gravity = 'warning') => {\n  let alreadyWarned = false;\n  const cleanMessage = Array.isArray(message) ? message.join('\\n') : message;\n  return () => {\n    if (!alreadyWarned) {\n      alreadyWarned = true;\n      if (gravity === 'error') {\n        console.error(cleanMessage);\n      } else {\n        console.warn(cleanMessage);\n      }\n    }\n  };\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;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { MuiPickersAdapterContext } from '../../LocalizationProvider/LocalizationProvider';\nimport { DEFAULT_LOCALE } from '../../locales/enUS';\nexport const useLocalizationContext = () => {\n  const localization = React.useContext(MuiPickersAdapterContext);\n  if (localization === null) {\n    throw new Error(['MUI: Can not find the date and time pickers localization context.', 'It looks like you forgot to wrap your component in LocalizationProvider.', 'This can also happen if you are bundling multiple versions of the `@mui/x-date-pickers` package'].join('\\n'));\n  }\n  if (localization.utils === null) {\n    throw new Error(['MUI: Can not find the date and time pickers adapter from its localization context.', 'It looks like you forgot to pass a `dateAdapter` to your LocalizationProvider.'].join('\\n'));\n  }\n  const localeText = React.useMemo(() => _extends({}, DEFAULT_LOCALE, localization.localeText), [localization.localeText]);\n  return React.useMemo(() => _extends({}, localization, {\n    localeText\n  }), [localization, localeText]);\n};\nexport const useUtils = () => useLocalizationContext().utils;\nexport const useDefaultDates = () => useLocalizationContext().defaultDates;\nexport const useLocaleText = () => useLocalizationContext().localeText;\nexport const useNow = timezone => {\n  const utils = useUtils();\n  const now = React.useRef();\n  if (now.current === undefined) {\n    now.current = utils.dateWithTimezone(undefined, timezone);\n  }\n  return now.current;\n};", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"localeText\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const MuiPickersAdapterContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n  MuiPickersAdapterContext.displayName = 'MuiPickersAdapterContext';\n}\n/**\n * Demos:\n *\n * - [Date format and localization](https://mui.com/x/react-date-pickers/adapters-locale/)\n * - [Calendar systems](https://mui.com/x/react-date-pickers/calendar-systems/)\n * - [Translated components](https://mui.com/x/react-date-pickers/localization/)\n * - [UTC and timezones](https://mui.com/x/react-date-pickers/timezone/)\n *\n * API:\n *\n * - [LocalizationProvider API](https://mui.com/x/api/date-pickers/localization-provider/)\n */\nexport const LocalizationProvider = function LocalizationProvider(inProps) {\n  var _React$useContext;\n  const {\n      localeText: inLocaleText\n    } = inProps,\n    otherInProps = _objectWithoutPropertiesLoose(inProps, _excluded);\n  const {\n    utils: parentUtils,\n    localeText: parentLocaleText\n  } = (_React$useContext = React.useContext(MuiPickersAdapterContext)) != null ? _React$useContext : {\n    utils: undefined,\n    localeText: undefined\n  };\n  const props = useThemeProps({\n    // We don't want to pass the `localeText` prop to the theme, that way it will always return the theme value,\n    // We will then merge this theme value with our value manually\n    props: otherInProps,\n    name: 'MuiLocalizationProvider'\n  });\n  const {\n    children,\n    dateAdapter: DateAdapter,\n    dateFormats,\n    dateLibInstance,\n    adapterLocale,\n    localeText: themeLocaleText\n  } = props;\n  const localeText = React.useMemo(() => _extends({}, themeLocaleText, parentLocaleText, inLocaleText), [themeLocaleText, parentLocaleText, inLocaleText]);\n  const utils = React.useMemo(() => {\n    if (!DateAdapter) {\n      if (parentUtils) {\n        return parentUtils;\n      }\n      return null;\n    }\n    const adapter = new DateAdapter({\n      locale: adapterLocale,\n      formats: dateFormats,\n      instance: dateLibInstance\n    });\n    if (!adapter.isMUIAdapter) {\n      throw new Error(['MUI: The date adapter should be imported from `@mui/x-date-pickers` or `@mui/x-date-pickers-pro`, not from `@date-io`', \"For example, `import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'` instead of `import AdapterDayjs from '@date-io/dayjs'`\", 'More information on the installation documentation: https://mui.com/x/react-date-pickers/getting-started/#installation'].join(`\\n`));\n    }\n    return adapter;\n  }, [DateAdapter, adapterLocale, dateFormats, dateLibInstance, parentUtils]);\n  const defaultDates = React.useMemo(() => {\n    if (!utils) {\n      return null;\n    }\n    return {\n      minDate: utils.date('1900-01-01T00:00:00.000'),\n      maxDate: utils.date('2099-12-31T00:00:00.000')\n    };\n  }, [utils]);\n  const contextValue = React.useMemo(() => {\n    return {\n      utils,\n      defaultDates,\n      localeText\n    };\n  }, [defaultDates, utils, localeText]);\n  return /*#__PURE__*/_jsx(MuiPickersAdapterContext.Provider, {\n    value: contextValue,\n    children: children\n  });\n};\nprocess.env.NODE_ENV !== \"production\" ? LocalizationProvider.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Locale for the date library you are using\n   */\n  adapterLocale: PropTypes.any,\n  children: PropTypes.node,\n  /**\n   * Date library adapter class function.\n   * @see See the localization provider {@link https://mui.com/x/react-date-pickers/getting-started/#setup-your-date-library-adapter date adapter setup section} for more details.\n   */\n  dateAdapter: PropTypes.func,\n  /**\n   * Formats that are used for any child pickers\n   */\n  dateFormats: PropTypes.shape({\n    dayOfMonth: PropTypes.string,\n    fullDate: PropTypes.string,\n    fullDateTime: PropTypes.string,\n    fullDateTime12h: PropTypes.string,\n    fullDateTime24h: PropTypes.string,\n    fullDateWithWeekday: PropTypes.string,\n    fullTime: PropTypes.string,\n    fullTime12h: PropTypes.string,\n    fullTime24h: PropTypes.string,\n    hours12h: PropTypes.string,\n    hours24h: PropTypes.string,\n    keyboardDate: PropTypes.string,\n    keyboardDateTime: PropTypes.string,\n    keyboardDateTime12h: PropTypes.string,\n    keyboardDateTime24h: PropTypes.string,\n    meridiem: PropTypes.string,\n    minutes: PropTypes.string,\n    month: PropTypes.string,\n    monthAndDate: PropTypes.string,\n    monthAndYear: PropTypes.string,\n    monthShort: PropTypes.string,\n    normalDate: PropTypes.string,\n    normalDateWithWeekday: PropTypes.string,\n    seconds: PropTypes.string,\n    shortDate: PropTypes.string,\n    weekday: PropTypes.string,\n    weekdayShort: PropTypes.string,\n    year: PropTypes.string\n  }),\n  /**\n   * Date library instance you are using, if it has some global overrides\n   * ```jsx\n   * dateLibInstance={momentTimeZone}\n   * ```\n   */\n  dateLibInstance: PropTypes.any,\n  /**\n   * Locale for components texts\n   */\n  localeText: PropTypes.object\n} : void 0;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport const getPickersLocalization = pickersTranslations => {\n  return {\n    components: {\n      MuiLocalizationProvider: {\n        defaultProps: {\n          localeText: _extends({}, pickersTranslations)\n        }\n      }\n    }\n  };\n};", "import { getPickersLocalization } from './utils/getPickersLocalization';\n\n// This object is not Partial<PickersLocaleText> because it is the default values\n\nconst enUSPickers = {\n  // Calendar navigation\n  previousMonth: 'Previous month',\n  nextMonth: 'Next month',\n  // View navigation\n  openPreviousView: 'open previous view',\n  openNextView: 'open next view',\n  calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? 'year view is open, switch to calendar view' : 'calendar view is open, switch to year view',\n  // DateRange placeholders\n  start: 'Start',\n  end: 'End',\n  // Action bar\n  cancelButtonLabel: 'Cancel',\n  clearButtonLabel: 'Clear',\n  okButtonLabel: 'OK',\n  todayButtonLabel: 'Today',\n  // Toolbar titles\n  datePickerToolbarTitle: 'Select date',\n  dateTimePickerToolbarTitle: 'Select date & time',\n  timePickerToolbarTitle: 'Select time',\n  dateRangePickerToolbarTitle: 'Select date range',\n  // Clock labels\n  clockLabelText: (view, time, adapter) => `Select ${view}. ${time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`}`,\n  hoursClockNumberText: hours => `${hours} hours`,\n  minutesClockNumberText: minutes => `${minutes} minutes`,\n  secondsClockNumberText: seconds => `${seconds} seconds`,\n  // Digital clock labels\n  selectViewText: view => `Select ${view}`,\n  // Calendar labels\n  calendarWeekNumberHeaderLabel: 'Week number',\n  calendarWeekNumberHeaderText: '#',\n  calendarWeekNumberAriaLabelText: weekNumber => `Week ${weekNumber}`,\n  calendarWeekNumberText: weekNumber => `${weekNumber}`,\n  // Open picker labels\n  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Choose date, selected date is ${utils.format(value, 'fullDate')}` : 'Choose date',\n  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Choose time, selected time is ${utils.format(value, 'fullTime')}` : 'Choose time',\n  fieldClearLabel: 'Clear value',\n  // Table labels\n  timeTableLabel: 'pick time',\n  dateTableLabel: 'pick date',\n  // Field section placeholders\n  fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),\n  fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',\n  fieldDayPlaceholder: () => 'DD',\n  fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',\n  fieldHoursPlaceholder: () => 'hh',\n  fieldMinutesPlaceholder: () => 'mm',\n  fieldSecondsPlaceholder: () => 'ss',\n  fieldMeridiemPlaceholder: () => 'aa'\n};\nexport const DEFAULT_LOCALE = enUSPickers;\nexport const enUS = getPickersLocalization(enUSPickers);", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"slots\", \"slotProps\", \"isNextDisabled\", \"isNextHidden\", \"onGoToNext\", \"nextLabel\", \"isPreviousDisabled\", \"isPreviousHidden\", \"onGoToPrevious\", \"previousLabel\"],\n  _excluded2 = [\"ownerState\"],\n  _excluded3 = [\"ownerState\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Typography from '@mui/material/Typography';\nimport { useTheme, styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { useSlotProps } from '@mui/base/utils';\nimport IconButton from '@mui/material/IconButton';\nimport { ArrowLeftIcon, ArrowRightIcon } from '../../../icons';\nimport { getPickersArrowSwitcherUtilityClass } from './pickersArrowSwitcherClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersArrowSwitcherRoot = styled('div', {\n  name: 'MuiPickersArrowSwitcher',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'flex'\n});\nconst PickersArrowSwitcherSpacer = styled('div', {\n  name: 'MuiPickersArrowSwitcher',\n  slot: 'Spacer',\n  overridesResolver: (props, styles) => styles.spacer\n})(({\n  theme\n}) => ({\n  width: theme.spacing(3)\n}));\nconst PickersArrowSwitcherButton = styled(IconButton, {\n  name: 'MuiPickersArrowSwitcher',\n  slot: 'Button',\n  overridesResolver: (props, styles) => styles.button\n})(({\n  ownerState\n}) => _extends({}, ownerState.hidden && {\n  visibility: 'hidden'\n}));\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    spacer: ['spacer'],\n    button: ['button']\n  };\n  return composeClasses(slots, getPickersArrowSwitcherUtilityClass, classes);\n};\nexport const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function PickersArrowSwitcher(inProps, ref) {\n  var _slots$previousIconBu, _slots$nextIconButton, _slots$leftArrowIcon, _slots$rightArrowIcon;\n  const theme = useTheme();\n  const isRTL = theme.direction === 'rtl';\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersArrowSwitcher'\n  });\n  const {\n      children,\n      className,\n      slots,\n      slotProps,\n      isNextDisabled,\n      isNextHidden,\n      onGoToNext,\n      nextLabel,\n      isPreviousDisabled,\n      isPreviousHidden,\n      onGoToPrevious,\n      previousLabel\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  const nextProps = {\n    isDisabled: isNextDisabled,\n    isHidden: isNextHidden,\n    goTo: onGoToNext,\n    label: nextLabel\n  };\n  const previousProps = {\n    isDisabled: isPreviousDisabled,\n    isHidden: isPreviousHidden,\n    goTo: onGoToPrevious,\n    label: previousLabel\n  };\n  const PreviousIconButton = (_slots$previousIconBu = slots == null ? void 0 : slots.previousIconButton) != null ? _slots$previousIconBu : PickersArrowSwitcherButton;\n  const previousIconButtonProps = useSlotProps({\n    elementType: PreviousIconButton,\n    externalSlotProps: slotProps == null ? void 0 : slotProps.previousIconButton,\n    additionalProps: {\n      size: 'medium',\n      title: previousProps.label,\n      'aria-label': previousProps.label,\n      disabled: previousProps.isDisabled,\n      edge: 'end',\n      onClick: previousProps.goTo\n    },\n    ownerState: _extends({}, ownerState, {\n      hidden: previousProps.isHidden\n    }),\n    className: classes.button\n  });\n  const NextIconButton = (_slots$nextIconButton = slots == null ? void 0 : slots.nextIconButton) != null ? _slots$nextIconButton : PickersArrowSwitcherButton;\n  const nextIconButtonProps = useSlotProps({\n    elementType: NextIconButton,\n    externalSlotProps: slotProps == null ? void 0 : slotProps.nextIconButton,\n    additionalProps: {\n      size: 'medium',\n      title: nextProps.label,\n      'aria-label': nextProps.label,\n      disabled: nextProps.isDisabled,\n      edge: 'start',\n      onClick: nextProps.goTo\n    },\n    ownerState: _extends({}, ownerState, {\n      hidden: nextProps.isHidden\n    }),\n    className: classes.button\n  });\n  const LeftArrowIcon = (_slots$leftArrowIcon = slots == null ? void 0 : slots.leftArrowIcon) != null ? _slots$leftArrowIcon : ArrowLeftIcon;\n  // The spread is here to avoid this bug mui/material-ui#34056\n  const _useSlotProps = useSlotProps({\n      elementType: LeftArrowIcon,\n      externalSlotProps: slotProps == null ? void 0 : slotProps.leftArrowIcon,\n      additionalProps: {\n        fontSize: 'inherit'\n      },\n      ownerState: undefined\n    }),\n    leftArrowIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);\n  const RightArrowIcon = (_slots$rightArrowIcon = slots == null ? void 0 : slots.rightArrowIcon) != null ? _slots$rightArrowIcon : ArrowRightIcon;\n  // The spread is here to avoid this bug mui/material-ui#34056\n  const _useSlotProps2 = useSlotProps({\n      elementType: RightArrowIcon,\n      externalSlotProps: slotProps == null ? void 0 : slotProps.rightArrowIcon,\n      additionalProps: {\n        fontSize: 'inherit'\n      },\n      ownerState: undefined\n    }),\n    rightArrowIconProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);\n  return /*#__PURE__*/_jsxs(PickersArrowSwitcherRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState\n  }, other, {\n    children: [/*#__PURE__*/_jsx(PreviousIconButton, _extends({}, previousIconButtonProps, {\n      children: isRTL ? /*#__PURE__*/_jsx(RightArrowIcon, _extends({}, rightArrowIconProps)) : /*#__PURE__*/_jsx(LeftArrowIcon, _extends({}, leftArrowIconProps))\n    })), children ? /*#__PURE__*/_jsx(Typography, {\n      variant: \"subtitle1\",\n      component: \"span\",\n      children: children\n    }) : /*#__PURE__*/_jsx(PickersArrowSwitcherSpacer, {\n      className: classes.spacer,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(NextIconButton, _extends({}, nextIconButtonProps, {\n      children: isRTL ? /*#__PURE__*/_jsx(LeftArrowIcon, _extends({}, leftArrowIconProps)) : /*#__PURE__*/_jsx(RightArrowIcon, _extends({}, rightArrowIconProps))\n    }))]\n  }));\n});", "/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nexport function isHostComponent(element) {\n  return typeof element === 'string';\n}", "import { isHostComponent } from './isHostComponent';\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nexport function appendOwnerState(elementType, otherProps, ownerState) {\n  if (elementType === undefined || isHostComponent(elementType)) {\n    return otherProps;\n  }\n  return {\n    ...otherProps,\n    ownerState: {\n      ...otherProps.ownerState,\n      ...ownerState\n    }\n  };\n}", "/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nexport function extractEventHandlers(object, excludeKeys = []) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}", "/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nexport function resolveComponentProps(componentProps, ownerState, slotState) {\n  if (typeof componentProps === 'function') {\n    return componentProps(ownerState, slotState);\n  }\n  return componentProps;\n}", "'use client';\n\nimport * as React from 'react';\n\n/**\n * Merges refs into a single memoized callback ref or `null`.\n *\n * ```tsx\n * const rootRef = React.useRef<Instance>(null);\n * const refFork = useForkRef(rootRef, props.ref);\n *\n * return (\n *   <Root {...props} ref={refFork} />\n * );\n * ```\n *\n * @param {Array<React.Ref<Instance> | undefined>} refs The ref array.\n * @returns {React.RefCallback<Instance> | null} The new ref callback.\n */\nexport default function useForkRef(...refs) {\n  const cleanupRef = React.useRef(undefined);\n  const refEffect = React.useCallback(instance => {\n    const cleanups = refs.map(ref => {\n      if (ref == null) {\n        return null;\n      }\n      if (typeof ref === 'function') {\n        const refCallback = ref;\n        const refCleanup = refCallback(instance);\n        return typeof refCleanup === 'function' ? refCleanup : () => {\n          refCallback(null);\n        };\n      }\n      ref.current = instance;\n      return () => {\n        ref.current = null;\n      };\n    });\n    return () => {\n      cleanups.forEach(refCleanup => refCleanup?.());\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n  return React.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return value => {\n      if (cleanupRef.current) {\n        cleanupRef.current();\n        cleanupRef.current = undefined;\n      }\n      if (value != null) {\n        cleanupRef.current = refEffect(value);\n      }\n    };\n    // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- intentionally ignoring that the dependency array must be an array literal\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}", "/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nexport function omitEventHandlers(object) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}", "import clsx from 'clsx';\nimport { extractEventHandlers } from './extractEventHandlers';\nimport { omitEventHandlers } from './omitEventHandlers';\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nexport function mergeSlotProps(parameters) {\n  const {\n    getSlotProps,\n    additionalProps,\n    externalSlotProps,\n    externalForwardedProps,\n    className\n  } = parameters;\n  if (!getSlotProps) {\n    // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n    // so we can simply merge all the props without having to worry about extracting event handlers.\n    const joinedClasses = clsx(additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n    const mergedStyle = {\n      ...additionalProps?.style,\n      ...externalForwardedProps?.style,\n      ...externalSlotProps?.style\n    };\n    const props = {\n      ...additionalProps,\n      ...externalForwardedProps,\n      ...externalSlotProps\n    };\n    if (joinedClasses.length > 0) {\n      props.className = joinedClasses;\n    }\n    if (Object.keys(mergedStyle).length > 0) {\n      props.style = mergedStyle;\n    }\n    return {\n      props,\n      internalRef: undefined\n    };\n  }\n\n  // In this case, getSlotProps is responsible for calling the external event handlers.\n  // We don't need to include them in the merged props because of this.\n\n  const eventHandlers = extractEventHandlers({\n    ...externalForwardedProps,\n    ...externalSlotProps\n  });\n  const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n  const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n  const internalSlotProps = getSlotProps(eventHandlers);\n\n  // The order of classes is important here.\n  // Emotion (that we use in libraries consuming Base UI) depends on this order\n  // to properly override style. It requires the most important classes to be last\n  // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n  const joinedClasses = clsx(internalSlotProps?.className, additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n  const mergedStyle = {\n    ...internalSlotProps?.style,\n    ...additionalProps?.style,\n    ...externalForwardedProps?.style,\n    ...externalSlotProps?.style\n  };\n  const props = {\n    ...internalSlotProps,\n    ...additionalProps,\n    ...otherPropsWithoutEventHandlers,\n    ...componentsPropsWithoutEventHandlers\n  };\n  if (joinedClasses.length > 0) {\n    props.className = joinedClasses;\n  }\n  if (Object.keys(mergedStyle).length > 0) {\n    props.style = mergedStyle;\n  }\n  return {\n    props,\n    internalRef: internalSlotProps.ref\n  };\n}", "'use client';\n\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { appendOwnerState } from './appendOwnerState';\nimport { mergeSlotProps } from './mergeSlotProps';\nimport { resolveComponentProps } from './resolveComponentProps';\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nexport function useSlotProps(parameters) {\n  const {\n    elementType,\n    externalSlotProps,\n    ownerState,\n    skipResolvingSlotProps = false,\n    ...rest\n  } = parameters;\n  const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n  const {\n    props: mergedProps,\n    internalRef\n  } = mergeSlotProps({\n    ...rest,\n    externalSlotProps: resolvedComponentsProps\n  });\n  const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.additionalProps?.ref);\n  const props = appendOwnerState(elementType, {\n    ...mergedProps,\n    ref\n  }, ownerState);\n  return props;\n}", "import { createSvgIcon } from '@mui/material/utils';\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ArrowDropDownIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');\n\n/**\n * @ignore - internal component.\n */\nexport const ArrowLeftIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'ArrowLeft');\n\n/**\n * @ignore - internal component.\n */\nexport const ArrowRightIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'ArrowRight');\n\n/**\n * @ignore - internal component.\n */\nexport const CalendarIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z\"\n}), 'Calendar');\n\n/**\n * @ignore - internal component.\n */\nexport const ClockIcon = createSvgIcon( /*#__PURE__*/_jsxs(React.Fragment, {\n  children: [/*#__PURE__*/_jsx(\"path\", {\n    d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n  }), /*#__PURE__*/_jsx(\"path\", {\n    d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n  })]\n}), 'Clock');\n\n/**\n * @ignore - internal component.\n */\nexport const DateRangeIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z\"\n}), 'DateRange');\n\n/**\n * @ignore - internal component.\n */\nexport const TimeIcon = createSvgIcon( /*#__PURE__*/_jsxs(React.Fragment, {\n  children: [/*#__PURE__*/_jsx(\"path\", {\n    d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n  }), /*#__PURE__*/_jsx(\"path\", {\n    d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n  })]\n}), 'Time');\n\n/**\n * @ignore - internal component.\n */\nexport const ClearIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');", "import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nexport function getPickersArrowSwitcherUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersArrowSwitcher', slot);\n}\nexport const pickersArrowSwitcherClasses = generateUtilityClasses('MuiPickersArrowSwitcher', ['root', 'spacer', 'button']);", "import { areViewsEqual } from './views';\nconst timeViews = ['hours', 'minutes', 'seconds'];\nexport const isTimeView = view => timeViews.includes(view);\nexport const isInternalTimeView = view => timeViews.includes(view) || view === 'meridiem';\nexport const getMeridiem = (date, utils) => {\n  if (!date) {\n    return null;\n  }\n  return utils.getHours(date) >= 12 ? 'pm' : 'am';\n};\nexport const convertValueToMeridiem = (value, meridiem, ampm) => {\n  if (ampm) {\n    const currentMeridiem = value >= 12 ? 'pm' : 'am';\n    if (currentMeridiem !== meridiem) {\n      return meridiem === 'am' ? value - 12 : value + 12;\n    }\n  }\n  return value;\n};\nexport const convertToMeridiem = (time, meridiem, ampm, utils) => {\n  const newHoursAmount = convertValueToMeridiem(utils.getHours(time), meridiem, ampm);\n  return utils.setHours(time, newHoursAmount);\n};\nexport const getSecondsInDay = (date, utils) => {\n  return utils.getHours(date) * 3600 + utils.getMinutes(date) * 60 + utils.getSeconds(date);\n};\nexport const createIsAfterIgnoreDatePart = (disableIgnoringDatePartForTimeValidation, utils) => (dateLeft, dateRight) => {\n  if (disableIgnoringDatePartForTimeValidation) {\n    return utils.isAfter(dateLeft, dateRight);\n  }\n  return getSecondsInDay(dateLeft, utils) > getSecondsInDay(dateRight, utils);\n};\nexport const resolveTimeFormat = (utils, {\n  format,\n  views,\n  ampm\n}) => {\n  if (format != null) {\n    return format;\n  }\n  const formats = utils.formats;\n  if (areViewsEqual(views, ['hours'])) {\n    return ampm ? `${formats.hours12h} ${formats.meridiem}` : formats.hours24h;\n  }\n  if (areViewsEqual(views, ['minutes'])) {\n    return formats.minutes;\n  }\n  if (areViewsEqual(views, ['seconds'])) {\n    return formats.seconds;\n  }\n  if (areViewsEqual(views, ['minutes', 'seconds'])) {\n    return `${formats.minutes}:${formats.seconds}`;\n  }\n  if (areViewsEqual(views, ['hours', 'minutes', 'seconds'])) {\n    return ampm ? `${formats.hours12h}:${formats.minutes}:${formats.seconds} ${formats.meridiem}` : `${formats.hours24h}:${formats.minutes}:${formats.seconds}`;\n  }\n  return ampm ? `${formats.hours12h}:${formats.minutes} ${formats.meridiem}` : `${formats.hours24h}:${formats.minutes}`;\n};", "import * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { unstable_useControlled as useControlled } from '@mui/utils';\nlet warnedOnceNotValidView = false;\nexport function useViews({\n  onChange,\n  onViewChange,\n  openTo,\n  view: inView,\n  views,\n  autoFocus,\n  focusedView: inFocusedView,\n  onFocusedViewChange\n}) {\n  var _views, _views2;\n  if (process.env.NODE_ENV !== 'production') {\n    if (!warnedOnceNotValidView) {\n      if (inView != null && !views.includes(inView)) {\n        console.warn(`MUI: \\`view=\"${inView}\"\\` is not a valid prop.`, `It must be an element of \\`views=[\"${views.join('\", \"')}\"]\\`.`);\n        warnedOnceNotValidView = true;\n      }\n      if (inView == null && openTo != null && !views.includes(openTo)) {\n        console.warn(`MUI: \\`openTo=\"${openTo}\"\\` is not a valid prop.`, `It must be an element of \\`views=[\"${views.join('\", \"')}\"]\\`.`);\n        warnedOnceNotValidView = true;\n      }\n    }\n  }\n  const previousOpenTo = React.useRef(openTo);\n  const previousViews = React.useRef(views);\n  const defaultView = React.useRef(views.includes(openTo) ? openTo : views[0]);\n  const [view, setView] = useControlled({\n    name: 'useViews',\n    state: 'view',\n    controlled: inView,\n    default: defaultView.current\n  });\n  const defaultFocusedView = React.useRef(autoFocus ? view : null);\n  const [focusedView, setFocusedView] = useControlled({\n    name: 'useViews',\n    state: 'focusedView',\n    controlled: inFocusedView,\n    default: defaultFocusedView.current\n  });\n  React.useEffect(() => {\n    // Update the current view when `openTo` or `views` props change\n    if (previousOpenTo.current && previousOpenTo.current !== openTo || previousViews.current && previousViews.current.some(previousView => !views.includes(previousView))) {\n      setView(views.includes(openTo) ? openTo : views[0]);\n      previousViews.current = views;\n      previousOpenTo.current = openTo;\n    }\n  }, [openTo, setView, view, views]);\n  const viewIndex = views.indexOf(view);\n  const previousView = (_views = views[viewIndex - 1]) != null ? _views : null;\n  const nextView = (_views2 = views[viewIndex + 1]) != null ? _views2 : null;\n  const handleFocusedViewChange = useEventCallback((viewToFocus, hasFocus) => {\n    if (hasFocus) {\n      // Focus event\n      setFocusedView(viewToFocus);\n    } else {\n      // Blur event\n      setFocusedView(prevFocusedView => viewToFocus === prevFocusedView ? null : prevFocusedView // If false the blur is due to view switching\n      );\n    }\n    onFocusedViewChange == null || onFocusedViewChange(viewToFocus, hasFocus);\n  });\n  const handleChangeView = useEventCallback(newView => {\n    // always keep the focused view in sync\n    handleFocusedViewChange(newView, true);\n    if (newView === view) {\n      return;\n    }\n    setView(newView);\n    if (onViewChange) {\n      onViewChange(newView);\n    }\n  });\n  const goToNextView = useEventCallback(() => {\n    if (nextView) {\n      handleChangeView(nextView);\n    }\n  });\n  const setValueAndGoToNextView = useEventCallback((value, currentViewSelectionState, selectedView) => {\n    const isSelectionFinishedOnCurrentView = currentViewSelectionState === 'finish';\n    const hasMoreViews = selectedView ?\n    // handles case like `DateTimePicker`, where a view might return a `finish` selection state\n    // but we it's not the final view given all `views` -> overall selection state should be `partial`.\n    views.indexOf(selectedView) < views.length - 1 : Boolean(nextView);\n    const globalSelectionState = isSelectionFinishedOnCurrentView && hasMoreViews ? 'partial' : currentViewSelectionState;\n    onChange(value, globalSelectionState, selectedView);\n    // Detects if the selected view is not the active one.\n    // Can happen if multiple views are displayed, like in `DesktopDateTimePicker` or `MultiSectionDigitalClock`.\n    if (selectedView && selectedView !== view) {\n      const nextViewAfterSelected = views[views.indexOf(selectedView) + 1];\n      if (nextViewAfterSelected) {\n        // move to next view after the selected one\n        handleChangeView(nextViewAfterSelected);\n      }\n    } else if (isSelectionFinishedOnCurrentView) {\n      goToNextView();\n    }\n  });\n  return {\n    view,\n    setView: handleChangeView,\n    focusedView,\n    setFocusedView: handleFocusedViewChange,\n    nextView,\n    previousView,\n    // Always return up to date default view instead of the initial one (i.e. defaultView.current)\n    defaultView: views.includes(openTo) ? openTo : views[0],\n    goToNextView,\n    setValueAndGoToNextView\n  };\n}", "import * as React from 'react';\nimport { useUtils } from './useUtils';\nimport { getMeridiem, convertToMeridiem } from '../utils/time-utils';\nexport function useNextMonthDisabled(month, {\n  disableFuture,\n  maxDate,\n  timezone\n}) {\n  const utils = useUtils();\n  return React.useMemo(() => {\n    const now = utils.dateWithTimezone(undefined, timezone);\n    const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);\n    return !utils.isAfter(lastEnabledMonth, month);\n  }, [disableFuture, maxDate, month, utils, timezone]);\n}\nexport function usePreviousMonthDisabled(month, {\n  disablePast,\n  minDate,\n  timezone\n}) {\n  const utils = useUtils();\n  return React.useMemo(() => {\n    const now = utils.dateWithTimezone(undefined, timezone);\n    const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);\n    return !utils.isBefore(firstEnabledMonth, month);\n  }, [disablePast, minDate, month, utils, timezone]);\n}\nexport function useMeridiemMode(date, ampm, onChange, selectionState) {\n  const utils = useUtils();\n  const meridiemMode = getMeridiem(date, utils);\n  const handleMeridiemChange = React.useCallback(mode => {\n    const timeWithMeridiem = date == null ? null : convertToMeridiem(date, mode, Boolean(ampm), utils);\n    onChange(timeWithMeridiem, selectionState != null ? selectionState : 'partial');\n  }, [ampm, date, onChange, selectionState, utils]);\n  return {\n    meridiemMode,\n    handleMeridiemChange\n  };\n}", "import { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH, VIEW_HEIGHT } from '../../constants/dimensions';\nexport const PickerViewRoot = styled('div')({\n  overflow: 'hidden',\n  width: DIALOG_WIDTH,\n  maxHeight: VIEW_HEIGHT,\n  display: 'flex',\n  flexDirection: 'column',\n  margin: '0 auto'\n});", "export const DAY_SIZE = 36;\nexport const DAY_MARGIN = 2;\nexport const DIALOG_WIDTH = 320;\nexport const MAX_CALENDAR_HEIGHT = 280;\nexport const VIEW_HEIGHT = 334;\nexport const DIGITAL_CLOCK_VIEW_HEIGHT = 232;\nexport const MULTI_SECTION_CLOCK_SECTION_WIDTH = 48;", "import { areViewsEqual } from './views';\nexport const mergeDateAndTime = (utils, dateParam, timeParam) => {\n  let mergedDate = dateParam;\n  mergedDate = utils.setHours(mergedDate, utils.getHours(timeParam));\n  mergedDate = utils.setMinutes(mergedDate, utils.getMinutes(timeParam));\n  mergedDate = utils.setSeconds(mergedDate, utils.getSeconds(timeParam));\n  return mergedDate;\n};\nexport const findClosestEnabledDate = ({\n  date,\n  disableFuture,\n  disablePast,\n  maxDate,\n  minDate,\n  isDateDisabled,\n  utils,\n  timezone\n}) => {\n  const today = mergeDateAndTime(utils, utils.dateWithTimezone(undefined, timezone), date);\n  if (disablePast && utils.isBefore(minDate, today)) {\n    minDate = today;\n  }\n  if (disableFuture && utils.isAfter(maxDate, today)) {\n    maxDate = today;\n  }\n  let forward = date;\n  let backward = date;\n  if (utils.isBefore(date, minDate)) {\n    forward = minDate;\n    backward = null;\n  }\n  if (utils.isAfter(date, maxDate)) {\n    if (backward) {\n      backward = maxDate;\n    }\n    forward = null;\n  }\n  while (forward || backward) {\n    if (forward && utils.isAfter(forward, maxDate)) {\n      forward = null;\n    }\n    if (backward && utils.isBefore(backward, minDate)) {\n      backward = null;\n    }\n    if (forward) {\n      if (!isDateDisabled(forward)) {\n        return forward;\n      }\n      forward = utils.addDays(forward, 1);\n    }\n    if (backward) {\n      if (!isDateDisabled(backward)) {\n        return backward;\n      }\n      backward = utils.addDays(backward, -1);\n    }\n  }\n  return null;\n};\nexport const replaceInvalidDateByNull = (utils, value) => value == null || !utils.isValid(value) ? null : value;\nexport const applyDefaultDate = (utils, value, defaultValue) => {\n  if (value == null || !utils.isValid(value)) {\n    return defaultValue;\n  }\n  return value;\n};\nexport const areDatesEqual = (utils, a, b) => {\n  if (!utils.isValid(a) && a != null && !utils.isValid(b) && b != null) {\n    return true;\n  }\n  return utils.isEqual(a, b);\n};\nexport const getMonthsInYear = (utils, year) => {\n  const firstMonth = utils.startOfYear(year);\n  const months = [firstMonth];\n  while (months.length < 12) {\n    const prevMonth = months[months.length - 1];\n    months.push(utils.addMonths(prevMonth, 1));\n  }\n  return months;\n};\nexport const getTodayDate = (utils, timezone, valueType) => valueType === 'date' ? utils.startOfDay(utils.dateWithTimezone(undefined, timezone)) : utils.dateWithTimezone(undefined, timezone);\nexport const formatMeridiem = (utils, meridiem) => {\n  const date = utils.setHours(utils.date(), meridiem === 'am' ? 2 : 14);\n  return utils.format(date, 'meridiem');\n};\nconst dateViews = ['year', 'month', 'day'];\nexport const isDatePickerView = view => dateViews.includes(view);\nexport const resolveDateFormat = (utils, {\n  format,\n  views\n}, isInToolbar) => {\n  if (format != null) {\n    return format;\n  }\n  const formats = utils.formats;\n  if (areViewsEqual(views, ['year'])) {\n    return formats.year;\n  }\n  if (areViewsEqual(views, ['month'])) {\n    return formats.month;\n  }\n  if (areViewsEqual(views, ['day'])) {\n    return formats.dayOfMonth;\n  }\n  if (areViewsEqual(views, ['month', 'year'])) {\n    return `${formats.month} ${formats.year}`;\n  }\n  if (areViewsEqual(views, ['day', 'month'])) {\n    return `${formats.month} ${formats.dayOfMonth}`;\n  }\n  if (isInToolbar) {\n    // Little localization hack (Google is doing the same for android native pickers):\n    // For english localization it is convenient to include weekday into the date \"Mon, Jun 1\".\n    // For other locales using strings like \"June 1\", without weekday.\n    return /en/.test(utils.getCurrentLocaleCode()) ? formats.normalDateWithWeekday : formats.normalDate;\n  }\n  return formats.keyboardDate;\n};\nexport const getWeekdays = (utils, date) => {\n  const start = utils.startOfWeek(date);\n  return [0, 1, 2, 3, 4, 5, 6].map(diff => utils.addDays(start, diff));\n};", "import * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useControlled from '@mui/utils/useControlled';\nimport { useUtils } from './useUtils';\n/**\n * Hooks making sure that:\n * - The value returned by `onChange` always have the timezone of `props.value` or `props.defaultValue` if defined\n * - The value rendered is always the one from `props.timezone` if defined\n */\nexport const useValueWithTimezone = ({\n  timezone: timezoneProp,\n  value: valueProp,\n  defaultValue,\n  onChange,\n  valueManager\n}) => {\n  var _ref, _ref2;\n  const utils = useUtils();\n  const firstDefaultValue = React.useRef(defaultValue);\n  const inputValue = (_ref = valueProp != null ? valueProp : firstDefaultValue.current) != null ? _ref : valueManager.emptyValue;\n  const inputTimezone = React.useMemo(() => valueManager.getTimezone(utils, inputValue), [utils, valueManager, inputValue]);\n  const setInputTimezone = useEventCallback(newValue => {\n    if (inputTimezone == null) {\n      return newValue;\n    }\n    return valueManager.setTimezone(utils, inputTimezone, newValue);\n  });\n  const timezoneToRender = (_ref2 = timezoneProp != null ? timezoneProp : inputTimezone) != null ? _ref2 : 'default';\n  const valueWithTimezoneToRender = React.useMemo(() => valueManager.setTimezone(utils, timezoneToRender, inputValue), [valueManager, utils, timezoneToRender, inputValue]);\n  const handleValueChange = useEventCallback((newValue, ...otherParams) => {\n    const newValueWithInputTimezone = setInputTimezone(newValue);\n    onChange == null || onChange(newValueWithInputTimezone, ...otherParams);\n  });\n  return {\n    value: valueWithTimezoneToRender,\n    handleValueChange,\n    timezone: timezoneToRender\n  };\n};\n\n/**\n * Wrapper around `useControlled` and `useValueWithTimezone`\n */\nexport const useControlledValueWithTimezone = ({\n  name,\n  timezone: timezoneProp,\n  value: valueProp,\n  defaultValue,\n  onChange: onChangeProp,\n  valueManager\n}) => {\n  const [valueWithInputTimezone, setValue] = useControlled({\n    name,\n    state: 'value',\n    controlled: valueProp,\n    default: defaultValue != null ? defaultValue : valueManager.emptyValue\n  });\n  const onChange = useEventCallback((newValue, ...otherParams) => {\n    setValue(newValue);\n    onChangeProp == null || onChangeProp(newValue, ...otherParams);\n  });\n  return useValueWithTimezone({\n    timezone: timezoneProp,\n    value: valueWithInputTimezone,\n    defaultValue: undefined,\n    onChange,\n    valueManager\n  });\n};", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"value\", \"referenceDate\"];\nimport { areDatesEqual, getTodayDate, replaceInvalidDateByNull } from './date-utils';\nimport { getDefaultReferenceDate } from './getDefaultReferenceDate';\nimport { addPositionPropertiesToSections, createDateStrForInputFromSections } from '../hooks/useField/useField.utils';\nexport const singleItemValueManager = {\n  emptyValue: null,\n  getTodayValue: getTodayDate,\n  getInitialReferenceValue: _ref => {\n    let {\n        value,\n        referenceDate\n      } = _ref,\n      params = _objectWithoutPropertiesLoose(_ref, _excluded);\n    if (value != null && params.utils.isValid(value)) {\n      return value;\n    }\n    if (referenceDate != null) {\n      return referenceDate;\n    }\n    return getDefaultReferenceDate(params);\n  },\n  cleanValue: replaceInvalidDateByNull,\n  areValuesEqual: areDatesEqual,\n  isSameError: (a, b) => a === b,\n  hasError: error => error != null,\n  defaultErrorState: null,\n  getTimezone: (utils, value) => value == null || !utils.isValid(value) ? null : utils.getTimezone(value),\n  setTimezone: (utils, timezone, value) => value == null ? null : utils.setTimezone(value, timezone)\n};\nexport const singleItemFieldValueManager = {\n  updateReferenceValue: (utils, value, prevReferenceValue) => value == null || !utils.isValid(value) ? prevReferenceValue : value,\n  getSectionsFromValue: (utils, date, prevSections, isRTL, getSectionsFromDate) => {\n    const shouldReUsePrevDateSections = !utils.isValid(date) && !!prevSections;\n    if (shouldReUsePrevDateSections) {\n      return prevSections;\n    }\n    return addPositionPropertiesToSections(getSectionsFromDate(date), isRTL);\n  },\n  getValueStrFromSections: createDateStrForInputFromSections,\n  getActiveDateManager: (utils, state) => ({\n    date: state.value,\n    referenceDate: state.referenceValue,\n    getSections: sections => sections,\n    getNewValuesFromNewActiveDate: newActiveDate => ({\n      value: newActiveDate,\n      referenceValue: newActiveDate == null || !utils.isValid(newActiveDate) ? state.referenceValue : newActiveDate\n    })\n  }),\n  parseValueStr: (valueStr, referenceValue, parseDate) => parseDate(valueStr.trim(), referenceValue)\n};", "import { createIsAfterIgnoreDatePart } from './time-utils';\nimport { mergeDateAndTime, getTodayDate } from './date-utils';\nexport const SECTION_TYPE_GRANULARITY = {\n  year: 1,\n  month: 2,\n  day: 3,\n  hours: 4,\n  minutes: 5,\n  seconds: 6,\n  milliseconds: 7\n};\nexport const getSectionTypeGranularity = sections => Math.max(...sections.map(section => {\n  var _SECTION_TYPE_GRANULA;\n  return (_SECTION_TYPE_GRANULA = SECTION_TYPE_GRANULARITY[section.type]) != null ? _SECTION_TYPE_GRANULA : 1;\n}));\nexport const getViewsGranularity = views => Math.max(...views.map(view => {\n  var _SECTION_TYPE_GRANULA2;\n  return (_SECTION_TYPE_GRANULA2 = SECTION_TYPE_GRANULARITY[view]) != null ? _SECTION_TYPE_GRANULA2 : 1;\n}));\nconst roundDate = (utils, granularity, date) => {\n  if (granularity === SECTION_TYPE_GRANULARITY.year) {\n    return utils.startOfYear(date);\n  }\n  if (granularity === SECTION_TYPE_GRANULARITY.month) {\n    return utils.startOfMonth(date);\n  }\n  if (granularity === SECTION_TYPE_GRANULARITY.day) {\n    return utils.startOfDay(date);\n  }\n\n  // We don't have startOfHour / startOfMinute / startOfSecond\n  let roundedDate = date;\n  if (granularity < SECTION_TYPE_GRANULARITY.minutes) {\n    roundedDate = utils.setMinutes(roundedDate, 0);\n  }\n  if (granularity < SECTION_TYPE_GRANULARITY.seconds) {\n    roundedDate = utils.setSeconds(roundedDate, 0);\n  }\n  if (granularity < SECTION_TYPE_GRANULARITY.milliseconds) {\n    roundedDate = utils.setMilliseconds(roundedDate, 0);\n  }\n  return roundedDate;\n};\nexport const getDefaultReferenceDate = ({\n  props,\n  utils,\n  granularity,\n  timezone,\n  getTodayDate: inGetTodayDate\n}) => {\n  var _props$disableIgnorin;\n  let referenceDate = inGetTodayDate ? inGetTodayDate() : roundDate(utils, granularity, getTodayDate(utils, timezone));\n  if (props.minDate != null && utils.isAfterDay(props.minDate, referenceDate)) {\n    referenceDate = roundDate(utils, granularity, props.minDate);\n  }\n  if (props.maxDate != null && utils.isBeforeDay(props.maxDate, referenceDate)) {\n    referenceDate = roundDate(utils, granularity, props.maxDate);\n  }\n  const isAfter = createIsAfterIgnoreDatePart((_props$disableIgnorin = props.disableIgnoringDatePartForTimeValidation) != null ? _props$disableIgnorin : false, utils);\n  if (props.minTime != null && isAfter(props.minTime, referenceDate)) {\n    referenceDate = roundDate(utils, granularity, props.disableIgnoringDatePartForTimeValidation ? props.minTime : mergeDateAndTime(utils, referenceDate, props.minTime));\n  }\n  if (props.maxTime != null && isAfter(referenceDate, props.maxTime)) {\n    referenceDate = roundDate(utils, granularity, props.disableIgnoringDatePartForTimeValidation ? props.maxTime : mergeDateAndTime(utils, referenceDate, props.maxTime));\n  }\n  return referenceDate;\n};", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"day\", \"disabled\", \"disableHighlightToday\", \"disableMargin\", \"hidden\", \"isAnimating\", \"onClick\", \"onDaySelect\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onMouseDown\", \"onMouseEnter\", \"outsideCurrentMonth\", \"selected\", \"showDaysOutsideCurrentMonth\", \"children\", \"today\", \"isFirstVisibleCell\", \"isLastVisibleCell\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport { unstable_useEnhancedEffect as useEnhancedEffect, unstable_composeClasses as composeClasses, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { alpha, styled, useThemeProps } from '@mui/material/styles';\nimport { useUtils } from '../internals/hooks/useUtils';\nimport { DAY_SIZE, DAY_MARGIN } from '../internals/constants/dimensions';\nimport { getPickersDayUtilityClass, pickersDayClasses } from './pickersDayClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    selected,\n    disableMargin,\n    disableHighlightToday,\n    today,\n    disabled,\n    outsideCurrentMonth,\n    showDaysOutsideCurrentMonth,\n    classes\n  } = ownerState;\n  const isHiddenDaySpacingFiller = outsideCurrentMonth && !showDaysOutsideCurrentMonth;\n  const slots = {\n    root: ['root', selected && !isHiddenDaySpacingFiller && 'selected', disabled && 'disabled', !disableMargin && 'dayWithMargin', !disableHighlightToday && today && 'today', outsideCurrentMonth && showDaysOutsideCurrentMonth && 'dayOutsideMonth', isHiddenDaySpacingFiller && 'hiddenDaySpacingFiller'],\n    hiddenDaySpacingFiller: ['hiddenDaySpacingFiller']\n  };\n  return composeClasses(slots, getPickersDayUtilityClass, classes);\n};\nconst styleArg = ({\n  theme,\n  ownerState\n}) => _extends({}, theme.typography.caption, {\n  width: DAY_SIZE,\n  height: DAY_SIZE,\n  borderRadius: '50%',\n  padding: 0,\n  // explicitly setting to `transparent` to avoid potentially getting impacted by change from the overridden component\n  backgroundColor: 'transparent',\n  transition: theme.transitions.create('background-color', {\n    duration: theme.transitions.duration.short\n  }),\n  color: (theme.vars || theme).palette.text.primary,\n  '@media (pointer: fine)': {\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.hoverOpacity)\n    }\n  },\n  '&:focus': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.focusOpacity),\n    [`&.${pickersDayClasses.selected}`]: {\n      willChange: 'background-color',\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    }\n  },\n  [`&.${pickersDayClasses.selected}`]: {\n    color: (theme.vars || theme).palette.primary.contrastText,\n    backgroundColor: (theme.vars || theme).palette.primary.main,\n    fontWeight: theme.typography.fontWeightMedium,\n    '&:hover': {\n      willChange: 'background-color',\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    }\n  },\n  [`&.${pickersDayClasses.disabled}:not(.${pickersDayClasses.selected})`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  },\n  [`&.${pickersDayClasses.disabled}&.${pickersDayClasses.selected}`]: {\n    opacity: 0.6\n  }\n}, !ownerState.disableMargin && {\n  margin: `0 ${DAY_MARGIN}px`\n}, ownerState.outsideCurrentMonth && ownerState.showDaysOutsideCurrentMonth && {\n  color: (theme.vars || theme).palette.text.secondary\n}, !ownerState.disableHighlightToday && ownerState.today && {\n  [`&:not(.${pickersDayClasses.selected})`]: {\n    border: `1px solid ${(theme.vars || theme).palette.text.secondary}`\n  }\n});\nconst overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, !ownerState.disableMargin && styles.dayWithMargin, !ownerState.disableHighlightToday && ownerState.today && styles.today, !ownerState.outsideCurrentMonth && ownerState.showDaysOutsideCurrentMonth && styles.dayOutsideMonth, ownerState.outsideCurrentMonth && !ownerState.showDaysOutsideCurrentMonth && styles.hiddenDaySpacingFiller];\n};\nconst PickersDayRoot = styled(ButtonBase, {\n  name: 'MuiPickersDay',\n  slot: 'Root',\n  overridesResolver\n})(styleArg);\nconst PickersDayFiller = styled('div', {\n  name: 'MuiPickersDay',\n  slot: 'Root',\n  overridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({}, styleArg({\n  theme,\n  ownerState\n}), {\n  // visibility: 'hidden' does not work here as it hides the element from screen readers as well\n  opacity: 0,\n  pointerEvents: 'none'\n}));\nconst noop = () => {};\nconst PickersDayRaw = /*#__PURE__*/React.forwardRef(function PickersDay(inProps, forwardedRef) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersDay'\n  });\n  const {\n      autoFocus = false,\n      className,\n      day,\n      disabled = false,\n      disableHighlightToday = false,\n      disableMargin = false,\n      isAnimating,\n      onClick,\n      onDaySelect,\n      onFocus = noop,\n      onBlur = noop,\n      onKeyDown = noop,\n      onMouseDown = noop,\n      onMouseEnter = noop,\n      outsideCurrentMonth,\n      selected = false,\n      showDaysOutsideCurrentMonth = false,\n      children,\n      today: isToday = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    autoFocus,\n    disabled,\n    disableHighlightToday,\n    disableMargin,\n    selected,\n    showDaysOutsideCurrentMonth,\n    today: isToday\n  });\n  const classes = useUtilityClasses(ownerState);\n  const utils = useUtils();\n  const ref = React.useRef(null);\n  const handleRef = useForkRef(ref, forwardedRef);\n\n  // Since this is rendered when a Popper is opened we can't use passive effects.\n  // Focusing in passive effects in Popper causes scroll jump.\n  useEnhancedEffect(() => {\n    if (autoFocus && !disabled && !isAnimating && !outsideCurrentMonth) {\n      // ref.current being null would be a bug in MUI\n      ref.current.focus();\n    }\n  }, [autoFocus, disabled, isAnimating, outsideCurrentMonth]);\n\n  // For day outside of current month, move focus from mouseDown to mouseUp\n  // Goal: have the onClick ends before sliding to the new month\n  const handleMouseDown = event => {\n    onMouseDown(event);\n    if (outsideCurrentMonth) {\n      event.preventDefault();\n    }\n  };\n  const handleClick = event => {\n    if (!disabled) {\n      onDaySelect(day);\n    }\n    if (outsideCurrentMonth) {\n      event.currentTarget.focus();\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  if (outsideCurrentMonth && !showDaysOutsideCurrentMonth) {\n    return /*#__PURE__*/_jsx(PickersDayFiller, {\n      className: clsx(classes.root, classes.hiddenDaySpacingFiller, className),\n      ownerState: ownerState,\n      role: other.role\n    });\n  }\n  return /*#__PURE__*/_jsx(PickersDayRoot, _extends({\n    className: clsx(classes.root, className),\n    ref: handleRef,\n    centerRipple: true,\n    disabled: disabled,\n    tabIndex: selected ? 0 : -1,\n    onKeyDown: event => onKeyDown(event, day),\n    onFocus: event => onFocus(event, day),\n    onBlur: event => onBlur(event, day),\n    onMouseEnter: event => onMouseEnter(event, day),\n    onClick: handleClick,\n    onMouseDown: handleMouseDown\n  }, other, {\n    ownerState: ownerState,\n    children: !children ? utils.format(day, 'dayOfMonth') : children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? PickersDayRaw.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * A ref for imperative actions.\n   * It currently only supports `focusVisible()` action.\n   */\n  action: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      focusVisible: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * If `true`, the ripples are centered.\n   * They won't start at the cursor interaction position.\n   * @default false\n   */\n  centerRipple: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  component: PropTypes.elementType,\n  /**\n   * The date to show.\n   */\n  day: PropTypes.any.isRequired,\n  /**\n   * If `true`, renders as disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * If `true`, days are rendering without margin. Useful for displaying linked range of days.\n   * @default false\n   */\n  disableMargin: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * \u26A0\uFE0F Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If `true`, the touch ripple effect is disabled.\n   * @default false\n   */\n  disableTouchRipple: PropTypes.bool,\n  /**\n   * If `true`, the base button will have a keyboard focus ripple.\n   * @default false\n   */\n  focusRipple: PropTypes.bool,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  isAnimating: PropTypes.bool,\n  /**\n   * If `true`, day is the first visible cell of the month.\n   * Either the first day of the month or the first day of the week depending on `showDaysOutsideCurrentMonth`.\n   */\n  isFirstVisibleCell: PropTypes.bool.isRequired,\n  /**\n   * If `true`, day is the last visible cell of the month.\n   * Either the last day of the month or the last day of the week depending on `showDaysOutsideCurrentMonth`.\n   */\n  isLastVisibleCell: PropTypes.bool.isRequired,\n  onBlur: PropTypes.func,\n  onDaySelect: PropTypes.func.isRequired,\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the component is focused with a keyboard.\n   * We trigger a `onFocus` callback too.\n   */\n  onFocusVisible: PropTypes.func,\n  onKeyDown: PropTypes.func,\n  onMouseEnter: PropTypes.func,\n  /**\n   * If `true`, day is outside of month and will be hidden.\n   */\n  outsideCurrentMonth: PropTypes.bool.isRequired,\n  /**\n   * If `true`, renders as selected.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * If `true`, days outside the current month are rendered:\n   *\n   * - if `fixedWeekNumber` is defined, renders days to have the weeks requested.\n   *\n   * - if `fixedWeekNumber` is not defined, renders day to fill the first and last week of the current month.\n   *\n   * - ignored if `calendars` equals more than `1` on range pickers.\n   * @default false\n   */\n  showDaysOutsideCurrentMonth: PropTypes.bool,\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @default 0\n   */\n  tabIndex: PropTypes.number,\n  /**\n   * If `true`, renders as today date.\n   * @default false\n   */\n  today: PropTypes.bool,\n  /**\n   * Props applied to the `TouchRipple` element.\n   */\n  TouchRippleProps: PropTypes.object,\n  /**\n   * A ref that points to the `TouchRipple` element.\n   */\n  touchRippleRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      pulsate: PropTypes.func.isRequired,\n      start: PropTypes.func.isRequired,\n      stop: PropTypes.func.isRequired\n    })\n  })])\n} : void 0;\n\n/**\n * Demos:\n *\n * - [DateCalendar](https://mui.com/x/react-date-pickers/date-calendar/)\n * API:\n *\n * - [PickersDay API](https://mui.com/x/api/date-pickers/pickers-day/)\n */\nexport const PickersDay = /*#__PURE__*/React.memo(PickersDayRaw);", "import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nexport function getPickersDayUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersDay', slot);\n}\nexport const pickersDayClasses = generateUtilityClasses('MuiPickersDay', ['root', 'dayWithMargin', 'dayOutsideMonth', 'hiddenDaySpacingFiller', 'today', 'selected', 'disabled']);", "import { applyDefaultDate } from '../date-utils';\nexport const validateDate = ({\n  props,\n  value,\n  adapter\n}) => {\n  if (value === null) {\n    return null;\n  }\n  const {\n    shouldDisableDate,\n    shouldDisableMonth,\n    shouldDisableYear,\n    disablePast,\n    disableFuture,\n    timezone\n  } = props;\n  const now = adapter.utils.dateWithTimezone(undefined, timezone);\n  const minDate = applyDefaultDate(adapter.utils, props.minDate, adapter.defaultDates.minDate);\n  const maxDate = applyDefaultDate(adapter.utils, props.maxDate, adapter.defaultDates.maxDate);\n  switch (true) {\n    case !adapter.utils.isValid(value):\n      return 'invalidDate';\n    case Boolean(shouldDisableDate && shouldDisableDate(value)):\n      return 'shouldDisableDate';\n    case Boolean(shouldDisableMonth && shouldDisableMonth(value)):\n      return 'shouldDisableMonth';\n    case Boolean(shouldDisableYear && shouldDisableYear(value)):\n      return 'shouldDisableYear';\n    case Boolean(disableFuture && adapter.utils.isAfterDay(value, now)):\n      return 'disableFuture';\n    case Boolean(disablePast && adapter.utils.isBeforeDay(value, now)):\n      return 'disablePast';\n    case Boolean(minDate && adapter.utils.isBeforeDay(value, minDate)):\n      return 'minDate';\n    case Boolean(maxDate && adapter.utils.isAfterDay(value, maxDate)):\n      return 'maxDate';\n    default:\n      return null;\n  }\n};", "import useMediaQuery from '@mui/material/useMediaQuery';\nconst PREFERS_REDUCED_MOTION = '@media (prefers-reduced-motion: reduce)';\n\n// detect if user agent has Android version < 10 or iOS version < 13\nconst mobileVersionMatches = typeof navigator !== 'undefined' && navigator.userAgent.match(/android\\s(\\d+)|OS\\s(\\d+)/i);\nconst androidVersion = mobileVersionMatches && mobileVersionMatches[1] ? parseInt(mobileVersionMatches[1], 10) : null;\nconst iOSVersion = mobileVersionMatches && mobileVersionMatches[2] ? parseInt(mobileVersionMatches[2], 10) : null;\nexport const slowAnimationDevices = androidVersion && androidVersion < 10 || iOSVersion && iOSVersion < 13 || false;\nexport const useDefaultReduceAnimations = () => {\n  const prefersReduced = useMediaQuery(PREFERS_REDUCED_MOTION, {\n    defaultMatches: false\n  });\n  return prefersReduced || slowAnimationDevices;\n};", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"parentProps\", \"day\", \"focusableDay\", \"selectedDays\", \"isDateDisabled\", \"currentMonthNumber\", \"isViewFocused\"],\n  _excluded2 = [\"ownerState\"];\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport Typography from '@mui/material/Typography';\nimport { useSlotProps } from '@mui/base/utils';\nimport { styled, useTheme, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, unstable_useControlled as useControlled } from '@mui/utils';\nimport clsx from 'clsx';\nimport { PickersDay } from '../PickersDay/PickersDay';\nimport { useUtils, useNow, useLocaleText } from '../internals/hooks/useUtils';\nimport { DAY_SIZE, DAY_MARGIN } from '../internals/constants/dimensions';\nimport { PickersSlideTransition } from './PickersSlideTransition';\nimport { useIsDateDisabled } from './useIsDateDisabled';\nimport { findClosestEnabledDate, getWeekdays } from '../internals/utils/date-utils';\nimport { getDayCalendarUtilityClass } from './dayCalendarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    header: ['header'],\n    weekDayLabel: ['weekDayLabel'],\n    loadingContainer: ['loadingContainer'],\n    slideTransition: ['slideTransition'],\n    monthContainer: ['monthContainer'],\n    weekContainer: ['weekContainer'],\n    weekNumberLabel: ['weekNumberLabel'],\n    weekNumber: ['weekNumber']\n  };\n  return composeClasses(slots, getDayCalendarUtilityClass, classes);\n};\nconst weeksContainerHeight = (DAY_SIZE + DAY_MARGIN * 2) * 6;\nconst PickersCalendarDayRoot = styled('div', {\n  name: 'MuiDayCalendar',\n  slot: 'Root',\n  overridesResolver: (_, styles) => styles.root\n})({});\nconst PickersCalendarDayHeader = styled('div', {\n  name: 'MuiDayCalendar',\n  slot: 'Header',\n  overridesResolver: (_, styles) => styles.header\n})({\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center'\n});\nconst PickersCalendarWeekDayLabel = styled(Typography, {\n  name: 'MuiDayCalendar',\n  slot: 'WeekDayLabel',\n  overridesResolver: (_, styles) => styles.weekDayLabel\n})(({\n  theme\n}) => ({\n  width: 36,\n  height: 40,\n  margin: '0 2px',\n  textAlign: 'center',\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center',\n  color: (theme.vars || theme).palette.text.secondary\n}));\nconst PickersCalendarWeekNumberLabel = styled(Typography, {\n  name: 'MuiDayCalendar',\n  slot: 'WeekNumberLabel',\n  overridesResolver: (_, styles) => styles.weekNumberLabel\n})(({\n  theme\n}) => ({\n  width: 36,\n  height: 40,\n  margin: '0 2px',\n  textAlign: 'center',\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center',\n  color: theme.palette.text.disabled\n}));\nconst PickersCalendarWeekNumber = styled(Typography, {\n  name: 'MuiDayCalendar',\n  slot: 'WeekNumber',\n  overridesResolver: (_, styles) => styles.weekNumber\n})(({\n  theme\n}) => _extends({}, theme.typography.caption, {\n  width: DAY_SIZE,\n  height: DAY_SIZE,\n  padding: 0,\n  margin: `0 ${DAY_MARGIN}px`,\n  color: theme.palette.text.disabled,\n  fontSize: '0.75rem',\n  alignItems: 'center',\n  justifyContent: 'center',\n  display: 'inline-flex'\n}));\nconst PickersCalendarLoadingContainer = styled('div', {\n  name: 'MuiDayCalendar',\n  slot: 'LoadingContainer',\n  overridesResolver: (_, styles) => styles.loadingContainer\n})({\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center',\n  minHeight: weeksContainerHeight\n});\nconst PickersCalendarSlideTransition = styled(PickersSlideTransition, {\n  name: 'MuiDayCalendar',\n  slot: 'SlideTransition',\n  overridesResolver: (_, styles) => styles.slideTransition\n})({\n  minHeight: weeksContainerHeight\n});\nconst PickersCalendarWeekContainer = styled('div', {\n  name: 'MuiDayCalendar',\n  slot: 'MonthContainer',\n  overridesResolver: (_, styles) => styles.monthContainer\n})({\n  overflow: 'hidden'\n});\nconst PickersCalendarWeek = styled('div', {\n  name: 'MuiDayCalendar',\n  slot: 'WeekContainer',\n  overridesResolver: (_, styles) => styles.weekContainer\n})({\n  margin: `${DAY_MARGIN}px 0`,\n  display: 'flex',\n  justifyContent: 'center'\n});\nfunction WrappedDay(_ref) {\n  var _ref2, _slots$day, _slotProps$day;\n  let {\n      parentProps,\n      day,\n      focusableDay,\n      selectedDays,\n      isDateDisabled,\n      currentMonthNumber,\n      isViewFocused\n    } = _ref,\n    other = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const {\n    disabled,\n    disableHighlightToday,\n    isMonthSwitchingAnimating,\n    showDaysOutsideCurrentMonth,\n    components,\n    componentsProps,\n    slots,\n    slotProps,\n    timezone\n  } = parentProps;\n  const utils = useUtils();\n  const now = useNow(timezone);\n  const isFocusableDay = focusableDay !== null && utils.isSameDay(day, focusableDay);\n  const isSelected = selectedDays.some(selectedDay => utils.isSameDay(selectedDay, day));\n  const isToday = utils.isSameDay(day, now);\n  const Day = (_ref2 = (_slots$day = slots == null ? void 0 : slots.day) != null ? _slots$day : components == null ? void 0 : components.Day) != null ? _ref2 : PickersDay;\n  // We don't want to pass to ownerState down, to avoid re-rendering all the day whenever a prop changes.\n  const _useSlotProps = useSlotProps({\n      elementType: Day,\n      externalSlotProps: (_slotProps$day = slotProps == null ? void 0 : slotProps.day) != null ? _slotProps$day : componentsProps == null ? void 0 : componentsProps.day,\n      additionalProps: _extends({\n        disableHighlightToday,\n        showDaysOutsideCurrentMonth,\n        role: 'gridcell',\n        isAnimating: isMonthSwitchingAnimating,\n        // it is used in date range dragging logic by accessing `dataset.timestamp`\n        'data-timestamp': utils.toJsDate(day).valueOf()\n      }, other),\n      ownerState: _extends({}, parentProps, {\n        day,\n        selected: isSelected\n      })\n    }),\n    dayProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);\n  const isDisabled = React.useMemo(() => disabled || isDateDisabled(day), [disabled, isDateDisabled, day]);\n  const outsideCurrentMonth = React.useMemo(() => utils.getMonth(day) !== currentMonthNumber, [utils, day, currentMonthNumber]);\n  const isFirstVisibleCell = React.useMemo(() => {\n    const startOfMonth = utils.startOfMonth(utils.setMonth(day, currentMonthNumber));\n    if (!showDaysOutsideCurrentMonth) {\n      return utils.isSameDay(day, startOfMonth);\n    }\n    return utils.isSameDay(day, utils.startOfWeek(startOfMonth));\n  }, [currentMonthNumber, day, showDaysOutsideCurrentMonth, utils]);\n  const isLastVisibleCell = React.useMemo(() => {\n    const endOfMonth = utils.endOfMonth(utils.setMonth(day, currentMonthNumber));\n    if (!showDaysOutsideCurrentMonth) {\n      return utils.isSameDay(day, endOfMonth);\n    }\n    return utils.isSameDay(day, utils.endOfWeek(endOfMonth));\n  }, [currentMonthNumber, day, showDaysOutsideCurrentMonth, utils]);\n  return /*#__PURE__*/_jsx(Day, _extends({}, dayProps, {\n    day: day,\n    disabled: isDisabled,\n    autoFocus: isViewFocused && isFocusableDay,\n    today: isToday,\n    outsideCurrentMonth: outsideCurrentMonth,\n    isFirstVisibleCell: isFirstVisibleCell,\n    isLastVisibleCell: isLastVisibleCell,\n    selected: isSelected,\n    tabIndex: isFocusableDay ? 0 : -1,\n    \"aria-selected\": isSelected,\n    \"aria-current\": isToday ? 'date' : undefined\n  }));\n}\n\n/**\n * @ignore - do not document.\n */\nexport function DayCalendar(inProps) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiDayCalendar'\n  });\n  const {\n    onFocusedDayChange,\n    className,\n    currentMonth,\n    selectedDays,\n    focusedDay,\n    loading,\n    onSelectedDaysChange,\n    onMonthSwitchingAnimationEnd,\n    readOnly,\n    reduceAnimations,\n    renderLoading = () => /*#__PURE__*/_jsx(\"span\", {\n      children: \"...\"\n    }),\n    slideDirection,\n    TransitionProps,\n    disablePast,\n    disableFuture,\n    minDate,\n    maxDate,\n    shouldDisableDate,\n    shouldDisableMonth,\n    shouldDisableYear,\n    dayOfWeekFormatter: dayOfWeekFormatterFromProps,\n    hasFocus,\n    onFocusedViewChange,\n    gridLabelId,\n    displayWeekNumber,\n    fixedWeekNumber,\n    autoFocus,\n    timezone\n  } = props;\n  const now = useNow(timezone);\n  const utils = useUtils();\n  const classes = useUtilityClasses(props);\n  const theme = useTheme();\n  const isRTL = theme.direction === 'rtl';\n\n  // before we could define this outside of the component scope, but now we need utils, which is only defined here\n  const dayOfWeekFormatter = dayOfWeekFormatterFromProps || ((_day, date) => utils.format(date, 'weekdayShort').charAt(0).toUpperCase());\n  const isDateDisabled = useIsDateDisabled({\n    shouldDisableDate,\n    shouldDisableMonth,\n    shouldDisableYear,\n    minDate,\n    maxDate,\n    disablePast,\n    disableFuture,\n    timezone\n  });\n  const localeText = useLocaleText();\n  const [internalHasFocus, setInternalHasFocus] = useControlled({\n    name: 'DayCalendar',\n    state: 'hasFocus',\n    controlled: hasFocus,\n    default: autoFocus != null ? autoFocus : false\n  });\n  const [internalFocusedDay, setInternalFocusedDay] = React.useState(() => focusedDay || now);\n  const handleDaySelect = useEventCallback(day => {\n    if (readOnly) {\n      return;\n    }\n    onSelectedDaysChange(day);\n  });\n  const focusDay = day => {\n    if (!isDateDisabled(day)) {\n      onFocusedDayChange(day);\n      setInternalFocusedDay(day);\n      onFocusedViewChange == null || onFocusedViewChange(true);\n      setInternalHasFocus(true);\n    }\n  };\n  const handleKeyDown = useEventCallback((event, day) => {\n    switch (event.key) {\n      case 'ArrowUp':\n        focusDay(utils.addDays(day, -7));\n        event.preventDefault();\n        break;\n      case 'ArrowDown':\n        focusDay(utils.addDays(day, 7));\n        event.preventDefault();\n        break;\n      case 'ArrowLeft':\n        {\n          const newFocusedDayDefault = utils.addDays(day, isRTL ? 1 : -1);\n          const nextAvailableMonth = utils.addMonths(day, isRTL ? 1 : -1);\n          const closestDayToFocus = findClosestEnabledDate({\n            utils,\n            date: newFocusedDayDefault,\n            minDate: isRTL ? newFocusedDayDefault : utils.startOfMonth(nextAvailableMonth),\n            maxDate: isRTL ? utils.endOfMonth(nextAvailableMonth) : newFocusedDayDefault,\n            isDateDisabled,\n            timezone\n          });\n          focusDay(closestDayToFocus || newFocusedDayDefault);\n          event.preventDefault();\n          break;\n        }\n      case 'ArrowRight':\n        {\n          const newFocusedDayDefault = utils.addDays(day, isRTL ? -1 : 1);\n          const nextAvailableMonth = utils.addMonths(day, isRTL ? -1 : 1);\n          const closestDayToFocus = findClosestEnabledDate({\n            utils,\n            date: newFocusedDayDefault,\n            minDate: isRTL ? utils.startOfMonth(nextAvailableMonth) : newFocusedDayDefault,\n            maxDate: isRTL ? newFocusedDayDefault : utils.endOfMonth(nextAvailableMonth),\n            isDateDisabled,\n            timezone\n          });\n          focusDay(closestDayToFocus || newFocusedDayDefault);\n          event.preventDefault();\n          break;\n        }\n      case 'Home':\n        focusDay(utils.startOfWeek(day));\n        event.preventDefault();\n        break;\n      case 'End':\n        focusDay(utils.endOfWeek(day));\n        event.preventDefault();\n        break;\n      case 'PageUp':\n        focusDay(utils.addMonths(day, 1));\n        event.preventDefault();\n        break;\n      case 'PageDown':\n        focusDay(utils.addMonths(day, -1));\n        event.preventDefault();\n        break;\n      default:\n        break;\n    }\n  });\n  const handleFocus = useEventCallback((event, day) => focusDay(day));\n  const handleBlur = useEventCallback((event, day) => {\n    if (internalHasFocus && utils.isSameDay(internalFocusedDay, day)) {\n      onFocusedViewChange == null || onFocusedViewChange(false);\n    }\n  });\n  const currentMonthNumber = utils.getMonth(currentMonth);\n  const validSelectedDays = React.useMemo(() => selectedDays.filter(day => !!day).map(day => utils.startOfDay(day)), [utils, selectedDays]);\n\n  // need a new ref whenever the `key` of the transition changes: http://reactcommunity.org/react-transition-group/transition/#Transition-prop-nodeRef.\n  const transitionKey = currentMonthNumber;\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const slideNodeRef = React.useMemo(() => /*#__PURE__*/React.createRef(), [transitionKey]);\n  const startOfCurrentWeek = utils.startOfWeek(now);\n  const focusableDay = React.useMemo(() => {\n    const startOfMonth = utils.startOfMonth(currentMonth);\n    const endOfMonth = utils.endOfMonth(currentMonth);\n    if (isDateDisabled(internalFocusedDay) || utils.isAfterDay(internalFocusedDay, endOfMonth) || utils.isBeforeDay(internalFocusedDay, startOfMonth)) {\n      return findClosestEnabledDate({\n        utils,\n        date: internalFocusedDay,\n        minDate: startOfMonth,\n        maxDate: endOfMonth,\n        disablePast,\n        disableFuture,\n        isDateDisabled,\n        timezone\n      });\n    }\n    return internalFocusedDay;\n  }, [currentMonth, disableFuture, disablePast, internalFocusedDay, isDateDisabled, utils, timezone]);\n  const weeksToDisplay = React.useMemo(() => {\n    const currentMonthWithTimezone = utils.setTimezone(currentMonth, timezone);\n    const toDisplay = utils.getWeekArray(currentMonthWithTimezone);\n    let nextMonth = utils.addMonths(currentMonthWithTimezone, 1);\n    while (fixedWeekNumber && toDisplay.length < fixedWeekNumber) {\n      const additionalWeeks = utils.getWeekArray(nextMonth);\n      const hasCommonWeek = utils.isSameDay(toDisplay[toDisplay.length - 1][0], additionalWeeks[0][0]);\n      additionalWeeks.slice(hasCommonWeek ? 1 : 0).forEach(week => {\n        if (toDisplay.length < fixedWeekNumber) {\n          toDisplay.push(week);\n        }\n      });\n      nextMonth = utils.addMonths(nextMonth, 1);\n    }\n    return toDisplay;\n  }, [currentMonth, fixedWeekNumber, utils, timezone]);\n  return /*#__PURE__*/_jsxs(PickersCalendarDayRoot, {\n    role: \"grid\",\n    \"aria-labelledby\": gridLabelId,\n    className: classes.root,\n    children: [/*#__PURE__*/_jsxs(PickersCalendarDayHeader, {\n      role: \"row\",\n      className: classes.header,\n      children: [displayWeekNumber && /*#__PURE__*/_jsx(PickersCalendarWeekNumberLabel, {\n        variant: \"caption\",\n        role: \"columnheader\",\n        \"aria-label\": localeText.calendarWeekNumberHeaderLabel,\n        className: classes.weekNumberLabel,\n        children: localeText.calendarWeekNumberHeaderText\n      }), getWeekdays(utils, now).map((weekday, i) => {\n        var _dayOfWeekFormatter;\n        const day = utils.format(weekday, 'weekdayShort');\n        return /*#__PURE__*/_jsx(PickersCalendarWeekDayLabel, {\n          variant: \"caption\",\n          role: \"columnheader\",\n          \"aria-label\": utils.format(utils.addDays(startOfCurrentWeek, i), 'weekday'),\n          className: classes.weekDayLabel,\n          children: (_dayOfWeekFormatter = dayOfWeekFormatter == null ? void 0 : dayOfWeekFormatter(day, weekday)) != null ? _dayOfWeekFormatter : day\n        }, day + i.toString());\n      })]\n    }), loading ? /*#__PURE__*/_jsx(PickersCalendarLoadingContainer, {\n      className: classes.loadingContainer,\n      children: renderLoading()\n    }) : /*#__PURE__*/_jsx(PickersCalendarSlideTransition, _extends({\n      transKey: transitionKey,\n      onExited: onMonthSwitchingAnimationEnd,\n      reduceAnimations: reduceAnimations,\n      slideDirection: slideDirection,\n      className: clsx(className, classes.slideTransition)\n    }, TransitionProps, {\n      nodeRef: slideNodeRef,\n      children: /*#__PURE__*/_jsx(PickersCalendarWeekContainer, {\n        ref: slideNodeRef,\n        role: \"rowgroup\",\n        className: classes.monthContainer,\n        children: weeksToDisplay.map((week, index) => /*#__PURE__*/_jsxs(PickersCalendarWeek, {\n          role: \"row\",\n          className: classes.weekContainer\n          // fix issue of announcing row 1 as row 2\n          // caused by week day labels row\n          ,\n          \"aria-rowindex\": index + 1,\n          children: [displayWeekNumber && /*#__PURE__*/_jsx(PickersCalendarWeekNumber, {\n            className: classes.weekNumber,\n            role: \"rowheader\",\n            \"aria-label\": localeText.calendarWeekNumberAriaLabelText(utils.getWeekNumber(week[0])),\n            children: localeText.calendarWeekNumberText(utils.getWeekNumber(week[0]))\n          }), week.map((day, dayIndex) => /*#__PURE__*/_jsx(WrappedDay, {\n            parentProps: props,\n            day: day,\n            selectedDays: validSelectedDays,\n            focusableDay: focusableDay,\n            onKeyDown: handleKeyDown,\n            onFocus: handleFocus,\n            onBlur: handleBlur,\n            onDaySelect: handleDaySelect,\n            isDateDisabled: isDateDisabled,\n            currentMonthNumber: currentMonthNumber,\n            isViewFocused: internalHasFocus\n            // fix issue of announcing column 1 as column 2 when `displayWeekNumber` is enabled\n            ,\n            \"aria-colindex\": dayIndex + 1\n          }, day.toString()))]\n        }, `week-${week[0]}`))\n      })\n    }))]\n  });\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"reduceAnimations\", \"slideDirection\", \"transKey\", \"classes\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, useTheme, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport { getPickersSlideTransitionUtilityClass, pickersSlideTransitionClasses } from './pickersSlideTransitionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    slideDirection\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    exit: ['slideExit'],\n    enterActive: ['slideEnterActive'],\n    enter: [`slideEnter-${slideDirection}`],\n    exitActive: [`slideExitActiveLeft-${slideDirection}`]\n  };\n  return composeClasses(slots, getPickersSlideTransitionUtilityClass, classes);\n};\nconst PickersSlideTransitionRoot = styled(TransitionGroup, {\n  name: 'MuiPickersSlideTransition',\n  slot: 'Root',\n  overridesResolver: (_, styles) => [styles.root, {\n    [`.${pickersSlideTransitionClasses['slideEnter-left']}`]: styles['slideEnter-left']\n  }, {\n    [`.${pickersSlideTransitionClasses['slideEnter-right']}`]: styles['slideEnter-right']\n  }, {\n    [`.${pickersSlideTransitionClasses.slideEnterActive}`]: styles.slideEnterActive\n  }, {\n    [`.${pickersSlideTransitionClasses.slideExit}`]: styles.slideExit\n  }, {\n    [`.${pickersSlideTransitionClasses['slideExitActiveLeft-left']}`]: styles['slideExitActiveLeft-left']\n  }, {\n    [`.${pickersSlideTransitionClasses['slideExitActiveLeft-right']}`]: styles['slideExitActiveLeft-right']\n  }]\n})(({\n  theme\n}) => {\n  const slideTransition = theme.transitions.create('transform', {\n    duration: theme.transitions.duration.complex,\n    easing: 'cubic-bezier(0.35, 0.8, 0.4, 1)'\n  });\n  return {\n    display: 'block',\n    position: 'relative',\n    overflowX: 'hidden',\n    '& > *': {\n      position: 'absolute',\n      top: 0,\n      right: 0,\n      left: 0\n    },\n    [`& .${pickersSlideTransitionClasses['slideEnter-left']}`]: {\n      willChange: 'transform',\n      transform: 'translate(100%)',\n      zIndex: 1\n    },\n    [`& .${pickersSlideTransitionClasses['slideEnter-right']}`]: {\n      willChange: 'transform',\n      transform: 'translate(-100%)',\n      zIndex: 1\n    },\n    [`& .${pickersSlideTransitionClasses.slideEnterActive}`]: {\n      transform: 'translate(0%)',\n      transition: slideTransition\n    },\n    [`& .${pickersSlideTransitionClasses.slideExit}`]: {\n      transform: 'translate(0%)'\n    },\n    [`& .${pickersSlideTransitionClasses['slideExitActiveLeft-left']}`]: {\n      willChange: 'transform',\n      transform: 'translate(-100%)',\n      transition: slideTransition,\n      zIndex: 0\n    },\n    [`& .${pickersSlideTransitionClasses['slideExitActiveLeft-right']}`]: {\n      willChange: 'transform',\n      transform: 'translate(100%)',\n      transition: slideTransition,\n      zIndex: 0\n    }\n  };\n});\n\n/**\n * @ignore - do not document.\n */\nexport function PickersSlideTransition(inProps) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersSlideTransition'\n  });\n  const {\n      children,\n      className,\n      reduceAnimations,\n      transKey\n      // extracting `classes` from `other`\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const classes = useUtilityClasses(props);\n  const theme = useTheme();\n  if (reduceAnimations) {\n    return /*#__PURE__*/_jsx(\"div\", {\n      className: clsx(classes.root, className),\n      children: children\n    });\n  }\n  const transitionClasses = {\n    exit: classes.exit,\n    enterActive: classes.enterActive,\n    enter: classes.enter,\n    exitActive: classes.exitActive\n  };\n  return /*#__PURE__*/_jsx(PickersSlideTransitionRoot, {\n    className: clsx(classes.root, className),\n    childFactory: element => /*#__PURE__*/React.cloneElement(element, {\n      classNames: transitionClasses\n    }),\n    role: \"presentation\",\n    children: /*#__PURE__*/_jsx(CSSTransition, _extends({\n      mountOnEnter: true,\n      unmountOnExit: true,\n      timeout: theme.transitions.duration.complex,\n      classNames: transitionClasses\n    }, other, {\n      children: children\n    }), transKey)\n  });\n}", "import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nexport const getPickersSlideTransitionUtilityClass = slot => generateUtilityClass('MuiPickersSlideTransition', slot);\nexport const pickersSlideTransitionClasses = generateUtilityClasses('MuiPickersSlideTransition', ['root', 'slideEnter-left', 'slideEnter-right', 'slideEnterActive', 'slideExit', 'slideExitActiveLeft-left', 'slideExitActiveLeft-right']);", "import * as React from 'react';\nimport { validateDate } from '../internals/utils/validation/validateDate';\nimport { useLocalizationContext } from '../internals/hooks/useUtils';\nexport const useIsDateDisabled = ({\n  shouldDisableDate,\n  shouldDisableMonth,\n  shouldDisableYear,\n  minDate,\n  maxDate,\n  disableFuture,\n  disablePast,\n  timezone\n}) => {\n  const adapter = useLocalizationContext();\n  return React.useCallback(day => validateDate({\n    adapter,\n    value: day,\n    props: {\n      shouldDisableDate,\n      shouldDisableMonth,\n      shouldDisableYear,\n      minDate,\n      maxDate,\n      disableFuture,\n      disablePast,\n      timezone\n    }\n  }) !== null, [adapter, shouldDisableDate, shouldDisableMonth, shouldDisableYear, minDate, maxDate, disableFuture, disablePast, timezone]);\n};", "import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nexport const getDayCalendarUtilityClass = slot => generateUtilityClass('MuiDayCalendar', slot);\nexport const dayPickerClasses = generateUtilityClasses('MuiDayCalendar', ['root', 'header', 'weekDayLabel', 'loadingContainer', 'slideTransition', 'monthContainer', 'weekContainer', 'weekNumberLabel', 'weekNumber']);", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { useIsDateDisabled } from './useIsDateDisabled';\nimport { useUtils } from '../internals/hooks/useUtils';\nimport { singleItemValueManager } from '../internals/utils/valueManagers';\nimport { SECTION_TYPE_GRANULARITY } from '../internals/utils/getDefaultReferenceDate';\nexport const createCalendarStateReducer = (reduceAnimations, disableSwitchToMonthOnDayFocus, utils) => (state, action) => {\n  switch (action.type) {\n    case 'changeMonth':\n      return _extends({}, state, {\n        slideDirection: action.direction,\n        currentMonth: action.newMonth,\n        isMonthSwitchingAnimating: !reduceAnimations\n      });\n    case 'finishMonthSwitchingAnimation':\n      return _extends({}, state, {\n        isMonthSwitchingAnimating: false\n      });\n    case 'changeFocusedDay':\n      {\n        if (state.focusedDay != null && action.focusedDay != null && utils.isSameDay(action.focusedDay, state.focusedDay)) {\n          return state;\n        }\n        const needMonthSwitch = action.focusedDay != null && !disableSwitchToMonthOnDayFocus && !utils.isSameMonth(state.currentMonth, action.focusedDay);\n        return _extends({}, state, {\n          focusedDay: action.focusedDay,\n          isMonthSwitchingAnimating: needMonthSwitch && !reduceAnimations && !action.withoutMonthSwitchingAnimation,\n          currentMonth: needMonthSwitch ? utils.startOfMonth(action.focusedDay) : state.currentMonth,\n          slideDirection: action.focusedDay != null && utils.isAfterDay(action.focusedDay, state.currentMonth) ? 'left' : 'right'\n        });\n      }\n    default:\n      throw new Error('missing support');\n  }\n};\nexport const useCalendarState = params => {\n  const {\n    value,\n    referenceDate: referenceDateProp,\n    defaultCalendarMonth,\n    disableFuture,\n    disablePast,\n    disableSwitchToMonthOnDayFocus = false,\n    maxDate,\n    minDate,\n    onMonthChange,\n    reduceAnimations,\n    shouldDisableDate,\n    timezone\n  } = params;\n  const utils = useUtils();\n  const reducerFn = React.useRef(createCalendarStateReducer(Boolean(reduceAnimations), disableSwitchToMonthOnDayFocus, utils)).current;\n  const referenceDate = React.useMemo(() => {\n    let externalReferenceDate = null;\n    if (referenceDateProp) {\n      externalReferenceDate = referenceDateProp;\n    } else if (defaultCalendarMonth) {\n      // For `defaultCalendarMonth`, we just want to keep the month and the year to avoid a behavior change.\n      externalReferenceDate = utils.startOfMonth(defaultCalendarMonth);\n    }\n    return singleItemValueManager.getInitialReferenceValue({\n      value,\n      utils,\n      timezone,\n      props: params,\n      referenceDate: externalReferenceDate,\n      granularity: SECTION_TYPE_GRANULARITY.day\n    });\n  }, [] // eslint-disable-line react-hooks/exhaustive-deps\n  );\n  const [calendarState, dispatch] = React.useReducer(reducerFn, {\n    isMonthSwitchingAnimating: false,\n    focusedDay: referenceDate,\n    currentMonth: utils.startOfMonth(referenceDate),\n    slideDirection: 'left'\n  });\n  const handleChangeMonth = React.useCallback(payload => {\n    dispatch(_extends({\n      type: 'changeMonth'\n    }, payload));\n    if (onMonthChange) {\n      onMonthChange(payload.newMonth);\n    }\n  }, [onMonthChange]);\n  const changeMonth = React.useCallback(newDate => {\n    const newDateRequested = newDate;\n    if (utils.isSameMonth(newDateRequested, calendarState.currentMonth)) {\n      return;\n    }\n    handleChangeMonth({\n      newMonth: utils.startOfMonth(newDateRequested),\n      direction: utils.isAfterDay(newDateRequested, calendarState.currentMonth) ? 'left' : 'right'\n    });\n  }, [calendarState.currentMonth, handleChangeMonth, utils]);\n  const isDateDisabled = useIsDateDisabled({\n    shouldDisableDate,\n    minDate,\n    maxDate,\n    disableFuture,\n    disablePast,\n    timezone\n  });\n  const onMonthSwitchingAnimationEnd = React.useCallback(() => {\n    dispatch({\n      type: 'finishMonthSwitchingAnimation'\n    });\n  }, []);\n  const changeFocusedDay = useEventCallback((newFocusedDate, withoutMonthSwitchingAnimation) => {\n    if (!isDateDisabled(newFocusedDate)) {\n      dispatch({\n        type: 'changeFocusedDay',\n        focusedDay: newFocusedDate,\n        withoutMonthSwitchingAnimation\n      });\n    }\n  });\n  return {\n    referenceDate,\n    calendarState,\n    changeMonth,\n    changeFocusedDay,\n    isDateDisabled,\n    onMonthSwitchingAnimationEnd,\n    handleChangeMonth\n  };\n};", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"onViewChange\", \"value\", \"defaultValue\", \"referenceDate\", \"disableFuture\", \"disablePast\", \"defaultCalendarMonth\", \"onChange\", \"onYearChange\", \"onMonthChange\", \"reduceAnimations\", \"shouldDisableDate\", \"shouldDisableMonth\", \"shouldDisableYear\", \"view\", \"views\", \"openTo\", \"className\", \"disabled\", \"readOnly\", \"minDate\", \"maxDate\", \"disableHighlightToday\", \"focusedView\", \"onFocusedViewChange\", \"showDaysOutsideCurrentMonth\", \"fixedWeekNumber\", \"dayOfWeekFormatter\", \"components\", \"componentsProps\", \"slots\", \"slotProps\", \"loading\", \"renderLoading\", \"displayWeekNumber\", \"yearsPerRow\", \"monthsPerRow\", \"timezone\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useSlotProps } from '@mui/base/utils';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport { useCalendarState } from './useCalendarState';\nimport { useDefaultDates, useUtils } from '../internals/hooks/useUtils';\nimport { PickersFadeTransitionGroup } from './PickersFadeTransitionGroup';\nimport { DayCalendar } from './DayCalendar';\nimport { MonthCalendar } from '../MonthCalendar';\nimport { YearCalendar } from '../YearCalendar';\nimport { useViews } from '../internals/hooks/useViews';\nimport { PickersCalendarHeader } from '../PickersCalendarHeader';\nimport { findClosestEnabledDate, applyDefaultDate, mergeDateAndTime } from '../internals/utils/date-utils';\nimport { PickerViewRoot } from '../internals/components/PickerViewRoot';\nimport { useDefaultReduceAnimations } from '../internals/hooks/useDefaultReduceAnimations';\nimport { getDateCalendarUtilityClass } from './dateCalendarClasses';\nimport { useControlledValueWithTimezone } from '../internals/hooks/useValueWithTimezone';\nimport { singleItemValueManager } from '../internals/utils/valueManagers';\nimport { VIEW_HEIGHT } from '../internals/constants/dimensions';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    viewTransitionContainer: ['viewTransitionContainer']\n  };\n  return composeClasses(slots, getDateCalendarUtilityClass, classes);\n};\nfunction useDateCalendarDefaultizedProps(props, name) {\n  var _themeProps$loading, _themeProps$disablePa, _themeProps$disableFu, _themeProps$openTo, _themeProps$views, _themeProps$reduceAni, _themeProps$renderLoa;\n  const utils = useUtils();\n  const defaultDates = useDefaultDates();\n  const defaultReduceAnimations = useDefaultReduceAnimations();\n  const themeProps = useThemeProps({\n    props,\n    name\n  });\n  return _extends({}, themeProps, {\n    loading: (_themeProps$loading = themeProps.loading) != null ? _themeProps$loading : false,\n    disablePast: (_themeProps$disablePa = themeProps.disablePast) != null ? _themeProps$disablePa : false,\n    disableFuture: (_themeProps$disableFu = themeProps.disableFuture) != null ? _themeProps$disableFu : false,\n    openTo: (_themeProps$openTo = themeProps.openTo) != null ? _themeProps$openTo : 'day',\n    views: (_themeProps$views = themeProps.views) != null ? _themeProps$views : ['year', 'day'],\n    reduceAnimations: (_themeProps$reduceAni = themeProps.reduceAnimations) != null ? _themeProps$reduceAni : defaultReduceAnimations,\n    renderLoading: (_themeProps$renderLoa = themeProps.renderLoading) != null ? _themeProps$renderLoa : () => /*#__PURE__*/_jsx(\"span\", {\n      children: \"...\"\n    }),\n    minDate: applyDefaultDate(utils, themeProps.minDate, defaultDates.minDate),\n    maxDate: applyDefaultDate(utils, themeProps.maxDate, defaultDates.maxDate)\n  });\n}\nconst DateCalendarRoot = styled(PickerViewRoot, {\n  name: 'MuiDateCalendar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'flex',\n  flexDirection: 'column',\n  height: VIEW_HEIGHT\n});\nconst DateCalendarViewTransitionContainer = styled(PickersFadeTransitionGroup, {\n  name: 'MuiDateCalendar',\n  slot: 'ViewTransitionContainer',\n  overridesResolver: (props, styles) => styles.viewTransitionContainer\n})({});\n/**\n * Demos:\n *\n * - [DatePicker](https://mui.com/x/react-date-pickers/date-picker/)\n * - [DateCalendar](https://mui.com/x/react-date-pickers/date-calendar/)\n * - [Validation](https://mui.com/x/react-date-pickers/validation/)\n *\n * API:\n *\n * - [DateCalendar API](https://mui.com/x/api/date-pickers/date-calendar/)\n */\nexport const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(inProps, ref) {\n  var _ref, _slots$calendarHeader, _slotProps$calendarHe;\n  const utils = useUtils();\n  const id = useId();\n  const props = useDateCalendarDefaultizedProps(inProps, 'MuiDateCalendar');\n  const {\n      autoFocus,\n      onViewChange,\n      value: valueProp,\n      defaultValue,\n      referenceDate: referenceDateProp,\n      disableFuture,\n      disablePast,\n      defaultCalendarMonth,\n      onChange,\n      onYearChange,\n      onMonthChange,\n      reduceAnimations,\n      shouldDisableDate,\n      shouldDisableMonth,\n      shouldDisableYear,\n      view: inView,\n      views,\n      openTo,\n      className,\n      disabled,\n      readOnly,\n      minDate,\n      maxDate,\n      disableHighlightToday,\n      focusedView: inFocusedView,\n      onFocusedViewChange,\n      showDaysOutsideCurrentMonth,\n      fixedWeekNumber,\n      dayOfWeekFormatter,\n      components,\n      componentsProps,\n      slots,\n      slotProps,\n      loading,\n      renderLoading,\n      displayWeekNumber,\n      yearsPerRow,\n      monthsPerRow,\n      timezone: timezoneProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    value,\n    handleValueChange,\n    timezone\n  } = useControlledValueWithTimezone({\n    name: 'DateCalendar',\n    timezone: timezoneProp,\n    value: valueProp,\n    defaultValue,\n    onChange,\n    valueManager: singleItemValueManager\n  });\n  const {\n    view,\n    setView,\n    focusedView,\n    setFocusedView,\n    goToNextView,\n    setValueAndGoToNextView\n  } = useViews({\n    view: inView,\n    views,\n    openTo,\n    onChange: handleValueChange,\n    onViewChange,\n    autoFocus,\n    focusedView: inFocusedView,\n    onFocusedViewChange\n  });\n  const {\n    referenceDate,\n    calendarState,\n    changeFocusedDay,\n    changeMonth,\n    handleChangeMonth,\n    isDateDisabled,\n    onMonthSwitchingAnimationEnd\n  } = useCalendarState({\n    value,\n    defaultCalendarMonth,\n    referenceDate: referenceDateProp,\n    reduceAnimations,\n    onMonthChange,\n    minDate,\n    maxDate,\n    shouldDisableDate,\n    disablePast,\n    disableFuture,\n    timezone\n  });\n\n  // When disabled, limit the view to the selected date\n  const minDateWithDisabled = disabled && value || minDate;\n  const maxDateWithDisabled = disabled && value || maxDate;\n  const gridLabelId = `${id}-grid-label`;\n  const hasFocus = focusedView !== null;\n  const CalendarHeader = (_ref = (_slots$calendarHeader = slots == null ? void 0 : slots.calendarHeader) != null ? _slots$calendarHeader : components == null ? void 0 : components.CalendarHeader) != null ? _ref : PickersCalendarHeader;\n  const calendarHeaderProps = useSlotProps({\n    elementType: CalendarHeader,\n    externalSlotProps: (_slotProps$calendarHe = slotProps == null ? void 0 : slotProps.calendarHeader) != null ? _slotProps$calendarHe : componentsProps == null ? void 0 : componentsProps.calendarHeader,\n    additionalProps: {\n      views,\n      view,\n      currentMonth: calendarState.currentMonth,\n      onViewChange: setView,\n      onMonthChange: (newMonth, direction) => handleChangeMonth({\n        newMonth,\n        direction\n      }),\n      minDate: minDateWithDisabled,\n      maxDate: maxDateWithDisabled,\n      disabled,\n      disablePast,\n      disableFuture,\n      reduceAnimations,\n      timezone,\n      labelId: gridLabelId,\n      slots,\n      slotProps\n    },\n    ownerState: props\n  });\n  const handleDateMonthChange = useEventCallback(newDate => {\n    const startOfMonth = utils.startOfMonth(newDate);\n    const endOfMonth = utils.endOfMonth(newDate);\n    const closestEnabledDate = isDateDisabled(newDate) ? findClosestEnabledDate({\n      utils,\n      date: newDate,\n      minDate: utils.isBefore(minDate, startOfMonth) ? startOfMonth : minDate,\n      maxDate: utils.isAfter(maxDate, endOfMonth) ? endOfMonth : maxDate,\n      disablePast,\n      disableFuture,\n      isDateDisabled,\n      timezone\n    }) : newDate;\n    if (closestEnabledDate) {\n      setValueAndGoToNextView(closestEnabledDate, 'finish');\n      onMonthChange == null || onMonthChange(startOfMonth);\n    } else {\n      goToNextView();\n      changeMonth(startOfMonth);\n    }\n    changeFocusedDay(closestEnabledDate, true);\n  });\n  const handleDateYearChange = useEventCallback(newDate => {\n    const startOfYear = utils.startOfYear(newDate);\n    const endOfYear = utils.endOfYear(newDate);\n    const closestEnabledDate = isDateDisabled(newDate) ? findClosestEnabledDate({\n      utils,\n      date: newDate,\n      minDate: utils.isBefore(minDate, startOfYear) ? startOfYear : minDate,\n      maxDate: utils.isAfter(maxDate, endOfYear) ? endOfYear : maxDate,\n      disablePast,\n      disableFuture,\n      isDateDisabled,\n      timezone\n    }) : newDate;\n    if (closestEnabledDate) {\n      setValueAndGoToNextView(closestEnabledDate, 'finish');\n      onYearChange == null || onYearChange(closestEnabledDate);\n    } else {\n      goToNextView();\n      changeMonth(startOfYear);\n    }\n    changeFocusedDay(closestEnabledDate, true);\n  });\n  const handleSelectedDayChange = useEventCallback(day => {\n    if (day) {\n      // If there is a date already selected, then we want to keep its time\n      return handleValueChange(mergeDateAndTime(utils, day, value != null ? value : referenceDate), 'finish', view);\n    }\n    return handleValueChange(day, 'finish', view);\n  });\n  React.useEffect(() => {\n    if (value != null && utils.isValid(value)) {\n      changeMonth(value);\n    }\n  }, [value]); // eslint-disable-line\n\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  const baseDateValidationProps = {\n    disablePast,\n    disableFuture,\n    maxDate,\n    minDate\n  };\n  const commonViewProps = {\n    disableHighlightToday,\n    readOnly,\n    disabled,\n    timezone,\n    gridLabelId\n  };\n  const prevOpenViewRef = React.useRef(view);\n  React.useEffect(() => {\n    // If the view change and the focus was on the previous view\n    // Then we update the focus.\n    if (prevOpenViewRef.current === view) {\n      return;\n    }\n    if (focusedView === prevOpenViewRef.current) {\n      setFocusedView(view, true);\n    }\n    prevOpenViewRef.current = view;\n  }, [focusedView, setFocusedView, view]);\n  const selectedDays = React.useMemo(() => [value], [value]);\n  return /*#__PURE__*/_jsxs(DateCalendarRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState\n  }, other, {\n    children: [/*#__PURE__*/_jsx(CalendarHeader, _extends({}, calendarHeaderProps)), /*#__PURE__*/_jsx(DateCalendarViewTransitionContainer, {\n      reduceAnimations: reduceAnimations,\n      className: classes.viewTransitionContainer,\n      transKey: view,\n      ownerState: ownerState,\n      children: /*#__PURE__*/_jsxs(\"div\", {\n        children: [view === 'year' && /*#__PURE__*/_jsx(YearCalendar, _extends({}, baseDateValidationProps, commonViewProps, {\n          value: value,\n          onChange: handleDateYearChange,\n          shouldDisableYear: shouldDisableYear,\n          hasFocus: hasFocus,\n          onFocusedViewChange: isViewFocused => setFocusedView('year', isViewFocused),\n          yearsPerRow: yearsPerRow,\n          referenceDate: referenceDate\n        })), view === 'month' && /*#__PURE__*/_jsx(MonthCalendar, _extends({}, baseDateValidationProps, commonViewProps, {\n          hasFocus: hasFocus,\n          className: className,\n          value: value,\n          onChange: handleDateMonthChange,\n          shouldDisableMonth: shouldDisableMonth,\n          onFocusedViewChange: isViewFocused => setFocusedView('month', isViewFocused),\n          monthsPerRow: monthsPerRow,\n          referenceDate: referenceDate\n        })), view === 'day' && /*#__PURE__*/_jsx(DayCalendar, _extends({}, calendarState, baseDateValidationProps, commonViewProps, {\n          onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,\n          onFocusedDayChange: changeFocusedDay,\n          reduceAnimations: reduceAnimations,\n          selectedDays: selectedDays,\n          onSelectedDaysChange: handleSelectedDayChange,\n          shouldDisableDate: shouldDisableDate,\n          shouldDisableMonth: shouldDisableMonth,\n          shouldDisableYear: shouldDisableYear,\n          hasFocus: hasFocus,\n          onFocusedViewChange: isViewFocused => setFocusedView('day', isViewFocused),\n          showDaysOutsideCurrentMonth: showDaysOutsideCurrentMonth,\n          fixedWeekNumber: fixedWeekNumber,\n          dayOfWeekFormatter: dayOfWeekFormatter,\n          displayWeekNumber: displayWeekNumber,\n          components: components,\n          componentsProps: componentsProps,\n          slots: slots,\n          slotProps: slotProps,\n          loading: loading,\n          renderLoading: renderLoading\n        }))]\n      })\n    })]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? DateCalendar.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the main element is focused during the first mount.\n   * This main element is:\n   * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).\n   * - the `input` element if there is a field rendered.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  /**\n   * Overridable components.\n   * @default {}\n   * @deprecated Please use `slots`.\n   */\n  components: PropTypes.object,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   * @deprecated Please use `slotProps`.\n   */\n  componentsProps: PropTypes.object,\n  /**\n   * Formats the day of week displayed in the calendar header.\n   * @param {string} day The day of week provided by the adapter.  Deprecated, will be removed in v7: Use `date` instead.\n   * @param {TDate} date The date of the day of week provided by the adapter.\n   * @returns {string} The name to display.\n   * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()\n   */\n  dayOfWeekFormatter: PropTypes.func,\n  /**\n   * Default calendar month displayed when `value` and `defaultValue` are empty.\n   * @deprecated Consider using `referenceDate` instead.\n   */\n  defaultCalendarMonth: PropTypes.any,\n  /**\n   * The default selected value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the picker and text field are disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  /**\n   * If `true`, the week number will be display in the calendar.\n   */\n  displayWeekNumber: PropTypes.bool,\n  /**\n   * Calendar will show more weeks in order to match this value.\n   * Put it to 6 for having fix number of week in Gregorian calendars\n   * @default undefined\n   */\n  fixedWeekNumber: PropTypes.number,\n  /**\n   * Controlled focused view.\n   */\n  focusedView: PropTypes.oneOf(['day', 'month', 'year']),\n  /**\n   * If `true`, calls `renderLoading` instead of rendering the day calendar.\n   * Can be used to preload information and show it in calendar.\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Maximal selectable date.\n   */\n  maxDate: PropTypes.any,\n  /**\n   * Minimal selectable date.\n   */\n  minDate: PropTypes.any,\n  /**\n   * Months rendered per row.\n   * @default 3\n   */\n  monthsPerRow: PropTypes.oneOf([3, 4]),\n  /**\n   * Callback fired when the value changes.\n   * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.\n   * @template TView The view type. Will be one of date or time views.\n   * @param {TValue} value The new value.\n   * @param {PickerSelectionState | undefined} selectionState Indicates if the date selection is complete.\n   * @param {TView | undefined} selectedView Indicates the view in which the selection has been made.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired on focused view change.\n   * @template TView\n   * @param {TView} view The new view to focus or not.\n   * @param {boolean} hasFocus `true` if the view should be focused.\n   */\n  onFocusedViewChange: PropTypes.func,\n  /**\n   * Callback fired on month change.\n   * @template TDate\n   * @param {TDate} month The new month.\n   */\n  onMonthChange: PropTypes.func,\n  /**\n   * Callback fired on view change.\n   * @template TView\n   * @param {TView} view The new view.\n   */\n  onViewChange: PropTypes.func,\n  /**\n   * Callback fired on year change.\n   * @template TDate\n   * @param {TDate} year The new year.\n   */\n  onYearChange: PropTypes.func,\n  /**\n   * The default visible view.\n   * Used when the component view is not controlled.\n   * Must be a valid option from `views` list.\n   */\n  openTo: PropTypes.oneOf(['day', 'month', 'year']),\n  /**\n   * Make picker read only.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, disable heavy animations.\n   * @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13\n   */\n  reduceAnimations: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`.\n   */\n  referenceDate: PropTypes.any,\n  /**\n   * Component displaying when passed `loading` true.\n   * @returns {React.ReactNode} The node to render when loading.\n   * @default () => <span data-mui-test=\"loading-progress\">...</span>\n   */\n  renderLoading: PropTypes.func,\n  /**\n   * Disable specific date.\n   *\n   * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.\n   *\n   * @template TDate\n   * @param {TDate} day The date to test.\n   * @returns {boolean} If `true` the date will be disabled.\n   */\n  shouldDisableDate: PropTypes.func,\n  /**\n   * Disable specific month.\n   * @template TDate\n   * @param {TDate} month The month to test.\n   * @returns {boolean} If `true`, the month will be disabled.\n   */\n  shouldDisableMonth: PropTypes.func,\n  /**\n   * Disable specific year.\n   * @template TDate\n   * @param {TDate} year The year to test.\n   * @returns {boolean} If `true`, the year will be disabled.\n   */\n  shouldDisableYear: PropTypes.func,\n  /**\n   * If `true`, days outside the current month are rendered:\n   *\n   * - if `fixedWeekNumber` is defined, renders days to have the weeks requested.\n   *\n   * - if `fixedWeekNumber` is not defined, renders day to fill the first and last week of the current month.\n   *\n   * - ignored if `calendars` equals more than `1` on range pickers.\n   * @default false\n   */\n  showDaysOutsideCurrentMonth: PropTypes.bool,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.any,\n  /**\n   * The visible view.\n   * Used when the component view is controlled.\n   * Must be a valid option from `views` list.\n   */\n  view: PropTypes.oneOf(['day', 'month', 'year']),\n  /**\n   * Available views.\n   */\n  views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired),\n  /**\n   * Years rendered per row.\n   * @default 3\n   */\n  yearsPerRow: PropTypes.oneOf([3, 4])\n} : void 0;", "import * as React from 'react';\nimport clsx from 'clsx';\nimport { TransitionGroup } from 'react-transition-group';\nimport Fade from '@mui/material/Fade';\nimport { styled, useTheme, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { getPickersFadeTransitionGroupUtilityClass } from './pickersFadeTransitionGroupClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getPickersFadeTransitionGroupUtilityClass, classes);\n};\nconst PickersFadeTransitionGroupRoot = styled(TransitionGroup, {\n  name: 'MuiPickersFadeTransitionGroup',\n  slot: 'Root',\n  overridesResolver: (_, styles) => styles.root\n})({\n  display: 'block',\n  position: 'relative'\n});\n\n/**\n * @ignore - do not document.\n */\nexport function PickersFadeTransitionGroup(inProps) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersFadeTransitionGroup'\n  });\n  const {\n    children,\n    className,\n    reduceAnimations,\n    transKey\n  } = props;\n  const classes = useUtilityClasses(props);\n  const theme = useTheme();\n  if (reduceAnimations) {\n    return children;\n  }\n  return /*#__PURE__*/_jsx(PickersFadeTransitionGroupRoot, {\n    className: clsx(classes.root, className),\n    children: /*#__PURE__*/_jsx(Fade, {\n      appear: false,\n      mountOnEnter: true,\n      unmountOnExit: true,\n      timeout: {\n        appear: theme.transitions.duration.enteringScreen,\n        enter: theme.transitions.duration.enteringScreen,\n        exit: 0\n      },\n      children: children\n    }, transKey)\n  });\n}", "import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nexport const getPickersFadeTransitionGroupUtilityClass = slot => generateUtilityClass('MuiPickersFadeTransitionGroup', slot);\nexport const pickersFadeTransitionGroupClasses = generateUtilityClasses('MuiPickersFadeTransitionGroup', ['root']);", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"value\", \"defaultValue\", \"referenceDate\", \"disabled\", \"disableFuture\", \"disablePast\", \"maxDate\", \"minDate\", \"onChange\", \"shouldDisableMonth\", \"readOnly\", \"disableHighlightToday\", \"autoFocus\", \"onMonthFocus\", \"hasFocus\", \"onFocusedViewChange\", \"monthsPerRow\", \"timezone\", \"gridLabelId\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useTheme } from '@mui/system';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_useControlled as useControlled, unstable_composeClasses as composeClasses, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport { PickersMonth } from './PickersMonth';\nimport { useUtils, useNow, useDefaultDates } from '../internals/hooks/useUtils';\nimport { getMonthCalendarUtilityClass } from './monthCalendarClasses';\nimport { applyDefaultDate, getMonthsInYear } from '../internals/utils/date-utils';\nimport { singleItemValueManager } from '../internals/utils/valueManagers';\nimport { SECTION_TYPE_GRANULARITY } from '../internals/utils/getDefaultReferenceDate';\nimport { useControlledValueWithTimezone } from '../internals/hooks/useValueWithTimezone';\nimport { DIALOG_WIDTH } from '../internals/constants/dimensions';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getMonthCalendarUtilityClass, classes);\n};\nexport function useMonthCalendarDefaultizedProps(props, name) {\n  const utils = useUtils();\n  const defaultDates = useDefaultDates();\n  const themeProps = useThemeProps({\n    props,\n    name\n  });\n  return _extends({\n    disableFuture: false,\n    disablePast: false\n  }, themeProps, {\n    minDate: applyDefaultDate(utils, themeProps.minDate, defaultDates.minDate),\n    maxDate: applyDefaultDate(utils, themeProps.maxDate, defaultDates.maxDate)\n  });\n}\nconst MonthCalendarRoot = styled('div', {\n  name: 'MuiMonthCalendar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'flex',\n  flexWrap: 'wrap',\n  alignContent: 'stretch',\n  padding: '0 4px',\n  width: DIALOG_WIDTH,\n  // avoid padding increasing width over defined\n  boxSizing: 'border-box'\n});\n/**\n * Demos:\n *\n * - [DateCalendar](https://mui.com/x/react-date-pickers/date-calendar/)\n *\n * API:\n *\n * - [MonthCalendar API](https://mui.com/x/api/date-pickers/month-calendar/)\n */\nexport const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inProps, ref) {\n  const props = useMonthCalendarDefaultizedProps(inProps, 'MuiMonthCalendar');\n  const {\n      className,\n      value: valueProp,\n      defaultValue,\n      referenceDate: referenceDateProp,\n      disabled,\n      disableFuture,\n      disablePast,\n      maxDate,\n      minDate,\n      onChange,\n      shouldDisableMonth,\n      readOnly,\n      disableHighlightToday,\n      autoFocus = false,\n      onMonthFocus,\n      hasFocus,\n      onFocusedViewChange,\n      monthsPerRow = 3,\n      timezone: timezoneProp,\n      gridLabelId\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    value,\n    handleValueChange,\n    timezone\n  } = useControlledValueWithTimezone({\n    name: 'MonthCalendar',\n    timezone: timezoneProp,\n    value: valueProp,\n    defaultValue,\n    onChange: onChange,\n    valueManager: singleItemValueManager\n  });\n  const now = useNow(timezone);\n  const theme = useTheme();\n  const utils = useUtils();\n  const referenceDate = React.useMemo(() => singleItemValueManager.getInitialReferenceValue({\n    value,\n    utils,\n    props,\n    timezone,\n    referenceDate: referenceDateProp,\n    granularity: SECTION_TYPE_GRANULARITY.month\n  }), [] // eslint-disable-line react-hooks/exhaustive-deps\n  );\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  const todayMonth = React.useMemo(() => utils.getMonth(now), [utils, now]);\n  const selectedMonth = React.useMemo(() => {\n    if (value != null) {\n      return utils.getMonth(value);\n    }\n    if (disableHighlightToday) {\n      return null;\n    }\n    return utils.getMonth(referenceDate);\n  }, [value, utils, disableHighlightToday, referenceDate]);\n  const [focusedMonth, setFocusedMonth] = React.useState(() => selectedMonth || todayMonth);\n  const [internalHasFocus, setInternalHasFocus] = useControlled({\n    name: 'MonthCalendar',\n    state: 'hasFocus',\n    controlled: hasFocus,\n    default: autoFocus != null ? autoFocus : false\n  });\n  const changeHasFocus = useEventCallback(newHasFocus => {\n    setInternalHasFocus(newHasFocus);\n    if (onFocusedViewChange) {\n      onFocusedViewChange(newHasFocus);\n    }\n  });\n  const isMonthDisabled = React.useCallback(dateToValidate => {\n    const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);\n    const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);\n    const monthToValidate = utils.startOfMonth(dateToValidate);\n    if (utils.isBefore(monthToValidate, firstEnabledMonth)) {\n      return true;\n    }\n    if (utils.isAfter(monthToValidate, lastEnabledMonth)) {\n      return true;\n    }\n    if (!shouldDisableMonth) {\n      return false;\n    }\n    return shouldDisableMonth(monthToValidate);\n  }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableMonth, utils]);\n  const handleMonthSelection = useEventCallback((event, month) => {\n    if (readOnly) {\n      return;\n    }\n    const newDate = utils.setMonth(value != null ? value : referenceDate, month);\n    handleValueChange(newDate);\n  });\n  const focusMonth = useEventCallback(month => {\n    if (!isMonthDisabled(utils.setMonth(value != null ? value : referenceDate, month))) {\n      setFocusedMonth(month);\n      changeHasFocus(true);\n      if (onMonthFocus) {\n        onMonthFocus(month);\n      }\n    }\n  });\n  React.useEffect(() => {\n    setFocusedMonth(prevFocusedMonth => selectedMonth !== null && prevFocusedMonth !== selectedMonth ? selectedMonth : prevFocusedMonth);\n  }, [selectedMonth]);\n  const handleKeyDown = useEventCallback((event, month) => {\n    const monthsInYear = 12;\n    const monthsInRow = 3;\n    switch (event.key) {\n      case 'ArrowUp':\n        focusMonth((monthsInYear + month - monthsInRow) % monthsInYear);\n        event.preventDefault();\n        break;\n      case 'ArrowDown':\n        focusMonth((monthsInYear + month + monthsInRow) % monthsInYear);\n        event.preventDefault();\n        break;\n      case 'ArrowLeft':\n        focusMonth((monthsInYear + month + (theme.direction === 'ltr' ? -1 : 1)) % monthsInYear);\n        event.preventDefault();\n        break;\n      case 'ArrowRight':\n        focusMonth((monthsInYear + month + (theme.direction === 'ltr' ? 1 : -1)) % monthsInYear);\n        event.preventDefault();\n        break;\n      default:\n        break;\n    }\n  });\n  const handleMonthFocus = useEventCallback((event, month) => {\n    focusMonth(month);\n  });\n  const handleMonthBlur = useEventCallback((event, month) => {\n    if (focusedMonth === month) {\n      changeHasFocus(false);\n    }\n  });\n  return /*#__PURE__*/_jsx(MonthCalendarRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    role: \"radiogroup\",\n    \"aria-labelledby\": gridLabelId\n  }, other, {\n    children: getMonthsInYear(utils, value != null ? value : referenceDate).map(month => {\n      const monthNumber = utils.getMonth(month);\n      const monthText = utils.format(month, 'monthShort');\n      const monthLabel = utils.format(month, 'month');\n      const isSelected = monthNumber === selectedMonth;\n      const isDisabled = disabled || isMonthDisabled(month);\n      return /*#__PURE__*/_jsx(PickersMonth, {\n        selected: isSelected,\n        value: monthNumber,\n        onClick: handleMonthSelection,\n        onKeyDown: handleKeyDown,\n        autoFocus: internalHasFocus && monthNumber === focusedMonth,\n        disabled: isDisabled,\n        tabIndex: monthNumber === focusedMonth ? 0 : -1,\n        onFocus: handleMonthFocus,\n        onBlur: handleMonthBlur,\n        \"aria-current\": todayMonth === monthNumber ? 'date' : undefined,\n        \"aria-label\": monthLabel,\n        monthsPerRow: monthsPerRow,\n        children: monthText\n      }, monthText);\n    })\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MonthCalendar.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * className applied to the root element.\n   */\n  className: PropTypes.string,\n  /**\n   * The default selected value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true` picker is disabled\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  gridLabelId: PropTypes.string,\n  hasFocus: PropTypes.bool,\n  /**\n   * Maximal selectable date.\n   */\n  maxDate: PropTypes.any,\n  /**\n   * Minimal selectable date.\n   */\n  minDate: PropTypes.any,\n  /**\n   * Months rendered per row.\n   * @default 3\n   */\n  monthsPerRow: PropTypes.oneOf([3, 4]),\n  /**\n   * Callback fired when the value changes.\n   * @template TDate\n   * @param {TDate} value The new value.\n   */\n  onChange: PropTypes.func,\n  onFocusedViewChange: PropTypes.func,\n  onMonthFocus: PropTypes.func,\n  /**\n   * If `true` picker is readonly\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid month using the validation props, except callbacks such as `shouldDisableMonth`.\n   */\n  referenceDate: PropTypes.any,\n  /**\n   * Disable specific month.\n   * @template TDate\n   * @param {TDate} month The month to test.\n   * @returns {boolean} If `true`, the month will be disabled.\n   */\n  shouldDisableMonth: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.any\n} : void 0;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"children\", \"disabled\", \"selected\", \"value\", \"tabIndex\", \"onClick\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"aria-current\", \"aria-label\", \"monthsPerRow\"];\nimport * as React from 'react';\nimport { styled, alpha, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { getPickersMonthUtilityClass, pickersMonthClasses } from './pickersMonthClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    selected,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    monthButton: ['monthButton', disabled && 'disabled', selected && 'selected']\n  };\n  return composeClasses(slots, getPickersMonthUtilityClass, classes);\n};\nconst PickersMonthRoot = styled('div', {\n  name: 'MuiPickersMonth',\n  slot: 'Root',\n  overridesResolver: (_, styles) => [styles.root]\n})(({\n  ownerState\n}) => ({\n  flexBasis: ownerState.monthsPerRow === 3 ? '33.3%' : '25%',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center'\n}));\nconst PickersMonthButton = styled('button', {\n  name: 'MuiPickersMonth',\n  slot: 'MonthButton',\n  overridesResolver: (_, styles) => [styles.monthButton, {\n    [`&.${pickersMonthClasses.disabled}`]: styles.disabled\n  }, {\n    [`&.${pickersMonthClasses.selected}`]: styles.selected\n  }]\n})(({\n  theme\n}) => _extends({\n  color: 'unset',\n  backgroundColor: 'transparent',\n  border: 0,\n  outline: 0\n}, theme.typography.subtitle1, {\n  margin: '8px 0',\n  height: 36,\n  width: 72,\n  borderRadius: 18,\n  cursor: 'pointer',\n  '&:focus': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n  },\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n  },\n  '&:disabled': {\n    cursor: 'auto',\n    pointerEvents: 'none'\n  },\n  [`&.${pickersMonthClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.secondary\n  },\n  [`&.${pickersMonthClasses.selected}`]: {\n    color: (theme.vars || theme).palette.primary.contrastText,\n    backgroundColor: (theme.vars || theme).palette.primary.main,\n    '&:focus, &:hover': {\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    }\n  }\n}));\n\n/**\n * @ignore - do not document.\n */\nexport const PickersMonth = /*#__PURE__*/React.memo(function PickersMonth(inProps) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersMonth'\n  });\n  const {\n      autoFocus,\n      children,\n      disabled,\n      selected,\n      value,\n      tabIndex,\n      onClick,\n      onKeyDown,\n      onFocus,\n      onBlur,\n      'aria-current': ariaCurrent,\n      'aria-label': ariaLabel\n      // We don't want to forward this prop to the root element\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ref = React.useRef(null);\n  const classes = useUtilityClasses(props);\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      var _ref$current;\n      (_ref$current = ref.current) == null || _ref$current.focus();\n    }\n  }, [autoFocus]);\n  return /*#__PURE__*/_jsx(PickersMonthRoot, _extends({\n    className: classes.root,\n    ownerState: props\n  }, other, {\n    children: /*#__PURE__*/_jsx(PickersMonthButton, {\n      ref: ref,\n      disabled: disabled,\n      type: \"button\",\n      role: \"radio\",\n      tabIndex: disabled ? -1 : tabIndex,\n      \"aria-current\": ariaCurrent,\n      \"aria-checked\": selected,\n      \"aria-label\": ariaLabel,\n      onClick: event => onClick(event, value),\n      onKeyDown: event => onKeyDown(event, value),\n      onFocus: event => onFocus(event, value),\n      onBlur: event => onBlur(event, value),\n      className: classes.monthButton,\n      ownerState: props,\n      children: children\n    })\n  }));\n});", "import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nexport function getPickersMonthUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersMonth', slot);\n}\nexport const pickersMonthClasses = generateUtilityClasses('MuiPickersMonth', ['root', 'monthButton', 'disabled', 'selected']);", "import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nexport function getMonthCalendarUtilityClass(slot) {\n  return generateUtilityClass('MuiMonthCalendar', slot);\n}\nexport const monthCalendarClasses = generateUtilityClasses('MuiMonthCalendar', ['root']);", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"value\", \"defaultValue\", \"referenceDate\", \"disabled\", \"disableFuture\", \"disablePast\", \"maxDate\", \"minDate\", \"onChange\", \"readOnly\", \"shouldDisableYear\", \"disableHighlightToday\", \"onYearFocus\", \"hasFocus\", \"onFocusedViewChange\", \"yearsPerRow\", \"timezone\", \"gridLabelId\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useTheme } from '@mui/system';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_useForkRef as useForkRef, unstable_composeClasses as composeClasses, unstable_useControlled as useControlled, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport { PickersYear } from './PickersYear';\nimport { useUtils, useNow, useDefaultDates } from '../internals/hooks/useUtils';\nimport { getYearCalendarUtilityClass } from './yearCalendarClasses';\nimport { applyDefaultDate } from '../internals/utils/date-utils';\nimport { singleItemValueManager } from '../internals/utils/valueManagers';\nimport { SECTION_TYPE_GRANULARITY } from '../internals/utils/getDefaultReferenceDate';\nimport { useControlledValueWithTimezone } from '../internals/hooks/useValueWithTimezone';\nimport { DIALOG_WIDTH, MAX_CALENDAR_HEIGHT } from '../internals/constants/dimensions';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getYearCalendarUtilityClass, classes);\n};\nfunction useYearCalendarDefaultizedProps(props, name) {\n  var _themeProps$yearsPerR;\n  const utils = useUtils();\n  const defaultDates = useDefaultDates();\n  const themeProps = useThemeProps({\n    props,\n    name\n  });\n  return _extends({\n    disablePast: false,\n    disableFuture: false\n  }, themeProps, {\n    yearsPerRow: (_themeProps$yearsPerR = themeProps.yearsPerRow) != null ? _themeProps$yearsPerR : 3,\n    minDate: applyDefaultDate(utils, themeProps.minDate, defaultDates.minDate),\n    maxDate: applyDefaultDate(utils, themeProps.maxDate, defaultDates.maxDate)\n  });\n}\nconst YearCalendarRoot = styled('div', {\n  name: 'MuiYearCalendar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'flex',\n  flexDirection: 'row',\n  flexWrap: 'wrap',\n  overflowY: 'auto',\n  height: '100%',\n  padding: '0 4px',\n  width: DIALOG_WIDTH,\n  maxHeight: MAX_CALENDAR_HEIGHT,\n  // avoid padding increasing width over defined\n  boxSizing: 'border-box',\n  position: 'relative'\n});\n/**\n * Demos:\n *\n * - [DateCalendar](https://mui.com/x/react-date-pickers/date-calendar/)\n *\n * API:\n *\n * - [YearCalendar API](https://mui.com/x/api/date-pickers/year-calendar/)\n */\nexport const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(inProps, ref) {\n  const props = useYearCalendarDefaultizedProps(inProps, 'MuiYearCalendar');\n  const {\n      autoFocus,\n      className,\n      value: valueProp,\n      defaultValue,\n      referenceDate: referenceDateProp,\n      disabled,\n      disableFuture,\n      disablePast,\n      maxDate,\n      minDate,\n      onChange,\n      readOnly,\n      shouldDisableYear,\n      disableHighlightToday,\n      onYearFocus,\n      hasFocus,\n      onFocusedViewChange,\n      yearsPerRow,\n      timezone: timezoneProp,\n      gridLabelId\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    value,\n    handleValueChange,\n    timezone\n  } = useControlledValueWithTimezone({\n    name: 'YearCalendar',\n    timezone: timezoneProp,\n    value: valueProp,\n    defaultValue,\n    onChange: onChange,\n    valueManager: singleItemValueManager\n  });\n  const now = useNow(timezone);\n  const theme = useTheme();\n  const utils = useUtils();\n  const referenceDate = React.useMemo(() => singleItemValueManager.getInitialReferenceValue({\n    value,\n    utils,\n    props,\n    timezone,\n    referenceDate: referenceDateProp,\n    granularity: SECTION_TYPE_GRANULARITY.year\n  }), [] // eslint-disable-line react-hooks/exhaustive-deps\n  );\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  const todayYear = React.useMemo(() => utils.getYear(now), [utils, now]);\n  const selectedYear = React.useMemo(() => {\n    if (value != null) {\n      return utils.getYear(value);\n    }\n    if (disableHighlightToday) {\n      return null;\n    }\n    return utils.getYear(referenceDate);\n  }, [value, utils, disableHighlightToday, referenceDate]);\n  const [focusedYear, setFocusedYear] = React.useState(() => selectedYear || todayYear);\n  const [internalHasFocus, setInternalHasFocus] = useControlled({\n    name: 'YearCalendar',\n    state: 'hasFocus',\n    controlled: hasFocus,\n    default: autoFocus != null ? autoFocus : false\n  });\n  const changeHasFocus = useEventCallback(newHasFocus => {\n    setInternalHasFocus(newHasFocus);\n    if (onFocusedViewChange) {\n      onFocusedViewChange(newHasFocus);\n    }\n  });\n  const isYearDisabled = React.useCallback(dateToValidate => {\n    if (disablePast && utils.isBeforeYear(dateToValidate, now)) {\n      return true;\n    }\n    if (disableFuture && utils.isAfterYear(dateToValidate, now)) {\n      return true;\n    }\n    if (minDate && utils.isBeforeYear(dateToValidate, minDate)) {\n      return true;\n    }\n    if (maxDate && utils.isAfterYear(dateToValidate, maxDate)) {\n      return true;\n    }\n    if (!shouldDisableYear) {\n      return false;\n    }\n    const yearToValidate = utils.startOfYear(dateToValidate);\n    return shouldDisableYear(yearToValidate);\n  }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableYear, utils]);\n  const handleYearSelection = useEventCallback((event, year) => {\n    if (readOnly) {\n      return;\n    }\n    const newDate = utils.setYear(value != null ? value : referenceDate, year);\n    handleValueChange(newDate);\n  });\n  const focusYear = useEventCallback(year => {\n    if (!isYearDisabled(utils.setYear(value != null ? value : referenceDate, year))) {\n      setFocusedYear(year);\n      changeHasFocus(true);\n      onYearFocus == null || onYearFocus(year);\n    }\n  });\n  React.useEffect(() => {\n    setFocusedYear(prevFocusedYear => selectedYear !== null && prevFocusedYear !== selectedYear ? selectedYear : prevFocusedYear);\n  }, [selectedYear]);\n  const handleKeyDown = useEventCallback((event, year) => {\n    switch (event.key) {\n      case 'ArrowUp':\n        focusYear(year - yearsPerRow);\n        event.preventDefault();\n        break;\n      case 'ArrowDown':\n        focusYear(year + yearsPerRow);\n        event.preventDefault();\n        break;\n      case 'ArrowLeft':\n        focusYear(year + (theme.direction === 'ltr' ? -1 : 1));\n        event.preventDefault();\n        break;\n      case 'ArrowRight':\n        focusYear(year + (theme.direction === 'ltr' ? 1 : -1));\n        event.preventDefault();\n        break;\n      default:\n        break;\n    }\n  });\n  const handleYearFocus = useEventCallback((event, year) => {\n    focusYear(year);\n  });\n  const handleYearBlur = useEventCallback((event, year) => {\n    if (focusedYear === year) {\n      changeHasFocus(false);\n    }\n  });\n  const scrollerRef = React.useRef(null);\n  const handleRef = useForkRef(ref, scrollerRef);\n  React.useEffect(() => {\n    if (autoFocus || scrollerRef.current === null) {\n      return;\n    }\n    const tabbableButton = scrollerRef.current.querySelector('[tabindex=\"0\"]');\n    if (!tabbableButton) {\n      return;\n    }\n\n    // Taken from useScroll in x-data-grid, but vertically centered\n    const offsetHeight = tabbableButton.offsetHeight;\n    const offsetTop = tabbableButton.offsetTop;\n    const clientHeight = scrollerRef.current.clientHeight;\n    const scrollTop = scrollerRef.current.scrollTop;\n    const elementBottom = offsetTop + offsetHeight;\n    if (offsetHeight > clientHeight || offsetTop < scrollTop) {\n      // Button already visible\n      return;\n    }\n    scrollerRef.current.scrollTop = elementBottom - clientHeight / 2 - offsetHeight / 2;\n  }, [autoFocus]);\n  return /*#__PURE__*/_jsx(YearCalendarRoot, _extends({\n    ref: handleRef,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    role: \"radiogroup\",\n    \"aria-labelledby\": gridLabelId\n  }, other, {\n    children: utils.getYearRange(minDate, maxDate).map(year => {\n      const yearNumber = utils.getYear(year);\n      const isSelected = yearNumber === selectedYear;\n      const isDisabled = disabled || isYearDisabled(year);\n      return /*#__PURE__*/_jsx(PickersYear, {\n        selected: isSelected,\n        value: yearNumber,\n        onClick: handleYearSelection,\n        onKeyDown: handleKeyDown,\n        autoFocus: internalHasFocus && yearNumber === focusedYear,\n        disabled: isDisabled,\n        tabIndex: yearNumber === focusedYear ? 0 : -1,\n        onFocus: handleYearFocus,\n        onBlur: handleYearBlur,\n        \"aria-current\": todayYear === yearNumber ? 'date' : undefined,\n        yearsPerRow: yearsPerRow,\n        children: utils.format(year, 'year')\n      }, utils.format(year, 'year'));\n    })\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? YearCalendar.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * className applied to the root element.\n   */\n  className: PropTypes.string,\n  /**\n   * The default selected value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true` picker is disabled\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  gridLabelId: PropTypes.string,\n  hasFocus: PropTypes.bool,\n  /**\n   * Maximal selectable date.\n   */\n  maxDate: PropTypes.any,\n  /**\n   * Minimal selectable date.\n   */\n  minDate: PropTypes.any,\n  /**\n   * Callback fired when the value changes.\n   * @template TDate\n   * @param {TDate} value The new value.\n   */\n  onChange: PropTypes.func,\n  onFocusedViewChange: PropTypes.func,\n  onYearFocus: PropTypes.func,\n  /**\n   * If `true` picker is readonly\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid year using the validation props, except callbacks such as `shouldDisableYear`.\n   */\n  referenceDate: PropTypes.any,\n  /**\n   * Disable specific year.\n   * @template TDate\n   * @param {TDate} year The year to test.\n   * @returns {boolean} If `true`, the year will be disabled.\n   */\n  shouldDisableYear: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.any,\n  /**\n   * Years rendered per row.\n   * @default 3\n   */\n  yearsPerRow: PropTypes.oneOf([3, 4])\n} : void 0;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"children\", \"disabled\", \"selected\", \"value\", \"tabIndex\", \"onClick\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"aria-current\", \"yearsPerRow\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { alpha, styled, useThemeProps } from '@mui/material/styles';\nimport { getPickersYearUtilityClass, pickersYearClasses } from './pickersYearClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    selected,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    yearButton: ['yearButton', disabled && 'disabled', selected && 'selected']\n  };\n  return composeClasses(slots, getPickersYearUtilityClass, classes);\n};\nconst PickersYearRoot = styled('div', {\n  name: 'MuiPickersYear',\n  slot: 'Root',\n  overridesResolver: (_, styles) => [styles.root]\n})(({\n  ownerState\n}) => ({\n  flexBasis: ownerState.yearsPerRow === 3 ? '33.3%' : '25%',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center'\n}));\nconst PickersYearButton = styled('button', {\n  name: 'MuiPickersYear',\n  slot: 'YearButton',\n  overridesResolver: (_, styles) => [styles.yearButton, {\n    [`&.${pickersYearClasses.disabled}`]: styles.disabled\n  }, {\n    [`&.${pickersYearClasses.selected}`]: styles.selected\n  }]\n})(({\n  theme\n}) => _extends({\n  color: 'unset',\n  backgroundColor: 'transparent',\n  border: 0,\n  outline: 0\n}, theme.typography.subtitle1, {\n  margin: '6px 0',\n  height: 36,\n  width: 72,\n  borderRadius: 18,\n  cursor: 'pointer',\n  '&:focus': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette.action.active, theme.palette.action.focusOpacity)\n  },\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n  },\n  '&:disabled': {\n    cursor: 'auto',\n    pointerEvents: 'none'\n  },\n  [`&.${pickersYearClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.secondary\n  },\n  [`&.${pickersYearClasses.selected}`]: {\n    color: (theme.vars || theme).palette.primary.contrastText,\n    backgroundColor: (theme.vars || theme).palette.primary.main,\n    '&:focus, &:hover': {\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    }\n  }\n}));\n\n/**\n * @ignore - internal component.\n */\nexport const PickersYear = /*#__PURE__*/React.memo(function PickersYear(inProps) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersYear'\n  });\n  const {\n      autoFocus,\n      className,\n      children,\n      disabled,\n      selected,\n      value,\n      tabIndex,\n      onClick,\n      onKeyDown,\n      onFocus,\n      onBlur,\n      'aria-current': ariaCurrent\n      // We don't want to forward this prop to the root element\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ref = React.useRef(null);\n  const classes = useUtilityClasses(props);\n\n  // We can't forward the `autoFocus` to the button because it is a native button, not a MUI Button\n  React.useEffect(() => {\n    if (autoFocus) {\n      // `ref.current` being `null` would be a bug in MUI.\n      ref.current.focus();\n    }\n  }, [autoFocus]);\n  return /*#__PURE__*/_jsx(PickersYearRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: props\n  }, other, {\n    children: /*#__PURE__*/_jsx(PickersYearButton, {\n      ref: ref,\n      disabled: disabled,\n      type: \"button\",\n      role: \"radio\",\n      tabIndex: disabled ? -1 : tabIndex,\n      \"aria-current\": ariaCurrent,\n      \"aria-checked\": selected,\n      onClick: event => onClick(event, value),\n      onKeyDown: event => onKeyDown(event, value),\n      onFocus: event => onFocus(event, value),\n      onBlur: event => onBlur(event, value),\n      className: classes.yearButton,\n      ownerState: props,\n      children: children\n    })\n  }));\n});", "import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nexport function getPickersYearUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersYear', slot);\n}\nexport const pickersYearClasses = generateUtilityClasses('MuiPickersYear', ['root', 'yearButton', 'selected', 'disabled']);", "import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nexport function getYearCalendarUtilityClass(slot) {\n  return generateUtilityClass('MuiYearCalendar', slot);\n}\nexport const yearCalendarClasses = generateUtilityClasses('MuiYearCalendar', ['root']);", "import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nexport const getPickersCalendarHeaderUtilityClass = slot => generateUtilityClass('MuiPickersCalendarHeader', slot);\nexport const pickersCalendarHeaderClasses = generateUtilityClasses('MuiPickersCalendarHeader', ['root', 'labelContainer', 'label', 'switchViewButton', 'switchViewIcon']);", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"slots\", \"slotProps\", \"components\", \"componentsProps\", \"currentMonth\", \"disabled\", \"disableFuture\", \"disablePast\", \"maxDate\", \"minDate\", \"onMonthChange\", \"onViewChange\", \"view\", \"reduceAnimations\", \"views\", \"labelId\", \"className\", \"timezone\"],\n  _excluded2 = [\"ownerState\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Fade from '@mui/material/Fade';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { useSlotProps } from '@mui/base/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport IconButton from '@mui/material/IconButton';\nimport { useLocaleText, useUtils } from '../internals/hooks/useUtils';\nimport { PickersFadeTransitionGroup } from '../DateCalendar/PickersFadeTransitionGroup';\nimport { ArrowDropDownIcon } from '../icons';\nimport { PickersArrowSwitcher } from '../internals/components/PickersArrowSwitcher';\nimport { usePreviousMonthDisabled, useNextMonthDisabled } from '../internals/hooks/date-helpers-hooks';\nimport { getPickersCalendarHeaderUtilityClass, pickersCalendarHeaderClasses } from './pickersCalendarHeaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    labelContainer: ['labelContainer'],\n    label: ['label'],\n    switchViewButton: ['switchViewButton'],\n    switchViewIcon: ['switchViewIcon']\n  };\n  return composeClasses(slots, getPickersCalendarHeaderUtilityClass, classes);\n};\nconst PickersCalendarHeaderRoot = styled('div', {\n  name: 'MuiPickersCalendarHeader',\n  slot: 'Root',\n  overridesResolver: (_, styles) => styles.root\n})({\n  display: 'flex',\n  alignItems: 'center',\n  marginTop: 16,\n  marginBottom: 8,\n  paddingLeft: 24,\n  paddingRight: 12,\n  // prevent jumping in safari\n  maxHeight: 30,\n  minHeight: 30\n});\nconst PickersCalendarHeaderLabelContainer = styled('div', {\n  name: 'MuiPickersCalendarHeader',\n  slot: 'LabelContainer',\n  overridesResolver: (_, styles) => styles.labelContainer\n})(({\n  theme\n}) => _extends({\n  display: 'flex',\n  overflow: 'hidden',\n  alignItems: 'center',\n  cursor: 'pointer',\n  marginRight: 'auto'\n}, theme.typography.body1, {\n  fontWeight: theme.typography.fontWeightMedium\n}));\nconst PickersCalendarHeaderLabel = styled('div', {\n  name: 'MuiPickersCalendarHeader',\n  slot: 'Label',\n  overridesResolver: (_, styles) => styles.label\n})({\n  marginRight: 6\n});\nconst PickersCalendarHeaderSwitchViewButton = styled(IconButton, {\n  name: 'MuiPickersCalendarHeader',\n  slot: 'SwitchViewButton',\n  overridesResolver: (_, styles) => styles.switchViewButton\n})(({\n  ownerState\n}) => _extends({\n  marginRight: 'auto'\n}, ownerState.view === 'year' && {\n  [`.${pickersCalendarHeaderClasses.switchViewIcon}`]: {\n    transform: 'rotate(180deg)'\n  }\n}));\nconst PickersCalendarHeaderSwitchViewIcon = styled(ArrowDropDownIcon, {\n  name: 'MuiPickersCalendarHeader',\n  slot: 'SwitchViewIcon',\n  overridesResolver: (_, styles) => styles.switchViewIcon\n})(({\n  theme\n}) => ({\n  willChange: 'transform',\n  transition: theme.transitions.create('transform'),\n  transform: 'rotate(0deg)'\n}));\n/**\n * Demos:\n *\n * - [DateCalendar](https://mui.com/x/react-date-pickers/date-calendar/)\n * - [DateRangeCalendar](https://mui.com/x/react-date-pickers/date-range-calendar/)\n * - [Custom slots and subcomponents](https://mui.com/x/react-date-pickers/custom-components/)\n *\n * API:\n *\n * - [PickersCalendarHeader API](https://mui.com/x/api/date-pickers/pickers-calendar-header/)\n */\nconst PickersCalendarHeader = /*#__PURE__*/React.forwardRef(function PickersCalendarHeader(inProps, ref) {\n  var _ref, _slots$switchViewButt, _ref2, _slots$switchViewIcon;\n  const localeText = useLocaleText();\n  const utils = useUtils();\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersCalendarHeader'\n  });\n  const {\n      slots,\n      slotProps,\n      components,\n      currentMonth: month,\n      disabled,\n      disableFuture,\n      disablePast,\n      maxDate,\n      minDate,\n      onMonthChange,\n      onViewChange,\n      view,\n      reduceAnimations,\n      views,\n      labelId,\n      className,\n      timezone\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = props;\n  const classes = useUtilityClasses(props);\n  const SwitchViewButton = (_ref = (_slots$switchViewButt = slots == null ? void 0 : slots.switchViewButton) != null ? _slots$switchViewButt : components == null ? void 0 : components.SwitchViewButton) != null ? _ref : PickersCalendarHeaderSwitchViewButton;\n  const switchViewButtonProps = useSlotProps({\n    elementType: SwitchViewButton,\n    externalSlotProps: slotProps == null ? void 0 : slotProps.switchViewButton,\n    additionalProps: {\n      size: 'small',\n      'aria-label': localeText.calendarViewSwitchingButtonAriaLabel(view)\n    },\n    ownerState,\n    className: classes.switchViewButton\n  });\n  const SwitchViewIcon = (_ref2 = (_slots$switchViewIcon = slots == null ? void 0 : slots.switchViewIcon) != null ? _slots$switchViewIcon : components == null ? void 0 : components.SwitchViewIcon) != null ? _ref2 : PickersCalendarHeaderSwitchViewIcon;\n  // The spread is here to avoid this bug mui/material-ui#34056\n  const _useSlotProps = useSlotProps({\n      elementType: SwitchViewIcon,\n      externalSlotProps: slotProps == null ? void 0 : slotProps.switchViewIcon,\n      ownerState: undefined,\n      className: classes.switchViewIcon\n    }),\n    switchViewIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);\n  const selectNextMonth = () => onMonthChange(utils.addMonths(month, 1), 'left');\n  const selectPreviousMonth = () => onMonthChange(utils.addMonths(month, -1), 'right');\n  const isNextMonthDisabled = useNextMonthDisabled(month, {\n    disableFuture,\n    maxDate,\n    timezone\n  });\n  const isPreviousMonthDisabled = usePreviousMonthDisabled(month, {\n    disablePast,\n    minDate,\n    timezone\n  });\n  const handleToggleView = () => {\n    if (views.length === 1 || !onViewChange || disabled) {\n      return;\n    }\n    if (views.length === 2) {\n      onViewChange(views.find(el => el !== view) || views[0]);\n    } else {\n      // switching only between first 2\n      const nextIndexToOpen = views.indexOf(view) !== 0 ? 0 : 1;\n      onViewChange(views[nextIndexToOpen]);\n    }\n  };\n\n  // No need to display more information\n  if (views.length === 1 && views[0] === 'year') {\n    return null;\n  }\n  return /*#__PURE__*/_jsxs(PickersCalendarHeaderRoot, _extends({}, other, {\n    ownerState: ownerState,\n    className: clsx(className, classes.root),\n    ref: ref,\n    children: [/*#__PURE__*/_jsxs(PickersCalendarHeaderLabelContainer, {\n      role: \"presentation\",\n      onClick: handleToggleView,\n      ownerState: ownerState\n      // putting this on the label item element below breaks when using transition\n      ,\n      \"aria-live\": \"polite\",\n      className: classes.labelContainer,\n      children: [/*#__PURE__*/_jsx(PickersFadeTransitionGroup, {\n        reduceAnimations: reduceAnimations,\n        transKey: utils.format(month, 'monthAndYear'),\n        children: /*#__PURE__*/_jsx(PickersCalendarHeaderLabel, {\n          id: labelId,\n          ownerState: ownerState,\n          className: classes.label,\n          children: utils.format(month, 'monthAndYear')\n        })\n      }), views.length > 1 && !disabled && /*#__PURE__*/_jsx(SwitchViewButton, _extends({}, switchViewButtonProps, {\n        children: /*#__PURE__*/_jsx(SwitchViewIcon, _extends({}, switchViewIconProps))\n      }))]\n    }), /*#__PURE__*/_jsx(Fade, {\n      in: view === 'day',\n      children: /*#__PURE__*/_jsx(PickersArrowSwitcher, {\n        slots: slots,\n        slotProps: slotProps,\n        onGoToPrevious: selectPreviousMonth,\n        isPreviousDisabled: isPreviousMonthDisabled,\n        previousLabel: localeText.previousMonth,\n        onGoToNext: selectNextMonth,\n        isNextDisabled: isNextMonthDisabled,\n        nextLabel: localeText.nextMonth\n      })\n    })]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? PickersCalendarHeader.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * className applied to the root element.\n   */\n  className: PropTypes.string,\n  /**\n   * Overridable components.\n   * @default {}\n   * @deprecated Please use `slots`.\n   */\n  components: PropTypes.object,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   * @deprecated Please use `slotProps`.\n   */\n  componentsProps: PropTypes.object,\n  currentMonth: PropTypes.any.isRequired,\n  disabled: PropTypes.bool,\n  disableFuture: PropTypes.bool,\n  disablePast: PropTypes.bool,\n  labelId: PropTypes.string,\n  maxDate: PropTypes.any.isRequired,\n  minDate: PropTypes.any.isRequired,\n  onMonthChange: PropTypes.func.isRequired,\n  onViewChange: PropTypes.func,\n  reduceAnimations: PropTypes.bool.isRequired,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  timezone: PropTypes.string.isRequired,\n  view: PropTypes.oneOf(['day', 'month', 'year']).isRequired,\n  views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired).isRequired\n} : void 0;\nexport { PickersCalendarHeader };", "import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nexport const getDateCalendarUtilityClass = slot => generateUtilityClass('MuiDateCalendar', slot);\nexport const dateCalendarClasses = generateUtilityClasses('MuiDateCalendar', ['root', 'viewTransitionContainer']);", "import {AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\nimport {DateCalendar, LocalizationProvider, PickersDay, PickersDayProps} from \"@mui/x-date-pickers\";\nimport React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport dayjs, {Dayjs} from \"dayjs\";\nimport isBetweenPlugin from 'dayjs/plugin/isBetween';\nimport {DayCalendarProps} from \"@mui/x-date-pickers/internals\";\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/es';\nimport {darkenPrimary, lightPrimary, primary, white} from \"@root/react-components/src/values/colors/colors\";\n\ndayjs.extend(isBetweenPlugin);\n\ninterface CustomPickerDayProps extends PickersDayProps<Dayjs> {\n    is_start_date?: number;\n    is_end_date?: number;\n    is_hovered?: number;\n    is_between?: number;\n    is_between_start_and_end?: number;\n    day: Dayjs;\n}\n\nconst CustomPickersDay: CustomPickerDayProps = styled(PickersDay)(\n    (props: {\n        is_start_date,\n        is_end_date,\n        is_hovered,\n        is_between,\n        is_between_start_and_end,\n    }) => ({\n        borderRadius: 0,\n        ...(props.is_between && {\n            backgroundColor: lightPrimary,\n            color: white,\n        }),\n        ...(props.is_between_start_and_end && {\n            backgroundColor: darkenPrimary,\n            color: white,\n        }),\n        ...(props.is_hovered && {\n            backgroundColor: primary,\n            color: white,\n            \"&:hover\": {backgroundColor: primary}\n        }),\n        ...((props.is_start_date || props.is_end_date) && {\n            backgroundColor: darkenPrimary,\n            color: white,\n            borderColor: white,\n            \"&:focus\": {backgroundColor: darkenPrimary, color: white}\n        }),\n    })\n);\n\nfunction Day(\n    props: PickersDayProps<Dayjs> & {\n        start_date: Dayjs | null;\n        end_date: Dayjs | null;\n        hovered_day: Dayjs | null;\n        onPointerEnter: () => void;\n        onPointerLeave: () => void;\n    },\n) {\n    const other: Omit<PickersDayProps<Dayjs>, \"children\" | \"day\"> = props;\n    const day: Dayjs = props.day;\n    const startDate: Dayjs | null | undefined = props.start_date;\n    const endDate: Dayjs | null | undefined = props.end_date;\n    const hoveredDay: Dayjs | null | undefined = props.hovered_day;\n\n    const isBetweenSelected: number =\n        startDate && endDate === null && hoveredDay ? Number(dayjs(day).isBetween(startDate, hoveredDay)) : 0;\n    const isBetweenStartAndEnd: number =\n        startDate && endDate ? Number(dayjs(day).isBetween(startDate, endDate)) : 0;\n    const isHovered: number = hoveredDay ? Number(dayjs(hoveredDay).isSame(day, \"day\")) : 0;\n    const isStartDate: number = startDate ? Number(dayjs(startDate).isSame(day, \"day\")) : 0;\n    const isEndDate: number = endDate ? Number(dayjs(endDate).isSame(day, \"day\")) : 0;\n\n    return (\n        <CustomPickersDay\n            {...other}\n            day={day}\n            selected={false}\n            is_start_date={isStartDate}\n            is_end_date={isEndDate}\n            is_between={isBetweenSelected}\n            is_hovered={isHovered}\n            is_between_start_and_end={isBetweenStartAndEnd}\n        />\n    );\n}\n\ninterface DateRangePickerProps {\n    startDate: bigint;\n    endDate: bigint;\n    onChangeRangeDate: (startTime: bigint, endTime: bigint) => void;\n    getLanguage: () => string;\n}\n\nexport default function DateRangePicker(props: DateRangePickerProps) {\n    const initialStartDate: Dayjs = props.startDate ? convertBigIntToDayJS(props.startDate) : dayjs();\n    const [hoveredDay, setHoveredDay] = React.useState<Dayjs | null>(initialStartDate);\n\n    function handleChangeStartDate(date: Dayjs) {\n        // convert to ease date management and verification\n        let startDate: Dayjs = props.startDate ? convertBigIntToDayJS(props.startDate) : date;\n        let endDate: Dayjs | null = props.endDate ? convertBigIntToDayJS(props.endDate) : null;\n\n        // if both dates are set, we reset to allow new dates to be selected\n        if (props.startDate && props.endDate) {\n            startDate = date;\n            endDate = null;\n        // if new date is before the startDate, we switch startDate by the new date\n        } else if (date.isBefore(startDate)) {\n            endDate = startDate;\n            startDate = date;\n        } else if (props.startDate && !props.endDate)\n            endDate = date;\n        \n\n        props.onChangeRangeDate(convertDayJsToBigInt(startDate.startOf(\"day\")),\n            endDate ? convertDayJsToBigInt(endDate.endOf(\"day\")) : BigInt(0));\n    }\n\n    function convertDayJsToBigInt(date: Dayjs): bigint {\n        return BigInt(dayjs(date).unix());\n    }\n\n    function convertBigIntToDayJS(date: bigint): Dayjs {\n        return dayjs(Number(date) * 1000);\n    }\n\n    return (\n        <Box style={{display: \"flex\"}}>\n            <LocalizationProvider\n                dateAdapter={AdapterDayjs}\n                adapterLocale={props.getLanguage()}\n            >\n                <DateCalendar\n                    value={hoveredDay}\n                    onChange={(date: Dayjs) => handleChangeStartDate(date)}\n                    views={['day']}\n                    slots={{day: Day}}\n                    disableFuture\n                    slotProps={{\n                        day: (ownerState: DayCalendarProps<Dayjs> & { day: Dayjs, selected: boolean }) => ({\n                            start_date: props.startDate ? convertBigIntToDayJS(props.startDate) : null,\n                            end_date: props.endDate ? convertBigIntToDayJS(props.endDate) : null,\n                            hovered_day: hoveredDay,\n                            onPointerEnter: () => setHoveredDay(ownerState.day),\n                            onPointerLeave: () => setHoveredDay(null),\n                        })\n                    }}\n                />\n            </LocalizationProvider>\n        </Box>\n    );\n}", "import {AttemptLogs} from \"../Types/AttemptLogs\";\nimport {StepAction} from \"../Types/StepAction\";\nimport {TypeOS} from \"../Types/TypeOS\";\n\nexport type QuartileData = {\n    firstQuartile: number;\n    median: number;\n    thirdQuartile: number;\n}\n\nexport namespace UtilsStats {\n\n    /// compute the average time of multiple attempts\n    export function computeAverageAttemptTime(attempts: AttemptLogs[]): number {\n        if(attempts.length == 0)\n            return 0;\n\n        // add up all step action time\n        let totalTime: bigint = BigInt(0);\n        for(const attempt of attempts)\n            totalTime += computeAttemptTime(attempt);\n\n        // divide time by the number of attempt\n        return Number(totalTime) / attempts.length;\n    }\n\n    /// compute the time spent in 1 attempt\n    export function computeAttemptTime(attempt: AttemptLogs): bigint {\n        let time: bigint = BigInt(0);\n        const stepActions: StepAction[] = attempt.getStepActions();\n        for(const stepAction of stepActions)\n            time += stepAction.timeSpent;\n        return time;\n    }\n\n    export function getTimesSpentPerStep(attempts: AttemptLogs[]): Map<bigint, number[]> {\n        // get map of times per step\n        const timeListPerStep: Map<bigint, number[]> = new Map();\n        for(const attemptLog of attempts) {\n            attemptLog.getStepActions().forEach(stepAction => {\n                const timeList: number[] | undefined = timeListPerStep.get(stepAction.stepID);\n                if(!timeList)\n                    timeListPerStep.set(stepAction.stepID, [Number(stepAction.timeSpent)])\n                else\n                    timeList.push(Number(stepAction.timeSpent))\n            });\n        }\n\n        return timeListPerStep;\n    }\n\n    /// compute average time for each stepID\n    export function computeQuartilesPerStep(timeListPerStep: Map<bigint, number[]>): Map<bigint, QuartileData> {\n        // then calc the quartiles time for each stepID\n        const quartilesPerStep: Map<bigint, QuartileData> = new Map();\n        for(const [stepID, timeList] of timeListPerStep) {\n            timeList.sort((time1, time2) => time1 - time2);\n            const median = getMedian(timeList);\n\n            const half = Math.floor(timeList.length / 2);\n            // Include median if number of attempts is even, don't include if odd\n            const firstQuartile = getMedian(timeList.slice(0, half));\n            const thirdQuartile = getMedian(timeList.slice(-half));\n\n            quartilesPerStep.set(stepID, { firstQuartile, median, thirdQuartile });\n        }\n\n        // all good! :)\n        return quartilesPerStep;\n    }\n\n    export function getMedian(dataSorted: number[]): number {\n        if(!dataSorted.length) return 0;\n\n        const half = Math.floor(dataSorted.length / 2);\n\n        return dataSorted.length % 2 === 0\n            ? (dataSorted[half - 1] + dataSorted[half]) / 2\n            : dataSorted[half];\n    }\n\n    /// compute attempts by type of OS\n    export function countAttemptByTypeOS(allAttempts: AttemptLogs[]): Map<TypeOS, bigint> {\n        const attemptCounts: Map<TypeOS, bigint> = new Map();\n        for(const attempt of allAttempts){\n            const count: bigint | undefined = attemptCounts.get(attempt.os);\n            attemptCounts.set(attempt.os, count ? count + BigInt(1) : BigInt(1));\n        }\n        return attemptCounts;\n    }\n\n    /// filter a list of attempts and keep only what is between start and end\n    export function filterAttemptByTimestampStartEnd(allAttempts: AttemptLogs[],\n                                                     start: bigint, end: bigint): AttemptLogs[] {\n        const remainingAttempts: AttemptLogs[] = [];\n        for (const attempt of allAttempts)\n            if (attemptIsBetweenTimestampStartEnd(attempt, start, end))\n                remainingAttempts.push(attempt);\n\n        return remainingAttempts;\n    }\n\n    /// verify if an attempt is between start and end\n    export function attemptIsBetweenTimestampStartEnd(attempt: AttemptLogs,\n                                                      start: bigint, end: bigint): boolean {\n        // start timestamp cannot be greater than end\n        if(start > end)\n            return false;\n\n        // iterate timestamps to find if at least one is in between the range\n        for(const timestamp of attempt.getTimestamps())\n            if(start <= timestamp && timestamp <= end)\n                return true;\n        return false;\n    }\n\n    /// returns the top attempted worlds (most attempt to least)\n    export function getTopAttemptWorlds(allAttempts: AttemptLogs[]): {worldID: bigint, count: bigint}[] {\n\n        // count how many attempts per world\n        const attemptsPerWorld: Map<bigint, bigint> = new Map();\n        for(const attempt of allAttempts){\n            const attemptCount: bigint | undefined = attemptsPerWorld.get(attempt.worldID);\n            attemptsPerWorld.set(attempt.worldID, BigInt(attemptCount ? attemptCount : 0) + BigInt(1));\n        }\n\n        // create an array of world attempts and the attempt count\n        const worldAttempts: {worldID: bigint, count: bigint}[] = Array.from(attemptsPerWorld.entries())\n            .map((worldCount:[bigint, bigint]) => ({ worldID: worldCount[0], count: worldCount[1] }));\n\n        // sort these worldID per attempt count, if equal, use their world IDs\n        worldAttempts.sort((world1:{worldID: bigint, count: bigint},\n                            world2:{worldID: bigint, count: bigint}) => {\n            if(world1.count != world2.count)\n                return world1.count > world2.count ? -1 : 1;\n            return world1.worldID < world2.worldID ? -1 : 1;\n        });\n\n        // all good! :)\n        return worldAttempts;\n    }\n\n    /// returns the top attempted sequences (most attempt to least)\n    export function getTopAttemptSequences(allAttempts: AttemptLogs[]): {\n        sequenceID: bigint,\n        count: bigint,\n        worldID: bigint\n    }[] {\n        // count how many attempts per sequence\n        const attemptsPerWorldSequence: Map<bigint, Map<bigint, bigint>> = new Map();\n\n        for(const attempt of allAttempts){\n            const worldID = attempt.worldID;\n            let sequencePerWorld = attemptsPerWorldSequence.get(worldID);\n            // init new map if undefined\n            if(!sequencePerWorld){\n                sequencePerWorld = new Map<bigint, bigint>();\n                attemptsPerWorldSequence.set(worldID, sequencePerWorld);\n            }\n\n            const attemptCount: bigint | undefined = sequencePerWorld.get(attempt.sequenceID);\n            sequencePerWorld.set(attempt.sequenceID, BigInt(attemptCount ? attemptCount : 0) + BigInt(1));\n        }\n\n        // create an array of sequence attempts and the attempt count\n        const sequenceAttempts: {worldID: bigint, sequenceID: bigint, count: bigint}[] = [];\n        for(const [worldID, sequences] of attemptsPerWorldSequence) {\n            for (const [sequenceID, attemptsCount] of sequences) {\n                sequenceAttempts.push({\n                    worldID: worldID,\n                    sequenceID: sequenceID,\n                    count: attemptsCount\n                });\n            }\n        }\n\n        // sort these sequenceIDs per attempt count, if equal, use their sequence IDs\n        sequenceAttempts.sort((sequence1:{worldID: bigint, sequenceID: bigint, count: bigint },\n                               sequence2:{ worldID: bigint, sequenceID: bigint, count: bigint}) => {\n            if(sequence1.count != sequence2.count)\n                return sequence1.count > sequence2.count ? -1 : 1;\n            return sequence1.sequenceID < sequence2.sequenceID ? -1 : 1;\n        });\n\n        // all good! :)\n        return sequenceAttempts;\n    }\n\n    /// returns the top attempted users (most attempt to least)\n    export function getTopAttemptPeers(allAttempts: AttemptLogs[]): {peerID: bigint, count: bigint}[] {\n\n        // count how many attempts per world\n        const attemptsPerPeer: Map<bigint, bigint> = new Map();\n        for(const attempt of allAttempts){\n            const attemptCount: bigint | undefined = attemptsPerPeer.get(attempt.peerID);\n            attemptsPerPeer.set(attempt.peerID, BigInt(attemptCount ? attemptCount : 0) + BigInt(1));\n        }\n\n        // create an array of world attempts and the attempt count\n        const peerAttempts: {peerID: bigint, count: bigint}[] = Array.from(attemptsPerPeer.entries())\n            .map((peerCount:[bigint, bigint]) => ({ peerID: peerCount[0], count: peerCount[1] }));\n\n        // sort these peerID per attempt count, if equal, use their peer IDs\n        peerAttempts.sort((peer1:{peerID: bigint, count: bigint},\n                           peer2:{peerID: bigint, count: bigint}) => {\n            if(peer1.count != peer2.count)\n                return peer1.count > peer2.count ? -1 : 1;\n            return peer1.peerID < peer2.peerID ? -1 : 1;\n        });\n\n        // all good! :)\n        return peerAttempts;\n    }\n\n    // filter attempts to only keep attempts related to peerID\n    export function filterAttemptLogsByPeer(attempts: AttemptLogs[], peerID: bigint): AttemptLogs[] {\n        const peerAttempts: AttemptLogs[] = [];\n        for(const attempt of attempts) {\n            if(attempt.peerID !== peerID)\n                continue;\n\n            if(attempt.length() === 0)\n                continue;\n\n            peerAttempts.push(attempt);\n        }\n\n        return peerAttempts;\n    }\n\n}\n", "import {Peer} from \"@backend/Types/Peer\";\nimport {Role} from \"@backend/Types/Role\";\nimport {Group} from \"@backend/Types/Group\";\nimport {DataSourceGroups} from \"@root/Frontend/DataSources/DataSourceGroups\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {DataSourceSequences, Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {World} from \"@backend/Types/World\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\n\n// return all IDs of worlds that the peer have access to\nexport async function getPeerWorldIDs(currentPeer: Peer): Promise<Set<bigint>> {\n    const peerWorldIDs: Set<bigint> = new Set(currentPeer.worlds);\n    const peerGroupIDs: { [group: string]: Role } | undefined = currentPeer.group;\n    const dataSourceGroups: DataSourceGroups = AppConsole.getInstance().dataSourceGroups;\n\n    if (!peerGroupIDs)\n        return peerWorldIDs;\n\n    // get all the worlds from the peer's groups\n    for (const groupID of Object.keys(peerGroupIDs)) {\n        const group: Group = await dataSourceGroups.getGroup(UtilsShared.safelyConvertStringToBigInt(groupID));\n        group.Worlds.forEach(worldID => peerWorldIDs.add(worldID));\n    }\n\n    return peerWorldIDs;\n}\n\n// return world sequences but only last published version (AND depending on the parameter -> not yet published sequences)\nexport async function getWorldSequences(worldID: bigint,\n                                        includeDrafts: boolean,\n                                        groupID: bigint = BigInt(0)): Promise<bigint[]> {\n\n    const world: World = await AppConsole.getInstance().dataSourceWorlds.getWorld(worldID);\n    const sequences: bigint[] = [];\n\n    for (const sequenceID of world?.Sequences?.value ?? []) {\n        const sequence: Sequence = await AppConsole.getInstance().dataSourceSequences.getSequence(worldID, sequenceID);\n\n        if (groupID && sequence.GroupsExclusive.value.length && !sequence.GroupsExclusive.value.includes(groupID))\n            continue;\n\n        // Ignore all sequences that are not drafts\n        if (sequence.PeerPublisher.value)\n            continue;\n\n        // Push currently used version (draft's parent)\n        if (sequence.ParentSequence.value)\n            sequences.push(sequence.ParentSequence.value);\n\n        // If the draft does not have a parent it means it was not published yet\n        else if (includeDrafts)\n            sequences.push(sequenceID);\n    }\n\n    return sequences;\n}\n\n// return all peers that have access to a world (indirectly from groups too)\nexport async function getWorldPeerIDs(worldID: bigint): Promise<Set<bigint>> {\n    const app: AppConsole = AppConsole.getInstance();\n    const world: World = await app.dataSourceWorlds.getWorld(worldID);\n    const currentPeerStr: string = app.currentPeerID.toString();\n    const isEditor: boolean = world.Peer.value[currentPeerStr] === Role.EDITOR;\n\n    // get all the peers that have direct access to the world if you are an editor\n    const worldPeerIDs: bigint[] = isEditor ?\n        Object.keys(world.Peer.value).map(UtilsShared.safelyConvertStringToBigInt) : [app.currentPeerID];\n\n    // get all peers of groups that have access to the world\n    const worldGroupIDs: bigint[] = Object.keys(world.Group.value).map((groupIDStr: string) => BigInt(groupIDStr));\n    for (const worldGroupID of worldGroupIDs) {\n        const group: Group = await AppConsole.getInstance().dataSourceGroups.getGroup(worldGroupID);\n        if (!group.Peers)\n            continue;\n\n        const groupPeerIDs: bigint[] = Object.keys(group.Peers).map(UtilsShared.safelyConvertStringToBigInt);\n        if (isEditor || group.Peers[currentPeerStr])\n            worldPeerIDs.push(...groupPeerIDs);\n    }\n\n    // filter and remove all archived and duplicate peers\n    const uniquePeerIDs: Set<bigint> = new Set();\n    await Promise.all(worldPeerIDs.map(async (peerID: bigint): Promise<void> => {\n        const peer: Peer = await AppConsole.getInstance().dataSourcePeers.getPeer(peerID);\n        if (peer.archivedDate)\n            return;\n        uniquePeerIDs.add(peerID);\n    }));\n\n    return uniquePeerIDs;\n}\n\n// return all groups that have access to a world\nexport async function getWorldGroups(worldID: bigint): Promise<Set<bigint>> {\n    const app: AppConsole = AppConsole.getInstance();\n    const world: World = await app.dataSourceWorlds.getWorld(worldID);\n    const isCurrentPeerEditor: boolean = world.Peer.value[app.currentPeerID.toString()] === Role.EDITOR;\n\n    // get all groups that have access to the world\n    const allGroupIDs: Set<bigint> = new Set();\n    for (const groupIDStr of Object.keys(world.Group.value))\n        allGroupIDs.add(UtilsShared.safelyConvertStringToBigInt(groupIDStr));\n\n    if (isCurrentPeerEditor)\n        return allGroupIDs;\n\n    const groupIDs: Set<bigint> = new Set();\n    for (const groupID of allGroupIDs) {\n        const group: Group = await AppConsole.getInstance().dataSourceGroups.getGroup(groupID);\n        if (!group.Peers)\n            continue;\n\n        if (group.Peers[app.currentPeerID.toString()])\n            groupIDs.add(groupID);\n    }\n\n    return groupIDs;\n}\n\nexport async function canPeerEditWorld(peerID: bigint, worldID: bigint): Promise<boolean> {\n    if (!peerID || !worldID)\n        return false;\n\n    const ADMIN_EMAIL: string = \"@deepsight.ca\";\n    const app: AppConsole = AppConsole.getInstance();\n    const world: World = await app.dataSourceWorlds.getWorld(worldID);\n    const peer: Peer = await app.dataSourcePeers.getPeer(peerID);\n\n    // the world is public and editable\n    if (world.Shared.value === \"true\" && world.Editable.value === \"true\")\n        return true;\n\n    // the world owner is the peer\n    if (world.Owner.value === peerID)\n        return true;\n\n    // the peer is an admin\n    if (peer.email.includes(ADMIN_EMAIL))\n        return true;\n\n    // the peer is world editor\n    if (world.Peer.value[peerID.toString()] === Role.EDITOR)\n        return true;\n\n    // the world owner is a group and the peer is a group editor\n    if (peer.group?.[world.Owner.value.toString()] === Role.EDITOR)\n        return true;\n\n    // the peer is editor of a world groups editor\n    const worldGroupsEditor: string[] =\n        Object.keys(world.Group.value).filter((groupID: string) => world.Group.value[groupID] === Role.EDITOR);\n    return Object.keys(peer.group ?? []).some((groupID: string) =>\n        peer.group?.[groupID] === Role.EDITOR && worldGroupsEditor.includes(groupID));\n}\n\nexport async function sortSequences(worldID: bigint, sequenceIDs: Set<bigint>): Promise<bigint[]> {\n    if (!worldID || !sequenceIDs.size)\n        return [];\n\n    const dataSourceSequences: DataSourceSequences = AppConsole.getInstance().dataSourceSequences;\n\n    // fetch all sequence data\n    const allSequences: Map<bigint, Sequence> = new Map();\n    for (const sequenceID of sequenceIDs)\n        allSequences.set(sequenceID, await dataSourceSequences.getSequence(worldID, sequenceID))\n\n\n    // we want to sort the sequences by critical status and then alphabetical by title\n    const sortedSequenceIDs: bigint[] = [...sequenceIDs];\n    sortedSequenceIDs.sort((sequenceID1: bigint, sequenceID2: bigint) => {\n        const sequence1: Sequence | undefined = allSequences.get(sequenceID1);\n        const sequence2: Sequence | undefined = allSequences.get(sequenceID2);\n\n        // make sure both sequences are valid\n        if (!sequence1 || !sequence2)\n            return 0;\n\n        // sort by critical as first sort criteria\n        if (sequence1.Critical.value !== sequence2.Critical.value)\n            return sequence1.Critical.value ? -1 : 1;\n\n        // sort by title as second sort criteria\n        const title1: string = sequence1.Title.value.toLowerCase().trim();\n        const title2: string = sequence2.Title.value.toLowerCase().trim();\n        return title1.localeCompare(title2, undefined, { numeric: true, sensitivity: 'base' });\n    });\n\n    return sortedSequenceIDs;\n}\n\n", "import {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {UtilsStats} from \"@backend/Utils/UtilsStats\";\nimport {TypeOS} from \"@backend/Types/TypeOS\";\nimport {FILTER_OS_LIST, FiltersInterface} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {SequenceLogs} from \"@backend/Types/SequenceLogs\";\nimport {Group} from \"@backend/Types/Group\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {World} from \"@backend/Types/World\";\nimport {canPeerEditWorld} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport i18next from \"i18next\";\nimport {Role} from \"@backend/Types/Role\";\nimport {ConnectionsPerTime} from \"@root/Frontend/Console/widgets/AttemptsByTimeGraph\";\n\ninterface PeerCountPerTime {\n    time: string;\n    peerCount: number;\n}\n\nexport async function parseAttemptsByFilters(attempts: AttemptLogs[], filters: FiltersInterface):\n    Promise<AttemptLogs[]> {\n    const filteredAttempts: AttemptLogs[] = [];\n\n    for (const attempt of attempts) {\n        // check if os matches the filter\n        const osFilter: boolean = !filters.filterOS || filters.filterOS.length === FILTER_OS_LIST.length ||\n            filters.filterOS.includes(attempt.os);\n\n        // check if attempt belongs to the selected entity\n        const entityFilter: boolean = !filters.selectedEntity || attempt.entityID === filters.selectedEntity;\n\n        // check if attempt belongs to the selected peer\n        const peerFilter: boolean = !filters.selectedPeer || attempt.peerID === filters.selectedPeer;\n\n        // check if selected group can view this attempt\n        const groupFilter: boolean = filters.selectedGroupID === undefined ||\n            await canSelectedGroupViewAttempt(filters.selectedGroupID, attempt.peerID, attempt.worldID);\n\n        // check if the filter is set to \"All Time\" or attempt falls in selected date range, or no date filter\n        const noDateFilter: boolean = filters.filterDate === undefined || filters.dateRange === undefined ||\n            filters.filterDate === FilterDateOptions.All_TIME;\n        const isInDateRange = filters.dateRange &&\n            UtilsStats.attemptIsBetweenTimestampStartEnd(attempt, filters.dateRange[0], filters.dateRange[1]);\n\n        if (osFilter && entityFilter && peerFilter && groupFilter && (noDateFilter || isInDateRange))\n            filteredAttempts.push(attempt);\n    }\n\n    return filteredAttempts;\n}\n\nasync function canSelectedGroupViewAttempt(selectedGroupID: bigint, attemptPeerID: bigint, attemptWorldID: bigint):\n    Promise<boolean> {\n    const app: AppConsole = AppConsole.getInstance();\n\n    // a peer can always see their own attempts or any attempt in a world where they are an editor.\n    if (app.currentPeerID === attemptPeerID)\n        return true;\n\n    // if a specific Group is selected\n    if (selectedGroupID) {\n        if (selectedGroupID === app.currentPeerID)\n            return false;\n\n        const group: Group = await app.dataSourceGroups.getGroup(selectedGroupID);\n        return Boolean(group.Peers[attemptPeerID.toString()]);\n    }\n\n    // if \"All groups\" is selected\n    if (await canPeerEditWorld(app.currentPeerID, attemptWorldID))\n        return true;\n\n    // Check if the current and attempt peers belong to the same group\n    const currentPeer: Peer = await app.dataSourcePeers.getPeer(app.currentPeerID);\n    const peerGroups: bigint[] = Object.keys(currentPeer.group ?? {}).map((groupID: string) =>\n        UtilsShared.safelyConvertStringToBigInt(groupID));\n\n    const world: World = await app.dataSourceWorlds.getWorld(attemptWorldID);\n    for (const peerGroupID of peerGroups) {\n        const group: Group = await app.dataSourceGroups.getGroup(peerGroupID);\n        if (world.Group.value[peerGroupID.toString()] && group.Peers[attemptPeerID.toString()])\n            return true;\n    }\n    return false;\n}\n\n// return indexes of sequenceLogs matching with filters\nexport async function isSequenceRespectingFilters(sequenceLogs: SequenceLogs,\n                                                  sequenceIndex: number,\n                                                  filters: FiltersInterface,\n                                                  filterEmptyAttempts: boolean = true): Promise<boolean> {\n\n    const filterDate: FilterDateOptions | undefined = filters.filterDate;\n    const end: bigint = BigInt(Date.now()) / BigInt(1000);\n\n    const attempt: AttemptLogs = await AppConsole.getInstance().dataSourceAttemptLogs.getAttemptLogs(\n        sequenceLogs.worldID, sequenceLogs.sequenceID, sequenceLogs.getStepsAttemptIDs()[sequenceIndex]);\n\n    if (filterEmptyAttempts && !attempt.getStepActions().length)\n        return false;\n\n    const timestamp: bigint = sequenceLogs.getStepsTimestamps()[sequenceIndex];\n    if (!timestamp)\n        return false;\n    if (filterDate !== undefined && filterDate !== FilterDateOptions.All_TIME && filters.dateRange) {\n        const start: bigint = getStartTimeFromNowInSeconds(filterDate, true);\n\n        // if start is greater than end or if timestamp is not between start and end\n        if (start > end || start >= timestamp || timestamp >= end)\n            return false;\n    }\n\n    const attemptOS: TypeOS = sequenceLogs.getStepsOS(sequenceIndex);\n    const filterOS: TypeOS[] | undefined = filters.filterOS;\n    if (filterOS && filterOS.length < FILTER_OS_LIST.length && !filterOS.includes(attemptOS))\n        return false;\n\n    if (filters.selectedPeer && filters.selectedPeer !== sequenceLogs.getStepsPeerIDs(sequenceIndex))\n        return false;\n\n    if (filters.selectedEntity && filters.selectedEntity !== sequenceLogs.getEntityID(sequenceIndex))\n        return false;\n\n    return true;\n}\n\nexport function getGrowthIDs(IDs: bigint[], filterDate: FilterDateOptions): number {\n    const [startDateFilter, endDateFilter]: [bigint, bigint] = getRangeDateValueByFilterOption(filterDate);\n    let count: number = 0;\n    for (const elementID of IDs)\n        if (isWithinRange(startDateFilter, endDateFilter, UtilsShared.getTimestampOfRandomID(elementID)))\n            ++count\n    return count;\n}\n\n/************************** FILTER DATE **************************/\nconst ONE_DAY_SECONDS: bigint = BigInt(86400);\n\nfunction getNumberOfDaysInMonth(startTime: bigint): bigint {\n    const date: Date = new Date(Number(startTime) * 1000);\n    // source: https://stackoverflow.com/questions/1184334/get-number-days-in-a-specified-month-using-javascript\n    const daysInTheMonth: number = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n    const secondsInTheMonth: bigint = ONE_DAY_SECONDS * BigInt(daysInTheMonth);\n\n    // We need to handle when hours change\n    if(date.getMonth() === 10)\n        return secondsInTheMonth + BigInt(3600);\n    else if(date.getMonth() === 2)\n        return secondsInTheMonth - BigInt(3600);\n\n    return secondsInTheMonth;\n}\n\n// if exact is true we calculate 30, 90, 365 days.\n// If it's false we get the latest sunday of the 30th or 90th day. For Last_Year, eleven months before on the first day\n// (ex: may 2023 -> june 2022)\nexport function getStartTimeFromNowInSeconds(date: FilterDateOptions, exact: boolean = true): bigint {\n    const endTime: bigint = BigInt(Date.now()) / BigInt(1000);\n    switch(date) {\n        case FilterDateOptions.LAST_24_HOURS:\n            return endTime - ONE_DAY_SECONDS;\n        case FilterDateOptions.LAST_7_DAYS:\n            const sevenDayFromEndTimeDate: Date =\n                new Date(Number(endTime - ONE_DAY_SECONDS * BigInt(7)) * 1000);\n\n            // Go back 6 days before at midnight (Wednesday -> thursday at 00h00)\n            const sevenDaysBeforeDate: number =\n                new Date(\n                    sevenDayFromEndTimeDate.getFullYear(),\n                    sevenDayFromEndTimeDate.getMonth(),\n                    sevenDayFromEndTimeDate.getDate() + 1\n                ).getTime();\n\n            return BigInt(Math.floor(sevenDaysBeforeDate / 1000));\n\n        case FilterDateOptions.LAST_30_DAYS: {\n            if(exact)\n                return endTime - (ONE_DAY_SECONDS * BigInt(30));\n\n            // Go 37 days earlier to find the Sunday of the last week to display\n            const thirtyDaysFromEndTime: bigint = endTime - (ONE_DAY_SECONDS * BigInt(37));\n            const dayOfTheWeek: number = new Date(Number(thirtyDaysFromEndTime) * 1000).getDay();\n            return thirtyDaysFromEndTime + (BigInt(7 - dayOfTheWeek) * ONE_DAY_SECONDS);\n        }\n        case FilterDateOptions.LAST_90_DAYS:\n            if(exact)\n                return endTime - (ONE_DAY_SECONDS * BigInt(90));\n\n            // Go 97 days earlier to find the Sunday of the last week to display\n            const ninetyDaysFromEndTime: bigint = endTime - (ONE_DAY_SECONDS * BigInt(97));\n            const dayOfTheWeek: number = new Date(Number(ninetyDaysFromEndTime) * 1000).getDay();\n            return ninetyDaysFromEndTime + (BigInt(7 - dayOfTheWeek) * ONE_DAY_SECONDS);\n        case FilterDateOptions.LAST_YEAR:\n            if(exact)\n                return endTime - (ONE_DAY_SECONDS * BigInt(365));\n\n            const date: Date = new Date(Number(endTime - (ONE_DAY_SECONDS * BigInt(365))) * 1000);\n            const firstDayOfMonth: Date = new Date(date.getFullYear(), date.getMonth() + 1, 1);\n            return BigInt(firstDayOfMonth.getTime() / 1000);\n        default:\n            return BigInt(0);\n    }\n}\n\nexport function getRangeDateValueByFilterOption(filterDateOption: FilterDateOptions): [bigint, bigint] {\n    const startTime: bigint =\n        filterDateOption === FilterDateOptions.CUSTOM ? BigInt(0) : getStartTimeFromNowInSeconds(filterDateOption);\n    const endTime: bigint =\n        filterDateOption === FilterDateOptions.CUSTOM ? BigInt(0) : BigInt(Date.now()) / BigInt(1000);\n    return [startTime, endTime];\n}\n\nfunction getFilterDateInterval(filterDate: FilterDateOptions, startTime: bigint): bigint {\n    switch(filterDate) {\n        case FilterDateOptions.LAST_24_HOURS:\n            return ONE_DAY_SECONDS / BigInt(6);\n        case FilterDateOptions.LAST_7_DAYS:\n            return ONE_DAY_SECONDS;\n        case FilterDateOptions.LAST_30_DAYS:\n            return ONE_DAY_SECONDS * BigInt(7);\n        case FilterDateOptions.LAST_90_DAYS:\n            return ONE_DAY_SECONDS * BigInt(14);\n        case FilterDateOptions.LAST_YEAR:\n            return getNumberOfDaysInMonth(startTime);\n        case FilterDateOptions.All_TIME:\n            return ONE_DAY_SECONDS * BigInt(366);\n        default:\n            return BigInt(0);\n    }\n}\n\nfunction getTimeKey(startTime: bigint, endTime: bigint, filterDate: FilterDateOptions): string {\n    const startDateTime: Date = new Date(Number(startTime) * 1000);\n    const endDateTime: Date = new Date(Number(endTime) * 1000);\n    const lang: string = i18next.language;\n\n    switch(filterDate) {\n        case FilterDateOptions.LAST_24_HOURS :\n            const start: string = startDateTime.toLocaleTimeString(\"en-US\",{hour: '2-digit', minute: '2-digit'});\n            const end: string = endDateTime.toLocaleTimeString(\"en-US\",{hour: '2-digit', minute: '2-digit'});\n            return `${start} - ${end}`;\n        case FilterDateOptions.LAST_7_DAYS :\n            return startDateTime.toLocaleDateString(lang,{weekday: \"long\"});\n        case FilterDateOptions.LAST_30_DAYS:\n        case FilterDateOptions.LAST_90_DAYS:\n            return `${startDateTime.toLocaleDateString(lang, {month: \"short\", day: \"numeric\"})} \n            - ${endDateTime.toLocaleDateString(lang, {month: \"short\", day: \"numeric\"})}`;\n        case FilterDateOptions.LAST_YEAR:\n            return startDateTime.toLocaleDateString(lang,{month: \"short\"});\n        case FilterDateOptions.All_TIME:\n            return startDateTime.toLocaleDateString(lang, {year:\"numeric\"});\n        default:\n            return \"\";\n    }\n}\n\nexport function parseConnectionsByTimeInterval(\n    connectionsByRole: Record<Role, Map<bigint, bigint[]>>,\n    filterDate: FilterDateOptions)\n    : ConnectionsPerTime[] {\n\n    if (!connectionsByRole[Role.EDITOR].size && !connectionsByRole[Role.VIEWER].size)\n        return [];\n\n    const endTime: bigint = BigInt(Date.now()) / BigInt(1000);\n\n    let startTime: bigint;\n    if (filterDate === FilterDateOptions.All_TIME) {\n        let minDate: bigint = BigInt(endTime);\n        for (const peerIDS of Object.values(connectionsByRole))\n            for (const dates of peerIDS.values())\n                dates.forEach((date: bigint) => minDate = BigInt(Math.min(Number(date), Number(minDate))));\n\n        startTime = minDate;\n    } else\n        startTime = getStartTimeFromNowInSeconds(filterDate, false);\n\n    if (startTime >= endTime)\n        return [];\n\n    const editorCounts: PeerCountPerTime[] =\n        countPeersByTimeInterval(connectionsByRole[Role.EDITOR], filterDate, startTime, endTime);\n    const viewerCounts: PeerCountPerTime[] =\n        countPeersByTimeInterval(connectionsByRole[Role.VIEWER], filterDate, startTime, endTime);\n\n    return editorCounts.map((count: PeerCountPerTime, i: number): ConnectionsPerTime => ({\n        time: count.time,\n        editorPeerCount: count.peerCount,\n        viewerPeerCount: viewerCounts[i]?.peerCount ?? 0\n    }));\n}\n\nfunction countPeersByTimeInterval(\n    connections: Map<bigint, bigint[]>,\n    filterDate: FilterDateOptions,\n    startTime: bigint,\n    endTime: bigint)\n    : PeerCountPerTime[] {\n\n    const peerCountPerInterval: PeerCountPerTime[] = [];\n\n    const datePeersConnections: {peerID: bigint, timestamp: bigint}[] = [];\n    for (const [peerID, timestamps] of connections)\n        timestamps.map((timestamp: bigint) => datePeersConnections.push({peerID, timestamp}))\n\n    const sortedConnections: {peerID: bigint, timestamp: bigint}[] =\n        datePeersConnections.sort((a, b) => Number(a.timestamp) - Number(b.timestamp));\n\n    //We retrieve only the connections that fall within the chart's range.\n    const connectionSortedInRage: {peerID: bigint, timestamp: bigint}[] =\n        getConnectionsInRange(sortedConnections, startTime);\n\n    let interval: bigint = getFilterDateInterval(filterDate, startTime);\n    let startTimeInterval: bigint = startTime;\n    let endTimeInterval: bigint = startTime + interval;\n    let timeTitle: string = getTimeKey(startTimeInterval, endTimeInterval, filterDate);\n    let peersIDs: Set<bigint> = new Set<bigint>();\n\n    for (let index: number = 0; index < connectionSortedInRage.length; ++index) {\n        const currentConnection: {peerID: bigint, timestamp: bigint} = connectionSortedInRage[index];\n\n        if (currentConnection.timestamp < endTimeInterval) {\n            peersIDs.add(currentConnection.peerID);\n            continue;\n        }\n\n        //Go to an other interval\n        peerCountPerInterval.push({ time: timeTitle, peerCount: peersIDs.size });\n        peersIDs.clear();\n        startTimeInterval = endTimeInterval;\n        endTimeInterval = startTimeInterval + interval > endTime ? endTime : startTimeInterval + interval;\n        timeTitle = getTimeKey(startTimeInterval, endTimeInterval, filterDate);\n\n        if (filterDate === FilterDateOptions.LAST_YEAR)\n            interval = getNumberOfDaysInMonth(startTimeInterval);\n\n        if (filterDate === FilterDateOptions.LAST_24_HOURS && startTimeInterval === endTime) break;\n    }\n    peerCountPerInterval.push({ time: timeTitle, peerCount: peersIDs.size });\n\n    return peerCountPerInterval;\n}\n\nfunction getConnectionsInRange(\n    sortedConnections: { peerID: bigint, timestamp: bigint }[],\n    startTime: bigint\n): { peerID: bigint, timestamp: bigint }[] {\n    let index: number = 0;\n\n    while (index < sortedConnections.length && sortedConnections[index].timestamp < startTime)\n        index++;\n\n    return sortedConnections.slice(index);\n}\n\nexport function getConnectionPeer(logins: { [addressIP: string]: bigint[] }): bigint[] {\n    return Object.values(logins).flat();\n}\n\nexport function wasPeerActive(startDate: bigint, endDate: bigint, peer: Peer): boolean {\n    const connections: bigint[] = getConnectionPeer(peer?.logins ?? {});\n    return connections.some((connectionTimestamp: bigint): boolean =>\n        isWithinRange(startDate, endDate, connectionTimestamp)\n    );\n}\n\nexport function isWithinRange(startDate: bigint, endDate: bigint, compareDate: bigint){\n    return compareDate >= startDate && compareDate < endDate;\n}", "import React, {useEffect, useState} from \"react\"\nimport styled from \"styled-components\";\nimport {\n    dark,\n    darkenWhite,\n    darkGrey,\n    lightPrimary,\n    lightWhite,\n    primary,\n} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Box} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {Bar, BarChart, CartesianGrid, Label, Legend, ResponsiveContainer, Tooltip, XAxis, YAxis} from \"recharts\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {NoDataToDisplay} from \"@root/Frontend/Console/components/NoDataToDisplay\";\nimport {convertFilterDateToString, FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport { parseConnectionsByTimeInterval\n} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {Role} from \"@backend/Types/Role\";\n\nconst Wrapper = styled(Box)({\n    backgroundColor: lightWhite,\n    width: \"100%\",\n    borderRadius: \"24px\",\n    font: primaryFontLarge,\n    padding: \"24px 6px\",\n    boxSizing: \"border-box\",\n    border: `1px solid ${darkenWhite}`,\n    color: lightWhite,\n    overflowY: \"hidden\",\n    overflowX: \"auto\",\n});\n\nexport interface ConnectionsPerTime {\n    time: string;\n    editorPeerCount: number;\n    viewerPeerCount: number;\n}\n\ninterface AttemptsByTimeGraphProps {\n    filterDate: FilterDateOptions;\n}\n\nexport function AttemptsByTimeGraph(props: AttemptsByTimeGraphProps) {\n    const dataSourcePeers: DataSourcePeers = AppConsole.getInstance().dataSourcePeers;\n    const GRAPH_HEIGHT: number = 600;\n    const xAxisTitle: string = props.filterDate ? i18next.t(convertFilterDateToString(props.filterDate)) : \"\";\n    const [graphData, setGraphData] = useState<ConnectionsPerTime[]|null>(null);\n\n    useEffect(() => {\n        dataSourcePeers.getActivePeers().then((connectionsPeers: Record<Role, Map<bigint, bigint[]>>) => {\n            setGraphData(parseConnectionsByTimeInterval(connectionsPeers, props.filterDate));\n        });\n    }, [props.filterDate]);\n\n    if (!graphData)\n        return (\n            <Wrapper style={{height: GRAPH_HEIGHT, color: dark}}>\n                <CenteredLoading />\n            </Wrapper>\n        );\n\n    if (!graphData.length)\n        return (\n            <Wrapper style={{height: GRAPH_HEIGHT, color: dark}}>\n                <NoDataToDisplay />\n            </Wrapper>\n        );\n\n    return (\n        <Wrapper style={{height: GRAPH_HEIGHT}}>\n            <ResponsiveContainer height={GRAPH_HEIGHT - 24} width={\"100%\"}>\n                <BarChart width={730} height={250} data={graphData}\n                          margin={{top: 5, right: 30, left: 15, bottom: 5}}>\n                    <Legend verticalAlign=\"bottom\" height={35} iconType=\"circle\"/>\n                    <CartesianGrid strokeDasharray=\"3 3\"/>\n                    <XAxis dataKey=\"time\" height={70}>\n                        <Label value={xAxisTitle} position={\"insideEnd\"}/>\n                    </XAxis>\n                    <YAxis allowDecimals={false} width={60}>\n                        <Label style={{textAnchor: \"middle\"}} value={i18next.t(\"Number of connected users\") as string}\n                               position={\"insideLeft\"} angle={-90}/>\n                    </YAxis>\n                    <Tooltip\n                        itemSorter={(item) => item.dataKey === \"editorPeerCount\" ? 0 : 1}\n                        labelStyle={{color: darkGrey, paddingBottom: \"4px\"}}\n                        itemStyle={{padding: 0}}\n                    />\n                    <Bar dataKey=\"editorPeerCount\" name={i18next.t(\"Editors\")} fill={primary}/>\n                    <Bar dataKey=\"viewerPeerCount\" name={i18next.t(\"Viewers\")} fill={lightPrimary}/>\n                </BarChart>\n            </ResponsiveContainer>\n        </Wrapper>\n    );\n}\n", "function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Surface\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nexport function Surface(props) {\n  var children = props.children,\n      width = props.width,\n      height = props.height,\n      viewBox = props.viewBox,\n      className = props.className,\n      style = props.style,\n      others = _objectWithoutProperties(props, [\"children\", \"width\", \"height\", \"viewBox\", \"className\", \"style\"]);\n\n  var svgView = viewBox || {\n    width: width,\n    height: height,\n    x: 0,\n    y: 0\n  };\n  var layerClass = classNames('recharts-surface', className);\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({}, filterProps(others, true, true), {\n    className: layerClass,\n    width: width,\n    height: height,\n    style: style,\n    viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height),\n    version: \"1.1\"\n  }), /*#__PURE__*/React.createElement(\"title\", null, props.title), /*#__PURE__*/React.createElement(\"desc\", null, props.desc), children);\n}", "import _isObject from \"lodash/isObject\";\n\nfunction _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 { isValidElement } from 'react';\nvar SVGContainerPropKeys = ['viewBox', 'children'];\nvar SVGElementPropKeys = ['aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'className', 'color', 'height', 'id', 'lang', 'max', 'media', 'method', 'min', 'name', 'style', 'target', 'type', 'width', 'role', 'tabIndex', 'accentHeight', 'accumulate', 'additive', 'alignmentBaseline', 'allowReorder', 'alphabetic', 'amplitude', 'arabicForm', 'ascent', 'attributeName', 'attributeType', 'autoReverse', 'azimuth', 'baseFrequency', 'baselineShift', 'baseProfile', 'bbox', 'begin', 'bias', 'by', 'calcMode', 'capHeight', 'clip', 'clipPath', 'clipPathUnits', 'clipRule', 'colorInterpolation', 'colorInterpolationFilters', 'colorProfile', 'colorRendering', 'contentScriptType', 'contentStyleType', 'cursor', 'cx', 'cy', 'd', 'decelerate', 'descent', 'diffuseConstant', 'direction', 'display', 'divisor', 'dominantBaseline', 'dur', 'dx', 'dy', 'edgeMode', 'elevation', 'enableBackground', 'end', 'exponent', 'externalResourcesRequired', 'fill', 'fillOpacity', 'fillRule', 'filter', 'filterRes', 'filterUnits', 'floodColor', 'floodOpacity', 'focusable', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontWeight', 'format', 'from', 'fx', 'fy', 'g1', 'g2', 'glyphName', 'glyphOrientationHorizontal', 'glyphOrientationVertical', 'glyphRef', 'gradientTransform', 'gradientUnits', 'hanging', 'horizAdvX', 'horizOriginX', 'href', 'ideographic', 'imageRendering', 'in2', 'in', 'intercept', 'k1', 'k2', 'k3', 'k4', 'k', 'kernelMatrix', 'kernelUnitLength', 'kerning', 'keyPoints', 'keySplines', 'keyTimes', 'lengthAdjust', 'letterSpacing', 'lightingColor', 'limitingConeAngle', 'local', 'markerEnd', 'markerHeight', 'markerMid', 'markerStart', 'markerUnits', 'markerWidth', 'mask', 'maskContentUnits', 'maskUnits', 'mathematical', 'mode', 'numOctaves', 'offset', 'opacity', 'operator', 'order', 'orient', 'orientation', 'origin', 'overflow', 'overlinePosition', 'overlineThickness', 'paintOrder', 'panose1', 'pathLength', 'patternContentUnits', 'patternTransform', 'patternUnits', 'pointerEvents', 'points', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'preserveAlpha', 'preserveAspectRatio', 'primitiveUnits', 'r', 'radius', 'refX', 'refY', 'renderingIntent', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'result', 'rotate', 'rx', 'ry', 'seed', 'shapeRendering', 'slope', 'spacing', 'specularConstant', 'specularExponent', 'speed', 'spreadMethod', 'startOffset', 'stdDeviation', 'stemh', 'stemv', 'stitchTiles', 'stopColor', 'stopOpacity', 'strikethroughPosition', 'strikethroughThickness', 'string', 'stroke', 'strokeDasharray', 'strokeDashoffset', 'strokeLinecap', 'strokeLinejoin', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'surfaceScale', 'systemLanguage', 'tableValues', 'targetX', 'targetY', 'textAnchor', 'textDecoration', 'textLength', 'textRendering', 'to', 'transform', 'u1', 'u2', 'underlinePosition', 'underlineThickness', 'unicode', 'unicodeBidi', 'unicodeRange', 'unitsPerEm', 'vAlphabetic', 'values', 'vectorEffect', 'version', 'vertAdvY', 'vertOriginX', 'vertOriginY', 'vHanging', 'vIdeographic', 'viewTarget', 'visibility', 'vMathematical', 'widths', 'wordSpacing', 'writingMode', 'x1', 'x2', 'x', 'xChannelSelector', 'xHeight', 'xlinkActuate', 'xlinkArcrole', 'xlinkHref', 'xlinkRole', 'xlinkShow', 'xlinkTitle', 'xlinkType', 'xmlBase', 'xmlLang', 'xmlns', 'xmlnsXlink', 'xmlSpace', 'y1', 'y2', 'y', 'yChannelSelector', 'z', 'zoomAndPan', 'ref', 'key', 'angle'];\nvar EventKeys = ['dangerouslySetInnerHTML', 'onCopy', 'onCopyCapture', 'onCut', 'onCutCapture', 'onPaste', 'onPasteCapture', 'onCompositionEnd', 'onCompositionEndCapture', 'onCompositionStart', 'onCompositionStartCapture', 'onCompositionUpdate', 'onCompositionUpdateCapture', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onChangeCapture', 'onBeforeInput', 'onBeforeInputCapture', 'onInput', 'onInputCapture', 'onReset', 'onResetCapture', 'onSubmit', 'onSubmitCapture', 'onInvalid', 'onInvalidCapture', 'onLoad', 'onLoadCapture', 'onError', 'onErrorCapture', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyPressCapture', 'onKeyUp', 'onKeyUpCapture', 'onAbort', 'onAbortCapture', 'onCanPlay', 'onCanPlayCapture', 'onCanPlayThrough', 'onCanPlayThroughCapture', 'onDurationChange', 'onDurationChangeCapture', 'onEmptied', 'onEmptiedCapture', 'onEncrypted', 'onEncryptedCapture', 'onEnded', 'onEndedCapture', 'onLoadedData', 'onLoadedDataCapture', 'onLoadedMetadata', 'onLoadedMetadataCapture', 'onLoadStart', 'onLoadStartCapture', 'onPause', 'onPauseCapture', 'onPlay', 'onPlayCapture', 'onPlaying', 'onPlayingCapture', 'onProgress', 'onProgressCapture', 'onRateChange', 'onRateChangeCapture', 'onSeeked', 'onSeekedCapture', 'onSeeking', 'onSeekingCapture', 'onStalled', 'onStalledCapture', 'onSuspend', 'onSuspendCapture', 'onTimeUpdate', 'onTimeUpdateCapture', 'onVolumeChange', 'onVolumeChangeCapture', 'onWaiting', 'onWaitingCapture', 'onAuxClick', 'onAuxClickCapture', 'onClick', 'onClickCapture', 'onContextMenu', 'onContextMenuCapture', 'onDoubleClick', 'onDoubleClickCapture', 'onDrag', 'onDragCapture', 'onDragEnd', 'onDragEndCapture', 'onDragEnter', 'onDragEnterCapture', 'onDragExit', 'onDragExitCapture', 'onDragLeave', 'onDragLeaveCapture', 'onDragOver', 'onDragOverCapture', 'onDragStart', 'onDragStartCapture', 'onDrop', 'onDropCapture', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseMoveCapture', 'onMouseOut', 'onMouseOutCapture', 'onMouseOver', 'onMouseOverCapture', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onSelectCapture', 'onTouchCancel', 'onTouchCancelCapture', 'onTouchEnd', 'onTouchEndCapture', 'onTouchMove', 'onTouchMoveCapture', 'onTouchStart', 'onTouchStartCapture', 'onPointerDown', 'onPointerDownCapture', 'onPointerMove', 'onPointerMoveCapture', 'onPointerUp', 'onPointerUpCapture', 'onPointerCancel', 'onPointerCancelCapture', 'onPointerEnter', 'onPointerEnterCapture', 'onPointerLeave', 'onPointerLeaveCapture', 'onPointerOver', 'onPointerOverCapture', 'onPointerOut', 'onPointerOutCapture', 'onGotPointerCapture', 'onGotPointerCaptureCapture', 'onLostPointerCapture', 'onLostPointerCaptureCapture', 'onScroll', 'onScrollCapture', 'onWheel', 'onWheelCapture', 'onAnimationStart', 'onAnimationStartCapture', 'onAnimationEnd', 'onAnimationEndCapture', 'onAnimationIteration', 'onAnimationIterationCapture', 'onTransitionEnd', 'onTransitionEndCapture']; // Animation Types => TODO: Should be moved when react-smooth is typescriptified.\n\nexport var filterProps = function filterProps(props, includeEvents, isSvg) {\n  if (!props || typeof props === 'function' || typeof props === 'boolean') {\n    return null;\n  }\n\n  var inputProps = props;\n\n  if ( /*#__PURE__*/isValidElement(props)) {\n    inputProps = props.props;\n  }\n\n  if (!_isObject(inputProps)) {\n    return null;\n  }\n\n  var out = {};\n  Object.keys(inputProps).forEach(function (key) {\n    // viewBox only exist in <svg />\n    if (SVGElementPropKeys.includes(key) || isSvg && SVGContainerPropKeys.includes(key) || includeEvents && EventKeys.includes(key)) {\n      out[key] = inputProps[key];\n    }\n  });\n  return out;\n};\nexport var adaptEventHandlers = function adaptEventHandlers(props, newHandler) {\n  if (!props || typeof props === 'function' || typeof props === 'boolean') {\n    return null;\n  }\n\n  var inputProps = props;\n\n  if ( /*#__PURE__*/isValidElement(props)) {\n    inputProps = props.props;\n  }\n\n  if (!_isObject(inputProps)) {\n    return null;\n  }\n\n  var out = {};\n  Object.keys(inputProps).forEach(function (key) {\n    if (EventKeys.includes(key)) {\n      out[key] = newHandler || function (e) {\n        return inputProps[key](inputProps, e);\n      };\n    }\n  });\n  return out;\n};\n\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n  return function (e) {\n    originalHandler(data, index, e);\n    return null;\n  };\n};\n\nexport var adaptEventsOfChild = function adaptEventsOfChild(props, data, index) {\n  if (!_isObject(props) || _typeof(props) !== 'object') {\n    return null;\n  }\n\n  var out = null;\n  Object.keys(props).forEach(function (key) {\n    var item = props[key];\n\n    if (EventKeys.includes(key) && typeof item === 'function') {\n      if (!out) out = {};\n      out[key] = getEventHandlerOfChild(item, data, index);\n    }\n  });\n  return out;\n};", "function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Layer\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nexport var Layer = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var children = props.children,\n      className = props.className,\n      others = _objectWithoutProperties(props, [\"children\", \"className\"]);\n\n  var layerClass = classNames('recharts-layer', className);\n  return /*#__PURE__*/React.createElement(\"g\", _extends({\n    className: layerClass\n  }, filterProps(others, true), {\n    ref: ref\n  }), children);\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 _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Legend\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultLegendContent } from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\n\nfunction defaultUniqBy(entry) {\n  return entry.value;\n}\n\nfunction getUniqPayload(option, payload) {\n  if (option === true) {\n    return _uniqBy(payload, defaultUniqBy);\n  }\n\n  if (_isFunction(option)) {\n    return _uniqBy(payload, option);\n  }\n\n  return payload;\n}\n\nfunction renderContent(content, props) {\n  if ( /*#__PURE__*/React.isValidElement(content)) {\n    return /*#__PURE__*/React.cloneElement(content, props);\n  }\n\n  if (_isFunction(content)) {\n    return /*#__PURE__*/React.createElement(content, props);\n  }\n\n  var ref = props.ref,\n      otherProps = _objectWithoutProperties(props, [\"ref\"]);\n\n  return /*#__PURE__*/React.createElement(DefaultLegendContent, otherProps);\n}\n\nvar EPS = 1;\nexport var Legend = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Legend, _PureComponent);\n\n  var _super = _createSuper(Legend);\n\n  function Legend() {\n    var _this;\n\n    _classCallCheck(this, Legend);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.wrapperNode = void 0;\n    _this.state = {\n      boxWidth: -1,\n      boxHeight: -1\n    };\n    return _this;\n  }\n\n  _createClass(Legend, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.updateBBox();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.updateBBox();\n    }\n  }, {\n    key: \"getBBox\",\n    value: function getBBox() {\n      if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n        return this.wrapperNode.getBoundingClientRect();\n      }\n\n      return null;\n    }\n  }, {\n    key: \"getBBoxSnapshot\",\n    value: function getBBoxSnapshot() {\n      var _this$state = this.state,\n          boxWidth = _this$state.boxWidth,\n          boxHeight = _this$state.boxHeight;\n\n      if (boxWidth >= 0 && boxHeight >= 0) {\n        return {\n          width: boxWidth,\n          height: boxHeight\n        };\n      }\n\n      return null;\n    }\n  }, {\n    key: \"getDefaultPosition\",\n    value: function getDefaultPosition(style) {\n      var _this$props = this.props,\n          layout = _this$props.layout,\n          align = _this$props.align,\n          verticalAlign = _this$props.verticalAlign,\n          margin = _this$props.margin,\n          chartWidth = _this$props.chartWidth,\n          chartHeight = _this$props.chartHeight;\n      var hPos, vPos;\n\n      if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n        if (align === 'center' && layout === 'vertical') {\n          var _box = this.getBBoxSnapshot() || {\n            width: 0\n          };\n\n          hPos = {\n            left: ((chartWidth || 0) - _box.width) / 2\n          };\n        } else {\n          hPos = align === 'right' ? {\n            right: margin && margin.right || 0\n          } : {\n            left: margin && margin.left || 0\n          };\n        }\n      }\n\n      if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n        if (verticalAlign === 'middle') {\n          var _box2 = this.getBBoxSnapshot() || {\n            height: 0\n          };\n\n          vPos = {\n            top: ((chartHeight || 0) - _box2.height) / 2\n          };\n        } else {\n          vPos = verticalAlign === 'bottom' ? {\n            bottom: margin && margin.bottom || 0\n          } : {\n            top: margin && margin.top || 0\n          };\n        }\n      }\n\n      return _objectSpread(_objectSpread({}, hPos), vPos);\n    }\n  }, {\n    key: \"updateBBox\",\n    value: function updateBBox() {\n      var _this$state2 = this.state,\n          boxWidth = _this$state2.boxWidth,\n          boxHeight = _this$state2.boxHeight;\n      var onBBoxUpdate = this.props.onBBoxUpdate;\n\n      if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n        var _box3 = this.wrapperNode.getBoundingClientRect();\n\n        if (Math.abs(_box3.width - boxWidth) > EPS || Math.abs(_box3.height - boxHeight) > EPS) {\n          this.setState({\n            boxWidth: _box3.width,\n            boxHeight: _box3.height\n          }, function () {\n            if (onBBoxUpdate) {\n              onBBoxUpdate(_box3);\n            }\n          });\n        }\n      } else if (boxWidth !== -1 || boxHeight !== -1) {\n        this.setState({\n          boxWidth: -1,\n          boxHeight: -1\n        }, function () {\n          if (onBBoxUpdate) {\n            onBBoxUpdate(null);\n          }\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props2 = this.props,\n          content = _this$props2.content,\n          width = _this$props2.width,\n          height = _this$props2.height,\n          wrapperStyle = _this$props2.wrapperStyle,\n          payloadUniqBy = _this$props2.payloadUniqBy,\n          payload = _this$props2.payload;\n\n      var outerStyle = _objectSpread(_objectSpread({\n        position: 'absolute',\n        width: width || 'auto',\n        height: height || 'auto'\n      }, this.getDefaultPosition(wrapperStyle)), wrapperStyle);\n\n      return /*#__PURE__*/React.createElement(\"div\", {\n        className: \"recharts-legend-wrapper\",\n        style: outerStyle,\n        ref: function ref(node) {\n          _this2.wrapperNode = node;\n        }\n      }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n        payload: getUniqPayload(payloadUniqBy, payload)\n      })));\n    }\n  }], [{\n    key: \"getWithHeight\",\n    value: function getWithHeight(item, chartWidth) {\n      var layout = item.props.layout;\n\n      if (layout === 'vertical' && isNumber(item.props.height)) {\n        return {\n          height: item.props.height\n        };\n      }\n\n      if (layout === 'horizontal') {\n        return {\n          width: item.props.width || chartWidth\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Legend;\n}(PureComponent);\nLegend.displayName = 'Legend';\nLegend.defaultProps = {\n  iconSize: 14,\n  layout: 'horizontal',\n  align: 'center',\n  verticalAlign: 'bottom'\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\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nvar SIZE = 32;\nexport var DefaultLegendContent = /*#__PURE__*/function (_PureComponent) {\n  _inherits(DefaultLegendContent, _PureComponent);\n\n  var _super = _createSuper(DefaultLegendContent);\n\n  function DefaultLegendContent() {\n    _classCallCheck(this, DefaultLegendContent);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DefaultLegendContent, [{\n    key: \"renderIcon\",\n    value:\n    /**\n     * Render the path of icon\n     * @param {Object} data Data of each legend item\n     * @return {String} Path element\n     */\n    function renderIcon(data) {\n      var inactiveColor = this.props.inactiveColor;\n      var halfSize = SIZE / 2;\n      var sixthSize = SIZE / 6;\n      var thirdSize = SIZE / 3;\n      var color = data.inactive ? inactiveColor : data.color;\n\n      if (data.type === 'plainline') {\n        return /*#__PURE__*/React.createElement(\"line\", {\n          strokeWidth: 4,\n          fill: \"none\",\n          stroke: color,\n          strokeDasharray: data.payload.strokeDasharray,\n          x1: 0,\n          y1: halfSize,\n          x2: SIZE,\n          y2: halfSize,\n          className: \"recharts-legend-icon\"\n        });\n      }\n\n      if (data.type === 'line') {\n        return /*#__PURE__*/React.createElement(\"path\", {\n          strokeWidth: 4,\n          fill: \"none\",\n          stroke: color,\n          d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n            A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n            H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n            A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n          className: \"recharts-legend-icon\"\n        });\n      }\n\n      if (data.type === 'rect') {\n        return /*#__PURE__*/React.createElement(\"path\", {\n          stroke: \"none\",\n          fill: color,\n          d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n          className: \"recharts-legend-icon\"\n        });\n      }\n\n      if ( /*#__PURE__*/React.isValidElement(data.legendIcon)) {\n        var iconProps = _objectSpread({}, data);\n\n        delete iconProps.legendIcon;\n        return /*#__PURE__*/React.cloneElement(data.legendIcon, iconProps);\n      }\n\n      return /*#__PURE__*/React.createElement(Symbols, {\n        fill: color,\n        cx: halfSize,\n        cy: halfSize,\n        size: SIZE,\n        sizeType: \"diameter\",\n        type: data.type\n      });\n    }\n    /**\n     * Draw items of legend\n     * @return {ReactElement} Items\n     */\n\n  }, {\n    key: \"renderItems\",\n    value: function renderItems() {\n      var _this = this;\n\n      var _this$props = this.props,\n          payload = _this$props.payload,\n          iconSize = _this$props.iconSize,\n          layout = _this$props.layout,\n          formatter = _this$props.formatter,\n          inactiveColor = _this$props.inactiveColor;\n      var viewBox = {\n        x: 0,\n        y: 0,\n        width: SIZE,\n        height: SIZE\n      };\n      var itemStyle = {\n        display: layout === 'horizontal' ? 'inline-block' : 'block',\n        marginRight: 10\n      };\n      var svgStyle = {\n        display: 'inline-block',\n        verticalAlign: 'middle',\n        marginRight: 4\n      };\n      return payload.map(function (entry, i) {\n        var _classNames;\n\n        var finalFormatter = entry.formatter || formatter;\n        var className = classNames((_classNames = {\n          'recharts-legend-item': true\n        }, _defineProperty(_classNames, \"legend-item-\".concat(i), true), _defineProperty(_classNames, \"inactive\", entry.inactive), _classNames));\n\n        if (entry.type === 'none') {\n          return null;\n        }\n\n        var color = entry.inactive ? inactiveColor : entry.color;\n        return /*#__PURE__*/React.createElement(\"li\", _extends({\n          className: className,\n          style: itemStyle,\n          key: \"legend-item-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n        }, adaptEventsOfChild(_this.props, entry, i)), /*#__PURE__*/React.createElement(Surface, {\n          width: iconSize,\n          height: iconSize,\n          viewBox: viewBox,\n          style: svgStyle\n        }, _this.renderIcon(entry)), /*#__PURE__*/React.createElement(\"span\", {\n          className: \"recharts-legend-item-text\",\n          style: {\n            color: color\n          }\n        }, finalFormatter ? finalFormatter(entry.value, entry, i) : entry.value));\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          payload = _this$props2.payload,\n          layout = _this$props2.layout,\n          align = _this$props2.align;\n\n      if (!payload || !payload.length) {\n        return null;\n      }\n\n      var finalStyle = {\n        padding: 0,\n        margin: 0,\n        textAlign: layout === 'horizontal' ? align : 'left'\n      };\n      return /*#__PURE__*/React.createElement(\"ul\", {\n        className: \"recharts-default-legend\",\n        style: finalStyle\n      }, this.renderItems());\n    }\n  }]);\n\n  return DefaultLegendContent;\n}(PureComponent);\nDefaultLegendContent.displayName = 'Legend';\nDefaultLegendContent.defaultProps = {\n  iconSize: 14,\n  layout: 'horizontal',\n  align: 'center',\n  verticalAlign: 'middle',\n  inactiveColor: '#ccc'\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 _upperFirst from \"lodash/upperFirst\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Curve\n */\nimport React, { PureComponent } from 'react';\nimport { symbol as shapeSymbol, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'd3-shape';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nvar symbolFactories = {\n  symbolCircle: symbolCircle,\n  symbolCross: symbolCross,\n  symbolDiamond: symbolDiamond,\n  symbolSquare: symbolSquare,\n  symbolStar: symbolStar,\n  symbolTriangle: symbolTriangle,\n  symbolWye: symbolWye\n};\nvar RADIAN = Math.PI / 180;\n\nvar getSymbolFactory = function getSymbolFactory(type) {\n  var name = \"symbol\".concat(_upperFirst(type));\n  return symbolFactories[name] || symbolCircle;\n};\n\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n  if (sizeType === 'area') {\n    return size;\n  }\n\n  switch (type) {\n    case 'cross':\n      return 5 * size * size / 9;\n\n    case 'diamond':\n      return 0.5 * size * size / Math.sqrt(3);\n\n    case 'square':\n      return size * size;\n\n    case 'star':\n      {\n        var angle = 18 * RADIAN;\n        return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n      }\n\n    case 'triangle':\n      return Math.sqrt(3) * size * size / 4;\n\n    case 'wye':\n      return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n\n    default:\n      return Math.PI * size * size / 4;\n  }\n};\n\nexport var Symbols = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Symbols, _PureComponent);\n\n  var _super = _createSuper(Symbols);\n\n  function Symbols() {\n    _classCallCheck(this, Symbols);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Symbols, [{\n    key: \"getPath\",\n    value:\n    /**\n     * Calculate the path of curve\n     * @return {String} path\n     */\n    function getPath() {\n      var _this$props = this.props,\n          size = _this$props.size,\n          sizeType = _this$props.sizeType,\n          type = _this$props.type;\n      var symbolFactory = getSymbolFactory(type);\n      var symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n      return symbol();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          className = _this$props2.className,\n          cx = _this$props2.cx,\n          cy = _this$props2.cy,\n          size = _this$props2.size;\n\n      if (cx === +cx && cy === +cy && size === +size) {\n        return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n          className: classNames('recharts-symbols', className),\n          transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n          d: this.getPath()\n        }));\n      }\n\n      return null;\n    }\n  }]);\n\n  return Symbols;\n}(PureComponent);\nSymbols.defaultProps = {\n  type: 'circle',\n  size: 64,\n  sizeType: 'area'\n};\n\nSymbols.registerSymbol = function (key, factory) {\n  symbolFactories[\"symbol\".concat(_upperFirst(key))] = factory;\n};", "const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We\u2019re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\nexport default path;\n", "export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n", "export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n", "export var slice = Array.prototype.slice;\n\nexport default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n", "function Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n", "export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n", "import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n  var defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n  function line(data) {\n    var i,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n", "import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n  var x1 = null,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return line().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n}\n", "import {pi, tau} from \"../math.js\";\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n", "export default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n};\n", "var tan30 = Math.sqrt(1 / 3),\n    tan30_2 = tan30 * 2;\n\nexport default {\n  draw: function(context, size) {\n    var y = Math.sqrt(size / tan30_2),\n        x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n};\n", "import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n    kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n    kx = Math.sin(tau / 10) * kr,\n    ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size * ka),\n        x = kx * r,\n        y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (var i = 1; i < 5; ++i) {\n      var a = tau * i / 5,\n          c = Math.cos(a),\n          s = Math.sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n};\n", "export default {\n  draw: function(context, size) {\n    var w = Math.sqrt(size),\n        x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n", "var sqrt3 = Math.sqrt(3);\n\nexport default {\n  draw: function(context, size) {\n    var y = -Math.sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n};\n", "var c = -0.5,\n    s = Math.sqrt(3) / 2,\n    k = 1 / Math.sqrt(12),\n    a = (k / 2 + 1) * 3;\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / a),\n        x0 = r / 2,\n        y0 = r * k,\n        x1 = x0,\n        y1 = r * k + r,\n        x2 = -x1,\n        y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n};\n", "import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\nexport default function(type, size) {\n  var context = null;\n  type = typeof type === \"function\" ? type : constant(type || circle);\n  size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n  function symbol() {\n    var buffer;\n    if (!context) context = buffer = path();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n}\n", "export default function() {}\n", "export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nexport function Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point(this, this._x1, this._y1); // proceed\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new Basis(context);\n}\n", "import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisClosed(context);\n}\n", "import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisOpen(context);\n}\n", "import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\nexport default function(context) {\n  return new LinearClosed(context);\n}\n", "function sign(x) {\n  return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n  var h0 = that._x1 - that._x0,\n      h1 = x2 - that._x1,\n      s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n      s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n      p = (s0 * h1 + s1 * h0) / (h0 + h1);\n  return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n  var h = that._x1 - that._x0;\n  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic B\u00E9zier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n  var x0 = that._x0,\n      y0 = that._y0,\n      x1 = that._x1,\n      y1 = that._y1,\n      dx = (x1 - x0) / 3;\n  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n  this._context = context;\n}\n\nMonotoneX.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 =\n    this._t0 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n      case 3: point(this, this._t0, slope2(this, this._t0)); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    var t1 = NaN;\n\n    x = +x, y = +y;\n    if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n      default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n    }\n\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n    this._t0 = t1;\n  }\n}\n\nfunction MonotoneY(context) {\n  this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n  MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n  this._context = context;\n}\n\nReflectContext.prototype = {\n  moveTo: function(x, y) { this._context.moveTo(y, x); },\n  closePath: function() { this._context.closePath(); },\n  lineTo: function(x, y) { this._context.lineTo(y, x); },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n  return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n  return new MonotoneY(context);\n}\n", "function Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\nexport default function(context) {\n  return new Natural(context);\n}\n", "function Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\nexport default function(context) {\n  return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n  return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n  return new Step(context, 1);\n}\n", "export default function(series, order) {\n  if (!((n = series.length) > 1)) return;\n  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n    s0 = s1, s1 = series[order[i]];\n    for (j = 0; j < m; ++j) {\n      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n    }\n  }\n}\n", "export default function(series) {\n  var n = series.length, o = new Array(n);\n  while (--n >= 0) o[n] = n;\n  return o;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n  return d[key];\n}\n\nfunction stackSeries(key) {\n  const series = [];\n  series.key = key;\n  return series;\n}\n\nexport default function() {\n  var keys = constant([]),\n      order = orderNone,\n      offset = offsetNone,\n      value = stackValue;\n\n  function stack(data) {\n    var sz = Array.from(keys.apply(this, arguments), stackSeries),\n        i, n = sz.length, j = -1,\n        oz;\n\n    for (const d of data) {\n      for (i = 0, ++j; i < n; ++i) {\n        (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n      }\n    }\n\n    for (i = 0, oz = array(order(sz)); i < n; ++i) {\n      sz[oz[i]].index = i;\n    }\n\n    offset(sz, oz);\n    return sz;\n  }\n\n  stack.keys = function(_) {\n    return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n  };\n\n  stack.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n  };\n\n  stack.order = function(_) {\n    return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n  };\n\n  return stack;\n}\n", "import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n    for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n    if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n  }\n  none(series, order);\n}\n", "import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n    for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n    s0[j][1] += s0[j][0] = -y / 2;\n  }\n  none(series, order);\n}\n", "import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n  for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n    for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n      var si = series[order[i]],\n          sij0 = si[j][1] || 0,\n          sij1 = si[j - 1][1] || 0,\n          s3 = (sij0 - sij1) / 2;\n      for (var k = 0; k < i; ++k) {\n        var sk = series[order[k]],\n            skj0 = sk[j][1] || 0,\n            skj1 = sk[j - 1][1] || 0;\n        s3 += skj0 - skj1;\n      }\n      s1 += sij0, s2 += s3 * sij0;\n    }\n    s0[j - 1][1] += s0[j - 1][0] = y;\n    if (s1) y -= s2 / s1;\n  }\n  s0[j - 1][1] += s0[j - 1][0] = y;\n  none(series, order);\n}\n", "import _get from \"lodash/get\";\nimport _isArray from \"lodash/isArray\";\nimport _isNaN from \"lodash/isNaN\";\nimport _isNumber from \"lodash/isNumber\";\nimport _isString from \"lodash/isString\";\nexport var mathSign = function mathSign(value) {\n  if (value === 0) {\n    return 0;\n  }\n\n  if (value > 0) {\n    return 1;\n  }\n\n  return -1;\n};\nexport var isPercent = function isPercent(value) {\n  return _isString(value) && value.indexOf('%') === value.length - 1;\n};\nexport var isNumber = function isNumber(value) {\n  return _isNumber(value) && !_isNaN(value);\n};\nexport var isNumOrStr = function isNumOrStr(value) {\n  return isNumber(value) || _isString(value);\n};\nvar idCounter = 0;\nexport var uniqueId = function uniqueId(prefix) {\n  var id = ++idCounter;\n  return \"\".concat(prefix || '').concat(id);\n};\n/**\n * Get percent value of a total value\n * @param {Number|String} percent A percent\n * @param {Number} totalValue     Total value\n * @param {NUmber} defaultValue   The value returned when percent is undefined or invalid\n * @param {Boolean} validate      If set to be true, the result will be validated\n * @return {Number} value\n */\n\nexport var getPercentValue = function getPercentValue(percent, totalValue) {\n  var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n  if (!isNumber(percent) && !_isString(percent)) {\n    return defaultValue;\n  }\n\n  var value;\n\n  if (isPercent(percent)) {\n    var index = percent.indexOf('%');\n    value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n  } else {\n    value = +percent;\n  }\n\n  if (_isNaN(value)) {\n    value = defaultValue;\n  }\n\n  if (validate && value > totalValue) {\n    value = totalValue;\n  }\n\n  return value;\n};\nexport var getAnyElementOfObject = function getAnyElementOfObject(obj) {\n  if (!obj) {\n    return null;\n  }\n\n  var keys = Object.keys(obj);\n\n  if (keys && keys.length) {\n    return obj[keys[0]];\n  }\n\n  return null;\n};\nexport var hasDuplicate = function hasDuplicate(ary) {\n  if (!_isArray(ary)) {\n    return false;\n  }\n\n  var len = ary.length;\n  var cache = {};\n\n  for (var i = 0; i < len; i++) {\n    if (!cache[ary[i]]) {\n      cache[ary[i]] = true;\n    } else {\n      return true;\n    }\n  }\n\n  return false;\n};\nexport var interpolateNumber = function interpolateNumber(numberA, numberB) {\n  if (isNumber(numberA) && isNumber(numberB)) {\n    return function (t) {\n      return numberA + t * (numberB - numberA);\n    };\n  }\n\n  return function () {\n    return numberB;\n  };\n};\nexport function findEntryInArray(ary, specifiedKey, specifiedValue) {\n  if (!ary || !ary.length) {\n    return null;\n  }\n\n  return ary.find(function (entry) {\n    return entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : _get(entry, specifiedKey)) === specifiedValue;\n  });\n}\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */\n\nexport var getLinearRegression = function getLinearRegression(data) {\n  if (!data || !data.length) {\n    return null;\n  }\n\n  var len = data.length;\n  var xsum = 0;\n  var ysum = 0;\n  var xysum = 0;\n  var xxsum = 0;\n  var xmin = Infinity;\n  var xmax = -Infinity;\n  var xcurrent = 0;\n  var ycurrent = 0;\n\n  for (var i = 0; i < len; i++) {\n    xcurrent = data[i].cx || 0;\n    ycurrent = data[i].cy || 0;\n    xsum += xcurrent;\n    ysum += ycurrent;\n    xysum += xcurrent * ycurrent;\n    xxsum += xcurrent * xcurrent;\n    xmin = Math.min(xmin, xcurrent);\n    xmax = Math.max(xmax, xcurrent);\n  }\n\n  var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n  return {\n    xmin: xmin,\n    xmax: xmax,\n    a: a,\n    b: (ysum - a * xsum) / len\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 _isNil from \"lodash/isNil\";\nimport _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Tooltip\n */\nimport React, { PureComponent } from 'react';\nimport { translateStyle } from 'react-smooth';\nimport classNames from 'classnames';\nimport { DefaultTooltipContent } from './DefaultTooltipContent';\nimport { Global } from '../util/Global';\nimport { isNumber } from '../util/DataUtils';\nvar CLS_PREFIX = 'recharts-tooltip-wrapper';\nvar EPS = 1;\n\nfunction defaultUniqBy(entry) {\n  return entry.dataKey;\n}\n\nfunction getUniqPayload(option, payload) {\n  if (option === true) {\n    return _uniqBy(payload, defaultUniqBy);\n  }\n\n  if (_isFunction(option)) {\n    return _uniqBy(payload, option);\n  }\n\n  return payload;\n}\n\nfunction renderContent(content, props) {\n  if ( /*#__PURE__*/React.isValidElement(content)) {\n    return /*#__PURE__*/React.cloneElement(content, props);\n  }\n\n  if (_isFunction(content)) {\n    return /*#__PURE__*/React.createElement(content, props);\n  }\n\n  return /*#__PURE__*/React.createElement(DefaultTooltipContent, props);\n}\n\nexport var Tooltip = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Tooltip, _PureComponent);\n\n  var _super = _createSuper(Tooltip);\n\n  function Tooltip() {\n    var _this;\n\n    _classCallCheck(this, Tooltip);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      boxWidth: -1,\n      boxHeight: -1,\n      dismissed: false,\n      dismissedAtCoordinate: {\n        x: 0,\n        y: 0\n      }\n    };\n    _this.wrapperNode = void 0;\n\n    _this.getTranslate = function (_ref) {\n      var key = _ref.key,\n          tooltipDimension = _ref.tooltipDimension,\n          viewBoxDimension = _ref.viewBoxDimension;\n      var _this$props = _this.props,\n          allowEscapeViewBox = _this$props.allowEscapeViewBox,\n          coordinate = _this$props.coordinate,\n          offset = _this$props.offset,\n          position = _this$props.position,\n          viewBox = _this$props.viewBox;\n\n      if (position && isNumber(position[key])) {\n        return position[key];\n      }\n\n      var restricted = coordinate[key] - tooltipDimension - offset;\n      var unrestricted = coordinate[key] + offset;\n\n      if (allowEscapeViewBox[key]) {\n        return unrestricted;\n      }\n\n      var tooltipBoundary = coordinate[key] + tooltipDimension + offset;\n      var viewBoxBoundary = viewBox[key] + viewBoxDimension;\n\n      if (tooltipBoundary > viewBoxBoundary) {\n        return Math.max(restricted, viewBox[key]);\n      }\n\n      return Math.max(unrestricted, viewBox[key]);\n    };\n\n    return _this;\n  }\n\n  _createClass(Tooltip, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.updateBBox();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.updateBBox();\n    }\n  }, {\n    key: \"updateBBox\",\n    value: function updateBBox() {\n      var _this$state = this.state,\n          boxWidth = _this$state.boxWidth,\n          boxHeight = _this$state.boxHeight,\n          dismissed = _this$state.dismissed;\n\n      if (dismissed) {\n        this.wrapperNode.blur();\n\n        if (this.props.coordinate.x !== this.state.dismissedAtCoordinate.x || this.props.coordinate.y !== this.state.dismissedAtCoordinate.y) {\n          this.setState({\n            dismissed: false\n          });\n        }\n      } else {\n        this.wrapperNode.focus({\n          preventScroll: true\n        });\n      }\n\n      if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n        var box = this.wrapperNode.getBoundingClientRect();\n\n        if (Math.abs(box.width - boxWidth) > EPS || Math.abs(box.height - boxHeight) > EPS) {\n          this.setState({\n            boxWidth: box.width,\n            boxHeight: box.height\n          });\n        }\n      } else if (boxWidth !== -1 || boxHeight !== -1) {\n        this.setState({\n          boxWidth: -1,\n          boxHeight: -1\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classNames,\n          _this2 = this;\n\n      var _this$props2 = this.props,\n          payload = _this$props2.payload,\n          isAnimationActive = _this$props2.isAnimationActive,\n          animationDuration = _this$props2.animationDuration,\n          animationEasing = _this$props2.animationEasing,\n          filterNull = _this$props2.filterNull,\n          payloadUniqBy = _this$props2.payloadUniqBy;\n      var finalPayload = getUniqPayload(payloadUniqBy, filterNull && payload && payload.length ? payload.filter(function (entry) {\n        return !_isNil(entry.value);\n      }) : payload);\n      var hasPayload = finalPayload && finalPayload.length;\n      var _this$props3 = this.props,\n          content = _this$props3.content,\n          viewBox = _this$props3.viewBox,\n          coordinate = _this$props3.coordinate,\n          position = _this$props3.position,\n          active = _this$props3.active,\n          wrapperStyle = _this$props3.wrapperStyle;\n\n      var outerStyle = _objectSpread({\n        pointerEvents: 'none',\n        visibility: !this.state.dismissed && active && hasPayload ? 'visible' : 'hidden',\n        position: 'absolute',\n        top: 0,\n        left: 0\n      }, wrapperStyle);\n\n      var translateX, translateY;\n\n      if (position && isNumber(position.x) && isNumber(position.y)) {\n        translateX = position.x;\n        translateY = position.y;\n      } else {\n        var _this$state2 = this.state,\n            boxWidth = _this$state2.boxWidth,\n            boxHeight = _this$state2.boxHeight;\n\n        if (boxWidth > 0 && boxHeight > 0 && coordinate) {\n          translateX = this.getTranslate({\n            key: 'x',\n            tooltipDimension: boxWidth,\n            viewBoxDimension: viewBox.width\n          });\n          translateY = this.getTranslate({\n            key: 'y',\n            tooltipDimension: boxHeight,\n            viewBoxDimension: viewBox.height\n          });\n        } else {\n          outerStyle.visibility = 'hidden';\n        }\n      }\n\n      outerStyle = _objectSpread(_objectSpread({}, translateStyle({\n        transform: this.props.useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n      })), outerStyle);\n\n      if (isAnimationActive && active) {\n        outerStyle = _objectSpread(_objectSpread({}, translateStyle({\n          transition: \"transform \".concat(animationDuration, \"ms \").concat(animationEasing)\n        })), outerStyle);\n      }\n\n      var cls = classNames(CLS_PREFIX, (_classNames = {}, _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-right\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-left\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-bottom\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-top\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y), _classNames));\n      return (\n        /*#__PURE__*/\n        // ESLint is disabled to allow listening to the `Escape` key. Refer to\n        // https://github.com/recharts/recharts/pull/2925\n        // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n        React.createElement(\"div\", {\n          tabIndex: -1,\n          role: \"dialog\",\n          onKeyDown: function onKeyDown(event) {\n            if (event.key === 'Escape') {\n              _this2.setState({\n                dismissed: true,\n                dismissedAtCoordinate: _objectSpread(_objectSpread({}, _this2.state.dismissedAtCoordinate), {}, {\n                  x: _this2.props.coordinate.x,\n                  y: _this2.props.coordinate.y\n                })\n              });\n            }\n          },\n          className: cls,\n          style: outerStyle,\n          ref: function ref(node) {\n            _this2.wrapperNode = node;\n          }\n        }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n          payload: finalPayload\n        })))\n      );\n    }\n  }]);\n\n  return Tooltip;\n}(PureComponent);\nTooltip.displayName = 'Tooltip';\nTooltip.defaultProps = {\n  active: false,\n  allowEscapeViewBox: {\n    x: false,\n    y: false\n  },\n  offset: 10,\n  viewBox: {\n    x1: 0,\n    x2: 0,\n    y1: 0,\n    y2: 0\n  },\n  coordinate: {\n    x: 0,\n    y: 0\n  },\n  cursorStyle: {},\n  separator: ' : ',\n  wrapperStyle: {},\n  contentStyle: {},\n  itemStyle: {},\n  labelStyle: {},\n  cursor: true,\n  trigger: 'hover',\n  isAnimationActive: !Global.isSsr,\n  animationEasing: 'ease',\n  animationDuration: 400,\n  filterNull: true,\n  useTranslate3d: false\n};", "function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"steps\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React, { PureComponent, cloneElement, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { deepEqual } from 'fast-equals';\nimport createAnimateManager from './AnimateManager';\nimport { configEasing } from './easing';\nimport configUpdate from './configUpdate';\nimport { getTransitionVal, identity, translateStyle } from './util';\nvar Animate = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Animate, _PureComponent);\n  var _super = _createSuper(Animate);\n  function Animate(props, context) {\n    var _this;\n    _classCallCheck(this, Animate);\n    _this = _super.call(this, props, context);\n    var _this$props = _this.props,\n      isActive = _this$props.isActive,\n      attributeName = _this$props.attributeName,\n      from = _this$props.from,\n      to = _this$props.to,\n      steps = _this$props.steps,\n      children = _this$props.children,\n      duration = _this$props.duration;\n    _this.handleStyleChange = _this.handleStyleChange.bind(_assertThisInitialized(_this));\n    _this.changeStyle = _this.changeStyle.bind(_assertThisInitialized(_this));\n    if (!isActive || duration <= 0) {\n      _this.state = {\n        style: {}\n      };\n\n      // if children is a function and animation is not active, set style to 'to'\n      if (typeof children === 'function') {\n        _this.state = {\n          style: to\n        };\n      }\n      return _possibleConstructorReturn(_this);\n    }\n    if (steps && steps.length) {\n      _this.state = {\n        style: steps[0].style\n      };\n    } else if (from) {\n      if (typeof children === 'function') {\n        _this.state = {\n          style: from\n        };\n        return _possibleConstructorReturn(_this);\n      }\n      _this.state = {\n        style: attributeName ? _defineProperty({}, attributeName, from) : from\n      };\n    } else {\n      _this.state = {\n        style: {}\n      };\n    }\n    return _this;\n  }\n  _createClass(Animate, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props2 = this.props,\n        isActive = _this$props2.isActive,\n        canBegin = _this$props2.canBegin;\n      this.mounted = true;\n      if (!isActive || !canBegin) {\n        return;\n      }\n      this.runAnimation(this.props);\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props3 = this.props,\n        isActive = _this$props3.isActive,\n        canBegin = _this$props3.canBegin,\n        attributeName = _this$props3.attributeName,\n        shouldReAnimate = _this$props3.shouldReAnimate,\n        to = _this$props3.to,\n        currentFrom = _this$props3.from;\n      var style = this.state.style;\n      if (!canBegin) {\n        return;\n      }\n      if (!isActive) {\n        var newState = {\n          style: attributeName ? _defineProperty({}, attributeName, to) : to\n        };\n        if (this.state && style) {\n          if (attributeName && style[attributeName] !== to || !attributeName && style !== to) {\n            // eslint-disable-next-line react/no-did-update-set-state\n            this.setState(newState);\n          }\n        }\n        return;\n      }\n      if (deepEqual(prevProps.to, to) && prevProps.canBegin && prevProps.isActive) {\n        return;\n      }\n      var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n      if (this.manager) {\n        this.manager.stop();\n      }\n      if (this.stopJSAnimation) {\n        this.stopJSAnimation();\n      }\n      var from = isTriggered || shouldReAnimate ? currentFrom : prevProps.to;\n      if (this.state && style) {\n        var _newState = {\n          style: attributeName ? _defineProperty({}, attributeName, from) : from\n        };\n        if (attributeName && [attributeName] !== from || !attributeName && style !== from) {\n          // eslint-disable-next-line react/no-did-update-set-state\n          this.setState(_newState);\n        }\n      }\n      this.runAnimation(_objectSpread(_objectSpread({}, this.props), {}, {\n        from: from,\n        begin: 0\n      }));\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.mounted = false;\n      var onAnimationEnd = this.props.onAnimationEnd;\n      if (this.unSubscribe) {\n        this.unSubscribe();\n      }\n      if (this.manager) {\n        this.manager.stop();\n        this.manager = null;\n      }\n      if (this.stopJSAnimation) {\n        this.stopJSAnimation();\n      }\n      if (onAnimationEnd) {\n        onAnimationEnd();\n      }\n    }\n  }, {\n    key: \"handleStyleChange\",\n    value: function handleStyleChange(style) {\n      this.changeStyle(style);\n    }\n  }, {\n    key: \"changeStyle\",\n    value: function changeStyle(style) {\n      if (this.mounted) {\n        this.setState({\n          style: style\n        });\n      }\n    }\n  }, {\n    key: \"runJSAnimation\",\n    value: function runJSAnimation(props) {\n      var _this2 = this;\n      var from = props.from,\n        to = props.to,\n        duration = props.duration,\n        easing = props.easing,\n        begin = props.begin,\n        onAnimationEnd = props.onAnimationEnd,\n        onAnimationStart = props.onAnimationStart;\n      var startAnimation = configUpdate(from, to, configEasing(easing), duration, this.changeStyle);\n      var finalStartAnimation = function finalStartAnimation() {\n        _this2.stopJSAnimation = startAnimation();\n      };\n      this.manager.start([onAnimationStart, begin, finalStartAnimation, duration, onAnimationEnd]);\n    }\n  }, {\n    key: \"runStepAnimation\",\n    value: function runStepAnimation(props) {\n      var _this3 = this;\n      var steps = props.steps,\n        begin = props.begin,\n        onAnimationStart = props.onAnimationStart;\n      var _steps$ = steps[0],\n        initialStyle = _steps$.style,\n        _steps$$duration = _steps$.duration,\n        initialTime = _steps$$duration === void 0 ? 0 : _steps$$duration;\n      var addStyle = function addStyle(sequence, nextItem, index) {\n        if (index === 0) {\n          return sequence;\n        }\n        var duration = nextItem.duration,\n          _nextItem$easing = nextItem.easing,\n          easing = _nextItem$easing === void 0 ? 'ease' : _nextItem$easing,\n          style = nextItem.style,\n          nextProperties = nextItem.properties,\n          onAnimationEnd = nextItem.onAnimationEnd;\n        var preItem = index > 0 ? steps[index - 1] : nextItem;\n        var properties = nextProperties || Object.keys(style);\n        if (typeof easing === 'function' || easing === 'spring') {\n          return [].concat(_toConsumableArray(sequence), [_this3.runJSAnimation.bind(_this3, {\n            from: preItem.style,\n            to: style,\n            duration: duration,\n            easing: easing\n          }), duration]);\n        }\n        var transition = getTransitionVal(properties, duration, easing);\n        var newStyle = _objectSpread(_objectSpread(_objectSpread({}, preItem.style), style), {}, {\n          transition: transition\n        });\n        return [].concat(_toConsumableArray(sequence), [newStyle, duration, onAnimationEnd]).filter(identity);\n      };\n      return this.manager.start([onAnimationStart].concat(_toConsumableArray(steps.reduce(addStyle, [initialStyle, Math.max(initialTime, begin)])), [props.onAnimationEnd]));\n    }\n  }, {\n    key: \"runAnimation\",\n    value: function runAnimation(props) {\n      if (!this.manager) {\n        this.manager = createAnimateManager();\n      }\n      var begin = props.begin,\n        duration = props.duration,\n        attributeName = props.attributeName,\n        propsTo = props.to,\n        easing = props.easing,\n        onAnimationStart = props.onAnimationStart,\n        onAnimationEnd = props.onAnimationEnd,\n        steps = props.steps,\n        children = props.children;\n      var manager = this.manager;\n      this.unSubscribe = manager.subscribe(this.handleStyleChange);\n      if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n        this.runJSAnimation(props);\n        return;\n      }\n      if (steps.length > 1) {\n        this.runStepAnimation(props);\n        return;\n      }\n      var to = attributeName ? _defineProperty({}, attributeName, propsTo) : propsTo;\n      var transition = getTransitionVal(Object.keys(to), duration, easing);\n      manager.start([onAnimationStart, begin, _objectSpread(_objectSpread({}, to), {}, {\n        transition: transition\n      }), duration, onAnimationEnd]);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props4 = this.props,\n        children = _this$props4.children,\n        begin = _this$props4.begin,\n        duration = _this$props4.duration,\n        attributeName = _this$props4.attributeName,\n        easing = _this$props4.easing,\n        isActive = _this$props4.isActive,\n        steps = _this$props4.steps,\n        from = _this$props4.from,\n        to = _this$props4.to,\n        canBegin = _this$props4.canBegin,\n        onAnimationEnd = _this$props4.onAnimationEnd,\n        shouldReAnimate = _this$props4.shouldReAnimate,\n        onAnimationReStart = _this$props4.onAnimationReStart,\n        others = _objectWithoutProperties(_this$props4, _excluded);\n      var count = Children.count(children);\n      // eslint-disable-next-line react/destructuring-assignment\n      var stateStyle = translateStyle(this.state.style);\n      if (typeof children === 'function') {\n        return children(stateStyle);\n      }\n      if (!isActive || count === 0 || duration <= 0) {\n        return children;\n      }\n      var cloneContainer = function cloneContainer(container) {\n        var _container$props = container.props,\n          _container$props$styl = _container$props.style,\n          style = _container$props$styl === void 0 ? {} : _container$props$styl,\n          className = _container$props.className;\n        var res = /*#__PURE__*/cloneElement(container, _objectSpread(_objectSpread({}, others), {}, {\n          style: _objectSpread(_objectSpread({}, style), stateStyle),\n          className: className\n        }));\n        return res;\n      };\n      if (count === 1) {\n        return cloneContainer(Children.only(children));\n      }\n      return /*#__PURE__*/React.createElement(\"div\", null, Children.map(children, function (child) {\n        return cloneContainer(child);\n      }));\n    }\n  }]);\n  return Animate;\n}(PureComponent);\nAnimate.displayName = 'Animate';\nAnimate.defaultProps = {\n  begin: 0,\n  duration: 1000,\n  from: '',\n  to: '',\n  attributeName: '',\n  easing: 'ease',\n  isActive: true,\n  canBegin: true,\n  steps: [],\n  onAnimationEnd: function onAnimationEnd() {},\n  onAnimationStart: function onAnimationStart() {}\n};\nAnimate.propTypes = {\n  from: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n  to: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n  attributeName: PropTypes.string,\n  // animation duration\n  duration: PropTypes.number,\n  begin: PropTypes.number,\n  easing: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n  steps: PropTypes.arrayOf(PropTypes.shape({\n    duration: PropTypes.number.isRequired,\n    style: PropTypes.object.isRequired,\n    easing: PropTypes.oneOfType([PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']), PropTypes.func]),\n    // transition css properties(dash case), optional\n    properties: PropTypes.arrayOf('string'),\n    onAnimationEnd: PropTypes.func\n  })),\n  children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n  isActive: PropTypes.bool,\n  canBegin: PropTypes.bool,\n  onAnimationEnd: PropTypes.func,\n  // decide if it should reanimate with initial from style when props change\n  shouldReAnimate: PropTypes.bool,\n  onAnimationStart: PropTypes.func,\n  onAnimationReStart: PropTypes.func\n};\nexport default Animate;", "import type {\n  AnyEqualityComparator,\n  Cache,\n  CircularState,\n  Dictionary,\n  State,\n  TypeEqualityComparator,\n} from './internalTypes.js';\n\nconst { getOwnPropertyNames, getOwnPropertySymbols } = Object;\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst { hasOwnProperty } = Object.prototype;\n\n/**\n * Combine two comparators into a single comparators.\n */\nexport function combineComparators<Meta>(\n  comparatorA: AnyEqualityComparator<Meta>,\n  comparatorB: AnyEqualityComparator<Meta>,\n) {\n  return function isEqual<A, B>(a: A, b: B, state: State<Meta>) {\n    return comparatorA(a, b, state) && comparatorB(a, b, state);\n  };\n}\n\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nexport function createIsCircular<AreItemsEqual extends TypeEqualityComparator<any, any>>(\n  areItemsEqual: AreItemsEqual,\n): AreItemsEqual {\n  return function isCircular(a: any, b: any, state: CircularState<Cache<any, any>>) {\n    if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n      return areItemsEqual(a, b, state);\n    }\n\n    const { cache } = state;\n\n    const cachedA = cache.get(a);\n    const cachedB = cache.get(b);\n\n    if (cachedA && cachedB) {\n      return cachedA === b && cachedB === a;\n    }\n\n    cache.set(a, b);\n    cache.set(b, a);\n\n    const result = areItemsEqual(a, b, state);\n\n    cache.delete(a);\n    cache.delete(b);\n\n    return result;\n  } as AreItemsEqual;\n}\n\n/**\n * Get the `@@toStringTag` of the value, if it exists.\n */\nexport function getShortTag(value: any): string | undefined {\n  return value != null ? (value[Symbol.toStringTag] as string) : undefined;\n}\n\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nexport function getStrictProperties(object: Dictionary): Array<string | symbol> {\n  return (getOwnPropertyNames(object) as Array<string | symbol>).concat(getOwnPropertySymbols(object));\n}\n\n/**\n * Whether the object contains the property passed as an own property.\n */\nexport const hasOwn =\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  Object.hasOwn || ((object: Dictionary, property: number | string | symbol) => hasOwnProperty.call(object, property));\n\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nexport function sameValueZeroEqual(a: any, b: any): boolean {\n  return a === b || (!a && !b && a !== a && b !== b);\n}\n", "import type { Dictionary, PrimitiveWrapper, State, TypedArray } from './internalTypes.js';\nimport { getStrictProperties, hasOwn, sameValueZeroEqual } from './utils.js';\n\nconst PREACT_VNODE = '__v';\nconst PREACT_OWNER = '__o';\nconst REACT_OWNER = '_owner';\n\nconst { getOwnPropertyDescriptor, keys } = Object;\n\n/**\n * Whether the array buffers are equal in value.\n */\nexport function areArrayBuffersEqual(a: ArrayBuffer, b: ArrayBuffer): boolean {\n  return a.byteLength === b.byteLength && areTypedArraysEqual(new Uint8Array(a), new Uint8Array(b));\n}\n\n/**\n * Whether the arrays are equal in value.\n */\nexport function areArraysEqual(a: any[], b: any[], state: State<any>) {\n  let index = a.length;\n\n  if (b.length !== index) {\n    return false;\n  }\n\n  while (index-- > 0) {\n    if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Whether the dataviews are equal in value.\n */\nexport function areDataViewsEqual(a: DataView, b: DataView): boolean {\n  return (\n    a.byteLength === b.byteLength\n    && areTypedArraysEqual(\n      new Uint8Array(a.buffer, a.byteOffset, a.byteLength),\n      new Uint8Array(b.buffer, b.byteOffset, b.byteLength),\n    )\n  );\n}\n\n/**\n * Whether the dates passed are equal in value.\n */\nexport function areDatesEqual(a: Date, b: Date): boolean {\n  return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n\n/**\n * Whether the errors passed are equal in value.\n */\nexport function areErrorsEqual(a: Error, b: Error): boolean {\n  return a.name === b.name && a.message === b.message && a.cause === b.cause && a.stack === b.stack;\n}\n\n/**\n * Whether the functions passed are equal in value.\n */\nexport function areFunctionsEqual(a: (...args: any[]) => any, b: (...args: any[]) => any): boolean {\n  return a === b;\n}\n\n/**\n * Whether the `Map`s are equal in value.\n */\nexport function areMapsEqual(a: Map<any, any>, b: Map<any, any>, state: State<any>): boolean {\n  const size = a.size;\n\n  if (size !== b.size) {\n    return false;\n  }\n\n  if (!size) {\n    return true;\n  }\n\n  const matchedIndices = new Array<true | undefined>(size);\n  const aIterable = a.entries();\n\n  let aResult: IteratorResult<[any, any]>;\n  let bResult: IteratorResult<[any, any]>;\n  let index = 0;\n\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  while ((aResult = aIterable.next())) {\n    if (aResult.done) {\n      break;\n    }\n\n    const bIterable = b.entries();\n\n    let hasMatch = false;\n    let matchIndex = 0;\n\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    while ((bResult = bIterable.next())) {\n      if (bResult.done) {\n        break;\n      }\n\n      if (matchedIndices[matchIndex]) {\n        matchIndex++;\n        continue;\n      }\n\n      const aEntry = aResult.value;\n      const bEntry = bResult.value;\n\n      if (\n        state.equals(aEntry[0], bEntry[0], index, matchIndex, a, b, state)\n        && state.equals(aEntry[1], bEntry[1], aEntry[0], bEntry[0], a, b, state)\n      ) {\n        hasMatch = matchedIndices[matchIndex] = true;\n        break;\n      }\n\n      matchIndex++;\n    }\n\n    if (!hasMatch) {\n      return false;\n    }\n\n    index++;\n  }\n\n  return true;\n}\n\n/**\n * Whether the numbers are equal in value.\n */\nexport const areNumbersEqual = sameValueZeroEqual;\n\n/**\n * Whether the objects are equal in value.\n */\nexport function areObjectsEqual(a: Dictionary, b: Dictionary, state: State<any>): boolean {\n  const properties = keys(a);\n\n  let index = properties.length;\n\n  if (keys(b).length !== index) {\n    return false;\n  }\n\n  // Decrementing `while` showed faster results than either incrementing or\n  // decrementing `for` loop and than an incrementing `while` loop. Declarative\n  // methods like `some` / `every` were not used to avoid incurring the garbage\n  // cost of anonymous callbacks.\n  while (index-- > 0) {\n    if (!isPropertyEqual(a, b, state, properties[index]!)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nexport function areObjectsEqualStrict(a: Dictionary, b: Dictionary, state: State<any>): boolean {\n  const properties = getStrictProperties(a);\n\n  let index = properties.length;\n\n  if (getStrictProperties(b).length !== index) {\n    return false;\n  }\n\n  let property: string | symbol;\n  let descriptorA: ReturnType<typeof getOwnPropertyDescriptor>;\n  let descriptorB: ReturnType<typeof getOwnPropertyDescriptor>;\n\n  // Decrementing `while` showed faster results than either incrementing or\n  // decrementing `for` loop and than an incrementing `while` loop. Declarative\n  // methods like `some` / `every` were not used to avoid incurring the garbage\n  // cost of anonymous callbacks.\n  while (index-- > 0) {\n    property = properties[index]!;\n\n    if (!isPropertyEqual(a, b, state, property)) {\n      return false;\n    }\n\n    descriptorA = getOwnPropertyDescriptor(a, property);\n    descriptorB = getOwnPropertyDescriptor(b, property);\n\n    if (\n      (descriptorA || descriptorB)\n      && (!descriptorA\n        || !descriptorB\n        || descriptorA.configurable !== descriptorB.configurable\n        || descriptorA.enumerable !== descriptorB.enumerable\n        || descriptorA.writable !== descriptorB.writable)\n    ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nexport function arePrimitiveWrappersEqual(a: PrimitiveWrapper, b: PrimitiveWrapper): boolean {\n  return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n\n/**\n * Whether the regexps passed are equal in value.\n */\nexport function areRegExpsEqual(a: RegExp, b: RegExp): boolean {\n  return a.source === b.source && a.flags === b.flags;\n}\n\n/**\n * Whether the `Set`s are equal in value.\n */\nexport function areSetsEqual(a: Set<any>, b: Set<any>, state: State<any>): boolean {\n  const size = a.size;\n\n  if (size !== b.size) {\n    return false;\n  }\n\n  if (!size) {\n    return true;\n  }\n\n  const matchedIndices = new Array<true | undefined>(size);\n  const aIterable = a.values();\n\n  let aResult: IteratorResult<any>;\n  let bResult: IteratorResult<any>;\n\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  while ((aResult = aIterable.next())) {\n    if (aResult.done) {\n      break;\n    }\n\n    const bIterable = b.values();\n\n    let hasMatch = false;\n    let matchIndex = 0;\n\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    while ((bResult = bIterable.next())) {\n      if (bResult.done) {\n        break;\n      }\n\n      if (\n        !matchedIndices[matchIndex]\n        && state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state)\n      ) {\n        hasMatch = matchedIndices[matchIndex] = true;\n        break;\n      }\n\n      matchIndex++;\n    }\n\n    if (!hasMatch) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Whether the TypedArray instances are equal in value.\n */\nexport function areTypedArraysEqual(a: TypedArray, b: TypedArray) {\n  let index = a.byteLength;\n\n  if (b.byteLength !== index || a.byteOffset !== b.byteOffset) {\n    return false;\n  }\n\n  while (index-- > 0) {\n    if (a[index] !== b[index]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Whether the URL instances are equal in value.\n */\nexport function areUrlsEqual(a: URL, b: URL): boolean {\n  return (\n    a.hostname === b.hostname\n    && a.pathname === b.pathname\n    && a.protocol === b.protocol\n    && a.port === b.port\n    && a.hash === b.hash\n    && a.username === b.username\n    && a.password === b.password\n  );\n}\n\nfunction isPropertyEqual(a: Dictionary, b: Dictionary, state: State<any>, property: string | symbol) {\n  if (\n    (property === REACT_OWNER || property === PREACT_OWNER || property === PREACT_VNODE)\n    && (a.$$typeof || b.$$typeof)\n  ) {\n    return true;\n  }\n\n  return hasOwn(b, property) && state.equals(a[property], b[property], property, property, a, b, state);\n}\n", "import {\n  areArrayBuffersEqual,\n  areArraysEqual as areArraysEqualDefault,\n  areDataViewsEqual,\n  areDatesEqual as areDatesEqualDefault,\n  areErrorsEqual as areErrorsEqualDefault,\n  areFunctionsEqual as areFunctionsEqualDefault,\n  areMapsEqual as areMapsEqualDefault,\n  areNumbersEqual as areNumbersEqualDefault,\n  areObjectsEqual as areObjectsEqualDefault,\n  areObjectsEqualStrict as areObjectsEqualStrictDefault,\n  arePrimitiveWrappersEqual as arePrimitiveWrappersEqualDefault,\n  areRegExpsEqual as areRegExpsEqualDefault,\n  areSetsEqual as areSetsEqualDefault,\n  areTypedArraysEqual as areTypedArraysEqualDefault,\n  areUrlsEqual as areUrlsEqualDefault,\n} from './equals.js';\nimport type {\n  ComparatorConfig,\n  CreateState,\n  CustomEqualCreatorOptions,\n  EqualityComparator,\n  InternalEqualityComparator,\n  State,\n} from './internalTypes.js';\nimport { combineComparators, createIsCircular, getShortTag } from './utils.js';\n\nconst ARRAY_BUFFER_TAG = '[object ArrayBuffer]';\nconst ARGUMENTS_TAG = '[object Arguments]';\nconst BOOLEAN_TAG = '[object Boolean]';\nconst DATA_VIEW_TAG = '[object DataView]';\nconst DATE_TAG = '[object Date]';\nconst ERROR_TAG = '[object Error]';\nconst MAP_TAG = '[object Map]';\nconst NUMBER_TAG = '[object Number]';\nconst OBJECT_TAG = '[object Object]';\nconst REG_EXP_TAG = '[object RegExp]';\nconst SET_TAG = '[object Set]';\nconst STRING_TAG = '[object String]';\nconst TYPED_ARRAY_TAGS: Record<string, boolean> = {\n  '[object Int8Array]': true,\n  '[object Uint8Array]': true,\n  '[object Uint8ClampedArray]': true,\n  '[object Int16Array]': true,\n  '[object Uint16Array]': true,\n  '[object Int32Array]': true,\n  '[object Uint32Array]': true,\n  '[object Float16Array]': true,\n  '[object Float32Array]': true,\n  '[object Float64Array]': true,\n  '[object BigInt64Array]': true,\n  '[object BigUint64Array]': true,\n};\nconst URL_TAG = '[object URL]';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n\ninterface CreateIsEqualOptions<Meta> {\n  circular: boolean;\n  comparator: EqualityComparator<Meta>;\n  createState: CreateState<Meta> | undefined;\n  equals: InternalEqualityComparator<Meta>;\n  strict: boolean;\n}\n\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nexport function createEqualityComparator<Meta>({\n  areArrayBuffersEqual,\n  areArraysEqual,\n  areDataViewsEqual,\n  areDatesEqual,\n  areErrorsEqual,\n  areFunctionsEqual,\n  areMapsEqual,\n  areNumbersEqual,\n  areObjectsEqual,\n  arePrimitiveWrappersEqual,\n  areRegExpsEqual,\n  areSetsEqual,\n  areTypedArraysEqual,\n  areUrlsEqual,\n  unknownTagComparators,\n}: ComparatorConfig<Meta>): EqualityComparator<Meta> {\n  /**\n   * compare the value of the two objects and return true if they are equivalent in values\n   */\n  return function comparator(a: any, b: any, state: State<Meta>): boolean {\n    // If the items are strictly equal, no need to do a value comparison.\n    if (a === b) {\n      return true;\n    }\n\n    // If either of the items are nullish and fail the strictly equal check\n    // above, then they must be unequal.\n    if (a == null || b == null) {\n      return false;\n    }\n\n    const type = typeof a;\n\n    if (type !== typeof b) {\n      return false;\n    }\n\n    if (type !== 'object') {\n      if (type === 'number') {\n        return areNumbersEqual(a, b, state);\n      }\n\n      if (type === 'function') {\n        return areFunctionsEqual(a, b, state);\n      }\n\n      // If a primitive value that is not strictly equal, it must be unequal.\n      return false;\n    }\n\n    const constructor = a.constructor;\n\n    // Checks are listed in order of commonality of use-case:\n    //   1. Common complex object types (plain object, array)\n    //   2. Common data values (date, regexp)\n    //   3. Less-common complex object types (map, set)\n    //   4. Less-common data values (promise, primitive wrappers)\n    // Inherently this is both subjective and assumptive, however\n    // when reviewing comparable libraries in the wild this order\n    // appears to be generally consistent.\n\n    // Constructors should match, otherwise there is potential for false positives\n    // between class and subclass or custom object and POJO.\n    if (constructor !== b.constructor) {\n      return false;\n    }\n\n    // `isPlainObject` only checks against the object's own realm. Cross-realm\n    // comparisons are rare, and will be handled in the ultimate fallback, so\n    // we can avoid capturing the string tag.\n    if (constructor === Object) {\n      return areObjectsEqual(a, b, state);\n    }\n\n    // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n    // the string tag or doing an `instanceof` check.\n    if (Array.isArray(a)) {\n      return areArraysEqual(a, b, state);\n    }\n\n    // Try to fast-path equality checks for other complex object types in the\n    // same realm to avoid capturing the string tag. Strict equality is used\n    // instead of `instanceof` because it is more performant for the common\n    // use-case. If someone is subclassing a native class, it will be handled\n    // with the string tag comparison.\n\n    if (constructor === Date) {\n      return areDatesEqual(a, b, state);\n    }\n\n    if (constructor === RegExp) {\n      return areRegExpsEqual(a, b, state);\n    }\n\n    if (constructor === Map) {\n      return areMapsEqual(a, b, state);\n    }\n\n    if (constructor === Set) {\n      return areSetsEqual(a, b, state);\n    }\n\n    // Since this is a custom object, capture the string tag to determing its type.\n    // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n    const tag = toString.call(a);\n\n    if (tag === DATE_TAG) {\n      return areDatesEqual(a, b, state);\n    }\n\n    // For RegExp, the properties are not enumerable, and therefore will give false positives if\n    // tested like a standard object.\n    if (tag === REG_EXP_TAG) {\n      return areRegExpsEqual(a, b, state);\n    }\n\n    if (tag === MAP_TAG) {\n      return areMapsEqual(a, b, state);\n    }\n\n    if (tag === SET_TAG) {\n      return areSetsEqual(a, b, state);\n    }\n\n    if (tag === OBJECT_TAG) {\n      // The exception for value comparison is custom `Promise`-like class instances. These should\n      // be treated the same as standard `Promise` objects, which means strict equality, and if\n      // it reaches this point then that strict equality comparison has already failed.\n      return typeof a.then !== 'function' && typeof b.then !== 'function' && areObjectsEqual(a, b, state);\n    }\n\n    // If a URL tag, it should be tested explicitly. Like RegExp, the properties are not\n    // enumerable, and therefore will give false positives if tested like a standard object.\n    if (tag === URL_TAG) {\n      return areUrlsEqual(a, b, state);\n    }\n\n    // If an error tag, it should be tested explicitly. Like RegExp, the properties are not\n    // enumerable, and therefore will give false positives if tested like a standard object.\n    if (tag === ERROR_TAG) {\n      return areErrorsEqual(a, b, state);\n    }\n\n    // If an arguments tag, it should be treated as a standard object.\n    if (tag === ARGUMENTS_TAG) {\n      return areObjectsEqual(a, b, state);\n    }\n\n    if (TYPED_ARRAY_TAGS[tag]) {\n      return areTypedArraysEqual(a, b, state);\n    }\n\n    if (tag === ARRAY_BUFFER_TAG) {\n      return areArrayBuffersEqual(a, b, state);\n    }\n\n    if (tag === DATA_VIEW_TAG) {\n      return areDataViewsEqual(a, b, state);\n    }\n\n    // As the penultimate fallback, check if the values passed are primitive wrappers. This\n    // is very rare in modern JS, which is why it is deprioritized compared to all other object\n    // types.\n    if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n      return arePrimitiveWrappersEqual(a, b, state);\n    }\n\n    if (unknownTagComparators) {\n      let unknownTagComparator = unknownTagComparators[tag];\n\n      if (!unknownTagComparator) {\n        const shortTag = getShortTag(a);\n\n        if (shortTag) {\n          unknownTagComparator = unknownTagComparators[shortTag];\n        }\n      }\n\n      // If the custom config has an unknown tag comparator that matches the captured tag or the\n      // @@toStringTag, it is the source of truth for whether the values are equal.\n      if (unknownTagComparator) {\n        return unknownTagComparator(a, b, state);\n      }\n    }\n\n    // If not matching any tags that require a specific type of comparison, then we hard-code false because\n    // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n    //   - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n    //     comparison that can be made.\n    //   - For types that can be introspected, but rarely have requirements to be compared\n    //     (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n    //     use-cases (may be included in a future release, if requested enough).\n    //   - For types that can be introspected but do not have an objective definition of what\n    //     equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n    // In all cases, these decisions should be reevaluated based on changes to the language and\n    // common development practices.\n    return false;\n  };\n}\n\n/**\n * Create the configuration object used for building comparators.\n */\nexport function createEqualityComparatorConfig<Meta>({\n  circular,\n  createCustomConfig,\n  strict,\n}: CustomEqualCreatorOptions<Meta>): ComparatorConfig<Meta> {\n  let config = {\n    areArrayBuffersEqual,\n    areArraysEqual: strict ? areObjectsEqualStrictDefault : areArraysEqualDefault,\n    areDataViewsEqual,\n    areDatesEqual: areDatesEqualDefault,\n    areErrorsEqual: areErrorsEqualDefault,\n    areFunctionsEqual: areFunctionsEqualDefault,\n    areMapsEqual: strict ? combineComparators(areMapsEqualDefault, areObjectsEqualStrictDefault) : areMapsEqualDefault,\n    areNumbersEqual: areNumbersEqualDefault,\n    areObjectsEqual: strict ? areObjectsEqualStrictDefault : areObjectsEqualDefault,\n    arePrimitiveWrappersEqual: arePrimitiveWrappersEqualDefault,\n    areRegExpsEqual: areRegExpsEqualDefault,\n    areSetsEqual: strict ? combineComparators(areSetsEqualDefault, areObjectsEqualStrictDefault) : areSetsEqualDefault,\n    areTypedArraysEqual: strict\n      ? combineComparators(areTypedArraysEqualDefault, areObjectsEqualStrictDefault)\n      : areTypedArraysEqualDefault,\n    areUrlsEqual: areUrlsEqualDefault,\n    unknownTagComparators: undefined,\n  };\n\n  if (createCustomConfig) {\n    config = Object.assign({}, config, createCustomConfig(config));\n  }\n\n  if (circular) {\n    const areArraysEqual = createIsCircular(config.areArraysEqual);\n    const areMapsEqual = createIsCircular(config.areMapsEqual);\n    const areObjectsEqual = createIsCircular(config.areObjectsEqual);\n    const areSetsEqual = createIsCircular(config.areSetsEqual);\n\n    config = Object.assign({}, config, {\n      areArraysEqual,\n      areMapsEqual,\n      areObjectsEqual,\n      areSetsEqual,\n    });\n  }\n\n  return config;\n}\n\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nexport function createInternalEqualityComparator<Meta>(\n  compare: EqualityComparator<Meta>,\n): InternalEqualityComparator<Meta> {\n  return function (\n    a: any,\n    b: any,\n    _indexOrKeyA: any,\n    _indexOrKeyB: any,\n    _parentA: any,\n    _parentB: any,\n    state: State<Meta>,\n  ) {\n    return compare(a, b, state);\n  };\n}\n\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nexport function createIsEqual<Meta>({ circular, comparator, createState, equals, strict }: CreateIsEqualOptions<Meta>) {\n  if (createState) {\n    return function isEqual<A, B>(a: A, b: B): boolean {\n      const { cache = circular ? new WeakMap() : undefined, meta } = createState();\n\n      return comparator(a, b, {\n        cache,\n        equals,\n        meta,\n        strict,\n      } as State<Meta>);\n    };\n  }\n\n  if (circular) {\n    return function isEqual<A, B>(a: A, b: B): boolean {\n      return comparator(a, b, {\n        cache: new WeakMap(),\n        equals,\n        meta: undefined as Meta,\n        strict,\n      } as State<Meta>);\n    };\n  }\n\n  const state = {\n    cache: undefined,\n    equals,\n    meta: undefined,\n    strict,\n  } as State<Meta>;\n\n  return function isEqual<A, B>(a: A, b: B): boolean {\n    return comparator(a, b, state);\n  };\n}\n", "import {\n  createEqualityComparatorConfig,\n  createEqualityComparator,\n  createInternalEqualityComparator,\n  createIsEqual,\n} from './comparator.js';\nimport type { CustomEqualCreatorOptions } from './internalTypes.js';\nimport { sameValueZeroEqual } from './utils.js';\n\nexport { sameValueZeroEqual };\nexport type {\n  AnyEqualityComparator,\n  Cache,\n  CircularState,\n  ComparatorConfig,\n  CreateCustomComparatorConfig,\n  CreateState,\n  CustomEqualCreatorOptions,\n  DefaultState,\n  Dictionary,\n  EqualityComparator,\n  EqualityComparatorCreator,\n  InternalEqualityComparator,\n  PrimitiveWrapper,\n  State,\n  TypeEqualityComparator,\n  TypedArray,\n} from './internalTypes.js';\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nexport const deepEqual = createCustomEqual();\n\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nexport const strictDeepEqual = createCustomEqual({ strict: true });\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nexport const circularDeepEqual = createCustomEqual({ circular: true });\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nexport const strictCircularDeepEqual = createCustomEqual({\n  circular: true,\n  strict: true,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nexport const shallowEqual = createCustomEqual({\n  createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nexport const strictShallowEqual = createCustomEqual({\n  strict: true,\n  createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nexport const circularShallowEqual = createCustomEqual({\n  circular: true,\n  createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nexport const strictCircularShallowEqual = createCustomEqual({\n  circular: true,\n  createInternalComparator: () => sameValueZeroEqual,\n  strict: true,\n});\n\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nexport function createCustomEqual<Meta = undefined>(options: CustomEqualCreatorOptions<Meta> = {}) {\n  const {\n    circular = false,\n    createInternalComparator: createCustomInternalComparator,\n    createState,\n    strict = false,\n  } = options;\n\n  const config = createEqualityComparatorConfig<Meta>(options);\n  const comparator = createEqualityComparator(config);\n  const equals = createCustomInternalComparator\n    ? createCustomInternalComparator(comparator)\n    : createInternalEqualityComparator(comparator);\n\n  return createIsEqual({ circular, comparator, createState, equals, strict });\n}\n", "function safeRequestAnimationFrame(callback) {\n  if (typeof requestAnimationFrame !== 'undefined') requestAnimationFrame(callback);\n}\nexport default function setRafTimeout(callback) {\n  var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var currTime = -1;\n  var shouldUpdate = function shouldUpdate(now) {\n    if (currTime < 0) {\n      currTime = now;\n    }\n    if (now - currTime > timeout) {\n      callback(now);\n      currTime = -1;\n    } else {\n      safeRequestAnimationFrame(shouldUpdate);\n    }\n  };\n  requestAnimationFrame(shouldUpdate);\n}", "function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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); }\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; }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport setRafTimeout from './setRafTimeout';\nexport default function createAnimateManager() {\n  var currStyle = {};\n  var handleChange = function handleChange() {\n    return null;\n  };\n  var shouldStop = false;\n  var setStyle = function setStyle(_style) {\n    if (shouldStop) {\n      return;\n    }\n    if (Array.isArray(_style)) {\n      if (!_style.length) {\n        return;\n      }\n      var styles = _style;\n      var _styles = _toArray(styles),\n        curr = _styles[0],\n        restStyles = _styles.slice(1);\n      if (typeof curr === 'number') {\n        setRafTimeout(setStyle.bind(null, restStyles), curr);\n        return;\n      }\n      setStyle(curr);\n      setRafTimeout(setStyle.bind(null, restStyles));\n      return;\n    }\n    if (_typeof(_style) === 'object') {\n      currStyle = _style;\n      handleChange(currStyle);\n    }\n    if (typeof _style === 'function') {\n      _style();\n    }\n  };\n  return {\n    stop: function stop() {\n      shouldStop = true;\n    },\n    start: function start(style) {\n      shouldStop = false;\n      setStyle(style);\n    },\n    subscribe: function subscribe(_handleChange) {\n      handleChange = _handleChange;\n      return function () {\n        handleChange = function handleChange() {\n          return null;\n        };\n      };\n    }\n  };\n}", "function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint no-console: 0 */\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nvar IN_LINE_PREFIX_LIST = ['-webkit-', '-moz-', '-o-', '-ms-'];\nvar IN_COMPATIBLE_PROPERTY = ['transform', 'transformOrigin', 'transition'];\nexport var getIntersectionKeys = function getIntersectionKeys(preObj, nextObj) {\n  return [Object.keys(preObj), Object.keys(nextObj)].reduce(function (a, b) {\n    return a.filter(function (c) {\n      return b.includes(c);\n    });\n  });\n};\nexport var identity = function identity(param) {\n  return param;\n};\n\n/*\n * @description: convert camel case to dash case\n * string => string\n */\nexport var getDashCase = function getDashCase(name) {\n  return name.replace(/([A-Z])/g, function (v) {\n    return \"-\".concat(v.toLowerCase());\n  });\n};\n\n/*\n * @description: add compatible style prefix\n * (string, string) => object\n */\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n  if (IN_COMPATIBLE_PROPERTY.indexOf(name) === -1) {\n    return _defineProperty({}, name, Number.isNaN(value) ? 0 : value);\n  }\n  var isTransition = name === 'transition';\n  var camelName = name.replace(/(\\w)/, function (v) {\n    return v.toUpperCase();\n  });\n  var styleVal = value;\n  return PREFIX_LIST.reduce(function (result, property, i) {\n    if (isTransition) {\n      styleVal = value.replace(/(transform|transform-origin)/gim, \"\".concat(IN_LINE_PREFIX_LIST[i], \"$1\"));\n    }\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, property + camelName, styleVal));\n  }, {});\n};\nexport var log = function log() {\n  var _console;\n  (_console = console).log.apply(_console, arguments);\n};\n\n/*\n * @description: log the value of a varible\n * string => any => any\n */\nexport var debug = function debug(name) {\n  return function (item) {\n    log(name, item);\n    return item;\n  };\n};\n\n/*\n * @description: log name, args, return value of a function\n * function => function\n */\nexport var debugf = function debugf(tag, f) {\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    var res = f.apply(void 0, args);\n    var name = tag || f.name || 'anonymous function';\n    var argNames = \"(\".concat(args.map(JSON.stringify).join(', '), \")\");\n    log(\"\".concat(name, \": \").concat(argNames, \" => \").concat(JSON.stringify(res)));\n    return res;\n  };\n};\n\n/*\n * @description: map object on every element in this object.\n * (function, object) => object\n */\nexport var mapObject = function mapObject(fn, obj) {\n  return Object.keys(obj).reduce(function (res, key) {\n    return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, fn(key, obj[key])));\n  }, {});\n};\n\n/*\n * @description: add compatible prefix to style\n * object => object\n */\nexport var translateStyle = function translateStyle(style) {\n  return Object.keys(style).reduce(function (res, key) {\n    return _objectSpread(_objectSpread({}, res), generatePrefixStyle(key, res[key]));\n  }, style);\n};\nexport var compose = function compose() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n  if (!args.length) {\n    return identity;\n  }\n  var fns = args.reverse();\n  // first function can receive multiply arguments\n  var firstFn = fns[0];\n  var tailsFn = fns.slice(1);\n  return function () {\n    return tailsFn.reduce(function (res, fn) {\n      return fn(res);\n    }, firstFn.apply(void 0, arguments));\n  };\n};\nexport var getTransitionVal = function getTransitionVal(props, duration, easing) {\n  return props.map(function (prop) {\n    return \"\".concat(getDashCase(prop), \" \").concat(duration, \"ms \").concat(easing);\n  }).join(',');\n};\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format, a, b, c, d, e, f) {\n  if (isDev && typeof console !== 'undefined' && console.warn) {\n    if (format === undefined) {\n      console.warn('LogUtils requires an error message argument');\n    }\n    if (!condition) {\n      if (format === undefined) {\n        console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n      } else {\n        var args = [a, b, c, d, e, f];\n        var argIndex = 0;\n        console.warn(format.replace(/%s/g, function () {\n          return args[argIndex++];\n        }));\n      }\n    }\n  }\n};", "function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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; }\nimport { warn } from './util';\nvar ACCURACY = 1e-4;\nvar cubicBezierFactor = function cubicBezierFactor(c1, c2) {\n  return [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\n};\nvar multyTime = function multyTime(params, t) {\n  return params.map(function (param, i) {\n    return param * Math.pow(t, i);\n  }).reduce(function (pre, curr) {\n    return pre + curr;\n  });\n};\nvar cubicBezier = function cubicBezier(c1, c2) {\n  return function (t) {\n    var params = cubicBezierFactor(c1, c2);\n    return multyTime(params, t);\n  };\n};\nvar derivativeCubicBezier = function derivativeCubicBezier(c1, c2) {\n  return function (t) {\n    var params = cubicBezierFactor(c1, c2);\n    var newParams = [].concat(_toConsumableArray(params.map(function (param, i) {\n      return param * i;\n    }).slice(1)), [0]);\n    return multyTime(newParams, t);\n  };\n};\n\n// calculate cubic-bezier using Newton's method\nexport var configBezier = function configBezier() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  var x1 = args[0],\n    y1 = args[1],\n    x2 = args[2],\n    y2 = args[3];\n  if (args.length === 1) {\n    switch (args[0]) {\n      case 'linear':\n        x1 = 0.0;\n        y1 = 0.0;\n        x2 = 1.0;\n        y2 = 1.0;\n        break;\n      case 'ease':\n        x1 = 0.25;\n        y1 = 0.1;\n        x2 = 0.25;\n        y2 = 1.0;\n        break;\n      case 'ease-in':\n        x1 = 0.42;\n        y1 = 0.0;\n        x2 = 1.0;\n        y2 = 1.0;\n        break;\n      case 'ease-out':\n        x1 = 0.42;\n        y1 = 0.0;\n        x2 = 0.58;\n        y2 = 1.0;\n        break;\n      case 'ease-in-out':\n        x1 = 0.0;\n        y1 = 0.0;\n        x2 = 0.58;\n        y2 = 1.0;\n        break;\n      default:\n        {\n          var easing = args[0].split('(');\n          if (easing[0] === 'cubic-bezier' && easing[1].split(')')[0].split(',').length === 4) {\n            var _easing$1$split$0$spl = easing[1].split(')')[0].split(',').map(function (x) {\n              return parseFloat(x);\n            });\n            var _easing$1$split$0$spl2 = _slicedToArray(_easing$1$split$0$spl, 4);\n            x1 = _easing$1$split$0$spl2[0];\n            y1 = _easing$1$split$0$spl2[1];\n            x2 = _easing$1$split$0$spl2[2];\n            y2 = _easing$1$split$0$spl2[3];\n          } else {\n            warn(false, '[configBezier]: arguments should be one of ' + \"oneOf 'linear', 'ease', 'ease-in', 'ease-out', \" + \"'ease-in-out','cubic-bezier(x1,y1,x2,y2)', instead received %s\", args);\n          }\n        }\n    }\n  }\n  warn([x1, x2, y1, y2].every(function (num) {\n    return typeof num === 'number' && num >= 0 && num <= 1;\n  }), '[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s', args);\n  var curveX = cubicBezier(x1, x2);\n  var curveY = cubicBezier(y1, y2);\n  var derCurveX = derivativeCubicBezier(x1, x2);\n  var rangeValue = function rangeValue(value) {\n    if (value > 1) {\n      return 1;\n    }\n    if (value < 0) {\n      return 0;\n    }\n    return value;\n  };\n  var bezier = function bezier(_t) {\n    var t = _t > 1 ? 1 : _t;\n    var x = t;\n    for (var i = 0; i < 8; ++i) {\n      var evalT = curveX(x) - t;\n      var derVal = derCurveX(x);\n      if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n        return curveY(x);\n      }\n      x = rangeValue(x - evalT / derVal);\n    }\n    return curveY(x);\n  };\n  bezier.isStepper = false;\n  return bezier;\n};\nexport var configSpring = function configSpring() {\n  var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _config$stiff = config.stiff,\n    stiff = _config$stiff === void 0 ? 100 : _config$stiff,\n    _config$damping = config.damping,\n    damping = _config$damping === void 0 ? 8 : _config$damping,\n    _config$dt = config.dt,\n    dt = _config$dt === void 0 ? 17 : _config$dt;\n  var stepper = function stepper(currX, destX, currV) {\n    var FSpring = -(currX - destX) * stiff;\n    var FDamping = currV * damping;\n    var newV = currV + (FSpring - FDamping) * dt / 1000;\n    var newX = currV * dt / 1000 + currX;\n    if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n      return [destX, 0];\n    }\n    return [newX, newV];\n  };\n  stepper.isStepper = true;\n  stepper.dt = dt;\n  return stepper;\n};\nexport var configEasing = function configEasing() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n  var easing = args[0];\n  if (typeof easing === 'string') {\n    switch (easing) {\n      case 'ease':\n      case 'ease-in-out':\n      case 'ease-out':\n      case 'ease-in':\n      case 'linear':\n        return configBezier(easing);\n      case 'spring':\n        return configSpring();\n      default:\n        if (easing.split('(')[0] === 'cubic-bezier') {\n          return configBezier(easing);\n        }\n        warn(false, \"[configEasing]: first argument should be one of 'ease', 'ease-in', \" + \"'ease-out', 'ease-in-out','cubic-bezier(x1,y1,x2,y2)', 'linear' and 'spring', instead  received %s\", args);\n    }\n  }\n  if (typeof easing === 'function') {\n    return easing;\n  }\n  warn(false, '[configEasing]: first argument type should be function or string, instead received %s', args);\n  return null;\n};", "function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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); }\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; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { getIntersectionKeys, mapObject } from './util';\nvar alpha = function alpha(begin, end, k) {\n  return begin + (end - begin) * k;\n};\nvar needContinue = function needContinue(_ref) {\n  var from = _ref.from,\n    to = _ref.to;\n  return from !== to;\n};\n\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\n */\nvar calStepperVals = function calStepperVals(easing, preVals, steps) {\n  var nextStepVals = mapObject(function (key, val) {\n    if (needContinue(val)) {\n      var _easing = easing(val.from, val.to, val.velocity),\n        _easing2 = _slicedToArray(_easing, 2),\n        newX = _easing2[0],\n        newV = _easing2[1];\n      return _objectSpread(_objectSpread({}, val), {}, {\n        from: newX,\n        velocity: newV\n      });\n    }\n    return val;\n  }, preVals);\n  if (steps < 1) {\n    return mapObject(function (key, val) {\n      if (needContinue(val)) {\n        return _objectSpread(_objectSpread({}, val), {}, {\n          velocity: alpha(val.velocity, nextStepVals[key].velocity, steps),\n          from: alpha(val.from, nextStepVals[key].from, steps)\n        });\n      }\n      return val;\n    }, preVals);\n  }\n  return calStepperVals(easing, nextStepVals, steps - 1);\n};\n\n// configure update function\nexport default (function (from, to, easing, duration, render) {\n  var interKeys = getIntersectionKeys(from, to);\n  var timingStyle = interKeys.reduce(function (res, key) {\n    return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, [from[key], to[key]]));\n  }, {});\n  var stepperStyle = interKeys.reduce(function (res, key) {\n    return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, {\n      from: from[key],\n      velocity: 0,\n      to: to[key]\n    }));\n  }, {});\n  var cafId = -1;\n  var preTime;\n  var beginTime;\n  var update = function update() {\n    return null;\n  };\n  var getCurrStyle = function getCurrStyle() {\n    return mapObject(function (key, val) {\n      return val.from;\n    }, stepperStyle);\n  };\n  var shouldStopAnimation = function shouldStopAnimation() {\n    return !Object.values(stepperStyle).filter(needContinue).length;\n  };\n\n  // stepper timing function like spring\n  var stepperUpdate = function stepperUpdate(now) {\n    if (!preTime) {\n      preTime = now;\n    }\n    var deltaTime = now - preTime;\n    var steps = deltaTime / easing.dt;\n    stepperStyle = calStepperVals(easing, stepperStyle, steps);\n    // get union set and add compatible prefix\n    render(_objectSpread(_objectSpread(_objectSpread({}, from), to), getCurrStyle(stepperStyle)));\n    preTime = now;\n    if (!shouldStopAnimation()) {\n      cafId = requestAnimationFrame(update);\n    }\n  };\n\n  // t => val timing function like cubic-bezier\n  var timingUpdate = function timingUpdate(now) {\n    if (!beginTime) {\n      beginTime = now;\n    }\n    var t = (now - beginTime) / duration;\n    var currStyle = mapObject(function (key, val) {\n      return alpha.apply(void 0, _toConsumableArray(val).concat([easing(t)]));\n    }, timingStyle);\n\n    // get union set and add compatible prefix\n    render(_objectSpread(_objectSpread(_objectSpread({}, from), to), currStyle));\n    if (t < 1) {\n      cafId = requestAnimationFrame(update);\n    } else {\n      var finalStyle = mapObject(function (key, val) {\n        return alpha.apply(void 0, _toConsumableArray(val).concat([easing(1)]));\n      }, timingStyle);\n      render(_objectSpread(_objectSpread(_objectSpread({}, from), to), finalStyle));\n    }\n  };\n  update = easing.isStepper ? stepperUpdate : timingUpdate;\n\n  // return start animation method\n  return function () {\n    requestAnimationFrame(update);\n\n    // return stop animation method\n    return function () {\n      cancelAnimationFrame(cafId);\n    };\n  };\n});", "import React, { Children } from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport AnimateGroupChild from './AnimateGroupChild';\nfunction AnimateGroup(props) {\n  var component = props.component,\n    children = props.children,\n    appear = props.appear,\n    enter = props.enter,\n    leave = props.leave;\n  return /*#__PURE__*/React.createElement(TransitionGroup, {\n    component: component\n  }, Children.map(children, function (child, index) {\n    return /*#__PURE__*/React.createElement(AnimateGroupChild, {\n      appearOptions: appear,\n      enterOptions: enter,\n      leaveOptions: leave,\n      key: \"child-\".concat(index) // eslint-disable-line\n    }, child);\n  }));\n}\nAnimateGroup.propTypes = {\n  appear: PropTypes.object,\n  enter: PropTypes.object,\n  leave: PropTypes.object,\n  children: PropTypes.oneOfType([PropTypes.array, PropTypes.element]),\n  component: PropTypes.any\n};\nAnimateGroup.defaultProps = {\n  component: 'span'\n};\nexport default AnimateGroup;", "var _excluded = [\"children\", \"appearOptions\", \"enterOptions\", \"leaveOptions\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component, Children } from 'react';\nimport { Transition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport Animate from './Animate';\nif (Number.isFinite === undefined) {\n  Number.isFinite = function (value) {\n    return typeof value === 'number' && isFinite(value);\n  };\n}\nvar parseDurationOfSingleTransition = function parseDurationOfSingleTransition() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var steps = options.steps,\n    duration = options.duration;\n  if (steps && steps.length) {\n    return steps.reduce(function (result, entry) {\n      return result + (Number.isFinite(entry.duration) && entry.duration > 0 ? entry.duration : 0);\n    }, 0);\n  }\n  if (Number.isFinite(duration)) {\n    return duration;\n  }\n  return 0;\n};\nvar AnimateGroupChild = /*#__PURE__*/function (_Component) {\n  _inherits(AnimateGroupChild, _Component);\n  var _super = _createSuper(AnimateGroupChild);\n  function AnimateGroupChild() {\n    var _this;\n    _classCallCheck(this, AnimateGroupChild);\n    _this = _super.call(this);\n    _defineProperty(_assertThisInitialized(_this), \"handleEnter\", function (node, isAppearing) {\n      var _this$props = _this.props,\n        appearOptions = _this$props.appearOptions,\n        enterOptions = _this$props.enterOptions;\n      _this.handleStyleActive(isAppearing ? appearOptions : enterOptions);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"handleExit\", function () {\n      var leaveOptions = _this.props.leaveOptions;\n      _this.handleStyleActive(leaveOptions);\n    });\n    _this.state = {\n      isActive: false\n    };\n    return _this;\n  }\n  _createClass(AnimateGroupChild, [{\n    key: \"handleStyleActive\",\n    value: function handleStyleActive(style) {\n      if (style) {\n        var onAnimationEnd = style.onAnimationEnd ? function () {\n          style.onAnimationEnd();\n        } : null;\n        this.setState(_objectSpread(_objectSpread({}, style), {}, {\n          onAnimationEnd: onAnimationEnd,\n          isActive: true\n        }));\n      }\n    }\n  }, {\n    key: \"parseTimeout\",\n    value: function parseTimeout() {\n      var _this$props2 = this.props,\n        appearOptions = _this$props2.appearOptions,\n        enterOptions = _this$props2.enterOptions,\n        leaveOptions = _this$props2.leaveOptions;\n      return parseDurationOfSingleTransition(appearOptions) + parseDurationOfSingleTransition(enterOptions) + parseDurationOfSingleTransition(leaveOptions);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n      var _this$props3 = this.props,\n        children = _this$props3.children,\n        appearOptions = _this$props3.appearOptions,\n        enterOptions = _this$props3.enterOptions,\n        leaveOptions = _this$props3.leaveOptions,\n        props = _objectWithoutProperties(_this$props3, _excluded);\n      return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n        onEnter: this.handleEnter,\n        onExit: this.handleExit,\n        timeout: this.parseTimeout()\n      }), function () {\n        return /*#__PURE__*/React.createElement(Animate, _this2.state, Children.only(children));\n      });\n    }\n  }]);\n  return AnimateGroupChild;\n}(Component);\nAnimateGroupChild.propTypes = {\n  appearOptions: PropTypes.object,\n  enterOptions: PropTypes.object,\n  leaveOptions: PropTypes.object,\n  children: PropTypes.element\n};\nexport default AnimateGroupChild;", "import Animate from './Animate';\nimport { configBezier, configSpring } from './easing';\nimport { translateStyle } from './util';\nimport AnimateGroup from './AnimateGroup';\nexport { configSpring, configBezier, AnimateGroup, translateStyle };\nexport default Animate;", "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 _isNil from \"lodash/isNil\";\nimport _sortBy from \"lodash/sortBy\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { isNumOrStr } from '../util/DataUtils';\n\nfunction defaultFormatter(value) {\n  return _isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(' ~ ') : value;\n}\n\nexport var DefaultTooltipContent = /*#__PURE__*/function (_PureComponent) {\n  _inherits(DefaultTooltipContent, _PureComponent);\n\n  var _super = _createSuper(DefaultTooltipContent);\n\n  function DefaultTooltipContent() {\n    _classCallCheck(this, DefaultTooltipContent);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DefaultTooltipContent, [{\n    key: \"renderContent\",\n    value: function renderContent() {\n      var _this$props = this.props,\n          payload = _this$props.payload,\n          separator = _this$props.separator,\n          formatter = _this$props.formatter,\n          itemStyle = _this$props.itemStyle,\n          itemSorter = _this$props.itemSorter;\n\n      if (payload && payload.length) {\n        var listStyle = {\n          padding: 0,\n          margin: 0\n        };\n        var items = (itemSorter ? _sortBy(payload, itemSorter) : payload).map(function (entry, i) {\n          if (entry.type === 'none') {\n            return null;\n          }\n\n          var finalItemStyle = _objectSpread({\n            display: 'block',\n            paddingTop: 4,\n            paddingBottom: 4,\n            color: entry.color || '#000'\n          }, itemStyle);\n\n          var finalFormatter = entry.formatter || formatter || defaultFormatter;\n          var value = entry.value,\n              name = entry.name;\n\n          if (finalFormatter && value && name) {\n            var formatted = finalFormatter(value, name, entry, i, payload);\n\n            if (Array.isArray(formatted)) {\n              var _ref = formatted;\n\n              var _ref2 = _slicedToArray(_ref, 2);\n\n              value = _ref2[0];\n              name = _ref2[1];\n            } else {\n              value = formatted;\n            }\n          }\n\n          return (\n            /*#__PURE__*/\n            // eslint-disable-next-line react/no-array-index-key\n            React.createElement(\"li\", {\n              className: \"recharts-tooltip-item\",\n              key: \"tooltip-item-\".concat(i),\n              style: finalItemStyle\n            }, isNumOrStr(name) ? /*#__PURE__*/React.createElement(\"span\", {\n              className: \"recharts-tooltip-item-name\"\n            }, name) : null, isNumOrStr(name) ? /*#__PURE__*/React.createElement(\"span\", {\n              className: \"recharts-tooltip-item-separator\"\n            }, separator) : null, /*#__PURE__*/React.createElement(\"span\", {\n              className: \"recharts-tooltip-item-value\"\n            }, value), /*#__PURE__*/React.createElement(\"span\", {\n              className: \"recharts-tooltip-item-unit\"\n            }, entry.unit || ''))\n          );\n        });\n        return /*#__PURE__*/React.createElement(\"ul\", {\n          className: \"recharts-tooltip-item-list\",\n          style: listStyle\n        }, items);\n      }\n\n      return null;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          wrapperClassName = _this$props2.wrapperClassName,\n          contentStyle = _this$props2.contentStyle,\n          labelClassName = _this$props2.labelClassName,\n          labelStyle = _this$props2.labelStyle,\n          label = _this$props2.label,\n          labelFormatter = _this$props2.labelFormatter,\n          payload = _this$props2.payload;\n\n      var finalStyle = _objectSpread({\n        margin: 0,\n        padding: 10,\n        backgroundColor: '#fff',\n        border: '1px solid #ccc',\n        whiteSpace: 'nowrap'\n      }, contentStyle);\n\n      var finalLabelStyle = _objectSpread({\n        margin: 0\n      }, labelStyle);\n\n      var hasLabel = !_isNil(label);\n      var finalLabel = hasLabel ? label : '';\n      var wrapperCN = classNames('recharts-default-tooltip', wrapperClassName);\n      var labelCN = classNames('recharts-tooltip-label', labelClassName);\n\n      if (hasLabel && labelFormatter && payload !== undefined && payload !== null) {\n        finalLabel = labelFormatter(label, payload);\n      }\n\n      return /*#__PURE__*/React.createElement(\"div\", {\n        className: wrapperCN,\n        style: finalStyle\n      }, /*#__PURE__*/React.createElement(\"p\", {\n        className: labelCN,\n        style: finalLabelStyle\n      }, /*#__PURE__*/React.isValidElement(finalLabel) ? finalLabel : \"\".concat(finalLabel)), this.renderContent());\n    }\n  }]);\n\n  return DefaultTooltipContent;\n}(PureComponent);\nDefaultTooltipContent.displayName = 'DefaultTooltipContent';\nDefaultTooltipContent.defaultProps = {\n  separator: ' : ',\n  contentStyle: {},\n  itemStyle: {},\n  labelStyle: {}\n};", "var parseIsSsrByDefault = function parseIsSsrByDefault() {\n  return !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n};\n\nexport var Global = {\n  isSsr: parseIsSsrByDefault(),\n  get: function get(key) {\n    return Global[key];\n  },\n  set: function set(key, value) {\n    if (typeof key === 'string') {\n      Global[key] = value;\n    } else {\n      var keys = Object.keys(key);\n\n      if (keys && keys.length) {\n        keys.forEach(function (k) {\n          Global[k] = key[k];\n        });\n      }\n    }\n  }\n};", "import _debounce from \"lodash/debounce\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */\nimport classNames from 'classnames';\nimport React, { forwardRef, cloneElement, useState, useImperativeHandle, useRef, useEffect } from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport { isPercent } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nexport var ResponsiveContainer = /*#__PURE__*/forwardRef(function (_ref, ref) {\n  var aspect = _ref.aspect,\n      _ref$width = _ref.width,\n      width = _ref$width === void 0 ? '100%' : _ref$width,\n      _ref$height = _ref.height,\n      height = _ref$height === void 0 ? '100%' : _ref$height,\n      minWidth = _ref.minWidth,\n      minHeight = _ref.minHeight,\n      maxHeight = _ref.maxHeight,\n      children = _ref.children,\n      _ref$debounce = _ref.debounce,\n      debounce = _ref$debounce === void 0 ? 0 : _ref$debounce,\n      id = _ref.id,\n      className = _ref.className;\n\n  var _useState = useState({\n    containerWidth: -1,\n    containerHeight: -1\n  }),\n      _useState2 = _slicedToArray(_useState, 2),\n      sizes = _useState2[0],\n      setSizes = _useState2[1];\n\n  var containerRef = useRef(null);\n  useImperativeHandle(ref, function () {\n    return containerRef;\n  }, [containerRef]);\n\n  var _useState3 = useState(false),\n      _useState4 = _slicedToArray(_useState3, 2),\n      mounted = _useState4[0],\n      setMounted = _useState4[1];\n\n  var getContainerSize = function getContainerSize() {\n    if (!containerRef.current) {\n      return null;\n    }\n\n    return {\n      containerWidth: containerRef.current.clientWidth,\n      containerHeight: containerRef.current.clientHeight\n    };\n  };\n\n  var updateDimensionsImmediate = function updateDimensionsImmediate() {\n    if (!mounted) {\n      return;\n    }\n\n    var newSize = getContainerSize();\n\n    if (newSize) {\n      var oldWidth = sizes.containerWidth,\n          oldHeight = sizes.containerHeight;\n      var containerWidth = newSize.containerWidth,\n          containerHeight = newSize.containerHeight;\n\n      if (containerWidth !== oldWidth || containerHeight !== oldHeight) {\n        setSizes({\n          containerWidth: containerWidth,\n          containerHeight: containerHeight\n        });\n      }\n    }\n  };\n\n  var handleResize = debounce > 0 ? _debounce(updateDimensionsImmediate, debounce) : updateDimensionsImmediate;\n\n  var renderChart = function renderChart() {\n    var containerWidth = sizes.containerWidth,\n        containerHeight = sizes.containerHeight;\n\n    if (containerWidth < 0 || containerHeight < 0) {\n      return null;\n    }\n\n    warn(isPercent(width) || isPercent(height), \"The width(%s) and height(%s) are both fixed numbers,\\n       maybe you don't need to use a ResponsiveContainer.\", width, height);\n    warn(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n    var calculatedWidth = isPercent(width) ? containerWidth : width;\n    var calculatedHeight = isPercent(height) ? containerHeight : height;\n\n    if (aspect && aspect > 0) {\n      // Preserve the desired aspect ratio\n      if (calculatedWidth) {\n        // Will default to using width for aspect ratio\n        calculatedHeight = calculatedWidth / aspect;\n      } else if (calculatedHeight) {\n        // But we should also take height into consideration\n        calculatedWidth = calculatedHeight * aspect;\n      } // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n\n\n      if (maxHeight && calculatedHeight > maxHeight) {\n        calculatedHeight = maxHeight;\n      }\n    }\n\n    warn(calculatedWidth > 0 || calculatedHeight > 0, \"The width(%s) and height(%s) of chart should be greater than 0,\\n       please check the style of container, or the props width(%s) and height(%s),\\n       or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\\n       height and width.\", calculatedWidth, calculatedHeight, width, height, minWidth, minHeight, aspect);\n    return /*#__PURE__*/cloneElement(children, {\n      width: calculatedWidth,\n      height: calculatedHeight\n    });\n  };\n\n  useEffect(function () {\n    if (mounted) {\n      var size = getContainerSize();\n\n      if (size) {\n        setSizes(size);\n      }\n    }\n  }, [mounted]);\n  useEffect(function () {\n    setMounted(true);\n  }, []);\n  var style = {\n    width: width,\n    height: height,\n    minWidth: minWidth,\n    minHeight: minHeight,\n    maxHeight: maxHeight\n  };\n  return /*#__PURE__*/React.createElement(ReactResizeDetector, {\n    handleWidth: true,\n    handleHeight: true,\n    onResize: handleResize,\n    targetRef: containerRef\n  }, /*#__PURE__*/React.createElement(\"div\", _extends({}, id != null ? {\n    id: \"\".concat(id)\n  } : {}, {\n    className: classNames('recharts-responsive-container', className),\n    style: style,\n    ref: containerRef\n  }), renderChart()));\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 (_) 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", "/**\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 != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n", "var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n", "var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n", "var Symbol = require('./_Symbol');\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 nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n", "var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\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 != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n", "var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n", "var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n", "var debounce = require('./debounce'),\n    isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\nmodule.exports = throttle;\n", "import debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\n\nimport { Props, ReactResizeDetectorDimensions } from './ResizeDetector';\n\nexport type patchResizeHandlerType = ReturnType<typeof debounce> | ReturnType<typeof throttle> | ResizeObserverCallback;\n\nexport const patchResizeHandler = (\n  resizeCallback: ResizeObserverCallback,\n  refreshMode: Props['refreshMode'],\n  refreshRate: Props['refreshRate'],\n  refreshOptions: Props['refreshOptions']\n): patchResizeHandlerType => {\n  switch (refreshMode) {\n    case 'debounce':\n      return debounce(resizeCallback, refreshRate, refreshOptions);\n    case 'throttle':\n      return throttle(resizeCallback, refreshRate, refreshOptions);\n    default:\n      return resizeCallback;\n  }\n};\n\nexport const isFunction = (fn: any): boolean => typeof fn === 'function';\n\nexport const isSSR = (): boolean => typeof window === 'undefined';\n\nexport const isDOMElement = (element: any): boolean => element instanceof Element || element instanceof HTMLDocument;\n\nexport const createNotifier =\n  (\n    onResize: Props['onResize'],\n    setSize: React.Dispatch<React.SetStateAction<ReactResizeDetectorDimensions>>,\n    handleWidth: boolean,\n    handleHeight: boolean\n  ) =>\n  ({ width, height }: ReactResizeDetectorDimensions): void => {\n    setSize(prev => {\n      if (prev.width === width && prev.height === height) {\n        // skip if dimensions haven't changed\n        return prev;\n      }\n\n      if ((prev.width === width && !handleHeight) || (prev.height === height && !handleWidth)) {\n        // process `handleHeight/handleWidth` props\n        return prev;\n      }\n\n      if (onResize && isFunction(onResize)) {\n        onResize(width, height);\n      }\n\n      return { width, height };\n    });\n  };\n", "import * as React from 'react';\nimport { PureComponent, isValidElement, cloneElement, createRef, ReactNode, ReactElement, RefObject } from 'react';\nimport { findDOMNode } from 'react-dom';\n\nimport { patchResizeHandler, isFunction, isSSR, isDOMElement, createNotifier } from './utils';\n\nexport interface ReactResizeDetectorDimensions {\n  height?: number;\n  width?: number;\n}\n\ninterface ChildFunctionProps<ElementT extends HTMLElement> extends ReactResizeDetectorDimensions {\n  targetRef?: RefObject<ElementT>;\n}\n\nexport interface Props {\n  /**\n   * Function that will be invoked with observable element's width and height.\n   * Default: undefined\n   */\n  onResize?: (width?: number, height?: number) => void;\n  /**\n   * Trigger update on height change.\n   * Default: true\n   */\n  handleHeight?: boolean;\n  /**\n   * Trigger onResize on width change.\n   * Default: true\n   */\n  handleWidth?: boolean;\n  /**\n   * Do not trigger update when a component mounts.\n   * Default: false\n   */\n  skipOnMount?: boolean;\n  /**\n   * Changes the update strategy. Possible values: \"throttle\" and \"debounce\".\n   * See `lodash` docs for more information https://lodash.com/docs/\n   * undefined - callback will be fired for every frame.\n   * Default: undefined\n   */\n  refreshMode?: 'throttle' | 'debounce';\n  /**\n   * Set the timeout/interval for `refreshMode` strategy\n   * Default: undefined\n   */\n  refreshRate?: number;\n  /**\n   * Pass additional params to `refreshMode` according to lodash docs\n   * Default: undefined\n   */\n  refreshOptions?: { leading?: boolean; trailing?: boolean };\n  /**\n   * These options will be used as a second parameter of `resizeObserver.observe` method\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver/observe\n   * Default: undefined\n   */\n  observerOptions?: ResizeObserverOptions;\n}\n\nexport interface ComponentsProps<ElementT extends HTMLElement> extends Props {\n  /**\n   * A selector of an element to observe.\n   * You can use this property to attach resize-observer to any DOM element.\n   * Please refer to the querySelector docs.\n   * Default: undefined\n   * @deprecated since version 5.0.0. It will be removed in version 7.0.0.\n   * Use targetRef instead\n   */\n  querySelector?: string;\n  /**\n   * Valid only for a callback-pattern.\n   * Ignored for other render types.\n   * Set resize-detector's node type.\n   * You can pass any valid React node: string with node's name or element.\n   * Can be useful when you need to handle table's or paragraph's resizes.\n   * Default: \"div\"\n   * @deprecated since version 5.0.0. It will be removed in version 7.0.0.\n   * Use targetRef instead\n   */\n  nodeType?: keyof JSX.IntrinsicElements; // will be passed to React.createElement()\n  /**\n   * A DOM element to observe.\n   * By default it's a parent element in relation to the ReactResizeDetector component.\n   * But you can pass any DOM element to observe.\n   * This property is omitted when you pass querySelector.\n   * Default: undefined\n   * @deprecated since version 5.0.0. It will be removed in version 6.0.0.\n   * Use targetRef instead\n   */\n  targetDomEl?: ElementT;\n  /**\n   * A React reference of the element to observe.\n   * Pass a reference to the element you want to attach resize handlers to.\n   * It must be an instance of React.useRef or React.createRef functions\n   * Default: undefined\n   */\n  targetRef?: RefObject<ElementT>;\n\n  render?: (props: ReactResizeDetectorDimensions) => ReactNode;\n\n  children?: ReactNode | ((props: ChildFunctionProps<ElementT>) => ReactNode);\n}\n\nclass ResizeDetector<ElementT extends HTMLElement = HTMLElement> extends PureComponent<\n  ComponentsProps<ElementT>,\n  ReactResizeDetectorDimensions\n> {\n  skipOnMount: boolean | undefined;\n  targetRef;\n  observableElement;\n  resizeHandler;\n  resizeObserver;\n  constructor(props: ComponentsProps<ElementT>) {\n    super(props);\n\n    const { skipOnMount, refreshMode, refreshRate = 1000, refreshOptions } = props;\n\n    this.state = {\n      width: undefined,\n      height: undefined\n    };\n\n    this.skipOnMount = skipOnMount;\n    this.targetRef = createRef();\n    this.observableElement = null;\n\n    if (isSSR()) {\n      return;\n    }\n\n    this.resizeHandler = patchResizeHandler(this.createResizeHandler, refreshMode, refreshRate, refreshOptions);\n    this.resizeObserver = new window.ResizeObserver(this.resizeHandler);\n  }\n\n  componentDidMount(): void {\n    this.attachObserver();\n  }\n\n  componentDidUpdate(): void {\n    this.attachObserver();\n  }\n\n  componentWillUnmount(): void {\n    if (isSSR()) {\n      return;\n    }\n    this.observableElement = null;\n    this.resizeObserver.disconnect();\n    this.cancelHandler();\n  }\n\n  cancelHandler = (): void => {\n    if (this.resizeHandler && this.resizeHandler.cancel) {\n      // cancel debounced handler\n      this.resizeHandler.cancel();\n      this.resizeHandler = null;\n    }\n  };\n\n  attachObserver = (): void => {\n    const { targetRef, observerOptions } = this.props;\n\n    if (isSSR()) {\n      return;\n    }\n\n    if (targetRef && targetRef.current) {\n      this.targetRef.current = targetRef.current;\n    }\n\n    const element = this.getElement();\n    if (!element) {\n      // can't find element to observe\n      return;\n    }\n\n    if (this.observableElement && this.observableElement === element) {\n      // element is already observed\n      return;\n    }\n\n    this.observableElement = element;\n    this.resizeObserver.observe(element, observerOptions);\n  };\n\n  getElement = (): Element | Text | null => {\n    const { querySelector, targetDomEl } = this.props;\n\n    if (isSSR()) return null;\n\n    // in case we pass a querySelector\n    if (querySelector) return document.querySelector(querySelector);\n    // in case we pass a DOM element\n    if (targetDomEl && isDOMElement(targetDomEl)) return targetDomEl;\n    // in case we pass a React ref using React.createRef()\n    if (this.targetRef && isDOMElement(this.targetRef.current)) return this.targetRef.current;\n\n    // the worse case when we don't receive any information from the parent and the library doesn't add any wrappers\n    // we have to use a deprecated `findDOMNode` method in order to find a DOM element to attach to\n    const currentElement = findDOMNode(this);\n\n    if (!currentElement) return null;\n\n    const renderType = this.getRenderType();\n    switch (renderType) {\n      case 'renderProp':\n        return currentElement;\n      case 'childFunction':\n        return currentElement;\n      case 'child':\n        return currentElement;\n      case 'childArray':\n        return currentElement;\n      default:\n        return currentElement.parentElement;\n    }\n  };\n\n  createResizeHandler: ResizeObserverCallback = (entries): void => {\n    const { handleWidth = true, handleHeight = true, onResize } = this.props;\n\n    if (!handleWidth && !handleHeight) return;\n\n    const notifyResize = createNotifier(onResize, this.setState.bind(this), handleWidth, handleHeight);\n\n    entries.forEach(entry => {\n      const { width, height } = (entry && entry.contentRect) || {};\n\n      const shouldSetSize = !this.skipOnMount && !isSSR();\n      if (shouldSetSize) {\n        notifyResize({ width, height });\n      }\n\n      this.skipOnMount = false;\n    });\n  };\n\n  getRenderType = (): string => {\n    const { render, children } = this.props;\n    if (isFunction(render)) {\n      // DEPRECATED. Use `Child Function Pattern` instead\n      return 'renderProp';\n    }\n\n    if (isFunction(children)) {\n      return 'childFunction';\n    }\n\n    if (isValidElement(children)) {\n      return 'child';\n    }\n\n    if (Array.isArray(children)) {\n      // DEPRECATED. Wrap children with a single parent\n      return 'childArray';\n    }\n\n    // DEPRECATED. Use `Child Function Pattern` instead\n    return 'parent';\n  };\n\n  render() {\n    const { render, children, nodeType: WrapperTag = 'div' } = this.props;\n    const { width, height } = this.state;\n\n    const childProps = { width, height, targetRef: this.targetRef };\n    const renderType = this.getRenderType();\n\n    let typedChildren: any;\n\n    switch (renderType) {\n      case 'renderProp':\n        return render && render(childProps);\n      case 'childFunction':\n        typedChildren = children as (props: ChildFunctionProps<ElementT>) => ReactNode;\n        return typedChildren(childProps);\n      case 'child':\n        // @TODO bug prone logic\n        typedChildren = children as ReactElement;\n        if (typedChildren.type && typeof typedChildren.type === 'string') {\n          // child is a native DOM elements such as div, span etc\n          const { targetRef, ...nativeProps } = childProps;\n          return cloneElement(typedChildren, nativeProps);\n        }\n        // class or functional component otherwise\n        return cloneElement(typedChildren, childProps);\n      case 'childArray':\n        typedChildren = children as [ReactElement];\n        return typedChildren.map((el: ReactElement) => !!el && cloneElement(el, childProps));\n      default:\n        return <WrapperTag />;\n    }\n  }\n}\n\nexport default ResizeDetector;\n", "import * as React from 'react';\nimport { Component, createRef, forwardRef, ComponentType, ForwardedRef, MutableRefObject } from 'react';\n\nimport ResizeDetector, { ComponentsProps } from './ResizeDetector';\n\nfunction withResizeDetector<P, ElementT extends HTMLElement = HTMLElement>(\n  ComponentInner: ComponentType<P>,\n  options: ComponentsProps<ElementT> = {}\n) {\n  class ResizeDetectorHOC extends Component<\n    PropsWithoutResizeDetectorDimensions<P> & { forwardedRef: ForwardedRef<HTMLElement> }\n  > {\n    ref = createRef<HTMLElement>();\n\n    render() {\n      const { forwardedRef, ...rest } = this.props;\n      const targetRef = forwardedRef ?? this.ref;\n\n      return (\n        <ResizeDetector {...options} targetRef={targetRef as MutableRefObject<HTMLElement>}>\n          <ComponentInner targetRef={targetRef} {...(rest as unknown as P)} />\n        </ResizeDetector>\n      );\n    }\n  }\n\n  function forwardRefWrapper(props: PropsWithoutResizeDetectorDimensions<P>, ref: ForwardedRef<HTMLElement>) {\n    return <ResizeDetectorHOC {...props} forwardedRef={ref} />;\n  }\n\n  const name = ComponentInner.displayName || ComponentInner.name;\n  forwardRefWrapper.displayName = `withResizeDetector(${name})`;\n\n  return forwardRef(forwardRefWrapper);\n}\n\n// Just Pick would be sufficient for this, but I'm trying to avoid unnecessary mapping over union types\n// https://github.com/Microsoft/TypeScript/issues/28339\ntype PropsWithoutResizeDetectorDimensions<P> = Without<Without<OptionalKey<P, 'targetRef'>, 'width'>, 'height'>;\ntype Without<T, Key> = Key extends keyof T ? Omit<T, Key> : T;\ntype OptionalKey<T, Key> = Key extends keyof T ? Omit<T, Key> & { [K in Key]?: T[K] } : T;\n\nexport default withResizeDetector;\n", "import { useLayoutEffect, useEffect, useState, useRef, MutableRefObject } from 'react';\n\nimport { patchResizeHandler, createNotifier, isSSR } from './utils';\n\nimport { Props, ReactResizeDetectorDimensions } from './ResizeDetector';\n\nconst useEnhancedEffect = isSSR() ? useEffect : useLayoutEffect;\n\ninterface FunctionProps extends Props {\n  targetRef?: ReturnType<typeof useRef>;\n}\n\nfunction useResizeDetector<T = any>(props: FunctionProps = {}): UseResizeDetectorReturn<T> {\n  const {\n    skipOnMount = false,\n    refreshMode,\n    refreshRate = 1000,\n    refreshOptions,\n    handleWidth = true,\n    handleHeight = true,\n    targetRef,\n    observerOptions,\n    onResize\n  } = props;\n\n  const skipResize: MutableRefObject<null | boolean> = useRef(skipOnMount);\n  const localRef = useRef(null);\n  const ref = (targetRef ?? localRef) as MutableRefObject<T | null>;\n  const resizeHandler = useRef<ResizeObserverCallback>();\n\n  const [size, setSize] = useState<ReactResizeDetectorDimensions>({\n    width: undefined,\n    height: undefined\n  });\n\n  useEnhancedEffect(() => {\n    if (isSSR()) {\n      return;\n    }\n\n    const notifyResize = createNotifier(onResize, setSize, handleWidth, handleHeight);\n\n    const resizeCallback: ResizeObserverCallback = entries => {\n      if (!handleWidth && !handleHeight) return;\n\n      entries.forEach(entry => {\n        const { width, height } = (entry && entry.contentRect) || {};\n\n        const shouldSetSize = !skipResize.current && !isSSR();\n        if (shouldSetSize) {\n          notifyResize({ width, height });\n        }\n\n        skipResize.current = false;\n      });\n    };\n\n    resizeHandler.current = patchResizeHandler(resizeCallback, refreshMode, refreshRate, refreshOptions);\n\n    const resizeObserver = new window.ResizeObserver(resizeHandler.current as ResizeObserverCallback);\n\n    if (ref.current) {\n      // Something wrong with typings here...\n      resizeObserver.observe(ref.current as any, observerOptions);\n    }\n\n    return () => {\n      resizeObserver.disconnect();\n      const patchedResizeHandler = resizeHandler.current as any;\n      if (patchedResizeHandler && patchedResizeHandler.cancel) {\n        patchedResizeHandler.cancel();\n      }\n    };\n  }, [refreshMode, refreshRate, refreshOptions, handleWidth, handleHeight, onResize, observerOptions, ref.current]);\n\n  return { ref, ...size };\n}\n\nexport default useResizeDetector;\n\nexport interface UseResizeDetectorReturn<T> extends ReactResizeDetectorDimensions {\n  ref: MutableRefObject<T | null>;\n}\n", "/* eslint no-console: 0 */\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format) {\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n\n  if (isDev && typeof console !== 'undefined' && console.warn) {\n    if (format === undefined) {\n      console.warn('LogUtils requires an error message argument');\n    }\n\n    if (!condition) {\n      if (format === undefined) {\n        console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n      } else {\n        var argIndex = 0;\n        console.warn(format.replace(/%s/g, function () {\n          return args[argIndex++];\n        }));\n      }\n    }\n  }\n};", "/**\n * @fileOverview Cross\n */\nexport var Cell = function Cell(_props) {\n  return null;\n};\nCell.displayName = 'Cell';", "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 _isNil from \"lodash/isNil\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component } from 'react';\nimport reduceCSSCalc from 'reduce-css-calc';\nimport classNames from 'classnames';\nimport { isNumber, isNumOrStr } from '../util/DataUtils';\nimport { Global } from '../util/Global';\nimport { filterProps } from '../util/types';\nimport { getStringSize } from '../util/DOMUtils';\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\n\nvar calculateWordWidths = function calculateWordWidths(props) {\n  try {\n    var words = [];\n\n    if (!_isNil(props.children)) {\n      if (props.breakAll) {\n        words = props.children.toString().split('');\n      } else {\n        words = props.children.toString().split(BREAKING_SPACES);\n      }\n    }\n\n    var wordsWithComputedWidth = words.map(function (word) {\n      return {\n        word: word,\n        width: getStringSize(word, props.style).width\n      };\n    });\n    var spaceWidth = props.breakAll ? 0 : getStringSize(\"\\xA0\", props.style).width;\n    return {\n      wordsWithComputedWidth: wordsWithComputedWidth,\n      spaceWidth: spaceWidth\n    };\n  } catch (e) {\n    return null;\n  }\n};\n\nvar calculateWordsByLines = function calculateWordsByLines(props, initialWordsWithComputedWith, spaceWidth, lineWidth, scaleToFit) {\n  var shouldLimitLines = isNumber(props.maxLines);\n  var text = props.children;\n\n  var calculate = function calculate() {\n    var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    return words.reduce(function (result, _ref) {\n      var word = _ref.word,\n          width = _ref.width;\n      var currentLine = result[result.length - 1];\n\n      if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < lineWidth)) {\n        // Word can be added to an existing line\n        currentLine.words.push(word);\n        currentLine.width += width + spaceWidth;\n      } else {\n        // Add first word to line or word is too long to scaleToFit on existing line\n        var newLine = {\n          words: [word],\n          width: width\n        };\n        result.push(newLine);\n      }\n\n      return result;\n    }, []);\n  };\n\n  var originalResult = calculate(initialWordsWithComputedWith);\n\n  var findLongestLine = function findLongestLine(words) {\n    return words.reduce(function (a, b) {\n      return a.width > b.width ? a : b;\n    });\n  };\n\n  if (!shouldLimitLines) {\n    return originalResult;\n  }\n\n  var suffix = '\u2026';\n\n  var checkOverflow = function checkOverflow(index) {\n    var tempText = text.slice(0, index);\n    var words = calculateWordWidths(_objectSpread(_objectSpread({}, props), {}, {\n      children: tempText + suffix\n    })).wordsWithComputedWidth;\n    var result = calculate(words);\n    var doesOverflow = result.length > props.maxLines || findLongestLine(result).width > lineWidth;\n    return [doesOverflow, result];\n  };\n\n  var start = 0;\n  var end = text.length - 1;\n  var iterations = 0;\n  var trimmedResult;\n\n  while (start <= end && iterations <= text.length - 1) {\n    var middle = Math.floor((start + end) / 2);\n    var prev = middle - 1;\n\n    var _checkOverflow = checkOverflow(prev),\n        _checkOverflow2 = _slicedToArray(_checkOverflow, 2),\n        doesPrevOverflow = _checkOverflow2[0],\n        result = _checkOverflow2[1];\n\n    var _checkOverflow3 = checkOverflow(middle),\n        _checkOverflow4 = _slicedToArray(_checkOverflow3, 1),\n        doesMiddleOverflow = _checkOverflow4[0];\n\n    if (!doesPrevOverflow && !doesMiddleOverflow) {\n      start = middle + 1;\n    }\n\n    if (doesPrevOverflow && doesMiddleOverflow) {\n      end = middle - 1;\n    }\n\n    if (!doesPrevOverflow && doesMiddleOverflow) {\n      trimmedResult = result;\n      break;\n    }\n\n    iterations++;\n  } // Fallback to originalResult (result without trimming) if we cannot find the\n  // where to trim.  This should not happen :tm:\n\n\n  return trimmedResult || originalResult;\n};\n\nvar getWordsWithoutCalculate = function getWordsWithoutCalculate(children) {\n  var words = !_isNil(children) ? children.toString().split(BREAKING_SPACES) : [];\n  return [{\n    words: words\n  }];\n};\n\nvar getWordsByLines = function getWordsByLines(props, needCalculate) {\n  // Only perform calculations if using features that require them (multiline, scaleToFit)\n  if ((props.width || props.scaleToFit) && !Global.isSsr) {\n    var wordsWithComputedWidth, spaceWidth;\n\n    if (needCalculate) {\n      var wordWidths = calculateWordWidths(props);\n\n      if (wordWidths) {\n        var wcw = wordWidths.wordsWithComputedWidth,\n            sw = wordWidths.spaceWidth;\n        wordsWithComputedWidth = wcw;\n        spaceWidth = sw;\n      } else {\n        return getWordsWithoutCalculate(props.children);\n      }\n\n      return calculateWordsByLines(props, wordsWithComputedWidth, spaceWidth, props.width, props.scaleToFit);\n    }\n  }\n\n  return getWordsWithoutCalculate(props.children);\n};\n\nexport var Text = /*#__PURE__*/function (_Component) {\n  _inherits(Text, _Component);\n\n  var _super = _createSuper(Text);\n\n  function Text() {\n    var _this;\n\n    _classCallCheck(this, Text);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.state = {};\n    return _this;\n  }\n\n  _createClass(Text, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          dx = _this$props.dx,\n          dy = _this$props.dy,\n          textAnchor = _this$props.textAnchor,\n          verticalAnchor = _this$props.verticalAnchor,\n          scaleToFit = _this$props.scaleToFit,\n          angle = _this$props.angle,\n          lineHeight = _this$props.lineHeight,\n          capHeight = _this$props.capHeight,\n          className = _this$props.className,\n          breakAll = _this$props.breakAll,\n          textProps = _objectWithoutProperties(_this$props, [\"dx\", \"dy\", \"textAnchor\", \"verticalAnchor\", \"scaleToFit\", \"angle\", \"lineHeight\", \"capHeight\", \"className\", \"breakAll\"]);\n\n      var wordsByLines = this.state.wordsByLines;\n\n      if (!isNumOrStr(textProps.x) || !isNumOrStr(textProps.y)) {\n        return null;\n      }\n\n      var x = textProps.x + (isNumber(dx) ? dx : 0);\n      var y = textProps.y + (isNumber(dy) ? dy : 0);\n      var startDy;\n\n      switch (verticalAnchor) {\n        case 'start':\n          startDy = reduceCSSCalc(\"calc(\".concat(capHeight, \")\"));\n          break;\n\n        case 'middle':\n          startDy = reduceCSSCalc(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n          break;\n\n        default:\n          startDy = reduceCSSCalc(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n          break;\n      }\n\n      var transforms = [];\n\n      if (scaleToFit) {\n        var lineWidth = wordsByLines[0].width;\n        var width = this.props.width;\n        transforms.push(\"scale(\".concat((isNumber(width) ? width / lineWidth : 1) / lineWidth, \")\"));\n      }\n\n      if (angle) {\n        transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n      }\n\n      if (transforms.length) {\n        textProps.transform = transforms.join(' ');\n      }\n\n      return /*#__PURE__*/React.createElement(\"text\", _extends({}, filterProps(textProps, true), {\n        x: x,\n        y: y,\n        className: classNames('recharts-text', className),\n        textAnchor: textAnchor\n      }), wordsByLines.map(function (line, index) {\n        return (\n          /*#__PURE__*/\n          // eslint-disable-next-line react/no-array-index-key\n          React.createElement(\"tspan\", {\n            x: x,\n            dy: index === 0 ? startDy : lineHeight,\n            key: index\n          }, line.words.join(breakAll ? '' : ' '))\n        );\n      }));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.width !== prevState.prevWidth || nextProps.scaleToFit !== prevState.prevScaleToFit || nextProps.children !== prevState.prevChildren || nextProps.style !== prevState.prevStyle || nextProps.breakAll !== prevState.prevBreakAll) {\n        var needCalculate = nextProps.children !== prevState.prevChildren || nextProps.style !== prevState.prevStyle || nextProps.breakAll !== prevState.prevBreakAll;\n        return {\n          prevWidth: nextProps.width,\n          prevScaleToFit: nextProps.scaleToFit,\n          prevChildren: nextProps.children,\n          prevStyle: nextProps.style,\n          wordsByLines: getWordsByLines(nextProps, needCalculate)\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Text;\n}(Component);\nText.defaultProps = {\n  x: 0,\n  y: 0,\n  lineHeight: '1em',\n  capHeight: '0.71em',\n  // Magic number from d3\n  scaleToFit: false,\n  textAnchor: 'start',\n  verticalAnchor: 'end' // Maintain compat with existing charts / default SVG behavior\n\n};", "function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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\nimport { Global } from './Global';\nvar stringCache = {\n  widthCache: {},\n  cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n  position: 'absolute',\n  top: '-20000px',\n  left: 0,\n  padding: 0,\n  margin: 0,\n  border: 'none',\n  whiteSpace: 'pre'\n};\nvar STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'lineHeight', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];\nvar MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\n\nfunction autoCompleteStyle(name, value) {\n  if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n    return \"\".concat(value, \"px\");\n  }\n\n  return value;\n}\n\nfunction camelToMiddleLine(text) {\n  var strs = text.split('');\n  var formatStrs = strs.reduce(function (result, entry) {\n    if (entry === entry.toUpperCase()) {\n      return [].concat(_toConsumableArray(result), ['-', entry.toLowerCase()]);\n    }\n\n    return [].concat(_toConsumableArray(result), [entry]);\n  }, []);\n  return formatStrs.join('');\n}\n\nexport var getStyleString = function getStyleString(style) {\n  return Object.keys(style).reduce(function (result, s) {\n    return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n  }, '');\n};\nexport var getStringSize = function getStringSize(text) {\n  var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (text === undefined || text === null || Global.isSsr) {\n    return {\n      width: 0,\n      height: 0\n    };\n  }\n\n  var str = \"\".concat(text);\n  var styleString = getStyleString(style);\n  var cacheKey = \"\".concat(str, \"-\").concat(styleString);\n\n  if (stringCache.widthCache[cacheKey]) {\n    return stringCache.widthCache[cacheKey];\n  }\n\n  try {\n    var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n\n    if (!measurementSpan) {\n      measurementSpan = document.createElement('span');\n      measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);\n      measurementSpan.setAttribute('aria-hidden', 'true');\n      document.body.appendChild(measurementSpan);\n    } // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n    // https://en.wikipedia.org/wiki/Content_Security_Policy\n\n\n    var measurementSpanStyle = _objectSpread(_objectSpread({}, SPAN_STYLE), style);\n\n    Object.keys(measurementSpanStyle).map(function (styleKey) {\n      measurementSpan.style[styleKey] = measurementSpanStyle[styleKey];\n      return styleKey;\n    });\n    measurementSpan.textContent = str;\n    var rect = measurementSpan.getBoundingClientRect();\n    var result = {\n      width: rect.width,\n      height: rect.height\n    };\n    stringCache.widthCache[cacheKey] = result;\n\n    if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n      stringCache.cacheCount = 0;\n      stringCache.widthCache = {};\n    }\n\n    return result;\n  } catch (e) {\n    return {\n      width: 0,\n      height: 0\n    };\n  }\n};\nexport var getOffset = function getOffset(el) {\n  var html = el.ownerDocument.documentElement;\n  var box = {\n    top: 0,\n    left: 0\n  }; // If we don't have gBCR, just use 0,0 rather than error\n  // BlackBerry 5, iOS 3 (original iPhone)\n\n  if (typeof el.getBoundingClientRect !== 'undefined') {\n    box = el.getBoundingClientRect();\n  }\n\n  return {\n    top: box.top + window.pageYOffset - html.clientTop,\n    left: box.left + window.pageXOffset - html.clientLeft\n  };\n};\n/**\n * Calculate coordinate of cursor in chart\n * @param  {Object} event  Event object\n * @param  {Object} offset The offset of main part in the svg element\n * @return {Object}        {chartX, chartY}\n */\n\nexport var calculateChartCoordinate = function calculateChartCoordinate(event, offset) {\n  return {\n    chartX: Math.round(event.pageX - offset.left),\n    chartY: Math.round(event.pageY - offset.top)\n  };\n};", "import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { cloneElement, isValidElement, createElement } from 'react';\nimport classNames from 'classnames';\nimport { Text } from './Text';\nimport { findAllByType } from '../util/ReactUtils';\nimport { isNumOrStr, isNumber, isPercent, getPercentValue, uniqueId, mathSign } from '../util/DataUtils';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { filterProps } from '../util/types';\n\nvar getLabel = function getLabel(props) {\n  var value = props.value,\n      formatter = props.formatter;\n  var label = _isNil(props.children) ? value : props.children;\n\n  if (_isFunction(formatter)) {\n    return formatter(label);\n  }\n\n  return label;\n};\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n  var sign = mathSign(endAngle - startAngle);\n  var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n  return sign * deltaAngle;\n};\n\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n  var position = labelProps.position,\n      viewBox = labelProps.viewBox,\n      offset = labelProps.offset,\n      className = labelProps.className;\n  var _ref = viewBox,\n      cx = _ref.cx,\n      cy = _ref.cy,\n      innerRadius = _ref.innerRadius,\n      outerRadius = _ref.outerRadius,\n      startAngle = _ref.startAngle,\n      endAngle = _ref.endAngle,\n      clockWise = _ref.clockWise;\n  var radius = (innerRadius + outerRadius) / 2;\n  var deltaAngle = getDeltaAngle(startAngle, endAngle);\n  var sign = deltaAngle >= 0 ? 1 : -1;\n  var labelAngle, direction;\n\n  if (position === 'insideStart') {\n    labelAngle = startAngle + sign * offset;\n    direction = clockWise;\n  } else if (position === 'insideEnd') {\n    labelAngle = endAngle - sign * offset;\n    direction = !clockWise;\n  } else if (position === 'end') {\n    labelAngle = endAngle + sign * offset;\n    direction = clockWise;\n  }\n\n  direction = deltaAngle <= 0 ? direction : !direction;\n  var startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n  var endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n  var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n    A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n    \").concat(endPoint.x, \",\").concat(endPoint.y);\n  var id = _isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n  return /*#__PURE__*/React.createElement(\"text\", _extends({}, attrs, {\n    dominantBaseline: \"central\",\n    className: classNames('recharts-radial-bar-label', className)\n  }), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n    id: id,\n    d: path\n  })), /*#__PURE__*/React.createElement(\"textPath\", {\n    xlinkHref: \"#\".concat(id)\n  }, label));\n};\n\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n  var viewBox = props.viewBox,\n      offset = props.offset,\n      position = props.position;\n  var _ref2 = viewBox,\n      cx = _ref2.cx,\n      cy = _ref2.cy,\n      innerRadius = _ref2.innerRadius,\n      outerRadius = _ref2.outerRadius,\n      startAngle = _ref2.startAngle,\n      endAngle = _ref2.endAngle;\n  var midAngle = (startAngle + endAngle) / 2;\n\n  if (position === 'outside') {\n    var _polarToCartesian = polarToCartesian(cx, cy, outerRadius + offset, midAngle),\n        _x = _polarToCartesian.x,\n        _y = _polarToCartesian.y;\n\n    return {\n      x: _x,\n      y: _y,\n      textAnchor: _x >= cx ? 'start' : 'end',\n      verticalAnchor: 'middle'\n    };\n  }\n\n  if (position === 'center') {\n    return {\n      x: cx,\n      y: cy,\n      textAnchor: 'middle',\n      verticalAnchor: 'middle'\n    };\n  }\n\n  if (position === 'centerTop') {\n    return {\n      x: cx,\n      y: cy,\n      textAnchor: 'middle',\n      verticalAnchor: 'start'\n    };\n  }\n\n  if (position === 'centerBottom') {\n    return {\n      x: cx,\n      y: cy,\n      textAnchor: 'middle',\n      verticalAnchor: 'end'\n    };\n  }\n\n  var r = (innerRadius + outerRadius) / 2;\n\n  var _polarToCartesian2 = polarToCartesian(cx, cy, r, midAngle),\n      x = _polarToCartesian2.x,\n      y = _polarToCartesian2.y;\n\n  return {\n    x: x,\n    y: y,\n    textAnchor: 'middle',\n    verticalAnchor: 'middle'\n  };\n};\n\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n  var viewBox = props.viewBox,\n      parentViewBox = props.parentViewBox,\n      offset = props.offset,\n      position = props.position;\n  var _ref3 = viewBox,\n      x = _ref3.x,\n      y = _ref3.y,\n      width = _ref3.width,\n      height = _ref3.height; // Define vertical offsets and position inverts based on the value being positive or negative\n\n  var verticalSign = height >= 0 ? 1 : -1;\n  var verticalOffset = verticalSign * offset;\n  var verticalEnd = verticalSign > 0 ? 'end' : 'start';\n  var verticalStart = verticalSign > 0 ? 'start' : 'end'; // Define horizontal offsets and position inverts based on the value being positive or negative\n\n  var horizontalSign = width >= 0 ? 1 : -1;\n  var horizontalOffset = horizontalSign * offset;\n  var horizontalEnd = horizontalSign > 0 ? 'end' : 'start';\n  var horizontalStart = horizontalSign > 0 ? 'start' : 'end';\n\n  if (position === 'top') {\n    var attrs = {\n      x: x + width / 2,\n      y: y - verticalSign * offset,\n      textAnchor: 'middle',\n      verticalAnchor: verticalEnd\n    };\n    return _objectSpread(_objectSpread({}, attrs), parentViewBox ? {\n      height: Math.max(y - parentViewBox.y, 0),\n      width: width\n    } : {});\n  }\n\n  if (position === 'bottom') {\n    var _attrs = {\n      x: x + width / 2,\n      y: y + height + verticalOffset,\n      textAnchor: 'middle',\n      verticalAnchor: verticalStart\n    };\n    return _objectSpread(_objectSpread({}, _attrs), parentViewBox ? {\n      height: Math.max(parentViewBox.y + parentViewBox.height - (y + height), 0),\n      width: width\n    } : {});\n  }\n\n  if (position === 'left') {\n    var _attrs2 = {\n      x: x - horizontalOffset,\n      y: y + height / 2,\n      textAnchor: horizontalEnd,\n      verticalAnchor: 'middle'\n    };\n    return _objectSpread(_objectSpread({}, _attrs2), parentViewBox ? {\n      width: Math.max(_attrs2.x - parentViewBox.x, 0),\n      height: height\n    } : {});\n  }\n\n  if (position === 'right') {\n    var _attrs3 = {\n      x: x + width + horizontalOffset,\n      y: y + height / 2,\n      textAnchor: horizontalStart,\n      verticalAnchor: 'middle'\n    };\n    return _objectSpread(_objectSpread({}, _attrs3), parentViewBox ? {\n      width: Math.max(parentViewBox.x + parentViewBox.width - _attrs3.x, 0),\n      height: height\n    } : {});\n  }\n\n  var sizeAttrs = parentViewBox ? {\n    width: width,\n    height: height\n  } : {};\n\n  if (position === 'insideLeft') {\n    return _objectSpread({\n      x: x + horizontalOffset,\n      y: y + height / 2,\n      textAnchor: horizontalStart,\n      verticalAnchor: 'middle'\n    }, sizeAttrs);\n  }\n\n  if (position === 'insideRight') {\n    return _objectSpread({\n      x: x + width - horizontalOffset,\n      y: y + height / 2,\n      textAnchor: horizontalEnd,\n      verticalAnchor: 'middle'\n    }, sizeAttrs);\n  }\n\n  if (position === 'insideTop') {\n    return _objectSpread({\n      x: x + width / 2,\n      y: y + verticalOffset,\n      textAnchor: 'middle',\n      verticalAnchor: verticalStart\n    }, sizeAttrs);\n  }\n\n  if (position === 'insideBottom') {\n    return _objectSpread({\n      x: x + width / 2,\n      y: y + height - verticalOffset,\n      textAnchor: 'middle',\n      verticalAnchor: verticalEnd\n    }, sizeAttrs);\n  }\n\n  if (position === 'insideTopLeft') {\n    return _objectSpread({\n      x: x + horizontalOffset,\n      y: y + verticalOffset,\n      textAnchor: horizontalStart,\n      verticalAnchor: verticalStart\n    }, sizeAttrs);\n  }\n\n  if (position === 'insideTopRight') {\n    return _objectSpread({\n      x: x + width - horizontalOffset,\n      y: y + verticalOffset,\n      textAnchor: horizontalEnd,\n      verticalAnchor: verticalStart\n    }, sizeAttrs);\n  }\n\n  if (position === 'insideBottomLeft') {\n    return _objectSpread({\n      x: x + horizontalOffset,\n      y: y + height - verticalOffset,\n      textAnchor: horizontalStart,\n      verticalAnchor: verticalEnd\n    }, sizeAttrs);\n  }\n\n  if (position === 'insideBottomRight') {\n    return _objectSpread({\n      x: x + width - horizontalOffset,\n      y: y + height - verticalOffset,\n      textAnchor: horizontalEnd,\n      verticalAnchor: verticalEnd\n    }, sizeAttrs);\n  }\n\n  if (_isObject(position) && (isNumber(position.x) || isPercent(position.x)) && (isNumber(position.y) || isPercent(position.y))) {\n    return _objectSpread({\n      x: x + getPercentValue(position.x, width),\n      y: y + getPercentValue(position.y, height),\n      textAnchor: 'end',\n      verticalAnchor: 'end'\n    }, sizeAttrs);\n  }\n\n  return _objectSpread({\n    x: x + width / 2,\n    y: y + height / 2,\n    textAnchor: 'middle',\n    verticalAnchor: 'middle'\n  }, sizeAttrs);\n};\n\nvar isPolar = function isPolar(viewBox) {\n  return isNumber(viewBox.cx);\n};\n\nexport function Label(props) {\n  var viewBox = props.viewBox,\n      position = props.position,\n      value = props.value,\n      children = props.children,\n      content = props.content,\n      _props$className = props.className,\n      className = _props$className === void 0 ? '' : _props$className,\n      textBreakAll = props.textBreakAll;\n\n  if (!viewBox || _isNil(value) && _isNil(children) && ! /*#__PURE__*/isValidElement(content) && !_isFunction(content)) {\n    return null;\n  }\n\n  if ( /*#__PURE__*/isValidElement(content)) {\n    return /*#__PURE__*/cloneElement(content, props);\n  }\n\n  var label;\n\n  if (_isFunction(content)) {\n    label = /*#__PURE__*/createElement(content, props);\n\n    if ( /*#__PURE__*/isValidElement(label)) {\n      return label;\n    }\n  } else {\n    label = getLabel(props);\n  }\n\n  var isPolarLabel = isPolar(viewBox);\n  var attrs = filterProps(props, true);\n\n  if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n    return renderRadialLabel(props, label, attrs);\n  }\n\n  var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n  return /*#__PURE__*/React.createElement(Text, _extends({\n    className: classNames('recharts-label', className)\n  }, attrs, positionAttrs, {\n    breakAll: textBreakAll\n  }), label);\n}\nLabel.displayName = 'Label';\nLabel.defaultProps = {\n  offset: 5\n};\n\nvar parseViewBox = function parseViewBox(props) {\n  var cx = props.cx,\n      cy = props.cy,\n      angle = props.angle,\n      startAngle = props.startAngle,\n      endAngle = props.endAngle,\n      r = props.r,\n      radius = props.radius,\n      innerRadius = props.innerRadius,\n      outerRadius = props.outerRadius,\n      x = props.x,\n      y = props.y,\n      top = props.top,\n      left = props.left,\n      width = props.width,\n      height = props.height,\n      clockWise = props.clockWise,\n      labelViewBox = props.labelViewBox;\n\n  if (labelViewBox) {\n    return labelViewBox;\n  }\n\n  if (isNumber(width) && isNumber(height)) {\n    if (isNumber(x) && isNumber(y)) {\n      return {\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      };\n    }\n\n    if (isNumber(top) && isNumber(left)) {\n      return {\n        x: top,\n        y: left,\n        width: width,\n        height: height\n      };\n    }\n  }\n\n  if (isNumber(x) && isNumber(y)) {\n    return {\n      x: x,\n      y: y,\n      width: 0,\n      height: 0\n    };\n  }\n\n  if (isNumber(cx) && isNumber(cy)) {\n    return {\n      cx: cx,\n      cy: cy,\n      startAngle: startAngle || angle || 0,\n      endAngle: endAngle || angle || 0,\n      innerRadius: innerRadius || 0,\n      outerRadius: outerRadius || radius || r || 0,\n      clockWise: clockWise\n    };\n  }\n\n  if (props.viewBox) {\n    return props.viewBox;\n  }\n\n  return {};\n};\n\nvar parseLabel = function parseLabel(label, viewBox) {\n  if (!label) {\n    return null;\n  }\n\n  if (label === true) {\n    return /*#__PURE__*/React.createElement(Label, {\n      key: \"label-implicit\",\n      viewBox: viewBox\n    });\n  }\n\n  if (isNumOrStr(label)) {\n    return /*#__PURE__*/React.createElement(Label, {\n      key: \"label-implicit\",\n      viewBox: viewBox,\n      value: label\n    });\n  }\n\n  if ( /*#__PURE__*/isValidElement(label)) {\n    if (label.type === Label) {\n      return /*#__PURE__*/cloneElement(label, {\n        key: 'label-implicit',\n        viewBox: viewBox\n      });\n    }\n\n    return /*#__PURE__*/React.createElement(Label, {\n      key: \"label-implicit\",\n      content: label,\n      viewBox: viewBox\n    });\n  }\n\n  if (_isFunction(label)) {\n    return /*#__PURE__*/React.createElement(Label, {\n      key: \"label-implicit\",\n      content: label,\n      viewBox: viewBox\n    });\n  }\n\n  if (_isObject(label)) {\n    return /*#__PURE__*/React.createElement(Label, _extends({\n      viewBox: viewBox\n    }, label, {\n      key: \"label-implicit\"\n    }));\n  }\n\n  return null;\n};\n\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n  var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n  if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n    return null;\n  }\n\n  var children = parentProps.children;\n  var parentViewBox = parseViewBox(parentProps);\n  var explicitChildren = findAllByType(children, Label.displayName).map(function (child, index) {\n    return /*#__PURE__*/cloneElement(child, {\n      viewBox: viewBox || parentViewBox,\n      key: \"label-\".concat(index)\n    });\n  });\n\n  if (!checkPropsLabel) {\n    return explicitChildren;\n  }\n\n  var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n  return [implicitLabel].concat(_toConsumableArray(explicitChildren));\n};\n\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;", "import _isString from \"lodash/isString\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { Children } from 'react';\nimport { isFragment } from 'react-is';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nvar REACT_BROWSER_EVENT_MAP = {\n  click: 'onClick',\n  mousedown: 'onMouseDown',\n  mouseup: 'onMouseUp',\n  mouseover: 'onMouseOver',\n  mousemove: 'onMouseMove',\n  mouseout: 'onMouseOut',\n  mouseenter: 'onMouseEnter',\n  mouseleave: 'onMouseLeave',\n  touchcancel: 'onTouchCancel',\n  touchend: 'onTouchEnd',\n  touchmove: 'onTouchMove',\n  touchstart: 'onTouchStart'\n};\nexport var SCALE_TYPES = ['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold'];\nexport var LEGEND_TYPES = ['plainline', 'line', 'square', 'rect', 'circle', 'cross', 'diamond', 'star', 'triangle', 'wye', 'none'];\nexport var TOOLTIP_TYPES = ['none'];\n/**\n * Get the display name of a component\n * @param  {Object} Comp Specified Component\n * @return {String}      Display name of Component\n */\n\nexport var getDisplayName = function getDisplayName(Comp) {\n  if (typeof Comp === 'string') {\n    return Comp;\n  }\n\n  if (!Comp) {\n    return '';\n  }\n\n  return Comp.displayName || Comp.name || 'Component';\n}; // `toArray` gets called multiple times during the render\n// so we can memoize last invocation (since reference to `children` is the same)\n\nvar lastChildren = null;\nvar lastResult = null;\nexport var toArray = function toArray(children) {\n  if (children === lastChildren && _isArray(lastResult)) {\n    return lastResult;\n  }\n\n  var result = [];\n  Children.forEach(children, function (child) {\n    if (_isNil(child)) return;\n\n    if (isFragment(child)) {\n      result = result.concat(toArray(child.props.children));\n    } else {\n      result.push(child);\n    }\n  });\n  lastResult = result;\n  lastChildren = children;\n  return result;\n};\n/*\n * Find and return all matched children by type. `type` can be a React element class or\n * string\n */\n\nexport var findAllByType = function findAllByType(children, type) {\n  var result = [];\n  var types = [];\n\n  if (_isArray(type)) {\n    types = type.map(function (t) {\n      return getDisplayName(t);\n    });\n  } else {\n    types = [getDisplayName(type)];\n  }\n\n  toArray(children).forEach(function (child) {\n    var childType = _get(child, 'type.displayName') || _get(child, 'type.name');\n\n    if (types.indexOf(childType) !== -1) {\n      result.push(child);\n    }\n  });\n  return result;\n};\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` can be a React element class or string.\n */\n\nexport var findChildByType = function findChildByType(children, type) {\n  var result = findAllByType(children, type);\n  return result && result[0];\n};\n/*\n * Create a new array of children excluding the ones matched the type\n */\n\nexport var withoutType = function withoutType(children, type) {\n  var newChildren = [];\n  var types;\n\n  if (_isArray(type)) {\n    types = type.map(function (t) {\n      return getDisplayName(t);\n    });\n  } else {\n    types = [getDisplayName(type)];\n  }\n\n  toArray(children).forEach(function (child) {\n    var displayName = _get(child, 'type.displayName');\n\n    if (displayName && types.indexOf(displayName) !== -1) {\n      return;\n    }\n\n    newChildren.push(child);\n  });\n  return newChildren;\n};\n/**\n * validate the width and height props of a chart element\n * @param  {Object} el A chart element\n * @return {Boolean}   true If the props width and height are number, and greater than 0\n */\n\nexport var validateWidthHeight = function validateWidthHeight(el) {\n  if (!el || !el.props) {\n    return false;\n  }\n\n  var _el$props = el.props,\n      width = _el$props.width,\n      height = _el$props.height;\n\n  if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n    return false;\n  }\n\n  return true;\n};\nvar SVG_TAGS = ['a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColormatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-url', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'lineGradient', 'marker', 'mask', 'metadata', 'missing-glyph', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', 'svg', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'];\n\nvar isSvgElement = function isSvgElement(child) {\n  return child && child.type && _isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n};\n/**\n * Filter all the svg elements of children\n * @param  {Array} children The children of a react element\n * @return {Array}          All the svg elements\n */\n\n\nexport var filterSvgElements = function filterSvgElements(children) {\n  var svgElements = [];\n  toArray(children).forEach(function (entry) {\n    if (isSvgElement(entry)) {\n      svgElements.push(entry);\n    }\n  });\n  return svgElements;\n};\n/**\n * Wether props of children changed\n * @param  {Object} nextChildren The latest children\n * @param  {Object} prevChildren The prev children\n * @return {Boolean}             equal or not\n */\n\nexport var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n  if (nextChildren === prevChildren) {\n    return true;\n  }\n\n  var count = Children.count(nextChildren);\n\n  if (count !== Children.count(prevChildren)) {\n    return false;\n  }\n\n  if (count === 0) {\n    return true;\n  }\n\n  if (count === 1) {\n    // eslint-disable-next-line no-use-before-define,@typescript-eslint/no-use-before-define\n    return isSingleChildEqual(_isArray(nextChildren) ? nextChildren[0] : nextChildren, _isArray(prevChildren) ? prevChildren[0] : prevChildren);\n  }\n\n  for (var i = 0; i < count; i++) {\n    var nextChild = nextChildren[i];\n    var prevChild = prevChildren[i];\n\n    if (_isArray(nextChild) || _isArray(prevChild)) {\n      if (!isChildrenEqual(nextChild, prevChild)) {\n        return false;\n      } // eslint-disable-next-line no-use-before-define,@typescript-eslint/no-use-before-define\n\n    } else if (!isSingleChildEqual(nextChild, prevChild)) {\n      return false;\n    }\n  }\n\n  return true;\n};\nexport var isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n  if (_isNil(nextChild) && _isNil(prevChild)) {\n    return true;\n  }\n\n  if (!_isNil(nextChild) && !_isNil(prevChild)) {\n    var _ref = nextChild.props || {},\n        nextChildren = _ref.children,\n        nextProps = _objectWithoutProperties(_ref, [\"children\"]);\n\n    var _ref2 = prevChild.props || {},\n        prevChildren = _ref2.children,\n        prevProps = _objectWithoutProperties(_ref2, [\"children\"]);\n\n    if (nextChildren && prevChildren) {\n      // eslint-disable-next-line no-use-before-define\n      return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n    }\n\n    if (!nextChildren && !prevChildren) {\n      return shallowEqual(nextProps, prevProps);\n    }\n\n    return false;\n  }\n\n  return false;\n};\nexport var renderByOrder = function renderByOrder(children, renderMap) {\n  var elements = [];\n  var record = {};\n  toArray(children).forEach(function (child, index) {\n    if (isSvgElement(child)) {\n      elements.push(child);\n    } else if (child) {\n      var displayName = getDisplayName(child.type);\n\n      var _ref3 = renderMap[displayName] || {},\n          handler = _ref3.handler,\n          once = _ref3.once;\n\n      if (handler && (!once || !record[displayName])) {\n        var results = handler(child, displayName, index);\n        elements.push(results);\n        record[displayName] = true;\n      }\n    }\n  });\n  return elements;\n};\nexport var getReactEventByType = function getReactEventByType(e) {\n  var type = e && e.type;\n\n  if (type && REACT_BROWSER_EVENT_MAP[type]) {\n    return REACT_BROWSER_EVENT_MAP[type];\n  }\n\n  return null;\n};\nexport var parseChildIndex = function parseChildIndex(child, children) {\n  return toArray(children).indexOf(child);\n};", "export function shallowEqual(a, b) {\n  /* eslint-disable no-restricted-syntax */\n  for (var key in a) {\n    if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n      return false;\n    }\n  }\n\n  for (var _key in b) {\n    if ({}.hasOwnProperty.call(b, _key) && !{}.hasOwnProperty.call(a, _key)) {\n      return false;\n    }\n  }\n\n  return true;\n}", "import _isNil from \"lodash/isNil\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nexport var RADIAN = Math.PI / 180;\nexport var degreeToRadian = function degreeToRadian(angle) {\n  return angle * Math.PI / 180;\n};\nexport var radianToDegree = function radianToDegree(angleInRadian) {\n  return angleInRadian * 180 / Math.PI;\n};\nexport var polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n  return {\n    x: cx + Math.cos(-RADIAN * angle) * radius,\n    y: cy + Math.sin(-RADIAN * angle) * radius\n  };\n};\nexport var getMaxRadius = function getMaxRadius(width, height) {\n  var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n  return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n/**\n * Calculate the scale function, position, width, height of axes\n * @param  {Object} props     Latest props\n * @param  {Object} axisMap   The configuration of axes\n * @param  {Object} offset    The offset of main part in the svg element\n * @param  {Object} axisType  The type of axes, radius-axis or angle-axis\n * @param  {String} chartName The name of chart\n * @return {Object} Configuration\n */\n\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n  var width = props.width,\n      height = props.height;\n  var startAngle = props.startAngle,\n      endAngle = props.endAngle;\n  var cx = getPercentValue(props.cx, width, width / 2);\n  var cy = getPercentValue(props.cy, height, height / 2);\n  var maxRadius = getMaxRadius(width, height, offset);\n  var innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n  var outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n  var ids = Object.keys(axisMap);\n  return ids.reduce(function (result, id) {\n    var axis = axisMap[id];\n    var domain = axis.domain,\n        reversed = axis.reversed;\n    var range;\n\n    if (_isNil(axis.range)) {\n      if (axisType === 'angleAxis') {\n        range = [startAngle, endAngle];\n      } else if (axisType === 'radiusAxis') {\n        range = [innerRadius, outerRadius];\n      }\n\n      if (reversed) {\n        range = [range[1], range[0]];\n      }\n    } else {\n      range = axis.range;\n      var _range = range;\n\n      var _range2 = _slicedToArray(_range, 2);\n\n      startAngle = _range2[0];\n      endAngle = _range2[1];\n    }\n\n    var _parseScale = parseScale(axis, chartName),\n        realScaleType = _parseScale.realScaleType,\n        scale = _parseScale.scale;\n\n    scale.domain(domain).range(range);\n    checkDomainOfScale(scale);\n    var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n      realScaleType: realScaleType\n    }));\n\n    var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n      range: range,\n      radius: outerRadius,\n      realScaleType: realScaleType,\n      scale: scale,\n      cx: cx,\n      cy: cy,\n      innerRadius: innerRadius,\n      outerRadius: outerRadius,\n      startAngle: startAngle,\n      endAngle: endAngle\n    });\n\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n  }, {});\n};\nexport var distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n  var x1 = point.x,\n      y1 = point.y;\n  var x2 = anotherPoint.x,\n      y2 = anotherPoint.y;\n  return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nexport var getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n  var x = _ref.x,\n      y = _ref.y;\n  var cx = _ref2.cx,\n      cy = _ref2.cy;\n  var radius = distanceBetweenPoints({\n    x: x,\n    y: y\n  }, {\n    x: cx,\n    y: cy\n  });\n\n  if (radius <= 0) {\n    return {\n      radius: radius\n    };\n  }\n\n  var cos = (x - cx) / radius;\n  var angleInRadian = Math.acos(cos);\n\n  if (y > cy) {\n    angleInRadian = 2 * Math.PI - angleInRadian;\n  }\n\n  return {\n    radius: radius,\n    angle: radianToDegree(angleInRadian),\n    angleInRadian: angleInRadian\n  };\n};\nexport var formatAngleOfSector = function formatAngleOfSector(_ref3) {\n  var startAngle = _ref3.startAngle,\n      endAngle = _ref3.endAngle;\n  var startCnt = Math.floor(startAngle / 360);\n  var endCnt = Math.floor(endAngle / 360);\n  var min = Math.min(startCnt, endCnt);\n  return {\n    startAngle: startAngle - min * 360,\n    endAngle: endAngle - min * 360\n  };\n};\n\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n  var startAngle = _ref4.startAngle,\n      endAngle = _ref4.endAngle;\n  var startCnt = Math.floor(startAngle / 360);\n  var endCnt = Math.floor(endAngle / 360);\n  var min = Math.min(startCnt, endCnt);\n  return angle + min * 360;\n};\n\nexport var inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n  var x = _ref5.x,\n      y = _ref5.y;\n\n  var _getAngleOfPoint = getAngleOfPoint({\n    x: x,\n    y: y\n  }, sector),\n      radius = _getAngleOfPoint.radius,\n      angle = _getAngleOfPoint.angle;\n\n  var innerRadius = sector.innerRadius,\n      outerRadius = sector.outerRadius;\n\n  if (radius < innerRadius || radius > outerRadius) {\n    return false;\n  }\n\n  if (radius === 0) {\n    return true;\n  }\n\n  var _formatAngleOfSector = formatAngleOfSector(sector),\n      startAngle = _formatAngleOfSector.startAngle,\n      endAngle = _formatAngleOfSector.endAngle;\n\n  var formatAngle = angle;\n  var inRange;\n\n  if (startAngle <= endAngle) {\n    while (formatAngle > endAngle) {\n      formatAngle -= 360;\n    }\n\n    while (formatAngle < startAngle) {\n      formatAngle += 360;\n    }\n\n    inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n  } else {\n    while (formatAngle > startAngle) {\n      formatAngle -= 360;\n    }\n\n    while (formatAngle < endAngle) {\n      formatAngle += 360;\n    }\n\n    inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n  }\n\n  if (inRange) {\n    return _objectSpread(_objectSpread({}, sector), {}, {\n      radius: radius,\n      angle: reverseFormatAngleOfSetor(formatAngle, sector)\n    });\n  }\n\n  return null;\n};", "import _isEqual from \"lodash/isEqual\";\nimport _sortBy from \"lodash/sortBy\";\nimport _isNaN from \"lodash/isNaN\";\nimport _upperFirst from \"lodash/upperFirst\";\nimport _isString from \"lodash/isString\";\nimport _isArray from \"lodash/isArray\";\nimport _max from \"lodash/max\";\nimport _min from \"lodash/min\";\nimport _flatMap from \"lodash/flatMap\";\nimport _isFunction from \"lodash/isFunction\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\nimport * as d3Scales from 'd3-scale';\nimport { stack as shapeStack, stackOrderNone, stackOffsetExpand, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle } from 'd3-shape';\nimport { isNumOrStr, uniqueId, isNumber, getPercentValue, mathSign, findEntryInArray } from './DataUtils';\nimport { Legend } from '../component/Legend';\nimport { findAllByType, findChildByType, getDisplayName } from './ReactUtils'; // TODO: Cause of circular dependency. Needs refactor.\n// import { RadiusAxisProps, AngleAxisProps } from '../polar/types';\n\nimport { filterProps } from './types';\nexport function getValueByDataKey(obj, dataKey, defaultValue) {\n  if (_isNil(obj) || _isNil(dataKey)) {\n    return defaultValue;\n  }\n\n  if (isNumOrStr(dataKey)) {\n    return _get(obj, dataKey, defaultValue);\n  }\n\n  if (_isFunction(dataKey)) {\n    return dataKey(obj);\n  }\n\n  return defaultValue;\n}\n/**\n * Get domain of data by key\n * @param  {Array}   data      The data displayed in the chart\n * @param  {String}  key       The unique key of a group of data\n * @param  {String}  type      The type of axis\n * @param  {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */\n\nexport function getDomainOfDataByKey(data, key, type, filterNil) {\n  var flattenData = _flatMap(data, function (entry) {\n    return getValueByDataKey(entry, key);\n  });\n\n  if (type === 'number') {\n    var domain = flattenData.filter(function (entry) {\n      return isNumber(entry) || parseFloat(entry);\n    });\n    return domain.length ? [_min(domain), _max(domain)] : [Infinity, -Infinity];\n  }\n\n  var validateData = filterNil ? flattenData.filter(function (entry) {\n    return !_isNil(entry);\n  }) : flattenData; // \u652F\u6301Date\u7C7B\u578B\u7684x\u8F74\n\n  return validateData.map(function (entry) {\n    return isNumOrStr(entry) || entry instanceof Date ? entry : '';\n  });\n}\nexport var calculateActiveTickIndex = function calculateActiveTickIndex(coordinate) {\n  var _ticks$length;\n\n  var ticks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var unsortedTicks = arguments.length > 2 ? arguments[2] : undefined;\n  var axis = arguments.length > 3 ? arguments[3] : undefined;\n  var index = -1;\n  var len = (_ticks$length = ticks === null || ticks === void 0 ? void 0 : ticks.length) !== null && _ticks$length !== void 0 ? _ticks$length : 0;\n\n  if (len > 1) {\n    if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n      var range = axis.range; // ticks are distributed in a circle\n\n      for (var i = 0; i < len; i++) {\n        var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n        var cur = unsortedTicks[i].coordinate;\n        var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n        var sameDirectionCoord = void 0;\n\n        if (mathSign(cur - before) !== mathSign(after - cur)) {\n          var diffInterval = [];\n\n          if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n            sameDirectionCoord = after;\n            var curInRange = cur + range[1] - range[0];\n            diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n            diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n          } else {\n            sameDirectionCoord = before;\n            var afterInRange = after + range[1] - range[0];\n            diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n            diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n          }\n\n          var sameInterval = [Math.min(cur, (sameDirectionCoord + cur) / 2), Math.max(cur, (sameDirectionCoord + cur) / 2)];\n\n          if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n            index = unsortedTicks[i].index;\n            break;\n          }\n        } else {\n          var min = Math.min(before, after);\n          var max = Math.max(before, after);\n\n          if (coordinate > (min + cur) / 2 && coordinate <= (max + cur) / 2) {\n            index = unsortedTicks[i].index;\n            break;\n          }\n        }\n      }\n    } else {\n      // ticks are distributed in a single direction\n      for (var _i = 0; _i < len; _i++) {\n        if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n          index = ticks[_i].index;\n          break;\n        }\n      }\n    }\n  } else {\n    index = 0;\n  }\n\n  return index;\n};\n/**\n * Get the main color of each graphic item\n * @param  {ReactElement} item A graphic item\n * @return {String}            Color\n */\n\nexport var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n  var _ref = item,\n      displayName = _ref.type.displayName; // TODO: check if displayName is valid.\n\n  var _item$props = item.props,\n      stroke = _item$props.stroke,\n      fill = _item$props.fill;\n  var result;\n\n  switch (displayName) {\n    case 'Line':\n      result = stroke;\n      break;\n\n    case 'Area':\n    case 'Radar':\n      result = stroke && stroke !== 'none' ? stroke : fill;\n      break;\n\n    default:\n      result = fill;\n      break;\n  }\n\n  return result;\n};\nexport var getLegendProps = function getLegendProps(_ref2) {\n  var children = _ref2.children,\n      formattedGraphicalItems = _ref2.formattedGraphicalItems,\n      legendWidth = _ref2.legendWidth,\n      legendContent = _ref2.legendContent;\n  var legendItem = findChildByType(children, Legend.displayName);\n\n  if (!legendItem) {\n    return null;\n  }\n\n  var legendData;\n\n  if (legendItem.props && legendItem.props.payload) {\n    legendData = legendItem.props && legendItem.props.payload;\n  } else if (legendContent === 'children') {\n    legendData = (formattedGraphicalItems || []).reduce(function (result, _ref3) {\n      var item = _ref3.item,\n          props = _ref3.props;\n      var data = props.sectors || props.data || [];\n      return result.concat(data.map(function (entry) {\n        return {\n          type: legendItem.props.iconType || item.props.legendType,\n          value: entry.name,\n          color: entry.fill,\n          payload: entry\n        };\n      }));\n    }, []);\n  } else {\n    legendData = (formattedGraphicalItems || []).map(function (_ref4) {\n      var item = _ref4.item;\n      var _item$props2 = item.props,\n          dataKey = _item$props2.dataKey,\n          name = _item$props2.name,\n          legendType = _item$props2.legendType,\n          hide = _item$props2.hide;\n      return {\n        inactive: hide,\n        dataKey: dataKey,\n        type: legendItem.props.iconType || legendType || 'square',\n        color: getMainColorOfGraphicItem(item),\n        value: name || dataKey,\n        payload: item.props\n      };\n    });\n  }\n\n  return _objectSpread(_objectSpread(_objectSpread({}, legendItem.props), Legend.getWithHeight(legendItem, legendWidth)), {}, {\n    payload: legendData,\n    item: legendItem\n  });\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param  {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */\n\nexport var getBarSizeList = function getBarSizeList(_ref5) {\n  var globalSize = _ref5.barSize,\n      _ref5$stackGroups = _ref5.stackGroups,\n      stackGroups = _ref5$stackGroups === void 0 ? {} : _ref5$stackGroups;\n\n  if (!stackGroups) {\n    return {};\n  }\n\n  var result = {};\n  var numericAxisIds = Object.keys(stackGroups);\n\n  for (var i = 0, len = numericAxisIds.length; i < len; i++) {\n    var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n    var stackIds = Object.keys(sgs);\n\n    for (var j = 0, sLen = stackIds.length; j < sLen; j++) {\n      var _sgs$stackIds$j = sgs[stackIds[j]],\n          items = _sgs$stackIds$j.items,\n          cateAxisId = _sgs$stackIds$j.cateAxisId;\n      var barItems = items.filter(function (item) {\n        return getDisplayName(item.type).indexOf('Bar') >= 0;\n      });\n\n      if (barItems && barItems.length) {\n        var selfSize = barItems[0].props.barSize;\n        var cateId = barItems[0].props[cateAxisId];\n\n        if (!result[cateId]) {\n          result[cateId] = [];\n        }\n\n        result[cateId].push({\n          item: barItems[0],\n          stackList: barItems.slice(1),\n          barSize: _isNil(selfSize) ? globalSize : selfSize\n        });\n      }\n    }\n  }\n\n  return result;\n};\n/**\n * Calculate the size of each bar and the gap between two bars\n * @param  {Number} bandSize  The size of each category\n * @param  {sizeList} sizeList  The size of all groups\n * @param  {maxBarSize} maxBarSize The maximum size of bar\n * @return {Number} The size of each bar and the gap between two bars\n */\n\nexport var getBarPosition = function getBarPosition(_ref6) {\n  var barGap = _ref6.barGap,\n      barCategoryGap = _ref6.barCategoryGap,\n      bandSize = _ref6.bandSize,\n      _ref6$sizeList = _ref6.sizeList,\n      sizeList = _ref6$sizeList === void 0 ? [] : _ref6$sizeList,\n      maxBarSize = _ref6.maxBarSize;\n  var len = sizeList.length;\n  if (len < 1) return null;\n  var realBarGap = getPercentValue(barGap, bandSize, 0, true);\n  var result; // whether or not is barSize setted by user\n\n  if (sizeList[0].barSize === +sizeList[0].barSize) {\n    var useFull = false;\n    var fullBarSize = bandSize / len;\n    var sum = sizeList.reduce(function (res, entry) {\n      return res + entry.barSize || 0;\n    }, 0);\n    sum += (len - 1) * realBarGap;\n\n    if (sum >= bandSize) {\n      sum -= (len - 1) * realBarGap;\n      realBarGap = 0;\n    }\n\n    if (sum >= bandSize && fullBarSize > 0) {\n      useFull = true;\n      fullBarSize *= 0.9;\n      sum = len * fullBarSize;\n    }\n\n    var offset = (bandSize - sum) / 2 >> 0;\n    var prev = {\n      offset: offset - realBarGap,\n      size: 0\n    };\n    result = sizeList.reduce(function (res, entry) {\n      var newRes = [].concat(_toConsumableArray(res), [{\n        item: entry.item,\n        position: {\n          offset: prev.offset + prev.size + realBarGap,\n          size: useFull ? fullBarSize : entry.barSize\n        }\n      }]);\n      prev = newRes[newRes.length - 1].position;\n\n      if (entry.stackList && entry.stackList.length) {\n        entry.stackList.forEach(function (item) {\n          newRes.push({\n            item: item,\n            position: prev\n          });\n        });\n      }\n\n      return newRes;\n    }, []);\n  } else {\n    var _offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n\n    if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n      realBarGap = 0;\n    }\n\n    var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n\n    if (originalSize > 1) {\n      originalSize >>= 0;\n    }\n\n    var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n    result = sizeList.reduce(function (res, entry, i) {\n      var newRes = [].concat(_toConsumableArray(res), [{\n        item: entry.item,\n        position: {\n          offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n          size: size\n        }\n      }]);\n\n      if (entry.stackList && entry.stackList.length) {\n        entry.stackList.forEach(function (item) {\n          newRes.push({\n            item: item,\n            position: newRes[newRes.length - 1].position\n          });\n        });\n      }\n\n      return newRes;\n    }, []);\n  }\n\n  return result;\n};\nexport var appendOffsetOfLegend = function appendOffsetOfLegend(offset, items, props, legendBox) {\n  var children = props.children,\n      width = props.width,\n      margin = props.margin;\n  var legendWidth = width - (margin.left || 0) - (margin.right || 0); // const legendHeight = height - (margin.top || 0) - (margin.bottom || 0);\n\n  var legendProps = getLegendProps({\n    children: children,\n    legendWidth: legendWidth\n  });\n  var newOffset = offset;\n\n  if (legendProps) {\n    var box = legendBox || {};\n    var align = legendProps.align,\n        verticalAlign = legendProps.verticalAlign,\n        layout = legendProps.layout;\n\n    if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'center') && isNumber(offset[align])) {\n      newOffset = _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, align, newOffset[align] + (box.width || 0)));\n    }\n\n    if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && isNumber(offset[verticalAlign])) {\n      newOffset = _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, verticalAlign, newOffset[verticalAlign] + (box.height || 0)));\n    }\n  }\n\n  return newOffset;\n};\n\nvar isErrorBarRelevantForAxis = function isErrorBarRelevantForAxis(layout, axisType, direction) {\n  if (_isNil(axisType)) {\n    return true;\n  }\n\n  if (layout === 'horizontal') {\n    return axisType === 'yAxis';\n  }\n\n  if (layout === 'vertical') {\n    return axisType === 'xAxis';\n  }\n\n  if (direction === 'x') {\n    return axisType === 'xAxis';\n  }\n\n  if (direction === 'y') {\n    return axisType === 'yAxis';\n  }\n\n  return true;\n};\n\nexport var getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, layout, axisType) {\n  var children = item.props.children;\n  var errorBars = findAllByType(children, 'ErrorBar').filter(function (errorBarChild) {\n    return isErrorBarRelevantForAxis(layout, axisType, errorBarChild.props.direction);\n  });\n\n  if (errorBars && errorBars.length) {\n    var keys = errorBars.map(function (errorBarChild) {\n      return errorBarChild.props.dataKey;\n    });\n    return data.reduce(function (result, entry) {\n      var entryValue = getValueByDataKey(entry, dataKey, 0);\n      var mainValue = _isArray(entryValue) ? [_min(entryValue), _max(entryValue)] : [entryValue, entryValue];\n      var errorDomain = keys.reduce(function (prevErrorArr, k) {\n        var errorValue = getValueByDataKey(entry, k, 0);\n        var lowerValue = mainValue[0] - Math.abs(_isArray(errorValue) ? errorValue[0] : errorValue);\n        var upperValue = mainValue[1] + Math.abs(_isArray(errorValue) ? errorValue[1] : errorValue);\n        return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n      }, [Infinity, -Infinity]);\n      return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n    }, [Infinity, -Infinity]);\n  }\n\n  return null;\n};\nexport var parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType, layout) {\n  var domains = items.map(function (item) {\n    return getDomainOfErrorBars(data, item, dataKey, layout, axisType);\n  }).filter(function (entry) {\n    return !_isNil(entry);\n  });\n\n  if (domains && domains.length) {\n    return domains.reduce(function (result, entry) {\n      return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n    }, [Infinity, -Infinity]);\n  }\n\n  return null;\n};\n/**\n * Get domain of data by the configuration of item element\n * @param  {Array}   data      The data displayed in the chart\n * @param  {Array}   items     The instances of item\n * @param  {String}  type      The type of axis, number - Number Axis, category - Category Axis\n * @param  {LayoutType} layout The type of layout\n * @param  {Boolean} filterNil Whether or not filter nil values\n * @return {Array}        Domain\n */\n\nexport var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, layout, filterNil) {\n  var domains = items.map(function (item) {\n    var dataKey = item.props.dataKey;\n\n    if (type === 'number' && dataKey) {\n      return getDomainOfErrorBars(data, item, dataKey, layout) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n    }\n\n    return getDomainOfDataByKey(data, dataKey, type, filterNil);\n  });\n\n  if (type === 'number') {\n    // Calculate the domain of number axis\n    return domains.reduce(function (result, entry) {\n      return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n    }, [Infinity, -Infinity]);\n  }\n\n  var tag = {}; // Get the union set of category axis\n\n  return domains.reduce(function (result, entry) {\n    for (var i = 0, len = entry.length; i < len; i++) {\n      if (!tag[entry[i]]) {\n        tag[entry[i]] = true;\n        result.push(entry[i]);\n      }\n    }\n\n    return result;\n  }, []);\n};\nexport var isCategoricalAxis = function isCategoricalAxis(layout, axisType) {\n  return layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n};\n/**\n * Calculate the Coordinates of grid\n * @param  {Array} ticks The ticks in axis\n * @param {Number} min   The minimun value of axis\n * @param {Number} max   The maximun value of axis\n * @return {Array}       Coordinates\n */\n\nexport var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, min, max) {\n  var hasMin, hasMax;\n  var values = ticks.map(function (entry) {\n    if (entry.coordinate === min) {\n      hasMin = true;\n    }\n\n    if (entry.coordinate === max) {\n      hasMax = true;\n    }\n\n    return entry.coordinate;\n  });\n\n  if (!hasMin) {\n    values.push(min);\n  }\n\n  if (!hasMax) {\n    values.push(max);\n  }\n\n  return values;\n};\n/**\n * Get the ticks of an axis\n * @param  {Object}  axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array}  Ticks\n */\n\nexport var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n  if (!axis) return null;\n  var scale = axis.scale;\n  var duplicateDomain = axis.duplicateDomain,\n      type = axis.type,\n      range = axis.range;\n  var offsetForBand = axis.realScaleType === 'scaleBand' ? scale.bandwidth() / 2 : 2;\n  var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n  offset = axis.axisType === 'angleAxis' ? mathSign(range[0] - range[1]) * 2 * offset : offset; // The ticks setted by user should only affect the ticks adjacent to axis line\n\n  if (isGrid && (axis.ticks || axis.niceTicks)) {\n    return (axis.ticks || axis.niceTicks).map(function (entry) {\n      var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n      return {\n        coordinate: scale(scaleContent) + offset,\n        value: entry,\n        offset: offset\n      };\n    });\n  } // When axis is a categorial axis, but the type of axis is number or the scale of axis is not \"auto\"\n\n\n  if (axis.isCategorical && axis.categoricalDomain) {\n    return axis.categoricalDomain.map(function (entry, index) {\n      return {\n        coordinate: scale(entry) + offset,\n        value: entry,\n        index: index,\n        offset: offset\n      };\n    });\n  }\n\n  if (scale.ticks && !isAll) {\n    return scale.ticks(axis.tickCount).map(function (entry) {\n      return {\n        coordinate: scale(entry) + offset,\n        value: entry,\n        offset: offset\n      };\n    });\n  } // When axis has duplicated text, serial numbers are used to generate scale\n\n\n  return scale.domain().map(function (entry, index) {\n    return {\n      coordinate: scale(entry) + offset,\n      value: duplicateDomain ? duplicateDomain[entry] : entry,\n      index: index,\n      offset: offset\n    };\n  });\n};\n/**\n * combine the handlers\n * @param  {Function} defaultHandler Internal private handler\n * @param  {Function} parentHandler  Handler function specified in parent component\n * @param  {Function} childHandler   Handler function specified in child component\n * @return {Function}                The combined handler\n */\n\nexport var combineEventHandlers = function combineEventHandlers(defaultHandler, parentHandler, childHandler) {\n  var customizedHandler;\n\n  if (_isFunction(childHandler)) {\n    customizedHandler = childHandler;\n  } else if (_isFunction(parentHandler)) {\n    customizedHandler = parentHandler;\n  }\n\n  if (_isFunction(defaultHandler) || customizedHandler) {\n    return function (arg1, arg2, arg3, arg4) {\n      if (_isFunction(defaultHandler)) {\n        defaultHandler(arg1, arg2, arg3, arg4);\n      }\n\n      if (_isFunction(customizedHandler)) {\n        customizedHandler(arg1, arg2, arg3, arg4);\n      }\n    };\n  }\n\n  return null;\n};\n/**\n * Parse the scale function of axis\n * @param  {Object}   axis          The option of axis\n * @param  {String}   chartType     The displayName of chart\n * @param  {Boolean}  hasBar        if it has a bar\n * @return {Function}               The scale function\n */\n\nexport var parseScale = function parseScale(axis, chartType, hasBar) {\n  var scale = axis.scale,\n      type = axis.type,\n      layout = axis.layout,\n      axisType = axis.axisType;\n\n  if (scale === 'auto') {\n    if (layout === 'radial' && axisType === 'radiusAxis') {\n      return {\n        scale: d3Scales.scaleBand(),\n        realScaleType: 'band'\n      };\n    }\n\n    if (layout === 'radial' && axisType === 'angleAxis') {\n      return {\n        scale: d3Scales.scaleLinear(),\n        realScaleType: 'linear'\n      };\n    }\n\n    if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0 || chartType.indexOf('ComposedChart') >= 0 && !hasBar)) {\n      return {\n        scale: d3Scales.scalePoint(),\n        realScaleType: 'point'\n      };\n    }\n\n    if (type === 'category') {\n      return {\n        scale: d3Scales.scaleBand(),\n        realScaleType: 'band'\n      };\n    }\n\n    return {\n      scale: d3Scales.scaleLinear(),\n      realScaleType: 'linear'\n    };\n  }\n\n  if (_isString(scale)) {\n    var name = \"scale\".concat(_upperFirst(scale));\n    return {\n      scale: (d3Scales[name] || d3Scales.scalePoint)(),\n      realScaleType: d3Scales[name] ? name : 'point'\n    };\n  }\n\n  return _isFunction(scale) ? {\n    scale: scale\n  } : {\n    scale: d3Scales.scalePoint(),\n    realScaleType: 'point'\n  };\n};\nvar EPS = 1e-4;\nexport var checkDomainOfScale = function checkDomainOfScale(scale) {\n  var domain = scale.domain();\n\n  if (!domain || domain.length <= 2) {\n    return;\n  }\n\n  var len = domain.length;\n  var range = scale.range();\n  var min = Math.min(range[0], range[1]) - EPS;\n  var max = Math.max(range[0], range[1]) + EPS;\n  var first = scale(domain[0]);\n  var last = scale(domain[len - 1]);\n\n  if (first < min || first > max || last < min || last > max) {\n    scale.domain([domain[0], domain[len - 1]]);\n  }\n};\nexport var findPositionOfBar = function findPositionOfBar(barPosition, child) {\n  if (!barPosition) {\n    return null;\n  }\n\n  for (var i = 0, len = barPosition.length; i < len; i++) {\n    if (barPosition[i].item === child) {\n      return barPosition[i].position;\n    }\n  }\n\n  return null;\n};\nexport var truncateByDomain = function truncateByDomain(value, domain) {\n  if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n    return value;\n  }\n\n  var min = Math.min(domain[0], domain[1]);\n  var max = Math.max(domain[0], domain[1]);\n  var result = [value[0], value[1]];\n\n  if (!isNumber(value[0]) || value[0] < min) {\n    result[0] = min;\n  }\n\n  if (!isNumber(value[1]) || value[1] > max) {\n    result[1] = max;\n  }\n\n  if (result[0] > max) {\n    result[0] = max;\n  }\n\n  if (result[1] < min) {\n    result[1] = min;\n  }\n\n  return result;\n};\n/* eslint no-param-reassign: 0 */\n\nexport var offsetSign = function offsetSign(series) {\n  var n = series.length;\n\n  if (n <= 0) {\n    return;\n  }\n\n  for (var j = 0, m = series[0].length; j < m; ++j) {\n    var positive = 0;\n    var negative = 0;\n\n    for (var i = 0; i < n; ++i) {\n      var value = _isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n      /* eslint-disable prefer-destructuring */\n\n      if (value >= 0) {\n        series[i][j][0] = positive;\n        series[i][j][1] = positive + value;\n        positive = series[i][j][1];\n      } else {\n        series[i][j][0] = negative;\n        series[i][j][1] = negative + value;\n        negative = series[i][j][1];\n      }\n      /* eslint-enable prefer-destructuring */\n\n    }\n  }\n};\n/* eslint no-param-reassign: 0 */\n\nexport var offsetPositive = function offsetPositive(series) {\n  var n = series.length;\n\n  if (n <= 0) {\n    return;\n  }\n\n  for (var j = 0, m = series[0].length; j < m; ++j) {\n    var positive = 0;\n\n    for (var i = 0; i < n; ++i) {\n      var value = _isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n      /* eslint-disable prefer-destructuring */\n\n      if (value >= 0) {\n        series[i][j][0] = positive;\n        series[i][j][1] = positive + value;\n        positive = series[i][j][1];\n      } else {\n        series[i][j][0] = 0;\n        series[i][j][1] = 0;\n      }\n      /* eslint-enable prefer-destructuring */\n\n    }\n  }\n};\nvar STACK_OFFSET_MAP = {\n  sign: offsetSign,\n  expand: stackOffsetExpand,\n  none: stackOffsetNone,\n  silhouette: stackOffsetSilhouette,\n  wiggle: stackOffsetWiggle,\n  positive: offsetPositive\n};\nexport var getStackedData = function getStackedData(data, stackItems, offsetType) {\n  var dataKeys = stackItems.map(function (item) {\n    return item.props.dataKey;\n  });\n  var stack = shapeStack().keys(dataKeys).value(function (d, key) {\n    return +getValueByDataKey(d, key, 0);\n  }).order(stackOrderNone).offset(STACK_OFFSET_MAP[offsetType]);\n  return stack(data);\n};\nexport var getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n  if (!data) {\n    return null;\n  } // reversing items to affect render order (for layering)\n\n\n  var items = reverseStackOrder ? _items.reverse() : _items;\n  var stackGroups = items.reduce(function (result, item) {\n    var _item$props3 = item.props,\n        stackId = _item$props3.stackId,\n        hide = _item$props3.hide;\n\n    if (hide) {\n      return result;\n    }\n\n    var axisId = item.props[numericAxisId];\n    var parentGroup = result[axisId] || {\n      hasStack: false,\n      stackGroups: {}\n    };\n\n    if (isNumOrStr(stackId)) {\n      var childGroup = parentGroup.stackGroups[stackId] || {\n        numericAxisId: numericAxisId,\n        cateAxisId: cateAxisId,\n        items: []\n      };\n      childGroup.items.push(item);\n      parentGroup.hasStack = true;\n      parentGroup.stackGroups[stackId] = childGroup;\n    } else {\n      parentGroup.stackGroups[uniqueId('_stackId_')] = {\n        numericAxisId: numericAxisId,\n        cateAxisId: cateAxisId,\n        items: [item]\n      };\n    }\n\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, parentGroup));\n  }, {});\n  return Object.keys(stackGroups).reduce(function (result, axisId) {\n    var group = stackGroups[axisId];\n\n    if (group.hasStack) {\n      group.stackGroups = Object.keys(group.stackGroups).reduce(function (res, stackId) {\n        var g = group.stackGroups[stackId];\n        return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, stackId, {\n          numericAxisId: numericAxisId,\n          cateAxisId: cateAxisId,\n          items: g.items,\n          stackedData: getStackedData(data, g.items, offsetType)\n        }));\n      }, {});\n    }\n\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, group));\n  }, {});\n};\n/**\n * get domain of ticks\n * @param  {Array} ticks Ticks of axis\n * @param  {String} type  The type of axis\n * @return {Array} domain\n */\n\nexport var calculateDomainOfTicks = function calculateDomainOfTicks(ticks, type) {\n  if (type === 'number') {\n    return [_min(ticks), _max(ticks)];\n  }\n\n  return ticks;\n};\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts  The configuration of axis\n * @return {Object}      null\n */\n\nexport var getTicksOfScale = function getTicksOfScale(scale, opts) {\n  var realScaleType = opts.realScaleType,\n      type = opts.type,\n      tickCount = opts.tickCount,\n      originalDomain = opts.originalDomain,\n      allowDecimals = opts.allowDecimals;\n  var scaleType = realScaleType || opts.scale;\n\n  if (scaleType !== 'auto' && scaleType !== 'linear') {\n    return null;\n  }\n\n  if (tickCount && type === 'number' && originalDomain && (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')) {\n    // Calculate the ticks by the number of grid when the axis is a number axis\n    var domain = scale.domain();\n\n    if (!domain.length) {\n      return null;\n    }\n\n    var tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n    scale.domain(calculateDomainOfTicks(tickValues, type));\n    return {\n      niceTicks: tickValues\n    };\n  }\n\n  if (tickCount && type === 'number') {\n    var _domain = scale.domain();\n\n    var _tickValues = getTickValuesFixedDomain(_domain, tickCount, allowDecimals);\n\n    return {\n      niceTicks: _tickValues\n    };\n  }\n\n  return null;\n};\nexport var getCateCoordinateOfLine = function getCateCoordinateOfLine(_ref7) {\n  var axis = _ref7.axis,\n      ticks = _ref7.ticks,\n      bandSize = _ref7.bandSize,\n      entry = _ref7.entry,\n      index = _ref7.index,\n      dataKey = _ref7.dataKey;\n\n  if (axis.type === 'category') {\n    // find coordinate of category axis by the value of category\n    if (!axis.allowDuplicatedCategory && axis.dataKey && !_isNil(entry[axis.dataKey])) {\n      var matchedTick = findEntryInArray(ticks, 'value', entry[axis.dataKey]);\n\n      if (matchedTick) {\n        return matchedTick.coordinate + bandSize / 2;\n      }\n    }\n\n    return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n  }\n\n  var value = getValueByDataKey(entry, !_isNil(dataKey) ? dataKey : axis.dataKey);\n  return !_isNil(value) ? axis.scale(value) : null;\n};\nexport var getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref8) {\n  var axis = _ref8.axis,\n      ticks = _ref8.ticks,\n      offset = _ref8.offset,\n      bandSize = _ref8.bandSize,\n      entry = _ref8.entry,\n      index = _ref8.index;\n\n  if (axis.type === 'category') {\n    return ticks[index] ? ticks[index].coordinate + offset : null;\n  }\n\n  var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n  return !_isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nexport var getBaseValueOfBar = function getBaseValueOfBar(_ref9) {\n  var numericAxis = _ref9.numericAxis;\n  var domain = numericAxis.scale.domain();\n\n  if (numericAxis.type === 'number') {\n    var min = Math.min(domain[0], domain[1]);\n    var max = Math.max(domain[0], domain[1]);\n\n    if (min <= 0 && max >= 0) {\n      return 0;\n    }\n\n    if (max < 0) {\n      return max;\n    }\n\n    return min;\n  }\n\n  return domain[0];\n};\nexport var getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n  var stackId = item.props.stackId;\n\n  if (isNumOrStr(stackId)) {\n    var group = stackGroups[stackId];\n\n    if (group && group.items.length) {\n      var itemIndex = -1;\n\n      for (var i = 0, len = group.items.length; i < len; i++) {\n        if (group.items[i] === item) {\n          itemIndex = i;\n          break;\n        }\n      }\n\n      return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n    }\n  }\n\n  return null;\n};\n\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n  return data.reduce(function (result, entry) {\n    return [_min(entry.concat([result[0]]).filter(isNumber)), _max(entry.concat([result[1]]).filter(isNumber))];\n  }, [Infinity, -Infinity]);\n};\n\nexport var getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n  return Object.keys(stackGroups).reduce(function (result, stackId) {\n    var group = stackGroups[stackId];\n    var stackedData = group.stackedData;\n    var domain = stackedData.reduce(function (res, entry) {\n      var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n      return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n    }, [Infinity, -Infinity]);\n    return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n  }, [Infinity, -Infinity]).map(function (result) {\n    return result === Infinity || result === -Infinity ? 0 : result;\n  });\n};\nexport var MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n  if (_isFunction(specifiedDomain)) {\n    return specifiedDomain(dataDomain, allowDataOverflow);\n  }\n\n  if (!_isArray(specifiedDomain)) {\n    return dataDomain;\n  }\n\n  var domain = [];\n  /* eslint-disable prefer-destructuring */\n\n  if (isNumber(specifiedDomain[0])) {\n    domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n  } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n    var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n    domain[0] = dataDomain[0] - value;\n  } else if (_isFunction(specifiedDomain[0])) {\n    domain[0] = specifiedDomain[0](dataDomain[0]);\n  } else {\n    domain[0] = dataDomain[0];\n  }\n\n  if (isNumber(specifiedDomain[1])) {\n    domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n  } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n    var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n\n    domain[1] = dataDomain[1] + _value;\n  } else if (_isFunction(specifiedDomain[1])) {\n    domain[1] = specifiedDomain[1](dataDomain[1]);\n  } else {\n    domain[1] = dataDomain[1];\n  }\n  /* eslint-enable prefer-destructuring */\n\n\n  return domain;\n};\n/**\n * Calculate the size between two category\n * @param  {Object} axis  The options of axis\n * @param  {Array}  ticks The ticks of axis\n * @param  {Boolean} isBar if items in axis are bars\n * @return {Number} Size\n */\n\nexport var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks, isBar) {\n  if (axis && axis.scale && axis.scale.bandwidth) {\n    var bandWidth = axis.scale.bandwidth();\n\n    if (!isBar || bandWidth > 0) {\n      return bandWidth;\n    }\n  }\n\n  if (axis && ticks && ticks.length >= 2) {\n    var orderedTicks = _sortBy(ticks, function (o) {\n      return o.coordinate;\n    });\n\n    var bandSize = Infinity;\n\n    for (var i = 1, len = orderedTicks.length; i < len; i++) {\n      var cur = orderedTicks[i];\n      var prev = orderedTicks[i - 1];\n      bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n    }\n\n    return bandSize === Infinity ? 0 : bandSize;\n  }\n\n  return isBar ? undefined : 0;\n};\n/**\n * parse the domain of a category axis when a domain is specified\n * @param   {Array}        specifiedDomain  The domain specified by users\n * @param   {Array}        calculatedDomain The domain calculated by dateKey\n * @param   {ReactElement} axisChild        The axis element\n * @returns {Array}        domains\n */\n\nexport var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n  if (!specifiedDomain || !specifiedDomain.length) {\n    return calculatedDomain;\n  }\n\n  if (_isEqual(specifiedDomain, _get(axisChild, 'type.defaultProps.domain'))) {\n    return calculatedDomain;\n  }\n\n  return specifiedDomain;\n};\nexport var getTooltipItem = function getTooltipItem(graphicalItem, payload) {\n  var _graphicalItem$props = graphicalItem.props,\n      dataKey = _graphicalItem$props.dataKey,\n      name = _graphicalItem$props.name,\n      unit = _graphicalItem$props.unit,\n      formatter = _graphicalItem$props.formatter,\n      tooltipType = _graphicalItem$props.tooltipType,\n      chartType = _graphicalItem$props.chartType;\n  return _objectSpread(_objectSpread({}, filterProps(graphicalItem)), {}, {\n    dataKey: dataKey,\n    unit: unit,\n    formatter: formatter,\n    name: name || dataKey,\n    color: getMainColorOfGraphicItem(graphicalItem),\n    value: getValueByDataKey(payload, dataKey),\n    type: tooltipType,\n    payload: payload,\n    chartType: chartType\n  });\n};", "function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * @fileOverview calculate tick values of scale\n * @author xile611, arcthur\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { compose, range, memoize, map, reverse } from './util/utils';\nimport Arithmetic from './util/arithmetic';\n/**\n * Calculate a interval of a minimum value and a maximum value\n *\n * @param  {Number} min       The minimum value\n * @param  {Number} max       The maximum value\n * @return {Array} An interval\n */\n\nfunction getValidInterval(_ref) {\n  var _ref2 = _slicedToArray(_ref, 2),\n      min = _ref2[0],\n      max = _ref2[1];\n\n  var validMin = min,\n      validMax = max; // exchange\n\n  if (min > max) {\n    validMin = max;\n    validMax = min;\n  }\n\n  return [validMin, validMax];\n}\n/**\n * Calculate the step which is easy to understand between ticks, like 10, 20, 25\n *\n * @param  {Decimal} roughStep        The rough step calculated by deviding the\n * difference by the tickCount\n * @param  {Boolean} allowDecimals    Allow the ticks to be decimals or not\n * @param  {Integer} correctionFactor A correction factor\n * @return {Decimal} The step which is easy to understand between two ticks\n */\n\n\nfunction getFormatStep(roughStep, allowDecimals, correctionFactor) {\n  if (roughStep.lte(0)) {\n    return new Decimal(0);\n  }\n\n  var digitCount = Arithmetic.getDigitCount(roughStep.toNumber()); // The ratio between the rough step and the smallest number which has a bigger\n  // order of magnitudes than the rough step\n\n  var digitCountValue = new Decimal(10).pow(digitCount);\n  var stepRatio = roughStep.div(digitCountValue); // When an integer and a float multiplied, the accuracy of result may be wrong\n\n  var stepRatioScale = digitCount !== 1 ? 0.05 : 0.1;\n  var amendStepRatio = new Decimal(Math.ceil(stepRatio.div(stepRatioScale).toNumber())).add(correctionFactor).mul(stepRatioScale);\n  var formatStep = amendStepRatio.mul(digitCountValue);\n  return allowDecimals ? formatStep : new Decimal(Math.ceil(formatStep));\n}\n/**\n * calculate the ticks when the minimum value equals to the maximum value\n *\n * @param  {Number}  value         The minimum valuue which is also the maximum value\n * @param  {Integer} tickCount     The count of ticks\n * @param  {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array}                 ticks\n */\n\n\nfunction getTickOfSingleValue(value, tickCount, allowDecimals) {\n  var step = 1; // calculate the middle value of ticks\n\n  var middle = new Decimal(value);\n\n  if (!middle.isint() && allowDecimals) {\n    var absVal = Math.abs(value);\n\n    if (absVal < 1) {\n      // The step should be a float number when the difference is smaller than 1\n      step = new Decimal(10).pow(Arithmetic.getDigitCount(value) - 1);\n      middle = new Decimal(Math.floor(middle.div(step).toNumber())).mul(step);\n    } else if (absVal > 1) {\n      // Return the maximum integer which is smaller than 'value' when 'value' is greater than 1\n      middle = new Decimal(Math.floor(value));\n    }\n  } else if (value === 0) {\n    middle = new Decimal(Math.floor((tickCount - 1) / 2));\n  } else if (!allowDecimals) {\n    middle = new Decimal(Math.floor(value));\n  }\n\n  var middleIndex = Math.floor((tickCount - 1) / 2);\n  var fn = compose(map(function (n) {\n    return middle.add(new Decimal(n - middleIndex).mul(step)).toNumber();\n  }), range);\n  return fn(0, tickCount);\n}\n/**\n * Calculate the step\n *\n * @param  {Number}  min              The minimum value of an interval\n * @param  {Number}  max              The maximum value of an interval\n * @param  {Integer} tickCount        The count of ticks\n * @param  {Boolean} allowDecimals    Allow the ticks to be decimals or not\n * @param  {Number}  correctionFactor A correction factor\n * @return {Object}  The step, minimum value of ticks, maximum value of ticks\n */\n\n\nfunction calculateStep(min, max, tickCount, allowDecimals) {\n  var correctionFactor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\n  // dirty hack (for recharts' test)\n  if (!Number.isFinite((max - min) / (tickCount - 1))) {\n    return {\n      step: new Decimal(0),\n      tickMin: new Decimal(0),\n      tickMax: new Decimal(0)\n    };\n  } // The step which is easy to understand between two ticks\n\n\n  var step = getFormatStep(new Decimal(max).sub(min).div(tickCount - 1), allowDecimals, correctionFactor); // A medial value of ticks\n\n  var middle; // When 0 is inside the interval, 0 should be a tick\n\n  if (min <= 0 && max >= 0) {\n    middle = new Decimal(0);\n  } else {\n    // calculate the middle value\n    middle = new Decimal(min).add(max).div(2); // minus modulo value\n\n    middle = middle.sub(new Decimal(middle).mod(step));\n  }\n\n  var belowCount = Math.ceil(middle.sub(min).div(step).toNumber());\n  var upCount = Math.ceil(new Decimal(max).sub(middle).div(step).toNumber());\n  var scaleCount = belowCount + upCount + 1;\n\n  if (scaleCount > tickCount) {\n    // When more ticks need to cover the interval, step should be bigger.\n    return calculateStep(min, max, tickCount, allowDecimals, correctionFactor + 1);\n  }\n\n  if (scaleCount < tickCount) {\n    // When less ticks can cover the interval, we should add some additional ticks\n    upCount = max > 0 ? upCount + (tickCount - scaleCount) : upCount;\n    belowCount = max > 0 ? belowCount : belowCount + (tickCount - scaleCount);\n  }\n\n  return {\n    step: step,\n    tickMin: middle.sub(new Decimal(belowCount).mul(step)),\n    tickMax: middle.add(new Decimal(upCount).mul(step))\n  };\n}\n/**\n * Calculate the ticks of an interval, the count of ticks will be guraranteed\n *\n * @param  {Number}  min, max      min: The minimum value, max: The maximum value\n * @param  {Integer} tickCount     The count of ticks\n * @param  {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array}   ticks\n */\n\n\nfunction getNiceTickValuesFn(_ref3) {\n  var _ref4 = _slicedToArray(_ref3, 2),\n      min = _ref4[0],\n      max = _ref4[1];\n\n  var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n  var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  // More than two ticks should be return\n  var count = Math.max(tickCount, 2);\n\n  var _getValidInterval = getValidInterval([min, max]),\n      _getValidInterval2 = _slicedToArray(_getValidInterval, 2),\n      cormin = _getValidInterval2[0],\n      cormax = _getValidInterval2[1];\n\n  if (cormin === -Infinity || cormax === Infinity) {\n    var _values = cormax === Infinity ? [cormin].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n      return Infinity;\n    }))) : [].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n      return -Infinity;\n    })), [cormax]);\n\n    return min > max ? reverse(_values) : _values;\n  }\n\n  if (cormin === cormax) {\n    return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n  } // Get the step between two ticks\n\n\n  var _calculateStep = calculateStep(cormin, cormax, count, allowDecimals),\n      step = _calculateStep.step,\n      tickMin = _calculateStep.tickMin,\n      tickMax = _calculateStep.tickMax;\n\n  var values = Arithmetic.rangeStep(tickMin, tickMax.add(new Decimal(0.1).mul(step)), step);\n  return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed\n *\n * @param  {Number}  min, max      min: The minimum value, max: The maximum value\n * @param  {Integer} tickCount     The count of ticks\n * @param  {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array}   ticks\n */\n\n\nfunction getTickValuesFn(_ref5) {\n  var _ref6 = _slicedToArray(_ref5, 2),\n      min = _ref6[0],\n      max = _ref6[1];\n\n  var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n  var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  // More than two ticks should be return\n  var count = Math.max(tickCount, 2);\n\n  var _getValidInterval3 = getValidInterval([min, max]),\n      _getValidInterval4 = _slicedToArray(_getValidInterval3, 2),\n      cormin = _getValidInterval4[0],\n      cormax = _getValidInterval4[1];\n\n  if (cormin === -Infinity || cormax === Infinity) {\n    return [min, max];\n  }\n\n  if (cormin === cormax) {\n    return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n  }\n\n  var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n  var fn = compose(map(function (n) {\n    return new Decimal(cormin).add(new Decimal(n).mul(step)).toNumber();\n  }), range);\n  var values = fn(0, count).filter(function (entry) {\n    return entry >= cormin && entry <= cormax;\n  });\n  return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed,\n * but the domain will be guaranteed\n *\n * @param  {Number}  min, max      min: The minimum value, max: The maximum value\n * @param  {Integer} tickCount     The count of ticks\n * @param  {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array}   ticks\n */\n\n\nfunction getTickValuesFixedDomainFn(_ref7, tickCount) {\n  var _ref8 = _slicedToArray(_ref7, 2),\n      min = _ref8[0],\n      max = _ref8[1];\n\n  var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n  // More than two ticks should be return\n  var _getValidInterval5 = getValidInterval([min, max]),\n      _getValidInterval6 = _slicedToArray(_getValidInterval5, 2),\n      cormin = _getValidInterval6[0],\n      cormax = _getValidInterval6[1];\n\n  if (cormin === -Infinity || cormax === Infinity) {\n    return [min, max];\n  }\n\n  if (cormin === cormax) {\n    return [cormin];\n  }\n\n  var count = Math.max(tickCount, 2);\n  var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n  var values = [].concat(_toConsumableArray(Arithmetic.rangeStep(new Decimal(cormin), new Decimal(cormax).sub(new Decimal(0.99).mul(step)), step)), [cormax]);\n  return min > max ? reverse(values) : values;\n}\n\nexport var getNiceTickValues = memoize(getNiceTickValuesFn);\nexport var getTickValues = memoize(getTickValuesFn);\nexport var getTickValuesFixedDomain = memoize(getTickValuesFixedDomainFn);", "function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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\nvar identity = function identity(i) {\n  return i;\n};\n\nexport var PLACE_HOLDER = {\n  '@@functional/placeholder': true\n};\n\nvar isPlaceHolder = function isPlaceHolder(val) {\n  return val === PLACE_HOLDER;\n};\n\nvar curry0 = function curry0(fn) {\n  return function _curried() {\n    if (arguments.length === 0 || arguments.length === 1 && isPlaceHolder(arguments.length <= 0 ? undefined : arguments[0])) {\n      return _curried;\n    }\n\n    return fn.apply(void 0, arguments);\n  };\n};\n\nvar curryN = function curryN(n, fn) {\n  if (n === 1) {\n    return fn;\n  }\n\n  return curry0(function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var argsLength = args.filter(function (arg) {\n      return arg !== PLACE_HOLDER;\n    }).length;\n\n    if (argsLength >= n) {\n      return fn.apply(void 0, args);\n    }\n\n    return curryN(n - argsLength, curry0(function () {\n      for (var _len2 = arguments.length, restArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        restArgs[_key2] = arguments[_key2];\n      }\n\n      var newArgs = args.map(function (arg) {\n        return isPlaceHolder(arg) ? restArgs.shift() : arg;\n      });\n      return fn.apply(void 0, _toConsumableArray(newArgs).concat(restArgs));\n    }));\n  });\n};\n\nexport var curry = function curry(fn) {\n  return curryN(fn.length, fn);\n};\nexport var range = function range(begin, end) {\n  var arr = [];\n\n  for (var i = begin; i < end; ++i) {\n    arr[i - begin] = i;\n  }\n\n  return arr;\n};\nexport var map = curry(function (fn, arr) {\n  if (Array.isArray(arr)) {\n    return arr.map(fn);\n  }\n\n  return Object.keys(arr).map(function (key) {\n    return arr[key];\n  }).map(fn);\n});\nexport var compose = function compose() {\n  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n    args[_key3] = arguments[_key3];\n  }\n\n  if (!args.length) {\n    return identity;\n  }\n\n  var fns = args.reverse(); // first function can receive multiply arguments\n\n  var firstFn = fns[0];\n  var tailsFn = fns.slice(1);\n  return function () {\n    return tailsFn.reduce(function (res, fn) {\n      return fn(res);\n    }, firstFn.apply(void 0, arguments));\n  };\n};\nexport var reverse = function reverse(arr) {\n  if (Array.isArray(arr)) {\n    return arr.reverse();\n  } // can be string\n\n\n  return arr.split('').reverse.join('');\n};\nexport var memoize = function memoize(fn) {\n  var lastArgs = null;\n  var lastResult = null;\n  return function () {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n\n    if (lastArgs && args.every(function (val, i) {\n      return val === lastArgs[i];\n    })) {\n      return lastResult;\n    }\n\n    lastArgs = args;\n    lastResult = fn.apply(void 0, args);\n    return lastResult;\n  };\n};", "/**\n * @fileOverview \u4E00\u4E9B\u516C\u7528\u7684\u8FD0\u7B97\u65B9\u6CD5\n * @author xile611\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { curry } from './utils';\n/**\n * \u83B7\u53D6\u6570\u503C\u7684\u4F4D\u6570\n * \u5176\u4E2D\u7EDD\u5BF9\u503C\u5C5E\u4E8E\u533A\u95F4[0.1, 1)\uFF0C \u5F97\u5230\u7684\u503C\u4E3A0\n * \u7EDD\u5BF9\u503C\u5C5E\u4E8E\u533A\u95F4[0.01, 0.1)\uFF0C\u5F97\u5230\u7684\u4F4D\u6570\u4E3A -1\n * \u7EDD\u5BF9\u503C\u5C5E\u4E8E\u533A\u95F4[0.001, 0.01)\uFF0C\u5F97\u5230\u7684\u4F4D\u6570\u4E3A -2\n *\n * @param  {Number} value \u6570\u503C\n * @return {Integer} \u4F4D\u6570\n */\n\nfunction getDigitCount(value) {\n  var result;\n\n  if (value === 0) {\n    result = 1;\n  } else {\n    result = Math.floor(new Decimal(value).abs().log(10).toNumber()) + 1;\n  }\n\n  return result;\n}\n/**\n * \u6309\u7167\u56FA\u5B9A\u7684\u6B65\u957F\u83B7\u53D6[start, end)\u8FD9\u4E2A\u533A\u95F4\u7684\u6570\u636E\n * \u5E76\u4E14\u9700\u8981\u5904\u7406js\u8BA1\u7B97\u7CBE\u5EA6\u7684\u95EE\u9898\n *\n * @param  {Decimal} start \u8D77\u70B9\n * @param  {Decimal} end   \u7EC8\u70B9\uFF0C\u4E0D\u5305\u542B\u8BE5\u503C\n * @param  {Decimal} step  \u6B65\u957F\n * @return {Array}         \u82E5\u5E72\u6570\u503C\n */\n\n\nfunction rangeStep(start, end, step) {\n  var num = new Decimal(start);\n  var i = 0;\n  var result = []; // magic number to prevent infinite loop\n\n  while (num.lt(end) && i < 100000) {\n    result.push(num.toNumber());\n    num = num.add(step);\n    i++;\n  }\n\n  return result;\n}\n/**\n * \u5BF9\u6570\u503C\u8FDB\u884C\u7EBF\u6027\u63D2\u503C\n *\n * @param  {Number} a  \u5B9A\u4E49\u57DF\u7684\u6781\u70B9\n * @param  {Number} b  \u5B9A\u4E49\u57DF\u7684\u6781\u70B9\n * @param  {Number} t  [0, 1]\u5185\u7684\u67D0\u4E2A\u503C\n * @return {Number}    \u5B9A\u4E49\u57DF\u5185\u7684\u67D0\u4E2A\u503C\n */\n\n\nvar interpolateNumber = curry(function (a, b, t) {\n  var newA = +a;\n  var newB = +b;\n  return newA + t * (newB - newA);\n});\n/**\n * \u7EBF\u6027\u63D2\u503C\u7684\u9006\u8FD0\u7B97\n *\n * @param  {Number} a \u5B9A\u4E49\u57DF\u7684\u6781\u70B9\n * @param  {Number} b \u5B9A\u4E49\u57DF\u7684\u6781\u70B9\n * @param  {Number} x \u53EF\u4EE5\u8BA4\u4E3A\u662F\u63D2\u503C\u540E\u7684\u4E00\u4E2A\u8F93\u51FA\u503C\n * @return {Number}   \u5F53x\u5728 a ~ b\u8FD9\u4E2A\u8303\u56F4\u5185\u65F6\uFF0C\u8FD4\u56DE\u503C\u5C5E\u4E8E[0, 1]\n */\n\nvar uninterpolateNumber = curry(function (a, b, x) {\n  var diff = b - +a;\n  diff = diff || Infinity;\n  return (x - a) / diff;\n});\n/**\n * \u7EBF\u6027\u63D2\u503C\u7684\u9006\u8FD0\u7B97\uFF0C\u5E76\u4E14\u6709\u622A\u65AD\u7684\u64CD\u4F5C\n *\n * @param  {Number} a \u5B9A\u4E49\u57DF\u7684\u6781\u70B9\n * @param  {Number} b \u5B9A\u4E49\u57DF\u7684\u6781\u70B9\n * @param  {Number} x \u53EF\u4EE5\u8BA4\u4E3A\u662F\u63D2\u503C\u540E\u7684\u4E00\u4E2A\u8F93\u51FA\u503C\n * @return {Number}   \u5F53x\u5728 a ~ b\u8FD9\u4E2A\u533A\u95F4\u5185\u65F6\uFF0C\u8FD4\u56DE\u503C\u5C5E\u4E8E[0, 1]\uFF0C\n * \u5F53x\u4E0D\u5728 a ~ b\u8FD9\u4E2A\u533A\u95F4\u65F6\uFF0C\u4F1A\u622A\u65AD\u5230 a ~ b \u8FD9\u4E2A\u533A\u95F4\n */\n\nvar uninterpolateTruncation = curry(function (a, b, x) {\n  var diff = b - +a;\n  diff = diff || Infinity;\n  return Math.max(0, Math.min(1, (x - a) / diff));\n});\nexport default {\n  rangeStep: rangeStep,\n  getDigitCount: getDigitCount,\n  interpolateNumber: interpolateNumber,\n  uninterpolateNumber: uninterpolateNumber,\n  uninterpolateTruncation: uninterpolateTruncation\n};", "export {\n  default as scaleBand,\n  point as scalePoint\n} from \"./band.js\";\n\nexport {\n  default as scaleIdentity\n} from \"./identity.js\";\n\nexport {\n  default as scaleLinear\n} from \"./linear.js\";\n\nexport {\n  default as scaleLog\n} from \"./log.js\";\n\nexport {\n  default as scaleSymlog\n} from \"./symlog.js\";\n\nexport {\n  default as scaleOrdinal,\n  implicit as scaleImplicit\n} from \"./ordinal.js\";\n\nexport {\n  default as scalePow,\n  sqrt as scaleSqrt\n} from \"./pow.js\";\n\nexport {\n  default as scaleRadial\n} from \"./radial.js\";\n\nexport {\n  default as scaleQuantile\n} from \"./quantile.js\";\n\nexport {\n  default as scaleQuantize\n} from \"./quantize.js\";\n\nexport {\n  default as scaleThreshold\n} from \"./threshold.js\";\n\nexport {\n  default as scaleTime\n} from \"./time.js\";\n\nexport {\n  default as scaleUtc\n} from \"./utcTime.js\";\n\nexport {\n  default as scaleSequential,\n  sequentialLog as scaleSequentialLog,\n  sequentialPow as scaleSequentialPow,\n  sequentialSqrt as scaleSequentialSqrt,\n  sequentialSymlog as scaleSequentialSymlog\n} from \"./sequential.js\";\n\nexport {\n  default as scaleSequentialQuantile\n} from \"./sequentialQuantile.js\";\n\nexport {\n  default as scaleDiverging,\n  divergingLog as scaleDivergingLog,\n  divergingPow as scaleDivergingPow,\n  divergingSqrt as scaleDivergingSqrt,\n  divergingSymlog as scaleDivergingSymlog\n} from \"./diverging.js\";\n\nexport {\n  default as tickFormat\n} from \"./tickFormat.js\";\n", "export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "import ascending from \"./ascending.js\";\n\nexport default function(f) {\n  let delta = f;\n  let compare = f;\n\n  if (f.length === 1) {\n    delta = (d, x) => f(d) - x;\n    compare = ascendingComparator(f);\n  }\n\n  function left(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    while (lo < hi) {\n      const mid = (lo + hi) >>> 1;\n      if (compare(a[mid], x) < 0) lo = mid + 1;\n      else hi = mid;\n    }\n    return lo;\n  }\n\n  function right(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    while (lo < hi) {\n      const mid = (lo + hi) >>> 1;\n      if (compare(a[mid], x) > 0) hi = mid;\n      else lo = mid + 1;\n    }\n    return lo;\n  }\n\n  function center(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction ascendingComparator(f) {\n  return (d, x) => ascending(f(d), x);\n}\n", "export default function(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n", "import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n", "var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n    if (r0 * step < start) ++r0;\n    if (r1 * step > stop) --r1;\n    ticks = new Array(n = r1 - r0 + 1);\n    while (++i < n) ticks[i] = (r0 + i) * step;\n  } else {\n    step = -step;\n    let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n    if (r0 / step < start) ++r0;\n    if (r1 / step > stop) --r1;\n    ticks = new Array(n = r1 - r0 + 1);\n    while (++i < n) ticks[i] = (r0 + i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n", "export default function max(values, valueof) {\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  }\n  return max;\n}\n", "export default function min(values, valueof) {\n  let min;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  }\n  return min;\n}\n", "import ascending from \"./ascending.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = array.length - 1, compare = ascending) {\n  while (right > left) {\n    if (right - left > 600) {\n      const n = right - left + 1;\n      const m = k - left + 1;\n      const z = Math.log(n);\n      const s = 0.5 * Math.exp(2 * z / 3);\n      const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n      const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n      const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n      quickselect(array, k, newLeft, newRight, compare);\n    }\n\n    const t = array[k];\n    let i = left;\n    let j = right;\n\n    swap(array, left, k);\n    if (compare(array[right], t) > 0) swap(array, left, right);\n\n    while (i < j) {\n      swap(array, i, j), ++i, --j;\n      while (compare(array[i], t) < 0) ++i;\n      while (compare(array[j], t) > 0) --j;\n    }\n\n    if (compare(array[left], t) === 0) swap(array, left, j);\n    else ++j, swap(array, j, right);\n\n    if (j <= k) left = j + 1;\n    if (k <= j) right = j - 1;\n  }\n  return array;\n}\n\nfunction swap(array, i, j) {\n  const t = array[i];\n  array[i] = array[j];\n  array[j] = t;\n}\n", "import max from \"./max.js\";\nimport min from \"./min.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\n\nexport default function quantile(values, p, valueof) {\n  values = Float64Array.from(numbers(values, valueof));\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return min(values);\n  if (p >= 1) return max(values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n      value1 = min(values.subarray(i0 + 1));\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n", "export default function(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n", "export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n", "import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n  var index = new Map(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    var key = d + \"\", i = index.get(key);\n    if (!i) {\n      if (unknown !== implicit) return unknown;\n      index.set(key, i = domain.push(d));\n    }\n    return range[(i - 1) % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new Map();\n    for (const value of _) {\n      const key = value + \"\";\n      if (index.has(key)) continue;\n      index.set(key, domain.push(value));\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n", "import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n  var scale = ordinal().unknown(undefined),\n      domain = scale.domain,\n      ordinalRange = scale.range,\n      r0 = 0,\n      r1 = 1,\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n\n  delete scale.unknown;\n\n  function rescale() {\n    var n = domain().length,\n        reverse = r1 < r0,\n        start = reverse ? r1 : r0,\n        stop = reverse ? r0 : r1;\n    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n    if (round) step = Math.floor(step);\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n    var values = sequence(n).map(function(i) { return start + step * i; });\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n  };\n\n  scale.rangeRound = function(_) {\n    return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n  };\n\n  scale.bandwidth = function() {\n    return bandwidth;\n  };\n\n  scale.step = function() {\n    return step;\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, rescale()) : round;\n  };\n\n  scale.padding = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n  };\n\n  scale.paddingInner = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n  };\n\n  scale.paddingOuter = function(_) {\n    return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n  };\n\n  scale.align = function(_) {\n    return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n  };\n\n  scale.copy = function() {\n    return band(domain(), [r0, r1])\n        .round(round)\n        .paddingInner(paddingInner)\n        .paddingOuter(paddingOuter)\n        .align(align);\n  };\n\n  return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n  var copy = scale.copy;\n\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n  delete scale.paddingOuter;\n\n  scale.copy = function() {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nexport function point() {\n  return pointish(band.apply(null, arguments).paddingInner(1));\n}\n", "export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n", "import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n    reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n    reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n    reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n    reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n    reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy: function(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable: function() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb: function() {\n    return this;\n  },\n  displayable: function() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n  var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n  return (a === 1 ? \"rgb(\" : \"rgba(\")\n      + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n      + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n  value = Math.max(0, Math.min(255, Math.round(value) || 0));\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  displayable: function() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl: function() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"hsl(\" : \"hsla(\")\n        + (this.h || 0) + \", \"\n        + (this.s || 0) * 100 + \"%, \"\n        + (this.l || 0) * 100 + \"%\"\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n", "export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n", "import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n", "export default x => () => x;\n", "import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n", "import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n", "export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n", "import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n", "export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n", "export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n", "import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n", "import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n", "import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n", "export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n", "import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n  if (values === undefined) values = interpolate, interpolate = value;\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n", "export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n", "export default function number(x) {\n  return +x;\n}\n", "import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n", "export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n", "export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n", "export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n", "// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n", "// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n", "import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n", "export default function(x) {\n  return x;\n}\n", "import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\u00B5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"\u2212\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer \u201Cvalue\u201D part that can be\n        // grouped, and fractional or exponential \u201Csuffix\u201D part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n", "import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n", "import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n", "import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n  return linearish(scale);\n}\n", "export default function nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n", "import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n  return function(x) {\n    return -f(-x);\n  };\n}\n\nexport function loggish(transform) {\n  var scale = transform(transformLog, transformExp),\n      domain = scale.domain,\n      base = 10,\n      logs,\n      pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = function(count) {\n    var d = domain(),\n        u = d[0],\n        v = d[d.length - 1],\n        r;\n\n    if (r = v < u) i = u, u = v, v = i;\n\n    var i = logs(u),\n        j = logs(v),\n        p,\n        k,\n        t,\n        n = count == null ? 10 : +count,\n        z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u > 0) for (; i <= j; ++i) {\n        for (k = 1, p = pows(i); k < base; ++k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i <= j; ++i) {\n        for (k = base - 1, p = pows(i); k >= 1; --k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 < n) z = ticks(u, v, n);\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n    if (typeof specifier !== \"function\") specifier = format(specifier);\n    if (count === Infinity) return specifier;\n    if (count == null) count = 10;\n    var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return function(d) {\n      var i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = function() {\n    return domain(nice(domain(), {\n      floor: function(x) { return pows(Math.floor(logs(x))); },\n      ceil: function(x) { return pows(Math.ceil(logs(x))); }\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, log()).base(scale.base());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nexport function symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return linearish(scale);\n}\n\nexport default function symlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, symlog()).constant(scale.constant());\n  };\n\n  return initRange.apply(scale, arguments);\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n  var scale = transform(identity, identity),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(identity, identity)\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return linearish(scale);\n}\n\nexport default function pow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, pow()).exponent(scale.exponent());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\nexport function sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n", "import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n  return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n  return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n  var squared = continuous(),\n      range = [0, 1],\n      round = false,\n      unknown;\n\n  function scale(x) {\n    var y = unsquare(squared(x));\n    return isNaN(y) ? unknown : round ? Math.round(y) : y;\n  }\n\n  scale.invert = function(y) {\n    return squared.invert(square(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (squared.domain(_), scale) : squared.domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return scale.range(_).round(true);\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, scale) : round;\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return radial(squared.domain(), range)\n        .round(round)\n        .clamp(squared.clamp())\n        .unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n", "import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(linearish(scale), arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n", "var t0 = new Date,\n    t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n", "import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return interval(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n", "export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n", "import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n  return (end - start) / durationSecond;\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n", "import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n", "import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n", "import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n  date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n", "import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n  return interval(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n", "import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n", "import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport default year;\nexport var years = year.range;\n", "import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n", "import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n", "import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / durationDay;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n", "import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n  return interval(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n", "import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n", "import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n", "import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n", "import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n", "import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = continuous(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(nice(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nexport default function time() {\n  return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n", "import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n  return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n", "import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = identity,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport default function sequential() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n", "import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n  var domain = [],\n      interpolator = identity;\n\n  function scale(x) {\n    if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return scale;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.range = function() {\n    return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n  };\n\n  scale.quantiles = function(n) {\n    return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n  };\n\n  scale.copy = function() {\n    return sequentialQuantile(interpolator).domain(domain);\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n", "import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      s = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = identity,\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1, r2;\n      return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n    return scale;\n  };\n}\n\nexport default function diverging() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, diverging());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n  var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, divergingLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\n}\n", "import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _last from \"lodash/last\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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 _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { cloneElement } from 'react';\nimport { Label } from './Label';\nimport { Layer } from '../container/Layer';\nimport { findAllByType } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps } from '../util/types';\nvar defaultProps = {\n  valueAccessor: function valueAccessor(entry) {\n    return _isArray(entry.value) ? _last(entry.value) : entry.value;\n  }\n};\nexport function LabelList(props) {\n  var data = props.data,\n      valueAccessor = props.valueAccessor,\n      dataKey = props.dataKey,\n      clockWise = props.clockWise,\n      id = props.id,\n      textBreakAll = props.textBreakAll,\n      others = _objectWithoutProperties(props, [\"data\", \"valueAccessor\", \"dataKey\", \"clockWise\", \"id\", \"textBreakAll\"]);\n\n  if (!data || !data.length) {\n    return null;\n  }\n\n  return /*#__PURE__*/React.createElement(Layer, {\n    className: \"recharts-label-list\"\n  }, data.map(function (entry, index) {\n    var value = _isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n    var idProps = _isNil(id) ? {} : {\n      id: \"\".concat(id, \"-\").concat(index)\n    };\n    return /*#__PURE__*/React.createElement(Label, _extends({}, filterProps(entry, true), others, idProps, {\n      parentViewBox: entry.parentViewBox,\n      index: index,\n      value: value,\n      textBreakAll: textBreakAll,\n      viewBox: Label.parseViewBox(_isNil(clockWise) ? entry : _objectSpread(_objectSpread({}, entry), {}, {\n        clockWise: clockWise\n      })),\n      key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n\n    }));\n  }));\n}\nLabelList.displayName = 'LabelList';\n\nfunction parseLabelList(label, data) {\n  if (!label) {\n    return null;\n  }\n\n  if (label === true) {\n    return /*#__PURE__*/React.createElement(LabelList, {\n      key: \"labelList-implicit\",\n      data: data\n    });\n  }\n\n  if ( /*#__PURE__*/React.isValidElement(label) || _isFunction(label)) {\n    return /*#__PURE__*/React.createElement(LabelList, {\n      key: \"labelList-implicit\",\n      data: data,\n      content: label\n    });\n  }\n\n  if (_isObject(label)) {\n    return /*#__PURE__*/React.createElement(LabelList, _extends({\n      data: data\n    }, label, {\n      key: \"labelList-implicit\"\n    }));\n  }\n\n  return null;\n}\n\nfunction renderCallByParent(parentProps, data) {\n  var ckeckPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n  if (!parentProps || !parentProps.children && ckeckPropsLabel && !parentProps.label) {\n    return null;\n  }\n\n  var children = parentProps.children;\n  var explicitChilren = findAllByType(children, LabelList.displayName).map(function (child, index) {\n    return /*#__PURE__*/cloneElement(child, {\n      data: data,\n      key: \"labelList-\".concat(index)\n    });\n  });\n\n  if (!ckeckPropsLabel) {\n    return explicitChilren;\n  }\n\n  var implicitLabelList = parseLabelList(parentProps.label, data);\n  return [implicitLabelList].concat(_toConsumableArray(explicitChilren));\n}\n\nLabelList.renderCallByParent = renderCallByParent;\nLabelList.defaultProps = defaultProps;", "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\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Sector\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n  var sign = mathSign(endAngle - startAngle);\n  var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n  return sign * deltaAngle;\n};\n\nvar getTangentCircle = function getTangentCircle(_ref) {\n  var cx = _ref.cx,\n      cy = _ref.cy,\n      radius = _ref.radius,\n      angle = _ref.angle,\n      sign = _ref.sign,\n      isExternal = _ref.isExternal,\n      cornerRadius = _ref.cornerRadius,\n      cornerIsExternal = _ref.cornerIsExternal;\n  var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n  var theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n  var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n  var center = polarToCartesian(cx, cy, centerRadius, centerAngle); // The coordinate of point which is tangent to the circle\n\n  var circleTangency = polarToCartesian(cx, cy, radius, centerAngle); // The coordinate of point which is tangent to the radius line\n\n  var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n  var lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n  return {\n    center: center,\n    circleTangency: circleTangency,\n    lineTangency: lineTangency,\n    theta: theta\n  };\n};\n\nvar getSectorPath = function getSectorPath(_ref2) {\n  var cx = _ref2.cx,\n      cy = _ref2.cy,\n      innerRadius = _ref2.innerRadius,\n      outerRadius = _ref2.outerRadius,\n      startAngle = _ref2.startAngle,\n      endAngle = _ref2.endAngle;\n  var angle = getDeltaAngle(startAngle, endAngle); // When the angle of sector equals to 360, star point and end point coincide\n\n  var tempEndAngle = startAngle + angle;\n  var outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n  var outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n  var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n    A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n    \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n    \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n  \");\n\n  if (innerRadius > 0) {\n    var innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n    var innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n    path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n            A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n            \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n            \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n  } else {\n    path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n  }\n\n  return path;\n};\n\nvar getSectorWithCorner = function getSectorWithCorner(_ref3) {\n  var cx = _ref3.cx,\n      cy = _ref3.cy,\n      innerRadius = _ref3.innerRadius,\n      outerRadius = _ref3.outerRadius,\n      cornerRadius = _ref3.cornerRadius,\n      forceCornerRadius = _ref3.forceCornerRadius,\n      cornerIsExternal = _ref3.cornerIsExternal,\n      startAngle = _ref3.startAngle,\n      endAngle = _ref3.endAngle;\n  var sign = mathSign(endAngle - startAngle);\n\n  var _getTangentCircle = getTangentCircle({\n    cx: cx,\n    cy: cy,\n    radius: outerRadius,\n    angle: startAngle,\n    sign: sign,\n    cornerRadius: cornerRadius,\n    cornerIsExternal: cornerIsExternal\n  }),\n      soct = _getTangentCircle.circleTangency,\n      solt = _getTangentCircle.lineTangency,\n      sot = _getTangentCircle.theta;\n\n  var _getTangentCircle2 = getTangentCircle({\n    cx: cx,\n    cy: cy,\n    radius: outerRadius,\n    angle: endAngle,\n    sign: -sign,\n    cornerRadius: cornerRadius,\n    cornerIsExternal: cornerIsExternal\n  }),\n      eoct = _getTangentCircle2.circleTangency,\n      eolt = _getTangentCircle2.lineTangency,\n      eot = _getTangentCircle2.theta;\n\n  var outerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sot - eot;\n\n  if (outerArcAngle < 0) {\n    if (forceCornerRadius) {\n      return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n        a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n        a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n      \");\n    }\n\n    return getSectorPath({\n      cx: cx,\n      cy: cy,\n      innerRadius: innerRadius,\n      outerRadius: outerRadius,\n      startAngle: startAngle,\n      endAngle: endAngle\n    });\n  }\n\n  var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n    A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n    A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n    A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n  \");\n\n  if (innerRadius > 0) {\n    var _getTangentCircle3 = getTangentCircle({\n      cx: cx,\n      cy: cy,\n      radius: innerRadius,\n      angle: startAngle,\n      sign: sign,\n      isExternal: true,\n      cornerRadius: cornerRadius,\n      cornerIsExternal: cornerIsExternal\n    }),\n        sict = _getTangentCircle3.circleTangency,\n        silt = _getTangentCircle3.lineTangency,\n        sit = _getTangentCircle3.theta;\n\n    var _getTangentCircle4 = getTangentCircle({\n      cx: cx,\n      cy: cy,\n      radius: innerRadius,\n      angle: endAngle,\n      sign: -sign,\n      isExternal: true,\n      cornerRadius: cornerRadius,\n      cornerIsExternal: cornerIsExternal\n    }),\n        eict = _getTangentCircle4.circleTangency,\n        eilt = _getTangentCircle4.lineTangency,\n        eit = _getTangentCircle4.theta;\n\n    var innerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sit - eit;\n\n    if (innerArcAngle < 0 && cornerRadius === 0) {\n      return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n    }\n\n    path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n      A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n      A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n      A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n  } else {\n    path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n  }\n\n  return path;\n};\n\nexport var Sector = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Sector, _PureComponent);\n\n  var _super = _createSuper(Sector);\n\n  function Sector() {\n    _classCallCheck(this, Sector);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Sector, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          cx = _this$props.cx,\n          cy = _this$props.cy,\n          innerRadius = _this$props.innerRadius,\n          outerRadius = _this$props.outerRadius,\n          cornerRadius = _this$props.cornerRadius,\n          forceCornerRadius = _this$props.forceCornerRadius,\n          cornerIsExternal = _this$props.cornerIsExternal,\n          startAngle = _this$props.startAngle,\n          endAngle = _this$props.endAngle,\n          className = _this$props.className;\n\n      if (outerRadius < innerRadius || startAngle === endAngle) {\n        return null;\n      }\n\n      var layerClass = classNames('recharts-sector', className);\n      var deltaRadius = outerRadius - innerRadius;\n      var cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n      var path;\n\n      if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n        path = getSectorWithCorner({\n          cx: cx,\n          cy: cy,\n          innerRadius: innerRadius,\n          outerRadius: outerRadius,\n          cornerRadius: Math.min(cr, deltaRadius / 2),\n          forceCornerRadius: forceCornerRadius,\n          cornerIsExternal: cornerIsExternal,\n          startAngle: startAngle,\n          endAngle: endAngle\n        });\n      } else {\n        path = getSectorPath({\n          cx: cx,\n          cy: cy,\n          innerRadius: innerRadius,\n          outerRadius: outerRadius,\n          startAngle: startAngle,\n          endAngle: endAngle\n        });\n      }\n\n      return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n        className: layerClass,\n        d: path\n      }));\n    }\n  }]);\n\n  return Sector;\n}(PureComponent);\nSector.defaultProps = {\n  cx: 0,\n  cy: 0,\n  innerRadius: 0,\n  outerRadius: 0,\n  startAngle: 0,\n  endAngle: 0,\n  cornerRadius: 0,\n  forceCornerRadius: false,\n  cornerIsExternal: false\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 _isArray from \"lodash/isArray\";\nimport _upperFirst from \"lodash/upperFirst\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Curve\n */\nimport React, { PureComponent } from 'react';\nimport { line as shapeLine, area as shapeArea, curveBasisClosed, curveBasisOpen, curveBasis, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'd3-shape';\nimport classNames from 'classnames';\nimport { adaptEventHandlers, filterProps } from '../util/types';\nimport { isNumber } from '../util/DataUtils';\nvar CURVE_FACTORIES = {\n  curveBasisClosed: curveBasisClosed,\n  curveBasisOpen: curveBasisOpen,\n  curveBasis: curveBasis,\n  curveLinearClosed: curveLinearClosed,\n  curveLinear: curveLinear,\n  curveMonotoneX: curveMonotoneX,\n  curveMonotoneY: curveMonotoneY,\n  curveNatural: curveNatural,\n  curveStep: curveStep,\n  curveStepAfter: curveStepAfter,\n  curveStepBefore: curveStepBefore\n};\n\nvar defined = function defined(p) {\n  return p.x === +p.x && p.y === +p.y;\n};\n\nvar getX = function getX(p) {\n  return p.x;\n};\n\nvar getY = function getY(p) {\n  return p.y;\n};\n\nvar getCurveFactory = function getCurveFactory(type, layout) {\n  if (_isFunction(type)) {\n    return type;\n  }\n\n  var name = \"curve\".concat(_upperFirst(type));\n\n  if (name === 'curveMonotone' && layout) {\n    return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n  }\n\n  return CURVE_FACTORIES[name] || curveLinear;\n};\n\nexport var Curve = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Curve, _PureComponent);\n\n  var _super = _createSuper(Curve);\n\n  function Curve() {\n    _classCallCheck(this, Curve);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Curve, [{\n    key: \"getPath\",\n    value:\n    /**\n     * Calculate the path of curve\n     * @return {String} path\n     */\n    function getPath() {\n      var _this$props = this.props,\n          type = _this$props.type,\n          points = _this$props.points,\n          baseLine = _this$props.baseLine,\n          layout = _this$props.layout,\n          connectNulls = _this$props.connectNulls;\n      var curveFactory = getCurveFactory(type, layout);\n      var formatPoints = connectNulls ? points.filter(function (entry) {\n        return defined(entry);\n      }) : points;\n      var lineFunction;\n\n      if (_isArray(baseLine)) {\n        var formatBaseLine = connectNulls ? baseLine.filter(function (base) {\n          return defined(base);\n        }) : baseLine;\n        var areaPoints = formatPoints.map(function (entry, index) {\n          return _objectSpread(_objectSpread({}, entry), {}, {\n            base: formatBaseLine[index]\n          });\n        });\n\n        if (layout === 'vertical') {\n          lineFunction = shapeArea().y(getY).x1(getX).x0(function (d) {\n            return d.base.x;\n          });\n        } else {\n          lineFunction = shapeArea().x(getX).y1(getY).y0(function (d) {\n            return d.base.y;\n          });\n        }\n\n        lineFunction.defined(defined).curve(curveFactory);\n        return lineFunction(areaPoints);\n      }\n\n      if (layout === 'vertical' && isNumber(baseLine)) {\n        lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);\n      } else if (isNumber(baseLine)) {\n        lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);\n      } else {\n        lineFunction = shapeLine().x(getX).y(getY);\n      }\n\n      lineFunction.defined(defined).curve(curveFactory);\n      return lineFunction(formatPoints);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          className = _this$props2.className,\n          points = _this$props2.points,\n          path = _this$props2.path,\n          pathRef = _this$props2.pathRef;\n\n      if ((!points || !points.length) && !path) {\n        return null;\n      }\n\n      var realPath = points && points.length ? this.getPath() : path;\n      return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props), adaptEventHandlers(this.props), {\n        className: classNames('recharts-curve', className),\n        d: realPath,\n        ref: pathRef\n      }));\n    }\n  }]);\n\n  return Curve;\n}(PureComponent);\nCurve.defaultProps = {\n  type: 'linear',\n  points: [],\n  connectNulls: false\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\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Rectangle\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/types';\n\nvar getRectanglePath = function getRectanglePath(x, y, width, height, radius) {\n  var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n  var ySign = height >= 0 ? 1 : -1;\n  var xSign = width >= 0 ? 1 : -1;\n  var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n  var path;\n\n  if (maxRadius > 0 && radius instanceof Array) {\n    var newRadius = [0, 0, 0, 0];\n\n    for (var i = 0, len = 4; i < len; i++) {\n      newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n    }\n\n    path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n\n    if (newRadius[0] > 0) {\n      path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n    }\n\n    path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n\n    if (newRadius[1] > 0) {\n      path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n        \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n    }\n\n    path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n\n    if (newRadius[2] > 0) {\n      path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n        \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n    }\n\n    path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n\n    if (newRadius[3] > 0) {\n      path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n        \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n    }\n\n    path += 'Z';\n  } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n    var _newRadius = Math.min(maxRadius, radius);\n\n    path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n            A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n            L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n            A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n            L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n            A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n            L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n            A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n  } else {\n    path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n  }\n\n  return path;\n};\n\nexport var isInRectangle = function isInRectangle(point, rect) {\n  if (!point || !rect) {\n    return false;\n  }\n\n  var px = point.x,\n      py = point.y;\n  var x = rect.x,\n      y = rect.y,\n      width = rect.width,\n      height = rect.height;\n\n  if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n    var minX = Math.min(x, x + width);\n    var maxX = Math.max(x, x + width);\n    var minY = Math.min(y, y + height);\n    var maxY = Math.max(y, y + height);\n    return px >= minX && px <= maxX && py >= minY && py <= maxY;\n  }\n\n  return false;\n};\nexport var Rectangle = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Rectangle, _PureComponent);\n\n  var _super = _createSuper(Rectangle);\n\n  function Rectangle() {\n    var _this;\n\n    _classCallCheck(this, Rectangle);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      totalLength: -1\n    };\n    _this.node = void 0;\n    return _this;\n  }\n\n  _createClass(Rectangle, [{\n    key: \"componentDidMount\",\n    value:\n    /* eslint-disable  react/no-did-mount-set-state */\n    function componentDidMount() {\n      if (this.node && this.node.getTotalLength) {\n        try {\n          var totalLength = this.node.getTotalLength();\n\n          if (totalLength) {\n            this.setState({\n              totalLength: totalLength\n            });\n          }\n        } catch (err) {// calculate total length error\n        }\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          x = _this$props.x,\n          y = _this$props.y,\n          width = _this$props.width,\n          height = _this$props.height,\n          radius = _this$props.radius,\n          className = _this$props.className;\n      var totalLength = this.state.totalLength;\n      var _this$props2 = this.props,\n          animationEasing = _this$props2.animationEasing,\n          animationDuration = _this$props2.animationDuration,\n          animationBegin = _this$props2.animationBegin,\n          isAnimationActive = _this$props2.isAnimationActive,\n          isUpdateAnimationActive = _this$props2.isUpdateAnimationActive;\n\n      if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n        return null;\n      }\n\n      var layerClass = classNames('recharts-rectangle', className);\n\n      if (!isUpdateAnimationActive) {\n        return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n          className: layerClass,\n          d: getRectanglePath(x, y, width, height, radius)\n        }));\n      }\n\n      return /*#__PURE__*/React.createElement(Animate, {\n        canBegin: totalLength > 0,\n        from: {\n          width: width,\n          height: height,\n          x: x,\n          y: y\n        },\n        to: {\n          width: width,\n          height: height,\n          x: x,\n          y: y\n        },\n        duration: animationDuration,\n        animationEasing: animationEasing,\n        isActive: isUpdateAnimationActive\n      }, function (_ref) {\n        var currWidth = _ref.width,\n            currHeight = _ref.height,\n            currX = _ref.x,\n            currY = _ref.y;\n        return /*#__PURE__*/React.createElement(Animate, {\n          canBegin: totalLength > 0,\n          from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n          to: \"\".concat(totalLength, \"px 0px\"),\n          attributeName: \"strokeDasharray\",\n          begin: animationBegin,\n          duration: animationDuration,\n          isActive: isAnimationActive,\n          easing: animationEasing\n        }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(_this2.props, true), {\n          className: layerClass,\n          d: getRectanglePath(currX, currY, currWidth, currHeight, radius),\n          ref: function ref(node) {\n            _this2.node = node;\n          }\n        })));\n      });\n    }\n  }]);\n\n  return Rectangle;\n}(PureComponent);\nRectangle.defaultProps = {\n  x: 0,\n  y: 0,\n  width: 0,\n  height: 0,\n  // The radius of border\n  // The radius of four corners when radius is a number\n  // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n  radius: 0,\n  isAnimationActive: false,\n  isUpdateAnimationActive: false,\n  animationBegin: 0,\n  animationDuration: 1500,\n  animationEasing: 'ease'\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\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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\n/**\n * @fileOverview Polygon\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\n\nvar isValidatePoint = function isValidatePoint(point) {\n  return point && point.x === +point.x && point.y === +point.y;\n};\n\nvar getParsedPoints = function getParsedPoints() {\n  var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var segmentPoints = [[]];\n  points.forEach(function (entry) {\n    if (isValidatePoint(entry)) {\n      segmentPoints[segmentPoints.length - 1].push(entry);\n    } else if (segmentPoints[segmentPoints.length - 1].length > 0) {\n      // add another path\n      segmentPoints.push([]);\n    }\n  });\n\n  if (isValidatePoint(points[0])) {\n    segmentPoints[segmentPoints.length - 1].push(points[0]);\n  }\n\n  if (segmentPoints[segmentPoints.length - 1].length <= 0) {\n    segmentPoints = segmentPoints.slice(0, -1);\n  }\n\n  return segmentPoints;\n};\n\nvar getSinglePolygonPath = function getSinglePolygonPath(points, connectNulls) {\n  var segmentPoints = getParsedPoints(points);\n\n  if (connectNulls) {\n    segmentPoints = [segmentPoints.reduce(function (res, segPoints) {\n      return [].concat(_toConsumableArray(res), _toConsumableArray(segPoints));\n    }, [])];\n  }\n\n  var polygonPath = segmentPoints.map(function (segPoints) {\n    return segPoints.reduce(function (path, point, index) {\n      return \"\".concat(path).concat(index === 0 ? 'M' : 'L').concat(point.x, \",\").concat(point.y);\n    }, '');\n  }).join('');\n  return segmentPoints.length === 1 ? \"\".concat(polygonPath, \"Z\") : polygonPath;\n};\n\nvar getRanglePath = function getRanglePath(points, baseLinePoints, connectNulls) {\n  var outerPath = getSinglePolygonPath(points, connectNulls);\n  return \"\".concat(outerPath.slice(-1) === 'Z' ? outerPath.slice(0, -1) : outerPath, \"L\").concat(getSinglePolygonPath(baseLinePoints.reverse(), connectNulls).slice(1));\n};\n\nexport var Polygon = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Polygon, _PureComponent);\n\n  var _super = _createSuper(Polygon);\n\n  function Polygon() {\n    _classCallCheck(this, Polygon);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Polygon, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          points = _this$props.points,\n          className = _this$props.className,\n          baseLinePoints = _this$props.baseLinePoints,\n          connectNulls = _this$props.connectNulls,\n          others = _objectWithoutProperties(_this$props, [\"points\", \"className\", \"baseLinePoints\", \"connectNulls\"]);\n\n      if (!points || !points.length) {\n        return null;\n      }\n\n      var layerClass = classNames('recharts-polygon', className);\n\n      if (baseLinePoints && baseLinePoints.length) {\n        var hasStroke = others.stroke && others.stroke !== 'none';\n        var rangePath = getRanglePath(points, baseLinePoints, connectNulls);\n        return /*#__PURE__*/React.createElement(\"g\", {\n          className: layerClass\n        }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n          fill: rangePath.slice(-1) === 'Z' ? others.fill : 'none',\n          stroke: \"none\",\n          d: rangePath\n        })), hasStroke ? /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n          fill: \"none\",\n          d: getSinglePolygonPath(points, connectNulls)\n        })) : null, hasStroke ? /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n          fill: \"none\",\n          d: getSinglePolygonPath(baseLinePoints, connectNulls)\n        })) : null);\n      }\n\n      var singlePath = getSinglePolygonPath(points, connectNulls);\n      return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n        fill: singlePath.slice(-1) === 'Z' ? others.fill : 'none',\n        className: layerClass,\n        d: singlePath\n      }));\n    }\n  }]);\n\n  return Polygon;\n}(PureComponent);", "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\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Dot\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { adaptEventHandlers, filterProps } from '../util/types';\nexport var Dot = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Dot, _PureComponent);\n\n  var _super = _createSuper(Dot);\n\n  function Dot() {\n    _classCallCheck(this, Dot);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Dot, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          cx = _this$props.cx,\n          cy = _this$props.cy,\n          r = _this$props.r,\n          className = _this$props.className;\n      var layerClass = classNames('recharts-dot', className);\n\n      if (cx === +cx && cy === +cy && r === +r) {\n        return /*#__PURE__*/React.createElement(\"circle\", _extends({}, filterProps(this.props), adaptEventHandlers(this.props), {\n          className: layerClass,\n          cx: cx,\n          cy: cy,\n          r: r\n        }));\n      }\n\n      return null;\n    }\n  }]);\n\n  return Dot;\n}(PureComponent);", "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\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Cross\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/types';\nexport var Cross = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Cross, _PureComponent);\n\n  var _super = _createSuper(Cross);\n\n  function Cross() {\n    _classCallCheck(this, Cross);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Cross, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          x = _this$props.x,\n          y = _this$props.y,\n          width = _this$props.width,\n          height = _this$props.height,\n          top = _this$props.top,\n          left = _this$props.left,\n          className = _this$props.className;\n\n      if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n        return null;\n      }\n\n      return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n        className: classNames('recharts-cross', className),\n        d: Cross.getPath(x, y, width, height, top, left)\n      }));\n    }\n  }], [{\n    key: \"getPath\",\n    value: function getPath(x, y, width, height, top, left) {\n      return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n    }\n  }]);\n\n  return Cross;\n}(PureComponent);\nCross.defaultProps = {\n  x: 0,\n  y: 0,\n  top: 0,\n  left: 0,\n  width: 0,\n  height: 0\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 _isFunction from \"lodash/isFunction\";\nimport _minBy from \"lodash/minBy\";\nimport _maxBy from \"lodash/maxBy\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview The axis of polar coordinate system\n */\nimport React, { PureComponent } from 'react';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { Layer } from '../container/Layer';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\nexport var PolarRadiusAxis = /*#__PURE__*/function (_PureComponent) {\n  _inherits(PolarRadiusAxis, _PureComponent);\n\n  var _super = _createSuper(PolarRadiusAxis);\n\n  function PolarRadiusAxis() {\n    _classCallCheck(this, PolarRadiusAxis);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(PolarRadiusAxis, [{\n    key: \"getTickValueCoord\",\n    value:\n    /**\n     * Calculate the coordinate of tick\n     * @param  {Number} coordinate The radius of tick\n     * @return {Object} (x, y)\n     */\n    function getTickValueCoord(_ref) {\n      var coordinate = _ref.coordinate;\n      var _this$props = this.props,\n          angle = _this$props.angle,\n          cx = _this$props.cx,\n          cy = _this$props.cy;\n      return polarToCartesian(cx, cy, coordinate, angle);\n    }\n  }, {\n    key: \"getTickTextAnchor\",\n    value: function getTickTextAnchor() {\n      var orientation = this.props.orientation;\n      var textAnchor;\n\n      switch (orientation) {\n        case 'left':\n          textAnchor = 'end';\n          break;\n\n        case 'right':\n          textAnchor = 'start';\n          break;\n\n        default:\n          textAnchor = 'middle';\n          break;\n      }\n\n      return textAnchor;\n    }\n  }, {\n    key: \"getViewBox\",\n    value: function getViewBox() {\n      var _this$props2 = this.props,\n          cx = _this$props2.cx,\n          cy = _this$props2.cy,\n          angle = _this$props2.angle,\n          ticks = _this$props2.ticks;\n\n      var maxRadiusTick = _maxBy(ticks, function (entry) {\n        return entry.coordinate || 0;\n      });\n\n      var minRadiusTick = _minBy(ticks, function (entry) {\n        return entry.coordinate || 0;\n      });\n\n      return {\n        cx: cx,\n        cy: cy,\n        startAngle: angle,\n        endAngle: angle,\n        innerRadius: minRadiusTick.coordinate || 0,\n        outerRadius: maxRadiusTick.coordinate || 0\n      };\n    }\n  }, {\n    key: \"renderAxisLine\",\n    value: function renderAxisLine() {\n      var _this$props3 = this.props,\n          cx = _this$props3.cx,\n          cy = _this$props3.cy,\n          angle = _this$props3.angle,\n          ticks = _this$props3.ticks,\n          axisLine = _this$props3.axisLine,\n          others = _objectWithoutProperties(_this$props3, [\"cx\", \"cy\", \"angle\", \"ticks\", \"axisLine\"]);\n\n      var extent = ticks.reduce(function (result, entry) {\n        return [Math.min(result[0], entry.coordinate), Math.max(result[1], entry.coordinate)];\n      }, [Infinity, -Infinity]);\n      var point0 = polarToCartesian(cx, cy, extent[0], angle);\n      var point1 = polarToCartesian(cx, cy, extent[1], angle);\n\n      var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(others)), {}, {\n        fill: 'none'\n      }, filterProps(axisLine)), {}, {\n        x1: point0.x,\n        y1: point0.y,\n        x2: point1.x,\n        y2: point1.y\n      });\n\n      return /*#__PURE__*/React.createElement(\"line\", _extends({\n        className: \"recharts-polar-radius-axis-line\"\n      }, props));\n    }\n  }, {\n    key: \"renderTicks\",\n    value: function renderTicks() {\n      var _this = this;\n\n      var _this$props4 = this.props,\n          ticks = _this$props4.ticks,\n          tick = _this$props4.tick,\n          angle = _this$props4.angle,\n          tickFormatter = _this$props4.tickFormatter,\n          stroke = _this$props4.stroke,\n          others = _objectWithoutProperties(_this$props4, [\"ticks\", \"tick\", \"angle\", \"tickFormatter\", \"stroke\"]);\n\n      var textAnchor = this.getTickTextAnchor();\n      var axisProps = filterProps(others);\n      var customTickProps = filterProps(tick);\n      var items = ticks.map(function (entry, i) {\n        var coord = _this.getTickValueCoord(entry);\n\n        var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n          textAnchor: textAnchor,\n          transform: \"rotate(\".concat(90 - angle, \", \").concat(coord.x, \", \").concat(coord.y, \")\")\n        }, axisProps), {}, {\n          stroke: 'none',\n          fill: stroke\n        }, customTickProps), {}, {\n          index: i\n        }, coord), {}, {\n          payload: entry\n        });\n\n        return /*#__PURE__*/React.createElement(Layer, _extends({\n          className: \"recharts-polar-radius-axis-tick\",\n          key: \"tick-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n        }, adaptEventsOfChild(_this.props, entry, i)), PolarRadiusAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value));\n      });\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: \"recharts-polar-radius-axis-ticks\"\n      }, items);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props5 = this.props,\n          ticks = _this$props5.ticks,\n          axisLine = _this$props5.axisLine,\n          tick = _this$props5.tick;\n\n      if (!ticks || !ticks.length) {\n        return null;\n      }\n\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: \"recharts-polar-radius-axis\"\n      }, axisLine && this.renderAxisLine(), tick && this.renderTicks(), Label.renderCallByParent(this.props, this.getViewBox()));\n    }\n  }], [{\n    key: \"renderTickItem\",\n    value: function renderTickItem(option, props, value) {\n      var tickItem;\n\n      if ( /*#__PURE__*/React.isValidElement(option)) {\n        tickItem = /*#__PURE__*/React.cloneElement(option, props);\n      } else if (_isFunction(option)) {\n        tickItem = option(props);\n      } else {\n        tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n          className: \"recharts-polar-radius-axis-tick-value\"\n        }), value);\n      }\n\n      return tickItem;\n    }\n  }]);\n\n  return PolarRadiusAxis;\n}(PureComponent);\nPolarRadiusAxis.displayName = 'PolarRadiusAxis';\nPolarRadiusAxis.axisType = 'radiusAxis';\nPolarRadiusAxis.defaultProps = {\n  type: 'number',\n  radiusAxisId: 0,\n  cx: 0,\n  cy: 0,\n  angle: 0,\n  orientation: 'right',\n  stroke: '#ccc',\n  axisLine: true,\n  tick: true,\n  tickCount: 5,\n  domain: [0, 'auto'],\n  allowDataOverflow: false,\n  scale: 'auto',\n  allowDuplicatedCategory: true\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 _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Axis of radial direction\n */\nimport React, { PureComponent } from 'react';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Polygon } from '../shape/Polygon';\nimport { Text } from '../component/Text';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\nimport { polarToCartesian } from '../util/PolarUtils';\nvar RADIAN = Math.PI / 180;\nvar eps = 1e-5;\nexport var PolarAngleAxis = /*#__PURE__*/function (_PureComponent) {\n  _inherits(PolarAngleAxis, _PureComponent);\n\n  var _super = _createSuper(PolarAngleAxis);\n\n  function PolarAngleAxis() {\n    _classCallCheck(this, PolarAngleAxis);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(PolarAngleAxis, [{\n    key: \"getTickLineCoord\",\n    value:\n    /**\n     * Calculate the coordinate of line endpoint\n     * @param  {Object} data The Data if ticks\n     * @return {Object} (x0, y0): The start point of text,\n     *                  (x1, y1): The end point close to text,\n     *                  (x2, y2): The end point close to axis\n     */\n    function getTickLineCoord(data) {\n      var _this$props = this.props,\n          cx = _this$props.cx,\n          cy = _this$props.cy,\n          radius = _this$props.radius,\n          orientation = _this$props.orientation,\n          tickSize = _this$props.tickSize;\n      var tickLineSize = tickSize || 8;\n      var p1 = polarToCartesian(cx, cy, radius, data.coordinate);\n      var p2 = polarToCartesian(cx, cy, radius + (orientation === 'inner' ? -1 : 1) * tickLineSize, data.coordinate);\n      return {\n        x1: p1.x,\n        y1: p1.y,\n        x2: p2.x,\n        y2: p2.y\n      };\n    }\n    /**\n     * Get the text-anchor of each tick\n     * @param  {Object} data Data of ticks\n     * @return {String} text-anchor\n     */\n\n  }, {\n    key: \"getTickTextAnchor\",\n    value: function getTickTextAnchor(data) {\n      var orientation = this.props.orientation;\n      var cos = Math.cos(-data.coordinate * RADIAN);\n      var textAnchor;\n\n      if (cos > eps) {\n        textAnchor = orientation === 'outer' ? 'start' : 'end';\n      } else if (cos < -eps) {\n        textAnchor = orientation === 'outer' ? 'end' : 'start';\n      } else {\n        textAnchor = 'middle';\n      }\n\n      return textAnchor;\n    }\n  }, {\n    key: \"renderAxisLine\",\n    value: function renderAxisLine() {\n      var _this$props2 = this.props,\n          cx = _this$props2.cx,\n          cy = _this$props2.cy,\n          radius = _this$props2.radius,\n          axisLine = _this$props2.axisLine,\n          axisLineType = _this$props2.axisLineType;\n\n      var props = _objectSpread(_objectSpread({}, filterProps(this.props)), {}, {\n        fill: 'none'\n      }, filterProps(axisLine));\n\n      if (axisLineType === 'circle') {\n        return /*#__PURE__*/React.createElement(Dot, _extends({\n          className: \"recharts-polar-angle-axis-line\"\n        }, props, {\n          cx: cx,\n          cy: cy,\n          r: radius\n        }));\n      }\n\n      var ticks = this.props.ticks;\n      var points = ticks.map(function (entry) {\n        return polarToCartesian(cx, cy, radius, entry.coordinate);\n      });\n      return /*#__PURE__*/React.createElement(Polygon, _extends({\n        className: \"recharts-polar-angle-axis-line\"\n      }, props, {\n        points: points\n      }));\n    }\n  }, {\n    key: \"renderTicks\",\n    value: function renderTicks() {\n      var _this = this;\n\n      var _this$props3 = this.props,\n          ticks = _this$props3.ticks,\n          tick = _this$props3.tick,\n          tickLine = _this$props3.tickLine,\n          tickFormatter = _this$props3.tickFormatter,\n          stroke = _this$props3.stroke;\n      var axisProps = filterProps(this.props);\n      var customTickProps = filterProps(tick);\n\n      var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n        fill: 'none'\n      }, filterProps(tickLine));\n\n      var items = ticks.map(function (entry, i) {\n        var lineCoord = _this.getTickLineCoord(entry);\n\n        var textAnchor = _this.getTickTextAnchor(entry);\n\n        var tickProps = _objectSpread(_objectSpread(_objectSpread({\n          textAnchor: textAnchor\n        }, axisProps), {}, {\n          stroke: 'none',\n          fill: stroke\n        }, customTickProps), {}, {\n          index: i,\n          payload: entry,\n          x: lineCoord.x2,\n          y: lineCoord.y2\n        });\n\n        return /*#__PURE__*/React.createElement(Layer, _extends({\n          className: \"recharts-polar-angle-axis-tick\",\n          key: \"tick-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n        }, adaptEventsOfChild(_this.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({\n          className: \"recharts-polar-angle-axis-tick-line\"\n        }, tickLineProps, lineCoord)), tick && PolarAngleAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value));\n      });\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: \"recharts-polar-angle-axis-ticks\"\n      }, items);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props4 = this.props,\n          ticks = _this$props4.ticks,\n          radius = _this$props4.radius,\n          axisLine = _this$props4.axisLine;\n\n      if (radius <= 0 || !ticks || !ticks.length) {\n        return null;\n      }\n\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: \"recharts-polar-angle-axis\"\n      }, axisLine && this.renderAxisLine(), this.renderTicks());\n    }\n  }], [{\n    key: \"renderTickItem\",\n    value: function renderTickItem(option, props, value) {\n      var tickItem;\n\n      if ( /*#__PURE__*/React.isValidElement(option)) {\n        tickItem = /*#__PURE__*/React.cloneElement(option, props);\n      } else if (_isFunction(option)) {\n        tickItem = option(props);\n      } else {\n        tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n          className: \"recharts-polar-angle-axis-tick-value\"\n        }), value);\n      }\n\n      return tickItem;\n    }\n  }]);\n\n  return PolarAngleAxis;\n}(PureComponent);\nPolarAngleAxis.displayName = 'PolarAngleAxis';\nPolarAngleAxis.axisType = 'angleAxis';\nPolarAngleAxis.defaultProps = {\n  type: 'category',\n  angleAxisId: 0,\n  scale: 'auto',\n  cx: 0,\n  cy: 0,\n  domain: [0, 'auto'],\n  orientation: 'outer',\n  axisLine: true,\n  tickLine: true,\n  tickSize: 8,\n  tick: true,\n  hide: false,\n  allowDuplicatedCategory: true\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 _isEqual from \"lodash/isEqual\";\nimport _get from \"lodash/get\";\nimport _isPlainObject from \"lodash/isPlainObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Render sectors of a pie\n */\nimport React, { PureComponent } from 'react';\nimport Animate from 'react-smooth';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Sector } from '../shape/Sector';\nimport { Curve } from '../shape/Curve';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { LabelList } from '../component/LabelList';\nimport { Cell } from '../component/Cell';\nimport { findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { polarToCartesian, getMaxRadius } from '../util/PolarUtils';\nimport { isNumber, getPercentValue, mathSign, interpolateNumber, uniqueId } from '../util/DataUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\nexport var Pie = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Pie, _PureComponent);\n\n  var _super = _createSuper(Pie);\n\n  function Pie(props) {\n    var _this;\n\n    _classCallCheck(this, Pie);\n\n    _this = _super.call(this, props);\n    _this.state = void 0;\n    _this.id = uniqueId('recharts-pie-');\n\n    _this.handleAnimationEnd = function () {\n      var onAnimationEnd = _this.props.onAnimationEnd;\n\n      _this.setState({\n        isAnimationFinished: true\n      });\n\n      if (_isFunction(onAnimationEnd)) {\n        onAnimationEnd();\n      }\n    };\n\n    _this.handleAnimationStart = function () {\n      var onAnimationStart = _this.props.onAnimationStart;\n\n      _this.setState({\n        isAnimationFinished: false\n      });\n\n      if (_isFunction(onAnimationStart)) {\n        onAnimationStart();\n      }\n    };\n\n    _this.state = {\n      isAnimationFinished: !props.isAnimationActive,\n      prevIsAnimationActive: props.isAnimationActive,\n      prevAnimationId: props.animationId\n    };\n    return _this;\n  }\n\n  _createClass(Pie, [{\n    key: \"isActiveIndex\",\n    value: function isActiveIndex(i) {\n      var activeIndex = this.props.activeIndex;\n\n      if (Array.isArray(activeIndex)) {\n        return activeIndex.indexOf(i) !== -1;\n      }\n\n      return i === activeIndex;\n    }\n  }, {\n    key: \"hasActiveIndex\",\n    value: function hasActiveIndex() {\n      var activeIndex = this.props.activeIndex;\n      return Array.isArray(activeIndex) ? activeIndex.length !== 0 : activeIndex || activeIndex === 0;\n    }\n  }, {\n    key: \"renderLabels\",\n    value: function renderLabels(sectors) {\n      var isAnimationActive = this.props.isAnimationActive;\n\n      if (isAnimationActive && !this.state.isAnimationFinished) {\n        return null;\n      }\n\n      var _this$props = this.props,\n          label = _this$props.label,\n          labelLine = _this$props.labelLine,\n          dataKey = _this$props.dataKey,\n          valueKey = _this$props.valueKey;\n      var pieProps = filterProps(this.props);\n      var customLabelProps = filterProps(label);\n      var customLabelLineProps = filterProps(labelLine);\n      var offsetRadius = label && label.offsetRadius || 20;\n      var labels = sectors.map(function (entry, i) {\n        var midAngle = (entry.startAngle + entry.endAngle) / 2;\n        var endPoint = polarToCartesian(entry.cx, entry.cy, entry.outerRadius + offsetRadius, midAngle);\n\n        var labelProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, pieProps), entry), {}, {\n          stroke: 'none'\n        }, customLabelProps), {}, {\n          index: i,\n          textAnchor: Pie.getTextAnchor(endPoint.x, entry.cx)\n        }, endPoint);\n\n        var lineProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, pieProps), entry), {}, {\n          fill: 'none',\n          stroke: entry.fill\n        }, customLabelLineProps), {}, {\n          index: i,\n          points: [polarToCartesian(entry.cx, entry.cy, entry.outerRadius, midAngle), endPoint],\n          key: 'line'\n        });\n\n        var realDataKey = dataKey; // TODO: compatible to lower versions\n\n        if (_isNil(dataKey) && _isNil(valueKey)) {\n          realDataKey = 'value';\n        } else if (_isNil(dataKey)) {\n          realDataKey = valueKey;\n        }\n\n        return (\n          /*#__PURE__*/\n          // eslint-disable-next-line react/no-array-index-key\n          React.createElement(Layer, {\n            key: \"label-\".concat(i)\n          }, labelLine && Pie.renderLabelLineItem(labelLine, lineProps), Pie.renderLabelItem(label, labelProps, getValueByDataKey(entry, realDataKey)))\n        );\n      });\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: \"recharts-pie-labels\"\n      }, labels);\n    }\n  }, {\n    key: \"renderSectorsStatically\",\n    value: function renderSectorsStatically(sectors) {\n      var _this2 = this;\n\n      var _this$props2 = this.props,\n          activeShape = _this$props2.activeShape,\n          blendStroke = _this$props2.blendStroke,\n          inactiveShapeProp = _this$props2.inactiveShape;\n      return sectors.map(function (entry, i) {\n        var inactiveShape = inactiveShapeProp && _this2.hasActiveIndex() ? inactiveShapeProp : null;\n        var sectorOptions = _this2.isActiveIndex(i) ? activeShape : inactiveShape;\n\n        var sectorProps = _objectSpread(_objectSpread({}, entry), {}, {\n          stroke: blendStroke ? entry.fill : entry.stroke\n        });\n\n        return /*#__PURE__*/React.createElement(Layer, _extends({\n          className: \"recharts-pie-sector\"\n        }, adaptEventsOfChild(_this2.props, entry, i), {\n          key: \"sector-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n        }), Pie.renderSectorItem(sectorOptions, sectorProps));\n      });\n    }\n  }, {\n    key: \"renderSectorsWithAnimation\",\n    value: function renderSectorsWithAnimation() {\n      var _this3 = this;\n\n      var _this$props3 = this.props,\n          sectors = _this$props3.sectors,\n          isAnimationActive = _this$props3.isAnimationActive,\n          animationBegin = _this$props3.animationBegin,\n          animationDuration = _this$props3.animationDuration,\n          animationEasing = _this$props3.animationEasing,\n          animationId = _this$props3.animationId;\n      var _this$state = this.state,\n          prevSectors = _this$state.prevSectors,\n          prevIsAnimationActive = _this$state.prevIsAnimationActive;\n      return /*#__PURE__*/React.createElement(Animate, {\n        begin: animationBegin,\n        duration: animationDuration,\n        isActive: isAnimationActive,\n        easing: animationEasing,\n        from: {\n          t: 0\n        },\n        to: {\n          t: 1\n        },\n        key: \"pie-\".concat(animationId, \"-\").concat(prevIsAnimationActive),\n        onAnimationStart: this.handleAnimationStart,\n        onAnimationEnd: this.handleAnimationEnd\n      }, function (_ref) {\n        var t = _ref.t;\n        var stepData = [];\n        var first = sectors && sectors[0];\n        var curAngle = first.startAngle;\n        sectors.forEach(function (entry, index) {\n          var prev = prevSectors && prevSectors[index];\n          var paddingAngle = index > 0 ? _get(entry, 'paddingAngle', 0) : 0;\n\n          if (prev) {\n            var angleIp = interpolateNumber(prev.endAngle - prev.startAngle, entry.endAngle - entry.startAngle);\n\n            var latest = _objectSpread(_objectSpread({}, entry), {}, {\n              startAngle: curAngle + paddingAngle,\n              endAngle: curAngle + angleIp(t) + paddingAngle\n            });\n\n            stepData.push(latest);\n            curAngle = latest.endAngle;\n          } else {\n            var endAngle = entry.endAngle,\n                startAngle = entry.startAngle;\n            var interpolatorAngle = interpolateNumber(0, endAngle - startAngle);\n            var deltaAngle = interpolatorAngle(t);\n\n            var _latest = _objectSpread(_objectSpread({}, entry), {}, {\n              startAngle: curAngle + paddingAngle,\n              endAngle: curAngle + deltaAngle + paddingAngle\n            });\n\n            stepData.push(_latest);\n            curAngle = _latest.endAngle;\n          }\n        });\n        return /*#__PURE__*/React.createElement(Layer, null, _this3.renderSectorsStatically(stepData));\n      });\n    }\n  }, {\n    key: \"renderSectors\",\n    value: function renderSectors() {\n      var _this$props4 = this.props,\n          sectors = _this$props4.sectors,\n          isAnimationActive = _this$props4.isAnimationActive;\n      var prevSectors = this.state.prevSectors;\n\n      if (isAnimationActive && sectors && sectors.length && (!prevSectors || !_isEqual(prevSectors, sectors))) {\n        return this.renderSectorsWithAnimation();\n      }\n\n      return this.renderSectorsStatically(sectors);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props5 = this.props,\n          hide = _this$props5.hide,\n          sectors = _this$props5.sectors,\n          className = _this$props5.className,\n          label = _this$props5.label,\n          cx = _this$props5.cx,\n          cy = _this$props5.cy,\n          innerRadius = _this$props5.innerRadius,\n          outerRadius = _this$props5.outerRadius,\n          isAnimationActive = _this$props5.isAnimationActive;\n      var isAnimationFinished = this.state.isAnimationFinished;\n\n      if (hide || !sectors || !sectors.length || !isNumber(cx) || !isNumber(cy) || !isNumber(innerRadius) || !isNumber(outerRadius)) {\n        return null;\n      }\n\n      var layerClass = classNames('recharts-pie', className);\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: layerClass\n      }, this.renderSectors(), label && this.renderLabels(sectors), Label.renderCallByParent(this.props, null, false), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, sectors, false));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (prevState.prevIsAnimationActive !== nextProps.isAnimationActive) {\n        return {\n          prevIsAnimationActive: nextProps.isAnimationActive,\n          prevAnimationId: nextProps.animationId,\n          curSectors: nextProps.sectors,\n          prevSectors: [],\n          isAnimationFinished: true\n        };\n      }\n\n      if (nextProps.isAnimationActive && nextProps.animationId !== prevState.prevAnimationId) {\n        return {\n          prevAnimationId: nextProps.animationId,\n          curSectors: nextProps.sectors,\n          prevSectors: prevState.curSectors,\n          isAnimationFinished: true\n        };\n      }\n\n      if (nextProps.sectors !== prevState.curSectors) {\n        return {\n          curSectors: nextProps.sectors,\n          isAnimationFinished: true\n        };\n      }\n\n      return null;\n    }\n  }, {\n    key: \"getTextAnchor\",\n    value: function getTextAnchor(x, cx) {\n      if (x > cx) {\n        return 'start';\n      }\n\n      if (x < cx) {\n        return 'end';\n      }\n\n      return 'middle';\n    }\n  }, {\n    key: \"renderLabelLineItem\",\n    value: function renderLabelLineItem(option, props) {\n      if ( /*#__PURE__*/React.isValidElement(option)) {\n        return /*#__PURE__*/React.cloneElement(option, props);\n      }\n\n      if (_isFunction(option)) {\n        return option(props);\n      }\n\n      return /*#__PURE__*/React.createElement(Curve, _extends({}, props, {\n        type: \"linear\",\n        className: \"recharts-pie-label-line\"\n      }));\n    }\n  }, {\n    key: \"renderLabelItem\",\n    value: function renderLabelItem(option, props, value) {\n      if ( /*#__PURE__*/React.isValidElement(option)) {\n        return /*#__PURE__*/React.cloneElement(option, props);\n      }\n\n      var label = value;\n\n      if (_isFunction(option)) {\n        label = option(props);\n\n        if ( /*#__PURE__*/React.isValidElement(label)) {\n          return label;\n        }\n      }\n\n      return /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n        alignmentBaseline: \"middle\",\n        className: \"recharts-pie-label-text\"\n      }), label);\n    }\n  }, {\n    key: \"renderSectorItem\",\n    value: function renderSectorItem(option, props) {\n      if ( /*#__PURE__*/React.isValidElement(option)) {\n        return /*#__PURE__*/React.cloneElement(option, props);\n      }\n\n      if (_isFunction(option)) {\n        return option(props);\n      }\n\n      if (_isPlainObject(option)) {\n        return /*#__PURE__*/React.createElement(Sector, _extends({}, props, option));\n      }\n\n      return /*#__PURE__*/React.createElement(Sector, props);\n    }\n  }]);\n\n  return Pie;\n}(PureComponent);\nPie.displayName = 'Pie';\nPie.defaultProps = {\n  stroke: '#fff',\n  fill: '#808080',\n  legendType: 'rect',\n  cx: '50%',\n  cy: '50%',\n  startAngle: 0,\n  endAngle: 360,\n  innerRadius: 0,\n  outerRadius: '80%',\n  paddingAngle: 0,\n  labelLine: true,\n  hide: false,\n  minAngle: 0,\n  isAnimationActive: !Global.isSsr,\n  animationBegin: 400,\n  animationDuration: 1500,\n  animationEasing: 'ease',\n  nameKey: 'name',\n  blendStroke: false\n};\n\nPie.parseDeltaAngle = function (startAngle, endAngle) {\n  var sign = mathSign(endAngle - startAngle);\n  var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n  return sign * deltaAngle;\n};\n\nPie.getRealPieData = function (item) {\n  var _item$props = item.props,\n      data = _item$props.data,\n      children = _item$props.children;\n  var presentationProps = filterProps(item.props);\n  var cells = findAllByType(children, Cell.displayName);\n\n  if (data && data.length) {\n    return data.map(function (entry, index) {\n      return _objectSpread(_objectSpread(_objectSpread({\n        payload: entry\n      }, presentationProps), entry), cells && cells[index] && cells[index].props);\n    });\n  }\n\n  if (cells && cells.length) {\n    return cells.map(function (cell) {\n      return _objectSpread(_objectSpread({}, presentationProps), cell.props);\n    });\n  }\n\n  return [];\n};\n\nPie.parseCoordinateOfPie = function (item, offset) {\n  var top = offset.top,\n      left = offset.left,\n      width = offset.width,\n      height = offset.height;\n  var maxPieRadius = getMaxRadius(width, height);\n  var cx = left + getPercentValue(item.props.cx, width, width / 2);\n  var cy = top + getPercentValue(item.props.cy, height, height / 2);\n  var innerRadius = getPercentValue(item.props.innerRadius, maxPieRadius, 0);\n  var outerRadius = getPercentValue(item.props.outerRadius, maxPieRadius, maxPieRadius * 0.8);\n  var maxRadius = item.props.maxRadius || Math.sqrt(width * width + height * height) / 2;\n  return {\n    cx: cx,\n    cy: cy,\n    innerRadius: innerRadius,\n    outerRadius: outerRadius,\n    maxRadius: maxRadius\n  };\n};\n\nPie.getComposedData = function (_ref2) {\n  var item = _ref2.item,\n      offset = _ref2.offset;\n  var pieData = Pie.getRealPieData(item);\n\n  if (!pieData || !pieData.length) {\n    return null;\n  }\n\n  var _item$props2 = item.props,\n      cornerRadius = _item$props2.cornerRadius,\n      startAngle = _item$props2.startAngle,\n      endAngle = _item$props2.endAngle,\n      paddingAngle = _item$props2.paddingAngle,\n      dataKey = _item$props2.dataKey,\n      nameKey = _item$props2.nameKey,\n      valueKey = _item$props2.valueKey,\n      tooltipType = _item$props2.tooltipType;\n  var minAngle = Math.abs(item.props.minAngle);\n  var coordinate = Pie.parseCoordinateOfPie(item, offset);\n  var deltaAngle = Pie.parseDeltaAngle(startAngle, endAngle);\n  var absDeltaAngle = Math.abs(deltaAngle);\n  var realDataKey = dataKey;\n\n  if (_isNil(dataKey) && _isNil(valueKey)) {\n    warn(false, \"Use \\\"dataKey\\\" to specify the value of pie,\\n      the props \\\"valueKey\\\" will be deprecated in 1.1.0\");\n    realDataKey = 'value';\n  } else if (_isNil(dataKey)) {\n    warn(false, \"Use \\\"dataKey\\\" to specify the value of pie,\\n      the props \\\"valueKey\\\" will be deprecated in 1.1.0\");\n    realDataKey = valueKey;\n  }\n\n  var notZeroItemCount = pieData.filter(function (entry) {\n    return getValueByDataKey(entry, realDataKey, 0) !== 0;\n  }).length;\n  var totalPadingAngle = (absDeltaAngle >= 360 ? notZeroItemCount : notZeroItemCount - 1) * paddingAngle;\n  var realTotalAngle = absDeltaAngle - notZeroItemCount * minAngle - totalPadingAngle;\n  var sum = pieData.reduce(function (result, entry) {\n    var val = getValueByDataKey(entry, realDataKey, 0);\n    return result + (isNumber(val) ? val : 0);\n  }, 0);\n  var sectors;\n\n  if (sum > 0) {\n    var prev;\n    sectors = pieData.map(function (entry, i) {\n      var val = getValueByDataKey(entry, realDataKey, 0);\n      var name = getValueByDataKey(entry, nameKey, i);\n      var percent = (isNumber(val) ? val : 0) / sum;\n      var tempStartAngle;\n\n      if (i) {\n        tempStartAngle = prev.endAngle + mathSign(deltaAngle) * paddingAngle * (val !== 0 ? 1 : 0);\n      } else {\n        tempStartAngle = startAngle;\n      }\n\n      var tempEndAngle = tempStartAngle + mathSign(deltaAngle) * ((val !== 0 ? minAngle : 0) + percent * realTotalAngle);\n      var midAngle = (tempStartAngle + tempEndAngle) / 2;\n      var middleRadius = (coordinate.innerRadius + coordinate.outerRadius) / 2;\n      var tooltipPayload = [{\n        name: name,\n        value: val,\n        payload: entry,\n        dataKey: realDataKey,\n        type: tooltipType\n      }];\n      var tooltipPosition = polarToCartesian(coordinate.cx, coordinate.cy, middleRadius, midAngle);\n      prev = _objectSpread(_objectSpread(_objectSpread({\n        percent: percent,\n        cornerRadius: cornerRadius,\n        name: name,\n        tooltipPayload: tooltipPayload,\n        midAngle: midAngle,\n        middleRadius: middleRadius,\n        tooltipPosition: tooltipPosition\n      }, entry), coordinate), {}, {\n        value: getValueByDataKey(entry, realDataKey),\n        startAngle: tempStartAngle,\n        endAngle: tempEndAngle,\n        payload: entry,\n        paddingAngle: mathSign(deltaAngle) * paddingAngle\n      });\n      return prev;\n    });\n  }\n\n  return _objectSpread(_objectSpread({}, coordinate), {}, {\n    sectors: sectors,\n    data: pieData\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 _isFunction from \"lodash/isFunction\";\nimport _range from \"lodash/range\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Brush\n */\nimport React, { PureComponent, Children } from 'react';\nimport classNames from 'classnames';\nimport { scalePoint } from 'd3-scale';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { generatePrefixStyle } from '../util/CssPrefixUtils';\nimport { filterProps } from '../util/types';\n\nvar createScale = function createScale(_ref) {\n  var data = _ref.data,\n      startIndex = _ref.startIndex,\n      endIndex = _ref.endIndex,\n      x = _ref.x,\n      width = _ref.width,\n      travellerWidth = _ref.travellerWidth;\n\n  if (!data || !data.length) {\n    return {};\n  }\n\n  var len = data.length;\n  var scale = scalePoint().domain(_range(0, len)).range([x, x + width - travellerWidth]);\n  var scaleValues = scale.domain().map(function (entry) {\n    return scale(entry);\n  });\n  return {\n    isTextActive: false,\n    isSlideMoving: false,\n    isTravellerMoving: false,\n    startX: scale(startIndex),\n    endX: scale(endIndex),\n    scale: scale,\n    scaleValues: scaleValues\n  };\n};\n\nvar isTouch = function isTouch(e) {\n  return e.changedTouches && !!e.changedTouches.length;\n};\n\nexport var Brush = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Brush, _PureComponent);\n\n  var _super = _createSuper(Brush);\n\n  function Brush(props) {\n    var _this;\n\n    _classCallCheck(this, Brush);\n\n    _this = _super.call(this, props);\n    _this.leaveTimer = void 0;\n    _this.travellerDragStartHandlers = void 0;\n\n    _this.handleDrag = function (e) {\n      if (_this.leaveTimer) {\n        clearTimeout(_this.leaveTimer);\n        _this.leaveTimer = null;\n      }\n\n      if (_this.state.isTravellerMoving) {\n        _this.handleTravellerMove(e);\n      } else if (_this.state.isSlideMoving) {\n        _this.handleSlideDrag(e);\n      }\n    };\n\n    _this.handleTouchMove = function (e) {\n      if (e.changedTouches != null && e.changedTouches.length > 0) {\n        _this.handleDrag(e.changedTouches[0]);\n      }\n    };\n\n    _this.handleDragEnd = function () {\n      _this.setState({\n        isTravellerMoving: false,\n        isSlideMoving: false\n      });\n\n      _this.detachDragEndListener();\n    };\n\n    _this.handleLeaveWrapper = function () {\n      if (_this.state.isTravellerMoving || _this.state.isSlideMoving) {\n        _this.leaveTimer = window.setTimeout(_this.handleDragEnd, _this.props.leaveTimeOut);\n      }\n    };\n\n    _this.handleEnterSlideOrTraveller = function () {\n      _this.setState({\n        isTextActive: true\n      });\n    };\n\n    _this.handleLeaveSlideOrTraveller = function () {\n      _this.setState({\n        isTextActive: false\n      });\n    };\n\n    _this.handleSlideDragStart = function (e) {\n      var event = isTouch(e) ? e.changedTouches[0] : e;\n\n      _this.setState({\n        isTravellerMoving: false,\n        isSlideMoving: true,\n        slideMoveStartX: event.pageX\n      });\n\n      _this.attachDragEndListener();\n    };\n\n    _this.travellerDragStartHandlers = {\n      startX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'startX'),\n      endX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'endX')\n    };\n    _this.state = {};\n    return _this;\n  }\n\n  _createClass(Brush, [{\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.leaveTimer) {\n        clearTimeout(this.leaveTimer);\n        this.leaveTimer = null;\n      }\n\n      this.detachDragEndListener();\n    }\n  }, {\n    key: \"getIndex\",\n    value: function getIndex(_ref2) {\n      var startX = _ref2.startX,\n          endX = _ref2.endX;\n      var scaleValues = this.state.scaleValues;\n      var _this$props = this.props,\n          gap = _this$props.gap,\n          data = _this$props.data;\n      var lastIndex = data.length - 1;\n      var min = Math.min(startX, endX);\n      var max = Math.max(startX, endX);\n      var minIndex = Brush.getIndexInRange(scaleValues, min);\n      var maxIndex = Brush.getIndexInRange(scaleValues, max);\n      return {\n        startIndex: minIndex - minIndex % gap,\n        endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - maxIndex % gap\n      };\n    }\n  }, {\n    key: \"getTextOfTick\",\n    value: function getTextOfTick(index) {\n      var _this$props2 = this.props,\n          data = _this$props2.data,\n          tickFormatter = _this$props2.tickFormatter,\n          dataKey = _this$props2.dataKey;\n      var text = getValueByDataKey(data[index], dataKey, index);\n      return _isFunction(tickFormatter) ? tickFormatter(text, index) : text;\n    }\n  }, {\n    key: \"attachDragEndListener\",\n    value: function attachDragEndListener() {\n      window.addEventListener('mouseup', this.handleDragEnd, true);\n      window.addEventListener('touchend', this.handleDragEnd, true);\n    }\n  }, {\n    key: \"detachDragEndListener\",\n    value: function detachDragEndListener() {\n      window.removeEventListener('mouseup', this.handleDragEnd, true);\n      window.removeEventListener('touchend', this.handleDragEnd, true);\n    }\n  }, {\n    key: \"handleSlideDrag\",\n    value: function handleSlideDrag(e) {\n      var _this$state = this.state,\n          slideMoveStartX = _this$state.slideMoveStartX,\n          startX = _this$state.startX,\n          endX = _this$state.endX;\n      var _this$props3 = this.props,\n          x = _this$props3.x,\n          width = _this$props3.width,\n          travellerWidth = _this$props3.travellerWidth,\n          startIndex = _this$props3.startIndex,\n          endIndex = _this$props3.endIndex,\n          onChange = _this$props3.onChange;\n      var delta = e.pageX - slideMoveStartX;\n\n      if (delta > 0) {\n        delta = Math.min(delta, x + width - travellerWidth - endX, x + width - travellerWidth - startX);\n      } else if (delta < 0) {\n        delta = Math.max(delta, x - startX, x - endX);\n      }\n\n      var newIndex = this.getIndex({\n        startX: startX + delta,\n        endX: endX + delta\n      });\n\n      if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n        onChange(newIndex);\n      }\n\n      this.setState({\n        startX: startX + delta,\n        endX: endX + delta,\n        slideMoveStartX: e.pageX\n      });\n    }\n  }, {\n    key: \"handleTravellerDragStart\",\n    value: function handleTravellerDragStart(id, e) {\n      var event = isTouch(e) ? e.changedTouches[0] : e;\n      this.setState({\n        isSlideMoving: false,\n        isTravellerMoving: true,\n        movingTravellerId: id,\n        brushMoveStartX: event.pageX\n      });\n      this.attachDragEndListener();\n    }\n  }, {\n    key: \"handleTravellerMove\",\n    value: function handleTravellerMove(e) {\n      var _this$setState;\n\n      var _this$state2 = this.state,\n          brushMoveStartX = _this$state2.brushMoveStartX,\n          movingTravellerId = _this$state2.movingTravellerId,\n          endX = _this$state2.endX,\n          startX = _this$state2.startX;\n      var prevValue = this.state[movingTravellerId];\n      var _this$props4 = this.props,\n          x = _this$props4.x,\n          width = _this$props4.width,\n          travellerWidth = _this$props4.travellerWidth,\n          onChange = _this$props4.onChange,\n          gap = _this$props4.gap,\n          data = _this$props4.data;\n      var params = {\n        startX: this.state.startX,\n        endX: this.state.endX\n      };\n      var delta = e.pageX - brushMoveStartX;\n\n      if (delta > 0) {\n        delta = Math.min(delta, x + width - travellerWidth - prevValue);\n      } else if (delta < 0) {\n        delta = Math.max(delta, x - prevValue);\n      }\n\n      params[movingTravellerId] = prevValue + delta;\n      var newIndex = this.getIndex(params);\n      var startIndex = newIndex.startIndex,\n          endIndex = newIndex.endIndex;\n\n      var isFullGap = function isFullGap() {\n        var lastIndex = data.length - 1;\n\n        if (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0) || endX < startX && endIndex === lastIndex || movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0) || endX > startX && endIndex === lastIndex) {\n          return true;\n        }\n\n        return false;\n      };\n\n      this.setState((_this$setState = {}, _defineProperty(_this$setState, movingTravellerId, prevValue + delta), _defineProperty(_this$setState, \"brushMoveStartX\", e.pageX), _this$setState), function () {\n        if (onChange) {\n          if (isFullGap()) {\n            onChange(newIndex);\n          }\n        }\n      });\n    }\n  }, {\n    key: \"renderBackground\",\n    value: function renderBackground() {\n      var _this$props5 = this.props,\n          x = _this$props5.x,\n          y = _this$props5.y,\n          width = _this$props5.width,\n          height = _this$props5.height,\n          fill = _this$props5.fill,\n          stroke = _this$props5.stroke;\n      return /*#__PURE__*/React.createElement(\"rect\", {\n        stroke: stroke,\n        fill: fill,\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      });\n    }\n  }, {\n    key: \"renderPanorama\",\n    value: function renderPanorama() {\n      var _this$props6 = this.props,\n          x = _this$props6.x,\n          y = _this$props6.y,\n          width = _this$props6.width,\n          height = _this$props6.height,\n          data = _this$props6.data,\n          children = _this$props6.children,\n          padding = _this$props6.padding;\n      var chartElement = Children.only(children);\n\n      if (!chartElement) {\n        return null;\n      }\n\n      return /*#__PURE__*/React.cloneElement(chartElement, {\n        x: x,\n        y: y,\n        width: width,\n        height: height,\n        margin: padding,\n        compact: true,\n        data: data\n      });\n    }\n  }, {\n    key: \"renderTravellerLayer\",\n    value: function renderTravellerLayer(travellerX, id) {\n      var _this$props7 = this.props,\n          y = _this$props7.y,\n          travellerWidth = _this$props7.travellerWidth,\n          height = _this$props7.height,\n          traveller = _this$props7.traveller;\n      var x = Math.max(travellerX, this.props.x);\n\n      var travellerProps = _objectSpread(_objectSpread({}, filterProps(this.props)), {}, {\n        x: x,\n        y: y,\n        width: travellerWidth,\n        height: height\n      });\n\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: \"recharts-brush-traveller\",\n        onMouseEnter: this.handleEnterSlideOrTraveller,\n        onMouseLeave: this.handleLeaveSlideOrTraveller,\n        onMouseDown: this.travellerDragStartHandlers[id],\n        onTouchStart: this.travellerDragStartHandlers[id],\n        style: {\n          cursor: 'col-resize'\n        }\n      }, Brush.renderTraveller(traveller, travellerProps));\n    }\n  }, {\n    key: \"renderSlide\",\n    value: function renderSlide(startX, endX) {\n      var _this$props8 = this.props,\n          y = _this$props8.y,\n          height = _this$props8.height,\n          stroke = _this$props8.stroke,\n          travellerWidth = _this$props8.travellerWidth;\n      var x = Math.min(startX, endX) + travellerWidth;\n      var width = Math.max(Math.abs(endX - startX) - travellerWidth, 0);\n      return /*#__PURE__*/React.createElement(\"rect\", {\n        className: \"recharts-brush-slide\",\n        onMouseEnter: this.handleEnterSlideOrTraveller,\n        onMouseLeave: this.handleLeaveSlideOrTraveller,\n        onMouseDown: this.handleSlideDragStart,\n        onTouchStart: this.handleSlideDragStart,\n        style: {\n          cursor: 'move'\n        },\n        stroke: \"none\",\n        fill: stroke,\n        fillOpacity: 0.2,\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      });\n    }\n  }, {\n    key: \"renderText\",\n    value: function renderText() {\n      var _this$props9 = this.props,\n          startIndex = _this$props9.startIndex,\n          endIndex = _this$props9.endIndex,\n          y = _this$props9.y,\n          height = _this$props9.height,\n          travellerWidth = _this$props9.travellerWidth,\n          stroke = _this$props9.stroke;\n      var _this$state3 = this.state,\n          startX = _this$state3.startX,\n          endX = _this$state3.endX;\n      var offset = 5;\n      var attrs = {\n        pointerEvents: 'none',\n        fill: stroke\n      };\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: \"recharts-brush-texts\"\n      }, /*#__PURE__*/React.createElement(Text, _extends({\n        textAnchor: \"end\",\n        verticalAnchor: \"middle\",\n        x: Math.min(startX, endX) - offset,\n        y: y + height / 2\n      }, attrs), this.getTextOfTick(startIndex)), /*#__PURE__*/React.createElement(Text, _extends({\n        textAnchor: \"start\",\n        verticalAnchor: \"middle\",\n        x: Math.max(startX, endX) + travellerWidth + offset,\n        y: y + height / 2\n      }, attrs), this.getTextOfTick(endIndex)));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props10 = this.props,\n          data = _this$props10.data,\n          className = _this$props10.className,\n          children = _this$props10.children,\n          x = _this$props10.x,\n          y = _this$props10.y,\n          width = _this$props10.width,\n          height = _this$props10.height,\n          alwaysShowText = _this$props10.alwaysShowText;\n      var _this$state4 = this.state,\n          startX = _this$state4.startX,\n          endX = _this$state4.endX,\n          isTextActive = _this$state4.isTextActive,\n          isSlideMoving = _this$state4.isSlideMoving,\n          isTravellerMoving = _this$state4.isTravellerMoving;\n\n      if (!data || !data.length || !isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || width <= 0 || height <= 0) {\n        return null;\n      }\n\n      var layerClass = classNames('recharts-brush', className);\n      var isPanoramic = React.Children.count(children) === 1;\n      var style = generatePrefixStyle('userSelect', 'none');\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: layerClass,\n        onMouseMove: this.handleDrag,\n        onMouseLeave: this.handleLeaveWrapper,\n        onTouchMove: this.handleTouchMove,\n        style: style\n      }, this.renderBackground(), isPanoramic && this.renderPanorama(), this.renderSlide(startX, endX), this.renderTravellerLayer(startX, 'startX'), this.renderTravellerLayer(endX, 'endX'), (isTextActive || isSlideMoving || isTravellerMoving || alwaysShowText) && this.renderText());\n    }\n  }], [{\n    key: \"renderDefaultTraveller\",\n    value: function renderDefaultTraveller(props) {\n      var x = props.x,\n          y = props.y,\n          width = props.width,\n          height = props.height,\n          stroke = props.stroke;\n      var lineY = Math.floor(y + height / 2) - 1;\n      return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"rect\", {\n        x: x,\n        y: y,\n        width: width,\n        height: height,\n        fill: stroke,\n        stroke: \"none\"\n      }), /*#__PURE__*/React.createElement(\"line\", {\n        x1: x + 1,\n        y1: lineY,\n        x2: x + width - 1,\n        y2: lineY,\n        fill: \"none\",\n        stroke: \"#fff\"\n      }), /*#__PURE__*/React.createElement(\"line\", {\n        x1: x + 1,\n        y1: lineY + 2,\n        x2: x + width - 1,\n        y2: lineY + 2,\n        fill: \"none\",\n        stroke: \"#fff\"\n      }));\n    }\n  }, {\n    key: \"renderTraveller\",\n    value: function renderTraveller(option, props) {\n      var rectangle;\n\n      if ( /*#__PURE__*/React.isValidElement(option)) {\n        rectangle = /*#__PURE__*/React.cloneElement(option, props);\n      } else if (_isFunction(option)) {\n        rectangle = option(props);\n      } else {\n        rectangle = Brush.renderDefaultTraveller(props);\n      }\n\n      return rectangle;\n    }\n  }, {\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var data = nextProps.data,\n          width = nextProps.width,\n          x = nextProps.x,\n          travellerWidth = nextProps.travellerWidth,\n          updateId = nextProps.updateId,\n          startIndex = nextProps.startIndex,\n          endIndex = nextProps.endIndex;\n\n      if (data !== prevState.prevData || updateId !== prevState.prevUpdateId) {\n        return _objectSpread({\n          prevData: data,\n          prevTravellerWidth: travellerWidth,\n          prevUpdateId: updateId,\n          prevX: x,\n          prevWidth: width\n        }, data && data.length ? createScale({\n          data: data,\n          width: width,\n          x: x,\n          travellerWidth: travellerWidth,\n          startIndex: startIndex,\n          endIndex: endIndex\n        }) : {\n          scale: null,\n          scaleValues: null\n        });\n      }\n\n      if (prevState.scale && (width !== prevState.prevWidth || x !== prevState.prevX || travellerWidth !== prevState.prevTravellerWidth)) {\n        prevState.scale.range([x, x + width - travellerWidth]);\n        var scaleValues = prevState.scale.domain().map(function (entry) {\n          return prevState.scale(entry);\n        });\n        return {\n          prevData: data,\n          prevTravellerWidth: travellerWidth,\n          prevUpdateId: updateId,\n          prevX: x,\n          prevWidth: width,\n          startX: prevState.scale(nextProps.startIndex),\n          endX: prevState.scale(nextProps.endIndex),\n          scaleValues: scaleValues\n        };\n      }\n\n      return null;\n    }\n  }, {\n    key: \"getIndexInRange\",\n    value: function getIndexInRange(range, x) {\n      var len = range.length;\n      var start = 0;\n      var end = len - 1;\n\n      while (end - start > 1) {\n        var middle = Math.floor((start + end) / 2);\n\n        if (range[middle] > x) {\n          end = middle;\n        } else {\n          start = middle;\n        }\n      }\n\n      return x >= range[end] ? end : start;\n    }\n  }]);\n\n  return Brush;\n}(PureComponent);\nBrush.displayName = 'Brush';\nBrush.defaultProps = {\n  height: 40,\n  travellerWidth: 5,\n  gap: 1,\n  fill: '#fff',\n  stroke: '#666',\n  padding: {\n    top: 1,\n    right: 1,\n    bottom: 1,\n    left: 1\n  },\n  leaveTimeOut: 1000,\n  alwaysShowText: false\n};", "function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n  if (!name) {\n    return null;\n  }\n\n  var camelName = name.replace(/(\\w)/, function (v) {\n    return v.toUpperCase();\n  });\n  var result = PREFIX_LIST.reduce(function (res, entry) {\n    return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, entry + camelName, value));\n  }, {});\n  result[name] = value;\n  return result;\n};", "import _some from \"lodash/some\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { createLabeledScales, rectWithCoords } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/types';\n\nvar renderLine = function renderLine(option, props) {\n  var line;\n\n  if ( /*#__PURE__*/React.isValidElement(option)) {\n    line = /*#__PURE__*/React.cloneElement(option, props);\n  } else if (_isFunction(option)) {\n    line = option(props);\n  } else {\n    line = /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n      className: \"recharts-reference-line-line\"\n    }));\n  }\n\n  return line;\n}; // TODO: ScaleHelper\n\n\nvar getEndPoints = function getEndPoints(scales, isFixedX, isFixedY, isSegment, props) {\n  var _props$viewBox = props.viewBox,\n      x = _props$viewBox.x,\n      y = _props$viewBox.y,\n      width = _props$viewBox.width,\n      height = _props$viewBox.height,\n      position = props.position;\n\n  if (isFixedY) {\n    var yCoord = props.y,\n        orientation = props.yAxis.orientation;\n    var coord = scales.y.apply(yCoord, {\n      position: position\n    });\n\n    if (ifOverflowMatches(props, 'discard') && !scales.y.isInRange(coord)) {\n      return null;\n    }\n\n    var points = [{\n      x: x + width,\n      y: coord\n    }, {\n      x: x,\n      y: coord\n    }];\n    return orientation === 'left' ? points.reverse() : points;\n  }\n\n  if (isFixedX) {\n    var xCoord = props.x,\n        _orientation = props.xAxis.orientation;\n\n    var _coord = scales.x.apply(xCoord, {\n      position: position\n    });\n\n    if (ifOverflowMatches(props, 'discard') && !scales.x.isInRange(_coord)) {\n      return null;\n    }\n\n    var _points = [{\n      x: _coord,\n      y: y + height\n    }, {\n      x: _coord,\n      y: y\n    }];\n    return _orientation === 'top' ? _points.reverse() : _points;\n  }\n\n  if (isSegment) {\n    var segment = props.segment;\n\n    var _points2 = segment.map(function (p) {\n      return scales.apply(p, {\n        position: position\n      });\n    });\n\n    if (ifOverflowMatches(props, 'discard') && _some(_points2, function (p) {\n      return !scales.isInRange(p);\n    })) {\n      return null;\n    }\n\n    return _points2;\n  }\n\n  return null;\n};\n\nexport function ReferenceLine(props) {\n  var fixedX = props.x,\n      fixedY = props.y,\n      segment = props.segment,\n      xAxis = props.xAxis,\n      yAxis = props.yAxis,\n      shape = props.shape,\n      className = props.className,\n      alwaysShow = props.alwaysShow,\n      clipPathId = props.clipPathId;\n  warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n  var scales = createLabeledScales({\n    x: xAxis.scale,\n    y: yAxis.scale\n  });\n  var isX = isNumOrStr(fixedX);\n  var isY = isNumOrStr(fixedY);\n  var isSegment = segment && segment.length === 2;\n  var endPoints = getEndPoints(scales, isX, isY, isSegment, props);\n\n  if (!endPoints) {\n    return null;\n  }\n\n  var _endPoints = _slicedToArray(endPoints, 2),\n      _endPoints$ = _endPoints[0],\n      x1 = _endPoints$.x,\n      y1 = _endPoints$.y,\n      _endPoints$2 = _endPoints[1],\n      x2 = _endPoints$2.x,\n      y2 = _endPoints$2.y;\n\n  var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n\n  var lineProps = _objectSpread(_objectSpread({\n    clipPath: clipPath\n  }, filterProps(props, true)), {}, {\n    x1: x1,\n    y1: y1,\n    x2: x2,\n    y2: y2\n  });\n\n  return /*#__PURE__*/React.createElement(Layer, {\n    className: classNames('recharts-reference-line', className)\n  }, renderLine(shape, lineProps), Label.renderCallByParent(props, rectWithCoords({\n    x1: x1,\n    y1: y1,\n    x2: x2,\n    y2: y2\n  })));\n}\nReferenceLine.displayName = 'ReferenceLine';\nReferenceLine.defaultProps = {\n  isFront: false,\n  ifOverflow: 'discard',\n  xAxisId: 0,\n  yAxisId: 0,\n  fill: 'none',\n  stroke: '#ccc',\n  fillOpacity: 1,\n  strokeWidth: 1,\n  position: 'middle'\n};", "export var ifOverflowMatches = function ifOverflowMatches(props, value) {\n  var alwaysShow = props.alwaysShow;\n  var ifOverflow = props.ifOverflow;\n\n  if (alwaysShow) {\n    ifOverflow = 'extendDomain';\n  }\n\n  return ifOverflow === value;\n};", "import _every from \"lodash/every\";\nimport _mapValues from \"lodash/mapValues\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nimport { getPercentValue } from './DataUtils';\n/**\n * Calculate the scale function, position, width, height of axes\n * @param  {Object} props     Latest props\n * @param  {Object} axisMap   The configuration of axes\n * @param  {Object} offset    The offset of main part in the svg element\n * @param  {String} axisType  The type of axes, x-axis or y-axis\n * @param  {String} chartName The name of chart\n * @return {Object} Configuration\n */\n\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n  var width = props.width,\n      height = props.height,\n      layout = props.layout,\n      children = props.children;\n  var ids = Object.keys(axisMap);\n  var steps = {\n    left: offset.left,\n    leftMirror: offset.left,\n    right: width - offset.right,\n    rightMirror: width - offset.right,\n    top: offset.top,\n    topMirror: offset.top,\n    bottom: height - offset.bottom,\n    bottomMirror: height - offset.bottom\n  };\n  var hasBar = !!findChildByType(children, 'Bar');\n  return ids.reduce(function (result, id) {\n    var axis = axisMap[id];\n    var orientation = axis.orientation,\n        domain = axis.domain,\n        _axis$padding = axis.padding,\n        padding = _axis$padding === void 0 ? {} : _axis$padding,\n        mirror = axis.mirror,\n        reversed = axis.reversed;\n    var offsetKey = \"\".concat(orientation).concat(mirror ? 'Mirror' : '');\n    var calculatedPadding, range, x, y, needSpace;\n\n    if (axis.type === 'number' && (axis.padding === 'gap' || axis.padding === 'no-gap')) {\n      var diff = domain[1] - domain[0];\n      var smallestDistanceBetweenValues = Infinity;\n      var sortedValues = axis.categoricalDomain.sort();\n      sortedValues.forEach(function (value, index) {\n        if (index > 0) {\n          smallestDistanceBetweenValues = Math.min((value || 0) - (sortedValues[index - 1] || 0), smallestDistanceBetweenValues);\n        }\n      });\n      var smallestDistanceInPercent = smallestDistanceBetweenValues / diff;\n      var rangeWidth = axis.layout === 'vertical' ? offset.height : offset.width;\n\n      if (axis.padding === 'gap') {\n        calculatedPadding = smallestDistanceInPercent * rangeWidth / 2;\n      }\n\n      if (axis.padding === 'no-gap') {\n        var gap = getPercentValue(props.barCategoryGap, smallestDistanceInPercent * rangeWidth);\n        var halfBand = smallestDistanceInPercent * rangeWidth / 2;\n        calculatedPadding = halfBand - gap - (halfBand - gap) / rangeWidth * gap;\n      }\n    }\n\n    if (axisType === 'xAxis') {\n      range = [offset.left + (padding.left || 0) + (calculatedPadding || 0), offset.left + offset.width - (padding.right || 0) - (calculatedPadding || 0)];\n    } else if (axisType === 'yAxis') {\n      range = layout === 'horizontal' ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)] : [offset.top + (padding.top || 0) + (calculatedPadding || 0), offset.top + offset.height - (padding.bottom || 0) - (calculatedPadding || 0)];\n    } else {\n      range = axis.range;\n    }\n\n    if (reversed) {\n      range = [range[1], range[0]];\n    }\n\n    var _parseScale = parseScale(axis, chartName, hasBar),\n        scale = _parseScale.scale,\n        realScaleType = _parseScale.realScaleType;\n\n    scale.domain(domain).range(range);\n    checkDomainOfScale(scale);\n    var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n      realScaleType: realScaleType\n    }));\n\n    if (axisType === 'xAxis') {\n      needSpace = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n      x = offset.left;\n      y = steps[offsetKey] - needSpace * axis.height;\n    } else if (axisType === 'yAxis') {\n      needSpace = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n      x = steps[offsetKey] - needSpace * axis.width;\n      y = offset.top;\n    }\n\n    var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n      realScaleType: realScaleType,\n      x: x,\n      y: y,\n      scale: scale,\n      width: axisType === 'xAxis' ? offset.width : axis.width,\n      height: axisType === 'yAxis' ? offset.height : axis.height\n    });\n\n    finalAxis.bandSize = getBandSizeOfAxis(finalAxis, ticks);\n\n    if (!axis.hide && axisType === 'xAxis') {\n      steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.height;\n    } else if (!axis.hide) {\n      steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.width;\n    }\n\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n  }, {});\n};\nexport var rectWithPoints = function rectWithPoints(_ref, _ref2) {\n  var x1 = _ref.x,\n      y1 = _ref.y;\n  var x2 = _ref2.x,\n      y2 = _ref2.y;\n  return {\n    x: Math.min(x1, x2),\n    y: Math.min(y1, y2),\n    width: Math.abs(x2 - x1),\n    height: Math.abs(y2 - y1)\n  };\n};\n/**\n * Compute the x, y, width, and height of a box from two reference points.\n * @param  {Object} coords     x1, x2, y1, and y2\n * @return {Object} object\n */\n\nexport var rectWithCoords = function rectWithCoords(_ref3) {\n  var x1 = _ref3.x1,\n      y1 = _ref3.y1,\n      x2 = _ref3.x2,\n      y2 = _ref3.y2;\n  return rectWithPoints({\n    x: x1,\n    y: y1\n  }, {\n    x: x2,\n    y: y2\n  });\n};\nexport var ScaleHelper = /*#__PURE__*/function () {\n  function ScaleHelper(scale) {\n    _classCallCheck(this, ScaleHelper);\n\n    this.scale = void 0;\n    this.scale = scale;\n  }\n\n  _createClass(ScaleHelper, [{\n    key: \"domain\",\n    get: function get() {\n      return this.scale.domain;\n    }\n  }, {\n    key: \"range\",\n    get: function get() {\n      return this.scale.range;\n    }\n  }, {\n    key: \"rangeMin\",\n    get: function get() {\n      return this.range()[0];\n    }\n  }, {\n    key: \"rangeMax\",\n    get: function get() {\n      return this.range()[1];\n    }\n  }, {\n    key: \"bandwidth\",\n    get: function get() {\n      return this.scale.bandwidth;\n    }\n  }, {\n    key: \"apply\",\n    value: function apply(value) {\n      var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          bandAware = _ref4.bandAware,\n          position = _ref4.position;\n\n      if (value === undefined) {\n        return undefined;\n      }\n\n      if (position) {\n        switch (position) {\n          case 'start':\n            {\n              return this.scale(value);\n            }\n\n          case 'middle':\n            {\n              var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n              return this.scale(value) + offset;\n            }\n\n          case 'end':\n            {\n              var _offset = this.bandwidth ? this.bandwidth() : 0;\n\n              return this.scale(value) + _offset;\n            }\n\n          default:\n            {\n              return this.scale(value);\n            }\n        }\n      }\n\n      if (bandAware) {\n        var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n\n        return this.scale(value) + _offset2;\n      }\n\n      return this.scale(value);\n    }\n  }, {\n    key: \"isInRange\",\n    value: function isInRange(value) {\n      var range = this.range();\n      var first = range[0];\n      var last = range[range.length - 1];\n      return first <= last ? value >= first && value <= last : value >= last && value <= first;\n    }\n  }], [{\n    key: \"create\",\n    value: function create(obj) {\n      return new ScaleHelper(obj);\n    }\n  }]);\n\n  return ScaleHelper;\n}();\nScaleHelper.EPS = 1e-4;\nexport var createLabeledScales = function createLabeledScales(options) {\n  var scales = Object.keys(options).reduce(function (res, key) {\n    return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, ScaleHelper.create(options[key])));\n  }, {});\n  return _objectSpread(_objectSpread({}, scales), {}, {\n    apply: function apply(coord) {\n      var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          bandAware = _ref5.bandAware,\n          position = _ref5.position;\n\n      return _mapValues(coord, function (value, label) {\n        return scales[label].apply(value, {\n          bandAware: bandAware,\n          position: position\n        });\n      });\n    },\n    isInRange: function isInRange(coord) {\n      return _every(coord, function (value, label) {\n        return scales[label].isInRange(value);\n      });\n    }\n  });\n};", "import _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileOverview Reference Dot\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Label } from '../component/Label';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { createLabeledScales } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/types';\n\nvar getCoordinate = function getCoordinate(props) {\n  var x = props.x,\n      y = props.y,\n      xAxis = props.xAxis,\n      yAxis = props.yAxis;\n  var scales = createLabeledScales({\n    x: xAxis.scale,\n    y: yAxis.scale\n  });\n  var result = scales.apply({\n    x: x,\n    y: y\n  }, {\n    bandAware: true\n  });\n\n  if (ifOverflowMatches(props, 'discard') && !scales.isInRange(result)) {\n    return null;\n  }\n\n  return result;\n};\n\nexport function ReferenceDot(props) {\n  var x = props.x,\n      y = props.y,\n      r = props.r,\n      alwaysShow = props.alwaysShow,\n      clipPathId = props.clipPathId;\n  var isX = isNumOrStr(x);\n  var isY = isNumOrStr(y);\n  warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n\n  if (!isX || !isY) {\n    return null;\n  }\n\n  var coordinate = getCoordinate(props);\n\n  if (!coordinate) {\n    return null;\n  }\n\n  var cx = coordinate.x,\n      cy = coordinate.y;\n  var shape = props.shape,\n      className = props.className;\n  var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n\n  var dotProps = _objectSpread(_objectSpread({\n    clipPath: clipPath\n  }, filterProps(props, true)), {}, {\n    cx: cx,\n    cy: cy\n  });\n\n  return /*#__PURE__*/React.createElement(Layer, {\n    className: classNames('recharts-reference-dot', className)\n  }, ReferenceDot.renderDot(shape, dotProps), Label.renderCallByParent(props, {\n    x: cx - r,\n    y: cy - r,\n    width: 2 * r,\n    height: 2 * r\n  }));\n}\nReferenceDot.displayName = 'ReferenceDot';\nReferenceDot.defaultProps = {\n  isFront: false,\n  ifOverflow: 'discard',\n  xAxisId: 0,\n  yAxisId: 0,\n  r: 10,\n  fill: '#fff',\n  stroke: '#ccc',\n  fillOpacity: 1,\n  strokeWidth: 1\n};\n\nReferenceDot.renderDot = function (option, props) {\n  var dot;\n\n  if ( /*#__PURE__*/React.isValidElement(option)) {\n    dot = /*#__PURE__*/React.cloneElement(option, props);\n  } else if (_isFunction(option)) {\n    dot = option(props);\n  } else {\n    dot = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n      cx: props.cx,\n      cy: props.cy,\n      className: \"recharts-reference-dot-dot\"\n    }));\n  }\n\n  return dot;\n};", "import _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { createLabeledScales, rectWithPoints } from '../util/CartesianUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { Rectangle } from '../shape/Rectangle';\nimport { filterProps } from '../util/types';\n\nvar getRect = function getRect(hasX1, hasX2, hasY1, hasY2, props) {\n  var xValue1 = props.x1,\n      xValue2 = props.x2,\n      yValue1 = props.y1,\n      yValue2 = props.y2,\n      xAxis = props.xAxis,\n      yAxis = props.yAxis;\n  if (!xAxis || !yAxis) return null;\n  var scales = createLabeledScales({\n    x: xAxis.scale,\n    y: yAxis.scale\n  });\n  var p1 = {\n    x: hasX1 ? scales.x.apply(xValue1, {\n      position: 'start'\n    }) : scales.x.rangeMin,\n    y: hasY1 ? scales.y.apply(yValue1, {\n      position: 'start'\n    }) : scales.y.rangeMin\n  };\n  var p2 = {\n    x: hasX2 ? scales.x.apply(xValue2, {\n      position: 'end'\n    }) : scales.x.rangeMax,\n    y: hasY2 ? scales.y.apply(yValue2, {\n      position: 'end'\n    }) : scales.y.rangeMax\n  };\n\n  if (ifOverflowMatches(props, 'discard') && (!scales.isInRange(p1) || !scales.isInRange(p2))) {\n    return null;\n  }\n\n  return rectWithPoints(p1, p2);\n};\n\nexport function ReferenceArea(props) {\n  var x1 = props.x1,\n      x2 = props.x2,\n      y1 = props.y1,\n      y2 = props.y2,\n      className = props.className,\n      alwaysShow = props.alwaysShow,\n      clipPathId = props.clipPathId;\n  warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n  var hasX1 = isNumOrStr(x1);\n  var hasX2 = isNumOrStr(x2);\n  var hasY1 = isNumOrStr(y1);\n  var hasY2 = isNumOrStr(y2);\n  var shape = props.shape;\n\n  if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n    return null;\n  }\n\n  var rect = getRect(hasX1, hasX2, hasY1, hasY2, props);\n\n  if (!rect && !shape) {\n    return null;\n  }\n\n  var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n  return /*#__PURE__*/React.createElement(Layer, {\n    className: classNames('recharts-reference-area', className)\n  }, ReferenceArea.renderRect(shape, _objectSpread(_objectSpread({\n    clipPath: clipPath\n  }, filterProps(props, true)), rect)), Label.renderCallByParent(props, rect));\n}\nReferenceArea.displayName = 'ReferenceArea';\nReferenceArea.defaultProps = {\n  isFront: false,\n  ifOverflow: 'discard',\n  xAxisId: 0,\n  yAxisId: 0,\n  r: 10,\n  fill: '#ccc',\n  fillOpacity: 0.5,\n  stroke: 'none',\n  strokeWidth: 1\n};\n\nReferenceArea.renderRect = function (option, props) {\n  var rect;\n\n  if ( /*#__PURE__*/React.isValidElement(option)) {\n    rect = /*#__PURE__*/React.cloneElement(option, props);\n  } else if (_isFunction(option)) {\n    rect = option(props);\n  } else {\n    rect = /*#__PURE__*/React.createElement(Rectangle, _extends({}, props, {\n      className: \"recharts-reference-area-rect\"\n    }));\n  }\n\n  return rect;\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 _get from \"lodash/get\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Cartesian Axis\n */\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { Global } from '../util/Global';\nimport { isNumber, mathSign } from '../util/DataUtils';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\nexport var CartesianAxis = /*#__PURE__*/function (_Component) {\n  _inherits(CartesianAxis, _Component);\n\n  var _super = _createSuper(CartesianAxis);\n\n  function CartesianAxis(props) {\n    var _this;\n\n    _classCallCheck(this, CartesianAxis);\n\n    _this = _super.call(this, props);\n    _this.layerReference = void 0;\n    _this.state = {\n      fontSize: '',\n      letterSpacing: ''\n    };\n    return _this;\n  } // todo Array<Tick>\n\n\n  _createClass(CartesianAxis, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(_ref, nextState) {\n      var viewBox = _ref.viewBox,\n          restProps = _objectWithoutProperties(_ref, [\"viewBox\"]);\n\n      // props.viewBox is sometimes generated every time -\n      // check that specially as object equality is likely to fail\n      var _this$props = this.props,\n          viewBoxOld = _this$props.viewBox,\n          restPropsOld = _objectWithoutProperties(_this$props, [\"viewBox\"]);\n\n      return !shallowEqual(viewBox, viewBoxOld) || !shallowEqual(restProps, restPropsOld) || !shallowEqual(nextState, this.state);\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var htmlLayer = this.layerReference;\n      if (!htmlLayer) return;\n      var tick = htmlLayer.getElementsByClassName('recharts-cartesian-axis-tick-value')[0];\n\n      if (tick) {\n        this.setState({\n          fontSize: window.getComputedStyle(tick).fontSize,\n          letterSpacing: window.getComputedStyle(tick).letterSpacing\n        });\n      }\n    }\n    /**\n     * Calculate the coordinates of endpoints in ticks\n     * @param  {Object} data The data of a simple tick\n     * @return {Object} (x1, y1): The coordinate of endpoint close to tick text\n     *  (x2, y2): The coordinate of endpoint close to axis\n     */\n\n  }, {\n    key: \"getTickLineCoord\",\n    value: function getTickLineCoord(data) {\n      var _this$props2 = this.props,\n          x = _this$props2.x,\n          y = _this$props2.y,\n          width = _this$props2.width,\n          height = _this$props2.height,\n          orientation = _this$props2.orientation,\n          tickSize = _this$props2.tickSize,\n          mirror = _this$props2.mirror,\n          tickMargin = _this$props2.tickMargin;\n      var x1, x2, y1, y2, tx, ty;\n      var sign = mirror ? -1 : 1;\n      var finalTickSize = data.tickSize || tickSize;\n      var tickCoord = isNumber(data.tickCoord) ? data.tickCoord : data.coordinate;\n\n      switch (orientation) {\n        case 'top':\n          x1 = x2 = data.coordinate;\n          y2 = y + +!mirror * height;\n          y1 = y2 - sign * finalTickSize;\n          ty = y1 - sign * tickMargin;\n          tx = tickCoord;\n          break;\n\n        case 'left':\n          y1 = y2 = data.coordinate;\n          x2 = x + +!mirror * width;\n          x1 = x2 - sign * finalTickSize;\n          tx = x1 - sign * tickMargin;\n          ty = tickCoord;\n          break;\n\n        case 'right':\n          y1 = y2 = data.coordinate;\n          x2 = x + +mirror * width;\n          x1 = x2 + sign * finalTickSize;\n          tx = x1 + sign * tickMargin;\n          ty = tickCoord;\n          break;\n\n        default:\n          x1 = x2 = data.coordinate;\n          y2 = y + +mirror * height;\n          y1 = y2 + sign * finalTickSize;\n          ty = y1 + sign * tickMargin;\n          tx = tickCoord;\n          break;\n      }\n\n      return {\n        line: {\n          x1: x1,\n          y1: y1,\n          x2: x2,\n          y2: y2\n        },\n        tick: {\n          x: tx,\n          y: ty\n        }\n      };\n    }\n  }, {\n    key: \"getTickTextAnchor\",\n    value: function getTickTextAnchor() {\n      var _this$props3 = this.props,\n          orientation = _this$props3.orientation,\n          mirror = _this$props3.mirror;\n      var textAnchor;\n\n      switch (orientation) {\n        case 'left':\n          textAnchor = mirror ? 'start' : 'end';\n          break;\n\n        case 'right':\n          textAnchor = mirror ? 'end' : 'start';\n          break;\n\n        default:\n          textAnchor = 'middle';\n          break;\n      }\n\n      return textAnchor;\n    }\n  }, {\n    key: \"getTickVerticalAnchor\",\n    value: function getTickVerticalAnchor() {\n      var _this$props4 = this.props,\n          orientation = _this$props4.orientation,\n          mirror = _this$props4.mirror;\n      var verticalAnchor = 'end';\n\n      switch (orientation) {\n        case 'left':\n        case 'right':\n          verticalAnchor = 'middle';\n          break;\n\n        case 'top':\n          verticalAnchor = mirror ? 'start' : 'end';\n          break;\n\n        default:\n          verticalAnchor = mirror ? 'end' : 'start';\n          break;\n      }\n\n      return verticalAnchor;\n    }\n  }, {\n    key: \"renderAxisLine\",\n    value: function renderAxisLine() {\n      var _this$props5 = this.props,\n          x = _this$props5.x,\n          y = _this$props5.y,\n          width = _this$props5.width,\n          height = _this$props5.height,\n          orientation = _this$props5.orientation,\n          mirror = _this$props5.mirror,\n          axisLine = _this$props5.axisLine;\n\n      var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(this.props)), filterProps(axisLine)), {}, {\n        fill: 'none'\n      });\n\n      if (orientation === 'top' || orientation === 'bottom') {\n        var needHeight = +(orientation === 'top' && !mirror || orientation === 'bottom' && mirror);\n        props = _objectSpread(_objectSpread({}, props), {}, {\n          x1: x,\n          y1: y + needHeight * height,\n          x2: x + width,\n          y2: y + needHeight * height\n        });\n      } else {\n        var needWidth = +(orientation === 'left' && !mirror || orientation === 'right' && mirror);\n        props = _objectSpread(_objectSpread({}, props), {}, {\n          x1: x + needWidth * width,\n          y1: y,\n          x2: x + needWidth * width,\n          y2: y + height\n        });\n      }\n\n      return /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n        className: classNames('recharts-cartesian-axis-line', _get(axisLine, 'className'))\n      }));\n    }\n  }, {\n    key: \"renderTicks\",\n    value:\n    /**\n     * render the ticks\n     * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n     * @param {string} fontSize Fontsize to consider for tick spacing\n     * @param {string} letterSpacing Letterspacing to consider for tick spacing\n     * @return {ReactComponent} renderedTicks\n     */\n    function renderTicks(ticks, fontSize, letterSpacing) {\n      var _this2 = this;\n\n      var _this$props6 = this.props,\n          tickLine = _this$props6.tickLine,\n          stroke = _this$props6.stroke,\n          tick = _this$props6.tick,\n          tickFormatter = _this$props6.tickFormatter,\n          unit = _this$props6.unit;\n      var finalTicks = CartesianAxis.getTicks(_objectSpread(_objectSpread({}, this.props), {}, {\n        ticks: ticks\n      }), fontSize, letterSpacing);\n      var textAnchor = this.getTickTextAnchor();\n      var verticalAnchor = this.getTickVerticalAnchor();\n      var axisProps = filterProps(this.props);\n      var customTickProps = filterProps(tick);\n\n      var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n        fill: 'none'\n      }, filterProps(tickLine));\n\n      var items = finalTicks.map(function (entry, i) {\n        var _this2$getTickLineCoo = _this2.getTickLineCoord(entry),\n            lineCoord = _this2$getTickLineCoo.line,\n            tickCoord = _this2$getTickLineCoo.tick;\n\n        var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n          textAnchor: textAnchor,\n          verticalAnchor: verticalAnchor\n        }, axisProps), {}, {\n          stroke: 'none',\n          fill: stroke\n        }, customTickProps), tickCoord), {}, {\n          index: i,\n          payload: entry,\n          visibleTicksCount: finalTicks.length,\n          tickFormatter: tickFormatter\n        });\n\n        return /*#__PURE__*/React.createElement(Layer, _extends({\n          className: \"recharts-cartesian-axis-tick\",\n          key: \"tick-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n        }, adaptEventsOfChild(_this2.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({}, tickLineProps, lineCoord, {\n          className: classNames('recharts-cartesian-axis-tick-line', _get(tickLine, 'className'))\n        })), tick && CartesianAxis.renderTickItem(tick, tickProps, \"\".concat(_isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value).concat(unit || '')));\n      });\n      return /*#__PURE__*/React.createElement(\"g\", {\n        className: \"recharts-cartesian-axis-ticks\"\n      }, items);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var _this$props7 = this.props,\n          axisLine = _this$props7.axisLine,\n          width = _this$props7.width,\n          height = _this$props7.height,\n          ticksGenerator = _this$props7.ticksGenerator,\n          className = _this$props7.className,\n          hide = _this$props7.hide;\n\n      if (hide) {\n        return null;\n      }\n\n      var _this$props8 = this.props,\n          ticks = _this$props8.ticks,\n          noTicksProps = _objectWithoutProperties(_this$props8, [\"ticks\"]);\n\n      var finalTicks = ticks;\n\n      if (_isFunction(ticksGenerator)) {\n        finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n      }\n\n      if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n        return null;\n      }\n\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: classNames('recharts-cartesian-axis', className),\n        ref: function ref(_ref2) {\n          _this3.layerReference = _ref2;\n        }\n      }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks, this.state.fontSize, this.state.letterSpacing), Label.renderCallByParent(this.props));\n    }\n  }], [{\n    key: \"getTicks\",\n    value: function getTicks(props, fontSize, letterSpacing) {\n      var tick = props.tick,\n          ticks = props.ticks,\n          viewBox = props.viewBox,\n          minTickGap = props.minTickGap,\n          orientation = props.orientation,\n          interval = props.interval,\n          tickFormatter = props.tickFormatter,\n          unit = props.unit;\n\n      if (!ticks || !ticks.length || !tick) {\n        return [];\n      }\n\n      if (isNumber(interval) || Global.isSsr) {\n        return CartesianAxis.getNumberIntervalTicks(ticks, typeof interval === 'number' && isNumber(interval) ? interval : 0);\n      }\n\n      if (interval === 'preserveStartEnd') {\n        return CartesianAxis.getTicksStart({\n          ticks: ticks,\n          tickFormatter: tickFormatter,\n          viewBox: viewBox,\n          orientation: orientation,\n          minTickGap: minTickGap,\n          unit: unit,\n          fontSize: fontSize,\n          letterSpacing: letterSpacing\n        }, true);\n      }\n\n      if (interval === 'preserveStart') {\n        return CartesianAxis.getTicksStart({\n          ticks: ticks,\n          tickFormatter: tickFormatter,\n          viewBox: viewBox,\n          orientation: orientation,\n          minTickGap: minTickGap,\n          unit: unit,\n          fontSize: fontSize,\n          letterSpacing: letterSpacing\n        });\n      }\n\n      return CartesianAxis.getTicksEnd({\n        ticks: ticks,\n        tickFormatter: tickFormatter,\n        viewBox: viewBox,\n        orientation: orientation,\n        minTickGap: minTickGap,\n        unit: unit,\n        fontSize: fontSize,\n        letterSpacing: letterSpacing\n      });\n    }\n  }, {\n    key: \"getNumberIntervalTicks\",\n    value: function getNumberIntervalTicks(ticks, interval) {\n      return ticks.filter(function (entry, i) {\n        return i % (interval + 1) === 0;\n      });\n    }\n  }, {\n    key: \"getTicksStart\",\n    value: function getTicksStart(_ref3, preserveEnd) {\n      var ticks = _ref3.ticks,\n          tickFormatter = _ref3.tickFormatter,\n          viewBox = _ref3.viewBox,\n          orientation = _ref3.orientation,\n          minTickGap = _ref3.minTickGap,\n          unit = _ref3.unit,\n          fontSize = _ref3.fontSize,\n          letterSpacing = _ref3.letterSpacing;\n      var x = viewBox.x,\n          y = viewBox.y,\n          width = viewBox.width,\n          height = viewBox.height;\n      var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n      var result = (ticks || []).slice(); // we need add the width of 'unit' only when sizeKey === 'width'\n\n      var unitSize = unit && sizeKey === 'width' ? getStringSize(unit, {\n        fontSize: fontSize,\n        letterSpacing: letterSpacing\n      })[sizeKey] : 0;\n      var len = result.length;\n      var sign = len >= 2 ? mathSign(result[1].coordinate - result[0].coordinate) : 1;\n      var start, end;\n\n      if (sign === 1) {\n        start = sizeKey === 'width' ? x : y;\n        end = sizeKey === 'width' ? x + width : y + height;\n      } else {\n        start = sizeKey === 'width' ? x + width : y + height;\n        end = sizeKey === 'width' ? x : y;\n      }\n\n      if (preserveEnd) {\n        // Try to guarantee the tail to be displayed\n        var tail = ticks[len - 1];\n        var tailContent = _isFunction(tickFormatter) ? tickFormatter(tail.value, len - 1) : tail.value;\n        var tailSize = getStringSize(tailContent, {\n          fontSize: fontSize,\n          letterSpacing: letterSpacing\n        })[sizeKey] + unitSize;\n        var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n        result[len - 1] = tail = _objectSpread(_objectSpread({}, tail), {}, {\n          tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n        });\n        var isTailShow = sign * (tail.tickCoord - sign * tailSize / 2 - start) >= 0 && sign * (tail.tickCoord + sign * tailSize / 2 - end) <= 0;\n\n        if (isTailShow) {\n          end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n          result[len - 1] = _objectSpread(_objectSpread({}, tail), {}, {\n            isShow: true\n          });\n        }\n      }\n\n      var count = preserveEnd ? len - 1 : len;\n\n      for (var i = 0; i < count; i++) {\n        var entry = result[i];\n        var content = _isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value;\n        var size = getStringSize(content, {\n          fontSize: fontSize,\n          letterSpacing: letterSpacing\n        })[sizeKey] + unitSize;\n\n        if (i === 0) {\n          var gap = sign * (entry.coordinate - sign * size / 2 - start);\n          result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n            tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n          });\n        } else {\n          result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n            tickCoord: entry.coordinate\n          });\n        }\n\n        var isShow = sign * (entry.tickCoord - sign * size / 2 - start) >= 0 && sign * (entry.tickCoord + sign * size / 2 - end) <= 0;\n\n        if (isShow) {\n          start = entry.tickCoord + sign * (size / 2 + minTickGap);\n          result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n            isShow: true\n          });\n        }\n      }\n\n      return result.filter(function (entry) {\n        return entry.isShow;\n      });\n    }\n  }, {\n    key: \"getTicksEnd\",\n    value: function getTicksEnd(_ref4) {\n      var ticks = _ref4.ticks,\n          tickFormatter = _ref4.tickFormatter,\n          viewBox = _ref4.viewBox,\n          orientation = _ref4.orientation,\n          minTickGap = _ref4.minTickGap,\n          unit = _ref4.unit,\n          fontSize = _ref4.fontSize,\n          letterSpacing = _ref4.letterSpacing;\n      var x = viewBox.x,\n          y = viewBox.y,\n          width = viewBox.width,\n          height = viewBox.height;\n      var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height'; // we need add the width of 'unit' only when sizeKey === 'width'\n\n      var unitSize = unit && sizeKey === 'width' ? getStringSize(unit, {\n        fontSize: fontSize,\n        letterSpacing: letterSpacing\n      })[sizeKey] : 0;\n      var result = (ticks || []).slice();\n      var len = result.length;\n      var sign = len >= 2 ? mathSign(result[1].coordinate - result[0].coordinate) : 1;\n      var start, end;\n\n      if (sign === 1) {\n        start = sizeKey === 'width' ? x : y;\n        end = sizeKey === 'width' ? x + width : y + height;\n      } else {\n        start = sizeKey === 'width' ? x + width : y + height;\n        end = sizeKey === 'width' ? x : y;\n      }\n\n      for (var i = len - 1; i >= 0; i--) {\n        var entry = result[i];\n        var content = _isFunction(tickFormatter) ? tickFormatter(entry.value, len - i - 1) : entry.value;\n        var size = getStringSize(content, {\n          fontSize: fontSize,\n          letterSpacing: letterSpacing\n        })[sizeKey] + unitSize;\n\n        if (i === len - 1) {\n          var gap = sign * (entry.coordinate + sign * size / 2 - end);\n          result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n            tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n          });\n        } else {\n          result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n            tickCoord: entry.coordinate\n          });\n        }\n\n        var isShow = sign * (entry.tickCoord - sign * size / 2 - start) >= 0 && sign * (entry.tickCoord + sign * size / 2 - end) <= 0;\n\n        if (isShow) {\n          end = entry.tickCoord - sign * (size / 2 + minTickGap);\n          result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n            isShow: true\n          });\n        }\n      }\n\n      return result.filter(function (entry) {\n        return entry.isShow;\n      });\n    }\n  }, {\n    key: \"renderTickItem\",\n    value: function renderTickItem(option, props, value) {\n      var tickItem;\n\n      if ( /*#__PURE__*/React.isValidElement(option)) {\n        tickItem = /*#__PURE__*/React.cloneElement(option, props);\n      } else if (_isFunction(option)) {\n        tickItem = option(props);\n      } else {\n        tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n          className: \"recharts-cartesian-axis-tick-value\"\n        }), value);\n      }\n\n      return tickItem;\n    }\n  }]);\n\n  return CartesianAxis;\n}(Component);\nCartesianAxis.displayName = 'CartesianAxis';\nCartesianAxis.defaultProps = {\n  x: 0,\n  y: 0,\n  width: 0,\n  height: 0,\n  viewBox: {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  // The orientation of axis\n  orientation: 'bottom',\n  // The ticks\n  ticks: [],\n  stroke: '#666',\n  tickLine: true,\n  axisLine: true,\n  tick: true,\n  mirror: false,\n  minTickGap: 5,\n  // The width or height of tick\n  tickSize: 6,\n  tickMargin: 2,\n  interval: 'preserveEnd'\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 _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Cartesian Grid\n */\nimport React, { PureComponent } from 'react';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/types';\nexport var CartesianGrid = /*#__PURE__*/function (_PureComponent) {\n  _inherits(CartesianGrid, _PureComponent);\n\n  var _super = _createSuper(CartesianGrid);\n\n  function CartesianGrid() {\n    _classCallCheck(this, CartesianGrid);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(CartesianGrid, [{\n    key: \"renderHorizontal\",\n    value:\n    /**\n     * Draw the horizontal grid lines\n     * @param {Array} horizontalPoints either passed in as props or generated from function\n     * @return {Group} Horizontal lines\n     */\n    function renderHorizontal(horizontalPoints) {\n      var _this = this;\n\n      var _this$props = this.props,\n          x = _this$props.x,\n          width = _this$props.width,\n          horizontal = _this$props.horizontal;\n\n      if (!horizontalPoints || !horizontalPoints.length) {\n        return null;\n      }\n\n      var items = horizontalPoints.map(function (entry, i) {\n        var props = _objectSpread(_objectSpread({}, _this.props), {}, {\n          x1: x,\n          y1: entry,\n          x2: x + width,\n          y2: entry,\n          key: \"line-\".concat(i),\n          index: i\n        });\n\n        return CartesianGrid.renderLineItem(horizontal, props);\n      });\n      return /*#__PURE__*/React.createElement(\"g\", {\n        className: \"recharts-cartesian-grid-horizontal\"\n      }, items);\n    }\n    /**\n     * Draw vertical grid lines\n     * @param {Array} verticalPoints either passed in as props or generated from function\n     * @return {Group} Vertical lines\n     */\n\n  }, {\n    key: \"renderVertical\",\n    value: function renderVertical(verticalPoints) {\n      var _this2 = this;\n\n      var _this$props2 = this.props,\n          y = _this$props2.y,\n          height = _this$props2.height,\n          vertical = _this$props2.vertical;\n\n      if (!verticalPoints || !verticalPoints.length) {\n        return null;\n      }\n\n      var items = verticalPoints.map(function (entry, i) {\n        var props = _objectSpread(_objectSpread({}, _this2.props), {}, {\n          x1: entry,\n          y1: y,\n          x2: entry,\n          y2: y + height,\n          key: \"line-\".concat(i),\n          index: i\n        });\n\n        return CartesianGrid.renderLineItem(vertical, props);\n      });\n      return /*#__PURE__*/React.createElement(\"g\", {\n        className: \"recharts-cartesian-grid-vertical\"\n      }, items);\n    }\n    /**\n     * Draw vertical grid stripes filled by colors\n     * @param {Array} verticalPoints either passed in as props or generated from function\n     * @return {Group} Vertical stripes\n     */\n\n  }, {\n    key: \"renderVerticalStripes\",\n    value: function renderVerticalStripes(verticalPoints) {\n      var verticalFill = this.props.verticalFill;\n\n      if (!verticalFill || !verticalFill.length) {\n        return null;\n      }\n\n      var _this$props3 = this.props,\n          fillOpacity = _this$props3.fillOpacity,\n          x = _this$props3.x,\n          y = _this$props3.y,\n          width = _this$props3.width,\n          height = _this$props3.height;\n      var verticalPointsUpdated = verticalPoints.slice().sort(function (a, b) {\n        return a - b;\n      });\n\n      if (x !== verticalPointsUpdated[0]) {\n        verticalPointsUpdated.unshift(0);\n      }\n\n      var items = verticalPointsUpdated.map(function (entry, i) {\n        var lineWidth = verticalPointsUpdated[i + 1] ? verticalPointsUpdated[i + 1] - entry : x + width - entry;\n\n        if (lineWidth <= 0) {\n          return null;\n        }\n\n        var colorIndex = i % verticalFill.length;\n        return /*#__PURE__*/React.createElement(\"rect\", {\n          key: \"react-\".concat(i) // eslint-disable-line react/no-array-index-key\n          ,\n          x: Math.round(entry + x - x),\n          y: y,\n          width: lineWidth,\n          height: height,\n          stroke: \"none\",\n          fill: verticalFill[colorIndex],\n          fillOpacity: fillOpacity,\n          className: \"recharts-cartesian-grid-bg\"\n        });\n      });\n      return /*#__PURE__*/React.createElement(\"g\", {\n        className: \"recharts-cartesian-gridstripes-vertical\"\n      }, items);\n    }\n    /**\n     * Draw horizontal grid stripes filled by colors\n     * @param {Array} horizontalPoints either passed in as props or generated from function\n     * @return {Group} Horizontal stripes\n     */\n\n  }, {\n    key: \"renderHorizontalStripes\",\n    value: function renderHorizontalStripes(horizontalPoints) {\n      var horizontalFill = this.props.horizontalFill;\n\n      if (!horizontalFill || !horizontalFill.length) {\n        return null;\n      }\n\n      var _this$props4 = this.props,\n          fillOpacity = _this$props4.fillOpacity,\n          x = _this$props4.x,\n          y = _this$props4.y,\n          width = _this$props4.width,\n          height = _this$props4.height;\n      var horizontalPointsUpdated = horizontalPoints.slice().sort(function (a, b) {\n        return a - b;\n      });\n\n      if (y !== horizontalPointsUpdated[0]) {\n        horizontalPointsUpdated.unshift(0);\n      }\n\n      var items = horizontalPointsUpdated.map(function (entry, i) {\n        var lineHeight = horizontalPointsUpdated[i + 1] ? horizontalPointsUpdated[i + 1] - entry : y + height - entry;\n\n        if (lineHeight <= 0) {\n          return null;\n        }\n\n        var colorIndex = i % horizontalFill.length;\n        return /*#__PURE__*/React.createElement(\"rect\", {\n          key: \"react-\".concat(i) // eslint-disable-line react/no-array-index-key\n          ,\n          y: Math.round(entry + y - y),\n          x: x,\n          height: lineHeight,\n          width: width,\n          stroke: \"none\",\n          fill: horizontalFill[colorIndex],\n          fillOpacity: fillOpacity,\n          className: \"recharts-cartesian-grid-bg\"\n        });\n      });\n      return /*#__PURE__*/React.createElement(\"g\", {\n        className: \"recharts-cartesian-gridstripes-horizontal\"\n      }, items);\n    }\n  }, {\n    key: \"renderBackground\",\n    value: function renderBackground() {\n      var fill = this.props.fill;\n\n      if (!fill || fill === 'none') {\n        return null;\n      }\n\n      var _this$props5 = this.props,\n          fillOpacity = _this$props5.fillOpacity,\n          x = _this$props5.x,\n          y = _this$props5.y,\n          width = _this$props5.width,\n          height = _this$props5.height;\n      return /*#__PURE__*/React.createElement(\"rect\", {\n        x: x,\n        y: y,\n        width: width,\n        height: height,\n        stroke: \"none\",\n        fill: fill,\n        fillOpacity: fillOpacity,\n        className: \"recharts-cartesian-grid-bg\"\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props6 = this.props,\n          x = _this$props6.x,\n          y = _this$props6.y,\n          width = _this$props6.width,\n          height = _this$props6.height,\n          horizontal = _this$props6.horizontal,\n          vertical = _this$props6.vertical,\n          horizontalCoordinatesGenerator = _this$props6.horizontalCoordinatesGenerator,\n          verticalCoordinatesGenerator = _this$props6.verticalCoordinatesGenerator,\n          xAxis = _this$props6.xAxis,\n          yAxis = _this$props6.yAxis,\n          offset = _this$props6.offset,\n          chartWidth = _this$props6.chartWidth,\n          chartHeight = _this$props6.chartHeight;\n\n      if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0 || !isNumber(x) || x !== +x || !isNumber(y) || y !== +y) {\n        return null;\n      }\n\n      var _this$props7 = this.props,\n          horizontalPoints = _this$props7.horizontalPoints,\n          verticalPoints = _this$props7.verticalPoints; // No horizontal points are specified\n\n      if ((!horizontalPoints || !horizontalPoints.length) && _isFunction(horizontalCoordinatesGenerator)) {\n        horizontalPoints = horizontalCoordinatesGenerator({\n          yAxis: yAxis,\n          width: chartWidth,\n          height: chartHeight,\n          offset: offset\n        });\n      } // No vertical points are specified\n\n\n      if ((!verticalPoints || !verticalPoints.length) && _isFunction(verticalCoordinatesGenerator)) {\n        verticalPoints = verticalCoordinatesGenerator({\n          xAxis: xAxis,\n          width: chartWidth,\n          height: chartHeight,\n          offset: offset\n        });\n      }\n\n      return /*#__PURE__*/React.createElement(\"g\", {\n        className: \"recharts-cartesian-grid\"\n      }, this.renderBackground(), horizontal && this.renderHorizontal(horizontalPoints), vertical && this.renderVertical(verticalPoints), horizontal && this.renderHorizontalStripes(horizontalPoints), vertical && this.renderVerticalStripes(verticalPoints));\n    }\n  }], [{\n    key: \"renderLineItem\",\n    value: function renderLineItem(option, props) {\n      var lineItem;\n\n      if ( /*#__PURE__*/React.isValidElement(option)) {\n        lineItem = /*#__PURE__*/React.cloneElement(option, props);\n      } else if (_isFunction(option)) {\n        lineItem = option(props);\n      } else {\n        var x1 = props.x1,\n            y1 = props.y1,\n            x2 = props.x2,\n            y2 = props.y2,\n            key = props.key,\n            others = _objectWithoutProperties(props, [\"x1\", \"y1\", \"x2\", \"y2\", \"key\"]);\n\n        lineItem = /*#__PURE__*/React.createElement(\"line\", _extends({}, filterProps(others), {\n          x1: x1,\n          y1: y1,\n          x2: x2,\n          y2: y2,\n          fill: \"none\",\n          key: key\n        }));\n      }\n\n      return lineItem;\n    }\n  }]);\n\n  return CartesianGrid;\n}(PureComponent);\nCartesianGrid.displayName = 'CartesianGrid';\nCartesianGrid.defaultProps = {\n  horizontal: true,\n  vertical: true,\n  // The ordinates of horizontal grid lines\n  horizontalPoints: [],\n  // The abscissas of vertical grid lines\n  verticalPoints: [],\n  stroke: '#ccc',\n  fill: 'none',\n  // The fill of colors of grid lines\n  verticalFill: [],\n  horizontalFill: []\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 _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Line\n */\nimport React, { PureComponent } from 'react';\nimport Animate from 'react-smooth';\nimport classNames from 'classnames';\nimport { Curve } from '../shape/Curve';\nimport { Dot } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { ErrorBar } from './ErrorBar';\nimport { uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps } from '../util/types';\nexport var Line = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Line, _PureComponent);\n\n  var _super = _createSuper(Line);\n\n  function Line() {\n    var _this;\n\n    _classCallCheck(this, Line);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.mainCurve = void 0;\n    _this.state = {\n      isAnimationFinished: true,\n      totalLength: 0\n    };\n\n    _this.getStrokeDasharray = function (length, totalLength, lines) {\n      var lineLength = lines.reduce(function (pre, next) {\n        return pre + next;\n      });\n      var count = Math.floor(length / lineLength);\n      var remainLength = length % lineLength;\n      var restLength = totalLength - length;\n      var remainLines = [];\n\n      for (var i = 0, sum = 0;; sum += lines[i], ++i) {\n        if (sum + lines[i] > remainLength) {\n          remainLines = [].concat(_toConsumableArray(lines.slice(0, i)), [remainLength - sum]);\n          break;\n        }\n      }\n\n      var emptyLines = remainLines.length % 2 === 0 ? [0, restLength] : [restLength];\n      return [].concat(_toConsumableArray(Line.repeat(lines, count)), _toConsumableArray(remainLines), emptyLines).map(function (line) {\n        return \"\".concat(line, \"px\");\n      }).join(', ');\n    };\n\n    _this.id = uniqueId('recharts-line-');\n\n    _this.pathRef = function (node) {\n      _this.mainCurve = node;\n    };\n\n    _this.handleAnimationEnd = function () {\n      _this.setState({\n        isAnimationFinished: true\n      });\n\n      if (_this.props.onAnimationEnd) {\n        _this.props.onAnimationEnd();\n      }\n    };\n\n    _this.handleAnimationStart = function () {\n      _this.setState({\n        isAnimationFinished: false\n      });\n\n      if (_this.props.onAnimationStart) {\n        _this.props.onAnimationStart();\n      }\n    };\n\n    return _this;\n  }\n\n  _createClass(Line, [{\n    key: \"componentDidMount\",\n    value:\n    /* eslint-disable  react/no-did-mount-set-state */\n    function componentDidMount() {\n      if (!this.props.isAnimationActive) {\n        return;\n      }\n\n      var totalLength = this.getTotalLength();\n      this.setState({\n        totalLength: totalLength\n      });\n    }\n  }, {\n    key: \"getTotalLength\",\n    value: function getTotalLength() {\n      var curveDom = this.mainCurve;\n\n      try {\n        return curveDom && curveDom.getTotalLength && curveDom.getTotalLength() || 0;\n      } catch (err) {\n        return 0;\n      }\n    }\n  }, {\n    key: \"renderErrorBar\",\n    value: function renderErrorBar() {\n      if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n        return null;\n      }\n\n      var _this$props = this.props,\n          points = _this$props.points,\n          xAxis = _this$props.xAxis,\n          yAxis = _this$props.yAxis,\n          layout = _this$props.layout,\n          children = _this$props.children;\n      var errorBarItems = findAllByType(children, ErrorBar.displayName);\n\n      if (!errorBarItems) {\n        return null;\n      }\n\n      function dataPointFormatter(dataPoint, dataKey) {\n        return {\n          x: dataPoint.x,\n          y: dataPoint.y,\n          value: dataPoint.value,\n          errorVal: getValueByDataKey(dataPoint.payload, dataKey)\n        };\n      }\n\n      return errorBarItems.map(function (item, i) {\n        return /*#__PURE__*/React.cloneElement(item, {\n          // eslint-disable-next-line react/no-array-index-key\n          key: \"bar-\".concat(i),\n          data: points,\n          xAxis: xAxis,\n          yAxis: yAxis,\n          layout: layout,\n          dataPointFormatter: dataPointFormatter\n        });\n      });\n    }\n  }, {\n    key: \"renderDots\",\n    value: function renderDots(needClip, clipPathId) {\n      var isAnimationActive = this.props.isAnimationActive;\n\n      if (isAnimationActive && !this.state.isAnimationFinished) {\n        return null;\n      }\n\n      var _this$props2 = this.props,\n          dot = _this$props2.dot,\n          points = _this$props2.points,\n          dataKey = _this$props2.dataKey;\n      var lineProps = filterProps(this.props);\n      var customDotProps = filterProps(dot, true);\n      var dots = points.map(function (entry, i) {\n        var dotProps = _objectSpread(_objectSpread(_objectSpread({\n          key: \"dot-\".concat(i),\n          r: 3\n        }, lineProps), customDotProps), {}, {\n          value: entry.value,\n          dataKey: dataKey,\n          cx: entry.x,\n          cy: entry.y,\n          index: i,\n          payload: entry.payload\n        });\n\n        return Line.renderDotItem(dot, dotProps);\n      });\n      var dotsProps = {\n        clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n      };\n      return /*#__PURE__*/React.createElement(Layer, _extends({\n        className: \"recharts-line-dots\",\n        key: \"dots\"\n      }, dotsProps), dots);\n    }\n  }, {\n    key: \"renderCurveStatically\",\n    value: function renderCurveStatically(points, needClip, clipPathId, props) {\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      var _this$props3 = this.props,\n          type = _this$props3.type,\n          layout = _this$props3.layout,\n          connectNulls = _this$props3.connectNulls,\n          ref = _this$props3.ref,\n          others = _objectWithoutProperties(_this$props3, [\"type\", \"layout\", \"connectNulls\", \"ref\"]);\n\n      var curveProps = _objectSpread(_objectSpread(_objectSpread({}, filterProps(others, true)), {}, {\n        fill: 'none',\n        className: 'recharts-line-curve',\n        clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null,\n        points: points\n      }, props), {}, {\n        type: type,\n        layout: layout,\n        connectNulls: connectNulls\n      });\n\n      return /*#__PURE__*/React.createElement(Curve, _extends({}, curveProps, {\n        pathRef: this.pathRef\n      }));\n    }\n  }, {\n    key: \"renderCurveWithAnimation\",\n    value: function renderCurveWithAnimation(needClip, clipPathId) {\n      var _this2 = this;\n\n      var _this$props4 = this.props,\n          points = _this$props4.points,\n          strokeDasharray = _this$props4.strokeDasharray,\n          isAnimationActive = _this$props4.isAnimationActive,\n          animationBegin = _this$props4.animationBegin,\n          animationDuration = _this$props4.animationDuration,\n          animationEasing = _this$props4.animationEasing,\n          animationId = _this$props4.animationId,\n          animateNewValues = _this$props4.animateNewValues,\n          width = _this$props4.width,\n          height = _this$props4.height;\n      var _this$state = this.state,\n          prevPoints = _this$state.prevPoints,\n          totalLength = _this$state.totalLength;\n      return /*#__PURE__*/React.createElement(Animate, {\n        begin: animationBegin,\n        duration: animationDuration,\n        isActive: isAnimationActive,\n        easing: animationEasing,\n        from: {\n          t: 0\n        },\n        to: {\n          t: 1\n        },\n        key: \"line-\".concat(animationId),\n        onAnimationEnd: this.handleAnimationEnd,\n        onAnimationStart: this.handleAnimationStart\n      }, function (_ref) {\n        var t = _ref.t;\n\n        if (prevPoints) {\n          var prevPointsDiffFactor = prevPoints.length / points.length;\n          var stepData = points.map(function (entry, index) {\n            var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n\n            if (prevPoints[prevPointIndex]) {\n              var prev = prevPoints[prevPointIndex];\n              var interpolatorX = interpolateNumber(prev.x, entry.x);\n              var interpolatorY = interpolateNumber(prev.y, entry.y);\n              return _objectSpread(_objectSpread({}, entry), {}, {\n                x: interpolatorX(t),\n                y: interpolatorY(t)\n              });\n            } // magic number of faking previous x and y location\n\n\n            if (animateNewValues) {\n              var _interpolatorX = interpolateNumber(width * 2, entry.x);\n\n              var _interpolatorY = interpolateNumber(height / 2, entry.y);\n\n              return _objectSpread(_objectSpread({}, entry), {}, {\n                x: _interpolatorX(t),\n                y: _interpolatorY(t)\n              });\n            }\n\n            return _objectSpread(_objectSpread({}, entry), {}, {\n              x: entry.x,\n              y: entry.y\n            });\n          });\n          return _this2.renderCurveStatically(stepData, needClip, clipPathId);\n        }\n\n        var interpolator = interpolateNumber(0, totalLength);\n        var curLength = interpolator(t);\n        var currentStrokeDasharray;\n\n        if (strokeDasharray) {\n          var lines = \"\".concat(strokeDasharray).split(/[,\\s]+/gim).map(function (num) {\n            return parseFloat(num);\n          });\n          currentStrokeDasharray = _this2.getStrokeDasharray(curLength, totalLength, lines);\n        } else {\n          currentStrokeDasharray = \"\".concat(curLength, \"px \").concat(totalLength - curLength, \"px\");\n        }\n\n        return _this2.renderCurveStatically(points, needClip, clipPathId, {\n          strokeDasharray: currentStrokeDasharray\n        });\n      });\n    }\n  }, {\n    key: \"renderCurve\",\n    value: function renderCurve(needClip, clipPathId) {\n      var _this$props5 = this.props,\n          points = _this$props5.points,\n          isAnimationActive = _this$props5.isAnimationActive;\n      var _this$state2 = this.state,\n          prevPoints = _this$state2.prevPoints,\n          totalLength = _this$state2.totalLength;\n\n      if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !_isEqual(prevPoints, points))) {\n        return this.renderCurveWithAnimation(needClip, clipPathId);\n      }\n\n      return this.renderCurveStatically(points, needClip, clipPathId);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props6 = this.props,\n          hide = _this$props6.hide,\n          dot = _this$props6.dot,\n          points = _this$props6.points,\n          className = _this$props6.className,\n          xAxis = _this$props6.xAxis,\n          yAxis = _this$props6.yAxis,\n          top = _this$props6.top,\n          left = _this$props6.left,\n          width = _this$props6.width,\n          height = _this$props6.height,\n          isAnimationActive = _this$props6.isAnimationActive,\n          id = _this$props6.id;\n\n      if (hide || !points || !points.length) {\n        return null;\n      }\n\n      var isAnimationFinished = this.state.isAnimationFinished;\n      var hasSinglePoint = points.length === 1;\n      var layerClass = classNames('recharts-line', className);\n      var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n      var clipPathId = _isNil(id) ? this.id : id;\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: layerClass\n      }, needClip ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n        id: \"clipPath-\".concat(clipPathId)\n      }, /*#__PURE__*/React.createElement(\"rect\", {\n        x: left,\n        y: top,\n        width: width,\n        height: height\n      }))) : null, !hasSinglePoint && this.renderCurve(needClip, clipPathId), this.renderErrorBar(), (hasSinglePoint || dot) && this.renderDots(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.animationId !== prevState.prevAnimationId) {\n        return {\n          prevAnimationId: nextProps.animationId,\n          curPoints: nextProps.points,\n          prevPoints: prevState.curPoints\n        };\n      }\n\n      if (nextProps.points !== prevState.curPoints) {\n        return {\n          curPoints: nextProps.points\n        };\n      }\n\n      return null;\n    }\n  }, {\n    key: \"repeat\",\n    value: function repeat(lines, count) {\n      var linesUnit = lines.length % 2 !== 0 ? [].concat(_toConsumableArray(lines), [0]) : lines;\n      var result = [];\n\n      for (var i = 0; i < count; ++i) {\n        result = [].concat(_toConsumableArray(result), _toConsumableArray(linesUnit));\n      }\n\n      return result;\n    }\n  }, {\n    key: \"renderDotItem\",\n    value: function renderDotItem(option, props) {\n      var dotItem;\n\n      if ( /*#__PURE__*/React.isValidElement(option)) {\n        dotItem = /*#__PURE__*/React.cloneElement(option, props);\n      } else if (_isFunction(option)) {\n        dotItem = option(props);\n      } else {\n        var className = classNames('recharts-line-dot', option ? option.className : '');\n        dotItem = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n          className: className\n        }));\n      }\n\n      return dotItem;\n    }\n  }]);\n\n  return Line;\n}(PureComponent);\nLine.displayName = 'Line';\nLine.defaultProps = {\n  xAxisId: 0,\n  yAxisId: 0,\n  connectNulls: false,\n  activeDot: true,\n  dot: true,\n  legendType: 'line',\n  stroke: '#3182bd',\n  strokeWidth: 1,\n  fill: '#fff',\n  points: [],\n  isAnimationActive: !Global.isSsr,\n  animateNewValues: true,\n  animationBegin: 0,\n  animationDuration: 1500,\n  animationEasing: 'ease',\n  hide: false\n};\n\nLine.getComposedData = function (_ref2) {\n  var props = _ref2.props,\n      xAxis = _ref2.xAxis,\n      yAxis = _ref2.yAxis,\n      xAxisTicks = _ref2.xAxisTicks,\n      yAxisTicks = _ref2.yAxisTicks,\n      dataKey = _ref2.dataKey,\n      bandSize = _ref2.bandSize,\n      displayedData = _ref2.displayedData,\n      offset = _ref2.offset;\n  var layout = props.layout;\n  var points = displayedData.map(function (entry, index) {\n    var value = getValueByDataKey(entry, dataKey);\n\n    if (layout === 'horizontal') {\n      return {\n        x: getCateCoordinateOfLine({\n          axis: xAxis,\n          ticks: xAxisTicks,\n          bandSize: bandSize,\n          entry: entry,\n          index: index\n        }),\n        y: _isNil(value) ? null : yAxis.scale(value),\n        value: value,\n        payload: entry\n      };\n    }\n\n    return {\n      x: _isNil(value) ? null : xAxis.scale(value),\n      y: getCateCoordinateOfLine({\n        axis: yAxis,\n        ticks: yAxisTicks,\n        bandSize: bandSize,\n        entry: entry,\n        index: index\n      }),\n      value: value,\n      payload: entry\n    };\n  });\n  return _objectSpread({\n    points: points,\n    layout: layout\n  }, offset);\n};", "function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Render a group of error bar\n */\nimport React from 'react';\nimport { Layer } from '../container/Layer';\nimport { filterProps } from '../util/types';\nexport function ErrorBar(props) {\n  var offset = props.offset,\n      layout = props.layout,\n      width = props.width,\n      dataKey = props.dataKey,\n      data = props.data,\n      dataPointFormatter = props.dataPointFormatter,\n      xAxis = props.xAxis,\n      yAxis = props.yAxis,\n      others = _objectWithoutProperties(props, [\"offset\", \"layout\", \"width\", \"dataKey\", \"data\", \"dataPointFormatter\", \"xAxis\", \"yAxis\"]);\n\n  var svgProps = filterProps(others);\n  var errorBars = data.map(function (entry, i) {\n    var _dataPointFormatter = dataPointFormatter(entry, dataKey),\n        x = _dataPointFormatter.x,\n        y = _dataPointFormatter.y,\n        value = _dataPointFormatter.value,\n        errorVal = _dataPointFormatter.errorVal;\n\n    if (!errorVal) {\n      return null;\n    }\n\n    var lineCoordinates = [];\n    var lowBound, highBound;\n\n    if (Array.isArray(errorVal)) {\n      var _errorVal = _slicedToArray(errorVal, 2);\n\n      lowBound = _errorVal[0];\n      highBound = _errorVal[1];\n    } else {\n      lowBound = highBound = errorVal;\n    }\n\n    if (layout === 'vertical') {\n      // error bar for horizontal charts, the y is fixed, x is a range value\n      var scale = xAxis.scale;\n      var yMid = y + offset;\n      var yMin = yMid + width;\n      var yMax = yMid - width;\n      var xMin = scale(value - lowBound);\n      var xMax = scale(value + highBound); // the right line of |--|\n\n      lineCoordinates.push({\n        x1: xMax,\n        y1: yMin,\n        x2: xMax,\n        y2: yMax\n      }); // the middle line of |--|\n\n      lineCoordinates.push({\n        x1: xMin,\n        y1: yMid,\n        x2: xMax,\n        y2: yMid\n      }); // the left line of |--|\n\n      lineCoordinates.push({\n        x1: xMin,\n        y1: yMin,\n        x2: xMin,\n        y2: yMax\n      });\n    } else if (layout === 'horizontal') {\n      // error bar for horizontal charts, the x is fixed, y is a range value\n      var _scale = yAxis.scale;\n      var xMid = x + offset;\n\n      var _xMin = xMid - width;\n\n      var _xMax = xMid + width;\n\n      var _yMin = _scale(value - lowBound);\n\n      var _yMax = _scale(value + highBound); // the top line\n\n\n      lineCoordinates.push({\n        x1: _xMin,\n        y1: _yMax,\n        x2: _xMax,\n        y2: _yMax\n      }); // the middle line\n\n      lineCoordinates.push({\n        x1: xMid,\n        y1: _yMin,\n        x2: xMid,\n        y2: _yMax\n      }); // the bottom line\n\n      lineCoordinates.push({\n        x1: _xMin,\n        y1: _yMin,\n        x2: _xMax,\n        y2: _yMin\n      });\n    }\n\n    return (\n      /*#__PURE__*/\n      // eslint-disable-next-line react/no-array-index-key\n      React.createElement(Layer, _extends({\n        className: \"recharts-errorBar\",\n        key: \"bar-\".concat(i)\n      }, svgProps), lineCoordinates.map(function (coordinates, index) {\n        return (\n          /*#__PURE__*/\n          // eslint-disable-next-line react/no-array-index-key\n          React.createElement(\"line\", _extends({}, coordinates, {\n            key: \"line-\".concat(index)\n          }))\n        );\n      }))\n    );\n  });\n  return /*#__PURE__*/React.createElement(Layer, {\n    className: \"recharts-errorBars\"\n  }, errorBars);\n}\nErrorBar.defaultProps = {\n  stroke: 'black',\n  strokeWidth: 1.5,\n  width: 5,\n  offset: 0,\n  layout: 'horizontal'\n};\nErrorBar.displayName = 'ErrorBar';", "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 _isNil from \"lodash/isNil\";\nimport _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Render a group of bar\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Animate from 'react-smooth';\nimport { Rectangle } from '../shape/Rectangle';\nimport { Layer } from '../container/Layer';\nimport { ErrorBar } from './ErrorBar';\nimport { Cell } from '../component/Cell';\nimport { LabelList } from '../component/LabelList';\nimport { uniqueId, mathSign, interpolateNumber } from '../util/DataUtils';\nimport { findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfBar, getValueByDataKey, truncateByDomain, getBaseValueOfBar, findPositionOfBar, getTooltipItem } from '../util/ChartUtils';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\nexport var Bar = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Bar, _PureComponent);\n\n  var _super = _createSuper(Bar);\n\n  function Bar() {\n    var _this;\n\n    _classCallCheck(this, Bar);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      isAnimationFinished: false\n    };\n    _this.id = uniqueId('recharts-bar-');\n\n    _this.handleAnimationEnd = function () {\n      var onAnimationEnd = _this.props.onAnimationEnd;\n\n      _this.setState({\n        isAnimationFinished: true\n      });\n\n      if (onAnimationEnd) {\n        onAnimationEnd();\n      }\n    };\n\n    _this.handleAnimationStart = function () {\n      var onAnimationStart = _this.props.onAnimationStart;\n\n      _this.setState({\n        isAnimationFinished: false\n      });\n\n      if (onAnimationStart) {\n        onAnimationStart();\n      }\n    };\n\n    return _this;\n  }\n\n  _createClass(Bar, [{\n    key: \"renderRectanglesStatically\",\n    value: function renderRectanglesStatically(data) {\n      var _this2 = this;\n\n      var shape = this.props.shape;\n      var baseProps = filterProps(this.props);\n      return data && data.map(function (entry, i) {\n        var props = _objectSpread(_objectSpread(_objectSpread({}, baseProps), entry), {}, {\n          index: i\n        });\n\n        return /*#__PURE__*/React.createElement(Layer, _extends({\n          className: \"recharts-bar-rectangle\"\n        }, adaptEventsOfChild(_this2.props, entry, i), {\n          key: \"rectangle-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n        }), Bar.renderRectangle(shape, props));\n      });\n    }\n  }, {\n    key: \"renderRectanglesWithAnimation\",\n    value: function renderRectanglesWithAnimation() {\n      var _this3 = this;\n\n      var _this$props = this.props,\n          data = _this$props.data,\n          layout = _this$props.layout,\n          isAnimationActive = _this$props.isAnimationActive,\n          animationBegin = _this$props.animationBegin,\n          animationDuration = _this$props.animationDuration,\n          animationEasing = _this$props.animationEasing,\n          animationId = _this$props.animationId;\n      var prevData = this.state.prevData;\n      return /*#__PURE__*/React.createElement(Animate, {\n        begin: animationBegin,\n        duration: animationDuration,\n        isActive: isAnimationActive,\n        easing: animationEasing,\n        from: {\n          t: 0\n        },\n        to: {\n          t: 1\n        },\n        key: \"bar-\".concat(animationId),\n        onAnimationEnd: this.handleAnimationEnd,\n        onAnimationStart: this.handleAnimationStart\n      }, function (_ref) {\n        var t = _ref.t;\n        var stepData = data.map(function (entry, index) {\n          var prev = prevData && prevData[index];\n\n          if (prev) {\n            var interpolatorX = interpolateNumber(prev.x, entry.x);\n            var interpolatorY = interpolateNumber(prev.y, entry.y);\n            var interpolatorWidth = interpolateNumber(prev.width, entry.width);\n            var interpolatorHeight = interpolateNumber(prev.height, entry.height);\n            return _objectSpread(_objectSpread({}, entry), {}, {\n              x: interpolatorX(t),\n              y: interpolatorY(t),\n              width: interpolatorWidth(t),\n              height: interpolatorHeight(t)\n            });\n          }\n\n          if (layout === 'horizontal') {\n            var _interpolatorHeight = interpolateNumber(0, entry.height);\n\n            var h = _interpolatorHeight(t);\n\n            return _objectSpread(_objectSpread({}, entry), {}, {\n              y: entry.y + entry.height - h,\n              height: h\n            });\n          }\n\n          var interpolator = interpolateNumber(0, entry.width);\n          var w = interpolator(t);\n          return _objectSpread(_objectSpread({}, entry), {}, {\n            width: w\n          });\n        });\n        return /*#__PURE__*/React.createElement(Layer, null, _this3.renderRectanglesStatically(stepData));\n      });\n    }\n  }, {\n    key: \"renderRectangles\",\n    value: function renderRectangles() {\n      var _this$props2 = this.props,\n          data = _this$props2.data,\n          isAnimationActive = _this$props2.isAnimationActive;\n      var prevData = this.state.prevData;\n\n      if (isAnimationActive && data && data.length && (!prevData || !_isEqual(prevData, data))) {\n        return this.renderRectanglesWithAnimation();\n      }\n\n      return this.renderRectanglesStatically(data);\n    }\n  }, {\n    key: \"renderBackground\",\n    value: function renderBackground() {\n      var _this4 = this;\n\n      var data = this.props.data;\n      var backgroundProps = filterProps(this.props.background);\n      return data.map(function (entry, i) {\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        var value = entry.value,\n            background = entry.background,\n            rest = _objectWithoutProperties(entry, [\"value\", \"background\"]);\n\n        if (!background) {\n          return null;\n        }\n\n        var props = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, rest), {}, {\n          fill: '#eee'\n        }, background), backgroundProps), adaptEventsOfChild(_this4.props, entry, i)), {}, {\n          index: i,\n          key: \"background-bar-\".concat(i),\n          className: 'recharts-bar-background-rectangle'\n        });\n\n        return Bar.renderRectangle(_this4.props.background, props);\n      });\n    }\n  }, {\n    key: \"renderErrorBar\",\n    value: function renderErrorBar() {\n      if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n        return null;\n      }\n\n      var _this$props3 = this.props,\n          data = _this$props3.data,\n          xAxis = _this$props3.xAxis,\n          yAxis = _this$props3.yAxis,\n          layout = _this$props3.layout,\n          children = _this$props3.children;\n      var errorBarItems = findAllByType(children, ErrorBar.displayName);\n\n      if (!errorBarItems) {\n        return null;\n      }\n\n      var offset = layout === 'vertical' ? data[0].height / 2 : data[0].width / 2;\n\n      function dataPointFormatter(dataPoint, dataKey) {\n        return {\n          x: dataPoint.x,\n          y: dataPoint.y,\n          value: dataPoint.value,\n          errorVal: getValueByDataKey(dataPoint, dataKey)\n        };\n      }\n\n      return errorBarItems.map(function (item, i) {\n        return /*#__PURE__*/React.cloneElement(item, {\n          key: \"error-bar-\".concat(i),\n          // eslint-disable-line react/no-array-index-key\n          data: data,\n          xAxis: xAxis,\n          yAxis: yAxis,\n          layout: layout,\n          offset: offset,\n          dataPointFormatter: dataPointFormatter\n        });\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props4 = this.props,\n          hide = _this$props4.hide,\n          data = _this$props4.data,\n          className = _this$props4.className,\n          xAxis = _this$props4.xAxis,\n          yAxis = _this$props4.yAxis,\n          left = _this$props4.left,\n          top = _this$props4.top,\n          width = _this$props4.width,\n          height = _this$props4.height,\n          isAnimationActive = _this$props4.isAnimationActive,\n          background = _this$props4.background,\n          id = _this$props4.id;\n\n      if (hide || !data || !data.length) {\n        return null;\n      }\n\n      var isAnimationFinished = this.state.isAnimationFinished;\n      var layerClass = classNames('recharts-bar', className);\n      var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n      var clipPathId = _isNil(id) ? this.id : id;\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: layerClass\n      }, needClip ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n        id: \"clipPath-\".concat(clipPathId)\n      }, /*#__PURE__*/React.createElement(\"rect\", {\n        x: left,\n        y: top,\n        width: width,\n        height: height\n      }))) : null, /*#__PURE__*/React.createElement(Layer, {\n        className: \"recharts-bar-rectangles\",\n        clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n      }, background ? this.renderBackground() : null, this.renderRectangles()), this.renderErrorBar(), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, data));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.animationId !== prevState.prevAnimationId) {\n        return {\n          prevAnimationId: nextProps.animationId,\n          curData: nextProps.data,\n          prevData: prevState.curData\n        };\n      }\n\n      if (nextProps.data !== prevState.curData) {\n        return {\n          curData: nextProps.data\n        };\n      }\n\n      return null;\n    }\n  }, {\n    key: \"renderRectangle\",\n    value: function renderRectangle(option, props) {\n      var rectangle;\n\n      if ( /*#__PURE__*/React.isValidElement(option)) {\n        rectangle = /*#__PURE__*/React.cloneElement(option, props);\n      } else if (_isFunction(option)) {\n        rectangle = option(props);\n      } else {\n        rectangle = /*#__PURE__*/React.createElement(Rectangle, props);\n      }\n\n      return rectangle;\n    }\n  }]);\n\n  return Bar;\n}(PureComponent);\nBar.displayName = 'Bar';\nBar.defaultProps = {\n  xAxisId: 0,\n  yAxisId: 0,\n  legendType: 'rect',\n  minPointSize: 0,\n  hide: false,\n  // data of bar\n  data: [],\n  layout: 'vertical',\n  isAnimationActive: !Global.isSsr,\n  animationBegin: 0,\n  animationDuration: 400,\n  animationEasing: 'ease'\n};\n\nBar.getComposedData = function (_ref2) {\n  var props = _ref2.props,\n      item = _ref2.item,\n      barPosition = _ref2.barPosition,\n      bandSize = _ref2.bandSize,\n      xAxis = _ref2.xAxis,\n      yAxis = _ref2.yAxis,\n      xAxisTicks = _ref2.xAxisTicks,\n      yAxisTicks = _ref2.yAxisTicks,\n      stackedData = _ref2.stackedData,\n      dataStartIndex = _ref2.dataStartIndex,\n      displayedData = _ref2.displayedData,\n      offset = _ref2.offset;\n  var pos = findPositionOfBar(barPosition, item);\n\n  if (!pos) {\n    return null;\n  }\n\n  var layout = props.layout;\n  var _item$props = item.props,\n      dataKey = _item$props.dataKey,\n      children = _item$props.children,\n      minPointSize = _item$props.minPointSize;\n  var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n  var stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n  var baseValue = getBaseValueOfBar({\n    numericAxis: numericAxis\n  });\n  var cells = findAllByType(children, Cell.displayName);\n  var rects = displayedData.map(function (entry, index) {\n    var value, x, y, width, height, background;\n\n    if (stackedData) {\n      value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);\n    } else {\n      value = getValueByDataKey(entry, dataKey);\n\n      if (!_isArray(value)) {\n        value = [baseValue, value];\n      }\n    }\n\n    if (layout === 'horizontal') {\n      x = getCateCoordinateOfBar({\n        axis: xAxis,\n        ticks: xAxisTicks,\n        bandSize: bandSize,\n        offset: pos.offset,\n        entry: entry,\n        index: index\n      });\n      y = yAxis.scale(value[1]);\n      width = pos.size;\n      height = yAxis.scale(value[0]) - yAxis.scale(value[1]);\n      background = {\n        x: x,\n        y: yAxis.y,\n        width: width,\n        height: yAxis.height\n      };\n\n      if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n        var delta = mathSign(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n        y -= delta;\n        height += delta;\n      }\n    } else {\n      x = xAxis.scale(value[0]);\n      y = getCateCoordinateOfBar({\n        axis: yAxis,\n        ticks: yAxisTicks,\n        bandSize: bandSize,\n        offset: pos.offset,\n        entry: entry,\n        index: index\n      });\n      width = xAxis.scale(value[1]) - xAxis.scale(value[0]);\n      height = pos.size;\n      background = {\n        x: xAxis.x,\n        y: y,\n        width: xAxis.width,\n        height: height\n      };\n\n      if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n        var _delta = mathSign(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n\n        width += _delta;\n      }\n    }\n\n    return _objectSpread(_objectSpread(_objectSpread({}, entry), {}, {\n      x: x,\n      y: y,\n      width: width,\n      height: height,\n      value: stackedData ? value : value[1],\n      payload: entry,\n      background: background\n    }, cells && cells[index] && cells[index].props), {}, {\n      tooltipPayload: [getTooltipItem(item, entry)],\n      tooltipPosition: {\n        x: x + width / 2,\n        y: y + height / 2\n      }\n    });\n  });\n  return _objectSpread({\n    data: rects,\n    layout: layout\n  }, offset);\n};", "/**\n * @fileOverview X Axis\n */\n\n/** Define of XAxis props */\nexport var XAxis = function XAxis() {\n  return null;\n};\nXAxis.displayName = 'XAxis';\nXAxis.defaultProps = {\n  allowDecimals: true,\n  hide: false,\n  orientation: 'bottom',\n  width: 0,\n  height: 30,\n  mirror: false,\n  xAxisId: 0,\n  tickCount: 5,\n  type: 'category',\n  domain: [0, 'auto'],\n  padding: {\n    left: 0,\n    right: 0\n  },\n  allowDataOverflow: false,\n  scale: 'auto',\n  reversed: false,\n  allowDuplicatedCategory: true\n};", "/**\n * @fileOverview Y Axis\n */\nexport var YAxis = function YAxis() {\n  return null;\n};\nYAxis.displayName = 'YAxis';\nYAxis.defaultProps = {\n  allowDuplicatedCategory: true,\n  allowDecimals: true,\n  hide: false,\n  orientation: 'left',\n  width: 60,\n  height: 0,\n  mirror: false,\n  yAxisId: 0,\n  tickCount: 5,\n  type: 'number',\n  domain: [0, 'auto'],\n  padding: {\n    top: 0,\n    bottom: 0\n  },\n  allowDataOverflow: false,\n  scale: 'auto',\n  reversed: false\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 _every from \"lodash/every\";\nimport _find from \"lodash/find\";\nimport _isFunction from \"lodash/isFunction\";\nimport _throttle from \"lodash/throttle\";\nimport _sortBy from \"lodash/sortBy\";\nimport _get from \"lodash/get\";\nimport _range from \"lodash/range\";\nimport _isNil from \"lodash/isNil\";\nimport _isBoolean from \"lodash/isBoolean\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component, cloneElement, isValidElement, createElement } from 'react';\nimport classNames from 'classnames';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Tooltip } from '../component/Tooltip';\nimport { Legend } from '../component/Legend';\nimport { Curve } from '../shape/Curve';\nimport { Cross } from '../shape/Cross';\nimport { Sector } from '../shape/Sector';\nimport { Dot } from '../shape/Dot';\nimport { isInRectangle, Rectangle } from '../shape/Rectangle';\nimport { findAllByType, findChildByType, getDisplayName, parseChildIndex, validateWidthHeight, isChildrenEqual, renderByOrder, getReactEventByType } from '../util/ReactUtils';\nimport { CartesianAxis } from '../cartesian/CartesianAxis';\nimport { Brush } from '../cartesian/Brush';\nimport { getOffset, calculateChartCoordinate } from '../util/DOMUtils';\nimport { getAnyElementOfObject, hasDuplicate, uniqueId, isNumber, findEntryInArray } from '../util/DataUtils';\nimport { calculateActiveTickIndex, getMainColorOfGraphicItem, getBarSizeList, getBarPosition, appendOffsetOfLegend, getLegendProps, combineEventHandlers, getTicksOfAxis, getCoordinatesOfGrid, getStackedDataOfItem, parseErrorBarsOfAxis, getBandSizeOfAxis, getStackGroupsByAxisId, isCategoricalAxis, getDomainOfItemsWithSameAxis, getDomainOfStackGroups, getDomainOfDataByKey, parseSpecifiedDomain, parseDomainOfCategoryAxis, getTooltipItem } from '../util/ChartUtils';\nimport { detectReferenceElementsDomain } from '../util/DetectReferenceElementsDomain';\nimport { inRangeOfSector, polarToCartesian } from '../util/PolarUtils';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { eventCenter, SYNC_EVENT } from '../util/Events';\nimport { filterProps, adaptEventHandlers } from '../util/types';\nvar ORIENT_MAP = {\n  xAxis: ['bottom', 'top'],\n  yAxis: ['left', 'right']\n};\nvar originCoordinate = {\n  x: 0,\n  y: 0\n}; // use legacy isFinite only if there is a problem (aka IE)\n// eslint-disable-next-line no-restricted-globals\n\nvar isFinit = Number.isFinite ? Number.isFinite : isFinite;\nvar defer = // eslint-disable-next-line no-nested-ternary\ntypeof requestAnimationFrame === 'function' ? requestAnimationFrame : typeof setImmediate === 'function' ? setImmediate : setTimeout;\nvar deferClear = // eslint-disable-next-line no-nested-ternary\ntypeof cancelAnimationFrame === 'function' ? cancelAnimationFrame : typeof clearImmediate === 'function' ? clearImmediate : clearTimeout;\n\nvar calculateTooltipPos = function calculateTooltipPos(rangeObj, layout) {\n  if (layout === 'horizontal') {\n    return rangeObj.x;\n  }\n\n  if (layout === 'vertical') {\n    return rangeObj.y;\n  }\n\n  if (layout === 'centric') {\n    return rangeObj.angle;\n  }\n\n  return rangeObj.radius;\n};\n\nvar getActiveCoordinate = function getActiveCoordinate(layout, tooltipTicks, activeIndex, rangeObj) {\n  var entry = tooltipTicks.find(function (tick) {\n    return tick && tick.index === activeIndex;\n  });\n\n  if (entry) {\n    if (layout === 'horizontal') {\n      return {\n        x: entry.coordinate,\n        y: rangeObj.y\n      };\n    }\n\n    if (layout === 'vertical') {\n      return {\n        x: rangeObj.x,\n        y: entry.coordinate\n      };\n    }\n\n    if (layout === 'centric') {\n      var _angle = entry.coordinate;\n      var _radius = rangeObj.radius;\n      return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, _radius, _angle)), {}, {\n        angle: _angle,\n        radius: _radius\n      });\n    }\n\n    var radius = entry.coordinate;\n    var angle = rangeObj.angle;\n    return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle)), {}, {\n      angle: angle,\n      radius: radius\n    });\n  }\n\n  return originCoordinate;\n};\n\nvar getDisplayedData = function getDisplayedData(data, _ref, item) {\n  var graphicalItems = _ref.graphicalItems,\n      dataStartIndex = _ref.dataStartIndex,\n      dataEndIndex = _ref.dataEndIndex;\n  var itemsData = (graphicalItems || []).reduce(function (result, child) {\n    var itemData = child.props.data;\n\n    if (itemData && itemData.length) {\n      return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n    }\n\n    return result;\n  }, []);\n\n  if (itemsData && itemsData.length > 0) {\n    return itemsData;\n  }\n\n  if (item && item.props && item.props.data && item.props.data.length > 0) {\n    return item.props.data;\n  }\n\n  if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n    return data.slice(dataStartIndex, dataEndIndex + 1);\n  }\n\n  return [];\n};\n/**\n * Get the content to be displayed in the tooltip\n * @param  {Object} state          Current state\n * @param  {Array}  chartData      The data defined in chart\n * @param  {Number} activeIndex    Active index of data\n * @param  {String} activeLabel    Active label of data\n * @return {Array}                 The content of tooltip\n */\n\n\nvar getTooltipContent = function getTooltipContent(state, chartData, activeIndex, activeLabel) {\n  var graphicalItems = state.graphicalItems,\n      tooltipAxis = state.tooltipAxis;\n  var displayedData = getDisplayedData(chartData, state);\n\n  if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n    return null;\n  } // get data by activeIndex when the axis don't allow duplicated category\n\n\n  return graphicalItems.reduce(function (result, child) {\n    var hide = child.props.hide;\n\n    if (hide) {\n      return result;\n    }\n\n    var data = child.props.data;\n    var payload;\n\n    if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n      // graphic child has data props\n      var entries = data === undefined ? displayedData : data;\n      payload = findEntryInArray(entries, tooltipAxis.dataKey, activeLabel);\n    } else {\n      payload = data && data[activeIndex] || displayedData[activeIndex];\n    }\n\n    if (!payload) {\n      return result;\n    }\n\n    return [].concat(_toConsumableArray(result), [getTooltipItem(child, payload)]);\n  }, []);\n};\n/**\n * Returns tooltip data based on a mouse position (as a parameter or in state)\n * @param  {Object} state     current state\n * @param  {Array}  chartData the data defined in chart\n * @param  {String} layout     The layout type of chart\n * @param  {Object} rangeObj  { x, y } coordinates\n * @return {Object}           Tooltip data data\n */\n\n\nvar getTooltipData = function getTooltipData(state, chartData, layout, rangeObj) {\n  var rangeData = rangeObj || {\n    x: state.chartX,\n    y: state.chartY\n  };\n  var pos = calculateTooltipPos(rangeData, layout);\n  var ticks = state.orderedTooltipTicks,\n      axis = state.tooltipAxis,\n      tooltipTicks = state.tooltipTicks;\n  var activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n\n  if (activeIndex >= 0 && tooltipTicks) {\n    var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n    var activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n    var activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n    return {\n      activeTooltipIndex: activeIndex,\n      activeLabel: activeLabel,\n      activePayload: activePayload,\n      activeCoordinate: activeCoordinate\n    };\n  }\n\n  return null;\n};\n/**\n * Get the configuration of axis by the options of axis instance\n * @param  {Object} props         Latest props\n * @param {Array}  axes           The instance of axes\n * @param  {Array} graphicalItems The instances of item\n * @param  {String} axisType      The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param  {String} axisIdKey     The unique id of an axis\n * @param  {Object} stackGroups   The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex   The end index of the data series when a brush is applied\n * @return {Object}      Configuration\n */\n\n\nvar getAxisMapByAxes = function getAxisMapByAxes(props, _ref2) {\n  var axes = _ref2.axes,\n      graphicalItems = _ref2.graphicalItems,\n      axisType = _ref2.axisType,\n      axisIdKey = _ref2.axisIdKey,\n      stackGroups = _ref2.stackGroups,\n      dataStartIndex = _ref2.dataStartIndex,\n      dataEndIndex = _ref2.dataEndIndex;\n  var layout = props.layout,\n      children = props.children,\n      stackOffset = props.stackOffset;\n  var isCategorical = isCategoricalAxis(layout, axisType); // Eliminate duplicated axes\n\n  var axisMap = axes.reduce(function (result, child) {\n    var _child$props = child.props,\n        type = _child$props.type,\n        dataKey = _child$props.dataKey,\n        allowDataOverflow = _child$props.allowDataOverflow,\n        allowDuplicatedCategory = _child$props.allowDuplicatedCategory,\n        scale = _child$props.scale,\n        ticks = _child$props.ticks;\n    var axisId = child.props[axisIdKey];\n    var displayedData = getDisplayedData(props.data, {\n      graphicalItems: graphicalItems.filter(function (item) {\n        return item.props[axisIdKey] === axisId;\n      }),\n      dataStartIndex: dataStartIndex,\n      dataEndIndex: dataEndIndex\n    });\n    var len = displayedData.length;\n\n    if (!result[axisId]) {\n      var domain, duplicateDomain, categoricalDomain;\n\n      if (dataKey) {\n        // has dataKey in <Axis />\n        domain = getDomainOfDataByKey(displayedData, dataKey, type);\n\n        if (type === 'category' && isCategorical) {\n          // the field type is category data and this axis is catrgorical axis\n          var duplicate = hasDuplicate(domain);\n\n          if (allowDuplicatedCategory && duplicate) {\n            duplicateDomain = domain; // When category axis has duplicated text, serial numbers are used to generate scale\n\n            domain = _range(0, len);\n          } else if (!allowDuplicatedCategory) {\n            // remove duplicated category\n            domain = parseDomainOfCategoryAxis(child.props.domain, domain, child).reduce(function (finalDomain, entry) {\n              return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n            }, []);\n          }\n        } else if (type === 'category') {\n          // the field type is category data and this axis is numerical axis\n          if (!allowDuplicatedCategory) {\n            domain = parseDomainOfCategoryAxis(child.props.domain, domain, child).reduce(function (finalDomain, entry) {\n              return finalDomain.indexOf(entry) >= 0 || entry === '' || _isNil(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n            }, []);\n          } else {\n            // eliminate undefined or null or empty string\n            domain = domain.filter(function (entry) {\n              return entry !== '' && !_isNil(entry);\n            });\n          }\n        } else if (type === 'number') {\n          // the field type is numerical\n          var errorBarsDomain = parseErrorBarsOfAxis(displayedData, graphicalItems.filter(function (item) {\n            return item.props[axisIdKey] === axisId && !item.props.hide;\n          }), dataKey, axisType, layout);\n\n          if (errorBarsDomain) {\n            domain = errorBarsDomain;\n          }\n        }\n\n        if (isCategorical && (type === 'number' || scale !== 'auto')) {\n          categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n        }\n      } else if (isCategorical) {\n        // the axis is a categorical axis\n        domain = _range(0, len);\n      } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack && type === 'number') {\n        // when stackOffset is 'expand', the domain may be calculated as [0, 1.000000000002]\n        domain = stackOffset === 'expand' ? [0, 1] : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n      } else {\n        domain = getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n          return item.props[axisIdKey] === axisId && !item.props.hide;\n        }), type, layout, true);\n      }\n\n      if (type === 'number') {\n        // To detect wether there is any reference lines whose props alwaysShow is true\n        domain = detectReferenceElementsDomain(children, domain, axisId, axisType, ticks);\n\n        if (child.props.domain) {\n          domain = parseSpecifiedDomain(child.props.domain, domain, allowDataOverflow);\n        }\n      } else if (type === 'category' && child.props.domain) {\n        var axisDomain = child.props.domain;\n        var isDomainValidate = domain.every(function (entry) {\n          return axisDomain.indexOf(entry) >= 0;\n        });\n\n        if (isDomainValidate) {\n          domain = axisDomain;\n        }\n      }\n\n      return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({}, child.props), {}, {\n        axisType: axisType,\n        domain: domain,\n        categoricalDomain: categoricalDomain,\n        duplicateDomain: duplicateDomain,\n        originalDomain: child.props.domain,\n        isCategorical: isCategorical,\n        layout: layout\n      })));\n    }\n\n    return result;\n  }, {});\n  return axisMap;\n};\n/**\n * Get the configuration of axis by the options of item,\n * this kind of axis does not display in chart\n * @param  {Object} props         Latest props\n * @param  {Array} graphicalItems The instances of item\n * @param  {ReactElement} Axis    Axis Component\n * @param  {String} axisType      The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param  {String} axisIdKey     The unique id of an axis\n * @param  {Object} stackGroups   The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex   The end index of the data series when a brush is applied\n * @return {Object}               Configuration\n */\n\n\nvar getAxisMapByItems = function getAxisMapByItems(props, _ref3) {\n  var graphicalItems = _ref3.graphicalItems,\n      Axis = _ref3.Axis,\n      axisType = _ref3.axisType,\n      axisIdKey = _ref3.axisIdKey,\n      stackGroups = _ref3.stackGroups,\n      dataStartIndex = _ref3.dataStartIndex,\n      dataEndIndex = _ref3.dataEndIndex;\n  var layout = props.layout,\n      children = props.children;\n  var displayedData = getDisplayedData(props.data, {\n    graphicalItems: graphicalItems,\n    dataStartIndex: dataStartIndex,\n    dataEndIndex: dataEndIndex\n  });\n  var len = displayedData.length;\n  var isCategorical = isCategoricalAxis(layout, axisType);\n  var index = -1; // The default type of x-axis is category axis,\n  // The default contents of x-axis is the serial numbers of data\n  // The default type of y-axis is number axis\n  // The default contents of y-axis is the domain of data\n\n  var axisMap = graphicalItems.reduce(function (result, child) {\n    var axisId = child.props[axisIdKey];\n\n    if (!result[axisId]) {\n      index++;\n      var domain;\n\n      if (isCategorical) {\n        domain = _range(0, len);\n      } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack) {\n        domain = getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n        domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n      } else {\n        domain = parseSpecifiedDomain(Axis.defaultProps.domain, getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n          return item.props[axisIdKey] === axisId && !item.props.hide;\n        }), 'number', layout), Axis.defaultProps.allowDataOverflow);\n        domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n      }\n\n      return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({\n        axisType: axisType\n      }, Axis.defaultProps), {}, {\n        hide: true,\n        orientation: _get(ORIENT_MAP, \"\".concat(axisType, \".\").concat(index % 2), null),\n        domain: domain,\n        originalDomain: Axis.defaultProps.domain,\n        isCategorical: isCategorical,\n        layout: layout // specify scale when no Axis\n        // scale: isCategorical ? 'band' : 'linear',\n\n      })));\n    }\n\n    return result;\n  }, {});\n  return axisMap;\n};\n/**\n * Get the configuration of all x-axis or y-axis\n * @param  {Object} props          Latest props\n * @param  {String} axisType       The type of axis\n * @param  {Array}  graphicalItems The instances of item\n * @param  {Object} stackGroups    The items grouped by axisId and stackId\n * @param {Number} dataStartIndex  The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex    The end index of the data series when a brush is applied\n * @return {Object}          Configuration\n */\n\n\nvar getAxisMap = function getAxisMap(props, _ref4) {\n  var _ref4$axisType = _ref4.axisType,\n      axisType = _ref4$axisType === void 0 ? 'xAxis' : _ref4$axisType,\n      AxisComp = _ref4.AxisComp,\n      graphicalItems = _ref4.graphicalItems,\n      stackGroups = _ref4.stackGroups,\n      dataStartIndex = _ref4.dataStartIndex,\n      dataEndIndex = _ref4.dataEndIndex;\n  var children = props.children;\n  var axisIdKey = \"\".concat(axisType, \"Id\"); // Get all the instance of Axis\n\n  var axes = findAllByType(children, AxisComp);\n  var axisMap = {};\n\n  if (axes && axes.length) {\n    axisMap = getAxisMapByAxes(props, {\n      axes: axes,\n      graphicalItems: graphicalItems,\n      axisType: axisType,\n      axisIdKey: axisIdKey,\n      stackGroups: stackGroups,\n      dataStartIndex: dataStartIndex,\n      dataEndIndex: dataEndIndex\n    });\n  } else if (graphicalItems && graphicalItems.length) {\n    axisMap = getAxisMapByItems(props, {\n      Axis: AxisComp,\n      graphicalItems: graphicalItems,\n      axisType: axisType,\n      axisIdKey: axisIdKey,\n      stackGroups: stackGroups,\n      dataStartIndex: dataStartIndex,\n      dataEndIndex: dataEndIndex\n    });\n  }\n\n  return axisMap;\n};\n\nvar tooltipTicksGenerator = function tooltipTicksGenerator(axisMap) {\n  var axis = getAnyElementOfObject(axisMap);\n  var tooltipTicks = getTicksOfAxis(axis, false, true);\n  return {\n    tooltipTicks: tooltipTicks,\n    orderedTooltipTicks: _sortBy(tooltipTicks, function (o) {\n      return o.coordinate;\n    }),\n    tooltipAxis: axis,\n    tooltipAxisBandSize: getBandSizeOfAxis(axis, tooltipTicks)\n  };\n};\n/**\n * Returns default, reset state for the categorical chart.\n * @param {Object} props Props object to use when creating the default state\n * @return {Object} Whole new state\n */\n\n\nvar createDefaultState = function createDefaultState(props) {\n  var children = props.children,\n      defaultShowTooltip = props.defaultShowTooltip;\n  var brushItem = findChildByType(children, Brush.displayName);\n  var startIndex = brushItem && brushItem.props && brushItem.props.startIndex || 0;\n  var endIndex = brushItem && brushItem.props && brushItem.props.endIndex || props.data && props.data.length - 1 || 0;\n  return {\n    chartX: 0,\n    chartY: 0,\n    dataStartIndex: startIndex,\n    dataEndIndex: endIndex,\n    activeTooltipIndex: -1,\n    isTooltipActive: !_isNil(defaultShowTooltip) ? defaultShowTooltip : false\n  };\n};\n\nvar hasGraphicalBarItem = function hasGraphicalBarItem(graphicalItems) {\n  if (!graphicalItems || !graphicalItems.length) {\n    return false;\n  }\n\n  return graphicalItems.some(function (item) {\n    var name = getDisplayName(item && item.type);\n    return name && name.indexOf('Bar') >= 0;\n  });\n};\n\nvar getAxisNameByLayout = function getAxisNameByLayout(layout) {\n  if (layout === 'horizontal') {\n    return {\n      numericAxisName: 'yAxis',\n      cateAxisName: 'xAxis'\n    };\n  }\n\n  if (layout === 'vertical') {\n    return {\n      numericAxisName: 'xAxis',\n      cateAxisName: 'yAxis'\n    };\n  }\n\n  if (layout === 'centric') {\n    return {\n      numericAxisName: 'radiusAxis',\n      cateAxisName: 'angleAxis'\n    };\n  }\n\n  return {\n    numericAxisName: 'angleAxis',\n    cateAxisName: 'radiusAxis'\n  };\n};\n/**\n * Calculate the offset of main part in the svg element\n * @param  {Object} props          Latest props\n * graphicalItems The instances of item\n * xAxisMap       The configuration of x-axis\n * yAxisMap       The configuration of y-axis\n * @param  {Object} prevLegendBBox          the boundary box of legend\n * @return {Object} The offset of main part in the svg element\n */\n\n\nvar calculateOffset = function calculateOffset(_ref5, prevLegendBBox) {\n  var props = _ref5.props,\n      graphicalItems = _ref5.graphicalItems,\n      _ref5$xAxisMap = _ref5.xAxisMap,\n      xAxisMap = _ref5$xAxisMap === void 0 ? {} : _ref5$xAxisMap,\n      _ref5$yAxisMap = _ref5.yAxisMap,\n      yAxisMap = _ref5$yAxisMap === void 0 ? {} : _ref5$yAxisMap;\n  var width = props.width,\n      height = props.height,\n      children = props.children;\n  var margin = props.margin || {};\n  var brushItem = findChildByType(children, Brush.displayName);\n  var legendItem = findChildByType(children, Legend.displayName);\n  var offsetH = Object.keys(yAxisMap).reduce(function (result, id) {\n    var entry = yAxisMap[id];\n    var orientation = entry.orientation;\n\n    if (!entry.mirror && !entry.hide) {\n      return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, result[orientation] + entry.width));\n    }\n\n    return result;\n  }, {\n    left: margin.left || 0,\n    right: margin.right || 0\n  });\n  var offsetV = Object.keys(xAxisMap).reduce(function (result, id) {\n    var entry = xAxisMap[id];\n    var orientation = entry.orientation;\n\n    if (!entry.mirror && !entry.hide) {\n      return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, _get(result, \"\".concat(orientation)) + entry.height));\n    }\n\n    return result;\n  }, {\n    top: margin.top || 0,\n    bottom: margin.bottom || 0\n  });\n\n  var offset = _objectSpread(_objectSpread({}, offsetV), offsetH);\n\n  var brushBottom = offset.bottom;\n\n  if (brushItem) {\n    offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n  }\n\n  if (legendItem && prevLegendBBox) {\n    offset = appendOffsetOfLegend(offset, graphicalItems, props, prevLegendBBox);\n  }\n\n  return _objectSpread(_objectSpread({\n    brushBottom: brushBottom\n  }, offset), {}, {\n    width: width - offset.left - offset.right,\n    height: height - offset.top - offset.bottom\n  });\n};\n\nexport var generateCategoricalChart = function generateCategoricalChart(_ref6) {\n  var _class, _temp;\n\n  var chartName = _ref6.chartName,\n      GraphicalChild = _ref6.GraphicalChild,\n      _ref6$defaultTooltipE = _ref6.defaultTooltipEventType,\n      defaultTooltipEventType = _ref6$defaultTooltipE === void 0 ? 'axis' : _ref6$defaultTooltipE,\n      _ref6$validateTooltip = _ref6.validateTooltipEventTypes,\n      validateTooltipEventTypes = _ref6$validateTooltip === void 0 ? ['axis'] : _ref6$validateTooltip,\n      axisComponents = _ref6.axisComponents,\n      legendContent = _ref6.legendContent,\n      formatAxisMap = _ref6.formatAxisMap,\n      defaultProps = _ref6.defaultProps;\n\n  var getFormatItems = function getFormatItems(props, currentState) {\n    var graphicalItems = currentState.graphicalItems,\n        stackGroups = currentState.stackGroups,\n        offset = currentState.offset,\n        updateId = currentState.updateId,\n        dataStartIndex = currentState.dataStartIndex,\n        dataEndIndex = currentState.dataEndIndex;\n    var barSize = props.barSize,\n        layout = props.layout,\n        barGap = props.barGap,\n        barCategoryGap = props.barCategoryGap,\n        globalMaxBarSize = props.maxBarSize;\n\n    var _getAxisNameByLayout = getAxisNameByLayout(layout),\n        numericAxisName = _getAxisNameByLayout.numericAxisName,\n        cateAxisName = _getAxisNameByLayout.cateAxisName;\n\n    var hasBar = hasGraphicalBarItem(graphicalItems);\n    var sizeList = hasBar && getBarSizeList({\n      barSize: barSize,\n      stackGroups: stackGroups\n    });\n    var formattedItems = [];\n    graphicalItems.forEach(function (item, index) {\n      var displayedData = getDisplayedData(props.data, {\n        dataStartIndex: dataStartIndex,\n        dataEndIndex: dataEndIndex\n      }, item);\n      var _item$props = item.props,\n          dataKey = _item$props.dataKey,\n          childMaxBarSize = _item$props.maxBarSize;\n      var numericAxisId = item.props[\"\".concat(numericAxisName, \"Id\")];\n      var cateAxisId = item.props[\"\".concat(cateAxisName, \"Id\")];\n      var axisObj = axisComponents.reduce(function (result, entry) {\n        var _objectSpread6;\n\n        var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n        var id = item.props[\"\".concat(entry.axisType, \"Id\")];\n        var axis = axisMap && axisMap[id];\n        return _objectSpread(_objectSpread({}, result), {}, (_objectSpread6 = {}, _defineProperty(_objectSpread6, entry.axisType, axis), _defineProperty(_objectSpread6, \"\".concat(entry.axisType, \"Ticks\"), getTicksOfAxis(axis)), _objectSpread6));\n      }, {});\n      var cateAxis = axisObj[cateAxisName];\n      var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n      var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n      var itemIsBar = getDisplayName(item.type).indexOf('Bar') >= 0;\n      var bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n      var barPosition = [];\n\n      if (itemIsBar) {\n        var _ref7, _getBandSizeOfAxis;\n\n        // \u5982\u679C\u662Fbar\uFF0C\u8BA1\u7B97bar\u7684\u4F4D\u7F6E\n        var maxBarSize = _isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n        var barBandSize = (_ref7 = (_getBandSizeOfAxis = getBandSizeOfAxis(cateAxis, cateTicks, true)) !== null && _getBandSizeOfAxis !== void 0 ? _getBandSizeOfAxis : maxBarSize) !== null && _ref7 !== void 0 ? _ref7 : 0;\n        barPosition = getBarPosition({\n          barGap: barGap,\n          barCategoryGap: barCategoryGap,\n          bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n          sizeList: sizeList[cateAxisId],\n          maxBarSize: maxBarSize\n        });\n\n        if (barBandSize !== bandSize) {\n          barPosition = barPosition.map(function (pos) {\n            return _objectSpread(_objectSpread({}, pos), {}, {\n              position: _objectSpread(_objectSpread({}, pos.position), {}, {\n                offset: pos.position.offset - barBandSize / 2\n              })\n            });\n          });\n        }\n      }\n\n      var composedFn = item && item.type && item.type.getComposedData;\n\n      if (composedFn) {\n        var _objectSpread7;\n\n        formattedItems.push({\n          props: _objectSpread(_objectSpread({}, composedFn(_objectSpread(_objectSpread({}, axisObj), {}, {\n            displayedData: displayedData,\n            props: props,\n            dataKey: dataKey,\n            item: item,\n            bandSize: bandSize,\n            barPosition: barPosition,\n            offset: offset,\n            stackedData: stackedData,\n            layout: layout,\n            dataStartIndex: dataStartIndex,\n            dataEndIndex: dataEndIndex\n          }))), {}, (_objectSpread7 = {\n            key: item.key || \"item-\".concat(index)\n          }, _defineProperty(_objectSpread7, numericAxisName, axisObj[numericAxisName]), _defineProperty(_objectSpread7, cateAxisName, axisObj[cateAxisName]), _defineProperty(_objectSpread7, \"animationId\", updateId), _objectSpread7)),\n          childIndex: parseChildIndex(item, props.children),\n          item: item\n        });\n      }\n    });\n    return formattedItems;\n  };\n  /**\n   * The AxisMaps are expensive to render on large data sets\n   * so provide the ability to store them in state and only update them when necessary\n   * they are dependent upon the start and end index of\n   * the brush so it's important that this method is called _after_\n   * the state is updated with any new start/end indices\n   *\n   * @param {Object} props          The props object to be used for updating the axismaps\n   * dataStartIndex: The start index of the data series when a brush is applied\n   * dataEndIndex: The end index of the data series when a brush is applied\n   * updateId: The update id\n   * @param {Object} prevState      Prev state\n   * @return {Object} state New state to set\n   */\n\n\n  var updateStateOfAxisMapsOffsetAndStackGroups = function updateStateOfAxisMapsOffsetAndStackGroups(_ref8, prevState) {\n    var props = _ref8.props,\n        dataStartIndex = _ref8.dataStartIndex,\n        dataEndIndex = _ref8.dataEndIndex,\n        updateId = _ref8.updateId;\n\n    if (!validateWidthHeight({\n      props: props\n    })) {\n      return null;\n    }\n\n    var children = props.children,\n        layout = props.layout,\n        stackOffset = props.stackOffset,\n        data = props.data,\n        reverseStackOrder = props.reverseStackOrder;\n\n    var _getAxisNameByLayout2 = getAxisNameByLayout(layout),\n        numericAxisName = _getAxisNameByLayout2.numericAxisName,\n        cateAxisName = _getAxisNameByLayout2.cateAxisName;\n\n    var graphicalItems = findAllByType(children, GraphicalChild);\n    var stackGroups = getStackGroupsByAxisId(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n    var axisObj = axisComponents.reduce(function (result, entry) {\n      var name = \"\".concat(entry.axisType, \"Map\");\n      return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, name, getAxisMap(props, _objectSpread(_objectSpread({}, entry), {}, {\n        graphicalItems: graphicalItems,\n        stackGroups: entry.axisType === numericAxisName && stackGroups,\n        dataStartIndex: dataStartIndex,\n        dataEndIndex: dataEndIndex\n      }))));\n    }, {});\n    var offset = calculateOffset(_objectSpread(_objectSpread({}, axisObj), {}, {\n      props: props,\n      graphicalItems: graphicalItems\n    }), prevState === null || prevState === void 0 ? void 0 : prevState.legendBBox);\n    Object.keys(axisObj).forEach(function (key) {\n      axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n    });\n    var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n    var ticksObj = tooltipTicksGenerator(cateAxisMap);\n    var formattedGraphicalItems = getFormatItems(props, _objectSpread(_objectSpread({}, axisObj), {}, {\n      dataStartIndex: dataStartIndex,\n      dataEndIndex: dataEndIndex,\n      updateId: updateId,\n      graphicalItems: graphicalItems,\n      stackGroups: stackGroups,\n      offset: offset\n    }));\n    return _objectSpread(_objectSpread({\n      formattedGraphicalItems: formattedGraphicalItems,\n      graphicalItems: graphicalItems,\n      offset: offset,\n      stackGroups: stackGroups\n    }, ticksObj), axisObj);\n  };\n\n  return _temp = _class = /*#__PURE__*/function (_Component) {\n    _inherits(CategoricalChartWrapper, _Component);\n\n    var _super = _createSuper(CategoricalChartWrapper);\n\n    // todo join specific chart propTypes\n    function CategoricalChartWrapper(_props) {\n      var _this;\n\n      _classCallCheck(this, CategoricalChartWrapper);\n\n      _this = _super.call(this, _props);\n      _this.uniqueChartId = void 0;\n      _this.clipPathId = void 0;\n      _this.legendInstance = void 0;\n      _this.deferId = void 0;\n      _this.container = void 0;\n\n      _this.clearDeferId = function () {\n        if (!_isNil(_this.deferId) && deferClear) {\n          deferClear(_this.deferId);\n        }\n\n        _this.deferId = null;\n      };\n\n      _this.handleLegendBBoxUpdate = function (box) {\n        if (box) {\n          var _this$state = _this.state,\n              dataStartIndex = _this$state.dataStartIndex,\n              dataEndIndex = _this$state.dataEndIndex,\n              updateId = _this$state.updateId;\n\n          _this.setState(_objectSpread({\n            legendBBox: box\n          }, updateStateOfAxisMapsOffsetAndStackGroups({\n            props: _this.props,\n            dataStartIndex: dataStartIndex,\n            dataEndIndex: dataEndIndex,\n            updateId: updateId\n          }, _objectSpread(_objectSpread({}, _this.state), {}, {\n            legendBBox: box\n          }))));\n        }\n      };\n\n      _this.handleReceiveSyncEvent = function (cId, chartId, data) {\n        var syncId = _this.props.syncId;\n\n        if (syncId === cId && chartId !== _this.uniqueChartId) {\n          _this.clearDeferId();\n\n          _this.deferId = defer && defer(_this.applySyncEvent.bind(_assertThisInitialized(_this), data));\n        }\n      };\n\n      _this.handleBrushChange = function (_ref9) {\n        var startIndex = _ref9.startIndex,\n            endIndex = _ref9.endIndex;\n\n        // Only trigger changes if the extents of the brush have actually changed\n        if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n          var updateId = _this.state.updateId;\n\n          _this.setState(function () {\n            return _objectSpread({\n              dataStartIndex: startIndex,\n              dataEndIndex: endIndex\n            }, updateStateOfAxisMapsOffsetAndStackGroups({\n              props: _this.props,\n              dataStartIndex: startIndex,\n              dataEndIndex: endIndex,\n              updateId: updateId\n            }, _this.state));\n          });\n\n          _this.triggerSyncEvent({\n            dataStartIndex: startIndex,\n            dataEndIndex: endIndex\n          });\n        }\n      };\n\n      _this.handleMouseEnter = function (e) {\n        var onMouseEnter = _this.props.onMouseEnter;\n\n        var mouse = _this.getMouseInfo(e);\n\n        if (mouse) {\n          var _nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n            isTooltipActive: true\n          });\n\n          _this.setState(_nextState);\n\n          _this.triggerSyncEvent(_nextState);\n\n          if (_isFunction(onMouseEnter)) {\n            onMouseEnter(_nextState, e);\n          }\n        }\n      };\n\n      _this.triggeredAfterMouseMove = function (e) {\n        var onMouseMove = _this.props.onMouseMove;\n\n        var mouse = _this.getMouseInfo(e);\n\n        var nextState = mouse ? _objectSpread(_objectSpread({}, mouse), {}, {\n          isTooltipActive: true\n        }) : {\n          isTooltipActive: false\n        };\n\n        _this.setState(nextState);\n\n        _this.triggerSyncEvent(nextState);\n\n        if (_isFunction(onMouseMove)) {\n          onMouseMove(nextState, e);\n        }\n      };\n\n      _this.handleItemMouseEnter = function (el) {\n        _this.setState(function () {\n          return {\n            isTooltipActive: true,\n            activeItem: el,\n            activePayload: el.tooltipPayload,\n            activeCoordinate: el.tooltipPosition || {\n              x: el.cx,\n              y: el.cy\n            }\n          };\n        });\n      };\n\n      _this.handleItemMouseLeave = function () {\n        _this.setState(function () {\n          return {\n            isTooltipActive: false\n          };\n        });\n      };\n\n      _this.handleMouseMove = function (e) {\n        if (e && _isFunction(e.persist)) {\n          e.persist();\n        }\n\n        _this.triggeredAfterMouseMove(e);\n      };\n\n      _this.handleMouseLeave = function (e) {\n        var onMouseLeave = _this.props.onMouseLeave;\n        var nextState = {\n          isTooltipActive: false\n        };\n\n        _this.setState(nextState);\n\n        _this.triggerSyncEvent(nextState);\n\n        if (_isFunction(onMouseLeave)) {\n          onMouseLeave(nextState, e);\n        }\n\n        _this.cancelThrottledTriggerAfterMouseMove();\n      };\n\n      _this.handleOuterEvent = function (e) {\n        var eventName = getReactEventByType(e);\n\n        var event = _get(_this.props, \"\".concat(eventName));\n\n        if (eventName && _isFunction(event)) {\n          var mouse;\n\n          if (/.*touch.*/i.test(eventName)) {\n            mouse = _this.getMouseInfo(e.changedTouches[0]);\n          } else {\n            mouse = _this.getMouseInfo(e);\n          }\n\n          var handler = event;\n          handler(mouse, e);\n        }\n      };\n\n      _this.handleClick = function (e) {\n        var onClick = _this.props.onClick;\n\n        var mouse = _this.getMouseInfo(e);\n\n        if (mouse) {\n          var _nextState2 = _objectSpread(_objectSpread({}, mouse), {}, {\n            isTooltipActive: true\n          });\n\n          _this.setState(_nextState2);\n\n          _this.triggerSyncEvent(_nextState2);\n\n          if (_isFunction(onClick)) {\n            onClick(_nextState2, e);\n          }\n        }\n      };\n\n      _this.handleMouseDown = function (e) {\n        var onMouseDown = _this.props.onMouseDown;\n\n        if (_isFunction(onMouseDown)) {\n          var _nextState3 = _this.getMouseInfo(e);\n\n          onMouseDown(_nextState3, e);\n        }\n      };\n\n      _this.handleMouseUp = function (e) {\n        var onMouseUp = _this.props.onMouseUp;\n\n        if (_isFunction(onMouseUp)) {\n          var _nextState4 = _this.getMouseInfo(e);\n\n          onMouseUp(_nextState4, e);\n        }\n      };\n\n      _this.handleTouchMove = function (e) {\n        if (e.changedTouches != null && e.changedTouches.length > 0) {\n          _this.handleMouseMove(e.changedTouches[0]);\n        }\n      };\n\n      _this.handleTouchStart = function (e) {\n        if (e.changedTouches != null && e.changedTouches.length > 0) {\n          _this.handleMouseDown(e.changedTouches[0]);\n        }\n      };\n\n      _this.handleTouchEnd = function (e) {\n        if (e.changedTouches != null && e.changedTouches.length > 0) {\n          _this.handleMouseUp(e.changedTouches[0]);\n        }\n      };\n\n      _this.verticalCoordinatesGenerator = function (_ref10) {\n        var xAxis = _ref10.xAxis,\n            width = _ref10.width,\n            height = _ref10.height,\n            offset = _ref10.offset;\n        return getCoordinatesOfGrid(CartesianAxis.getTicks(_objectSpread(_objectSpread(_objectSpread({}, CartesianAxis.defaultProps), xAxis), {}, {\n          ticks: getTicksOfAxis(xAxis, true),\n          viewBox: {\n            x: 0,\n            y: 0,\n            width: width,\n            height: height\n          }\n        })), offset.left, offset.left + offset.width);\n      };\n\n      _this.horizontalCoordinatesGenerator = function (_ref11) {\n        var yAxis = _ref11.yAxis,\n            width = _ref11.width,\n            height = _ref11.height,\n            offset = _ref11.offset;\n        return getCoordinatesOfGrid(CartesianAxis.getTicks(_objectSpread(_objectSpread(_objectSpread({}, CartesianAxis.defaultProps), yAxis), {}, {\n          ticks: getTicksOfAxis(yAxis, true),\n          viewBox: {\n            x: 0,\n            y: 0,\n            width: width,\n            height: height\n          }\n        })), offset.top, offset.top + offset.height);\n      };\n\n      _this.axesTicksGenerator = function (axis) {\n        return getTicksOfAxis(axis, true);\n      };\n\n      _this.renderCursor = function (element) {\n        var _this$state2 = _this.state,\n            isTooltipActive = _this$state2.isTooltipActive,\n            activeCoordinate = _this$state2.activeCoordinate,\n            activePayload = _this$state2.activePayload,\n            offset = _this$state2.offset,\n            activeTooltipIndex = _this$state2.activeTooltipIndex;\n\n        var tooltipEventType = _this.getTooltipEventType();\n\n        if (!element || !element.props.cursor || !isTooltipActive || !activeCoordinate || chartName !== 'ScatterChart' && tooltipEventType !== 'axis') {\n          return null;\n        }\n\n        var layout = _this.props.layout;\n        var restProps;\n        var cursorComp = Curve;\n\n        if (chartName === 'ScatterChart') {\n          restProps = activeCoordinate;\n          cursorComp = Cross;\n        } else if (chartName === 'BarChart') {\n          restProps = _this.getCursorRectangle();\n          cursorComp = Rectangle;\n        } else if (layout === 'radial') {\n          var _this$getCursorPoints = _this.getCursorPoints(),\n              cx = _this$getCursorPoints.cx,\n              cy = _this$getCursorPoints.cy,\n              radius = _this$getCursorPoints.radius,\n              startAngle = _this$getCursorPoints.startAngle,\n              endAngle = _this$getCursorPoints.endAngle;\n\n          restProps = {\n            cx: cx,\n            cy: cy,\n            startAngle: startAngle,\n            endAngle: endAngle,\n            innerRadius: radius,\n            outerRadius: radius\n          };\n          cursorComp = Sector;\n        } else {\n          restProps = {\n            points: _this.getCursorPoints()\n          };\n          cursorComp = Curve;\n        }\n\n        var key = element.key || '_recharts-cursor';\n\n        var cursorProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n          stroke: '#ccc',\n          pointerEvents: 'none'\n        }, offset), restProps), filterProps(element.props.cursor)), {}, {\n          payload: activePayload,\n          payloadIndex: activeTooltipIndex,\n          key: key,\n          className: 'recharts-tooltip-cursor'\n        });\n\n        return /*#__PURE__*/isValidElement(element.props.cursor) ? /*#__PURE__*/cloneElement(element.props.cursor, cursorProps) : /*#__PURE__*/createElement(cursorComp, cursorProps);\n      };\n\n      _this.renderPolarAxis = function (element, displayName, index) {\n        var axisType = _get(element, 'type.axisType');\n\n        var axisMap = _get(_this.state, \"\".concat(axisType, \"Map\"));\n\n        var axisOption = axisMap[element.props[\"\".concat(axisType, \"Id\")]];\n        return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, axisOption), {}, {\n          className: axisType,\n          key: element.key || \"\".concat(displayName, \"-\").concat(index),\n          ticks: getTicksOfAxis(axisOption, true)\n        }));\n      };\n\n      _this.renderXAxis = function (element, displayName, index) {\n        var xAxisMap = _this.state.xAxisMap;\n        var axisObj = xAxisMap[element.props.xAxisId];\n        return _this.renderAxis(axisObj, element, displayName, index);\n      };\n\n      _this.renderYAxis = function (element, displayName, index) {\n        var yAxisMap = _this.state.yAxisMap;\n        var axisObj = yAxisMap[element.props.yAxisId];\n        return _this.renderAxis(axisObj, element, displayName, index);\n      };\n\n      _this.renderGrid = function (element) {\n        var _this$state3 = _this.state,\n            xAxisMap = _this$state3.xAxisMap,\n            yAxisMap = _this$state3.yAxisMap,\n            offset = _this$state3.offset;\n        var _this$props = _this.props,\n            width = _this$props.width,\n            height = _this$props.height;\n        var xAxis = getAnyElementOfObject(xAxisMap);\n\n        var yAxisWithFiniteDomain = _find(yAxisMap, function (axis) {\n          return _every(axis.domain, isFinit);\n        });\n\n        var yAxis = yAxisWithFiniteDomain || getAnyElementOfObject(yAxisMap);\n        var props = element.props || {};\n        return /*#__PURE__*/cloneElement(element, {\n          key: element.key || 'grid',\n          x: isNumber(props.x) ? props.x : offset.left,\n          y: isNumber(props.y) ? props.y : offset.top,\n          width: isNumber(props.width) ? props.width : offset.width,\n          height: isNumber(props.height) ? props.height : offset.height,\n          xAxis: xAxis,\n          yAxis: yAxis,\n          offset: offset,\n          chartWidth: width,\n          chartHeight: height,\n          verticalCoordinatesGenerator: props.verticalCoordinatesGenerator || _this.verticalCoordinatesGenerator,\n          horizontalCoordinatesGenerator: props.horizontalCoordinatesGenerator || _this.horizontalCoordinatesGenerator\n        });\n      };\n\n      _this.renderPolarGrid = function (element) {\n        var _element$props = element.props,\n            radialLines = _element$props.radialLines,\n            polarAngles = _element$props.polarAngles,\n            polarRadius = _element$props.polarRadius;\n        var _this$state4 = _this.state,\n            radiusAxisMap = _this$state4.radiusAxisMap,\n            angleAxisMap = _this$state4.angleAxisMap;\n        var radiusAxis = getAnyElementOfObject(radiusAxisMap);\n        var angleAxis = getAnyElementOfObject(angleAxisMap);\n        var cx = angleAxis.cx,\n            cy = angleAxis.cy,\n            innerRadius = angleAxis.innerRadius,\n            outerRadius = angleAxis.outerRadius;\n        return /*#__PURE__*/cloneElement(element, {\n          polarAngles: _isArray(polarAngles) ? polarAngles : getTicksOfAxis(angleAxis, true).map(function (entry) {\n            return entry.coordinate;\n          }),\n          polarRadius: _isArray(polarRadius) ? polarRadius : getTicksOfAxis(radiusAxis, true).map(function (entry) {\n            return entry.coordinate;\n          }),\n          cx: cx,\n          cy: cy,\n          innerRadius: innerRadius,\n          outerRadius: outerRadius,\n          key: element.key || 'polar-grid',\n          radialLines: radialLines\n        });\n      };\n\n      _this.renderLegend = function () {\n        var formattedGraphicalItems = _this.state.formattedGraphicalItems;\n        var _this$props2 = _this.props,\n            children = _this$props2.children,\n            width = _this$props2.width,\n            height = _this$props2.height;\n        var margin = _this.props.margin || {};\n        var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n        var props = getLegendProps({\n          children: children,\n          formattedGraphicalItems: formattedGraphicalItems,\n          legendWidth: legendWidth,\n          legendContent: legendContent\n        });\n\n        if (!props) {\n          return null;\n        }\n\n        var item = props.item,\n            otherProps = _objectWithoutProperties(props, [\"item\"]);\n\n        return /*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, otherProps), {}, {\n          chartWidth: width,\n          chartHeight: height,\n          margin: margin,\n          ref: function ref(legend) {\n            _this.legendInstance = legend;\n          },\n          onBBoxUpdate: _this.handleLegendBBoxUpdate\n        }));\n      };\n\n      _this.renderTooltip = function () {\n        var children = _this.props.children;\n        var tooltipItem = findChildByType(children, Tooltip.displayName);\n\n        if (!tooltipItem) {\n          return null;\n        }\n\n        var _this$state5 = _this.state,\n            isTooltipActive = _this$state5.isTooltipActive,\n            activeCoordinate = _this$state5.activeCoordinate,\n            activePayload = _this$state5.activePayload,\n            activeLabel = _this$state5.activeLabel,\n            offset = _this$state5.offset;\n        return /*#__PURE__*/cloneElement(tooltipItem, {\n          viewBox: _objectSpread(_objectSpread({}, offset), {}, {\n            x: offset.left,\n            y: offset.top\n          }),\n          active: isTooltipActive,\n          label: activeLabel,\n          payload: isTooltipActive ? activePayload : [],\n          coordinate: activeCoordinate\n        });\n      };\n\n      _this.renderBrush = function (element) {\n        var _this$props3 = _this.props,\n            margin = _this$props3.margin,\n            data = _this$props3.data;\n        var _this$state6 = _this.state,\n            offset = _this$state6.offset,\n            dataStartIndex = _this$state6.dataStartIndex,\n            dataEndIndex = _this$state6.dataEndIndex,\n            updateId = _this$state6.updateId; // TODO: update brush when children update\n\n        return /*#__PURE__*/cloneElement(element, {\n          key: element.key || '_recharts-brush',\n          onChange: combineEventHandlers(_this.handleBrushChange, null, element.props.onChange),\n          data: data,\n          x: isNumber(element.props.x) ? element.props.x : offset.left,\n          y: isNumber(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n          width: isNumber(element.props.width) ? element.props.width : offset.width,\n          startIndex: dataStartIndex,\n          endIndex: dataEndIndex,\n          updateId: \"brush-\".concat(updateId)\n        });\n      };\n\n      _this.renderReferenceElement = function (element, displayName, index) {\n        if (!element) {\n          return null;\n        }\n\n        var _assertThisInitialize = _assertThisInitialized(_this),\n            clipPathId = _assertThisInitialize.clipPathId;\n\n        var _this$state7 = _this.state,\n            xAxisMap = _this$state7.xAxisMap,\n            yAxisMap = _this$state7.yAxisMap,\n            offset = _this$state7.offset;\n        var _element$props2 = element.props,\n            xAxisId = _element$props2.xAxisId,\n            yAxisId = _element$props2.yAxisId;\n        return /*#__PURE__*/cloneElement(element, {\n          key: element.key || \"\".concat(displayName, \"-\").concat(index),\n          xAxis: xAxisMap[xAxisId],\n          yAxis: yAxisMap[yAxisId],\n          viewBox: {\n            x: offset.left,\n            y: offset.top,\n            width: offset.width,\n            height: offset.height\n          },\n          clipPathId: clipPathId\n        });\n      };\n\n      _this.renderActivePoints = function (_ref12) {\n        var item = _ref12.item,\n            activePoint = _ref12.activePoint,\n            basePoint = _ref12.basePoint,\n            childIndex = _ref12.childIndex,\n            isRange = _ref12.isRange;\n        var result = [];\n        var key = item.props.key;\n        var _item$item$props = item.item.props,\n            activeDot = _item$item$props.activeDot,\n            dataKey = _item$item$props.dataKey;\n\n        var dotProps = _objectSpread(_objectSpread({\n          index: childIndex,\n          dataKey: dataKey,\n          cx: activePoint.x,\n          cy: activePoint.y,\n          r: 4,\n          fill: getMainColorOfGraphicItem(item.item),\n          strokeWidth: 2,\n          stroke: '#fff',\n          payload: activePoint.payload,\n          value: activePoint.value,\n          key: \"\".concat(key, \"-activePoint-\").concat(childIndex)\n        }, filterProps(activeDot)), adaptEventHandlers(activeDot));\n\n        result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps));\n\n        if (basePoint) {\n          result.push(CategoricalChartWrapper.renderActiveDot(activeDot, _objectSpread(_objectSpread({}, dotProps), {}, {\n            cx: basePoint.x,\n            cy: basePoint.y,\n            key: \"\".concat(key, \"-basePoint-\").concat(childIndex)\n          })));\n        } else if (isRange) {\n          result.push(null);\n        }\n\n        return result;\n      };\n\n      _this.renderGraphicChild = function (element, displayName, index) {\n        var item = _this.filterFormatItem(element, displayName, index);\n\n        if (!item) {\n          return null;\n        }\n\n        var tooltipEventType = _this.getTooltipEventType();\n\n        var _this$state8 = _this.state,\n            isTooltipActive = _this$state8.isTooltipActive,\n            tooltipAxis = _this$state8.tooltipAxis,\n            activeTooltipIndex = _this$state8.activeTooltipIndex,\n            activeLabel = _this$state8.activeLabel;\n        var children = _this.props.children;\n        var tooltipItem = findChildByType(children, Tooltip.displayName);\n        var _item$props2 = item.props,\n            points = _item$props2.points,\n            isRange = _item$props2.isRange,\n            baseLine = _item$props2.baseLine;\n        var _item$item$props2 = item.item.props,\n            activeDot = _item$item$props2.activeDot,\n            hide = _item$item$props2.hide;\n        var hasActive = !hide && isTooltipActive && tooltipItem && activeDot && activeTooltipIndex >= 0;\n        var itemEvents = {};\n\n        if (tooltipEventType !== 'axis' && tooltipItem && tooltipItem.props.trigger === 'click') {\n          itemEvents = {\n            onClick: combineEventHandlers(_this.handleItemMouseEnter, null, element.props.onCLick)\n          };\n        } else if (tooltipEventType !== 'axis') {\n          itemEvents = {\n            onMouseLeave: combineEventHandlers(_this.handleItemMouseLeave, null, element.props.onMouseLeave),\n            onMouseEnter: combineEventHandlers(_this.handleItemMouseEnter, null, element.props.onMouseEnter)\n          };\n        }\n\n        var graphicalItem = /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, item.props), itemEvents));\n\n        function findWithPayload(entry) {\n          // TODO needs to verify dataKey is Function\n          return typeof tooltipAxis.dataKey === 'function' ? tooltipAxis.dataKey(entry.payload) : null;\n        }\n\n        if (hasActive) {\n          var activePoint, basePoint;\n\n          if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n            // number transform to string\n            var specifiedKey = typeof tooltipAxis.dataKey === 'function' ? findWithPayload : 'payload.'.concat(tooltipAxis.dataKey.toString());\n            activePoint = findEntryInArray(points, specifiedKey, activeLabel);\n            basePoint = isRange && baseLine && findEntryInArray(baseLine, specifiedKey, activeLabel);\n          } else {\n            activePoint = points[activeTooltipIndex];\n            basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n          }\n\n          if (!_isNil(activePoint)) {\n            return [graphicalItem].concat(_toConsumableArray(_this.renderActivePoints({\n              item: item,\n              activePoint: activePoint,\n              basePoint: basePoint,\n              childIndex: activeTooltipIndex,\n              isRange: isRange\n            })));\n          }\n        }\n\n        if (isRange) {\n          return [graphicalItem, null, null];\n        }\n\n        return [graphicalItem, null];\n      };\n\n      _this.renderCustomized = function (element, displayName, index) {\n        return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({\n          key: \"recharts-customized-\".concat(index)\n        }, _this.props), _this.state));\n      };\n\n      _this.uniqueChartId = _isNil(_props.id) ? uniqueId('recharts') : _props.id;\n      _this.clipPathId = \"\".concat(_this.uniqueChartId, \"-clip\");\n\n      if (_props.throttleDelay) {\n        _this.triggeredAfterMouseMove = _throttle(_this.triggeredAfterMouseMove, _props.throttleDelay);\n      }\n\n      _this.state = {};\n      return _this;\n    }\n    /* eslint-disable  react/no-did-mount-set-state */\n\n\n    _createClass(CategoricalChartWrapper, [{\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        if (!_isNil(this.props.syncId)) {\n          this.addListener();\n        }\n      }\n    }, {\n      key: \"componentDidUpdate\",\n      value: function componentDidUpdate(prevProps) {\n        // add syncId\n        if (_isNil(prevProps.syncId) && !_isNil(this.props.syncId)) {\n          this.addListener();\n        } // remove syncId\n\n\n        if (!_isNil(prevProps.syncId) && _isNil(this.props.syncId)) {\n          this.removeListener();\n        }\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        this.clearDeferId();\n\n        if (!_isNil(this.props.syncId)) {\n          this.removeListener();\n        }\n\n        this.cancelThrottledTriggerAfterMouseMove();\n      }\n    }, {\n      key: \"cancelThrottledTriggerAfterMouseMove\",\n      value: function cancelThrottledTriggerAfterMouseMove() {\n        if (typeof this.triggeredAfterMouseMove.cancel === 'function') {\n          this.triggeredAfterMouseMove.cancel();\n        }\n      }\n    }, {\n      key: \"getTooltipEventType\",\n      value: function getTooltipEventType() {\n        var tooltipItem = findChildByType(this.props.children, Tooltip.displayName);\n\n        if (tooltipItem && _isBoolean(tooltipItem.props.shared)) {\n          var eventType = tooltipItem.props.shared ? 'axis' : 'item';\n          return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n        }\n\n        return defaultTooltipEventType;\n      }\n      /**\n       * Get the information of mouse in chart, return null when the mouse is not in the chart\n       * @param  {Object} event    The event object\n       * @return {Object}          Mouse data\n       */\n\n    }, {\n      key: \"getMouseInfo\",\n      value: function getMouseInfo(event) {\n        if (!this.container) {\n          return null;\n        }\n\n        var containerOffset = getOffset(this.container);\n        var e = calculateChartCoordinate(event, containerOffset);\n        var rangeObj = this.inRange(e.chartX, e.chartY);\n\n        if (!rangeObj) {\n          return null;\n        }\n\n        var _this$state9 = this.state,\n            xAxisMap = _this$state9.xAxisMap,\n            yAxisMap = _this$state9.yAxisMap;\n        var tooltipEventType = this.getTooltipEventType();\n\n        if (tooltipEventType !== 'axis' && xAxisMap && yAxisMap) {\n          var xScale = getAnyElementOfObject(xAxisMap).scale;\n          var yScale = getAnyElementOfObject(yAxisMap).scale;\n          var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n          var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n          return _objectSpread(_objectSpread({}, e), {}, {\n            xValue: xValue,\n            yValue: yValue\n          });\n        }\n\n        var toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n\n        if (toolTipData) {\n          return _objectSpread(_objectSpread({}, e), toolTipData);\n        }\n\n        return null;\n      }\n    }, {\n      key: \"getCursorRectangle\",\n      value: function getCursorRectangle() {\n        var layout = this.props.layout;\n        var _this$state10 = this.state,\n            activeCoordinate = _this$state10.activeCoordinate,\n            offset = _this$state10.offset,\n            tooltipAxisBandSize = _this$state10.tooltipAxisBandSize;\n        var halfSize = tooltipAxisBandSize / 2;\n        return {\n          stroke: 'none',\n          fill: '#ccc',\n          x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n          y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n          width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n          height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n        };\n      }\n    }, {\n      key: \"getCursorPoints\",\n      value: function getCursorPoints() {\n        var layout = this.props.layout;\n        var _this$state11 = this.state,\n            activeCoordinate = _this$state11.activeCoordinate,\n            offset = _this$state11.offset;\n        var x1, y1, x2, y2;\n\n        if (layout === 'horizontal') {\n          x1 = activeCoordinate.x;\n          x2 = x1;\n          y1 = offset.top;\n          y2 = offset.top + offset.height;\n        } else if (layout === 'vertical') {\n          y1 = activeCoordinate.y;\n          y2 = y1;\n          x1 = offset.left;\n          x2 = offset.left + offset.width;\n        } else if (!_isNil(activeCoordinate.cx) || !_isNil(activeCoordinate.cy)) {\n          if (layout === 'centric') {\n            var cx = activeCoordinate.cx,\n                cy = activeCoordinate.cy,\n                innerRadius = activeCoordinate.innerRadius,\n                outerRadius = activeCoordinate.outerRadius,\n                angle = activeCoordinate.angle;\n            var innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n            var outerPoint = polarToCartesian(cx, cy, outerRadius, angle);\n            x1 = innerPoint.x;\n            y1 = innerPoint.y;\n            x2 = outerPoint.x;\n            y2 = outerPoint.y;\n          } else {\n            var _cx = activeCoordinate.cx,\n                _cy = activeCoordinate.cy,\n                radius = activeCoordinate.radius,\n                startAngle = activeCoordinate.startAngle,\n                endAngle = activeCoordinate.endAngle;\n            var startPoint = polarToCartesian(_cx, _cy, radius, startAngle);\n            var endPoint = polarToCartesian(_cx, _cy, radius, endAngle);\n            return {\n              points: [startPoint, endPoint],\n              cx: _cx,\n              cy: _cy,\n              radius: radius,\n              startAngle: startAngle,\n              endAngle: endAngle\n            };\n          }\n        }\n\n        return [{\n          x: x1,\n          y: y1\n        }, {\n          x: x2,\n          y: y2\n        }];\n      }\n    }, {\n      key: \"inRange\",\n      value: function inRange(x, y) {\n        var layout = this.props.layout;\n\n        if (layout === 'horizontal' || layout === 'vertical') {\n          var offset = this.state.offset;\n          var isInRange = x >= offset.left && x <= offset.left + offset.width && y >= offset.top && y <= offset.top + offset.height;\n          return isInRange ? {\n            x: x,\n            y: y\n          } : null;\n        }\n\n        var _this$state12 = this.state,\n            angleAxisMap = _this$state12.angleAxisMap,\n            radiusAxisMap = _this$state12.radiusAxisMap;\n\n        if (angleAxisMap && radiusAxisMap) {\n          var angleAxis = getAnyElementOfObject(angleAxisMap);\n          return inRangeOfSector({\n            x: x,\n            y: y\n          }, angleAxis);\n        }\n\n        return null;\n      }\n    }, {\n      key: \"parseEventsOfWrapper\",\n      value: function parseEventsOfWrapper() {\n        var children = this.props.children;\n        var tooltipEventType = this.getTooltipEventType();\n        var tooltipItem = findChildByType(children, Tooltip.displayName);\n        var tooltipEvents = {};\n\n        if (tooltipItem && tooltipEventType === 'axis') {\n          if (tooltipItem.props.trigger === 'click') {\n            tooltipEvents = {\n              onClick: this.handleClick\n            };\n          } else {\n            tooltipEvents = {\n              onMouseEnter: this.handleMouseEnter,\n              onMouseMove: this.handleMouseMove,\n              onMouseLeave: this.handleMouseLeave,\n              onTouchMove: this.handleTouchMove,\n              onTouchStart: this.handleTouchStart,\n              onTouchEnd: this.handleTouchEnd\n            };\n          }\n        }\n\n        var outerEvents = adaptEventHandlers(this.props, this.handleOuterEvent);\n        return _objectSpread(_objectSpread({}, outerEvents), tooltipEvents);\n      }\n      /* eslint-disable  no-underscore-dangle */\n\n    }, {\n      key: \"addListener\",\n      value: function addListener() {\n        eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n\n        if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n          eventCenter.setMaxListeners(eventCenter._maxListeners + 1);\n        }\n      }\n    }, {\n      key: \"removeListener\",\n      value: function removeListener() {\n        eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n\n        if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n          eventCenter.setMaxListeners(eventCenter._maxListeners - 1);\n        }\n      }\n    }, {\n      key: \"triggerSyncEvent\",\n      value: function triggerSyncEvent(data) {\n        var syncId = this.props.syncId;\n\n        if (!_isNil(syncId)) {\n          eventCenter.emit(SYNC_EVENT, syncId, this.uniqueChartId, data);\n        }\n      }\n    }, {\n      key: \"applySyncEvent\",\n      value: function applySyncEvent(data) {\n        var _this$props4 = this.props,\n            layout = _this$props4.layout,\n            syncMethod = _this$props4.syncMethod;\n        var updateId = this.state.updateId;\n        var dataStartIndex = data.dataStartIndex,\n            dataEndIndex = data.dataEndIndex;\n\n        if (!_isNil(data.dataStartIndex) || !_isNil(data.dataEndIndex)) {\n          this.setState(_objectSpread({\n            dataStartIndex: dataStartIndex,\n            dataEndIndex: dataEndIndex\n          }, updateStateOfAxisMapsOffsetAndStackGroups({\n            props: this.props,\n            dataStartIndex: dataStartIndex,\n            dataEndIndex: dataEndIndex,\n            updateId: updateId\n          }, this.state)));\n        } else if (!_isNil(data.activeTooltipIndex)) {\n          var chartX = data.chartX,\n              chartY = data.chartY;\n          var activeTooltipIndex = data.activeTooltipIndex;\n          var _this$state13 = this.state,\n              offset = _this$state13.offset,\n              tooltipTicks = _this$state13.tooltipTicks;\n\n          if (!offset) {\n            return;\n          }\n\n          if (typeof syncMethod === 'function') {\n            // Call a callback function. If there is an application specific algorithm\n            activeTooltipIndex = syncMethod(tooltipTicks, data);\n          } else if (syncMethod === 'value') {\n            // Set activeTooltipIndex to the index with the same value as data.activeLabel\n            // For loop instead of findIndex because the latter is very slow in some browsers\n            activeTooltipIndex = -1; // in case we cannot find the element\n\n            for (var i = 0; i < tooltipTicks.length; i++) {\n              if (tooltipTicks[i].value === data.activeLabel) {\n                activeTooltipIndex = i;\n                break;\n              }\n            }\n          }\n\n          var viewBox = _objectSpread(_objectSpread({}, offset), {}, {\n            x: offset.left,\n            y: offset.top\n          }); // When a categotical chart is combined with another chart, the value of chartX\n          // and chartY may beyond the boundaries.\n\n\n          var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n          var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n          var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n          var activePayload = getTooltipContent(this.state, this.props.data, activeTooltipIndex);\n          var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n            x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n            y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n          } : originCoordinate;\n          this.setState(_objectSpread(_objectSpread({}, data), {}, {\n            activeLabel: activeLabel,\n            activeCoordinate: activeCoordinate,\n            activePayload: activePayload,\n            activeTooltipIndex: activeTooltipIndex\n          }));\n        } else {\n          this.setState(data);\n        }\n      }\n    }, {\n      key: \"filterFormatItem\",\n      value: function filterFormatItem(item, displayName, childIndex) {\n        var formattedGraphicalItems = this.state.formattedGraphicalItems;\n\n        for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n          var entry = formattedGraphicalItems[i];\n\n          if (entry.item === item || entry.props.key === item.key || displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex) {\n            return entry;\n          }\n        }\n\n        return null;\n      }\n    }, {\n      key: \"renderAxis\",\n      value:\n      /**\n       * Draw axis\n       * @param {Object} axisOptions The options of axis\n       * @param {Object} element      The axis element\n       * @param {String} displayName  The display name of axis\n       * @param {Number} index        The index of element\n       * @return {ReactElement}       The instance of x-axes\n       */\n      function renderAxis(axisOptions, element, displayName, index) {\n        var _this$props5 = this.props,\n            width = _this$props5.width,\n            height = _this$props5.height;\n        return /*#__PURE__*/React.createElement(CartesianAxis, _extends({}, axisOptions, {\n          className: \"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType),\n          key: element.key || \"\".concat(displayName, \"-\").concat(index),\n          viewBox: {\n            x: 0,\n            y: 0,\n            width: width,\n            height: height\n          },\n          ticksGenerator: this.axesTicksGenerator\n        }));\n      }\n      /**\n       * Draw grid\n       * @param  {ReactElement} element the grid item\n       * @return {ReactElement} The instance of grid\n       */\n\n    }, {\n      key: \"renderClipPath\",\n      value: function renderClipPath() {\n        var clipPathId = this.clipPathId;\n        var _this$state$offset = this.state.offset,\n            left = _this$state$offset.left,\n            top = _this$state$offset.top,\n            height = _this$state$offset.height,\n            width = _this$state$offset.width;\n        return /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n          id: clipPathId\n        }, /*#__PURE__*/React.createElement(\"rect\", {\n          x: left,\n          y: top,\n          height: height,\n          width: width\n        })));\n      }\n    }, {\n      key: \"getXScales\",\n      value: function getXScales() {\n        var xAxisMap = this.state.xAxisMap;\n        return xAxisMap ? Object.entries(xAxisMap).reduce(function (res, _ref13) {\n          var _ref14 = _slicedToArray(_ref13, 2),\n              axisId = _ref14[0],\n              axisProps = _ref14[1];\n\n          return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n        }, {}) : null;\n      }\n    }, {\n      key: \"getYScales\",\n      value: function getYScales() {\n        var yAxisMap = this.state.yAxisMap;\n        return yAxisMap ? Object.entries(yAxisMap).reduce(function (res, _ref15) {\n          var _ref16 = _slicedToArray(_ref15, 2),\n              axisId = _ref16[0],\n              axisProps = _ref16[1];\n\n          return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n        }, {}) : null;\n      }\n    }, {\n      key: \"getXScaleByAxisId\",\n      value: function getXScaleByAxisId(axisId) {\n        var _this$state$xAxisMap, _this$state$xAxisMap$;\n\n        return (_this$state$xAxisMap = this.state.xAxisMap) === null || _this$state$xAxisMap === void 0 ? void 0 : (_this$state$xAxisMap$ = _this$state$xAxisMap[axisId]) === null || _this$state$xAxisMap$ === void 0 ? void 0 : _this$state$xAxisMap$.scale;\n      }\n    }, {\n      key: \"getYScaleByAxisId\",\n      value: function getYScaleByAxisId(axisId) {\n        var _this$state$yAxisMap, _this$state$yAxisMap$;\n\n        return (_this$state$yAxisMap = this.state.yAxisMap) === null || _this$state$yAxisMap === void 0 ? void 0 : (_this$state$yAxisMap$ = _this$state$yAxisMap[axisId]) === null || _this$state$yAxisMap$ === void 0 ? void 0 : _this$state$yAxisMap$.scale;\n      }\n    }, {\n      key: \"getItemByXY\",\n      value: function getItemByXY(chartXY) {\n        var formattedGraphicalItems = this.state.formattedGraphicalItems;\n\n        if (formattedGraphicalItems && formattedGraphicalItems.length) {\n          for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n            var graphicalItem = formattedGraphicalItems[i];\n            var props = graphicalItem.props,\n                item = graphicalItem.item;\n            var itemDisplayName = getDisplayName(item.type);\n\n            if (itemDisplayName === 'Bar') {\n              var activeBarItem = (props.data || []).find(function (entry) {\n                return isInRectangle(chartXY, entry);\n              });\n\n              if (activeBarItem) {\n                return {\n                  graphicalItem: graphicalItem,\n                  payload: activeBarItem\n                };\n              }\n            } else if (itemDisplayName === 'RadialBar') {\n              var _activeBarItem = (props.data || []).find(function (entry) {\n                return inRangeOfSector(chartXY, entry);\n              });\n\n              if (_activeBarItem) {\n                return {\n                  graphicalItem: graphicalItem,\n                  payload: _activeBarItem\n                };\n              }\n            }\n          }\n        }\n\n        return null;\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this2 = this;\n\n        if (!validateWidthHeight(this)) {\n          return null;\n        }\n\n        var _this$props6 = this.props,\n            children = _this$props6.children,\n            className = _this$props6.className,\n            width = _this$props6.width,\n            height = _this$props6.height,\n            style = _this$props6.style,\n            compact = _this$props6.compact,\n            title = _this$props6.title,\n            desc = _this$props6.desc,\n            others = _objectWithoutProperties(_this$props6, [\"children\", \"className\", \"width\", \"height\", \"style\", \"compact\", \"title\", \"desc\"]);\n\n        var attrs = filterProps(others);\n        var map = {\n          CartesianGrid: {\n            handler: this.renderGrid,\n            once: true\n          },\n          ReferenceArea: {\n            handler: this.renderReferenceElement\n          },\n          ReferenceLine: {\n            handler: this.renderReferenceElement\n          },\n          ReferenceDot: {\n            handler: this.renderReferenceElement\n          },\n          XAxis: {\n            handler: this.renderXAxis\n          },\n          YAxis: {\n            handler: this.renderYAxis\n          },\n          Brush: {\n            handler: this.renderBrush,\n            once: true\n          },\n          Bar: {\n            handler: this.renderGraphicChild\n          },\n          Line: {\n            handler: this.renderGraphicChild\n          },\n          Area: {\n            handler: this.renderGraphicChild\n          },\n          Radar: {\n            handler: this.renderGraphicChild\n          },\n          RadialBar: {\n            handler: this.renderGraphicChild\n          },\n          Scatter: {\n            handler: this.renderGraphicChild\n          },\n          Pie: {\n            handler: this.renderGraphicChild\n          },\n          Funnel: {\n            handler: this.renderGraphicChild\n          },\n          Tooltip: {\n            handler: this.renderCursor,\n            once: true\n          },\n          PolarGrid: {\n            handler: this.renderPolarGrid,\n            once: true\n          },\n          PolarAngleAxis: {\n            handler: this.renderPolarAxis\n          },\n          PolarRadiusAxis: {\n            handler: this.renderPolarAxis\n          },\n          Customized: {\n            handler: this.renderCustomized\n          }\n        }; // The \"compact\" mode is mainly used as the panorama within Brush\n\n        if (compact) {\n          return /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n            width: width,\n            height: height,\n            title: title,\n            desc: desc\n          }), this.renderClipPath(), renderByOrder(children, map));\n        }\n\n        var events = this.parseEventsOfWrapper();\n        return /*#__PURE__*/React.createElement(\"div\", _extends({\n          className: classNames('recharts-wrapper', className),\n          style: _objectSpread({\n            position: 'relative',\n            cursor: 'default',\n            width: width,\n            height: height\n          }, style)\n        }, events, {\n          ref: function ref(node) {\n            _this2.container = node;\n          }\n        }), /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n          width: width,\n          height: height,\n          title: title,\n          desc: desc\n        }), this.renderClipPath(), renderByOrder(children, map)), this.renderLegend(), this.renderTooltip());\n      }\n    }]);\n\n    return CategoricalChartWrapper;\n  }(Component), _class.displayName = chartName, _class.defaultProps = _objectSpread({\n    layout: 'horizontal',\n    stackOffset: 'none',\n    barCategoryGap: '10%',\n    barGap: 4,\n    margin: {\n      top: 5,\n      right: 5,\n      bottom: 5,\n      left: 5\n    },\n    reverseStackOrder: false,\n    syncMethod: 'index'\n  }, defaultProps), _class.getDerivedStateFromProps = function (nextProps, prevState) {\n    var data = nextProps.data,\n        children = nextProps.children,\n        width = nextProps.width,\n        height = nextProps.height,\n        layout = nextProps.layout,\n        stackOffset = nextProps.stackOffset,\n        margin = nextProps.margin;\n\n    if (_isNil(prevState.updateId)) {\n      var defaultState = createDefaultState(nextProps);\n      return _objectSpread(_objectSpread(_objectSpread({}, defaultState), {}, {\n        updateId: 0\n      }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n        props: nextProps\n      }, defaultState), {}, {\n        updateId: 0\n      }), prevState)), {}, {\n        prevData: data,\n        prevWidth: width,\n        prevHeight: height,\n        prevLayout: layout,\n        prevStackOffset: stackOffset,\n        prevMargin: margin,\n        prevChildren: children\n      });\n    }\n\n    if (data !== prevState.prevData || width !== prevState.prevWidth || height !== prevState.prevHeight || layout !== prevState.prevLayout || stackOffset !== prevState.prevStackOffset || !shallowEqual(margin, prevState.prevMargin)) {\n      var _defaultState = createDefaultState(nextProps); // Fixes https://github.com/recharts/recharts/issues/2143\n\n\n      var keepFromPrevState = {\n        // (chartX, chartY) are (0,0) in default state, but we want to keep the last mouse position to avoid\n        // any flickering\n        chartX: prevState.chartX,\n        chartY: prevState.chartY,\n        // The tooltip should stay active when it was active in the previous render. If this is not\n        // the case, the tooltip disappears and immediately re-appears, causing a flickering effect\n        isTooltipActive: prevState.isTooltipActive\n      };\n\n      var updatesToState = _objectSpread(_objectSpread({}, getTooltipData(prevState, data, layout)), {}, {\n        updateId: prevState.updateId + 1\n      });\n\n      var newState = _objectSpread(_objectSpread(_objectSpread({}, _defaultState), keepFromPrevState), updatesToState);\n\n      return _objectSpread(_objectSpread(_objectSpread({}, newState), updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n        props: nextProps\n      }, newState), prevState)), {}, {\n        prevData: data,\n        prevWidth: width,\n        prevHeight: height,\n        prevLayout: layout,\n        prevStackOffset: stackOffset,\n        prevMargin: margin,\n        prevChildren: children\n      });\n    }\n\n    if (!isChildrenEqual(children, prevState.prevChildren)) {\n      // update configuration in chilren\n      var hasGlobalData = !_isNil(data);\n      var newUpdateId = hasGlobalData ? prevState.updateId : prevState.updateId + 1;\n      return _objectSpread(_objectSpread({\n        updateId: newUpdateId\n      }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n        props: nextProps\n      }, prevState), {}, {\n        updateId: newUpdateId\n      }), prevState)), {}, {\n        prevChildren: children\n      });\n    }\n\n    return null;\n  }, _class.renderActiveDot = function (option, props) {\n    var dot;\n\n    if ( /*#__PURE__*/isValidElement(option)) {\n      dot = /*#__PURE__*/cloneElement(option, props);\n    } else if (_isFunction(option)) {\n      dot = option(props);\n    } else {\n      dot = /*#__PURE__*/React.createElement(Dot, props);\n    }\n\n    return /*#__PURE__*/React.createElement(Layer, {\n      className: \"recharts-active-dot\",\n      key: props.key\n    }, dot);\n  }, _temp;\n};", "import { ReferenceDot } from '../cartesian/ReferenceDot';\nimport { ReferenceLine } from '../cartesian/ReferenceLine';\nimport { ReferenceArea } from '../cartesian/ReferenceArea';\nimport { ifOverflowMatches } from './IfOverflowMatches';\nimport { findAllByType } from './ReactUtils';\nimport { isNumber } from './DataUtils';\nexport var detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {\n  var lines = findAllByType(children, ReferenceLine.displayName);\n  var dots = findAllByType(children, ReferenceDot.displayName);\n  var elements = lines.concat(dots);\n  var areas = findAllByType(children, ReferenceArea.displayName);\n  var idKey = \"\".concat(axisType, \"Id\");\n  var valueKey = axisType[0];\n  var finalDomain = domain;\n\n  if (elements.length) {\n    finalDomain = elements.reduce(function (result, el) {\n      if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {\n        var value = el.props[valueKey];\n        return [Math.min(result[0], value), Math.max(result[1], value)];\n      }\n\n      return result;\n    }, finalDomain);\n  }\n\n  if (areas.length) {\n    var key1 = \"\".concat(valueKey, \"1\");\n    var key2 = \"\".concat(valueKey, \"2\");\n    finalDomain = areas.reduce(function (result, el) {\n      if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[key1]) && isNumber(el.props[key2])) {\n        var value1 = el.props[key1];\n        var value2 = el.props[key2];\n        return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n      }\n\n      return result;\n    }, finalDomain);\n  }\n\n  if (specifiedTicks && specifiedTicks.length) {\n    finalDomain = specifiedTicks.reduce(function (result, tick) {\n      if (isNumber(tick)) {\n        return [Math.min(result[0], tick), Math.max(result[1], tick)];\n      }\n\n      return result;\n    }, finalDomain);\n  }\n\n  return finalDomain;\n};", "import EventEmitter from 'eventemitter3';\nvar eventCenter = new EventEmitter();\n\nif (eventCenter.setMaxListeners) {\n  eventCenter.setMaxListeners(10);\n}\n\nexport { eventCenter };\nexport var SYNC_EVENT = 'recharts.syncMouseEvents'; // eslint-disable-next-line no-redeclare", "/**\n * @fileOverview Line Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Line } from '../cartesian/Line';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var LineChart = generateCategoricalChart({\n  chartName: 'LineChart',\n  GraphicalChild: Line,\n  axisComponents: [{\n    axisType: 'xAxis',\n    AxisComp: XAxis\n  }, {\n    axisType: 'yAxis',\n    AxisComp: YAxis\n  }],\n  formatAxisMap: formatAxisMap\n});", "/**\n * @fileOverview Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Bar } from '../cartesian/Bar';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var BarChart = generateCategoricalChart({\n  chartName: 'BarChart',\n  GraphicalChild: Bar,\n  defaultTooltipEventType: 'axis',\n  validateTooltipEventTypes: ['axis', 'item'],\n  axisComponents: [{\n    axisType: 'xAxis',\n    AxisComp: XAxis\n  }, {\n    axisType: 'yAxis',\n    AxisComp: YAxis\n  }],\n  formatAxisMap: formatAxisMap\n});", "/**\n * @fileOverview Pie Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { PolarAngleAxis } from '../polar/PolarAngleAxis';\nimport { PolarRadiusAxis } from '../polar/PolarRadiusAxis';\nimport { formatAxisMap } from '../util/PolarUtils';\nimport { Pie } from '../polar/Pie';\nexport var PieChart = generateCategoricalChart({\n  chartName: 'PieChart',\n  GraphicalChild: Pie,\n  validateTooltipEventTypes: ['item'],\n  defaultTooltipEventType: 'item',\n  legendContent: 'children',\n  axisComponents: [{\n    axisType: 'angleAxis',\n    AxisComp: PolarAngleAxis\n  }, {\n    axisType: 'radiusAxis',\n    AxisComp: PolarRadiusAxis\n  }],\n  formatAxisMap: formatAxisMap,\n  defaultProps: {\n    layout: 'centric',\n    startAngle: 0,\n    endAngle: 360,\n    cx: '50%',\n    cy: '50%',\n    innerRadius: 0,\n    outerRadius: '80%'\n  }\n});", "import React, {ReactElement} from \"react\"\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\n\nconst Wrapper = styled(Box)({\n    height: \"100%\",\n    width: \"100%\",\n    display: \"flex\",\n    alignItems:\"center\",\n    justifyContent: \"center\",\n    font: primaryFontLarge,\n    color: dark\n})\n\nexport function NoDataToDisplay(props: {children?: ReactElement}) {\n   return (\n       <Wrapper>\n           {props.children ? props.children : i18next.t(\"No data to display\")}\n       </Wrapper>\n   )\n}", "import React from \"react\";\nimport i18next from \"i18next\";\nimport isEqual from \"lodash/isEqual\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {\n    getConnectionPeer,\n    getRangeDateValueByFilterOption,\n    isWithinRange\n} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Group} from \"@backend/Types/Group\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {lightPrimary} from \"@root/react-components/src/values/colors/colors\";\nimport {CardList} from \"@root/Frontend/Console/components/CardList\";\nimport {Role} from \"@backend/Types/Role\";\n\nexport interface ActivePeerItem {\n    fullName: string;\n    email: string;\n    link: string;\n    thumbnail: string;\n    connectionsCount: number;\n}\n\nexport class MostActivePeers extends React.Component {\n\n    props: { filterDate: FilterDateOptions };\n    state: { mostActivePeers: ActivePeerItem[] | null, } = {mostActivePeers: null};\n\n    private readonly appConsole: AppConsole = AppConsole.getInstance();\n\n    async componentDidMount() {\n        const mostActivePeers: ActivePeerItem[] = await this.getMostActivePeers();\n        this.setState({mostActivePeers});\n    }\n\n    override async componentDidUpdate(prevProps: { filterDate: FilterDateOptions }) {\n        if (isEqual(prevProps.filterDate, this.props.filterDate))\n            return;\n\n        const mostActivePeers: ActivePeerItem[] = await this.getMostActivePeers();\n        this.setState({mostActivePeers});\n    }\n\n    private async getMostActivePeers(): Promise<ActivePeerItem[]> {\n\n        //The most active users are determined based on the number of logins\n        const activePeers: Map <bigint, ActivePeerItem> = new Map();\n        const [startDate, endDate]: [bigint, bigint] = getRangeDateValueByFilterOption(this.props.filterDate);\n        const currentPeer: Peer = await this.appConsole.dataSourcePeers.getPeer(this.appConsole.currentPeerID);\n        \n        for (const groupIdStr of Object.keys(currentPeer.group)) {\n            const groupID: bigint = UtilsShared.safelyConvertStringToBigInt(groupIdStr);\n            const group: Group = await this.appConsole.dataSourceGroups.getGroup(groupID);\n            const isCurrentPeerViewer: boolean = currentPeer.group[groupIdStr] === Role.VIEWER;\n            for (const peerIDStrg of Object.keys(group.Peers)) {\n                const peerID: bigint = UtilsShared.safelyConvertStringToBigInt(peerIDStrg);\n                const peer: Peer = await this.appConsole.dataSourcePeers.getPeer(peerID);\n\n                if (peer.archivedDate)\n                    continue;\n\n                // Each peer is calculated only once.\n                if (activePeers.has(peerID))\n                    continue;\n                \n                // For viewers, only the owners and the current peer are displayed.\n                if (isCurrentPeerViewer && group.Owner !== peerID && currentPeer.ID !== peerID)\n                    continue;\n\n                let connectionsCount: number = 0;\n                for (const connection of getConnectionPeer(peer?.logins ?? {}))\n                    if (isWithinRange(startDate, endDate, connection))\n                        connectionsCount++;\n\n                if (!connectionsCount) continue;\n\n                activePeers.set(peerID, {\n                    connectionsCount,\n                    email: peer.email,\n                    fullName: peer.fullName,\n                    link: `${Management.BASE_PATH}/Peers/${peer.ID}`,\n                    thumbnail: `https://secure.gravatar.com/avatar/${UtilsShared.md5(peer.username.toString())}?s=80&d=identicon`,\n                });\n            }\n        }\n\n        const sortedActivePeers: ActivePeerItem[] = Array.from(activePeers.values()).sort((a, b) => b.connectionsCount - a.connectionsCount);\n\n        return sortedActivePeers.slice(0, 5);\n    }\n\n    render() {\n        return (\n            <CardList\n                title={i18next.t(\"Users\")}\n                roundedAvatar\n                headerBackgroundColor={lightPrimary}\n                listItems={\n                    this.state.mostActivePeers?.map(({thumbnail, link, fullName, email}: ActivePeerItem) =>\n                        ({\n                            link,\n                            subtitle: email,\n                            title: fullName,\n                            thumbnail,\n                        })\n                    ) ?? []\n                }\n            />\n        );\n    }\n}", "import React from \"react\";\nimport {ViewTitle} from \"@root/Frontend/Console/components/ViewTitle\";\nimport {Route, Switch, Redirect, withRouter} from \"react-router-dom\";\nimport {BreadcrumbNavigation, BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {GroupsList} from \"@root/Frontend/Console/Views/Management/GroupsList/GroupsList\";\nimport {SmartComponent} from \"@utils//SmartComponent\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {PeersListWithRouter} from \"./PeersList/PeersList\";\nimport {PeersGroupsSwitch} from \"@root/Frontend/Console/Views/Management/PeersGroupsSwitch\";\nimport {Container} from \"react-grid-system\";\nimport i18next from \"i18next\";\nimport {RouteComponentProps} from \"react-router\";\nimport {GroupViewWithRouter} from \"@root/Frontend/Console/Views/Management/Group/GroupView\";\nimport {GroupPeersListWithRouter} from \"@root/Frontend/Console/Views/Management/Group/GroupPeersList\";\nimport {PeerViewWithRouter} from \"@root/Frontend/Console/Views/Management/Peer/PeerView\";\nimport {Box, styled} from \"@mui/material\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {\n    SkillsMatrixContainerWithRouter\n} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixContainer\";\n\nconst ContainerTitle = styled(Box)({\n    display: \"grid\",\n    gridTemplateColumns: \"1fr 1fr 1fr\",\n    alignItems: \"center\",\n    [theme.breakpoints.down('lg')]: {\n        gridTemplateColumns: \"1fr 1fr 15px\",\n    }\n});\n\ninterface ManagementState {\n    isDomainManager: boolean;\n    isPeersGroupsSwitchVisible: boolean;\n}\n\nexport class Management extends SmartComponent<RouteComponentProps> {\n    static BASE_PATH: string = \"/Console/Management\";\n    breadcrumbsNavigationRef: React.RefObject<BreadcrumbNavigation> = React.createRef()\n\n    state: ManagementState = {\n        isDomainManager: false,\n        isPeersGroupsSwitchVisible: false\n    };\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const appConsole: AppConsole = AppConsole.getInstance();\n        const currentPeer: Peer = await appConsole.dataSourcePeers.getPeer(appConsole.currentPeerID);\n\n        const isSwitchVisible: boolean = window.location.pathname === Management.BASE_PATH + \"/Groups\" ||\n                                         window.location.pathname === Management.BASE_PATH + \"/Peers\";\n\n        this.setState({\n            isDomainManager: Boolean(currentPeer.domainsManaged?.length),\n            isPeersGroupsSwitchVisible: isSwitchVisible\n        });\n    }\n\n    // this will allow our views to update the breadcrumb navigation\n    updateBreadcrumbsNavigation(levels: BreadcrumbsLevel[]){\n        if (!this.breadcrumbsNavigationRef.current)\n            return;\n\n        this.setState({ isPeersGroupsSwitchVisible: levels.length <= 1 });\n        this.breadcrumbsNavigationRef.current?.setState({levels: levels});\n    }\n\n    render(){\n        // default route path for management is .../Groups\n        if (window.location.pathname === Management.BASE_PATH ||\n            window.location.pathname === Management.BASE_PATH + \"/\") {\n            return <Redirect to={Management.BASE_PATH + \"/Groups\"}/>;\n        }\n\n        if (this.state.isDomainManager === null)\n            return <CenteredLoading />;\n\n        return <>\n                <ContainerTitle>\n                    <ViewTitle style={{flex: 1}}> {i18next.t(\"Management\")} </ViewTitle>\n                    {this.state.isPeersGroupsSwitchVisible && <PeersGroupsSwitch enabled={this.state.isDomainManager}/>}\n                    <div />\n                </ContainerTitle>\n\n                <Container fluid style={{height: `calc(100% - 72px)`}}>\n                    <BreadcrumbNavigation ref={this.breadcrumbsNavigationRef} />\n                    <Switch>\n                        <Route exact path={Management.BASE_PATH + \"/Groups\"}>\n                            <GroupsList viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                        </Route>\n                        <Route exact path={Management.BASE_PATH + \"/Groups/:groupID\"}>\n                            <GroupViewWithRouter viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                        </Route>\n                        <Route exact path={`${Management.BASE_PATH}/Groups/:groupID/SkillsMatrix`}>\n                            <SkillsMatrixContainerWithRouter viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                        </Route>\n                        <Route exact path={Management.BASE_PATH + \"/Groups/:groupID/Peers\"}>\n                            <GroupPeersListWithRouter viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                        </Route>\n                        <Route exact path={Management.BASE_PATH + \"/Peers/:peerID\"}>\n                            <PeerViewWithRouter viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                        </Route>\n\n                        {this.state.isDomainManager &&\n                            <Route exact path={Management.BASE_PATH + \"/Peers\"}>\n                                <PeersListWithRouter viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                            </Route>\n                        }\n                    </Switch>\n                </Container>\n            </>\n    }\n}\n\nexport const ManagementWithRouter = withRouter(Management);\n", "import React from \"react\";\nimport styled from \"styled-components\";\nimport {lightDark} from \"@root/react-components/src/values/colors/colors\";\nimport {secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {NavLink} from \"react-router-dom\";\nimport { Loading } from \"@root/react-components/src/logo/Loading\";\nimport { Chevron } from \"@root/react-components/src/icons/Chevron\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\n\nconst Wrapper = styled.div`\n    font: ${secondaryFontLarge};\n    & > div {\n        display: inline-flex;\n        height: 24px;\n        align-items: center;\n        vertical-align: middle;\n        & > div{\n            height: 100%;\n        }\n    }\n    & a {\n        text-decoration: none;\n        color: ${lightDark};\n    }\n    & > div > svg {\n        height: 10px;\n        width: 10px;\n        margin-right: 8px;\n        margin-left: 8px;\n    }\n`;\n\nexport type BreadcrumbsLevel = {\n    getName(): Promise<string>,\n    link: string\n}\n\nclass Level extends SmartComponent {\n    props: BreadcrumbsLevel;\n    state: { displayName: string } = { displayName: null}\n\n    async componentDidMount() {\n        super.componentDidMount();\n\n        if(this.props.getName)\n            this.setState({displayName: await this.props.getName()})\n    }\n\n    async componentDidUpdate(prevProps: Readonly<{}>, prevState: Readonly<{}>, snapshot?: any) {\n        if(this.props.getName && this.state.displayName !== await this.props.getName())\n            this.setState({displayName: await this.props.getName()})\n    }\n\n    render(){\n        if(this.state.displayName === null)\n            return <Loading />;\n\n        return <NavLink exact\n                        activeClassName={\"active\"}\n                        to={this.props.link}>{this.state.displayName}</NavLink>\n    }\n}\n\nexport class BreadcrumbNavigation extends React.Component {\n    state: { levels: BreadcrumbsLevel[] } = { levels: [] }\n\n    render(){\n        return <Wrapper id={\"breadcrumb-nav\"}>\n            {this.state.levels.map((level, index) => <div key={\"level-\" + index}>\n                <Level {...level} />{index === this.state.levels.length - 1 ? null : <Chevron />}\n            </div>)}\n        </Wrapper>\n    }\n}", "import React from \"react\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {GroupItem} from \"@root/Frontend/Console/Views/Management/GroupsList/GroupItem\";\nimport i18next from \"i18next\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {ListView} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Group} from \"@backend/Types/Group\";\nimport {Box, styled} from \"@mui/material\";\nimport {SearchBar} from \"@root/react-components/src/inputs/SearchBar\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {GroupExportCSV} from \"@root/Frontend/Console/Views/Management/GroupsList/GroupExportCSV\";\nimport {GroupScore} from \"@root/Frontend/Console/utils/UtilsGroups\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {compareTitles} from \"@utils/utils\";\nimport {EditGroupDialog} from \"@root/Frontend/Console/Views/Management/GroupsList/EditGroupDialog\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\n\nconst Header = styled(Box)({\n    display: \"flex\",\n    gap: \"5px\",\n    justifyContent: \"flex-end\",\n    marginBottom: 6\n});\n\nconst SearchBarWrapper = styled(Box)({\n    width: \"275px\",\n    [theme.breakpoints.down('md')]: {\n        width: \"210px\"\n    }\n});\n\ninterface GroupsListState {\n    groupIDs: bigint[] | null;\n    isCreateGroupDialogOpen: boolean;\n}\n\nexport class GroupsList extends RouterView {\n    private readonly app: AppConsole = AppConsole.getInstance();\n    private groupScores: Map<bigint, GroupScore> = new Map();\n\n    static getGroupLevel(){\n        return {\n            link: `${Management.BASE_PATH}/Groups`,\n            getName: () => Promise.resolve(i18next.t(\"Groups\"))\n        };\n    }\n\n    state: GroupsListState = {\n        isCreateGroupDialogOpen: false,\n        groupIDs: null\n    };\n\n    override getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [GroupsList.getGroupLevel()];\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const groupIDs: bigint[] = await this.getCurrentPeerGroupIDs();\n        const sortedGroupIDs: bigint[] = await this.sortGroupsByAlpha(groupIDs);\n        this.setState({ groupIDs: sortedGroupIDs });\n    }\n\n    private async search(searchStr: string): Promise<void> {\n        const groupIDs: bigint[] = await this.getCurrentPeerGroupIDs();\n        const filteredGroupIDs: bigint[] = await this.filterGroupsBySearchStr(groupIDs, searchStr);\n        const sortedGroupIDs: bigint[] = await this.sortGroupsByAlpha(filteredGroupIDs);\n\n        this.setState({ groupIDs: sortedGroupIDs });\n    }\n\n    private async getCurrentPeerGroupIDs(): Promise<bigint[]> {\n        const currentPeerID: bigint = this.app.currentPeerID;\n        const currentPeer: Peer = await this.app.dataSourcePeers.getPeer(currentPeerID);\n        const groupIDs: string[] = currentPeer.group ? Object.keys(currentPeer.group) : [];\n        return groupIDs.map((groupID: string) => UtilsShared.safelyConvertStringToBigInt(groupID));\n    }\n\n    private async filterGroupsBySearchStr(groupIDs: bigint[], searchStr: string): Promise<bigint[]> {\n        const filteredGroups: bigint[] = [];\n\n        for (const groupID of groupIDs) {\n            const group: Group = await this.app.dataSourceGroups.getGroup(groupID);\n            if (group.Name.toLowerCase().includes(searchStr.toLowerCase()))\n                filteredGroups.push(groupID);\n        }\n\n        return filteredGroups;\n    }\n\n    private async sortGroupsByAlpha(groupIDs: bigint[]): Promise<bigint[]> {\n        const groups: Map<bigint, string> = new Map();\n        for (const groupID of groupIDs) {\n            const group: Group = await this.app.dataSourceGroups.getGroup(groupID);\n            if (group)\n                groups.set(groupID, group.Name);\n        }\n\n        return groupIDs.sort((groupA: bigint, groupB: bigint) =>\n            compareTitles(groups.get(groupA) ?? \"\", groups.get(groupB) ?? \"\"));\n    }\n\n    private handleCreateGroup(groupID: bigint) {\n        if (!groupID) {\n            this.setState({ isCreateGroupDialogOpen: false });\n            return;\n        }\n\n        this.app.dataSourcePeers.invalidatePeer(this.app.currentPeerID);\n        this.getGroupScore(groupID);\n\n        // add as the first group in the list so the user can see it\n        const groupIDs: bigint[] = [groupID, ...this.state.groupIDs ?? []];\n        this.setState({ groupIDs, isCreateGroupDialogOpen: false });\n    }\n\n    private async handleDeleteGroup(deletedGroupID: bigint) {\n        if (!await this.app.dataSourceGroups.deleteGroup(deletedGroupID))\n            return;\n\n        this.app.dataSourcePeers.invalidatePeer(this.app.currentPeerID);\n\n        this.groupScores.delete(deletedGroupID);\n        const groupIDs: bigint[] =\n            this.state.groupIDs?.filter((groupID: bigint) => groupID !== deletedGroupID) ?? [];\n        this.setState({ groupIDs });\n    }\n\n    private getGroupScore(groupID: bigint): GroupScore {\n        let groupScore: GroupScore | undefined = this.groupScores.get(groupID);\n        if (!groupScore) {\n            groupScore = new GroupScore(groupID);\n            this.groupScores.set(groupID, groupScore);\n        }\n\n        return groupScore;\n    }\n\n    render(): JSX.Element {\n        if (!this.state.groupIDs)\n            return <CenteredLoading />;\n\n        return <>\n            <Header>\n                <SearchBarWrapper>\n                    <SearchBar\n                        onChange={(searchStr: string) => this.search(searchStr)}\n                        placeholder={i18next.t(\"Search\")}\n                    />\n                </SearchBarWrapper>\n                <GroupExportCSV groupIDs={this.state.groupIDs} />\n                <Button\n                    id=\"create-group\"\n                    size=\"small\"\n                    onClick={() => this.setState({ isCreateGroupDialogOpen: true })}\n                >\n                    {i18next.t(\"Create Group\")}\n                </Button>\n            </Header>\n            <Box style={{height: \"calc(100% - 64px)\"}}>\n                <ListView\n                    emptyListMessage={i18next.t(\"No Groups to display\")}\n                    itemCount={this.state.groupIDs.length}\n                    itemHeight={100}\n                    itemSpacing={0}\n                >\n                    {(index: number, isScrolling: boolean) => {\n                        if (!this.state.groupIDs || index >= this.state.groupIDs.length)\n                            return <></>;\n\n                        const groupID: bigint = this.state.groupIDs[index];\n                        return <GroupItem\n                            key={groupID.toString()}\n                            groupID={groupID}\n                            getGroupScore={(groupID: bigint) => this.getGroupScore(groupID)}\n                            isScrolling={isScrolling}\n                            onDelete={() => this.handleDeleteGroup(groupID)}\n                        />;\n                    }}\n                </ListView>\n            </Box>\n\n            {this.state.isCreateGroupDialogOpen &&\n                <EditGroupDialog\n                    groupID={BigInt(0)}\n                    onClose={(groupID: bigint) => this.handleCreateGroup(groupID)}\n                />\n            }\n        </>;\n    }\n}\n", "import React, {PureComponent} from \"react\";\nimport {Group} from \"@backend/Types/Group\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport i18next from \"i18next\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {\n    darkenGrey,\n    darkenWhite,\n    darkGreen,\n    darkGrey,\n    green,\n    lightPrimary,\n    lightWhite,\n    orange,\n    primary,\n    red,\n    yellow\n} from \"@root/react-components/src/values/colors/colors\";\nimport {Box, styled, Skeleton} from \"@mui/material\";\nimport {EditGroupDialog} from \"@root/Frontend/Console/Views/Management/GroupsList/EditGroupDialog\";\nimport {RouteComponentProps, withRouter} from \"react-router-dom\";\nimport {primaryFontXLarge, primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {GroupScore} from \"@root/Frontend/Console/utils/UtilsGroups\";\nimport {FlexibilityBarSegment} from \"@root/Frontend/Console/Views/Management/GroupsList/FlexibilityBarSegment\";\nimport {GroupItemActions} from \"@root/Frontend/Console/Views/Management/GroupsList/GroupItemActions\";\nimport {GroupLoadingBar} from \"@root/Frontend/Console/Views/Management/GroupsList/GroupLoadingBar\";\nimport {Role} from \"@backend/Types/Role\";\n\nconst Wrapper = styled(Box)(({ theme }) => ({\n    display: \"grid\",\n    gridTemplateColumns: \"64px 1fr minmax(44px, 260px)\",\n    alignItems: \"center\",\n    cursor: \"pointer\",\n    backgroundColor: lightWhite,\n    border: `2px solid ${darkenWhite}`,\n    borderRadius: \"12px\",\n    width: \"100%\",\n    padding: \"5px 0\",\n    columnGap: \"10px\",\n\n    [theme.breakpoints.down(600)]: {\n        gridTemplateColumns: \"64px 1fr 44px\",\n    },\n}));\n\nconst ObjectiveWrapper = styled(Box)((props: {background_color: string}) => ({\n    width: \"18px\",\n    height: \"18px\",\n    padding: \"12px\",\n    margin: \"10px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderRadius: \"50%\",\n    color: lightWhite,\n    backgroundColor: props.background_color,\n    font: primaryFontLarge\n}));\n\nconst ContentWrapper = styled(Box)({\n    flex: 1,\n    minWidth: 0,\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"8px\",\n    paddingBottom: \"2px\"\n});\n\nconst GroupName = styled(Box)({\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n    font: primaryFontXLarge\n});\n\nconst BarContainer = styled(Box)({\n    display: \"flex\",\n    width: \"100%\",\n    overflow: \"hidden\",\n    height: \"24px\"\n});\n\ninterface GroupItemCustomProps {\n    groupID: bigint;\n    getGroupScore: (groupID: bigint) => GroupScore;\n    onDelete: () => void;\n    isScrolling: boolean;\n}\n\ninterface GroupItemComponentState {\n    name: string | null;\n    objectiveQualified: bigint;\n    qualifiedScores: Map<bigint, number> | null;\n    criticalScores: Map<bigint, number> | null;\n    unqualifiedScores: Map<bigint, number> | null;\n    totalPeers: number;\n    loadingProgress: number;\n    isEditor: boolean;\n    isEditDialogOpen: boolean;\n}\n\ntype GroupItemComponentProps = GroupItemCustomProps & RouteComponentProps;\n\nclass GroupItemComponent extends PureComponent<GroupItemComponentProps, GroupItemComponentState> {\n    private readonly app: AppConsole = AppConsole.getInstance();\n    private groupScore: GroupScore = this.props.getGroupScore(this.props.groupID);\n\n    state: GroupItemComponentState = {\n        name: null,\n        objectiveQualified: BigInt(0),\n        qualifiedScores: null,\n        criticalScores: null,\n        unqualifiedScores: null,\n        totalPeers: 0,\n        loadingProgress: 0,\n        isEditor: false,\n        isEditDialogOpen: false\n    };\n\n    override async componentDidMount() {\n        // fetch the group first to show the group name\n        const group: Group | null = await this.app.dataSourceGroups.getGroup(this.props.groupID);\n        this.setState({\n            name: group.Name,\n            objectiveQualified: group.ObjectiveQualified,\n            isEditor: group.Peers[this.app.currentPeerID.toString()] === Role.EDITOR\n        }, async () => await this.loadGroupScores());\n    }\n\n    override async componentDidUpdate(prevProps: Readonly<GroupItemComponentProps>) {\n        if (prevProps.isScrolling && !this.props.isScrolling)\n            await this.loadGroupScores();\n    }\n\n    override componentWillUnmount() {\n        if (!this.groupScore.get())\n            this.groupScore.cancel();\n    }\n\n    private async loadGroupScores() {\n        // wait until the user stop scrolling to start the fetching\n        if (this.props.isScrolling && !this.groupScore.get())\n            return;\n\n        // if the group scores are already loaded, show them\n        if (!await this.groupScore.fetch((progress: number) => this.setState({ loadingProgress: progress })))\n            return;\n\n        this.setState({\n            qualifiedScores: this.groupScore.getQualifiedScores(),\n            criticalScores: this.groupScore.getCriticalScores(),\n            unqualifiedScores: this.groupScore.getUnqualifiedScores(),\n            totalPeers: this.groupScore.get()?.size ?? 0\n        });\n    }\n\n    private async onDelete(groupName: string): Promise<void> {\n        const confirmMessage: string = `${i18next.t(\"Are you sure you want to delete the group\")} ${groupName} ?`;\n        const hasConfirmed: boolean = await Prompt.confirm(confirmMessage, i18next.t(\"Delete\"), true);\n        if (hasConfirmed)\n            this.props.onDelete();\n    }\n\n    private getObjectiveColor(objectiveQualified: bigint, actualQualified: bigint, isEditor: boolean): string {\n        if (!isEditor || !objectiveQualified)\n            return primary;\n\n        return actualQualified >= objectiveQualified ? green : red;\n    }\n    \n    private async closeDialog() {\n        const group: Group = await this.app.dataSourceGroups.getGroup(this.props.groupID);\n\n        this.setState({\n            name: group.Name,\n            objectiveQualified: group.ObjectiveQualified,\n            isEditDialogOpen: false\n        });\n    }\n\n    render() {\n        return (\n            <>\n                <Wrapper\n                    id={this.props.groupID.toString()}\n                    className=\"group-item\"\n                    onClick={() => this.props.history.push(`${Management.BASE_PATH}/Groups/${this.props.groupID}`)}\n                >\n                    {(this.state.name && this.state.qualifiedScores) ?\n                        <ObjectiveWrapper\n                            background_color={this.getObjectiveColor(this.state.objectiveQualified,\n                                                                     BigInt(this.state.qualifiedScores.size),\n                                                                     this.state.isEditor)}\n                        >\n                            {this.state.objectiveQualified && this.state.isEditor ?\n                                <Box style={{fontSize: \"14px\"}}>\n                                    <sup style={{fontSize: \"12px\"}}>{this.state.qualifiedScores.size}</sup>\n                                    /\n                                    <sub style={{fontSize: \"12px\"}}>{this.state.objectiveQualified.toString()}</sub>\n                                </Box>\n                                :\n                                this.state.qualifiedScores.size\n                            }\n                        </ObjectiveWrapper>\n                        :\n                        <Box style={{padding: \"12px\"}}>\n                            <Skeleton\n                                variant=\"circular\"\n                                width=\"40px\"\n                                height=\"40px\"\n                                style={{ backgroundColor: lightPrimary }}\n                            />\n                        </Box>\n                    }\n                    <ContentWrapper>\n                        {this.state.name ?\n                            <Tooltip title={this.state.name} enterDelay={2000} enterNextDelay={1000}>\n                                <GroupName id={this.props.groupID.toString()} className=\"group-name\">\n                                    {this.state.name}\n                                </GroupName>\n                            </Tooltip>\n                            :\n                            <Skeleton variant=\"text\" style={{ fontSize: \"14px\", backgroundColor: lightPrimary }} />\n                        }\n                        <BarContainer>\n                            {!this.state.qualifiedScores || !this.state.criticalScores || !this.state.unqualifiedScores ?\n                                <GroupLoadingBar progress={this.state.loadingProgress} />\n                                :\n                                <>\n                                    {Boolean(this.state.qualifiedScores.size) &&\n                                        <FlexibilityBarSegment\n                                            title={`${i18next.t(\"Qualified Members\")} (100%)`}\n                                            scoresByPeerID={this.state.qualifiedScores}\n                                            backgroundColor={green}\n                                            borderColor={darkGreen}\n                                            width={`${this.state.qualifiedScores.size / this.state.totalPeers * 100}%`}\n                                        />\n                                    }\n                                    {Boolean(this.state.criticalScores.size) &&\n                                        <FlexibilityBarSegment\n                                            title={i18next.t(\"Critical Qualified Members\")}\n                                            scoresByPeerID={this.state.criticalScores}\n                                            backgroundColor={yellow}\n                                            borderColor={orange}\n                                            width={`${this.state.criticalScores.size / this.state.totalPeers * 100}%`}\n                                        />\n                                    }\n                                    {Boolean(this.state.unqualifiedScores.size) &&\n                                        <FlexibilityBarSegment\n                                            title={i18next.t(\"Unqualified Members\")}\n                                            scoresByPeerID={this.state.unqualifiedScores}\n                                            backgroundColor={darkenGrey}\n                                            borderColor={darkGrey}\n                                            width={`\n                                            ${this.state.unqualifiedScores.size / this.state.totalPeers * 100}%`}\n                                        />\n                                    }\n                                </>\n                            }\n                        </BarContainer>\n                    </ContentWrapper>\n                    <GroupItemActions\n                        groupID={this.props.groupID}\n                        onDelete={() => this.onDelete(this.state.name ?? \"\")}\n                        openEditDialog={() => this.setState({ isEditDialogOpen: true })}\n                    />\n                </Wrapper>\n                {this.state.isEditDialogOpen &&\n                    <EditGroupDialog\n                        groupID={this.props.groupID}\n                        onClose={() => this.closeDialog()}\n                    />\n                }\n            </>\n        );\n    }\n}\n\nexport const GroupItem = withRouter(GroupItemComponent);\n", "import React, {useEffect, useState} from \"react\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box} from \"@mui/material\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport styled from \"styled-components\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {DataSourceGroups} from \"@root/Frontend/DataSources/DataSourceGroups\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Group} from \"@backend/Types/Group\";\nimport {red} from \"@root/react-components/src/values/colors/colors\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {InputNumber} from \"@root/react-components/src/inputs/InputNumber\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {SelectRegion} from \"@root/react-components/src/inputs/SelectRegion\";\nimport {RegionAWS} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {DataSourceStorage} from \"@root/Frontend/DataSources/DataSourceStorage\";\nimport {DialogChangeRegion} from \"@root/Frontend/Console/Views/Management/DialogChangeRegion\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\n\nconst ButtonsContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"end\",\n    gap: \"4px\"\n});\n\nconst RowInput = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"5px\"\n});\n\nconst LabelWithTooltip = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n});\n\nconst SelectRegionWrapper = styled(Box)({\n    width: \"220px\",\n    minWidth: \"220px\"\n});\n\nconst OBJECTIVE_QUALIFIED_TOOLTIP_1: string =\n    \"The minimum number of qualified (trained) members required for this group\";\nconst OBJECTIVE_QUALIFIED_TOOLTIP_2: string = \"It is used to calculate the flexibility ratio, which measures how well\" +\n    \" the group can continue operating during absences (e.g., sick leave)\";\n\ninterface EditGroupDialogProps {\n    groupID: bigint;\n    onClose: (groupID: bigint) => void;\n}\n\nexport function EditGroupDialog(props: EditGroupDialogProps) {\n    const dataSourceGroups: DataSourceGroups = AppConsole.getInstance().dataSourceGroups;\n    const dataSourceStorage: DataSourceStorage = AppConsole.getInstance().dataSourceStorage;\n    const [name, setName] = useState<string>(\"\");\n    const [nameError, setNameError] = useState<string>(\"\");\n    const [objectiveQualified, setObjectiveQualified] = useState<bigint>(BigInt(0));\n    const [objectiveQualifiedError, setObjectiveQualifiedError] = useState<string>(\"\");\n    const [availableBuckets, setAvailableBuckets] = useState<Map<string, RegionAWS>>(new Map());\n    const [groupRegion, setGroupRegion] = useState<RegionAWS|null>(null);\n    const [groupRegionError, setGroupRegionError] = useState<string>(\"\");\n    const [pendingBucket, setPendingBucket] = useState<string>(\"\");\n\n    useEffect(() => {\n        dataSourceStorage.getAvailableBucketsRegions().then(setAvailableBuckets);\n        if (!props.groupID)\n            return;\n\n        dataSourceGroups.getGroup(props.groupID).then((group: Group) => {\n            setName(group.Name);\n            setGroupRegion(group.Region);\n            setObjectiveQualified(group.ObjectiveQualified);\n        });\n    }, []);\n\n    function handleChangeName(newName: string) {\n        setNameError(newName.trim() ? \"\" : \"Group name cannot be empty\");\n        setName(newName);\n    }\n\n    async function handleSaveAttributes(): Promise<boolean> {\n\n        // Create a group to save the name if necessary\n        let groupID: bigint = props.groupID;\n        if (groupID)\n            await dataSourceGroups.saveName(groupID, name);\n        else\n            groupID = await dataSourceGroups.createGroup(name);\n\n        // save objective qualified\n        if (!await dataSourceGroups.saveObjectiveQualified(groupID, objectiveQualified)) {\n            setObjectiveQualifiedError(\"Couldn't save group qualified member objective\");\n            return false;\n        }\n\n        // save region\n        if (!groupRegion || !await dataSourceGroups.saveRegion(groupID, groupRegion)) {\n            setGroupRegionError(\"Couldn't save group region\");\n            return false;\n        }\n\n        props.onClose(groupID); // all saved!\n        return true;\n    }\n\n    // verify if we have a pending bucket and region\n    const pendingRegion: RegionAWS | null = availableBuckets.get(pendingBucket) ?? null;\n    if (pendingBucket && pendingRegion) {\n        return (<DialogChangeRegion\n            ownerType={OwnerType.GROUP}\n            ownerID={props.groupID}\n            bucket={pendingBucket}\n            region={pendingRegion}\n            onClose={(success: boolean) => {\n                if (success)\n                    setGroupRegion(pendingRegion);\n                setPendingBucket(\"\");\n            }}\n        />)\n    }\n\n    return (\n        <Dialog\n            size={DialogSize.xs}\n            onClose={() => props.onClose(BigInt(0))}\n            innerStyle={{display: \"flex\", flexDirection: \"column\", gap: \"16px\"}}\n        >\n            <Box style={{ font: primaryFontXLarge }}>\n                {props.groupID ? i18next.t(\"Edit group\") : i18next.t(\"Create new group\")}\n            </Box>\n            <RowInput>\n                <InputText\n                    id={\"group-name-input\"}\n                    dark\n                    label={i18next.t(\"Name\")}\n                    value={name}\n                    onChange={(value: string) => handleChangeName(value)}\n                />\n                {nameError && <Box style={{ color: red }}>{i18next.t(nameError)}</Box>}\n            </RowInput>\n            <RowInput>\n                <LabelWithTooltip>\n                    <Box>{i18next.t(\"Region\")}</Box>\n                    <Tooltip title={i18next.t(SelectRegion.EXPLANATION)} size=\"small\" placement=\"right\">\n                        <InfoIcon style={{cursor: \"pointer\"}}><Info/></InfoIcon>\n                    </Tooltip>\n                </LabelWithTooltip>\n                <SelectRegionWrapper>\n                    <SelectRegion\n                        region={groupRegion}\n                        disabled={groupRegion !== null && props.groupID !== BigInt(0)}\n                        options={availableBuckets}\n                        onChange={(bucket) => props.groupID ?\n                            setPendingBucket(bucket) : setGroupRegion(availableBuckets.get(bucket) ?? null)}\n                    />\n                </SelectRegionWrapper>\n                {groupRegionError && <Box style={{ color: red }}>{i18next.t(groupRegionError)}</Box>}\n            </RowInput>\n            <RowInput>\n                <Box style={{display: \"flex\", justifyContent: \"space-between\"}}>\n                    <LabelWithTooltip>\n                        {`${i18next.t(\"Qualified Member Objective\")}`}\n                        <Tooltip title={`${i18next.t(OBJECTIVE_QUALIFIED_TOOLTIP_1)}. ` +\n                            `${i18next.t(OBJECTIVE_QUALIFIED_TOOLTIP_2)}.`}>\n                            <InfoIcon style={{cursor: \"pointer\"}}> <Info/> </InfoIcon>\n                        </Tooltip>\n                    </LabelWithTooltip>\n                    <InputNumber\n                        value={objectiveQualified}\n                        onChange={(newValue: bigint) => setObjectiveQualified(newValue)}\n                    />\n                </Box>\n                {objectiveQualifiedError && <Box style={{ color: red }}>{i18next.t(objectiveQualifiedError)}</Box>}\n            </RowInput>\n            <ButtonsContainer>\n                <Button\n                    variant=\"outlined\"\n                    onClick={() => props.onClose(BigInt(0))}\n                >\n                    {i18next.t(\"Cancel\")}\n                </Button>\n                <Button\n                    id=\"save-attributes-group\"\n                    disabled={!name || Boolean(nameError) || !groupRegion}\n                    onClick={() => handleSaveAttributes()}>\n                    {props.groupID ? i18next.t(\"Save\") : i18next.t(\"Confirm\")}\n                </Button>\n            </ButtonsContainer>\n        </Dialog>\n    )\n}", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {InputText} from \"./InputText\";\nimport {isNumericString} from \"../../../Frontend/utils/utils\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Plus} from \"../icons/Plus\";\nimport {Minus} from \"../icons/Minus\";\nimport {lightGrey, primary, white} from \"../values/colors/colors\";\n\nconst Wrapper = styled(Box)({\n    display: \"flex\",\n    gap: \"8px\"\n});\n\nconst IconButton = styled(Box)((props: { is_disabled?: number }) => ({\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    backgroundColor: `${props.is_disabled ? lightGrey : primary}`,\n    width: \"12px\",\n    height: \"12px\",\n    borderRadius: \"100%\",\n    padding: \"4px\",\n    cursor: \"pointer\",\n    userSelect: \"none\"\n}));\n\ninterface InputNumberProps {\n    value: bigint;\n    onChange: (value: bigint) => void;\n}\n\nexport function InputNumber(props: InputNumberProps): JSX.Element {\n\n    function handleChangeValue(value: string) {\n        if (!value) {\n            props.onChange(BigInt(0));\n            return;\n        }\n\n        if (!isNumericString(value))\n            return;\n\n        const parsedValue: bigint = UtilsShared.safelyConvertStringToBigInt(value);\n        props.onChange(parsedValue);\n    }\n\n    return (\n        <Wrapper>\n            <IconButton\n                is_disabled={Number(props.value === BigInt(0))}\n                onClick={() => props.value !== BigInt(0) && props.onChange(props.value - BigInt(1))}\n            >\n                <Minus height={12} width={12} fill={white} />\n            </IconButton>\n            <Box style={{width: \"35px\"}}>\n                <InputText\n                    dark\n                    center\n                    value={props.value.toString()}\n                    onChange={(value: string) => handleChangeValue(value)}\n                />\n            </Box>\n            <IconButton onClick={() => props.onChange(props.value + BigInt(1))}>\n                <Plus fill={white} />\n            </IconButton>\n        </Wrapper>\n    );\n}\n", "import React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function Minus(props: { height: number, width: number, fill?: string }) {\n    return (\n        <SvgIcon sx={{ height: props.height, width: props.width }} viewBox=\"0 0 24 24\" fill=\"none\">\n            <path\n                d=\"M22.2857 9.42999H1.71429C0.767679 9.42999 0 10.1972 0 11.1433V12.8567C0 13.8027 0.767679 14.57 1.71429 14.57H22.2857C23.2323 14.57 24 13.8027 24 12.8567V11.1433C24 10.1972 23.2323 9.42999 22.2857 9.42999Z\"\n                fill={props.fill ?? \"#23292F\"}\n            />\n        </SvgIcon>\n    );\n}\n", "import * as React from \"react\";\nimport {Box, CircularProgress} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {primaryFontXLarge, secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {RegionAWS} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {SelectRegion} from \"@root/react-components/src/inputs/SelectRegion\";\nimport {Warning} from \"@root/react-components/src/icons/Warning\";\nimport styled from \"styled-components\";\nimport {yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {DataSourceStorage} from \"@root/Frontend/DataSources/DataSourceStorage\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\n\nconst HeaderRow = styled.div`\n    display: flex;\n    align-items: center;\n    gap: 8px;\n`;\n\nconst WarningWrapper = styled(\"div\")`\n    width: 22px;\n    color: ${yellow};\n`;\n\ninterface DialogChangeRegionProps {\n    ownerType: OwnerType;\n    ownerID: bigint;\n    bucket: string;\n    region: RegionAWS;\n    onClose: (success: boolean) => void;\n}\n\ninterface DialogChangeRegionState {\n    progressMigration: number;\n    messageStatus: string;\n}\n\nexport class DialogChangeRegion extends React.Component<DialogChangeRegionProps, DialogChangeRegionState> {\n    state: DialogChangeRegionState = {\n        progressMigration: 0,\n        messageStatus: \"\"\n    }\n\n    private async startMigrationProgress(migrationCount: number) {\n        await UtilsShared.sleep(2000); // minimum migration time of 2 seconds\n        for (let progress: number = 1; progress <= migrationCount; progress += 1) {\n            this.setState({ progressMigration: progress / migrationCount });\n            await UtilsShared.sleep(100);\n        }\n        this.setState({ messageStatus: \"Complete\", progressMigration: 1 });\n        await UtilsShared.sleep(2000);\n    }\n\n    private handleConfirmMigration(){\n\n        // set an indeterminate loading\n        this.setState({ progressMigration: -1 }, async () => {\n            const dataSourceStorage: DataSourceStorage = AppConsole.getInstance().dataSourceStorage;\n\n            // perform the migration\n            const migrationCount: number =\n                await dataSourceStorage.migrateOwnerRegion(this.props.ownerType, this.props.ownerID, this.props.bucket);\n\n            // if return value is 0, migration failed\n            if (migrationCount === 0) {\n                this.setState({ progressMigration: 0.0001, messageStatus: \"failed\" });\n                await UtilsShared.sleep(5000);\n                return this.props.onClose(false);\n            }\n\n            // if return value is -1, migration still in progress...\n            if (migrationCount === -1) {\n                this.setState({messageStatus: \"Migration in progress, this can take a few hours, come back later\"});\n                await UtilsShared.sleep(5000);\n                return this.props.onClose(false);\n            }\n\n            // display progress before closing the dialog\n            await this.startMigrationProgress(migrationCount);\n            this.props.onClose(true);\n        });\n    }\n\n    render() {\n        return (\n            <Dialog\n                size={DialogSize.sm}\n                closeOnClickOutside={this.state.progressMigration === 0}\n                onClose={() => this.props.onClose(false)}\n            >\n                <HeaderRow>\n                    <WarningWrapper><Warning/></WarningWrapper>\n                    <Box style={{font: primaryFontXLarge}}>\n                        {i18next.t(\"Change Region\")}\n                    </Box>\n                </HeaderRow>\n                <Box style={{padding: \"6px 0px 16px\", font: secondaryFontLarge}}>\n                    {i18next.t(\"You are about to transfer all account data into a new region\")}.\n                    <br/>\n                    {i18next.t(\"Are you sure you want to change the region to\")}\n                    <b> {i18next.t(SelectRegion.REGION_NAME[this.props.region])} </b>\n                    {SelectRegion.REGION_FLAG[this.props.region]}?\n                    <br/><br/>\n                    <em>{i18next.t(\"This action is irreversible and can only be performed once\")}!</em>\n                </Box>\n                {this.state.progressMigration ?\n                    <Box style={{display:\"flex\", justifyContent:\"center\", alignItems:\"center\", flexDirection:\"column\"}}>\n                        <CircularProgress\n                            color={this.state.progressMigration < 1 ? \"primary\" : \"success\" }\n                            variant={this.state.progressMigration > 0 ? \"determinate\" : \"indeterminate\"}\n                            value={this.state.progressMigration * 100}/>\n                        <b>{this.state.messageStatus ? i18next.t(this.state.messageStatus) + '!' : \"\"}</b>\n                    </Box>\n                    :\n                    <Box style={{display: \"flex\", justifyContent: \"flex-end\", gap: \"6px\"}}>\n                        <Button variant=\"outlined\" onClick={() => this.props.onClose(false)}>\n                            {i18next.t(\"Cancel\")}\n                        </Button>\n                        <Button onClick={() => this.handleConfirmMigration()}>\n                            {i18next.t(\"Confirm\")}\n                        </Button>\n                    </Box>\n                }\n            </Dialog>\n        );\n    }\n}", "import {darkenGrey, darkGrey, lightGrey, white} from \"@root/react-components/src/values/colors/colors\";\nimport React from \"react\";\nimport {Box, Popover, Skeleton, styled} from \"@mui/material\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\n\nconst Segment = styled(Box)((props: {background_color: string, border_color: string}) => ({\n    display: \"flex\",\n    justifyContent: \"center\",\n    font: primaryFontLarge,\n    color: white,\n    backgroundColor: props.background_color,\n    border: `2px solid ${props.border_color}`,\n\n    \"&:first-child\": {\n        borderTopLeftRadius: \"4px\",\n        borderBottomLeftRadius: \"4px\"\n    },\n\n    \"&:last-child\": {\n        borderTopRightRadius: \"4px\",\n        borderBottomRightRadius: \"4px\"\n    }\n}));\n\nconst PopoverContent = styled(Box)({\n    font: primaryFontLarge,\n    color: darkGrey,\n    whiteSpace: \"pre-line\",\n    padding: \"4px\",\n    pointerEvents: \"auto\",\n    border: `2px solid ${darkenGrey}`,\n    minWidth: \"200px\",\n    lineHeight: \"28px\",\n    maxHeight: \"500px\",\n    overflowY: \"auto\",\n\n    \"&::-webkit-scrollbar-track\": {\n        backgroundColor: \"unset\",\n        width: 0\n    },\n    \"&::-webkit-scrollbar\": {\n        width: \"15px\",\n        height: \"15px\"\n    },\n    \"&::-webkit-scrollbar-thumb\": {\n        // the border (transparent) is causing the padding/margin effect\n        border: \"4px solid rgba(0, 0, 0, 0)\",\n        borderRadius: \"10px\",\n        backgroundClip: \"padding-box\",\n        backgroundColor: lightGrey\n    },\n    \"&::-webkit-scrollbar-thumb:hover\": {\n        // the border (transparent) is causing the padding/margin effect\n        border: \"4px solid rgba(0, 0, 0, 0)\",\n        borderRadius: \"10px\",\n        backgroundClip: \"padding-box\",\n        backgroundColor: darkGrey\n    },\n    \"::-webkit-scrollbar-corner\": { // little corner between the 2 scrollbars\n        backgroundColor: \"unset\"\n    }\n});\n\ninterface FlexibilityBarSegmentProps {\n    title: string;\n    scoresByPeerID: Map<bigint, number>;\n    backgroundColor: string;\n    borderColor: string;\n    width: string;\n}\n\nexport function FlexibilityBarSegment(props: FlexibilityBarSegmentProps): JSX.Element {\n    const app: AppConsole = AppConsole.getInstance();\n    const [peerFullNames, setPeerFullNames] = React.useState<Map<bigint, string> | null>(null);\n    const [segmentAnchor, setSegmentAnchor] = React.useState<HTMLDivElement | null>(null);\n    const [popoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n\n    async function fetchPeerFullNames(scoresByPeerID: Map<bigint, number>): Promise<Map<bigint, string>> {\n\n        const peerNamesByID: Map<bigint, string> = new Map();\n        for (const peerID of scoresByPeerID.keys()) {\n            const peer: Peer = await app.dataSourcePeers.getPeer(peerID);\n            peerNamesByID.set(peerID, peer.fullName.trim());\n        }\n\n        return new Map([...peerNamesByID.entries()]\n            .sort(([peerA, nameA]: [bigint, string], [peerB, nameB]: [bigint, string]) => {\n                const scoreDifference: number = (scoresByPeerID.get(peerB) ?? 0) - (scoresByPeerID.get(peerA) ?? 0);\n                return scoreDifference ? scoreDifference : nameA.localeCompare(nameB);\n            }\n        ));\n    }\n\n    async function handleSegmentEnter(event: React.MouseEvent<HTMLDivElement>,\n                                      scoresByPeerID: Map<bigint, number>,\n                                      fullNamesByPeerID: Map<bigint, string> | null) {\n\n        setSegmentAnchor(event.currentTarget);\n        setPopoverOpen(true);\n\n        if (fullNamesByPeerID)\n            return;\n\n        const peerNamesByID: Map<bigint, string> = await fetchPeerFullNames(scoresByPeerID);\n        setPeerFullNames(peerNamesByID);\n    }\n\n    function getPeerList(scoresByPeerID: Map<bigint, number>, fullNamesByPeerID: Map<bigint, string>): string {\n\n        const peerLabels: string[] = [...fullNamesByPeerID.entries()].map(([peerID, fullName]: [bigint, string])\n            : string => {\n\n            // 100 means we have a collection of qualified peers so showing their score is not necessary\n            const score: number = scoresByPeerID.get(peerID) ?? 0;\n            return score >= 100 ? fullName : `${fullName}: ${Math.round(score)}%`;\n        });\n\n        return peerLabels.join(\"\\n\");\n    }\n\n    return (\n        <>\n            <Segment\n                background_color={props.backgroundColor}\n                border_color={props.borderColor}\n                width={props.width}\n                onMouseEnter={(event: React.MouseEvent<HTMLDivElement>) =>\n                    handleSegmentEnter(event, props.scoresByPeerID, peerFullNames)}\n                onMouseLeave={() => setPopoverOpen(false)}\n            >\n                {props.scoresByPeerID.size}\n            </Segment>\n            <Popover\n                open={popoverOpen}\n                anchorEl={segmentAnchor}\n                anchorOrigin={{ vertical: \"top\", horizontal: \"center\" }}\n                transformOrigin={{ vertical: \"bottom\", horizontal: \"center\" }}\n                style={{ pointerEvents: \"none\" }}\n                closeAfterTransition={false}\n                disableRestoreFocus\n                disableAutoFocus\n                disableEnforceFocus\n                PaperProps={{ style: { overflow: \"hidden\" } }}\n            >\n                <PopoverContent\n                    onMouseEnter={() => setPopoverOpen(true)}\n                    onMouseLeave={() => setPopoverOpen(false)}\n                    onClick={(event: React.MouseEvent<HTMLDivElement>) => event.stopPropagation()}\n                >\n                    <Box style={{textDecoration: \"underline\"}}>{props.title}</Box>\n                    {peerFullNames ?\n                        getPeerList(props.scoresByPeerID, peerFullNames)\n                        :\n                        <>\n                            <Skeleton variant=\"text\" />\n                            <Skeleton variant=\"text\" width=\"80%\" />\n                        </>\n                    }\n                </PopoverContent>\n            </Popover>\n        </>\n    );\n}\n", "import React, {useEffect} from \"react\";\nimport {Box, styled, useMediaQuery, useTheme} from \"@mui/material\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport i18next from \"i18next\";\nimport {IconMenu} from \"@root/react-components/src/misc/IconMenu\";\nimport {ThreeDotsV} from \"@root/react-components/src/icons/ThreeDotsV\";\nimport {MenuOption} from \"@root/react-components/src/misc/MenuOption\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {dark, red} from \"@root/react-components/src/values/colors/colors\";\nimport {Group} from \"@backend/Types/Group\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Role} from \"@backend/Types/Role\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {World} from \"@backend/Types/World\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {useHistory} from \"react-router-dom\";\n\nconst IconMenuContainer = styled(Box)({\n    position: \"relative\",\n    cursor: \"pointer\",\n    \"svg\": {\n        width: \"12px\",\n        color: dark\n    }\n});\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    alignItems: \"center\",\n    paddingRight: \"12px\",\n    gap: \"8px\",\n    minWidth: 0,\n});\n\nconst TOOLTIP_DISABLED_DELETE_MSG: string = \"You need to transfer all the group's worlds before deleting the group\";\n\ninterface GroupItemActionsProps {\n    groupID: bigint;\n    onDelete: () => void;\n    openEditDialog: () => void;\n}\n\nexport function GroupItemActions(props: GroupItemActionsProps): JSX.Element {\n    const appConsole: AppConsole = AppConsole.getInstance();\n    const history = useHistory();\n    const isNarrowScreen: boolean = useMediaQuery(useTheme().breakpoints.down(600));\n\n    const [canEditGroup, setCanEditGroup] = React.useState<boolean>(false);\n    const [isGroupWorldOwner, setIsGroupWorldOwner] = React.useState<boolean>(false);\n\n    useEffect(() => {\n        canPeerEditGroup(appConsole.currentPeerID, props.groupID).then(\n            (canPeerEditGroup: boolean) => setCanEditGroup(canPeerEditGroup)\n        );\n\n        doesGroupOwnWorlds(props.groupID).then((isWorldOwner: boolean) => setIsGroupWorldOwner(isWorldOwner));\n    }, [props.groupID]);\n\n    async function canPeerEditGroup(peerID: bigint, groupID: bigint): Promise<boolean> {\n        const currentPeer: Peer = await appConsole.dataSourcePeers.getPeer(peerID);\n        return currentPeer.group && currentPeer.group[groupID.toString()] === Role.EDITOR;\n    }\n\n    async function doesGroupOwnWorlds(groupID: bigint): Promise<boolean> {\n        const group: Group = await appConsole.dataSourceGroups.getGroup(groupID);\n\n        for (const worldID of group.Worlds) {\n            const world: World = await appConsole.dataSourceWorlds.getWorld(worldID);\n            if (world.OwnerType.value === OwnerType.GROUP && world.Owner.value === groupID)\n                return true;\n        }\n        return false;\n    }\n\n    return (\n        <Container onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n                e.stopPropagation();\n                e.preventDefault();\n            }}\n        >\n            {!isNarrowScreen &&\n                <Button\n                    variant=\"outlined\"\n                    style={{ width: \"max-content\", marginRight: \"6px\" }}\n                    onClick={() => history.push(`${Management.BASE_PATH}/Groups/${props.groupID}/SkillsMatrix`)}\n                >\n                    {i18next.t(\"Skills Matrix\")}\n                </Button>\n            }\n            {(canEditGroup || isNarrowScreen) &&\n                <IconMenuContainer>\n                    <IconMenu\n                        id={`group-menu-${props.groupID}`}\n                        icon={<ThreeDotsV/>}\n                        style={{ padding: \"6px\" }}\n                        disableScrollLock\n                    >\n                        {isNarrowScreen &&\n                            <MenuOption\n                                id={`group-skills-matrix-btn-${props.groupID}`}\n                                onClick={() => history.push(\n                                    `${Management.BASE_PATH}/Groups/${props.groupID}/SkillsMatrix`)}>\n                                {i18next.t(\"Skills Matrix\")}\n                            </MenuOption>\n                        }\n\n                        {canEditGroup &&\n                            <>\n                                <MenuOption\n                                    id={`group-edit-btn-${props.groupID}`}\n                                    onClick={() => props.openEditDialog()}>\n                                    {i18next.t(\"Edit\")}\n                                </MenuOption>\n\n                                <MenuOption\n                                    id={`group-delete-btn-${props.groupID}`}\n                                    disabled={isGroupWorldOwner}\n                                    onClick={() => props.onDelete()}>\n                                    <Tooltip\n                                        title={isGroupWorldOwner ? i18next.t(TOOLTIP_DISABLED_DELETE_MSG) : \"\"}\n                                    >\n                                        <span style={{color: red}}>{i18next.t(\"Delete\")}</span>\n                                    </Tooltip>\n                                </MenuOption>\n                            </>\n                        }\n                    </IconMenu>\n                </IconMenuContainer>\n            }\n        </Container>\n    );\n}\n", "import * as React from \"react\";\nimport {white, dark, shadowDark} from \"../values/colors/colors\";\nimport {secondaryFontMedium} from \"../values/fonts/fonts\";\nimport {CSSProperties, ReactNode, useState} from \"react\";\nimport {Box, Popover, styled} from \"@mui/material\";\n\nconst Wrapper = styled(Box)({\n    boxShadow: shadowDark,\n    padding: \"6px\",\n    borderRadius: \"3px\",\n    transition: \"0.1s opacity\",\n    font: secondaryFontMedium,\n    color: white,\n    backgroundColor: dark\n});\n\ninterface IconMenuProps {\n    id: string;\n    icon: JSX.Element;\n    children: ReactNode;\n    style?: CSSProperties\n    disableScrollLock: boolean;\n}\n\nexport function IconMenu(props: IconMenuProps) {\n\n    const [anchorRef, setAnchorRef] = useState<HTMLDivElement | null>(null);\n\n    return (\n        <>\n            <Box\n                style={props.style}\n                id={props.id}\n                onClick={(e) => setAnchorRef(e.currentTarget)}>\n                {props.icon}\n            </Box>\n            {anchorRef &&\n                <Popover\n                    open\n                    disableScrollLock={props.disableScrollLock}\n                    anchorEl={anchorRef}\n                    anchorOrigin={{vertical: 'center', horizontal: 'right'}}\n                    onClose={() => setAnchorRef(null)}\n                >\n                    <Wrapper onClick={() => setAnchorRef(null)}>\n                        {props.children}\n                    </Wrapper>\n                </Popover>\n            }\n        </>\n    );\n}\n", "import React from 'react';\n\nexport const ThreeDotsV = () =>\n    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"ellipsis-v\"\n         className=\"svg-inline--fa fa-ellipsis-v fa-w-6\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n         viewBox=\"0 0 192 512\">\n        <path fill=\"currentColor\"\n              d=\"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\" />\n    </svg>\n", "import * as React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {lighterDark} from \"../values/colors/colors\";\nimport {ReactNode} from \"react\";\nimport { Tooltip } from \"./Tooltip\";\n\nconst OptionWrapper = styled(Box)((props: {disabled: number}) => ({\n    padding: \"3px\",\n    borderRadius: \"2px\",\n    whiteSpace: \"nowrap\",\n    opacity: props.disabled ? \"50%\" : \"100%\",\n    \"&:hover\": {\n        cursor: \"pointer\",\n        backgroundColor: lighterDark\n    }\n}));\n\ninterface MenuOptionProps {\n    id: string;\n    children: ReactNode;\n    onClick: () => void;\n    disabled?: boolean;\n    tooltipText?: string;\n}\n\nexport function MenuOption(props: MenuOptionProps) {\n    return (\n        <Tooltip title={props.tooltipText ?? \"\"}>\n            <OptionWrapper\n                id={props.id}\n                disabled={props.disabled ? 1 : 0}\n                onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n                    if (props.disabled) {\n                        event.stopPropagation();\n                        return;\n                    }\n                    props.onClick();\n                }}\n            >\n                {props.children}\n            </OptionWrapper>\n        </Tooltip>\n    );\n}\n", "import React from \"react\";\nimport {Box, Skeleton, styled} from \"@mui/material\";\nimport {darkenPrimary, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst LoadingBarWrapper = styled(Box)({\n    position: \"relative\",\n    width: \"100%\",\n    overflow: \"hidden\",\n    borderRadius: \"4px\",\n    backgroundColor: primary\n});\n\nconst LoadingBarFill = styled(Skeleton)({\n    height: \"100%\",\n    backgroundColor: darkenPrimary,\n    transition: \"width 0.6s ease\",\n    transform: \"unset\"\n});\n\nconst LoadingBarLabel = styled(Box)({\n    position: \"absolute\",\n    inset: 0,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    color: white,\n    font: primaryFontLarge\n});\n\ninterface GroupLoadingBarProps {\n    progress: number;\n}\n\nexport function GroupLoadingBar(props: GroupLoadingBarProps): JSX.Element {\n    const progress: number = Math.min(1, Math.max(0, props.progress));\n    const progressPercent: number = progress * 100;\n\n    return (\n        <LoadingBarWrapper\n            role=\"progressbar\"\n            aria-valuemin={0}\n            aria-valuemax={1}\n            aria-valuenow={progress}\n            style={{ height: \"100%\" }}\n        >\n            <LoadingBarFill style={{ width: `${progressPercent}%` }} />\n            <LoadingBarLabel>{Math.round(progressPercent)}%</LoadingBarLabel>\n        </LoadingBarWrapper>\n    );\n}\n", "import {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\n\ntype PropsType = {\n    viewDidMount?(navigation: BreadcrumbsLevel[]): void\n};\n\n// tracks navigation to construct breadcrumbs through different views\nexport abstract class RouterView<P = {}> extends SmartComponent<PropsType & P> {\n    // Force all subclass to implement the breadcrumbs level method\n    abstract getBreadcrumbsLevels(): BreadcrumbsLevel[];\n\n    // we override this to provide the breadcrumbs to the parent view\n    override componentDidMount() {\n        super.componentDidMount();\n\n        if(this.props.viewDidMount)\n            this.props.viewDidMount(this.getBreadcrumbsLevels());\n    }\n}\n", "import React, {ReactElement} from \"react\";\nimport {FixedSizeList as List} from \"react-window\";\nimport AutoSizer from \"react-virtualized-auto-sizer\";\nimport {secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Box, styled} from \"@mui/material\";\nimport {\n    darkenPrimary,\n    primary,\n    white\n} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\n\nexport interface ListWrapperStyleProps {\n    backgroundColor?: string;\n    color: string;\n    scrollbarcolor?: string;\n    height?: string;\n    width?: string;\n}\n\nexport const ListWrapper = styled(Box)((props: ListWrapperStyleProps) => ({\n    backgroundColor: props.backgroundColor ?? primary,\n    height: props.height ?? \"350px\",\n    width: props.width ?? \"100%\",\n    borderRadius: \"12px\",\n    padding: \"0 10px\",\n    boxSizing: \"border-box\",\n    color: props.color ?? white,\n    scrollbarColor: props.scrollbarcolor ?\n        `${props.scrollbarcolor} ${props.backgroundColor ?? primary}` :\n        `${darkenPrimary} ${props.backgroundColor ?? primary}`,\n    scrollbarWidth: \"thin\",\n    \"& div div\":{\n        /* width */\n        \"&::-webkit-scrollbar\": {\n            width: \"10px\",\n            height: \"10px\"\n        },\n        /* Track */\n        \"&::-webkit-scrollbar-track\": {\n            width: 0,\n            backgroundColor: white,\n            borderRadius: \"10px\",\n            marginBlock: \".5em\"\n        },\n        /* Handle */\n        \"&::-webkit-scrollbar-thumb\": {\n            background: props.scrollbarcolor ?? darkenPrimary,\n            borderRadius: \"10px\",\n        },\n        /* Handle on hover */\n        \"&::-webkit-scrollbar-thumb:hover\": {\n            background: props.scrollbarcolor ?? darkenPrimary\n        }\n    }\n}))\n\nconst EmptyListView = styled(Box)({\n    height: \"100%\",\n    width: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    font: secondaryFontLarge,\n});\n\nexport class ListView extends React.Component {\n    props: {\n        emptyListMessage?: string,\n        itemCount: number,\n        itemHeight?: number,\n        itemSpacing?: number,\n        children(index: number, isScrolling: boolean): ReactElement\n    }\n\n    render(){\n        if(this.props.itemCount === 0)\n            return (\n                <EmptyListView>\n                    {this.props.emptyListMessage ? this.props.emptyListMessage : i18next.t(\"No data to display\")}\n                </EmptyListView>\n            )\n\n        const spacing: number  = this.props.itemSpacing ?? 20;\n\n        return (\n            <AutoSizer>{(props: {height: number, width: number}) =>\n                <List width={props.width}\n                      height={props.height}\n                      itemCount={this.props.itemCount ?? 0}\n                      itemSize={this.props.itemHeight ?? 100}\n                      useIsScrolling\n                      style={{paddingBottom: spacing, boxSizing: \"border-box\"}}>\n                    {({style, index, isScrolling}) => <div style={{\n                        ...style,\n                        paddingTop: spacing,\n                        paddingRight: \"5px\",\n                        paddingLeft: \"5px\",\n                        boxSizing: \"border-box\"\n                    }}>{this.props.children(index, isScrolling ?? false)}</div>}\n                </List>}\n            </AutoSizer>\n        )\n    }\n}", "import React, {useEffect, useState} from \"react\";\nimport i18next from \"i18next\";\nimport {Box, LinearProgress} from \"@mui/material\";\nimport {Dialog} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Group} from \"@backend/Types/Group\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {primaryFontXLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\"\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {World} from \"@backend/Types/World\";\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {\n    calculateGrade, getMostRecentAttempt, isAttemptCompleted,\n} from \"@root/Frontend/Console/utils/UtilsAttempts\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {timestampToShortString} from \"@utils/utils\";\nimport {deburr} from \"lodash\";\n\ninterface GroupExportCSVProps {\n    groupIDs: bigint[];\n}\n\nexport function GroupExportCSV(props: GroupExportCSVProps) {\n    const app: AppConsole = AppConsole.getInstance();\n    const [loading, setLoading] = useState<boolean>(false);\n    const [groupsLoading, setGroupsLoading] = useState<number>(1);\n\n    useEffect(() => {\n        if (!loading)\n            return;\n\n        generateGroupsCSV(props.groupIDs);\n    }, [loading, props.groupIDs]);\n\n    async function generateGroupsCSV(groupIDs: bigint[]) {\n\n        const headers: string[] = [\n            \"Group Name\",\n            \"Group ID\",\n            \"Qualified Objective\",\n            \"World Name\",\n            \"WorldID\",\n            \"Sequence Name\",\n            \"SequenceID\",\n            \"Level\",\n            \"Evaluation\",\n            \"Critical\",\n            \"Peer Name\",\n            \"Peer ID\",\n            \"Score\",\n            \"Objective\",\n            \"Last Attempt\"\n        ];\n\n        const rowsCSV: string[] = [];\n        rowsCSV.push(headers.join(\";\") + \"\\n\");\n\n        for (const groupID of groupIDs) {\n            const group: Group = await app.dataSourceGroups.getGroup(groupID);\n            const groupPeerIDs: bigint[] = Object.keys(group.Peers).map(\n                (peerID: string) => UtilsShared.safelyConvertStringToBigInt(peerID));\n\n            for (const worldID of group.Worlds) {\n                const world: World = await app.dataSourceWorlds.getWorld(worldID);\n\n                for (const sequenceID of world.Sequences.value) {\n                    const sequence: Sequence = await app.dataSourceSequences.getSequence(worldID, sequenceID);\n\n                    if (sequence.GroupsExclusive.value.length &&\n                        !sequence.GroupsExclusive.value.includes(groupID))\n                        continue;\n\n                    // skip if it's a draft sequence\n                    if (!sequence.ChildSequence.value)\n                        continue;\n\n                    // skip if it's not the latest publish\n                    const child: Sequence =\n                        await app.dataSourceSequences.getSequence(worldID, sequence.ChildSequence.value);\n                    if (child.ChildSequence.value)\n                        continue;\n\n                    const allAttempts: AttemptLogs[] =\n                        await app.dataSourceAttemptLogs.getAttemptsUpToLastMajor(worldID, sequenceID, false);\n                    const attempts: AttemptLogs[] = allAttempts.filter( async (attempt: AttemptLogs) => {\n                        const sequenceAttempt: Sequence = await this.app.dataSourceSequences.getSequence(worldID, attempt.sequenceID);\n                        group.Peers[attempt.peerID.toString()] && isAttemptCompleted(sequenceAttempt, attempt)\n                    });\n\n                    for (const peerID of groupPeerIDs) {\n                        const peer: Peer = await app.dataSourcePeers.getPeer(peerID);\n                        const peerAttempts: AttemptLogs[] = attempts.filter((a: AttemptLogs) => a.peerID === peerID);\n                        const mostRecentAttempt: AttemptLogs | null = getMostRecentAttempt(peerAttempts);\n\n                        let score: number = 0;\n                        if (mostRecentAttempt && sequence.ObjectiveGrade.value) {\n                            score = await calculateGrade(mostRecentAttempt) * 100;\n                        } else if (sequence.ObjectiveVisualizations.value)\n                            score = peerAttempts.length;\n\n                        const timestamp: bigint = mostRecentAttempt?.attemptID ?\n                            UtilsShared.getTimestampOfRandomID(mostRecentAttempt.attemptID) : BigInt(0);\n\n                        const objective: number = sequence.ObjectiveGrade.value ?\n                            sequence.ObjectiveGrade.value * 100 : Number(sequence.ObjectiveVisualizations.value);\n\n                        rowsCSV.push(deburr([\n                            group.Name,\n                            groupID.toString(),\n                            group.ObjectiveQualified ? group.ObjectiveQualified.toString() : 0,\n                            world.Title.value,\n                            worldID.toString(),\n                            sequence.Title.value,\n                            sequenceID.toString(),\n                            sequence.Level.value.toString(),\n                            sequence.ObjectiveGrade.value ? \"1\" : \"0\",\n                            sequence.Critical.value ? \"1\" : \"0\",\n                            peer.fullName,\n                            peerID.toString(),\n                            score ? Math.round(score).toString() : \"-\",\n                            Math.round(objective).toString(),\n                            timestamp ? timestampToShortString(timestamp) : \"-\"\n                        ].join(\";\")) + \"\\n\");\n                    }\n                }\n            }\n\n            setGroupsLoading((prev: number) => prev + 1);\n        }\n\n        // Build the final CSV\n        const blob = new Blob(rowsCSV, { type: \"text/csv;charset=utf-8;\" });\n        const url: string = URL.createObjectURL(blob);\n\n        const a: HTMLAnchorElement = document.createElement(\"a\");\n        a.href = url;\n        a.download = `groups-${new Date().toISOString().split(\"T\")[0]}.csv`;\n        a.click();\n\n        // clean up\n        URL.revokeObjectURL(url);\n        setLoading(false);\n    }\n\n\n    return (\n        <Box>\n            <Button\n                size=\"small\"\n                variant=\"outlined\"\n                onClick={() => setLoading(true)}\n            >\n                {i18next.t(\"Export\")}\n            </Button>\n            {loading &&\n                <Dialog>\n                    <Box>\n                        <Box style={{font: primaryFontXLarge}}>{i18next.t(\"Groups export\")}</Box>\n                        <Box style={{display: \"flex\", alignItems: \"center\", flexDirection: \"column\"}}>\n                            <Box style={{font: secondaryFontMedium, padding: \"12px 0px 6px\"}}>\n                                {i18next.t(\"We\u2019re currently collecting all the data required to export group progress\")}\n                            </Box>\n                            <LinearProgress\n                                variant=\"determinate\"\n                                value={groupsLoading / props.groupIDs.length * 100}\n                                style={{width: \"100%\"}}\n                            />\n                            <Box style={{ paddingTop: \"4px\" }}>{groupsLoading} / {props.groupIDs.length}</Box>\n                        </Box>\n                    </Box>\n                </Dialog>\n            }\n        </Box>\n    );\n}", "import {FiltersInterface} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {DataSourceAttemptLogs, WorldSequenceAttempts} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {DataSourceWorlds} from \"@root/Frontend/DataSources/DataSourceWorlds\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {isSequenceRespectingFilters, parseAttemptsByFilters} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport {DataSourceSequences, Sequence, StepTypeID} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {getPeerWorldIDs, getWorldSequences} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {World} from \"@backend/Types/World\";\nimport {SequenceLogs} from \"@backend/Types/SequenceLogs\";\nimport {convertStepTypeToString, StepInput, StepQuestion, StepType} from \"@backend/Types/Step\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {timestampToString} from \"@utils/utils\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {DataSourceEntities} from \"@root/Frontend/DataSources/DataSourceEntities\";\nimport {Entity} from \"@backend/Types/Entity\";\nimport {StepAction} from \"@backend/Types/StepAction\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {DataSourceText, TextData} from \"@root/Frontend/DataSources/DataSourceText\";\nimport {deburr} from \"lodash\";\n\nexport interface CorrectAnswerScore {\n    score: number,\n    correctAnswerSize: number\n}\n\n// return a map of attemptIDs per sequenceIDs per worldIDs -> map<worldID, map<sequenceID, attemptsID[]>\nexport async function getWorldSequenceAttemptIDs(peerWorldIDs: Set<bigint>, filters: FiltersInterface):\n    Promise<WorldSequenceAttempts> {\n    const worldSequenceAttemptIDs: WorldSequenceAttempts = new Map();\n    const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n    const dataSourceWorlds: DataSourceWorlds = AppConsole.getInstance().dataSourceWorlds;\n\n    if(!peerWorldIDs || !peerWorldIDs.size)\n        return worldSequenceAttemptIDs;\n\n    // iterate world IDs, sequence IDs and grab all attempts IDs\n    await Promise.all([...peerWorldIDs].map(async (worldID: bigint) => {\n        const world: World = await dataSourceWorlds.getWorld(worldID);\n        const sequences: bigint[] = world?.Sequences?.value ?? [];\n        const sequenceAttempts: Map<bigint, bigint[]> = new Map();\n\n        for (const sequenceID of sequences) {\n            const attemptLogs: AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(worldID, sequenceID);\n            const filteredAttempts: AttemptLogs[] = await parseAttemptsByFilters(attemptLogs, filters);\n\n            sequenceAttempts.set(sequenceID, filteredAttempts.map((attempt: AttemptLogs) => attempt.attemptID));\n        }\n\n        if (sequenceAttempts.size)\n            worldSequenceAttemptIDs.set(worldID, sequenceAttempts);\n    }));\n\n    return worldSequenceAttemptIDs;\n}\n\n// return only attempts of published Sequence, if regroupAllAttemptsVersions is true,\n// all attempts of a sequence are grouped \"under\" the current published version\nexport async function getPublishedWorldSequenceAttemptIDs(worldIDs: Set<bigint>,\n                                                          filters: FiltersInterface,\n                                                          regroupAllAttemptsVersions: boolean,\n                                                          filterEmptyAttempts: boolean = true,\n                                                          groupID: bigint = BigInt(0))\n    : Promise<WorldSequenceAttempts> {\n    const worldSequenceAttemptIDs: WorldSequenceAttempts = new Map<bigint, Map<bigint, bigint[]>>();\n    const app: AppConsole = AppConsole.getInstance();\n    const dataSourceAttemptLogs: DataSourceAttemptLogs = app.dataSourceAttemptLogs;\n\n    if (!worldIDs || !worldIDs.size)\n        return worldSequenceAttemptIDs;\n\n    for (const worldID of worldIDs) {\n        // getWorldSequences, only return current published sequences of the world\n        const worldSequenceIDs: bigint[] = await getWorldSequences(worldID, false, groupID);\n        if (!worldSequenceIDs.length)\n            continue;\n\n        const sequenceAttempts: Map<bigint, bigint[]> = new Map();\n        for (const sequenceID of worldSequenceIDs) {\n            const attemptLogs: AttemptLogs[] =\n                regroupAllAttemptsVersions ? await getAttemptsFromAllVersions(worldID, sequenceID, filterEmptyAttempts)\n                                           : await dataSourceAttemptLogs.getAttemptsUpToLastMajor(worldID,\n                                                                                           sequenceID,\n                                                                                           filterEmptyAttempts);\n\n            const filteredAttempts: AttemptLogs[] = await parseAttemptsByFilters(attemptLogs, filters);\n\n            sequenceAttempts.set(sequenceID, filteredAttempts.map((attempt: AttemptLogs) => attempt.attemptID));\n        }\n\n        if (sequenceAttempts.size)\n            worldSequenceAttemptIDs.set(worldID, sequenceAttempts);\n    }\n\n    return worldSequenceAttemptIDs;\n}\n\n// return all attemptsLogs from all versions of a given sequence\nasync function getAttemptsFromAllVersions(worldID: bigint,\n                                          sequenceID: bigint,\n                                          filterEmptyAttempts: boolean = true): Promise<AttemptLogs[]> {\n    const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n    const sequencesDataSource: DataSourceSequences = AppConsole.getInstance().dataSourceSequences;\n\n    let sequence: Sequence = await sequencesDataSource.getSequence(worldID,sequenceID);\n\n    // filled this array with the currentPublished version of the sequence first\n    const allVersionsAttempts : AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(worldID,\n                                                                                              sequenceID,\n                                                                                              filterEmptyAttempts);\n\n    // we get attempts from all others published versions of the current sequence\n    // and assigned them to the most recent published version\n    while (sequence.ParentSequence.value) {\n        const parentSequenceID: bigint = sequence.ParentSequence.value;\n        sequence = await sequencesDataSource.getSequence(worldID, parentSequenceID);\n        const attempts: AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(worldID,\n                                                                                      parentSequenceID,\n                                                                                      filterEmptyAttempts);\n        allVersionsAttempts.push(...attempts);\n    }\n    return allVersionsAttempts;\n}\n\nexport async function convertSequenceLogToCSV(sequenceLogs: SequenceLogs, filters: FiltersInterface): Promise<string> {\n    const appConsole: AppConsole = AppConsole.getInstance();\n    const dataSourceWorlds: DataSourceWorlds = appConsole.dataSourceWorlds;\n    const dataSourceSequences: DataSourceSequences = appConsole.dataSourceSequences;\n    const dataSourceSteps: DataSourceSteps = appConsole.dataSourceSteps;\n    const dataSourceText: DataSourceText = appConsole.dataSourceText;\n    const dataSourcePeers: DataSourcePeers = appConsole.dataSourcePeers;\n    const dataSourceEntities: DataSourceEntities = appConsole.dataSourceEntities;\n\n    let csvAllSequence: string = \"\";\n    for (let i: number = 0; i < sequenceLogs.getStepsAttemptIDs().length; i++) {\n\n        // filter sequenceLogs which respects filters (empty attempt are not considered too)\n        if (!await isSequenceRespectingFilters(sequenceLogs, i, filters))\n            continue;\n\n        let csvSequence: string = \"\";\n        const timestamp: bigint = sequenceLogs.getStepsTimestamps()[i];\n        const stepID: bigint = sequenceLogs.getStepsIDs()[i];\n        const peerID: bigint = sequenceLogs.getStepsPeerIDs(i);\n        const stepType: StepType | -1 = sequenceLogs.getStepsTypes()[i] ?? -1;\n        const entityID: bigint = sequenceLogs.getEntityID(i);\n\n        const world: World = await dataSourceWorlds.getWorld(sequenceLogs.worldID);\n        const sequence: Sequence =\n            await dataSourceSequences.getSequence(sequenceLogs.worldID, sequenceLogs.sequenceID);\n        const step: StepData =\n            await dataSourceSteps.getStep(sequenceLogs.worldID, sequenceLogs.sequenceID, stepID);\n        const text: TextData = await dataSourceText.getText(step.Text.value);\n        const stepTitle: string = text.OriginalText.value;\n        const peer: Peer = await dataSourcePeers.getPeer(peerID);\n        const stepTypeName: string = stepType === -1 ? \"\" : convertStepTypeToString(stepType ?? StepType.ANIMATED);\n        let entityName: string = \"\";\n        if (entityID) {\n            const entity: Entity = await dataSourceEntities.getEntityByID(entityID);\n            entityName = entity.Name.value;\n        }\n\n        // verify that values are in the same order of wanted keys\n        csvSequence = sequenceLogs.worldID+\";\"+\n            world.Title.value+\";\"+\n            sequenceLogs.sequenceID+\";\"+\n            sequence.Title.value+\";\"+\n            entityID+\";\"+\n            entityName+\";\"+\n            sequenceLogs.getStepsAttemptIDs()[i]+\";\"+\n            sequenceLogs.getStepsOS(i)+\";\"+\n            peerID+\";\"+\n            peer.fullName+\";\"+\n            sequenceLogs.getStepsSessions(i)+\";\"+\n            stepID+\";\"+\n            stepTitle+\";\"+\n            sequenceLogs.getStepsIndices()[i]+\";\"+\n            stepType+\";\"+\n            stepTypeName+\";\"+\n            sequenceLogs.getStepsInputs()[i]+\";\"+\n            timestamp+\";\"+\n            timestampToString(timestamp, true, true)+\";\";\n        csvAllSequence += deburr(csvSequence).replaceAll(\"\\n\", \" \") + \"\\n\";\n    }\n\n    return csvAllSequence;\n}\n\nexport async function getSequenceLogsCsv(\n    worldID: bigint,\n    filters: FiltersInterface,\n    sequenceID?: bigint\n): Promise<Blob> {\n    const appConsole: AppConsole = AppConsole.getInstance();\n    const dataSourceSequences: DataSourceSequences = appConsole.dataSourceSequences;\n    const dataSourceWorlds: DataSourceWorlds = appConsole.dataSourceWorlds;\n\n    const wantedKeys: string[] = [\"worldID\", \"worldTitle\", \"sequenceID\", \"SequenceTitle\", \"entityID\", \"entityName\",\n        \"attemptID\", \"OS\", \"peerID\", \"peerFullName\", \"sessionID\", \"stepID\", \"stepTitle\", \"stepIndex\", \"stepType\",\n        \"stepTypeName\", \"stepInput\", \"timestamp\", \"formattedTimestamp\"];\n\n    let csvData: string = `${wantedKeys.join(\";\")}\\n`;\n    if (sequenceID) {\n        const sequence: Sequence = await dataSourceSequences.getSequence(worldID, sequenceID);\n        csvData = csvData.concat(await convertSequenceLogToCSV(sequence.Logs.value, filters));\n    } else {\n        const world: World = await dataSourceWorlds.getWorld(worldID);\n\n        for (const sequenceID of world.Sequences.value) {\n            const sequence: Sequence = await dataSourceSequences.getSequence(worldID, sequenceID);\n\n            if (Boolean(sequence.ParentSequence.value) && !sequence.ChildSequence.value) {\n                const parentSequence: Sequence =\n                    await dataSourceSequences.getSequence(worldID, sequence.ParentSequence.value);\n                csvData = csvData.concat(await convertSequenceLogToCSV(parentSequence.Logs.value, filters));\n            }\n        }\n    }\n\n    return new Blob([csvData], {type: \"octet/stream\"});\n}\n\n// return all filtered attemptsLogs for worlds that the current peer have access\nexport async function getFilteredAttemptsLogs(filters: FiltersInterface) {\n    const appConsole: AppConsole = AppConsole.getInstance();\n    const currentPeer: Peer = await appConsole.dataSourcePeers.getPeer(appConsole.currentPeerID)\n\n    // get peer worlds in case if a world association has been removed\n    const peerWorldIDs: Set<bigint> = await getPeerWorldIDs(currentPeer);\n    const entityAttemptsMap: WorldSequenceAttempts = await getWorldSequenceAttemptIDs(peerWorldIDs, filters);\n\n    return [...await appConsole.dataSourceAttemptLogs.getAttemptsByWorldSequenceAttempts(entityAttemptsMap)];\n}\n\n// Map every step actions with the same stepID\nexport function getStepActionsByStepID(stepActions: StepAction[],\n                                       stepType: StepType | null = null): Map<bigint, StepAction[]> {\n    const mapActionsByStepID: Map<bigint, StepAction[]> = new Map<bigint, StepAction[]>();\n\n    for (const stepAction of stepActions) {\n        if (stepType !== null && stepAction.stepType !== stepType)\n            continue;\n\n        if (mapActionsByStepID.has(stepAction.stepID))\n            mapActionsByStepID.get(stepAction.stepID)?.push(stepAction);\n        else\n            mapActionsByStepID.set(stepAction.stepID, [stepAction]);\n    }\n    return mapActionsByStepID;\n}\n\nexport async function calculateAttemptAnswersScore(attempts: AttemptLogs): Promise<CorrectAnswerScore> {\n\n    const allStepActions: StepAction[] = attempts.getStepActions();\n    const mapActionsByStepID: Map<bigint, StepAction[]> = getStepActionsByStepID(allStepActions);\n\n    const sequencesDataSource: DataSourceSequences = AppConsole.getInstance().dataSourceSequences;\n    const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n    const sequence: Sequence = await sequencesDataSource.getSequence(attempts.worldID, attempts.sequenceID);\n\n    let score: number = 0;\n    let correctAnswerSize: number = 0;\n    for (const { ID: stepID, Type: stepTypeStr } of sequence.Steps.value) {\n        const stepType: StepType | null = UtilsShared.getCorrespondingEnumValue(StepType, stepTypeStr);\n\n        // fetch the last associated StepAction\n        const stepActions: StepAction[] = mapActionsByStepID.get(stepID) ?? [];\n        const stepAction: StepAction | undefined = stepActions.at(-1);\n\n        switch (stepType) {\n            case StepType.INPUT: {\n                const step: StepInput =\n                    await dataSourceSteps.getStep(attempts.worldID, attempts.sequenceID, stepID) as StepInput;\n                // check if the step has no minimum and maximum value, it doesn't count as a correct answer\n                if ((!step.Minimum && !step.Maximum) || (step.Minimum?.value === null && step.Maximum?.value === null))\n                    continue;\n\n                const inputValue: number = Number(stepAction?.stepInput);\n                correctAnswerSize++;\n                if (Number.isFinite(inputValue) &&\n                    (step.Minimum.value === null || inputValue >= step.Minimum.value) &&\n                    (step.Maximum.value === null || inputValue <= step.Maximum.value))\n                    score++;\n                break;\n            }\n            case StepType.QUESTION: {\n                const step: StepQuestion =\n                    await dataSourceSteps.getStep(attempts.worldID, attempts.sequenceID, stepID) as StepQuestion;\n\n                // skip if no correct answer, otherwise increment if it's correct!\n                const correctAnswer: string = step.CorrectAnswer.value;\n                if (!correctAnswer)\n                    continue;\n\n                correctAnswerSize++;\n                if (stepAction?.stepInput === correctAnswer)\n                    score++;\n                break;\n            }\n        }\n    }\n\n    return {score, correctAnswerSize};\n}\n\nexport function isAttemptCompleted(sequence: Sequence, attempt: AttemptLogs): boolean {\n    const stepIDs: bigint[] = sequence.Steps.value.map((step: StepTypeID) => step.ID); // get stepIDs in order\n    const sequenceLastStepID: bigint = stepIDs[stepIDs.length - 1];\n    const attemptStepActions: StepAction[] = attempt.getStepActions();\n    const currentTime: bigint = BigInt(Date.now()) / BigInt(1000);\n    const sequenceExpiration: bigint = sequence.Expiration.value;\n\n    // Normal attempt\n    if (attemptStepActions.length)\n        return attemptStepActions.some((stepAction: StepAction) => (\n            stepAction.stepID === sequenceLastStepID &&\n            (!sequenceExpiration || currentTime < stepAction.timeStart + sequenceExpiration)\n        ));\n\n    // check if there's a signature in the attempt step input\n    return Boolean(attempt.getStepInputs().length && attempt.getStepInputs()[0].length &&\n        (!sequenceExpiration || currentTime < attempt.getTimestamps()[0] + sequenceExpiration));\n}\n\nexport function getMostRecentAttempt(attempts: AttemptLogs[]): AttemptLogs | null{\n    if (!attempts.length)\n        return null;\n\n    let mostRecentAttempt: AttemptLogs = attempts[0];\n    for (let i: number = 1; i < attempts.length; i++) {\n        const timestamps: bigint[] = attempts[i].getTimestamps();\n        const mostRecentAttemptTimestamps: bigint[] = mostRecentAttempt.getTimestamps();\n        if ((timestamps.length ? timestamps[0] : BigInt(0)) < mostRecentAttemptTimestamps[0])\n            continue;\n\n       mostRecentAttempt = attempts[i];\n    }\n\n    return mostRecentAttempt;\n}\n\nexport async function isEvaluationSequenceCompleted(attempts: AttemptLogs[]): Promise<boolean> {\n\n    const mostRecentAttempt: AttemptLogs | null = getMostRecentAttempt(attempts);\n    if (!mostRecentAttempt)\n        return false;\n\n    const sequencesDataSource: DataSourceSequences = AppConsole.getInstance().dataSourceSequences;\n    const mostRecentAttemptSequence: Sequence =\n        await sequencesDataSource.getSequence(mostRecentAttempt.worldID, mostRecentAttempt.sequenceID);\n\n    if (!mostRecentAttemptSequence.ObjectiveGrade.value)\n        return false;\n\n    return await calculateGrade(mostRecentAttempt) >= mostRecentAttemptSequence.ObjectiveGrade.value;\n}\n\nexport async function calculateGrade(mostRecentAttempt: AttemptLogs): Promise<number> {\n    const {score, correctAnswerSize}: CorrectAnswerScore = await calculateAttemptAnswersScore(mostRecentAttempt);\n    return correctAnswerSize ? score/correctAnswerSize : 1;\n}\n", "import {World} from \"@backend/Types/World\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {\n    isAttemptCompleted,\n    isEvaluationSequenceCompleted\n} from \"@root/Frontend/Console/utils/UtilsAttempts\";\nimport {Group} from \"@backend/Types/Group\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Role} from \"@backend/Types/Role\";\n\nexport interface GroupPeerScore {\n    score: number;\n    scoreCritical: number;\n}\n\ninterface SequenceMetrics {\n    sequenceCount: number;\n    criticalSequenceCount: number;\n    completedSequenceCountByPeerIDs: Map<bigint, number>;\n    completedCriticalSequenceCountByPeerIDs: Map<bigint, number>;\n}\n\n// TODO (@ebalthazard) : Change file name UtilsGroup.ts -> GroupScore.ts\nexport class GroupScore {\n    private static readonly MAX_SEQUENCE_FETCHING: number = 5;\n\n    private readonly app: AppConsole = AppConsole.getInstance();\n    private readonly groupID: bigint = BigInt(0);\n    private peerScores: Map<bigint, GroupPeerScore> | null = null;\n    private qualifiedScores: Map<bigint, number> | null = null;\n    private criticalScores: Map<bigint, number> | null = null;\n    private unqualifiedScores: Map<bigint, number> | null = null;\n\n    private isFetching: boolean = false;\n\n    constructor(groupID: bigint) {\n        this.groupID = groupID;\n    }\n\n    public cancel(): void {\n        this.isFetching = false;\n    }\n\n    public get(): Map<bigint, GroupPeerScore> | null  {\n        return this.peerScores;\n    }\n\n    public async fetch(onProgress: (progress: number) => void): Promise<boolean> {\n        if (this.peerScores)\n            return true;\n\n        this.isFetching = true;\n\n        const group: Group = await this.app.dataSourceGroups.getGroup(this.groupID);\n        const activePeerIDs: Set<bigint> | null = await this.getActivePeerIDs(group);\n        if (!activePeerIDs || !this.isFetching)\n            return false;\n\n        // we need to pass everything by reference to make sure that every fetchingService share the same data\n        const sequenceMetrics: SequenceMetrics = {\n            sequenceCount: 0,\n            criticalSequenceCount: 0,\n            completedSequenceCountByPeerIDs: new Map(),\n            completedCriticalSequenceCountByPeerIDs: new Map(),\n        };\n\n        for (let i: number = 0; i < group.Worlds.length; ++i) {\n            const worldID: bigint = group.Worlds[i];\n            const world: World = await this.app.dataSourceWorlds.getWorld(worldID);\n\n            if (!this.isFetching)\n                return false;\n\n            // create services that will fetch sequences\n            const fetchingService: Promise<void>[] = [];\n            const sequenceQueue: bigint[] = [...world.Sequences.value];\n            const servicesCount: number = Math.min(GroupScore.MAX_SEQUENCE_FETCHING, sequenceQueue.length);\n            for (let i: number = 0; i < servicesCount; ++i)\n                fetchingService.push(this.fetchSequenceQueue(worldID, sequenceQueue, sequenceMetrics, activePeerIDs));\n\n            await Promise.all(fetchingService);\n            onProgress(group.Worlds.length ? (i + 1) / group.Worlds.length : 1);\n        }\n\n        const groupPeerScores: Map<bigint, GroupPeerScore> = new Map<bigint, GroupPeerScore>();\n        for (const peerID of activePeerIDs) {\n            const score: number = sequenceMetrics.sequenceCount ?\n                (sequenceMetrics.completedSequenceCountByPeerIDs.get(peerID) ?? 0) /\n                sequenceMetrics.sequenceCount * 100 : 0;\n            const scoreCritical: number = sequenceMetrics.criticalSequenceCount ?\n                (sequenceMetrics.completedCriticalSequenceCountByPeerIDs.get(peerID) ?? 0) /\n                sequenceMetrics.criticalSequenceCount * 100 : 0;\n            groupPeerScores.set(peerID, { score, scoreCritical });\n        }\n\n        this.peerScores = groupPeerScores;\n        this.isFetching = false;\n        return true;\n    }\n\n    private async fetchSequenceQueue(worldID: bigint,\n                                     sequenceQueue: bigint[],\n                                     metrics: SequenceMetrics,\n                                     activePeerIDs: Set<bigint>) {\n        while (sequenceQueue.length > 0) {\n            const sequenceID: bigint | undefined = sequenceQueue.pop();\n            if (sequenceID)\n                await this.fetchSequence(worldID, sequenceID, metrics, activePeerIDs);\n        }\n    }\n\n    private async fetchSequence(worldID: bigint,\n                                sequenceID: bigint,\n                                sequenceCounts: SequenceMetrics,\n                                activePeerIDs: Set<bigint>) {\n        const sequence: Sequence = await this.app.dataSourceSequences.getSequence(worldID, sequenceID);\n        if (sequence.GroupsExclusive.value.length && !sequence.GroupsExclusive.value.includes(this.groupID))\n            return;\n\n        // we only keep the latest published sequence. If the sequence does not have a child sequence, it is the\n        // draft. If the child of the current sequence have a child sequence, it is not the latest published\n        // sequence\n        if (!sequence.ChildSequence.value)\n            return;\n\n        const childSequence: Sequence =\n            await this.app.dataSourceSequences.getSequence(worldID, sequence.ChildSequence.value);\n\n        if (childSequence.ChildSequence.value)\n            return;\n\n        sequenceCounts.sequenceCount++;\n        if (sequence.Critical.value)\n            sequenceCounts.criticalSequenceCount++;\n\n        const attemptsByPeerID: Map<bigint, AttemptLogs[]> = new Map<bigint, AttemptLogs[]>();\n\n        const attempts: AttemptLogs[] =\n            await this.app.dataSourceAttemptLogs.getAttemptsUpToLastMajor(worldID, sequenceID, false);\n\n        for (const attempt of attempts) {\n            // if not one of our peer or not completed, skip attempt!\n            const sequenceAttempt: Sequence = \n                await this.app.dataSourceSequences.getSequence(worldID, attempt.sequenceID);\n            if (!activePeerIDs.has(attempt.peerID) || !isAttemptCompleted(sequenceAttempt, attempt))\n                continue;\n\n            const peerAttempts: AttemptLogs[] = attemptsByPeerID.get(attempt.peerID) ?? [];\n            peerAttempts.push(attempt);\n            attemptsByPeerID.set(attempt.peerID, peerAttempts);\n        }\n\n        for (const peerID of activePeerIDs) {\n            const peerAttempts: AttemptLogs[] = attemptsByPeerID.get(peerID) ?? [];\n\n            // some objective visualizations are still 0, which creates an invalid UI\n            const objectiveVisualization: number = sequence.ObjectiveVisualizations.value ?\n                Number(sequence.ObjectiveVisualizations.value) : 1;\n            const isSequenceCompleted: boolean = sequence.ObjectiveGrade.value ?\n                await isEvaluationSequenceCompleted(peerAttempts) :\n                peerAttempts.length >= objectiveVisualization;\n\n            let completedCount: number = sequenceCounts.completedSequenceCountByPeerIDs.get(peerID) ?? 0;\n            if (isSequenceCompleted)\n                completedCount++;\n            sequenceCounts.completedSequenceCountByPeerIDs.set(peerID, completedCount);\n\n            completedCount = sequenceCounts.completedCriticalSequenceCountByPeerIDs.get(peerID) ?? 0;\n            if (isSequenceCompleted && sequence.Critical.value)\n                completedCount++;\n            sequenceCounts.completedCriticalSequenceCountByPeerIDs.set(peerID, completedCount);\n        }\n    }\n\n    public getQualifiedScores(): Map<bigint, number> {\n        if (!this.peerScores)\n            return new Map();\n\n        if (this.qualifiedScores)\n            return this.qualifiedScores;\n\n        this.qualifiedScores = new Map();\n        for (const [peerID, groupPeerScore] of this.peerScores)\n            if (groupPeerScore.score >= 100)\n                this.qualifiedScores.set(peerID, groupPeerScore.score);\n\n        return this.qualifiedScores;\n    }\n\n    public getCriticalScores(): Map<bigint, number> {\n        if (!this.peerScores)\n            return new Map();\n\n        if (this.criticalScores)\n            return this.criticalScores;\n\n        this.criticalScores = new Map();\n        for (const [peerID, groupPeerScore] of this.peerScores)\n            if (groupPeerScore.scoreCritical >= 100 && groupPeerScore.score < 100)\n                this.criticalScores.set(peerID, groupPeerScore.scoreCritical);\n\n        return this.criticalScores;\n    }\n\n    public getUnqualifiedScores(): Map<bigint, number> {\n        if (!this.peerScores)\n            return new Map();\n\n        if (this.unqualifiedScores)\n            return this.unqualifiedScores;\n\n        this.unqualifiedScores = new Map();\n        for (const [peerID, groupPeerScore] of this.peerScores)\n            if (groupPeerScore.score < 100 && groupPeerScore.scoreCritical < 100)\n                this.unqualifiedScores.set(peerID, groupPeerScore.score);\n\n        return this.unqualifiedScores;\n    }\n\n    private async getActivePeerIDs(group: Group): Promise<Set<bigint> | null> {\n        const activePeerIDs: Set<bigint> = new Set();\n\n        if (group.Peers[this.app.currentPeerID.toString()] === Role.VIEWER)\n            return new Set([this.app.currentPeerID, group.Owner]);\n\n        for (const peerIDStr of Object.keys(group.Peers)) {\n            const peerID: bigint = UtilsShared.safelyConvertStringToBigInt(peerIDStr);\n            const peer: Peer = await this.app.dataSourcePeers.getPeer(peerID);\n\n            if (!this.isFetching)\n                return null;\n\n            if (!peer.archivedDate)\n                activePeerIDs.add(peerID);\n        }\n\n        return activePeerIDs;\n    }\n}\n", "import React from \"react\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport i18next from \"i18next\";\nimport {CreatePeerForm} from \"./CreatePeerForm\";\nimport {DataSourcePeers, PeersSortObj} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {PeerItem} from \"./PeerItem\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {RouteComponentProps} from \"react-router\";\nimport {withRouter} from \"react-router-dom\";\nimport {ListView} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {ConvertToDeepSightActiveDirectoryDialog}\n    from \"@root/Frontend/Console/Views/Management/PeersList/ConvertToDeepSightActiveDirectoryDialog\";\nimport {Box, styled} from \"@mui/material\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {SearchBar} from \"@root/react-components/src/inputs/SearchBar\";\nimport isEqual from \"lodash/isEqual\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport getTimestampOfRandomID = UtilsShared.getTimestampOfRandomID;\nimport { Checkbox } from \"@root/react-components/src/inputs/Checkbox\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {CreatePeersLoadingDialog} from \"@root/Frontend/Console/Views/Management/PeersList/CreatePeersLoadingDialog\";\nimport {Role} from \"@backend/Types/Role\";\nimport {RegionAWS} from \"@backend/public/studio/WebAssembly.mjs\";\nimport {Users} from \"@root/react-components/src/icons/Users\";\n\nconst HeaderContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"flex-end\",\n    marginBottom: \"6px\",\n    flexWrap: \"wrap\",\n    [theme.breakpoints.down('lg')]: {\n        gap: \"10px\",\n    },\n    [theme.breakpoints.down('md')]: {\n        justifyContent: \"flex-end\",\n    }\n});\n\nconst CountContainer = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    marginRight: \"3px\",\n    gap: \"3px\",\n    \"& svg\": {\n        height: \"16px\",\n        width: \"16px\"\n    }\n});\n\nconst LeftHeader = styled(Box)({\n    display: \"flex\",\n    alignItems: \"flex-end\",\n    minWidth: \"200px\",\n    gap: \"3px\"\n});\n\nconst RightHeader = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    alignItems: \"center\",\n    flexWrap: \"wrap\",\n    minWidth: \"50%\",\n    gap: \"5px\",\n    paddingRight: \"6px\",\n    [theme.breakpoints.down('md')]: {\n        paddingRight: \"0px\",\n        gap: \"6px\"\n    }\n});\n\nconst SearchBarWrapper = styled(Box)({\n    width: \"min(400px, 40%)\",\n    [theme.breakpoints.down('md')]: {\n        width: \"210px\"\n    }\n});\n\ninterface PeersListState {\n    peerIDs: bigint[] | null;\n    domainsManaged: string[] | null;\n    selectedDomain: string;\n    openCreatePeerDialog: boolean;\n    searchStr: string;\n    isDeepsightActiveDirectoryDialogOpen: boolean;\n    showArchived: boolean;\n    peersToCreate: Map<string, string> | null; // username -> full name\n    region: RegionAWS | null;\n    groupsToAdd: Map<bigint, Role> | null; // ID -> role\n}\n\nexport class PeersList extends RouterView<RouteComponentProps> {\n    private readonly appConsole: AppConsole = AppConsole.getInstance();\n    private readonly dataSourcePeers: DataSourcePeers = this.appConsole.dataSourcePeers;\n\n    state: PeersListState = {\n        peerIDs: null,\n        domainsManaged: null,\n        selectedDomain: \"\",\n        openCreatePeerDialog: false,\n        searchStr: \"\",\n        isDeepsightActiveDirectoryDialogOpen: false,\n        showArchived: false,\n        peersToCreate: null,\n        region: null,\n        groupsToAdd: null\n    };\n\n    public static getPeerLevel(){\n        return {\n            link: Management.BASE_PATH + \"/Peers\",\n            async getName(): Promise<string> {\n                return i18next.t(\"Users\");\n            }\n        };\n    }\n\n    getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [ PeersList.getPeerLevel() ];\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const currentPeer: Peer = await this.dataSourcePeers.getPeer(this.appConsole.currentPeerID);\n\n        // if no domain managed\n        if (!currentPeer.domainsManaged || !currentPeer.domainsManaged.length)\n            return this.props.history.push(Management.BASE_PATH);\n\n        const peerIDs: bigint[] = await this.getFilteredPeerList(currentPeer.domainsManaged[0]);\n\n        this.setState({\n            domainsManaged: currentPeer.domainsManaged,\n            selectedDomain: currentPeer.domainsManaged[0],\n            peerIDs\n        });\n    }\n\n    async componentDidUpdate(prevProps: Readonly<object>, prevState: Readonly<PeersListState>) {\n        if (prevState.searchStr === this.state.searchStr && prevState.showArchived === this.state.showArchived)\n            return;\n\n        const peerIDs: bigint[] = await this.getFilteredPeerList();\n\n        if (!isEqual(peerIDs, this.state.peerIDs))\n            this.setState({ peerIDs });\n    }\n\n    private async getFilteredPeerList(domain?: string) {\n        const peersSort: PeersSortObj = new PeersSortObj();\n        peersSort.domain = domain ?? this.state.selectedDomain;\n\n        let allPeerIDs: bigint[] = await this.dataSourcePeers.getPeers(peersSort);\n\n        if (!this.state.showArchived)\n            allPeerIDs = await this.filterArchivedPeerIDs(allPeerIDs);\n\n        const filteredPeers: bigint[] = await this.filterPeersByStr(allPeerIDs, this.state.searchStr);\n\n        return filteredPeers.sort((peerA: bigint, peerB: bigint) =>\n            Number(getTimestampOfRandomID(peerB) - getTimestampOfRandomID(peerA))\n        );\n    }\n\n    private async onPeersCreated() {\n        const peerIDs: bigint[] = await this.getFilteredPeerList();\n        this.setState({ peersToCreate: null, groupsToAdd: null, peerIDs });\n    }\n\n    private async onArchivePeer(peerID: bigint): Promise<boolean> {\n        if (!await this.dataSourcePeers.archivePeer(peerID))\n            return false;\n\n        const peerIDs: bigint[] = await this.getFilteredPeerList();\n\n        this.setState({ peerIDs });\n        return true;\n    }\n\n    private async updatePeerPassword(peerID: bigint, newPassword: string): Promise<boolean> {\n        if (!await this.dataSourcePeers.updatePassword(peerID, newPassword)) {\n            Prompt.alert(`${i18next.t(\"A server error occurred while attempting to update the peer's password\")}.`);\n            return false;\n        }\n\n        return true;\n    }\n\n    private async filterPeersByStr(peerIDs: bigint[], searchStr: string): Promise<bigint[]> {\n        const filteredPeers: bigint[] = [];\n        for (const peerID of peerIDs) {\n            const peer: Peer = await this.dataSourcePeers.getPeer(peerID);\n            if (peer.fullName.toLowerCase().includes(searchStr.toLowerCase()))\n                filteredPeers.push(peerID);\n        }\n        return filteredPeers;\n    }\n\n    private async changeSelectDomain(index: number) {\n        const peerIDs: bigint[] = await this.getFilteredPeerList(this.state.domainsManaged?.[index] ?? \"\");\n\n        this.setState((prevState: PeersListState) => ({\n            peerIDs,\n            selectedDomain: prevState.domainsManaged?.[index]\n        }));\n    }\n\n    private async restorePeer(peerID: bigint): Promise<void> {\n        const peer: Peer = await this.dataSourcePeers.getPeer(peerID);\n        const confirmMessage: string = `${i18next.t(\"Are you sure you want to restore the user\")}: ${peer.fullName} ?`;\n        const hasConfirmed: boolean = await Prompt.confirm(confirmMessage, i18next.t(\"Restore\"), false);\n        if (!hasConfirmed)\n            return;\n\n        if (!await this.dataSourcePeers.restorePeer(peerID))\n            return;\n   \n        this.dataSourcePeers.invalidatePeer(peerID);\n        const peerIDs: bigint[] = await this.getFilteredPeerList();\n        this.setState({ peerIDs });\n    }\n\n    private async filterArchivedPeerIDs(allPeerIDs: bigint[]): Promise<bigint[]> {\n        if (!allPeerIDs.length)\n            return [];\n\n        const allPeers: Peer[] = await Promise.all(allPeerIDs.map((peerID: bigint): Promise<Peer> => \n            this.dataSourcePeers.getPeer(peerID)));\n        return allPeerIDs.filter((_: bigint, index: number): boolean => !allPeers[index].archivedDate);\n    }\n\n    renderPeersList() {\n        return <ListView\n            emptyListMessage={i18next.t(\"No users to display\")}\n            itemCount={this.state.peerIDs?.length ?? 0}\n            itemHeight={100}>\n            {(index: number) => {\n                const peerID: bigint = this.state.peerIDs?.[index] ?? BigInt(0);\n                return <div style={{paddingBottom: 20, boxSizing: \"border-box\"}}>\n                    <PeerItem\n                        peerID={peerID}\n                        selectedDomain={this.state.selectedDomain}\n                        onArchive={async () => await this.onArchivePeer(peerID)}\n                        onNewPassword={async (newPassword) =>\n                            await this.updatePeerPassword(peerID, newPassword)\n                        }\n                        onRestore={() => this.restorePeer(peerID)}\n                    />\n                </div>\n            }}\n        </ListView>;\n    }\n\n    render() {\n        if (!this.state.domainsManaged || this.state.peerIDs === null)\n            return <CenteredLoading/>\n\n        return <>\n            <HeaderContainer>\n                <LeftHeader>\n                    {this.state.domainsManaged.length > 1 &&\n                        <Box style={{display: \"flex\", flexDirection: \"column\", alignItems: \"start\"}}>\n                            <Box style={{font: primaryFontMedium}}><>{i18next.t(\"Domain\")}</></Box>\n                            <Select\n                                options={this.state.domainsManaged.map(domain => \"@\" + domain)}\n                                default={this.state.domainsManaged.indexOf(this.state.selectedDomain)}\n                                onChange={async (index: number) => await this.changeSelectDomain(index)}\n                                style={{ minWidth: \"100px\" }}\n                            />\n                        </Box>\n\n                    }\n                    {Boolean(this.state.selectedDomain) && !this.state.selectedDomain.endsWith(\"deepsight.ca\") &&\n                        <span>\n                            <Button\n                                size=\"small\"\n                                color=\"warning\"\n                                id=\"convert-aad\"\n                                style={{width: \"205px\"}}\n                                onClick={() => this.setState({ isDeepsightActiveDirectoryDialogOpen: true })}\n                            >\n                                {`${i18next.t(\"Transfer to DeepSight Entra\")}`}\n                            </Button>\n                        </span>\n                    }\n                </LeftHeader>\n                <RightHeader>\n                    <CountContainer>\n                        <Box style={{ font: primaryFontMedium }}>{this.state.peerIDs.length}</Box>\n                        <Users/>\n                    </CountContainer>\n                    <Checkbox\n                        label={i18next.t(\"Archived\")}\n                        labelOnTheRight\n                        checked={this.state.showArchived}\n                        onClick={(checked: boolean) => this.setState({ showArchived: !checked })}\n                    />\n                    <SearchBarWrapper>\n                        <SearchBar\n                            onChange={(searchStr: string) => this.setState({ searchStr })}\n                            placeholder={i18next.t(\"Search\")}\n                        />\n                    </SearchBarWrapper>\n                    <span>\n                        <Button\n                            id=\"create-peer\"\n                            size=\"small\"\n                            onClick={() => this.setState({ openCreatePeerDialog: true })}\n                        >\n                            {`${i18next.t(\"Create Users\")}`}\n                        </Button>\n                    </span>\n                </RightHeader>\n            </HeaderContainer>\n            <Box id=\"peer-list-container\" style={{height: \"calc(100% - 48px)\"}}>\n                {this.renderPeersList()}\n            </Box>\n            {this.state.openCreatePeerDialog &&\n                <CreatePeerForm\n                    domain={this.state.selectedDomain}\n                    onSubmit={(peersToCreate: Map<string, string>, groupsToAdd: Map<bigint, Role>, region: RegionAWS) =>\n                        this.setState({ openCreatePeerDialog: false, peersToCreate, groupsToAdd, region })}\n                    onClose={() => this.setState({ openCreatePeerDialog: false })}\n                />\n            }\n            {this.state.peersToCreate !== null && this.state.groupsToAdd !== null && this.state.region !== null &&\n                <CreatePeersLoadingDialog\n                    domain={this.state.selectedDomain}\n                    peersToCreate={this.state.peersToCreate}\n                    region={this.state.region}\n                    groupsToAdd={this.state.groupsToAdd}\n                    onPeersCreated={() => this.onPeersCreated()}\n                />\n            }\n            {this.state.isDeepsightActiveDirectoryDialogOpen &&\n                <ConvertToDeepSightActiveDirectoryDialog\n                    domain={this.state.selectedDomain}\n                    onClose={() => this.setState({ isDeepsightActiveDirectoryDialogOpen: false })}\n                />\n            }\n        </>;\n    }\n}\n\nexport const PeersListWithRouter = withRouter(PeersList);\n", "import React from \"react\";\nimport i18next from \"i18next\";\nimport styled from \"styled-components\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {RadioButton} from \"@root/Frontend/Console/components/RadioButton\";\nimport {Role} from \"@backend/Types/Role\";\nimport {dark, grey, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Box} from \"@mui/material\";\nimport {AddPeerInput} from \"@root/Frontend/Console/Views/Management/PeersList/AddPeerInput\";\nimport {ImportPeers} from \"@root/Frontend/Console/Views/Management/PeersList/ImportPeers\";\nimport {sortMapByValueAlpha} from \"@utils/utils\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {RegionAWS} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {SelectRegion} from \"@root/react-components/src/inputs/SelectRegion\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\n\n// most special symbols are not supported, and \\uFFFD which is used to replace incoming unknown characters\n// source: https://www.fileformat.info/info/unicode/char/fffd/index.htm\n\nconst Form = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: 6,\n    textAlign: \"left\",\n    flex: 1,\n    minHeight: 0,\n    overflow: \"hidden\"\n});\n\nconst SectionTitle = styled(Box)({\n    font: primaryFontLarge,\n    marginTop: 10,\n    display: \"flex\",\n    alignItems: \"center\"\n});\n\nconst ListContainer = styled(Box)<{is_import?: number}>((props) => ({\n    display: \"flex\",\n    flexDirection: props.is_import ? \"row\" : \"column\",\n    flexWrap: props.is_import ? \"wrap\" : \"nowrap\",\n    backgroundColor: dark,\n    borderRadius: \"12px\",\n    padding: \"12px\",\n    gap: \"12px\",\n    overflowY: \"auto\",\n    \n    \"::-webkit-scrollbar-thumb\": {\n        backgroundColor: grey,\n        border: \"4px solid transparent\",\n        borderRadius: 8,\n        backgroundClip: \"padding-box\"\n    },\n    \n    \"::-webkit-scrollbar\": {\n        width: 16\n    }\n}));\n\nconst ListContainerPeers = styled(ListContainer)<{is_import: number}>((props) => ({\n    justifyContent: props.is_import ? \"flex-start\" : \"center\",\n    overflowY: props.is_import ? \"auto\" : \"hidden\",\n    flex: 3,\n    minHeight: props.is_import ? 76 : 48,\n}));\n\nconst ListContainerGroup = styled(ListContainer)({\n    flex: 2\n});\n\nconst ListItem = styled(Box)({\n    display: \"flex\",\n    alignContent: \"center\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    backgroundColor: white,\n    borderRadius: 12,\n    padding: 15\n});\n\nconst ListItemTitle = styled(Box)({\n    flex: 1,\n    font: primaryFontLarge,\n    textOverflow: \"ellipsis\",\n    overflow: \"hidden\",\n});\n\nconst GroupRadioButtons = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignContent: \"center\",\n    gap: \"10px\"\n});\n\nconst NoGroupToDisplay = styled(Box)({\n    font: primaryFontLarge,\n    color: white,\n    display: \"flex\",\n    flex: 1,\n    justifyContent: \"center\",\n    alignItems: \"center\"\n});\n\nconst ActionButtons = styled(Box)({\n    display: \"flex\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    paddingTop: 15,\n    gap: 6\n});\n\ninterface CreatePeerFormProps {\n    domain: string;\n    onSubmit: (peersFullNameByUsername: Map<string, string>, selectedGroupIDs: Map<bigint, Role>, region: RegionAWS) => void;\n    onClose: () => void;\n}\n\ninterface CreatePeerFormState {\n    username: string;\n    fullName: string;\n    peersFullNameByUsername: Map<string, string>; // username -> full name\n    region: RegionAWS | null;\n    availableBuckets: Map<string, RegionAWS>;\n    groupsNameByID: Map<bigint, string>;          // ID -> name\n    selectedGroupIDs: Map<bigint, Role>;\n}\n\nexport class CreatePeerForm extends React.Component {\n    private readonly app: AppConsole = AppConsole.getInstance();\n\n    props: CreatePeerFormProps;\n    state: CreatePeerFormState = {\n        username: \"\",\n        fullName: \"\",\n        peersFullNameByUsername: new Map(),\n        region: null,\n        availableBuckets: new Map(),\n        groupsNameByID: new Map<bigint, string>(),\n        selectedGroupIDs: new Map<bigint, Role>()\n    };\n\n    async componentDidMount() {\n        const currentPeer: Peer = await this.app.dataSourcePeers.getPeer(AppConsole.getInstance().currentPeerID);\n        const groupsNameByID: Map<bigint, string> = new Map<bigint, string>();\n\n        await Promise.all(Object.entries(currentPeer.group ?? {}).map(async ([groupID, role]: [string, Role]) => {\n            if(role === Role.EDITOR)\n                groupsNameByID.set(BigInt(groupID), (await this.app.dataSourceGroups.getGroup(BigInt(groupID))).Name);\n        }));\n\n        const availableBuckets: Map<string, RegionAWS> = await this.app.dataSourceStorage.getAvailableBucketsRegions();\n\n        this.setState({ groupsNameByID: sortMapByValueAlpha(groupsNameByID), availableBuckets });\n    }\n\n    private async generateUniqueUsername(baseUsername: string): Promise<string> {\n        const peersFullNameByUsername: Map<string, string> = this.state.peersFullNameByUsername;\n\n        const baseExists: boolean =\n            peersFullNameByUsername.has(baseUsername) ||\n            Boolean(await this.app.dataSourcePeers.isUsernameExists(`${baseUsername}@${this.props.domain}`));\n\n        if (!baseExists)\n            return baseUsername;\n\n        let increment: number = 2;\n        let username: string = `${baseUsername}${increment}`;\n\n        while (peersFullNameByUsername.has(username) ||\n            await this.app.dataSourcePeers.isUsernameExists(`${username}@${this.props.domain}`)) {\n            increment++;\n            username = `${baseUsername}${increment}`;\n        }\n\n        return username;\n    }\n\n    private async addPeer(fullName: string, baseUsername: string): Promise<void> {\n        if (!UtilsShared.isValidFullName(fullName)) {\n            Prompt.alert(i18next.t(\"Name contains invalid characters\"));\n            return;\n        }\n\n        const username: string = await this.generateUniqueUsername(baseUsername);\n        const peersFullNameByUsername = new Map(this.state.peersFullNameByUsername);\n\n        peersFullNameByUsername.set(username.toLowerCase(), fullName);\n\n        this.setState({ peersFullNameByUsername });\n    }\n\n    private async importPeers(newImportedPeers: Map<string, string>): Promise<void> {\n        const peersFullNameByUsername: Map<string, string> = new Map(this.state.peersFullNameByUsername);\n        for (const [username, fullName] of newImportedPeers.entries()) {\n            const finalUsername: string = await this.generateUniqueUsername(username);\n            peersFullNameByUsername.set(finalUsername, fullName);\n        }\n\n        this.setState({ peersFullNameByUsername });\n    }\n\n    private removePeer(username: string): void {\n        const peersFullNameByUsername = new Map(this.state.peersFullNameByUsername);\n        peersFullNameByUsername.delete(username);\n        this.setState({ peersFullNameByUsername });\n    }\n\n    private onCheckGroup(checked: boolean, groupID: bigint, role: Role) {\n        const selectedGroupIDs: Map<bigint, Role> = new Map(this.state.selectedGroupIDs);\n\n        if (checked)\n            selectedGroupIDs.delete(groupID);\n        else\n            selectedGroupIDs.set(groupID, role);\n\n        this.setState({ selectedGroupIDs });\n    }\n\n    render(): JSX.Element {\n        return (\n            <Dialog size={DialogSize.sm} onClose={this.props.onClose} innerStyle={{ width: \"500px\" }}>\n                <Box style={{font: primaryFontXLarge}}> {`${i18next.t(\"Create New Users\")}`} </Box>\n                <Form className=\"create-peer-dialog\">\n                    <SectionTitle>{`${i18next.t(\"Add Users\")}`}</SectionTitle>\n                    <AddPeerInput\n                        domain={this.props.domain}\n                        onAddPeer={(fullName: string, username: string) => this.addPeer(fullName, username)}\n                    />\n                    <SectionTitle> {`${i18next.t(\"Users\")}`} </SectionTitle>\n                    <ListContainerPeers is_import={this.state.peersFullNameByUsername.size}>\n                        <ImportPeers\n                            domain={this.props.domain}\n                            peersFullNameByUsername={this.state.peersFullNameByUsername}\n                            isValidFullName={(name: string) => UtilsShared.isValidFullName(name)}\n                            onImportPeers={(peersFullNameByUsername: Map<string, string>) =>\n                                this.importPeers(peersFullNameByUsername)}\n                            onRemovePeer={(username: string) => this.removePeer(username)}\n                        />\n                    </ListContainerPeers>\n                    <SectionTitle>\n                        {`${i18next.t(\"Region\")}`}\n                        <Tooltip title={i18next.t(SelectRegion.EXPLANATION)} size=\"small\" placement=\"right\">\n                            <InfoIcon><Info/></InfoIcon>\n                        </Tooltip>\n                    </SectionTitle>\n                    <SelectRegion\n                        region={this.state.region}\n                        disabled={false}\n                        options={this.state.availableBuckets}\n                        onChange={(bucket: string) =>\n                            this.setState({region: this.state.availableBuckets.get(bucket) ?? null})}\n                    />\n                    <SectionTitle> {`${i18next.t(\"Add to Groups\")}`} </SectionTitle>\n                    <ListContainerGroup>\n                        {this.state.groupsNameByID.size === 0 ?\n                            <NoGroupToDisplay> {`${i18next.t(\"No group to display\")}`} </NoGroupToDisplay>\n                            :\n                            Array.from(this.state.groupsNameByID.entries()).map(([groupID, groupName]) =>\n                                <ListItem key={groupID.toString()}>\n                                    <ListItemTitle>{groupName}</ListItemTitle>\n                                    <GroupRadioButtons>\n                                        <RadioButton\n                                            groupKey={groupID.toString()}\n                                            label={i18next.t(\"Viewer\")}\n                                            onClick={(checked: boolean) =>\n                                                this.onCheckGroup(checked, groupID, Role.VIEWER)\n                                            }\n                                            checked={this.state.selectedGroupIDs.get(groupID) === Role.VIEWER}\n                                        />\n                                        <RadioButton\n                                            groupKey={groupID.toString()}\n                                            label={i18next.t(\"Editor\")}\n                                            onClick={(checked: boolean) =>\n                                                this.onCheckGroup(checked, groupID, Role.EDITOR)\n                                            }\n                                            checked={this.state.selectedGroupIDs.get(groupID) === Role.EDITOR}\n                                        />\n                                    </GroupRadioButtons>\n                                </ListItem>\n                            )\n                        }\n                    </ListContainerGroup>\n                </Form>\n                <ActionButtons>\n                    <Button\n                        variant=\"outlined\"\n                        onClick={() => this.props.onClose()}\n                    >\n                        {`${i18next.t(\"Close\")}`}\n                    </Button>\n                    <Button\n                        id=\"create-peer-dialog-confirm-button\"\n                        disabled={!this.state.peersFullNameByUsername.size || !this.state.region}\n                        onClick={() =>\n                            this.props.onSubmit(this.state.peersFullNameByUsername, this.state.selectedGroupIDs,\n                                                this.state.region as RegionAWS)}\n                    >\n                        {`${i18next.t(\"Create\")}`}\n                    </Button>\n                </ActionButtons>\n            </Dialog>\n        );\n    }\n}\n", "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {\n    darkenWhite,\n    lighterDark,\n    lightWhite,\n    primary,\n    white\n} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst RadioButtonContainer = styled.div<{checked: boolean}>`\n    display: flex;\n    align-items: flex-start;\n    position: relative;\n    cursor: pointer;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n\n    /* Hide the browser's default radio button */\n    & input {\n        position: absolute;\n        opacity: 0;\n        cursor: pointer;\n    }\n    \n    /* Create a custom radio button */\n    & .checkmark {\n        height: 16px;\n        width: 16px;\n        background-color: ${lightWhite};\n        border: solid 1px ${lighterDark};\n        border-radius: 50%;\n    }\n    \n    /* On mouse-over, add a grey background color */\n    &:hover input ~ .checkmark {\n        background-color: ${darkenWhite};\n    }\n    \n    /* When the radio button is checked, add a blue background */\n    & input:checked ~ .checkmark {\n        border: solid 1px ${primary};\n        background-color: ${white};\n    }\n    \n    /* Create the indicator (the dot/circle - hidden when not checked) */\n    & .checkmark:after {\n        content: \"\";\n        position: absolute;\n        display: none;\n    }\n    \n    /* Show the indicator (dot/circle) when checked */\n    & input:checked ~ .checkmark:after {\n        display: block;\n    }\n    \n    /* Style the indicator (dot/circle) */\n    & .checkmark:after {\n        position: relative;\n        top: calc(50% - 4px);\n        left: calc(50% - 4px);\n        width: 8px;\n        height: 8px;\n        border-radius: 50%;\n        background: ${primary};\n    }   \n`\n\ninterface RadioButtonProps {\n    label: string\n    groupKey: string\n    onClick?: (checked: boolean) => void\n    checked: boolean\n}\n\n// TODO: react-component\nexport class RadioButton extends React.Component {\n    props: RadioButtonProps\n\n    render() {\n        return (\n            <RadioButtonContainer\n                onClick={() => this.props.onClick?.(this.props.checked)} checked={this.props.checked}>\n                <div>\n                    <input type=\"radio\" name={this.props.groupKey} readOnly checked={this.props.checked} />\n                    <div className=\"checkmark\" />\n                </div>\n                <div style={{ paddingLeft: \"4px\", font: primaryFontLarge}}>\n                    {this.props.label}\n                </div>\n            </RadioButtonContainer>\n        );\n    }\n}\n\n", "import {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport React, {useState} from \"react\";\nimport styled from \"styled-components\";\nimport {Box} from \"@mui/material\";\n\nconst EmailInput = styled(Box)({\n    display: \"flex\",\n    alignItems: \"flex-end\"\n});\n\ninterface AddPeerInputProps {\n    domain: string;\n    onAddPeer: (fullName: string, username: string) => void;\n}\n\nexport function AddPeerInput(props: AddPeerInputProps): JSX.Element {\n    const [fullName, setFullName] = useState<string>(\"\");\n    const [username, setUsername] = useState<string>(\"\");\n\n    function handleAddPeer(fullName: string, username: string) {\n        props.onAddPeer(fullName, username);\n        setFullName(\"\");\n        setUsername(\"\");\n    }\n\n    return (\n        <>\n            <InputText\n                id=\"create-peer-dialog-input-fullname\"\n                dark\n                label={i18next.t(\"Full Name\")}\n                value={fullName}\n                onChange={(value: string) => setFullName(value)}\n            />\n            <EmailInput>\n                <InputText\n                    id=\"create-peer-dialog-input-email\"\n                    dark\n                    label={i18next.t(\"Email\")}\n                    value={username}\n                    onChange={(value: string) => setUsername(value)}\n                />\n                @{props.domain}\n                <Button\n                    id={\"create-peer-dialog-add-peer-button\"}\n                    disabled={!fullName.trim().length || !username.trim().length}\n                    size=\"small\"\n                    onClick={() => handleAddPeer(fullName, username)}\n                    sx={{minHeight: \"16px\", marginLeft: \"5px\"}}\n                >\n                    {`${i18next.t(\"Add\")}`}\n                </Button>\n            </EmailInput>\n        </>\n    );\n}\n", "import {Button} from \"@root/react-components/src/buttons/Button\";\nimport i18next from \"i18next\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Info} from \"@root/react-components/src/icons/Info\";\nimport {Box, Chip, Input} from \"@mui/material\";\nimport React, {useRef} from \"react\";\nimport styled from \"styled-components\";\nimport {dark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport isValidEmail = UtilsShared.isValidEmail;\nimport isValidFullName = UtilsShared.isValidFullName;\n\nconst ImportButton = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    gap: 5\n});\n\nconst InfoIcon = styled(Box)({\n    height: \"11px\",\n    width: \"11px\",\n    backgroundColor: dark,\n    borderRadius: \"50%\",\n    color: white,\n    outline: `2px solid ${white}`,\n    padding: 3,\n    margin: 3,\n    cursor: \"pointer\",\n    \"& svg\": {\n        height: \"100%\",\n        width: \"100%\"\n    }\n});\n\nenum EXPECTED_HEADER {\n    FULLNAME = \"fullname\",\n    EMAIL = \"email\"\n}\n\nconst SEPARATORS: string[] = [\",\", \";\"];\n\ninterface ImportPeersButtonProps {\n    domain: string;\n    peersFullNameByUsername: Map<string, string>;\n    isValidFullName: (fullName: string) => boolean;\n    onImportPeers: (usernames: Map<string, string>) => void;\n    onRemovePeer: (username: string) => void;\n}\n\nexport function ImportPeers(props: ImportPeersButtonProps): JSX.Element {\n    const inputCsvRef: React.RefObject<HTMLInputElement> = useRef<HTMLInputElement>(null);\n\n    function prepareUsername(fullName: string): string {\n        return fullName.normalize(\"NFD\").split(\"\").filter((char: string): boolean => {\n            const charCode: number = char.charCodeAt(0);\n\n            // this code range is for all combining marks, including accents\n            // source: https://en.wikipedia.org/wiki/Combining_Diacritical_Marks\n            return charCode < 0x0300 || charCode > 0x036F;\n        }).join(\"\").trim().toLowerCase().replace(/ /gu, \".\");\n    }\n\n    async function verifyCSV(fileCSV: File): Promise<string> {\n        const fileExtension: string = fileCSV.name.split(\".\").pop() ?? \"\";\n        if (fileExtension.toLowerCase() !== \"csv\")\n            return i18next.t(\"Unsupported file, only CSV files are supported\");\n\n        const textCSV: string = await fileCSV.text();\n        if (!textCSV)\n            return i18next.t(\"Received empty CSV file\");\n\n        return \"\";\n    }\n\n    function parsePeersRow(rows: string[], separator: string): Map<string, string> {\n\n        const peersFullNameByUsername: Map<string, string> = new Map();\n\n        for (let index: number = 1; index < rows.length; ++index) {\n            const [rawFullName, rawEmail] = rows[index].split(separator);\n            const fullName: string = rawFullName.trim();\n            const email: string | undefined = rawEmail?.trim();\n\n            const errorCSV: string = getPeerRowError(fullName, email, peersFullNameByUsername, index);\n            if (errorCSV.length) {\n                Prompt.alert(errorCSV);\n                return new Map<string, string>();\n            }\n\n            const userName: string = email ? email.split(\"@\")[0] : prepareUsername(fullName);\n            peersFullNameByUsername.set(userName.toLowerCase(), fullName);\n        }\n\n        return peersFullNameByUsername;\n    }\n\n    function getPeerRowError(fullName: string, email: string | undefined, processedEmail: Map<string, string>, index: number): string {\n\n        const atRow: string = `${i18next.t(\"at row\")} ${index + 1}`;\n\n        if (!isValidFullName(fullName))\n            return `${i18next.t(\"Encountered invalid full name\")} \"${fullName}\" ${atRow}`;\n\n        if (!email)\n            return \"\";\n\n        if (!isValidEmail(email))\n            return `${i18next.t(\"Encountered invalid email\")} \"${email}\" ${atRow}`;\n\n        const [username, domain] = email.toLowerCase().split(\"@\");\n\n        if (domain !== props.domain)\n            return `${i18next.t(\"Encountered invalid domain\")} \"${email}\" ${atRow}`;\n\n        return processedEmail.has(username) ?\n                `${i18next.t(\"Encountered duplicate email\")} \"${email}\" ${atRow}` : \"\";\n    }\n\n    function getErrorHeaders(headers: string[]): string {\n        if (!headers.length)\n            return \"Missing FullName column\";\n\n        const fullNameHeader: string = headers[0].trim();\n        if (fullNameHeader.toLowerCase() !== EXPECTED_HEADER.FULLNAME)\n            return \"Missing FullName column\";\n\n        const emailHeader: string | undefined = headers[1]?.trim();\n        if (!emailHeader)\n            return \"\";\n\n        return emailHeader.toLowerCase() !== EXPECTED_HEADER.EMAIL || headers.length > 2 ?\n            \"Only the FullName and Email columns are accepted\" : \"\";\n    }\n\n    function parseCSV(textCSV: string): Map<string, string> {\n        const csvRows: string[] = textCSV.split(\"\\n\");\n        const headerRow: string = csvRows[0];\n        const separator: string =\n            SEPARATORS.find((separator: string): boolean => headerRow.includes(separator)) ?? SEPARATORS[0];\n\n        const errorCSVHeader: string = getErrorHeaders(headerRow.split(separator));\n        if (errorCSVHeader.length) {\n            Prompt.alert(i18next.t(errorCSVHeader));\n            return new Map<string, string>();\n        }\n\n        return parsePeersRow(csvRows, separator);\n    }\n\n    async function handleImportFileCSV(changeEvent: React.ChangeEvent<HTMLInputElement>): Promise<void> {\n        if (!changeEvent.target.files?.length)\n            return;\n\n        // get the imported file and reset the input for the next file\n        const file: File | null = changeEvent.target.files[0];\n        if (inputCsvRef.current)\n            inputCsvRef.current.value = \"\";\n\n        const fileErrorMessage: string = file ? await verifyCSV(file) : i18next.t(\"Missing CSV file\");\n        if (fileErrorMessage) {\n            Prompt.alert(fileErrorMessage);\n            return;\n        }\n\n        const textCSV: string = await file.text();\n        const peersFullNameByUsername: Map<string, string> = parseCSV(textCSV);\n        if (!peersFullNameByUsername.size)\n            return;\n\n        props.onImportPeers(peersFullNameByUsername);\n    }\n\n    if (props.peersFullNameByUsername.size)\n        return (\n            <>\n                {[...props.peersFullNameByUsername.keys()].map((username: string) =>\n                    <Chip\n                        key={username.toString()}\n                        label={`${username}@${props.domain}`}\n                        color=\"darkenWhite\"\n                        onDelete={() => props.onRemovePeer(username)}\n                    />\n                )}\n            </>\n        );\n\n    return (\n        <ImportButton>\n            <Button size=\"medium\" onClick={() => inputCsvRef.current?.click()}>\n                {`${i18next.t(\"Import CSV\")}`}\n            </Button>\n            <Tooltip\n                placement=\"right-start\"\n                title={`${i18next.t(\"Only UTF-8 encoded CSV files are accepted. The first column must be 'FullName'. An optional 'Email' column can be added as the second column.\")}`}\n            >\n                <InfoIcon> <Info /> </InfoIcon>\n            </Tooltip>\n            <Input\n                id=\"input-csv-file\"\n                type=\"file\"\n                inputRef={inputCsvRef}\n                sx={{display: \"none\"}}\n                onChange={(event: React.ChangeEvent<HTMLInputElement>): Promise<void> => handleImportFileCSV(event)}\n            />\n        </ImportButton>\n    );\n}\n", "import React from \"react\";\nimport {red} from \"@root/react-components/src/values/colors/colors\";\nimport {secondaryFontMedium, secondaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {User} from \"@root/react-components/src/icons/User\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {SmartComponent} from \"@utils//SmartComponent\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {CheckMark} from \"@root/react-components/src/icons/CheckMark\";\nimport {ListViewItem} from \"@root/Frontend/Console/components/ListView/ListViewItem\";\nimport {Warning} from \"@root/react-components/src/icons/Warning\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {NavLink} from \"react-router-dom\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {Box, styled} from \"@mui/material\";\nimport {Diamond} from \"@root/react-components/src/icons/Diamond\";\nimport {Clock} from \"@root/react-components/src/icons/Clock\";\nimport {timestampToString} from \"@utils/utils\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Plan} from \"@backend/Types/Plan\";\nimport EditPeerEmailDialog from \"@root/Frontend/Console/Views/Management/PeersList/EditPeerEmailDialog\";\nimport {AssignPasswordDialog} from \"@root/Frontend/Console/Views/Management/PeersList/AssignPasswordDialog\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\nimport {ResponsiveActions} from \"@root/Frontend/Console/components/ResponsiveActions\";\nimport {Rename} from \"@root/react-components/src/icons/Rename\";\nimport EditPeerFullNameDialog from \"@root/Frontend/Console/Views/Management/PeersList/EditPeerFullName\";\n\nenum DialogType {\n    EDIT_EMAIL,\n    ASSIGN_PASSWORD,\n    EDIT_FULL_NAME,\n    CLOSED\n}\n\nconst Wrapper = styled(Box)({\n    color: red,\n    cursor: \"pointer\",\n    \"& svg\": {\n        height: \"25px\"\n    }\n});\n\nconst PeerAttributes = styled(Box)({\n    display: \"flex\",\n    gap: \"8px\",\n    \"@media (max-width: 768px)\": {\n        \"& > div:not(:first-child)\": {\n            display: \"none\"\n        }\n    }\n});\n\nconst PeerAttribute = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: \"2px\"\n});\n\nconst PeerEmail = styled(Box)((props: { is_same: number }) => ({\n    display: \"flex\",\n    flexDirection: \"column\",\n    font: props.is_same ? secondaryFontMedium : secondaryFontSmall\n}));\n\nconst WrapperRenameIcon = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"12px\",\n    height: \"12px\",\n    paddingBottom: \"4px\",\n    flexShrink: 0,\n    \"& svg\": {\n        width: \"100%\",\n        height: \"100%\"\n    }\n});\n\nconst HoverableValue = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: \"8px\",\n    \"&:hover\": {\n        \"& > div:last-child\": {\n            display: \"flex\"\n        }\n    },\n    \"& > div:last-child\": {\n        display: \"none\",\n    }\n});\n\ninterface PeerItemProps {\n    peerID: bigint;\n    selectedDomain: string;\n    onArchive(): void;\n    onNewPassword(value: string): void;\n    onRestore(): void;\n}\n\ninterface PeerItemState {\n    fullName: string;\n    username: string;\n    email: string;\n    verified: boolean;\n    planTitle: string;\n    lastLoginTimestamp: bigint;\n    loading: boolean;\n    isPasswordAssigned: boolean;\n    isArchived: boolean;\n    dialogType: DialogType;\n}\n\nexport class PeerItem extends SmartComponent<PeerItemProps> {\n    state: PeerItemState = {\n        fullName: \"\",\n        username: \"\",\n        email: \"\",\n        verified: false,\n        planTitle: \"\",\n        lastLoginTimestamp: BigInt(0),\n        loading: false,\n        isPasswordAssigned: false,\n        isArchived: false,\n        dialogType: DialogType.CLOSED\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        await this.loadPeer();\n    }\n\n    async loadPeer() {\n        const dataSourcePeers = AppConsole.getInstance().dataSourcePeers;\n        const peer: Peer = await dataSourcePeers.getPeer(this.props.peerID);\n        const plan: Plan = await AppConsole.getInstance().dataSourcePlans.getPlan(peer.plan);\n\n        let lastLoginTimestamp: bigint = BigInt(0);\n        for (const login of Object.values(peer.logins ?? {}).flat())\n            if (login > lastLoginTimestamp)\n                lastLoginTimestamp = login;\n\n        this.setState({\n            username: peer.username,\n            fullName: peer.fullName,\n            email: peer.email,\n            verified: peer.verified === \"1\",\n            planTitle: plan.title,\n            lastLoginTimestamp,\n            isPasswordAssigned: peer.passwordAssigned,\n            isArchived: Boolean(peer.archivedDate)\n        });\n    }\n\n    private async setPeerEmail(email: string) {\n        if (!email)\n            return;\n\n        if (await AppConsole.getInstance().dataSourcePeers.setEmail(this.props.peerID, email))\n            this.setState({ email, dialogType: DialogType.CLOSED });\n    }\n\n    async onPasswordAssigned(newPassword: string){\n        this.setState({loading: true, dialogType: DialogType.CLOSED });\n\n        this.props.onNewPassword(newPassword);\n\n        AppConsole.getInstance().dataSourcePeers.invalidatePeer(this.props.peerID);\n        await this.loadPeer();\n\n        this.setState({ loading: false, isPasswordAssigned: true });\n    }\n\n    private async renamePeer(newFullName: string): Promise<boolean> {\n        if (!newFullName || !await AppConsole.getInstance().dataSourcePeers.renamePeer(this.props.peerID, newFullName))\n            return false;\n\n        this.setState({ fullName: newFullName });\n        return true;\n    }\n\n    private renderDialog(dialogType: DialogType): JSX.Element {\n        switch (dialogType) {\n            case DialogType.EDIT_EMAIL:\n                return (\n                    <EditPeerEmailDialog\n                        email={this.state.email}\n                        setPeerEmail={async (email: string) => await this.setPeerEmail(email)}\n                        onClose={()=> this.setState({dialogType: DialogType.CLOSED})}\n                    />\n                );\n            case DialogType.ASSIGN_PASSWORD:\n                return (\n                    <AssignPasswordDialog\n                        onConfirm={(password: string) => this.onPasswordAssigned(password)}\n                        onClose={()=> this.setState({dialogType: DialogType.CLOSED})}\n                        fullName={this.state.fullName}\n                    />\n                );\n            case DialogType.EDIT_FULL_NAME:\n                return (\n                    <EditPeerFullNameDialog\n                        fullName={this.state.fullName}\n                        renamePeer={async (newFullName) => this.renamePeer(newFullName)}\n                        onClose={()=> this.setState({dialogType: DialogType.CLOSED})}\n                    />\n                );\n            default:\n                return <></>;\n        }\n    }\n\n    private async onArchive(e: React.MouseEvent<HTMLButtonElement>): Promise<void> {\n        e.stopPropagation();\n        e.preventDefault();\n\n        const confirmMessage: string = `${i18next.t(\"Are you sure you want to archive\")} ${this.state.fullName} ?`;\n        const hasConfirmed: boolean = await Prompt.confirm(confirmMessage, i18next.t(\"Archive\"), true);\n        if (!hasConfirmed)\n            return;\n\n        this.setState({loading: true});\n        this.props.onArchive();\n    }\n\n    render(){\n        return (\n            <>\n                <NavLink id={this.props.peerID.toString()}\n                         className={\"peer-item\"}\n                         to={`${Management.BASE_PATH}/Peers/${this.props.peerID}`}\n                         style={{textDecoration: \"none\"}}>\n                    <ListViewItem\n                        isDisabled={this.state.isArchived}\n                        loading={!this.state.fullName || !this.state.username || this.state.loading}\n                        title={\n                            <HoverableValue>\n                                {this.state.fullName}\n                                <WrapperRenameIcon onClick={(e) => {\n                                    e.stopPropagation();\n                                    e.preventDefault();\n                                    this.setState({dialogType: DialogType.EDIT_FULL_NAME})}}>\n                                    <Rename />\n                                </WrapperRenameIcon>\n                            </HoverableValue>\n                        }\n                        subtitle={<PeerAttributes>\n                            <PeerAttribute>\n                                <User/>\n                                <PeerEmail is_same={Number(this.state.username === this.state.email)}>\n                                    {this.state.username}\n                                    {this.state.username !== this.state.email &&\n                                        <Box className=\"peer-email\"> ({this.state.email}) </Box>\n                                    }\n                                </PeerEmail>\n                                {this.state.verified &&\n                                    <Tooltip title={i18next.t(\"Account verified\")} placement={\"top\"}>\n                                        <Box> <CheckMark size={12}/> </Box>\n                                    </Tooltip>\n                                }\n                            </PeerAttribute>\n                            <Tooltip placement={\"top\"} title={i18next.t(\"Plan\")}>\n                                <PeerAttribute>\n                                    <Diamond/>{i18next.t(this.state.planTitle)}\n                                </PeerAttribute>\n                            </Tooltip>\n                            <Tooltip placement={\"top\"} title={i18next.t(\"Last sign-in\")}>\n                                <PeerAttribute>\n                                    <Clock/>{this.state.lastLoginTimestamp > BigInt(0) ?\n                                        timestampToString(this.state.lastLoginTimestamp, false) :\n                                        i18next.t(\"Never been connected\")}\n                                </PeerAttribute>\n                            </Tooltip>\n                        </PeerAttributes>}\n                        thumbnail={`https://secure.gravatar.com/avatar/${\n                            UtilsShared.md5(this.state.username?.toString())}?s=80&d=identicon`}\n                        roundThumbnail={true}\n                    >\n                        <ResponsiveActions breakpoint={900} title={`${i18next.t(\"Options for\")} ${this.state.fullName}`}>\n                        <div style={{display: \"flex\", alignItems: \"center\", gap: \"8px\"}}>\n                            {this.state.isArchived ?\n                                <Button\n                                    color=\"warning\"\n                                    onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n                                        e.preventDefault();\n                                        this.props.onRestore();\n                                    }}\n                                >\n                                    <> {i18next.t(\"Restore\")} </>\n                                </Button>\n                            :\n                                <>\n                                {!this.state.isPasswordAssigned &&\n                                    <Tooltip\n                                        title={`${i18next.t(\"This user needs to have a password assigned\")}.`}\n                                        placement={\"top\"}\n                                    >\n                                        <Wrapper\n                                            onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n                                                e.preventDefault();\n                                                this.setState({ dialogType: DialogType.ASSIGN_PASSWORD });\n                                            }}\n                                        >\n                                            <Warning/>\n                                        </Wrapper>\n                                    </Tooltip>\n                                }\n                                {Boolean(this.props.selectedDomain) &&\n                                    <Button\n                                        id={`edit-peer-email-btn-${this.props.peerID}`}\n                                        variant=\"outlined\"\n                                        onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n                                            e.preventDefault();\n                                            this.setState({ dialogType: DialogType.EDIT_EMAIL });\n                                        }}\n                                    >\n                                        <> {i18next.t(\"Edit email\")} </>\n                                    </Button>\n                                }\n                                {(this.props.peerID !== AppConsole.getInstance().currentPeerID) &&\n                                    <>\n                                        <Button\n                                            disabled={this.state.username.endsWith(\"@deepsight.ca\")}\n                                            variant=\"outlined\"\n                                            onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n                                                e.preventDefault();\n                                                this.setState({ dialogType: DialogType.ASSIGN_PASSWORD });\n                                            }}\n                                        >\n                                            <> {i18next.t(\"Assign Password\")} </>\n                                        </Button>\n                                        <Button\n                                            id={`archive-peer-btn-${this.props.peerID}`}\n                                            color=\"error\"\n                                            onClick={(e: React.MouseEvent<HTMLButtonElement>) =>\n                                                this.onArchive(e)\n                                            }\n                                        >\n                                            <> {i18next.t(\"Archive\")} </>\n                                        </Button>\n                                    </>\n                                }\n                                </>\n                            }\n                        </div>\n                        </ResponsiveActions>\n                    </ListViewItem>\n                </NavLink>\n                {this.state.dialogType !== DialogType.CLOSED && this.renderDialog(this.state.dialogType)}\n            </>\n        )\n    }\n}\n", "import React from \"react\";\n\nexport const User = ({width = \"24\", height = \"24\"}: { width?: string, height?: string }) =>\n    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"user\" width={width} height={height}\n         className=\"svg-inline--fa fa-user fa-w-14\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n        <path fill=\"currentColor\"\n              d=\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"/>\n    </svg>;", "import React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function CheckMark(props: { size: number }): JSX.Element {\n    return (\n        <SvgIcon xmlns=\"http://www.w3.org/2000/svg\"\n                 viewBox=\"0 0 30.59 30.74\"\n                 style={{ height: props.size, width: props.size }}>\n            <polygon points=\"15.26 30.74 30.59 4.35 22.68 0 10.73 20.89 3.25 16.62 0 22.03 15.26 30.74\" fill=\"#4ca5d7\"/>\n            <polygon points=\"0 22.03 3.08 23.79 6.34 18.38 3.25 16.62 0 22.03\" fill=\"#9ed7f5\"/>\n            <polygon points=\"10.26 20.62 13.48 22.47 25.61 1.61 22.68 0 10.73 20.89 10.26 20.62\" fill=\"#9ed7f5\"/>\n        </SvgIcon>\n    );\n}\n", "import React, {ReactElement} from \"react\";\nimport styled from \"styled-components\";\nimport {dark, darkenWhite, lightWhite} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontXLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\n\nconst Wrapper = styled.div<{ roundThumbnail?: boolean }>`\n    background-color: ${lightWhite};\n    border: 2px solid ${darkenWhite};\n    border-radius: 12px;\n    height: 100%;\n    width: 100%;\n    padding: 12px;\n    box-sizing: border-box;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    font: ${secondaryFontMedium};\n    overflow: hidden;\n    color: ${dark};\n    & > div:first-child{\n        display: flex;\n        max-width: calc(100% - 50px);\n        & > div {\n            width: 100%;\n            overflow: hidden;\n            text-overflow: ellipsis;\n            text-align: left;\n        }\n        & img {\n            height: 50px;\n            width: 50px;\n            border-radius: ${props => props.roundThumbnail ? \"50%\" : \"6px\"};\n            object-fit: cover;\n            margin-right: 12px;\n        }\n    }\n    &.loading{\n        & > div {\n            width: 100%;\n        } \n    }\n`;\n\nconst InformationContent = styled.div<{ is_disabled?: boolean }>`\n    opacity: ${props => props.is_disabled ? 0.5 : 1};\n`;\n\nconst TwoRowText = styled.div`\n    & > div {\n        width: 100%;\n        overflow: hidden;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n    }\n    & > div:first-child {\n        font: ${primaryFontXLarge};\n    }\n    & > div:last-child {\n        font: ${secondaryFontMedium};\n        display: flex;\n        align-items: center;\n        & svg{\n            margin-right: 3px;\n            height: 12px;\n            width: 12px;\n        }\n    }\n`;\n\nexport class ListViewItem extends React.Component {\n    props: {\n        loading: boolean,\n        thumbnail?: string,\n        roundThumbnail?: boolean,\n        title: string | ReactElement,\n        subtitle?: string | ReactElement,\n        id?: string,\n        className?: string,\n        classNameTitle?: string;\n        children?: string | ReactElement\n        isDisabled?: boolean\n    }\n\n    render(){\n        if(this.props.loading)\n            return <Wrapper className={\"loading\"}><CenteredLoading /></Wrapper>;\n\n        return (\n            <Wrapper \n                id={this.props.id}\n                className={this.props.className}\n                roundThumbnail={this.props.roundThumbnail}\n            >\n                <InformationContent is_disabled={this.props.isDisabled ?? false}>\n                    {this.props.thumbnail && <img src={this.props.thumbnail} alt={\"\"} crossOrigin=\"anonymous\"/>}\n                    <TwoRowText>\n                        <Tooltip title={this.props.title} enterDelay={2000} enterNextDelay={1000}>\n                            <div id={this.props.id} className={this.props.classNameTitle}>{this.props.title}</div>\n                        </Tooltip>\n                        <div className=\"list-item-subtitle\">{this.props.subtitle}</div>\n                    </TwoRowText>\n                </InformationContent>\n                {this.props.children}\n            </Wrapper>\n        )\n    }\n}\n", "import React from \"react\";\nimport {ReactElement} from \"react\";\n\nexport function Diamond(): ReactElement {\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <g clipPath=\"url(#clip0_2617_284)\">\n                <path\n                    d=\"M2.00487 14.1047C0.88512 12.9463 0.880238 11.1104 1.99381 9.94605L9.43144 2.16962C10.5772 0.971633 12.4775 0.930021 13.6746 2.0767L21.7502 9.81187C22.9788 10.9886 22.984 12.9505 21.7617 14.1338L13.7274 21.9118C12.5363 23.0648 10.6359 23.0333 9.48375 21.8414L2.00487 14.1047Z\"\n                    fill=\"#23292F\"/>\n            </g>\n            <defs>\n                <clipPath id=\"clip0_2617_284\">\n                    <rect width=\"24\" height=\"24\" fill=\"white\"/>\n                </clipPath>\n            </defs>\n        </svg>\n    );\n}\n", "import React from \"react\";\nimport {ReactElement} from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function Clock(): ReactElement {\n    return (\n        <SvgIcon viewBox=\"0 0 24 24\"  xmlns=\"http://www.w3.org/2000/svg\">\n                <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"white\" stroke=\"black\" strokeWidth=\"2\"/>\n                <path d=\"M12 4.36365V13.0909\" stroke=\"black\" strokeWidth=\"2\" strokeLinecap=\"round\"/>\n                <path d=\"M15.6193 15.1805L12 13.0909\" stroke=\"black\" strokeWidth=\"2\" strokeLinecap=\"round\"/>\n        </SvgIcon>\n    );\n}\n", "import React, {useState} from \"react\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, styled} from \"@mui/material\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport i18next from \"i18next\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {primaryFontMedium, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {red} from \"@root/react-components/src/values/colors/colors\";\n\nconst ButtonsContainer = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"end\",\n    gap: \"8px\"\n});\n\ninterface EditPeerEmailDialogProps {\n    email: string;\n    setPeerEmail: (newEmail: string) => Promise<void>;\n    onClose: () => void;\n}\n\nexport default function EditPeerEmailDialog(props: EditPeerEmailDialogProps) {\n    const [localPart, domainPart] = props.email.split('@');\n    const [newLocalPart, setNewLocalPart] = useState<string>(localPart);\n    const [newDomainPart, setNewDomainPart] = useState<string>(domainPart);\n    const [invalidEmail, setInvalidEmail] = useState<boolean>(false);\n\n    function onChangeEmail(email: string) {\n        setNewLocalPart(email);\n        setInvalidEmail(!UtilsShared.isValidEmail(`${email}@${newDomainPart}`));\n    }\n\n    function onChangeDomain(domain: string) {\n        setNewDomainPart(domain);\n        setInvalidEmail(!UtilsShared.isValidEmail(`${newLocalPart}@${domain}`));\n    }\n\n    async function handleSetPeerEmail(email: string) {\n        const isValid: boolean = UtilsShared.isValidEmail(email);\n        setInvalidEmail(!isValid);\n\n        if (isValid)\n            await props.setPeerEmail(email);\n    }\n\n    return (\n        <Dialog size={DialogSize.xs} onEnter={async() => await handleSetPeerEmail(`${newLocalPart}@${newDomainPart}`)}>\n            <Box style={{ font: primaryFontXLarge }}>{i18next.t(\"Edit email\")}</Box>\n            <Box style={{ padding: \"8px 0px 16px 0px\" }}>\n                <Box style={{ display: \"flex\", alignItems: \"end\" }}>\n                    <InputText\n                        id=\"edit-peer-local-email-input\"\n                        label={i18next.t(\"New email\")}\n                        type={\"text\"}\n                        placeholder={\"Email\"}\n                        value={newLocalPart}\n                        dark\n                        onChange={(email: string) => onChangeEmail(email)}\n                    />\n                    <Box style={{ font: primaryFontMedium, padding: \"0px 2px\" }}>@</Box>\n                    <InputText\n                        id=\"edit-peer-domain-email-input\"\n                        type={\"text\"}\n                        placeholder={\"Domain\"}\n                        value={newDomainPart}\n                        dark\n                        onChange={(email: string) => onChangeDomain(email)}\n                    />\n                </Box>\n                <Box style={{ paddingTop: \"4px\", color: red }}>\n                    {invalidEmail && i18next.t(\"This email is invalid\")}\n                </Box>\n            </Box>\n            <ButtonsContainer>\n                <Button variant=\"outlined\" onClick={() => props.onClose()}>{i18next.t(\"Cancel\")}</Button>\n                <Button\n                    id=\"confirm-edit-peer-email-btn\"\n                    disabled={invalidEmail}\n                    onClick={async () => await handleSetPeerEmail(`${newLocalPart}@${newDomainPart}`)}\n                >\n                    {i18next.t(\"Confirm\")}\n                </Button>\n            </ButtonsContainer>\n        </Dialog>\n    );\n}", "import {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {PasswordInput} from \"@root/Frontend/Console/components/PasswordInput\";\nimport React, {useState} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {red} from \"@root/react-components/src/values/colors/colors\";\nimport {generatePassword} from \"@utils/utils\";\n\nconst ContentContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    gap: \"5px\",\n    paddingTop: \"8px\"\n});\n\nconst ButtonsContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"end\",\n    gap: \"15px\",\n    paddingTop: \"10px\"\n});\n\nconst ErrorContainer = styled(Box)({\n    color: red,\n    height: \"24px\"\n});\n\ninterface AssignPasswordDialogProps {\n    fullName: string;\n    onConfirm: (newPassword: string) => void;\n    onClose: () => void;\n}\n\nexport function AssignPasswordDialog(props: AssignPasswordDialogProps){\n    const [password, setPassword] = useState<string>(generatePassword);\n    const [error, setError] = useState<string>(\"\");\n\n    return (\n        <Dialog size={DialogSize.xs} closeOnClickOutside>\n            <Box style={{font: primaryFontXLarge}}>\n                {i18next.t(\"Assign password for\") + \" \" + props.fullName}\n            </Box>\n            <ContentContainer>\n                <Box style={{textAlign: \"left\", width: \"100%\"}}>\n                    <PasswordInput\n                        dark\n                        password={password}\n                        onChange={(newPassword: string) => setPassword(newPassword)}\n                        handleError={(error: string)=> setError(error)}\n                        showInfoIcon showRegenerateIcon showPassword\n                    />\n                    <ErrorContainer>\n                        {error && <>{i18next.t(error)}</>}\n                    </ErrorContainer>\n                </Box>\n            </ContentContainer>\n            <ButtonsContainer>\n                <Button variant=\"outlined\" onClick={() => props.onClose()}> {i18next.t(\"Cancel\")} </Button>\n                <Button\n                    onClick={() => props.onConfirm(password)}\n                    disabled={Boolean(error)}\n                >\n                    {i18next.t(\"Assign\")}\n                </Button>\n            </ButtonsContainer>\n        </Dialog>\n    );\n}\n", "import React, {ReactElement, useState} from \"react\";\nimport {ThreeDotsV} from \"@root/react-components/src/icons/ThreeDotsV\";\nimport i18next from \"i18next\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Box, styled, useMediaQuery, useTheme} from \"@mui/material\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\n\nconst Wrapper = styled(Box)({\n    height: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"flex-end\",\n    \"& svg\": {\n        height: \"24px\",\n        width: \"24px\",\n    },\n    \"& > div:last-child\":{\n        width: \"100%\",\n        display: \"flex\",\n        alignItems: \"center\",\n        justifyContent: \"center\"\n    }\n});\n\nconst ColumnDisplay = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    gap: \"8px\",\n    marginTop: \"15px\"\n});\n\n\ninterface ResponsiveActionsProps {\n    children: ReactElement | ReactElement[];\n    breakpoint?: number;\n    title: string;\n}\n\nexport function ResponsiveActions(props: ResponsiveActionsProps){\n    const [openResponsivePopup, setOpenResponsivePopup] = useState<boolean>(false);\n    const widerThanBreakpoint: boolean = useMediaQuery(useTheme().breakpoints.up(props.breakpoint ?? \"lg\"));\n\n    if (widerThanBreakpoint)\n        return (\n            <Wrapper\n                onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n                    e.stopPropagation();\n                    e.preventDefault();\n                }}\n            >\n                {props.children}\n            </Wrapper>\n        );\n\n    return (\n        <Box\n            onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n                e.stopPropagation();\n                e.preventDefault();\n            }}\n        >\n            <Wrapper onClick={() => setOpenResponsivePopup(true)}>\n                <ThreeDotsV/>\n            </Wrapper>\n            {openResponsivePopup &&\n                <Dialog zIndex={900} size={DialogSize.xs}>\n                    <Box style={{font: primaryFontXLarge}}>{props.title}</Box>\n                    <ColumnDisplay>\n                        {props.children}\n                        <Button onClick={() => setOpenResponsivePopup(false)} style={{marginTop: \"10px\"}}>\n                            {i18next.t(\"Done\")}\n                        </Button>\n                    </ColumnDisplay>\n                </Dialog>\n            }\n        </Box>\n    );\n}\n", "import React, {useState} from \"react\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, styled} from \"@mui/material\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\n\nconst ButtonsContainer = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"end\",\n    gap: \"8px\"\n});\n\ninterface EditPeerFullNameDialogProps {\n    fullName: string;\n    renamePeer: (newFullName: string) => Promise<boolean>;\n    onClose: () => void;\n}\n\nexport default function EditPeerFullNameDialog(props: EditPeerFullNameDialogProps) {\n    const [newFullName, setNewFullName] = useState<string>(props.fullName);\n    const [validFullName, setValidFullName] = useState<boolean>(true);\n\n    function onChangeName(fullName: string) {\n        setNewFullName(fullName);\n        setValidFullName(UtilsShared.isValidFullName(fullName));\n    };\n\n    async function onConfirmPeerFullName() {\n        if (validFullName && await props.renamePeer(newFullName))\n            props.onClose();\n    }\n\n    return (\n        <Dialog size={DialogSize.xs} onEnter={onConfirmPeerFullName} closeOnClickOutside onClose={props.onClose}>\n            <Box style={{ font: primaryFontXLarge }}>{i18next.t(\"Rename peer\")}</Box>\n            <Box style={{ padding: \"8px 0px\" }}>\n                <InputText\n                    id=\"edit-peer-full-name-input\"\n                    label={i18next.t(\"Name\")}\n                    placeholder={i18next.t(\"Name\")}\n                    value={newFullName}\n                    dark\n                    onChange={(fullName: string) => onChangeName(fullName)}\n                />\n            </Box>\n            <Box style={{ paddingTop: \"4px\", color: \"red\", height: \"20px\" }}>\n                {validFullName ? \"\" : i18next.t(\"Invalid name\")}\n            </Box>\n            <ButtonsContainer>\n                <Button variant=\"outlined\" onClick={props.onClose}>{i18next.t(\"Cancel\")}</Button>\n                <Button\n                    id=\"confirm-edit-peer-full-name-btn\"\n                    disabled={!validFullName}\n                    onClick={() => onConfirmPeerFullName()}\n                >\n                    {i18next.t(\"Confirm\")}\n                </Button>\n            </ButtonsContainer>\n        </Dialog>\n    );\n}\n", "import React from \"react\";\nimport i18next from \"i18next\";\nimport {secondaryFontLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Switch} from \"@root/react-components/src/inputs/Switch\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, styled} from \"@mui/material\";\nimport { Button } from \"@root/react-components/src/buttons/Button\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\n\nconst Section = styled(Box)({\n    maxWidth: \"400px\",\n    margin: \"auto\"\n});\n\nconst SwitchContainer = styled(Box)({\n    display: \"flex\",\n    font: secondaryFontMedium,\n    alignItems: \"center\",\n    width: \"100%\",\n    padding: \"8px 0px\",\n    \"& > div\": {\n        maxWidth: \"calc(100% - 60px)\",\n        marginLeft: \"6px\"\n    }\n});\n\nconst ErrorWrapper = styled(Box)({\n    padding: \"10px 0px\",\n    color: \"red\",\n    textAlign: \"center\"\n});\n\nconst ButtonsContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"end\",\n    gap: \"15px\"\n});\n\ninterface ConvertToDeepSightActiveDirectoryProps {\n    domain: string;\n    onClose: () => void;\n}\n\ninterface ConvertToDeepSightActiveDirectoryState {\n    domainField: string;\n    irreversibleCheckBox: boolean;\n    usernameChangeCheckBox: boolean;\n    factoryResetCheckBox: boolean;\n    passwordRequiredCheckBox: boolean;\n    error: string;\n}\n\nexport class ConvertToDeepSightActiveDirectoryDialog extends React.Component {\n    props: ConvertToDeepSightActiveDirectoryProps;\n    state: ConvertToDeepSightActiveDirectoryState = {\n        error: \"\",\n        domainField: \"\",\n        irreversibleCheckBox: false,\n        usernameChangeCheckBox: false,\n        factoryResetCheckBox: false,\n        passwordRequiredCheckBox: false\n    };\n\n    private readonly deepSightDomain = UtilsShared.constructDeepSightSubDomain(this.props.domain,\n        UtilsShared.isProductionEndpoint(window.location.hostname));\n\n    private validateForm(): boolean {\n        if (!this.state.irreversibleCheckBox || !this.state.usernameChangeCheckBox ||\n            !this.state.factoryResetCheckBox || !this.state.passwordRequiredCheckBox) {\n            this.setState({error: `${i18next.t(\"Please understand and check every points\")}.`})\n            return false;\n        }\n\n        if (this.state.domainField.trim() !== this.props.domain.trim()) {\n            this.setState({error: `${i18next.t(\"Please enter your domain in the text box\")}.`})\n            return false;\n        }\n\n        if (this.state.error)\n            this.setState({error: \"\"});\n        return true;\n    }\n\n    private getExplanationText(): string {\n        return (\n            `${i18next.t(\"You are about to convert the users of\")} ${this.props.domain} \n             ${i18next.t(\"to use DeepSight's Azure Active Directory, this will allow all users to use the Sign in With \" +\n                \"Microsoft feature in the DeepSight Studio and to use the iris recognition sign in on Hololens, \" +\n                \"however, this conversion will change every users' username, no content will be lost with this \" +\n                \"conversion\")}.`\n        );\n    }\n\n    private async onConfirm() {\n        if (!this.validateForm())\n            return;\n\n        if (!await AppConsole.getInstance().dataSourcePeers.setDomainManagedByDeepSight(this.props.domain)) {\n            Prompt.alert(`${i18next.t(\"A server error occurred while attempting to transfer the domain \" +\n                \"to DeepSight\")}.`);\n            return;\n        }\n        // refresh the page to refresh the data\n        window.location.reload();\n    }\n\n    render() {\n        return(\n            <Dialog size={DialogSize.sm}>\n                <h3 style={{textAlign: \"center\"}}> {i18next.t(\"Convert to DeepSight Azure Active Directory\")} </h3>\n                <Section style={{font: secondaryFontLarge}}>\n                    {this.getExplanationText()}\n                </Section>\n                <Section style={{padding: \"30px 0px\"}}>\n                {`${i18next.t(\"Important points to understand\")} :`}\n                    <SwitchContainer>\n                        <Switch\n                            initialValue={this.state.factoryResetCheckBox}\n                            onChange={(value: boolean) =>\n                                this.setState({factoryResetCheckBox: value},() => this.validateForm())\n                            }\n                        />\n                        <Box>\n                            {i18next.t(\"All Hololens will need to be\")}&nbsp;\n                            <a href={\"https://docs.microsoft.com/en-us/hololens/hololens-recovery#reset-the-device\"}\n                               target={\"_blank\"}>\n                                {i18next.t(\"factory reset\")}\n                            </a>&nbsp;\n                            {`${i18next.t(\"to connect the new domain\")}.`}\n                        </Box>\n                    </SwitchContainer>\n                    <SwitchContainer>\n                        <Switch\n                            initialValue={this.state.usernameChangeCheckBox}\n                            onChange={(value: boolean) =>\n                                this.setState({usernameChangeCheckBox: value},() => this.validateForm())\n                            }\n                        />\n                        <Box>\n                            {`${i18next.t(\"Every login username will be changed to ends with\")} \n                            ${this.deepSightDomain}. (Ex: john@${this.props.domain} ${i18next.t(\"will become\")}\n                            john@${this.deepSightDomain}.`}\n                        </Box>\n                    </SwitchContainer>\n                    <SwitchContainer>\n                        <Switch\n                            initialValue={this.state.passwordRequiredCheckBox}\n                            onChange={(value: boolean) =>\n                                this.setState({passwordRequiredCheckBox: value},() => this.validateForm())\n                            }\n                        />\n                        <Box>\n                            {`${i18next.t(\"Users without password would need to get a password \" +\n                                \"assigned before login\")}.`}\n                        </Box>\n                    </SwitchContainer>\n                    <SwitchContainer>\n                        <Switch\n                            initialValue={this.state.irreversibleCheckBox}\n                            onChange={(value: boolean) =>\n                                this.setState({irreversibleCheckBox: value},() => this.validateForm())\n                        }\n                        />\n                        <Box> {`${i18next.t(\"This change is irreversible\")}.`} </Box>\n                    </SwitchContainer>\n                </Section>\n                <Box style={{display: \"flex\", alignItems: \"flex-start\", justifyContent: \"center\"}}>\n                    <span>\n                        {i18next.t(\"Enter your current domain to continue\")}:&nbsp;\n                    </span>\n                    <span style={{maxWidth: \"150px\"}}>\n                        <InputText\n                            onChange={(value: string) => this.setState({domainField: value}, () => this.validateForm())}\n                            dark\n                            placeholder={this.props.domain}\n                        />\n                    </span>\n                </Box>\n                <ErrorWrapper>\n                    {this.state.error}\n                </ErrorWrapper>\n                <ButtonsContainer>\n                    <Button variant=\"outlined\" onClick={() => this.props.onClose()}>\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                    <Button disabled={Boolean(this.state.error)} onClick={() => this.onConfirm()}>\n                        {i18next.t(\"Convert\")}\n                    </Button>\n                </ButtonsContainer>\n            </Dialog>\n        );\n    }\n}\n", "import * as React from \"react\";\nimport { Box, styled } from \"@mui/material\";\nimport { lightWhite, primary } from \"../values/colors/colors\";\nimport { primaryFontLarge } from \"../values/fonts/fonts\";\n\nconst Wrapper = styled(Box)((props: { label_on_the_right: number }) => ({\n    display: \"flex\",\n    flexDirection: props.label_on_the_right ? \"row-reverse\" : \"row\",\n    alignItems: \"center\",\n}));\n\nconst CheckboxContainer = styled(Box)((props: { checked: number, disabled: number }) => ({\n    marginLeft: \"3px\",\n    position: \"relative\",\n    backgroundColor: props.disabled ? \"#e0e0e0\" : props.checked ? primary : lightWhite,\n    border: `1px solid ${primary}`,\n    borderRadius: \"2.5px\",\n    transition: \"background-color 0.1s ease\",\n    width: \"16px\",\n    height: \"16px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    cursor: \"pointer\",\n\n    opacity: props.disabled ? 0.6 : 1,\n\n    \"& input\": {\n        display: \"none\",\n    },\n\n    \"& span\": {\n        position: \"relative\",\n        width: \"16px\",\n        height: \"16px\",\n    },\n\n    \"& span:after\": {\n        content: '\"\"',\n        position: \"absolute\",\n        display: props.checked ? \"block\" : \"none\",\n        left: \"5px\",\n        top: \"1px\",\n        width: \"4px\",\n        height: \"8px\",\n        border: \"solid white\",\n        borderWidth: \"0 3px 3px 0\",\n        borderRadius: \"2px\",\n        transform: \"rotate(45deg)\",\n    },\n\n    \"&:hover\": {\n        cursor: props.disabled ? \"not-allowed\" : \"pointer\",\n        backgroundColor: props.disabled ? \"#e0e0e0\" : props.checked ? primary : \"#f5f5f5\",\n    },\n}));\n\ninterface CheckboxProps {\n    label?: string;\n    onClick?: (checked: boolean) => void;\n    checked: boolean;\n    style?: React.CSSProperties;\n    disabled?: boolean;\n    labelOnTheRight?: boolean;\n}\n\nexport class Checkbox extends React.Component<CheckboxProps> {\n\n    private handleOnClick() {\n        if (this.props.disabled || !this.props.onClick)\n            return;\n\n        // TODO (@ebalthazard): Change to send !this.props.checked\n        this.props.onClick(this.props.checked);\n    }\n\n    render() {\n        const { label, checked, style, disabled, labelOnTheRight } = this.props;\n        return (\n            <Wrapper style={style} label_on_the_right={Number(labelOnTheRight ?? false)}>\n                <CheckboxContainer\n                    onClick={() => this.handleOnClick()}\n                    checked={Number(checked)}\n                    disabled={Number(disabled ?? 0)}\n                >\n                    <input type=\"checkbox\" readOnly checked={checked} />\n                    <span />\n                </CheckboxContainer>\n                {label && (\n                    <Box sx={{ pl: \"4px\", font: primaryFontLarge, color: disabled ? \"#9e9e9e\" : \"inherit\" }}>\n                        {label}\n                    </Box>\n                )}\n            </Wrapper>\n        );\n    }\n}\n", "import React, {useEffect, useState} from \"react\";\nimport {Box, LinearProgress} from \"@mui/material\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport styled from \"styled-components\";\nimport {primaryFontXLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Role} from \"@backend/Types/Role\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {DataSourceGroups} from \"@root/Frontend/DataSources/DataSourceGroups\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {RegionAWS} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nconst DialogContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: 6,\n    textAlign: \"left\"\n});\n\nconst ProgressSubtitle = styled(Box)((props: {color: string}) => ({\n    display: \"flex\",\n    justifyContent: \"center\",\n    font: secondaryFontMedium,\n    color: props.color\n}));\n\ninterface CreatePeersLoadingDialogProps {\n    domain: string;\n    peersToCreate: Map<string, string>; // username -> full name\n    region: RegionAWS;\n    groupsToAdd: Map<bigint, Role>; // ID -> role\n    onPeersCreated: () => void;\n}\n\nexport function CreatePeersLoadingDialog(props: CreatePeersLoadingDialogProps): JSX.Element {\n    const dataSourcePeers: DataSourcePeers = AppConsole.getInstance().dataSourcePeers;\n    const dataSourceGroups: DataSourceGroups = AppConsole.getInstance().dataSourceGroups;\n\n    const [numberOfPeersCreated, setNumberOfPeersCreated] = useState<number>(0);\n\n    async function createPeers(domain: string, peersFullNameByUsername: Map<string, string>, region: RegionAWS,\n                               selectedGroupIDs: Map<bigint, Role>): Promise<void> {\n        let countOfCreatedPeers: number = 0;\n\n        const groupRoles: [bigint, Role][] = Array.from(selectedGroupIDs.entries());\n        for (const [username, fullName] of peersFullNameByUsername.entries()) {\n            const peerID: bigint = await dataSourcePeers.createPeer(domain, fullName, username, region);\n            if (peerID) {\n                await Promise.all(groupRoles.map(([groupID, groupRole]): Promise<boolean> =>\n                    dataSourceGroups.setGroupRoleForPeer(groupID, peerID, groupRole)\n                ));\n            }\n\n            setNumberOfPeersCreated(++countOfCreatedPeers);\n        }\n    }\n\n    useEffect(() => {\n        createPeers(props.domain, props.peersToCreate, props.region, props.groupsToAdd)\n            .then(() => props.onPeersCreated());\n    }, []);\n\n    return (\n        <Dialog size={DialogSize.sm}>\n            <DialogContainer>\n                <Box style={{font: primaryFontXLarge}}> {`${i18next.t(\"Creating New Users\")}`} </Box>\n                <LinearProgress\n                    variant={\"determinate\"}\n                    value={numberOfPeersCreated / props.peersToCreate.size * 100}\n                />\n                <ProgressSubtitle color={dark}>\n                    {`${numberOfPeersCreated}/${props.peersToCreate.size} \n                                ${i18next.t(\"Users Created\")}`}\n                </ProgressSubtitle>\n            </DialogContainer>\n        </Dialog>\n    );\n}\n", "import React from \"react\";\n\nexport const Users = ({ width=\"24\", height=\"24\" }: {width?: string, height?: string }) =>\n    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"users\" width={width} height={height} \n         className=\"svg-inline--fa fa-users fa-w-20\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n         viewBox=\"0 0 640 512\">\n        <path fill=\"currentColor\"\n              d=\"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"/>\n    </svg>;", "import {useHistory, useLocation} from \"react-router-dom\";\nimport {SegmentedControl} from \"@root/react-components/src/inputs/SegmentedControl\";\nimport React from \"react\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport i18next from \"i18next\";\nimport styled from \"styled-components\";\nimport {Box} from \"@mui/material\";\nimport {theme} from \"@root/Frontend/theme\";\n\nconst Wrapper = styled(Box)({\n    width: \"min(100%, 300px)\",\n    minWidth: \"75px\",\n    flex: 2,\n    justifySelf: \"center\",\n    [theme.breakpoints.down('lg')]: {\n        justifySelf: \"end\",\n    }\n})\n\nexport function PeersGroupsSwitch(props: {enabled: boolean}) {\n    const history = useHistory();\n    const location = useLocation();\n\n    const MANAGEMENT_OPTIONS: string[] = [\"Users\", \"Groups\"];\n\n    return(\n        <Tooltip title={props.enabled ? \"\" : i18next.t(\"Users Management is only available for Domain Managers\")}\n                 placement={\"bottom\"}>\n            <Wrapper>\n                <SegmentedControl dark disabled={!props.enabled} options={MANAGEMENT_OPTIONS}\n                    defaultIndex={location.pathname.startsWith(Management.BASE_PATH + \"/Peers\") ? 0 : 1}\n                    value={location.pathname.startsWith(Management.BASE_PATH + \"/Peers\") ? 0 : 1}\n                    onChange={(index: number) => {\n                        history.push(Management.BASE_PATH + \"/\" + (index === 0 ? \"Peers\" : \"Groups\"));\n                    }} />\n            </Wrapper>\n        </Tooltip>\n    )\n}", "import {NavLink, withRouter} from \"react-router-dom\";\nimport React from \"react\";\nimport {Group} from \"@backend/Types/Group\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {GroupsList} from \"@root/Frontend/Console/Views/Management/GroupsList/GroupsList\";\nimport {RouteComponentProps} from \"react-router\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Col, Row} from \"react-grid-system\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport i18next from \"i18next\";\nimport {AttemptsPerWorldGraph} from \"@root/Frontend/Console/widgets/AttemptsPerWorldGraph\";\nimport {ViewSubtitle} from \"@root/Frontend/Console/components/ViewSubtitle\";\nimport {ListView, ListWrapper} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {WorldItem} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldItem\";\nimport {PeerItem} from \"@root/Frontend/Console/Views/Management/Group/PeerItem/PeerItem\";\nimport {darkenPrimary, lightPrimary, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport styled from \"styled-components\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {Users} from \"@root/react-components/src/icons/Users\";\nimport {Role} from \"@backend/Types/Role\";\nimport {InvitePeerForm} from \"@root/Frontend/Console/Views/Management/Group/InvitePeer/InvitePeerForm\";\nimport {World as WorldIcon} from \"@root/react-components/src/icons/World\";\nimport {Box} from \"@mui/material\";\nimport {FILTER_OS_LIST, FiltersInterface, FiltersRow} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {TitleWrapper} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldsView\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {World} from \"@backend/Types/World\";\nimport DefaultWorldItemActions from \"@root/Frontend/Console/Views/Analytics/WorldsList/DefaultWorldItemActions\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport DSConnectCallsList from \"@root/Frontend/Console/widgets/lists/DSConnectCallsList\";\nimport {GroupInformation} from \"@root/Frontend/Console/Views/Management/Group/GroupInformation\";\n\nconst SkillsMatrixButtonWrapper = styled(Box)({\n    position: \"absolute\",\n    right: 0,\n    top: 0,\n    marginRight: \"8px\"\n});\n\nconst ListCount = styled(Box)({\n    display: \"flex\",\n    font: primaryFontMedium,\n    gap: \"5px\",\n    alignItems: \"center\",\n    margin: \"24px 0 12px\"\n});\n\nconst CountContainer = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    marginRight: \"3px\",\n    gap: \"3px\",\n    \"& svg\": {\n        height: \"16px\",\n        width: \"16px\"\n    }\n});\n\nconst WorldsHeader = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    height: \"70px\"\n});\n\ninterface GroupViewState {\n    peerIDs: bigint[];\n    experts: bigint[];\n    worlds: bigint[] | null;\n    canEditGroup: boolean;\n    isInvitePeerDialogOpen: boolean;\n    displayMatrix: boolean;\n    filters: FiltersInterface;\n    worldGroupEntities: bigint[];\n}\n\nexport class GroupView extends RouterView<RouteComponentProps<{groupID: string}>> {\n    private readonly app: AppConsole = AppConsole.getInstance();\n\n    static getLevelForGroup(groupID: bigint): BreadcrumbsLevel {\n        return {\n            link: Management.BASE_PATH + \"/Groups/\" + groupID,\n            getName: async () => {\n                const group: Group = await AppConsole.getInstance().dataSourceGroups.getGroup(groupID);\n                return group ? group.Name : groupID.toString();\n            }\n        };\n    }\n\n    groupID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.groupID);\n    state: GroupViewState = {\n        peerIDs: [],\n        experts: [],\n        worlds: null,\n        canEditGroup: false,\n        isInvitePeerDialogOpen: false,\n        displayMatrix: false,\n        filters: {\n            filterDate: FilterDateOptions.All_TIME,\n            filterOS: FILTER_OS_LIST,\n            selectedEntity: BigInt(0),\n            selectedPeer: BigInt(0)\n        },\n        worldGroupEntities: []\n    }\n\n    override getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [\n            GroupsList.getGroupLevel(),\n            GroupView.getLevelForGroup(this.groupID)\n        ];\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        await this.reloadGroupView();\n    }\n\n    private async reloadGroupView() {\n        if (!this.groupID)\n            return this.props.history.push(Management.BASE_PATH + \"/Groups\");\n\n        const group: Group = await this.app.dataSourceGroups.getGroup(this.groupID);\n\n        const currentPeerID: bigint = AppConsole.getInstance().currentPeerID;\n        const currentRole: Role = group.Peers[currentPeerID.toString()];\n\n        const peerIDs: bigint[] = [];\n        if (currentRole === Role.EDITOR) {\n            const groupPeerIDs: bigint[] = Object.keys(group.Peers).map((peerID: string) =>\n                UtilsShared.safelyConvertStringToBigInt(peerID));\n\n            const peerNameByID = new Map<bigint, string>();\n            for (const peerID of groupPeerIDs) {\n                const peer: Peer = await AppConsole.getInstance().dataSourcePeers.getPeer(peerID);\n\n                if (peer.archivedDate)\n                    continue;\n\n                peerNameByID.set(peerID, peer.fullName.trim());\n            }\n\n            const peers: [bigint, string][] = [...peerNameByID.entries()];\n            // sort by alphabetical order\n            peers.sort((peerA: [bigint, string], peerB: [bigint, string]) => peerA[1].localeCompare(peerB[1]));\n\n            peers.forEach((peer: [bigint, string]) => peerIDs.push(peer[0]));\n        } else {\n            // Viewer can only see the group owner, group's experts and himself\n            const uniqueMembers: Set<bigint> = new Set([currentPeerID, group.Owner, ...group.Experts]);\n            peerIDs.push(...uniqueMembers);\n        }\n\n        // redirect to Groups List if group doesn't exist\n        if (!group || !peerIDs.includes(currentPeerID))\n            return this.props.history.push(Management.BASE_PATH + \"/Groups\");\n\n        const allEntities: Set<bigint> = new Set();\n        for (const worldID of group.Worlds) {\n            const world: World = await this.app.dataSourceWorlds.getWorld(worldID);\n            for (const entityID of world.Entities.value)\n                allEntities.add(entityID);\n        }\n\n        this.setState({\n            worlds: group.Worlds,\n            peerIDs,\n            experts: group.Experts,\n            canEditGroup: currentRole === Role.EDITOR,\n            worldGroupEntities: [...allEntities],\n        });\n    }\n\n    private saveNewPeers(newPeerIDs: Set<bigint>) {\n        if (!newPeerIDs.size)\n            return;\n\n        this.setState((prevState: GroupViewState) => ({ peerIDs: [...newPeerIDs, ...prevState.peerIDs] }));\n    }\n\n    render() {\n        return <>\n            <SkillsMatrixButtonWrapper>\n                <NavLink style={{textDecoration: \"none\"}}\n                         to={`${Management.BASE_PATH}/Groups/${this.groupID}/SkillsMatrix`}>\n                    <Button variant=\"outlined\" style={{ width: \"max-content\", marginRight: \"8px\" }}>\n                        {i18next.t(\"Skills Matrix\")}\n                    </Button>\n                </NavLink>\n            </SkillsMatrixButtonWrapper>\n            <Box style={{ margin: \"12px 0px\" }}>\n                <GroupInformation groupID={this.groupID} />\n            </Box>\n            {Boolean(this.state.worlds) &&\n                <Box style={{display: \"flex\", flexDirection: \"column\"}}>\n                    <TitleWrapper>\n                        <ViewSubtitle style={{margin: \"0 20px 0 0\"}}>\n                            {i18next.t(\"Sequence Attempts per World\")}\n                        </ViewSubtitle>\n                        <Box style={{display: \"flex\", gap: \"10px\"}}>\n                            <FiltersRow\n                                filters={this.state.filters}\n                                handleOnChangeFilter={(filters: FiltersInterface) => this.setState({filters})}\n                                allEntities={this.state.worldGroupEntities}\n                                peerIDs={this.state.peerIDs}\n                                disablePeerFilter={!this.state.canEditGroup}\n                            />\n                        </Box>\n                    </TitleWrapper>\n                    <AttemptsPerWorldGraph worldIDs={this.state.worlds ?? []} filters={this.state.filters}/>\n                </Box>\n            }\n            <Row>\n                <Col md={12} lg={6}>\n                    <Box style={{display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\"}}>\n                        <ViewSubtitle>{i18next.t(\"Users\")}</ViewSubtitle>\n                        <ListCount>\n                            <CountContainer>\n                                <Box>{this.state.peerIDs.length}</Box>\n                                <Users/>\n                            </CountContainer>\n                            {this.state.canEditGroup &&\n                                <Button\n                                    size=\"small\" id={\"group-add-peer\"}\n                                    onClick={() => this.setState({isInvitePeerDialogOpen: true})}\n                                >\n                                    {i18next.t(\"Add User\")}\n                                </Button>\n                            }\n                            <NavLink style={{textDecoration: \"none\"}}\n                                     to={Management.BASE_PATH + \"/Groups/\" + this.groupID + \"/Peers\"}>\n                                <Button size=\"small\" id={\"manage-peers\"}>\n                                    {i18next.t(\"Manage\")}\n                                </Button>\n                            </NavLink>\n                        </ListCount>\n                    </Box>\n                    <ListWrapper backgroundColor={primary}>\n                        <ListView\n                            emptyListMessage={i18next.t(\"No users to display\")}\n                            itemCount={this.state.peerIDs.length}\n                        >\n                            {index =>\n                                <PeerItem\n                                    peerID={this.state.peerIDs[index] ? this.state.peerIDs[index] : BigInt(0)}\n                                    groupID={this.groupID}\n                                    canBeEdited={false}\n                                    showInfo={false}\n                                />\n                            }\n                        </ListView>\n                    </ListWrapper>\n                </Col>\n                <Col md={12} lg={6}>\n                    <WorldsHeader>\n                        <ViewSubtitle>{i18next.t(\"Worlds\")}</ViewSubtitle>\n                        <ListCount>\n                            <CountContainer>\n                                <Box>{this.state.worlds?.length ?? 0}</Box>\n                                <WorldIcon/>\n                            </CountContainer>\n                        </ListCount>\n                    </WorldsHeader>\n                    <ListWrapper backgroundColor={lightPrimary}>\n                        <ListView\n                            emptyListMessage={i18next.t(\"No Worlds to display\")}\n                            itemCount={this.state.worlds?.length ?? 0}\n                        >\n                            {(index: number) => {\n                                const worldID: bigint = this.state.worlds ? this.state.worlds[index] : BigInt(0);\n                                return (\n                                    <a style={{textDecoration: \"none\"}}\n                                       href={`${Analytics.BASE_PATH}/Worlds/${worldID}`}\n                                    >\n                                        <WorldItem\n                                            worldID={worldID}\n                                            actions={<DefaultWorldItemActions worldID={worldID} displaySequencesCount/>}\n                                        />\n                                    </a>\n                                );\n                            }}\n                        </ListView>\n                    </ListWrapper>\n                </Col>\n            </Row>\n            <Box>\n                <ViewSubtitle>{i18next.t(\"Expert Sessions\")}</ViewSubtitle>\n                <ListWrapper backgroundColor={darkenPrimary} scrollbarcolor={white}>\n                    <DSConnectCallsList\n                        peerIDs={this.state.experts}\n                        filterPeer={this.state.filters.selectedPeer}\n                        dateRange={this.state.filters.dateRange}\n                    />\n                </ListWrapper>\n            </Box>\n\n            {this.state.isInvitePeerDialogOpen &&\n                <InvitePeerForm\n                    saveNewPeers={(newPeerIDs: Set<bigint>) => this.saveNewPeers(newPeerIDs)}\n                    groupID={this.groupID}\n                    onClose={() => this.setState({isInvitePeerDialogOpen: false})}/>\n            }\n        </>\n    }\n}\n\nexport const GroupViewWithRouter = withRouter(GroupView);\n", "import React from \"react\";\nimport {Bar, BarChart, CartesianGrid, Label, ResponsiveContainer,\n    Tooltip as RechartsTooltip, XAxis, YAxis} from \"recharts\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {darkenPrimary, darkenWhite, lighterDark, lightPrimary,\n    lightWhite, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {FiltersInterface} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport isEqual from \"lodash/isEqual\";\nimport {NameType, Payload} from \"recharts/types/component/DefaultTooltipContent\";\nimport {ValueType} from \"recharts/src/component/DefaultTooltipContent\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {World} from \"@backend/Types/World\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Box, styled} from \"@mui/material\";\nimport {DataSourceWorlds} from \"@root/Frontend/DataSources/DataSourceWorlds\";\nimport {WorldSequenceAttempts} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {DataSourceSequences, Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {NoDataToDisplay} from \"@root/Frontend/Console/components/NoDataToDisplay\";\nimport {getPublishedWorldSequenceAttemptIDs} from \"@root/Frontend/Console/utils/UtilsAttempts\";\nimport {NavLink} from \"react-router-dom\";\n\nconst Wrapper = styled(Box)({\n    backgroundColor: lightWhite,\n    width: \"100%\",\n    borderRadius: \"24px\",\n    font: primaryFontLarge,\n    padding: \"24px\",\n    boxSizing: \"border-box\",\n    border: `1px solid ${darkenWhite}`,\n    color: lighterDark,\n    overflowX: \"auto\",\n    overflowY: \"hidden\"\n});\n\nconst TickText = styled(\"text\")({\n    cursor: \"pointer\"\n});\n\ntype ReChartDataFormat = {\n    // recharts doesnt like bigints: https://github.com/recharts/recharts/issues/2286\n    worldID: string,                    // worldID\n    [sequenceIndex: number]: number   // attempts per sequence,\n}\n\ntype SequenceData = {\n    title: string,\n    attemptsCount: number\n}\n\ntype WorldData = {\n    title: string,\n    sequences: SequenceData[],\n    mostRecentAttemptTimestamp: bigint | null\n}\n\ninterface AttemptsPerWorldGraphProps {\n    worldIDs: bigint[];\n    filters: FiltersInterface;\n}\n\ninterface AttemptsPerWorldGraphState {\n    graphData: Map<bigint, WorldData> | null;\n    reChartData: ReChartDataFormat[];\n    highestSequencesCount: number;\n}\n\nexport class AttemptsPerWorldGraph extends SmartComponent {\n    private readonly app: AppConsole = AppConsole.getInstance();\n    private readonly dataSourceSequences: DataSourceSequences = this.app.dataSourceSequences;\n    private readonly dataSourceWorlds: DataSourceWorlds = this.app.dataSourceWorlds;\n\n    static readonly HEIGHT = 500;\n    static readonly MAX_TICK_LENGTH = 15;\n    static readonly BARS_COLORS = [lightPrimary, primary, darkenPrimary, lighterDark];\n\n    props: AttemptsPerWorldGraphProps;\n    state: AttemptsPerWorldGraphState = {\n        graphData: null,\n        reChartData: [],\n        highestSequencesCount: 0\n    };\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        await this.reloadAllWorldSequenceAttemptLogs();\n    }\n\n    override async componentDidUpdate(prevProps: AttemptsPerWorldGraphProps) {\n        if (!isEqual(this.props, prevProps))\n            await this.reloadAllWorldSequenceAttemptLogs();\n    }\n\n    async reloadAllWorldSequenceAttemptLogs() {\n        // get attempt count for worlds\n        const graphData: Map<bigint, WorldData> = new Map();\n\n        const worldSequenceAttemptIDs: WorldSequenceAttempts =\n            await getPublishedWorldSequenceAttemptIDs(new Set([...this.props.worldIDs]), this.props.filters, true);\n        for (const worldID of this.props.worldIDs) {\n            const sequenceAttemptIDs: Map<bigint, bigint[]> = worldSequenceAttemptIDs.get(worldID) ?? new Map();\n            const world: World = await this.dataSourceWorlds.getWorld(worldID);\n\n            if (!world)\n                continue;\n\n            const worldData: WorldData = {\n                title: world.Title.value,\n                sequences: [],\n                mostRecentAttemptTimestamp: null\n            };\n\n            // get sequences for world\n            const sequencesIDs: bigint[] = [...sequenceAttemptIDs.keys()];\n\n            for (const sequenceID of sequencesIDs) {\n                const sequenceAttemptsIDs: bigint[] = [...sequenceAttemptIDs.get(sequenceID)?.values() ?? []]\n\n                // sort all attempt by timestamp (the first is the older attempt)\n                sequenceAttemptsIDs.sort((attemptID1: bigint, attemptID2: bigint) =>\n                    Number(UtilsShared.getTimestampOfRandomID(attemptID1)) -\n                    Number(UtilsShared.getTimestampOfRandomID(attemptID2)));\n\n                const attemptsCount: number = sequenceAttemptsIDs.length;\n\n                // skip sequence with no attempts\n                if (!attemptsCount)\n                    continue;\n\n                const sequence: Sequence = await this.dataSourceSequences.getSequence(worldID, sequenceID);\n                worldData.sequences.push({ title: sequence.Title.value, attemptsCount });\n\n                // get the more recent timestamp to sort the sequences by most recent done\n                const lastAttemptTimestamp: bigint =\n                    UtilsShared.getTimestampOfRandomID(sequenceAttemptsIDs[sequenceAttemptsIDs.length - 1]);\n\n                if (!worldData.mostRecentAttemptTimestamp || worldData.mostRecentAttemptTimestamp < lastAttemptTimestamp)\n                    worldData.mostRecentAttemptTimestamp = lastAttemptTimestamp;\n            }\n            graphData.set(worldID, worldData);\n        }\n\n        // Sort worlds by most recent attempt (from all its sequences)\n        const sortedData: Map<bigint, WorldData> = new Map([...graphData.entries()].sort((world1, world2) =>\n                Number(world2[1].mostRecentAttemptTimestamp) - Number(world1[1].mostRecentAttemptTimestamp)));\n\n        this.setState({ graphData: sortedData }, () => this.setDataForRecharts(this.state.graphData ?? new Map()));\n    }\n\n    private setDataForRecharts(graphData: Map<bigint, WorldData>) {\n        let highestSequencesCount: number = 0;\n        const chartData: ReChartDataFormat[] = [];\n        graphData?.forEach((worldData, worldID) => {\n            const sequencesData: ReChartDataFormat = {\n                worldID: worldID.toString(),\n            };\n\n            if (worldData.sequences.length > highestSequencesCount)\n                highestSequencesCount = worldData.sequences.length;\n\n            worldData.sequences.forEach((sequenceData, index) => {\n                sequencesData[index] = sequenceData.attemptsCount;\n            });\n\n            chartData.push(sequencesData);\n        });\n\n        this.setState({ reChartData: chartData, highestSequencesCount });\n    }\n\n    renderGraph(){\n        if (this.state.graphData === null)\n            return <CenteredLoading />;\n\n        if (!this.state.graphData.size)\n            return <NoDataToDisplay/>\n\n        // minimum 40px per bar\n        return(\n        <Box style={{height: \"100%\", width: \"100%\", minWidth: this.state.reChartData.length * 40}}>\n            <ResponsiveContainer height={AttemptsPerWorldGraph.HEIGHT - 24} width={\"100%\"}>\n                <BarChart margin={{bottom: 80}} data={this.state.reChartData}>\n                    <CartesianGrid strokeDasharray=\"3 3\" />\n                    <XAxis dataKey=\"worldID\" height={50} interval={0}\n                           angle={-60} textAnchor={\"end\"}\n                           tick={(props: any) => {\n                               const title: string =\n                                   this.state.graphData?.get(BigInt(props.payload.value))?.title ?? \"\";\n                               const truncatedTitle: string = title.slice(0, AttemptsPerWorldGraph.MAX_TICK_LENGTH) +\n                                   (title.length > AttemptsPerWorldGraph.MAX_TICK_LENGTH ? \"...\" : \"\")\n                                   return <NavLink to={`/Console/Analytics/Worlds/${props.payload.value}`}>\n                                           <g transform={`translate(${props.x},${props.y})`}>\n                                               <Tooltip title={title.length > AttemptsPerWorldGraph.MAX_TICK_LENGTH && title}>\n                                                   <TickText x={0} y={0} dy={16}\n                                                             textAnchor=\"end\" fill=\"#666\" transform=\"rotate(-35)\">\n                                                       {truncatedTitle}\n                                                   </TickText>\n                                               </Tooltip>\n                                           </g>\n                                   </NavLink>\n                           }}\n                    />\n                    <YAxis width={50} allowDecimals={false} domain={[0, 'dataMax']}>\n                        <Label style={{textAnchor: \"middle\"}} value={i18next.t(\"Sequence Attempts\") as string}\n                               position={\"insideLeft\"} angle={-90} />\n                    </YAxis>\n                    <RechartsTooltip cursor={false} position={{y: 0}}\n                             // reverse order\n                             itemSorter={(item: {name: number}) => -item.name}\n                             // get world title\n                             labelFormatter={(worldIDStr: string) =>\n                                 this.state.graphData?.get(BigInt(worldIDStr))?.title}\n                             // get sequence title\n                             formatter={(value: string, name: number, itemData: Payload<ValueType, NameType>) => [\n                                 value + \" \" + (parseInt(value) > 1 ? i18next.t(\"attempts\") : i18next.t(\"attempt\")),\n                                 this.state.graphData?.get(BigInt(itemData.payload.worldID))?.sequences[name].title ??\n                                     \"error\"\n                             ]}\n                    />\n                    {Array.from({ length: this.state.highestSequencesCount }, (e: unknown, index: number) =>\n                        <Bar key={\"bar-\" + index}\n                             dataKey={index}\n                             stackId=\"1\"\n                             fill={AttemptsPerWorldGraph.BARS_COLORS[index % AttemptsPerWorldGraph.BARS_COLORS.length]}\n                             maxBarSize={50}\n                        />\n                    )}\n                </BarChart>\n            </ResponsiveContainer>\n        </Box>\n        );\n    }\n\n    render(){\n        return (\n            <Box>\n                <Wrapper style={{height: AttemptsPerWorldGraph.HEIGHT}}>{this.renderGraph()}</Wrapper>\n            </Box>\n        );\n    }\n}\n", "import React, {ReactElement} from 'react';\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {World} from \"@backend/Types/World\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {ResponsiveActions} from \"@root/Frontend/Console/components/ResponsiveActions\";\nimport i18next from \"i18next\";\nimport {ListViewItem} from \"@root/Frontend/Console/components/ListView/ListViewItem\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {getWorldSequences} from \"@root/Frontend/Console/utils/UtilsWorlds\";\n\ninterface WorldItemProps {\n    worldID: bigint;\n    actions?: ReactElement;\n}\n\ninterface WorldItemState {\n    worldTitle: string;\n    worldThumbnail: string;\n    worldOwnerName: string;\n    sequencesCount: number;\n}\n\nexport class WorldItem extends SmartComponent {\n    props: WorldItemProps;\n    state: WorldItemState  = {\n        worldTitle: \"\",\n        worldThumbnail: \"\",\n        worldOwnerName: \"\",\n        sequencesCount: 0\n    };\n\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const app: AppConsole = AppConsole.getInstance();\n\n        const world: World = await app.dataSourceWorlds.getWorld(this.props.worldID);\n        let ownerName: string = \"\";\n        switch(world.OwnerType.value) {\n            case OwnerType.PEER:\n                ownerName = (await app.dataSourcePeers.getPeer(world.Owner.value)).fullName;\n                break;\n            case OwnerType.GROUP:\n                ownerName = (await app.dataSourceGroups.getGroup(world.Owner.value)).Name;\n                break;\n            default:\n                AdapterLog.ERROR(`Invalid owner type received from backend for world ID ${this.props.worldID}`);\n        }\n\n        const sequenceIDs: bigint[] = await getWorldSequences(this.props.worldID, true);\n\n        this.setState({\n            worldTitle: world.Title.value,\n            worldThumbnail: world.Thumbnail.value ? world.Thumbnail.value : \"\",\n            worldOwnerName: ownerName,\n            sequencesCount: sequenceIDs.length\n        });\n    }\n\n    render() {\n        return (\n            <ListViewItem\n                id={this.props.worldID.toString()}\n                className=\"world-item\"\n                classNameTitle=\"world-item-title\"\n                loading={!this.state.worldTitle || !this.state.worldOwnerName}\n                title={this.state.worldTitle}\n                subtitle={i18next.t(\"by\") + \" \" + this.state.worldOwnerName}\n                thumbnail={this.state.worldThumbnail}>\n                <ResponsiveActions title={i18next.t(\"Options for\") + \" \" + this.state.worldTitle}\n                                   breakpoint={600}\n                >\n                    {this.props.actions}\n                </ResponsiveActions>\n            </ListViewItem>\n        )\n    }\n}\n", "import React from \"react\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {User} from \"@root/react-components/src/icons/User\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {ResponsiveActions} from \"@root/Frontend/Console/components/ResponsiveActions\";\nimport {SmartComponent} from \"@utils//SmartComponent\";\nimport {PeerRoleSwitch} from \"./PeerRoleSwitch\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {ListViewItem} from \"@root/Frontend/Console/components/ListView/ListViewItem\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {NavLink} from \"react-router-dom\";\nimport {Box, styled} from \"@mui/material\";\nimport {Star} from \"@root/react-components/src/icons/Star\";\nimport {grey, lightPrimary, lightWhite, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Group} from \"@backend/Types/Group\";\nimport {Diamond} from \"@root/react-components/src/icons/Diamond\";\nimport {Clock} from \"@root/react-components/src/icons/Clock\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {Plan} from \"@backend/Types/Plan\";\nimport {timestampToString} from \"@utils/utils\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {DataSourceGroups} from \"@root/Frontend/DataSources/DataSourceGroups\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\n\nconst PeerAttributes = styled(Box)({\n    display: \"flex\",\n    gap: \"8px\",\n    \"@media (max-width: 768px)\": {\n        \"& > div:not(:first-of-type)\": {\n            display: \"none\"\n        }\n    }\n});\n\nconst PeerAttribute = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: \"2px\"\n});\n\nconst ExpertButton = styled(Box)((props: {disabled: boolean}) => ({\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    width: \"80px\",\n    \"& > svg\": {\n        marginTop: \"4px\",\n        height: \"18px\",\n        width: \"18px\"\n    },\n    cursor: props.disabled ? \"not-allowed\" : \"pointer\"\n}));\n\nconst RoleWrapper = styled(Box)({\n    display:\"flex\",\n    justifyContent: \"center\",\n    width: \"100%\",\n    minWidth: \"190px\"\n});\n\ninterface PeerItemProps {\n    peerID: bigint;\n    groupID: bigint;\n    canBeEdited: boolean;\n    showInfo: boolean;\n    link: boolean;\n    onRemove?: () => void;\n}\n\ninterface PeerItemState {\n    fullName: string;\n    username: string;\n    planTitle: string;\n    lastLoginTimestamp: bigint;\n    isExpert: boolean;\n    isOwner: boolean;\n    loading: boolean;\n    isArchived: boolean;\n}\n\nexport class PeerItem extends SmartComponent<PeerItemProps> {\n    static defaultProps = {\n        link: true\n    }\n    private readonly dataSourceGroups: DataSourceGroups = AppConsole.getInstance().dataSourceGroups;\n\n    state: PeerItemState = {\n        fullName: \"\",\n        username: \"\",\n        planTitle: \"\",\n        lastLoginTimestamp: BigInt(0),\n        isExpert: false,\n        isOwner: false,\n        loading: false,\n        isArchived: false\n    };\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const dataSourcePeers: DataSourcePeers = AppConsole.getInstance().dataSourcePeers;\n        const peer: Peer = await dataSourcePeers.getPeer(this.props.peerID);\n        const plan: Plan = await AppConsole.getInstance().dataSourcePlans.getPlan(peer.plan);\n\n        let lastLoginTimestamp: bigint = BigInt(0);\n        for (const login of Object.values(peer.logins ?? {}).flat())\n            if (login > lastLoginTimestamp)\n                lastLoginTimestamp = login;\n\n        let isExpert: boolean = false;\n        let isOwner: boolean = false;\n        if (this.props.groupID) {\n            const group: Group = await this.dataSourceGroups.getGroup(this.props.groupID);\n            isExpert = group.Experts.includes(this.props.peerID);\n            isOwner = group.Owner === this.props.peerID;\n        }\n\n        this.setState({\n            username: peer.username,\n            fullName: peer.fullName,\n            planTitle: plan.title,\n            lastLoginTimestamp,\n            isExpert,\n            isOwner,\n            isArchived: Boolean(peer.archivedDate)\n        });\n    }\n\n    private async setIsExpert(isExpert: boolean) {\n        //  viewer can not edit Expert\n        if (!this.canBeEdited())\n            return;\n\n        this.setState({ isExpert });\n        if (isExpert)\n            await this.dataSourceGroups.addGroupExpert(this.props.groupID, this.props.peerID);\n        else\n            await this.dataSourceGroups.removeGroupExpert(this.props.groupID, this.props.peerID);\n    }\n\n    async renderPeerRemovePrompt(peerID: bigint){\n        const group: Group = await AppConsole.getInstance().dataSourceGroups.getGroup(this.props.groupID);\n        const groupName: string = this.props.groupID ? group.Name : \"\";\n\n        const confirmMessage: string = (peerID === AppConsole.getInstance().currentPeerID ?\n            // leave message\n            `${i18next.t(\"Are you sure you want to leave\")} ${i18next.t(\"the group\")} ${groupName}?`\n            :\n            // remove member message\n            `${i18next.t(\"Are you sure you want to remove\")} ${this.state.fullName} ${i18next.t(\"from group\")} \n             ${groupName}?`\n        );\n\n        const confirmLabel: string = peerID === AppConsole.getInstance().currentPeerID ? i18next.t(\"Leave\")\n                                                                                       : i18next.t(\"Remove\");\n\n        const hasConfirmed: boolean = await Prompt.confirm(confirmMessage, confirmLabel, true);\n        if (hasConfirmed)\n            this.onConfirm();\n    }\n\n     private onConfirm() {\n        this.setState({ loading: true });\n        if (this.props.onRemove)\n            return this.props.onRemove();\n     }\n\n     private canBeEdited(): boolean {\n        return this.props.canBeEdited && !this.state.isArchived;\n     }\n\n    renderActions(){\n        return (\n        <ResponsiveActions breakpoint={900} title={`${i18next.t(\"Options for\")} ${this.state.fullName}`}>\n        {this.props.showInfo ?\n            <>\n                <Tooltip\n                    title={`${i18next.t(\"Experts are the point of contact for any issues concerning the worlds \" +\n                        \"of this group\")}.`}\n                    placement={\"top\"}\n                    enterDelay={1000}\n                    enterNextDelay={1000}\n                >\n                    <ExpertButton\n                        onClick={() => this.setIsExpert(!this.state.isExpert)}\n                        disabled={!this.canBeEdited()}\n                    >\n                        {`${i18next.t(\"Expert\")}`}\n                        <Star color={this.state.isExpert ? yellow : this.canBeEdited() ? lightPrimary : grey}\n                              fillColor={this.state.isExpert ? yellow : lightWhite}\n                        />\n                    </ExpertButton>\n                </Tooltip>\n                <Box style={{width: \"210px\", display: \"flex\",}}>\n                    {this.state.isOwner ?\n                        <RoleWrapper> {`${i18next.t(\"Owner\")}`} </RoleWrapper>\n                    :\n                        <>\n                            <Box style={{\n                                width: \"100px\",\n                                margin: \"0 12px\",\n                                // add padding to be aligned when remove/leave button is not present\n                                paddingRight: this.props.onRemove ? \"none\" : \"67px\"\n                            }}\n                            >\n                                <PeerRoleSwitch\n                                    groupID={this.props.groupID}\n                                    peerID={this.props.peerID}\n                                    canBeEdited={this.canBeEdited()}\n                                />\n                            </Box>\n\n                            {this.props.onRemove &&\n                                <Button\n                                    className=\"remove-peer-group-btn\"\n                                    color=\"error\"\n                                    onClick={() => this.renderPeerRemovePrompt(this.props.peerID)}\n                                    style={{marginLeft: !this.canBeEdited() && this.state.isExpert ? \"10px\" : \"0px\"}}\n                                >\n                                    {AppConsole.getInstance().currentPeerID === this.props.peerID ? i18next.t(\"Leave\")\n                                                                                                  : i18next.t(\"Remove\")\n                                    }\n                                </Button>\n                            }\n                        </>\n                    }\n                </Box>\n            </>\n        :\n            <></>\n        }\n        </ResponsiveActions>\n        );\n    }\n\n    render(){\n        const listViewItem = (\n            <ListViewItem\n                id={this.props.peerID.toString()}\n                className=\"peer-item\"\n                loading={this.state.fullName === null || this.state.username === null || this.state.loading}\n                isDisabled={this.state.isArchived}\n                title={this.state.fullName}\n                subtitle={\n                    <PeerAttributes>\n                        <PeerAttribute id={this.props.peerID.toString()} className=\"peer-username\">\n                            <User/>{this.state.username}\n                        </PeerAttribute>\n                        {(this.props.showInfo && this.props.canBeEdited) &&\n                            <>\n                                <Tooltip placement={\"top\"} title={i18next.t(\"Plan\")}>\n                                    <PeerAttribute>\n                                        <Diamond/>{i18next.t(this.state.planTitle)}\n                                    </PeerAttribute>\n                                </Tooltip>\n                                <Tooltip placement={\"top\"} title={i18next.t(\"Last sign-in\")}>\n                                    <PeerAttribute>\n                                        <Clock/>\n                                        {this.state.lastLoginTimestamp > BigInt(0) ?\n                                            timestampToString(this.state.lastLoginTimestamp, false)\n                                            :\n                                            i18next.t(\"Never been connected\")\n                                        }\n                                    </PeerAttribute>\n                                </Tooltip>\n                            </>\n                        }\n                    </PeerAttributes>\n                }\n                roundThumbnail\n                thumbnail={`https://secure.gravatar.com/avatar/${\n                    UtilsShared.md5(this.state.username?.toString())}?s=80&d=identicon`\n                }\n            >\n                {this.renderActions()}\n            </ListViewItem>\n        );\n\n        if (this.props.link)\n            return (\n                <NavLink\n                    id={this.props.peerID.toString()}\n                    className={\"peer-item-nav\"}\n                    to={`${Management.BASE_PATH}/Peers/${this.props.peerID}`}\n                    style={{textDecoration: \"none\"}}>\n                    {listViewItem}\n                </NavLink>\n            );\n\n        return listViewItem;\n    }\n}\n", "import {SmartComponent} from \"@utils//SmartComponent\";\nimport React from \"react\";\nimport {Role} from \"@backend/Types/Role\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {RadioButtons} from \"@root/Frontend/Console/components/RadioButtons\";\nimport {Group} from \"@backend/Types/Group\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport i18next from \"i18next\";\n\nexport class PeerRoleSwitch extends SmartComponent<{groupID: bigint, peerID: bigint, canBeEdited: boolean}>{\n    state: {initialRole: Role | null} = {initialRole: null};\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const group: Group = await AppConsole.getInstance().dataSourceGroups.getGroup(this.props.groupID);\n        const role: Role | null = UtilsShared.getCorrespondingEnumValue(Role, group.Peers[this.props.peerID.toString()]);\n\n        this.setState({ initialRole: role });\n    }\n\n    render() {\n        if (!this.state.initialRole)\n            return <CenteredLoading />;\n\n        return (\n            <RadioButtons\n                options={Object.values(Role).map((role: string) => i18next.t(role))}\n                defaultIndex={Object.values(Role).indexOf(this.state.initialRole)}\n                onChange={async (selectedIndex: number) =>\n                    await AppConsole.getInstance().dataSourceGroups.setGroupRoleForPeer(this.props.groupID,\n                        this.props.peerID, Object.values(Role)[selectedIndex])\n                }\n                disabled={!this.props.canBeEdited}\n            />\n        );\n    }\n}\n", "import React from \"react\";\n\nexport function Star(props: { color?: string, fillColor?: string }) {\n    return <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g clipPath=\"url(#clip0_737_190)\">\n            <path\n                d=\"M10.7125 1.79904L7.78319 7.7382L1.22918 8.69367C0.053853 8.86413 -0.417174 10.313 0.435161 11.1429L5.17683 15.7632L4.05534 22.29C3.85347 23.4698 5.09609 24.3535 6.13683 23.8018L12 20.72L17.8632 23.8018C18.9039 24.349 20.1465 23.4698 19.9447 22.29L18.8232 15.7632L23.5648 11.1429C24.4172 10.313 23.9461 8.86413 22.7708 8.69367L16.2168 7.7382L13.2875 1.79904C12.7626 0.740394 11.2419 0.726937 10.7125 1.79904Z\"\n                fill={props.color ?? \"#23292F\"}/>\n            <path\n                d=\"M11.1417 5.55658L9.18879 9.69357L4.81945 10.3591C4.0359 10.4778 3.72188 11.4871 4.29011 12.0651L7.45122 15.2835L6.70356 19.8298C6.56898 20.6516 7.39739 21.2671 8.09122 20.8828L12 18.7362L15.9088 20.8828C16.6026 21.264 17.431 20.6516 17.2964 19.8298L16.5488 15.2835L19.7099 12.0651C20.2781 11.4871 19.9641 10.4778 19.1805 10.3591L14.8112 9.69357L12.8583 5.55658C12.5084 4.81917 11.4946 4.80979 11.1417 5.55658Z\"\n                fill={props.fillColor ?? \"#F1F7FF\"}/>\n        </g>\n    </svg>;\n}\n", "import React from \"react\";\nimport {ViewTitle} from \"@root/Frontend/Console/components/ViewTitle\";\nimport {Route, Switch, Redirect, withRouter} from \"react-router-dom\";\nimport {BreadcrumbNavigation, BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {Container} from \"react-grid-system\";\nimport i18next from \"i18next\";\nimport {WorldsView} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldsView\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {WorldViewWithRouter} from \"@root/Frontend/Console/Views/Analytics/World/WorldView\";\nimport {SequencesListWithRouter} from \"@root/Frontend/Console/Views/Analytics/SequencesList/SequencesList\";\nimport {RouteComponentProps} from \"react-router\";\nimport {SequenceViewWithRouter} from \"@root/Frontend/Console/Views/Analytics/SequenceView/SequenceView\";\nimport {StepsListWithRouter} from \"@root/Frontend/Console/Views/Analytics/StepsList/StepList\";\nimport {StepViewWithRouter} from \"@root/Frontend/Console/Views/Analytics/StepView/StepView\";\nimport {AttemptViewWithRouter} from \"@root/Frontend/Console/Views/Analytics/AttemptView/AttemptView\";\nimport {AttemptListViewWithRouter} from \"@root/Frontend/Console/Views/Analytics/AttemptsList/AttemptListView\";\n\nexport class Analytics extends SmartComponent<RouteComponentProps> {\n    static readonly BASE_PATH: string = \"/Console/Analytics\";\n    breadcrumbsNavigationRef: React.RefObject<BreadcrumbNavigation> = React.createRef();\n\n    // this will allow our views to update the breadcrumb navigation\n    updateBreadcrumbsNavigation(levels: BreadcrumbsLevel[]){\n        if(!this.breadcrumbsNavigationRef.current)\n            return;\n\n        this.breadcrumbsNavigationRef.current?.setState({levels: levels});\n    }\n\n    render(){\n        // default route path for analytics is .../Worlds\n        if (window.location.pathname === Analytics.BASE_PATH ||\n            window.location.pathname === Analytics.BASE_PATH + \"/\") {\n            return <Redirect to={Analytics.BASE_PATH + \"/Worlds\"}/>\n        }\n\n        return <>\n            <ViewTitle>{i18next.t(\"Analytics\")}</ViewTitle>\n            <Container fluid style={{height: \"calc(100% - 72px)\"}}>\n                <>\n                    <BreadcrumbNavigation ref={this.breadcrumbsNavigationRef} />\n                    <div style={{height: \"calc(100% - 24px)\", width: \"100%\"}}>\n                        <Switch>\n                            <Route exact path={Analytics.BASE_PATH + \"/Worlds\"}>\n                                <WorldsView viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                            </Route>\n                            <Route exact path={Analytics.BASE_PATH + \"/Worlds/:worldID\"}>\n                                <WorldViewWithRouter viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                            </Route>\n                            <Route exact path={Analytics.BASE_PATH + \"/Worlds/:worldID/Sequences\"}>\n                                <SequencesListWithRouter viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                            </Route>\n                            <Route exact path={Analytics.BASE_PATH + \"/Worlds/:worldID/Sequences/:sequenceID\"}>\n                                <SequenceViewWithRouter viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                            </Route>\n                            <Route exact path={Analytics.BASE_PATH + \"/Worlds/:worldID/Sequences/:sequenceID/Attempts\"}>\n                                <AttemptListViewWithRouter viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                            </Route>\n                            <Route exact path={Analytics.BASE_PATH + \"/Worlds/:worldID/Sequences/:sequenceID/Attempts/:attemptID\"}>\n                                <AttemptViewWithRouter viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                            </Route>\n                            <Route exact path={Analytics.BASE_PATH + \"/Worlds/:worldID/Sequences/:sequenceID/Steps\"}>\n                                <StepsListWithRouter viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                            </Route>\n                            <Route exact path={Analytics.BASE_PATH + \"/Worlds/:worldID/Sequences/:sequenceID/Steps/:stepID\"}>\n                                <StepViewWithRouter viewDidMount={this.updateBreadcrumbsNavigation.bind(this)} />\n                            </Route>\n                        </Switch>\n                    </div>\n                </>\n            </Container>\n        </>\n    }\n}\n\nexport const AnalyticsWithRouter = withRouter(Analytics);", "import React from \"react\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport i18next from \"i18next\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Box, styled} from \"@mui/material\";\nimport {AttemptsPerWorldGraph} from \"@root/Frontend/Console/widgets/AttemptsPerWorldGraph\";\nimport {ViewSubtitle} from \"@root/Frontend/Console/components/ViewSubtitle\";\nimport {FILTER_OS_LIST, FiltersInterface, FiltersRow} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {DataSourceGroups} from \"@root/Frontend/DataSources/DataSourceGroups\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {Group} from \"@backend/Types/Group\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {WorldsList} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldsList\";\nimport {WorldsAnalyticsSummary} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldsAnalyticsSummary\";\nimport isEqual from \"lodash/isEqual\";\n\nconst WorldViewContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n});\n\nconst FiltersContainer = styled(Box)({\n    position: \"absolute\",\n    display: \"flex\",\n    gap: \"12px\",\n    right: \"16px\",\n    top: \"-12px\"\n});\n\nexport const TitleWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    flexWrap: \"wrap\",\n    margin: \"12px 6px\"\n});\n\ninterface WorldsListState {\n    groupsWorldIDs: bigint[] | null;\n    filters: FiltersInterface;\n    groupIDs: bigint[];\n}\n\nexport class WorldsView extends RouterView {\n    private readonly app: AppConsole = AppConsole.getInstance();\n\n    private readonly dataSourceGroups: DataSourceGroups = this.app.dataSourceGroups;\n    private readonly dataSourcePeers: DataSourcePeers = this.app.dataSourcePeers;\n\n    static worldsLevel(): BreadcrumbsLevel {\n        return {\n            link: Analytics.BASE_PATH + \"/Worlds\",\n            async getName(): Promise<string> {\n                return i18next.t(\"Worlds\")\n            }\n        }\n    }\n\n    state: WorldsListState = {\n        filters: {\n            filterDate: FilterDateOptions.All_TIME,\n            filterOS: FILTER_OS_LIST,\n            selectedGroupID: this.app.currentPeerID\n        },\n        groupsWorldIDs: null,\n        groupIDs: []\n    }\n\n    getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [WorldsView.worldsLevel()];\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        const currentPeer: Peer = await this.dataSourcePeers.getPeer(this.app.currentPeerID);\n        const groupIDs: bigint[] = currentPeer.group ? Object.keys(currentPeer.group).map((groupIDStr: string) =>\n            UtilsShared.safelyConvertStringToBigInt(groupIDStr)) : [];\n\n        this.setState({\n            groupIDs,\n            groupsWorldIDs: currentPeer.worlds\n        });\n    }\n\n    private async handleChangeFilters(filters: FiltersInterface) {\n        if (isEqual(filters, this.state.filters))\n            return;\n\n        this.setState({ filters });\n\n        if (filters.selectedGroupID === undefined || filters.selectedGroupID === this.state.filters.selectedGroupID)\n            return;\n\n        const currentPeer: Peer = await this.dataSourcePeers.getPeer(this.app.currentPeerID);\n\n        // My Worlds \u2192 only show the peer\u2019s own worlds or shared with him\n        if (filters.selectedGroupID === this.app.currentPeerID) {\n            this.setState({ groupsWorldIDs: currentPeer.worlds });\n            return;\n        }\n\n        // any group -> show only the worlds shared and own to that group\n        const group: Group = await this.dataSourceGroups.getGroup(filters.selectedGroupID);\n        this.setState({ groupsWorldIDs: group.Worlds });\n    }\n    render() {\n        if (!this.state.groupsWorldIDs)\n            return <CenteredLoading />;\n\n        return (\n            <WorldViewContainer>\n                <FiltersContainer>\n                    <FiltersRow\n                        filters={this.state.filters}\n                        handleOnChangeFilter={(filters: FiltersInterface) => this.handleChangeFilters(filters)}\n                        groupIDs={this.state.groupIDs}\n                    />\n                </FiltersContainer>\n                <WorldsAnalyticsSummary worldIDs={this.state.groupsWorldIDs} />\n                <Box style={{display: \"flex\", flexDirection: \"column\"}}>\n                    <TitleWrapper>\n                        <ViewSubtitle style={{margin: \"0 20px 0 0\"}}>\n                            {i18next.t(\"Sequence Attempts per World\")}\n                        </ViewSubtitle>\n                    </TitleWrapper>\n                    <AttemptsPerWorldGraph worldIDs={this.state.groupsWorldIDs} filters={this.state.filters} />\n                </Box>\n                <WorldsList worldIDs={this.state.groupsWorldIDs} />\n            </WorldViewContainer>\n        )\n    }\n}\n", "import React, {useEffect, useState} from \"react\"\nimport {ViewSubtitle} from \"@root/Frontend/Console/components/ViewSubtitle\";\nimport i18next from \"i18next\";\nimport {SearchBar} from \"@root/react-components/src/inputs/SearchBar\";\nimport {ListView, ListWrapper} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {NavLink} from \"react-router-dom\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {Box, styled} from \"@mui/material\";\nimport {DataSourceWorlds} from \"@root/Frontend/DataSources/DataSourceWorlds\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {World} from \"@backend/Types/World\";\nimport DefaultWorldItemActions from \"@root/Frontend/Console/Views/Analytics/WorldsList/DefaultWorldItemActions\";\nimport {WorldItem} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldItem\";\nimport {dark, lightGrey, white} from \"@root/react-components/src/values/colors/colors\";\n\nconst HeaderContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent:\"space-between\",\n    alignItems: \"end\",\n    paddingTop: \"12px\",\n    paddingBottom: \"12px\"\n});\n\ninterface WorldListProps {\n    worldIDs: bigint[];\n}\n\nexport function WorldsList(props: WorldListProps) {\n    const dataSourceWorlds: DataSourceWorlds = AppConsole.getInstance().dataSourceWorlds;\n\n    const [search, setSearch] = useState<string>(\"\");\n    const [worldTitlesByID, setWorldTitlesByID] = useState<Map<bigint, string>>(new Map());\n\n    useEffect(() => {\n        getAllWorldTitlesByID(props.worldIDs).then((newWorldTitlesByID: Map<bigint, string>) =>\n            setWorldTitlesByID(newWorldTitlesByID));\n    }, [props.worldIDs, search]);\n\n    async function getAllWorldTitlesByID(worldIDs: bigint[]): Promise<Map<bigint, string>> {\n        const worldTitlesByID: Map<bigint, string> = new Map<bigint, string>();\n        for (const worldID of worldIDs) {\n            const world: World = await dataSourceWorlds.getWorld(worldID);\n\n            if (search && !world.Title.value.toLowerCase().includes(search))\n                continue;\n\n            worldTitlesByID.set(worldID, world.Title.value);\n        }\n\n        return worldTitlesByID;\n    }\n\n    return (\n        <Box style={{ paddingBottom: \"12px\" }}>\n            <HeaderContainer>\n                <ViewSubtitle style={{margin: \"24px 0 0px\",}}>{i18next.t(\"Worlds list\")}</ViewSubtitle>\n                <SearchBar\n                    style={{width: \"min(400px, 30%)\", marginLeft: \"8px\"}}\n                    onChange={(searchStr: string) => setSearch(searchStr.toLowerCase())}\n                    placeholder={i18next.t(\"Search\")}\n                />\n            </HeaderContainer>\n            <ListWrapper backgroundColor={white} scrollbarcolor={lightGrey} color={dark} height=\"600px\">\n                <ListView\n                    emptyListMessage={i18next.t(\"No Worlds to display\")}\n                    itemCount={worldTitlesByID?.size ?? 0}\n                >\n                    {(index: number) => {\n                        const worldID: bigint = Array.from(worldTitlesByID?.keys() ?? [])[index];\n                        return <NavLink to={`${Analytics.BASE_PATH}/Worlds/${worldID}`}\n                                        style={{textDecoration: \"none\", color: \"currentcolor\"}}>\n                            <WorldItem\n                                worldID={worldID}\n                                actions={\n                                    <DefaultWorldItemActions worldID={worldID} openInStudioBtn displaySequencesCount/>\n                                }\n                            />\n                        </NavLink>\n                    }}\n                </ListView>\n            </ListWrapper>\n        </Box>\n    )\n}", "import {Box} from \"@mui/material\";\nimport {primaryFontXLarge, secondaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport React, {useEffect, useState} from \"react\";\nimport {getWorldSequences} from \"@root/Frontend/Console/utils/UtilsWorlds\";\n\ninterface DefaultWorldItemActionsProps {\n    worldID: bigint;\n    openInStudioBtn?: boolean;\n    displaySequencesCount?: boolean;\n}\n\nexport default function DefaultWorldItemActions(props: DefaultWorldItemActionsProps) {\n\n    const [sequencesCount, setSequencesCount] = useState<number>(0);\n\n    useEffect(() => {\n        if (props.displaySequencesCount)\n            getWorldSequences(props.worldID, true).then((sequences: bigint[]) => setSequencesCount(sequences.length));\n    }, [props.worldID]);\n\n    return (\n        <>\n            {Boolean(props.displaySequencesCount) &&\n                <Box style={{font: primaryFontXLarge, marginRight: 12}}>\n                    {sequencesCount}&nbsp;\n                    <span style={{font: secondaryFontXLarge}}>\n                        {sequencesCount > 1 ? i18next.t(\"sequences\") : i18next.t(\"sequence\")}\n                    </span>\n                </Box>\n            }\n\n            {props.openInStudioBtn &&\n                <Button\n                    id={`open-in-studio-btn-${props.worldID}`}\n                    className=\"open-in-studio-button\"\n                    sx={{whiteSpace: \"nowrap\"}}\n                    variant=\"outlined\"\n                    onClick={(event: React.MouseEvent) => {\n                        // Open in new tab if it's a user click, but same tab for CI (Integration tests)\n                        const studioWorldURL: string =\n                            `${window.location.origin}/world/${props.worldID}`;\n                        window.open(studioWorldURL, event.isTrusted ? \"_blank\" : \"_self\")?.focus();\n                    }}\n                >\n                    {i18next.t(\"Open in Studio\")}\n                </Button>\n            }\n        </>\n    );\n}", "import React, {useEffect, useState} from \"react\"\nimport LargeNumberDisplay from \"@root/Frontend/Console/components/LargeNumberDisplay\";\nimport i18next from \"i18next\";\nimport {darkenPrimary, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {Box} from \"@mui/material\";\nimport {DataSourceWorlds} from \"@root/Frontend/DataSources/DataSourceWorlds\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {World} from \"@backend/Types/World\";\n\ninterface WorldsAnalyticsSummaryProps {\n    worldIDs: bigint[];\n}\n\nexport function WorldsAnalyticsSummary(props: WorldsAnalyticsSummaryProps) {\n    const dataSourceWorlds: DataSourceWorlds = AppConsole.getInstance().dataSourceWorlds;\n    const [sequenceCount, setSequencesCount] = useState<number>(0);\n\n    useEffect(() => {\n        getWorldsSequenceCount(props.worldIDs).then((count: number) => setSequencesCount(count))\n    }, [props.worldIDs]);\n\n    async function getWorldsSequenceCount(worldIDs: bigint[]): Promise<number> {\n        let sequenceCount: number = 0;\n        for (const worldID of worldIDs) {\n            const world: World = await dataSourceWorlds.getWorld(worldID);\n            sequenceCount += world.Sequences.value.length;\n        }\n\n        return sequenceCount;\n    }\n\n    return (\n        <Box style={{ display: \"flex\", gap: \"32px\", padding: \"16px 0px 24px\" }}>\n            <LargeNumberDisplay title={i18next.t(\"Worlds\")} backgroundColor={darkenPrimary}>\n                <>{props.worldIDs.length}</>\n            </LargeNumberDisplay>\n            <LargeNumberDisplay title={i18next.t(\"Sequences\")} backgroundColor={primary}>\n                <>{sequenceCount}</>\n            </LargeNumberDisplay>\n        </Box>\n    )\n}", "import React, {ReactElement} from \"react\"\nimport {Box, styled} from \"@mui/material\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {primaryFontLarge, secondaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {shadowDark, white} from \"@root/react-components/src/values/colors/colors\";\n\nexport const Container = styled(Box)((props: { background_color: string }) => ({\n    padding: \"24px 32px\",\n    backgroundColor: props.background_color,\n    borderRadius: \"24px\",\n    color: white,\n    boxShadow: shadowDark,\n    flex: 1,\n    [theme.breakpoints.down('sm')]: {\n        padding: \"12px 18px\"\n    },\n}));\n\nconst CountNumber = styled(Box)({\n    font: secondaryFontXLarge,\n    fontSize: \"42px\",\n});\n\nconst Title = styled(Box)({\n    font: primaryFontLarge\n});\n\ninterface LargeNumberDisplayProps {\n    title: string;\n    children: ReactElement;\n    backgroundColor: string;\n}\n\nexport default function LargeNumberDisplay(props: LargeNumberDisplayProps) {\n    return (\n        <Container background_color={props.backgroundColor}>\n            <CountNumber>{props.children}</CountNumber>\n            <Title>{props.title}</Title>\n        </Container>\n    );\n}\n", "import React from \"react\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {TitleWrapper, WorldsView} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldsView\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {AppConsole, SequencesIcon} from \"@root/Frontend/Console/AppConsole\";\nimport {World} from \"@backend/Types/World\";\nimport {NavLink, withRouter} from \"react-router-dom\";\nimport {RouteComponentProps} from \"react-router\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {ViewSubtitle} from \"@root/Frontend/Console/components/ViewSubtitle\";\nimport i18next from \"i18next\";\nimport {Users} from \"@root/react-components/src/icons/Users\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {darkenPrimary, lightDark, lightPrimary, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {ListView, ListWrapper} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {PeerItem} from \"@root/Frontend/Console/Views/Management/Group/PeerItem/PeerItem\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {SequenceItem} from \"@root/Frontend/Console/Views/Analytics/SequencesList/SequenceItem\";\nimport {AttemptsPerSequenceGraph} from \"@root/Frontend/Console/widgets/AttemptsPerSequenceGraph\";\nimport {\n    getWorldGroups,\n    getWorldPeerIDs,\n    getWorldSequences,\n    sortSequences,\n} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {Box, styled} from \"@mui/material\";\nimport EntityItem from \"@root/Frontend/Console/Views/Entities/EntityList/EntityItem\";\nimport {Entities} from \"@root/react-components/src/icons/Entities\";\nimport ManageEntitiesDialog from \"@root/Frontend/Console/Views/Analytics/World/ManageEntitiesDialog\";\nimport {getSequenceLogsCsv} from \"@root/Frontend/Console/utils/UtilsAttempts\";\nimport {FILTER_OS_LIST, FiltersInterface, FiltersRow} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport isEqual from \"lodash/isEqual\";\nimport {ENTITIES_BASE_PATH} from \"@root/Frontend/Console/Views/Entities/Entities\";\nimport {WorldAnalyticsSummary} from \"@root/Frontend/Console/Views/Analytics/World/WorldAnalyticsSummary\";\n\nconst FiltersWrapper = styled(Box)({\n    display: \"flex\",\n    alignItems: \"end\",\n    gap: \"10px\",\n    position: \"absolute\",\n    top: \"-50px\",\n    right: \"16px\",\n    font: primaryFontMedium\n});\n\nconst ListCount = styled(Box)({\n    display: \"flex\",\n    font: primaryFontMedium,\n    alignItems: \"center\",\n});\n\nconst ItemsCount = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    marginRight: \"3px\",\n    \"& svg\": {\n        height: \"18px\",\n        width: \"18px\"\n    }\n});\n\nconst SectionsContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    paddingTop: \"15px\",\n\n    \"@media (max-width: 991px)\": {\n        flexWrap: \"wrap\"\n    }\n});\n\nconst SectionWrapper = styled(Box)({\n    width: \"50%\",\n    height: \"405px\",\n    minWidth: \"400px\",\n    padding: \"0px 15px\",\n\n    \"@media (max-width: 991px)\": {\n        width: \"100%\"\n    }\n});\n\nconst SequenceSectionWrapper = styled(Box)({\n    height: \"405px\",\n    padding: \"0px 15px\",\n    width: \"98%\"\n});\n\nconst SectionHeader = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n});\n\nconst RightHeaderContainer = styled(Box)({\n    display: \"flex\",\n    font: primaryFontMedium,\n    alignItems: \"center\",\n    padding: \"24px 0 12px\",\n    gap: \"8px\"\n});\n\ninterface WorldViewState {\n    isLoading: boolean;\n    entityIDs: bigint[];\n    groupIDS: bigint[];\n    peerIDs: bigint[];\n    sequenceIDs: bigint[];\n    openManageEntitiesDialog: boolean;\n    csvExportURL: string;\n    filters: FiltersInterface;\n}\n\nexport class WorldView extends RouterView<RouteComponentProps<{ worldID: string }>> {\n    private readonly app: AppConsole = AppConsole.getInstance();\n\n    static getLevelForWorld(worldID: bigint): BreadcrumbsLevel {\n        return {\n            link: `${Analytics.BASE_PATH}/Worlds/${worldID}`,\n            async getName()  {\n                const world: World = await AppConsole.getInstance().dataSourceWorlds.getWorld(worldID);\n                return world ? world.Title.value : worldID.toString();\n            }\n        }\n    }\n    worldID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.worldID);\n    state: WorldViewState = {\n        isLoading: true,\n        entityIDs: [],\n        groupIDS: [],\n        sequenceIDs: [],\n        peerIDs: [],\n        openManageEntitiesDialog: false,\n        csvExportURL: \"\",\n        filters: {\n            filterDate: FilterDateOptions.All_TIME,\n            filterOS: FILTER_OS_LIST,\n            selectedEntity: BigInt(0),\n            selectedPeer: BigInt(0),\n            selectedGroupID: BigInt(0)\n        }\n    }\n\n    getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [\n            WorldsView.worldsLevel(),\n            WorldView.getLevelForWorld(this.worldID)\n        ];\n    }\n\n    override async componentDidMount(): Promise<void> {\n        super.componentDidMount();\n\n\n        if (!this.worldID)\n            return this.props.history.push(`${Analytics.BASE_PATH}/Worlds`);\n\n        const world: World = await this.app.dataSourceWorlds.getWorld(this.worldID);\n\n        // redirect to Worlds List if world doesn't exist\n        if (!world)\n            return this.props.history.push(Analytics.BASE_PATH + \"/Worlds\");\n\n        // get all the peers and groups that have access to the world\n        const peerIDs: bigint[] = [...await getWorldPeerIDs(this.worldID)];\n        const groupIDS: bigint[] = [...await getWorldGroups(this.worldID)];\n\n        const unorderedSequenceIDs: bigint[] = await getWorldSequences(this.worldID, true);\n        const sequenceIDs: bigint[] = await sortSequences(this.worldID, new Set(unorderedSequenceIDs));\n\n        const csvExportURL: string = await this.getCsvExportURL();\n\n        const searchParams: URLSearchParams = new URLSearchParams(window.location.search);\n        // Retrieve the peerID from the URL if it exists\n        const selectedPeer: bigint = UtilsShared.safelyConvertStringToBigInt(searchParams.get(\"peerID\") ?? \"0\");\n        // Retrieve the groupID from the URL if it exists\n        const selectedGroupID: bigint = UtilsShared.safelyConvertStringToBigInt(searchParams.get(\"groupID\") ?? \"0\");\n\n        this.setState((prevState: WorldViewState) => ({\n            isLoading: false,\n            peerIDs,\n            groupIDS,\n            sequenceIDs,\n            entityIDs: world.Entities.value,\n            csvExportURL,\n            filters: { ...prevState.filters, selectedPeer, selectedGroupID }\n        }));\n    }\n\n    async componentDidUpdate(prevProps: Readonly<object>, prevState: Readonly<WorldViewState>) {\n        if (!isEqual(prevState.filters, this.state.filters))\n            this.setState({ csvExportURL: await this.getCsvExportURL() });\n    }\n\n    async closeEntitiesDialog(): Promise<void> {\n        const world: World = await AppConsole.getInstance().dataSourceWorlds.getWorld(this.worldID);\n        this.setState({openManageEntitiesDialog: false, entityListIDs: world.Entities.value});\n    }\n\n    private async getCsvExportURL(): Promise<string> {\n        URL.revokeObjectURL(this.state.csvExportURL);\n        const blob: Blob = await getSequenceLogsCsv(this.worldID, this.state.filters);\n        return window.URL.createObjectURL(blob);\n    }\n\n    render() {\n        if (this.state.isLoading)\n            return <CenteredLoading />;\n\n        return (\n            <>\n                <FiltersWrapper>\n                    <FiltersRow\n                        filters={this.state.filters}\n                        handleOnChangeFilter={(filters: FiltersInterface) => this.setState({ filters })}\n                        allEntities={this.state.entityIDs}\n                        peerIDs={this.state.peerIDs}\n                        groupIDs={this.state.groupIDS}\n                        onlyGroups\n                    />\n                </FiltersWrapper>\n                <Box style={{paddingBottom: \"24px\"}}>\n                    <WorldAnalyticsSummary sequenceIDs={this.state.sequenceIDs} worldID={this.worldID} />\n                    <Box style={{display: \"flex\", flexDirection: \"column\"}}>\n                        <TitleWrapper>\n                            <ViewSubtitle style={{margin: \"0 20px 0 0\"}}>\n                                {i18next.t(\"Attempts per Sequence\")}\n                            </ViewSubtitle>\n                        </TitleWrapper>\n                        <AttemptsPerSequenceGraph\n                            worldID={this.worldID}\n                            sequencesIDs={this.state.sequenceIDs}\n                            filters={this.state.filters}\n                        />\n                    </Box>\n                    <SequenceSectionWrapper>\n                            <SectionHeader>\n                                <ViewSubtitle>{i18next.t(\"Sequences\")}</ViewSubtitle>\n                                <RightHeaderContainer>\n                                    {this.state.csvExportURL &&\n                                        <a href={this.state.csvExportURL}\n                                           download={`${this.worldID}_${Date.now()}.csv`}\n                                           style={{textDecoration: \"none\"}}\n                                        >\n                                            <Button size={\"small\"} variant=\"outlined\">\n                                                {i18next.t(\"CSV Export\")}\n                                            </Button>\n                                        </a>\n                                    }\n                                    <ListCount>\n                                        <ItemsCount>{this.state.sequenceIDs.length}&nbsp;<SequencesIcon /></ItemsCount>\n                                        <NavLink style={{textDecoration: \"none\"}}\n                                                 to={Analytics.BASE_PATH + \"/Worlds/\" + this.worldID + \"/Sequences\"}\n                                        >\n                                            <Button\n                                                id=\"view-all-sequences\"\n                                                size=\"small\"\n                                                sx={{backgroundColor: darkenPrimary}}\n                                            >\n                                                {i18next.t(\"View All\")}\n                                            </Button>\n                                        </NavLink>\n                                    </ListCount>\n                                </RightHeaderContainer>\n                            </SectionHeader>\n                            <ListWrapper backgroundColor={darkenPrimary} scrollbarcolor={white}>\n                                <ListView\n                                    emptyListMessage={i18next.t(\"No sequences to display\")}\n                                    itemCount={this.state.sequenceIDs.length}\n                                >\n                                    {index => {\n                                        const sequenceID = this.state.sequenceIDs[index];\n                                        return <SequenceItem sequenceID={sequenceID} worldID={this.worldID}/>\n                                    }}\n                                </ListView>\n                            </ListWrapper>\n                    </SequenceSectionWrapper>\n                    <SectionsContainer>\n                        <SectionWrapper>\n                            <SectionHeader>\n                                <ViewSubtitle>{i18next.t(\"Entities\")}</ViewSubtitle>\n                                <ListCount>\n                                    <ItemsCount>\n                                        {this.state.entityIDs.length}&nbsp;\n                                        <Entities color={lightDark}/>\n                                    </ItemsCount>\n                                        <Button\n                                            id=\"manage-entities\"\n                                            size=\"small\"\n                                            onClick={()=> this.setState({openManageEntitiesDialog: true})}\n                                        >\n                                            {i18next.t(\"Manage\")}\n                                        </Button>\n                                </ListCount>\n                            </SectionHeader>\n                            <ListWrapper backgroundColor={primary}>\n                                <ListView\n                                    emptyListMessage={i18next.t(\"No Entities to display\")}\n                                    itemCount={this.state.entityIDs.length}\n                                >\n                                    {index => {\n                                        const itemID: bigint = this.state.entityIDs[index];\n                                        return (\n                                            <NavLink\n                                                style={{textDecoration: \"none\"}}\n                                                to={`${ENTITIES_BASE_PATH}/Entity/${itemID}`}\n                                            >\n                                                <EntityItem entityID={itemID} />\n                                            </NavLink>\n                                        );\n                                    }}\n                                </ListView>\n                            </ListWrapper>\n                        </SectionWrapper>\n                        <SectionWrapper>\n                            <SectionHeader>\n                                <ViewSubtitle>{i18next.t(\"Users\")}</ViewSubtitle>\n                                <ListCount>\n                                    <ItemsCount> {this.state.peerIDs.length}&nbsp;<Users /> </ItemsCount>\n                                </ListCount>\n                            </SectionHeader>\n                            <ListWrapper backgroundColor={lightPrimary}>\n                                <ListView\n                                    emptyListMessage={i18next.t(\"No users to display\")}\n                                    itemCount={this.state.peerIDs.length}\n                                >\n                                    {index =>\n                                        <PeerItem peerID={this.state.peerIDs[index]}\n                                                  groupID={BigInt(0)}\n                                                  canBeEdited={false}\n                                                  showInfo={false}\n                                        />\n                                    }\n                                </ListView>\n                            </ListWrapper>\n                        </SectionWrapper>\n                    </SectionsContainer>\n                    {this.state.openManageEntitiesDialog &&\n                        <ManageEntitiesDialog\n                            worldID={this.worldID}\n                            originalWorldEntities={this.state.entityIDs}\n                            onClose={() => this.closeEntitiesDialog()}\n                        />\n                    }\n                </Box>\n            </>\n        );\n    }\n}\n\nexport const WorldViewWithRouter = withRouter(WorldView);\n", "import React from 'react';\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {AppConsole, StepsIcon} from \"@root/Frontend/Console/AppConsole\";\nimport i18next from \"i18next\";\nimport {ListViewItem} from \"@root/Frontend/Console/components/ListView/ListViewItem\";\nimport {DataSourceSequences, Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {NavLink} from \"react-router-dom\";\nimport {Tooltip} from '@root/react-components/src/misc/Tooltip';\nimport {Box, styled} from \"@mui/material\";\nimport {OldVersion} from \"@root/react-components/src/icons/OldVersion\";\nimport {lightWhite, yellow, green} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge, primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Attempt} from \"@root/react-components/src/icons/Attempt\";\nimport {Clock} from \"@root/react-components/src/icons/Clock\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {timestampToString} from \"@utils/utils\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {canPeerEditWorld} from \"@root/Frontend/Console/utils/UtilsWorlds\";\n\nconst SubtitlesContainer = styled(Box)({\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    alignItems: \"center\",\n    gap: \"8px\",\n});\n\nconst SubtitleWrapper = styled(Box)({\n   display: \"flex\",\n   alignItems: \"center\",\n});\n\nconst SequenceStatusTag = styled(Box)((props: {background_color: string}) => ({\n    backgroundColor: props.background_color,\n    borderRadius: \"12px\",\n    color: lightWhite,\n    font: primaryFontMedium,\n    padding: \"3px 10px\",\n    minWidth: \"30px\",\n    display: \"inline-flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    whiteSpace: \"nowrap\",\n    textAlign: \"center\"\n}));\n\ninterface SequenceItemProps {\n    worldID: bigint;\n    sequenceID: bigint;\n}\n\ninterface SequenceItemState {\n    sequenceTitle: string;\n    isNotYetPublished: boolean;\n    attemptCount: number;\n    versionsCount: number;\n    stepsCount: number;\n    publishedBy: string;\n    publishedOn: bigint;\n}\n\nexport class SequenceItem extends SmartComponent {\n    props: SequenceItemProps;\n    state: SequenceItemState = {\n        sequenceTitle: \"\",\n        isNotYetPublished: false,\n        attemptCount: 0,\n        versionsCount: 0,\n        stepsCount: 0,\n        publishedBy: \"\",\n        publishedOn: BigInt(0)\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        const app: AppConsole = AppConsole.getInstance();\n\n        let versionsCount: number = 0;\n        let attemptCount: number = 0;\n        let sequenceID: bigint = this.props.sequenceID;\n        let sequence: Sequence = await app.dataSourceSequences.getSequence(this.props.worldID, sequenceID);\n\n        let publishedBy: string = \"\";\n        let publishedOn: bigint = BigInt(0);\n        if (sequence.PeerPublisher.value) {\n            const peerPublisher: Peer = await app.dataSourcePeers.getPeer(sequence.PeerPublisher.value);\n            publishedBy = peerPublisher.fullName;\n            publishedOn = sequence.PeerPublisher.timestamp\n        }\n\n        const sequenceTitle: string = sequence.Title.value;\n        const isNotYetPublished: boolean = !sequence.ChildSequence.value;\n\n        while (sequenceID) {\n            ++versionsCount;\n            const attemptIDs: AttemptLogs[] =\n                await app.dataSourceAttemptLogs.getAllAttemptLogs(this.props.worldID, sequenceID);\n            attemptCount += attemptIDs.length;\n            sequence = await app.dataSourceSequences.getSequence(this.props.worldID, sequenceID);\n            sequenceID = sequence.ParentSequence.value;\n        }\n\n        this.setState({\n            sequenceTitle,\n            isNotYetPublished,\n            attemptCount,\n            versionsCount,\n            stepsCount: sequence.Steps.value.length,\n            publishedBy,\n            publishedOn\n        });\n    }\n\n    render(): JSX.Element {\n        if (this.state.isNotYetPublished)\n            return (\n                <Tooltip followCursor\n                    title={i18next.t(\"You need at least one published version\" +\n                        \" of this sequence in order to visualize it\")}\n                >\n                    <span>\n                        <ListViewItem\n                            id={this.props.sequenceID.toString()}\n                            className=\"draft-sequence-item\"\n                            loading={this.state.attemptCount === null}\n                            title={this.state.sequenceTitle}\n                            subtitle={\n                                <SubtitlesContainer>\n                                    <Box style={{ display: \"flex\", alignItems: \"center\"}}>\n                                        <Clock/>\n                                        {`${i18next.t(\"Creation Date\")}: `}&nbsp;\n                                        <span style={{font: primaryFontLarge}}>\n                                        {timestampToString(\n                                            UtilsShared.getTimestampOfRandomID(this.props.sequenceID), false)\n                                        }\n                                        </span>\n                                    </Box>\n                                </SubtitlesContainer>\n                            }\n                            children={\n                                <SequenceStatusTag background_color={yellow}>\n                                    {i18next.t(\"Draft\")}\n                                </SequenceStatusTag>\n                            }\n                        />\n                    </span>\n                </Tooltip>\n            )\n\n        return (\n            <NavLink\n                className=\"sequence-item\"\n                style={{textDecoration: \"none\"}}\n                to={`${Analytics.BASE_PATH}/Worlds/${this.props.worldID}/Sequences/${this.props.sequenceID}`}\n            >\n                <ListViewItem\n                    id={this.props.sequenceID.toString()}\n                    className=\"published-sequence-item\"\n                    loading={this.state.attemptCount === null || !this.state.sequenceTitle.length}\n                    title={this.state.sequenceTitle}\n                    subtitle={\n                        <SubtitlesContainer>\n                            <SubtitleWrapper>\n                                <StepsIcon />\n                                {this.state.stepsCount}&nbsp;\n                                {this.state.stepsCount > 1 ? i18next.t(\"Steps\").toLowerCase()\n                                                           : i18next.t(\"Step\").toLowerCase()}\n                            </SubtitleWrapper>\n                            <SubtitleWrapper>\n                                <Attempt />\n                                {this.state.attemptCount}&nbsp;\n                                {this.state.attemptCount > 1 ? i18next.t(\"attempts\") : i18next.t(\"attempt\")}\n                            </SubtitleWrapper>\n                            <SubtitleWrapper>\n                                <OldVersion />\n                                {this.state.versionsCount}&nbsp;\n                                {this.state.versionsCount > 1 ? i18next.t(\"versions\") : i18next.t(\"version\")}\n                            </SubtitleWrapper>\n                            <SubtitleWrapper style={{ display: \"flex\", alignItems: \"center\"}}>\n                                <Clock/>\n                                { `${i18next.t(\"Published by\")}`}&nbsp;\n                                <span style={{font: primaryFontLarge}}> {this.state.publishedBy} </span>&nbsp;\n                                {i18next.t(\"on\")}&nbsp;\n                                <span style={{font: primaryFontLarge}}>\n                                    {` ${timestampToString(this.state.publishedOn, false)}`}\n                                </span>\n                            </SubtitleWrapper>\n                        </SubtitlesContainer>\n                    }\n                    children={\n                        <SequenceStatusTag background_color={green}>\n                            {i18next.t(\"Published\")}\n                        </SequenceStatusTag>\n                    }\n                />\n            </NavLink>\n        )\n    }\n}\n", "import React, {ReactElement} from \"react\";\n\nexport function OldVersion(): ReactElement {\n    return (\n        <svg width=\"18\" height=\"24\" viewBox=\"0 0 18 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <g clipPath=\"url(#clip0_3141_278)\">\n                <rect x=\"1\" y=\"1\" width=\"16\" height=\"22\" rx=\"2\" stroke=\"#23292F\" strokeWidth=\"2\"/>\n                <path d=\"M9 7C10.1867 7 11.3467 7.35189 12.3334 8.01118C13.3201 8.67047 14.0892 9.60754 14.5433 10.7039C14.9974 11.8003 15.1162 13.0067 14.8847 14.1705C14.6532 15.3344 14.0818 16.4035 13.2426 17.2426C12.4035 18.0818 11.3344 18.6532 10.1705 18.8847C9.00666 19.1162 7.80026 18.9974 6.7039 18.5433C5.60754 18.0892 4.67047 17.3201 4.01118 16.3334C3.35189 15.3467 3 14.1867 3 13L6 13C6 13.5933 6.17595 14.1734 6.50559 14.6667C6.83524 15.1601 7.30377 15.5446 7.85195 15.7716C8.40013 15.9987 9.00333 16.0581 9.58527 15.9424C10.1672 15.8266 10.7018 15.5409 11.1213 15.1213C11.5409 14.7018 11.8266 14.1672 11.9424 13.5853C12.0581 13.0033 11.9987 12.4001 11.7716 11.8519C11.5446 11.3038 11.1601 10.8352 10.6667 10.5056C10.1734 10.1759 9.59334 10 9 10L9 7Z\" fill=\"#23292F\"/>\n                <path d=\"M3.64558 8.91931C3.34205 8.72217 3.34205 8.27783 3.64558 8.08069L8.22765 5.10454C8.56028 4.88849 9 5.12721 9 5.52386L9 11.4761C9 11.8728 8.56028 12.1115 8.22765 11.8955L3.64558 8.91931Z\" fill=\"#23292F\"/>\n                <path d=\"M3 13H6C6 13 6.00211 11 4.5 11C2.99789 11 3 13 3 13Z\" fill=\"#23292F\"/>\n            </g>\n            <defs> <clipPath id=\"clip0_3141_278\"> <rect width=\"18\" height=\"24\" fill=\"white\"/> </clipPath> </defs>\n        </svg>\n    );\n}\n", "import React from 'react';\n\nexport function Attempt(props: { fill?:string}) {\n    return (\n        <svg width=\"22\" height=\"24\" viewBox=\"0 0 22 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M-3.05176e-05 4C-3.05176e-05 1.79086 1.79083 0 3.99997 0H18C20.2091 0 22 1.79086 22 4V20C22 22.2091 20.2091 24 18 24H3.99997C1.79083 24 -3.05176e-05 22.2091 -3.05176e-05 20V4ZM16.6022 14.4944C17.138 13.8515 17.0788 12.8851 16.4701 12.3359C15.8614 11.7867 14.9336 11.8627 14.3978 12.5056C12.8208 14.398 10.8566 16.809 9.61528 18.3387L7.69096 15.5862C7.21664 14.9078 6.29893 14.7669 5.64118 15.2716C4.98344 15.7763 4.83474 16.7354 5.30905 17.4138L8.18028 21.5207C8.80505 22.4143 10.088 22.4677 10.7954 21.5925C11.5085 20.7103 14.43 17.1011 16.6022 14.4944ZM3.5 4.5C3.5 3.67157 4.17157 3 5 3H17C17.8284 3 18.5 3.67157 18.5 4.5C18.5 5.32843 17.8284 6 17 6H5C4.17157 6 3.5 5.32843 3.5 4.5ZM5 8C4.17157 8 3.5 8.67157 3.5 9.5C3.5 10.3284 4.17157 11 5 11H17C17.8284 11 18.5 10.3284 18.5 9.5C18.5 8.67157 17.8284 8 17 8H5Z\" fill=\"#23292F\"/>\n        </svg>\n    )\n}", "import React from \"react\";\nimport {Bar, BarChart, CartesianGrid, Label, ResponsiveContainer, Tooltip, XAxis, YAxis} from \"recharts\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {darkenPrimary, darkenWhite, lighterDark, lightPrimary,\n    lightWhite, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport i18next from \"i18next\";\nimport {FiltersInterface} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {parseAttemptsByFilters} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport isEqual from \"lodash/isEqual\";\nimport {NameType, Payload} from \"recharts/types/component/DefaultTooltipContent\";\nimport {ValueType} from \"recharts/src/component/DefaultTooltipContent\";\nimport {Tooltip as DSTooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {Box, styled} from \"@mui/material\";\nimport {NoDataToDisplay} from \"@root/Frontend/Console/components/NoDataToDisplay\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {timestampToString} from \"@utils/utils\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {NavLink} from \"react-router-dom\";\n\nconst Wrapper = styled(Box)({\n    backgroundColor: lightWhite,\n    width: \"100%\",\n    borderRadius: \"24px\",\n    font: primaryFontLarge,\n    padding: \"24px\",\n    boxSizing: \"border-box\",\n    border: `1px solid ${darkenWhite}`,\n    color: lighterDark,\n    overflowX: \"auto\",\n    overflowY: \"hidden\"\n});\n\nconst TickText = styled('text')({\n    cursor: \"pointer\"\n});\n\ninterface ReChartDataFormat {\n    sequenceID: string;               // sequenceID\n    [versionsIndex: number]: number;  // attempts per versions,\n}\n\ninterface AttemptsPerSequenceGraphState {\n    sequenceTitleBySequenceID: Map<bigint, string>; // only sequence Title (title that every version has)\n    versionsTitleBySequenceID: Map<bigint, string>; // allow us to have all versions \"titles\" - date of creation\n    attemptsCountBySequenceID: Map<bigint, number>;\n    versionsBySequenceID: Map<bigint, bigint[]> | null;\n}\n\ninterface AttemptsPerSequenceGraphProps {\n    worldID: bigint;\n    sequencesIDs: bigint[];\n    filters: FiltersInterface;\n}\n\nexport class AttemptsPerSequenceGraph extends SmartComponent {\n    static readonly HEIGHT = 500;\n    static readonly MAX_TICK_LENGTH: number = 15;\n    static readonly BARS_COLORS: string[] = [lightPrimary, primary, darkenPrimary, lighterDark];\n\n    props: AttemptsPerSequenceGraphProps;\n    state: AttemptsPerSequenceGraphState = {\n        sequenceTitleBySequenceID: new Map<bigint, string>(),\n        versionsTitleBySequenceID: new Map<bigint, string>(),\n        attemptsCountBySequenceID: new Map<bigint, number>(),\n        versionsBySequenceID: null\n    };\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        await this.reloadAllSequenceAttemptLogs();\n    }\n\n    override async componentDidUpdate(prevProps: Readonly<AttemptsPerSequenceGraphProps>) {\n        if (!isEqual(this.props.filters, prevProps.filters))\n            await this.reloadAllSequenceAttemptLogs();\n    }\n\n    async reloadAllSequenceAttemptLogs() {\n        const app: AppConsole = AppConsole.getInstance();\n        const dataSourceAttemptLogs: DataSourceAttemptLogs = app.dataSourceAttemptLogs;\n\n        const sequenceTitleBySequenceID: Map<bigint, string> = new Map();\n        const versionsTitleBySequenceID: Map<bigint, string> = new Map();\n        const attemptsCountBySequenceID: Map<bigint, number> = new Map();\n        const versionsBySequenceID: Map<bigint, bigint[]> = new Map();\n        const currentPeerID: bigint = AppConsole.getInstance().currentPeerID;\n\n        for (const sequenceID of this.props.sequencesIDs) {\n            const sequence: Sequence = await app.dataSourceSequences.getSequence(this.props.worldID, sequenceID);\n\n            // we do not consider Draft sequences\n            if (!sequence.PeerPublisher.value)\n                continue;\n\n            sequenceTitleBySequenceID.set(sequenceID, sequence.Title.value);\n            const versions: bigint[] = [];\n            let parentSequenceID: bigint = sequenceID;\n            while (parentSequenceID) {\n                const attemptLogs: AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(this.props.worldID,\n                                                                                                 parentSequenceID,\n                                                                                                 true);\n\n                const version: Sequence = await app.dataSourceSequences.getSequence(this.props.worldID,\n                                                                                    parentSequenceID);\n\n                versionsTitleBySequenceID.set(parentSequenceID, timestampToString(version.PeerPublisher.timestamp, true));\n                versions.push(parentSequenceID);\n                const filteredAttempts: AttemptLogs[] = await parseAttemptsByFilters(attemptLogs, this.props.filters);\n                attemptsCountBySequenceID.set(parentSequenceID, filteredAttempts.length);\n\n                parentSequenceID = version.ParentSequence.value;\n            }\n            versionsBySequenceID.set(sequenceID, versions);\n        }\n\n        this.setState({\n            sequenceTitleBySequenceID,\n            versionsTitleBySequenceID,\n            attemptsCountBySequenceID,\n            versionsBySequenceID\n        });\n    }\n\n    private getDataForReCharts(): {reChartData: ReChartDataFormat[], highestVersionCount: number} {\n        let highestVersionCount: number = 0;\n        const chartData: ReChartDataFormat[] = [];\n\n        for (const [sequenceID, versions] of this.state.versionsBySequenceID?.entries() ?? []) {\n            const versionsData: ReChartDataFormat = { sequenceID: sequenceID.toString() };\n\n            if (versions.length > highestVersionCount)\n                highestVersionCount = versions.length;\n\n            for (let index: number = 0; index < versions.length; ++index)\n                versionsData[index] = this.state.attemptsCountBySequenceID.get(versions[index]) ?? 0;\n\n            chartData.push(versionsData);\n        }\n\n        return { reChartData: chartData, highestVersionCount };\n    }\n\n    private getTooltipVersionName(sequenceID: bigint, index: number): string {\n        const versionID: bigint[] = this.state.versionsBySequenceID?.get(sequenceID) ?? [];\n        const title: string | undefined = this.state.versionsTitleBySequenceID.get(versionID[index] ?? BigInt(0));\n        return title ?? \"error\";\n    }\n\n    renderGraph(){\n        if (!this.state.versionsBySequenceID)\n            return <CenteredLoading />;\n\n        if (!this.state.versionsBySequenceID.size)\n            return <NoDataToDisplay/>;\n\n        const graphData: {reChartData: ReChartDataFormat[], highestVersionCount: number} = this.getDataForReCharts();\n\n        // minimum 40px per bar\n        return (\n        <Box style={{height: \"100%\", width: \"100%\",minWidth: graphData.reChartData.length * 40}}>\n            <ResponsiveContainer height={AttemptsPerSequenceGraph.HEIGHT - 24} width={\"100%\"}>\n                <BarChart margin={{bottom: 80}} data={graphData.reChartData}>\n                    <CartesianGrid strokeDasharray=\"3 3\" />\n                    <XAxis dataKey={\"sequenceID\"} height={50} interval={0}\n                           angle={-60} textAnchor={\"end\"}\n                           tick={(props: any) => {\n                               const sequenceID: bigint = UtilsShared.safelyConvertStringToBigInt(props.payload.value);\n                               const title: string = this.state.sequenceTitleBySequenceID.get(sequenceID) ?? \"\";\n                               const truncatedTitle: string = title.slice(0, AttemptsPerSequenceGraph.MAX_TICK_LENGTH) +\n                                   (title.length > AttemptsPerSequenceGraph.MAX_TICK_LENGTH ? \"...\" : \"\");\n                               return (\n                                   <NavLink to={`/Console/Analytics/Worlds/${this.props.worldID}/Sequences/${sequenceID}`}>\n                                       <g transform={`translate(${props.x},${props.y})`}>\n                                           <DSTooltip\n                                               title={title.length > AttemptsPerSequenceGraph.MAX_TICK_LENGTH && title}\n                                           >\n                                               <TickText\n                                                   x={0} y={0} dy={16} textAnchor=\"end\" fill=\"#666\" transform=\"rotate(-35)\">\n                                                   {truncatedTitle}\n                                               </TickText>\n                                           </DSTooltip>\n                                       </g>\n                                   </NavLink>\n                               );\n                           }}\n                    />\n                    <YAxis width={50} allowDecimals={false} domain={[0, 'dataMax']}>\n                        <Label style={{textAnchor: \"middle\"}} value={i18next.t(\"Sequence Attempts\") as string}\n                               position={\"insideLeft\"} angle={-90} />\n                    </YAxis>\n                    <Tooltip cursor={false} position={{y: 0}}\n                        // get and display sequence title\n                        labelFormatter={(sequenceID: string) => {\n                            const parsedSequenceID: bigint = UtilsShared.safelyConvertStringToBigInt(sequenceID);\n                            return this.state.sequenceTitleBySequenceID.get(parsedSequenceID);\n                        }}\n                        // get and display version title + attempts count\n                        formatter={(value: string, index: number, itemData: Payload<ValueType, NameType>) => [\n                                value + \" \" + (parseInt(value) > 1 ? i18next.t(\"attempts\") : i18next.t(\"attempt\")),\n                                this.getTooltipVersionName(BigInt(itemData.payload.sequenceID), index)\n                        ]}\n                    />\n                    {Array.from({ length: graphData.highestVersionCount }, (e, index: number) =>\n                        <Bar key={\"bar-\" + index}\n                             dataKey={index}\n                             stackId=\"1\"\n                             fill={AttemptsPerSequenceGraph.BARS_COLORS[\n                                 index % AttemptsPerSequenceGraph.BARS_COLORS.length\n                             ]}\n                             maxBarSize={50}\n                        />\n                    )}\n                </BarChart>\n            </ResponsiveContainer>\n        </Box>\n        );\n    }\n\n    render() {\n        return (\n            <Box>\n                <Wrapper style={{height: AttemptsPerSequenceGraph.HEIGHT}}>{this.renderGraph()}</Wrapper>\n            </Box>\n        );\n    }\n}\n", "import React, {useEffect, useState} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {ListViewItem} from \"@root/Frontend/Console/components/ListView/ListViewItem\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {User} from \"@root/react-components/src/icons/User\";\nimport {Clock} from \"@root/react-components/src/icons/Clock\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {timestampToString} from \"@utils/utils\";\nimport {Entity} from \"@backend/Types/Entity\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {DataSourceEntities} from \"@root/Frontend/DataSources/DataSourceEntities\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Group} from \"@backend/Types/Group\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {primaryFontXLarge,} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Role} from \"@backend/Types/Role\";\nimport {World} from \"@backend/Types/World\";\nimport useIsMounted from \"@root/Frontend/Console/utils/UseIsMounted\";\nimport RenamingEntityDialog from \"@root/Frontend/Console/Views/Entities/EntityList/RenamingEntityDialog\";\n\nconst DialogButtons = styled(Box)({\n    display: \"flex\",\n    gap: \"8px\",\n    paddingTop: \"10px\",\n    justifyContent: \"end\"\n});\n\ninterface EntityItemProps {\n    entityID: bigint;\n    isEntitiesListView?: boolean;\n    onEdit?: () => void;\n    isOwnedByCurrentWorld?: boolean\n    onAdd?: () => void;\n    onRemove?: () => void;\n    onArchive?: () => void;\n}\n\ninterface EntityAttributesState {\n    name: string;\n    owner: string;\n    isArchived: boolean;\n}\n\nexport default function EntityItem(props: EntityItemProps) {\n    const appConsole: AppConsole = AppConsole.getInstance();\n    const dataSourceEntities: DataSourceEntities = appConsole.dataSourceEntities;\n\n    const [openWarningDialog, setOpenWarningDialog] = useState<boolean>(false);\n    const [associationsCount, setAssociationsCount] = useState<number>(0);\n    const [entityAttributes, setEntityAttributes] = useState<EntityAttributesState>({name: \"\", owner: \"\", isArchived: false});\n    const [isRenaming, setIsRenaming] = useState<boolean>(false);\n\n    const isMounted = useIsMounted();\n\n    useEffect(() => {\n        fetchEntityAttributes().then((attribute: EntityAttributesState) => {\n            if (!attribute || !isMounted())\n                return;\n\n            setEntityAttributes({\n                name: attribute.name,\n                owner: attribute.owner,\n                isArchived: attribute.isArchived\n            });\n        });\n\n        if (props.isEntitiesListView)\n            getAssociatedWorldsCount().then((count: number) => {\n                if (!isMounted())\n                    return;\n                setAssociationsCount(count);\n            });\n\n    }, [props.entityID]);\n\n    async function fetchEntityAttributes(): Promise<EntityAttributesState | null> {\n        const entity: Entity | null = await dataSourceEntities.getEntityByID(props.entityID);\n        if (!entity)\n            return null;\n\n        let ownerName: string;\n        if (entity.OwnerType.value === OwnerType.PEER) {\n            const peerOwner: Peer = await appConsole.dataSourcePeers.getPeer(entity.Owner.value);\n            ownerName = peerOwner.fullName;\n        } else {\n            const groupOwner: Group = await appConsole.dataSourceGroups.getGroup(entity.Owner.value);\n            ownerName = groupOwner.Name;\n        }\n\n        return { name: entity.Name.value, owner: ownerName, isArchived: Boolean(entity.ArchivedBy.value) };\n    }\n\n    async function getAssociatedWorldsCount(): Promise<number> {\n        const entity: Entity | null = await dataSourceEntities.getEntityByID(props.entityID);\n        let count: number = 0;\n\n        if (!entity)\n            return count;\n\n        let worlds: bigint[];\n\n        if (entity.OwnerType.value === OwnerType.PEER)\n            worlds = await getPeerEditableWorlds(appConsole.currentPeerID);\n        else {\n            const groupOwner: Group = await appConsole.dataSourceGroups.getGroup(entity.Owner.value);\n            worlds = groupOwner.Worlds;\n        }\n\n        for (const worldID of worlds) {\n            const world: World = await appConsole.dataSourceWorlds.getWorld(worldID);\n            if (world.Entities.value.includes(props.entityID))\n                count++;\n        }\n\n        return count;\n    }\n\n    async function getPeerEditableWorlds(peerID: bigint): Promise<bigint[]> {\n        const peer: Peer = await appConsole.dataSourcePeers.getPeer(peerID);\n\n        let peerWorlds: Set<bigint> = new Set(peer.worlds);\n        // get all the worlds from the peer's groups\n        const peerGroups: string[] = peer.group ? Object.keys(peer.group) : [];\n        for (const groupIDStr of peerGroups) {\n            const groupID: bigint = UtilsShared.safelyConvertStringToBigInt(groupIDStr);\n            if (!groupID)\n                continue;\n\n            const group: Group = await appConsole.dataSourceGroups.getGroup(groupID);\n            if (peer.group && peer.group[groupIDStr] === Role.EDITOR && group.Worlds.length)\n                peerWorlds = new Set([...peerWorlds, ...group.Worlds]);\n        }\n\n        return [...peerWorlds];\n    }\n\n    async function onArchive(): Promise<void> {\n        await dataSourceEntities.archiveEntity(props.entityID);\n        if (!isMounted())\n            return;\n\n        setEntityAttributes((prevState: EntityAttributesState) => ({...prevState, isArchived: true}));\n        setOpenWarningDialog(false);\n        if (props.onArchive)\n            props.onArchive();\n    }\n\n    function renameEntity(newName: string) {\n        if (newName)\n            setEntityAttributes((prevState: EntityAttributesState) => ({...prevState, name: newName}));\n    }\n\n    function displayOptions(): JSX.Element {\n        if (props.isEntitiesListView && !entityAttributes.isArchived)\n            return (\n                <Box style={{display: \"flex\", gap: \"5px\"}}>\n                    <Button\n                        id={`rename-entity-${props.entityID}-button`}\n                        variant=\"outlined\"\n                        onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n                            e.preventDefault();\n                            setIsRenaming(true);\n                        }}\n                    >\n                        {i18next.t(\"Rename\")}\n                    </Button>\n                    <Button\n                        color={\"error\"}\n                        onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n                            e.preventDefault();\n                            setOpenWarningDialog(true)\n                        }}\n                    >\n                        {i18next.t(\"Archive\")}\n                    </Button>\n                </Box>\n            );\n\n        else if (props.isOwnedByCurrentWorld)\n            return <Button color={\"error\"} onClick={props.onRemove}> {i18next.t(\"Remove\")} </Button>;\n\n        else if (entityAttributes.isArchived)\n            return <Box> {i18next.t(\"Archived\")} </Box>;\n\n        else if (props.isOwnedByCurrentWorld === undefined)\n            return <></>;\n\n        else\n            return <Button color={\"primary\"} onClick={props.onAdd}> {i18next.t(\"Add\")} </Button>;\n    }\n\n    return (\n        <>\n        <ListViewItem\n            id={props.entityID.toString()}\n            className=\"entity-list-item\"\n            loading={false}\n            isDisabled={entityAttributes.isArchived}\n            title={<Box className=\"entity-item-title\"> {entityAttributes.name} </Box>}\n            subtitle={\n                <Box style={{display: \"flex\", gap: \"8px\"}}>\n                    <Box style={{display: \"flex\"}}> <User/> {entityAttributes.owner} </Box>\n                    {props.isEntitiesListView &&\n                        <Box> {i18next.t(\"Associations\")}: {associationsCount} </Box>\n                    }\n                    <Box style={{display: \"flex\", alignItems: \"center\"}}>\n                        <Clock/> {`${i18next.t(\"Creation Date\")}: `}\n                        {timestampToString(UtilsShared.getTimestampOfRandomID(props.entityID), false)}\n                    </Box>\n                </Box>\n            }\n        >\n            { displayOptions() }\n        </ListViewItem>\n        {openWarningDialog &&\n            <Dialog\n                size={DialogSize.xs}\n                onClose={() => setOpenWarningDialog(false)}\n                closeOnClickOutside\n            >\n                <Box style={{font: primaryFontXLarge}}>\n                    {`${i18next.t(\"Are you sure you want to archive\")} ${entityAttributes.name} ?`}\n                </Box>\n                <DialogButtons>\n                    <Button\n                        variant=\"outlined\"\n                        onClick={(e) => {\n                            e.preventDefault();\n                            setOpenWarningDialog(false);\n                        }}\n                    >\n                        {i18next.t(\"Close\")}\n                    </Button>\n                    <Button\n                        onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n                            e.preventDefault();\n                            onArchive();\n                        }}\n                    >\n                        {i18next.t(\"Confirm\")}\n                    </Button>\n                </DialogButtons>\n            </Dialog>\n        }\n            {isRenaming &&\n                <RenamingEntityDialog\n                    entityID={props.entityID}\n                    initialName={entityAttributes.name}\n                    onRename={(newName: string) => renameEntity(newName)}\n                    onClose={() => setIsRenaming(false)}\n                />\n            }\n        </>\n    );\n}\n", "import { useCallback, useEffect, useRef } from 'react'\n\nfunction useIsMounted() {\n    const isMounted = useRef(false);\n\n    useEffect(() => {\n        isMounted.current = true;\n\n        return () => {\n            isMounted.current = false;\n        }\n    }, []);\n\n    return useCallback(() => isMounted.current, []);\n}\n\nexport default useIsMounted", "import React, {useState} from \"react\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, styled} from \"@mui/material\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {EntityAttribute} from \"@backend/Types/Entity\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {DataSourceEntities} from \"@root/Frontend/DataSources/DataSourceEntities\";\n\nconst ButtonsContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    gap: \"15px\",\n    paddingTop: \"15px\"\n});\n\ninterface RenamingEntityDialogProps {\n    entityID: bigint;\n    initialName: string;\n    onRename: (newName: string) => void;\n    onClose: () => void;\n}\n\nexport default function RenamingEntityDialog(props: RenamingEntityDialogProps) {\n    const appConsole: AppConsole = AppConsole.getInstance();\n    const dataSourceEntities: DataSourceEntities = appConsole.dataSourceEntities;\n\n    const [newName, setNewName] = useState<string>(props.initialName);\n\n    async function renameEntity(): Promise<void> {\n        if (!newName)\n            return;\n\n        const trimedNewName: string = newName.trim();\n        if (props.initialName !== trimedNewName)\n            await dataSourceEntities.updateEntityAttribute(props.entityID, EntityAttribute.NAME, trimedNewName);\n\n        props.onClose();\n        props.onRename(trimedNewName);\n    }\n\n    return (\n        <Dialog\n            id=\"rename-entity-dialog\"\n            size={DialogSize.xs}\n            closeOnClickOutside\n            onClose={() => props.onClose()}\n            onEnter={() => renameEntity()}\n        >\n            <Box style={{font: primaryFontXLarge}}> {i18next.t(\"Rename entity\")}</Box>\n            <InputText\n                id=\"update-entity-name-input\"\n                dark\n                label={i18next.t(\"Entity name\")}\n                onChange={(value: string) => setNewName(value)}\n                defaultValue={newName}\n            />\n            <ButtonsContainer>\n                <Button variant=\"outlined\" onClick={() => props.onClose()}>\n                    {i18next.t(\"Close\")}\n                </Button>\n                <Button\n                    id=\"rename-entity-confirm-btn\"\n                    onClick={() => renameEntity()}\n                    disabled={!newName.trim() || newName.trim() === props.initialName}\n                >\n                    {i18next.t(\"Rename\")}\n                </Button>\n            </ButtonsContainer>\n        </Dialog>\n    );\n}", "import {OwnerType} from \"@root/Types/OwnerType\";\n\nexport interface Entity {\n    Name: { value: string, timestamp: bigint },\n    Owner: { value: bigint, timestamp: bigint },\n    OwnerType: { value: OwnerType, timestamp: bigint },\n    ArchivedBy: { value: bigint, timestamp: bigint }\n}\n\nexport enum EntityAttribute {\n    NAME = \"Name\",\n    OWNER = \"Owner\",\n    OWNER_TYPE = \"OwnerType\",\n    ARCHIVED_BY = \"ArchivedBy\"\n}\n", "import * as React from 'react';\n\nexport function Entities(props: {color: string}) {\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n                d=\"M16.9741 13.7472L9.94819 6.87362L16.9741 0L24 6.87362L16.9741 13.7472ZM0 11.3141V1.58154H9.94819V11.3141H0ZM12.4352 23.4798V13.7472H22.3834V23.4798H12.4352ZM0 23.4798V13.7472H9.94819V23.4798H0ZM2.48705 8.88095H7.46114V4.01468H2.48705V8.88095ZM17.0052 10.3408L20.5181 6.90403L17.0052 3.46722L13.4922 6.90403L17.0052 10.3408ZM14.9223 21.0466H19.8964V16.1804H14.9223V21.0466ZM2.48705 21.0466H7.46114V16.1804H2.48705V21.0466Z\"\n                fill={props.color}/>\n        </svg>\n    );\n}", "import React, {useEffect, useState} from \"react\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport i18next from \"i18next\";\nimport {Box, styled} from \"@mui/material\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {ListView, ListWrapper} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {dark, darkGrey} from \"@root/react-components/src/values/colors/colors\";\nimport EntityItem from \"@root/Frontend/Console/Views/Entities/EntityList/EntityItem\";\nimport {DataSourceWorlds} from \"@root/Frontend/DataSources/DataSourceWorlds\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {SearchBar, SearchBarSize} from \"@root/react-components/src/inputs/SearchBar\";\nimport {Entity} from \"@backend/Types/Entity\";\nimport {getAllPeerEntities} from \"@root/Frontend/Console/utils/UtilsEntities\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"12px\"\n});\n\nconst Header = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n});\n\nconst DialogContent = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"flex-end\",\n    gap: \"8px\"\n});\n\ninterface ManageEntitiesDialogProps {\n    worldID: bigint;\n    originalWorldEntities: bigint[];\n    onClose: () => void;\n}\n\nexport default function ManageEntitiesDialog(props:ManageEntitiesDialogProps) {\n    const appConsole: AppConsole = AppConsole.getInstance();\n    const dataSourceWorld: DataSourceWorlds = appConsole.dataSourceWorlds;\n\n    const [allEntities, setAllEntities] = useState<bigint[]>([]);\n    const [worldEntities, setWorldEntities] = useState<bigint[]>([]);\n    const [searchStr, setSearchStr] = useState<string>(\"\");\n\n    useEffect(() => {\n        setWorldEntities(props.originalWorldEntities);\n        fetchAllEntities().then((allEntities: bigint[]) => setAllEntities(allEntities));\n    }, []);\n\n    useEffect(() => {\n        fetchAllEntities().then((allEntities: bigint[]) =>\n            filterEntitiesBySearch(allEntities).then((entities: bigint[]) => setAllEntities(entities))\n        );\n    }, [searchStr]);\n\n    async function fetchAllEntities(): Promise<bigint[]> {\n        const peerEntities: bigint[] = await getAllPeerEntities(appConsole.currentPeerID);\n        return await filterAvailableEntities([...peerEntities]);\n    }\n\n    // remove all archived entities except those related to the world\n    async function filterAvailableEntities(entities: bigint[]):Promise<bigint[]> {\n        const filteredEntities: bigint[] = [];\n\n        for (const entityID of entities){\n            const entity: Entity = await appConsole.dataSourceEntities.getEntityByID(entityID);\n\n            if (!entity.ArchivedBy.value || worldEntities.includes(entityID))\n                filteredEntities.push(entityID);\n        }\n\n        return filteredEntities;\n    }\n\n    async function filterEntitiesBySearch(entitiesIDs: bigint[]): Promise<bigint[]> {\n        const searchedEntities: bigint[] = [];\n        for (const entityID of entitiesIDs) {\n            const entity: Entity = await appConsole.dataSourceEntities.getEntityByID(entityID);\n            if (entity.Name.value.toLowerCase().includes(searchStr.toLowerCase()))\n                searchedEntities.push(entityID);\n        }\n\n        return searchedEntities;\n    }\n\n    async function onRemove(entityID: bigint) {\n        await dataSourceWorld.removeEntityFromWorld(props.worldID, entityID);\n        const newWorldEntities: bigint[] = [];\n        worldEntities.forEach((entity:bigint) => {\n            if (entity !== entityID)\n                newWorldEntities.push(entity);\n        });\n\n        setWorldEntities(newWorldEntities);\n        dataSourceWorld.invalidateWorld(props.worldID);\n    }\n\n    async function onAdd(entityID: bigint) {\n        await dataSourceWorld.addEntityToWorld(props.worldID, entityID);\n        const newWorldEntities: bigint[] = [entityID, ...worldEntities];\n        setWorldEntities(newWorldEntities);\n        dataSourceWorld.invalidateWorld(props.worldID);\n    }\n\n    return (\n        <Dialog onClose={() => props.onClose()} size={DialogSize.md} closeOnClickOutside>\n            <Container>\n                <Header>\n                    <Box style={{font: primaryFontXLarge}}>{i18next.t(\"Manage entities\")}</Box>\n                </Header>\n                <DialogContent>\n                    <SearchBar\n                        id=\"entities-dialog-search-bar\"\n                        onChange={(searchedStr: string) => setSearchStr(searchedStr)}\n                        size={SearchBarSize.MEDIUM}\n                        style={{width: \"300px\"}}\n                    />\n                    <ListWrapper backgroundColor={dark} scrollbarcolor={darkGrey} height=\"350px\">\n                        <ListView\n                            emptyListMessage={i18next.t(\"No Entities to display\")}\n                            itemCount={allEntities.length}\n                            itemHeight={100}>\n                            {(index: number) => {\n                                const entityID: bigint = allEntities[index];\n                                return <EntityItem\n                                    entityID={entityID}\n                                    isOwnedByCurrentWorld={worldEntities.includes(entityID)}\n                                    onAdd={() => onAdd(entityID)}\n                                    onRemove={() => onRemove(entityID)}\n                                />;\n                            }}\n                        </ListView>\n                    </ListWrapper>\n                    <Button\n                        id=\"manage-entities-dialog-close-btn\"\n                        variant=\"outlined\"\n                        size=\"medium\"\n                        onClick={() => props.onClose()}\n                    >\n                        {i18next.t(\"Close\")}\n                    </Button>\n                </DialogContent>\n            </Container>\n        </Dialog>\n    );\n}\n", "import {Role} from \"@backend/Types/Role\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Group} from \"@backend/Types/Group\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {getPeerWorldIDs} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {World} from \"@backend/Types/World\";\n\n// return all entities for a Peer (its entities and entities owned by groups in which he's Editor\nexport async function getAllPeerEntities(peerID: bigint): Promise<bigint[]> {\n    const peer: Peer = await AppConsole.getInstance().dataSourcePeers.getPeer(peerID);\n    const peerEntities: Set<bigint> = new Set([...peer.entities]);\n\n    // loop over peer's groups to get groups' entities (if currentPeer is Editor in the group)\n    const peerGroups: { [groupID: string]: Role } = peer.group ?? {};\n    for (const [groupIDStr, currentPeerGroupRole] of Object.entries(peerGroups)) {\n        if (currentPeerGroupRole !== Role.EDITOR)\n            continue;\n\n        const groupID: bigint = UtilsShared.safelyConvertStringToBigInt(groupIDStr);\n        if (!groupID)\n            continue;\n\n        const group: Group = await AppConsole.getInstance().dataSourceGroups.getGroup(groupID);\n        for (const entityID of group.Entities)\n            peerEntities.add(entityID);\n    }\n    return [...peerEntities]\n}\n\nexport async function getAllWorldsByEntityID(entityID: bigint): Promise<bigint[]> {\n    const appConsole: AppConsole = AppConsole.getInstance();\n\n    const currentPeer: Peer = await appConsole.dataSourcePeers.getPeer(appConsole.currentPeerID);\n    const peerWorldIDs: bigint[] = [...await getPeerWorldIDs(currentPeer)];\n\n    const entityWorlds: bigint[] = [];\n    for (const worldID of peerWorldIDs) {\n        const world: World = await appConsole.dataSourceWorlds.getWorld(worldID);\n        if (world.Entities.value.includes(entityID))\n            entityWorlds.push(worldID);\n    }\n\n    return entityWorlds;\n}\n", "import React from \"react\";\nimport {BreadcrumbNavigation, BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {ViewTitle} from \"@root/Frontend/Console/components/ViewTitle\";\nimport i18next from \"i18next\";\nimport {Box} from \"@mui/material\";\nimport {Route, Switch, withRouter} from \"react-router-dom\";\nimport EntityList from \"@root/Frontend/Console/Views/Entities/EntityList/EntityList\";\nimport {Container} from \"react-grid-system\";\nimport {RouteComponentProps} from \"react-router\";\nimport EntityView from \"@root/Frontend/Console/Views/Entities/EntityView/EntityView\";\nimport EntityAttemptsListView from \"@root/Frontend/Console/Views/Entities/EntityAttemptsListView\";\n\nexport const ENTITIES_BASE_PATH: string = \"/Console/Entities\";\n\nexport class Entities extends React.Component<RouteComponentProps> {\n    breadcrumbsNavigationRef: React.RefObject<BreadcrumbNavigation> = React.createRef();\n\n    // this will allow our views to update the breadcrumb navigation\n     updateBreadcrumbsNavigation(levels: BreadcrumbsLevel[]){\n        if (!this.breadcrumbsNavigationRef.current)\n            return;\n\n        this.breadcrumbsNavigationRef.current?.setState({ levels: levels });\n    }\n\n    render() {\n        return (\n            <Box height=\"100%\">\n                <ViewTitle style={{flex: 1}}>{i18next.t(\"Entities\")}</ViewTitle>\n                <Container fluid style={{height: `calc(100% - 72px)`}}>\n                    <BreadcrumbNavigation ref={this.breadcrumbsNavigationRef} />\n                    <Switch>\n                        <Route exact path={ENTITIES_BASE_PATH}>\n                            <EntityList\n                                onMounted={(levels: BreadcrumbsLevel[]) => this.updateBreadcrumbsNavigation(levels)}\n                            />\n                        </Route>\n                        <Route exact path={`${ENTITIES_BASE_PATH}/Entity/:entityID`}>\n                            <EntityView\n                                onMounted={(levels: BreadcrumbsLevel[]) => this.updateBreadcrumbsNavigation(levels)}\n                            />\n                        </Route>\n                        <Route exact path={`${ENTITIES_BASE_PATH}/Entity/:entityID/Attempts`}>\n                            <EntityAttemptsListView\n                                onMounted={(levels: BreadcrumbsLevel[]) => this.updateBreadcrumbsNavigation(levels)}\n                            />\n                        </Route>\n                    </Switch>\n                </Container>\n            </Box>\n        );\n    }\n}\n\nexport const EntitiesWithRouter = withRouter(Entities);", "import React, {useEffect, useState} from \"react\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {ListView} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport EntityItem from \"@root/Frontend/Console/Views/Entities/EntityList/EntityItem\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport {Switch} from \"@root/react-components/src/inputs/Switch\";\nimport CreateEntityForm from \"@root/Frontend/Console/Views/Entities/EntityList/CreateEntityForm\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Entity} from \"@backend/Types/Entity\";\nimport {SearchBar, SearchBarSize} from \"@root/react-components/src/inputs/SearchBar\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {getAllPeerEntities} from \"@root/Frontend/Console/utils/UtilsEntities\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {NavLink} from \"react-router-dom\";\nimport {ENTITIES_BASE_PATH} from \"@root/Frontend/Console/Views/Entities/Entities\";\n\nconst MainWrapper = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: `calc(100% - 130px)`\n});\n\nconst HeaderWrapper = styled(Box)({\n    display: \"flex\",\n    gap: \"15px\",\n    justifyContent: \"flex-end\",\n    alignItems: \"center\"\n});\n\nconst EntitiesListContainer = styled(Box)({\n    height: \"100%\",\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    paddingTop: \"25px\"\n});\n\ninterface EntityListProps {\n    onMounted: (levels: BreadcrumbsLevel[]) => void;\n}\n\nexport default function EntityList(props: EntityListProps) {\n    const appConsole: AppConsole = AppConsole.getInstance();\n\n    const [allPeerEntities, setAllPeerEntities] = useState<bigint[] | null>(null);\n    const [searchStr, setSearchStr] = useState<string>(\"\");\n    const [displayArchived, setDisplayArchived] = useState<boolean>(true);\n    const [openCreateDialog, setOpenCreateDialog] = useState<boolean>(false);\n\n    function getEntitiesLevel(): BreadcrumbsLevel {\n        return {\n            link: ENTITIES_BASE_PATH,\n            getName(): Promise<string> {\n                return i18next.t(\"Entities\")\n            }\n        }\n    }\n    function getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [getEntitiesLevel()];\n    }\n\n    useEffect(() => {\n        props.onMounted(getBreadcrumbsLevels())\n    }, []);\n\n    useEffect(() => {\n        fetchAllEntities().then((allEntities: bigint[]) =>\n            filterEntities(allEntities).then((filteredEntities: bigint[]) =>\n                setAllPeerEntities(filteredEntities)\n            )\n        );\n    }, [displayArchived, searchStr]);\n\n    async function fetchAllEntities() {\n        const peerEntities: bigint[] = await getAllPeerEntities(appConsole.currentPeerID);\n        return peerEntities.sort((entity1: bigint, entity2: bigint) => Number(\n            UtilsShared.getTimestampOfRandomID(entity2) - UtilsShared.getTimestampOfRandomID(entity1)\n        ));\n    }\n\n    async function getAvailableEntities(entitiesIDs: bigint[]): Promise<bigint[]> {\n        const notArchivedEntity: bigint[] = [];\n        for (const entityID of entitiesIDs) {\n            const entity: Entity = await appConsole.dataSourceEntities.getEntityByID(entityID);\n            // if current entity has no value for its attribute ArchivedBy -> we keep it and add it to the array\n            if (!entity.ArchivedBy.value)\n                notArchivedEntity.push(entityID);\n       }\n       return notArchivedEntity;\n    }\n\n    async function filterEntitiesBySearch(entitiesIDs: bigint[]): Promise<bigint[]> {\n        const searchedEntities: bigint[] = [];\n        for (const entityID of entitiesIDs) {\n            const entity: Entity = await appConsole.dataSourceEntities.getEntityByID(entityID);\n            if (entity.Name.value.toLowerCase().includes(searchStr.toLowerCase()))\n                searchedEntities.push(entityID);\n        }\n\n        return searchedEntities;\n    }\n\n    async function filterEntities(entitiesIDs: bigint[]): Promise<bigint[]> {\n        let filteredEntities: bigint[] = entitiesIDs;\n        if (!displayArchived)\n            filteredEntities = await getAvailableEntities(filteredEntities);\n        if (searchStr)\n            filteredEntities = await filterEntitiesBySearch(filteredEntities);\n\n        return filteredEntities;\n    }\n\n    function onCreateEntity(entityID: bigint): void {\n        if (!allPeerEntities)\n            return;\n        setAllPeerEntities([entityID, ...allPeerEntities]);\n    }\n\n    // when an item is archived, update displayed list if displayArchived is false\n    async function handleOnArchiveItem() {\n        if (displayArchived || !allPeerEntities)\n            return;\n\n        const filteredEntities: bigint[] = await filterEntities(allPeerEntities);\n        setAllPeerEntities(filteredEntities);\n    }\n\n    return (\n        <>\n            <MainWrapper>\n                <HeaderWrapper>\n                    <SearchBar\n                        id=\"entities-list-search-bar\"\n                        onChange={(searchedStr: string) => setSearchStr(searchedStr)}\n                        size={SearchBarSize.MEDIUM}\n                        style={{width: \"450px\"}}\n                    />\n                    <Box style={{display: \"flex\", gap: \"5px\", paddingRight: \"50px\"}}>\n                        <Switch initialValue={displayArchived} onChange={() => setDisplayArchived(!displayArchived)}/>\n                        <Label dark style={{marginTop: \"0px\", alignSelf: \"center\"}} medium>\n                            {i18next.t(\"Archived\")}\n                        </Label>\n                    </Box>\n                    <Button\n                        id=\"create-entity-btn\"\n                        style={{width: \"fit-content\"}}\n                        onClick={() => setOpenCreateDialog(true)}\n                    >\n                        {i18next.t(\"Create entity\")}\n                    </Button>\n                </HeaderWrapper>\n                { !allPeerEntities ?\n                    <CenteredLoading/>\n                :\n                    <EntitiesListContainer>\n                        <ListView\n                            emptyListMessage={i18next.t(\"No Entities to display\")}\n                            itemCount={allPeerEntities.length}\n                            itemHeight={100}\n                        >\n                            {(index: number) => {\n                                if (!allPeerEntities)\n                                    return <></>;\n\n                                const entityID: bigint = allPeerEntities[index];\n                                return (\n                                    <NavLink \n                                        to={`${ENTITIES_BASE_PATH}/Entity/${entityID}`}\n                                        style={{textDecoration: \"none\", color: \"currentcolor\"}}\n                                    >\n                                        <EntityItem\n                                            entityID={entityID}\n                                            isEntitiesListView\n                                            onArchive={() => handleOnArchiveItem()}\n                                        />\n                                    </NavLink>\n                                )\n                            }}\n                        </ListView>\n                    </EntitiesListContainer>\n                }\n            </MainWrapper>\n            {openCreateDialog &&\n                <CreateEntityForm\n                    onCreate={(entityID: bigint) => onCreateEntity(entityID)}\n                    onClose={() => setOpenCreateDialog(false)}\n                />\n            }\n        </>\n    );\n}", "import React, {useEffect, useState} from \"react\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, Checkbox, styled} from \"@mui/material\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport i18next from \"i18next\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport {dark, darkenWhite, white} from \"@root/react-components/src/values/colors/colors\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {canPeerEditWorld, getPeerWorldIDs} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {World} from \"@backend/Types/World\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Group} from \"@backend/Types/Group\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {DataSourceWorlds} from \"@root/Frontend/DataSources/DataSourceWorlds\";\nimport {Role} from \"@backend/Types/Role\";\n\nconst FormContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"10px\"\n});\n\nconst WorldsContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    maxHeight: \"350px\",\n    overflow: \"auto\",\n    gap: \"12px\",\n    backgroundColor: dark,\n    borderRadius: \"11px\",\n    padding: \"15px\",\n\n    scrollbarColor: `${white} ${dark}`,\n    \"&::-webkit-scrollbar\": {\n        width: \"16px\"\n    },\n    \"&::-webkit-scrollbar-thumb\": {\n        backgroundColor: white,\n        borderRadius: \"8px\",\n        border: `4px solid ${dark}`\n    }\n});\n\nconst WorldItem = styled(Box)({\n    display: \"flex\",\n    padding: \"5px 0px 5px 10px\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    backgroundColor: white,\n    borderRadius: \"12px\",\n    font: primaryFontLarge\n});\n\nconst ActionButtons = styled(Box)({\n    display: \"flex\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    paddingTop: \"15px\",\n    gap: \"6px\"\n});\n\ninterface CreateEntityFormProps {\n    onClose: () => void;\n    onCreate: (entityID: bigint) => void;\n}\n\nexport default function CreateEntityForm(props: CreateEntityFormProps) {\n    const appConsole: AppConsole = AppConsole.getInstance();\n    const currentPeerID: bigint = appConsole.currentPeerID;\n    const dataSourcePeers: DataSourcePeers = appConsole.dataSourcePeers;\n    const dataSourceWorlds: DataSourceWorlds = appConsole.dataSourceWorlds;\n\n    const [name, setName] = useState<string>(\"\");\n    const [owner, setOwner] = useState<bigint>(BigInt(0));\n    const [ownerType, setOwnerType] = useState<OwnerType>(OwnerType.PEER);\n    const [associatedWorlds, setAssociatedWorlds] = useState<Set<bigint>>(new Set());\n\n    const [ownerWorlds, setOwnerWorlds] = useState<Map<bigint, string>>(new Map());\n    const [peerGroups, setPeerGroups] = useState<Map<bigint, string>>(new Map());\n\n    useEffect(() => {\n        fetchPeerGroups().then((peerGroups: Map<bigint, string>) => setPeerGroups(peerGroups));\n    }, []);\n\n    useEffect(() => {\n        fetchOwnerWorlds(owner).then((ownerWorlds: Map<bigint, string>) => setOwnerWorlds(ownerWorlds));\n    }, [owner]);\n\n    // Entities can only be associated to its owner's worlds\n    async function fetchOwnerWorlds(ownerID: bigint): Promise<Map<bigint, string>> {\n        if (!ownerID)\n            return new Map<bigint, string>();\n\n        let worldIDs: Set<bigint>;\n        if (ownerID === currentPeerID) {\n            const currentPeer: Peer = await dataSourcePeers.getPeer(currentPeerID);\n            worldIDs = await getPeerWorldIDs(currentPeer);\n        } else {\n            const groupOwner: Group = await appConsole.dataSourceGroups.getGroup(ownerID);\n            worldIDs = new Set(groupOwner.Worlds);\n        }\n\n        const ownerWorlds: Map<bigint, string> = new Map();\n        for (const worldID of worldIDs) {\n            const world: World = await dataSourceWorlds.getWorld(worldID);\n\n            if (await canPeerEditWorld(appConsole.currentPeerID, worldID))\n                ownerWorlds.set(worldID, world.Title.value);\n        }\n        // return sorted map (alphabetically by world titles)\n        return new Map([...ownerWorlds.entries()].sort((world1: [bigint, string], world2: [bigint, string]) =>\n            world1[1].localeCompare(world2[1])));\n    }\n\n    async function fetchPeerGroups(): Promise<Map<bigint, string>> {\n        const peerGroups: Map<bigint, string> = new Map();\n        const currentPeer: Peer = await dataSourcePeers.getPeer(currentPeerID);\n\n        if (!currentPeer.group)\n            return peerGroups;\n\n        // filter peer's group to keep only group where he's Editor\n        const groupIDs: bigint[] = Object.keys(currentPeer.group)\n            .filter((groupID: string) => currentPeer.group?.[groupID] === Role.EDITOR)\n            .map((groupID: string) => UtilsShared.safelyConvertStringToBigInt(groupID));\n\n        for (const groupID of groupIDs) {\n            const group: Group = await appConsole.dataSourceGroups.getGroup(groupID);\n            peerGroups.set(groupID, group.Name);\n        }\n        return peerGroups;\n    }\n\n    function handleSelectOwner(index: number) {\n        const ownerID: bigint =\n            index >= peerGroups.size ? currentPeerID : Array.from(peerGroups.keys())[index];\n\n        const ownerType: OwnerType = ownerID === currentPeerID ? OwnerType.PEER : OwnerType.GROUP;\n\n        setOwner(ownerID);\n        setOwnerType(ownerType);\n        setAssociatedWorlds(new Set());\n    }\n\n    function isFormValid(): boolean {\n        return Boolean(name) && Boolean(owner) && Boolean(ownerType);\n    }\n\n    function handleClickOnItem(worldID: bigint) {\n        const newAssociatedWorlds: Set<bigint> = new Set(associatedWorlds);\n\n        if (associatedWorlds.has(worldID))\n            newAssociatedWorlds.delete(worldID);\n        else\n            newAssociatedWorlds.add(worldID);\n\n        setAssociatedWorlds(newAssociatedWorlds);\n    }\n\n    async function createNewEntity() {\n        if (!isFormValid())\n            return;\n\n        const entityID: bigint = await appConsole.dataSourceEntities.createEntity(name, owner, ownerType);\n        for (const worldID of associatedWorlds)\n            await dataSourceWorlds.addEntityToWorld(worldID, entityID);\n\n        if (ownerType === OwnerType.PEER)\n            dataSourcePeers.invalidatePeer(owner);\n        else\n            appConsole.dataSourceGroups.invalidateGroup(owner);\n\n        props.onCreate(entityID);\n        props.onClose();\n    }\n\n    function displayWorldsList() {\n        if (!owner)\n            return (\n                <Box style={{color: white}}>\n                    {i18next.t(\"Select an owner first\")}\n                </Box>\n            );\n\n        if (ownerWorlds.size)\n            return (\n                Array.from(ownerWorlds.entries()).map(([worldID, worldTitle]) =>\n                    <WorldItem\n                        key={worldID.toString()}\n                        id={worldID.toString()}\n                        className=\"entity-dialog-world-item\"\n                        onClick={() => handleClickOnItem(worldID)}\n                    >\n                        <Box> {worldTitle} </Box>\n                        <Checkbox\n                            id={`world-item-checkbox-${worldID.toString()}`}\n                            checked={associatedWorlds.has(worldID)}\n                        />\n                    </WorldItem>\n                )\n            );\n\n        return (\n            <Box style={{color: white}}>\n                {i18next.t(\"No Worlds to display\")}\n            </Box>\n        );\n    }\n\n    return (\n        <Dialog size={DialogSize.sm} id=\"entity-creation-dialog\">\n            <Box style={{font: primaryFontXLarge}}> {i18next.t(\"Create new entity\")}</Box>\n            <FormContainer>\n                <Box style={{display: \"flex\", gap: \"25px\", alignItems: \"flex-end\"}}>\n                    <Box style={{width: \"250px\"}}>\n                        <InputText\n                            id=\"create-entity-name-input\"\n                            dark\n                            label={i18next.t(\"Entity name\")}\n                            onChange={(value: string) => setName(value)}\n                        />\n                    </Box>\n                    <Box style={{width: \"250px\"}}>\n                        <Label dark style={{marginTop: \"0px\", alignSelf: \"center\", paddingBottom: \"5px\"}}>\n                            {i18next.t(\"Owner\")}\n                        </Label>\n                        <Select\n                            id=\"select-entity-owner\"\n                            fullWidth\n                            style={{textAlign: \"left\", background: darkenWhite, borderRadius: \"4px\"}}\n                            styleOptionsWrapper={{maxHeight: \"400px\", overflow: \"auto\"}}\n                            options={[...peerGroups.values(), i18next.t(\"Myself\")]}\n                            onChange={(index: number) => handleSelectOwner(index)}\n                            default={-1}\n                        />\n                    </Box>\n                </Box>\n\n            <Box style={{font: primaryFontLarge, marginTop: \"10px\"}}>{i18next.t(\"Add to Worlds\")}</Box>\n                <WorldsContainer>\n                    {displayWorldsList()}\n                </WorldsContainer>\n        </FormContainer>\n            <ActionButtons>\n                <Button variant=\"outlined\" onClick={() => props.onClose()}>\n                    {i18next.t(\"Close\")}\n                </Button>\n                <Button\n                    id=\"create-entity-confirm-button\"\n                    disabled={!isFormValid()}\n                    onClick={() => createNewEntity()}\n                >\n                    {i18next.t(\"Create\")}\n                </Button>\n            </ActionButtons>\n        </Dialog>\n    );\n}", "import React, {useEffect, useState} from \"react\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {DataSourceEntities} from \"@root/Frontend/DataSources/DataSourceEntities\";\nimport {Entity} from \"@backend/Types/Entity\";\nimport {ENTITIES_BASE_PATH} from \"@root/Frontend/Console/Views/Entities/Entities\";\nimport {useParams} from \"react-router-dom\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {darkenPrimary, lightWhite} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge, primaryFontXLarge, secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Group} from \"@backend/Types/Group\";\nimport {timestampToString} from \"@utils/utils\";\nimport EntityWorldsAssociations from \"@root/Frontend/Console/Views/Entities/EntityView/EntityWorldsAssociations\";\nimport EntityAttemptsList from \"@root/Frontend/Console/Views/Entities/EntityView/EntityAttemptsList\";\n\nconst MainContainer = styled(Box)({\n    paddingTop: \"15px\"\n});\n\nconst Header = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"10px\",\n    backgroundColor: darkenPrimary,\n    color: lightWhite,\n    borderRadius: \"12px\",\n    padding: \"20px\",\n});\n\nconst TitleContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection:\"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    gap: \"5px\"\n});\n\nconst InformationContainer = styled(Box)({\n   font: secondaryFontLarge,\n});\n\nconst InformationValue = styled(\"span\")({\n    font: primaryFontLarge\n});\n\nconst PageContent = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    width: \"100%\"\n});\n\ninterface EntityAttributes {\n    name: string;\n    owner: string;\n    isArchived: boolean;\n}\n\ninterface EntityViewProps {\n    onMounted: (levels: BreadcrumbsLevel[]) => void;\n}\n\nexport default function EntityView(props: EntityViewProps) {\n    const appConsole: AppConsole = AppConsole.getInstance();\n    const dataSourceEntities: DataSourceEntities = appConsole.dataSourceEntities;\n    const entityID: bigint = UtilsShared.safelyConvertStringToBigInt(useParams<{entityID: string}>().entityID);\n\n    const [ownerName, setOwnerName] = useState<string>(\"\");\n    const [entityName, setEntityName] = useState<string>(\"\");\n    const [creationDate, setCreationDate] = useState<string>(\"\");\n    const [archived, setArchived] = useState<boolean>(false);\n\n    useEffect(() => {\n        props.onMounted(getBreadcrumbsLevels());\n\n        fetchEntityAttributes().then((attributes: EntityAttributes) => {\n            if (!attributes)\n                return;\n\n            setEntityName(attributes.name);\n            setOwnerName(attributes.owner);\n            setCreationDate(timestampToString(UtilsShared.getTimestampOfRandomID(entityID), false))\n            setArchived(attributes.isArchived);\n        });\n    }, []);\n\n    function getEntitiesLevels(): BreadcrumbsLevel[] {\n        return [\n            {\n                link: ENTITIES_BASE_PATH,\n                getName(): Promise<string> {\n                    return i18next.t(\"Entities\")\n                }\n            },\n            {\n                link: `${ENTITIES_BASE_PATH}/Entity/${entityID}`,\n                async getName(): Promise<string> {\n                    const entity: Entity = await dataSourceEntities.getEntityByID(entityID);\n                    return entity.Name.value;\n                }\n            }\n        ];\n    }\n\n    function getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return getEntitiesLevels();\n    }\n\n    async function fetchEntityAttributes(): Promise<EntityAttributes | null> {\n        const entity: Entity | null = await dataSourceEntities.getEntityByID(entityID);\n        if (!entity)\n            return null;\n\n        let ownerName: string = \"\";\n        if (entity.OwnerType.value === OwnerType.PEER) {\n            const peerOwner: Peer = await appConsole.dataSourcePeers.getPeer(entity.Owner.value);\n            ownerName = peerOwner.fullName;\n        } else {\n            const groupOwner: Group = await appConsole.dataSourceGroups.getGroup(entity.Owner.value);\n            ownerName = groupOwner.Name;\n        }\n\n        return { name: entity.Name.value, owner: ownerName, isArchived: Boolean(entity.ArchivedBy.value) };\n    }\n\n    return (\n      <MainContainer>\n          <Header>\n              <TitleContainer>\n                <Box style={{font: primaryFontXLarge, textAlign: \"center\", fontSize: \"22px\"}}> {entityName} </Box>\n                  {archived &&\n                      <Box style={{font: secondaryFontLarge}}> {`(${i18next.t(\"Archived\")})`} </Box>\n                  }\n              </TitleContainer>\n              <Box style={{display: \"flex\", justifyContent: \"space-between\"}}>\n                  <InformationContainer> {i18next.t(\"Owner\")} :\n                      <InformationValue> {ownerName} </InformationValue>\n                  </InformationContainer>\n                  <InformationContainer> {i18next.t(\"Creation Date\")} :\n                      <InformationValue> {creationDate} </InformationValue>\n                  </InformationContainer>\n              </Box>\n          </Header>\n          <PageContent>\n              <EntityWorldsAssociations entityID={entityID} archived={archived}/>\n              <EntityAttemptsList entityID={entityID}/>\n          </PageContent>\n\n      </MainContainer>\n    );\n}", "import React, {useEffect, useState} from \"react\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {ViewSubtitle} from \"@root/Frontend/Console/components/ViewSubtitle\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {ListView, ListWrapper} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {lightDark, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {NavLink} from \"react-router-dom\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {WorldItem} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldItem\";\nimport ManageWorldAssociationsDialog\n    from \"@root/Frontend/Console/Views/Entities/EntityView/ManageWorldAssociationsDialog\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {World as WorldIcon} from \"@root/react-components/src/icons/World\";\nimport DefaultWorldItemActions from \"@root/Frontend/Console/Views/Analytics/WorldsList/DefaultWorldItemActions\";\nimport {getAllWorldsByEntityID} from \"@root/Frontend/Console/utils/UtilsEntities\";\n\nconst Section = styled(Box)({\n    width: \"50%\",\n    minWidth: \"400px\",\n    paddingTop: \"30px\",\n    paddingRight: \"10px\"\n});\n\nconst SectionHeader = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n});\n\nconst ListCount = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    font: primaryFontMedium\n});\n\nconst ItemsCount = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    marginRight: \"3px\",\n    \"& svg\": {\n        height: \"18px\",\n        width: \"18px\"\n    }\n});\n\ninterface EntityWorldsAssociationsProps {\n    entityID: bigint;\n    archived: boolean;\n}\n\nexport default function EntityWorldsAssociations(props: EntityWorldsAssociationsProps) {\n    const appConsole: AppConsole = AppConsole.getInstance();\n\n    const [worldIDs, setWorldIDs] = useState<bigint[]>([]);\n    const [worldsDialogActive, setWorldsDialogActive] = useState<boolean>(false);\n\n    useEffect(() => { getAllWorldsByEntityID(props.entityID).then((worlds: bigint[]) => setWorldIDs(worlds)) }, []);\n\n    async function onRemove(worldID: bigint) {\n        await appConsole.dataSourceWorlds.removeEntityFromWorld(worldID, props.entityID);\n        const updatedWorlds: bigint[] = worldIDs.filter((id: bigint) => id !== worldID);\n        setWorldIDs(updatedWorlds);\n    }\n\n    async function onAdd(worldID: bigint) {\n        await appConsole.dataSourceWorlds.addEntityToWorld(worldID, props.entityID);\n        setWorldIDs([worldID, ...worldIDs]);\n    }\n\n    return (\n        <>\n            <Section>\n                <SectionHeader>\n                    <ViewSubtitle> {i18next.t(\"Worlds\")} </ViewSubtitle>\n                    <ListCount>\n                        <ItemsCount>\n                            {worldIDs.length}&nbsp;\n                            <WorldIcon color={lightDark}/>\n                        </ItemsCount>\n                        <Button\n                            id=\"manage-worlds\"\n                            size=\"small\"\n                            onClick={()=> setWorldsDialogActive(true)}\n                            style={{height: \"fit-content\"}}\n                            disabled={props.archived}\n                        >\n                            {i18next.t(\"Manage\")}\n                        </Button>\n                    </ListCount>\n                </SectionHeader>\n                <ListWrapper backgroundColor={primary}>\n                    <ListView\n                        emptyListMessage={i18next.t(\"No Worlds to display\")}\n                        itemCount={worldIDs.length}\n                    >\n                        {index => {\n                            const worldID: bigint = worldIDs[index];\n                            return (\n                                <NavLink\n                                    style={{textDecoration: \"none\"}}\n                                    to={`${Analytics.BASE_PATH}/Worlds/${worldID}`}\n                                >\n                                    <WorldItem\n                                        worldID={worldID}\n                                        actions={ <DefaultWorldItemActions worldID={worldID} displaySequencesCount/> }\n                                    />\n                                </NavLink>\n                            );\n                        }}\n                    </ListView>\n                </ListWrapper>\n            </Section>\n            {worldsDialogActive &&\n                <ManageWorldAssociationsDialog\n                    entityID={props.entityID}\n                    initialWorldAssociations={worldIDs}\n                    onAdd={(worldID: bigint) => onAdd(worldID)}\n                    onRemove={(worldID: bigint) => onRemove(worldID)}\n                    onClose={() => setWorldsDialogActive(false)}\n                />\n            }\n        </>\n    );\n}\n", "import React, {useEffect, useState} from \"react\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {ListView, ListWrapper} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {dark, darkGrey} from \"@root/react-components/src/values/colors/colors\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {getPeerWorldIDs} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {World} from \"@backend/Types/World\";\nimport {WorldItem} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldItem\";\nimport {SearchBar, SearchBarSize} from \"@root/react-components/src/inputs/SearchBar\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"12px\"\n});\n\nconst Header = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n});\n\nconst DialogContent = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"flex-end\",\n    gap: \"8px\"\n});\n\ninterface ManageWorldAssociationsDialogProps {\n    entityID: bigint;\n    initialWorldAssociations: bigint[];\n    onAdd: (worldID: bigint) => void;\n    onRemove: (worldID: bigint) => void;\n    onClose: () => void;\n}\n\nexport default function ManageWorldAssociationsDialog(props: ManageWorldAssociationsDialogProps) {\n    const appConsole: AppConsole = AppConsole.getInstance();\n\n    const [allWorldIDs, setAllWorldIDs] = useState<bigint[]>([]);\n    const [searchStr, setSearchStr] = useState<string>(\"\");\n\n    useEffect(() => {\n        fetchAllWorlds().then((allWorlds: bigint[]) => setAllWorldIDs(allWorlds));\n    }, []);\n\n    useEffect(() => {\n        fetchAllWorlds().then((allWorlds: bigint[]) =>\n            filterWorldsBySearch(allWorlds).then((entities: bigint[]) => setAllWorldIDs(entities))\n        );\n    }, [searchStr]);\n\n    async function fetchAllWorlds(): Promise<bigint[]> {\n        const currentPeer: Peer = await appConsole.dataSourcePeers.getPeer(appConsole.currentPeerID);\n        return [...await getPeerWorldIDs(currentPeer)];\n    }\n\n    async function filterWorldsBySearch(worldIDs: bigint[]): Promise<bigint[]> {\n        const filteredWorlds: bigint[] = [];\n        for (const worldID of worldIDs) {\n            const world: World = await appConsole.dataSourceWorlds.getWorld(worldID);\n            if (world.Title.value.toLowerCase().includes(searchStr.toLowerCase()))\n                filteredWorlds.push(worldID);\n        }\n        return filteredWorlds;\n    }\n\n    return (\n      <Dialog onClose={() => props.onClose()} size={DialogSize.sm} closeOnClickOutside>\n          <Container>\n              <Header>\n                  <Box style={{font: primaryFontXLarge}}>{i18next.t(\"Manage World Associations\")}</Box>\n              </Header>\n              <DialogContent>\n                  <SearchBar\n                      onChange={(searchedStr: string) => setSearchStr(searchedStr)}\n                      size={SearchBarSize.MEDIUM}\n                      style={{width: \"300px\"}}\n                  />\n                  <ListWrapper backgroundColor={dark} scrollbarcolor={darkGrey} height=\"350px\">\n                      <ListView\n                          emptyListMessage={i18next.t(\"No Worlds to display\")}\n                          itemCount={allWorldIDs.length}\n                          itemHeight={100}>\n                          { (index: number) => {\n                              const worldID: bigint = allWorldIDs[index];\n                              return(\n                                  <WorldItem\n                                      worldID={worldID}\n                                      actions={\n                                        props.initialWorldAssociations.includes(worldID) ?\n                                            <Button color={\"error\"} onClick={() => props.onRemove(worldID)}>\n                                                {i18next.t(\"Remove\")}\n                                            </Button>\n                                        :\n                                            <Button color={\"primary\"} onClick={() => props.onAdd(worldID)}>\n                                                {i18next.t(\"Add\")}\n                                            </Button>\n                                      }\n                                  />\n                              );\n                          }}\n                      </ListView>\n                  </ListWrapper>\n                  <Button variant=\"outlined\" size=\"medium\" onClick={() => props.onClose()}>\n                      {i18next.t(\"Close\")}\n                  </Button>\n              </DialogContent>\n          </Container>\n      </Dialog>\n    );\n}", "import {Box, styled} from \"@mui/material\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {ViewSubtitle} from \"@root/Frontend/Console/components/ViewSubtitle\";\nimport i18next from \"i18next\";\nimport {lightDark, lightPrimary} from \"@root/react-components/src/values/colors/colors\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {ListView, ListWrapper} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport React, {useEffect, useState} from \"react\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {FiltersInterface} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {TypeOS} from \"@backend/Types/TypeOS\";\nimport {AttemptItem} from \"@root/Frontend/Console/widgets/lists/AttemptItem\";\nimport {Attempt} from \"@root/react-components/src/icons/Attempt\";\nimport {getFilteredAttemptsLogs} from \"@root/Frontend/Console/utils/UtilsAttempts\";\nimport {NavLink} from \"react-router-dom\";\nimport {ENTITIES_BASE_PATH} from \"@root/Frontend/Console/Views/Entities/Entities\";\n\nconst Section = styled(Box)({\n    width: \"50%\",\n    minWidth: \"400px\",\n    paddingTop: \"30px\",\n    paddingLeft: \"10px\"\n});\n\nconst SectionHeader = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n});\n\nconst ListCount = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    font: primaryFontMedium\n});\n\nconst ItemsCount = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    marginRight: \"3px\",\n    \"& svg\": {\n        height: \"18px\",\n        width: \"18px\"\n    }\n});\n\ninterface EntityAttemptsListProps {\n    entityID: bigint;\n}\n\nexport default function EntityAttemptsList(props: EntityAttemptsListProps) {\n    // Structure is define as Map<attemptID, [worldID, sequenceID]>\n    const [attempts, setAttempts] = useState<Map<bigint, [bigint, bigint]>>(new Map());\n\n    useEffect(() => {\n        fetchAllEntityAttempts().then((entityAttempts: Map<bigint, [bigint, bigint]>) => setAttempts(entityAttempts));\n    }, []);\n\n    async function fetchAllEntityAttempts(): Promise<Map<bigint, [bigint, bigint]>> {\n        const filters: FiltersInterface = {\n            filterDate: FilterDateOptions.All_TIME,\n            filterOS: [TypeOS.APPLE, TypeOS.WEB, TypeOS.HOLOLENS],\n            selectedEntity: props.entityID,\n        }\n\n        const attempts: AttemptLogs[] = await getFilteredAttemptsLogs(filters);\n        const mapAttempts: Map<bigint, [bigint, bigint]> = new Map<bigint, [bigint, bigint]>();\n\n        // reverse to have most recent attempts on the top of the list\n        for (const attempt of attempts.reverse())\n            mapAttempts.set(attempt.attemptID, [attempt.worldID, attempt.sequenceID]);\n\n        return mapAttempts;\n    }\n\n    return (\n        <Section>\n            <SectionHeader>\n                <ViewSubtitle>{i18next.t(\"Attempts\")}</ViewSubtitle>\n                <ListCount>\n                    <ItemsCount>\n                        {attempts.size}&nbsp;\n                        <Attempt fill={lightDark}/>\n                    </ItemsCount>\n                    <NavLink style={{textDecoration: \"none\"}}\n                             to={ `${ENTITIES_BASE_PATH}/Entity/${props.entityID}/Attempts`}\n                    >\n                        <Button\n                            id=\"entityView-view-all-attempts-btn\"\n                            size=\"small\"\n                            style={{height: \"fit-content\", backgroundColor: lightPrimary}}\n                        >\n                            {i18next.t(\"View All\")}\n                        </Button>\n                    </NavLink>\n                </ListCount>\n            </SectionHeader>\n            <ListWrapper backgroundColor={lightPrimary}>\n                <ListView\n                    emptyListMessage={i18next.t(\"No attempts to display\")}\n                    itemCount={attempts.size}\n                    itemHeight={100}\n                >\n                    {(index: number) => {\n                        const attempt: [bigint, [bigint, bigint]] = [...attempts.entries()][index];\n                        const attemptID: bigint = attempt[0];\n                        const worldID: bigint = attempt[1][0];\n                        const sequenceID: bigint = attempt[1][1];\n\n                        return <AttemptItem attemptID={attemptID} worldID={worldID} sequenceID={sequenceID} />;\n                    }}\n                </ListView>\n            </ListWrapper>\n        </Section>\n    );\n}\n", "import React, {ReactElement, useEffect, useState} from \"react\"\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {ListViewItem} from \"@root/Frontend/Console/components/ListView/ListViewItem\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Box, styled} from \"@mui/material\";\nimport {primaryFontLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {timestampToString} from \"@utils/utils\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {NavLink} from \"react-router-dom\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport useIsMounted from \"../../utils/UseIsMounted\";\nimport {convertTypeOSToString, TypeOS} from \"@backend/Types/TypeOS\";\nimport {Entity} from \"@backend/Types/Entity\";\nimport {DataSourceEntities} from \"@root/Frontend/DataSources/DataSourceEntities\";\nimport {Entities} from \"@root/react-components/src/icons/Entities\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport {isMobileOnly} from \"react-device-detect\";\n\nconst RightSection = styled(Box)({\n    display: \"flex\",\n    width: \"100%\",\n    flexDirection: \"column\",\n    alignItems: \"end\",\n    gap: \"5px\",\n    minWidth: \"75px\"\n});\n\nconst Timestamp = styled(Box)({\n    font: primaryFontLarge,\n    textAlign: \"right\",\n});\n\nconst EntityAndMediaSection = styled(Box)({\n    font: secondaryFontMedium,\n    display: \"flex\",\n    gap: \"8px\",\n    alignItems: \"center\",\n     \"& svg\": {\n        height: \"12px\",\n        width: \"12px\",\n        marginRight: \"3px\"\n     }\n});\n\nexport function AttemptItem(props: {worldID: bigint, sequenceID: bigint, attemptID: bigint}): ReactElement {\n    const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n    const dataSourcePeers: DataSourcePeers = AppConsole.getInstance().dataSourcePeers;\n    const dataSourceEntities: DataSourceEntities = AppConsole.getInstance().dataSourceEntities;\n    const timestamp: string = timestampToString(UtilsShared.getTimestampOfRandomID(props.attemptID));\n    const [os, setOs] = useState<TypeOS>(null);\n    const [username, setUsername] = useState<string>(\"\");\n    const [fullName, setFullName] = useState<string>(\"\");\n    const [entityName, setEntityName] = useState<string>(\"\");\n    const isMounted = useIsMounted();\n\n    useEffect(() => {\n        dataSourceAttemptLogs.getAttemptLogs(props.worldID, props.sequenceID, props.attemptID)\n            .then(async(attemptLogs: AttemptLogs) => {\n                // Prevent setting state if unmounted because of virtualize\n                if (!attemptLogs || !isMounted()) return;\n\n                setOs(attemptLogs.os);\n                await setAttemptInfo(attemptLogs);\n            })\n    }, []);\n\n    async function setAttemptInfo(attempt: AttemptLogs): Promise<void> {\n        const peer: Peer = await dataSourcePeers.getPeer(attempt.peerID);\n\n        if (!isMounted()) return;\n\n        setUsername(peer.username);\n        setFullName(peer.fullName);\n\n        if (attempt.entityID) {\n            const entity: Entity = await dataSourceEntities.getEntityByID(attempt.entityID);\n           if (isMounted())\n                setEntityName(entity.Name.value);\n        }\n    }\n\n    if (!username)\n        return <CenteredLoading />;\n\n    return (\n        <NavLink\n            className=\"attempt-item\"\n            to={Analytics.BASE_PATH + \"/Worlds/\" + props.worldID + \"/Sequences/\" + props.sequenceID +\n                \"/Attempts/\"+ props.attemptID}\n            style={{textDecoration: \"none\", display: \"flex\"}}\n        >\n            <ListViewItem\n                roundThumbnail={!isMobileOnly}\n                loading={!username}\n                thumbnail={!isMobileOnly ?\n                    `https://secure.gravatar.com/avatar/${UtilsShared.md5(username)}?s=80&d=identicon` :\n                    \"\"}\n                title={fullName}\n                subtitle={username}\n            >\n                <RightSection>\n                    <Timestamp> {timestamp} </Timestamp>\n                    <EntityAndMediaSection>\n                        { Boolean(entityName) &&\n                            <>\n                                <Box style={{display: \"flex\", alignItems: \"center\"}}>\n                                    <Entities color={dark}/>{entityName}\n                                </Box>\n                                <Box> - </Box>\n                            </>\n                        }\n                        <Box> {convertTypeOSToString(os)} </Box>\n                    </EntityAndMediaSection>\n                </RightSection>\n            </ListViewItem>\n        </NavLink>\n    );\n}\n", "import React, {useEffect, useState} from \"react\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {FILTER_OS_LIST, FiltersInterface, FiltersRow} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {ListView, ListWrapper} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {lightGrey, white} from \"@root/react-components/src/values/colors/colors\";\nimport styled from \"styled-components\";\nimport {Box} from \"@mui/material\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {getFilteredAttemptsLogs} from \"@root/Frontend/Console/utils/UtilsAttempts\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {useParams} from \"react-router-dom\";\nimport i18next from \"i18next\";\nimport {AttemptItem} from \"@root/Frontend/Console/widgets/lists/AttemptItem\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {ENTITIES_BASE_PATH} from \"@root/Frontend/Console/Views/Entities/Entities\";\nimport {Entity} from \"@backend/Types/Entity\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {DataSourceEntities} from \"@root/Frontend/DataSources/DataSourceEntities\";\n\nconst FiltersWrapper = styled(Box)({\n    display: \"flex\",\n    alignItems: \"end\",\n    gap: \"10px\",\n    position: \"absolute\",\n    top: \"-55px\",\n    right: \"16px\",\n    font: primaryFontMedium\n});\n\ninterface EntityAttemptsListViewProps {\n    onMounted: (levels: BreadcrumbsLevel[]) => void;\n}\n\nexport default function EntityAttemptsListView(props: EntityAttemptsListViewProps) {\n    const appConsole: AppConsole = AppConsole.getInstance();\n    const dataSourceEntities: DataSourceEntities = appConsole.dataSourceEntities;\n    const entityID: bigint = UtilsShared.safelyConvertStringToBigInt(useParams<{entityID: string}>().entityID);\n\n    const defaultFiltersState: FiltersInterface = {\n        filterDate: FilterDateOptions.All_TIME,\n        filterOS: FILTER_OS_LIST,\n        selectedEntity: entityID\n    };\n\n    // Structure is define as Map<attemptID, [worldID, sequenceID]>\n    const [attempts, setAttempts] = useState<Map<bigint, [bigint, bigint]>>(new Map());\n    const [filters, setFilters] = useState<FiltersInterface>(defaultFiltersState)\n\n    useEffect(() => {\n        props.onMounted(getBreadcrumbsLevels());\n        fetchAllEntityAttempts().then((entityAttempts: Map<bigint, [bigint, bigint]>) => setAttempts(entityAttempts));\n    }, [filters])\n\n    function getEntitiesLevels(): BreadcrumbsLevel[] {\n        return [\n            {\n                link: ENTITIES_BASE_PATH,\n                getName(): Promise<string> {\n                    return i18next.t(\"Entities\")\n                }\n            },\n            {\n                link: `${ENTITIES_BASE_PATH}/Entity/${entityID}`,\n                async getName(): Promise<string> {\n                    const entity: Entity = await dataSourceEntities.getEntityByID(entityID);\n                    return entity.Name.value;\n                }\n            },\n            {\n                link: `${ENTITIES_BASE_PATH}/Entity/${entityID}/Attempts`,\n                getName(): Promise<string> {\n                    return i18next.t(\"Attempts\");\n                }\n            }\n        ];\n    }\n\n    function getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return getEntitiesLevels();\n    }\n\n    async function fetchAllEntityAttempts(): Promise<Map<bigint, [bigint, bigint]>> {\n        const attempts: AttemptLogs[] = await getFilteredAttemptsLogs(filters);\n        const mapAttempts: Map<bigint, [bigint, bigint]> = new Map<bigint, [bigint, bigint]>();\n\n        // reverse to have most recent attempts on the top of the list\n        for (const attempt of attempts.reverse())\n            mapAttempts.set(attempt.attemptID, [attempt.worldID, attempt.sequenceID]);\n\n        return mapAttempts;\n    }\n\n    return (\n        <>\n            <FiltersWrapper>\n                <FiltersRow\n                    filters={filters}\n                    handleOnChangeFilter={(filters: FiltersInterface) => setFilters(filters)}\n                />\n            </FiltersWrapper>\n            <ListWrapper backgroundColor={white} scrollbarcolor={lightGrey} height=\"100%\">\n                <ListView\n                    emptyListMessage={i18next.t(\"No attempts to display\")}\n                    itemCount={attempts.size}\n                    itemHeight={100}\n                >\n                    {(index: number) => {\n                        const attempt: [bigint, [bigint, bigint]] = [...attempts.entries()][index];\n                        const attemptID: bigint = attempt[0];\n                        const worldID: bigint = attempt[1][0];\n                        const sequenceID: bigint = attempt[1][1];\n\n                        return <AttemptItem attemptID={attemptID} worldID={worldID} sequenceID={sequenceID} />;\n                    }}\n                </ListView>\n            </ListWrapper>\n        </>\n    );\n}\n", "import React from \"react\";\nimport {Box} from \"@mui/material\";\nimport {DataSourceSequences, Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport LargeNumberDisplay from \"@root/Frontend/Console/components/LargeNumberDisplay\";\nimport {darkenPrimary, primary} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\n\ninterface WorldAnalyticsSummaryProps {\n    worldID: bigint;\n    sequenceIDs: bigint[];\n}\n\nexport class WorldAnalyticsSummary extends React.Component {\n    private readonly dataSourceSequence: DataSourceSequences = AppConsole.getInstance().dataSourceSequences;\n\n    props: WorldAnalyticsSummaryProps;\n    state: { sequenceCaptureCounter: number, sequenceActivesCounter: number } =\n        { sequenceCaptureCounter: 0, sequenceActivesCounter: 0 }\n\n    async componentDidMount() {\n        if (!this.props.sequenceIDs.length)\n            return;\n\n        let sequenceCaptureCounter: number = 0;\n        let sequenceActivesCounter: number = 0;\n        let sequence: Sequence | null = null;\n        for (const sequenceID of this.props.sequenceIDs) {\n            sequence = await this.dataSourceSequence.getSequence(this.props.worldID, sequenceID);\n\n            if (sequence?.Video?.value)\n                sequenceCaptureCounter += 1;\n\n            if (sequence?.PeerPublisher.value)\n                sequenceActivesCounter += 1;\n        }\n\n        this.setState({ sequenceCaptureCounter, sequenceActivesCounter });\n    }\n\n    render() {\n        return (\n            <Box style={{ display: \"flex\", gap: \"32px\", padding: \"16px 0px 24px\" }}>\n                <LargeNumberDisplay title={i18next.t(\"Published\")} backgroundColor={darkenPrimary}>\n                    <>{this.state.sequenceActivesCounter}</>\n                </LargeNumberDisplay>\n                <LargeNumberDisplay title={i18next.t(\"Capture\")} backgroundColor={primary}>\n                    <>{this.state.sequenceCaptureCounter}</>\n                </LargeNumberDisplay>\n            </Box>\n        );\n    }\n}\n", "import React from \"react\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {RouteComponentProps} from \"react-router\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {WorldsView} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldsView\";\nimport {WorldView} from \"@root/Frontend/Console/Views/Analytics/World/WorldView\";\nimport i18next from \"i18next\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {withRouter} from \"react-router-dom\";\nimport {SequenceItem} from \"@root/Frontend/Console/Views/Analytics/SequencesList/SequenceItem\";\nimport {ListView} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {getWorldSequences} from \"@root/Frontend/Console/utils/UtilsWorlds\";\n\ninterface SequencesListState { sequenceIDs: bigint[]; }\n\nexport class SequencesList extends RouterView<RouteComponentProps<{worldID: string}>> {\n    static getWorldSequencesLevel(worldID: bigint): BreadcrumbsLevel {\n        return {\n            link: Analytics.BASE_PATH + \"/Worlds/\" + worldID + \"/Sequences\",\n            async getName(){\n                return i18next.t(\"Sequences\")\n            }\n        }\n    }\n    worldID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.worldID);\n    state: SequencesListState = { sequenceIDs: [] };\n\n    override getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [\n            WorldsView.worldsLevel(),\n            WorldView.getLevelForWorld(this.worldID),\n            SequencesList.getWorldSequencesLevel(this.worldID)\n        ];\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        const sequenceIDs: bigint[] = await getWorldSequences(this.worldID, true);\n        this.setState({ sequenceIDs });\n    }\n\n    render() {\n        return (\n            <ListView\n                emptyListMessage={i18next.t(\"No Sequences to display\")}\n                itemCount={this.state.sequenceIDs.length}\n                itemHeight={90}\n            >\n                {(index: number) => {\n                    const sequenceID: bigint = this.state.sequenceIDs[index];\n                    return <SequenceItem worldID={this.worldID} sequenceID={sequenceID} />\n                }}\n            </ListView>\n        );\n    }\n}\n\nexport const SequencesListWithRouter = withRouter(SequencesList);\n", "import React from \"react\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {RouteComponentProps} from \"react-router\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {WorldsView} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldsView\";\nimport {WorldView} from \"@root/Frontend/Console/Views/Analytics/World/WorldView\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {withRouter} from \"react-router-dom\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {SequencesList} from \"@root/Frontend/Console/Views/Analytics/SequencesList/SequencesList\";\nimport {SequenceUsageSummary} from \"@root/Frontend/Console/Views/Analytics/SequenceView/SequenceUsageSummary\";\nimport {MedianTimePerStepWaterfallGraph} from \"@root/Frontend/Console/widgets/MedianTimePerStepWaterfallGraph\";\nimport styled from \"styled-components\";\nimport {DataSourceSequences, Sequence, StepTypeID} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {Box, Breakpoint} from \"@mui/material\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {StepListSection} from \"@root/Frontend/Console/Views/Analytics/SequenceView/StepListSection\";\nimport {AttemptsListSection} from \"@root/Frontend/Console/Views/Analytics/SequenceView/AttemptsListSection\";\nimport {VersioningSequenceFilter} from \"@root/Frontend/Console/Views/Analytics/SequenceView/VersioningSequenceFilter\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {FILTER_OS_LIST, FiltersInterface, FiltersRow} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {\n    canPeerEditWorld,\n    getWorldGroups,\n    getWorldPeerIDs,\n} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {World} from \"@backend/Types/World\";\n\nconst SEQUENCE_VIEW_LIST_GAP: Map<Breakpoint, string> = new Map<Breakpoint, string>([\n    [\"sm\", \"16px\"],\n    [\"md\", \"24px\"],\n    [\"lg\", \"36px\"],\n    [\"xl\", \"44px\"],\n]);\n\nconst FiltersWrapper = styled(Box)({\n    display: \"flex\",\n    alignItems: \"end\",\n    gap: \"10px\",\n    position: \"absolute\",\n    top: \"-55px\",\n    right: \"16px\",\n    font: primaryFontMedium\n});\n\nconst ListsContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: SEQUENCE_VIEW_LIST_GAP.get(\"sm\"),\n    [theme.breakpoints.up('lg')]: {\n        gap: SEQUENCE_VIEW_LIST_GAP.get(\"md\"),\n    },\n    [theme.breakpoints.up('lg')]: {\n        gap: SEQUENCE_VIEW_LIST_GAP.get(\"lg\"),\n        flexDirection: \"row\",\n    },\n    [theme.breakpoints.up('xl')]: {\n        gap: SEQUENCE_VIEW_LIST_GAP.get(\"xl\"),\n    }\n});\n\ninterface SequenceViewState {\n    canEditWorld: boolean;\n    entityIDs: bigint[];\n    filters: FiltersInterface;\n    groupIDs: bigint[];\n    peerIDs: bigint[];\n    sequenceID: bigint;\n    steps: StepTypeID[];\n}\n\nexport class SequenceView extends RouterView<RouteComponentProps<{worldID: string, sequenceID: string}>> {\n    readonly worldID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.worldID);\n\n    state: SequenceViewState = {\n        sequenceID: UtilsShared.safelyConvertStringToBigInt(this.props.match.params.sequenceID),\n        steps: [],\n        filters: {\n            filterDate: FilterDateOptions.All_TIME,\n            filterOS: FILTER_OS_LIST,\n            selectedPeer: BigInt(0),\n            selectedEntity: BigInt(0),\n            selectedGroupID: BigInt(0),\n        },\n        groupIDs: [],\n        peerIDs: [],\n        entityIDs: [],\n        canEditWorld: false\n    };\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        const app: AppConsole = AppConsole.getInstance();\n\n        const currentWorld: World = await app.dataSourceWorlds.getWorld(this.worldID);\n        const sequence: Sequence = await app.dataSourceSequences.getSequence(this.worldID, this.state.sequenceID);\n        const canEditWorld: boolean = await canPeerEditWorld(app.currentPeerID, this.worldID);\n\n\n        // get all the peers that have access to the world (direct and through groups)\n        const peerIDs: bigint[] = [...await getWorldPeerIDs(this.worldID)];\n        // get all the groups that have access to the world\n        const groupIDs: bigint[] = [...await getWorldGroups(this.worldID)];\n\n        const searchParams: URLSearchParams = new URLSearchParams(window.location.search);\n        // Retrieve the peerID from the URL if it exists\n        const selectedPeer: bigint = UtilsShared.safelyConvertStringToBigInt(searchParams.get(\"peerID\") ?? \"0\");\n        // Retrieve the groupID from the URL if it exists\n        const selectedGroupID: bigint = UtilsShared.safelyConvertStringToBigInt(searchParams.get(\"groupID\") ?? \"0\");\n\n        this.setState((prevState: SequenceViewState) => ({\n            steps: sequence.Steps.value,\n            entityIDs: currentWorld.Entities.value,\n            peerIDs,\n            groupIDs,\n            canEditWorld,\n            filters: {...prevState.filters, selectedPeer, selectedGroupID}\n        }));\n    }\n\n    static sequenceLevel(worldID: bigint, sequenceID: bigint): BreadcrumbsLevel {\n        return {\n            link: `${Analytics.BASE_PATH}/Worlds/${worldID}/Sequences/${sequenceID}`,\n            async getName()  {\n                const dataSourceSequences: DataSourceSequences = AppConsole.getInstance().dataSourceSequences;\n                const sequence: Sequence = await dataSourceSequences.getSequence(worldID, sequenceID);\n                return sequence.Title.value;\n            }\n        }\n    }\n\n    getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [\n            WorldsView.worldsLevel(),\n            WorldView.getLevelForWorld(this.worldID),\n            SequencesList.getWorldSequencesLevel(this.worldID),\n            SequenceView.sequenceLevel(this.worldID, this.state.sequenceID)\n        ];\n    }\n\n    render() {\n        return (\n            <Box style={{paddingBottom: 24}}>\n                <FiltersWrapper>\n                    <FiltersRow\n                        filters={this.state.filters}\n                        handleOnChangeFilter={(filters: FiltersInterface) => this.setState({ filters })}\n                        peerIDs={this.state.peerIDs}\n                        groupIDs={this.state.groupIDs}\n                        allEntities={this.state.entityIDs}\n                        disablePeerFilter={!this.state.canEditWorld}\n                        onlyGroups\n                    />\n                    <VersioningSequenceFilter\n                        worldID={this.worldID}\n                        sequenceID={this.state.sequenceID}\n                        changeSequence={(sequenceID: bigint) =>\n                            // modify the sequenceID first, then adjust the title of the breadcrumb sequence\n                            this.setState({ sequenceID }, () => this.props.viewDidMount?.(this.getBreadcrumbsLevels()))\n                        }\n                    />\n                </FiltersWrapper>\n                <SequenceUsageSummary\n                    worldID={this.worldID}\n                    sequenceID={this.state.sequenceID}\n                    filters={this.state.filters}\n                />\n                <MedianTimePerStepWaterfallGraph\n                    worldID={this.worldID}\n                    sequenceID={this.state.sequenceID}\n                    filters={this.state.filters}\n                />\n                <ListsContainer>\n                    <StepListSection worldID={this.worldID} sequenceID={this.state.sequenceID} />\n                    <AttemptsListSection\n                        worldID={this.worldID}\n                        sequenceID={this.state.sequenceID}\n                        filters={this.state.filters}\n                    />\n                </ListsContainer>\n            </Box>\n        );\n    }\n}\n\nexport const SequenceViewWithRouter = withRouter(SequenceView);\n\n", "import {SmartComponent} from \"@utils/SmartComponent\";\nimport React from \"react\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {UtilsStats} from \"@backend/Utils/UtilsStats\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport i18next from \"i18next\";\nimport {TimeAmount, TimeUnit} from \"@utils/utils\";\nimport {darkenPrimary, lightPrimary, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {Box, styled} from \"@mui/material\";\nimport {FiltersInterface} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {parseAttemptsByFilters} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport isEqual from \"lodash/isEqual\";\nimport LargeNumberDisplay from \"@root/Frontend/Console/components/LargeNumberDisplay\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {calculateGrade,\n    isAttemptCompleted\n} from \"@root/Frontend/Console/utils/UtilsAttempts\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"row\",\n    gap: \"32px\",\n    padding: \"16px\",\n    [theme.breakpoints.down('sm')]: {\n        flexDirection: \"column\",\n        padding: \"0px\",\n        gap: \"16px\"\n    },\n});\n\ninterface SequenceUsageSummaryProps {\n    worldID: bigint;\n    sequenceID: bigint;\n    filters: FiltersInterface;\n}\n\ninterface SequenceUsageSummaryState {\n    isEvaluation: boolean | null;\n    usage: number;\n    avgTimePerAttempt: number;\n    completedSequenceCount: number;\n    percentageSatisfaction: number | null;\n}\n\nexport class SequenceUsageSummary extends SmartComponent {\n    private readonly app: AppConsole = AppConsole.getInstance();\n\n    props: SequenceUsageSummaryProps;\n    state: SequenceUsageSummaryState = {\n        isEvaluation: null,\n        usage: 0,\n        avgTimePerAttempt: 0,\n        completedSequenceCount: 0,\n        percentageSatisfaction: null\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        await this.updateSequenceUsageSummary(this.props.worldID, this.props.sequenceID);\n    }\n\n    async componentDidUpdate(prevProps: Readonly<SequenceUsageSummaryProps>) {\n        if (prevProps.sequenceID !== this.props.sequenceID || !isEqual(prevProps.filters, this.props.filters))\n            await this.updateSequenceUsageSummary(this.props.worldID, this.props.sequenceID);\n    }\n\n    private async updateSequenceUsageSummary(worldID: bigint, sequenceID: bigint) {\n        let attempts: AttemptLogs[] =\n            await this.app.dataSourceAttemptLogs.getAllAttemptLogs(this.props.worldID, this.props.sequenceID);\n\n        const sequence: Sequence =\n            await this.app.dataSourceSequences.getSequence(worldID, sequenceID);\n\n        // filter attempts\n        attempts = await parseAttemptsByFilters(attempts, this.props.filters);\n        attempts = attempts.filter(async (attempt: AttemptLogs) => {\n            const sequenceAttempt: Sequence = await this.app.dataSourceSequences.getSequence(worldID, attempt.sequenceID);\n            isAttemptCompleted(sequenceAttempt, attempt);\n        });\n\n        // calculate statistics\n        const isEvaluation: boolean = Boolean(sequence.ObjectiveGrade.value);\n        const avgTime: number = UtilsStats.computeAverageAttemptTime(attempts);\n        const percentageSatisfaction: number | null = this.calculPercentageSatisfaction(sequence.Feedback.value);\n\n        this.setState({\n            isEvaluation,\n            usage: avgTime * attempts.length,\n            avgTimePerAttempt: avgTime,\n            completedSequenceCount: isEvaluation ?\n                await this.calculatePassingGradeCount(attempts, sequence) : attempts.length,\n            percentageSatisfaction\n        });\n    }\n\n    private async calculatePassingGradeCount(attempts: AttemptLogs[], sequence: Sequence) : Promise<number> {\n        let passingGradesCount: number = 0;\n        for (const attempt of attempts) {\n            if (await calculateGrade(attempt) >= sequence.ObjectiveGrade.value)\n                passingGradesCount++;\n        }\n        return passingGradesCount;\n    }\n\n    private calculPercentageSatisfaction(feedbackByAttemptID: Record<string, boolean>): number | null {\n        const feedbacks: boolean[] = Object.values(feedbackByAttemptID);\n\n        if (feedbacks.length === 0)\n            return null;\n\n        const positiveFeedbackCount: number = feedbacks.filter((feedback: boolean) => feedback).length;\n        return Math.round((positiveFeedbackCount / feedbacks.length) * 100);\n    }\n\n    render(): JSX.Element {\n        const avgTimePerAttempt: string =\n            new TimeAmount(Number(this.state.avgTimePerAttempt), TimeUnit.SECONDS).toPrettyHumanTime(true);\n\n        if (this.state.isEvaluation === null)\n            return <CenteredLoading />;\n\n        return (\n            <Container>\n                <LargeNumberDisplay\n                    title={i18next.t(this.state.isEvaluation ? \"Passing Grades\" : \"Completed Attempts\")}\n                    backgroundColor={darkenPrimary}\n                >\n                    <Box>\n                        {this.state.completedSequenceCount}\n                    </Box>\n                </LargeNumberDisplay>\n                <LargeNumberDisplay title={i18next.t(\"Average Time Per Attempt\")} backgroundColor={primary}>\n                    <Box>{avgTimePerAttempt}</Box>\n                </LargeNumberDisplay>\n                <LargeNumberDisplay title={i18next.t(\"Satisfaction\")} backgroundColor={lightPrimary}>\n                    <Box>\n                        {this.state.percentageSatisfaction === null ?\n                            i18next.t(\"No reviews\") :\n                            `${this.state.percentageSatisfaction}%`}\n                    </Box>\n                </LargeNumberDisplay>\n            </Container>\n        );\n    }\n}\n", "import React from \"react\";\nimport { Bar, BarChart, CartesianGrid, Cell, ErrorBar, ResponsiveContainer,\n    Tooltip as RechartsTooltip, XAxis, YAxis } from \"recharts\";\nimport {darkenPrimary, darkenWhite, darkGrey, lighterDark,\n    lightPrimary, lightWhite, primary} from \"@root/react-components/src/values/colors/colors\";\nimport styled from \"styled-components\";\nimport {primaryFontLarge, primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {ViewSubtitle} from \"@root/Frontend/Console/components/ViewSubtitle\";\nimport i18next from \"i18next\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {UtilsStats, QuartileData} from \"@backend/Utils/UtilsStats\";\nimport {TimeAmount, TimeUnit} from \"@utils/utils\";\nimport {Checkbox} from \"@root/react-components/src/inputs/Checkbox\";\nimport {InfoCircle} from \"@root/react-components/src/icons/InfoCircle\";\nimport {GreenArrow} from \"@root/react-components/src/svg/GreenArrow\";\nimport {Mustache} from \"@root/react-components/src/svg/Mustache\";\nimport {RedArrow} from \"@root/react-components/src/svg/RedArrow\";\nimport {FiltersInterface} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {parseAttemptsByFilters} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport isEqual from \"lodash/isEqual\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {DataSourceSequences, Sequence, StepTypeID} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {NoDataToDisplay} from \"@root/Frontend/Console/components/NoDataToDisplay\";\nimport {DataSourceText, TextData} from \"@root/Frontend/DataSources/DataSourceText\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\n\nconst Wrapper = styled.div`\n    background-color: ${lightWhite};\n    width: 100%;\n    border-radius: 24px;\n    font: ${primaryFontLarge};\n    padding: 24px 24px 12px 24px;\n    box-sizing: border-box;\n    border: 1px solid ${darkenWhite};\n    color: ${lighterDark};  \n`;\n\nconst ScrollWrapper = styled.div`\n    overflow-x: auto;\n    overflow-y: hidden;\n\n    ::-webkit-scrollbar-thumb {\n        background-color: ${primary};\n        border: 2px solid transparent;\n        border-radius: 8px;\n        background-clip: padding-box;\n    }\n\n    ::-webkit-scrollbar {\n        width: 16px;\n    }\n`\n\nconst TitleWrapper = styled.div` \n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    flex-wrap: wrap;\n    margin: 30px 6px 12px 6px;\n`\n\nconst TooltipWrapper = styled.div`\n    background-color: white;\n    border: solid 1px rgb(204, 204, 204);\n    padding: 10px;\n`\n\nconst TooltipText = styled.p<{ color: string }>`\n    color: ${props => props.color};\n    margin: 0 0 6px 0;\n`\n\nconst TitleContainer = styled.div`\n    display: flex;\n    align-items: center; \n`\n\nconst InfoIconContainer = styled.div`\n    display: flex;\n    justify-content: flex-start;\n    align-items: flex-start;\n    & svg {\n        width: 16px;\n        height: 16px;\n    }\n`\n\nconst InfoTooltipImagesContainer = styled.div`\n    display: grid;\n    grid-template-columns: auto auto;\n    grid-gap: 8px;\n`\nconst InfoTooltipImage = styled.div`\n     align-self: center;\n     justify-items: start;\n     svg {\n        height: 30px;\n        width: 50px;\n     }\n`\n\nconst InfoTooltipText = styled.div`\n    align-self: center;\n    justify-items: start;\n    max-width: 200px;\n    font: ${primaryFontMedium}\n`\n\ntype ReChartData = {\n    stepID: string,\n    time: [number, number],\n    errorY?: [number, number],\n}\n\ntype TooltipData = {\n    active: boolean,\n    payload: { payload: ReChartData }[]\n}\n\ninterface State {\n    stepIDs: bigint[];\n    stepTitles: Map<bigint, string>;\n    quartilesPerStep: Map<bigint, QuartileData>;\n    showErrorBars: boolean;\n}\n\ninterface MedianTimePerStepWaterfallGraphProps {\n    worldID: bigint;\n    sequenceID: bigint;\n    filters: FiltersInterface;\n}\n\nexport class MedianTimePerStepWaterfallGraph extends SmartComponent {\n    static readonly HEIGHT: number = 400;\n    static readonly STEPS_RESPONSIVE_THRESHOLD: number = 35;\n\n    props: MedianTimePerStepWaterfallGraphProps;\n    state: State = {\n        stepIDs: null,\n        stepTitles: null,\n        quartilesPerStep: null,\n        showErrorBars: true,\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        await this.reloadMedianTimePerStep();\n    }\n\n    override async componentDidUpdate(prevProps: MedianTimePerStepWaterfallGraphProps) {\n        if (!isEqual(this.props.filters, prevProps.filters) || prevProps.sequenceID !== this.props.sequenceID)\n            await this.reloadMedianTimePerStep();\n    }\n\n    async reloadMedianTimePerStep() {\n        const app: AppConsole = AppConsole.getInstance();\n        const dataSourceSequences: DataSourceSequences = app.dataSourceSequences;\n        const dataSourceAttemptLogs: DataSourceAttemptLogs = app.dataSourceAttemptLogs;\n        const dataSourceSteps: DataSourceSteps = app.dataSourceSteps;\n        const dataSourceText: DataSourceText = app.dataSourceText;\n\n        // get the sequence\n        const sequence: Sequence = await dataSourceSequences.getSequence(this.props.worldID, this.props.sequenceID);\n        // get stepID in order\n        const stepIDs: bigint[] = sequence.Steps.value.map((step: StepTypeID) => step.ID);\n\n        // fetch all attempt logs\n        let allAttemptsLogs: AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(this.props.worldID,\n                                                                                           this.props.sequenceID);\n        allAttemptsLogs = await parseAttemptsByFilters(allAttemptsLogs, this.props.filters);\n\n        // compute all quartiles\n        const timesPerStep = UtilsStats.getTimesSpentPerStep(allAttemptsLogs);\n        const quartilesPerStep = UtilsStats.computeQuartilesPerStep(timesPerStep);\n\n        // get step titles\n        const stepTitles: Map<bigint, string> = new Map();\n        for (const id of stepIDs) {\n            const step: StepData = await dataSourceSteps.getStep(this.props.worldID, this.props.sequenceID, id);\n            const text: TextData = await dataSourceText.getText(step.Text.value);\n            stepTitles.set(id, text.OriginalText.value);\n        }\n\n        this.setState({\n            stepIDs,\n            stepTitles,\n            quartilesPerStep\n        });\n    }\n\n    getTooltipInfo(){\n        return <div>\n            <InfoTooltipImagesContainer>\n                <InfoTooltipImage>\n                    <RedArrow />\n                </InfoTooltipImage>\n                <InfoTooltipText>\n                    {i18next.t(\"Employees above the bars are slower than the rest (25% of employees)\")}\n                </InfoTooltipText>\n                <InfoTooltipImage>\n                    <Mustache />\n                </InfoTooltipImage>\n                <InfoTooltipText>\n                    {i18next.t(\"50% of employees are between these bars\")}\n                </InfoTooltipText>\n                <InfoTooltipImage>\n                    <GreenArrow />\n                </InfoTooltipImage>\n                <InfoTooltipText>\n                    {i18next.t(\"Employees under the bars are faster than the rest (25% of employees)\")}\n                </InfoTooltipText>\n            </InfoTooltipImagesContainer>\n        </div>\n    }\n\n    getDataForReCharts(): ReChartData[]{\n        const reChartData: ReChartData[] = [];\n        let currentTotal = 0;\n\n        for (const stepID of this.state.stepIDs) {\n            if (this.state.quartilesPerStep.has(stepID)) {\n                const stepQuartiles = this.state.quartilesPerStep.get(stepID);\n                reChartData.push({\n                    stepID: stepID.toString(),\n                    time: [currentTotal, currentTotal + stepQuartiles.median],\n                    errorY: [stepQuartiles.median - stepQuartiles.firstQuartile,\n                        stepQuartiles.thirdQuartile - stepQuartiles.median],\n                });\n\n                currentTotal += stepQuartiles.median;\n            } else\n                reChartData.push({\n                    stepID: stepID.toString(),\n                    time: [0, 0],\n                    errorY: [-currentTotal,currentTotal]\n                });\n        }\n\n        reChartData.push({\n            stepID: BigInt(0).toString(),\n            time: [0, currentTotal]\n        });\n\n        return reChartData;\n    }\n\n    renderTooltip(tooltipData: TooltipData) {\n        // verify if we should render the tooltip at all\n        if (!tooltipData.active || !tooltipData.payload || !tooltipData.payload.length)\n            return null;\n\n        const barData: ReChartData = tooltipData.payload[0].payload\n        const stepID: bigint = BigInt(barData.stepID);\n        const index: number = this.state.stepIDs.indexOf(stepID);\n\n        // tooltip for the total bar\n        if (stepID === BigInt(0)) {\n            return <TooltipWrapper>\n                <TooltipText color={darkGrey}>{i18next.t(\"Total\")}</TooltipText>\n                <TooltipText color={primary}>\n                    {`${i18next.t(\"Median\")}: ${barData.time[1] - barData.time[0]}s`}\n                </TooltipText>\n            </TooltipWrapper>\n        }\n\n        // tooltip for a step in the waterfall\n        // quartiles !== undefined check for unattempted step\n        const quartiles = this.state.quartilesPerStep.get(stepID);\n\n        return <TooltipWrapper>\n            <TooltipText color={darkGrey}>{`${index + 1}. ${this.state.stepTitles.get(stepID)}`}</TooltipText>\n            {quartiles === undefined ?\n                <TooltipText color={darkenPrimary} style={{maxWidth:\"120px\", wordWrap:\"break-word\"}}>\n                    {i18next.t(\"This step has never been attempted\")}\n                </TooltipText>\n                :\n                <>\n                    <TooltipText color={darkenPrimary}>\n                        {i18next.t(\"Third quartile\") + \": \" +\n                            new TimeAmount(quartiles.thirdQuartile,\n                                TimeUnit.SECONDS).toPrettyHumanTime(true)}\n                    </TooltipText>\n                    <TooltipText color={primary}>\n                        {i18next.t(\"Median\") + \": \" +\n                            new TimeAmount(quartiles.median,\n                                TimeUnit.SECONDS).toPrettyHumanTime(true)}\n                    </TooltipText>\n                    <TooltipText color={lightPrimary}>\n                        {i18next.t(\"First quartile\") + \": \" +\n                            new TimeAmount(quartiles.firstQuartile,\n                                TimeUnit.SECONDS).toPrettyHumanTime(true)}\n                    </TooltipText>\n                </>\n            }\n        </TooltipWrapper>\n    }\n\n    renderGraph() {\n        if (!this.state.quartilesPerStep || !this.state.stepIDs || !this.state.stepTitles)\n            return <CenteredLoading />;\n\n        const graphData = this.getDataForReCharts();\n\n        if (graphData.length <= 1 || this.state.quartilesPerStep.size <= 0)\n            return <NoDataToDisplay/>;\n\n        const exceedsStepThreshold: boolean =\n            this.state.stepIDs.length > MedianTimePerStepWaterfallGraph.STEPS_RESPONSIVE_THRESHOLD;\n        // minimum 10px per bar\n        return <div style={{ minWidth: 50 + graphData.length * 10}}>\n            <ResponsiveContainer\n                width={exceedsStepThreshold ? (this.state.stepIDs.length * 35) : \"100%\"}\n                height={MedianTimePerStepWaterfallGraph.HEIGHT - 24}\n            >\n                <BarChart\n                    data={graphData}\n                    barSize={exceedsStepThreshold ? 35 : undefined}\n                >\n                    <CartesianGrid strokeDasharray=\"3 3\" />\n                    <XAxis dataKey={\"stepID\"} interval={0}\n                       tick={(props: any) => {\n                           const stepTitle: string = this.state.stepTitles.get(BigInt(props.payload.value)) ?? \"\";\n                           return <g transform={`translate(${props.x},${props.y})`}>\n                               <Tooltip title={props.index < graphData.length - 1 && stepTitle} placement={\"top\"}>\n                                   <text x={0} y={0} dy={16} textAnchor=\"middle\" fill=\"#666\">\n                                       {props.index === graphData.length - 1 ? \"Total\" : (props.index + 1).toString()}\n                                   </text>\n                               </Tooltip>\n                           </g>\n                       }}\n                    />\n                    <YAxis domain={[0, 'dataMax']} allowDataOverflow={true}\n                        tickFormatter={(seconds: number) => {\n                            if(!seconds)\n                                return \"0s\";\n                            return new TimeAmount(seconds, TimeUnit.SECONDS).toPrettyHumanTime(true);\n                        }}\n                    />\n                    <RechartsTooltip cursor={false} content={this.renderTooltip.bind(this)}/>\n                    <Bar dataKey=\"time\" fill={lightPrimary}>\n                        {// set last bar darker since it's total median\n                        graphData.map((offset, index) =>\n                            <Cell key={\"time-\" + index}\n                                fill={index === graphData.length - 1 ? darkenPrimary : lightPrimary} />)\n                        }\n                        {this.state.showErrorBars &&\n                            <ErrorBar dataKey=\"errorY\" strokeWidth={2} stroke={darkenPrimary} direction=\"y\"/>\n                        }\n                    </Bar>\n                </BarChart>\n            </ResponsiveContainer>\n        </div>;\n    }\n\n    render() {\n        return <>\n            <TitleWrapper>\n                <TitleContainer>\n                    <ViewSubtitle style={{ margin: \"0 5px 0 0\" }}>\n                        {i18next.t(\"Median Time per Step\")}\n                    </ViewSubtitle>\n                    <Tooltip title={this.getTooltipInfo()} placement={\"right\"}>\n                        <InfoIconContainer>\n                            <InfoCircle />\n                        </InfoIconContainer>\n                    </Tooltip>\n                </TitleContainer>\n                <Checkbox\n                    label={i18next.t(\"Show Error Bars\")}\n                    onClick={(checked: boolean) => this.setState({ showErrorBars: !checked })}\n                    checked={this.state.showErrorBars}\n                />\n            </TitleWrapper>\n            <Wrapper>\n                <ScrollWrapper style={{height: MedianTimePerStepWaterfallGraph.HEIGHT - 20}}>\n                    {this.renderGraph()}\n                </ScrollWrapper>\n            </Wrapper>\n        </>\n    }\n}\n", "import React from \"react\";\n\nexport const InfoCircle = () => <svg width=\"512\" height=\"512\" viewBox=\"0 0 512 512\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M256 462.5C370.047 462.5 462.5 370.047 462.5 256C462.5 141.953 370.047 49.5 256 49.5C141.953 49.5 49.5 141.953 49.5 256C49.5 370.047 141.953 462.5 256 462.5ZM511.5 256C511.5 397.109 397.109 511.5 256 511.5C114.891 511.5 0.5 397.109 0.5 256C0.5 114.891 114.891 0.5 256 0.5C397.109 0.5 511.5 114.891 511.5 256Z\" fill=\"#23292F\" stroke=\"black\"/>\n    <path d=\"M222.312 342.743H232.625V268.257H222.312C216.617 268.257 212 263.64 212 257.944V233.312C212 227.617 216.617 223 222.312 223H280.062C285.758 223 290.375 227.617 290.375 233.312V342.743H300.688C306.383 342.743 311 347.36 311 353.056V377.688C311 383.383 306.383 388 300.688 388H222.312C216.617 388 212 383.383 212 377.688V353.056C212 347.36 216.617 342.743 222.312 342.743ZM261.5 124C240.996 124 224.375 140.621 224.375 161.125C224.375 181.629 240.996 198.25 261.5 198.25C282.004 198.25 298.625 181.629 298.625 161.125C298.625 140.621 282.003 124 261.5 124Z\" fill=\"#23292F\"/>\n</svg>\n", "import React from \"react\";\n\nexport const GreenArrow = () =>\n    <svg width=\"118\" height=\"103\" viewBox=\"0 0 118 103\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M89 42H29V0H89V42Z\" fill=\"#1DBA2C\"/>\n        <path d=\"M59 103L0.976318 40H117.024L59 103Z\" fill=\"#1DBA2C\"/>\n    </svg>", "import React from \"react\";\n\nexport const Mustache = () => <svg width=\"30\" height=\"105\" viewBox=\"0 0 30 105\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M30 5H0V0H30V5Z\" fill=\"black\"/>\n    <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M30 105H0V100H30V105Z\" fill=\"black\"/>\n    <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M13 105V5H18V105H13Z\" fill=\"black\"/>\n</svg>\n", "import React from \"react\";\n\nexport const RedArrow = () => <svg width=\"118\" height=\"103\" viewBox=\"0 0 118 103\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M29 61H89V103H29V61Z\" fill=\"#EB4040\"/>\n    <path d=\"M59 0L117.024 63H0.976318L59 0Z\" fill=\"#EB4040\"/>\n</svg>", "import React from \"react\"\nimport {Sequence, StepTypeID} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {ViewSubtitle} from \"@root/Frontend/Console/components/ViewSubtitle\";\nimport i18next from \"i18next\";\nimport {AppConsole, StepsIcon} from \"@root/Frontend/Console/AppConsole\";\nimport {NavLink} from \"react-router-dom\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {ListView, ListWrapper} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {StepItem} from \"@root/Frontend/Console/Views/Analytics/StepsList/StepItem\";\nimport {Box, styled} from \"@mui/material\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {white} from \"@root/react-components/src/values/colors/colors\";\nimport {exportPdf} from \"@root/Frontend/Console/utils/UtilsPdf\";\nimport {sanitizeFileName, timestampToShortString} from \"@utils/utils\";\nimport {ExporterSequencePDF} from \"./ExporterSequencePDF\";\n\nconst ListContainer = styled(Box)({\n    flex: 1,\n    display: \"flex\",\n    flexDirection: \"column\"\n})\n\nconst TitleWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n})\n\nconst ListCount = styled(Box)({\n    display: \"flex\",\n    font: primaryFontMedium,\n    alignItems: \"center\",\n    padding: \"24px 0 12px\",\n    gap: \"8px\"\n})\n\nconst StepCountIconContainer = styled(Box)({\n    display: \"flex\",\n    alignItem: \"center\",\n    \"& svg\" : {\n        marginLeft: \"3px\",\n        height: \"16px\",\n        width: \"16px\"\n    }\n});\n\ninterface StepListSectionProps {\n    worldID: bigint;\n    sequenceID: bigint;\n}\n\ninterface StepListSectionState {\n    steps: StepTypeID[];\n    isSavingPdf: boolean;\n}\n\nexport class StepListSection extends React.Component {\n    private readonly appConsole: AppConsole = AppConsole.getInstance();\n    private readonly exporterSequencePDF: ExporterSequencePDF = new ExporterSequencePDF();\n    props: StepListSectionProps\n    state: StepListSectionState = { steps: [], isSavingPdf: false }\n\n    async componentDidMount() {\n        const sequence: Sequence =\n            await this.appConsole.dataSourceSequences.getSequence(this.props.worldID, this.props.sequenceID);\n        this.setState({ steps: sequence.Steps.value });\n    }\n\n    async componentDidUpdate(prevProps: StepListSectionProps) {\n        if (prevProps.sequenceID !== this.props.sequenceID) {\n            const sequence: Sequence = \n                await this.appConsole.dataSourceSequences.getSequence(this.props.worldID, this.props.sequenceID);\n            this.setState({ steps: sequence.Steps.value });\n        }\n    }\n\n    private async savePdf() {\n        if (this.state.isSavingPdf)\n            return;\n\n        this.setState({ isSavingPdf: true });\n        try {\n            const sequence: Sequence =\n                await this.appConsole.dataSourceSequences.getSequence(this.props.worldID, this.props.sequenceID);\n            const documentPDF = await this.exporterSequencePDF.buildPDF(this.props.worldID, this.props.sequenceID);\n            const filename: string = sanitizeFileName(sequence.Title.value) + '-' +\n                timestampToShortString(sequence.PeerPublisher.timestamp).replace(\" \", \"-\") + '.pdf';\n            exportPdf(documentPDF, filename);\n        } finally {\n            this.setState({ isSavingPdf: false });\n        }\n    }\n\n    render() {\n        return (\n            <ListContainer>\n                <TitleWrapper>\n                    <ViewSubtitle>{i18next.t(\"Steps\")}</ViewSubtitle>\n                    <ListCount>\n                        <Button size=\"small\" variant=\"outlined\"\n                            disabled={this.state.isSavingPdf}\n                            onClick={() => this.savePdf()}\n                        >\n                            {i18next.t(\"PDF Export\")}\n                        </Button>\n                        <StepCountIconContainer>\n                            {this.state.steps.length}\n                            <StepsIcon />\n                        </StepCountIconContainer>\n                        <NavLink style={{textDecoration: \"none\"}}\n                                 to={Analytics.BASE_PATH + \"/Worlds/\" + this.props.worldID + \"/Sequences/\"\n                                     + this.props.sequenceID + \"/Steps\"}>\n                            <Button size=\"small\"  id={\"view-all-steps\"}>\n                                {i18next.t(\"View All\")}\n                            </Button>\n                        </NavLink>\n                    </ListCount>\n                </TitleWrapper>\n                <ListWrapper color={white}>\n                    <ListView\n                        emptyListMessage={i18next.t(\"No steps to display\")}\n                        itemCount={this.state.steps.length}\n                        itemHeight={100}\n                    >{(index: number) => (\n                        <NavLink to={Analytics.BASE_PATH + \"/Worlds/\" + this.props.worldID + \"/Sequences/\"\n                            + this.props.sequenceID + \"/Steps/\" + this.state.steps[index].ID}\n                                 style={{textDecoration: \"none\"}}>\n                            <StepItem\n                                worldID={this.props.worldID}\n                                stepType={this.state.steps[index]}\n                                sequenceID={this.props.sequenceID}\n                                index={index + 1} />\n                        </NavLink>\n                    )}\n                    </ListView>\n                </ListWrapper>\n            </ListContainer>\n        )\n    }\n}\n", "import React from 'react';\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {ListViewItem} from \"@root/Frontend/Console/components/ListView/ListViewItem\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport i18next from \"i18next\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport styled from \"styled-components\";\nimport {StepTypeID} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {DataSourceText, TextData} from \"@root/Frontend/DataSources/DataSourceText\";\n\nconst NumberWrapper = styled.div`\n    font: ${primaryFontXLarge};\n    background-color: #23292F;\n    width: 28px;\n    height: 28px;\n    color: white;\n    display: flex;\n    border-radius: 6px;\n    align-items: center;\n    justify-content: center;\n`\n\nexport class StepItem extends SmartComponent {\n    props: { worldID: bigint, stepType: StepTypeID, sequenceID: bigint, index: number }\n    state: { stepTitle: string } = { stepTitle: null }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n        const dataSourceText: DataSourceText = AppConsole.getInstance().dataSourceText;\n        const step: StepData = await dataSourceSteps.getStep(this.props.worldID,\n                                                             this.props.sequenceID,\n                                                             this.props.stepType.ID);\n        const text: TextData = await dataSourceText.getText(step.Text.value);\n        this.setState({ stepTitle: text.OriginalText.value });\n    }\n\n    getStepType(): string {\n        switch(Number(this.props.stepType?.Type)) {\n            case StepType.ANIMATED:\n                return i18next.t(\"Animated\");\n            case StepType.BRANCHING:\n                return i18next.t(\"Branching\");\n            case StepType.PHOTO:\n                return i18next.t(\"Photo\");\n            case StepType.QUESTION:\n                return i18next.t(\"Question\");\n            case StepType.VIDEO:\n                return i18next.t(\"Video\");\n            case StepType.INPUT:\n                return i18next.t(\"Input\");\n            default:\n                return i18next.t(\"Invalid step type\");\n        }\n    }\n\n    render() {\n        return <ListViewItem\n            loading={this.state.stepTitle === null}\n            title={this.state.stepTitle}\n            subtitle={this.getStepType()} >\n            <NumberWrapper>\n                {this.props.index}\n            </NumberWrapper>\n        </ListViewItem>\n    }\n}\n", "import React from \"react\";\nimport {renderToStaticMarkup} from \"react-dom/server\";\nimport {GState, jsPDF} from \"jspdf\";\n\n// Triggers the download of the generated PDF in the browser.\nexport function exportPdf(documentPDF: jsPDF, filename: string): boolean {\n    const blob: Blob = documentPDF.output(\"blob\");\n    if (!blob.size)\n        return false;\n\n    const url: string = URL.createObjectURL(blob);\n    const link: HTMLAnchorElement = window.document.createElement(\"a\");\n    link.href = url;\n    link.download = filename;\n    link.click();\n\n    window.setTimeout(() => URL.revokeObjectURL(url), 0);\n    return true;\n}\n\nfunction loadImage(source: string): Promise<HTMLImageElement> {\n    return new Promise((resolve: (image: HTMLImageElement) => void, reject: (reason?: unknown) => void) => {\n        const image: HTMLImageElement = new Image();\n        image.onload = () => resolve(image);\n        image.onerror = reject;\n        image.src = source;\n    });\n}\n\n// Converts a React SVG component into an encoded PNG image to inject into the PDF.\nexport async function svgComponentToDataURL(\n    element: React.ReactElement,\n    width: number,\n    height: number\n): Promise<string> {\n    const svgURL: string = URL.createObjectURL(\n        new Blob([renderToStaticMarkup(element)], {type: \"image/svg+xml;charset=utf-8\"})\n    );\n    try {\n        const image  : HTMLImageElement  = await loadImage(svgURL);\n        const canvas : HTMLCanvasElement = window.document.createElement(\"canvas\");\n        canvas.width  = width;\n        canvas.height = height;\n        const context: CanvasRenderingContext2D | null = canvas.getContext(\"2d\");\n        if (context === null)\n            return \"\";\n        context.drawImage(image, 0, 0, width, height);\n        return canvas.toDataURL(\"image/png\");\n    } catch {\n        return \"\";\n    } finally {\n        URL.revokeObjectURL(svgURL);\n    }\n}\n\n// Adds a watermark on the page diagonal so it goes from one corner to the other without overflowing.\nexport function addWatermark(documentPDF: jsPDF,\n                             text: string,\n                             color: string,\n                             fontStyle: \"normal\" | \"bold\",\n                             opacity: number) {\n    const pageWidth       : number = documentPDF.internal.pageSize.getWidth();\n    const pageHeight      : number = documentPDF.internal.pageSize.getHeight();\n    const watermarkGState : GState = new GState({opacity});\n\n    documentPDF.addGState(\"watermark\", watermarkGState);\n    documentPDF.saveGraphicsState();\n    documentPDF.setGState(\"watermark\");\n    documentPDF.setFont(\"helvetica\", fontStyle);\n    documentPDF.setTextColor(color);\n\n    const probeDimensions = documentPDF.getTextDimensions(text, {fontSize: 100});\n    const probeMaxSize    : number = Math.max(probeDimensions.w, probeDimensions.h);\n    const pageDiagonal    : number = Math.sqrt(pageWidth * pageWidth + pageHeight * pageHeight);\n    const fontSize        : number = Math.floor(100 * (pageDiagonal / probeMaxSize) * 0.8);\n    documentPDF.setFontSize(fontSize);\n\n    const textDimensions = documentPDF.getTextDimensions(text, {fontSize});\n    const angle          : number = Math.atan2(pageHeight, pageWidth) * 180 / Math.PI;\n    const radians        : number = (angle * Math.PI) / 180;\n\n    documentPDF.text(\n        text,\n        pageWidth / 2 - ((textDimensions.w / 2) * Math.cos(radians) - (textDimensions.h / 2) * Math.sin(radians)),\n        pageHeight / 2 + ((textDimensions.w / 2) * Math.sin(radians) - (textDimensions.h / 2) * Math.cos(radians)),\n        { angle, baseline: \"top\" }\n    );\n\n    documentPDF.restoreGraphicsState();\n}\n", "// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n    var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n        c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n    ], { type: 'text/javascript' }))));\n    w.onmessage = function (e) {\n        var d = e.data, ed = d.$e$;\n        if (ed) {\n            var err = new Error(ed[0]);\n            err['code'] = ed[1];\n            err.stack = ed[2];\n            cb(err, null);\n        }\n        else\n            cb(null, d);\n    };\n    w.postMessage(msg, transfer);\n    return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n    var b = new u16(31);\n    for (var i = 0; i < 31; ++i) {\n        b[i] = start += 1 << eb[i - 1];\n    }\n    // numbers here are at max 18 bits\n    var r = new i32(b[30]);\n    for (var i = 1; i < 30; ++i) {\n        for (var j = b[i]; j < b[i + 1]; ++j) {\n            r[j] = ((j - b[i]) << 5) | i;\n        }\n    }\n    return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n    // reverse table algorithm from SO\n    var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n    x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n    x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n    rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n    var s = cd.length;\n    // index\n    var i = 0;\n    // u16 \"map\": index -> # of codes with bit length = index\n    var l = new u16(mb);\n    // length of cd must be 288 (total # of codes)\n    for (; i < s; ++i) {\n        if (cd[i])\n            ++l[cd[i] - 1];\n    }\n    // u16 \"map\": index -> minimum code for bit length = index\n    var le = new u16(mb);\n    for (i = 1; i < mb; ++i) {\n        le[i] = (le[i - 1] + l[i - 1]) << 1;\n    }\n    var co;\n    if (r) {\n        // u16 \"map\": index -> number of actual bits, symbol for code\n        co = new u16(1 << mb);\n        // bits to remove for reverser\n        var rvb = 15 - mb;\n        for (i = 0; i < s; ++i) {\n            // ignore 0 lengths\n            if (cd[i]) {\n                // num encoding both symbol and bits read\n                var sv = (i << 4) | cd[i];\n                // free bits\n                var r_1 = mb - cd[i];\n                // start value\n                var v = le[cd[i] - 1]++ << r_1;\n                // m is end value\n                for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n                    // every 16 bit value starting with the code yields the same result\n                    co[rev[v] >> rvb] = sv;\n                }\n            }\n        }\n    }\n    else {\n        co = new u16(s);\n        for (i = 0; i < s; ++i) {\n            if (cd[i]) {\n                co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n            }\n        }\n    }\n    return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n    flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n    flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n    flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n    flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n    fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n    var m = a[0];\n    for (var i = 1; i < a.length; ++i) {\n        if (a[i] > m)\n            m = a[i];\n    }\n    return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n    var o = (p / 8) | 0;\n    return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n    var o = (p / 8) | 0;\n    return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n    if (s == null || s < 0)\n        s = 0;\n    if (e == null || e > v.length)\n        e = v.length;\n    // can't use .constructor in case user-supplied\n    return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n    UnexpectedEOF: 0,\n    InvalidBlockType: 1,\n    InvalidLengthLiteral: 2,\n    InvalidDistance: 3,\n    StreamFinished: 4,\n    NoStreamHandler: 5,\n    InvalidHeader: 6,\n    NoCallback: 7,\n    InvalidUTF8: 8,\n    ExtraFieldTooLong: 9,\n    InvalidDate: 10,\n    FilenameTooLong: 11,\n    StreamFinishing: 12,\n    InvalidZipData: 13,\n    UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n    'unexpected EOF',\n    'invalid block type',\n    'invalid length/literal',\n    'invalid distance',\n    'stream finished',\n    'no stream handler',\n    , // determined by compression function\n    'no callback',\n    'invalid UTF-8 data',\n    'extra field too long',\n    'date not in range 1980-2099',\n    'filename too long',\n    'stream finishing',\n    'invalid zip data'\n    // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n    var e = new Error(msg || ec[ind]);\n    e.code = ind;\n    if (Error.captureStackTrace)\n        Error.captureStackTrace(e, err);\n    if (!nt)\n        throw e;\n    return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n    // source length       dict length\n    var sl = dat.length, dl = dict ? dict.length : 0;\n    if (!sl || st.f && !st.l)\n        return buf || new u8(0);\n    var noBuf = !buf;\n    // have to estimate size\n    var resize = noBuf || st.i != 2;\n    // no state\n    var noSt = st.i;\n    // Assumes roughly 33% compression ratio average\n    if (noBuf)\n        buf = new u8(sl * 3);\n    // ensure buffer can fit at least l elements\n    var cbuf = function (l) {\n        var bl = buf.length;\n        // need to increase size to fit\n        if (l > bl) {\n            // Double or set to necessary, whichever is greater\n            var nbuf = new u8(Math.max(bl * 2, l));\n            nbuf.set(buf);\n            buf = nbuf;\n        }\n    };\n    //  last chunk         bitpos           bytes\n    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n    // total bits\n    var tbts = sl * 8;\n    do {\n        if (!lm) {\n            // BFINAL - this is only 1 when last chunk is next\n            final = bits(dat, pos, 1);\n            // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n            var type = bits(dat, pos + 1, 3);\n            pos += 3;\n            if (!type) {\n                // go to end of byte boundary\n                var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n                if (t > sl) {\n                    if (noSt)\n                        err(0);\n                    break;\n                }\n                // ensure size\n                if (resize)\n                    cbuf(bt + l);\n                // Copy over uncompressed data\n                buf.set(dat.subarray(s, t), bt);\n                // Get new bitpos, update byte count\n                st.b = bt += l, st.p = pos = t * 8, st.f = final;\n                continue;\n            }\n            else if (type == 1)\n                lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n            else if (type == 2) {\n                //  literal                            lengths\n                var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n                var tl = hLit + bits(dat, pos + 5, 31) + 1;\n                pos += 14;\n                // length+distance tree\n                var ldt = new u8(tl);\n                // code length tree\n                var clt = new u8(19);\n                for (var i = 0; i < hcLen; ++i) {\n                    // use index map to get real code\n                    clt[clim[i]] = bits(dat, pos + i * 3, 7);\n                }\n                pos += hcLen * 3;\n                // code lengths bits\n                var clb = max(clt), clbmsk = (1 << clb) - 1;\n                // code lengths map\n                var clm = hMap(clt, clb, 1);\n                for (var i = 0; i < tl;) {\n                    var r = clm[bits(dat, pos, clbmsk)];\n                    // bits read\n                    pos += r & 15;\n                    // symbol\n                    var s = r >> 4;\n                    // code length to copy\n                    if (s < 16) {\n                        ldt[i++] = s;\n                    }\n                    else {\n                        //  copy   count\n                        var c = 0, n = 0;\n                        if (s == 16)\n                            n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n                        else if (s == 17)\n                            n = 3 + bits(dat, pos, 7), pos += 3;\n                        else if (s == 18)\n                            n = 11 + bits(dat, pos, 127), pos += 7;\n                        while (n--)\n                            ldt[i++] = c;\n                    }\n                }\n                //    length tree                 distance tree\n                var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n                // max length bits\n                lbt = max(lt);\n                // max dist bits\n                dbt = max(dt);\n                lm = hMap(lt, lbt, 1);\n                dm = hMap(dt, dbt, 1);\n            }\n            else\n                err(1);\n            if (pos > tbts) {\n                if (noSt)\n                    err(0);\n                break;\n            }\n        }\n        // Make sure the buffer can hold this + the largest possible addition\n        // Maximum chunk size (practically, theoretically infinite) is 2^17\n        if (resize)\n            cbuf(bt + 131072);\n        var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n        var lpos = pos;\n        for (;; lpos = pos) {\n            // bits read, code\n            var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n            pos += c & 15;\n            if (pos > tbts) {\n                if (noSt)\n                    err(0);\n                break;\n            }\n            if (!c)\n                err(2);\n            if (sym < 256)\n                buf[bt++] = sym;\n            else if (sym == 256) {\n                lpos = pos, lm = null;\n                break;\n            }\n            else {\n                var add = sym - 254;\n                // no extra bits needed if less\n                if (sym > 264) {\n                    // index\n                    var i = sym - 257, b = fleb[i];\n                    add = bits(dat, pos, (1 << b) - 1) + fl[i];\n                    pos += b;\n                }\n                // dist\n                var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n                if (!d)\n                    err(3);\n                pos += d & 15;\n                var dt = fd[dsym];\n                if (dsym > 3) {\n                    var b = fdeb[dsym];\n                    dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n                }\n                if (pos > tbts) {\n                    if (noSt)\n                        err(0);\n                    break;\n                }\n                if (resize)\n                    cbuf(bt + 131072);\n                var end = bt + add;\n                if (bt < dt) {\n                    var shift = dl - dt, dend = Math.min(dt, end);\n                    if (shift + bt < 0)\n                        err(3);\n                    for (; bt < dend; ++bt)\n                        buf[bt] = dict[shift + bt];\n                }\n                for (; bt < end; ++bt)\n                    buf[bt] = buf[bt - dt];\n            }\n        }\n        st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n        if (lm)\n            final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n    } while (!final);\n    // don't reallocate for streams or user buffers\n    return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) | 0;\n    d[o] |= v;\n    d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) | 0;\n    d[o] |= v;\n    d[o + 1] |= v >> 8;\n    d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n    // Need extra info to make a tree\n    var t = [];\n    for (var i = 0; i < d.length; ++i) {\n        if (d[i])\n            t.push({ s: i, f: d[i] });\n    }\n    var s = t.length;\n    var t2 = t.slice();\n    if (!s)\n        return { t: et, l: 0 };\n    if (s == 1) {\n        var v = new u8(t[0].s + 1);\n        v[t[0].s] = 1;\n        return { t: v, l: 1 };\n    }\n    t.sort(function (a, b) { return a.f - b.f; });\n    // after i2 reaches last ind, will be stopped\n    // freq must be greater than largest possible number of symbols\n    t.push({ s: -1, f: 25001 });\n    var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n    t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n    // efficient algorithm from UZIP.js\n    // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n    // symbols that combined have high freq, will start processing i2 (high-freq,\n    // non-composite) symbols instead\n    // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n    while (i1 != s - 1) {\n        l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n        r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n        t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n    }\n    var maxSym = t2[0].s;\n    for (var i = 1; i < s; ++i) {\n        if (t2[i].s > maxSym)\n            maxSym = t2[i].s;\n    }\n    // code lengths\n    var tr = new u16(maxSym + 1);\n    // max bits in tree\n    var mbt = ln(t[i1 - 1], tr, 0);\n    if (mbt > mb) {\n        // more algorithms from UZIP.js\n        // TODO: find out how this code works (debt)\n        //  ind    debt\n        var i = 0, dt = 0;\n        //    left            cost\n        var lft = mbt - mb, cst = 1 << lft;\n        t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n        for (; i < s; ++i) {\n            var i2_1 = t2[i].s;\n            if (tr[i2_1] > mb) {\n                dt += cst - (1 << (mbt - tr[i2_1]));\n                tr[i2_1] = mb;\n            }\n            else\n                break;\n        }\n        dt >>= lft;\n        while (dt > 0) {\n            var i2_2 = t2[i].s;\n            if (tr[i2_2] < mb)\n                dt -= 1 << (mb - tr[i2_2]++ - 1);\n            else\n                ++i;\n        }\n        for (; i >= 0 && dt; --i) {\n            var i2_3 = t2[i].s;\n            if (tr[i2_3] == mb) {\n                --tr[i2_3];\n                ++dt;\n            }\n        }\n        mbt = mb;\n    }\n    return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n    return n.s == -1\n        ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n        : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n    var s = c.length;\n    // Note that the semicolon was intentional\n    while (s && !c[--s])\n        ;\n    var cl = new u16(++s);\n    //  ind      num         streak\n    var cli = 0, cln = c[0], cls = 1;\n    var w = function (v) { cl[cli++] = v; };\n    for (var i = 1; i <= s; ++i) {\n        if (c[i] == cln && i != s)\n            ++cls;\n        else {\n            if (!cln && cls > 2) {\n                for (; cls > 138; cls -= 138)\n                    w(32754);\n                if (cls > 2) {\n                    w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n                    cls = 0;\n                }\n            }\n            else if (cls > 3) {\n                w(cln), --cls;\n                for (; cls > 6; cls -= 6)\n                    w(8304);\n                if (cls > 2)\n                    w(((cls - 3) << 5) | 8208), cls = 0;\n            }\n            while (cls--)\n                w(cln);\n            cls = 1;\n            cln = c[i];\n        }\n    }\n    return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n    var l = 0;\n    for (var i = 0; i < cl.length; ++i)\n        l += cf[i] * cl[i];\n    return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n    // no need to write 00 as type: TypedArray defaults to 0\n    var s = dat.length;\n    var o = shft(pos + 2);\n    out[o] = s & 255;\n    out[o + 1] = s >> 8;\n    out[o + 2] = out[o] ^ 255;\n    out[o + 3] = out[o + 1] ^ 255;\n    for (var i = 0; i < s; ++i)\n        out[o + i + 4] = dat[i];\n    return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n    wbits(out, p++, final);\n    ++lf[256];\n    var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n    var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n    var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n    var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n    var lcfreq = new u16(19);\n    for (var i = 0; i < lclt.length; ++i)\n        ++lcfreq[lclt[i] & 31];\n    for (var i = 0; i < lcdt.length; ++i)\n        ++lcfreq[lcdt[i] & 31];\n    var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n    var nlcc = 19;\n    for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n        ;\n    var flen = (bl + 5) << 3;\n    var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n    var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n    if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n        return wfblk(out, p, dat.subarray(bs, bs + bl));\n    var lm, ll, dm, dl;\n    wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n    if (dtlen < ftlen) {\n        lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n        var llm = hMap(lct, mlcb, 0);\n        wbits(out, p, nlc - 257);\n        wbits(out, p + 5, ndc - 1);\n        wbits(out, p + 10, nlcc - 4);\n        p += 14;\n        for (var i = 0; i < nlcc; ++i)\n            wbits(out, p + 3 * i, lct[clim[i]]);\n        p += 3 * nlcc;\n        var lcts = [lclt, lcdt];\n        for (var it = 0; it < 2; ++it) {\n            var clct = lcts[it];\n            for (var i = 0; i < clct.length; ++i) {\n                var len = clct[i] & 31;\n                wbits(out, p, llm[len]), p += lct[len];\n                if (len > 15)\n                    wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n            }\n        }\n    }\n    else {\n        lm = flm, ll = flt, dm = fdm, dl = fdt;\n    }\n    for (var i = 0; i < li; ++i) {\n        var sym = syms[i];\n        if (sym > 255) {\n            var len = (sym >> 18) & 31;\n            wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n            if (len > 7)\n                wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n            var dst = sym & 31;\n            wbits16(out, p, dm[dst]), p += dl[dst];\n            if (dst > 3)\n                wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n        }\n        else {\n            wbits16(out, p, lm[sym]), p += ll[sym];\n        }\n    }\n    wbits16(out, p, lm[256]);\n    return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n    var s = st.z || dat.length;\n    var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n    // writing to this writes to the output buffer\n    var w = o.subarray(pre, o.length - post);\n    var lst = st.l;\n    var pos = (st.r || 0) & 7;\n    if (lvl) {\n        if (pos)\n            w[0] = st.r >> 3;\n        var opt = deo[lvl - 1];\n        var n = opt >> 13, c = opt & 8191;\n        var msk_1 = (1 << plvl) - 1;\n        //    prev 2-byte val map    curr 2-byte val map\n        var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n        var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n        var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n        // 24576 is an arbitrary number of maximum symbols per block\n        // 424 buffer for last block\n        var syms = new i32(25000);\n        // length/literal freq   distance freq\n        var lf = new u16(288), df = new u16(32);\n        //  l/lcnt  exbits  index          l/lind  waitdx          blkpos\n        var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n        for (; i + 2 < s; ++i) {\n            // hash value\n            var hv = hsh(i);\n            // index mod 32768    previous index mod\n            var imod = i & 32767, pimod = head[hv];\n            prev[imod] = pimod;\n            head[hv] = imod;\n            // We always should modify head and prev, but only add symbols if\n            // this data is not yet processed (\"wait\" for wait index)\n            if (wi <= i) {\n                // bytes remaining\n                var rem = s - i;\n                if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n                    pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n                    li = lc_1 = eb = 0, bs = i;\n                    for (var j = 0; j < 286; ++j)\n                        lf[j] = 0;\n                    for (var j = 0; j < 30; ++j)\n                        df[j] = 0;\n                }\n                //  len    dist   chain\n                var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n                if (rem > 2 && hv == hsh(i - dif)) {\n                    var maxn = Math.min(n, rem) - 1;\n                    var maxd = Math.min(32767, i);\n                    // max possible length\n                    // not capped at dif because decompressors implement \"rolling\" index population\n                    var ml = Math.min(258, rem);\n                    while (dif <= maxd && --ch_1 && imod != pimod) {\n                        if (dat[i + l] == dat[i + l - dif]) {\n                            var nl = 0;\n                            for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n                                ;\n                            if (nl > l) {\n                                l = nl, d = dif;\n                                // break out early when we reach \"nice\" (we are satisfied enough)\n                                if (nl > maxn)\n                                    break;\n                                // now, find the rarest 2-byte sequence within this\n                                // length of literals and search for that instead.\n                                // Much faster than just using the start\n                                var mmd = Math.min(dif, nl - 2);\n                                var md = 0;\n                                for (var j = 0; j < mmd; ++j) {\n                                    var ti = i - dif + j & 32767;\n                                    var pti = prev[ti];\n                                    var cd = ti - pti & 32767;\n                                    if (cd > md)\n                                        md = cd, pimod = ti;\n                                }\n                            }\n                        }\n                        // check the previous match\n                        imod = pimod, pimod = prev[imod];\n                        dif += imod - pimod & 32767;\n                    }\n                }\n                // d will be nonzero only when a match was found\n                if (d) {\n                    // store both dist and len data in one int32\n                    // Make sure this is recognized as a len/dist with 28th bit (2^28)\n                    syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n                    var lin = revfl[l] & 31, din = revfd[d] & 31;\n                    eb += fleb[lin] + fdeb[din];\n                    ++lf[257 + lin];\n                    ++df[din];\n                    wi = i + l;\n                    ++lc_1;\n                }\n                else {\n                    syms[li++] = dat[i];\n                    ++lf[dat[i]];\n                }\n            }\n        }\n        for (i = Math.max(i, wi); i < s; ++i) {\n            syms[li++] = dat[i];\n            ++lf[dat[i]];\n        }\n        pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n        if (!lst) {\n            st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n            // shft(pos) now 1 less if pos & 7 != 0\n            pos -= 7;\n            st.h = head, st.p = prev, st.i = i, st.w = wi;\n        }\n    }\n    else {\n        for (var i = st.w || 0; i < s + lst; i += 65535) {\n            // end\n            var e = i + 65535;\n            if (e >= s) {\n                // write final block\n                w[(pos / 8) | 0] = lst;\n                e = s;\n            }\n            pos = wfblk(w, pos + 1, dat.subarray(i, e));\n        }\n        st.i = s;\n    }\n    return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n    var t = new Int32Array(256);\n    for (var i = 0; i < 256; ++i) {\n        var c = i, k = 9;\n        while (--k)\n            c = ((c & 1) && -306674912) ^ (c >>> 1);\n        t[i] = c;\n    }\n    return t;\n})();\n// CRC32\nvar crc = function () {\n    var c = -1;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var cr = c;\n            for (var i = 0; i < d.length; ++i)\n                cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n            c = cr;\n        },\n        d: function () { return ~c; }\n    };\n};\n// Adler32\nvar adler = function () {\n    var a = 1, b = 0;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var n = a, m = b;\n            var l = d.length | 0;\n            for (var i = 0; i != l;) {\n                var e = Math.min(i + 2655, l);\n                for (; i < e; ++i)\n                    m += n += d[i];\n                n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n            }\n            a = n, b = m;\n        },\n        d: function () {\n            a %= 65521, b %= 65521;\n            return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n        }\n    };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n    if (!st) {\n        st = { l: 1 };\n        if (opt.dictionary) {\n            var dict = opt.dictionary.subarray(-32768);\n            var newDat = new u8(dict.length + dat.length);\n            newDat.set(dict);\n            newDat.set(dat, dict.length);\n            dat = newDat;\n            st.w = dict.length;\n        }\n    }\n    return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n    var o = {};\n    for (var k in a)\n        o[k] = a[k];\n    for (var k in b)\n        o[k] = b[k];\n    return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n    var dt = fn();\n    var st = fn.toString();\n    var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n    for (var i = 0; i < dt.length; ++i) {\n        var v = dt[i], k = ks[i];\n        if (typeof v == 'function') {\n            fnStr += ';' + k + '=';\n            var st_1 = v.toString();\n            if (v.prototype) {\n                // for global objects\n                if (st_1.indexOf('[native code]') != -1) {\n                    var spInd = st_1.indexOf(' ', 8) + 1;\n                    fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n                }\n                else {\n                    fnStr += st_1;\n                    for (var t in v.prototype)\n                        fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n                }\n            }\n            else\n                fnStr += st_1;\n        }\n        else\n            td[k] = v;\n    }\n    return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n    var tl = [];\n    for (var k in v) {\n        if (v[k].buffer) {\n            tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n        }\n    }\n    return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n    if (!ch[id]) {\n        var fnStr = '', td_1 = {}, m = fns.length - 1;\n        for (var i = 0; i < m; ++i)\n            fnStr = wcln(fns[i], fnStr, td_1);\n        ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n    }\n    var td = mrg({}, ch[id].e);\n    return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n    out: o.size && new u8(o.size),\n    dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n    var w = wrkr(fns, init, id, function (err, dat) {\n        w.terminate();\n        cb(err, dat);\n    });\n    w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n    return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n    strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n    return function (ev) {\n        if (ev.data[0]) {\n            strm.push(ev.data[0], ev.data[1]);\n            postMessage([ev.data[0].length]);\n        }\n        else\n            strm.flush(ev.data[1]);\n    };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n    var t;\n    var w = wrkr(fns, init, id, function (err, dat) {\n        if (err)\n            w.terminate(), strm.ondata.call(strm, err);\n        else if (!Array.isArray(dat))\n            ext(dat);\n        else if (dat.length == 1) {\n            strm.queuedSize -= dat[0];\n            if (strm.ondrain)\n                strm.ondrain(dat[0]);\n        }\n        else {\n            if (dat[1])\n                w.terminate();\n            strm.ondata.call(strm, err, dat[0], dat[1]);\n        }\n    });\n    w.postMessage(opts);\n    strm.queuedSize = 0;\n    strm.push = function (d, f) {\n        if (!strm.ondata)\n            err(5);\n        if (t)\n            strm.ondata(err(4, 0, 1), null, !!f);\n        strm.queuedSize += d.length;\n        // can fail for cross-realm Uint8Array, but ok - only a small performance penalty\n        w.postMessage([d, t = f], d.buffer instanceof ArrayBuffer ? [d.buffer] : []);\n    };\n    strm.terminate = function () { w.terminate(); };\n    if (flush) {\n        strm.flush = function (sync) { w.postMessage([0, sync]); };\n    }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\n// read 8 bytes\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n    for (; v; ++b)\n        d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n    var fn = o.filename;\n    c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n    if (o.mtime != 0)\n        wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n    if (fn) {\n        c[3] = 8;\n        for (var i = 0; i <= fn.length; ++i)\n            c[i + 10] = fn.charCodeAt(i);\n    }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n    if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n        err(6, 'invalid gzip data');\n    var flg = d[3];\n    var st = 10;\n    if (flg & 4)\n        st += (d[10] | d[11] << 8) + 2;\n    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n        ;\n    return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n    var l = d.length;\n    return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n    var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n    c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n    c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n    if (o.dictionary) {\n        var h = adler();\n        h.p(o.dictionary);\n        wbytes(c, 2, h.d());\n    }\n};\n// zlib start\nvar zls = function (d, dict) {\n    if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n        err(6, 'invalid zlib data');\n    if ((d[1] >> 5 & 1) == +!dict)\n        err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n    return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n    if (typeof opts == 'function')\n        cb = opts, opts = {};\n    this.ondata = cb;\n    return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n    function Deflate(opts, cb) {\n        if (typeof opts == 'function')\n            cb = opts, opts = {};\n        this.ondata = cb;\n        this.o = opts || {};\n        this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n        // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n        // 98304 = 32768 (lookback) + 65536 (common chunk size)\n        this.b = new u8(98304);\n        if (this.o.dictionary) {\n            var dict = this.o.dictionary.subarray(-32768);\n            this.b.set(dict, 32768 - dict.length);\n            this.s.i = 32768 - dict.length;\n        }\n    }\n    Deflate.prototype.p = function (c, f) {\n        this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Deflate.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (this.s.l)\n            err(4);\n        var endLen = chunk.length + this.s.z;\n        if (endLen > this.b.length) {\n            if (endLen > 2 * this.b.length - 32768) {\n                var newBuf = new u8(endLen & -32768);\n                newBuf.set(this.b.subarray(0, this.s.z));\n                this.b = newBuf;\n            }\n            var split = this.b.length - this.s.z;\n            this.b.set(chunk.subarray(0, split), this.s.z);\n            this.s.z = this.b.length;\n            this.p(this.b, false);\n            this.b.set(this.b.subarray(-32768));\n            this.b.set(chunk.subarray(split), 32768);\n            this.s.z = chunk.length - split + 32768;\n            this.s.i = 32766, this.s.w = 32768;\n        }\n        else {\n            this.b.set(chunk, this.s.z);\n            this.s.z += chunk.length;\n        }\n        this.s.l = final & 1;\n        if (this.s.z > this.s.w + 8191 || final) {\n            this.p(this.b, final || false);\n            this.s.w = this.s.i, this.s.i -= 2;\n        }\n        if (final) {\n            // cleanup unneeded buffers/state to reduce memory usage\n            this.s = this.o = {};\n            this.b = et;\n        }\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * deflated output for small inputs.\n     * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n     *             extra bytes, but guarantees all pushed data is immediately\n     *             decompressible. A separate DEFLATE stream may be concatenated\n     *             with the current output after a sync flush.\n     */\n    Deflate.prototype.flush = function (sync) {\n        if (!this.ondata)\n            err(5);\n        if (this.s.l)\n            err(4);\n        this.p(this.b, false);\n        this.s.w = this.s.i, this.s.i -= 2;\n        // could technically skip writing the type-0 block for (this.s.r & 7) == 0,\n        // but the deterministic trailer (00 00 FF FF) is useful in some situations\n        if (sync) {\n            var c = new u8(6);\n            c[0] = this.s.r >> 3;\n            // write empty, non-final type-0 block\n            var ep = wfblk(c, this.s.r, et);\n            this.s.r = 0;\n            this.ondata(c.subarray(0, ep >> 3), false);\n        }\n    };\n    return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n    function AsyncDeflate(opts, cb) {\n        astrmify([\n            bDflt,\n            function () { return [astrm, Deflate]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Deflate(ev.data);\n            onmessage = astrm(strm);\n        }, 6, 1);\n    }\n    return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n    ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n    return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n    function Inflate(opts, cb) {\n        // no StrmOpt here to avoid adding to workerizer\n        if (typeof opts == 'function')\n            cb = opts, opts = {};\n        this.ondata = cb;\n        var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n        this.s = { i: 0, b: dict ? dict.length : 0 };\n        this.o = new u8(32768);\n        this.p = new u8(0);\n        if (dict)\n            this.o.set(dict);\n    }\n    Inflate.prototype.e = function (c) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        if (!this.p.length)\n            this.p = c;\n        else if (c.length) {\n            var n = new u8(this.p.length + c.length);\n            n.set(this.p), n.set(c, this.p.length), this.p = n;\n        }\n    };\n    Inflate.prototype.c = function (final) {\n        this.s.i = +(this.d = final || false);\n        var bts = this.s.b;\n        var dt = inflt(this.p, this.s, this.o);\n        this.ondata(slc(dt, bts, this.s.b), this.d);\n        this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n        this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n    };\n    /**\n     * Pushes a chunk to be inflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the final chunk\n     */\n    Inflate.prototype.push = function (chunk, final) {\n        this.e(chunk), this.c(final);\n    };\n    return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n    function AsyncInflate(opts, cb) {\n        astrmify([\n            bInflt,\n            function () { return [astrm, Inflate]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Inflate(ev.data);\n            onmessage = astrm(strm);\n        }, 7, 0);\n    }\n    return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt\n    ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\nexport function inflateSync(data, opts) {\n    return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n    function Gzip(opts, cb) {\n        this.c = crc();\n        this.l = 0;\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be GZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gzip.prototype.push = function (chunk, final) {\n        this.c.p(chunk);\n        this.l += chunk.length;\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Gzip.prototype.p = function (c, f) {\n        var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n        if (this.v)\n            gzh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n        this.ondata(raw, f);\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * GZIPped output for small inputs.\n     * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n     *             extra bytes, but guarantees all pushed data is immediately\n     *             decompressible.\n     */\n    Gzip.prototype.flush = function (sync) {\n        Deflate.prototype.flush.call(this, sync);\n    };\n    return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n    function AsyncGzip(opts, cb) {\n        astrmify([\n            bDflt,\n            gze,\n            function () { return [astrm, Deflate, Gzip]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Gzip(ev.data);\n            onmessage = astrm(strm);\n        }, 8, 1);\n    }\n    return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n        gze,\n        function () { return [gzipSync]; }\n    ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var c = crc(), l = data.length;\n    c.p(data);\n    var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n    return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n    function Gunzip(opts, cb) {\n        this.v = 1;\n        this.r = 0;\n        Inflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be GUNZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gunzip.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        this.r += chunk.length;\n        if (this.v) {\n            var p = this.p.subarray(this.v - 1);\n            var s = p.length > 3 ? gzs(p) : 4;\n            if (s > p.length) {\n                if (!final)\n                    return;\n            }\n            else if (this.v > 1 && this.onmember) {\n                this.onmember(this.r - p.length);\n            }\n            this.p = p.subarray(s), this.v = 0;\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, 0);\n        // process concatenated GZIP\n        if (this.s.f && !this.s.l) {\n            this.v = shft(this.s.p) + 9;\n            this.s = { i: 0 };\n            this.o = new u8(0);\n            this.push(new u8(0), final);\n        }\n        else if (final) {\n            Inflate.prototype.c.call(this, final);\n        }\n    };\n    return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n    function AsyncGunzip(opts, cb) {\n        var _this = this;\n        astrmify([\n            bInflt,\n            guze,\n            function () { return [astrm, Inflate, Gunzip]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Gunzip(ev.data);\n            strm.onmember = function (offset) { return postMessage(offset); };\n            onmessage = astrm(strm);\n        }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n    }\n    return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt,\n        guze,\n        function () { return [gunzipSync]; }\n    ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\nexport function gunzipSync(data, opts) {\n    var st = gzs(data);\n    if (st + 8 > data.length)\n        err(6, 'invalid gzip data');\n    return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n    function Zlib(opts, cb) {\n        this.c = adler();\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be zlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Zlib.prototype.push = function (chunk, final) {\n        this.c.p(chunk);\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Zlib.prototype.p = function (c, f) {\n        var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n        if (this.v)\n            zlh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 4, this.c.d());\n        this.ondata(raw, f);\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * zlibbed output for small inputs.\n     * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n     *             extra bytes, but guarantees all pushed data is immediately\n     *             decompressible.\n     */\n    Zlib.prototype.flush = function (sync) {\n        Deflate.prototype.flush.call(this, sync);\n    };\n    return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n    function AsyncZlib(opts, cb) {\n        astrmify([\n            bDflt,\n            zle,\n            function () { return [astrm, Deflate, Zlib]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Zlib(ev.data);\n            onmessage = astrm(strm);\n        }, 10, 1);\n    }\n    return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n        zle,\n        function () { return [zlibSync]; }\n    ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var a = adler();\n    a.p(data);\n    var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n    return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n    function Unzlib(opts, cb) {\n        Inflate.call(this, opts, cb);\n        this.v = opts && opts.dictionary ? 2 : 1;\n    }\n    /**\n     * Pushes a chunk to be unzlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzlib.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        if (this.v) {\n            if (this.p.length < 6 && !final)\n                return;\n            this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n        }\n        if (final) {\n            if (this.p.length < 4)\n                err(6, 'invalid zlib data');\n            this.p = this.p.subarray(0, -4);\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n    };\n    return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n    function AsyncUnzlib(opts, cb) {\n        astrmify([\n            bInflt,\n            zule,\n            function () { return [astrm, Inflate, Unzlib]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Unzlib(ev.data);\n            onmessage = astrm(strm);\n        }, 11, 0);\n    }\n    return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt,\n        zule,\n        function () { return [unzlibSync]; }\n    ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\nexport function unzlibSync(data, opts) {\n    return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n    function Decompress(opts, cb) {\n        this.o = StrmOpt.call(this, opts, cb) || {};\n        this.G = Gunzip;\n        this.I = Inflate;\n        this.Z = Unzlib;\n    }\n    // init substream\n    // overriden by AsyncDecompress\n    Decompress.prototype.i = function () {\n        var _this = this;\n        this.s.ondata = function (dat, final) {\n            _this.ondata(dat, final);\n        };\n    };\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Decompress.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (!this.s) {\n            if (this.p && this.p.length) {\n                var n = new u8(this.p.length + chunk.length);\n                n.set(this.p), n.set(chunk, this.p.length);\n            }\n            else\n                this.p = chunk;\n            if (this.p.length > 2) {\n                this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n                    ? new this.G(this.o)\n                    : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n                        ? new this.I(this.o)\n                        : new this.Z(this.o);\n                this.i();\n                this.s.push(this.p, final);\n                this.p = null;\n            }\n        }\n        else\n            this.s.push(chunk, final);\n    };\n    return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n    function AsyncDecompress(opts, cb) {\n        Decompress.call(this, opts, cb);\n        this.queuedSize = 0;\n        this.G = AsyncGunzip;\n        this.I = AsyncInflate;\n        this.Z = AsyncUnzlib;\n    }\n    AsyncDecompress.prototype.i = function () {\n        var _this = this;\n        this.s.ondata = function (err, dat, final) {\n            _this.ondata(err, dat, final);\n        };\n        this.s.ondrain = function (size) {\n            _this.queuedSize -= size;\n            if (_this.ondrain)\n                _this.ondrain(size);\n        };\n    };\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncDecompress.prototype.push = function (chunk, final) {\n        this.queuedSize += chunk.length;\n        Decompress.prototype.push.call(this, chunk, final);\n    };\n    return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzip(data, opts, cb)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflate(data, opts, cb)\n            : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzipSync(data, opts)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflateSync(data, opts)\n            : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n    for (var k in d) {\n        var val = d[k], n = p + k, op = o;\n        if (Array.isArray(val))\n            op = mrg(o, val[1]), val = val[0];\n        if (ArrayBuffer.isView(val))\n            t[n] = [val, op];\n        else {\n            t[n += '/'] = [new u8(0), op];\n            fltn(val, n, t, o);\n        }\n    }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n    td.decode(et, { stream: true });\n    tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n    for (var r = '', i = 0;;) {\n        var c = d[i++];\n        var eb = (c > 127) + (c > 223) + (c > 239);\n        if (i + eb > d.length)\n            return { s: r, r: slc(d, i - 1) };\n        if (!eb)\n            r += String.fromCharCode(c);\n        else if (eb == 3) {\n            c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n                r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n        }\n        else if (eb & 1)\n            r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n        else\n            r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n    }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n    /**\n     * Creates a UTF-8 decoding stream\n     * @param cb The callback to call whenever data is decoded\n     */\n    function DecodeUTF8(cb) {\n        this.ondata = cb;\n        if (tds)\n            this.t = new TextDecoder();\n        else\n            this.p = et;\n    }\n    /**\n     * Pushes a chunk to be decoded from UTF-8 binary\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    DecodeUTF8.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        final = !!final;\n        if (this.t) {\n            this.ondata(this.t.decode(chunk, { stream: true }), final);\n            if (final) {\n                if (this.t.decode().length)\n                    err(8);\n                this.t = null;\n            }\n            return;\n        }\n        if (!this.p)\n            err(4);\n        var dat = new u8(this.p.length + chunk.length);\n        dat.set(this.p);\n        dat.set(chunk, this.p.length);\n        var _a = dutf8(dat), s = _a.s, r = _a.r;\n        if (final) {\n            if (r.length)\n                err(8);\n            this.p = null;\n        }\n        else\n            this.p = r;\n        this.ondata(s, final);\n    };\n    return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n    /**\n     * Creates a UTF-8 decoding stream\n     * @param cb The callback to call whenever data is encoded\n     */\n    function EncodeUTF8(cb) {\n        this.ondata = cb;\n    }\n    /**\n     * Pushes a chunk to be encoded to UTF-8\n     * @param chunk The string data to push\n     * @param final Whether this is the last chunk\n     */\n    EncodeUTF8.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        this.ondata(strToU8(chunk), this.d = final || false);\n    };\n    return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n    if (latin1) {\n        var ar_1 = new u8(str.length);\n        for (var i = 0; i < str.length; ++i)\n            ar_1[i] = str.charCodeAt(i);\n        return ar_1;\n    }\n    if (te)\n        return te.encode(str);\n    var l = str.length;\n    var ar = new u8(str.length + (str.length >> 1));\n    var ai = 0;\n    var w = function (v) { ar[ai++] = v; };\n    for (var i = 0; i < l; ++i) {\n        if (ai + 5 > ar.length) {\n            var n = new u8(ai + 8 + ((l - i) << 1));\n            n.set(ar);\n            ar = n;\n        }\n        var c = str.charCodeAt(i);\n        if (c < 128 || latin1)\n            w(c);\n        else if (c < 2048)\n            w(192 | (c >> 6)), w(128 | (c & 63));\n        else if (c > 55295 && c < 57344)\n            c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n                w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n        else\n            w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n    }\n    return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n    if (latin1) {\n        var r = '';\n        for (var i = 0; i < dat.length; i += 16384)\n            r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n        return r;\n    }\n    else if (td) {\n        return td.decode(dat);\n    }\n    else {\n        var _a = dutf8(dat), s = _a.s, r = _a.r;\n        if (r.length)\n            err(8);\n        return s;\n    }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n    var fnl = b2(d, b + 28), efl = b2(d, b + 30), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl;\n    var _a = z64hs(d, es, efl, z, b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)), sc = _a[0], su = _a[1], off = _a[2];\n    return [b2(d, b + 10), sc, su, fn, es + efl + b2(d, b + 32), off];\n};\n// read zip64 header sizes\nvar z64hs = function (d, b, l, z, sc, su, off) {\n    var nsc = sc == 4294967295, nsu = su == 4294967295, noff = off == 4294967295, e = b + l;\n    var nf = nsc + nsu + noff;\n    if (z && nf) {\n        for (; b + 4 < e; b += 4 + b2(d, b + 2)) {\n            if (b2(d, b) == 1) {\n                return [\n                    nsc ? b8(d, b + 4 + 8 * nsu) : sc,\n                    nsu ? b8(d, b + 4) : su,\n                    noff ? b8(d, b + 4 + 8 * (nsu + nsc)) : off,\n                    1\n                ];\n            }\n        }\n        // z == 2 for unknown whether or not zip64\n        if (z < 2)\n            err(13);\n    }\n    return [sc, su, off, 0];\n};\n// extra field length\nvar exfl = function (ex) {\n    var le = 0;\n    if (ex) {\n        for (var k in ex) {\n            var l = ex[k].length;\n            if (l > 65535)\n                err(9);\n            le += l + 4;\n        }\n    }\n    return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n    var fl = fn.length, ex = f.extra, col = co && co.length;\n    var exl = exfl(ex);\n    wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n    if (ce != null)\n        d[b++] = 20, d[b++] = f.os;\n    d[b] = 20, b += 2; // spec compliance? what's that?\n    d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n    d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n    var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n    if (y < 0 || y > 119)\n        err(10);\n    wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n    if (c != -1) {\n        wbytes(d, b, f.crc);\n        wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n        wbytes(d, b + 8, f.size);\n    }\n    wbytes(d, b + 12, fl);\n    wbytes(d, b + 14, exl), b += 16;\n    if (ce != null) {\n        wbytes(d, b, col);\n        wbytes(d, b + 6, f.attrs);\n        wbytes(d, b + 10, ce), b += 14;\n    }\n    d.set(fn, b);\n    b += fl;\n    if (exl) {\n        for (var k in ex) {\n            var exf = ex[k], l = exf.length;\n            wbytes(d, b, +k);\n            wbytes(d, b + 2, l);\n            d.set(exf, b + 4), b += 4 + l;\n        }\n    }\n    if (col)\n        d.set(co, b), b += col;\n    return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n    wbytes(o, b, 0x6054B50); // skip disk\n    wbytes(o, b + 8, c);\n    wbytes(o, b + 10, c);\n    wbytes(o, b + 12, d);\n    wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n    /**\n     * Creates a pass-through stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     */\n    function ZipPassThrough(filename) {\n        this.filename = filename;\n        this.c = crc();\n        this.size = 0;\n        this.compression = 0;\n    }\n    /**\n     * Processes a chunk and pushes to the output stream. You can override this\n     * method in a subclass for custom behavior, but by default this passes\n     * the data through. You must call this.ondata(err, chunk, final) at some\n     * point in this method.\n     * @param chunk The chunk to process\n     * @param final Whether this is the last chunk\n     */\n    ZipPassThrough.prototype.process = function (chunk, final) {\n        this.ondata(null, chunk, final);\n    };\n    /**\n     * Pushes a chunk to be added. If you are subclassing this with a custom\n     * compression algorithm, note that you must push data from the source\n     * file only, pre-compression.\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    ZipPassThrough.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        this.c.p(chunk);\n        this.size += chunk.length;\n        if (final)\n            this.crc = this.c.d();\n        // we shouldn't really do this cast, but properly handling ArrayBufferLike\n        // makes the API unergonomic with Buffer\n        this.process(chunk, final || false);\n    };\n    return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     * @param opts The compression options\n     */\n    function ZipDeflate(filename, opts) {\n        var _this = this;\n        if (!opts)\n            opts = {};\n        ZipPassThrough.call(this, filename);\n        this.d = new Deflate(opts, function (dat, final) {\n            _this.ondata(null, dat, final);\n        });\n        this.compression = 8;\n        this.flag = dbf(opts.level);\n    }\n    ZipDeflate.prototype.process = function (chunk, final) {\n        try {\n            this.d.push(chunk, final);\n        }\n        catch (e) {\n            this.ondata(e, null, final);\n        }\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    ZipDeflate.prototype.push = function (chunk, final) {\n        ZipPassThrough.prototype.push.call(this, chunk, final);\n    };\n    return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     * @param opts The compression options\n     */\n    function AsyncZipDeflate(filename, opts) {\n        var _this = this;\n        if (!opts)\n            opts = {};\n        ZipPassThrough.call(this, filename);\n        this.d = new AsyncDeflate(opts, function (err, dat, final) {\n            _this.ondata(err, dat, final);\n        });\n        this.compression = 8;\n        this.flag = dbf(opts.level);\n        this.terminate = this.d.terminate;\n    }\n    AsyncZipDeflate.prototype.process = function (chunk, final) {\n        this.d.push(chunk, final);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncZipDeflate.prototype.push = function (chunk, final) {\n        ZipPassThrough.prototype.push.call(this, chunk, final);\n    };\n    return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n    /**\n     * Creates an empty ZIP archive to which files can be added\n     * @param cb The callback to call whenever data for the generated ZIP archive\n     *           is available\n     */\n    function Zip(cb) {\n        this.ondata = cb;\n        this.u = [];\n        this.d = 1;\n    }\n    /**\n     * Adds a file to the ZIP archive\n     * @param file The file stream to add\n     */\n    Zip.prototype.add = function (file) {\n        var _this = this;\n        if (!this.ondata)\n            err(5);\n        // finishing or finished\n        if (this.d & 2)\n            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n        else {\n            var f = strToU8(file.filename), fl_1 = f.length;\n            var com = file.comment, o = com && strToU8(com);\n            var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n            var hl_1 = fl_1 + exfl(file.extra) + 30;\n            if (fl_1 > 65535)\n                this.ondata(err(11, 0, 1), null, false);\n            var header = new u8(hl_1);\n            wzh(header, 0, file, f, u, -1);\n            var chks_1 = [header];\n            var pAll_1 = function () {\n                for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n                    var chk = chks_2[_i];\n                    _this.ondata(null, chk, false);\n                }\n                chks_1 = [];\n            };\n            var tr_1 = this.d;\n            this.d = 0;\n            var ind_1 = this.u.length;\n            var uf_1 = mrg(file, {\n                f: f,\n                u: u,\n                o: o,\n                t: function () {\n                    if (file.terminate)\n                        file.terminate();\n                },\n                r: function () {\n                    pAll_1();\n                    if (tr_1) {\n                        var nxt = _this.u[ind_1 + 1];\n                        if (nxt)\n                            nxt.r();\n                        else\n                            _this.d = 1;\n                    }\n                    tr_1 = 1;\n                }\n            });\n            var cl_1 = 0;\n            file.ondata = function (err, dat, final) {\n                if (err) {\n                    _this.ondata(err, dat, final);\n                    _this.terminate();\n                }\n                else {\n                    cl_1 += dat.length;\n                    chks_1.push(dat);\n                    if (final) {\n                        var dd = new u8(16);\n                        wbytes(dd, 0, 0x8074B50);\n                        wbytes(dd, 4, file.crc);\n                        wbytes(dd, 8, cl_1);\n                        wbytes(dd, 12, file.size);\n                        chks_1.push(dd);\n                        uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n                        if (tr_1)\n                            uf_1.r();\n                        tr_1 = 1;\n                    }\n                    else if (tr_1)\n                        pAll_1();\n                }\n            };\n            this.u.push(uf_1);\n        }\n    };\n    /**\n     * Ends the process of adding files and prepares to emit the final chunks.\n     * This *must* be called after adding all desired files for the resulting\n     * ZIP file to work properly.\n     */\n    Zip.prototype.end = function () {\n        var _this = this;\n        if (this.d & 2) {\n            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n            return;\n        }\n        if (this.d)\n            this.e();\n        else\n            this.u.push({\n                r: function () {\n                    if (!(_this.d & 1))\n                        return;\n                    _this.u.splice(-1, 1);\n                    _this.e();\n                },\n                t: function () { }\n            });\n        this.d = 3;\n    };\n    Zip.prototype.e = function () {\n        var bt = 0, l = 0, tl = 0;\n        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n            var f = _a[_i];\n            tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n        }\n        var out = new u8(tl + 22);\n        for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n            var f = _c[_b];\n            wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n            bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n        }\n        wzf(out, bt, this.u.length, tl, l);\n        this.ondata(null, out, true);\n        this.d = 2;\n    };\n    /**\n     * A method to terminate any internal workers used by the stream. Subsequent\n     * calls to add() will fail.\n     */\n    Zip.prototype.terminate = function () {\n        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n            var f = _a[_i];\n            f.t();\n        }\n        this.d = 2;\n    };\n    return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    var r = {};\n    fltn(data, '', r, opts);\n    var k = Object.keys(r);\n    var lft = k.length, o = 0, tot = 0;\n    var slft = lft, files = new Array(lft);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var cbd = function (a, b) {\n        mt(function () { cb(a, b); });\n    };\n    mt(function () { cbd = cb; });\n    var cbf = function () {\n        var out = new u8(tot + 22), oe = o, cdl = tot - o;\n        tot = 0;\n        for (var i = 0; i < slft; ++i) {\n            var f = files[i];\n            try {\n                var l = f.c.length;\n                wzh(out, tot, f, f.f, f.u, l);\n                var badd = 30 + f.f.length + exfl(f.extra);\n                var loc = tot + badd;\n                out.set(f.c, loc);\n                wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n            }\n            catch (e) {\n                return cbd(e, null);\n            }\n        }\n        wzf(out, o, files.length, cdl, oe);\n        cbd(null, out);\n    };\n    if (!lft)\n        cbf();\n    var _loop_1 = function (i) {\n        var fn = k[i];\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var c = crc(), size = file.length;\n        c.p(file);\n        var f = strToU8(fn), s = f.length;\n        var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n        var exl = exfl(p.extra);\n        var compression = p.level == 0 ? 0 : 8;\n        var cbl = function (e, d) {\n            if (e) {\n                tAll();\n                cbd(e, null);\n            }\n            else {\n                var l = d.length;\n                files[i] = mrg(p, {\n                    size: size,\n                    crc: c.d(),\n                    c: d,\n                    f: f,\n                    m: m,\n                    u: s != fn.length || (m && (com.length != ms)),\n                    compression: compression\n                });\n                o += 30 + s + exl + l;\n                tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n                if (!--lft)\n                    cbf();\n            }\n        };\n        if (s > 65535)\n            cbl(err(11, 0, 1), null);\n        if (!compression)\n            cbl(null, file);\n        else if (size < 160000) {\n            try {\n                cbl(null, deflateSync(file, p));\n            }\n            catch (e) {\n                cbl(e, null);\n            }\n        }\n        else\n            term.push(deflate(file, p, cbl));\n    };\n    // Cannot use lft because it can decrease\n    for (var i = 0; i < slft; ++i) {\n        _loop_1(i);\n    }\n    return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var r = {};\n    var files = [];\n    fltn(data, '', r, opts);\n    var o = 0;\n    var tot = 0;\n    for (var fn in r) {\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var compression = p.level == 0 ? 0 : 8;\n        var f = strToU8(fn), s = f.length;\n        var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n        var exl = exfl(p.extra);\n        if (s > 65535)\n            err(11);\n        var d = compression ? deflateSync(file, p) : file, l = d.length;\n        var c = crc();\n        c.p(file);\n        files.push(mrg(p, {\n            size: file.length,\n            crc: c.d(),\n            c: d,\n            f: f,\n            m: m,\n            u: s != fn.length || (m && (com.length != ms)),\n            o: o,\n            compression: compression\n        }));\n        o += 30 + s + exl + l;\n        tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n    }\n    var out = new u8(tot + 22), oe = o, cdl = tot - o;\n    for (var i = 0; i < files.length; ++i) {\n        var f = files[i];\n        wzh(out, f.o, f, f.f, f.u, f.c.length);\n        var badd = 30 + f.f.length + exfl(f.extra);\n        out.set(f.c, f.o + badd);\n        wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n    }\n    wzf(out, o, files.length, cdl, oe);\n    return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n    function UnzipPassThrough() {\n    }\n    UnzipPassThrough.prototype.push = function (chunk, final) {\n        // same as ZipPassThrough: cast to retain Buffer ergonomics\n        this.ondata(null, chunk, final);\n    };\n    UnzipPassThrough.compression = 0;\n    return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE decompression that can be used in ZIP archives\n     */\n    function UnzipInflate() {\n        var _this = this;\n        this.i = new Inflate(function (dat, final) {\n            _this.ondata(null, dat, final);\n        });\n    }\n    UnzipInflate.prototype.push = function (chunk, final) {\n        try {\n            this.i.push(chunk, final);\n        }\n        catch (e) {\n            this.ondata(e, null, final);\n        }\n    };\n    UnzipInflate.compression = 8;\n    return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE decompression that can be used in ZIP archives\n     */\n    function AsyncUnzipInflate(_, sz) {\n        var _this = this;\n        if (sz < 320000) {\n            this.i = new Inflate(function (dat, final) {\n                _this.ondata(null, dat, final);\n            });\n        }\n        else {\n            this.i = new AsyncInflate(function (err, dat, final) {\n                _this.ondata(err, dat, final);\n            });\n            this.terminate = this.i.terminate;\n        }\n    }\n    AsyncUnzipInflate.prototype.push = function (chunk, final) {\n        if (this.i.terminate)\n            chunk = slc(chunk, 0);\n        this.i.push(chunk, final);\n    };\n    AsyncUnzipInflate.compression = 8;\n    return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n    /**\n     * Creates a ZIP decompression stream\n     * @param cb The callback to call whenever a file in the ZIP archive is found\n     */\n    function Unzip(cb) {\n        this.onfile = cb;\n        this.k = [];\n        this.o = {\n            0: UnzipPassThrough\n        };\n        this.p = et;\n    }\n    /**\n     * Pushes a chunk to be unzipped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzip.prototype.push = function (chunk, final) {\n        var _this = this;\n        if (!this.onfile)\n            err(5);\n        if (!this.p)\n            err(4);\n        if (this.c > 0) {\n            var len = Math.min(this.c, chunk.length);\n            var toAdd = chunk.subarray(0, len);\n            this.c -= len;\n            if (this.d)\n                this.d.push(toAdd, !this.c);\n            else\n                this.k[0].push(toAdd);\n            chunk = chunk.subarray(len);\n            if (chunk.length)\n                return this.push(chunk, final);\n        }\n        else {\n            var f = 0, i = 0, is = void 0, buf = void 0;\n            if (!this.p.length)\n                buf = chunk;\n            else if (!chunk.length)\n                buf = this.p;\n            else {\n                buf = new u8(this.p.length + chunk.length);\n                buf.set(this.p), buf.set(chunk, this.p.length);\n            }\n            var l = buf.length, oc = this.c, add = oc && this.d;\n            var _loop_2 = function () {\n                var sig = b4(buf, i);\n                if (sig == 0x4034B50) {\n                    f = 1, is = i;\n                    this_1.d = null;\n                    this_1.c = 0;\n                    var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n                    if (l > i + 30 + fnl + es) {\n                        var chks_3 = [];\n                        this_1.k.unshift(chks_3);\n                        f = 2;\n                        var lsc = b4(buf, i + 18), lsu = b4(buf, i + 22);\n                        var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n                        var _a = z64hs(buf, i, es, 2, lsc, lsu, 0), sc_1 = _a[0], su_1 = _a[1], z64 = _a[3];\n                        if (dd)\n                            sc_1 = -1 - z64;\n                        i += es;\n                        this_1.c = sc_1;\n                        var d_1;\n                        var file_1 = {\n                            name: fn_1,\n                            compression: cmp_1,\n                            start: function () {\n                                if (!file_1.ondata)\n                                    err(5);\n                                if (!sc_1)\n                                    file_1.ondata(null, et, true);\n                                else {\n                                    var ctr = _this.o[cmp_1];\n                                    if (!ctr)\n                                        file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n                                    d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n                                    d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n                                    for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n                                        var dat = chks_4[_i];\n                                        d_1.push(dat, false);\n                                    }\n                                    if (_this.k[0] == chks_3 && _this.c)\n                                        _this.d = d_1;\n                                    else\n                                        d_1.push(et, true);\n                                }\n                            },\n                            terminate: function () {\n                                if (d_1 && d_1.terminate)\n                                    d_1.terminate();\n                            }\n                        };\n                        if (sc_1 >= 0)\n                            file_1.size = sc_1, file_1.originalSize = su_1;\n                        this_1.onfile(file_1);\n                    }\n                    return \"break\";\n                }\n                else if (oc) {\n                    if (sig == 0x8074B50) {\n                        is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n                        return \"break\";\n                    }\n                    else if (sig == 0x2014B50) {\n                        is = i -= 4, f = 3, this_1.c = 0;\n                        return \"break\";\n                    }\n                }\n            };\n            var this_1 = this;\n            for (; i < l - 4; ++i) {\n                var state_1 = _loop_2();\n                if (state_1 === \"break\")\n                    break;\n            }\n            this.p = et;\n            if (oc < 0) {\n                var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n                if (add)\n                    add.push(dat, !!f);\n                else\n                    this.k[+(f == 2)].push(dat);\n            }\n            if (f & 2)\n                return this.push(buf.subarray(i), final);\n            this.p = buf.subarray(i);\n        }\n        if (final) {\n            if (this.c)\n                err(13);\n            this.p = null;\n        }\n    };\n    /**\n     * Registers a decoder with the stream, allowing for files compressed with\n     * the compression type provided to be expanded correctly\n     * @param decoder The decoder constructor\n     */\n    Unzip.prototype.register = function (decoder) {\n        this.o[decoder.compression] = decoder;\n    };\n    return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var files = {};\n    var cbd = function (a, b) {\n        mt(function () { cb(a, b); });\n    };\n    mt(function () { cbd = cb; });\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558) {\n            cbd(err(13, 0, 1), null);\n            return tAll;\n        }\n    }\n    ;\n    var lft = b2(data, e + 8);\n    if (lft) {\n        var c = lft;\n        var o = b4(data, e + 16);\n        var z = b4(data, e - 20) == 0x7064B50;\n        if (z) {\n            var ze = b4(data, e - 12);\n            z = b4(data, ze) == 0x6064B50;\n            if (z) {\n                c = lft = b4(data, ze + 32);\n                o = b4(data, ze + 48);\n            }\n        }\n        var fltr = opts && opts.filter;\n        var _loop_3 = function (i) {\n            var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n            o = no;\n            var cbl = function (e, d) {\n                if (e) {\n                    tAll();\n                    cbd(e, null);\n                }\n                else {\n                    if (d)\n                        files[fn] = d;\n                    if (!--lft)\n                        cbd(null, files);\n                }\n            };\n            if (!fltr || fltr({\n                name: fn,\n                size: sc,\n                originalSize: su,\n                compression: c_1\n            })) {\n                if (!c_1)\n                    cbl(null, slc(data, b, b + sc));\n                else if (c_1 == 8) {\n                    var infl = data.subarray(b, b + sc);\n                    // Synchronously decompress under 512KB, or barely-compressed data\n                    if (su < 524288 || sc > 0.8 * su) {\n                        try {\n                            cbl(null, inflateSync(infl, { out: new u8(su) }));\n                        }\n                        catch (e) {\n                            cbl(e, null);\n                        }\n                    }\n                    else\n                        term.push(inflate(infl, { size: su }, cbl));\n                }\n                else\n                    cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n            }\n            else\n                cbl(null, null);\n        };\n        for (var i = 0; i < c; ++i) {\n            _loop_3(i);\n        }\n    }\n    else\n        cbd(null, {});\n    return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n    var files = {};\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558)\n            err(13);\n    }\n    ;\n    var c = b2(data, e + 8);\n    if (!c)\n        return {};\n    var o = b4(data, e + 16);\n    var z = b4(data, e - 20) == 0x7064B50;\n    if (z) {\n        var ze = b4(data, e - 12);\n        z = b4(data, ze) == 0x6064B50;\n        if (z) {\n            c = b4(data, ze + 32);\n            o = b4(data, ze + 48);\n        }\n    }\n    var fltr = opts && opts.filter;\n    for (var i = 0; i < c; ++i) {\n        var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n        o = no;\n        if (!fltr || fltr({\n            name: fn,\n            size: sc,\n            originalSize: su,\n            compression: c_2\n        })) {\n            if (!c_2)\n                files[fn] = slc(data, b, b + sc);\n            else if (c_2 == 8)\n                files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n            else\n                err(14, 'unknown compression type ' + c_2);\n        }\n    }\n    return files;\n}\n", "function _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };", "function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nexport { _iterableToArrayLimit as default };", "function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nexport { _arrayLikeToArray as default };", "import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nexport { _unsupportedIterableToArray as default };", "function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };", "import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n  return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };", "export function decode(bytes: Uint8Array, encoding = 'utf8'): string {\n  const decoder = new TextDecoder(encoding);\n  return decoder.decode(bytes);\n}\n\nconst encoder = new TextEncoder();\n\nexport function encode(str: string): Uint8Array {\n  return encoder.encode(str);\n}\n", "import { decode, encode } from './text';\n\nconst defaultByteLength = 1024 * 8;\n\nconst hostBigEndian = (() => {\n  const array = new Uint8Array(4);\n  const view = new Uint32Array(array.buffer);\n  return !((view[0] = 1) & array[0]);\n})();\n\ntype InputData = number | ArrayBufferLike | ArrayBufferView | IOBuffer | Buffer;\n\nconst typedArrays = {\n  int8: globalThis.Int8Array,\n  uint8: globalThis.Uint8Array,\n  int16: globalThis.Int16Array,\n  uint16: globalThis.Uint16Array,\n  int32: globalThis.Int32Array,\n  uint32: globalThis.Uint32Array,\n  uint64: globalThis.BigUint64Array,\n  int64: globalThis.BigInt64Array,\n  float32: globalThis.Float32Array,\n  float64: globalThis.Float64Array,\n};\n\ntype TypedArrays = typeof typedArrays;\n\ninterface IOBufferOptions {\n  /**\n   * Ignore the first n bytes of the ArrayBuffer.\n   */\n  offset?: number;\n}\n\nexport class IOBuffer {\n  /**\n   * Reference to the internal ArrayBuffer object.\n   */\n  public buffer: ArrayBufferLike;\n\n  /**\n   * Byte length of the internal ArrayBuffer.\n   */\n  public byteLength: number;\n\n  /**\n   * Byte offset of the internal ArrayBuffer.\n   */\n  public byteOffset: number;\n\n  /**\n   * Byte length of the internal ArrayBuffer.\n   */\n  public length: number;\n\n  /**\n   * The current offset of the buffer's pointer.\n   */\n  public offset: number;\n\n  private lastWrittenByte: number;\n  private littleEndian: boolean;\n\n  private _data: DataView;\n  private _mark: number;\n  private _marks: number[];\n\n  /**\n   * Create a new IOBuffer.\n   * @param data - The data to construct the IOBuffer with.\n   * If data is a number, it will be the new buffer's length<br>\n   * If data is `undefined`, the buffer will be initialized with a default length of 8Kb<br>\n   * If data is an ArrayBuffer, SharedArrayBuffer, an ArrayBufferView (Typed Array), an IOBuffer instance,\n   * or a Node.js Buffer, a view will be created over the underlying ArrayBuffer.\n   * @param options - An object for the options.\n   * @returns A new IOBuffer instance.\n   */\n  public constructor(\n    data: InputData = defaultByteLength,\n    options: IOBufferOptions = {},\n  ) {\n    let dataIsGiven = false;\n    if (typeof data === 'number') {\n      data = new ArrayBuffer(data);\n    } else {\n      dataIsGiven = true;\n      this.lastWrittenByte = data.byteLength;\n    }\n    const offset = options.offset ? options.offset >>> 0 : 0;\n    const byteLength = data.byteLength - offset;\n    let dvOffset = offset;\n    if (ArrayBuffer.isView(data) || data instanceof IOBuffer) {\n      if (data.byteLength !== data.buffer.byteLength) {\n        dvOffset = data.byteOffset + offset;\n      }\n      data = data.buffer;\n    }\n    if (dataIsGiven) {\n      this.lastWrittenByte = byteLength;\n    } else {\n      this.lastWrittenByte = 0;\n    }\n    this.buffer = data;\n    this.length = byteLength;\n    this.byteLength = byteLength;\n    this.byteOffset = dvOffset;\n    this.offset = 0;\n    this.littleEndian = true;\n    this._data = new DataView(this.buffer, dvOffset, byteLength);\n    this._mark = 0;\n    this._marks = [];\n  }\n\n  /**\n   * Checks if the memory allocated to the buffer is sufficient to store more\n   * bytes after the offset.\n   * @param byteLength - The needed memory in bytes.\n   * @returns `true` if there is sufficient space and `false` otherwise.\n   */\n  public available(byteLength = 1): boolean {\n    return this.offset + byteLength <= this.length;\n  }\n\n  /**\n   * Check if little-endian mode is used for reading and writing multi-byte\n   * values.\n   * @returns `true` if little-endian mode is used, `false` otherwise.\n   */\n  public isLittleEndian(): boolean {\n    return this.littleEndian;\n  }\n\n  /**\n   * Set little-endian mode for reading and writing multi-byte values.\n   * @returns This.\n   */\n  public setLittleEndian(): this {\n    this.littleEndian = true;\n    return this;\n  }\n\n  /**\n   * Check if big-endian mode is used for reading and writing multi-byte values.\n   * @returns `true` if big-endian mode is used, `false` otherwise.\n   */\n  public isBigEndian(): boolean {\n    return !this.littleEndian;\n  }\n\n  /**\n   * Switches to big-endian mode for reading and writing multi-byte values.\n   * @returns This.\n   */\n  public setBigEndian(): this {\n    this.littleEndian = false;\n    return this;\n  }\n\n  /**\n   * Move the pointer n bytes forward.\n   * @param n - Number of bytes to skip.\n   * @returns This.\n   */\n  public skip(n = 1): this {\n    this.offset += n;\n    return this;\n  }\n\n  /**\n   * Move the pointer n bytes backward.\n   * @param n - Number of bytes to move back.\n   * @returns This.\n   */\n  public back(n = 1): this {\n    this.offset -= n;\n    return this;\n  }\n\n  /**\n   * Move the pointer to the given offset.\n   * @param offset - The offset to move to.\n   * @returns This.\n   */\n  public seek(offset: number): this {\n    this.offset = offset;\n    return this;\n  }\n\n  /**\n   * Store the current pointer offset.\n   * @see {@link IOBuffer#reset}\n   * @returns This.\n   */\n  public mark(): this {\n    this._mark = this.offset;\n    return this;\n  }\n\n  /**\n   * Move the pointer back to the last pointer offset set by mark.\n   * @see {@link IOBuffer#mark}\n   * @returns This.\n   */\n  public reset(): this {\n    this.offset = this._mark;\n    return this;\n  }\n\n  /**\n   * Push the current pointer offset to the mark stack.\n   * @see {@link IOBuffer#popMark}\n   * @returns This.\n   */\n  public pushMark(): this {\n    this._marks.push(this.offset);\n    return this;\n  }\n\n  /**\n   * Pop the last pointer offset from the mark stack, and set the current\n   * pointer offset to the popped value.\n   * @see {@link IOBuffer#pushMark}\n   * @returns This.\n   */\n  public popMark(): this {\n    const offset = this._marks.pop();\n    if (offset === undefined) {\n      throw new Error('Mark stack empty');\n    }\n    this.seek(offset);\n    return this;\n  }\n\n  /**\n   * Move the pointer offset back to 0.\n   * @returns This.\n   */\n  public rewind(): this {\n    this.offset = 0;\n    return this;\n  }\n\n  /**\n   * Make sure the buffer has sufficient memory to write a given byteLength at\n   * the current pointer offset.\n   * If the buffer's memory is insufficient, this method will create a new\n   * buffer (a copy) with a length that is twice (byteLength + current offset).\n   * @param byteLength - The needed memory in bytes.\n   * @returns This.\n   */\n  public ensureAvailable(byteLength = 1): this {\n    if (!this.available(byteLength)) {\n      const lengthNeeded = this.offset + byteLength;\n      const newLength = lengthNeeded * 2;\n      const newArray = new Uint8Array(newLength);\n      newArray.set(new Uint8Array(this.buffer));\n      this.buffer = newArray.buffer;\n      this.length = newLength;\n      this.byteLength = newLength;\n      this._data = new DataView(this.buffer);\n    }\n    return this;\n  }\n\n  /**\n   * Read a byte and return false if the byte's value is 0, or true otherwise.\n   * Moves pointer forward by one byte.\n   * @returns The read boolean.\n   */\n  public readBoolean(): boolean {\n    return this.readUint8() !== 0;\n  }\n\n  /**\n   * Read a signed 8-bit integer and move pointer forward by 1 byte.\n   * @returns The read byte.\n   */\n  public readInt8(): number {\n    return this._data.getInt8(this.offset++);\n  }\n\n  /**\n   * Read an unsigned 8-bit integer and move pointer forward by 1 byte.\n   * @returns The read byte.\n   */\n  public readUint8(): number {\n    return this._data.getUint8(this.offset++);\n  }\n\n  /**\n   * Alias for {@link IOBuffer#readUint8}.\n   * @returns The read byte.\n   */\n  public readByte(): number {\n    return this.readUint8();\n  }\n\n  /**\n   * Read `n` bytes and move pointer forward by `n` bytes.\n   * @param n - Number of bytes to read.\n   * @returns The read bytes.\n   */\n  public readBytes(n = 1): Uint8Array {\n    return this.readArray(n, 'uint8');\n  }\n\n  /**\n   * Creates an array of corresponding to the type `type` and size `size`.\n   * For example type `uint8` will create a `Uint8Array`.\n   * @param size - size of the resulting array\n   * @param type - number type of elements to read\n   * @returns The read array.\n   */\n  public readArray<T extends keyof typeof typedArrays>(\n    size: number,\n    type: T,\n  ): InstanceType<TypedArrays[T]> {\n    const bytes = typedArrays[type].BYTES_PER_ELEMENT * size;\n    const offset = this.byteOffset + this.offset;\n    const slice = this.buffer.slice(offset, offset + bytes);\n    if (\n      this.littleEndian === hostBigEndian &&\n      type !== 'uint8' &&\n      type !== 'int8'\n    ) {\n      const slice = new Uint8Array(this.buffer.slice(offset, offset + bytes));\n      slice.reverse();\n      const returnArray = new typedArrays[type](slice.buffer);\n      this.offset += bytes;\n      returnArray.reverse();\n      return returnArray as InstanceType<TypedArrays[T]>;\n    }\n    const returnArray = new typedArrays[type](slice);\n    this.offset += bytes;\n    return returnArray as InstanceType<TypedArrays[T]>;\n  }\n\n  /**\n   * Read a 16-bit signed integer and move pointer forward by 2 bytes.\n   * @returns The read value.\n   */\n  public readInt16(): number {\n    const value = this._data.getInt16(this.offset, this.littleEndian);\n    this.offset += 2;\n    return value;\n  }\n\n  /**\n   * Read a 16-bit unsigned integer and move pointer forward by 2 bytes.\n   * @returns The read value.\n   */\n  public readUint16(): number {\n    const value = this._data.getUint16(this.offset, this.littleEndian);\n    this.offset += 2;\n    return value;\n  }\n\n  /**\n   * Read a 32-bit signed integer and move pointer forward by 4 bytes.\n   * @returns The read value.\n   */\n  public readInt32(): number {\n    const value = this._data.getInt32(this.offset, this.littleEndian);\n    this.offset += 4;\n    return value;\n  }\n\n  /**\n   * Read a 32-bit unsigned integer and move pointer forward by 4 bytes.\n   * @returns The read value.\n   */\n  public readUint32(): number {\n    const value = this._data.getUint32(this.offset, this.littleEndian);\n    this.offset += 4;\n    return value;\n  }\n\n  /**\n   * Read a 32-bit floating number and move pointer forward by 4 bytes.\n   * @returns The read value.\n   */\n  public readFloat32(): number {\n    const value = this._data.getFloat32(this.offset, this.littleEndian);\n    this.offset += 4;\n    return value;\n  }\n\n  /**\n   * Read a 64-bit floating number and move pointer forward by 8 bytes.\n   * @returns The read value.\n   */\n  public readFloat64(): number {\n    const value = this._data.getFloat64(this.offset, this.littleEndian);\n    this.offset += 8;\n    return value;\n  }\n\n  /**\n   * Read a 64-bit signed integer number and move pointer forward by 8 bytes.\n   * @returns The read value.\n   */\n  public readBigInt64(): bigint {\n    const value = this._data.getBigInt64(this.offset, this.littleEndian);\n    this.offset += 8;\n    return value;\n  }\n\n  /**\n   * Read a 64-bit unsigned integer number and move pointer forward by 8 bytes.\n   * @returns The read value.\n   */\n  public readBigUint64(): bigint {\n    const value = this._data.getBigUint64(this.offset, this.littleEndian);\n    this.offset += 8;\n    return value;\n  }\n\n  /**\n   * Read a 1-byte ASCII character and move pointer forward by 1 byte.\n   * @returns The read character.\n   */\n  public readChar(): string {\n    // eslint-disable-next-line unicorn/prefer-code-point\n    return String.fromCharCode(this.readInt8());\n  }\n\n  /**\n   * Read `n` 1-byte ASCII characters and move pointer forward by `n` bytes.\n   * @param n - Number of characters to read.\n   * @returns The read characters.\n   */\n  public readChars(n = 1): string {\n    let result = '';\n    for (let i = 0; i < n; i++) {\n      result += this.readChar();\n    }\n    return result;\n  }\n\n  /**\n   * Read the next `n` bytes, return a UTF-8 decoded string and move pointer\n   * forward by `n` bytes.\n   * @param n - Number of bytes to read.\n   * @returns The decoded string.\n   */\n  public readUtf8(n = 1): string {\n    return decode(this.readBytes(n));\n  }\n\n  /**\n   * Read the next `n` bytes, return a string decoded with `encoding` and move pointer\n   * forward by `n` bytes.\n   * If no encoding is passed, the function is equivalent to @see {@link IOBuffer#readUtf8}\n   * @param n - Number of bytes to read.\n   * @param encoding - The encoding to use. Default is 'utf8'.\n   * @returns The decoded string.\n   */\n  public decodeText(n = 1, encoding = 'utf8'): string {\n    return decode(this.readBytes(n), encoding);\n  }\n\n  /**\n   * Write 0xff if the passed value is truthy, 0x00 otherwise and move pointer\n   * forward by 1 byte.\n   * @param value - The value to write.\n   * @returns This.\n   */\n  public writeBoolean(value: unknown): this {\n    this.writeUint8(value ? 0xff : 0x00);\n    return this;\n  }\n\n  /**\n   * Write `value` as an 8-bit signed integer and move pointer forward by 1 byte.\n   * @param value - The value to write.\n   * @returns This.\n   */\n  public writeInt8(value: number): this {\n    this.ensureAvailable(1);\n    this._data.setInt8(this.offset++, value);\n    this._updateLastWrittenByte();\n    return this;\n  }\n\n  /**\n   * Write `value` as an 8-bit unsigned integer and move pointer forward by 1\n   * byte.\n   * @param value - The value to write.\n   * @returns This.\n   */\n  public writeUint8(value: number): this {\n    this.ensureAvailable(1);\n    this._data.setUint8(this.offset++, value);\n    this._updateLastWrittenByte();\n    return this;\n  }\n\n  /**\n   * An alias for {@link IOBuffer#writeUint8}.\n   * @param value - The value to write.\n   * @returns This.\n   */\n  public writeByte(value: number): this {\n    return this.writeUint8(value);\n  }\n\n  /**\n   * Write all elements of `bytes` as uint8 values and move pointer forward by\n   * `bytes.length` bytes.\n   * @param bytes - The array of bytes to write.\n   * @returns This.\n   */\n  public writeBytes(bytes: ArrayLike<number>): this {\n    this.ensureAvailable(bytes.length);\n    // eslint-disable-next-line @typescript-eslint/prefer-for-of\n    for (let i = 0; i < bytes.length; i++) {\n      this._data.setUint8(this.offset++, bytes[i]);\n    }\n    this._updateLastWrittenByte();\n    return this;\n  }\n\n  /**\n   * Write `value` as a 16-bit signed integer and move pointer forward by 2\n   * bytes.\n   * @param value - The value to write.\n   * @returns This.\n   */\n  public writeInt16(value: number): this {\n    this.ensureAvailable(2);\n    this._data.setInt16(this.offset, value, this.littleEndian);\n    this.offset += 2;\n    this._updateLastWrittenByte();\n    return this;\n  }\n\n  /**\n   * Write `value` as a 16-bit unsigned integer and move pointer forward by 2\n   * bytes.\n   * @param value - The value to write.\n   * @returns This.\n   */\n  public writeUint16(value: number): this {\n    this.ensureAvailable(2);\n    this._data.setUint16(this.offset, value, this.littleEndian);\n    this.offset += 2;\n    this._updateLastWrittenByte();\n    return this;\n  }\n\n  /**\n   * Write `value` as a 32-bit signed integer and move pointer forward by 4\n   * bytes.\n   * @param value - The value to write.\n   * @returns This.\n   */\n  public writeInt32(value: number): this {\n    this.ensureAvailable(4);\n    this._data.setInt32(this.offset, value, this.littleEndian);\n    this.offset += 4;\n    this._updateLastWrittenByte();\n    return this;\n  }\n\n  /**\n   * Write `value` as a 32-bit unsigned integer and move pointer forward by 4\n   * bytes.\n   * @param value - The value to write.\n   * @returns This.\n   */\n  public writeUint32(value: number): this {\n    this.ensureAvailable(4);\n    this._data.setUint32(this.offset, value, this.littleEndian);\n    this.offset += 4;\n    this._updateLastWrittenByte();\n    return this;\n  }\n\n  /**\n   * Write `value` as a 32-bit floating number and move pointer forward by 4\n   * bytes.\n   * @param value - The value to write.\n   * @returns This.\n   */\n  public writeFloat32(value: number): this {\n    this.ensureAvailable(4);\n    this._data.setFloat32(this.offset, value, this.littleEndian);\n    this.offset += 4;\n    this._updateLastWrittenByte();\n    return this;\n  }\n\n  /**\n   * Write `value` as a 64-bit floating number and move pointer forward by 8\n   * bytes.\n   * @param value - The value to write.\n   * @returns This.\n   */\n  public writeFloat64(value: number): this {\n    this.ensureAvailable(8);\n    this._data.setFloat64(this.offset, value, this.littleEndian);\n    this.offset += 8;\n    this._updateLastWrittenByte();\n    return this;\n  }\n\n  /**\n   * Write `value` as a 64-bit signed bigint and move pointer forward by 8\n   * bytes.\n   * @param value - The value to write.\n   * @returns This.\n   */\n  public writeBigInt64(value: bigint): this {\n    this.ensureAvailable(8);\n    this._data.setBigInt64(this.offset, value, this.littleEndian);\n    this.offset += 8;\n    this._updateLastWrittenByte();\n    return this;\n  }\n\n  /**\n   * Write `value` as a 64-bit unsigned bigint and move pointer forward by 8\n   * bytes.\n   * @param value - The value to write.\n   * @returns This.\n   */\n  public writeBigUint64(value: bigint): this {\n    this.ensureAvailable(8);\n    this._data.setBigUint64(this.offset, value, this.littleEndian);\n    this.offset += 8;\n    this._updateLastWrittenByte();\n    return this;\n  }\n\n  /**\n   * Write the charCode of `str`'s first character as an 8-bit unsigned integer\n   * and move pointer forward by 1 byte.\n   * @param str - The character to write.\n   * @returns This.\n   */\n  public writeChar(str: string): this {\n    // eslint-disable-next-line unicorn/prefer-code-point\n    return this.writeUint8(str.charCodeAt(0));\n  }\n\n  /**\n   * Write the charCodes of all `str`'s characters as 8-bit unsigned integers\n   * and move pointer forward by `str.length` bytes.\n   * @param str - The characters to write.\n   * @returns This.\n   */\n  public writeChars(str: string): this {\n    for (let i = 0; i < str.length; i++) {\n      // eslint-disable-next-line unicorn/prefer-code-point\n      this.writeUint8(str.charCodeAt(i));\n    }\n    return this;\n  }\n\n  /**\n   * UTF-8 encode and write `str` to the current pointer offset and move pointer\n   * forward according to the encoded length.\n   * @param str - The string to write.\n   * @returns This.\n   */\n  public writeUtf8(str: string): this {\n    return this.writeBytes(encode(str));\n  }\n\n  /**\n   * Export a Uint8Array view of the internal buffer.\n   * The view starts at the byte offset and its length\n   * is calculated to stop at the last written byte or the original length.\n   * @returns A new Uint8Array view.\n   */\n  public toArray(): Uint8Array {\n    return new Uint8Array(this.buffer, this.byteOffset, this.lastWrittenByte);\n  }\n\n  /**\n   *  Get the total number of bytes written so far, regardless of the current offset.\n   * @returns - Total number of bytes.\n   */\n  public getWrittenByteLength() {\n    return this.lastWrittenByte - this.byteOffset;\n  }\n\n  /**\n   * Update the last written byte offset\n   * @private\n   */\n  private _updateLastWrittenByte(): void {\n    if (this.offset > this.lastWrittenByte) {\n      this.lastWrittenByte = this.offset;\n    }\n  }\n}\n", "\n/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED          = 1;\n//const Z_HUFFMAN_ONLY      = 2;\n//const Z_RLE               = 3;\nconst Z_FIXED$1               = 4;\n//const Z_DEFAULT_STRATEGY  = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY              = 0;\nconst Z_TEXT                = 1;\n//const Z_ASCII             = 1; // = Z_TEXT\nconst Z_UNKNOWN$1             = 2;\n\n/*============================================================================*/\n\n\nfunction zero$1(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES    = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH$1    = 3;\nconst MAX_MATCH$1    = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES$1  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS$1      = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES$1       = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES$1       = 30;\n/* number of distance codes */\n\nconst BL_CODES$1      = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE$1     = 2 * L_CODES$1 + 1;\n/* maximum heap size */\n\nconst MAX_BITS$1      = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size      = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK   = 256;\n/* end of block literal code */\n\nconst REP_3_6     = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10   = 17;\n/* repeat a zero length 3-10 times  (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times  (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits =   /* extra bits for each length code */\n  new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits =   /* extra bits for each distance code */\n  new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits =  /* extra bits for each bit length code */\n  new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n  new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree  = new Array((L_CODES$1 + 2) * 2);\nzero$1(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree  = new Array(D_CODES$1 * 2);\nzero$1(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code    = new Array(DIST_CODE_LEN);\nzero$1(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code  = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1);\nzero$1(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length   = new Array(LENGTH_CODES$1);\nzero$1(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist     = new Array(D_CODES$1);\nzero$1(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n  this.static_tree  = static_tree;  /* static tree or NULL */\n  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */\n  this.extra_base   = extra_base;   /* base index for extra_bits */\n  this.elems        = elems;        /* max number of elements in the tree */\n  this.max_length   = max_length;   /* max bit length for the codes */\n\n  // show if `static_tree` has data or dummy - needed for monomorphic objects\n  this.has_stree    = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n  this.dyn_tree = dyn_tree;     /* the dynamic tree */\n  this.max_code = 0;            /* largest code with non zero frequency */\n  this.stat_desc = stat_desc;   /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n//    put_byte(s, (uch)((w) & 0xff));\n//    put_byte(s, (uch)((ush)(w) >> 8));\n  s.pending_buf[s.pending++] = (w) & 0xff;\n  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n  if (s.bi_valid > (Buf_size - length)) {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    put_short(s, s.bi_buf);\n    s.bi_buf = value >> (Buf_size - s.bi_valid);\n    s.bi_valid += length - Buf_size;\n  } else {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    s.bi_valid += length;\n  }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n  let res = 0;\n  do {\n    res |= code & 1;\n    code >>>= 1;\n    res <<= 1;\n  } while (--len > 0);\n  return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n  if (s.bi_valid === 16) {\n    put_short(s, s.bi_buf);\n    s.bi_buf = 0;\n    s.bi_valid = 0;\n\n  } else if (s.bi_valid >= 8) {\n    s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n    s.bi_buf >>= 8;\n    s.bi_valid -= 8;\n  }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n *    above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n *     array bl_count contains the frequencies for each bit length.\n *     The length opt_len is updated; static_len is also updated if stree is\n *     not null.\n */\nconst gen_bitlen = (s, desc) => {\n//    deflate_state *s;\n//    tree_desc *desc;    /* the tree descriptor */\n\n  const tree            = desc.dyn_tree;\n  const max_code        = desc.max_code;\n  const stree           = desc.stat_desc.static_tree;\n  const has_stree       = desc.stat_desc.has_stree;\n  const extra           = desc.stat_desc.extra_bits;\n  const base            = desc.stat_desc.extra_base;\n  const max_length      = desc.stat_desc.max_length;\n  let h;              /* heap index */\n  let n, m;           /* iterate over the tree elements */\n  let bits;           /* bit length */\n  let xbits;          /* extra bits */\n  let f;              /* frequency */\n  let overflow = 0;   /* number of elements with bit length too large */\n\n  for (bits = 0; bits <= MAX_BITS$1; bits++) {\n    s.bl_count[bits] = 0;\n  }\n\n  /* In a first pass, compute the optimal bit lengths (which may\n   * overflow in the case of the bit length tree).\n   */\n  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n  for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {\n    n = s.heap[h];\n    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n    if (bits > max_length) {\n      bits = max_length;\n      overflow++;\n    }\n    tree[n * 2 + 1]/*.Len*/ = bits;\n    /* We overwrite tree[n].Dad which is no longer needed */\n\n    if (n > max_code) { continue; } /* not a leaf node */\n\n    s.bl_count[bits]++;\n    xbits = 0;\n    if (n >= base) {\n      xbits = extra[n - base];\n    }\n    f = tree[n * 2]/*.Freq*/;\n    s.opt_len += f * (bits + xbits);\n    if (has_stree) {\n      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n    }\n  }\n  if (overflow === 0) { return; }\n\n  // Tracev((stderr,\"\\nbit length overflow\\n\"));\n  /* This happens for example on obj2 and pic of the Calgary corpus */\n\n  /* Find the first bit length which could increase: */\n  do {\n    bits = max_length - 1;\n    while (s.bl_count[bits] === 0) { bits--; }\n    s.bl_count[bits]--;      /* move one leaf down the tree */\n    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n    s.bl_count[max_length]--;\n    /* The brother of the overflow item also moves one step up,\n     * but this does not affect bl_count[max_length]\n     */\n    overflow -= 2;\n  } while (overflow > 0);\n\n  /* Now recompute all bit lengths, scanning in increasing frequency.\n   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n   * lengths instead of fixing only the wrong ones. This idea is taken\n   * from 'ar' written by Haruhiko Okumura.)\n   */\n  for (bits = max_length; bits !== 0; bits--) {\n    n = s.bl_count[bits];\n    while (n !== 0) {\n      m = s.heap[--h];\n      if (m > max_code) { continue; }\n      if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n        // Tracev((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n        tree[m * 2 + 1]/*.Len*/ = bits;\n      }\n      n--;\n    }\n  }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n *     zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) => {\n//    ct_data *tree;             /* the tree to decorate */\n//    int max_code;              /* largest code with non zero frequency */\n//    ushf *bl_count;            /* number of codes at each bit length */\n\n  const next_code = new Array(MAX_BITS$1 + 1); /* next code value for each bit length */\n  let code = 0;              /* running code value */\n  let bits;                  /* bit index */\n  let n;                     /* code index */\n\n  /* The distribution counts are first used to generate the code values\n   * without bit reversal.\n   */\n  for (bits = 1; bits <= MAX_BITS$1; bits++) {\n    code = (code + bl_count[bits - 1]) << 1;\n    next_code[bits] = code;\n  }\n  /* Check that the bit counts in bl_count are consistent. The last code\n   * must be all ones.\n   */\n  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n  //        \"inconsistent bit counts\");\n  //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n  for (n = 0;  n <= max_code; n++) {\n    let len = tree[n * 2 + 1]/*.Len*/;\n    if (len === 0) { continue; }\n    /* Now reverse the bits */\n    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n    //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n  }\n};\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nconst tr_static_init = () => {\n\n  let n;        /* iterates over tree elements */\n  let bits;     /* bit counter */\n  let length;   /* length value */\n  let code;     /* code value */\n  let dist;     /* distance index */\n  const bl_count = new Array(MAX_BITS$1 + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  // do check in _tr_init()\n  //if (static_init_done) return;\n\n  /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n  static_l_desc.static_tree = static_ltree;\n  static_l_desc.extra_bits = extra_lbits;\n  static_d_desc.static_tree = static_dtree;\n  static_d_desc.extra_bits = extra_dbits;\n  static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n  /* Initialize the mapping length (0..255) -> length code (0..28) */\n  length = 0;\n  for (code = 0; code < LENGTH_CODES$1 - 1; code++) {\n    base_length[code] = length;\n    for (n = 0; n < (1 << extra_lbits[code]); n++) {\n      _length_code[length++] = code;\n    }\n  }\n  //Assert (length == 256, \"tr_static_init: length != 256\");\n  /* Note that the length 255 (match length 258) can be represented\n   * in two different ways: code 284 + 5 bits or code 285, so we\n   * overwrite length_code[255] to use the best encoding:\n   */\n  _length_code[length - 1] = code;\n\n  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n  dist = 0;\n  for (code = 0; code < 16; code++) {\n    base_dist[code] = dist;\n    for (n = 0; n < (1 << extra_dbits[code]); n++) {\n      _dist_code[dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: dist != 256\");\n  dist >>= 7; /* from now on, all distances are divided by 128 */\n  for (; code < D_CODES$1; code++) {\n    base_dist[code] = dist << 7;\n    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n      _dist_code[256 + dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n  /* Construct the codes of the static literal tree */\n  for (bits = 0; bits <= MAX_BITS$1; bits++) {\n    bl_count[bits] = 0;\n  }\n\n  n = 0;\n  while (n <= 143) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  while (n <= 255) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 9;\n    n++;\n    bl_count[9]++;\n  }\n  while (n <= 279) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 7;\n    n++;\n    bl_count[7]++;\n  }\n  while (n <= 287) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  /* Codes 286 and 287 do not exist, but we must include them in the\n   * tree construction to get a canonical Huffman tree (longest code\n   * all ones)\n   */\n  gen_codes(static_ltree, L_CODES$1 + 1, bl_count);\n\n  /* The static distance tree is trivial: */\n  for (n = 0; n < D_CODES$1; n++) {\n    static_dtree[n * 2 + 1]/*.Len*/ = 5;\n    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n  }\n\n  // Now data ready and we can init static trees\n  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1);\n  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES$1, MAX_BITS$1);\n  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES$1, MAX_BL_BITS);\n\n  //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n  let n; /* iterates over tree elements */\n\n  /* Initialize the trees. */\n  for (n = 0; n < L_CODES$1;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < D_CODES$1;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < BL_CODES$1; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n  s.opt_len = s.static_len = 0;\n  s.sym_next = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n  if (s.bi_valid > 8) {\n    put_short(s, s.bi_buf);\n  } else if (s.bi_valid > 0) {\n    //put_byte(s, (Byte)s->bi_buf);\n    s.pending_buf[s.pending++] = s.bi_buf;\n  }\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n  const _n2 = n * 2;\n  const _m2 = m * 2;\n  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) => {\n//    deflate_state *s;\n//    ct_data *tree;  /* the tree to restore */\n//    int k;               /* node to move down */\n\n  const v = s.heap[k];\n  let j = k << 1;  /* left son of k */\n  while (j <= s.heap_len) {\n    /* Set j to the smallest of the two sons: */\n    if (j < s.heap_len &&\n      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n      j++;\n    }\n    /* Exit if v is smaller than both sons */\n    if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n    /* Exchange v with the smallest son */\n    s.heap[k] = s.heap[j];\n    k = j;\n\n    /* And continue down the tree, setting j to the left son of k */\n    j <<= 1;\n  }\n  s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) => {\n//    deflate_state *s;\n//    const ct_data *ltree; /* literal tree */\n//    const ct_data *dtree; /* distance tree */\n\n  let dist;           /* distance of matched string */\n  let lc;             /* match length or unmatched char (if dist == 0) */\n  let sx = 0;         /* running index in sym_buf */\n  let code;           /* the code to send */\n  let extra;          /* number of extra bits to send */\n\n  if (s.sym_next !== 0) {\n    do {\n      dist = s.pending_buf[s.sym_buf + sx++] & 0xff;\n      dist += (s.pending_buf[s.sym_buf + sx++] & 0xff) << 8;\n      lc = s.pending_buf[s.sym_buf + sx++];\n      if (dist === 0) {\n        send_code(s, lc, ltree); /* send a literal byte */\n        //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n      } else {\n        /* Here, lc is the match length - MIN_MATCH */\n        code = _length_code[lc];\n        send_code(s, code + LITERALS$1 + 1, ltree); /* send the length code */\n        extra = extra_lbits[code];\n        if (extra !== 0) {\n          lc -= base_length[code];\n          send_bits(s, lc, extra);       /* send the extra length bits */\n        }\n        dist--; /* dist is now the match distance - 1 */\n        code = d_code(dist);\n        //Assert (code < D_CODES, \"bad d_code\");\n\n        send_code(s, code, dtree);       /* send the distance code */\n        extra = extra_dbits[code];\n        if (extra !== 0) {\n          dist -= base_dist[code];\n          send_bits(s, dist, extra);   /* send the extra distance bits */\n        }\n      } /* literal or match pair ? */\n\n      /* Check that the overlay between pending_buf and sym_buf is ok: */\n      //Assert(s->pending < s->lit_bufsize + sx, \"pendingBuf overflow\");\n\n    } while (sx < s.sym_next);\n  }\n\n  send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n *     and corresponding code. The length opt_len is updated; static_len is\n *     also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) => {\n//    deflate_state *s;\n//    tree_desc *desc; /* the tree descriptor */\n\n  const tree     = desc.dyn_tree;\n  const stree    = desc.stat_desc.static_tree;\n  const has_stree = desc.stat_desc.has_stree;\n  const elems    = desc.stat_desc.elems;\n  let n, m;          /* iterate over heap elements */\n  let max_code = -1; /* largest code with non zero frequency */\n  let node;          /* new node being created */\n\n  /* Construct the initial heap, with least frequent element in\n   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n   * heap[0] is not used.\n   */\n  s.heap_len = 0;\n  s.heap_max = HEAP_SIZE$1;\n\n  for (n = 0; n < elems; n++) {\n    if (tree[n * 2]/*.Freq*/ !== 0) {\n      s.heap[++s.heap_len] = max_code = n;\n      s.depth[n] = 0;\n\n    } else {\n      tree[n * 2 + 1]/*.Len*/ = 0;\n    }\n  }\n\n  /* The pkzip format requires that at least one distance code exists,\n   * and that at least one bit should be sent even if there is only one\n   * possible code. So to avoid special checks later on we force at least\n   * two codes of non zero frequency.\n   */\n  while (s.heap_len < 2) {\n    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n    tree[node * 2]/*.Freq*/ = 1;\n    s.depth[node] = 0;\n    s.opt_len--;\n\n    if (has_stree) {\n      s.static_len -= stree[node * 2 + 1]/*.Len*/;\n    }\n    /* node is 0 or 1 so it does not have extra bits */\n  }\n  desc.max_code = max_code;\n\n  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n   * establish sub-heaps of increasing lengths:\n   */\n  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n  /* Construct the Huffman tree by repeatedly combining the least two\n   * frequent nodes.\n   */\n  node = elems;              /* next internal node of the tree */\n  do {\n    //pqremove(s, tree, n);  /* n = node of least frequency */\n    /*** pqremove ***/\n    n = s.heap[1/*SMALLEST*/];\n    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n    /***/\n\n    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n    s.heap[--s.heap_max] = m;\n\n    /* Create a new node father of n and m */\n    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n    /* and insert the new node in the heap */\n    s.heap[1/*SMALLEST*/] = node++;\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n\n  } while (s.heap_len >= 2);\n\n  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n  /* At this point, the fields freq and dad are set. We can now\n   * generate the bit lengths.\n   */\n  gen_bitlen(s, desc);\n\n  /* The field len is now set, we can generate the bit codes */\n  gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) => {\n//    deflate_state *s;\n//    ct_data *tree;   /* the tree to be scanned */\n//    int max_code;    /* and its largest code of non zero frequency */\n\n  let n;                     /* iterates over all tree elements */\n  let prevlen = -1;          /* last emitted length */\n  let curlen;                /* length of current code */\n\n  let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  let count = 0;             /* repeat count of the current code */\n  let max_count = 7;         /* max repeat count */\n  let min_count = 4;         /* min repeat count */\n\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n    } else if (curlen !== 0) {\n\n      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n    } else if (count <= 10) {\n      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n    } else {\n      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n    }\n\n    count = 0;\n    prevlen = curlen;\n\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) => {\n//    deflate_state *s;\n//    ct_data *tree; /* the tree to be scanned */\n//    int max_code;       /* and its largest code of non zero frequency */\n\n  let n;                     /* iterates over all tree elements */\n  let prevlen = -1;          /* last emitted length */\n  let curlen;                /* length of current code */\n\n  let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  let count = 0;             /* repeat count of the current code */\n  let max_count = 7;         /* max repeat count */\n  let min_count = 4;         /* min repeat count */\n\n  /* tree[max_code+1].Len = -1; */  /* guard already set */\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n    } else if (curlen !== 0) {\n      if (curlen !== prevlen) {\n        send_code(s, curlen, s.bl_tree);\n        count--;\n      }\n      //Assert(count >= 3 && count <= 6, \" 3_6?\");\n      send_code(s, REP_3_6, s.bl_tree);\n      send_bits(s, count - 3, 2);\n\n    } else if (count <= 10) {\n      send_code(s, REPZ_3_10, s.bl_tree);\n      send_bits(s, count - 3, 3);\n\n    } else {\n      send_code(s, REPZ_11_138, s.bl_tree);\n      send_bits(s, count - 11, 7);\n    }\n\n    count = 0;\n    prevlen = curlen;\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n  let max_blindex;  /* index of last bit length code of non zero freq */\n\n  /* Determine the bit length frequencies for literal and distance trees */\n  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n  /* Build the bit length tree: */\n  build_tree(s, s.bl_desc);\n  /* opt_len now includes the length of the tree representations, except\n   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n   */\n\n  /* Determine the number of bit length codes to send. The pkzip format\n   * requires that at least 4 bit length codes be sent. (appnote.txt says\n   * 3 but the actual value used is 4.)\n   */\n  for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) {\n    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n      break;\n    }\n  }\n  /* Update opt_len to include the bit length tree and counts */\n  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n  //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n  //        s->opt_len, s->static_len));\n\n  return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) => {\n//    deflate_state *s;\n//    int lcodes, dcodes, blcodes; /* number of codes for each tree */\n\n  let rank;                    /* index in bl_order */\n\n  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n  //        \"too many codes\");\n  //Tracev((stderr, \"\\nbl counts: \"));\n  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n  send_bits(s, dcodes - 1,   5);\n  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */\n  for (rank = 0; rank < blcodes; rank++) {\n    //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n  }\n  //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n  //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n  //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n *    a) There are no non-portable control characters belonging to the\n *       \"block list\" (0..6, 14..25, 28..31).\n *    b) There is at least one printable character belonging to the\n *       \"allow list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n *   \"gray list\" that is ignored in this detection algorithm:\n *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n  /* block_mask is the bit mask of block-listed bytes\n   * set bits 0..6, 14..25, and 28..31\n   * 0xf3ffc07f = binary 11110011111111111100000001111111\n   */\n  let block_mask = 0xf3ffc07f;\n  let n;\n\n  /* Check for non-textual (\"block-listed\") bytes. */\n  for (n = 0; n <= 31; n++, block_mask >>>= 1) {\n    if ((block_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n      return Z_BINARY;\n    }\n  }\n\n  /* Check for textual (\"allow-listed\") bytes. */\n  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n    return Z_TEXT;\n  }\n  for (n = 32; n < LITERALS$1; n++) {\n    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n      return Z_TEXT;\n    }\n  }\n\n  /* There are no \"block-listed\" or \"allow-listed\" bytes:\n   * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n   */\n  return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init$1 = (s) =>\n{\n\n  if (!static_init_done) {\n    tr_static_init();\n    static_init_done = true;\n  }\n\n  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);\n  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);\n  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n\n  /* Initialize the first block of the first file: */\n  init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block$1 = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf;       /* input block */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n\n  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */\n  bi_windup(s);        /* align on byte boundary */\n  put_short(s, stored_len);\n  put_short(s, ~stored_len);\n  if (stored_len) {\n    s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending);\n  }\n  s.pending += stored_len;\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align$1 = (s) => {\n  send_bits(s, STATIC_TREES << 1, 3);\n  send_code(s, END_BLOCK, static_ltree);\n  bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and write out the encoded block.\n */\nconst _tr_flush_block$1 = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf;       /* input block, or NULL if too old */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n\n  let opt_lenb, static_lenb;  /* opt_len and static_len in bytes */\n  let max_blindex = 0;        /* index of last bit length code of non zero freq */\n\n  /* Build the Huffman trees unless a stored block is forced */\n  if (s.level > 0) {\n\n    /* Check if the file is binary or text */\n    if (s.strm.data_type === Z_UNKNOWN$1) {\n      s.strm.data_type = detect_data_type(s);\n    }\n\n    /* Construct the literal and distance trees */\n    build_tree(s, s.l_desc);\n    // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n\n    build_tree(s, s.d_desc);\n    // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n    /* At this point, opt_len and static_len are the total bit lengths of\n     * the compressed block data, excluding the tree representations.\n     */\n\n    /* Build the bit length tree for the above two trees, and get the index\n     * in bl_order of the last bit length code to send.\n     */\n    max_blindex = build_bl_tree(s);\n\n    /* Determine the best encoding. Compute the block lengths in bytes. */\n    opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n    static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n    // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n    //        s->sym_next / 3));\n\n    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n  } else {\n    // Assert(buf != (char*)0, \"lost buf\");\n    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n  }\n\n  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n    /* 4: two words for the lengths */\n\n    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n     * Otherwise we can't have processed more than WSIZE input bytes since\n     * the last block flush, because compression would have been\n     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n     * transform a block into a stored block.\n     */\n    _tr_stored_block$1(s, buf, stored_len, last);\n\n  } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) {\n\n    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n    compress_block(s, static_ltree, static_dtree);\n\n  } else {\n    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n    compress_block(s, s.dyn_ltree, s.dyn_dtree);\n  }\n  // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n  /* The above check is made mod 2^32, for files larger than 512 MB\n   * and uLong implemented on 32 bits.\n   */\n  init_block(s);\n\n  if (last) {\n    bi_windup(s);\n  }\n  // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n  //       s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally$1 = (s, dist, lc) => {\n//    deflate_state *s;\n//    unsigned dist;  /* distance of matched string */\n//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */\n\n  s.pending_buf[s.sym_buf + s.sym_next++] = dist;\n  s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8;\n  s.pending_buf[s.sym_buf + s.sym_next++] = lc;\n  if (dist === 0) {\n    /* lc is the unmatched char */\n    s.dyn_ltree[lc * 2]/*.Freq*/++;\n  } else {\n    s.matches++;\n    /* Here, lc is the match length - MIN_MATCH */\n    dist--;             /* dist = match distance - 1 */\n    //Assert((ush)dist < (ush)MAX_DIST(s) &&\n    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n    //       (ush)d_code(dist) < (ush)D_CODES,  \"_tr_tally: bad match\");\n\n    s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]/*.Freq*/++;\n    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n  }\n\n  return (s.sym_next === s.sym_end);\n};\n\nvar _tr_init_1  = _tr_init$1;\nvar _tr_stored_block_1 = _tr_stored_block$1;\nvar _tr_flush_block_1  = _tr_flush_block$1;\nvar _tr_tally_1 = _tr_tally$1;\nvar _tr_align_1 = _tr_align$1;\n\nvar trees = {\n\t_tr_init: _tr_init_1,\n\t_tr_stored_block: _tr_stored_block_1,\n\t_tr_flush_block: _tr_flush_block_1,\n\t_tr_tally: _tr_tally_1,\n\t_tr_align: _tr_align_1\n};\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n  let s1 = (adler & 0xffff) |0,\n      s2 = ((adler >>> 16) & 0xffff) |0,\n      n = 0;\n\n  while (len !== 0) {\n    // Set limit ~ twice less than 5552, to keep\n    // s2 in 31-bits, because we force signed ints.\n    // in other case %= will fail.\n    n = len > 2000 ? 2000 : len;\n    len -= n;\n\n    do {\n      s1 = (s1 + buf[pos++]) |0;\n      s2 = (s2 + s1) |0;\n    } while (--n);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s1 | (s2 << 16)) |0;\n};\n\n\nvar adler32_1 = adler32;\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n  let c, table = [];\n\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n    }\n    table[n] = c;\n  }\n\n  return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n  const t = crcTable;\n  const end = pos + len;\n\n  crc ^= -1;\n\n  for (let i = pos; i < end; i++) {\n    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n  }\n\n  return (crc ^ (-1)); // >>> 0;\n};\n\n\nvar crc32_1 = crc32;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar messages = {\n  2:      'need dictionary',     /* Z_NEED_DICT       2  */\n  1:      'stream end',          /* Z_STREAM_END      1  */\n  0:      '',                    /* Z_OK              0  */\n  '-1':   'file error',          /* Z_ERRNO         (-1) */\n  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar constants$2 = {\n\n  /* Allowed flush values; see deflate() and inflate() below for details */\n  Z_NO_FLUSH:         0,\n  Z_PARTIAL_FLUSH:    1,\n  Z_SYNC_FLUSH:       2,\n  Z_FULL_FLUSH:       3,\n  Z_FINISH:           4,\n  Z_BLOCK:            5,\n  Z_TREES:            6,\n\n  /* Return codes for the compression/decompression functions. Negative values\n  * are errors, positive values are used for special but normal events.\n  */\n  Z_OK:               0,\n  Z_STREAM_END:       1,\n  Z_NEED_DICT:        2,\n  Z_ERRNO:           -1,\n  Z_STREAM_ERROR:    -2,\n  Z_DATA_ERROR:      -3,\n  Z_MEM_ERROR:       -4,\n  Z_BUF_ERROR:       -5,\n  //Z_VERSION_ERROR: -6,\n\n  /* compression levels */\n  Z_NO_COMPRESSION:         0,\n  Z_BEST_SPEED:             1,\n  Z_BEST_COMPRESSION:       9,\n  Z_DEFAULT_COMPRESSION:   -1,\n\n\n  Z_FILTERED:               1,\n  Z_HUFFMAN_ONLY:           2,\n  Z_RLE:                    3,\n  Z_FIXED:                  4,\n  Z_DEFAULT_STRATEGY:       0,\n\n  /* Possible values of the data_type field (though see inflate()) */\n  Z_BINARY:                 0,\n  Z_TEXT:                   1,\n  //Z_ASCII:                1, // = Z_TEXT (deprecated)\n  Z_UNKNOWN:                2,\n\n  /* The deflate compression method */\n  Z_DEFLATED:               8\n  //Z_NULL:                 null // Use -1 or null inline, depending on var type\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees;\n\n\n\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n  Z_NO_FLUSH: Z_NO_FLUSH$2, Z_PARTIAL_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$3, Z_BLOCK: Z_BLOCK$1,\n  Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_BUF_ERROR: Z_BUF_ERROR$1,\n  Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1,\n  Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1,\n  Z_UNKNOWN,\n  Z_DEFLATED: Z_DEFLATED$2\n} = constants$2;\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS$1 = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS      = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES       = 30;\n/* number of distance codes */\nconst BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\nconst MAX_BITS  = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE    =  42;    /* zlib header -> BUSY_STATE */\n//#ifdef GZIP\nconst GZIP_STATE    =  57;    /* gzip header -> BUSY_STATE | EXTRA_STATE */\n//#endif\nconst EXTRA_STATE   =  69;    /* gzip extra block -> NAME_STATE */\nconst NAME_STATE    =  73;    /* gzip file name -> COMMENT_STATE */\nconst COMMENT_STATE =  91;    /* gzip comment -> HCRC_STATE */\nconst HCRC_STATE    = 103;    /* gzip header CRC -> BUSY_STATE */\nconst BUSY_STATE    = 113;    /* deflate -> FINISH_STATE */\nconst FINISH_STATE  = 666;    /* stream complete */\n\nconst BS_NEED_MORE      = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE     = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n  strm.msg = messages[errorCode];\n  return errorCode;\n};\n\nconst rank = (f) => {\n  return ((f) * 2) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero = (buf) => {\n  let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n/* ===========================================================================\n * Slide the hash table when sliding the window down (could be avoided with 32\n * bit values at the expense of memory usage). We slide even when level == 0 to\n * keep the hash table consistent if we switch back to level > 0 later.\n */\nconst slide_hash = (s) => {\n  let n, m;\n  let p;\n  let wsize = s.w_size;\n\n  n = s.hash_size;\n  p = n;\n  do {\n    m = s.head[--p];\n    s.head[p] = (m >= wsize ? m - wsize : 0);\n  } while (--n);\n  n = wsize;\n//#ifndef FASTEST\n  p = n;\n  do {\n    m = s.prev[--p];\n    s.prev[p] = (m >= wsize ? m - wsize : 0);\n    /* If n is not on any hash chain, prev[n] is garbage but\n     * its value will never be used.\n     */\n  } while (--n);\n//#endif\n};\n\n/* eslint-disable new-cap */\nlet HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output, except for\n * some deflate_stored() output, goes through this function so some\n * applications may wish to modify it to avoid allocating a large\n * strm->next_out buffer and copying into it. (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n  const s = strm.state;\n\n  //_tr_flush_bits(s);\n  let len = s.pending;\n  if (len > strm.avail_out) {\n    len = strm.avail_out;\n  }\n  if (len === 0) { return; }\n\n  strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n  strm.next_out  += len;\n  s.pending_out  += len;\n  strm.total_out += len;\n  strm.avail_out -= len;\n  s.pending      -= len;\n  if (s.pending === 0) {\n    s.pending_out = 0;\n  }\n};\n\n\nconst flush_block_only = (s, last) => {\n  _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n  s.block_start = s.strstart;\n  flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n  s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n  //  put_byte(s, (Byte)(b >> 8));\n//  put_byte(s, (Byte)(b & 0xff));\n  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n  s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read.  All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n  let len = strm.avail_in;\n\n  if (len > size) { len = size; }\n  if (len === 0) { return 0; }\n\n  strm.avail_in -= len;\n\n  // zmemcpy(buf, strm->next_in, len);\n  buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n  if (strm.state.wrap === 1) {\n    strm.adler = adler32_1(strm.adler, buf, len, start);\n  }\n\n  else if (strm.state.wrap === 2) {\n    strm.adler = crc32_1(strm.adler, buf, len, start);\n  }\n\n  strm.next_in += len;\n  strm.total_in += len;\n\n  return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n  let chain_length = s.max_chain_length;      /* max hash chain length */\n  let scan = s.strstart; /* current string */\n  let match;                       /* matched string */\n  let len;                           /* length of current match */\n  let best_len = s.prev_length;              /* best match length so far */\n  let nice_match = s.nice_match;             /* stop if match long enough */\n  const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n  const _win = s.window; // shortcut\n\n  const wmask = s.w_mask;\n  const prev  = s.prev;\n\n  /* Stop when cur_match becomes <= limit. To simplify the code,\n   * we prevent matches with the string of window index 0.\n   */\n\n  const strend = s.strstart + MAX_MATCH;\n  let scan_end1  = _win[scan + best_len - 1];\n  let scan_end   = _win[scan + best_len];\n\n  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n   * It is easy to get rid of this optimization if necessary.\n   */\n  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n  /* Do not waste too much time if we already have a good match: */\n  if (s.prev_length >= s.good_match) {\n    chain_length >>= 2;\n  }\n  /* Do not look for matches beyond the end of the input. This is necessary\n   * to make deflate deterministic.\n   */\n  if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n  do {\n    // Assert(cur_match < s->strstart, \"no future\");\n    match = cur_match;\n\n    /* Skip to next match if the match length cannot increase\n     * or if the match length is less than 2.  Note that the checks below\n     * for insufficient lookahead only occur occasionally for performance\n     * reasons.  Therefore uninitialized memory will be accessed, and\n     * conditional jumps will be made that depend on those values.\n     * However the length of the match is limited to the lookahead, so\n     * the output of deflate is not affected by the uninitialized values.\n     */\n\n    if (_win[match + best_len]     !== scan_end  ||\n        _win[match + best_len - 1] !== scan_end1 ||\n        _win[match]                !== _win[scan] ||\n        _win[++match]              !== _win[scan + 1]) {\n      continue;\n    }\n\n    /* The check at best_len-1 can be removed because it will be made\n     * again later. (This heuristic is not always a win.)\n     * It is not necessary to compare scan[2] and match[2] since they\n     * are always equal when the other bytes match, given that\n     * the hash keys are equal and that HASH_BITS >= 8.\n     */\n    scan += 2;\n    match++;\n    // Assert(*scan == *match, \"match[2]?\");\n\n    /* We check for insufficient lookahead only every 8th comparison;\n     * the 256th check will be made at strstart+258.\n     */\n    do {\n      /*jshint noempty:false*/\n    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             scan < strend);\n\n    // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n    len = MAX_MATCH - (strend - scan);\n    scan = strend - MAX_MATCH;\n\n    if (len > best_len) {\n      s.match_start = cur_match;\n      best_len = len;\n      if (len >= nice_match) {\n        break;\n      }\n      scan_end1  = _win[scan + best_len - 1];\n      scan_end   = _win[scan + best_len];\n    }\n  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n  if (best_len <= s.lookahead) {\n    return best_len;\n  }\n  return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n *    At least one byte has been read, or avail_in == 0; reads are\n *    performed for at least two bytes (required for the zip translate_eol\n *    option -- not supported here).\n */\nconst fill_window = (s) => {\n\n  const _w_size = s.w_size;\n  let n, more, str;\n\n  //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n  do {\n    more = s.window_size - s.lookahead - s.strstart;\n\n    // JS ints have 32 bit, block below not needed\n    /* Deal with !@#$% 64K limit: */\n    //if (sizeof(int) <= 2) {\n    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n    //        more = wsize;\n    //\n    //  } else if (more == (unsigned)(-1)) {\n    //        /* Very unlikely, but possible on 16 bit machine if\n    //         * strstart == 0 && lookahead == 1 (input done a byte at time)\n    //         */\n    //        more--;\n    //    }\n    //}\n\n\n    /* If the window is almost full and there is insufficient lookahead,\n     * move the upper half to the lower one to make room in the upper half.\n     */\n    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n      s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0);\n      s.match_start -= _w_size;\n      s.strstart -= _w_size;\n      /* we now have strstart >= MAX_DIST */\n      s.block_start -= _w_size;\n      if (s.insert > s.strstart) {\n        s.insert = s.strstart;\n      }\n      slide_hash(s);\n      more += _w_size;\n    }\n    if (s.strm.avail_in === 0) {\n      break;\n    }\n\n    /* If there was no sliding:\n     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n     *    more == window_size - lookahead - strstart\n     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n     * => more >= window_size - 2*WSIZE + 2\n     * In the BIG_MEM or MMAP case (not yet supported),\n     *   window_size == input_size + MIN_LOOKAHEAD  &&\n     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n     * Otherwise, window_size == 2*WSIZE so more >= 2.\n     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n     */\n    //Assert(more >= 2, \"more < 2\");\n    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n    s.lookahead += n;\n\n    /* Initialize the hash value now that we have some input: */\n    if (s.lookahead + s.insert >= MIN_MATCH) {\n      str = s.strstart - s.insert;\n      s.ins_h = s.window[str];\n\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n      s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n//        Call update_hash() MIN_MATCH-3 more times\n//#endif\n      while (s.insert) {\n        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n        s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n        s.prev[str & s.w_mask] = s.head[s.ins_h];\n        s.head[s.ins_h] = str;\n        str++;\n        s.insert--;\n        if (s.lookahead + s.insert < MIN_MATCH) {\n          break;\n        }\n      }\n    }\n    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n     * but this is not important since only literal bytes will be emitted.\n     */\n\n  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n  /* If the WIN_INIT bytes after the end of the current data have never been\n   * written, then zero those bytes in order to avoid memory check reports of\n   * the use of uninitialized (or uninitialised as Julian writes) bytes by\n   * the longest match routines.  Update the high water mark for the next\n   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match\n   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n   */\n//  if (s.high_water < s.window_size) {\n//    const curr = s.strstart + s.lookahead;\n//    let init = 0;\n//\n//    if (s.high_water < curr) {\n//      /* Previous high water mark below current data -- zero WIN_INIT\n//       * bytes or up to end of window, whichever is less.\n//       */\n//      init = s.window_size - curr;\n//      if (init > WIN_INIT)\n//        init = WIN_INIT;\n//      zmemzero(s->window + curr, (unsigned)init);\n//      s->high_water = curr + init;\n//    }\n//    else if (s->high_water < (ulg)curr + WIN_INIT) {\n//      /* High water mark at or above current data, but below current data\n//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n//       * to end of window, whichever is less.\n//       */\n//      init = (ulg)curr + WIN_INIT - s->high_water;\n//      if (init > s->window_size - s->high_water)\n//        init = s->window_size - s->high_water;\n//      zmemzero(s->window + s->high_water, (unsigned)init);\n//      s->high_water += init;\n//    }\n//  }\n//\n//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n//    \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n *\n * In case deflateParams() is used to later switch to a non-zero compression\n * level, s->matches (otherwise unused when storing) keeps track of the number\n * of hash table slides to perform. If s->matches is 1, then one hash table\n * slide will be done when switching. If s->matches is 2, the maximum value\n * allowed here, then the hash table will be cleared, since two or more slides\n * is the same as a clear.\n *\n * deflate_stored() is written to minimize the number of times an input byte is\n * copied. It is most efficient with large input and output buffers, which\n * maximizes the opportunites to have a single copy from next_in to next_out.\n */\nconst deflate_stored = (s, flush) => {\n\n  /* Smallest worthy block size when not flushing or finishing. By default\n   * this is 32K. This can be as small as 507 bytes for memLevel == 1. For\n   * large input and output buffers, the stored block size will be larger.\n   */\n  let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5;\n\n  /* Copy as many min_block or larger stored blocks directly to next_out as\n   * possible. If flushing, copy the remaining available input to next_out as\n   * stored blocks, if there is enough space.\n   */\n  let len, left, have, last = 0;\n  let used = s.strm.avail_in;\n  do {\n    /* Set len to the maximum size block that we can copy directly with the\n     * available input data and output space. Set left to how much of that\n     * would be copied from what's left in the window.\n     */\n    len = 65535/* MAX_STORED */;     /* maximum deflate stored block length */\n    have = (s.bi_valid + 42) >> 3;     /* number of header bytes */\n    if (s.strm.avail_out < have) {         /* need room for header */\n      break;\n    }\n      /* maximum stored block length that will fit in avail_out: */\n    have = s.strm.avail_out - have;\n    left = s.strstart - s.block_start;  /* bytes left in window */\n    if (len > left + s.strm.avail_in) {\n      len = left + s.strm.avail_in;   /* limit len to the input */\n    }\n    if (len > have) {\n      len = have;             /* limit len to the output */\n    }\n\n    /* If the stored block would be less than min_block in length, or if\n     * unable to copy all of the available input when flushing, then try\n     * copying to the window and the pending buffer instead. Also don't\n     * write an empty block when flushing -- deflate() does that.\n     */\n    if (len < min_block && ((len === 0 && flush !== Z_FINISH$3) ||\n                        flush === Z_NO_FLUSH$2 ||\n                        len !== left + s.strm.avail_in)) {\n      break;\n    }\n\n    /* Make a dummy stored block in pending to get the header bytes,\n     * including any pending bits. This also updates the debugging counts.\n     */\n    last = flush === Z_FINISH$3 && len === left + s.strm.avail_in ? 1 : 0;\n    _tr_stored_block(s, 0, 0, last);\n\n    /* Replace the lengths in the dummy stored block with len. */\n    s.pending_buf[s.pending - 4] = len;\n    s.pending_buf[s.pending - 3] = len >> 8;\n    s.pending_buf[s.pending - 2] = ~len;\n    s.pending_buf[s.pending - 1] = ~len >> 8;\n\n    /* Write the stored block header bytes. */\n    flush_pending(s.strm);\n\n//#ifdef ZLIB_DEBUG\n//    /* Update debugging counts for the data about to be copied. */\n//    s->compressed_len += len << 3;\n//    s->bits_sent += len << 3;\n//#endif\n\n    /* Copy uncompressed bytes from the window to next_out. */\n    if (left) {\n      if (left > len) {\n        left = len;\n      }\n      //zmemcpy(s->strm->next_out, s->window + s->block_start, left);\n      s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out);\n      s.strm.next_out += left;\n      s.strm.avail_out -= left;\n      s.strm.total_out += left;\n      s.block_start += left;\n      len -= left;\n    }\n\n    /* Copy uncompressed bytes directly from next_in to next_out, updating\n     * the check value.\n     */\n    if (len) {\n      read_buf(s.strm, s.strm.output, s.strm.next_out, len);\n      s.strm.next_out += len;\n      s.strm.avail_out -= len;\n      s.strm.total_out += len;\n    }\n  } while (last === 0);\n\n  /* Update the sliding window with the last s->w_size bytes of the copied\n   * data, or append all of the copied data to the existing window if less\n   * than s->w_size bytes were copied. Also update the number of bytes to\n   * insert in the hash tables, in the event that deflateParams() switches to\n   * a non-zero compression level.\n   */\n  used -= s.strm.avail_in;    /* number of input bytes directly copied */\n  if (used) {\n    /* If any input was used, then no unused input remains in the window,\n     * therefore s->block_start == s->strstart.\n     */\n    if (used >= s.w_size) {  /* supplant the previous history */\n      s.matches = 2;     /* clear hash */\n      //zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);\n      s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);\n      s.strstart = s.w_size;\n      s.insert = s.strstart;\n    }\n    else {\n      if (s.window_size - s.strstart <= used) {\n        /* Slide the window down. */\n        s.strstart -= s.w_size;\n        //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n        s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n        if (s.matches < 2) {\n          s.matches++;   /* add a pending slide_hash() */\n        }\n        if (s.insert > s.strstart) {\n          s.insert = s.strstart;\n        }\n      }\n      //zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);\n      s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);\n      s.strstart += used;\n      s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;\n    }\n    s.block_start = s.strstart;\n  }\n  if (s.high_water < s.strstart) {\n    s.high_water = s.strstart;\n  }\n\n  /* If the last block was written to next_out, then done. */\n  if (last) {\n    return BS_FINISH_DONE;\n  }\n\n  /* If flushing and all input has been consumed, then done. */\n  if (flush !== Z_NO_FLUSH$2 && flush !== Z_FINISH$3 &&\n    s.strm.avail_in === 0 && s.strstart === s.block_start) {\n    return BS_BLOCK_DONE;\n  }\n\n  /* Fill the window with any remaining input. */\n  have = s.window_size - s.strstart;\n  if (s.strm.avail_in > have && s.block_start >= s.w_size) {\n    /* Slide the window down. */\n    s.block_start -= s.w_size;\n    s.strstart -= s.w_size;\n    //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n    s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n    if (s.matches < 2) {\n      s.matches++;       /* add a pending slide_hash() */\n    }\n    have += s.w_size;      /* more space now */\n    if (s.insert > s.strstart) {\n      s.insert = s.strstart;\n    }\n  }\n  if (have > s.strm.avail_in) {\n    have = s.strm.avail_in;\n  }\n  if (have) {\n    read_buf(s.strm, s.window, s.strstart, have);\n    s.strstart += have;\n    s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;\n  }\n  if (s.high_water < s.strstart) {\n    s.high_water = s.strstart;\n  }\n\n  /* There was not enough avail_out to write a complete worthy or flushed\n   * stored block to next_out. Write a stored block to pending instead, if we\n   * have enough input for a worthy block, or if flushing and there is enough\n   * room for the remaining input as a stored block in the pending buffer.\n   */\n  have = (s.bi_valid + 42) >> 3;     /* number of header bytes */\n    /* maximum stored block length that will fit in pending: */\n  have = s.pending_buf_size - have > 65535/* MAX_STORED */ ? 65535/* MAX_STORED */ : s.pending_buf_size - have;\n  min_block = have > s.w_size ? s.w_size : have;\n  left = s.strstart - s.block_start;\n  if (left >= min_block ||\n     ((left || flush === Z_FINISH$3) && flush !== Z_NO_FLUSH$2 &&\n     s.strm.avail_in === 0 && left <= have)) {\n    len = left > have ? have : left;\n    last = flush === Z_FINISH$3 && s.strm.avail_in === 0 &&\n         len === left ? 1 : 0;\n    _tr_stored_block(s, s.block_start, len, last);\n    s.block_start += len;\n    flush_pending(s.strm);\n  }\n\n  /* We've done all we can with the available input and output. */\n  return last ? BS_FINISH_STARTED : BS_NEED_MORE;\n};\n\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n  let hash_head;        /* head of the hash chain */\n  let bflush;           /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break; /* flush the current block */\n      }\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     * At this point we have always match_length < MIN_MATCH\n     */\n    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n    }\n    if (s.match_length >= MIN_MATCH) {\n      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n      /*** _tr_tally_dist(s, s.strstart - s.match_start,\n                     s.match_length - MIN_MATCH, bflush); ***/\n      bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n\n      /* Insert new strings in the hash table only if the match length\n       * is not too large. This saves time but degrades compression.\n       */\n      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n        s.match_length--; /* string at strstart already in table */\n        do {\n          s.strstart++;\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n          /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n           * always MIN_MATCH bytes ahead.\n           */\n        } while (--s.match_length !== 0);\n        s.strstart++;\n      } else\n      {\n        s.strstart += s.match_length;\n        s.match_length = 0;\n        s.ins_h = s.window[s.strstart];\n        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n        s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n//                Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n         * matter since it will be recomputed at next deflate call.\n         */\n      }\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n  if (flush === Z_FINISH$3) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n  let hash_head;          /* head of hash chain */\n  let bflush;              /* set if current block must be flushed */\n\n  let max_insert;\n\n  /* Process the input block. */\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     */\n    s.prev_length = s.match_length;\n    s.prev_match = s.match_start;\n    s.match_length = MIN_MATCH - 1;\n\n    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n\n      if (s.match_length <= 5 &&\n         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n        /* If prev_match is also MIN_MATCH, match_start is garbage\n         * but we will ignore the current match anyway.\n         */\n        s.match_length = MIN_MATCH - 1;\n      }\n    }\n    /* If there was a match at the previous step and the current\n     * match is not better, output the previous match:\n     */\n    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n      max_insert = s.strstart + s.lookahead - MIN_MATCH;\n      /* Do not insert strings in hash table beyond this. */\n\n      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n                     s.prev_length - MIN_MATCH, bflush);***/\n      bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n      /* Insert in hash table all strings up to the end of the match.\n       * strstart-1 and strstart are already inserted. If there is not\n       * enough lookahead, the last two strings are not inserted in\n       * the hash table.\n       */\n      s.lookahead -= s.prev_length - 1;\n      s.prev_length -= 2;\n      do {\n        if (++s.strstart <= max_insert) {\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n        }\n      } while (--s.prev_length !== 0);\n      s.match_available = 0;\n      s.match_length = MIN_MATCH - 1;\n      s.strstart++;\n\n      if (bflush) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n\n    } else if (s.match_available) {\n      /* If there was no match at the previous position, output a\n       * single literal. If there was a match but the current match\n       * is longer, truncate the previous match to a single literal.\n       */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n      bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n      if (bflush) {\n        /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n        flush_block_only(s, false);\n        /***/\n      }\n      s.strstart++;\n      s.lookahead--;\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    } else {\n      /* There is no previous match to compare with, wait for\n       * the next step to decide.\n       */\n      s.match_available = 1;\n      s.strstart++;\n      s.lookahead--;\n    }\n  }\n  //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n  if (s.match_available) {\n    //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n    bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n    s.match_available = 0;\n  }\n  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n  if (flush === Z_FINISH$3) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one.  Do not maintain a hash table.  (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n  let bflush;            /* set if current block must be flushed */\n  let prev;              /* byte at distance one to match */\n  let scan, strend;      /* scan goes up to strend for length of run */\n\n  const _win = s.window;\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the longest run, plus one for the unrolled loop.\n     */\n    if (s.lookahead <= MAX_MATCH) {\n      fill_window(s);\n      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* See how many times the previous byte repeats */\n    s.match_length = 0;\n    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n      scan = s.strstart - 1;\n      prev = _win[scan];\n      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n        strend = s.strstart + MAX_MATCH;\n        do {\n          /*jshint noempty:false*/\n        } while (prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 scan < strend);\n        s.match_length = MAX_MATCH - (strend - scan);\n        if (s.match_length > s.lookahead) {\n          s.match_length = s.lookahead;\n        }\n      }\n      //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n    }\n\n    /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n    if (s.match_length >= MIN_MATCH) {\n      //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n      bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n      s.strstart += s.match_length;\n      s.match_length = 0;\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH$3) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n  let bflush;             /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we have a literal to write. */\n    if (s.lookahead === 0) {\n      fill_window(s);\n      if (s.lookahead === 0) {\n        if (flush === Z_NO_FLUSH$2) {\n          return BS_NEED_MORE;\n        }\n        break;      /* flush the current block */\n      }\n    }\n\n    /* Output a literal byte */\n    s.match_length = 0;\n    //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n    bflush = _tr_tally(s, 0, s.window[s.strstart]);\n    s.lookahead--;\n    s.strstart++;\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH$3) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n  this.good_length = good_length;\n  this.max_lazy = max_lazy;\n  this.nice_length = nice_length;\n  this.max_chain = max_chain;\n  this.func = func;\n}\n\nconst configuration_table = [\n  /*      good lazy nice chain */\n  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */\n  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */\n  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */\n  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */\n\n  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */\n  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */\n  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */\n  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */\n  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */\n  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n  s.window_size = 2 * s.w_size;\n\n  /*** CLEAR_HASH(s); ***/\n  zero(s.head); // Fill with NIL (= 0);\n\n  /* Set the default configuration parameters:\n   */\n  s.max_lazy_match = configuration_table[s.level].max_lazy;\n  s.good_match = configuration_table[s.level].good_length;\n  s.nice_match = configuration_table[s.level].nice_length;\n  s.max_chain_length = configuration_table[s.level].max_chain;\n\n  s.strstart = 0;\n  s.block_start = 0;\n  s.lookahead = 0;\n  s.insert = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n  this.strm = null;            /* pointer back to this zlib stream */\n  this.status = 0;            /* as the name implies */\n  this.pending_buf = null;      /* output still pending */\n  this.pending_buf_size = 0;  /* size of pending_buf */\n  this.pending_out = 0;       /* next pending byte to output to the stream */\n  this.pending = 0;           /* nb of bytes in the pending buffer */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.gzhead = null;         /* gzip header information to write */\n  this.gzindex = 0;           /* where in extra, name, or comment */\n  this.method = Z_DEFLATED$2; /* can only be DEFLATED */\n  this.last_flush = -1;   /* value of flush param for previous deflate call */\n\n  this.w_size = 0;  /* LZ77 window size (32K by default) */\n  this.w_bits = 0;  /* log2(w_size)  (8..16) */\n  this.w_mask = 0;  /* w_size - 1 */\n\n  this.window = null;\n  /* Sliding window. Input bytes are read into the second half of the window,\n   * and move to the first half later to keep a dictionary of at least wSize\n   * bytes. With this organization, matches are limited to a distance of\n   * wSize-MAX_MATCH bytes, but this ensures that IO is always\n   * performed with a length multiple of the block size.\n   */\n\n  this.window_size = 0;\n  /* Actual size of window: 2*wSize, except when the user input buffer\n   * is directly used as sliding window.\n   */\n\n  this.prev = null;\n  /* Link to older string with same hash index. To limit the size of this\n   * array to 64K, this link is maintained only for the last 32K strings.\n   * An index in this array is thus a window index modulo 32K.\n   */\n\n  this.head = null;   /* Heads of the hash chains or NIL. */\n\n  this.ins_h = 0;       /* hash index of string to be inserted */\n  this.hash_size = 0;   /* number of elements in hash table */\n  this.hash_bits = 0;   /* log2(hash_size) */\n  this.hash_mask = 0;   /* hash_size-1 */\n\n  this.hash_shift = 0;\n  /* Number of bits by which ins_h must be shifted at each input\n   * step. It must be such that after MIN_MATCH steps, the oldest\n   * byte no longer takes part in the hash key, that is:\n   *   hash_shift * MIN_MATCH >= hash_bits\n   */\n\n  this.block_start = 0;\n  /* Window position at the beginning of the current output block. Gets\n   * negative when the window is moved backwards.\n   */\n\n  this.match_length = 0;      /* length of best match */\n  this.prev_match = 0;        /* previous match */\n  this.match_available = 0;   /* set if previous match exists */\n  this.strstart = 0;          /* start of string to insert */\n  this.match_start = 0;       /* start of matching string */\n  this.lookahead = 0;         /* number of valid bytes ahead in window */\n\n  this.prev_length = 0;\n  /* Length of the best match at previous step. Matches not greater than this\n   * are discarded. This is used in the lazy match evaluation.\n   */\n\n  this.max_chain_length = 0;\n  /* To speed up deflation, hash chains are never searched beyond this\n   * length.  A higher limit improves compression ratio but degrades the\n   * speed.\n   */\n\n  this.max_lazy_match = 0;\n  /* Attempt to find a better match only when the current match is strictly\n   * smaller than this value. This mechanism is used only for compression\n   * levels >= 4.\n   */\n  // That's alias to max_lazy_match, don't use directly\n  //this.max_insert_length = 0;\n  /* Insert new strings in the hash table only if the match length is not\n   * greater than this length. This saves time but degrades compression.\n   * max_insert_length is used only for compression levels <= 3.\n   */\n\n  this.level = 0;     /* compression level (1..9) */\n  this.strategy = 0;  /* favor or force Huffman coding*/\n\n  this.good_match = 0;\n  /* Use a faster search when the previous match is longer than this */\n\n  this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n              /* used by trees.c: */\n\n  /* Didn't use ct_data typedef below to suppress compiler warning */\n\n  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */\n  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */\n\n  // Use flat array of DOUBLE size, with interleaved fata,\n  // because JS does not support effective\n  this.dyn_ltree  = new Uint16Array(HEAP_SIZE * 2);\n  this.dyn_dtree  = new Uint16Array((2 * D_CODES + 1) * 2);\n  this.bl_tree    = new Uint16Array((2 * BL_CODES + 1) * 2);\n  zero(this.dyn_ltree);\n  zero(this.dyn_dtree);\n  zero(this.bl_tree);\n\n  this.l_desc   = null;         /* desc. for literal tree */\n  this.d_desc   = null;         /* desc. for distance tree */\n  this.bl_desc  = null;         /* desc. for bit length tree */\n\n  //ush bl_count[MAX_BITS+1];\n  this.bl_count = new Uint16Array(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */\n  this.heap = new Uint16Array(2 * L_CODES + 1);  /* heap used to build the Huffman trees */\n  zero(this.heap);\n\n  this.heap_len = 0;               /* number of elements in the heap */\n  this.heap_max = 0;               /* element of largest frequency */\n  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n   * The same heap array is used to build all trees.\n   */\n\n  this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n  zero(this.depth);\n  /* Depth of each subtree used as tie breaker for trees of equal frequency\n   */\n\n  this.sym_buf = 0;        /* buffer for distances and literals/lengths */\n\n  this.lit_bufsize = 0;\n  /* Size of match buffer for literals/lengths.  There are 4 reasons for\n   * limiting lit_bufsize to 64K:\n   *   - frequencies can be kept in 16 bit counters\n   *   - if compression is not successful for the first block, all input\n   *     data is still in the window so we can still emit a stored block even\n   *     when input comes from standard input.  (This can also be done for\n   *     all blocks if lit_bufsize is not greater than 32K.)\n   *   - if compression is not successful for a file smaller than 64K, we can\n   *     even emit a stored file instead of a stored block (saving 5 bytes).\n   *     This is applicable only for zip (not gzip or zlib).\n   *   - creating new Huffman trees less frequently may not provide fast\n   *     adaptation to changes in the input data statistics. (Take for\n   *     example a binary file with poorly compressible code followed by\n   *     a highly compressible string table.) Smaller buffer sizes give\n   *     fast adaptation but have of course the overhead of transmitting\n   *     trees more frequently.\n   *   - I can't count above 4\n   */\n\n  this.sym_next = 0;      /* running index in sym_buf */\n  this.sym_end = 0;       /* symbol table full when sym_next reaches this */\n\n  this.opt_len = 0;       /* bit length of current block with optimal trees */\n  this.static_len = 0;    /* bit length of current block with static trees */\n  this.matches = 0;       /* number of string matches in current block */\n  this.insert = 0;        /* bytes at end of window left to insert */\n\n\n  this.bi_buf = 0;\n  /* Output buffer. bits are inserted starting at the bottom (least\n   * significant bits).\n   */\n  this.bi_valid = 0;\n  /* Number of valid bits in bi_buf.  All bits above the last valid bit\n   * are always zero.\n   */\n\n  // Used for window memory init. We safely ignore it for JS. That makes\n  // sense only for pointers and memory check tools.\n  //this.high_water = 0;\n  /* High water mark offset in window for initialized bytes -- bytes above\n   * this are set to zero in order to avoid memory check warnings when\n   * longest match routines access bytes past the input.  This is then\n   * updated to the new high water mark.\n   */\n}\n\n\n/* =========================================================================\n * Check for a valid deflate stream state. Return 0 if ok, 1 if not.\n */\nconst deflateStateCheck = (strm) => {\n\n  if (!strm) {\n    return 1;\n  }\n  const s = strm.state;\n  if (!s || s.strm !== strm || (s.status !== INIT_STATE &&\n//#ifdef GZIP\n                                s.status !== GZIP_STATE &&\n//#endif\n                                s.status !== EXTRA_STATE &&\n                                s.status !== NAME_STATE &&\n                                s.status !== COMMENT_STATE &&\n                                s.status !== HCRC_STATE &&\n                                s.status !== BUSY_STATE &&\n                                s.status !== FINISH_STATE)) {\n    return 1;\n  }\n  return 0;\n};\n\n\nconst deflateResetKeep = (strm) => {\n\n  if (deflateStateCheck(strm)) {\n    return err(strm, Z_STREAM_ERROR$2);\n  }\n\n  strm.total_in = strm.total_out = 0;\n  strm.data_type = Z_UNKNOWN;\n\n  const s = strm.state;\n  s.pending = 0;\n  s.pending_out = 0;\n\n  if (s.wrap < 0) {\n    s.wrap = -s.wrap;\n    /* was made negative by deflate(..., Z_FINISH); */\n  }\n  s.status =\n//#ifdef GZIP\n    s.wrap === 2 ? GZIP_STATE :\n//#endif\n    s.wrap ? INIT_STATE : BUSY_STATE;\n  strm.adler = (s.wrap === 2) ?\n    0  // crc32(0, Z_NULL, 0)\n  :\n    1; // adler32(0, Z_NULL, 0)\n  s.last_flush = -2;\n  _tr_init(s);\n  return Z_OK$3;\n};\n\n\nconst deflateReset = (strm) => {\n\n  const ret = deflateResetKeep(strm);\n  if (ret === Z_OK$3) {\n    lm_init(strm.state);\n  }\n  return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n  if (deflateStateCheck(strm) || strm.state.wrap !== 2) {\n    return Z_STREAM_ERROR$2;\n  }\n  strm.state.gzhead = head;\n  return Z_OK$3;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n\n  if (!strm) { // === Z_NULL\n    return Z_STREAM_ERROR$2;\n  }\n  let wrap = 1;\n\n  if (level === Z_DEFAULT_COMPRESSION$1) {\n    level = 6;\n  }\n\n  if (windowBits < 0) { /* suppress zlib wrapper */\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n\n  else if (windowBits > 15) {\n    wrap = 2;           /* write gzip wrapper instead */\n    windowBits -= 16;\n  }\n\n\n  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 ||\n    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n    strategy < 0 || strategy > Z_FIXED || (windowBits === 8 && wrap !== 1)) {\n    return err(strm, Z_STREAM_ERROR$2);\n  }\n\n\n  if (windowBits === 8) {\n    windowBits = 9;\n  }\n  /* until 256-byte window bug fixed */\n\n  const s = new DeflateState();\n\n  strm.state = s;\n  s.strm = strm;\n  s.status = INIT_STATE;     /* to pass state test in deflateReset() */\n\n  s.wrap = wrap;\n  s.gzhead = null;\n  s.w_bits = windowBits;\n  s.w_size = 1 << s.w_bits;\n  s.w_mask = s.w_size - 1;\n\n  s.hash_bits = memLevel + 7;\n  s.hash_size = 1 << s.hash_bits;\n  s.hash_mask = s.hash_size - 1;\n  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n  s.window = new Uint8Array(s.w_size * 2);\n  s.head = new Uint16Array(s.hash_size);\n  s.prev = new Uint16Array(s.w_size);\n\n  // Don't need mem init magic for JS.\n  //s.high_water = 0;  /* nothing written to s->window yet */\n\n  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n  /* We overlay pending_buf and sym_buf. This works since the average size\n   * for length/distance pairs over any compressed block is assured to be 31\n   * bits or less.\n   *\n   * Analysis: The longest fixed codes are a length code of 8 bits plus 5\n   * extra bits, for lengths 131 to 257. The longest fixed distance codes are\n   * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest\n   * possible fixed-codes length/distance pair is then 31 bits total.\n   *\n   * sym_buf starts one-fourth of the way into pending_buf. So there are\n   * three bytes in sym_buf for every four bytes in pending_buf. Each symbol\n   * in sym_buf is three bytes -- two for the distance and one for the\n   * literal/length. As each symbol is consumed, the pointer to the next\n   * sym_buf value to read moves forward three bytes. From that symbol, up to\n   * 31 bits are written to pending_buf. The closest the written pending_buf\n   * bits gets to the next sym_buf symbol to read is just before the last\n   * code is written. At that time, 31*(n-2) bits have been written, just\n   * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at\n   * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1\n   * symbols are written.) The closest the writing gets to what is unread is\n   * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and\n   * can range from 128 to 32768.\n   *\n   * Therefore, at a minimum, there are 142 bits of space between what is\n   * written and what is read in the overlain buffers, so the symbols cannot\n   * be overwritten by the compressed data. That space is actually 139 bits,\n   * due to the three-bit fixed-code block header.\n   *\n   * That covers the case where either Z_FIXED is specified, forcing fixed\n   * codes, or when the use of fixed codes is chosen, because that choice\n   * results in a smaller compressed block than dynamic codes. That latter\n   * condition then assures that the above analysis also covers all dynamic\n   * blocks. A dynamic-code block will only be chosen to be emitted if it has\n   * fewer bits than a fixed-code block would for the same set of symbols.\n   * Therefore its average symbol length is assured to be less than 31. So\n   * the compressed data for a dynamic block also cannot overwrite the\n   * symbols from which it is being constructed.\n   */\n\n  s.pending_buf_size = s.lit_bufsize * 4;\n  s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n  //s->sym_buf = s->pending_buf + s->lit_bufsize;\n  s.sym_buf = s.lit_bufsize;\n\n  //s->sym_end = (s->lit_bufsize - 1) * 3;\n  s.sym_end = (s.lit_bufsize - 1) * 3;\n  /* We avoid equality with lit_bufsize*3 because of wraparound at 64K\n   * on 16 bit machines and because stored blocks are restricted to\n   * 64K-1 bytes.\n   */\n\n  s.level = level;\n  s.strategy = strategy;\n  s.method = method;\n\n  return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n  return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1);\n};\n\n\n/* ========================================================================= */\nconst deflate$2 = (strm, flush) => {\n\n  if (deflateStateCheck(strm) || flush > Z_BLOCK$1 || flush < 0) {\n    return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2;\n  }\n\n  const s = strm.state;\n\n  if (!strm.output ||\n      (strm.avail_in !== 0 && !strm.input) ||\n      (s.status === FINISH_STATE && flush !== Z_FINISH$3)) {\n    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2);\n  }\n\n  const old_flush = s.last_flush;\n  s.last_flush = flush;\n\n  /* Flush as much pending output as possible */\n  if (s.pending !== 0) {\n    flush_pending(strm);\n    if (strm.avail_out === 0) {\n      /* Since avail_out is 0, deflate will be called again with\n       * more output space, but possibly with both pending and\n       * avail_in equal to zero. There won't be anything to do,\n       * but this is not an error situation so make sure we\n       * return OK instead of BUF_ERROR at next call of deflate:\n       */\n      s.last_flush = -1;\n      return Z_OK$3;\n    }\n\n    /* Make sure there is something to do and avoid duplicate consecutive\n     * flushes. For repeated and useless calls with Z_FINISH, we keep\n     * returning Z_STREAM_END instead of Z_BUF_ERROR.\n     */\n  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n    flush !== Z_FINISH$3) {\n    return err(strm, Z_BUF_ERROR$1);\n  }\n\n  /* User must not provide more input after the first FINISH: */\n  if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n    return err(strm, Z_BUF_ERROR$1);\n  }\n\n  /* Write the header */\n  if (s.status === INIT_STATE && s.wrap === 0) {\n    s.status = BUSY_STATE;\n  }\n  if (s.status === INIT_STATE) {\n    /* zlib header */\n    let header = (Z_DEFLATED$2 + ((s.w_bits - 8) << 4)) << 8;\n    let level_flags = -1;\n\n    if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n      level_flags = 0;\n    } else if (s.level < 6) {\n      level_flags = 1;\n    } else if (s.level === 6) {\n      level_flags = 2;\n    } else {\n      level_flags = 3;\n    }\n    header |= (level_flags << 6);\n    if (s.strstart !== 0) { header |= PRESET_DICT; }\n    header += 31 - (header % 31);\n\n    putShortMSB(s, header);\n\n    /* Save the adler32 of the preset dictionary: */\n    if (s.strstart !== 0) {\n      putShortMSB(s, strm.adler >>> 16);\n      putShortMSB(s, strm.adler & 0xffff);\n    }\n    strm.adler = 1; // adler32(0L, Z_NULL, 0);\n    s.status = BUSY_STATE;\n\n    /* Compression must start with an empty pending buffer */\n    flush_pending(strm);\n    if (s.pending !== 0) {\n      s.last_flush = -1;\n      return Z_OK$3;\n    }\n  }\n//#ifdef GZIP\n  if (s.status === GZIP_STATE) {\n    /* gzip header */\n    strm.adler = 0;  //crc32(0L, Z_NULL, 0);\n    put_byte(s, 31);\n    put_byte(s, 139);\n    put_byte(s, 8);\n    if (!s.gzhead) { // s->gzhead == Z_NULL\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, s.level === 9 ? 2 :\n                  (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                   4 : 0));\n      put_byte(s, OS_CODE);\n      s.status = BUSY_STATE;\n\n      /* Compression must start with an empty pending buffer */\n      flush_pending(strm);\n      if (s.pending !== 0) {\n        s.last_flush = -1;\n        return Z_OK$3;\n      }\n    }\n    else {\n      put_byte(s, (s.gzhead.text ? 1 : 0) +\n                  (s.gzhead.hcrc ? 2 : 0) +\n                  (!s.gzhead.extra ? 0 : 4) +\n                  (!s.gzhead.name ? 0 : 8) +\n                  (!s.gzhead.comment ? 0 : 16)\n      );\n      put_byte(s, s.gzhead.time & 0xff);\n      put_byte(s, (s.gzhead.time >> 8) & 0xff);\n      put_byte(s, (s.gzhead.time >> 16) & 0xff);\n      put_byte(s, (s.gzhead.time >> 24) & 0xff);\n      put_byte(s, s.level === 9 ? 2 :\n                  (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                   4 : 0));\n      put_byte(s, s.gzhead.os & 0xff);\n      if (s.gzhead.extra && s.gzhead.extra.length) {\n        put_byte(s, s.gzhead.extra.length & 0xff);\n        put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n      }\n      if (s.gzhead.hcrc) {\n        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0);\n      }\n      s.gzindex = 0;\n      s.status = EXTRA_STATE;\n    }\n  }\n  if (s.status === EXTRA_STATE) {\n    if (s.gzhead.extra/* != Z_NULL*/) {\n      let beg = s.pending;   /* start of bytes to update crc */\n      let left = (s.gzhead.extra.length & 0xffff) - s.gzindex;\n      while (s.pending + left > s.pending_buf_size) {\n        let copy = s.pending_buf_size - s.pending;\n        // zmemcpy(s.pending_buf + s.pending,\n        //    s.gzhead.extra + s.gzindex, copy);\n        s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending);\n        s.pending = s.pending_buf_size;\n        //--- HCRC_UPDATE(beg) ---//\n        if (s.gzhead.hcrc && s.pending > beg) {\n          strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n        }\n        //---//\n        s.gzindex += copy;\n        flush_pending(strm);\n        if (s.pending !== 0) {\n          s.last_flush = -1;\n          return Z_OK$3;\n        }\n        beg = 0;\n        left -= copy;\n      }\n      // JS specific: s.gzhead.extra may be TypedArray or Array for backward compatibility\n      //              TypedArray.slice and TypedArray.from don't exist in IE10-IE11\n      let gzhead_extra = new Uint8Array(s.gzhead.extra);\n      // zmemcpy(s->pending_buf + s->pending,\n      //     s->gzhead->extra + s->gzindex, left);\n      s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending);\n      s.pending += left;\n      //--- HCRC_UPDATE(beg) ---//\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      //---//\n      s.gzindex = 0;\n    }\n    s.status = NAME_STATE;\n  }\n  if (s.status === NAME_STATE) {\n    if (s.gzhead.name/* != Z_NULL*/) {\n      let beg = s.pending;   /* start of bytes to update crc */\n      let val;\n      do {\n        if (s.pending === s.pending_buf_size) {\n          //--- HCRC_UPDATE(beg) ---//\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          //---//\n          flush_pending(strm);\n          if (s.pending !== 0) {\n            s.last_flush = -1;\n            return Z_OK$3;\n          }\n          beg = 0;\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.name.length) {\n          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n      //--- HCRC_UPDATE(beg) ---//\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      //---//\n      s.gzindex = 0;\n    }\n    s.status = COMMENT_STATE;\n  }\n  if (s.status === COMMENT_STATE) {\n    if (s.gzhead.comment/* != Z_NULL*/) {\n      let beg = s.pending;   /* start of bytes to update crc */\n      let val;\n      do {\n        if (s.pending === s.pending_buf_size) {\n          //--- HCRC_UPDATE(beg) ---//\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          //---//\n          flush_pending(strm);\n          if (s.pending !== 0) {\n            s.last_flush = -1;\n            return Z_OK$3;\n          }\n          beg = 0;\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.comment.length) {\n          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n      //--- HCRC_UPDATE(beg) ---//\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      //---//\n    }\n    s.status = HCRC_STATE;\n  }\n  if (s.status === HCRC_STATE) {\n    if (s.gzhead.hcrc) {\n      if (s.pending + 2 > s.pending_buf_size) {\n        flush_pending(strm);\n        if (s.pending !== 0) {\n          s.last_flush = -1;\n          return Z_OK$3;\n        }\n      }\n      put_byte(s, strm.adler & 0xff);\n      put_byte(s, (strm.adler >> 8) & 0xff);\n      strm.adler = 0; //crc32(0L, Z_NULL, 0);\n    }\n    s.status = BUSY_STATE;\n\n    /* Compression must start with an empty pending buffer */\n    flush_pending(strm);\n    if (s.pending !== 0) {\n      s.last_flush = -1;\n      return Z_OK$3;\n    }\n  }\n//#endif\n\n  /* Start a new block or continue the current one.\n   */\n  if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n    (flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE)) {\n    let bstate = s.level === 0 ? deflate_stored(s, flush) :\n                 s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :\n                 s.strategy === Z_RLE ? deflate_rle(s, flush) :\n                 configuration_table[s.level].func(s, flush);\n\n    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n      s.status = FINISH_STATE;\n    }\n    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n      if (strm.avail_out === 0) {\n        s.last_flush = -1;\n        /* avoid BUF_ERROR next call, see above */\n      }\n      return Z_OK$3;\n      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n       * of deflate should use the same flush parameter to make sure\n       * that the flush is complete. So we don't have to output an\n       * empty block here, this will be done at next call. This also\n       * ensures that for a very small output buffer, we emit at most\n       * one empty block.\n       */\n    }\n    if (bstate === BS_BLOCK_DONE) {\n      if (flush === Z_PARTIAL_FLUSH) {\n        _tr_align(s);\n      }\n      else if (flush !== Z_BLOCK$1) { /* FULL_FLUSH or SYNC_FLUSH */\n\n        _tr_stored_block(s, 0, 0, false);\n        /* For a full flush, this empty block will be recognized\n         * as a special marker by inflate_sync().\n         */\n        if (flush === Z_FULL_FLUSH$1) {\n          /*** CLEAR_HASH(s); ***/             /* forget history */\n          zero(s.head); // Fill with NIL (= 0);\n\n          if (s.lookahead === 0) {\n            s.strstart = 0;\n            s.block_start = 0;\n            s.insert = 0;\n          }\n        }\n      }\n      flush_pending(strm);\n      if (strm.avail_out === 0) {\n        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n        return Z_OK$3;\n      }\n    }\n  }\n\n  if (flush !== Z_FINISH$3) { return Z_OK$3; }\n  if (s.wrap <= 0) { return Z_STREAM_END$3; }\n\n  /* Write the trailer */\n  if (s.wrap === 2) {\n    put_byte(s, strm.adler & 0xff);\n    put_byte(s, (strm.adler >> 8) & 0xff);\n    put_byte(s, (strm.adler >> 16) & 0xff);\n    put_byte(s, (strm.adler >> 24) & 0xff);\n    put_byte(s, strm.total_in & 0xff);\n    put_byte(s, (strm.total_in >> 8) & 0xff);\n    put_byte(s, (strm.total_in >> 16) & 0xff);\n    put_byte(s, (strm.total_in >> 24) & 0xff);\n  }\n  else\n  {\n    putShortMSB(s, strm.adler >>> 16);\n    putShortMSB(s, strm.adler & 0xffff);\n  }\n\n  flush_pending(strm);\n  /* If avail_out is zero, the application will call deflate again\n   * to flush the rest.\n   */\n  if (s.wrap > 0) { s.wrap = -s.wrap; }\n  /* write the trailer only once! */\n  return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3;\n};\n\n\nconst deflateEnd = (strm) => {\n\n  if (deflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$2;\n  }\n\n  const status = strm.state.status;\n\n  strm.state = null;\n\n  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n  let dictLength = dictionary.length;\n\n  if (deflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$2;\n  }\n\n  const s = strm.state;\n  const wrap = s.wrap;\n\n  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n    return Z_STREAM_ERROR$2;\n  }\n\n  /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n  if (wrap === 1) {\n    /* adler32(strm->adler, dictionary, dictLength); */\n    strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0);\n  }\n\n  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */\n\n  /* if dictionary would fill window, just replace the history */\n  if (dictLength >= s.w_size) {\n    if (wrap === 0) {            /* already empty otherwise */\n      /*** CLEAR_HASH(s); ***/\n      zero(s.head); // Fill with NIL (= 0);\n      s.strstart = 0;\n      s.block_start = 0;\n      s.insert = 0;\n    }\n    /* use the tail */\n    // dictionary = dictionary.slice(dictLength - s.w_size);\n    let tmpDict = new Uint8Array(s.w_size);\n    tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n    dictionary = tmpDict;\n    dictLength = s.w_size;\n  }\n  /* insert dictionary into window and hash */\n  const avail = strm.avail_in;\n  const next = strm.next_in;\n  const input = strm.input;\n  strm.avail_in = dictLength;\n  strm.next_in = 0;\n  strm.input = dictionary;\n  fill_window(s);\n  while (s.lookahead >= MIN_MATCH) {\n    let str = s.strstart;\n    let n = s.lookahead - (MIN_MATCH - 1);\n    do {\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n      s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n      s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n      s.head[s.ins_h] = str;\n      str++;\n    } while (--n);\n    s.strstart = str;\n    s.lookahead = MIN_MATCH - 1;\n    fill_window(s);\n  }\n  s.strstart += s.lookahead;\n  s.block_start = s.strstart;\n  s.insert = s.lookahead;\n  s.lookahead = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  strm.next_in = next;\n  strm.input = input;\n  strm.avail_in = avail;\n  s.wrap = wrap;\n  return Z_OK$3;\n};\n\n\nvar deflateInit_1 = deflateInit;\nvar deflateInit2_1 = deflateInit2;\nvar deflateReset_1 = deflateReset;\nvar deflateResetKeep_1 = deflateResetKeep;\nvar deflateSetHeader_1 = deflateSetHeader;\nvar deflate_2$1 = deflate$2;\nvar deflateEnd_1 = deflateEnd;\nvar deflateSetDictionary_1 = deflateSetDictionary;\nvar deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateGetDictionary = deflateGetDictionary;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n\nvar deflate_1$2 = {\n\tdeflateInit: deflateInit_1,\n\tdeflateInit2: deflateInit2_1,\n\tdeflateReset: deflateReset_1,\n\tdeflateResetKeep: deflateResetKeep_1,\n\tdeflateSetHeader: deflateSetHeader_1,\n\tdeflate: deflate_2$1,\n\tdeflateEnd: deflateEnd_1,\n\tdeflateSetDictionary: deflateSetDictionary_1,\n\tdeflateInfo: deflateInfo\n};\n\nconst _has = (obj, key) => {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nvar assign = function (obj /*from1, from2, from3, ...*/) {\n  const sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    const source = sources.shift();\n    if (!source) { continue; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be non-object');\n    }\n\n    for (const p in source) {\n      if (_has(source, p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n\n  return obj;\n};\n\n\n// Join array of chunks to single array.\nvar flattenChunks = (chunks) => {\n  // calculate data length\n  let len = 0;\n\n  for (let i = 0, l = chunks.length; i < l; i++) {\n    len += chunks[i].length;\n  }\n\n  // join chunks\n  const result = new Uint8Array(len);\n\n  for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n    let chunk = chunks[i];\n    result.set(chunk, pos);\n    pos += chunk.length;\n  }\n\n  return result;\n};\n\nvar common = {\n\tassign: assign,\n\tflattenChunks: flattenChunks\n};\n\n// String encode/decode helpers\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nvar string2buf = (str) => {\n  if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {\n    return new TextEncoder().encode(str);\n  }\n\n  let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n  // count binary size\n  for (m_pos = 0; m_pos < str_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n  }\n\n  // allocate buffer\n  buf = new Uint8Array(buf_len);\n\n  // convert\n  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    if (c < 0x80) {\n      /* one byte */\n      buf[i++] = c;\n    } else if (c < 0x800) {\n      /* two bytes */\n      buf[i++] = 0xC0 | (c >>> 6);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else if (c < 0x10000) {\n      /* three bytes */\n      buf[i++] = 0xE0 | (c >>> 12);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else {\n      /* four bytes */\n      buf[i++] = 0xf0 | (c >>> 18);\n      buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    }\n  }\n\n  return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n  // On Chrome, the arguments in a function call that are allowed is `65534`.\n  // If the length of the buffer is smaller than that, we can use this optimization,\n  // otherwise we will take a slower path.\n  if (len < 65534) {\n    if (buf.subarray && STR_APPLY_UIA_OK) {\n      return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n    }\n  }\n\n  let result = '';\n  for (let i = 0; i < len; i++) {\n    result += String.fromCharCode(buf[i]);\n  }\n  return result;\n};\n\n\n// convert array to string\nvar buf2string = (buf, max) => {\n  const len = max || buf.length;\n\n  if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) {\n    return new TextDecoder().decode(buf.subarray(0, max));\n  }\n\n  let i, out;\n\n  // Reserve max possible length (2 words per char)\n  // NB: by unknown reasons, Array is significantly faster for\n  //     String.fromCharCode.apply than Uint16Array.\n  const utf16buf = new Array(len * 2);\n\n  for (out = 0, i = 0; i < len;) {\n    let c = buf[i++];\n    // quick process ascii\n    if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n    let c_len = _utf8len[c];\n    // skip 5 & 6 byte codes\n    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n    // apply mask on first byte\n    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n    // join the rest\n    while (c_len > 1 && i < len) {\n      c = (c << 6) | (buf[i++] & 0x3f);\n      c_len--;\n    }\n\n    // terminated by end of string?\n    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n    if (c < 0x10000) {\n      utf16buf[out++] = c;\n    } else {\n      c -= 0x10000;\n      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n      utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n    }\n  }\n\n  return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nvar utf8border = (buf, max) => {\n\n  max = max || buf.length;\n  if (max > buf.length) { max = buf.length; }\n\n  // go back from last position, until start of sequence found\n  let pos = max - 1;\n  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n  // Very small and broken sequence,\n  // return max, because we should return something anyway.\n  if (pos < 0) { return max; }\n\n  // If we came to start of buffer - that means buffer is too small,\n  // return max too.\n  if (pos === 0) { return max; }\n\n  return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\nvar strings = {\n\tstring2buf: string2buf,\n\tbuf2string: buf2string,\n\tutf8border: utf8border\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n  /* next input byte */\n  this.input = null; // JS specific, because we have no pointers\n  this.next_in = 0;\n  /* number of bytes available at input */\n  this.avail_in = 0;\n  /* total number of input bytes read so far */\n  this.total_in = 0;\n  /* next output byte should be put there */\n  this.output = null; // JS specific, because we have no pointers\n  this.next_out = 0;\n  /* remaining free space at output */\n  this.avail_out = 0;\n  /* total number of bytes output so far */\n  this.total_out = 0;\n  /* last error message, NULL if no error */\n  this.msg = ''/*Z_NULL*/;\n  /* not visible by applications */\n  this.state = null;\n  /* best guess about the data type: binary or text */\n  this.data_type = 2/*Z_UNKNOWN*/;\n  /* adler32 value of the uncompressed data */\n  this.adler = 0;\n}\n\nvar zstream = ZStream;\n\nconst toString$1 = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n  Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH: Z_FINISH$2,\n  Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2,\n  Z_DEFAULT_COMPRESSION,\n  Z_DEFAULT_STRATEGY,\n  Z_DEFLATED: Z_DEFLATED$1\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n *   - `text` (Boolean) - true if compressed data believed to be text\n *   - `time` (Number) - modification time, unix timestamp\n *   - `os` (Number) - operation system code\n *   - `extra` (Array) - array of bytes with extra data (max 65536)\n *   - `name` (String) - file name (binary string)\n *   - `comment` (String) - comment (binary string)\n *   - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n *   , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true);  // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate$1(options) {\n  this.options = common.assign({\n    level: Z_DEFAULT_COMPRESSION,\n    method: Z_DEFLATED$1,\n    chunkSize: 16384,\n    windowBits: 15,\n    memLevel: 8,\n    strategy: Z_DEFAULT_STRATEGY\n  }, options || {});\n\n  let opt = this.options;\n\n  if (opt.raw && (opt.windowBits > 0)) {\n    opt.windowBits = -opt.windowBits;\n  }\n\n  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n    opt.windowBits += 16;\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm = new zstream();\n  this.strm.avail_out = 0;\n\n  let status = deflate_1$2.deflateInit2(\n    this.strm,\n    opt.level,\n    opt.method,\n    opt.windowBits,\n    opt.memLevel,\n    opt.strategy\n  );\n\n  if (status !== Z_OK$2) {\n    throw new Error(messages[status]);\n  }\n\n  if (opt.header) {\n    deflate_1$2.deflateSetHeader(this.strm, opt.header);\n  }\n\n  if (opt.dictionary) {\n    let dict;\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      // If we need to compress text, change encoding to utf8.\n      dict = strings.string2buf(opt.dictionary);\n    } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n      dict = new Uint8Array(opt.dictionary);\n    } else {\n      dict = opt.dictionary;\n    }\n\n    status = deflate_1$2.deflateSetDictionary(this.strm, dict);\n\n    if (status !== Z_OK$2) {\n      throw new Error(messages[status]);\n    }\n\n    this._dict_set = true;\n  }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n *   converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nDeflate$1.prototype.push = function (data, flush_mode) {\n  const strm = this.strm;\n  const chunkSize = this.options.chunkSize;\n  let status, _flush_mode;\n\n  if (this.ended) { return false; }\n\n  if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n  else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1;\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // If we need to compress text, change encoding to utf8.\n    strm.input = strings.string2buf(data);\n  } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  for (;;) {\n    if (strm.avail_out === 0) {\n      strm.output = new Uint8Array(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    // Make sure avail_out > 6 to avoid repeating markers\n    if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n      this.onData(strm.output.subarray(0, strm.next_out));\n      strm.avail_out = 0;\n      continue;\n    }\n\n    status = deflate_1$2.deflate(strm, _flush_mode);\n\n    // Ended => flush and finish\n    if (status === Z_STREAM_END$2) {\n      if (strm.next_out > 0) {\n        this.onData(strm.output.subarray(0, strm.next_out));\n      }\n      status = deflate_1$2.deflateEnd(this.strm);\n      this.onEnd(status);\n      this.ended = true;\n      return status === Z_OK$2;\n    }\n\n    // Flush if out buffer full\n    if (strm.avail_out === 0) {\n      this.onData(strm.output);\n      continue;\n    }\n\n    // Flush if requested and has data\n    if (_flush_mode > 0 && strm.next_out > 0) {\n      this.onData(strm.output.subarray(0, strm.next_out));\n      strm.avail_out = 0;\n      continue;\n    }\n\n    if (strm.avail_in === 0) break;\n  }\n\n  return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate$1.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate$1.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK$2) {\n    this.result = common.flattenChunks(this.chunks);\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n  const deflator = new Deflate$1(options);\n\n  deflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (deflator.err) { throw deflator.msg || messages[deflator.err]; }\n\n  return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw$1(input, options) {\n  options = options || {};\n  options.raw = true;\n  return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip$1(input, options) {\n  options = options || {};\n  options.gzip = true;\n  return deflate$1(input, options);\n}\n\n\nvar Deflate_1$1 = Deflate$1;\nvar deflate_2 = deflate$1;\nvar deflateRaw_1$1 = deflateRaw$1;\nvar gzip_1$1 = gzip$1;\nvar constants$1 = constants$2;\n\nvar deflate_1$1 = {\n\tDeflate: Deflate_1$1,\n\tdeflate: deflate_2,\n\tdeflateRaw: deflateRaw_1$1,\n\tgzip: gzip_1$1,\n\tconstants: constants$1\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD$1 = 16209;       /* got a data error -- remain here until reset */\nconst TYPE$1 = 16191;      /* i: waiting for type bits, including last-flag bit */\n\n/*\n   Decode literal, length, and distance codes and write out the resulting\n   literal and match bytes until either not enough input or output is\n   available, an end-of-block is encountered, or a data error is encountered.\n   When large enough input and output buffers are supplied to inflate(), for\n   example, a 16K input buffer and a 64K output buffer, more than 95% of the\n   inflate execution time is spent in this routine.\n\n   Entry assumptions:\n\n        state.mode === LEN\n        strm.avail_in >= 6\n        strm.avail_out >= 258\n        start >= strm.avail_out\n        state.bits < 8\n\n   On return, state.mode is one of:\n\n        LEN -- ran out of enough output space or enough available input\n        TYPE -- reached end of block code, inflate() to interpret next block\n        BAD -- error in block data\n\n   Notes:\n\n    - The maximum input bits used by a length/distance pair is 15 bits for the\n      length code, 5 bits for the length extra, 15 bits for the distance code,\n      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.\n      Therefore if strm.avail_in >= 6, then there is enough input to avoid\n      checking for available input while decoding.\n\n    - The maximum bytes that a single length/distance pair can output is 258\n      bytes, which is the maximum length that can be coded.  inflate_fast()\n      requires strm.avail_out >= 258 for each loop to avoid checking for\n      output space.\n */\nvar inffast = function inflate_fast(strm, start) {\n  let _in;                    /* local strm.input */\n  let last;                   /* have enough input while in < last */\n  let _out;                   /* local strm.output */\n  let beg;                    /* inflate()'s initial strm.output */\n  let end;                    /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n  let dmax;                   /* maximum distance from zlib header */\n//#endif\n  let wsize;                  /* window size or zero if not using window */\n  let whave;                  /* valid bytes in the window */\n  let wnext;                  /* window write index */\n  // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n  let s_window;               /* allocated sliding window, if wsize != 0 */\n  let hold;                   /* local strm.hold */\n  let bits;                   /* local strm.bits */\n  let lcode;                  /* local strm.lencode */\n  let dcode;                  /* local strm.distcode */\n  let lmask;                  /* mask for first level of length codes */\n  let dmask;                  /* mask for first level of distance codes */\n  let here;                   /* retrieved table entry */\n  let op;                     /* code bits, operation, extra bits, or */\n                              /*  window position, window bytes to copy */\n  let len;                    /* match length, unused bytes */\n  let dist;                   /* match distance */\n  let from;                   /* where to copy match from */\n  let from_source;\n\n\n  let input, output; // JS specific, because we have no pointers\n\n  /* copy state to local variables */\n  const state = strm.state;\n  //here = state.here;\n  _in = strm.next_in;\n  input = strm.input;\n  last = _in + (strm.avail_in - 5);\n  _out = strm.next_out;\n  output = strm.output;\n  beg = _out - (start - strm.avail_out);\n  end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n  dmax = state.dmax;\n//#endif\n  wsize = state.wsize;\n  whave = state.whave;\n  wnext = state.wnext;\n  s_window = state.window;\n  hold = state.hold;\n  bits = state.bits;\n  lcode = state.lencode;\n  dcode = state.distcode;\n  lmask = (1 << state.lenbits) - 1;\n  dmask = (1 << state.distbits) - 1;\n\n\n  /* decode literals and length/distances until end-of-block or not enough\n     input data or output space */\n\n  top:\n  do {\n    if (bits < 15) {\n      hold += input[_in++] << bits;\n      bits += 8;\n      hold += input[_in++] << bits;\n      bits += 8;\n    }\n\n    here = lcode[hold & lmask];\n\n    dolen:\n    for (;;) { // Goto emulation\n      op = here >>> 24/*here.bits*/;\n      hold >>>= op;\n      bits -= op;\n      op = (here >>> 16) & 0xff/*here.op*/;\n      if (op === 0) {                          /* literal */\n        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n        //        \"inflate:         literal '%c'\\n\" :\n        //        \"inflate:         literal 0x%02x\\n\", here.val));\n        output[_out++] = here & 0xffff/*here.val*/;\n      }\n      else if (op & 16) {                     /* length base */\n        len = here & 0xffff/*here.val*/;\n        op &= 15;                           /* number of extra bits */\n        if (op) {\n          if (bits < op) {\n            hold += input[_in++] << bits;\n            bits += 8;\n          }\n          len += hold & ((1 << op) - 1);\n          hold >>>= op;\n          bits -= op;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", len));\n        if (bits < 15) {\n          hold += input[_in++] << bits;\n          bits += 8;\n          hold += input[_in++] << bits;\n          bits += 8;\n        }\n        here = dcode[hold & dmask];\n\n        dodist:\n        for (;;) { // goto emulation\n          op = here >>> 24/*here.bits*/;\n          hold >>>= op;\n          bits -= op;\n          op = (here >>> 16) & 0xff/*here.op*/;\n\n          if (op & 16) {                      /* distance base */\n            dist = here & 0xffff/*here.val*/;\n            op &= 15;                       /* number of extra bits */\n            if (bits < op) {\n              hold += input[_in++] << bits;\n              bits += 8;\n              if (bits < op) {\n                hold += input[_in++] << bits;\n                bits += 8;\n              }\n            }\n            dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n            if (dist > dmax) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD$1;\n              break top;\n            }\n//#endif\n            hold >>>= op;\n            bits -= op;\n            //Tracevv((stderr, \"inflate:         distance %u\\n\", dist));\n            op = _out - beg;                /* max distance in output */\n            if (dist > op) {                /* see if copy from window */\n              op = dist - op;               /* distance back in window */\n              if (op > whave) {\n                if (state.sane) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD$1;\n                  break top;\n                }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//                if (len <= op - whave) {\n//                  do {\n//                    output[_out++] = 0;\n//                  } while (--len);\n//                  continue top;\n//                }\n//                len -= op - whave;\n//                do {\n//                  output[_out++] = 0;\n//                } while (--op > whave);\n//                if (op === 0) {\n//                  from = _out - dist;\n//                  do {\n//                    output[_out++] = output[from++];\n//                  } while (--len);\n//                  continue top;\n//                }\n//#endif\n              }\n              from = 0; // window index\n              from_source = s_window;\n              if (wnext === 0) {           /* very common case */\n                from += wsize - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              else if (wnext < op) {      /* wrap around window */\n                from += wsize + wnext - op;\n                op -= wnext;\n                if (op < len) {         /* some from end of window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = 0;\n                  if (wnext < len) {  /* some from start of window */\n                    op = wnext;\n                    len -= op;\n                    do {\n                      output[_out++] = s_window[from++];\n                    } while (--op);\n                    from = _out - dist;      /* rest from output */\n                    from_source = output;\n                  }\n                }\n              }\n              else {                      /* contiguous in window */\n                from += wnext - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              while (len > 2) {\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                len -= 3;\n              }\n              if (len) {\n                output[_out++] = from_source[from++];\n                if (len > 1) {\n                  output[_out++] = from_source[from++];\n                }\n              }\n            }\n            else {\n              from = _out - dist;          /* copy direct from output */\n              do {                        /* minimum length is three */\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                len -= 3;\n              } while (len > 2);\n              if (len) {\n                output[_out++] = output[from++];\n                if (len > 1) {\n                  output[_out++] = output[from++];\n                }\n              }\n            }\n          }\n          else if ((op & 64) === 0) {          /* 2nd level distance code */\n            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n            continue dodist;\n          }\n          else {\n            strm.msg = 'invalid distance code';\n            state.mode = BAD$1;\n            break top;\n          }\n\n          break; // need to emulate goto via \"continue\"\n        }\n      }\n      else if ((op & 64) === 0) {              /* 2nd level length code */\n        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n        continue dolen;\n      }\n      else if (op & 32) {                     /* end-of-block */\n        //Tracevv((stderr, \"inflate:         end of block\\n\"));\n        state.mode = TYPE$1;\n        break top;\n      }\n      else {\n        strm.msg = 'invalid literal/length code';\n        state.mode = BAD$1;\n        break top;\n      }\n\n      break; // need to emulate goto via \"continue\"\n    }\n  } while (_in < last && _out < end);\n\n  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n  len = bits >> 3;\n  _in -= len;\n  bits -= len << 3;\n  hold &= (1 << bits) - 1;\n\n  /* update state and return */\n  strm.next_in = _in;\n  strm.next_out = _out;\n  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n  state.hold = hold;\n  state.bits = bits;\n  return;\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS$1 = 852;\nconst ENOUGH_DISTS$1 = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES$1 = 0;\nconst LENS$1 = 1;\nconst DISTS$1 = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n  8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n  28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n  const bits = opts.bits;\n      //here = opts.here; /* table entry for duplication */\n\n  let len = 0;               /* a code's length in bits */\n  let sym = 0;               /* index of code symbols */\n  let min = 0, max = 0;          /* minimum and maximum code lengths */\n  let root = 0;              /* number of index bits for root table */\n  let curr = 0;              /* number of index bits for current table */\n  let drop = 0;              /* code bits to drop for sub-table */\n  let left = 0;                   /* number of prefix codes available */\n  let used = 0;              /* code entries in table used */\n  let huff = 0;              /* Huffman code */\n  let incr;              /* for incrementing code, index */\n  let fill;              /* index for replicating entries */\n  let low;               /* low bits for current root entry */\n  let mask;              /* mask for low root bits */\n  let next;             /* next available space in table */\n  let base = null;     /* base value table to use */\n//  let shoextra;    /* extra bits table to use */\n  let match;                  /* use base and extra for symbol >= match */\n  const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */\n  const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */\n  let extra = null;\n\n  let here_bits, here_op, here_val;\n\n  /*\n   Process a set of code lengths to create a canonical Huffman code.  The\n   code lengths are lens[0..codes-1].  Each length corresponds to the\n   symbols 0..codes-1.  The Huffman code is generated by first sorting the\n   symbols by length from short to long, and retaining the symbol order\n   for codes with equal lengths.  Then the code starts with all zero bits\n   for the first code of the shortest length, and the codes are integer\n   increments for the same length, and zeros are appended as the length\n   increases.  For the deflate format, these bits are stored backwards\n   from their more natural integer increment ordering, and so when the\n   decoding tables are built in the large loop below, the integer codes\n   are incremented backwards.\n\n   This routine assumes, but does not check, that all of the entries in\n   lens[] are in the range 0..MAXBITS.  The caller must assure this.\n   1..MAXBITS is interpreted as that code length.  zero means that that\n   symbol does not occur in this code.\n\n   The codes are sorted by computing a count of codes for each length,\n   creating from that a table of starting indices for each length in the\n   sorted table, and then entering the symbols in order in the sorted\n   table.  The sorted table is work[], with that space being provided by\n   the caller.\n\n   The length counts are used for other purposes as well, i.e. finding\n   the minimum and maximum length codes, determining if there are any\n   codes at all, checking for a valid set of lengths, and looking ahead\n   at length counts to determine sub-table sizes when building the\n   decoding tables.\n   */\n\n  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n  for (len = 0; len <= MAXBITS; len++) {\n    count[len] = 0;\n  }\n  for (sym = 0; sym < codes; sym++) {\n    count[lens[lens_index + sym]]++;\n  }\n\n  /* bound code lengths, force root to be within code lengths */\n  root = bits;\n  for (max = MAXBITS; max >= 1; max--) {\n    if (count[max] !== 0) { break; }\n  }\n  if (root > max) {\n    root = max;\n  }\n  if (max === 0) {                     /* no symbols to code at all */\n    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */\n    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;\n    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n    //table.op[opts.table_index] = 64;\n    //table.bits[opts.table_index] = 1;\n    //table.val[opts.table_index++] = 0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n    opts.bits = 1;\n    return 0;     /* no symbols, but wait for decoding to report error */\n  }\n  for (min = 1; min < max; min++) {\n    if (count[min] !== 0) { break; }\n  }\n  if (root < min) {\n    root = min;\n  }\n\n  /* check for an over-subscribed or incomplete set of lengths */\n  left = 1;\n  for (len = 1; len <= MAXBITS; len++) {\n    left <<= 1;\n    left -= count[len];\n    if (left < 0) {\n      return -1;\n    }        /* over-subscribed */\n  }\n  if (left > 0 && (type === CODES$1 || max !== 1)) {\n    return -1;                      /* incomplete set */\n  }\n\n  /* generate offsets into symbol table for each length for sorting */\n  offs[1] = 0;\n  for (len = 1; len < MAXBITS; len++) {\n    offs[len + 1] = offs[len] + count[len];\n  }\n\n  /* sort symbols by length, by symbol order within each length */\n  for (sym = 0; sym < codes; sym++) {\n    if (lens[lens_index + sym] !== 0) {\n      work[offs[lens[lens_index + sym]]++] = sym;\n    }\n  }\n\n  /*\n   Create and fill in decoding tables.  In this loop, the table being\n   filled is at next and has curr index bits.  The code being used is huff\n   with length len.  That code is converted to an index by dropping drop\n   bits off of the bottom.  For codes where len is less than drop + curr,\n   those top drop + curr - len bits are incremented through all values to\n   fill the table with replicated entries.\n\n   root is the number of index bits for the root table.  When len exceeds\n   root, sub-tables are created pointed to by the root entry with an index\n   of the low root bits of huff.  This is saved in low to check for when a\n   new sub-table should be started.  drop is zero when the root table is\n   being filled, and drop is root when sub-tables are being filled.\n\n   When a new sub-table is needed, it is necessary to look ahead in the\n   code lengths to determine what size sub-table is needed.  The length\n   counts are used for this, and so count[] is decremented as codes are\n   entered in the tables.\n\n   used keeps track of how many table entries have been allocated from the\n   provided *table space.  It is checked for LENS and DIST tables against\n   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n   the initial root table size constants.  See the comments in inftrees.h\n   for more information.\n\n   sym increments through all symbols, and the loop terminates when\n   all codes of length max, i.e. all codes, have been processed.  This\n   routine permits incomplete codes, so another loop after this one fills\n   in the rest of the decoding tables with invalid code markers.\n   */\n\n  /* set up for code type */\n  // poor man optimization - use if-else instead of switch,\n  // to avoid deopts in old v8\n  if (type === CODES$1) {\n    base = extra = work;    /* dummy value--not used */\n    match = 20;\n\n  } else if (type === LENS$1) {\n    base = lbase;\n    extra = lext;\n    match = 257;\n\n  } else {                    /* DISTS */\n    base = dbase;\n    extra = dext;\n    match = 0;\n  }\n\n  /* initialize opts for loop */\n  huff = 0;                   /* starting code */\n  sym = 0;                    /* starting code symbol */\n  len = min;                  /* starting code length */\n  next = table_index;              /* current table to fill in */\n  curr = root;                /* current table index bits */\n  drop = 0;                   /* current bits to drop from code for index */\n  low = -1;                   /* trigger new sub-table when len > root */\n  used = 1 << root;          /* use root table entries */\n  mask = used - 1;            /* mask for comparing low */\n\n  /* check available table space */\n  if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n    (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n    return 1;\n  }\n\n  /* process all codes and make table entries */\n  for (;;) {\n    /* create table entry */\n    here_bits = len - drop;\n    if (work[sym] + 1 < match) {\n      here_op = 0;\n      here_val = work[sym];\n    }\n    else if (work[sym] >= match) {\n      here_op = extra[work[sym] - match];\n      here_val = base[work[sym] - match];\n    }\n    else {\n      here_op = 32 + 64;         /* end of block */\n      here_val = 0;\n    }\n\n    /* replicate for those indices with low len bits equal to huff */\n    incr = 1 << (len - drop);\n    fill = 1 << curr;\n    min = fill;                 /* save offset to next table */\n    do {\n      fill -= incr;\n      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n    } while (fill !== 0);\n\n    /* backwards increment the len-bit code huff */\n    incr = 1 << (len - 1);\n    while (huff & incr) {\n      incr >>= 1;\n    }\n    if (incr !== 0) {\n      huff &= incr - 1;\n      huff += incr;\n    } else {\n      huff = 0;\n    }\n\n    /* go to next symbol, update count, len */\n    sym++;\n    if (--count[len] === 0) {\n      if (len === max) { break; }\n      len = lens[lens_index + work[sym]];\n    }\n\n    /* create new sub-table if needed */\n    if (len > root && (huff & mask) !== low) {\n      /* if first time, transition to sub-tables */\n      if (drop === 0) {\n        drop = root;\n      }\n\n      /* increment past last table */\n      next += min;            /* here min is 1 << curr */\n\n      /* determine length of next table */\n      curr = len - drop;\n      left = 1 << curr;\n      while (curr + drop < max) {\n        left -= count[curr + drop];\n        if (left <= 0) { break; }\n        curr++;\n        left <<= 1;\n      }\n\n      /* check for enough space */\n      used += 1 << curr;\n      if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n        (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n        return 1;\n      }\n\n      /* point entry in root table to sub-table */\n      low = huff & mask;\n      /*table.op[low] = curr;\n      table.bits[low] = root;\n      table.val[low] = next - opts.table_index;*/\n      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n    }\n  }\n\n  /* fill in remaining table entry if code is incomplete (guaranteed to have\n   at most one remaining entry, since if the code is incomplete, the\n   maximum code length that was allowed to get this far is one bit) */\n  if (huff !== 0) {\n    //table.op[next + huff] = 64;            /* invalid code marker */\n    //table.bits[next + huff] = len - drop;\n    //table.val[next + huff] = 0;\n    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n  }\n\n  /* set return parameters */\n  //opts.table_index += used;\n  opts.bits = root;\n  return 0;\n};\n\n\nvar inftrees = inflate_table;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n\n\n\n\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n  Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES,\n  Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR,\n  Z_DEFLATED\n} = constants$2;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst    HEAD = 16180;       /* i: waiting for magic header */\nconst    FLAGS = 16181;      /* i: waiting for method and flags (gzip) */\nconst    TIME = 16182;       /* i: waiting for modification time (gzip) */\nconst    OS = 16183;         /* i: waiting for extra flags and operating system (gzip) */\nconst    EXLEN = 16184;      /* i: waiting for extra length (gzip) */\nconst    EXTRA = 16185;      /* i: waiting for extra bytes (gzip) */\nconst    NAME = 16186;       /* i: waiting for end of file name (gzip) */\nconst    COMMENT = 16187;    /* i: waiting for end of comment (gzip) */\nconst    HCRC = 16188;       /* i: waiting for header crc (gzip) */\nconst    DICTID = 16189;    /* i: waiting for dictionary check value */\nconst    DICT = 16190;      /* waiting for inflateSetDictionary() call */\nconst        TYPE = 16191;      /* i: waiting for type bits, including last-flag bit */\nconst        TYPEDO = 16192;    /* i: same, but skip check to exit inflate on new block */\nconst        STORED = 16193;    /* i: waiting for stored size (length and complement) */\nconst        COPY_ = 16194;     /* i/o: same as COPY below, but only first time in */\nconst        COPY = 16195;      /* i/o: waiting for input or output to copy stored block */\nconst        TABLE = 16196;     /* i: waiting for dynamic block table lengths */\nconst        LENLENS = 16197;   /* i: waiting for code length code lengths */\nconst        CODELENS = 16198;  /* i: waiting for length/lit and distance code lengths */\nconst            LEN_ = 16199;      /* i: same as LEN below, but only first time in */\nconst            LEN = 16200;       /* i: waiting for length/lit/eob code */\nconst            LENEXT = 16201;    /* i: waiting for length extra bits */\nconst            DIST = 16202;      /* i: waiting for distance code */\nconst            DISTEXT = 16203;   /* i: waiting for distance extra bits */\nconst            MATCH = 16204;     /* o: waiting for output space to copy string */\nconst            LIT = 16205;       /* o: waiting for output space to write literal */\nconst    CHECK = 16206;     /* i: waiting for 32-bit check value */\nconst    LENGTH = 16207;    /* i: waiting for 32-bit length (gzip) */\nconst    DONE = 16208;      /* finished check, done -- remain here until reset */\nconst    BAD = 16209;       /* got a data error -- remain here until reset */\nconst    MEM = 16210;       /* got an inflate() memory error -- remain here until reset */\nconst    SYNC = 16211;      /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS;\n\n\nconst zswap32 = (q) => {\n\n  return  (((q >>> 24) & 0xff) +\n          ((q >>> 8) & 0xff00) +\n          ((q & 0xff00) << 8) +\n          ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n  this.strm = null;           /* pointer back to this zlib stream */\n  this.mode = 0;              /* current inflate mode */\n  this.last = false;          /* true if processing last block */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip,\n                                 bit 2 true to validate check value */\n  this.havedict = false;      /* true if dictionary provided */\n  this.flags = 0;             /* gzip header method and flags (0 if zlib), or\n                                 -1 if raw or no header yet */\n  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */\n  this.check = 0;             /* protected copy of check value */\n  this.total = 0;             /* protected copy of output count */\n  // TODO: may be {}\n  this.head = null;           /* where to save gzip header information */\n\n  /* sliding window */\n  this.wbits = 0;             /* log base 2 of requested window size */\n  this.wsize = 0;             /* window size or zero if not using window */\n  this.whave = 0;             /* valid bytes in the window */\n  this.wnext = 0;             /* window write index */\n  this.window = null;         /* allocated sliding window, if needed */\n\n  /* bit accumulator */\n  this.hold = 0;              /* input bit accumulator */\n  this.bits = 0;              /* number of bits in \"in\" */\n\n  /* for string and stored block copying */\n  this.length = 0;            /* literal or length of data to copy */\n  this.offset = 0;            /* distance back to copy string from */\n\n  /* for table and code decoding */\n  this.extra = 0;             /* extra bits needed */\n\n  /* fixed and dynamic code tables */\n  this.lencode = null;          /* starting table for length/literal codes */\n  this.distcode = null;         /* starting table for distance codes */\n  this.lenbits = 0;           /* index bits for lencode */\n  this.distbits = 0;          /* index bits for distcode */\n\n  /* dynamic table building */\n  this.ncode = 0;             /* number of code length code lengths */\n  this.nlen = 0;              /* number of length code lengths */\n  this.ndist = 0;             /* number of distance code lengths */\n  this.have = 0;              /* number of code lengths in lens[] */\n  this.next = null;              /* next available space in codes[] */\n\n  this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n  this.work = new Uint16Array(288); /* work area for code table building */\n\n  /*\n   because we don't have pointers in js, we use lencode and distcode directly\n   as buffers so we don't need codes\n  */\n  //this.codes = new Int32Array(ENOUGH);       /* space for code tables */\n  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */\n  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */\n  this.sane = 0;                   /* if false, allow invalid distance too far */\n  this.back = 0;                   /* bits back of last unprocessed length/lit */\n  this.was = 0;                    /* initial length of match */\n}\n\n\nconst inflateStateCheck = (strm) => {\n\n  if (!strm) {\n    return 1;\n  }\n  const state = strm.state;\n  if (!state || state.strm !== strm ||\n    state.mode < HEAD || state.mode > SYNC) {\n    return 1;\n  }\n  return 0;\n};\n\n\nconst inflateResetKeep = (strm) => {\n\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  const state = strm.state;\n  strm.total_in = strm.total_out = state.total = 0;\n  strm.msg = ''; /*Z_NULL*/\n  if (state.wrap) {       /* to support ill-conceived Java test suite */\n    strm.adler = state.wrap & 1;\n  }\n  state.mode = HEAD;\n  state.last = 0;\n  state.havedict = 0;\n  state.flags = -1;\n  state.dmax = 32768;\n  state.head = null/*Z_NULL*/;\n  state.hold = 0;\n  state.bits = 0;\n  //state.lencode = state.distcode = state.next = state.codes;\n  state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n  state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n  state.sane = 1;\n  state.back = -1;\n  //Tracev((stderr, \"inflate: reset\\n\"));\n  return Z_OK$1;\n};\n\n\nconst inflateReset = (strm) => {\n\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  const state = strm.state;\n  state.wsize = 0;\n  state.whave = 0;\n  state.wnext = 0;\n  return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n  let wrap;\n\n  /* get the state */\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  const state = strm.state;\n\n  /* extract wrap request from windowBits parameter */\n  if (windowBits < 0) {\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n  else {\n    wrap = (windowBits >> 4) + 5;\n    if (windowBits < 48) {\n      windowBits &= 15;\n    }\n  }\n\n  /* set number of window bits, free window if different */\n  if (windowBits && (windowBits < 8 || windowBits > 15)) {\n    return Z_STREAM_ERROR$1;\n  }\n  if (state.window !== null && state.wbits !== windowBits) {\n    state.window = null;\n  }\n\n  /* update state and reset the rest of it */\n  state.wrap = wrap;\n  state.wbits = windowBits;\n  return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n  if (!strm) { return Z_STREAM_ERROR$1; }\n  //strm.msg = Z_NULL;                 /* in case we return an error */\n\n  const state = new InflateState();\n\n  //if (state === Z_NULL) return Z_MEM_ERROR;\n  //Tracev((stderr, \"inflate: allocated\\n\"));\n  strm.state = state;\n  state.strm = strm;\n  state.window = null/*Z_NULL*/;\n  state.mode = HEAD;     /* to pass state test in inflateReset2() */\n  const ret = inflateReset2(strm, windowBits);\n  if (ret !== Z_OK$1) {\n    strm.state = null/*Z_NULL*/;\n  }\n  return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n  return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding.  Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter.  This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time.  However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n  /* build fixed huffman tables if first call (may not be thread safe) */\n  if (virgin) {\n    lenfix = new Int32Array(512);\n    distfix = new Int32Array(32);\n\n    /* literal/length table */\n    let sym = 0;\n    while (sym < 144) { state.lens[sym++] = 8; }\n    while (sym < 256) { state.lens[sym++] = 9; }\n    while (sym < 280) { state.lens[sym++] = 7; }\n    while (sym < 288) { state.lens[sym++] = 8; }\n\n    inftrees(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });\n\n    /* distance table */\n    sym = 0;\n    while (sym < 32) { state.lens[sym++] = 5; }\n\n    inftrees(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });\n\n    /* do this just once */\n    virgin = false;\n  }\n\n  state.lencode = lenfix;\n  state.lenbits = 9;\n  state.distcode = distfix;\n  state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning.  If window does not exist yet, create it.  This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n  let dist;\n  const state = strm.state;\n\n  /* if it hasn't been done already, allocate space for the window */\n  if (state.window === null) {\n    state.wsize = 1 << state.wbits;\n    state.wnext = 0;\n    state.whave = 0;\n\n    state.window = new Uint8Array(state.wsize);\n  }\n\n  /* copy state->wsize or less output bytes into the circular window */\n  if (copy >= state.wsize) {\n    state.window.set(src.subarray(end - state.wsize, end), 0);\n    state.wnext = 0;\n    state.whave = state.wsize;\n  }\n  else {\n    dist = state.wsize - state.wnext;\n    if (dist > copy) {\n      dist = copy;\n    }\n    //zmemcpy(state->window + state->wnext, end - copy, dist);\n    state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n    copy -= dist;\n    if (copy) {\n      //zmemcpy(state->window, end - copy, copy);\n      state.window.set(src.subarray(end - copy, end), 0);\n      state.wnext = copy;\n      state.whave = state.wsize;\n    }\n    else {\n      state.wnext += dist;\n      if (state.wnext === state.wsize) { state.wnext = 0; }\n      if (state.whave < state.wsize) { state.whave += dist; }\n    }\n  }\n  return 0;\n};\n\n\nconst inflate$2 = (strm, flush) => {\n\n  let state;\n  let input, output;          // input/output buffers\n  let next;                   /* next input INDEX */\n  let put;                    /* next output INDEX */\n  let have, left;             /* available input and output */\n  let hold;                   /* bit buffer */\n  let bits;                   /* bits in bit buffer */\n  let _in, _out;              /* save starting available input and output */\n  let copy;                   /* number of stored or match bytes to copy */\n  let from;                   /* where to copy match bytes from */\n  let from_source;\n  let here = 0;               /* current decoding table entry */\n  let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n  //let last;                   /* parent table entry */\n  let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n  let len;                    /* length to copy for repeats, bits to drop */\n  let ret;                    /* return code */\n  const hbuf = new Uint8Array(4);    /* buffer for gzip header crc calculation */\n  let opts;\n\n  let n; // temporary variable for NEED_BITS\n\n  const order = /* permutation of code lengths */\n    new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n  if (inflateStateCheck(strm) || !strm.output ||\n      (!strm.input && strm.avail_in !== 0)) {\n    return Z_STREAM_ERROR$1;\n  }\n\n  state = strm.state;\n  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */\n\n\n  //--- LOAD() ---\n  put = strm.next_out;\n  output = strm.output;\n  left = strm.avail_out;\n  next = strm.next_in;\n  input = strm.input;\n  have = strm.avail_in;\n  hold = state.hold;\n  bits = state.bits;\n  //---\n\n  _in = have;\n  _out = left;\n  ret = Z_OK$1;\n\n  inf_leave: // goto emulation\n  for (;;) {\n    switch (state.mode) {\n      case HEAD:\n        if (state.wrap === 0) {\n          state.mode = TYPEDO;\n          break;\n        }\n        //=== NEEDBITS(16);\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */\n          if (state.wbits === 0) {\n            state.wbits = 15;\n          }\n          state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32_1(state.check, hbuf, 2, 0);\n          //===//\n\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          state.mode = FLAGS;\n          break;\n        }\n        if (state.head) {\n          state.head.done = false;\n        }\n        if (!(state.wrap & 1) ||   /* check if zlib header allowed */\n          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n          strm.msg = 'incorrect header check';\n          state.mode = BAD;\n          break;\n        }\n        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD;\n          break;\n        }\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n        len = (hold & 0x0f)/*BITS(4)*/ + 8;\n        if (state.wbits === 0) {\n          state.wbits = len;\n        }\n        if (len > 15 || len > state.wbits) {\n          strm.msg = 'invalid window size';\n          state.mode = BAD;\n          break;\n        }\n\n        // !!! pako patch. Force use `options.windowBits` if passed.\n        // Required to always use max window size by default.\n        state.dmax = 1 << state.wbits;\n        //state.dmax = 1 << len;\n\n        state.flags = 0;               /* indicate zlib header */\n        //Tracev((stderr, \"inflate:   zlib header ok\\n\"));\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = hold & 0x200 ? DICTID : TYPE;\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        break;\n      case FLAGS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.flags = hold;\n        if ((state.flags & 0xff) !== Z_DEFLATED) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD;\n          break;\n        }\n        if (state.flags & 0xe000) {\n          strm.msg = 'unknown header flags set';\n          state.mode = BAD;\n          break;\n        }\n        if (state.head) {\n          state.head.text = ((hold >> 8) & 1);\n        }\n        if ((state.flags & 0x0200) && (state.wrap & 4)) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32_1(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = TIME;\n        /* falls through */\n      case TIME:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.time = hold;\n        }\n        if ((state.flags & 0x0200) && (state.wrap & 4)) {\n          //=== CRC4(state.check, hold)\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          hbuf[2] = (hold >>> 16) & 0xff;\n          hbuf[3] = (hold >>> 24) & 0xff;\n          state.check = crc32_1(state.check, hbuf, 4, 0);\n          //===\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = OS;\n        /* falls through */\n      case OS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.xflags = (hold & 0xff);\n          state.head.os = (hold >> 8);\n        }\n        if ((state.flags & 0x0200) && (state.wrap & 4)) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32_1(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = EXLEN;\n        /* falls through */\n      case EXLEN:\n        if (state.flags & 0x0400) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length = hold;\n          if (state.head) {\n            state.head.extra_len = hold;\n          }\n          if ((state.flags & 0x0200) && (state.wrap & 4)) {\n            //=== CRC2(state.check, hold);\n            hbuf[0] = hold & 0xff;\n            hbuf[1] = (hold >>> 8) & 0xff;\n            state.check = crc32_1(state.check, hbuf, 2, 0);\n            //===//\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        else if (state.head) {\n          state.head.extra = null/*Z_NULL*/;\n        }\n        state.mode = EXTRA;\n        /* falls through */\n      case EXTRA:\n        if (state.flags & 0x0400) {\n          copy = state.length;\n          if (copy > have) { copy = have; }\n          if (copy) {\n            if (state.head) {\n              len = state.head.extra_len - state.length;\n              if (!state.head.extra) {\n                // Use untyped array for more convenient processing later\n                state.head.extra = new Uint8Array(state.head.extra_len);\n              }\n              state.head.extra.set(\n                input.subarray(\n                  next,\n                  // extra field is limited to 65536 bytes\n                  // - no need for additional size check\n                  next + copy\n                ),\n                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n                len\n              );\n              //zmemcpy(state.head.extra + len, next,\n              //        len + copy > state.head.extra_max ?\n              //        state.head.extra_max - len : copy);\n            }\n            if ((state.flags & 0x0200) && (state.wrap & 4)) {\n              state.check = crc32_1(state.check, input, copy, next);\n            }\n            have -= copy;\n            next += copy;\n            state.length -= copy;\n          }\n          if (state.length) { break inf_leave; }\n        }\n        state.length = 0;\n        state.mode = NAME;\n        /* falls through */\n      case NAME:\n        if (state.flags & 0x0800) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            // TODO: 2 or 1 bytes?\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.name_max*/)) {\n              state.head.name += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n\n          if ((state.flags & 0x0200) && (state.wrap & 4)) {\n            state.check = crc32_1(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.name = null;\n        }\n        state.length = 0;\n        state.mode = COMMENT;\n        /* falls through */\n      case COMMENT:\n        if (state.flags & 0x1000) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.comm_max*/)) {\n              state.head.comment += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n          if ((state.flags & 0x0200) && (state.wrap & 4)) {\n            state.check = crc32_1(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.comment = null;\n        }\n        state.mode = HCRC;\n        /* falls through */\n      case HCRC:\n        if (state.flags & 0x0200) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if ((state.wrap & 4) && hold !== (state.check & 0xffff)) {\n            strm.msg = 'header crc mismatch';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        if (state.head) {\n          state.head.hcrc = ((state.flags >> 9) & 1);\n          state.head.done = true;\n        }\n        strm.adler = state.check = 0;\n        state.mode = TYPE;\n        break;\n      case DICTID:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        strm.adler = state.check = zswap32(hold);\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = DICT;\n        /* falls through */\n      case DICT:\n        if (state.havedict === 0) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          return Z_NEED_DICT$1;\n        }\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = TYPE;\n        /* falls through */\n      case TYPE:\n        if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case TYPEDO:\n        if (state.last) {\n          //--- BYTEBITS() ---//\n          hold >>>= bits & 7;\n          bits -= bits & 7;\n          //---//\n          state.mode = CHECK;\n          break;\n        }\n        //=== NEEDBITS(3); */\n        while (bits < 3) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.last = (hold & 0x01)/*BITS(1)*/;\n        //--- DROPBITS(1) ---//\n        hold >>>= 1;\n        bits -= 1;\n        //---//\n\n        switch ((hold & 0x03)/*BITS(2)*/) {\n          case 0:                             /* stored block */\n            //Tracev((stderr, \"inflate:     stored block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = STORED;\n            break;\n          case 1:                             /* fixed block */\n            fixedtables(state);\n            //Tracev((stderr, \"inflate:     fixed codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = LEN_;             /* decode codes */\n            if (flush === Z_TREES) {\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n              break inf_leave;\n            }\n            break;\n          case 2:                             /* dynamic block */\n            //Tracev((stderr, \"inflate:     dynamic codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = TABLE;\n            break;\n          case 3:\n            strm.msg = 'invalid block type';\n            state.mode = BAD;\n        }\n        //--- DROPBITS(2) ---//\n        hold >>>= 2;\n        bits -= 2;\n        //---//\n        break;\n      case STORED:\n        //--- BYTEBITS() ---// /* go to byte boundary */\n        hold >>>= bits & 7;\n        bits -= bits & 7;\n        //---//\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n          strm.msg = 'invalid stored block lengths';\n          state.mode = BAD;\n          break;\n        }\n        state.length = hold & 0xffff;\n        //Tracev((stderr, \"inflate:       stored length %u\\n\",\n        //        state.length));\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = COPY_;\n        if (flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case COPY_:\n        state.mode = COPY;\n        /* falls through */\n      case COPY:\n        copy = state.length;\n        if (copy) {\n          if (copy > have) { copy = have; }\n          if (copy > left) { copy = left; }\n          if (copy === 0) { break inf_leave; }\n          //--- zmemcpy(put, next, copy); ---\n          output.set(input.subarray(next, next + copy), put);\n          //---//\n          have -= copy;\n          next += copy;\n          left -= copy;\n          put += copy;\n          state.length -= copy;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       stored end\\n\"));\n        state.mode = TYPE;\n        break;\n      case TABLE:\n        //=== NEEDBITS(14); */\n        while (bits < 14) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n        if (state.nlen > 286 || state.ndist > 30) {\n          strm.msg = 'too many length or distance symbols';\n          state.mode = BAD;\n          break;\n        }\n//#endif\n        //Tracev((stderr, \"inflate:       table sizes ok\\n\"));\n        state.have = 0;\n        state.mode = LENLENS;\n        /* falls through */\n      case LENLENS:\n        while (state.have < state.ncode) {\n          //=== NEEDBITS(3);\n          while (bits < 3) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n          //--- DROPBITS(3) ---//\n          hold >>>= 3;\n          bits -= 3;\n          //---//\n        }\n        while (state.have < 19) {\n          state.lens[order[state.have++]] = 0;\n        }\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        //state.next = state.codes;\n        //state.lencode = state.next;\n        // Switch to use dynamic table\n        state.lencode = state.lendyn;\n        state.lenbits = 7;\n\n        opts = { bits: state.lenbits };\n        ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n        state.lenbits = opts.bits;\n\n        if (ret) {\n          strm.msg = 'invalid code lengths set';\n          state.mode = BAD;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       code lengths ok\\n\"));\n        state.have = 0;\n        state.mode = CODELENS;\n        /* falls through */\n      case CODELENS:\n        while (state.have < state.nlen + state.ndist) {\n          for (;;) {\n            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          if (here_val < 16) {\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            state.lens[state.have++] = here_val;\n          }\n          else {\n            if (here_val === 16) {\n              //=== NEEDBITS(here.bits + 2);\n              n = here_bits + 2;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              if (state.have === 0) {\n                strm.msg = 'invalid bit length repeat';\n                state.mode = BAD;\n                break;\n              }\n              len = state.lens[state.have - 1];\n              copy = 3 + (hold & 0x03);//BITS(2);\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n            }\n            else if (here_val === 17) {\n              //=== NEEDBITS(here.bits + 3);\n              n = here_bits + 3;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 3 + (hold & 0x07);//BITS(3);\n              //--- DROPBITS(3) ---//\n              hold >>>= 3;\n              bits -= 3;\n              //---//\n            }\n            else {\n              //=== NEEDBITS(here.bits + 7);\n              n = here_bits + 7;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 11 + (hold & 0x7f);//BITS(7);\n              //--- DROPBITS(7) ---//\n              hold >>>= 7;\n              bits -= 7;\n              //---//\n            }\n            if (state.have + copy > state.nlen + state.ndist) {\n              strm.msg = 'invalid bit length repeat';\n              state.mode = BAD;\n              break;\n            }\n            while (copy--) {\n              state.lens[state.have++] = len;\n            }\n          }\n        }\n\n        /* handle error breaks in while */\n        if (state.mode === BAD) { break; }\n\n        /* check for end-of-block code (better have one) */\n        if (state.lens[256] === 0) {\n          strm.msg = 'invalid code -- missing end-of-block';\n          state.mode = BAD;\n          break;\n        }\n\n        /* build code tables -- note: do not change the lenbits or distbits\n           values here (9 and 6) without reading the comments in inftrees.h\n           concerning the ENOUGH constants, which depend on those values */\n        state.lenbits = 9;\n\n        opts = { bits: state.lenbits };\n        ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.lenbits = opts.bits;\n        // state.lencode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid literal/lengths set';\n          state.mode = BAD;\n          break;\n        }\n\n        state.distbits = 6;\n        //state.distcode.copy(state.codes);\n        // Switch to use dynamic table\n        state.distcode = state.distdyn;\n        opts = { bits: state.distbits };\n        ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.distbits = opts.bits;\n        // state.distcode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid distances set';\n          state.mode = BAD;\n          break;\n        }\n        //Tracev((stderr, 'inflate:       codes ok\\n'));\n        state.mode = LEN_;\n        if (flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case LEN_:\n        state.mode = LEN;\n        /* falls through */\n      case LEN:\n        if (have >= 6 && left >= 258) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          inffast(strm, _out);\n          //--- LOAD() ---\n          put = strm.next_out;\n          output = strm.output;\n          left = strm.avail_out;\n          next = strm.next_in;\n          input = strm.input;\n          have = strm.avail_in;\n          hold = state.hold;\n          bits = state.bits;\n          //---\n\n          if (state.mode === TYPE) {\n            state.back = -1;\n          }\n          break;\n        }\n        state.back = 0;\n        for (;;) {\n          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if (here_bits <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if (here_op && (here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.lencode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        state.length = here_val;\n        if (here_op === 0) {\n          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n          //        \"inflate:         literal '%c'\\n\" :\n          //        \"inflate:         literal 0x%02x\\n\", here.val));\n          state.mode = LIT;\n          break;\n        }\n        if (here_op & 32) {\n          //Tracevv((stderr, \"inflate:         end of block\\n\"));\n          state.back = -1;\n          state.mode = TYPE;\n          break;\n        }\n        if (here_op & 64) {\n          strm.msg = 'invalid literal/length code';\n          state.mode = BAD;\n          break;\n        }\n        state.extra = here_op & 15;\n        state.mode = LENEXT;\n        /* falls through */\n      case LENEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", state.length));\n        state.was = state.length;\n        state.mode = DIST;\n        /* falls through */\n      case DIST:\n        for (;;) {\n          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if ((here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.distcode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        if (here_op & 64) {\n          strm.msg = 'invalid distance code';\n          state.mode = BAD;\n          break;\n        }\n        state.offset = here_val;\n        state.extra = (here_op) & 15;\n        state.mode = DISTEXT;\n        /* falls through */\n      case DISTEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n//#ifdef INFLATE_STRICT\n        if (state.offset > state.dmax) {\n          strm.msg = 'invalid distance too far back';\n          state.mode = BAD;\n          break;\n        }\n//#endif\n        //Tracevv((stderr, \"inflate:         distance %u\\n\", state.offset));\n        state.mode = MATCH;\n        /* falls through */\n      case MATCH:\n        if (left === 0) { break inf_leave; }\n        copy = _out - left;\n        if (state.offset > copy) {         /* copy from window */\n          copy = state.offset - copy;\n          if (copy > state.whave) {\n            if (state.sane) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break;\n            }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//          Trace((stderr, \"inflate.c too far\\n\"));\n//          copy -= state.whave;\n//          if (copy > state.length) { copy = state.length; }\n//          if (copy > left) { copy = left; }\n//          left -= copy;\n//          state.length -= copy;\n//          do {\n//            output[put++] = 0;\n//          } while (--copy);\n//          if (state.length === 0) { state.mode = LEN; }\n//          break;\n//#endif\n          }\n          if (copy > state.wnext) {\n            copy -= state.wnext;\n            from = state.wsize - copy;\n          }\n          else {\n            from = state.wnext - copy;\n          }\n          if (copy > state.length) { copy = state.length; }\n          from_source = state.window;\n        }\n        else {                              /* copy from output */\n          from_source = output;\n          from = put - state.offset;\n          copy = state.length;\n        }\n        if (copy > left) { copy = left; }\n        left -= copy;\n        state.length -= copy;\n        do {\n          output[put++] = from_source[from++];\n        } while (--copy);\n        if (state.length === 0) { state.mode = LEN; }\n        break;\n      case LIT:\n        if (left === 0) { break inf_leave; }\n        output[put++] = state.length;\n        left--;\n        state.mode = LEN;\n        break;\n      case CHECK:\n        if (state.wrap) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            // Use '|' instead of '+' to make sure that result is signed\n            hold |= input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          _out -= left;\n          strm.total_out += _out;\n          state.total += _out;\n          if ((state.wrap & 4) && _out) {\n            strm.adler = state.check =\n                /*UPDATE_CHECK(state.check, put - _out, _out);*/\n                (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out));\n\n          }\n          _out = left;\n          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n          if ((state.wrap & 4) && (state.flags ? hold : zswap32(hold)) !== state.check) {\n            strm.msg = 'incorrect data check';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   check matches trailer\\n\"));\n        }\n        state.mode = LENGTH;\n        /* falls through */\n      case LENGTH:\n        if (state.wrap && state.flags) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if ((state.wrap & 4) && hold !== (state.total & 0xffffffff)) {\n            strm.msg = 'incorrect length check';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   length matches trailer\\n\"));\n        }\n        state.mode = DONE;\n        /* falls through */\n      case DONE:\n        ret = Z_STREAM_END$1;\n        break inf_leave;\n      case BAD:\n        ret = Z_DATA_ERROR$1;\n        break inf_leave;\n      case MEM:\n        return Z_MEM_ERROR$1;\n      case SYNC:\n        /* falls through */\n      default:\n        return Z_STREAM_ERROR$1;\n    }\n  }\n\n  // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n  /*\n     Return from inflate(), updating the total counts and the check value.\n     If there was no progress during the inflate() call, return a buffer\n     error.  Call updatewindow() to create and/or update the window state.\n     Note: a memory error from inflate() is non-recoverable.\n   */\n\n  //--- RESTORE() ---\n  strm.next_out = put;\n  strm.avail_out = left;\n  strm.next_in = next;\n  strm.avail_in = have;\n  state.hold = hold;\n  state.bits = bits;\n  //---\n\n  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n                      (state.mode < CHECK || flush !== Z_FINISH$1))) {\n    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n  }\n  _in -= strm.avail_in;\n  _out -= strm.avail_out;\n  strm.total_in += _in;\n  strm.total_out += _out;\n  state.total += _out;\n  if ((state.wrap & 4) && _out) {\n    strm.adler = state.check = /*UPDATE_CHECK(state.check, strm.next_out - _out, _out);*/\n      (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out));\n  }\n  strm.data_type = state.bits + (state.last ? 64 : 0) +\n                    (state.mode === TYPE ? 128 : 0) +\n                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n  if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n    ret = Z_BUF_ERROR;\n  }\n  return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n  if (inflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$1;\n  }\n\n  let state = strm.state;\n  if (state.window) {\n    state.window = null;\n  }\n  strm.state = null;\n  return Z_OK$1;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n  /* check state */\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  const state = strm.state;\n  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n  /* save header structure */\n  state.head = head;\n  head.done = false;\n  return Z_OK$1;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n  const dictLength = dictionary.length;\n\n  let state;\n  let dictid;\n  let ret;\n\n  /* check state */\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  state = strm.state;\n\n  if (state.wrap !== 0 && state.mode !== DICT) {\n    return Z_STREAM_ERROR$1;\n  }\n\n  /* check for correct dictionary identifier */\n  if (state.mode === DICT) {\n    dictid = 1; /* adler32(0, null, 0)*/\n    /* dictid = adler32(dictid, dictionary, dictLength); */\n    dictid = adler32_1(dictid, dictionary, dictLength, 0);\n    if (dictid !== state.check) {\n      return Z_DATA_ERROR$1;\n    }\n  }\n  /* copy dictionary to window using updatewindow(), which will amend the\n   existing dictionary if appropriate */\n  ret = updatewindow(strm, dictionary, dictLength, dictLength);\n  if (ret) {\n    state.mode = MEM;\n    return Z_MEM_ERROR$1;\n  }\n  state.havedict = 1;\n  // Tracev((stderr, \"inflate:   dictionary set\\n\"));\n  return Z_OK$1;\n};\n\n\nvar inflateReset_1 = inflateReset;\nvar inflateReset2_1 = inflateReset2;\nvar inflateResetKeep_1 = inflateResetKeep;\nvar inflateInit_1 = inflateInit;\nvar inflateInit2_1 = inflateInit2;\nvar inflate_2$1 = inflate$2;\nvar inflateEnd_1 = inflateEnd;\nvar inflateGetHeader_1 = inflateGetHeader;\nvar inflateSetDictionary_1 = inflateSetDictionary;\nvar inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCodesUsed = inflateCodesUsed;\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\nmodule.exports.inflateValidate = inflateValidate;\n*/\n\nvar inflate_1$2 = {\n\tinflateReset: inflateReset_1,\n\tinflateReset2: inflateReset2_1,\n\tinflateResetKeep: inflateResetKeep_1,\n\tinflateInit: inflateInit_1,\n\tinflateInit2: inflateInit2_1,\n\tinflate: inflate_2$1,\n\tinflateEnd: inflateEnd_1,\n\tinflateGetHeader: inflateGetHeader_1,\n\tinflateSetDictionary: inflateSetDictionary_1,\n\tinflateInfo: inflateInfo\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n  /* true if compressed data believed to be text */\n  this.text       = 0;\n  /* modification time */\n  this.time       = 0;\n  /* extra flags (not used when writing a gzip file) */\n  this.xflags     = 0;\n  /* operating system */\n  this.os         = 0;\n  /* pointer to extra field or Z_NULL if none */\n  this.extra      = null;\n  /* extra field length (valid if extra != Z_NULL) */\n  this.extra_len  = 0; // Actually, we don't need it in JS,\n                       // but leave for few code modifications\n\n  //\n  // Setup limits is not necessary because in js we should not preallocate memory\n  // for inflate use constant limit in 65536 bytes\n  //\n\n  /* space at extra (only when reading header) */\n  // this.extra_max  = 0;\n  /* pointer to zero-terminated file name or Z_NULL */\n  this.name       = '';\n  /* space at name (only when reading header) */\n  // this.name_max   = 0;\n  /* pointer to zero-terminated comment or Z_NULL */\n  this.comment    = '';\n  /* space at comment (only when reading header) */\n  // this.comm_max   = 0;\n  /* true if there was or will be a header crc */\n  this.hcrc       = 0;\n  /* true when done reading gzip header (not used when writing a gzip file) */\n  this.done       = false;\n}\n\nvar gzheader = GZheader;\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n  Z_NO_FLUSH, Z_FINISH,\n  Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true);  // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate$1(options) {\n  this.options = common.assign({\n    chunkSize: 1024 * 64,\n    windowBits: 15,\n    to: ''\n  }, options || {});\n\n  const opt = this.options;\n\n  // Force window size for `raw` data, if not set directly,\n  // because we have no header for autodetect.\n  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n    opt.windowBits = -opt.windowBits;\n    if (opt.windowBits === 0) { opt.windowBits = -15; }\n  }\n\n  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n      !(options && options.windowBits)) {\n    opt.windowBits += 32;\n  }\n\n  // Gzip header has no info about windows size, we can do autodetect only\n  // for deflate. So, if window size not set, force it to max when gzip possible\n  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n    // bit 3 (16) -> gzipped data\n    // bit 4 (32) -> autodetect gzip/deflate\n    if ((opt.windowBits & 15) === 0) {\n      opt.windowBits |= 15;\n    }\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm   = new zstream();\n  this.strm.avail_out = 0;\n\n  let status  = inflate_1$2.inflateInit2(\n    this.strm,\n    opt.windowBits\n  );\n\n  if (status !== Z_OK) {\n    throw new Error(messages[status]);\n  }\n\n  this.header = new gzheader();\n\n  inflate_1$2.inflateGetHeader(this.strm, this.header);\n\n  // Setup dictionary\n  if (opt.dictionary) {\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      opt.dictionary = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      opt.dictionary = new Uint8Array(opt.dictionary);\n    }\n    if (opt.raw) { //In raw mode we need to set the dictionary early\n      status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary);\n      if (status !== Z_OK) {\n        throw new Error(messages[status]);\n      }\n    }\n  }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n *   flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n *   `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nInflate$1.prototype.push = function (data, flush_mode) {\n  const strm = this.strm;\n  const chunkSize = this.options.chunkSize;\n  const dictionary = this.options.dictionary;\n  let status, _flush_mode, last_avail_out;\n\n  if (this.ended) return false;\n\n  if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n  else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n  // Convert data if needed\n  if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  for (;;) {\n    if (strm.avail_out === 0) {\n      strm.output = new Uint8Array(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    status = inflate_1$2.inflate(strm, _flush_mode);\n\n    if (status === Z_NEED_DICT && dictionary) {\n      status = inflate_1$2.inflateSetDictionary(strm, dictionary);\n\n      if (status === Z_OK) {\n        status = inflate_1$2.inflate(strm, _flush_mode);\n      } else if (status === Z_DATA_ERROR) {\n        // Replace code with more verbose\n        status = Z_NEED_DICT;\n      }\n    }\n\n    // Skip snyc markers if more data follows and not raw mode\n    while (strm.avail_in > 0 &&\n           status === Z_STREAM_END &&\n           strm.state.wrap > 0 &&\n           data[strm.next_in] !== 0)\n    {\n      inflate_1$2.inflateReset(strm);\n      status = inflate_1$2.inflate(strm, _flush_mode);\n    }\n\n    switch (status) {\n      case Z_STREAM_ERROR:\n      case Z_DATA_ERROR:\n      case Z_NEED_DICT:\n      case Z_MEM_ERROR:\n        this.onEnd(status);\n        this.ended = true;\n        return false;\n    }\n\n    // Remember real `avail_out` value, because we may patch out buffer content\n    // to align utf8 strings boundaries.\n    last_avail_out = strm.avail_out;\n\n    if (strm.next_out) {\n      if (strm.avail_out === 0 || status === Z_STREAM_END) {\n\n        if (this.options.to === 'string') {\n\n          let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n          let tail = strm.next_out - next_out_utf8;\n          let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n          // move tail & realign counters\n          strm.next_out = tail;\n          strm.avail_out = chunkSize - tail;\n          if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n          this.onData(utf8str);\n\n        } else {\n          this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n        }\n      }\n    }\n\n    // Must repeat iteration if out buffer is full\n    if (status === Z_OK && last_avail_out === 0) continue;\n\n    // Finalize if end of stream reached.\n    if (status === Z_STREAM_END) {\n      status = inflate_1$2.inflateEnd(this.strm);\n      this.onEnd(status);\n      this.ended = true;\n      return true;\n    }\n\n    if (strm.avail_in === 0) break;\n  }\n\n  return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n *   each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate$1.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate$1.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK) {\n    if (this.options.to === 'string') {\n      this.result = this.chunks.join('');\n    } else {\n      this.result = common.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n *   output = pako.inflate(input);\n * } catch (err) {\n *   console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n  const inflator = new Inflate$1(options);\n\n  inflator.push(input);\n\n  // That will never happens, if you don't cheat with options :)\n  if (inflator.err) throw inflator.msg || messages[inflator.err];\n\n  return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw$1(input, options) {\n  options = options || {};\n  options.raw = true;\n  return inflate$1(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nvar Inflate_1$1 = Inflate$1;\nvar inflate_2 = inflate$1;\nvar inflateRaw_1$1 = inflateRaw$1;\nvar ungzip$1 = inflate$1;\nvar constants = constants$2;\n\nvar inflate_1$1 = {\n\tInflate: Inflate_1$1,\n\tinflate: inflate_2,\n\tinflateRaw: inflateRaw_1$1,\n\tungzip: ungzip$1,\n\tconstants: constants\n};\n\nconst { Deflate, deflate, deflateRaw, gzip } = deflate_1$1;\n\nconst { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1;\n\n\n\nvar Deflate_1 = Deflate;\nvar deflate_1 = deflate;\nvar deflateRaw_1 = deflateRaw;\nvar gzip_1 = gzip;\nvar Inflate_1 = Inflate;\nvar inflate_1 = inflate;\nvar inflateRaw_1 = inflateRaw;\nvar ungzip_1 = ungzip;\nvar constants_1 = constants$2;\n\nvar pako = {\n\tDeflate: Deflate_1,\n\tdeflate: deflate_1,\n\tdeflateRaw: deflateRaw_1,\n\tgzip: gzip_1,\n\tInflate: Inflate_1,\n\tinflate: inflate_1,\n\tinflateRaw: inflateRaw_1,\n\tungzip: ungzip_1,\n\tconstants: constants_1\n};\n\nexport { Deflate_1 as Deflate, Inflate_1 as Inflate, constants_1 as constants, pako as default, deflate_1 as deflate, deflateRaw_1 as deflateRaw, gzip_1 as gzip, inflate_1 as inflate, inflateRaw_1 as inflateRaw, ungzip_1 as ungzip };\n", "import type { IOBuffer } from 'iobuffer';\n\nconst crcTable: number[] = [];\nfor (let n = 0; n < 256; n++) {\n  let c = n;\n  for (let k = 0; k < 8; k++) {\n    if (c & 1) {\n      c = 0xedb88320 ^ (c >>> 1);\n    } else {\n      c = c >>> 1;\n    }\n  }\n  crcTable[n] = c;\n}\n\nconst initialCrc = 0xffffffff;\nfunction updateCrc(\n  currentCrc: number,\n  data: Uint8Array,\n  length: number,\n): number {\n  let c = currentCrc;\n  for (let n = 0; n < length; n++) {\n    c = crcTable[(c ^ data[n]) & 0xff] ^ (c >>> 8);\n  }\n  return c;\n}\n\nfunction crc(data: Uint8Array, length: number): number {\n  return (updateCrc(initialCrc, data, length) ^ initialCrc) >>> 0;\n}\n\nexport function checkCrc(\n  buffer: IOBuffer,\n  crcLength: number,\n  chunkName: string,\n) {\n  const expectedCrc = buffer.readUint32();\n  const actualCrc = crc(\n    new Uint8Array(\n      buffer.buffer,\n      buffer.byteOffset + buffer.offset - crcLength - 4,\n      crcLength,\n    ),\n    crcLength,\n  ); // \"- 4\" because we already advanced by reading the CRC\n  if (actualCrc !== expectedCrc) {\n    throw new Error(\n      `CRC mismatch for chunk ${chunkName}. Expected ${expectedCrc}, found ${actualCrc}`,\n    );\n  }\n}\n\nexport function writeCrc(buffer: IOBuffer, length: number) {\n  buffer.writeUint32(\n    crc(\n      new Uint8Array(\n        buffer.buffer,\n        buffer.byteOffset + buffer.offset - length,\n        length,\n      ),\n      length,\n    ),\n  );\n}\n", "import type { PngDataArray } from '../types';\n\nexport function unfilterNone(\n  currentLine: PngDataArray,\n  newLine: PngDataArray,\n  bytesPerLine: number,\n): void {\n  for (let i = 0; i < bytesPerLine; i++) {\n    newLine[i] = currentLine[i];\n  }\n}\n\nexport function unfilterSub(\n  currentLine: PngDataArray,\n  newLine: PngDataArray,\n  bytesPerLine: number,\n  bytesPerPixel: number,\n): void {\n  let i = 0;\n  for (; i < bytesPerPixel; i++) {\n    // just copy first bytes\n    newLine[i] = currentLine[i];\n  }\n  for (; i < bytesPerLine; i++) {\n    newLine[i] = (currentLine[i] + newLine[i - bytesPerPixel]) & 0xff;\n  }\n}\n\nexport function unfilterUp(\n  currentLine: PngDataArray,\n  newLine: PngDataArray,\n  prevLine: PngDataArray,\n  bytesPerLine: number,\n): void {\n  let i = 0;\n  if (prevLine.length === 0) {\n    // just copy bytes for first line\n    for (; i < bytesPerLine; i++) {\n      newLine[i] = currentLine[i];\n    }\n  } else {\n    for (; i < bytesPerLine; i++) {\n      newLine[i] = (currentLine[i] + prevLine[i]) & 0xff;\n    }\n  }\n}\n\nexport function unfilterAverage(\n  currentLine: PngDataArray,\n  newLine: PngDataArray,\n  prevLine: PngDataArray,\n  bytesPerLine: number,\n  bytesPerPixel: number,\n): void {\n  let i = 0;\n  if (prevLine.length === 0) {\n    for (; i < bytesPerPixel; i++) {\n      newLine[i] = currentLine[i];\n    }\n    for (; i < bytesPerLine; i++) {\n      newLine[i] = (currentLine[i] + (newLine[i - bytesPerPixel] >> 1)) & 0xff;\n    }\n  } else {\n    for (; i < bytesPerPixel; i++) {\n      newLine[i] = (currentLine[i] + (prevLine[i] >> 1)) & 0xff;\n    }\n    for (; i < bytesPerLine; i++) {\n      newLine[i] =\n        (currentLine[i] + ((newLine[i - bytesPerPixel] + prevLine[i]) >> 1)) &\n        0xff;\n    }\n  }\n}\n\nexport function unfilterPaeth(\n  currentLine: PngDataArray,\n  newLine: PngDataArray,\n  prevLine: PngDataArray,\n  bytesPerLine: number,\n  bytesPerPixel: number,\n): void {\n  let i = 0;\n  if (prevLine.length === 0) {\n    for (; i < bytesPerPixel; i++) {\n      newLine[i] = currentLine[i];\n    }\n    for (; i < bytesPerLine; i++) {\n      newLine[i] = (currentLine[i] + newLine[i - bytesPerPixel]) & 0xff;\n    }\n  } else {\n    for (; i < bytesPerPixel; i++) {\n      newLine[i] = (currentLine[i] + prevLine[i]) & 0xff;\n    }\n    for (; i < bytesPerLine; i++) {\n      newLine[i] =\n        (currentLine[i] +\n          paethPredictor(\n            newLine[i - bytesPerPixel],\n            prevLine[i],\n            prevLine[i - bytesPerPixel],\n          )) &\n        0xff;\n    }\n  }\n}\n\nfunction paethPredictor(a: number, b: number, c: number): number {\n  const p = a + b - c;\n  const pa = Math.abs(p - a);\n  const pb = Math.abs(p - b);\n  const pc = Math.abs(p - c);\n  if (pa <= pb && pa <= pc) return a;\n  else if (pb <= pc) return b;\n  else return c;\n}\n", "import {\n  unfilterAverage,\n  unfilterNone,\n  unfilterPaeth,\n  unfilterSub,\n  unfilterUp,\n} from './unfilter';\n/**\n * Apllies filter on scanline based on the filter type.\n * @param filterType - The filter type to apply.\n * @param currentLine - The current line of pixel data.\n * @param newLine - The new line of pixel data.\n * @param prevLine - The previous line of pixel data.\n * @param passLineBytes - The number of bytes in the pass line.\n * @param bytesPerPixel - The number of bytes per pixel.\n */\nexport function applyUnfilter(\n  filterType: number,\n  currentLine: Uint8Array,\n  newLine: Uint8Array,\n  prevLine: Uint8Array,\n  passLineBytes: number,\n  bytesPerPixel: number,\n) {\n  switch (filterType) {\n    case 0:\n      unfilterNone(currentLine, newLine, passLineBytes);\n      break;\n    case 1:\n      unfilterSub(currentLine, newLine, passLineBytes, bytesPerPixel);\n      break;\n    case 2:\n      unfilterUp(currentLine, newLine, prevLine, passLineBytes);\n      break;\n    case 3:\n      unfilterAverage(\n        currentLine,\n        newLine,\n        prevLine,\n        passLineBytes,\n        bytesPerPixel,\n      );\n      break;\n    case 4:\n      unfilterPaeth(\n        currentLine,\n        newLine,\n        prevLine,\n        passLineBytes,\n        bytesPerPixel,\n      );\n      break;\n    default:\n      throw new Error(`Unsupported filter: ${filterType}`);\n  }\n}\n", "import { applyUnfilter } from './applyUnfilter';\nimport type { DecodeInterlaceNullParams } from './decodeInterlaceNull';\n\nconst uint16 = new Uint16Array([0x00ff]);\nconst uint8 = new Uint8Array(uint16.buffer);\nconst osIsLittleEndian = uint8[0] === 0xff;\n/**\n * Decodes the Adam7 interlaced PNG data.\n *\n * @param params - DecodeInterlaceNullParams\n * @returns - array of pixel data.\n */\nexport function decodeInterlaceAdam7(params: DecodeInterlaceNullParams) {\n  const { data, width, height, channels, depth } = params;\n\n  // Adam7 interlacing pattern\n  const passes = [\n    { x: 0, y: 0, xStep: 8, yStep: 8 }, // Pass 1\n    { x: 4, y: 0, xStep: 8, yStep: 8 }, // Pass 2\n    { x: 0, y: 4, xStep: 4, yStep: 8 }, // Pass 3\n    { x: 2, y: 0, xStep: 4, yStep: 4 }, // Pass 4\n    { x: 0, y: 2, xStep: 2, yStep: 4 }, // Pass 5\n    { x: 1, y: 0, xStep: 2, yStep: 2 }, // Pass 6\n    { x: 0, y: 1, xStep: 1, yStep: 2 }, // Pass 7\n  ];\n\n  const bytesPerPixel = Math.ceil(depth / 8) * channels;\n  const resultData = new Uint8Array(height * width * bytesPerPixel);\n\n  let offset = 0;\n\n  // Process each pass\n  for (let passIndex = 0; passIndex < 7; passIndex++) {\n    const pass = passes[passIndex];\n\n    // Calculate pass dimensions\n    const passWidth = Math.ceil((width - pass.x) / pass.xStep);\n    const passHeight = Math.ceil((height - pass.y) / pass.yStep);\n\n    if (passWidth <= 0 || passHeight <= 0) continue;\n\n    const passLineBytes = passWidth * bytesPerPixel;\n    const prevLine = new Uint8Array(passLineBytes);\n\n    // Process each scanline in this pass\n    for (let y = 0; y < passHeight; y++) {\n      // First byte is the filter type\n      const filterType = data[offset++];\n      const currentLine = data.subarray(offset, offset + passLineBytes);\n      offset += passLineBytes;\n\n      // Create a new line for the unfiltered data\n      const newLine = new Uint8Array(passLineBytes);\n\n      // Apply the appropriate unfilter\n      applyUnfilter(\n        filterType,\n        currentLine,\n        newLine,\n        prevLine,\n        passLineBytes,\n        bytesPerPixel,\n      );\n      prevLine.set(newLine);\n\n      for (let x = 0; x < passWidth; x++) {\n        const outputX = pass.x + x * pass.xStep;\n        const outputY = pass.y + y * pass.yStep;\n        if (outputX >= width || outputY >= height) continue;\n        for (let i = 0; i < bytesPerPixel; i++) {\n          resultData[(outputY * width + outputX) * bytesPerPixel + i] =\n            newLine[x * bytesPerPixel + i];\n        }\n      }\n    }\n  }\n  if (depth === 16) {\n    const uint16Data = new Uint16Array(resultData.buffer);\n    if (osIsLittleEndian) {\n      for (let k = 0; k < uint16Data.length; k++) {\n        // PNG is always big endian. Swap the bytes.\n        uint16Data[k] = swap16(uint16Data[k]);\n      }\n    }\n    return uint16Data;\n  } else {\n    return resultData;\n  }\n}\n\nfunction swap16(val: number): number {\n  return ((val & 0xff) << 8) | ((val >> 8) & 0xff);\n}\n", "import type { PngDataArray } from '../types';\n\nimport {\n  unfilterAverage,\n  unfilterNone,\n  unfilterPaeth,\n  unfilterSub,\n  unfilterUp,\n} from './unfilter';\n\nconst uint16 = new Uint16Array([0x00ff]);\nconst uint8 = new Uint8Array(uint16.buffer);\nconst osIsLittleEndian = uint8[0] === 0xff;\n\nconst empty = new Uint8Array(0);\n\nexport interface DecodeInterlaceNullParams {\n  data: Uint8Array;\n  width: number;\n  height: number;\n  channels: number;\n  depth: number;\n}\n\nexport function decodeInterlaceNull(\n  params: DecodeInterlaceNullParams,\n): PngDataArray {\n  const { data, width, height, channels, depth } = params;\n\n  const bytesPerPixel = Math.ceil(depth / 8) * channels;\n\n  const bytesPerLine = Math.ceil((depth / 8) * channels * width);\n  const newData = new Uint8Array(height * bytesPerLine);\n\n  let prevLine = empty;\n  let offset = 0;\n  let currentLine;\n  let newLine;\n\n  for (let i = 0; i < height; i++) {\n    currentLine = data.subarray(offset + 1, offset + 1 + bytesPerLine);\n    newLine = newData.subarray(i * bytesPerLine, (i + 1) * bytesPerLine);\n    switch (data[offset]) {\n      case 0:\n        unfilterNone(currentLine, newLine, bytesPerLine);\n        break;\n      case 1:\n        unfilterSub(currentLine, newLine, bytesPerLine, bytesPerPixel);\n        break;\n      case 2:\n        unfilterUp(currentLine, newLine, prevLine, bytesPerLine);\n        break;\n      case 3:\n        unfilterAverage(\n          currentLine,\n          newLine,\n          prevLine,\n          bytesPerLine,\n          bytesPerPixel,\n        );\n        break;\n      case 4:\n        unfilterPaeth(\n          currentLine,\n          newLine,\n          prevLine,\n          bytesPerLine,\n          bytesPerPixel,\n        );\n        break;\n      default:\n        throw new Error(`Unsupported filter: ${data[offset]}`);\n    }\n    prevLine = newLine;\n    offset += bytesPerLine + 1;\n  }\n\n  if (depth === 16) {\n    const uint16Data = new Uint16Array(newData.buffer);\n    if (osIsLittleEndian) {\n      for (let k = 0; k < uint16Data.length; k++) {\n        // PNG is always big endian. Swap the bytes.\n        uint16Data[k] = swap16(uint16Data[k]);\n      }\n    }\n    return uint16Data;\n  } else {\n    return newData;\n  }\n}\n\nfunction swap16(val: number): number {\n  return ((val & 0xff) << 8) | ((val >> 8) & 0xff);\n}\n", "import type { IOBuffer } from 'iobuffer';\n\n// https://www.w3.org/TR/PNG/#5PNG-file-signature\n\nconst pngSignature = Uint8Array.of(137, 80, 78, 71, 13, 10, 26, 10);\n\nexport function writeSignature(buffer: IOBuffer) {\n  buffer.writeBytes(pngSignature);\n}\n\nexport function checkSignature(buffer: IOBuffer) {\n  if (!hasPngSignature(buffer.readBytes(pngSignature.length))) {\n    throw new Error('wrong PNG signature');\n  }\n}\n\nexport function hasPngSignature(array: ArrayLike<number>) {\n  if (array.length < pngSignature.length) {\n    return false;\n  }\n  for (let i = 0; i < pngSignature.length; i++) {\n    if (array[i] !== pngSignature[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n", "import type { IOBuffer } from 'iobuffer';\n\nimport { writeCrc } from './crc';\n\n// https://www.w3.org/TR/png/#11tEXt\n\nexport const textChunkName = 'tEXt';\n\nconst NULL = 0;\n\nconst latin1Decoder = new TextDecoder('latin1');\n\nfunction validateKeyword(keyword: string) {\n  validateLatin1(keyword);\n  if (keyword.length === 0 || keyword.length > 79) {\n    throw new Error('keyword length must be between 1 and 79');\n  }\n}\n\n// eslint-disable-next-line no-control-regex\nconst latin1Regex = /^[\\u0000-\\u00FF]*$/;\nfunction validateLatin1(text: string) {\n  if (!latin1Regex.test(text)) {\n    throw new Error('invalid latin1 text');\n  }\n}\n\nexport function decodetEXt(\n  text: Record<string, string>,\n  buffer: IOBuffer,\n  length: number,\n) {\n  const keyword = readKeyword(buffer);\n  text[keyword] = readLatin1(buffer, length - keyword.length - 1);\n}\n\nexport function encodetEXt(buffer: IOBuffer, keyword: string, text: string) {\n  validateKeyword(keyword);\n  validateLatin1(text);\n  const length = keyword.length + 1 /* NULL */ + text.length;\n\n  buffer.writeUint32(length);\n  buffer.writeChars(textChunkName);\n  buffer.writeChars(keyword);\n  buffer.writeByte(NULL);\n  buffer.writeChars(text);\n  writeCrc(buffer, length + 4);\n}\n\n// https://www.w3.org/TR/png/#11keywords\nexport function readKeyword(buffer: IOBuffer): string {\n  buffer.mark();\n  while (buffer.readByte() !== NULL) {\n    /* advance */\n  }\n  const end = buffer.offset;\n  buffer.reset();\n  const keyword = latin1Decoder.decode(\n    buffer.readBytes(end - buffer.offset - 1),\n  );\n  // NULL\n  buffer.skip(1);\n\n  validateKeyword(keyword);\n\n  return keyword;\n}\n\nexport function readLatin1(buffer: IOBuffer, length: number): string {\n  return latin1Decoder.decode(buffer.readBytes(length));\n}\n", "export const ColorType = {\n  UNKNOWN: -1,\n  GREYSCALE: 0,\n  TRUECOLOUR: 2,\n  INDEXED_COLOUR: 3,\n  GREYSCALE_ALPHA: 4,\n  TRUECOLOUR_ALPHA: 6,\n} as const;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type ColorType = (typeof ColorType)[keyof typeof ColorType];\n\nexport const CompressionMethod = {\n  UNKNOWN: -1,\n  DEFLATE: 0,\n} as const;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type CompressionMethod =\n  (typeof CompressionMethod)[keyof typeof CompressionMethod];\n\nexport const FilterMethod = {\n  UNKNOWN: -1,\n  ADAPTIVE: 0,\n} as const;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type FilterMethod = (typeof FilterMethod)[keyof typeof FilterMethod];\nexport const InterlaceMethod = {\n  UNKNOWN: -1,\n  NO_INTERLACE: 0,\n  ADAM7: 1,\n} as const;\n\nexport const DisposeOpType = {\n  NONE: 0,\n  BACKGROUND: 1,\n  PREVIOUS: 2,\n} as const;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DisposeOpType = (typeof DisposeOpType)[keyof typeof DisposeOpType];\n\nexport const BlendOpType = {\n  SOURCE: 0,\n  OVER: 1,\n} as const;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type InterlaceMethod =\n  (typeof InterlaceMethod)[keyof typeof InterlaceMethod];\n", "import { IOBuffer } from 'iobuffer';\nimport { inflate, Inflate as Inflator } from 'pako';\n\nimport { checkCrc } from './helpers/crc';\nimport { decodeInterlaceAdam7 } from './helpers/decodeInterlaceAdam7';\nimport { decodeInterlaceNull } from './helpers/decodeInterlaceNull';\nimport { checkSignature } from './helpers/signature';\nimport { decodetEXt, readKeyword, textChunkName } from './helpers/text';\nimport {\n  ColorType,\n  CompressionMethod,\n  DisposeOpType,\n  FilterMethod,\n  InterlaceMethod,\n  BlendOpType,\n} from './internalTypes';\nimport type {\n  BitDepth,\n  DecodedPng,\n  DecodedApng,\n  DecodedApngFrame,\n  ApngFrame,\n  DecoderInputType,\n  IndexedColors,\n  PngDecoderOptions,\n} from './types';\n\nexport default class PngDecoder extends IOBuffer {\n  private readonly _checkCrc: boolean;\n  private _inflator: Inflator;\n  private readonly _png: DecodedPng;\n  private readonly _apng: DecodedApng;\n  private _end: boolean;\n  private _hasPalette: boolean;\n  private _palette: IndexedColors;\n  private _hasTransparency: boolean;\n  private _transparency: Uint16Array;\n  private _compressionMethod: CompressionMethod;\n  private _filterMethod: FilterMethod;\n  private _interlaceMethod: InterlaceMethod;\n  private _colorType: ColorType;\n  private _isAnimated: boolean;\n  private _numberOfFrames: number;\n  private _numberOfPlays: number;\n  private _frames: ApngFrame[];\n  private _writingDataChunks: boolean;\n\n  public constructor(data: DecoderInputType, options: PngDecoderOptions = {}) {\n    super(data);\n    const { checkCrc = false } = options;\n    this._checkCrc = checkCrc;\n    this._inflator = new Inflator();\n    this._png = {\n      width: -1,\n      height: -1,\n      channels: -1,\n      data: new Uint8Array(0),\n      depth: 1,\n      text: {},\n    };\n    this._apng = {\n      width: -1,\n      height: -1,\n      channels: -1,\n      depth: 1,\n      numberOfFrames: 1,\n      numberOfPlays: 0,\n      text: {},\n      frames: [],\n    };\n    this._end = false;\n    this._hasPalette = false;\n    this._palette = [];\n    this._hasTransparency = false;\n    this._transparency = new Uint16Array(0);\n    this._compressionMethod = CompressionMethod.UNKNOWN;\n    this._filterMethod = FilterMethod.UNKNOWN;\n    this._interlaceMethod = InterlaceMethod.UNKNOWN;\n    this._colorType = ColorType.UNKNOWN;\n    this._isAnimated = false;\n    this._numberOfFrames = 1;\n    this._numberOfPlays = 0;\n    this._frames = [];\n    this._writingDataChunks = false;\n    // PNG is always big endian\n    // https://www.w3.org/TR/PNG/#7Integers-and-byte-order\n    this.setBigEndian();\n  }\n\n  public decode(): DecodedPng {\n    checkSignature(this);\n    while (!this._end) {\n      const length = this.readUint32();\n      const type = this.readChars(4);\n\n      this.decodeChunk(length, type);\n    }\n    this.decodeImage();\n\n    return this._png;\n  }\n\n  public decodeApng(): DecodedApng {\n    checkSignature(this);\n    while (!this._end) {\n      const length = this.readUint32();\n      const type = this.readChars(4);\n\n      this.decodeApngChunk(length, type);\n    }\n    this.decodeApngImage();\n    return this._apng;\n  }\n\n  // https://www.w3.org/TR/PNG/#5Chunk-layout\n  private decodeChunk(length: number, type: string): void {\n    const offset = this.offset;\n    switch (type) {\n      // 11.2 Critical chunks\n      case 'IHDR': // 11.2.2 IHDR Image header\n        this.decodeIHDR();\n        break;\n      case 'PLTE': // 11.2.3 PLTE Palette\n        this.decodePLTE(length);\n        break;\n      case 'IDAT': // 11.2.4 IDAT Image data\n        this.decodeIDAT(length);\n        break;\n      case 'IEND': // 11.2.5 IEND Image trailer\n        this._end = true;\n        break;\n      // 11.3 Ancillary chunks\n      case 'tRNS': // 11.3.2.1 tRNS Transparency\n        this.decodetRNS(length);\n        break;\n      case 'iCCP': // 11.3.3.3 iCCP Embedded ICC profile\n        this.decodeiCCP(length);\n        break;\n      case textChunkName: // 11.3.4.3 tEXt Textual data\n        decodetEXt(this._png.text, this, length);\n        break;\n      case 'pHYs': // 11.3.5.3 pHYs Physical pixel dimensions\n        this.decodepHYs();\n        break;\n      default:\n        this.skip(length);\n        break;\n    }\n    if (this.offset - offset !== length) {\n      throw new Error(`Length mismatch while decoding chunk ${type}`);\n    }\n    if (this._checkCrc) {\n      checkCrc(this, length + 4, type);\n    } else {\n      this.skip(4);\n    }\n  }\n  private decodeApngChunk(length: number, type: string): void {\n    const offset = this.offset;\n    if (type !== 'fdAT' && type !== 'IDAT' && this._writingDataChunks) {\n      this.pushDataToFrame();\n    }\n    switch (type) {\n      case 'acTL':\n        this.decodeACTL();\n        break;\n      case 'fcTL':\n        this.decodeFCTL();\n        break;\n      case 'fdAT':\n        this.decodeFDAT(length);\n        break;\n      default:\n        this.decodeChunk(length, type);\n        this.offset = offset + length;\n        break;\n    }\n    if (this.offset - offset !== length) {\n      throw new Error(`Length mismatch while decoding chunk ${type}`);\n    }\n    if (this._checkCrc) {\n      checkCrc(this, length + 4, type);\n    } else {\n      this.skip(4);\n    }\n  }\n\n  // https://www.w3.org/TR/PNG/#11IHDR\n  private decodeIHDR(): void {\n    const image = this._png;\n\n    image.width = this.readUint32();\n    image.height = this.readUint32();\n    image.depth = checkBitDepth(this.readUint8());\n\n    const colorType = this.readUint8() as ColorType;\n    this._colorType = colorType;\n    let channels: number;\n    switch (colorType) {\n      case ColorType.GREYSCALE:\n        channels = 1;\n        break;\n      case ColorType.TRUECOLOUR:\n        channels = 3;\n        break;\n      case ColorType.INDEXED_COLOUR:\n        channels = 1;\n        break;\n      case ColorType.GREYSCALE_ALPHA:\n        channels = 2;\n        break;\n      case ColorType.TRUECOLOUR_ALPHA:\n        channels = 4;\n        break;\n      // Kept for exhaustiveness.\n      // eslint-disable-next-line unicorn/no-useless-switch-case\n      case ColorType.UNKNOWN:\n      default:\n        throw new Error(`Unknown color type: ${colorType}`);\n    }\n    this._png.channels = channels;\n\n    this._compressionMethod = this.readUint8() as CompressionMethod;\n    if (this._compressionMethod !== CompressionMethod.DEFLATE) {\n      throw new Error(\n        `Unsupported compression method: ${this._compressionMethod}`,\n      );\n    }\n\n    this._filterMethod = this.readUint8() as FilterMethod;\n    this._interlaceMethod = this.readUint8() as InterlaceMethod;\n  }\n\n  private decodeACTL(): void {\n    this._numberOfFrames = this.readUint32();\n    this._numberOfPlays = this.readUint32();\n    this._isAnimated = true;\n  }\n\n  private decodeFCTL(): void {\n    const image: ApngFrame = {\n      sequenceNumber: this.readUint32(),\n      width: this.readUint32(),\n      height: this.readUint32(),\n      xOffset: this.readUint32(),\n      yOffset: this.readUint32(),\n      delayNumber: this.readUint16(),\n      delayDenominator: this.readUint16(),\n      disposeOp: this.readUint8(),\n      blendOp: this.readUint8(),\n      data: new Uint8Array(0),\n    };\n    this._frames.push(image);\n  }\n  // https://www.w3.org/TR/PNG/#11PLTE\n  private decodePLTE(length: number): void {\n    if (length % 3 !== 0) {\n      throw new RangeError(\n        `PLTE field length must be a multiple of 3. Got ${length}`,\n      );\n    }\n    const l = length / 3;\n\n    this._hasPalette = true;\n    const palette: IndexedColors = [];\n    this._palette = palette;\n    for (let i = 0; i < l; i++) {\n      palette.push([this.readUint8(), this.readUint8(), this.readUint8()]);\n    }\n  }\n\n  // https://www.w3.org/TR/PNG/#11IDAT\n  private decodeIDAT(length: number): void {\n    this._writingDataChunks = true;\n    const dataLength = length;\n    const dataOffset = this.offset + this.byteOffset;\n\n    this._inflator.push(new Uint8Array(this.buffer, dataOffset, dataLength));\n    if (this._inflator.err) {\n      throw new Error(\n        `Error while decompressing the data: ${this._inflator.err}`,\n      );\n    }\n    this.skip(length);\n  }\n  private decodeFDAT(length: number): void {\n    this._writingDataChunks = true;\n    let dataLength = length;\n    let dataOffset = this.offset + this.byteOffset;\n    dataOffset += 4;\n    dataLength -= 4;\n    this._inflator.push(new Uint8Array(this.buffer, dataOffset, dataLength));\n    if (this._inflator.err) {\n      throw new Error(\n        `Error while decompressing the data: ${this._inflator.err}`,\n      );\n    }\n    this.skip(length);\n  }\n\n  // https://www.w3.org/TR/PNG/#11tRNS\n  private decodetRNS(length: number): void {\n    switch (this._colorType) {\n      case ColorType.GREYSCALE:\n      case ColorType.TRUECOLOUR: {\n        if (length % 2 !== 0) {\n          throw new RangeError(\n            `tRNS chunk length must be a multiple of 2. Got ${length}`,\n          );\n        }\n        if (length / 2 > this._png.width * this._png.height) {\n          throw new Error(\n            `tRNS chunk contains more alpha values than there are pixels (${\n              length / 2\n            } vs ${this._png.width * this._png.height})`,\n          );\n        }\n        this._hasTransparency = true;\n        this._transparency = new Uint16Array(length / 2);\n\n        for (let i = 0; i < length / 2; i++) {\n          this._transparency[i] = this.readUint16();\n        }\n\n        break;\n      }\n      case ColorType.INDEXED_COLOUR: {\n        if (length > this._palette.length) {\n          throw new Error(\n            `tRNS chunk contains more alpha values than there are palette colors (${length} vs ${this._palette.length})`,\n          );\n        }\n        let i = 0;\n        for (; i < length; i++) {\n          const alpha = this.readByte();\n          this._palette[i].push(alpha);\n        }\n        for (; i < this._palette.length; i++) {\n          this._palette[i].push(255);\n        }\n        break;\n      }\n      // Kept for exhaustiveness.\n      /* eslint-disable unicorn/no-useless-switch-case */\n      case ColorType.UNKNOWN:\n      case ColorType.GREYSCALE_ALPHA:\n      case ColorType.TRUECOLOUR_ALPHA:\n      default: {\n        throw new Error(\n          `tRNS chunk is not supported for color type ${this._colorType}`,\n        );\n      }\n      /* eslint-enable unicorn/no-useless-switch-case */\n    }\n  }\n\n  // https://www.w3.org/TR/PNG/#11iCCP\n  private decodeiCCP(length: number): void {\n    const name = readKeyword(this);\n    const compressionMethod = this.readUint8();\n    if (compressionMethod !== CompressionMethod.DEFLATE) {\n      throw new Error(\n        `Unsupported iCCP compression method: ${compressionMethod}`,\n      );\n    }\n    const compressedProfile = this.readBytes(length - name.length - 2);\n    this._png.iccEmbeddedProfile = {\n      name,\n      profile: inflate(compressedProfile),\n    };\n  }\n\n  // https://www.w3.org/TR/PNG/#11pHYs\n  private decodepHYs(): void {\n    const ppuX = this.readUint32();\n    const ppuY = this.readUint32();\n    const unitSpecifier = this.readByte();\n    this._png.resolution = { x: ppuX, y: ppuY, unit: unitSpecifier };\n  }\n\n  private decodeApngImage() {\n    this._apng.width = this._png.width;\n    this._apng.height = this._png.height;\n    this._apng.channels = this._png.channels;\n    this._apng.depth = this._png.depth;\n    this._apng.numberOfFrames = this._numberOfFrames;\n    this._apng.numberOfPlays = this._numberOfPlays;\n    this._apng.text = this._png.text;\n    this._apng.resolution = this._png.resolution;\n    for (let i = 0; i < this._numberOfFrames; i++) {\n      const newFrame: DecodedApngFrame = {\n        sequenceNumber: this._frames[i].sequenceNumber,\n        delayNumber: this._frames[i].delayNumber,\n        delayDenominator: this._frames[i].delayDenominator,\n        data:\n          this._apng.depth === 8\n            ? new Uint8Array(\n                this._apng.width * this._apng.height * this._apng.channels,\n              )\n            : new Uint16Array(\n                this._apng.width * this._apng.height * this._apng.channels,\n              ),\n      };\n\n      const frame = this._frames.at(i);\n\n      if (frame) {\n        frame.data = decodeInterlaceNull({\n          data: frame.data as Uint8Array,\n          width: frame.width,\n          height: frame.height,\n          channels: this._apng.channels,\n          depth: this._apng.depth,\n        });\n\n        if (this._hasPalette) {\n          this._apng.palette = this._palette;\n        }\n        if (this._hasTransparency) {\n          this._apng.transparency = this._transparency;\n        }\n        if (\n          i === 0 ||\n          (frame.xOffset === 0 &&\n            frame.yOffset === 0 &&\n            frame.width === this._png.width &&\n            frame.height === this._png.height)\n        ) {\n          newFrame.data = frame.data;\n        } else {\n          const prevFrame = this._apng.frames.at(i - 1);\n          this.disposeFrame(frame, prevFrame as DecodedApngFrame, newFrame);\n          this.addFrameDataToCanvas(newFrame, frame);\n        }\n        this._apng.frames.push(newFrame);\n      }\n    }\n    return this._apng;\n  }\n  private disposeFrame(\n    frame: ApngFrame,\n    prevFrame: DecodedApngFrame,\n    imageFrame: DecodedApngFrame,\n  ): void {\n    switch (frame.disposeOp) {\n      case DisposeOpType.NONE:\n        break;\n      case DisposeOpType.BACKGROUND:\n        for (let row = 0; row < this._png.height; row++) {\n          for (let col = 0; col < this._png.width; col++) {\n            const index = (row * frame.width + col) * this._png.channels;\n            for (let channel = 0; channel < this._png.channels; channel++) {\n              imageFrame.data[index + channel] = 0;\n            }\n          }\n        }\n        break;\n      case DisposeOpType.PREVIOUS:\n        imageFrame.data.set(prevFrame.data);\n        break;\n      default:\n        throw new Error('Unknown disposeOp');\n    }\n  }\n  private addFrameDataToCanvas(\n    imageFrame: DecodedApngFrame,\n    frame: ApngFrame,\n  ): void {\n    const maxValue = 1 << this._png.depth;\n    const calculatePixelIndices = (row: number, col: number) => {\n      const index =\n        ((row + frame.yOffset) * this._png.width + frame.xOffset + col) *\n        this._png.channels;\n      const frameIndex = (row * frame.width + col) * this._png.channels;\n      return { index, frameIndex };\n    };\n    switch (frame.blendOp) {\n      case BlendOpType.SOURCE:\n        for (let row = 0; row < frame.height; row++) {\n          for (let col = 0; col < frame.width; col++) {\n            const { index, frameIndex } = calculatePixelIndices(row, col);\n            for (let channel = 0; channel < this._png.channels; channel++) {\n              imageFrame.data[index + channel] =\n                frame.data[frameIndex + channel];\n            }\n          }\n        }\n        break;\n      // https://www.w3.org/TR/png-3/#13Alpha-channel-processing\n      case BlendOpType.OVER:\n        for (let row = 0; row < frame.height; row++) {\n          for (let col = 0; col < frame.width; col++) {\n            const { index, frameIndex } = calculatePixelIndices(row, col);\n            for (let channel = 0; channel < this._png.channels; channel++) {\n              const sourceAlpha =\n                frame.data[frameIndex + this._png.channels - 1] / maxValue;\n              const foregroundValue =\n                channel % (this._png.channels - 1) === 0\n                  ? 1\n                  : frame.data[frameIndex + channel];\n              const value = Math.floor(\n                sourceAlpha * foregroundValue +\n                  (1 - sourceAlpha) * imageFrame.data[index + channel],\n              );\n              imageFrame.data[index + channel] += value;\n            }\n          }\n        }\n        break;\n      default:\n        throw new Error('Unknown blendOp');\n    }\n  }\n  private decodeImage(): void {\n    if (this._inflator.err) {\n      throw new Error(\n        `Error while decompressing the data: ${this._inflator.err}`,\n      );\n    }\n\n    const data = this._isAnimated\n      ? (this._frames?.at(0) as ApngFrame).data\n      : this._inflator.result;\n\n    if (this._filterMethod !== FilterMethod.ADAPTIVE) {\n      throw new Error(`Filter method ${this._filterMethod} not supported`);\n    }\n\n    if (this._interlaceMethod === InterlaceMethod.NO_INTERLACE) {\n      this._png.data = decodeInterlaceNull({\n        data: data as Uint8Array,\n        width: this._png.width,\n        height: this._png.height,\n        channels: this._png.channels,\n        depth: this._png.depth,\n      });\n    } else if (this._interlaceMethod === InterlaceMethod.ADAM7) {\n      this._png.data = decodeInterlaceAdam7({\n        data: data as Uint8Array,\n        width: this._png.width,\n        height: this._png.height,\n        channels: this._png.channels,\n        depth: this._png.depth,\n      });\n    } else {\n      throw new Error(\n        `Interlace method ${this._interlaceMethod} not supported`,\n      );\n    }\n\n    if (this._hasPalette) {\n      this._png.palette = this._palette;\n    }\n    if (this._hasTransparency) {\n      this._png.transparency = this._transparency;\n    }\n  }\n\n  private pushDataToFrame() {\n    const result = this._inflator.result;\n    const lastFrame = this._frames.at(-1);\n    if (lastFrame) {\n      lastFrame.data = result as Uint8Array;\n    } else {\n      this._frames.push({\n        sequenceNumber: 0,\n        width: this._png.width,\n        height: this._png.height,\n        xOffset: 0,\n        yOffset: 0,\n        delayNumber: 0,\n        delayDenominator: 0,\n        disposeOp: DisposeOpType.NONE,\n        blendOp: BlendOpType.SOURCE,\n        data: result as Uint8Array,\n      });\n    }\n    this._inflator = new Inflator();\n    this._writingDataChunks = false;\n  }\n}\n\nfunction checkBitDepth(value: number): BitDepth {\n  if (\n    value !== 1 &&\n    value !== 2 &&\n    value !== 4 &&\n    value !== 8 &&\n    value !== 16\n  ) {\n    throw new Error(`invalid bit depth: ${value}`);\n  }\n  return value;\n}\n", "import type { IOBuffer } from 'iobuffer';\nimport type { DeflateFunctionOptions } from 'pako';\n\nexport type { DeflateFunctionOptions } from 'pako';\n\nexport type PngDataArray = Uint8Array | Uint8ClampedArray | Uint16Array;\n\nexport type DecoderInputType = IOBuffer | ArrayBufferLike | ArrayBufferView;\n\nexport type BitDepth = 1 | 2 | 4 | 8 | 16;\n\nexport type IndexedColorBitDepth = 1 | 2 | 4 | 8;\n\nexport interface PngResolution {\n  /**\n   * Pixels per unit, X axis\n   */\n  x: number;\n  /**\n   * Pixels per unit, Y axis\n   */\n  y: number;\n  /**\n   * Unit specifier\n   */\n  unit: ResolutionUnitSpecifier;\n}\n\nexport enum ResolutionUnitSpecifier {\n  /**\n   * Unit is unknown\n   */\n  UNKNOWN = 0,\n  /**\n   * Unit is the metre\n   */\n  METRE = 1,\n}\n\nexport interface ImageData {\n  width: number;\n  height: number;\n  data: PngDataArray;\n  depth?: BitDepth;\n  channels?: number;\n  text?: Record<string, string>;\n  palette?: IndexedColors;\n  transparency?: Uint16Array;\n}\n\nexport interface DecodedPng {\n  width: number;\n  height: number;\n  data: PngDataArray;\n  depth: BitDepth;\n  channels: number;\n  text: Record<string, string>;\n  resolution?: PngResolution;\n  palette?: IndexedColors;\n  transparency?: Uint16Array;\n  iccEmbeddedProfile?: IccEmbeddedProfile;\n}\n\nexport interface DecodedApng {\n  width: number;\n  height: number;\n  depth: BitDepth;\n  channels: number;\n  numberOfFrames: number;\n  numberOfPlays: number;\n  text: Record<string, string>;\n  resolution?: PngResolution;\n  palette?: IndexedColors;\n  transparency?: Uint16Array;\n  iccEmbeddedProfile?: IccEmbeddedProfile;\n  frames: DecodedApngFrame[];\n}\n\nexport interface ApngFrame {\n  sequenceNumber: number;\n  width: number;\n  height: number;\n  xOffset: number;\n  yOffset: number;\n  delayNumber: number;\n  delayDenominator: number;\n  disposeOp: number;\n  blendOp: number;\n  data: PngDataArray;\n}\n\nexport interface DecodedApngFrame {\n  sequenceNumber: number;\n  delayNumber: number;\n  delayDenominator: number;\n  data: PngDataArray;\n}\n\nexport interface PngDecoderOptions {\n  checkCrc?: boolean;\n}\n\nexport interface PngEncoderOptions {\n  interlace?: 'null' | 'Adam7';\n  zlib?: DeflateFunctionOptions;\n}\n\nexport type IndexedColors = number[][];\n\nexport interface IccEmbeddedProfile {\n  name: string;\n  profile: Uint8Array;\n}\n", "import PngDecoder from './PngDecoder';\nimport PngEncoder from './PngEncoder';\nimport type {\n  DecoderInputType,\n  PngDecoderOptions,\n  DecodedPng,\n  DecodedApng,\n  ImageData,\n  PngEncoderOptions,\n} from './types';\n\nexport { hasPngSignature } from './helpers/signature';\nexport * from './types';\n\nfunction decodePng(\n  data: DecoderInputType,\n  options?: PngDecoderOptions,\n): DecodedPng {\n  const decoder = new PngDecoder(data, options);\n  return decoder.decode();\n}\n\nfunction encodePng(png: ImageData, options?: PngEncoderOptions): Uint8Array {\n  const encoder = new PngEncoder(png, options);\n  return encoder.encode();\n}\n\nfunction decodeApng(\n  data: DecoderInputType,\n  options?: PngDecoderOptions,\n): DecodedApng {\n  const decoder = new PngDecoder(data, options);\n  return decoder.decodeApng();\n}\n\nexport { decodePng as decode, encodePng as encode, decodeApng };\n\nexport { convertIndexedToRgb } from './convertIndexedToRgb';\n", "export var globalObject = (function() {\n  return \"undefined\" !== typeof window\n    ? window\n    : \"undefined\" !== typeof global\n    ? global\n    : \"undefined\" !== typeof self\n    ? self\n    : this;\n})();\n", "import { globalObject } from \"./globalObject.js\";\n\nfunction consoleLog() {\n  if (globalObject.console && typeof globalObject.console.log === \"function\") {\n    globalObject.console.log.apply(globalObject.console, arguments);\n  }\n}\n\nfunction consoleWarn(str) {\n  if (globalObject.console) {\n    if (typeof globalObject.console.warn === \"function\") {\n      globalObject.console.warn.apply(globalObject.console, arguments);\n    } else {\n      consoleLog.call(null, arguments);\n    }\n  }\n}\n\nfunction consoleError(str) {\n  if (globalObject.console) {\n    if (typeof globalObject.console.error === \"function\") {\n      globalObject.console.error.apply(globalObject.console, arguments);\n    } else {\n      consoleLog(str);\n    }\n  }\n}\nexport var console = {\n  log: consoleLog,\n  warn: consoleWarn,\n  error: consoleError\n};\n", "/**\n * @license\n * FileSaver.js\n * A saveAs() FileSaver implementation.\n *\n * By Eli Grey, http://eligrey.com\n *\n * License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n * source  : http://purl.eligrey.com/github/FileSaver.js\n */\n\nimport { globalObject as _global } from \"./globalObject.js\";\nimport { console } from \"./console.js\";\n\nfunction bom(blob, opts) {\n  if (typeof opts === \"undefined\") opts = { autoBom: false };\n  else if (typeof opts !== \"object\") {\n    console.warn(\"Deprecated: Expected third argument to be a object\");\n    opts = { autoBom: !opts };\n  }\n\n  // prepend BOM for UTF-8 XML and text/* types (including HTML)\n  // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n  if (\n    opts.autoBom &&\n    /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(\n      blob.type\n    )\n  ) {\n    return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n  }\n  return blob;\n}\n\nfunction download(url, name, opts) {\n  var xhr = new XMLHttpRequest();\n  xhr.open(\"GET\", url);\n  xhr.responseType = \"blob\";\n  xhr.onload = function() {\n    saveAs(xhr.response, name, opts);\n  };\n  xhr.onerror = function() {\n    console.error(\"could not download file\");\n  };\n  xhr.send();\n}\n\nfunction corsEnabled(url) {\n  var xhr = new XMLHttpRequest();\n  // use sync to avoid popup blocker\n  xhr.open(\"HEAD\", url, false);\n  try {\n    xhr.send();\n  } catch (e) {}\n  return xhr.status >= 200 && xhr.status <= 299;\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n  try {\n    node.dispatchEvent(new MouseEvent(\"click\"));\n  } catch (e) {\n    var evt = document.createEvent(\"MouseEvents\");\n    evt.initMouseEvent(\n      \"click\",\n      true,\n      true,\n      window,\n      0,\n      0,\n      0,\n      80,\n      20,\n      false,\n      false,\n      false,\n      false,\n      0,\n      null\n    );\n    node.dispatchEvent(evt);\n  }\n}\n\nvar saveAs =\n  _global.saveAs ||\n  // probably in some web worker\n  (typeof window !== \"object\" || window !== _global\n    ? function saveAs() {\n        /* noop */\n      }\n    : // Use download attribute first if possible (#193 Lumia mobile) unless this is a native app\n    typeof HTMLAnchorElement !== \"undefined\" &&\n      \"download\" in HTMLAnchorElement.prototype\n    ? function saveAs(blob, name, opts) {\n        var URL = _global.URL || _global.webkitURL;\n        var a = document.createElement(\"a\");\n        name = name || blob.name || \"download\";\n\n        a.download = name;\n        a.rel = \"noopener\"; // tabnabbing\n\n        // TODO: detect chrome extensions & packaged apps\n        // a.target = '_blank'\n\n        if (typeof blob === \"string\") {\n          // Support regular links\n          a.href = blob;\n          if (a.origin !== location.origin) {\n            corsEnabled(a.href)\n              ? download(blob, name, opts)\n              : click(a, (a.target = \"_blank\"));\n          } else {\n            click(a);\n          }\n        } else {\n          // Support blobs\n          a.href = URL.createObjectURL(blob);\n          setTimeout(function() {\n            URL.revokeObjectURL(a.href);\n          }, 4e4); // 40s\n          setTimeout(function() {\n            click(a);\n          }, 0);\n        }\n      }\n    : // Use msSaveOrOpenBlob as a second approach\n    \"msSaveOrOpenBlob\" in navigator\n    ? function saveAs(blob, name, opts) {\n        name = name || blob.name || \"download\";\n\n        if (typeof blob === \"string\") {\n          if (corsEnabled(blob)) {\n            download(blob, name, opts);\n          } else {\n            var a = document.createElement(\"a\");\n            a.href = blob;\n            a.target = \"_blank\";\n            setTimeout(function() {\n              click(a);\n            });\n          }\n        } else {\n          navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n        }\n      }\n    : // Fallback to using FileReader and a popup\n      function saveAs(blob, name, opts, popup) {\n        // Open a popup immediately do go around popup blocker\n        // Mostly only available on user interaction and the fileReader is async so...\n        popup = popup || open(\"\", \"_blank\");\n        if (popup) {\n          popup.document.title = popup.document.body.innerText =\n            \"downloading...\";\n        }\n\n        if (typeof blob === \"string\") return download(blob, name, opts);\n\n        var force = blob.type === \"application/octet-stream\";\n        var isSafari =\n          /constructor/i.test(_global.HTMLElement) || _global.safari;\n        var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n\n        if (\n          (isChromeIOS || (force && isSafari)) &&\n          typeof FileReader === \"object\"\n        ) {\n          // Safari doesn't allow downloading of blob URLs\n          var reader = new FileReader();\n          reader.onloadend = function() {\n            var url = reader.result;\n            url = isChromeIOS\n              ? url\n              : url.replace(/^data:[^;]*;/, \"data:attachment/file;\");\n            if (popup) popup.location.href = url;\n            else location = url;\n            popup = null; // reverse-tabnabbing #460\n          };\n          reader.readAsDataURL(blob);\n        } else {\n          var URL = _global.URL || _global.webkitURL;\n          var url = URL.createObjectURL(blob);\n          if (popup) popup.location = url;\n          else location.href = url;\n          popup = null; // reverse-tabnabbing #460\n          setTimeout(function() {\n            URL.revokeObjectURL(url);\n          }, 4e4); // 40s\n        }\n      });\n\nexport { saveAs };\n", "/**\n * A class to parse color values\n * @author Stoyan Stefanov <sstoo@gmail.com>\n * {@link   http://www.phpied.com/rgb-color-parser-in-javascript/}\n * @license Use it if you like it\n */\n\nfunction RGBColor(color_string) {\n  color_string = color_string || \"\";\n  this.ok = false;\n\n  // strip any leading #\n  if (color_string.charAt(0) == \"#\") {\n    // remove # if any\n    color_string = color_string.substr(1, 6);\n  }\n\n  color_string = color_string.replace(/ /g, \"\");\n  color_string = color_string.toLowerCase();\n\n  var channels;\n\n  // before getting into regexps, try simple matches\n  // and overwrite the input\n  var simple_colors = {\n    aliceblue: \"f0f8ff\",\n    antiquewhite: \"faebd7\",\n    aqua: \"00ffff\",\n    aquamarine: \"7fffd4\",\n    azure: \"f0ffff\",\n    beige: \"f5f5dc\",\n    bisque: \"ffe4c4\",\n    black: \"000000\",\n    blanchedalmond: \"ffebcd\",\n    blue: \"0000ff\",\n    blueviolet: \"8a2be2\",\n    brown: \"a52a2a\",\n    burlywood: \"deb887\",\n    cadetblue: \"5f9ea0\",\n    chartreuse: \"7fff00\",\n    chocolate: \"d2691e\",\n    coral: \"ff7f50\",\n    cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\",\n    crimson: \"dc143c\",\n    cyan: \"00ffff\",\n    darkblue: \"00008b\",\n    darkcyan: \"008b8b\",\n    darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\",\n    darkgreen: \"006400\",\n    darkkhaki: \"bdb76b\",\n    darkmagenta: \"8b008b\",\n    darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\",\n    darkorchid: \"9932cc\",\n    darkred: \"8b0000\",\n    darksalmon: \"e9967a\",\n    darkseagreen: \"8fbc8f\",\n    darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\",\n    darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\",\n    deeppink: \"ff1493\",\n    deepskyblue: \"00bfff\",\n    dimgray: \"696969\",\n    dodgerblue: \"1e90ff\",\n    feldspar: \"d19275\",\n    firebrick: \"b22222\",\n    floralwhite: \"fffaf0\",\n    forestgreen: \"228b22\",\n    fuchsia: \"ff00ff\",\n    gainsboro: \"dcdcdc\",\n    ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\",\n    goldenrod: \"daa520\",\n    gray: \"808080\",\n    green: \"008000\",\n    greenyellow: \"adff2f\",\n    honeydew: \"f0fff0\",\n    hotpink: \"ff69b4\",\n    indianred: \"cd5c5c\",\n    indigo: \"4b0082\",\n    ivory: \"fffff0\",\n    khaki: \"f0e68c\",\n    lavender: \"e6e6fa\",\n    lavenderblush: \"fff0f5\",\n    lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\",\n    lightblue: \"add8e6\",\n    lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\",\n    lightgoldenrodyellow: \"fafad2\",\n    lightgrey: \"d3d3d3\",\n    lightgreen: \"90ee90\",\n    lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\",\n    lightseagreen: \"20b2aa\",\n    lightskyblue: \"87cefa\",\n    lightslateblue: \"8470ff\",\n    lightslategray: \"778899\",\n    lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\",\n    lime: \"00ff00\",\n    limegreen: \"32cd32\",\n    linen: \"faf0e6\",\n    magenta: \"ff00ff\",\n    maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\",\n    mediumblue: \"0000cd\",\n    mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370d8\",\n    mediumseagreen: \"3cb371\",\n    mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\",\n    mediumturquoise: \"48d1cc\",\n    mediumvioletred: \"c71585\",\n    midnightblue: \"191970\",\n    mintcream: \"f5fffa\",\n    mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\",\n    navajowhite: \"ffdead\",\n    navy: \"000080\",\n    oldlace: \"fdf5e6\",\n    olive: \"808000\",\n    olivedrab: \"6b8e23\",\n    orange: \"ffa500\",\n    orangered: \"ff4500\",\n    orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\",\n    palegreen: \"98fb98\",\n    paleturquoise: \"afeeee\",\n    palevioletred: \"d87093\",\n    papayawhip: \"ffefd5\",\n    peachpuff: \"ffdab9\",\n    peru: \"cd853f\",\n    pink: \"ffc0cb\",\n    plum: \"dda0dd\",\n    powderblue: \"b0e0e6\",\n    purple: \"800080\",\n    red: \"ff0000\",\n    rosybrown: \"bc8f8f\",\n    royalblue: \"4169e1\",\n    saddlebrown: \"8b4513\",\n    salmon: \"fa8072\",\n    sandybrown: \"f4a460\",\n    seagreen: \"2e8b57\",\n    seashell: \"fff5ee\",\n    sienna: \"a0522d\",\n    silver: \"c0c0c0\",\n    skyblue: \"87ceeb\",\n    slateblue: \"6a5acd\",\n    slategray: \"708090\",\n    snow: \"fffafa\",\n    springgreen: \"00ff7f\",\n    steelblue: \"4682b4\",\n    tan: \"d2b48c\",\n    teal: \"008080\",\n    thistle: \"d8bfd8\",\n    tomato: \"ff6347\",\n    turquoise: \"40e0d0\",\n    violet: \"ee82ee\",\n    violetred: \"d02090\",\n    wheat: \"f5deb3\",\n    white: \"ffffff\",\n    whitesmoke: \"f5f5f5\",\n    yellow: \"ffff00\",\n    yellowgreen: \"9acd32\"\n  };\n  color_string = simple_colors[color_string] || color_string;\n\n  // array of color definition objects\n  var color_defs = [\n    {\n      re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n      example: [\"rgb(123, 234, 45)\", \"rgb(255,234,245)\"],\n      process: function(bits) {\n        return [parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3])];\n      }\n    },\n    {\n      re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n      example: [\"#00ff00\", \"336699\"],\n      process: function(bits) {\n        return [\n          parseInt(bits[1], 16),\n          parseInt(bits[2], 16),\n          parseInt(bits[3], 16)\n        ];\n      }\n    },\n    {\n      re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n      example: [\"#fb0\", \"f0f\"],\n      process: function(bits) {\n        return [\n          parseInt(bits[1] + bits[1], 16),\n          parseInt(bits[2] + bits[2], 16),\n          parseInt(bits[3] + bits[3], 16)\n        ];\n      }\n    }\n  ];\n\n  // search through the definitions to find a match\n  for (var i = 0; i < color_defs.length; i++) {\n    var re = color_defs[i].re;\n    var processor = color_defs[i].process;\n    var bits = re.exec(color_string);\n    if (bits) {\n      channels = processor(bits);\n      this.r = channels[0];\n      this.g = channels[1];\n      this.b = channels[2];\n      this.ok = true;\n    }\n  }\n\n  // validate/cleanup values\n  this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r;\n  this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g;\n  this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b;\n\n  // some getters\n  this.toRGB = function() {\n    return \"rgb(\" + this.r + \", \" + this.g + \", \" + this.b + \")\";\n  };\n  this.toHex = function() {\n    var r = this.r.toString(16);\n    var g = this.g.toString(16);\n    var b = this.b.toString(16);\n    if (r.length == 1) r = \"0\" + r;\n    if (g.length == 1) g = \"0\" + g;\n    if (b.length == 1) b = \"0\" + b;\n    return \"#\" + r + g + b;\n  };\n}\n\nexport { RGBColor };\n", "import { globalObject } from \"./globalObject.js\";\r\n\r\nconst atob = globalObject.atob.bind(globalObject);\r\nconst btoa = globalObject.btoa.bind(globalObject);\r\n\r\nexport { atob, btoa };\r\n", "/**\n * @license\n * Joseph Myers does not specify a particular license for his work.\n *\n * Author: Joseph Myers\n * Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js\n *\n * Modified by: Owen Leong\n */\n\nfunction md5cycle(x, k) {\n  var a = x[0],\n    b = x[1],\n    c = x[2],\n    d = x[3];\n\n  a = ff(a, b, c, d, k[0], 7, -680876936);\n  d = ff(d, a, b, c, k[1], 12, -389564586);\n  c = ff(c, d, a, b, k[2], 17, 606105819);\n  b = ff(b, c, d, a, k[3], 22, -1044525330);\n  a = ff(a, b, c, d, k[4], 7, -176418897);\n  d = ff(d, a, b, c, k[5], 12, 1200080426);\n  c = ff(c, d, a, b, k[6], 17, -1473231341);\n  b = ff(b, c, d, a, k[7], 22, -45705983);\n  a = ff(a, b, c, d, k[8], 7, 1770035416);\n  d = ff(d, a, b, c, k[9], 12, -1958414417);\n  c = ff(c, d, a, b, k[10], 17, -42063);\n  b = ff(b, c, d, a, k[11], 22, -1990404162);\n  a = ff(a, b, c, d, k[12], 7, 1804603682);\n  d = ff(d, a, b, c, k[13], 12, -40341101);\n  c = ff(c, d, a, b, k[14], 17, -1502002290);\n  b = ff(b, c, d, a, k[15], 22, 1236535329);\n\n  a = gg(a, b, c, d, k[1], 5, -165796510);\n  d = gg(d, a, b, c, k[6], 9, -1069501632);\n  c = gg(c, d, a, b, k[11], 14, 643717713);\n  b = gg(b, c, d, a, k[0], 20, -373897302);\n  a = gg(a, b, c, d, k[5], 5, -701558691);\n  d = gg(d, a, b, c, k[10], 9, 38016083);\n  c = gg(c, d, a, b, k[15], 14, -660478335);\n  b = gg(b, c, d, a, k[4], 20, -405537848);\n  a = gg(a, b, c, d, k[9], 5, 568446438);\n  d = gg(d, a, b, c, k[14], 9, -1019803690);\n  c = gg(c, d, a, b, k[3], 14, -187363961);\n  b = gg(b, c, d, a, k[8], 20, 1163531501);\n  a = gg(a, b, c, d, k[13], 5, -1444681467);\n  d = gg(d, a, b, c, k[2], 9, -51403784);\n  c = gg(c, d, a, b, k[7], 14, 1735328473);\n  b = gg(b, c, d, a, k[12], 20, -1926607734);\n\n  a = hh(a, b, c, d, k[5], 4, -378558);\n  d = hh(d, a, b, c, k[8], 11, -2022574463);\n  c = hh(c, d, a, b, k[11], 16, 1839030562);\n  b = hh(b, c, d, a, k[14], 23, -35309556);\n  a = hh(a, b, c, d, k[1], 4, -1530992060);\n  d = hh(d, a, b, c, k[4], 11, 1272893353);\n  c = hh(c, d, a, b, k[7], 16, -155497632);\n  b = hh(b, c, d, a, k[10], 23, -1094730640);\n  a = hh(a, b, c, d, k[13], 4, 681279174);\n  d = hh(d, a, b, c, k[0], 11, -358537222);\n  c = hh(c, d, a, b, k[3], 16, -722521979);\n  b = hh(b, c, d, a, k[6], 23, 76029189);\n  a = hh(a, b, c, d, k[9], 4, -640364487);\n  d = hh(d, a, b, c, k[12], 11, -421815835);\n  c = hh(c, d, a, b, k[15], 16, 530742520);\n  b = hh(b, c, d, a, k[2], 23, -995338651);\n\n  a = ii(a, b, c, d, k[0], 6, -198630844);\n  d = ii(d, a, b, c, k[7], 10, 1126891415);\n  c = ii(c, d, a, b, k[14], 15, -1416354905);\n  b = ii(b, c, d, a, k[5], 21, -57434055);\n  a = ii(a, b, c, d, k[12], 6, 1700485571);\n  d = ii(d, a, b, c, k[3], 10, -1894986606);\n  c = ii(c, d, a, b, k[10], 15, -1051523);\n  b = ii(b, c, d, a, k[1], 21, -2054922799);\n  a = ii(a, b, c, d, k[8], 6, 1873313359);\n  d = ii(d, a, b, c, k[15], 10, -30611744);\n  c = ii(c, d, a, b, k[6], 15, -1560198380);\n  b = ii(b, c, d, a, k[13], 21, 1309151649);\n  a = ii(a, b, c, d, k[4], 6, -145523070);\n  d = ii(d, a, b, c, k[11], 10, -1120210379);\n  c = ii(c, d, a, b, k[2], 15, 718787259);\n  b = ii(b, c, d, a, k[9], 21, -343485551);\n\n  x[0] = add32(a, x[0]);\n  x[1] = add32(b, x[1]);\n  x[2] = add32(c, x[2]);\n  x[3] = add32(d, x[3]);\n}\n\nfunction cmn(q, a, b, x, s, t) {\n  a = add32(add32(a, q), add32(x, t));\n  return add32((a << s) | (a >>> (32 - s)), b);\n}\n\nfunction ff(a, b, c, d, x, s, t) {\n  return cmn((b & c) | (~b & d), a, b, x, s, t);\n}\n\nfunction gg(a, b, c, d, x, s, t) {\n  return cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\n\nfunction hh(a, b, c, d, x, s, t) {\n  return cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction ii(a, b, c, d, x, s, t) {\n  return cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nfunction md51(s) {\n  // txt = '';\n  var n = s.length,\n    state = [1732584193, -271733879, -1732584194, 271733878],\n    i;\n  for (i = 64; i <= s.length; i += 64) {\n    md5cycle(state, md5blk(s.substring(i - 64, i)));\n  }\n  s = s.substring(i - 64);\n  var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n  for (i = 0; i < s.length; i++)\n    tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n  tail[i >> 2] |= 0x80 << (i % 4 << 3);\n  if (i > 55) {\n    md5cycle(state, tail);\n    for (i = 0; i < 16; i++) tail[i] = 0;\n  }\n  tail[14] = n * 8;\n  md5cycle(state, tail);\n  return state;\n}\n\n/* there needs to be support for Unicode here,\n * unless we pretend that we can redefine the MD-5\n * algorithm for multi-byte characters (perhaps\n * by adding every four 16-bit characters and\n * shortening the sum to 32 bits). Otherwise\n * I suggest performing MD-5 as if every character\n * was two bytes--e.g., 0040 0025 = @%--but then\n * how will an ordinary MD-5 sum be matched?\n * There is no way to standardize text to something\n * like UTF-8 before transformation; speed cost is\n * utterly prohibitive. The JavaScript standard\n * itself needs to look at this: it should start\n * providing access to strings as preformed UTF-8\n * 8-bit unsigned value arrays.\n */\nfunction md5blk(s) {\n  /* I figured global was faster.   */\n  var md5blks = [],\n    i; /* Andy King said do it this way. */\n  for (i = 0; i < 64; i += 4) {\n    md5blks[i >> 2] =\n      s.charCodeAt(i) +\n      (s.charCodeAt(i + 1) << 8) +\n      (s.charCodeAt(i + 2) << 16) +\n      (s.charCodeAt(i + 3) << 24);\n  }\n  return md5blks;\n}\n\nvar hex_chr = \"0123456789abcdef\".split(\"\");\n\nfunction rhex(n) {\n  var s = \"\",\n    j = 0;\n  for (; j < 4; j++)\n    s += hex_chr[(n >> (j * 8 + 4)) & 0x0f] + hex_chr[(n >> (j * 8)) & 0x0f];\n  return s;\n}\n\nfunction hex(x) {\n  for (var i = 0; i < x.length; i++) x[i] = rhex(x[i]);\n  return x.join(\"\");\n}\n\n// Converts a 4-byte number to byte string\nfunction singleToByteString(n) {\n  return String.fromCharCode(\n    (n & 0xff) >> 0,\n    (n & 0xff00) >> 8,\n    (n & 0xff0000) >> 16,\n    (n & 0xff000000) >> 24\n  );\n}\n\n// Converts an array of numbers to a byte string\nfunction toByteString(x) {\n  return x.map(singleToByteString).join(\"\");\n}\n\n// Returns the MD5 hash as a byte string\nfunction md5Bin(s) {\n  return toByteString(md51(s));\n}\n\n// Returns MD5 hash as a hex string\nfunction md5(s) {\n  return hex(md51(s));\n}\n\nvar md5Check = md5(\"hello\") != \"5d41402abc4b2a76b9719d911017c592\";\n\nfunction add32(a, b) {\n  if (md5Check) {\n    /* if the md5Check does not match\n     the expected value, we're dealing\n     with an old browser and need\n     this function. */\n    var lsw = (a & 0xffff) + (b & 0xffff),\n      msw = (a >> 16) + (b >> 16) + (lsw >> 16);\n    return (msw << 16) | (lsw & 0xffff);\n  } else {\n    /* this function is much faster,\n    so if possible we use it. Some IEs\n    are the only ones I know of that\n    need the idiotic second function,\n    generated by an if clause.  */\n    return (a + b) & 0xffffffff;\n  }\n}\n\nexport { md5, md5Bin };\n", "/**\r\n * @license\r\n * FPDF is released under a permissive license: there is no usage restriction.\r\n * You may embed it freely in your application (commercial or not), with or\r\n * without modifications.\r\n *\r\n * Reference: http://www.fpdf.org/en/script/script37.php\r\n */\r\n\r\nfunction repeat(str, num) {\r\n  return new Array(num + 1).join(str);\r\n}\r\n\r\n/**\r\n * Converts a byte string to a hex string\r\n *\r\n * @name rc4\r\n * @function\r\n * @param {string} key Byte string of encryption key\r\n * @param {string} data Byte string of data to be encrypted\r\n * @returns {string} Encrypted string\r\n */\r\nfunction rc4(key, data) {\r\n  var lastKey, lastState;\r\n  if (key !== lastKey) {\r\n    var k = repeat(key, ((256 / key.length) >> 0) + 1);\r\n    var state = [];\r\n    for (var i = 0; i < 256; i++) {\r\n      state[i] = i;\r\n    }\r\n    var j = 0;\r\n    for (var i = 0; i < 256; i++) {\r\n      var t = state[i];\r\n      j = (j + t + k.charCodeAt(i)) % 256;\r\n      state[i] = state[j];\r\n      state[j] = t;\r\n    }\r\n    lastKey = key;\r\n    lastState = state;\r\n  } else {\r\n    state = lastState;\r\n  }\r\n  var length = data.length;\r\n  var a = 0;\r\n  var b = 0;\r\n  var out = \"\";\r\n  for (var i = 0; i < length; i++) {\r\n    a = (a + 1) % 256;\r\n    t = state[a];\r\n    b = (b + t) % 256;\r\n    state[a] = state[b];\r\n    state[b] = t;\r\n    k = state[(state[a] + state[b]) % 256];\r\n    out += String.fromCharCode(data.charCodeAt(i) ^ k);\r\n  }\r\n  return out;\r\n}\r\n\r\nexport { rc4 };\r\n", "/**\r\n * @license\r\n * Licensed under the MIT License.\r\n * http://opensource.org/licenses/mit-license\r\n * Author: Owen Leong (@owenl131)\r\n * Date: 15 Oct 2020\r\n * References:\r\n * https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt\r\n * https://github.com/foliojs/pdfkit/blob/master/lib/security.js\r\n * http://www.fpdf.org/en/script/script37.php\r\n */\r\n\r\nimport { md5Bin } from \"./md5.js\";\r\nimport { rc4 } from \"./rc4.js\";\r\n\r\nvar permissionOptions = {\r\n  print: 4,\r\n  modify: 8,\r\n  copy: 16,\r\n  \"annot-forms\": 32\r\n};\r\n\r\n/**\r\n * Initializes encryption settings\r\n *\r\n * @name constructor\r\n * @function\r\n * @param {Array} permissions Permissions allowed for user, \"print\", \"modify\", \"copy\" and \"annot-forms\".\r\n * @param {String} userPassword Permissions apply to this user. Leaving this empty means the document\r\n *                              is not password protected but viewer has the above permissions.\r\n * @param {String} ownerPassword Owner has full functionalities to the file.\r\n * @param {String} fileId As hex string, should be same as the file ID in the trailer.\r\n * @example\r\n * var security = new PDFSecurity([\"print\"])\r\n */\r\nfunction PDFSecurity(permissions, userPassword, ownerPassword, fileId) {\r\n  this.v = 1; // algorithm 1, future work can add in more recent encryption schemes\r\n  this.r = 2; // revision 2\r\n\r\n  // set flags for what functionalities the user can access\r\n  let protection = 192;\r\n  permissions.forEach(function(perm) {\r\n    if (typeof permissionOptions.perm !== \"undefined\") {\r\n      throw new Error(\"Invalid permission: \" + perm);\r\n    }\r\n    protection += permissionOptions[perm];\r\n  });\r\n\r\n  // padding is used to pad the passwords to 32 bytes, also is hashed and stored in the final PDF\r\n  this.padding =\r\n    \"\\x28\\xBF\\x4E\\x5E\\x4E\\x75\\x8A\\x41\\x64\\x00\\x4E\\x56\\xFF\\xFA\\x01\\x08\" +\r\n    \"\\x2E\\x2E\\x00\\xB6\\xD0\\x68\\x3E\\x80\\x2F\\x0C\\xA9\\xFE\\x64\\x53\\x69\\x7A\";\r\n  let paddedUserPassword = (userPassword + this.padding).substr(0, 32);\r\n  let paddedOwnerPassword = (ownerPassword + this.padding).substr(0, 32);\r\n\r\n  this.O = this.processOwnerPassword(paddedUserPassword, paddedOwnerPassword);\r\n  this.P = -((protection ^ 255) + 1);\r\n  this.encryptionKey = md5Bin(\r\n    paddedUserPassword +\r\n      this.O +\r\n      this.lsbFirstWord(this.P) +\r\n      this.hexToBytes(fileId)\r\n  ).substr(0, 5);\r\n  this.U = rc4(this.encryptionKey, this.padding);\r\n}\r\n\r\n/**\r\n * Breaks down a 4-byte number into its individual bytes, with the least significant bit first\r\n *\r\n * @name lsbFirstWord\r\n * @function\r\n * @param {number} data 32-bit number\r\n * @returns {Array}\r\n */\r\nPDFSecurity.prototype.lsbFirstWord = function(data) {\r\n  return String.fromCharCode(\r\n    (data >> 0) & 0xff,\r\n    (data >> 8) & 0xff,\r\n    (data >> 16) & 0xff,\r\n    (data >> 24) & 0xff\r\n  );\r\n};\r\n\r\n/**\r\n * Converts a byte string to a hex string\r\n *\r\n * @name toHexString\r\n * @function\r\n * @param {String} byteString Byte string\r\n * @returns {String}\r\n */\r\nPDFSecurity.prototype.toHexString = function(byteString) {\r\n  return byteString\r\n    .split(\"\")\r\n    .map(function(byte) {\r\n      return (\"0\" + (byte.charCodeAt(0) & 0xff).toString(16)).slice(-2);\r\n    })\r\n    .join(\"\");\r\n};\r\n\r\n/**\r\n * Converts a hex string to a byte string\r\n *\r\n * @name hexToBytes\r\n * @function\r\n * @param {String} hex Hex string\r\n * @returns {String}\r\n */\r\nPDFSecurity.prototype.hexToBytes = function(hex) {\r\n  for (var bytes = [], c = 0; c < hex.length; c += 2)\r\n    bytes.push(String.fromCharCode(parseInt(hex.substr(c, 2), 16)));\r\n  return bytes.join(\"\");\r\n};\r\n\r\n/**\r\n * Computes the 'O' field in the encryption dictionary\r\n *\r\n * @name processOwnerPassword\r\n * @function\r\n * @param {String} paddedUserPassword Byte string of padded user password\r\n * @param {String} paddedOwnerPassword Byte string of padded owner password\r\n * @returns {String}\r\n */\r\nPDFSecurity.prototype.processOwnerPassword = function(\r\n  paddedUserPassword,\r\n  paddedOwnerPassword\r\n) {\r\n  let key = md5Bin(paddedOwnerPassword).substr(0, 5);\r\n  return rc4(key, paddedUserPassword);\r\n};\r\n\r\n/**\r\n * Returns an encryptor function which can take in a byte string and returns the encrypted version\r\n *\r\n * @name encryptor\r\n * @function\r\n * @param {number} objectId\r\n * @param {number} generation Not sure what this is for, you can set it to 0\r\n * @returns {Function}\r\n * @example\r\n * out(\"stream\");\r\n * encryptor = security.encryptor(object.id, 0);\r\n * out(encryptor(data));\r\n * out(\"endstream\");\r\n */\r\nPDFSecurity.prototype.encryptor = function(objectId, generation) {\r\n  let key = md5Bin(\r\n    this.encryptionKey +\r\n      String.fromCharCode(\r\n        objectId & 0xff,\r\n        (objectId >> 8) & 0xff,\r\n        (objectId >> 16) & 0xff,\r\n        generation & 0xff,\r\n        (generation >> 8) & 0xff\r\n      )\r\n  ).substr(0, 10);\r\n  return function(data) {\r\n    return rc4(key, data);\r\n  };\r\n};\r\n\r\nexport { PDFSecurity };\r\n", "/**\n * Convert string to `PDF Name Object`.\n * Detail: PDF Reference 1.3 - Chapter 3.2.4 Name Object\n * @param str\n */\nfunction toPDFName(str) {\n  // eslint-disable-next-line no-control-regex\n  if (/[^\\u0000-\\u00ff]/.test(str)) {\n    // non ascii string\n    throw new Error(\n      \"Invalid PDF Name Object: \" + str + \", Only accept ASCII characters.\"\n    );\n  }\n  var result = \"\",\n    strLength = str.length;\n  for (var i = 0; i < strLength; i++) {\n    var charCode = str.charCodeAt(i);\n    if (\n      charCode < 0x21 ||\n      charCode === 0x23 /* # */ ||\n      charCode === 0x25 /* % */ ||\n      charCode === 0x28 /* ( */ ||\n      charCode === 0x29 /* ) */ ||\n      charCode === 0x2f /* / */ ||\n      charCode === 0x3c /* < */ ||\n      charCode === 0x3e /* > */ ||\n      charCode === 0x5b /* [ */ ||\n      charCode === 0x5d /* ] */ ||\n      charCode === 0x7b /* { */ ||\n      charCode === 0x7d /* } */ ||\n      charCode > 0x7e\n    ) {\n      // Char    CharCode    hexStr   paddingHexStr    Result\n      // \"\\t\"    9           9        09               #09\n      // \" \"     32          20       20               #20\n      // \"©\"     169         a9       a9               #a9\n      var hexStr = charCode.toString(16),\n        paddingHexStr = (\"0\" + hexStr).slice(-2);\n\n      result += \"#\" + paddingHexStr;\n    } else {\n      // Other ASCII printable characters between 0x21 <= X <= 0x7e\n      result += str[i];\n    }\n  }\n  return result;\n}\n\nexport { toPDFName };\n", "/* eslint-disable no-console */\n\nimport { saveAs } from \"./libs/FileSaver.js\";\nimport { globalObject } from \"./libs/globalObject.js\";\nimport { RGBColor } from \"./libs/rgbcolor.js\";\nimport { btoa } from \"./libs/AtobBtoa.js\";\nimport { console } from \"./libs/console.js\";\nimport { PDFSecurity } from \"./libs/pdfsecurity.js\";\nimport { toPDFName } from \"./libs/pdfname.js\";\n/**\n * jsPDF's Internal PubSub Implementation.\n * Backward compatible rewritten on 2014 by\n * Diego Casorran, https://github.com/diegocr\n *\n * @class\n * @name PubSub\n * @ignore\n */\nfunction PubSub(context) {\n  if (typeof context !== \"object\") {\n    throw new Error(\n      \"Invalid Context passed to initialize PubSub (jsPDF-module)\"\n    );\n  }\n  var topics = {};\n\n  this.subscribe = function(topic, callback, once) {\n    once = once || false;\n    if (\n      typeof topic !== \"string\" ||\n      typeof callback !== \"function\" ||\n      typeof once !== \"boolean\"\n    ) {\n      throw new Error(\n        \"Invalid arguments passed to PubSub.subscribe (jsPDF-module)\"\n      );\n    }\n\n    if (!topics.hasOwnProperty(topic)) {\n      topics[topic] = {};\n    }\n\n    var token = Math.random().toString(35);\n    topics[topic][token] = [callback, !!once];\n\n    return token;\n  };\n\n  this.unsubscribe = function(token) {\n    for (var topic in topics) {\n      if (topics[topic][token]) {\n        delete topics[topic][token];\n        if (Object.keys(topics[topic]).length === 0) {\n          delete topics[topic];\n        }\n        return true;\n      }\n    }\n    return false;\n  };\n\n  this.publish = function(topic) {\n    if (topics.hasOwnProperty(topic)) {\n      var args = Array.prototype.slice.call(arguments, 1),\n        tokens = [];\n\n      for (var token in topics[topic]) {\n        var sub = topics[topic][token];\n        try {\n          sub[0].apply(context, args);\n        } catch (ex) {\n          if (globalObject.console) {\n            console.error(\"jsPDF PubSub Error\", ex.message, ex);\n          }\n        }\n        if (sub[1]) tokens.push(token);\n      }\n      if (tokens.length) tokens.forEach(this.unsubscribe);\n    }\n  };\n\n  this.getTopics = function() {\n    return topics;\n  };\n}\n\nfunction GState(parameters) {\n  if (!(this instanceof GState)) {\n    return new GState(parameters);\n  }\n\n  /**\n   * @name GState#opacity\n   * @type {any}\n   */\n  /**\n   * @name GState#stroke-opacity\n   * @type {any}\n   */\n  var supported = \"opacity,stroke-opacity\".split(\",\");\n  for (var p in parameters) {\n    if (parameters.hasOwnProperty(p) && supported.indexOf(p) >= 0) {\n      this[p] = parameters[p];\n    }\n  }\n  /**\n   * @name GState#id\n   * @type {string}\n   */\n  this.id = \"\"; // set by addGState()\n  /**\n   * @name GState#objectNumber\n   * @type {number}\n   */\n  this.objectNumber = -1; // will be set by putGState()\n}\n\nGState.prototype.equals = function equals(other) {\n  var ignore = \"id,objectNumber,equals\";\n  var p;\n  if (!other || typeof other !== typeof this) return false;\n  var count = 0;\n  for (p in this) {\n    if (ignore.indexOf(p) >= 0) continue;\n    if (this.hasOwnProperty(p) && !other.hasOwnProperty(p)) return false;\n    if (this[p] !== other[p]) return false;\n    count++;\n  }\n  for (p in other) {\n    if (other.hasOwnProperty(p) && ignore.indexOf(p) < 0) count--;\n  }\n  return count === 0;\n};\n\nfunction Pattern(gState, matrix) {\n  this.gState = gState;\n  this.matrix = matrix;\n\n  this.id = \"\"; // set by addPattern()\n  this.objectNumber = -1; // will be set by putPattern()\n}\n\nfunction ShadingPattern(type, coords, colors, gState, matrix) {\n  if (!(this instanceof ShadingPattern)) {\n    return new ShadingPattern(type, coords, colors, gState, matrix);\n  }\n\n  // see putPattern() for information how they are realized\n  this.type = type === \"axial\" ? 2 : 3;\n  this.coords = coords;\n  this.colors = colors;\n\n  Pattern.call(this, gState, matrix);\n}\n\nfunction TilingPattern(boundingBox, xStep, yStep, gState, matrix) {\n  if (!(this instanceof TilingPattern)) {\n    return new TilingPattern(boundingBox, xStep, yStep, gState, matrix);\n  }\n\n  this.boundingBox = boundingBox;\n  this.xStep = xStep;\n  this.yStep = yStep;\n\n  this.stream = \"\"; // set by endTilingPattern();\n\n  this.cloneIndex = 0;\n\n  Pattern.call(this, gState, matrix);\n}\n\n/**\n * Creates new jsPDF document object instance.\n * @name jsPDF\n * @class\n * @param {Object} [options] - Collection of settings initializing the jsPDF-instance\n * @param {string} [options.orientation=portrait] - Orientation of the first page. Possible values are \"portrait\" or \"landscape\" (or shortcuts \"p\" or \"l\").<br />\n * @param {string} [options.unit=mm] Measurement unit (base unit) to be used when coordinates are specified.<br />\n * Possible values are \"pt\" (points), \"mm\", \"cm\", \"in\", \"px\", \"pc\", \"em\" or \"ex\". Note that in order to get the correct scaling for \"px\"\n * units, you need to enable the hotfix \"px_scaling\" by setting options.hotfixes = [\"px_scaling\"].\n * @param {string/Array} [options.format=a4] The format of the first page. Can be:<ul><li>a0 - a10</li><li>b0 - b10</li><li>c0 - c10</li><li>dl</li><li>letter</li><li>government-letter</li><li>legal</li><li>junior-legal</li><li>ledger</li><li>tabloid</li><li>credit-card</li></ul><br />\n * Default is \"a4\". If you want to use your own format just pass instead of one of the above predefined formats the size as an number-array, e.g. [595.28, 841.89]\n * @param {boolean} [options.putOnlyUsedFonts=false] Only put fonts into the PDF, which were used.\n * @param {boolean} [options.compress=false] Compress the generated PDF.\n * @param {number} [options.precision=16] Precision of the element-positions.\n * @param {number} [options.userUnit=1.0] Not to be confused with the base unit. Please inform yourself before you use it.\n * @param {string[]} [options.hotfixes] An array of strings to enable hotfixes such as correct pixel scaling.\n * @param {Object} [options.encryption]\n * @param {string} [options.encryption.userPassword] Password for the user bound by the given permissions list.\n * @param {string} [options.encryption.ownerPassword] Both userPassword and ownerPassword should be set for proper authentication.\n * @param {string[]} [options.encryption.userPermissions] Array of permissions \"print\", \"modify\", \"copy\", \"annot-forms\", accessible by the user.\n * @param {number|\"smart\"} [options.floatPrecision=16]\n * @returns {jsPDF} jsPDF-instance\n * @description\n * ```\n * {\n *  orientation: 'p',\n *  unit: 'mm',\n *  format: 'a4',\n *  putOnlyUsedFonts:true,\n *  floatPrecision: 16 // or \"smart\", default is 16\n * }\n * ```\n *\n * @constructor\n */\nfunction jsPDF(options) {\n  var orientation = typeof arguments[0] === \"string\" ? arguments[0] : \"p\";\n  var unit = arguments[1];\n  var format = arguments[2];\n  var compressPdf = arguments[3];\n  var filters = [];\n  var userUnit = 1.0;\n  var precision;\n  var floatPrecision = 16;\n  var defaultPathOperation = \"S\";\n  var encryptionOptions = null;\n\n  options = options || {};\n\n  if (typeof options === \"object\") {\n    orientation = options.orientation;\n    unit = options.unit || unit;\n    format = options.format || format;\n    compressPdf = options.compress || options.compressPdf || compressPdf;\n    encryptionOptions = options.encryption || null;\n    if (encryptionOptions !== null) {\n      encryptionOptions.userPassword = encryptionOptions.userPassword || \"\";\n      encryptionOptions.ownerPassword = encryptionOptions.ownerPassword || \"\";\n      encryptionOptions.userPermissions =\n        encryptionOptions.userPermissions || [];\n    }\n    userUnit =\n      typeof options.userUnit === \"number\" ? Math.abs(options.userUnit) : 1.0;\n    if (typeof options.precision !== \"undefined\") {\n      precision = options.precision;\n    }\n    if (typeof options.floatPrecision !== \"undefined\") {\n      floatPrecision = options.floatPrecision;\n    }\n    defaultPathOperation = options.defaultPathOperation || \"S\";\n  }\n\n  filters =\n    options.filters || (compressPdf === true ? [\"FlateEncode\"] : filters);\n\n  unit = unit || \"mm\";\n  orientation = (\"\" + (orientation || \"P\")).toLowerCase();\n  var putOnlyUsedFonts = options.putOnlyUsedFonts || false;\n  var usedFonts = {};\n\n  var API = {\n    internal: {},\n    __private__: {}\n  };\n\n  API.__private__.PubSub = PubSub;\n\n  var pdfVersion = \"1.3\";\n  var getPdfVersion = (API.__private__.getPdfVersion = function() {\n    return pdfVersion;\n  });\n\n  API.__private__.setPdfVersion = function(value) {\n    pdfVersion = value;\n  };\n\n  // Size in pt of various paper formats\n  var pageFormats = {\n    a0: [2383.94, 3370.39],\n    a1: [1683.78, 2383.94],\n    a2: [1190.55, 1683.78],\n    a3: [841.89, 1190.55],\n    a4: [595.28, 841.89],\n    a5: [419.53, 595.28],\n    a6: [297.64, 419.53],\n    a7: [209.76, 297.64],\n    a8: [147.4, 209.76],\n    a9: [104.88, 147.4],\n    a10: [73.7, 104.88],\n    b0: [2834.65, 4008.19],\n    b1: [2004.09, 2834.65],\n    b2: [1417.32, 2004.09],\n    b3: [1000.63, 1417.32],\n    b4: [708.66, 1000.63],\n    b5: [498.9, 708.66],\n    b6: [354.33, 498.9],\n    b7: [249.45, 354.33],\n    b8: [175.75, 249.45],\n    b9: [124.72, 175.75],\n    b10: [87.87, 124.72],\n    c0: [2599.37, 3676.54],\n    c1: [1836.85, 2599.37],\n    c2: [1298.27, 1836.85],\n    c3: [918.43, 1298.27],\n    c4: [649.13, 918.43],\n    c5: [459.21, 649.13],\n    c6: [323.15, 459.21],\n    c7: [229.61, 323.15],\n    c8: [161.57, 229.61],\n    c9: [113.39, 161.57],\n    c10: [79.37, 113.39],\n    dl: [311.81, 623.62],\n    letter: [612, 792],\n    \"government-letter\": [576, 756],\n    legal: [612, 1008],\n    \"junior-legal\": [576, 360],\n    ledger: [1224, 792],\n    tabloid: [792, 1224],\n    \"credit-card\": [153, 243]\n  };\n\n  API.__private__.getPageFormats = function() {\n    return pageFormats;\n  };\n\n  var getPageFormat = (API.__private__.getPageFormat = function(value) {\n    return pageFormats[value];\n  });\n\n  format = format || \"a4\";\n\n  var ApiMode = {\n    COMPAT: \"compat\",\n    ADVANCED: \"advanced\"\n  };\n  var apiMode = ApiMode.COMPAT;\n\n  function advancedAPI() {\n    // prepend global change of basis matrix\n    // (Now, instead of converting every coordinate to the pdf coordinate system, we apply a matrix\n    // that does this job for us (however, texts, images and similar objects must be drawn bottom up))\n    this.saveGraphicsState();\n    out(\n      new Matrix(\n        scaleFactor,\n        0,\n        0,\n        -scaleFactor,\n        0,\n        getPageHeight() * scaleFactor\n      ).toString() + \" cm\"\n    );\n    this.setFontSize(this.getFontSize() / scaleFactor);\n\n    // The default in MrRio's implementation is \"S\" (stroke), whereas the default in the yWorks implementation\n    // was \"n\" (none). Although this has nothing to do with transforms, we should use the API switch here.\n    defaultPathOperation = \"n\";\n\n    apiMode = ApiMode.ADVANCED;\n  }\n\n  function compatAPI() {\n    this.restoreGraphicsState();\n    defaultPathOperation = \"S\";\n    apiMode = ApiMode.COMPAT;\n  }\n\n  /**\n   * @function combineFontStyleAndFontWeight\n   * @param {string} fontStyle Fontstyle or variant. Example: \"italic\".\n   * @param {number | string} fontWeight Weight of the Font. Example: \"normal\" | 400\n   * @returns {string}\n   * @private\n   */\n  var combineFontStyleAndFontWeight = (API.__private__.combineFontStyleAndFontWeight = function(\n    fontStyle,\n    fontWeight\n  ) {\n    if (\n      (fontStyle == \"bold\" && fontWeight == \"normal\") ||\n      (fontStyle == \"bold\" && fontWeight == 400) ||\n      (fontStyle == \"normal\" && fontWeight == \"italic\") ||\n      (fontStyle == \"bold\" && fontWeight == \"italic\")\n    ) {\n      throw new Error(\"Invalid Combination of fontweight and fontstyle\");\n    }\n    if (fontWeight) {\n      fontStyle =\n        fontWeight == 400 || fontWeight === \"normal\"\n          ? fontStyle === \"italic\"\n            ? \"italic\"\n            : \"normal\"\n          : (fontWeight == 700 || fontWeight === \"bold\") &&\n            fontStyle === \"normal\"\n          ? \"bold\"\n          : (fontWeight == 700 ? \"bold\" : fontWeight) + \"\" + fontStyle;\n    }\n    return fontStyle;\n  });\n\n  /**\n   * @callback ApiSwitchBody\n   * @param {jsPDF} pdf\n   */\n\n  /**\n   * For compatibility reasons jsPDF offers two API modes which differ in the way they convert between the the usual\n   * screen coordinates and the PDF coordinate system.\n   *   - \"compat\": Offers full compatibility across all plugins but does not allow arbitrary transforms\n   *   - \"advanced\": Allows arbitrary transforms and more advanced features like pattern fills. Some plugins might\n   *     not support this mode, though.\n   * Initial mode is \"compat\".\n   *\n   * You can either provide a callback to the body argument, which means that jsPDF will automatically switch back to\n   * the original API mode afterwards; or you can omit the callback and switch back manually using {@link compatAPI}.\n   *\n   * Note, that the calls to {@link saveGraphicsState} and {@link restoreGraphicsState} need to be balanced within the\n   * callback or between calls of this method and its counterpart {@link compatAPI}. Calls to {@link beginFormObject}\n   * or {@link beginTilingPattern} need to be closed by their counterparts before switching back to \"compat\" API mode.\n   *\n   * @param {ApiSwitchBody=} body When provided, this callback will be called after the API mode has been switched.\n   * The API mode will be switched back automatically afterwards.\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name advancedAPI\n   */\n  API.advancedAPI = function(body) {\n    var doSwitch = apiMode === ApiMode.COMPAT;\n\n    if (doSwitch) {\n      advancedAPI.call(this);\n    }\n\n    if (typeof body !== \"function\") {\n      return this;\n    }\n\n    body(this);\n\n    if (doSwitch) {\n      compatAPI.call(this);\n    }\n\n    return this;\n  };\n\n  /**\n   * Switches to \"compat\" API mode. See {@link advancedAPI} for more details.\n   *\n   * @param {ApiSwitchBody=} body When provided, this callback will be called after the API mode has been switched.\n   * The API mode will be switched back automatically afterwards.\n   * @return {jsPDF}\n   * @memberof jsPDF#\n   * @name compatApi\n   */\n  API.compatAPI = function(body) {\n    var doSwitch = apiMode === ApiMode.ADVANCED;\n\n    if (doSwitch) {\n      compatAPI.call(this);\n    }\n\n    if (typeof body !== \"function\") {\n      return this;\n    }\n\n    body(this);\n\n    if (doSwitch) {\n      advancedAPI.call(this);\n    }\n\n    return this;\n  };\n\n  /**\n   * @return {boolean} True iff the current API mode is \"advanced\". See {@link advancedAPI}.\n   * @memberof jsPDF#\n   * @name isAdvancedAPI\n   */\n  API.isAdvancedAPI = function() {\n    return apiMode === ApiMode.ADVANCED;\n  };\n\n  var advancedApiModeTrap = function(methodName) {\n    if (apiMode !== ApiMode.ADVANCED) {\n      throw new Error(\n        methodName +\n          \" is only available in 'advanced' API mode. \" +\n          \"You need to call advancedAPI() first.\"\n      );\n    }\n  };\n\n  var roundToPrecision = (API.roundToPrecision = API.__private__.roundToPrecision = function(\n    number,\n    parmPrecision\n  ) {\n    var tmpPrecision = precision || parmPrecision;\n    if (isNaN(number) || isNaN(tmpPrecision)) {\n      throw new Error(\"Invalid argument passed to jsPDF.roundToPrecision\");\n    }\n    return number.toFixed(tmpPrecision).replace(/0+$/, \"\");\n  });\n\n  // high precision float\n  var hpf;\n  if (typeof floatPrecision === \"number\") {\n    hpf = API.hpf = API.__private__.hpf = function(number) {\n      if (isNaN(number)) {\n        throw new Error(\"Invalid argument passed to jsPDF.hpf\");\n      }\n      return roundToPrecision(number, floatPrecision);\n    };\n  } else if (floatPrecision === \"smart\") {\n    hpf = API.hpf = API.__private__.hpf = function(number) {\n      if (isNaN(number)) {\n        throw new Error(\"Invalid argument passed to jsPDF.hpf\");\n      }\n      if (number > -1 && number < 1) {\n        return roundToPrecision(number, 16);\n      } else {\n        return roundToPrecision(number, 5);\n      }\n    };\n  } else {\n    hpf = API.hpf = API.__private__.hpf = function(number) {\n      if (isNaN(number)) {\n        throw new Error(\"Invalid argument passed to jsPDF.hpf\");\n      }\n      return roundToPrecision(number, 16);\n    };\n  }\n  var f2 = (API.f2 = API.__private__.f2 = function(number) {\n    if (isNaN(number)) {\n      throw new Error(\"Invalid argument passed to jsPDF.f2\");\n    }\n    return roundToPrecision(number, 2);\n  });\n\n  var f3 = (API.__private__.f3 = function(number) {\n    if (isNaN(number)) {\n      throw new Error(\"Invalid argument passed to jsPDF.f3\");\n    }\n    return roundToPrecision(number, 3);\n  });\n\n  var scale = (API.scale = API.__private__.scale = function(number) {\n    if (isNaN(number)) {\n      throw new Error(\"Invalid argument passed to jsPDF.scale\");\n    }\n    if (apiMode === ApiMode.COMPAT) {\n      return number * scaleFactor;\n    } else if (apiMode === ApiMode.ADVANCED) {\n      return number;\n    }\n  });\n\n  var transformY = function(y) {\n    if (apiMode === ApiMode.COMPAT) {\n      return getPageHeight() - y;\n    } else if (apiMode === ApiMode.ADVANCED) {\n      return y;\n    }\n  };\n\n  var transformScaleY = function(y) {\n    return scale(transformY(y));\n  };\n\n  /**\n   * @name setPrecision\n   * @memberof jsPDF#\n   * @function\n   * @instance\n   * @param {string} precision\n   * @returns {jsPDF}\n   */\n  API.__private__.setPrecision = API.setPrecision = function(value) {\n    if (typeof parseInt(value, 10) === \"number\") {\n      precision = parseInt(value, 10);\n    }\n  };\n\n  var fileId = \"00000000000000000000000000000000\";\n\n  var getFileId = (API.__private__.getFileId = function() {\n    return fileId;\n  });\n\n  var setFileId = (API.__private__.setFileId = function(value) {\n    if (typeof value !== \"undefined\" && /^[a-fA-F0-9]{32}$/.test(value)) {\n      fileId = value.toUpperCase();\n    } else {\n      fileId = fileId\n        .split(\"\")\n        .map(function() {\n          return \"ABCDEF0123456789\".charAt(Math.floor(Math.random() * 16));\n        })\n        .join(\"\");\n    }\n\n    if (encryptionOptions !== null) {\n      encryption = new PDFSecurity(\n        encryptionOptions.userPermissions,\n        encryptionOptions.userPassword,\n        encryptionOptions.ownerPassword,\n        fileId\n      );\n    }\n    return fileId;\n  });\n\n  /**\n   * @name setFileId\n   * @memberof jsPDF#\n   * @function\n   * @instance\n   * @param {string} value GUID.\n   * @returns {jsPDF}\n   */\n  API.setFileId = function(value) {\n    setFileId(value);\n    return this;\n  };\n\n  /**\n   * @name getFileId\n   * @memberof jsPDF#\n   * @function\n   * @instance\n   *\n   * @returns {string} GUID.\n   */\n  API.getFileId = function() {\n    return getFileId();\n  };\n\n  var creationDate;\n\n  var convertDateToPDFDate = (API.__private__.convertDateToPDFDate = function(\n    parmDate\n  ) {\n    var result = \"\";\n    var tzoffset = parmDate.getTimezoneOffset(),\n      tzsign = tzoffset < 0 ? \"+\" : \"-\",\n      tzhour = Math.floor(Math.abs(tzoffset / 60)),\n      tzmin = Math.abs(tzoffset % 60),\n      timeZoneString = [tzsign, padd2(tzhour), \"'\", padd2(tzmin), \"'\"].join(\"\");\n\n    result = [\n      \"D:\",\n      parmDate.getFullYear(),\n      padd2(parmDate.getMonth() + 1),\n      padd2(parmDate.getDate()),\n      padd2(parmDate.getHours()),\n      padd2(parmDate.getMinutes()),\n      padd2(parmDate.getSeconds()),\n      timeZoneString\n    ].join(\"\");\n    return result;\n  });\n\n  var convertPDFDateToDate = (API.__private__.convertPDFDateToDate = function(\n    parmPDFDate\n  ) {\n    var year = parseInt(parmPDFDate.substr(2, 4), 10);\n    var month = parseInt(parmPDFDate.substr(6, 2), 10) - 1;\n    var date = parseInt(parmPDFDate.substr(8, 2), 10);\n    var hour = parseInt(parmPDFDate.substr(10, 2), 10);\n    var minutes = parseInt(parmPDFDate.substr(12, 2), 10);\n    var seconds = parseInt(parmPDFDate.substr(14, 2), 10);\n    // var timeZoneHour = parseInt(parmPDFDate.substr(16, 2), 10);\n    // var timeZoneMinutes = parseInt(parmPDFDate.substr(20, 2), 10);\n\n    var resultingDate = new Date(year, month, date, hour, minutes, seconds, 0);\n    return resultingDate;\n  });\n\n  var setCreationDate = (API.__private__.setCreationDate = function(date) {\n    var tmpCreationDateString;\n    var regexPDFCreationDate = /^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\\+0[0-9]|\\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/;\n    if (typeof date === \"undefined\") {\n      date = new Date();\n    }\n\n    if (date instanceof Date) {\n      tmpCreationDateString = convertDateToPDFDate(date);\n    } else if (regexPDFCreationDate.test(date)) {\n      tmpCreationDateString = date;\n    } else {\n      throw new Error(\"Invalid argument passed to jsPDF.setCreationDate\");\n    }\n    creationDate = tmpCreationDateString;\n    return creationDate;\n  });\n\n  var getCreationDate = (API.__private__.getCreationDate = function(type) {\n    var result = creationDate;\n    if (type === \"jsDate\") {\n      result = convertPDFDateToDate(creationDate);\n    }\n    return result;\n  });\n\n  /**\n   * @name setCreationDate\n   * @memberof jsPDF#\n   * @function\n   * @instance\n   * @param {Object} date\n   * @returns {jsPDF}\n   */\n  API.setCreationDate = function(date) {\n    setCreationDate(date);\n    return this;\n  };\n\n  /**\n   * @name getCreationDate\n   * @memberof jsPDF#\n   * @function\n   * @instance\n   * @param {Object} type\n   * @returns {Object}\n   */\n  API.getCreationDate = function(type) {\n    return getCreationDate(type);\n  };\n\n  var padd2 = (API.__private__.padd2 = function(number) {\n    return (\"0\" + parseInt(number)).slice(-2);\n  });\n\n  var padd2Hex = (API.__private__.padd2Hex = function(hexString) {\n    hexString = hexString.toString();\n    return (\"00\" + hexString).substr(hexString.length);\n  });\n\n  var objectNumber = 0; // 'n' Current object number\n  var offsets = []; // List of offsets. Activated and reset by buildDocument(). Pupulated by various calls buildDocument makes.\n  var content = [];\n  var contentLength = 0;\n  var additionalObjects = [];\n\n  var pages = [];\n  var currentPage;\n  var hasCustomDestination = false;\n  var outputDestination = content;\n\n  var resetDocument = function() {\n    //reset fields relevant for objectNumber generation and xref.\n    objectNumber = 0;\n    contentLength = 0;\n    content = [];\n    offsets = [];\n    additionalObjects = [];\n\n    rootDictionaryObjId = newObjectDeferred();\n    resourceDictionaryObjId = newObjectDeferred();\n  };\n\n  API.__private__.setCustomOutputDestination = function(destination) {\n    hasCustomDestination = true;\n    outputDestination = destination;\n  };\n  var setOutputDestination = function(destination) {\n    if (!hasCustomDestination) {\n      outputDestination = destination;\n    }\n  };\n\n  API.__private__.resetCustomOutputDestination = function() {\n    hasCustomDestination = false;\n    outputDestination = content;\n  };\n\n  var out = (API.__private__.out = function(string) {\n    string = string.toString();\n    contentLength += string.length + 1;\n    outputDestination.push(string);\n\n    return outputDestination;\n  });\n\n  var write = (API.__private__.write = function(value) {\n    return out(\n      arguments.length === 1\n        ? value.toString()\n        : Array.prototype.join.call(arguments, \" \")\n    );\n  });\n\n  var getArrayBuffer = (API.__private__.getArrayBuffer = function(data) {\n    var len = data.length,\n      ab = new ArrayBuffer(len),\n      u8 = new Uint8Array(ab);\n\n    while (len--) u8[len] = data.charCodeAt(len);\n    return ab;\n  });\n\n  var standardFonts = [\n    [\"Helvetica\", \"helvetica\", \"normal\", \"WinAnsiEncoding\"],\n    [\"Helvetica-Bold\", \"helvetica\", \"bold\", \"WinAnsiEncoding\"],\n    [\"Helvetica-Oblique\", \"helvetica\", \"italic\", \"WinAnsiEncoding\"],\n    [\"Helvetica-BoldOblique\", \"helvetica\", \"bolditalic\", \"WinAnsiEncoding\"],\n    [\"Courier\", \"courier\", \"normal\", \"WinAnsiEncoding\"],\n    [\"Courier-Bold\", \"courier\", \"bold\", \"WinAnsiEncoding\"],\n    [\"Courier-Oblique\", \"courier\", \"italic\", \"WinAnsiEncoding\"],\n    [\"Courier-BoldOblique\", \"courier\", \"bolditalic\", \"WinAnsiEncoding\"],\n    [\"Times-Roman\", \"times\", \"normal\", \"WinAnsiEncoding\"],\n    [\"Times-Bold\", \"times\", \"bold\", \"WinAnsiEncoding\"],\n    [\"Times-Italic\", \"times\", \"italic\", \"WinAnsiEncoding\"],\n    [\"Times-BoldItalic\", \"times\", \"bolditalic\", \"WinAnsiEncoding\"],\n    [\"ZapfDingbats\", \"zapfdingbats\", \"normal\", null],\n    [\"Symbol\", \"symbol\", \"normal\", null]\n  ];\n\n  API.__private__.getStandardFonts = function() {\n    return standardFonts;\n  };\n\n  var activeFontSize = options.fontSize || 16;\n\n  /**\n   * Sets font size for upcoming text elements.\n   *\n   * @param {number} size Font size in points.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setFontSize\n   */\n  API.__private__.setFontSize = API.setFontSize = function(size) {\n    if (apiMode === ApiMode.ADVANCED) {\n      activeFontSize = size / scaleFactor;\n    } else {\n      activeFontSize = size;\n    }\n    return this;\n  };\n\n  /**\n   * Gets the fontsize for upcoming text elements.\n   *\n   * @function\n   * @instance\n   * @returns {number}\n   * @memberof jsPDF#\n   * @name getFontSize\n   */\n  var getFontSize = (API.__private__.getFontSize = API.getFontSize = function() {\n    if (apiMode === ApiMode.COMPAT) {\n      return activeFontSize;\n    } else {\n      return activeFontSize * scaleFactor;\n    }\n  });\n\n  var R2L = options.R2L || false;\n\n  /**\n   * Set value of R2L functionality.\n   *\n   * @param {boolean} value\n   * @function\n   * @instance\n   * @returns {jsPDF} jsPDF-instance\n   * @memberof jsPDF#\n   * @name setR2L\n   */\n  API.__private__.setR2L = API.setR2L = function(value) {\n    R2L = value;\n    return this;\n  };\n\n  /**\n   * Get value of R2L functionality.\n   *\n   * @function\n   * @instance\n   * @returns {boolean} jsPDF-instance\n   * @memberof jsPDF#\n   * @name getR2L\n   */\n  API.__private__.getR2L = API.getR2L = function() {\n    return R2L;\n  };\n\n  var zoomMode; // default: 1;\n\n  var setZoomMode = (API.__private__.setZoomMode = function(zoom) {\n    var validZoomModes = [\n      undefined,\n      null,\n      \"fullwidth\",\n      \"fullheight\",\n      \"fullpage\",\n      \"original\"\n    ];\n\n    if (/^(?:\\d+\\.\\d*|\\d*\\.\\d+|\\d+)%$/.test(zoom)) {\n      zoomMode = zoom;\n    } else if (!isNaN(zoom)) {\n      zoomMode = parseInt(zoom, 10);\n    } else if (validZoomModes.indexOf(zoom) !== -1) {\n      zoomMode = zoom;\n    } else {\n      throw new Error(\n        'zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. \"' +\n          zoom +\n          '\" is not recognized.'\n      );\n    }\n  });\n\n  API.__private__.getZoomMode = function() {\n    return zoomMode;\n  };\n\n  var pageMode; // default: 'UseOutlines';\n  var setPageMode = (API.__private__.setPageMode = function(pmode) {\n    var validPageModes = [\n      undefined,\n      null,\n      \"UseNone\",\n      \"UseOutlines\",\n      \"UseThumbs\",\n      \"FullScreen\"\n    ];\n\n    if (validPageModes.indexOf(pmode) == -1) {\n      throw new Error(\n        'Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. \"' +\n          pmode +\n          '\" is not recognized.'\n      );\n    }\n    pageMode = pmode;\n  });\n\n  API.__private__.getPageMode = function() {\n    return pageMode;\n  };\n\n  var layoutMode; // default: 'continuous';\n  var setLayoutMode = (API.__private__.setLayoutMode = function(layout) {\n    var validLayoutModes = [\n      undefined,\n      null,\n      \"continuous\",\n      \"single\",\n      \"twoleft\",\n      \"tworight\",\n      \"two\"\n    ];\n\n    if (validLayoutModes.indexOf(layout) == -1) {\n      throw new Error(\n        'Layout mode must be one of continuous, single, twoleft, tworight. \"' +\n          layout +\n          '\" is not recognized.'\n      );\n    }\n    layoutMode = layout;\n  });\n\n  API.__private__.getLayoutMode = function() {\n    return layoutMode;\n  };\n\n  /**\n   * Set the display mode options of the page like zoom and layout.\n   *\n   * @name setDisplayMode\n   * @memberof jsPDF#\n   * @function\n   * @instance\n   * @param {integer|String} zoom   You can pass an integer or percentage as\n   * a string. 2 will scale the document up 2x, '200%' will scale up by the\n   * same amount. You can also set it to 'fullwidth', 'fullheight',\n   * 'fullpage', or 'original'.\n   *\n   * Only certain PDF readers support this, such as Adobe Acrobat.\n   *\n   * @param {string} layout Layout mode can be: 'continuous' - this is the\n   * default continuous scroll. 'single' - the single page mode only shows one\n   * page at a time. 'twoleft' - two column left mode, first page starts on\n   * the left, and 'tworight' - pages are laid out in two columns, with the\n   * first page on the right. This would be used for books.\n   * @param {string} pmode 'UseOutlines' - it shows the\n   * outline of the document on the left. 'UseThumbs' - shows thumbnails along\n   * the left. 'FullScreen' - prompts the user to enter fullscreen mode.\n   *\n   * @returns {jsPDF}\n   */\n  API.__private__.setDisplayMode = API.setDisplayMode = function(\n    zoom,\n    layout,\n    pmode\n  ) {\n    setZoomMode(zoom);\n    setLayoutMode(layout);\n    setPageMode(pmode);\n    return this;\n  };\n\n  var documentProperties = {\n    title: \"\",\n    subject: \"\",\n    author: \"\",\n    keywords: \"\",\n    creator: \"\"\n  };\n\n  API.__private__.getDocumentProperty = function(key) {\n    if (Object.keys(documentProperties).indexOf(key) === -1) {\n      throw new Error(\"Invalid argument passed to jsPDF.getDocumentProperty\");\n    }\n    return documentProperties[key];\n  };\n\n  API.__private__.getDocumentProperties = function() {\n    return documentProperties;\n  };\n\n  /**\n   * Adds a properties to the PDF document.\n   *\n   * @param {Object} A property_name-to-property_value object structure.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setDocumentProperties\n   */\n  API.__private__.setDocumentProperties = API.setProperties = API.setDocumentProperties = function(\n    properties\n  ) {\n    // copying only those properties we can render.\n    for (var property in documentProperties) {\n      if (documentProperties.hasOwnProperty(property) && properties[property]) {\n        documentProperties[property] = properties[property];\n      }\n    }\n    return this;\n  };\n\n  API.__private__.setDocumentProperty = function(key, value) {\n    if (Object.keys(documentProperties).indexOf(key) === -1) {\n      throw new Error(\"Invalid arguments passed to jsPDF.setDocumentProperty\");\n    }\n    return (documentProperties[key] = value);\n  };\n\n  var fonts = {}; // collection of font objects, where key is fontKey - a dynamically created label for a given font.\n  var fontmap = {}; // mapping structure fontName > fontStyle > font key - performance layer. See addFont()\n  var activeFontKey; // will be string representing the KEY of the font as combination of fontName + fontStyle\n  var fontStateStack = []; //\n  var patterns = {}; // collection of pattern objects\n  var patternMap = {}; // see fonts\n  var gStates = {}; // collection of graphic state objects\n  var gStatesMap = {}; // see fonts\n  var activeGState = null;\n  var scaleFactor; // Scale factor\n  var page = 0;\n  var pagesContext = [];\n  var events = new PubSub(API);\n  var hotfixes = options.hotfixes || [];\n\n  var renderTargets = {};\n  var renderTargetMap = {};\n  var renderTargetStack = [];\n  var pageX;\n  var pageY;\n  var pageMatrix; // only used for FormObjects\n\n  /**\n   * A matrix object for 2D homogenous transformations: <br>\n   * | a b 0 | <br>\n   * | c d 0 | <br>\n   * | e f 1 | <br>\n   * pdf multiplies matrices righthand: v' = v x m1 x m2 x ...\n   *\n   * @class\n   * @name Matrix\n   * @param {number} sx\n   * @param {number} shy\n   * @param {number} shx\n   * @param {number} sy\n   * @param {number} tx\n   * @param {number} ty\n   * @constructor\n   */\n  var Matrix = function(sx, shy, shx, sy, tx, ty) {\n    if (!(this instanceof Matrix)) {\n      return new Matrix(sx, shy, shx, sy, tx, ty);\n    }\n\n    if (isNaN(sx)) sx = 1;\n    if (isNaN(shy)) shy = 0;\n    if (isNaN(shx)) shx = 0;\n    if (isNaN(sy)) sy = 1;\n    if (isNaN(tx)) tx = 0;\n    if (isNaN(ty)) ty = 0;\n\n    this._matrix = [sx, shy, shx, sy, tx, ty];\n  };\n\n  /**\n   * @name sx\n   * @memberof Matrix#\n   */\n  Object.defineProperty(Matrix.prototype, \"sx\", {\n    get: function() {\n      return this._matrix[0];\n    },\n    set: function(value) {\n      this._matrix[0] = value;\n    }\n  });\n\n  /**\n   * @name shy\n   * @memberof Matrix#\n   */\n  Object.defineProperty(Matrix.prototype, \"shy\", {\n    get: function() {\n      return this._matrix[1];\n    },\n    set: function(value) {\n      this._matrix[1] = value;\n    }\n  });\n\n  /**\n   * @name shx\n   * @memberof Matrix#\n   */\n  Object.defineProperty(Matrix.prototype, \"shx\", {\n    get: function() {\n      return this._matrix[2];\n    },\n    set: function(value) {\n      this._matrix[2] = value;\n    }\n  });\n\n  /**\n   * @name sy\n   * @memberof Matrix#\n   */\n  Object.defineProperty(Matrix.prototype, \"sy\", {\n    get: function() {\n      return this._matrix[3];\n    },\n    set: function(value) {\n      this._matrix[3] = value;\n    }\n  });\n\n  /**\n   * @name tx\n   * @memberof Matrix#\n   */\n  Object.defineProperty(Matrix.prototype, \"tx\", {\n    get: function() {\n      return this._matrix[4];\n    },\n    set: function(value) {\n      this._matrix[4] = value;\n    }\n  });\n\n  /**\n   * @name ty\n   * @memberof Matrix#\n   */\n  Object.defineProperty(Matrix.prototype, \"ty\", {\n    get: function() {\n      return this._matrix[5];\n    },\n    set: function(value) {\n      this._matrix[5] = value;\n    }\n  });\n\n  Object.defineProperty(Matrix.prototype, \"a\", {\n    get: function() {\n      return this._matrix[0];\n    },\n    set: function(value) {\n      this._matrix[0] = value;\n    }\n  });\n\n  Object.defineProperty(Matrix.prototype, \"b\", {\n    get: function() {\n      return this._matrix[1];\n    },\n    set: function(value) {\n      this._matrix[1] = value;\n    }\n  });\n\n  Object.defineProperty(Matrix.prototype, \"c\", {\n    get: function() {\n      return this._matrix[2];\n    },\n    set: function(value) {\n      this._matrix[2] = value;\n    }\n  });\n\n  Object.defineProperty(Matrix.prototype, \"d\", {\n    get: function() {\n      return this._matrix[3];\n    },\n    set: function(value) {\n      this._matrix[3] = value;\n    }\n  });\n\n  Object.defineProperty(Matrix.prototype, \"e\", {\n    get: function() {\n      return this._matrix[4];\n    },\n    set: function(value) {\n      this._matrix[4] = value;\n    }\n  });\n\n  Object.defineProperty(Matrix.prototype, \"f\", {\n    get: function() {\n      return this._matrix[5];\n    },\n    set: function(value) {\n      this._matrix[5] = value;\n    }\n  });\n\n  /**\n   * @name rotation\n   * @memberof Matrix#\n   */\n  Object.defineProperty(Matrix.prototype, \"rotation\", {\n    get: function() {\n      return Math.atan2(this.shx, this.sx);\n    }\n  });\n\n  /**\n   * @name scaleX\n   * @memberof Matrix#\n   */\n  Object.defineProperty(Matrix.prototype, \"scaleX\", {\n    get: function() {\n      return this.decompose().scale.sx;\n    }\n  });\n\n  /**\n   * @name scaleY\n   * @memberof Matrix#\n   */\n  Object.defineProperty(Matrix.prototype, \"scaleY\", {\n    get: function() {\n      return this.decompose().scale.sy;\n    }\n  });\n\n  /**\n   * @name isIdentity\n   * @memberof Matrix#\n   */\n  Object.defineProperty(Matrix.prototype, \"isIdentity\", {\n    get: function() {\n      if (this.sx !== 1) {\n        return false;\n      }\n      if (this.shy !== 0) {\n        return false;\n      }\n      if (this.shx !== 0) {\n        return false;\n      }\n      if (this.sy !== 1) {\n        return false;\n      }\n      if (this.tx !== 0) {\n        return false;\n      }\n      if (this.ty !== 0) {\n        return false;\n      }\n      return true;\n    }\n  });\n\n  /**\n   * Join the Matrix Values to a String\n   *\n   * @function join\n   * @param {string} separator Specifies a string to separate each pair of adjacent elements of the array. The separator is converted to a string if necessary. If omitted, the array elements are separated with a comma (\",\"). If separator is an empty string, all elements are joined without any characters in between them.\n   * @returns {string} A string with all array elements joined.\n   * @memberof Matrix#\n   */\n  Matrix.prototype.join = function(separator) {\n    return [this.sx, this.shy, this.shx, this.sy, this.tx, this.ty]\n      .map(hpf)\n      .join(separator);\n  };\n\n  /**\n   * Multiply the matrix with given Matrix\n   *\n   * @function multiply\n   * @param matrix\n   * @returns {Matrix}\n   * @memberof Matrix#\n   */\n  Matrix.prototype.multiply = function(matrix) {\n    var sx = matrix.sx * this.sx + matrix.shy * this.shx;\n    var shy = matrix.sx * this.shy + matrix.shy * this.sy;\n    var shx = matrix.shx * this.sx + matrix.sy * this.shx;\n    var sy = matrix.shx * this.shy + matrix.sy * this.sy;\n    var tx = matrix.tx * this.sx + matrix.ty * this.shx + this.tx;\n    var ty = matrix.tx * this.shy + matrix.ty * this.sy + this.ty;\n\n    return new Matrix(sx, shy, shx, sy, tx, ty);\n  };\n\n  /**\n   * @function decompose\n   * @memberof Matrix#\n   */\n  Matrix.prototype.decompose = function() {\n    var a = this.sx;\n    var b = this.shy;\n    var c = this.shx;\n    var d = this.sy;\n    var e = this.tx;\n    var f = this.ty;\n\n    var scaleX = Math.sqrt(a * a + b * b);\n    a /= scaleX;\n    b /= scaleX;\n\n    var shear = a * c + b * d;\n    c -= a * shear;\n    d -= b * shear;\n\n    var scaleY = Math.sqrt(c * c + d * d);\n    c /= scaleY;\n    d /= scaleY;\n    shear /= scaleY;\n\n    if (a * d < b * c) {\n      a = -a;\n      b = -b;\n      shear = -shear;\n      scaleX = -scaleX;\n    }\n\n    return {\n      scale: new Matrix(scaleX, 0, 0, scaleY, 0, 0),\n      translate: new Matrix(1, 0, 0, 1, e, f),\n      rotate: new Matrix(a, b, -b, a, 0, 0),\n      skew: new Matrix(1, 0, shear, 1, 0, 0)\n    };\n  };\n\n  /**\n   * @function toString\n   * @memberof Matrix#\n   */\n  Matrix.prototype.toString = function(parmPrecision) {\n    return this.join(\" \");\n  };\n\n  /**\n   * @function inversed\n   * @memberof Matrix#\n   */\n  Matrix.prototype.inversed = function() {\n    var a = this.sx,\n      b = this.shy,\n      c = this.shx,\n      d = this.sy,\n      e = this.tx,\n      f = this.ty;\n\n    var quot = 1 / (a * d - b * c);\n\n    var aInv = d * quot;\n    var bInv = -b * quot;\n    var cInv = -c * quot;\n    var dInv = a * quot;\n    var eInv = -aInv * e - cInv * f;\n    var fInv = -bInv * e - dInv * f;\n\n    return new Matrix(aInv, bInv, cInv, dInv, eInv, fInv);\n  };\n\n  /**\n   * @function applyToPoint\n   * @memberof Matrix#\n   */\n  Matrix.prototype.applyToPoint = function(pt) {\n    var x = pt.x * this.sx + pt.y * this.shx + this.tx;\n    var y = pt.x * this.shy + pt.y * this.sy + this.ty;\n    return new Point(x, y);\n  };\n\n  /**\n   * @function applyToRectangle\n   * @memberof Matrix#\n   */\n  Matrix.prototype.applyToRectangle = function(rect) {\n    var pt1 = this.applyToPoint(rect);\n    var pt2 = this.applyToPoint(new Point(rect.x + rect.w, rect.y + rect.h));\n    return new Rectangle(pt1.x, pt1.y, pt2.x - pt1.x, pt2.y - pt1.y);\n  };\n\n  /**\n   * Clone the Matrix\n   *\n   * @function clone\n   * @memberof Matrix#\n   * @name clone\n   * @instance\n   */\n  Matrix.prototype.clone = function() {\n    var sx = this.sx;\n    var shy = this.shy;\n    var shx = this.shx;\n    var sy = this.sy;\n    var tx = this.tx;\n    var ty = this.ty;\n\n    return new Matrix(sx, shy, shx, sy, tx, ty);\n  };\n\n  API.Matrix = Matrix;\n\n  /**\n   * Multiplies two matrices. (see {@link Matrix})\n   * @param {Matrix} m1\n   * @param {Matrix} m2\n   * @memberof jsPDF#\n   * @name matrixMult\n   */\n  var matrixMult = (API.matrixMult = function(m1, m2) {\n    return m2.multiply(m1);\n  });\n\n  /**\n   * The identity matrix (equivalent to new Matrix(1, 0, 0, 1, 0, 0)).\n   * @type {Matrix}\n   * @memberof! jsPDF#\n   * @name identityMatrix\n   */\n  var identityMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n  API.unitMatrix = API.identityMatrix = identityMatrix;\n\n  /**\n   * Adds a new pattern for later use.\n   * @param {String} key The key by it can be referenced later. The keys must be unique!\n   * @param {API.Pattern} pattern The pattern\n   */\n  var addPattern = function(key, pattern) {\n    // only add it if it is not already present (the keys provided by the user must be unique!)\n    if (patternMap[key]) return;\n\n    var prefix = pattern instanceof ShadingPattern ? \"Sh\" : \"P\";\n    var patternKey = prefix + (Object.keys(patterns).length + 1).toString(10);\n    pattern.id = patternKey;\n\n    patternMap[key] = patternKey;\n    patterns[patternKey] = pattern;\n\n    events.publish(\"addPattern\", pattern);\n  };\n\n  /**\n   * A pattern describing a shading pattern.\n   *\n   * Only available in \"advanced\" API mode.\n   *\n   * @param {String} type One of \"axial\" or \"radial\"\n   * @param {Array<Number>} coords Either [x1, y1, x2, y2] for \"axial\" type describing the two interpolation points\n   * or [x1, y1, r, x2, y2, r2] for \"radial\" describing inner and the outer circle.\n   * @param {Array<Object>} colors An array of objects with the fields \"offset\" and \"color\". \"offset\" describes\n   * the offset in parameter space [0, 1]. \"color\" is an array of length 3 describing RGB values in [0, 255].\n   * @param {GState=} gState An additional graphics state that gets applied to the pattern (optional).\n   * @param {Matrix=} matrix A matrix that describes the transformation between the pattern coordinate system\n   * and the use coordinate system (optional).\n   * @constructor\n   * @extends API.Pattern\n   */\n  API.ShadingPattern = ShadingPattern;\n\n  /**\n   * A PDF Tiling pattern.\n   *\n   * Only available in \"advanced\" API mode.\n   *\n   * @param {Array.<Number>} boundingBox The bounding box at which one pattern cell gets clipped.\n   * @param {Number} xStep Horizontal spacing between pattern cells.\n   * @param {Number} yStep Vertical spacing between pattern cells.\n   * @param {API.GState=} gState An additional graphics state that gets applied to the pattern (optional).\n   * @param {Matrix=} matrix A matrix that describes the transformation between the pattern coordinate system\n   * and the use coordinate system (optional).\n   * @constructor\n   * @extends API.Pattern\n   */\n  API.TilingPattern = TilingPattern;\n\n  /**\n   * Adds a new {@link API.ShadingPattern} for later use. Only available in \"advanced\" API mode.\n   * @param {String} key\n   * @param {Pattern} pattern\n   * @function\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name addPattern\n   */\n  API.addShadingPattern = function(key, pattern) {\n    advancedApiModeTrap(\"addShadingPattern()\");\n\n    addPattern(key, pattern);\n    return this;\n  };\n\n  /**\n   * Begins a new tiling pattern. All subsequent render calls are drawn to this pattern until {@link API.endTilingPattern}\n   * gets called. Only available in \"advanced\" API mode.\n   * @param {API.Pattern} pattern\n   * @memberof jsPDF#\n   * @name beginTilingPattern\n   */\n  API.beginTilingPattern = function(pattern) {\n    advancedApiModeTrap(\"beginTilingPattern()\");\n\n    beginNewRenderTarget(\n      pattern.boundingBox[0],\n      pattern.boundingBox[1],\n      pattern.boundingBox[2] - pattern.boundingBox[0],\n      pattern.boundingBox[3] - pattern.boundingBox[1],\n      pattern.matrix\n    );\n  };\n\n  /**\n   * Ends a tiling pattern and sets the render target to the one active before {@link API.beginTilingPattern} has been called.\n   *\n   * Only available in \"advanced\" API mode.\n   *\n   * @param {string} key A unique key that is used to reference this pattern at later use.\n   * @param {API.Pattern} pattern The pattern to end.\n   * @memberof jsPDF#\n   * @name endTilingPattern\n   */\n  API.endTilingPattern = function(key, pattern) {\n    advancedApiModeTrap(\"endTilingPattern()\");\n\n    // retrieve the stream\n    pattern.stream = pages[currentPage].join(\"\\n\");\n\n    addPattern(key, pattern);\n\n    events.publish(\"endTilingPattern\", pattern);\n\n    // restore state from stack\n    renderTargetStack.pop().restore();\n  };\n\n  var newObject = (API.__private__.newObject = function() {\n    var oid = newObjectDeferred();\n    newObjectDeferredBegin(oid, true);\n    return oid;\n  });\n\n  // Does not output the object.  The caller must call newObjectDeferredBegin(oid) before outputing any data\n  var newObjectDeferred = (API.__private__.newObjectDeferred = function() {\n    objectNumber++;\n    offsets[objectNumber] = function() {\n      return contentLength;\n    };\n    return objectNumber;\n  });\n\n  var newObjectDeferredBegin = function(oid, doOutput) {\n    doOutput = typeof doOutput === \"boolean\" ? doOutput : false;\n    offsets[oid] = contentLength;\n    if (doOutput) {\n      out(oid + \" 0 obj\");\n    }\n    return oid;\n  };\n  // Does not output the object until after the pages have been output.\n  // Returns an object containing the objectId and content.\n  // All pages have been added so the object ID can be estimated to start right after.\n  // This does not modify the current objectNumber;  It must be updated after the newObjects are output.\n  var newAdditionalObject = (API.__private__.newAdditionalObject = function() {\n    var objId = newObjectDeferred();\n    var obj = {\n      objId: objId,\n      content: \"\"\n    };\n    additionalObjects.push(obj);\n    return obj;\n  });\n\n  var rootDictionaryObjId = newObjectDeferred();\n  var resourceDictionaryObjId = newObjectDeferred();\n\n  /////////////////////\n  // Private functions\n  /////////////////////\n\n  var decodeColorString = (API.__private__.decodeColorString = function(color) {\n    var colorEncoded = color.split(\" \");\n    if (\n      colorEncoded.length === 2 &&\n      (colorEncoded[1] === \"g\" || colorEncoded[1] === \"G\")\n    ) {\n      // convert grayscale value to rgb so that it can be converted to hex for consistency\n      var floatVal = parseFloat(colorEncoded[0]);\n      colorEncoded = [floatVal, floatVal, floatVal, \"r\"];\n    } else if (\n      colorEncoded.length === 5 &&\n      (colorEncoded[4] === \"k\" || colorEncoded[4] === \"K\")\n    ) {\n      // convert CMYK values to rbg so that it can be converted to hex for consistency\n      var red = (1.0 - colorEncoded[0]) * (1.0 - colorEncoded[3]);\n      var green = (1.0 - colorEncoded[1]) * (1.0 - colorEncoded[3]);\n      var blue = (1.0 - colorEncoded[2]) * (1.0 - colorEncoded[3]);\n\n      colorEncoded = [red, green, blue, \"r\"];\n    }\n    var colorAsRGB = \"#\";\n    for (var i = 0; i < 3; i++) {\n      colorAsRGB += (\n        \"0\" + Math.floor(parseFloat(colorEncoded[i]) * 255).toString(16)\n      ).slice(-2);\n    }\n    return colorAsRGB;\n  });\n\n  var encodeColorString = (API.__private__.encodeColorString = function(\n    options\n  ) {\n    var color;\n\n    if (typeof options === \"string\") {\n      options = {\n        ch1: options\n      };\n    }\n    var ch1 = options.ch1;\n    var ch2 = options.ch2;\n    var ch3 = options.ch3;\n    var ch4 = options.ch4;\n    var letterArray =\n      options.pdfColorType === \"draw\" ? [\"G\", \"RG\", \"K\"] : [\"g\", \"rg\", \"k\"];\n\n    if (typeof ch1 === \"string\" && ch1.charAt(0) !== \"#\") {\n      var rgbColor = new RGBColor(ch1);\n      if (rgbColor.ok) {\n        ch1 = rgbColor.toHex();\n      } else if (!/^\\d*\\.?\\d*$/.test(ch1)) {\n        throw new Error(\n          'Invalid color \"' + ch1 + '\" passed to jsPDF.encodeColorString.'\n        );\n      }\n    }\n    //convert short rgb to long form\n    if (typeof ch1 === \"string\" && /^#[0-9A-Fa-f]{3}$/.test(ch1)) {\n      ch1 = \"#\" + ch1[1] + ch1[1] + ch1[2] + ch1[2] + ch1[3] + ch1[3];\n    }\n\n    if (typeof ch1 === \"string\" && /^#[0-9A-Fa-f]{6}$/.test(ch1)) {\n      var hex = parseInt(ch1.substr(1), 16);\n      ch1 = (hex >> 16) & 255;\n      ch2 = (hex >> 8) & 255;\n      ch3 = hex & 255;\n    }\n\n    if (\n      typeof ch2 === \"undefined\" ||\n      (typeof ch4 === \"undefined\" && ch1 === ch2 && ch2 === ch3)\n    ) {\n      // Gray color space.\n      if (typeof ch1 === \"string\") {\n        color = ch1 + \" \" + letterArray[0];\n      } else {\n        switch (options.precision) {\n          case 2:\n            color = f2(ch1 / 255) + \" \" + letterArray[0];\n            break;\n          case 3:\n          default:\n            color = f3(ch1 / 255) + \" \" + letterArray[0];\n        }\n      }\n    } else if (typeof ch4 === \"undefined\" || typeof ch4 === \"object\") {\n      // assume RGBA\n      if (ch4 && !isNaN(ch4.a)) {\n        //TODO Implement transparency.\n        //WORKAROUND use white for now, if transparent, otherwise handle as rgb\n        if (ch4.a === 0) {\n          color = [\"1.\", \"1.\", \"1.\", letterArray[1]].join(\" \");\n          return color;\n        }\n      }\n      // assume RGB\n      if (typeof ch1 === \"string\") {\n        color = [ch1, ch2, ch3, letterArray[1]].join(\" \");\n      } else {\n        switch (options.precision) {\n          case 2:\n            color = [\n              f2(ch1 / 255),\n              f2(ch2 / 255),\n              f2(ch3 / 255),\n              letterArray[1]\n            ].join(\" \");\n            break;\n          default:\n          case 3:\n            color = [\n              f3(ch1 / 255),\n              f3(ch2 / 255),\n              f3(ch3 / 255),\n              letterArray[1]\n            ].join(\" \");\n        }\n      }\n    } else {\n      // assume CMYK\n      if (typeof ch1 === \"string\") {\n        color = [ch1, ch2, ch3, ch4, letterArray[2]].join(\" \");\n      } else {\n        switch (options.precision) {\n          case 2:\n            color = [f2(ch1), f2(ch2), f2(ch3), f2(ch4), letterArray[2]].join(\n              \" \"\n            );\n            break;\n          case 3:\n          default:\n            color = [f3(ch1), f3(ch2), f3(ch3), f3(ch4), letterArray[2]].join(\n              \" \"\n            );\n        }\n      }\n    }\n    return color;\n  });\n\n  var getFilters = (API.__private__.getFilters = function() {\n    return filters;\n  });\n\n  var putStream = (API.__private__.putStream = function(options) {\n    options = options || {};\n    var data = options.data || \"\";\n    var filters = options.filters || getFilters();\n    var alreadyAppliedFilters = options.alreadyAppliedFilters || [];\n    var addLength1 = options.addLength1 || false;\n    var valueOfLength1 = data.length;\n    var objectId = options.objectId;\n    var encryptor = function(data) {\n      return data;\n    };\n    if (encryptionOptions !== null && typeof objectId == \"undefined\") {\n      throw new Error(\n        \"ObjectId must be passed to putStream for file encryption\"\n      );\n    }\n    if (encryptionOptions !== null) {\n      encryptor = encryption.encryptor(objectId, 0);\n    }\n\n    var processedData = {};\n    if (filters === true) {\n      filters = [\"FlateEncode\"];\n    }\n    var keyValues = options.additionalKeyValues || [];\n    if (typeof jsPDF.API.processDataByFilters !== \"undefined\") {\n      processedData = jsPDF.API.processDataByFilters(data, filters);\n    } else {\n      processedData = { data: data, reverseChain: [] };\n    }\n    var filterAsString =\n      processedData.reverseChain +\n      (Array.isArray(alreadyAppliedFilters)\n        ? alreadyAppliedFilters.join(\" \")\n        : alreadyAppliedFilters.toString());\n\n    if (processedData.data.length !== 0) {\n      keyValues.push({\n        key: \"Length\",\n        value: processedData.data.length\n      });\n      if (addLength1 === true) {\n        keyValues.push({\n          key: \"Length1\",\n          value: valueOfLength1\n        });\n      }\n    }\n\n    if (filterAsString.length != 0) {\n      if (filterAsString.split(\"/\").length - 1 === 1) {\n        keyValues.push({\n          key: \"Filter\",\n          value: filterAsString\n        });\n      } else {\n        keyValues.push({\n          key: \"Filter\",\n          value: \"[\" + filterAsString + \"]\"\n        });\n\n        for (var j = 0; j < keyValues.length; j += 1) {\n          if (keyValues[j].key === \"DecodeParms\") {\n            var decodeParmsArray = [];\n\n            for (\n              var i = 0;\n              i < processedData.reverseChain.split(\"/\").length - 1;\n              i += 1\n            ) {\n              decodeParmsArray.push(\"null\");\n            }\n\n            decodeParmsArray.push(keyValues[j].value);\n            keyValues[j].value = \"[\" + decodeParmsArray.join(\" \") + \"]\";\n          }\n        }\n      }\n    }\n\n    out(\"<<\");\n    for (var k = 0; k < keyValues.length; k++) {\n      out(\"/\" + keyValues[k].key + \" \" + keyValues[k].value);\n    }\n    out(\">>\");\n    if (processedData.data.length !== 0) {\n      out(\"stream\");\n      out(encryptor(processedData.data));\n      out(\"endstream\");\n    }\n  });\n\n  var putPage = (API.__private__.putPage = function(page) {\n    var pageNumber = page.number;\n    var data = page.data;\n    var pageObjectNumber = page.objId;\n    var pageContentsObjId = page.contentsObjId;\n\n    newObjectDeferredBegin(pageObjectNumber, true);\n    out(\"<</Type /Page\");\n    out(\"/Parent \" + page.rootDictionaryObjId + \" 0 R\");\n    out(\"/Resources \" + page.resourceDictionaryObjId + \" 0 R\");\n    out(\n      \"/MediaBox [\" +\n        parseFloat(hpf(page.mediaBox.bottomLeftX)) +\n        \" \" +\n        parseFloat(hpf(page.mediaBox.bottomLeftY)) +\n        \" \" +\n        hpf(page.mediaBox.topRightX) +\n        \" \" +\n        hpf(page.mediaBox.topRightY) +\n        \"]\"\n    );\n    if (page.cropBox !== null) {\n      out(\n        \"/CropBox [\" +\n          hpf(page.cropBox.bottomLeftX) +\n          \" \" +\n          hpf(page.cropBox.bottomLeftY) +\n          \" \" +\n          hpf(page.cropBox.topRightX) +\n          \" \" +\n          hpf(page.cropBox.topRightY) +\n          \"]\"\n      );\n    }\n\n    if (page.bleedBox !== null) {\n      out(\n        \"/BleedBox [\" +\n          hpf(page.bleedBox.bottomLeftX) +\n          \" \" +\n          hpf(page.bleedBox.bottomLeftY) +\n          \" \" +\n          hpf(page.bleedBox.topRightX) +\n          \" \" +\n          hpf(page.bleedBox.topRightY) +\n          \"]\"\n      );\n    }\n\n    if (page.trimBox !== null) {\n      out(\n        \"/TrimBox [\" +\n          hpf(page.trimBox.bottomLeftX) +\n          \" \" +\n          hpf(page.trimBox.bottomLeftY) +\n          \" \" +\n          hpf(page.trimBox.topRightX) +\n          \" \" +\n          hpf(page.trimBox.topRightY) +\n          \"]\"\n      );\n    }\n\n    if (page.artBox !== null) {\n      out(\n        \"/ArtBox [\" +\n          hpf(page.artBox.bottomLeftX) +\n          \" \" +\n          hpf(page.artBox.bottomLeftY) +\n          \" \" +\n          hpf(page.artBox.topRightX) +\n          \" \" +\n          hpf(page.artBox.topRightY) +\n          \"]\"\n      );\n    }\n\n    if (typeof page.userUnit === \"number\" && page.userUnit !== 1.0) {\n      out(\"/UserUnit \" + page.userUnit);\n    }\n\n    events.publish(\"putPage\", {\n      objId: pageObjectNumber,\n      pageContext: pagesContext[pageNumber],\n      pageNumber: pageNumber,\n      page: data\n    });\n    out(\"/Contents \" + pageContentsObjId + \" 0 R\");\n    out(\">>\");\n    out(\"endobj\");\n    // Page content\n    var pageContent = data.join(\"\\n\");\n\n    if (apiMode === ApiMode.ADVANCED) {\n      // if the user forgot to switch back to COMPAT mode, we must balance the graphics stack again\n      pageContent += \"\\nQ\";\n    }\n\n    newObjectDeferredBegin(pageContentsObjId, true);\n    putStream({\n      data: pageContent,\n      filters: getFilters(),\n      objectId: pageContentsObjId\n    });\n    out(\"endobj\");\n    return pageObjectNumber;\n  });\n\n  var putPages = (API.__private__.putPages = function() {\n    var n,\n      i,\n      pageObjectNumbers = [];\n\n    for (n = 1; n <= page; n++) {\n      pagesContext[n].objId = newObjectDeferred();\n      pagesContext[n].contentsObjId = newObjectDeferred();\n    }\n\n    for (n = 1; n <= page; n++) {\n      pageObjectNumbers.push(\n        putPage({\n          number: n,\n          data: pages[n],\n          objId: pagesContext[n].objId,\n          contentsObjId: pagesContext[n].contentsObjId,\n          mediaBox: pagesContext[n].mediaBox,\n          cropBox: pagesContext[n].cropBox,\n          bleedBox: pagesContext[n].bleedBox,\n          trimBox: pagesContext[n].trimBox,\n          artBox: pagesContext[n].artBox,\n          userUnit: pagesContext[n].userUnit,\n          rootDictionaryObjId: rootDictionaryObjId,\n          resourceDictionaryObjId: resourceDictionaryObjId\n        })\n      );\n    }\n    newObjectDeferredBegin(rootDictionaryObjId, true);\n    out(\"<</Type /Pages\");\n    var kids = \"/Kids [\";\n    for (i = 0; i < page; i++) {\n      kids += pageObjectNumbers[i] + \" 0 R \";\n    }\n    out(kids + \"]\");\n    out(\"/Count \" + page);\n    out(\">>\");\n    out(\"endobj\");\n    events.publish(\"postPutPages\");\n  });\n\n  var putFont = function(font) {\n    events.publish(\"putFont\", {\n      font: font,\n      out: out,\n      newObject: newObject,\n      putStream: putStream\n    });\n\n    if (font.isAlreadyPutted !== true) {\n      font.objectNumber = newObject();\n      out(\"<<\");\n      out(\"/Type /Font\");\n      out(\"/BaseFont /\" + toPDFName(font.postScriptName));\n      out(\"/Subtype /Type1\");\n      if (typeof font.encoding === \"string\") {\n        out(\"/Encoding /\" + font.encoding);\n      }\n      out(\"/FirstChar 32\");\n      out(\"/LastChar 255\");\n      out(\">>\");\n      out(\"endobj\");\n    }\n  };\n\n  var putFonts = function() {\n    for (var fontKey in fonts) {\n      if (fonts.hasOwnProperty(fontKey)) {\n        if (\n          putOnlyUsedFonts === false ||\n          (putOnlyUsedFonts === true && usedFonts.hasOwnProperty(fontKey))\n        ) {\n          putFont(fonts[fontKey]);\n        }\n      }\n    }\n  };\n\n  var putXObject = function(xObject) {\n    xObject.objectNumber = newObject();\n\n    var options = [];\n    options.push({ key: \"Type\", value: \"/XObject\" });\n    options.push({ key: \"Subtype\", value: \"/Form\" });\n    options.push({\n      key: \"BBox\",\n      value:\n        \"[\" +\n        [\n          hpf(xObject.x),\n          hpf(xObject.y),\n          hpf(xObject.x + xObject.width),\n          hpf(xObject.y + xObject.height)\n        ].join(\" \") +\n        \"]\"\n    });\n    options.push({\n      key: \"Matrix\",\n      value: \"[\" + xObject.matrix.toString() + \"]\"\n    });\n    // TODO: /Resources\n\n    var stream = xObject.pages[1].join(\"\\n\");\n    putStream({\n      data: stream,\n      additionalKeyValues: options,\n      objectId: xObject.objectNumber\n    });\n    out(\"endobj\");\n  };\n\n  var putXObjects = function() {\n    for (var xObjectKey in renderTargets) {\n      if (renderTargets.hasOwnProperty(xObjectKey)) {\n        putXObject(renderTargets[xObjectKey]);\n      }\n    }\n  };\n\n  var interpolateAndEncodeRGBStream = function(colors, numberSamples) {\n    var tValues = [];\n    var t;\n    var dT = 1.0 / (numberSamples - 1);\n    for (t = 0.0; t < 1.0; t += dT) {\n      tValues.push(t);\n    }\n    tValues.push(1.0);\n    // add first and last control point if not present\n    if (colors[0].offset != 0.0) {\n      var c0 = {\n        offset: 0.0,\n        color: colors[0].color\n      };\n      colors.unshift(c0);\n    }\n    if (colors[colors.length - 1].offset != 1.0) {\n      var c1 = {\n        offset: 1.0,\n        color: colors[colors.length - 1].color\n      };\n      colors.push(c1);\n    }\n    var out = \"\";\n    var index = 0;\n\n    for (var i = 0; i < tValues.length; i++) {\n      t = tValues[i];\n      while (t > colors[index + 1].offset) index++;\n      var a = colors[index].offset;\n      var b = colors[index + 1].offset;\n      var d = (t - a) / (b - a);\n\n      var aColor = colors[index].color;\n      var bColor = colors[index + 1].color;\n\n      out +=\n        padd2Hex(Math.round((1 - d) * aColor[0] + d * bColor[0]).toString(16)) +\n        padd2Hex(Math.round((1 - d) * aColor[1] + d * bColor[1]).toString(16)) +\n        padd2Hex(Math.round((1 - d) * aColor[2] + d * bColor[2]).toString(16));\n    }\n    return out.trim();\n  };\n\n  var putShadingPattern = function(pattern, numberSamples) {\n    /*\n       Axial patterns shade between the two points specified in coords, radial patterns between the inner\n       and outer circle.\n       The user can specify an array (colors) that maps t-Values in [0, 1] to RGB colors. These are now\n       interpolated to equidistant samples and written to pdf as a sample (type 0) function.\n       */\n    // The number of color samples that should be used to describe the shading.\n    // The higher, the more accurate the gradient will be.\n    numberSamples || (numberSamples = 21);\n    var funcObjectNumber = newObject();\n    var stream = interpolateAndEncodeRGBStream(pattern.colors, numberSamples);\n\n    var options = [];\n    options.push({ key: \"FunctionType\", value: \"0\" });\n    options.push({ key: \"Domain\", value: \"[0.0 1.0]\" });\n    options.push({ key: \"Size\", value: \"[\" + numberSamples + \"]\" });\n    options.push({ key: \"BitsPerSample\", value: \"8\" });\n    options.push({ key: \"Range\", value: \"[0.0 1.0 0.0 1.0 0.0 1.0]\" });\n    options.push({ key: \"Decode\", value: \"[0.0 1.0 0.0 1.0 0.0 1.0]\" });\n\n    putStream({\n      data: stream,\n      additionalKeyValues: options,\n      alreadyAppliedFilters: [\"/ASCIIHexDecode\"],\n      objectId: funcObjectNumber\n    });\n    out(\"endobj\");\n\n    pattern.objectNumber = newObject();\n    out(\"<< /ShadingType \" + pattern.type);\n    out(\"/ColorSpace /DeviceRGB\");\n    var coords =\n      \"/Coords [\" +\n      hpf(parseFloat(pattern.coords[0])) +\n      \" \" + // x1\n      hpf(parseFloat(pattern.coords[1])) +\n      \" \"; // y1\n    if (pattern.type === 2) {\n      // axial\n      coords +=\n        hpf(parseFloat(pattern.coords[2])) +\n        \" \" + // x2\n        hpf(parseFloat(pattern.coords[3])); // y2\n    } else {\n      // radial\n      coords +=\n        hpf(parseFloat(pattern.coords[2])) +\n        \" \" + // r1\n        hpf(parseFloat(pattern.coords[3])) +\n        \" \" + // x2\n        hpf(parseFloat(pattern.coords[4])) +\n        \" \" + // y2\n        hpf(parseFloat(pattern.coords[5])); // r2\n    }\n    coords += \"]\";\n    out(coords);\n\n    if (pattern.matrix) {\n      out(\"/Matrix [\" + pattern.matrix.toString() + \"]\");\n    }\n    out(\"/Function \" + funcObjectNumber + \" 0 R\");\n    out(\"/Extend [true true]\");\n    out(\">>\");\n    out(\"endobj\");\n  };\n\n  var putTilingPattern = function(pattern, deferredResourceDictionaryIds) {\n    var resourcesObjectId = newObjectDeferred();\n    var patternObjectId = newObject();\n\n    deferredResourceDictionaryIds.push({\n      resourcesOid: resourcesObjectId,\n      objectOid: patternObjectId\n    });\n\n    pattern.objectNumber = patternObjectId;\n    var options = [];\n    options.push({ key: \"Type\", value: \"/Pattern\" });\n    options.push({ key: \"PatternType\", value: \"1\" }); // tiling pattern\n    options.push({ key: \"PaintType\", value: \"1\" }); // colored tiling pattern\n    options.push({ key: \"TilingType\", value: \"1\" }); // constant spacing\n    options.push({\n      key: \"BBox\",\n      value: \"[\" + pattern.boundingBox.map(hpf).join(\" \") + \"]\"\n    });\n    options.push({ key: \"XStep\", value: hpf(pattern.xStep) });\n    options.push({ key: \"YStep\", value: hpf(pattern.yStep) });\n    options.push({ key: \"Resources\", value: resourcesObjectId + \" 0 R\" });\n    if (pattern.matrix) {\n      options.push({\n        key: \"Matrix\",\n        value: \"[\" + pattern.matrix.toString() + \"]\"\n      });\n    }\n\n    putStream({\n      data: pattern.stream,\n      additionalKeyValues: options,\n      objectId: pattern.objectNumber\n    });\n    out(\"endobj\");\n  };\n\n  var putPatterns = function(deferredResourceDictionaryIds) {\n    var patternKey;\n    for (patternKey in patterns) {\n      if (patterns.hasOwnProperty(patternKey)) {\n        if (patterns[patternKey] instanceof ShadingPattern) {\n          putShadingPattern(patterns[patternKey]);\n        } else if (patterns[patternKey] instanceof TilingPattern) {\n          putTilingPattern(patterns[patternKey], deferredResourceDictionaryIds);\n        }\n      }\n    }\n  };\n\n  var putGState = function(gState) {\n    gState.objectNumber = newObject();\n    out(\"<<\");\n    for (var p in gState) {\n      switch (p) {\n        case \"opacity\":\n          out(\"/ca \" + f2(gState[p]));\n          break;\n        case \"stroke-opacity\":\n          out(\"/CA \" + f2(gState[p]));\n          break;\n      }\n    }\n    out(\">>\");\n    out(\"endobj\");\n  };\n\n  var putGStates = function() {\n    var gStateKey;\n    for (gStateKey in gStates) {\n      if (gStates.hasOwnProperty(gStateKey)) {\n        putGState(gStates[gStateKey]);\n      }\n    }\n  };\n\n  var putXobjectDict = function() {\n    out(\"/XObject <<\");\n    for (var xObjectKey in renderTargets) {\n      if (\n        renderTargets.hasOwnProperty(xObjectKey) &&\n        renderTargets[xObjectKey].objectNumber >= 0\n      ) {\n        out(\n          \"/\" +\n            xObjectKey +\n            \" \" +\n            renderTargets[xObjectKey].objectNumber +\n            \" 0 R\"\n        );\n      }\n    }\n\n    // Loop through images, or other data objects\n    events.publish(\"putXobjectDict\");\n    out(\">>\");\n  };\n\n  var putEncryptionDict = function() {\n    encryption.oid = newObject();\n    out(\"<<\");\n    out(\"/Filter /Standard\");\n    out(\"/V \" + encryption.v);\n    out(\"/R \" + encryption.r);\n    out(\"/U <\" + encryption.toHexString(encryption.U) + \">\");\n    out(\"/O <\" + encryption.toHexString(encryption.O) + \">\");\n    out(\"/P \" + encryption.P);\n    out(\">>\");\n    out(\"endobj\");\n  };\n\n  var putFontDict = function() {\n    out(\"/Font <<\");\n\n    for (var fontKey in fonts) {\n      if (fonts.hasOwnProperty(fontKey)) {\n        if (\n          putOnlyUsedFonts === false ||\n          (putOnlyUsedFonts === true && usedFonts.hasOwnProperty(fontKey))\n        ) {\n          out(\"/\" + fontKey + \" \" + fonts[fontKey].objectNumber + \" 0 R\");\n        }\n      }\n    }\n    out(\">>\");\n  };\n\n  var putShadingPatternDict = function() {\n    if (Object.keys(patterns).length > 0) {\n      out(\"/Shading <<\");\n      for (var patternKey in patterns) {\n        if (\n          patterns.hasOwnProperty(patternKey) &&\n          patterns[patternKey] instanceof ShadingPattern &&\n          patterns[patternKey].objectNumber >= 0\n        ) {\n          out(\n            \"/\" + patternKey + \" \" + patterns[patternKey].objectNumber + \" 0 R\"\n          );\n        }\n      }\n\n      events.publish(\"putShadingPatternDict\");\n      out(\">>\");\n    }\n  };\n\n  var putTilingPatternDict = function(objectOid) {\n    if (Object.keys(patterns).length > 0) {\n      out(\"/Pattern <<\");\n      for (var patternKey in patterns) {\n        if (\n          patterns.hasOwnProperty(patternKey) &&\n          patterns[patternKey] instanceof API.TilingPattern &&\n          patterns[patternKey].objectNumber >= 0 &&\n          patterns[patternKey].objectNumber < objectOid // prevent cyclic dependencies\n        ) {\n          out(\n            \"/\" + patternKey + \" \" + patterns[patternKey].objectNumber + \" 0 R\"\n          );\n        }\n      }\n      events.publish(\"putTilingPatternDict\");\n      out(\">>\");\n    }\n  };\n\n  var putGStatesDict = function() {\n    if (Object.keys(gStates).length > 0) {\n      var gStateKey;\n      out(\"/ExtGState <<\");\n      for (gStateKey in gStates) {\n        if (\n          gStates.hasOwnProperty(gStateKey) &&\n          gStates[gStateKey].objectNumber >= 0\n        ) {\n          out(\"/\" + gStateKey + \" \" + gStates[gStateKey].objectNumber + \" 0 R\");\n        }\n      }\n\n      events.publish(\"putGStateDict\");\n      out(\">>\");\n    }\n  };\n\n  var putResourceDictionary = function(objectIds) {\n    newObjectDeferredBegin(objectIds.resourcesOid, true);\n    out(\"<<\");\n    out(\"/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]\");\n    putFontDict();\n    putShadingPatternDict();\n    putTilingPatternDict(objectIds.objectOid);\n    putGStatesDict();\n    putXobjectDict();\n    out(\">>\");\n    out(\"endobj\");\n  };\n\n  var putResources = function() {\n    // FormObjects, Patterns etc. might use other FormObjects/Patterns/Images\n    // which means their resource dictionaries must contain the already resolved\n    // object ids. For this reason we defer the serialization of the resource\n    // dicts until all objects have been serialized and have object ids.\n    //\n    // In order to prevent cyclic dependencies (which Adobe Reader doesn't like),\n    // we only put all oids that are smaller than the oid of the object the\n    // resource dict belongs to. This is correct behavior, since the streams\n    // may only use other objects that have already been defined and thus appear\n    // earlier in their respective collection.\n    // Currently, this only affects tiling patterns, but a (more) correct\n    // implementation of FormObjects would also define their own resource dicts.\n    var deferredResourceDictionaryIds = [];\n\n    putFonts();\n    putGStates();\n    putXObjects();\n    putPatterns(deferredResourceDictionaryIds);\n\n    events.publish(\"putResources\");\n    deferredResourceDictionaryIds.forEach(putResourceDictionary);\n    putResourceDictionary({\n      resourcesOid: resourceDictionaryObjId,\n      objectOid: Number.MAX_SAFE_INTEGER // output all objects\n    });\n    events.publish(\"postPutResources\");\n  };\n\n  var putAdditionalObjects = function() {\n    events.publish(\"putAdditionalObjects\");\n    for (var i = 0; i < additionalObjects.length; i++) {\n      var obj = additionalObjects[i];\n      newObjectDeferredBegin(obj.objId, true);\n      out(obj.content);\n      out(\"endobj\");\n    }\n    events.publish(\"postPutAdditionalObjects\");\n  };\n\n  var addFontToFontDictionary = function(font) {\n    fontmap[font.fontName] = fontmap[font.fontName] || {};\n    fontmap[font.fontName][font.fontStyle] = font.id;\n  };\n\n  var addFont = function(\n    postScriptName,\n    fontName,\n    fontStyle,\n    encoding,\n    isStandardFont\n  ) {\n    var font = {\n      id: \"F\" + (Object.keys(fonts).length + 1).toString(10),\n      postScriptName: postScriptName,\n      fontName: fontName,\n      fontStyle: fontStyle,\n      encoding: encoding,\n      isStandardFont: isStandardFont || false,\n      metadata: {}\n    };\n\n    events.publish(\"addFont\", {\n      font: font,\n      instance: this\n    });\n\n    fonts[font.id] = font;\n    addFontToFontDictionary(font);\n    return font.id;\n  };\n\n  var addFonts = function(arrayOfFonts) {\n    for (var i = 0, l = standardFonts.length; i < l; i++) {\n      var fontKey = addFont.call(\n        this,\n        arrayOfFonts[i][0],\n        arrayOfFonts[i][1],\n        arrayOfFonts[i][2],\n        standardFonts[i][3],\n        true\n      );\n\n      if (putOnlyUsedFonts === false) {\n        usedFonts[fontKey] = true;\n      }\n      // adding aliases for standard fonts, this time matching the capitalization\n      var parts = arrayOfFonts[i][0].split(\"-\");\n      addFontToFontDictionary({\n        id: fontKey,\n        fontName: parts[0],\n        fontStyle: parts[1] || \"\"\n      });\n    }\n    events.publish(\"addFonts\", {\n      fonts: fonts,\n      dictionary: fontmap\n    });\n  };\n\n  var SAFE = function __safeCall(fn) {\n    fn.foo = function __safeCallWrapper() {\n      try {\n        return fn.apply(this, arguments);\n      } catch (e) {\n        var stack = e.stack || \"\";\n        if (~stack.indexOf(\" at \")) stack = stack.split(\" at \")[1];\n        var m =\n          \"Error in function \" +\n          stack.split(\"\\n\")[0].split(\"<\")[0] +\n          \": \" +\n          e.message;\n        if (globalObject.console) {\n          globalObject.console.error(m, e);\n          if (globalObject.alert) alert(m);\n        } else {\n          throw new Error(m);\n        }\n      }\n    };\n    fn.foo.bar = fn;\n    return fn.foo;\n  };\n\n  var to8bitStream = function(text, flags) {\n    /**\n     * PDF 1.3 spec:\n     * \"For text strings encoded in Unicode, the first two bytes must be 254 followed by\n     * 255, representing the Unicode byte order marker, U+FEFF. (This sequence conflicts\n     * with the PDFDocEncoding character sequence thorn ydieresis, which is unlikely\n     * to be a meaningful beginning of a word or phrase.) The remainder of the\n     * string consists of Unicode character codes, according to the UTF-16 encoding\n     * specified in the Unicode standard, version 2.0. Commonly used Unicode values\n     * are represented as 2 bytes per character, with the high-order byte appearing first\n     * in the string.\"\n     *\n     * In other words, if there are chars in a string with char code above 255, we\n     * recode the string to UCS2 BE - string doubles in length and BOM is prepended.\n     *\n     * HOWEVER!\n     * Actual *content* (body) text (as opposed to strings used in document properties etc)\n     * does NOT expect BOM. There, it is treated as a literal GID (Glyph ID)\n     *\n     * Because of Adobe's focus on \"you subset your fonts!\" you are not supposed to have\n     * a font that maps directly Unicode (UCS2 / UTF16BE) code to font GID, but you could\n     * fudge it with \"Identity-H\" encoding and custom CIDtoGID map that mimics Unicode\n     * code page. There, however, all characters in the stream are treated as GIDs,\n     * including BOM, which is the reason we need to skip BOM in content text (i.e. that\n     * that is tied to a font).\n     *\n     * To signal this \"special\" PDFEscape / to8bitStream handling mode,\n     * API.text() function sets (unless you overwrite it with manual values\n     * given to API.text(.., flags) )\n     * flags.autoencode = true\n     * flags.noBOM = true\n     *\n     * ===================================================================================\n     * `flags` properties relied upon:\n     *   .sourceEncoding = string with encoding label.\n     *                     \"Unicode\" by default. = encoding of the incoming text.\n     *                     pass some non-existing encoding name\n     *                     (ex: 'Do not touch my strings! I know what I am doing.')\n     *                     to make encoding code skip the encoding step.\n     *   .outputEncoding = Either valid PDF encoding name\n     *                     (must be supported by jsPDF font metrics, otherwise no encoding)\n     *                     or a JS object, where key = sourceCharCode, value = outputCharCode\n     *                     missing keys will be treated as: sourceCharCode === outputCharCode\n     *   .noBOM\n     *       See comment higher above for explanation for why this is important\n     *   .autoencode\n     *       See comment higher above for explanation for why this is important\n     */\n\n    var i,\n      l,\n      sourceEncoding,\n      encodingBlock,\n      outputEncoding,\n      newtext,\n      isUnicode,\n      ch,\n      bch;\n\n    flags = flags || {};\n    sourceEncoding = flags.sourceEncoding || \"Unicode\";\n    outputEncoding = flags.outputEncoding;\n\n    // This 'encoding' section relies on font metrics format\n    // attached to font objects by, among others,\n    // \"Willow Systems' standard_font_metrics plugin\"\n    // see jspdf.plugin.standard_font_metrics.js for format\n    // of the font.metadata.encoding Object.\n    // It should be something like\n    //   .encoding = {'codePages':['WinANSI....'], 'WinANSI...':{code:code, ...}}\n    //   .widths = {0:width, code:width, ..., 'fof':divisor}\n    //   .kerning = {code:{previous_char_code:shift, ..., 'fof':-divisor},...}\n    if (\n      (flags.autoencode || outputEncoding) &&\n      fonts[activeFontKey].metadata &&\n      fonts[activeFontKey].metadata[sourceEncoding] &&\n      fonts[activeFontKey].metadata[sourceEncoding].encoding\n    ) {\n      encodingBlock = fonts[activeFontKey].metadata[sourceEncoding].encoding;\n\n      // each font has default encoding. Some have it clearly defined.\n      if (!outputEncoding && fonts[activeFontKey].encoding) {\n        outputEncoding = fonts[activeFontKey].encoding;\n      }\n\n      // Hmmm, the above did not work? Let's try again, in different place.\n      if (!outputEncoding && encodingBlock.codePages) {\n        outputEncoding = encodingBlock.codePages[0]; // let's say, first one is the default\n      }\n\n      if (typeof outputEncoding === \"string\") {\n        outputEncoding = encodingBlock[outputEncoding];\n      }\n      // we want output encoding to be a JS Object, where\n      // key = sourceEncoding's character code and\n      // value = outputEncoding's character code.\n      if (outputEncoding) {\n        isUnicode = false;\n        newtext = [];\n        for (i = 0, l = text.length; i < l; i++) {\n          ch = outputEncoding[text.charCodeAt(i)];\n          if (ch) {\n            newtext.push(String.fromCharCode(ch));\n          } else {\n            newtext.push(text[i]);\n          }\n\n          // since we are looping over chars anyway, might as well\n          // check for residual unicodeness\n          if (newtext[i].charCodeAt(0) >> 8) {\n            /* more than 255 */\n            isUnicode = true;\n          }\n        }\n        text = newtext.join(\"\");\n      }\n    }\n\n    i = text.length;\n    // isUnicode may be set to false above. Hence the triple-equal to undefined\n    while (isUnicode === undefined && i !== 0) {\n      if (text.charCodeAt(i - 1) >> 8) {\n        /* more than 255 */\n        isUnicode = true;\n      }\n      i--;\n    }\n    if (!isUnicode) {\n      return text;\n    }\n\n    newtext = flags.noBOM ? [] : [254, 255];\n    for (i = 0, l = text.length; i < l; i++) {\n      ch = text.charCodeAt(i);\n      bch = ch >> 8; // divide by 256\n      if (bch >> 8) {\n        /* something left after dividing by 256 second time */\n        throw new Error(\n          \"Character at position \" +\n            i +\n            \" of string '\" +\n            text +\n            \"' exceeds 16bits. Cannot be encoded into UCS-2 BE\"\n        );\n      }\n      newtext.push(bch);\n      newtext.push(ch - (bch << 8));\n    }\n    return String.fromCharCode.apply(undefined, newtext);\n  };\n\n  var pdfEscape = (API.__private__.pdfEscape = API.pdfEscape = function(\n    text,\n    flags\n  ) {\n    /**\n     * Replace '/', '(', and ')' with pdf-safe versions\n     *\n     * Doing to8bitStream does NOT make this PDF display unicode text. For that\n     * we also need to reference a unicode font and embed it - royal pain in the rear.\n     *\n     * There is still a benefit to to8bitStream - PDF simply cannot handle 16bit chars,\n     * which JavaScript Strings are happy to provide. So, while we still cannot display\n     * 2-byte characters property, at least CONDITIONALLY converting (entire string containing)\n     * 16bit chars to (USC-2-BE) 2-bytes per char + BOM streams we ensure that entire PDF\n     * is still parseable.\n     * This will allow immediate support for unicode in document properties strings.\n     */\n    return to8bitStream(text, flags)\n      .replace(/\\\\/g, \"\\\\\\\\\")\n      .replace(/\\(/g, \"\\\\(\")\n      .replace(/\\)/g, \"\\\\)\");\n  });\n\n  var beginPage = (API.__private__.beginPage = function(format) {\n    pages[++page] = [];\n    pagesContext[page] = {\n      objId: 0,\n      contentsObjId: 0,\n      userUnit: Number(userUnit),\n      artBox: null,\n      bleedBox: null,\n      cropBox: null,\n      trimBox: null,\n      mediaBox: {\n        bottomLeftX: 0,\n        bottomLeftY: 0,\n        topRightX: Number(format[0]),\n        topRightY: Number(format[1])\n      }\n    };\n    _setPage(page);\n    setOutputDestination(pages[currentPage]);\n  });\n\n  var _addPage = function(parmFormat, parmOrientation) {\n    var dimensions, width, height;\n\n    orientation = parmOrientation || orientation;\n\n    if (typeof parmFormat === \"string\") {\n      dimensions = getPageFormat(parmFormat.toLowerCase());\n      if (Array.isArray(dimensions)) {\n        width = dimensions[0];\n        height = dimensions[1];\n      }\n    }\n\n    if (Array.isArray(parmFormat)) {\n      width = parmFormat[0] * scaleFactor;\n      height = parmFormat[1] * scaleFactor;\n    }\n\n    if (isNaN(width)) {\n      width = format[0];\n      height = format[1];\n    }\n\n    if (width > 14400 || height > 14400) {\n      console.warn(\n        \"A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400\"\n      );\n      width = Math.min(14400, width);\n      height = Math.min(14400, height);\n    }\n\n    format = [width, height];\n\n    switch (orientation.substr(0, 1)) {\n      case \"l\":\n        if (height > width) {\n          format = [height, width];\n        }\n        break;\n      case \"p\":\n        if (width > height) {\n          format = [height, width];\n        }\n        break;\n    }\n\n    beginPage(format);\n\n    // Set line width\n    setLineWidth(lineWidth);\n    // Set draw color\n    out(strokeColor);\n    // resurrecting non-default line caps, joins\n    if (lineCapID !== 0) {\n      out(lineCapID + \" J\");\n    }\n    if (lineJoinID !== 0) {\n      out(lineJoinID + \" j\");\n    }\n    events.publish(\"addPage\", {\n      pageNumber: page\n    });\n  };\n\n  var _deletePage = function(n) {\n    if (n > 0 && n <= page) {\n      pages.splice(n, 1);\n      pagesContext.splice(n, 1);\n      page--;\n      if (currentPage > page) {\n        currentPage = page;\n      }\n      this.setPage(currentPage);\n    }\n  };\n\n  var _setPage = function(n) {\n    if (n > 0 && n <= page) {\n      currentPage = n;\n    }\n  };\n\n  var getNumberOfPages = (API.__private__.getNumberOfPages = API.getNumberOfPages = function() {\n    return pages.length - 1;\n  });\n\n  /**\n   * Returns a document-specific font key - a label assigned to a\n   * font name + font type combination at the time the font was added\n   * to the font inventory.\n   *\n   * Font key is used as label for the desired font for a block of text\n   * to be added to the PDF document stream.\n   * @private\n   * @function\n   * @param fontName {string} can be undefined on \"falthy\" to indicate \"use current\"\n   * @param fontStyle {string} can be undefined on \"falthy\" to indicate \"use current\"\n   * @returns {string} Font key.\n   * @ignore\n   */\n  var getFont = function(fontName, fontStyle, options) {\n    var key = undefined,\n      fontNameLowerCase;\n    options = options || {};\n\n    fontName =\n      fontName !== undefined ? fontName : fonts[activeFontKey].fontName;\n    fontStyle =\n      fontStyle !== undefined ? fontStyle : fonts[activeFontKey].fontStyle;\n    fontNameLowerCase = fontName.toLowerCase();\n\n    if (\n      fontmap[fontNameLowerCase] !== undefined &&\n      fontmap[fontNameLowerCase][fontStyle] !== undefined\n    ) {\n      key = fontmap[fontNameLowerCase][fontStyle];\n    } else if (\n      fontmap[fontName] !== undefined &&\n      fontmap[fontName][fontStyle] !== undefined\n    ) {\n      key = fontmap[fontName][fontStyle];\n    } else {\n      if (options.disableWarning === false) {\n        console.warn(\n          \"Unable to look up font label for font '\" +\n            fontName +\n            \"', '\" +\n            fontStyle +\n            \"'. Refer to getFontList() for available fonts.\"\n        );\n      }\n    }\n\n    if (!key && !options.noFallback) {\n      key = fontmap[\"times\"][fontStyle];\n      if (key == null) {\n        key = fontmap[\"times\"][\"normal\"];\n      }\n    }\n    return key;\n  };\n\n  var putInfo = (API.__private__.putInfo = function() {\n    var objectId = newObject();\n    var encryptor = function(data) {\n      return data;\n    };\n    if (encryptionOptions !== null) {\n      encryptor = encryption.encryptor(objectId, 0);\n    }\n    out(\"<<\");\n    out(\"/Producer (\" + pdfEscape(encryptor(\"jsPDF \" + jsPDF.version)) + \")\");\n    for (var key in documentProperties) {\n      if (documentProperties.hasOwnProperty(key) && documentProperties[key]) {\n        out(\n          \"/\" +\n            key.substr(0, 1).toUpperCase() +\n            key.substr(1) +\n            \" (\" +\n            pdfEscape(encryptor(documentProperties[key])) +\n            \")\"\n        );\n      }\n    }\n    out(\"/CreationDate (\" + pdfEscape(encryptor(creationDate)) + \")\");\n    out(\">>\");\n    out(\"endobj\");\n  });\n\n  var putCatalog = (API.__private__.putCatalog = function(options) {\n    options = options || {};\n    var tmpRootDictionaryObjId =\n      options.rootDictionaryObjId || rootDictionaryObjId;\n    newObject();\n    out(\"<<\");\n    out(\"/Type /Catalog\");\n    out(\"/Pages \" + tmpRootDictionaryObjId + \" 0 R\");\n    // PDF13ref Section 7.2.1\n    if (!zoomMode) zoomMode = \"fullwidth\";\n    switch (zoomMode) {\n      case \"fullwidth\":\n        out(\"/OpenAction [3 0 R /FitH null]\");\n        break;\n      case \"fullheight\":\n        out(\"/OpenAction [3 0 R /FitV null]\");\n        break;\n      case \"fullpage\":\n        out(\"/OpenAction [3 0 R /Fit]\");\n        break;\n      case \"original\":\n        out(\"/OpenAction [3 0 R /XYZ null null 1]\");\n        break;\n      default:\n        var pcn = \"\" + zoomMode;\n        if (pcn.substr(pcn.length - 1) === \"%\")\n          zoomMode = parseInt(zoomMode) / 100;\n        if (typeof zoomMode === \"number\") {\n          out(\"/OpenAction [3 0 R /XYZ null null \" + f2(zoomMode) + \"]\");\n        }\n    }\n    if (!layoutMode) layoutMode = \"continuous\";\n    switch (layoutMode) {\n      case \"continuous\":\n        out(\"/PageLayout /OneColumn\");\n        break;\n      case \"single\":\n        out(\"/PageLayout /SinglePage\");\n        break;\n      case \"two\":\n      case \"twoleft\":\n        out(\"/PageLayout /TwoColumnLeft\");\n        break;\n      case \"tworight\":\n        out(\"/PageLayout /TwoColumnRight\");\n        break;\n    }\n    if (pageMode) {\n      /**\n       * A name object specifying how the document should be displayed when opened:\n       * UseNone      : Neither document outline nor thumbnail images visible -- DEFAULT\n       * UseOutlines  : Document outline visible\n       * UseThumbs    : Thumbnail images visible\n       * FullScreen   : Full-screen mode, with no menu bar, window controls, or any other window visible\n       */\n      out(\"/PageMode /\" + pageMode);\n    }\n    events.publish(\"putCatalog\");\n    out(\">>\");\n    out(\"endobj\");\n  });\n\n  var putTrailer = (API.__private__.putTrailer = function() {\n    out(\"trailer\");\n    out(\"<<\");\n    out(\"/Size \" + (objectNumber + 1));\n    // Root and Info must be the last and second last objects written respectively\n    out(\"/Root \" + objectNumber + \" 0 R\");\n    out(\"/Info \" + (objectNumber - 1) + \" 0 R\");\n    if (encryptionOptions !== null) {\n      out(\"/Encrypt \" + encryption.oid + \" 0 R\");\n    }\n    out(\"/ID [ <\" + fileId + \"> <\" + fileId + \"> ]\");\n    out(\">>\");\n  });\n\n  var putHeader = (API.__private__.putHeader = function() {\n    out(\"%PDF-\" + pdfVersion);\n    out(\"%\\xBA\\xDF\\xAC\\xE0\");\n  });\n\n  var putXRef = (API.__private__.putXRef = function() {\n    var p = \"0000000000\";\n\n    out(\"xref\");\n    out(\"0 \" + (objectNumber + 1));\n    out(\"0000000000 65535 f \");\n    for (var i = 1; i <= objectNumber; i++) {\n      var offset = offsets[i];\n      if (typeof offset === \"function\") {\n        out((p + offsets[i]()).slice(-10) + \" 00000 n \");\n      } else {\n        if (typeof offsets[i] !== \"undefined\") {\n          out((p + offsets[i]).slice(-10) + \" 00000 n \");\n        } else {\n          out(\"0000000000 00000 n \");\n        }\n      }\n    }\n  });\n\n  var buildDocument = (API.__private__.buildDocument = function() {\n    resetDocument();\n    setOutputDestination(content);\n\n    events.publish(\"buildDocument\");\n\n    putHeader();\n    putPages();\n    putAdditionalObjects();\n    putResources();\n    if (encryptionOptions !== null) putEncryptionDict();\n    putInfo();\n    putCatalog();\n\n    var offsetOfXRef = contentLength;\n    putXRef();\n    putTrailer();\n    out(\"startxref\");\n    out(\"\" + offsetOfXRef);\n    out(\"%%EOF\");\n\n    setOutputDestination(pages[currentPage]);\n\n    return content.join(\"\\n\");\n  });\n\n  var getBlob = (API.__private__.getBlob = function(data) {\n    return new Blob([getArrayBuffer(data)], {\n      type: \"application/pdf\"\n    });\n  });\n\n  var clearDomNode = function(node) {\n    while (node.firstChild) {\n      node.removeChild(node.firstChild);\n    }\n  };\n\n  var initializeNewWindow = function(window) {\n    var targetDocument = window.document;\n    var html = targetDocument.documentElement;\n    var head = targetDocument.head;\n    var body = targetDocument.body;\n    var style;\n\n    if (!head) {\n      head = targetDocument.createElement(\"head\");\n      html.appendChild(head);\n    }\n\n    if (!body) {\n      body = targetDocument.createElement(\"body\");\n      html.appendChild(body);\n    }\n\n    clearDomNode(head);\n    clearDomNode(body);\n\n    style = targetDocument.createElement(\"style\");\n    style.appendChild(\n      targetDocument.createTextNode(\n        \"html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}\"\n      )\n    );\n\n    head.appendChild(style);\n\n    return {\n      document: targetDocument,\n      body: body\n    };\n  };\n\n  /**\n   * Generates the PDF document.\n   *\n   * If `type` argument is undefined, output is raw body of resulting PDF returned as a string.\n   *\n   * @param {string} type A string identifying one of the possible output types.<br/>\n   *                      Possible values are: <br/>\n   *                          'arraybuffer' -> (ArrayBuffer)<br/>\n   *                          'blob' -> (Blob)<br/>\n   *                          'bloburi'/'bloburl' -> (string)<br/>\n   *                          'datauristring'/'dataurlstring' -> (string)<br/>\n   *                          'datauri'/'dataurl' -> (undefined) -> change location to generated datauristring/dataurlstring<br/>\n   *                          'dataurlnewwindow' -> (window | null | undefined) throws error if global isn't a window object(node)<br/>\n   *                          'pdfobjectnewwindow' -> (window | null) throws error if global isn't a window object(node)<br/>\n   *                          'pdfjsnewwindow' -> (wind | null)\n   * @param {Object|string} options An object providing some additional signalling to PDF generator.<br/>\n   *                                Possible options are 'filename'.<br/>\n   *                                A string can be passed instead of {filename:string} and defaults to 'generated.pdf'\n   * @function\n   * @instance\n   * @returns {string|window|ArrayBuffer|Blob|jsPDF|null|undefined}\n   * @memberof jsPDF#\n   * @name output\n   */\n  var output = (API.output = API.__private__.output = SAFE(function output(\n    type,\n    options\n  ) {\n    options = options || {};\n\n    if (typeof options === \"string\") {\n      options = {\n        filename: options\n      };\n    } else {\n      options.filename = options.filename || \"generated.pdf\";\n    }\n\n    switch (type) {\n      case undefined:\n        return buildDocument();\n      case \"save\":\n        API.save(options.filename);\n        break;\n      case \"arraybuffer\":\n        return getArrayBuffer(buildDocument());\n      case \"blob\":\n        return getBlob(buildDocument());\n      case \"bloburi\":\n      case \"bloburl\":\n        // Developer is responsible of calling revokeObjectURL\n        if (\n          typeof globalObject.URL !== \"undefined\" &&\n          typeof globalObject.URL.createObjectURL === \"function\"\n        ) {\n          return (\n            (globalObject.URL &&\n              globalObject.URL.createObjectURL(getBlob(buildDocument()))) ||\n            void 0\n          );\n        } else {\n          console.warn(\n            \"bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.\"\n          );\n        }\n        break;\n      case \"datauristring\":\n      case \"dataurlstring\":\n        var dataURI = \"\";\n        var pdfDocument = buildDocument();\n        try {\n          dataURI = btoa(pdfDocument);\n        } catch (e) {\n          dataURI = btoa(unescape(encodeURIComponent(pdfDocument)));\n        }\n        return (\n          \"data:application/pdf;filename=\" +\n          encodeURIComponent(options.filename) +\n          \";base64,\" +\n          dataURI\n        );\n      case \"pdfobjectnewwindow\":\n        if (\n          Object.prototype.toString.call(globalObject) === \"[object Window]\"\n        ) {\n          var pdfObjectUrl =\n            \"https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js\";\n          var useDefaultPdfObjectUrl = !options.pdfObjectUrl;\n\n          if (!useDefaultPdfObjectUrl) {\n            pdfObjectUrl = options.pdfObjectUrl;\n          }\n\n          var nW = globalObject.open();\n\n          if (nW !== null) {\n            var initializedPdfObjectWindow = initializeNewWindow(nW);\n            var pdfObjectScript = initializedPdfObjectWindow.document.createElement(\n              \"script\"\n            );\n            var scope = this;\n\n            pdfObjectScript.src = pdfObjectUrl;\n\n            if (useDefaultPdfObjectUrl) {\n              pdfObjectScript.integrity =\n                \"sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==\";\n              pdfObjectScript.crossOrigin = \"anonymous\";\n            }\n\n            pdfObjectScript.onload = function() {\n              nW.PDFObject.embed(scope.output(\"dataurlstring\"), options);\n            };\n\n            initializedPdfObjectWindow.body.appendChild(pdfObjectScript);\n          }\n          return nW;\n        } else {\n          throw new Error(\n            \"The option pdfobjectnewwindow just works in a browser-environment.\"\n          );\n        }\n      case \"pdfjsnewwindow\":\n        if (\n          Object.prototype.toString.call(globalObject) === \"[object Window]\"\n        ) {\n          var pdfJsUrl = options.pdfJsUrl || \"examples/PDF.js/web/viewer.html\";\n          var PDFjsNewWindow = globalObject.open();\n\n          if (PDFjsNewWindow !== null) {\n            var initializedPdfJsWindow = initializeNewWindow(PDFjsNewWindow);\n            var pdfViewer = initializedPdfJsWindow.document.createElement(\n              \"iframe\"\n            );\n            var pdfJsQueryChar = pdfJsUrl.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n            var scope = this;\n\n            pdfViewer.id = \"pdfViewer\";\n            pdfViewer.width = \"500px\";\n            pdfViewer.height = \"400px\";\n            pdfViewer.src =\n              pdfJsUrl +\n              pdfJsQueryChar +\n              \"file=&downloadName=\" +\n              encodeURIComponent(options.filename);\n\n            pdfViewer.onload = function() {\n              PDFjsNewWindow.document.title = options.filename;\n              pdfViewer.contentWindow.PDFViewerApplication.open(\n                scope.output(\"bloburl\")\n              );\n            };\n\n            initializedPdfJsWindow.body.appendChild(pdfViewer);\n          }\n          return PDFjsNewWindow;\n        } else {\n          throw new Error(\n            \"The option pdfjsnewwindow just works in a browser-environment.\"\n          );\n        }\n      case \"dataurlnewwindow\":\n        if (\n          Object.prototype.toString.call(globalObject) === \"[object Window]\"\n        ) {\n          var dataURLNewWindow = globalObject.open();\n          if (dataURLNewWindow !== null) {\n            var initializedDataUrlWindow = initializeNewWindow(\n              dataURLNewWindow\n            );\n            var dataUrlFrame = initializedDataUrlWindow.document.createElement(\n              \"iframe\"\n            );\n\n            dataUrlFrame.src = this.output(\"datauristring\", options);\n            initializedDataUrlWindow.body.appendChild(dataUrlFrame);\n            dataURLNewWindow.document.title = options.filename;\n          }\n          if (dataURLNewWindow || typeof safari === \"undefined\")\n            return dataURLNewWindow;\n        } else {\n          throw new Error(\n            \"The option dataurlnewwindow just works in a browser-environment.\"\n          );\n        }\n        break;\n      case \"datauri\":\n      case \"dataurl\":\n        return (globalObject.document.location.href = this.output(\n          \"datauristring\",\n          options\n        ));\n      default:\n        return null;\n    }\n  }));\n\n  /**\n   * Used to see if a supplied hotfix was requested when the pdf instance was created.\n   * @param {string} hotfixName - The name of the hotfix to check.\n   * @returns {boolean}\n   */\n  var hasHotfix = function(hotfixName) {\n    return (\n      Array.isArray(hotfixes) === true && hotfixes.indexOf(hotfixName) > -1\n    );\n  };\n\n  switch (unit) {\n    case \"pt\":\n      scaleFactor = 1;\n      break;\n    case \"mm\":\n      scaleFactor = 72 / 25.4;\n      break;\n    case \"cm\":\n      scaleFactor = 72 / 2.54;\n      break;\n    case \"in\":\n      scaleFactor = 72;\n      break;\n    case \"px\":\n      if (hasHotfix(\"px_scaling\") == true) {\n        scaleFactor = 72 / 96;\n      } else {\n        scaleFactor = 96 / 72;\n      }\n      break;\n    case \"pc\":\n      scaleFactor = 12;\n      break;\n    case \"em\":\n      scaleFactor = 12;\n      break;\n    case \"ex\":\n      scaleFactor = 6;\n      break;\n    default:\n      if (typeof unit === \"number\") {\n        scaleFactor = unit;\n      } else {\n        throw new Error(\"Invalid unit: \" + unit);\n      }\n  }\n\n  var encryption = null;\n  setCreationDate();\n  setFileId();\n\n  var getEncryptor = function(objectId) {\n    if (encryptionOptions !== null) {\n      return encryption.encryptor(objectId, 0);\n    }\n    return function(data) {\n      return data;\n    };\n  };\n\n  //---------------------------------------\n  // Public API\n\n  var getPageInfo = (API.__private__.getPageInfo = API.getPageInfo = function(\n    pageNumberOneBased\n  ) {\n    if (isNaN(pageNumberOneBased) || pageNumberOneBased % 1 !== 0) {\n      throw new Error(\"Invalid argument passed to jsPDF.getPageInfo\");\n    }\n    var objId = pagesContext[pageNumberOneBased].objId;\n    return {\n      objId: objId,\n      pageNumber: pageNumberOneBased,\n      pageContext: pagesContext[pageNumberOneBased]\n    };\n  });\n\n  var getPageInfoByObjId = (API.__private__.getPageInfoByObjId = function(\n    objId\n  ) {\n    if (isNaN(objId) || objId % 1 !== 0) {\n      throw new Error(\"Invalid argument passed to jsPDF.getPageInfoByObjId\");\n    }\n    for (var pageNumber in pagesContext) {\n      if (pagesContext[pageNumber].objId === objId) {\n        break;\n      }\n    }\n    return getPageInfo(pageNumber);\n  });\n\n  var getCurrentPageInfo = (API.__private__.getCurrentPageInfo = API.getCurrentPageInfo = function() {\n    return {\n      objId: pagesContext[currentPage].objId,\n      pageNumber: currentPage,\n      pageContext: pagesContext[currentPage]\n    };\n  });\n\n  /**\n   * Adds (and transfers the focus to) new page to the PDF document.\n   * @param format {String/Array} The format of the new page. Can be: <ul><li>a0 - a10</li><li>b0 - b10</li><li>c0 - c10</li><li>dl</li><li>letter</li><li>government-letter</li><li>legal</li><li>junior-legal</li><li>ledger</li><li>tabloid</li><li>credit-card</li></ul><br />\n   * Default is \"a4\". If you want to use your own format just pass instead of one of the above predefined formats the size as an number-array, e.g. [595.28, 841.89]\n   * @param orientation {string} Orientation of the new page. Possible values are \"portrait\" or \"landscape\" (or shortcuts \"p\" (Default), \"l\").\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   *\n   * @memberof jsPDF#\n   * @name addPage\n   */\n  API.addPage = function() {\n    _addPage.apply(this, arguments);\n    return this;\n  };\n  /**\n   * Adds (and transfers the focus to) new page to the PDF document.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   *\n   * @memberof jsPDF#\n   * @name setPage\n   * @param {number} page Switch the active page to the page number specified (indexed starting at 1).\n   * @example\n   * doc = jsPDF()\n   * doc.addPage()\n   * doc.addPage()\n   * doc.text('I am on page 3', 10, 10)\n   * doc.setPage(1)\n   * doc.text('I am on page 1', 10, 10)\n   */\n  API.setPage = function() {\n    _setPage.apply(this, arguments);\n    setOutputDestination.call(this, pages[currentPage]);\n    return this;\n  };\n\n  /**\n   * @name insertPage\n   * @memberof jsPDF#\n   *\n   * @function\n   * @instance\n   * @param {Object} beforePage\n   * @returns {jsPDF}\n   */\n  API.insertPage = function(beforePage) {\n    this.addPage();\n    this.movePage(currentPage, beforePage);\n    return this;\n  };\n\n  /**\n   * @name movePage\n   * @memberof jsPDF#\n   * @function\n   * @instance\n   * @param {number} targetPage\n   * @param {number} beforePage\n   * @returns {jsPDF}\n   */\n  API.movePage = function(targetPage, beforePage) {\n    var tmpPages, tmpPagesContext;\n    if (targetPage > beforePage) {\n      tmpPages = pages[targetPage];\n      tmpPagesContext = pagesContext[targetPage];\n      for (var i = targetPage; i > beforePage; i--) {\n        pages[i] = pages[i - 1];\n        pagesContext[i] = pagesContext[i - 1];\n      }\n      pages[beforePage] = tmpPages;\n      pagesContext[beforePage] = tmpPagesContext;\n      this.setPage(beforePage);\n    } else if (targetPage < beforePage) {\n      tmpPages = pages[targetPage];\n      tmpPagesContext = pagesContext[targetPage];\n      for (var j = targetPage; j < beforePage; j++) {\n        pages[j] = pages[j + 1];\n        pagesContext[j] = pagesContext[j + 1];\n      }\n      pages[beforePage] = tmpPages;\n      pagesContext[beforePage] = tmpPagesContext;\n      this.setPage(beforePage);\n    }\n    return this;\n  };\n\n  /**\n   * Deletes a page from the PDF.\n   * @name deletePage\n   * @memberof jsPDF#\n   * @function\n   * @param {number} targetPage\n   * @instance\n   * @returns {jsPDF}\n   */\n  API.deletePage = function() {\n    _deletePage.apply(this, arguments);\n    return this;\n  };\n\n  /**\n   * Adds text to page. Supports adding multiline text when 'text' argument is an Array of Strings.\n   *\n   * @function\n   * @instance\n   * @param {String|Array} text String or array of strings to be added to the page. Each line is shifted one line down per font, spacing settings declared before this call.\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page.\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page.\n   * @param {Object} [options] - Collection of settings signaling how the text must be encoded.\n   * @param {string} [options.align=left] - The alignment of the text, possible values: left, center, right, justify.\n   * @param {string} [options.baseline=alphabetic] - Sets text baseline used when drawing the text, possible values: alphabetic, ideographic, bottom, top, middle, hanging\n   * @param {number|Matrix} [options.angle=0] - Rotate the text clockwise or counterclockwise. Expects the angle in degree.\n   * @param {number} [options.rotationDirection=1] - Direction of the rotation. 0 = clockwise, 1 = counterclockwise.\n   * @param {number} [options.charSpace=0] - The space between each letter.\n   * @param {number} [options.horizontalScale=1] - Horizontal scale of the text as a factor of the regular size.\n   * @param {number} [options.lineHeightFactor=1.15] - The lineheight of each line.\n   * @param {Object} [options.flags] - Flags for to8bitStream.\n   * @param {boolean} [options.flags.noBOM=true] - Don't add BOM to Unicode-text.\n   * @param {boolean} [options.flags.autoencode=true] - Autoencode the Text.\n   * @param {number} [options.maxWidth=0] - Split the text by given width, 0 = no split.\n   * @param {string} [options.renderingMode=fill] - Set how the text should be rendered, possible values: fill, stroke, fillThenStroke, invisible, fillAndAddForClipping, strokeAndAddPathForClipping, fillThenStrokeAndAddToPathForClipping, addToPathForClipping.\n   * @param {boolean} [options.isInputVisual] - Option for the BidiEngine\n   * @param {boolean} [options.isOutputVisual] - Option for the BidiEngine\n   * @param {boolean} [options.isInputRtl] - Option for the BidiEngine\n   * @param {boolean} [options.isOutputRtl] - Option for the BidiEngine\n   * @param {boolean} [options.isSymmetricSwapping] - Option for the BidiEngine\n   * @param {number|Matrix} transform If transform is a number the text will be rotated by this value around the anchor set by x and y.\n   *\n   * If it is a Matrix, this matrix gets directly applied to the text, which allows shearing\n   * effects etc.; the x and y offsets are then applied AFTER the coordinate system has been established by this\n   * matrix. This means passing a rotation matrix that is equivalent to some rotation angle will in general yield a\n   * DIFFERENT result. A matrix is only allowed in \"advanced\" API mode.\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name text\n   */\n  API.__private__.text = API.text = function(text, x, y, options, transform) {\n    /*\n     * Inserts something like this into PDF\n     *   BT\n     *    /F1 16 Tf  % Font name + size\n     *    16 TL % How many units down for next line in multiline text\n     *    0 g % color\n     *    28.35 813.54 Td % position\n     *    (line one) Tj\n     *    T* (line two) Tj\n     *    T* (line three) Tj\n     *   ET\n     */\n    options = options || {};\n    var scope = options.scope || this;\n    var payload, da, angle, align, charSpace, maxWidth, flags, horizontalScale;\n\n    // Pre-August-2012 the order of arguments was function(x, y, text, flags)\n    // in effort to make all calls have similar signature like\n    //   function(data, coordinates... , miscellaneous)\n    // this method had its args flipped.\n    // code below allows backward compatibility with old arg order.\n    if (\n      typeof text === \"number\" &&\n      typeof x === \"number\" &&\n      (typeof y === \"string\" || Array.isArray(y))\n    ) {\n      var tmp = y;\n      y = x;\n      x = text;\n      text = tmp;\n    }\n\n    var transformationMatrix;\n\n    if (arguments[3] instanceof Matrix === false) {\n      flags = arguments[3];\n      angle = arguments[4];\n      align = arguments[5];\n\n      if (typeof flags !== \"object\" || flags === null) {\n        if (typeof angle === \"string\") {\n          align = angle;\n          angle = null;\n        }\n        if (typeof flags === \"string\") {\n          align = flags;\n          flags = null;\n        }\n        if (typeof flags === \"number\") {\n          angle = flags;\n          flags = null;\n        }\n        options = {\n          flags: flags,\n          angle: angle,\n          align: align\n        };\n      }\n    } else {\n      advancedApiModeTrap(\n        \"The transform parameter of text() with a Matrix value\"\n      );\n      transformationMatrix = transform;\n    }\n\n    if (isNaN(x) || isNaN(y) || typeof text === \"undefined\" || text === null) {\n      throw new Error(\"Invalid arguments passed to jsPDF.text\");\n    }\n\n    if (text.length === 0) {\n      return scope;\n    }\n\n    var xtra = \"\";\n    var isHex = false;\n    var lineHeight =\n      typeof options.lineHeightFactor === \"number\"\n        ? options.lineHeightFactor\n        : lineHeightFactor;\n    var scaleFactor = scope.internal.scaleFactor;\n\n    function ESC(s) {\n      s = s.split(\"\\t\").join(Array(options.TabLen || 9).join(\" \"));\n      return pdfEscape(s, flags);\n    }\n\n    function transformTextToSpecialArray(text) {\n      //we don't want to destroy original text array, so cloning it\n      var sa = text.concat();\n      var da = [];\n      var len = sa.length;\n      var curDa;\n      //we do array.join('text that must not be PDFescaped\")\n      //thus, pdfEscape each component separately\n      while (len--) {\n        curDa = sa.shift();\n        if (typeof curDa === \"string\") {\n          da.push(curDa);\n        } else {\n          if (\n            Array.isArray(text) &&\n            (curDa.length === 1 ||\n              (curDa[1] === undefined && curDa[2] === undefined))\n          ) {\n            da.push(curDa[0]);\n          } else {\n            da.push([curDa[0], curDa[1], curDa[2]]);\n          }\n        }\n      }\n      return da;\n    }\n\n    function processTextByFunction(text, processingFunction) {\n      var result;\n      if (typeof text === \"string\") {\n        result = processingFunction(text)[0];\n      } else if (Array.isArray(text)) {\n        //we don't want to destroy original text array, so cloning it\n        var sa = text.concat();\n        var da = [];\n        var len = sa.length;\n        var curDa;\n        var tmpResult;\n        //we do array.join('text that must not be PDFescaped\")\n        //thus, pdfEscape each component separately\n        while (len--) {\n          curDa = sa.shift();\n          if (typeof curDa === \"string\") {\n            da.push(processingFunction(curDa)[0]);\n          } else if (Array.isArray(curDa) && typeof curDa[0] === \"string\") {\n            tmpResult = processingFunction(curDa[0], curDa[1], curDa[2]);\n            da.push([tmpResult[0], tmpResult[1], tmpResult[2]]);\n          }\n        }\n        result = da;\n      }\n      return result;\n    }\n\n    //Check if text is of type String\n    var textIsOfTypeString = false;\n    var tmpTextIsOfTypeString = true;\n\n    if (typeof text === \"string\") {\n      textIsOfTypeString = true;\n    } else if (Array.isArray(text)) {\n      //we don't want to destroy original text array, so cloning it\n      var sa = text.concat();\n      da = [];\n      var len = sa.length;\n      var curDa;\n      //we do array.join('text that must not be PDFescaped\")\n      //thus, pdfEscape each component separately\n      while (len--) {\n        curDa = sa.shift();\n        if (\n          typeof curDa !== \"string\" ||\n          (Array.isArray(curDa) && typeof curDa[0] !== \"string\")\n        ) {\n          tmpTextIsOfTypeString = false;\n        }\n      }\n      textIsOfTypeString = tmpTextIsOfTypeString;\n    }\n    if (textIsOfTypeString === false) {\n      throw new Error(\n        'Type of text must be string or Array. \"' +\n          text +\n          '\" is not recognized.'\n      );\n    }\n\n    //If there are any newlines in text, we assume\n    //the user wanted to print multiple lines, so break the\n    //text up into an array. If the text is already an array,\n    //we assume the user knows what they are doing.\n    //Convert text into an array anyway to simplify\n    //later code.\n\n    if (typeof text === \"string\") {\n      if (text.match(/[\\r?\\n]/)) {\n        text = text.split(/\\r\\n|\\r|\\n/g);\n      } else {\n        text = [text];\n      }\n    }\n\n    //baseline\n    var height = activeFontSize / scope.internal.scaleFactor;\n    var descent = height * (lineHeight - 1);\n\n    switch (options.baseline) {\n      case \"bottom\":\n        y -= descent;\n        break;\n      case \"top\":\n        y += height - descent;\n        break;\n      case \"hanging\":\n        y += height - 2 * descent;\n        break;\n      case \"middle\":\n        y += height / 2 - descent;\n        break;\n      case \"ideographic\":\n      case \"alphabetic\":\n      default:\n        // do nothing, everything is fine\n        break;\n    }\n\n    //multiline\n    maxWidth = options.maxWidth || 0;\n\n    if (maxWidth > 0) {\n      if (typeof text === \"string\") {\n        text = scope.splitTextToSize(text, maxWidth);\n      } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\n        text = text.reduce(function(acc, textLine) {\n          return acc.concat(scope.splitTextToSize(textLine, maxWidth));\n        }, []);\n      }\n    }\n\n    //creating Payload-Object to make text byRef\n    payload = {\n      text: text,\n      x: x,\n      y: y,\n      options: options,\n      mutex: {\n        pdfEscape: pdfEscape,\n        activeFontKey: activeFontKey,\n        fonts: fonts,\n        activeFontSize: activeFontSize\n      }\n    };\n    events.publish(\"preProcessText\", payload);\n\n    text = payload.text;\n    options = payload.options;\n\n    //angle\n    angle = options.angle;\n\n    if (\n      transformationMatrix instanceof Matrix === false &&\n      angle &&\n      typeof angle === \"number\"\n    ) {\n      angle *= Math.PI / 180;\n\n      if (options.rotationDirection === 0) {\n        angle = -angle;\n      }\n\n      if (apiMode === ApiMode.ADVANCED) {\n        angle = -angle;\n      }\n\n      var c = Math.cos(angle);\n      var s = Math.sin(angle);\n      transformationMatrix = new Matrix(c, s, -s, c, 0, 0);\n    } else if (angle && angle instanceof Matrix) {\n      transformationMatrix = angle;\n    }\n\n    if (apiMode === ApiMode.ADVANCED && !transformationMatrix) {\n      transformationMatrix = identityMatrix;\n    }\n\n    //charSpace\n\n    charSpace = options.charSpace || activeCharSpace;\n\n    if (typeof charSpace !== \"undefined\") {\n      xtra += hpf(scale(charSpace)) + \" Tc\\n\";\n      this.setCharSpace(this.getCharSpace() || 0);\n    }\n\n    horizontalScale = options.horizontalScale;\n    if (typeof horizontalScale !== \"undefined\") {\n      xtra += hpf(horizontalScale * 100) + \" Tz\\n\";\n    }\n\n    //lang\n\n    var lang = options.lang;\n\n    if (lang) {\n      //    xtra += \"/Lang (\" + lang +\")\\n\";\n    }\n\n    //renderingMode\n    var renderingMode = -1;\n    var parmRenderingMode =\n      typeof options.renderingMode !== \"undefined\"\n        ? options.renderingMode\n        : options.stroke;\n    var pageContext = scope.internal.getCurrentPageInfo().pageContext;\n\n    switch (parmRenderingMode) {\n      case 0:\n      case false:\n      case \"fill\":\n        renderingMode = 0;\n        break;\n      case 1:\n      case true:\n      case \"stroke\":\n        renderingMode = 1;\n        break;\n      case 2:\n      case \"fillThenStroke\":\n        renderingMode = 2;\n        break;\n      case 3:\n      case \"invisible\":\n        renderingMode = 3;\n        break;\n      case 4:\n      case \"fillAndAddForClipping\":\n        renderingMode = 4;\n        break;\n      case 5:\n      case \"strokeAndAddPathForClipping\":\n        renderingMode = 5;\n        break;\n      case 6:\n      case \"fillThenStrokeAndAddToPathForClipping\":\n        renderingMode = 6;\n        break;\n      case 7:\n      case \"addToPathForClipping\":\n        renderingMode = 7;\n        break;\n    }\n\n    var usedRenderingMode =\n      typeof pageContext.usedRenderingMode !== \"undefined\"\n        ? pageContext.usedRenderingMode\n        : -1;\n\n    //if the coder wrote it explicitly to use a specific\n    //renderingMode, then use it\n    if (renderingMode !== -1) {\n      xtra += renderingMode + \" Tr\\n\";\n      //otherwise check if we used the rendering Mode already\n      //if so then set the rendering Mode...\n    } else if (usedRenderingMode !== -1) {\n      xtra += \"0 Tr\\n\";\n    }\n\n    if (renderingMode !== -1) {\n      pageContext.usedRenderingMode = renderingMode;\n    }\n\n    //align\n    align = options.align || \"left\";\n    var leading = activeFontSize * lineHeight;\n    var pageWidth = scope.internal.pageSize.getWidth();\n    var activeFont = fonts[activeFontKey];\n    charSpace = options.charSpace || activeCharSpace;\n    maxWidth = options.maxWidth || 0;\n\n    var lineWidths;\n    flags = Object.assign({ autoencode: true, noBOM: true }, options.flags);\n\n    var wordSpacingPerLine = [];\n    var findWidth = function(v) {\n      return (\n        (scope.getStringUnitWidth(v, {\n          font: activeFont,\n          charSpace: charSpace,\n          fontSize: activeFontSize,\n          doKerning: false\n        }) *\n          activeFontSize) /\n        scaleFactor\n      );\n    };\n    if (Object.prototype.toString.call(text) === \"[object Array]\") {\n      da = transformTextToSpecialArray(text);\n      var newY;\n      if (align !== \"left\") {\n        lineWidths = da.map(findWidth);\n      }\n      //The first line uses the \"main\" Td setting,\n      //and the subsequent lines are offset by the\n      //previous line's x coordinate.\n      var prevWidth = 0;\n      var newX;\n      if (align === \"right\") {\n        //The passed in x coordinate defines the\n        //rightmost point of the text.\n        x -= lineWidths[0];\n        text = [];\n        len = da.length;\n        for (var i = 0; i < len; i++) {\n          if (i === 0) {\n            newX = getHorizontalCoordinate(x);\n            newY = getVerticalCoordinate(y);\n          } else {\n            newX = scale(prevWidth - lineWidths[i]);\n            newY = -leading;\n          }\n          text.push([da[i], newX, newY]);\n          prevWidth = lineWidths[i];\n        }\n      } else if (align === \"center\") {\n        //The passed in x coordinate defines\n        //the center point.\n        x -= lineWidths[0] / 2;\n        text = [];\n        len = da.length;\n        for (var j = 0; j < len; j++) {\n          if (j === 0) {\n            newX = getHorizontalCoordinate(x);\n            newY = getVerticalCoordinate(y);\n          } else {\n            newX = scale((prevWidth - lineWidths[j]) / 2);\n            newY = -leading;\n          }\n          text.push([da[j], newX, newY]);\n          prevWidth = lineWidths[j];\n        }\n      } else if (align === \"left\") {\n        text = [];\n        len = da.length;\n        for (var h = 0; h < len; h++) {\n          text.push(da[h]);\n        }\n      } else if (align === \"justify\" && activeFont.encoding === \"Identity-H\") {\n        // when using unicode fonts, wordSpacePerLine does not apply\n        text = [];\n        len = da.length;\n        maxWidth = maxWidth !== 0 ? maxWidth : pageWidth;\n        let backToStartX = 0;\n        for (var l = 0; l < len; l++) {\n          newY = l === 0 ? getVerticalCoordinate(y) : -leading;\n          newX = l === 0 ? getHorizontalCoordinate(x) : backToStartX;\n          if (l < len - 1) {\n            let spacing = scale(\n              (maxWidth - lineWidths[l]) / (da[l].split(\" \").length - 1)\n            );\n            let words = da[l].split(\" \");\n            text.push([words[0] + \" \", newX, newY]);\n            backToStartX = 0; // distance to reset back to the left\n            for (let i = 1; i < words.length; i++) {\n              let shiftAmount =\n                (findWidth(words[i - 1] + \" \" + words[i]) -\n                  findWidth(words[i])) *\n                  scaleFactor +\n                spacing;\n              if (i == words.length - 1) text.push([words[i], shiftAmount, 0]);\n              else text.push([words[i] + \" \", shiftAmount, 0]);\n              backToStartX -= shiftAmount;\n            }\n          } else {\n            text.push([da[l], newX, newY]);\n          }\n        }\n        text.push([\"\", backToStartX, 0]);\n      } else if (align === \"justify\") {\n        text = [];\n        len = da.length;\n        maxWidth = maxWidth !== 0 ? maxWidth : pageWidth;\n        for (var l = 0; l < len; l++) {\n          newY = l === 0 ? getVerticalCoordinate(y) : -leading;\n          newX = l === 0 ? getHorizontalCoordinate(x) : 0;\n\n          const numSpaces = da[l].split(\" \").length - 1;\n          const spacing =\n            numSpaces > 0 ? (maxWidth - lineWidths[l]) / numSpaces : 0;\n\n          if (l < len - 1) {\n            wordSpacingPerLine.push(hpf(scale(spacing)));\n          } else {\n            wordSpacingPerLine.push(0);\n          }\n          text.push([da[l], newX, newY]);\n        }\n      } else {\n        throw new Error(\n          'Unrecognized alignment option, use \"left\", \"center\", \"right\" or \"justify\".'\n        );\n      }\n    }\n\n    //R2L\n    var doReversing = typeof options.R2L === \"boolean\" ? options.R2L : R2L;\n    if (doReversing === true) {\n      text = processTextByFunction(text, function(text, posX, posY) {\n        return [\n          text\n            .split(\"\")\n            .reverse()\n            .join(\"\"),\n          posX,\n          posY\n        ];\n      });\n    }\n\n    //creating Payload-Object to make text byRef\n    payload = {\n      text: text,\n      x: x,\n      y: y,\n      options: options,\n      mutex: {\n        pdfEscape: pdfEscape,\n        activeFontKey: activeFontKey,\n        fonts: fonts,\n        activeFontSize: activeFontSize\n      }\n    };\n    events.publish(\"postProcessText\", payload);\n\n    text = payload.text;\n    isHex = payload.mutex.isHex || false;\n\n    //Escaping\n    var activeFontEncoding = fonts[activeFontKey].encoding;\n\n    if (\n      activeFontEncoding === \"WinAnsiEncoding\" ||\n      activeFontEncoding === \"StandardEncoding\"\n    ) {\n      text = processTextByFunction(text, function(text, posX, posY) {\n        return [ESC(text), posX, posY];\n      });\n    }\n\n    da = transformTextToSpecialArray(text);\n\n    text = [];\n    var STRING = 0;\n    var ARRAY = 1;\n    var variant = Array.isArray(da[0]) ? ARRAY : STRING;\n    var posX;\n    var posY;\n    var content;\n    var wordSpacing = \"\";\n\n    var generatePosition = function(\n      parmPosX,\n      parmPosY,\n      parmTransformationMatrix\n    ) {\n      var position = \"\";\n      if (parmTransformationMatrix instanceof Matrix) {\n        // It is kind of more intuitive to apply a plain rotation around the text anchor set by x and y\n        // but when the user supplies an arbitrary transformation matrix, the x and y offsets should be applied\n        // in the coordinate system established by this matrix\n        if (typeof options.angle === \"number\") {\n          parmTransformationMatrix = matrixMult(\n            parmTransformationMatrix,\n            new Matrix(1, 0, 0, 1, parmPosX, parmPosY)\n          );\n        } else {\n          parmTransformationMatrix = matrixMult(\n            new Matrix(1, 0, 0, 1, parmPosX, parmPosY),\n            parmTransformationMatrix\n          );\n        }\n\n        if (apiMode === ApiMode.ADVANCED) {\n          parmTransformationMatrix = matrixMult(\n            new Matrix(1, 0, 0, -1, 0, 0),\n            parmTransformationMatrix\n          );\n        }\n\n        position = parmTransformationMatrix.join(\" \") + \" Tm\\n\";\n      } else {\n        position = hpf(parmPosX) + \" \" + hpf(parmPosY) + \" Td\\n\";\n      }\n      return position;\n    };\n\n    for (var lineIndex = 0; lineIndex < da.length; lineIndex++) {\n      wordSpacing = \"\";\n\n      switch (variant) {\n        case ARRAY:\n          content =\n            (isHex ? \"<\" : \"(\") + da[lineIndex][0] + (isHex ? \">\" : \")\");\n          posX = parseFloat(da[lineIndex][1]);\n          posY = parseFloat(da[lineIndex][2]);\n          break;\n        case STRING:\n          content = (isHex ? \"<\" : \"(\") + da[lineIndex] + (isHex ? \">\" : \")\");\n          posX = getHorizontalCoordinate(x);\n          posY = getVerticalCoordinate(y);\n          break;\n      }\n\n      if (\n        typeof wordSpacingPerLine !== \"undefined\" &&\n        typeof wordSpacingPerLine[lineIndex] !== \"undefined\"\n      ) {\n        wordSpacing = wordSpacingPerLine[lineIndex] + \" Tw\\n\";\n      }\n\n      if (lineIndex === 0) {\n        text.push(\n          wordSpacing +\n            generatePosition(posX, posY, transformationMatrix) +\n            content\n        );\n      } else if (variant === STRING) {\n        text.push(wordSpacing + content);\n      } else if (variant === ARRAY) {\n        text.push(\n          wordSpacing +\n            generatePosition(posX, posY, transformationMatrix) +\n            content\n        );\n      }\n    }\n\n    text = variant === STRING ? text.join(\" Tj\\nT* \") : text.join(\" Tj\\n\");\n    text += \" Tj\\n\";\n\n    var result = \"BT\\n/\";\n    result += activeFontKey + \" \" + activeFontSize + \" Tf\\n\"; // font face, style, size\n    result += hpf(activeFontSize * lineHeight) + \" TL\\n\"; // line spacing\n    result += textColor + \"\\n\";\n    result += xtra;\n    result += text;\n    result += \"ET\";\n\n    out(result);\n    usedFonts[activeFontKey] = true;\n    return scope;\n  };\n\n  // PDF supports these path painting and clip path operators:\n  //\n  // S - stroke\n  // s - close/stroke\n  // f (F) - fill non-zero\n  // f* - fill evenodd\n  // B - fill stroke nonzero\n  // B* - fill stroke evenodd\n  // b - close fill stroke nonzero\n  // b* - close fill stroke evenodd\n  // n - nothing (consume path)\n  // W - clip nonzero\n  // W* - clip evenodd\n  //\n  // In order to keep the API small, we omit the close-and-fill/stroke operators and provide a separate close()\n  // method.\n  /**\n   *\n   * @name clip\n   * @function\n   * @instance\n   * @param {string} rule Only possible value is 'evenodd'\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @description All .clip() after calling drawing ops with a style argument of null.\n   */\n  var clip = (API.__private__.clip = API.clip = function(rule) {\n    // Call .clip() after calling drawing ops with a style argument of null\n    // W is the PDF clipping op\n    if (\"evenodd\" === rule) {\n      out(\"W*\");\n    } else {\n      out(\"W\");\n    }\n    return this;\n  });\n\n  /**\n   * @name clipEvenOdd\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @description Modify the current clip path by intersecting it with the current path using the even-odd rule. Note\n   * that this will NOT consume the current path. In order to only use this path for clipping call\n   * {@link API.discardPath} afterwards.\n   */\n  API.clipEvenOdd = function() {\n    return clip(\"evenodd\");\n  };\n\n  /**\n   * Consumes the current path without any effect. Mainly used in combination with {@link clip} or\n   * {@link clipEvenOdd}. The PDF \"n\" operator.\n   * @name discardPath\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   */\n  API.__private__.discardPath = API.discardPath = function() {\n    out(\"n\");\n    return this;\n  };\n\n  var isValidStyle = (API.__private__.isValidStyle = function(style) {\n    var validStyleVariants = [\n      undefined,\n      null,\n      \"S\",\n      \"D\",\n      \"F\",\n      \"DF\",\n      \"FD\",\n      \"f\",\n      \"f*\",\n      \"B\",\n      \"B*\",\n      \"n\"\n    ];\n    var result = false;\n    if (validStyleVariants.indexOf(style) !== -1) {\n      result = true;\n    }\n    return result;\n  });\n\n  API.__private__.setDefaultPathOperation = API.setDefaultPathOperation = function(\n    operator\n  ) {\n    if (isValidStyle(operator)) {\n      defaultPathOperation = operator;\n    }\n    return this;\n  };\n\n  var getStyle = (API.__private__.getStyle = API.getStyle = function(style) {\n    // see path-painting operators in PDF spec\n    var op = defaultPathOperation; // stroke\n\n    switch (style) {\n      case \"D\":\n      case \"S\":\n        op = \"S\"; // stroke\n        break;\n      case \"F\":\n        op = \"f\"; // fill\n        break;\n      case \"FD\":\n      case \"DF\":\n        op = \"B\";\n        break;\n      case \"f\":\n      case \"f*\":\n      case \"B\":\n      case \"B*\":\n        /*\n               Allow direct use of these PDF path-painting operators:\n               - f    fill using nonzero winding number rule\n               - f*    fill using even-odd rule\n               - B    fill then stroke with fill using non-zero winding number rule\n               - B*    fill then stroke with fill using even-odd rule\n               */\n        op = style;\n        break;\n    }\n    return op;\n  });\n\n  /**\n   * Close the current path. The PDF \"h\" operator.\n   * @name close\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   */\n  var close = (API.close = function() {\n    out(\"h\");\n    return this;\n  });\n\n  /**\n   * Stroke the path. The PDF \"S\" operator.\n   * @name stroke\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   */\n  API.stroke = function() {\n    out(\"S\");\n    return this;\n  };\n\n  /**\n   * Fill the current path using the nonzero winding number rule. If a pattern is provided, the path will be filled\n   * with this pattern, otherwise with the current fill color. Equivalent to the PDF \"f\" operator.\n   * @name fill\n   * @function\n   * @instance\n   * @param {PatternData=} pattern If provided the path will be filled with this pattern\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   */\n  API.fill = function(pattern) {\n    fillWithOptionalPattern(\"f\", pattern);\n    return this;\n  };\n\n  /**\n   * Fill the current path using the even-odd rule. The PDF f* operator.\n   * @see API.fill\n   * @name fillEvenOdd\n   * @function\n   * @instance\n   * @param {PatternData=} pattern If provided the path will be filled with this pattern\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   */\n  API.fillEvenOdd = function(pattern) {\n    fillWithOptionalPattern(\"f*\", pattern);\n    return this;\n  };\n\n  /**\n   * Fill using the nonzero winding number rule and then stroke the current Path. The PDF \"B\" operator.\n   * @see API.fill\n   * @name fillStroke\n   * @function\n   * @instance\n   * @param {PatternData=} pattern If provided the path will be stroked with this pattern\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   */\n  API.fillStroke = function(pattern) {\n    fillWithOptionalPattern(\"B\", pattern);\n    return this;\n  };\n\n  /**\n   * Fill using the even-odd rule and then stroke the current Path. The PDF \"B\" operator.\n   * @see API.fill\n   * @name fillStrokeEvenOdd\n   * @function\n   * @instance\n   * @param {PatternData=} pattern If provided the path will be fill-stroked with this pattern\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   */\n  API.fillStrokeEvenOdd = function(pattern) {\n    fillWithOptionalPattern(\"B*\", pattern);\n    return this;\n  };\n\n  var fillWithOptionalPattern = function(style, pattern) {\n    if (typeof pattern === \"object\") {\n      fillWithPattern(pattern, style);\n    } else {\n      out(style);\n    }\n  };\n\n  var putStyle = function(style) {\n    if (\n      style === null ||\n      (apiMode === ApiMode.ADVANCED && style === undefined)\n    ) {\n      return;\n    }\n\n    style = getStyle(style);\n\n    // stroking / filling / both the path\n    out(style);\n  };\n\n  function cloneTilingPattern(patternKey, boundingBox, xStep, yStep, matrix) {\n    var clone = new TilingPattern(\n      boundingBox || this.boundingBox,\n      xStep || this.xStep,\n      yStep || this.yStep,\n      this.gState,\n      matrix || this.matrix\n    );\n    clone.stream = this.stream;\n    var key = patternKey + \"$$\" + this.cloneIndex++ + \"$$\";\n    addPattern(key, clone);\n    return clone;\n  }\n\n  var fillWithPattern = function(patternData, style) {\n    var patternId = patternMap[patternData.key];\n    var pattern = patterns[patternId];\n\n    if (pattern instanceof ShadingPattern) {\n      out(\"q\");\n\n      out(clipRuleFromStyle(style));\n\n      if (pattern.gState) {\n        API.setGState(pattern.gState);\n      }\n      out(patternData.matrix.toString() + \" cm\");\n      out(\"/\" + patternId + \" sh\");\n      out(\"Q\");\n    } else if (pattern instanceof TilingPattern) {\n      // pdf draws patterns starting at the bottom left corner and they are not affected by the global transformation,\n      // so we must flip them\n      var matrix = new Matrix(1, 0, 0, -1, 0, getPageHeight());\n\n      if (patternData.matrix) {\n        matrix = matrix.multiply(patternData.matrix || identityMatrix);\n        // we cannot apply a matrix to the pattern on use so we must abuse the pattern matrix and create new instances\n        // for each use\n        patternId = cloneTilingPattern.call(\n          pattern,\n          patternData.key,\n          patternData.boundingBox,\n          patternData.xStep,\n          patternData.yStep,\n          matrix\n        ).id;\n      }\n\n      out(\"q\");\n      out(\"/Pattern cs\");\n      out(\"/\" + patternId + \" scn\");\n\n      if (pattern.gState) {\n        API.setGState(pattern.gState);\n      }\n\n      out(style);\n      out(\"Q\");\n    }\n  };\n\n  var clipRuleFromStyle = function(style) {\n    switch (style) {\n      case \"f\":\n      case \"F\":\n        return \"W n\";\n      case \"f*\":\n        return \"W* n\";\n      case \"B\":\n        return \"W S\";\n      case \"B*\":\n        return \"W* S\";\n\n      // these two are for compatibility reasons (in the past, calling any primitive method with a shading pattern\n      // and \"n\"/\"S\" as style would still fill/fill and stroke the path)\n      case \"S\":\n        return \"W S\";\n      case \"n\":\n        return \"W n\";\n    }\n  };\n\n  /**\n   * Begin a new subpath by moving the current point to coordinates (x, y). The PDF \"m\" operator.\n   * @param {number} x\n   * @param {number} y\n   * @name moveTo\n   * @function\n   * @instance\n   * @memberof jsPDF#\n   * @returns {jsPDF}\n   */\n  var moveTo = (API.moveTo = function(x, y) {\n    out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" m\");\n    return this;\n  });\n\n  /**\n   * Append a straight line segment from the current point to the point (x, y). The PDF \"l\" operator.\n   * @param {number} x\n   * @param {number} y\n   * @memberof jsPDF#\n   * @name lineTo\n   * @function\n   * @instance\n   * @memberof jsPDF#\n   * @returns {jsPDF}\n   */\n  var lineTo = (API.lineTo = function(x, y) {\n    out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" l\");\n    return this;\n  });\n\n  /**\n   * Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point\n   * (x3, y3), using (x1, y1) and (x2, y2) as Bézier control points. The new current point shall be (x3, x3).\n   * @param {number} x1\n   * @param {number} y1\n   * @param {number} x2\n   * @param {number} y2\n   * @param {number} x3\n   * @param {number} y3\n   * @memberof jsPDF#\n   * @name curveTo\n   * @function\n   * @instance\n   * @memberof jsPDF#\n   * @returns {jsPDF}\n   */\n  var curveTo = (API.curveTo = function(x1, y1, x2, y2, x3, y3) {\n    out(\n      [\n        hpf(scale(x1)),\n        hpf(transformScaleY(y1)),\n        hpf(scale(x2)),\n        hpf(transformScaleY(y2)),\n        hpf(scale(x3)),\n        hpf(transformScaleY(y3)),\n        \"c\"\n      ].join(\" \")\n    );\n    return this;\n  });\n\n  /**\n   * Draw a line on the current page.\n   *\n   * @name line\n   * @function\n   * @instance\n   * @param {number} x1\n   * @param {number} y1\n   * @param {number} x2\n   * @param {number} y2\n   * @param {string} style A string specifying the painting style or null.  Valid styles include: 'S' [default] - stroke, 'F' - fill,  and 'DF' (or 'FD') -  fill then stroke. A null value postpones setting the style so that a shape may be composed using multiple method calls. The last drawing method call used to define the shape should not have a null style argument. default: 'S'\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   */\n  API.__private__.line = API.line = function(x1, y1, x2, y2, style) {\n    if (\n      isNaN(x1) ||\n      isNaN(y1) ||\n      isNaN(x2) ||\n      isNaN(y2) ||\n      !isValidStyle(style)\n    ) {\n      throw new Error(\"Invalid arguments passed to jsPDF.line\");\n    }\n    if (apiMode === ApiMode.COMPAT) {\n      return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1], style || \"S\");\n    } else {\n      return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1]).stroke();\n    }\n  };\n\n  /**\n   * @typedef {Object} PatternData\n   * {Matrix|undefined} matrix\n   * {Number|undefined} xStep\n   * {Number|undefined} yStep\n   * {Array.<Number>|undefined} boundingBox\n   */\n\n  /**\n   * Adds series of curves (straight lines or cubic bezier curves) to canvas, starting at `x`, `y` coordinates.\n   * All data points in `lines` are relative to last line origin.\n   * `x`, `y` become x1,y1 for first line / curve in the set.\n   * For lines you only need to specify [x2, y2] - (ending point) vector against x1, y1 starting point.\n   * For bezier curves you need to specify [x2,y2,x3,y3,x4,y4] - vectors to control points 1, 2, ending point. All vectors are against the start of the curve - x1,y1.\n   *\n   * @example .lines([[2,2],[-2,2],[1,1,2,2,3,3],[2,1]], 212,110, [1,1], 'F', false) // line, line, bezier curve, line\n   * @param {Array} lines Array of *vector* shifts as pairs (lines) or sextets (cubic bezier curves).\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n   * @param {number} scale (Defaults to [1.0,1.0]) x,y Scaling factor for all vectors. Elements can be any floating number Sub-one makes drawing smaller. Over-one grows the drawing. Negative flips the direction.\n   * @param {string=} style A string specifying the painting style or null. Valid styles include:\n   * 'S' [default] - stroke,\n   * 'F' - fill,\n   * and 'DF' (or 'FD') -  fill then stroke.\n   * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\n   * method calls. The last drawing method call used to define the shape should not have a null style argument.\n   *\n   * In \"advanced\" API mode this parameter is deprecated.\n   * @param {Boolean=} closed If true, the path is closed with a straight line from the end of the last curve to the starting point.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name lines\n   */\n  API.__private__.lines = API.lines = function(\n    lines,\n    x,\n    y,\n    scale,\n    style,\n    closed\n  ) {\n    var scalex, scaley, i, l, leg, x2, y2, x3, y3, x4, y4, tmp;\n\n    // Pre-August-2012 the order of arguments was function(x, y, lines, scale, style)\n    // in effort to make all calls have similar signature like\n    //   function(content, coordinateX, coordinateY , miscellaneous)\n    // this method had its args flipped.\n    // code below allows backward compatibility with old arg order.\n    if (typeof lines === \"number\") {\n      tmp = y;\n      y = x;\n      x = lines;\n      lines = tmp;\n    }\n\n    scale = scale || [1, 1];\n    closed = closed || false;\n\n    if (\n      isNaN(x) ||\n      isNaN(y) ||\n      !Array.isArray(lines) ||\n      !Array.isArray(scale) ||\n      !isValidStyle(style) ||\n      typeof closed !== \"boolean\"\n    ) {\n      throw new Error(\"Invalid arguments passed to jsPDF.lines\");\n    }\n\n    // starting point\n    moveTo(x, y);\n\n    scalex = scale[0];\n    scaley = scale[1];\n    l = lines.length;\n    //, x2, y2 // bezier only. In page default measurement \"units\", *after* scaling\n    //, x3, y3 // bezier only. In page default measurement \"units\", *after* scaling\n    // ending point for all, lines and bezier. . In page default measurement \"units\", *after* scaling\n    x4 = x; // last / ending point = starting point for first item.\n    y4 = y; // last / ending point = starting point for first item.\n\n    for (i = 0; i < l; i++) {\n      leg = lines[i];\n      if (leg.length === 2) {\n        // simple line\n        x4 = leg[0] * scalex + x4; // here last x4 was prior ending point\n        y4 = leg[1] * scaley + y4; // here last y4 was prior ending point\n        lineTo(x4, y4);\n      } else {\n        // bezier curve\n        x2 = leg[0] * scalex + x4; // here last x4 is prior ending point\n        y2 = leg[1] * scaley + y4; // here last y4 is prior ending point\n        x3 = leg[2] * scalex + x4; // here last x4 is prior ending point\n        y3 = leg[3] * scaley + y4; // here last y4 is prior ending point\n        x4 = leg[4] * scalex + x4; // here last x4 was prior ending point\n        y4 = leg[5] * scaley + y4; // here last y4 was prior ending point\n        curveTo(x2, y2, x3, y3, x4, y4);\n      }\n    }\n\n    if (closed) {\n      close();\n    }\n\n    putStyle(style);\n    return this;\n  };\n\n  /**\n   * Similar to {@link API.lines} but all coordinates are interpreted as absolute coordinates instead of relative.\n   * @param {Array<Object>} lines An array of {op: operator, c: coordinates} object, where op is one of \"m\" (move to), \"l\" (line to)\n   * \"c\" (cubic bezier curve) and \"h\" (close (sub)path)). c is an array of coordinates. \"m\" and \"l\" expect two, \"c\"\n   * six and \"h\" an empty array (or undefined).\n   * @function\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name path\n   */\n  API.path = function(lines) {\n    for (var i = 0; i < lines.length; i++) {\n      var leg = lines[i];\n      var coords = leg.c;\n      switch (leg.op) {\n        case \"m\":\n          moveTo(coords[0], coords[1]);\n          break;\n        case \"l\":\n          lineTo(coords[0], coords[1]);\n          break;\n        case \"c\":\n          curveTo.apply(this, coords);\n          break;\n        case \"h\":\n          close();\n          break;\n      }\n    }\n\n    return this;\n  };\n\n  /**\n   * Adds a rectangle to PDF.\n   *\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n   * @param {number} w Width (in units declared at inception of PDF document)\n   * @param {number} h Height (in units declared at inception of PDF document)\n   * @param {string=} style A string specifying the painting style or null. Valid styles include:\n   * 'S' [default] - stroke,\n   * 'F' - fill,\n   * and 'DF' (or 'FD') -  fill then stroke.\n   * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\n   * method calls. The last drawing method call used to define the shape should not have a null style argument.\n   *\n   * In \"advanced\" API mode this parameter is deprecated.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name rect\n   */\n  API.__private__.rect = API.rect = function(x, y, w, h, style) {\n    if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h) || !isValidStyle(style)) {\n      throw new Error(\"Invalid arguments passed to jsPDF.rect\");\n    }\n    if (apiMode === ApiMode.COMPAT) {\n      h = -h;\n    }\n\n    out(\n      [\n        hpf(scale(x)),\n        hpf(transformScaleY(y)),\n        hpf(scale(w)),\n        hpf(scale(h)),\n        \"re\"\n      ].join(\" \")\n    );\n\n    putStyle(style);\n    return this;\n  };\n\n  /**\n   * Adds a triangle to PDF.\n   *\n   * @param {number} x1 Coordinate (in units declared at inception of PDF document) against left edge of the page\n   * @param {number} y1 Coordinate (in units declared at inception of PDF document) against upper edge of the page\n   * @param {number} x2 Coordinate (in units declared at inception of PDF document) against left edge of the page\n   * @param {number} y2 Coordinate (in units declared at inception of PDF document) against upper edge of the page\n   * @param {number} x3 Coordinate (in units declared at inception of PDF document) against left edge of the page\n   * @param {number} y3 Coordinate (in units declared at inception of PDF document) against upper edge of the page\n   * @param {string=} style A string specifying the painting style or null. Valid styles include:\n   * 'S' [default] - stroke,\n   * 'F' - fill,\n   * and 'DF' (or 'FD') -  fill then stroke.\n   * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\n   * method calls. The last drawing method call used to define the shape should not have a null style argument.\n   *\n   * In \"advanced\" API mode this parameter is deprecated.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name triangle\n   */\n  API.__private__.triangle = API.triangle = function(\n    x1,\n    y1,\n    x2,\n    y2,\n    x3,\n    y3,\n    style\n  ) {\n    if (\n      isNaN(x1) ||\n      isNaN(y1) ||\n      isNaN(x2) ||\n      isNaN(y2) ||\n      isNaN(x3) ||\n      isNaN(y3) ||\n      !isValidStyle(style)\n    ) {\n      throw new Error(\"Invalid arguments passed to jsPDF.triangle\");\n    }\n    this.lines(\n      [\n        [x2 - x1, y2 - y1], // vector to point 2\n        [x3 - x2, y3 - y2], // vector to point 3\n        [x1 - x3, y1 - y3] // closing vector back to point 1\n      ],\n      x1,\n      y1, // start of path\n      [1, 1],\n      style,\n      true\n    );\n    return this;\n  };\n\n  /**\n   * Adds a rectangle with rounded corners to PDF.\n   *\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n   * @param {number} w Width (in units declared at inception of PDF document)\n   * @param {number} h Height (in units declared at inception of PDF document)\n   * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\n   * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\n   * @param {string=} style A string specifying the painting style or null. Valid styles include:\n   * 'S' [default] - stroke,\n   * 'F' - fill,\n   * and 'DF' (or 'FD') -  fill then stroke.\n   * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\n   * method calls. The last drawing method call used to define the shape should not have a null style argument.\n   *\n   * In \"advanced\" API mode this parameter is deprecated.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name roundedRect\n   */\n  API.__private__.roundedRect = API.roundedRect = function(\n    x,\n    y,\n    w,\n    h,\n    rx,\n    ry,\n    style\n  ) {\n    if (\n      isNaN(x) ||\n      isNaN(y) ||\n      isNaN(w) ||\n      isNaN(h) ||\n      isNaN(rx) ||\n      isNaN(ry) ||\n      !isValidStyle(style)\n    ) {\n      throw new Error(\"Invalid arguments passed to jsPDF.roundedRect\");\n    }\n    var MyArc = (4 / 3) * (Math.SQRT2 - 1);\n\n    rx = Math.min(rx, w * 0.5);\n    ry = Math.min(ry, h * 0.5);\n\n    this.lines(\n      [\n        [w - 2 * rx, 0],\n        [rx * MyArc, 0, rx, ry - ry * MyArc, rx, ry],\n        [0, h - 2 * ry],\n        [0, ry * MyArc, -(rx * MyArc), ry, -rx, ry],\n        [-w + 2 * rx, 0],\n        [-(rx * MyArc), 0, -rx, -(ry * MyArc), -rx, -ry],\n        [0, -h + 2 * ry],\n        [0, -(ry * MyArc), rx * MyArc, -ry, rx, -ry]\n      ],\n      x + rx,\n      y, // start of path\n      [1, 1],\n      style,\n      true\n    );\n    return this;\n  };\n\n  /**\n   * Adds an ellipse to PDF.\n   *\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n   * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\n   * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\n   * @param {string=} style A string specifying the painting style or null. Valid styles include:\n   * 'S' [default] - stroke,\n   * 'F' - fill,\n   * and 'DF' (or 'FD') -  fill then stroke.\n   * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\n   * method calls. The last drawing method call used to define the shape should not have a null style argument.\n   *\n   * In \"advanced\" API mode this parameter is deprecated.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name ellipse\n   */\n  API.__private__.ellipse = API.ellipse = function(x, y, rx, ry, style) {\n    if (\n      isNaN(x) ||\n      isNaN(y) ||\n      isNaN(rx) ||\n      isNaN(ry) ||\n      !isValidStyle(style)\n    ) {\n      throw new Error(\"Invalid arguments passed to jsPDF.ellipse\");\n    }\n    var lx = (4 / 3) * (Math.SQRT2 - 1) * rx,\n      ly = (4 / 3) * (Math.SQRT2 - 1) * ry;\n\n    moveTo(x + rx, y);\n    curveTo(x + rx, y - ly, x + lx, y - ry, x, y - ry);\n    curveTo(x - lx, y - ry, x - rx, y - ly, x - rx, y);\n    curveTo(x - rx, y + ly, x - lx, y + ry, x, y + ry);\n    curveTo(x + lx, y + ry, x + rx, y + ly, x + rx, y);\n\n    putStyle(style);\n    return this;\n  };\n\n  /**\n   * Adds an circle to PDF.\n   *\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n   * @param {number} r Radius (in units declared at inception of PDF document)\n   * @param {string=} style A string specifying the painting style or null. Valid styles include:\n   * 'S' [default] - stroke,\n   * 'F' - fill,\n   * and 'DF' (or 'FD') -  fill then stroke.\n   * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\n   * method calls. The last drawing method call used to define the shape should not have a null style argument.\n   *\n   * In \"advanced\" API mode this parameter is deprecated.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name circle\n   */\n  API.__private__.circle = API.circle = function(x, y, r, style) {\n    if (isNaN(x) || isNaN(y) || isNaN(r) || !isValidStyle(style)) {\n      throw new Error(\"Invalid arguments passed to jsPDF.circle\");\n    }\n    return this.ellipse(x, y, r, r, style);\n  };\n\n  /**\n   * Sets text font face, variant for upcoming text elements.\n   * See output of jsPDF.getFontList() for possible font names, styles.\n   *\n   * @param {string} fontName Font name or family. Example: \"times\".\n   * @param {string} fontStyle Font style or variant. Example: \"italic\".\n   * @param {number | string} fontWeight Weight of the Font. Example: \"normal\" | 400\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setFont\n   */\n  API.setFont = function(fontName, fontStyle, fontWeight) {\n    if (fontWeight) {\n      fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\n    }\n    activeFontKey = getFont(fontName, fontStyle, {\n      disableWarning: false\n    });\n    return this;\n  };\n\n  /**\n   * Gets text font face, variant for upcoming text elements.\n   *\n   * @function\n   * @instance\n   * @returns {Object}\n   * @memberof jsPDF#\n   * @name getFont\n   */\n  var getFontEntry = (API.__private__.getFont = API.getFont = function() {\n    return fonts[getFont.apply(API, arguments)];\n  });\n\n  /**\n   * Returns an object - a tree of fontName to fontStyle relationships available to\n   * active PDF document.\n   *\n   * @public\n   * @function\n   * @instance\n   * @returns {Object} Like {'times':['normal', 'italic', ... ], 'arial':['normal', 'bold', ... ], ... }\n   * @memberof jsPDF#\n   * @name getFontList\n   */\n  API.__private__.getFontList = API.getFontList = function() {\n    var list = {},\n      fontName,\n      fontStyle;\n\n    for (fontName in fontmap) {\n      if (fontmap.hasOwnProperty(fontName)) {\n        list[fontName] = [];\n        for (fontStyle in fontmap[fontName]) {\n          if (fontmap[fontName].hasOwnProperty(fontStyle)) {\n            list[fontName].push(fontStyle);\n          }\n        }\n      }\n    }\n    return list;\n  };\n\n  /**\n   * Add a custom font to the current instance.\n   *\n   * @param {string} postScriptName PDF specification full name for the font.\n   * @param {string} id PDF-document-instance-specific label assinged to the font.\n   * @param {string} fontStyle Style of the Font.\n   * @param {number | string} fontWeight Weight of the Font.\n   * @param {Object} encoding Encoding_name-to-Font_metrics_object mapping.\n   * @function\n   * @instance\n   * @memberof jsPDF#\n   * @name addFont\n   * @returns {string} fontId\n   */\n  API.addFont = function(\n    postScriptName,\n    fontName,\n    fontStyle,\n    fontWeight,\n    encoding\n  ) {\n    var encodingOptions = [\n      \"StandardEncoding\",\n      \"MacRomanEncoding\",\n      \"Identity-H\",\n      \"WinAnsiEncoding\"\n    ];\n    if (arguments[3] && encodingOptions.indexOf(arguments[3]) !== -1) {\n      //IE 11 fix\n      encoding = arguments[3];\n    } else if (arguments[3] && encodingOptions.indexOf(arguments[3]) == -1) {\n      fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\n    }\n    encoding = encoding || \"Identity-H\";\n    return addFont.call(this, postScriptName, fontName, fontStyle, encoding);\n  };\n\n  var lineWidth = options.lineWidth || 0.200025; // 2mm\n  /**\n   * Gets the line width, default: 0.200025.\n   *\n   * @function\n   * @instance\n   * @returns {number} lineWidth\n   * @memberof jsPDF#\n   * @name getLineWidth\n   */\n  var getLineWidth = (API.__private__.getLineWidth = API.getLineWidth = function() {\n    return lineWidth;\n  });\n\n  /**\n   * Sets line width for upcoming lines.\n   *\n   * @param {number} width Line width (in units declared at inception of PDF document).\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setLineWidth\n   */\n  var setLineWidth = (API.__private__.setLineWidth = API.setLineWidth = function(\n    width\n  ) {\n    lineWidth = width;\n    out(hpf(scale(width)) + \" w\");\n    return this;\n  });\n\n  /**\n   * Sets the dash pattern for upcoming lines.\n   *\n   * To reset the settings simply call the method without any parameters.\n   * @param {Array<number>} dashArray An array containing 0-2 numbers. The first number sets the length of the\n   * dashes, the second number the length of the gaps. If the second number is missing, the gaps are considered\n   * to be as long as the dashes. An empty array means solid, unbroken lines.\n   * @param {number} dashPhase The phase lines start with.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setLineDashPattern\n   */\n  API.__private__.setLineDash = jsPDF.API.setLineDash = jsPDF.API.setLineDashPattern = function(\n    dashArray,\n    dashPhase\n  ) {\n    dashArray = dashArray || [];\n    dashPhase = dashPhase || 0;\n\n    if (isNaN(dashPhase) || !Array.isArray(dashArray)) {\n      throw new Error(\"Invalid arguments passed to jsPDF.setLineDash\");\n    }\n\n    dashArray = dashArray\n      .map(function(x) {\n        return hpf(scale(x));\n      })\n      .join(\" \");\n    dashPhase = hpf(scale(dashPhase));\n\n    out(\"[\" + dashArray + \"] \" + dashPhase + \" d\");\n    return this;\n  };\n\n  var lineHeightFactor;\n\n  var getLineHeight = (API.__private__.getLineHeight = API.getLineHeight = function() {\n    return activeFontSize * lineHeightFactor;\n  });\n\n  API.__private__.getLineHeight = API.getLineHeight = function() {\n    return activeFontSize * lineHeightFactor;\n  };\n\n  /**\n   * Sets the LineHeightFactor of proportion.\n   *\n   * @param {number} value LineHeightFactor value. Default: 1.15.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setLineHeightFactor\n   */\n  var setLineHeightFactor = (API.__private__.setLineHeightFactor = API.setLineHeightFactor = function(\n    value\n  ) {\n    value = value || 1.15;\n    if (typeof value === \"number\") {\n      lineHeightFactor = value;\n    }\n    return this;\n  });\n\n  /**\n   * Gets the LineHeightFactor, default: 1.15.\n   *\n   * @function\n   * @instance\n   * @returns {number} lineHeightFactor\n   * @memberof jsPDF#\n   * @name getLineHeightFactor\n   */\n  var getLineHeightFactor = (API.__private__.getLineHeightFactor = API.getLineHeightFactor = function() {\n    return lineHeightFactor;\n  });\n\n  setLineHeightFactor(options.lineHeight);\n\n  var getHorizontalCoordinate = (API.__private__.getHorizontalCoordinate = function(\n    value\n  ) {\n    return scale(value);\n  });\n\n  var getVerticalCoordinate = (API.__private__.getVerticalCoordinate = function(\n    value\n  ) {\n    if (apiMode === ApiMode.ADVANCED) {\n      return value;\n    } else {\n      var pageHeight =\n        pagesContext[currentPage].mediaBox.topRightY -\n        pagesContext[currentPage].mediaBox.bottomLeftY;\n      return pageHeight - scale(value);\n    }\n  });\n\n  var getHorizontalCoordinateString = (API.__private__.getHorizontalCoordinateString = API.getHorizontalCoordinateString = function(\n    value\n  ) {\n    return hpf(getHorizontalCoordinate(value));\n  });\n\n  var getVerticalCoordinateString = (API.__private__.getVerticalCoordinateString = API.getVerticalCoordinateString = function(\n    value\n  ) {\n    return hpf(getVerticalCoordinate(value));\n  });\n\n  var strokeColor = options.strokeColor || \"0 G\";\n\n  /**\n   *  Gets the stroke color for upcoming elements.\n   *\n   * @function\n   * @instance\n   * @returns {string} colorAsHex\n   * @memberof jsPDF#\n   * @name getDrawColor\n   */\n  API.__private__.getStrokeColor = API.getDrawColor = function() {\n    return decodeColorString(strokeColor);\n  };\n\n  /**\n   * Sets the stroke color for upcoming elements.\n   *\n   * Depending on the number of arguments given, Gray, RGB, or CMYK\n   * color space is implied.\n   *\n   * When only ch1 is given, \"Gray\" color space is implied and it\n   * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\n   * if values are communicated as String types, or in range from 0 (black)\n   * to 255 (white) if communicated as Number type.\n   * The RGB-like 0-255 range is provided for backward compatibility.\n   *\n   * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\n   * value must be in the range from 0.00 (minimum intensity) to to 1.00\n   * (max intensity) if values are communicated as String types, or\n   * from 0 (min intensity) to to 255 (max intensity) if values are communicated\n   * as Number types.\n   * The RGB-like 0-255 range is provided for backward compatibility.\n   *\n   * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\n   * value must be a in the range from 0.00 (0% concentration) to to\n   * 1.00 (100% concentration)\n   *\n   * Because JavaScript treats fixed point numbers badly (rounds to\n   * floating point nearest to binary representation) it is highly advised to\n   * communicate the fractional numbers as String types, not JavaScript Number type.\n   *\n   * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\n   * @param {Number} ch2 Color channel value.\n   * @param {Number} ch3 Color channel value.\n   * @param {Number} ch4 Color channel value.\n   *\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setDrawColor\n   */\n  API.__private__.setStrokeColor = API.setDrawColor = function(\n    ch1,\n    ch2,\n    ch3,\n    ch4\n  ) {\n    var options = {\n      ch1: ch1,\n      ch2: ch2,\n      ch3: ch3,\n      ch4: ch4,\n      pdfColorType: \"draw\",\n      precision: 2\n    };\n\n    strokeColor = encodeColorString(options);\n    out(strokeColor);\n    return this;\n  };\n\n  var fillColor = options.fillColor || \"0 g\";\n\n  /**\n   * Gets the fill color for upcoming elements.\n   *\n   * @function\n   * @instance\n   * @returns {string} colorAsHex\n   * @memberof jsPDF#\n   * @name getFillColor\n   */\n  API.__private__.getFillColor = API.getFillColor = function() {\n    return decodeColorString(fillColor);\n  };\n\n  /**\n   * Sets the fill color for upcoming elements.\n   *\n   * Depending on the number of arguments given, Gray, RGB, or CMYK\n   * color space is implied.\n   *\n   * When only ch1 is given, \"Gray\" color space is implied and it\n   * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\n   * if values are communicated as String types, or in range from 0 (black)\n   * to 255 (white) if communicated as Number type.\n   * The RGB-like 0-255 range is provided for backward compatibility.\n   *\n   * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\n   * value must be in the range from 0.00 (minimum intensity) to to 1.00\n   * (max intensity) if values are communicated as String types, or\n   * from 0 (min intensity) to to 255 (max intensity) if values are communicated\n   * as Number types.\n   * The RGB-like 0-255 range is provided for backward compatibility.\n   *\n   * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\n   * value must be a in the range from 0.00 (0% concentration) to to\n   * 1.00 (100% concentration)\n   *\n   * Because JavaScript treats fixed point numbers badly (rounds to\n   * floating point nearest to binary representation) it is highly advised to\n   * communicate the fractional numbers as String types, not JavaScript Number type.\n   *\n   * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\n   * @param {Number} ch2 Color channel value.\n   * @param {Number} ch3 Color channel value.\n   * @param {Number} ch4 Color channel value.\n   *\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setFillColor\n   */\n  API.__private__.setFillColor = API.setFillColor = function(\n    ch1,\n    ch2,\n    ch3,\n    ch4\n  ) {\n    var options = {\n      ch1: ch1,\n      ch2: ch2,\n      ch3: ch3,\n      ch4: ch4,\n      pdfColorType: \"fill\",\n      precision: 2\n    };\n\n    fillColor = encodeColorString(options);\n    out(fillColor);\n    return this;\n  };\n\n  var textColor = options.textColor || \"0 g\";\n  /**\n   * Gets the text color for upcoming elements.\n   *\n   * @function\n   * @instance\n   * @returns {string} colorAsHex\n   * @memberof jsPDF#\n   * @name getTextColor\n   */\n  var getTextColor = (API.__private__.getTextColor = API.getTextColor = function() {\n    return decodeColorString(textColor);\n  });\n  /**\n   * Sets the text color for upcoming elements.\n   *\n   * Depending on the number of arguments given, Gray, RGB, or CMYK\n   * color space is implied.\n   *\n   * When only ch1 is given, \"Gray\" color space is implied and it\n   * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\n   * if values are communicated as String types, or in range from 0 (black)\n   * to 255 (white) if communicated as Number type.\n   * The RGB-like 0-255 range is provided for backward compatibility.\n   *\n   * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\n   * value must be in the range from 0.00 (minimum intensity) to to 1.00\n   * (max intensity) if values are communicated as String types, or\n   * from 0 (min intensity) to to 255 (max intensity) if values are communicated\n   * as Number types.\n   * The RGB-like 0-255 range is provided for backward compatibility.\n   *\n   * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\n   * value must be a in the range from 0.00 (0% concentration) to to\n   * 1.00 (100% concentration)\n   *\n   * Because JavaScript treats fixed point numbers badly (rounds to\n   * floating point nearest to binary representation) it is highly advised to\n   * communicate the fractional numbers as String types, not JavaScript Number type.\n   *\n   * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\n   * @param {Number} ch2 Color channel value.\n   * @param {Number} ch3 Color channel value.\n   * @param {Number} ch4 Color channel value.\n   *\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setTextColor\n   */\n  API.__private__.setTextColor = API.setTextColor = function(\n    ch1,\n    ch2,\n    ch3,\n    ch4\n  ) {\n    var options = {\n      ch1: ch1,\n      ch2: ch2,\n      ch3: ch3,\n      ch4: ch4,\n      pdfColorType: \"text\",\n      precision: 3\n    };\n    textColor = encodeColorString(options);\n\n    return this;\n  };\n\n  var activeCharSpace = options.charSpace;\n\n  /**\n   * Get global value of CharSpace.\n   *\n   * @function\n   * @instance\n   * @returns {number} charSpace\n   * @memberof jsPDF#\n   * @name getCharSpace\n   */\n  var getCharSpace = (API.__private__.getCharSpace = API.getCharSpace = function() {\n    return parseFloat(activeCharSpace || 0);\n  });\n\n  /**\n   * Set global value of CharSpace.\n   *\n   * @param {number} charSpace\n   * @function\n   * @instance\n   * @returns {jsPDF} jsPDF-instance\n   * @memberof jsPDF#\n   * @name setCharSpace\n   */\n  API.__private__.setCharSpace = API.setCharSpace = function(charSpace) {\n    if (isNaN(charSpace)) {\n      throw new Error(\"Invalid argument passed to jsPDF.setCharSpace\");\n    }\n    activeCharSpace = charSpace;\n    return this;\n  };\n\n  var lineCapID = 0;\n  /**\n   * Is an Object providing a mapping from human-readable to\n   * integer flag values designating the varieties of line cap\n   * and join styles.\n   *\n   * @memberof jsPDF#\n   * @name CapJoinStyles\n   */\n  API.CapJoinStyles = {\n    0: 0,\n    butt: 0,\n    but: 0,\n    miter: 0,\n    1: 1,\n    round: 1,\n    rounded: 1,\n    circle: 1,\n    2: 2,\n    projecting: 2,\n    project: 2,\n    square: 2,\n    bevel: 2\n  };\n\n  /**\n   * Sets the line cap styles.\n   * See {jsPDF.CapJoinStyles} for variants.\n   *\n   * @param {String|Number} style A string or number identifying the type of line cap.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setLineCap\n   */\n  API.__private__.setLineCap = API.setLineCap = function(style) {\n    var id = API.CapJoinStyles[style];\n    if (id === undefined) {\n      throw new Error(\n        \"Line cap style of '\" +\n          style +\n          \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\n      );\n    }\n    lineCapID = id;\n    out(id + \" J\");\n\n    return this;\n  };\n\n  var lineJoinID = 0;\n  /**\n   * Sets the line join styles.\n   * See {jsPDF.CapJoinStyles} for variants.\n   *\n   * @param {String|Number} style A string or number identifying the type of line join.\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setLineJoin\n   */\n  API.__private__.setLineJoin = API.setLineJoin = function(style) {\n    var id = API.CapJoinStyles[style];\n    if (id === undefined) {\n      throw new Error(\n        \"Line join style of '\" +\n          style +\n          \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\n      );\n    }\n    lineJoinID = id;\n    out(id + \" j\");\n\n    return this;\n  };\n\n  var miterLimit;\n  /**\n   * Sets the miterLimit property, which effects the maximum miter length.\n   *\n   * @param {number} length The length of the miter\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setLineMiterLimit\n   */\n  API.__private__.setLineMiterLimit = API.__private__.setMiterLimit = API.setLineMiterLimit = API.setMiterLimit = function(\n    length\n  ) {\n    length = length || 0;\n    if (isNaN(length)) {\n      throw new Error(\"Invalid argument passed to jsPDF.setLineMiterLimit\");\n    }\n    out(hpf(scale(length)) + \" M\");\n\n    return this;\n  };\n\n  /**\n   * An object representing a pdf graphics state.\n   * @class GState\n   */\n\n  /**\n   *\n   * @param parameters A parameter object that contains all properties this graphics state wants to set.\n   * Supported are: opacity, stroke-opacity\n   * @constructor\n   */\n  API.GState = GState;\n\n  /**\n   * Sets a either previously added {@link GState} (via {@link addGState}) or a new {@link GState}.\n   * @param {String|GState} gState If type is string, a previously added GState is used, if type is GState\n   * it will be added before use.\n   * @function\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setGState\n   */\n  API.setGState = function(gState) {\n    if (typeof gState === \"string\") {\n      gState = gStates[gStatesMap[gState]];\n    } else {\n      gState = addGState(null, gState);\n    }\n\n    if (!gState.equals(activeGState)) {\n      out(\"/\" + gState.id + \" gs\");\n      activeGState = gState;\n    }\n  };\n\n  /**\n   * Adds a new Graphics State. Duplicates are automatically eliminated.\n   * @param {String} key Might also be null, if no later reference to this gState is needed\n   * @param {Object} gState The gState object\n   */\n  var addGState = function(key, gState) {\n    // only add it if it is not already present (the keys provided by the user must be unique!)\n    if (key && gStatesMap[key]) return;\n    var duplicate = false;\n    for (var s in gStates) {\n      if (gStates.hasOwnProperty(s)) {\n        if (gStates[s].equals(gState)) {\n          duplicate = true;\n          break;\n        }\n      }\n    }\n\n    if (duplicate) {\n      gState = gStates[s];\n    } else {\n      var gStateKey = \"GS\" + (Object.keys(gStates).length + 1).toString(10);\n      gStates[gStateKey] = gState;\n      gState.id = gStateKey;\n    }\n\n    // several user keys may point to the same GState object\n    key && (gStatesMap[key] = gState.id);\n\n    events.publish(\"addGState\", gState);\n\n    return gState;\n  };\n\n  /**\n   * Adds a new {@link GState} for later use. See {@link setGState}.\n   * @param {String} key\n   * @param {GState} gState\n   * @function\n   * @instance\n   * @returns {jsPDF}\n   *\n   * @memberof jsPDF#\n   * @name addGState\n   */\n  API.addGState = function(key, gState) {\n    addGState(key, gState);\n    return this;\n  };\n\n  /**\n   * Saves the current graphics state (\"pushes it on the stack\"). It can be restored by {@link restoreGraphicsState}\n   * later. Here, the general pdf graphics state is meant, also including the current transformation matrix,\n   * fill and stroke colors etc.\n   * @function\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name saveGraphicsState\n   */\n  API.saveGraphicsState = function() {\n    out(\"q\");\n    // as we cannot set font key and size independently we must keep track of both\n    fontStateStack.push({\n      key: activeFontKey,\n      size: activeFontSize,\n      color: textColor\n    });\n    return this;\n  };\n\n  /**\n   * Restores a previously saved graphics state saved by {@link saveGraphicsState} (\"pops the stack\").\n   * @function\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name restoreGraphicsState\n   */\n  API.restoreGraphicsState = function() {\n    out(\"Q\");\n\n    // restore previous font state\n    var fontState = fontStateStack.pop();\n    activeFontKey = fontState.key;\n    activeFontSize = fontState.size;\n    textColor = fontState.color;\n\n    activeGState = null;\n\n    return this;\n  };\n\n  /**\n   * Appends this matrix to the left of all previously applied matrices.\n   *\n   * @param {Matrix} matrix\n   * @function\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name setCurrentTransformationMatrix\n   */\n  API.setCurrentTransformationMatrix = function(matrix) {\n    out(matrix.toString() + \" cm\");\n    return this;\n  };\n\n  /**\n   * Inserts a debug comment into the generated pdf.\n   * @function\n   * @instance\n   * @param {String} text\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name comment\n   */\n  API.comment = function(text) {\n    out(\"#\" + text);\n    return this;\n  };\n\n  /**\n   * Point\n   */\n  var Point = function(x, y) {\n    var _x = x || 0;\n    Object.defineProperty(this, \"x\", {\n      enumerable: true,\n      get: function() {\n        return _x;\n      },\n      set: function(value) {\n        if (!isNaN(value)) {\n          _x = parseFloat(value);\n        }\n      }\n    });\n\n    var _y = y || 0;\n    Object.defineProperty(this, \"y\", {\n      enumerable: true,\n      get: function() {\n        return _y;\n      },\n      set: function(value) {\n        if (!isNaN(value)) {\n          _y = parseFloat(value);\n        }\n      }\n    });\n\n    var _type = \"pt\";\n    Object.defineProperty(this, \"type\", {\n      enumerable: true,\n      get: function() {\n        return _type;\n      },\n      set: function(value) {\n        _type = value.toString();\n      }\n    });\n    return this;\n  };\n\n  /**\n   * Rectangle\n   */\n  var Rectangle = function(x, y, w, h) {\n    Point.call(this, x, y);\n    this.type = \"rect\";\n\n    var _w = w || 0;\n    Object.defineProperty(this, \"w\", {\n      enumerable: true,\n      get: function() {\n        return _w;\n      },\n      set: function(value) {\n        if (!isNaN(value)) {\n          _w = parseFloat(value);\n        }\n      }\n    });\n\n    var _h = h || 0;\n    Object.defineProperty(this, \"h\", {\n      enumerable: true,\n      get: function() {\n        return _h;\n      },\n      set: function(value) {\n        if (!isNaN(value)) {\n          _h = parseFloat(value);\n        }\n      }\n    });\n\n    return this;\n  };\n\n  /**\n   * FormObject/RenderTarget\n   */\n\n  var RenderTarget = function() {\n    this.page = page;\n    this.currentPage = currentPage;\n    this.pages = pages.slice(0);\n    this.pagesContext = pagesContext.slice(0);\n    this.x = pageX;\n    this.y = pageY;\n    this.matrix = pageMatrix;\n    this.width = getUnscaledPageWidth(currentPage);\n    this.height = getUnscaledPageHeight(currentPage);\n    this.outputDestination = outputDestination;\n\n    this.id = \"\"; // set by endFormObject()\n    this.objectNumber = -1; // will be set by putXObject()\n  };\n\n  RenderTarget.prototype.restore = function() {\n    page = this.page;\n    currentPage = this.currentPage;\n    pagesContext = this.pagesContext;\n    pages = this.pages;\n    pageX = this.x;\n    pageY = this.y;\n    pageMatrix = this.matrix;\n    setPageWidthWithoutScaling(currentPage, this.width);\n    setPageHeightWithoutScaling(currentPage, this.height);\n    outputDestination = this.outputDestination;\n  };\n\n  var beginNewRenderTarget = function(x, y, width, height, matrix) {\n    // save current state\n    renderTargetStack.push(new RenderTarget());\n\n    // clear pages\n    page = currentPage = 0;\n    pages = [];\n    pageX = x;\n    pageY = y;\n\n    pageMatrix = matrix;\n\n    beginPage([width, height]);\n  };\n\n  var endFormObject = function(key) {\n    // only add it if it is not already present (the keys provided by the user must be unique!)\n    if (renderTargetMap[key]) {\n      renderTargetStack.pop().restore();\n      return;\n    }\n\n    // save the created xObject\n    var newXObject = new RenderTarget();\n\n    var xObjectId = \"Xo\" + (Object.keys(renderTargets).length + 1).toString(10);\n    newXObject.id = xObjectId;\n\n    renderTargetMap[key] = xObjectId;\n    renderTargets[xObjectId] = newXObject;\n\n    events.publish(\"addFormObject\", newXObject);\n\n    // restore state from stack\n    renderTargetStack.pop().restore();\n  };\n\n  /**\n   * Starts a new pdf form object, which means that all consequent draw calls target a new independent object\n   * until {@link endFormObject} is called. The created object can be referenced and drawn later using\n   * {@link doFormObject}. Nested form objects are possible.\n   * x, y, width, height set the bounding box that is used to clip the content.\n   *\n   * @param {number} x\n   * @param {number} y\n   * @param {number} width\n   * @param {number} height\n   * @param {Matrix} matrix The matrix that will be applied to convert the form objects coordinate system to\n   * the parent's.\n   * @function\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name beginFormObject\n   */\n  API.beginFormObject = function(x, y, width, height, matrix) {\n    // The user can set the output target to a new form object. Nested form objects are possible.\n    // Currently, they use the resource dictionary of the surrounding stream. This should be changed, as\n    // the PDF-Spec states:\n    // \"In PDF 1.2 and later versions, form XObjects may be independent of the content streams in which\n    // they appear, and this is strongly recommended although not requiredIn PDF 1.2 and later versions,\n    // form XObjects may be independent of the content streams in which they appear, and this is strongly\n    // recommended although not required\"\n    beginNewRenderTarget(x, y, width, height, matrix);\n    return this;\n  };\n\n  /**\n   * Completes and saves the form object.\n   * @param {String} key The key by which this form object can be referenced.\n   * @function\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name endFormObject\n   */\n  API.endFormObject = function(key) {\n    endFormObject(key);\n    return this;\n  };\n\n  /**\n   * Draws the specified form object by referencing to the respective pdf XObject created with\n   * {@link API.beginFormObject} and {@link endFormObject}.\n   * The location is determined by matrix.\n   *\n   * @param {String} key The key to the form object.\n   * @param {Matrix} matrix The matrix applied before drawing the form object.\n   * @function\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name doFormObject\n   */\n  API.doFormObject = function(key, matrix) {\n    var xObject = renderTargets[renderTargetMap[key]];\n    out(\"q\");\n    out(matrix.toString() + \" cm\");\n    out(\"/\" + xObject.id + \" Do\");\n    out(\"Q\");\n    return this;\n  };\n\n  /**\n   * Returns the form object specified by key.\n   * @param key {String}\n   * @returns {{x: number, y: number, width: number, height: number, matrix: Matrix}}\n   * @function\n   * @returns {jsPDF}\n   * @memberof jsPDF#\n   * @name getFormObject\n   */\n  API.getFormObject = function(key) {\n    var xObject = renderTargets[renderTargetMap[key]];\n    return {\n      x: xObject.x,\n      y: xObject.y,\n      width: xObject.width,\n      height: xObject.height,\n      matrix: xObject.matrix\n    };\n  };\n\n  /**\n   * Saves as PDF document. An alias of jsPDF.output('save', 'filename.pdf').\n   * Uses FileSaver.js-method saveAs.\n   *\n   * @memberof jsPDF#\n   * @name save\n   * @function\n   * @instance\n   * @param  {string} filename The filename including extension.\n   * @param  {Object} options An Object with additional options, possible options: 'returnPromise'.\n   * @returns {jsPDF|Promise} jsPDF-instance     */\n  API.save = function(filename, options) {\n    filename = filename || \"generated.pdf\";\n\n    options = options || {};\n    options.returnPromise = options.returnPromise || false;\n\n    if (options.returnPromise === false) {\n      saveAs(getBlob(buildDocument()), filename);\n      if (typeof saveAs.unload === \"function\") {\n        if (globalObject.setTimeout) {\n          setTimeout(saveAs.unload, 911);\n        }\n      }\n      return this;\n    } else {\n      return new Promise(function(resolve, reject) {\n        try {\n          var result = saveAs(getBlob(buildDocument()), filename);\n          if (typeof saveAs.unload === \"function\") {\n            if (globalObject.setTimeout) {\n              setTimeout(saveAs.unload, 911);\n            }\n          }\n          resolve(result);\n        } catch (e) {\n          reject(e.message);\n        }\n      });\n    }\n\n  };\n\n  // applying plugins (more methods) ON TOP of built-in API.\n  // this is intentional as we allow plugins to override\n  // built-ins\n  for (var plugin in jsPDF.API) {\n    if (jsPDF.API.hasOwnProperty(plugin)) {\n      if (plugin === \"events\" && jsPDF.API.events.length) {\n        (function(events, newEvents) {\n          // jsPDF.API.events is a JS Array of Arrays\n          // where each Array is a pair of event name, handler\n          // Events were added by plugins to the jsPDF instantiator.\n          // These are always added to the new instance and some ran\n          // during instantiation.\n          var eventname, handler_and_args, i;\n\n          for (i = newEvents.length - 1; i !== -1; i--) {\n            // subscribe takes 3 args: 'topic', function, runonce_flag\n            // if undefined, runonce is false.\n            // users can attach callback directly,\n            // or they can attach an array with [callback, runonce_flag]\n            // that's what the \"apply\" magic is for below.\n            eventname = newEvents[i][0];\n            handler_and_args = newEvents[i][1];\n            events.subscribe.apply(\n              events,\n              [eventname].concat(\n                typeof handler_and_args === \"function\"\n                  ? [handler_and_args]\n                  : handler_and_args\n              )\n            );\n          }\n        })(events, jsPDF.API.events);\n      } else {\n        API[plugin] = jsPDF.API[plugin];\n      }\n    }\n  }\n\n  function getUnscaledPageWidth(pageNumber) {\n    return (\n      pagesContext[pageNumber].mediaBox.topRightX -\n      pagesContext[pageNumber].mediaBox.bottomLeftX\n    );\n  }\n\n  function setPageWidthWithoutScaling(pageNumber, value) {\n    pagesContext[pageNumber].mediaBox.topRightX =\n      value + pagesContext[pageNumber].mediaBox.bottomLeftX;\n  }\n\n  function getUnscaledPageHeight(pageNumber) {\n    return (\n      pagesContext[pageNumber].mediaBox.topRightY -\n      pagesContext[pageNumber].mediaBox.bottomLeftY\n    );\n  }\n\n  function setPageHeightWithoutScaling(pageNumber, value) {\n    pagesContext[pageNumber].mediaBox.topRightY =\n      value + pagesContext[pageNumber].mediaBox.bottomLeftY;\n  }\n\n  var getPageWidth = (API.getPageWidth = function(pageNumber) {\n    pageNumber = pageNumber || currentPage;\n    return getUnscaledPageWidth(pageNumber) / scaleFactor;\n  });\n\n  var setPageWidth = (API.setPageWidth = function(pageNumber, value) {\n    setPageWidthWithoutScaling(pageNumber, value * scaleFactor);\n  });\n\n  var getPageHeight = (API.getPageHeight = function(pageNumber) {\n    pageNumber = pageNumber || currentPage;\n    return getUnscaledPageHeight(pageNumber) / scaleFactor;\n  });\n\n  var setPageHeight = (API.setPageHeight = function(pageNumber, value) {\n    setPageHeightWithoutScaling(pageNumber, value * scaleFactor);\n  });\n\n  /**\n   * Object exposing internal API to plugins\n   * @public\n   * @ignore\n   */\n  API.internal = {\n    pdfEscape: pdfEscape,\n    getStyle: getStyle,\n    getFont: getFontEntry,\n    getFontSize: getFontSize,\n    getCharSpace: getCharSpace,\n    getTextColor: getTextColor,\n    getLineHeight: getLineHeight,\n    getLineHeightFactor: getLineHeightFactor,\n    getLineWidth: getLineWidth,\n    write: write,\n    getHorizontalCoordinate: getHorizontalCoordinate,\n    getVerticalCoordinate: getVerticalCoordinate,\n    getCoordinateString: getHorizontalCoordinateString,\n    getVerticalCoordinateString: getVerticalCoordinateString,\n    collections: {},\n    newObject: newObject,\n    newAdditionalObject: newAdditionalObject,\n    newObjectDeferred: newObjectDeferred,\n    newObjectDeferredBegin: newObjectDeferredBegin,\n    getFilters: getFilters,\n    putStream: putStream,\n    events: events,\n    scaleFactor: scaleFactor,\n    pageSize: {\n      getWidth: function() {\n        return getPageWidth(currentPage);\n      },\n      setWidth: function(value) {\n        setPageWidth(currentPage, value);\n      },\n      getHeight: function() {\n        return getPageHeight(currentPage);\n      },\n      setHeight: function(value) {\n        setPageHeight(currentPage, value);\n      }\n    },\n    encryptionOptions: encryptionOptions,\n    encryption: encryption,\n    getEncryptor: getEncryptor,\n    output: output,\n    getNumberOfPages: getNumberOfPages,\n    get pages() {\n      return pages;\n    },\n    out: out,\n    f2: f2,\n    f3: f3,\n    getPageInfo: getPageInfo,\n    getPageInfoByObjId: getPageInfoByObjId,\n    getCurrentPageInfo: getCurrentPageInfo,\n    getPDFVersion: getPdfVersion,\n    Point: Point,\n    Rectangle: Rectangle,\n    Matrix: Matrix,\n    hasHotfix: hasHotfix //Expose the hasHotfix check so plugins can also check them.\n  };\n\n  Object.defineProperty(API.internal.pageSize, \"width\", {\n    get: function() {\n      return getPageWidth(currentPage);\n    },\n    set: function(value) {\n      setPageWidth(currentPage, value);\n    },\n    enumerable: true,\n    configurable: true\n  });\n  Object.defineProperty(API.internal.pageSize, \"height\", {\n    get: function() {\n      return getPageHeight(currentPage);\n    },\n    set: function(value) {\n      setPageHeight(currentPage, value);\n    },\n    enumerable: true,\n    configurable: true\n  });\n\n  //////////////////////////////////////////////////////\n  // continuing initialization of jsPDF Document object\n  //////////////////////////////////////////////////////\n  // Add the first page automatically\n  addFonts.call(API, standardFonts);\n  activeFontKey = \"F1\";\n  _addPage(format, orientation);\n\n  events.publish(\"initialized\");\n  return API;\n}\n\n/**\n * jsPDF.API is a STATIC property of jsPDF class.\n * jsPDF.API is an object you can add methods and properties to.\n * The methods / properties you add will show up in new jsPDF objects.\n *\n * One property is prepopulated. It is the 'events' Object. Plugin authors can add topics,\n * callbacks to this object. These will be reassigned to all new instances of jsPDF.\n *\n * @static\n * @public\n * @memberof jsPDF#\n * @name API\n *\n * @example\n * jsPDF.API.mymethod = function(){\n *   // 'this' will be ref to internal API object. see jsPDF source\n *   // , so you can refer to built-in methods like so:\n *   //     this.line(....)\n *   //     this.text(....)\n * }\n * var pdfdoc = new jsPDF()\n * pdfdoc.mymethod() // <- !!!!!!\n */\njsPDF.API = {\n  events: []\n};\n/**\n * The version of jsPDF.\n * @name version\n * @type {string}\n * @memberof jsPDF#\n */\njsPDF.version = \"0.0.0\";\n\nexport { jsPDF, ShadingPattern, TilingPattern, GState };\nexport default jsPDF;\n", "/* global jsPDF */\n/**\n * @license\n * Copyright (c) 2016 Alexander Weidt,\n * https://github.com/BiggA94\n *\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF AcroForm Plugin\n * @module AcroForm\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\nvar jsPDFAPI = jsPDF.API;\nvar scaleFactor = 1;\n\nvar pdfEscape = function(value) {\n  return value\n    .replace(/\\\\/g, \"\\\\\\\\\")\n    .replace(/\\(/g, \"\\\\(\")\n    .replace(/\\)/g, \"\\\\)\");\n};\nvar pdfUnescape = function(value) {\n  return value\n    .replace(/\\\\\\\\/g, \"\\\\\")\n    .replace(/\\\\\\(/g, \"(\")\n    .replace(/\\\\\\)/g, \")\");\n};\n\n/**\n * Escapes a PDF Name Object.\n * Replaces special characters (delimiter, whitespace, #) with their hex representation.\n */\nvar pdfEscapeName = function(value) {\n  return value\n    .toString()\n    .replace(/#/g, \"#23\")\n    .replace(/[\\s\\n\\r()<>[\\]{}\\/%]/g, c => {\n      const hex = c\n        .charCodeAt(0)\n        .toString(16)\n        .toUpperCase();\n      return \"#\" + (hex.length === 1 ? \"0\" + hex : hex);\n    });\n};\n\nvar f2 = function(number) {\n  return number.toFixed(2); // Ie, %.2f\n};\n\nvar f5 = function(number) {\n  return number.toFixed(5); // Ie, %.2f\n};\n\njsPDFAPI.__acroform__ = {};\nvar inherit = function(child, parent) {\n  child.prototype = Object.create(parent.prototype);\n  child.prototype.constructor = child;\n};\n\nvar scale = function(x) {\n  return x * scaleFactor;\n};\n\nvar createFormXObject = function(formObject) {\n  var xobj = new AcroFormXObject();\n  var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n  var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n  xobj.BBox = [0, 0, Number(f2(width)), Number(f2(height))];\n  return xobj;\n};\n\n/**\n * Bit-Operations\n */\nvar setBit = (jsPDFAPI.__acroform__.setBit = function(number, bitPosition) {\n  number = number || 0;\n  bitPosition = bitPosition || 0;\n\n  if (isNaN(number) || isNaN(bitPosition)) {\n    throw new Error(\n      \"Invalid arguments passed to jsPDF.API.__acroform__.setBit\"\n    );\n  }\n  var bitMask = 1 << bitPosition;\n\n  number |= bitMask;\n\n  return number;\n});\n\nvar clearBit = (jsPDFAPI.__acroform__.clearBit = function(number, bitPosition) {\n  number = number || 0;\n  bitPosition = bitPosition || 0;\n\n  if (isNaN(number) || isNaN(bitPosition)) {\n    throw new Error(\n      \"Invalid arguments passed to jsPDF.API.__acroform__.clearBit\"\n    );\n  }\n  var bitMask = 1 << bitPosition;\n\n  number &= ~bitMask;\n\n  return number;\n});\n\nvar getBit = (jsPDFAPI.__acroform__.getBit = function(number, bitPosition) {\n  if (isNaN(number) || isNaN(bitPosition)) {\n    throw new Error(\n      \"Invalid arguments passed to jsPDF.API.__acroform__.getBit\"\n    );\n  }\n  return (number & (1 << bitPosition)) === 0 ? 0 : 1;\n});\n\n/*\n * Ff starts counting the bit position at 1 and not like javascript at 0\n */\nvar getBitForPdf = (jsPDFAPI.__acroform__.getBitForPdf = function(\n  number,\n  bitPosition\n) {\n  if (isNaN(number) || isNaN(bitPosition)) {\n    throw new Error(\n      \"Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf\"\n    );\n  }\n  return getBit(number, bitPosition - 1);\n});\n\nvar setBitForPdf = (jsPDFAPI.__acroform__.setBitForPdf = function(\n  number,\n  bitPosition\n) {\n  if (isNaN(number) || isNaN(bitPosition)) {\n    throw new Error(\n      \"Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf\"\n    );\n  }\n  return setBit(number, bitPosition - 1);\n});\n\nvar clearBitForPdf = (jsPDFAPI.__acroform__.clearBitForPdf = function(\n  number,\n  bitPosition\n) {\n  if (isNaN(number) || isNaN(bitPosition)) {\n    throw new Error(\n      \"Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf\"\n    );\n  }\n  return clearBit(number, bitPosition - 1);\n});\n\nvar calculateCoordinates = (jsPDFAPI.__acroform__.calculateCoordinates = function(\n  args,\n  scope\n) {\n  var getHorizontalCoordinate = scope.internal.getHorizontalCoordinate;\n  var getVerticalCoordinate = scope.internal.getVerticalCoordinate;\n  var x = args[0];\n  var y = args[1];\n  var w = args[2];\n  var h = args[3];\n\n  var coordinates = {};\n\n  coordinates.lowerLeft_X = getHorizontalCoordinate(x) || 0;\n  coordinates.lowerLeft_Y = getVerticalCoordinate(y + h) || 0;\n  coordinates.upperRight_X = getHorizontalCoordinate(x + w) || 0;\n  coordinates.upperRight_Y = getVerticalCoordinate(y) || 0;\n\n  return [\n    Number(f2(coordinates.lowerLeft_X)),\n    Number(f2(coordinates.lowerLeft_Y)),\n    Number(f2(coordinates.upperRight_X)),\n    Number(f2(coordinates.upperRight_Y))\n  ];\n});\n\nvar calculateAppearanceStream = function(formObject) {\n  if (formObject.appearanceStreamContent) {\n    return formObject.appearanceStreamContent;\n  }\n\n  if (!formObject.V && !formObject.DV) {\n    return;\n  }\n\n  // else calculate it\n\n  var stream = [];\n  var text = formObject._V || formObject.DV;\n  var calcRes = calculateX(formObject, text);\n  var fontKey = formObject.scope.internal.getFont(\n    formObject.fontName,\n    formObject.fontStyle\n  ).id;\n\n  //PDF 32000-1:2008, page 444\n  stream.push(\"/Tx BMC\");\n  stream.push(\"q\");\n  stream.push(\"BT\"); // Begin Text\n  stream.push(formObject.scope.__private__.encodeColorString(formObject.color));\n  stream.push(\"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf\");\n  stream.push(\"1 0 0 1 0 0 Tm\"); // Transformation Matrix\n  stream.push(calcRes.text);\n  stream.push(\"ET\"); // End Text\n  stream.push(\"Q\");\n  stream.push(\"EMC\");\n\n  var appearanceStreamContent = createFormXObject(formObject);\n  appearanceStreamContent.scope = formObject.scope;\n  appearanceStreamContent.stream = stream.join(\"\\n\");\n  return appearanceStreamContent;\n};\n\nvar calculateX = function(formObject, text) {\n  var maxFontSize =\n    formObject.fontSize === 0 ? formObject.maxFontSize : formObject.fontSize;\n  var returnValue = {\n    text: \"\",\n    fontSize: \"\"\n  };\n  // Remove Brackets\n  text = text.substr(0, 1) == \"(\" ? text.substr(1) : text;\n  text =\n    text.substr(text.length - 1) == \")\"\n      ? text.substr(0, text.length - 1)\n      : text;\n  // split into array of words\n  var textSplit = text.split(\" \");\n  if (formObject.multiline) {\n    textSplit = textSplit.map(word => word.split(\"\\n\"));\n  } else {\n    textSplit = textSplit.map(word => [word]);\n  }\n\n  var fontSize = maxFontSize; // The Starting fontSize (The Maximum)\n  var lineSpacing = 2;\n  var borderPadding = 2;\n\n  var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n  height = height < 0 ? -height : height;\n  var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n  width = width < 0 ? -width : width;\n\n  var isSmallerThanWidth = function(i, lastLine, fontSize) {\n    if (i + 1 < textSplit.length) {\n      var tmp = lastLine + \" \" + textSplit[i + 1][0];\n      var TextWidth = calculateFontSpace(tmp, formObject, fontSize).width;\n      var FieldWidth = width - 2 * borderPadding;\n      return TextWidth <= FieldWidth;\n    } else {\n      return false;\n    }\n  };\n\n  fontSize++;\n  FontSize: while (fontSize > 0) {\n    text = \"\";\n    fontSize--;\n    var textHeight = calculateFontSpace(\"3\", formObject, fontSize).height;\n    var startY = formObject.multiline\n      ? height - fontSize\n      : (height - textHeight) / 2;\n    startY += lineSpacing;\n    var startX;\n\n    var lastY = startY;\n    var firstWordInLine = 0,\n      lastWordInLine = 0;\n    var lastLength;\n    var currWord = 0;\n\n    if (fontSize <= 0) {\n      // In case, the Text doesn't fit at all\n      fontSize = 12;\n      text = \"(...) Tj\\n\";\n      text +=\n        \"% Width of Text: \" +\n        calculateFontSpace(text, formObject, fontSize).width +\n        \", FieldWidth:\" +\n        width +\n        \"\\n\";\n      break;\n    }\n\n    var lastLine = \"\";\n    var lineCount = 0;\n    Line: for (var i = 0; i < textSplit.length; i++) {\n      if (textSplit.hasOwnProperty(i)) {\n        let isWithNewLine = false;\n        if (textSplit[i].length !== 1 && currWord !== textSplit[i].length - 1) {\n          if (\n            (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n            height\n          ) {\n            continue FontSize;\n          }\n\n          lastLine += textSplit[i][currWord];\n          isWithNewLine = true;\n          lastWordInLine = i;\n          i--;\n        } else {\n          lastLine += textSplit[i][currWord] + \" \";\n          lastLine =\n            lastLine.substr(lastLine.length - 1) == \" \"\n              ? lastLine.substr(0, lastLine.length - 1)\n              : lastLine;\n          var key = parseInt(i);\n          var nextLineIsSmaller = isSmallerThanWidth(key, lastLine, fontSize);\n          var isLastWord = i >= textSplit.length - 1;\n\n          if (nextLineIsSmaller && !isLastWord) {\n            lastLine += \" \";\n            currWord = 0;\n            continue; // Line\n          } else if (!nextLineIsSmaller && !isLastWord) {\n            if (!formObject.multiline) {\n              continue FontSize;\n            } else {\n              if (\n                (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n                height\n              ) {\n                // If the Text is higher than the\n                // FieldObject\n                continue FontSize;\n              }\n              lastWordInLine = key;\n              // go on\n            }\n          } else if (isLastWord) {\n            lastWordInLine = key;\n          } else {\n            if (\n              formObject.multiline &&\n              (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n                height\n            ) {\n              // If the Text is higher than the FieldObject\n              continue FontSize;\n            }\n          }\n        }\n        // Remove last blank\n\n        var line = \"\";\n\n        for (var x = firstWordInLine; x <= lastWordInLine; x++) {\n          var currLine = textSplit[x];\n          if (formObject.multiline) {\n            if (x === lastWordInLine) {\n              line += currLine[currWord] + \" \";\n              currWord = (currWord + 1) % currLine.length;\n              continue;\n            }\n            if (x === firstWordInLine) {\n              line += currLine[currLine.length - 1] + \" \";\n              continue;\n            }\n          }\n          line += currLine[0] + \" \";\n        }\n\n        // Remove last blank\n        line =\n          line.substr(line.length - 1) == \" \"\n            ? line.substr(0, line.length - 1)\n            : line;\n        // lastLength -= blankSpace.width;\n        lastLength = calculateFontSpace(line, formObject, fontSize).width;\n\n        // Calculate startX\n        switch (formObject.textAlign) {\n          case \"right\":\n            startX = width - lastLength - borderPadding;\n            break;\n          case \"center\":\n            startX = (width - lastLength) / 2;\n            break;\n          case \"left\":\n          default:\n            startX = borderPadding;\n            break;\n        }\n        text += f2(startX) + \" \" + f2(lastY) + \" Td\\n\";\n        text += \"(\" + pdfEscape(line) + \") Tj\\n\";\n        // reset X in PDF\n        text += -f2(startX) + \" 0 Td\\n\";\n\n        // After a Line, adjust y position\n        lastY = -(fontSize + lineSpacing);\n\n        // Reset for next iteration step\n        lastLength = 0;\n        firstWordInLine = isWithNewLine ? lastWordInLine : lastWordInLine + 1;\n        lineCount++;\n\n        lastLine = \"\";\n        continue Line;\n      }\n    }\n    break;\n  }\n\n  returnValue.text = text;\n  returnValue.fontSize = fontSize;\n\n  return returnValue;\n};\n\n/**\n * Small workaround for calculating the TextMetric approximately.\n *\n * @param text\n * @param fontsize\n * @returns {TextMetrics} (Has Height and Width)\n */\nvar calculateFontSpace = function(text, formObject, fontSize) {\n  var font = formObject.scope.internal.getFont(\n    formObject.fontName,\n    formObject.fontStyle\n  );\n  var width =\n    formObject.scope.getStringUnitWidth(text, {\n      font: font,\n      fontSize: parseFloat(fontSize),\n      charSpace: 0\n    }) * parseFloat(fontSize);\n  var height =\n    formObject.scope.getStringUnitWidth(\"3\", {\n      font: font,\n      fontSize: parseFloat(fontSize),\n      charSpace: 0\n    }) *\n    parseFloat(fontSize) *\n    1.5;\n  return { height: height, width: width };\n};\n\nvar acroformPluginTemplate = {\n  fields: [],\n  xForms: [],\n  /**\n   * acroFormDictionaryRoot contains information about the AcroForm\n   * Dictionary 0: The Event-Token, the AcroFormDictionaryCallback has\n   * 1: The Object ID of the Root\n   */\n  acroFormDictionaryRoot: null,\n  /**\n   * After the PDF gets evaluated, the reference to the root has to be\n   * reset, this indicates, whether the root has already been printed\n   * out\n   */\n  printedOut: false,\n  internal: null,\n  isInitialized: false\n};\n\nvar annotReferenceCallback = function(scope) {\n  //set objId to undefined and force it to get a new objId on buildDocument\n  scope.internal.acroformPlugin.acroFormDictionaryRoot.objId = undefined;\n  var fields = scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields;\n  for (var i in fields) {\n    if (fields.hasOwnProperty(i)) {\n      var formObject = fields[i];\n      //set objId to undefined and force it to get a new objId on buildDocument\n      formObject.objId = undefined;\n      // add Annot Reference!\n      if (formObject.hasAnnotation) {\n        // If theres an Annotation Widget in the Form Object, put the\n        // Reference in the /Annot array\n        createAnnotationReference(formObject, scope);\n      }\n    }\n  }\n};\n\nvar putForm = function(formObject) {\n  if (formObject.scope.internal.acroformPlugin.printedOut) {\n    formObject.scope.internal.acroformPlugin.printedOut = false;\n    formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot = null;\n  }\n  formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(\n    formObject\n  );\n};\n/**\n * Create the Reference to the widgetAnnotation, so that it gets referenced\n * in the Annot[] int the+ (Requires the Annotation Plugin)\n */\nvar createAnnotationReference = function(object, scope) {\n  var options = {\n    type: \"reference\",\n    object: object\n  };\n  var findEntry = function(entry) {\n    return entry.type === options.type && entry.object === options.object;\n  };\n  if (\n    scope.internal\n      .getPageInfo(object.page)\n      .pageContext.annotations.find(findEntry) === undefined\n  ) {\n    scope.internal\n      .getPageInfo(object.page)\n      .pageContext.annotations.push(options);\n  }\n};\n\n// Callbacks\n\nvar putCatalogCallback = function(scope) {\n  // Put reference to AcroForm to DocumentCatalog\n  if (\n    typeof scope.internal.acroformPlugin.acroFormDictionaryRoot !== \"undefined\"\n  ) {\n    // for safety, shouldn't normally be the case\n    scope.internal.write(\n      \"/AcroForm \" +\n        scope.internal.acroformPlugin.acroFormDictionaryRoot.objId +\n        \" \" +\n        0 +\n        \" R\"\n    );\n  } else {\n    throw new Error(\"putCatalogCallback: Root missing.\");\n  }\n};\n\n/**\n * Adds /Acroform X 0 R to Document Catalog, and creates the AcroForm\n * Dictionary\n */\nvar AcroFormDictionaryCallback = function(scope) {\n  // Remove event\n  scope.internal.events.unsubscribe(\n    scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID\n  );\n  delete scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID;\n  scope.internal.acroformPlugin.printedOut = true;\n};\n\n/**\n * Creates the single Fields and writes them into the Document\n *\n * If fieldArray is set, use the fields that are inside it instead of the\n * fields from the AcroRoot (for the FormXObjects...)\n */\nvar createFieldCallback = function(fieldArray, scope) {\n  var standardFields = !fieldArray;\n\n  if (!fieldArray) {\n    // in case there is no fieldArray specified, we want to print out\n    // the Fields of the AcroForm\n    // Print out Root\n    scope.internal.newObjectDeferredBegin(\n      scope.internal.acroformPlugin.acroFormDictionaryRoot.objId,\n      true\n    );\n    scope.internal.acroformPlugin.acroFormDictionaryRoot.putStream();\n  }\n\n  fieldArray =\n    fieldArray || scope.internal.acroformPlugin.acroFormDictionaryRoot.Kids;\n\n  for (var i in fieldArray) {\n    if (fieldArray.hasOwnProperty(i)) {\n      var fieldObject = fieldArray[i];\n      var keyValueList = [];\n      var oldRect = fieldObject.Rect;\n\n      if (fieldObject.Rect) {\n        fieldObject.Rect = calculateCoordinates(fieldObject.Rect, scope);\n      }\n\n      // Start Writing the Object\n      scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n      fieldObject.DA = AcroFormAppearance.createDefaultAppearanceStream(\n        fieldObject\n      );\n\n      if (\n        typeof fieldObject === \"object\" &&\n        typeof fieldObject.getKeyValueListForStream === \"function\"\n      ) {\n        keyValueList = fieldObject.getKeyValueListForStream();\n      }\n\n      fieldObject.Rect = oldRect;\n\n      if (\n        fieldObject.hasAppearanceStream &&\n        !fieldObject.appearanceStreamContent\n      ) {\n        // Calculate Appearance\n        var appearance = calculateAppearanceStream(fieldObject);\n        keyValueList.push({ key: \"AP\", value: \"<</N \" + appearance + \">>\" });\n\n        scope.internal.acroformPlugin.xForms.push(appearance);\n      }\n\n      // Assume AppearanceStreamContent is a Array with N,R,D (at least\n      // one of them!)\n      if (fieldObject.appearanceStreamContent) {\n        var appearanceStreamString = \"\";\n        // Iterate over N,R and D\n        for (var k in fieldObject.appearanceStreamContent) {\n          if (fieldObject.appearanceStreamContent.hasOwnProperty(k)) {\n            var value = fieldObject.appearanceStreamContent[k];\n            appearanceStreamString += \"/\" + k + \" \";\n            appearanceStreamString += \"<<\";\n            if (Object.keys(value).length >= 1 || Array.isArray(value)) {\n              // appearanceStream is an Array or Object!\n              for (var i in value) {\n                if (value.hasOwnProperty(i)) {\n                  var obj = value[i];\n                  if (typeof obj === \"function\") {\n                    // if Function is referenced, call it in order\n                    // to get the FormXObject\n                    obj = obj.call(scope, fieldObject);\n                  }\n                  appearanceStreamString += \"/\" + i + \" \" + obj + \" \";\n\n                  // In case the XForm is already used, e.g. OffState\n                  // of CheckBoxes, don't add it\n                  if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n                    scope.internal.acroformPlugin.xForms.push(obj);\n                }\n              }\n            } else {\n              obj = value;\n              if (typeof obj === \"function\") {\n                // if Function is referenced, call it in order to\n                // get the FormXObject\n                obj = obj.call(scope, fieldObject);\n              }\n              appearanceStreamString += \"/\" + i + \" \" + obj;\n              if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n                scope.internal.acroformPlugin.xForms.push(obj);\n            }\n            appearanceStreamString += \">>\";\n          }\n        }\n\n        // appearance stream is a normal Object..\n        keyValueList.push({\n          key: \"AP\",\n          value: \"<<\\n\" + appearanceStreamString + \">>\"\n        });\n      }\n\n      scope.internal.putStream({\n        additionalKeyValues: keyValueList,\n        objectId: fieldObject.objId\n      });\n\n      scope.internal.out(\"endobj\");\n    }\n  }\n  if (standardFields) {\n    createXFormObjectCallback(scope.internal.acroformPlugin.xForms, scope);\n  }\n};\n\nvar createXFormObjectCallback = function(fieldArray, scope) {\n  for (var i in fieldArray) {\n    if (fieldArray.hasOwnProperty(i)) {\n      var key = i;\n      var fieldObject = fieldArray[i];\n      // Start Writing the Object\n      scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n      if (\n        typeof fieldObject === \"object\" &&\n        typeof fieldObject.putStream === \"function\"\n      ) {\n        fieldObject.putStream();\n      }\n      delete fieldArray[key];\n    }\n  }\n};\n\nvar initializeAcroForm = function(scope, formObject) {\n  formObject.scope = scope;\n  if (\n    scope.internal !== undefined &&\n    (scope.internal.acroformPlugin === undefined ||\n      scope.internal.acroformPlugin.isInitialized === false)\n  ) {\n    AcroFormField.FieldNum = 0;\n    scope.internal.acroformPlugin = JSON.parse(\n      JSON.stringify(acroformPluginTemplate)\n    );\n    if (scope.internal.acroformPlugin.acroFormDictionaryRoot) {\n      throw new Error(\"Exception while creating AcroformDictionary\");\n    }\n    scaleFactor = scope.internal.scaleFactor;\n    // The Object Number of the AcroForm Dictionary\n    scope.internal.acroformPlugin.acroFormDictionaryRoot = new AcroFormDictionary();\n    scope.internal.acroformPlugin.acroFormDictionaryRoot.scope = scope;\n\n    // add Callback for creating the AcroForm Dictionary\n    scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID = scope.internal.events.subscribe(\n      \"postPutResources\",\n      function() {\n        AcroFormDictionaryCallback(scope);\n      }\n    );\n\n    scope.internal.events.subscribe(\"buildDocument\", function() {\n      annotReferenceCallback(scope);\n    }); // buildDocument\n\n    // Register event, that is triggered when the DocumentCatalog is\n    // written, in order to add /AcroForm\n\n    scope.internal.events.subscribe(\"putCatalog\", function() {\n      putCatalogCallback(scope);\n    });\n\n    // Register event, that creates all Fields\n    scope.internal.events.subscribe(\"postPutPages\", function(fieldArray) {\n      createFieldCallback(fieldArray, scope);\n    });\n\n    scope.internal.acroformPlugin.isInitialized = true;\n  }\n};\n\n//PDF 32000-1:2008, page 26, 7.3.6\nvar arrayToPdfArray = (jsPDFAPI.__acroform__.arrayToPdfArray = function(\n  array,\n  objId,\n  scope\n) {\n  var encryptor = function(data) {\n    return data;\n  };\n  if (Array.isArray(array)) {\n    var content = \"[\";\n    for (var i = 0; i < array.length; i++) {\n      if (i !== 0) {\n        content += \" \";\n      }\n      switch (typeof array[i]) {\n        case \"boolean\":\n        case \"number\":\n        case \"object\":\n          content += array[i].toString();\n          break;\n        case \"string\":\n          if (array[i].substr(0, 1) === \"/\") {\n            content += \"/\" + pdfEscapeName(array[i].substr(1));\n          } else {\n            if (typeof objId !== \"undefined\" && scope)\n              encryptor = scope.internal.getEncryptor(objId);\n            content += \"(\" + pdfEscape(encryptor(array[i].toString())) + \")\";\n          }\n          break;\n      }\n    }\n    content += \"]\";\n    return content;\n  }\n  throw new Error(\n    \"Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray\"\n  );\n});\n\nfunction getMatches(string, regex, index) {\n  index || (index = 1); // default to the first capturing group\n  var matches = [];\n  var match;\n  while ((match = regex.exec(string))) {\n    matches.push(match[index]);\n  }\n  return matches;\n}\nvar pdfArrayToStringArray = function(array) {\n  var result = [];\n  if (typeof array === \"string\") {\n    result = getMatches(array, /\\((.*?)\\)/g);\n  }\n  return result;\n};\n\nvar toPdfString = function(string, objId, scope) {\n  var encryptor = function(data) {\n    return data;\n  };\n  if (typeof objId !== \"undefined\" && scope)\n    encryptor = scope.internal.getEncryptor(objId);\n  string = string || \"\";\n  string.toString();\n  string = \"(\" + pdfEscape(encryptor(string)) + \")\";\n  return string;\n};\n\n// ##########################\n// Classes\n// ##########################\n\n/**\n * @class AcroFormPDFObject\n * @classdesc A AcroFormPDFObject\n */\nvar AcroFormPDFObject = function() {\n  this._objId = undefined;\n  this._scope = undefined;\n\n  /**\n   * @name AcroFormPDFObject#objId\n   * @type {any}\n   */\n  Object.defineProperty(this, \"objId\", {\n    get: function() {\n      if (typeof this._objId === \"undefined\") {\n        if (typeof this.scope === \"undefined\") {\n          return undefined;\n        }\n        this._objId = this.scope.internal.newObjectDeferred();\n      }\n      return this._objId;\n    },\n    set: function(value) {\n      this._objId = value;\n    }\n  });\n  Object.defineProperty(this, \"scope\", {\n    value: this._scope,\n    writable: true\n  });\n};\n\n/**\n * @function AcroFormPDFObject.toString\n */\nAcroFormPDFObject.prototype.toString = function() {\n  return this.objId + \" 0 R\";\n};\n\nAcroFormPDFObject.prototype.putStream = function() {\n  var keyValueList = this.getKeyValueListForStream();\n  this.scope.internal.putStream({\n    data: this.stream,\n    additionalKeyValues: keyValueList,\n    objectId: this.objId\n  });\n  this.scope.internal.out(\"endobj\");\n};\n\n/**\n * Returns an key-value-List of all non-configurable Variables from the Object\n *\n * @name getKeyValueListForStream\n * @returns {string}\n */\nAcroFormPDFObject.prototype.getKeyValueListForStream = function() {\n  var keyValueList = [];\n  var keys = Object.getOwnPropertyNames(this).filter(function(key) {\n    return (\n      key != \"content\" &&\n      key != \"appearanceStreamContent\" &&\n      key != \"scope\" &&\n      key != \"objId\" &&\n      key.substring(0, 1) != \"_\"\n    );\n  });\n\n  for (var i in keys) {\n    if (Object.getOwnPropertyDescriptor(this, keys[i]).configurable === false) {\n      var key = keys[i];\n      var value = this[key];\n\n      if (value) {\n        if (Array.isArray(value)) {\n          keyValueList.push({\n            key: key,\n            value: arrayToPdfArray(value, this.objId, this.scope)\n          });\n        } else if (value instanceof AcroFormPDFObject) {\n          // In case it is a reference to another PDFObject,\n          // take the reference number\n          value.scope = this.scope;\n          keyValueList.push({ key: key, value: value.objId + \" 0 R\" });\n        } else if (typeof value !== \"function\") {\n          keyValueList.push({ key: key, value: value });\n        }\n      }\n    }\n  }\n  return keyValueList;\n};\n\nvar AcroFormXObject = function() {\n  AcroFormPDFObject.call(this);\n\n  Object.defineProperty(this, \"Type\", {\n    value: \"/XObject\",\n    configurable: false,\n    writable: true\n  });\n\n  Object.defineProperty(this, \"Subtype\", {\n    value: \"/Form\",\n    configurable: false,\n    writable: true\n  });\n\n  Object.defineProperty(this, \"FormType\", {\n    value: 1,\n    configurable: false,\n    writable: true\n  });\n\n  var _BBox = [];\n  Object.defineProperty(this, \"BBox\", {\n    configurable: false,\n    get: function() {\n      return _BBox;\n    },\n    set: function(value) {\n      _BBox = value;\n    }\n  });\n\n  Object.defineProperty(this, \"Resources\", {\n    value: \"2 0 R\",\n    configurable: false,\n    writable: true\n  });\n\n  var _stream;\n  Object.defineProperty(this, \"stream\", {\n    enumerable: false,\n    configurable: true,\n    set: function(value) {\n      _stream = value.trim();\n    },\n    get: function() {\n      if (_stream) {\n        return _stream;\n      } else {\n        return null;\n      }\n    }\n  });\n};\n\ninherit(AcroFormXObject, AcroFormPDFObject);\n\nvar AcroFormDictionary = function() {\n  AcroFormPDFObject.call(this);\n\n  var _Kids = [];\n\n  Object.defineProperty(this, \"Kids\", {\n    enumerable: false,\n    configurable: true,\n    get: function() {\n      if (_Kids.length > 0) {\n        return _Kids;\n      } else {\n        return undefined;\n      }\n    }\n  });\n  Object.defineProperty(this, \"Fields\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      return _Kids;\n    }\n  });\n\n  // Default Appearance\n  var _DA;\n  Object.defineProperty(this, \"DA\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      if (!_DA) {\n        return undefined;\n      }\n      var encryptor = function(data) {\n        return data;\n      };\n      if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n      return \"(\" + pdfEscape(encryptor(_DA)) + \")\";\n    },\n    set: function(value) {\n      _DA = value;\n    }\n  });\n};\n\ninherit(AcroFormDictionary, AcroFormPDFObject);\n\n/**\n * The Field Object contains the Variables, that every Field needs\n *\n * @class AcroFormField\n * @classdesc An AcroForm FieldObject\n */\nvar AcroFormField = function() {\n  AcroFormPDFObject.call(this);\n\n  //Annotation-Flag See Table 165\n  var _F = 4;\n  Object.defineProperty(this, \"F\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      return _F;\n    },\n    set: function(value) {\n      if (!isNaN(value)) {\n        _F = value;\n      } else {\n        throw new Error(\n          'Invalid value \"' + value + '\" for attribute F supplied.'\n        );\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.2) If set, print the annotation when the page is printed. If clear, never print the annotation, regardless of wether is is displayed on the screen.\n   * NOTE 2 This can be useful for annotations representing interactive pushbuttons, which would serve no meaningful purpose on the printed page.\n   *\n   * @name AcroFormField#showWhenPrinted\n   * @default true\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"showWhenPrinted\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(_F, 3));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.F = setBitForPdf(_F, 3);\n      } else {\n        this.F = clearBitForPdf(_F, 3);\n      }\n    }\n  });\n\n  var _Ff = 0;\n  Object.defineProperty(this, \"Ff\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      return _Ff;\n    },\n    set: function(value) {\n      if (!isNaN(value)) {\n        _Ff = value;\n      } else {\n        throw new Error(\n          'Invalid value \"' + value + '\" for attribute Ff supplied.'\n        );\n      }\n    }\n  });\n\n  var _Rect = [];\n  Object.defineProperty(this, \"Rect\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      if (_Rect.length === 0) {\n        return undefined;\n      }\n      return _Rect;\n    },\n    set: function(value) {\n      if (typeof value !== \"undefined\") {\n        _Rect = value;\n      } else {\n        _Rect = [];\n      }\n    }\n  });\n\n  /**\n   * The x-position of the field.\n   *\n   * @name AcroFormField#x\n   * @default null\n   * @type {number}\n   */\n  Object.defineProperty(this, \"x\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (!_Rect || isNaN(_Rect[0])) {\n        return 0;\n      }\n      return _Rect[0];\n    },\n    set: function(value) {\n      _Rect[0] = value;\n    }\n  });\n\n  /**\n   * The y-position of the field.\n   *\n   * @name AcroFormField#y\n   * @default null\n   * @type {number}\n   */\n  Object.defineProperty(this, \"y\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (!_Rect || isNaN(_Rect[1])) {\n        return 0;\n      }\n      return _Rect[1];\n    },\n    set: function(value) {\n      _Rect[1] = value;\n    }\n  });\n\n  /**\n   * The width of the field.\n   *\n   * @name AcroFormField#width\n   * @default null\n   * @type {number}\n   */\n  Object.defineProperty(this, \"width\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (!_Rect || isNaN(_Rect[2])) {\n        return 0;\n      }\n      return _Rect[2];\n    },\n    set: function(value) {\n      _Rect[2] = value;\n    }\n  });\n\n  /**\n   * The height of the field.\n   *\n   * @name AcroFormField#height\n   * @default null\n   * @type {number}\n   */\n  Object.defineProperty(this, \"height\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (!_Rect || isNaN(_Rect[3])) {\n        return 0;\n      }\n      return _Rect[3];\n    },\n    set: function(value) {\n      _Rect[3] = value;\n    }\n  });\n\n  var _FT = \"\";\n  Object.defineProperty(this, \"FT\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return _FT;\n    },\n    set: function(value) {\n      switch (value) {\n        case \"/Btn\":\n        case \"/Tx\":\n        case \"/Ch\":\n        case \"/Sig\":\n          _FT = value;\n          break;\n        default:\n          throw new Error(\n            'Invalid value \"' + value + '\" for attribute FT supplied.'\n          );\n      }\n    }\n  });\n\n  var _T = null;\n\n  Object.defineProperty(this, \"T\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      if (!_T || _T.length < 1) {\n        // In case of a Child from a Radio´Group, you don't need a FieldName\n        if (this instanceof AcroFormChildClass) {\n          return undefined;\n        }\n        _T = \"FieldObject\" + AcroFormField.FieldNum++;\n      }\n      var encryptor = function(data) {\n        return data;\n      };\n      if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n      return \"(\" + pdfEscape(encryptor(_T)) + \")\";\n    },\n    set: function(value) {\n      _T = value.toString();\n    }\n  });\n\n  /**\n   * (Optional) The partial field name (see 12.7.3.2, “Field Names”).\n   *\n   * @name AcroFormField#fieldName\n   * @default null\n   * @type {string}\n   */\n  Object.defineProperty(this, \"fieldName\", {\n    configurable: true,\n    enumerable: true,\n    get: function() {\n      return _T;\n    },\n    set: function(value) {\n      _T = value;\n    }\n  });\n\n  var _fontName = \"helvetica\";\n  /**\n   * The fontName of the font to be used.\n   *\n   * @name AcroFormField#fontName\n   * @default 'helvetica'\n   * @type {string}\n   */\n  Object.defineProperty(this, \"fontName\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _fontName;\n    },\n    set: function(value) {\n      _fontName = value;\n    }\n  });\n\n  var _fontStyle = \"normal\";\n  /**\n   * The fontStyle of the font to be used.\n   *\n   * @name AcroFormField#fontStyle\n   * @default 'normal'\n   * @type {string}\n   */\n  Object.defineProperty(this, \"fontStyle\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _fontStyle;\n    },\n    set: function(value) {\n      _fontStyle = value;\n    }\n  });\n\n  var _fontSize = 0;\n  /**\n   * The fontSize of the font to be used.\n   *\n   * @name AcroFormField#fontSize\n   * @default 0 (for auto)\n   * @type {number}\n   */\n  Object.defineProperty(this, \"fontSize\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _fontSize;\n    },\n    set: function(value) {\n      _fontSize = value;\n    }\n  });\n\n  var _maxFontSize = undefined;\n  /**\n   * The maximum fontSize of the font to be used.\n   *\n   * @name AcroFormField#maxFontSize\n   * @default 0 (for auto)\n   * @type {number}\n   */\n  Object.defineProperty(this, \"maxFontSize\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (_maxFontSize === undefined) {\n        // use the old default value here - the value is some kind of random as it depends on the scaleFactor (user unit)\n        // (\"50\" is transformed to the \"user space\" but then used in \"pdf space\")\n        return 50 / scaleFactor;\n      } else {\n        return _maxFontSize;\n      }\n    },\n    set: function(value) {\n      _maxFontSize = value;\n    }\n  });\n\n  var _color = \"black\";\n  /**\n   * The color of the text\n   *\n   * @name AcroFormField#color\n   * @default 'black'\n   * @type {string|rgba}\n   */\n  Object.defineProperty(this, \"color\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _color;\n    },\n    set: function(value) {\n      _color = value;\n    }\n  });\n\n  var _DA = \"/F1 0 Tf 0 g\";\n  // Defines the default appearance (Needed for variable Text)\n  Object.defineProperty(this, \"DA\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      if (\n        !_DA ||\n        this instanceof AcroFormChildClass ||\n        this instanceof AcroFormTextField\n      ) {\n        return undefined;\n      }\n      return toPdfString(_DA, this.objId, this.scope);\n    },\n    set: function(value) {\n      value = value.toString();\n      _DA = value;\n    }\n  });\n\n  var _DV = null;\n  Object.defineProperty(this, \"DV\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      if (!_DV) {\n        return undefined;\n      }\n      if (this instanceof AcroFormButton === false) {\n        return toPdfString(_DV, this.objId, this.scope);\n      }\n      return _DV;\n    },\n    set: function(value) {\n      value = value.toString();\n      if (this instanceof AcroFormButton === false) {\n        if (value.substr(0, 1) === \"(\") {\n          _DV = pdfUnescape(value.substr(1, value.length - 2));\n        } else {\n          _DV = pdfUnescape(value);\n        }\n      } else {\n        _DV = value;\n      }\n    }\n  });\n\n  /**\n   * (Optional; inheritable) The default value to which the field reverts when a reset-form action is executed (see 12.7.5.3, “Reset-Form Action”). The format of this value is the same as that of value.\n   *\n   * @name AcroFormField#defaultValue\n   * @default null\n   * @type {any}\n   */\n  Object.defineProperty(this, \"defaultValue\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (this instanceof AcroFormButton === true) {\n        return pdfUnescape(_DV.substr(1, _DV.length - 1));\n      } else {\n        return _DV;\n      }\n    },\n    set: function(value) {\n      value = value.toString();\n      if (this instanceof AcroFormButton === true) {\n        _DV = \"/\" + pdfEscapeName(value);\n      } else {\n        _DV = value;\n      }\n    }\n  });\n\n  var _V = null;\n  Object.defineProperty(this, \"_V\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      if (!_V) {\n        return undefined;\n      }\n      return _V;\n    },\n    set: function(value) {\n      this.V = value;\n    }\n  });\n  Object.defineProperty(this, \"V\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      if (!_V) {\n        return undefined;\n      }\n      if (this instanceof AcroFormButton === false) {\n        return toPdfString(_V, this.objId, this.scope);\n      }\n      return _V;\n    },\n    set: function(value) {\n      value = value.toString();\n      if (this instanceof AcroFormButton === false) {\n        if (value.substr(0, 1) === \"(\") {\n          _V = pdfUnescape(value.substr(1, value.length - 2));\n        } else {\n          _V = pdfUnescape(value);\n        }\n      } else {\n        _V = value;\n      }\n    }\n  });\n\n  /**\n   * (Optional; inheritable) The field’s value, whose format varies depending on the field type. See the descriptions of individual field types for further information.\n   *\n   * @name AcroFormField#value\n   * @default null\n   * @type {any}\n   */\n  Object.defineProperty(this, \"value\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (this instanceof AcroFormButton === true) {\n        return pdfUnescape(_V.substr(1, _V.length - 1));\n      } else {\n        return _V;\n      }\n    },\n    set: function(value) {\n      value = value.toString();\n      if (this instanceof AcroFormButton === true) {\n        _V = \"/\" + pdfEscapeName(value);\n      } else {\n        _V = value;\n      }\n    }\n  });\n\n  /**\n   * Check if field has annotations\n   *\n   * @name AcroFormField#hasAnnotation\n   * @readonly\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"hasAnnotation\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return this.Rect;\n    }\n  });\n\n  Object.defineProperty(this, \"Type\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return this.hasAnnotation ? \"/Annot\" : null;\n    }\n  });\n\n  Object.defineProperty(this, \"Subtype\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return this.hasAnnotation ? \"/Widget\" : null;\n    }\n  });\n\n  var _hasAppearanceStream = false;\n  /**\n   * true if field has an appearanceStream\n   *\n   * @name AcroFormField#hasAppearanceStream\n   * @readonly\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"hasAppearanceStream\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _hasAppearanceStream;\n    },\n    set: function(value) {\n      value = Boolean(value);\n      _hasAppearanceStream = value;\n    }\n  });\n\n  /**\n   * The page on which the AcroFormField is placed\n   *\n   * @name AcroFormField#page\n   * @type {number}\n   */\n  var _page;\n  Object.defineProperty(this, \"page\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      if (!_page) {\n        return undefined;\n      }\n      return _page;\n    },\n    set: function(value) {\n      _page = value;\n    }\n  });\n\n  /**\n   * If set, the user may not change the value of the field. Any associated widget annotations will not interact with the user; that is, they will not respond to mouse clicks or change their appearance in response to mouse motions. This flag is useful for fields whose values are computed or imported from a database.\n   *\n   * @name AcroFormField#readOnly\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"readOnly\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 1));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 1);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 1);\n      }\n    }\n  });\n\n  /**\n   * If set, the field shall have a value at the time it is exported by a submitform action (see 12.7.5.2, “Submit-Form Action”).\n   *\n   * @name AcroFormField#required\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"required\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 2));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 2);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 2);\n      }\n    }\n  });\n\n  /**\n   * If set, the field shall not be exported by a submit-form action (see 12.7.5.2, “Submit-Form Action”)\n   *\n   * @name AcroFormField#noExport\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"noExport\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 3));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 3);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 3);\n      }\n    }\n  });\n\n  var _Q = null;\n  Object.defineProperty(this, \"Q\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      if (_Q === null) {\n        return undefined;\n      }\n      return _Q;\n    },\n    set: function(value) {\n      if ([0, 1, 2].indexOf(value) !== -1) {\n        _Q = value;\n      } else {\n        throw new Error(\n          'Invalid value \"' + value + '\" for attribute Q supplied.'\n        );\n      }\n    }\n  });\n\n  /**\n   * (Optional; inheritable) A code specifying the form of quadding (justification) that shall be used in displaying the text:\n   * 'left', 'center', 'right'\n   *\n   * @name AcroFormField#textAlign\n   * @default 'left'\n   * @type {string}\n   */\n  Object.defineProperty(this, \"textAlign\", {\n    get: function() {\n      var result;\n      switch (_Q) {\n        case 0:\n        default:\n          result = \"left\";\n          break;\n        case 1:\n          result = \"center\";\n          break;\n        case 2:\n          result = \"right\";\n          break;\n      }\n      return result;\n    },\n    configurable: true,\n    enumerable: true,\n    set: function(value) {\n      switch (value) {\n        case \"right\":\n        case 2:\n          _Q = 2;\n          break;\n        case \"center\":\n        case 1:\n          _Q = 1;\n          break;\n        case \"left\":\n        case 0:\n        default:\n          _Q = 0;\n      }\n    }\n  });\n};\n\ninherit(AcroFormField, AcroFormPDFObject);\n\n/**\n * @class AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormChoiceField = function() {\n  AcroFormField.call(this);\n  // Field Type = Choice Field\n  this.FT = \"/Ch\";\n  // options\n  this.V = \"()\";\n\n  this.fontName = \"zapfdingbats\";\n  // Top Index\n  var _TI = 0;\n\n  Object.defineProperty(this, \"TI\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return _TI;\n    },\n    set: function(value) {\n      _TI = value;\n    }\n  });\n\n  /**\n   * (Optional) For scrollable list boxes, the top index (the index in the Opt array of the first option visible in the list). Default value: 0.\n   *\n   * @name AcroFormChoiceField#topIndex\n   * @default 0\n   * @type {number}\n   */\n  Object.defineProperty(this, \"topIndex\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _TI;\n    },\n    set: function(value) {\n      _TI = value;\n    }\n  });\n\n  var _Opt = [];\n  Object.defineProperty(this, \"Opt\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return arrayToPdfArray(_Opt, this.objId, this.scope);\n    },\n    set: function(value) {\n      _Opt = pdfArrayToStringArray(value);\n    }\n  });\n\n  /**\n   * @memberof AcroFormChoiceField\n   * @name getOptions\n   * @function\n   * @instance\n   * @returns {array} array of Options\n   */\n  this.getOptions = function() {\n    return _Opt;\n  };\n\n  /**\n   * @memberof AcroFormChoiceField\n   * @name setOptions\n   * @function\n   * @instance\n   * @param {array} value\n   */\n  this.setOptions = function(value) {\n    _Opt = value;\n    if (this.sort) {\n      _Opt.sort();\n    }\n  };\n\n  /**\n   * @memberof AcroFormChoiceField\n   * @name addOption\n   * @function\n   * @instance\n   * @param {string} value\n   */\n  this.addOption = function(value) {\n    value = value || \"\";\n    value = value.toString();\n    _Opt.push(value);\n    if (this.sort) {\n      _Opt.sort();\n    }\n  };\n\n  /**\n   * @memberof AcroFormChoiceField\n   * @name removeOption\n   * @function\n   * @instance\n   * @param {string} value\n   * @param {boolean} allEntries (default: false)\n   */\n  this.removeOption = function(value, allEntries) {\n    allEntries = allEntries || false;\n    value = value || \"\";\n    value = value.toString();\n\n    while (_Opt.indexOf(value) !== -1) {\n      _Opt.splice(_Opt.indexOf(value), 1);\n      if (allEntries === false) {\n        break;\n      }\n    }\n  };\n\n  /**\n   * If set, the field is a combo box; if clear, the field is a list box.\n   *\n   * @name AcroFormChoiceField#combo\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"combo\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 18));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 18);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 18);\n      }\n    }\n  });\n\n  /**\n   * If set, the combo box shall include an editable text box as well as a drop-down list; if clear, it shall include only a drop-down list. This flag shall be used only if the Combo flag is set.\n   *\n   * @name AcroFormChoiceField#edit\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"edit\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 19));\n    },\n    set: function(value) {\n      //PDF 32000-1:2008, page 444\n      if (this.combo === true) {\n        if (Boolean(value) === true) {\n          this.Ff = setBitForPdf(this.Ff, 19);\n        } else {\n          this.Ff = clearBitForPdf(this.Ff, 19);\n        }\n      }\n    }\n  });\n\n  /**\n   * If set, the field’s option items shall be sorted alphabetically. This flag is intended for use by writers, not by readers. Conforming readers shall display the options in the order in which they occur in the Opt array (see Table 231).\n   *\n   * @name AcroFormChoiceField#sort\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"sort\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 20));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 20);\n        _Opt.sort();\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 20);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.4) If set, more than one of the field’s option items may be selected simultaneously; if clear, at most one item shall be selected\n   *\n   * @name AcroFormChoiceField#multiSelect\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"multiSelect\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 22));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 22);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 22);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.4) If set, text entered in the field shall not be spellchecked. This flag shall not be used unless the Combo and Edit flags are both set.\n   *\n   * @name AcroFormChoiceField#doNotSpellCheck\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"doNotSpellCheck\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 23));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 23);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 23);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.5) If set, the new value shall be committed as soon as a selection is made (commonly with the pointing device). In this case, supplying a value for a field involves three actions: selecting the field for fill-in, selecting a choice for the fill-in value, and leaving that field, which finalizes or “commits” the data choice and triggers any actions associated with the entry or changing of this data. If this flag is on, then processing does not wait for leaving the field action to occur, but immediately proceeds to the third step.\n   * This option enables applications to perform an action once a selection is made, without requiring the user to exit the field. If clear, the new value is not committed until the user exits the field.\n   *\n   * @name AcroFormChoiceField#commitOnSelChange\n   * @default false\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"commitOnSelChange\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 27));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 27);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 27);\n      }\n    }\n  });\n\n  this.hasAppearanceStream = false;\n};\ninherit(AcroFormChoiceField, AcroFormField);\n\n/**\n * @class AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormListBox = function() {\n  AcroFormChoiceField.call(this);\n  this.fontName = \"helvetica\";\n\n  //PDF 32000-1:2008, page 444\n  this.combo = false;\n};\ninherit(AcroFormListBox, AcroFormChoiceField);\n\n/**\n * @class AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormComboBox = function() {\n  AcroFormListBox.call(this);\n  this.combo = true;\n};\ninherit(AcroFormComboBox, AcroFormListBox);\n\n/**\n * @class AcroFormEditBox\n * @extends AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormEditBox = function() {\n  AcroFormComboBox.call(this);\n  this.edit = true;\n};\ninherit(AcroFormEditBox, AcroFormComboBox);\n\n/**\n * @class AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormButton = function() {\n  AcroFormField.call(this);\n  this.FT = \"/Btn\";\n\n  /**\n   * (Radio buttons only) If set, exactly one radio button shall be selected at all times; selecting the currently selected button has no effect. If clear, clicking the selected button deselects it, leaving no button selected.\n   *\n   * @name AcroFormButton#noToggleToOff\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"noToggleToOff\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 15));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 15);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 15);\n      }\n    }\n  });\n\n  /**\n   * If set, the field is a set of radio buttons; if clear, the field is a checkbox. This flag may be set only if the Pushbutton flag is clear.\n   *\n   * @name AcroFormButton#radio\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"radio\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 16));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 16);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 16);\n      }\n    }\n  });\n\n  /**\n   * If set, the field is a pushbutton that does not retain a permanent value.\n   *\n   * @name AcroFormButton#pushButton\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"pushButton\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 17));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 17);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 17);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.5) If set, a group of radio buttons within a radio button field that use the same value for the on state will turn on and off in unison; that is if one is checked, they are all checked. If clear, the buttons are mutually exclusive (the same behavior as HTML radio buttons).\n   *\n   * @name AcroFormButton#radioIsUnison\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"radioIsUnison\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 26));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 26);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 26);\n      }\n    }\n  });\n\n  var _MK = {};\n  Object.defineProperty(this, \"MK\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      var encryptor = function(data) {\n        return data;\n      };\n      if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n      if (Object.keys(_MK).length !== 0) {\n        var result = [];\n        result.push(\"<<\");\n        var key;\n        for (key in _MK) {\n          result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n        }\n        result.push(\">>\");\n        return result.join(\"\\n\");\n      }\n      return undefined;\n    },\n    set: function(value) {\n      if (typeof value === \"object\") {\n        _MK = value;\n      }\n    }\n  });\n\n  /**\n   * From the PDF reference:\n   * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n   * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n   *\n   * - '8' = Cross,\n   * - 'l' =  Circle,\n   * - '' = nothing\n   * @name AcroFormButton#caption\n   * @type {string}\n   */\n  Object.defineProperty(this, \"caption\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _MK.CA || \"\";\n    },\n    set: function(value) {\n      if (typeof value === \"string\") {\n        _MK.CA = value;\n      }\n    }\n  });\n\n  var _AS;\n  Object.defineProperty(this, \"AS\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      return _AS;\n    },\n    set: function(value) {\n      var name = value === undefined || value === null ? \"\" : value.toString();\n      if (name.substr(0, 1) === \"/\") {\n        name = name.substr(1);\n      }\n      _AS = \"/\" + pdfEscapeName(name);\n    }\n  });\n\n  /**\n   * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n   *\n   * @name AcroFormButton#appearanceState\n   * @type {any}\n   */\n  Object.defineProperty(this, \"appearanceState\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _AS.substr(1, _AS.length - 1);\n    },\n    set: function(value) {\n      _AS = \"/\" + pdfEscapeName(value);\n    }\n  });\n};\ninherit(AcroFormButton, AcroFormField);\n\n/**\n * @class AcroFormPushButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormPushButton = function() {\n  AcroFormButton.call(this);\n  this.pushButton = true;\n};\ninherit(AcroFormPushButton, AcroFormButton);\n\n/**\n * @class AcroFormRadioButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormRadioButton = function() {\n  AcroFormButton.call(this);\n  this.radio = true;\n  this.pushButton = false;\n\n  var _Kids = [];\n  Object.defineProperty(this, \"Kids\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return _Kids;\n    },\n    set: function(value) {\n      if (typeof value !== \"undefined\") {\n        _Kids = value;\n      } else {\n        _Kids = [];\n      }\n    }\n  });\n};\ninherit(AcroFormRadioButton, AcroFormButton);\n\n/**\n * The Child class of a RadioButton (the radioGroup) -> The single Buttons\n *\n * @class AcroFormChildClass\n * @extends AcroFormField\n * @ignore\n */\nvar AcroFormChildClass = function() {\n  AcroFormField.call(this);\n\n  var _parent;\n  Object.defineProperty(this, \"Parent\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      return _parent;\n    },\n    set: function(value) {\n      _parent = value;\n    }\n  });\n\n  var _optionName;\n  Object.defineProperty(this, \"optionName\", {\n    enumerable: false,\n    configurable: true,\n    get: function() {\n      return _optionName;\n    },\n    set: function(value) {\n      _optionName = value;\n    }\n  });\n\n  var _MK = {};\n  Object.defineProperty(this, \"MK\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      var encryptor = function(data) {\n        return data;\n      };\n      if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n      var result = [];\n      result.push(\"<<\");\n      var key;\n      for (key in _MK) {\n        result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n      }\n      result.push(\">>\");\n      return result.join(\"\\n\");\n    },\n    set: function(value) {\n      if (typeof value === \"object\") {\n        _MK = value;\n      }\n    }\n  });\n\n  /**\n   * From the PDF reference:\n   * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n   * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n   *\n   * - '8' = Cross,\n   * - 'l' =  Circle,\n   * - '' = nothing\n   * @name AcroFormButton#caption\n   * @type {string}\n   */\n  Object.defineProperty(this, \"caption\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _MK.CA || \"\";\n    },\n    set: function(value) {\n      if (typeof value === \"string\") {\n        _MK.CA = value;\n      }\n    }\n  });\n\n  var _AS;\n  Object.defineProperty(this, \"AS\", {\n    enumerable: false,\n    configurable: false,\n    get: function() {\n      return _AS;\n    },\n    set: function(value) {\n      var name = value === undefined || value === null ? \"\" : value.toString();\n      if (name.substr(0, 1) === \"/\") {\n        name = name.substr(1);\n      }\n      _AS = \"/\" + pdfEscapeName(name);\n    }\n  });\n\n  /**\n   * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n   *\n   * @name AcroFormButton#appearanceState\n   * @type {any}\n   */\n  Object.defineProperty(this, \"appearanceState\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _AS.substr(1, _AS.length - 1);\n    },\n    set: function(value) {\n      var name = value === undefined || value === null ? \"\" : value.toString();\n      if (name.substr(0, 1) === \"/\") {\n        name = name.substr(1);\n      }\n      _AS = \"/\" + pdfEscapeName(name);\n    }\n  });\n  this.caption = \"l\";\n  this.appearanceState = \"Off\";\n  // todo: set AppearanceType as variable that can be set from the\n  // outside...\n  this._AppearanceType = AcroFormAppearance.RadioButton.Circle;\n  // The Default appearanceType is the Circle\n  this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(\n    this.optionName\n  );\n};\ninherit(AcroFormChildClass, AcroFormField);\n\nAcroFormRadioButton.prototype.setAppearance = function(appearance) {\n  if (!(\"createAppearanceStream\" in appearance && \"getCA\" in appearance)) {\n    throw new Error(\n      \"Couldn't assign Appearance to RadioButton. Appearance was Invalid!\"\n    );\n  }\n  for (var objId in this.Kids) {\n    if (this.Kids.hasOwnProperty(objId)) {\n      var child = this.Kids[objId];\n      child.appearanceStreamContent = appearance.createAppearanceStream(\n        child.optionName\n      );\n      child.caption = appearance.getCA();\n    }\n  }\n};\n\nAcroFormRadioButton.prototype.createOption = function(name) {\n  // Create new Child for RadioGroup\n  var child = new AcroFormChildClass();\n  child.Parent = this;\n  child.optionName = name;\n  // Add to Parent\n  this.Kids.push(child);\n\n  addField.call(this.scope, child);\n\n  return child;\n};\n\n/**\n * @class AcroFormCheckBox\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormCheckBox = function() {\n  AcroFormButton.call(this);\n\n  this.fontName = \"zapfdingbats\";\n  this.caption = \"3\";\n  this.appearanceState = \"On\";\n  this.value = \"On\";\n  this.textAlign = \"center\";\n  this.appearanceStreamContent = AcroFormAppearance.CheckBox.createAppearanceStream();\n};\ninherit(AcroFormCheckBox, AcroFormButton);\n\n/**\n * @class AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormTextField = function() {\n  AcroFormField.call(this);\n  this.FT = \"/Tx\";\n\n  /**\n   * If set, the field may contain multiple lines of text; if clear, the field’s text shall be restricted to a single line.\n   *\n   * @name AcroFormTextField#multiline\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"multiline\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 13));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 13);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 13);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.4) If set, the text entered in the field represents the pathname of a file whose contents shall be submitted as the value of the field.\n   *\n   * @name AcroFormTextField#fileSelect\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"fileSelect\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 21));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 21);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 21);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.4) If set, text entered in the field shall not be spell-checked.\n   *\n   * @name AcroFormTextField#doNotSpellCheck\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"doNotSpellCheck\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 23));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 23);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 23);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.4) If set, the field shall not scroll (horizontally for single-line fields, vertically for multiple-line fields) to accommodate more text than fits within its annotation rectangle. Once the field is full, no further text shall be accepted for interactive form filling; for noninteractive form filling, the filler should take care not to add more character than will visibly fit in the defined area.\n   *\n   * @name AcroFormTextField#doNotScroll\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"doNotScroll\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 24));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 24);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 24);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.5) May be set only if the MaxLen entry is present in the text field dictionary (see Table 229) and if the Multiline, Password, and FileSelect flags are clear. If set, the field shall be automatically divided into as many equally spaced positions, or combs, as the value of MaxLen, and the text is laid out into those combs.\n   *\n   * @name AcroFormTextField#comb\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"comb\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 25));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 25);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 25);\n      }\n    }\n  });\n\n  /**\n   * (PDF 1.5) If set, the value of this field shall be a rich text string (see 12.7.3.4, “Rich Text Strings”). If the field has a value, the RV entry of the field dictionary (Table 222) shall specify the rich text string.\n   *\n   * @name AcroFormTextField#richText\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"richText\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 26));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 26);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 26);\n      }\n    }\n  });\n\n  var _MaxLen = null;\n  Object.defineProperty(this, \"MaxLen\", {\n    enumerable: true,\n    configurable: false,\n    get: function() {\n      return _MaxLen;\n    },\n    set: function(value) {\n      _MaxLen = value;\n    }\n  });\n\n  /**\n   * (Optional; inheritable) The maximum length of the field’s text, in characters.\n   *\n   * @name AcroFormTextField#maxLength\n   * @type {number}\n   */\n  Object.defineProperty(this, \"maxLength\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return _MaxLen;\n    },\n    set: function(value) {\n      if (Number.isInteger(value)) {\n        _MaxLen = value;\n      }\n    }\n  });\n\n  Object.defineProperty(this, \"hasAppearanceStream\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return this.V || this.DV;\n    }\n  });\n};\ninherit(AcroFormTextField, AcroFormField);\n\n/**\n * @class AcroFormPasswordField\n * @extends AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormPasswordField = function() {\n  AcroFormTextField.call(this);\n\n  /**\n   * If set, the field is intended for entering a secure password that should not be echoed visibly to the screen. Characters typed from the keyboard shall instead be echoed in some unreadable form, such as asterisks or bullet characters.\n   * NOTE To protect password confidentiality, readers should never store the value of the text field in the PDF file if this flag is set.\n   *\n   * @name AcroFormTextField#password\n   * @type {boolean}\n   */\n  Object.defineProperty(this, \"password\", {\n    enumerable: true,\n    configurable: true,\n    get: function() {\n      return Boolean(getBitForPdf(this.Ff, 14));\n    },\n    set: function(value) {\n      if (Boolean(value) === true) {\n        this.Ff = setBitForPdf(this.Ff, 14);\n      } else {\n        this.Ff = clearBitForPdf(this.Ff, 14);\n      }\n    }\n  });\n  this.password = true;\n};\ninherit(AcroFormPasswordField, AcroFormTextField);\n\n// Contains Methods for creating standard appearances\nvar AcroFormAppearance = {\n  CheckBox: {\n    createAppearanceStream: function() {\n      var appearance = {\n        N: {\n          On: AcroFormAppearance.CheckBox.YesNormal\n        },\n        D: {\n          On: AcroFormAppearance.CheckBox.YesPushDown,\n          Off: AcroFormAppearance.CheckBox.OffPushDown\n        }\n      };\n\n      return appearance;\n    },\n    /**\n     * Returns the standard On Appearance for a CheckBox\n     *\n     * @returns {AcroFormXObject}\n     */\n    YesPushDown: function(formObject) {\n      var xobj = createFormXObject(formObject);\n      xobj.scope = formObject.scope;\n      var stream = [];\n      var fontKey = formObject.scope.internal.getFont(\n        formObject.fontName,\n        formObject.fontStyle\n      ).id;\n      var encodedColor = formObject.scope.__private__.encodeColorString(\n        formObject.color\n      );\n      var calcRes = calculateX(formObject, formObject.caption);\n      stream.push(\"0.749023 g\");\n      stream.push(\n        \"0 0 \" +\n          f2(AcroFormAppearance.internal.getWidth(formObject)) +\n          \" \" +\n          f2(AcroFormAppearance.internal.getHeight(formObject)) +\n          \" re\"\n      );\n      stream.push(\"f\");\n      stream.push(\"BMC\");\n      stream.push(\"q\");\n      stream.push(\"0 0 1 rg\");\n      stream.push(\n        \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n      );\n      stream.push(\"BT\");\n      stream.push(calcRes.text);\n      stream.push(\"ET\");\n      stream.push(\"Q\");\n      stream.push(\"EMC\");\n      xobj.stream = stream.join(\"\\n\");\n      return xobj;\n    },\n\n    YesNormal: function(formObject) {\n      var xobj = createFormXObject(formObject);\n      xobj.scope = formObject.scope;\n      var fontKey = formObject.scope.internal.getFont(\n        formObject.fontName,\n        formObject.fontStyle\n      ).id;\n      var encodedColor = formObject.scope.__private__.encodeColorString(\n        formObject.color\n      );\n      var stream = [];\n      var height = AcroFormAppearance.internal.getHeight(formObject);\n      var width = AcroFormAppearance.internal.getWidth(formObject);\n      var calcRes = calculateX(formObject, formObject.caption);\n      stream.push(\"1 g\");\n      stream.push(\"0 0 \" + f2(width) + \" \" + f2(height) + \" re\");\n      stream.push(\"f\");\n      stream.push(\"q\");\n      stream.push(\"0 0 1 rg\");\n      stream.push(\"0 0 \" + f2(width - 1) + \" \" + f2(height - 1) + \" re\");\n      stream.push(\"W\");\n      stream.push(\"n\");\n      stream.push(\"0 g\");\n      stream.push(\"BT\");\n      stream.push(\n        \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n      );\n      stream.push(calcRes.text);\n      stream.push(\"ET\");\n      stream.push(\"Q\");\n      xobj.stream = stream.join(\"\\n\");\n      return xobj;\n    },\n\n    /**\n     * Returns the standard Off Appearance for a CheckBox\n     *\n     * @returns {AcroFormXObject}\n     */\n    OffPushDown: function(formObject) {\n      var xobj = createFormXObject(formObject);\n      xobj.scope = formObject.scope;\n      var stream = [];\n      stream.push(\"0.749023 g\");\n      stream.push(\n        \"0 0 \" +\n          f2(AcroFormAppearance.internal.getWidth(formObject)) +\n          \" \" +\n          f2(AcroFormAppearance.internal.getHeight(formObject)) +\n          \" re\"\n      );\n      stream.push(\"f\");\n      xobj.stream = stream.join(\"\\n\");\n      return xobj;\n    }\n  },\n\n  RadioButton: {\n    Circle: {\n      createAppearanceStream: function(name) {\n        var appearanceStreamContent = {\n          D: {\n            Off: AcroFormAppearance.RadioButton.Circle.OffPushDown\n          },\n          N: {}\n        };\n        appearanceStreamContent.N[name] =\n          AcroFormAppearance.RadioButton.Circle.YesNormal;\n        appearanceStreamContent.D[name] =\n          AcroFormAppearance.RadioButton.Circle.YesPushDown;\n        return appearanceStreamContent;\n      },\n      getCA: function() {\n        return \"l\";\n      },\n\n      YesNormal: function(formObject) {\n        var xobj = createFormXObject(formObject);\n        xobj.scope = formObject.scope;\n        var stream = [];\n        // Make the Radius of the Circle relative to min(height, width) of formObject\n        var DotRadius =\n          AcroFormAppearance.internal.getWidth(formObject) <=\n          AcroFormAppearance.internal.getHeight(formObject)\n            ? AcroFormAppearance.internal.getWidth(formObject) / 4\n            : AcroFormAppearance.internal.getHeight(formObject) / 4;\n        // The Borderpadding...\n        DotRadius = Number((DotRadius * 0.9).toFixed(5));\n        var c = AcroFormAppearance.internal.Bezier_C;\n        var DotRadiusBezier = Number((DotRadius * c).toFixed(5));\n        /*\n         * The Following is a Circle created with Bezier-Curves.\n         */\n        stream.push(\"q\");\n        stream.push(\n          \"1 0 0 1 \" +\n            f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n            \" \" +\n            f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n            \" cm\"\n        );\n        stream.push(DotRadius + \" 0 m\");\n        stream.push(\n          DotRadius +\n            \" \" +\n            DotRadiusBezier +\n            \" \" +\n            DotRadiusBezier +\n            \" \" +\n            DotRadius +\n            \" 0 \" +\n            DotRadius +\n            \" c\"\n        );\n        stream.push(\n          \"-\" +\n            DotRadiusBezier +\n            \" \" +\n            DotRadius +\n            \" -\" +\n            DotRadius +\n            \" \" +\n            DotRadiusBezier +\n            \" -\" +\n            DotRadius +\n            \" 0 c\"\n        );\n        stream.push(\n          \"-\" +\n            DotRadius +\n            \" -\" +\n            DotRadiusBezier +\n            \" -\" +\n            DotRadiusBezier +\n            \" -\" +\n            DotRadius +\n            \" 0 -\" +\n            DotRadius +\n            \" c\"\n        );\n        stream.push(\n          DotRadiusBezier +\n            \" -\" +\n            DotRadius +\n            \" \" +\n            DotRadius +\n            \" -\" +\n            DotRadiusBezier +\n            \" \" +\n            DotRadius +\n            \" 0 c\"\n        );\n        stream.push(\"f\");\n        stream.push(\"Q\");\n        xobj.stream = stream.join(\"\\n\");\n        return xobj;\n      },\n      YesPushDown: function(formObject) {\n        var xobj = createFormXObject(formObject);\n        xobj.scope = formObject.scope;\n        var stream = [];\n        var DotRadius =\n          AcroFormAppearance.internal.getWidth(formObject) <=\n          AcroFormAppearance.internal.getHeight(formObject)\n            ? AcroFormAppearance.internal.getWidth(formObject) / 4\n            : AcroFormAppearance.internal.getHeight(formObject) / 4;\n        // The Borderpadding...\n        DotRadius = Number((DotRadius * 0.9).toFixed(5));\n        // Save results for later use; no need to waste\n        // processor ticks on doing math\n        var k = Number((DotRadius * 2).toFixed(5));\n        var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n        var dc = Number(\n          (DotRadius * AcroFormAppearance.internal.Bezier_C).toFixed(5)\n        );\n\n        stream.push(\"0.749023 g\");\n        stream.push(\"q\");\n        stream.push(\n          \"1 0 0 1 \" +\n            f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n            \" \" +\n            f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n            \" cm\"\n        );\n        stream.push(k + \" 0 m\");\n        stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n        stream.push(\n          \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n        );\n        stream.push(\n          \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n        );\n        stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n        stream.push(\"f\");\n        stream.push(\"Q\");\n        stream.push(\"0 g\");\n        stream.push(\"q\");\n        stream.push(\n          \"1 0 0 1 \" +\n            f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n            \" \" +\n            f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n            \" cm\"\n        );\n        stream.push(DotRadius + \" 0 m\");\n        stream.push(\n          \"\" +\n            DotRadius +\n            \" \" +\n            dc +\n            \" \" +\n            dc +\n            \" \" +\n            DotRadius +\n            \" 0 \" +\n            DotRadius +\n            \" c\"\n        );\n        stream.push(\n          \"-\" +\n            dc +\n            \" \" +\n            DotRadius +\n            \" -\" +\n            DotRadius +\n            \" \" +\n            dc +\n            \" -\" +\n            DotRadius +\n            \" 0 c\"\n        );\n        stream.push(\n          \"-\" +\n            DotRadius +\n            \" -\" +\n            dc +\n            \" -\" +\n            dc +\n            \" -\" +\n            DotRadius +\n            \" 0 -\" +\n            DotRadius +\n            \" c\"\n        );\n        stream.push(\n          dc +\n            \" -\" +\n            DotRadius +\n            \" \" +\n            DotRadius +\n            \" -\" +\n            dc +\n            \" \" +\n            DotRadius +\n            \" 0 c\"\n        );\n        stream.push(\"f\");\n        stream.push(\"Q\");\n        xobj.stream = stream.join(\"\\n\");\n        return xobj;\n      },\n      OffPushDown: function(formObject) {\n        var xobj = createFormXObject(formObject);\n        xobj.scope = formObject.scope;\n        var stream = [];\n        var DotRadius =\n          AcroFormAppearance.internal.getWidth(formObject) <=\n          AcroFormAppearance.internal.getHeight(formObject)\n            ? AcroFormAppearance.internal.getWidth(formObject) / 4\n            : AcroFormAppearance.internal.getHeight(formObject) / 4;\n        // The Borderpadding...\n        DotRadius = Number((DotRadius * 0.9).toFixed(5));\n        // Save results for later use; no need to waste\n        // processor ticks on doing math\n        var k = Number((DotRadius * 2).toFixed(5));\n        var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n\n        stream.push(\"0.749023 g\");\n        stream.push(\"q\");\n        stream.push(\n          \"1 0 0 1 \" +\n            f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n            \" \" +\n            f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n            \" cm\"\n        );\n        stream.push(k + \" 0 m\");\n        stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n        stream.push(\n          \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n        );\n        stream.push(\n          \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n        );\n        stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n        stream.push(\"f\");\n        stream.push(\"Q\");\n        xobj.stream = stream.join(\"\\n\");\n        return xobj;\n      }\n    },\n\n    Cross: {\n      /**\n       * Creates the Actual AppearanceDictionary-References\n       *\n       * @param {string} name\n       * @returns {Object}\n       * @ignore\n       */\n      createAppearanceStream: function(name) {\n        var appearanceStreamContent = {\n          D: {\n            Off: AcroFormAppearance.RadioButton.Cross.OffPushDown\n          },\n          N: {}\n        };\n        appearanceStreamContent.N[name] =\n          AcroFormAppearance.RadioButton.Cross.YesNormal;\n        appearanceStreamContent.D[name] =\n          AcroFormAppearance.RadioButton.Cross.YesPushDown;\n        return appearanceStreamContent;\n      },\n      getCA: function() {\n        return \"8\";\n      },\n\n      YesNormal: function(formObject) {\n        var xobj = createFormXObject(formObject);\n        xobj.scope = formObject.scope;\n        var stream = [];\n        var cross = AcroFormAppearance.internal.calculateCross(formObject);\n        stream.push(\"q\");\n        stream.push(\n          \"1 1 \" +\n            f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n            \" \" +\n            f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n            \" re\"\n        );\n        stream.push(\"W\");\n        stream.push(\"n\");\n        stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n        stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n        stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n        stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n        stream.push(\"s\");\n        stream.push(\"Q\");\n        xobj.stream = stream.join(\"\\n\");\n        return xobj;\n      },\n      YesPushDown: function(formObject) {\n        var xobj = createFormXObject(formObject);\n        xobj.scope = formObject.scope;\n        var cross = AcroFormAppearance.internal.calculateCross(formObject);\n        var stream = [];\n        stream.push(\"0.749023 g\");\n        stream.push(\n          \"0 0 \" +\n            f2(AcroFormAppearance.internal.getWidth(formObject)) +\n            \" \" +\n            f2(AcroFormAppearance.internal.getHeight(formObject)) +\n            \" re\"\n        );\n        stream.push(\"f\");\n        stream.push(\"q\");\n        stream.push(\n          \"1 1 \" +\n            f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n            \" \" +\n            f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n            \" re\"\n        );\n        stream.push(\"W\");\n        stream.push(\"n\");\n        stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n        stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n        stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n        stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n        stream.push(\"s\");\n        stream.push(\"Q\");\n        xobj.stream = stream.join(\"\\n\");\n        return xobj;\n      },\n      OffPushDown: function(formObject) {\n        var xobj = createFormXObject(formObject);\n        xobj.scope = formObject.scope;\n        var stream = [];\n        stream.push(\"0.749023 g\");\n        stream.push(\n          \"0 0 \" +\n            f2(AcroFormAppearance.internal.getWidth(formObject)) +\n            \" \" +\n            f2(AcroFormAppearance.internal.getHeight(formObject)) +\n            \" re\"\n        );\n        stream.push(\"f\");\n        xobj.stream = stream.join(\"\\n\");\n        return xobj;\n      }\n    }\n  },\n\n  /**\n   * Returns the standard Appearance\n   *\n   * @returns {AcroFormXObject}\n   */\n  createDefaultAppearanceStream: function(formObject) {\n    // Set Helvetica to Standard Font (size: auto)\n    // Color: Black\n    var fontKey = formObject.scope.internal.getFont(\n      formObject.fontName,\n      formObject.fontStyle\n    ).id;\n    var encodedColor = formObject.scope.__private__.encodeColorString(\n      formObject.color\n    );\n    var fontSize = formObject.fontSize;\n    var result = \"/\" + fontKey + \" \" + fontSize + \" Tf \" + encodedColor;\n    return result;\n  }\n};\n\nAcroFormAppearance.internal = {\n  Bezier_C: 0.551915024494,\n\n  calculateCross: function(formObject) {\n    var width = AcroFormAppearance.internal.getWidth(formObject);\n    var height = AcroFormAppearance.internal.getHeight(formObject);\n    var a = Math.min(width, height);\n\n    var cross = {\n      x1: {\n        // upperLeft\n        x: (width - a) / 2,\n        y: (height - a) / 2 + a // height - borderPadding\n      },\n      x2: {\n        // lowerRight\n        x: (width - a) / 2 + a,\n        y: (height - a) / 2 // borderPadding\n      },\n      x3: {\n        // lowerLeft\n        x: (width - a) / 2,\n        y: (height - a) / 2 // borderPadding\n      },\n      x4: {\n        // upperRight\n        x: (width - a) / 2 + a,\n        y: (height - a) / 2 + a // height - borderPadding\n      }\n    };\n\n    return cross;\n  }\n};\nAcroFormAppearance.internal.getWidth = function(formObject) {\n  var result = 0;\n  if (typeof formObject === \"object\") {\n    result = scale(formObject.Rect[2]);\n  }\n  return result;\n};\nAcroFormAppearance.internal.getHeight = function(formObject) {\n  var result = 0;\n  if (typeof formObject === \"object\") {\n    result = scale(formObject.Rect[3]);\n  }\n  return result;\n};\n\n// Public:\n\n/**\n * Add an AcroForm-Field to the jsPDF-instance\n *\n * @name addField\n * @function\n * @instance\n * @param {Object} fieldObject\n * @returns {jsPDF}\n */\nvar addField = (jsPDFAPI.addField = function(fieldObject) {\n  initializeAcroForm(this, fieldObject);\n\n  if (fieldObject instanceof AcroFormField) {\n    putForm(fieldObject);\n  } else {\n    throw new Error(\"Invalid argument passed to jsPDF.addField.\");\n  }\n  fieldObject.page = fieldObject.scope.internal.getCurrentPageInfo().pageNumber;\n  return this;\n});\n\njsPDFAPI.AcroFormChoiceField = AcroFormChoiceField;\njsPDFAPI.AcroFormListBox = AcroFormListBox;\njsPDFAPI.AcroFormComboBox = AcroFormComboBox;\njsPDFAPI.AcroFormEditBox = AcroFormEditBox;\njsPDFAPI.AcroFormButton = AcroFormButton;\njsPDFAPI.AcroFormPushButton = AcroFormPushButton;\njsPDFAPI.AcroFormRadioButton = AcroFormRadioButton;\njsPDFAPI.AcroFormCheckBox = AcroFormCheckBox;\njsPDFAPI.AcroFormTextField = AcroFormTextField;\njsPDFAPI.AcroFormPasswordField = AcroFormPasswordField;\njsPDFAPI.AcroFormAppearance = AcroFormAppearance;\n\njsPDFAPI.AcroForm = {\n  ChoiceField: AcroFormChoiceField,\n  ListBox: AcroFormListBox,\n  ComboBox: AcroFormComboBox,\n  EditBox: AcroFormEditBox,\n  Button: AcroFormButton,\n  PushButton: AcroFormPushButton,\n  RadioButton: AcroFormRadioButton,\n  CheckBox: AcroFormCheckBox,\n  TextField: AcroFormTextField,\n  PasswordField: AcroFormPasswordField,\n  Appearance: AcroFormAppearance\n};\n\njsPDF.AcroForm = {\n  ChoiceField: AcroFormChoiceField,\n  ListBox: AcroFormListBox,\n  ComboBox: AcroFormComboBox,\n  EditBox: AcroFormEditBox,\n  Button: AcroFormButton,\n  PushButton: AcroFormPushButton,\n  RadioButton: AcroFormRadioButton,\n  CheckBox: AcroFormCheckBox,\n  TextField: AcroFormTextField,\n  PasswordField: AcroFormPasswordField,\n  Appearance: AcroFormAppearance\n};\n\nvar AcroForm = jsPDF.AcroForm;\n\nexport {\n  AcroForm,\n  AcroFormChoiceField,\n  AcroFormListBox,\n  AcroFormComboBox,\n  AcroFormEditBox,\n  AcroFormButton,\n  AcroFormPushButton,\n  AcroFormRadioButton,\n  AcroFormCheckBox,\n  AcroFormTextField,\n  AcroFormPasswordField,\n  AcroFormAppearance\n};\n", "function toLookup(arr) {\n  return arr.reduce(function(lookup, name, index) {\n    lookup[name] = index;\n\n    return lookup;\n  }, {});\n}\n\nvar fontStyleOrder = {\n  italic: [\"italic\", \"oblique\", \"normal\"],\n  oblique: [\"oblique\", \"italic\", \"normal\"],\n  normal: [\"normal\", \"oblique\", \"italic\"]\n};\n\nvar fontStretchOrder = [\n  \"ultra-condensed\",\n  \"extra-condensed\",\n  \"condensed\",\n  \"semi-condensed\",\n  \"normal\",\n  \"semi-expanded\",\n  \"expanded\",\n  \"extra-expanded\",\n  \"ultra-expanded\"\n];\n\n// For a given font-stretch value, we need to know where to start our search\n// from in the fontStretchOrder list.\nvar fontStretchLookup = toLookup(fontStretchOrder);\n\nvar fontWeights = [100, 200, 300, 400, 500, 600, 700, 800, 900];\nvar fontWeightsLookup = toLookup(fontWeights);\n\nfunction normalizeFontStretch(stretch) {\n  stretch = stretch || \"normal\";\n\n  return typeof fontStretchLookup[stretch] === \"number\" ? stretch : \"normal\";\n}\n\nfunction normalizeFontStyle(style) {\n  style = style || \"normal\";\n\n  return fontStyleOrder[style] ? style : \"normal\";\n}\n\nfunction normalizeFontWeight(weight) {\n  if (!weight) {\n    return 400;\n  }\n\n  if (typeof weight === \"number\") {\n    // Ignore values which aren't valid font-weights.\n    return weight >= 100 && weight <= 900 && weight % 100 === 0 ? weight : 400;\n  }\n\n  if (/^\\d00$/.test(weight)) {\n    return parseInt(weight);\n  }\n\n  switch (weight) {\n    case \"bold\":\n      return 700;\n\n    case \"normal\":\n    default:\n      return 400;\n  }\n}\n\nexport function normalizeFontFace(fontFace) {\n  var family = fontFace.family.replace(/\"|'/g, \"\").toLowerCase();\n\n  var style = normalizeFontStyle(fontFace.style);\n  var weight = normalizeFontWeight(fontFace.weight);\n  var stretch = normalizeFontStretch(fontFace.stretch);\n\n  return {\n    family: family,\n    style: style,\n    weight: weight,\n    stretch: stretch,\n    src: fontFace.src || [],\n\n    // The ref property maps this font-face to the font\n    // added by the .addFont() method.\n    ref: fontFace.ref || {\n      name: family,\n      style: [stretch, style, weight].join(\" \")\n    }\n  };\n}\n\n/**\n * Turns a list of font-faces into a map, for easier lookup when resolving\n * fonts.\n * @private\n */\nexport function buildFontFaceMap(fontFaces) {\n  var map = {};\n\n  for (var i = 0; i < fontFaces.length; ++i) {\n    var normalized = normalizeFontFace(fontFaces[i]);\n\n    var name = normalized.family;\n    var stretch = normalized.stretch;\n    var style = normalized.style;\n    var weight = normalized.weight;\n\n    map[name] = map[name] || {};\n\n    map[name][stretch] = map[name][stretch] || {};\n    map[name][stretch][style] = map[name][stretch][style] || {};\n    map[name][stretch][style][weight] = normalized;\n  }\n\n  return map;\n}\n\n/**\n * Searches a map of stretches, weights, etc. in the given direction and\n * then, if no match has been found, in the opposite directions.\n *\n * @param {Object.<string, any>} matchingSet A map of the various font variations.\n * @param {any[]} order The order of the different variations\n * @param {number} pivot The starting point of the search in the order list.\n * @param {number} dir The initial direction of the search (desc = -1, asc = 1)\n * @private\n */\n\nfunction searchFromPivot(matchingSet, order, pivot, dir) {\n  var i;\n\n  for (i = pivot; i >= 0 && i < order.length; i += dir) {\n    if (matchingSet[order[i]]) {\n      return matchingSet[order[i]];\n    }\n  }\n\n  for (i = pivot; i >= 0 && i < order.length; i -= dir) {\n    if (matchingSet[order[i]]) {\n      return matchingSet[order[i]];\n    }\n  }\n}\n\nfunction resolveFontStretch(stretch, matchingSet) {\n  if (matchingSet[stretch]) {\n    return matchingSet[stretch];\n  }\n\n  var pivot = fontStretchLookup[stretch];\n\n  // If the font-stretch value is normal or more condensed, we want to\n  // start with a descending search, otherwise we should do ascending.\n  var dir = pivot <= fontStretchLookup[\"normal\"] ? -1 : 1;\n  var match = searchFromPivot(matchingSet, fontStretchOrder, pivot, dir);\n\n  if (!match) {\n    // Since a font-family cannot exist without having at least one stretch value\n    // we should never reach this point.\n    throw new Error(\n      \"Could not find a matching font-stretch value for \" + stretch\n    );\n  }\n\n  return match;\n}\n\nfunction resolveFontStyle(fontStyle, matchingSet) {\n  if (matchingSet[fontStyle]) {\n    return matchingSet[fontStyle];\n  }\n\n  var ordering = fontStyleOrder[fontStyle];\n\n  for (var i = 0; i < ordering.length; ++i) {\n    if (matchingSet[ordering[i]]) {\n      return matchingSet[ordering[i]];\n    }\n  }\n\n  // Since a font-family cannot exist without having at least one style value\n  // we should never reach this point.\n  throw new Error(\"Could not find a matching font-style for \" + fontStyle);\n}\n\nfunction resolveFontWeight(weight, matchingSet) {\n  if (matchingSet[weight]) {\n    return matchingSet[weight];\n  }\n\n  if (weight === 400 && matchingSet[500]) {\n    return matchingSet[500];\n  }\n\n  if (weight === 500 && matchingSet[400]) {\n    return matchingSet[400];\n  }\n\n  var pivot = fontWeightsLookup[weight];\n\n  // If the font-stretch value is normal or more condensed, we want to\n  // start with a descending search, otherwise we should do ascending.\n  var dir = weight < 400 ? -1 : 1;\n  var match = searchFromPivot(matchingSet, fontWeights, pivot, dir);\n\n  if (!match) {\n    // Since a font-family cannot exist without having at least one stretch value\n    // we should never reach this point.\n    throw new Error(\n      \"Could not find a matching font-weight for value \" + weight\n    );\n  }\n\n  return match;\n}\n\nvar defaultGenericFontFamilies = {\n  \"sans-serif\": \"helvetica\",\n  fixed: \"courier\",\n  monospace: \"courier\",\n  terminal: \"courier\",\n  cursive: \"times\",\n  fantasy: \"times\",\n  serif: \"times\"\n};\n\nvar systemFonts = {\n  caption: \"times\",\n  icon: \"times\",\n  menu: \"times\",\n  \"message-box\": \"times\",\n  \"small-caption\": \"times\",\n  \"status-bar\": \"times\"\n};\n\nfunction ruleToString(rule) {\n  return [rule.stretch, rule.style, rule.weight, rule.family].join(\" \");\n}\n\nexport function resolveFontFace(fontFaceMap, rules, opts) {\n  opts = opts || {};\n\n  var defaultFontFamily = opts.defaultFontFamily || \"times\";\n  var genericFontFamilies = Object.assign(\n    {},\n    defaultGenericFontFamilies,\n    opts.genericFontFamilies || {}\n  );\n\n  var rule = null;\n  var matches = null;\n\n  for (var i = 0; i < rules.length; ++i) {\n    rule = normalizeFontFace(rules[i]);\n\n    if (genericFontFamilies[rule.family]) {\n      rule.family = genericFontFamilies[rule.family];\n    }\n\n    if (fontFaceMap.hasOwnProperty(rule.family)) {\n      matches = fontFaceMap[rule.family];\n\n      break;\n    }\n  }\n\n  // Always fallback to a known font family.\n  matches = matches || fontFaceMap[defaultFontFamily];\n\n  if (!matches) {\n    // At this point we should definitiely have a font family, but if we\n    // don't there is something wrong with our configuration\n    throw new Error(\n      \"Could not find a font-family for the rule '\" +\n        ruleToString(rule) +\n        \"' and default family '\" +\n        defaultFontFamily +\n        \"'.\"\n    );\n  }\n\n  matches = resolveFontStretch(rule.stretch, matches);\n  matches = resolveFontStyle(rule.style, matches);\n  matches = resolveFontWeight(rule.weight, matches);\n\n  if (!matches) {\n    // We should've fount\n    throw new Error(\n      \"Failed to resolve a font for the rule '\" + ruleToString(rule) + \"'.\"\n    );\n  }\n\n  return matches;\n}\n\n/**\n * Builds a style id for use with the addFont() method.\n * @param {FontFace} font\n * @private\n */\nexport function toStyleName(font) {\n  return [font.weight, font.style, font.stretch].join(\" \");\n}\n\nfunction eatWhiteSpace(input) {\n  return input.trimLeft();\n}\n\nfunction parseQuotedFontFamily(input, quote) {\n  var index = 0;\n\n  while (index < input.length) {\n    var current = input.charAt(index);\n\n    if (current === quote) {\n      return [input.substring(0, index), input.substring(index + 1)];\n    }\n\n    index += 1;\n  }\n\n  // Unexpected end of input\n  return null;\n}\n\nfunction parseNonQuotedFontFamily(input) {\n  // It implements part of the identifier parser here: https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n  //\n  // NOTE: This parser pretty much ignores escaped identifiers and that there is a thing called unicode.\n  //\n  // Breakdown of regexp:\n  // -[a-z_]     - when identifier starts with a hyphen, you're not allowed to have another hyphen or a digit\n  // [a-z_]      - allow a-z and underscore at beginning of input\n  // [a-z0-9_-]* - after that, anything goes\n  var match = input.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i);\n\n  // non quoted value contains illegal characters\n  if (match === null) {\n    return null;\n  }\n\n  return [match[0], input.substring(match[0].length)];\n}\n\nvar defaultFont = [\"times\"];\n\nexport function parseFontFamily(input) {\n  var result = [];\n  var ch, parsed;\n  var remaining = input.trim();\n\n  if (remaining === \"\") {\n    return defaultFont;\n  }\n\n  if (remaining in systemFonts) {\n    return [systemFonts[remaining]];\n  }\n\n  while (remaining !== \"\") {\n    parsed = null;\n    remaining = eatWhiteSpace(remaining);\n    ch = remaining.charAt(0);\n\n    switch (ch) {\n      case '\"':\n      case \"'\":\n        parsed = parseQuotedFontFamily(remaining.substring(1), ch);\n        break;\n\n      default:\n        parsed = parseNonQuotedFontFamily(remaining);\n        break;\n    }\n\n    if (parsed === null) {\n      return defaultFont;\n    }\n\n    result.push(parsed[0]);\n\n    remaining = eatWhiteSpace(parsed[1]);\n\n    // We expect end of input or a comma separator here\n    if (remaining !== \"\" && remaining.charAt(0) !== \",\") {\n      return defaultFont;\n    }\n\n    remaining = remaining.replace(/^,/, \"\");\n  }\n\n  return result;\n}\n", "/** @license\n * jsPDF addImage plugin\n * Copyright (c) 2012 Jason Siefken, https://github.com/siefkenj/\n *               2013 Chris Dowling, https://github.com/gingerchris\n *               2013 Trinh Ho, https://github.com/ineedfat\n *               2013 Edwin Alejandro Perez, https://github.com/eaparango\n *               2013 Norah Smith, https://github.com/burnburnrocket\n *               2014 Diego Casorran, https://github.com/diegocr\n *               2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/**\n * @name addImage\n * @module\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob } from \"../libs/AtobBtoa.js\";\n\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var namespace = \"addImage_\";\n  jsPDFAPI.__addimage__ = {};\n\n  var UNKNOWN = \"UNKNOWN\";\n\n  // Heuristic selection of a good batch for large array .apply. Not limiting make the call overflow.\n  // With too small batch iteration will be slow as more calls are made,\n  // higher values cause larger and slower garbage collection.\n  var ARRAY_APPLY_BATCH = 8192;\n\n  var imageFileTypeHeaders = {\n    PNG: [[0x89, 0x50, 0x4e, 0x47]],\n    TIFF: [\n      [0x4d, 0x4d, 0x00, 0x2a], //Motorola\n      [0x49, 0x49, 0x2a, 0x00] //Intel\n    ],\n    JPEG: [\n      [\n        0xff,\n        0xd8,\n        0xff,\n        0xe0,\n        undefined,\n        undefined,\n        0x4a,\n        0x46,\n        0x49,\n        0x46,\n        0x00\n      ], //JFIF\n      [\n        0xff,\n        0xd8,\n        0xff,\n        0xe1,\n        undefined,\n        undefined,\n        0x45,\n        0x78,\n        0x69,\n        0x66,\n        0x00,\n        0x00\n      ], //Exif\n      [0xff, 0xd8, 0xff, 0xdb], //JPEG RAW\n      [0xff, 0xd8, 0xff, 0xee] //EXIF RAW\n    ],\n    JPEG2000: [[0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20]],\n    GIF87a: [[0x47, 0x49, 0x46, 0x38, 0x37, 0x61]],\n    GIF89a: [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61]],\n    WEBP: [\n      [\n        0x52,\n        0x49,\n        0x46,\n        0x46,\n        undefined,\n        undefined,\n        undefined,\n        undefined,\n        0x57,\n        0x45,\n        0x42,\n        0x50\n      ]\n    ],\n    BMP: [\n      [0x42, 0x4d], //BM - Windows 3.1x, 95, NT, ... etc.\n      [0x42, 0x41], //BA - OS/2 struct bitmap array\n      [0x43, 0x49], //CI - OS/2 struct color icon\n      [0x43, 0x50], //CP - OS/2 const color pointer\n      [0x49, 0x43], //IC - OS/2 struct icon\n      [0x50, 0x54] //PT - OS/2 pointer\n    ]\n  };\n\n  /**\n   * Recognize filetype of Image by magic-bytes\n   *\n   * https://en.wikipedia.org/wiki/List_of_file_signatures\n   *\n   * @name getImageFileTypeByImageData\n   * @public\n   * @function\n   * @param {string|arraybuffer} imageData imageData as binary String or arraybuffer\n   * @param {string} format format of file if filetype-recognition fails, e.g. 'JPEG'\n   *\n   * @returns {string} filetype of Image\n   */\n  var getImageFileTypeByImageData = (jsPDFAPI.__addimage__.getImageFileTypeByImageData = function(\n    imageData,\n    fallbackFormat\n  ) {\n    fallbackFormat = fallbackFormat || UNKNOWN;\n    var i;\n    var j;\n    var result = UNKNOWN;\n    var headerSchemata;\n    var compareResult;\n    var fileType;\n\n    if (\n      fallbackFormat === \"RGBA\" ||\n      (imageData.data !== undefined &&\n        imageData.data instanceof Uint8ClampedArray &&\n        \"height\" in imageData &&\n        \"width\" in imageData)\n    ) {\n      return \"RGBA\";\n    }\n\n    if (isArrayBufferView(imageData)) {\n      for (fileType in imageFileTypeHeaders) {\n        headerSchemata = imageFileTypeHeaders[fileType];\n        for (i = 0; i < headerSchemata.length; i += 1) {\n          compareResult = true;\n          for (j = 0; j < headerSchemata[i].length; j += 1) {\n            if (headerSchemata[i][j] === undefined) {\n              continue;\n            }\n            if (headerSchemata[i][j] !== imageData[j]) {\n              compareResult = false;\n              break;\n            }\n          }\n          if (compareResult === true) {\n            result = fileType;\n            break;\n          }\n        }\n      }\n    } else {\n      for (fileType in imageFileTypeHeaders) {\n        headerSchemata = imageFileTypeHeaders[fileType];\n        for (i = 0; i < headerSchemata.length; i += 1) {\n          compareResult = true;\n          for (j = 0; j < headerSchemata[i].length; j += 1) {\n            if (headerSchemata[i][j] === undefined) {\n              continue;\n            }\n            if (headerSchemata[i][j] !== imageData.charCodeAt(j)) {\n              compareResult = false;\n              break;\n            }\n          }\n          if (compareResult === true) {\n            result = fileType;\n            break;\n          }\n        }\n      }\n    }\n\n    if (result === UNKNOWN && fallbackFormat !== UNKNOWN) {\n      result = fallbackFormat;\n    }\n    return result;\n  });\n\n  // Image functionality ported from pdf.js\n  var putImage = function(image) {\n    var out = this.internal.write;\n    var putStream = this.internal.putStream;\n    var getFilters = this.internal.getFilters;\n\n    var filter = getFilters();\n    while (filter.indexOf(\"FlateEncode\") !== -1) {\n      filter.splice(filter.indexOf(\"FlateEncode\"), 1);\n    }\n\n    image.objectId = this.internal.newObject();\n\n    var additionalKeyValues = [];\n    additionalKeyValues.push({ key: \"Type\", value: \"/XObject\" });\n    additionalKeyValues.push({ key: \"Subtype\", value: \"/Image\" });\n    additionalKeyValues.push({ key: \"Width\", value: image.width });\n    additionalKeyValues.push({ key: \"Height\", value: image.height });\n\n    if (image.colorSpace === color_spaces.INDEXED) {\n      additionalKeyValues.push({\n        key: \"ColorSpace\",\n        value:\n          \"[/Indexed /DeviceRGB \" +\n          // if an indexed png defines more than one colour with transparency, we've created a sMask\n          (image.palette.length / 3 - 1) +\n          \" \" +\n          (\"sMask\" in image && typeof image.sMask !== \"undefined\"\n            ? image.objectId + 2\n            : image.objectId + 1) +\n          \" 0 R]\"\n      });\n    } else {\n      additionalKeyValues.push({\n        key: \"ColorSpace\",\n        value: \"/\" + image.colorSpace\n      });\n      if (image.colorSpace === color_spaces.DEVICE_CMYK) {\n        additionalKeyValues.push({ key: \"Decode\", value: \"[1 0 1 0 1 0 1 0]\" });\n      }\n    }\n    additionalKeyValues.push({\n      key: \"BitsPerComponent\",\n      value: image.bitsPerComponent\n    });\n    if (\n      \"decodeParameters\" in image &&\n      typeof image.decodeParameters !== \"undefined\"\n    ) {\n      additionalKeyValues.push({\n        key: \"DecodeParms\",\n        value: \"<<\" + image.decodeParameters + \">>\"\n      });\n    }\n    if (\n      \"transparency\" in image &&\n      Array.isArray(image.transparency) &&\n      image.transparency.length > 0\n    ) {\n      var transparency = \"\",\n        i = 0,\n        len = image.transparency.length;\n      for (; i < len; i++)\n        transparency +=\n          image.transparency[i] + \" \" + image.transparency[i] + \" \";\n\n      additionalKeyValues.push({\n        key: \"Mask\",\n        value: \"[\" + transparency + \"]\"\n      });\n    }\n    if (typeof image.sMask !== \"undefined\") {\n      additionalKeyValues.push({\n        key: \"SMask\",\n        value: image.objectId + 1 + \" 0 R\"\n      });\n    }\n\n    var alreadyAppliedFilters =\n      typeof image.filter !== \"undefined\" ? [\"/\" + image.filter] : undefined;\n\n    putStream({\n      data: image.data,\n      additionalKeyValues: additionalKeyValues,\n      alreadyAppliedFilters: alreadyAppliedFilters,\n      objectId: image.objectId\n    });\n\n    out(\"endobj\");\n\n    // Soft mask\n    if (\"sMask\" in image && typeof image.sMask !== \"undefined\") {\n      const sMaskBitsPerComponent =\n        image.sMaskBitsPerComponent ?? image.bitsPerComponent;\n      const sMask = {\n        width: image.width,\n        height: image.height,\n        colorSpace: \"DeviceGray\",\n        bitsPerComponent: sMaskBitsPerComponent,\n        data: image.sMask\n      };\n      if (\"filter\" in image) {\n        sMask.decodeParameters = `/Predictor ${image.predictor} /Colors 1 /BitsPerComponent ${sMaskBitsPerComponent} /Columns ${image.width}`;\n        sMask.filter = image.filter;\n      }\n      putImage.call(this, sMask);\n    }\n\n    //Palette\n    if (image.colorSpace === color_spaces.INDEXED) {\n      var objId = this.internal.newObject();\n      //out('<< /Filter / ' + img['f'] +' /Length ' + img['pal'].length + '>>');\n      //putStream(zlib.compress(img['pal']));\n      putStream({\n        data: arrayBufferToBinaryString(new Uint8Array(image.palette)),\n        objectId: objId\n      });\n      out(\"endobj\");\n    }\n  };\n  var putResourcesCallback = function() {\n    var images = this.internal.collections[namespace + \"images\"];\n    for (var i in images) {\n      putImage.call(this, images[i]);\n    }\n  };\n  var putXObjectsDictCallback = function() {\n    var images = this.internal.collections[namespace + \"images\"],\n      out = this.internal.write,\n      image;\n    for (var i in images) {\n      image = images[i];\n      out(\"/I\" + image.index, image.objectId, \"0\", \"R\");\n    }\n  };\n\n  var checkCompressValue = function(value) {\n    if (value && typeof value === \"string\") value = value.toUpperCase();\n    return value in jsPDFAPI.image_compression ? value : image_compression.NONE;\n  };\n\n  var initialize = function() {\n    if (!this.internal.collections[namespace + \"images\"]) {\n      this.internal.collections[namespace + \"images\"] = {};\n      this.internal.events.subscribe(\"putResources\", putResourcesCallback);\n      this.internal.events.subscribe(\"putXobjectDict\", putXObjectsDictCallback);\n    }\n  };\n\n  var getImages = function() {\n    var images = this.internal.collections[namespace + \"images\"];\n    initialize.call(this);\n    return images;\n  };\n  var getImageIndex = function() {\n    return Object.keys(this.internal.collections[namespace + \"images\"]).length;\n  };\n  var notDefined = function(value) {\n    return typeof value === \"undefined\" || value === null || value.length === 0;\n  };\n  var generateAliasFromImageData = function(imageData) {\n    if (typeof imageData === \"string\" || isArrayBufferView(imageData)) {\n      return sHashCode(imageData);\n    } else if (isArrayBufferView(imageData.data)) {\n      return sHashCode(imageData.data);\n    }\n\n    return null;\n  };\n\n  var isImageTypeSupported = function(type) {\n    return typeof jsPDFAPI[\"process\" + type.toUpperCase()] === \"function\";\n  };\n\n  var isDOMElement = function(object) {\n    return typeof object === \"object\" && object.nodeType === 1;\n  };\n\n  var getImageDataFromElement = function(element, format) {\n    //if element is an image which uses data url definition, just return the dataurl\n    if (element.nodeName === \"IMG\" && element.hasAttribute(\"src\")) {\n      var src = \"\" + element.getAttribute(\"src\");\n\n      //is base64 encoded dataUrl, directly process it\n      if (src.indexOf(\"data:image/\") === 0) {\n        return atob(\n          unescape(src)\n            .split(\"base64,\")\n            .pop()\n        );\n      }\n\n      //it is probably an url, try to load it\n      var tmpImageData = jsPDFAPI.loadFile(src, true);\n      if (tmpImageData !== undefined) {\n        return tmpImageData;\n      }\n    }\n\n    if (element.nodeName === \"CANVAS\") {\n      if (element.width === 0 || element.height === 0) {\n        throw new Error(\n          \"Given canvas must have data. Canvas width: \" +\n            element.width +\n            \", height: \" +\n            element.height\n        );\n      }\n      var mimeType;\n      switch (format) {\n        case \"PNG\":\n          mimeType = \"image/png\";\n          break;\n        case \"WEBP\":\n          mimeType = \"image/webp\";\n          break;\n        case \"JPEG\":\n        case \"JPG\":\n        default:\n          mimeType = \"image/jpeg\";\n          break;\n      }\n      return atob(\n        element\n          .toDataURL(mimeType, 1.0)\n          .split(\"base64,\")\n          .pop()\n      );\n    }\n  };\n\n  var checkImagesForAlias = function(alias) {\n    var images = this.internal.collections[namespace + \"images\"];\n    if (images) {\n      for (var e in images) {\n        if (alias === images[e].alias) {\n          return images[e];\n        }\n      }\n    }\n  };\n\n  var determineWidthAndHeight = function(width, height, image) {\n    if (!width && !height) {\n      width = -96;\n      height = -96;\n    }\n    if (width < 0) {\n      width = (-1 * image.width * 72) / width / this.internal.scaleFactor;\n    }\n    if (height < 0) {\n      height = (-1 * image.height * 72) / height / this.internal.scaleFactor;\n    }\n    if (width === 0) {\n      width = (height * image.width) / image.height;\n    }\n    if (height === 0) {\n      height = (width * image.height) / image.width;\n    }\n\n    return [width, height];\n  };\n\n  var writeImageToPDF = function(x, y, width, height, image, rotation) {\n    var dims = determineWidthAndHeight.call(this, width, height, image),\n      coord = this.internal.getCoordinateString,\n      vcoord = this.internal.getVerticalCoordinateString;\n\n    var images = getImages.call(this);\n\n    width = dims[0];\n    height = dims[1];\n    images[image.index] = image;\n\n    if (rotation) {\n      rotation *= Math.PI / 180;\n      var c = Math.cos(rotation);\n      var s = Math.sin(rotation);\n      //like in pdf Reference do it 4 digits instead of 2\n      var f4 = function(number) {\n        return number.toFixed(4);\n      };\n      var rotationTransformationMatrix = [\n        f4(c),\n        f4(s),\n        f4(s * -1),\n        f4(c),\n        0,\n        0,\n        \"cm\"\n      ];\n    }\n    this.internal.write(\"q\"); //Save graphics state\n    if (rotation) {\n      this.internal.write(\n        [1, \"0\", \"0\", 1, coord(x), vcoord(y + height), \"cm\"].join(\" \")\n      ); //Translate\n      this.internal.write(rotationTransformationMatrix.join(\" \")); //Rotate\n      this.internal.write(\n        [coord(width), \"0\", \"0\", coord(height), \"0\", \"0\", \"cm\"].join(\" \")\n      ); //Scale\n    } else {\n      this.internal.write(\n        [\n          coord(width),\n          \"0\",\n          \"0\",\n          coord(height),\n          coord(x),\n          vcoord(y + height),\n          \"cm\"\n        ].join(\" \")\n      ); //Translate and Scale\n    }\n\n    if (this.isAdvancedAPI()) {\n      // draw image bottom up when in \"advanced\" API mode\n      this.internal.write([1, 0, 0, -1, 0, 0, \"cm\"].join(\" \"));\n    }\n\n    this.internal.write(\"/I\" + image.index + \" Do\"); //Paint Image\n    this.internal.write(\"Q\"); //Restore graphics state\n  };\n\n  /**\n   * COLOR SPACES\n   */\n  var color_spaces = (jsPDFAPI.color_spaces = {\n    DEVICE_RGB: \"DeviceRGB\",\n    DEVICE_GRAY: \"DeviceGray\",\n    DEVICE_CMYK: \"DeviceCMYK\",\n    CAL_GREY: \"CalGray\",\n    CAL_RGB: \"CalRGB\",\n    LAB: \"Lab\",\n    ICC_BASED: \"ICCBased\",\n    INDEXED: \"Indexed\",\n    PATTERN: \"Pattern\",\n    SEPARATION: \"Separation\",\n    DEVICE_N: \"DeviceN\"\n  });\n\n  /**\n   * DECODE METHODS\n   */\n  jsPDFAPI.decode = {\n    DCT_DECODE: \"DCTDecode\",\n    FLATE_DECODE: \"FlateDecode\",\n    LZW_DECODE: \"LZWDecode\",\n    JPX_DECODE: \"JPXDecode\",\n    JBIG2_DECODE: \"JBIG2Decode\",\n    ASCII85_DECODE: \"ASCII85Decode\",\n    ASCII_HEX_DECODE: \"ASCIIHexDecode\",\n    RUN_LENGTH_DECODE: \"RunLengthDecode\",\n    CCITT_FAX_DECODE: \"CCITTFaxDecode\"\n  };\n\n  /**\n   * IMAGE COMPRESSION TYPES\n   */\n  var image_compression = (jsPDFAPI.image_compression = {\n    NONE: \"NONE\",\n    FAST: \"FAST\",\n    MEDIUM: \"MEDIUM\",\n    SLOW: \"SLOW\"\n  });\n\n  /**\n   * @name sHashCode\n   * @function\n   * @param {string} data\n   * @returns {string}\n   */\n  var sHashCode = (jsPDFAPI.__addimage__.sHashCode = function(data) {\n    var hash = 0,\n      i,\n      len;\n\n    if (typeof data === \"string\") {\n      len = data.length;\n      for (i = 0; i < len; i++) {\n        hash = (hash << 5) - hash + data.charCodeAt(i);\n        hash |= 0; // Convert to 32bit integer\n      }\n    } else if (isArrayBufferView(data)) {\n      len = data.byteLength / 2;\n      for (i = 0; i < len; i++) {\n        hash = (hash << 5) - hash + data[i];\n        hash |= 0; // Convert to 32bit integer\n      }\n    }\n    return hash;\n  });\n\n  /**\n   * Validates if given String is a valid Base64-String\n   *\n   * @name validateStringAsBase64\n   * @public\n   * @function\n   * @param {String} possible Base64-String\n   *\n   * @returns {boolean}\n   */\n  var validateStringAsBase64 = (jsPDFAPI.__addimage__.validateStringAsBase64 = function(\n    possibleBase64String\n  ) {\n    possibleBase64String = possibleBase64String || \"\";\n    possibleBase64String.toString().trim();\n\n    var result = true;\n\n    if (possibleBase64String.length === 0) {\n      result = false;\n    }\n\n    if (possibleBase64String.length % 4 !== 0) {\n      result = false;\n    }\n\n    if (\n      /^[A-Za-z0-9+/]+$/.test(\n        possibleBase64String.substr(0, possibleBase64String.length - 2)\n      ) === false\n    ) {\n      result = false;\n    }\n\n    if (\n      /^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(\n        possibleBase64String.substr(-2)\n      ) === false\n    ) {\n      result = false;\n    }\n    return result;\n  });\n\n  /**\n   * Strips out and returns info from a valid base64 data URI\n   *\n   * @name extractImageFromDataUrl\n   * @function\n   * @param {string} dataUrl a valid data URI of format 'data:[<MIME-type>][;base64],<data>'\n   * @returns {string} The raw Base64-encoded data.\n   */\n  var extractImageFromDataUrl = (jsPDFAPI.__addimage__.extractImageFromDataUrl = function(\n    dataUrl\n  ) {\n    if (dataUrl == null) {\n      return null;\n    }\n\n    // avoid using a regexp for parsing because it might be vulnerable against ReDoS attacks\n\n    dataUrl = dataUrl.trim();\n\n    if (!dataUrl.startsWith(\"data:\")) {\n      return null;\n    }\n\n    const commaIndex = dataUrl.indexOf(\",\");\n    if (commaIndex < 0) {\n      return null;\n    }\n\n    const dataScheme = dataUrl.substring(0, commaIndex).trim();\n    if (!dataScheme.endsWith(\"base64\")) {\n      return null;\n    }\n\n    return dataUrl.substring(commaIndex + 1);\n  });\n\n  /**\n   * Tests supplied object to determine if ArrayBuffer\n   *\n   * @name isArrayBuffer\n   * @function\n   * @param {Object} object an Object\n   *\n   * @returns {boolean}\n   */\n  jsPDFAPI.__addimage__.isArrayBuffer = function(object) {\n    return object instanceof ArrayBuffer;\n  };\n\n  /**\n   * Tests supplied object to determine if it implements the ArrayBufferView (TypedArray) interface\n   *\n   * @name isArrayBufferView\n   * @function\n   * @param {Object} object an Object\n   * @returns {boolean}\n   */\n  var isArrayBufferView = (jsPDFAPI.__addimage__.isArrayBufferView = function(\n    object\n  ) {\n    return (\n      object instanceof Int8Array ||\n      object instanceof Uint8Array ||\n      object instanceof Uint8ClampedArray ||\n      object instanceof Int16Array ||\n      object instanceof Uint16Array ||\n      object instanceof Int32Array ||\n      object instanceof Uint32Array ||\n      object instanceof Float32Array ||\n      object instanceof Float64Array\n    );\n  });\n\n  /**\n   * Convert Binary String to ArrayBuffer\n   *\n   * @name binaryStringToUint8Array\n   * @public\n   * @function\n   * @param {string} BinaryString with ImageData\n   * @returns {Uint8Array}\n   */\n  var binaryStringToUint8Array = (jsPDFAPI.__addimage__.binaryStringToUint8Array = function(\n    binary_string\n  ) {\n    var len = binary_string.length;\n    var bytes = new Uint8Array(len);\n    for (var i = 0; i < len; i++) {\n      bytes[i] = binary_string.charCodeAt(i);\n    }\n    return bytes;\n  });\n\n  /**\n   * Convert the Buffer to a Binary String\n   *\n   * @name arrayBufferToBinaryString\n   * @public\n   * @function\n   * @param {ArrayBuffer|ArrayBufferView} ArrayBuffer buffer or bufferView with ImageData\n   *\n   * @returns {String}\n   */\n  var arrayBufferToBinaryString = (jsPDFAPI.__addimage__.arrayBufferToBinaryString = function(\n    buffer\n  ) {\n    var out = \"\";\n    // There are calls with both ArrayBuffer and already converted Uint8Array or other BufferView.\n    // Do not copy the array if input is already an array.\n    var buf = isArrayBufferView(buffer) ? buffer : new Uint8Array(buffer);\n    for (var i = 0; i < buf.length; i += ARRAY_APPLY_BATCH) {\n      // Limit the amount of characters being parsed to prevent overflow.\n      // Note that while TextDecoder would be faster, it does not have the same\n      // functionality as fromCharCode with any provided encodings as of 3/2021.\n      out += String.fromCharCode.apply(\n        null,\n        buf.subarray(i, i + ARRAY_APPLY_BATCH)\n      );\n    }\n    return out;\n  });\n\n  /**\n   * Possible parameter for addImage, an RGBA buffer with size.\n   *\n   * @typedef {Object} RGBAData\n   * @property {Uint8ClampedArray} data - Single dimensional array of RGBA values. For example from canvas getImageData.\n   * @property {number} width - Image width as the data does not carry this information in itself.\n   * @property {number} height - Image height as the data does not carry this information in itself.\n   */\n\n  /**\n   * Adds an Image to the PDF.\n   *\n   * @name addImage\n   * @public\n   * @function\n   * @param {string|HTMLImageElement|HTMLCanvasElement|Uint8Array|RGBAData} imageData imageData as base64 encoded DataUrl or Image-HTMLElement or Canvas-HTMLElement or object containing RGBA array (like output from canvas.getImageData).\n   * @param {string} format format of file if filetype-recognition fails or in case of a Canvas-Element needs to be specified (default for Canvas is JPEG), e.g. 'JPEG', 'PNG', 'WEBP'\n   * @param {number} x x Coordinate (in units declared at inception of PDF document) against left edge of the page\n   * @param {number} y y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n   * @param {number} width width of the image (in units declared at inception of PDF document)\n   * @param {number} height height of the Image (in units declared at inception of PDF document)\n   * @param {string} alias alias of the image (if used multiple times)\n   * @param {string} compression compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n   * @param {number} rotation rotation of the image in degrees (0-359)\n   *\n   * @throws {Error} if the input is invalid, such as invalid image data.\n   *\n   * @returns jsPDF\n   */\n  jsPDFAPI.addImage = function() {\n    var imageData, format, x, y, w, h, alias, compression, rotation;\n\n    imageData = arguments[0];\n    if (typeof arguments[1] === \"number\") {\n      format = UNKNOWN;\n      x = arguments[1];\n      y = arguments[2];\n      w = arguments[3];\n      h = arguments[4];\n      alias = arguments[5];\n      compression = arguments[6];\n      rotation = arguments[7];\n    } else {\n      format = arguments[1];\n      x = arguments[2];\n      y = arguments[3];\n      w = arguments[4];\n      h = arguments[5];\n      alias = arguments[6];\n      compression = arguments[7];\n      rotation = arguments[8];\n    }\n\n    if (\n      typeof imageData === \"object\" &&\n      !isDOMElement(imageData) &&\n      \"imageData\" in imageData\n    ) {\n      var options = imageData;\n\n      imageData = options.imageData;\n      format = options.format || format || UNKNOWN;\n      x = options.x || x || 0;\n      y = options.y || y || 0;\n      w = options.w || options.width || w;\n      h = options.h || options.height || h;\n      alias = options.alias || alias;\n      compression = options.compression || compression;\n      rotation = options.rotation || options.angle || rotation;\n    }\n\n    //If compression is not explicitly set, determine if we should use compression\n    var filter = this.internal.getFilters();\n    if (compression === undefined && filter.indexOf(\"FlateEncode\") !== -1) {\n      compression = \"SLOW\";\n    }\n\n    if (isNaN(x) || isNaN(y)) {\n      throw new Error(\"Invalid coordinates passed to jsPDF.addImage\");\n    }\n\n    initialize.call(this);\n\n    var image = processImageData.call(\n      this,\n      imageData,\n      format,\n      alias,\n      compression\n    );\n\n    writeImageToPDF.call(this, x, y, w, h, image, rotation);\n\n    return this;\n  };\n\n  var processImageData = function(imageData, format, alias, compression) {\n    var result, dataAsBinaryString;\n\n    if (\n      typeof imageData === \"string\" &&\n      getImageFileTypeByImageData(imageData) === UNKNOWN\n    ) {\n      imageData = unescape(imageData);\n      var tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n      if (tmpImageData !== \"\") {\n        imageData = tmpImageData;\n      } else {\n        tmpImageData = jsPDFAPI.loadFile(imageData, true);\n        if (tmpImageData !== undefined) {\n          imageData = tmpImageData;\n        }\n      }\n    }\n\n    if (isDOMElement(imageData)) {\n      imageData = getImageDataFromElement(imageData, format);\n    }\n\n    format = getImageFileTypeByImageData(imageData, format);\n    if (!isImageTypeSupported(format)) {\n      throw new Error(\n        \"addImage does not support files of type '\" +\n          format +\n          \"', please ensure that a plugin for '\" +\n          format +\n          \"' support is added.\"\n      );\n    }\n\n    // now do the heavy lifting\n\n    if (notDefined(alias)) {\n      alias = generateAliasFromImageData(imageData);\n    }\n    result = checkImagesForAlias.call(this, alias);\n\n    if (!result) {\n      // no need to convert if imageData is already uint8array\n      if (!(imageData instanceof Uint8Array) && format !== \"RGBA\") {\n        dataAsBinaryString = imageData;\n        imageData = binaryStringToUint8Array(imageData);\n      }\n\n      result = this[\"process\" + format.toUpperCase()](\n        imageData,\n        getImageIndex.call(this),\n        alias,\n        checkCompressValue(compression),\n        dataAsBinaryString\n      );\n    }\n\n    if (!result) {\n      throw new Error(\"An unknown error occurred whilst processing the image.\");\n    }\n    return result;\n  };\n\n  /**\n   * @name convertBase64ToBinaryString\n   * @function\n   * @param {string} stringData\n   * @returns {string} binary string\n   */\n  var convertBase64ToBinaryString = (jsPDFAPI.__addimage__.convertBase64ToBinaryString = function(\n    stringData,\n    throwError\n  ) {\n    throwError = typeof throwError === \"boolean\" ? throwError : true;\n    var imageData = \"\";\n    var rawData;\n\n    if (typeof stringData === \"string\") {\n      rawData = extractImageFromDataUrl(stringData) ?? stringData;\n\n      try {\n        imageData = atob(rawData);\n      } catch (e) {\n        if (throwError) {\n          if (!validateStringAsBase64(rawData)) {\n            throw new Error(\n              \"Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString \"\n            );\n          } else {\n            throw new Error(\n              \"atob-Error in jsPDF.convertBase64ToBinaryString \" + e.message\n            );\n          }\n        }\n      }\n    }\n    return imageData;\n  });\n\n  /**\n   * @name getImageProperties\n   * @function\n   * @param {Object} imageData\n   * @returns {Object}\n   */\n  jsPDFAPI.getImageProperties = function(imageData) {\n    var image;\n    var tmpImageData = \"\";\n    var format;\n\n    if (isDOMElement(imageData)) {\n      imageData = getImageDataFromElement(imageData);\n    }\n\n    if (\n      typeof imageData === \"string\" &&\n      getImageFileTypeByImageData(imageData) === UNKNOWN\n    ) {\n      tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n      if (tmpImageData === \"\") {\n        tmpImageData = jsPDFAPI.loadFile(imageData) || \"\";\n      }\n      imageData = tmpImageData;\n    }\n\n    format = getImageFileTypeByImageData(imageData);\n    if (!isImageTypeSupported(format)) {\n      throw new Error(\n        \"addImage does not support files of type '\" +\n          format +\n          \"', please ensure that a plugin for '\" +\n          format +\n          \"' support is added.\"\n      );\n    }\n\n    if (!(imageData instanceof Uint8Array)) {\n      imageData = binaryStringToUint8Array(imageData);\n    }\n\n    image = this[\"process\" + format.toUpperCase()](imageData);\n\n    if (!image) {\n      throw new Error(\"An unknown error occurred whilst processing the image\");\n    }\n\n    image.fileType = format;\n\n    return image;\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF Annotations PlugIn\n *\n * There are many types of annotations in a PDF document. Annotations are placed\n * on a page at a particular location. They are not 'attached' to an object.\n * <br />\n * This plugin current supports <br />\n * <li> Goto Page (set pageNumber and top in options)\n * <li> Goto Name (set name and top in options)\n * <li> Goto URL (set url in options)\n * <p>\n * \tThe destination magnification factor can also be specified when goto is a page number or a named destination. (see documentation below)\n *  (set magFactor in options).  XYZ is the default.\n * </p>\n * <p>\n *  Links, Text, Popup, and FreeText are supported.\n * </p>\n * <p>\n * Options In PDF spec Not Implemented Yet\n * <li> link border\n * <li> named target\n * <li> page coordinates\n * <li> destination page scaling and layout\n * <li> actions other than URL and GotoPage\n * <li> background / hover actions\n * </p>\n * @name annotations\n * @module\n */\n\n/*\n    Destination Magnification Factors\n    See PDF 1.3 Page 386 for meanings and options\n\n    [supported]\n\tXYZ (options; left top zoom)\n\tFit (no options)\n\tFitH (options: top)\n\tFitV (options: left)\n\n\t[not supported]\n\tFitR\n\tFitB\n\tFitBH\n\tFitBV\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var notEmpty = function(obj) {\n    if (typeof obj != \"undefined\") {\n      if (obj != \"\") {\n        return true;\n      }\n    }\n  };\n\n  jsPDF.API.events.push([\n    \"addPage\",\n    function(addPageData) {\n      var pageInfo = this.internal.getPageInfo(addPageData.pageNumber);\n      pageInfo.pageContext.annotations = [];\n    }\n  ]);\n\n  jsPDFAPI.events.push([\n    \"putPage\",\n    function(putPageData) {\n      var getHorizontalCoordinateString = this.internal.getCoordinateString;\n      var getVerticalCoordinateString = this.internal\n        .getVerticalCoordinateString;\n      var pageInfo = this.internal.getPageInfoByObjId(putPageData.objId);\n      var pageAnnos = putPageData.pageContext.annotations;\n\n      var anno, rect, line;\n      var found = false;\n      for (var a = 0; a < pageAnnos.length && !found; a++) {\n        anno = pageAnnos[a];\n        switch (anno.type) {\n          case \"link\":\n            if (\n              notEmpty(anno.options.url) ||\n              notEmpty(anno.options.pageNumber)\n            ) {\n              found = true;\n            }\n            break;\n          case \"reference\":\n          case \"text\":\n          case \"freetext\":\n            found = true;\n            break;\n        }\n      }\n      if (found == false) {\n        return;\n      }\n\n      this.internal.write(\"/Annots [\");\n      for (var i = 0; i < pageAnnos.length; i++) {\n        anno = pageAnnos[i];\n        var escape = this.internal.pdfEscape;\n        var encryptor = this.internal.getEncryptor(putPageData.objId);\n\n        switch (anno.type) {\n          case \"reference\":\n            // References to Widget Annotations (for AcroForm Fields)\n            this.internal.write(\" \" + anno.object.objId + \" 0 R \");\n            break;\n          case \"text\":\n            // Create a an object for both the text and the popup\n            var objText = this.internal.newAdditionalObject();\n            var objPopup = this.internal.newAdditionalObject();\n            var encryptorText = this.internal.getEncryptor(objText.objId);\n\n            var title = anno.title || \"Note\";\n            rect =\n              \"/Rect [\" +\n              getHorizontalCoordinateString(anno.bounds.x) +\n              \" \" +\n              getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n              \" \" +\n              getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n              \" \" +\n              getVerticalCoordinateString(anno.bounds.y) +\n              \"] \";\n\n            line =\n              \"<</Type /Annot /Subtype /\" +\n              \"Text\" +\n              \" \" +\n              rect +\n              \"/Contents (\" +\n              escape(encryptorText(anno.contents)) +\n              \")\";\n            line += \" /Popup \" + objPopup.objId + \" 0 R\";\n            line += \" /P \" + pageInfo.objId + \" 0 R\";\n            line += \" /T (\" + escape(encryptorText(title)) + \") >>\";\n            objText.content = line;\n\n            var parent = objText.objId + \" 0 R\";\n            var popoff = 30;\n            rect =\n              \"/Rect [\" +\n              getHorizontalCoordinateString(anno.bounds.x + popoff) +\n              \" \" +\n              getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n              \" \" +\n              getHorizontalCoordinateString(\n                anno.bounds.x + anno.bounds.w + popoff\n              ) +\n              \" \" +\n              getVerticalCoordinateString(anno.bounds.y) +\n              \"] \";\n            line =\n              \"<</Type /Annot /Subtype /\" +\n              \"Popup\" +\n              \" \" +\n              rect +\n              \" /Parent \" +\n              parent;\n            if (anno.open) {\n              line += \" /Open true\";\n            }\n            line += \" >>\";\n            objPopup.content = line;\n\n            this.internal.write(objText.objId, \"0 R\", objPopup.objId, \"0 R\");\n\n            break;\n          case \"freetext\":\n            rect =\n              \"/Rect [\" +\n              getHorizontalCoordinateString(anno.bounds.x) +\n              \" \" +\n              getVerticalCoordinateString(anno.bounds.y) +\n              \" \" +\n              getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n              \" \" +\n              getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n              \"] \";\n            var color = anno.color || \"#000000\";\n            var defaultStyle =\n              \"font: Helvetica,sans-serif 12.0pt; text-align:left; color:#\" +\n              color;\n            line =\n              \"<</Type /Annot /Subtype /\" +\n              \"FreeText\" +\n              \" \" +\n              rect +\n              \"/Contents (\" +\n              escape(encryptor(anno.contents)) +\n              \")\";\n            line += \" /DS(\" + escape(encryptor(defaultStyle)) + \")\";\n            line += \" /Border [0 0 0]\";\n            line += \" >>\";\n            this.internal.write(line);\n            break;\n          case \"link\":\n            if (anno.options.name) {\n              var loc = this.annotations._nameMap[anno.options.name];\n              anno.options.pageNumber = loc.page;\n              anno.options.top = loc.y;\n            } else {\n              if (!anno.options.top) {\n                anno.options.top = 0;\n              }\n            }\n\n            rect =\n              \"/Rect [\" +\n              anno.finalBounds.x +\n              \" \" +\n              anno.finalBounds.y +\n              \" \" +\n              anno.finalBounds.w +\n              \" \" +\n              anno.finalBounds.h +\n              \"] \";\n\n            line = \"\";\n            if (anno.options.url) {\n              line =\n                \"<</Type /Annot /Subtype /Link \" +\n                rect +\n                \"/Border [0 0 0] /A <</S /URI /URI (\" +\n                escape(encryptor(anno.options.url)) +\n                \") >>\";\n            } else if (anno.options.pageNumber) {\n              // first page is 0\n              var info = this.internal.getPageInfo(anno.options.pageNumber);\n              line =\n                \"<</Type /Annot /Subtype /Link \" +\n                rect +\n                \"/Border [0 0 0] /Dest [\" +\n                info.objId +\n                \" 0 R\";\n              anno.options.magFactor = anno.options.magFactor || \"XYZ\";\n              switch (anno.options.magFactor) {\n                case \"Fit\":\n                  line += \" /Fit]\";\n                  break;\n                case \"FitH\":\n                  line += \" /FitH \" + anno.options.top + \"]\";\n                  break;\n                case \"FitV\":\n                  anno.options.left = anno.options.left || 0;\n                  line += \" /FitV \" + anno.options.left + \"]\";\n                  break;\n                case \"XYZ\":\n                default:\n                  var top = getVerticalCoordinateString(anno.options.top);\n                  anno.options.left = anno.options.left || 0;\n                  // 0 or null zoom will not change zoom factor\n                  if (typeof anno.options.zoom === \"undefined\") {\n                    anno.options.zoom = 0;\n                  }\n                  line +=\n                    \" /XYZ \" +\n                    anno.options.left +\n                    \" \" +\n                    top +\n                    \" \" +\n                    anno.options.zoom +\n                    \"]\";\n                  break;\n              }\n            }\n\n            if (line != \"\") {\n              line += \" >>\";\n              this.internal.write(line);\n            }\n            break;\n        }\n      }\n      this.internal.write(\"]\");\n    }\n  ]);\n\n  /**\n   * @name createAnnotation\n   * @function\n   * @param {Object} options\n   */\n  jsPDFAPI.createAnnotation = function(options) {\n    var pageInfo = this.internal.getCurrentPageInfo();\n    switch (options.type) {\n      case \"link\":\n        this.link(\n          options.bounds.x,\n          options.bounds.y,\n          options.bounds.w,\n          options.bounds.h,\n          options\n        );\n        break;\n      case \"text\":\n      case \"freetext\":\n        pageInfo.pageContext.annotations.push(options);\n        break;\n    }\n  };\n\n  /**\n   * Create a link\n   *\n   * valid options\n   * <li> pageNumber or url [required]\n   * <p>If pageNumber is specified, top and zoom may also be specified</p>\n   * @name link\n   * @function\n   * @param {number} x\n   * @param {number} y\n   * @param {number} w\n   * @param {number} h\n   * @param {Object} options\n   */\n  jsPDFAPI.link = function(x, y, w, h, options) {\n    var pageInfo = this.internal.getCurrentPageInfo();\n    var getHorizontalCoordinateString = this.internal.getCoordinateString;\n    var getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\n\n    pageInfo.pageContext.annotations.push({\n      finalBounds: {\n        x: getHorizontalCoordinateString(x),\n        y: getVerticalCoordinateString(y),\n        w: getHorizontalCoordinateString(x + w),\n        h: getVerticalCoordinateString(y + h)\n      },\n      options: options,\n      type: \"link\"\n    });\n  };\n\n  /**\n   * Currently only supports single line text.\n   * Returns the width of the text/link\n   *\n   * @name textWithLink\n   * @function\n   * @param {string} text\n   * @param {number} x\n   * @param {number} y\n   * @param {Object} options\n   * @returns {number} width the width of the text/link\n   */\n  jsPDFAPI.textWithLink = function(text, x, y, options) {\n    var totalLineWidth = this.getTextWidth(text);\n    var lineHeight = this.internal.getLineHeight() / this.internal.scaleFactor;\n    var linkHeight, linkWidth;\n\n    // Checking if maxWidth option is passed to determine lineWidth and number of lines for each line\n    if (options.maxWidth !== undefined) {\n      var { maxWidth } = options;\n      linkWidth = maxWidth;\n      var numOfLines = this.splitTextToSize(text, linkWidth).length;\n      linkHeight = Math.ceil(lineHeight * numOfLines);\n    } else {\n      linkWidth = totalLineWidth;\n      linkHeight = lineHeight;\n    }\n\n    this.text(text, x, y, options);\n\n    //TODO We really need the text baseline height to do this correctly.\n    // Or ability to draw text on top, bottom, center, or baseline.\n    y += lineHeight * 0.2;\n    //handle x position based on the align option\n    if (options.align === \"center\") {\n      x = x - totalLineWidth / 2; //since starting from center move the x position by half of text width\n    }\n    if (options.align === \"right\") {\n      x = x - totalLineWidth;\n    }\n    this.link(x, y - lineHeight, linkWidth, linkHeight, options);\n    return totalLineWidth;\n  };\n\n  //TODO move into external library\n  /**\n   * @name getTextWidth\n   * @function\n   * @param {string} text\n   * @returns {number} txtWidth\n   */\n  jsPDFAPI.getTextWidth = function(text) {\n    var fontSize = this.internal.getFontSize();\n    var txtWidth =\n      (this.getStringUnitWidth(text) * fontSize) / this.internal.scaleFactor;\n    return txtWidth;\n  };\n\n  return this;\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF arabic parser PlugIn\n *\n * @name arabic\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * Arabic shape substitutions: char code => (isolated, final, initial, medial).\n   * Arabic Substition A\n   */\n  var arabicSubstitionA = {\n    0x0621: [0xfe80], // ARABIC LETTER HAMZA\n    0x0622: [0xfe81, 0xfe82], // ARABIC LETTER ALEF WITH MADDA ABOVE\n    0x0623: [0xfe83, 0xfe84], // ARABIC LETTER ALEF WITH HAMZA ABOVE\n    0x0624: [0xfe85, 0xfe86], // ARABIC LETTER WAW WITH HAMZA ABOVE\n    0x0625: [0xfe87, 0xfe88], // ARABIC LETTER ALEF WITH HAMZA BELOW\n    0x0626: [0xfe89, 0xfe8a, 0xfe8b, 0xfe8c], // ARABIC LETTER YEH WITH HAMZA ABOVE\n    0x0627: [0xfe8d, 0xfe8e], // ARABIC LETTER ALEF\n    0x0628: [0xfe8f, 0xfe90, 0xfe91, 0xfe92], // ARABIC LETTER BEH\n    0x0629: [0xfe93, 0xfe94], // ARABIC LETTER TEH MARBUTA\n    0x062a: [0xfe95, 0xfe96, 0xfe97, 0xfe98], // ARABIC LETTER TEH\n    0x062b: [0xfe99, 0xfe9a, 0xfe9b, 0xfe9c], // ARABIC LETTER THEH\n    0x062c: [0xfe9d, 0xfe9e, 0xfe9f, 0xfea0], // ARABIC LETTER JEEM\n    0x062d: [0xfea1, 0xfea2, 0xfea3, 0xfea4], // ARABIC LETTER HAH\n    0x062e: [0xfea5, 0xfea6, 0xfea7, 0xfea8], // ARABIC LETTER KHAH\n    0x062f: [0xfea9, 0xfeaa], // ARABIC LETTER DAL\n    0x0630: [0xfeab, 0xfeac], // ARABIC LETTER THAL\n    0x0631: [0xfead, 0xfeae], // ARABIC LETTER REH\n    0x0632: [0xfeaf, 0xfeb0], // ARABIC LETTER ZAIN\n    0x0633: [0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4], // ARABIC LETTER SEEN\n    0x0634: [0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8], // ARABIC LETTER SHEEN\n    0x0635: [0xfeb9, 0xfeba, 0xfebb, 0xfebc], // ARABIC LETTER SAD\n    0x0636: [0xfebd, 0xfebe, 0xfebf, 0xfec0], // ARABIC LETTER DAD\n    0x0637: [0xfec1, 0xfec2, 0xfec3, 0xfec4], // ARABIC LETTER TAH\n    0x0638: [0xfec5, 0xfec6, 0xfec7, 0xfec8], // ARABIC LETTER ZAH\n    0x0639: [0xfec9, 0xfeca, 0xfecb, 0xfecc], // ARABIC LETTER AIN\n    0x063a: [0xfecd, 0xfece, 0xfecf, 0xfed0], // ARABIC LETTER GHAIN\n    0x0641: [0xfed1, 0xfed2, 0xfed3, 0xfed4], // ARABIC LETTER FEH\n    0x0642: [0xfed5, 0xfed6, 0xfed7, 0xfed8], // ARABIC LETTER QAF\n    0x0643: [0xfed9, 0xfeda, 0xfedb, 0xfedc], // ARABIC LETTER KAF\n    0x0644: [0xfedd, 0xfede, 0xfedf, 0xfee0], // ARABIC LETTER LAM\n    0x0645: [0xfee1, 0xfee2, 0xfee3, 0xfee4], // ARABIC LETTER MEEM\n    0x0646: [0xfee5, 0xfee6, 0xfee7, 0xfee8], // ARABIC LETTER NOON\n    0x0647: [0xfee9, 0xfeea, 0xfeeb, 0xfeec], // ARABIC LETTER HEH\n    0x0648: [0xfeed, 0xfeee], // ARABIC LETTER WAW\n    0x0649: [0xfeef, 0xfef0, 64488, 64489], // ARABIC LETTER ALEF MAKSURA\n    0x064a: [0xfef1, 0xfef2, 0xfef3, 0xfef4], // ARABIC LETTER YEH\n    0x0671: [0xfb50, 0xfb51], // ARABIC LETTER ALEF WASLA\n    0x0677: [0xfbdd], // ARABIC LETTER U WITH HAMZA ABOVE\n    0x0679: [0xfb66, 0xfb67, 0xfb68, 0xfb69], // ARABIC LETTER TTEH\n    0x067a: [0xfb5e, 0xfb5f, 0xfb60, 0xfb61], // ARABIC LETTER TTEHEH\n    0x067b: [0xfb52, 0xfb53, 0xfb54, 0xfb55], // ARABIC LETTER BEEH\n    0x067e: [0xfb56, 0xfb57, 0xfb58, 0xfb59], // ARABIC LETTER PEH\n    0x067f: [0xfb62, 0xfb63, 0xfb64, 0xfb65], // ARABIC LETTER TEHEH\n    0x0680: [0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d], // ARABIC LETTER BEHEH\n    0x0683: [0xfb76, 0xfb77, 0xfb78, 0xfb79], // ARABIC LETTER NYEH\n    0x0684: [0xfb72, 0xfb73, 0xfb74, 0xfb75], // ARABIC LETTER DYEH\n    0x0686: [0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d], // ARABIC LETTER TCHEH\n    0x0687: [0xfb7e, 0xfb7f, 0xfb80, 0xfb81], // ARABIC LETTER TCHEHEH\n    0x0688: [0xfb88, 0xfb89], // ARABIC LETTER DDAL\n    0x068c: [0xfb84, 0xfb85], // ARABIC LETTER DAHAL\n    0x068d: [0xfb82, 0xfb83], // ARABIC LETTER DDAHAL\n    0x068e: [0xfb86, 0xfb87], // ARABIC LETTER DUL\n    0x0691: [0xfb8c, 0xfb8d], // ARABIC LETTER RREH\n    0x0698: [0xfb8a, 0xfb8b], // ARABIC LETTER JEH\n    0x06a4: [0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d], // ARABIC LETTER VEH\n    0x06a6: [0xfb6e, 0xfb6f, 0xfb70, 0xfb71], // ARABIC LETTER PEHEH\n    0x06a9: [0xfb8e, 0xfb8f, 0xfb90, 0xfb91], // ARABIC LETTER KEHEH\n    0x06ad: [0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6], // ARABIC LETTER NG\n    0x06af: [0xfb92, 0xfb93, 0xfb94, 0xfb95], // ARABIC LETTER GAF\n    0x06b1: [0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d], // ARABIC LETTER NGOEH\n    0x06b3: [0xfb96, 0xfb97, 0xfb98, 0xfb99], // ARABIC LETTER GUEH\n    0x06ba: [0xfb9e, 0xfb9f], // ARABIC LETTER NOON GHUNNA\n    0x06bb: [0xfba0, 0xfba1, 0xfba2, 0xfba3], // ARABIC LETTER RNOON\n    0x06be: [0xfbaa, 0xfbab, 0xfbac, 0xfbad], // ARABIC LETTER HEH DOACHASHMEE\n    0x06c0: [0xfba4, 0xfba5], // ARABIC LETTER HEH WITH YEH ABOVE\n    0x06c1: [0xfba6, 0xfba7, 0xfba8, 0xfba9], // ARABIC LETTER HEH GOAL\n    0x06c5: [0xfbe0, 0xfbe1], // ARABIC LETTER KIRGHIZ OE\n    0x06c6: [0xfbd9, 0xfbda], // ARABIC LETTER OE\n    0x06c7: [0xfbd7, 0xfbd8], // ARABIC LETTER U\n    0x06c8: [0xfbdb, 0xfbdc], // ARABIC LETTER YU\n    0x06c9: [0xfbe2, 0xfbe3], // ARABIC LETTER KIRGHIZ YU\n    0x06cb: [0xfbde, 0xfbdf], // ARABIC LETTER VE\n    0x06cc: [0xfbfc, 0xfbfd, 0xfbfe, 0xfbff], // ARABIC LETTER FARSI YEH\n    0x06d0: [0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7], //ARABIC LETTER E\n    0x06d2: [0xfbae, 0xfbaf], // ARABIC LETTER YEH BARREE\n    0x06d3: [0xfbb0, 0xfbb1] // ARABIC LETTER YEH BARREE WITH HAMZA ABOVE\n  };\n\n  /*\n    var ligaturesSubstitutionA = {\n        0xFBEA: []// ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM\n    };\n    */\n\n  var ligatures = {\n    0xfedf: {\n      0xfe82: 0xfef5, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM\n      0xfe84: 0xfef7, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM\n      0xfe88: 0xfef9, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM\n      0xfe8e: 0xfefb // ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM\n    },\n    0xfee0: {\n      0xfe82: 0xfef6, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM\n      0xfe84: 0xfef8, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM\n      0xfe88: 0xfefa, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM\n      0xfe8e: 0xfefc // ARABIC LIGATURE LAM WITH ALEF FINAL FORM\n    },\n    0xfe8d: { 0xfedf: { 0xfee0: { 0xfeea: 0xfdf2 } } }, // ALLAH\n    0x0651: {\n      0x064c: 0xfc5e, // Shadda + Dammatan\n      0x064d: 0xfc5f, // Shadda + Kasratan\n      0x064e: 0xfc60, // Shadda + Fatha\n      0x064f: 0xfc61, // Shadda + Damma\n      0x0650: 0xfc62 // Shadda + Kasra\n    }\n  };\n\n  var arabic_diacritics = {\n    1612: 64606, // Shadda + Dammatan\n    1613: 64607, // Shadda + Kasratan\n    1614: 64608, // Shadda + Fatha\n    1615: 64609, // Shadda + Damma\n    1616: 64610 // Shadda + Kasra\n  };\n\n  var alfletter = [1570, 1571, 1573, 1575];\n\n  var noChangeInForm = -1;\n  var isolatedForm = 0;\n  var finalForm = 1;\n  var initialForm = 2;\n  var medialForm = 3;\n\n  jsPDFAPI.__arabicParser__ = {};\n\n  //private\n  var isInArabicSubstitutionA = (jsPDFAPI.__arabicParser__.isInArabicSubstitutionA = function(\n    letter\n  ) {\n    return typeof arabicSubstitionA[letter.charCodeAt(0)] !== \"undefined\";\n  });\n\n  var isArabicLetter = (jsPDFAPI.__arabicParser__.isArabicLetter = function(\n    letter\n  ) {\n    return (\n      typeof letter === \"string\" &&\n      /^[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(\n        letter\n      )\n    );\n  });\n\n  var isArabicEndLetter = (jsPDFAPI.__arabicParser__.isArabicEndLetter = function(\n    letter\n  ) {\n    return (\n      isArabicLetter(letter) &&\n      isInArabicSubstitutionA(letter) &&\n      arabicSubstitionA[letter.charCodeAt(0)].length <= 2\n    );\n  });\n\n  var isArabicAlfLetter = (jsPDFAPI.__arabicParser__.isArabicAlfLetter = function(\n    letter\n  ) {\n    return (\n      isArabicLetter(letter) && alfletter.indexOf(letter.charCodeAt(0)) >= 0\n    );\n  });\n\n  jsPDFAPI.__arabicParser__.arabicLetterHasIsolatedForm = function(letter) {\n    return (\n      isArabicLetter(letter) &&\n      isInArabicSubstitutionA(letter) &&\n      arabicSubstitionA[letter.charCodeAt(0)].length >= 1\n    );\n  };\n\n  var arabicLetterHasFinalForm = (jsPDFAPI.__arabicParser__.arabicLetterHasFinalForm = function(\n    letter\n  ) {\n    return (\n      isArabicLetter(letter) &&\n      isInArabicSubstitutionA(letter) &&\n      arabicSubstitionA[letter.charCodeAt(0)].length >= 2\n    );\n  });\n\n  jsPDFAPI.__arabicParser__.arabicLetterHasInitialForm = function(letter) {\n    return (\n      isArabicLetter(letter) &&\n      isInArabicSubstitutionA(letter) &&\n      arabicSubstitionA[letter.charCodeAt(0)].length >= 3\n    );\n  };\n\n  var arabicLetterHasMedialForm = (jsPDFAPI.__arabicParser__.arabicLetterHasMedialForm = function(\n    letter\n  ) {\n    return (\n      isArabicLetter(letter) &&\n      isInArabicSubstitutionA(letter) &&\n      arabicSubstitionA[letter.charCodeAt(0)].length == 4\n    );\n  });\n\n  var resolveLigatures = (jsPDFAPI.__arabicParser__.resolveLigatures = function(\n    letters\n  ) {\n    var i = 0;\n    var tmpLigatures = ligatures;\n    var result = \"\";\n    var effectedLetters = 0;\n\n    for (i = 0; i < letters.length; i += 1) {\n      if (typeof tmpLigatures[letters.charCodeAt(i)] !== \"undefined\") {\n        effectedLetters++;\n        tmpLigatures = tmpLigatures[letters.charCodeAt(i)];\n\n        if (typeof tmpLigatures === \"number\") {\n          result += String.fromCharCode(tmpLigatures);\n          tmpLigatures = ligatures;\n          effectedLetters = 0;\n        }\n        if (i === letters.length - 1) {\n          tmpLigatures = ligatures;\n          result += letters.charAt(i - (effectedLetters - 1));\n          i = i - (effectedLetters - 1);\n          effectedLetters = 0;\n        }\n      } else {\n        tmpLigatures = ligatures;\n        result += letters.charAt(i - effectedLetters);\n        i = i - effectedLetters;\n        effectedLetters = 0;\n      }\n    }\n\n    return result;\n  });\n\n  jsPDFAPI.__arabicParser__.isArabicDiacritic = function(letter) {\n    return (\n      letter !== undefined &&\n      arabic_diacritics[letter.charCodeAt(0)] !== undefined\n    );\n  };\n\n  var getCorrectForm = (jsPDFAPI.__arabicParser__.getCorrectForm = function(\n    currentChar,\n    beforeChar,\n    nextChar\n  ) {\n    if (!isArabicLetter(currentChar)) {\n      return -1;\n    }\n\n    if (isInArabicSubstitutionA(currentChar) === false) {\n      return noChangeInForm;\n    }\n    if (\n      !arabicLetterHasFinalForm(currentChar) ||\n      (!isArabicLetter(beforeChar) && !isArabicLetter(nextChar)) ||\n      (!isArabicLetter(nextChar) && isArabicEndLetter(beforeChar)) ||\n      (isArabicEndLetter(currentChar) && !isArabicLetter(beforeChar)) ||\n      (isArabicEndLetter(currentChar) && isArabicAlfLetter(beforeChar)) ||\n      (isArabicEndLetter(currentChar) && isArabicEndLetter(beforeChar))\n    ) {\n      return isolatedForm;\n    }\n\n    if (\n      arabicLetterHasMedialForm(currentChar) &&\n      isArabicLetter(beforeChar) &&\n      !isArabicEndLetter(beforeChar) &&\n      isArabicLetter(nextChar) &&\n      arabicLetterHasFinalForm(nextChar)\n    ) {\n      return medialForm;\n    }\n\n    if (isArabicEndLetter(currentChar) || !isArabicLetter(nextChar)) {\n      return finalForm;\n    }\n    return initialForm;\n  });\n\n  /**\n   * @name processArabic\n   * @function\n   * @param {string} text\n   * @returns {string}\n   */\n  var parseArabic = function(text) {\n    text = text || \"\";\n\n    var result = \"\";\n    var i = 0;\n    var j = 0;\n    var position = 0;\n    var currentLetter = \"\";\n    var prevLetter = \"\";\n    var nextLetter = \"\";\n\n    var words = text.split(\"\\\\s+\");\n    var newWords = [];\n    for (i = 0; i < words.length; i += 1) {\n      newWords.push(\"\");\n      for (j = 0; j < words[i].length; j += 1) {\n        currentLetter = words[i][j];\n        prevLetter = words[i][j - 1];\n        nextLetter = words[i][j + 1];\n        if (isArabicLetter(currentLetter)) {\n          position = getCorrectForm(currentLetter, prevLetter, nextLetter);\n          if (position !== -1) {\n            newWords[i] += String.fromCharCode(\n              arabicSubstitionA[currentLetter.charCodeAt(0)][position]\n            );\n          } else {\n            newWords[i] += currentLetter;\n          }\n        } else {\n          newWords[i] += currentLetter;\n        }\n      }\n\n      newWords[i] = resolveLigatures(newWords[i]);\n    }\n    result = newWords.join(\" \");\n\n    return result;\n  };\n\n  var processArabic = (jsPDFAPI.__arabicParser__.processArabic = jsPDFAPI.processArabic = function() {\n    var text =\n      typeof arguments[0] === \"string\" ? arguments[0] : arguments[0].text;\n    var tmpText = [];\n    var result;\n\n    if (Array.isArray(text)) {\n      var i = 0;\n      tmpText = [];\n      for (i = 0; i < text.length; i += 1) {\n        if (Array.isArray(text[i])) {\n          tmpText.push([parseArabic(text[i][0]), text[i][1], text[i][2]]);\n        } else {\n          tmpText.push([parseArabic(text[i])]);\n        }\n      }\n      result = tmpText;\n    } else {\n      result = parseArabic(text);\n    }\n    if (typeof arguments[0] === \"string\") {\n      return result;\n    } else {\n      arguments[0].text = result;\n      return arguments[0];\n    }\n  });\n\n  jsPDFAPI.events.push([\"preProcessText\", processArabic]);\n})(jsPDF.API);\n", "/** @license\n * jsPDF Autoprint Plugin\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name autoprint\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * Makes the PDF automatically open the print-Dialog when opened in a PDF-viewer.\n   *\n   * @name autoPrint\n   * @function\n   * @param {Object} options (optional) Set the attribute variant to 'non-conform' (default) or 'javascript' to activate different methods of automatic printing when opening in a PDF-viewer .\n   * @returns {jsPDF}\n   * @example\n   * var doc = new jsPDF();\n   * doc.text(10, 10, 'This is a test');\n   * doc.autoPrint({variant: 'non-conform'});\n   * doc.save('autoprint.pdf');\n   */\n  jsPDFAPI.autoPrint = function(options) {\n    \"use strict\";\n    var refAutoPrintTag;\n    options = options || {};\n    options.variant = options.variant || \"non-conform\";\n\n    switch (options.variant) {\n      case \"javascript\":\n        //https://github.com/Rob--W/pdf.js/commit/c676ecb5a0f54677b9f3340c3ef2cf42225453bb\n        this.addJS(\"print({});\");\n        break;\n      case \"non-conform\":\n      default:\n        this.internal.events.subscribe(\"postPutResources\", function() {\n          refAutoPrintTag = this.internal.newObject();\n          this.internal.out(\"<<\");\n          this.internal.out(\"/S /Named\");\n          this.internal.out(\"/Type /Action\");\n          this.internal.out(\"/N /Print\");\n          this.internal.out(\">>\");\n          this.internal.out(\"endobj\");\n        });\n\n        this.internal.events.subscribe(\"putCatalog\", function() {\n          this.internal.out(\"/OpenAction \" + refAutoPrintTag + \" 0 R\");\n        });\n        break;\n    }\n    return this;\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Canvas PlugIn\n * This plugin mimics the HTML5 Canvas\n *\n * The goal is to provide a way for current canvas users to print directly to a PDF.\n * @name canvas\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * @class Canvas\n   * @classdesc A Canvas Wrapper for jsPDF\n   */\n  var Canvas = function() {\n    var jsPdfInstance = undefined;\n    Object.defineProperty(this, \"pdf\", {\n      get: function() {\n        return jsPdfInstance;\n      },\n      set: function(value) {\n        jsPdfInstance = value;\n      }\n    });\n\n    var _width = 150;\n    /**\n     * The height property is a positive integer reflecting the height HTML attribute of the <canvas> element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 150 is used.\n     * This is one of the two properties, the other being width, that controls the size of the canvas.\n     *\n     * @name width\n     */\n    Object.defineProperty(this, \"width\", {\n      get: function() {\n        return _width;\n      },\n      set: function(value) {\n        if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n          _width = 150;\n        } else {\n          _width = value;\n        }\n        if (this.getContext(\"2d\").pageWrapXEnabled) {\n          this.getContext(\"2d\").pageWrapX = _width + 1;\n        }\n      }\n    });\n\n    var _height = 300;\n    /**\n     * The width property is a positive integer reflecting the width HTML attribute of the <canvas> element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 300 is used.\n     * This is one of the two properties, the other being height, that controls the size of the canvas.\n     *\n     * @name height\n     */\n    Object.defineProperty(this, \"height\", {\n      get: function() {\n        return _height;\n      },\n      set: function(value) {\n        if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n          _height = 300;\n        } else {\n          _height = value;\n        }\n        if (this.getContext(\"2d\").pageWrapYEnabled) {\n          this.getContext(\"2d\").pageWrapY = _height + 1;\n        }\n      }\n    });\n\n    var _childNodes = [];\n    Object.defineProperty(this, \"childNodes\", {\n      get: function() {\n        return _childNodes;\n      },\n      set: function(value) {\n        _childNodes = value;\n      }\n    });\n\n    var _style = {};\n    Object.defineProperty(this, \"style\", {\n      get: function() {\n        return _style;\n      },\n      set: function(value) {\n        _style = value;\n      }\n    });\n\n    Object.defineProperty(this, \"parentNode\", {});\n  };\n\n  /**\n   * The getContext() method returns a drawing context on the canvas, or null if the context identifier is not supported.\n   *\n   * @name getContext\n   * @function\n   * @param {string} contextType Is a String containing the context identifier defining the drawing context associated to the canvas. Possible value is \"2d\", leading to the creation of a Context2D object representing a two-dimensional rendering context.\n   * @param {object} contextAttributes\n   */\n  Canvas.prototype.getContext = function(contextType, contextAttributes) {\n    contextType = contextType || \"2d\";\n    var key;\n\n    if (contextType !== \"2d\") {\n      return null;\n    }\n    for (key in contextAttributes) {\n      if (this.pdf.context2d.hasOwnProperty(key)) {\n        this.pdf.context2d[key] = contextAttributes[key];\n      }\n    }\n    this.pdf.context2d._canvas = this;\n    return this.pdf.context2d;\n  };\n\n  /**\n   * The toDataURL() method is just a stub to throw an error if accidently called.\n   *\n   * @name toDataURL\n   * @function\n   */\n  Canvas.prototype.toDataURL = function() {\n    throw new Error(\"toDataURL is not implemented.\");\n  };\n\n  jsPDFAPI.events.push([\n    \"initialized\",\n    function() {\n      this.canvas = new Canvas();\n      this.canvas.pdf = this;\n    }\n  ]);\n\n  return this;\n})(jsPDF.API);\n", "/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n *               2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n *               2013 Lee Driscoll, https://github.com/lsdriscoll\n *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n *               2014 James Hall, james@parall.ax\n *               2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name cell\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var NO_MARGINS = { left: 0, top: 0, bottom: 0, right: 0 };\n\n  var px2pt = (0.264583 * 72) / 25.4;\n  var printingHeaderRow = false;\n\n  var _initialize = function() {\n    if (typeof this.internal.__cell__ === \"undefined\") {\n      this.internal.__cell__ = {};\n      this.internal.__cell__.padding = 3;\n      this.internal.__cell__.headerFunction = undefined;\n      this.internal.__cell__.margins = Object.assign({}, NO_MARGINS);\n      this.internal.__cell__.margins.width = this.getPageWidth();\n      _reset.call(this);\n    }\n  };\n\n  var _reset = function() {\n    this.internal.__cell__.lastCell = new Cell();\n    this.internal.__cell__.pages = 1;\n  };\n\n  var Cell = function() {\n    var _x = arguments[0];\n    Object.defineProperty(this, \"x\", {\n      enumerable: true,\n      get: function() {\n        return _x;\n      },\n      set: function(value) {\n        _x = value;\n      }\n    });\n    var _y = arguments[1];\n    Object.defineProperty(this, \"y\", {\n      enumerable: true,\n      get: function() {\n        return _y;\n      },\n      set: function(value) {\n        _y = value;\n      }\n    });\n    var _width = arguments[2];\n    Object.defineProperty(this, \"width\", {\n      enumerable: true,\n      get: function() {\n        return _width;\n      },\n      set: function(value) {\n        _width = value;\n      }\n    });\n    var _height = arguments[3];\n    Object.defineProperty(this, \"height\", {\n      enumerable: true,\n      get: function() {\n        return _height;\n      },\n      set: function(value) {\n        _height = value;\n      }\n    });\n    var _text = arguments[4];\n    Object.defineProperty(this, \"text\", {\n      enumerable: true,\n      get: function() {\n        return _text;\n      },\n      set: function(value) {\n        _text = value;\n      }\n    });\n    var _lineNumber = arguments[5];\n    Object.defineProperty(this, \"lineNumber\", {\n      enumerable: true,\n      get: function() {\n        return _lineNumber;\n      },\n      set: function(value) {\n        _lineNumber = value;\n      }\n    });\n    var _align = arguments[6];\n    Object.defineProperty(this, \"align\", {\n      enumerable: true,\n      get: function() {\n        return _align;\n      },\n      set: function(value) {\n        _align = value;\n      }\n    });\n\n    return this;\n  };\n\n  Cell.prototype.clone = function() {\n    return new Cell(\n      this.x,\n      this.y,\n      this.width,\n      this.height,\n      this.text,\n      this.lineNumber,\n      this.align\n    );\n  };\n\n  Cell.prototype.toArray = function() {\n    return [\n      this.x,\n      this.y,\n      this.width,\n      this.height,\n      this.text,\n      this.lineNumber,\n      this.align\n    ];\n  };\n\n  /**\n   * @name setHeaderFunction\n   * @function\n   * @param {function} func\n   */\n  jsPDFAPI.setHeaderFunction = function(func) {\n    _initialize.call(this);\n    this.internal.__cell__.headerFunction =\n      typeof func === \"function\" ? func : undefined;\n    return this;\n  };\n\n  /**\n   * @name getTextDimensions\n   * @function\n   * @param {string} txt\n   * @returns {Object} dimensions\n   */\n  jsPDFAPI.getTextDimensions = function(text, options) {\n    _initialize.call(this);\n    options = options || {};\n    var fontSize = options.fontSize || this.getFontSize();\n    var font = options.font || this.getFont();\n    var scaleFactor = options.scaleFactor || this.internal.scaleFactor;\n    var width = 0;\n    var amountOfLines = 0;\n    var height = 0;\n    var tempWidth = 0;\n    var scope = this;\n\n    if (!Array.isArray(text) && typeof text !== \"string\") {\n      if (typeof text === \"number\") {\n        text = String(text);\n      } else {\n        throw new Error(\n          \"getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.\"\n        );\n      }\n    }\n\n    const maxWidth = options.maxWidth;\n    if (maxWidth > 0) {\n      if (typeof text === \"string\") {\n        text = this.splitTextToSize(text, maxWidth);\n      } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\n        text = text.reduce(function(acc, textLine) {\n          return acc.concat(scope.splitTextToSize(textLine, maxWidth));\n        }, []);\n      }\n    } else {\n      // Without the else clause, it will not work if you do not pass along maxWidth\n      text = Array.isArray(text) ? text : [text];\n    }\n\n    for (var i = 0; i < text.length; i++) {\n      tempWidth = this.getStringUnitWidth(text[i], { font: font }) * fontSize;\n      if (width < tempWidth) {\n        width = tempWidth;\n      }\n    }\n\n    if (width !== 0) {\n      amountOfLines = text.length;\n    }\n\n    width = width / scaleFactor;\n    height = Math.max(\n      (amountOfLines * fontSize * this.getLineHeightFactor() -\n        fontSize * (this.getLineHeightFactor() - 1)) /\n        scaleFactor,\n      0\n    );\n    return { w: width, h: height };\n  };\n\n  /**\n   * @name cellAddPage\n   * @function\n   */\n  jsPDFAPI.cellAddPage = function() {\n    _initialize.call(this);\n\n    this.addPage();\n\n    var margins = this.internal.__cell__.margins || NO_MARGINS;\n    this.internal.__cell__.lastCell = new Cell(\n      margins.left,\n      margins.top,\n      undefined,\n      undefined\n    );\n    this.internal.__cell__.pages += 1;\n\n    return this;\n  };\n\n  /**\n   * @name cell\n   * @function\n   * @param {number} x\n   * @param {number} y\n   * @param {number} width\n   * @param {number} height\n   * @param {string} text\n   * @param {number} lineNumber lineNumber\n   * @param {string} align\n   * @return {jsPDF} jsPDF-instance\n   */\n  var cell = (jsPDFAPI.cell = function() {\n    var currentCell;\n\n    if (arguments[0] instanceof Cell) {\n      currentCell = arguments[0];\n    } else {\n      currentCell = new Cell(\n        arguments[0],\n        arguments[1],\n        arguments[2],\n        arguments[3],\n        arguments[4],\n        arguments[5],\n        arguments[6]\n      );\n    }\n    _initialize.call(this);\n    var lastCell = this.internal.__cell__.lastCell;\n    var padding = this.internal.__cell__.padding;\n    var margins = this.internal.__cell__.margins || NO_MARGINS;\n    var tableHeaderRow = this.internal.__cell__.tableHeaderRow;\n    var printHeaders = this.internal.__cell__.printHeaders;\n    // If this is not the first cell, we must change its position\n    if (typeof lastCell.lineNumber !== \"undefined\") {\n      if (lastCell.lineNumber === currentCell.lineNumber) {\n        //Same line\n        currentCell.x = (lastCell.x || 0) + (lastCell.width || 0);\n        currentCell.y = lastCell.y || 0;\n      } else {\n        //New line\n        if (\n          lastCell.y + lastCell.height + currentCell.height + margins.bottom >\n          this.getPageHeight()\n        ) {\n          this.cellAddPage();\n          currentCell.y = margins.top;\n          if (printHeaders && tableHeaderRow) {\n            this.printHeaderRow(currentCell.lineNumber, true);\n            currentCell.y += tableHeaderRow[0].height;\n          }\n        } else {\n          currentCell.y = lastCell.y + lastCell.height || currentCell.y;\n        }\n      }\n    }\n\n    if (typeof currentCell.text[0] !== \"undefined\") {\n      this.rect(\n        currentCell.x,\n        currentCell.y,\n        currentCell.width,\n        currentCell.height,\n        printingHeaderRow === true ? \"FD\" : undefined\n      );\n      if (currentCell.align === \"right\") {\n        this.text(\n          currentCell.text,\n          currentCell.x + currentCell.width - padding,\n          currentCell.y + padding,\n          { align: \"right\", baseline: \"top\" }\n        );\n      } else if (currentCell.align === \"center\") {\n        this.text(\n          currentCell.text,\n          currentCell.x + currentCell.width / 2,\n          currentCell.y + padding,\n          {\n            align: \"center\",\n            baseline: \"top\",\n            maxWidth: currentCell.width - padding - padding\n          }\n        );\n      } else {\n        this.text(\n          currentCell.text,\n          currentCell.x + padding,\n          currentCell.y + padding,\n          {\n            align: \"left\",\n            baseline: \"top\",\n            maxWidth: currentCell.width - padding - padding\n          }\n        );\n      }\n    }\n    this.internal.__cell__.lastCell = currentCell;\n    return this;\n  });\n\n  /**\n     * Create a table from a set of data.\n     * @name table\n     * @function\n     * @param {Integer} [x] : left-position for top-left corner of table\n     * @param {Integer} [y] top-position for top-left corner of table\n     * @param {Object[]} [data] An array of objects containing key-value pairs corresponding to a row of data.\n     * @param {String[]} [headers] Omit or null to auto-generate headers at a performance cost\n\n     * @param {Object} [config.printHeaders] True to print column headers at the top of every page\n     * @param {Object} [config.autoSize] True to dynamically set the column widths to match the widest cell value\n     * @param {Object} [config.margins] margin values for left, top, bottom, and width\n     * @param {Object} [config.fontSize] Integer fontSize to use (optional)\n     * @param {Object} [config.padding] cell-padding in pt to use (optional)\n     * @param {Object} [config.headerBackgroundColor] default is #c8c8c8 (optional)\n     * @param {Object} [config.headerTextColor] default is #000 (optional)\n     * @param {Object} [config.rowStart] callback to handle before print each row (optional)\n     * @param {Object} [config.cellStart] callback to handle before print each cell (optional)\n     * @returns {jsPDF} jsPDF-instance\n     */\n\n  jsPDFAPI.table = function(x, y, data, headers, config) {\n    _initialize.call(this);\n    if (!data) {\n      throw new Error(\"No data for PDF table.\");\n    }\n\n    config = config || {};\n\n    var headerNames = [],\n      headerLabels = [],\n      headerAligns = [],\n      i,\n      columnMatrix = {},\n      columnWidths = {},\n      column,\n      columnMinWidths = [],\n      j,\n      tableHeaderConfigs = [],\n      //set up defaults. If a value is provided in config, defaults will be overwritten:\n      autoSize = config.autoSize || false,\n      printHeaders = config.printHeaders === false ? false : true,\n      fontSize =\n        config.css && typeof config.css[\"font-size\"] !== \"undefined\"\n          ? config.css[\"font-size\"] * 16\n          : config.fontSize || 12,\n      margins =\n        config.margins ||\n        Object.assign({ width: this.getPageWidth() }, NO_MARGINS),\n      padding = typeof config.padding === \"number\" ? config.padding : 3,\n      headerBackgroundColor = config.headerBackgroundColor || \"#c8c8c8\",\n      headerTextColor = config.headerTextColor || \"#000\";\n\n    _reset.call(this);\n\n    this.internal.__cell__.printHeaders = printHeaders;\n    this.internal.__cell__.margins = margins;\n    this.internal.__cell__.table_font_size = fontSize;\n    this.internal.__cell__.padding = padding;\n    this.internal.__cell__.headerBackgroundColor = headerBackgroundColor;\n    this.internal.__cell__.headerTextColor = headerTextColor;\n    this.setFontSize(fontSize);\n\n    // Set header values\n    if (headers === undefined || headers === null) {\n      // No headers defined so we derive from data\n      headerNames = Object.keys(data[0]);\n      headerLabels = headerNames;\n      headerAligns = headerNames.map(function() {\n        return \"left\";\n      });\n    } else if (Array.isArray(headers) && typeof headers[0] === \"object\") {\n      headerNames = headers.map(function(header) {\n        return header.name;\n      });\n      headerLabels = headers.map(function(header) {\n        return header.prompt || header.name || \"\";\n      });\n      headerAligns = headers.map(function(header) {\n        return header.align || \"left\";\n      });\n      // Split header configs into names and prompts\n      for (i = 0; i < headers.length; i += 1) {\n        columnWidths[headers[i].name] = headers[i].width * px2pt;\n      }\n    } else if (Array.isArray(headers) && typeof headers[0] === \"string\") {\n      headerNames = headers;\n      headerLabels = headerNames;\n      headerAligns = headerNames.map(function() {\n        return \"left\";\n      });\n    }\n\n    if (\n      autoSize ||\n      (Array.isArray(headers) && typeof headers[0] === \"string\")\n    ) {\n      var headerName;\n      for (i = 0; i < headerNames.length; i += 1) {\n        headerName = headerNames[i];\n\n        // Create a matrix of columns e.g., {column_title: [row1_Record, row2_Record]}\n\n        columnMatrix[headerName] = data.map(function(rec) {\n          return rec[headerName];\n        });\n\n        // get header width\n        this.setFont(undefined, \"bold\");\n        columnMinWidths.push(\n          this.getTextDimensions(headerLabels[i], {\n            fontSize: this.internal.__cell__.table_font_size,\n            scaleFactor: this.internal.scaleFactor\n          }).w\n        );\n        column = columnMatrix[headerName];\n\n        // get cell widths\n        this.setFont(undefined, \"normal\");\n        for (j = 0; j < column.length; j += 1) {\n          columnMinWidths.push(\n            this.getTextDimensions(column[j], {\n              fontSize: this.internal.__cell__.table_font_size,\n              scaleFactor: this.internal.scaleFactor\n            }).w\n          );\n        }\n\n        // get final column width\n        columnWidths[headerName] =\n          Math.max.apply(null, columnMinWidths) + padding + padding;\n\n        //have to reset\n        columnMinWidths = [];\n      }\n    }\n\n    // -- Construct the table\n\n    if (printHeaders) {\n      var row = {};\n      for (i = 0; i < headerNames.length; i += 1) {\n        row[headerNames[i]] = {};\n        row[headerNames[i]].text = headerLabels[i];\n        row[headerNames[i]].align = headerAligns[i];\n      }\n\n      var rowHeight = calculateLineHeight.call(this, row, columnWidths);\n\n      // Construct the header row\n      tableHeaderConfigs = headerNames.map(function(value) {\n        return new Cell(\n          x,\n          y,\n          columnWidths[value],\n          rowHeight,\n          row[value].text,\n          undefined,\n          row[value].align\n        );\n      });\n\n      // Store the table header config\n      this.setTableHeaderRow(tableHeaderConfigs);\n\n      // Print the header for the start of the table\n      this.printHeaderRow(1, false);\n    }\n\n    // Construct the data rows\n\n    var align = headers.reduce(function(pv, cv) {\n      pv[cv.name] = cv.align;\n      return pv;\n    }, {});\n    for (i = 0; i < data.length; i += 1) {\n      if (\"rowStart\" in config && config.rowStart instanceof Function) {\n        config.rowStart(\n          {\n            row: i,\n            data: data[i]\n          },\n          this\n        );\n      }\n      var lineHeight = calculateLineHeight.call(this, data[i], columnWidths);\n\n      for (j = 0; j < headerNames.length; j += 1) {\n        var cellData = data[i][headerNames[j]];\n        if (\"cellStart\" in config && config.cellStart instanceof Function) {\n          config.cellStart(\n            {\n              row: i,\n              col: j,\n              data: cellData\n            },\n            this\n          );\n        }\n        cell.call(\n          this,\n          new Cell(\n            x,\n            y,\n            columnWidths[headerNames[j]],\n            lineHeight,\n            cellData,\n            i + 2,\n            align[headerNames[j]]\n          )\n        );\n      }\n    }\n    this.internal.__cell__.table_x = x;\n    this.internal.__cell__.table_y = y;\n    return this;\n  };\n\n  /**\n   * Calculate the height for containing the highest column\n   *\n   * @name calculateLineHeight\n   * @function\n   * @param {Object[]} model is the line of data we want to calculate the height of\n   * @param {Integer[]} columnWidths is size of each column\n   * @returns {number} lineHeight\n   * @private\n   */\n  var calculateLineHeight = function calculateLineHeight(model, columnWidths) {\n    var padding = this.internal.__cell__.padding;\n    var fontSize = this.internal.__cell__.table_font_size;\n    var scaleFactor = this.internal.scaleFactor;\n\n    return Object.keys(model)\n      .map(function(key) {\n        var value = model[key];\n        return this.splitTextToSize(\n          value.hasOwnProperty(\"text\") ? value.text : value,\n          columnWidths[key] - padding - padding\n        );\n      }, this)\n      .map(function(value) {\n        return (\n          (this.getLineHeightFactor() * value.length * fontSize) / scaleFactor +\n          padding +\n          padding\n        );\n      }, this)\n      .reduce(function(pv, cv) {\n        return Math.max(pv, cv);\n      }, 0);\n  };\n\n  /**\n   * Store the config for outputting a table header\n   *\n   * @name setTableHeaderRow\n   * @function\n   * @param {Object[]} config\n   * An array of cell configs that would define a header row: Each config matches the config used by jsPDFAPI.cell\n   * except the lineNumber parameter is excluded\n   */\n  jsPDFAPI.setTableHeaderRow = function(config) {\n    _initialize.call(this);\n    this.internal.__cell__.tableHeaderRow = config;\n  };\n\n  /**\n   * Output the store header row\n   *\n   * @name printHeaderRow\n   * @function\n   * @param {number} lineNumber The line number to output the header at\n   * @param {boolean} new_page\n   */\n  jsPDFAPI.printHeaderRow = function(lineNumber, new_page) {\n    _initialize.call(this);\n    if (!this.internal.__cell__.tableHeaderRow) {\n      throw new Error(\"Property tableHeaderRow does not exist.\");\n    }\n\n    var tableHeaderCell;\n\n    printingHeaderRow = true;\n    if (typeof this.internal.__cell__.headerFunction === \"function\") {\n      var position = this.internal.__cell__.headerFunction(\n        this,\n        this.internal.__cell__.pages\n      );\n      this.internal.__cell__.lastCell = new Cell(\n        position[0],\n        position[1],\n        position[2],\n        position[3],\n        undefined,\n        -1\n      );\n    }\n    this.setFont(undefined, \"bold\");\n\n    var tempHeaderConf = [];\n    for (var i = 0; i < this.internal.__cell__.tableHeaderRow.length; i += 1) {\n      tableHeaderCell = this.internal.__cell__.tableHeaderRow[i].clone();\n      if (new_page) {\n        tableHeaderCell.y = this.internal.__cell__.margins.top || 0;\n        tempHeaderConf.push(tableHeaderCell);\n      }\n      tableHeaderCell.lineNumber = lineNumber;\n      var currentTextColor = this.getTextColor();\n      this.setTextColor(this.internal.__cell__.headerTextColor);\n      this.setFillColor(this.internal.__cell__.headerBackgroundColor);\n      cell.call(this, tableHeaderCell);\n      this.setTextColor(currentTextColor);\n    }\n    if (tempHeaderConf.length > 0) {\n      this.setTableHeaderRow(tempHeaderConf);\n    }\n    this.setFont(undefined, \"normal\");\n    printingHeaderRow = false;\n  };\n})(jsPDF.API);\n", "/** @license\r\n * MIT license.\r\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\r\n *               2014 Diego Casorran, https://github.com/diegocr\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n * ====================================================================\r\n */\r\n\r\nimport { jsPDF } from \"../jspdf.js\";\r\n\r\n/**\r\n * jsPDF split_text_to_size plugin\r\n *\r\n * @name split_text_to_size\r\n * @module\r\n */\r\n(function(API) {\r\n  \"use strict\";\r\n  /**\r\n   * Returns an array of length matching length of the 'word' string, with each\r\n   * cell occupied by the width of the char in that position.\r\n   *\r\n   * @name getCharWidthsArray\r\n   * @function\r\n   * @param {string} text\r\n   * @param {Object} options\r\n   * @returns {Array}\r\n   */\r\n  var getCharWidthsArray = (API.getCharWidthsArray = function(text, options) {\r\n    options = options || {};\r\n\r\n    var activeFont = options.font || this.internal.getFont();\r\n    var fontSize = options.fontSize || this.internal.getFontSize();\r\n    var charSpace = options.charSpace || this.internal.getCharSpace();\r\n\r\n    var widths = options.widths\r\n      ? options.widths\r\n      : activeFont.metadata.Unicode.widths;\r\n    var widthsFractionOf = widths.fof ? widths.fof : 1;\r\n    var kerning = options.kerning\r\n      ? options.kerning\r\n      : activeFont.metadata.Unicode.kerning;\r\n    var kerningFractionOf = kerning.fof ? kerning.fof : 1;\r\n    var doKerning = options.doKerning === false ? false : true;\r\n    var kerningValue = 0;\r\n\r\n    var i;\r\n    var length = text.length;\r\n    var char_code;\r\n    var prior_char_code = 0; //for kerning\r\n    var default_char_width = widths[0] || widthsFractionOf;\r\n    var output = [];\r\n\r\n    for (i = 0; i < length; i++) {\r\n      char_code = text.charCodeAt(i);\r\n\r\n      if (typeof activeFont.metadata.widthOfString === \"function\") {\r\n        output.push(\r\n          (activeFont.metadata.widthOfGlyph(\r\n            activeFont.metadata.characterToGlyph(char_code)\r\n          ) +\r\n            charSpace * (1000 / fontSize) || 0) / 1000\r\n        );\r\n      } else {\r\n        if (\r\n          doKerning &&\r\n          typeof kerning[char_code] === \"object\" &&\r\n          !isNaN(parseInt(kerning[char_code][prior_char_code], 10))\r\n        ) {\r\n          kerningValue =\r\n            kerning[char_code][prior_char_code] / kerningFractionOf;\r\n        } else {\r\n          kerningValue = 0;\r\n        }\r\n        output.push(\r\n          (widths[char_code] || default_char_width) / widthsFractionOf +\r\n            kerningValue\r\n        );\r\n      }\r\n      prior_char_code = char_code;\r\n    }\r\n\r\n    return output;\r\n  });\r\n\r\n  /**\r\n   * Returns a widths of string in a given font, if the font size is set as 1 point.\r\n   *\r\n   * In other words, this is \"proportional\" value. For 1 unit of font size, the length\r\n   * of the string will be that much.\r\n   *\r\n   * Multiply by font size to get actual width in *points*\r\n   * Then divide by 72 to get inches or divide by (72/25.4) to get 'mm' etc.\r\n   *\r\n   * @name getStringUnitWidth\r\n   * @public\r\n   * @function\r\n   * @param {string} text\r\n   * @param {string} options\r\n   * @returns {number} result\r\n   */\r\n  var getStringUnitWidth = (API.getStringUnitWidth = function(text, options) {\r\n    options = options || {};\r\n\r\n    var fontSize = options.fontSize || this.internal.getFontSize();\r\n    var font = options.font || this.internal.getFont();\r\n    var charSpace = options.charSpace || this.internal.getCharSpace();\r\n    var result = 0;\r\n\r\n    if (API.processArabic) {\r\n      text = API.processArabic(text);\r\n    }\r\n\r\n    if (typeof font.metadata.widthOfString === \"function\") {\r\n      result =\r\n        font.metadata.widthOfString(text, fontSize, charSpace) / fontSize;\r\n    } else {\r\n      result = getCharWidthsArray\r\n        .apply(this, arguments)\r\n        .reduce(function(pv, cv) {\r\n          return pv + cv;\r\n        }, 0);\r\n    }\r\n    return result;\r\n  });\r\n\r\n  /**\r\n  returns array of lines\r\n  */\r\n  var splitLongWord = function(word, widths_array, firstLineMaxLen, maxLen) {\r\n    var answer = [];\r\n\r\n    // 1st, chop off the piece that can fit on the hanging line.\r\n    var i = 0,\r\n      l = word.length,\r\n      workingLen = 0;\r\n    while (i !== l && workingLen + widths_array[i] < firstLineMaxLen) {\r\n      workingLen += widths_array[i];\r\n      i++;\r\n    }\r\n    // this is first line.\r\n    answer.push(word.slice(0, i));\r\n\r\n    // 2nd. Split the rest into maxLen pieces.\r\n    var startOfLine = i;\r\n    workingLen = 0;\r\n    while (i !== l) {\r\n      if (workingLen + widths_array[i] > maxLen) {\r\n        answer.push(word.slice(startOfLine, i));\r\n        workingLen = 0;\r\n        startOfLine = i;\r\n      }\r\n      workingLen += widths_array[i];\r\n      i++;\r\n    }\r\n    if (startOfLine !== i) {\r\n      answer.push(word.slice(startOfLine, i));\r\n    }\r\n\r\n    return answer;\r\n  };\r\n\r\n  // Note, all sizing inputs for this function must be in \"font measurement units\"\r\n  // By default, for PDF, it's \"point\".\r\n  var splitParagraphIntoLines = function(text, maxlen, options) {\r\n    // at this time works only on Western scripts, ones with space char\r\n    // separating the words. Feel free to expand.\r\n\r\n    if (!options) {\r\n      options = {};\r\n    }\r\n\r\n    var line = [],\r\n      lines = [line],\r\n      line_length = options.textIndent || 0,\r\n      separator_length = 0,\r\n      current_word_length = 0,\r\n      word,\r\n      widths_array,\r\n      words = text.split(\" \"),\r\n      spaceCharWidth = getCharWidthsArray.apply(this, [\" \", options])[0],\r\n      i,\r\n      l,\r\n      tmp,\r\n      lineIndent;\r\n\r\n    if (options.lineIndent === -1) {\r\n      lineIndent = words[0].length + 2;\r\n    } else {\r\n      lineIndent = options.lineIndent || 0;\r\n    }\r\n    if (lineIndent) {\r\n      var pad = Array(lineIndent).join(\" \"),\r\n        wrds = [];\r\n      words.map(function(wrd) {\r\n        wrd = wrd.split(/\\s*\\n/);\r\n        if (wrd.length > 1) {\r\n          wrds = wrds.concat(\r\n            wrd.map(function(wrd, idx) {\r\n              return (idx && wrd.length ? \"\\n\" : \"\") + wrd;\r\n            })\r\n          );\r\n        } else {\r\n          wrds.push(wrd[0]);\r\n        }\r\n      });\r\n      words = wrds;\r\n      lineIndent = getStringUnitWidth.apply(this, [pad, options]);\r\n    }\r\n\r\n    for (i = 0, l = words.length; i < l; i++) {\r\n      var force = 0;\r\n\r\n      word = words[i];\r\n      if (lineIndent && word[0] == \"\\n\") {\r\n        word = word.substr(1);\r\n        force = 1;\r\n      }\r\n      widths_array = getCharWidthsArray.apply(this, [word, options]);\r\n      current_word_length = widths_array.reduce(function(pv, cv) {\r\n        return pv + cv;\r\n      }, 0);\r\n\r\n      if (\r\n        line_length + separator_length + current_word_length > maxlen ||\r\n        force\r\n      ) {\r\n        if (current_word_length > maxlen) {\r\n          // this happens when you have space-less long URLs for example.\r\n          // we just chop these to size. We do NOT insert hiphens\r\n          tmp = splitLongWord.apply(this, [\r\n            word,\r\n            widths_array,\r\n            maxlen - (line_length + separator_length),\r\n            maxlen\r\n          ]);\r\n          // first line we add to existing line object\r\n          line.push(tmp.shift()); // it's ok to have extra space indicator there\r\n          // last line we make into new line object\r\n          line = [tmp.pop()];\r\n          // lines in the middle we apped to lines object as whole lines\r\n          while (tmp.length) {\r\n            lines.push([tmp.shift()]); // single fragment occupies whole line\r\n          }\r\n          current_word_length = widths_array\r\n            .slice(word.length - (line[0] ? line[0].length : 0))\r\n            .reduce(function(pv, cv) {\r\n              return pv + cv;\r\n            }, 0);\r\n        } else {\r\n          // just put it on a new line\r\n          line = [word];\r\n        }\r\n\r\n        // now we attach new line to lines\r\n        lines.push(line);\r\n        line_length = current_word_length + lineIndent;\r\n        separator_length = spaceCharWidth;\r\n      } else {\r\n        line.push(word);\r\n\r\n        line_length += separator_length + current_word_length;\r\n        separator_length = spaceCharWidth;\r\n      }\r\n    }\r\n\r\n    var postProcess;\r\n    if (lineIndent) {\r\n      postProcess = function(ln, idx) {\r\n        return (idx ? pad : \"\") + ln.join(\" \");\r\n      };\r\n    } else {\r\n      postProcess = function(ln) {\r\n        return ln.join(\" \");\r\n      };\r\n    }\r\n\r\n    return lines.map(postProcess);\r\n  };\r\n\r\n  /**\r\n   * Splits a given string into an array of strings. Uses 'size' value\r\n   * (in measurement units declared as default for the jsPDF instance)\r\n   * and the font's \"widths\" and \"Kerning\" tables, where available, to\r\n   * determine display length of a given string for a given font.\r\n   *\r\n   * We use character's 100% of unit size (height) as width when Width\r\n   * table or other default width is not available.\r\n   *\r\n   * @name splitTextToSize\r\n   * @public\r\n   * @function\r\n   * @param {string} text Unencoded, regular JavaScript (Unicode, UTF-16 / UCS-2) string.\r\n   * @param {number} size Nominal number, measured in units default to this instance of jsPDF.\r\n   * @param {Object} options Optional flags needed for chopper to do the right thing.\r\n   * @returns {Array} array Array with strings chopped to size.\r\n   */\r\n  API.splitTextToSize = function(text, maxlen, options) {\r\n    \"use strict\";\r\n\r\n    options = options || {};\r\n\r\n    var fsize = options.fontSize || this.internal.getFontSize(),\r\n      newOptions = function(options) {\r\n        var widths = {\r\n            0: 1\r\n          },\r\n          kerning = {};\r\n\r\n        if (!options.widths || !options.kerning) {\r\n          var f = this.internal.getFont(options.fontName, options.fontStyle),\r\n            encoding = \"Unicode\";\r\n          // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE\r\n          // Actual JavaScript-native String's 16bit char codes used.\r\n          // no multi-byte logic here\r\n\r\n          if (f.metadata[encoding]) {\r\n            return {\r\n              widths: f.metadata[encoding].widths || widths,\r\n              kerning: f.metadata[encoding].kerning || kerning\r\n            };\r\n          } else {\r\n            return {\r\n              font: f.metadata,\r\n              fontSize: this.internal.getFontSize(),\r\n              charSpace: this.internal.getCharSpace()\r\n            };\r\n          }\r\n        } else {\r\n          return {\r\n            widths: options.widths,\r\n            kerning: options.kerning\r\n          };\r\n        }\r\n      }.call(this, options);\r\n\r\n    // first we split on end-of-line chars\r\n    var paragraphs;\r\n    if (Array.isArray(text)) {\r\n      paragraphs = text;\r\n    } else {\r\n      paragraphs = String(text).split(/\\r?\\n/);\r\n    }\r\n\r\n    // now we convert size (max length of line) into \"font size units\"\r\n    // at present time, the \"font size unit\" is always 'point'\r\n    // 'proportional' means, \"in proportion to font size\"\r\n    var fontUnit_maxLen = (1.0 * this.internal.scaleFactor * maxlen) / fsize;\r\n    // at this time, fsize is always in \"points\" regardless of the default measurement unit of the doc.\r\n    // this may change in the future?\r\n    // until then, proportional_maxlen is likely to be in 'points'\r\n\r\n    // If first line is to be indented (shorter or longer) than maxLen\r\n    // we indicate that by using CSS-style \"text-indent\" option.\r\n    // here it's in font units too (which is likely 'points')\r\n    // it can be negative (which makes the first line longer than maxLen)\r\n    newOptions.textIndent = options.textIndent\r\n      ? (options.textIndent * 1.0 * this.internal.scaleFactor) / fsize\r\n      : 0;\r\n    newOptions.lineIndent = options.lineIndent;\r\n\r\n    var i,\r\n      l,\r\n      output = [];\r\n    for (i = 0, l = paragraphs.length; i < l; i++) {\r\n      output = output.concat(\r\n        splitParagraphIntoLines.apply(this, [\r\n          paragraphs[i],\r\n          fontUnit_maxLen,\r\n          newOptions\r\n        ])\r\n      );\r\n    }\r\n\r\n    return output;\r\n  };\r\n})(jsPDF.API);\r\n", "/**\n * @license\n *\n * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\nimport { decode as decodePng } from \"../libs/fast-png.js\";\n\n/*\n * @see http://www.w3.org/TR/PNG-Chunks.html\n *\n Color    Allowed      Interpretation\n Type     Bit Depths\n\n   0       1,2,4,8,16  Each pixel is a grayscale sample.\n\n   2       8,16        Each pixel is an R,G,B triple.\n\n   3       1,2,4,8     Each pixel is a palette index;\n                       a PLTE chunk must appear.\n\n   4       8,16        Each pixel is a grayscale sample,\n                       followed by an alpha sample.\n\n   6       8,16        Each pixel is an R,G,B triple,\n                       followed by an alpha sample.\n*/\n\n/*\n * @name processPNG\n * Entry point: process a PNG and return image dict and metadata for jsPDF\n */\njsPDF.API.processPNG = function(imageData, index, alias, compression) {\n  if (this.__addimage__.isArrayBuffer(imageData)) {\n    imageData = new Uint8Array(imageData);\n  }\n  if (!this.__addimage__.isArrayBufferView(imageData)) {\n    return;\n  }\n\n  const decodedPng = decodePng(imageData, { checkCrc: true });\n  const {\n    width,\n    height,\n    channels,\n    palette: decodedPalette,\n    depth: bitsPerComponent\n  } = decodedPng;\n\n  let result;\n  if (decodedPalette && channels === 1) {\n    result = processIndexedPNG(decodedPng);\n  } else if (channels === 2 || channels === 4) {\n    result = processAlphaPNG(decodedPng);\n  } else {\n    result = processOpaquePNG(decodedPng);\n  }\n\n  const {\n    colorSpace,\n    colorsPerPixel,\n    sMaskBitsPerComponent,\n    colorBytes,\n    alphaBytes,\n    needSMask,\n    palette,\n    mask\n  } = result;\n\n  let predictor = null;\n\n  let filter, decodeParameters, sMask;\n  if (canCompress(compression)) {\n    predictor = getPredictorFromCompression(compression);\n    filter = this.decode.FLATE_DECODE;\n    decodeParameters = `/Predictor ${predictor} /Colors ${colorsPerPixel} /BitsPerComponent ${bitsPerComponent} /Columns ${width}`;\n\n    const rowByteLength = Math.ceil(\n      (width * colorsPerPixel * bitsPerComponent) / 8\n    );\n\n    imageData = compressBytes(\n      colorBytes,\n      rowByteLength,\n      colorsPerPixel,\n      bitsPerComponent,\n      compression\n    );\n    if (needSMask) {\n      const sMaskRowByteLength = Math.ceil((width * sMaskBitsPerComponent) / 8);\n      sMask = compressBytes(\n        alphaBytes,\n        sMaskRowByteLength,\n        1,\n        sMaskBitsPerComponent,\n        compression\n      );\n    }\n  } else {\n    filter = undefined;\n    decodeParameters = undefined;\n    imageData = colorBytes;\n    if (needSMask) sMask = alphaBytes;\n  }\n\n  if (\n    this.__addimage__.isArrayBuffer(imageData) ||\n    this.__addimage__.isArrayBufferView(imageData)\n  ) {\n    imageData = this.__addimage__.arrayBufferToBinaryString(imageData);\n  }\n\n  if (\n    (sMask && this.__addimage__.isArrayBuffer(sMask)) ||\n    this.__addimage__.isArrayBufferView(sMask)\n  ) {\n    sMask = this.__addimage__.arrayBufferToBinaryString(sMask);\n  }\n\n  return {\n    alias,\n    data: imageData,\n    index,\n    filter,\n    decodeParameters,\n    transparency: mask,\n    palette,\n    sMask,\n    predictor,\n    width,\n    height,\n    bitsPerComponent,\n    sMaskBitsPerComponent,\n    colorSpace\n  };\n};\n\n/*\n   * PNG filter method types\n   *\n   * @see http://www.w3.org/TR/PNG-Filters.html\n   * @see http://www.libpng.org/pub/png/book/chapter09.html\n   *\n   * This is what the value 'Predictor' in decode params relates to\n   *\n   * 15 is \"optimal prediction\", which means the prediction algorithm can change from line to line.\n   * In that case, you actually have to read the first byte off each line for the prediction algorthim (which should be 0-4, corresponding to PDF 10-14) and select the appropriate unprediction algorithm based on that byte.\n   *\n     0       None\n     1       Sub\n     2       Up\n     3       Average\n     4       Paeth\n   */\n\nfunction canCompress(value) {\n  return value !== jsPDF.API.image_compression.NONE && hasCompressionJS();\n}\n\nfunction hasCompressionJS() {\n  return typeof zlibSync === \"function\";\n}\nfunction compressBytes(\n  bytes,\n  lineByteLength,\n  channels,\n  bitsPerComponent,\n  compression\n) {\n  let level = 4;\n  let filter_method = filterUp;\n\n  switch (compression) {\n    case jsPDF.API.image_compression.FAST:\n      level = 1;\n      filter_method = filterSub;\n      break;\n\n    case jsPDF.API.image_compression.MEDIUM:\n      level = 6;\n      filter_method = filterAverage;\n      break;\n\n    case jsPDF.API.image_compression.SLOW:\n      level = 9;\n      filter_method = filterPaeth;\n      break;\n  }\n\n  const bytesPerPixel = Math.ceil((channels * bitsPerComponent) / 8);\n  bytes = applyPngFilterMethod(\n    bytes,\n    lineByteLength,\n    bytesPerPixel,\n    filter_method\n  );\n  const dat = zlibSync(bytes, { level: level });\n  return jsPDF.API.__addimage__.arrayBufferToBinaryString(dat);\n}\n\nfunction applyPngFilterMethod(\n  bytes,\n  lineByteLength,\n  bytesPerPixel,\n  filter_method\n) {\n  const lines = bytes.length / lineByteLength;\n  const result = new Uint8Array(bytes.length + lines);\n  const filter_methods = getFilterMethods();\n  let prevLine;\n\n  for (let i = 0; i < lines; i += 1) {\n    const offset = i * lineByteLength;\n    const line = bytes.subarray(offset, offset + lineByteLength);\n\n    if (filter_method) {\n      result.set(filter_method(line, bytesPerPixel, prevLine), offset + i);\n    } else {\n      const len = filter_methods.length;\n      const results = [];\n\n      for (let j = 0; j < len; j += 1) {\n        results[j] = filter_methods[j](line, bytesPerPixel, prevLine);\n      }\n\n      const ind = getIndexOfSmallestSum(results.concat());\n\n      result.set(results[ind], offset + i);\n    }\n\n    prevLine = line;\n  }\n\n  return result;\n}\n\nfunction filterNone(line) {\n  /*const result = new Uint8Array(line.length + 1);\n    result[0] = 0;\n    result.set(line, 1);*/\n\n  const result = Array.apply([], line);\n  result.unshift(0);\n\n  return result;\n}\n\nfunction filterSub(line, colorsPerPixel) {\n  const len = line.length;\n  const result = [];\n\n  result[0] = 1;\n\n  for (let i = 0; i < len; i += 1) {\n    const left = line[i - colorsPerPixel] || 0;\n    result[i + 1] = (line[i] - left + 0x0100) & 0xff;\n  }\n\n  return result;\n}\n\nfunction filterUp(line, colorsPerPixel, prevLine) {\n  const len = line.length;\n  const result = [];\n\n  result[0] = 2;\n\n  for (let i = 0; i < len; i += 1) {\n    const up = (prevLine && prevLine[i]) || 0;\n    result[i + 1] = (line[i] - up + 0x0100) & 0xff;\n  }\n\n  return result;\n}\n\nfunction filterAverage(line, colorsPerPixel, prevLine) {\n  const len = line.length;\n  const result = [];\n\n  result[0] = 3;\n\n  for (let i = 0; i < len; i += 1) {\n    const left = line[i - colorsPerPixel] || 0;\n    const up = (prevLine && prevLine[i]) || 0;\n    result[i + 1] = (line[i] + 0x0100 - ((left + up) >>> 1)) & 0xff;\n  }\n\n  return result;\n}\n\nfunction filterPaeth(line, colorsPerPixel, prevLine) {\n  const len = line.length;\n  const result = [];\n\n  result[0] = 4;\n\n  for (let i = 0; i < len; i += 1) {\n    const left = line[i - colorsPerPixel] || 0;\n    const up = (prevLine && prevLine[i]) || 0;\n    const upLeft = (prevLine && prevLine[i - colorsPerPixel]) || 0;\n    const paeth = paethPredictor(left, up, upLeft);\n    result[i + 1] = (line[i] - paeth + 0x0100) & 0xff;\n  }\n\n  return result;\n}\n\nfunction paethPredictor(left, up, upLeft) {\n  if (left === up && up === upLeft) {\n    return left;\n  }\n  const pLeft = Math.abs(up - upLeft),\n    pUp = Math.abs(left - upLeft),\n    pUpLeft = Math.abs(left + up - upLeft - upLeft);\n  return pLeft <= pUp && pLeft <= pUpLeft ? left : pUp <= pUpLeft ? up : upLeft;\n}\n\nfunction getFilterMethods() {\n  return [filterNone, filterSub, filterUp, filterAverage, filterPaeth];\n}\n\nfunction getIndexOfSmallestSum(arrays) {\n  const sum = arrays.map(function(value) {\n    return value.reduce(function(pv, cv) {\n      return pv + Math.abs(cv);\n    }, 0);\n  });\n  return sum.indexOf(Math.min.apply(null, sum));\n}\n\nfunction getPredictorFromCompression(compression) {\n  let predictor;\n  switch (compression) {\n    case jsPDF.API.image_compression.FAST:\n      predictor = 11;\n      break;\n\n    case jsPDF.API.image_compression.MEDIUM:\n      predictor = 13;\n      break;\n\n    case jsPDF.API.image_compression.SLOW:\n      predictor = 14;\n      break;\n\n    default:\n      predictor = 12;\n      break;\n  }\n  return predictor;\n}\n\n// Extracted helper for Indexed PNGs (palette-based)\nfunction processIndexedPNG(decodedPng) {\n  const { width, height, data, palette: decodedPalette, depth } = decodedPng;\n  let needSMask = false;\n  let palette = [];\n  let mask = [];\n  let alphaBytes = undefined;\n  let hasSemiTransparency = false;\n\n  const maxMaskLength = 1;\n  let maskLength = 0;\n\n  for (let i = 0; i < decodedPalette.length; i++) {\n    const [r, g, b, a] = decodedPalette[i];\n    palette.push(r, g, b);\n    if (a != null) {\n      if (a === 0) {\n        maskLength++;\n        if (mask.length < maxMaskLength) {\n          mask.push(i);\n        }\n      } else if (a < 255) {\n        hasSemiTransparency = true;\n      }\n    }\n  }\n\n  if (hasSemiTransparency || maskLength > maxMaskLength) {\n    needSMask = true;\n    mask = undefined;\n\n    const totalPixels = width * height;\n    // per PNG spec, palettes always use 8 bits per component\n    alphaBytes = new Uint8Array(totalPixels);\n    const dataView = new DataView(data.buffer);\n    for (let p = 0; p < totalPixels; p++) {\n      const paletteIndex = readSample(dataView, p, depth);\n      const [, , , alpha] = decodedPalette[paletteIndex];\n      alphaBytes[p] = alpha;\n    }\n  } else if (maskLength === 0) {\n    mask = undefined;\n  }\n\n  return {\n    colorSpace: \"Indexed\",\n    colorsPerPixel: 1,\n    sMaskBitsPerComponent: needSMask ? 8 : undefined,\n    colorBytes: data,\n    alphaBytes,\n    needSMask,\n    palette,\n    mask\n  };\n}\n\n/*\n * Splits color and alpha values into separate buffers\n */\nfunction processAlphaPNG(decodedPng) {\n  const { data, width, height, channels, depth } = decodedPng;\n\n  const colorSpace = channels === 2 ? \"DeviceGray\" : \"DeviceRGB\";\n  const colorsPerPixel = channels - 1;\n\n  const totalPixels = width * height;\n  const colorChannels = colorsPerPixel; // 1 for Gray, 3 for RGB\n  const alphaChannels = 1;\n  const totalColorSamples = totalPixels * colorChannels;\n  const totalAlphaSamples = totalPixels * alphaChannels;\n\n  const colorByteLen = Math.ceil((totalColorSamples * depth) / 8);\n  const alphaByteLen = Math.ceil((totalAlphaSamples * depth) / 8);\n  const colorBytes = new Uint8Array(colorByteLen);\n  const alphaBytes = new Uint8Array(alphaByteLen);\n\n  const dataView = new DataView(data.buffer);\n  const colorView = new DataView(colorBytes.buffer);\n  const alphaView = new DataView(alphaBytes.buffer);\n\n  let needSMask = false;\n  for (let p = 0; p < totalPixels; p++) {\n    const pixelStartIndex = p * channels;\n    for (let s = 0; s < colorChannels; s++) {\n      const sampleIndex = pixelStartIndex + s;\n      const colorValue = readSample(dataView, sampleIndex, depth);\n      writeSample(colorView, colorValue, p * colorChannels + s, depth);\n    }\n    const sampleIndex = pixelStartIndex + colorChannels;\n    const alphaValue = readSample(dataView, sampleIndex, depth);\n    if (alphaValue < (1 << depth) - 1) {\n      needSMask = true;\n    }\n    writeSample(alphaView, alphaValue, p * alphaChannels, depth);\n  }\n\n  return {\n    colorSpace,\n    colorsPerPixel,\n    sMaskBitsPerComponent: needSMask ? depth : undefined,\n    colorBytes,\n    alphaBytes,\n    needSMask\n  };\n}\n\nfunction processOpaquePNG(decodedPng) {\n  const { data, channels } = decodedPng;\n  const colorSpace = channels === 1 ? \"DeviceGray\" : \"DeviceRGB\";\n  const colorsPerPixel = colorSpace === \"DeviceGray\" ? 1 : 3;\n\n  let colorBytes;\n  if (data instanceof Uint16Array) {\n    colorBytes = convertUint16ArrayToUint8Array(data);\n  } else {\n    colorBytes = data;\n  }\n\n  return { colorSpace, colorsPerPixel, colorBytes, needSMask: false };\n}\n\nfunction convertUint16ArrayToUint8Array(data) {\n  // PNG/PDF expect MSB-first byte order. Since EcmaScript does not specify\n  // the byte order of Uint16Array, we need to use a DataView to ensure the\n  // correct byte order.\n  const sampleCount = data.length;\n  const out = new Uint8Array(sampleCount * 2);\n  const outView = new DataView(out.buffer, out.byteOffset, out.byteLength);\n\n  for (let i = 0; i < sampleCount; i++) {\n    outView.setUint16(i * 2, data[i], false);\n  }\n  return out;\n}\n\nfunction readSample(view, sampleIndex, depth) {\n  const bitIndex = sampleIndex * depth;\n  const byteIndex = Math.floor(bitIndex / 8);\n  const bitOffset = 16 - (bitIndex - byteIndex * 8 + depth);\n  const bitMask = (1 << depth) - 1;\n  const word = safeGetUint16(view, byteIndex);\n  return (word >> bitOffset) & bitMask;\n}\n\nfunction writeSample(view, value, sampleIndex, depth) {\n  const bitIndex = sampleIndex * depth;\n  const byteIndex = Math.floor(bitIndex / 8);\n  const bitOffset = 16 - (bitIndex - byteIndex * 8 + depth);\n  const bitMask = (1 << depth) - 1;\n  const writeValue = (value & bitMask) << bitOffset;\n  const word =\n    safeGetUint16(view, byteIndex) & ~(bitMask << bitOffset) & 0xffff;\n  safeSetUint16(view, byteIndex, word | writeValue);\n}\n\nfunction safeGetUint16(view, byteIndex) {\n  if (byteIndex + 1 < view.byteLength) {\n    return view.getUint16(byteIndex, false);\n  }\n  const b0 = view.getUint8(byteIndex);\n  return b0 << 8;\n}\n\nfunction safeSetUint16(view, byteIndex, value) {\n  if (byteIndex + 1 < view.byteLength) {\n    view.setUint16(byteIndex, value, false);\n    return;\n  }\n  const byteToWrite = (value >> 8) & 0xff;\n  view.setUint8(byteIndex, byteToWrite);\n}\n", "/**\n * @license\n * (c) Dean McNamee <dean@gmail.com>, 2013.\n *\n * https://github.com/deanm/omggif\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all 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,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * omggif is a JavaScript implementation of a GIF 89a encoder and decoder,\n * including animation and compression.  It does not rely on any specific\n * underlying system, so should run in the browser, Node, or Plask.\n */\n\n\"use strict\";\n\nimport { console } from \"./console.js\";\n\nfunction GifWriter(buf, width, height, gopts) {\n  var p = 0;\n\n  var gopts = gopts === undefined ? {} : gopts;\n  var loop_count = gopts.loop === undefined ? null : gopts.loop;\n  var global_palette = gopts.palette === undefined ? null : gopts.palette;\n\n  if (width <= 0 || height <= 0 || width > 65535 || height > 65535)\n    throw new Error(\"Width/Height invalid.\");\n\n  function check_palette_and_num_colors(palette) {\n    var num_colors = palette.length;\n    if (num_colors < 2 || num_colors > 256 || num_colors & (num_colors - 1)) {\n      throw new Error(\n        \"Invalid code/color length, must be power of 2 and 2 .. 256.\"\n      );\n    }\n    return num_colors;\n  }\n\n  // - Header.\n  buf[p++] = 0x47;\n  buf[p++] = 0x49;\n  buf[p++] = 0x46; // GIF\n  buf[p++] = 0x38;\n  buf[p++] = 0x39;\n  buf[p++] = 0x61; // 89a\n\n  // Handling of Global Color Table (palette) and background index.\n  var gp_num_colors_pow2 = 0;\n  var background = 0;\n  if (global_palette !== null) {\n    var gp_num_colors = check_palette_and_num_colors(global_palette);\n    while ((gp_num_colors >>= 1)) ++gp_num_colors_pow2;\n    gp_num_colors = 1 << gp_num_colors_pow2;\n    --gp_num_colors_pow2;\n    if (gopts.background !== undefined) {\n      background = gopts.background;\n      if (background >= gp_num_colors)\n        throw new Error(\"Background index out of range.\");\n      // The GIF spec states that a background index of 0 should be ignored, so\n      // this is probably a mistake and you really want to set it to another\n      // slot in the palette.  But actually in the end most browsers, etc end\n      // up ignoring this almost completely (including for dispose background).\n      if (background === 0)\n        throw new Error(\"Background index explicitly passed as 0.\");\n    }\n  }\n\n  // - Logical Screen Descriptor.\n  // NOTE(deanm): w/h apparently ignored by implementations, but set anyway.\n  buf[p++] = width & 0xff;\n  buf[p++] = (width >> 8) & 0xff;\n  buf[p++] = height & 0xff;\n  buf[p++] = (height >> 8) & 0xff;\n  // NOTE: Indicates 0-bpp original color resolution (unused?).\n  buf[p++] = (global_palette !== null ? 0x80 : 0) | gp_num_colors_pow2; // Global Color Table Flag. // NOTE: No sort flag (unused?).\n  buf[p++] = background; // Background Color Index.\n  buf[p++] = 0; // Pixel aspect ratio (unused?).\n\n  // - Global Color Table\n  if (global_palette !== null) {\n    for (var i = 0, il = global_palette.length; i < il; ++i) {\n      var rgb = global_palette[i];\n      buf[p++] = (rgb >> 16) & 0xff;\n      buf[p++] = (rgb >> 8) & 0xff;\n      buf[p++] = rgb & 0xff;\n    }\n  }\n\n  if (loop_count !== null) {\n    // Netscape block for looping.\n    if (loop_count < 0 || loop_count > 65535)\n      throw new Error(\"Loop count invalid.\");\n    // Extension code, label, and length.\n    buf[p++] = 0x21;\n    buf[p++] = 0xff;\n    buf[p++] = 0x0b;\n    // NETSCAPE2.0\n    buf[p++] = 0x4e;\n    buf[p++] = 0x45;\n    buf[p++] = 0x54;\n    buf[p++] = 0x53;\n    buf[p++] = 0x43;\n    buf[p++] = 0x41;\n    buf[p++] = 0x50;\n    buf[p++] = 0x45;\n    buf[p++] = 0x32;\n    buf[p++] = 0x2e;\n    buf[p++] = 0x30;\n    // Sub-block\n    buf[p++] = 0x03;\n    buf[p++] = 0x01;\n    buf[p++] = loop_count & 0xff;\n    buf[p++] = (loop_count >> 8) & 0xff;\n    buf[p++] = 0x00; // Terminator.\n  }\n\n  var ended = false;\n\n  this.addFrame = function(x, y, w, h, indexed_pixels, opts) {\n    if (ended === true) {\n      --p;\n      ended = false;\n    } // Un-end.\n\n    opts = opts === undefined ? {} : opts;\n\n    // TODO(deanm): Bounds check x, y.  Do they need to be within the virtual\n    // canvas width/height, I imagine?\n    if (x < 0 || y < 0 || x > 65535 || y > 65535)\n      throw new Error(\"x/y invalid.\");\n\n    if (w <= 0 || h <= 0 || w > 65535 || h > 65535)\n      throw new Error(\"Width/Height invalid.\");\n\n    if (indexed_pixels.length < w * h)\n      throw new Error(\"Not enough pixels for the frame size.\");\n\n    var using_local_palette = true;\n    var palette = opts.palette;\n    if (palette === undefined || palette === null) {\n      using_local_palette = false;\n      palette = global_palette;\n    }\n\n    if (palette === undefined || palette === null)\n      throw new Error(\"Must supply either a local or global palette.\");\n\n    var num_colors = check_palette_and_num_colors(palette);\n\n    // Compute the min_code_size (power of 2), destroying num_colors.\n    var min_code_size = 0;\n    while ((num_colors >>= 1)) ++min_code_size;\n    num_colors = 1 << min_code_size; // Now we can easily get it back.\n\n    var delay = opts.delay === undefined ? 0 : opts.delay;\n\n    // From the spec:\n    //     0 -   No disposal specified. The decoder is\n    //           not required to take any action.\n    //     1 -   Do not dispose. The graphic is to be left\n    //           in place.\n    //     2 -   Restore to background color. The area used by the\n    //           graphic must be restored to the background color.\n    //     3 -   Restore to previous. The decoder is required to\n    //           restore the area overwritten by the graphic with\n    //           what was there prior to rendering the graphic.\n    //  4-7 -    To be defined.\n    // NOTE(deanm): Dispose background doesn't really work, apparently most\n    // browsers ignore the background palette index and clear to transparency.\n    var disposal = opts.disposal === undefined ? 0 : opts.disposal;\n    if (disposal < 0 || disposal > 3)\n      // 4-7 is reserved.\n      throw new Error(\"Disposal out of range.\");\n\n    var use_transparency = false;\n    var transparent_index = 0;\n    if (opts.transparent !== undefined && opts.transparent !== null) {\n      use_transparency = true;\n      transparent_index = opts.transparent;\n      if (transparent_index < 0 || transparent_index >= num_colors)\n        throw new Error(\"Transparent color index.\");\n    }\n\n    if (disposal !== 0 || use_transparency || delay !== 0) {\n      // - Graphics Control Extension\n      buf[p++] = 0x21;\n      buf[p++] = 0xf9; // Extension / Label.\n      buf[p++] = 4; // Byte size.\n\n      buf[p++] = (disposal << 2) | (use_transparency === true ? 1 : 0);\n      buf[p++] = delay & 0xff;\n      buf[p++] = (delay >> 8) & 0xff;\n      buf[p++] = transparent_index; // Transparent color index.\n      buf[p++] = 0; // Block Terminator.\n    }\n\n    // - Image Descriptor\n    buf[p++] = 0x2c; // Image Seperator.\n    buf[p++] = x & 0xff;\n    buf[p++] = (x >> 8) & 0xff; // Left.\n    buf[p++] = y & 0xff;\n    buf[p++] = (y >> 8) & 0xff; // Top.\n    buf[p++] = w & 0xff;\n    buf[p++] = (w >> 8) & 0xff;\n    buf[p++] = h & 0xff;\n    buf[p++] = (h >> 8) & 0xff;\n    // NOTE: No sort flag (unused?).\n    // TODO(deanm): Support interlace.\n    buf[p++] = using_local_palette === true ? 0x80 | (min_code_size - 1) : 0;\n\n    // - Local Color Table\n    if (using_local_palette === true) {\n      for (var i = 0, il = palette.length; i < il; ++i) {\n        var rgb = palette[i];\n        buf[p++] = (rgb >> 16) & 0xff;\n        buf[p++] = (rgb >> 8) & 0xff;\n        buf[p++] = rgb & 0xff;\n      }\n    }\n\n    p = GifWriterOutputLZWCodeStream(\n      buf,\n      p,\n      min_code_size < 2 ? 2 : min_code_size,\n      indexed_pixels\n    );\n\n    return p;\n  };\n\n  this.end = function() {\n    if (ended === false) {\n      buf[p++] = 0x3b; // Trailer.\n      ended = true;\n    }\n    return p;\n  };\n\n  this.getOutputBuffer = function() {\n    return buf;\n  };\n  this.setOutputBuffer = function(v) {\n    buf = v;\n  };\n  this.getOutputBufferPosition = function() {\n    return p;\n  };\n  this.setOutputBufferPosition = function(v) {\n    p = v;\n  };\n}\n\n// Main compression routine, palette indexes -> LZW code stream.\n// |index_stream| must have at least one entry.\nfunction GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {\n  buf[p++] = min_code_size;\n  var cur_subblock = p++; // Pointing at the length field.\n\n  var clear_code = 1 << min_code_size;\n  var code_mask = clear_code - 1;\n  var eoi_code = clear_code + 1;\n  var next_code = eoi_code + 1;\n\n  var cur_code_size = min_code_size + 1; // Number of bits per code.\n  var cur_shift = 0;\n  // We have at most 12-bit codes, so we should have to hold a max of 19\n  // bits here (and then we would write out).\n  var cur = 0;\n\n  function emit_bytes_to_buffer(bit_block_size) {\n    while (cur_shift >= bit_block_size) {\n      buf[p++] = cur & 0xff;\n      cur >>= 8;\n      cur_shift -= 8;\n      if (p === cur_subblock + 256) {\n        // Finished a subblock.\n        buf[cur_subblock] = 255;\n        cur_subblock = p++;\n      }\n    }\n  }\n\n  function emit_code(c) {\n    cur |= c << cur_shift;\n    cur_shift += cur_code_size;\n    emit_bytes_to_buffer(8);\n  }\n\n  // I am not an expert on the topic, and I don't want to write a thesis.\n  // However, it is good to outline here the basic algorithm and the few data\n  // structures and optimizations here that make this implementation fast.\n  // The basic idea behind LZW is to build a table of previously seen runs\n  // addressed by a short id (herein called output code).  All data is\n  // referenced by a code, which represents one or more values from the\n  // original input stream.  All input bytes can be referenced as the same\n  // value as an output code.  So if you didn't want any compression, you\n  // could more or less just output the original bytes as codes (there are\n  // some details to this, but it is the idea).  In order to achieve\n  // compression, values greater then the input range (codes can be up to\n  // 12-bit while input only 8-bit) represent a sequence of previously seen\n  // inputs.  The decompressor is able to build the same mapping while\n  // decoding, so there is always a shared common knowledge between the\n  // encoding and decoder, which is also important for \"timing\" aspects like\n  // how to handle variable bit width code encoding.\n  //\n  // One obvious but very important consequence of the table system is there\n  // is always a unique id (at most 12-bits) to map the runs.  'A' might be\n  // 4, then 'AA' might be 10, 'AAA' 11, 'AAAA' 12, etc.  This relationship\n  // can be used for an effecient lookup strategy for the code mapping.  We\n  // need to know if a run has been seen before, and be able to map that run\n  // to the output code.  Since we start with known unique ids (input bytes),\n  // and then from those build more unique ids (table entries), we can\n  // continue this chain (almost like a linked list) to always have small\n  // integer values that represent the current byte chains in the encoder.\n  // This means instead of tracking the input bytes (AAAABCD) to know our\n  // current state, we can track the table entry for AAAABC (it is guaranteed\n  // to exist by the nature of the algorithm) and the next character D.\n  // Therefor the tuple of (table_entry, byte) is guaranteed to also be\n  // unique.  This allows us to create a simple lookup key for mapping input\n  // sequences to codes (table indices) without having to store or search\n  // any of the code sequences.  So if 'AAAA' has a table entry of 12, the\n  // tuple of ('AAAA', K) for any input byte K will be unique, and can be our\n  // key.  This leads to a integer value at most 20-bits, which can always\n  // fit in an SMI value and be used as a fast sparse array / object key.\n\n  // Output code for the current contents of the index buffer.\n  var ib_code = index_stream[0] & code_mask; // Load first input index.\n  var code_table = {}; // Key'd on our 20-bit \"tuple\".\n\n  emit_code(clear_code); // Spec says first code should be a clear code.\n\n  // First index already loaded, process the rest of the stream.\n  for (var i = 1, il = index_stream.length; i < il; ++i) {\n    var k = index_stream[i] & code_mask;\n    var cur_key = (ib_code << 8) | k; // (prev, k) unique tuple.\n    var cur_code = code_table[cur_key]; // buffer + k.\n\n    // Check if we have to create a new code table entry.\n    if (cur_code === undefined) {\n      // We don't have buffer + k.\n      // Emit index buffer (without k).\n      // This is an inline version of emit_code, because this is the core\n      // writing routine of the compressor (and V8 cannot inline emit_code\n      // because it is a closure here in a different context).  Additionally\n      // we can call emit_byte_to_buffer less often, because we can have\n      // 30-bits (from our 31-bit signed SMI), and we know our codes will only\n      // be 12-bits, so can safely have 18-bits there without overflow.\n      // emit_code(ib_code);\n      cur |= ib_code << cur_shift;\n      cur_shift += cur_code_size;\n      while (cur_shift >= 8) {\n        buf[p++] = cur & 0xff;\n        cur >>= 8;\n        cur_shift -= 8;\n        if (p === cur_subblock + 256) {\n          // Finished a subblock.\n          buf[cur_subblock] = 255;\n          cur_subblock = p++;\n        }\n      }\n\n      if (next_code === 4096) {\n        // Table full, need a clear.\n        emit_code(clear_code);\n        next_code = eoi_code + 1;\n        cur_code_size = min_code_size + 1;\n        code_table = {};\n      } else {\n        // Table not full, insert a new entry.\n        // Increase our variable bit code sizes if necessary.  This is a bit\n        // tricky as it is based on \"timing\" between the encoding and\n        // decoder.  From the encoders perspective this should happen after\n        // we've already emitted the index buffer and are about to create the\n        // first table entry that would overflow our current code bit size.\n        if (next_code >= 1 << cur_code_size) ++cur_code_size;\n        code_table[cur_key] = next_code++; // Insert into code table.\n      }\n\n      ib_code = k; // Index buffer to single input k.\n    } else {\n      ib_code = cur_code; // Index buffer to sequence in code table.\n    }\n  }\n\n  emit_code(ib_code); // There will still be something in the index buffer.\n  emit_code(eoi_code); // End Of Information.\n\n  // Flush / finalize the sub-blocks stream to the buffer.\n  emit_bytes_to_buffer(1);\n\n  // Finish the sub-blocks, writing out any unfinished lengths and\n  // terminating with a sub-block of length 0.  If we have already started\n  // but not yet used a sub-block it can just become the terminator.\n  if (cur_subblock + 1 === p) {\n    // Started but unused.\n    buf[cur_subblock] = 0;\n  } else {\n    // Started and used, write length and additional terminator block.\n    buf[cur_subblock] = p - cur_subblock - 1;\n    buf[p++] = 0;\n  }\n  return p;\n}\n\nfunction GifReader(buf) {\n  var p = 0;\n\n  // - Header (GIF87a or GIF89a).\n  if (\n    buf[p++] !== 0x47 ||\n    buf[p++] !== 0x49 ||\n    buf[p++] !== 0x46 ||\n    buf[p++] !== 0x38 ||\n    ((buf[p++] + 1) & 0xfd) !== 0x38 ||\n    buf[p++] !== 0x61\n  ) {\n    throw new Error(\"Invalid GIF 87a/89a header.\");\n  }\n\n  // - Logical Screen Descriptor.\n  var width = buf[p++] | (buf[p++] << 8);\n  var height = buf[p++] | (buf[p++] << 8);\n  var pf0 = buf[p++]; // <Packed Fields>.\n  var global_palette_flag = pf0 >> 7;\n  var num_global_colors_pow2 = pf0 & 0x7;\n  var num_global_colors = 1 << (num_global_colors_pow2 + 1);\n  var background = buf[p++];\n  buf[p++]; // Pixel aspect ratio (unused?).\n\n  var global_palette_offset = null;\n  var global_palette_size = null;\n\n  if (global_palette_flag) {\n    global_palette_offset = p;\n    global_palette_size = num_global_colors;\n    p += num_global_colors * 3; // Seek past palette.\n  }\n\n  var no_eof = true;\n\n  var frames = [];\n\n  var delay = 0;\n  var transparent_index = null;\n  var disposal = 0; // 0 - No disposal specified.\n  var loop_count = null;\n\n  this.width = width;\n  this.height = height;\n\n  while (no_eof && p < buf.length) {\n    switch (buf[p++]) {\n      case 0x21: // Graphics Control Extension Block\n        switch (buf[p++]) {\n          case 0xff: // Application specific block\n            // Try if it's a Netscape block (with animation loop counter).\n            if (\n              buf[p] !== 0x0b || // 21 FF already read, check block size.\n              // NETSCAPE2.0\n              (buf[p + 1] == 0x4e &&\n                buf[p + 2] == 0x45 &&\n                buf[p + 3] == 0x54 &&\n                buf[p + 4] == 0x53 &&\n                buf[p + 5] == 0x43 &&\n                buf[p + 6] == 0x41 &&\n                buf[p + 7] == 0x50 &&\n                buf[p + 8] == 0x45 &&\n                buf[p + 9] == 0x32 &&\n                buf[p + 10] == 0x2e &&\n                buf[p + 11] == 0x30 &&\n                // Sub-block\n                buf[p + 12] == 0x03 &&\n                buf[p + 13] == 0x01 &&\n                buf[p + 16] == 0)\n            ) {\n              p += 14;\n              loop_count = buf[p++] | (buf[p++] << 8);\n              p++; // Skip terminator.\n            } else {\n              // We don't know what it is, just try to get past it.\n              p += 12;\n              while (true) {\n                // Seek through subblocks.\n                var block_size = buf[p++];\n                // Bad block size (ex: undefined from an out of bounds read).\n                if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n                if (block_size === 0) break; // 0 size is terminator\n                p += block_size;\n              }\n            }\n            break;\n\n          case 0xf9: // Graphics Control Extension\n            if (buf[p++] !== 0x4 || buf[p + 4] !== 0)\n              throw new Error(\"Invalid graphics extension block.\");\n            var pf1 = buf[p++];\n            delay = buf[p++] | (buf[p++] << 8);\n            transparent_index = buf[p++];\n            if ((pf1 & 1) === 0) transparent_index = null;\n            disposal = (pf1 >> 2) & 0x7;\n            p++; // Skip terminator.\n            break;\n\n          case 0xfe: // Comment Extension.\n            while (true) {\n              // Seek through subblocks.\n              var block_size = buf[p++];\n              // Bad block size (ex: undefined from an out of bounds read).\n              if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n              if (block_size === 0) break; // 0 size is terminator\n              // console.log(buf.slice(p, p+block_size).toString('ascii'));\n              p += block_size;\n            }\n            break;\n\n          default:\n            throw new Error(\n              \"Unknown graphic control label: 0x\" + buf[p - 1].toString(16)\n            );\n        }\n        break;\n\n      case 0x2c: // Image Descriptor.\n        var x = buf[p++] | (buf[p++] << 8);\n        var y = buf[p++] | (buf[p++] << 8);\n        var w = buf[p++] | (buf[p++] << 8);\n        var h = buf[p++] | (buf[p++] << 8);\n        var pf2 = buf[p++];\n        var local_palette_flag = pf2 >> 7;\n        var interlace_flag = (pf2 >> 6) & 1;\n        var num_local_colors_pow2 = pf2 & 0x7;\n        var num_local_colors = 1 << (num_local_colors_pow2 + 1);\n        var palette_offset = global_palette_offset;\n        var palette_size = global_palette_size;\n        var has_local_palette = false;\n        if (local_palette_flag) {\n          var has_local_palette = true;\n          palette_offset = p; // Override with local palette.\n          palette_size = num_local_colors;\n          p += num_local_colors * 3; // Seek past palette.\n        }\n\n        var data_offset = p;\n\n        p++; // codesize\n        while (true) {\n          var block_size = buf[p++];\n          // Bad block size (ex: undefined from an out of bounds read).\n          if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n          if (block_size === 0) break; // 0 size is terminator\n          p += block_size;\n        }\n\n        frames.push({\n          x: x,\n          y: y,\n          width: w,\n          height: h,\n          has_local_palette: has_local_palette,\n          palette_offset: palette_offset,\n          palette_size: palette_size,\n          data_offset: data_offset,\n          data_length: p - data_offset,\n          transparent_index: transparent_index,\n          interlaced: !!interlace_flag,\n          delay: delay,\n          disposal: disposal\n        });\n        break;\n\n      case 0x3b: // Trailer Marker (end of file).\n        no_eof = false;\n        break;\n\n      default:\n        throw new Error(\"Unknown gif block: 0x\" + buf[p - 1].toString(16));\n        break;\n    }\n  }\n\n  this.numFrames = function() {\n    return frames.length;\n  };\n\n  this.loopCount = function() {\n    return loop_count;\n  };\n\n  this.frameInfo = function(frame_num) {\n    if (frame_num < 0 || frame_num >= frames.length)\n      throw new Error(\"Frame index out of range.\");\n    return frames[frame_num];\n  };\n\n  this.decodeAndBlitFrameBGRA = function(frame_num, pixels) {\n    var frame = this.frameInfo(frame_num);\n    var num_pixels = frame.width * frame.height;\n\n    if (num_pixels > 512 * 1024 * 1024) {\n      throw new Error(\"Image dimensions exceed 512MB, which is too large.\");\n    }\n\n    var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n    GifReaderLZWOutputIndexStream(\n      buf,\n      frame.data_offset,\n      index_stream,\n      num_pixels\n    );\n    var palette_offset = frame.palette_offset;\n\n    // NOTE(deanm): It seems to be much faster to compare index to 256 than\n    // to === null.  Not sure why, but CompareStub_EQ_STRICT shows up high in\n    // the profile, not sure if it's related to using a Uint8Array.\n    var trans = frame.transparent_index;\n    if (trans === null) trans = 256;\n\n    // We are possibly just blitting to a portion of the entire frame.\n    // That is a subrect within the framerect, so the additional pixels\n    // must be skipped over after we finished a scanline.\n    var framewidth = frame.width;\n    var framestride = width - framewidth;\n    var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n    // Output indices of the top left and bottom right corners of the subrect.\n    var opbeg = (frame.y * width + frame.x) * 4;\n    var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n    var op = opbeg;\n\n    var scanstride = framestride * 4;\n\n    // Use scanstride to skip past the rows when interlacing.  This is skipping\n    // 7 rows for the first two passes, then 3 then 1.\n    if (frame.interlaced === true) {\n      scanstride += width * 4 * 7; // Pass 1.\n    }\n\n    var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n    for (var i = 0, il = index_stream.length; i < il; ++i) {\n      var index = index_stream[i];\n\n      if (xleft === 0) {\n        // Beginning of new scan line\n        op += scanstride;\n        xleft = framewidth;\n        if (op >= opend) {\n          // Catch the wrap to switch passes when interlacing.\n          scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n          // interlaceskip / 2 * 4 is interlaceskip << 1.\n          op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n          interlaceskip >>= 1;\n        }\n      }\n\n      if (index === trans) {\n        op += 4;\n      } else {\n        var r = buf[palette_offset + index * 3];\n        var g = buf[palette_offset + index * 3 + 1];\n        var b = buf[palette_offset + index * 3 + 2];\n        pixels[op++] = b;\n        pixels[op++] = g;\n        pixels[op++] = r;\n        pixels[op++] = 255;\n      }\n      --xleft;\n    }\n  };\n\n  // I will go to copy and paste hell one day...\n  this.decodeAndBlitFrameRGBA = function(frame_num, pixels) {\n    var frame = this.frameInfo(frame_num);\n    var num_pixels = frame.width * frame.height;\n\n    if (num_pixels > 512 * 1024 * 1024) {\n      throw new Error(\"Image dimensions exceed 512MB, which is too large.\");\n    }\n\n    var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n    GifReaderLZWOutputIndexStream(\n      buf,\n      frame.data_offset,\n      index_stream,\n      num_pixels\n    );\n    var palette_offset = frame.palette_offset;\n\n    // NOTE(deanm): It seems to be much faster to compare index to 256 than\n    // to === null.  Not sure why, but CompareStub_EQ_STRICT shows up high in\n    // the profile, not sure if it's related to using a Uint8Array.\n    var trans = frame.transparent_index;\n    if (trans === null) trans = 256;\n\n    // We are possibly just blitting to a portion of the entire frame.\n    // That is a subrect within the framerect, so the additional pixels\n    // must be skipped over after we finished a scanline.\n    var framewidth = frame.width;\n    var framestride = width - framewidth;\n    var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n    // Output indices of the top left and bottom right corners of the subrect.\n    var opbeg = (frame.y * width + frame.x) * 4;\n    var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n    var op = opbeg;\n\n    var scanstride = framestride * 4;\n\n    // Use scanstride to skip past the rows when interlacing.  This is skipping\n    // 7 rows for the first two passes, then 3 then 1.\n    if (frame.interlaced === true) {\n      scanstride += width * 4 * 7; // Pass 1.\n    }\n\n    var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n    for (var i = 0, il = index_stream.length; i < il; ++i) {\n      var index = index_stream[i];\n\n      if (xleft === 0) {\n        // Beginning of new scan line\n        op += scanstride;\n        xleft = framewidth;\n        if (op >= opend) {\n          // Catch the wrap to switch passes when interlacing.\n          scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n          // interlaceskip / 2 * 4 is interlaceskip << 1.\n          op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n          interlaceskip >>= 1;\n        }\n      }\n\n      if (index === trans) {\n        op += 4;\n      } else {\n        var r = buf[palette_offset + index * 3];\n        var g = buf[palette_offset + index * 3 + 1];\n        var b = buf[palette_offset + index * 3 + 2];\n        pixels[op++] = r;\n        pixels[op++] = g;\n        pixels[op++] = b;\n        pixels[op++] = 255;\n      }\n      --xleft;\n    }\n  };\n}\n\nfunction GifReaderLZWOutputIndexStream(code_stream, p, output, output_length) {\n  var min_code_size = code_stream[p++];\n\n  var clear_code = 1 << min_code_size;\n  var eoi_code = clear_code + 1;\n  var next_code = eoi_code + 1;\n\n  var cur_code_size = min_code_size + 1; // Number of bits per code.\n  // NOTE: This shares the same name as the encoder, but has a different\n  // meaning here.  Here this masks each code coming from the code stream.\n  var code_mask = (1 << cur_code_size) - 1;\n  var cur_shift = 0;\n  var cur = 0;\n\n  var op = 0; // Output pointer.\n\n  var subblock_size = code_stream[p++];\n\n  // TODO(deanm): Would using a TypedArray be any faster?  At least it would\n  // solve the fast mode / backing store uncertainty.\n  // var code_table = Array(4096);\n  var code_table = new Int32Array(4096); // Can be signed, we only use 20 bits.\n\n  var prev_code = null; // Track code-1.\n\n  while (true) {\n    // Read up to two bytes, making sure we always 12-bits for max sized code.\n    while (cur_shift < 16) {\n      if (subblock_size === 0) break; // No more data to be read.\n\n      cur |= code_stream[p++] << cur_shift;\n      cur_shift += 8;\n\n      if (subblock_size === 1) {\n        // Never let it get to 0 to hold logic above.\n        subblock_size = code_stream[p++]; // Next subblock.\n      } else {\n        --subblock_size;\n      }\n    }\n\n    // TODO(deanm): We should never really get here, we should have received\n    // and EOI.\n    if (cur_shift < cur_code_size) break;\n\n    var code = cur & code_mask;\n    cur >>= cur_code_size;\n    cur_shift -= cur_code_size;\n\n    // TODO(deanm): Maybe should check that the first code was a clear code,\n    // at least this is what you're supposed to do.  But actually our encoder\n    // now doesn't emit a clear code first anyway.\n    if (code === clear_code) {\n      // We don't actually have to clear the table.  This could be a good idea\n      // for greater error checking, but we don't really do any anyway.  We\n      // will just track it with next_code and overwrite old entries.\n\n      next_code = eoi_code + 1;\n      cur_code_size = min_code_size + 1;\n      code_mask = (1 << cur_code_size) - 1;\n\n      // Don't update prev_code ?\n      prev_code = null;\n      continue;\n    } else if (code === eoi_code) {\n      break;\n    }\n\n    // We have a similar situation as the decoder, where we want to store\n    // variable length entries (code table entries), but we want to do in a\n    // faster manner than an array of arrays.  The code below stores sort of a\n    // linked list within the code table, and then \"chases\" through it to\n    // construct the dictionary entries.  When a new entry is created, just the\n    // last byte is stored, and the rest (prefix) of the entry is only\n    // referenced by its table entry.  Then the code chases through the\n    // prefixes until it reaches a single byte code.  We have to chase twice,\n    // first to compute the length, and then to actually copy the data to the\n    // output (backwards, since we know the length).  The alternative would be\n    // storing something in an intermediate stack, but that doesn't make any\n    // more sense.  I implemented an approach where it also stored the length\n    // in the code table, although it's a bit tricky because you run out of\n    // bits (12 + 12 + 8), but I didn't measure much improvements (the table\n    // entries are generally not the long).  Even when I created benchmarks for\n    // very long table entries the complexity did not seem worth it.\n    // The code table stores the prefix entry in 12 bits and then the suffix\n    // byte in 8 bits, so each entry is 20 bits.\n\n    var chase_code = code < next_code ? code : prev_code;\n\n    // Chase what we will output, either {CODE} or {CODE-1}.\n    var chase_length = 0;\n    var chase = chase_code;\n    while (chase > clear_code) {\n      chase = code_table[chase] >> 8;\n      ++chase_length;\n    }\n\n    var k = chase;\n\n    var op_end = op + chase_length + (chase_code !== code ? 1 : 0);\n    if (op_end > output_length) {\n      console.log(\"Warning, gif stream longer than expected.\");\n      return;\n    }\n\n    // Already have the first byte from the chase, might as well write it fast.\n    output[op++] = k;\n\n    op += chase_length;\n    var b = op; // Track pointer, writing backwards.\n\n    if (chase_code !== code)\n      // The case of emitting {CODE-1} + k.\n      output[op++] = k;\n\n    chase = chase_code;\n    while (chase_length--) {\n      chase = code_table[chase];\n      output[--b] = chase & 0xff; // Write backwards.\n      chase >>= 8; // Pull down to the prefix code.\n    }\n\n    if (prev_code !== null && next_code < 4096) {\n      code_table[next_code++] = (prev_code << 8) | k;\n      // TODO(deanm): Figure out this clearing vs code growth logic better.  I\n      // have an feeling that it should just happen somewhere else, for now it\n      // is awkward between when we grow past the max and then hit a clear code.\n      // For now just check if we hit the max 12-bits (then a clear code should\n      // follow, also of course encoded in 12-bits).\n      if (next_code >= code_mask + 1 && cur_code_size < 12) {\n        ++cur_code_size;\n        code_mask = (code_mask << 1) | 1;\n      }\n    }\n\n    prev_code = code;\n  }\n\n  if (op !== output_length) {\n    console.log(\"Warning, gif stream shorter than expected.\");\n  }\n\n  return output;\n}\n\nexport { GifReader, GifWriter };\n", "/**\n * @license\n  Copyright (c) 2008, Adobe Systems Incorporated\n  All rights reserved.\n\n  Redistribution and use in source and binary forms, with or without \n  modification, are permitted provided that the following conditions are\n  met:\n\n  * Redistributions of source code must retain the above copyright notice, \n    this list of conditions and the following disclaimer.\n  \n  * Redistributions in binary form must reproduce the above copyright\n    notice, this list of conditions and the following disclaimer in the \n    documentation and/or other materials provided with the distribution.\n  \n  * Neither the name of Adobe Systems Incorporated nor the names of its \n    contributors may be used to endorse or promote products derived from \n    this software without specific prior written permission.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n  IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR \n  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*\nJPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009\n\nBasic GUI blocking jpeg encoder\n*/\n\nfunction JPEGEncoder(quality) {\n  var ffloor = Math.floor;\n  var YTable = new Array(64);\n  var UVTable = new Array(64);\n  var fdtbl_Y = new Array(64);\n  var fdtbl_UV = new Array(64);\n  var YDC_HT;\n  var UVDC_HT;\n  var YAC_HT;\n  var UVAC_HT;\n\n  var bitcode = new Array(65535);\n  var category = new Array(65535);\n  var outputfDCTQuant = new Array(64);\n  var DU = new Array(64);\n  var byteout = [];\n  var bytenew = 0;\n  var bytepos = 7;\n\n  var YDU = new Array(64);\n  var UDU = new Array(64);\n  var VDU = new Array(64);\n  var clt = new Array(256);\n  var RGB_YUV_TABLE = new Array(2048);\n  var currentQuality;\n\n  var ZigZag = [\n    0,\n    1,\n    5,\n    6,\n    14,\n    15,\n    27,\n    28,\n    2,\n    4,\n    7,\n    13,\n    16,\n    26,\n    29,\n    42,\n    3,\n    8,\n    12,\n    17,\n    25,\n    30,\n    41,\n    43,\n    9,\n    11,\n    18,\n    24,\n    31,\n    40,\n    44,\n    53,\n    10,\n    19,\n    23,\n    32,\n    39,\n    45,\n    52,\n    54,\n    20,\n    22,\n    33,\n    38,\n    46,\n    51,\n    55,\n    60,\n    21,\n    34,\n    37,\n    47,\n    50,\n    56,\n    59,\n    61,\n    35,\n    36,\n    48,\n    49,\n    57,\n    58,\n    62,\n    63\n  ];\n\n  var std_dc_luminance_nrcodes = [\n    0,\n    0,\n    1,\n    5,\n    1,\n    1,\n    1,\n    1,\n    1,\n    1,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0\n  ];\n  var std_dc_luminance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n  var std_ac_luminance_nrcodes = [\n    0,\n    0,\n    2,\n    1,\n    3,\n    3,\n    2,\n    4,\n    3,\n    5,\n    5,\n    4,\n    4,\n    0,\n    0,\n    1,\n    0x7d\n  ];\n  var std_ac_luminance_values = [\n    0x01,\n    0x02,\n    0x03,\n    0x00,\n    0x04,\n    0x11,\n    0x05,\n    0x12,\n    0x21,\n    0x31,\n    0x41,\n    0x06,\n    0x13,\n    0x51,\n    0x61,\n    0x07,\n    0x22,\n    0x71,\n    0x14,\n    0x32,\n    0x81,\n    0x91,\n    0xa1,\n    0x08,\n    0x23,\n    0x42,\n    0xb1,\n    0xc1,\n    0x15,\n    0x52,\n    0xd1,\n    0xf0,\n    0x24,\n    0x33,\n    0x62,\n    0x72,\n    0x82,\n    0x09,\n    0x0a,\n    0x16,\n    0x17,\n    0x18,\n    0x19,\n    0x1a,\n    0x25,\n    0x26,\n    0x27,\n    0x28,\n    0x29,\n    0x2a,\n    0x34,\n    0x35,\n    0x36,\n    0x37,\n    0x38,\n    0x39,\n    0x3a,\n    0x43,\n    0x44,\n    0x45,\n    0x46,\n    0x47,\n    0x48,\n    0x49,\n    0x4a,\n    0x53,\n    0x54,\n    0x55,\n    0x56,\n    0x57,\n    0x58,\n    0x59,\n    0x5a,\n    0x63,\n    0x64,\n    0x65,\n    0x66,\n    0x67,\n    0x68,\n    0x69,\n    0x6a,\n    0x73,\n    0x74,\n    0x75,\n    0x76,\n    0x77,\n    0x78,\n    0x79,\n    0x7a,\n    0x83,\n    0x84,\n    0x85,\n    0x86,\n    0x87,\n    0x88,\n    0x89,\n    0x8a,\n    0x92,\n    0x93,\n    0x94,\n    0x95,\n    0x96,\n    0x97,\n    0x98,\n    0x99,\n    0x9a,\n    0xa2,\n    0xa3,\n    0xa4,\n    0xa5,\n    0xa6,\n    0xa7,\n    0xa8,\n    0xa9,\n    0xaa,\n    0xb2,\n    0xb3,\n    0xb4,\n    0xb5,\n    0xb6,\n    0xb7,\n    0xb8,\n    0xb9,\n    0xba,\n    0xc2,\n    0xc3,\n    0xc4,\n    0xc5,\n    0xc6,\n    0xc7,\n    0xc8,\n    0xc9,\n    0xca,\n    0xd2,\n    0xd3,\n    0xd4,\n    0xd5,\n    0xd6,\n    0xd7,\n    0xd8,\n    0xd9,\n    0xda,\n    0xe1,\n    0xe2,\n    0xe3,\n    0xe4,\n    0xe5,\n    0xe6,\n    0xe7,\n    0xe8,\n    0xe9,\n    0xea,\n    0xf1,\n    0xf2,\n    0xf3,\n    0xf4,\n    0xf5,\n    0xf6,\n    0xf7,\n    0xf8,\n    0xf9,\n    0xfa\n  ];\n\n  var std_dc_chrominance_nrcodes = [\n    0,\n    0,\n    3,\n    1,\n    1,\n    1,\n    1,\n    1,\n    1,\n    1,\n    1,\n    1,\n    0,\n    0,\n    0,\n    0,\n    0\n  ];\n  var std_dc_chrominance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n  var std_ac_chrominance_nrcodes = [\n    0,\n    0,\n    2,\n    1,\n    2,\n    4,\n    4,\n    3,\n    4,\n    7,\n    5,\n    4,\n    4,\n    0,\n    1,\n    2,\n    0x77\n  ];\n  var std_ac_chrominance_values = [\n    0x00,\n    0x01,\n    0x02,\n    0x03,\n    0x11,\n    0x04,\n    0x05,\n    0x21,\n    0x31,\n    0x06,\n    0x12,\n    0x41,\n    0x51,\n    0x07,\n    0x61,\n    0x71,\n    0x13,\n    0x22,\n    0x32,\n    0x81,\n    0x08,\n    0x14,\n    0x42,\n    0x91,\n    0xa1,\n    0xb1,\n    0xc1,\n    0x09,\n    0x23,\n    0x33,\n    0x52,\n    0xf0,\n    0x15,\n    0x62,\n    0x72,\n    0xd1,\n    0x0a,\n    0x16,\n    0x24,\n    0x34,\n    0xe1,\n    0x25,\n    0xf1,\n    0x17,\n    0x18,\n    0x19,\n    0x1a,\n    0x26,\n    0x27,\n    0x28,\n    0x29,\n    0x2a,\n    0x35,\n    0x36,\n    0x37,\n    0x38,\n    0x39,\n    0x3a,\n    0x43,\n    0x44,\n    0x45,\n    0x46,\n    0x47,\n    0x48,\n    0x49,\n    0x4a,\n    0x53,\n    0x54,\n    0x55,\n    0x56,\n    0x57,\n    0x58,\n    0x59,\n    0x5a,\n    0x63,\n    0x64,\n    0x65,\n    0x66,\n    0x67,\n    0x68,\n    0x69,\n    0x6a,\n    0x73,\n    0x74,\n    0x75,\n    0x76,\n    0x77,\n    0x78,\n    0x79,\n    0x7a,\n    0x82,\n    0x83,\n    0x84,\n    0x85,\n    0x86,\n    0x87,\n    0x88,\n    0x89,\n    0x8a,\n    0x92,\n    0x93,\n    0x94,\n    0x95,\n    0x96,\n    0x97,\n    0x98,\n    0x99,\n    0x9a,\n    0xa2,\n    0xa3,\n    0xa4,\n    0xa5,\n    0xa6,\n    0xa7,\n    0xa8,\n    0xa9,\n    0xaa,\n    0xb2,\n    0xb3,\n    0xb4,\n    0xb5,\n    0xb6,\n    0xb7,\n    0xb8,\n    0xb9,\n    0xba,\n    0xc2,\n    0xc3,\n    0xc4,\n    0xc5,\n    0xc6,\n    0xc7,\n    0xc8,\n    0xc9,\n    0xca,\n    0xd2,\n    0xd3,\n    0xd4,\n    0xd5,\n    0xd6,\n    0xd7,\n    0xd8,\n    0xd9,\n    0xda,\n    0xe2,\n    0xe3,\n    0xe4,\n    0xe5,\n    0xe6,\n    0xe7,\n    0xe8,\n    0xe9,\n    0xea,\n    0xf2,\n    0xf3,\n    0xf4,\n    0xf5,\n    0xf6,\n    0xf7,\n    0xf8,\n    0xf9,\n    0xfa\n  ];\n\n  function initQuantTables(sf) {\n    var YQT = [\n      16,\n      11,\n      10,\n      16,\n      24,\n      40,\n      51,\n      61,\n      12,\n      12,\n      14,\n      19,\n      26,\n      58,\n      60,\n      55,\n      14,\n      13,\n      16,\n      24,\n      40,\n      57,\n      69,\n      56,\n      14,\n      17,\n      22,\n      29,\n      51,\n      87,\n      80,\n      62,\n      18,\n      22,\n      37,\n      56,\n      68,\n      109,\n      103,\n      77,\n      24,\n      35,\n      55,\n      64,\n      81,\n      104,\n      113,\n      92,\n      49,\n      64,\n      78,\n      87,\n      103,\n      121,\n      120,\n      101,\n      72,\n      92,\n      95,\n      98,\n      112,\n      100,\n      103,\n      99\n    ];\n\n    for (var i = 0; i < 64; i++) {\n      var t = ffloor((YQT[i] * sf + 50) / 100);\n      t = Math.min(Math.max(t, 1), 255);\n      YTable[ZigZag[i]] = t;\n    }\n    var UVQT = [\n      17,\n      18,\n      24,\n      47,\n      99,\n      99,\n      99,\n      99,\n      18,\n      21,\n      26,\n      66,\n      99,\n      99,\n      99,\n      99,\n      24,\n      26,\n      56,\n      99,\n      99,\n      99,\n      99,\n      99,\n      47,\n      66,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99,\n      99\n    ];\n    for (var j = 0; j < 64; j++) {\n      var u = ffloor((UVQT[j] * sf + 50) / 100);\n      u = Math.min(Math.max(u, 1), 255);\n      UVTable[ZigZag[j]] = u;\n    }\n    var aasf = [\n      1.0,\n      1.387039845,\n      1.306562965,\n      1.175875602,\n      1.0,\n      0.785694958,\n      0.5411961,\n      0.275899379\n    ];\n    var k = 0;\n    for (var row = 0; row < 8; row++) {\n      for (var col = 0; col < 8; col++) {\n        fdtbl_Y[k] = 1.0 / (YTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n        fdtbl_UV[k] = 1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n        k++;\n      }\n    }\n  }\n\n  function computeHuffmanTbl(nrcodes, std_table) {\n    var codevalue = 0;\n    var pos_in_table = 0;\n    var HT = new Array();\n    for (var k = 1; k <= 16; k++) {\n      for (var j = 1; j <= nrcodes[k]; j++) {\n        HT[std_table[pos_in_table]] = [];\n        HT[std_table[pos_in_table]][0] = codevalue;\n        HT[std_table[pos_in_table]][1] = k;\n        pos_in_table++;\n        codevalue++;\n      }\n      codevalue *= 2;\n    }\n    return HT;\n  }\n\n  function initHuffmanTbl() {\n    YDC_HT = computeHuffmanTbl(\n      std_dc_luminance_nrcodes,\n      std_dc_luminance_values\n    );\n    UVDC_HT = computeHuffmanTbl(\n      std_dc_chrominance_nrcodes,\n      std_dc_chrominance_values\n    );\n    YAC_HT = computeHuffmanTbl(\n      std_ac_luminance_nrcodes,\n      std_ac_luminance_values\n    );\n    UVAC_HT = computeHuffmanTbl(\n      std_ac_chrominance_nrcodes,\n      std_ac_chrominance_values\n    );\n  }\n\n  function initCategoryNumber() {\n    var nrlower = 1;\n    var nrupper = 2;\n    for (var cat = 1; cat <= 15; cat++) {\n      //Positive numbers\n      for (var nr = nrlower; nr < nrupper; nr++) {\n        category[32767 + nr] = cat;\n        bitcode[32767 + nr] = [];\n        bitcode[32767 + nr][1] = cat;\n        bitcode[32767 + nr][0] = nr;\n      }\n      //Negative numbers\n      for (var nrneg = -(nrupper - 1); nrneg <= -nrlower; nrneg++) {\n        category[32767 + nrneg] = cat;\n        bitcode[32767 + nrneg] = [];\n        bitcode[32767 + nrneg][1] = cat;\n        bitcode[32767 + nrneg][0] = nrupper - 1 + nrneg;\n      }\n      nrlower <<= 1;\n      nrupper <<= 1;\n    }\n  }\n\n  function initRGBYUVTable() {\n    for (var i = 0; i < 256; i++) {\n      RGB_YUV_TABLE[i] = 19595 * i;\n      RGB_YUV_TABLE[(i + 256) >> 0] = 38470 * i;\n      RGB_YUV_TABLE[(i + 512) >> 0] = 7471 * i + 0x8000;\n      RGB_YUV_TABLE[(i + 768) >> 0] = -11059 * i;\n      RGB_YUV_TABLE[(i + 1024) >> 0] = -21709 * i;\n      RGB_YUV_TABLE[(i + 1280) >> 0] = 32768 * i + 0x807fff;\n      RGB_YUV_TABLE[(i + 1536) >> 0] = -27439 * i;\n      RGB_YUV_TABLE[(i + 1792) >> 0] = -5329 * i;\n    }\n  }\n\n  // IO functions\n  function writeBits(bs) {\n    var value = bs[0];\n    var posval = bs[1] - 1;\n    while (posval >= 0) {\n      if (value & (1 << posval)) {\n        bytenew |= 1 << bytepos;\n      }\n      posval--;\n      bytepos--;\n      if (bytepos < 0) {\n        if (bytenew == 0xff) {\n          writeByte(0xff);\n          writeByte(0);\n        } else {\n          writeByte(bytenew);\n        }\n        bytepos = 7;\n        bytenew = 0;\n      }\n    }\n  }\n\n  function writeByte(value) {\n    //byteout.push(clt[value]); // write char directly instead of converting later\n    byteout.push(value);\n  }\n\n  function writeWord(value) {\n    writeByte((value >> 8) & 0xff);\n    writeByte(value & 0xff);\n  }\n\n  // DCT & quantization core\n  function fDCTQuant(data, fdtbl) {\n    var d0, d1, d2, d3, d4, d5, d6, d7;\n    /* Pass 1: process rows. */\n    var dataOff = 0;\n    var i;\n    var I8 = 8;\n    var I64 = 64;\n    for (i = 0; i < I8; ++i) {\n      d0 = data[dataOff];\n      d1 = data[dataOff + 1];\n      d2 = data[dataOff + 2];\n      d3 = data[dataOff + 3];\n      d4 = data[dataOff + 4];\n      d5 = data[dataOff + 5];\n      d6 = data[dataOff + 6];\n      d7 = data[dataOff + 7];\n\n      var tmp0 = d0 + d7;\n      var tmp7 = d0 - d7;\n      var tmp1 = d1 + d6;\n      var tmp6 = d1 - d6;\n      var tmp2 = d2 + d5;\n      var tmp5 = d2 - d5;\n      var tmp3 = d3 + d4;\n      var tmp4 = d3 - d4;\n\n      /* Even part */\n      var tmp10 = tmp0 + tmp3; /* phase 2 */\n      var tmp13 = tmp0 - tmp3;\n      var tmp11 = tmp1 + tmp2;\n      var tmp12 = tmp1 - tmp2;\n\n      data[dataOff] = tmp10 + tmp11; /* phase 3 */\n      data[dataOff + 4] = tmp10 - tmp11;\n\n      var z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */\n      data[dataOff + 2] = tmp13 + z1; /* phase 5 */\n      data[dataOff + 6] = tmp13 - z1;\n\n      /* Odd part */\n      tmp10 = tmp4 + tmp5; /* phase 2 */\n      tmp11 = tmp5 + tmp6;\n      tmp12 = tmp6 + tmp7;\n\n      /* The rotator is modified from fig 4-8 to avoid extra negations. */\n      var z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */\n      var z2 = 0.5411961 * tmp10 + z5; /* c2-c6 */\n      var z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */\n      var z3 = tmp11 * 0.707106781; /* c4 */\n\n      var z11 = tmp7 + z3; /* phase 5 */\n      var z13 = tmp7 - z3;\n\n      data[dataOff + 5] = z13 + z2; /* phase 6 */\n      data[dataOff + 3] = z13 - z2;\n      data[dataOff + 1] = z11 + z4;\n      data[dataOff + 7] = z11 - z4;\n\n      dataOff += 8; /* advance pointer to next row */\n    }\n\n    /* Pass 2: process columns. */\n    dataOff = 0;\n    for (i = 0; i < I8; ++i) {\n      d0 = data[dataOff];\n      d1 = data[dataOff + 8];\n      d2 = data[dataOff + 16];\n      d3 = data[dataOff + 24];\n      d4 = data[dataOff + 32];\n      d5 = data[dataOff + 40];\n      d6 = data[dataOff + 48];\n      d7 = data[dataOff + 56];\n\n      var tmp0p2 = d0 + d7;\n      var tmp7p2 = d0 - d7;\n      var tmp1p2 = d1 + d6;\n      var tmp6p2 = d1 - d6;\n      var tmp2p2 = d2 + d5;\n      var tmp5p2 = d2 - d5;\n      var tmp3p2 = d3 + d4;\n      var tmp4p2 = d3 - d4;\n\n      /* Even part */\n      var tmp10p2 = tmp0p2 + tmp3p2; /* phase 2 */\n      var tmp13p2 = tmp0p2 - tmp3p2;\n      var tmp11p2 = tmp1p2 + tmp2p2;\n      var tmp12p2 = tmp1p2 - tmp2p2;\n\n      data[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */\n      data[dataOff + 32] = tmp10p2 - tmp11p2;\n\n      var z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */\n      data[dataOff + 16] = tmp13p2 + z1p2; /* phase 5 */\n      data[dataOff + 48] = tmp13p2 - z1p2;\n\n      /* Odd part */\n      tmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */\n      tmp11p2 = tmp5p2 + tmp6p2;\n      tmp12p2 = tmp6p2 + tmp7p2;\n\n      /* The rotator is modified from fig 4-8 to avoid extra negations. */\n      var z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */\n      var z2p2 = 0.5411961 * tmp10p2 + z5p2; /* c2-c6 */\n      var z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */\n      var z3p2 = tmp11p2 * 0.707106781; /* c4 */\n\n      var z11p2 = tmp7p2 + z3p2; /* phase 5 */\n      var z13p2 = tmp7p2 - z3p2;\n\n      data[dataOff + 40] = z13p2 + z2p2; /* phase 6 */\n      data[dataOff + 24] = z13p2 - z2p2;\n      data[dataOff + 8] = z11p2 + z4p2;\n      data[dataOff + 56] = z11p2 - z4p2;\n\n      dataOff++; /* advance pointer to next column */\n    }\n\n    // Quantize/descale the coefficients\n    var fDCTQuant;\n    for (i = 0; i < I64; ++i) {\n      // Apply the quantization and scaling factor & Round to nearest integer\n      fDCTQuant = data[i] * fdtbl[i];\n      outputfDCTQuant[i] =\n        fDCTQuant > 0.0 ? (fDCTQuant + 0.5) | 0 : (fDCTQuant - 0.5) | 0;\n      //outputfDCTQuant[i] = fround(fDCTQuant);\n    }\n    return outputfDCTQuant;\n  }\n\n  function writeAPP0() {\n    writeWord(0xffe0); // marker\n    writeWord(16); // length\n    writeByte(0x4a); // J\n    writeByte(0x46); // F\n    writeByte(0x49); // I\n    writeByte(0x46); // F\n    writeByte(0); // = \"JFIF\",'\\0'\n    writeByte(1); // versionhi\n    writeByte(1); // versionlo\n    writeByte(0); // xyunits\n    writeWord(1); // xdensity\n    writeWord(1); // ydensity\n    writeByte(0); // thumbnwidth\n    writeByte(0); // thumbnheight\n  }\n\n  function writeSOF0(width, height) {\n    writeWord(0xffc0); // marker\n    writeWord(17); // length, truecolor YUV JPG\n    writeByte(8); // precision\n    writeWord(height);\n    writeWord(width);\n    writeByte(3); // nrofcomponents\n    writeByte(1); // IdY\n    writeByte(0x11); // HVY\n    writeByte(0); // QTY\n    writeByte(2); // IdU\n    writeByte(0x11); // HVU\n    writeByte(1); // QTU\n    writeByte(3); // IdV\n    writeByte(0x11); // HVV\n    writeByte(1); // QTV\n  }\n\n  function writeDQT() {\n    writeWord(0xffdb); // marker\n    writeWord(132); // length\n    writeByte(0);\n    for (var i = 0; i < 64; i++) {\n      writeByte(YTable[i]);\n    }\n    writeByte(1);\n    for (var j = 0; j < 64; j++) {\n      writeByte(UVTable[j]);\n    }\n  }\n\n  function writeDHT() {\n    writeWord(0xffc4); // marker\n    writeWord(0x01a2); // length\n\n    writeByte(0); // HTYDCinfo\n    for (var i = 0; i < 16; i++) {\n      writeByte(std_dc_luminance_nrcodes[i + 1]);\n    }\n    for (var j = 0; j <= 11; j++) {\n      writeByte(std_dc_luminance_values[j]);\n    }\n\n    writeByte(0x10); // HTYACinfo\n    for (var k = 0; k < 16; k++) {\n      writeByte(std_ac_luminance_nrcodes[k + 1]);\n    }\n    for (var l = 0; l <= 161; l++) {\n      writeByte(std_ac_luminance_values[l]);\n    }\n\n    writeByte(1); // HTUDCinfo\n    for (var m = 0; m < 16; m++) {\n      writeByte(std_dc_chrominance_nrcodes[m + 1]);\n    }\n    for (var n = 0; n <= 11; n++) {\n      writeByte(std_dc_chrominance_values[n]);\n    }\n\n    writeByte(0x11); // HTUACinfo\n    for (var o = 0; o < 16; o++) {\n      writeByte(std_ac_chrominance_nrcodes[o + 1]);\n    }\n    for (var p = 0; p <= 161; p++) {\n      writeByte(std_ac_chrominance_values[p]);\n    }\n  }\n\n  function writeSOS() {\n    writeWord(0xffda); // marker\n    writeWord(12); // length\n    writeByte(3); // nrofcomponents\n    writeByte(1); // IdY\n    writeByte(0); // HTY\n    writeByte(2); // IdU\n    writeByte(0x11); // HTU\n    writeByte(3); // IdV\n    writeByte(0x11); // HTV\n    writeByte(0); // Ss\n    writeByte(0x3f); // Se\n    writeByte(0); // Bf\n  }\n\n  function processDU(CDU, fdtbl, DC, HTDC, HTAC) {\n    var EOB = HTAC[0x00];\n    var M16zeroes = HTAC[0xf0];\n    var pos;\n    var I16 = 16;\n    var I63 = 63;\n    var I64 = 64;\n    var DU_DCT = fDCTQuant(CDU, fdtbl);\n    //ZigZag reorder\n    for (var j = 0; j < I64; ++j) {\n      DU[ZigZag[j]] = DU_DCT[j];\n    }\n    var Diff = DU[0] - DC;\n    DC = DU[0];\n    //Encode DC\n    if (Diff == 0) {\n      writeBits(HTDC[0]); // Diff might be 0\n    } else {\n      pos = 32767 + Diff;\n      writeBits(HTDC[category[pos]]);\n      writeBits(bitcode[pos]);\n    }\n    //Encode ACs\n    var end0pos = 63; // was const... which is crazy\n    while (end0pos > 0 && DU[end0pos] == 0) {\n      end0pos--;\n    }\n    //end0pos = first element in reverse order !=0\n    if (end0pos == 0) {\n      writeBits(EOB);\n      return DC;\n    }\n    var i = 1;\n    var lng;\n    while (i <= end0pos) {\n      var startpos = i;\n      while (DU[i] == 0 && i <= end0pos) {\n        ++i;\n      }\n      var nrzeroes = i - startpos;\n      if (nrzeroes >= I16) {\n        lng = nrzeroes >> 4;\n        for (var nrmarker = 1; nrmarker <= lng; ++nrmarker)\n          writeBits(M16zeroes);\n        nrzeroes = nrzeroes & 0xf;\n      }\n      pos = 32767 + DU[i];\n      writeBits(HTAC[(nrzeroes << 4) + category[pos]]);\n      writeBits(bitcode[pos]);\n      i++;\n    }\n    if (end0pos != I63) {\n      writeBits(EOB);\n    }\n    return DC;\n  }\n\n  function initCharLookupTable() {\n    var sfcc = String.fromCharCode;\n    for (var i = 0; i < 256; i++) {\n      ///// ACHTUNG // 255\n      clt[i] = sfcc(i);\n    }\n  }\n\n  this.encode = function(\n    image,\n    quality // image data object\n  ) {\n    if (quality) setQuality(quality);\n\n    // Initialize bit writer\n    byteout = new Array();\n    bytenew = 0;\n    bytepos = 7;\n\n    // Add JPEG headers\n    writeWord(0xffd8); // SOI\n    writeAPP0();\n    writeDQT();\n    writeSOF0(image.width, image.height);\n    writeDHT();\n    writeSOS();\n\n    // Encode 8x8 macroblocks\n    var DCY = 0;\n    var DCU = 0;\n    var DCV = 0;\n\n    bytenew = 0;\n    bytepos = 7;\n\n    this.encode.displayName = \"_encode_\";\n\n    var imageData = image.data;\n    var width = image.width;\n    var height = image.height;\n\n    var quadWidth = width * 4;\n\n    var x,\n      y = 0;\n    var r, g, b;\n    var start, p, col, row, pos;\n    while (y < height) {\n      x = 0;\n      while (x < quadWidth) {\n        start = quadWidth * y + x;\n        col = -1;\n        row = 0;\n\n        for (pos = 0; pos < 64; pos++) {\n          row = pos >> 3; // /8\n          col = (pos & 7) * 4; // %8\n          p = start + row * quadWidth + col;\n\n          if (y + row >= height) {\n            // padding bottom\n            p -= quadWidth * (y + 1 + row - height);\n          }\n\n          if (x + col >= quadWidth) {\n            // padding right\n            p -= x + col - quadWidth + 4;\n          }\n\n          r = imageData[p++];\n          g = imageData[p++];\n          b = imageData[p++];\n\n          /* // calculate YUV values dynamically\n\t\t\t\t\tYDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80\n\t\t\t\t\tUDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b));\n\t\t\t\t\tVDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b));\n\t\t\t\t\t*/\n\n          // use lookup table (slightly faster)\n          YDU[pos] =\n            ((RGB_YUV_TABLE[r] +\n              RGB_YUV_TABLE[(g + 256) >> 0] +\n              RGB_YUV_TABLE[(b + 512) >> 0]) >>\n              16) -\n            128;\n          UDU[pos] =\n            ((RGB_YUV_TABLE[(r + 768) >> 0] +\n              RGB_YUV_TABLE[(g + 1024) >> 0] +\n              RGB_YUV_TABLE[(b + 1280) >> 0]) >>\n              16) -\n            128;\n          VDU[pos] =\n            ((RGB_YUV_TABLE[(r + 1280) >> 0] +\n              RGB_YUV_TABLE[(g + 1536) >> 0] +\n              RGB_YUV_TABLE[(b + 1792) >> 0]) >>\n              16) -\n            128;\n        }\n\n        DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n        DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n        DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n        x += 32;\n      }\n      y += 8;\n    }\n\n    ////////////////////////////////////////////////////////////////\n\n    // Do the bit alignment of the EOI marker\n    if (bytepos >= 0) {\n      var fillbits = [];\n      fillbits[1] = bytepos + 1;\n      fillbits[0] = (1 << (bytepos + 1)) - 1;\n      writeBits(fillbits);\n    }\n\n    writeWord(0xffd9); //EOI\n\n    return new Uint8Array(byteout);\n  };\n\n  function setQuality(quality) {\n    quality = Math.min(Math.max(quality, 1), 100);\n\n    if (currentQuality == quality) return; // don't recalc if unchanged\n\n    var sf =\n      quality < 50 ? Math.floor(5000 / quality) : Math.floor(200 - quality * 2);\n\n    initQuantTables(sf);\n    currentQuality = quality;\n    //console.log('Quality set to: '+quality +'%');\n  }\n\n  function init() {\n    quality = quality || 50;\n    // Create tables\n    initCharLookupTable();\n    initHuffmanTbl();\n    initCategoryNumber();\n    initRGBYUVTable();\n\n    setQuality(quality);\n  }\n  init();\n}\n\nexport { JPEGEncoder };\n", "/**\n * @author shaozilee\n *\n * Bmp format decoder,support 1bit 4bit 8bit 24bit bmp\n *\n */\n\nimport { console } from \"./console.js\";\n\nfunction BmpDecoder(buffer, is_with_alpha) {\n  this.pos = 0;\n  this.buffer = buffer;\n  this.datav = new DataView(buffer.buffer);\n  this.is_with_alpha = !!is_with_alpha;\n  this.bottom_up = true;\n  this.flag =\n    String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]);\n  this.pos += 2;\n  if ([\"BM\", \"BA\", \"CI\", \"CP\", \"IC\", \"PT\"].indexOf(this.flag) === -1)\n    throw new Error(\"Invalid BMP File\");\n  this.parseHeader();\n  this.parseBGR();\n}\n\nBmpDecoder.prototype.parseHeader = function() {\n  this.fileSize = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.reserved = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.offset = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.headerSize = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.width = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.height = this.datav.getInt32(this.pos, true);\n  this.pos += 4;\n  this.planes = this.datav.getUint16(this.pos, true);\n  this.pos += 2;\n  this.bitPP = this.datav.getUint16(this.pos, true);\n  this.pos += 2;\n  this.compress = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.rawSize = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.hr = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.vr = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.colors = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n  this.importantColors = this.datav.getUint32(this.pos, true);\n  this.pos += 4;\n\n  if (this.bitPP === 16 && this.is_with_alpha) {\n    this.bitPP = 15;\n  }\n  if (this.bitPP < 15) {\n    var len = this.colors === 0 ? 1 << this.bitPP : this.colors;\n    this.palette = new Array(len);\n    for (var i = 0; i < len; i++) {\n      var blue = this.datav.getUint8(this.pos++, true);\n      var green = this.datav.getUint8(this.pos++, true);\n      var red = this.datav.getUint8(this.pos++, true);\n      var quad = this.datav.getUint8(this.pos++, true);\n      this.palette[i] = {\n        red: red,\n        green: green,\n        blue: blue,\n        quad: quad\n      };\n    }\n  }\n  if (this.height < 0) {\n    this.height *= -1;\n    this.bottom_up = false;\n  }\n};\n\nBmpDecoder.prototype.parseBGR = function() {\n  this.pos = this.offset;\n  var bitn = \"bit\" + this.bitPP;\n  var len = this.width * this.height * 4;\n\n  if (len > 512 * 1024 * 1024) {\n    throw new Error(\"Image dimensions exceed 512MB, which is too large.\");\n  }\n\n  this.data = new Uint8Array(len);\n\n  try {\n    this[bitn]();\n  } catch (e) {\n    console.log(\"bit decode error:\" + e);\n  }\n};\n\nBmpDecoder.prototype.bit1 = function() {\n  var xlen = Math.ceil(this.width / 8);\n  var mode = xlen % 4;\n  var y;\n  for (y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < xlen; x++) {\n      var b = this.datav.getUint8(this.pos++, true);\n      var location = line * this.width * 4 + x * 8 * 4;\n      for (var i = 0; i < 8; i++) {\n        if (x * 8 + i < this.width) {\n          var rgb = this.palette[(b >> (7 - i)) & 0x1];\n          this.data[location + i * 4] = rgb.blue;\n          this.data[location + i * 4 + 1] = rgb.green;\n          this.data[location + i * 4 + 2] = rgb.red;\n          this.data[location + i * 4 + 3] = 0xff;\n        } else {\n          break;\n        }\n      }\n    }\n\n    if (mode !== 0) {\n      this.pos += 4 - mode;\n    }\n  }\n};\n\nBmpDecoder.prototype.bit4 = function() {\n  var xlen = Math.ceil(this.width / 2);\n  var mode = xlen % 4;\n  for (var y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < xlen; x++) {\n      var b = this.datav.getUint8(this.pos++, true);\n      var location = line * this.width * 4 + x * 2 * 4;\n\n      var before = b >> 4;\n      var after = b & 0x0f;\n\n      var rgb = this.palette[before];\n      this.data[location] = rgb.blue;\n      this.data[location + 1] = rgb.green;\n      this.data[location + 2] = rgb.red;\n      this.data[location + 3] = 0xff;\n\n      if (x * 2 + 1 >= this.width) break;\n\n      rgb = this.palette[after];\n      this.data[location + 4] = rgb.blue;\n      this.data[location + 4 + 1] = rgb.green;\n      this.data[location + 4 + 2] = rgb.red;\n      this.data[location + 4 + 3] = 0xff;\n    }\n\n    if (mode !== 0) {\n      this.pos += 4 - mode;\n    }\n  }\n};\n\nBmpDecoder.prototype.bit8 = function() {\n  var mode = this.width % 4;\n  for (var y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < this.width; x++) {\n      var b = this.datav.getUint8(this.pos++, true);\n      var location = line * this.width * 4 + x * 4;\n      if (b < this.palette.length) {\n        var rgb = this.palette[b];\n        this.data[location] = rgb.red;\n        this.data[location + 1] = rgb.green;\n        this.data[location + 2] = rgb.blue;\n        this.data[location + 3] = 0xff;\n      } else {\n        this.data[location] = 0xff;\n        this.data[location + 1] = 0xff;\n        this.data[location + 2] = 0xff;\n        this.data[location + 3] = 0xff;\n      }\n    }\n    if (mode !== 0) {\n      this.pos += 4 - mode;\n    }\n  }\n};\n\nBmpDecoder.prototype.bit15 = function() {\n  var dif_w = this.width % 3;\n  var _11111 = parseInt(\"11111\", 2),\n    _1_5 = _11111;\n  for (var y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < this.width; x++) {\n      var B = this.datav.getUint16(this.pos, true);\n      this.pos += 2;\n      var blue = (((B & _1_5) / _1_5) * 255) | 0;\n      var green = ((((B >> 5) & _1_5) / _1_5) * 255) | 0;\n      var red = ((((B >> 10) & _1_5) / _1_5) * 255) | 0;\n      var alpha = B >> 15 ? 0xff : 0x00;\n\n      var location = line * this.width * 4 + x * 4;\n      this.data[location] = red;\n      this.data[location + 1] = green;\n      this.data[location + 2] = blue;\n      this.data[location + 3] = alpha;\n    }\n    //skip extra bytes\n    this.pos += dif_w;\n  }\n};\n\nBmpDecoder.prototype.bit16 = function() {\n  var dif_w = this.width % 3;\n  var _11111 = parseInt(\"11111\", 2),\n    _1_5 = _11111;\n  var _111111 = parseInt(\"111111\", 2),\n    _1_6 = _111111;\n  for (var y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < this.width; x++) {\n      var B = this.datav.getUint16(this.pos, true);\n      this.pos += 2;\n      var alpha = 0xff;\n      var blue = (((B & _1_5) / _1_5) * 255) | 0;\n      var green = ((((B >> 5) & _1_6) / _1_6) * 255) | 0;\n      var red = (((B >> 11) / _1_5) * 255) | 0;\n\n      var location = line * this.width * 4 + x * 4;\n      this.data[location] = red;\n      this.data[location + 1] = green;\n      this.data[location + 2] = blue;\n      this.data[location + 3] = alpha;\n    }\n    //skip extra bytes\n    this.pos += dif_w;\n  }\n};\n\nBmpDecoder.prototype.bit24 = function() {\n  //when height > 0\n  for (var y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < this.width; x++) {\n      var blue = this.datav.getUint8(this.pos++, true);\n      var green = this.datav.getUint8(this.pos++, true);\n      var red = this.datav.getUint8(this.pos++, true);\n      var location = line * this.width * 4 + x * 4;\n      this.data[location] = red;\n      this.data[location + 1] = green;\n      this.data[location + 2] = blue;\n      this.data[location + 3] = 0xff;\n    }\n    //skip extra bytes\n    this.pos += this.width % 4;\n  }\n};\n\n/**\n * add 32bit decode func\n * @author soubok\n */\nBmpDecoder.prototype.bit32 = function() {\n  //when height > 0\n  for (var y = this.height - 1; y >= 0; y--) {\n    var line = this.bottom_up ? y : this.height - 1 - y;\n    for (var x = 0; x < this.width; x++) {\n      var blue = this.datav.getUint8(this.pos++, true);\n      var green = this.datav.getUint8(this.pos++, true);\n      var red = this.datav.getUint8(this.pos++, true);\n      var alpha = this.datav.getUint8(this.pos++, true);\n      var location = line * this.width * 4 + x * 4;\n      this.data[location] = red;\n      this.data[location + 1] = green;\n      this.data[location + 2] = blue;\n      this.data[location + 3] = alpha;\n    }\n    //skip extra bytes\n    //this.pos += (this.width % 4);\n  }\n};\n\nBmpDecoder.prototype.getData = function() {\n  return this.data;\n};\n\nexport { BmpDecoder };\n", "function WebPDecoder(imageData) {\n  /** @license\n   * Copyright 2011 Google Inc.\n   *\n   * This code is licensed under the same terms as WebM:\n   *  Software License Agreement:  http://www.webmproject.org/license/software/\n   *  Additional IP Rights Grant:  http://www.webmproject.org/license/additional/\n   * -----------------------------------------------------------------------------\n   *\n   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n   * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n   * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n   * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n   * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n   *\n   * -----------------------------------------------------------------------------\n   *\n   * Copyright 2011-2017 Dominik Homberger\n   * Libwebp Javascript / libwebpjs - the libwebp implementation in javascript (v0.6.0)\n   *\n   * Author: Dominik Homberger (dominik.homberger@gmail.com)\n   */\n\n  var self = this;\n  var UpsampleRgbLinePair,\n    UpsampleBgrLinePair,\n    UpsampleRgbaLinePair,\n    UpsampleBgraLinePair,\n    UpsampleArgbLinePair,\n    UpsampleArgbLinePair,\n    UpsampleRgba4444LinePair,\n    UpsampleRgb565LinePair;\n\n  function x(F) {\n    if (!F) throw Error(\"assert :P\");\n  }\n  function fa(F, L, J) {\n    for (var H = 0; 4 > H; H++) if (F[L + H] != J.charCodeAt(H)) return !0;\n    return !1;\n  }\n  function I(F, L, J, H, Z) {\n    for (var O = 0; O < Z; O++) F[L + O] = J[H + O];\n  }\n  function M(F, L, J, H) {\n    for (var Z = 0; Z < H; Z++) F[L + Z] = J;\n  }\n  function V(F) {\n    return new Int32Array(F);\n  }\n  function wa(F, L) {\n    for (var J = [], H = 0; H < F; H++) J.push(new L());\n    return J;\n  }\n  function wb() {\n    function F(J, H, Z) {\n      for (var O = Z[H], L = 0; L < O; L++) {\n        J.push(Z.length > H + 1 ? [] : 0);\n        if (Z.length < H + 1) break;\n        F(J[L], H + 1, Z);\n      }\n    }\n    var L = [];\n    F(L, 0, [3, 11]);\n    return L;\n  }\n  function Ed(F, L) {\n    function J(H, O, F) {\n      for (var Z = F[O], ma = 0; ma < Z; ma++) {\n        H.push(F.length > O + 1 ? [] : new L());\n        if (F.length < O + 1) break;\n        J(H[ma], O + 1, F);\n      }\n    }\n    var H = [];\n    J(H, 0, F);\n    return H;\n  }\n  var _WebPDecoder = function() {\n    var self = this;\n    function F() {\n      V(55);\n    }\n    function L(a, b) {\n      for (var c = (1 << (b - 1)) >>> 0; a & c; ) c >>>= 1;\n      return c ? (a & (c - 1)) + c : a;\n    }\n    function J(a, b, c, d, e) {\n      x(!(d % c));\n      do (d -= c), (a[b + d] = e);\n      while (0 < d);\n    }\n    function H(a, b, c, d, e, f) {\n      var g = b,\n        h = 1 << c,\n        k,\n        l,\n        m = V(16),\n        n = V(16);\n      x(0 != e);\n      x(null != d);\n      x(null != a);\n      x(0 < c);\n      for (l = 0; l < e; ++l) {\n        if (15 < d[l]) return 0;\n        ++m[d[l]];\n      }\n      if (m[0] == e) return 0;\n      n[1] = 0;\n      for (k = 1; 15 > k; ++k) {\n        if (m[k] > 1 << k) return 0;\n        n[k + 1] = n[k] + m[k];\n      }\n      for (l = 0; l < e; ++l) (k = d[l]), 0 < d[l] && (f[n[k]++] = l);\n      if (1 == n[15])\n        return (d = new O()), (d.g = 0), (d.value = f[0]), J(a, g, 1, h, d), h;\n      var r = -1,\n        q = h - 1,\n        t = 0,\n        v = 1,\n        p = 1,\n        u,\n        w = 1 << c;\n      l = 0;\n      k = 1;\n      for (e = 2; k <= c; ++k, e <<= 1) {\n        p <<= 1;\n        v += p;\n        p -= m[k];\n        if (0 > p) return 0;\n        for (; 0 < m[k]; --m[k])\n          (d = new O()),\n            (d.g = k),\n            (d.value = f[l++]),\n            J(a, g + t, e, w, d),\n            (t = L(t, k));\n      }\n      k = c + 1;\n      for (e = 2; 15 >= k; ++k, e <<= 1) {\n        p <<= 1;\n        v += p;\n        p -= m[k];\n        if (0 > p) return 0;\n        for (; 0 < m[k]; --m[k]) {\n          d = new O();\n          if ((t & q) != r) {\n            g += w;\n            r = k;\n            for (u = 1 << (r - c); 15 > r; ) {\n              u -= m[r];\n              if (0 >= u) break;\n              ++r;\n              u <<= 1;\n            }\n            u = r - c;\n            w = 1 << u;\n            h += w;\n            r = t & q;\n            a[b + r].g = u + c;\n            a[b + r].value = g - b - r;\n          }\n          d.g = k - c;\n          d.value = f[l++];\n          J(a, g + (t >> c), e, w, d);\n          t = L(t, k);\n        }\n      }\n      return v != 2 * n[15] - 1 ? 0 : h;\n    }\n    function Z(a, b, c, d, e) {\n      x(2328 >= e);\n      if (512 >= e) var f = V(512);\n      else if (((f = V(e)), null == f)) return 0;\n      return H(a, b, c, d, e, f);\n    }\n    function O() {\n      this.value = this.g = 0;\n    }\n    function Fd() {\n      this.value = this.g = 0;\n    }\n    function Ub() {\n      this.G = wa(5, O);\n      this.H = V(5);\n      this.jc = this.Qb = this.qb = this.nd = 0;\n      this.pd = wa(xb, Fd);\n    }\n    function ma(a, b, c, d) {\n      x(null != a);\n      x(null != b);\n      x(2147483648 > d);\n      a.Ca = 254;\n      a.I = 0;\n      a.b = -8;\n      a.Ka = 0;\n      a.oa = b;\n      a.pa = c;\n      a.Jd = b;\n      a.Yc = c + d;\n      a.Zc = 4 <= d ? c + d - 4 + 1 : c;\n      Qa(a);\n    }\n    function na(a, b) {\n      for (var c = 0; 0 < b--; ) c |= K(a, 128) << b;\n      return c;\n    }\n    function ca(a, b) {\n      var c = na(a, b);\n      return G(a) ? -c : c;\n    }\n    function cb(a, b, c, d) {\n      var e,\n        f = 0;\n      x(null != a);\n      x(null != b);\n      x(4294967288 > d);\n      a.Sb = d;\n      a.Ra = 0;\n      a.u = 0;\n      a.h = 0;\n      4 < d && (d = 4);\n      for (e = 0; e < d; ++e) f += b[c + e] << (8 * e);\n      a.Ra = f;\n      a.bb = d;\n      a.oa = b;\n      a.pa = c;\n    }\n    function Vb(a) {\n      for (; 8 <= a.u && a.bb < a.Sb; )\n        (a.Ra >>>= 8),\n          (a.Ra += (a.oa[a.pa + a.bb] << (ob - 8)) >>> 0),\n          ++a.bb,\n          (a.u -= 8);\n      db(a) && ((a.h = 1), (a.u = 0));\n    }\n    function D(a, b) {\n      x(0 <= b);\n      if (!a.h && b <= Gd) {\n        var c = pb(a) & Hd[b];\n        a.u += b;\n        Vb(a);\n        return c;\n      }\n      a.h = 1;\n      return (a.u = 0);\n    }\n    function Wb() {\n      this.b = this.Ca = this.I = 0;\n      this.oa = [];\n      this.pa = 0;\n      this.Jd = [];\n      this.Yc = 0;\n      this.Zc = [];\n      this.Ka = 0;\n    }\n    function Ra() {\n      this.Ra = 0;\n      this.oa = [];\n      this.h = this.u = this.bb = this.Sb = this.pa = 0;\n    }\n    function pb(a) {\n      return (a.Ra >>> (a.u & (ob - 1))) >>> 0;\n    }\n    function db(a) {\n      x(a.bb <= a.Sb);\n      return a.h || (a.bb == a.Sb && a.u > ob);\n    }\n    function qb(a, b) {\n      a.u = b;\n      a.h = db(a);\n    }\n    function Sa(a) {\n      a.u >= Xb && (x(a.u >= Xb), Vb(a));\n    }\n    function Qa(a) {\n      x(null != a && null != a.oa);\n      a.pa < a.Zc\n        ? ((a.I = (a.oa[a.pa++] | (a.I << 8)) >>> 0), (a.b += 8))\n        : (x(null != a && null != a.oa),\n          a.pa < a.Yc\n            ? ((a.b += 8), (a.I = a.oa[a.pa++] | (a.I << 8)))\n            : a.Ka\n            ? (a.b = 0)\n            : ((a.I <<= 8), (a.b += 8), (a.Ka = 1)));\n    }\n    function G(a) {\n      return na(a, 1);\n    }\n    function K(a, b) {\n      var c = a.Ca;\n      0 > a.b && Qa(a);\n      var d = a.b,\n        e = (c * b) >>> 8,\n        f = (a.I >>> d > e) + 0;\n      f ? ((c -= e), (a.I -= ((e + 1) << d) >>> 0)) : (c = e + 1);\n      d = c;\n      for (e = 0; 256 <= d; ) (e += 8), (d >>= 8);\n      d = 7 ^ (e + Id[d]);\n      a.b -= d;\n      a.Ca = (c << d) - 1;\n      return f;\n    }\n    function ra(a, b, c) {\n      a[b + 0] = (c >> 24) & 255;\n      a[b + 1] = (c >> 16) & 255;\n      a[b + 2] = (c >> 8) & 255;\n      a[b + 3] = (c >> 0) & 255;\n    }\n    function Ta(a, b) {\n      return (a[b + 0] << 0) | (a[b + 1] << 8);\n    }\n    function Yb(a, b) {\n      return Ta(a, b) | (a[b + 2] << 16);\n    }\n    function Ha(a, b) {\n      return Ta(a, b) | (Ta(a, b + 2) << 16);\n    }\n    function Zb(a, b) {\n      var c = 1 << b;\n      x(null != a);\n      x(0 < b);\n      a.X = V(c);\n      if (null == a.X) return 0;\n      a.Mb = 32 - b;\n      a.Xa = b;\n      return 1;\n    }\n    function $b(a, b) {\n      x(null != a);\n      x(null != b);\n      x(a.Xa == b.Xa);\n      I(b.X, 0, a.X, 0, 1 << b.Xa);\n    }\n    function ac() {\n      this.X = [];\n      this.Xa = this.Mb = 0;\n    }\n    function bc(a, b, c, d) {\n      x(null != c);\n      x(null != d);\n      var e = c[0],\n        f = d[0];\n      0 == e && (e = (a * f + b / 2) / b);\n      0 == f && (f = (b * e + a / 2) / a);\n      if (0 >= e || 0 >= f) return 0;\n      c[0] = e;\n      d[0] = f;\n      return 1;\n    }\n    function xa(a, b) {\n      return (a + (1 << b) - 1) >>> b;\n    }\n    function yb(a, b) {\n      return (\n        (((((a & 4278255360) + (b & 4278255360)) >>> 0) & 4278255360) +\n          ((((a & 16711935) + (b & 16711935)) >>> 0) & 16711935)) >>>\n        0\n      );\n    }\n    function X(a, b) {\n      self[b] = function(b, d, e, f, g, h, k) {\n        var c;\n        for (c = 0; c < g; ++c) {\n          var m = self[a](h[k + c - 1], e, f + c);\n          h[k + c] = yb(b[d + c], m);\n        }\n      };\n    }\n    function Jd() {\n      this.ud = this.hd = this.jd = 0;\n    }\n    function aa(a, b) {\n      return ((((a ^ b) & 4278124286) >>> 1) + (a & b)) >>> 0;\n    }\n    function sa(a) {\n      if (0 <= a && 256 > a) return a;\n      if (0 > a) return 0;\n      if (255 < a) return 255;\n    }\n    function eb(a, b) {\n      return sa(a + ((a - b + 0.5) >> 1));\n    }\n    function Ia(a, b, c) {\n      return Math.abs(b - c) - Math.abs(a - c);\n    }\n    function cc(a, b, c, d, e, f, g) {\n      d = f[g - 1];\n      for (c = 0; c < e; ++c) f[g + c] = d = yb(a[b + c], d);\n    }\n    function Kd(a, b, c, d, e) {\n      var f;\n      for (f = 0; f < c; ++f) {\n        var g = a[b + f],\n          h = (g >> 8) & 255,\n          k = g & 16711935,\n          k = k + ((h << 16) + h),\n          k = k & 16711935;\n        d[e + f] = ((g & 4278255360) + k) >>> 0;\n      }\n    }\n    function dc(a, b) {\n      b.jd = (a >> 0) & 255;\n      b.hd = (a >> 8) & 255;\n      b.ud = (a >> 16) & 255;\n    }\n    function Ld(a, b, c, d, e, f) {\n      var g;\n      for (g = 0; g < d; ++g) {\n        var h = b[c + g],\n          k = h >>> 8,\n          l = h >>> 16,\n          m = h,\n          l = l + ((((a.jd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n          l = l & 255,\n          m = m + ((((a.hd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n          m = m + ((((a.ud << 24) >> 24) * ((l << 24) >> 24)) >>> 5),\n          m = m & 255;\n        e[f + g] = (h & 4278255360) + (l << 16) + m;\n      }\n    }\n    function ec(a, b, c, d, e) {\n      self[b] = function(a, b, c, k, l, m, n, r, q) {\n        for (k = n; k < r; ++k)\n          for (n = 0; n < q; ++n) l[m++] = e(c[d(a[b++])]);\n      };\n      self[a] = function(a, b, h, k, l, m, n) {\n        var f = 8 >> a.b,\n          g = a.Ea,\n          t = a.K[0],\n          v = a.w;\n        if (8 > f)\n          for (a = (1 << a.b) - 1, v = (1 << f) - 1; b < h; ++b) {\n            var p = 0,\n              u;\n            for (u = 0; u < g; ++u)\n              u & a || (p = d(k[l++])), (m[n++] = e(t[p & v])), (p >>= f);\n          }\n        else self[\"VP8LMapColor\" + c](k, l, t, v, m, n, b, h, g);\n      };\n    }\n    function Md(a, b, c, d, e) {\n      for (c = b + c; b < c; ) {\n        var f = a[b++];\n        d[e++] = (f >> 16) & 255;\n        d[e++] = (f >> 8) & 255;\n        d[e++] = (f >> 0) & 255;\n      }\n    }\n    function Nd(a, b, c, d, e) {\n      for (c = b + c; b < c; ) {\n        var f = a[b++];\n        d[e++] = (f >> 16) & 255;\n        d[e++] = (f >> 8) & 255;\n        d[e++] = (f >> 0) & 255;\n        d[e++] = (f >> 24) & 255;\n      }\n    }\n    function Od(a, b, c, d, e) {\n      for (c = b + c; b < c; ) {\n        var f = a[b++],\n          g = ((f >> 16) & 240) | ((f >> 12) & 15),\n          f = ((f >> 0) & 240) | ((f >> 28) & 15);\n        d[e++] = g;\n        d[e++] = f;\n      }\n    }\n    function Pd(a, b, c, d, e) {\n      for (c = b + c; b < c; ) {\n        var f = a[b++],\n          g = ((f >> 16) & 248) | ((f >> 13) & 7),\n          f = ((f >> 5) & 224) | ((f >> 3) & 31);\n        d[e++] = g;\n        d[e++] = f;\n      }\n    }\n    function Qd(a, b, c, d, e) {\n      for (c = b + c; b < c; ) {\n        var f = a[b++];\n        d[e++] = (f >> 0) & 255;\n        d[e++] = (f >> 8) & 255;\n        d[e++] = (f >> 16) & 255;\n      }\n    }\n    function fb(a, b, c, d, e, f) {\n      if (0 == f)\n        for (c = b + c; b < c; )\n          (f = a[b++]),\n            ra(\n              d,\n              ((f[0] >> 24) |\n                ((f[1] >> 8) & 65280) |\n                ((f[2] << 8) & 16711680) |\n                (f[3] << 24)) >>>\n                0\n            ),\n            (e += 32);\n      else I(d, e, a, b, c);\n    }\n    function gb(a, b) {\n      self[b][0] = self[a + \"0\"];\n      self[b][1] = self[a + \"1\"];\n      self[b][2] = self[a + \"2\"];\n      self[b][3] = self[a + \"3\"];\n      self[b][4] = self[a + \"4\"];\n      self[b][5] = self[a + \"5\"];\n      self[b][6] = self[a + \"6\"];\n      self[b][7] = self[a + \"7\"];\n      self[b][8] = self[a + \"8\"];\n      self[b][9] = self[a + \"9\"];\n      self[b][10] = self[a + \"10\"];\n      self[b][11] = self[a + \"11\"];\n      self[b][12] = self[a + \"12\"];\n      self[b][13] = self[a + \"13\"];\n      self[b][14] = self[a + \"0\"];\n      self[b][15] = self[a + \"0\"];\n    }\n    function hb(a) {\n      return a == zb || a == Ab || a == Ja || a == Bb;\n    }\n    function Rd() {\n      this.eb = [];\n      this.size = this.A = this.fb = 0;\n    }\n    function Sd() {\n      this.y = [];\n      this.f = [];\n      this.ea = [];\n      this.F = [];\n      this.Tc = this.Ed = this.Cd = this.Fd = this.lb = this.Db = this.Ab = this.fa = this.J = this.W = this.N = this.O = 0;\n    }\n    function Cb() {\n      this.Rd = this.height = this.width = this.S = 0;\n      this.f = {};\n      this.f.RGBA = new Rd();\n      this.f.kb = new Sd();\n      this.sd = null;\n    }\n    function Td() {\n      this.width = [0];\n      this.height = [0];\n      this.Pd = [0];\n      this.Qd = [0];\n      this.format = [0];\n    }\n    function Ud() {\n      this.Id = this.fd = this.Md = this.hb = this.ib = this.da = this.bd = this.cd = this.j = this.v = this.Da = this.Sd = this.ob = 0;\n    }\n    function Vd(a) {\n      alert(\"todo:WebPSamplerProcessPlane\");\n      return a.T;\n    }\n    function Wd(a, b) {\n      var c = a.T,\n        d = b.ba.f.RGBA,\n        e = d.eb,\n        f = d.fb + a.ka * d.A,\n        g = P[b.ba.S],\n        h = a.y,\n        k = a.O,\n        l = a.f,\n        m = a.N,\n        n = a.ea,\n        r = a.W,\n        q = b.cc,\n        t = b.dc,\n        v = b.Mc,\n        p = b.Nc,\n        u = a.ka,\n        w = a.ka + a.T,\n        y = a.U,\n        A = (y + 1) >> 1;\n      0 == u\n        ? g(h, k, null, null, l, m, n, r, l, m, n, r, e, f, null, null, y)\n        : (g(b.ec, b.fc, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y),\n          ++c);\n      for (; u + 2 < w; u += 2)\n        (q = l),\n          (t = m),\n          (v = n),\n          (p = r),\n          (m += a.Rc),\n          (r += a.Rc),\n          (f += 2 * d.A),\n          (k += 2 * a.fa),\n          g(h, k - a.fa, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y);\n      k += a.fa;\n      a.j + w < a.o\n        ? (I(b.ec, b.fc, h, k, y),\n          I(b.cc, b.dc, l, m, A),\n          I(b.Mc, b.Nc, n, r, A),\n          c--)\n        : w & 1 ||\n          g(\n            h,\n            k,\n            null,\n            null,\n            l,\n            m,\n            n,\n            r,\n            l,\n            m,\n            n,\n            r,\n            e,\n            f + d.A,\n            null,\n            null,\n            y\n          );\n      return c;\n    }\n    function Xd(a, b, c) {\n      var d = a.F,\n        e = [a.J];\n      if (null != d) {\n        var f = a.U,\n          g = b.ba.S,\n          h = g == ya || g == Ja;\n        b = b.ba.f.RGBA;\n        var k = [0],\n          l = a.ka;\n        k[0] = a.T;\n        a.Kb &&\n          (0 == l ? --k[0] : (--l, (e[0] -= a.width)),\n          a.j + a.ka + a.T == a.o && (k[0] = a.o - a.j - l));\n        var m = b.eb,\n          l = b.fb + l * b.A;\n        a = fc(d, e[0], a.width, f, k, m, l + (h ? 0 : 3), b.A);\n        x(c == k);\n        a && hb(g) && za(m, l, h, f, k, b.A);\n      }\n      return 0;\n    }\n    function gc(a) {\n      var b = a.ma,\n        c = b.ba.S,\n        d = 11 > c,\n        e = c == Ua || c == Va || c == ya || c == Db || 12 == c || hb(c);\n      b.memory = null;\n      b.Ib = null;\n      b.Jb = null;\n      b.Nd = null;\n      if (!hc(b.Oa, a, e ? 11 : 12)) return 0;\n      e && hb(c) && ic();\n      if (a.da) alert(\"todo:use_scaling\");\n      else {\n        if (d) {\n          if (((b.Ib = Vd), a.Kb)) {\n            c = (a.U + 1) >> 1;\n            b.memory = V(a.U + 2 * c);\n            if (null == b.memory) return 0;\n            b.ec = b.memory;\n            b.fc = 0;\n            b.cc = b.ec;\n            b.dc = b.fc + a.U;\n            b.Mc = b.cc;\n            b.Nc = b.dc + c;\n            b.Ib = Wd;\n            ic();\n          }\n        } else alert(\"todo:EmitYUV\");\n        e && ((b.Jb = Xd), d && Aa());\n      }\n      if (d && !jc) {\n        for (a = 0; 256 > a; ++a)\n          (Yd[a] = (89858 * (a - 128) + Ba) >> Wa),\n            (Zd[a] = -22014 * (a - 128) + Ba),\n            ($d[a] = -45773 * (a - 128)),\n            (ae[a] = (113618 * (a - 128) + Ba) >> Wa);\n        for (a = ta; a < Eb; ++a)\n          (b = (76283 * (a - 16) + Ba) >> Wa),\n            (be[a - ta] = ga(b, 255)),\n            (ce[a - ta] = ga((b + 8) >> 4, 15));\n        jc = 1;\n      }\n      return 1;\n    }\n    function kc(a) {\n      var b = a.ma,\n        c = a.U,\n        d = a.T;\n      x(!(a.ka & 1));\n      if (0 >= c || 0 >= d) return 0;\n      c = b.Ib(a, b);\n      null != b.Jb && b.Jb(a, b, c);\n      b.Dc += c;\n      return 1;\n    }\n    function lc(a) {\n      a.ma.memory = null;\n    }\n    function mc(a, b, c, d) {\n      if (47 != D(a, 8)) return 0;\n      b[0] = D(a, 14) + 1;\n      c[0] = D(a, 14) + 1;\n      d[0] = D(a, 1);\n      return 0 != D(a, 3) ? 0 : !a.h;\n    }\n    function ib(a, b) {\n      if (4 > a) return a + 1;\n      var c = (a - 2) >> 1;\n      return ((2 + (a & 1)) << c) + D(b, c) + 1;\n    }\n    function nc(a, b) {\n      if (120 < b) return b - 120;\n      var c = de[b - 1],\n        c = (c >> 4) * a + (8 - (c & 15));\n      return 1 <= c ? c : 1;\n    }\n    function ua(a, b, c) {\n      var d = pb(c);\n      b += d & 255;\n      var e = a[b].g - 8;\n      0 < e &&\n        (qb(c, c.u + 8),\n        (d = pb(c)),\n        (b += a[b].value),\n        (b += d & ((1 << e) - 1)));\n      qb(c, c.u + a[b].g);\n      return a[b].value;\n    }\n    function ub(a, b, c) {\n      c.g += a.g;\n      c.value += (a.value << b) >>> 0;\n      x(8 >= c.g);\n      return a.g;\n    }\n    function ha(a, b, c) {\n      var d = a.xc;\n      b = 0 == d ? 0 : a.vc[a.md * (c >> d) + (b >> d)];\n      x(b < a.Wb);\n      return a.Ya[b];\n    }\n    function oc(a, b, c, d) {\n      var e = a.ab,\n        f = a.c * b,\n        g = a.C;\n      b = g + b;\n      var h = c,\n        k = d;\n      d = a.Ta;\n      for (c = a.Ua; 0 < e--; ) {\n        var l = a.gc[e],\n          m = g,\n          n = b,\n          r = h,\n          q = k,\n          k = d,\n          h = c,\n          t = l.Ea;\n        x(m < n);\n        x(n <= l.nc);\n        switch (l.hc) {\n          case 2:\n            pc(r, q, (n - m) * t, k, h);\n            break;\n          case 0:\n            var v = l,\n              p = m,\n              u = n,\n              w = k,\n              y = h,\n              A = v.Ea;\n            0 == p &&\n              (ee(r, q, null, null, 1, w, y),\n              cc(r, q + 1, 0, 0, A - 1, w, y + 1),\n              (q += A),\n              (y += A),\n              ++p);\n            for (\n              var E = 1 << v.b,\n                B = E - 1,\n                C = xa(A, v.b),\n                N = v.K,\n                v = v.w + (p >> v.b) * C;\n              p < u;\n\n            ) {\n              var z = N,\n                Q = v,\n                S = 1;\n              for (fe(r, q, w, y - A, 1, w, y); S < A; ) {\n                var K = qc[(z[Q++] >> 8) & 15],\n                  D = (S & ~B) + E;\n                D > A && (D = A);\n                K(r, q + +S, w, y + S - A, D - S, w, y + S);\n                S = D;\n              }\n              q += A;\n              y += A;\n              ++p;\n              p & B || (v += C);\n            }\n            n != l.nc && I(k, h - t, k, h + (n - m - 1) * t, t);\n            break;\n          case 1:\n            t = r;\n            u = q;\n            r = l.Ea;\n            q = 1 << l.b;\n            w = q - 1;\n            y = r & ~w;\n            A = r - y;\n            p = xa(r, l.b);\n            E = l.K;\n            for (l = l.w + (m >> l.b) * p; m < n; ) {\n              B = E;\n              C = l;\n              N = new Jd();\n              v = u + y;\n              for (z = u + r; u < v; )\n                dc(B[C++], N), Fb(N, t, u, q, k, h), (u += q), (h += q);\n              u < z &&\n                (dc(B[C++], N), Fb(N, t, u, A, k, h), (u += A), (h += A));\n              ++m;\n              m & w || (l += p);\n            }\n            break;\n          case 3:\n            if (r == k && q == h && 0 < l.b) {\n              y = (n - m) * xa(l.Ea, l.b);\n              t = h + (n - m) * t - y;\n              u = k;\n              r = t;\n              q = k;\n              w = h;\n              A = y;\n              p = [];\n              for (y = A - 1; 0 <= y; --y) p[y] = q[w + y];\n              for (y = A - 1; 0 <= y; --y) u[r + y] = p[y];\n              rc(l, m, n, k, t, k, h);\n            } else rc(l, m, n, r, q, k, h);\n        }\n        h = d;\n        k = c;\n      }\n      k != c && I(d, c, h, k, f);\n    }\n    function ge(a, b) {\n      var c = a.V,\n        d = a.Ba + a.c * a.C,\n        e = b - a.C;\n      x(b <= a.l.o);\n      x(16 >= e);\n      if (0 < e) {\n        var f = a.l,\n          g = a.Ta,\n          h = a.Ua,\n          k = f.width;\n        oc(a, e, c, d);\n        h = [h];\n        c = a.C;\n        d = b;\n        e = h;\n        x(c < d);\n        x(f.v < f.va);\n        d > f.o && (d = f.o);\n        if (c < f.j) {\n          var l = f.j - c,\n            c = f.j;\n          e[0] += l * k;\n        }\n        c >= d\n          ? (c = 0)\n          : ((e[0] += 4 * f.v),\n            (f.ka = c - f.j),\n            (f.U = f.va - f.v),\n            (f.T = d - c),\n            (c = 1));\n        if (c) {\n          h = h[0];\n          c = a.ca;\n          if (11 > c.S) {\n            for (\n              var m = c.f.RGBA,\n                d = c.S,\n                e = f.U,\n                f = f.T,\n                l = m.eb,\n                n = m.A,\n                r = f,\n                m = m.fb + a.Ma * m.A;\n              0 < r--;\n\n            ) {\n              var q = g,\n                t = h,\n                v = e,\n                p = l,\n                u = m;\n              switch (d) {\n                case Ca:\n                  sc(q, t, v, p, u);\n                  break;\n                case Ua:\n                  Gb(q, t, v, p, u);\n                  break;\n                case zb:\n                  Gb(q, t, v, p, u);\n                  za(p, u, 0, v, 1, 0);\n                  break;\n                case tc:\n                  uc(q, t, v, p, u);\n                  break;\n                case Va:\n                  fb(q, t, v, p, u, 1);\n                  break;\n                case Ab:\n                  fb(q, t, v, p, u, 1);\n                  za(p, u, 0, v, 1, 0);\n                  break;\n                case ya:\n                  fb(q, t, v, p, u, 0);\n                  break;\n                case Ja:\n                  fb(q, t, v, p, u, 0);\n                  za(p, u, 1, v, 1, 0);\n                  break;\n                case Db:\n                  Hb(q, t, v, p, u);\n                  break;\n                case Bb:\n                  Hb(q, t, v, p, u);\n                  vc(p, u, v, 1, 0);\n                  break;\n                case wc:\n                  xc(q, t, v, p, u);\n                  break;\n                default:\n                  x(0);\n              }\n              h += k;\n              m += n;\n            }\n            a.Ma += f;\n          } else alert(\"todo:EmitRescaledRowsYUVA\");\n          x(a.Ma <= c.height);\n        }\n      }\n      a.C = b;\n      x(a.C <= a.i);\n    }\n    function yc(a) {\n      var b;\n      if (0 < a.ua) return 0;\n      for (b = 0; b < a.Wb; ++b) {\n        var c = a.Ya[b].G,\n          d = a.Ya[b].H;\n        if (\n          0 < c[1][d[1] + 0].g ||\n          0 < c[2][d[2] + 0].g ||\n          0 < c[3][d[3] + 0].g\n        )\n          return 0;\n      }\n      return 1;\n    }\n    function zc(a, b, c, d, e, f) {\n      if (0 != a.Z) {\n        var g = a.qd,\n          h = a.rd;\n        for (x(null != ia[a.Z]); b < c; ++b)\n          ia[a.Z](g, h, d, e, d, e, f), (g = d), (h = e), (e += f);\n        a.qd = g;\n        a.rd = h;\n      }\n    }\n    function Ib(a, b) {\n      var c = a.l.ma,\n        d = 0 == c.Z || 1 == c.Z ? a.l.j : a.C,\n        d = a.C < d ? d : a.C;\n      x(b <= a.l.o);\n      if (b > d) {\n        var e = a.l.width,\n          f = c.ca,\n          g = c.tb + e * d,\n          h = a.V,\n          k = a.Ba + a.c * d,\n          l = a.gc;\n        x(1 == a.ab);\n        x(3 == l[0].hc);\n        he(l[0], d, b, h, k, f, g);\n        zc(c, d, b, f, g, e);\n      }\n      a.C = a.Ma = b;\n    }\n    function Jb(a, b, c, d, e, f, g) {\n      var h = a.$ / d,\n        k = a.$ % d,\n        l = a.m,\n        m = a.s,\n        n = c + a.$,\n        r = n;\n      e = c + d * e;\n      var q = c + d * f,\n        t = 280 + m.ua,\n        v = a.Pb ? h : 16777216,\n        p = 0 < m.ua ? m.Wa : null,\n        u = m.wc,\n        w = n < q ? ha(m, k, h) : null;\n      x(a.C < f);\n      x(q <= e);\n      var y = !1;\n      a: for (;;) {\n        for (; y || n < q; ) {\n          var A = 0;\n          if (h >= v) {\n            var v = a,\n              E = n - c;\n            x(v.Pb);\n            v.wd = v.m;\n            v.xd = E;\n            0 < v.s.ua && $b(v.s.Wa, v.s.vb);\n            v = h + ie;\n          }\n          k & u || (w = ha(m, k, h));\n          x(null != w);\n          w.Qb && ((b[n] = w.qb), (y = !0));\n          if (!y)\n            if ((Sa(l), w.jc)) {\n              var A = l,\n                E = b,\n                B = n,\n                C = w.pd[pb(A) & (xb - 1)];\n              x(w.jc);\n              256 > C.g\n                ? (qb(A, A.u + C.g), (E[B] = C.value), (A = 0))\n                : (qb(A, A.u + C.g - 256), x(256 <= C.value), (A = C.value));\n              0 == A && (y = !0);\n            } else A = ua(w.G[0], w.H[0], l);\n          if (l.h) break;\n          if (y || 256 > A) {\n            if (!y)\n              if (w.nd) b[n] = (w.qb | (A << 8)) >>> 0;\n              else {\n                Sa(l);\n                y = ua(w.G[1], w.H[1], l);\n                Sa(l);\n                E = ua(w.G[2], w.H[2], l);\n                B = ua(w.G[3], w.H[3], l);\n                if (l.h) break;\n                b[n] = ((B << 24) | (y << 16) | (A << 8) | E) >>> 0;\n              }\n            y = !1;\n            ++n;\n            ++k;\n            if (\n              k >= d &&\n              ((k = 0),\n              ++h,\n              null != g && h <= f && !(h % 16) && g(a, h),\n              null != p)\n            )\n              for (; r < n; )\n                (A = b[r++]),\n                  (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n          } else if (280 > A) {\n            A = ib(A - 256, l);\n            E = ua(w.G[4], w.H[4], l);\n            Sa(l);\n            E = ib(E, l);\n            E = nc(d, E);\n            if (l.h) break;\n            if (n - c < E || e - n < A) break a;\n            else for (B = 0; B < A; ++B) b[n + B] = b[n + B - E];\n            n += A;\n            for (k += A; k >= d; )\n              (k -= d), ++h, null != g && h <= f && !(h % 16) && g(a, h);\n            x(n <= e);\n            k & u && (w = ha(m, k, h));\n            if (null != p)\n              for (; r < n; )\n                (A = b[r++]),\n                  (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n          } else if (A < t) {\n            y = A - 280;\n            for (x(null != p); r < n; )\n              (A = b[r++]), (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n            A = n;\n            E = p;\n            x(!(y >>> E.Xa));\n            b[A] = E.X[y];\n            y = !0;\n          } else break a;\n          y || x(l.h == db(l));\n        }\n        if (a.Pb && l.h && n < e)\n          x(a.m.h),\n            (a.a = 5),\n            (a.m = a.wd),\n            (a.$ = a.xd),\n            0 < a.s.ua && $b(a.s.vb, a.s.Wa);\n        else if (l.h) break a;\n        else null != g && g(a, h > f ? f : h), (a.a = 0), (a.$ = n - c);\n        return 1;\n      }\n      a.a = 3;\n      return 0;\n    }\n    function Ac(a) {\n      x(null != a);\n      a.vc = null;\n      a.yc = null;\n      a.Ya = null;\n      var b = a.Wa;\n      null != b && (b.X = null);\n      a.vb = null;\n      x(null != a);\n    }\n    function Bc() {\n      var a = new je();\n      if (null == a) return null;\n      a.a = 0;\n      a.xb = Cc;\n      gb(\"Predictor\", \"VP8LPredictors\");\n      gb(\"Predictor\", \"VP8LPredictors_C\");\n      gb(\"PredictorAdd\", \"VP8LPredictorsAdd\");\n      gb(\"PredictorAdd\", \"VP8LPredictorsAdd_C\");\n      pc = Kd;\n      Fb = Ld;\n      sc = Md;\n      Gb = Nd;\n      Hb = Od;\n      xc = Pd;\n      uc = Qd;\n      self.VP8LMapColor32b = ke;\n      self.VP8LMapColor8b = le;\n      return a;\n    }\n    function rb(a, b, c, d, e) {\n      var f = 1,\n        g = [a],\n        h = [b],\n        k = d.m,\n        l = d.s,\n        m = null,\n        n = 0;\n      a: for (;;) {\n        if (c)\n          for (; f && D(k, 1); ) {\n            var r = g,\n              q = h,\n              t = d,\n              v = 1,\n              p = t.m,\n              u = t.gc[t.ab],\n              w = D(p, 2);\n            if (t.Oc & (1 << w)) f = 0;\n            else {\n              t.Oc |= 1 << w;\n              u.hc = w;\n              u.Ea = r[0];\n              u.nc = q[0];\n              u.K = [null];\n              ++t.ab;\n              x(4 >= t.ab);\n              switch (w) {\n                case 0:\n                case 1:\n                  u.b = D(p, 3) + 2;\n                  v = rb(xa(u.Ea, u.b), xa(u.nc, u.b), 0, t, u.K);\n                  u.K = u.K[0];\n                  break;\n                case 3:\n                  var y = D(p, 8) + 1,\n                    A = 16 < y ? 0 : 4 < y ? 1 : 2 < y ? 2 : 3;\n                  r[0] = xa(u.Ea, A);\n                  u.b = A;\n                  var v = rb(y, 1, 0, t, u.K),\n                    E;\n                  if ((E = v)) {\n                    var B,\n                      C = y,\n                      N = u,\n                      z = 1 << (8 >> N.b),\n                      Q = V(z);\n                    if (null == Q) E = 0;\n                    else {\n                      var S = N.K[0],\n                        K = N.w;\n                      Q[0] = N.K[0][0];\n                      for (B = 1; B < 1 * C; ++B) Q[B] = yb(S[K + B], Q[B - 1]);\n                      for (; B < 4 * z; ++B) Q[B] = 0;\n                      N.K[0] = null;\n                      N.K[0] = Q;\n                      E = 1;\n                    }\n                  }\n                  v = E;\n                  break;\n                case 2:\n                  break;\n                default:\n                  x(0);\n              }\n              f = v;\n            }\n          }\n        g = g[0];\n        h = h[0];\n        if (f && D(k, 1) && ((n = D(k, 4)), (f = 1 <= n && 11 >= n), !f)) {\n          d.a = 3;\n          break a;\n        }\n        var H;\n        if ((H = f))\n          b: {\n            var F = d,\n              G = g,\n              L = h,\n              J = n,\n              T = c,\n              Da,\n              ba,\n              X = F.m,\n              R = F.s,\n              P = [null],\n              U,\n              W = 1,\n              aa = 0,\n              na = me[J];\n            c: for (;;) {\n              if (T && D(X, 1)) {\n                var ca = D(X, 3) + 2,\n                  ga = xa(G, ca),\n                  ka = xa(L, ca),\n                  qa = ga * ka;\n                if (!rb(ga, ka, 0, F, P)) break c;\n                P = P[0];\n                R.xc = ca;\n                for (Da = 0; Da < qa; ++Da) {\n                  var ia = (P[Da] >> 8) & 65535;\n                  P[Da] = ia;\n                  ia >= W && (W = ia + 1);\n                }\n              }\n              if (X.h) break c;\n              for (ba = 0; 5 > ba; ++ba) {\n                var Y = Dc[ba];\n                !ba && 0 < J && (Y += 1 << J);\n                aa < Y && (aa = Y);\n              }\n              var ma = wa(W * na, O);\n              var ua = W,\n                va = wa(ua, Ub);\n              if (null == va) var la = null;\n              else x(65536 >= ua), (la = va);\n              var ha = V(aa);\n              if (null == la || null == ha || null == ma) {\n                F.a = 1;\n                break c;\n              }\n              var pa = ma;\n              for (Da = U = 0; Da < W; ++Da) {\n                var ja = la[Da],\n                  da = ja.G,\n                  ea = ja.H,\n                  Fa = 0,\n                  ra = 1,\n                  Ha = 0;\n                for (ba = 0; 5 > ba; ++ba) {\n                  Y = Dc[ba];\n                  da[ba] = pa;\n                  ea[ba] = U;\n                  !ba && 0 < J && (Y += 1 << J);\n                  d: {\n                    var sa,\n                      za = Y,\n                      ta = F,\n                      oa = ha,\n                      db = pa,\n                      eb = U,\n                      Ia = 0,\n                      Ka = ta.m,\n                      fb = D(Ka, 1);\n                    M(oa, 0, 0, za);\n                    if (fb) {\n                      var gb = D(Ka, 1) + 1,\n                        hb = D(Ka, 1),\n                        Ja = D(Ka, 0 == hb ? 1 : 8);\n                      oa[Ja] = 1;\n                      2 == gb && ((Ja = D(Ka, 8)), (oa[Ja] = 1));\n                      var ya = 1;\n                    } else {\n                      var Ua = V(19),\n                        Va = D(Ka, 4) + 4;\n                      if (19 < Va) {\n                        ta.a = 3;\n                        var Aa = 0;\n                        break d;\n                      }\n                      for (sa = 0; sa < Va; ++sa) Ua[ne[sa]] = D(Ka, 3);\n                      var Ba = void 0,\n                        sb = void 0,\n                        Wa = ta,\n                        ib = Ua,\n                        Ca = za,\n                        Xa = oa,\n                        Oa = 0,\n                        La = Wa.m,\n                        Ya = 8,\n                        Za = wa(128, O);\n                      e: for (;;) {\n                        if (!Z(Za, 0, 7, ib, 19)) break e;\n                        if (D(La, 1)) {\n                          var kb = 2 + 2 * D(La, 3),\n                            Ba = 2 + D(La, kb);\n                          if (Ba > Ca) break e;\n                        } else Ba = Ca;\n                        for (sb = 0; sb < Ca && Ba--; ) {\n                          Sa(La);\n                          var $a = Za[0 + (pb(La) & 127)];\n                          qb(La, La.u + $a.g);\n                          var jb = $a.value;\n                          if (16 > jb) (Xa[sb++] = jb), 0 != jb && (Ya = jb);\n                          else {\n                            var lb = 16 == jb,\n                              ab = jb - 16,\n                              mb = oe[ab],\n                              bb = D(La, pe[ab]) + mb;\n                            if (sb + bb > Ca) break e;\n                            else\n                              for (var nb = lb ? Ya : 0; 0 < bb--; )\n                                Xa[sb++] = nb;\n                          }\n                        }\n                        Oa = 1;\n                        break e;\n                      }\n                      Oa || (Wa.a = 3);\n                      ya = Oa;\n                    }\n                    (ya = ya && !Ka.h) && (Ia = Z(db, eb, 8, oa, za));\n                    ya && 0 != Ia ? (Aa = Ia) : ((ta.a = 3), (Aa = 0));\n                  }\n                  if (0 == Aa) break c;\n                  ra && 1 == qe[ba] && (ra = 0 == pa[U].g);\n                  Fa += pa[U].g;\n                  U += Aa;\n                  if (3 >= ba) {\n                    var Pa = ha[0],\n                      tb;\n                    for (tb = 1; tb < Y; ++tb) ha[tb] > Pa && (Pa = ha[tb]);\n                    Ha += Pa;\n                  }\n                }\n                ja.nd = ra;\n                ja.Qb = 0;\n                ra &&\n                  ((ja.qb =\n                    ((da[3][ea[3] + 0].value << 24) |\n                      (da[1][ea[1] + 0].value << 16) |\n                      da[2][ea[2] + 0].value) >>>\n                    0),\n                  0 == Fa &&\n                    256 > da[0][ea[0] + 0].value &&\n                    ((ja.Qb = 1), (ja.qb += da[0][ea[0] + 0].value << 8)));\n                ja.jc = !ja.Qb && 6 > Ha;\n                if (ja.jc) {\n                  var Ga,\n                    Ea = ja;\n                  for (Ga = 0; Ga < xb; ++Ga) {\n                    var Ma = Ga,\n                      Na = Ea.pd[Ma],\n                      vb = Ea.G[0][Ea.H[0] + Ma];\n                    256 <= vb.value\n                      ? ((Na.g = vb.g + 256), (Na.value = vb.value))\n                      : ((Na.g = 0),\n                        (Na.value = 0),\n                        (Ma >>= ub(vb, 8, Na)),\n                        (Ma >>= ub(Ea.G[1][Ea.H[1] + Ma], 16, Na)),\n                        (Ma >>= ub(Ea.G[2][Ea.H[2] + Ma], 0, Na)),\n                        ub(Ea.G[3][Ea.H[3] + Ma], 24, Na));\n                  }\n                }\n              }\n              R.vc = P;\n              R.Wb = W;\n              R.Ya = la;\n              R.yc = ma;\n              H = 1;\n              break b;\n            }\n            H = 0;\n          }\n        f = H;\n        if (!f) {\n          d.a = 3;\n          break a;\n        }\n        if (0 < n) {\n          if (((l.ua = 1 << n), !Zb(l.Wa, n))) {\n            d.a = 1;\n            f = 0;\n            break a;\n          }\n        } else l.ua = 0;\n        var Qa = d,\n          cb = g,\n          ob = h,\n          Ra = Qa.s,\n          Ta = Ra.xc;\n        Qa.c = cb;\n        Qa.i = ob;\n        Ra.md = xa(cb, Ta);\n        Ra.wc = 0 == Ta ? -1 : (1 << Ta) - 1;\n        if (c) {\n          d.xb = re;\n          break a;\n        }\n        m = V(g * h);\n        if (null == m) {\n          d.a = 1;\n          f = 0;\n          break a;\n        }\n        f = (f = Jb(d, m, 0, g, h, h, null)) && !k.h;\n        break a;\n      }\n      f\n        ? (null != e ? (e[0] = m) : (x(null == m), x(c)), (d.$ = 0), c || Ac(l))\n        : Ac(l);\n      return f;\n    }\n    function Ec(a, b) {\n      var c = a.c * a.i,\n        d = c + b + 16 * b;\n      x(a.c <= b);\n      a.V = V(d);\n      if (null == a.V) return (a.Ta = null), (a.Ua = 0), (a.a = 1), 0;\n      a.Ta = a.V;\n      a.Ua = a.Ba + c + b;\n      return 1;\n    }\n    function se(a, b) {\n      var c = a.C,\n        d = b - c,\n        e = a.V,\n        f = a.Ba + a.c * c;\n      for (x(b <= a.l.o); 0 < d; ) {\n        var g = 16 < d ? 16 : d,\n          h = a.l.ma,\n          k = a.l.width,\n          l = k * g,\n          m = h.ca,\n          n = h.tb + k * c,\n          r = a.Ta,\n          q = a.Ua;\n        oc(a, g, e, f);\n        Fc(r, q, m, n, l);\n        zc(h, c, c + g, m, n, k);\n        d -= g;\n        e += g * a.c;\n        c += g;\n      }\n      x(c == b);\n      a.C = a.Ma = b;\n    }\n    function te(a, b) {\n      var c = [0],\n        d = [0],\n        e = [0];\n      a: for (;;) {\n        if (null == a) return 0;\n        if (null == b) return (a.a = 2), 0;\n        a.l = b;\n        a.a = 0;\n        cb(a.m, b.data, b.w, b.ha);\n        if (!mc(a.m, c, d, e)) {\n          a.a = 3;\n          break a;\n        }\n        a.xb = Cc;\n        b.width = c[0];\n        b.height = d[0];\n        if (!rb(c[0], d[0], 1, a, null)) break a;\n        return 1;\n      }\n      x(0 != a.a);\n      return 0;\n    }\n    function ue() {\n      this.ub = this.yd = this.td = this.Rb = 0;\n    }\n    function ve() {\n      this.Kd = this.Ld = this.Ud = this.Td = this.i = this.c = 0;\n    }\n    function we() {\n      this.Fb = this.Bb = this.Cb = 0;\n      this.Zb = V(4);\n      this.Lb = V(4);\n    }\n    function Gc() {\n      this.Yb = wb();\n    }\n    function xe() {\n      this.jb = V(3);\n      this.Wc = Ed([4, 8], Gc);\n      this.Xc = Ed([4, 17], Gc);\n    }\n    function ye() {\n      this.Pc = this.wb = this.Tb = this.zd = 0;\n      this.vd = new V(4);\n      this.od = new V(4);\n    }\n    function Xa() {\n      this.ld = this.La = this.dd = this.tc = 0;\n    }\n    function Hc() {\n      this.Na = this.la = 0;\n    }\n    function ze() {\n      this.Sc = [0, 0];\n      this.Eb = [0, 0];\n      this.Qc = [0, 0];\n      this.ia = this.lc = 0;\n    }\n    function Kb() {\n      this.ad = V(384);\n      this.Za = 0;\n      this.Ob = V(16);\n      this.$b = this.Ad = this.ia = this.Gc = this.Hc = this.Dd = 0;\n    }\n    function Ae() {\n      this.uc = this.M = this.Nb = 0;\n      this.wa = Array(new Xa());\n      this.Y = 0;\n      this.ya = Array(new Kb());\n      this.aa = 0;\n      this.l = new Oa();\n    }\n    function Ic() {\n      this.y = V(16);\n      this.f = V(8);\n      this.ea = V(8);\n    }\n    function Be() {\n      this.cb = this.a = 0;\n      this.sc = \"\";\n      this.m = new Wb();\n      this.Od = new ue();\n      this.Kc = new ve();\n      this.ed = new ye();\n      this.Qa = new we();\n      this.Ic = this.$c = this.Aa = 0;\n      this.D = new Ae();\n      this.Xb = this.Va = this.Hb = this.zb = this.yb = this.Ub = this.za = 0;\n      this.Jc = wa(8, Wb);\n      this.ia = 0;\n      new F();\n      this.pb = wa(4, ze);\n      this.Pa = new xe();\n      this.Bd = this.kc = 0;\n      this.Ac = [];\n      this.Bc = 0;\n      this.zc = [0, 0, 0, 0];\n      this.Gd = Array(new Ic());\n      this.Hd = 0;\n      this.rb = Array(new Hc());\n      this.sb = 0;\n      this.wa = Array(new Xa());\n      this.Y = 0;\n      this.oc = [];\n      this.pc = 0;\n      this.sa = [];\n      this.ta = 0;\n      this.qa = [];\n      this.ra = 0;\n      this.Ha = [];\n      this.B = this.R = this.Ia = 0;\n      this.Ec = [];\n      this.M = this.ja = this.Vb = this.Fc = 0;\n      this.ya = Array(new Kb());\n      this.L = this.aa = 0;\n      this.gd = Ed([4, 2], Xa);\n      this.ga = null;\n      this.Fa = [];\n      this.Cc = this.qc = this.P = 0;\n      this.Gb = [];\n      this.Uc = 0;\n      this.mb = [];\n      this.nb = 0;\n      this.rc = [];\n      this.Ga = this.Vc = 0;\n    }\n    function ga(a, b) {\n      return 0 > a ? 0 : a > b ? b : a;\n    }\n    function Oa() {\n      this.T = this.U = this.ka = this.height = this.width = 0;\n      this.y = [];\n      this.f = [];\n      this.ea = [];\n      this.Rc = this.fa = this.W = this.N = this.O = 0;\n      this.ma = \"void\";\n      this.put = \"VP8IoPutHook\";\n      this.ac = \"VP8IoSetupHook\";\n      this.bc = \"VP8IoTeardownHook\";\n      this.ha = this.Kb = 0;\n      this.data = [];\n      this.hb = this.ib = this.da = this.o = this.j = this.va = this.v = this.Da = this.ob = this.w = 0;\n      this.F = [];\n      this.J = 0;\n    }\n    function Ce() {\n      var a = new Be();\n      null != a &&\n        ((a.a = 0), (a.sc = \"OK\"), (a.cb = 0), (a.Xb = 0), oa || (oa = De));\n      return a;\n    }\n    function T(a, b, c) {\n      0 == a.a && ((a.a = b), (a.sc = c), (a.cb = 0));\n      return 0;\n    }\n    function Jc(a, b, c) {\n      return 3 <= c && 157 == a[b + 0] && 1 == a[b + 1] && 42 == a[b + 2];\n    }\n    function Kc(a, b) {\n      if (null == a) return 0;\n      a.a = 0;\n      a.sc = \"OK\";\n      if (null == b) return T(a, 2, \"null VP8Io passed to VP8GetHeaders()\");\n      var c = b.data;\n      var d = b.w;\n      var e = b.ha;\n      if (4 > e) return T(a, 7, \"Truncated header.\");\n      var f = c[d + 0] | (c[d + 1] << 8) | (c[d + 2] << 16);\n      var g = a.Od;\n      g.Rb = !(f & 1);\n      g.td = (f >> 1) & 7;\n      g.yd = (f >> 4) & 1;\n      g.ub = f >> 5;\n      if (3 < g.td) return T(a, 3, \"Incorrect keyframe parameters.\");\n      if (!g.yd) return T(a, 4, \"Frame not displayable.\");\n      d += 3;\n      e -= 3;\n      var h = a.Kc;\n      if (g.Rb) {\n        if (7 > e) return T(a, 7, \"cannot parse picture header\");\n        if (!Jc(c, d, e)) return T(a, 3, \"Bad code word\");\n        h.c = ((c[d + 4] << 8) | c[d + 3]) & 16383;\n        h.Td = c[d + 4] >> 6;\n        h.i = ((c[d + 6] << 8) | c[d + 5]) & 16383;\n        h.Ud = c[d + 6] >> 6;\n        d += 7;\n        e -= 7;\n        a.za = (h.c + 15) >> 4;\n        a.Ub = (h.i + 15) >> 4;\n        b.width = h.c;\n        b.height = h.i;\n        b.Da = 0;\n        b.j = 0;\n        b.v = 0;\n        b.va = b.width;\n        b.o = b.height;\n        b.da = 0;\n        b.ib = b.width;\n        b.hb = b.height;\n        b.U = b.width;\n        b.T = b.height;\n        f = a.Pa;\n        M(f.jb, 0, 255, f.jb.length);\n        f = a.Qa;\n        x(null != f);\n        f.Cb = 0;\n        f.Bb = 0;\n        f.Fb = 1;\n        M(f.Zb, 0, 0, f.Zb.length);\n        M(f.Lb, 0, 0, f.Lb);\n      }\n      if (g.ub > e) return T(a, 7, \"bad partition length\");\n      f = a.m;\n      ma(f, c, d, g.ub);\n      d += g.ub;\n      e -= g.ub;\n      g.Rb && ((h.Ld = G(f)), (h.Kd = G(f)));\n      h = a.Qa;\n      var k = a.Pa,\n        l;\n      x(null != f);\n      x(null != h);\n      h.Cb = G(f);\n      if (h.Cb) {\n        h.Bb = G(f);\n        if (G(f)) {\n          h.Fb = G(f);\n          for (l = 0; 4 > l; ++l) h.Zb[l] = G(f) ? ca(f, 7) : 0;\n          for (l = 0; 4 > l; ++l) h.Lb[l] = G(f) ? ca(f, 6) : 0;\n        }\n        if (h.Bb) for (l = 0; 3 > l; ++l) k.jb[l] = G(f) ? na(f, 8) : 255;\n      } else h.Bb = 0;\n      if (f.Ka) return T(a, 3, \"cannot parse segment header\");\n      h = a.ed;\n      h.zd = G(f);\n      h.Tb = na(f, 6);\n      h.wb = na(f, 3);\n      h.Pc = G(f);\n      if (h.Pc && G(f)) {\n        for (k = 0; 4 > k; ++k) G(f) && (h.vd[k] = ca(f, 6));\n        for (k = 0; 4 > k; ++k) G(f) && (h.od[k] = ca(f, 6));\n      }\n      a.L = 0 == h.Tb ? 0 : h.zd ? 1 : 2;\n      if (f.Ka) return T(a, 3, \"cannot parse filter header\");\n      l = d;\n      var m = e;\n      e = l;\n      d = l + m;\n      h = m;\n      a.Xb = (1 << na(a.m, 2)) - 1;\n      k = a.Xb;\n      if (m < 3 * k) c = 7;\n      else {\n        l += 3 * k;\n        h -= 3 * k;\n        for (m = 0; m < k; ++m) {\n          var n = c[e + 0] | (c[e + 1] << 8) | (c[e + 2] << 16);\n          n > h && (n = h);\n          ma(a.Jc[+m], c, l, n);\n          l += n;\n          h -= n;\n          e += 3;\n        }\n        ma(a.Jc[+k], c, l, h);\n        c = l < d ? 0 : 5;\n      }\n      if (0 != c) return T(a, c, \"cannot parse partitions\");\n      l = a.m;\n      c = na(l, 7);\n      e = G(l) ? ca(l, 4) : 0;\n      d = G(l) ? ca(l, 4) : 0;\n      h = G(l) ? ca(l, 4) : 0;\n      k = G(l) ? ca(l, 4) : 0;\n      l = G(l) ? ca(l, 4) : 0;\n      m = a.Qa;\n      for (n = 0; 4 > n; ++n) {\n        if (m.Cb) {\n          var r = m.Zb[n];\n          m.Fb || (r += c);\n        } else if (0 < n) {\n          a.pb[n] = a.pb[0];\n          continue;\n        } else r = c;\n        var q = a.pb[n];\n        q.Sc[0] = Lb[ga(r + e, 127)];\n        q.Sc[1] = Mb[ga(r + 0, 127)];\n        q.Eb[0] = 2 * Lb[ga(r + d, 127)];\n        q.Eb[1] = (101581 * Mb[ga(r + h, 127)]) >> 16;\n        8 > q.Eb[1] && (q.Eb[1] = 8);\n        q.Qc[0] = Lb[ga(r + k, 117)];\n        q.Qc[1] = Mb[ga(r + l, 127)];\n        q.lc = r + l;\n      }\n      if (!g.Rb) return T(a, 4, \"Not a key frame.\");\n      G(f);\n      g = a.Pa;\n      for (c = 0; 4 > c; ++c) {\n        for (e = 0; 8 > e; ++e)\n          for (d = 0; 3 > d; ++d)\n            for (h = 0; 11 > h; ++h)\n              (k = K(f, Ee[c][e][d][h]) ? na(f, 8) : Fe[c][e][d][h]),\n                (g.Wc[c][e].Yb[d][h] = k);\n        for (e = 0; 17 > e; ++e) g.Xc[c][e] = g.Wc[c][Ge[e]];\n      }\n      a.kc = G(f);\n      a.kc && (a.Bd = na(f, 8));\n      return (a.cb = 1);\n    }\n    function De(a, b, c, d, e, f, g) {\n      var h = b[e].Yb[c];\n      for (c = 0; 16 > e; ++e) {\n        if (!K(a, h[c + 0])) return e;\n        for (; !K(a, h[c + 1]); )\n          if (((h = b[++e].Yb[0]), (c = 0), 16 == e)) return 16;\n        var k = b[e + 1].Yb;\n        if (K(a, h[c + 2])) {\n          var l = a,\n            m = h,\n            n = c;\n          var r = 0;\n          if (K(l, m[n + 3]))\n            if (K(l, m[n + 6])) {\n              h = 0;\n              r = K(l, m[n + 8]);\n              m = K(l, m[n + 9 + r]);\n              n = 2 * r + m;\n              r = 0;\n              for (m = He[n]; m[h]; ++h) r += r + K(l, m[h]);\n              r += 3 + (8 << n);\n            } else\n              K(l, m[n + 7])\n                ? ((r = 7 + 2 * K(l, 165)), (r += K(l, 145)))\n                : (r = 5 + K(l, 159));\n          else K(l, m[n + 4]) ? (r = 3 + K(l, m[n + 5])) : (r = 2);\n          h = k[2];\n        } else (r = 1), (h = k[1]);\n        k = g + Ie[e];\n        l = a;\n        0 > l.b && Qa(l);\n        var m = l.b,\n          n = l.Ca >> 1,\n          q = (n - (l.I >> m)) >> 31;\n        --l.b;\n        l.Ca += q;\n        l.Ca |= 1;\n        l.I -= ((n + 1) & q) << m;\n        f[k] = ((r ^ q) - q) * d[(0 < e) + 0];\n      }\n      return 16;\n    }\n    function Lc(a) {\n      var b = a.rb[a.sb - 1];\n      b.la = 0;\n      b.Na = 0;\n      M(a.zc, 0, 0, a.zc.length);\n      a.ja = 0;\n    }\n    function Je(a, b) {\n      for (a.M = 0; a.M < a.Va; ++a.M) {\n        var c = a.Jc[a.M & a.Xb],\n          d = a.m,\n          e = a,\n          f;\n        for (f = 0; f < e.za; ++f) {\n          var g = d;\n          var h = e;\n          var k = h.Ac,\n            l = h.Bc + 4 * f,\n            m = h.zc,\n            n = h.ya[h.aa + f];\n          h.Qa.Bb\n            ? (n.$b = K(g, h.Pa.jb[0])\n                ? 2 + K(g, h.Pa.jb[2])\n                : K(g, h.Pa.jb[1]))\n            : (n.$b = 0);\n          h.kc && (n.Ad = K(g, h.Bd));\n          n.Za = !K(g, 145) + 0;\n          if (n.Za) {\n            var r = n.Ob,\n              q = 0;\n            for (h = 0; 4 > h; ++h) {\n              var t = m[0 + h];\n              var v;\n              for (v = 0; 4 > v; ++v) {\n                t = Ke[k[l + v]][t];\n                for (var p = Mc[K(g, t[0])]; 0 < p; )\n                  p = Mc[2 * p + K(g, t[p])];\n                t = -p;\n                k[l + v] = t;\n              }\n              I(r, q, k, l, 4);\n              q += 4;\n              m[0 + h] = t;\n            }\n          } else\n            (t = K(g, 156) ? (K(g, 128) ? 1 : 3) : K(g, 163) ? 2 : 0),\n              (n.Ob[0] = t),\n              M(k, l, t, 4),\n              M(m, 0, t, 4);\n          n.Dd = K(g, 142) ? (K(g, 114) ? (K(g, 183) ? 1 : 3) : 2) : 0;\n        }\n        if (e.m.Ka) return T(a, 7, \"Premature end-of-partition0 encountered.\");\n        for (; a.ja < a.za; ++a.ja) {\n          d = a;\n          e = c;\n          g = d.rb[d.sb - 1];\n          k = d.rb[d.sb + d.ja];\n          f = d.ya[d.aa + d.ja];\n          if ((l = d.kc ? f.Ad : 0))\n            (g.la = k.la = 0),\n              f.Za || (g.Na = k.Na = 0),\n              (f.Hc = 0),\n              (f.Gc = 0),\n              (f.ia = 0);\n          else {\n            var u,\n              w,\n              g = k,\n              k = e,\n              l = d.Pa.Xc,\n              m = d.ya[d.aa + d.ja],\n              n = d.pb[m.$b];\n            h = m.ad;\n            r = 0;\n            q = d.rb[d.sb - 1];\n            t = v = 0;\n            M(h, r, 0, 384);\n            if (m.Za) {\n              var y = 0;\n              var A = l[3];\n            } else {\n              p = V(16);\n              var E = g.Na + q.Na;\n              E = oa(k, l[1], E, n.Eb, 0, p, 0);\n              g.Na = q.Na = (0 < E) + 0;\n              if (1 < E) Nc(p, 0, h, r);\n              else {\n                var B = (p[0] + 3) >> 3;\n                for (p = 0; 256 > p; p += 16) h[r + p] = B;\n              }\n              y = 1;\n              A = l[0];\n            }\n            var C = g.la & 15;\n            var N = q.la & 15;\n            for (p = 0; 4 > p; ++p) {\n              var z = N & 1;\n              for (B = w = 0; 4 > B; ++B)\n                (E = z + (C & 1)),\n                  (E = oa(k, A, E, n.Sc, y, h, r)),\n                  (z = E > y),\n                  (C = (C >> 1) | (z << 7)),\n                  (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n                  (r += 16);\n              C >>= 4;\n              N = (N >> 1) | (z << 7);\n              v = ((v << 8) | w) >>> 0;\n            }\n            A = C;\n            y = N >> 4;\n            for (u = 0; 4 > u; u += 2) {\n              w = 0;\n              C = g.la >> (4 + u);\n              N = q.la >> (4 + u);\n              for (p = 0; 2 > p; ++p) {\n                z = N & 1;\n                for (B = 0; 2 > B; ++B)\n                  (E = z + (C & 1)),\n                    (E = oa(k, l[2], E, n.Qc, 0, h, r)),\n                    (z = 0 < E),\n                    (C = (C >> 1) | (z << 3)),\n                    (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n                    (r += 16);\n                C >>= 2;\n                N = (N >> 1) | (z << 5);\n              }\n              t |= w << (4 * u);\n              A |= (C << 4) << u;\n              y |= (N & 240) << u;\n            }\n            g.la = A;\n            q.la = y;\n            m.Hc = v;\n            m.Gc = t;\n            m.ia = t & 43690 ? 0 : n.ia;\n            l = !(v | t);\n          }\n          0 < d.L &&\n            ((d.wa[d.Y + d.ja] = d.gd[f.$b][f.Za]),\n            (d.wa[d.Y + d.ja].La |= !l));\n          if (e.Ka) return T(a, 7, \"Premature end-of-file encountered.\");\n        }\n        Lc(a);\n        c = a;\n        d = b;\n        e = 1;\n        f = c.D;\n        g = 0 < c.L && c.M >= c.zb && c.M <= c.Va;\n        if (0 == c.Aa)\n          a: {\n            (f.M = c.M), (f.uc = g), Oc(c, f), (e = 1);\n            w = c.D;\n            f = w.Nb;\n            t = Ya[c.L];\n            g = t * c.R;\n            k = (t / 2) * c.B;\n            p = 16 * f * c.R;\n            B = 8 * f * c.B;\n            l = c.sa;\n            m = c.ta - g + p;\n            n = c.qa;\n            h = c.ra - k + B;\n            r = c.Ha;\n            q = c.Ia - k + B;\n            C = w.M;\n            N = 0 == C;\n            v = C >= c.Va - 1;\n            2 == c.Aa && Oc(c, w);\n            if (w.uc)\n              for (E = c, z = E.D.M, x(E.D.uc), w = E.yb; w < E.Hb; ++w) {\n                var Q = E;\n                y = w;\n                A = z;\n                var S = Q.D,\n                  D = S.Nb;\n                u = Q.R;\n                var S = S.wa[S.Y + y],\n                  F = Q.sa,\n                  H = Q.ta + 16 * D * u + 16 * y,\n                  J = S.dd,\n                  G = S.tc;\n                if (0 != G)\n                  if ((x(3 <= G), 1 == Q.L))\n                    0 < y && Pc(F, H, u, G + 4),\n                      S.La && Qc(F, H, u, G),\n                      0 < A && Rc(F, H, u, G + 4),\n                      S.La && Sc(F, H, u, G);\n                  else {\n                    var L = Q.B,\n                      O = Q.qa,\n                      P = Q.ra + 8 * D * L + 8 * y,\n                      R = Q.Ha,\n                      Q = Q.Ia + 8 * D * L + 8 * y,\n                      D = S.ld;\n                    0 < y &&\n                      (Tc(F, H, u, G + 4, J, D),\n                      Uc(O, P, R, Q, L, G + 4, J, D));\n                    S.La && (Vc(F, H, u, G, J, D), Wc(O, P, R, Q, L, G, J, D));\n                    0 < A &&\n                      (Xc(F, H, u, G + 4, J, D),\n                      Yc(O, P, R, Q, L, G + 4, J, D));\n                    S.La && (Zc(F, H, u, G, J, D), $c(O, P, R, Q, L, G, J, D));\n                  }\n              }\n            c.ia && alert(\"todo:DitherRow\");\n            if (null != d.put) {\n              w = 16 * C;\n              C = 16 * (C + 1);\n              N\n                ? ((d.y = c.sa),\n                  (d.O = c.ta + p),\n                  (d.f = c.qa),\n                  (d.N = c.ra + B),\n                  (d.ea = c.Ha),\n                  (d.W = c.Ia + B))\n                : ((w -= t),\n                  (d.y = l),\n                  (d.O = m),\n                  (d.f = n),\n                  (d.N = h),\n                  (d.ea = r),\n                  (d.W = q));\n              v || (C -= t);\n              C > d.o && (C = d.o);\n              d.F = null;\n              d.J = null;\n              if (\n                null != c.Fa &&\n                0 < c.Fa.length &&\n                w < C &&\n                ((d.J = Le(c, d, w, C - w)),\n                (d.F = c.mb),\n                null == d.F && 0 == d.F.length)\n              ) {\n                e = T(c, 3, \"Could not decode alpha data.\");\n                break a;\n              }\n              w < d.j &&\n                ((t = d.j - w),\n                (w = d.j),\n                x(!(t & 1)),\n                (d.O += c.R * t),\n                (d.N += c.B * (t >> 1)),\n                (d.W += c.B * (t >> 1)),\n                null != d.F && (d.J += d.width * t));\n              w < C &&\n                ((d.O += d.v),\n                (d.N += d.v >> 1),\n                (d.W += d.v >> 1),\n                null != d.F && (d.J += d.v),\n                (d.ka = w - d.j),\n                (d.U = d.va - d.v),\n                (d.T = C - w),\n                (e = d.put(d)));\n            }\n            f + 1 != c.Ic ||\n              v ||\n              (I(c.sa, c.ta - g, l, m + 16 * c.R, g),\n              I(c.qa, c.ra - k, n, h + 8 * c.B, k),\n              I(c.Ha, c.Ia - k, r, q + 8 * c.B, k));\n          }\n        if (!e) return T(a, 6, \"Output aborted.\");\n      }\n      return 1;\n    }\n    function Me(a, b) {\n      if (null == a) return 0;\n      if (null == b) return T(a, 2, \"NULL VP8Io parameter in VP8Decode().\");\n      if (!a.cb && !Kc(a, b)) return 0;\n      x(a.cb);\n      if (null == b.ac || b.ac(b)) {\n        b.ob && (a.L = 0);\n        var c = Ya[a.L];\n        2 == a.L\n          ? ((a.yb = 0), (a.zb = 0))\n          : ((a.yb = (b.v - c) >> 4),\n            (a.zb = (b.j - c) >> 4),\n            0 > a.yb && (a.yb = 0),\n            0 > a.zb && (a.zb = 0));\n        a.Va = (b.o + 15 + c) >> 4;\n        a.Hb = (b.va + 15 + c) >> 4;\n        a.Hb > a.za && (a.Hb = a.za);\n        a.Va > a.Ub && (a.Va = a.Ub);\n        if (0 < a.L) {\n          var d = a.ed;\n          for (c = 0; 4 > c; ++c) {\n            var e;\n            if (a.Qa.Cb) {\n              var f = a.Qa.Lb[c];\n              a.Qa.Fb || (f += d.Tb);\n            } else f = d.Tb;\n            for (e = 0; 1 >= e; ++e) {\n              var g = a.gd[c][e],\n                h = f;\n              d.Pc && ((h += d.vd[0]), e && (h += d.od[0]));\n              h = 0 > h ? 0 : 63 < h ? 63 : h;\n              if (0 < h) {\n                var k = h;\n                0 < d.wb &&\n                  ((k = 4 < d.wb ? k >> 2 : k >> 1),\n                  k > 9 - d.wb && (k = 9 - d.wb));\n                1 > k && (k = 1);\n                g.dd = k;\n                g.tc = 2 * h + k;\n                g.ld = 40 <= h ? 2 : 15 <= h ? 1 : 0;\n              } else g.tc = 0;\n              g.La = e;\n            }\n          }\n        }\n        c = 0;\n      } else T(a, 6, \"Frame setup failed\"), (c = a.a);\n      if ((c = 0 == c)) {\n        if (c) {\n          a.$c = 0;\n          0 < a.Aa || (a.Ic = Ne);\n          b: {\n            c = a.Ic;\n            var k = a.za,\n              d = 4 * k,\n              l = 32 * k,\n              m = k + 1,\n              n = 0 < a.L ? k * (0 < a.Aa ? 2 : 1) : 0,\n              r = (2 == a.Aa ? 2 : 1) * k;\n            e = ((3 * (16 * c + Ya[a.L])) / 2) * l;\n            f = null != a.Fa && 0 < a.Fa.length ? a.Kc.c * a.Kc.i : 0;\n            g = d + 832 + e + f;\n            if (g != g) c = 0;\n            else {\n              if (g > a.Vb) {\n                a.Vb = 0;\n                a.Ec = V(g);\n                a.Fc = 0;\n                if (null == a.Ec) {\n                  c = T(a, 1, \"no memory during frame initialization.\");\n                  break b;\n                }\n                a.Vb = g;\n              }\n              g = a.Ec;\n              h = a.Fc;\n              a.Ac = g;\n              a.Bc = h;\n              h += d;\n              a.Gd = wa(l, Ic);\n              a.Hd = 0;\n              a.rb = wa(m + 1, Hc);\n              a.sb = 1;\n              a.wa = n ? wa(n, Xa) : null;\n              a.Y = 0;\n              a.D.Nb = 0;\n              a.D.wa = a.wa;\n              a.D.Y = a.Y;\n              0 < a.Aa && (a.D.Y += k);\n              x(!0);\n              a.oc = g;\n              a.pc = h;\n              h += 832;\n              a.ya = wa(r, Kb);\n              a.aa = 0;\n              a.D.ya = a.ya;\n              a.D.aa = a.aa;\n              2 == a.Aa && (a.D.aa += k);\n              a.R = 16 * k;\n              a.B = 8 * k;\n              l = Ya[a.L];\n              k = l * a.R;\n              l = (l / 2) * a.B;\n              a.sa = g;\n              a.ta = h + k;\n              a.qa = a.sa;\n              a.ra = a.ta + 16 * c * a.R + l;\n              a.Ha = a.qa;\n              a.Ia = a.ra + 8 * c * a.B + l;\n              a.$c = 0;\n              h += e;\n              a.mb = f ? g : null;\n              a.nb = f ? h : null;\n              x(h + f <= a.Fc + a.Vb);\n              Lc(a);\n              M(a.Ac, a.Bc, 0, d);\n              c = 1;\n            }\n          }\n          if (c) {\n            b.ka = 0;\n            b.y = a.sa;\n            b.O = a.ta;\n            b.f = a.qa;\n            b.N = a.ra;\n            b.ea = a.Ha;\n            b.Vd = a.Ia;\n            b.fa = a.R;\n            b.Rc = a.B;\n            b.F = null;\n            b.J = 0;\n            if (!ad) {\n              for (c = -255; 255 >= c; ++c) bd[255 + c] = 0 > c ? -c : c;\n              for (c = -1020; 1020 >= c; ++c)\n                cd[1020 + c] = -128 > c ? -128 : 127 < c ? 127 : c;\n              for (c = -112; 112 >= c; ++c)\n                dd[112 + c] = -16 > c ? -16 : 15 < c ? 15 : c;\n              for (c = -255; 510 >= c; ++c)\n                ed[255 + c] = 0 > c ? 0 : 255 < c ? 255 : c;\n              ad = 1;\n            }\n            Nc = Oe;\n            Za = Pe;\n            Nb = Qe;\n            pa = Re;\n            Ob = Se;\n            fd = Te;\n            Xc = Ue;\n            Tc = Ve;\n            Yc = We;\n            Uc = Xe;\n            Zc = Ye;\n            Vc = Ze;\n            $c = $e;\n            Wc = af;\n            Rc = gd;\n            Pc = hd;\n            Sc = bf;\n            Qc = cf;\n            W[0] = df;\n            W[1] = ef;\n            W[2] = ff;\n            W[3] = gf;\n            W[4] = hf;\n            W[5] = jf;\n            W[6] = kf;\n            W[7] = lf;\n            W[8] = mf;\n            W[9] = nf;\n            Y[0] = of;\n            Y[1] = pf;\n            Y[2] = qf;\n            Y[3] = rf;\n            Y[4] = sf;\n            Y[5] = tf;\n            Y[6] = uf;\n            ka[0] = vf;\n            ka[1] = wf;\n            ka[2] = xf;\n            ka[3] = yf;\n            ka[4] = zf;\n            ka[5] = Af;\n            ka[6] = Bf;\n            c = 1;\n          } else c = 0;\n        }\n        c && (c = Je(a, b));\n        null != b.bc && b.bc(b);\n        c &= 1;\n      }\n      if (!c) return 0;\n      a.cb = 0;\n      return c;\n    }\n    function qa(a, b, c, d, e) {\n      e = a[b + c + 32 * d] + (e >> 3);\n      a[b + c + 32 * d] = e & -256 ? (0 > e ? 0 : 255) : e;\n    }\n    function kb(a, b, c, d, e, f) {\n      qa(a, b, 0, c, d + e);\n      qa(a, b, 1, c, d + f);\n      qa(a, b, 2, c, d - f);\n      qa(a, b, 3, c, d - e);\n    }\n    function da(a) {\n      return ((20091 * a) >> 16) + a;\n    }\n    function id(a, b, c, d) {\n      var e = 0,\n        f;\n      var g = V(16);\n      for (f = 0; 4 > f; ++f) {\n        var h = a[b + 0] + a[b + 8];\n        var k = a[b + 0] - a[b + 8];\n        var l = ((35468 * a[b + 4]) >> 16) - da(a[b + 12]);\n        var m = da(a[b + 4]) + ((35468 * a[b + 12]) >> 16);\n        g[e + 0] = h + m;\n        g[e + 1] = k + l;\n        g[e + 2] = k - l;\n        g[e + 3] = h - m;\n        e += 4;\n        b++;\n      }\n      for (f = e = 0; 4 > f; ++f)\n        (a = g[e + 0] + 4),\n          (h = a + g[e + 8]),\n          (k = a - g[e + 8]),\n          (l = ((35468 * g[e + 4]) >> 16) - da(g[e + 12])),\n          (m = da(g[e + 4]) + ((35468 * g[e + 12]) >> 16)),\n          qa(c, d, 0, 0, h + m),\n          qa(c, d, 1, 0, k + l),\n          qa(c, d, 2, 0, k - l),\n          qa(c, d, 3, 0, h - m),\n          e++,\n          (d += 32);\n    }\n    function Te(a, b, c, d) {\n      var e = a[b + 0] + 4,\n        f = (35468 * a[b + 4]) >> 16,\n        g = da(a[b + 4]),\n        h = (35468 * a[b + 1]) >> 16;\n      a = da(a[b + 1]);\n      kb(c, d, 0, e + g, a, h);\n      kb(c, d, 1, e + f, a, h);\n      kb(c, d, 2, e - f, a, h);\n      kb(c, d, 3, e - g, a, h);\n    }\n    function Pe(a, b, c, d, e) {\n      id(a, b, c, d);\n      e && id(a, b + 16, c, d + 4);\n    }\n    function Qe(a, b, c, d) {\n      Za(a, b + 0, c, d, 1);\n      Za(a, b + 32, c, d + 128, 1);\n    }\n    function Re(a, b, c, d) {\n      a = a[b + 0] + 4;\n      var e;\n      for (e = 0; 4 > e; ++e) for (b = 0; 4 > b; ++b) qa(c, d, b, e, a);\n    }\n    function Se(a, b, c, d) {\n      a[b + 0] && pa(a, b + 0, c, d);\n      a[b + 16] && pa(a, b + 16, c, d + 4);\n      a[b + 32] && pa(a, b + 32, c, d + 128);\n      a[b + 48] && pa(a, b + 48, c, d + 128 + 4);\n    }\n    function Oe(a, b, c, d) {\n      var e = V(16),\n        f;\n      for (f = 0; 4 > f; ++f) {\n        var g = a[b + 0 + f] + a[b + 12 + f];\n        var h = a[b + 4 + f] + a[b + 8 + f];\n        var k = a[b + 4 + f] - a[b + 8 + f];\n        var l = a[b + 0 + f] - a[b + 12 + f];\n        e[0 + f] = g + h;\n        e[8 + f] = g - h;\n        e[4 + f] = l + k;\n        e[12 + f] = l - k;\n      }\n      for (f = 0; 4 > f; ++f)\n        (a = e[0 + 4 * f] + 3),\n          (g = a + e[3 + 4 * f]),\n          (h = e[1 + 4 * f] + e[2 + 4 * f]),\n          (k = e[1 + 4 * f] - e[2 + 4 * f]),\n          (l = a - e[3 + 4 * f]),\n          (c[d + 0] = (g + h) >> 3),\n          (c[d + 16] = (l + k) >> 3),\n          (c[d + 32] = (g - h) >> 3),\n          (c[d + 48] = (l - k) >> 3),\n          (d += 64);\n    }\n    function Pb(a, b, c) {\n      var d = b - 32,\n        e = R,\n        f = 255 - a[d - 1],\n        g;\n      for (g = 0; g < c; ++g) {\n        var h = e,\n          k = f + a[b - 1],\n          l;\n        for (l = 0; l < c; ++l) a[b + l] = h[k + a[d + l]];\n        b += 32;\n      }\n    }\n    function ef(a, b) {\n      Pb(a, b, 4);\n    }\n    function wf(a, b) {\n      Pb(a, b, 8);\n    }\n    function pf(a, b) {\n      Pb(a, b, 16);\n    }\n    function qf(a, b) {\n      var c;\n      for (c = 0; 16 > c; ++c) I(a, b + 32 * c, a, b - 32, 16);\n    }\n    function rf(a, b) {\n      var c;\n      for (c = 16; 0 < c; --c) M(a, b, a[b - 1], 16), (b += 32);\n    }\n    function $a(a, b, c) {\n      var d;\n      for (d = 0; 16 > d; ++d) M(b, c + 32 * d, a, 16);\n    }\n    function of(a, b) {\n      var c = 16,\n        d;\n      for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d] + a[b + d - 32];\n      $a(c >> 5, a, b);\n    }\n    function sf(a, b) {\n      var c = 8,\n        d;\n      for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d];\n      $a(c >> 4, a, b);\n    }\n    function tf(a, b) {\n      var c = 8,\n        d;\n      for (d = 0; 16 > d; ++d) c += a[b + d - 32];\n      $a(c >> 4, a, b);\n    }\n    function uf(a, b) {\n      $a(128, a, b);\n    }\n    function z(a, b, c) {\n      return (a + 2 * b + c + 2) >> 2;\n    }\n    function ff(a, b) {\n      var c = b - 32,\n        c = new Uint8Array([\n          z(a[c - 1], a[c + 0], a[c + 1]),\n          z(a[c + 0], a[c + 1], a[c + 2]),\n          z(a[c + 1], a[c + 2], a[c + 3]),\n          z(a[c + 2], a[c + 3], a[c + 4])\n        ]),\n        d;\n      for (d = 0; 4 > d; ++d) I(a, b + 32 * d, c, 0, c.length);\n    }\n    function gf(a, b) {\n      var c = a[b - 1],\n        d = a[b - 1 + 32],\n        e = a[b - 1 + 64],\n        f = a[b - 1 + 96];\n      ra(a, b + 0, 16843009 * z(a[b - 1 - 32], c, d));\n      ra(a, b + 32, 16843009 * z(c, d, e));\n      ra(a, b + 64, 16843009 * z(d, e, f));\n      ra(a, b + 96, 16843009 * z(e, f, f));\n    }\n    function df(a, b) {\n      var c = 4,\n        d;\n      for (d = 0; 4 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n      c >>= 3;\n      for (d = 0; 4 > d; ++d) M(a, b + 32 * d, c, 4);\n    }\n    function hf(a, b) {\n      var c = a[b - 1 + 0],\n        d = a[b - 1 + 32],\n        e = a[b - 1 + 64],\n        f = a[b - 1 - 32],\n        g = a[b + 0 - 32],\n        h = a[b + 1 - 32],\n        k = a[b + 2 - 32],\n        l = a[b + 3 - 32];\n      a[b + 0 + 96] = z(d, e, a[b - 1 + 96]);\n      a[b + 1 + 96] = a[b + 0 + 64] = z(c, d, e);\n      a[b + 2 + 96] = a[b + 1 + 64] = a[b + 0 + 32] = z(f, c, d);\n      a[b + 3 + 96] = a[b + 2 + 64] = a[b + 1 + 32] = a[b + 0 + 0] = z(g, f, c);\n      a[b + 3 + 64] = a[b + 2 + 32] = a[b + 1 + 0] = z(h, g, f);\n      a[b + 3 + 32] = a[b + 2 + 0] = z(k, h, g);\n      a[b + 3 + 0] = z(l, k, h);\n    }\n    function kf(a, b) {\n      var c = a[b + 1 - 32],\n        d = a[b + 2 - 32],\n        e = a[b + 3 - 32],\n        f = a[b + 4 - 32],\n        g = a[b + 5 - 32],\n        h = a[b + 6 - 32],\n        k = a[b + 7 - 32];\n      a[b + 0 + 0] = z(a[b + 0 - 32], c, d);\n      a[b + 1 + 0] = a[b + 0 + 32] = z(c, d, e);\n      a[b + 2 + 0] = a[b + 1 + 32] = a[b + 0 + 64] = z(d, e, f);\n      a[b + 3 + 0] = a[b + 2 + 32] = a[b + 1 + 64] = a[b + 0 + 96] = z(e, f, g);\n      a[b + 3 + 32] = a[b + 2 + 64] = a[b + 1 + 96] = z(f, g, h);\n      a[b + 3 + 64] = a[b + 2 + 96] = z(g, h, k);\n      a[b + 3 + 96] = z(h, k, k);\n    }\n    function jf(a, b) {\n      var c = a[b - 1 + 0],\n        d = a[b - 1 + 32],\n        e = a[b - 1 + 64],\n        f = a[b - 1 - 32],\n        g = a[b + 0 - 32],\n        h = a[b + 1 - 32],\n        k = a[b + 2 - 32],\n        l = a[b + 3 - 32];\n      a[b + 0 + 0] = a[b + 1 + 64] = (f + g + 1) >> 1;\n      a[b + 1 + 0] = a[b + 2 + 64] = (g + h + 1) >> 1;\n      a[b + 2 + 0] = a[b + 3 + 64] = (h + k + 1) >> 1;\n      a[b + 3 + 0] = (k + l + 1) >> 1;\n      a[b + 0 + 96] = z(e, d, c);\n      a[b + 0 + 64] = z(d, c, f);\n      a[b + 0 + 32] = a[b + 1 + 96] = z(c, f, g);\n      a[b + 1 + 32] = a[b + 2 + 96] = z(f, g, h);\n      a[b + 2 + 32] = a[b + 3 + 96] = z(g, h, k);\n      a[b + 3 + 32] = z(h, k, l);\n    }\n    function lf(a, b) {\n      var c = a[b + 0 - 32],\n        d = a[b + 1 - 32],\n        e = a[b + 2 - 32],\n        f = a[b + 3 - 32],\n        g = a[b + 4 - 32],\n        h = a[b + 5 - 32],\n        k = a[b + 6 - 32],\n        l = a[b + 7 - 32];\n      a[b + 0 + 0] = (c + d + 1) >> 1;\n      a[b + 1 + 0] = a[b + 0 + 64] = (d + e + 1) >> 1;\n      a[b + 2 + 0] = a[b + 1 + 64] = (e + f + 1) >> 1;\n      a[b + 3 + 0] = a[b + 2 + 64] = (f + g + 1) >> 1;\n      a[b + 0 + 32] = z(c, d, e);\n      a[b + 1 + 32] = a[b + 0 + 96] = z(d, e, f);\n      a[b + 2 + 32] = a[b + 1 + 96] = z(e, f, g);\n      a[b + 3 + 32] = a[b + 2 + 96] = z(f, g, h);\n      a[b + 3 + 64] = z(g, h, k);\n      a[b + 3 + 96] = z(h, k, l);\n    }\n    function nf(a, b) {\n      var c = a[b - 1 + 0],\n        d = a[b - 1 + 32],\n        e = a[b - 1 + 64],\n        f = a[b - 1 + 96];\n      a[b + 0 + 0] = (c + d + 1) >> 1;\n      a[b + 2 + 0] = a[b + 0 + 32] = (d + e + 1) >> 1;\n      a[b + 2 + 32] = a[b + 0 + 64] = (e + f + 1) >> 1;\n      a[b + 1 + 0] = z(c, d, e);\n      a[b + 3 + 0] = a[b + 1 + 32] = z(d, e, f);\n      a[b + 3 + 32] = a[b + 1 + 64] = z(e, f, f);\n      a[b + 3 + 64] = a[b + 2 + 64] = a[b + 0 + 96] = a[b + 1 + 96] = a[\n        b + 2 + 96\n      ] = a[b + 3 + 96] = f;\n    }\n    function mf(a, b) {\n      var c = a[b - 1 + 0],\n        d = a[b - 1 + 32],\n        e = a[b - 1 + 64],\n        f = a[b - 1 + 96],\n        g = a[b - 1 - 32],\n        h = a[b + 0 - 32],\n        k = a[b + 1 - 32],\n        l = a[b + 2 - 32];\n      a[b + 0 + 0] = a[b + 2 + 32] = (c + g + 1) >> 1;\n      a[b + 0 + 32] = a[b + 2 + 64] = (d + c + 1) >> 1;\n      a[b + 0 + 64] = a[b + 2 + 96] = (e + d + 1) >> 1;\n      a[b + 0 + 96] = (f + e + 1) >> 1;\n      a[b + 3 + 0] = z(h, k, l);\n      a[b + 2 + 0] = z(g, h, k);\n      a[b + 1 + 0] = a[b + 3 + 32] = z(c, g, h);\n      a[b + 1 + 32] = a[b + 3 + 64] = z(d, c, g);\n      a[b + 1 + 64] = a[b + 3 + 96] = z(e, d, c);\n      a[b + 1 + 96] = z(f, e, d);\n    }\n    function xf(a, b) {\n      var c;\n      for (c = 0; 8 > c; ++c) I(a, b + 32 * c, a, b - 32, 8);\n    }\n    function yf(a, b) {\n      var c;\n      for (c = 0; 8 > c; ++c) M(a, b, a[b - 1], 8), (b += 32);\n    }\n    function lb(a, b, c) {\n      var d;\n      for (d = 0; 8 > d; ++d) M(b, c + 32 * d, a, 8);\n    }\n    function vf(a, b) {\n      var c = 8,\n        d;\n      for (d = 0; 8 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n      lb(c >> 4, a, b);\n    }\n    function Af(a, b) {\n      var c = 4,\n        d;\n      for (d = 0; 8 > d; ++d) c += a[b + d - 32];\n      lb(c >> 3, a, b);\n    }\n    function zf(a, b) {\n      var c = 4,\n        d;\n      for (d = 0; 8 > d; ++d) c += a[b - 1 + 32 * d];\n      lb(c >> 3, a, b);\n    }\n    function Bf(a, b) {\n      lb(128, a, b);\n    }\n    function ab(a, b, c) {\n      var d = a[b - c],\n        e = a[b + 0],\n        f = 3 * (e - d) + Qb[1020 + a[b - 2 * c] - a[b + c]],\n        g = mb[112 + ((f + 4) >> 3)];\n      a[b - c] = R[255 + d + mb[112 + ((f + 3) >> 3)]];\n      a[b + 0] = R[255 + e - g];\n    }\n    function jd(a, b, c, d) {\n      var e = a[b + 0],\n        f = a[b + c];\n      return U[255 + a[b - 2 * c] - a[b - c]] > d || U[255 + f - e] > d;\n    }\n    function kd(a, b, c, d) {\n      return (\n        4 * U[255 + a[b - c] - a[b + 0]] + U[255 + a[b - 2 * c] - a[b + c]] <= d\n      );\n    }\n    function ld(a, b, c, d, e) {\n      var f = a[b - 3 * c],\n        g = a[b - 2 * c],\n        h = a[b - c],\n        k = a[b + 0],\n        l = a[b + c],\n        m = a[b + 2 * c],\n        n = a[b + 3 * c];\n      return 4 * U[255 + h - k] + U[255 + g - l] > d\n        ? 0\n        : U[255 + a[b - 4 * c] - f] <= e &&\n            U[255 + f - g] <= e &&\n            U[255 + g - h] <= e &&\n            U[255 + n - m] <= e &&\n            U[255 + m - l] <= e &&\n            U[255 + l - k] <= e;\n    }\n    function gd(a, b, c, d) {\n      var e = 2 * d + 1;\n      for (d = 0; 16 > d; ++d) kd(a, b + d, c, e) && ab(a, b + d, c);\n    }\n    function hd(a, b, c, d) {\n      var e = 2 * d + 1;\n      for (d = 0; 16 > d; ++d) kd(a, b + d * c, 1, e) && ab(a, b + d * c, 1);\n    }\n    function bf(a, b, c, d) {\n      var e;\n      for (e = 3; 0 < e; --e) (b += 4 * c), gd(a, b, c, d);\n    }\n    function cf(a, b, c, d) {\n      var e;\n      for (e = 3; 0 < e; --e) (b += 4), hd(a, b, c, d);\n    }\n    function ea(a, b, c, d, e, f, g, h) {\n      for (f = 2 * f + 1; 0 < e--; ) {\n        if (ld(a, b, c, f, g))\n          if (jd(a, b, c, h)) ab(a, b, c);\n          else {\n            var k = a,\n              l = b,\n              m = c,\n              n = k[l - 2 * m],\n              r = k[l - m],\n              q = k[l + 0],\n              t = k[l + m],\n              v = k[l + 2 * m],\n              p = Qb[1020 + 3 * (q - r) + Qb[1020 + n - t]],\n              u = (27 * p + 63) >> 7,\n              w = (18 * p + 63) >> 7,\n              p = (9 * p + 63) >> 7;\n            k[l - 3 * m] = R[255 + k[l - 3 * m] + p];\n            k[l - 2 * m] = R[255 + n + w];\n            k[l - m] = R[255 + r + u];\n            k[l + 0] = R[255 + q - u];\n            k[l + m] = R[255 + t - w];\n            k[l + 2 * m] = R[255 + v - p];\n          }\n        b += d;\n      }\n    }\n    function Fa(a, b, c, d, e, f, g, h) {\n      for (f = 2 * f + 1; 0 < e--; ) {\n        if (ld(a, b, c, f, g))\n          if (jd(a, b, c, h)) ab(a, b, c);\n          else {\n            var k = a,\n              l = b,\n              m = c,\n              n = k[l - m],\n              r = k[l + 0],\n              q = k[l + m],\n              t = 3 * (r - n),\n              v = mb[112 + ((t + 4) >> 3)],\n              t = mb[112 + ((t + 3) >> 3)],\n              p = (v + 1) >> 1;\n            k[l - 2 * m] = R[255 + k[l - 2 * m] + p];\n            k[l - m] = R[255 + n + t];\n            k[l + 0] = R[255 + r - v];\n            k[l + m] = R[255 + q - p];\n          }\n        b += d;\n      }\n    }\n    function Ue(a, b, c, d, e, f) {\n      ea(a, b, c, 1, 16, d, e, f);\n    }\n    function Ve(a, b, c, d, e, f) {\n      ea(a, b, 1, c, 16, d, e, f);\n    }\n    function Ye(a, b, c, d, e, f) {\n      var g;\n      for (g = 3; 0 < g; --g) (b += 4 * c), Fa(a, b, c, 1, 16, d, e, f);\n    }\n    function Ze(a, b, c, d, e, f) {\n      var g;\n      for (g = 3; 0 < g; --g) (b += 4), Fa(a, b, 1, c, 16, d, e, f);\n    }\n    function We(a, b, c, d, e, f, g, h) {\n      ea(a, b, e, 1, 8, f, g, h);\n      ea(c, d, e, 1, 8, f, g, h);\n    }\n    function Xe(a, b, c, d, e, f, g, h) {\n      ea(a, b, 1, e, 8, f, g, h);\n      ea(c, d, 1, e, 8, f, g, h);\n    }\n    function $e(a, b, c, d, e, f, g, h) {\n      Fa(a, b + 4 * e, e, 1, 8, f, g, h);\n      Fa(c, d + 4 * e, e, 1, 8, f, g, h);\n    }\n    function af(a, b, c, d, e, f, g, h) {\n      Fa(a, b + 4, 1, e, 8, f, g, h);\n      Fa(c, d + 4, 1, e, 8, f, g, h);\n    }\n    function Cf() {\n      this.ba = new Cb();\n      this.ec = [];\n      this.cc = [];\n      this.Mc = [];\n      this.Dc = this.Nc = this.dc = this.fc = 0;\n      this.Oa = new Ud();\n      this.memory = 0;\n      this.Ib = \"OutputFunc\";\n      this.Jb = \"OutputAlphaFunc\";\n      this.Nd = \"OutputRowFunc\";\n    }\n    function md() {\n      this.data = [];\n      this.offset = this.kd = this.ha = this.w = 0;\n      this.na = [];\n      this.xa = this.gb = this.Ja = this.Sa = this.P = 0;\n    }\n    function Df() {\n      this.nc = this.Ea = this.b = this.hc = 0;\n      this.K = [];\n      this.w = 0;\n    }\n    function Ef() {\n      this.ua = 0;\n      this.Wa = new ac();\n      this.vb = new ac();\n      this.md = this.xc = this.wc = 0;\n      this.vc = [];\n      this.Wb = 0;\n      this.Ya = new Ub();\n      this.yc = new O();\n    }\n    function je() {\n      this.xb = this.a = 0;\n      this.l = new Oa();\n      this.ca = new Cb();\n      this.V = [];\n      this.Ba = 0;\n      this.Ta = [];\n      this.Ua = 0;\n      this.m = new Ra();\n      this.Pb = 0;\n      this.wd = new Ra();\n      this.Ma = this.$ = this.C = this.i = this.c = this.xd = 0;\n      this.s = new Ef();\n      this.ab = 0;\n      this.gc = wa(4, Df);\n      this.Oc = 0;\n    }\n    function Ff() {\n      this.Lc = this.Z = this.$a = this.i = this.c = 0;\n      this.l = new Oa();\n      this.ic = 0;\n      this.ca = [];\n      this.tb = 0;\n      this.qd = null;\n      this.rd = 0;\n    }\n    function Rb(a, b, c, d, e, f, g) {\n      a = null == a ? 0 : a[b + 0];\n      for (b = 0; b < g; ++b) (e[f + b] = (a + c[d + b]) & 255), (a = e[f + b]);\n    }\n    function Gf(a, b, c, d, e, f, g) {\n      if (null == a) Rb(null, null, c, d, e, f, g);\n      else {\n        var h;\n        for (h = 0; h < g; ++h) e[f + h] = (a[b + h] + c[d + h]) & 255;\n      }\n    }\n    function Hf(a, b, c, d, e, f, g) {\n      if (null == a) Rb(null, null, c, d, e, f, g);\n      else {\n        var h = a[b + 0],\n          k = h,\n          l = h,\n          m;\n        for (m = 0; m < g; ++m)\n          (h = a[b + m]),\n            (k = l + h - k),\n            (l = (c[d + m] + (k & -256 ? (0 > k ? 0 : 255) : k)) & 255),\n            (k = h),\n            (e[f + m] = l);\n      }\n    }\n    function Le(a, b, c, d) {\n      var e = b.width,\n        f = b.o;\n      x(null != a && null != b);\n      if (0 > c || 0 >= d || c + d > f) return null;\n      if (!a.Cc) {\n        if (null == a.ga) {\n          a.ga = new Ff();\n          var g;\n          (g = null == a.ga) ||\n            ((g = b.width * b.o),\n            x(0 == a.Gb.length),\n            (a.Gb = V(g)),\n            (a.Uc = 0),\n            null == a.Gb\n              ? (g = 0)\n              : ((a.mb = a.Gb), (a.nb = a.Uc), (a.rc = null), (g = 1)),\n            (g = !g));\n          if (!g) {\n            g = a.ga;\n            var h = a.Fa,\n              k = a.P,\n              l = a.qc,\n              m = a.mb,\n              n = a.nb,\n              r = k + 1,\n              q = l - 1,\n              t = g.l;\n            x(null != h && null != m && null != b);\n            ia[0] = null;\n            ia[1] = Rb;\n            ia[2] = Gf;\n            ia[3] = Hf;\n            g.ca = m;\n            g.tb = n;\n            g.c = b.width;\n            g.i = b.height;\n            x(0 < g.c && 0 < g.i);\n            if (1 >= l) b = 0;\n            else if (\n              ((g.$a = (h[k + 0] >> 0) & 3),\n              (g.Z = (h[k + 0] >> 2) & 3),\n              (g.Lc = (h[k + 0] >> 4) & 3),\n              (k = (h[k + 0] >> 6) & 3),\n              0 > g.$a || 1 < g.$a || 4 <= g.Z || 1 < g.Lc || k)\n            )\n              b = 0;\n            else if (\n              ((t.put = kc),\n              (t.ac = gc),\n              (t.bc = lc),\n              (t.ma = g),\n              (t.width = b.width),\n              (t.height = b.height),\n              (t.Da = b.Da),\n              (t.v = b.v),\n              (t.va = b.va),\n              (t.j = b.j),\n              (t.o = b.o),\n              g.$a)\n            )\n              b: {\n                x(1 == g.$a), (b = Bc());\n                c: for (;;) {\n                  if (null == b) {\n                    b = 0;\n                    break b;\n                  }\n                  x(null != g);\n                  g.mc = b;\n                  b.c = g.c;\n                  b.i = g.i;\n                  b.l = g.l;\n                  b.l.ma = g;\n                  b.l.width = g.c;\n                  b.l.height = g.i;\n                  b.a = 0;\n                  cb(b.m, h, r, q);\n                  if (!rb(g.c, g.i, 1, b, null)) break c;\n                  1 == b.ab && 3 == b.gc[0].hc && yc(b.s)\n                    ? ((g.ic = 1),\n                      (h = b.c * b.i),\n                      (b.Ta = null),\n                      (b.Ua = 0),\n                      (b.V = V(h)),\n                      (b.Ba = 0),\n                      null == b.V ? ((b.a = 1), (b = 0)) : (b = 1))\n                    : ((g.ic = 0), (b = Ec(b, g.c)));\n                  if (!b) break c;\n                  b = 1;\n                  break b;\n                }\n                g.mc = null;\n                b = 0;\n              }\n            else b = q >= g.c * g.i;\n            g = !b;\n          }\n          if (g) return null;\n          1 != a.ga.Lc ? (a.Ga = 0) : (d = f - c);\n        }\n        x(null != a.ga);\n        x(c + d <= f);\n        a: {\n          h = a.ga;\n          b = h.c;\n          f = h.l.o;\n          if (0 == h.$a) {\n            r = a.rc;\n            q = a.Vc;\n            t = a.Fa;\n            k = a.P + 1 + c * b;\n            l = a.mb;\n            m = a.nb + c * b;\n            x(k <= a.P + a.qc);\n            if (0 != h.Z)\n              for (x(null != ia[h.Z]), g = 0; g < d; ++g)\n                ia[h.Z](r, q, t, k, l, m, b),\n                  (r = l),\n                  (q = m),\n                  (m += b),\n                  (k += b);\n            else\n              for (g = 0; g < d; ++g)\n                I(l, m, t, k, b), (r = l), (q = m), (m += b), (k += b);\n            a.rc = r;\n            a.Vc = q;\n          } else {\n            x(null != h.mc);\n            b = c + d;\n            g = h.mc;\n            x(null != g);\n            x(b <= g.i);\n            if (g.C >= b) b = 1;\n            else if ((h.ic || Aa(), h.ic)) {\n              var h = g.V,\n                r = g.Ba,\n                q = g.c,\n                v = g.i,\n                t = 1,\n                k = g.$ / q,\n                l = g.$ % q,\n                m = g.m,\n                n = g.s,\n                p = g.$,\n                u = q * v,\n                w = q * b,\n                y = n.wc,\n                A = p < w ? ha(n, l, k) : null;\n              x(p <= u);\n              x(b <= v);\n              x(yc(n));\n              c: for (;;) {\n                for (; !m.h && p < w; ) {\n                  l & y || (A = ha(n, l, k));\n                  x(null != A);\n                  Sa(m);\n                  v = ua(A.G[0], A.H[0], m);\n                  if (256 > v)\n                    (h[r + p] = v),\n                      ++p,\n                      ++l,\n                      l >= q && ((l = 0), ++k, k <= b && !(k % 16) && Ib(g, k));\n                  else if (280 > v) {\n                    var v = ib(v - 256, m);\n                    var E = ua(A.G[4], A.H[4], m);\n                    Sa(m);\n                    E = ib(E, m);\n                    E = nc(q, E);\n                    if (p >= E && u - p >= v) {\n                      var B;\n                      for (B = 0; B < v; ++B) h[r + p + B] = h[r + p + B - E];\n                    } else {\n                      t = 0;\n                      break c;\n                    }\n                    p += v;\n                    for (l += v; l >= q; )\n                      (l -= q), ++k, k <= b && !(k % 16) && Ib(g, k);\n                    p < w && l & y && (A = ha(n, l, k));\n                  } else {\n                    t = 0;\n                    break c;\n                  }\n                  x(m.h == db(m));\n                }\n                Ib(g, k > b ? b : k);\n                break c;\n              }\n              !t || (m.h && p < u) ? ((t = 0), (g.a = m.h ? 5 : 3)) : (g.$ = p);\n              b = t;\n            } else b = Jb(g, g.V, g.Ba, g.c, g.i, b, se);\n            if (!b) {\n              d = 0;\n              break a;\n            }\n          }\n          c + d >= f && (a.Cc = 1);\n          d = 1;\n        }\n        if (!d) return null;\n        if (\n          a.Cc &&\n          ((d = a.ga), null != d && (d.mc = null), (a.ga = null), 0 < a.Ga)\n        )\n          return alert(\"todo:WebPDequantizeLevels\"), null;\n      }\n      return a.nb + c * e;\n    }\n    function If(a, b, c, d, e, f) {\n      for (; 0 < e--; ) {\n        var g = a,\n          h = b + (c ? 1 : 0),\n          k = a,\n          l = b + (c ? 0 : 3),\n          m;\n        for (m = 0; m < d; ++m) {\n          var n = k[l + 4 * m];\n          255 != n &&\n            ((n *= 32897),\n            (g[h + 4 * m + 0] = (g[h + 4 * m + 0] * n) >> 23),\n            (g[h + 4 * m + 1] = (g[h + 4 * m + 1] * n) >> 23),\n            (g[h + 4 * m + 2] = (g[h + 4 * m + 2] * n) >> 23));\n        }\n        b += f;\n      }\n    }\n    function Jf(a, b, c, d, e) {\n      for (; 0 < d--; ) {\n        var f;\n        for (f = 0; f < c; ++f) {\n          var g = a[b + 2 * f + 0],\n            h = a[b + 2 * f + 1],\n            k = h & 15,\n            l = 4369 * k,\n            h = (((h & 240) | (h >> 4)) * l) >> 16;\n          a[b + 2 * f + 0] =\n            (((((g & 240) | (g >> 4)) * l) >> 16) & 240) |\n            ((((((g & 15) | (g << 4)) * l) >> 16) >> 4) & 15);\n          a[b + 2 * f + 1] = (h & 240) | k;\n        }\n        b += e;\n      }\n    }\n    function Kf(a, b, c, d, e, f, g, h) {\n      var k = 255,\n        l,\n        m;\n      for (m = 0; m < e; ++m) {\n        for (l = 0; l < d; ++l) {\n          var n = a[b + l];\n          f[g + 4 * l] = n;\n          k &= n;\n        }\n        b += c;\n        g += h;\n      }\n      return 255 != k;\n    }\n    function Lf(a, b, c, d, e) {\n      var f;\n      for (f = 0; f < e; ++f) c[d + f] = a[b + f] >> 8;\n    }\n    function Aa() {\n      za = If;\n      vc = Jf;\n      fc = Kf;\n      Fc = Lf;\n    }\n    function va(a, b, c) {\n      self[a] = function(a, e, f, g, h, k, l, m, n, r, q, t, v, p, u, w, y) {\n        var d,\n          E = (y - 1) >> 1;\n        var B = h[k + 0] | (l[m + 0] << 16);\n        var C = n[r + 0] | (q[t + 0] << 16);\n        x(null != a);\n        var z = (3 * B + C + 131074) >> 2;\n        b(a[e + 0], z & 255, z >> 16, v, p);\n        null != f &&\n          ((z = (3 * C + B + 131074) >> 2),\n          b(f[g + 0], z & 255, z >> 16, u, w));\n        for (d = 1; d <= E; ++d) {\n          var D = h[k + d] | (l[m + d] << 16);\n          var G = n[r + d] | (q[t + d] << 16);\n          var F = B + D + C + G + 524296;\n          var H = (F + 2 * (D + C)) >> 3;\n          F = (F + 2 * (B + G)) >> 3;\n          z = (H + B) >> 1;\n          B = (F + D) >> 1;\n          b(a[e + 2 * d - 1], z & 255, z >> 16, v, p + (2 * d - 1) * c);\n          b(a[e + 2 * d - 0], B & 255, B >> 16, v, p + (2 * d - 0) * c);\n          null != f &&\n            ((z = (F + C) >> 1),\n            (B = (H + G) >> 1),\n            b(f[g + 2 * d - 1], z & 255, z >> 16, u, w + (2 * d - 1) * c),\n            b(f[g + 2 * d + 0], B & 255, B >> 16, u, w + (2 * d + 0) * c));\n          B = D;\n          C = G;\n        }\n        y & 1 ||\n          ((z = (3 * B + C + 131074) >> 2),\n          b(a[e + y - 1], z & 255, z >> 16, v, p + (y - 1) * c),\n          null != f &&\n            ((z = (3 * C + B + 131074) >> 2),\n            b(f[g + y - 1], z & 255, z >> 16, u, w + (y - 1) * c)));\n      };\n    }\n    function ic() {\n      P[Ca] = Mf;\n      P[Ua] = nd;\n      P[tc] = Nf;\n      P[Va] = od;\n      P[ya] = pd;\n      P[Db] = qd;\n      P[wc] = Of;\n      P[zb] = nd;\n      P[Ab] = od;\n      P[Ja] = pd;\n      P[Bb] = qd;\n    }\n    function Sb(a) {\n      return a & ~Pf ? (0 > a ? 0 : 255) : a >> rd;\n    }\n    function bb(a, b) {\n      return Sb(((19077 * a) >> 8) + ((26149 * b) >> 8) - 14234);\n    }\n    function nb(a, b, c) {\n      return Sb(\n        ((19077 * a) >> 8) - ((6419 * b) >> 8) - ((13320 * c) >> 8) + 8708\n      );\n    }\n    function Pa(a, b) {\n      return Sb(((19077 * a) >> 8) + ((33050 * b) >> 8) - 17685);\n    }\n    function Ga(a, b, c, d, e) {\n      d[e + 0] = bb(a, c);\n      d[e + 1] = nb(a, b, c);\n      d[e + 2] = Pa(a, b);\n    }\n    function Tb(a, b, c, d, e) {\n      d[e + 0] = Pa(a, b);\n      d[e + 1] = nb(a, b, c);\n      d[e + 2] = bb(a, c);\n    }\n    function sd(a, b, c, d, e) {\n      var f = nb(a, b, c);\n      b = ((f << 3) & 224) | (Pa(a, b) >> 3);\n      d[e + 0] = (bb(a, c) & 248) | (f >> 5);\n      d[e + 1] = b;\n    }\n    function td(a, b, c, d, e) {\n      var f = (Pa(a, b) & 240) | 15;\n      d[e + 0] = (bb(a, c) & 240) | (nb(a, b, c) >> 4);\n      d[e + 1] = f;\n    }\n    function ud(a, b, c, d, e) {\n      d[e + 0] = 255;\n      Ga(a, b, c, d, e + 1);\n    }\n    function vd(a, b, c, d, e) {\n      Tb(a, b, c, d, e);\n      d[e + 3] = 255;\n    }\n    function wd(a, b, c, d, e) {\n      Ga(a, b, c, d, e);\n      d[e + 3] = 255;\n    }\n    function la(a, b, c) {\n      self[a] = function(a, e, f, g, h, k, l, m, n) {\n        for (var d = m + (n & -2) * c; m != d; )\n          b(a[e + 0], f[g + 0], h[k + 0], l, m),\n            b(a[e + 1], f[g + 0], h[k + 0], l, m + c),\n            (e += 2),\n            ++g,\n            ++k,\n            (m += 2 * c);\n        n & 1 && b(a[e + 0], f[g + 0], h[k + 0], l, m);\n      };\n    }\n    function xd(a, b, c) {\n      return 0 == c ? (0 == a ? (0 == b ? 6 : 5) : 0 == b ? 4 : 0) : c;\n    }\n    function yd(a, b, c, d, e) {\n      switch (a >>> 30) {\n        case 3:\n          Za(b, c, d, e, 0);\n          break;\n        case 2:\n          fd(b, c, d, e);\n          break;\n        case 1:\n          pa(b, c, d, e);\n      }\n    }\n    function Oc(a, b) {\n      var c,\n        d,\n        e = b.M,\n        f = b.Nb,\n        g = a.oc,\n        h = a.pc + 40,\n        k = a.oc,\n        l = a.pc + 584,\n        m = a.oc,\n        n = a.pc + 600;\n      for (c = 0; 16 > c; ++c) g[h + 32 * c - 1] = 129;\n      for (c = 0; 8 > c; ++c)\n        (k[l + 32 * c - 1] = 129), (m[n + 32 * c - 1] = 129);\n      0 < e\n        ? (g[h - 1 - 32] = k[l - 1 - 32] = m[n - 1 - 32] = 129)\n        : (M(g, h - 32 - 1, 127, 21),\n          M(k, l - 32 - 1, 127, 9),\n          M(m, n - 32 - 1, 127, 9));\n      for (d = 0; d < a.za; ++d) {\n        var r = b.ya[b.aa + d];\n        if (0 < d) {\n          for (c = -1; 16 > c; ++c) I(g, h + 32 * c - 4, g, h + 32 * c + 12, 4);\n          for (c = -1; 8 > c; ++c)\n            I(k, l + 32 * c - 4, k, l + 32 * c + 4, 4),\n              I(m, n + 32 * c - 4, m, n + 32 * c + 4, 4);\n        }\n        var q = a.Gd,\n          t = a.Hd + d,\n          v = r.ad,\n          p = r.Hc;\n        0 < e &&\n          (I(g, h - 32, q[t].y, 0, 16),\n          I(k, l - 32, q[t].f, 0, 8),\n          I(m, n - 32, q[t].ea, 0, 8));\n        if (r.Za) {\n          var u = g;\n          var w = h - 32 + 16;\n          0 < e &&\n            (d >= a.za - 1\n              ? M(u, w, q[t].y[15], 4)\n              : I(u, w, q[t + 1].y, 0, 4));\n          for (c = 0; 4 > c; c++)\n            u[w + 128 + c] = u[w + 256 + c] = u[w + 384 + c] = u[w + 0 + c];\n          for (c = 0; 16 > c; ++c, p <<= 2)\n            (u = g), (w = h + zd[c]), W[r.Ob[c]](u, w), yd(p, v, 16 * +c, u, w);\n        } else if (((u = xd(d, e, r.Ob[0])), Y[u](g, h), 0 != p))\n          for (c = 0; 16 > c; ++c, p <<= 2) yd(p, v, 16 * +c, g, h + zd[c]);\n        c = r.Gc;\n        u = xd(d, e, r.Dd);\n        ka[u](k, l);\n        ka[u](m, n);\n        r = c >> 0;\n        p = v;\n        u = k;\n        w = l;\n        r & 255 && (r & 170 ? Nb(p, 256, u, w) : Ob(p, 256, u, w));\n        c >>= 8;\n        r = m;\n        p = n;\n        c & 255 && (c & 170 ? Nb(v, 320, r, p) : Ob(v, 320, r, p));\n        e < a.Ub - 1 &&\n          (I(q[t].y, 0, g, h + 480, 16),\n          I(q[t].f, 0, k, l + 224, 8),\n          I(q[t].ea, 0, m, n + 224, 8));\n        c = 8 * f * a.B;\n        q = a.sa;\n        t = a.ta + 16 * d + 16 * f * a.R;\n        v = a.qa;\n        r = a.ra + 8 * d + c;\n        p = a.Ha;\n        u = a.Ia + 8 * d + c;\n        for (c = 0; 16 > c; ++c) I(q, t + c * a.R, g, h + 32 * c, 16);\n        for (c = 0; 8 > c; ++c)\n          I(v, r + c * a.B, k, l + 32 * c, 8),\n            I(p, u + c * a.B, m, n + 32 * c, 8);\n      }\n    }\n    function Ad(a, b, c, d, e, f, g, h, k) {\n      var l = [0],\n        m = [0],\n        n = 0,\n        r = null != k ? k.kd : 0,\n        q = null != k ? k : new md();\n      if (null == a || 12 > c) return 7;\n      q.data = a;\n      q.w = b;\n      q.ha = c;\n      b = [b];\n      c = [c];\n      q.gb = [q.gb];\n      a: {\n        var t = b;\n        var v = c;\n        var p = q.gb;\n        x(null != a);\n        x(null != v);\n        x(null != p);\n        p[0] = 0;\n        if (12 <= v[0] && !fa(a, t[0], \"RIFF\")) {\n          if (fa(a, t[0] + 8, \"WEBP\")) {\n            p = 3;\n            break a;\n          }\n          var u = Ha(a, t[0] + 4);\n          if (12 > u || 4294967286 < u) {\n            p = 3;\n            break a;\n          }\n          if (r && u > v[0] - 8) {\n            p = 7;\n            break a;\n          }\n          p[0] = u;\n          t[0] += 12;\n          v[0] -= 12;\n        }\n        p = 0;\n      }\n      if (0 != p) return p;\n      u = 0 < q.gb[0];\n      for (c = c[0]; ; ) {\n        t = [0];\n        n = [n];\n        a: {\n          var w = a;\n          v = b;\n          p = c;\n          var y = n,\n            A = l,\n            z = m,\n            B = t;\n          y[0] = 0;\n          if (8 > p[0]) p = 7;\n          else {\n            if (!fa(w, v[0], \"VP8X\")) {\n              if (10 != Ha(w, v[0] + 4)) {\n                p = 3;\n                break a;\n              }\n              if (18 > p[0]) {\n                p = 7;\n                break a;\n              }\n              var C = Ha(w, v[0] + 8);\n              var D = 1 + Yb(w, v[0] + 12);\n              w = 1 + Yb(w, v[0] + 15);\n              if (2147483648 <= D * w) {\n                p = 3;\n                break a;\n              }\n              null != B && (B[0] = C);\n              null != A && (A[0] = D);\n              null != z && (z[0] = w);\n              v[0] += 18;\n              p[0] -= 18;\n              y[0] = 1;\n            }\n            p = 0;\n          }\n        }\n        n = n[0];\n        t = t[0];\n        if (0 != p) return p;\n        v = !!(t & 2);\n        if (!u && n) return 3;\n        null != f && (f[0] = !!(t & 16));\n        null != g && (g[0] = v);\n        null != h && (h[0] = 0);\n        g = l[0];\n        t = m[0];\n        if (n && v && null == k) {\n          p = 0;\n          break;\n        }\n        if (4 > c) {\n          p = 7;\n          break;\n        }\n        if ((u && n) || (!u && !n && !fa(a, b[0], \"ALPH\"))) {\n          c = [c];\n          q.na = [q.na];\n          q.P = [q.P];\n          q.Sa = [q.Sa];\n          a: {\n            C = a;\n            p = b;\n            u = c;\n            var y = q.gb,\n              A = q.na,\n              z = q.P,\n              B = q.Sa;\n            D = 22;\n            x(null != C);\n            x(null != u);\n            w = p[0];\n            var F = u[0];\n            x(null != A);\n            x(null != B);\n            A[0] = null;\n            z[0] = null;\n            for (B[0] = 0; ; ) {\n              p[0] = w;\n              u[0] = F;\n              if (8 > F) {\n                p = 7;\n                break a;\n              }\n              var G = Ha(C, w + 4);\n              if (4294967286 < G) {\n                p = 3;\n                break a;\n              }\n              var H = (8 + G + 1) & -2;\n              D += H;\n              if (0 < y && D > y) {\n                p = 3;\n                break a;\n              }\n              if (!fa(C, w, \"VP8 \") || !fa(C, w, \"VP8L\")) {\n                p = 0;\n                break a;\n              }\n              if (F[0] < H) {\n                p = 7;\n                break a;\n              }\n              fa(C, w, \"ALPH\") || ((A[0] = C), (z[0] = w + 8), (B[0] = G));\n              w += H;\n              F -= H;\n            }\n          }\n          c = c[0];\n          q.na = q.na[0];\n          q.P = q.P[0];\n          q.Sa = q.Sa[0];\n          if (0 != p) break;\n        }\n        c = [c];\n        q.Ja = [q.Ja];\n        q.xa = [q.xa];\n        a: if (\n          ((y = a),\n          (p = b),\n          (u = c),\n          (A = q.gb[0]),\n          (z = q.Ja),\n          (B = q.xa),\n          (C = p[0]),\n          (w = !fa(y, C, \"VP8 \")),\n          (D = !fa(y, C, \"VP8L\")),\n          x(null != y),\n          x(null != u),\n          x(null != z),\n          x(null != B),\n          8 > u[0])\n        )\n          p = 7;\n        else {\n          if (w || D) {\n            y = Ha(y, C + 4);\n            if (12 <= A && y > A - 12) {\n              p = 3;\n              break a;\n            }\n            if (r && y > u[0] - 8) {\n              p = 7;\n              break a;\n            }\n            z[0] = y;\n            p[0] += 8;\n            u[0] -= 8;\n            B[0] = D;\n          } else\n            (B[0] = 5 <= u[0] && 47 == y[C + 0] && !(y[C + 4] >> 5)),\n              (z[0] = u[0]);\n          p = 0;\n        }\n        c = c[0];\n        q.Ja = q.Ja[0];\n        q.xa = q.xa[0];\n        b = b[0];\n        if (0 != p) break;\n        if (4294967286 < q.Ja) return 3;\n        null == h || v || (h[0] = q.xa ? 2 : 1);\n        g = [g];\n        t = [t];\n        if (q.xa) {\n          if (5 > c) {\n            p = 7;\n            break;\n          }\n          h = g;\n          r = t;\n          v = f;\n          null == a || 5 > c\n            ? (a = 0)\n            : 5 <= c && 47 == a[b + 0] && !(a[b + 4] >> 5)\n            ? ((u = [0]),\n              (y = [0]),\n              (A = [0]),\n              (z = new Ra()),\n              cb(z, a, b, c),\n              mc(z, u, y, A)\n                ? (null != h && (h[0] = u[0]),\n                  null != r && (r[0] = y[0]),\n                  null != v && (v[0] = A[0]),\n                  (a = 1))\n                : (a = 0))\n            : (a = 0);\n        } else {\n          if (10 > c) {\n            p = 7;\n            break;\n          }\n          h = t;\n          null == a || 10 > c || !Jc(a, b + 3, c - 3)\n            ? (a = 0)\n            : ((r = a[b + 0] | (a[b + 1] << 8) | (a[b + 2] << 16)),\n              (v = ((a[b + 7] << 8) | a[b + 6]) & 16383),\n              (a = ((a[b + 9] << 8) | a[b + 8]) & 16383),\n              r & 1 ||\n              3 < ((r >> 1) & 7) ||\n              !((r >> 4) & 1) ||\n              r >> 5 >= q.Ja ||\n              !v ||\n              !a\n                ? (a = 0)\n                : (g && (g[0] = v), h && (h[0] = a), (a = 1)));\n        }\n        if (!a) return 3;\n        g = g[0];\n        t = t[0];\n        if (n && (l[0] != g || m[0] != t)) return 3;\n        null != k &&\n          ((k[0] = q),\n          (k.offset = b - k.w),\n          x(4294967286 > b - k.w),\n          x(k.offset == k.ha - c));\n        break;\n      }\n      return 0 == p || (7 == p && n && null == k)\n        ? (null != f && (f[0] |= null != q.na && 0 < q.na.length),\n          null != d && (d[0] = g),\n          null != e && (e[0] = t),\n          0)\n        : p;\n    }\n    function hc(a, b, c) {\n      var d = b.width,\n        e = b.height,\n        f = 0,\n        g = 0,\n        h = d,\n        k = e;\n      b.Da = null != a && 0 < a.Da;\n      if (\n        b.Da &&\n        ((h = a.cd),\n        (k = a.bd),\n        (f = a.v),\n        (g = a.j),\n        11 > c || ((f &= -2), (g &= -2)),\n        0 > f || 0 > g || 0 >= h || 0 >= k || f + h > d || g + k > e)\n      )\n        return 0;\n      b.v = f;\n      b.j = g;\n      b.va = f + h;\n      b.o = g + k;\n      b.U = h;\n      b.T = k;\n      b.da = null != a && 0 < a.da;\n      if (b.da) {\n        c = [a.ib];\n        f = [a.hb];\n        if (!bc(h, k, c, f)) return 0;\n        b.ib = c[0];\n        b.hb = f[0];\n      }\n      b.ob = null != a && a.ob;\n      b.Kb = null == a || !a.Sd;\n      b.da && ((b.ob = b.ib < (3 * d) / 4 && b.hb < (3 * e) / 4), (b.Kb = 0));\n      return 1;\n    }\n    function Bd(a) {\n      if (null == a) return 2;\n      if (11 > a.S) {\n        var b = a.f.RGBA;\n        b.fb += (a.height - 1) * b.A;\n        b.A = -b.A;\n      } else\n        (b = a.f.kb),\n          (a = a.height),\n          (b.O += (a - 1) * b.fa),\n          (b.fa = -b.fa),\n          (b.N += ((a - 1) >> 1) * b.Ab),\n          (b.Ab = -b.Ab),\n          (b.W += ((a - 1) >> 1) * b.Db),\n          (b.Db = -b.Db),\n          null != b.F && ((b.J += (a - 1) * b.lb), (b.lb = -b.lb));\n      return 0;\n    }\n    function Cd(a, b, c, d) {\n      if (null == d || 0 >= a || 0 >= b) return 2;\n      if (null != c) {\n        if (c.Da) {\n          var e = c.cd,\n            f = c.bd,\n            g = c.v & -2,\n            h = c.j & -2;\n          if (0 > g || 0 > h || 0 >= e || 0 >= f || g + e > a || h + f > b)\n            return 2;\n          a = e;\n          b = f;\n        }\n        if (c.da) {\n          e = [c.ib];\n          f = [c.hb];\n          if (!bc(a, b, e, f)) return 2;\n          a = e[0];\n          b = f[0];\n        }\n      }\n      d.width = a;\n      d.height = b;\n      a: {\n        var k = d.width;\n        var l = d.height;\n        a = d.S;\n        if (0 >= k || 0 >= l || !(a >= Ca && 13 > a)) a = 2;\n        else {\n          if (0 >= d.Rd && null == d.sd) {\n            var g = (f = e = b = 0),\n              h = k * Dd[a],\n              m = h * l;\n            11 > a ||\n              ((b = (k + 1) / 2),\n              (f = ((l + 1) / 2) * b),\n              12 == a && ((e = k), (g = e * l)));\n            l = V(m + 2 * f + g);\n            if (null == l) {\n              a = 1;\n              break a;\n            }\n            d.sd = l;\n            11 > a\n              ? ((k = d.f.RGBA),\n                (k.eb = l),\n                (k.fb = 0),\n                (k.A = h),\n                (k.size = m))\n              : ((k = d.f.kb),\n                (k.y = l),\n                (k.O = 0),\n                (k.fa = h),\n                (k.Fd = m),\n                (k.f = l),\n                (k.N = 0 + m),\n                (k.Ab = b),\n                (k.Cd = f),\n                (k.ea = l),\n                (k.W = 0 + m + f),\n                (k.Db = b),\n                (k.Ed = f),\n                12 == a && ((k.F = l), (k.J = 0 + m + 2 * f)),\n                (k.Tc = g),\n                (k.lb = e));\n          }\n          b = 1;\n          e = d.S;\n          f = d.width;\n          g = d.height;\n          if (e >= Ca && 13 > e)\n            if (11 > e)\n              (a = d.f.RGBA),\n                (h = Math.abs(a.A)),\n                (b &= h * (g - 1) + f <= a.size),\n                (b &= h >= f * Dd[e]),\n                (b &= null != a.eb);\n            else {\n              a = d.f.kb;\n              h = (f + 1) / 2;\n              m = (g + 1) / 2;\n              k = Math.abs(a.fa);\n              var l = Math.abs(a.Ab),\n                n = Math.abs(a.Db),\n                r = Math.abs(a.lb),\n                q = r * (g - 1) + f;\n              b &= k * (g - 1) + f <= a.Fd;\n              b &= l * (m - 1) + h <= a.Cd;\n              b &= n * (m - 1) + h <= a.Ed;\n              b = b & (k >= f) & (l >= h) & (n >= h);\n              b &= null != a.y;\n              b &= null != a.f;\n              b &= null != a.ea;\n              12 == e && ((b &= r >= f), (b &= q <= a.Tc), (b &= null != a.F));\n            }\n          else b = 0;\n          a = b ? 0 : 2;\n        }\n      }\n      if (0 != a) return a;\n      null != c && c.fd && (a = Bd(d));\n      return a;\n    }\n    var xb = 64,\n      Hd = [\n        0,\n        1,\n        3,\n        7,\n        15,\n        31,\n        63,\n        127,\n        255,\n        511,\n        1023,\n        2047,\n        4095,\n        8191,\n        16383,\n        32767,\n        65535,\n        131071,\n        262143,\n        524287,\n        1048575,\n        2097151,\n        4194303,\n        8388607,\n        16777215\n      ],\n      Gd = 24,\n      ob = 32,\n      Xb = 8,\n      Id = [\n        0,\n        0,\n        1,\n        1,\n        2,\n        2,\n        2,\n        2,\n        3,\n        3,\n        3,\n        3,\n        3,\n        3,\n        3,\n        3,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        4,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7,\n        7\n      ];\n    X(\"Predictor0\", \"PredictorAdd0\");\n    self.Predictor0 = function() {\n      return 4278190080;\n    };\n    self.Predictor1 = function(a) {\n      return a;\n    };\n    self.Predictor2 = function(a, b, c) {\n      return b[c + 0];\n    };\n    self.Predictor3 = function(a, b, c) {\n      return b[c + 1];\n    };\n    self.Predictor4 = function(a, b, c) {\n      return b[c - 1];\n    };\n    self.Predictor5 = function(a, b, c) {\n      return aa(aa(a, b[c + 1]), b[c + 0]);\n    };\n    self.Predictor6 = function(a, b, c) {\n      return aa(a, b[c - 1]);\n    };\n    self.Predictor7 = function(a, b, c) {\n      return aa(a, b[c + 0]);\n    };\n    self.Predictor8 = function(a, b, c) {\n      return aa(b[c - 1], b[c + 0]);\n    };\n    self.Predictor9 = function(a, b, c) {\n      return aa(b[c + 0], b[c + 1]);\n    };\n    self.Predictor10 = function(a, b, c) {\n      return aa(aa(a, b[c - 1]), aa(b[c + 0], b[c + 1]));\n    };\n    self.Predictor11 = function(a, b, c) {\n      var d = b[c + 0];\n      b = b[c - 1];\n      return 0 >=\n        Ia((d >> 24) & 255, (a >> 24) & 255, (b >> 24) & 255) +\n          Ia((d >> 16) & 255, (a >> 16) & 255, (b >> 16) & 255) +\n          Ia((d >> 8) & 255, (a >> 8) & 255, (b >> 8) & 255) +\n          Ia(d & 255, a & 255, b & 255)\n        ? d\n        : a;\n    };\n    self.Predictor12 = function(a, b, c) {\n      var d = b[c + 0];\n      b = b[c - 1];\n      return (\n        ((sa(((a >> 24) & 255) + ((d >> 24) & 255) - ((b >> 24) & 255)) << 24) |\n          (sa(((a >> 16) & 255) + ((d >> 16) & 255) - ((b >> 16) & 255)) <<\n            16) |\n          (sa(((a >> 8) & 255) + ((d >> 8) & 255) - ((b >> 8) & 255)) << 8) |\n          sa((a & 255) + (d & 255) - (b & 255))) >>>\n        0\n      );\n    };\n    self.Predictor13 = function(a, b, c) {\n      var d = b[c - 1];\n      a = aa(a, b[c + 0]);\n      return (\n        ((eb((a >> 24) & 255, (d >> 24) & 255) << 24) |\n          (eb((a >> 16) & 255, (d >> 16) & 255) << 16) |\n          (eb((a >> 8) & 255, (d >> 8) & 255) << 8) |\n          eb((a >> 0) & 255, (d >> 0) & 255)) >>>\n        0\n      );\n    };\n    var ee = self.PredictorAdd0;\n    self.PredictorAdd1 = cc;\n    X(\"Predictor2\", \"PredictorAdd2\");\n    X(\"Predictor3\", \"PredictorAdd3\");\n    X(\"Predictor4\", \"PredictorAdd4\");\n    X(\"Predictor5\", \"PredictorAdd5\");\n    X(\"Predictor6\", \"PredictorAdd6\");\n    X(\"Predictor7\", \"PredictorAdd7\");\n    X(\"Predictor8\", \"PredictorAdd8\");\n    X(\"Predictor9\", \"PredictorAdd9\");\n    X(\"Predictor10\", \"PredictorAdd10\");\n    X(\"Predictor11\", \"PredictorAdd11\");\n    X(\"Predictor12\", \"PredictorAdd12\");\n    X(\"Predictor13\", \"PredictorAdd13\");\n    var fe = self.PredictorAdd2;\n    ec(\n      \"ColorIndexInverseTransform\",\n      \"MapARGB\",\n      \"32b\",\n      function(a) {\n        return (a >> 8) & 255;\n      },\n      function(a) {\n        return a;\n      }\n    );\n    ec(\n      \"VP8LColorIndexInverseTransformAlpha\",\n      \"MapAlpha\",\n      \"8b\",\n      function(a) {\n        return a;\n      },\n      function(a) {\n        return (a >> 8) & 255;\n      }\n    );\n    var rc = self.ColorIndexInverseTransform,\n      ke = self.MapARGB,\n      he = self.VP8LColorIndexInverseTransformAlpha,\n      le = self.MapAlpha,\n      pc,\n      qc = (self.VP8LPredictorsAdd = []);\n    qc.length = 16;\n    (self.VP8LPredictors = []).length = 16;\n    (self.VP8LPredictorsAdd_C = []).length = 16;\n    (self.VP8LPredictors_C = []).length = 16;\n    var Fb,\n      sc,\n      Gb,\n      Hb,\n      xc,\n      uc,\n      bd = V(511),\n      cd = V(2041),\n      dd = V(225),\n      ed = V(767),\n      ad = 0,\n      Qb = cd,\n      mb = dd,\n      R = ed,\n      U = bd,\n      Ca = 0,\n      Ua = 1,\n      tc = 2,\n      Va = 3,\n      ya = 4,\n      Db = 5,\n      wc = 6,\n      zb = 7,\n      Ab = 8,\n      Ja = 9,\n      Bb = 10,\n      pe = [2, 3, 7],\n      oe = [3, 3, 11],\n      Dc = [280, 256, 256, 256, 40],\n      qe = [0, 1, 1, 1, 0],\n      ne = [17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],\n      de = [\n        24,\n        7,\n        23,\n        25,\n        40,\n        6,\n        39,\n        41,\n        22,\n        26,\n        38,\n        42,\n        56,\n        5,\n        55,\n        57,\n        21,\n        27,\n        54,\n        58,\n        37,\n        43,\n        72,\n        4,\n        71,\n        73,\n        20,\n        28,\n        53,\n        59,\n        70,\n        74,\n        36,\n        44,\n        88,\n        69,\n        75,\n        52,\n        60,\n        3,\n        87,\n        89,\n        19,\n        29,\n        86,\n        90,\n        35,\n        45,\n        68,\n        76,\n        85,\n        91,\n        51,\n        61,\n        104,\n        2,\n        103,\n        105,\n        18,\n        30,\n        102,\n        106,\n        34,\n        46,\n        84,\n        92,\n        67,\n        77,\n        101,\n        107,\n        50,\n        62,\n        120,\n        1,\n        119,\n        121,\n        83,\n        93,\n        17,\n        31,\n        100,\n        108,\n        66,\n        78,\n        118,\n        122,\n        33,\n        47,\n        117,\n        123,\n        49,\n        63,\n        99,\n        109,\n        82,\n        94,\n        0,\n        116,\n        124,\n        65,\n        79,\n        16,\n        32,\n        98,\n        110,\n        48,\n        115,\n        125,\n        81,\n        95,\n        64,\n        114,\n        126,\n        97,\n        111,\n        80,\n        113,\n        127,\n        96,\n        112\n      ],\n      me = [\n        2954,\n        2956,\n        2958,\n        2962,\n        2970,\n        2986,\n        3018,\n        3082,\n        3212,\n        3468,\n        3980,\n        5004\n      ],\n      ie = 8,\n      Lb = [\n        4,\n        5,\n        6,\n        7,\n        8,\n        9,\n        10,\n        10,\n        11,\n        12,\n        13,\n        14,\n        15,\n        16,\n        17,\n        17,\n        18,\n        19,\n        20,\n        20,\n        21,\n        21,\n        22,\n        22,\n        23,\n        23,\n        24,\n        25,\n        25,\n        26,\n        27,\n        28,\n        29,\n        30,\n        31,\n        32,\n        33,\n        34,\n        35,\n        36,\n        37,\n        37,\n        38,\n        39,\n        40,\n        41,\n        42,\n        43,\n        44,\n        45,\n        46,\n        46,\n        47,\n        48,\n        49,\n        50,\n        51,\n        52,\n        53,\n        54,\n        55,\n        56,\n        57,\n        58,\n        59,\n        60,\n        61,\n        62,\n        63,\n        64,\n        65,\n        66,\n        67,\n        68,\n        69,\n        70,\n        71,\n        72,\n        73,\n        74,\n        75,\n        76,\n        76,\n        77,\n        78,\n        79,\n        80,\n        81,\n        82,\n        83,\n        84,\n        85,\n        86,\n        87,\n        88,\n        89,\n        91,\n        93,\n        95,\n        96,\n        98,\n        100,\n        101,\n        102,\n        104,\n        106,\n        108,\n        110,\n        112,\n        114,\n        116,\n        118,\n        122,\n        124,\n        126,\n        128,\n        130,\n        132,\n        134,\n        136,\n        138,\n        140,\n        143,\n        145,\n        148,\n        151,\n        154,\n        157\n      ],\n      Mb = [\n        4,\n        5,\n        6,\n        7,\n        8,\n        9,\n        10,\n        11,\n        12,\n        13,\n        14,\n        15,\n        16,\n        17,\n        18,\n        19,\n        20,\n        21,\n        22,\n        23,\n        24,\n        25,\n        26,\n        27,\n        28,\n        29,\n        30,\n        31,\n        32,\n        33,\n        34,\n        35,\n        36,\n        37,\n        38,\n        39,\n        40,\n        41,\n        42,\n        43,\n        44,\n        45,\n        46,\n        47,\n        48,\n        49,\n        50,\n        51,\n        52,\n        53,\n        54,\n        55,\n        56,\n        57,\n        58,\n        60,\n        62,\n        64,\n        66,\n        68,\n        70,\n        72,\n        74,\n        76,\n        78,\n        80,\n        82,\n        84,\n        86,\n        88,\n        90,\n        92,\n        94,\n        96,\n        98,\n        100,\n        102,\n        104,\n        106,\n        108,\n        110,\n        112,\n        114,\n        116,\n        119,\n        122,\n        125,\n        128,\n        131,\n        134,\n        137,\n        140,\n        143,\n        146,\n        149,\n        152,\n        155,\n        158,\n        161,\n        164,\n        167,\n        170,\n        173,\n        177,\n        181,\n        185,\n        189,\n        193,\n        197,\n        201,\n        205,\n        209,\n        213,\n        217,\n        221,\n        225,\n        229,\n        234,\n        239,\n        245,\n        249,\n        254,\n        259,\n        264,\n        269,\n        274,\n        279,\n        284\n      ],\n      oa = null,\n      He = [\n        [173, 148, 140, 0],\n        [176, 155, 140, 135, 0],\n        [180, 157, 141, 134, 130, 0],\n        [254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0]\n      ],\n      Ie = [0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15],\n      Mc = [-0, 1, -1, 2, -2, 3, 4, 6, -3, 5, -4, -5, -6, 7, -7, 8, -8, -9],\n      Fe = [\n        [\n          [\n            [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n            [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n            [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n          ],\n          [\n            [253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128],\n            [189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128],\n            [106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128]\n          ],\n          [\n            [1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128],\n            [181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128],\n            [78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128]\n          ],\n          [\n            [1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128],\n            [184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128],\n            [77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128]\n          ],\n          [\n            [1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128],\n            [170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128],\n            [37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128]\n          ],\n          [\n            [1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128],\n            [207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128],\n            [102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128]\n          ],\n          [\n            [1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128],\n            [177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128],\n            [80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128]\n          ],\n          [\n            [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n            [246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n            [255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n          ]\n        ],\n        [\n          [\n            [198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62],\n            [131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1],\n            [68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128]\n          ],\n          [\n            [1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128],\n            [184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128],\n            [81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128]\n          ],\n          [\n            [1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128],\n            [99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128],\n            [23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128]\n          ],\n          [\n            [1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128],\n            [109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128],\n            [44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128]\n          ],\n          [\n            [1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128],\n            [94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128],\n            [22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128]\n          ],\n          [\n            [1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128],\n            [124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128],\n            [35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128]\n          ],\n          [\n            [1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128],\n            [121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128],\n            [45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128]\n          ],\n          [\n            [1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128],\n            [203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n            [137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128]\n          ]\n        ],\n        [\n          [\n            [253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128],\n            [175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128],\n            [73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128]\n          ],\n          [\n            [1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128],\n            [239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128],\n            [155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128]\n          ],\n          [\n            [1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128],\n            [201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128],\n            [69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128]\n          ],\n          [\n            [1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128],\n            [223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128],\n            [141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128]\n          ],\n          [\n            [1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n            [190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128],\n            [149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n          ],\n          [\n            [1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n            [247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n            [240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n          ],\n          [\n            [1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128],\n            [213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128],\n            [55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n          ],\n          [\n            [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n            [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n            [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n          ]\n        ],\n        [\n          [\n            [202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255],\n            [126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128],\n            [61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128]\n          ],\n          [\n            [1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128],\n            [166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128],\n            [39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128]\n          ],\n          [\n            [1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128],\n            [124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128],\n            [24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128]\n          ],\n          [\n            [1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128],\n            [149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128],\n            [28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128]\n          ],\n          [\n            [1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128],\n            [123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128],\n            [20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128]\n          ],\n          [\n            [1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128],\n            [168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128],\n            [47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128]\n          ],\n          [\n            [1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128],\n            [141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128],\n            [42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128]\n          ],\n          [\n            [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n            [244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n            [238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n          ]\n        ]\n      ],\n      Ke = [\n        [\n          [231, 120, 48, 89, 115, 113, 120, 152, 112],\n          [152, 179, 64, 126, 170, 118, 46, 70, 95],\n          [175, 69, 143, 80, 85, 82, 72, 155, 103],\n          [56, 58, 10, 171, 218, 189, 17, 13, 152],\n          [114, 26, 17, 163, 44, 195, 21, 10, 173],\n          [121, 24, 80, 195, 26, 62, 44, 64, 85],\n          [144, 71, 10, 38, 171, 213, 144, 34, 26],\n          [170, 46, 55, 19, 136, 160, 33, 206, 71],\n          [63, 20, 8, 114, 114, 208, 12, 9, 226],\n          [81, 40, 11, 96, 182, 84, 29, 16, 36]\n        ],\n        [\n          [134, 183, 89, 137, 98, 101, 106, 165, 148],\n          [72, 187, 100, 130, 157, 111, 32, 75, 80],\n          [66, 102, 167, 99, 74, 62, 40, 234, 128],\n          [41, 53, 9, 178, 241, 141, 26, 8, 107],\n          [74, 43, 26, 146, 73, 166, 49, 23, 157],\n          [65, 38, 105, 160, 51, 52, 31, 115, 128],\n          [104, 79, 12, 27, 217, 255, 87, 17, 7],\n          [87, 68, 71, 44, 114, 51, 15, 186, 23],\n          [47, 41, 14, 110, 182, 183, 21, 17, 194],\n          [66, 45, 25, 102, 197, 189, 23, 18, 22]\n        ],\n        [\n          [88, 88, 147, 150, 42, 46, 45, 196, 205],\n          [43, 97, 183, 117, 85, 38, 35, 179, 61],\n          [39, 53, 200, 87, 26, 21, 43, 232, 171],\n          [56, 34, 51, 104, 114, 102, 29, 93, 77],\n          [39, 28, 85, 171, 58, 165, 90, 98, 64],\n          [34, 22, 116, 206, 23, 34, 43, 166, 73],\n          [107, 54, 32, 26, 51, 1, 81, 43, 31],\n          [68, 25, 106, 22, 64, 171, 36, 225, 114],\n          [34, 19, 21, 102, 132, 188, 16, 76, 124],\n          [62, 18, 78, 95, 85, 57, 50, 48, 51]\n        ],\n        [\n          [193, 101, 35, 159, 215, 111, 89, 46, 111],\n          [60, 148, 31, 172, 219, 228, 21, 18, 111],\n          [112, 113, 77, 85, 179, 255, 38, 120, 114],\n          [40, 42, 1, 196, 245, 209, 10, 25, 109],\n          [88, 43, 29, 140, 166, 213, 37, 43, 154],\n          [61, 63, 30, 155, 67, 45, 68, 1, 209],\n          [100, 80, 8, 43, 154, 1, 51, 26, 71],\n          [142, 78, 78, 16, 255, 128, 34, 197, 171],\n          [41, 40, 5, 102, 211, 183, 4, 1, 221],\n          [51, 50, 17, 168, 209, 192, 23, 25, 82]\n        ],\n        [\n          [138, 31, 36, 171, 27, 166, 38, 44, 229],\n          [67, 87, 58, 169, 82, 115, 26, 59, 179],\n          [63, 59, 90, 180, 59, 166, 93, 73, 154],\n          [40, 40, 21, 116, 143, 209, 34, 39, 175],\n          [47, 15, 16, 183, 34, 223, 49, 45, 183],\n          [46, 17, 33, 183, 6, 98, 15, 32, 183],\n          [57, 46, 22, 24, 128, 1, 54, 17, 37],\n          [65, 32, 73, 115, 28, 128, 23, 128, 205],\n          [40, 3, 9, 115, 51, 192, 18, 6, 223],\n          [87, 37, 9, 115, 59, 77, 64, 21, 47]\n        ],\n        [\n          [104, 55, 44, 218, 9, 54, 53, 130, 226],\n          [64, 90, 70, 205, 40, 41, 23, 26, 57],\n          [54, 57, 112, 184, 5, 41, 38, 166, 213],\n          [30, 34, 26, 133, 152, 116, 10, 32, 134],\n          [39, 19, 53, 221, 26, 114, 32, 73, 255],\n          [31, 9, 65, 234, 2, 15, 1, 118, 73],\n          [75, 32, 12, 51, 192, 255, 160, 43, 51],\n          [88, 31, 35, 67, 102, 85, 55, 186, 85],\n          [56, 21, 23, 111, 59, 205, 45, 37, 192],\n          [55, 38, 70, 124, 73, 102, 1, 34, 98]\n        ],\n        [\n          [125, 98, 42, 88, 104, 85, 117, 175, 82],\n          [95, 84, 53, 89, 128, 100, 113, 101, 45],\n          [75, 79, 123, 47, 51, 128, 81, 171, 1],\n          [57, 17, 5, 71, 102, 57, 53, 41, 49],\n          [38, 33, 13, 121, 57, 73, 26, 1, 85],\n          [41, 10, 67, 138, 77, 110, 90, 47, 114],\n          [115, 21, 2, 10, 102, 255, 166, 23, 6],\n          [101, 29, 16, 10, 85, 128, 101, 196, 26],\n          [57, 18, 10, 102, 102, 213, 34, 20, 43],\n          [117, 20, 15, 36, 163, 128, 68, 1, 26]\n        ],\n        [\n          [102, 61, 71, 37, 34, 53, 31, 243, 192],\n          [69, 60, 71, 38, 73, 119, 28, 222, 37],\n          [68, 45, 128, 34, 1, 47, 11, 245, 171],\n          [62, 17, 19, 70, 146, 85, 55, 62, 70],\n          [37, 43, 37, 154, 100, 163, 85, 160, 1],\n          [63, 9, 92, 136, 28, 64, 32, 201, 85],\n          [75, 15, 9, 9, 64, 255, 184, 119, 16],\n          [86, 6, 28, 5, 64, 255, 25, 248, 1],\n          [56, 8, 17, 132, 137, 255, 55, 116, 128],\n          [58, 15, 20, 82, 135, 57, 26, 121, 40]\n        ],\n        [\n          [164, 50, 31, 137, 154, 133, 25, 35, 218],\n          [51, 103, 44, 131, 131, 123, 31, 6, 158],\n          [86, 40, 64, 135, 148, 224, 45, 183, 128],\n          [22, 26, 17, 131, 240, 154, 14, 1, 209],\n          [45, 16, 21, 91, 64, 222, 7, 1, 197],\n          [56, 21, 39, 155, 60, 138, 23, 102, 213],\n          [83, 12, 13, 54, 192, 255, 68, 47, 28],\n          [85, 26, 85, 85, 128, 128, 32, 146, 171],\n          [18, 11, 7, 63, 144, 171, 4, 4, 246],\n          [35, 27, 10, 146, 174, 171, 12, 26, 128]\n        ],\n        [\n          [190, 80, 35, 99, 180, 80, 126, 54, 45],\n          [85, 126, 47, 87, 176, 51, 41, 20, 32],\n          [101, 75, 128, 139, 118, 146, 116, 128, 85],\n          [56, 41, 15, 176, 236, 85, 37, 9, 62],\n          [71, 30, 17, 119, 118, 255, 17, 18, 138],\n          [101, 38, 60, 138, 55, 70, 43, 26, 142],\n          [146, 36, 19, 30, 171, 255, 97, 27, 20],\n          [138, 45, 61, 62, 219, 1, 81, 188, 64],\n          [32, 41, 20, 117, 151, 142, 20, 21, 163],\n          [112, 19, 12, 61, 195, 128, 48, 4, 24]\n        ]\n      ],\n      Ee = [\n        [\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n            [249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n            [234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255],\n            [250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255],\n            [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ]\n        ],\n        [\n          [\n            [217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255],\n            [234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255]\n          ],\n          [\n            [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n            [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ]\n        ],\n        [\n          [\n            [186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255],\n            [234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255],\n            [251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255]\n          ],\n          [\n            [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ]\n        ],\n        [\n          [\n            [248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255],\n            [248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n            [246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n            [252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n            [248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n            [253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n            [252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n            [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ],\n          [\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n            [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n          ]\n        ]\n      ],\n      Ge = [0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0],\n      Nc,\n      Y = [],\n      W = [],\n      ka = [],\n      Za,\n      fd,\n      Nb,\n      pa,\n      Ob,\n      Xc,\n      Tc,\n      Yc,\n      Uc,\n      Zc,\n      Vc,\n      $c,\n      Wc,\n      Rc,\n      Pc,\n      Sc,\n      Qc,\n      re = 1,\n      Cc = 2,\n      ia = [],\n      za,\n      vc,\n      fc,\n      Fc,\n      P = [];\n    va(\"UpsampleRgbLinePair\", Ga, 3);\n    va(\"UpsampleBgrLinePair\", Tb, 3);\n    va(\"UpsampleRgbaLinePair\", wd, 4);\n    va(\"UpsampleBgraLinePair\", vd, 4);\n    va(\"UpsampleArgbLinePair\", ud, 4);\n    va(\"UpsampleRgba4444LinePair\", td, 2);\n    va(\"UpsampleRgb565LinePair\", sd, 2);\n    var Mf = self.UpsampleRgbLinePair,\n      Nf = self.UpsampleBgrLinePair,\n      nd = self.UpsampleRgbaLinePair,\n      od = self.UpsampleBgraLinePair,\n      pd = self.UpsampleArgbLinePair,\n      qd = self.UpsampleRgba4444LinePair,\n      Of = self.UpsampleRgb565LinePair,\n      Wa = 16,\n      Ba = 1 << (Wa - 1),\n      ta = -227,\n      Eb = 482,\n      rd = 6,\n      Pf = (256 << rd) - 1,\n      jc = 0,\n      Yd = V(256),\n      ae = V(256),\n      $d = V(256),\n      Zd = V(256),\n      be = V(Eb - ta),\n      ce = V(Eb - ta);\n    la(\"YuvToRgbRow\", Ga, 3);\n    la(\"YuvToBgrRow\", Tb, 3);\n    la(\"YuvToRgbaRow\", wd, 4);\n    la(\"YuvToBgraRow\", vd, 4);\n    la(\"YuvToArgbRow\", ud, 4);\n    la(\"YuvToRgba4444Row\", td, 2);\n    la(\"YuvToRgb565Row\", sd, 2);\n    var zd = [\n        0,\n        4,\n        8,\n        12,\n        128,\n        132,\n        136,\n        140,\n        256,\n        260,\n        264,\n        268,\n        384,\n        388,\n        392,\n        396\n      ],\n      Ya = [0, 2, 8],\n      Qf = [8, 7, 6, 4, 4, 2, 2, 2, 1, 1, 1, 1],\n      Ne = 1;\n    this.WebPDecodeRGBA = function(a, b, c, d, e) {\n      var f = Ua;\n      var g = new Cf(),\n        h = new Cb();\n      g.ba = h;\n      h.S = f;\n      h.width = [h.width];\n      h.height = [h.height];\n      var k = h.width;\n      var l = h.height,\n        m = new Td();\n      if (null == m || null == a) var n = 2;\n      else\n        x(null != m),\n          (n = Ad(a, b, c, m.width, m.height, m.Pd, m.Qd, m.format, null));\n      0 != n\n        ? (k = 0)\n        : (null != k && (k[0] = m.width[0]),\n          null != l && (l[0] = m.height[0]),\n          (k = 1));\n      if (k) {\n        h.width = h.width[0];\n        h.height = h.height[0];\n        null != d && (d[0] = h.width);\n        null != e && (e[0] = h.height);\n        b: {\n          d = new Oa();\n          e = new md();\n          e.data = a;\n          e.w = b;\n          e.ha = c;\n          e.kd = 1;\n          b = [0];\n          x(null != e);\n          a = Ad(e.data, e.w, e.ha, null, null, null, b, null, e);\n          (0 == a || 7 == a) && b[0] && (a = 4);\n          b = a;\n          if (0 == b) {\n            x(null != g);\n            d.data = e.data;\n            d.w = e.w + e.offset;\n            d.ha = e.ha - e.offset;\n            d.put = kc;\n            d.ac = gc;\n            d.bc = lc;\n            d.ma = g;\n            if (e.xa) {\n              a = Bc();\n              if (null == a) {\n                g = 1;\n                break b;\n              }\n              if (te(a, d)) {\n                b = Cd(d.width, d.height, g.Oa, g.ba);\n                if ((d = 0 == b)) {\n                  c: {\n                    d = a;\n                    d: for (;;) {\n                      if (null == d) {\n                        d = 0;\n                        break c;\n                      }\n                      x(null != d.s.yc);\n                      x(null != d.s.Ya);\n                      x(0 < d.s.Wb);\n                      c = d.l;\n                      x(null != c);\n                      e = c.ma;\n                      x(null != e);\n                      if (0 != d.xb) {\n                        d.ca = e.ba;\n                        d.tb = e.tb;\n                        x(null != d.ca);\n                        if (!hc(e.Oa, c, Va)) {\n                          d.a = 2;\n                          break d;\n                        }\n                        if (!Ec(d, c.width)) break d;\n                        if (c.da) break d;\n                        (c.da || hb(d.ca.S)) && Aa();\n                        11 > d.ca.S ||\n                          (alert(\"todo:WebPInitConvertARGBToYUV\"),\n                          null != d.ca.f.kb.F && Aa());\n                        if (\n                          d.Pb &&\n                          0 < d.s.ua &&\n                          null == d.s.vb.X &&\n                          !Zb(d.s.vb, d.s.Wa.Xa)\n                        ) {\n                          d.a = 1;\n                          break d;\n                        }\n                        d.xb = 0;\n                      }\n                      if (!Jb(d, d.V, d.Ba, d.c, d.i, c.o, ge)) break d;\n                      e.Dc = d.Ma;\n                      d = 1;\n                      break c;\n                    }\n                    x(0 != d.a);\n                    d = 0;\n                  }\n                  d = !d;\n                }\n                d && (b = a.a);\n              } else b = a.a;\n            } else {\n              a = new Ce();\n              if (null == a) {\n                g = 1;\n                break b;\n              }\n              a.Fa = e.na;\n              a.P = e.P;\n              a.qc = e.Sa;\n              if (Kc(a, d)) {\n                if (((b = Cd(d.width, d.height, g.Oa, g.ba)), 0 == b)) {\n                  a.Aa = 0;\n                  c = g.Oa;\n                  e = a;\n                  x(null != e);\n                  if (null != c) {\n                    k = c.Md;\n                    k = 0 > k ? 0 : 100 < k ? 255 : (255 * k) / 100;\n                    if (0 < k) {\n                      for (l = m = 0; 4 > l; ++l)\n                        (n = e.pb[l]),\n                          12 > n.lc &&\n                            (n.ia = (k * Qf[0 > n.lc ? 0 : n.lc]) >> 3),\n                          (m |= n.ia);\n                      m && (alert(\"todo:VP8InitRandom\"), (e.ia = 1));\n                    }\n                    e.Ga = c.Id;\n                    100 < e.Ga ? (e.Ga = 100) : 0 > e.Ga && (e.Ga = 0);\n                  }\n                  Me(a, d) || (b = a.a);\n                }\n              } else b = a.a;\n            }\n            0 == b && null != g.Oa && g.Oa.fd && (b = Bd(g.ba));\n          }\n          g = b;\n        }\n        f = 0 != g ? null : 11 > f ? h.f.RGBA.eb : h.f.kb.y;\n      } else f = null;\n      return f;\n    };\n    var Dd = [3, 4, 3, 4, 4, 2, 2, 4, 4, 4, 2, 1, 1];\n  };\n  new _WebPDecoder();\n\n  /** @license\n   * Copyright (c) 2017 Dominik Homberger\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nhttps://webpjs.appspot.com\nWebPRiffParser dominikhlbg@gmail.com\n*/\n\n  function memcmp(data, data_off, str, size) {\n    for (var i = 0; i < size; i++)\n      if (data[data_off + i] != str.charCodeAt(i)) return true;\n    return false;\n  }\n\n  function GetTag(data, data_off) {\n    var str = \"\";\n    for (var i = 0; i < 4; i++) str += String.fromCharCode(data[data_off++]);\n    return str;\n  }\n\n  function GetLE16(data, data_off) {\n    return (data[data_off + 0] << 0) | (data[data_off + 1] << 8);\n  }\n\n  function GetLE24(data, data_off) {\n    return (\n      ((data[data_off + 0] << 0) |\n        (data[data_off + 1] << 8) |\n        (data[data_off + 2] << 16)) >>>\n      0\n    );\n  }\n\n  function GetLE32(data, data_off) {\n    return (\n      ((data[data_off + 0] << 0) |\n        (data[data_off + 1] << 8) |\n        (data[data_off + 2] << 16) |\n        (data[data_off + 3] << 24)) >>>\n      0\n    );\n  }\n\n  function WebPRiffParser(src, src_off) {\n    var imagearray = {};\n    var i = 0;\n    var alpha_chunk = false;\n    var alpha_size = 0;\n    var alpha_offset = 0;\n    imagearray[\"frames\"] = [];\n    if (memcmp(src, src_off, \"RIFF\", 4)) return;\n    src_off += 4;\n    var riff_size = GetLE32(src, src_off) + 8;\n    src_off += 8;\n\n    while (src_off < src.length) {\n      var fourcc = GetTag(src, src_off);\n      src_off += 4;\n\n      var payload_size = GetLE32(src, src_off);\n      src_off += 4;\n      var payload_size_padded = payload_size + (payload_size & 1);\n\n      switch (fourcc) {\n        case \"VP8 \":\n        case \"VP8L\":\n          if (typeof imagearray[\"frames\"][i] === \"undefined\")\n            imagearray[\"frames\"][i] = {};\n          var obj = imagearray[\"frames\"][i];\n          var height = [0];\n          var width = [0];\n          obj[\"src_off\"] = alpha_chunk ? alpha_offset : src_off - 8;\n          obj[\"src_size\"] = alpha_size + payload_size + 8;\n          //var rgba = webpdecoder.WebPDecodeRGBA(src,(alpha_chunk?alpha_offset:src_off-8),alpha_size+payload_size+8,width,height);\n          //imagearray[i]={'rgba':rgba,'width':width[0],'height':height[0]};\n          i++;\n          if (alpha_chunk) {\n            alpha_chunk = false;\n            alpha_size = 0;\n            alpha_offset = 0;\n          }\n          break;\n        case \"VP8X\":\n          var obj = (imagearray[\"header\"] = {});\n          var feature_flags = (obj[\"feature_flags\"] = src[src_off]);\n          var src_off_ = src_off + 4;\n          var canvas_width = (obj[\"canvas_width\"] = 1 + GetLE24(src, src_off_));\n          src_off_ += 3;\n          var canvas_height = (obj[\"canvas_height\"] =\n            1 + GetLE24(src, src_off_));\n          src_off_ += 3;\n          break;\n        case \"ALPH\":\n          alpha_chunk = true;\n          alpha_size = payload_size_padded + 8;\n          alpha_offset = src_off - 8;\n          break;\n\n        case \"ANIM\":\n          var obj = imagearray[\"header\"];\n          var bgcolor = (obj[\"bgcolor\"] = GetLE32(src, src_off));\n          src_off_ = src_off + 4;\n\n          var loop_count = (obj[\"loop_count\"] = GetLE16(src, src_off_));\n          src_off_ += 2;\n          break;\n        case \"ANMF\":\n          var offset_x = 0,\n            offset_y = 0,\n            width = 0,\n            height = 0,\n            duration = 0,\n            blend = 0,\n            dispose = 0,\n            temp = 0;\n          var obj = (imagearray[\"frames\"][i] = {});\n          obj[\"offset_x\"] = offset_x = 2 * GetLE24(src, src_off);\n          src_off += 3;\n          obj[\"offset_y\"] = offset_y = 2 * GetLE24(src, src_off);\n          src_off += 3;\n          obj[\"width\"] = width = 1 + GetLE24(src, src_off);\n          src_off += 3;\n          obj[\"height\"] = height = 1 + GetLE24(src, src_off);\n          src_off += 3;\n          obj[\"duration\"] = duration = GetLE24(src, src_off);\n          src_off += 3;\n          temp = src[src_off++];\n          obj[\"dispose\"] = dispose = temp & 1;\n          obj[\"blend\"] = blend = (temp >> 1) & 1;\n          break;\n        default:\n      }\n      if (fourcc != \"ANMF\") src_off += payload_size_padded;\n    }\n    return imagearray;\n  }\n\n  var height = [0];\n  var width = [0];\n  var pixels = [];\n  var webpdecoder = new _WebPDecoder();\n\n  var response = imageData;\n  var imagearray = WebPRiffParser(response, 0);\n  imagearray[\"response\"] = response;\n  imagearray[\"rgbaoutput\"] = true;\n  imagearray[\"dataurl\"] = false;\n\n  var header = imagearray[\"header\"] ? imagearray[\"header\"] : null;\n  var frames = imagearray[\"frames\"] ? imagearray[\"frames\"] : null;\n\n  if (header) {\n    header[\"loop_counter\"] = header[\"loop_count\"];\n    height = [header[\"canvas_height\"]];\n    width = [header[\"canvas_width\"]];\n\n    var blend = false;\n    for (var f = 0; f < frames.length; f++)\n      if (frames[f][\"blend\"] == 0) {\n        blend = true;\n        break;\n      }\n  }\n\n  var frame = frames[0];\n  var rgba = webpdecoder.WebPDecodeRGBA(\n    response,\n    frame[\"src_off\"],\n    frame[\"src_size\"],\n    width,\n    height\n  );\n  frame[\"rgba\"] = rgba;\n  frame[\"imgwidth\"] = width[0];\n  frame[\"imgheight\"] = height[0];\n\n  for (var i = 0; i < width[0] * height[0] * 4; i++) {\n    pixels[i] = rgba[i];\n  }\n\n  this.width = width;\n  this.height = height;\n  this.data = pixels;\n  return this;\n}\n\nWebPDecoder.prototype.getData = function() {\n  return this.data;\n};\n\nexport { WebPDecoder };\n", "/** ====================================================================\n * @license\n * jsPDF XMP metadata plugin\n * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\nfunction postPutResources() {\n  const metadata = this.internal.__metadata__.metadata;\n  const utf8Metadata = unescape(encodeURIComponent(metadata));\n\n  const rawXml = this.internal.__metadata__.rawXml;\n  let content;\n  if (rawXml) {\n    content = utf8Metadata;\n  } else {\n    const xmpmetaBeginning = '<x:xmpmeta xmlns:x=\"adobe:ns:meta/\">';\n    const rdfBeginning =\n      '<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"><rdf:Description rdf:about=\"\" xmlns:jspdf=\"' +\n      this.internal.__metadata__.namespaceUri +\n      '\"><jspdf:metadata>';\n    const rdfEnding = \"</jspdf:metadata></rdf:Description></rdf:RDF>\";\n    const xmpmetaEnding = \"</x:xmpmeta>\";\n\n    content =\n      xmpmetaBeginning +\n      rdfBeginning +\n      escapeXml(utf8Metadata) +\n      rdfEnding +\n      xmpmetaEnding;\n  }\n\n  this.internal.__metadata__.metadataObjectNumber = this.internal.newObject();\n  this.internal.write(\n    \"<< /Type /Metadata /Subtype /XML /Length \" + content.length + \" >>\"\n  );\n  this.internal.write(\"stream\");\n  this.internal.write(content);\n  this.internal.write(\"endstream\");\n  this.internal.write(\"endobj\");\n}\n\nfunction putCatalog() {\n  if (this.internal.__metadata__.metadataObjectNumber) {\n    this.internal.write(\n      \"/Metadata \" + this.internal.__metadata__.metadataObjectNumber + \" 0 R\"\n    );\n  }\n}\n\nfunction escapeXml(str) {\n  return str\n    .replace(/&/g, \"&amp;\")\n    .replace(/</g, \"&lt;\")\n    .replace(/>/g, \"&gt;\")\n    .replace(/\"/g, \"&quot;\")\n    .replace(/'/g, \"&apos;\");\n}\n\n/**\n * Adds XMP formatted metadata to PDF.\n *\n * WARNING: Passing raw XML is potentially insecure! Always sanitize user input before passing it to this function!\n * @name addMetadata\n * @function\n * @param {string} metadata The actual metadata to be added. The interpretation of this parameter depends on the\n *   second parameter.\n * @param {boolean|string|undefined} rawXmlOrNamespaceUri If a string is passed it sets the namespace URI for the\n *   metadata and the metadata shall be stored as XMP simple value. The last character should be a slash or hash.\n *\n *   If this argument is omitted, a string is passed, or `false` is passed, the `metadata` argument will be\n *   XML-escaped before including it in the PDF.\n *\n *   If `true` is passed, the `metadata` argument will be interpreted as raw XMP and will be included verbatim\n *   in the PDF. The passed metadata must be complete (including surrounding `xmpmeta` and `RDF` tags).\n * @returns {jsPDF} jsPDF-instance\n */\njsPDF.API.addMetadata = function(metadata, rawXmlOrNamespaceUri) {\n  if (typeof this.internal.__metadata__ === \"undefined\") {\n    this.internal.__metadata__ = {\n      metadata: metadata,\n      namespaceUri:\n        rawXmlOrNamespaceUri ?? \"http://jspdf.default.namespaceuri/\",\n      rawXml:\n        typeof rawXmlOrNamespaceUri === \"boolean\" ? rawXmlOrNamespaceUri : false\n    };\n    this.internal.events.subscribe(\"putCatalog\", putCatalog);\n\n    this.internal.events.subscribe(\"postPutResources\", postPutResources);\n  }\n  return this;\n};\n", "/* eslint-disable no-fallthrough */\n/* eslint-disable no-console */\n/**\n * @license\n * jsPDF Context2D PlugIn Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { RGBColor } from \"../libs/rgbcolor.js\";\nimport { console } from \"../libs/console.js\";\nimport {\n  buildFontFaceMap,\n  parseFontFamily,\n  resolveFontFace\n} from \"../libs/fontFace.js\";\n\n/**\n * This plugin mimics the HTML5 CanvasRenderingContext2D.\n *\n * The goal is to provide a way for current canvas implementations to print directly to a PDF.\n *\n * @name context2d\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n  var ContextLayer = function(ctx) {\n    ctx = ctx || {};\n    this.isStrokeTransparent = ctx.isStrokeTransparent || false;\n    this.strokeOpacity = ctx.strokeOpacity || 1;\n    this.strokeStyle = ctx.strokeStyle || \"#000000\";\n    this.fillStyle = ctx.fillStyle || \"#000000\";\n    this.isFillTransparent = ctx.isFillTransparent || false;\n    this.fillOpacity = ctx.fillOpacity || 1;\n    this.font = ctx.font || \"10px sans-serif\";\n    this.textBaseline = ctx.textBaseline || \"alphabetic\";\n    this.textAlign = ctx.textAlign || \"left\";\n    this.lineWidth = ctx.lineWidth || 1;\n    this.lineJoin = ctx.lineJoin || \"miter\";\n    this.lineCap = ctx.lineCap || \"butt\";\n    this.path = ctx.path || [];\n    this.transform =\n      typeof ctx.transform !== \"undefined\"\n        ? ctx.transform.clone()\n        : new Matrix();\n    this.globalCompositeOperation = ctx.globalCompositeOperation || \"normal\";\n    this.globalAlpha = ctx.globalAlpha || 1.0;\n    this.clip_path = ctx.clip_path || [];\n    this.currentPoint = ctx.currentPoint || new Point();\n    this.miterLimit = ctx.miterLimit || 10.0;\n    this.lastPoint = ctx.lastPoint || new Point();\n    this.lineDashOffset = ctx.lineDashOffset || 0.0;\n    this.lineDash = ctx.lineDash || [];\n    this.margin = ctx.margin || [0, 0, 0, 0];\n    this.prevPageLastElemOffset = ctx.prevPageLastElemOffset || 0;\n\n    this.ignoreClearRect =\n      typeof ctx.ignoreClearRect === \"boolean\" ? ctx.ignoreClearRect : true;\n    return this;\n  };\n\n  //stub\n  var f2,\n    getHorizontalCoordinateString,\n    getVerticalCoordinateString,\n    getHorizontalCoordinate,\n    getVerticalCoordinate,\n    Point,\n    Rectangle,\n    Matrix,\n    _ctx;\n  jsPDFAPI.events.push([\n    \"initialized\",\n    function() {\n      this.context2d = new Context2D(this);\n\n      f2 = this.internal.f2;\n      getHorizontalCoordinateString = this.internal.getCoordinateString;\n      getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\n      getHorizontalCoordinate = this.internal.getHorizontalCoordinate;\n      getVerticalCoordinate = this.internal.getVerticalCoordinate;\n      Point = this.internal.Point;\n      Rectangle = this.internal.Rectangle;\n      Matrix = this.internal.Matrix;\n      _ctx = new ContextLayer();\n    }\n  ]);\n\n  var Context2D = function(pdf) {\n    Object.defineProperty(this, \"canvas\", {\n      get: function() {\n        return { parentNode: false, style: false };\n      }\n    });\n\n    var _pdf = pdf;\n    Object.defineProperty(this, \"pdf\", {\n      get: function() {\n        return _pdf;\n      }\n    });\n\n    var _pageWrapXEnabled = false;\n    /**\n     * @name pageWrapXEnabled\n     * @type {boolean}\n     * @default false\n     */\n    Object.defineProperty(this, \"pageWrapXEnabled\", {\n      get: function() {\n        return _pageWrapXEnabled;\n      },\n      set: function(value) {\n        _pageWrapXEnabled = Boolean(value);\n      }\n    });\n\n    var _pageWrapYEnabled = false;\n    /**\n     * @name pageWrapYEnabled\n     * @type {boolean}\n     * @default true\n     */\n    Object.defineProperty(this, \"pageWrapYEnabled\", {\n      get: function() {\n        return _pageWrapYEnabled;\n      },\n      set: function(value) {\n        _pageWrapYEnabled = Boolean(value);\n      }\n    });\n\n    var _posX = 0;\n    /**\n     * @name posX\n     * @type {number}\n     * @default 0\n     */\n    Object.defineProperty(this, \"posX\", {\n      get: function() {\n        return _posX;\n      },\n      set: function(value) {\n        if (!isNaN(value)) {\n          _posX = value;\n        }\n      }\n    });\n\n    var _posY = 0;\n    /**\n     * @name posY\n     * @type {number}\n     * @default 0\n     */\n    Object.defineProperty(this, \"posY\", {\n      get: function() {\n        return _posY;\n      },\n      set: function(value) {\n        if (!isNaN(value)) {\n          _posY = value;\n        }\n      }\n    });\n\n    /**\n     * Gets or sets the page margin when using auto paging. Has no effect when {@link autoPaging} is off.\n     * @name margin\n     * @type {number|number[]}\n     * @default [0, 0, 0, 0]\n     */\n    Object.defineProperty(this, \"margin\", {\n      get: function() {\n        return _ctx.margin;\n      },\n      set: function(value) {\n        var margin;\n        if (typeof value === \"number\") {\n          margin = [value, value, value, value];\n        } else {\n          margin = new Array(4);\n          margin[0] = value[0];\n          margin[1] = value.length >= 2 ? value[1] : margin[0];\n          margin[2] = value.length >= 3 ? value[2] : margin[0];\n          margin[3] = value.length >= 4 ? value[3] : margin[1];\n        }\n        _ctx.margin = margin;\n      }\n    });\n\n    var _autoPaging = false;\n    /**\n     * Gets or sets the auto paging mode. When auto paging is enabled, the context2d will automatically draw on the\n     * next page if a shape or text chunk doesn't fit entirely on the current page. The context2d will create new\n     * pages if required.\n     *\n     * Context2d supports different modes:\n     * <ul>\n     * <li>\n     *   <code>false</code>: Auto paging is disabled.\n     * </li>\n     * <li>\n     *   <code>true</code> or <code>'slice'</code>: Will cut shapes or text chunks across page breaks. Will possibly\n     *   slice text in half, making it difficult to read.\n     * </li>\n     * <li>\n     *   <code>'text'</code>: Trys not to cut text in half across page breaks. Works best for documents consisting\n     *   mostly of a single column of text.\n     * </li>\n     * </ul>\n     * @name Context2D#autoPaging\n     * @type {boolean|\"slice\"|\"text\"}\n     * @default false\n     */\n    Object.defineProperty(this, \"autoPaging\", {\n      get: function() {\n        return _autoPaging;\n      },\n      set: function(value) {\n        _autoPaging = value;\n      }\n    });\n\n    var lastBreak = 0;\n    /**\n     * @name lastBreak\n     * @type {number}\n     * @default 0\n     */\n    Object.defineProperty(this, \"lastBreak\", {\n      get: function() {\n        return lastBreak;\n      },\n      set: function(value) {\n        lastBreak = value;\n      }\n    });\n\n    var pageBreaks = [];\n    /**\n     * Y Position of page breaks.\n     * @name pageBreaks\n     * @type {number}\n     * @default 0\n     */\n    Object.defineProperty(this, \"pageBreaks\", {\n      get: function() {\n        return pageBreaks;\n      },\n      set: function(value) {\n        pageBreaks = value;\n      }\n    });\n\n    /**\n     * @name ctx\n     * @type {object}\n     * @default {}\n     */\n    Object.defineProperty(this, \"ctx\", {\n      get: function() {\n        return _ctx;\n      },\n      set: function(value) {\n        if (value instanceof ContextLayer) {\n          _ctx = value;\n        }\n      }\n    });\n\n    /**\n     * @name path\n     * @type {array}\n     * @default []\n     */\n    Object.defineProperty(this, \"path\", {\n      get: function() {\n        return _ctx.path;\n      },\n      set: function(value) {\n        _ctx.path = value;\n      }\n    });\n\n    /**\n     * @name ctxStack\n     * @type {array}\n     * @default []\n     */\n    var _ctxStack = [];\n    Object.defineProperty(this, \"ctxStack\", {\n      get: function() {\n        return _ctxStack;\n      },\n      set: function(value) {\n        _ctxStack = value;\n      }\n    });\n\n    /**\n     * Sets or returns the color, gradient, or pattern used to fill the drawing\n     *\n     * @name fillStyle\n     * @default #000000\n     * @property {(color|gradient|pattern)} value The color of the drawing. Default value is #000000<br />\n     * A gradient object (linear or radial) used to fill the drawing (not supported by context2d)<br />\n     * A pattern object to use to fill the drawing (not supported by context2d)\n     */\n    Object.defineProperty(this, \"fillStyle\", {\n      get: function() {\n        return this.ctx.fillStyle;\n      },\n      set: function(value) {\n        var rgba;\n        rgba = getRGBA(value);\n\n        this.ctx.fillStyle = rgba.style;\n        this.ctx.isFillTransparent = rgba.a === 0;\n        this.ctx.fillOpacity = rgba.a;\n\n        this.pdf.setFillColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\n        this.pdf.setTextColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\n      }\n    });\n\n    /**\n     * Sets or returns the color, gradient, or pattern used for strokes\n     *\n     * @name strokeStyle\n     * @default #000000\n     * @property {color} color A CSS color value that indicates the stroke color of the drawing. Default value is #000000 (not supported by context2d)\n     * @property {gradient} gradient A gradient object (linear or radial) used to create a gradient stroke (not supported by context2d)\n     * @property {pattern} pattern A pattern object used to create a pattern stroke (not supported by context2d)\n     */\n    Object.defineProperty(this, \"strokeStyle\", {\n      get: function() {\n        return this.ctx.strokeStyle;\n      },\n      set: function(value) {\n        var rgba = getRGBA(value);\n\n        this.ctx.strokeStyle = rgba.style;\n        this.ctx.isStrokeTransparent = rgba.a === 0;\n        this.ctx.strokeOpacity = rgba.a;\n\n        if (rgba.a === 0) {\n          this.pdf.setDrawColor(255, 255, 255);\n        } else if (rgba.a === 1) {\n          this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\n        } else {\n          this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\n        }\n      }\n    });\n\n    /**\n     * Sets or returns the style of the end caps for a line\n     *\n     * @name lineCap\n     * @default butt\n     * @property {(butt|round|square)} lineCap butt A flat edge is added to each end of the line <br/>\n     * round A rounded end cap is added to each end of the line<br/>\n     * square A square end cap is added to each end of the line<br/>\n     */\n    Object.defineProperty(this, \"lineCap\", {\n      get: function() {\n        return this.ctx.lineCap;\n      },\n      set: function(value) {\n        if ([\"butt\", \"round\", \"square\"].indexOf(value) !== -1) {\n          this.ctx.lineCap = value;\n          this.pdf.setLineCap(value);\n        }\n      }\n    });\n\n    /**\n     * Sets or returns the current line width\n     *\n     * @name lineWidth\n     * @default 1\n     * @property {number} lineWidth The current line width, in pixels\n     */\n    Object.defineProperty(this, \"lineWidth\", {\n      get: function() {\n        return this.ctx.lineWidth;\n      },\n      set: function(value) {\n        if (!isNaN(value)) {\n          this.ctx.lineWidth = value;\n          this.pdf.setLineWidth(value);\n        }\n      }\n    });\n\n    /**\n     * Sets or returns the type of corner created, when two lines meet\n     */\n    Object.defineProperty(this, \"lineJoin\", {\n      get: function() {\n        return this.ctx.lineJoin;\n      },\n      set: function(value) {\n        if ([\"bevel\", \"round\", \"miter\"].indexOf(value) !== -1) {\n          this.ctx.lineJoin = value;\n          this.pdf.setLineJoin(value);\n        }\n      }\n    });\n\n    /**\n     * A number specifying the miter limit ratio in coordinate space units. Zero, negative, Infinity, and NaN values are ignored. The default value is 10.0.\n     *\n     * @name miterLimit\n     * @default 10\n     */\n    Object.defineProperty(this, \"miterLimit\", {\n      get: function() {\n        return this.ctx.miterLimit;\n      },\n      set: function(value) {\n        if (!isNaN(value)) {\n          this.ctx.miterLimit = value;\n          this.pdf.setMiterLimit(value);\n        }\n      }\n    });\n\n    Object.defineProperty(this, \"textBaseline\", {\n      get: function() {\n        return this.ctx.textBaseline;\n      },\n      set: function(value) {\n        this.ctx.textBaseline = value;\n      }\n    });\n\n    Object.defineProperty(this, \"textAlign\", {\n      get: function() {\n        return this.ctx.textAlign;\n      },\n      set: function(value) {\n        if ([\"right\", \"end\", \"center\", \"left\", \"start\"].indexOf(value) !== -1) {\n          this.ctx.textAlign = value;\n        }\n      }\n    });\n\n    var _fontFaceMap = null;\n    var _cachedFontList = null;\n\n    function getFontFaceMap(pdf, fontFaces) {\n      var currentFontMap = pdf.getFontList();\n\n      // Check if the font list has changed by comparing the JSON representation\n      var currentFontMapString = JSON.stringify(currentFontMap);\n\n      if (_fontFaceMap === null || _cachedFontList !== currentFontMapString) {\n        var convertedFontFaces = convertToFontFaces(currentFontMap);\n\n        _fontFaceMap = buildFontFaceMap(convertedFontFaces.concat(fontFaces));\n        _cachedFontList = currentFontMapString;\n      }\n\n      return _fontFaceMap;\n    }\n\n    function convertToFontFaces(fontMap) {\n      var fontFaces = [];\n\n      Object.keys(fontMap).forEach(function(family) {\n        var styles = fontMap[family];\n\n        styles.forEach(function(style) {\n          var fontFace = null;\n\n          switch (style) {\n            case \"bold\":\n              fontFace = {\n                family: family,\n                weight: \"bold\"\n              };\n              break;\n\n            case \"italic\":\n              fontFace = {\n                family: family,\n                style: \"italic\"\n              };\n              break;\n\n            case \"bolditalic\":\n              fontFace = {\n                family: family,\n                weight: \"bold\",\n                style: \"italic\"\n              };\n              break;\n\n            case \"\":\n            case \"normal\":\n              fontFace = {\n                family: family\n              };\n              break;\n          }\n\n          // If font-face is still null here, it is a font with some styling we don't recognize and\n          // cannot map or it is a font added via the fontFaces option of .html().\n          if (fontFace !== null) {\n            fontFace.ref = {\n              name: family,\n              style: style\n            };\n\n            fontFaces.push(fontFace);\n          }\n        });\n      });\n\n      return fontFaces;\n    }\n\n    var _fontFaces = null;\n    /**\n     * A map of available font-faces, as passed in the options of\n     * .html(). If set a limited implementation of the font style matching\n     * algorithm defined by https://www.w3.org/TR/css-fonts-3/#font-matching-algorithm\n     * will be used. If not set it will fallback to previous behavior.\n     */\n\n    Object.defineProperty(this, \"fontFaces\", {\n      get: function() {\n        return _fontFaces;\n      },\n      set: function(value) {\n        _fontFaceMap = null;\n        _cachedFontList = null;\n        _fontFaces = value;\n      }\n    });\n\n    Object.defineProperty(this, \"font\", {\n      get: function() {\n        return this.ctx.font;\n      },\n      set: function(value) {\n        this.ctx.font = value;\n        var rx, matches;\n\n        //source: https://stackoverflow.com/a/10136041\n        // eslint-disable-next-line no-useless-escape\n        rx = /^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-_,\\\"\\'\\sa-z0-9]+?)\\s*$/i;\n        matches = rx.exec(value);\n        if (matches !== null) {\n          var fontStyle = matches[1];\n          var fontVariant = matches[2];\n          var fontWeight = matches[3];\n          var fontSize = matches[4];\n          var lineHeight = matches[5];\n          var fontFamily = matches[6];\n        } else {\n          return;\n        }\n        var rxFontSize = /^([.\\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i;\n        var fontSizeUnit = rxFontSize.exec(fontSize)[2];\n\n        if (\"px\" === fontSizeUnit) {\n          fontSize = Math.floor(\n            parseFloat(fontSize) * this.pdf.internal.scaleFactor\n          );\n        } else if (\"em\" === fontSizeUnit) {\n          fontSize = Math.floor(parseFloat(fontSize) * this.pdf.getFontSize());\n        } else {\n          fontSize = Math.floor(\n            parseFloat(fontSize) * this.pdf.internal.scaleFactor\n          );\n        }\n\n        this.pdf.setFontSize(fontSize);\n        var parts = parseFontFamily(fontFamily);\n\n        if (this.fontFaces) {\n          var fontFaceMap = getFontFaceMap(this.pdf, this.fontFaces);\n\n          var rules = parts.map(function(ff) {\n            return {\n              family: ff,\n              stretch: \"normal\", // TODO: Extract font-stretch from font rule (perhaps write proper parser for it?)\n              weight: fontWeight,\n              style: fontStyle\n            };\n          });\n\n          var font = resolveFontFace(fontFaceMap, rules);\n          this.pdf.setFont(font.ref.name, font.ref.style);\n          return;\n        }\n\n        var style = \"\";\n        if (\n          fontWeight === \"bold\" ||\n          parseInt(fontWeight, 10) >= 700 ||\n          fontStyle === \"bold\"\n        ) {\n          style = \"bold\";\n        }\n\n        if (fontStyle === \"italic\") {\n          style += \"italic\";\n        }\n\n        if (style.length === 0) {\n          style = \"normal\";\n        }\n        var jsPdfFontName = \"\";\n\n        var fallbackFonts = {\n          arial: \"Helvetica\",\n          Arial: \"Helvetica\",\n          verdana: \"Helvetica\",\n          Verdana: \"Helvetica\",\n          helvetica: \"Helvetica\",\n          Helvetica: \"Helvetica\",\n          \"sans-serif\": \"Helvetica\",\n          fixed: \"Courier\",\n          monospace: \"Courier\",\n          terminal: \"Courier\",\n          cursive: \"Times\",\n          fantasy: \"Times\",\n          serif: \"Times\"\n        };\n\n        for (var i = 0; i < parts.length; i++) {\n          if (\n            this.pdf.internal.getFont(parts[i], style, {\n              noFallback: true,\n              disableWarning: true\n            }) !== undefined\n          ) {\n            jsPdfFontName = parts[i];\n            break;\n          } else if (\n            style === \"bolditalic\" &&\n            this.pdf.internal.getFont(parts[i], \"bold\", {\n              noFallback: true,\n              disableWarning: true\n            }) !== undefined\n          ) {\n            jsPdfFontName = parts[i];\n            style = \"bold\";\n          } else if (\n            this.pdf.internal.getFont(parts[i], \"normal\", {\n              noFallback: true,\n              disableWarning: true\n            }) !== undefined\n          ) {\n            jsPdfFontName = parts[i];\n            style = \"normal\";\n            break;\n          }\n        }\n        if (jsPdfFontName === \"\") {\n          for (var j = 0; j < parts.length; j++) {\n            if (fallbackFonts[parts[j]]) {\n              jsPdfFontName = fallbackFonts[parts[j]];\n              break;\n            }\n          }\n        }\n        jsPdfFontName = jsPdfFontName === \"\" ? \"Times\" : jsPdfFontName;\n        this.pdf.setFont(jsPdfFontName, style);\n      }\n    });\n\n    Object.defineProperty(this, \"globalCompositeOperation\", {\n      get: function() {\n        return this.ctx.globalCompositeOperation;\n      },\n      set: function(value) {\n        this.ctx.globalCompositeOperation = value;\n      }\n    });\n\n    Object.defineProperty(this, \"globalAlpha\", {\n      get: function() {\n        return this.ctx.globalAlpha;\n      },\n      set: function(value) {\n        this.ctx.globalAlpha = value;\n      }\n    });\n\n    /**\n     * A float specifying the amount of the line dash offset. The default value is 0.0.\n     *\n     * @name lineDashOffset\n     * @default 0.0\n     */\n    Object.defineProperty(this, \"lineDashOffset\", {\n      get: function() {\n        return this.ctx.lineDashOffset;\n      },\n      set: function(value) {\n        this.ctx.lineDashOffset = value;\n        setLineDash.call(this);\n      }\n    });\n\n    // Not HTML API\n    Object.defineProperty(this, \"lineDash\", {\n      get: function() {\n        return this.ctx.lineDash;\n      },\n      set: function(value) {\n        this.ctx.lineDash = value;\n        setLineDash.call(this);\n      }\n    });\n\n    // Not HTML API\n    Object.defineProperty(this, \"ignoreClearRect\", {\n      get: function() {\n        return this.ctx.ignoreClearRect;\n      },\n      set: function(value) {\n        this.ctx.ignoreClearRect = Boolean(value);\n      }\n    });\n  };\n\n  /**\n   * Sets the line dash pattern used when stroking lines.\n   * @name setLineDash\n   * @function\n   * @description It uses an array of values that specify alternating lengths of lines and gaps which describe the pattern.\n   */\n  Context2D.prototype.setLineDash = function(dashArray) {\n    this.lineDash = dashArray;\n  };\n\n  /**\n   * gets the current line dash pattern.\n   * @name getLineDash\n   * @function\n   * @returns {Array} An Array of numbers that specify distances to alternately draw a line and a gap (in coordinate space units). If the number, when setting the elements, is odd, the elements of the array get copied and concatenated. For example, setting the line dash to [5, 15, 25] will result in getting back [5, 15, 25, 5, 15, 25].\n   */\n  Context2D.prototype.getLineDash = function() {\n    if (this.lineDash.length % 2) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getLineDash#return_value\n      return this.lineDash.concat(this.lineDash);\n    } else {\n      // The copied value is returned to prevent contamination from outside.\n      return this.lineDash.slice();\n    }\n  };\n\n  Context2D.prototype.fill = function() {\n    pathPreProcess.call(this, \"fill\", false);\n  };\n\n  /**\n   * Actually draws the path you have defined\n   *\n   * @name stroke\n   * @function\n   * @description The stroke() method actually draws the path you have defined with all those moveTo() and lineTo() methods. The default color is black.\n   */\n  Context2D.prototype.stroke = function() {\n    pathPreProcess.call(this, \"stroke\", false);\n  };\n\n  /**\n   * Begins a path, or resets the current\n   *\n   * @name beginPath\n   * @function\n   * @description The beginPath() method begins a path, or resets the current path.\n   */\n  Context2D.prototype.beginPath = function() {\n    this.path = [\n      {\n        type: \"begin\"\n      }\n    ];\n  };\n\n  /**\n   * Moves the path to the specified point in the canvas, without creating a line\n   *\n   * @name moveTo\n   * @function\n   * @param x {Number} The x-coordinate of where to move the path to\n   * @param y {Number} The y-coordinate of where to move the path to\n   */\n  Context2D.prototype.moveTo = function(x, y) {\n    if (isNaN(x) || isNaN(y)) {\n      console.error(\"jsPDF.context2d.moveTo: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.moveTo\");\n    }\n\n    var pt = this.ctx.transform.applyToPoint(new Point(x, y));\n\n    this.path.push({\n      type: \"mt\",\n      x: pt.x,\n      y: pt.y\n    });\n    this.ctx.lastPoint = new Point(x, y);\n  };\n\n  /**\n   * Creates a path from the current point back to the starting point\n   *\n   * @name closePath\n   * @function\n   * @description The closePath() method creates a path from the current point back to the starting point.\n   */\n  Context2D.prototype.closePath = function() {\n    var pathBegin = new Point(0, 0);\n    var i = 0;\n    for (i = this.path.length - 1; i !== -1; i--) {\n      if (this.path[i].type === \"begin\") {\n        if (\n          typeof this.path[i + 1] === \"object\" &&\n          typeof this.path[i + 1].x === \"number\"\n        ) {\n          pathBegin = new Point(this.path[i + 1].x, this.path[i + 1].y);\n          break;\n        }\n      }\n    }\n    this.path.push({\n      type: \"close\"\n    });\n    this.ctx.lastPoint = new Point(pathBegin.x, pathBegin.y);\n  };\n\n  /**\n   * Adds a new point and creates a line to that point from the last specified point in the canvas\n   *\n   * @name lineTo\n   * @function\n   * @param x The x-coordinate of where to create the line to\n   * @param y The y-coordinate of where to create the line to\n   * @description The lineTo() method adds a new point and creates a line TO that point FROM the last specified point in the canvas (this method does not draw the line).\n   */\n  Context2D.prototype.lineTo = function(x, y) {\n    if (isNaN(x) || isNaN(y)) {\n      console.error(\"jsPDF.context2d.lineTo: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.lineTo\");\n    }\n\n    var pt = this.ctx.transform.applyToPoint(new Point(x, y));\n\n    this.path.push({\n      type: \"lt\",\n      x: pt.x,\n      y: pt.y\n    });\n    this.ctx.lastPoint = new Point(pt.x, pt.y);\n  };\n\n  /**\n   * Clips a region of any shape and size from the original canvas\n   *\n   * @name clip\n   * @function\n   * @description The clip() method clips a region of any shape and size from the original canvas.\n   */\n  Context2D.prototype.clip = function() {\n    this.ctx.clip_path = JSON.parse(JSON.stringify(this.path));\n    pathPreProcess.call(this, null, true);\n  };\n\n  /**\n   * Creates a cubic Bézier curve\n   *\n   * @name quadraticCurveTo\n   * @function\n   * @param cpx {Number} The x-coordinate of the Bézier control point\n   * @param cpy {Number} The y-coordinate of the Bézier control point\n   * @param x {Number} The x-coordinate of the ending point\n   * @param y {Number} The y-coordinate of the ending point\n   * @description The quadraticCurveTo() method adds a point to the current path by using the specified control points that represent a quadratic Bézier curve.<br /><br /> A quadratic Bézier curve requires two points. The first point is a control point that is used in the quadratic Bézier calculation and the second point is the ending point for the curve. The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\n   */\n  Context2D.prototype.quadraticCurveTo = function(cpx, cpy, x, y) {\n    if (isNaN(x) || isNaN(y) || isNaN(cpx) || isNaN(cpy)) {\n      console.error(\n        \"jsPDF.context2d.quadraticCurveTo: Invalid arguments\",\n        arguments\n      );\n      throw new Error(\n        \"Invalid arguments passed to jsPDF.context2d.quadraticCurveTo\"\n      );\n    }\n\n    var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\n    var pt1 = this.ctx.transform.applyToPoint(new Point(cpx, cpy));\n\n    this.path.push({\n      type: \"qct\",\n      x1: pt1.x,\n      y1: pt1.y,\n      x: pt0.x,\n      y: pt0.y\n    });\n    this.ctx.lastPoint = new Point(pt0.x, pt0.y);\n  };\n\n  /**\n   * Creates a cubic Bézier curve\n   *\n   * @name bezierCurveTo\n   * @function\n   * @param cp1x {Number} The x-coordinate of the first Bézier control point\n   * @param cp1y {Number} The y-coordinate of the first Bézier control point\n   * @param cp2x {Number} The x-coordinate of the second Bézier control point\n   * @param cp2y {Number} The y-coordinate of the second Bézier control point\n   * @param x {Number} The x-coordinate of the ending point\n   * @param y {Number} The y-coordinate of the ending point\n   * @description The bezierCurveTo() method adds a point to the current path by using the specified control points that represent a cubic Bézier curve. <br /><br />A cubic bezier curve requires three points. The first two points are control points that are used in the cubic Bézier calculation and the last point is the ending point for the curve.  The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\n   */\n  Context2D.prototype.bezierCurveTo = function(cp1x, cp1y, cp2x, cp2y, x, y) {\n    if (\n      isNaN(x) ||\n      isNaN(y) ||\n      isNaN(cp1x) ||\n      isNaN(cp1y) ||\n      isNaN(cp2x) ||\n      isNaN(cp2y)\n    ) {\n      console.error(\n        \"jsPDF.context2d.bezierCurveTo: Invalid arguments\",\n        arguments\n      );\n      throw new Error(\n        \"Invalid arguments passed to jsPDF.context2d.bezierCurveTo\"\n      );\n    }\n    var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\n    var pt1 = this.ctx.transform.applyToPoint(new Point(cp1x, cp1y));\n    var pt2 = this.ctx.transform.applyToPoint(new Point(cp2x, cp2y));\n\n    this.path.push({\n      type: \"bct\",\n      x1: pt1.x,\n      y1: pt1.y,\n      x2: pt2.x,\n      y2: pt2.y,\n      x: pt0.x,\n      y: pt0.y\n    });\n    this.ctx.lastPoint = new Point(pt0.x, pt0.y);\n  };\n\n  /**\n   * Creates an arc/curve (used to create circles, or parts of circles)\n   *\n   * @name arc\n   * @function\n   * @param x {Number} The x-coordinate of the center of the circle\n   * @param y {Number} The y-coordinate of the center of the circle\n   * @param radius {Number} The radius of the circle\n   * @param startAngle {Number} The starting angle, in radians (0 is at the 3 o'clock position of the arc's circle)\n   * @param endAngle {Number} The ending angle, in radians\n   * @param counterclockwise {Boolean} Optional. Specifies whether the drawing should be counterclockwise or clockwise. False is default, and indicates clockwise, while true indicates counter-clockwise.\n   * @description The arc() method creates an arc/curve (used to create circles, or parts of circles).\n   */\n  Context2D.prototype.arc = function(\n    x,\n    y,\n    radius,\n    startAngle,\n    endAngle,\n    counterclockwise\n  ) {\n    if (\n      isNaN(x) ||\n      isNaN(y) ||\n      isNaN(radius) ||\n      isNaN(startAngle) ||\n      isNaN(endAngle)\n    ) {\n      console.error(\"jsPDF.context2d.arc: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.arc\");\n    }\n    counterclockwise = Boolean(counterclockwise);\n\n    if (!this.ctx.transform.isIdentity) {\n      var xpt = this.ctx.transform.applyToPoint(new Point(x, y));\n      x = xpt.x;\n      y = xpt.y;\n\n      var x_radPt = this.ctx.transform.applyToPoint(new Point(0, radius));\n      var x_radPt0 = this.ctx.transform.applyToPoint(new Point(0, 0));\n      radius = Math.sqrt(\n        Math.pow(x_radPt.x - x_radPt0.x, 2) +\n          Math.pow(x_radPt.y - x_radPt0.y, 2)\n      );\n    }\n    if (Math.abs(endAngle - startAngle) >= 2 * Math.PI) {\n      startAngle = 0;\n      endAngle = 2 * Math.PI;\n    }\n\n    this.path.push({\n      type: \"arc\",\n      x: x,\n      y: y,\n      radius: radius,\n      startAngle: startAngle,\n      endAngle: endAngle,\n      counterclockwise: counterclockwise\n    });\n    // this.ctx.lastPoint(new Point(pt.x,pt.y));\n  };\n\n  /**\n   * Creates an arc/curve between two tangents\n   *\n   * @name arcTo\n   * @function\n   * @param x1 {Number} The x-coordinate of the first tangent\n   * @param y1 {Number} The y-coordinate of the first tangent\n   * @param x2 {Number} The x-coordinate of the second tangent\n   * @param y2 {Number} The y-coordinate of the second tangent\n   * @param radius The radius of the arc\n   * @description The arcTo() method creates an arc/curve between two tangents on the canvas.\n   */\n  // eslint-disable-next-line no-unused-vars\n  Context2D.prototype.arcTo = function(x1, y1, x2, y2, radius) {\n    throw new Error(\"arcTo not implemented.\");\n  };\n\n  /**\n   * Creates a rectangle\n   *\n   * @name rect\n   * @function\n   * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\n   * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\n   * @param w {Number} The width of the rectangle, in pixels\n   * @param h {Number} The height of the rectangle, in pixels\n   * @description The rect() method creates a rectangle.\n   */\n  Context2D.prototype.rect = function(x, y, w, h) {\n    if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\n      console.error(\"jsPDF.context2d.rect: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.rect\");\n    }\n    this.moveTo(x, y);\n    this.lineTo(x + w, y);\n    this.lineTo(x + w, y + h);\n    this.lineTo(x, y + h);\n    this.lineTo(x, y);\n    this.lineTo(x + w, y);\n    this.lineTo(x, y);\n  };\n\n  /**\n   * Draws a \"filled\" rectangle\n   *\n   * @name fillRect\n   * @function\n   * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\n   * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\n   * @param w {Number} The width of the rectangle, in pixels\n   * @param h {Number} The height of the rectangle, in pixels\n   * @description The fillRect() method draws a \"filled\" rectangle. The default color of the fill is black.\n   */\n  Context2D.prototype.fillRect = function(x, y, w, h) {\n    if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\n      console.error(\"jsPDF.context2d.fillRect: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillRect\");\n    }\n    if (isFillTransparent.call(this)) {\n      return;\n    }\n    var tmp = {};\n    if (this.lineCap !== \"butt\") {\n      tmp.lineCap = this.lineCap;\n      this.lineCap = \"butt\";\n    }\n    if (this.lineJoin !== \"miter\") {\n      tmp.lineJoin = this.lineJoin;\n      this.lineJoin = \"miter\";\n    }\n\n    this.beginPath();\n    this.rect(x, y, w, h);\n    this.fill();\n\n    if (tmp.hasOwnProperty(\"lineCap\")) {\n      this.lineCap = tmp.lineCap;\n    }\n    if (tmp.hasOwnProperty(\"lineJoin\")) {\n      this.lineJoin = tmp.lineJoin;\n    }\n  };\n\n  /**\n   *     Draws a rectangle (no fill)\n   *\n   * @name strokeRect\n   * @function\n   * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\n   * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\n   * @param w {Number} The width of the rectangle, in pixels\n   * @param h {Number} The height of the rectangle, in pixels\n   * @description The strokeRect() method draws a rectangle (no fill). The default color of the stroke is black.\n   */\n  Context2D.prototype.strokeRect = function strokeRect(x, y, w, h) {\n    if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\n      console.error(\"jsPDF.context2d.strokeRect: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeRect\");\n    }\n    if (isStrokeTransparent.call(this)) {\n      return;\n    }\n    this.beginPath();\n    this.rect(x, y, w, h);\n    this.stroke();\n  };\n\n  /**\n   * Clears the specified pixels within a given rectangle\n   *\n   * @name clearRect\n   * @function\n   * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\n   * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\n   * @param w {Number} The width of the rectangle to clear, in pixels\n   * @param h {Number} The height of the rectangle to clear, in pixels\n   * @description We cannot clear PDF commands that were already written to PDF, so we use white instead. <br />\n   * As a special case, read a special flag (ignoreClearRect) and do nothing if it is set.\n   * This results in all calls to clearRect() to do nothing, and keep the canvas transparent.\n   * This flag is stored in the save/restore context and is managed the same way as other drawing states.\n   *\n   */\n  Context2D.prototype.clearRect = function(x, y, w, h) {\n    if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\n      console.error(\"jsPDF.context2d.clearRect: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.clearRect\");\n    }\n    if (this.ignoreClearRect) {\n      return;\n    }\n\n    this.fillStyle = \"#ffffff\";\n    this.fillRect(x, y, w, h);\n  };\n\n  /**\n   * Saves the state of the current context\n   *\n   * @name save\n   * @function\n   */\n  Context2D.prototype.save = function(doStackPush) {\n    doStackPush = typeof doStackPush === \"boolean\" ? doStackPush : true;\n    var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\n    for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\n      this.pdf.setPage(i + 1);\n      this.pdf.internal.out(\"q\");\n    }\n    this.pdf.setPage(tmpPageNumber);\n\n    if (doStackPush) {\n      this.ctx.fontSize = this.pdf.internal.getFontSize();\n      var ctx = new ContextLayer(this.ctx);\n      this.ctxStack.push(this.ctx);\n      this.ctx = ctx;\n    }\n  };\n\n  /**\n   * Returns previously saved path state and attributes\n   *\n   * @name restore\n   * @function\n   */\n  Context2D.prototype.restore = function(doStackPop) {\n    doStackPop = typeof doStackPop === \"boolean\" ? doStackPop : true;\n    var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\n    for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\n      this.pdf.setPage(i + 1);\n      this.pdf.internal.out(\"Q\");\n    }\n    this.pdf.setPage(tmpPageNumber);\n\n    if (doStackPop && this.ctxStack.length !== 0) {\n      this.ctx = this.ctxStack.pop();\n      this.fillStyle = this.ctx.fillStyle;\n      this.strokeStyle = this.ctx.strokeStyle;\n      this.font = this.ctx.font;\n      this.lineCap = this.ctx.lineCap;\n      this.lineWidth = this.ctx.lineWidth;\n      this.lineJoin = this.ctx.lineJoin;\n      this.lineDash = this.ctx.lineDash;\n      this.lineDashOffset = this.ctx.lineDashOffset;\n    }\n  };\n\n  /**\n   * @name toDataURL\n   * @function\n   */\n  Context2D.prototype.toDataURL = function() {\n    throw new Error(\"toDataUrl not implemented.\");\n  };\n\n  //helper functions\n\n  /**\n   * Get the decimal values of r, g, b and a\n   *\n   * @name getRGBA\n   * @function\n   * @private\n   * @ignore\n   */\n  var getRGBA = function(style) {\n    var rxRgb = /rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/;\n    var rxRgba = /rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/;\n    var rxTransparent = /transparent|rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*0+\\s*\\)/;\n\n    var r, g, b, a;\n\n    if (style.isCanvasGradient === true) {\n      style = style.getColor();\n    }\n\n    if (!style) {\n      return { r: 0, g: 0, b: 0, a: 0, style: style };\n    }\n\n    if (rxTransparent.test(style)) {\n      r = 0;\n      g = 0;\n      b = 0;\n      a = 0;\n    } else {\n      var matches = rxRgb.exec(style);\n      if (matches !== null) {\n        r = parseInt(matches[1]);\n        g = parseInt(matches[2]);\n        b = parseInt(matches[3]);\n        a = 1;\n      } else {\n        matches = rxRgba.exec(style);\n        if (matches !== null) {\n          r = parseInt(matches[1]);\n          g = parseInt(matches[2]);\n          b = parseInt(matches[3]);\n          a = parseFloat(matches[4]);\n        } else {\n          a = 1;\n\n          if (typeof style === \"string\" && style.charAt(0) !== \"#\") {\n            var rgbColor = new RGBColor(style);\n            if (rgbColor.ok) {\n              style = rgbColor.toHex();\n            } else {\n              style = \"#000000\";\n            }\n          }\n\n          if (style.length === 4) {\n            r = style.substring(1, 2);\n            r += r;\n            g = style.substring(2, 3);\n            g += g;\n            b = style.substring(3, 4);\n            b += b;\n          } else {\n            r = style.substring(1, 3);\n            g = style.substring(3, 5);\n            b = style.substring(5, 7);\n          }\n          r = parseInt(r, 16);\n          g = parseInt(g, 16);\n          b = parseInt(b, 16);\n        }\n      }\n    }\n    return { r: r, g: g, b: b, a: a, style: style };\n  };\n\n  /**\n   * @name isFillTransparent\n   * @function\n   * @private\n   * @ignore\n   * @returns {Boolean}\n   */\n  var isFillTransparent = function() {\n    return this.ctx.isFillTransparent || this.globalAlpha == 0;\n  };\n\n  /**\n   * @name isStrokeTransparent\n   * @function\n   * @private\n   * @ignore\n   * @returns {Boolean}\n   */\n  var isStrokeTransparent = function() {\n    return Boolean(this.ctx.isStrokeTransparent || this.globalAlpha == 0);\n  };\n\n  /**\n   * Draws \"filled\" text on the canvas\n   *\n   * @name fillText\n   * @function\n   * @param text {String} Specifies the text that will be written on the canvas\n   * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\n   * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\n   * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\n   * @description The fillText() method draws filled text on the canvas. The default color of the text is black.\n   */\n  Context2D.prototype.fillText = function(text, x, y, maxWidth) {\n    if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\n      console.error(\"jsPDF.context2d.fillText: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillText\");\n    }\n    maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\n    if (isFillTransparent.call(this)) {\n      return;\n    }\n\n    var degs = rad2deg(this.ctx.transform.rotation);\n\n    // We only use X axis as scale hint\n    var scale = this.ctx.transform.scaleX;\n\n    putText.call(this, {\n      text: text,\n      x: x,\n      y: y,\n      scale: scale,\n      angle: degs,\n      align: this.textAlign,\n      maxWidth: maxWidth\n    });\n  };\n\n  /**\n   * Draws text on the canvas (no fill)\n   *\n   * @name strokeText\n   * @function\n   * @param text {String} Specifies the text that will be written on the canvas\n   * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\n   * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\n   * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\n   * @description The strokeText() method draws text (with no fill) on the canvas. The default color of the text is black.\n   */\n  Context2D.prototype.strokeText = function(text, x, y, maxWidth) {\n    if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\n      console.error(\"jsPDF.context2d.strokeText: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeText\");\n    }\n    if (isStrokeTransparent.call(this)) {\n      return;\n    }\n\n    maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\n\n    var degs = rad2deg(this.ctx.transform.rotation);\n    var scale = this.ctx.transform.scaleX;\n\n    putText.call(this, {\n      text: text,\n      x: x,\n      y: y,\n      scale: scale,\n      renderingMode: \"stroke\",\n      angle: degs,\n      align: this.textAlign,\n      maxWidth: maxWidth\n    });\n  };\n\n  /**\n   * Returns an object that contains the width of the specified text\n   *\n   * @name measureText\n   * @function\n   * @param text {String} The text to be measured\n   * @description The measureText() method returns an object that contains the width of the specified text, in pixels.\n   * @returns {Number}\n   */\n  Context2D.prototype.measureText = function(text) {\n    if (typeof text !== \"string\") {\n      console.error(\n        \"jsPDF.context2d.measureText: Invalid arguments\",\n        arguments\n      );\n      throw new Error(\n        \"Invalid arguments passed to jsPDF.context2d.measureText\"\n      );\n    }\n    var pdf = this.pdf;\n    var k = this.pdf.internal.scaleFactor;\n\n    var fontSize = pdf.internal.getFontSize();\n    var txtWidth =\n      (pdf.getStringUnitWidth(text) * fontSize) / pdf.internal.scaleFactor;\n    txtWidth *= Math.round(((k * 96) / 72) * 10000) / 10000;\n\n    var TextMetrics = function(options) {\n      options = options || {};\n      var _width = options.width || 0;\n      Object.defineProperty(this, \"width\", {\n        get: function() {\n          return _width;\n        }\n      });\n      return this;\n    };\n    return new TextMetrics({ width: txtWidth });\n  };\n\n  //Transformations\n\n  /**\n   * Scales the current drawing bigger or smaller\n   *\n   * @name scale\n   * @function\n   * @param scalewidth {Number} Scales the width of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\n   * @param scaleheight {Number} Scales the height of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\n   * @description The scale() method scales the current drawing, bigger or smaller.\n   */\n  Context2D.prototype.scale = function(scalewidth, scaleheight) {\n    if (isNaN(scalewidth) || isNaN(scaleheight)) {\n      console.error(\"jsPDF.context2d.scale: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.scale\");\n    }\n    var matrix = new Matrix(scalewidth, 0.0, 0.0, scaleheight, 0.0, 0.0);\n    this.ctx.transform = this.ctx.transform.multiply(matrix);\n  };\n\n  /**\n   * Rotates the current drawing\n   *\n   * @name rotate\n   * @function\n   * @param angle {Number} The rotation angle, in radians.\n   * @description To calculate from degrees to radians: degrees*Math.PI/180. <br />\n   * Example: to rotate 5 degrees, specify the following: 5*Math.PI/180\n   */\n  Context2D.prototype.rotate = function(angle) {\n    if (isNaN(angle)) {\n      console.error(\"jsPDF.context2d.rotate: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.rotate\");\n    }\n    var matrix = new Matrix(\n      Math.cos(angle),\n      Math.sin(angle),\n      -Math.sin(angle),\n      Math.cos(angle),\n      0.0,\n      0.0\n    );\n    this.ctx.transform = this.ctx.transform.multiply(matrix);\n  };\n\n  /**\n   * Remaps the (0,0) position on the canvas\n   *\n   * @name translate\n   * @function\n   * @param x {Number} The value to add to horizontal (x) coordinates\n   * @param y {Number} The value to add to vertical (y) coordinates\n   * @description The translate() method remaps the (0,0) position on the canvas.\n   */\n  Context2D.prototype.translate = function(x, y) {\n    if (isNaN(x) || isNaN(y)) {\n      console.error(\"jsPDF.context2d.translate: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.translate\");\n    }\n    var matrix = new Matrix(1.0, 0.0, 0.0, 1.0, x, y);\n    this.ctx.transform = this.ctx.transform.multiply(matrix);\n  };\n\n  /**\n   * Replaces the current transformation matrix for the drawing\n   *\n   * @name transform\n   * @function\n   * @param a {Number} Horizontal scaling\n   * @param b {Number} Horizontal skewing\n   * @param c {Number} Vertical skewing\n   * @param d {Number} Vertical scaling\n   * @param e {Number} Horizontal moving\n   * @param f {Number} Vertical moving\n   * @description Each object on the canvas has a current transformation matrix.<br /><br />The transform() method replaces the current transformation matrix. It multiplies the current transformation matrix with the matrix described by:<br /><br /><br /><br />a    c    e<br /><br />b    d    f<br /><br />0    0    1<br /><br />In other words, the transform() method lets you scale, rotate, move, and skew the current context.\n   */\n  Context2D.prototype.transform = function(a, b, c, d, e, f) {\n    if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d) || isNaN(e) || isNaN(f)) {\n      console.error(\"jsPDF.context2d.transform: Invalid arguments\", arguments);\n      throw new Error(\"Invalid arguments passed to jsPDF.context2d.transform\");\n    }\n    var matrix = new Matrix(a, b, c, d, e, f);\n    this.ctx.transform = this.ctx.transform.multiply(matrix);\n  };\n\n  /**\n   * Resets the current transform to the identity matrix. Then runs transform()\n   *\n   * @name setTransform\n   * @function\n   * @param a {Number} Horizontal scaling\n   * @param b {Number} Horizontal skewing\n   * @param c {Number} Vertical skewing\n   * @param d {Number} Vertical scaling\n   * @param e {Number} Horizontal moving\n   * @param f {Number} Vertical moving\n   * @description Each object on the canvas has a current transformation matrix. <br /><br />The setTransform() method resets the current transform to the identity matrix, and then runs transform() with the same arguments.<br /><br />In other words, the setTransform() method lets you scale, rotate, move, and skew the current context.\n   */\n  Context2D.prototype.setTransform = function(a, b, c, d, e, f) {\n    a = isNaN(a) ? 1 : a;\n    b = isNaN(b) ? 0 : b;\n    c = isNaN(c) ? 0 : c;\n    d = isNaN(d) ? 1 : d;\n    e = isNaN(e) ? 0 : e;\n    f = isNaN(f) ? 0 : f;\n    this.ctx.transform = new Matrix(a, b, c, d, e, f);\n  };\n\n  /**\n   * Should only be used if pageWrapYEnabled is true\n   *\n   * @name setPageByYPosition\n   * @function\n   * @private\n   * @ignore\n   * @returns One-based Page Number\n   */\n  var setPageByYPosition = function(y) {\n    if (this.pageWrapYEnabled) {\n      this.lastBreak = 0;\n      var manualBreaks = 0;\n      var autoBreaks = 0;\n      for (var i = 0; i < this.pageBreaks.length; i++) {\n        if (y >= this.pageBreaks[i]) {\n          manualBreaks++;\n          if (this.lastBreak === 0) {\n            autoBreaks++;\n          }\n          var spaceBetweenLastBreak = this.pageBreaks[i] - this.lastBreak;\n          this.lastBreak = this.pageBreaks[i];\n          var pagesSinceLastBreak = Math.floor(\n            spaceBetweenLastBreak / this.pageWrapY\n          );\n          autoBreaks += pagesSinceLastBreak;\n        }\n      }\n      if (this.lastBreak === 0) {\n        var pagesSinceLastBreak = Math.floor(y / this.pageWrapY) + 1;\n        autoBreaks += pagesSinceLastBreak;\n      }\n      return autoBreaks + manualBreaks;\n    } else {\n      return this.pdf.internal.getCurrentPageInfo().pageNumber;\n    }\n  };\n\n  var hasMargins = function() {\n    return (\n      this.margin[0] > 0 ||\n      this.margin[1] > 0 ||\n      this.margin[2] > 0 ||\n      this.margin[3] > 0\n    );\n  };\n\n  /**\n   * Draws an image, canvas, or video onto the canvas\n   *\n   * @function\n   * @param img {} Specifies the image, canvas, or video element to use\n   * @param sx {Number} Optional. The x coordinate where to start clipping\n   * @param sy {Number} Optional. The y coordinate where to start clipping\n   * @param swidth {Number} Optional. The width of the clipped image\n   * @param sheight {Number} Optional. The height of the clipped image\n   * @param x {Number} The x coordinate where to place the image on the canvas\n   * @param y {Number} The y coordinate where to place the image on the canvas\n   * @param width {Number} Optional. The width of the image to use (stretch or reduce the image)\n   * @param height {Number} Optional. The height of the image to use (stretch or reduce the image)\n   */\n  Context2D.prototype.drawImage = function(\n    img,\n    sx,\n    sy,\n    swidth,\n    sheight,\n    x,\n    y,\n    width,\n    height\n  ) {\n    var imageProperties = this.pdf.getImageProperties(img);\n    var factorX = 1;\n    var factorY = 1;\n    var isClip;\n\n    var clipFactorX = 1;\n    var clipFactorY = 1;\n\n    if (typeof swidth !== \"undefined\" && typeof width !== \"undefined\") {\n      isClip = true;\n      clipFactorX = width / swidth;\n      clipFactorY = height / sheight;\n      factorX = ((imageProperties.width / swidth) * width) / swidth;\n      factorY = ((imageProperties.height / sheight) * height) / sheight;\n    }\n\n    //is sx and sy are set and x and y not, set x and y with values of sx and sy\n    if (typeof x === \"undefined\") {\n      x = sx;\n      y = sy;\n      sx = 0;\n      sy = 0;\n    }\n\n    if (typeof swidth !== \"undefined\" && typeof width === \"undefined\") {\n      width = swidth;\n      height = sheight;\n    }\n    if (typeof swidth === \"undefined\" && typeof width === \"undefined\") {\n      width = imageProperties.width;\n      height = imageProperties.height;\n    }\n\n    var decomposedTransformationMatrix = this.ctx.transform.decompose();\n    var angle = rad2deg(decomposedTransformationMatrix.rotate.shx);\n    var matrix = new Matrix();\n    matrix = matrix.multiply(decomposedTransformationMatrix.translate);\n    matrix = matrix.multiply(decomposedTransformationMatrix.skew);\n    matrix = matrix.multiply(decomposedTransformationMatrix.scale);\n    var xRect = matrix.applyToRectangle(\n      new Rectangle(\n        x - sx * clipFactorX,\n        y - sy * clipFactorY,\n        swidth * factorX,\n        sheight * factorY\n      )\n    );\n\n    if (this.autoPaging) {\n      var pageArray = getPagesByPath.call(this, xRect);\n      var pages = [];\n      for (var ii = 0; ii < pageArray.length; ii += 1) {\n        if (pages.indexOf(pageArray[ii]) === -1) {\n          pages.push(pageArray[ii]);\n        }\n      }\n\n      sortPages(pages);\n\n      var clipPath;\n      var min = pages[0];\n      var max = pages[pages.length - 1];\n      for (var i = min; i < max + 1; i++) {\n        this.pdf.setPage(i);\n\n        var pageWidthMinusMargins =\n          this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\n        var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\n        var firstPageHeight =\n          this.pdf.internal.pageSize.height -\n          this.posY -\n          this.margin[0] -\n          this.margin[2];\n        var pageHeightMinusMargins =\n          this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\n        var previousPageHeightSum =\n          i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\n\n        if (this.ctx.clip_path.length !== 0) {\n          var tmpPaths = this.path;\n          clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\n          this.path = pathPositionRedo(\n            clipPath,\n            this.posX + this.margin[3],\n            -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\n          );\n          drawPaths.call(this, \"fill\", true);\n          this.path = tmpPaths;\n        }\n        var tmpRect = JSON.parse(JSON.stringify(xRect));\n        tmpRect = pathPositionRedo(\n          [tmpRect],\n          this.posX + this.margin[3],\n          -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\n        )[0];\n\n        const needsClipping = (i > min || i < max) && hasMargins.call(this);\n\n        if (needsClipping) {\n          this.pdf.saveGraphicsState();\n          this.pdf\n            .rect(\n              this.margin[3],\n              this.margin[0],\n              pageWidthMinusMargins,\n              pageHeightMinusMargins,\n              null\n            )\n            .clip()\n            .discardPath();\n        }\n        this.pdf.addImage(\n          img,\n          \"JPEG\",\n          tmpRect.x,\n          tmpRect.y,\n          tmpRect.w,\n          tmpRect.h,\n          null,\n          null,\n          angle\n        );\n        if (needsClipping) {\n          this.pdf.restoreGraphicsState();\n        }\n      }\n    } else {\n      this.pdf.addImage(\n        img,\n        \"JPEG\",\n        xRect.x,\n        xRect.y,\n        xRect.w,\n        xRect.h,\n        null,\n        null,\n        angle\n      );\n    }\n  };\n\n  var getPagesByPath = function(path, pageWrapX, pageWrapY) {\n    var result = [];\n    pageWrapX = pageWrapX || this.pdf.internal.pageSize.width;\n    pageWrapY =\n      pageWrapY ||\n      this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\n    var yOffset = this.posY + this.ctx.prevPageLastElemOffset;\n\n    switch (path.type) {\n      default:\n      case \"mt\":\n      case \"lt\":\n        result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\n        break;\n      case \"arc\":\n        result.push(\n          Math.floor((path.y + yOffset - path.radius) / pageWrapY) + 1\n        );\n        result.push(\n          Math.floor((path.y + yOffset + path.radius) / pageWrapY) + 1\n        );\n        break;\n      case \"qct\":\n        var rectOfQuadraticCurve = getQuadraticCurveBoundary(\n          this.ctx.lastPoint.x,\n          this.ctx.lastPoint.y,\n          path.x1,\n          path.y1,\n          path.x,\n          path.y\n        );\n        result.push(\n          Math.floor((rectOfQuadraticCurve.y + yOffset) / pageWrapY) + 1\n        );\n        result.push(\n          Math.floor(\n            (rectOfQuadraticCurve.y + rectOfQuadraticCurve.h + yOffset) /\n              pageWrapY\n          ) + 1\n        );\n        break;\n      case \"bct\":\n        var rectOfBezierCurve = getBezierCurveBoundary(\n          this.ctx.lastPoint.x,\n          this.ctx.lastPoint.y,\n          path.x1,\n          path.y1,\n          path.x2,\n          path.y2,\n          path.x,\n          path.y\n        );\n        result.push(\n          Math.floor((rectOfBezierCurve.y + yOffset) / pageWrapY) + 1\n        );\n        result.push(\n          Math.floor(\n            (rectOfBezierCurve.y + rectOfBezierCurve.h + yOffset) / pageWrapY\n          ) + 1\n        );\n        break;\n      case \"rect\":\n        result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\n        result.push(Math.floor((path.y + path.h + yOffset) / pageWrapY) + 1);\n    }\n\n    for (var i = 0; i < result.length; i += 1) {\n      while (this.pdf.internal.getNumberOfPages() < result[i]) {\n        addPage.call(this);\n      }\n    }\n    return result;\n  };\n\n  var addPage = function() {\n    var fillStyle = this.fillStyle;\n    var strokeStyle = this.strokeStyle;\n    var font = this.font;\n    var lineCap = this.lineCap;\n    var lineWidth = this.lineWidth;\n    var lineJoin = this.lineJoin;\n    this.pdf.addPage();\n    this.fillStyle = fillStyle;\n    this.strokeStyle = strokeStyle;\n    this.font = font;\n    this.lineCap = lineCap;\n    this.lineWidth = lineWidth;\n    this.lineJoin = lineJoin;\n  };\n\n  var pathPositionRedo = function(paths, x, y) {\n    for (var i = 0; i < paths.length; i++) {\n      switch (paths[i].type) {\n        case \"bct\":\n          paths[i].x2 += x;\n          paths[i].y2 += y;\n        case \"qct\":\n          paths[i].x1 += x;\n          paths[i].y1 += y;\n        case \"mt\":\n        case \"lt\":\n        case \"arc\":\n        default:\n          paths[i].x += x;\n          paths[i].y += y;\n      }\n    }\n    return paths;\n  };\n\n  var sortPages = function(pages) {\n    return pages.sort(function(a, b) {\n      return a - b;\n    });\n  };\n\n  var pathPreProcess = function(rule, isClip) {\n    var fillStyle = this.fillStyle;\n    var strokeStyle = this.strokeStyle;\n    var lineCap = this.lineCap;\n    var oldLineWidth = this.lineWidth;\n    var lineWidth = Math.abs(oldLineWidth * this.ctx.transform.scaleX);\n    var lineJoin = this.lineJoin;\n\n    if (this.autoPaging) {\n      var origPath = JSON.parse(JSON.stringify(this.path));\n      var xPath = JSON.parse(JSON.stringify(this.path));\n      var clipPath;\n      var tmpPath;\n      var pages = [];\n\n      for (var i = 0; i < xPath.length; i++) {\n        if (typeof xPath[i].x !== \"undefined\") {\n          var page = getPagesByPath.call(this, xPath[i]);\n\n          for (var ii = 0; ii < page.length; ii += 1) {\n            if (pages.indexOf(page[ii]) === -1) {\n              pages.push(page[ii]);\n            }\n          }\n        }\n      }\n\n      for (var j = 0; j < pages.length; j++) {\n        while (this.pdf.internal.getNumberOfPages() < pages[j]) {\n          addPage.call(this);\n        }\n      }\n      sortPages(pages);\n\n      var min = pages[0];\n      var max = pages[pages.length - 1];\n      for (var k = min; k < max + 1; k++) {\n        this.pdf.setPage(k);\n\n        this.fillStyle = fillStyle;\n        this.strokeStyle = strokeStyle;\n        this.lineCap = lineCap;\n        this.lineWidth = lineWidth;\n        this.lineJoin = lineJoin;\n\n        var pageWidthMinusMargins =\n          this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\n        var topMargin = k === 1 ? this.posY + this.margin[0] : this.margin[0];\n        var firstPageHeight =\n          this.pdf.internal.pageSize.height -\n          this.posY -\n          this.margin[0] -\n          this.margin[2];\n        var pageHeightMinusMargins =\n          this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\n        var previousPageHeightSum =\n          k === 1 ? 0 : firstPageHeight + (k - 2) * pageHeightMinusMargins;\n\n        if (this.ctx.clip_path.length !== 0) {\n          var tmpPaths = this.path;\n          clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\n          this.path = pathPositionRedo(\n            clipPath,\n            this.posX + this.margin[3],\n            -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\n          );\n          drawPaths.call(this, rule, true);\n          this.path = tmpPaths;\n        }\n        tmpPath = JSON.parse(JSON.stringify(origPath));\n        this.path = pathPositionRedo(\n          tmpPath,\n          this.posX + this.margin[3],\n          -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\n        );\n        if (isClip === false || k === 0) {\n          const needsClipping = (k > min || k < max) && hasMargins.call(this);\n          if (needsClipping) {\n            this.pdf.saveGraphicsState();\n            this.pdf\n              .rect(\n                this.margin[3],\n                this.margin[0],\n                pageWidthMinusMargins,\n                pageHeightMinusMargins,\n                null\n              )\n              .clip()\n              .discardPath();\n          }\n          drawPaths.call(this, rule, isClip);\n          if (needsClipping) {\n            this.pdf.restoreGraphicsState();\n          }\n        }\n        this.lineWidth = oldLineWidth;\n      }\n      this.path = origPath;\n    } else {\n      this.lineWidth = lineWidth;\n      drawPaths.call(this, rule, isClip);\n      this.lineWidth = oldLineWidth;\n    }\n  };\n\n  /**\n   * Processes the paths\n   *\n   * @function\n   * @param rule {String}\n   * @param isClip {Boolean}\n   * @private\n   * @ignore\n   */\n  var drawPaths = function(rule, isClip) {\n    if (rule === \"stroke\" && !isClip && isStrokeTransparent.call(this)) {\n      return;\n    }\n\n    if (rule !== \"stroke\" && !isClip && isFillTransparent.call(this)) {\n      return;\n    }\n\n    var moves = [];\n\n    //var alpha = (this.ctx.fillOpacity < 1) ? this.ctx.fillOpacity : this.ctx.globalAlpha;\n    var delta;\n    var xPath = this.path;\n    for (var i = 0; i < xPath.length; i++) {\n      var pt = xPath[i];\n\n      switch (pt.type) {\n        case \"begin\":\n          moves.push({\n            begin: true\n          });\n          break;\n\n        case \"close\":\n          moves.push({\n            close: true\n          });\n          break;\n\n        case \"mt\":\n          moves.push({\n            start: pt,\n            deltas: [],\n            abs: []\n          });\n          break;\n\n        case \"lt\":\n          var iii = moves.length;\n          if (xPath[i - 1] && !isNaN(xPath[i - 1].x)) {\n            delta = [pt.x - xPath[i - 1].x, pt.y - xPath[i - 1].y];\n            if (iii > 0) {\n              for (iii; iii >= 0; iii--) {\n                if (\n                  moves[iii - 1].close !== true &&\n                  moves[iii - 1].begin !== true\n                ) {\n                  moves[iii - 1].deltas.push(delta);\n                  moves[iii - 1].abs.push(pt);\n                  break;\n                }\n              }\n            }\n          }\n          break;\n\n        case \"bct\":\n          delta = [\n            pt.x1 - xPath[i - 1].x,\n            pt.y1 - xPath[i - 1].y,\n            pt.x2 - xPath[i - 1].x,\n            pt.y2 - xPath[i - 1].y,\n            pt.x - xPath[i - 1].x,\n            pt.y - xPath[i - 1].y\n          ];\n          moves[moves.length - 1].deltas.push(delta);\n          break;\n\n        case \"qct\":\n          var x1 = xPath[i - 1].x + (2.0 / 3.0) * (pt.x1 - xPath[i - 1].x);\n          var y1 = xPath[i - 1].y + (2.0 / 3.0) * (pt.y1 - xPath[i - 1].y);\n          var x2 = pt.x + (2.0 / 3.0) * (pt.x1 - pt.x);\n          var y2 = pt.y + (2.0 / 3.0) * (pt.y1 - pt.y);\n          var x3 = pt.x;\n          var y3 = pt.y;\n          delta = [\n            x1 - xPath[i - 1].x,\n            y1 - xPath[i - 1].y,\n            x2 - xPath[i - 1].x,\n            y2 - xPath[i - 1].y,\n            x3 - xPath[i - 1].x,\n            y3 - xPath[i - 1].y\n          ];\n          moves[moves.length - 1].deltas.push(delta);\n          break;\n\n        case \"arc\":\n          moves.push({\n            deltas: [],\n            abs: [],\n            arc: true\n          });\n\n          if (Array.isArray(moves[moves.length - 1].abs)) {\n            moves[moves.length - 1].abs.push(pt);\n          }\n          break;\n      }\n    }\n    var style;\n    if (!isClip) {\n      if (rule === \"stroke\") {\n        style = \"stroke\";\n      } else {\n        style = \"fill\";\n      }\n    } else {\n      style = null;\n    }\n\n    var began = false;\n    for (var k = 0; k < moves.length; k++) {\n      if (moves[k].arc) {\n        var arcs = moves[k].abs;\n\n        for (var ii = 0; ii < arcs.length; ii++) {\n          var arc = arcs[ii];\n\n          if (arc.type === \"arc\") {\n            drawArc.call(\n              this,\n              arc.x,\n              arc.y,\n              arc.radius,\n              arc.startAngle,\n              arc.endAngle,\n              arc.counterclockwise,\n              undefined,\n              isClip,\n              !began\n            );\n          } else {\n            drawLine.call(this, arc.x, arc.y);\n          }\n          began = true;\n        }\n      } else if (moves[k].close === true) {\n        this.pdf.internal.out(\"h\");\n        began = false;\n      } else if (moves[k].begin !== true) {\n        var x = moves[k].start.x;\n        var y = moves[k].start.y;\n        drawLines.call(this, moves[k].deltas, x, y);\n        began = true;\n      }\n    }\n\n    if (style) {\n      putStyle.call(this, style);\n    }\n    if (isClip) {\n      doClip.call(this);\n    }\n  };\n\n  var getBaseline = function(y) {\n    var height =\n      this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\n    var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\n    switch (this.ctx.textBaseline) {\n      case \"bottom\":\n        return y - descent;\n      case \"top\":\n        return y + height - descent;\n      case \"hanging\":\n        return y + height - 2 * descent;\n      case \"middle\":\n        return y + height / 2 - descent;\n      case \"ideographic\":\n        // TODO not implemented\n        return y;\n      case \"alphabetic\":\n      default:\n        return y;\n    }\n  };\n\n  var getTextBottom = function(yBaseLine) {\n    var height =\n      this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\n    var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\n    return yBaseLine + descent;\n  };\n\n  Context2D.prototype.createLinearGradient = function createLinearGradient() {\n    var canvasGradient = function canvasGradient() {};\n\n    canvasGradient.colorStops = [];\n    canvasGradient.addColorStop = function(offset, color) {\n      this.colorStops.push([offset, color]);\n    };\n\n    canvasGradient.getColor = function() {\n      if (this.colorStops.length === 0) {\n        return \"#000000\";\n      }\n\n      return this.colorStops[0][1];\n    };\n\n    canvasGradient.isCanvasGradient = true;\n    return canvasGradient;\n  };\n  Context2D.prototype.createPattern = function createPattern() {\n    return this.createLinearGradient();\n  };\n  Context2D.prototype.createRadialGradient = function createRadialGradient() {\n    return this.createLinearGradient();\n  };\n\n  /**\n   *\n   * @param x Edge point X\n   * @param y Edge point Y\n   * @param r Radius\n   * @param a1 start angle\n   * @param a2 end angle\n   * @param counterclockwise\n   * @param style\n   * @param isClip\n   */\n  var drawArc = function(\n    x,\n    y,\n    r,\n    a1,\n    a2,\n    counterclockwise,\n    style,\n    isClip,\n    includeMove\n  ) {\n    // http://hansmuller-flex.blogspot.com/2011/10/more-about-approximating-circular-arcs.html\n    var curves = createArc.call(this, r, a1, a2, counterclockwise);\n\n    for (var i = 0; i < curves.length; i++) {\n      var curve = curves[i];\n      if (i === 0) {\n        if (includeMove) {\n          doMove.call(this, curve.x1 + x, curve.y1 + y);\n        } else {\n          drawLine.call(this, curve.x1 + x, curve.y1 + y);\n        }\n      }\n      drawCurve.call(\n        this,\n        x,\n        y,\n        curve.x2,\n        curve.y2,\n        curve.x3,\n        curve.y3,\n        curve.x4,\n        curve.y4\n      );\n    }\n\n    if (!isClip) {\n      putStyle.call(this, style);\n    } else {\n      doClip.call(this);\n    }\n  };\n\n  var putStyle = function(style) {\n    switch (style) {\n      case \"stroke\":\n        this.pdf.internal.out(\"S\");\n        break;\n      case \"fill\":\n        this.pdf.internal.out(\"f\");\n        break;\n    }\n  };\n\n  var doClip = function() {\n    this.pdf.clip();\n    this.pdf.discardPath();\n  };\n\n  var doMove = function(x, y) {\n    this.pdf.internal.out(\n      getHorizontalCoordinateString(x) +\n        \" \" +\n        getVerticalCoordinateString(y) +\n        \" m\"\n    );\n  };\n\n  var putText = function(options) {\n    var textAlign;\n    switch (options.align) {\n      case \"right\":\n      case \"end\":\n        textAlign = \"right\";\n        break;\n      case \"center\":\n        textAlign = \"center\";\n        break;\n      case \"left\":\n      case \"start\":\n      default:\n        textAlign = \"left\";\n        break;\n    }\n\n    var textDimensions = this.pdf.getTextDimensions(options.text);\n    var yBaseLine = getBaseline.call(this, options.y);\n    var yBottom = getTextBottom.call(this, yBaseLine);\n    var yTop = yBottom - textDimensions.h;\n\n    var pt = this.ctx.transform.applyToPoint(new Point(options.x, yBaseLine));\n\n    var clipPath, oldSize, oldLineWidth;\n\n    if (this.autoPaging) {\n      var decomposedTransformationMatrix = this.ctx.transform.decompose();\n      var matrix = new Matrix();\n      matrix = matrix.multiply(decomposedTransformationMatrix.translate);\n      matrix = matrix.multiply(decomposedTransformationMatrix.skew);\n      matrix = matrix.multiply(decomposedTransformationMatrix.scale);\n\n      var baselineRect = this.ctx.transform.applyToRectangle(\n        new Rectangle(options.x, yBaseLine, textDimensions.w, textDimensions.h)\n      );\n      var textBounds = matrix.applyToRectangle(\n        new Rectangle(options.x, yTop, textDimensions.w, textDimensions.h)\n      );\n      var pageArray = getPagesByPath.call(this, textBounds);\n      var pages = [];\n      for (var ii = 0; ii < pageArray.length; ii += 1) {\n        if (pages.indexOf(pageArray[ii]) === -1) {\n          pages.push(pageArray[ii]);\n        }\n      }\n\n      sortPages(pages);\n\n      var min = pages[0];\n      var max = pages[pages.length - 1];\n      for (var i = min; i < max + 1; i++) {\n        this.pdf.setPage(i);\n\n        var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\n        var firstPageHeight =\n          this.pdf.internal.pageSize.height -\n          this.posY -\n          this.margin[0] -\n          this.margin[2];\n        var pageHeightMinusBottomMargin =\n          this.pdf.internal.pageSize.height - this.margin[2];\n        var pageHeightMinusMargins =\n          pageHeightMinusBottomMargin - this.margin[0];\n        var pageWidthMinusRightMargin =\n          this.pdf.internal.pageSize.width - this.margin[1];\n        var pageWidthMinusMargins = pageWidthMinusRightMargin - this.margin[3];\n        var previousPageHeightSum =\n          i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\n\n        if (this.ctx.clip_path.length !== 0) {\n          var tmpPaths = this.path;\n          clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\n          this.path = pathPositionRedo(\n            clipPath,\n            this.posX + this.margin[3],\n            -1 * previousPageHeightSum + topMargin\n          );\n          drawPaths.call(this, \"fill\", true);\n          this.path = tmpPaths;\n        }\n        var textBoundsOnPage = pathPositionRedo(\n          [JSON.parse(JSON.stringify(textBounds))],\n          this.posX + this.margin[3],\n          -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\n        )[0];\n\n        if (options.scale >= 0.01) {\n          oldSize = this.pdf.internal.getFontSize();\n          this.pdf.setFontSize(oldSize * options.scale);\n          oldLineWidth = this.lineWidth;\n          this.lineWidth = oldLineWidth * options.scale;\n        }\n\n        var doSlice = this.autoPaging !== \"text\";\n\n        if (\n          doSlice ||\n          textBoundsOnPage.y + textBoundsOnPage.h <= pageHeightMinusBottomMargin\n        ) {\n          if (\n            doSlice ||\n            (textBoundsOnPage.y >= topMargin &&\n              textBoundsOnPage.x <= pageWidthMinusRightMargin)\n          ) {\n            var croppedText = doSlice\n              ? options.text\n              : this.pdf.splitTextToSize(\n                  options.text,\n                  options.maxWidth ||\n                    pageWidthMinusRightMargin - textBoundsOnPage.x\n                )[0];\n            var baseLineRectOnPage = pathPositionRedo(\n              [JSON.parse(JSON.stringify(baselineRect))],\n              this.posX + this.margin[3],\n              -previousPageHeightSum +\n                topMargin +\n                this.ctx.prevPageLastElemOffset\n            )[0];\n\n            const needsClipping =\n              doSlice && (i > min || i < max) && hasMargins.call(this);\n\n            if (needsClipping) {\n              this.pdf.saveGraphicsState();\n              this.pdf\n                .rect(\n                  this.margin[3],\n                  this.margin[0],\n                  pageWidthMinusMargins,\n                  pageHeightMinusMargins,\n                  null\n                )\n                .clip()\n                .discardPath();\n            }\n\n            this.pdf.text(\n              croppedText,\n              baseLineRectOnPage.x,\n              baseLineRectOnPage.y,\n              {\n                angle: options.angle,\n                align: textAlign,\n                renderingMode: options.renderingMode\n              }\n            );\n\n            if (needsClipping) {\n              this.pdf.restoreGraphicsState();\n            }\n          }\n        } else {\n          // This text is the last element of the page, but it got cut off due to the margin\n          // so we render it in the next page\n\n          if (textBoundsOnPage.y < pageHeightMinusBottomMargin) {\n            // As a result, all other elements have their y offset increased\n            this.ctx.prevPageLastElemOffset +=\n              pageHeightMinusBottomMargin - textBoundsOnPage.y;\n          }\n        }\n\n        if (options.scale >= 0.01) {\n          this.pdf.setFontSize(oldSize);\n          this.lineWidth = oldLineWidth;\n        }\n      }\n    } else {\n      if (options.scale >= 0.01) {\n        oldSize = this.pdf.internal.getFontSize();\n        this.pdf.setFontSize(oldSize * options.scale);\n        oldLineWidth = this.lineWidth;\n        this.lineWidth = oldLineWidth * options.scale;\n      }\n      this.pdf.text(options.text, pt.x + this.posX, pt.y + this.posY, {\n        angle: options.angle,\n        align: textAlign,\n        renderingMode: options.renderingMode,\n        maxWidth: options.maxWidth\n      });\n\n      if (options.scale >= 0.01) {\n        this.pdf.setFontSize(oldSize);\n        this.lineWidth = oldLineWidth;\n      }\n    }\n  };\n\n  var drawLine = function(x, y, prevX, prevY) {\n    prevX = prevX || 0;\n    prevY = prevY || 0;\n\n    this.pdf.internal.out(\n      getHorizontalCoordinateString(x + prevX) +\n        \" \" +\n        getVerticalCoordinateString(y + prevY) +\n        \" l\"\n    );\n  };\n\n  var drawLines = function(lines, x, y) {\n    return this.pdf.lines(lines, x, y, null, null);\n  };\n\n  var drawCurve = function(x, y, x1, y1, x2, y2, x3, y3) {\n    this.pdf.internal.out(\n      [\n        f2(getHorizontalCoordinate(x1 + x)),\n        f2(getVerticalCoordinate(y1 + y)),\n        f2(getHorizontalCoordinate(x2 + x)),\n        f2(getVerticalCoordinate(y2 + y)),\n        f2(getHorizontalCoordinate(x3 + x)),\n        f2(getVerticalCoordinate(y3 + y)),\n        \"c\"\n      ].join(\" \")\n    );\n  };\n\n  /**\n   * Return a array of objects that represent bezier curves which approximate the circular arc centered at the origin, from startAngle to endAngle (radians) with the specified radius.\n   *\n   * Each bezier curve is an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\n   * @function createArc\n   */\n  var createArc = function(radius, startAngle, endAngle, anticlockwise) {\n    var EPSILON = 0.00001; // Roughly 1/1000th of a degree, see below\n    var twoPi = Math.PI * 2;\n    var halfPi = Math.PI / 2.0;\n\n    while (startAngle > endAngle) {\n      startAngle = startAngle - twoPi;\n    }\n    var totalAngle = Math.abs(endAngle - startAngle);\n    if (totalAngle < twoPi) {\n      if (anticlockwise) {\n        totalAngle = twoPi - totalAngle;\n      }\n    }\n\n    // Compute the sequence of arc curves, up to PI/2 at a time.\n    var curves = [];\n\n    // clockwise or counterclockwise\n    var sgn = anticlockwise ? -1 : +1;\n\n    var a1 = startAngle;\n    for (; totalAngle > EPSILON; ) {\n      var remain = sgn * Math.min(totalAngle, halfPi);\n      var a2 = a1 + remain;\n      curves.push(createSmallArc.call(this, radius, a1, a2));\n      totalAngle -= Math.abs(a2 - a1);\n      a1 = a2;\n    }\n\n    return curves;\n  };\n\n  /**\n   * Cubic bezier approximation of a circular arc centered at the origin, from (radians) a1 to a2, where a2-a1 < pi/2. The arc's radius is r.\n   *\n   * Returns an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\n   *\n   * This algorithm is based on the approach described in: A. Riškus, \"Approximation of a Cubic Bezier Curve by Circular Arcs and Vice Versa,\" Information Technology and Control, 35(4), 2006 pp. 371-378.\n   */\n  var createSmallArc = function(r, a1, a2) {\n    var a = (a2 - a1) / 2.0;\n\n    var x4 = r * Math.cos(a);\n    var y4 = r * Math.sin(a);\n    var x1 = x4;\n    var y1 = -y4;\n\n    var q1 = x1 * x1 + y1 * y1;\n    var q2 = q1 + x1 * x4 + y1 * y4;\n    var k2 = ((4 / 3) * (Math.sqrt(2 * q1 * q2) - q2)) / (x1 * y4 - y1 * x4);\n\n    var x2 = x1 - k2 * y1;\n    var y2 = y1 + k2 * x1;\n    var x3 = x2;\n    var y3 = -y2;\n\n    var ar = a + a1;\n    var cos_ar = Math.cos(ar);\n    var sin_ar = Math.sin(ar);\n\n    return {\n      x1: r * Math.cos(a1),\n      y1: r * Math.sin(a1),\n      x2: x2 * cos_ar - y2 * sin_ar,\n      y2: x2 * sin_ar + y2 * cos_ar,\n      x3: x3 * cos_ar - y3 * sin_ar,\n      y3: x3 * sin_ar + y3 * cos_ar,\n      x4: r * Math.cos(a2),\n      y4: r * Math.sin(a2)\n    };\n  };\n\n  var rad2deg = function(value) {\n    return (value * 180) / Math.PI;\n  };\n\n  var getQuadraticCurveBoundary = function(sx, sy, cpx, cpy, ex, ey) {\n    var midX1 = sx + (cpx - sx) * 0.5;\n    var midY1 = sy + (cpy - sy) * 0.5;\n    var midX2 = ex + (cpx - ex) * 0.5;\n    var midY2 = ey + (cpy - ey) * 0.5;\n    var resultX1 = Math.min(sx, ex, midX1, midX2);\n    var resultX2 = Math.max(sx, ex, midX1, midX2);\n    var resultY1 = Math.min(sy, ey, midY1, midY2);\n    var resultY2 = Math.max(sy, ey, midY1, midY2);\n    return new Rectangle(\n      resultX1,\n      resultY1,\n      resultX2 - resultX1,\n      resultY2 - resultY1\n    );\n  };\n\n  //De Casteljau algorithm\n  var getBezierCurveBoundary = function(ax, ay, bx, by, cx, cy, dx, dy) {\n    var tobx = bx - ax;\n    var toby = by - ay;\n    var tocx = cx - bx;\n    var tocy = cy - by;\n    var todx = dx - cx;\n    var tody = dy - cy;\n    var precision = 40;\n    var d,\n      i,\n      px,\n      py,\n      qx,\n      qy,\n      rx,\n      ry,\n      tx,\n      ty,\n      sx,\n      sy,\n      x,\n      y,\n      minx,\n      miny,\n      maxx,\n      maxy,\n      toqx,\n      toqy,\n      torx,\n      tory,\n      totx,\n      toty;\n    for (i = 0; i < precision + 1; i++) {\n      d = i / precision;\n      px = ax + d * tobx;\n      py = ay + d * toby;\n      qx = bx + d * tocx;\n      qy = by + d * tocy;\n      rx = cx + d * todx;\n      ry = cy + d * tody;\n      toqx = qx - px;\n      toqy = qy - py;\n      torx = rx - qx;\n      tory = ry - qy;\n\n      sx = px + d * toqx;\n      sy = py + d * toqy;\n      tx = qx + d * torx;\n      ty = qy + d * tory;\n      totx = tx - sx;\n      toty = ty - sy;\n\n      x = sx + d * totx;\n      y = sy + d * toty;\n      if (i == 0) {\n        minx = x;\n        miny = y;\n        maxx = x;\n        maxy = y;\n      } else {\n        minx = Math.min(minx, x);\n        miny = Math.min(miny, y);\n        maxx = Math.max(maxx, x);\n        maxy = Math.max(maxy, y);\n      }\n    }\n    return new Rectangle(\n      Math.round(minx),\n      Math.round(miny),\n      Math.round(maxx - minx),\n      Math.round(maxy - miny)\n    );\n  };\n\n  var getPrevLineDashValue = function(lineDash, lineDashOffset) {\n    return JSON.stringify({\n      lineDash: lineDash,\n      lineDashOffset: lineDashOffset\n    });\n  };\n\n  var setLineDash = function() {\n    // Avoid unnecessary line dash declarations.\n    if (\n      !this.prevLineDash &&\n      !this.ctx.lineDash.length &&\n      !this.ctx.lineDashOffset\n    ) {\n      return;\n    }\n\n    // Avoid unnecessary line dash declarations.\n    const nextLineDash = getPrevLineDashValue(\n      this.ctx.lineDash,\n      this.ctx.lineDashOffset\n    );\n    if (this.prevLineDash !== nextLineDash) {\n      this.pdf.setLineDash(this.ctx.lineDash, this.ctx.lineDashOffset);\n      this.prevLineDash = nextLineDash;\n    }\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * jsPDF filters PlugIn\n * Copyright (c) 2014 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\n\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var ASCII85Encode = function(a) {\n    var b, c, d, e, f, g, h, i, j, k;\n    // eslint-disable-next-line no-control-regex\n    for (\n      !/[^\\x00-\\xFF]/.test(a),\n        b = \"\\x00\\x00\\x00\\x00\".slice(a.length % 4 || 4),\n        a += b,\n        c = [],\n        d = 0,\n        e = a.length;\n      e > d;\n      d += 4\n    )\n      (f =\n        (a.charCodeAt(d) << 24) +\n        (a.charCodeAt(d + 1) << 16) +\n        (a.charCodeAt(d + 2) << 8) +\n        a.charCodeAt(d + 3)),\n        0 !== f\n          ? ((k = f % 85),\n            (f = (f - k) / 85),\n            (j = f % 85),\n            (f = (f - j) / 85),\n            (i = f % 85),\n            (f = (f - i) / 85),\n            (h = f % 85),\n            (f = (f - h) / 85),\n            (g = f % 85),\n            c.push(g + 33, h + 33, i + 33, j + 33, k + 33))\n          : c.push(122);\n    return (\n      (function(a, b) {\n        for (var c = b; c > 0; c--) a.pop();\n      })(c, b.length),\n      String.fromCharCode.apply(String, c) + \"~>\"\n    );\n  };\n\n  var ASCII85Decode = function(a) {\n    var c,\n      d,\n      e,\n      f,\n      g,\n      h = String,\n      l = \"length\",\n      w = 255,\n      x = \"charCodeAt\",\n      y = \"slice\",\n      z = \"replace\";\n    for (\n      \"~>\" === a[y](-2),\n        a = a[y](0, -2)\n          [z](/\\s/g, \"\")\n          [z](\"z\", \"!!!!!\"),\n        c = \"uuuuu\"[y](a[l] % 5 || 5),\n        a += c,\n        e = [],\n        f = 0,\n        g = a[l];\n      g > f;\n      f += 5\n    )\n      (d =\n        52200625 * (a[x](f) - 33) +\n        614125 * (a[x](f + 1) - 33) +\n        7225 * (a[x](f + 2) - 33) +\n        85 * (a[x](f + 3) - 33) +\n        (a[x](f + 4) - 33)),\n        e.push(w & (d >> 24), w & (d >> 16), w & (d >> 8), w & d);\n    return (\n      (function(a, b) {\n        for (var c = b; c > 0; c--) a.pop();\n      })(e, c[l]),\n      h.fromCharCode.apply(h, e)\n    );\n  };\n\n  var ASCIIHexEncode = function(value) {\n    return (\n      value\n        .split(\"\")\n        .map(function(value) {\n          return (\"0\" + value.charCodeAt().toString(16)).slice(-2);\n        })\n        .join(\"\") + \">\"\n    );\n  };\n\n  var ASCIIHexDecode = function(value) {\n    var regexCheckIfHex = new RegExp(/^([0-9A-Fa-f]{2})+$/);\n    value = value.replace(/\\s/g, \"\");\n    if (value.indexOf(\">\") !== -1) {\n      value = value.substr(0, value.indexOf(\">\"));\n    }\n    if (value.length % 2) {\n      value += \"0\";\n    }\n    if (regexCheckIfHex.test(value) === false) {\n      return \"\";\n    }\n    var result = \"\";\n    for (var i = 0; i < value.length; i += 2) {\n      result += String.fromCharCode(\"0x\" + (value[i] + value[i + 1]));\n    }\n    return result;\n  };\n  /*\n  var FlatePredictors = {\n      None: 1,\n      TIFF: 2,\n      PNG_None: 10,\n      PNG_Sub: 11,\n      PNG_Up: 12,\n      PNG_Average: 13,\n      PNG_Paeth: 14,\n      PNG_Optimum: 15\n  };\n  */\n\n  var FlateEncode = function(data) {\n    var arr = new Uint8Array(data.length);\n    var i = data.length;\n    while (i--) {\n      arr[i] = data.charCodeAt(i);\n    }\n    arr = zlibSync(arr);\n    data = arr.reduce(function(data, byte) {\n      return data + String.fromCharCode(byte);\n    }, \"\");\n    return data;\n  };\n\n  jsPDFAPI.processDataByFilters = function(origData, filterChain) {\n    \"use strict\";\n    var i = 0;\n    var data = origData || \"\";\n    var reverseChain = [];\n    filterChain = filterChain || [];\n\n    if (typeof filterChain === \"string\") {\n      filterChain = [filterChain];\n    }\n\n    for (i = 0; i < filterChain.length; i += 1) {\n      switch (filterChain[i]) {\n        case \"ASCII85Decode\":\n        case \"/ASCII85Decode\":\n          data = ASCII85Decode(data);\n          reverseChain.push(\"/ASCII85Encode\");\n          break;\n        case \"ASCII85Encode\":\n        case \"/ASCII85Encode\":\n          data = ASCII85Encode(data);\n          reverseChain.push(\"/ASCII85Decode\");\n          break;\n        case \"ASCIIHexDecode\":\n        case \"/ASCIIHexDecode\":\n          data = ASCIIHexDecode(data);\n          reverseChain.push(\"/ASCIIHexEncode\");\n          break;\n        case \"ASCIIHexEncode\":\n        case \"/ASCIIHexEncode\":\n          data = ASCIIHexEncode(data);\n          reverseChain.push(\"/ASCIIHexDecode\");\n          break;\n        case \"FlateEncode\":\n        case \"/FlateEncode\":\n          data = FlateEncode(data);\n          reverseChain.push(\"/FlateDecode\");\n          break;\n        default:\n          throw new Error(\n            'The filter: \"' + filterChain[i] + '\" is not implemented'\n          );\n      }\n    }\n\n    return { data: data, reverseChain: reverseChain.reverse().join(\" \") };\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * jsPDF fileloading PlugIn\n * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name fileloading\n * @module\n */\n(function(jsPDFAPI) {\n  /**\n   * @name loadFile\n   * @function\n   * @param {string} url\n   * @param {boolean} sync\n   * @param {function} callback\n   * @returns {string|undefined} result\n   */\n  jsPDFAPI.loadFile = function(url, sync, callback) {\n    return browserRequest(url, sync, callback);\n\n  };\n\n  /**\n   * Controls which local files may be read by jsPDF when running under Node.js.\n   *\n   * Security recommendation:\n   * - We strongly recommend using Node's permission flags (`node --permission --allow-fs-read=...`) instead of this property,\n   *   especially in production. The Node flags are enforced by the runtime and provide stronger guarantees.\n   *\n   * Behavior:\n   * - When present, jsPDF will allow reading only if the requested, resolved absolute path matches any entry in this array.\n   * - Each entry can be either:\n   *   - An absolute or relative file path for an exact match, or\n   *   - A prefix ending with a single wildcard `*` to allow all paths starting with that prefix.\n   * - Examples of allowed patterns:\n   *   - `\"./fonts/MyFont.ttf\"` (exact match by resolved path)\n   *   - `\"/abs/path/to/file.txt\"` (exact absolute path)\n   *   - `\"./assets/*\"` (any file whose resolved path starts with the resolved `./assets/` directory)\n   *\n   * Notes:\n   * - If Node's permission API is available (`process.permission`), it is checked first. If it denies access, reading will fail regardless of `allowFsRead`.\n   * - If neither `process.permission` nor `allowFsRead` is set, reading from the local file system is disabled and an error is thrown.\n   *\n   * Example:\n   * ```js\n   * const doc = jsPDF();\n   * doc.allowFsRead = [\"./fonts/*\", \"./images/logo.png\"]; // allow everything under ./fonts and a single file\n   * const ttf = doc.loadFile(\"./fonts/MyFont.ttf\", true);\n   * ```\n   *\n   * @property {string[]|undefined}\n   * @name allowFsRead\n   */\n  jsPDFAPI.allowFsRead = undefined;\n\n  /**\n   * @name loadImageFile\n   * @function\n   * @param {string} path\n   * @param {boolean} sync\n   * @param {function} callback\n   */\n  jsPDFAPI.loadImageFile = jsPDFAPI.loadFile;\n\n  function browserRequest(url, sync, callback) {\n    sync = sync === false ? false : true;\n    callback = typeof callback === \"function\" ? callback : function() {};\n    var result = undefined;\n\n    var xhr = function(url, sync, callback) {\n      var request = new XMLHttpRequest();\n      var i = 0;\n\n      var sanitizeUnicode = function(data) {\n        var dataLength = data.length;\n        var charArray = [];\n        var StringFromCharCode = String.fromCharCode;\n\n        //Transform Unicode to ASCII\n        for (i = 0; i < dataLength; i += 1) {\n          charArray.push(StringFromCharCode(data.charCodeAt(i) & 0xff));\n        }\n        return charArray.join(\"\");\n      };\n\n      request.open(\"GET\", url, !sync);\n      // XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]\n      request.overrideMimeType(\"text/plain; charset=x-user-defined\");\n\n      if (sync === false) {\n        request.onload = function() {\n          if (request.status === 200) {\n            callback(sanitizeUnicode(this.responseText));\n          } else {\n            callback(undefined);\n          }\n        };\n      }\n      request.send(null);\n\n      if (sync && request.status === 200) {\n        return sanitizeUnicode(request.responseText);\n      }\n    };\n    try {\n      result = xhr(url, sync, callback);\n      // eslint-disable-next-line no-empty\n    } catch (e) {}\n    return result;\n  }\n\n  function nodeReadFile(url, sync, callback) {\n    sync = sync === false ? false : true;\n    var result = undefined;\n\n    var fs = require(\"fs\");\n    var path = require(\"path\");\n\n    if (!process.permission && !this.allowFsRead) {\n      throw new Error(\n        \"Trying to read a file from local file system. To enable this feature either run node with the --permission and --allow-fs-read flags or set the jsPDF.allowFsRead property.\"\n      );\n    }\n\n    try {\n      url = fs.realpathSync(path.resolve(url));\n    } catch (e) {\n      if (sync) {\n        return undefined;\n      } else {\n        callback(undefined);\n        return;\n      }\n    }\n\n    if (process.permission && !process.permission.has(\"fs.read\", url)) {\n      throw new Error(`Cannot read file '${url}'. Permission denied.`);\n    }\n\n    if (this.allowFsRead) {\n      const allowRead = this.allowFsRead.some(allowedUrl => {\n        const starIndex = allowedUrl.indexOf(\"*\");\n        if (starIndex >= 0) {\n          const fixedPart = allowedUrl.substring(0, starIndex);\n          let resolved = path.resolve(fixedPart);\n          if (fixedPart.endsWith(path.sep) && !resolved.endsWith(path.sep)) {\n            resolved += path.sep;\n          }\n          return url.startsWith(resolved);\n        } else {\n          return url === path.resolve(allowedUrl);\n        }\n      });\n      if (!allowRead) {\n        throw new Error(`Cannot read file '${url}'. Permission denied.`);\n      }\n    }\n\n    if (sync) {\n      try {\n        result = fs.readFileSync(url, {\n          encoding: \"latin1\"\n        });\n      } catch (e) {\n        return undefined;\n      }\n    } else {\n      fs.readFile(url, { encoding: \"latin1\" }, function(err, data) {\n        if (!callback) {\n          return;\n        }\n        if (err) {\n          callback(undefined);\n        }\n        callback(data);\n      });\n    }\n\n    return result;\n  }\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2018 Erik Koopmans\n * Released under the MIT License.\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { normalizeFontFace } from \"../libs/fontFace.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF html PlugIn\n *\n * @name html\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  function loadHtml2Canvas() {\n    return (function() {\n      if (globalObject[\"html2canvas\"]) {\n        return Promise.resolve(globalObject[\"html2canvas\"]);\n      }\n\n      return import(\"html2canvas\");\n\n    })()\n      .catch(function(e) {\n        return Promise.reject(new Error(\"Could not load html2canvas: \" + e));\n      })\n      .then(function(html2canvas) {\n        return html2canvas.default ? html2canvas.default : html2canvas;\n      });\n  }\n\n  function loadDomPurify() {\n    return (function() {\n      if (globalObject[\"DOMPurify\"]) {\n        return Promise.resolve(globalObject[\"DOMPurify\"]);\n      }\n\n      return import(\"dompurify\");\n\n    })()\n      .catch(function(e) {\n        return Promise.reject(new Error(\"Could not load dompurify: \" + e));\n      })\n      .then(function(dompurify) {\n        return dompurify.default ? dompurify.default : dompurify;\n      });\n  }\n\n  /**\n   * Determine the type of a variable/object.\n   *\n   * @private\n   * @ignore\n   */\n  var objType = function(obj) {\n    var type = typeof obj;\n    if (type === \"undefined\") return \"undefined\";\n    else if (type === \"string\" || obj instanceof String) return \"string\";\n    else if (type === \"number\" || obj instanceof Number) return \"number\";\n    else if (type === \"function\" || obj instanceof Function) return \"function\";\n    else if (!!obj && obj.constructor === Array) return \"array\";\n    else if (obj && obj.nodeType === 1) return \"element\";\n    else if (type === \"object\") return \"object\";\n    else return \"unknown\";\n  };\n\n  /**\n   * Create an HTML element with optional className, innerHTML, and style.\n   *\n   * @private\n   * @ignore\n   */\n  var createElement = function(tagName, opt) {\n    var el = document.createElement(tagName);\n    if (opt.className) el.className = opt.className;\n    if (opt.innerHTML && opt.dompurify) {\n      el.innerHTML = opt.dompurify.sanitize(opt.innerHTML);\n    }\n    for (var key in opt.style) {\n      el.style[key] = opt.style[key];\n    }\n    return el;\n  };\n\n  /**\n   * Deep-clone a node and preserve contents/properties.\n   *\n   * @private\n   * @ignore\n   */\n  var cloneNode = function(node, javascriptEnabled) {\n    // Recursively clone the node.\n    var clone =\n      node.nodeType === 3\n        ? document.createTextNode(node.nodeValue)\n        : node.cloneNode(false);\n    for (var child = node.firstChild; child; child = child.nextSibling) {\n      if (\n        javascriptEnabled === true ||\n        child.nodeType !== 1 ||\n        child.nodeName !== \"SCRIPT\"\n      ) {\n        clone.appendChild(cloneNode(child, javascriptEnabled));\n      }\n    }\n\n    if (node.nodeType === 1) {\n      // Preserve contents/properties of special nodes.\n      if (node.nodeName === \"CANVAS\") {\n        clone.width = node.width;\n        clone.height = node.height;\n        clone.getContext(\"2d\").drawImage(node, 0, 0);\n      } else if (node.nodeName === \"TEXTAREA\" || node.nodeName === \"SELECT\") {\n        clone.value = node.value;\n      }\n\n      // Preserve the node's scroll position when it loads.\n      clone.addEventListener(\n        \"load\",\n        function() {\n          clone.scrollTop = node.scrollTop;\n          clone.scrollLeft = node.scrollLeft;\n        },\n        true\n      );\n    }\n\n    // Return the cloned node.\n    return clone;\n  };\n\n  /* ----- CONSTRUCTOR ----- */\n\n  var Worker = function Worker(opt) {\n    // Create the root parent for the proto chain, and the starting Worker.\n    var root = Object.assign(\n      Worker.convert(Promise.resolve()),\n      JSON.parse(JSON.stringify(Worker.template))\n    );\n    var self = Worker.convert(Promise.resolve(), root);\n\n    // Set progress, optional settings, and return.\n    self = self.setProgress(1, Worker, 1, [Worker]);\n    self = self.set(opt);\n    return self;\n  };\n\n  // Boilerplate for subclassing Promise.\n  Worker.prototype = Object.create(Promise.prototype);\n  Worker.prototype.constructor = Worker;\n\n  // Converts/casts promises into Workers.\n  Worker.convert = function convert(promise, inherit) {\n    // Uses prototypal inheritance to receive changes made to ancestors' properties.\n    promise.__proto__ = inherit || Worker.prototype;\n    return promise;\n  };\n\n  Worker.template = {\n    prop: {\n      src: null,\n      container: null,\n      overlay: null,\n      canvas: null,\n      img: null,\n      pdf: null,\n      pageSize: null,\n      callback: function() {}\n    },\n    progress: {\n      val: 0,\n      state: null,\n      n: 0,\n      stack: []\n    },\n    opt: {\n      filename: \"file.pdf\",\n      margin: [0, 0, 0, 0],\n      enableLinks: true,\n      x: 0,\n      y: 0,\n      html2canvas: {},\n      jsPDF: {},\n      backgroundColor: \"transparent\"\n    }\n  };\n\n  /* ----- FROM / TO ----- */\n\n  Worker.prototype.from = function from(src, type) {\n    function getType(src) {\n      switch (objType(src)) {\n        case \"string\":\n          return \"string\";\n        case \"element\":\n          return src.nodeName.toLowerCase() === \"canvas\" ? \"canvas\" : \"element\";\n        default:\n          return \"unknown\";\n      }\n    }\n\n    return this.then(function from_main() {\n      type = type || getType(src);\n      switch (type) {\n        case \"string\":\n          return this.then(loadDomPurify).then(function(dompurify) {\n            return this.set({\n              src: createElement(\"div\", {\n                innerHTML: src,\n                dompurify: dompurify\n              })\n            });\n          });\n        case \"element\":\n          return this.set({ src: src });\n        case \"canvas\":\n          return this.set({ canvas: src });\n        case \"img\":\n          return this.set({ img: src });\n        default:\n          return this.error(\"Unknown source type.\");\n      }\n    });\n  };\n\n  Worker.prototype.to = function to(target) {\n    // Route the 'to' request to the appropriate method.\n    switch (target) {\n      case \"container\":\n        return this.toContainer();\n      case \"canvas\":\n        return this.toCanvas();\n      case \"img\":\n        return this.toImg();\n      case \"pdf\":\n        return this.toPdf();\n      default:\n        return this.error(\"Invalid target.\");\n    }\n  };\n\n  Worker.prototype.toContainer = function toContainer() {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkSrc() {\n        return (\n          this.prop.src || this.error(\"Cannot duplicate - no source HTML.\")\n        );\n      },\n      function checkPageSize() {\n        return this.prop.pageSize || this.setPageSize();\n      }\n    ];\n    return this.thenList(prereqs).then(function toContainer_main() {\n      // Define the CSS styles for the container and its overlay parent.\n      var overlayCSS = {\n        position: \"fixed\",\n        overflow: \"hidden\",\n        zIndex: 1000,\n        left: \"-100000px\",\n        right: 0,\n        bottom: 0,\n        top: 0\n      };\n      var containerCSS = {\n        position: \"relative\",\n        display: \"inline-block\",\n        width:\n          (typeof this.opt.width === \"number\" &&\n          !isNaN(this.opt.width) &&\n          typeof this.opt.windowWidth === \"number\" &&\n          !isNaN(this.opt.windowWidth)\n            ? this.opt.windowWidth\n            : Math.max(\n                this.prop.src.clientWidth,\n                this.prop.src.scrollWidth,\n                this.prop.src.offsetWidth\n              )) + \"px\",\n        left: 0,\n        right: 0,\n        top: 0,\n        margin: \"auto\",\n        backgroundColor: this.opt.backgroundColor\n      }; // Set the overlay to hidden (could be changed in the future to provide a print preview).\n\n      var source = cloneNode(\n        this.prop.src,\n        this.opt.html2canvas.javascriptEnabled\n      );\n\n      if (source.tagName === \"BODY\") {\n        containerCSS.height =\n          Math.max(\n            document.body.scrollHeight,\n            document.body.offsetHeight,\n            document.documentElement.clientHeight,\n            document.documentElement.scrollHeight,\n            document.documentElement.offsetHeight\n          ) + \"px\";\n      }\n\n      this.prop.overlay = createElement(\"div\", {\n        className: \"html2pdf__overlay\",\n        style: overlayCSS\n      });\n      this.prop.container = createElement(\"div\", {\n        className: \"html2pdf__container\",\n        style: containerCSS\n      });\n      this.prop.container.appendChild(source);\n      this.prop.container.firstChild.appendChild(\n        createElement(\"div\", {\n          style: {\n            clear: \"both\",\n            border: \"0 none transparent\",\n            margin: 0,\n            padding: 0,\n            height: 0\n          }\n        })\n      );\n      this.prop.container.style.float = \"none\";\n      this.prop.overlay.appendChild(this.prop.container);\n      document.body.appendChild(this.prop.overlay);\n      this.prop.container.firstChild.style.position = \"relative\";\n      this.prop.container.height =\n        Math.max(\n          this.prop.container.firstChild.clientHeight,\n          this.prop.container.firstChild.scrollHeight,\n          this.prop.container.firstChild.offsetHeight\n        ) + \"px\";\n    });\n  };\n\n  Worker.prototype.toCanvas = function toCanvas() {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkContainer() {\n        return (\n          document.body.contains(this.prop.container) || this.toContainer()\n        );\n      }\n    ];\n\n    // Fulfill prereqs then create the canvas.\n    return this.thenList(prereqs)\n      .then(loadHtml2Canvas)\n      .then(function toCanvas_main(html2canvas) {\n        // Handle old-fashioned 'onrendered' argument.\n        var options = Object.assign({}, this.opt.html2canvas);\n        delete options.onrendered;\n\n        return html2canvas(this.prop.container, options);\n      })\n      .then(function toCanvas_post(canvas) {\n        // Handle old-fashioned 'onrendered' argument.\n        var onRendered = this.opt.html2canvas.onrendered || function() {};\n        onRendered(canvas);\n\n        this.prop.canvas = canvas;\n        document.body.removeChild(this.prop.overlay);\n      });\n  };\n\n  Worker.prototype.toContext2d = function toContext2d() {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkContainer() {\n        return (\n          document.body.contains(this.prop.container) || this.toContainer()\n        );\n      }\n    ];\n\n    // Fulfill prereqs then create the canvas.\n    return this.thenList(prereqs)\n      .then(loadHtml2Canvas)\n      .then(function toContext2d_main(html2canvas) {\n        // Handle old-fashioned 'onrendered' argument.\n\n        var pdf = this.opt.jsPDF;\n        var fontFaces = this.opt.fontFaces;\n\n        var scale =\n          typeof this.opt.width === \"number\" &&\n          !isNaN(this.opt.width) &&\n          typeof this.opt.windowWidth === \"number\" &&\n          !isNaN(this.opt.windowWidth)\n            ? this.opt.width / this.opt.windowWidth\n            : 1;\n\n        var options = Object.assign(\n          {\n            async: true,\n            allowTaint: true,\n            scale: scale,\n            scrollX: this.opt.scrollX || 0,\n            scrollY: this.opt.scrollY || 0,\n            backgroundColor: \"#ffffff\",\n            imageTimeout: 15000,\n            logging: true,\n            proxy: null,\n            removeContainer: true,\n            foreignObjectRendering: false,\n            useCORS: false\n          },\n          this.opt.html2canvas\n        );\n        delete options.onrendered;\n\n        pdf.context2d.autoPaging =\n          typeof this.opt.autoPaging === \"undefined\"\n            ? true\n            : this.opt.autoPaging;\n        pdf.context2d.posX = this.opt.x;\n        pdf.context2d.posY = this.opt.y;\n        pdf.context2d.margin = this.opt.margin;\n        pdf.context2d.fontFaces = fontFaces;\n\n        if (fontFaces) {\n          for (var i = 0; i < fontFaces.length; ++i) {\n            var font = fontFaces[i];\n            var src = font.src.find(function(src) {\n              return src.format === \"truetype\";\n            });\n\n            if (src) {\n              pdf.addFont(src.url, font.ref.name, font.ref.style);\n            }\n          }\n        }\n\n        options.windowHeight = options.windowHeight || 0;\n        options.windowHeight =\n          options.windowHeight == 0\n            ? Math.max(\n                this.prop.container.clientHeight,\n                this.prop.container.scrollHeight,\n                this.prop.container.offsetHeight\n              )\n            : options.windowHeight;\n\n        pdf.context2d.save(true);\n        return html2canvas(this.prop.container, options);\n      })\n      .then(function toContext2d_post(canvas) {\n        this.opt.jsPDF.context2d.restore(true);\n\n        // Handle old-fashioned 'onrendered' argument.\n        var onRendered = this.opt.html2canvas.onrendered || function() {};\n        onRendered(canvas);\n\n        this.prop.canvas = canvas;\n        document.body.removeChild(this.prop.overlay);\n      });\n  };\n\n  Worker.prototype.toImg = function toImg() {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkCanvas() {\n        return this.prop.canvas || this.toCanvas();\n      }\n    ];\n\n    // Fulfill prereqs then create the image.\n    return this.thenList(prereqs).then(function toImg_main() {\n      var imgData = this.prop.canvas.toDataURL(\n        \"image/\" + this.opt.image.type,\n        this.opt.image.quality\n      );\n      this.prop.img = document.createElement(\"img\");\n      this.prop.img.src = imgData;\n    });\n  };\n\n  Worker.prototype.toPdf = function toPdf() {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkContext2d() {\n        return this.toContext2d();\n      }\n      //function checkCanvas() { return this.prop.canvas || this.toCanvas(); }\n    ];\n\n    // Fulfill prereqs then create the image.\n    return this.thenList(prereqs).then(function toPdf_main() {\n      // Create local copies of frequently used properties.\n      this.prop.pdf = this.prop.pdf || this.opt.jsPDF;\n    });\n  };\n\n  /* ----- OUTPUT / SAVE ----- */\n\n  Worker.prototype.output = function output(type, options, src) {\n    // Redirect requests to the correct function (outputPdf / outputImg).\n    src = src || \"pdf\";\n    if (src.toLowerCase() === \"img\" || src.toLowerCase() === \"image\") {\n      return this.outputImg(type, options);\n    } else {\n      return this.outputPdf(type, options);\n    }\n  };\n\n  Worker.prototype.outputPdf = function outputPdf(type, options) {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkPdf() {\n        return this.prop.pdf || this.toPdf();\n      }\n    ];\n\n    // Fulfill prereqs then perform the appropriate output.\n    return this.thenList(prereqs).then(function outputPdf_main() {\n      /* Currently implemented output types:\n       *    https://rawgit.com/MrRio/jsPDF/master/docs/jspdf.js.html#line992\n       *  save(options), arraybuffer, blob, bloburi/bloburl,\n       *  datauristring/dataurlstring, dataurlnewwindow, datauri/dataurl\n       */\n      return this.prop.pdf.output(type, options);\n    });\n  };\n\n  Worker.prototype.outputImg = function outputImg(type) {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkImg() {\n        return this.prop.img || this.toImg();\n      }\n    ];\n\n    // Fulfill prereqs then perform the appropriate output.\n    return this.thenList(prereqs).then(function outputImg_main() {\n      switch (type) {\n        case undefined:\n        case \"img\":\n          return this.prop.img;\n        case \"datauristring\":\n        case \"dataurlstring\":\n          return this.prop.img.src;\n        case \"datauri\":\n        case \"dataurl\":\n          return (document.location.href = this.prop.img.src);\n        default:\n          throw 'Image output type \"' + type + '\" is not supported.';\n      }\n    });\n  };\n\n  Worker.prototype.save = function save(filename) {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkPdf() {\n        return this.prop.pdf || this.toPdf();\n      }\n    ];\n\n    // Fulfill prereqs, update the filename (if provided), and save the PDF.\n    return this.thenList(prereqs)\n      .set(filename ? { filename: filename } : null)\n      .then(function save_main() {\n        this.prop.pdf.save(this.opt.filename);\n      });\n  };\n\n  Worker.prototype.doCallback = function doCallback() {\n    // Set up function prerequisites.\n    var prereqs = [\n      function checkPdf() {\n        return this.prop.pdf || this.toPdf();\n      }\n    ];\n\n    // Fulfill prereqs, update the filename (if provided), and save the PDF.\n    return this.thenList(prereqs).then(function doCallback_main() {\n      this.prop.callback(this.prop.pdf);\n    });\n  };\n\n  /* ----- SET / GET ----- */\n\n  Worker.prototype.set = function set(opt) {\n    // TODO: Implement ordered pairs?\n\n    // Silently ignore invalid or empty input.\n    if (objType(opt) !== \"object\") {\n      return this;\n    }\n\n    // Build an array of setter functions to queue.\n    var fns = Object.keys(opt || {}).map(function(key) {\n      if (key in Worker.template.prop) {\n        // Set pre-defined properties.\n        return function set_prop() {\n          this.prop[key] = opt[key];\n        };\n      } else {\n        switch (key) {\n          case \"margin\":\n            return this.setMargin.bind(this, opt.margin);\n          case \"jsPDF\":\n            return function set_jsPDF() {\n              this.opt.jsPDF = opt.jsPDF;\n              return this.setPageSize();\n            };\n          case \"pageSize\":\n            return this.setPageSize.bind(this, opt.pageSize);\n          default:\n            // Set any other properties in opt.\n            return function set_opt() {\n              this.opt[key] = opt[key];\n            };\n        }\n      }\n    }, this);\n\n    // Set properties within the promise chain.\n    return this.then(function set_main() {\n      return this.thenList(fns);\n    });\n  };\n\n  Worker.prototype.get = function get(key, cbk) {\n    return this.then(function get_main() {\n      // Fetch the requested property, either as a predefined prop or in opt.\n      var val = key in Worker.template.prop ? this.prop[key] : this.opt[key];\n      return cbk ? cbk(val) : val;\n    });\n  };\n\n  Worker.prototype.setMargin = function setMargin(margin) {\n    return this.then(function setMargin_main() {\n      // Parse the margin property.\n      switch (objType(margin)) {\n        case \"number\":\n          margin = [margin, margin, margin, margin];\n        // eslint-disable-next-line no-fallthrough\n        case \"array\":\n          if (margin.length === 2) {\n            margin = [margin[0], margin[1], margin[0], margin[1]];\n          }\n          if (margin.length === 4) {\n            break;\n          }\n        // eslint-disable-next-line no-fallthrough\n        default:\n          return this.error(\"Invalid margin array.\");\n      }\n\n      // Set the margin property, then update pageSize.\n      this.opt.margin = margin;\n    }).then(this.setPageSize);\n  };\n\n  Worker.prototype.setPageSize = function setPageSize(pageSize) {\n    function toPx(val, k) {\n      return Math.floor(((val * k) / 72) * 96);\n    }\n\n    return this.then(function setPageSize_main() {\n      // Retrieve page-size based on jsPDF settings, if not explicitly provided.\n      pageSize = pageSize || jsPDF.getPageSize(this.opt.jsPDF);\n\n      // Add 'inner' field if not present.\n      if (!pageSize.hasOwnProperty(\"inner\")) {\n        pageSize.inner = {\n          width: pageSize.width - this.opt.margin[1] - this.opt.margin[3],\n          height: pageSize.height - this.opt.margin[0] - this.opt.margin[2]\n        };\n        pageSize.inner.px = {\n          width: toPx(pageSize.inner.width, pageSize.k),\n          height: toPx(pageSize.inner.height, pageSize.k)\n        };\n        pageSize.inner.ratio = pageSize.inner.height / pageSize.inner.width;\n      }\n\n      // Attach pageSize to this.\n      this.prop.pageSize = pageSize;\n    });\n  };\n\n  Worker.prototype.setProgress = function setProgress(val, state, n, stack) {\n    // Immediately update all progress values.\n    if (val != null) this.progress.val = val;\n    if (state != null) this.progress.state = state;\n    if (n != null) this.progress.n = n;\n    if (stack != null) this.progress.stack = stack;\n    this.progress.ratio = this.progress.val / this.progress.state;\n\n    // Return this for command chaining.\n    return this;\n  };\n\n  Worker.prototype.updateProgress = function updateProgress(\n    val,\n    state,\n    n,\n    stack\n  ) {\n    // Immediately update all progress values, using setProgress.\n    return this.setProgress(\n      val ? this.progress.val + val : null,\n      state ? state : null,\n      n ? this.progress.n + n : null,\n      stack ? this.progress.stack.concat(stack) : null\n    );\n  };\n\n  /* ----- PROMISE MAPPING ----- */\n\n  Worker.prototype.then = function then(onFulfilled, onRejected) {\n    // Wrap `this` for encapsulation.\n    var self = this;\n\n    return this.thenCore(onFulfilled, onRejected, function then_main(\n      onFulfilled,\n      onRejected\n    ) {\n      // Update progress while queuing, calling, and resolving `then`.\n      self.updateProgress(null, null, 1, [onFulfilled]);\n      return Promise.prototype.then\n        .call(this, function then_pre(val) {\n          self.updateProgress(null, onFulfilled);\n          return val;\n        })\n        .then(onFulfilled, onRejected)\n        .then(function then_post(val) {\n          self.updateProgress(1);\n          return val;\n        });\n    });\n  };\n\n  Worker.prototype.thenCore = function thenCore(\n    onFulfilled,\n    onRejected,\n    thenBase\n  ) {\n    // Handle optional thenBase parameter.\n    thenBase = thenBase || Promise.prototype.then;\n\n    // Wrap `this` for encapsulation and bind it to the promise handlers.\n    var self = this;\n    if (onFulfilled) {\n      onFulfilled = onFulfilled.bind(self);\n    }\n    if (onRejected) {\n      onRejected = onRejected.bind(self);\n    }\n\n    // Cast self into a Promise to avoid polyfills recursively defining `then`.\n    var isNative =\n      Promise.toString().indexOf(\"[native code]\") !== -1 &&\n      Promise.name === \"Promise\";\n    var selfPromise = isNative\n      ? self\n      : Worker.convert(Object.assign({}, self), Promise.prototype);\n\n    // Return the promise, after casting it into a Worker and preserving props.\n    var returnVal = thenBase.call(selfPromise, onFulfilled, onRejected);\n    return Worker.convert(returnVal, self.__proto__);\n  };\n\n  Worker.prototype.thenExternal = function thenExternal(\n    onFulfilled,\n    onRejected\n  ) {\n    // Call `then` and return a standard promise (exits the Worker chain).\n    return Promise.prototype.then.call(this, onFulfilled, onRejected);\n  };\n\n  Worker.prototype.thenList = function thenList(fns) {\n    // Queue a series of promise 'factories' into the promise chain.\n    var self = this;\n    fns.forEach(function thenList_forEach(fn) {\n      self = self.thenCore(fn);\n    });\n    return self;\n  };\n\n  Worker.prototype[\"catch\"] = function(onRejected) {\n    // Bind `this` to the promise handler, call `catch`, and return a Worker.\n    if (onRejected) {\n      onRejected = onRejected.bind(this);\n    }\n    var returnVal = Promise.prototype[\"catch\"].call(this, onRejected);\n    return Worker.convert(returnVal, this);\n  };\n\n  Worker.prototype.catchExternal = function catchExternal(onRejected) {\n    // Call `catch` and return a standard promise (exits the Worker chain).\n    return Promise.prototype[\"catch\"].call(this, onRejected);\n  };\n\n  Worker.prototype.error = function error(msg) {\n    // Throw the error in the Promise chain.\n    return this.then(function error_main() {\n      throw new Error(msg);\n    });\n  };\n\n  /* ----- ALIASES ----- */\n\n  Worker.prototype.using = Worker.prototype.set;\n  Worker.prototype.saveAs = Worker.prototype.save;\n  Worker.prototype.export = Worker.prototype.output;\n  Worker.prototype.run = Worker.prototype.then;\n\n  // Get dimensions of a PDF page, as determined by jsPDF.\n  jsPDF.getPageSize = function(orientation, unit, format) {\n    // Decode options object\n    if (typeof orientation === \"object\") {\n      var options = orientation;\n      orientation = options.orientation;\n      unit = options.unit || unit;\n      format = options.format || format;\n    }\n\n    // Default options\n    unit = unit || \"mm\";\n    format = format || \"a4\";\n    orientation = (\"\" + (orientation || \"P\")).toLowerCase();\n    var format_as_string = (\"\" + format).toLowerCase();\n\n    // Size in pt of various paper formats\n    var pageFormats = {\n      a0: [2383.94, 3370.39],\n      a1: [1683.78, 2383.94],\n      a2: [1190.55, 1683.78],\n      a3: [841.89, 1190.55],\n      a4: [595.28, 841.89],\n      a5: [419.53, 595.28],\n      a6: [297.64, 419.53],\n      a7: [209.76, 297.64],\n      a8: [147.4, 209.76],\n      a9: [104.88, 147.4],\n      a10: [73.7, 104.88],\n      b0: [2834.65, 4008.19],\n      b1: [2004.09, 2834.65],\n      b2: [1417.32, 2004.09],\n      b3: [1000.63, 1417.32],\n      b4: [708.66, 1000.63],\n      b5: [498.9, 708.66],\n      b6: [354.33, 498.9],\n      b7: [249.45, 354.33],\n      b8: [175.75, 249.45],\n      b9: [124.72, 175.75],\n      b10: [87.87, 124.72],\n      c0: [2599.37, 3676.54],\n      c1: [1836.85, 2599.37],\n      c2: [1298.27, 1836.85],\n      c3: [918.43, 1298.27],\n      c4: [649.13, 918.43],\n      c5: [459.21, 649.13],\n      c6: [323.15, 459.21],\n      c7: [229.61, 323.15],\n      c8: [161.57, 229.61],\n      c9: [113.39, 161.57],\n      c10: [79.37, 113.39],\n      dl: [311.81, 623.62],\n      letter: [612, 792],\n      \"government-letter\": [576, 756],\n      legal: [612, 1008],\n      \"junior-legal\": [576, 360],\n      ledger: [1224, 792],\n      tabloid: [792, 1224],\n      \"credit-card\": [153, 243]\n    };\n\n    var k;\n    // Unit conversion\n    switch (unit) {\n      case \"pt\":\n        k = 1;\n        break;\n      case \"mm\":\n        k = 72 / 25.4;\n        break;\n      case \"cm\":\n        k = 72 / 2.54;\n        break;\n      case \"in\":\n        k = 72;\n        break;\n      case \"px\":\n        k = 72 / 96;\n        break;\n      case \"pc\":\n        k = 12;\n        break;\n      case \"em\":\n        k = 12;\n        break;\n      case \"ex\":\n        k = 6;\n        break;\n      default:\n        throw \"Invalid unit: \" + unit;\n    }\n    var pageHeight = 0;\n    var pageWidth = 0;\n\n    // Dimensions are stored as user units and converted to points on output\n    if (pageFormats.hasOwnProperty(format_as_string)) {\n      pageHeight = pageFormats[format_as_string][1] / k;\n      pageWidth = pageFormats[format_as_string][0] / k;\n    } else {\n      try {\n        pageHeight = format[1];\n        pageWidth = format[0];\n      } catch (err) {\n        throw new Error(\"Invalid format: \" + format);\n      }\n    }\n\n    var tmp;\n    // Handle page orientation\n    if (orientation === \"p\" || orientation === \"portrait\") {\n      orientation = \"p\";\n      if (pageWidth > pageHeight) {\n        tmp = pageWidth;\n        pageWidth = pageHeight;\n        pageHeight = tmp;\n      }\n    } else if (orientation === \"l\" || orientation === \"landscape\") {\n      orientation = \"l\";\n      if (pageHeight > pageWidth) {\n        tmp = pageWidth;\n        pageWidth = pageHeight;\n        pageHeight = tmp;\n      }\n    } else {\n      throw \"Invalid orientation: \" + orientation;\n    }\n\n    // Return information (k is the unit conversion ratio from pts)\n    var info = {\n      width: pageWidth,\n      height: pageHeight,\n      unit: unit,\n      k: k,\n      orientation: orientation\n    };\n    return info;\n  };\n\n  /**\n   * @typedef FontFace\n   *\n   * The font-face type implements an interface similar to that of the font-face CSS rule,\n   * and is used by jsPDF to match fonts when the font property of CanvasRenderingContext2D\n   * is updated.\n   *\n   * All properties expect values similar to those in the font-face CSS rule. A difference\n   * is the font-family, which do not need to be enclosed in double-quotes when containing\n   * spaces like in CSS.\n   *\n   * @property {string} family The name of the font-family.\n   * @property {string|undefined} style The style that this font-face defines, e.g. 'italic'.\n   * @property {string|number|undefined} weight The weight of the font, either as a string or a number (400, 500, 600, e.g.)\n   * @property {string|undefined} stretch The stretch of the font, e.g. condensed, normal, expanded.\n   * @property {Object[]} src A list of URLs from where fonts of various formats can be fetched.\n   * @property {string} [src] url A URL to a font of a specific format.\n   * @property {string} [src] format Format of the font referenced by the URL.\n   */\n\n  /**\n   * Generate a PDF from an HTML element or string using.\n   *\n   * @name html\n   * @function\n   * @param {HTMLElement|string} source The source HTMLElement or a string containing HTML.\n   * @param {Object} [options] Collection of settings\n   * @param {function} [options.callback] The mandatory callback-function gets as first parameter the current jsPDF instance\n   * @param {(number|number[])=} [options.margin] Page margins [top, right, bottom, left]. Default is 0.\n   * @param {(boolean|'slice'|'text')=} [options.autoPaging] The auto paging mode.\n   * <ul>\n   * <li>\n   *   <code>false</code>: Auto paging is disabled.\n   * </li>\n   * <li>\n   *   <code>true</code> or <code>'slice'</code>: Will cut shapes or text chunks across page breaks. Will possibly\n   *   slice text in half, making it difficult to read.\n   * </li>\n   * <li>\n   *   <code>'text'</code>: Trys not to cut text in half across page breaks. Works best for documents consisting\n   *   mostly of a single column of text.\n   * </li>\n   * </ul>\n   * Default is <code>true</code>.\n   * @param {string} [options.filename] name of the file\n   * @param {HTMLOptionImage} [options.image] image settings when converting HTML to image\n   * @param {Html2CanvasOptions} [options.html2canvas] html2canvas options\n   * @param {FontFace[]} [options.fontFaces] A list of font-faces to match when resolving fonts. Fonts will be added to the PDF based on the specified URL. If omitted, the font match algorithm falls back to old algorithm.\n   * @param {jsPDF} [options.jsPDF] jsPDF instance\n   * @param {number=} [options.x] x position on the PDF document in jsPDF units.\n   * @param {number=} [options.y] y position on the PDF document in jsPDF units.\n   * @param {number=} [options.width] The target width in the PDF document in jsPDF units. The rendered element will be\n   * scaled such that it fits into the specified width. Has no effect if either the <code>html2canvas.scale<code> is\n   * specified or the <code>windowWidth</code> option is NOT specified.\n   * @param {number=} [options.windowWidth] The window width in CSS pixels. In contrast to the\n   * <code>html2canvas.windowWidth</code> option, this option affects the actual container size while rendering and\n   * does NOT affect CSS media queries. This option only has an effect, if the <code>width<code> option is also specified.\n   *\n   * @example\n   * var doc = new jsPDF();\n   *\n   * doc.html(document.body, {\n   *    callback: function (doc) {\n   *      doc.save();\n   *    },\n   *    x: 10,\n   *    y: 10\n   * });\n   */\n  jsPDFAPI.html = function(src, options) {\n    \"use strict\";\n\n    options = options || {};\n    options.callback = options.callback || function() {};\n    options.html2canvas = options.html2canvas || {};\n    options.html2canvas.canvas = options.html2canvas.canvas || this.canvas;\n    options.jsPDF = options.jsPDF || this;\n    options.fontFaces = options.fontFaces\n      ? options.fontFaces.map(normalizeFontFace)\n      : null;\n\n    // Create a new worker with the given options.\n    var worker = new Worker(options);\n\n    if (!options.worker) {\n      // If worker is not set to true, perform the traditional 'simple' operation.\n      return worker.from(src).doCallback();\n    } else {\n      // Otherwise, return the worker for new Promise-based operation.\n      return worker;\n    }\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF JavaScript plugin\n *\n * @name javascript\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n  /**\n   * @name addJS\n   * @function\n   * @param {string} javascript The javascript to be embedded into the PDF-file.\n   * @returns {jsPDF}\n   */\n  jsPDFAPI.addJS = function(javascript) {\n    var jsNamesObj;\n    var jsJsObj;\n    // Escape only unescaped parentheses, without double-escaping already escaped ones\n    function escapeParens(str) {\n      let out = \"\";\n      for (let i = 0; i < str.length; i++) {\n        const ch = str[i];\n        if (ch === \"(\" || ch === \")\") {\n          // Count preceding backslashes to determine if the paren is already escaped\n          let bs = 0;\n          for (let j = i - 1; j >= 0 && str[j] === \"\\\\\"; j--) {\n            bs++;\n          }\n          if (bs % 2 === 0) {\n            out += \"\\\\\" + ch;\n          } else {\n            out += ch;\n          }\n        } else {\n          out += ch;\n        }\n      }\n      return out;\n    }\n    const text = escapeParens(javascript);\n\n    this.internal.events.subscribe(\"postPutResources\", function() {\n      jsNamesObj = this.internal.newObject();\n      this.internal.out(\"<<\");\n      this.internal.out(\"/Names [(EmbeddedJS) \" + (jsNamesObj + 1) + \" 0 R]\");\n      this.internal.out(\">>\");\n      this.internal.out(\"endobj\");\n\n      jsJsObj = this.internal.newObject();\n      this.internal.out(\"<<\");\n      this.internal.out(\"/S /JavaScript\");\n      // The sanitized 'text' is now safe to be enclosed in parentheses\n      this.internal.out(\"/JS (\" + text + \")\");\n      this.internal.out(\">>\");\n      this.internal.out(\"endobj\");\n    });\n\n    this.internal.events.subscribe(\"putCatalog\", function() {\n      if (jsNamesObj !== undefined && jsJsObj !== undefined) {\n        this.internal.out(\"/Names <</JavaScript \" + jsNamesObj + \" 0 R>>\");\n      }\n    });\n    return this;\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Outline PlugIn\n *\n * Generates a PDF Outline\n * @name outline\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var namesOid;\n  //var destsGoto = [];\n\n  jsPDFAPI.events.push([\n    \"postPutResources\",\n    function() {\n      var pdf = this;\n      var rx = /^(\\d+) 0 obj$/;\n\n      // Write action goto objects for each page\n      // this.outline.destsGoto = [];\n      // for (var i = 0; i < totalPages; i++) {\n      // var id = pdf.internal.newObject();\n      // this.outline.destsGoto.push(id);\n      // pdf.internal.write(\"<</D[\" + (i * 2 + 3) + \" 0 R /XYZ null\n      // null null]/S/GoTo>> endobj\");\n      // }\n      //\n      // for (var i = 0; i < dests.length; i++) {\n      // pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0\n      // R\");\n      // }\n      //\n      if (this.outline.root.children.length > 0) {\n        var lines = pdf.outline.render().split(/\\r\\n/);\n        for (var i = 0; i < lines.length; i++) {\n          var line = lines[i];\n          var m = rx.exec(line);\n          if (m != null) {\n            var oid = m[1];\n            pdf.internal.newObjectDeferredBegin(oid, false);\n          }\n          pdf.internal.write(line);\n        }\n      }\n\n      // This code will write named destination for each page reference\n      // (page_1, etc)\n      if (this.outline.createNamedDestinations) {\n        var totalPages = this.internal.pages.length;\n        // WARNING: this assumes jsPDF starts on page 3 and pageIDs\n        // follow 5, 7, 9, etc\n        // Write destination objects for each page\n        var dests = [];\n        for (var i = 0; i < totalPages; i++) {\n          var id = pdf.internal.newObject();\n          dests.push(id);\n          var info = pdf.internal.getPageInfo(i + 1);\n          pdf.internal.write(\n            \"<< /D[\" + info.objId + \" 0 R /XYZ null null null]>> endobj\"\n          );\n        }\n\n        // assign a name for each destination\n        var names2Oid = pdf.internal.newObject();\n        pdf.internal.write(\"<< /Names [ \");\n        for (var i = 0; i < dests.length; i++) {\n          pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0 R\");\n        }\n        pdf.internal.write(\" ] >>\", \"endobj\");\n\n        // var kids = pdf.internal.newObject();\n        // pdf.internal.write('<< /Kids [ ' + names2Oid + ' 0 R');\n        // pdf.internal.write(' ] >>', 'endobj');\n\n        namesOid = pdf.internal.newObject();\n        pdf.internal.write(\"<< /Dests \" + names2Oid + \" 0 R\");\n        pdf.internal.write(\">>\", \"endobj\");\n      }\n    }\n  ]);\n\n  jsPDFAPI.events.push([\n    \"putCatalog\",\n    function() {\n      var pdf = this;\n      if (pdf.outline.root.children.length > 0) {\n        pdf.internal.write(\n          \"/Outlines\",\n          this.outline.makeRef(this.outline.root)\n        );\n        if (this.outline.createNamedDestinations) {\n          pdf.internal.write(\"/Names \" + namesOid + \" 0 R\");\n        }\n        // Open with Bookmarks showing\n        // pdf.internal.write(\"/PageMode /UseOutlines\");\n      }\n    }\n  ]);\n\n  jsPDFAPI.events.push([\n    \"initialized\",\n    function() {\n      var pdf = this;\n\n      pdf.outline = {\n        createNamedDestinations: false,\n        root: {\n          children: []\n        }\n      };\n\n      /**\n       * Options: pageNumber\n       */\n      pdf.outline.add = function(parent, title, options) {\n        var item = {\n          title: title,\n          options: options,\n          children: []\n        };\n        if (parent == null) {\n          parent = this.root;\n        }\n        parent.children.push(item);\n        return item;\n      };\n\n      pdf.outline.render = function() {\n        this.ctx = {};\n        this.ctx.val = \"\";\n        this.ctx.pdf = pdf;\n\n        this.genIds_r(this.root);\n        this.renderRoot(this.root);\n        this.renderItems(this.root);\n\n        return this.ctx.val;\n      };\n\n      pdf.outline.genIds_r = function(node) {\n        node.id = pdf.internal.newObjectDeferred();\n        for (var i = 0; i < node.children.length; i++) {\n          this.genIds_r(node.children[i]);\n        }\n      };\n\n      pdf.outline.renderRoot = function(node) {\n        this.objStart(node);\n        this.line(\"/Type /Outlines\");\n        if (node.children.length > 0) {\n          this.line(\"/First \" + this.makeRef(node.children[0]));\n          this.line(\n            \"/Last \" + this.makeRef(node.children[node.children.length - 1])\n          );\n        }\n        this.line(\n          \"/Count \" +\n            this.count_r(\n              {\n                count: 0\n              },\n              node\n            )\n        );\n        this.objEnd();\n      };\n\n      pdf.outline.renderItems = function(node) {\n        var getVerticalCoordinateString = this.ctx.pdf.internal\n          .getVerticalCoordinateString;\n        for (var i = 0; i < node.children.length; i++) {\n          var item = node.children[i];\n          this.objStart(item);\n\n          this.line(\"/Title \" + this.makeString(item.title));\n\n          this.line(\"/Parent \" + this.makeRef(node));\n          if (i > 0) {\n            this.line(\"/Prev \" + this.makeRef(node.children[i - 1]));\n          }\n          if (i < node.children.length - 1) {\n            this.line(\"/Next \" + this.makeRef(node.children[i + 1]));\n          }\n          if (item.children.length > 0) {\n            this.line(\"/First \" + this.makeRef(item.children[0]));\n            this.line(\n              \"/Last \" + this.makeRef(item.children[item.children.length - 1])\n            );\n          }\n\n          var count = (this.count = this.count_r(\n            {\n              count: 0\n            },\n            item\n          ));\n          if (count > 0) {\n            this.line(\"/Count \" + count);\n          }\n\n          if (item.options) {\n            if (item.options.pageNumber) {\n              // Explicit Destination\n              //WARNING this assumes page ids are 3,5,7, etc.\n              var info = pdf.internal.getPageInfo(item.options.pageNumber);\n              this.line(\n                \"/Dest \" +\n                  \"[\" +\n                  info.objId +\n                  \" 0 R /XYZ 0 \" +\n                  getVerticalCoordinateString(0) +\n                  \" 0]\"\n              );\n              // this line does not work on all clients (pageNumber instead of page ref)\n              //this.line('/Dest ' + '[' + (item.options.pageNumber - 1) + ' /XYZ 0 ' + this.ctx.pdf.internal.pageSize.getHeight() + ' 0]');\n\n              // Named Destination\n              // this.line('/Dest (page_' + (item.options.pageNumber) + ')');\n\n              // Action Destination\n              // var id = pdf.internal.newObject();\n              // pdf.internal.write('<</D[' + (item.options.pageNumber - 1) + ' /XYZ null null null]/S/GoTo>> endobj');\n              // this.line('/A ' + id + ' 0 R' );\n            }\n          }\n          this.objEnd();\n        }\n        for (var z = 0; z < node.children.length; z++) {\n          this.renderItems(node.children[z]);\n        }\n      };\n\n      pdf.outline.line = function(text) {\n        this.ctx.val += text + \"\\r\\n\";\n      };\n\n      pdf.outline.makeRef = function(node) {\n        return node.id + \" 0 R\";\n      };\n\n      pdf.outline.makeString = function(val) {\n        return \"(\" + pdf.internal.pdfEscape(val) + \")\";\n      };\n\n      pdf.outline.objStart = function(node) {\n        this.ctx.val += \"\\r\\n\" + node.id + \" 0 obj\" + \"\\r\\n<<\\r\\n\";\n      };\n\n      pdf.outline.objEnd = function() {\n        this.ctx.val += \">> \\r\\n\" + \"endobj\" + \"\\r\\n\";\n      };\n\n      pdf.outline.count_r = function(ctx, node) {\n        for (var i = 0; i < node.children.length; i++) {\n          ctx.count++;\n          this.count_r(ctx, node.children[i]);\n        }\n        return ctx.count;\n      };\n    }\n  ]);\n\n  return this;\n})(jsPDF.API);\n", "/**\n * @license\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF jpeg Support PlugIn\n *\n * @name jpeg_support\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * 0xc0 (SOF) Huffman  - Baseline DCT\n   * 0xc1 (SOF) Huffman  - Extended sequential DCT\n   * 0xc2 Progressive DCT (SOF2)\n   * 0xc3 Spatial (sequential) lossless (SOF3)\n   * 0xc4 Differential sequential DCT (SOF5)\n   * 0xc5 Differential progressive DCT (SOF6)\n   * 0xc6 Differential spatial (SOF7)\n   * 0xc7\n   */\n  var markers = [0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7];\n\n  //takes a string imgData containing the raw bytes of\n  //a jpeg image and returns [width, height]\n  //Algorithm from: http://www.64lines.com/jpeg-width-height\n  var getJpegInfo = function(imgData) {\n    var width, height, numcomponents;\n    var blockLength = imgData.charCodeAt(4) * 256 + imgData.charCodeAt(5);\n    var len = imgData.length;\n    var result = { width: 0, height: 0, numcomponents: 1 };\n    for (var i = 4; i < len; i += 2) {\n      i += blockLength;\n      if (markers.indexOf(imgData.charCodeAt(i + 1)) !== -1) {\n        height = imgData.charCodeAt(i + 5) * 256 + imgData.charCodeAt(i + 6);\n        width = imgData.charCodeAt(i + 7) * 256 + imgData.charCodeAt(i + 8);\n        numcomponents = imgData.charCodeAt(i + 9);\n        result = { width: width, height: height, numcomponents: numcomponents };\n        break;\n      } else {\n        blockLength =\n          imgData.charCodeAt(i + 2) * 256 + imgData.charCodeAt(i + 3);\n      }\n    }\n    return result;\n  };\n\n  /**\n   * @ignore\n   */\n  jsPDFAPI.processJPEG = function(\n    data,\n    index,\n    alias,\n    compression,\n    dataAsBinaryString,\n    colorSpace\n  ) {\n    var filter = this.decode.DCT_DECODE,\n      bpc = 8,\n      dims,\n      result = null;\n\n    if (\n      typeof data === \"string\" ||\n      this.__addimage__.isArrayBuffer(data) ||\n      this.__addimage__.isArrayBufferView(data)\n    ) {\n      // if we already have a stored binary string rep use that\n      data = dataAsBinaryString || data;\n      data = this.__addimage__.isArrayBuffer(data)\n        ? new Uint8Array(data)\n        : data;\n      data = this.__addimage__.isArrayBufferView(data)\n        ? this.__addimage__.arrayBufferToBinaryString(data)\n        : data;\n\n      dims = getJpegInfo(data);\n      switch (dims.numcomponents) {\n        case 1:\n          colorSpace = this.color_spaces.DEVICE_GRAY;\n          break;\n        case 4:\n          colorSpace = this.color_spaces.DEVICE_CMYK;\n          break;\n        case 3:\n          colorSpace = this.color_spaces.DEVICE_RGB;\n          break;\n      }\n\n      result = {\n        data: data,\n        width: dims.width,\n        height: dims.height,\n        colorSpace: colorSpace,\n        bitsPerComponent: bpc,\n        filter: filter,\n        index: index,\n        alias: alias\n      };\n    }\n    return result;\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { GifReader } from \"../libs/omggif.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\n\n/**\n * jsPDF Gif Support PlugIn\n *\n * @name gif_support\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  jsPDFAPI.processGIF89A = function(imageData, index, alias, compression) {\n    var reader = new GifReader(imageData);\n    var width = reader.width,\n      height = reader.height;\n    var qu = 100;\n    var pixels = [];\n\n    reader.decodeAndBlitFrameRGBA(0, pixels);\n    var rawImageData = {\n      data: pixels,\n      width: width,\n      height: height\n    };\n\n    var encoder = new JPEGEncoder(qu);\n    var data = encoder.encode(rawImageData, qu);\n    return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n  };\n\n  jsPDFAPI.processGIF87A = jsPDFAPI.processGIF89A;\n})(jsPDF.API);\n", "import { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { BmpDecoder } from \"../libs/BMPDecoder.js\";\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @license\n * Copyright (c) 2018 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF bmp Support PlugIn\n * @name bmp_support\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  jsPDFAPI.processBMP = function(imageData, index, alias, compression) {\n    var reader = new BmpDecoder(imageData, false);\n    var width = reader.width,\n      height = reader.height;\n    var qu = 100;\n    var pixels = reader.getData();\n\n    var rawImageData = {\n      data: pixels,\n      width: width,\n      height: height\n    };\n\n    var encoder = new JPEGEncoder(qu);\n    var data = encoder.encode(rawImageData, qu);\n    return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Copyright (c) 2019 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { WebPDecoder } from \"../libs/WebPDecoder.js\";\n\n/**\n * jsPDF webp Support PlugIn\n *\n * @name webp_support\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  jsPDFAPI.processWEBP = function(imageData, index, alias, compression) {\n    var reader = new WebPDecoder(imageData, false);\n    var width = reader.width,\n      height = reader.height;\n    var qu = 100;\n    var pixels = reader.getData();\n\n    var rawImageData = {\n      data: pixels,\n      width: width,\n      height: height\n    };\n\n    var encoder = new JPEGEncoder(qu);\n    var data = encoder.encode(rawImageData, qu);\n    return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n  };\n})(jsPDF.API);\n", "/**\n * @license\n *\n * Copyright (c) 2021 Antti Palola, https://github.com/Pantura\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF RGBA array PlugIn\n * @name rgba_support\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * @name processRGBA\n   * @function\n   *\n   * Process RGBA Array. This is a one-dimension array with pixel data [red, green, blue, alpha, red, green, ...].\n   * RGBA array data can be obtained from DOM canvas getImageData.\n   * @ignore\n   */\n  jsPDFAPI.processRGBA = function(imageData, index, alias) {\n    \"use strict\";\n\n    var imagePixels = imageData.data;\n    var length = imagePixels.length;\n    // jsPDF takes alpha data separately so extract that.\n    var rgbOut = new Uint8Array((length / 4) * 3);\n    var alphaOut = new Uint8Array(length / 4);\n    var outIndex = 0;\n    var alphaIndex = 0;\n\n    for (var i = 0; i < length; i += 4) {\n      var r = imagePixels[i];\n      var g = imagePixels[i + 1];\n      var b = imagePixels[i + 2];\n      var alpha = imagePixels[i + 3];\n      rgbOut[outIndex++] = r;\n      rgbOut[outIndex++] = g;\n      rgbOut[outIndex++] = b;\n      alphaOut[alphaIndex++] = alpha;\n    }\n\n    var rgbData = this.__addimage__.arrayBufferToBinaryString(rgbOut);\n    var alphaData = this.__addimage__.arrayBufferToBinaryString(alphaOut);\n\n    return {\n      alpha: alphaData,\n      data: rgbData,\n      index: index,\n      alias: alias,\n      colorSpace: \"DeviceRGB\",\n      bitsPerComponent: 8,\n      width: imageData.width,\n      height: imageData.height\n    };\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF setLanguage Plugin\n *\n * @name setLanguage\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  /**\n   * Add Language Tag to the generated PDF\n   *\n   * @name setLanguage\n   * @function\n   * @param {string} langCode The Language code as ISO-639-1 (e.g. 'en') or as country language code (e.g. 'en-GB').\n   * @returns {jsPDF}\n   * @example\n   * var doc = new jsPDF()\n   * doc.text(10, 10, 'This is a test')\n   * doc.setLanguage(\"en-US\")\n   * doc.save('english.pdf')\n   */\n  jsPDFAPI.setLanguage = function(langCode) {\n    \"use strict\";\n\n    var langCodes = {\n      af: \"Afrikaans\",\n      sq: \"Albanian\",\n      ar: \"Arabic (Standard)\",\n      \"ar-DZ\": \"Arabic (Algeria)\",\n      \"ar-BH\": \"Arabic (Bahrain)\",\n      \"ar-EG\": \"Arabic (Egypt)\",\n      \"ar-IQ\": \"Arabic (Iraq)\",\n      \"ar-JO\": \"Arabic (Jordan)\",\n      \"ar-KW\": \"Arabic (Kuwait)\",\n      \"ar-LB\": \"Arabic (Lebanon)\",\n      \"ar-LY\": \"Arabic (Libya)\",\n      \"ar-MA\": \"Arabic (Morocco)\",\n      \"ar-OM\": \"Arabic (Oman)\",\n      \"ar-QA\": \"Arabic (Qatar)\",\n      \"ar-SA\": \"Arabic (Saudi Arabia)\",\n      \"ar-SY\": \"Arabic (Syria)\",\n      \"ar-TN\": \"Arabic (Tunisia)\",\n      \"ar-AE\": \"Arabic (U.A.E.)\",\n      \"ar-YE\": \"Arabic (Yemen)\",\n      an: \"Aragonese\",\n      hy: \"Armenian\",\n      as: \"Assamese\",\n      ast: \"Asturian\",\n      az: \"Azerbaijani\",\n      eu: \"Basque\",\n      be: \"Belarusian\",\n      bn: \"Bengali\",\n      bs: \"Bosnian\",\n      br: \"Breton\",\n      bg: \"Bulgarian\",\n      my: \"Burmese\",\n      ca: \"Catalan\",\n      ch: \"Chamorro\",\n      ce: \"Chechen\",\n      zh: \"Chinese\",\n      \"zh-HK\": \"Chinese (Hong Kong)\",\n      \"zh-CN\": \"Chinese (PRC)\",\n      \"zh-SG\": \"Chinese (Singapore)\",\n      \"zh-TW\": \"Chinese (Taiwan)\",\n      cv: \"Chuvash\",\n      co: \"Corsican\",\n      cr: \"Cree\",\n      hr: \"Croatian\",\n      cs: \"Czech\",\n      da: \"Danish\",\n      nl: \"Dutch (Standard)\",\n      \"nl-BE\": \"Dutch (Belgian)\",\n      en: \"English\",\n      \"en-AU\": \"English (Australia)\",\n      \"en-BZ\": \"English (Belize)\",\n      \"en-CA\": \"English (Canada)\",\n      \"en-IE\": \"English (Ireland)\",\n      \"en-JM\": \"English (Jamaica)\",\n      \"en-NZ\": \"English (New Zealand)\",\n      \"en-PH\": \"English (Philippines)\",\n      \"en-ZA\": \"English (South Africa)\",\n      \"en-TT\": \"English (Trinidad & Tobago)\",\n      \"en-GB\": \"English (United Kingdom)\",\n      \"en-US\": \"English (United States)\",\n      \"en-ZW\": \"English (Zimbabwe)\",\n      eo: \"Esperanto\",\n      et: \"Estonian\",\n      fo: \"Faeroese\",\n      fj: \"Fijian\",\n      fi: \"Finnish\",\n      fr: \"French (Standard)\",\n      \"fr-BE\": \"French (Belgium)\",\n      \"fr-CA\": \"French (Canada)\",\n      \"fr-FR\": \"French (France)\",\n      \"fr-LU\": \"French (Luxembourg)\",\n      \"fr-MC\": \"French (Monaco)\",\n      \"fr-CH\": \"French (Switzerland)\",\n      fy: \"Frisian\",\n      fur: \"Friulian\",\n      gd: \"Gaelic (Scots)\",\n      \"gd-IE\": \"Gaelic (Irish)\",\n      gl: \"Galacian\",\n      ka: \"Georgian\",\n      de: \"German (Standard)\",\n      \"de-AT\": \"German (Austria)\",\n      \"de-DE\": \"German (Germany)\",\n      \"de-LI\": \"German (Liechtenstein)\",\n      \"de-LU\": \"German (Luxembourg)\",\n      \"de-CH\": \"German (Switzerland)\",\n      el: \"Greek\",\n      gu: \"Gujurati\",\n      ht: \"Haitian\",\n      he: \"Hebrew\",\n      hi: \"Hindi\",\n      hu: \"Hungarian\",\n      is: \"Icelandic\",\n      id: \"Indonesian\",\n      iu: \"Inuktitut\",\n      ga: \"Irish\",\n      it: \"Italian (Standard)\",\n      \"it-CH\": \"Italian (Switzerland)\",\n      ja: \"Japanese\",\n      kn: \"Kannada\",\n      ks: \"Kashmiri\",\n      kk: \"Kazakh\",\n      km: \"Khmer\",\n      ky: \"Kirghiz\",\n      tlh: \"Klingon\",\n      ko: \"Korean\",\n      \"ko-KP\": \"Korean (North Korea)\",\n      \"ko-KR\": \"Korean (South Korea)\",\n      la: \"Latin\",\n      lv: \"Latvian\",\n      lt: \"Lithuanian\",\n      lb: \"Luxembourgish\",\n      mk: \"North Macedonia\",\n      ms: \"Malay\",\n      ml: \"Malayalam\",\n      mt: \"Maltese\",\n      mi: \"Maori\",\n      mr: \"Marathi\",\n      mo: \"Moldavian\",\n      nv: \"Navajo\",\n      ng: \"Ndonga\",\n      ne: \"Nepali\",\n      no: \"Norwegian\",\n      nb: \"Norwegian (Bokmal)\",\n      nn: \"Norwegian (Nynorsk)\",\n      oc: \"Occitan\",\n      or: \"Oriya\",\n      om: \"Oromo\",\n      fa: \"Persian\",\n      \"fa-IR\": \"Persian/Iran\",\n      pl: \"Polish\",\n      pt: \"Portuguese\",\n      \"pt-BR\": \"Portuguese (Brazil)\",\n      pa: \"Punjabi\",\n      \"pa-IN\": \"Punjabi (India)\",\n      \"pa-PK\": \"Punjabi (Pakistan)\",\n      qu: \"Quechua\",\n      rm: \"Rhaeto-Romanic\",\n      ro: \"Romanian\",\n      \"ro-MO\": \"Romanian (Moldavia)\",\n      ru: \"Russian\",\n      \"ru-MO\": \"Russian (Moldavia)\",\n      sz: \"Sami (Lappish)\",\n      sg: \"Sango\",\n      sa: \"Sanskrit\",\n      sc: \"Sardinian\",\n      sd: \"Sindhi\",\n      si: \"Singhalese\",\n      sr: \"Serbian\",\n      sk: \"Slovak\",\n      sl: \"Slovenian\",\n      so: \"Somani\",\n      sb: \"Sorbian\",\n      es: \"Spanish\",\n      \"es-AR\": \"Spanish (Argentina)\",\n      \"es-BO\": \"Spanish (Bolivia)\",\n      \"es-CL\": \"Spanish (Chile)\",\n      \"es-CO\": \"Spanish (Colombia)\",\n      \"es-CR\": \"Spanish (Costa Rica)\",\n      \"es-DO\": \"Spanish (Dominican Republic)\",\n      \"es-EC\": \"Spanish (Ecuador)\",\n      \"es-SV\": \"Spanish (El Salvador)\",\n      \"es-GT\": \"Spanish (Guatemala)\",\n      \"es-HN\": \"Spanish (Honduras)\",\n      \"es-MX\": \"Spanish (Mexico)\",\n      \"es-NI\": \"Spanish (Nicaragua)\",\n      \"es-PA\": \"Spanish (Panama)\",\n      \"es-PY\": \"Spanish (Paraguay)\",\n      \"es-PE\": \"Spanish (Peru)\",\n      \"es-PR\": \"Spanish (Puerto Rico)\",\n      \"es-ES\": \"Spanish (Spain)\",\n      \"es-UY\": \"Spanish (Uruguay)\",\n      \"es-VE\": \"Spanish (Venezuela)\",\n      sx: \"Sutu\",\n      sw: \"Swahili\",\n      sv: \"Swedish\",\n      \"sv-FI\": \"Swedish (Finland)\",\n      \"sv-SV\": \"Swedish (Sweden)\",\n      ta: \"Tamil\",\n      tt: \"Tatar\",\n      te: \"Teluga\",\n      th: \"Thai\",\n      tig: \"Tigre\",\n      ts: \"Tsonga\",\n      tn: \"Tswana\",\n      tr: \"Turkish\",\n      tk: \"Turkmen\",\n      uk: \"Ukrainian\",\n      hsb: \"Upper Sorbian\",\n      ur: \"Urdu\",\n      ve: \"Venda\",\n      vi: \"Vietnamese\",\n      vo: \"Volapuk\",\n      wa: \"Walloon\",\n      cy: \"Welsh\",\n      xh: \"Xhosa\",\n      ji: \"Yiddish\",\n      zu: \"Zulu\"\n    };\n\n    if (this.internal.languageSettings === undefined) {\n      this.internal.languageSettings = {};\n      this.internal.languageSettings.isSubscribed = false;\n    }\n\n    if (langCodes[langCode] !== undefined) {\n      this.internal.languageSettings.languageCode = langCode;\n      if (this.internal.languageSettings.isSubscribed === false) {\n        this.internal.events.subscribe(\"putCatalog\", function() {\n          this.internal.write(\n            \"/Lang (\" + this.internal.languageSettings.languageCode + \")\"\n          );\n        });\n        this.internal.languageSettings.isSubscribed = true;\n      }\n    }\n    return this;\n  };\n})(jsPDF.API);\n", "/** @license\n jsPDF standard_fonts_metrics plugin\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n * MIT license.\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n * \n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * This file adds the standard font metrics to jsPDF.\n *\n * Font metrics data is reprocessed derivative of contents of\n * \"Font Metrics for PDF Core 14 Fonts\" package, which exhibits the following copyright and license:\n *\n * Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\n *\n * This file and the 14 PostScript(R) AFM files it accompanies may be used,\n * copied, and distributed for any purpose and without charge, with or without\n * modification, provided that all copyright notices are retained; that the AFM\n * files are not distributed without this file; that all modifications to this\n * file or any of the AFM files are prominently noted in the modified file(s);\n * and that this paragraph is not modified. Adobe Systems has no responsibility\n * or obligation to support the use of the AFM files.\n *\n * @name standard_fonts_metrics\n * @module\n */\n\n(function(API) {\n  \"use strict\";\n  API.__fontmetrics__ = API.__fontmetrics__ || {};\n\n  var decoded = \"0123456789abcdef\",\n    encoded = \"klmnopqrstuvwxyz\",\n    mappingUncompress = {},\n    mappingCompress = {};\n\n  for (var i = 0; i < encoded.length; i++) {\n    mappingUncompress[encoded[i]] = decoded[i];\n    mappingCompress[decoded[i]] = encoded[i];\n  }\n\n  var hex = function(value) {\n    return \"0x\" + parseInt(value, 10).toString(16);\n  };\n\n  var compress = (API.__fontmetrics__.compress = function(data) {\n    var vals = [\"{\"];\n    var value, keystring, valuestring, numberprefix;\n\n    for (var key in data) {\n      value = data[key];\n\n      if (!isNaN(parseInt(key, 10))) {\n        key = parseInt(key, 10);\n        keystring = hex(key).slice(2);\n        keystring =\n          keystring.slice(0, -1) + mappingCompress[keystring.slice(-1)];\n      } else {\n        keystring = \"'\" + key + \"'\";\n      }\n\n      if (typeof value == \"number\") {\n        if (value < 0) {\n          valuestring = hex(value).slice(3);\n          numberprefix = \"-\";\n        } else {\n          valuestring = hex(value).slice(2);\n          numberprefix = \"\";\n        }\n        valuestring =\n          numberprefix +\n          valuestring.slice(0, -1) +\n          mappingCompress[valuestring.slice(-1)];\n      } else {\n        if (typeof value === \"object\") {\n          valuestring = compress(value);\n        } else {\n          throw new Error(\n            \"Don't know what to do with value type \" + typeof value + \".\"\n          );\n        }\n      }\n      vals.push(keystring + valuestring);\n    }\n    vals.push(\"}\");\n    return vals.join(\"\");\n  });\n\n  /**\n   * Uncompresses data compressed into custom, base16-like format.\n   *\n   * @public\n   * @function\n   * @param\n   * @returns {Type}\n   */\n  var uncompress = (API.__fontmetrics__.uncompress = function(data) {\n    if (typeof data !== \"string\") {\n      throw new Error(\"Invalid argument passed to uncompress.\");\n    }\n\n    var output = {},\n      sign = 1,\n      stringparts, // undef. will be [] in string mode\n      activeobject = output,\n      parentchain = [],\n      parent_key_pair,\n      keyparts = \"\",\n      valueparts = \"\",\n      key, // undef. will be Truthy when Key is resolved.\n      datalen = data.length - 1, // stripping ending }\n      ch;\n\n    for (var i = 1; i < datalen; i += 1) {\n      // - { } ' are special.\n\n      ch = data[i];\n\n      if (ch == \"'\") {\n        if (stringparts) {\n          // end of string mode\n          key = stringparts.join(\"\");\n          stringparts = undefined;\n        } else {\n          // start of string mode\n          stringparts = [];\n        }\n      } else if (stringparts) {\n        stringparts.push(ch);\n      } else if (ch == \"{\") {\n        // start of object\n        parentchain.push([activeobject, key]);\n        activeobject = {};\n        key = undefined;\n      } else if (ch == \"}\") {\n        // end of object\n        parent_key_pair = parentchain.pop();\n        parent_key_pair[0][parent_key_pair[1]] = activeobject;\n        key = undefined;\n        activeobject = parent_key_pair[0];\n      } else if (ch == \"-\") {\n        sign = -1;\n      } else {\n        // must be number\n        if (key === undefined) {\n          if (mappingUncompress.hasOwnProperty(ch)) {\n            keyparts += mappingUncompress[ch];\n            key = parseInt(keyparts, 16) * sign;\n            sign = +1;\n            keyparts = \"\";\n          } else {\n            keyparts += ch;\n          }\n        } else {\n          if (mappingUncompress.hasOwnProperty(ch)) {\n            valueparts += mappingUncompress[ch];\n            activeobject[key] = parseInt(valueparts, 16) * sign;\n            sign = +1;\n            key = undefined;\n            valueparts = \"\";\n          } else {\n            valueparts += ch;\n          }\n        }\n      }\n    }\n    return output;\n  });\n\n  // encoding = 'Unicode'\n  // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE. NO clever BOM behavior\n  // Actual 16bit char codes used.\n  // no multi-byte logic here\n\n  // Unicode characters to WinAnsiEncoding:\n  // {402: 131, 8211: 150, 8212: 151, 8216: 145, 8217: 146, 8218: 130, 8220: 147, 8221: 148, 8222: 132, 8224: 134, 8225: 135, 8226: 149, 8230: 133, 8364: 128, 8240:137, 8249: 139, 8250: 155, 710: 136, 8482: 153, 338: 140, 339: 156, 732: 152, 352: 138, 353: 154, 376: 159, 381: 142, 382: 158}\n  // as you can see, all Unicode chars are outside of 0-255 range. No char code conflicts.\n  // this means that you can give Win cp1252 encoded strings to jsPDF for rendering directly\n  // as well as give strings with some (supported by these fonts) Unicode characters and\n  // these will be mapped to win cp1252\n  // for example, you can send char code (cp1252) 0x80 or (unicode) 0x20AC, getting \"Euro\" glyph displayed in both cases.\n\n  var encodingBlock = {\n    codePages: [\"WinAnsiEncoding\"],\n    WinAnsiEncoding: uncompress(\n      \"{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}\"\n    )\n  };\n  var encodings = {\n    Unicode: {\n      Courier: encodingBlock,\n      \"Courier-Bold\": encodingBlock,\n      \"Courier-BoldOblique\": encodingBlock,\n      \"Courier-Oblique\": encodingBlock,\n      Helvetica: encodingBlock,\n      \"Helvetica-Bold\": encodingBlock,\n      \"Helvetica-BoldOblique\": encodingBlock,\n      \"Helvetica-Oblique\": encodingBlock,\n      \"Times-Roman\": encodingBlock,\n      \"Times-Bold\": encodingBlock,\n      \"Times-BoldItalic\": encodingBlock,\n      \"Times-Italic\": encodingBlock\n      //\t, 'Symbol'\n      //\t, 'ZapfDingbats'\n    }\n  };\n\n  var fontMetrics = {\n    Unicode: {\n      // all sizing numbers are n/fontMetricsFractionOf = one font size unit\n      // this means that if fontMetricsFractionOf = 1000, and letter A's width is 476, it's\n      // width is 476/1000 or 47.6% of its height (regardless of font size)\n      // At this time this value applies to \"widths\" and \"kerning\" numbers.\n\n      // char code 0 represents \"default\" (average) width - use it for chars missing in this table.\n      // key 'fof' represents the \"fontMetricsFractionOf\" value\n\n      \"Courier-Oblique\": uncompress(\n        \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n      ),\n      \"Times-BoldItalic\": uncompress(\n        \"{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}\"\n      ),\n      \"Helvetica-Bold\": uncompress(\n        \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n      ),\n      Courier: uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n      \"Courier-BoldOblique\": uncompress(\n        \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n      ),\n      \"Times-Bold\": uncompress(\n        \"{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}\"\n      ),\n      Symbol: uncompress(\n        \"{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}\"\n      ),\n      Helvetica: uncompress(\n        \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n      ),\n      \"Helvetica-BoldOblique\": uncompress(\n        \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n      ),\n      ZapfDingbats: uncompress(\"{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}\"),\n      \"Courier-Bold\": uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n      \"Times-Italic\": uncompress(\n        \"{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}\"\n      ),\n      \"Times-Roman\": uncompress(\n        \"{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}\"\n      ),\n      \"Helvetica-Oblique\": uncompress(\n        \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n      )\n    }\n  };\n\n  /*\n\tThis event handler is fired when a new jsPDF object is initialized\n\tThis event handler appends metrics data to standard fonts within\n\tthat jsPDF instance. The metrics are mapped over Unicode character\n\tcodes, NOT CIDs or other codes matching the StandardEncoding table of the\n\tstandard PDF fonts.\n\tFuture:\n\tAlso included is the encoding maping table, converting Unicode (UCS-2, UTF-16)\n\tchar codes to StandardEncoding character codes. The encoding table is to be used\n\tsomewhere around \"pdfEscape\" call.\n\t*/\n  API.events.push([\n    \"addFont\",\n    function(data) {\n      var font = data.font;\n\n      var metrics = fontMetrics[\"Unicode\"][font.postScriptName];\n      if (metrics) {\n        font.metadata[\"Unicode\"] = {};\n        font.metadata[\"Unicode\"].widths = metrics.widths;\n        font.metadata[\"Unicode\"].kerning = metrics.kerning;\n      }\n\n      var encodingBlock = encodings[\"Unicode\"][font.postScriptName];\n      if (encodingBlock) {\n        font.metadata[\"Unicode\"].encoding = encodingBlock;\n        font.encoding = encodingBlock.codePages[0];\n      }\n    }\n  ]); // end of adding event handler\n})(jsPDF.API);\n", "/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob } from \"../libs/AtobBtoa.js\";\n\n/**\n * @name ttfsupport\n * @module\n */\n(function(jsPDF) {\n  \"use strict\";\n\n  var binaryStringToUint8Array = function(binary_string) {\n    var len = binary_string.length;\n    var bytes = new Uint8Array(len);\n    for (var i = 0; i < len; i++) {\n      bytes[i] = binary_string.charCodeAt(i);\n    }\n    return bytes;\n  };\n\n  var addFont = function(font, file) {\n    // eslint-disable-next-line no-control-regex\n    if (/^\\x00\\x01\\x00\\x00/.test(file)) {\n      file = binaryStringToUint8Array(file);\n    } else {\n      file = binaryStringToUint8Array(atob(file));\n    }\n    font.metadata = jsPDF.API.TTFFont.open(file);\n    font.metadata.Unicode = font.metadata.Unicode || {\n      encoding: {},\n      kerning: {},\n      widths: []\n    };\n    font.metadata.glyIdsUsed = [0];\n  };\n\n  jsPDF.API.events.push([\n    \"addFont\",\n    function(data) {\n      var file = undefined;\n      var font = data.font;\n      var instance = data.instance;\n      if (font.isStandardFont) {\n        return;\n      }\n      if (typeof instance !== \"undefined\") {\n        if (instance.existsFileInVFS(font.postScriptName) === false) {\n          file = instance.loadFile(font.postScriptName);\n        } else {\n          file = instance.getFileFromVFS(font.postScriptName);\n        }\n        if (typeof file !== \"string\") {\n          throw new Error(\n            \"Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('\" +\n              font.postScriptName +\n              \"').\"\n          );\n        }\n        addFont(font, file);\n      } else {\n        throw new Error(\n          \"Font does not exist in vFS, import fonts or remove declaration doc.addFont('\" +\n            font.postScriptName +\n            \"').\"\n        );\n      }\n    }\n  ]); // end of adding event handler\n})(jsPDF);\n", "/** @license\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { console } from \"../libs/console.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF SVG plugin\n *\n * @name svg\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  function loadCanvg() {\n    return (function() {\n      if (globalObject[\"canvg\"]) {\n        return Promise.resolve(globalObject[\"canvg\"]);\n      }\n\n      return import(\"canvg\");\n\n    })()\n      .catch(function(e) {\n        return Promise.reject(new Error(\"Could not load canvg: \" + e));\n      })\n      .then(function(canvg) {\n        return canvg.default ? canvg.default : canvg;\n      });\n  }\n\n  /**\n   * Parses SVG XML and saves it as image into the PDF.\n   *\n   * Depends on canvas-element and canvg\n   *\n   * @name addSvgAsImage\n   * @public\n   * @function\n   * @param {string} SVG-Data as Text\n   * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\n   * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n   * @param {number} width of SVG-Image (in units declared at inception of PDF document)\n   * @param {number} height of SVG-Image (in units declared at inception of PDF document)\n   * @param {string} alias of SVG-Image (if used multiple times)\n   * @param {string} compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n   * @param {number} rotation of the image in degrees (0-359)\n   *\n   * @returns jsPDF jsPDF-instance\n   */\n  jsPDFAPI.addSvgAsImage = function(\n    svg,\n    x,\n    y,\n    w,\n    h,\n    alias,\n    compression,\n    rotation\n  ) {\n    if (isNaN(x) || isNaN(y)) {\n      console.error(\"jsPDF.addSvgAsImage: Invalid coordinates\", arguments);\n      throw new Error(\"Invalid coordinates passed to jsPDF.addSvgAsImage\");\n    }\n\n    if (isNaN(w) || isNaN(h)) {\n      console.error(\"jsPDF.addSvgAsImage: Invalid measurements\", arguments);\n      throw new Error(\n        \"Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage\"\n      );\n    }\n\n    var canvas = document.createElement(\"canvas\");\n    canvas.width = w;\n    canvas.height = h;\n    var ctx = canvas.getContext(\"2d\");\n    ctx.fillStyle = \"#fff\"; /// set white fill style\n    ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n    var options = {\n      ignoreMouse: true,\n      ignoreAnimation: true,\n      ignoreDimensions: true\n    };\n    var doc = this;\n    return loadCanvg()\n      .then(\n        function(canvg) {\n          return canvg.fromString(ctx, svg, options);\n        },\n        function() {\n          return Promise.reject(new Error(\"Could not load canvg.\"));\n        }\n      )\n      .then(function(instance) {\n        return instance.render(options);\n      })\n      .then(function() {\n        doc.addImage(\n          canvas.toDataURL(\"image/jpeg\", 1.0),\n          x,\n          y,\n          w,\n          h,\n          compression,\n          rotation\n        );\n      });\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF total_pages plugin\n * @name total_pages\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n  /**\n   * @name putTotalPages\n   * @function\n   * @param {string} pageExpression Regular Expression\n   * @returns {jsPDF} jsPDF-instance\n   */\n\n  jsPDFAPI.putTotalPages = function(pageExpression) {\n    \"use strict\";\n\n    var replaceExpression;\n    var totalNumberOfPages = 0;\n    if (parseInt(this.internal.getFont().id.substr(1), 10) < 15) {\n      replaceExpression = new RegExp(pageExpression, \"g\");\n      totalNumberOfPages = this.internal.getNumberOfPages();\n    } else {\n      replaceExpression = new RegExp(\n        this.pdfEscape16(pageExpression, this.internal.getFont()),\n        \"g\"\n      );\n      totalNumberOfPages = this.pdfEscape16(\n        this.internal.getNumberOfPages() + \"\",\n        this.internal.getFont()\n      );\n    }\n\n    for (var n = 1; n <= this.internal.getNumberOfPages(); n++) {\n      for (var i = 0; i < this.internal.pages[n].length; i++) {\n        this.internal.pages[n][i] = this.internal.pages[n][i].replace(\n          replaceExpression,\n          totalNumberOfPages\n        );\n      }\n    }\n\n    return this;\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * jsPDF viewerPreferences Plugin\n * @author Aras Abbasi (github.com/arasabbasi)\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Adds the ability to set ViewerPreferences and by thus\n * controlling the way the document is to be presented on the\n * screen or in print.\n * @name viewerpreferences\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n  /**\n   * Set the ViewerPreferences of the generated PDF\n   *\n   * @name viewerPreferences\n   * @function\n   * @public\n   * @param {Object} options Array with the ViewerPreferences<br />\n   * Example: doc.viewerPreferences({\"FitWindow\":true});<br />\n   * <br />\n   * You can set following preferences:<br />\n   * <br/>\n   * <b>HideToolbar</b> <i>(boolean)</i><br />\n   * Default value: false<br />\n   * <br />\n   * <b>HideMenubar</b> <i>(boolean)</i><br />\n   * Default value: false.<br />\n   * <br />\n   * <b>HideWindowUI</b> <i>(boolean)</i><br />\n   * Default value: false.<br />\n   * <br />\n   * <b>FitWindow</b> <i>(boolean)</i><br />\n   * Default value: false.<br />\n   * <br />\n   * <b>CenterWindow</b> <i>(boolean)</i><br />\n   * Default value: false<br />\n   * <br />\n   * <b>DisplayDocTitle</b> <i>(boolean)</i><br />\n   * Default value: false.<br />\n   * <br />\n   * <b>NonFullScreenPageMode</b> <i>(string)</i><br />\n   * Possible values: UseNone, UseOutlines, UseThumbs, UseOC<br />\n   * Default value: UseNone<br/>\n   * <br />\n   * <b>Direction</b> <i>(string)</i><br />\n   * Possible values: L2R, R2L<br />\n   * Default value: L2R.<br />\n   * <br />\n   * <b>ViewArea</b> <i>(string)</i><br />\n   * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox<br />\n   * Default value: CropBox.<br />\n   * <br />\n   * <b>ViewClip</b> <i>(string)</i><br />\n   * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox<br />\n   * Default value: CropBox<br />\n   * <br />\n   * <b>PrintArea</b> <i>(string)</i><br />\n   * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox<br />\n   * Default value: CropBox<br />\n   * <br />\n   * <b>PrintClip</b> <i>(string)</i><br />\n   * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox<br />\n   * Default value: CropBox.<br />\n   * <br />\n   * <b>PrintScaling</b> <i>(string)</i><br />\n   * Possible values: AppDefault, None<br />\n   * Default value: AppDefault.<br />\n   * <br />\n   * <b>Duplex</b> <i>(string)</i><br />\n   * Possible values: Simplex, DuplexFlipLongEdge, DuplexFlipShortEdge\n   * Default value: none<br />\n   * <br />\n   * <b>PickTrayByPDFSize</b> <i>(boolean)</i><br />\n   * Default value: false<br />\n   * <br />\n   * <b>PrintPageRange</b> <i>(Array)</i><br />\n   * Example: [[1,5], [7,9]]<br />\n   * Default value: as defined by PDF viewer application<br />\n   * <br />\n   * <b>NumCopies</b> <i>(Number)</i><br />\n   * Possible values: 1, 2, 3, 4, 5<br />\n   * Default value: 1<br />\n   * <br />\n   * For more information see the PDF Reference, sixth edition on Page 577\n   * @param {boolean} doReset True to reset the settings\n   * @function\n   * @returns jsPDF jsPDF-instance\n   * @example\n   * var doc = new jsPDF()\n   * doc.text('This is a test', 10, 10)\n   * doc.viewerPreferences({'FitWindow': true}, true)\n   * doc.save(\"viewerPreferences.pdf\")\n   *\n   * // Example printing 10 copies, using cropbox, and hiding UI.\n   * doc.viewerPreferences({\n   *   'HideWindowUI': true,\n   *   'PrintArea': 'CropBox',\n   *   'NumCopies': 10\n   * })\n   */\n  jsPDFAPI.viewerPreferences = function(options, doReset) {\n    options = options || {};\n    doReset = doReset || false;\n\n    var configuration;\n    var configurationTemplate = {\n      HideToolbar: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.3\n      },\n      HideMenubar: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.3\n      },\n      HideWindowUI: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.3\n      },\n      FitWindow: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.3\n      },\n      CenterWindow: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.3\n      },\n      DisplayDocTitle: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.4\n      },\n      NonFullScreenPageMode: {\n        defaultValue: \"UseNone\",\n        value: \"UseNone\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"UseNone\", \"UseOutlines\", \"UseThumbs\", \"UseOC\"],\n        pdfVersion: 1.3\n      },\n      Direction: {\n        defaultValue: \"L2R\",\n        value: \"L2R\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"L2R\", \"R2L\"],\n        pdfVersion: 1.3\n      },\n      ViewArea: {\n        defaultValue: \"CropBox\",\n        value: \"CropBox\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n        pdfVersion: 1.4\n      },\n      ViewClip: {\n        defaultValue: \"CropBox\",\n        value: \"CropBox\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n        pdfVersion: 1.4\n      },\n      PrintArea: {\n        defaultValue: \"CropBox\",\n        value: \"CropBox\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n        pdfVersion: 1.4\n      },\n      PrintClip: {\n        defaultValue: \"CropBox\",\n        value: \"CropBox\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n        pdfVersion: 1.4\n      },\n      PrintScaling: {\n        defaultValue: \"AppDefault\",\n        value: \"AppDefault\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\"AppDefault\", \"None\"],\n        pdfVersion: 1.6\n      },\n      Duplex: {\n        defaultValue: \"\",\n        value: \"none\",\n        type: \"name\",\n        explicitSet: false,\n        valueSet: [\n          \"Simplex\",\n          \"DuplexFlipShortEdge\",\n          \"DuplexFlipLongEdge\",\n          \"none\"\n        ],\n        pdfVersion: 1.7\n      },\n      PickTrayByPDFSize: {\n        defaultValue: false,\n        value: false,\n        type: \"boolean\",\n        explicitSet: false,\n        valueSet: [true, false],\n        pdfVersion: 1.7\n      },\n      PrintPageRange: {\n        defaultValue: \"\",\n        value: \"\",\n        type: \"array\",\n        explicitSet: false,\n        valueSet: null,\n        pdfVersion: 1.7\n      },\n      NumCopies: {\n        defaultValue: 1,\n        value: 1,\n        type: \"integer\",\n        explicitSet: false,\n        valueSet: null,\n        pdfVersion: 1.7\n      }\n    };\n\n    var configurationKeys = Object.keys(configurationTemplate);\n\n    var rangeArray = [];\n    var i = 0;\n    var j = 0;\n    var k = 0;\n    var isValid;\n\n    var method;\n    var value;\n\n    function arrayContainsElement(array, element) {\n      var iterator;\n      var result = false;\n\n      for (iterator = 0; iterator < array.length; iterator += 1) {\n        if (array[iterator] === element) {\n          result = true;\n        }\n      }\n      return result;\n    }\n\n    if (this.internal.viewerpreferences === undefined) {\n      this.internal.viewerpreferences = {};\n      this.internal.viewerpreferences.configuration = JSON.parse(\n        JSON.stringify(configurationTemplate)\n      );\n      this.internal.viewerpreferences.isSubscribed = false;\n    }\n    configuration = this.internal.viewerpreferences.configuration;\n\n    if (options === \"reset\" || doReset === true) {\n      var len = configurationKeys.length;\n\n      for (k = 0; k < len; k += 1) {\n        configuration[configurationKeys[k]].value =\n          configuration[configurationKeys[k]].defaultValue;\n        configuration[configurationKeys[k]].explicitSet = false;\n      }\n    }\n\n    if (typeof options === \"object\") {\n      for (method in options) {\n        value = options[method];\n        if (\n          arrayContainsElement(configurationKeys, method) &&\n          value !== undefined\n        ) {\n          if (\n            configuration[method].type === \"boolean\" &&\n            typeof value === \"boolean\"\n          ) {\n            configuration[method].value = value;\n          } else if (\n            configuration[method].type === \"name\" &&\n            arrayContainsElement(configuration[method].valueSet, value)\n          ) {\n            configuration[method].value = value;\n          } else if (\n            configuration[method].type === \"integer\" &&\n            Number.isInteger(value)\n          ) {\n            configuration[method].value = value;\n          } else if (configuration[method].type === \"array\") {\n            for (i = 0; i < value.length; i += 1) {\n              isValid = true;\n              if (value[i].length === 1 && typeof value[i][0] === \"number\") {\n                rangeArray.push(String(value[i] - 1));\n              } else if (value[i].length > 1) {\n                for (j = 0; j < value[i].length; j += 1) {\n                  if (typeof value[i][j] !== \"number\") {\n                    isValid = false;\n                  }\n                }\n                if (isValid === true) {\n                  rangeArray.push([value[i][0] - 1, value[i][1] - 1].join(\" \"));\n                }\n              }\n            }\n            configuration[method].value = \"[\" + rangeArray.join(\" \") + \"]\";\n          } else {\n            configuration[method].value = configuration[method].defaultValue;\n          }\n\n          configuration[method].explicitSet = true;\n        }\n      }\n    }\n\n    if (this.internal.viewerpreferences.isSubscribed === false) {\n      this.internal.events.subscribe(\"putCatalog\", function() {\n        var pdfDict = [];\n        var vPref;\n        for (vPref in configuration) {\n          if (configuration[vPref].explicitSet === true) {\n            if (configuration[vPref].type === \"name\") {\n              pdfDict.push(\"/\" + vPref + \" /\" + configuration[vPref].value);\n            } else {\n              pdfDict.push(\"/\" + vPref + \" \" + configuration[vPref].value);\n            }\n          }\n        }\n        if (pdfDict.length !== 0) {\n          this.internal.write(\n            \"/ViewerPreferences\\n<<\\n\" + pdfDict.join(\"\\n\") + \"\\n>>\"\n          );\n        }\n      });\n      this.internal.viewerpreferences.isSubscribed = true;\n    }\n\n    this.internal.viewerpreferences.configuration = configuration;\n    return this;\n  };\n})(jsPDF.API);\n", "import { jsPDF } from \"../jspdf.js\";\nimport { toPDFName } from \"../libs/pdfname.js\";\n\n/**\n * @name utf8\n * @module\n */\n(function(jsPDF) {\n  \"use strict\";\n  var jsPDFAPI = jsPDF.API;\n\n  /***************************************************************************************************/\n  /* function : pdfEscape16                                                                          */\n  /* comment : The character id of a 2-byte string is converted to a hexadecimal number by obtaining */\n  /*   the corresponding glyph id and width, and then adding padding to the string.                  */\n  /***************************************************************************************************/\n  var pdfEscape16 = (jsPDFAPI.pdfEscape16 = function(text, font) {\n    var widths = font.metadata.Unicode.widths;\n    var padz = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n    var ar = [\"\"];\n    for (var i = 0, l = text.length, t; i < l; ++i) {\n      t = font.metadata.characterToGlyph(text.charCodeAt(i));\n      font.metadata.glyIdsUsed.push(t);\n      font.metadata.toUnicode[t] = text.charCodeAt(i);\n      if (widths.indexOf(t) == -1) {\n        widths.push(t);\n        widths.push([parseInt(font.metadata.widthOfGlyph(t), 10)]);\n      }\n      if (t == \"0\") {\n        //Spaces are not allowed in cmap.\n        return ar.join(\"\");\n      } else {\n        t = t.toString(16);\n        ar.push(padz[4 - t.length], t);\n      }\n    }\n    return ar.join(\"\");\n  });\n\n  var toUnicodeCmap = function(map) {\n    var code, codes, range, unicode, unicodeMap, _i, _len;\n    unicodeMap =\n      \"/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n  /Registry (Adobe)\\n  /Ordering (UCS)\\n  /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000><ffff>\\nendcodespacerange\";\n    codes = Object.keys(map).sort(function(a, b) {\n      return a - b;\n    });\n\n    range = [];\n    for (_i = 0, _len = codes.length; _i < _len; _i++) {\n      code = codes[_i];\n      if (range.length >= 100) {\n        unicodeMap +=\n          \"\\n\" +\n          range.length +\n          \" beginbfchar\\n\" +\n          range.join(\"\\n\") +\n          \"\\nendbfchar\";\n        range = [];\n      }\n\n      if (\n        map[code] !== undefined &&\n        map[code] !== null &&\n        typeof map[code].toString === \"function\"\n      ) {\n        unicode = (\"0000\" + map[code].toString(16)).slice(-4);\n        code = (\"0000\" + (+code).toString(16)).slice(-4);\n        range.push(\"<\" + code + \"><\" + unicode + \">\");\n      }\n    }\n\n    if (range.length) {\n      unicodeMap +=\n        \"\\n\" +\n        range.length +\n        \" beginbfchar\\n\" +\n        range.join(\"\\n\") +\n        \"\\nendbfchar\\n\";\n    }\n    unicodeMap +=\n      \"endcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\";\n    return unicodeMap;\n  };\n\n  var identityHFunction = function(options) {\n    var font = options.font;\n    var out = options.out;\n    var newObject = options.newObject;\n    var putStream = options.putStream;\n\n    if (\n      font.metadata instanceof jsPDF.API.TTFFont &&\n      font.encoding === \"Identity-H\"\n    ) {\n      //Tag with Identity-H\n      var widths = font.metadata.Unicode.widths;\n      var data = font.metadata.subset.encode(font.metadata.glyIdsUsed, 1);\n      var pdfOutput = data;\n      var pdfOutput2 = \"\";\n      for (var i = 0; i < pdfOutput.length; i++) {\n        pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n      }\n      var fontTable = newObject();\n      putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n      out(\"endobj\");\n\n      var cmap = newObject();\n      var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n      putStream({ data: cmapData, addLength1: true, objectId: cmap });\n      out(\"endobj\");\n\n      var fontDescriptor = newObject();\n      out(\"<<\");\n      out(\"/Type /FontDescriptor\");\n      out(\"/FontName /\" + toPDFName(font.fontName));\n      out(\"/FontFile2 \" + fontTable + \" 0 R\");\n      out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n      out(\"/Flags \" + font.metadata.flags);\n      out(\"/StemV \" + font.metadata.stemV);\n      out(\"/ItalicAngle \" + font.metadata.italicAngle);\n      out(\"/Ascent \" + font.metadata.ascender);\n      out(\"/Descent \" + font.metadata.decender);\n      out(\"/CapHeight \" + font.metadata.capHeight);\n      out(\">>\");\n      out(\"endobj\");\n\n      var DescendantFont = newObject();\n      out(\"<<\");\n      out(\"/Type /Font\");\n      out(\"/BaseFont /\" + toPDFName(font.fontName));\n      out(\"/FontDescriptor \" + fontDescriptor + \" 0 R\");\n      out(\"/W \" + jsPDF.API.PDFObject.convert(widths));\n      out(\"/CIDToGIDMap /Identity\");\n      out(\"/DW 1000\");\n      out(\"/Subtype /CIDFontType2\");\n      out(\"/CIDSystemInfo\");\n      out(\"<<\");\n      out(\"/Supplement 0\");\n      out(\"/Registry (Adobe)\");\n      out(\"/Ordering (\" + font.encoding + \")\");\n      out(\">>\");\n      out(\">>\");\n      out(\"endobj\");\n\n      font.objectNumber = newObject();\n      out(\"<<\");\n      out(\"/Type /Font\");\n      out(\"/Subtype /Type0\");\n      out(\"/ToUnicode \" + cmap + \" 0 R\");\n      out(\"/BaseFont /\" + toPDFName(font.fontName));\n      out(\"/Encoding /\" + font.encoding);\n      out(\"/DescendantFonts [\" + DescendantFont + \" 0 R]\");\n      out(\">>\");\n      out(\"endobj\");\n\n      font.isAlreadyPutted = true;\n    }\n  };\n\n  jsPDFAPI.events.push([\n    \"putFont\",\n    function(args) {\n      identityHFunction(args);\n    }\n  ]);\n\n  var winAnsiEncodingFunction = function(options) {\n    var font = options.font;\n    var out = options.out;\n    var newObject = options.newObject;\n    var putStream = options.putStream;\n\n    if (\n      font.metadata instanceof jsPDF.API.TTFFont &&\n      font.encoding === \"WinAnsiEncoding\"\n    ) {\n      //Tag with WinAnsi encoding\n      var data = font.metadata.rawData;\n      var pdfOutput = data;\n      var pdfOutput2 = \"\";\n      for (var i = 0; i < pdfOutput.length; i++) {\n        pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n      }\n      var fontTable = newObject();\n      putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n      out(\"endobj\");\n\n      var cmap = newObject();\n      var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n      putStream({ data: cmapData, addLength1: true, objectId: cmap });\n      out(\"endobj\");\n\n      var fontDescriptor = newObject();\n      out(\"<<\");\n      out(\"/Descent \" + font.metadata.decender);\n      out(\"/CapHeight \" + font.metadata.capHeight);\n      out(\"/StemV \" + font.metadata.stemV);\n      out(\"/Type /FontDescriptor\");\n      out(\"/FontFile2 \" + fontTable + \" 0 R\");\n      out(\"/Flags 96\");\n      out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n      out(\"/FontName /\" + toPDFName(font.fontName));\n      out(\"/ItalicAngle \" + font.metadata.italicAngle);\n      out(\"/Ascent \" + font.metadata.ascender);\n      out(\">>\");\n      out(\"endobj\");\n      font.objectNumber = newObject();\n      for (var j = 0; j < font.metadata.hmtx.widths.length; j++) {\n        font.metadata.hmtx.widths[j] = parseInt(\n          font.metadata.hmtx.widths[j] * (1000 / font.metadata.head.unitsPerEm)\n        ); //Change the width of Em units to Point units.\n      }\n      out(\n        \"<</Subtype/TrueType/Type/Font/ToUnicode \" +\n          cmap +\n          \" 0 R/BaseFont/\" +\n          toPDFName(font.fontName) +\n          \"/FontDescriptor \" +\n          fontDescriptor +\n          \" 0 R\" +\n          \"/Encoding/\" +\n          font.encoding +\n          \" /FirstChar 29 /LastChar 255 /Widths \" +\n          jsPDF.API.PDFObject.convert(font.metadata.hmtx.widths) +\n          \">>\"\n      );\n      out(\"endobj\");\n      font.isAlreadyPutted = true;\n    }\n  };\n\n  jsPDFAPI.events.push([\n    \"putFont\",\n    function(args) {\n      winAnsiEncodingFunction(args);\n    }\n  ]);\n\n  var utf8TextFunction = function(args) {\n    var text = args.text || \"\";\n    var x = args.x;\n    var y = args.y;\n    var options = args.options || {};\n    var mutex = args.mutex || {};\n\n    var pdfEscape = mutex.pdfEscape;\n    var activeFontKey = mutex.activeFontKey;\n    var fonts = mutex.fonts;\n    var key = activeFontKey;\n\n    var str = \"\",\n      s = 0,\n      cmapConfirm;\n    var strText = \"\";\n    var encoding = fonts[key].encoding;\n\n    if (fonts[key].encoding !== \"Identity-H\") {\n      return {\n        text: text,\n        x: x,\n        y: y,\n        options: options,\n        mutex: mutex\n      };\n    }\n    strText = text;\n\n    key = activeFontKey;\n    if (Array.isArray(text)) {\n      strText = text[0];\n    }\n    for (s = 0; s < strText.length; s += 1) {\n      if (fonts[key].metadata.hasOwnProperty(\"cmap\")) {\n        cmapConfirm =\n          fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)];\n        /*\n             if (Object.prototype.toString.call(text) === '[object Array]') {\n                var i = 0;\n               // for (i = 0; i < text.length; i += 1) {\n                    if (Object.prototype.toString.call(text[s]) === '[object Array]') {\n                        cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s][0].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n                    } else {\n\n                    }\n                //}\n\n            } else {\n                cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n            }*/\n      }\n      if (!cmapConfirm) {\n        if (\n          strText[s].charCodeAt(0) < 256 &&\n          fonts[key].metadata.hasOwnProperty(\"Unicode\")\n        ) {\n          str += strText[s];\n        } else {\n          str += \"\";\n        }\n      } else {\n        str += strText[s];\n      }\n    }\n    var result = \"\";\n    if (parseInt(key.slice(1)) < 14 || encoding === \"WinAnsiEncoding\") {\n      //For the default 13 font\n      result = pdfEscape(str, key)\n        .split(\"\")\n        .map(function(cv) {\n          return cv.charCodeAt(0).toString(16);\n        })\n        .join(\"\");\n    } else if (encoding === \"Identity-H\") {\n      result = pdfEscape16(str, fonts[key]);\n    }\n    mutex.isHex = true;\n\n    return {\n      text: result,\n      x: x,\n      y: y,\n      options: options,\n      mutex: mutex\n    };\n  };\n\n  var utf8EscapeFunction = function(parms) {\n    var text = parms.text || \"\",\n      x = parms.x,\n      y = parms.y,\n      options = parms.options,\n      mutex = parms.mutex;\n    var tmpText = [];\n    var args = {\n      text: text,\n      x: x,\n      y: y,\n      options: options,\n      mutex: mutex\n    };\n\n    if (Array.isArray(text)) {\n      var i = 0;\n      for (i = 0; i < text.length; i += 1) {\n        if (Array.isArray(text[i])) {\n          if (text[i].length === 3) {\n            tmpText.push([\n              utf8TextFunction(Object.assign({}, args, { text: text[i][0] }))\n                .text,\n              text[i][1],\n              text[i][2]\n            ]);\n          } else {\n            tmpText.push(\n              utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n            );\n          }\n        } else {\n          tmpText.push(\n            utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n          );\n        }\n      }\n      parms.text = tmpText;\n    } else {\n      parms.text = utf8TextFunction(\n        Object.assign({}, args, { text: text })\n      ).text;\n    }\n  };\n\n  jsPDFAPI.events.push([\"postProcessText\", utf8EscapeFunction]);\n})(jsPDF);\n", "/**\n * @license\n * jsPDF virtual FileSystem functionality\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Use the vFS to handle files\n *\n * @name vFS\n * @module\n */\n(function(jsPDFAPI) {\n  \"use strict\";\n\n  var _initializeVFS = function() {\n    if (typeof this.internal.vFS === \"undefined\") {\n      this.internal.vFS = {};\n    }\n    return true;\n  };\n\n  /**\n   * Check if the file exists in the vFS\n   *\n   * @name existsFileInVFS\n   * @function\n   * @param {string} Possible filename in the vFS.\n   * @returns {boolean}\n   * @example\n   * doc.existsFileInVFS(\"someFile.txt\");\n   */\n  jsPDFAPI.existsFileInVFS = function(filename) {\n    _initializeVFS.call(this);\n    return typeof this.internal.vFS[filename] !== \"undefined\";\n  };\n\n  /**\n   * Add a file to the vFS\n   *\n   * @name addFileToVFS\n   * @function\n   * @param {string} filename The name of the file which should be added.\n   * @param {string} filecontent The content of the file.\n   * @returns {jsPDF}\n   * @example\n   * doc.addFileToVFS(\"someFile.txt\", \"BADFACE1\");\n   */\n  jsPDFAPI.addFileToVFS = function(filename, filecontent) {\n    _initializeVFS.call(this);\n    this.internal.vFS[filename] = filecontent;\n    return this;\n  };\n\n  /**\n   * Get the file from the vFS\n   *\n   * @name getFileFromVFS\n   * @function\n   * @param {string} The name of the file which gets requested.\n   * @returns {string}\n   * @example\n   * doc.getFileFromVFS(\"someFile.txt\");\n   */\n  jsPDFAPI.getFileFromVFS = function(filename) {\n    _initializeVFS.call(this);\n\n    if (typeof this.internal.vFS[filename] !== \"undefined\") {\n      return this.internal.vFS[filename];\n    }\n    return null;\n  };\n})(jsPDF.API);\n", "/**\n * @license\n * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)\n * MIT License\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDF) {\n  \"use strict\";\n  /**\n   * Table of Unicode types.\n   *\n   * Generated by:\n   *\n   * var bidi = require(\"./bidi/index\");\n   * var bidi_accumulate = bidi.slice(0, 256).concat(bidi.slice(0x0500, 0x0500 + 256 * 3)).\n   * concat(bidi.slice(0x2000, 0x2000 + 256)).concat(bidi.slice(0xFB00, 0xFB00 + 256)).\n   * concat(bidi.slice(0xFE00, 0xFE00 + 2 * 256));\n   *\n   * for( var i = 0; i < bidi_accumulate.length; i++) {\n   * \tif(bidi_accumulate[i] === undefined || bidi_accumulate[i] === 'ON')\n   * \t\tbidi_accumulate[i] = 'N'; //mark as neutral to conserve space and substitute undefined\n   * }\n   * var bidiAccumulateStr = 'return [ \"' + bidi_accumulate.toString().replace(/,/g, '\", \"') + '\" ];';\n   * require(\"fs\").writeFile('unicode-types.js', bidiAccumulateStr);\n   *\n   * Based on:\n   * https://github.com/mathiasbynens/unicode-8.0.0\n   */\n  var bidiUnicodeTypes = [\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"S\",\n    \"B\",\n    \"S\",\n    \"WS\",\n    \"B\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"B\",\n    \"B\",\n    \"B\",\n    \"S\",\n    \"WS\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ES\",\n    \"CS\",\n    \"ES\",\n    \"CS\",\n    \"CS\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"CS\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"B\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"CS\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"BN\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"EN\",\n    \"EN\",\n    \"N\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"EN\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"N\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"R\",\n    \"NSM\",\n    \"R\",\n    \"NSM\",\n    \"NSM\",\n    \"R\",\n    \"NSM\",\n    \"NSM\",\n    \"R\",\n    \"NSM\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"N\",\n    \"N\",\n    \"AL\",\n    \"ET\",\n    \"ET\",\n    \"AL\",\n    \"CS\",\n    \"AL\",\n    \"N\",\n    \"N\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"AL\",\n    \"AL\",\n    \"N\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"AN\",\n    \"ET\",\n    \"AN\",\n    \"AN\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"AN\",\n    \"N\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"NSM\",\n    \"N\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"AL\",\n    \"AL\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"N\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"N\",\n    \"N\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"AL\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"R\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"WS\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"L\",\n    \"R\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"WS\",\n    \"B\",\n    \"LRE\",\n    \"RLE\",\n    \"PDF\",\n    \"LRO\",\n    \"RLO\",\n    \"CS\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"CS\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"WS\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"N\",\n    \"LRI\",\n    \"RLI\",\n    \"FSI\",\n    \"PDI\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"BN\",\n    \"EN\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"ES\",\n    \"ES\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"ES\",\n    \"ES\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\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    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"R\",\n    \"NSM\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"ES\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"R\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"N\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"R\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"NSM\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"CS\",\n    \"N\",\n    \"CS\",\n    \"N\",\n    \"N\",\n    \"CS\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"ES\",\n    \"ES\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"N\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"AL\",\n    \"N\",\n    \"N\",\n    \"BN\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ES\",\n    \"CS\",\n    \"ES\",\n    \"CS\",\n    \"CS\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"EN\",\n    \"CS\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"L\",\n    \"L\",\n    \"L\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"ET\",\n    \"ET\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\",\n    \"N\"\n  ];\n\n  /**\n   * Unicode Bidi algorithm compliant Bidi engine.\n   * For reference see http://unicode.org/reports/tr9/\n   */\n\n  /**\n   * constructor ( options )\n   *\n   * Initializes Bidi engine\n   *\n   * @param {Object} See 'setOptions' below for detailed description.\n   * options are cashed between invocation of 'doBidiReorder' method\n   *\n   * sample usage pattern of BidiEngine:\n   * var opt = {\n   * \tisInputVisual: true,\n   * \tisInputRtl: false,\n   * \tisOutputVisual: false,\n   * \tisOutputRtl: false,\n   * \tisSymmetricSwapping: true\n   * }\n   * var sourceToTarget = [], levels = [];\n   * var bidiEng = Globalize.bidiEngine(opt);\n   * var src = \"text string to be reordered\";\n   * var ret = bidiEng.doBidiReorder(src, sourceToTarget, levels);\n   */\n\n  jsPDF.__bidiEngine__ = jsPDF.prototype.__bidiEngine__ = function(options) {\n    var _UNICODE_TYPES = _bidiUnicodeTypes;\n\n    var _STATE_TABLE_LTR = [\n      [0, 3, 0, 1, 0, 0, 0],\n      [0, 3, 0, 1, 2, 2, 0],\n      [0, 3, 0, 0x11, 2, 0, 1],\n      [0, 3, 5, 5, 4, 1, 0],\n      [0, 3, 0x15, 0x15, 4, 0, 1],\n      [0, 3, 5, 5, 4, 2, 0]\n    ];\n\n    var _STATE_TABLE_RTL = [\n      [2, 0, 1, 1, 0, 1, 0],\n      [2, 0, 1, 1, 0, 2, 0],\n      [2, 0, 2, 1, 3, 2, 0],\n      [2, 0, 2, 0x21, 3, 1, 1]\n    ];\n\n    var _TYPE_NAMES_MAP = { L: 0, R: 1, EN: 2, AN: 3, N: 4, B: 5, S: 6 };\n\n    var _UNICODE_RANGES_MAP = {\n      0: 0,\n      5: 1,\n      6: 2,\n      7: 3,\n      0x20: 4,\n      0xfb: 5,\n      0xfe: 6,\n      0xff: 7\n    };\n\n    var _SWAP_TABLE = [\n      \"\\u0028\",\n      \"\\u0029\",\n      \"\\u0028\",\n      \"\\u003C\",\n      \"\\u003E\",\n      \"\\u003C\",\n      \"\\u005B\",\n      \"\\u005D\",\n      \"\\u005B\",\n      \"\\u007B\",\n      \"\\u007D\",\n      \"\\u007B\",\n      \"\\u00AB\",\n      \"\\u00BB\",\n      \"\\u00AB\",\n      \"\\u2039\",\n      \"\\u203A\",\n      \"\\u2039\",\n      \"\\u2045\",\n      \"\\u2046\",\n      \"\\u2045\",\n      \"\\u207D\",\n      \"\\u207E\",\n      \"\\u207D\",\n      \"\\u208D\",\n      \"\\u208E\",\n      \"\\u208D\",\n      \"\\u2264\",\n      \"\\u2265\",\n      \"\\u2264\",\n      \"\\u2329\",\n      \"\\u232A\",\n      \"\\u2329\",\n      \"\\uFE59\",\n      \"\\uFE5A\",\n      \"\\uFE59\",\n      \"\\uFE5B\",\n      \"\\uFE5C\",\n      \"\\uFE5B\",\n      \"\\uFE5D\",\n      \"\\uFE5E\",\n      \"\\uFE5D\",\n      \"\\uFE64\",\n      \"\\uFE65\",\n      \"\\uFE64\"\n    ];\n\n    var _LTR_RANGES_REG_EXPR = new RegExp(\n      /^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/\n    );\n\n    var _lastArabic = false,\n      _hasUbatAl,\n      _hasUbatB,\n      _hasUbatS,\n      DIR_LTR = 0,\n      DIR_RTL = 1,\n      _isInVisual,\n      _isInRtl,\n      _isOutVisual,\n      _isOutRtl,\n      _isSymmetricSwapping,\n      _dir = DIR_LTR;\n\n    this.__bidiEngine__ = {};\n\n    var _init = function(text, sourceToTargetMap) {\n      if (sourceToTargetMap) {\n        for (var i = 0; i < text.length; i++) {\n          sourceToTargetMap[i] = i;\n        }\n      }\n      if (_isInRtl === undefined) {\n        _isInRtl = _isContextualDirRtl(text);\n      }\n      if (_isOutRtl === undefined) {\n        _isOutRtl = _isContextualDirRtl(text);\n      }\n    };\n\n    // for reference see 3.2 in http://unicode.org/reports/tr9/\n    //\n    var _getCharType = function(ch) {\n      var charCode = ch.charCodeAt(),\n        range = charCode >> 8,\n        rangeIdx = _UNICODE_RANGES_MAP[range];\n\n      if (rangeIdx !== undefined) {\n        return _UNICODE_TYPES[rangeIdx * 256 + (charCode & 0xff)];\n      } else if (range === 0xfc || range === 0xfd) {\n        return \"AL\";\n      } else if (_LTR_RANGES_REG_EXPR.test(range)) {\n        //unlikely case\n        return \"L\";\n      } else if (range === 8) {\n        // even less likely\n        return \"R\";\n      }\n      return \"N\"; //undefined type, mark as neutral\n    };\n\n    var _isContextualDirRtl = function(text) {\n      for (var i = 0, charType; i < text.length; i++) {\n        charType = _getCharType(text.charAt(i));\n        if (charType === \"L\") {\n          return false;\n        } else if (charType === \"R\") {\n          return true;\n        }\n      }\n      return false;\n    };\n\n    // for reference see 3.3.4 & 3.3.5 in http://unicode.org/reports/tr9/\n    //\n    var _resolveCharType = function(chars, types, resolvedTypes, index) {\n      var cType = types[index],\n        wType,\n        nType,\n        i,\n        len;\n      switch (cType) {\n        case \"L\":\n        case \"R\":\n          _lastArabic = false;\n          break;\n        case \"N\":\n        case \"AN\":\n          break;\n\n        case \"EN\":\n          if (_lastArabic) {\n            cType = \"AN\";\n          }\n          break;\n\n        case \"AL\":\n          _lastArabic = true;\n          _hasUbatAl = true;\n          cType = \"R\";\n          break;\n\n        case \"WS\":\n          cType = \"N\";\n          break;\n\n        case \"CS\":\n          if (\n            index < 1 ||\n            index + 1 >= types.length ||\n            ((wType = resolvedTypes[index - 1]) !== \"EN\" && wType !== \"AN\") ||\n            ((nType = types[index + 1]) !== \"EN\" && nType !== \"AN\")\n          ) {\n            cType = \"N\";\n          } else if (_lastArabic) {\n            nType = \"AN\";\n          }\n          cType = nType === wType ? nType : \"N\";\n          break;\n\n        case \"ES\":\n          wType = index > 0 ? resolvedTypes[index - 1] : \"B\";\n          cType =\n            wType === \"EN\" &&\n            index + 1 < types.length &&\n            types[index + 1] === \"EN\"\n              ? \"EN\"\n              : \"N\";\n          break;\n\n        case \"ET\":\n          if (index > 0 && resolvedTypes[index - 1] === \"EN\") {\n            cType = \"EN\";\n            break;\n          } else if (_lastArabic) {\n            cType = \"N\";\n            break;\n          }\n          i = index + 1;\n          len = types.length;\n          while (i < len && types[i] === \"ET\") {\n            i++;\n          }\n          if (i < len && types[i] === \"EN\") {\n            cType = \"EN\";\n          } else {\n            cType = \"N\";\n          }\n          break;\n\n        case \"NSM\":\n          if (_isInVisual && !_isInRtl) {\n            //V->L\n            len = types.length;\n            i = index + 1;\n            while (i < len && types[i] === \"NSM\") {\n              i++;\n            }\n            if (i < len) {\n              var c = chars[index];\n              var rtlCandidate = (c >= 0x0591 && c <= 0x08ff) || c === 0xfb1e;\n              wType = types[i];\n              if (rtlCandidate && (wType === \"R\" || wType === \"AL\")) {\n                cType = \"R\";\n                break;\n              }\n            }\n          }\n          if (index < 1 || (wType = types[index - 1]) === \"B\") {\n            cType = \"N\";\n          } else {\n            cType = resolvedTypes[index - 1];\n          }\n          break;\n\n        case \"B\":\n          _lastArabic = false;\n          _hasUbatB = true;\n          cType = _dir;\n          break;\n\n        case \"S\":\n          _hasUbatS = true;\n          cType = \"N\";\n          break;\n\n        case \"LRE\":\n        case \"RLE\":\n        case \"LRO\":\n        case \"RLO\":\n        case \"PDF\":\n          _lastArabic = false;\n          break;\n        case \"BN\":\n          cType = \"N\";\n          break;\n      }\n      return cType;\n    };\n\n    var _handleUbatS = function(types, levels, length) {\n      for (var i = 0; i < length; i++) {\n        if (types[i] === \"S\") {\n          levels[i] = _dir;\n          for (var j = i - 1; j >= 0; j--) {\n            if (types[j] === \"WS\") {\n              levels[j] = _dir;\n            } else {\n              break;\n            }\n          }\n        }\n      }\n    };\n\n    var _invertString = function(text, sourceToTargetMap, levels) {\n      var charArray = text.split(\"\");\n      if (levels) {\n        _computeLevels(charArray, levels, { hiLevel: _dir });\n      }\n      charArray.reverse();\n      sourceToTargetMap && sourceToTargetMap.reverse();\n      return charArray.join(\"\");\n    };\n\n    // For reference see 3.3 in http://unicode.org/reports/tr9/\n    //\n    var _computeLevels = function(chars, levels, params) {\n      var action,\n        condition,\n        i,\n        index,\n        newLevel,\n        prevState,\n        condPos = -1,\n        len = chars.length,\n        newState = 0,\n        resolvedTypes = [],\n        stateTable = _dir ? _STATE_TABLE_RTL : _STATE_TABLE_LTR,\n        types = [];\n\n      _lastArabic = false;\n      _hasUbatAl = false;\n      _hasUbatB = false;\n      _hasUbatS = false;\n      for (i = 0; i < len; i++) {\n        types[i] = _getCharType(chars[i]);\n      }\n      for (index = 0; index < len; index++) {\n        prevState = newState;\n        resolvedTypes[index] = _resolveCharType(\n          chars,\n          types,\n          resolvedTypes,\n          index\n        );\n        newState = stateTable[prevState][_TYPE_NAMES_MAP[resolvedTypes[index]]];\n        action = newState & 0xf0;\n        newState &= 0x0f;\n        levels[index] = newLevel = stateTable[newState][5];\n        if (action > 0) {\n          if (action === 0x10) {\n            for (i = condPos; i < index; i++) {\n              levels[i] = 1;\n            }\n            condPos = -1;\n          } else {\n            condPos = -1;\n          }\n        }\n        condition = stateTable[newState][6];\n        if (condition) {\n          if (condPos === -1) {\n            condPos = index;\n          }\n        } else {\n          if (condPos > -1) {\n            for (i = condPos; i < index; i++) {\n              levels[i] = newLevel;\n            }\n            condPos = -1;\n          }\n        }\n        if (types[index] === \"B\") {\n          levels[index] = 0;\n        }\n        params.hiLevel |= newLevel;\n      }\n      if (_hasUbatS) {\n        _handleUbatS(types, levels, len);\n      }\n    };\n\n    // for reference see 3.4 in http://unicode.org/reports/tr9/\n    //\n    var _invertByLevel = function(\n      level,\n      charArray,\n      sourceToTargetMap,\n      levels,\n      params\n    ) {\n      if (params.hiLevel < level) {\n        return;\n      }\n      if (level === 1 && _dir === DIR_RTL && !_hasUbatB) {\n        charArray.reverse();\n        sourceToTargetMap && sourceToTargetMap.reverse();\n        return;\n      }\n      var ch,\n        high,\n        end,\n        low,\n        len = charArray.length,\n        start = 0;\n\n      while (start < len) {\n        if (levels[start] >= level) {\n          end = start + 1;\n          while (end < len && levels[end] >= level) {\n            end++;\n          }\n          for (low = start, high = end - 1; low < high; low++, high--) {\n            ch = charArray[low];\n            charArray[low] = charArray[high];\n            charArray[high] = ch;\n            if (sourceToTargetMap) {\n              ch = sourceToTargetMap[low];\n              sourceToTargetMap[low] = sourceToTargetMap[high];\n              sourceToTargetMap[high] = ch;\n            }\n          }\n          start = end;\n        }\n        start++;\n      }\n    };\n\n    // for reference see 7 & BD16 in http://unicode.org/reports/tr9/\n    //\n    var _symmetricSwap = function(charArray, levels, params) {\n      if (params.hiLevel !== 0 && _isSymmetricSwapping) {\n        for (var i = 0, index; i < charArray.length; i++) {\n          if (levels[i] === 1) {\n            index = _SWAP_TABLE.indexOf(charArray[i]);\n            if (index >= 0) {\n              charArray[i] = _SWAP_TABLE[index + 1];\n            }\n          }\n        }\n      }\n    };\n\n    var _reorder = function(text, sourceToTargetMap, levels) {\n      var charArray = text.split(\"\"),\n        params = { hiLevel: _dir };\n\n      if (!levels) {\n        levels = [];\n      }\n      _computeLevels(charArray, levels, params);\n      _symmetricSwap(charArray, levels, params);\n      _invertByLevel(DIR_RTL + 1, charArray, sourceToTargetMap, levels, params);\n      _invertByLevel(DIR_RTL, charArray, sourceToTargetMap, levels, params);\n      return charArray.join(\"\");\n    };\n\n    // doBidiReorder( text, sourceToTargetMap, levels )\n    // Performs Bidi reordering by implementing Unicode Bidi algorithm.\n    // Returns reordered string\n    // @text [String]:\n    // - input string to be reordered, this is input parameter\n    // $sourceToTargetMap [Array] (optional)\n    // - resultant mapping between input and output strings, this is output parameter\n    // $levels [Array] (optional)\n    // - array of calculated Bidi levels, , this is output parameter\n    this.__bidiEngine__.doBidiReorder = function(\n      text,\n      sourceToTargetMap,\n      levels\n    ) {\n      _init(text, sourceToTargetMap);\n      if (!_isInVisual && _isOutVisual && !_isOutRtl) {\n        // LLTR->VLTR, LRTL->VLTR\n        _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n        text = _reorder(text, sourceToTargetMap, levels);\n      } else if (_isInVisual && _isOutVisual && _isInRtl ^ _isOutRtl) {\n        // VRTL->VLTR, VLTR->VRTL\n        _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n        text = _invertString(text, sourceToTargetMap, levels);\n      } else if (!_isInVisual && _isOutVisual && _isOutRtl) {\n        // LLTR->VRTL, LRTL->VRTL\n        _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n        text = _reorder(text, sourceToTargetMap, levels);\n        text = _invertString(text, sourceToTargetMap);\n      } else if (_isInVisual && !_isInRtl && !_isOutVisual && !_isOutRtl) {\n        // VLTR->LLTR\n        _dir = DIR_LTR;\n        text = _reorder(text, sourceToTargetMap, levels);\n      } else if (_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n        // VLTR->LRTL, VRTL->LLTR\n        text = _invertString(text, sourceToTargetMap);\n        if (_isInRtl) {\n          //LLTR -> VLTR\n          _dir = DIR_LTR;\n          text = _reorder(text, sourceToTargetMap, levels);\n        } else {\n          //LRTL -> VRTL\n          _dir = DIR_RTL;\n          text = _reorder(text, sourceToTargetMap, levels);\n          text = _invertString(text, sourceToTargetMap);\n        }\n      } else if (_isInVisual && _isInRtl && !_isOutVisual && _isOutRtl) {\n        //  VRTL->LRTL\n        _dir = DIR_RTL;\n        text = _reorder(text, sourceToTargetMap, levels);\n        text = _invertString(text, sourceToTargetMap);\n      } else if (!_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n        // LRTL->LLTR, LLTR->LRTL\n        var isSymmetricSwappingOrig = _isSymmetricSwapping;\n        if (_isInRtl) {\n          //LRTL->LLTR\n          _dir = DIR_RTL;\n          text = _reorder(text, sourceToTargetMap, levels);\n          _dir = DIR_LTR;\n          _isSymmetricSwapping = false;\n          text = _reorder(text, sourceToTargetMap, levels);\n          _isSymmetricSwapping = isSymmetricSwappingOrig;\n        } else {\n          //LLTR->LRTL\n          _dir = DIR_LTR;\n          text = _reorder(text, sourceToTargetMap, levels);\n          text = _invertString(text, sourceToTargetMap);\n          _dir = DIR_RTL;\n          _isSymmetricSwapping = false;\n          text = _reorder(text, sourceToTargetMap, levels);\n          _isSymmetricSwapping = isSymmetricSwappingOrig;\n          text = _invertString(text, sourceToTargetMap);\n        }\n      }\n      return text;\n    };\n\n    /**\n     * @name setOptions( options )\n     * @function\n     * Sets options for Bidi conversion\n     * @param {Object}:\n     * - isInputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n     * - isInputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong character of input string)\n     * - isOutputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n     * - isOutputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong characterof input string)\n     * - isSymmetricSwapping {boolean} (defaults to false): allowed values true(needs symmetric swapping), false (no need in symmetric swapping),\n     */\n    this.__bidiEngine__.setOptions = function(options) {\n      if (options) {\n        _isInVisual = options.isInputVisual;\n        _isOutVisual = options.isOutputVisual;\n        _isInRtl = options.isInputRtl;\n        _isOutRtl = options.isOutputRtl;\n        _isSymmetricSwapping = options.isSymmetricSwapping;\n      }\n    };\n\n    this.__bidiEngine__.setOptions(options);\n    return this.__bidiEngine__;\n  };\n\n  var _bidiUnicodeTypes = bidiUnicodeTypes;\n\n  var bidiEngine = new jsPDF.__bidiEngine__({ isInputVisual: true });\n\n  var bidiEngineFunction = function(args) {\n    var text = args.text;\n    var x = args.x;\n    var y = args.y;\n    var options = args.options || {};\n    var mutex = args.mutex || {};\n    var lang = options.lang;\n    var tmpText = [];\n\n    options.isInputVisual =\n      typeof options.isInputVisual === \"boolean\" ? options.isInputVisual : true;\n    bidiEngine.setOptions(options);\n\n    if (Object.prototype.toString.call(text) === \"[object Array]\") {\n      var i = 0;\n      tmpText = [];\n      for (i = 0; i < text.length; i += 1) {\n        if (Object.prototype.toString.call(text[i]) === \"[object Array]\") {\n          tmpText.push([\n            bidiEngine.doBidiReorder(text[i][0]),\n            text[i][1],\n            text[i][2]\n          ]);\n        } else {\n          tmpText.push([bidiEngine.doBidiReorder(text[i])]);\n        }\n      }\n      args.text = tmpText;\n    } else {\n      args.text = bidiEngine.doBidiReorder(text);\n    }\n    bidiEngine.setOptions({ isInputVisual: true });\n  };\n\n  jsPDF.API.events.push([\"postProcessText\", bidiEngineFunction]);\n})(jsPDF);\n", "/* eslint-disable no-control-regex */\n/************************************************\n * Title : custom font                          *\n * Start Data : 2017. 01. 22.                   *\n * Comment : TEXT API                           *\n ************************************************/\n\n/******************************\n * jsPDF extension API Design *\n * ****************************/\n\nimport { jsPDF } from \"../jspdf.js\";\n\njsPDF.API.TTFFont = (function() {\n  /************************************************************************/\n  /* function : open                                                       */\n  /* comment : Decode the encoded ttf content and create a TTFFont object. */\n  /************************************************************************/\n  TTFFont.open = function(file) {\n    return new TTFFont(file);\n  };\n  /***************************************************************/\n  /* function : TTFFont gernerator                               */\n  /* comment : Decode TTF contents are parsed, Data,             */\n  /* Subset object is created, and registerTTF function is called.*/\n  /***************************************************************/\n  function TTFFont(rawData) {\n    var data;\n    this.rawData = rawData;\n    data = this.contents = new Data(rawData);\n    this.contents.pos = 4;\n    if (data.readString(4) === \"ttcf\") {\n      throw new Error(\"TTCF not supported.\");\n    } else {\n      data.pos = 0;\n      this.parse();\n      this.subset = new Subset(this);\n      this.registerTTF();\n    }\n  }\n  /********************************************************/\n  /* function : parse                                     */\n  /* comment : TTF Parses the file contents by each table.*/\n  /********************************************************/\n  TTFFont.prototype.parse = function() {\n    this.directory = new Directory(this.contents);\n    this.head = new HeadTable(this);\n    this.name = new NameTable(this);\n    this.cmap = new CmapTable(this);\n    this.toUnicode = {};\n    this.hhea = new HheaTable(this);\n    this.maxp = new MaxpTable(this);\n    this.hmtx = new HmtxTable(this);\n    this.post = new PostTable(this);\n    this.os2 = new OS2Table(this);\n    this.loca = new LocaTable(this);\n    this.glyf = new GlyfTable(this);\n    this.ascender =\n      (this.os2.exists && this.os2.ascender) || this.hhea.ascender;\n    this.decender =\n      (this.os2.exists && this.os2.decender) || this.hhea.decender;\n    this.lineGap = (this.os2.exists && this.os2.lineGap) || this.hhea.lineGap;\n    return (this.bbox = [\n      this.head.xMin,\n      this.head.yMin,\n      this.head.xMax,\n      this.head.yMax\n    ]);\n  };\n  /***************************************************************/\n  /* function : registerTTF                                      */\n  /* comment : Get the value to assign pdf font descriptors.     */\n  /***************************************************************/\n  TTFFont.prototype.registerTTF = function() {\n    var e, hi, low, raw, _ref;\n    this.scaleFactor = 1000.0 / this.head.unitsPerEm;\n    this.bbox = function() {\n      var _i, _len, _ref, _results;\n      _ref = this.bbox;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        e = _ref[_i];\n        _results.push(Math.round(e * this.scaleFactor));\n      }\n      return _results;\n    }.call(this);\n    this.stemV = 0;\n    if (this.post.exists) {\n      raw = this.post.italic_angle;\n      hi = raw >> 16;\n      low = raw & 0xff;\n      if ((hi & 0x8000) !== 0) {\n        hi = -((hi ^ 0xffff) + 1);\n      }\n      this.italicAngle = +(\"\" + hi + \".\" + low);\n    } else {\n      this.italicAngle = 0;\n    }\n    this.ascender = Math.round(this.ascender * this.scaleFactor);\n    this.decender = Math.round(this.decender * this.scaleFactor);\n    this.lineGap = Math.round(this.lineGap * this.scaleFactor);\n    this.capHeight = (this.os2.exists && this.os2.capHeight) || this.ascender;\n    this.xHeight = (this.os2.exists && this.os2.xHeight) || 0;\n    this.familyClass = ((this.os2.exists && this.os2.familyClass) || 0) >> 8;\n    this.isSerif =\n      (_ref = this.familyClass) === 1 ||\n      _ref === 2 ||\n      _ref === 3 ||\n      _ref === 4 ||\n      _ref === 5 ||\n      _ref === 7;\n    this.isScript = this.familyClass === 10;\n    this.flags = 0;\n    if (this.post.isFixedPitch) {\n      this.flags |= 1 << 0;\n    }\n    if (this.isSerif) {\n      this.flags |= 1 << 1;\n    }\n    if (this.isScript) {\n      this.flags |= 1 << 3;\n    }\n    if (this.italicAngle !== 0) {\n      this.flags |= 1 << 6;\n    }\n    this.flags |= 1 << 5;\n    if (!this.cmap.unicode) {\n      throw new Error(\"No unicode cmap for font\");\n    }\n  };\n  TTFFont.prototype.characterToGlyph = function(character) {\n    var _ref;\n    return (\n      ((_ref = this.cmap.unicode) != null ? _ref.codeMap[character] : void 0) ||\n      0\n    );\n  };\n  TTFFont.prototype.widthOfGlyph = function(glyph) {\n    var scale;\n    scale = 1000.0 / this.head.unitsPerEm;\n    return this.hmtx.forGlyph(glyph).advance * scale;\n  };\n  TTFFont.prototype.widthOfString = function(string, size, charSpace) {\n    var charCode, i, scale, width, _ref;\n    string = \"\" + string;\n    width = 0;\n    for (\n      i = 0, _ref = string.length;\n      0 <= _ref ? i < _ref : i > _ref;\n      i = 0 <= _ref ? ++i : --i\n    ) {\n      charCode = string.charCodeAt(i);\n      width +=\n        this.widthOfGlyph(this.characterToGlyph(charCode)) +\n          charSpace * (1000 / size) || 0;\n    }\n    scale = size / 1000;\n    return width * scale;\n  };\n  TTFFont.prototype.lineHeight = function(size, includeGap) {\n    var gap;\n    if (includeGap == null) {\n      includeGap = false;\n    }\n    gap = includeGap ? this.lineGap : 0;\n    return ((this.ascender + gap - this.decender) / 1000) * size;\n  };\n  return TTFFont;\n})();\n\n/************************************************************************************************/\n/* function : Data                                                                              */\n/* comment : The ttf data decoded and stored in an array is read and written to the Data object.*/\n/************************************************************************************************/\nvar Data = (function() {\n  function Data(data) {\n    this.data = data != null ? data : [];\n    this.pos = 0;\n    this.length = this.data.length;\n  }\n  Data.prototype.readByte = function() {\n    return this.data[this.pos++];\n  };\n  Data.prototype.writeByte = function(byte) {\n    return (this.data[this.pos++] = byte);\n  };\n  Data.prototype.readUInt32 = function() {\n    var b1, b2, b3, b4;\n    b1 = this.readByte() * 0x1000000;\n    b2 = this.readByte() << 16;\n    b3 = this.readByte() << 8;\n    b4 = this.readByte();\n    return b1 + b2 + b3 + b4;\n  };\n  Data.prototype.writeUInt32 = function(val) {\n    this.writeByte((val >>> 24) & 0xff);\n    this.writeByte((val >> 16) & 0xff);\n    this.writeByte((val >> 8) & 0xff);\n    return this.writeByte(val & 0xff);\n  };\n  Data.prototype.readInt32 = function() {\n    var int;\n    int = this.readUInt32();\n    if (int >= 0x80000000) {\n      return int - 0x100000000;\n    } else {\n      return int;\n    }\n  };\n  Data.prototype.writeInt32 = function(val) {\n    if (val < 0) {\n      val += 0x100000000;\n    }\n    return this.writeUInt32(val);\n  };\n  Data.prototype.readUInt16 = function() {\n    var b1, b2;\n    b1 = this.readByte() << 8;\n    b2 = this.readByte();\n    return b1 | b2;\n  };\n  Data.prototype.writeUInt16 = function(val) {\n    this.writeByte((val >> 8) & 0xff);\n    return this.writeByte(val & 0xff);\n  };\n  Data.prototype.readInt16 = function() {\n    var int;\n    int = this.readUInt16();\n    if (int >= 0x8000) {\n      return int - 0x10000;\n    } else {\n      return int;\n    }\n  };\n  Data.prototype.writeInt16 = function(val) {\n    if (val < 0) {\n      val += 0x10000;\n    }\n    return this.writeUInt16(val);\n  };\n  Data.prototype.readString = function(length) {\n    var i, ret;\n    ret = [];\n    for (\n      i = 0;\n      0 <= length ? i < length : i > length;\n      i = 0 <= length ? ++i : --i\n    ) {\n      ret[i] = String.fromCharCode(this.readByte());\n    }\n    return ret.join(\"\");\n  };\n  Data.prototype.writeString = function(val) {\n    var i, _ref, _results;\n    _results = [];\n    for (\n      i = 0, _ref = val.length;\n      0 <= _ref ? i < _ref : i > _ref;\n      i = 0 <= _ref ? ++i : --i\n    ) {\n      _results.push(this.writeByte(val.charCodeAt(i)));\n    }\n    return _results;\n  };\n  /*Data.prototype.stringAt = function (pos, length) {\n            this.pos = pos;\n            return this.readString(length);\n        };*/\n  Data.prototype.readShort = function() {\n    return this.readInt16();\n  };\n  Data.prototype.writeShort = function(val) {\n    return this.writeInt16(val);\n  };\n  Data.prototype.readLongLong = function() {\n    var b1, b2, b3, b4, b5, b6, b7, b8;\n    b1 = this.readByte();\n    b2 = this.readByte();\n    b3 = this.readByte();\n    b4 = this.readByte();\n    b5 = this.readByte();\n    b6 = this.readByte();\n    b7 = this.readByte();\n    b8 = this.readByte();\n    if (b1 & 0x80) {\n      return (\n        ((b1 ^ 0xff) * 0x100000000000000 +\n          (b2 ^ 0xff) * 0x1000000000000 +\n          (b3 ^ 0xff) * 0x10000000000 +\n          (b4 ^ 0xff) * 0x100000000 +\n          (b5 ^ 0xff) * 0x1000000 +\n          (b6 ^ 0xff) * 0x10000 +\n          (b7 ^ 0xff) * 0x100 +\n          (b8 ^ 0xff) +\n          1) *\n        -1\n      );\n    }\n    return (\n      b1 * 0x100000000000000 +\n      b2 * 0x1000000000000 +\n      b3 * 0x10000000000 +\n      b4 * 0x100000000 +\n      b5 * 0x1000000 +\n      b6 * 0x10000 +\n      b7 * 0x100 +\n      b8\n    );\n  };\n  Data.prototype.writeLongLong = function(val) {\n    var high, low;\n    high = Math.floor(val / 0x100000000);\n    low = val & 0xffffffff;\n    this.writeByte((high >> 24) & 0xff);\n    this.writeByte((high >> 16) & 0xff);\n    this.writeByte((high >> 8) & 0xff);\n    this.writeByte(high & 0xff);\n    this.writeByte((low >> 24) & 0xff);\n    this.writeByte((low >> 16) & 0xff);\n    this.writeByte((low >> 8) & 0xff);\n    return this.writeByte(low & 0xff);\n  };\n  Data.prototype.readInt = function() {\n    return this.readInt32();\n  };\n  Data.prototype.writeInt = function(val) {\n    return this.writeInt32(val);\n  };\n  /*Data.prototype.slice = function (start, end) {\n            return this.data.slice(start, end);\n        };*/\n  Data.prototype.read = function(bytes) {\n    var buf, i;\n    buf = [];\n    for (\n      i = 0;\n      0 <= bytes ? i < bytes : i > bytes;\n      i = 0 <= bytes ? ++i : --i\n    ) {\n      buf.push(this.readByte());\n    }\n    return buf;\n  };\n  Data.prototype.write = function(bytes) {\n    var byte, i, _len, _results;\n    _results = [];\n    for (i = 0, _len = bytes.length; i < _len; i++) {\n      byte = bytes[i];\n      _results.push(this.writeByte(byte));\n    }\n    return _results;\n  };\n  return Data;\n})();\n\nvar Directory = (function() {\n  var checksum;\n\n  /*****************************************************************************************************/\n  /* function : Directory generator                                                                    */\n  /* comment : Initialize the offset, tag, length, and checksum for each table for the font to be used.*/\n  /*****************************************************************************************************/\n  function Directory(data) {\n    var entry, i, _ref;\n    this.scalarType = data.readInt();\n    this.tableCount = data.readShort();\n    this.searchRange = data.readShort();\n    this.entrySelector = data.readShort();\n    this.rangeShift = data.readShort();\n    this.tables = {};\n    for (\n      i = 0, _ref = this.tableCount;\n      0 <= _ref ? i < _ref : i > _ref;\n      i = 0 <= _ref ? ++i : --i\n    ) {\n      entry = {\n        tag: data.readString(4),\n        checksum: data.readInt(),\n        offset: data.readInt(),\n        length: data.readInt()\n      };\n      this.tables[entry.tag] = entry;\n    }\n  }\n  /********************************************************************************************************/\n  /* function : encode                                                                                    */\n  /* comment : It encodes and stores the font table object and information used for the directory object. */\n  /********************************************************************************************************/\n  Directory.prototype.encode = function(tables) {\n    var adjustment,\n      directory,\n      directoryLength,\n      entrySelector,\n      headOffset,\n      log2,\n      offset,\n      rangeShift,\n      searchRange,\n      sum,\n      table,\n      tableCount,\n      tableData,\n      tag;\n    tableCount = Object.keys(tables).length;\n    log2 = Math.log(2);\n    searchRange = Math.floor(Math.log(tableCount) / log2) * 16;\n    entrySelector = Math.floor(searchRange / log2);\n    rangeShift = tableCount * 16 - searchRange;\n    directory = new Data();\n    directory.writeInt(this.scalarType);\n    directory.writeShort(tableCount);\n    directory.writeShort(searchRange);\n    directory.writeShort(entrySelector);\n    directory.writeShort(rangeShift);\n    directoryLength = tableCount * 16;\n    offset = directory.pos + directoryLength;\n    headOffset = null;\n    tableData = [];\n    for (tag in tables) {\n      table = tables[tag];\n      directory.writeString(tag);\n      directory.writeInt(checksum(table));\n      directory.writeInt(offset);\n      directory.writeInt(table.length);\n      tableData = tableData.concat(table);\n      if (tag === \"head\") {\n        headOffset = offset;\n      }\n      offset += table.length;\n      while (offset % 4) {\n        tableData.push(0);\n        offset++;\n      }\n    }\n    directory.write(tableData);\n    sum = checksum(directory.data);\n    adjustment = 0xb1b0afba - sum;\n    directory.pos = headOffset + 8;\n    directory.writeUInt32(adjustment);\n    return directory.data;\n  };\n  /***************************************************************/\n  /* function : checksum                                         */\n  /* comment : Duplicate the table for the tag.                  */\n  /***************************************************************/\n  checksum = function(data) {\n    var i, sum, tmp, _ref;\n    data = __slice.call(data);\n    while (data.length % 4) {\n      data.push(0);\n    }\n    tmp = new Data(data);\n    sum = 0;\n    for (i = 0, _ref = data.length; i < _ref; i = i += 4) {\n      sum += tmp.readUInt32();\n    }\n    return sum & 0xffffffff;\n  };\n  return Directory;\n})();\n\nvar Table,\n  __hasProp = {}.hasOwnProperty,\n  __extends = function(child, parent) {\n    for (var key in parent) {\n      if (__hasProp.call(parent, key)) child[key] = parent[key];\n    }\n\n    function ctor() {\n      this.constructor = child;\n    }\n    ctor.prototype = parent.prototype;\n    child.prototype = new ctor();\n    child.__super__ = parent.prototype;\n    return child;\n  };\n\n/***************************************************************/\n/* function : Table                                            */\n/* comment : Save info for each table, and parse the table.    */\n/***************************************************************/\nTable = (function() {\n  function Table(file) {\n    var info;\n    this.file = file;\n    info = this.file.directory.tables[this.tag];\n    this.exists = !!info;\n    if (info) {\n      (this.offset = info.offset), (this.length = info.length);\n      this.parse(this.file.contents);\n    }\n  }\n  Table.prototype.parse = function() {};\n  Table.prototype.encode = function() {};\n  Table.prototype.raw = function() {\n    if (!this.exists) {\n      return null;\n    }\n    this.file.contents.pos = this.offset;\n    return this.file.contents.read(this.length);\n  };\n  return Table;\n})();\n\nvar HeadTable = (function(_super) {\n  __extends(HeadTable, _super);\n\n  function HeadTable() {\n    return HeadTable.__super__.constructor.apply(this, arguments);\n  }\n  HeadTable.prototype.tag = \"head\";\n  HeadTable.prototype.parse = function(data) {\n    data.pos = this.offset;\n    this.version = data.readInt();\n    this.revision = data.readInt();\n    this.checkSumAdjustment = data.readInt();\n    this.magicNumber = data.readInt();\n    this.flags = data.readShort();\n    this.unitsPerEm = data.readShort();\n    this.created = data.readLongLong();\n    this.modified = data.readLongLong();\n    this.xMin = data.readShort();\n    this.yMin = data.readShort();\n    this.xMax = data.readShort();\n    this.yMax = data.readShort();\n    this.macStyle = data.readShort();\n    this.lowestRecPPEM = data.readShort();\n    this.fontDirectionHint = data.readShort();\n    this.indexToLocFormat = data.readShort();\n    return (this.glyphDataFormat = data.readShort());\n  };\n  HeadTable.prototype.encode = function(indexToLocFormat) {\n    var table;\n    table = new Data();\n    table.writeInt(this.version);\n    table.writeInt(this.revision);\n    table.writeInt(this.checkSumAdjustment);\n    table.writeInt(this.magicNumber);\n    table.writeShort(this.flags);\n    table.writeShort(this.unitsPerEm);\n    table.writeLongLong(this.created);\n    table.writeLongLong(this.modified);\n    table.writeShort(this.xMin);\n    table.writeShort(this.yMin);\n    table.writeShort(this.xMax);\n    table.writeShort(this.yMax);\n    table.writeShort(this.macStyle);\n    table.writeShort(this.lowestRecPPEM);\n    table.writeShort(this.fontDirectionHint);\n    table.writeShort(indexToLocFormat);\n    table.writeShort(this.glyphDataFormat);\n    return table.data;\n  };\n  return HeadTable;\n})(Table);\n\n/************************************************************************************/\n/* function : CmapEntry                                                             */\n/* comment : Cmap Initializes and encodes object information (required by pdf spec).*/\n/************************************************************************************/\nvar CmapEntry = (function() {\n  function CmapEntry(data, offset) {\n    var code,\n      count,\n      endCode,\n      glyphId,\n      glyphIds,\n      i,\n      idDelta,\n      idRangeOffset,\n      index,\n      saveOffset,\n      segCount,\n      segCountX2,\n      start,\n      startCode,\n      tail,\n      _j,\n      _k,\n      _len;\n    this.platformID = data.readUInt16();\n    this.encodingID = data.readShort();\n    this.offset = offset + data.readInt();\n    saveOffset = data.pos;\n    data.pos = this.offset;\n    this.format = data.readUInt16();\n    this.length = data.readUInt16();\n    this.language = data.readUInt16();\n    this.isUnicode =\n      (this.platformID === 3 && this.encodingID === 1 && this.format === 4) ||\n      (this.platformID === 0 && this.format === 4);\n    this.codeMap = {};\n    switch (this.format) {\n      case 0:\n        for (i = 0; i < 256; ++i) {\n          this.codeMap[i] = data.readByte();\n        }\n        break;\n      case 4:\n        segCountX2 = data.readUInt16();\n        segCount = segCountX2 / 2;\n        data.pos += 6;\n        endCode = (function() {\n          var _j, _results;\n          _results = [];\n          for (\n            i = _j = 0;\n            0 <= segCount ? _j < segCount : _j > segCount;\n            i = 0 <= segCount ? ++_j : --_j\n          ) {\n            _results.push(data.readUInt16());\n          }\n          return _results;\n        })();\n        data.pos += 2;\n        startCode = (function() {\n          var _j, _results;\n          _results = [];\n          for (\n            i = _j = 0;\n            0 <= segCount ? _j < segCount : _j > segCount;\n            i = 0 <= segCount ? ++_j : --_j\n          ) {\n            _results.push(data.readUInt16());\n          }\n          return _results;\n        })();\n        idDelta = (function() {\n          var _j, _results;\n          _results = [];\n          for (\n            i = _j = 0;\n            0 <= segCount ? _j < segCount : _j > segCount;\n            i = 0 <= segCount ? ++_j : --_j\n          ) {\n            _results.push(data.readUInt16());\n          }\n          return _results;\n        })();\n        idRangeOffset = (function() {\n          var _j, _results;\n          _results = [];\n          for (\n            i = _j = 0;\n            0 <= segCount ? _j < segCount : _j > segCount;\n            i = 0 <= segCount ? ++_j : --_j\n          ) {\n            _results.push(data.readUInt16());\n          }\n          return _results;\n        })();\n        count = (this.length - data.pos + this.offset) / 2;\n        glyphIds = (function() {\n          var _j, _results;\n          _results = [];\n          for (\n            i = _j = 0;\n            0 <= count ? _j < count : _j > count;\n            i = 0 <= count ? ++_j : --_j\n          ) {\n            _results.push(data.readUInt16());\n          }\n          return _results;\n        })();\n        for (i = _j = 0, _len = endCode.length; _j < _len; i = ++_j) {\n          tail = endCode[i];\n          start = startCode[i];\n          for (\n            code = _k = start;\n            start <= tail ? _k <= tail : _k >= tail;\n            code = start <= tail ? ++_k : --_k\n          ) {\n            if (idRangeOffset[i] === 0) {\n              glyphId = code + idDelta[i];\n            } else {\n              index = idRangeOffset[i] / 2 + (code - start) - (segCount - i);\n              glyphId = glyphIds[index] || 0;\n              if (glyphId !== 0) {\n                glyphId += idDelta[i];\n              }\n            }\n            this.codeMap[code] = glyphId & 0xffff;\n          }\n        }\n    }\n    data.pos = saveOffset;\n  }\n  CmapEntry.encode = function(charmap, encoding) {\n    var charMap,\n      code,\n      codeMap,\n      codes,\n      delta,\n      deltas,\n      diff,\n      endCode,\n      endCodes,\n      entrySelector,\n      glyphIDs,\n      i,\n      id,\n      indexes,\n      last,\n      map,\n      nextID,\n      offset,\n      old,\n      rangeOffsets,\n      rangeShift,\n      searchRange,\n      segCount,\n      segCountX2,\n      startCode,\n      startCodes,\n      startGlyph,\n      subtable,\n      _i,\n      _j,\n      _k,\n      _l,\n      _len,\n      _len1,\n      _len2,\n      _len3,\n      _len4,\n      _len5,\n      _len6,\n      _len7,\n      _m,\n      _n,\n      _name,\n      _o,\n      _p,\n      _q;\n    subtable = new Data();\n    codes = Object.keys(charmap).sort(function(a, b) {\n      return a - b;\n    });\n    switch (encoding) {\n      case \"macroman\":\n        id = 0;\n        indexes = (function() {\n          var _results = [];\n          for (i = 0; i < 256; ++i) {\n            _results.push(0);\n          }\n          return _results;\n        })();\n        map = {\n          0: 0\n        };\n        codeMap = {};\n        for (_i = 0, _len = codes.length; _i < _len; _i++) {\n          code = codes[_i];\n          if (map[(_name = charmap[code])] == null) {\n            map[_name] = ++id;\n          }\n          codeMap[code] = {\n            old: charmap[code],\n            new: map[charmap[code]]\n          };\n          indexes[code] = map[charmap[code]];\n        }\n        subtable.writeUInt16(1);\n        subtable.writeUInt16(0);\n        subtable.writeUInt32(12);\n        subtable.writeUInt16(0);\n        subtable.writeUInt16(262);\n        subtable.writeUInt16(0);\n        subtable.write(indexes);\n        return {\n          charMap: codeMap,\n          subtable: subtable.data,\n          maxGlyphID: id + 1\n        };\n      case \"unicode\":\n        startCodes = [];\n        endCodes = [];\n        nextID = 0;\n        map = {};\n        charMap = {};\n        last = diff = null;\n        for (_j = 0, _len1 = codes.length; _j < _len1; _j++) {\n          code = codes[_j];\n          old = charmap[code];\n          if (map[old] == null) {\n            map[old] = ++nextID;\n          }\n          charMap[code] = {\n            old: old,\n            new: map[old]\n          };\n          delta = map[old] - code;\n          if (last == null || delta !== diff) {\n            if (last) {\n              endCodes.push(last);\n            }\n            startCodes.push(code);\n            diff = delta;\n          }\n          last = code;\n        }\n        if (last) {\n          endCodes.push(last);\n        }\n        endCodes.push(0xffff);\n        startCodes.push(0xffff);\n        segCount = startCodes.length;\n        segCountX2 = segCount * 2;\n        searchRange = 2 * Math.pow(Math.log(segCount) / Math.LN2, 2);\n        entrySelector = Math.log(searchRange / 2) / Math.LN2;\n        rangeShift = 2 * segCount - searchRange;\n        deltas = [];\n        rangeOffsets = [];\n        glyphIDs = [];\n        for (i = _k = 0, _len2 = startCodes.length; _k < _len2; i = ++_k) {\n          startCode = startCodes[i];\n          endCode = endCodes[i];\n          if (startCode === 0xffff) {\n            deltas.push(0);\n            rangeOffsets.push(0);\n            break;\n          }\n          startGlyph = charMap[startCode][\"new\"];\n          if (startCode - startGlyph >= 0x8000) {\n            deltas.push(0);\n            rangeOffsets.push(2 * (glyphIDs.length + segCount - i));\n            for (\n              code = _l = startCode;\n              startCode <= endCode ? _l <= endCode : _l >= endCode;\n              code = startCode <= endCode ? ++_l : --_l\n            ) {\n              glyphIDs.push(charMap[code][\"new\"]);\n            }\n          } else {\n            deltas.push(startGlyph - startCode);\n            rangeOffsets.push(0);\n          }\n        }\n        subtable.writeUInt16(3);\n        subtable.writeUInt16(1);\n        subtable.writeUInt32(12);\n        subtable.writeUInt16(4);\n        subtable.writeUInt16(16 + segCount * 8 + glyphIDs.length * 2);\n        subtable.writeUInt16(0);\n        subtable.writeUInt16(segCountX2);\n        subtable.writeUInt16(searchRange);\n        subtable.writeUInt16(entrySelector);\n        subtable.writeUInt16(rangeShift);\n        for (_m = 0, _len3 = endCodes.length; _m < _len3; _m++) {\n          code = endCodes[_m];\n          subtable.writeUInt16(code);\n        }\n        subtable.writeUInt16(0);\n        for (_n = 0, _len4 = startCodes.length; _n < _len4; _n++) {\n          code = startCodes[_n];\n          subtable.writeUInt16(code);\n        }\n        for (_o = 0, _len5 = deltas.length; _o < _len5; _o++) {\n          delta = deltas[_o];\n          subtable.writeUInt16(delta);\n        }\n        for (_p = 0, _len6 = rangeOffsets.length; _p < _len6; _p++) {\n          offset = rangeOffsets[_p];\n          subtable.writeUInt16(offset);\n        }\n        for (_q = 0, _len7 = glyphIDs.length; _q < _len7; _q++) {\n          id = glyphIDs[_q];\n          subtable.writeUInt16(id);\n        }\n        return {\n          charMap: charMap,\n          subtable: subtable.data,\n          maxGlyphID: nextID + 1\n        };\n    }\n  };\n  return CmapEntry;\n})();\n\nvar CmapTable = (function(_super) {\n  __extends(CmapTable, _super);\n\n  function CmapTable() {\n    return CmapTable.__super__.constructor.apply(this, arguments);\n  }\n  CmapTable.prototype.tag = \"cmap\";\n  CmapTable.prototype.parse = function(data) {\n    var entry, i, tableCount;\n    data.pos = this.offset;\n    this.version = data.readUInt16();\n    tableCount = data.readUInt16();\n    this.tables = [];\n    this.unicode = null;\n    for (\n      i = 0;\n      0 <= tableCount ? i < tableCount : i > tableCount;\n      i = 0 <= tableCount ? ++i : --i\n    ) {\n      entry = new CmapEntry(data, this.offset);\n      this.tables.push(entry);\n      if (entry.isUnicode) {\n        if (this.unicode == null) {\n          this.unicode = entry;\n        }\n      }\n    }\n    return true;\n  };\n  /*************************************************************************/\n  /* function : encode                                                     */\n  /* comment : Encode the cmap table corresponding to the input character. */\n  /*************************************************************************/\n  CmapTable.encode = function(charmap, encoding) {\n    var result, table;\n    if (encoding == null) {\n      encoding = \"macroman\";\n    }\n    result = CmapEntry.encode(charmap, encoding);\n    table = new Data();\n    table.writeUInt16(0);\n    table.writeUInt16(1);\n    result.table = table.data.concat(result.subtable);\n    return result;\n  };\n  return CmapTable;\n})(Table);\n\nvar HheaTable = (function(_super) {\n  __extends(HheaTable, _super);\n\n  function HheaTable() {\n    return HheaTable.__super__.constructor.apply(this, arguments);\n  }\n  HheaTable.prototype.tag = \"hhea\";\n  HheaTable.prototype.parse = function(data) {\n    data.pos = this.offset;\n    this.version = data.readInt();\n    this.ascender = data.readShort();\n    this.decender = data.readShort();\n    this.lineGap = data.readShort();\n    this.advanceWidthMax = data.readShort();\n    this.minLeftSideBearing = data.readShort();\n    this.minRightSideBearing = data.readShort();\n    this.xMaxExtent = data.readShort();\n    this.caretSlopeRise = data.readShort();\n    this.caretSlopeRun = data.readShort();\n    this.caretOffset = data.readShort();\n    data.pos += 4 * 2;\n    this.metricDataFormat = data.readShort();\n    return (this.numberOfMetrics = data.readUInt16());\n  };\n  /*HheaTable.prototype.encode = function (ids) {\n            var i, table, _i, _ref;\n            table = new Data;\n            table.writeInt(this.version);\n            table.writeShort(this.ascender);\n            table.writeShort(this.decender);\n            table.writeShort(this.lineGap);\n            table.writeShort(this.advanceWidthMax);\n            table.writeShort(this.minLeftSideBearing);\n            table.writeShort(this.minRightSideBearing);\n            table.writeShort(this.xMaxExtent);\n            table.writeShort(this.caretSlopeRise);\n            table.writeShort(this.caretSlopeRun);\n            table.writeShort(this.caretOffset);\n            for (i = _i = 0, _ref = 4 * 2; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n                table.writeByte(0);\n            }\n            table.writeShort(this.metricDataFormat);\n            table.writeUInt16(ids.length);\n            return table.data;\n        };*/\n  return HheaTable;\n})(Table);\n\nvar OS2Table = (function(_super) {\n  __extends(OS2Table, _super);\n\n  function OS2Table() {\n    return OS2Table.__super__.constructor.apply(this, arguments);\n  }\n  OS2Table.prototype.tag = \"OS/2\";\n  OS2Table.prototype.parse = function(data) {\n    data.pos = this.offset;\n    this.version = data.readUInt16();\n    this.averageCharWidth = data.readShort();\n    this.weightClass = data.readUInt16();\n    this.widthClass = data.readUInt16();\n    this.type = data.readShort();\n    this.ySubscriptXSize = data.readShort();\n    this.ySubscriptYSize = data.readShort();\n    this.ySubscriptXOffset = data.readShort();\n    this.ySubscriptYOffset = data.readShort();\n    this.ySuperscriptXSize = data.readShort();\n    this.ySuperscriptYSize = data.readShort();\n    this.ySuperscriptXOffset = data.readShort();\n    this.ySuperscriptYOffset = data.readShort();\n    this.yStrikeoutSize = data.readShort();\n    this.yStrikeoutPosition = data.readShort();\n    this.familyClass = data.readShort();\n    this.panose = (function() {\n      var i, _results;\n      _results = [];\n      for (i = 0; i < 10; ++i) {\n        _results.push(data.readByte());\n      }\n      return _results;\n    })();\n    this.charRange = (function() {\n      var i, _results;\n      _results = [];\n      for (i = 0; i < 4; ++i) {\n        _results.push(data.readInt());\n      }\n      return _results;\n    })();\n    this.vendorID = data.readString(4);\n    this.selection = data.readShort();\n    this.firstCharIndex = data.readShort();\n    this.lastCharIndex = data.readShort();\n    if (this.version > 0) {\n      this.ascent = data.readShort();\n      this.descent = data.readShort();\n      this.lineGap = data.readShort();\n      this.winAscent = data.readShort();\n      this.winDescent = data.readShort();\n      this.codePageRange = (function() {\n        var i, _results;\n        _results = [];\n        for (i = 0; i < 2; i = ++i) {\n          _results.push(data.readInt());\n        }\n        return _results;\n      })();\n      if (this.version > 1) {\n        this.xHeight = data.readShort();\n        this.capHeight = data.readShort();\n        this.defaultChar = data.readShort();\n        this.breakChar = data.readShort();\n        return (this.maxContext = data.readShort());\n      }\n    }\n  };\n  /*OS2Table.prototype.encode = function () {\n            return this.raw();\n        };*/\n  return OS2Table;\n})(Table);\n\nvar PostTable = (function(_super) {\n  var POSTSCRIPT_GLYPHS;\n  __extends(PostTable, _super);\n\n  function PostTable() {\n    return PostTable.__super__.constructor.apply(this, arguments);\n  }\n  PostTable.prototype.tag = \"post\";\n  PostTable.prototype.parse = function(data) {\n    var length, numberOfGlyphs, _results;\n    data.pos = this.offset;\n    this.format = data.readInt();\n    this.italicAngle = data.readInt();\n    this.underlinePosition = data.readShort();\n    this.underlineThickness = data.readShort();\n    this.isFixedPitch = data.readInt();\n    this.minMemType42 = data.readInt();\n    this.maxMemType42 = data.readInt();\n    this.minMemType1 = data.readInt();\n    this.maxMemType1 = data.readInt();\n    switch (this.format) {\n      case 0x00010000:\n        break;\n      case 0x00020000:\n        numberOfGlyphs = data.readUInt16();\n        this.glyphNameIndex = [];\n        var i;\n        for (\n          i = 0;\n          0 <= numberOfGlyphs ? i < numberOfGlyphs : i > numberOfGlyphs;\n          i = 0 <= numberOfGlyphs ? ++i : --i\n        ) {\n          this.glyphNameIndex.push(data.readUInt16());\n        }\n        this.names = [];\n        _results = [];\n        while (data.pos < this.offset + this.length) {\n          length = data.readByte();\n          _results.push(this.names.push(data.readString(length)));\n        }\n        return _results;\n      case 0x00025000:\n        numberOfGlyphs = data.readUInt16();\n        return (this.offsets = data.read(numberOfGlyphs));\n      case 0x00030000:\n        break;\n      case 0x00040000:\n        return (this.map = function() {\n          var _j, _ref, _results1;\n          _results1 = [];\n          for (\n            i = _j = 0, _ref = this.file.maxp.numGlyphs;\n            0 <= _ref ? _j < _ref : _j > _ref;\n            i = 0 <= _ref ? ++_j : --_j\n          ) {\n            _results1.push(data.readUInt32());\n          }\n          return _results1;\n        }.call(this));\n    }\n  };\n  /*PostTable.prototype.glyphFor = function (code) {\n            var index;\n            switch (this.format) {\n            case 0x00010000:\n                return POSTSCRIPT_GLYPHS[code] || '.notdef';\n            case 0x00020000:\n                index = this.glyphNameIndex[code];\n                if (index <= 257) {\n                    return POSTSCRIPT_GLYPHS[index];\n                }\n                else {\n                    return this.names[index - 258] || '.notdef';\n                }\n                break;\n            case 0x00025000:\n                return POSTSCRIPT_GLYPHS[code + this.offsets[code]] || '.notdef';\n            case 0x00030000:\n                return '.notdef';\n            case 0x00040000:\n                return this.map[code] || 0xFFFF;\n            }\n        };*/\n  /*PostTable.prototype.encode = function (mapping) {\n            var id, index, indexes, position, post, raw, string, strings, table, _i, _j, _k, _len, _len1, _len2;\n            if (!this.exists) {\n                return null;\n            }\n            raw = this.raw();\n            if (this.format === 0x00030000) {\n                return raw;\n            }\n            table = new Data(raw.slice(0, 32));\n            table.writeUInt32(0x00020000);\n            table.pos = 32;\n            indexes = [];\n            strings = [];\n            for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n                id = mapping[_i];\n                post = this.glyphFor(id);\n                position = POSTSCRIPT_GLYPHS.indexOf(post);\n                if (position !== -1) {\n                    indexes.push(position);\n                }\n                else {\n                    indexes.push(257 + strings.length);\n                    strings.push(post);\n                }\n            }\n            table.writeUInt16(Object.keys(mapping).length);\n            for (_j = 0, _len1 = indexes.length; _j < _len1; _j++) {\n                index = indexes[_j];\n                table.writeUInt16(index);\n            }\n            for (_k = 0, _len2 = strings.length; _k < _len2; _k++) {\n                string = strings[_k];\n                table.writeByte(string.length);\n                table.writeString(string);\n            }\n            return table.data;\n        };*/\n  POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent\\nampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash\\nzero one two three four five six seven eight nine colon semicolon less equal greater\\nquestion at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\\nbracketleft backslash bracketright asciicircum underscore grave\\na b c d e f g h i j k l m n o p q r s t u v w x y z\\nbraceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis\\nUdieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave\\necircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve\\nocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent\\nsterling section bullet paragraph germandbls registered copyright trademark acute\\ndieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu\\npartialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash\\nquestiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft\\nguillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash\\nquotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis\\nfraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered\\nquotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis\\nEgrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute\\nUcircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla\\nhungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth\\neth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior\\nonehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla\\nCacute cacute Ccaron ccaron dcroat\".split(\n    /\\s+/g\n  );\n  return PostTable;\n})(Table);\n\n/*********************************************************************************************************/\n/* function : NameEntry                                                                                  */\n/* comment : Store copyright information, platformID, encodingID, and languageID in the NameEntry object.*/\n/*********************************************************************************************************/\nvar NameEntry = (function() {\n  function NameEntry(raw, entry) {\n    this.raw = raw;\n    this.length = raw.length;\n    this.platformID = entry.platformID;\n    this.encodingID = entry.encodingID;\n    this.languageID = entry.languageID;\n  }\n  return NameEntry;\n})();\n\nvar NameTable = (function(_super) {\n  var subsetTag;\n  __extends(NameTable, _super);\n\n  function NameTable() {\n    return NameTable.__super__.constructor.apply(this, arguments);\n  }\n  NameTable.prototype.tag = \"name\";\n  NameTable.prototype.parse = function(data) {\n    var count,\n      entries,\n      entry,\n      i,\n      name,\n      stringOffset,\n      strings,\n      text,\n      _j,\n      _len,\n      _name;\n    data.pos = this.offset;\n    data.readShort(); //format\n    count = data.readShort();\n    stringOffset = data.readShort();\n    entries = [];\n    for (\n      i = 0;\n      0 <= count ? i < count : i > count;\n      i = 0 <= count ? ++i : --i\n    ) {\n      entries.push({\n        platformID: data.readShort(),\n        encodingID: data.readShort(),\n        languageID: data.readShort(),\n        nameID: data.readShort(),\n        length: data.readShort(),\n        offset: this.offset + stringOffset + data.readShort()\n      });\n    }\n    strings = {};\n    for (i = _j = 0, _len = entries.length; _j < _len; i = ++_j) {\n      entry = entries[i];\n      data.pos = entry.offset;\n      text = data.readString(entry.length);\n      name = new NameEntry(text, entry);\n      if (strings[(_name = entry.nameID)] == null) {\n        strings[_name] = [];\n      }\n      strings[entry.nameID].push(name);\n    }\n    this.strings = strings;\n    this.copyright = strings[0];\n    this.fontFamily = strings[1];\n    this.fontSubfamily = strings[2];\n    this.uniqueSubfamily = strings[3];\n    this.fontName = strings[4];\n    this.version = strings[5];\n    try {\n      this.postscriptName = strings[6][0].raw.replace(\n        /[\\x00-\\x19\\x80-\\xff]/g,\n        \"\"\n      );\n    } catch (e) {\n      this.postscriptName = strings[4][0].raw.replace(\n        /[\\x00-\\x19\\x80-\\xff]/g,\n        \"\"\n      );\n    }\n    this.trademark = strings[7];\n    this.manufacturer = strings[8];\n    this.designer = strings[9];\n    this.description = strings[10];\n    this.vendorUrl = strings[11];\n    this.designerUrl = strings[12];\n    this.license = strings[13];\n    this.licenseUrl = strings[14];\n    this.preferredFamily = strings[15];\n    this.preferredSubfamily = strings[17];\n    this.compatibleFull = strings[18];\n    return (this.sampleText = strings[19]);\n  };\n  subsetTag = \"AAAAAA\";\n  /*NameTable.prototype.encode = function () {\n            var id, list, nameID, nameTable, postscriptName, strCount, strTable, string, strings, table, val, _i, _len, _ref;\n            strings = {};\n            _ref = this.strings;\n            for (id in _ref) {\n                val = _ref[id];\n                strings[id] = val;\n            }\n            postscriptName = new NameEntry(\"\" + subsetTag + \"+\" + this.postscriptName, {\n                platformID: 1\n                , encodingID: 0\n                , languageID: 0\n            });\n            strings[6] = [postscriptName];\n            subsetTag = successorOf(subsetTag);\n            strCount = 0;\n            for (id in strings) {\n                list = strings[id];\n                if (list != null) {\n                    strCount += list.length;\n                }\n            }\n            table = new Data;\n            strTable = new Data;\n            table.writeShort(0);\n            table.writeShort(strCount);\n            table.writeShort(6 + 12 * strCount);\n            for (nameID in strings) {\n                list = strings[nameID];\n                if (list != null) {\n                    for (_i = 0, _len = list.length; _i < _len; _i++) {\n                        string = list[_i];\n                        table.writeShort(string.platformID);\n                        table.writeShort(string.encodingID);\n                        table.writeShort(string.languageID);\n                        table.writeShort(nameID);\n                        table.writeShort(string.length);\n                        table.writeShort(strTable.pos);\n                        strTable.writeString(string.raw);\n                    }\n                }\n            }\n            return nameTable = {\n                postscriptName: postscriptName.raw\n                , table: table.data.concat(strTable.data)\n            };\n        };*/\n  return NameTable;\n})(Table);\n\nvar MaxpTable = (function(_super) {\n  __extends(MaxpTable, _super);\n\n  function MaxpTable() {\n    return MaxpTable.__super__.constructor.apply(this, arguments);\n  }\n  MaxpTable.prototype.tag = \"maxp\";\n  MaxpTable.prototype.parse = function(data) {\n    data.pos = this.offset;\n    this.version = data.readInt();\n    this.numGlyphs = data.readUInt16();\n    this.maxPoints = data.readUInt16();\n    this.maxContours = data.readUInt16();\n    this.maxCompositePoints = data.readUInt16();\n    this.maxComponentContours = data.readUInt16();\n    this.maxZones = data.readUInt16();\n    this.maxTwilightPoints = data.readUInt16();\n    this.maxStorage = data.readUInt16();\n    this.maxFunctionDefs = data.readUInt16();\n    this.maxInstructionDefs = data.readUInt16();\n    this.maxStackElements = data.readUInt16();\n    this.maxSizeOfInstructions = data.readUInt16();\n    this.maxComponentElements = data.readUInt16();\n    return (this.maxComponentDepth = data.readUInt16());\n  };\n  /*MaxpTable.prototype.encode = function (ids) {\n            var table;\n            table = new Data;\n            table.writeInt(this.version);\n            table.writeUInt16(ids.length);\n            table.writeUInt16(this.maxPoints);\n            table.writeUInt16(this.maxContours);\n            table.writeUInt16(this.maxCompositePoints);\n            table.writeUInt16(this.maxComponentContours);\n            table.writeUInt16(this.maxZones);\n            table.writeUInt16(this.maxTwilightPoints);\n            table.writeUInt16(this.maxStorage);\n            table.writeUInt16(this.maxFunctionDefs);\n            table.writeUInt16(this.maxInstructionDefs);\n            table.writeUInt16(this.maxStackElements);\n            table.writeUInt16(this.maxSizeOfInstructions);\n            table.writeUInt16(this.maxComponentElements);\n            table.writeUInt16(this.maxComponentDepth);\n            return table.data;\n        };*/\n  return MaxpTable;\n})(Table);\n\nvar HmtxTable = (function(_super) {\n  __extends(HmtxTable, _super);\n\n  function HmtxTable() {\n    return HmtxTable.__super__.constructor.apply(this, arguments);\n  }\n  HmtxTable.prototype.tag = \"hmtx\";\n  HmtxTable.prototype.parse = function(data) {\n    var i, last, lsbCount, m, _j, _ref, _results;\n    data.pos = this.offset;\n    this.metrics = [];\n    for (\n      i = 0, _ref = this.file.hhea.numberOfMetrics;\n      0 <= _ref ? i < _ref : i > _ref;\n      i = 0 <= _ref ? ++i : --i\n    ) {\n      this.metrics.push({\n        advance: data.readUInt16(),\n        lsb: data.readInt16()\n      });\n    }\n    lsbCount = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics;\n    this.leftSideBearings = (function() {\n      var _j, _results;\n      _results = [];\n      for (\n        i = _j = 0;\n        0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n        i = 0 <= lsbCount ? ++_j : --_j\n      ) {\n        _results.push(data.readInt16());\n      }\n      return _results;\n    })();\n    this.widths = function() {\n      var _j, _len, _ref1, _results;\n      _ref1 = this.metrics;\n      _results = [];\n      for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n        m = _ref1[_j];\n        _results.push(m.advance);\n      }\n      return _results;\n    }.call(this);\n    last = this.widths[this.widths.length - 1];\n    _results = [];\n    for (\n      i = _j = 0;\n      0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n      i = 0 <= lsbCount ? ++_j : --_j\n    ) {\n      _results.push(this.widths.push(last));\n    }\n    return _results;\n  };\n  /***************************************************************/\n  /* function : forGlyph                                         */\n  /* comment : Returns the advance width and lsb for this glyph. */\n  /***************************************************************/\n  HmtxTable.prototype.forGlyph = function(id) {\n    if (id in this.metrics) {\n      return this.metrics[id];\n    }\n    return {\n      advance: this.metrics[this.metrics.length - 1].advance,\n      lsb: this.leftSideBearings[id - this.metrics.length]\n    };\n  };\n  /*HmtxTable.prototype.encode = function (mapping) {\n            var id, metric, table, _i, _len;\n            table = new Data;\n            for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n                id = mapping[_i];\n                metric = this.forGlyph(id);\n                table.writeUInt16(metric.advance);\n                table.writeUInt16(metric.lsb);\n            }\n            return table.data;\n        };*/\n  return HmtxTable;\n})(Table);\n\nvar __slice = [].slice;\n\nvar GlyfTable = (function(_super) {\n  __extends(GlyfTable, _super);\n\n  function GlyfTable() {\n    return GlyfTable.__super__.constructor.apply(this, arguments);\n  }\n  GlyfTable.prototype.tag = \"glyf\";\n  GlyfTable.prototype.parse = function() {\n    return (this.cache = {});\n  };\n  GlyfTable.prototype.glyphFor = function(id) {\n    var data,\n      index,\n      length,\n      loca,\n      numberOfContours,\n      raw,\n      xMax,\n      xMin,\n      yMax,\n      yMin;\n    if (id in this.cache) {\n      return this.cache[id];\n    }\n    loca = this.file.loca;\n    data = this.file.contents;\n    index = loca.indexOf(id);\n    length = loca.lengthOf(id);\n    if (length === 0) {\n      return (this.cache[id] = null);\n    }\n    data.pos = this.offset + index;\n    raw = new Data(data.read(length));\n    numberOfContours = raw.readShort();\n    xMin = raw.readShort();\n    yMin = raw.readShort();\n    xMax = raw.readShort();\n    yMax = raw.readShort();\n    if (numberOfContours === -1) {\n      this.cache[id] = new CompoundGlyph(raw, xMin, yMin, xMax, yMax);\n    } else {\n      this.cache[id] = new SimpleGlyph(\n        raw,\n        numberOfContours,\n        xMin,\n        yMin,\n        xMax,\n        yMax\n      );\n    }\n    return this.cache[id];\n  };\n  GlyfTable.prototype.encode = function(glyphs, mapping, old2new) {\n    var glyph, id, offsets, table, _i, _len;\n    table = [];\n    offsets = [];\n    for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n      id = mapping[_i];\n      glyph = glyphs[id];\n      offsets.push(table.length);\n      if (glyph) {\n        table = table.concat(glyph.encode(old2new));\n      }\n    }\n    offsets.push(table.length);\n    return {\n      table: table,\n      offsets: offsets\n    };\n  };\n  return GlyfTable;\n})(Table);\n\nvar SimpleGlyph = (function() {\n  /**************************************************************************/\n  /* function : SimpleGlyph                                                 */\n  /* comment : Stores raw, xMin, yMin, xMax, and yMax values for this glyph.*/\n  /**************************************************************************/\n  function SimpleGlyph(raw, numberOfContours, xMin, yMin, xMax, yMax) {\n    this.raw = raw;\n    this.numberOfContours = numberOfContours;\n    this.xMin = xMin;\n    this.yMin = yMin;\n    this.xMax = xMax;\n    this.yMax = yMax;\n    this.compound = false;\n  }\n  SimpleGlyph.prototype.encode = function() {\n    return this.raw.data;\n  };\n  return SimpleGlyph;\n})();\n\nvar CompoundGlyph = (function() {\n  var ARG_1_AND_2_ARE_WORDS,\n    MORE_COMPONENTS,\n    WE_HAVE_AN_X_AND_Y_SCALE,\n    WE_HAVE_A_SCALE,\n    WE_HAVE_A_TWO_BY_TWO,\n    WE_HAVE_INSTRUCTIONS;\n  ARG_1_AND_2_ARE_WORDS = 0x0001;\n  WE_HAVE_A_SCALE = 0x0008;\n  MORE_COMPONENTS = 0x0020;\n  WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n  WE_HAVE_A_TWO_BY_TWO = 0x0080;\n  WE_HAVE_INSTRUCTIONS = 0x0100;\n\n  /********************************************************************************************************************/\n  /* function : CompoundGlypg generator                                                                               */\n  /* comment : It stores raw, xMin, yMin, xMax, yMax, glyph id, and glyph offset for the corresponding compound glyph.*/\n  /********************************************************************************************************************/\n  function CompoundGlyph(raw, xMin, yMin, xMax, yMax) {\n    var data, flags;\n    this.raw = raw;\n    this.xMin = xMin;\n    this.yMin = yMin;\n    this.xMax = xMax;\n    this.yMax = yMax;\n    this.compound = true;\n    this.glyphIDs = [];\n    this.glyphOffsets = [];\n    data = this.raw;\n    while (true) {\n      flags = data.readShort();\n      this.glyphOffsets.push(data.pos);\n      this.glyphIDs.push(data.readUInt16());\n      if (!(flags & MORE_COMPONENTS)) {\n        break;\n      }\n      if (flags & ARG_1_AND_2_ARE_WORDS) {\n        data.pos += 4;\n      } else {\n        data.pos += 2;\n      }\n      if (flags & WE_HAVE_A_TWO_BY_TWO) {\n        data.pos += 8;\n      } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n        data.pos += 4;\n      } else if (flags & WE_HAVE_A_SCALE) {\n        data.pos += 2;\n      }\n    }\n  }\n  /****************************************************************************************************************/\n  /* function : CompoundGlypg encode                                                                              */\n  /* comment : After creating a table for the characters you typed, you call directory.encode to encode the table.*/\n  /****************************************************************************************************************/\n  CompoundGlyph.prototype.encode = function() {\n    var i, result, _len, _ref;\n    result = new Data(__slice.call(this.raw.data));\n    _ref = this.glyphIDs;\n    for (i = 0, _len = _ref.length; i < _len; ++i) {\n      result.pos = this.glyphOffsets[i];\n    }\n    return result.data;\n  };\n  return CompoundGlyph;\n})();\n\nvar LocaTable = (function(_super) {\n  __extends(LocaTable, _super);\n\n  function LocaTable() {\n    return LocaTable.__super__.constructor.apply(this, arguments);\n  }\n  LocaTable.prototype.tag = \"loca\";\n  LocaTable.prototype.parse = function(data) {\n    var format, i;\n    data.pos = this.offset;\n    format = this.file.head.indexToLocFormat;\n    if (format === 0) {\n      return (this.offsets = function() {\n        var _ref, _results;\n        _results = [];\n        for (i = 0, _ref = this.length; i < _ref; i += 2) {\n          _results.push(data.readUInt16() * 2);\n        }\n        return _results;\n      }.call(this));\n    } else {\n      return (this.offsets = function() {\n        var _ref, _results;\n        _results = [];\n        for (i = 0, _ref = this.length; i < _ref; i += 4) {\n          _results.push(data.readUInt32());\n        }\n        return _results;\n      }.call(this));\n    }\n  };\n  LocaTable.prototype.indexOf = function(id) {\n    return this.offsets[id];\n  };\n  LocaTable.prototype.lengthOf = function(id) {\n    return this.offsets[id + 1] - this.offsets[id];\n  };\n  LocaTable.prototype.encode = function(offsets, activeGlyphs) {\n    var LocaTable = new Uint32Array(this.offsets.length);\n    var glyfPtr = 0;\n    var listGlyf = 0;\n    for (var k = 0; k < LocaTable.length; ++k) {\n      LocaTable[k] = glyfPtr;\n      if (listGlyf < activeGlyphs.length && activeGlyphs[listGlyf] == k) {\n        ++listGlyf;\n        LocaTable[k] = glyfPtr;\n        var start = this.offsets[k];\n        var len = this.offsets[k + 1] - start;\n        if (len > 0) {\n          glyfPtr += len;\n        }\n      }\n    }\n    var newLocaTable = new Array(LocaTable.length * 4);\n    for (var j = 0; j < LocaTable.length; ++j) {\n      newLocaTable[4 * j + 3] = LocaTable[j] & 0x000000ff;\n      newLocaTable[4 * j + 2] = (LocaTable[j] & 0x0000ff00) >> 8;\n      newLocaTable[4 * j + 1] = (LocaTable[j] & 0x00ff0000) >> 16;\n      newLocaTable[4 * j] = (LocaTable[j] & 0xff000000) >> 24;\n    }\n    return newLocaTable;\n  };\n  return LocaTable;\n})(Table);\n\n/************************************************************************************/\n/* function : invert                                                                */\n/* comment : Change the object's (key: value) to create an object with (value: key).*/\n/************************************************************************************/\nvar invert = function(object) {\n  var key, ret, val;\n  ret = {};\n  for (key in object) {\n    val = object[key];\n    ret[val] = key;\n  }\n  return ret;\n};\n\n/*var successorOf = function (input) {\n        var added, alphabet, carry, i, index, isUpperCase, last, length, next, result;\n        alphabet = 'abcdefghijklmnopqrstuvwxyz';\n        length = alphabet.length;\n        result = input;\n        i = input.length;\n        while (i >= 0) {\n            last = input.charAt(--i);\n            if (isNaN(last)) {\n                index = alphabet.indexOf(last.toLowerCase());\n                if (index === -1) {\n                    next = last;\n                    carry = true;\n                }\n                else {\n                    next = alphabet.charAt((index + 1) % length);\n                    isUpperCase = last === last.toUpperCase();\n                    if (isUpperCase) {\n                        next = next.toUpperCase();\n                    }\n                    carry = index + 1 >= length;\n                    if (carry && i === 0) {\n                        added = isUpperCase ? 'A' : 'a';\n                        result = added + next + result.slice(1);\n                        break;\n                    }\n                }\n            }\n            else {\n                next = +last + 1;\n                carry = next > 9;\n                if (carry) {\n                    next = 0;\n                }\n                if (carry && i === 0) {\n                    result = '1' + next + result.slice(1);\n                    break;\n                }\n            }\n            result = result.slice(0, i) + next + result.slice(i + 1);\n            if (!carry) {\n                break;\n            }\n        }\n        return result;\n    };*/\n\nvar Subset = (function() {\n  function Subset(font) {\n    this.font = font;\n    this.subset = {};\n    this.unicodes = {};\n    this.next = 33;\n  }\n  /*Subset.prototype.use = function (character) {\n            var i, _i, _ref;\n            if (typeof character === 'string') {\n                for (i = _i = 0, _ref = character.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n                    this.use(character.charCodeAt(i));\n                }\n                return;\n            }\n            if (!this.unicodes[character]) {\n                this.subset[this.next] = character;\n                return this.unicodes[character] = this.next++;\n            }\n        };*/\n  /*Subset.prototype.encodeText = function (text) {\n            var char, i, string, _i, _ref;\n            string = '';\n            for (i = _i = 0, _ref = text.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n                char = this.unicodes[text.charCodeAt(i)];\n                string += String.fromCharCode(char);\n            }\n            return string;\n        };*/\n  /***************************************************************/\n  /* function : generateCmap                                     */\n  /* comment : Returns the unicode cmap for this font.         */\n  /***************************************************************/\n  Subset.prototype.generateCmap = function() {\n    var mapping, roman, unicode, unicodeCmap, _ref;\n    unicodeCmap = this.font.cmap.tables[0].codeMap;\n    mapping = {};\n    _ref = this.subset;\n    for (roman in _ref) {\n      unicode = _ref[roman];\n      mapping[roman] = unicodeCmap[unicode];\n    }\n    return mapping;\n  };\n  /*Subset.prototype.glyphIDs = function () {\n            var ret, roman, unicode, unicodeCmap, val, _ref;\n            unicodeCmap = this.font.cmap.tables[0].codeMap;\n            ret = [0];\n            _ref = this.subset;\n            for (roman in _ref) {\n                unicode = _ref[roman];\n                val = unicodeCmap[unicode];\n                if ((val != null) && __indexOf.call(ret, val) < 0) {\n                    ret.push(val);\n                }\n            }\n            return ret.sort();\n        };*/\n  /******************************************************************/\n  /* function : glyphsFor                                           */\n  /* comment : Returns simple glyph objects for the input character.*/\n  /******************************************************************/\n  Subset.prototype.glyphsFor = function(glyphIDs) {\n    var additionalIDs, glyph, glyphs, id, _i, _len, _ref;\n    glyphs = {};\n    for (_i = 0, _len = glyphIDs.length; _i < _len; _i++) {\n      id = glyphIDs[_i];\n      glyphs[id] = this.font.glyf.glyphFor(id);\n    }\n    additionalIDs = [];\n    for (id in glyphs) {\n      glyph = glyphs[id];\n      if (glyph != null ? glyph.compound : void 0) {\n        additionalIDs.push.apply(additionalIDs, glyph.glyphIDs);\n      }\n    }\n    if (additionalIDs.length > 0) {\n      _ref = this.glyphsFor(additionalIDs);\n      for (id in _ref) {\n        glyph = _ref[id];\n        glyphs[id] = glyph;\n      }\n    }\n    return glyphs;\n  };\n  /***************************************************************/\n  /* function : encode                                           */\n  /* comment : Encode various tables for the characters you use. */\n  /***************************************************************/\n  Subset.prototype.encode = function(glyID, indexToLocFormat) {\n    var cmap,\n      code,\n      glyf,\n      glyphs,\n      id,\n      ids,\n      loca,\n      new2old,\n      newIDs,\n      nextGlyphID,\n      old2new,\n      oldID,\n      oldIDs,\n      tables,\n      _ref;\n    cmap = CmapTable.encode(this.generateCmap(), \"unicode\");\n    glyphs = this.glyphsFor(glyID);\n    old2new = {\n      0: 0\n    };\n    _ref = cmap.charMap;\n    for (code in _ref) {\n      ids = _ref[code];\n      old2new[ids.old] = ids[\"new\"];\n    }\n    nextGlyphID = cmap.maxGlyphID;\n    for (oldID in glyphs) {\n      if (!(oldID in old2new)) {\n        old2new[oldID] = nextGlyphID++;\n      }\n    }\n    new2old = invert(old2new);\n    newIDs = Object.keys(new2old).sort(function(a, b) {\n      return a - b;\n    });\n    oldIDs = (function() {\n      var _i, _len, _results;\n      _results = [];\n      for (_i = 0, _len = newIDs.length; _i < _len; _i++) {\n        id = newIDs[_i];\n        _results.push(new2old[id]);\n      }\n      return _results;\n    })();\n    glyf = this.font.glyf.encode(glyphs, oldIDs, old2new);\n    loca = this.font.loca.encode(glyf.offsets, oldIDs);\n    tables = {\n      cmap: this.font.cmap.raw(),\n      glyf: glyf.table,\n      loca: loca,\n      hmtx: this.font.hmtx.raw(),\n      hhea: this.font.hhea.raw(),\n      maxp: this.font.maxp.raw(),\n      post: this.font.post.raw(),\n      name: this.font.name.raw(),\n      head: this.font.head.encode(indexToLocFormat)\n    };\n    if (this.font.os2.exists) {\n      tables[\"OS/2\"] = this.font.os2.raw();\n    }\n    return this.font.directory.encode(tables);\n  };\n  return Subset;\n})();\n\njsPDF.API.PDFObject = (function() {\n  var pad;\n\n  function PDFObject() {}\n  pad = function(str, length) {\n    return (Array(length + 1).join(\"0\") + str).slice(-length);\n  };\n  /*****************************************************************************/\n  /* function : convert                                                        */\n  /* comment :Converts pdf tag's / FontBBox and array values in / W to strings */\n  /*****************************************************************************/\n  PDFObject.convert = function(object) {\n    var e, items, key, out, val;\n    if (Array.isArray(object)) {\n      items = (function() {\n        var _i, _len, _results;\n        _results = [];\n        for (_i = 0, _len = object.length; _i < _len; _i++) {\n          e = object[_i];\n          _results.push(PDFObject.convert(e));\n        }\n        return _results;\n      })().join(\" \");\n      return \"[\" + items + \"]\";\n    } else if (typeof object === \"string\") {\n      return \"/\" + object;\n    } else if (object != null ? object.isString : void 0) {\n      return \"(\" + object + \")\";\n    } else if (object instanceof Date) {\n      return (\n        \"(D:\" +\n        pad(object.getUTCFullYear(), 4) +\n        pad(object.getUTCMonth(), 2) +\n        pad(object.getUTCDate(), 2) +\n        pad(object.getUTCHours(), 2) +\n        pad(object.getUTCMinutes(), 2) +\n        pad(object.getUTCSeconds(), 2) +\n        \"Z)\"\n      );\n    } else if ({}.toString.call(object) === \"[object Object]\") {\n      out = [\"<<\"];\n      for (key in object) {\n        val = object[key];\n        out.push(\"/\" + key + \" \" + PDFObject.convert(val));\n      }\n      out.push(\">>\");\n      return out.join(\"\\n\");\n    } else {\n      return \"\" + object;\n    }\n  };\n  return PDFObject;\n})();\n", "import React from \"react\";\nimport i18next from \"i18next\";\nimport {jsPDF} from \"jspdf\";\nimport autoTable, {CellHookData, MarginPadding as PageMargins, RowInput} from \"jspdf-autotable\";\nimport {Group} from \"@backend/Types/Group\";\nimport {convertI18nextLanguage, DEFAULT_LANGUAGE} from \"@backend/Types/Language\";\nimport {Language, JumpDestination} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {\n    convertStepTypeToString,\n    DestinationType,\n    StepBranching,\n    StepInput,\n    StepQuestion,\n    StepType\n} from \"@backend/Types/Step\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {World} from \"@backend/Types/World\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Sequence, StepTypeID} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {TextData} from \"@root/Frontend/DataSources/DataSourceText\";\nimport {ArrowRight} from \"@root/react-components/src/icons/ArrowRight\";\nimport {Star} from \"@root/react-components/src/icons/Star\";\nimport {Logo} from \"@root/react-components/src/logo/Logo\";\nimport {addWatermark, svgComponentToDataURL} from \"@root/Frontend/Console/utils/UtilsPdf\";\nimport {\n    dark,\n    darkenGrey,\n    darkenWhite,\n    lightDark,\n    lightWhite,\n    red\n} from \"@root/react-components/src/values/colors/colors\";\nimport {timestampToString} from \"@utils/utils\";\n\nexport class ExporterSequencePDF {\n    private static readonly BASE_STYLE = {\n        lineColor: darkenGrey,\n        lineWidth: 1,\n        fontSize: 11,\n        minCellHeight: 11,\n        textColor: dark,\n        fillColor: lightWhite,\n        halign: \"left\" as const,\n        valign: \"middle\" as const,\n        cellPadding: {\n            top: 4,\n            right: 8,\n            bottom: 4,\n            left: 8\n        }\n    };\n    private static readonly STEP_NUMBER_STYLE = {\n        ...ExporterSequencePDF.BASE_STYLE,\n        fillColor: darkenWhite,\n        fontStyle: \"bold\" as const,\n        minCellHeight: 20,\n        lineWidth: { top: 1, right: 0, bottom: 1, left: 1 }\n    };\n    private static readonly STEP_TYPE_STYLE = {\n        ...ExporterSequencePDF.STEP_NUMBER_STYLE,\n        halign: \"right\" as const,\n        lineWidth: { top: 1, right: 1, bottom: 1, left: 0 }\n    };\n    private static readonly SEQUENCE_STYLE = {\n        ...ExporterSequencePDF.BASE_STYLE,\n        fillColor: darkenWhite,\n        fontStyle: \"bold\" as const,\n        cellPadding: { ...ExporterSequencePDF.BASE_STYLE.cellPadding, bottom: 1 },\n        lineWidth: { top: 1, right: 1, bottom: 0, left: 1 }\n    };\n    private static readonly WORLD_STYLE = {\n        ...ExporterSequencePDF.BASE_STYLE,\n        fillColor: darkenWhite,\n        textColor: lightDark,\n        cellPadding: { ...ExporterSequencePDF.BASE_STYLE.cellPadding, top: 1 },\n        lineWidth: { top: 0, right: 1, bottom: 1, left: 1 }\n    };\n    private static readonly LABEL_STYLE = {\n        ...ExporterSequencePDF.BASE_STYLE,\n        fontStyle: \"bold\" as const,\n        minCellHeight: 21,\n        textColor: lightDark\n    };\n    private static readonly NOTES_LABEL_STYLE = {\n        ...ExporterSequencePDF.BASE_STYLE,\n        fontStyle: \"bold\" as const,\n        cellPadding: { ...ExporterSequencePDF.BASE_STYLE.cellPadding, bottom: 1 },\n        lineWidth: { top: 1, right: 1, bottom: 0, left: 1 }\n    };\n    private static readonly NOTES_VALUE_STYLE = {\n        ...ExporterSequencePDF.BASE_STYLE,\n        cellPadding: { ...ExporterSequencePDF.BASE_STYLE.cellPadding, top: 1 },\n        lineWidth: { top: 0, right: 1, bottom: 1, left: 1 }\n    };\n\n    private static readonly BRANCHING_ARROW_IMAGE = {width: 14, height: 14};\n    private static readonly CRITICAL_STAR_IMAGE   = {width: 12, height: 12};\n    private static readonly DEEP_SIGHT_LOGO_IMAGE = {width: 54, height: 34};\n\n    private readonly branchingArrowImageDataURL : Promise<string> = svgComponentToDataURL(\n        React.createElement(ArrowRight, {fill: dark}), 96, 96);\n    private readonly criticalStarImageDataURL   : Promise<string> = svgComponentToDataURL(\n        React.createElement(Star, {color: darkenGrey, fillColor: darkenGrey}), 96, 96);\n    private readonly deepSightLogoImageDataURL  : Promise<string> = svgComponentToDataURL(\n        React.createElement(Logo, {dark: true}), 304, 192);\n\n    private documentPDF: jsPDF;\n    private worldID: bigint = BigInt(0);\n    private sequenceID: bigint = BigInt(0);\n    private exportLanguage: Language = DEFAULT_LANGUAGE;\n\n    public async buildPDF(worldID: bigint, sequenceID: bigint): Promise<jsPDF> {\n        this.documentPDF = new jsPDF({\n            format: \"letter\",\n            orientation: \"portrait\",\n            unit: \"pt\"\n        });\n        const pageMargins  : PageMargins = { top: 48, left: 48, right: 48, bottom: 48 };\n        const pageWidth    = this.documentPDF.internal.pageSize.getWidth();\n        const pageHeight   = this.documentPDF.internal.pageSize.getHeight();\n        const contentWidth = pageWidth - pageMargins.left - pageMargins.right;\n\n        this.worldID    = worldID;\n        this.sequenceID = sequenceID;\n\n        const app      : AppConsole = AppConsole.getInstance();\n        const world    : World      = await app.dataSourceWorlds.getWorld(worldID);\n        const sequence : Sequence   = await app.dataSourceSequences.getSequence(worldID, sequenceID);\n\n        this.exportLanguage = i18next.language ? convertI18nextLanguage(i18next.language) : DEFAULT_LANGUAGE;\n\n        this.documentPDF.setDocumentProperties({title: sequence.Title.value});\n\n        // Builds the sequence header block.\n        const metadataLabelColumnWidth : number = Math.round(contentWidth * 0.33);\n        const metadataValueColumnWidth : number = contentWidth - metadataLabelColumnWidth;\n        autoTable(this.documentPDF, {\n            margin: pageMargins,\n            tableWidth: contentWidth,\n            showHead: \"never\",\n            body: await this.buildSequenceMetadata(world, sequence),\n            columnStyles: {\n                0: {cellWidth: metadataLabelColumnWidth},\n                1: {cellWidth: metadataValueColumnWidth}\n            },\n            didDrawCell: await this.criticalStarImageDataURL.then(\n                (criticalStarImageDataURL: string) => (cellHookData: CellHookData) =>\n                    this.drawCriticalStar(cellHookData, criticalStarImageDataURL)\n            )\n        });\n\n        // Builds the content of each step.\n        const labelColumnWidth : number = Math.round(contentWidth * 0.08);\n        const arrowColumnWidth : number = Math.round(contentWidth * 0.06);\n        const typeColumnWidth  : number = Math.round(contentWidth * 0.14);\n        const branchingStepColumnStyles = {\n            0: {cellWidth: labelColumnWidth},\n            1: {cellWidth: arrowColumnWidth},\n            2: {cellWidth: typeColumnWidth},\n            3: {cellWidth: contentWidth - labelColumnWidth - arrowColumnWidth - typeColumnWidth}\n        };\n        const leftColumnWidth: number = Math.round(contentWidth * 0.5);\n        const otherStepColumnStyles = {\n            0: {cellWidth: leftColumnWidth},\n            1: {cellWidth: contentWidth - leftColumnWidth}\n        };\n\n        for (let i: number = 0; i < sequence.Steps.value.length; ++i) {\n            const stepTypeID : StepTypeID = sequence.Steps.value[i];\n            const step       : StepData = await app.dataSourceSteps.getStep(worldID, sequenceID, stepTypeID.ID);\n            const stepType   : StepType =\n                UtilsShared.getCorrespondingEnumValue(StepType, stepTypeID.Type) ?? StepType.ANIMATED;\n\n            autoTable(this.documentPDF, {\n                margin: pageMargins,\n                tableWidth: contentWidth,\n                theme: \"grid\",\n                showHead: \"never\",\n                pageBreak: \"avoid\",\n                rowPageBreak: \"avoid\",\n                body: [...this.buildStepHeader(i, stepType), ...await this.buildStepContent(sequence, step, stepType)],\n                columnStyles: stepType === StepType.BRANCHING ? branchingStepColumnStyles : otherStepColumnStyles,\n                didDrawCell: await this.branchingArrowImageDataURL.then(\n                    (branchingArrowImageDataURL: string) => (cellHookData: CellHookData) => {\n                        if (stepType === StepType.BRANCHING)\n                            this.drawBranchingArrow(cellHookData, branchingArrowImageDataURL)\n                    }\n                )\n            });\n        }\n\n        // Adds the watermark, logo, and footers to each PDF page.\n        const exporterDisplayName : string = app.currentPeerID ? await this.getPeerDisplayName(app.currentPeerID) : \"\";\n        const exportDate          : string = timestampToString(BigInt(Math.floor(Date.now() / 1000)), true, true);\n        const pageCount           : number = this.documentPDF.getNumberOfPages();\n\n        for (let pageNumber: number = 1; pageNumber <= pageCount; ++pageNumber) {\n            this.documentPDF.setPage(pageNumber);\n            addWatermark(this.documentPDF, i18next.t(\"FOR ARCHIVE ONLY\"), red, \"bold\", 0.2);\n\n            if (this.deepSightLogoImageDataURL) {\n                this.documentPDF.addImage(\n                    await this.deepSightLogoImageDataURL,\n                    \"PNG\",\n                    pageWidth - pageMargins.right - ExporterSequencePDF.DEEP_SIGHT_LOGO_IMAGE.width,\n                    (pageMargins.top - ExporterSequencePDF.DEEP_SIGHT_LOGO_IMAGE.height) * 0.5,\n                    ExporterSequencePDF.DEEP_SIGHT_LOGO_IMAGE.width,\n                    ExporterSequencePDF.DEEP_SIGHT_LOGO_IMAGE.height\n                );\n            }\n\n            this.documentPDF.setFont(\"helvetica\", \"normal\");\n            this.documentPDF.setFontSize(8);\n            this.documentPDF.setTextColor(lightDark);\n            const rightX          : number = pageWidth - pageMargins.right;\n            const footerTextY     : number = pageHeight - 28;\n            const exportedByLabel : string = `${i18next.t(\"Exported by\")}: ${exporterDisplayName}`;\n            this.documentPDF.text(exportDate, pageMargins.left, footerTextY, {align: \"left\", baseline: \"bottom\"});\n            this.documentPDF.text(exportedByLabel, rightX, footerTextY, {align: \"right\", baseline: \"bottom\"});\n\n            this.documentPDF.setFontSize(10);\n            const centerX        : number = pageWidth / 2;\n            const pageNumberY    : number = pageHeight - 16;\n            const pageNumberText : string = `${this.documentPDF.getCurrentPageInfo().pageNumber} / ${pageCount}`;\n            this.documentPDF.text(pageNumberText, centerX, pageNumberY, {align: \"center\", baseline: \"bottom\"});\n        }\n\n        return this.documentPDF;\n    }\n\n    // Builds the sequence header block.\n    private async buildSequenceMetadata(world: World, sequence: Sequence): Promise<RowInput[]> {\n        \n        let ownerDisplayName: string = \"\";\n        if (world.OwnerType.value === OwnerType.PEER) {\n            ownerDisplayName = await this.getPeerDisplayName(world.Owner.value);\n        } else if (world.OwnerType.value === OwnerType.GROUP) {\n            const ownerGroup: Group = await AppConsole.getInstance().dataSourceGroups.getGroup(world.Owner.value);\n            ownerDisplayName = ownerGroup.Name;\n        }\n\n        const publicationAuthorDisplayName : string = await this.getPeerDisplayName(sequence.PeerPublisher.value);\n        const publicationDate              : string = timestampToString(sequence.PeerPublisher.timestamp, true, true);\n\n        // Prevents the sequence title from being written under the critical star when it is present.\n        const sequenceStyle = {\n            ...ExporterSequencePDF.SEQUENCE_STYLE,\n            cellPadding: {\n                ...ExporterSequencePDF.SEQUENCE_STYLE.cellPadding,\n                right: sequence.Critical.value ? ExporterSequencePDF.CRITICAL_STAR_IMAGE.width + 16 : 8,\n            },\n        };\n\n        return [\n            [{ content: sequence.Title.value, colSpan: 2, styles: sequenceStyle }],\n            [{ content: world.Title.value, colSpan: 2, styles: ExporterSequencePDF.WORLD_STYLE }],\n            [\n                { content: i18next.t(\"Owner\"), styles: ExporterSequencePDF.LABEL_STYLE },\n                { content: ownerDisplayName, styles: ExporterSequencePDF.BASE_STYLE }\n            ],\n            [\n                { content: i18next.t(\"Published by\"), styles: ExporterSequencePDF.LABEL_STYLE },\n                { content: publicationAuthorDisplayName, styles: ExporterSequencePDF.BASE_STYLE }\n            ],\n            [\n                { content: i18next.t(\"Published Date\"), styles: ExporterSequencePDF.LABEL_STYLE },\n                { content: publicationDate, styles: ExporterSequencePDF.BASE_STYLE }\n            ],\n            [{ content: i18next.t(\"Notes\"), colSpan: 2, styles: ExporterSequencePDF.NOTES_LABEL_STYLE }],\n            [{ content: sequence.Notes.value || \"\", colSpan: 2, styles: ExporterSequencePDF.NOTES_VALUE_STYLE }]\n        ];\n    }\n\n    // Builds the header row of a step.\n    private buildStepHeader(index: number, stepType: StepType): RowInput[] {\n        return [[\n            {\n                content: `${i18next.t(\"Step\")} ${index + 1}`,\n                colSpan: stepType === StepType.BRANCHING ? 3 : 1,\n                styles: ExporterSequencePDF.STEP_NUMBER_STYLE\n            },\n            {\n                content: i18next.t(convertStepTypeToString(stepType ?? StepType.ANIMATED)),\n                styles: ExporterSequencePDF.STEP_TYPE_STYLE\n            }\n        ]];\n    }\n\n    // Builds the content of a step.\n    private async buildStepContent(sequence: Sequence, step: StepData, stepType: StepType): Promise<RowInput[]> {\n        const appConsole  : AppConsole = AppConsole.getInstance();\n        const text        : TextData   = await appConsole.dataSourceText.getText(step.Text.value);\n        const description : string     = text.Translations.value[this.exportLanguage] ?? text.OriginalText.value;\n\n        const rows: RowInput[] = [[{\n            content: description,\n            colSpan: stepType === StepType.BRANCHING ? 4 : 2,\n            styles: {\n                ...ExporterSequencePDF.BASE_STYLE,\n                lineWidth: { \n                    top: 1, \n                    right: 1, \n                    // Question and Branching have more content to display. The bottom border must then be hidden.\n                    bottom: stepType === StepType.QUESTION ||\n                            stepType === StepType.BRANCHING ||\n                            stepType === StepType.INPUT ? 0 : 1,\n                    left: 1 \n                }\n            }\n        }]];\n\n        switch (stepType) {\n            case StepType.BRANCHING: {\n                const branchingStep: StepBranching = step as StepBranching;\n                rows.push(\n                    await this.buildStepBranchingContent(\n                        sequence, \"Yes\", branchingStep.JumpDestinationYes.value, false));\n                rows.push(\n                    await this.buildStepBranchingContent(\n                        sequence, \"No\", branchingStep.JumpDestinationNo.value, true));\n                break;\n            }\n            case StepType.INPUT:\n                rows.push(...this.buildStepInputContent(step as StepInput));\n                break;\n            case StepType.QUESTION:\n                rows.push(...await this.buildStepQuestionContent(step as StepQuestion));\n                break;\n        }\n\n        return rows;\n    }\n\n    // Builds the answer and explanation rows for a Question step.\n    private async buildStepQuestionContent(questionStep: StepQuestion): Promise<RowInput[]> {\n        const app: AppConsole = AppConsole.getInstance();\n        let explanation: string = questionStep.Explanation.value;\n        if (questionStep.TextExplanation.value) {\n            const explanationText: TextData = await app.dataSourceText.getText(questionStep.TextExplanation.value);\n            explanation = explanationText.Translations.value[this.exportLanguage] ?? explanationText.OriginalText.value;\n        }\n        const hasExplanation : boolean = explanation.length > 0;\n\n        const answerValues: string[] = [];\n        for (const answerTextID of questionStep.TextAnswers.value) {\n            const answerText : TextData = await AppConsole.getInstance().dataSourceText.getText(answerTextID);\n            const answer : string = answerText.Translations.value[this.exportLanguage] ?? answerText.OriginalText.value;\n            const prefix : string = questionStep.CorrectAnswer.value === answerText.OriginalText.value ? \"[x]\" : \"[ ]\";\n            answerValues.push(`${prefix} ${answer}`);\n        }\n\n        const rows : RowInput[] = [];\n        for (let answerIndex: number = 0; answerIndex < answerValues.length; ++answerIndex) {\n\n            // Packs the answer choices a bit more tightly to save space.\n            const isLastRow: boolean = answerIndex === answerValues.length - 1 && !hasExplanation;\n            rows.push([{\n                content: answerValues[answerIndex],\n                colSpan: 2,\n                styles: {\n                    ...ExporterSequencePDF.BASE_STYLE,\n                    lineWidth: { top: 0, right: 1, bottom: isLastRow ? 1 : 0, left: 1 },\n                    cellPadding: {\n                        ...ExporterSequencePDF.BASE_STYLE.cellPadding,\n                        top: 1,\n                        ...(isLastRow ? {} : {bottom: 1})\n                    }\n                }\n            }]);\n        }\n\n        if (hasExplanation) {\n            rows.push([{\n                content: `${i18next.t(\"Explanation\")}: ${explanation}`,\n                colSpan: 2,\n                styles: { ...ExporterSequencePDF.BASE_STYLE, lineWidth: {top: 0, right: 1, bottom: 1, left: 1} }\n            }]);\n        }\n\n        return rows;\n    }\n\n    private buildStepInputContent(step: StepInput): RowInput[] {\n        const rows : RowInput[] = [];\n            rows.push([{\n                content: `${i18next.t(\"Minimum\")}: ${i18next.t(step.Minimum.value?.toString() ?? \"-\")}`,\n                colSpan: 2,\n                styles: {\n                    ...ExporterSequencePDF.BASE_STYLE,\n                    lineWidth: { top: 0, right: 1, bottom: 0, left: 1 },\n                    cellPadding: {\n                        ...ExporterSequencePDF.BASE_STYLE.cellPadding,\n                        top: 1,\n                        ...(step.Maximum.value ? {bottom: 1} : {})\n                    }\n                }\n            }]);\n\n            rows.push([{\n                content: `${i18next.t(\"Maximum\")}: ${i18next.t(step.Maximum.value?.toString() ?? \"-\")}`,\n                colSpan: 2,\n                styles: {\n                    ...ExporterSequencePDF.BASE_STYLE,\n                    lineWidth: { top: 0, right: 1, bottom: 1, left: 1 },\n                    cellPadding: {\n                        ...ExporterSequencePDF.BASE_STYLE.cellPadding,\n                        top: 1,\n                    }\n                }\n            }]);\n\n        return rows;\n    }\n\n    // Builds a branch in a branching step.\n    private async buildStepBranchingContent(sequence: Sequence,\n                                               label: string,\n                                               destination: JumpDestination | null,\n                                               isLastRow: boolean): Promise<RowInput> {\n        const app : AppConsole = AppConsole.getInstance();\n\n        let name      : string          = \"\";\n        let stepIndex : number          = 0;\n        let type      : DestinationType = DestinationType.Continue;\n\n        // Skips \"Continue\" branches because they have a null destination.\n        if (destination !== null) {\n            if (destination.isStep) {\n                const step: StepData = await app.dataSourceSteps.getStep(this.worldID, this.sequenceID, destination.ID);\n                const text: TextData = await app.dataSourceText.getText(step.Text.value);\n                name = text.Translations.value[this.exportLanguage] ?? text.OriginalText.value;\n                type = DestinationType.Step;\n\n                // Finds the destination step index to display it.\n                stepIndex = sequence.Steps.value.findIndex((stepType: StepTypeID) => stepType.ID === destination.ID);\n            } else {\n                const destinationSequence: Sequence =\n                    await app.dataSourceSequences.getSequence(this.worldID, destination.ID);\n                name = destinationSequence.Title.value;\n                type = DestinationType.Sequence;\n            }\n        }\n\n        return [\n            {\n                content: i18next.t(label),\n                styles: {\n                    ...ExporterSequencePDF.BASE_STYLE,\n                    valign: \"middle\" as const,\n                    lineWidth: { top: 0, right: 0, bottom: isLastRow ? 1 : 0, left: 1 },\n                    cellPadding: { ...ExporterSequencePDF.BASE_STYLE.cellPadding, ...(isLastRow ? {} : {bottom: 1}) }\n                }\n            },\n            {\n                content: \"\",\n                styles: {\n                    ...ExporterSequencePDF.BASE_STYLE,\n                    lineWidth: { top: 0, right: 0, bottom: isLastRow ? 1 : 0, left: 0 },\n                    cellPadding: { ...ExporterSequencePDF.BASE_STYLE.cellPadding, ...(isLastRow ? {} : {bottom: 1}) }\n                }\n            },\n            {\n                content: i18next.t(type),\n                styles: {\n                    ...ExporterSequencePDF.BASE_STYLE,\n                    fontStyle: \"bold\",\n                    valign: \"middle\" as const,\n                    lineWidth: { top: 0, right: 0, bottom: isLastRow ? 1 : 0, left: 0 },\n                    cellPadding: { ...ExporterSequencePDF.BASE_STYLE.cellPadding, ...(isLastRow ? {} : {bottom: 1}) }\n                }\n            },\n            {\n                content: type === DestinationType.Step ? `${stepIndex}. ${name}` : name,\n                styles: {\n                    ...ExporterSequencePDF.BASE_STYLE,\n                    valign: \"middle\" as const,\n                    lineWidth: { top: 0, right: 1, bottom: isLastRow ? 1 : 0, left: 0 },\n                    cellPadding: { ...ExporterSequencePDF.BASE_STYLE.cellPadding, ...(isLastRow ? {} : {bottom: 1}) }\n                }\n            }\n        ];\n    }\n\n    // Returns the displayable name of a peer.\n    private async getPeerDisplayName(peerID: bigint): Promise<string> {\n        const peer     : Peer   = await AppConsole.getInstance().dataSourcePeers.getPeer(peerID);\n        const peerName : string = peer.fullName || peer.username;\n        return peer.email.length ? `${peerName} (${peer.email})` : peerName;\n    }\n\n    // Draws the arrow icon in the center of the branching column.\n    private drawBranchingArrow(cellHookData: CellHookData, branchingArrowImageDataURL: string) {\n        if (cellHookData.column.index !== 1 || !branchingArrowImageDataURL)\n            return;\n\n        this.documentPDF.addImage(\n            branchingArrowImageDataURL,\n            \"PNG\",\n            cellHookData.cell.x + 0.5 * (cellHookData.cell.width - ExporterSequencePDF.BRANCHING_ARROW_IMAGE.width),\n            cellHookData.cell.y + 0.5 * (cellHookData.cell.height - ExporterSequencePDF.BRANCHING_ARROW_IMAGE.height),\n            ExporterSequencePDF.BRANCHING_ARROW_IMAGE.width,\n            ExporterSequencePDF.BRANCHING_ARROW_IMAGE.height\n        );\n    }\n\n    // Draws the critical star in the top-right corner of the Sequence + World block.\n    private drawCriticalStar(cellHookData: CellHookData, criticalStarImageDataURL: string) {\n        if (cellHookData.row.index !== 1 || cellHookData.column.index !== 0 || !criticalStarImageDataURL)\n            return;\n\n        // Adds the star after the \"World\" cell render to avoid hiding it.\n        const headerHeight: number = cellHookData.table.body[0].height + cellHookData.table.body[1].height;\n        this.documentPDF.addImage(\n            criticalStarImageDataURL,\n            \"PNG\",\n            cellHookData.cell.x + cellHookData.cell.width - ExporterSequencePDF.CRITICAL_STAR_IMAGE.width - 8,\n            cellHookData.cell.y - cellHookData.table.body[0].height +\n                0.5 * (headerHeight - ExporterSequencePDF.CRITICAL_STAR_IMAGE.height),\n            ExporterSequencePDF.CRITICAL_STAR_IMAGE.width,\n            ExporterSequencePDF.CRITICAL_STAR_IMAGE.height\n        );\n    }\n}\n", "/**\n * Improved text function with halign and valign support\n * Inspiration from: http://stackoverflow.com/questions/28327510/align-text-right-using-jspdf/28433113#28433113\n */\nfunction autoTableText (text, x, y, styles, doc) {\n    styles = styles || {};\n    var PHYSICAL_LINE_HEIGHT = 1.15;\n    var k = doc.internal.scaleFactor;\n    var fontSize = doc.internal.getFontSize() / k;\n    var lineHeightFactor = doc.getLineHeightFactor\n        ? doc.getLineHeightFactor()\n        : PHYSICAL_LINE_HEIGHT;\n    var lineHeight = fontSize * lineHeightFactor;\n    var splitRegex = /\\r\\n|\\r|\\n/g;\n    var splitText = '';\n    var lineCount = 1;\n    if (styles.valign === 'middle' ||\n        styles.valign === 'bottom' ||\n        styles.halign === 'center' ||\n        styles.halign === 'right') {\n        splitText = typeof text === 'string' ? text.split(splitRegex) : text;\n        lineCount = splitText.length || 1;\n    }\n    // Align the top\n    y += fontSize * (2 - PHYSICAL_LINE_HEIGHT);\n    if (styles.valign === 'middle')\n        y -= (lineCount / 2) * lineHeight;\n    else if (styles.valign === 'bottom')\n        y -= lineCount * lineHeight;\n    if (styles.halign === 'center' || styles.halign === 'right') {\n        var alignSize = fontSize;\n        if (styles.halign === 'center')\n            alignSize *= 0.5;\n        if (splitText && lineCount >= 1) {\n            for (var iLine = 0; iLine < splitText.length; iLine++) {\n                doc.text(splitText[iLine], x - doc.getStringUnitWidth(splitText[iLine]) * alignSize, y);\n                y += lineHeight;\n            }\n            return doc;\n        }\n        x -= doc.getStringUnitWidth(text) * alignSize;\n    }\n    if (styles.halign === 'justify') {\n        doc.text(text, x, y, { maxWidth: styles.maxWidth || 100, align: 'justify' });\n    }\n    else {\n        doc.text(text, x, y);\n    }\n    return doc;\n}\n\nvar globalDefaults = {};\nvar DocHandler = /** @class */ (function () {\n    function DocHandler(jsPDFDocument) {\n        this.jsPDFDocument = jsPDFDocument;\n        this.userStyles = {\n            // Black for versions of jspdf without getTextColor\n            textColor: jsPDFDocument.getTextColor\n                ? this.jsPDFDocument.getTextColor()\n                : 0,\n            fontSize: jsPDFDocument.internal.getFontSize(),\n            fontStyle: jsPDFDocument.internal.getFont().fontStyle,\n            font: jsPDFDocument.internal.getFont().fontName,\n            // 0 for versions of jspdf without getLineWidth\n            lineWidth: jsPDFDocument.getLineWidth\n                ? this.jsPDFDocument.getLineWidth()\n                : 0,\n            // Black for versions of jspdf without getDrawColor\n            lineColor: jsPDFDocument.getDrawColor\n                ? this.jsPDFDocument.getDrawColor()\n                : 0,\n        };\n    }\n    DocHandler.setDefaults = function (defaults, doc) {\n        if (doc === void 0) { doc = null; }\n        if (doc) {\n            doc.__autoTableDocumentDefaults = defaults;\n        }\n        else {\n            globalDefaults = defaults;\n        }\n    };\n    DocHandler.unifyColor = function (c) {\n        if (Array.isArray(c)) {\n            return c;\n        }\n        else if (typeof c === 'number') {\n            return [c, c, c];\n        }\n        else if (typeof c === 'string') {\n            return [c];\n        }\n        else {\n            return null;\n        }\n    };\n    DocHandler.prototype.applyStyles = function (styles, fontOnly) {\n        // Font style needs to be applied before font\n        // https://github.com/simonbengtsson/jsPDF-AutoTable/issues/632\n        var _a, _b, _c;\n        if (fontOnly === void 0) { fontOnly = false; }\n        if (styles.fontStyle && this.jsPDFDocument.setFontStyle) {\n            this.jsPDFDocument.setFontStyle(styles.fontStyle);\n        }\n        var _d = this.jsPDFDocument.internal.getFont(), fontStyle = _d.fontStyle, fontName = _d.fontName;\n        if (styles.font)\n            fontName = styles.font;\n        if (styles.fontStyle) {\n            fontStyle = styles.fontStyle;\n            var availableFontStyles = this.getFontList()[fontName];\n            if (availableFontStyles &&\n                availableFontStyles.indexOf(fontStyle) === -1 &&\n                this.jsPDFDocument.setFontStyle) {\n                // Common issue was that the default bold in headers\n                // made custom fonts not work. For example:\n                // https://github.com/simonbengtsson/jsPDF-AutoTable/issues/653\n                this.jsPDFDocument.setFontStyle(availableFontStyles[0]);\n                fontStyle = availableFontStyles[0];\n            }\n        }\n        this.jsPDFDocument.setFont(fontName, fontStyle);\n        if (styles.fontSize)\n            this.jsPDFDocument.setFontSize(styles.fontSize);\n        if (fontOnly) {\n            return; // Performance improvement\n        }\n        var color = DocHandler.unifyColor(styles.fillColor);\n        if (color)\n            (_a = this.jsPDFDocument).setFillColor.apply(_a, color);\n        color = DocHandler.unifyColor(styles.textColor);\n        if (color)\n            (_b = this.jsPDFDocument).setTextColor.apply(_b, color);\n        color = DocHandler.unifyColor(styles.lineColor);\n        if (color)\n            (_c = this.jsPDFDocument).setDrawColor.apply(_c, color);\n        if (typeof styles.lineWidth === 'number') {\n            this.jsPDFDocument.setLineWidth(styles.lineWidth);\n        }\n    };\n    DocHandler.prototype.splitTextToSize = function (text, size, opts) {\n        return this.jsPDFDocument.splitTextToSize(text, size, opts);\n    };\n    /**\n     * Adds a rectangle to the PDF\n     * @param x Coordinate (in units declared at inception of PDF document) against left edge of the page\n     * @param y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n     * @param width Width (in units declared at inception of PDF document)\n     * @param height Height (in units declared at inception of PDF document)\n     * @param fillStyle A string specifying the painting style or null. Valid styles include: 'S' [default] - stroke, 'F' - fill, and 'DF' (or 'FD') - fill then stroke.\n     */\n    DocHandler.prototype.rect = function (x, y, width, height, fillStyle) {\n        // null is excluded from fillStyle possible values because it isn't needed\n        // and is prone to bugs as it's used to postpone setting the style\n        // https://rawgit.com/MrRio/jsPDF/master/docs/jsPDF.html#rect\n        return this.jsPDFDocument.rect(x, y, width, height, fillStyle);\n    };\n    DocHandler.prototype.getLastAutoTable = function () {\n        return this.jsPDFDocument.lastAutoTable || null;\n    };\n    DocHandler.prototype.getTextWidth = function (text) {\n        return this.jsPDFDocument.getTextWidth(text);\n    };\n    DocHandler.prototype.getDocument = function () {\n        return this.jsPDFDocument;\n    };\n    DocHandler.prototype.setPage = function (page) {\n        this.jsPDFDocument.setPage(page);\n    };\n    DocHandler.prototype.addPage = function () {\n        return this.jsPDFDocument.addPage();\n    };\n    DocHandler.prototype.getFontList = function () {\n        return this.jsPDFDocument.getFontList();\n    };\n    DocHandler.prototype.getGlobalOptions = function () {\n        return globalDefaults || {};\n    };\n    DocHandler.prototype.getDocumentOptions = function () {\n        return this.jsPDFDocument.__autoTableDocumentDefaults || {};\n    };\n    DocHandler.prototype.pageSize = function () {\n        var pageSize = this.jsPDFDocument.internal.pageSize;\n        // JSPDF 1.4 uses get functions instead of properties on pageSize\n        if (pageSize.width == null) {\n            pageSize = { width: pageSize.getWidth(), height: pageSize.getHeight() };\n        }\n        return pageSize;\n    };\n    DocHandler.prototype.scaleFactor = function () {\n        return this.jsPDFDocument.internal.scaleFactor;\n    };\n    DocHandler.prototype.getLineHeightFactor = function () {\n        var doc = this.jsPDFDocument;\n        return doc.getLineHeightFactor ? doc.getLineHeightFactor() : 1.15;\n    };\n    DocHandler.prototype.getLineHeight = function (fontSize) {\n        return (fontSize / this.scaleFactor()) * this.getLineHeightFactor();\n    };\n    DocHandler.prototype.pageNumber = function () {\n        var pageInfo = this.jsPDFDocument.internal.getCurrentPageInfo();\n        if (!pageInfo) {\n            // Only recent versions of jspdf has pageInfo\n            return this.jsPDFDocument.internal.getNumberOfPages();\n        }\n        return pageInfo.pageNumber;\n    };\n    return DocHandler;\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, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar HtmlRowInput = /** @class */ (function (_super) {\n    __extends(HtmlRowInput, _super);\n    function HtmlRowInput(element) {\n        var _this = _super.call(this) || this;\n        _this._element = element;\n        return _this;\n    }\n    return HtmlRowInput;\n}(Array));\n// Base style for all themes\nfunction defaultStyles(scaleFactor) {\n    return {\n        font: 'helvetica', // helvetica, times, courier\n        fontStyle: 'normal', // normal, bold, italic, bolditalic\n        overflow: 'linebreak', // linebreak, ellipsize, visible or hidden\n        fillColor: false, // Either false for transparent, rbg array e.g. [255, 255, 255] or gray level e.g 200\n        textColor: 20,\n        halign: 'left', // left, center, right, justify\n        valign: 'top', // top, middle, bottom\n        fontSize: 10,\n        cellPadding: 5 / scaleFactor, // number or {top,left,right,left,vertical,horizontal}\n        lineColor: 200,\n        lineWidth: 0,\n        cellWidth: 'auto', // 'auto'|'wrap'|number\n        minCellHeight: 0,\n        minCellWidth: 0,\n    };\n}\nfunction getTheme(name) {\n    var themes = {\n        striped: {\n            table: { fillColor: 255, textColor: 80, fontStyle: 'normal' },\n            head: { textColor: 255, fillColor: [41, 128, 185], fontStyle: 'bold' },\n            body: {},\n            foot: { textColor: 255, fillColor: [41, 128, 185], fontStyle: 'bold' },\n            alternateRow: { fillColor: 245 },\n        },\n        grid: {\n            table: {\n                fillColor: 255,\n                textColor: 80,\n                fontStyle: 'normal',\n                lineWidth: 0.1,\n            },\n            head: {\n                textColor: 255,\n                fillColor: [26, 188, 156],\n                fontStyle: 'bold',\n                lineWidth: 0,\n            },\n            body: {},\n            foot: {\n                textColor: 255,\n                fillColor: [26, 188, 156],\n                fontStyle: 'bold',\n                lineWidth: 0,\n            },\n            alternateRow: {},\n        },\n        plain: { head: { fontStyle: 'bold' }, foot: { fontStyle: 'bold' } },\n    };\n    return themes[name];\n}\n\nfunction getStringWidth(text, styles, doc) {\n    doc.applyStyles(styles, true);\n    var textArr = Array.isArray(text) ? text : [text];\n    var widestLineWidth = textArr\n        .map(function (text) { return doc.getTextWidth(text); })\n        .reduce(function (a, b) { return Math.max(a, b); }, 0);\n    return widestLineWidth;\n}\nfunction addTableBorder(doc, table, startPos, cursor) {\n    var lineWidth = table.settings.tableLineWidth;\n    var lineColor = table.settings.tableLineColor;\n    doc.applyStyles({ lineWidth: lineWidth, lineColor: lineColor });\n    var fillStyle = getFillStyle(lineWidth, false);\n    if (fillStyle) {\n        doc.rect(startPos.x, startPos.y, table.getWidth(doc.pageSize().width), cursor.y - startPos.y, fillStyle);\n    }\n}\nfunction getFillStyle(lineWidth, fillColor) {\n    var drawLine = lineWidth > 0;\n    var drawBackground = fillColor || fillColor === 0;\n    if (drawLine && drawBackground) {\n        return 'DF'; // Fill then stroke\n    }\n    else if (drawLine) {\n        return 'S'; // Only stroke (transparent background)\n    }\n    else if (drawBackground) {\n        return 'F'; // Only fill, no stroke\n    }\n    else {\n        return null;\n    }\n}\nfunction parseSpacing(value, defaultValue) {\n    var _a, _b, _c, _d;\n    value = value || defaultValue;\n    if (Array.isArray(value)) {\n        if (value.length >= 4) {\n            return {\n                top: value[0],\n                right: value[1],\n                bottom: value[2],\n                left: value[3],\n            };\n        }\n        else if (value.length === 3) {\n            return {\n                top: value[0],\n                right: value[1],\n                bottom: value[2],\n                left: value[1],\n            };\n        }\n        else if (value.length === 2) {\n            return {\n                top: value[0],\n                right: value[1],\n                bottom: value[0],\n                left: value[1],\n            };\n        }\n        else if (value.length === 1) {\n            value = value[0];\n        }\n        else {\n            value = defaultValue;\n        }\n    }\n    if (typeof value === 'object') {\n        if (typeof value.vertical === 'number') {\n            value.top = value.vertical;\n            value.bottom = value.vertical;\n        }\n        if (typeof value.horizontal === 'number') {\n            value.right = value.horizontal;\n            value.left = value.horizontal;\n        }\n        return {\n            left: (_a = value.left) !== null && _a !== void 0 ? _a : defaultValue,\n            top: (_b = value.top) !== null && _b !== void 0 ? _b : defaultValue,\n            right: (_c = value.right) !== null && _c !== void 0 ? _c : defaultValue,\n            bottom: (_d = value.bottom) !== null && _d !== void 0 ? _d : defaultValue,\n        };\n    }\n    if (typeof value !== 'number') {\n        value = defaultValue;\n    }\n    return { top: value, right: value, bottom: value, left: value };\n}\nfunction getPageAvailableWidth(doc, table) {\n    var margins = parseSpacing(table.settings.margin, 0);\n    return doc.pageSize().width - (margins.left + margins.right);\n}\n\n// Limitations\n// - No support for border spacing\n// - No support for transparency\nfunction parseCss(supportedFonts, element, scaleFactor, style, window) {\n    var result = {};\n    var pxScaleFactor = 96 / 72;\n    var backgroundColor = parseColor(element, function (elem) {\n        return window.getComputedStyle(elem)['backgroundColor'];\n    });\n    if (backgroundColor != null)\n        result.fillColor = backgroundColor;\n    var textColor = parseColor(element, function (elem) {\n        return window.getComputedStyle(elem)['color'];\n    });\n    if (textColor != null)\n        result.textColor = textColor;\n    var padding = parsePadding(style, scaleFactor);\n    if (padding)\n        result.cellPadding = padding;\n    var borderColorSide = 'borderTopColor';\n    var finalScaleFactor = pxScaleFactor * scaleFactor;\n    var btw = style.borderTopWidth;\n    if (style.borderBottomWidth === btw &&\n        style.borderRightWidth === btw &&\n        style.borderLeftWidth === btw) {\n        var borderWidth = (parseFloat(btw) || 0) / finalScaleFactor;\n        if (borderWidth)\n            result.lineWidth = borderWidth;\n    }\n    else {\n        result.lineWidth = {\n            top: (parseFloat(style.borderTopWidth) || 0) / finalScaleFactor,\n            right: (parseFloat(style.borderRightWidth) || 0) / finalScaleFactor,\n            bottom: (parseFloat(style.borderBottomWidth) || 0) / finalScaleFactor,\n            left: (parseFloat(style.borderLeftWidth) || 0) / finalScaleFactor,\n        };\n        // Choose border color of first available side\n        // could be improved by supporting object as lineColor\n        if (!result.lineWidth.top) {\n            if (result.lineWidth.right) {\n                borderColorSide = 'borderRightColor';\n            }\n            else if (result.lineWidth.bottom) {\n                borderColorSide = 'borderBottomColor';\n            }\n            else if (result.lineWidth.left) {\n                borderColorSide = 'borderLeftColor';\n            }\n        }\n    }\n    var borderColor = parseColor(element, function (elem) {\n        return window.getComputedStyle(elem)[borderColorSide];\n    });\n    if (borderColor != null)\n        result.lineColor = borderColor;\n    var accepted = ['left', 'right', 'center', 'justify'];\n    if (accepted.indexOf(style.textAlign) !== -1) {\n        result.halign = style.textAlign;\n    }\n    accepted = ['middle', 'bottom', 'top'];\n    if (accepted.indexOf(style.verticalAlign) !== -1) {\n        result.valign = style.verticalAlign;\n    }\n    var res = parseInt(style.fontSize || '');\n    if (!isNaN(res))\n        result.fontSize = res / pxScaleFactor;\n    var fontStyle = parseFontStyle(style);\n    if (fontStyle)\n        result.fontStyle = fontStyle;\n    var font = (style.fontFamily || '').toLowerCase();\n    if (supportedFonts.indexOf(font) !== -1) {\n        result.font = font;\n    }\n    return result;\n}\nfunction parseFontStyle(style) {\n    var res = '';\n    if (style.fontWeight === 'bold' ||\n        style.fontWeight === 'bolder' ||\n        parseInt(style.fontWeight) >= 700) {\n        res = 'bold';\n    }\n    if (style.fontStyle === 'italic' || style.fontStyle === 'oblique') {\n        res += 'italic';\n    }\n    return res;\n}\nfunction parseColor(element, styleGetter) {\n    var cssColor = realColor(element, styleGetter);\n    if (!cssColor)\n        return null;\n    var rgba = cssColor.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d*\\.?\\d*))?\\)$/);\n    if (!rgba || !Array.isArray(rgba)) {\n        return null;\n    }\n    var color = [\n        parseInt(rgba[1]),\n        parseInt(rgba[2]),\n        parseInt(rgba[3]),\n    ];\n    var alpha = parseInt(rgba[4]);\n    if (alpha === 0 || isNaN(color[0]) || isNaN(color[1]) || isNaN(color[2])) {\n        return null;\n    }\n    return color;\n}\nfunction realColor(elem, styleGetter) {\n    var bg = styleGetter(elem);\n    if (bg === 'rgba(0, 0, 0, 0)' ||\n        bg === 'transparent' ||\n        bg === 'initial' ||\n        bg === 'inherit') {\n        if (elem.parentElement == null) {\n            return null;\n        }\n        return realColor(elem.parentElement, styleGetter);\n    }\n    else {\n        return bg;\n    }\n}\nfunction parsePadding(style, scaleFactor) {\n    var val = [\n        style.paddingTop,\n        style.paddingRight,\n        style.paddingBottom,\n        style.paddingLeft,\n    ];\n    var pxScaleFactor = 96 / (72 / scaleFactor);\n    var linePadding = (parseInt(style.lineHeight) - parseInt(style.fontSize)) / scaleFactor / 2;\n    var inputPadding = val.map(function (n) {\n        return parseInt(n || '0') / pxScaleFactor;\n    });\n    var padding = parseSpacing(inputPadding, 0);\n    if (linePadding > padding.top) {\n        padding.top = linePadding;\n    }\n    if (linePadding > padding.bottom) {\n        padding.bottom = linePadding;\n    }\n    return padding;\n}\n\nfunction parseHtml(doc, input, window, includeHiddenHtml, useCss) {\n    var _a, _b;\n    if (includeHiddenHtml === void 0) { includeHiddenHtml = false; }\n    if (useCss === void 0) { useCss = false; }\n    var tableElement;\n    if (typeof input === 'string') {\n        tableElement = window.document.querySelector(input);\n    }\n    else {\n        tableElement = input;\n    }\n    var supportedFonts = Object.keys(doc.getFontList());\n    var scaleFactor = doc.scaleFactor();\n    var head = [], body = [], foot = [];\n    if (!tableElement) {\n        console.error('Html table could not be found with input: ', input);\n        return { head: head, body: body, foot: foot };\n    }\n    for (var i = 0; i < tableElement.rows.length; i++) {\n        var element = tableElement.rows[i];\n        var tagName = (_b = (_a = element === null || element === void 0 ? void 0 : element.parentElement) === null || _a === void 0 ? void 0 : _a.tagName) === null || _b === void 0 ? void 0 : _b.toLowerCase();\n        var row = parseRowContent(supportedFonts, scaleFactor, window, element, includeHiddenHtml, useCss);\n        if (!row)\n            continue;\n        if (tagName === 'thead') {\n            head.push(row);\n        }\n        else if (tagName === 'tfoot') {\n            foot.push(row);\n        }\n        else {\n            // Add to body both if parent is tbody or table\n            body.push(row);\n        }\n    }\n    return { head: head, body: body, foot: foot };\n}\nfunction parseRowContent(supportedFonts, scaleFactor, window, row, includeHidden, useCss) {\n    var resultRow = new HtmlRowInput(row);\n    for (var i = 0; i < row.cells.length; i++) {\n        var cell = row.cells[i];\n        var style_1 = window.getComputedStyle(cell);\n        if (includeHidden || style_1.display !== 'none') {\n            var cellStyles = void 0;\n            if (useCss) {\n                cellStyles = parseCss(supportedFonts, cell, scaleFactor, style_1, window);\n            }\n            resultRow.push({\n                rowSpan: cell.rowSpan,\n                colSpan: cell.colSpan,\n                styles: cellStyles,\n                _element: cell,\n                content: parseCellContent(cell),\n            });\n        }\n    }\n    var style = window.getComputedStyle(row);\n    if (resultRow.length > 0 && (includeHidden || style.display !== 'none')) {\n        return resultRow;\n    }\n}\nfunction parseCellContent(orgCell) {\n    // Work on cloned node to make sure no changes are applied to html table\n    var cell = orgCell.cloneNode(true);\n    // Remove extra space and line breaks in markup to make it more similar to\n    // what would be shown in html\n    cell.innerHTML = cell.innerHTML.replace(/\\n/g, '').replace(/ +/g, ' ');\n    // Preserve <br> tags as line breaks in the pdf\n    cell.innerHTML = cell.innerHTML\n        .split(/<br.*?>/) //start with '<br' and ends with '>'.\n        .map(function (part) { return part.trim(); })\n        .join('\\n');\n    // innerText for ie\n    return cell.innerText || cell.textContent || '';\n}\n\nfunction validateInput(global, document, current) {\n    for (var _i = 0, _a = [global, document, current]; _i < _a.length; _i++) {\n        var options = _a[_i];\n        if (options && typeof options !== 'object') {\n            console.error('The options parameter should be of type object, is: ' + typeof options);\n        }\n        if (options.startY && typeof options.startY !== 'number') {\n            console.error('Invalid value for startY option', options.startY);\n            delete options.startY;\n        }\n    }\n}\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\nfunction assign(target, s, s1, s2, s3) {\n    if (target == null) {\n        throw new TypeError('Cannot convert undefined or null to object');\n    }\n    var to = Object(target);\n    for (var index = 1; index < arguments.length; index++) {\n        // eslint-disable-next-line prefer-rest-params\n        var nextSource = arguments[index];\n        if (nextSource != null) {\n            // Skip over if undefined or null\n            for (var nextKey in nextSource) {\n                // Avoid bugs when hasOwnProperty is shadowed\n                if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n                    to[nextKey] = nextSource[nextKey];\n                }\n            }\n        }\n    }\n    return to;\n}\n\nfunction parseInput(d, current) {\n    var doc = new DocHandler(d);\n    var document = doc.getDocumentOptions();\n    var global = doc.getGlobalOptions();\n    validateInput(global, document, current);\n    var options = assign({}, global, document, current);\n    var win;\n    if (typeof window !== 'undefined') {\n        win = window;\n    }\n    var styles = parseStyles(global, document, current);\n    var hooks = parseHooks(global, document, current);\n    var settings = parseSettings(doc, options);\n    var content = parseContent$1(doc, options, win);\n    return { id: current.tableId, content: content, hooks: hooks, styles: styles, settings: settings };\n}\nfunction parseStyles(gInput, dInput, cInput) {\n    var styleOptions = {\n        styles: {},\n        headStyles: {},\n        bodyStyles: {},\n        footStyles: {},\n        alternateRowStyles: {},\n        columnStyles: {},\n    };\n    var _loop_1 = function (prop) {\n        if (prop === 'columnStyles') {\n            var global_1 = gInput[prop];\n            var document_1 = dInput[prop];\n            var current = cInput[prop];\n            styleOptions.columnStyles = assign({}, global_1, document_1, current);\n        }\n        else {\n            var allOptions = [gInput, dInput, cInput];\n            var styles = allOptions.map(function (opts) { return opts[prop] || {}; });\n            styleOptions[prop] = assign({}, styles[0], styles[1], styles[2]);\n        }\n    };\n    for (var _i = 0, _a = Object.keys(styleOptions); _i < _a.length; _i++) {\n        var prop = _a[_i];\n        _loop_1(prop);\n    }\n    return styleOptions;\n}\nfunction parseHooks(global, document, current) {\n    var allOptions = [global, document, current];\n    var result = {\n        didParseCell: [],\n        willDrawCell: [],\n        didDrawCell: [],\n        willDrawPage: [],\n        didDrawPage: [],\n    };\n    for (var _i = 0, allOptions_1 = allOptions; _i < allOptions_1.length; _i++) {\n        var options = allOptions_1[_i];\n        if (options.didParseCell)\n            result.didParseCell.push(options.didParseCell);\n        if (options.willDrawCell)\n            result.willDrawCell.push(options.willDrawCell);\n        if (options.didDrawCell)\n            result.didDrawCell.push(options.didDrawCell);\n        if (options.willDrawPage)\n            result.willDrawPage.push(options.willDrawPage);\n        if (options.didDrawPage)\n            result.didDrawPage.push(options.didDrawPage);\n    }\n    return result;\n}\nfunction parseSettings(doc, options) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n    var margin = parseSpacing(options.margin, 40 / doc.scaleFactor());\n    var startY = (_a = getStartY(doc, options.startY)) !== null && _a !== void 0 ? _a : margin.top;\n    var showFoot;\n    if (options.showFoot === true) {\n        showFoot = 'everyPage';\n    }\n    else if (options.showFoot === false) {\n        showFoot = 'never';\n    }\n    else {\n        showFoot = (_b = options.showFoot) !== null && _b !== void 0 ? _b : 'everyPage';\n    }\n    var showHead;\n    if (options.showHead === true) {\n        showHead = 'everyPage';\n    }\n    else if (options.showHead === false) {\n        showHead = 'never';\n    }\n    else {\n        showHead = (_c = options.showHead) !== null && _c !== void 0 ? _c : 'everyPage';\n    }\n    var useCss = (_d = options.useCss) !== null && _d !== void 0 ? _d : false;\n    var theme = options.theme || (useCss ? 'plain' : 'striped');\n    var horizontalPageBreak = !!options.horizontalPageBreak;\n    var horizontalPageBreakRepeat = (_e = options.horizontalPageBreakRepeat) !== null && _e !== void 0 ? _e : null;\n    return {\n        includeHiddenHtml: (_f = options.includeHiddenHtml) !== null && _f !== void 0 ? _f : false,\n        useCss: useCss,\n        theme: theme,\n        startY: startY,\n        margin: margin,\n        pageBreak: (_g = options.pageBreak) !== null && _g !== void 0 ? _g : 'auto',\n        rowPageBreak: (_h = options.rowPageBreak) !== null && _h !== void 0 ? _h : 'auto',\n        tableWidth: (_j = options.tableWidth) !== null && _j !== void 0 ? _j : 'auto',\n        showHead: showHead,\n        showFoot: showFoot,\n        tableLineWidth: (_k = options.tableLineWidth) !== null && _k !== void 0 ? _k : 0,\n        tableLineColor: (_l = options.tableLineColor) !== null && _l !== void 0 ? _l : 200,\n        horizontalPageBreak: horizontalPageBreak,\n        horizontalPageBreakRepeat: horizontalPageBreakRepeat,\n        horizontalPageBreakBehaviour: (_m = options.horizontalPageBreakBehaviour) !== null && _m !== void 0 ? _m : 'afterAllRows',\n    };\n}\nfunction getStartY(doc, userStartY) {\n    var previous = doc.getLastAutoTable();\n    var sf = doc.scaleFactor();\n    var currentPage = doc.pageNumber();\n    var isSamePageAsPreviousTable = false;\n    if (previous && previous.startPageNumber) {\n        var endingPage = previous.startPageNumber + previous.pageNumber - 1;\n        isSamePageAsPreviousTable = endingPage === currentPage;\n    }\n    if (typeof userStartY === 'number') {\n        return userStartY;\n    }\n    else if (userStartY == null || userStartY === false) {\n        if (isSamePageAsPreviousTable && (previous === null || previous === void 0 ? void 0 : previous.finalY) != null) {\n            // Some users had issues with overlapping tables when they used multiple\n            // tables without setting startY so setting it here to a sensible default.\n            return previous.finalY + 20 / sf;\n        }\n    }\n    return null;\n}\nfunction parseContent$1(doc, options, window) {\n    var head = options.head || [];\n    var body = options.body || [];\n    var foot = options.foot || [];\n    if (options.html) {\n        var hidden = options.includeHiddenHtml;\n        if (window) {\n            var htmlContent = parseHtml(doc, options.html, window, hidden, options.useCss) || {};\n            head = htmlContent.head || head;\n            body = htmlContent.body || head;\n            foot = htmlContent.foot || head;\n        }\n        else {\n            console.error('Cannot parse html in non browser environment');\n        }\n    }\n    var columns = options.columns || parseColumns(head, body, foot);\n    return { columns: columns, head: head, body: body, foot: foot };\n}\nfunction parseColumns(head, body, foot) {\n    var firstRow = head[0] || body[0] || foot[0] || [];\n    var result = [];\n    Object.keys(firstRow)\n        .filter(function (key) { return key !== '_element'; })\n        .forEach(function (key) {\n        var colSpan = 1;\n        var input;\n        if (Array.isArray(firstRow)) {\n            input = firstRow[parseInt(key)];\n        }\n        else {\n            input = firstRow[key];\n        }\n        if (typeof input === 'object' && !Array.isArray(input)) {\n            colSpan = (input === null || input === void 0 ? void 0 : input.colSpan) || 1;\n        }\n        for (var i = 0; i < colSpan; i++) {\n            var id = void 0;\n            if (Array.isArray(firstRow)) {\n                id = result.length;\n            }\n            else {\n                id = key + (i > 0 ? \"_\".concat(i) : '');\n            }\n            var rowResult = { dataKey: id };\n            result.push(rowResult);\n        }\n    });\n    return result;\n}\n\nvar HookData = /** @class */ (function () {\n    function HookData(doc, table, cursor) {\n        this.table = table;\n        this.pageNumber = table.pageNumber;\n        this.settings = table.settings;\n        this.cursor = cursor;\n        this.doc = doc.getDocument();\n    }\n    return HookData;\n}());\nvar CellHookData = /** @class */ (function (_super) {\n    __extends(CellHookData, _super);\n    function CellHookData(doc, table, cell, row, column, cursor) {\n        var _this = _super.call(this, doc, table, cursor) || this;\n        _this.cell = cell;\n        _this.row = row;\n        _this.column = column;\n        _this.section = row.section;\n        return _this;\n    }\n    return CellHookData;\n}(HookData));\n\nvar Table = /** @class */ (function () {\n    function Table(input, content) {\n        this.pageNumber = 1;\n        this.id = input.id;\n        this.settings = input.settings;\n        this.styles = input.styles;\n        this.hooks = input.hooks;\n        this.columns = content.columns;\n        this.head = content.head;\n        this.body = content.body;\n        this.foot = content.foot;\n    }\n    Table.prototype.getHeadHeight = function (columns) {\n        return this.head.reduce(function (acc, row) { return acc + row.getMaxCellHeight(columns); }, 0);\n    };\n    Table.prototype.getFootHeight = function (columns) {\n        return this.foot.reduce(function (acc, row) { return acc + row.getMaxCellHeight(columns); }, 0);\n    };\n    Table.prototype.allRows = function () {\n        return this.head.concat(this.body).concat(this.foot);\n    };\n    Table.prototype.callCellHooks = function (doc, handlers, cell, row, column, cursor) {\n        for (var _i = 0, handlers_1 = handlers; _i < handlers_1.length; _i++) {\n            var handler = handlers_1[_i];\n            var data = new CellHookData(doc, this, cell, row, column, cursor);\n            var result = handler(data) === false;\n            // Make sure text is always string[] since user can assign string\n            cell.text = Array.isArray(cell.text) ? cell.text : [cell.text];\n            if (result) {\n                return false;\n            }\n        }\n        return true;\n    };\n    Table.prototype.callEndPageHooks = function (doc, cursor) {\n        doc.applyStyles(doc.userStyles);\n        for (var _i = 0, _a = this.hooks.didDrawPage; _i < _a.length; _i++) {\n            var handler = _a[_i];\n            handler(new HookData(doc, this, cursor));\n        }\n    };\n    Table.prototype.callWillDrawPageHooks = function (doc, cursor) {\n        for (var _i = 0, _a = this.hooks.willDrawPage; _i < _a.length; _i++) {\n            var handler = _a[_i];\n            handler(new HookData(doc, this, cursor));\n        }\n    };\n    Table.prototype.getWidth = function (pageWidth) {\n        if (typeof this.settings.tableWidth === 'number') {\n            return this.settings.tableWidth;\n        }\n        else if (this.settings.tableWidth === 'wrap') {\n            var wrappedWidth = this.columns.reduce(function (total, col) { return total + col.wrappedWidth; }, 0);\n            return wrappedWidth;\n        }\n        else {\n            var margin = this.settings.margin;\n            return pageWidth - margin.left - margin.right;\n        }\n    };\n    return Table;\n}());\nvar Row = /** @class */ (function () {\n    function Row(raw, index, section, cells, spansMultiplePages) {\n        if (spansMultiplePages === void 0) { spansMultiplePages = false; }\n        this.height = 0;\n        this.raw = raw;\n        if (raw instanceof HtmlRowInput) {\n            this.raw = raw._element;\n            this.element = raw._element;\n        }\n        this.index = index;\n        this.section = section;\n        this.cells = cells;\n        this.spansMultiplePages = spansMultiplePages;\n    }\n    Row.prototype.getMaxCellHeight = function (columns) {\n        var _this = this;\n        return columns.reduce(function (acc, column) { var _a; return Math.max(acc, ((_a = _this.cells[column.index]) === null || _a === void 0 ? void 0 : _a.height) || 0); }, 0);\n    };\n    Row.prototype.hasRowSpan = function (columns) {\n        var _this = this;\n        return (columns.filter(function (column) {\n            var cell = _this.cells[column.index];\n            if (!cell)\n                return false;\n            return cell.rowSpan > 1;\n        }).length > 0);\n    };\n    Row.prototype.canEntireRowFit = function (height, columns) {\n        return this.getMaxCellHeight(columns) <= height;\n    };\n    Row.prototype.getMinimumRowHeight = function (columns, doc) {\n        var _this = this;\n        return columns.reduce(function (acc, column) {\n            var cell = _this.cells[column.index];\n            if (!cell)\n                return 0;\n            var lineHeight = doc.getLineHeight(cell.styles.fontSize);\n            var vPadding = cell.padding('vertical');\n            var oneRowHeight = vPadding + lineHeight;\n            return oneRowHeight > acc ? oneRowHeight : acc;\n        }, 0);\n    };\n    return Row;\n}());\nvar Cell = /** @class */ (function () {\n    function Cell(raw, styles, section) {\n        var _a;\n        this.contentHeight = 0;\n        this.contentWidth = 0;\n        this.wrappedWidth = 0;\n        this.minReadableWidth = 0;\n        this.minWidth = 0;\n        this.width = 0;\n        this.height = 0;\n        this.x = 0;\n        this.y = 0;\n        this.styles = styles;\n        this.section = section;\n        this.raw = raw;\n        var content = raw;\n        if (raw != null && typeof raw === 'object' && !Array.isArray(raw)) {\n            this.rowSpan = raw.rowSpan || 1;\n            this.colSpan = raw.colSpan || 1;\n            content = (_a = raw.content) !== null && _a !== void 0 ? _a : raw;\n            if (raw._element) {\n                this.raw = raw._element;\n            }\n        }\n        else {\n            this.rowSpan = 1;\n            this.colSpan = 1;\n        }\n        // Stringify 0 and false, but not undefined or null\n        var text = content != null ? '' + content : '';\n        var splitRegex = /\\r\\n|\\r|\\n/g;\n        this.text = text.split(splitRegex);\n    }\n    Cell.prototype.getTextPos = function () {\n        var y;\n        if (this.styles.valign === 'top') {\n            y = this.y + this.padding('top');\n        }\n        else if (this.styles.valign === 'bottom') {\n            y = this.y + this.height - this.padding('bottom');\n        }\n        else {\n            var netHeight = this.height - this.padding('vertical');\n            y = this.y + netHeight / 2 + this.padding('top');\n        }\n        var x;\n        if (this.styles.halign === 'right') {\n            x = this.x + this.width - this.padding('right');\n        }\n        else if (this.styles.halign === 'center') {\n            var netWidth = this.width - this.padding('horizontal');\n            x = this.x + netWidth / 2 + this.padding('left');\n        }\n        else {\n            x = this.x + this.padding('left');\n        }\n        return { x: x, y: y };\n    };\n    // TODO (v4): replace parameters with only (lineHeight)\n    Cell.prototype.getContentHeight = function (scaleFactor, lineHeightFactor) {\n        if (lineHeightFactor === void 0) { lineHeightFactor = 1.15; }\n        var lineCount = Array.isArray(this.text) ? this.text.length : 1;\n        var lineHeight = (this.styles.fontSize / scaleFactor) * lineHeightFactor;\n        var height = lineCount * lineHeight + this.padding('vertical');\n        return Math.max(height, this.styles.minCellHeight);\n    };\n    Cell.prototype.padding = function (name) {\n        var padding = parseSpacing(this.styles.cellPadding, 0);\n        if (name === 'vertical') {\n            return padding.top + padding.bottom;\n        }\n        else if (name === 'horizontal') {\n            return padding.left + padding.right;\n        }\n        else {\n            return padding[name];\n        }\n    };\n    return Cell;\n}());\nvar Column = /** @class */ (function () {\n    function Column(dataKey, raw, index) {\n        this.wrappedWidth = 0;\n        this.minReadableWidth = 0;\n        this.minWidth = 0;\n        this.width = 0;\n        this.dataKey = dataKey;\n        this.raw = raw;\n        this.index = index;\n    }\n    Column.prototype.getMaxCustomCellWidth = function (table) {\n        var max = 0;\n        for (var _i = 0, _a = table.allRows(); _i < _a.length; _i++) {\n            var row = _a[_i];\n            var cell = row.cells[this.index];\n            if (cell && typeof cell.styles.cellWidth === 'number') {\n                max = Math.max(max, cell.styles.cellWidth);\n            }\n        }\n        return max;\n    };\n    return Column;\n}());\n\n/**\n * Calculate the column widths\n */\nfunction calculateWidths(doc, table) {\n    calculate(doc, table);\n    var resizableColumns = [];\n    var initialTableWidth = 0;\n    table.columns.forEach(function (column) {\n        var customWidth = column.getMaxCustomCellWidth(table);\n        if (customWidth) {\n            // final column width\n            column.width = customWidth;\n        }\n        else {\n            // initial column width (will be resized)\n            column.width = column.wrappedWidth;\n            resizableColumns.push(column);\n        }\n        initialTableWidth += column.width;\n    });\n    // width difference that needs to be distributed\n    var resizeWidth = table.getWidth(doc.pageSize().width) - initialTableWidth;\n    // first resize attempt: with respect to minReadableWidth and minWidth\n    if (resizeWidth) {\n        resizeWidth = resizeColumns(resizableColumns, resizeWidth, function (column) {\n            return Math.max(column.minReadableWidth, column.minWidth);\n        });\n    }\n    // second resize attempt: ignore minReadableWidth but respect minWidth\n    if (resizeWidth) {\n        resizeWidth = resizeColumns(resizableColumns, resizeWidth, function (column) { return column.minWidth; });\n    }\n    resizeWidth = Math.abs(resizeWidth);\n    if (!table.settings.horizontalPageBreak &&\n        resizeWidth > 0.1 / doc.scaleFactor()) {\n        // Table can't get smaller due to custom-width or minWidth restrictions\n        // We can't really do much here. Up to user to for example\n        // reduce font size, increase page size or remove custom cell widths\n        // to allow more columns to be reduced in size\n        resizeWidth = resizeWidth < 1 ? resizeWidth : Math.round(resizeWidth);\n        console.log(\"Of the table content, \".concat(resizeWidth, \" units width could not fit page\"));\n    }\n    applyColSpans(table);\n    fitContent(table, doc);\n    applyRowSpans(table);\n}\nfunction calculate(doc, table) {\n    var sf = doc.scaleFactor();\n    var horizontalPageBreak = table.settings.horizontalPageBreak;\n    var availablePageWidth = getPageAvailableWidth(doc, table);\n    table.allRows().forEach(function (row) {\n        for (var _i = 0, _a = table.columns; _i < _a.length; _i++) {\n            var column = _a[_i];\n            var cell = row.cells[column.index];\n            if (!cell)\n                continue;\n            var hooks = table.hooks.didParseCell;\n            table.callCellHooks(doc, hooks, cell, row, column, null);\n            var padding = cell.padding('horizontal');\n            cell.contentWidth = getStringWidth(cell.text, cell.styles, doc) + padding;\n            // Using [^\\S\\u00A0] instead of \\s ensures that we split the text on all\n            // whitespace except non-breaking spaces (\\u00A0). We need to preserve\n            // them in the split process to ensure correct word separation and width\n            // calculation.\n            var longestWordWidth = getStringWidth(cell.text.join(' ').split(/[^\\S\\u00A0]+/), cell.styles, doc);\n            cell.minReadableWidth = longestWordWidth + cell.padding('horizontal');\n            if (typeof cell.styles.cellWidth === 'number') {\n                cell.minWidth = cell.styles.cellWidth;\n                cell.wrappedWidth = cell.styles.cellWidth;\n            }\n            else if (cell.styles.cellWidth === 'wrap' ||\n                horizontalPageBreak === true) {\n                // cell width should not be more than available page width\n                if (cell.contentWidth > availablePageWidth) {\n                    cell.minWidth = availablePageWidth;\n                    cell.wrappedWidth = availablePageWidth;\n                }\n                else {\n                    cell.minWidth = cell.contentWidth;\n                    cell.wrappedWidth = cell.contentWidth;\n                }\n            }\n            else {\n                // auto\n                var defaultMinWidth = 10 / sf;\n                cell.minWidth = cell.styles.minCellWidth || defaultMinWidth;\n                cell.wrappedWidth = cell.contentWidth;\n                if (cell.minWidth > cell.wrappedWidth) {\n                    cell.wrappedWidth = cell.minWidth;\n                }\n            }\n        }\n    });\n    table.allRows().forEach(function (row) {\n        for (var _i = 0, _a = table.columns; _i < _a.length; _i++) {\n            var column = _a[_i];\n            var cell = row.cells[column.index];\n            // For now we ignore the minWidth and wrappedWidth of colspan cells when calculating colspan widths.\n            // Could probably be improved upon however.\n            if (cell && cell.colSpan === 1) {\n                column.wrappedWidth = Math.max(column.wrappedWidth, cell.wrappedWidth);\n                column.minWidth = Math.max(column.minWidth, cell.minWidth);\n                column.minReadableWidth = Math.max(column.minReadableWidth, cell.minReadableWidth);\n            }\n            else {\n                // Respect cellWidth set in columnStyles even if there is no cells for this column\n                // or if the column only have colspan cells. Since the width of colspan cells\n                // does not affect the width of columns, setting columnStyles cellWidth enables the\n                // user to at least do it manually.\n                // Note that this is not perfect for now since for example row and table styles are\n                // not accounted for\n                var columnStyles = table.styles.columnStyles[column.dataKey] ||\n                    table.styles.columnStyles[column.index] ||\n                    {};\n                var cellWidth = columnStyles.cellWidth || columnStyles.minCellWidth;\n                if (cellWidth && typeof cellWidth === 'number') {\n                    column.minWidth = cellWidth;\n                    column.wrappedWidth = cellWidth;\n                }\n            }\n            if (cell) {\n                // Make sure all columns get at least min width even though width calculations are not based on them\n                if (cell.colSpan > 1 && !column.minWidth) {\n                    column.minWidth = cell.minWidth;\n                }\n                if (cell.colSpan > 1 && !column.wrappedWidth) {\n                    column.wrappedWidth = cell.minWidth;\n                }\n            }\n        }\n    });\n}\n/**\n * Distribute resizeWidth on passed resizable columns\n */\nfunction resizeColumns(columns, resizeWidth, getMinWidth) {\n    var initialResizeWidth = resizeWidth;\n    var sumWrappedWidth = columns.reduce(function (acc, column) { return acc + column.wrappedWidth; }, 0);\n    for (var i = 0; i < columns.length; i++) {\n        var column = columns[i];\n        var ratio = column.wrappedWidth / sumWrappedWidth;\n        var suggestedChange = initialResizeWidth * ratio;\n        var suggestedWidth = column.width + suggestedChange;\n        var minWidth = getMinWidth(column);\n        var newWidth = suggestedWidth < minWidth ? minWidth : suggestedWidth;\n        resizeWidth -= newWidth - column.width;\n        column.width = newWidth;\n    }\n    resizeWidth = Math.round(resizeWidth * 1e10) / 1e10;\n    // Run the resizer again if there's remaining width needs\n    // to be distributed and there're columns that can be resized\n    if (resizeWidth) {\n        var resizableColumns = columns.filter(function (column) {\n            return resizeWidth < 0\n                ? column.width > getMinWidth(column) // check if column can shrink\n                : true; // check if column can grow\n        });\n        if (resizableColumns.length) {\n            resizeWidth = resizeColumns(resizableColumns, resizeWidth, getMinWidth);\n        }\n    }\n    return resizeWidth;\n}\nfunction applyRowSpans(table) {\n    var rowSpanCells = {};\n    var colRowSpansLeft = 1;\n    var all = table.allRows();\n    for (var rowIndex = 0; rowIndex < all.length; rowIndex++) {\n        var row = all[rowIndex];\n        for (var _i = 0, _a = table.columns; _i < _a.length; _i++) {\n            var column = _a[_i];\n            var data = rowSpanCells[column.index];\n            if (colRowSpansLeft > 1) {\n                colRowSpansLeft--;\n                delete row.cells[column.index];\n            }\n            else if (data) {\n                data.cell.height += row.height;\n                colRowSpansLeft = data.cell.colSpan;\n                delete row.cells[column.index];\n                data.left--;\n                if (data.left <= 1) {\n                    delete rowSpanCells[column.index];\n                }\n            }\n            else {\n                var cell = row.cells[column.index];\n                if (!cell) {\n                    continue;\n                }\n                cell.height = row.height;\n                if (cell.rowSpan > 1) {\n                    var remaining = all.length - rowIndex;\n                    var left = cell.rowSpan > remaining ? remaining : cell.rowSpan;\n                    rowSpanCells[column.index] = { cell: cell, left: left, row: row };\n                }\n            }\n        }\n    }\n}\nfunction applyColSpans(table) {\n    var all = table.allRows();\n    for (var rowIndex = 0; rowIndex < all.length; rowIndex++) {\n        var row = all[rowIndex];\n        var colSpanCell = null;\n        var combinedColSpanWidth = 0;\n        var colSpansLeft = 0;\n        for (var columnIndex = 0; columnIndex < table.columns.length; columnIndex++) {\n            var column = table.columns[columnIndex];\n            // Width and colspan\n            colSpansLeft -= 1;\n            if (colSpansLeft > 1 && table.columns[columnIndex + 1]) {\n                combinedColSpanWidth += column.width;\n                delete row.cells[column.index];\n            }\n            else if (colSpanCell) {\n                var cell = colSpanCell;\n                delete row.cells[column.index];\n                colSpanCell = null;\n                cell.width = column.width + combinedColSpanWidth;\n            }\n            else {\n                var cell = row.cells[column.index];\n                if (!cell)\n                    continue;\n                colSpansLeft = cell.colSpan;\n                combinedColSpanWidth = 0;\n                if (cell.colSpan > 1) {\n                    colSpanCell = cell;\n                    combinedColSpanWidth += column.width;\n                    continue;\n                }\n                cell.width = column.width + combinedColSpanWidth;\n            }\n        }\n    }\n}\nfunction fitContent(table, doc) {\n    var rowSpanHeight = { count: 0, height: 0 };\n    for (var _i = 0, _a = table.allRows(); _i < _a.length; _i++) {\n        var row = _a[_i];\n        for (var _b = 0, _c = table.columns; _b < _c.length; _b++) {\n            var column = _c[_b];\n            var cell = row.cells[column.index];\n            if (!cell)\n                continue;\n            doc.applyStyles(cell.styles, true);\n            var textSpace = cell.width - cell.padding('horizontal');\n            if (cell.styles.overflow === 'linebreak') {\n                // Add one pt to textSpace to fix rounding error\n                cell.text = doc.splitTextToSize(cell.text, textSpace + 1 / doc.scaleFactor(), { fontSize: cell.styles.fontSize });\n            }\n            else if (cell.styles.overflow === 'ellipsize') {\n                cell.text = ellipsize(cell.text, textSpace, cell.styles, doc, '...');\n            }\n            else if (cell.styles.overflow === 'hidden') {\n                cell.text = ellipsize(cell.text, textSpace, cell.styles, doc, '');\n            }\n            else if (typeof cell.styles.overflow === 'function') {\n                var result = cell.styles.overflow(cell.text, textSpace);\n                if (typeof result === 'string') {\n                    cell.text = [result];\n                }\n                else {\n                    cell.text = result;\n                }\n            }\n            cell.contentHeight = cell.getContentHeight(doc.scaleFactor(), doc.getLineHeightFactor());\n            var realContentHeight = cell.contentHeight / cell.rowSpan;\n            if (cell.rowSpan > 1 &&\n                rowSpanHeight.count * rowSpanHeight.height <\n                    realContentHeight * cell.rowSpan) {\n                rowSpanHeight = { height: realContentHeight, count: cell.rowSpan };\n            }\n            else if (rowSpanHeight && rowSpanHeight.count > 0) {\n                if (rowSpanHeight.height > realContentHeight) {\n                    realContentHeight = rowSpanHeight.height;\n                }\n            }\n            if (realContentHeight > row.height) {\n                row.height = realContentHeight;\n            }\n        }\n        rowSpanHeight.count--;\n    }\n}\nfunction ellipsize(text, width, styles, doc, overflow) {\n    return text.map(function (str) { return ellipsizeStr(str, width, styles, doc, overflow); });\n}\nfunction ellipsizeStr(text, width, styles, doc, overflow) {\n    var precision = 10000 * doc.scaleFactor();\n    width = Math.ceil(width * precision) / precision;\n    if (width >= getStringWidth(text, styles, doc)) {\n        return text;\n    }\n    while (width < getStringWidth(text + overflow, styles, doc)) {\n        if (text.length <= 1) {\n            break;\n        }\n        text = text.substring(0, text.length - 1);\n    }\n    return text.trim() + overflow;\n}\n\nfunction createTable(jsPDFDoc, input) {\n    var doc = new DocHandler(jsPDFDoc);\n    var content = parseContent(input, doc.scaleFactor());\n    var table = new Table(input, content);\n    calculateWidths(doc, table);\n    doc.applyStyles(doc.userStyles);\n    return table;\n}\nfunction parseContent(input, sf) {\n    var content = input.content;\n    var columns = createColumns(content.columns);\n    // If no head or foot is set, try generating it with content from columns\n    if (content.head.length === 0) {\n        var sectionRow = generateSectionRow(columns, 'head');\n        if (sectionRow)\n            content.head.push(sectionRow);\n    }\n    if (content.foot.length === 0) {\n        var sectionRow = generateSectionRow(columns, 'foot');\n        if (sectionRow)\n            content.foot.push(sectionRow);\n    }\n    var theme = input.settings.theme;\n    var styles = input.styles;\n    return {\n        columns: columns,\n        head: parseSection('head', content.head, columns, styles, theme, sf),\n        body: parseSection('body', content.body, columns, styles, theme, sf),\n        foot: parseSection('foot', content.foot, columns, styles, theme, sf),\n    };\n}\nfunction parseSection(sectionName, sectionRows, columns, styleProps, theme, scaleFactor) {\n    var rowSpansLeftForColumn = {};\n    var result = sectionRows.map(function (rawRow, rowIndex) {\n        var skippedRowForRowSpans = 0;\n        var cells = {};\n        var colSpansAdded = 0;\n        var columnSpansLeft = 0;\n        for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n            var column = columns_1[_i];\n            if (rowSpansLeftForColumn[column.index] == null ||\n                rowSpansLeftForColumn[column.index].left === 0) {\n                if (columnSpansLeft === 0) {\n                    var rawCell = void 0;\n                    if (Array.isArray(rawRow)) {\n                        rawCell =\n                            rawRow[column.index - colSpansAdded - skippedRowForRowSpans];\n                    }\n                    else {\n                        rawCell = rawRow[column.dataKey];\n                    }\n                    var cellInputStyles = {};\n                    if (typeof rawCell === 'object' && !Array.isArray(rawCell)) {\n                        cellInputStyles = (rawCell === null || rawCell === void 0 ? void 0 : rawCell.styles) || {};\n                    }\n                    var styles = cellStyles(sectionName, column, rowIndex, theme, styleProps, scaleFactor, cellInputStyles);\n                    var cell = new Cell(rawCell, styles, sectionName);\n                    // dataKey is not used internally no more but keep for\n                    // backwards compat in hooks\n                    cells[column.dataKey] = cell;\n                    cells[column.index] = cell;\n                    columnSpansLeft = cell.colSpan - 1;\n                    rowSpansLeftForColumn[column.index] = {\n                        left: cell.rowSpan - 1,\n                        times: columnSpansLeft,\n                    };\n                }\n                else {\n                    columnSpansLeft--;\n                    colSpansAdded++;\n                }\n            }\n            else {\n                rowSpansLeftForColumn[column.index].left--;\n                columnSpansLeft = rowSpansLeftForColumn[column.index].times;\n                skippedRowForRowSpans++;\n            }\n        }\n        return new Row(rawRow, rowIndex, sectionName, cells);\n    });\n    return result;\n}\nfunction generateSectionRow(columns, section) {\n    var sectionRow = {};\n    columns.forEach(function (col) {\n        if (col.raw != null) {\n            var title = getSectionTitle(section, col.raw);\n            if (title != null)\n                sectionRow[col.dataKey] = title;\n        }\n    });\n    return Object.keys(sectionRow).length > 0 ? sectionRow : null;\n}\nfunction getSectionTitle(section, column) {\n    if (section === 'head') {\n        if (typeof column === 'object') {\n            return column.header || null;\n        }\n        else if (typeof column === 'string' || typeof column === 'number') {\n            return column;\n        }\n    }\n    else if (section === 'foot' && typeof column === 'object') {\n        return column.footer;\n    }\n    return null;\n}\nfunction createColumns(columns) {\n    return columns.map(function (input, index) {\n        var _a;\n        var key;\n        if (typeof input === 'object') {\n            key = (_a = input.dataKey) !== null && _a !== void 0 ? _a : index;\n        }\n        else {\n            key = index;\n        }\n        return new Column(key, input, index);\n    });\n}\nfunction cellStyles(sectionName, column, rowIndex, themeName, styles, scaleFactor, cellInputStyles) {\n    var theme = getTheme(themeName);\n    var sectionStyles;\n    if (sectionName === 'head') {\n        sectionStyles = styles.headStyles;\n    }\n    else if (sectionName === 'body') {\n        sectionStyles = styles.bodyStyles;\n    }\n    else if (sectionName === 'foot') {\n        sectionStyles = styles.footStyles;\n    }\n    var otherStyles = assign({}, theme.table, theme[sectionName], styles.styles, sectionStyles);\n    var columnStyles = styles.columnStyles[column.dataKey] ||\n        styles.columnStyles[column.index] ||\n        {};\n    var colStyles = sectionName === 'body' ? columnStyles : {};\n    var rowStyles = sectionName === 'body' && rowIndex % 2 === 0\n        ? assign({}, theme.alternateRow, styles.alternateRowStyles)\n        : {};\n    var defaultStyle = defaultStyles(scaleFactor);\n    var themeStyles = assign({}, defaultStyle, otherStyles, rowStyles, colStyles);\n    return assign(themeStyles, cellInputStyles);\n}\n\n// get columns can be fit into page\nfunction getColumnsCanFitInPage(doc, table, config) {\n    var _a;\n    if (config === void 0) { config = {}; }\n    // Get page width\n    var remainingWidth = getPageAvailableWidth(doc, table);\n    // Get column data key to repeat\n    var repeatColumnsMap = new Map();\n    var colIndexes = [];\n    var columns = [];\n    var horizontalPageBreakRepeat = [];\n    if (Array.isArray(table.settings.horizontalPageBreakRepeat)) {\n        horizontalPageBreakRepeat = table.settings.horizontalPageBreakRepeat;\n        // It can be a single value of type string or number (even number: 0)\n    }\n    else if (typeof table.settings.horizontalPageBreakRepeat === 'string' ||\n        typeof table.settings.horizontalPageBreakRepeat === 'number') {\n        horizontalPageBreakRepeat = [table.settings.horizontalPageBreakRepeat];\n    }\n    // Code to repeat the given column in split pages\n    horizontalPageBreakRepeat.forEach(function (field) {\n        var col = table.columns.find(function (item) { return item.dataKey === field || item.index === field; });\n        if (col && !repeatColumnsMap.has(col.index)) {\n            repeatColumnsMap.set(col.index, true);\n            colIndexes.push(col.index);\n            columns.push(table.columns[col.index]);\n            remainingWidth -= col.wrappedWidth;\n        }\n    });\n    var first = true;\n    var i = (_a = config === null || config === void 0 ? void 0 : config.start) !== null && _a !== void 0 ? _a : 0; // make sure couter is initiated outside the loop\n    while (i < table.columns.length) {\n        // Prevent duplicates\n        if (repeatColumnsMap.has(i)) {\n            i++;\n            continue;\n        }\n        var colWidth = table.columns[i].wrappedWidth;\n        // Take at least one column even if it doesn't fit\n        if (first || remainingWidth >= colWidth) {\n            first = false;\n            colIndexes.push(i);\n            columns.push(table.columns[i]);\n            remainingWidth -= colWidth;\n        }\n        else {\n            break;\n        }\n        i++;\n    }\n    return { colIndexes: colIndexes, columns: columns, lastIndex: i - 1 };\n}\nfunction calculateAllColumnsCanFitInPage(doc, table) {\n    var allResults = [];\n    for (var i = 0; i < table.columns.length; i++) {\n        var result = getColumnsCanFitInPage(doc, table, { start: i });\n        if (result.columns.length) {\n            allResults.push(result);\n            i = result.lastIndex;\n        }\n    }\n    return allResults;\n}\n\nfunction drawTable(jsPDFDoc, table) {\n    var settings = table.settings;\n    var startY = settings.startY;\n    var margin = settings.margin;\n    var cursor = { x: margin.left, y: startY };\n    var sectionsHeight = table.getHeadHeight(table.columns) + table.getFootHeight(table.columns);\n    var minTableBottomPos = startY + margin.bottom + sectionsHeight;\n    if (settings.pageBreak === 'avoid') {\n        var rows = table.body;\n        var tableHeight = rows.reduce(function (acc, row) { return acc + row.height; }, 0);\n        minTableBottomPos += tableHeight;\n    }\n    var doc = new DocHandler(jsPDFDoc);\n    if (settings.pageBreak === 'always' ||\n        (settings.startY != null && minTableBottomPos > doc.pageSize().height)) {\n        nextPage(doc);\n        cursor.y = margin.top;\n    }\n    table.callWillDrawPageHooks(doc, cursor);\n    var startPos = assign({}, cursor);\n    table.startPageNumber = doc.pageNumber();\n    if (settings.horizontalPageBreak) {\n        // managed flow for split columns\n        printTableWithHorizontalPageBreak(doc, table, startPos, cursor);\n    }\n    else {\n        // normal flow\n        doc.applyStyles(doc.userStyles);\n        if (settings.showHead === 'firstPage' ||\n            settings.showHead === 'everyPage') {\n            table.head.forEach(function (row) {\n                return printRow(doc, table, row, cursor, table.columns);\n            });\n        }\n        doc.applyStyles(doc.userStyles);\n        table.body.forEach(function (row, index) {\n            var isLastRow = index === table.body.length - 1;\n            printFullRow(doc, table, row, isLastRow, startPos, cursor, table.columns);\n        });\n        doc.applyStyles(doc.userStyles);\n        if (settings.showFoot === 'lastPage' || settings.showFoot === 'everyPage') {\n            table.foot.forEach(function (row) {\n                return printRow(doc, table, row, cursor, table.columns);\n            });\n        }\n    }\n    addTableBorder(doc, table, startPos, cursor);\n    table.callEndPageHooks(doc, cursor);\n    table.finalY = cursor.y;\n    jsPDFDoc.lastAutoTable = table;\n    doc.applyStyles(doc.userStyles);\n}\nfunction printTableWithHorizontalPageBreak(doc, table, startPos, cursor) {\n    // calculate width of columns and render only those which can fit into page\n    var allColumnsCanFitResult = calculateAllColumnsCanFitInPage(doc, table);\n    var settings = table.settings;\n    if (settings.horizontalPageBreakBehaviour === 'afterAllRows') {\n        allColumnsCanFitResult.forEach(function (colsAndIndexes, index) {\n            doc.applyStyles(doc.userStyles);\n            // add page to print next columns in new page\n            if (index > 0) {\n                // When adding a page here, make sure not to print the footers\n                // because they were already printed before on this same loop\n                addPage(doc, table, startPos, cursor, colsAndIndexes.columns, true);\n            }\n            else {\n                // print head for selected columns\n                printHead(doc, table, cursor, colsAndIndexes.columns);\n            }\n            // print body & footer for selected columns\n            printBody(doc, table, startPos, cursor, colsAndIndexes.columns);\n            printFoot(doc, table, cursor, colsAndIndexes.columns);\n        });\n    }\n    else {\n        var lastRowIndexOfLastPage_1 = -1;\n        var firstColumnsToFitResult = allColumnsCanFitResult[0];\n        var _loop_1 = function () {\n            // Print the first columns, taking note of the last row printed\n            var lastPrintedRowIndex = lastRowIndexOfLastPage_1;\n            if (firstColumnsToFitResult) {\n                doc.applyStyles(doc.userStyles);\n                var firstColumnsToFit = firstColumnsToFitResult.columns;\n                if (lastRowIndexOfLastPage_1 >= 0) {\n                    // When adding a page here, make sure not to print the footers\n                    // because they were already printed before on this same loop\n                    addPage(doc, table, startPos, cursor, firstColumnsToFit, true);\n                }\n                else {\n                    printHead(doc, table, cursor, firstColumnsToFit);\n                }\n                lastPrintedRowIndex = printBodyWithoutPageBreaks(doc, table, lastRowIndexOfLastPage_1 + 1, cursor, firstColumnsToFit);\n                printFoot(doc, table, cursor, firstColumnsToFit);\n            }\n            // Check how many rows were printed, so that the next columns would not print more rows than that\n            var maxNumberOfRows = lastPrintedRowIndex - lastRowIndexOfLastPage_1;\n            // Print the next columns, never exceding maxNumberOfRows\n            allColumnsCanFitResult.slice(1).forEach(function (colsAndIndexes) {\n                doc.applyStyles(doc.userStyles);\n                // When adding a page here, make sure not to print the footers\n                // because they were already printed before on this same loop\n                addPage(doc, table, startPos, cursor, colsAndIndexes.columns, true);\n                printBodyWithoutPageBreaks(doc, table, lastRowIndexOfLastPage_1 + 1, cursor, colsAndIndexes.columns, maxNumberOfRows);\n                printFoot(doc, table, cursor, colsAndIndexes.columns);\n            });\n            lastRowIndexOfLastPage_1 = lastPrintedRowIndex;\n        };\n        while (lastRowIndexOfLastPage_1 < table.body.length - 1) {\n            _loop_1();\n        }\n    }\n}\nfunction printHead(doc, table, cursor, columns) {\n    var settings = table.settings;\n    doc.applyStyles(doc.userStyles);\n    if (settings.showHead === 'firstPage' || settings.showHead === 'everyPage') {\n        table.head.forEach(function (row) { return printRow(doc, table, row, cursor, columns); });\n    }\n}\nfunction printBody(doc, table, startPos, cursor, columns) {\n    doc.applyStyles(doc.userStyles);\n    table.body.forEach(function (row, index) {\n        var isLastRow = index === table.body.length - 1;\n        printFullRow(doc, table, row, isLastRow, startPos, cursor, columns);\n    });\n}\nfunction printBodyWithoutPageBreaks(doc, table, startRowIndex, cursor, columns, maxNumberOfRows) {\n    doc.applyStyles(doc.userStyles);\n    maxNumberOfRows = maxNumberOfRows !== null && maxNumberOfRows !== void 0 ? maxNumberOfRows : table.body.length;\n    var endRowIndex = Math.min(startRowIndex + maxNumberOfRows, table.body.length);\n    var lastPrintedRowIndex = -1;\n    table.body.slice(startRowIndex, endRowIndex).forEach(function (row, index) {\n        var isLastRow = startRowIndex + index === table.body.length - 1;\n        var remainingSpace = getRemainingPageSpace(doc, table, isLastRow, cursor);\n        if (row.canEntireRowFit(remainingSpace, columns)) {\n            printRow(doc, table, row, cursor, columns);\n            lastPrintedRowIndex = startRowIndex + index;\n        }\n    });\n    return lastPrintedRowIndex;\n}\nfunction printFoot(doc, table, cursor, columns) {\n    var settings = table.settings;\n    doc.applyStyles(doc.userStyles);\n    if (settings.showFoot === 'lastPage' || settings.showFoot === 'everyPage') {\n        table.foot.forEach(function (row) { return printRow(doc, table, row, cursor, columns); });\n    }\n}\nfunction getRemainingLineCount(cell, remainingPageSpace, doc) {\n    var lineHeight = doc.getLineHeight(cell.styles.fontSize);\n    var vPadding = cell.padding('vertical');\n    var remainingLines = Math.floor((remainingPageSpace - vPadding) / lineHeight);\n    return Math.max(0, remainingLines);\n}\nfunction modifyRowToFit(row, remainingPageSpace, table, doc) {\n    var cells = {};\n    row.spansMultiplePages = true;\n    row.height = 0;\n    var rowHeight = 0;\n    for (var _i = 0, _a = table.columns; _i < _a.length; _i++) {\n        var column = _a[_i];\n        var cell = row.cells[column.index];\n        if (!cell)\n            continue;\n        if (!Array.isArray(cell.text)) {\n            cell.text = [cell.text];\n        }\n        var remainderCell = new Cell(cell.raw, cell.styles, cell.section);\n        remainderCell = assign(remainderCell, cell);\n        remainderCell.text = [];\n        var remainingLineCount = getRemainingLineCount(cell, remainingPageSpace, doc);\n        if (cell.text.length > remainingLineCount) {\n            remainderCell.text = cell.text.splice(remainingLineCount, cell.text.length);\n        }\n        var scaleFactor = doc.scaleFactor();\n        var lineHeightFactor = doc.getLineHeightFactor();\n        cell.contentHeight = cell.getContentHeight(scaleFactor, lineHeightFactor);\n        if (cell.contentHeight >= remainingPageSpace) {\n            cell.contentHeight = remainingPageSpace;\n            remainderCell.styles.minCellHeight -= remainingPageSpace;\n        }\n        if (cell.contentHeight > row.height) {\n            row.height = cell.contentHeight;\n        }\n        remainderCell.contentHeight = remainderCell.getContentHeight(scaleFactor, lineHeightFactor);\n        if (remainderCell.contentHeight > rowHeight) {\n            rowHeight = remainderCell.contentHeight;\n        }\n        cells[column.index] = remainderCell;\n    }\n    var remainderRow = new Row(row.raw, -1, row.section, cells, true);\n    remainderRow.height = rowHeight;\n    for (var _b = 0, _c = table.columns; _b < _c.length; _b++) {\n        var column = _c[_b];\n        var remainderCell = remainderRow.cells[column.index];\n        if (remainderCell) {\n            remainderCell.height = remainderRow.height;\n        }\n        var cell = row.cells[column.index];\n        if (cell) {\n            cell.height = row.height;\n        }\n    }\n    return remainderRow;\n}\nfunction shouldPrintOnCurrentPage(doc, row, remainingPageSpace, table) {\n    var pageHeight = doc.pageSize().height;\n    var margin = table.settings.margin;\n    var marginHeight = margin.top + margin.bottom;\n    var maxRowHeight = pageHeight - marginHeight;\n    if (row.section === 'body') {\n        // Should also take into account that head and foot is not\n        // on every page with some settings\n        maxRowHeight -=\n            table.getHeadHeight(table.columns) + table.getFootHeight(table.columns);\n    }\n    var minRowHeight = row.getMinimumRowHeight(table.columns, doc);\n    var minRowFits = minRowHeight < remainingPageSpace;\n    if (minRowHeight > maxRowHeight) {\n        console.log(\"Will not be able to print row \".concat(row.index, \" correctly since it's minimum height is larger than page height\"));\n        return true;\n    }\n    if (!minRowFits) {\n        return false;\n    }\n    var rowHasRowSpanCell = row.hasRowSpan(table.columns);\n    var rowHigherThanPage = row.getMaxCellHeight(table.columns) > maxRowHeight;\n    if (rowHigherThanPage) {\n        if (rowHasRowSpanCell) {\n            console.log(\"The content of row \".concat(row.index, \" will not be drawn correctly since drawing rows with a height larger than the page height and has cells with rowspans is not supported.\"));\n        }\n        return true;\n    }\n    if (rowHasRowSpanCell) {\n        // Currently a new page is required whenever a rowspan row don't fit a page.\n        return false;\n    }\n    if (table.settings.rowPageBreak === 'avoid') {\n        return false;\n    }\n    // In all other cases print the row on current page\n    return true;\n}\nfunction printFullRow(doc, table, row, isLastRow, startPos, cursor, columns) {\n    var remainingSpace = getRemainingPageSpace(doc, table, isLastRow, cursor);\n    if (row.canEntireRowFit(remainingSpace, columns)) {\n        // The row fits in the current page\n        printRow(doc, table, row, cursor, columns);\n    }\n    else if (shouldPrintOnCurrentPage(doc, row, remainingSpace, table)) {\n        // The row gets split in two here, each piece in one page\n        var remainderRow = modifyRowToFit(row, remainingSpace, table, doc);\n        printRow(doc, table, row, cursor, columns);\n        addPage(doc, table, startPos, cursor, columns);\n        printFullRow(doc, table, remainderRow, isLastRow, startPos, cursor, columns);\n    }\n    else {\n        // The row get printed entirelly on the next page\n        addPage(doc, table, startPos, cursor, columns);\n        printFullRow(doc, table, row, isLastRow, startPos, cursor, columns);\n    }\n}\nfunction printRow(doc, table, row, cursor, columns) {\n    cursor.x = table.settings.margin.left;\n    for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n        var column = columns_1[_i];\n        var cell = row.cells[column.index];\n        if (!cell) {\n            cursor.x += column.width;\n            continue;\n        }\n        doc.applyStyles(cell.styles);\n        cell.x = cursor.x;\n        cell.y = cursor.y;\n        var result = table.callCellHooks(doc, table.hooks.willDrawCell, cell, row, column, cursor);\n        if (result === false) {\n            cursor.x += column.width;\n            continue;\n        }\n        drawCellRect(doc, cell, cursor);\n        var textPos = cell.getTextPos();\n        autoTableText(cell.text, textPos.x, textPos.y, {\n            halign: cell.styles.halign,\n            valign: cell.styles.valign,\n            maxWidth: Math.ceil(cell.width - cell.padding('left') - cell.padding('right')),\n        }, doc.getDocument());\n        table.callCellHooks(doc, table.hooks.didDrawCell, cell, row, column, cursor);\n        cursor.x += column.width;\n    }\n    cursor.y += row.height;\n}\nfunction drawCellRect(doc, cell, cursor) {\n    var cellStyles = cell.styles;\n    // https://github.com/simonbengtsson/jsPDF-AutoTable/issues/774\n    // TODO (v4): better solution?\n    doc.getDocument().setFillColor(doc.getDocument().getFillColor());\n    if (typeof cellStyles.lineWidth === 'number') {\n        // Draw cell background with normal borders\n        var fillStyle = getFillStyle(cellStyles.lineWidth, cellStyles.fillColor);\n        if (fillStyle) {\n            doc.rect(cell.x, cursor.y, cell.width, cell.height, fillStyle);\n        }\n    }\n    else if (typeof cellStyles.lineWidth === 'object') {\n        // Draw cell background\n        if (cellStyles.fillColor) {\n            doc.rect(cell.x, cursor.y, cell.width, cell.height, 'F');\n        }\n        // Draw cell individual borders\n        drawCellBorders(doc, cell, cursor, cellStyles.lineWidth);\n    }\n}\n/**\n * Draw all specified borders. Borders are centered on cell's edge and lengthened\n * to overlap with neighbours to create sharp corners.\n * @param doc\n * @param cell\n * @param cursor\n * @param fillColor\n * @param lineWidth\n */\nfunction drawCellBorders(doc, cell, cursor, lineWidth) {\n    var x1, y1, x2, y2;\n    if (lineWidth.top) {\n        x1 = cursor.x;\n        y1 = cursor.y;\n        x2 = cursor.x + cell.width;\n        y2 = cursor.y;\n        if (lineWidth.right) {\n            x2 += 0.5 * lineWidth.right;\n        }\n        if (lineWidth.left) {\n            x1 -= 0.5 * lineWidth.left;\n        }\n        drawLine(lineWidth.top, x1, y1, x2, y2);\n    }\n    if (lineWidth.bottom) {\n        x1 = cursor.x;\n        y1 = cursor.y + cell.height;\n        x2 = cursor.x + cell.width;\n        y2 = cursor.y + cell.height;\n        if (lineWidth.right) {\n            x2 += 0.5 * lineWidth.right;\n        }\n        if (lineWidth.left) {\n            x1 -= 0.5 * lineWidth.left;\n        }\n        drawLine(lineWidth.bottom, x1, y1, x2, y2);\n    }\n    if (lineWidth.left) {\n        x1 = cursor.x;\n        y1 = cursor.y;\n        x2 = cursor.x;\n        y2 = cursor.y + cell.height;\n        if (lineWidth.top) {\n            y1 -= 0.5 * lineWidth.top;\n        }\n        if (lineWidth.bottom) {\n            y2 += 0.5 * lineWidth.bottom;\n        }\n        drawLine(lineWidth.left, x1, y1, x2, y2);\n    }\n    if (lineWidth.right) {\n        x1 = cursor.x + cell.width;\n        y1 = cursor.y;\n        x2 = cursor.x + cell.width;\n        y2 = cursor.y + cell.height;\n        if (lineWidth.top) {\n            y1 -= 0.5 * lineWidth.top;\n        }\n        if (lineWidth.bottom) {\n            y2 += 0.5 * lineWidth.bottom;\n        }\n        drawLine(lineWidth.right, x1, y1, x2, y2);\n    }\n    function drawLine(width, x1, y1, x2, y2) {\n        doc.getDocument().setLineWidth(width);\n        doc.getDocument().line(x1, y1, x2, y2, 'S');\n    }\n}\nfunction getRemainingPageSpace(doc, table, isLastRow, cursor) {\n    var bottomContentHeight = table.settings.margin.bottom;\n    var showFoot = table.settings.showFoot;\n    if (showFoot === 'everyPage' || (showFoot === 'lastPage' && isLastRow)) {\n        bottomContentHeight += table.getFootHeight(table.columns);\n    }\n    return doc.pageSize().height - cursor.y - bottomContentHeight;\n}\nfunction addPage(doc, table, startPos, cursor, columns, suppressFooter) {\n    if (columns === void 0) { columns = []; }\n    if (suppressFooter === void 0) { suppressFooter = false; }\n    doc.applyStyles(doc.userStyles);\n    if (table.settings.showFoot === 'everyPage' && !suppressFooter) {\n        table.foot.forEach(function (row) { return printRow(doc, table, row, cursor, columns); });\n    }\n    // Add user content just before adding new page ensure it will\n    // be drawn above other things on the page\n    table.callEndPageHooks(doc, cursor);\n    var margin = table.settings.margin;\n    addTableBorder(doc, table, startPos, cursor);\n    nextPage(doc);\n    table.pageNumber++;\n    cursor.x = margin.left;\n    cursor.y = margin.top;\n    startPos.y = margin.top;\n    // call didAddPage hooks before any content is added to the page\n    table.callWillDrawPageHooks(doc, cursor);\n    if (table.settings.showHead === 'everyPage') {\n        table.head.forEach(function (row) { return printRow(doc, table, row, cursor, columns); });\n        doc.applyStyles(doc.userStyles);\n    }\n}\nfunction nextPage(doc) {\n    var current = doc.pageNumber();\n    doc.setPage(current + 1);\n    var newCurrent = doc.pageNumber();\n    if (newCurrent === current) {\n        doc.addPage();\n        return true;\n    }\n    return false;\n}\n\nfunction applyPlugin(jsPDF) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    jsPDF.API.autoTable = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var options = args[0];\n        var input = parseInput(this, options);\n        var table = createTable(this, input);\n        drawTable(this, table);\n        return this;\n    };\n    // Assign false to enable `doc.lastAutoTable.finalY || 40` sugar\n    jsPDF.API.lastAutoTable = false;\n    jsPDF.API.autoTableText = function (text, x, y, styles) {\n        autoTableText(text, x, y, styles, this);\n    };\n    jsPDF.API.autoTableSetDefaults = function (defaults) {\n        DocHandler.setDefaults(defaults, this);\n        return this;\n    };\n    jsPDF.autoTableSetDefaults = function (defaults, doc) {\n        DocHandler.setDefaults(defaults, doc);\n    };\n    jsPDF.API.autoTableHtmlToJson = function (tableElem, includeHiddenElements) {\n        var _a;\n        if (includeHiddenElements === void 0) { includeHiddenElements = false; }\n        if (typeof window === 'undefined') {\n            console.error('Cannot run autoTableHtmlToJson in non browser environment');\n            return null;\n        }\n        var doc = new DocHandler(this);\n        var _b = parseHtml(doc, tableElem, window, includeHiddenElements, false), head = _b.head, body = _b.body;\n        var columns = ((_a = head[0]) === null || _a === void 0 ? void 0 : _a.map(function (c) { return c.content; })) || [];\n        return { columns: columns, rows: body, data: body };\n    };\n}\n\nvar _a;\nfunction autoTable(d, options) {\n    var input = parseInput(d, options);\n    var table = createTable(d, input);\n    drawTable(d, table);\n}\n// Experimental export\nfunction __createTable(d, options) {\n    var input = parseInput(d, options);\n    return createTable(d, input);\n}\nfunction __drawTable(d, table) {\n    drawTable(d, table);\n}\ntry {\n    if (typeof window !== 'undefined' && window) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        var anyWindow = window;\n        var jsPDF = anyWindow.jsPDF || ((_a = anyWindow.jspdf) === null || _a === void 0 ? void 0 : _a.jsPDF);\n        if (jsPDF) {\n            applyPlugin(jsPDF);\n        }\n    }\n}\ncatch (error) {\n    console.error('Could not apply autoTable plugin', error);\n}\n\nexport { Cell, CellHookData, Column, HookData, Row, Table, __createTable, __drawTable, applyPlugin, autoTable, autoTable as default };\n", "import * as React from 'react';\n\nexport function ArrowRight(props: { fill?: string }): JSX.Element {\n    const fill: string = props.fill || \"currentColor\";\n\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path d=\"M22.7088 11.1614C23.3159 11.5557 23.3159 12.4443 22.7088 12.8386L9.5447 21.389C8.87943 21.8211 8 21.3436 8 20.5504V3.44964C8 2.65635 8.87943 2.1789 9.5447 2.61101L22.7088 11.1614Z\"\n                fill={fill}/>\n            <rect y=\"8\" width=\"9.33333\" height=\"8\" rx=\"1\" fill={fill}/>\n        </svg>\n    )\n}\n", "import React, {ReactElement, useEffect, useState} from \"react\"\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport i18next from \"i18next\";\nimport {NavLink} from \"react-router-dom\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {ListWrapper} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {lightPrimary} from \"@root/react-components/src/values/colors/colors\";\nimport {Box, styled} from \"@mui/material\";\nimport {ViewSubtitle} from \"@root/Frontend/Console/components/ViewSubtitle\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {AttemptsList} from \"@root/Frontend/Console/widgets/lists/AttemptsList\";\nimport {Attempt} from \"@root/react-components/src/icons/Attempt\";\nimport {FiltersInterface} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {parseAttemptsByFilters} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport {getSequenceLogsCsv} from \"@root/Frontend/Console/utils/UtilsAttempts\";\n\nconst ListContainer = styled(Box)({\n    flex: 1,\n    display: \"flex\",\n    flexDirection: \"column\",\n});\n\nconst TitleWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"end\",\n});\n\nconst RightHeaderContainer = styled(Box)({\n    display: \"flex\",\n    font: primaryFontMedium,\n    alignItems: \"center\",\n    padding: \"24px 0 12px\",\n    gap: \"8px\"\n});\n\nconst AttemptCountWrapper = styled(Box)({\n    display: \"flex\",\n    alignItem: \"center\",\n    \"& svg\" : {\n        marginLeft: \"3px\",\n        height: \"16px\",\n        width: \"16px\",\n    }\n});\n\ninterface AttemptsListProps {\n    sequenceID: bigint;\n    worldID: bigint;\n    filters: FiltersInterface;\n}\n\nexport function AttemptsListSection(props: AttemptsListProps): ReactElement {\n    const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n    const [attemptsLength, setAttemptsLength] = useState(0);\n    const [csvExportURL, setCsvExportURL] = useState<string>(\"\");\n\n    useEffect(() => {\n        countAttemptLogs().then((count: number) => setAttemptsLength(count));\n        getCsvExportURL().then((url: string) => setCsvExportURL(url));\n    }, [props.worldID, props.sequenceID, props.filters]);\n\n    //componentDidUnmount -> Return value (function) of a callback is what is being called on unmount event\n    useEffect(() => {\n        return () => URL.revokeObjectURL(csvExportURL);\n    }, []);\n\n    async function countAttemptLogs(): Promise<number> {\n        const allAttemptLogs: AttemptLogs[] =\n            await dataSourceAttemptLogs.getAllAttemptLogs(props.worldID, props.sequenceID);\n\n        return (await parseAttemptsByFilters(allAttemptLogs, props.filters)).length;\n    }\n\n    async function getCsvExportURL(): Promise<string> {\n        const blob: Blob = await getSequenceLogsCsv(props.worldID, props.filters, props.sequenceID);\n        URL.revokeObjectURL(csvExportURL);\n        return window.URL.createObjectURL(blob);\n    }\n\n    return (\n        <ListContainer>\n            <TitleWrapper>\n                <ViewSubtitle>{i18next.t(\"Attempts\")}</ViewSubtitle>\n                <RightHeaderContainer>\n                    {csvExportURL &&\n                        <a href={csvExportURL}\n                           download={`${props.sequenceID}_${Date.now()}.csv`}\n                           style={{textDecoration: \"none\", pointerEvents: attemptsLength ? \"auto\" : \"none\"}}\n                        >\n                            <Button size={\"small\"} variant=\"outlined\" disabled={!attemptsLength}>\n                                {i18next.t(\"CSV Export\")}\n                            </Button>\n                        </a>\n                    }\n                    <AttemptCountWrapper>\n                        {attemptsLength}\n                        <Attempt />\n                    </AttemptCountWrapper>\n                    <NavLink\n                        style={{textDecoration: \"none\"}}\n                        to={Analytics.BASE_PATH + \"/Worlds/\" + props.worldID + \"/Sequences/\" + props.sequenceID +\n                            \"/Attempts\"}\n                    >\n                        <Button size=\"small\" id={\"sequenceView-view-all-attempts-btn\"}>\n                            {i18next.t(\"View All\")}\n                        </Button>\n                    </NavLink>\n                </RightHeaderContainer>\n            </TitleWrapper>\n            <ListWrapper backgroundColor={lightPrimary}>\n                <AttemptsList worldID={props.worldID} sequenceID={props.sequenceID} filters={props.filters} />\n            </ListWrapper>\n        </ListContainer>\n    );\n}\n", "import React, {ReactElement, useEffect, useState} from \"react\";\nimport i18next from \"i18next\";\nimport {ListView} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {AttemptItem} from \"@root/Frontend/Console/widgets/lists/AttemptItem\";\nimport {FiltersInterface} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {parseAttemptsByFilters} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport {canPeerEditWorld} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport isEqual from \"lodash/isEqual\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\n\ninterface AttemptsListProps {\n    worldID: bigint;\n    sequenceID: bigint;\n    filters?: FiltersInterface;\n}\n\nexport function AttemptsList(props: AttemptsListProps): ReactElement {\n    const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n    const [attemptIDs, setAttemptIDs] = useState<bigint[] | null>(null);\n\n    useEffect(() => {\n        let ignoreAsyncTask: boolean = false;\n\n        fetchAttemptIDs().then((newAttemptIDs: bigint[]) => {\n            if (!isEqual(newAttemptIDs, attemptIDs) && !ignoreAsyncTask)\n                setAttemptIDs(newAttemptIDs);\n        });\n\n        return () => { ignoreAsyncTask = true; };\n    }, [props.worldID, props.sequenceID, props.filters]);\n\n    async function fetchAttemptIDs(): Promise<bigint[]> {\n        let allAttempts: AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(props.worldID,\n                                                                                       props.sequenceID);\n\n        if (props.filters)\n            allAttempts = await parseAttemptsByFilters(allAttempts, props.filters);\n\n        const sortedAttempts: AttemptLogs[] = allAttempts.sort((attempt1: AttemptLogs, attempt2: AttemptLogs): number =>\n            Number(UtilsShared.getTimestampOfRandomID(attempt2.attemptID)) -\n            Number(UtilsShared.getTimestampOfRandomID(attempt1.attemptID)));\n\n        return sortedAttempts.map((attempt:AttemptLogs) => attempt.attemptID);\n    }\n\n    if (!attemptIDs)\n        return <CenteredLoading />;\n\n    return (\n        <ListView\n            emptyListMessage={i18next.t(\"No attempts to display\")}\n            itemCount={attemptIDs.length}\n            itemHeight={100}\n        >\n            {(index: number): JSX.Element =>\n                attemptIDs[index] ?\n                    <AttemptItem\n                        worldID={props.worldID}\n                        sequenceID={props.sequenceID}\n                        attemptID={attemptIDs[index]}\n                    /> : <></>\n            }\n        </ListView>\n    );\n}\n", "import { Select } from \"@root/react-components/src/inputs/Select\";\nimport React, {ReactElement, useEffect, useRef, useState} from \"react\";\nimport {DataSourceSequences, Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {timestampToString} from \"@utils/utils\";\nimport {useHistory} from 'react-router-dom';\nimport {Box, styled} from \"@mui/material\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {orange, white} from \"@root/react-components/src/values/colors/colors\";\n\nconst SequenceFiltersContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"end\",\n    font: primaryFontMedium\n});\n\nconst Major = styled(Box)({\n    background: orange,\n    padding: \"0 4px\",\n    borderRadius: \"10px\",\n    color: white,\n    fontSize: \"smaller\",\n    alignSelf: \"center\",\n});\n\ninterface VersioningSequenceFilterProps {\n    worldID: bigint;\n    sequenceID: bigint;\n    changeSequence: (sequenceID: bigint) => void;\n}\n\ninterface VersioningData {\n    timestamp: bigint,\n    isMajor: boolean\n}\n\nexport function VersioningSequenceFilter(props: VersioningSequenceFilterProps): ReactElement {\n    const [versionIDs, setVersionIDs] = useState<Map<bigint, VersioningData> | null>(null);\n    const selectRef: React.RefObject<Select> = useRef<Select>(null);\n    const history = useHistory();\n\n    useEffect(() => {\n        getVersions().then((versionIDs: Map<bigint, VersioningData>) => setVersionIDs(versionIDs));\n    }, [props.sequenceID]);\n\n    useEffect(() => {\n        const index: number = getSortedVersions().findIndex((value: bigint) => props.sequenceID === value) ?? 0;\n        selectRef.current?.setDefault(index);\n    }, [versionIDs]);\n\n    async function getVersions(): Promise<Map<bigint, VersioningData>> {\n        const dataSourceSequences: DataSourceSequences = AppConsole.getInstance().dataSourceSequences;\n        const versionIDs: Map<bigint, VersioningData> = new Map<bigint, VersioningData>();\n        let sequenceID: bigint = props.sequenceID;\n        let sequence: Sequence | null = null;\n\n        while (sequenceID) {\n            sequence = await dataSourceSequences.getSequence(props.worldID, sequenceID);\n            if (!sequence)\n                break;\n\n            versionIDs.set(sequenceID, {timestamp: sequence.PeerPublisher.timestamp, isMajor: sequence.Major.value});\n            sequenceID = sequence.ParentSequence.value;\n        }\n\n        sequenceID = props.sequenceID;\n        while (sequenceID) {\n            sequence = await dataSourceSequences.getSequence(props.worldID, sequenceID);\n            if (!sequence || !sequence.ChildSequence.value)\n                break;\n\n            versionIDs.set(sequenceID, {timestamp: sequence.PeerPublisher.timestamp, isMajor: sequence.Major.value});\n            sequenceID = sequence.ChildSequence.value;\n        }\n\n        return versionIDs;\n    }\n\n    function getSortedVersions(): bigint[] {\n        return versionIDs ? [...versionIDs.keys()].sort((id1: bigint, id2: bigint) => {\n            return Number(UtilsShared.getTimestampOfRandomID(id2) - UtilsShared.getTimestampOfRandomID(id1));\n        }) : [];\n    }\n\n    function handleChangeSequence(index: number) {\n        if (!versionIDs)\n            return;\n\n        const sequenceID: bigint = getSortedVersions()[index];\n        history.replace(`${Analytics.BASE_PATH}/Worlds/${props.worldID}/Sequences/${sequenceID}`);\n        props.changeSequence(sequenceID);\n    }\n\n    function getOptions(): JSX.Element[] {\n        return getSortedVersions()?.map((value: bigint) => {\n            const isMajor: boolean = versionIDs?.get(value)?.isMajor ?? false;\n            const releaseDate: string = timestampToString(versionIDs?.get(value)?.timestamp ?? BigInt(0), true);\n\n            return (\n                <Box style={{\n                    display: \"flex\",\n                    gap: \"4px\",\n                    justifyContent: isMajor ? \"space-between\" : \"flex-start\"\n                }}>\n                    {releaseDate}\n                    {isMajor && <Major>{i18next.t(\"Major\")}</Major>}\n                </Box>\n            )\n        });\n    }\n\n    return (\n        <SequenceFiltersContainer>\n            {i18next.t(\"Sequence version\")}\n            <Select\n                ref={selectRef}\n                options={getOptions()}\n                onChange={(index: number) => handleChangeSequence(index)}\n                style={{ width: \"max-content\" }}\n                styleOptionsWrapper={{ maxHeight: \"400px\", overflow: \"auto\" }}\n            />\n        </SequenceFiltersContainer>\n    )\n}\n", "import React from \"react\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport i18next from \"i18next\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {NavLink, withRouter} from \"react-router-dom\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {ListView} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {StepItem} from \"@root/Frontend/Console/Views/Analytics/StepsList/StepItem\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {RouteComponentProps} from \"react-router\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {WorldsView} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldsView\";\nimport {WorldView} from \"@root/Frontend/Console/Views/Analytics/World/WorldView\";\nimport {SequencesList} from \"@root/Frontend/Console/Views/Analytics/SequencesList/SequencesList\";\nimport {SequenceView} from \"@root/Frontend/Console/Views/Analytics/SequenceView/SequenceView\";\nimport {Sequence, StepTypeID} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {exportPdf} from \"@root/Frontend/Console/utils/UtilsPdf\";\nimport {ExporterSequencePDF} from \"@root/Frontend/Console/Views/Analytics/SequenceView/ExporterSequencePDF\";\nimport {sanitizeFileName, timestampToShortString} from \"@utils/utils\";\n\nexport class StepList extends RouterView<RouteComponentProps<{worldID: string, sequenceID: string}>> {\n    private readonly appConsole: AppConsole = AppConsole.getInstance();\n    private readonly exporterSequencePDF: ExporterSequencePDF = new ExporterSequencePDF();\n    worldID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.worldID);\n    sequenceID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.sequenceID);\n\n    state: { stepsTypes: StepTypeID[]; isSavingPdf: boolean } = { stepsTypes: null, isSavingPdf: false };\n\n    static getSequenceStepsLevel(worldID: bigint, sequenceID: bigint): BreadcrumbsLevel {\n        return {\n            link: Analytics.BASE_PATH + \"/Worlds/\" + worldID + \"/Sequences/\" + sequenceID + \"/Steps\",\n            async getName(){\n                return i18next.t(\"Steps\")\n            }\n        }\n    }\n\n    override getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [\n            WorldsView.worldsLevel(),\n            WorldView.getLevelForWorld(this.worldID),\n            SequencesList.getWorldSequencesLevel(this.worldID),\n            SequenceView.sequenceLevel(this.worldID, this.sequenceID),\n            StepList.getSequenceStepsLevel(this.worldID, this.sequenceID)\n        ];\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        const sequence: Sequence =\n            await this.appConsole.dataSourceSequences.getSequence(this.worldID, this.sequenceID);\n        this.setState({ stepsTypes: sequence.Steps.value });\n    }\n\n    private async savePdf() {\n        if (this.state.isSavingPdf)\n            return;\n\n        this.setState({ isSavingPdf: true });\n        try {\n            const sequence: Sequence =\n                await this.appConsole.dataSourceSequences.getSequence(this.worldID, this.sequenceID);\n            const documentPDF = await this.exporterSequencePDF.buildPDF(this.worldID, this.sequenceID);\n            const filename: string = sanitizeFileName(sequence.Title.value) + '-' +\n                timestampToShortString(sequence.PeerPublisher.timestamp).replace(\" \", \"-\") + '.pdf';\n            exportPdf(documentPDF, filename);\n        } finally {\n            this.setState({ isSavingPdf: false });\n        }\n    }\n\n    render(){\n        if(!this.state.stepsTypes)\n            return <CenteredLoading />;\n\n        return <>\n            <Button size=\"small\" variant=\"outlined\" style={{ position: \"absolute\", right: \"20px\", top: \"-5px\" }}\n                    disabled={this.state.isSavingPdf}\n                    onClick={() => this.savePdf()}\n            >\n                {i18next.t(\"PDF Export\")}\n            </Button>\n            <ListView\n                emptyListMessage={i18next.t(\"No steps to display\")}\n                itemCount={this.state.stepsTypes.length}\n                itemHeight={90}\n                >{index => {\n                    const stepType: StepTypeID = this.state.stepsTypes[index];\n                    return <NavLink to={Analytics.BASE_PATH + \"/Worlds/\" + this.worldID + \"/Sequences/\"\n                                        + this.sequenceID + \"/Steps/\" + stepType.ID}\n                                    style={{textDecoration: \"none\"}}>\n                        <StepItem worldID={this.worldID} stepType={stepType} sequenceID={this.sequenceID} index={index + 1}/>\n                    </NavLink>;\n                }}\n            </ListView>\n        </>\n    }\n}\n\nexport const StepsListWithRouter = withRouter(StepList);\n", "import {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {RouteComponentProps} from \"react-router\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {WorldsView} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldsView\";\nimport {WorldView} from \"@root/Frontend/Console/Views/Analytics/World/WorldView\";\nimport {SequencesList} from \"@root/Frontend/Console/Views/Analytics/SequencesList/SequencesList\";\nimport {withRouter} from \"react-router-dom\";\nimport {SequenceView} from \"@root/Frontend/Console/Views/Analytics/SequenceView/SequenceView\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {StepList} from \"@root/Frontend/Console/Views/Analytics/StepsList/StepList\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport React from \"react\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {StepPhotoView} from \"@root/Frontend/Console/Views/Analytics/StepView/StepPhotoView\";\nimport {StepQuestionView} from \"@root/Frontend/Console/Views/Analytics/StepView/StepQuestion/StepQuestionView\";\nimport {StepVideoView} from \"@root/Frontend/Console/Views/Analytics/StepView/StepVideoView\";\nimport {StepAnimatedView} from \"@root/Frontend/Console/Views/Analytics/StepView/StepAnimatedView/StepAnimatedView\";\nimport {StepBranchingView} from \"@root/Frontend/Console/Views/Analytics/StepView/StepBranching/StepBranchingView\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport StepInputView from \"@root/Frontend/Console/Views/Analytics/StepView/StepInputView\";\nimport {DataSourceText, TextData} from \"@root/Frontend/DataSources/DataSourceText\";\n\nexport class StepView extends RouterView<RouteComponentProps<{worldID: string, sequenceID: string, stepID: string}>> {\n    private readonly worldID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.worldID);\n    private readonly sequenceID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.sequenceID);\n    private readonly stepID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.stepID);\n\n    state: { stepType: StepType | null } = { stepType: null };\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const stepType: StepType | null =\n            await AppConsole.getInstance().dataSourceSteps.getStepType(this.worldID, this.sequenceID, this.stepID);\n\n        this.setState({ stepType });\n    }\n\n    static stepLevel(worldID: bigint, sequenceID: bigint, stepID: bigint): BreadcrumbsLevel {\n        return {\n            link: Analytics.BASE_PATH + \"/Worlds/\" + worldID + \"/Sequences/\" + sequenceID,\n            async getName()  {\n                const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n                const dataSourceText: DataSourceText = AppConsole.getInstance().dataSourceText;\n                const step: StepData = await dataSourceSteps.getStep(worldID, sequenceID, stepID);\n                const text: TextData = await dataSourceText.getText(step.Text.value);\n                return text.OriginalText.value;\n            }\n        }\n    }\n\n    getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [\n            WorldsView.worldsLevel(),\n            WorldView.getLevelForWorld(this.worldID),\n            SequencesList.getWorldSequencesLevel(this.worldID),\n            SequenceView.sequenceLevel(this.worldID, this.sequenceID),\n            StepList.getSequenceStepsLevel(this.worldID, this.sequenceID),\n            StepView.stepLevel(this.worldID, this.sequenceID, this.stepID)\n        ];\n    }\n\n    render() {\n        if (this.state.stepType === null)\n            return <CenteredLoading />;\n\n        switch (this.state.stepType) {\n            case StepType.PHOTO:\n                return <StepPhotoView worldID={this.worldID} sequenceID={this.sequenceID} stepID={this.stepID}/>;\n            case StepType.QUESTION:\n                return <StepQuestionView worldID={this.worldID} sequenceID={this.sequenceID} stepID={this.stepID}/>;\n            case StepType.VIDEO:\n                return <StepVideoView worldID={this.worldID} sequenceID={this.sequenceID} stepID={this.stepID}/>;\n            case StepType.ANIMATED:\n                return <StepAnimatedView worldID={this.worldID} sequenceID={this.sequenceID} stepID={this.stepID} />;\n            case StepType.BRANCHING:\n                return <StepBranchingView worldID={this.worldID} sequenceID={this.sequenceID} stepID={this.stepID}/>;\n            case StepType.INPUT:\n                return <StepInputView worldID={this.worldID} sequenceID={this.sequenceID} stepID={this.stepID}/>;\n            default:\n                return <></>;\n        }\n    }\n}\n\nexport const StepViewWithRouter = withRouter(StepView);\n", "import React from \"react\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {ViewTitle} from \"@root/Frontend/Console/components/ViewTitle\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport styled from \"styled-components\";\nimport {\n    darkenPrimary,\n    darkenWhite,\n    overlay,\n    primary,\n    shadowWhite\n} from \"@root/react-components/src/values/colors/colors\";\nimport {timestampToShortString} from \"@utils/utils\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {WindowDimensions, WindowDimensionsContext} from \"@root/Frontend/Console/contexts/WindowDimensionsContext\";\nimport i18next from \"i18next\";\nimport {DataSourceStorage} from \"@root/Frontend/DataSources/DataSourceStorage\";\nimport {ObjectTypeS3} from \"@backend/Types/ObjectTypeS3\";\nimport {canPeerEditWorld} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {DataSourceText, TextData} from \"@root/Frontend/DataSources/DataSourceText\";\n\nconst Grid = styled.div<{nbColumns: number}>`\n    grid-template-columns: ${props => `repeat(${props.nbColumns}, 1fr)`};\n    display: grid;\n    grid-gap: 40px;\n`\n\nconst Wrapper = styled.div<{ cursor: string, width: string }>`\n    width: ${props => props.width};\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    border-radius: 24px;\n    background-color: white;\n    border: solid 2px ${darkenWhite};\n    text-align: center;\n    word-break: break-all;\n    cursor: ${props => props.cursor};\n`\n\nconst ImageWrapper = styled.div`\n    display: block;\n    height: 220px;\n    overflow: hidden;\n    border-radius: 22px;\n    border-bottom: solid 2px ${darkenWhite};\n`\n\nconst ImageThumbnail = styled.img`\n    object-fit: cover;\n    width: 100%;\n    height: 220px;\n`\n\nconst PhotoInfoText = styled.p<{color: string}>`\n    color: ${props => props.color};\n    margin: 0;\n`\n\nconst SubTitle = styled.p`\n    margin: -15px 0 30px 15px;\n    color: ${darkenPrimary};\n    font: ${primaryFontXLarge};\n`\n\nconst ImageFullScreen = styled.div`\n    height: 100%;\n    width: 100%;\n    position: fixed;\n    top:0;\n    left:0;\n    background-color:${ overlay };\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    box-shadow: ${shadowWhite};\n    z-index: 100;\n`;\n\nconst FullScreenImage = styled.img`\n    max-height: 80vh;\n    border-radius: 22px;\n    border-bottom: solid 2px ${darkenWhite};\n`\n\nconst ExitButton = styled.div`\n    display: flex;\n    color: white;\n    position: absolute;\n    top: 15px;\n    right: 15px;\n    cursor: pointer;\n    width: 15px;\n    height: 15px;\n`\n\nconst NoPhotoDiv = styled.div`\n    height: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n`\n\ntype PhotoInfo = {\n    url: string,\n    user: string,\n    timestamp: bigint,\n}\n\nexport class StepPhotoView extends SmartComponent {\n    props: { worldID: bigint, sequenceID: bigint, stepID: bigint }\n    state: { stepTitle: string, photos: PhotoInfo[], currentPhoto: number | null }\n        = { stepTitle: null, photos: null, currentPhoto: null }\n\n    static contextType: React.Context<WindowDimensions> = WindowDimensionsContext;\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n        const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n        const dataSourceText: DataSourceText = AppConsole.getInstance().dataSourceText;\n        const dataSourceStorage: DataSourceStorage = AppConsole.getInstance().dataSourceStorage;\n        const step: StepData = await dataSourceSteps.getStep(this.props.worldID,\n                                                             this.props.sequenceID,\n                                                             this.props.stepID);\n        const text: TextData = await dataSourceText.getText(step.Text.value);\n\n        const stepTitle: string = text.OriginalText.value;\n        const allAttemptsLogs: AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(this.props.worldID,\n                                                                                             this.props.sequenceID);\n\n        const mapAttemptPhotos: Map<bigint, PhotoInfo> = new Map();\n        for(const attemptLog of allAttemptsLogs) {\n            for(const stepAction of attemptLog.getStepActions()) {\n                if(stepAction.stepID === this.props.stepID && stepAction.stepInput) {\n                    // verify if we don't have any photo earlier for that attempt yet!\n                    const photoInfo: PhotoInfo | undefined = mapAttemptPhotos.get(attemptLog.attemptID);\n                    if(photoInfo && photoInfo.timestamp > stepAction.timeStart)\n                        continue;\n\n                    mapAttemptPhotos.set(attemptLog.attemptID, {\n                        url: await dataSourceStorage.getPreSignedUrl(stepAction.stepInput, ObjectTypeS3.IMAGE),\n                        user: (await AppConsole.getInstance().dataSourcePeers.getPeer(attemptLog.peerID)).fullName,\n                        timestamp: stepAction.timeStart,\n                    });\n                }\n            }\n        }\n\n        // display most recent attempts first\n        const photos = Array.from(mapAttemptPhotos.values());\n        photos.sort((photo1, photo2) => Number(photo2.timestamp) - Number(photo1.timestamp));\n        this.setState({ stepTitle, photos });\n    }\n\n    getGridColumnsNumber(): number {\n        if(this.context.windowWidth > 1100)\n            return 4;\n        else if(this.context.windowWidth > 850)\n            return 3;\n        else if(this.context.windowWidth > 400)\n            return 2;\n\n        return 1;\n    }\n\n    // TODO @ebalthazard : Change for component FullScreenMedia\n    renderFullScreenImage() {\n        return <ImageFullScreen onClick={() => {this.setState({ currentPhoto: null })}}>\n            <Wrapper cursor=\"default\" width=\"fit-content\">\n                <ExitButton><Close/></ExitButton>\n                <FullScreenImage src={this.state.photos[this.state.currentPhoto].url} crossOrigin=\"anonymous\"/>\n                <div style={{padding: \"5px\"}}>\n                    <PhotoInfoText color={darkenPrimary}>\n                        {this.state.photos[this.state.currentPhoto].user}\n                    </PhotoInfoText>\n                    <PhotoInfoText color={primary}>\n                        {timestampToShortString(this.state.photos[this.state.currentPhoto].timestamp)}\n                    </PhotoInfoText>\n                </div>\n            </Wrapper>\n        </ImageFullScreen>\n    }\n\n    render() {\n        if(!this.state.photos)\n            return <CenteredLoading />\n\n        if(!this.state.photos.length)\n            return <NoPhotoDiv>{i18next.t(\"No photo to display\")}</NoPhotoDiv>\n\n        return <div style={{paddingBottom: \"24px\", font: primaryFontLarge}}>\n            <ViewTitle>{i18next.t(\"Step Photo\")}</ViewTitle>\n            <SubTitle>{this.state.stepTitle}</SubTitle>\n            <Grid nbColumns={this.getGridColumnsNumber()}>\n                {this.state.photos?.map((photo, i) =>\n                    <Wrapper cursor=\"pointer\" width=\"100%\" key={i}\n                             onClick={() => this.setState({ currentPhoto: i })}>\n                        <ImageWrapper>\n                            <ImageThumbnail src={photo.url} crossOrigin=\"anonymous\"/>\n                        </ImageWrapper>\n                        <div style={{padding: \"5px\"}}>\n                            <PhotoInfoText color={darkenPrimary}>{photo.user}</PhotoInfoText>\n                            <PhotoInfoText color={primary}>\n                                {timestampToShortString(photo.timestamp)}\n                            </PhotoInfoText>\n                        </div>\n                    </Wrapper>)}\n            </Grid>\n            {this.state.currentPhoto !== null && this.renderFullScreenImage()}\n        </div>\n    }\n}\n", "import React, {ReactElement} from \"react\";\nimport {SideNav} from \"@root/Frontend/Console/SideNav\";\n\nexport type WindowDimensions = {\n    windowWidth: number,\n    windowHeight: number,\n}\n\nexport const WindowDimensionsContext = React.createContext<WindowDimensions>({\n    windowWidth: window.innerWidth,\n    windowHeight: window.innerHeight\n});\n\nexport class WindowDimensionsProvider extends React.Component {\n    props: { children: ReactElement, sideNavOpened: boolean };\n    state: WindowDimensions = { windowWidth: window.innerWidth, windowHeight: window.innerHeight };\n\n    componentDidMount(): void {\n        this.setWindowDimensions();\n        window.addEventListener('resize', () => this.setWindowDimensions());\n    }\n\n    componentDidUpdate(prevProps: { sideNavOpened: boolean }) {\n        if(prevProps.sideNavOpened != this.props.sideNavOpened)\n            this.setWindowDimensions();\n    }\n\n    setWindowDimensions(): void {\n        // We do not want to include sidebar's width when window.innerWidth < 768 because sidebar appears above content\n        const sideNavOpen = window.innerWidth > 768 && this.props.sideNavOpened;\n        this.setState({\n            windowWidth: window.innerWidth - (sideNavOpen ? SideNav.WIDTH_OPEN : SideNav.WIDTH_CLOSED),\n            windowHeight: window.innerHeight\n        });\n    }\n\n    render() {\n        return <WindowDimensionsContext.Provider value={this.state}>\n            {this.props.children}\n        </WindowDimensionsContext.Provider>\n    }\n}\n", "import React from \"react\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {ViewTitle} from \"@root/Frontend/Console/components/ViewTitle\";\nimport styled from \"styled-components\";\nimport {darkenPrimary} from \"@root/react-components/src/values/colors/colors\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {StepQuestionPieChart} from \"@root/Frontend/Console/Views/Analytics/StepView/StepQuestion/StepQuestionPieChart\";\nimport i18next from \"i18next\";\nimport {Box} from \"@mui/material\";\nimport AnswersList from \"@root/Frontend/Console/Views/Analytics/StepView/AnswersList\";\nimport {DataSourceText, TextData} from \"@root/Frontend/DataSources/DataSourceText\";\n\nconst SubTitle = styled(Box)({\n    margin: \"0 0 20px 0\",\n    color: darkenPrimary,\n    font: primaryFontXLarge\n});\n\ninterface StepQuestionViewProps {\n    worldID: bigint,\n    sequenceID: bigint,\n    stepID: bigint\n}\nexport class StepQuestionView extends SmartComponent {\n    props: StepQuestionViewProps;\n    state: { stepTitle: string } = { stepTitle: null }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n        const dataSourceText: DataSourceText = AppConsole.getInstance().dataSourceText;\n        const step: StepData = await dataSourceSteps.getStep(this.props.worldID,\n                                                             this.props.sequenceID,\n                                                             this.props.stepID);\n        const text: TextData = await dataSourceText.getText(step.Text.value);\n        this.setState({ stepTitle: text.OriginalText.value });\n    }\n\n    render() {\n        if (!this.state.stepTitle)\n            return <CenteredLoading />\n\n        return (\n            <Box style={{paddingBottom: \"24px\"}}>\n                <ViewTitle style={{padding: \"15px 0 0 0\"}}>{i18next.t(\"Step Question\")}</ViewTitle>\n                <SubTitle>{this.state.stepTitle}</SubTitle>\n                <StepQuestionPieChart worldID={this.props.worldID}\n                                      sequenceID={this.props.sequenceID}\n                                      stepID={this.props.stepID}\n                />\n\n                <AnswersList worldID={this.props.worldID}\n                             sequenceID={this.props.sequenceID}\n                             stepID={this.props.stepID}\n                />\n            </Box>\n        );\n    }\n}\n", "import {SmartComponent} from \"@utils/SmartComponent\";\nimport styled from \"styled-components\";\nimport {dark, darkenPrimary, darkenWhite, lightDark,\n    lighterDark, lightPrimary, lightWhite, primary\n} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport React, {ReactElement} from \"react\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {Cell, Label, Legend, Pie, PieChart, ResponsiveContainer, Tooltip as RechartsTooltip} from \"recharts\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {HorizontalAlignmentType, VerticalAlignmentType} from \"recharts/types/component/DefaultLegendContent\";\nimport {WindowDimensions, WindowDimensionsContext} from \"@root/Frontend/Console/contexts/WindowDimensionsContext\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {CheckAnswer} from \"@root/react-components/src/icons/EmptyAnswer\";\nimport {CircleAnswer} from \"@root/react-components/src/icons/CorrectAnswer\";\nimport {Box} from \"@mui/material\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {StepAction} from \"@backend/Types/StepAction\";\nimport {canPeerEditWorld} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {StepQuestion, StepType} from \"@backend/Types/Step\";\n\nconst Wrapper = styled.div`\n    background-color: ${lightWhite};\n    width: 100%;\n    border-radius: 24px;\n    font: ${primaryFontLarge};\n    padding: 24px;\n    box-sizing: border-box;\n    border: 1px solid ${darkenWhite};\n    color: ${lighterDark};\n    overflow: hidden;\n`;\n\nconst LegendWrapper = styled.div<{translateX: boolean}>`\n    max-height: 300px;\n    overflow-y: auto;\n    transform: ${props => props.translateX ? \"translate(30px, 10px)\" : \"none\"};\n`;\n\nconst LegendText = styled.p<{small: boolean}>`\n    font: ${props => props.small ? primaryFontLarge : primaryFontXLarge};\n    margin: 7px 0;\n    overflow: hidden;\n    text-overflow: ellipsis;\n`;\n\nconst LegendAnswersWrapper = styled.div<{small: boolean}>`\n    margin-right: 10px;\n    width: ${props => props.small ? \"120px\" : \"200px\"};\n`;\n\nconst LegendStatsWrapper = styled.div<{small: boolean}>`\n    width: ${props => props.small ? \"70px\" : \"150px\"};\n`;\n\nconst FilledBox = styled.div<{ color: string }>`\n    background-color: ${props => props.color};\n    min-width: 18px;\n    height: 18px;\n    margin: 0 8px 2px 0;\n    border-radius: 50%;\n`;\n\nconst TooltipWrapper = styled.div`\n    background-color: white;\n    border: solid 1px rgb(204, 204, 204);\n    padding: 0 5px;\n    white-space: nowrap;\n    display: flex;\n    align-items: center;\n`;\n\ntype TooltipData = {\n    active: boolean;\n    payload: { payload: {answer: string, count: number, fill: string} }[];\n}\n\ntype LegendPayload = {\n    payload: { payload: { fill: string, answer: string, count: number, percent: number }}[];\n}\n\ntype PieChartDimensions = {\n    innerRadius: number;\n    outerRadius: number;\n}\n\ntype LegendPosition = {\n    align: HorizontalAlignmentType;\n    verticalAlign: VerticalAlignmentType;\n}\ninterface StepQuestionPieChartState {\n    answersCount: Map<string, number> | null;\n    totalAnswers: number;\n    correctAnswer: string;\n}\n\nexport class StepQuestionPieChart extends SmartComponent {\n    props: { worldID: bigint, sequenceID: bigint, stepID: bigint };\n    state: StepQuestionPieChartState = { answersCount: null, totalAnswers: 0, correctAnswer: \"\"};\n    static contextType: React.Context<WindowDimensions> = WindowDimensionsContext;\n\n    static readonly COLORS: string[] = [lightPrimary, darkenWhite, darkenPrimary, dark, primary, lighterDark];\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n        const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n        const step: StepData =\n            await dataSourceSteps.getStep(this.props.worldID, this.props.sequenceID, this.props.stepID);\n        if(step.Type.value !== StepType.QUESTION.toString())\n            return;\n\n        const stepQuestion: StepQuestion = step as StepQuestion;\n        this.setState({ correctAnswer: stepQuestion.CorrectAnswer.value });\n\n        const allAttemptsLogs: AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(this.props.worldID,\n                                                                                             this.props.sequenceID);\n\n        const answersCount: Map<string, number> = new Map();\n        let totalAnswers: number = 0;\n        for (const attemptLog of allAttemptsLogs) {\n            // spread because it's passed by reference so calling reverse() after change the ref\n            const stepActionsList: StepAction[] = [...attemptLog.getStepActions()];\n\n            // reverse the array because stepAction are already sorted by timestamp (ascending order)\n            // and we're looking for the latest user's value, in the case he came back on a step (or via a branching)\n            for (const stepAction of stepActionsList.reverse()) {\n                if (stepAction.stepID === this.props.stepID && stepAction.stepInput) {\n                    const count: number = answersCount.get(stepAction.stepInput) ?? 0;\n                    answersCount.set(stepAction.stepInput, count + 1);\n                    totalAnswers++;\n                    break;\n                }\n            }\n        }\n\n        this.setState({ answersCount, totalAnswers });\n    }\n\n    getPieChartDimensions(): PieChartDimensions {\n        return this.context.windowWidth > 550 ? { innerRadius: 100, outerRadius: 150 }\n                                              : { innerRadius: 90, outerRadius: 130 };\n    }\n\n    getLegendPosition(): LegendPosition {\n        return this.context.windowWidth > 1000 ? { align: \"right\", verticalAlign: \"middle\" }\n                                               : { align: \"center\", verticalAlign: \"bottom\" };\n    }\n\n    renderLegend(legendPayload: LegendPayload): ReactElement {\n        const small = this.context.windowWidth < 550;\n        return (\n            <LegendWrapper translateX={this.context.windowWidth > 550 && this.context.windowWidth < 1000}>\n                <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\n                    <LegendAnswersWrapper small={small}>\n                        <LegendText small={small}>{i18next.t(\"Answer\")}</LegendText>\n                    </LegendAnswersWrapper>\n                    <LegendStatsWrapper small={small}>\n                        <LegendText small={small}>{i18next.t(\"Count\")}</LegendText>\n                    </LegendStatsWrapper>\n                    <LegendStatsWrapper small={small}>\n                        <LegendText small={small}>{i18next.t(\"Percentage\")}</LegendText>\n                    </LegendStatsWrapper>\n                </div>\n                <div>\n                    {legendPayload.payload.map((entry, i: number) => (\n                        <div key={i}>\n                            <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\n                                <LegendAnswersWrapper small={small}>\n                                        <div style={{ display: \"flex\", alignItems: \"center\" }} key={i}>\n                                            <FilledBox color={entry.payload.fill}/>\n                                            <Tooltip title={entry.payload.answer}>\n                                                <LegendText small={true}>{entry.payload.answer}</LegendText>\n                                            </Tooltip>\n                                            {entry.payload.answer === this.state.correctAnswer &&\n                                                <Tooltip title={i18next.t(\"Correct answer\")}\n                                                         placement={\"left-start\"}\n                                                >\n                                                    <Box sx={{display:\"flex\", marginLeft:\"15px\"}}>\n                                                        <CircleAnswer stroke={primary}/>\n                                                        <CheckAnswer stroke={primary}/>\n                                                    </Box>\n                                                </Tooltip>\n                                            }\n                                        </div>\n                                </LegendAnswersWrapper>\n                                <LegendStatsWrapper small={small}>\n                                    <LegendText small={true}>{entry.payload.count}</LegendText>\n                                </LegendStatsWrapper>\n                                <LegendStatsWrapper small={small}>\n                                    <LegendText small={true}>\n                                        {`${(entry.payload.percent * 100).toFixed(2)}%`}\n                                    </LegendText>\n                                </LegendStatsWrapper>\n                            </div>\n                        </div>\n                    ))}\n                </div>\n            </LegendWrapper>\n        );\n    }\n\n    renderTooltip(tooltipData: TooltipData): ReactElement {\n        if (!tooltipData.active) return <></>;\n\n        const chartData: {answer: string, count: number, fill: string} = tooltipData.payload[0].payload;\n        return <TooltipWrapper>\n            <FilledBox color={chartData.fill}/>\n            <LegendText small={true}>\n                {`${chartData.answer} (${((chartData.count / this.state.totalAnswers) * 100).toFixed(2)}%)`}\n            </LegendText>\n        </TooltipWrapper>\n    }\n\n    renderPieChart() {\n        if (!this.state.answersCount?.size){\n            return <div style={{\n                height: \"100%\",\n                display: \"flex\",\n                alignItems:\"center\",\n                justifyContent: \"center\"\n            }}>{i18next.t(\"No data to display\")}</div>\n        }\n\n        const pieChartDimensions = this.getPieChartDimensions()\n        const legendPosition = this.getLegendPosition()\n        const height = this.context.windowWidth > 1000 ? 350 : 600;\n        const reChartsData = Array.from(this.state.answersCount.entries()).map(([answer, count]) => {\n            return { answer, count };\n        });\n\n        return <ResponsiveContainer width={\"100%\"} height={height}>\n            <PieChart>\n                <Pie data={reChartsData} dataKey=\"count\" nameKey=\"answer\"\n                     innerRadius={pieChartDimensions.innerRadius} outerRadius={pieChartDimensions.outerRadius}>\n                    {Array.from(this.state.answersCount.values()).map((count: number, i: number) => (\n                        <Cell\n                            key={i}\n                            fill={StepQuestionPieChart.COLORS[i % StepQuestionPieChart.COLORS.length]}\n                        />\n                    ))}\n\n                    <Label position=\"centerBottom\" value={`${i18next.t(\"Total answers\")}:`}\n                           style={{ fill: lighterDark, transform: \"translateY(-15px)\" }} />\n                    <Label position='centerTop' style={{ fill: lightDark, fontSize: 55 }}\n                           value={this.state.totalAnswers}/>\n                </Pie>\n                <RechartsTooltip content={this.renderTooltip.bind(this)} />\n                <Legend layout=\"vertical\" align={legendPosition.align} verticalAlign={legendPosition.verticalAlign}\n                        content={this.renderLegend.bind(this)} />\n            </PieChart>\n        </ResponsiveContainer>\n    }\n\n    render() {\n        if (!this.state.answersCount)\n            return <CenteredLoading />;\n\n        return <>\n            <Wrapper style={{height: this.state.answersCount.size ? \"auto\" : \"350px\"}}>\n                {this.renderPieChart()}\n            </Wrapper>\n        </>\n    }\n}\n", "import React from \"react\";\nimport {dark} from \"../values/colors/colors\";\n\nexport function CheckAnswer(props: {stroke?:string}) {\n    return <svg style={{paddingLeft: \"5px\", position:\"absolute\", stroke: props.stroke ?? dark}} width=\"21\" height=\"19\" viewBox=\"0 0 21 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <line y1=\"-1.5\" x2=\"9.05954\" y2=\"-1.5\" transform=\"matrix(0.691378 0.722493 -0.691378 0.722493 0 11.8182)\"\n               strokeWidth=\"3\"/>\n        <path d=\"M6.29672 16.2165L19.7476 2\" strokeWidth=\"3\"/>\n    </svg>\n}", "import React from \"react\";\nimport {dark} from \"../values/colors/colors\";\n\nexport function CircleAnswer(props: {stroke?:string}) {\n    return <svg style={{stroke: props.stroke ?? dark}}  width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" >\n        <path d=\"M21.6 12C21.6 17.8535 17.0469 22.5 11.55 22.5C6.05306 22.5 1.5 17.8535 1.5 12C1.5 6.14646 6.05306 1.5 11.55 1.5C17.0469 1.5 21.6 6.14646 21.6 12Z\" strokeWidth=\"3\"/>\n    </svg>\n\n}", "import i18next from \"i18next\";\nimport React, {useEffect, useState} from \"react\";\nimport styled from \"styled-components\";\nimport {Box} from \"@mui/material\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {darkenPrimary, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport AutoSizer from \"react-virtualized-auto-sizer\";\nimport {FixedSizeList} from \"react-window\";\nimport {NoDataToDisplay} from \"@root/Frontend/Console/components/NoDataToDisplay\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {StepAction} from \"@backend/Types/StepAction\";\nimport {ViewSubtitle} from \"@root/Frontend/Console/components/ViewSubtitle\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport AnswerItem from \"@root/Frontend/Console/Views/Analytics/StepView/AnswerItem\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {canPeerEditWorld} from \"@root/Frontend/Console/utils/UtilsWorlds\";\n\nconst ContentWrapper = styled(Box)({\n    height: \"450px\",\n    backgroundColor: primary,\n    borderRadius: \"15px\",\n    boxShadow: \"6px 6px 10px rgb(0 0 0 / 0.2)\",\n    font: primaryFontLarge\n});\n\nconst HeaderContainer = styled(Box)({\n    display: \"flex\",\n    gap: \"5px\",\n    [theme.breakpoints.up('xs')]: {\n        padding: \"0 70px 0 17px\",\n        justifyContent: \"space-around\"\n    },\n    [theme.breakpoints.up('sm')]: {\n        padding: \"0 100px 0 17px\"\n    },\n    [theme.breakpoints.up('md')]: {\n        padding: \"0 40px 0 62px\"\n    }\n});\n\nconst HeaderAnswerWrapper = styled(Box)({\n    color: white,\n    position: \"relative\",\n    overflow: \"hidden\",\n    [theme.breakpoints.up('md')]: {\n        flex: 2\n    }\n});\n\nconst Header = styled(Box)({\n    padding: \"15px 0px\"\n});\n\nconst HeaderInfoWrapper = styled(Box)({\n    color: white,\n    position: \"relative\",\n    [theme.breakpoints.up('xs')]: {\n        minWidth: \"55px\"\n    },\n    [theme.breakpoints.up('md')]: {\n        minWidth: \"80px\",\n        flex: 1\n    }\n});\n\nconst ListWrapper = styled(Box)({\n    height: \"400px\",\n    overflow: \"overlay\",\n    [theme.breakpoints.up('xs')]: {\n        padding: \"0 17px\"\n    },\n    [theme.breakpoints.up('md')]: {\n        padding:\"0 20px 0 42px\"\n    },\n\n    scrollbarColor: primary,\n    scrollbarWidth: \"thin\",\n    \"& div div\":{\n        /* width */\n        \"&::-webkit-scrollbar\": {\n            width: \"10px\",\n            height: \"10px\",\n        },\n        /* Track */\n        \"&::-webkit-scrollbar-track\": {\n            width: 0,\n            backgroundColor: white,\n            borderRadius: \"10px\",\n            marginBlockEnd: \"1.3em\",\n        },\n        /* Handle */\n        \"&::-webkit-scrollbar-thumb\": {\n            background:darkenPrimary,\n            borderRadius: \"10px\",\n        }\n    }\n});\n\nexport interface AnswerInfo {\n    peerName: string;\n    timestamp: bigint;\n    answerValue: string;\n}\n\ninterface AnswersListProps {\n    worldID: bigint;\n    sequenceID: bigint;\n    stepID: bigint;\n    onlyLastValueInAttempt?: true\n}\n\nexport default function AnswersList(componentProps: AnswersListProps) {\n    const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n\n    const [answersValueList, setAnswersValueList] = useState<string[]>([]);\n    const [peerNamesList, setPeerNamesList] = useState<string[]>([]);\n    const [timestampsList, setTimestampsList] = useState<bigint[]>([]);\n\n    useEffect(() => {\n        setAnswerInfos();\n    }, []);\n\n    async function setAnswerInfos(): Promise<void> {\n        const allAttemptsLogs: AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(componentProps.worldID,\n                                                                                             componentProps.sequenceID);\n\n        const answers: AnswerInfo[] = [];\n        for (const attemptLog of allAttemptsLogs) {\n            // spread because we call reverse() after and it'll change the referenced array\n            const stepActionsList: StepAction[] = [...attemptLog.getStepActions()];\n            // reverse the array because stepAction are already sorted by timestamp (ascending order)\n            // and  in the case the user came back on a step, we're keeping the latest value\n            for (const stepAction of stepActionsList.reverse()) {\n                if (stepAction.stepID === componentProps.stepID && stepAction.stepInput) {\n                    const peer: Peer = await AppConsole.getInstance().dataSourcePeers.getPeer(attemptLog.peerID);\n                    const peerName: string = peer.fullName;\n                    const timestamp: bigint = stepAction.timeStart;\n                    const answerValue: string = stepAction.stepInput;\n                    answers.push({peerName, timestamp, answerValue});\n\n                    // displays all values for the same step (for the same attempt)\n                    // otherwise, only the last input is displayed\n                    if (!componentProps.onlyLastValueInAttempt)\n                        break;\n                }\n            }\n        }\n\n        // sort array by timestamp (descending order)\n        answers.sort((answer1: AnswerInfo, answer2: AnswerInfo) =>\n            Number(answer2.timestamp) - Number(answer1.timestamp));\n\n        const answersValues: string[] = [];\n        const peerNames: string[] = [];\n        const timestampsList: bigint[] = [];\n        answers.forEach((answerInfo: AnswerInfo) => {\n            answersValues.push(answerInfo.answerValue);\n            peerNames.push(answerInfo.peerName);\n            timestampsList.push(answerInfo.timestamp);\n        });\n\n        setAnswersValueList(answersValues);\n        setPeerNamesList(peerNames);\n        setTimestampsList(timestampsList);\n    }\n\n    if (!answersValueList.length)\n        return <NoDataToDisplay/>;\n\n    return (\n        <>\n            <ViewSubtitle>{i18next.t(\"Answers list\")}</ViewSubtitle>\n            <ContentWrapper>\n                <HeaderContainer>\n                    <HeaderAnswerWrapper>\n                        <Header>{i18next.t(\"Answer\")}</Header>\n                    </HeaderAnswerWrapper>\n                    <HeaderInfoWrapper>\n                        <Header>{i18next.t(\"User\")}</Header>\n                    </HeaderInfoWrapper>\n                    <HeaderInfoWrapper>\n                        <Header>{i18next.t(\"Date\")}</Header>\n                    </HeaderInfoWrapper>\n                </HeaderContainer>\n                <ListWrapper>\n                    <AutoSizer>\n                        {(props: {height: number, width: number}) =>\n                            <FixedSizeList\n                                height={props.height}\n                                width={props.width}\n                                itemSize={80}\n                                itemCount={answersValueList.length}\n                                overscanCount={1}\n                            >\n                                {({index, style}) =>\n                                    <Box sx={{...style, paddingRight: \"15px\", boxSizing: \"border-box\"}}>\n                                        <AnswerItem \n                                            answerValue={answersValueList[index]}\n                                            peerName={peerNamesList[index]}\n                                            timestamp={timestampsList[index]}\n                                        />\n                                    </Box>\n                                }\n                            </FixedSizeList>\n                        }\n                    </AutoSizer>\n                </ListWrapper>\n            </ContentWrapper>\n        </>\n    );\n}", "import React, {useEffect, useState} from \"react\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {timestampToShortString} from \"@utils/utils\";\nimport styled from \"styled-components\";\nimport {Box} from \"@mui/material\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {grey, white} from \"@root/react-components/src/values/colors/colors\";\n\nconst AnswerItemWrapper = styled(Box)({\n    backgroundColor: white,\n    border: `solid 2px ${grey}`,\n    display: \"flex\",\n    gap: \"5px\",\n    alignItems: \"center\",\n    borderRadius: \"15px\",\n    [theme.breakpoints.up('xs')]: {\n        marginBottom: \"10px\",\n        justifyContent: \"space-around\",\n        fontSize: \"small\"\n    },\n    [theme.breakpoints.up('sm')]: {\n        fontSize: \"inherit\"\n    },\n    [theme.breakpoints.up('md')]: {\n        padding: \"0 0 0 20px\",\n        marginBottom: \"20px\"\n    }\n});\n\nconst AnswerValueWrapper = styled(Box)({\n    [theme.breakpoints.up('xs')]: {\n        minWidth: \"30px\"\n    },\n    [theme.breakpoints.up('sm')]: {\n        minWidth: \"60px\"\n    },\n    [theme.breakpoints.up('md')]: {\n        flex: 2\n    }\n});\n\nconst TextEllipsis = styled(Box)({\n    width: \"100%\",\n    textOverflow: \"ellipsis\",\n    textWrap: \"nowrap\",\n    margin: \"14px 0px\",\n    overflow: \"hidden\"\n});\n\nconst InfoWrapper = styled(Box)({\n    [theme.breakpoints.down('sm')]: {\n        maxWidth: \"80px\",\n    },\n    [theme.breakpoints.up('md')]: {\n        minWidth: \"80px\",\n        flex: 1\n    }\n});\n\ninterface AnswerItemProps {\n    answerValue: string;\n    peerName: string;\n    timestamp: bigint;\n}\n\nexport default function AnswerItem(props: AnswerItemProps) {\n    return (\n        <AnswerItemWrapper>\n            <AnswerValueWrapper>\n                <Tooltip title={props.answerValue} placement=\"top-start\">\n                    <TextEllipsis>\n                        {props.answerValue}\n                    </TextEllipsis>\n                </Tooltip>\n            </AnswerValueWrapper>\n            <InfoWrapper>\n                <Tooltip title={props.peerName} placement=\"top-start\">\n                    <TextEllipsis>\n                        {props.peerName}\n                    </TextEllipsis>\n                </Tooltip>\n            </InfoWrapper>\n            <InfoWrapper>\n                {timestampToShortString(props.timestamp)}\n            </InfoWrapper>\n        </AnswerItemWrapper>\n    );\n}", "import React from \"react\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {ViewTitle} from \"@root/Frontend/Console/components/ViewTitle\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport styled from \"styled-components\";\nimport { darkenPrimary } from \"@root/react-components/src/values/colors/colors\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {WindowDimensions, WindowDimensionsContext} from \"@root/Frontend/Console/contexts/WindowDimensionsContext\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport i18next from \"i18next\";\nimport {VideoCell} from \"@root/Frontend/Console/Views/Analytics/StepView/StepVideo/VideoCell\";\nimport { Switch } from \"@root/react-components/src/inputs/Switch\";\nimport {VideoData} from \"@root/Frontend/DataSources/DataSourceVideo\";\nimport {canPeerEditWorld} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {DataSourceText, TextData} from \"@root/Frontend/DataSources/DataSourceText\";\n\nconst Grid = styled.div<{nbColumns: number}>`\n    grid-template-columns: ${props => `repeat(${props.nbColumns}, 1fr)`};\n    display: grid;\n    grid-gap: 40px;\n`\n\nconst SubTitleWrapper = styled.div`\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n`\n\nconst SubTitle = styled.p`\n    margin: -15px 0 30px 15px;\n    color: ${darkenPrimary};\n    font: ${primaryFontXLarge};\n`\n\nconst NoVideoDiv = styled.div`\n    margin-top: 100px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font: ${primaryFontLarge};\n`\n\nconst SwitchText = styled.p`\n    padding-top: 3px;\n    color: ${darkenPrimary};\n    font: ${primaryFontLarge};\n`\n\ninterface StepVideoViewProps {\n    worldID: bigint,\n    sequenceID: bigint,\n    stepID: bigint\n}\n\ninterface StepVideoViewState {\n    stepTitle: string,\n    videoAndCreatorIDs: Map<bigint, bigint>,\n    showDeleted: boolean\n}\n\nexport class StepVideoView extends SmartComponent {\n    props: StepVideoViewProps;\n    state: StepVideoViewState = { stepTitle: \"\", videoAndCreatorIDs: null, showDeleted: false };\n\n    static contextType: React.Context<WindowDimensions> = WindowDimensionsContext;\n\n    override async componentDidMount() {\n        super.componentDidMount();\n\n        const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n        const dataSourceText: DataSourceText = AppConsole.getInstance().dataSourceText;\n        const step: StepData = await dataSourceSteps.getStep(this.props.worldID,\n                                                             this.props.sequenceID,\n                                                             this.props.stepID);\n        const text: TextData = await dataSourceText.getText(step.Text.value);\n        this.setState({ stepTitle: text.OriginalText.value });\n\n        await this.refreshVideos();\n    }\n\n    override async componentDidUpdate(prevProps: StepVideoViewProps, prevState: StepVideoViewState) {\n        if(prevState.showDeleted != this.state.showDeleted)\n            await this.refreshVideos();\n    }\n\n    async refreshVideos(): Promise<void> {\n        const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n        const allAttemptsLogs: AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(this.props.worldID,\n                                                                                             this.props.sequenceID);\n\n        const videoCreators: Map<bigint, bigint> = new Map();\n        const videoAttemptsTimestamps: Map<bigint, bigint> = new Map();\n\n        for(const attemptLog of allAttemptsLogs) {\n            for(const stepAction of attemptLog.getStepActions()) {\n                if(stepAction.stepID === this.props.stepID && stepAction.stepInput) {\n                    // verify if we don't have any video earlier for that attempt yet!\n                    const timestamp: bigint = videoAttemptsTimestamps.get(attemptLog.attemptID);\n                    if(timestamp && timestamp > stepAction.timeStart)\n                        continue;\n\n                    videoAttemptsTimestamps.set(attemptLog.attemptID, stepAction.timeStart)\n\n                    const videoID: bigint = UtilsShared.safelyConvertStringToBigInt(stepAction.stepInput);\n                    if(videoID === BigInt(0))\n                        continue;\n\n                    videoCreators.set(videoID, attemptLog.peerID);\n                }\n            }\n        }\n\n        // display most recent attempts first\n        let videoIDs: bigint[] = Array.from(videoCreators.keys()).sort((video1: bigint, video2: bigint) =>\n            Number(UtilsShared.getTimestampOfRandomID(video2) - UtilsShared.getTimestampOfRandomID(video1)));\n\n        if(!this.state.showDeleted) {\n            videoIDs = await Promise.all(videoIDs.map(async(videoID: bigint): Promise<bigint> => {\n                if(!(await this.isVideoDeleted(videoID)))\n                    return videoID;\n            }));\n\n            videoIDs = videoIDs.filter((id: bigint) => id);\n        }\n\n        // maps are sorted by insertion order, so the IDs will still be sorted by most recent attempts\n        const videoAndCreatorIDs: Map<bigint, bigint> = new Map();\n        for (const videoID of videoIDs)\n            videoAndCreatorIDs.set(videoID, videoCreators.get(videoID));\n\n        this.setState({ videoAndCreatorIDs });\n    }\n\n    async isVideoDeleted(videoID: bigint): Promise<boolean> {\n        const video: VideoData = await AppConsole.getInstance().dataSourceVideo.getStepVideoData(videoID);\n        return !video?.VideoUrlS3;\n    }\n\n    getGridColumnsNumber(): number {\n        if(this.context.windowWidth > 1100)\n            return 4;\n        else if(this.context.windowWidth > 850)\n            return 3;\n        else if(this.context.windowWidth > 400)\n            return 2;\n\n        return 1;\n    }\n\n    onDeleteVideo(videoID: bigint): void {\n        if(!this.state.showDeleted) {\n            const videoAndCreatorIDs: Map<bigint, bigint> = this.state.videoAndCreatorIDs;\n            videoAndCreatorIDs.delete(videoID);\n            this.setState({ videoAndCreatorIDs });\n        }\n    }\n\n    render() {\n        if(!this.state.videoAndCreatorIDs)\n            return <CenteredLoading />\n\n        return <div style={{paddingBottom: \"24px\", font: primaryFontLarge}}>\n            <ViewTitle>{i18next.t(\"Step Video\")}</ViewTitle>\n            <SubTitleWrapper>\n                <SubTitle>{this.state.stepTitle}</SubTitle>\n                <div style={{marginBottom: \"30px\"}}>\n                    <div style={{display: \"flex\", alignItems: \"center\"}} >\n                        <SwitchText>{i18next.t(\"Show Deleted Videos\")} &nbsp;</SwitchText>\n                        <Switch initialValue={this.state.showDeleted}\n                                onChange={() => this.setState({showDeleted: !this.state.showDeleted})}/>\n                    </div>\n                </div>\n            </SubTitleWrapper>\n            {/*TODO: change Grid for react-window*/}\n            {this.state.videoAndCreatorIDs.size\n                ? <Grid nbColumns={this.getGridColumnsNumber()}>\n                    {Array.from(this.state.videoAndCreatorIDs.entries())\n                          .map(([videoID, creatorID]: [bigint, bigint], i: number) =>\n                        <VideoCell videoID={videoID}\n                                   creatorID={creatorID}\n                                   key={i}\n                                   onDeleteVideo={(videoID: bigint) => this.onDeleteVideo(videoID)}\n                        />)\n                    }\n                  </Grid>\n                : <NoVideoDiv>{i18next.t(\"No video to display\")}</NoVideoDiv>}\n        </div>\n    }\n}\n", "import React from \"react\";\nimport {DataSourceVideo, VideoData} from \"@root/Frontend/DataSources/DataSourceVideo\";\nimport styled from \"styled-components\";\nimport {darkenPrimary, darkenWhite, lightWhite, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {convertSecondsToTimer, timestampToShortString} from \"@utils/utils\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Delete} from \"@root/react-components/src/icons/Delete\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport i18next from \"i18next\";\nimport {DataSourceStorage} from \"@root/Frontend/DataSources/DataSourceStorage\";\nimport {ObjectTypeS3} from \"@backend/Types/ObjectTypeS3\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {FullScreenVideo} from \"@root/Frontend/Console/components/FullScreenVideo\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\n\nconst Wrapper = styled.div<{ cursor: string, width: string }>`\n    width: ${props => props.width};\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    border-radius: 24px;\n    background-color: white;\n    border: solid 2px ${darkenWhite};\n    text-align: center;\n    word-break: break-all;\n    cursor: ${props => props.cursor};\n`\n\nconst VideoWrapper = styled.div`\n    position: relative;\n    display: block;\n    height: 220px;\n    overflow: hidden;\n    border-radius: 22px;\n    border-bottom: solid 2px ${darkenWhite};\n`\n\nconst VideoThumbnail = styled.img<{isDeleted: boolean}>`\n    width: 100%;\n    height: 220px;\n    object-fit: cover;\n    opacity: ${props => props.isDeleted ? 0.4 : 1};\n    filter: ${props => props.isDeleted ? \"grayscale(70%)\" : \"none\"};\n`\n\nconst VideoInfoText = styled.p<{color: string}>`\n    color: ${props => props.color};\n    margin: 0;\n`\n\nconst PlayButtonWrapper = styled.div`\n    position: absolute;\n    width: 100%;\n    height: 100%;\n    opacity: 0;\n    transition: 0.3s opacity;\n    &:hover{\n        opacity: 100%;\n    }\n`\n\nconst PlayButton = styled.div`\n    border-radius: 5px;\n    position: absolute;\n    top: 40%;\n    left: 50%;\n    transform: translate(-50%,-50%);\n    width: 85px;\n    height: 60px;\n    // Background color needs to be rgba so it doesn't affect child's opacity\n    background-color: rgba(54, 62, 71, 0.7);\n`\n\nconst ThumbnailLabel = styled.div`\n    position: absolute;\n    color: ${lightWhite}\n    border-radius: 5px;\n    // Background color needs to be rgba so it doesn't affect child's opacity\n    background-color: rgba(54, 62, 71, 0.7);\n`\n\nconst TimerWrapper = styled(ThumbnailLabel)`\n    bottom: 9px;\n    padding: 1px 6px 0 4px;\n    left: 10px;\n    height: fit-content;\n`\n\nconst DeleteWrapper = styled(ThumbnailLabel)`\n    bottom: 64px;\n    right: 10px;\n    width: 32px;\n    height: 32px;\n    display: flex;\n    border-radius: 5px;\n    justify-content: center;\n    align-items: center;\n    svg {\n        width: 20px;\n        height: 20px;\n    }\n`\n\nconst HoverButtonsWrapper = styled.div`\n    position: absolute;\n    width: 100%;\n    height: 100%;\n    opacity: 0;\n    transition: 0.3s opacity;\n    z-index: 50;\n    &:hover {\n        opacity: 100%;\n    }\n`\n\ninterface VideoCellProps {\n    videoID: bigint;\n    creatorID: bigint;\n    onDeleteVideo(videoID: bigint): void;\n}\n\ninterface VideoCellState {\n    thumbnailURL: string;\n    videoUrlS3: string;\n    duration: bigint;\n    user: string;\n    timestamp: bigint;\n    isSelected: boolean;\n}\n\nexport class VideoCell extends React.Component {\n    props: VideoCellProps;\n    state: VideoCellState = {\n        thumbnailURL: \"\",\n        videoUrlS3: \"\",\n        duration: BigInt(0),\n        user: \"\",\n        timestamp: BigInt(0),\n        isSelected: false\n    }\n\n    override async componentDidMount() {\n        await this.refreshVideoData();\n    }\n\n    override async componentDidUpdate(prevProps: { videoID: bigint, onDeleteVideo(videoID: bigint): void }) {\n        if(prevProps.videoID !== this.props.videoID)\n            await this.refreshVideoData();\n    }\n\n    async refreshVideoData() {\n        if (!this.props.videoID) return;\n\n        const dataSourceStorage: DataSourceStorage = AppConsole.getInstance().dataSourceStorage;\n        const dataSourceVideo: DataSourceVideo = AppConsole.getInstance().dataSourceVideo;\n        const videoData: VideoData | null = await dataSourceVideo.getStepVideoData(this.props.videoID);\n\n        if (!videoData)\n            return;\n\n        const dataSourcePeers: DataSourcePeers = AppConsole.getInstance().dataSourcePeers;\n        const user = await dataSourcePeers.getPeer(this.props.creatorID);\n\n        const thumbnailURL: string =\n            await dataSourceStorage.getPreSignedUrl(videoData.ThumbnailUrlS3, ObjectTypeS3.IMAGE);\n\n        this.setState({\n            thumbnailURL,\n            videoUrlS3: videoData.VideoUrlS3,\n            duration: videoData.Duration,\n            timestamp: videoData.Timestamp,\n            user: user.fullName,\n        });\n    }\n\n    private async handleDeleteClick(event: React.MouseEvent): Promise<void> {\n        event.stopPropagation();\n\n        const confirmMessage: string = i18next.t(\"Are you sure you want to delete this video?\");\n\n        if (await Prompt.confirm(confirmMessage, i18next.t(\"Delete\"), true))\n            await this.onConfirm();\n    }\n\n    private async onConfirm(){\n        if (await AppConsole.getInstance().dataSourceVideo.deleteVideo(this.props.videoID)){\n            this.setState({ videoUrlS3: \"\" });\n            this.props.onDeleteVideo(this.props.videoID);\n        }\n    }\n\n    render(): JSX.Element {\n        const isDeleted: boolean = !this.state.videoUrlS3;\n        if (!this.props.videoID)\n            return <CenteredLoading/>;\n\n        return <div>\n            <Wrapper cursor={isDeleted ? \"default\" : \"pointer\"} width=\"100%\"\n                     onClick={() => this.setState({ isSelected: !isDeleted })}>\n                {!isDeleted &&\n                    <HoverButtonsWrapper>\n                        <DeleteWrapper onClick={(event: React.MouseEvent) => this.handleDeleteClick(event)}>\n                            <Delete/>\n                        </DeleteWrapper>\n                        <PlayButton>\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 85 60\" fill={lightWhite}>\n                                <polygon points=\"30.5 15.44 30.5 44.74 63.1 30.09 30.5 15.44\"/>\n                            </svg>\n                        </PlayButton>\n                    </HoverButtonsWrapper>\n                }\n                <VideoWrapper>\n                    <TimerWrapper>{convertSecondsToTimer(Number(this.state.duration))}</TimerWrapper>\n                    <PlayButtonWrapper>\n                        <PlayButton>\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 85 60\" fill={lightWhite}>\n                                <polygon points=\"30.5 15.44 30.5 44.74 63.1 30.09 30.5 15.44\"/>\n                            </svg>\n                        </PlayButton>\n                    </PlayButtonWrapper>\n                    <VideoThumbnail src={this.state.thumbnailURL} isDeleted={isDeleted} crossOrigin=\"anonymous\"/>\n                </VideoWrapper>\n                <div style={{padding: \"5px\"}}>\n                    <VideoInfoText color={darkenPrimary}>{this.state.user}</VideoInfoText>\n                    <VideoInfoText color={primary}>{timestampToShortString(this.state.timestamp)}</VideoInfoText>\n                </div>\n            </Wrapper>\n\n            {this.state.isSelected &&\n                <FullScreenVideo\n                    onClose={() => this.setState({ isSelected: false })}\n                    videoID={this.props.videoID}\n                    title={this.state.user}\n                    subTitle={timestampToShortString(this.state.timestamp)}\n                />\n            }\n        </div>\n    }\n}\n", "import React, {useEffect, useRef, useState} from \"react\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {FullScreenOverlay} from \"@root/Frontend/Console/components/FullScreenOverlay\";\nimport {VideoSubtitle} from \"@root/react-components/src/misc/VideoSubtitle\";\nimport {styled} from \"@mui/material\";\nimport {DataSourceVideo, VideoData} from \"@root/Frontend/DataSources/DataSourceVideo\";\nimport {DataSourceStorage} from \"@root/Frontend/DataSources/DataSourceStorage\";\nimport {ObjectTypeS3} from \"@backend/Types/ObjectTypeS3\";\nimport {generateVideoSubtitles} from \"@root/Frontend/Console/utils/UtilsVideos\";\n\nconst MEDIA_INFO_ONE_TITLE_HEIGHT: number = 11;\nconst MEDIA_INFO_BOTH_TITLES_HEIGHT: number = 36;\nconst VIDEO_CONTROLS_HEIGHT: number = 46;\n\nconst Video = styled(\"video\")({\n    maxHeight: \"90vh\",\n    maxWidth: \"100%\",\n    borderRadius: \"22px\",\n    cursor: \"pointer\",\n});\n\nconst SUBTITLES_SIZE_RATIO: number = 0.75;\n\ninterface FullScreenVideoProps {\n    onClose: () => void;\n    videoID: bigint;\n    title?: string;\n    subTitle?: string;\n}\n\nexport function FullScreenVideo(props: FullScreenVideoProps): JSX.Element {\n    const dataSourceVideo: DataSourceVideo = AppConsole.getInstance().dataSourceVideo;\n    const dataSourceStorage: DataSourceStorage = AppConsole.getInstance().dataSourceStorage;\n\n    const videoRef = useRef<HTMLVideoElement>(null);\n\n    const [videoURL, setVideoURL] = useState<string>(\"\");\n    const [videoSubtitlesURL, setVideoSubtitlesURL] = useState<string>(\"\");\n    const [activeSubtitle, setActiveSubtitle] = useState<string>(\"\");\n    const [videoTranscript, setVideoTranscript] = useState<string[] | null>(null);\n    const [videoHeight, setVideoHeight] = useState<number>(0);\n    const [videoWidth, setVideoWidth] = useState<number>(0);\n\n    useEffect(() => {\n        fetchVideoData().then(({ urlS3, subtitlesURL }) => {\n            if (Boolean(subtitlesURL))\n                setVideoSubtitlesURL(subtitlesURL);\n            if (Boolean(urlS3))\n                setVideoURL(urlS3);\n        });\n    }, [props.videoID]);\n\n    useEffect(() => {\n        if (videoSubtitlesURL || !videoURL)\n            return;\n\n        generateVideoSubtitles(props.videoID).then((subtitlesBlob: Blob | null) => {\n            if (!subtitlesBlob)\n                return;\n\n            dataSourceVideo.saveVideoSubtitles(props.videoID, subtitlesBlob);\n            setVideoSubtitlesURL(URL.createObjectURL(subtitlesBlob));\n        });\n\n        return () => {\n            URL.revokeObjectURL(videoSubtitlesURL);\n        };\n    }, [videoURL]);\n\n    useEffect(() => {\n        if (!videoSubtitlesURL)\n            return;\n\n        const textTracks: TextTrackList | undefined = videoRef.current?.textTracks;\n        if (!textTracks || textTracks.length === 0)\n            return;\n\n        const textTrack: TextTrack = textTracks[0];\n        textTrack.mode = \"hidden\";\n        textTrack.oncuechange = () => {\n            // set the active cue\n            const activeCueList: TextTrackCueList | null = textTrack.activeCues;\n            const activeCueText: string = activeCueList?.length ? (activeCueList[0] as VTTCue).text : \"\";\n            setActiveSubtitle(activeCueText);\n\n            // set the rest of the videos into the video transcription\n            if (!videoTranscript)\n                setVideoTranscription();\n        };\n\n        return () => {\n            textTrack.oncuechange = null;\n        };\n    }, [videoSubtitlesURL]);\n\n    async function fetchVideoData(): Promise<{ urlS3: string, subtitlesURL: string }> {\n        if (!props.videoID)\n            return { urlS3: \"\", subtitlesURL: \"\" };\n\n        const videoData: VideoData | null = await dataSourceVideo.getStepVideoData(props.videoID);\n        if (!videoData?.VideoUrlS3)\n            return { urlS3: \"\", subtitlesURL: \"\" };\n\n        const urlS3: string = videoData?.VideoUrlS3 ?\n            await dataSourceStorage.getPreSignedUrl(videoData.VideoUrlS3, ObjectTypeS3.VIDEO, props.videoID) : \"\";\n\n        const subtitlesURL: string = urlS3 ? await dataSourceVideo.downloadVideoSubtitles(props.videoID) : \"\";\n        return { urlS3, subtitlesURL };\n    }\n\n    // set all cues as the complete transcript if not done already\n    function setVideoTranscription() {\n        const textTracks: TextTrackList | undefined = videoRef.current?.textTracks;\n        if (!textTracks?.length) {\n            setVideoTranscript([]);\n            return;\n        }\n\n        const allCuesList: TextTrackCueList | null = textTracks[0].cues;\n        if (!allCuesList)\n            return;\n\n        const transcript: string[] = [];\n        for (let i = 0; i < allCuesList.length; ++i)\n            transcript.push((allCuesList[i] as VTTCue).text);\n        setVideoTranscript(transcript);\n    }\n\n    function getSubtitleDistanceFromBottom(): number {\n        let bottom: number = VIDEO_CONTROLS_HEIGHT;\n        if (props.title && props.subTitle)\n            bottom += MEDIA_INFO_BOTH_TITLES_HEIGHT;\n        else if (props.title || props.subTitle)\n            bottom += MEDIA_INFO_ONE_TITLE_HEIGHT;\n        return bottom;\n    }\n\n    return (\n        <FullScreenOverlay onClose={props.onClose} title={props.title} subTitle={props.subTitle}>\n            <>\n                <Video\n                    ref={videoRef}\n                    controls\n                    controlsList=\"nofullscreen\"\n                    crossOrigin=\"anonymous\"\n                    disablePictureInPicture\n                    onLoadedMetadata={() => {\n                        if (!videoRef.current)\n                            return;\n\n                        setVideoHeight(videoRef.current.clientHeight);\n                        setVideoWidth(videoRef.current.clientWidth);\n                        setVideoTranscription();\n                    }}\n                >\n                    { Boolean(videoURL) && <source src={videoURL} type=\"video/mp4\" /> }\n                    { Boolean(videoSubtitlesURL) && <track default kind=\"subtitles\" src={videoSubtitlesURL} /> }\n                </Video>\n                <VideoSubtitle\n                    bottom={getSubtitleDistanceFromBottom()}\n                    maxHeight={videoHeight * SUBTITLES_SIZE_RATIO}\n                    maxWidth={videoWidth * SUBTITLES_SIZE_RATIO}\n                    subtitle={activeSubtitle}\n                    transcript={videoTranscript}\n                />\n            </>\n        </FullScreenOverlay>\n    );\n}\n", "import React, {ReactElement} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {\n    darkenPrimary,\n    darkenWhite,\n    primary,\n    white\n} from \"@root/react-components/src/values/colors/colors\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {Dialog} from \"@root/Frontend/Studio/DialogContainer\";\n\nconst ExitButton = styled(Box)({\n    display: \"flex\",\n    color: white,\n    position: \"absolute\",\n    top: \"15px\",\n    right: \"15px\",\n    cursor: \"pointer\",\n    width: \"24px\",\n    height: \"24px\",\n});\n\nconst MediaInfoText = styled(Box)((props: {color: string}) => ({\n    color: props.color,\n    margin: 0\n}));\n\ninterface FullScreenOverlayProps {\n    onClose: () => void;\n    title?: string;\n    subTitle?: string;\n    children: ReactElement;\n}\n\nexport function FullScreenOverlay(props: FullScreenOverlayProps): JSX.Element {\n    return (\n        <Dialog\n            closeOnClickOutside\n            onClose={() => props.onClose()}\n            innerStyle={{border: `2px solid ${darkenWhite}`, padding: \"unset\", position: \"relative\"}}\n        >\n            {props.children}\n            <ExitButton onClick={props.onClose}>\n                <Close/>\n            </ExitButton>\n            {(props.title || props.subTitle) &&\n                <Box padding={\"5px\"} textAlign={\"center\"}>\n                    {props.title && <MediaInfoText color={darkenPrimary}> {props.title} </MediaInfoText>}\n                    {props.subTitle && <MediaInfoText color={primary}> {props.subTitle} </MediaInfoText>}\n                </Box>\n            }\n        </Dialog>\n    );\n}\n", "import {DataSourceVideo, VideoData} from \"@root/Frontend/DataSources/DataSourceVideo\";\nimport {VIDEO_TRANSCRIPTION_DURATION_LIMIT} from \"@utils/utils\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {DataSourceSpeech} from \"@root/Frontend/DataSources/DataSourceSpeech\";\n\nexport async function generateVideoSubtitles(videoID: bigint): Promise<Blob | null> {\n    const dataSourceSpeech: DataSourceSpeech = AppConsole.getInstance().dataSourceSpeech;\n    const dataSourceVideo: DataSourceVideo = AppConsole.getInstance().dataSourceVideo;\n\n    // don't transcribe if the video is longer than the limit\n    const videoData: VideoData | null = await dataSourceVideo.getStepVideoData(videoID);\n    if (!videoData?.Duration || videoData.Duration > VIDEO_TRANSCRIPTION_DURATION_LIMIT)\n        return null;\n\n    const videoFile: File | null = await dataSourceVideo.downloadVideo(videoID);\n    if (!videoFile)\n        return null;\n\n    // save the video file to the core to be able to extract its audio for transcription\n    const videoFilePath: string = await AdapterUtils.saveFileToCore(videoFile);\n    if (!videoFilePath)\n        return null;\n\n    const audioFilePath: string = AppConsole.getInstance().getEngine().extractAudioFromVideo(videoFilePath);\n    if (!audioFilePath)\n        return null;\n\n    const audioBlob: Blob = new Blob([AdapterUtils.getCoreFileBinary(audioFilePath, \"\")], { type: \"audio/m4a\" });\n    return dataSourceSpeech.transcribeSpeech(audioBlob);\n}\n", "import React from \"react\"\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {MedianTable} from \"@root/Frontend/Console/Views/Analytics/StepView/StepAnimatedView/MedianTable\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {Checkbox} from \"@root/react-components/src/inputs/Checkbox\";\nimport {FILTER_OS_LIST, FiltersRow, FiltersInterface} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {getRangeDateValueByFilterOption, parseAttemptsByFilters} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport isEqual from \"lodash/isEqual\";\nimport {canPeerEditWorld} from \"@root/Frontend/Console/utils/UtilsWorlds\";\n\ninterface StepAnimatedViewProps { worldID: bigint, sequenceID: bigint, stepID: bigint }\ninterface StepAnimatedViewState {\n    filters: FiltersInterface\n    stepTimesByPeer: Map<bigint, bigint[]>\n    isLogarithmic: boolean\n}\n\nexport class StepAnimatedView extends SmartComponent{\n\n    props: StepAnimatedViewProps\n    state: StepAnimatedViewState  = {\n        stepTimesByPeer: new Map<bigint, bigint[]>(),\n        isLogarithmic: false,\n        filters: {\n            filterDate: FilterDateOptions.All_TIME,\n            dateRange: getRangeDateValueByFilterOption(FilterDateOptions.All_TIME),\n            filterOS: FILTER_OS_LIST,\n        }\n    }\n\n    async componentDidMount() {\n        super.componentDidMount();\n        await this.reloadMedianTimePerPeer();\n    }\n\n    async componentDidUpdate(prevProps: StepAnimatedViewProps, prevState: StepAnimatedViewState) {\n        const isFilterLogarithmicChanged: boolean = prevState.isLogarithmic !== this.state.isLogarithmic;\n\n        if(!isEqual(this.state.filters, prevState.filters) || isFilterLogarithmicChanged)\n            await this.reloadMedianTimePerPeer();\n    }\n\n    private async reloadMedianTimePerPeer() {\n        const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n        let allAttemptsLogs: AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(this.props.worldID,\n                                                                                           this.props.sequenceID);\n\n        allAttemptsLogs = await parseAttemptsByFilters(allAttemptsLogs, this.state.filters);\n\n        this.setState({ stepTimesByPeer: this.createMapOfStepActionByPeer(allAttemptsLogs) });\n    }\n\n    // We create a map from all sequence attempts. It's a list of StepAction per Peer according to the given StepID\n    private createMapOfStepActionByPeer(allAttemptsLogs: AttemptLogs[]): Map<bigint, bigint[]> {\n        const timeSpentByPeersMap: Map<bigint, bigint[]> = new Map();\n\n        for(const attemptLog of allAttemptsLogs)\n            for(const stepAction of attemptLog.getStepActions()) {\n                if (stepAction.stepID !== this.props.stepID) continue;\n\n                if(timeSpentByPeersMap.has(attemptLog.peerID))\n                    timeSpentByPeersMap.get(attemptLog.peerID)?.push(stepAction.timeSpent);\n                else\n                    timeSpentByPeersMap.set(attemptLog.peerID, [stepAction.timeSpent]);\n            }\n\n        return timeSpentByPeersMap;\n    }\n\n    render() {\n        return (\n            <div>\n                <div style={{\n                    font: primaryFontXLarge,\n                    paddingTop: \"16px\",\n                    paddingBottom: \"16px\",\n                    display: \"flex\",\n                    justifyContent: \"space-between\"\n                }}>\n                    <div> {i18next.t(\"Step Animated\")} </div>\n                    <div style={{ display: \"flex\", gap: \"10px\", alignItems: \"center\" }}>\n                        <Checkbox\n                            checked={this.state.isLogarithmic}\n                            onClick={(checked: boolean) => this.setState({ isLogarithmic: !checked })}\n                            label={i18next.t(\"Logarithmic scale\")}\n                        />\n                        <FiltersRow\n                            filters={this.state.filters}\n                            handleOnChangeFilter={(filters: FiltersInterface) => this.setState({ filters })}\n                        />\n                    </div>\n                </div>\n                <MedianTable stepTimesByPeer={this.state.stepTimesByPeer}\n                             isLogarithmic={this.state.isLogarithmic} />\n            </div>\n        )\n    }\n}\n\n", "import React from \"react\"\nimport styled from \"styled-components\";\nimport {\n    lightGrey,\n    lightWhite\n} from \"@root/react-components/src/values/colors/colors\";\nimport {\n    primaryFontLarge,\n    primaryFontMedium,\n    primaryFontXLarge\n} from \"@root/react-components/src/values/fonts/fonts\";\nimport {MedianBar} from \"@root/Frontend/Console/Views/Analytics/StepView/StepAnimatedView/MedianBar\";\nimport i18next from \"i18next\";\nimport {UtilsStats} from \"@backend/Utils/UtilsStats\";\nimport getMedian = UtilsStats.getMedian;\nimport {TimeAmount, TimeUnit} from \"@utils/utils\";\nimport {AverageStepTimeSpent} from \"@root/Frontend/Console/Types/AverageStepTimeSpent\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Peer} from \"@backend/Types/Peer\";\n\nconst BarChartContainer = styled.div`\n    padding: 30px 40px;\n    overflow: auto;\n    background-color: ${lightWhite};\n    border-radius: 20px;\n`\n\nconst Row = styled.tr`\n    border-bottom: 1px solid ${lightGrey};\n`\n\nconst Title = styled.th`\n    padding-bottom: 20px;\n    font: ${primaryFontLarge}\n`\n\nconst Cell = styled.td`\n    font: ${primaryFontLarge};\n    padding: 2px;\n    &.number { text-align: center; }\n`\n\ninterface MedianTableProps {\n    isLogarithmic: boolean\n    stepTimesByPeer: Map<bigint, bigint[]>\n}\n\ninterface MedianTableState {\n    median: number\n    halfWidth: number\n    chartData: AverageStepTimeSpent[]\n}\n\nexport class MedianTable extends React.Component {\n    props: MedianTableProps;\n    state: MedianTableState = { median: 0, halfWidth: 0, chartData: [] };\n\n    async componentDidUpdate(prevProps: Readonly<MedianTableProps>, prevState: Readonly<MedianTableState>, snapshot?: any) {\n        if(prevState.chartData.length !== 0 && this.props.stepTimesByPeer.size == 0) {\n            this.setState({ median: 0, halfWidth: 0, chartData: [] });\n            return;\n        }\n\n        const sortedChartData: AverageStepTimeSpent[] = await this.createAverageStepTimeSpentByPeerList();\n        const median: number = Math.round(getMedian(sortedChartData.map(e => e.averageTime)));\n        if(sortedChartData.length % 2 === 0)\n            sortedChartData.splice(sortedChartData.length / 2,0, {title: \"Median\", attempts: 0, averageTime: median});\n\n        const halfWidth: number = this.calculateHalfWidth(median, sortedChartData);\n        if(prevState.halfWidth !== halfWidth || prevState.median !== median)\n            this.setState({ median, halfWidth, chartData: sortedChartData });\n    }\n\n    // We create a list of peer name with the average time spent and the number of attempts on a giving step\n    private async createAverageStepTimeSpentByPeerList(): Promise<AverageStepTimeSpent[]> {\n        const newAverageStepTimeSpentList:AverageStepTimeSpent[] = [];\n\n        for(const [peerID, time] of this.props.stepTimesByPeer.entries()) {\n            if(!peerID || !time) continue;\n\n            const peer: Peer = await AppConsole.getInstance().dataSourcePeers.getPeer(peerID);\n            const totalTime: number = time.reduce((sum: number, b: bigint) => Number(sum) + Number(b), 0);\n            const newValue: AverageStepTimeSpent = {\n                title: peer.username,\n                attempts: time.length,\n                averageTime: Math.round(totalTime / time.length)\n            };\n\n            newAverageStepTimeSpentList.push(newValue);\n        }\n\n        return newAverageStepTimeSpentList.sort(\n            (a:AverageStepTimeSpent, b:AverageStepTimeSpent) => a.averageTime - b.averageTime);\n    }\n\n    private calculateHalfWidth(median: number, sortedData: AverageStepTimeSpent[]) {\n        const firstHalfSpread: number = sortedData.length === 1 ? median : median - sortedData[0].averageTime;\n        const secondHalfSpread: number = sortedData[sortedData.length - 1].averageTime - median;\n        return firstHalfSpread > secondHalfSpread ? firstHalfSpread : secondHalfSpread;\n    }\n\n    render() {\n        return (\n            <BarChartContainer>\n                <table style={{ width:\"100%\", borderCollapse: \"collapse\", overflow: \"auto\" }}>\n                    <tbody>\n                    <Row>\n                        <Title style={{ textAlign: \"left\"}}> {i18next.t(\"Users\")} </Title>\n                        <Title style={{ maxWidth: \"60px\" }}> {i18next.t(\"Number of attempts\")} </Title>\n                        <Title> {i18next.t(\"Average time\")} </Title>\n                        <Title>\n                            <div style={{\n                                width: \"90%\",\n                                display: \"flex\",\n                                alignItems: \"center\",\n                                justifyContent:\"center\",\n                                margin: \"auto\"\n                            }}>\n                                <div style={{ font: primaryFontMedium }}>{i18next.t(\"Fastest\")}</div>\n                                <div style={{flex: 1, borderBottom: \"1px solid #000\", margin: \"0px 2.5%\"}}/>\n                                    {i18next.t(\"Step time versus median\")}\n                                <div style={{flex: 1, borderBottom: \"1px solid #000\", margin: \"0px 2.5%\"}}/>\n                                <div style={{ font: primaryFontMedium }}>{i18next.t(\"Slowest\")}</div>\n                            </div>\n                        </Title>\n                    </Row>\n\n                    {this.state.chartData.map((row: AverageStepTimeSpent) => {\n                        return (\n                            <Row key={row.title}>\n                                <Cell> {row.title == \"Median\" ? i18next.t(\"Median\") : row.title} </Cell>\n                                <Cell className=\"number\" style={{ maxWidth: \"60px\" }}>\n                                    {row.title == \"Median\" ? \"-\" : row.attempts}\n                                </Cell>\n                                <Cell className=\"number\">\n                                    {row.title == \"Median\" ? \"-\" :\n                                        new TimeAmount(row.averageTime, TimeUnit.SECONDS).toPrettyHumanTime(true, true)}\n                                </Cell>\n                                <td style={{ width: \"60%\", minWidth: \"400px\" }}>\n                                    <MedianBar\n                                        value={row.averageTime}\n                                        median={this.state.median}\n                                        half={this.props.isLogarithmic ?\n                                            Math.log(this.state.halfWidth) : this.state.halfWidth}\n                                        isLogarithmic={this.props.isLogarithmic}\n                                    />\n                                </td>\n                            </Row>\n                        )\n                    })}\n                    </tbody>\n                </table>\n                {this.state.chartData.length === 0 &&\n                    <div\n                        style={{\n                            display: \"flex\",\n                            width: \"100%\",\n                            justifyContent: \"center\",\n                            alignItems: \"center\",\n                            height: \"100px\",\n                            font: primaryFontXLarge\n                        }}\n                    >\n                        {i18next.t(\"No data to display\")}\n                    </div>\n                }\n            </BarChartContainer>\n        )\n    }\n}\n", "import React, {useEffect, useState} from \"react\";\nimport styled from \"styled-components\";\nimport {primaryFontMedium, primaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {dark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {TimeAmount, TimeUnit} from \"@utils/utils\";\n\nconst PALE_GREEN = \"#9ed19e\";\nconst DARK_GREEN = \"#5e9c5e\";\nconst DARK_RED = \"#db5757\";\nconst PALE_RED = \"#ffcccc\";\n\nconst BarWrapper = styled.div`\n    padding: 10px 50px;\n`\n\nconst BarContainer = styled.div`\n     height: 30px;\n     width: 100%;\n     position: relative;\n     display: flex;\n     border: 1px solid ${dark};\n     background-color: ${PALE_RED};\n`\n\nconst Bar = styled.div<{color: string, width: string}>`\n    height: 100%;\n    width: ${props => props.width}%;\n    background: ${props => props.color};\n    display: flex;\n    align-items: center;\n`\n\nconst MedianContainer = styled.div`\n    height: 100%;\n    position: absolute;\n    display: flex;\n    width: 100%;\n`\n\nconst MedianWrapper = styled.div`\n    height: 100%;\n    display: flex;\n    align-items: center;\n    padding: 0px 5px;\n    font: ${primaryFontMedium}; \n    background-color: ${white};\n    border-left: 1px solid ${dark};\n    border-right: 1px solid ${dark};\n    margin: 0 auto 0 auto;\n`\n\nconst RedTypo = styled.div`\n    position: relative;\n    font: ${primaryFontSmall};\n    width: 100%; \n    position: relative;\n    white-space: nowrap;\n    right: -5px;\n`\n\nconst GreenTypo = styled.div`\n    position: relative;\n    font: ${primaryFontSmall};\n    width: 100%; \n    display: flex; \n    justify-content: flex-end; \n    white-space: nowrap;\n    left: -5px;\n`\n\ninterface Bars { first: number, second: number, third: number }\nconst HALF_PERCENTAGE = 50;\n\nexport function MedianBar(props: {value: number, median: number, half: number, isLogarithmic: boolean}) {\n    const [isBeforeMedian, setIsBeforeMedian] = useState<boolean>(null);\n    const [bars, setBars] = useState<Bars>({ first: 0, second: 0, third: 0 });\n\n    useEffect(() => {\n        if(props.median && props.value)\n            setIsBeforeMedian(props.value < props.median)\n    }, [props.median, props.value]);\n\n    useEffect(() => {\n        if(props.half !== 0)\n            calculateBars();\n    }, [isBeforeMedian, props.isLogarithmic, props.value, props.median]);\n\n    // -half     value        Median               +half\n    //   +---------+------------+--------------------+\n    //   |         |            |                    |\n    //   +---------+------------+--------------------+\n    //     First       Second            Third\n    //     width       width             width\n    function calculateBars() {\n        let first;\n        let second = 0;\n        let third;\n\n        if(props.value === props.median) {\n            first = props.half;\n            third = props.half;\n        } else if(isBeforeMedian) {\n            const medianMinusValue: number = props.median - props.value;\n            first = props.isLogarithmic ? props.half - Math.log(medianMinusValue) : props.half - medianMinusValue;\n            second = props.isLogarithmic ? Math.log(medianMinusValue) : medianMinusValue;\n            third = props.half;\n        } else {\n            const valueMinusMedian: number = props.value - props.median;\n            first = props.half;\n            second = props.isLogarithmic ? Math.log(valueMinusMedian) : valueMinusMedian;\n            third = props.isLogarithmic ? props.half - Math.log(valueMinusMedian) : props.half - valueMinusMedian;\n        }\n\n        if (props.half){\n            setBars({\n                first: first * HALF_PERCENTAGE / props.half,\n                second: second * HALF_PERCENTAGE / props.half,\n                third: third * HALF_PERCENTAGE / props.half \n            });\n         }\n    }\n\n    if(!bars.first && !bars.second && !bars.third)\n        return <></>;\n\n    return (\n        <BarWrapper>\n            <BarContainer>\n                <Bar width={bars.first.toString()} color={PALE_GREEN} style={{ borderRight: `1px solid ${dark}` }}>\n                    {isBeforeMedian &&\n                        <GreenTypo>\n                            - {new TimeAmount(props.median-props.value, TimeUnit.SECONDS).toPrettyHumanTime(true, true)}\n                        </GreenTypo>\n                    }\n                </Bar>\n                {props.value !== props.median ?\n                    <Bar\n                        width={bars.second.toString()}\n                        color={props.value > props.median ? DARK_RED : DARK_GREEN}\n                        style={{\n                            borderRight: isBeforeMedian && `1px solid ${dark}`,\n                            borderLeft: !isBeforeMedian && `1px solid ${dark}`\n                        }}\n                    />\n                    :\n                    <MedianContainer>\n                        <MedianWrapper>\n                            {new TimeAmount(props.median , TimeUnit.SECONDS).toPrettyHumanTime(true, true)}\n                        </MedianWrapper>\n                    </MedianContainer>\n                }\n                <Bar width={bars.third.toString()} color={PALE_RED} style={{ borderLeft: `1px solid ${dark}` }}>\n                    {!isBeforeMedian && props.value !== props.median &&\n                        <RedTypo>\n                            + {props.value - props.median >= 1 &&\n                                new TimeAmount(props.value-props.median, TimeUnit.SECONDS).toPrettyHumanTime(true, true)\n                            }\n                        </RedTypo>\n                    }\n                </Bar>\n            </BarContainer>\n        </BarWrapper>\n    )\n}", "import React from \"react\";\nimport {SmartComponent} from \"@utils/SmartComponent\";\nimport {Box, styled} from \"@mui/material\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {ViewTitle} from \"@root/Frontend/Console/components/ViewTitle\";\nimport i18next from \"i18next\";\nimport {darkenPrimary} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {StepBranchingPieChart} from \"@root/Frontend/Console/Views/Analytics/StepView/StepBranching/StepBranchingPieChart\";\nimport AnswersList from \"@root/Frontend/Console/Views/Analytics/StepView/AnswersList\";\nimport {DataSourceText, TextData} from \"@root/Frontend/DataSources/DataSourceText\";\n\nconst SubTitle = styled(Box)({\n    margin: \"0 0 20px 0\",\n    color: darkenPrimary,\n    font: primaryFontXLarge\n});\n\ninterface StepBranchingProps{\n    worldID: bigint,\n    sequenceID: bigint,\n    stepID: bigint\n}\n\nexport class StepBranchingView extends SmartComponent {\n    props: StepBranchingProps;\n    state: { stepTitle: string | null } = { stepTitle: null };\n\n    override async componentDidMount(){\n        super.componentDidMount();\n\n        const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n        const dataSourceText: DataSourceText = AppConsole.getInstance().dataSourceText;\n        const step: StepData = await dataSourceSteps.getStep(this.props.worldID,\n                                                             this.props.sequenceID,\n                                                             this.props.stepID);\n        const text: TextData = await dataSourceText.getText(step.Text.value);\n        this.setState({ stepTitle: text.OriginalText.value });\n    }\n\n    render() {\n        if (!this.state.stepTitle)\n            return <CenteredLoading/>\n\n        return (\n            <>\n                <ViewTitle style={{padding: \"15px 0 0 0\"}}>{i18next.t(\"Step Branching\")}</ViewTitle>\n                <SubTitle>{this.state.stepTitle}</SubTitle>\n\n                <StepBranchingPieChart worldID={this.props.worldID}\n                                       sequenceID={this.props.sequenceID}\n                                       stepID={this.props.stepID}\n                />\n\n                <AnswersList worldID={this.props.worldID}\n                             sequenceID={this.props.sequenceID}\n                             stepID={this.props.stepID}\n                             onlyLastValueInAttempt\n                />\n            </>\n        );\n    }\n}\n", "import {SmartComponent} from \"@utils/SmartComponent\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport React, {ReactElement} from \"react\";\nimport styled from \"styled-components\";\nimport {white, darkenPrimary, darkenWhite, lighterDark,\n    lightPrimary, lightWhite, primary,\n} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Box} from \"@mui/material\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {Cell, Pie, PieChart, ResponsiveContainer, Tooltip} from \"recharts\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {NoDataToDisplay} from \"@root/Frontend/Console/components/NoDataToDisplay\";\nimport {WindowDimensions, WindowDimensionsContext} from \"@root/Frontend/Console/contexts/WindowDimensionsContext\";\nimport i18next from \"i18next\";\nimport {canPeerEditWorld} from \"@root/Frontend/Console/utils/UtilsWorlds\";\n\nconst ChartContainer = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    backgroundColor: lightWhite,\n    width: \"100%\",\n    borderRadius: \"24px\",\n    font: primaryFontLarge,\n    padding: \"24px\",\n    boxSizing: \"border-box\",\n    border: `1px solid ${darkenWhite}`,\n    color: lighterDark,\n    [theme.breakpoints.up('xs')]: {\n        fontSize: \"small\",\n        flexDirection: \"row\",\n        flexWrap: \"wrap\",\n        justifyContent: \"space-evenly\"\n    },\n    [theme.breakpoints.up('md')]: {\n        fontSize: \"inherit\",\n        flexDirection: \"row\",\n        flexWrap: \"nowrap\",\n        justifyContent: \"center\"\n    }\n});\n\nconst FilledBox = styled(Box)((props: {color: string}) => ({\n    backgroundColor: props.color,\n    minWidth: \"18px\",\n    height: \"18px\",\n    margin: \"0 8px 2px 0\",\n    borderRadius: \"50%\"\n}));\n\nconst TooltipWrapper =  styled(Box)({\n    backgroundColor: white,\n    border: \"solid 1px rgb(204, 204, 204)\",\n    padding: \"0 5px\",\n    whiteSpace: \"nowrap\",\n    display: \"flex\",\n    alignItems: \"center\"\n});\n\nconst LegendText = styled(Box)((props:{small: number}) => ({\n    fontSize: props.small ? \"16px\" : \"28px\",\n    margin: \"7px 0\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\"\n}));\n\nconst LegendWrapper = styled(Box)({\n    width: \"100%\",\n    minWidth: \"150px\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"space-around\"\n});\n\nconst YesBoxLegend = styled(Box)({\n    order: 1,\n    flex: 1\n});\n\nconst NoBoxLegend = styled(Box)({\n    flex: 1,\n    order: 2,\n    [theme.breakpoints.up('md')]: {\n        order: 3,\n    }\n});\n\nconst PieChartWrapper = styled(Box)({\n    display: \"flex\",\n    flex: 3,\n    [theme.breakpoints.up('xs')]: {\n        order: 3\n    },\n    [theme.breakpoints.up('md')]: {\n        order: 2\n    }\n});\n\ninterface StepBranchingPieChartProps {\n    worldID: bigint;\n    sequenceID: bigint;\n    stepID: bigint;\n}\n\ninterface StepBranchingPieChartState {\n    answersCount: Map<string, number> | null;\n    totalAnswers: number;\n}\n\ninterface TooltipData {\n    active: boolean;\n    payload: { payload: {answer: string, count: number, fill: string} }[];\n}\n\nexport class StepBranchingPieChart extends SmartComponent{\n    props: StepBranchingPieChartProps;\n    state: StepBranchingPieChartState = { answersCount: null, totalAnswers: 0 };\n    static contextType: React.Context<WindowDimensions> = WindowDimensionsContext;\n    static readonly COLORS: string[] = [lightPrimary, darkenPrimary];\n\n    override async componentDidMount(){\n        super.componentDidMount();\n\n        const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n        const allAttemptsLogs: AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(this.props.worldID,\n                                                                                             this.props.sequenceID);\n\n        const answersCount: Map<string, number> = new Map();\n        for (const attemptLog of allAttemptsLogs) {\n            for (const stepAction of attemptLog.getStepActions()) {\n                if (stepAction.stepID === this.props.stepID && stepAction.stepInput) {\n                    const count: number = answersCount.get(stepAction.stepInput) ?? 0;\n                    answersCount.set(stepAction.stepInput, count + 1);\n                }\n            }\n        }\n\n        this.setState({\n            answersCount,\n            totalAnswers: [...answersCount.values()].reduce((acc: number, value: number) => acc + value, 0)\n        });\n    }\n\n\n    renderLegend(answerValue:string): ReactElement {\n        const answersCount: number = this.state.answersCount?.get(answerValue) ?? 0;\n        const answerPercentage: string = (answersCount / this.state.totalAnswers * 100).toFixed(2)\n        return (\n            <LegendWrapper>\n                <LegendText small={0} color={darkenPrimary}>{i18next.t(answerValue)}</LegendText>\n                <Box sx={{margin:\"15px\", color: primary}}>\n                    {answersCount} {i18next.t(\"answer(s)\")}\n                </Box>\n                <Box sx={{margin:\"15px\", color: lightPrimary}}>\n                    {`${answerPercentage}%`}\n                </Box>\n            </LegendWrapper>\n        );\n    }\n\n    renderTooltip(tooltipData: TooltipData): ReactElement {\n        if (!tooltipData.active) return <></>;\n\n        const chartData: {answer: string, count: number, fill: string} = tooltipData.payload[0].payload;\n        const answerPercentage: string = ((chartData.count / this.state.totalAnswers) * 100).toFixed(2);\n        return (\n            <TooltipWrapper>\n                <FilledBox color={chartData.fill}/>\n                <LegendText small={1}>\n                    {`${chartData.answer} (${answerPercentage}%)`}\n                </LegendText>\n            </TooltipWrapper>\n        );\n    }\n\n    renderPieChart(): ReactElement {\n        if (!this.state.answersCount?.size)\n            return <NoDataToDisplay/>;\n\n        const reChartsData: {answer: string, count: number}[] =\n            [...this.state.answersCount.entries()].map(([answer, count]) => ({answer, count}));\n\n        const height: number = this.context.windowWidth > 692 ? 400 : 300;\n\n        return (\n            // width=\"99%\" to be responsive (100% do not work)\n            <ResponsiveContainer width=\"99%\" height={height}>\n                <PieChart>\n                    <Pie\n                        dataKey=\"count\"\n                        startAngle={180}\n                        endAngle={0}\n                        data={reChartsData}\n                        cx=\"50%\"\n                        cy=\"70%\"\n                        innerRadius=\"40%\"\n                        outerRadius=\"100%\"\n                        label\n                    >\n                        {[...this.state.answersCount.values()].map((count: number, i: number) => (\n                                <Cell key={i} fill={StepBranchingPieChart.COLORS[i]}/>\n                        ))}\n                    </Pie>\n                    <Tooltip content={(chartData: TooltipData) => this.renderTooltip(chartData)} />\n                </PieChart>\n            </ResponsiveContainer>\n        );\n    }\n\n    render() {\n        if (!this.state.answersCount)\n            return <CenteredLoading />\n\n        return (\n            <ChartContainer style={{height: this.state.answersCount.size ? \"auto\" : \"350px\"}}>\n                <YesBoxLegend> {this.renderLegend(\"Yes\")} </YesBoxLegend>\n                <PieChartWrapper> {this.renderPieChart()} </PieChartWrapper>\n                <NoBoxLegend> {this.renderLegend(\"No\")} </NoBoxLegend>\n            </ChartContainer>\n        );\n    }\n}\n", "import React, {useEffect, useState} from \"react\";\nimport {ViewTitle} from \"@root/Frontend/Console/components/ViewTitle\";\nimport i18next from \"i18next\";\nimport AnswersList from \"@root/Frontend/Console/Views/Analytics/StepView/AnswersList\";\nimport {Box} from \"@mui/material\";\nimport styled from \"styled-components\";\nimport {darkenPrimary} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {DataSourceSteps} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {DataSourceText, TextData} from \"@root/Frontend/DataSources/DataSourceText\";\nimport {StepInput} from \"@backend/Types/Step\";\n\nconst SubTitle = styled(Box)({\n    margin: \"0 0 20px 0\",\n    color: darkenPrimary,\n    font: primaryFontXLarge\n});\n\nconst StepInfoTitle = styled(Box)({\n    font: primaryFontLarge\n})\n\ninterface StepAttributes {\n    title: string;\n    maximum: number | null;\n    minimum: number | null;\n}\n\ninterface StepInputViewProps {\n    worldID: bigint;\n    sequenceID: bigint;\n    stepID: bigint;\n}\n\nexport default function StepInputView(props: StepInputViewProps) {\n    const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n    const dataSourceText: DataSourceText = AppConsole.getInstance().dataSourceText;\n\n    const [stepTitle, setStepTitle] = useState<string | null>(null);\n    const [minimum, setMinimum] = useState<string>(\"-\");\n    const [maximum, setMaximum] = useState<string>(\"-\");\n\n    useEffect(() => {\n        fetchStepAttributes().then((stepAttributes: StepAttributes) => {\n            setStepTitle(stepAttributes.title);\n            if (stepAttributes.minimum !== null)\n                setMinimum(stepAttributes.minimum?.toString());\n            if (stepAttributes.maximum !== null)\n                setMaximum(stepAttributes.maximum.toString());\n        })\n    }, []);\n\n    async function fetchStepAttributes(): Promise<StepAttributes> {\n        const step: StepInput =\n            await dataSourceSteps.getStep(props.worldID, props.sequenceID, props.stepID) as StepInput;\n        const text: TextData = await dataSourceText.getText(step.Text.value);\n        return {\n            title: text.OriginalText.value,\n            maximum: step.Maximum.value,\n            minimum: step.Minimum.value,\n        };\n    }\n\n    if (!stepTitle)\n        return <CenteredLoading />\n\n    return (\n        <Box style={{paddingBottom: \"24px\"}}>\n            <ViewTitle style={{padding: \"15px 0 0 0\"}}>{i18next.t(\"Step Input\")}</ViewTitle>\n            <SubTitle>{stepTitle}</SubTitle>\n\n            {<StepInfoTitle> {i18next.t(\"Minimum\")}: {minimum} </StepInfoTitle>}\n            {<StepInfoTitle> {i18next.t(\"Maximum\")}: {maximum} </StepInfoTitle>}\n\n            <AnswersList worldID={props.worldID}\n                         sequenceID={props.sequenceID}\n                         stepID={props.stepID}\n            />\n        </Box>\n    );\n}\n", "import React, {CSSProperties} from \"react\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {RouteComponentProps} from \"react-router\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {WorldsView} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldsView\";\nimport {WorldView} from \"@root/Frontend/Console/Views/Analytics/World/WorldView\";\nimport {SequencesList} from \"@root/Frontend/Console/Views/Analytics/SequencesList/SequencesList\";\nimport {SequenceView} from \"@root/Frontend/Console/Views/Analytics/SequenceView/SequenceView\";\nimport {withRouter} from \"react-router-dom\";\nimport i18next from \"i18next\";\nimport {timestampToString} from \"@utils/utils\";\nimport {Box, styled} from \"@mui/material\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {Header} from \"@root/Frontend/Console/Views/Analytics/AttemptView/Header\";\nimport {StepAction} from \"@backend/Types/StepAction\";\nimport {StepCard} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/StepCard\";\nimport {AttemptListView} from \"@root/Frontend/Console/Views/Analytics/AttemptsList/AttemptListView\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {StepQuestion, StepType} from \"@backend/Types/Step\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {VariableSizeList} from \"react-window\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {darkenPrimary, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {getStepActionsByStepID} from \"@root/Frontend/Console/utils/UtilsAttempts\";\nimport {isMobileOnly} from \"react-device-detect\";\n\nconst HEADER_HEIGHT: number = 126;\nconst HEADER_HEIGHT_MOBILE: number = 200;\nconst STEP_ANIMATED_HEIGHT: number = 236;\nconst STEP_ANIMATED_HEIGHT_MOBILE: number = 290;\nconst STEP_BRANCHING_HEIGHT: number = 340;\nconst STEP_BRANCHING_HEIGHT_MOBILE: number = 400;\nconst STEP_INPUT_HEIGHT: number = 430;\nconst STEP_INPUT_HEIGHT_MOBILE: number = 356;\nconst STEP_PHOTO_HEIGHT: number = 430;\nconst STEP_PHOTO_HEIGHT_MOBILE: number = 490;\nconst STEP_QUESTION_HEIGHT: number = 290;\nconst STEP_QUESTION_HEIGHT_MOBILE: number = 350;\nconst STEP_QUESTION_ANSWER_HEIGHT: number = 73;\nconst STEP_VIDEO_HEIGHT: number = 430;\nconst STEP_VIDEO_HEIGHT_MOBILE: number = 600;\nconst STEP_CARD_GAP: number = 24;\n\nconst AttemptViewContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    margin: \"0px auto\",\n    padding: \"24px 0\",\n    maxWidth: theme.breakpoints.values.xl,\n    height: \"calc(100% - 58px)\",\n    width: \"100%\",\n    gap: `${STEP_CARD_GAP}px`,\n\n    scrollbarColor: `${primary} #FFF1`,\n    scrollbarWidth: \"thin\",\n    \"& div div\":{\n        /* width */\n        \"&::-webkit-scrollbar\": {\n            width: \"10px\",\n            height: \"10px\"\n        },\n        /* Track */\n        \"&::-webkit-scrollbar-track\": {\n            width: 0,\n            backgroundColor: \"#FFF1\",\n            borderRadius: \"10px\",\n            marginBlock: \".5em\"\n        },\n        /* Handle */\n        \"&::-webkit-scrollbar-thumb\": {\n            background: primary,\n            borderRadius: \"10px\",\n        },\n        /* Handle on hover */\n        \"&::-webkit-scrollbar-thumb:hover\": {\n            background: darkenPrimary\n        }\n    }\n});\n\nconst PrintButtonContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    \"@media print\": {\n        display: \"none\"\n    }\n});\n\ninterface AttemptViewProps {\n    worldID: string;\n    sequenceID: string;\n    attemptID: string;\n}\n\ninterface AttemptViewState {\n    stepsOrder: bigint[];\n    peerName: string | null;\n    mapActionsByStepID: Map<bigint, StepAction[]>;\n    answersAmountByStepQuestionID: Map<bigint, number>;\n    isPrinting: false\n}\n\nexport class AttemptView extends RouterView<RouteComponentProps<AttemptViewProps>> {\n    private readonly dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n\n    private readonly worldID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.worldID);\n    private readonly sequenceID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.sequenceID);\n    private readonly attemptID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.attemptID);\n\n    private attemptViewListRef: React.RefObject<VariableSizeList> = React.createRef<VariableSizeList>();\n    private mapStepCards: Map<bigint, Promise<boolean>> = new Map();\n\n    state: AttemptViewState = {\n        stepsOrder: [],\n        peerName: null,\n        mapActionsByStepID: new Map(),\n        answersAmountByStepQuestionID: new Map(),\n        isPrinting: false\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        window.addEventListener(\"afterprint\", () => this.afterExporting());\n\n        const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n        const dataSourcePeer: DataSourcePeers = AppConsole.getInstance().dataSourcePeers;\n\n        const attemptLogs: AttemptLogs =\n            await dataSourceAttemptLogs.getAttemptLogs(this.worldID, this.sequenceID, this.attemptID);\n        const stepActions: StepAction[] = attemptLogs.getStepActions();\n\n        const peer: Peer = await dataSourcePeer.getPeer(attemptLogs.peerID);\n        // Get the order by stepID through the stepActions\n        const stepsOrderSet: Set<bigint> = new Set();\n        for (const stepAction of stepActions)\n            stepsOrderSet.add(stepAction.stepID);\n\n        const stepsOrder: bigint[] = [...stepsOrderSet.values()];\n        const mapActionsByStepID: Map<bigint, StepAction[]> = getStepActionsByStepID(stepActions);\n        const answersAmountByStepQuestionID: Map<bigint, number> =\n            await this.getAnswersAmountByStepQuestionID(mapActionsByStepID);\n\n        this.setState({\n            stepsOrder,\n            peerName: peer.fullName,\n            mapActionsByStepID,\n            answersAmountByStepQuestionID,\n        });\n    }\n\n    override componentWillUnmount() {\n        super.componentWillUnmount();\n        window.removeEventListener(\"afterprint\", () => this.afterExporting());\n    }\n\n    static attemptLevel(worldID: bigint, sequenceID: bigint, attemptID: bigint): BreadcrumbsLevel {\n        return {\n            link: Analytics.BASE_PATH + \"/Worlds/\" + worldID + \"/Sequences/\" + sequenceID + \"/Attempts/\" + attemptID,\n            async getName()  {\n                // We can't use the state\n                const attempt: AttemptLogs =\n                    await AppConsole.getInstance().dataSourceAttemptLogs.getAttemptLogs(worldID, sequenceID, attemptID);\n                const peer: Peer = await AppConsole.getInstance().dataSourcePeers.getPeer(attempt.peerID);\n                const peerName: string = peer && peer.fullName ? peer.fullName : i18next.t(\"Unknown user\");\n                const date: string = timestampToString(UtilsShared.getTimestampOfRandomID(attemptID));\n                return `${peerName} (${date})`;\n            }\n        }\n    }\n\n    getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [\n            WorldsView.worldsLevel(),\n            WorldView.getLevelForWorld(this.worldID),\n            SequencesList.getWorldSequencesLevel(this.worldID),\n            SequenceView.sequenceLevel(this.worldID, this.sequenceID),\n            AttemptListView.getLevelAttemptsList(this.worldID, this.sequenceID),\n            AttemptView.attemptLevel(this.worldID, this.sequenceID, this.attemptID)\n        ];\n    }\n\n    private handleExport() {\n        AppConsole.getInstance().closeSideNav();\n        this.attemptViewListRef.current?.scrollToItem(0);\n        this.attemptViewListRef.current?.resetAfterIndex(0, false);\n        this.setState({ isPrinting: true }, async () => {\n            const stepCards: Promise<boolean>[] = Array.from(this.mapStepCards.values());\n            await Promise.all(stepCards);\n            window.print();\n        });\n    }\n\n    private afterExporting() {\n        this.attemptViewListRef.current?.resetAfterIndex(0, false);\n        this.setState({ isPrinting: false });\n    }\n\n    private async getAnswersAmountByStepQuestionID(mapActionsByStepID: Map<bigint, StepAction[]>)\n        : Promise<Map<bigint, number>> {\n\n        const answersByStepQuestionID: Map<bigint, number> = new Map();\n        for (const stepActions of mapActionsByStepID.values()) {\n            const stepAction: StepAction | undefined = stepActions.at(-1);\n\n            if (!stepAction)\n                continue;\n\n            const step: StepData = await this.dataSourceSteps.getStep(this.worldID, this.sequenceID, stepAction.stepID);\n            if (step.Type.value !== StepType.QUESTION.toString())\n                continue;\n\n            const stepQuestion: StepQuestion = step as StepQuestion;\n            const textAnswers: bigint[] = stepQuestion.TextAnswers.value;\n            const answers: string[] = stepQuestion.Answers.value;\n            answersByStepQuestionID.set(stepAction.stepID, textAnswers.length ? textAnswers.length : answers.length);\n        }\n        return answersByStepQuestionID;\n    }\n\n    private getListItemHeightByIndex(index: number): number {\n        if (index === 0)\n            return (isMobileOnly ? HEADER_HEIGHT_MOBILE : HEADER_HEIGHT) + STEP_CARD_GAP;\n\n        const stepIndex: number = index - 1;\n        const stepAction: StepAction | undefined =\n            this.state.mapActionsByStepID.get(this.state.stepsOrder[stepIndex])?.at(-1);\n        if (!stepAction)\n            return 0;\n\n        switch (stepAction.stepType) {\n            case StepType.ANIMATED:\n                return (isMobileOnly ? STEP_ANIMATED_HEIGHT_MOBILE : STEP_ANIMATED_HEIGHT) + STEP_CARD_GAP;\n            case StepType.BRANCHING:\n                return (isMobileOnly ? STEP_BRANCHING_HEIGHT_MOBILE : STEP_BRANCHING_HEIGHT) + STEP_CARD_GAP;\n            case StepType.INPUT:\n                return (isMobileOnly ? STEP_INPUT_HEIGHT_MOBILE : STEP_INPUT_HEIGHT) + STEP_CARD_GAP;\n            case StepType.PHOTO:\n                return  (isMobileOnly ? STEP_PHOTO_HEIGHT_MOBILE : STEP_PHOTO_HEIGHT) + STEP_CARD_GAP;\n            case StepType.QUESTION: {\n                // find the height of the step attempt based on the number of answers\n                const answersAmount: number = this.state.answersAmountByStepQuestionID.get(stepAction.stepID) ?? 1;\n                const answersTotal: number = isMobileOnly ? answersAmount : Math.ceil(answersAmount / 2);\n                const answersHeight: number = (answersTotal * STEP_QUESTION_ANSWER_HEIGHT) - 24;\n                return (isMobileOnly ? STEP_QUESTION_HEIGHT_MOBILE : STEP_QUESTION_HEIGHT) + answersHeight +\n                    STEP_CARD_GAP;\n            }\n            case StepType.VIDEO:\n                return (isMobileOnly ? STEP_VIDEO_HEIGHT_MOBILE : STEP_VIDEO_HEIGHT) + STEP_CARD_GAP;\n            default:\n                return 0;\n        }\n    }\n\n    private rowRenderer = (props: { index: number, style?: CSSProperties }) => {\n        if (props.index === 0) {\n            return <Box style={props.style} key={\"attempt_header\"}>\n                <Header\n                    worldID={this.worldID}\n                    sequenceID={this.sequenceID}\n                    attemptID={this.attemptID}\n                    peerName={this.state.peerName ?? \"\"}\n                />\n            </Box>\n        }\n\n        const stepIndex: number = props.index - 1;\n\n        const stepID: bigint = this.state.stepsOrder[stepIndex];\n        const stepActions: StepAction[] | undefined = this.state.mapActionsByStepID.get(stepID);\n\n        let resolver: (value: (boolean | PromiseLike<boolean>)) => void;\n        const loadedPromise: Promise<boolean> = new Promise((res) => {\n            resolver = res;\n        });\n        this.mapStepCards.set(stepID, loadedPromise);\n\n        return stepActions && stepActions.length > 0 && (\n            <Box style={props.style} key={stepID.toString() + \"_\" + stepIndex}>\n                <StepCard\n                    stepActions={stepActions}\n                    worldID={this.worldID}\n                    sequenceID={this.sequenceID}\n                    attemptID={this.attemptID}\n                    loadingResolver={(status: boolean) => resolver(status)}\n                    isPrinting={this.state.isPrinting}\n                />\n            </Box>\n        );\n    }\n\n    render(): JSX.Element {\n        const peerName: string | null = this.state.peerName;\n        if (peerName === null)\n            return <CenteredLoading />;\n\n        const listItemHeights: number[] = Array.from({length: this.state.stepsOrder.length + 1},\n            (value: number, index: number) => this.getListItemHeightByIndex(index));\n        return (\n            <>\n                <PrintButtonContainer>\n                    {!isMobileOnly &&\n                        <Button\n                            disabled={this.state.isPrinting}\n                            size=\"small\"\n                            onClick={() => this.handleExport()}\n                        >\n                            {this.state.isPrinting ?\n                                <Box style={{height: \"24px\", width: \"24px\"}}><CenteredLoading/></Box>\n                                :\n                                i18next.t(\"Export\")\n                            }\n                        </Button>\n                    }\n                </PrintButtonContainer>\n                <AttemptViewContainer>\n                    {this.state.isPrinting ?\n                        Array.from({ length: this.state.stepsOrder.length + 1 })\n                            .map((_value, index: number) => this.rowRenderer({ index }))\n                        :\n                        <VariableSizeList\n                            ref={this.attemptViewListRef}\n                            overscanCount={1}\n                            style={{overflow: \"auto\"}}\n                            estimatedItemSize={200}\n                            height={window.innerHeight}\n                            itemCount={this.state.stepsOrder.length + 1}\n                            width={\"100%\"}\n                            itemSize={(index: number) => listItemHeights[index]}\n                        >\n                            {this.rowRenderer.bind(this)}\n                        </VariableSizeList>\n                    }\n                </AttemptViewContainer>\n            </>\n        );\n    }\n}\n\nexport const AttemptViewWithRouter = withRouter(AttemptView);\n", "import React, {ReactElement, useEffect, useState} from \"react\"\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {World} from \"@backend/Types/World\";\nimport {Box, styled} from \"@mui/material\";\nimport {dark, darkenPrimary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {primaryFontLarge, secondaryFontLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {TimeAmount, timestampToString, TimeUnit} from \"@utils/utils\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {Entity} from \"@backend/Types/Entity\";\nimport {\n    calculateAttemptAnswersScore, CorrectAnswerScore,\n} from \"@root/Frontend/Console/utils/UtilsAttempts\";\nimport {UtilsStats} from \"@backend/Utils/UtilsStats\";\n\nconst HeaderContainer = styled(Box)({\n    backgroundColor: darkenPrimary,\n    display: \"flex\",\n    justifyContent:\"space-between\",\n    gap: \"16px\",\n    padding: \"20px\",\n    borderRadius: \"24px\",\n    wordBreak: \"break-word\",\n    [theme.breakpoints.down('md')]: {\n        flexDirection: \"column\",\n        alignItems: \"center\",\n        gap: \"20px\"\n    },\n    [theme.breakpoints.up('lg')]: {\n        gap: \"20px\",\n        padding: \"32px\",\n    },\n    '@media print': {\n        padding: \"20px 0px\",\n        border: `1px solid ${darkenPrimary}`,\n        borderRadius: \"24px\",\n    }\n});\n\nconst DataWrapper = styled(Box)({\n    flex: 1,\n    display: \"flex\",\n    flexDirection:\"column\",\n    justifyContent:\"space-around\",\n    alignItems: \"center\",\n    gap: \"20px\",\n    font: secondaryFontMedium,\n    [theme.breakpoints.down('sm')]: {\n        alignItems: \"center\",\n    },\n    [theme.breakpoints.down('md')]: {\n        gap: \"0px\",\n        width: \"100%\"\n    },\n    [theme.breakpoints.up('lg')]: {\n        font: secondaryFontLarge,\n    }\n});\n\nconst ValueWrapper = styled(\"span\")({\n    font: primaryFontLarge,\n    textAlign: \"center\",\n    [theme.breakpoints.up('lg')]: {\n        font: primaryFontLarge\n    }\n});\n\nconst Cell = styled(Box)({\n    width: \"100%\",\n    display:\"flex\",\n    gap: \"10px\",\n    alignItems: \"baseline\",\n    color: white,\n    '@media print': {\n        color: dark\n    },\n    [theme.breakpoints.down('md')]: {\n        justifyContent: \"center !important\",\n        flexWrap: \"nowrap\"\n    },\n    [theme.breakpoints.down('xl')]: {\n        flexWrap: \"wrap\"\n    }\n});\n\ninterface HeaderProps {\n    peerName: string;\n    worldID: bigint;\n    sequenceID: bigint;\n    attemptID: bigint;\n}\n\nexport function Header(props: HeaderProps): ReactElement {\n    const app: AppConsole = AppConsole.getInstance();\n    const date: string = timestampToString(UtilsShared.getTimestampOfRandomID(props.attemptID));\n\n    const [entityName, setEntityName] = useState<string>(\"\");\n    const [sequenceTitle, setSequenceTitle] = useState<string>(\"\");\n    const [worldName, setWorldName] = useState<string>(\"\");\n    const [formattedScore, setFormattedScore] = useState<string>(\"\");\n    const [totalTimeSpent, setTotalTimeSpent] = useState<string>(\"\");\n\n    useEffect(() => {\n        if (!props.worldID || !props.sequenceID || !props.attemptID)\n            return;\n\n        fetchWorldName(props.worldID).then((name: string) => setWorldName(name));\n        fetchSequenceTitle(props.worldID, props.sequenceID).then((title: string) => setSequenceTitle(title));\n        fetchEntityName(props.worldID, props.sequenceID, props.attemptID).then((name: string) => setEntityName(name));\n        getAttemptTotalTimeSpent().then((timeSpent: string) => setTotalTimeSpent(timeSpent));\n        getFormattedScore().then((score: string) => {\n            setFormattedScore(score)\n        });\n    }, [props.worldID, props.sequenceID, props.attemptID])\n\n\n    async function fetchEntityName(worldID: bigint, sequenceID: bigint, attemptID: bigint): Promise<string> {\n        const attemptLog: AttemptLogs = await app.dataSourceAttemptLogs.getAttemptLogs(worldID, sequenceID, attemptID);\n\n        const entityID: bigint = attemptLog.entityID;\n        if (!entityID)\n            return \"\";\n\n\n        const entity: Entity = await app.dataSourceEntities.getEntityByID(attemptLog.entityID);\n        return entity.Name.value;\n    }\n\n    async function fetchSequenceTitle(worldID: bigint, sequenceID: bigint): Promise<string> {\n        const sequence: Sequence = await app.dataSourceSequences.getSequence(worldID, sequenceID);\n        return sequence.Title.value;\n    }\n\n    async function fetchWorldName(worldID: bigint): Promise<string> {\n        const world: World = await app.dataSourceWorlds.getWorld(worldID);\n        return world.Title.value;\n    }\n\n    async function getFormattedScore(): Promise<string> {\n        const attempt: AttemptLogs =\n            await app.dataSourceAttemptLogs.getAttemptLogs(props.worldID, props.sequenceID, props.attemptID);\n\n        const {score, correctAnswerSize}: CorrectAnswerScore = await calculateAttemptAnswersScore(attempt);\n\n        if (!correctAnswerSize)\n            return \"N/A\";\n\n        const percentage: number = Math.round((score/correctAnswerSize) * 100);\n        return `${percentage}% (${score}/${correctAnswerSize})`;\n    }\n\n    async function getAttemptTotalTimeSpent(): Promise<string> {\n        const attempt: AttemptLogs =\n            await app.dataSourceAttemptLogs.getAttemptLogs(props.worldID, props.sequenceID, props.attemptID);\n        const attemptTotalTimeSpent: bigint = UtilsStats.computeAttemptTime(attempt);\n\n        return new TimeAmount(Number(attemptTotalTimeSpent), TimeUnit.SECONDS).toPrettyHumanTime(true, true);\n    }\n\n    return (\n        <HeaderContainer id=\"attempt-view-header\">\n            <DataWrapper>\n                <Cell>{i18next.t(\"User\")}: <ValueWrapper>{props.peerName}</ValueWrapper></Cell>\n                <Cell>{i18next.t(\"Date\")}: <ValueWrapper>{date}</ValueWrapper></Cell>\n            </DataWrapper>\n            <DataWrapper>\n                <Cell style={{display:\"flex\", justifyContent:\"center\", textAlign: \"center\"}}>\n                    {worldName}\n                </Cell>\n                <Cell style={{display:\"flex\", justifyContent:\"center\"}}>\n                    <ValueWrapper>{sequenceTitle}</ValueWrapper>\n                </Cell>\n                { Boolean(entityName) &&\n                    <Cell style={{display:\"flex\", justifyContent:\"center\", textAlign: \"center\"}}> {entityName} </Cell>\n                }\n            </DataWrapper>\n            <DataWrapper>\n                <Cell  style={{display:\"flex\", justifyContent:\"flex-end\"}}>\n                    {i18next.t(\"Questions Score\")}:\n                  <ValueWrapper> {formattedScore} </ValueWrapper>\n                </Cell>\n                <Cell style={{display:\"flex\", justifyContent:\"flex-end\"}}>\n                    {i18next.t(\"Total time spent\")}:\n                   <ValueWrapper> {totalTimeSpent} </ValueWrapper>\n                </Cell>\n            </DataWrapper>\n        </HeaderContainer>\n    )\n}\n", "import React, {ReactElement, useEffect, useState} from \"react\";\nimport {Box, Divider, styled} from \"@mui/material\";\nimport {StepAction} from \"@backend/Types/StepAction\";\nimport {dark, darkenWhite, darkGrey, lightWhite} from \"@root/react-components/src/values/colors/colors\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {TimeAmount, TimeUnit} from \"@utils/utils\";\nimport {\n    primaryFontLarge,\n    primaryFontMedium,\n    primaryFontXLarge,\n    secondaryFontLarge,\n    secondaryFontMedium\n} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {convertStepTypeToString, StepType} from \"@backend/Types/Step\";\nimport {AttemptQuestion} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/Answers/AttemptQuestion\";\nimport {AttemptConfirm} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/Answers/AttemptConfirm\";\nimport {AttemptPhoto} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/Media/AttemptPhoto\";\nimport {AttemptVideo} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/Media/AttemptVideo\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {DataSourceText, TextData} from \"@root/Frontend/DataSources/DataSourceText\";\nimport {AttemptInput} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/Answers/AttemptInput\";\n\nconst CardContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    backgroundColor: lightWhite,\n    border: `2px solid ${darkenWhite}`,\n    borderRadius: \"24px\",\n    padding: \"32px 42px\",\n    gap: \"24px\",\n});\n\nconst CardHeader = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"24px\",\n});\n\nconst CardTopHeader = styled(Box)({\n    display: \"grid\",\n    gridTemplateColumns: \"1fr 2fr 1fr\",\n});\n\nconst HeaderColumnContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    textAlign: \"center\",\n});\n\nconst TitleWrapper = styled(Box)({\n    font: secondaryFontMedium,\n    fontWeight: \"bold\",\n    color: darkGrey,\n    [theme.breakpoints.up('lg')]: {\n        font: secondaryFontLarge,\n    }\n});\n\nexport const TitleInfoWrapper = styled(TitleWrapper)({\n    paddingBottom: \"6px\"\n});\n\nconst HeaderValueWrapper = styled(Box)({\n    font: primaryFontXLarge,\n    fontWeight: \"bold\",\n    color: dark,\n    [theme.breakpoints.up('lg')]: {\n        font: primaryFontXLarge\n    }\n});\n\nexport const StepValueWrapper = styled(Box)({\n    font: primaryFontMedium,\n    fontWeight: \"bold\",\n    color: dark,\n    [theme.breakpoints.up('lg')]: {\n        font: primaryFontLarge,\n    }\n});\n\nconst DividerWrapper = styled(Divider)({\n    font: primaryFontXLarge,\n});\n\nconst AttemptInfo = styled(Box)({\n    display: \"flex\",\n    gap: \"32px\",\n    flexDirection: \"column\",\n});\n\ninterface StepInfo {\n    description: string\n    totalTimeSpent: bigint\n    timestamp: string\n}\n\ninterface StepCardProps {\n    stepActions: StepAction[];\n    worldID: bigint;\n    sequenceID: bigint;\n    attemptID: bigint;\n    loadingResolver: (value: (boolean | PromiseLike<boolean>)) => void;\n    isPrinting: boolean;\n}\n\nexport function StepCard(props: StepCardProps): ReactElement {\n    const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n    const dataSourceText: DataSourceText = AppConsole.getInstance().dataSourceText;\n\n    const [description, setDescription] = useState<string>(\"\");\n    const [totalTimeSpent, setTotalTimeSpent] = useState<string>(\"\");\n    const [timestamp, setTimestamp] = useState<string>(\"\");\n\n    useEffect(() => {\n        if (!props.stepActions || !props.stepActions.length) {\n            setInfo(\"\", BigInt(0), \"\");\n            return;\n        }\n\n        let isMounted: boolean = true;\n        getStepInfo().then((step: StepInfo) => {\n            if (isMounted)\n                setInfo(step.description, step.totalTimeSpent, step.timestamp);\n        });\n        return () => { isMounted = false; };\n    }, [props.stepActions])\n\n    useEffect(() => {\n        const stepType: StepType | null = props.stepActions.at(-1)?.stepType ?? null;\n        if (stepType === null || stepType === StepType.QUESTION || stepType === StepType.PHOTO ||\n            stepType === StepType.VIDEO || !description || !totalTimeSpent || !timestamp)\n            return;\n\n        onLoaded();\n    }, [description, totalTimeSpent, timestamp]);\n\n    function setInfo(description: string, totalTimeSpent: bigint, timestamp: string) {\n        setDescription(description);\n        setTotalTimeSpent(\n            new TimeAmount(Number(totalTimeSpent), TimeUnit.SECONDS).toPrettyHumanTime(true, true)\n        );\n        setTimestamp(timestamp);\n    }\n\n    async function getStepInfo(): Promise<StepInfo> {\n        const stepID: bigint = props.stepActions[0].stepID;\n        const step: StepData = await dataSourceSteps.getStep(props.worldID, props.sequenceID, stepID);\n        const text: TextData = await dataSourceText.getText(step.Text.value);\n        const totalTimeSpent: bigint = props.stepActions.reduce<bigint>(\n            (prev: bigint, stepAction: StepAction) => prev + stepAction.timeSpent, BigInt(0));\n\n        // Calculates the earliest start time for the step actions and converts it to milliseconds\n        const timeStart: number =\n            Math.min(...props.stepActions.map((step: StepAction) => Number(step.timeStart))) * 1000;\n        const timestamp: string = new Date(timeStart).toLocaleTimeString(\"en-US\", { hour12: false });\n\n        return { description: text.OriginalText.value, totalTimeSpent, timestamp };\n    }\n\n    function onLoaded() {\n        props.loadingResolver(true);\n    }\n\n    function renderByStepType(): ReactElement {\n        const lastStep: StepAction | undefined = props.stepActions.at(-1);\n        switch (lastStep?.stepType) {\n            case StepType.BRANCHING:\n                return <AttemptConfirm answer={lastStep.stepInput}/>;\n            case StepType.QUESTION:\n                return <AttemptQuestion\n                    worldID={props.worldID}\n                    sequenceID={props.sequenceID}\n                    step={lastStep}\n                    onLoaded={() => onLoaded()}\n                />;\n            case StepType.PHOTO:\n                return <AttemptPhoto photoURL={lastStep.stepInput} onLoaded={() => onLoaded()}/>;\n            case StepType.VIDEO:\n                return <AttemptVideo\n                    videoID={UtilsShared.safelyConvertStringToBigInt(lastStep.stepInput)}\n                    onLoaded={() => onLoaded()}\n                    isPrinting={props.isPrinting}\n                />;\n            case StepType.INPUT:\n                return <AttemptInput worldID={props.worldID}\n                                     sequenceID={props.sequenceID}\n                                     stepID={lastStep.stepID}\n                                     answer={lastStep.stepInput}\n                />;\n            default:\n                return <></>\n        }\n    }\n\n    if (!props.stepActions.length)\n        return <></>;\n\n    return (\n        <CardContainer>\n            <CardHeader>\n                <CardTopHeader>\n                    <HeaderColumnContainer sx={{justifySelf: \"start\"}}>\n                        <TitleWrapper>{i18next.t(\"Step\")}</TitleWrapper>\n                        <HeaderValueWrapper>{\n                            Number(props.stepActions[0].stepIndex) + 1}\n                        </HeaderValueWrapper>\n                    </HeaderColumnContainer>\n                    <HeaderColumnContainer sx={{justifySelf: \"center\"}}>\n                        <TitleWrapper>{i18next.t(\"Total time spent\")}</TitleWrapper>\n                        <HeaderValueWrapper>{totalTimeSpent}</HeaderValueWrapper>\n                    </HeaderColumnContainer>\n                    <HeaderColumnContainer sx={{justifySelf: \"end\"}}>\n                        <TitleWrapper>{i18next.t(\"Timestamp\")}</TitleWrapper>\n                        <HeaderValueWrapper>{timestamp}</HeaderValueWrapper>\n                    </HeaderColumnContainer>\n                </CardTopHeader>\n            </CardHeader>\n            <DividerWrapper>\n                {i18next.t(convertStepTypeToString(props.stepActions[0].stepType))}\n            </DividerWrapper>\n            <AttemptInfo>\n                <Box>\n                    <TitleInfoWrapper>{i18next.t(\"Description\")}</TitleInfoWrapper>\n                    <StepValueWrapper>{description}</StepValueWrapper>\n                </Box>\n                {renderByStepType()}\n            </AttemptInfo>\n        </CardContainer>\n    )\n}\n", "import React, {useEffect, useState} from \"react\"\nimport {TitleInfoWrapper} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/StepCard\";\nimport i18next from \"i18next\";\nimport {Box, styled} from \"@mui/material\";\nimport {ChipAnswer} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/Answers/ChipAnswer\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {StepAction} from \"@backend/Types/StepAction\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {DataSourceText} from \"@root/Frontend/DataSources/DataSourceText\";\nimport {StepQuestion, StepType} from \"@backend/Types/Step\";\n\nconst AnswersContainer = styled(Box)({\n    display: \"grid\",\n    gridTemplateColumns: \"1fr\",\n    justifyContent: \"center\",\n    columnGap: \"64px\",\n    rowGap: \"24px\",\n    [theme.breakpoints.up('lg')]: {\n        gridTemplateColumns: \"1fr 1fr\",\n    },\n})\n\nconst AnswerWrapper = styled(Box)((props: {odd: number}) => ({\n    width: \"100%\",\n    margin: \"auto\",\n    [theme.breakpoints.up('md')]: {\n        width: \"256px\",\n    },\n    [theme.breakpoints.up('lg')]: {\n        margin: props.odd ? \"0px 0px 0px auto\" : \"0px auto 0px 0px\",\n    }\n}))\n\ninterface AttemptQuestionProps {\n    worldID: bigint;\n    sequenceID: bigint;\n    step: StepAction;\n    onLoaded: () => void;\n}\n\nexport function AttemptQuestion(props: AttemptQuestionProps): JSX.Element {\n    const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n    const dataSourceText: DataSourceText = AppConsole.getInstance().dataSourceText;\n    const [answers, setAnswers] = useState<string[]>(null);\n    const [correctAnswer, setCorrectAnswer] = useState<string>(null);\n\n    useEffect(() => {\n        let isMounted: boolean = true;\n        fetchStepQuestionData(props.worldID, props.sequenceID, props.step.stepID).then(\n            (result: {answers: string[], correctAnswer: string}) => {\n                if (!isMounted)\n                    return;\n                setAnswers(result.answers);\n                setCorrectAnswer(result.correctAnswer);\n                props.onLoaded();\n            }\n        );\n        return () => { isMounted = false; };\n    }, [props.worldID, props.sequenceID, props.step]);\n\n    async function fetchStepQuestionData(worldID: bigint, sequenceID: bigint, stepQuestionID: bigint)\n        : Promise<{answers: string[], correctAnswer: string}> {\n        const step: StepData = await dataSourceSteps.getStep(worldID, sequenceID, stepQuestionID);\n        if(step.Type.value !== StepType.QUESTION.toString())\n            return {answers: [], correctAnswer: \"\"};\n\n        const stepQuestion: StepQuestion = step as StepQuestion;\n        const textAnswers: bigint[] = stepQuestion.TextAnswers.value;\n        const answers: string[] = textAnswers.length ?\n            await Promise.all(textAnswers.map(async id => (await dataSourceText.getText(id)).OriginalText.value)) :\n            stepQuestion.Answers.value;\n        return {\n            answers,\n            correctAnswer: stepQuestion.CorrectAnswer.value\n        };\n    }\n\n    return (\n        <Box>\n            <TitleInfoWrapper>{i18next.t(\"Answers\")}</TitleInfoWrapper>\n            {!answers ?\n                <CenteredLoading />\n                :\n                <AnswersContainer>\n                    {answers.map((answer: string, index: number) => (\n                        <AnswerWrapper key={answer} odd={index % 2 === 0 ? 1 : 0}>\n                                <ChipAnswer\n                                    title={answer}\n                                    selected={props.step.stepInput === answer}\n                                    isCorrectAnswer={answer === correctAnswer}\n                                />\n                        </AnswerWrapper>\n                    ))}\n                </AnswersContainer>\n            }\n        </Box>\n    )\n}\n", "import React from \"react\"\nimport {Box, styled} from \"@mui/material\";\nimport {darkenWhite, lightWhite, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {CheckAnswer} from \"@root/react-components/src/icons/EmptyAnswer\";\nimport {CircleAnswer} from \"@root/react-components/src/icons/CorrectAnswer\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport i18next from \"i18next\";\n\nconst Container = styled(Box)((props: {selected: boolean}) => ({\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    backgroundColor: darkenWhite,\n    color: primary,\n    border: `2px solid ${props.selected ? primary : darkenWhite}`,\n    borderRadius: \"20px\",\n    padding:\"12px\",\n    font: primaryFontLarge,\n    fontWeight: \"bold\",\n    textAlign: \"center\",\n}))\n\nconst CorrectAnswerBadge =  styled(Box)({\n    position: \"absolute\",\n    marginBottom: \"33px\",\n    marginLeft: \"240px\",\n    backgroundColor: lightWhite,\n    padding:\"3px\",\n    borderRadius:\"16px\"\n})\n\ninterface ChipAnswerProps {\n    title: string;\n    selected: boolean;\n    isCorrectAnswer?: boolean;\n\n}\n\nexport function ChipAnswer(props: ChipAnswerProps): JSX.Element {\n\n    return (\n            <Container selected={props.selected}>\n                {props.title}\n                {props.isCorrectAnswer &&\n                    <CorrectAnswerBadge>\n                        <Tooltip title={i18next.t(\"Correct answer\")} placement={\"left-start\"}>\n                            <Box sx={{display:\"flex\"}}>\n                                <CircleAnswer stroke={primary}/>\n                                <CheckAnswer stroke={primary}/>\n                            </Box>\n                        </Tooltip>\n                    </CorrectAnswerBadge>\n                }\n            </Container>\n\n    )\n}", "import React from \"react\"\nimport {TitleInfoWrapper} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/StepCard\";\nimport i18next from \"i18next\";\nimport {Box, styled} from \"@mui/material\";\nimport {ChipAnswer} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/Answers/ChipAnswer\";\nimport {theme} from \"@root/Frontend/theme\";\n\nconst AnswersContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"center\",\n    gap: \"64px\",\n    [theme.breakpoints.down('md')]: {\n        gap: \"32px\",\n    },\n})\n\nconst AnswerWrapper = styled(Box)({\n    width: \"min(100%, 254px)\",\n})\n\nexport function AttemptConfirm(props: {answer: string}) {\n\n    return (\n        <Box>\n            <TitleInfoWrapper>{i18next.t(\"Answers\")}</TitleInfoWrapper>\n            <AnswersContainer>\n                <AnswerWrapper>\n                    <ChipAnswer\n                        title={i18next.t(\"Yes\")}\n                        selected={props.answer === \"Yes\"}\n                    />\n                </AnswerWrapper>\n                <AnswerWrapper>\n                    <ChipAnswer\n                        title={i18next.t(\"No\")}\n                        selected={props.answer === \"No\"}\n                    />\n                </AnswerWrapper>\n            </AnswersContainer>\n        </Box>\n    )\n}", "import React, {useEffect, useState} from \"react\"\nimport {TitleInfoWrapper} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/StepCard\";\nimport {Box, styled} from \"@mui/material\";\nimport {dark, white, darkenWhite} from \"@root/react-components/src/values/colors/colors\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {ObjectTypeS3} from \"@backend/Types/ObjectTypeS3\";\nimport {NoDataToDisplay} from \"@root/Frontend/Console/components/NoDataToDisplay\";\nimport {ExpandContent} from \"@root/react-components/src/icons/ExpandContent\";\nimport {FullScreenImage} from \"@root/Frontend/Console/components/FullScreenImage\";\nimport i18next from \"i18next\";\n\nconst dimensionsPhotoContainer = {\n    width: \"164px\",\n    height: \"136px\",\n}\n\nconst Container = styled(Box)({\n    position: \"relative\",\n    width: \"164px\",\n    height: \"136px\",\n    border: `2px solid ${darkenWhite}`,\n    borderRadius: \"24px\",\n    overflow: \"hidden\",\n    cursor: \"pointer\",\n    transition: \"0.5s\",\n    \"&:hover .overlay_attempt_photo\" : {\n        opacity: \"10%\",\n        transition: \"0.5s\"\n    },\n    \"&:hover .icon_attempt_photo\": {\n        opacity: \"100%\",\n        transition: \"0.5s\"\n    }\n})\n\nconst ImageThumbnail = styled(\"img\")({\n    position: \"absolute\",\n    objectFit: \"cover\",\n    width: dimensionsPhotoContainer.width,\n    height: dimensionsPhotoContainer.height,\n})\n\nconst IconWrapper = styled(Box)({\n    position: \"absolute\",\n    width: \"16px\",\n    height: \"16px\",\n    right: \"10px\",\n    top: \"10px\",\n    backgroundColor: dark,\n    opacity: \"0%\",\n    padding: \"2.5px\",\n    borderRadius: \"5px\",\n    transition: \"0.2s\",\n})\n\nconst OverlayContainer = styled(Box)({\n    position: \"absolute\",\n    width: dimensionsPhotoContainer.width,\n    height: dimensionsPhotoContainer.height,\n    backgroundColor: dark,\n    opacity: \"0%\",\n    transition: \"0.2s\",\n});\n\ninterface AttemptPhotoProps {\n    photoURL: string;\n    onLoaded: () => void;\n}\n\nexport function AttemptPhoto(props: AttemptPhotoProps) {\n    const [openDialog, setOpenDialog] = useState<boolean>(false);\n    const [photoURLS3, setPhotoURLS3] = useState<string>(\"\");\n\n    useEffect(() => {\n        if(!props.photoURL) return;\n\n        let isMounted: boolean = true;\n        AppConsole.getInstance().dataSourceStorage.getPreSignedUrl(props.photoURL, ObjectTypeS3.IMAGE).then(\n            (S3URL: string) => {\n                if (isMounted) {\n                    setPhotoURLS3(S3URL);\n                    props.onLoaded();\n                }\n            });\n        return () => { isMounted = false; };\n    }, [props.photoURL]);\n\n    return (\n        <Box>\n            <TitleInfoWrapper>{i18next.t(\"Photo\")}</TitleInfoWrapper>\n            <Container onClick={() => setOpenDialog(true)}>\n                {photoURLS3 ?\n                    <>\n                        <ImageThumbnail src={photoURLS3} crossOrigin=\"anonymous\"/>\n                        <IconWrapper className=\"icon_attempt_photo\">\n                            <ExpandContent fill={white} size={16} />\n                        </IconWrapper>\n                        <OverlayContainer className=\"overlay_attempt_photo\" />\n                    </>\n                    :\n                    <NoDataToDisplay>{i18next.t(\"No photo to display\")}</NoDataToDisplay>\n                }\n\n            </Container>\n            {openDialog && photoURLS3 &&\n                <FullScreenImage\n                    onClose={() => setOpenDialog(false)}\n                    imageURL={photoURLS3}\n                />\n            }\n        </Box>\n    )\n}", "\nimport React from 'react';\nexport function ExpandContent(props: {size:number,  fill?:string}) {\n    return <svg xmlns=\"http://www.w3.org/2000/svg\" fill={props.fill} height={props.size} viewBox=\"0 96 960 960\" width={props.size}>\n        <path d=\"M200 856V616h60v180h180v60H200Zm500-320V356H520v-60h240v240h-60Z\"/>\n    </svg>\n}\n\n", "import {Box, styled} from \"@mui/material\";\nimport {FullScreenOverlay} from \"@root/Frontend/Console/components/FullScreenOverlay\";\nimport React from \"react\";\n\nconst Image = styled(\"img\")({\n    maxHeight: \"90vh\",\n    maxWidth: \"100%\",\n    borderRadius: \"22px\",\n});\n\ninterface FullScreenImageProps {\n    onClose: () => void;\n    imageURL: string;\n    title?: string;\n    subTitle?: string;\n}\n\nexport function FullScreenImage(props: FullScreenImageProps): JSX.Element {\n    return (\n        <FullScreenOverlay\n            onClose={props.onClose}\n            title={props.title}\n            subTitle={props.subTitle}\n        >\n            <Image src={props.imageURL} crossOrigin=\"anonymous\"\n                   onClick={(e: React.MouseEvent) => e.stopPropagation()} />\n        </FullScreenOverlay>\n    );\n}\n", "import React, {useEffect, useState} from \"react\";\nimport {TitleInfoWrapper} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/StepCard\";\nimport {Box, styled} from \"@mui/material\";\nimport {dark, darkenWhite, lightWhite, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {DataSourceStorage} from \"@root/Frontend/DataSources/DataSourceStorage\";\nimport {ObjectTypeS3} from \"@backend/Types/ObjectTypeS3\";\nimport {NoDataToDisplay} from \"@root/Frontend/Console/components/NoDataToDisplay\";\nimport {FullScreenVideo} from \"@root/Frontend/Console/components/FullScreenVideo\";\nimport i18next from \"i18next\";\nimport {DataSourceVideo, VideoData} from \"@root/Frontend/DataSources/DataSourceVideo\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {convertSecondsToTimer} from \"@utils/utils\";\nimport {primaryFontMedium, primaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {generateVideoSubtitles} from \"@root/Frontend/Console/utils/UtilsVideos\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {isMobileOnly} from \"react-device-detect\";\n\nconst dimensionsPhotoContainer = {\n    width: \"164px\",\n    height: \"136px\",\n}\n\nconst Container = styled(Box)({\n    position: \"relative\",\n    width: \"164px\",\n    height: \"136px\",\n    border: `2px solid ${darkenWhite}`,\n    borderRadius: \"24px\",\n    overflow: \"hidden\",\n    cursor: \"pointer\",\n    transition: \"0.5s\",\n    \"&:hover .overlay_attempt_video\" : {\n        opacity: \"10%\",\n        transition: \"0.5s\"\n    },\n    \"&:hover .icon_attempt_video\": {\n        opacity: \"100%\",\n        transition: \"0.5s\"\n    }\n})\n\nconst ImageThumbnail = styled(\"img\")({\n    position: \"absolute\",\n    objectFit: \"cover\",\n    width: dimensionsPhotoContainer.width,\n    height: dimensionsPhotoContainer.height,\n})\n\nconst IconContainer = styled(Box)({\n    position: \"absolute\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: \"100%\",\n    width: \"100%\",\n    opacity: \"0%\",\n    transition: \"0.2s\",\n})\n\nconst IconWrapper = styled(Box)({\n    width: \"34px\",\n    height: \"24px\",\n    backgroundColor: dark,\n    padding: \"5px 0px\",\n    borderRadius: \"50px\",\n\n})\n\nconst TimerWrapper = styled(Box)({\n    position: \"absolute\",\n    display: \"flex\",\n    alignItems: \"center\",\n    left: \"10px\",\n    bottom: \"10px\",\n    backgroundColor: dark,\n    color: white,\n    padding: \"4px 4px 0\",\n    borderRadius: \"5px\",\n    font: primaryFontSmall,\n})\n\nconst OverlayContainer = styled(Box)({\n    position: \"absolute\",\n    width: dimensionsPhotoContainer.width,\n    height: dimensionsPhotoContainer.height,\n    backgroundColor: dark,\n    opacity: \"0%\",\n    transition: \"0.2s\",\n});\n\nconst TranscriptWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"flex-start\",\n    backgroundColor: darkenWhite,\n    color: primary,\n    border: `2px solid ${primary}`,\n    borderRadius: \"20px\",\n    padding: \"0 12px\",\n    font: primaryFontMedium,\n    textAlign: \"justify\"\n});\n\ninterface FetchedVideoData {\n    videoUrlS3: string;\n    subtitlesURL: string;\n    thumbnailURL: string;\n    duration: bigint;\n}\n\ninterface AttemptVideoProps {\n    videoID: bigint;\n    onLoaded: () => void;\n    isPrinting: boolean;\n}\n\nexport function AttemptVideo(props: AttemptVideoProps) {\n    const dataSourceVideo: DataSourceVideo = AppConsole.getInstance().dataSourceVideo;\n    const dataSourceStorage: DataSourceStorage = AppConsole.getInstance().dataSourceStorage;\n\n    const [openDialog, setOpenDialog] = useState<boolean>(false);\n    const [videoUrlS3, setVideoUrlS3] = useState<string>(\"\");\n    const [subtitlesURL, setSubtitlesURL] = useState<string | null>(null);\n    const [thumbnailURL, setThumbnailURL] = useState<string>(\"\");\n    const [duration, setDuration] = useState<bigint>(BigInt(0));\n    const [transcript, setTranscript] = useState<string | null>(null);\n\n    useEffect(() => {\n        if (!props.videoID) return;\n\n        let isMounted: boolean = true;\n        fetchVideoData(props.videoID).then((result: FetchedVideoData) => {\n            if (!isMounted)\n                return;\n            setVideoUrlS3(result.videoUrlS3);\n            setSubtitlesURL(result.subtitlesURL);\n            setThumbnailURL(result.thumbnailURL);\n            setDuration(result.duration);\n        });\n        return () => { isMounted = false; };\n    }, [props.videoID]);\n\n    useEffect(() => {\n        // make sure the subtitles attribute is loaded\n        if (subtitlesURL === null)\n            return;\n\n        let isMounted: boolean = true;\n        if (subtitlesURL.length) {\n            fetch(subtitlesURL).then(async (response: Response) => {\n                if (!response.ok)\n                    return;\n\n                const text: string = await response.text();\n                const subtitles: string[] = extractSubtitles(text);\n                if (!isMounted)\n                    return;\n                setTranscript(subtitles.join(\" \"));\n            });\n        } else {\n            generateVideoSubtitles(props.videoID).then(async (subtitlesBlob: Blob | null) => {\n                if (!subtitlesBlob) {\n                    if (isMounted) {\n                        setSubtitlesURL(null);\n                        setTranscript(`[${i18next.t(\"No transcript available\")}]`);\n                    }\n                    return;\n                }\n\n                await dataSourceVideo.saveVideoSubtitles(props.videoID, subtitlesBlob);\n                const text: string = await subtitlesBlob.text()\n                const subtitles: string[] = extractSubtitles(text);\n                if (!isMounted)\n                    return;\n                setTranscript(subtitles.join(\" \"));\n            });\n        }\n        return () => { isMounted = false; };\n    }, [subtitlesURL]);\n\n    useEffect(() => {\n        if (transcript !== null)\n            props.onLoaded();\n    }, [transcript]);\n\n    async function fetchVideoData(requestedVideoID: bigint): Promise<FetchedVideoData> {\n        const videoData: VideoData | null = await dataSourceVideo.getStepVideoData(requestedVideoID);\n\n        if (!videoData)\n            return { videoUrlS3: \"\", subtitlesURL: \"\", thumbnailURL: \"\", duration: BigInt(0) };\n\n        const thumbnailURL: string = videoData.ThumbnailUrlS3 ?\n            await dataSourceStorage.getPreSignedUrl(videoData.ThumbnailUrlS3, ObjectTypeS3.IMAGE) : \"\";\n        const subtitlesURL: string = videoData.SubtitlesUrlS3 ?\n            await dataSourceStorage.getPreSignedUrl(videoData.SubtitlesUrlS3, ObjectTypeS3.TEXT) : \"\";\n\n        return {\n            videoUrlS3: videoData.VideoUrlS3,\n            subtitlesURL,\n            thumbnailURL,\n            duration: videoData.Duration\n        };\n    }\n\n    function extractSubtitles(textVTT: string): string[] {\n        const lines: string[] = textVTT.split(\"\\n\");\n        const subtitles: string[] = [];\n        for (let i = 0; i < lines.length; ++i) {\n            const trimmedLine: string = lines[i].trim();\n\n            if (i === 0 || trimmedLine === \"WEBVTT\")\n                continue;\n\n            if (trimmedLine && !trimmedLine.includes(\"-->\"))\n                subtitles.push(trimmedLine);\n        }\n        return subtitles;\n    }\n\n    return (\n        <Box style={{display: \"flex\", gap: \"10px\", flexDirection: isMobileOnly ? \"column\" : \"row\"}}>\n            <Box>\n                <TitleInfoWrapper>{i18next.t(\"Video\")}</TitleInfoWrapper>\n                <Container onClick={() => setOpenDialog(true)}>\n                    {videoUrlS3 && thumbnailURL ?\n                        <>\n                            <ImageThumbnail src={thumbnailURL} crossOrigin=\"anonymous\"/>\n                            <TimerWrapper> {convertSecondsToTimer(Number(duration))} </TimerWrapper>\n                            <IconContainer className=\"icon_attempt_video\">\n                                <IconWrapper>\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 85 60\" fill={lightWhite}>\n                                        <polygon points=\"30.5 15.44 30.5 44.74 63.1 30.09 30.5 15.44\"/>\n                                    </svg>\n                                </IconWrapper>\n                            </IconContainer>\n                            <OverlayContainer className=\"overlay_attempt_video\" />\n                        </>\n                        :\n                        <NoDataToDisplay>{i18next.t(\"No video to display\")}</NoDataToDisplay>\n                    }\n                </Container>\n                {openDialog && videoUrlS3 &&\n                    <FullScreenVideo onClose={() => setOpenDialog(false)} videoID={props.videoID} />\n                }\n            </Box>\n            <Box>\n                <TitleInfoWrapper>{i18next.t(\"Transcript\")}</TitleInfoWrapper>\n                {transcript === null ?\n                    <CenteredLoading/>\n                    :\n                    <TranscriptWrapper>\n                        <Box style={{\n                            padding: \"6px\",\n                            overflow: \"auto\",\n                            maxHeight: props.isPrinting ? \"none\" : \"124px\"\n                        }}>\n                            {transcript}\n                        </Box>\n                    </TranscriptWrapper>\n                }\n            </Box>\n        </Box>\n    )\n}", "import React, {useEffect, useState} from \"react\"\nimport {TitleInfoWrapper} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/StepCard\";\nimport i18next from \"i18next\";\nimport {Box, styled} from \"@mui/material\";\nimport {ChipAnswer} from \"@root/Frontend/Console/Views/Analytics/AttemptView/StepCard/Answers/ChipAnswer\";\nimport {DataSourceSteps} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {StepInput, StepType} from \"@backend/Types/Step\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst AnswersContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"center\",\n    paddingTop: \"8px\"\n});\n\nconst AnswerWrapper = styled(Box)({\n    width: \"min(100%, 254px)\",\n});\n\ninterface AttemptInputProps {\n    worldID: bigint;\n    sequenceID: bigint;\n    stepID: bigint;\n    answer: string;\n}\n\nexport function AttemptInput(props: AttemptInputProps) {\n    const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n\n    const [minimum, setMinimum] = useState<string>(\"-\");\n    const [maximum, setMaximum] = useState<string>(\"-\");\n\n    useEffect(() => {\n        dataSourceSteps.getStep(props.worldID, props.sequenceID, props.stepID).then((step: StepInput) => {\n            if (step.Type.value !== StepType.INPUT.toString())\n                return;\n\n            setMinimum(step.Minimum.value?.toString() ?? \"-\");\n            setMaximum(step.Maximum.value?.toString() ?? \"-\");\n        })\n    }, []);\n\n\n    return (\n        <Box>\n            <Box style={{ paddingBottom: \"16px\" }}>\n                <TitleInfoWrapper>{i18next.t(\"Minimum & Maximum\")}</TitleInfoWrapper>\n                <Box style={{ font: primaryFontLarge }}>Minimum: {minimum}</Box>\n                <Box style={{ font: primaryFontLarge }}>Maximum: {maximum}</Box>\n            </Box>\n            <TitleInfoWrapper>{i18next.t(\"Answer\")}</TitleInfoWrapper>\n            <AnswersContainer>\n                <AnswerWrapper>\n                    <ChipAnswer title={props.answer} selected={false}/>\n                </AnswerWrapper>\n            </AnswersContainer>\n        </Box>\n    )\n}", "import React from \"react\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {RouteComponentProps} from \"react-router\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport i18next from \"i18next\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {WorldsView} from \"@root/Frontend/Console/Views/Analytics/WorldsList/WorldsView\";\nimport {WorldView} from \"@root/Frontend/Console/Views/Analytics/World/WorldView\";\nimport {withRouter} from \"react-router-dom\";\nimport {SequencesList} from \"@root/Frontend/Console/Views/Analytics/SequencesList/SequencesList\";\nimport {AttemptsList} from \"@root/Frontend/Console/widgets/lists/AttemptsList\";\nimport {lightGrey, white} from \"@root/react-components/src/values/colors/colors\";\nimport {ListWrapper} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {SequenceView} from \"@root/Frontend/Console/Views/Analytics/SequenceView/SequenceView\";\nimport {FILTER_OS_LIST, FiltersInterface, FiltersRow} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {World} from \"@backend/Types/World\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {canPeerEditWorld, getWorldPeerIDs} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport styled from \"styled-components\";\nimport {Box} from \"@mui/material\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst FiltersWrapper = styled(Box)({\n    display: \"flex\",\n    alignItems: \"end\",\n    gap: \"10px\",\n    position: \"absolute\",\n    top: \"-55px\",\n    right: \"16px\",\n    font: primaryFontMedium\n});\n\ninterface AttemptListViewState {\n    filters: FiltersInterface;\n    peerIDs: bigint[];\n    entityIDs: bigint[];\n    canEditWorld: boolean;\n}\n\nexport class AttemptListView extends RouterView<RouteComponentProps<{worldID: string, sequenceID: string}>> {\n    private readonly worldID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.worldID);\n    private readonly sequenceID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.sequenceID);\n\n    static getLevelAttemptsList(worldID: bigint, sequenceID: bigint): BreadcrumbsLevel {\n        return {\n            link: Analytics.BASE_PATH + \"/Worlds/\" + worldID + \"/Sequences/\" + sequenceID + \"/Attempts\",\n            async getName(){\n                return i18next.t(\"Attempts\")\n            }\n        }\n    }\n\n    override getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [\n            WorldsView.worldsLevel(),\n            WorldView.getLevelForWorld(this.worldID),\n            SequencesList.getWorldSequencesLevel(this.worldID),\n            SequenceView.sequenceLevel(this.worldID, this.sequenceID),\n            AttemptListView.getLevelAttemptsList(this.worldID, this.sequenceID)\n        ];\n    }\n\n    state: AttemptListViewState = {\n        filters: {\n            filterDate: FilterDateOptions.All_TIME,\n            filterOS: FILTER_OS_LIST,\n            selectedEntity: BigInt(0),\n            selectedPeer: BigInt(0)\n        },\n        peerIDs: [],\n        entityIDs: [],\n        canEditWorld: false\n    }\n\n    override async componentDidMount(): Promise<void> {\n        super.componentDidMount();\n\n        if (!this.worldID || !this.sequenceID)\n            return;\n\n        const world: World = await AppConsole.getInstance().dataSourceWorlds.getWorld(this.worldID);\n\n        // get all the peers that have access to the world (direct and through groups)\n        const worldPeerIDs: Set<bigint> = await getWorldPeerIDs(this.worldID);\n        const canEditWorld: boolean = await canPeerEditWorld(AppConsole.getInstance().currentPeerID, this.worldID);\n\n        // Retrieve the entityID from the URL if it exists\n        const entityID = BigInt(new URLSearchParams(window.location.search).get('entityID') ?? 0);\n\n        this.setState((prevState: AttemptListViewState) => ({\n            peerIDs: [...worldPeerIDs],\n            entityIDs: world.Entities.value,\n            canEditWorld,\n            filters: { \n                ...prevState.filters,\n                selectedEntity: entityID \n            }\n        }));\n    }\n\n    render(){\n        return (\n            <>\n                <FiltersWrapper>\n                    <FiltersRow\n                        filters={this.state.filters}\n                        handleOnChangeFilter={(filters: FiltersInterface) => this.setState({ filters })}\n                        peerIDs={this.state.peerIDs}\n                        allEntities={this.state.entityIDs}\n                        disablePeerFilter={!this.state.canEditWorld}\n                    />\n                </FiltersWrapper>\n                <ListWrapper backgroundColor={white} scrollbarcolor={lightGrey} height=\"100%\">\n                    <AttemptsList worldID={this.worldID} sequenceID={this.sequenceID} filters={this.state.filters} />\n                </ListWrapper>\n            </>\n        );\n    }\n}\n\nexport const AttemptListViewWithRouter = withRouter(AttemptListView);", "import React, {useState} from \"react\"\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {UserEmailInput} from \"@root/Frontend/Console/Views/Management/Group/InvitePeer/UserEmailInput\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {SelectFromInput} from \"@root/Frontend/Console/Views/Management/Group/InvitePeer/SelectFromInput\";\nimport {\n    GroupMembersAutocomplete\n} from \"@root/Frontend/Console/Views/Management/Group/InvitePeer/GroupMembersAutocomplete\";\nimport {InviteesChips} from \"@root/Frontend/Console/Views/Management/Group/InvitePeer/InviteesChips\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"12px\",\n    maxWidth: \"min(75vw, 750px)\"\n});\n\nconst Header = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n});\n\nconst Title = styled(Box)({\n    font: primaryFontXLarge\n});\n\nconst ActionsContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"end\",\n    gap: \"8px\",\n});\n\ninterface InvitePeerFormProps {\n    groupID: bigint;\n    saveNewPeers: (peerIDs: Set<bigint>) => void;\n    onClose: () => void;\n}\n\nexport function InvitePeerForm(props: InvitePeerFormProps){\n    const app: AppConsole = AppConsole.getInstance();\n    const [inviteesIDs, setInviteesIDs] = useState<Set<bigint>>(new Set<bigint>());\n    // BigInt(0) represent email\n    const [selectedFrom, setSelectedFrom] = useState<bigint>(BigInt(0));\n\n    async function saveNewPeers(newInviteesIDs: Set<bigint>) {\n        if (!newInviteesIDs.size) {\n            props.onClose();\n            return;\n        }\n\n        for (const peerID of newInviteesIDs)\n            await app.dataSourceGroups.invitePeerToGroup(props.groupID, peerID);\n\n        props.saveNewPeers(newInviteesIDs);\n        props.onClose();\n    }\n\n    function removePeerFromInvitees(removedPeerID: bigint) {\n        const copiedInvitees: Set<bigint> = new Set<bigint>(inviteesIDs);\n        copiedInvitees.delete(removedPeerID);\n        setInviteesIDs(copiedInvitees);\n    }\n\n    return (\n        <Dialog onClose={props.onClose} size={DialogSize.sm}>\n            <Container>\n                <Header> <Title>{i18next.t(\"Add peers\")}</Title> </Header>\n                <SelectFromInput\n                    groupID={props.groupID}\n                    onChange={(selectedOption: bigint) => setSelectedFrom(selectedOption)}\n                />\n                {selectedFrom ?\n                    <GroupMembersAutocomplete\n                        selectedGroupID={selectedFrom}\n                        currentGroupID={props.groupID}\n                        inviteePeerIDs={inviteesIDs}\n                        setInvitePeerIDs={(peerIDs: Set<bigint>) =>\n                            setInviteesIDs(new Set([...inviteesIDs, ...peerIDs]))}\n                    />\n                    :\n                    <UserEmailInput\n                        groupID={props.groupID}\n                        inviteePeerIDs={inviteesIDs}\n                        invitePeers={(peerIDs: Set<bigint>) => setInviteesIDs(new Set([...inviteesIDs, ...peerIDs]))}\n                    />\n                }\n                <InviteesChips\n                    inviteePeerIDs={inviteesIDs}\n                    removePeerFromInvitees={(removedPeerID: bigint) => removePeerFromInvitees(removedPeerID)}\n                />\n                <ActionsContainer>\n                    <Button\n                        id=\"group-invitees-close-btn\"\n                        variant=\"outlined\"\n                        onClick={() => props.onClose()}>\n                        {i18next.t(\"Close\")}\n                    </Button>\n                    <Button\n                        id=\"group-invitees-save-btn\"\n                        onClick={() => saveNewPeers(inviteesIDs)}\n                        disabled={!inviteesIDs.size}\n                    >{i18next.t(\"Save\")}</Button>\n                </ActionsContainer>\n            </Container>\n        </Dialog>\n    );\n}\n", "import React, {useEffect, useRef, useState} from \"react\"\nimport {Box, styled} from \"@mui/material\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport i18next from \"i18next\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {dark, red} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontMedium, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Info} from \"@root/react-components/src/icons/Info\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {Group} from \"@backend/Types/Group\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\n\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"8px\"\n})\n\nconst InputContainer = styled(Box)({\n    display: \"flex\",\n    textAlign: \"left\"\n})\n\nconst ErrorWrapper = styled(Box)({\n    maxHeight: \"175px\",\n    overflow: \"auto\",\n    color: red,\n    textAlign: \"left\",\n})\n\nconst ErrorTypeContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"5px 0px\",\n    font: primaryFontMedium\n})\n\nconst ErrorText = styled(Box)({\n    padding: \"5px 0px 0px 8px\",\n    font: secondaryFontMedium\n})\n\nconst InfoWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"center\",\n    padding: \"2px\",\n    border: `2px solid ${dark}`,\n    borderRadius: \"20px\",\n    height:\"8px\",\n    width:\"8px\",\n    marginLeft: \"3px\"\n})\n\nexport enum ERROR_MSG {\n    PEER_DOESNT_EXIST = \"Users don't exist\",\n    INCLUDE_GROUP = \"Users are already group members\",\n    ALREADY_INVITED = \"Users is already invited\"\n}\n\ninterface ParsedEmails {\n    validPeerIDs: Set<bigint>;\n    errorEmails: Map<ERROR_MSG, Set<string>>;\n}\n\ninterface UserEmailInputProps {\n    groupID: bigint;\n    inviteePeerIDs: Set<bigint>;\n    invitePeers: (inviteePeerIDs: Set<bigint>) => void;\n}\n\nexport function UserEmailInput(props: UserEmailInputProps) {\n    const app: AppConsole = AppConsole.getInstance();\n\n    const [groupPeerIDs, setGroupPeerIDs] = useState<Set<bigint>>(new Set());\n    const [inputEmails, setInputEmails] = useState<string>(\"\");\n    const [invalidEmailsMSG, setInvalidEmailsMSG] = useState<Map<ERROR_MSG, Set<string>> | null>(null);\n\n    useEffect(() => {\n        app.dataSourceGroups.getGroup(props.groupID).then((group: Group) => {\n            const peerIDs: bigint[] = Object.keys(group.Peers).map((peerID: string) =>\n                UtilsShared.safelyConvertStringToBigInt(peerID));\n            setGroupPeerIDs(new Set(peerIDs));\n        });\n    }, []);\n\n    async function addPeerEmailsToInvitees() {\n        const emails: Set<string> = new Set<string>(inputEmails.split(/[,;\\n\\s]+/));\n        const { validPeerIDs, errorEmails }: ParsedEmails = await parseEmails(emails);\n\n        setInvalidEmailsMSG(errorEmails.size ? errorEmails : null);\n\n        if (validPeerIDs.size)\n            props.invitePeers(validPeerIDs);\n    }\n\n    async function parseEmails(emails: Set<string>): Promise<ParsedEmails> {\n        const validPeerIDs: Set<bigint> = new Set<bigint>();\n        const errorEmails: Map<ERROR_MSG, Set<string>> = new Map<ERROR_MSG, Set<string>>();\n\n        for(const email of emails) {\n            if(!email)\n                continue;\n\n            const peerID: bigint = await app.dataSourcePeers.isUsernameExists(email);\n            let errorEmail: ERROR_MSG | null = null;\n\n            // Check if the email is empty, if the peer exists in the database,\n            // if it's already included in the invitees, if it's already a group member\n            if (!peerID)\n                errorEmail = ERROR_MSG.PEER_DOESNT_EXIST;\n            else if (groupPeerIDs.has(peerID))\n                errorEmail = ERROR_MSG.INCLUDE_GROUP;\n            else if (props.inviteePeerIDs.has(peerID))\n                errorEmail = ERROR_MSG.ALREADY_INVITED;\n\n            // If the error haven't been set, it means it could be added to the group\n            if (!errorEmail) {\n                validPeerIDs.add(peerID);\n                continue;\n            }\n\n            if (errorEmails.has(errorEmail))\n                errorEmails.get(errorEmail)?.add(email);\n            else\n                errorEmails.set(errorEmail, new Set<string>([email]));\n        }\n\n        return { validPeerIDs, errorEmails }\n    }\n\n    return (\n        <Container>\n            <InputContainer>\n                <InputText\n                    id=\"add-peer-to-group-input\"\n                    dark\n                    onKeyDown={(e: React.KeyboardEvent) => e.key === \"Enter\" && addPeerEmailsToInvitees()}\n                    onChange={(text: string) => setInputEmails(text)}\n                    label={\n                        <Box sx={{ display:\"flex\", font: primaryFontMedium }}>\n                            {i18next.t(\"User Emails\")}\n                            <Tooltip\n                                placement=\"right\"\n                                title={i18next.t(\"You can add multiple users at once using the following \" +\n                                    \"separators Comma (,), Space ( ), or Semicolon (;)\")}>\n                                <InfoWrapper>\n                                    <Info/>\n                                </InfoWrapper>\n                            </Tooltip>\n                        </Box>\n                    }\n                />\n                <Button\n                    id={\"add-peer-btn\"}\n                    size=\"small\"\n                    onClick={() => addPeerEmailsToInvitees()}\n                    disabled={!inputEmails || inputEmails === \"\"}\n                    sx={{ margin: \"auto\" }}\n                >\n                    {i18next.t(\"Add\")}\n                </Button>\n            </InputContainer>\n            {invalidEmailsMSG &&\n                <ErrorWrapper>\n                    {Array.from(invalidEmailsMSG).map(([type,emails]) =>\n                        <ErrorTypeContainer key={type}>\n                            {i18next.t(type)}\n                            {Array.from(emails).map((email: string) => <ErrorText key={email}> {email}</ErrorText>)}\n                        </ErrorTypeContainer>\n                    )}\n                </ErrorWrapper>\n            }\n        </Container>\n    );\n}\n", "import React, {useEffect} from \"react\"\nimport {Box} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Group} from \"@backend/Types/Group\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {sortMapByValueAlpha} from \"@utils/utils\";\n\ninterface SelectFromInputProps {\n    onChange: (selectedOption: bigint) => void;\n    groupID: bigint;\n}\n\nexport function SelectFromInput(props: SelectFromInputProps) {\n    const app: AppConsole = AppConsole.getInstance();\n    const [groupNameByID, setGroupNameByID] = React.useState<Map<bigint, string>>(new Map());\n\n    useEffect(() => {\n        fetchGroupNameByID().then((newGroupNameByID: Map<bigint, string>) => setGroupNameByID(newGroupNameByID));\n    }, []);\n\n    async function fetchGroupNameByID(): Promise<Map<bigint, string>> {\n        const groupNameByID: Map<bigint, string> = new Map();\n        const currentPeer: Peer = await app.dataSourcePeers.getPeer(app.currentPeerID);\n        for (const groupIDstr of Object.keys(currentPeer.group)) {\n            const groupID: bigint = UtilsShared.safelyConvertStringToBigInt(groupIDstr);\n            if (groupID === props.groupID)\n                continue;\n\n            const group: Group = await app.dataSourceGroups.getGroup(groupID);\n            groupNameByID.set(groupID, group.Name);\n        }\n\n        return sortMapByValueAlpha(groupNameByID);\n    }\n\n    return (\n        <Box>\n            <Box>{i18next.t(\"From\")}</Box>\n            <Select\n                options={[i18next.t(\"By email\"), ...groupNameByID.values()]}\n                onChange={(index: number) =>\n                    props.onChange(index === 0 ? BigInt(0) : [...groupNameByID.keys()][index - 1])}\n            />\n        </Box>\n    );\n}", "import React, {useEffect, useState} from \"react\"\nimport {Autocomplete, AutocompleteOption} from \"@root/react-components/src/inputs/Autocomplete\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {sortMapByValueAlpha} from \"@utils/utils\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Group} from \"@backend/Types/Group\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {grey} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {AutocompleteCloseReason} from \"@mui/material\";\n\ninterface GroupMembersAutocompleteProps {\n    selectedGroupID: bigint;\n    currentGroupID: bigint;\n    inviteePeerIDs: Set<bigint>;\n    setInvitePeerIDs: (inviteePeerIDs: Set<bigint>) => void;\n}\n\nexport function GroupMembersAutocomplete(props: GroupMembersAutocompleteProps) {\n    const app: AppConsole = AppConsole.getInstance();\n    const [sortedPeerNameByID, setSortedPeerNameByID] = useState<Map<bigint, string>>(new Map());\n    const [inputValue, setInputValue] = useState(\"\");\n    const [open, setOpen] = useState(false);\n\n    useEffect(() => {\n        fetchPeerNames(props.selectedGroupID, props.currentGroupID, props.inviteePeerIDs).then(\n            (newSortedPeerNameByID: Map<bigint, string>) => setSortedPeerNameByID(newSortedPeerNameByID));\n    }, [props.selectedGroupID, props.inviteePeerIDs]);\n\n    useEffect(() => {\n        if (sortedPeerNameByID.size === 0)\n            setOpen(false);\n\n    }, [sortedPeerNameByID]);\n\n    async function fetchPeerNames(selectedGroupID: bigint, currentGroupID: bigint, inviteesPeerIDs: Set<bigint>):\n        Promise<Map<bigint, string>> {\n        const peerNameByIDs: Map<bigint, string> = new Map();\n        const selectedGroup: Group = await app.dataSourceGroups.getGroup(selectedGroupID);\n        const selectedGroupPeerIDs: bigint[] = Object.keys(selectedGroup.Peers).map((peerIDstr: string) =>\n            UtilsShared.safelyConvertStringToBigInt(peerIDstr));\n\n        const currentGroup: Group = await app.dataSourceGroups.getGroup(currentGroupID);\n        const currentGroupPeerIDs: Set<bigint> = new Set(Object.keys(currentGroup.Peers).map((peerIDstr: string) =>\n            UtilsShared.safelyConvertStringToBigInt(peerIDstr)));\n\n        for (const peerID of selectedGroupPeerIDs) {\n            if (currentGroupPeerIDs.has(peerID) || inviteesPeerIDs.has(peerID))\n                continue;\n\n            const peer: Peer = await app.dataSourcePeers.getPeer(peerID);\n            peerNameByIDs.set(peerID, `${peer.username}${peer.archivedDate ? ` [${i18next.t(\"Archived\")}]` : \"\"}`);\n        }\n\n        return sortMapByValueAlpha(peerNameByIDs);\n    }\n\n    function addNewGroupMember(peerID: bigint) {\n        setInputValue(\"\");\n\n        // Invite all peers if the user selected \"All members\"\n        const invitedPeerIDs: Set<bigint> = new Set(peerID ? [peerID] : sortedPeerNameByID.keys());\n        props.setInvitePeerIDs(invitedPeerIDs);\n    }\n\n    const options: AutocompleteOption[] = sortedPeerNameByID.size ? [\n        { label: i18next.t(\"All members\"), value: BigInt(0) },\n        ...[...sortedPeerNameByID].map(([peerID, peerName]) => ({\n            label: peerName,\n            value: peerID\n        }))\n    ] : [];\n\n    return (\n        <Autocomplete\n            size=\"small\"\n            disablePortal\n            options={options}\n            onClose={(_, reason: AutocompleteCloseReason) => {\n                if (reason === \"selectOption\")\n                    return;\n\n                setOpen(false);\n            }}\n            open={open}\n            onOpen={() => setOpen(true)}\n            value={null}\n            inputValue={inputValue}\n            onInputChange={(_, newValue) => setInputValue(newValue)}\n            getOptionLabel={(option: AutocompleteOption) => option.label ?? \"\"}\n            renderOption={(propOptions: React.HTMLAttributes<HTMLLIElement>, option: AutocompleteOption) => (\n                <li {...propOptions} style={{ borderBottom: option.value ? \"\" : `1px solid ${grey}` }}>\n                    {option.label}\n                </li>\n            )}\n            componentsProps={{\n                popper: { placement: 'bottom-end' }\n            }}\n            onChange={(_: React.ChangeEvent<object>, value: AutocompleteOption) => addNewGroupMember(value.value)}\n        />\n    );\n}", "import React, {useEffect, useState} from \"react\"\nimport {Box, Chip, styled} from \"@mui/material\";\nimport {dark, darkenGrey, lightWhite, white} from \"@root/react-components/src/values/colors/colors\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {sortMapByValueAlpha} from \"@utils/utils\";\nimport i18next from \"i18next\";\n\nconst Container = styled(Box)((props: { has_peers: number }) => ({\n    backgroundColor: dark,\n    padding: \"12px\",\n    borderRadius: \"12px\",\n    minHeight: \"250px\",\n    maxHeight: \"50vh\",\n    overflow: \"auto\",\n    display: \"flex\",\n    flexWrap: props.has_peers ? \"wrap\" : \"nowrap\",\n    justifyContent: props.has_peers ? \"flex-start\" : \"center\",\n    alignItems: props.has_peers ? \"flex-start\" : \"center\",\n    alignContent: props.has_peers ? \"flex-start\" : \"center\",\n    gap: props.has_peers ? \"8px\" : 0,\n    \"&\":{\n        \"&::-webkit-scrollbar\": { width: \"6px\", height: \"10px\" },\n        \"&::-webkit-scrollbar-thumb\": { background: white, borderRadius: \"10px\", border: \"solid 3px transparent\" },\n        \"&::-webkit-scrollbar-track\": {\n            width: 0,\n            borderRadius: \"10px\",\n            marginBlockEnd: \"1em\",\n            marginBlockStart: \"1em\",\n        },\n    }\n}));\n\ninterface InviteesChipsProps {\n    inviteePeerIDs: Set<bigint>;\n    removePeerFromInvitees: (peerID: bigint) => void;\n}\n\nexport function InviteesChips(props: InviteesChipsProps) {\n    const app: AppConsole = AppConsole.getInstance();\n    const [sortedPeerNameByID, setSortedPeerNameByID] = useState<Map<bigint, string>>(new Map());\n\n    useEffect(() => {\n        fetchPeerNames(props.inviteePeerIDs).then((newSortedPeerNameByID: Map<bigint, string>) =>\n            setSortedPeerNameByID(newSortedPeerNameByID));\n    }, [props.inviteePeerIDs]);\n\n    async function fetchPeerNames(inviteePeerIDs: Set<bigint>): Promise<Map<bigint, string>> {\n        const peerNameByIDs: Map<bigint, string> = new Map();\n        for (const peerID of inviteePeerIDs) {\n            const peer: Peer = await app.dataSourcePeers.getPeer(peerID);\n            peerNameByIDs.set(peerID, peer.username);\n        }\n\n        return sortMapByValueAlpha(peerNameByIDs);\n    }\n\n    return (\n        <Container has_peers={sortedPeerNameByID.size}>\n            {sortedPeerNameByID.size ?\n                ([...sortedPeerNameByID.entries()].map(([peerID, username]: [bigint, string]) =>\n                    <Chip\n                        id={peerID.toString()}\n                        className=\"peer-item\"\n                        key={peerID.toString()}\n                        label={username}\n                        color=\"darkenWhite\"\n                        onDelete={() => props.removePeerFromInvitees(peerID)}\n                    />\n                ))\n                :\n                <Box sx={{ color: white }}>{i18next.t(\"No users to display\")}</Box>\n            }\n        </Container>\n    );\n}", "import React, {useEffect, useState} from \"react\";\nimport {ListView} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport i18next from \"i18next\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport SessionPreviewItem from \"@root/Frontend/Console/widgets/lists/SessionPreviewItem\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {isMobileOnly} from \"react-device-detect\";\n\ninterface DSConnectCallsListProps {\n    peerIDs: bigint[];\n    filterPeer?: bigint;\n    dateRange?: [bigint, bigint];\n}\n\nexport default function DSConnectCallsList(props: DSConnectCallsListProps) {\n    const dataSourcePeers: DataSourcePeers = AppConsole.getInstance().dataSourcePeers;\n    const [sessionIDs, setSessionIDs] = useState<bigint[]>([]);\n\n    useEffect(() => {\n        getSessionIDs(props.peerIDs).then((peersSessionIDs: bigint[]) => setSessionIDs(peersSessionIDs));\n    }, [props.peerIDs, props.filterPeer, props.dateRange]);\n\n    async function getSessionIDs(peerIDs: bigint[]): Promise<bigint[]> {\n        let peersSessionIDs: Set<bigint> = new Set<bigint>();\n\n        for (const peerID of peerIDs) {\n            const peer: Peer = await dataSourcePeers.getPeer(peerID);\n            // filter by peer\n            if (props.filterPeer && props.filterPeer !== peerID)\n                continue;\n\n            for (const sessionID of peer.sessions) {\n                const sessionTimestamp: bigint = UtilsShared.getTimestampOfRandomID(sessionID);\n                // filter by date\n                if (props.dateRange && (sessionTimestamp < props.dateRange[0] || sessionTimestamp > props.dateRange[1]))\n                    continue;\n\n                peersSessionIDs.add(sessionID);\n            }\n        }\n\n        return Array.from(peersSessionIDs).sort((sessionA: bigint, sessionB: bigint): number =>\n            Number(UtilsShared.getTimestampOfRandomID(sessionB) - UtilsShared.getTimestampOfRandomID(sessionA)));\n    }\n\n    return (\n        <ListView\n            itemCount={sessionIDs.length}\n            itemHeight={isMobileOnly ? 220 : 120}\n            emptyListMessage={i18next.t(\"No sessions to display\")}\n        >\n            {(index: number) => <SessionPreviewItem sessionID={sessionIDs[index]} />}\n        </ListView>\n    )\n}", "import React, {useEffect, useState} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {darkenWhite, lightGrey, lightWhite, dark} from \"@root/react-components/src/values/colors/colors\";\nimport {DataSourceSessions} from \"@root/Frontend/DataSources/DataSourceSessions\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Session} from \"@backend/Types/Session\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {TimeAmount, timestampToString, TimeUnit} from \"@utils/utils\";\nimport {\n    primaryFontMedium,\n    primaryFontLarge,\n    secondaryFontMedium,\n    secondaryFontLarge\n} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {isMobileOnly} from \"react-device-detect\";\n\nconst CallSummaryContainer = styled(Box)({\n    alignItems: \"center\",\n    display: \"flex\",\n    flex: 1,\n    flexDirection: isMobileOnly ? \"column\" : \"row\",\n    justifyContent: \"center\"\n});\n\nconst Container = styled(Box)({\n    backgroundColor: lightWhite,\n    border: `2px solid ${darkenWhite}`,\n    borderRadius: \"12px\",\n    color: dark,\n    display: \"flex\",\n    flexDirection: isMobileOnly ? \"row\" : \"column\",\n    font: primaryFontMedium,\n    height: isMobileOnly ? \"180px\" : \"80px\",\n    padding: \"8px\",\n});\n\nconst DateContainer = styled(Box)({\n    alignItems: isMobileOnly ? \"center\" : \"unset\",\n    display: \"flex\",\n    flex: 1,\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    textAlign: \"center\"\n});\n\nconst Divider = styled(Box)({\n    border: `1px solid ${lightGrey}`,\n    width: \"100%\"\n});\n\nconst DurationContainer = styled(Box)({\n    alignItems: isMobileOnly ? \"center\" : \"unset\",\n    display: \"flex\",\n    flex: 1,\n    justifyContent: \"center\"\n});\n\nconst HostContainer = styled(Box)({flex: 1,\n    alignItems: \"center\",\n    display: \"flex\",\n    flexDirection: \"row\",\n    gap: \"12px\",\n    justifyContent: \"center\"\n});\n\nconst NameContainer = styled(Box)({\n    font: secondaryFontMedium,\n    overflowWrap: \"anywhere\"\n});\n\nconst ParticipantsContainer = styled(Box)({\n    alignItems: isMobileOnly ? \"center\" : \"unset\",\n    display: \"flex\",\n    flex: 1,\n    flexDirection: \"row\",\n    justifyContent: \"center\"\n});\n\nconst Thumbnail = styled(\"img\")({\n    borderRadius: \"50%\",\n    height: \"36px\",\n    objectFit: \"cover\",\n    width: \"36px\",\n});\n\nconst TitleSection = styled(Box)({\n    display: \"flex\",\n    flexDirection: isMobileOnly ? \"column\" : \"row\"\n});\n\nconst Title = styled(Box)({\n    alignItems: \"center\",\n    display: \"flex\",\n    flex: 1,\n    font: primaryFontLarge,\n    justifyContent: \"center\"\n});\n\ninterface PeersInformation {\n    peersName: string[];\n    peersUsername: string[];\n}\n\ninterface SessionTimeline {\n    date: string;\n    duration: string;\n    time: string;\n}\n\nexport default function SessionPreviewItem(props: {sessionID: bigint}) {\n    const dataSourceSessions: DataSourceSessions = AppConsole.getInstance().dataSourceSessions;\n    const dataSourcePeers: DataSourcePeers = AppConsole.getInstance().dataSourcePeers;\n\n    const [connectedPeerIDs, setConnectedPeerIDs] = useState<bigint[] | null>(null);\n    const [connectedPeerNames, setConnectedPeerNames] = useState<string[]>([]);\n    const [connectedPeerUsernames, setConnectedPeerUsernames] = useState<string[]>([]);\n    const [date, setDate] = useState<string>(\"\");\n    const [duration, setDuration] = useState<string>(\"\");\n    const [hostID, setHostID] = useState<bigint>(BigInt(0));\n    const [time, setTime] = useState<string>(\"\");\n\n    useEffect(() => {\n        dataSourceSessions.getSession(props.sessionID).then((attributes: Session)=> {\n            setHostID(attributes.Host);\n            setConnectedPeerIDs(Object.keys(attributes.Peers).map(\n                (id: string): bigint => UtilsShared.safelyConvertStringToBigInt(id)));\n        });\n\n        getSessionTimeline(props.sessionID).then((timeline: SessionTimeline) => {\n            setDate(timeline.date);\n            setDuration(timeline.duration);\n            setTime(timeline.time);\n        });\n    }, [props.sessionID]);\n\n    useEffect(() => {\n        if (!connectedPeerIDs)\n            return;\n\n        getConnectedPeersInformation(connectedPeerIDs).then((peersInformation: PeersInformation) => {\n            setConnectedPeerNames(peersInformation.peersName);\n            setConnectedPeerUsernames(peersInformation.peersUsername);\n        });\n    }, [connectedPeerIDs]);\n\n    async function getConnectedPeersInformation(peerIDs: bigint[]): Promise<PeersInformation> {\n        const peersName: string[] = [];\n        const peersUsername: string[] = [];\n\n        for (const peerID of peerIDs) {\n            const peer: Peer = await dataSourcePeers.getPeer(peerID);\n\n            peersName.push(peer.fullName);\n            peersUsername.push(peer.username);\n        }\n\n        return { peersName, peersUsername };\n    }\n\n    async function getSessionTimeline(sessionID: bigint): Promise<SessionTimeline> {\n        let firstConnection: bigint = BigInt(0);\n        let lastDisconnection: bigint = BigInt(0);\n        const session: Session = await dataSourceSessions.getSession(sessionID);\n\n        for (const connectedPeer of Object.values(session.Peers)) {\n            if (!firstConnection || firstConnection > connectedPeer.TimeConnection)\n                firstConnection = connectedPeer.TimeConnection;\n\n            if (!lastDisconnection || lastDisconnection < connectedPeer.TimeDisconnection)\n                lastDisconnection = connectedPeer.TimeDisconnection;\n        }\n\n        const durationSeconds: number = Number(lastDisconnection - firstConnection);\n        const dateInMilliseconds: Date = new Date(Number(firstConnection) * 1000);\n\n        const hours: string = dateInMilliseconds.getHours().toString().padStart(2, '0');\n        const minutes: string = dateInMilliseconds.getMinutes().toString().padStart(2, '0');\n\n        return {\n            date: timestampToString(firstConnection, false),\n            duration: new TimeAmount(durationSeconds, TimeUnit.SECONDS).toPrettyHumanTime(),\n            time: `${hours}:${minutes}`\n        }\n    }\n\n    function getUsernameByPeerID(peerID: bigint) {\n        const indexPeerID: number = connectedPeerIDs?.findIndex((id: bigint) => id === peerID) ?? -1;\n        return indexPeerID < connectedPeerUsernames.length ? connectedPeerUsernames[indexPeerID] : \"\";\n    }\n\n    function getNameByPeerID(peerID: bigint) {\n        const indexPeerID: number = connectedPeerIDs?.findIndex((id: bigint) => id === peerID) ?? -1;\n        return indexPeerID < connectedPeerNames.length ? connectedPeerNames[indexPeerID] : \"\";\n    }\n\n    return (\n        <Container>\n            <TitleSection>\n                <Title>{`${i18next.t(\"Host\")}`}</Title>\n                <Title>{`${i18next.t(\"Date\")}`}</Title>\n                <Title>{`${i18next.t(\"Duration\")}`}</Title>\n                <Title>{`${i18next.t(\"Participants\")}`}</Title>\n            </TitleSection>\n            {!isMobileOnly && <Divider />}\n            <CallSummaryContainer>\n                <HostContainer>\n                    <Thumbnail\n                        src={`https://secure.gravatar.com/avatar/${\n                            UtilsShared.md5(getUsernameByPeerID(hostID))}?s=80&d=identicon`}\n                        crossOrigin=\"anonymous\"\n                    />\n                    <NameContainer>\n                        <Box style={{ font: primaryFontLarge }}> {getNameByPeerID(hostID)} </Box>\n                        <Box> {getUsernameByPeerID(hostID)} </Box>\n                    </NameContainer>\n                </HostContainer>\n                <DateContainer>\n                    <Box style={{ font: secondaryFontLarge }}>{time}</Box>\n                    <Box> {date} </Box>\n                </DateContainer>\n                <DurationContainer style={{ font: secondaryFontLarge }}> {duration} </DurationContainer>\n                <ParticipantsContainer>\n                    {connectedPeerIDs?.map((peerID: bigint) => {\n                        if (peerID === hostID)\n                            return null;\n\n                        const username: string = getUsernameByPeerID(peerID);\n                        const name: string = getNameByPeerID(peerID);\n                        return (\n                            <Tooltip\n                                key={peerID.toString()}\n                                placement={\"top-start\"}\n                                title={connectedPeerIDs.length > 2 ? <Box> {name} <br /> {username} </Box> : \"\"}\n                            >\n                                <Box style={{ display: \"flex\", flexDirection: \"row\", gap: \"10px\" }}>\n                                    <Thumbnail\n                                        src={`https://secure.gravatar.com/avatar/${\n                                            UtilsShared.md5(username)}?s=80&d=identicon`}\n                                        crossOrigin=\"anonymous\"\n                                    />\n                                    { connectedPeerIDs.length === 2 &&\n                                        <NameContainer>\n                                            <Box style={{ font: primaryFontLarge }}> {name} </Box>\n                                            <Box> {username} </Box>\n                                        </NameContainer>\n                                    }\n                                </Box>\n                            </Tooltip>\n                        )\n                    })}\n                </ParticipantsContainer>\n            </CallSummaryContainer>\n        </Container>\n    )\n}", "import React, {useEffect, useState} from \"react\";\nimport {DataSourceGroups} from \"@root/Frontend/DataSources/DataSourceGroups\";\nimport {DataSourcePlans} from \"@root/Frontend/DataSources/DataSourcePlans\";\nimport {DataSourceStorage} from \"@root/Frontend/DataSources/DataSourceStorage\";\nimport i18next from \"i18next\";\nimport {Box} from \"@mui/material\";\nimport styled from \"styled-components\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Group} from \"@backend/Types/Group\";\nimport {Plan} from \"@backend/Types/Plan\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {convertBytesIntoPrettyDataAmount} from \"@utils/utils\";\nimport {primaryFontLarge, primaryFontXLarge, secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport { darkenPrimary, darkGrey, lightPrimary, primary, shadowDark, white }\n    from \"@root/react-components/src/values/colors/colors\";\nimport {Cube} from \"@root/react-components/src/icons/Cube\";\nimport {HoloGlasses} from \"@root/react-components/src/icons/HoloGlasses\";\nimport {Download} from \"@root/react-components/src/icons/Download\";\nimport {Upload} from \"@root/react-components/src/icons/Upload\";\nimport {Cloud} from \"@root/react-components/src/icons/Cloud\";\nimport {World} from \"@root/react-components/src/icons/World\";\nimport {RegionAWS} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {EditGroupDialog} from \"@root/Frontend/Console/Views/Management/GroupsList/EditGroupDialog\";\nimport {SelectRegion} from \"@root/react-components/src/inputs/SelectRegion\";\n\nconst InformationHeader = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    margin: \"4px 0\"\n});\n\nconst RegionContainer = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: \"8px\",\n    font: primaryFontLarge\n});\n\nconst InformationContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"24px\"\n});\n\nconst InformationContent = styled(Box)((props: {background_color: string}) => ({\n    padding: \"16px 24px\",\n    backgroundColor: props.background_color ? props.background_color : primary,\n    borderRadius: \"24px\",\n    color: white,\n    boxShadow: shadowDark,\n    flex: 1,\n}));\n\nconst Row = styled(Box)({\n    display: \"flex\",\n    gap: \"24px\",\n    \"@media (max-width: 768px)\": {\n        flexDirection: \"column\"\n    }\n});\n\nconst InformationValue = styled(Box)({\n    font: primaryFontXLarge\n});\n\nconst InformationTitle = styled(Box)({\n    font: secondaryFontLarge,\n    display: \"flex\",\n    alignItems: \"end\",\n    gap: \"4px\",\n    \"svg\": {\n        height: \"24px\",\n        width: \"24px\",\n    }\n});\n\nconst InformationTitleWorld = styled(Box)({\n    font: secondaryFontLarge,\n    display: \"flex\",\n    alignItems: \"end\",\n    gap: \"4px\",\n    \"svg\": {\n        height: \"20px\",\n        width: \"20px\",\n    }\n});\n\ninterface GroupInformationProps {\n    groupID: bigint;\n}\n\nexport function GroupInformation(props: GroupInformationProps) {\n    const dataSourceGroups: DataSourceGroups = AppConsole.getInstance().dataSourceGroups;\n    const dataSourcePlans: DataSourcePlans = AppConsole.getInstance().dataSourcePlans;\n    const dataSourceStorage: DataSourceStorage = AppConsole.getInstance().dataSourceStorage;\n\n    const [licensesGlasses, setLicensesGlasses] = useState<number>(0);\n    const [worlds, setWorlds] = useState<number>(0);\n    const [planID, setPlanID] = useState<bigint>(BigInt(0));\n    const [planWorlds, setPlanWorlds] = useState<number>(0);\n    const [documents, setDocuments] = useState<number>(0);\n    const [planDocuments, setPlanDocuments] = useState<number>(0);\n    const [downloadAmountInUse, setDownloadAmountInUse] = useState<number>(0);\n    const [planDownloadAmountInUse, setPlanDownloadAmountInUse] = useState<number>(0);\n    const [uploadAmountInUse, setUploadAmountInUse] = useState<number>(0);\n    const [planUpdateAmountInUse, setPlanUpdateAmountInUse] = useState<number>(0);\n    const [storageAmountInUse, setStorageAmountInUse] = useState<number>(0);\n    const [planStorageAmountInUse, setPlanStorageAmountInUse] = useState<number>(0);\n    const [groupRegion, setGroupRegion] = useState<RegionAWS|null>(null);\n    const [isEditingGroup, setEditingGroup] = useState<boolean>(false);\n\n    function updateGroupInformation(group: Group) {\n        setLicensesGlasses(group.LicensesGlasses);\n        setWorlds(group.Worlds?.length);\n        setDocuments(group.Documents?.length);\n        setDownloadAmountInUse(group.Downloads ? UtilsShared.computeCurrentMonthUsageData(group.Downloads) : 0);\n        setUploadAmountInUse(group.Uploads ? UtilsShared.computeCurrentMonthUsageData(group.Uploads) : 0);\n        setGroupRegion(group.Region);\n        setPlanID(group.Plan);\n    }\n\n    useEffect(() => {\n        dataSourceGroups.getGroup(props.groupID).then(async (group: Group) => {\n            updateGroupInformation(group);\n            setStorageAmountInUse(await dataSourceStorage.getGroupStorageUsage(props.groupID));\n        });\n    }, [props.groupID]);\n\n    useEffect(() => {\n        dataSourcePlans.getPlan(planID).then((plan: Plan | null) => {\n            if (!plan)\n                return;\n            setPlanWorlds(plan.worlds);\n            setPlanDocuments(plan.documents);\n            setPlanDownloadAmountInUse(plan.downloads);\n            setPlanUpdateAmountInUse(plan.uploads);\n            setPlanStorageAmountInUse(plan.storage);\n        })\n    }, [planID]);\n\n    return (\n        <>\n            <Box style={{ display: \"flex\", flexDirection: \"column\" }}>\n                <InformationHeader>\n                    <Box style={{font: primaryFontXLarge}}>\n                        {i18next.t(\"Group information\")}\n                    </Box>\n                    <RegionContainer>\n                        <Box>{i18next.t(\"Region\")}:</Box>\n                        { groupRegion ?\n                            <Box>\n                                {i18next.t(SelectRegion.REGION_NAME[groupRegion]) + \" \" + SelectRegion.REGION_FLAG[groupRegion]}\n                            </Box>\n                            :\n                            <Box style={{cursor: \"pointer\", textDecoration: \"underline\", color: darkGrey}}\n                                onClick={() => setEditingGroup(true)}>\n                                <em>({i18next.t(\"Pick a Region\")})</em>\n                            </Box>\n                        }\n                    </RegionContainer>\n                </InformationHeader>\n                <InformationContainer>\n                    <Row>\n                        <InformationContent background_color={darkenPrimary}>\n                            <InformationValue>{worlds} / {planWorlds}</InformationValue>\n                            <InformationTitleWorld>\n                                <World color={white} />\n                                {i18next.t(\"Worlds\")}\n                            </InformationTitleWorld>\n                        </InformationContent>\n                        <InformationContent background_color={primary}>\n                            <InformationValue>{documents} / {planDocuments}</InformationValue>\n                            <InformationTitle>\n                                <Cube/>\n                                {i18next.t(\"Documents\")}\n                            </InformationTitle>\n                        </InformationContent>\n                        <InformationContent background_color={lightPrimary}>\n                            <InformationValue>{licensesGlasses}</InformationValue>\n                            <InformationTitle>\n                                <HoloGlasses size={24} />\n                                {i18next.t(\"Licenses Glasses\")}\n                            </InformationTitle>\n                        </InformationContent>\n                    </Row>\n                    <Row>\n                        <InformationContent background_color={darkenPrimary}>\n                            <InformationValue>\n                                {`${convertBytesIntoPrettyDataAmount(downloadAmountInUse).toString()} / \n                                  ${convertBytesIntoPrettyDataAmount(planDownloadAmountInUse).toString()}`}\n                            </InformationValue>\n                            <InformationTitle>\n                                <Download size={24} />\n                                {i18next.t(\"Monthly Downloads\")}\n                            </InformationTitle>\n                        </InformationContent>\n                        <InformationContent  background_color={primary}>\n                            <InformationValue>\n                                {`${convertBytesIntoPrettyDataAmount(uploadAmountInUse).toString()} / \n                                  ${convertBytesIntoPrettyDataAmount(planUpdateAmountInUse).toString()}`}\n                            </InformationValue>\n                            <InformationTitle>\n                                <Upload size={24} />\n                                {i18next.t(\"Monthly Uploads\")}\n                            </InformationTitle>\n                        </InformationContent>\n                        <InformationContent background_color={lightPrimary}>\n                            <InformationValue>\n                                {`${convertBytesIntoPrettyDataAmount(storageAmountInUse).toString()} / \n                                  ${convertBytesIntoPrettyDataAmount(planStorageAmountInUse).toString()}`}\n                            </InformationValue>\n                            <InformationTitle>\n                                <Cloud size={24}/>\n                                {i18next.t(\"Data Storage\")}\n                            </InformationTitle>\n                        </InformationContent>\n                    </Row>\n                </InformationContainer>\n            </Box>\n            {isEditingGroup && (\n                <EditGroupDialog\n                    groupID={props.groupID}\n                    onClose={async () => {\n                        setEditingGroup(false);\n                        updateGroupInformation(await dataSourceGroups.getGroup(props.groupID));\n                    }}\n                />)\n            }\n        </>\n    )\n}", "import React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function Cube(): JSX.Element {\n    return (\n        <SvgIcon xmlns=\"http://www.w3.org/2000/svg\" viewBox={\"0 96 960 960\"}>\n            <path d=\"m180 746 270 156V593L180 437v309Zm330 156 270-156V436L510 593v309ZM213 387l267 155 266-155-266-154-267 154Zm-93 394V406q0-16 8-30t22-22l300-173q14-8 30-8t30 8l300 173q14 8 22 22t8 30v340q0 16-8 30t-22 22L510 971q-14 8-30 8t-30-8L120 781Zm360-205Z\"/>\n        </SvgIcon>\n    );\n}\n", "import React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function HoloGlasses(props: {size: number}): JSX.Element {\n    return (\n        <SvgIcon\n            xmlns=\"http://www.w3.org/2000/svg\"\n            version=\"1.1\"\n            id=\"Layer_1\"\n            xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n            x=\"0px\"\n            y=\"0px\"\n            viewBox={`0 0 ${props.size * 3} ${props.size * 2}`}\n            xmlSpace=\"preserve\"\n        >\n            <style type=\"text/css\">{`\n                .st0{fill:none;}\n            `}\n            </style>\n            <g>\n                <rect className=\"st0\" width=\"64\" height=\"64\"/>\n                    <path d=\"M29.1,39.6c1.9-0.6,3.4-2.1,3.9-4c0.6-2.4,1-5,1-7.6c0-3.4-0.7-6.7-1.9-9.7C28.9,18.1,25.5,18,22,18C9.8,18,0,20.7,0,24\n                            c0,7.6,2.9,14.5,7.5,19.5c0.3,0.3,0.6,0.5,1,0.5c0.6,0,1-0.4,1-1v-1c0-0.6,0.4-1,1-1c1,0,1.9,0.4,2.5,1s1.5,1,2.5,1\n                            c2.2,0,4.4-0.3,6.5-1L29.1,39.6z\"/>\n                    <path d=\"M34.3,18.4c1.1,3.1,1.7,6.3,1.7,9.6c12.9,0,26,2.4,26,7c0,1.8-1.9,3.2-5,4.3c4.3-0.7,7-1.9,7-3.3v-8\n                            C64,23.5,51.5,19.7,34.3,18.4z\"/>\n                    <path d=\"M54.5,32c-6,1.3-12.1,2-18.5,2c-0.2,0-0.4,0-0.6,0c-0.1,0.7-0.3,1.4-0.5,2.1c-0.3,1.3-1,2.4-1.9,3.4\n                            c2.5,0.2,5.2,0.3,7.9,0.4C53.5,39.3,60,36.6,60,35C60,34.2,58.1,33,54.5,32z\"/>\n            </g>\n        </SvgIcon>\n    );\n}\n", "import React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function Download(props: {size: number}): JSX.Element {\n    return (\n        <SvgIcon xmlns=\"http://www.w3.org/2000/svg\" viewBox={`0 0 ${props.size * 2} ${props.size * 2}`}>\n            <path d=\"M11 40q-1.2 0-2.1-.9Q8 38.2 8 37v-7.15h3V37h26v-7.15h3V37q0 1.2-.9 2.1-.9.9-2.1.9Zm13-7.65-9.65-9.65 2.15-2.15 6 6V8h3v18.55l6-6 2.15 2.15Z\"/>\n        </SvgIcon>\n    );\n}\n", "import React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function Upload(props: {size: number}): JSX.Element {\n    return (\n        <SvgIcon xmlns=\"http://www.w3.org/2000/svg\" viewBox={`0 0 ${props.size * 2} ${props.size * 2}`}>\n            <path d=\"M11 40q-1.2 0-2.1-.9Q8 38.2 8 37v-7.15h3V37h26v-7.15h3V37q0 1.2-.9 2.1-.9.9-2.1.9Zm11.5-7.65V13.8l-6 6-2.15-2.15L24 8l9.65 9.65-2.15 2.15-6-6v18.55Z\"/>\n        </SvgIcon>\n    );\n}\n", "import React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function Cloud(props: {size: number}): JSX.Element {\n    return (\n        <SvgIcon xmlns=\"http://www.w3.org/2000/svg\" viewBox={`0 0 ${props.size} ${props.size}`}>\n            <path d=\"M20.16 11.2975C20.3137 10.8962 20.4 10.4575 20.4 10C20.4 8.0125 18.7875 6.4 16.8 6.4C16.0613 6.4 15.3713 6.625 14.8013 7.0075C13.7625 5.2075 11.8238 4 9.6 4C6.285 4 3.6 6.685 3.6 10C3.6 10.1012 3.60375 10.2025 3.6075 10.3037C1.5075 11.0425 0 13.045 0 15.4C0 18.3812 2.41875 20.8 5.4 20.8H19.2C21.8513 20.8 24 18.6512 24 16C24 13.6787 22.35 11.74 20.16 11.2975Z\"/>\n        </SvgIcon>\n    );\n}\n", "import React from \"react\";\nimport {withRouter} from \"react-router-dom\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {PeerItem} from \"./PeerItem/PeerItem\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Group} from \"@backend/Types/Group\";\nimport {Role} from \"@backend/Types/Role\";\nimport i18next from \"i18next\";\nimport {InvitePeerForm} from \"./InvitePeer/InvitePeerForm\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {GroupView} from \"./GroupView\";\nimport {RouteComponentProps} from \"react-router\";\nimport {GroupsList} from \"@root/Frontend/Console/Views/Management/GroupsList/GroupsList\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {ListView} from \"@root/Frontend/Console/components/ListView/ListView\";\nimport {DataSourceGroups} from \"@root/Frontend/DataSources/DataSourceGroups\";\nimport {SearchBar} from \"@root/react-components/src/inputs/SearchBar\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Box, styled} from \"@mui/material\";\nimport {Checkbox} from \"@root/react-components/src/inputs/Checkbox\";\n\nconst HeaderContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    alignItems: \"center\",\n    gap: \"5px\",\n    marginBottom: \"6px\",\n    minHeight: \"29px\",\n    paddingRight: \"5px\"\n});\n\ninterface GroupPeersListState {\n    group: Group | null;\n    peerIDs: bigint[];\n    canEditGroup: boolean;\n    isInvitePeerDialogOpen: boolean;\n    searchStr: string;\n    showArchived: boolean;\n}\nexport class GroupPeersList extends RouterView<RouteComponentProps<{groupID: string}>> {\n    static getLevelForGroupPeersList(groupID: bigint): BreadcrumbsLevel {\n        return {\n            link: Management.BASE_PATH + \"/Groups/\" + groupID + \"/Peers\",\n            getName: async () => i18next.t(\"Users\")\n        }\n    }\n\n    groupID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.groupID);\n    state: GroupPeersListState = {\n        group: null,\n        peerIDs: [],\n        canEditGroup: false,\n        isInvitePeerDialogOpen: false,\n        searchStr: \"\",\n        showArchived: false\n    };\n\n    override getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [\n            GroupsList.getGroupLevel(),\n            GroupView.getLevelForGroup(this.groupID),\n            GroupPeersList.getLevelForGroupPeersList(this.groupID)\n        ];\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        await this.reloadPeersList();\n    }\n\n    async componentDidUpdate(prevProps: Readonly<object>, prevState: Readonly<GroupPeersListState>) {\n        if (prevState.searchStr === this.state.searchStr && prevState.showArchived === this.state.showArchived)\n            return;\n\n        const group: Group = await AppConsole.getInstance().dataSourceGroups.getGroup(this.groupID);\n        const groupPeerIDs: bigint[] = this.getGroupPeerIDs(group);\n        const peerIDs: bigint[] = await this.refinePeerList(groupPeerIDs, group.Experts);\n        this.setState({ peerIDs });\n    }\n\n    private async refinePeerList(peerIDs: bigint[], expertIDs: bigint[]): Promise<bigint[]> {\n        const peerNameByPeerID: Map<bigint, string> = new Map<bigint, string>();\n        // filter archived peer and get fullName for each peer\n        for (const peerID of peerIDs) {\n            const peer: Peer = await AppConsole.getInstance().dataSourcePeers.getPeer(peerID);\n\n            if (!this.state.showArchived && peer.archivedDate)\n                continue;\n\n            if (peer.fullName.toLowerCase().includes(this.state.searchStr.toLowerCase()))\n                peerNameByPeerID.set(peerID, peer.fullName.trim());\n        }\n\n        // sort peers by alphabetical order and experts first\n        const peers: [bigint, string][] = [...peerNameByPeerID.entries()];\n        const peerExperts: Set<bigint> = new Set(expertIDs);\n        peers.sort((peerA: [bigint, string], peerB: [bigint, string]) => {\n            if (peerExperts.has(peerA[0]) && !peerExperts.has(peerB[0]))\n                return -1;\n            else if (!peerExperts.has(peerA[0]) && peerExperts.has(peerB[0]))\n                return 1;\n\n            return peerA[1].localeCompare(peerB[1]);\n        });\n        return peers.map(([id]: [bigint, string]) => id);\n    }\n\n    private async reloadPeersList() {\n        if (!this.groupID)\n            return this.props.history.push(Management.BASE_PATH + \"/Groups\");\n\n        const dataSourceGroups: DataSourceGroups = AppConsole.getInstance().dataSourceGroups;\n        // invalidate group so it gets re-fetched\n        dataSourceGroups.invalidateGroup(this.groupID);\n\n        const group: Group = await dataSourceGroups.getGroup(this.groupID);\n\n        // return to Groups List if group doesn't exist\n        if (!group)\n            return this.props.history.push(Management.BASE_PATH + \"/Groups\");\n\n        const currentPeerID: bigint = AppConsole.getInstance().currentPeerID;\n\n        const groupMembers: bigint[] = this.getGroupPeerIDs(group);\n        const peerIDs: bigint[] = await this.refinePeerList(groupMembers, group.Experts);\n\n        this.setState({\n            group,\n            peerIDs,\n            canEditGroup: group.Peers[currentPeerID.toString()] === Role.EDITOR\n        });\n    }\n\n    private saveNewPeers(newPeerIDs: Set<bigint>) {\n        if (!newPeerIDs.size)\n            return;\n\n        this.setState((prevState: GroupPeersListState) => ({ peerIDs: [...newPeerIDs, ...prevState.peerIDs] }));\n    }\n\n    private canPeerBeRemoved(peerID: bigint): boolean {\n        const currentPeerID: bigint = AppConsole.getInstance().currentPeerID;\n\n        // it is current peer id and current peer id is not the owner\n        if (currentPeerID === peerID && currentPeerID !== this.state.group?.Owner)\n            return true;\n\n        // peerID is the owner, cannot modify anything\n        if (peerID === this.state.group?.Owner)\n            return false;\n\n        return this.state.canEditGroup;\n    }\n\n    async removePeerFromGroup(peerID: bigint): Promise<void> {\n        const currentPeerID: bigint = AppConsole.getInstance().currentPeerID;\n\n        await AppConsole.getInstance().dataSourceGroups.removePeerFromGroup(this.groupID, peerID);\n\n        // redirect to group list after leave group\n        if (peerID === currentPeerID)\n            return this.props.history.push(Management.BASE_PATH + \"/Groups\");\n\n        await this.reloadPeersList();\n    }\n\n    private getGroupPeerIDs(group: Group): bigint[] {\n        const currentPeerID: bigint = AppConsole.getInstance().currentPeerID;\n        const currentRole: Role = group.Peers[currentPeerID.toString()];\n\n        if (currentRole === Role.EDITOR)\n            return Object.keys(group.Peers).map((peerID: string) => UtilsShared.safelyConvertStringToBigInt(peerID));\n        else {\n            const uniqueMembers: Set<bigint> = new Set([currentPeerID, group.Owner, ...group.Experts]);\n            return [...uniqueMembers];\n        }\n    }\n\n    renderPeersList() {\n        return (\n            <ListView\n                emptyListMessage={i18next.t(\"No users to display\")}\n                itemCount={this.state.peerIDs.length}\n            >\n                {(index: number) => {\n                    const peerID: bigint = this.state.peerIDs[index];\n                    return (\n                        <PeerItem\n                            peerID={peerID}\n                            groupID={this.groupID}\n                            showInfo\n                            canBeEdited={this.state.canEditGroup}\n                            onRemove={this.canPeerBeRemoved(peerID) ?\n                                async (): Promise<void> => await this.removePeerFromGroup(peerID) : undefined\n                            }\n                        />\n                    )\n                }}\n            </ListView>\n        );\n    }\n\n    render() {\n        if (!this.state.group)\n            return <CenteredLoading/>\n\n        return <>\n            <HeaderContainer>\n                <Checkbox\n                    style={{paddingTop: \"5px\"}}\n                    label={i18next.t(\"Archived\")}\n                    labelOnTheRight\n                    checked={this.state.showArchived}\n                    onClick={(checked: boolean) => this.setState({ showArchived: !checked })}\n                />\n                <SearchBar\n                    style={{width: \"min(400px, 40%)\", marginLeft: \"8px\"}}\n                    onChange={(searchStr: string) => this.setState({ searchStr })}\n                    placeholder={i18next.t(\"Search\")}\n                />\n                {this.state.canEditGroup &&\n                    <Button\n                        id=\"group-add-peer\"\n                        size=\"small\"\n                        onClick={() => this.setState({ isInvitePeerDialogOpen: true })}\n                    >\n                        {i18next.t(\"Add User\")}\n                    </Button>\n                }\n            </HeaderContainer>\n            <Box style={{height: \"calc(100% - 35px)\"}}>{this.renderPeersList()}</Box>\n            {this.state.isInvitePeerDialogOpen &&\n                <InvitePeerForm\n                    saveNewPeers={(peerIDs: Set<bigint>) => this.saveNewPeers(peerIDs)}\n                    groupID={this.groupID}\n                    onClose={() => this.setState({ isInvitePeerDialogOpen : false })}\n                />\n            }\n        </>\n    }\n}\n\nexport const GroupPeersListWithRouter = withRouter(GroupPeersList);\n", "import {withRouter} from \"react-router-dom\";\nimport React from \"react\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {RouteComponentProps} from \"react-router\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport styled from \"styled-components\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {PeersList} from \"@root/Frontend/Console/Views/Management/PeersList/PeersList\";\nimport i18next from \"i18next\";\nimport { primaryFontXLarge } from \"@root/react-components/src/values/fonts/fonts\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {ProfileCard} from \"@root/Frontend/Console/Views/Management/Peer/Profile/ProfileCard\";\nimport {GroupCard} from \"@root/Frontend/Console/Views/Management/Peer/GroupCard\";\nimport {Box, Breakpoint} from \"@mui/material\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {LatestSequenceTable} from \"./LatestSequenceTable\";\nimport {WorldCard} from \"@root/Frontend/Console/Views/Management/Peer/WorldCard\";\n\nconst PEER_CARDS_GAP: Map<Breakpoint, string> = new Map<Breakpoint, string>([\n    [\"sm\", \"16px\"],\n    [\"md\", \"24px\"],\n    [\"lg\", \"36px\"],\n    [\"xl\", \"44px\"],\n])\n\nconst PeerViewContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    flex: \"1\",\n    gap: PEER_CARDS_GAP.get(\"sm\"),\n    paddingTop: \"24px\",\n    paddingBottom: \"24px\",\n    [theme.breakpoints.up('md')]: {\n        gap: PEER_CARDS_GAP.get(\"md\")\n    },\n    [theme.breakpoints.up('lg')]: {\n        gap: PEER_CARDS_GAP.get(\"lg\")\n    },\n    [theme.breakpoints.up('xl')]: {\n        gap: PEER_CARDS_GAP.get(\"xl\")\n    }\n})\n\nconst FirstRow = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: PEER_CARDS_GAP.get(\"sm\"),\n    [theme.breakpoints.up('md')]: {\n        gap: PEER_CARDS_GAP.get(\"md\"),\n        flexDirection: \"row\",\n    },\n    [theme.breakpoints.up('lg')]: {\n        gap: PEER_CARDS_GAP.get(\"lg\"),\n        flexDirection: \"row\",\n    },\n    [theme.breakpoints.up('xl')]: {\n        gap: PEER_CARDS_GAP.get(\"xl\"),\n        flexDirection: \"row\",\n    }\n})\n\nconst LeftSection = styled(Box)({\n    display: \"flex\",\n    flex: 1\n})\n\nconst RightSection = styled(Box)({\n    display: \"flex\",\n    flex: \"1\",\n    flexDirection: \"column\",\n    gap: PEER_CARDS_GAP.get(\"sm\"),\n    [theme.breakpoints.up('md')]: {\n        gap: PEER_CARDS_GAP.get(\"md\")\n    },\n    [theme.breakpoints.up('lg')]: {\n        gap: PEER_CARDS_GAP.get(\"lg\")\n    },\n})\n\ninterface PeerViewState {\n    peer: Peer | null,\n}\n\nexport class PeerView extends RouterView<RouteComponentProps<{peerID: string}>> {\n\n    private readonly app: AppConsole = AppConsole.getInstance();\n    static getLevelForPeer(peerID: bigint, fullName: string = \"\"): BreadcrumbsLevel {\n\n        return {\n            link: Management.BASE_PATH + \"/Peer/\" + peerID,\n            getName: async () => {\n                if (!fullName) {\n                    const peer: Peer = await AppConsole.getInstance().dataSourcePeers.getPeer(peerID);\n                    return peer ? peer.fullName : peerID.toString();\n                }\n                return fullName;\n            }\n        };\n    }\n\n    state: PeerViewState = {\n        peer: null,\n    };\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        const peer: Peer = await this.app.dataSourcePeers.getPeer(\n            UtilsShared.safelyConvertStringToBigInt(this.props.match.params.peerID)\n        );\n        this.setState({ peer });\n    }\n\n    override getBreadcrumbsLevels(fullName: string = \"\"): BreadcrumbsLevel[] {\n        return [ PeersList.getPeerLevel(), PeerView.getLevelForPeer(\n            UtilsShared.safelyConvertStringToBigInt(this.props.match.params.peerID), fullName\n        ) ];\n    }\n\n    private async renamePeer (newFullName: string): Promise<boolean> {\n        if (!newFullName || !this.state.peer || !this.state.peer.ID)\n            return false;\n\n        if(!await this.app.dataSourcePeers.renamePeer(this.state.peer.ID, newFullName))\n            return false;\n\n        this.setState({ peer: { ...this.state.peer, fullName: newFullName }});\n        this.props.viewDidMount?.(this.getBreadcrumbsLevels(newFullName));\n        return true;\n    }\n\n    render(){\n        if(this.state.peer === null)\n            return <CenteredLoading />\n\n        if(this.state.peer === DataSourcePeers.PEER_ERROR)\n            return (\n                <Box sx={{ display:\"flex\", justifyContent: \"center\", paddingTop:\"10%\", font: primaryFontXLarge }}>\n                    {i18next.t(\"Sorry, we can't find the user\")}\n                </Box>\n            )\n\n        return (\n            <PeerViewContainer>\n                <FirstRow>\n                    <LeftSection>\n                        <ProfileCard\n                            renamePeer={(newFullName: string) => this.renamePeer(newFullName)}\n                            peer={this.state.peer}\n                            peerID={ UtilsShared.safelyConvertStringToBigInt(this.props.match.params.peerID) }/>\n                    </LeftSection>\n                    <RightSection>\n                        <GroupCard peer={this.state.peer} />\n                        <WorldCard peer={this.state.peer} />\n                    </RightSection>\n                </FirstRow>\n                <LatestSequenceTable peer={this.state.peer} />\n            </PeerViewContainer>\n        )\n    }\n}\n\nexport const PeerViewWithRouter = withRouter(PeerView);\n", "import React from \"react\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport styled from \"styled-components\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {darkenWhite, lightWhite, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport i18next from \"i18next\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {primaryFontLarge, primaryFontXLarge, secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {convertBytesIntoPrettyDataAmount, timestampToString} from \"@utils/utils\";\nimport {Plan} from \"@backend/Types/Plan\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {ProfileSection, ProfileSectionField} from \"@root/Frontend/Console/Views/Management/Peer/Profile/ProfileSection\";\nimport {Box} from \"@mui/material\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {isEqual} from \"lodash\";\nimport {getUrlAPI} from \"@root/Frontend/Studio/Engine/utils\";\nimport EditPeerFullNameDialog from \"@root/Frontend/Console/Views/Management/PeersList/EditPeerFullName\";\nimport {RegionAWS} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {SelectRegion} from \"@root/react-components/src/inputs/SelectRegion\";\nimport {DialogChangeRegion} from \"@root/Frontend/Console/Views/Management/DialogChangeRegion\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\n\nconst ProfileContainer = styled.div`\n    border-radius: 24px;\n    background: linear-gradient(0deg, ${darkenWhite}, ${primary} 50%);\n    flex: 1;\n    height: fit-content;\n`\n\nconst Header = styled.div`\n    font: ${primaryFontXLarge};\n    padding: 12px 18px 12px;\n    color: ${white};\n    display: flex;\n    justify-content: space-between;\n    & a {\n        text-decoration: none;\n    }\n`;\n\nconst InformationContainer = styled.div`\n    display: flex;\n    flex-direction: column;\n    gap: 15px;\n    flex: 1;\n    padding: 10px;\n    justify-content: center;\n    align-items: center;\n    border-radius: 24px;\n    background-color: ${lightWhite}\n    border: 1px solid ${darkenWhite}\n`\n\n\nconst AvatarImgContainer = styled.div`\n    border: 2px solid ${primary};\n    border-radius: 50%;\n    display: flex;\n    margin: 30px;\n    overflow: hidden;\n    padding: 2px;  \n    &:hover { cursor: pointer; }\n`\n\nconst AvatarImg = styled.img`\n    max-width: 125px;\n    max-height: 125px;\n    border-radius: 50%;\n`\n\nconst CloseIconContainer = styled.div`\n    width: 16px; \n    &:hover { cursor: pointer; }\n`\n\nconst RegionSection = styled.div`\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n    box-sizing: border-box;\n    padding: 0 5% 15px;\n`\n\nconst LabelWithTooltip = styled.div`\n    display: flex;\n    align-items: center;\n`\n\nconst RegionLabel = styled.div`\n    font: ${secondaryFontLarge};\n    color: ${primary};\n`\n\nexport enum DialogType {\n    CLOSED,\n    ARCHIVE_PEER,\n    AVATAR_IMG,\n    RENAME_PEER,\n    CHANGE_REGION,\n}\n\ninterface ProfileCardProps {\n    peerID: bigint,\n    peer: Peer,\n    renamePeer: (newName: string) => Promise<boolean>\n}\n\ninterface ProfileCardState {\n    inputDelete: string;\n    plan: Plan | null;\n    canEditProfile: boolean;\n    availableBuckets: Map<string, RegionAWS>;\n    peerRegion: RegionAWS | null;\n    pendingBucket: string;\n    dialogType: DialogType;\n}\n\nexport class ProfileCard extends React.Component<ProfileCardProps, ProfileCardState> {\n    private app: AppConsole = AppConsole.getInstance();\n\n    state: ProfileCardState = {\n        inputDelete: \"\",\n        plan: null,\n        canEditProfile: false,\n        availableBuckets: new Map(),\n        peerRegion: this.props.peer.region, // TODO(@frank): Duplication, Peer shouldn't be passed by props but fetched!\n        pendingBucket: \"\",\n        dialogType: DialogType.CLOSED\n    };\n\n    override async componentDidMount() {\n        const plan: Plan = await this.app.dataSourcePlans.getPlan(this.props.peer.plan);\n        const [_, domain]: string[] = this.props.peer.username.split(\"@\");\n        const currentPeer: Peer = await this.app.dataSourcePeers.getPeer(this.app.currentPeerID);\n        const availableBuckets: Map<string, RegionAWS> = await this.app.dataSourceStorage.getAvailableBucketsRegions();\n        const canEditProfile: boolean = Boolean(this.app.currentPeerID === this.props.peerID ||\n            currentPeer?.domainsManaged?.includes(domain));\n\n        this.setState({ plan, canEditProfile, availableBuckets });\n    }\n\n    private getPeerInformation(): Map<ProfileSectionField, string> {\n        if(!this.props.peer || this.props.peer === DataSourcePeers.PEER_ERROR)\n            return new Map();\n\n        const timestamp: bigint = UtilsShared.getTimestampOfRandomID(this.props.peerID);\n        const memberSince: string = timestamp && timestamp > BigInt(new Date(\"2020-01-01\").getTime() / 1000)\n            ? timestampToString(timestamp) : \"-\";\n        return new Map<ProfileSectionField, string>([\n            [ProfileSectionField.NAME,         this.props.peer.fullName ?? \"\"],\n            [ProfileSectionField.EMAIL,        this.props.peer.email ?? \"\"],\n            [ProfileSectionField.USERNAME,     this.props.peer.username ?? \"\"],\n            [ProfileSectionField.ID,           this.props.peerID.toString()],\n            [ProfileSectionField.MEMBER_SINCE, memberSince],\n            [ProfileSectionField.VERIFIED,     this.props.peer.verified === \"1\" ? i18next.t(\"Yes\") : i18next.t(\"No\")]\n        ]);\n    }\n\n    private getSignInSection(logins?: {[addressIP: string]: bigint[]}): Map<ProfileSectionField, string> {\n        const signInMap: Map<ProfileSectionField, string> = new Map([\n            [ProfileSectionField.LAST_SIGN_IN_IP, i18next.t(\"Never been connected\")],\n            [ProfileSectionField.LAST_SIGN_IN_AT, i18next.t(\"Never been connected\")]\n        ]);\n\n        if(!logins || Object.keys(logins).length === 0)\n            return signInMap;\n\n        // The timestamp array is sorted in ascending order, find the highest!\n        let highestTime: bigint = BigInt(0);\n        for(const ip of Object.keys(logins)) {\n            const timestamp: bigint = logins[ip][logins[ip].length - 1];\n\n            if(timestamp > highestTime) {\n                signInMap.set(ProfileSectionField.LAST_SIGN_IN_IP, ip);\n                highestTime = timestamp;\n            }\n        }\n\n        signInMap.set(ProfileSectionField.LAST_SIGN_IN_AT, timestampToString(highestTime));\n\n        return signInMap;\n    }\n\n    private getPlanSection(): Map<ProfileSectionField, string> {\n        if(!this.props.peer || this.props.peer === DataSourcePeers.PEER_ERROR || this.state.plan === null)\n            return new Map();\n\n        const plan: string = i18next.t(this.state.plan.title) ?? \"-\";\n\n        const planStartSince: string = this.props.peer.timeStart ?\n            timestampToString(BigInt(this.props.peer.timeStart) / BigInt(1000)) : \"-\";\n\n        const worlds: string = this.props.peer.worlds && this.state.plan.worlds ?\n            `${this.props.peer.worlds.length} / ${this.state.plan.worlds}` : \"-\";\n\n        const storage: string = this.props.peer.storage && this.state.plan.storage ?\n            convertBytesIntoPrettyDataAmount(this.props.peer.storage) + \" / \" +\n            convertBytesIntoPrettyDataAmount(this.state.plan.storage) : \"-\";\n\n        return new Map<ProfileSectionField, string>([\n            [ProfileSectionField.PLAN,             plan],\n            [ProfileSectionField.PLAN_START_SINCE, planStartSince],\n            [ProfileSectionField.WORLDS,           worlds],\n            [ProfileSectionField.STORAGE,          storage]\n        ]);\n    }\n\n    private handleBucketChange(bucket: string) {\n        const region: RegionAWS | null = this.state.availableBuckets.get(bucket) ?? null;\n        if (region !== this.state.peerRegion)\n            this.setState({ pendingBucket: bucket, dialogType: DialogType.CHANGE_REGION });\n    }\n\n    private async deleteUser() {\n        if (!await this.app.dataSourcePeers.deletePeer(this.props.peerID))\n            return;\n\n        // clean up token and datasource\n        window.history.pushState({}, '', `${getUrlAPI()}/Console`);\n        await AppConsole.getInstance().updateToken(\"\");\n    }\n\n    private renderDialog(dialogType: DialogType):JSX.Element|null{\n\n        switch (dialogType) {\n            case DialogType.AVATAR_IMG:\n                return (\n                    <Dialog closeOnClickOutside>\n                        <div style={{display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\"}}>\n                            <div style={{font: primaryFontLarge}}>{i18next.t(\"Profile picture\")}</div>\n                            <CloseIconContainer onClick={() => this.setState({dialogType: DialogType.CLOSED})}>\n                                <Close/>\n                            </CloseIconContainer>\n                        </div>\n                        <div style={{padding: \"12px\"}}>\n                            <img\n                                alt=\"User profile image\"\n                                crossOrigin=\"anonymous\"\n                                src={`https://secure.gravatar.com/avatar/${\n                                    UtilsShared.md5(this.props.peer.username)}?s=150&d=identicon`}\n                            />\n                        </div>\n                    </Dialog>\n                );\n\n            case DialogType.RENAME_PEER:\n                return (\n                    <EditPeerFullNameDialog\n                        fullName={this.props.peer.fullName ?? \"\"}\n                        renamePeer={this.props.renamePeer}\n                        onClose={() => this.setState({dialogType: DialogType.CLOSED})}\n                    />\n                );\n\n            case DialogType.ARCHIVE_PEER:\n                return (\n                    <Dialog size={DialogSize.xs} onClose={()=> this.setState({dialogType: DialogType.CLOSED})} closeOnClickOutside>\n                        <Box style={{font: primaryFontXLarge}}> {`${i18next.t(\"Warning\")} !`} </Box>\n                        <Box style={{width: \"400px\", padding: \"6px 0px\"}}>\n                            {i18next.t(\"You are about to archive your account, \" +\n                                \"which will be permanently deleted after 30 days\")}.\n                        </Box>\n                        <Box style={{width: \"fit-content\", paddingBottom: \"12px\"}}>\n                            <Box>{i18next.t(\"Confirm by typing\")}&nbsp;\n                                <span style={{font: primaryFontLarge, fontWeight: 700, userSelect: \"all\"}}>\n                                {i18next.t(\"your username\")}\n                                </span>\n                            </Box>\n                            <InputText\n                                id=\"delete-peer-input\"\n                                dark\n                                value={this.state.inputDelete}\n                                onChange={(inputDelete: string) => this.setState({inputDelete})}\n                            />\n                        </Box>\n                        <Box style={{display: \"flex\", justifyContent: \"flex-end\", gap: \"6px\"}}>\n                            <Button variant=\"outlined\" onClick={()=> this.setState({dialogType: DialogType.CLOSED})}>\n                                {i18next.t(\"Cancel\")}\n                            </Button>\n                            <Button\n                                id=\"confirm-action-delete-btn\"\n                                color={\"error\"}\n                                disabled={!isEqual(this.state.inputDelete, this.props.peer.username)}\n                                onClick={() => this.deleteUser()}\n                            >\n                                {i18next.t(\"Delete\")}\n                            </Button>\n                        </Box>\n                    </Dialog>\n                );\n            case DialogType.CHANGE_REGION: {\n                const pendingRegion: RegionAWS|null = this.state.availableBuckets.get(this.state.pendingBucket) ?? null;\n                return this.state.pendingBucket && pendingRegion ?\n                    <DialogChangeRegion\n                        ownerType={OwnerType.PEER}\n                        ownerID={this.props.peerID}\n                        bucket={this.state.pendingBucket}\n                        region={pendingRegion}\n                        onClose={(success: boolean) => this.setState({\n                            peerRegion: success ? pendingRegion : null,\n                            pendingBucket: \"\",\n                            dialogType: DialogType.CLOSED\n                        })}\n                    /> : null;\n            }\n            default:\n                return null;\n        }\n    }\n\n    render(){\n        if (this.state.plan === null)\n            return <CenteredLoading />\n\n        return (\n            <>\n                <ProfileContainer id=\"peer-profile-section-profile\">\n                    <Header>\n                        {i18next.t(\"Profile\")}\n                    </Header>\n                    <InformationContainer>\n                        <AvatarImgContainer onClick={() => this.setState({ dialogType: DialogType.AVATAR_IMG })}>\n                            <AvatarImg\n                                alt=\"User profile image\"\n                                crossOrigin=\"anonymous\"\n                                src={`https://secure.gravatar.com/avatar/${\n                                    UtilsShared.md5(this.props.peer.username)}?s=150&d=identicon`}\n                            />\n                        </AvatarImgContainer>\n                        <ProfileSection\n                            title={i18next.t(\"Information\")}\n                            sectionFieldMap={this.getPeerInformation()}\n                            canEditProfile={this.state.canEditProfile}\n                            openRenamePeerDialog={() => this.setState({ dialogType: DialogType.RENAME_PEER })}\n                        />\n                        <RegionSection>\n                            <LabelWithTooltip>\n                                <RegionLabel>{i18next.t(\"Region\")}</RegionLabel>\n                                <Tooltip title={i18next.t(SelectRegion.EXPLANATION)} size=\"small\" placement=\"right\">\n                                    <InfoIcon style={{cursor: \"pointer\", backgroundColor: primary}}><Info/></InfoIcon>\n                                </Tooltip>\n                            </LabelWithTooltip>\n                            <SelectRegion\n                                region={this.state.peerRegion}\n                                disabled={this.state.peerRegion !== null}\n                                options={this.state.availableBuckets}\n                                onChange={(bucket: string) => this.handleBucketChange(bucket)}\n                            />\n                        </RegionSection>\n                        <ProfileSection\n                            title={i18next.t(\"Sign-in\")}\n                            sectionFieldMap={this.getSignInSection(this.props.peer.logins)} />\n                        <ProfileSection title={i18next.t(\"Plan\")} sectionFieldMap={this.getPlanSection()} />\n                        {this.props.peerID === this.app.currentPeerID &&\n                            <Box style={{ paddingBottom: \"12px\"}}>\n                                <Button color=\"error\" onClick={() => this.setState({ dialogType: DialogType.ARCHIVE_PEER })}>\n                                    {i18next.t(\"Delete\")}\n                                </Button>\n                            </Box>\n                        }\n                    </InformationContainer>\n                </ProfileContainer>\n                {this.renderDialog(this.state.dialogType)}\n            </>\n        )\n    }\n}\n", "import React from \"react\"\nimport styled from \"styled-components\";\nimport { primaryFontLarge, secondaryFontLarge } from \"@root/react-components/src/values/fonts/fonts\";\nimport { primary } from \"@root/react-components/src/values/colors/colors\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {Box} from \"@mui/material\";\nimport {Rename} from \"@root/react-components/src/icons/Rename\";\n\nconst Container = styled.div`\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n`\n\nconst TitleContainer = styled.div`\n    display: flex;\n    align-items: center;\n`\n\nconst Divider = styled.div`\n    flex: 1;\n    border-top: solid 1px ${primary};\n    margin: 0px 10px;\n`\n\nconst Title = styled.div`\n    font: ${primaryFontLarge};\n    color: ${primary};\n`\n\nconst InformationContainer = styled.div`\n    display: inline-grid;\n    width: 100%;\n    grid-template-columns: 1fr 1fr;\n    justify-content: center;\n    gap: 32px;\n    box-sizing: border-box;\n    padding: 30px 5% 15px;\n`\n\nconst InformationTitleStyle = styled.div`\n    font: ${secondaryFontLarge};\n    color: ${primary};\n    padding-bottom: 5px;\n    word-break: break-word;\n`\n\nconst InformationValue = styled.div`\n    font: ${primaryFontLarge};\n    word-break: break-word;\n`\n\nconst WrapperRenameIcon = styled.div`\n    visibility: hidden;\n    display: inline-flex;\n    align-items: center;\n    width: 10px;\n    height: 10px;\n    margin-left: 5px;\n    & svg {\n        width: 100%;\n        height: 100%;\n    }\n`\n\nconst HoverableValue = styled.div`\n    display: inline-flex;\n    align-items: center;\n    cursor: pointer;\n    &:hover ${WrapperRenameIcon} {\n        visibility: visible;\n    }\n`\n\nexport enum ProfileSectionField {\n    NAME             = \"Name\",\n    EMAIL            = \"Email\",\n    USERNAME         = \"Username\",\n    ID               = \"ID\",\n    MEMBER_SINCE     = \"Member since\",\n    VERIFIED         = \"Verified\",\n    LAST_SIGN_IN_IP  = \"Last sign-in IP\",\n    LAST_SIGN_IN_AT  = \"Last sign-in at\",\n    PLAN             = \"Plan\",\n    PLAN_START_SINCE = \"Plan start since\",\n    WORLDS           = \"Worlds\",\n    STORAGE          = \"Storage\"\n}\n\ninterface ProfileSectionProps {\n    sectionFieldMap?: Map<ProfileSectionField, string>;\n    title: string;\n    canEditProfile?: boolean;\n    openRenamePeerDialog?: () => void;\n}\n\nexport function ProfileSection(props: ProfileSectionProps) {\n\n    return (props.sectionFieldMap?.size ?\n        <>\n            <Container id=\"peer-profile-section-profile\">\n                <TitleContainer>\n                    <Divider />\n                    <Title>{props.title}</Title>\n                    <Divider />\n                </TitleContainer>\n                {props.sectionFieldMap ?\n                    <InformationContainer id={`peer-profile-section-${props.title}`}>\n                        {Array.from(props.sectionFieldMap.entries()).map(([title, value]) =>\n                            <Box key={title}>\n                                <InformationTitleStyle>{title}</InformationTitleStyle>\n                                <InformationValue id={`${title.toLowerCase()}-value`}>\n                                    {props.canEditProfile && title === ProfileSectionField.NAME ?\n                                        <HoverableValue onClick={props.openRenamePeerDialog}>\n                                            {value}\n                                            <WrapperRenameIcon>\n                                                <Rename />\n                                            </WrapperRenameIcon>\n                                        </HoverableValue>\n                                        : value\n                                    }\n                                </InformationValue>\n                            </Box>\n                        )}\n                    </InformationContainer>\n                    :\n                    <Box sx={{ display:\"flex\", marginTop: \"30px\" }}><CenteredLoading /></Box>\n                }\n            </Container>\n        </> :\n        null\n    );\n}\n", "import React, {useEffect, useState} from \"react\"\nimport {Role} from \"@backend/Types/Role\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport i18next from \"i18next\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {Group} from \"@backend/Types/Group\";\nimport {Box} from \"@mui/material\";\nimport {CardListItem} from \"@root/Frontend/Console/components/CardListRow\";\nimport {CardList} from \"@root/Frontend/Console/components/CardList\";\n\nexport function GroupCard(props: {peer: Peer}) {\n    const [groups, setGroups] = useState<Set<CardListItem>>(null);\n\n    useEffect(() => {\n        getPeerGroups(props.peer.group ?? {}).then(result => setGroups(result));\n    }, [props.peer])\n\n    async function getPeerGroups(groups: { [groupID: string]: Role }): Promise<Set<CardListItem>> {\n        const peerGroups: Set<CardListItem> = new Set<CardListItem>();\n\n        if(!groups)\n            return peerGroups;\n\n        for (const [groupID, role] of Object.entries(groups)) {\n            const group: Group = await AppConsole.getInstance().dataSourceGroups.getGroup(\n                UtilsShared.safelyConvertStringToBigInt(groupID)\n            );\n            const thumbnail: string = `https://secure.gravatar.com/avatar/${groupID.toString()}?s=150&d=identicon`;\n\n            peerGroups.add({\n                title: group.Name,\n                subtitle: i18next.t(role),\n                thumbnail: thumbnail,\n                link: Management.BASE_PATH + \"/Groups/\" + groupID\n            });\n        }\n\n        return peerGroups;\n    }\n\n    if(groups == null)\n        return <CenteredLoading />\n\n    return <Box id=\"peer-profile-section-groups\" flex={1} maxHeight=\"436px\">\n        <CardList title={i18next.t(\"Groups\")} listItems={Array.from(groups)} />\n    </Box>\n}\n", "import React from \"react\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {\n    darkenWhite,\n    lighterDark,\n    lightGrey,\n    lightWhite,\n    primary,\n    white\n} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {FixedSizeList} from \"react-window\";\nimport AutoSizer from \"react-virtualized-auto-sizer\";\nimport {CardListItem, CardListRow} from \"@root/Frontend/Console/components/CardListRow\";\nimport {Box, styled} from \"@mui/material\";\n\nconst Container = styled(Box)((props: { background_color: string, items_count: number, max_height: string }) => ({\n    display: \"flex\",\n    flexDirection: \"column\",\n    borderRadius: \"24px\",\n    background: props.background_color ? props.background_color : primary,\n    height: `calc(80px * ${props.items_count === 0 ? 1 : props.items_count} + 83px)`,\n    maxHeight: props.max_height\n}));\n\nconst Header = styled(Box)({\n    font: primaryFontLarge,\n    padding: \"12px 18px 12px\",\n    color: white,\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    \"& a\": {\n        textDecoration: \"none\"\n    }\n});\n\nconst Wrapper = styled(Box)({\n    display: \"flex\",\n    flex: \"1\",\n    position: \"relative\",\n    backgroundColor: lightWhite,\n    padding: \"12px\",\n    borderRadius: \"24px\",\n    border: `1px solid ${darkenWhite}`,\n    color: lighterDark,\n    \"& div::-webkit-scrollbar\": {\n        width: \"8px\",\n        backgroundColor: lightWhite\n    },\n    \"& div::-webkit-scrollbar-thumb\": {\n        borderRadius: \"10px\",\n        backgroundColor: lightGrey\n    }\n});\n\nconst EmptyMostActive = styled(Box)({\n    font: primaryFontLarge,\n    textAlign: \"center\",\n    flex: 1,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n\n});\n\nexport class CardList extends React.Component {\n    props: {\n        title: string\n        listItems: CardListItem[] | null,\n        roundedAvatar?: boolean,\n        headerBackgroundColor?: string,\n        maxHeight?: string,\n    }\n\n    render(){\n        return (\n            <Container\n                max_height={this.props.maxHeight ?? \"100%\"}\n                background_color={this.props.headerBackgroundColor ?? \"\"}\n                items_count={this.props.listItems?.length ?? 0}>\n                <Header>\n                    <div>{this.props.title}</div>\n                </Header>\n                <Wrapper>\n                    {Boolean(this.props.listItems) ?\n                        <AutoSizer>\n                            {(props: {height: number, width: number}) => (\n                                <FixedSizeList\n                                    height={props.height + 2}\n                                    width={props.width}\n                                    itemSize={80}\n                                    itemCount={this.props.listItems?.length ?? 0}\n                                >\n                                    {({index, style}) => {\n                                        const row: CardListItem | undefined = this.props.listItems?.[index];\n\n                                        if (!row)\n                                            return <></>;\n\n                                        return (\n                                            <Box style={{ ...style, display: \"flex\", flexDirection: \"column\"}}>\n                                                <CardListRow\n                                                    index={index}\n                                                    roundedAvatar={this.props.roundedAvatar ?? false}\n                                                    row={row}\n                                                />\n                                                {index !== (this.props.listItems?.length ?? 0) - 1 &&\n                                                    <Box style={{\n                                                            borderBottom: `1px solid ${darkenWhite}`,\n                                                            margin:\"0px 10px\",\n                                                            height: \"1px\",\n                                                        }}\n                                                    />\n                                                }\n                                            </Box>\n                                        )\n                                    }}\n                                </FixedSizeList>\n                            )}\n                        </AutoSizer>\n                        :\n                        <>\n                            {this.props.listItems?.length === 0 ?\n                                <EmptyMostActive>{i18next.t(\"No data to display\")}</EmptyMostActive>\n                                :\n                                <CenteredLoading />\n                            }\n                        </>\n                    }\n                </Wrapper>\n            </Container>\n        )\n    }\n}", "import React, {ReactElement} from \"react\";\nimport {NavLink} from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Box} from \"@mui/material\";\n\nconst ListItemContainer = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    flex: 1,\n    alignItems: \"center\"\n})\n\nconst AvatarImage = styled.img<{\n    roundedAvatar: boolean\n}>`\n    height: 50px;\n    width: 50px;\n    object-fit: cover;\n    border-radius: ${props => props.roundedAvatar ? \"50%\" : \"6px\"};\n    margin-right: 8px;\n`;\n\nconst ListItemStyle = styled.div`\n    display: flex;\n    padding: 0px 8px;  \n`\n\nconst TitlesContainer = styled.div`\n    color: ${dark};\n    display: grid;\n    grid-template-rows: 23px;\n    align-content: center;\n`\n\nconst Title = styled.div`\n    font: ${primaryFontLarge};\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    overflow: hidden;\n`\n\nconst Subtitle = styled.div`\n    font: ${secondaryFontMedium};\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    overflow: hidden;\n`\n\nexport type CardListItem = {\n    title: string | ReactElement,\n    subtitle: string | ReactElement,\n    thumbnail?: string,\n    link?: string\n}\n\nexport class CardListRow extends React.Component {\n    props: {\n        index: number,\n        roundedAvatar: boolean,\n        row: CardListItem\n    };\n\n    private mostActiveRow(): ReactElement {\n        return <ListItemStyle>\n            {this.props.row.thumbnail &&\n                <AvatarImage roundedAvatar={this.props.roundedAvatar}\n                             alt=\"avatar\"\n                             crossOrigin=\"anonymous\"\n                             src={this.props.row.thumbnail} />\n            }\n            <TitlesContainer>\n                <Title>{this.props.row.title}</Title>\n                <Subtitle>{this.props.row.subtitle}</Subtitle>\n            </TitlesContainer>\n        </ListItemStyle>\n    }\n\n    render() {\n        return (\n            <ListItemContainer key={\"most-active-item-\" + this.props.index}>\n                {this.props.row.link ?\n                    <NavLink to={this.props.row.link} style={{ textDecoration: \"none\" }}>\n                        {this.mostActiveRow()}\n                    </NavLink>\n                    :\n                    this.mostActiveRow()\n            }</ListItemContainer>\n\n        )\n    }\n}\n", "import React, {useEffect, useState} from \"react\";\nimport styled from \"styled-components\";\nimport {darkenWhite, lightWhite, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {World} from \"@backend/Types/World\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {DataSourceWorlds} from \"@root/Frontend/DataSources/DataSourceWorlds\";\nimport {DataSourceAttemptLogs} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport {Box, Pagination, TableContainer} from \"@mui/material\";\nimport {SearchBar} from \"@root/react-components/src/inputs/SearchBar\";\nimport {LatestSequenceRow} from \"./LatestSequenceRow\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {UtilsStats} from \"@backend/Utils/UtilsStats\";\nimport {parseAttemptsByFilters} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport {FILTER_OS_LIST, FiltersInterface, FiltersRow} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {timestampToString} from \"@utils/utils\";\nimport {canPeerEditWorld} from \"@root/Frontend/Console/utils/UtilsWorlds\";\n\nconst LastSequenceTableContainer = styled(Box)({\n    backgroundColor: lightWhite,\n    borderRadius: \"24px\",\n    background: `linear-gradient(0deg, ${darkenWhite}, ${primary} 50%)`,\n})\n\nconst NoDisplayData = styled(Box)({\n    font: primaryFontLarge,\n    padding: \"20px\",\n    display: \"grid\",\n    justifyContent: \"center\",\n})\n\nconst TitleContainer = styled(Box)({\n    padding: \"12px 18px 12px\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n})\n\nconst ScrollingContainer = styled(Box)({\n    overflowX: \"auto\",\n    overflowY: \"hidden\",\n})\n\nconst TableTitle = styled(Box)({\n    font: primaryFontXLarge,\n    color: white,\n    flex: 1,\n})\n\nconst PaginationContainer = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    paddingTop: \"16px\"\n})\n\nexport interface RowSequence {\n    worldID: bigint,\n    worldTitle: string,\n    sequenceID: bigint,\n    sequenceTitle: string,\n    version: string,\n    attemptIDs: bigint[],\n}\n\nexport function LatestSequenceTable(props: {peer: Peer}) {\n    const NUMBER_OF_ROW_BY_PAGE = 5;\n    const [rowSequences, setRowSequences] = useState<RowSequence[]>([]);\n    const [searchStr, setSearchStr] = useState<string>(\"\");\n    const [page, setPage] = useState<number>(1);\n    const [filters, setFilters] = useState<FiltersInterface>({ filterOS: FILTER_OS_LIST });\n    const [displayedRowGraph, setDisplayedRowGraph] = useState<{sequenceID: bigint, worldID: bigint}>({\n        sequenceID: BigInt(0),\n        worldID: BigInt(0)\n    });\n\n    const filteredData: RowSequence[] = filterRowSequences();\n\n    useEffect(() => {\n        getLatestSequences().then((result: RowSequence[]) => setRowSequences(result));\n    }, [props.peer, filters])\n\n    useEffect(() => {\n        if(filteredData && page * NUMBER_OF_ROW_BY_PAGE > filteredData.length) {\n            const newPage: number = filteredData.length / NUMBER_OF_ROW_BY_PAGE;\n            setPage(newPage == 0 ? 1 : Math.ceil(newPage));\n        }\n    }, [filteredData]);\n\n\n    function filterRowSequences(): RowSequence[] {\n        if(!rowSequences)\n            return [];\n\n        return searchStr\n            ? rowSequences.filter((row: RowSequence) =>\n                row.sequenceTitle.toLowerCase().includes(searchStr.toLowerCase()) ||\n                row.worldTitle.toLowerCase().includes(searchStr.toLowerCase()))\n            : rowSequences;\n    }\n\n    async function getLatestSequences(): Promise<RowSequence[]> {\n        const allPeerLatestSequence: RowSequence[] = await getPeerFilteredSequences();\n\n        return allPeerLatestSequence.sort((sequence1: RowSequence, sequence2: RowSequence) =>\n            Number(UtilsShared.getTimestampOfRandomID(sequence2.attemptIDs.at(-1))) -\n            Number(UtilsShared.getTimestampOfRandomID(sequence1.attemptIDs.at(-1))));\n    }\n\n    // Get all peer attempts and parse them into lastestSequence\n    async function getPeerFilteredSequences(): Promise<RowSequence[]> {\n        const dataSourceWorlds: DataSourceWorlds = AppConsole.getInstance().dataSourceWorlds;\n        const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n        const latestAttempts: RowSequence[] = [];\n\n        // fetch worlds ID from peer's groups\n        const peerGroupsWorldsIDs: Set<bigint> =\n            await AppConsole.getInstance().dataSourcePeers.getPeerGroupsWorlds(props.peer.ID);\n        const worldIDs: bigint[] = [...props.peer.worlds ?? [], ...peerGroupsWorldsIDs];\n\n        for (const worldID of worldIDs) {\n            const world: World = await dataSourceWorlds.getWorld(worldID);\n\n            for (const sequenceID of world?.Sequences?.value ?? []) {\n                if(latestAttempts.some((row: RowSequence) => row.sequenceID === sequenceID))\n                     continue;\n\n                const attemptLogs: AttemptLogs[] = await dataSourceAttemptLogs.getAllAttemptLogs(worldID,\n                                                                                                 sequenceID);\n                const filteredAttemptsByFilters: AttemptLogs[] = await parseAttemptsByFilters(attemptLogs, filters);\n                const filteredAttemptLogsByPeer: AttemptLogs[] =\n                    UtilsStats.filterAttemptLogsByPeer(filteredAttemptsByFilters, props.peer.ID);\n\n                if(!filteredAttemptLogsByPeer.length)\n                    continue;\n\n                const latestAttempt: RowSequence =\n                    await parseAttemptLogsIntoLatestSequence(filteredAttemptLogsByPeer, worldID, sequenceID);\n\n                latestAttempts.push(latestAttempt);\n            }\n        }\n\n        return latestAttempts;\n    }\n\n    async function parseAttemptLogsIntoLatestSequence(attempts: AttemptLogs[], worldID: bigint, sequenceID: bigint):\n        Promise<RowSequence> {\n        const sequence: Sequence = await AppConsole.getInstance().dataSourceSequences.getSequence(worldID, sequenceID);\n        const world: World = await AppConsole.getInstance().dataSourceWorlds.getWorld(worldID);\n\n        return {\n            worldID: worldID,\n            worldTitle: world.Title.value,\n            sequenceID: sequenceID,\n            sequenceTitle: sequence.Title.value,\n            version: timestampToString(sequence.PeerPublisher.timestamp ?? BigInt(0), true),\n            attemptIDs: attempts.map((attempt: AttemptLogs) => attempt.attemptID),\n        };\n    }\n\n    function getRowsByPage(): RowSequence[] {\n        if(!rowSequences || !filteredData)\n            return [];\n\n        const firstIndex: number = (page - 1) * NUMBER_OF_ROW_BY_PAGE;\n        const secondIndex: number = firstIndex + NUMBER_OF_ROW_BY_PAGE;\n        return filteredData.slice(firstIndex, Math.min(secondIndex, filteredData.length));\n    }\n\n    function handleClickOnRow(sequenceID: bigint, worldID: bigint) {\n        if(displayedRowGraph.sequenceID == sequenceID && displayedRowGraph.worldID == worldID)\n            setDisplayedRowGraph({sequenceID : BigInt(0), worldID: BigInt(0)});\n        else\n            setDisplayedRowGraph({sequenceID : sequenceID, worldID: worldID});\n    }\n\n    if(!rowSequences)\n        return <CenteredLoading />\n\n    return (\n        <LastSequenceTableContainer id=\"peer-profile-section-sequences\">\n            <TableContainer>\n                <TitleContainer>\n                    <TableTitle>{i18next.t(\"Sequences\")}</TableTitle>\n                    <FiltersRow\n                        backgroundColor={white}\n                        filters={filters}\n                        handleOnChangeFilter={(filters: FiltersInterface) => setFilters(filters)}\n                    />\n                    <SearchBar\n                        style={{ width: \"min(400px, 30%)\", marginLeft: \"8px\" }}\n                        onChange={(str: string) => setSearchStr(str)}\n                        placeholder={i18next.t(\"Search\")}\n                    />\n                </TitleContainer>\n                <Box sx={{\n                        backgroundColor: lightWhite,\n                        padding: \"30px 40px\",\n                        borderRadius: \"24px\",\n                        border: \"1px solid #DDE7F4\"\n                }}>\n                    <ScrollingContainer>\n                        <Table sx={{\n                            width: \"100%\",\n                            borderCollapse: \"collapse\",\n                            overflow: \"auto\",\n                        }}>\n                            <TableHead key={\"table-head\"}>\n                                <TableRow key={\"table-head-row\"}>\n                                    <TableCell sx={{width:\"36px\"}}/>\n                                    <TableCell colSpan={1} sx={{ font: primaryFontLarge }} variant={\"head\"}>\n                                        {i18next.t(\"Sequence name\")}\n                                    </TableCell>\n                                    <TableCell colSpan={1} sx={{ font: primaryFontLarge }} variant={\"head\"}>\n                                        {i18next.t(\"Version\")}\n                                    </TableCell>\n                                    <TableCell colSpan={1} sx={{ font: primaryFontLarge }} variant={\"head\"}>\n                                        {i18next.t(\"World name\")}\n                                    </TableCell>\n                                    <TableCell colSpan={1} sx={{ font: primaryFontLarge }} variant={\"head\"}>\n                                        {i18next.t(\"Last consultation\")}\n                                    </TableCell>\n                                    <TableCell sx={{ font: primaryFontLarge }} align={\"center\"} variant={\"head\"}>\n                                        {i18next.t(\"Number of attempts\")}\n                                    </TableCell>\n                                </TableRow>\n                            </TableHead>\n                            <TableBody style={{flex: 1}}>\n                                {getRowsByPage().map((row: RowSequence) => {\n                                    return (\n                                        <LatestSequenceRow\n                                            key={row.worldID.toString() + \"_\" + row.sequenceID.toString()}\n                                            row={row}\n                                            open={displayedRowGraph.sequenceID == row.sequenceID &&\n                                                displayedRowGraph.worldID == row.worldID}\n                                            setOpen={() => handleClickOnRow(row.sequenceID, row.worldID)}\n                                        />\n                                    )\n                                })}\n                            </TableBody>\n                        </Table>\n                        {filteredData.length === 0 &&\n                            <NoDisplayData>{i18next.t(\"No data to display\")}</NoDisplayData>\n                        }\n                    </ScrollingContainer>\n                    <PaginationContainer>\n                        <Pagination\n                            variant=\"outlined\"\n                            shape=\"rounded\"\n                            count={Math.ceil(filteredData.length / NUMBER_OF_ROW_BY_PAGE)}\n                            page={page}\n                            onChange={(event: React.ChangeEvent, page: number) => setPage(page)}\n                        />\n                    </PaginationContainer>\n                </Box>\n            </TableContainer>\n        </LastSequenceTableContainer>\n    )\n}\n", "import React, {useEffect, useState} from \"react\"\nimport TableRow from \"@mui/material/TableRow\";\nimport TableCell from \"@mui/material/TableCell\";\nimport {timestampToString} from \"@utils/utils\";\nimport {Box, Collapse, IconButton, SxProps} from \"@mui/material\";\nimport {RowSequence} from \"@root/Frontend/Console/Views/Management/Peer/LatestSequenceTable\";\nimport {\n    TimeSpentByTimeStampChart,\n    TimeSpentByTimeStampChartData\n} from \"@root/Frontend/Console/widgets/TimeSpentByTimeStampChart\";\nimport {ExpandMore} from \"@root/react-components/src/icons/ExpandMore\";\nimport {ExpandLess} from \"@root/react-components/src/icons/ExpandLess\";\nimport {ExternalLink} from \"@root/react-components/src/icons/ExternalLink\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport styled from \"styled-components\";\nimport {darkenPrimary} from \"@root/react-components/src/values/colors/colors\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {NavLink} from \"react-router-dom\";\nimport {UtilsStats} from \"@backend/Utils/UtilsStats\";\nimport getTimestampOfRandomID = UtilsShared.getTimestampOfRandomID;\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\n\nconst TableCellStyle: SxProps = {\n    whiteSpace: \"nowrap\",\n}\n\nconst LinkIcon = styled(NavLink)({\n    textDecoration: \"none\",\n    color: \"currentColor\",\n    display: \"inline-block\",\n    width: \"16px\",\n    height: \"16px\",\n    marginLeft: \"3px\",\n    marginTop: \"1px\"\n})\n\nexport function LatestSequenceRow(props: {row: RowSequence, open: boolean, setOpen: () => void}) {\n    const [chartData, setChartData] = useState<TimeSpentByTimeStampChartData[]>([]);\n\n    useEffect(() => {\n        if(props.open)\n            getAttemptsTimeSpentByTimeStamp(props.row).then((result) => setChartData(result));\n    }, [props.open])\n\n    async function getAttemptsTimeSpentByTimeStamp(row: RowSequence): Promise<TimeSpentByTimeStampChartData[]> {\n        const timeSpentByAttempts: {timestamp: bigint, timeSpent: bigint}[] = [];\n\n        await Promise.all(row.attemptIDs.map(async (attemptID: bigint) => {\n            const attemptLog: AttemptLogs = await AppConsole.getInstance().dataSourceAttemptLogs.getAttemptLogs(\n                row.worldID, row.sequenceID, attemptID);\n\n            const timestamp: bigint = UtilsShared.getTimestampOfRandomID(attemptID);\n            const timeSpent: bigint = UtilsStats.computeAttemptTime(attemptLog);\n\n            timeSpentByAttempts.push({ timestamp, timeSpent });\n        }))\n\n        return timeSpentByAttempts;\n    }\n\n    function getLastConsultation(): string {\n        const attemptID = props.row.attemptIDs.at(-1);\n        return attemptID ? timestampToString(getTimestampOfRandomID(attemptID)) : \"-\";\n    }\n\n    return (\n        <>\n            <TableRow\n                sx={{ \"&:hover\" : { cursor: \"pointer\" } }}\n                onClick={() => props.setOpen()}\n            >\n                <TableCell sx={{ width:\"content-fit\" }}>\n                    <IconButton size={\"small\"} >\n                        {props.open ? <ExpandLess size={24}/> : <ExpandMore size={24}/>}\n                    </IconButton>\n                </TableCell>\n                <TableCell colSpan={1} sx={TableCellStyle}>\n                    <span style={{ display: \"flex\" }}>\n                        {props.row.sequenceTitle}\n                        <LinkIcon\n                            to={Analytics.BASE_PATH + \"/Worlds/\" +\n                                props.row.worldID + \"/Sequences/\" + props.row.sequenceID}\n                            onClick={(e: React.MouseEvent) => e.stopPropagation()}>\n                                <ExternalLink size={12} fill={darkenPrimary}/>\n                        </LinkIcon>\n                    </span>\n                </TableCell>\n                <TableCell colSpan={1} sx={TableCellStyle}>{props.row.version}</TableCell>\n                <TableCell colSpan={1} sx={TableCellStyle}>\n                    <span style={{ display: \"flex\" }}>\n                        {props.row.worldTitle}\n                        <LinkIcon\n                            to={Analytics.BASE_PATH + \"/Worlds/\" + props.row.worldID}\n                            onClick={(e: React.MouseEvent) => e.stopPropagation()}>\n                            <ExternalLink size={12} fill={darkenPrimary}/>\n                        </LinkIcon>\n                    </span>\n                </TableCell>\n                <TableCell colSpan={1} sx={TableCellStyle}>{getLastConsultation()}</TableCell>\n                <TableCell sx={TableCellStyle} align={\"center\"}>{props.row.attemptIDs.length}</TableCell>\n            </TableRow>\n            <TableRow>\n                <TableCell style={{ border: \"unset\", paddingBottom: 0, paddingTop: 0 }} colSpan={6}>\n                    <Collapse timeout=\"auto\" unmountOnExit in={props.open}>\n                        <Box sx={{display:\"flex\", width: \"100%\", height: \"400px\"}}>\n                            <TimeSpentByTimeStampChart data={chartData} disableAnimation={false}/>\n                        </Box>\n                    </Collapse>\n                </TableCell>\n            </TableRow>\n        </>\n    )\n}\n", "import React from \"react\"\nimport {CartesianGrid, Line, LineChart, ResponsiveContainer, Tooltip, XAxis, YAxis} from \"recharts\";\nimport {TimeAmount, timestampToShortString, TimeUnit} from \"@utils/utils\";\nimport {primary} from \"@root/react-components/src/values/colors/colors\";\nimport {ValueType} from \"recharts/src/component/DefaultTooltipContent\";\nimport i18next from \"i18next\";\n\nexport interface TimeSpentByTimeStampChartData {\n    timestamp: bigint,\n    timeSpent: bigint,\n}\n\nexport function TimeSpentByTimeStampChart(props: {data: TimeSpentByTimeStampChartData[], disableAnimation: boolean}) {\n\n    function formattedYAxis(value: ValueType) {\n        if(typeof value !== \"number\")\n            return i18next.t(\"Unknown value\")\n\n        const title: string = i18next.t(\"Time spent\");\n        const timeAmount: TimeAmount = new TimeAmount(value, TimeUnit.SECONDS);\n\n        return value === 0 ?\n            [\"0s\", title] :\n            [timeAmount.toPrettyHumanTime(true, true), title]\n    }\n\n    function formatData(data: TimeSpentByTimeStampChartData[]): { timestamp: string, timeSpent: number }[]{\n        return data.map(row => ({\n            timestamp: timestampToShortString(row.timestamp),\n            timeSpent: Number(row.timeSpent)\n        }));\n    }\n\n    return (\n        <ResponsiveContainer width=\"99%\" height=\"99%\">\n            <LineChart data={formatData(props.data)} margin={{ top: 30, right: 10, left: 20, bottom: 30 }}>\n                <CartesianGrid strokeDasharray=\"3 3\" />\n                <XAxis\n                    dataKey={\"timestamp\"}\n                    height={100}\n                    width={10}\n                    angle={-60}\n                    textAnchor={\"end\"}\n                    minTickGap={1}\n                    interval={0}\n                    tick={{fontSize: \"12px\"}}\n                />\n                <YAxis\n                    allowDecimals={false}\n                    tickFormatter={(time: number) => {\n                        return time === 0 ? \"0s\" :\n                            new TimeAmount(time, TimeUnit.SECONDS).toPrettyHumanTime(true, true);\n                    }}\n                />\n                <Tooltip\n                    formatter={(value: ValueType) => formattedYAxis(value)}\n                    cursor={false}\n                    position={{ y: 0 }}\n                />\n                <Line type=\"linear\" dataKey={\"timeSpent\"} stroke={primary} isAnimationActive={!props.disableAnimation}/>\n            </LineChart>\n        </ResponsiveContainer>\n    )\n}", "import React, {useEffect, useState} from \"react\"\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport i18next from \"i18next\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {Box} from \"@mui/material\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {World} from \"@backend/Types/World\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {CardList} from \"@root/Frontend/Console/components/CardList\";\nimport {CardListItem} from \"@root/Frontend/Console/components/CardListRow\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {DataSourcePeers} from \"@root/Frontend/DataSources/DataSourcePeers\";\nimport {DataSourceWorlds} from \"@root/Frontend/DataSources/DataSourceWorlds\";\nimport {DataSourceGroups} from \"@root/Frontend/DataSources/DataSourceGroups\";\n\nexport function WorldCard(props: {peer: Peer}) {\n    const dataSourcePeers: DataSourcePeers = AppConsole.getInstance().dataSourcePeers;\n    const dataSourceWorlds: DataSourceWorlds = AppConsole.getInstance().dataSourceWorlds;\n    const dataSourceGroups: DataSourceGroups = AppConsole.getInstance().dataSourceGroups;\n\n    const [worlds, setWorlds] = useState<CardListItem[]>(null);\n\n    useEffect(() => {\n        getPeerWorlds().then((result: CardListItem[]) => setWorlds(result));\n    }, [props.peer])\n\n    async function getPeerWorlds(): Promise<CardListItem[]> {\n        const peerWorlds: CardListItem[] = [];\n\n        // fetch worlds ID from peer's groups\n        const peerGroupsWorldsIDs: Set<bigint> = await dataSourcePeers.getPeerGroupsWorlds(props.peer.ID);\n        const worldIDs: bigint[] = [...props.peer.worlds ?? [], ...peerGroupsWorldsIDs];\n\n        for (const worldID of worldIDs) {\n            const world: World = await dataSourceWorlds.getWorld(worldID);\n            let ownerName: string = \"\";\n            switch(world.OwnerType.value) {\n                case OwnerType.PEER:\n                    ownerName = (await dataSourcePeers.getPeer(world.Owner.value)).fullName;\n                    break;\n                case OwnerType.GROUP:\n                    ownerName = (await dataSourceGroups.getGroup(world.Owner.value)).Name;\n                    break;\n                default:\n                    AdapterLog.ERROR(\"Invalid owner type received from backend for world ID \" + this.props.worldID);\n            }\n\n            peerWorlds.push({\n                title: world.Title.value,\n                subtitle: ownerName,\n                thumbnail: world.Thumbnail.value,\n                link: Analytics.BASE_PATH + \"/Worlds/\" + worldID\n            });\n        }\n        return peerWorlds;\n    }\n\n    if (worlds === null)\n        return <CenteredLoading />\n\n    return (\n        <Box id=\"peer-profile-section-worlds\" flex={1} maxHeight=\"436px\">\n            <CardList title={i18next.t(\"Worlds\")} listItems={worlds} />\n        </Box>\n    )\n}\n", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {withRouter} from \"react-router-dom\";\nimport {RouteComponentProps} from \"react-router\";\nimport {GroupView} from \"@root/Frontend/Console/Views/Management/Group/GroupView\";\nimport {GroupsList} from \"@root/Frontend/Console/Views/Management/GroupsList/GroupsList\";\nimport {RouterView} from \"@root/Frontend/Console/Views/RouterView\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {SegmentedControl} from \"@root/react-components/src/inputs/SegmentedControl\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {BreadcrumbsLevel} from \"@root/Frontend/Console/components/BreadcrumbNavigation\";\nimport SkillsMatrix from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrix\";\nimport {TypeOS} from \"@backend/Types/TypeOS\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {\n    calculateGrade,\n    getMostRecentAttempt,\n    isAttemptCompleted\n} from \"@root/Frontend/Console/utils/UtilsAttempts\";\nimport {getRangeDateValueByFilterOption, parseAttemptsByFilters} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport {FiltersInterface} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport i18next from \"i18next\";\nimport {Group} from \"@backend/Types/Group\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {MatrixFilters} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/MatrixFilters\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {getWorldSequences} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {compareTitles} from \"@utils/utils\";\nimport {LearningPathEditor} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/LearningPathEditor\";\nimport {World} from \"@backend/Types/World\";\nimport {Role} from \"@backend/Types/Role\";\n\nexport enum SkillsMatrixViewType {\n    WORLDS = \"Worlds\",\n    LEVELS = \"Levels\",\n}\n\nconst SKILL_MATRIX_TYPE_OPTIONS: SkillsMatrixViewType[] = Object.values(SkillsMatrixViewType) as SkillsMatrixViewType[];\n\nconst Container = styled(Box)({\n    height: `calc(100vh - 150px)`,\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\"\n});\n\nconst NoDataWrapper = styled(Box)({\n    width: \"fit-content\",\n    margin: \"auto\",\n    font: primaryFontLarge,\n    paddingTop: \"20px\"\n});\n\nexport type MatrixRow = {\n    worldID: bigint;\n    sequenceID: bigint;\n    level: bigint;\n}\nexport type PeerSequenceResult = {result: bigint | number; expirationRemaining: bigint};\n\n/// This represents the Map of peerIDs -> worldID -> sequenceID -> (# of attempt or grade %)\nexport type PeersResultType = Map<bigint, Map<bigint, Map<bigint, PeerSequenceResult>>>;\n\ninterface SkillsMatrixContainerState {\n    viewType: SkillsMatrixViewType;\n    filters: FiltersInterface;\n    peersResult: PeersResultType;\n    peersProgression: Map<bigint, number>;\n    selectedWorldSequences: Map<bigint, Set<bigint>>;\n    selectedPeers: Set<bigint>;\n    isLoading: boolean;\n    sortedPeers: bigint[];\n    sortedRows: MatrixRow[];\n    openLearningPathEditor: boolean;\n}\n\nexport class SkillsMatrixContainer extends RouterView<RouteComponentProps<{groupID: string}>> {\n    static getSkillMatrixBreadcrumb(groupID: bigint): BreadcrumbsLevel {\n        return {\n            link: `${Management.BASE_PATH}/Groups/${groupID}/SkillsMatrix`,\n            getName: async () => await i18next.t(\"SkillsMatrix\")\n        };\n    }\n\n    groupID: bigint = UtilsShared.safelyConvertStringToBigInt(this.props.match.params.groupID);\n    private readonly app: AppConsole = AppConsole.getInstance();\n\n    state: SkillsMatrixContainerState = {\n        viewType: SkillsMatrixViewType.WORLDS,\n        filters: {\n            filterOS: [TypeOS.APPLE, TypeOS.WEB, TypeOS.HOLOLENS],\n            filterDate: FilterDateOptions.All_TIME,\n            dateRange: getRangeDateValueByFilterOption(FilterDateOptions.LAST_30_DAYS),\n        },\n        isLoading: true,\n        peersResult: new Map(),\n        peersProgression: new Map(),\n        selectedWorldSequences: new Map(),\n        selectedPeers: new Set(),\n        sortedPeers: [],\n        sortedRows: [],\n        openLearningPathEditor: false\n    };\n\n    override getBreadcrumbsLevels(): BreadcrumbsLevel[] {\n        return [\n            GroupsList.getGroupLevel(),\n            GroupView.getLevelForGroup(this.groupID),\n            SkillsMatrixContainer.getSkillMatrixBreadcrumb(this.groupID)\n        ];\n    }\n\n    override async componentDidMount() {\n        super.componentDidMount();\n        // gather all worlds, sequences and peers\n        const selectedWorldSequences: Map<bigint, Set<bigint>> = await this.fetchWorldSequence(this.groupID);\n        const selectedPeers: Set<bigint> = await this.fetchPeerIDs(this.groupID);\n\n        // for each peer, parse their result for every sequence of every world and their global progression\n        const peersResult: PeersResultType =\n            await this.parseAttemptsByPeers(selectedWorldSequences, selectedPeers, this.state.filters);\n        const peersProgression: Map<bigint, number> = await this.calculateProgression(peersResult);\n\n        // once all progressions and result are gather, we can sort peers (header) and worlds/sequences (rows)\n        const sortedPeers: bigint[] = await this.sortPeerByProgression(selectedPeers, peersProgression);\n        const worldSequenceCells: MatrixRow[] = await this.buildMatrixRows(selectedWorldSequences, this.state.viewType);\n        const sortedRows: MatrixRow[] = await this.sortSkillMatrix(worldSequenceCells, this.state.viewType);\n\n        this.setState({\n            selectedWorldSequences,\n            selectedPeers,\n            peersResult,\n            peersProgression,\n            isLoading: false,\n            sortedPeers,\n            sortedRows\n        });\n    }\n\n    private async fetchWorldSequence(groupID: bigint): Promise<Map<bigint, Set<bigint>>> {\n        const group: Group = await this.app.dataSourceGroups.getGroup(groupID);\n        const worldSequences: Map<bigint, Set<bigint>> = new Map();\n\n        for (const worldID of group.Worlds) {\n            const sequenceIDs: bigint[] = await getWorldSequences(worldID, false, groupID);\n            worldSequences.set(worldID, new Set(sequenceIDs));\n        }\n\n        return worldSequences;\n    }\n\n    private async fetchPeerIDs(groupID: bigint): Promise<Set<bigint>> {\n        const group: Group = await this.app.dataSourceGroups.getGroup(groupID);\n        const currentPeerID: bigint = this.app.currentPeerID;\n        const currentRole: Role = group.Peers[currentPeerID.toString()];\n\n        const peerIDs: Set<bigint> = new Set();\n        // group viewer can only see themselves\n        if (currentRole !== Role.EDITOR)\n            return new Set([currentPeerID]);\n\n        const groupPeerIDs: bigint[] = Object.keys(group.Peers).map((peerID: string) =>\n            UtilsShared.safelyConvertStringToBigInt(peerID));\n        for (const peerID of groupPeerIDs) {\n            const peer: Peer = await this.app.dataSourcePeers.getPeer(peerID);\n            if (!peer.archivedDate)\n                peerIDs.add(peerID);\n        }\n\n        return peerIDs;\n    }\n\n    private async parseAttemptsByPeers(worldSequences: Map<bigint, Set<bigint>>,\n                                       peerIDs: Set<bigint>,\n                                       filters: FiltersInterface): Promise<PeersResultType> {\n        const peersResult: PeersResultType = new Map();\n\n        // go over each world and create the map worldID -> sequenceIDs\n        for (const [worldID, sequenceIDs] of worldSequences) {\n            const worldMap: Map<bigint, Map<bigint, PeerSequenceResult>> = new Map();\n            peersResult.set(worldID, worldMap);\n\n            for (const sequenceID of sequenceIDs) {\n                const sequenceResultsByPeer: Map<bigint, PeerSequenceResult> = new Map();\n                for (const peerID of peerIDs) {\n                    const sequenceResultsForPeer: PeerSequenceResult =\n                        await this.getSequenceResultForPeer(sequenceID, worldID, filters, peerID);\n                    sequenceResultsByPeer.set(peerID, sequenceResultsForPeer);\n                }\n                worldMap.set(sequenceID, sequenceResultsByPeer);\n            }\n        }\n        return peersResult;\n    }\n\n    private async getSequenceResultForPeer(\n        sequenceID: bigint,\n        worldID: bigint,\n        filters: FiltersInterface,\n        peerID: bigint\n    ): Promise<PeerSequenceResult> {\n        const sequence: Sequence = await this.app.dataSourceSequences.getSequence(worldID, sequenceID);\n        const allAttempts: AttemptLogs[] =\n            await this.app.dataSourceAttemptLogs.getAttemptsUpToLastMajor(worldID, sequenceID, false);\n        const filteredAttempts: AttemptLogs[] = await parseAttemptsByFilters(allAttempts, filters);\n\n        // filter by peer\n        const attemptsForPeer: AttemptLogs[] = await this.groupAttemptsForPeer(filteredAttempts, peerID);\n\n        const result: bigint | number =  await this.calculateSequenceResult(sequence, attemptsForPeer);\n        const objectiveVisualization: bigint =\n            sequence.ObjectiveVisualizations.value === BigInt(0) ? BigInt(1) : sequence.ObjectiveVisualizations.value;\n        const expirationRemaining: bigint = this.calculateExpirationRemaining(\n            attemptsForPeer, sequence.Expiration.value, objectiveVisualization);\n        return {result, expirationRemaining};\n    }\n\n    private async groupAttemptsForPeer(allAttempts: AttemptLogs[], peerID: bigint): Promise<AttemptLogs[]> {\n        const attemptsByPeer: AttemptLogs[] = [];\n\n        for (const attempt of allAttempts) {\n            const sequenceAttempt: Sequence = \n                await this.app.dataSourceSequences.getSequence(attempt.worldID, attempt.sequenceID);\n            if (peerID === attempt.peerID && isAttemptCompleted(sequenceAttempt, attempt))\n                attemptsByPeer.push(attempt);\n        }\n\n        return attemptsByPeer;\n    }\n\n    private async calculateSequenceResult(sequence: Sequence, attempts: AttemptLogs[]): Promise<bigint | number> {\n        //If it's not an evaluation return attempts length\n        if (!sequence.ObjectiveGrade.value)\n            return BigInt(attempts.length);\n\n        const mostRecentAttempt: AttemptLogs | null = getMostRecentAttempt(attempts);\n        if (!mostRecentAttempt)\n            return 0;\n        return await calculateGrade(mostRecentAttempt);\n    }\n\n    private calculateExpirationRemaining(attempts: AttemptLogs[], expiration: bigint, objectiveValidation: bigint): bigint {\n        if (!attempts.length || !expiration)\n            return BigInt(0);\n\n        // If the objectives are validated, we look for the expiration date that will invalidate the sequence.\n        // Otherwise, we look for the first one that will decrement.\n        // Evaluation have only one attempt. The targetIndex must be 0.\n        const objectiveValidationNumber: number = Number(objectiveValidation);\n        const targetIndex: number = objectiveValidationNumber && attempts.length > objectiveValidationNumber ?\n            attempts.length - objectiveValidationNumber : 0;\n\n        const timestamps: bigint[] = attempts[targetIndex].getTimestamps();\n        const referenceTimestamp: bigint = timestamps[timestamps.length - 1];\n\n        const currentTime: bigint = BigInt(Date.now()) / BigInt(1000);\n        return expiration - (currentTime - referenceTimestamp);\n    }\n\n    private async calculateProgression(peersResult: PeersResultType): Promise<Map<bigint, number>> {\n        const peersProgression: Map<bigint, number> = new Map();\n\n        let totalSequenceCount: number = 0;\n        for (const sequencesMap of peersResult.values())\n            totalSequenceCount += sequencesMap.size;\n\n        if (totalSequenceCount === 0)\n            return peersProgression;\n\n        // Store how many Sequences each peer has completed\n        for (const [worldID, sequencesMap] of peersResult) {\n            for (const [sequenceID, peerResults] of sequencesMap) {\n                const sequence: Sequence = await this.app.dataSourceSequences.getSequence(worldID, sequenceID);\n\n                const objectiveVisualization: bigint = sequence.ObjectiveVisualizations.value === BigInt(0) ?\n                    BigInt(1) : sequence.ObjectiveVisualizations.value;\n\n                for (const [peerID, peerResult] of peerResults) {\n                    if (sequence.ObjectiveGrade.value > 0) {\n                        if (typeof peerResult.result === \"number\" && peerResult.result >= sequence.ObjectiveGrade.value)\n                            peersProgression.set(peerID, (peersProgression.get(peerID) ?? 0) + 1);\n                    } else if (typeof peerResult.result === \"bigint\"\n                        && peerResult.result >= BigInt(objectiveVisualization))\n                        peersProgression.set(peerID, (peersProgression.get(peerID) ?? 0) + 1);\n                }\n            }\n        }\n\n        // Convert to percentages\n        for (const [peerID, progression] of peersProgression)\n            peersProgression.set(peerID, progression / totalSequenceCount * 100);\n\n        return peersProgression;\n    }\n\n    private async sortPeerByProgression(peerIDs: Set<bigint>, peersProgression: Map<bigint, number>): Promise<bigint[]> {\n        const nameByPeerIDs: Map<bigint, string> = new Map();\n        for (const peerID of peerIDs.keys()) {\n            const peer: Peer = await this.app.dataSourcePeers.getPeer(peerID);\n            nameByPeerIDs.set(peerID, peer.fullName);\n        }\n\n        // spread the array to prevent mutation of the peerIDs param\n        return [...peerIDs].sort((peerID1: bigint, peerID2: bigint) => {\n            const progression1: number = peersProgression.get(peerID1) ?? 0;\n            const progression2: number = peersProgression.get(peerID2) ?? 0;\n\n            if (progression1 !== progression2)\n                return progression2 - progression1;\n\n            const name1: string = nameByPeerIDs.get(peerID1) ?? \"\";\n            const name2: string = nameByPeerIDs.get(peerID2) ?? \"\";\n            return compareTitles(name1, name2, true);\n        });\n    }\n\n    // sorts and flattens sequences grouped by their level. Each level becomes a header row, followed by\n    // its corresponding sequences\n    private async sortSkillMatrix(rows: MatrixRow[], viewType: SkillsMatrixViewType): Promise<MatrixRow[]> {\n        const sequenceNames: Map<bigint, Map<bigint, string>> = await this.getSequencesName(rows);\n        if (viewType === SkillsMatrixViewType.WORLDS) {\n            const worldNames: Map<bigint, string> = await this.getWorldNames(rows.map((row: MatrixRow) => row.worldID));\n            rows.sort((row1: MatrixRow, row2: MatrixRow) => {\n                if (row1.worldID === row2.worldID)\n                    return this.compareSequenceSorting(row1, row2, sequenceNames);\n\n                // WORLD (alpha)\n                const worldTitleA: string = worldNames.get(row1.worldID) ?? \"\";\n                const worldTitleB: string = worldNames.get(row2.worldID) ?? \"\";\n                return compareTitles(worldTitleA, worldTitleB, true);\n            });\n\n            return rows;\n        }\n\n        rows.sort((row1: MatrixRow, row2: MatrixRow) => row1.level === row2.level ?\n            this.compareSequenceSorting(row1, row2, sequenceNames) : Number(row1.level) - Number(row2.level));\n\n        return rows;\n    }\n\n    private compareSequenceSorting(row1: MatrixRow, row2: MatrixRow, sequenceNames: Map<bigint, Map<bigint, string>>) {\n        // header before sequences\n        if (row1.sequenceID === BigInt(0) && row2.sequenceID !== BigInt(0))\n            return -1;\n\n        if (row1.sequenceID !== BigInt(0) && row2.sequenceID === BigInt(0))\n            return 1;\n\n        // two sequences -> sort by sequence (alpha)\n        if (row1.sequenceID !== BigInt(0) && row2.sequenceID !== BigInt(0)) {\n            const sequenceTitleA: string = sequenceNames.get(row1.worldID)?.get(row1.sequenceID) ?? \"\";\n            const sequenceTitleB: string = sequenceNames.get(row2.worldID)?.get(row2.sequenceID) ?? \"\";\n            return compareTitles(sequenceTitleA, sequenceTitleB, true);\n        }\n\n        return 0;\n    }\n\n    private async getSequencesName(worldSequenceCells: MatrixRow[]): Promise<Map<bigint, Map<bigint, string>>> {\n        const sequenceNames: Map<bigint, Map<bigint, string>> = new Map();\n\n        for (const { worldID, sequenceID } of worldSequenceCells) {\n            if (!worldID || !sequenceID)\n                continue;\n\n            let worldSequences: Map<bigint, string> | undefined = sequenceNames.get(worldID);\n            if (!worldSequences) {\n                worldSequences = new Map<bigint, string>();\n                sequenceNames.set(worldID, worldSequences);\n            }\n\n            const sequence: Sequence = await this.app.dataSourceSequences.getSequence(worldID, sequenceID);\n            worldSequences.set(sequenceID, sequence.Title.value);\n        }\n\n        return sequenceNames;\n    }\n\n    private async getWorldNames(worldIDs: bigint[]): Promise<Map<bigint, string>> {\n        const worldName: Map<bigint, string> = new Map();\n        for (const worldID of worldIDs) {\n            const world: World = await this.app.dataSourceWorlds.getWorld(worldID);\n            worldName.set(worldID, world.Title.value);\n        }\n\n        return worldName;\n    }\n\n    private async buildMatrixRows(worldSequences: Map<bigint, Set<bigint>>, viewType: SkillsMatrixViewType): Promise<MatrixRow[]> {\n        const worldSequencesCell: MatrixRow[] = [];\n\n        switch (viewType) {\n            case SkillsMatrixViewType.WORLDS: {\n                for (const [worldID, sequenceIDs] of worldSequences.entries()) {\n                    // World header\n                    worldSequencesCell.push({ worldID, sequenceID: BigInt(0), level: BigInt(0) });\n\n                    for (const sequenceID of sequenceIDs) {\n                        const sequence: Sequence =\n                            await this.app.dataSourceSequences.getSequence(worldID, sequenceID);\n                        // Sequence row\n                        worldSequencesCell.push({ worldID, sequenceID, level: sequence.Level.value });\n                    }\n                }\n                break;\n            }\n            case SkillsMatrixViewType.LEVELS: {\n                const levels: Set<bigint> = new Set();\n\n                for (const [worldID, sequenceIDs] of worldSequences.entries()) {\n                    for (const sequenceID of sequenceIDs) {\n                        const sequence: Sequence = await this.app.dataSourceSequences.getSequence(worldID, sequenceID);\n                        worldSequencesCell.push({ worldID, sequenceID, level: sequence.Level.value });\n                        levels.add(sequence.Level.value);\n                    }\n                }\n\n                // create all level headers\n                for (const level of levels)\n                    worldSequencesCell.push({ worldID: BigInt(0), sequenceID: BigInt(0), level });\n                break;\n            }\n            default: break;\n        }\n        return worldSequencesCell;\n    }\n\n    private async handleViewTypeChange(index: number) {\n        const viewType: SkillsMatrixViewType = SKILL_MATRIX_TYPE_OPTIONS[index];\n\n        // To avoid sorting on a stale state (await in setState), we create a new map from the one in state\n        const worldSequences: Map<bigint, Set<bigint>> = new Map(this.state.selectedWorldSequences);\n        const rows: MatrixRow[] = await this.buildMatrixRows(worldSequences, viewType);\n        const sortedRows: MatrixRow[] = await this.sortSkillMatrix(rows, viewType);\n\n        this.setState({ viewType, sortedRows });\n    }\n\n    private async handleOnChangeFilter(filters: FiltersInterface) {\n        const peersResult: PeersResultType =\n            await this.parseAttemptsByPeers(this.state.selectedWorldSequences, this.state.selectedPeers, filters);\n        const peersProgression: Map<bigint, number> = await this.calculateProgression(peersResult);\n        const sortedPeers: bigint[] = await this.sortPeerByProgression(this.state.selectedPeers, peersProgression);\n        this.setState({ filters, peersResult, peersProgression, sortedPeers });\n    }\n\n    private async onCloseLearningPathDialog(selectedWorldSequences: Map<bigint, Set<bigint>>) {\n        const worldSequenceCells: MatrixRow[] = await this.buildMatrixRows(selectedWorldSequences, this.state.viewType);\n        const sortedRows: MatrixRow[] = await this.sortSkillMatrix(worldSequenceCells, this.state.viewType);\n        this.setState({ openLearningPathEditor: false, sortedRows });\n    }\n\n    private async updateSignatureAttempt(worldID: bigint, sequenceID: bigint, peerID: bigint, isAdded: boolean) {\n        const newPeersResult: PeersResultType = new Map(this.state.peersResult);\n        const sequenceMap: Map<bigint, PeerSequenceResult> | undefined = newPeersResult.get(worldID)?.get(sequenceID);\n        if (!sequenceMap)\n            return;\n\n        const sequence: Sequence = await this.app.dataSourceSequences.getSequence(worldID, sequenceID);\n\n        sequenceMap.set(peerID, isAdded ?\n            {result: BigInt(1), expirationRemaining: sequence.Expiration.value} :\n            {result: BigInt(0), expirationRemaining: BigInt(0)});\n\n        let totalSequenceCount: number = 0;\n        for (const sequences of newPeersResult.values())\n            totalSequenceCount += sequences.size;\n\n        if (totalSequenceCount === 0)\n            return;\n\n        const newPeerProgression = new Map(this.state.peersProgression);\n        const currentProgression: number = newPeerProgression.get(peerID) ?? 0;\n        const currentCompleted: number = Math.round(totalSequenceCount * (currentProgression / 100));\n        const newCompleted: number = isAdded ? currentCompleted + 1 : Math.max(0, currentCompleted - 1);\n        newPeerProgression.set(peerID, Math.round((newCompleted * 100) / totalSequenceCount));\n\n        const peerIDs: Set<bigint> = new Set(this.state.sortedPeers);\n        const sortedPeers: bigint[] = await this.sortPeerByProgression(peerIDs, newPeerProgression);\n\n        this.setState({ peersResult: newPeersResult, peersProgression: newPeerProgression, sortedPeers });\n    }\n\n    private async onPeersFiltered(selectedPeers: Set<bigint>) {\n        const sortedPeers: bigint[] = await this.sortPeerByProgression(selectedPeers, this.state.peersProgression);\n        this.setState({ selectedPeers, sortedPeers });\n    }\n\n    private async onWorldSequenceFiltered(selectedWorldSequences: Map<bigint, Set<bigint>>) {\n        const worldSequenceCells: MatrixRow[] = await this.buildMatrixRows(selectedWorldSequences, this.state.viewType);\n        const sortedRows: MatrixRow[] = await this.sortSkillMatrix(worldSequenceCells, this.state.viewType);\n        this.setState({ selectedWorldSequences, sortedRows });\n    }\n\n    private getAllWorldSequences(peersResult: PeersResultType): Map<bigint, Set<bigint>> {\n        const worldSequences: Map<bigint, Set<bigint>> = new Map();\n        for (const [worldID, sequenceIDs] of peersResult.entries())\n            worldSequences.set(worldID, new Set(sequenceIDs.keys()));\n\n        return worldSequences;\n    }\n\n    private renderSkillsMatrixView() {\n        if (this.state.isLoading)\n            return <CenteredLoading />;\n\n        if (!this.state.sortedRows.length || !this.state.sortedPeers.length)\n            return <NoDataWrapper>{i18next.t(\"No data to display\")}</NoDataWrapper>;\n\n        return (\n            <SkillsMatrix\n                viewType={this.state.viewType}\n                peersResult={this.state.peersResult}\n                peersProgression={this.state.peersProgression}\n                sortedRows={this.state.sortedRows}\n                sortedHeaders={this.state.sortedPeers}\n                addSignatureAttempt={(worldID: bigint, sequenceID: bigint, peerID: bigint) =>\n                    this.updateSignatureAttempt(worldID, sequenceID, peerID, true)}\n                removeSignatureAttempt={(worldID: bigint, sequenceID: bigint, peerID: bigint) =>\n                    this.updateSignatureAttempt(worldID, sequenceID, peerID, false)}\n            />\n        );\n    }\n\n    render() {\n        return (\n            <Box>\n                <Box style={{ width: \"350px\", margin: \"0px auto\" }}>\n                    <SegmentedControl\n                        options={SKILL_MATRIX_TYPE_OPTIONS}\n                        onChange={(index: number) => this.handleViewTypeChange(index)}\n                        value={SKILL_MATRIX_TYPE_OPTIONS.indexOf(this.state.viewType)}\n                        dark\n                    />\n                </Box>\n\n                <Container>\n                    <Box\n                        style={{\n                            display: \"flex\",\n                            justifyContent: this.state.viewType === SkillsMatrixViewType.LEVELS ?\n                                \"space-between\" : \"flex-end\"\n                        }}\n                    >\n                        {this.state.viewType === SkillsMatrixViewType.LEVELS &&\n                            <>\n                                <Button\n                                    size=\"small\"\n                                    style={{ margin: \"auto 0px\" }}\n                                    onClick={() => this.setState({ openLearningPathEditor: true }) }\n                                >\n                                    {i18next.t(\"Edit\")}\n                                </Button>\n                                {this.state.openLearningPathEditor &&\n                                    <LearningPathEditor\n                                        worldSequences={this.getAllWorldSequences(this.state.peersResult)}\n                                        onClose={() =>\n                                            this.onCloseLearningPathDialog(this.state.selectedWorldSequences)}\n                                    />\n                                }\n                            </>\n                        }\n                        <MatrixFilters\n                            groupID={this.groupID}\n                            filters={this.state.filters}\n                            handleOnChangeFilter={(filters: FiltersInterface) => this.handleOnChangeFilter(filters)}\n                            selectedPeerIDs={new Set(this.state.sortedPeers)}\n                            selectedWorldsSequencesIDs={this.state.selectedWorldSequences}\n                            onPeersFiltered={(selectedPeerIDs: Set<bigint>) => this.onPeersFiltered(selectedPeerIDs)}\n                            onWorldSequenceFiltered={(worldsSequencesIDs: Map<bigint, Set<bigint>>) =>\n                                this.onWorldSequenceFiltered(worldsSequencesIDs)}\n                        />\n                    </Box>\n\n                    {this.renderSkillsMatrixView()}\n                </Container>\n            </Box>\n        );\n    }\n}\n\nexport const SkillsMatrixContainerWithRouter = withRouter(SkillsMatrixContainer);", "import React, {forwardRef, isValidElement, useCallback, useEffect, useMemo} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport AutoSizer from \"react-virtualized-auto-sizer\";\nimport HeaderCell from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/HeaderCell\";\nimport {\n    darkenPrimary,\n    lightGrey,\n    lightPrimary,\n    lightWhite,\n    primary,\n    white\n} from \"@root/react-components/src/values/colors/colors\";\nimport {GridChildComponentProps, VariableSizeGrid} from \"react-window\";\nimport FirstColumnCell, {\n    Cell\n} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/FirstColumnCell\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {MatrixCell} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/MatrixCell\";\nimport {\n    MatrixRow,\n    PeersResultType,\n    SkillsMatrixViewType\n} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixContainer\";\n\nconst MatrixContainer = styled(Box)((props: { height: number, width: number }) => ({\n    height: `${props.height}px`,\n    width: `${props.width}px`\n}));\n\nconst FirstColumnContainer = styled(Box)((props: { height: number, width: number }) => ({\n    overflow: \"hidden !important\",\n    boxSizing: \"border-box\",\n    marginBottom: \"15px\",\n    height: `${props.height}px`,\n    width: `${props.width}px`,\n    display: \"flex\",\n    flexDirection: \"column\",\n    position: \"sticky\",\n    left: 0,\n    zIndex: 2\n}));\n\nconst BlueCornerBox = styled(Cell)((props: { height: number, width: number }) => ({\n    height: `${props.height}px`,\n    minWidth: `${props.width}px`,\n    backgroundColor: darkenPrimary,\n    display: \"flex\",\n    alignItems: \"flex-end\",\n    zIndex: 3,\n    position: \"sticky\",\n    left: 0,\n    flexDirection: \"row\"\n}));\n\nconst ProgressionTitle = styled(Box)({\n    color: lightWhite,\n    font: primaryFontXLarge,\n    backgroundColor: lightPrimary,\n    width: \"100%\",\n    textAlign: \"center\"\n});\n\nconst HeaderContainer = styled(Box)({\n    position: \"sticky\",\n    top: 0,\n    display: \"flex\",\n    flexDirection: \"row\",\n    zIndex: 3\n});\n\nconst HeaderCellsContainer = styled(Box)((props: { left: number }) => ({\n    position: \"absolute\",\n    display: \"flex\",\n    flexDirection: \"row\",\n    left: `${props.left}px`\n}));\n\nconst MatrixGrid = styled(VariableSizeGrid)({\n    overflow: \"scroll !important\",\n\n    \"&::-webkit-scrollbar-track\": {\n        backgroundColor: white,\n    },\n    \"&::-webkit-scrollbar\": {\n        width: \"15px\",\n        height: \"15px\",\n    },\n    \"&::-webkit-scrollbar-thumb\": {\n        // the border (transparent) is causing the padding/margin effect\n        border: \"4px solid rgba(0, 0, 0, 0)\",\n        borderRadius: \"11px\",\n        backgroundClip: \"padding-box\",\n        backgroundColor: lightGrey\n    },\n    \"::-webkit-scrollbar-corner\": { // little corner between the 2 scrollbars\n        backgroundColor: white\n    }\n});\n\nconst GridDataContainer = styled(Box)((props: { top: number, left: number }) => ({\n    position: \"absolute\",\n    top: `${props.top}px`,\n    left: `${props.left}px`\n}));\n\nexport enum MatrixRowType {\n    WORLD,\n    LEVEL,\n    SEQUENCE,\n}\n\ninterface MatrixCursor {\n    minRow: number;\n    maxRow: number;\n    minColumn: number;\n    maxColumn: number;\n}\n\ninterface SkillsMatrixProps {\n    viewType: SkillsMatrixViewType;\n    sortedRows: MatrixRow[];\n    sortedHeaders: bigint[];\n    peersProgression: Map<bigint, number>;\n    peersResult: PeersResultType;\n    addSignatureAttempt: (peerID: bigint, worldID: bigint, sequenceID: bigint) => void;\n    removeSignatureAttempt: (peerID: bigint, worldID: bigint, sequenceID: bigint) => void;\n}\n\n// The skills matrix is based on https://codesandbox.io/p/sandbox/react-window-sticky-grid-liwsd?file=%2Fsrc%2Findex.js%3A58%2C7-58%2C10\nexport default function SkillsMatrix(props: SkillsMatrixProps) {\n    const HEADERS_HEIGHT: number = 125;\n    const FIRST_COLUMN_WIDTH: number = 225;\n    const MINIMUM_CELL_WIDTH: number = 65;\n    const FULL_SCROLL_SIZE: number = 30;\n    const HEIGHT_SECTION: number = 45;\n    const HEIGHT_SEQUENCE: number = 60;\n\n    const matrixContainerRef: React.RefObject<HTMLDivElement> = React.useRef<HTMLDivElement>(null);\n    const matrixGridRef: React.RefObject<VariableSizeGrid> = React.useRef<VariableSizeGrid>(null);\n\n    const columnNumber: number = props.sortedHeaders.length;\n\n    // return Row height depending on the number of rows\n    const getRowHeight: (index: number) => number = useCallback((index: number): number => {\n        if (props.sortedRows.length <= index)\n            return 0;\n\n        const row: MatrixRow = props.sortedRows[index];\n        const rowType: MatrixRowType = getMatrixRowType(props.viewType, row);\n        return rowType === MatrixRowType.SEQUENCE ? HEIGHT_SEQUENCE : HEIGHT_SECTION;\n    }, [props.sortedRows, props.sortedHeaders, props.viewType]);\n\n    // return the optimized height for the grid (and the 1st column) depending on the rows\n    const gridOptimizedHeight: number = useMemo(() => {\n        const worldsCounter: number =\n            props.sortedRows.filter((cellInfo: MatrixRow) => !cellInfo.sequenceID).length;\n        const sequenceCounter: number =\n            props.sortedRows.filter((cellInfo: MatrixRow) => cellInfo.sequenceID).length;\n        return worldsCounter * HEIGHT_SECTION + sequenceCounter * HEIGHT_SEQUENCE;\n    }, [props.sortedRows, props.sortedHeaders, props.viewType]);\n\n    useEffect(() => {\n        // eventListener on the browser window resizing\n        window.addEventListener(\"resize\", onResize);\n\n        // ResizeObserver on the container (to handle when the menu panel is open or not)\n        const observer = new ResizeObserver(onResize);\n        if (matrixContainerRef.current)\n            observer.observe(matrixContainerRef.current);\n\n        return () => {\n            window.removeEventListener(\"resize\", onResize);\n            if (matrixContainerRef.current)\n                observer.unobserve(matrixContainerRef.current);\n        };\n    }, []);\n\n    useEffect(() => {\n        onResize();\n    }, [props.sortedRows, props.sortedHeaders, props.viewType]);\n\n    const onResize = () => {\n        if (matrixGridRef.current)\n            matrixGridRef.current.resetAfterIndices({columnIndex: 0, rowIndex: 0});\n    }\n\n    // return cell width depending on the number of columns\n    function getCellWidth(totalMatrixWidth: number, index: number): number {\n        const gridWidth: number = totalMatrixWidth - FIRST_COLUMN_WIDTH - FULL_SCROLL_SIZE;\n\n        const optimizedWidth: number = Math.ceil(gridWidth / columnNumber) > MINIMUM_CELL_WIDTH\n            ? Math.ceil(gridWidth / columnNumber) : MINIMUM_CELL_WIDTH;\n\n        // the last cell has a smaller width to avoid useless scroll for few pixels\n        if (optimizedWidth !== MINIMUM_CELL_WIDTH && index === columnNumber - 1)\n            return optimizedWidth - Math.abs(gridWidth - columnNumber * optimizedWidth);\n\n        return optimizedWidth;\n    }\n\n    // rotate height depending on the width of the cell\n    function getRotateOrientation(totalMatrixWidth: number): number {\n        if (props.sortedHeaders.length < 4)\n            return 0;\n        // index for the cell is fixed to 0 because they all should have the same orientation\n        const diagonalLength = Math.sqrt(Math.pow(getCellWidth(totalMatrixWidth, 0), 2) + Math.pow(HEADERS_HEIGHT, 2));\n\n        return Math.asin(HEADERS_HEIGHT / diagonalLength);\n    }\n\n    function getRenderedCursor(children: React.ReactElement<GridChildComponentProps>[]): MatrixCursor {\n        const cursor: MatrixCursor = {\n            minRow: props.sortedRows.length,\n            maxRow: 0,\n            minColumn: columnNumber,\n            maxColumn: 0\n        };\n\n        for (const child of children) {\n            if (child.props.rowIndex < cursor.minRow)\n                cursor.minRow = child.props.rowIndex;\n            if (child.props.rowIndex > cursor.maxRow)\n                cursor.maxRow = child.props.rowIndex;\n            if (child.props.columnIndex < cursor.minColumn)\n                cursor.minColumn = child.props.columnIndex;\n            if (child.props.columnIndex > cursor.maxColumn)\n                cursor.maxColumn = child.props.columnIndex;\n        }\n\n        return cursor;\n    }\n\n    function stickyHeaderBuilder(width: number, minColumn: number, maxColumn: number): JSX.Element[] {\n        const columns: JSX.Element[] = [];\n\n        let currentOffset: number = 0;\n        for (let i: number = 0; i < minColumn; ++i)\n            currentOffset += getCellWidth(width, i);\n\n        for (let index: number = minColumn; index <= maxColumn; ++index) {\n            const cellWidth: number = getCellWidth(width, index);\n            const peerID: bigint = props.sortedHeaders[index];\n            const progression: number = props.peersProgression.get(peerID) ?? 0;\n\n            columns.push(<HeaderCell\n                key={`header-cell-${index}`}\n                index={index}\n                style={{height: HEADERS_HEIGHT, width: cellWidth, position: \"absolute\", left: currentOffset}}\n                peerID={peerID}\n                progression={progression}\n                rotationOrientation={getRotateOrientation(width)}\n            />);\n            currentOffset += cellWidth;\n        }\n        return columns;\n    }\n\n    function getMatrixRowType(viewType: SkillsMatrixViewType, row: MatrixRow): MatrixRowType {\n        switch (viewType) {\n            case SkillsMatrixViewType.WORLDS: return row.sequenceID ? MatrixRowType.SEQUENCE : MatrixRowType.WORLD;\n            case SkillsMatrixViewType.LEVELS: return row.sequenceID ? MatrixRowType.SEQUENCE : MatrixRowType.LEVEL;\n        }\n    }\n\n    function firstColumnBuilder(minRow: number, maxRow: number): JSX.Element[] {\n        const rows: JSX.Element[] = [];\n\n        let currentOffset: number = 0;\n        for (let i: number = 0; i < minRow; ++i)\n            currentOffset += getRowHeight(i);\n\n        for (let index: number = minRow; props.sortedRows.length && index <= maxRow; index++) {\n            const rowHeight: number = getRowHeight(index);\n            const cell: MatrixRow = props.sortedRows[index];\n\n            rows.push(<FirstColumnCell\n                key={`first-column-cell-${index}`}\n                index={index}\n                style={{height: rowHeight, width: FIRST_COLUMN_WIDTH, position: \"absolute\", top: currentOffset}}\n                viewType={props.viewType}\n                worldID={cell.worldID}\n                sequenceID={cell.sequenceID}\n                level={cell.level}\n            />);\n            currentOffset += rowHeight;\n        }\n        return rows;\n    }\n\n    // forwardRef is used to allow the VariableSizeGrid to make changes to the component if needed\n    function createInnerGridElement(width: number) {\n        return forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({children, ...rest}, ref) => {\n\n            // get all grid element children and use them to get the furthest indices of the matrix\n            const gridElementChildren: React.ReactElement<GridChildComponentProps>[] = [];\n            React.Children.forEach(children, (child) => {\n                if (isValidElement<GridChildComponentProps>(child))\n                    gridElementChildren.push(child);\n            });\n            const cursor: MatrixCursor = getRenderedCursor(gridElementChildren);\n\n            return <MatrixContainer\n                ref={ref}\n                width={width - FULL_SCROLL_SIZE}\n                height={gridOptimizedHeight}\n                {...rest}\n            >\n                <HeaderContainer>\n                    <BlueCornerBox height={HEADERS_HEIGHT} width={FIRST_COLUMN_WIDTH}>\n                        <ProgressionTitle> {i18next.t(\"Progression\")} </ProgressionTitle>\n                    </BlueCornerBox>\n                    <HeaderCellsContainer left={FIRST_COLUMN_WIDTH}>\n                        {stickyHeaderBuilder(width, cursor.minColumn, cursor.maxColumn)}\n                    </HeaderCellsContainer>\n                </HeaderContainer>\n\n                <FirstColumnContainer height={gridOptimizedHeight} width={FIRST_COLUMN_WIDTH}>\n                    {firstColumnBuilder(cursor.minRow, cursor.maxRow)}\n                </FirstColumnContainer>\n\n                <GridDataContainer top={HEADERS_HEIGHT} left={FIRST_COLUMN_WIDTH}>\n                    {children}\n                </GridDataContainer>\n            </MatrixContainer>\n        });\n    }\n\n    return (\n        <Box ref={matrixContainerRef} style={{margin: \"auto\", width: \"100%\", height: \"100%\"}}>\n            <AutoSizer>\n                {(gridProps: { height: number, width: number }) =>\n                    <MatrixGrid\n                        ref={matrixGridRef}\n                        innerElementType={createInnerGridElement(gridProps.width)}\n                        columnCount={columnNumber}\n                        rowCount={props.sortedRows.length}\n                        columnWidth={(index: number) => getCellWidth(gridProps.width, index)}\n                        rowHeight={(index: number) => getRowHeight(index)}\n                        height={Math.min(gridOptimizedHeight + HEADERS_HEIGHT, gridProps.height) + 15}\n                        width={gridProps.width - 15}\n                    >\n                        {({columnIndex, rowIndex, style}: GridChildComponentProps) => {\n                            if (getMatrixRowType(props.viewType, props.sortedRows[rowIndex]) !== MatrixRowType.SEQUENCE)\n                                return <Box style={{\n                                    ...style,\n                                    backgroundColor: primary,\n                                    borderBottom: `solid 1px ${lightGrey}`,\n                                    boxSizing: \"border-box\"\n                                }}/>;\n\n                            const peerID: bigint = props.sortedHeaders[columnIndex];\n                            const sequenceID: bigint = props.sortedRows[rowIndex].sequenceID ?? BigInt(0);\n                            const worldID: bigint = props.sortedRows[rowIndex].worldID ?? BigInt(0);\n                            const result: number =\n                                Number(props.peersResult.get(worldID)?.get(sequenceID)?.get(peerID)?.result ?? 0);\n                            const expirationRemaining: bigint =\n                                props.peersResult.get(worldID)?.get(sequenceID)?.get(peerID)?.expirationRemaining\n                                ?? BigInt(0);\n\n                            return (\n                                <MatrixCell\n                                    style={{...style}}\n                                    viewType={props.viewType}\n                                    peerID={peerID}\n                                    sequenceID={sequenceID}\n                                    worldID={worldID}\n                                    result={result}\n                                    expirationRemaining={expirationRemaining}\n                                    addSignatureAttempt={(worldID: bigint, sequenceID: bigint, peerID: bigint) =>\n                                        props.addSignatureAttempt(worldID, sequenceID, peerID)}\n                                    removeSignatureAttempt={(worldID: bigint, sequenceID: bigint, peerID: bigint) =>\n                                        props.removeSignatureAttempt(worldID, sequenceID, peerID)}\n                                />\n                            );\n                        }}\n                    </MatrixGrid>\n                }\n            </AutoSizer>\n        </Box>\n    );\n}\n", "import * as React from \"react\";\nimport {useEffect, useState} from \"react\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Box, styled} from \"@mui/material\";\nimport {Cell} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/FirstColumnCell\";\nimport {darkenPrimary, lightPrimary, lightWhite} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Peer} from \"@backend/Types/Peer\";\n\nconst CellContainer = styled(Cell)({\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems:\"center\",\n    justifyContent: \"center\",\n    textAlign: \"center\",\n    backgroundColor: darkenPrimary,\n    color: lightWhite\n});\n\nconst HeaderTitle = styled(\"span\")({\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    maxHeight: \"40px\",\n    // Half the height of the progress bar\n    top: \"-13.5px\",\n    position: \"relative\",\n    font: primaryFontLarge\n});\n\nconst ProgressionWrapper = styled(Box)((props: {width: number}) => ({\n    position: \"absolute\",\n    bottom: 0,\n    color: lightWhite,\n    font: primaryFontXLarge,\n    backgroundColor: lightPrimary,\n    width:`${props.width}px`,\n}));\n\ninterface HeaderCellProps {\n    index: number;\n    style: React.CSSProperties;\n    peerID: bigint;\n    rotationOrientation: number;\n    progression: number;\n}\n\nexport default function HeaderCell(props: HeaderCellProps) {\n    const app: AppConsole = AppConsole.getInstance();\n    const [peerName, setPeerName] = useState<string>(\"\");\n\n    useEffect(() => {\n        let ignoreAsyncTask: boolean = false;\n\n        app.dataSourcePeers.getPeer(props.peerID).then((peer: Peer) => {\n            if (peer.fullName !== peerName && !ignoreAsyncTask)\n                setPeerName(peer.fullName);\n        })\n\n        return () => { ignoreAsyncTask = true }\n    }, [props.peerID]);\n\n    return (\n        <CellContainer style={{...props.style}}>\n            <Tooltip title={peerName} arrow>\n                <HeaderTitle style={{transform: `rotate(-${props.rotationOrientation}rad)` }}>\n                    {peerName}\n                </HeaderTitle>\n            </Tooltip>\n\n            <ProgressionWrapper width={Number(props.style.width) - 1}>\n                {Math.round(props.progression) ?? 0}%\n            </ProgressionWrapper>\n        </CellContainer>\n    );\n}\n", "import * as React from \"react\";\nimport {useEffect, useState} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {dark, lightGrey, lightWhite, primary, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {\n    primaryFontLarge,\n    primaryFontXLarge,\n    primaryFontXSmall,\n    secondaryFontLarge,\n    secondaryFontMedium,\n} from \"@root/react-components/src/values/fonts/fonts\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {World} from \"@backend/Types/World\";\nimport {TextSnippet} from \"@root/react-components/src/icons/TextSnippet\";\nimport {Star} from \"@root/react-components/src/icons/Star\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {NavLink} from \"react-router-dom\";\nimport {SkillsMatrixViewType} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixContainer\";\nimport {DAY_IN_SECONDS} from \"@utils/utils\";\nimport {Clock} from \"@root/react-components/src/icons/Clock\";\n\nexport const Cell = styled(Box)({\n    boxSizing: \"border-box\",\n    borderRight: `solid 1px ${lightGrey}`,\n    borderBottom: `solid 1px ${lightGrey}`,\n});\n\nconst ContainerCell = styled(Box)((props: {is_world: number}) => ({\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: props.is_world ? \"center\" : \"space-between\",\n    gap: \"5px\",\n    boxSizing: \"border-box\",\n    borderBottom: `solid 1px ${lightGrey}`,\n    borderRight: `solid 1px ${props.is_world ? primary : lightGrey}`,\n    backgroundColor: props.is_world ? primary : lightWhite,\n    color: props.is_world ? lightWhite : dark,\n    font: props.is_world ? primaryFontLarge: secondaryFontLarge,\n    borderLeft: `solid 1px ${lightGrey}`,\n    padding: \"0px 5px\"\n}));\n\nconst RowTitleContainer = styled(Box)((props: {is_blue_row: number}) => ({\n    textAlign: \"left\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    display: \"-webkit-box\",\n    wordWrap: \"break-word\",\n    // Deprecated but it doesn't seem to have a functional alternative. Work on Chrome & Firefox\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_flexible_box_layout/Basic_concepts_of_flexbox\n    WebkitBoxOrient: \"vertical\",\n    WebkitLineClamp: \"2\",\n    font: props.is_blue_row ? primaryFontLarge : secondaryFontMedium\n}));\n\nconst SubTitleWrapper = styled(Box)({\n    font: primaryFontXSmall,\n    paddingTop: \"2px\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    display: \"-webkit-box\",\n    wordWrap: \"break-word\",\n    // Deprecated but it doesn't seem to have a functional alternative. Work on Chrome & Firefox\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_flexible_box_layout/Basic_concepts_of_flexbox\n    WebkitBoxOrient: \"vertical\",\n    WebkitLineClamp: \"2\",\n});\n\nconst NotesDialogContent = styled(Box)({\n    font: secondaryFontMedium,\n    textAlign: \"justify\",\n    maxWidth: 600,\n    maxHeight: 600,\n    overflow: \"auto\",\n\n    \"&::-webkit-scrollbar-track\": {\n        backgroundColor: \"unset\",\n        width: 0\n    },\n    \"&::-webkit-scrollbar\": {\n        width: \"15px\",\n        height: \"15px\",\n    },\n    \"&::-webkit-scrollbar-thumb\": {\n        // the border (transparent) is causing the padding/margin effect\n        border: \"4px solid rgba(0, 0, 0, 0)\",\n        borderRadius: \"10px\",\n        backgroundClip: \"padding-box\",\n        backgroundColor: lightGrey\n    },\n    \"::-webkit-scrollbar-corner\": { // little corner between the 2 scrollbars\n        backgroundColor: \"unset\"\n    }\n});\n\nconst Icon = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    width: \"fit-content\",\n    paddingBottom: \"3px\",\n    \"& svg\": {\n        fill: dark,\n        width: \"12px\",\n        height: \"12px\"\n    }\n});\n\nconst UNCLIPPED_TITLE_LENGTH: number = 18;\nconst TOOLTIP_ENTER_DELAY: number = 250;\nconst TOOLTIP_ENTER_NEXT_DELAY: number = 500;\n\ninterface SequenceData {\n    critical: boolean;\n    notes: string;\n    expiration: bigint;\n}\n\ninterface FirstColumnCellProps {\n    index: number;\n    style: React.CSSProperties;\n    viewType: SkillsMatrixViewType;\n    worldID: bigint;\n    sequenceID: bigint;\n    level: bigint;\n}\n\nexport default function FirstColumnCell(props: FirstColumnCellProps) {\n    const app: AppConsole = AppConsole.getInstance();\n\n    const [title, setTitle] = useState<string>(\"\");\n    const [expiration, setExpiration] = useState<bigint>(BigInt(0));\n    const [subTitle, setSubTitle] = useState<string>(\"\");\n    const [sequenceNotes, setSequenceNotes] = useState<string>(\"\");\n    const [isNotesDialogOpen, setIsNotesDialogOpen] = useState<boolean>(false);\n    const [isCritical, setIsCritical] = useState<boolean>(false);\n\n    useEffect(() => {\n        let ignoreAsyncTask: boolean = false;\n\n        // we need to specify the check on the undefined since otherwise level 0 will not be visible\n        if (props.viewType === SkillsMatrixViewType.LEVELS && !props.worldID) {\n            setTitle(`${i18next.t(\"Level\")} ${Number(props.level)}`);\n            return;\n        }\n\n        fetchCellTitle().then(({cellTitle, cellSubTitle}: {cellTitle: string, cellSubTitle: string}) => {\n            if (cellTitle !== title && !ignoreAsyncTask)\n                setTitle(cellTitle);\n\n            if (cellSubTitle !== subTitle  && !ignoreAsyncTask)\n                setSubTitle(cellSubTitle);\n        });\n\n        if (!props.sequenceID)\n            return () => { ignoreAsyncTask = true; };\n\n        fetchSequenceData(props.worldID, props.sequenceID).then((sequence: SequenceData) => {\n            if (ignoreAsyncTask)\n                return;\n            if (sequence.critical !== isCritical)\n                setIsCritical(sequence.critical);\n            if (sequence.notes !== sequenceNotes)\n                setSequenceNotes(sequence.notes);\n            if(sequence.expiration !== BigInt(0) && sequence.expiration !== expiration) {\n                setExpiration(sequence.expiration / DAY_IN_SECONDS);\n            }\n        });\n\n        return () => { ignoreAsyncTask = true; };\n    }, [props.worldID, props.sequenceID, props.viewType]);\n\n    async function fetchCellTitle(): Promise<{cellTitle: string, cellSubTitle: string}> {\n        const sequence: Sequence = await app.dataSourceSequences.getSequence(props.worldID, props.sequenceID);\n        if (props.viewType === SkillsMatrixViewType.WORLDS && props.sequenceID)\n            return {cellTitle: sequence.Title.value, cellSubTitle: \"\"};\n\n        const world: World = await app.dataSourceWorlds.getWorld(props.worldID);\n        if (props.viewType === SkillsMatrixViewType.WORLDS && !props.sequenceID)\n            return {cellTitle: world.Title.value, cellSubTitle: \"\"};\n\n        // for levels view we need both sequence and world title\n        return {cellTitle: sequence.Title.value, cellSubTitle: world.Title.value};\n    }\n\n    async function fetchSequenceData(worldID: bigint, sequenceID: bigint): Promise<SequenceData> {\n        if (!worldID || !sequenceID)\n            return {critical: false, notes: \"\", expiration: BigInt(0)};\n        const sequence: Sequence = await app.dataSourceSequences.getSequence(worldID, sequenceID);\n        return {critical: sequence.Critical.value, notes: sequence.Notes.value, expiration: sequence.Expiration.value};\n    }\n\n    function getRedirectLink(): string {\n        return props.sequenceID ?\n            `/Console/Analytics/Worlds/${props.worldID}/Sequences/${props.sequenceID}` :\n            `/Console/Analytics/Worlds/${props.worldID}`;\n    }\n\n    function makeLinksClickable(segment: string): JSX.Element {\n        const paragraphs: string[] = segment.split(\"\\n\");\n\n        return (\n            <Box>\n                {paragraphs.map((paragraph: string, index: number) => {\n                    const words: string[] = paragraph.split(\" \");\n\n                    return (\n                        <Box key={index} component=\"p\">\n                            {words.map((word: string, indexWords: number) => {\n                                if (!word.startsWith(\"https://\"))\n                                    return <React.Fragment key={indexWords}>{word}{\" \"}</React.Fragment>;\n\n                                let ending: string = \"\";\n                                const lastChar: string = word[word.length - 1];\n                                if ([\",\", \".\", \"!\", \"?\", \":\", \";\"].includes(lastChar)) {\n                                    ending = lastChar;\n                                    word = word.slice(0, -1);\n                                }\n\n                                return (\n                                    <React.Fragment key={indexWords}>\n                                        <a href={word} target=\"_blank\">{word}</a>\n                                        {ending}{\" \"}\n                                    </React.Fragment>\n                                );\n                            })}\n                        </Box>\n                    );\n                })}\n            </Box>\n        );\n    }\n\n    return <>\n        <ContainerCell style={{...props.style}} is_world={Number(!props.sequenceID)}>\n            <Box>\n                <NavLink\n                    style={{\n                        color: \"unset\",\n                        textDecoration: \"none\",\n                        cursor: props.worldID ? \"pointer\" : \"default\",\n                        pointerEvents: props.worldID ? \"unset\" : \"none\"\n                    }}\n                    to={getRedirectLink()}\n                >\n                    <Tooltip\n                        enterDelay={TOOLTIP_ENTER_DELAY}\n                        enterNextDelay={TOOLTIP_ENTER_NEXT_DELAY}\n                        arrow\n                        title={title.length > UNCLIPPED_TITLE_LENGTH ? title : \"\"}\n                    >\n                        <RowTitleContainer is_blue_row={Number(!props.sequenceID)}> {title} </RowTitleContainer>\n                    </Tooltip>\n                    {Boolean(subTitle.length) && <SubTitleWrapper>{subTitle}</SubTitleWrapper>}\n                </NavLink>\n            </Box>\n            {Boolean(props.sequenceID) &&\n                <Box style={{display: \"flex\", gap: \"5px\"}}>\n                    {Boolean(expiration) &&\n                        <Tooltip title={`${i18next.t(\"Expiration: {{expiration}} days\", {expiration: expiration.toString()})}`}>\n                            <Icon style={{cursor: \"pointer\"}}>\n                                <Clock/>\n                            </Icon>\n                        </Tooltip>\n                    }\n                    {Boolean(sequenceNotes) &&\n                        <Icon style={{cursor: \"pointer\"}} onClick={() => setIsNotesDialogOpen(true)}>\n                            <TextSnippet />\n                        </Icon>\n                    }\n                    {isCritical &&\n                        <Tooltip\n                            enterDelay={TOOLTIP_ENTER_DELAY}\n                            enterNextDelay={TOOLTIP_ENTER_NEXT_DELAY}\n                            placement=\"top\"\n                            title={i18next.t(\"Critical Sequence\")}\n                        >\n                            <Icon> <Star color={yellow} fillColor={yellow} /> </Icon>\n                        </Tooltip>\n                    }\n                </Box>\n            }\n        </ContainerCell>\n        {isNotesDialogOpen &&\n            <Dialog\n                size={DialogSize.xs}\n                innerStyle={{display: \"flex\", flexDirection: \"column\", gap: 5}}\n                closeOnClickOutside\n                onClose={() => setIsNotesDialogOpen(false)}\n            >\n                <Box style={{ font: primaryFontXLarge }}> {i18next.t(\"Notes\")} </Box>\n                <NotesDialogContent>{makeLinksClickable(sequenceNotes)}</NotesDialogContent>\n                <Box style={{display: \"flex\", justifyContent: \"flex-end\"}}>\n                    <Button\n                        variant=\"outlined\"\n                        onClick={() => setIsNotesDialogOpen(false)}\n                    >\n                        {i18next.t(\"Close\")}\n                    </Button>\n                </Box>\n            </Dialog>\n        }\n    </>;\n}\n", "import React, {ReactElement} from \"react\";\n\nexport function TextSnippet(): ReactElement {\n    return <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g clipPath=\"url(#clip0_3095_275)\">\n            <path d=\"M2.66667 21.3333H21.3333V9.1L14.9 2.66667H2.66667V21.3333ZM2.66667 24C1.93333 24 1.30556 23.7389 0.783333 23.2167C0.261111 22.6944 0 22.0667 0 21.3333V2.66667C0 1.93333 0.261111 1.30556 0.783333 0.783333C1.30556 0.261111 1.93333 0 2.66667 0H16L24 8V21.3333C24 22.0667 23.7389 22.6944 23.2167 23.2167C22.6944 23.7389 22.0667 24 21.3333 24H2.66667ZM5.33333 18.6667H18.6667V16H5.33333V18.6667ZM5.33333 13.3333H18.6667V10.6667H5.33333V13.3333ZM5.33333 8H14.6667V5.33333H5.33333V8Z\" fill=\"black\"/>\n        </g>\n        <defs>\n            <clipPath id=\"clip0_3095_275\">\n                <rect width=\"24\" height=\"24\" fill=\"white\"/>\n            </clipPath>\n        </defs>\n    </svg>;\n}\n", "import {Box, styled} from \"@mui/material\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport * as React from \"react\";\nimport {Cell} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/FirstColumnCell\";\nimport {primaryFontLarge, secondaryFontLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {\n    dark,\n    lightWhite\n} from \"@root/react-components/src/values/colors/colors\";\nimport {useEffect, useState} from \"react\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport MatrixCellDialog\n    from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/CellDialog/MatrixCellDialog\";\nimport {SkillsMatrixViewType} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixContainer\";\nimport {PartialDonut} from \"@root/Frontend/Console/components/PartialDonut\";\nimport i18next from \"i18next\";\nimport {formatDate} from \"@utils/utils\";\n\nconst GridCell = styled(Cell)({\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    font: primaryFontLarge,\n    backgroundColor: `${lightWhite} !important`,\n    color: dark\n});\n\nconst RatioWrapper = styled(Box)({\n    width: \"45px\",\n    height: \"45px\",\n    padding: \"5px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderRadius: \"50%\",\n    color: lightWhite,\n    font: secondaryFontMedium,\n    \":hover\": {\n        cursor: \"pointer\"\n    }\n});\n\ninterface MatrixCellProps {\n    viewType: SkillsMatrixViewType;\n    expirationRemaining: bigint;\n    peerID: bigint;\n    sequenceID: bigint;\n    worldID: bigint;\n    result: number;\n    style: React.CSSProperties;\n    addSignatureAttempt: (worldID: bigint, sequenceID: bigint, peerID: bigint) => void;\n    removeSignatureAttempt: (worldID: bigint, sequenceID: bigint, peerID: bigint) => void;\n}\n\ninterface SequenceAttributes {\n    objective: number;\n    isEvaluation: boolean;\n    expiration: bigint;\n}\n\nexport function MatrixCell(props: MatrixCellProps) {\n    const app: AppConsole = AppConsole.getInstance();\n    const [isSequenceAnEvaluation, setIsSequenceAnEvaluation] = useState(false);\n    const [isObjectiveReached, setIsObjectiveReached] = useState<boolean | null>(null);\n    const [sequenceObjective, setSequenceObjective] = useState<bigint | number>(0);\n    const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\n    const [expirationPercent, setExpirationPercent] = useState<number>(0);\n\n    useEffect(() => {\n        let ignoreAsyncTask: boolean = false;\n        getSequenceAttributes(props.worldID, props.sequenceID).then(\n            ({objective, isEvaluation, expiration}: SequenceAttributes) => {\n                if (!ignoreAsyncTask) {\n                    setSequenceObjective(objective > 0 ? objective : 1);\n                    setIsSequenceAnEvaluation(isEvaluation);\n                    setIsObjectiveReached(props.result >= objective);\n                    const percent: number = expiration ? Number(props.expirationRemaining * BigInt(100) / expiration) : 0;\n                    setExpirationPercent(percent);\n                }\n            }\n        );\n        return () => { ignoreAsyncTask = true; };\n    }, [props.result, props.expirationRemaining]);\n\n    async function getSequenceAttributes(worldID: bigint, sequenceID: bigint): Promise<SequenceAttributes> {\n        const sequence: Sequence = await app.dataSourceSequences.getSequence(worldID, sequenceID);\n        const isEvaluation: boolean = Boolean(sequence.ObjectiveGrade.value);\n        const objective: number = isEvaluation ?\n            sequence.ObjectiveGrade.value : Number(sequence.ObjectiveVisualizations.value);\n        // some objective visualizations are still 0, which creates an invalid UI\n        return { objective: objective ? objective : 1, isEvaluation, expiration: sequence.Expiration.value };\n    }\n\n    const expirationDate = new Date(Date.now() + Number(props.expirationRemaining) * 1000);\n    const tooltipTitle: string = props.expirationRemaining ? i18next.t(\"Expires on {{date}}\", {\n            date: formatDate(expirationDate, false)\n        }): \"\";\n    return (\n        <>\n            <GridCell style={{...props.style}} onClick={() => setIsDialogOpen(true)}>\n                {/* Prevent flickering between red and green */}\n                {isObjectiveReached !== null &&\n                    <RatioWrapper>\n                        <Tooltip title={tooltipTitle}>\n                            <Box style={{position: \"relative\", height: \"45px\"}}>\n                                <PartialDonut isReached={isObjectiveReached} percentage={expirationPercent}>\n                                    <Box style={{ font: expirationPercent === 0 ? secondaryFontLarge : secondaryFontMedium}}>\n                                        {isSequenceAnEvaluation ?\n                                            `${Math.round(props.result * 100)}%` :\n                                            <>\n                                                <sup>{props.result.toString()}</sup>\n                                                <Box component=\"span\" style={{transform: \"scale(0.5)\"}}>\n                                                    /\n                                                </Box>\n                                                <sub>{sequenceObjective.toString()}</sub>\n                                            </>\n                                        }\n                                    </Box>\n                                </PartialDonut>\n                            </Box>\n                        </Tooltip>\n                    </RatioWrapper>\n                }\n            </GridCell>\n            {isDialogOpen &&\n                <MatrixCellDialog\n                    worldID={props.worldID}\n                    sequenceID={props.sequenceID}\n                    peerID={props.peerID}\n                    addSignatureAttempt={(worldID: bigint, sequenceID: bigint, peerID: bigint) =>\n                        props.addSignatureAttempt(worldID, sequenceID, peerID)}\n                    removeSignatureAttempt={(worldID: bigint, sequenceID: bigint, peerID: bigint) =>\n                        props.removeSignatureAttempt(worldID, sequenceID, peerID)}\n                    onClose={() => setIsDialogOpen(false)}\n                />\n            }\n        </>\n    );\n}", "import * as React from \"react\";\nimport {useEffect, useState} from \"react\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, styled} from \"@mui/material\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {World} from \"@backend/Types/World\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {primaryFontLarge, secondaryFontLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {darkenPrimary, red, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {\n    TimeSpentByTimeStampChart,\n    TimeSpentByTimeStampChartData\n} from \"@root/Frontend/Console/widgets/TimeSpentByTimeStampChart\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {UtilsStats} from \"@backend/Utils/UtilsStats\";\nimport {NoDataToDisplay} from \"@root/Frontend/Console/components/NoDataToDisplay\";\nimport {\n    SignatureInput\n} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/CellDialog/SignatureInput\";\nimport {NavLink} from \"react-router-dom\";\nimport {\n    Signature\n} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/SkillsMatrixElements/CellDialog/Signature\";\nimport {isAttemptCompleted} from \"@root/Frontend/Console/utils/UtilsAttempts\";\n\nconst SIGNATURE_WIDTH: number = 600;\nconst SIGNATURE_HEIGHT: number = 200;\n\nconst HeaderContainer = styled(Box)({\n    backgroundColor: darkenPrimary,\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    gap: \"16px\",\n    padding: \"20px\",\n    borderRadius: \"24px\"\n});\n\nconst Cell = styled(Box)({\n    width: \"300px\",\n    display: \"flex\",\n    flexDirection:\"column\",\n    alignItems: \"center\",\n    gap: \"10px\",\n    font: secondaryFontLarge,\n    color: white\n});\n\nconst TitleContainer = styled(Box)({\n    display: \"flex\",\n    font: primaryFontLarge,\n    textAlign: \"center\"\n});\n\nconst ValueWrapper = styled(\"span\")({\n    maxWidth: \"250px\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n});\n\nconst GraphContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    paddingTop: \"20px\"\n});\n\nconst SignatureContainer = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"column\",\n    padding: \"8px 0px\"\n});\n\ninterface MatrixCellDialogProps {\n    worldID: bigint;\n    sequenceID: bigint;\n    peerID: bigint;\n    onClose: () => void;\n    addSignatureAttempt: (worldID: bigint, sequenceID: bigint, peerID: bigint) => void;\n    removeSignatureAttempt: (worldID: bigint, sequenceID: bigint, peerID: bigint) => void;\n}\n\nexport default function MatrixCellDialog(props: MatrixCellDialogProps) {\n    const app: AppConsole = AppConsole.getInstance();\n\n    const [chartData, setChartData] = useState<TimeSpentByTimeStampChartData[]>([]);\n    const [signatureAttempt, setSignatureAttempt] = useState<AttemptLogs | null>(null);\n    const [newSignature, setNewSignature] = useState<string>(\"\");\n    const [invalidSignature, setInvalidSignature] = useState<boolean>(false);\n    const [worldTitle, setWorldTitle] = useState<string>(\"\");\n    const [sequenceTitle, setSequenceTitle] = useState<string>(\"\");\n    const [peerName, setPeerName] = useState<string>(\"\");\n    \n    // sorted in ascending chronological order\n    const [sortedAttemptIDs, setSortedAttemptIDs] = useState<bigint[]>([]);\n    const [sequenceVisualizationsObjective, setSequenceVisualizationsObjective] = useState<bigint | null>(null);\n\n    useEffect(() => {\n        app.dataSourcePeers.getPeer(props.peerID).then((peer: Peer) => setPeerName(peer.fullName));\n        app.dataSourceWorlds.getWorld(props.worldID).then((world: World) => setWorldTitle(world.Title.value));\n        app.dataSourceSequences.getSequence(props.worldID, props.sequenceID).then((sequence: Sequence) => {\n                setSequenceTitle(sequence.Title.value);\n\n                if (!sequence.ObjectiveGrade.value)\n                    setSequenceVisualizationsObjective(sequence.ObjectiveVisualizations.value);\n            }\n        );\n\n        fetchSortedAttempts(props.worldID, props.peerID).then((sortedAttempt: AttemptLogs[]) => {\n            setSortedAttemptIDs(sortedAttempt.map((attempt: AttemptLogs) => attempt.attemptID));\n\n            parseAttemptSignature(sortedAttempt).then(\n                (signatureAttempt: AttemptLogs | null) => setSignatureAttempt(signatureAttempt));\n\n            processChartAttempts(sortedAttempt).then(\n                (result: TimeSpentByTimeStampChartData[]) => setChartData(result));\n        });\n    }, []);\n\n    function getRedirectLink(goToSequenceView: boolean): string {\n        return goToSequenceView ?\n            `/Console/Analytics/Worlds/${props.worldID}/Sequences/${props.sequenceID}?peerID=${props.peerID}` :\n            `/Console/Analytics/Worlds/${props.worldID}?peerID=${props.peerID}`;\n    }\n\n    async function fetchSortedAttempts(worldID: bigint, peerID: bigint): Promise<AttemptLogs[]> {\n        const allAttempts: AttemptLogs[] =\n            await app.dataSourceAttemptLogs.getAttemptsUpToLastMajor(props.worldID, props.sequenceID, false);\n        const sortedAttempts: AttemptLogs[] = [];\n\n        for (const attempt of allAttempts) {\n            const sequenceAttempt: Sequence = await app.dataSourceSequences.getSequence(worldID, attempt.sequenceID);\n            if (attempt.peerID === peerID && isAttemptCompleted(sequenceAttempt, attempt))\n                sortedAttempts.push(attempt);\n        }\n\n        sortedAttempts.sort((attempt1: AttemptLogs, attempt2: AttemptLogs) => {\n            const timestamp1: bigint = attempt1.getTimestamps()[0] ?? BigInt(0);\n            const timestamp2: bigint = attempt2.getTimestamps()[0] ?? BigInt(0);\n\n            if (timestamp1 < timestamp2)\n                return -1;\n            return timestamp1 > timestamp2 ? 1 : 0;\n        });\n\n        return sortedAttempts;\n    }\n\n    async function parseAttemptSignature(attemptLogs: AttemptLogs[]): Promise<AttemptLogs | null> {\n        if (attemptLogs.length === 0)\n            return null;\n\n        const attempt: AttemptLogs = attemptLogs[attemptLogs.length - 1];\n\n        return attempt.getStepInputs()[0].length > 0 ? attempt : null;\n    }\n\n    async function processChartAttempts(sortedAttempts: AttemptLogs[] ):\n        Promise<TimeSpentByTimeStampChartData[]> {\n        const timeSpentByAttempts: TimeSpentByTimeStampChartData[] = [];\n\n        for (const attempt of sortedAttempts) {\n            const timestamp: bigint = attempt.getTimestamps()[0];\n            const timeSpent: bigint = UtilsStats.computeAttemptTime(attempt);\n            timeSpentByAttempts.push({ timestamp, timeSpent });\n        }\n\n        return timeSpentByAttempts;\n    }\n\n    async function saveSignature() {\n        const {worldID, sequenceID, peerID} = props;\n\n        if (!newSignature)\n            return;\n\n        const currentPeerID: bigint = app.currentPeerID;\n        const attemptID: bigint =\n            await app.dataSourceSequences.saveSignatureLog(worldID, sequenceID, peerID, currentPeerID, newSignature);\n\n        if (!attemptID) {\n            setInvalidSignature(true);\n            return;\n        }\n\n        app.dataSourceAttemptLogs.invalidateCache(worldID, sequenceID);\n        setSignatureAttempt(await app.dataSourceAttemptLogs.getAttemptLogs(worldID, sequenceID, attemptID));\n        setNewSignature(\"\");\n        props.addSignatureAttempt(worldID, sequenceID, peerID);\n    }\n\n    function showDialogContent(): JSX.Element {\n        if (signatureAttempt && sequenceVisualizationsObjective === BigInt(1))\n            return (\n                <SignatureContainer>\n                    <Signature\n                        attemptID={signatureAttempt.attemptID}\n                        height={SIGNATURE_HEIGHT}\n                        onDelete={() =>\n                            props.removeSignatureAttempt(signatureAttempt.worldID, props.sequenceID, signatureAttempt.peerID)}\n                        peerID={signatureAttempt.peerID}\n                        sequenceID={signatureAttempt.sequenceID}\n                        width={SIGNATURE_WIDTH}\n                        worldID={signatureAttempt.worldID}\n                    />\n                </SignatureContainer>\n            );\n\n        if (!sortedAttemptIDs.length && sequenceVisualizationsObjective === BigInt(1))\n            return (\n                <SignatureContainer>\n                    <Box style={{paddingBottom: \"8px\", font: secondaryFontMedium}}>\n                        {i18next.t(\"You are about to confirm the realization of\")} <b>{sequenceTitle}</b>&nbsp;\n                        {i18next.t(\"by\")} <b>{peerName}</b>. {i18next.t(\"Please sign to confirm\")}.\n                    </Box>\n                    <SignatureInput\n                        signature={newSignature}\n                        setSignature={(newSignature: string) => setNewSignature(newSignature)}\n                        width={SIGNATURE_WIDTH}\n                        height={SIGNATURE_HEIGHT}\n                    />\n                    {invalidSignature &&\n                        <Box style={{paddingTop: \"8px\", color: red}}>\n                            {i18next.t(\"Signature failed\")}. {i18next.t(\"Refresh the page or try again later\")}.\n                        </Box>\n                    }\n                </SignatureContainer>\n            );\n\n        if (sortedAttemptIDs.length)\n            return (\n                <GraphContainer>\n                    <Box style={{font: secondaryFontLarge}}> {i18next.t(\"Evolution of attempts time\")} </Box>\n                    <Box sx={{display: \"flex\", width: \"100%\", height: \"400px\"}}>\n                        <TimeSpentByTimeStampChart data={chartData} disableAnimation/>\n                    </Box>\n                </GraphContainer>\n            );\n\n        return <NoDataToDisplay/>;\n    }\n\n    return (\n        <Dialog\n            size={DialogSize.md}\n            closeOnClickOutside\n            onClose={() => props.onClose()}\n            innerStyle={{minHeight: \"400px\", justifyContent: \"space-between\"}}\n        >\n            <HeaderContainer>\n                <Cell>\n                    {i18next.t(\"User\")}:\n                    <TitleContainer><ValueWrapper>{peerName}</ValueWrapper></TitleContainer>\n                </Cell>\n                <Cell>\n                    {i18next.t(\"World\")}:\n                    <NavLink style={{ color: \"unset\", textDecoration: \"none\"}} to={getRedirectLink(false)}>\n                        <TitleContainer>\n                            <Tooltip enterNextDelay={500} arrow title={worldTitle.length > 25 ? worldTitle : \"\"}>\n                                <ValueWrapper>{worldTitle}</ValueWrapper>\n                            </Tooltip>\n                        </TitleContainer>\n                    </NavLink>\n                </Cell>\n                <Cell>\n                    {i18next.t(\"Sequence\")}:\n                    <NavLink style={{ color: \"unset\", textDecoration: \"none\"}} to={getRedirectLink(true)}>\n                        <TitleContainer>\n                            <Tooltip enterNextDelay={500} arrow title={sequenceTitle.length > 25 ? sequenceTitle : \"\"}>\n                                <ValueWrapper>{sequenceTitle}</ValueWrapper>\n                            </Tooltip>\n                        </TitleContainer>\n                    </NavLink>\n                </Cell>\n            </HeaderContainer>\n            {showDialogContent()}\n            <Box style={{display: \"flex\", justifyContent: \"flex-end\", gap: \"8px\"}}>\n                <Button variant=\"outlined\" onClick={() => props.onClose()}> {i18next.t(\"Close\")}</Button>\n                {Boolean(!sortedAttemptIDs.length) && sequenceVisualizationsObjective === BigInt(1)  &&\n                    <Button\n                        onClick={async () => await saveSignature()}\n                        disabled={!newSignature}>\n                        {i18next.t(\"Save\")}\n                    </Button>\n                }\n            </Box>\n        </Dialog>\n    );\n}", "import * as React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {lightGrey, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"column\",\n    position: \"relative\",\n    border: `2px solid ${primary}`,\n    borderRadius: \"12px\"\n});\n\nconst CloseIconWrapper = styled(Box)((props: {disabled: boolean}) => ({\n    position: \"absolute\",\n    top: \"8px\",\n    right: \"8px\",\n    cursor: \"pointer\",\n    \"svg\": {\n        height: \"24px\",\n        width: \"24px\",\n        color: props.disabled ? lightGrey : primary\n    }\n}));\n\ninterface SignatureInputProps {\n    setSignature: (signature: string) => void;\n    signature: string;\n    height: number;\n    width: number;\n}\n\ninterface SignatureInputState {\n    filename: string;\n    isDrawing: boolean;\n    lastPositionX: number;\n    lastPositionY: number;\n}\n\nexport class SignatureInput extends React.Component {\n    private canvasRef: React.RefObject<HTMLCanvasElement> = React.createRef<HTMLCanvasElement>();\n\n    props: SignatureInputProps;\n    state: SignatureInputState = {\n        filename: UtilsShared.generateRandomString(6),\n        isDrawing: false,\n        lastPositionX: 0,\n        lastPositionY: 0,\n    }\n\n    componentDidMount() {\n        const canvas: HTMLCanvasElement | null = this.canvasRef.current;\n        if (!canvas)\n            return;\n\n        const canvasContext: CanvasRenderingContext2D | null = canvas.getContext(\"2d\", { willReadFrequently: true });\n        if (!canvasContext)\n            return;\n\n        // define the style of the signature\n        canvasContext.lineWidth = 5;\n        canvasContext.strokeStyle = \"#000\";\n\n        canvas.addEventListener(\"touchstart\", (e: TouchEvent) => this.startDrawing(e));\n        canvas.addEventListener(\"touchmove\", (e: TouchEvent) => this.handleTouchMove(e), { passive: false });\n        canvas.addEventListener(\"touchend\", () => this.stopDrawing());\n    }\n\n    componentWillUnmount() {\n        const canvas: HTMLCanvasElement | null = this.canvasRef.current;\n        if (!canvas)\n            return;\n\n        canvas.removeEventListener(\"touchstart\", (e: TouchEvent) => this.startDrawing(e));\n        canvas.removeEventListener(\"touchmove\", this.handleTouchMove);\n        canvas.removeEventListener(\"touchend\", () => this.stopDrawing());\n    }\n\n    private getCoords(e: TouchEvent | React.MouseEvent<HTMLCanvasElement, MouseEvent>) {\n        const canvas: HTMLCanvasElement | null = this.canvasRef.current;\n        if (!canvas)\n            return { x: 0, y: 0 };\n\n        const rect: DOMRect = canvas.getBoundingClientRect();\n\n        // Handle native touch events\n        if ('touches' in e) {\n            const touch: Touch = e.touches[0];\n            return {\n                x: touch.clientX - rect.left,\n                y: touch.clientY - rect.top,\n            };\n        }\n\n        // Handle React mouse events\n        if (\"nativeEvent\" in e) {\n            return {\n                x: e.nativeEvent.offsetX,\n                y: e.nativeEvent.offsetY,\n            };\n        }\n\n        // was neither a touch event nor a mouse event\n        return { x: 0, y: 0 };\n    }\n\n    private startDrawing(e: TouchEvent | React.MouseEvent<HTMLCanvasElement, MouseEvent>) {\n        const { x, y } = this.getCoords(e);\n        this.setState({\n            isDrawing: true,\n            lastPositionX: x,\n            lastPositionY: y\n        });\n    }\n\n    private draw(e: TouchEvent | React.MouseEvent<HTMLCanvasElement, MouseEvent>) {\n        if (!this.state.isDrawing || !this.canvasRef.current)\n            return;\n\n        const canvasRenderingContext: CanvasRenderingContext2D | null = this.canvasRef.current.getContext(\"2d\");\n        if (!canvasRenderingContext)\n            return;\n\n        const { x, y } = this.getCoords(e);\n\n        canvasRenderingContext.beginPath();\n        canvasRenderingContext.moveTo(this.state.lastPositionX, this.state.lastPositionY);\n        canvasRenderingContext.lineTo(x, y);\n        canvasRenderingContext.stroke();\n\n        this.setState({ lastPositionX: x, lastPositionY: y });\n    }\n\n    private stopDrawing() {\n        if (!this.state.isDrawing || !this.canvasRef.current)\n            return;\n\n        const signature: string = this.createSignatureBase64(this.canvasRef.current);\n        if (!signature)\n            return;\n\n        this.setState({ isDrawing: false, signature });\n        this.props.setSignature(signature);\n    }\n\n    private createSignatureBase64(canvas: HTMLCanvasElement): string {\n        const engine: MainModule = AppConsole.getInstance().getEngine();\n        const context: CanvasRenderingContext2D | null = canvas.getContext(\"2d\");\n        if (!context || !engine)\n            return \"\";\n\n        const width: number = canvas.width;\n        const height: number = canvas.height;\n\n        const imageData: ImageData = context.getImageData(0, 0, width, height);\n        const rgbaData:  Uint8ClampedArray<ArrayBufferLike> = imageData.data;\n        const oneChannelData = new Uint8Array(width * height);\n        for (let i: number = 0; i < width * height; i++) {\n            const currentIndex: number = i * 4;\n            const r: number = rgbaData[currentIndex];\n            const g: number = rgbaData[currentIndex + 1];\n            const b: number = rgbaData[currentIndex + 2];\n            const a: number = rgbaData[currentIndex + 3];\n\n            // Convert the image to grayscale formula\n            oneChannelData[i] = a === 0 ? 255 : 0.299 * r + 0.587 * g + 0.114 * b;\n        }\n\n        const buffer: number = engine._malloc(oneChannelData.length);\n        engine.HEAPU8.set(oneChannelData, buffer);\n\n        // Write grayscale signature image to a png file\n        const pngBuffer = engine.writeImageToMemoryPNG(buffer, width, height, 1);\n        engine._free(buffer);\n\n        const png: string = btoa(String.fromCharCode(...pngBuffer));\n        engine._free(pngBuffer);\n\n        return png;\n    }\n\n    private handleTouchMove(e: TouchEvent | React.MouseEvent<HTMLCanvasElement, MouseEvent>) {\n        e.preventDefault(); // Prevent scroll on mobile while drawing\n        this.draw(e);\n    }\n\n    private clearCanvas() {\n        const canvas: HTMLCanvasElement | null = this.canvasRef.current;\n        if (!canvas)\n            return;\n\n        const canvasRenderingContext: CanvasRenderingContext2D | null = canvas.getContext(\"2d\");\n        if (!canvasRenderingContext)\n            return;\n\n        canvasRenderingContext.clearRect(0, 0, this.props.width, this.props.height);\n        this.props.setSignature(\"\");\n    }\n\n    render() {\n        return (\n            <Container>\n                <CloseIconWrapper\n                    disabled={!this.props.signature.length}\n                    onClick={() => this.clearCanvas()}\n                >\n                    <Close />\n                </CloseIconWrapper>\n                <canvas\n                    ref={this.canvasRef}\n                    width={this.props.width}\n                    height={this.props.height}\n                    style={{ touchAction: \"none\" }}\n                    onMouseDown={(e: React.MouseEvent<HTMLCanvasElement, MouseEvent>) => this.startDrawing(e)}\n                    onMouseMove={(e: React.MouseEvent<HTMLCanvasElement, MouseEvent>) => this.draw(e)}\n                    onMouseUp={() => this.stopDrawing()}\n                    onMouseLeave={() => this.stopDrawing()}\n                />\n            </Container>\n        );\n    }\n}\n", "import React, {useEffect, useState} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {primary, red} from \"@root/react-components/src/values/colors/colors\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Delete} from \"@root/react-components/src/icons/Delete\";\nimport i18next from \"i18next\";\nimport {canPeerEditWorld} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {SequenceLogs} from \"@backend/Types/SequenceLogs\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {timestampToString} from \"@utils/utils\";\n\nconst SignatureImageContainer = styled(Box)((props: { height: number, width: number }) => ({\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    borderRadius: \"16px\",\n    overflow: \"hidden\",\n    border: `2px solid ${primary}`,\n    backgroundColor: \"#FFF\",\n    gap: \"5px\",\n    height: `${props.height}px`,\n    width: `${props.width}px`\n}));\n\nconst DeleteIcon = styled(Box)({\n    position: \"absolute\",\n    top: \"8px\",\n    right: \"8px\",\n    cursor: \"pointer\",\n    \"svg\": {\n        height: \"24px\",\n        width: \"24px\",\n        color: red\n    },\n});\n\nenum SignatureActionState {\n    VIEWING,\n    CONFIRM_DELETION,\n    DELETING,\n    DELETION_ERROR\n}\n\ninterface SignatureInfo {\n    signature: string;\n    signatory: string;\n    date: string;\n}\n\nconst EMPTY_SIGNATURE: SignatureInfo = { signature: \"\", signatory: \"\", date: \"\" };\n\ninterface SignatureProps {\n    attemptID: bigint;\n    height: number;\n    onDelete: () => void;\n    peerID: bigint;\n    sequenceID: bigint;\n    width: number;\n    worldID: bigint;\n}\n\nexport function Signature(props: SignatureProps): JSX.Element {\n    const app: AppConsole = AppConsole.getInstance();\n\n    const [actionState, setActionState] = useState<SignatureActionState>(SignatureActionState.VIEWING);\n    const [canEditWorld, setCanEditWorld] = useState<boolean>(false);\n    const [date, setDate] = useState<string>(\"\");\n    const [peerName, setPeerName] = useState<string>(\"\");\n    const [sequenceTitle, setSequenceTitle] = useState<string>(\"\");\n    const [signatory, setSignatory] = useState<string>(\"\");\n    const [signature, setSignature] = useState<string>(\"\");\n\n    useEffect(() => {\n        canPeerEditWorld(app.currentPeerID, props.worldID).then((canEdit: boolean) => setCanEditWorld(canEdit));\n        app.dataSourceSequences.getSequence(props.worldID, props.sequenceID).then(\n            (sequence: Sequence) => setSequenceTitle(sequence.Title.value));\n        app.dataSourcePeers.getPeer(props.peerID).then((peer: Peer) => setPeerName(peer.fullName));\n    }, []);\n\n    useEffect(() => {\n        fetchSignatureInfo(props.worldID, props.sequenceID, props.attemptID).then(\n            ({signature, signatory, date}: SignatureInfo) => {\n                setSignature(signature);\n                setSignatory(signatory);\n                setDate(date);\n        });\n    }, [props.attemptID]);\n\n    async function fetchSignatureInfo(worldID: bigint, sequenceID: bigint, attemptID: bigint): Promise<SignatureInfo> {\n        const sequence: Sequence = await app.dataSourceSequences.getSequence(worldID, sequenceID);\n        const sequenceLogs: SequenceLogs = sequence.Logs.value;\n        const index: number = sequenceLogs.getStepsAttemptIDs().findIndex((id: bigint) => id === attemptID);\n        if (index < 0)\n            return EMPTY_SIGNATURE;\n\n        const attemptSignature: string = sequenceLogs.getStepsInputs()[index];\n        const attemptPeerID: bigint = sequenceLogs.getPeerIDs()[index];\n        const timestamp: bigint = sequenceLogs.getStepsTimestamps()[index];\n\n        if (!attemptSignature || attemptPeerID !== props.peerID)\n            return EMPTY_SIGNATURE;\n\n        // the peer that signed the attempt is identified in the entityID\n        const signatoryPeerID: bigint = sequenceLogs.getEntityID(index);\n        const peer: Peer = await app.dataSourcePeers.getPeer(signatoryPeerID);\n        const date: string = timestampToString(timestamp);\n\n        return {\n            signatory: peer.fullName,\n            signature: `data:image/png;base64,${attemptSignature}`,\n            date\n        };\n    }\n\n    async function handleSignatureDeletion() {\n        setActionState(SignatureActionState.DELETING);\n        const sequence: Sequence = await app.dataSourceSequences.getSequence(props.worldID, props.sequenceID);\n        const attemptIDs: bigint[] = sequence.Logs.value.getStepsAttemptIDs();\n        const index: number = attemptIDs.findIndex((id: bigint) => id === props.attemptID);\n        if (index === -1) {\n            setActionState(SignatureActionState.DELETION_ERROR);\n            return;\n        }\n\n        if (!await app.dataSourceSequences.deleteSequenceLog(props.worldID, props.sequenceID, index)) {\n            setActionState(SignatureActionState.DELETION_ERROR);\n            return;\n        }\n        props.onDelete();\n    }\n\n    return (\n        <>\n            <Box style={{paddingBottom: \"8px\", font: secondaryFontMedium}}>\n                <b>{signatory}</b>&nbsp;\n                {i18next.t(\"validates the realization of\")}&nbsp;\n                <b>{sequenceTitle}</b> {i18next.t(\"by\")} <b>{peerName}</b>&nbsp;\n                {`${i18next.t(\"on\")} ${date}`}.\n            </Box>\n            <SignatureImageContainer height={props.height} width={props.width}>\n                {{\n                    [SignatureActionState.CONFIRM_DELETION]: (\n                        <>\n                            <Box>\n                                {`${i18next.t(\"Are you sure you want to delete this signature?\")}`}\n                            </Box>\n                            <Box style={{display: \"flex\", gap: \"50px\" }}>\n                                <Button variant=\"outlined\" onClick={() => setActionState(SignatureActionState.VIEWING)}>\n                                    {i18next.t(\"Cancel\")}\n                                </Button>\n                                <Button color=\"error\" onClick={() => handleSignatureDeletion()}>\n                                    {i18next.t(\"Delete\")}\n                                </Button>\n                            </Box>\n                        </>\n                    ),\n                    [SignatureActionState.DELETING]: <CenteredLoading />,\n                    [SignatureActionState.VIEWING]: (\n                        <Box style={{position: \"relative\"}}>\n                            {canEditWorld &&\n                                <DeleteIcon onClick={() => setActionState(SignatureActionState.CONFIRM_DELETION)}>\n                                    <Delete />\n                                </DeleteIcon>\n                            }\n                            <img src={signature}/>\n                        </Box>\n                    ),\n                    [SignatureActionState.DELETION_ERROR]: (\n                        <>\n                            <Box style={{ color: red }}>\n                                {i18next.t(\"Unable to delete signature, please try again later\")}.\n                            </Box>\n                            <Button onClick={() => setActionState(SignatureActionState.VIEWING)}>\n                                {i18next.t(\"I understand\")}\n                            </Button>\n                        </>\n                    )\n                }[actionState]}\n            </SignatureImageContainer>\n        </>\n    );\n}\n", "import React, {ReactElement} from \"react\";\nimport {SvgIcon} from \"@mui/material\";\nimport {darkenRed, red} from \"@root/react-components/src/values/colors/colors\";\nimport {lightGreen, darkGreen} from \"@root/react-components/src/values/colors/colors\";\nimport {Box, styled} from \"@mui/material\";\n\nconst Content = styled(Box)({\n    position: \"absolute\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n});\n\nexport interface PartialDonutProps {\n    percentage: number;\n    isReached: boolean;\n    children: ReactElement;\n}\n\nexport function PartialDonut(props: PartialDonutProps): ReactElement {\n    const size: number = 45;\n    const strokeWidth: number = 5;\n    const radius: number = (size - strokeWidth) / 2;\n    const circumference: number = 2 * Math.PI * radius;\n    const filledRatio: number = Math.min(Math.max(props.percentage, 0), 100);\n    const dashArray: number = (filledRatio / 100) * circumference;\n    return (\n        <Box>\n            <SvgIcon\n                sx={{ width: size, height: size }}\n                viewBox={`0 0 ${size} ${size}`}\n                style={{ transform: \"rotate(-90deg)\" }}\n            >\n                {/* Background track */}\n                <circle\n                    cx={size / 2}\n                    cy={size / 2}\n                    r={radius}\n                    fill={props.isReached ? darkGreen : darkenRed}\n                    stroke={props.isReached ? darkGreen : darkenRed}\n                    strokeWidth={strokeWidth}\n                />\n                {/* Progress arc */}\n                {filledRatio &&\n                    <circle\n                        cx={size / 2}\n                        cy={size / 2}\n                        r={radius}\n                        fill=\"none\"\n                        stroke={props.isReached ? lightGreen : red}\n                        strokeWidth={strokeWidth}\n                        strokeDasharray={`${dashArray.toFixed(2)} ${circumference.toFixed(2)}`}\n                        strokeDashoffset={0}\n                    />\n                }\n            </SvgIcon>\n            <Content> {props.children} </Content>\n        </Box>\n    );\n}\n", "import React, {useEffect, useState} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {FiltersInterface, FiltersRow} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport i18next from \"i18next\";\nimport {MultipleSelectWithSearch} from \"@root/react-components/src/inputs/MultipleSelectWithSearch\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {compareTitles} from \"@utils/utils\";\nimport {getWorldSequences} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {World} from \"@backend/Types/World\";\n\nconst FiltersContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    alignItems: \"center\",\n    gap: \"10px\",\n    padding: \"10px 30px 10px 0px\",\n    flexWrap: \"wrap\"\n});\n\ntype Option = { id: bigint; label: string };\ntype SequenceOption = { sequenceID: bigint; worldID: bigint; label: string };\n\nexport interface MatrixFilterProps {\n    groupID: bigint;\n    filters: FiltersInterface;\n    selectedPeerIDs: Set<bigint>;\n    selectedWorldsSequencesIDs: Map<bigint, Set<bigint>>;\n    handleOnChangeFilter: (newFilters: FiltersInterface) => void;\n    onWorldSequenceFiltered: (selectedWorldsSequencesIDs: Map<bigint, Set<bigint>>) => void;\n    onPeersFiltered: (selectedPeerIDs: Set<bigint>) => void;\n}\n\nexport function MatrixFilters(props: MatrixFilterProps) {\n    const app: AppConsole = AppConsole.getInstance();\n\n    const [sequenceOptions, setSequenceOptions] = useState<SequenceOption[]>([]);\n    const [worldOptions, setWorldOptions] = useState<Option[]>([]);\n    const [peerOptions, setPeerOptions] = useState<Option[]>([]);\n\n    const filteredSequenceOptions: SequenceOption[] = sequenceOptions.filter((option: SequenceOption) =>\n        props.selectedWorldsSequencesIDs.get(option.worldID));\n\n    useEffect(() => {\n        const selectedPeerIDs: bigint[] = [...props.selectedPeerIDs.keys()];\n        if (!peerOptions.length)\n            buildPeerOptions(selectedPeerIDs).then((worldOptions: Option[]) => setPeerOptions(worldOptions));\n    }, [props.selectedPeerIDs]);\n\n    useEffect(() => {\n        const selectedWorldIDs: bigint[] = [...props.selectedWorldsSequencesIDs.keys()];\n        if (!worldOptions.length)\n            buildWorldOptions(selectedWorldIDs).then((worldOptions: Option[]) => setWorldOptions(worldOptions));\n    }, [props.selectedWorldsSequencesIDs]);\n\n    useEffect(() => {\n        const worldID: bigint[] = worldOptions.map((option: Option) => option.id);\n        fetchSequencesOptions(props.groupID, worldID).then((sequenceOptions: SequenceOption[]) =>\n            setSequenceOptions(sequenceOptions));\n    }, [props.groupID, worldOptions]);\n\n    async function buildWorldOptions(worldIDs: bigint[]): Promise<Option[]> {\n        const newWorldOptions: Option[] = [];\n\n        // used to detect duplicate sequence across different worlds\n        for (const worldID of worldIDs) {\n            const world: World = await app.dataSourceWorlds.getWorld(worldID);\n            newWorldOptions.push({ id: worldID, label: world.Title.value });\n        }\n\n        newWorldOptions.sort((world1: Option, world2: Option) => compareTitles(world1.label, world2.label, true));\n        return newWorldOptions;\n    }\n\n    async function fetchSequencesOptions(groupID: bigint, worldIDs: bigint[]): Promise<SequenceOption[]> {\n        const sequenceTitlesCount = new Map<string, number>();\n        const newSequenceOptions: SequenceOption[] = [];\n\n        for (const worldID of worldIDs) {\n            const sequences: Set<bigint> = new Set(await getWorldSequences(worldID, false, groupID));\n            for (const sequenceID of sequences) {\n                const sequence: Sequence = await app.dataSourceSequences.getSequence(worldID, sequenceID);\n                const title: string = sequence.Title.value;\n\n                sequenceTitlesCount.set(title, (sequenceTitlesCount.get(title) ?? 0) + 1);\n                newSequenceOptions.push({ worldID: worldID, sequenceID, label: title });\n            }\n        }\n\n        for (const option of newSequenceOptions) {\n            const count: number = sequenceTitlesCount.get(option.label) ?? 0;\n            const world: World = await app.dataSourceWorlds.getWorld(option.worldID);\n\n            if (count > 1)\n                option.label = `${option.label} [${world.Title.value}]`;\n        }\n\n        newSequenceOptions.sort((sequence1: SequenceOption, sequence2: SequenceOption) =>\n            compareTitles(sequence1.label, sequence2.label, true));\n\n        return newSequenceOptions;\n    }\n\n    async function buildPeerOptions(peerIDs: bigint[]): Promise<Option[]> {\n        const newPeerOptions: Option[] = [];\n\n        for (const peerID of peerIDs) {\n            const peer: Peer = await app.dataSourcePeers.getPeer(peerID);\n            if (!peer.archivedDate)\n                newPeerOptions.push({ id: peerID, label: peer.fullName });\n        }\n        newPeerOptions.sort((peer1: Option, peer2: Option) => compareTitles(peer1.label, peer2.label, true));\n        return newPeerOptions;\n    }\n\n    function getSelectedWorldIndices(options: Option[], worldSequences: Map<bigint, Set<bigint>>): number[] {\n        // if the world is selected add his index to selected indices\n        return options.reduce((otherIndices: number[], option: Option, index: number) => {\n            if (worldSequences.has(option.id))\n                otherIndices.push(index)\n            return otherIndices;\n        }, []);\n    }\n\n    function getSelectedSequenceIndices(options: SequenceOption[], worldSequences: Map<bigint, Set<bigint>>): number[] {\n        // if the sequence is selected add his index to selected indices\n        return options.reduce((otherIndices: number[], option: SequenceOption, index: number) => {\n            if (worldSequences.get(option.worldID)?.has(option.sequenceID))\n                otherIndices.push(index)\n            return otherIndices;\n        }, []);\n    }\n\n    function getSelectPeerIndices(options: Option[], selectedPeers: Set<bigint>): number[] {\n        // if the peer is selected add his index to selected indices\n        return options.reduce((otherIndices: number[], option: Option, index: number) => {\n            if (selectedPeers.has(option.id))\n                otherIndices.push(index)\n            return otherIndices;\n        }, []);\n    }\n\n    function handleSequenceChange(indices: number[], worldIDs: bigint[]) {\n        const newWorldSequences = new Map();\n\n        for (const worldID of worldIDs)\n            newWorldSequences.set(worldID, new Set());\n\n        for (const index of indices) {\n            const option: SequenceOption = filteredSequenceOptions[index];\n            const sequences: Set<bigint> | undefined = newWorldSequences.get(option.worldID);\n            if (!sequences)\n                continue;\n\n            sequences.add(option.sequenceID);\n        }\n\n        props.onWorldSequenceFiltered(newWorldSequences);\n    }\n\n    function handleWorldChange(indices: number[], worldOptionIDs: bigint[], currentSequenceOptions: SequenceOption[]) {\n        const selectedWorldIDs = new Set(indices.map(i => worldOptionIDs[i]));\n        const newWorldSequences = new Map<bigint, Set<bigint>>();\n\n        for (const worldID of selectedWorldIDs) {\n            if (props.selectedWorldsSequencesIDs.has(worldID))\n                newWorldSequences.set(worldID, props.selectedWorldsSequencesIDs.get(worldID)!);\n            else {\n                const allSequenceIDs: bigint[] = currentSequenceOptions\n                    .filter((option: SequenceOption) => option.worldID === worldID)\n                    .map((option: SequenceOption) => option.sequenceID);\n                newWorldSequences.set(worldID, new Set(allSequenceIDs));\n            }\n        }\n\n        props.onWorldSequenceFiltered(newWorldSequences);\n    }\n\n    return (\n        <FiltersContainer>\n            {Boolean(worldOptions.length) && (\n                <Box style={{width: \"200px\"}}>\n                    <MultipleSelectWithSearch\n                        onChange={(indices: number[]) =>\n                            handleWorldChange(indices,\n                                worldOptions.map((option: Option) => option.id),\n                                sequenceOptions\n                            )}\n                        options={worldOptions.map((option: Option) => option.label)}\n                        label={i18next.t(\"Worlds\")}\n                        selectedIndexes={getSelectedWorldIndices(worldOptions, props.selectedWorldsSequencesIDs)}\n                        optionsStyle={{ minWidth: \"200px\", maxWidth: \"350px\" }}\n                    />\n                </Box>\n            )}\n            {Boolean(sequenceOptions.length) && (\n                <Box style={{width: \"200px\"}}>\n                    <MultipleSelectWithSearch\n                        onChange={(indices: number[]) =>\n                            handleSequenceChange(indices, Array.from(props.selectedWorldsSequencesIDs.keys()))}\n                        options={filteredSequenceOptions.map((option: SequenceOption) => option.label)}\n                        label={i18next.t(\"Sequences\")}\n                        selectedIndexes={\n                            getSelectedSequenceIndices(filteredSequenceOptions, props.selectedWorldsSequencesIDs)\n                        }\n                        optionsStyle={{ minWidth: \"200px\", maxWidth: \"350px\" }}\n                    />\n                </Box>\n            )}\n            {Boolean(peerOptions.length) && (\n                <Box style={{width: \"200px\"}}>\n                    <Box style={{width: \"200px\"}}>\n                        <MultipleSelectWithSearch\n                            onChange={(indices: number[]) =>\n                                props.onPeersFiltered(new Set(indices.map((i: number) => peerOptions[i].id)))}\n                            options={peerOptions.map((option: Option) => option.label)}\n                            label={peerOptions.length === 1 ? peerOptions[0].label : i18next.t(\"Users\")}\n                            selectedIndexes={getSelectPeerIndices(peerOptions, props.selectedPeerIDs)}\n                            optionsStyle={{ minWidth: \"200px\", maxWidth: \"350px\" }}\n                            disable={peerOptions.length === 1}\n                        />\n                    </Box>\n                </Box>\n            )}\n            <FiltersRow filters={props.filters} handleOnChangeFilter={props.handleOnChangeFilter} />\n        </FiltersContainer>\n    );\n}\n", "import * as React from 'react';\nimport {primaryFontLarge} from '../values/fonts/fonts';\nimport {darkenWhite, lightGrey, lightWhite, primary, white} from \"../values/colors/colors\";\nimport {DownArrow} from \"../icons/DownArrow\";\nimport {Box, styled} from \"@mui/material\";\nimport {SearchBar, SearchBarSize} from \"./SearchBar\";\nimport {isEqual} from \"lodash\";\n\nconst SelectWrapper = styled(Box)((props: {open: boolean, disable: number}) => ({\n    cursor: props.disable ? \"not-allowed\" : \"pointer\",\n    height: \"24px\",\n    lineHeight: \"24px\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    position: 'relative',\n    backgroundColor: \"transparent\",\n    padding: \"2px 6px\",\n    border: `1.5px solid ${props.open ? primary : lightGrey}`,\n    borderRadius: \"3px\",\n    outline: \"none\",\n    font: primaryFontLarge,\n    transition: \"border 0.3s ease, background-color 0.5s ease\",\n    \"&:hover\": {\n        border: `1.5px solid ${props.disable ? lightGrey : primary}`\n    },\n    opacity: props.disable ? \"0.6\" : \"1\"\n}));\n\nconst ContentWrapper = styled(Box)({\n    right: \"0px\",\n    maxWidth: \"400px\",\n    font: primaryFontLarge,\n    position: \"absolute\",\n    backgroundColor: darkenWhite,\n    zIndex: \"1000\",\n    cursor: \"pointer\",\n    marginTop: \"3px\",\n    boxShadow: \"rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 1px 3px 1px\",\n    borderRadius: \"3px\",\n    padding: \"5px\"\n});\n\nconst OptionsHeader = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: \"5px\",\n    padding: \"4px 10px\",\n    boxSizing: \"border-box\"\n});\n\nconst Option = styled(Box)((props: {color: string}) => ({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    color: props.color,\n    padding: \"4px 10px\",\n    minWidth: \"100px\",\n    borderRadius: \"3px\",\n    userSelect: \"none\",\n    \"&:hover\": {\n        color: white,\n        backgroundColor: primary\n    }\n}));\n\nconst CheckboxWrapper = styled(Box)((props: {checked: boolean}) => ({\n    marginLeft: \"5px\",\n    backgroundColor: props.checked ? primary : lightWhite,\n    border: `solid 1px ${primary}`,\n    borderRadius: \"2.5px\",\n    transition: \"background-color 0.1s ease\",\n    \"&:hover\": {\n        cursor: \"pointer\",\n    }\n}));\n\nconst CheckboxInput = styled(\"input\")({\n    // hide the html checkbox\n    margin: \"0px\",\n    display: \"none\",\n\n    // Show the checkmark when checked\n    \":checked ~ span:after\": {\n        display: \"block\"\n    },\n    \":hover\": {\n    cursor: \"pointer\",\n    }\n});\n\nconst CheckboxSpan = styled(\"span\")({\n    // Create a custom checkbox\n    display: \"block\",\n    height: \"16px\",\n    width: \"16px\",\n\n    // Style the checkmark/indicator\n    \":after\": {\n        content: '\"\"',\n        position: \"relative\",\n        display: \"none\",\n        left: \"4px\",\n        top: \"1px\",\n        width: \"4px\",\n        height: \"8px\",\n        border: `solid white`,\n        borderWidth: \"0 3px 3px 0\",\n        borderRadius: \"2px\",\n        WebkitTransform: \"rotate(45deg)\",\n        msTransform: \"rotate(45deg)\",\n        transform: \"rotate(45deg)\",\n    },\n    \":hover\": {\n        cursor: \"pointer\",\n    },\n});\n\nconst ArrowWrapper = styled(Box)((props: {open: boolean}) => ({\n    display: \"flex\",\n    alignItems: \"center\",\n    marginLeft: \"5px\",\n    transform: props.open ? \"rotateX(180deg)\" : \"rotateX(0deg)\"\n}));\n\nconst Line = styled(Box)({\n    height: \"1px\",\n    backgroundColor: lightGrey,\n});\n\nconst OptionsContainer = styled(Box)({\n    maxHeight: \"350px\",\n    overflowY: \"auto\",\n    scrollbarWidth: \"thin\",\n    scrollbarColor: `${primary} ${darkenWhite}`, //supported by almost all browsers\n\n    \"&::-webkit-scrollbar\": {\n        height: \"10px\"\n    },\n    \"&::-webkit-scrollbar-thumb\": {\n        backgroundColor: primary,\n        borderRadius: \"6px\",\n        border: `2px solid ${darkenWhite}`\n    }\n})\n\nconst TextWrapper = styled(\"span\")({\n    margin: \"0px\",\n    paddingLeft:\"4px\",\n    whiteSpace: \"nowrap\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n});\n\ninterface MultipleSelectProps {\n    selectedIndexes: number[];\n    options: string[];\n    onChange: (newSelectedIndexList: number[]) => void;\n    style?: React.CSSProperties;\n    optionsStyle?: React.CSSProperties;\n    label?: string;\n    icon?: JSX.Element;\n    disable?: boolean;\n}\n\ninterface MultipleSelectState {\n    filteredIndices: Set<number>;\n    open: boolean;\n    searchStr: string;\n}\n\nexport class MultipleSelectWithSearch extends React.Component {\n    private readonly multipleSelectRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    private readonly optionsRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    props: MultipleSelectProps;\n    state: MultipleSelectState = {\n        filteredIndices: new Set(),\n        open: false,\n        searchStr: \"\"\n    };\n\n    componentDidMount() {\n        // detect if we click outside of dropdown\n        window.addEventListener(\"mousedown\", (event) => {\n            if (this.multipleSelectRef.current && !this.multipleSelectRef.current.contains(event.target as Node))\n                this.setState({ open: false });\n        });\n        this.setState({filteredIndices: new Set(this.props.options.map((_: string, index: number) => index))});\n    }\n\n    componentDidUpdate(prevProps: MultipleSelectProps, prevState: Readonly<MultipleSelectState>) {\n        // make sure options are always on screen\n        if (this.state.open && this.optionsRef.current) {\n            const left: number = this.optionsRef.current?.getBoundingClientRect().left;\n            if (left < 0)\n                this.optionsRef.current.style.transform = `translateX(${-left + 10}px)`;\n\n            const right: number = this.optionsRef.current?.getBoundingClientRect().right;\n            if (right > window.innerWidth)\n                this.optionsRef.current.style.transform = `translateX(${-right + window.innerWidth - 10}px)`;\n        }\n\n        if (!isEqual(prevProps.options, this.props.options)) {\n            this.setState({filteredIndices: new Set(this.props.options.map((_, i: number) => i))});\n            return;\n        }\n\n        if (prevState.searchStr !== this.state.searchStr) {\n            const filteredIndices: Set<number> = new Set();\n            for (let i: number = 0; i < this.props.options.length; ++i)\n                if (this.props.options[i].toLowerCase().includes(this.state.searchStr.toLowerCase()))\n                    filteredIndices.add(i);\n            this.setState({ filteredIndices });\n        }\n    }\n\n    private changeSelectedOptionsList(index: number) {\n        const newSelectedIndexList: number[] = this.isIndexOptionSelected(index)\n            ? this.props.selectedIndexes.filter((i: number) => index !== i)\n            : [...this.props.selectedIndexes, index];\n\n        this.props.onChange(newSelectedIndexList);\n    }\n\n    private onChangeAllFiltered(isAllChecked: boolean) {\n        const selectedOptions: Set<number> = new Set(this.props.selectedIndexes);\n        for (const index of this.state.filteredIndices) {\n            if (isAllChecked)\n                selectedOptions.add(index);\n            else\n                selectedOptions.delete(index);\n        }\n        this.props.onChange([...selectedOptions]);\n    }\n\n    private isIndexOptionSelected (index: number): boolean {\n        return this.props.selectedIndexes.indexOf(index) !== -1;\n    }\n\n    private isAllChecked(): boolean {\n        return [...this.state.filteredIndices].every((index: number) => this.props.selectedIndexes.includes(index));\n    }\n\n    private setOpenState() {\n        if (this.props.disable)\n            return;\n\n        this.setState((prevState: MultipleSelectState) => ({\n            open: !prevState.open,\n            searchStr: \"\"\n        }));\n    }\n\n    render() {\n        const isAllChecked: boolean = this.isAllChecked();\n\n        return <Box ref={this.multipleSelectRef}\n                    style={{position: \"relative\", width: \"maxWidth\", borderRadius: \"3px\", ...this.props.style}}>\n            <Box onClick={() => this.setOpenState()}>\n                <SelectWrapper open={this.state.open} disable={Number(this.props.disable ?? false)}>\n                    <Box style={{height: \"20px\", margin: 0, userSelect: \"none\"}}>\n                        {this.props.label}\n                    </Box>\n                    <ArrowWrapper open={this.state.open}>\n                        <DownArrow width={\"12\"} height={\"12\"}/>\n                    </ArrowWrapper>\n                </SelectWrapper>\n            </Box>\n            {this.state.open &&\n                <ContentWrapper\n                    ref={this.optionsRef}\n                    style={{ ...this.props.optionsStyle }}\n                >\n                    <OptionsHeader>\n                        <SearchBar size={SearchBarSize.SMALL} style={{ width: \"100%\" }}\n                                   onChange={(searchStr: string) => this.setState({ searchStr })}\n                        />\n                        <CheckboxWrapper className='checkbox' style={{ marginLeft: \"0px\"}}\n                                  checked={isAllChecked}\n                                  onClick={() => this.onChangeAllFiltered(!isAllChecked)}\n                        >\n                            <CheckboxInput type=\"checkbox\" readOnly checked={isAllChecked} />\n                            <CheckboxSpan />\n                        </CheckboxWrapper>\n                    </OptionsHeader>\n                    <Line/>\n                    <OptionsContainer>\n                    {this.props.options.map((option: string, index: number) =>\n                        this.state.filteredIndices.has(index) &&\n                        <Option key={index} onClick={() => this.changeSelectedOptionsList(index)}\n                                color={this.isIndexOptionSelected(index) ? primary : \"currentColor\"}>\n                            <TextWrapper >\n                                {option}\n                            </TextWrapper>\n                            <CheckboxWrapper className='checkbox' checked={this.isIndexOptionSelected(index)}>\n                                <CheckboxInput type=\"checkbox\" readOnly checked={this.isIndexOptionSelected(index)} />\n                                <CheckboxSpan />\n                            </CheckboxWrapper>\n                        </Option>\n                    )}\n                    </OptionsContainer>\n                </ContentWrapper>\n            }\n        </Box>;\n    }\n}\n", "import React, {useEffect, useRef, useState} from \"react\";\nimport {DataSourceSequences, Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, Divider, styled} from \"@mui/material\";\nimport {MAX_LEVEL} from \"@backend/Types/Sequence\";\nimport {LearningPathSequenceRow} from \"@root/Frontend/Console/Views/Management/SkillsMatrix/LearningPathSequenceRow\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {\n    lightGrey,\n    lightWhite,\n    primary,\n    white\n} from \"@root/react-components/src/values/colors/colors\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {compareTitles} from \"@utils/utils\";\n\nconst Header = styled(Box)({\n    font: primaryFontXLarge\n});\n\nconst Wrapper = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    maxHeight: `calc(80vh - 100px)`\n});\n\nconst Container = styled(Box)({\n    background: white,\n    margin: \"12px\",\n    padding: \"0px 4px\",\n    overflow: \"auto\",\n    borderRadius: 8,\n    /* width */\n    \"&::-webkit-scrollbar\": {\n        width: \"8px\",\n        height: \"8px\",\n        backgroundColor: white\n    },\n    /* Track */\n    \"&::-webkit-scrollbar-track\": {\n        width: 0,\n        backgroundColor: white,\n        borderRadius: \"10px\",\n    },\n    /* Handle */\n    \"&::-webkit-scrollbar-thumb\": {\n        background: primary,\n        borderRadius: \"10px\",\n    },\n    /* Handle on hover */\n    \"&::-webkit-scrollbar-thumb:hover\": {\n        background: primary\n    }\n});\n\nconst SequencesContainer = styled(Box)({\n    backgroundColor: lightWhite,\n});\n\nconst LevelRow = styled(Box)({\n    font: primaryFontLarge,\n    padding: \"8px\",\n    backgroundColor: primary,\n    color: white,\n    border: 4,\n});\n\nconst LevelContainer = styled(Box)((props: {is_level_hover: number}) => ({\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: props.is_level_hover ? \"75px\" : \"35px\",\n    border: `1px solid ${lightGrey}`,\n    backgroundColor: white,\n    borderBottomLeftRadius: \"4px\",\n    borderBottomRightRadius: \"4px\",\n    transition: \".1s\"\n}));\n\ntype WorldSequence = { worldID: bigint, sequenceID: bigint, sequenceTitle: string }\n\ninterface LearningPathEditorProps {\n    worldSequences: Map<bigint, Set<bigint>>;\n    onClose: () => void;\n}\n\nexport function LearningPathEditor(props: LearningPathEditorProps) {\n    const dataSourceSequences: DataSourceSequences = AppConsole.getInstance().dataSourceSequences;\n\n    const [sortedWorldSequences, setSortedWorldSequences] = useState<WorldSequence[][]>([]);\n    const [draggedSequenceID, setDraggedSequenceID] = useState<bigint>(BigInt(0));\n    const [draggedWorldID, setDraggedWorldID] = useState<bigint>(BigInt(0));\n    const [levelHover, setLevelHover] = useState<bigint | null>(null);\n\n    const levelRefs: React.MutableRefObject<Map<string, HTMLDivElement>> =\n        useRef<Map<string, HTMLDivElement>>(new Map());\n\n    useEffect(() => {\n        sortWorldsSequences(props.worldSequences).then((newSortedWorldSequences: WorldSequence[][]) =>\n            setSortedWorldSequences(newSortedWorldSequences));\n    }, [props.worldSequences]);\n\n    // sorts sequences by level and title, grouping them into an array by level index\n    async function sortWorldsSequences(worldSequences: Map<bigint, Set<bigint>>): Promise<WorldSequence[][]> {\n        const worldsSequencesByLevel: WorldSequence[][] = Array.from({ length: MAX_LEVEL + 1 }, () => []);\n        for (const [worldID, sequenceIDs] of worldSequences) {\n            for (const sequenceID of sequenceIDs) {\n                const sequence: Sequence = await dataSourceSequences.getSequence(worldID, sequenceID);\n                const levelIndex: number = Number(sequence.Level.value);\n                worldsSequencesByLevel[levelIndex].push({worldID, sequenceID, sequenceTitle: sequence.Title.value });\n            }\n        }\n\n        for (let i: number = 0; i < worldsSequencesByLevel.length; i++) {\n            worldsSequencesByLevel[i].sort((worldSequence1: WorldSequence, worldSequence2: WorldSequence) =>\n                compareTitles(worldSequence1.sequenceTitle, worldSequence2.sequenceTitle, true)\n            );\n        }\n\n        return worldsSequencesByLevel;\n    }\n\n    function onDragEnd() {\n        setDraggedSequenceID(BigInt(0));\n        setDraggedWorldID(BigInt(0));\n        setLevelHover(null);\n    }\n\n    function onDragStart(e: React.DragEvent<HTMLDivElement>, worldID: bigint, sequenceID: bigint) {\n        const target = e.target as HTMLElement;\n        target.addEventListener('dragend', () => onDragEnd());\n\n        // The setTimeout allows the draggable image to create before the draggable div is removed by rendering\n        setTimeout(() => {\n            setDraggedWorldID(worldID);\n            setDraggedSequenceID(sequenceID);\n        });\n    }\n\n    // handles dropping a sequence onto a level\n    async function onDrop() {\n        // do nothing if no level is hovered, invalid worldID or sequenceID\n        if (levelHover === null || !draggedWorldID || !draggedSequenceID)\n            return;\n\n        // try saving the new level for the sequence\n        if (!await dataSourceSequences.saveSequenceLevel(draggedWorldID, draggedSequenceID, levelHover)) {\n            AdapterLog.ERROR(`Couldn't update the level of sequence ${draggedSequenceID}`);\n            return;\n        }\n\n        const sequence: Sequence = await dataSourceSequences.getSequence(draggedWorldID, draggedSequenceID);\n        if (sequence.ChildSequence.value &&\n            !await dataSourceSequences.saveSequenceLevel(draggedWorldID, sequence.ChildSequence.value, levelHover)) {\n            AdapterLog.ERROR(`Couldn't update the level of draft Sequence ${sequence.ChildSequence.value}`);\n        }\n\n\n        setSortedWorldSequences(await sortWorldsSequences(props.worldSequences));\n\n        // scroll to the new level smoothly\n        setTimeout(() =>\n            levelRefs.current.get(levelHover?.toString() ?? \"\")?.scrollIntoView({ behavior: \"smooth\", block: \"center\" })\n        , 0.5);\n\n        // reset drag state\n        onDragEnd();\n    }\n\n    return (\n        <Dialog\n            onClose={() => props.onClose()}\n            closeOnClickOutside\n            backgroundColor={white}\n            size={DialogSize.md}\n        >\n            <Header> {i18next.t(\"Level editor\")} </Header>\n            <Wrapper>\n                <Container>\n                    {sortedWorldSequences.map((worldsSequenceIDs: WorldSequence[], index: number) => {\n                        const level: bigint = BigInt(index);\n                        return (\n                            <Box\n                                key={level.toString()}\n                                style={{\n                                    backgroundColor: white,\n                                    margin: !index || index === worldsSequenceIDs.length - 1 ? \"0px\" : \"12px 0px\"\n                                }}\n                            >\n                                <LevelRow\n                                    ref={(ref: HTMLDivElement | null) => {\n                                        if (ref)\n                                            levelRefs.current.set(level.toString(), ref);\n                                    }}\n                                >\n                                    {`${i18next.t(\"Level\")} ${level}`}\n                                </LevelRow>\n                                {(draggedSequenceID && draggedWorldID) ?\n                                    <LevelContainer\n                                        onDrop={() => onDrop()}\n                                        onDragOver={(e) => {\n                                            e.preventDefault();\n                                            setLevelHover(level)\n                                        }}\n                                        is_level_hover={Number(levelHover === level)}\n                                    >\n                                        {i18next.t(\"Drop here\")}\n                                    </LevelContainer>\n                                    :\n                                    <SequencesContainer>\n                                        {!worldsSequenceIDs.length &&\n                                            <Box style={{ padding: \"12px\", display: \"flex\", justifyContent: \"center\" }}>\n                                                {i18next.t(\"No sequence\")}\n                                            </Box>\n                                        }\n                                        {worldsSequenceIDs.map(({worldID, sequenceID}: WorldSequence, index: number) =>\n                                                <Box key={`${worldID}-${sequenceID}`}>\n                                                    <LearningPathSequenceRow\n                                                        worldID={worldID}\n                                                        sequenceID={sequenceID}\n                                                        onDragStart={(e: React.DragEvent<HTMLDivElement>) =>\n                                                            onDragStart(e, worldID, sequenceID)\n                                                        }\n                                                    />\n                                                    {index !== worldsSequenceIDs.length - 1 &&\n                                                        <Box style={{ padding: \"0px 16px\" }}><Divider /></Box>\n                                                    }\n                                                </Box>\n                                        )}\n                                    </SequencesContainer>\n                                }\n                            </Box>\n                        );\n                    })}\n                </Container>\n            </Wrapper>\n            <Box style={{ display: \"flex\", justifyContent: \"end\" }}>\n                <Button onClick={() => props.onClose()}> {i18next.t(\"Close\")} </Button>\n            </Box>\n        </Dialog>\n    )\n}", "import {Language} from \"@root/public/studio/WebAssembly.mjs\";\n\nexport interface Sequence {\n    ChildSequence: { value: bigint, timestamp: bigint };\n    Critical: { value: boolean, timestamp: bigint };\n    Expiration: { value: bigint, timestamp: bigint };\n    Feedback: { value: { [attemptID: string]: boolean }, timestamp: bigint };\n    GroupsExclusive: { value: bigint[], timestamp: bigint };\n    Language: { value: Language | \"\", timestamp: bigint };\n    Level: { value: bigint, timestamp: bigint };\n    Logs: { value: string[], timestamp: bigint };\n    Major: { value: boolean, timestamp: bigint };\n    Notes: { value: string, timestamp: bigint };\n    ObjectiveGrade: { value: number, timestamp: bigint };\n    ObjectiveVisualizations: { value: bigint, timestamp: bigint };\n    OnlyDynamics: { value: boolean, timestamp: bigint };\n    ParentSequence: { value: bigint, timestamp: bigint };\n    PeerPublisher: { value: bigint, timestamp: bigint };\n    Steps: { value: {\n        ID: string; // TODO(@anthony): should use { stepID : type }\n        Type: string;\n    }[], timestamp: bigint };\n    Title: { value: string, timestamp: bigint };\n    Video: { value: bigint, timestamp: bigint };\n    Tags: {value: string[], timestamp: bigint};\n}\n\nexport enum SequenceAttribute {\n    CHILD_SEQUENCE = \"ChildSequence\",\n    CRITICAL = \"Critical\",\n    EXPIRATION = \"Expiration\",\n    FEEDBACK = \"Feedback\",\n    GROUPS_EXCLUSIVE = \"GroupsExclusive\",\n    LANGUAGE = \"Language\",\n    LEVEL = \"Level\",\n    LOGS = \"Logs\",\n    NOTES = \"Notes\",\n    MAJOR = \"Major\",\n    OBJECTIVE_GRADE = \"ObjectiveGrade\",\n    OBJECTIVE_VISUALIZATIONS= \"ObjectiveVisualizations\",\n    ONLY_DYNAMICS = \"OnlyDynamics\",\n    PARENT_SEQUENCE = \"ParentSequence\",\n    PEER_PUBLISHER = \"PeerPublisher\",\n    STEPS = \"Steps\",\n    TITLE = \"Title\",\n    VIDEO = \"Video\",\n    TAGS = \"Tags\"\n}\n\nexport const NOTES_CHARACTER_LIMIT: number = 4096;\nexport const MAX_LEVEL: number = 10;\n\nexport const LOG_FORMAT: string = \"attemptid-entityid-os-peerid-sequenceid-session-stepid-stepindex-\" +\n    \"stepinput-steptype-timestamp-worldid\";\n\nexport class EventSequenceAttributeChanged {\n    static readonly EVENT_SEQUENCE_ATTRIBUTED_CHANGED: string = \"sequenceAttribute.changed\";\n    worldID: bigint;\n    sequenceID: bigint;\n    attribute: SequenceAttribute;\n    timestamp: bigint;\n}\n\nexport interface StepGenerated {\n    step_description: string;\n    timestamp_start: string;\n    timestamp_end: string;\n}\n", "import React, {useEffect, useState} from \"react\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Box, styled} from \"@mui/material\";\nimport {Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Menu} from \"@root/react-components/src/icons/Menu\"\nimport {lightDark} from \"@root/react-components/src/values/colors/colors\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    padding: \"16px 32px\",\n    cursor: \"grab\",\n});\n\nconst Title = styled(Box)({\n    font: secondaryFontMedium,\n    userSelect: \"none\"\n});\n\ninterface LearningPathSequenceRowProps {\n    worldID: bigint;\n    sequenceID: bigint;\n    onDragStart: (e: React.DragEvent<HTMLDivElement>) => void;\n}\n\nexport function LearningPathSequenceRow(props: LearningPathSequenceRowProps) {\n    const [sequenceTitle, setSequenceTitle] = useState<string>(\"\");\n\n    useEffect(() => {\n        fetchSequenceTitle().then((sequenceTitle: string) => {\n            setSequenceTitle(sequenceTitle);\n        })\n    });\n\n    async function fetchSequenceTitle() {\n        const sequence: Sequence =\n            await AppConsole.getInstance().dataSourceSequences.getSequence(props.worldID, props.sequenceID);\n        return sequence.Title.value;\n    }\n\n    return (\n        <Container\n            draggable\n            onDragStart={(e: React.DragEvent<HTMLDivElement>) => props.onDragStart(e)}\n        >\n            <Title>{sequenceTitle}</Title>\n            <Box style={{ width: \"16px\", height: \"16px\", color: lightDark }}>\n                <Menu />\n            </Box>\n        </Container>\n    )\n}", "import React from \"react\";\n\nexport const Menu = () =>\n    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"bars\" className=\"svg-inline--fa fa-bars fa-w-14\"\n         role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n        <path fill=\"currentColor\"\n              d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/>\n    </svg>;", "import React from \"react\";\nimport i18next from \"i18next\";\nimport isEqual from \"lodash/isEqual\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {\n    getConnectionPeer,\n    getRangeDateValueByFilterOption,\n    isWithinRange\n} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Group} from \"@backend/Types/Group\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Management} from \"@root/Frontend/Console/Views/Management/Management\";\nimport {primary} from \"@root/react-components/src/values/colors/colors\";\nimport {CardList} from \"@root/Frontend/Console/components/CardList\";\n\nexport interface ActiveGroupItem {\n    connectionsCount: number;\n    groupName: string;\n    link: string;\n    peerCount: number;\n}\n\nexport class MostActiveGroups extends React.Component {\n\n    props: { filterDate: FilterDateOptions };\n    state: { mostActiveGroups: ActiveGroupItem[] | null, } = {mostActiveGroups: null};\n\n    private readonly appConsole: AppConsole = AppConsole.getInstance();\n\n    async componentDidMount() {\n        const mostActiveGroups: ActiveGroupItem[] = await this.getMostActiveGroups();\n        this.setState({mostActiveGroups});\n    }\n\n    override async componentDidUpdate(prevProps: { filterDate: FilterDateOptions }) {\n        if (isEqual(prevProps.filterDate, this.props.filterDate))\n            return;\n\n        const mostActiveGroups: ActiveGroupItem[] = await this.getMostActiveGroups();\n        this.setState({mostActiveGroups});\n    }\n\n    private async getMostActiveGroups(): Promise<ActiveGroupItem[]> {\n        //The most active groups are determined based on the number of connections of peer in the group\n        const [startDate, endDate]: [bigint, bigint] = getRangeDateValueByFilterOption(this.props.filterDate);\n\n        const currentPeer: Peer = await this.appConsole.dataSourcePeers.getPeer(this.appConsole.currentPeerID);\n        const connectionCountByPeerIDs: Map<bigint, number> = new Map<bigint, number>();\n        const activeGroups: ActiveGroupItem[] = [];\n\n        for (const groupIDStr of Object.keys(currentPeer.group)) {\n            const groupID: bigint = UtilsShared.safelyConvertStringToBigInt(groupIDStr);\n            const group: Group = await this.appConsole.dataSourceGroups.getGroup(groupID);\n\n            let groupConnectionsCount: number = 0;\n            for (const peerIDStr of Object.keys(group.Peers)) {\n                const peerID: bigint = UtilsShared.safelyConvertStringToBigInt(peerIDStr);\n\n                const peer: Peer = await this.appConsole.dataSourcePeers.getPeer(peerID);\n                if (peer.archivedDate)\n                    continue;\n\n                const connectionsByPeer: number | undefined = connectionCountByPeerIDs.get(peerID);\n                if (connectionsByPeer !== undefined) {\n                    groupConnectionsCount += connectionsByPeer;\n                    continue;\n                }\n                let connectionsPeerCount: number = 0;\n                for (const connection of getConnectionPeer(peer?.logins ?? {}))\n                    if (isWithinRange(startDate, endDate, connection))\n                        connectionsPeerCount++;\n\n                connectionCountByPeerIDs.set(peerID, connectionsPeerCount);\n                groupConnectionsCount += connectionsPeerCount;\n            }\n\n            activeGroups.push({\n                connectionsCount: groupConnectionsCount,\n                groupName: group.Name,\n                link: `${Management.BASE_PATH}/Groups/${groupIDStr}`,\n                peerCount: Object.values(group.Peers).length\n            });\n        }\n\n        const sortedMostActiveGroups: ActiveGroupItem[] =\n            activeGroups.sort((groupA, groupB) => groupB.connectionsCount - groupA.connectionsCount);\n\n        return sortedMostActiveGroups.slice(0, 5);\n    }\n\n    render() {\n        return (\n            <CardList\n                title={i18next.t(\"Groups\")}\n                roundedAvatar\n                headerBackgroundColor={primary}\n                listItems={\n                    this.state.mostActiveGroups?.map(({link, groupName, peerCount}: ActiveGroupItem) =>\n                        ({\n                            link,\n                            subtitle: `${peerCount} ${peerCount > 1 ? i18next.t(\"Users\") : i18next.t(\"User\")}`,\n                            title: groupName,\n                        })\n                    ) ?? []\n                }\n            />\n        );\n    }\n}", "import React from \"react\";\nimport i18next from \"i18next\";\nimport isEqual from \"lodash/isEqual\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {\n    getRangeDateValueByFilterOption,\n    isWithinRange\n} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {Group} from \"@backend/Types/Group\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {World} from \"@backend/Types/World\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {darkenPrimary} from \"@root/react-components/src/values/colors/colors\";\nimport {CardList} from \"@root/Frontend/Console/components/CardList\";\n\nexport interface ActiveWorldItem {\n    worldName: string;\n    ownerName: string;\n    link: string;\n    thumbnail: string;\n    sequenceCount: number;\n}\n\nexport class MostActiveWorlds extends React.Component {\n\n    props: { filterDate: FilterDateOptions };\n    state: { mostActiveWorlds: ActiveWorldItem[] | null } = {mostActiveWorlds: null};\n\n    private readonly appConsole: AppConsole = AppConsole.getInstance();\n\n    async componentDidMount() {\n        const mostActiveWorlds: ActiveWorldItem[] = await this.getMostActiveWorlds();\n        this.setState({mostActiveWorlds});\n    }\n\n    override async componentDidUpdate(prevProps: { filterDate: FilterDateOptions }) {\n        if (isEqual(prevProps.filterDate, this.props.filterDate))\n            return;\n\n       const mostActiveWorlds: ActiveWorldItem[] = await this.getMostActiveWorlds();\n       this.setState({mostActiveWorlds});\n    }\n\n    private async getMostActiveWorlds(): Promise<ActiveWorldItem[]> {\n        const [startDate, endDate]: [bigint, bigint] = getRangeDateValueByFilterOption(this.props.filterDate);\n        const currentPeer: Peer = await this.appConsole.dataSourcePeers.getPeer(this.appConsole.currentPeerID);\n\n        const worldIDs: Set<bigint> = new Set<bigint>(currentPeer.worlds);\n        for (const groupIdStr of Object.keys(currentPeer.group)) {\n            const groupID: bigint = UtilsShared.safelyConvertStringToBigInt(groupIdStr);\n            const group: Group = await this.appConsole.dataSourceGroups.getGroup(groupID);\n            group.Worlds.forEach(id => worldIDs.add(id));\n        }\n\n        const activeWorlds: ActiveWorldItem[] = [];\n\n        for (const worldID of worldIDs) {\n            const world: World = await this.appConsole.dataSourceWorlds.getWorld(worldID);\n\n            if (world.ArchivedDate.value || !world.Sequences?.value.length) \n                continue;\n\n            let sequenceCount: number = 0;\n            for (const sequenceID of world.Sequences.value)\n                if (isWithinRange(startDate, endDate, UtilsShared.getTimestampOfRandomID(sequenceID)))\n                    sequenceCount++;\n\n            const ownerName = world.OwnerType.value === OwnerType.PEER\n                ? (await this.appConsole.dataSourcePeers.getPeer(world.Owner.value)).username\n                : (await this.appConsole.dataSourceGroups.getGroup(world.Owner.value)).Name;\n\n            activeWorlds.push({\n                link: `${Analytics.BASE_PATH}/Worlds/${worldID}`,\n                ownerName,\n                sequenceCount,\n                thumbnail: world.Thumbnail.value,\n                worldName: world.Title.value,\n            });\n        }\n\n        const sortedActiveWorlds: ActiveWorldItem[] = activeWorlds.sort((a, b) => b.sequenceCount - a.sequenceCount);\n\n        return sortedActiveWorlds.slice(0, 5);\n    }\n\n    render() {\n        return (\n            <CardList\n                title={i18next.t(\"Worlds\")}\n                roundedAvatar\n                headerBackgroundColor={darkenPrimary}\n                listItems={\n                    this.state.mostActiveWorlds?.map(({thumbnail, link, worldName, ownerName}: ActiveWorldItem) =>\n                        ({\n                            link,\n                            title: worldName,\n                            thumbnail,\n                            subtitle: ownerName\n                        })\n                    ) ?? []\n                }\n            />\n        );\n    }\n}", "import React from \"react\";\nimport i18next from \"i18next\";\nimport isEqual from \"lodash/isEqual\";\nimport {Box, styled} from \"@mui/material\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {StatCard} from \"@root/Frontend/Console/Views/Dashboard/StatCard\";\nimport {World} from \"@root/react-components/src/icons/World\"\nimport {Users} from \"@root/react-components/src/icons/Users\";\nimport {User} from \"@root/react-components/src/icons/User\";\nimport {darkenPrimary, lightPrimary, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport { getRangeDateValueByFilterOption, getGrowthIDs, wasPeerActive} from \"@root/Frontend/Console/utils/UtilsFilters\";\nimport {Group} from \"@backend/Types/Group\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"row\",\n    gap: \"32px\",\n    padding: \"16px\",\n    [theme.breakpoints.down('md')]: {\n        flexDirection: \"column\",\n        padding: \"12px\",\n        gap: \"16px\"\n    },\n});\ninterface AnalyticsSummaryState  {\n    activePeersCount: number | null;\n    activePeersGrowthCount: number | null;\n    groupsCount: number | null;\n    groupsGrowthCount: number | null;\n    worldsCount: number | null;\n    worldsGrowthCount: number | null;\n}\n\nconst ContainerTitle = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"8px\",\n})\n\nexport class AnalyticsSummary extends React.Component {\n    props: { filterDate: FilterDateOptions }\n\n    state: AnalyticsSummaryState = {\n        activePeersCount: null,\n        activePeersGrowthCount: null,\n        groupsCount: null,\n        groupsGrowthCount: null,\n        worldsCount: null,\n        worldsGrowthCount: null,\n    };\n\n    async componentDidMount() {\n        await this.refreshAnalyticsSummary();\n    }\n\n    override async componentDidUpdate(prevProps: { filterDate: FilterDateOptions }) {\n        if (isEqual(prevProps.filterDate, this.props.filterDate))\n            return;\n\n        await this.refreshAnalyticsSummary();\n    }\n\n    private async refreshAnalyticsSummary(): Promise<void> {\n        const app: AppConsole = AppConsole.getInstance();\n        const currentPeer: Peer = await app.dataSourcePeers.getPeer(app.currentPeerID);\n\n        const groupIDs: bigint[] = Object.keys(currentPeer.group).map((ID: string): bigint =>\n            UtilsShared.safelyConvertStringToBigInt(ID));\n        const groupsCount: number = groupIDs.length;\n        const groupsGrowthCount: number = getGrowthIDs(groupIDs, this.props.filterDate);\n        if (groupsCount !== this.state.groupsCount || groupsGrowthCount !== this.state.groupsGrowthCount)\n            this.setState({groupsCount, groupsGrowthCount});\n\n        const worldsCount: number = await this.computeActivesWorldsCount();\n        const worldsGrowthCount: number = getGrowthIDs(currentPeer.worlds, this.props.filterDate);\n        if (worldsCount !== this.state.worldsCount || worldsGrowthCount !== this.state.worldsGrowthCount)\n            this.setState({worldsCount, worldsGrowthCount});\n\n        const {activePeersCount, activePeersGrowthCount} = await this.computeActivesPeersCount(this.props.filterDate);\n        if (activePeersCount !== this.state.activePeersCount || activePeersGrowthCount !== this.state.activePeersGrowthCount)\n            this.setState({activePeersCount, activePeersGrowthCount});\n    }\n\n    private async computeActivesWorldsCount(): Promise<number> {\n        const app: AppConsole = AppConsole.getInstance();\n        const groupWorlds: Set<bigint> = await app.dataSourcePeers.getPeerGroupsWorlds(app.currentPeerID);\n        const currentPeer: Peer = await app.dataSourcePeers.getPeer(app.currentPeerID);\n        currentPeer.worlds.forEach((worldID: bigint) => groupWorlds.add(worldID));\n        return groupWorlds.size;\n    }\n\n    private async computeActivesPeersCount(filterDate: FilterDateOptions):\n        Promise<{ activePeersCount: number, activePeersGrowthCount: number }> {\n\n        const app: AppConsole = AppConsole.getInstance();\n        const currentPeer: Peer = await app.dataSourcePeers.getPeer(app.currentPeerID);\n\n        const peersIDs = new Set<bigint>();\n        peersIDs.add(currentPeer.ID);\n        for (const groupID of Object.keys(currentPeer.group)) {\n            const group: Group = await app.dataSourceGroups.getGroup(UtilsShared.safelyConvertStringToBigInt(groupID));\n            Object.keys(group.Peers).forEach((peerID: string) => peersIDs.add(UtilsShared.safelyConvertStringToBigInt(peerID)));\n        }\n\n        let activePeersCount: number = 0;\n        let previousPeersCount: number = 0;\n\n        const [startDateFilter, endDateFilter] = getRangeDateValueByFilterOption(filterDate);\n        const periodLength: bigint = endDateFilter - startDateFilter;\n        const lastPeriodStart: bigint = startDateFilter - periodLength;\n\n        for (const peerID of peersIDs) {\n            const peer: Peer = await app.dataSourcePeers.getPeer(peerID);\n            if (!peer.timeStart) continue;\n            if (wasPeerActive(startDateFilter, endDateFilter, peer)) activePeersCount++;\n            if (wasPeerActive(lastPeriodStart, startDateFilter, peer)) previousPeersCount++;\n        }\n\n        return {\n            activePeersCount: activePeersCount,\n            activePeersGrowthCount: activePeersCount - previousPeersCount,\n        }\n    }\n\n    render() {\n        return (\n            <Container>\n                <StatCard\n                    title={<ContainerTitle>\n                        <World color={white} height=\"48\" width=\"48\"/>\n                        {i18next.t(\"Worlds\")}\n                    </ContainerTitle>}\n                    count={this.state.worldsCount}\n                    delta={this.state.worldsGrowthCount}\n                    backGround={darkenPrimary}\n                    loading={lightPrimary}\n                />\n                <StatCard\n                    title={<ContainerTitle>\n                        <Users height=\"48\" width=\"48\"/>\n                        {i18next.t(\"Groups\")}\n                    </ContainerTitle>}\n                    count={this.state.groupsCount}\n                    delta={this.state.groupsGrowthCount}\n                    backGround={primary}\n                    loading={darkenPrimary}\n                />\n                <StatCard\n                    title={<ContainerTitle>\n                        <User height=\"48\" width=\"48\"/>\n                        {i18next.t(\"Active users\")}\n                    </ContainerTitle>}\n                    count={this.state.activePeersCount}\n                    delta={this.state.activePeersGrowthCount}\n                    backGround={lightPrimary}\n                    loading={primary}\n                />\n            </Container>\n        );\n    }\n}", "import {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {Box, styled} from \"@mui/material\";\nimport React, {ReactNode} from \"react\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport i18next from \"i18next\";\nimport {shadowDark, white, red, lightGreen} from \"@root/react-components/src/values/colors/colors\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {primaryFontLarge, secondaryFontXXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport { ArrowLine } from \"@root/react-components/src/icons/ArrowLine\";\n\ninterface StatCardProps {\n    title: ReactNode;\n    count: number | null;\n    delta: number | null;\n    backGround: string;\n    loading: string;\n}\n\nconst ContainerSummary = styled(Box)((props: {backgroundColor: string}) => ({\n    padding: \"24px 32px\",\n    backgroundColor: props.backgroundColor,\n    borderRadius: \"24px\",\n    color: white,\n    boxShadow: shadowDark,\n    flex: 1,\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    font: primaryFontLarge,\n    [theme.breakpoints.down('sm')]: {\n        padding: \"12px 18px\"\n    },\n}));\n\nconst ContainerDelta = styled(Box)((props: {delta: number}) => ({\n    fontSize: \"x-large\",\n    display: \"flex\",\n    alignItems: \"center\",\n    padding: \"0px 9px 0px 2px\",\n    backgroundColor: props.delta > 0 ? lightGreen : red,\n    borderRadius: \"30px\",\n    boxShadow: \"rgba(23, 25, 27, 0.2) 4px 4px 20px 2px\"\n}))\n\nexport const StatCard = ({ title, delta, count, backGround, loading }: StatCardProps) => {\n    return (\n        <ContainerSummary backgroundColor={backGround}>\n            <Box>\n                {title}\n            </Box>\n            <Box style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", gap: \"12px\" }}>\n                {count === null || delta === null ? (\n                    <CenteredLoading color={loading} />\n                ) : (\n                    <>\n                        <Box style={{font: secondaryFontXXLarge, fontSize: \"42px\"}}>{count}</Box>\n                        {Boolean(delta) &&\n                            <Tooltip title={i18next.t(\"Evolution over the selected period\")}>\n                                <ContainerDelta delta={delta}>\n                                    <ArrowLine\n                                        color={white}\n                                        style={{transform: delta > 0 ? \"rotate(-90deg)\" : \"rotate(90deg)\"}}\n                                        height=\"24\"\n                                        width=\"24\"\n                                        stroke=\"10\"/>\n                                    {/* Fix an issue related to the font's vertical metric that prevents alignment*/}\n                                    <span style={{transform: \"translateY(2px)\", minWidth: \"24px\", textAlign: \"center\"}}>\n                                        {Math.abs(delta)}\n                                    </span>\n                                </ContainerDelta>\n                            </Tooltip>\n                        }\n                    </>\n                )}\n            </Box>\n        </ContainerSummary>\n    )\n};", "import React from \"react\";\n\nexport const Home = () =>\n    <svg width=\"24\" height=\"19\" viewBox=\"0 0 24 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path fill=\"currentColor\" d=\"M11.6821 5.1775L4.00001 11.5046V18.3333C4.00001 18.5102 4.07025 18.6797 4.19527 18.8048C4.32029 18.9298 4.48986 19 4.66667 19L9.33583 18.9879C9.51207 18.987 9.68078 18.9164 9.80508 18.7915C9.92939 18.6666 9.99917 18.4975 9.99917 18.3213V14.3333C9.99917 14.1565 10.0694 13.987 10.1944 13.8619C10.3195 13.7369 10.489 13.6667 10.6658 13.6667H13.3325C13.5093 13.6667 13.6789 13.7369 13.8039 13.8619C13.9289 13.987 13.9992 14.1565 13.9992 14.3333V18.3183C13.9989 18.4061 14.0159 18.493 14.0493 18.5741C14.0827 18.6552 14.1318 18.729 14.1937 18.7911C14.2556 18.8532 14.3292 18.9025 14.4102 18.9362C14.4912 18.9698 14.5781 18.9871 14.6658 18.9871L19.3333 19C19.5101 19 19.6797 18.9298 19.8047 18.8048C19.9297 18.6797 20 18.5102 20 18.3333V11.5L12.3196 5.1775C12.2293 5.10472 12.1168 5.06503 12.0008 5.06503C11.8849 5.06503 11.7724 5.10472 11.6821 5.1775ZM23.8166 9.47792L20.3333 6.60667V0.835419C20.3333 0.702811 20.2806 0.575634 20.1869 0.481865C20.0931 0.388097 19.9659 0.335419 19.8333 0.335419H17.5C17.3674 0.335419 17.2402 0.388097 17.1464 0.481865C17.0527 0.575634 17 0.702811 17 0.835419V3.86084L13.2696 0.791669C12.9116 0.497077 12.4624 0.336008 11.9987 0.336008C11.5351 0.336008 11.0859 0.497077 10.7279 0.791669L0.180847 9.47792C0.130217 9.51977 0.0883286 9.57118 0.0575753 9.62923C0.0268221 9.68727 0.00780662 9.7508 0.00161554 9.81619C-0.00457553 9.88159 0.00217909 9.94756 0.0214935 10.0103C0.0408078 10.0731 0.0723034 10.1315 0.114181 10.1821L1.17668 11.4738C1.21844 11.5245 1.26981 11.5666 1.32784 11.5975C1.38588 11.6284 1.44944 11.6475 1.51488 11.6539C1.58033 11.6602 1.64638 11.6535 1.70924 11.6343C1.77211 11.615 1.83057 11.5835 1.88126 11.5417L11.6821 3.46917C11.7724 3.39639 11.8849 3.3567 12.0008 3.3567C12.1168 3.3567 12.2293 3.39639 12.3196 3.46917L22.1208 11.5417C22.1714 11.5836 22.2298 11.615 22.2926 11.6344C22.3553 11.6537 22.4213 11.6604 22.4867 11.6542C22.5521 11.6481 22.6156 11.629 22.6737 11.5983C22.7317 11.5675 22.7831 11.5256 22.825 11.475L23.8875 10.1833C23.9293 10.1324 23.9607 10.0738 23.9798 10.0107C23.9988 9.94767 24.0053 9.88146 23.9987 9.81591C23.9921 9.75035 23.9726 9.68675 23.9414 9.62875C23.9102 9.57074 23.8678 9.51949 23.8166 9.47792Z\" />\n    </svg>;\n", "import {Group, GroupAttribute} from \"@backend/Types/Group\";\nimport {Role} from \"@backend/Types/Role\";\nimport {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {serialize} from \"bson\";\nimport i18next from \"i18next\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {Authentication} from \"@utils/Authentication\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {RegionAWS} from \"@backend/public/studio/WebAssembly.mjs\";\n\nconst GROUP_ATTRIBUTES = [\n    GroupAttribute.ARCHIVED_DATE,\n    GroupAttribute.AUDIOS,\n    GroupAttribute.DOCUMENTS,\n    GroupAttribute.DOWNLOADS,\n    GroupAttribute.ENTITIES,\n    GroupAttribute.EXPERTS,\n    GroupAttribute.LICENSES_GLASSES,\n    GroupAttribute.NAME,\n    GroupAttribute.OBJECTIVE_QUALIFIED,\n    GroupAttribute.OWNER,\n    GroupAttribute.PEERS,\n    GroupAttribute.PLAN,\n    GroupAttribute.REGION,\n    GroupAttribute.TIME_START,\n    GroupAttribute.UPLOADS,\n    GroupAttribute.VIDEOS,\n    GroupAttribute.WORLDS\n] as const;\n\n// TODO(@anthony) use Pick to create a GroupData type to use instead of Backend/Group\nexport class DataSourceGroups {\n    constructor(private readonly authentication: Authentication) {}\n\n    groups: Map<bigint, Promise<Group>> = new Map();\n    static readonly GROUP_ERROR: Group = {\n        ArchivedDate: BigInt(0),\n        Audios: [],\n        Documents: [],\n        Entities: [],\n        Experts: [],\n        LicensesGlasses: 0,\n        Name: i18next.t(\"Error\"),\n        ObjectiveQualified: BigInt(0),\n        Owner: BigInt(0),\n        Peers: {},\n        Plan: BigInt(0),\n        Region: null,\n        TimeStart: 0,\n        Videos: [],\n        Worlds: []\n    };\n\n    // this function can only be used in admin\n    async getAllGroups(): Promise<bigint[]> {\n        const response: Response | null = await fetch(`/api/Group`, {\n            method: \"GET\",\n            headers: await this.authentication.getDefaultHeaders()\n        }).catch(() => null) ;\n\n        if (!response?.ok)\n            return [];\n\n        const responseJSON: { groupIDs: bigint[] } = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        const groupIDs: bigint[] = responseJSON.groupIDs.sort((a: bigint, b: bigint): number =>\n            Number(UtilsShared.getTimestampOfRandomID(b) - UtilsShared.getTimestampOfRandomID(a)));\n\n        return groupIDs;\n    }\n\n    getGroup(groupID: bigint): Promise<Group> {\n        let group: Promise<Group> | undefined = this.groups.get(groupID);\n        if (!group) {\n            group = this.fetchGroup(groupID)\n            this.groups.set(groupID, group);\n        }\n        return group;\n    }\n\n    private async fetchGroup(groupID: bigint): Promise<Group> {\n        if (!groupID)\n            return DataSourceGroups.GROUP_ERROR;\n\n        const response: Response | null = await fetch(`/api/Group/${groupID}/${GROUP_ATTRIBUTES.join(\",\")}`, {\n            method: \"GET\",\n            headers: await this.authentication.getDefaultHeaders()\n        }).catch(() => null);\n\n        if (!response?.ok) {\n            AdapterLog.ERROR(`Couldn't fetch group ${groupID}`);\n            return DataSourceGroups.GROUP_ERROR;\n        }\n\n        return UtilsBSON.deserializeBSON(await response.arrayBuffer());\n    }\n\n    invalidateGroup(groupID: bigint): void {\n        this.groups.delete(groupID);\n    }\n\n    async createGroup(name: string): Promise<bigint> {\n        if (!name)\n            return BigInt(0);\n\n        const response: Response | null = await fetch(\"/api/Group/Create\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ name }),\n        }).catch(() => null);\n\n        if (!response?.ok) {\n            AdapterLog.ERROR(`Couldn't create group new group named ${name}`);\n            return BigInt(0);\n        }\n\n        const responseJSON: {groupID: bigint} = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        return responseJSON.groupID;\n    }\n\n    public async deleteGroup(groupID: bigint): Promise<boolean>{\n        const response: Response | null = await fetch(`/api/Group/${groupID}`, {\n            method: \"DELETE\",\n            headers: await this.authentication.getDefaultHeaders()\n        }).catch(() => null);\n        \n        if (!response?.ok) {\n            AdapterLog.ERROR(`Couldn't delete group ${groupID}`);\n            return false;\n        }\n\n        this.groups.delete(groupID);\n\n        const responseJSON: {success: boolean} = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        return responseJSON.success;\n    }\n\n    public async invitePeerToGroup(groupID: bigint, peerID: bigint): Promise<boolean>{\n        const response: Response | null = await fetch(`/api/Group/${groupID}/Invite`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ peerID })\n        }).catch(() => null);\n\n        if(!response?.ok) {\n            AdapterLog.ERROR(`Couldn't invite Peer ${peerID} to group ${groupID}`);\n            return false;\n        }\n        const responseJSON: {success: boolean} = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n\n        const group: Group = await this.getGroup(groupID);\n        group.Peers[peerID.toString()] = Role.VIEWER;\n\n        return responseJSON.success;\n    }\n\n    public async removePeerFromGroup(groupID: bigint, peerID: bigint): Promise<boolean> {\n        const response: Response | null = await fetch(`/api/Group/${groupID}/Peer/${peerID}`, {\n            method: \"DELETE\",\n            headers: await this.authentication.getDefaultHeaders()\n        }).catch(() => null);\n\n        if(!response?.ok) {\n            AdapterLog.ERROR(`Couldn't remove peer ${peerID} from group ${groupID}`);\n            return false;\n        }\n\n        const group: Group = await this.getGroup(groupID);\n        if (!group)\n            return true;\n\n        delete group.Peers[peerID.toString()];\n\n        const responseJSON: {success: boolean} = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        return responseJSON.success;\n    }\n\n    public async setGroupRoleForPeer(groupID: bigint, peerID: bigint, role: Role): Promise<boolean> {\n        if (!groupID || !peerID)\n            return false;\n        \n        const response: Response | null = await fetch(`/api/Group/${groupID}/Peer/${peerID}/Role`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ role }),\n        }).catch(() => null);\n\n        if (!response?.ok) {\n            AdapterLog.ERROR(`Couldn't set new role for peer ${peerID} in group ${groupID}`);\n            return false;\n        }\n\n        const responseJSON: {success: boolean} = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n\n        const group: Group = await this.getGroup(groupID);\n        group.Peers[peerID.toString()] = role;\n\n        return responseJSON.success;\n    }\n\n    public async setLicensesGlassesForGroup(groupID: bigint, licensesGlasses: number): Promise<boolean> {\n        const response: Response | null = await fetch(`/api/Group/${groupID}/LicensesGlasses`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ licensesGlasses })\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return false;\n\n        // set the group's new licenses glasses amount\n        const group: Group = await this.getGroup(groupID);\n        group.LicensesGlasses = licensesGlasses;\n        return true;\n    }\n\n    public async setGroupPlan(groupID: bigint, planID: bigint): Promise<boolean> {\n        if (!groupID || !planID)\n            return false;\n\n        const response: Response | null = await fetch(`/api/Group/${groupID}/Plan`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ planID }),\n        }).catch(() => null);\n\n        if (!response?.ok) {\n            AdapterLog.ERROR(`Couldn't set plan ${planID} for group ${groupID}`);\n            return false;\n        }\n\n        // set the group's new plan\n        const group: Group = await this.getGroup(groupID);\n        group.Plan = planID;\n        return true;\n    }\n\n    public async resetGroupPlanTimeStart(groupID: bigint): Promise<boolean> {\n        const response: Response | null = await fetch(`/api/Group/${groupID}/ResetTimeStart`, {\n            method: \"POST\",\n            headers: await this.authentication.getDefaultHeaders()\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return false;\n\n        // get the new time start from the response and update the group object with it\n        const group: Group = await this.getGroup(groupID);\n        group.TimeStart = UtilsBSON.deserializeBSON(await response.arrayBuffer())?.timeStart ?? BigInt(0);\n        return true;\n    }\n\n    public async addGroupExpert(groupID: bigint, peerID: bigint): Promise<boolean> {\n        const response: Response | null = await fetch(`/api/Group/${groupID}/Experts`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ peerID })\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return false;\n\n        const group: Group = await this.getGroup(groupID);\n        group.Experts = [...group.Experts, peerID];\n\n        return true;\n    }\n\n    public async removeGroupExpert(groupID: bigint, peerID: bigint): Promise<boolean> {\n        const response: Response | null = await fetch(`/api/Group/${groupID}/Experts`, {\n            method: \"DELETE\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ peerID })\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return false;\n\n        const group: Group = await this.getGroup(groupID);\n        group.Experts = group.Experts.filter((expertPeerID: bigint) => expertPeerID !== peerID);\n\n        return true;\n    }\n\n    public async removeDocument(groupID: bigint, deleteDocumentID: bigint) {\n        const group: Group | undefined = await this.groups.get(groupID);\n        if (!group)\n            return;\n\n        group.Documents = group.Documents.filter((documentID: bigint) => deleteDocumentID !== documentID);\n    }\n\n    public async saveName(groupID: bigint, name: string): Promise<boolean> {\n        if (!name || !groupID)\n            return false;\n\n        const response: Response | null = await fetch(`/api/Group/${groupID}/${GroupAttribute.NAME}`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"Content-Type\": \"application/octet-stream\"\n            },\n            body: serialize({ name, timestamp: BigInt(Math.floor(Date.now() / 1000)) })\n        }).catch(() => null);\n\n        if (!response?.ok) {\n            AdapterLog.ERROR(`Couldn't save new name for group ${groupID}`);\n            return false;\n        }\n\n        const group: Group = await this.getGroup(groupID);\n        group.Name = name;\n\n        return true;\n    }\n\n    public async saveObjectiveQualified(groupID: bigint, objectiveQualified: bigint): Promise<boolean> {\n        if (!groupID)\n            return false;\n\n        const response: Response | null = await fetch(`/api/Group/${groupID}/${GroupAttribute.OBJECTIVE_QUALIFIED}`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"Content-Type\": \"application/octet-stream\"\n            },\n            body: serialize({ value: objectiveQualified, timestamp: BigInt(Math.floor(Date.now() / 1000)) })\n        }).catch(() => null);\n\n        if (!response?.ok) {\n            AdapterLog.ERROR(`Couldn't save new objective qualified for group ${groupID}`);\n            return false;\n        }\n\n        const group: Group = await this.getGroup(groupID);\n        group.ObjectiveQualified = objectiveQualified;\n\n        return true;\n    }\n\n    public async saveRegion(groupID: bigint, region: RegionAWS): Promise<boolean> {\n        if (!region || !groupID)\n            return false;\n\n        const response: Response | null = await fetch(`/api/Group/${groupID}/${GroupAttribute.REGION}`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"Content-Type\": \"application/octet-stream\"\n            },\n            body: serialize({ [GroupAttribute.REGION]: region, timestamp: BigInt(Math.floor(Date.now() / 1000)) })\n        }).catch(() => null);\n        if (!response?.ok) {\n            AdapterLog.ERROR(`Couldn't save region for group ${groupID}`);\n            return false;\n        }\n\n        const group: Group = await this.getGroup(groupID);\n        group.Region = region;\n        return true;\n    }\n}\n", "import {OwnerType} from \"@backend/Types/OwnerType\";\nimport {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {ObjectTypeS3} from \"@backend/Types/ObjectTypeS3\";\nimport {serialize} from \"bson\";\nimport {Authentication} from \"@utils/Authentication\";\nimport {RegionAWS} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\n\nconst UPLOAD_PART_SIZE: number = 10 * 1024 * 1024; // Size of each part in multipart upload (10mb)\n\nexport class DataSourceStorage {\n    constructor(private readonly authentication: Authentication) {}\n\n    private groupStorages: Map<bigint, Promise<number>> = new Map();\n    private peerStorages: Map<bigint, Promise<number>> = new Map();\n    private preSignedURLs: Map<string, Promise<string>> = new Map();    // map of urlS3 -> presignedURL pairs\n    private availableBucketsRegions: Promise<Map<string, RegionAWS>> | undefined;\n\n    public getAvailableBucketsRegions(): Promise<Map<string, RegionAWS>> {\n        if (!this.availableBucketsRegions)\n            this.availableBucketsRegions = this.fetchAvailableBucketsRegions();\n        return this.availableBucketsRegions;\n    }\n\n    private async fetchAvailableBucketsRegions(): Promise<Map<string, RegionAWS>> {\n        const response: Response | null = await fetch(\"/api/Storage/AvailableRegions\", {\n            method: \"GET\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n        }).catch(() => null);\n\n        // return empty map if there was an error\n        if (!response?.ok) {\n            AdapterLog.ERROR(\"An error occurred getting available buckets regions\");\n            return new Map();\n        }\n\n        // deserialize response into bucket and region\n        const body: { [regions: string]: string } = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        const bucketsRegions: Map<string, RegionAWS> = new Map();\n        for (const [bucket, region] of Object.entries(body)){\n            const regionAWS: RegionAWS|null = UtilsShared.getCorrespondingRegion(region);\n            if (regionAWS)\n                bucketsRegions.set(bucket, regionAWS);\n            else\n                AdapterLog.ERROR(\"An error occurred getting available bucket with region: \" + region);\n        }\n        return bucketsRegions;\n    }\n\n    public async migrateOwnerRegion(ownerType: OwnerType, ownerID: bigint, newBucket: string): Promise<number> {\n        const response: Response | null = await fetch(`/api/Storage/Migrate/${ownerType}/${ownerID}`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ newBucket: newBucket })\n        }).catch(() => null);\n\n        // In case of GATEWAY_TIMEOUT, we return -1 because migration is in progress but indeterminate\n        if (response?.status === 504)\n            return -1;\n\n        if(!response?.ok)\n            return 0;\n        const body: { migratedCount?: number } = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        return body.migratedCount ? body.migratedCount : 1;\n    }\n\n    public getPreSignedUrl(urlS3: string, type: ObjectTypeS3, objectID: bigint = BigInt(0)): Promise<string> {\n        let preSignedUrlRequest: Promise<string> | undefined = this.preSignedURLs.get(urlS3);\n        if (!preSignedUrlRequest) {\n            preSignedUrlRequest = this.fetchPreSignedURL(urlS3, type, objectID);\n            this.preSignedURLs.set(urlS3, preSignedUrlRequest);\n        }\n        return preSignedUrlRequest;\n    }\n\n    private async fetchPreSignedURL(urlS3: string, type: ObjectTypeS3, objectID: bigint): Promise<string> {\n        const response: Response = await fetch(`/api/Storage/GetObject/${type}`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize(objectID ? { urlS3, objectID } : { urlS3 })\n        });\n        return response.ok ? UtilsBSON.deserializeBSON(await response.arrayBuffer()).s3Url : \"\";\n    }\n\n    public getGroupStorageUsage(groupID: bigint): Promise<number> {\n        let storageRequest: Promise<number> | undefined = this.groupStorages.get(groupID);\n        if (!storageRequest) {\n            storageRequest = this.fetchGroupStorage(groupID);\n            this.groupStorages.set(groupID, storageRequest);\n        }\n        return storageRequest;\n    }\n\n    private async fetchGroupStorage(groupID: bigint): Promise<number> {\n        const storageResponse: Response | null =\n            await fetch(`/api/Storage/Usage?ownerType=${OwnerType.GROUP}&ownerID=${groupID}`, {\n                method: \"GET\",\n                headers: {\n                    ...await this.authentication.getDefaultHeaders(),\n                    \"content-type\": \"application/octet-stream\"\n                },\n            }).catch(() => null);\n\n        return storageResponse?.ok ? UtilsBSON.deserializeBSON(await storageResponse.arrayBuffer()).Storage : 0;\n    }\n\n    public getPeerStorageUsage(peerID: bigint): Promise<number> {\n        let storageRequest: Promise<number> | undefined = this.peerStorages.get(peerID);\n        if (!storageRequest) {\n            storageRequest = this.fetchPeerStorage(peerID);\n            this.peerStorages.set(peerID, storageRequest);\n        }\n        return storageRequest;\n    }\n\n    private async fetchPeerStorage(peerID: bigint): Promise<number> {\n        const storageResponse: Response | null =\n            await fetch(`/api/Storage/Usage?ownerType=${OwnerType.PEER}&ownerID=${peerID}`, {\n                method: \"GET\",\n                headers: {\n                    ...await this.authentication.getDefaultHeaders(),\n                    \"content-type\": \"application/octet-stream\"\n                },\n            }).catch(() => null);\n\n        return storageResponse?.ok ? UtilsBSON.deserializeBSON(await storageResponse.arrayBuffer()).Storage : 0;\n    }\n\n    public async removeGroupStorage(groupID: bigint, storage: number) {\n        const groupStorage: number | undefined = await this.groupStorages.get(groupID);\n        if (!groupStorage)\n            return;\n\n        this.groupStorages.set(groupID, Promise.resolve(groupStorage - storage));\n    }\n\n    public async removePeerStorage(peerID: bigint, storage: number) {\n        const peerStorage: number | undefined = await this.peerStorages.get(peerID);\n        if (!peerStorage)\n            return;\n\n        this.peerStorages.set(peerID, Promise.resolve(peerStorage - storage));\n    }\n\n    public async uploadToS3(ID: bigint, file: File, type: ObjectTypeS3): Promise<string> {\n\n        const preSignedURLs: string[] = await this.createMultipartUploadToS3(ID, file, type);\n        if (!preSignedURLs.length)\n            return \"\";\n\n        // get the upload ID and urlS3 to be able to complete the upload\n        const parsedPreSignedURL: URL | null = URL.parse(preSignedURLs[0]);\n        if (!parsedPreSignedURL)\n            return \"\";\n\n        const uploadID: string | null = parsedPreSignedURL.searchParams.get(\"uploadId\");\n        if (!uploadID)\n            return \"\";\n\n        // path of preSigned urls should always be \"bucket-name/peerID/objectID/fileName\"\n        const pathParts: string[] = decodeURIComponent(parsedPreSignedURL.pathname.substring(1)).split(\"/\");\n        if (pathParts.length < 4)\n            return \"\";\n\n        const urlS3: string = pathParts.slice(1).join(\"/\");\n\n        for (let i: number = 0; i < preSignedURLs.length; ++i) {\n            const startByte: number = i * UPLOAD_PART_SIZE;\n            const endByte: number = Math.min(startByte + UPLOAD_PART_SIZE, file.size);\n            const partBlob: Blob = file.slice(startByte, endByte);\n\n            if (!await this.multipartUploadToS3(preSignedURLs[i], partBlob))\n                return \"\";\n        }\n\n        return await this.completeMultipartUpload(uploadID, urlS3) ? urlS3 : \"\";\n    }\n\n    private async createMultipartUploadToS3(ID: bigint, file: File, type: ObjectTypeS3)\n        : Promise<string[]> {\n\n        const response: Response | null = await fetch(`/api/Storage/PostObject/${type}`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({\n                ID,\n                fileSize: BigInt(file.size),\n                fileName: file.name,\n                partSize: UPLOAD_PART_SIZE\n            })\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return [];\n\n        const body: { preSignedUrls: string[] } = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        return body.preSignedUrls;\n    }\n\n    private async multipartUploadToS3(preSignedURL: string, part: Blob): Promise<boolean> {\n        if (!preSignedURL)\n            return false;\n\n        const response: Response | null = await fetch(preSignedURL, {\n            method: \"PUT\",\n            body: part\n        }).catch(() => null);\n\n        return Boolean(response?.ok);\n    }\n\n    private async completeMultipartUpload(uploadID: string, urlS3: string): Promise<boolean> {\n        const response: Response | null = await fetch(\"/api/Storage/CompleteUpload\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({\n                uploadID,\n                urlS3,\n                partSize: UPLOAD_PART_SIZE\n            })\n        }).catch(() => null);\n\n        return Boolean(response?.ok);\n    }\n}\n", "import {AssetType} from \"@root/Types/AssetType\";\nimport {OwnerType} from \"@root/Types/OwnerType\";\nimport {Role} from \"@root/Types/Role\";\n\n// Initial dimensions of the world in meters\nexport const INITIAL_DIMENSIONS = {\n    WIDTH: \"8.0\",\n    HEIGHT: \"0.0\",\n    DEPTH: \"8.0\"\n};\n\nexport interface World {\n    Assets: { value: { [assetID: string]: AssetType }, timestamp: bigint },\n    ArchivedDate: { value: bigint, timestamp: bigint },\n    AuthorizedEmails: { value: { [email: string]: Role }, timestamp: bigint },\n    Depth: { value: string, timestamp: bigint },\n    Editable: { value: string, timestamp: bigint },\n    Entities: { value: bigint[], timestamp: bigint },\n    Group: { value: { [groupID: string]: Role }, timestamp: bigint },\n    Height: { value: string, timestamp: bigint },\n    Owner: { value: bigint, timestamp: bigint },\n    OwnerType: { value: OwnerType, timestamp: bigint },\n    Peer: { value: { [peerID: string]: Role }, timestamp: bigint },\n    QR: { value: string[], timestamp: bigint },\n    Sequences: { value: bigint[], timestamp: bigint },\n    Shared: { value: string, timestamp: bigint },\n    Thumbnail: { value: string, timestamp: bigint },\n    Title: { value: string, timestamp: bigint },\n    Width: { value: string, timestamp: bigint },\n}\n\nexport enum WorldAttribute {\n    ASSETS = \"Assets\",\n    AUTHORIZED_EMAILS = \"AuthorizedEmails\",\n    ARCHIVED_DATE = \"ArchivedDate\",\n    DEPTH = \"Depth\",\n    EDITABLE = \"Editable\",\n    ENTITIES = \"Entities\",\n    GROUP = \"Group\",\n    HEIGHT = \"Height\",\n    OWNER = \"Owner\",\n    OWNER_TYPE = \"OwnerType\",\n    PEER = \"Peer\",\n    QR = \"QR\",\n    SEQUENCES = \"Sequences\",\n    SHARED = \"Shared\",\n    THUMBNAIL = \"Thumbnail\",\n    TITLE = \"Title\",\n    WIDTH = \"Width\",\n}\n\nexport class EventWorldAttributeChanged {\n    static readonly EVENT_WORLD_ATTRIBUTED_CHANGED: string = \"worldAttribute.changed\";\n    worldID: bigint;\n    attribute: WorldAttribute;\n    timestamp: bigint;\n}\n", "import {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {World, WorldAttribute} from \"@backend/Types/World\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {serialize} from \"bson\";\nimport {Authentication} from \"@utils/Authentication\";\n\nexport class DataSourceWorlds {\n    constructor(private readonly authentication: Authentication) {}\n\n    private worlds: Map<bigint, Promise<World>> = new Map();\n    static readonly WORLD_ERROR: World = {\n        Title: { value: \"Error\", timestamp: BigInt(0) },\n        Thumbnail: { value: \"Error\", timestamp: BigInt(0) },\n        Owner: { value: BigInt(0), timestamp: BigInt(0) },\n        OwnerType: { value: OwnerType, timestamp: BigInt(0) },\n        Width: { value: \"Error\", timestamp: BigInt(0) },\n        Height: { value: \"Error\", timestamp: BigInt(0) },\n        Depth: { value: \"Error\", timestamp: BigInt(0) },\n        Shared: { value: \"Error\", timestamp: BigInt(0) },\n        Editable: { value: \"Error\", timestamp: BigInt(0) },\n        QR: { value: [], timestamp: BigInt(0) },\n        Sequences: { value: [], timestamp: BigInt(0) },\n        Assets: { value: {}, timestamp: BigInt(0) },\n        Peer: { value: {}, timestamp: BigInt(0) },\n        Group: { value: {}, timestamp: BigInt(0) },\n        AuthorizedEmails: { value: {}, timestamp: BigInt(0) },\n        Entities: { value: [] , timestamp: BigInt(0) }\n    };\n\n    getWorld(worldID: bigint): Promise<World>{\n        let world = this.worlds.get(worldID);\n        if(!world) {\n            world = this.fetchWorld(worldID);\n            this.worlds.set(worldID, world);\n        }\n        return world;\n    }\n\n    private async fetchWorld(worldID: bigint): Promise<World>{\n        const response: Response | null = await fetch(`/api/World/${worldID}/${Object.values(WorldAttribute).join(',')}`, {\n            method: \"GET\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return DataSourceWorlds.WORLD_ERROR;\n\n        const world: World = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        return world as World;\n    }\n\n    async setWorldOwner(worldID: bigint, ownerID: bigint, ownerType: OwnerType): Promise<boolean> {\n        const response: Response = await fetch(`/api/World/${worldID}/Owner`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ ownerID, ownerType })\n        });\n        if (!response?.ok)\n            return false;\n\n        // set the new world owner and owner type locally\n        const world: World = await this.getWorld(worldID);\n        world.Owner.value = ownerID;\n        world.OwnerType.value = ownerType;\n        return true;\n    }\n\n    async addEntityToWorld(worldID: bigint, entityID: bigint): Promise<boolean> {\n        const response: Response = await fetch(`/api/World/${worldID}/Entities`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ value: entityID, timestamp: BigInt(Math.floor(Date.now() / 1000)) })\n        });\n        if (!response?.ok) {\n            const world: World = await this.getWorld(worldID);\n            world.Entities.value.push(entityID);\n        }\n\n        return response.status === 200;\n    }\n\n    async removeEntityFromWorld(worldID: bigint, entityID: bigint): Promise<boolean> {\n        const response: Response = await fetch(`/api/World/${worldID}/Entities`, {\n            method: \"DELETE\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ value: entityID, timestamp: BigInt(Math.floor(Date.now() / 1000)) })\n        });\n\n        if (response.status === 200) {\n            const world: World = await this.getWorld(worldID);\n            world.Entities.value = world.Entities.value.filter((id: bigint) => id !== entityID);\n        }\n\n        return response.status === 200;\n    }\n\n    invalidateWorld(worldID: bigint): void {\n        this.worlds.delete(worldID);\n    }\n}\n", "import {StepType} from \"./Step\";\nexport class StepAction {\n\n    constructor(stepID: bigint, stepIndex: bigint,\n                timeStart: bigint, timeSpent: bigint,\n                stepType: StepType | null, stepInput: string){\n        this.stepType = stepType;\n        this.stepID = stepID;\n        this.stepIndex = stepIndex;\n        this.stepInput = stepInput;\n        this.timeStart = timeStart;\n        this.timeSpent = timeSpent;\n    }\n\n    readonly stepID: bigint;\n    readonly stepIndex: bigint;\n    readonly timeStart: bigint;\n    readonly timeSpent: bigint;\n    readonly stepType : StepType | null;\n    readonly stepInput: string;\n}", "import {StepType} from \"./Step\";\nimport {StepAction} from \"./StepAction\";\nimport {TypeOS} from \"./TypeOS\";\n\n/// Represents logs for a specific Sequence in a World. Organised in a Structure of Array(SoA)\nexport class AttemptLogs {\n\n    /// Main constructor\n    constructor(worldID: bigint, sequenceID: bigint, attemptID: bigint, os: TypeOS = TypeOS.UNKNOWN,\n                peerID: bigint = BigInt(0), session: bigint = BigInt(0), entityID: bigint = BigInt(0)) {\n        this.worldID = worldID;\n        this.sequenceID = sequenceID;\n        this.attemptID = attemptID;\n        this.os = os;\n        this.peerID = peerID;\n        this.session = session;\n        this.entityID = entityID;\n    }\n\n    public length(): number { return this.timestamps.length; }\n\n    public getTimestamps(): bigint[] { return this.timestamps; }\n\n    public getStepInputs(): string[] { return this.stepInputs; }\n\n    /// copies all logs from start index into our own internal data structure for processing\n    public assignFromSequenceLogsSteps(indexStart: number, logsCount: number, stepID: bigint[],\n                                       stepIndex: bigint[], stepInput: string[],\n                                       stepType: (StepType | null)[], timestamp: bigint[]){\n        const indexEnd: number = indexStart + logsCount;\n        this.stepIDs     = stepID.slice(indexStart, indexEnd);\n        this.stepIndices = stepIndex.slice(indexStart, indexEnd);\n        this.stepInputs  = stepInput.slice(indexStart, indexEnd);\n        this.stepTypes   = stepType.slice(indexStart, indexEnd);\n        this.timestamps  = timestamp.slice(indexStart, indexEnd);\n        this.sortedIndices = null; //  no longer sorted...\n    }\n\n    /// sort based on timestamp, we use the sortedIndices data member to avoid sorting every other array\n    public sort(){\n        if(this.sortedIndices)\n            return;\n\n        // we will create an array from 0 to length of timestamps and sort it\n        this.sortedIndices = Array.from(Array(this.timestamps.length).keys()).sort(\n\n            // > 0 will sort b before a, < 0 will sort a before b, = 0 will keep order\n            (indexA: number, indexB: number): number => {\n\n            // order by timestamp\n            if(this.timestamps[indexA] != this.timestamps[indexB])\n                return this.timestamps[indexA] < this.timestamps[indexB] ? -1 : 1;\n\n            return 0; // we don't change the order otherwise\n        });\n\n        // step actions will need to be recomputed\n        this.stepActions = null;\n    }\n\n    public getStepActions(): StepAction[]{\n\n        // verify if we already have the StepActions\n        if(this.stepActions)\n            return this.stepActions;\n\n        // verify if there are logs\n        const length: number = this.length();\n        if(length == 0) {\n            this.stepActions = [];\n            return this.stepActions;\n        }\n\n        // we need to sort them\n        if (!this.sortedIndices)\n            this.sort();\n\n        // we will create step action between each step transitions\n        this.stepActions = [];\n        if (!this.sortedIndices)\n            return [];\n\n        for(let i: number = 1; i < length; ++i){\n            const currentStepIndex: number = this.sortedIndices[i];\n            const previousStepIndex: number = this.sortedIndices[i - 1];\n\n            if (this.stepIndices[currentStepIndex] === BigInt(-1))\n                continue;\n\n            // we will create a StepAction with the second step info in it\n            const timeStart: bigint = this.timestamps[previousStepIndex];\n            this.stepActions.push(new StepAction(this.stepIDs[currentStepIndex], this.stepIndices[currentStepIndex],\n                                  timeStart, this.timestamps[currentStepIndex] - timeStart,\n                                  this.stepTypes[currentStepIndex], this.stepInputs[currentStepIndex]));\n        }\n\n        return this.stepActions;\n    }\n\n    //////////////////////// Class Members ////////////////////////\n\n    readonly worldID : bigint = BigInt(0);\n    readonly sequenceID : bigint = BigInt(0);\n    readonly attemptID: bigint = BigInt(0);\n    readonly entityID: bigint = BigInt(0);\n    readonly os: TypeOS = TypeOS.UNKNOWN;\n    readonly peerID: bigint = BigInt(0);\n    readonly session: bigint = BigInt(0);\n\n    private stepIDs: bigint[] = [];\n    private stepIndices: bigint[] = [];\n    private stepInputs: string[] = [];\n    private stepTypes: (StepType | null)[] = [];\n    private timestamps: bigint[] = [];\n\n    // cache if sorted and if we have the step actions extracted out!\n    private sortedIndices: number[]|null = null;\n    private stepActions: StepAction[]|null = null;\n}\n", "import {DataSourceSequences, Sequence} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {SequenceLogs} from \"@backend/Types/SequenceLogs\";\nimport {TypeOS} from \"@backend/Types/TypeOS\";\nimport {Authentication} from \"@utils/Authentication\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\n\nexport type WorldSequenceAttempts = Map<bigint, Map<bigint, bigint[]>>\n/// This class manages all access to world sequence logs (it also caches them!)\nexport class DataSourceAttemptLogs {\n\n    /// Main constructor (takes in the datasource for sequence logs)\n    constructor(private readonly authentication: Authentication,\n                private readonly dataSourceSequences: DataSourceSequences) {\n        this.worldSequenceAttemptLogs = new Map();\n    }\n\n    static readonly ATTEMPT_LOGS_ERROR: AttemptLogs = new AttemptLogs(\n        BigInt(0),\n        BigInt(0),\n        BigInt(0),\n        TypeOS.UNKNOWN,\n        BigInt(0),\n        BigInt(0),\n        BigInt(0),\n    );\n\n    /// returns all attempt logs\n    public async getAllAttemptLogs(worldID: bigint,\n                                   sequenceID: bigint,\n                                   filterEmptyAttempts: boolean = true): Promise<AttemptLogs[]> {\n        // first we retrieve the sequence logs and accumulate the attempts logs\n        const sequence: Sequence = await this.dataSourceSequences.getSequence(worldID, sequenceID);\n        const attemptsLog: AttemptLogs[] = [];\n\n        for (const attemptID of sequence.Logs.value.getAttemptsID()) {\n            const attempt: AttemptLogs = await this.getAttemptLogs(worldID, sequenceID, attemptID);\n\n            if (attempt !== DataSourceAttemptLogs.ATTEMPT_LOGS_ERROR)\n                attemptsLog.push(attempt);\n        }\n\n        return filterEmptyAttempts ? attemptsLog.filter((attempt: AttemptLogs) => attempt.getStepActions().length > 0)\n                                   : attemptsLog;\n    }\n\n    /// returns or fetch the attempt logs (if we don't have it)\n    public async getAttemptLogs(worldID: bigint, sequenceID: bigint,\n                                attemptID: bigint): Promise<AttemptLogs>{\n\n        // try to get the sequences within the world\n        let sequencesLogs: Map<bigint, Promise<Map<bigint, AttemptLogs>>> | undefined =\n            this.worldSequenceAttemptLogs.get(worldID);\n        if (!sequencesLogs) {\n            sequencesLogs = new Map<bigint, Promise<Map<bigint, AttemptLogs>>>()\n            this.worldSequenceAttemptLogs.set(worldID, sequencesLogs);\n        }\n\n        // try to get all attempts from the sequence\n        let attemptsLogs: Promise<Map<bigint, AttemptLogs>> | undefined = sequencesLogs.get(sequenceID);\n        if (!attemptsLogs) {\n            attemptsLogs = this.fetchAttemptLogs(worldID, sequenceID);\n            sequencesLogs.set(sequenceID, attemptsLogs);\n        }\n\n        // we can now await and return the desired attempt (or empty one if not found)\n        const allAttempts : Map<bigint, AttemptLogs> = await attemptsLogs;\n        const attempt: AttemptLogs | undefined = allAttempts.get(attemptID);\n        return attempt ? attempt : DataSourceAttemptLogs.ATTEMPT_LOGS_ERROR;\n    }\n\n    private static splitSequenceLogsByAttempt(sequenceLogs: SequenceLogs): AttemptLogs[]{\n\n        // make sure we have logs to process\n        if(sequenceLogs.length() === 0)\n            return [];\n\n        // make sure we are sorted before anything else\n        sequenceLogs.sort();\n\n        // we will iterate the attempt array and split our logs\n        const attemptsLogs: AttemptLogs[] = [];\n        let startIndex: number = 0;\n        const stepsAttemptsIDs = sequenceLogs.getStepsAttemptIDs();\n        for(let i = 1; i < stepsAttemptsIDs.length; ++i){\n\n            // verify if we're in the same attempt, we keep going\n            if(stepsAttemptsIDs[i] === stepsAttemptsIDs[startIndex])\n                continue;\n\n            // create and push the attempt, reset startIndex\n            const attempt: AttemptLogs = DataSourceAttemptLogs\n                .constructAttempt(sequenceLogs, startIndex, i - startIndex);\n            attemptsLogs.push(attempt);\n            startIndex = i;\n        }\n\n        // create and push the last attempt before returning\n        const attempt: AttemptLogs = DataSourceAttemptLogs\n            .constructAttempt(sequenceLogs, startIndex, stepsAttemptsIDs.length - startIndex);\n        attemptsLogs.push(attempt);\n        return attemptsLogs;\n    }\n\n    public async getAttemptsByWorldSequenceAttempts(worldSequenceAttempts: WorldSequenceAttempts):\n        Promise<Set<AttemptLogs>> {\n        const attemptLogs: Set<AttemptLogs> = new Set<AttemptLogs>();\n\n        for(const [worldID, sequenceAttempts] of worldSequenceAttempts){\n            for(const [sequenceID, attemptIDs] of sequenceAttempts){\n                // This should not be a Promise.all\n                for(const attemptID of attemptIDs) {\n                    const attempt: AttemptLogs = await this.getAttemptLogs(worldID, sequenceID, attemptID);\n\n                    if(attempt !== DataSourceAttemptLogs.ATTEMPT_LOGS_ERROR)\n                        attemptLogs.add(attempt);\n                }\n            }\n        }\n\n        return attemptLogs;\n    }\n\n    private static constructAttempt(sequenceLogs: SequenceLogs,\n                                    startIndex: number, logsCount: number): AttemptLogs{\n\n        // we are no longer in the same attempt, we will create the Attempt\n        const attempt = new AttemptLogs(sequenceLogs.worldID, sequenceLogs.sequenceID,\n            sequenceLogs.getStepsAttemptIDs()[startIndex], sequenceLogs.getStepsOS(startIndex),\n            sequenceLogs.getStepsPeerIDs(startIndex), sequenceLogs.getStepsSessions(startIndex),\n            sequenceLogs.getEntityID(startIndex)\n        );\n\n        // we assign the logs for this attempt\n        attempt.assignFromSequenceLogsSteps(startIndex, logsCount, sequenceLogs.getStepsIDs(),\n            sequenceLogs.getStepsIndices(), sequenceLogs.getStepsInputs(),\n            sequenceLogs.getStepsTypes(), sequenceLogs.getStepsTimestamps());\n\n        return attempt;\n    }\n\n    /// launch all fetching of a sequence logs (returns a specific one, other will be assigned here)\n    private async fetchAttemptLogs(worldID: bigint, sequenceID: bigint)\n                                  : Promise<Map<bigint, AttemptLogs>> {\n\n        // use DataSourceSequences to get the SequenceLogs\n        const sequence: Sequence = await this.dataSourceSequences.getSequence(worldID, sequenceID);\n\n        // split the logs by attempt\n        const mapAttemptLogs: Map<bigint, AttemptLogs> = new Map();\n        const allAttemptsLogs: AttemptLogs[] = DataSourceAttemptLogs.splitSequenceLogsByAttempt(sequence.Logs.value);\n        for (const attemptLogs of allAttemptsLogs)\n            mapAttemptLogs.set(attemptLogs.attemptID, attemptLogs);\n\n        return mapAttemptLogs;\n    }\n\n    public invalidateCache(worldID: bigint, sequenceID: bigint) {\n        const sequencesLogs = this.worldSequenceAttemptLogs.get(worldID);\n        if (sequencesLogs)\n            sequencesLogs.delete(sequenceID);\n    }\n\n    // return all attemptsLogs from the current sequence and first Major parent\n    public async getAttemptsUpToLastMajor(worldID: bigint,\n                                   sequenceID: bigint,\n                                   filterEmptyAttempts: boolean = true): Promise<AttemptLogs[]> {\n\n        const allSequences: bigint[] = await this.getSequencesUpToLastMajor(worldID, sequenceID);\n        const attempts: AttemptLogs[] = [];\n        for (const sequenceID of allSequences)\n            attempts.push(...await this.getAllAttemptLogs(worldID, sequenceID, filterEmptyAttempts));\n        return attempts;\n    }\n\n    public async getSequencesUpToLastMajor(worldID: bigint, sequenceID: bigint): Promise<bigint[]> {\n        const sequencesDataSource: DataSourceSequences = AppConsole.getInstance().dataSourceSequences;\n        const sequences: bigint[] = [];\n\n        // walk up the parent sequence until we include a Major Sequence\n        while (sequenceID) {\n            sequences.push(sequenceID);\n            const sequence: Sequence = await sequencesDataSource.getSequence(worldID, sequenceID);\n            sequenceID = sequence.ParentSequence.value;\n            if (sequence.Major.value)\n                break;\n        }\n\n        return sequences;\n    }\n    /////////////////////////// Class Members ///////////////////////////\n\n    /// Map of world to sequence => Promise of attemptID to AttemptLogs\n    readonly worldSequenceAttemptLogs: Map<bigint,         // world\n                                       Map<bigint,         // sequence\n                                       Promise<Map<bigint, // attemptID\n                                       AttemptLogs>>>> = new Map();\n}", "import {convertStringToStepType, StepType} from \"./Step\";\nimport {convertStringToTypeOS, TypeOS} from \"./TypeOS\";\n\n/// Represents logs for a specific Sequence in a World. Organised in a Structure of Array(SoA)\nexport class SequenceLogs {\n\n    /// Main constructor\n    constructor(worldID: bigint, sequenceID: bigint) {\n        this.worldID = worldID;\n        this.sequenceID = sequenceID;\n    }\n\n    /// returns the amount of log in here\n    public length(): number { return this.timestamps.length; }\n\n    public getStepsAttemptIDs(): bigint[] { return this.attemptIDs; }\n\n    public getStepsOS(index: number): TypeOS { return convertStringToTypeOS(this.os[index]); }\n\n    public getStepsPeerIDs(index: number): bigint { return this.peerIDs[index]; }\n\n    public getPeerIDs(): bigint[] { return this.peerIDs; }\n\n    public getStepsSessions(index: number): bigint { return this.sessions[index]; }\n\n    public getStepsIDs(): bigint[] { return this.stepIDs; }\n\n    public getStepsIndices(): bigint[] { return this.stepIndices; }\n\n    public getStepsInputs(): string[] { return this.stepInputs; }\n\n    public getStepsTypes(): (StepType | null)[] {\n        return this.stepTypes.map((type: string) => convertStringToStepType(type));\n    }\n\n    public getStepsTimestamps(): bigint[] { return this.timestamps; }\n\n    public getEntityID(index: number): bigint { return this.entityIDs[index] ?? BigInt(-1); }\n\n    /// sends a log to the SequenceLogs\n    public pushLog(keys: string[], log: string): string {\n\n        // split the log and verify we have the same amount of keys\n        const logSplit: string[] = log.split(\";\");\n        if (logSplit.length !== keys.length)\n            return `Number of keys does not match the number of log values: ${keys.join(\"-\")} !== ${log}`;\n\n        // we will only push the log if the entirety of the log is valid\n        let attemptID: bigint = BigInt(0);\n        let os: string = \"\";\n        let peerID: bigint = BigInt(0);\n        let session: bigint = BigInt(0);\n        let stepID: bigint = BigInt(0);\n        let stepIndex: bigint = BigInt(0);\n        let stepInput: string = \"\";\n        let stepType: string = \"\";\n        let timestamp: bigint = BigInt(0);\n        let entityID: bigint = BigInt(0);\n\n        // iterate keys(attemptid-os-peerid-sequenceid-session-stepid-stepindex-stepinput-steptype-timestamp-worldid)\n        for (let i: number = 0; i < keys.length; ++i) {\n\n            /// convert string into their native version\n            const value: string = logSplit[i];\n            switch (keys[i]) {\n                case \"attemptid\": attemptID = BigInt(value); break;\n                // we leave os as a string since there are some logs that contain \"WEB\" instead of \"3\" and we want to\n                // preserve the original value if we need to delete them\n                case \"os\":        os        = value;         break;\n                case \"peerid\":    peerID    = BigInt(value); break;\n                case \"session\":   session   = BigInt(value); break;\n                case \"stepid\":    stepID    = BigInt(value); break;\n                case \"stepindex\": stepIndex = BigInt(value); break;\n                case \"stepinput\": stepInput = value;         break;\n                // we leave steptype as a string since there are some logs that contain \"Count\" instead of \"6\" and we\n                // want to preserve the original value if we need to delete them\n                case \"steptype\":  stepType  = value;         break;\n                case \"timestamp\": timestamp = BigInt(value); break;\n                case \"entityid\":  entityID  = BigInt(value); break;\n                case \"worldid\":\n                    if (this.worldID.toString() === value)\n                        continue; // ignore\n                    // TODO @ebalthazard : Remove the file title\n                    return `SequenceLogs.ts :: Expected world ID ${this.worldID} in log: ${log}`;\n                case \"sequenceid\":\n                    if (this.sequenceID.toString() === value)\n                        continue; // ignore\n                    // TODO @ebalthazard : Remove the file title\n                    return `SequenceLogs.ts :: Expected sequence ID ${this.sequenceID} in log: ${log}`;\n                default:\n                    // TODO @ebalthazard : Remove the file title\n                    return `SequenceLogs.ts :: Encountered unknown key: ${keys[i]}`;\n            }\n        }\n\n        // verify if we successfully extracted the entire log\n        if (!attemptID || !peerID || !timestamp || convertStringToTypeOS(os) === TypeOS.UNKNOWN)\n            return `Missing 'attemptid' || 'os' || 'peerid' || 'timestamp' in ${keys.join(\"-\")} with log ${log}`;\n\n        // we now insert into our internal data structure (Structure of arrays)\n        this.attemptIDs.push(attemptID);\n        this.os.push(os);\n        this.peerIDs.push(peerID);\n        this.sessions.push(session);\n        this.stepIDs.push(stepID);\n        this.stepIndices.push(stepIndex);\n        this.stepInputs.push(stepInput);\n        this.stepTypes.push(stepType);\n        this.timestamps.push(timestamp);\n        this.entityIDs.push(entityID);\n\n        // we can no longer consider ourselves sorted, and all attempts need to be re-added\n        this.sorted = false;\n        this.allAttemptsIDs = null;\n        return \"\";\n    }\n\n    public pullLog(index: number): string {\n        if (index < 0 || index >= this.length())\n            return \"\";\n\n        // attemptid-entityid-os-peerid-sequenceid-session-stepid-stepindex-stepinput-steptype-timestamp-worldid\n        return [\n            this.attemptIDs[index].toString(),\n            this.entityIDs[index].toString(),\n            this.os[index],\n            this.peerIDs[index].toString(),\n            this.sequenceID.toString(),\n            this.sessions[index].toString(),\n            this.stepIDs[index].toString(),\n            this.stepIndices[index].toString(),\n            this.stepInputs[index],\n            this.stepTypes[index],\n            this.timestamps[index].toString(),\n            this.worldID.toString()\n        ].join(\";\");\n    }\n\n    public removeLog(index: number): boolean {\n        if (index < 0 || index >= this.length())\n            return false;\n\n        this.attemptIDs.splice(index, 1);\n        this.entityIDs.splice(index, 1);\n        this.os.splice(index, 1);\n        this.peerIDs.splice(index, 1);\n        this.sessions.splice(index, 1);\n        this.stepIDs.splice(index, 1);\n        this.stepIndices.splice(index, 1);\n        this.stepInputs.splice(index, 1);\n        this.stepTypes.splice(index, 1);\n        this.timestamps.splice(index, 1);\n\n        // all attempts need to be re-added\n        this.allAttemptsIDs = null;\n        return true;\n    }\n\n    /// returns the attempts list\n    public getAttemptsID(): bigint[] {\n\n        // verify if we already went over it\n        if (this.allAttemptsIDs)\n            return Array.from(this.allAttemptsIDs);\n\n        // we will accumulate all attempt ID into a Set\n        this.allAttemptsIDs = new Set();\n        for (const attemptID of this.attemptIDs)\n            this.allAttemptsIDs.add(attemptID);\n        return Array.from(this.allAttemptsIDs);\n    }\n\n    /// sort the internal logs\n    public sort() {\n\n        // verify if already sorted\n        if (this.sorted)\n            return;\n\n        // we will create an array from 0 to length of sorted index\n        const sortedIndices: number[] = Array.from(Array(this.length()).keys());\n\n        // If element A and element B in this.os are the same, it doesn't help with sorting,\n        // so we check a different property (attemptID, peerID...) of the same elements (A and B).\n        // > 0 will sort b before a, < 0 will sort a before b, = 0 will keep order\n        sortedIndices.sort((indexA: number, indexB: number) => {\n            if (this.os[indexA] !== this.os[indexB])\n                return this.os[indexA] < this.os[indexB] ? -1 : 1;\n            if (this.attemptIDs[indexA] !== this.attemptIDs[indexB])\n                return this.attemptIDs[indexA] < this.attemptIDs[indexB] ? -1 : 1;\n            if (this.peerIDs[indexA] !== this.peerIDs[indexB])\n                return this.peerIDs[indexA] < this.peerIDs[indexB] ? -1 : 1;\n            if (this.sessions[indexA] !== this.sessions[indexB])\n                return this.sessions[indexA] < this.sessions[indexB] ? -1 : 1;\n\n            return 0; // we don't care for stepID, stepIndex, stepInput, stepType, or timestamps\n        });\n\n        // we will use these sorted indices to re-order all our arrays\n        this.attemptIDs = Array.from(sortedIndices, (index) => this.attemptIDs[index]);\n        this.os = Array.from(sortedIndices, (index) => this.os[index]);\n        this.peerIDs = Array.from(sortedIndices, (index) => this.peerIDs[index]);\n        this.sessions = Array.from(sortedIndices, (index) => this.sessions[index]);\n        this.stepIDs = Array.from(sortedIndices, (index) => this.stepIDs[index]);\n        this.stepIndices = Array.from(sortedIndices, (index) => this.stepIndices[index]);\n        this.stepInputs = Array.from(sortedIndices, (index) => this.stepInputs[index]);\n        this.stepTypes = Array.from(sortedIndices, (index) => this.stepTypes[index]);\n        this.timestamps = Array.from(sortedIndices, (index) => this.timestamps[index]);\n        this.entityIDs = Array.from(sortedIndices, (index) => this.entityIDs[index]);\n\n        // we are now sorted! :)\n        this.sorted = true;\n    }\n\n    //////////////////////// Class Members ////////////////////////\n\n    readonly worldID: bigint = BigInt(0);\n    readonly sequenceID: bigint = BigInt(0);\n    private sorted: boolean = false;\n    private attemptIDs: bigint[] = [];\n    private os: string[] = [];\n    private peerIDs: bigint[] = [];\n    private sessions: bigint[] = [];\n    private stepIDs: bigint[] = [];\n    private stepIndices: bigint[] = [];\n    private stepInputs: string[] = [];\n    private stepTypes: string[] = [];\n    private timestamps: bigint[] = [];\n    private allAttemptsIDs: Set<bigint> | null = null;\n    private entityIDs: bigint[] = [];\n}\n", "import {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {LOG_FORMAT, Sequence as SequenceBackend, SequenceAttribute, StepGenerated} from \"@backend/Types/Sequence\";\nimport {Authentication} from \"@utils/Authentication\";\nimport {serialize} from \"bson\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {SequenceLogs} from \"@backend/Types/SequenceLogs\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\n\nexport type StepTypeID = {\n    ID: bigint,\n    Type: string\n}\n\nconst SEQUENCE_ATTRIBUTE: SequenceAttribute[] = [\n    SequenceAttribute.CHILD_SEQUENCE,\n    SequenceAttribute.CRITICAL,\n    SequenceAttribute.EXPIRATION,\n    SequenceAttribute.FEEDBACK,\n    SequenceAttribute.GROUPS_EXCLUSIVE,\n    SequenceAttribute.LEVEL,\n    SequenceAttribute.LOGS,\n    SequenceAttribute.MAJOR,\n    SequenceAttribute.NOTES,\n    SequenceAttribute.OBJECTIVE_GRADE,\n    SequenceAttribute.OBJECTIVE_VISUALIZATIONS,\n    SequenceAttribute.PARENT_SEQUENCE,\n    SequenceAttribute.PEER_PUBLISHER,\n    SequenceAttribute.STEPS,\n    SequenceAttribute.TAGS,\n    SequenceAttribute.TITLE,\n    SequenceAttribute.VIDEO\n] as const;\n\nexport interface Sequence {\n    ChildSequence: { value: bigint, timestamp: bigint };\n    Critical: { value: boolean, timestamp: bigint };\n    Expiration: { value: bigint, timestamp: bigint };\n    Feedback: { value: { [attemptID: string]: boolean }, timestamp: bigint };\n    GroupsExclusive: { value: bigint[], timestamp: bigint };\n    Level: { value: bigint, timestamp: bigint };\n    Logs: { value: SequenceLogs, timestamp: bigint };\n    Major: { value: boolean, timestamp: bigint };\n    Notes: { value: string, timestamp: bigint };\n    ObjectiveGrade: { value: number, timestamp: bigint };\n    ObjectiveVisualizations: { value: bigint, timestamp: bigint };\n    ParentSequence: { value: bigint, timestamp: bigint };\n    PeerPublisher: { value: bigint, timestamp: bigint };\n    Steps: { value: StepTypeID[], timestamp: bigint };\n    Title: { value: string, timestamp: bigint };\n    Video: { value: bigint, timestamp: bigint };\n}\n\nexport class DataSourceSequences {\n\n    constructor(private readonly authentication: Authentication) {}\n\n    // worldID => sequenceID => SequenceData\n    private readonly sequences: Map<bigint, Map<bigint, Promise<Sequence>>> = new Map();\n    public static readonly SEQUENCE_ERROR: Sequence = {\n        ChildSequence: { value: BigInt(0), timestamp: BigInt(0) },\n        Critical: { value: false, timestamp: BigInt(0) },\n        Expiration: { value: BigInt(0), timestamp: BigInt(0) },\n        Feedback: { value: {}, timestamp: BigInt(0) },\n        GroupsExclusive: { value: [], timestamp: BigInt(0) },\n        Level: { value: BigInt(0), timestamp: BigInt(0) },\n        Logs: { value: new SequenceLogs(BigInt(0), BigInt(0)), timestamp: BigInt(0) },\n        Major: { value: false, timestamp: BigInt(0) },\n        Notes: { value: \"\", timestamp: BigInt(0) },\n        ObjectiveGrade: { value: 0, timestamp: BigInt(0) },\n        ObjectiveVisualizations: { value: BigInt(0), timestamp: BigInt(0) },\n        ParentSequence: { value: BigInt(0), timestamp: BigInt(0) },\n        PeerPublisher: { value: BigInt(0), timestamp: BigInt(0) },\n        Steps: { value: [], timestamp: BigInt(0) },\n        Title: { value: \"\", timestamp: BigInt(0) },\n        Video: { value: BigInt(0), timestamp: BigInt(0) }\n    };\n\n    public getSequence(worldID: bigint, sequenceID: bigint): Promise<Sequence> {\n        let world: Map<bigint, Promise<Sequence>> | undefined = this.sequences.get(worldID);\n        if (!world) {\n            world = new Map<bigint, Promise<Sequence>>();\n            this.sequences.set(worldID, world);\n        }\n\n        let sequence: Promise<Sequence> | undefined = world.get(sequenceID);\n        if (!sequence) {\n            sequence = this.fetchSequence(worldID, sequenceID);\n            world.set(sequenceID, sequence);\n        }\n\n        return sequence;\n    }\n\n    private async fetchSequence(worldID: bigint, sequenceID: bigint): Promise<Sequence> {\n        if (!worldID || !sequenceID)\n            return DataSourceSequences.SEQUENCE_ERROR;\n\n        // fetch all sequence attributes\n        const response: Response =\n            await fetch(`/api/World/${worldID}/Sequence/${sequenceID}/${SEQUENCE_ATTRIBUTE.join(\",\")}`, {\n                method: \"GET\",\n                headers: await this.authentication.getDefaultHeaders()\n            });\n\n        const sequence: Pick<SequenceBackend, typeof SEQUENCE_ATTRIBUTE[number]> | { error: string } =\n            UtilsBSON.deserializeBSON(await response.arrayBuffer());\n\n        if (\"error\" in sequence) {\n            AdapterLog.WARN(sequence.error);\n            return DataSourceSequences.SEQUENCE_ERROR;\n        }\n\n        // log error\n        if (response.status !== 200 && response.status !== 206)\n            return DataSourceSequences.SEQUENCE_ERROR;\n\n        // convert the raw logs into SequenceLogs\n        const sequenceLogs = new SequenceLogs(worldID, sequenceID);\n        const keysCSV: string[] = LOG_FORMAT.split('-');\n        let sequenceLogsErrors: number = 0;\n        for (const log of sequence.Logs.value) {\n            const pushLogError: string = sequenceLogs.pushLog(keysCSV, log);\n            if (!pushLogError)\n                continue;\n\n            AdapterLog.ERROR(pushLogError);\n            sequenceLogsErrors++;\n        }\n\n        if (sequenceLogsErrors > 0)\n            AdapterLog.WARN(`DataSourceSequences.ts :: Unable to push ${sequenceLogsErrors} sequence logs.` +\n                `sequenceID: ${sequenceID} | worldID: ${worldID}`);\n\n        // convert step string IDs to bigints\n        const steps: StepTypeID[] =\n            sequence.Steps.value.map((step: { ID: string, Type: string }) => ({...step, ID: BigInt(step.ID)}));\n        return {\n            ...sequence,\n            Logs: {\n                value: sequenceLogs,\n                timestamp: sequence.Logs.timestamp\n            },\n            Steps: {\n                value: steps,\n                timestamp: sequence.Steps.timestamp\n            }\n        };\n    }\n\n    public async generateSequenceSteps(worldID: bigint, sequenceID: bigint, videoDescription: string): Promise<StepGenerated[]> {\n        const body = { videoDescription };\n        const response: Response = await fetch(`/api/World/${worldID}/Sequence/${sequenceID}/GenerateSteps`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize(body)\n        });\n\n        if (!response.ok)\n            return [];\n\n        const buffer: ArrayBuffer = await response.arrayBuffer();\n        if (!buffer.byteLength) {\n            return [];\n        }\n\n        return UtilsBSON.deserializeBSON(buffer).steps;\n    }\n\n    public async saveSequenceLevel(worldID: bigint, sequenceID: bigint, level: bigint): Promise<boolean> {\n        if (!this.sequences.has(worldID)) {\n            AdapterLog.ERROR(\"Could not find the world to save new sequence level\");\n            return false;\n        }\n        const sequence: Sequence = await this.getSequence(worldID, sequenceID);\n\n        const newLevelValue: { value: bigint, timestamp: bigint } = {\n            value: level,\n            timestamp: BigInt(Math.floor(Date.now() / 1000))\n        };\n        const response: Response | null = await fetch(`/api/World/${worldID}/Sequence/${sequenceID}/Level`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize(newLevelValue),\n        }).catch(() => null);\n\n        if (!response?.ok) {\n            AdapterLog.ERROR(\"Could not save sequence level\");\n            return false;\n        }\n\n        sequence.Level = newLevelValue;\n        return true;\n    }\n\n    async saveSignatureLog(worldID: bigint,\n                           sequenceID: bigint,\n                           peerID: bigint,\n                           currentPeerID: bigint,\n                           signature: string): Promise<bigint> {\n\n        if (!signature)\n            return BigInt(0);\n\n        const sequence: Sequence = await this.getSequence(worldID, sequenceID);\n        const sequenceLogs: SequenceLogs = sequence.Logs.value;\n\n        // a peer shouldn't be signed off if it's already in the logs\n        if (sequenceLogs.getPeerIDs().includes(peerID))\n            return BigInt(0);\n\n        const attemptID: bigint = UtilsShared.generateRandomID();\n        const stepLog = {\n            attemptID,\n            entityID: currentPeerID,\n            // TODO @ebalthazard : Wait until we export the enum from the core (Don't change otherwise)\n            os: \"WEB\",\n            peerID,\n            sequenceID,\n            session: BigInt(0),\n            stepID: BigInt(0),\n            stepIndex: -1,\n            stepInput: signature,\n            // TODO ebatlhazard : Change to use convertStepTypeToString when it will support \"Count\"\n            stepType: \"Count\",\n            timestamp: BigInt(Date.now()) / BigInt(1000),\n            worldID\n        };\n\n        const url: string = `/api/World/${worldID}/Sequence/${sequenceID}/${SequenceAttribute.LOGS}`;\n        const response: Response | null = await fetch(url, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize(stepLog),\n        }).catch(() => null);\n\n        if (!response?.ok) {\n            AdapterLog.WARN(`Failed to save signature log: ${response?.status}`);\n            return BigInt(0);\n        }\n\n        const keys: string[] = Object.keys(stepLog).map((key: string) => key.toLowerCase().trim());\n        const pushLogError: string = sequenceLogs.pushLog(keys, Object.values(stepLog).join(\";\"));\n        if (pushLogError)\n            AdapterLog.ERROR(pushLogError);\n\n        return attemptID;\n    }\n\n    async deleteSequenceLog(worldID: bigint, sequenceID: bigint, logIndex: number): Promise<boolean> {\n        if (!worldID || !sequenceID)\n            return false;\n\n        const sequence: Sequence = await this.getSequence(worldID, sequenceID);\n        const log: string = sequence.Logs.value.pullLog(logIndex);\n        if (!log)\n            return false;\n\n        const url: string = `/api/World/${worldID}/Sequence/${sequenceID}/${SequenceAttribute.LOGS}`;\n        const timestamp: bigint = BigInt(Date.now()) / BigInt(1000);\n        const response: Response | null = await fetch(url, {\n            method: \"DELETE\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ value: log, timestamp })\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return false;\n\n        // update the sequence logs\n        return sequence.Logs.value.removeLog(logIndex);\n    }\n}\n", "import {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {\n    AllStepAttributesType,\n    Step,\n    StepAttribute,\n    StepBranching,\n    StepBranchingAttribute,\n    StepInputAttribute,\n    StepQuestion,\n    StepQuestionAttribute,\n    StepType\n} from \"@backend/Types/Step\";\nimport {DataSourceSequences, Sequence, StepTypeID} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {Authentication} from \"@utils/Authentication\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\n\nexport type StepData = Step | StepQuestion | StepBranching;\n\nexport class DataSourceSteps {\n\n    // worldID => sequenceID => stepID => Step\n    private steps: Map<bigint, Map<bigint, Map<bigint, Promise<StepData>>>> = new Map();\n    static readonly STEP_ERROR: StepData = {\n        Type: {value: \"\", timestamp: BigInt(0)},\n        Text: { value: BigInt(0), timestamp: BigInt(0)},\n        Answers: {value: [], timestamp: BigInt(0)},\n        TextAnswers: {value: [], timestamp: BigInt(0)},\n        CorrectAnswer: {value: \"\", timestamp: BigInt(0)},\n        Explanation: {value: \"\", timestamp: BigInt(0)}\n    };\n\n    constructor(private readonly authentication: Authentication,\n                private readonly dataSourceSequences: DataSourceSequences) {}\n\n    private constructPath(worldID: bigint, sequenceID: bigint, stepID: bigint,\n                          stepAttributes: AllStepAttributesType[]): string {\n        const attributesString: string = stepAttributes.join(\",\");\n        return `/api/World/${worldID}/Sequence/${sequenceID}/Step/${stepID}/${attributesString}`;\n    }\n\n    async getStepType(worldID: bigint, sequenceID: bigint, stepID: bigint): Promise<StepType | null>{\n        const sequence: Sequence = await this.dataSourceSequences.getSequence(worldID, sequenceID);\n        const step: StepTypeID | undefined = sequence.Steps.value.find((step: StepTypeID) => step.ID === stepID);\n\n        return step ? UtilsShared.getCorrespondingEnumValue(StepType, step.Type) : null;\n    }\n\n    public getStep(worldID: bigint, sequenceID: bigint, stepID: bigint): Promise<StepData> {\n\n        let world: Map<bigint, Map<bigint, Promise<StepData>>> | undefined = this.steps.get(worldID);\n        if (!world) {\n            world = new Map();\n            this.steps.set(worldID, world);\n        }\n\n        let sequence: Map<bigint, Promise<StepData>> | undefined = world.get(sequenceID);\n        if (!sequence) {\n            sequence = new Map();\n            world.set(sequenceID, sequence);\n        }\n\n        let step: Promise<StepData> | undefined = sequence.get(stepID);\n        if (!step) {\n            step = this.fetchStep(worldID, sequenceID, stepID);\n            sequence.set(stepID, step);\n        }\n\n        return step;\n    }\n\n    private async fetchStep(worldID: bigint, sequenceID: bigint, stepID: bigint): Promise<StepData> {\n        if (!worldID || !sequenceID || !stepID)\n            return DataSourceSteps.STEP_ERROR;\n\n        const stepType: StepType | null = await this.getStepType(worldID, sequenceID, stepID);\n        if (stepType === null)\n            return DataSourceSteps.STEP_ERROR;\n\n        let stepAttributes: AllStepAttributesType[];\n        switch (stepType) {\n            case StepType.QUESTION:\n                stepAttributes = Object.values(StepQuestionAttribute);\n                break;\n            case StepType.BRANCHING:\n                stepAttributes = Object.values(StepBranchingAttribute);\n                break;\n            case StepType.INPUT:\n                stepAttributes = Object.values(StepInputAttribute);\n                break;\n            default:\n                stepAttributes = Object.values(StepAttribute);\n                break;\n        }\n        const stepAttributesURL: string = this.constructPath(worldID, sequenceID, stepID, stepAttributes);\n\n        const response: Response | null = await fetch(stepAttributesURL, {\n            method: \"GET\",\n            headers: await this.authentication.getDefaultHeaders()\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return DataSourceSteps.STEP_ERROR;\n\n        const stepResponse: Partial<StepData>[] =\n            Object.values(UtilsBSON.deserializeBSON(await response.arrayBuffer()));\n        return stepResponse.reduce((attrib1, attrib2) => ({...attrib1, ...attrib2})) as StepData;\n    }\n}\n", "import {DEFAULT_PLAN, DefaultPlanType, Plan} from \"@backend/Types/Plan\";\nimport {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {serialize} from \"bson\";\nimport {Authentication} from \"@utils/Authentication\";\n\nexport class DataSourcePlans {\n    constructor(private readonly authentication: Authentication) {}\n\n    private plans: Map<bigint, Promise<Plan>> = new Map();\n\n    getPlan(planID: bigint): Promise<Plan> {\n        let plan = this.plans.get(planID);\n        if(!plan) {\n            plan = this.fetchPlan(planID);\n            this.plans.set(planID, plan);\n        }\n        return plan;\n    }\n\n    private async fetchPlan(planID: bigint): Promise<Plan> {\n        const response: Response | null = await fetch(`/api/Plan/${planID}`, {\n            method: \"GET\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n        }).catch(() => null);\n\n        // log error\n        if (!response?.ok) {\n            AdapterLog.ERROR(\"An error occurred getting plan with ID \" + planID);\n            return DEFAULT_PLAN;\n        }\n\n        return UtilsBSON.deserializeBSON(await response.arrayBuffer());\n    }\n\n    invalidatePlan(planID: bigint): void {\n        this.plans.delete(planID);\n    }\n\n    ///////////////////////////////////////// Admin Related Requests /////////////////////////////////////////\n\n    async getPlans(): Promise<bigint[]> {\n        const response: Response | null = await fetch(\"/api/Plan\", {\n            method: \"GET\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return [];\n\n        return UtilsBSON.deserializeBSON(await response.arrayBuffer()).planIDs;\n    }\n\n    async getDefaultPlan(planType: DefaultPlanType): Promise<bigint> {\n        const response: Response | null = await fetch(`/api/Plan/${planType}`, {\n            method: \"GET\",\n            headers: await this.authentication.getDefaultHeaders()\n        }).catch(() => null);\n\n        return response?.ok ? UtilsBSON.deserializeBSON(await response.arrayBuffer()).defaultPlanID : BigInt(0);\n    }\n\n    async setDefaultPlan(planID: bigint, planType: DefaultPlanType): Promise<boolean> {\n        if (!planID)\n            return false;\n\n        const response: Response | null = await fetch(`/api/Plan/${planType}`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ planID })\n        }).catch(() => null);\n\n        return Boolean(response?.ok);\n    }\n\n    async newPlan(planDefinition: Plan): Promise<bigint> {\n        const response: Response | null = await fetch(\"/api/Plan\", {\n            method: \"POST\",\n            headers: await this.authentication.getDefaultHeaders()\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return BigInt(0);\n\n        const body: { planID: bigint } = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        if (typeof body.planID !== \"bigint\")\n            return BigInt(0);\n\n        const updatedPlanID: bigint = await this.updatePlan(body.planID, planDefinition);\n        if (!updatedPlanID)\n            return BigInt(0);\n\n        return body.planID;\n    }\n\n    async updatePlan(planID: bigint, planDefinition: Plan): Promise<bigint> {\n        if (!planID)\n            return BigInt(0);\n\n        const response: Response | null = await fetch(`/api/Plan/${planID}`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"Content-Type\": \"application/octet-stream\",\n            },\n            body: serialize(planDefinition)\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return BigInt(0);\n\n        this.invalidatePlan(planID);\n        return planID;\n    }\n}\n", "import {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {Video, VideoAttribute} from \"@backend/Types/Video\";\nimport {DataSourceStorage} from \"@root/Frontend/DataSources/DataSourceStorage\";\nimport {Authentication} from \"@utils/Authentication\";\nimport {serialize} from \"bson\";\nimport {ObjectTypeS3} from \"@backend/Types/ObjectTypeS3\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\n\nconst VIDEO_ATTRIBUTES = [\n    VideoAttribute.THUMBNAIL_URL_S3,\n    VideoAttribute.VIDEO_URL_S3,\n    VideoAttribute.SUBTITLES_URL_S3,\n    VideoAttribute.DURATION,\n    VideoAttribute.TIMESTAMP,\n    VideoAttribute.OWNER,\n    VideoAttribute.FILE_SIZE] as const;\nexport type VideoData = Pick<Video, typeof VIDEO_ATTRIBUTES[number]>;\n\nexport class DataSourceVideo {\n    private videoInfos: Map<bigint, Promise<VideoData | null>> = new Map();\n\n    constructor(private readonly authentication: Authentication,\n                private readonly dataSourceStorage: DataSourceStorage) {}\n\n    getStepVideoData(videoID: bigint): Promise<VideoData | null> {\n        let cachedVideoInfo: Promise<VideoData | null> | undefined = this.videoInfos.get(videoID);\n        if (!cachedVideoInfo) {\n            cachedVideoInfo = this.fetchVideoData(videoID);\n            this.videoInfos.set(videoID, cachedVideoInfo);\n        }\n        return cachedVideoInfo;\n    }\n\n    async fetchVideoData(videoID: bigint): Promise<VideoData | null> {\n        // Get video data\n        const response: Response = await fetch(`/api/Video/${videoID}/${VIDEO_ATTRIBUTES.join(\",\")}`, {\n            method: \"GET\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            }\n        });\n\n        if (!response.ok)\n            return null;\n\n        return UtilsBSON.deserializeBSON(await response.arrayBuffer());\n    }\n\n    async downloadVideo(videoID: bigint): Promise<File|null> {\n        if (!videoID)\n            return null;\n\n        const videoData: VideoData | null = await this.getStepVideoData(videoID);\n        if (!videoData?.VideoUrlS3)\n            return null;\n\n        const downloadURL: string =\n            await this.dataSourceStorage.getPreSignedUrl(videoData.VideoUrlS3, ObjectTypeS3.VIDEO, videoID);\n        if (!downloadURL)\n            return null;\n\n        // download the video\n        const response: Response = await fetch(downloadURL, { method: \"GET\" });\n        if (!response.ok)\n            return null;\n\n        // create a random filename for the video file and return it\n        const videoBlob: Blob = await response.blob();\n        const videoBlobType: string = videoBlob.type;\n        const videoFileExtension: string = videoBlobType.substring(videoBlobType.indexOf(\"/\") + 1);\n        const videoFileName: string = `${UtilsShared.generateRandomString(10)}.${videoFileExtension}`;\n        return new File([videoBlob], videoFileName);\n    }\n\n    async downloadVideoSubtitles(videoID: bigint): Promise<string> {\n        if (!videoID)\n            return \"\";\n\n        const videoData: VideoData | null = await this.getStepVideoData(videoID);\n        if (!videoData?.SubtitlesUrlS3)\n            return \"\";\n            \n        const subtitlesDownloadURL: string =\n            await this.dataSourceStorage.getPreSignedUrl(videoData.SubtitlesUrlS3, ObjectTypeS3.TEXT);\n        if (!subtitlesDownloadURL)\n            return \"\";\n\n        const response: Response = await fetch(subtitlesDownloadURL, { method: \"GET\" });\n        return response.ok ? URL.createObjectURL(await response.blob()) : \"\";\n    }\n\n    async deleteVideo(videoID: bigint): Promise<boolean> {\n        const response: Response = await fetch(`/api/Video/${videoID}`, {\n            method: \"DELETE\",\n            headers: await this.authentication.getDefaultHeaders()\n        });\n\n        const success: boolean = response.status === 200;\n        if(success && this.videoInfos.has(videoID))\n            this.videoInfos.delete(videoID);\n\n        return success;\n    }\n\n    public async saveVideoSubtitles(videoID: bigint, subtitlesBlob: Blob): Promise<boolean> {\n        if (!videoID || subtitlesBlob.type !== \"text/vtt\") {\n            AdapterLog.ERROR(`Couldn't save the subtitles for the video ${videoID}`);\n            return false;\n        }\n\n        const subtitlesFileName: string = `${videoID}.vtt`;\n        const subtitlesFile: File = new File([subtitlesBlob], subtitlesFileName);\n        const urlS3: string = await this.dataSourceStorage.uploadToS3(videoID, subtitlesFile, ObjectTypeS3.TEXT);\n        if (!urlS3)\n            return false;\n\n        if (!await this.saveVideoSubtitlesUrlS3(videoID, urlS3) ||\n            !await this.saveVideoSubtitlesSize(videoID, BigInt(subtitlesBlob.size)))\n            return false;\n\n        if (this.videoInfos.has(videoID))\n            this.videoInfos.delete(videoID);\n\n        return true;\n    }\n\n    public async createNewVideo(owner: bigint, ownerType: OwnerType): Promise<bigint> {\n        if (!owner || !ownerType)\n            return BigInt(0);\n\n        const response: Response = await fetch(\"/api/Video/Create\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ owner, ownerType })\n        });\n        if (!response.ok)\n            return BigInt(0);\n\n        return UtilsBSON.deserializeBSON(await response.arrayBuffer()).videoID;\n    }\n\n    private async saveVideoSubtitlesUrlS3(videoID: bigint, videoUrlS3: string): Promise<boolean> {\n        if (!videoID || !videoUrlS3)\n            return false;\n\n        const response: Response = await fetch(`/api/Video/${videoID}/${VideoAttribute.SUBTITLES_URL_S3}`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ value: videoUrlS3 })\n        });\n\n        return response.ok;\n    }\n\n    private async saveVideoSubtitlesSize(videoID: bigint, videoSubtitlesSize: bigint): Promise<boolean> {\n        if (!videoID || !videoSubtitlesSize)\n            return false;\n\n        const response: Response = await fetch(`/api/Video/${videoID}/${VideoAttribute.SUBTITLES_SIZE}`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ value: videoSubtitlesSize })\n        });\n\n        return response.ok;\n    }\n}\n", "\"https://b129aca417d747947caaa7cddf01a429@sentry.deepsight.ca/2\"", "import React, {useEffect, useState} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {withRouter} from \"react-router-dom\";\nimport i18next from \"i18next\";\nimport {FiltersInterface, FiltersRow} from \"@root/Frontend/Console/widgets/FiltersRow\";\nimport {FilterDateOptions} from \"@root/Frontend/Console/Types/FiltersDate\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {getPeerWorldIDs} from \"@root/Frontend/Console/utils/UtilsWorlds\";\nimport {getPublishedWorldSequenceAttemptIDs} from \"@root/Frontend/Console/utils/UtilsAttempts\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {WorldSequenceAttempts} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport UnclearSteps from \"@root/Frontend/Console/Views/Insights/UnclearSteps\";\nimport TimeConsumingSteps from \"@root/Frontend/Console/Views/Insights/TimeConsumingSteps\";\nimport InsightsSummary from \"@root/Frontend/Console/Views/Insights/InsightsSummary\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport SkippedSteps from \"@root/Frontend/Console/Views/Insights/SkippedSteps\";\nimport {TypeOS} from \"@backend/Types/TypeOS\";\nimport {getRangeDateValueByFilterOption} from \"@root/Frontend/Console/utils/UtilsFilters\";\n\nconst Header = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    padding: \"20px\"\n});\n\nconst Title = styled(Box)({\n    font: primaryFontXLarge,\n    fontSize: \"24px\"\n});\n\nconst ContentContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"20px\",\n    gap: \"15px\"\n});\n\nconst FiltersWrapper = styled(Box)({\n    display: \"flex\",\n    gap: \"12px\"\n});\n\nexport default function Insights() {\n    const appConsole: AppConsole = AppConsole.getInstance();\n\n    const [filters, setFilters] = useState<FiltersInterface>({\n        filterOS: [TypeOS.APPLE, TypeOS.HOLOLENS],\n        filterDate: FilterDateOptions.LAST_30_DAYS,\n        dateRange: getRangeDateValueByFilterOption(FilterDateOptions.LAST_30_DAYS),\n    });\n    const [worldSequenceAttemptIDs, setWorldSequenceAttempts] = useState<WorldSequenceAttempts>(new Map());\n\n    useEffect(() => {\n         fetchStepsActionsData();\n    }, [filters]);\n\n    async function fetchStepsActionsData(): Promise<void> {\n        const currentPeer: Peer = await appConsole.dataSourcePeers.getPeer(appConsole.currentPeerID);\n        const worldsIDs: Set<bigint> = await getPeerWorldIDs(currentPeer);\n        const worldSequenceAttemptIDs: WorldSequenceAttempts =\n            await getPublishedWorldSequenceAttemptIDs(worldsIDs, filters, false);\n        setWorldSequenceAttempts(worldSequenceAttemptIDs);\n    }\n\n    return (\n        <Box>\n            <Header>\n                <Title>{i18next.t(\"Insights\")}</Title>\n                <FiltersWrapper>\n                    <FiltersRow\n                        filters={filters}\n                        handleOnChangeFilter={(newFilters: FiltersInterface) => setFilters(newFilters)}\n                    />\n                </FiltersWrapper>\n            </Header>\n            <ContentContainer>\n                <InsightsSummary worldSequenceAttemptIDs={worldSequenceAttemptIDs} />\n                <Box>\n                    <UnclearSteps worldSequenceAttemptIDs={worldSequenceAttemptIDs} />\n                    <TimeConsumingSteps worldSequenceAttemptIDs={worldSequenceAttemptIDs} />\n                    <SkippedSteps worldSequenceAttemptIDs={worldSequenceAttemptIDs} />\n                </Box>\n                </ContentContainer>\n        </Box>\n    );\n}\n\nexport const InsightsWithRouter = withRouter(Insights);\n", "import React, {Fragment, useEffect, useState} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport InsightTypeItem from \"@root/Frontend/Console/Views/Insights/InsightsTypeItem\";\nimport {UtilsInsights} from \"@backend/Utils/UtilsInsights\";\nimport i18next from \"i18next\";\nimport {InsightType} from \"@root/Frontend/Console/Types/InsightType\";\nimport ProblematicStepItem from \"@root/Frontend/Console/Views/Insights/ProblematicStepItem\";\nimport {DataSourceAttemptLogs, WorldSequenceAttempts} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {darkenWhite} from \"@root/react-components/src/values/colors/colors\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {UnclearStepsInfo} from \"@backend/Types/ProblematicStepInfo\";\n\nexport const AccordionWrapper = styled(Box)({\n    padding: \"15px 0px\",\n});\n\nexport const LineSeparator = styled(Box)({\n    borderBottom: `1px solid ${darkenWhite}`,\n    height: \"1px\",\n});\n\ninterface UnclearStepsProps {\n    worldSequenceAttemptIDs: WorldSequenceAttempts\n}\n\nexport default function UnclearSteps(props: UnclearStepsProps) {\n    const unclearStepsProblem: string =\n        `${i18next.t(\"The following step has been visualized many more times than the other steps in this \" +\n            \"sequence\")}. ${i18next.t(\"There seems to be a lack of clarity that is affecting the overall \" +\n            \"comprehension of this part of your sequence\")}`;\n    const unclearStepsSolution: string[] = [\n        `${i18next.t(\"Your step might contain too much information\")}. \n            ${i18next.t(\"Break it down in several steps to help with the fluidity, remember to keep it simple\")}`,\n        `${i18next.t(\"Validate the link between this step and the previous ones\")}. ${i18next.t(\"The end \" +\n            \"state of your previous step should correspond exactly to the start state of this step\")}.`,\n        `${i18next.t(\"Your step might be missing elements that would help with the comprehension\")}.\n         ${i18next.t(\"Don\u2019t hesitate to add image attachments, short explanatory videos or textual assets\")}.`\n    ];\n    const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n\n    const [stepsToDisplay, setStepsToDisplay] = useState<UnclearStepsInfo[] | null>(null);\n\n    useEffect(() => {\n        if (props.worldSequenceAttemptIDs)\n            getDisplayedUnclearSteps().then((worstUnclearSteps: UnclearStepsInfo[]) =>\n                setStepsToDisplay(worstUnclearSteps)\n            );\n    }, [props.worldSequenceAttemptIDs]);\n\n    async function getDisplayedUnclearSteps(): Promise <UnclearStepsInfo[]> {\n        let unclearSteps: UnclearStepsInfo[] = [];\n\n        for (const [worldID, sequenceIDs] of props.worldSequenceAttemptIDs) {\n\n            for (const [sequenceID, attemptIDs] of sequenceIDs) {\n                const attemptLogs: AttemptLogs[] = [];\n\n                for (const attemptID of attemptIDs)\n                    attemptLogs.push(await dataSourceAttemptLogs.getAttemptLogs(worldID, sequenceID, attemptID));\n\n                //  attemptLogs.length === number of the sequence's visualization (nb of attempts for this sequence)\n                if (attemptLogs.length < UtilsInsights.MIN_NB_SEQUENCE_VISUALIZATION)\n                    continue;\n\n                // Map<stepID, visualizationCounter>\n                const nbVisualizationPerSteps: Map<bigint, number> =\n                    UtilsInsights.getNBStepVisualizationPerStepIDs(attemptLogs);\n\n                unclearSteps = UtilsInsights.handleWorstUnclearSteps(nbVisualizationPerSteps,\n                                                                     unclearSteps,\n                                                                     attemptLogs.length,\n                                                                     worldID,\n                                                                     sequenceID,\n                                                                     UtilsInsights.NB_DISPLAYED_STEPS_PER_INSIGHT);\n            }\n        }\n        return unclearSteps;\n    }\n\n    return(\n        <AccordionWrapper>\n            {!stepsToDisplay ?\n                <CenteredLoading/>\n            :\n                <InsightTypeItem\n                     title={i18next.t(InsightType.UNCLEAR_STEPS)}\n                     problem={unclearStepsProblem}\n                     solution={unclearStepsSolution}\n                >\n                    {stepsToDisplay.map((step: UnclearStepsInfo, index: number) =>\n                        <Fragment key={`${step.sequenceID}-${step.stepID}`}>\n                            <ProblematicStepItem problematicStepInfo={step}>\n                                <>\n                                    {i18next.t(\"This step has been visualize\")} {step.nbStepViz}&nbsp;\n                                    {i18next.t(\"times but the sequence has been visualized only\")}&nbsp;\n                                    {step.nbSequenceViz} {i18next.t(\"times\")}.\n                                </>\n                            </ProblematicStepItem>\n                            {index < stepsToDisplay.length - 1 && <LineSeparator/>}\n                        </Fragment>\n                    )}\n                </InsightTypeItem>\n            }\n        </AccordionWrapper>\n    );\n}", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {Accordion} from \"@root/react-components/src/inputs/Accordion\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {primaryFontLarge, secondaryFontLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {primary} from \"@root/react-components/src/values/colors/colors\";\nimport {theme} from \"@root/Frontend/theme\";\n\nconst IntroContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    font: secondaryFontLarge,\n    [theme.breakpoints.down('sm')]: {\n        font: secondaryFontMedium,\n    }\n});\n\nconst Wrapper = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"flex-start\",\n    padding: \"0px 0px 5px 15px\"\n});\n\nconst Title = styled(Box)({\n    font: primaryFontLarge,\n    color: primary,\n    marginRight: \"3px\"\n});\n\nconst ListWrapper = styled(\"li\")({\n    padding: \"5px 0px\",\n    [theme.breakpoints.down('sm')]: {\n        padding: \"0px\"\n    }\n});\n\ninterface InsightTypeItemProps {\n    title: string,\n    problem: string,\n    solution: string[],\n    children: JSX.Element[]\n}\n\nexport default function InsightTypeItem(props: InsightTypeItemProps) {\n\n    if(!props.children)\n        return <CenteredLoading/>\n\n    return (\n            <Accordion title={props.title} disabled={!props.children.length}>\n                <IntroContainer>\n                    <Wrapper>\n                        <Title> {i18next.t(\"Problem\")}: </Title>\n                        <Box> {props.problem}. </Box>\n                    </Wrapper>\n                    <Wrapper>\n                        <Title> {i18next.t(\"Potential solution\")}: </Title>\n                        {props.solution.map((suggestion, index)=>\n                            <ListWrapper key={index}>\n                                {suggestion}\n                            </ListWrapper>\n                        )}\n                    </Wrapper>\n                </IntroContainer>\n                <Box>\n                    {props.children.length ?\n                        props.children\n                    :\n                        <Box style={{font: primaryFontLarge, paddingTop: \"20px\"}}>\n                            {i18next.t(\"No data to display\")}\n                        </Box>\n                    }\n                </Box>\n            </Accordion>\n    );\n}", "import * as React from \"react\";\nimport {\n    Accordion as MuiAccordion,\n    AccordionSummary,\n    AccordionDetails,\n    Box,\n    AccordionProps\n} from '@mui/material';\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {DownArrow} from \"@root/react-components/src/icons/DownArrow\";\n\nexport function Accordion(props: AccordionProps): JSX.Element {\n\n    return (\n        <MuiAccordion sx={props.sx}>\n            <AccordionSummary id=\"summary-panel\" expandIcon={<DownArrow width={\"16\"} height={\"14\"}/>}>\n                <Box sx={{font: primaryFontXLarge}}>{props.title}</Box>\n            </AccordionSummary>\n            <AccordionDetails>\n                    {props.children}\n            </AccordionDetails>\n        </MuiAccordion>\n    )\n};", "import {AttemptLogs} from \"../Types/AttemptLogs\";\nimport {QuartileData} from \"./UtilsStats\";\nimport {TimeConsumingStepsInfo, UnclearStepsInfo, SkippedStepsInfo} from \"../Types/ProblematicStepInfo\";\nimport {Severity} from \"../Types/Severity\";\n\nexport namespace UtilsInsights {\n    export const NB_DISPLAYED_STEPS_PER_INSIGHT: number = 15;\n\n    // for Unclear step -> if a sequence has been visualized less than 5 times, the sequence is not considered\n    export const MIN_NB_SEQUENCE_VISUALIZATION: number = 5;\n    export const VISUALIZATION_MINOR_ISSUE_THRESHOLD: number = 1.1;\n    export const VISUALIZATION_MAJOR_ISSUE_THRESHOLD: number = 1.4;\n\n    // for time-consuming step -> a minimum median time of 10s is required to be considered\n    export const MIN_MEDIAN_TIME: number = 10;\n    export const TIME_MINOR_ISSUE_THRESHOLD: number = 1.5;\n    export const TIME_MAJOR_ISSUE_THRESHOLD: number = 3;\n    export const SKIPPED_MINOR_ISSUE_THRESHOLD: number = 5;\n    export const SKIPPED_MAJOR_ISSUE_THRESHOLD: number = 3;\n\n    export function getNBStepVisualizationPerStepIDs(attemptLogs: AttemptLogs[]): Map<bigint, number> {\n        const nbStepVizPerStepIDs: Map<bigint, number> = new Map<bigint, number>();\n\n        for (const attempt of attemptLogs) {\n            for (const stepAction of attempt.getStepActions()) {\n                //if stepID already in the map -> increase the counter of visualization\n                nbStepVizPerStepIDs.set(stepAction.stepID, (nbStepVizPerStepIDs.get(stepAction.stepID) ?? 0) + 1);\n            }\n        }\n        return nbStepVizPerStepIDs;\n    }\n\n    export function handleWorstUnclearSteps(nbVisualizationPerSteps: Map<bigint, number>,\n                                            unclearSteps: UnclearStepsInfo[],\n                                            nbSequenceVisualization: number,\n                                            worldID: bigint,\n                                            sequenceID: bigint,\n                                            numberOfStepsToDisplay: number): UnclearStepsInfo[] {\n        let unclearStepsCopied: UnclearStepsInfo[] = [...unclearSteps];\n        let worstCurrentSequenceStep: {stepID: bigint, nbVisualization: number, ratio: number}|null = null;\n\n        for (const [stepID, nbVisualization] of nbVisualizationPerSteps) {\n            const ratio: number = nbVisualization / nbSequenceVisualization;\n            if (ratio > VISUALIZATION_MINOR_ISSUE_THRESHOLD &&\n                (!worstCurrentSequenceStep || ratio > worstCurrentSequenceStep.ratio))\n                    worstCurrentSequenceStep = {stepID, nbVisualization, ratio};\n        }\n        // if no step in this sequence is problematic, return the array and pass to the next sequence\n        if (!worstCurrentSequenceStep)\n            return unclearStepsCopied;\n\n        // length + 1 , to handle the case that unclearStepsCopied is empty (in the first iterations)\n        for (let i: number = 0; i <= unclearStepsCopied.length + 1; i++) {\n            const ratio: number = worstCurrentSequenceStep.ratio;\n\n            // skip to next unclearStep if unclearStep[i] ratio is greater than ratio of the worst sequence step we found\n            if (ratio <= unclearStepsCopied[i]?.nbStepViz / unclearStepsCopied[i]?.nbSequenceViz)\n                continue;\n\n            // insert element at the index if ratio is superior\n            unclearStepsCopied.splice(i, 0, {\n                worldID,\n                sequenceID,\n                stepID: worstCurrentSequenceStep.stepID,\n                nbStepViz: worstCurrentSequenceStep.nbVisualization,\n                nbSequenceViz: nbSequenceVisualization,\n                severity: ratio > VISUALIZATION_MAJOR_ISSUE_THRESHOLD ? Severity.MAJOR\n                                                                      : Severity.MINOR\n            });\n\n            if (unclearStepsCopied.length > numberOfStepsToDisplay)\n                unclearStepsCopied.pop();\n\n            return unclearStepsCopied;\n        }\n        return unclearStepsCopied;\n    }\n\n    export function handleWorstTimeConsumingSteps(quartilesPerSteps: Map<bigint, QuartileData>,\n                                                  timeConsumingSteps: TimeConsumingStepsInfo[],\n                                                  worldID: bigint,\n                                                  sequenceID: bigint,\n                                                  numberOfStepsToDisplay: number): TimeConsumingStepsInfo[] {\n        let timeConsumingsCopy: TimeConsumingStepsInfo[] = [...timeConsumingSteps];\n\n        for (const [stepID, quartileData] of quartilesPerSteps){\n            const firstAndThirdQuartileGap: number = quartileData.thirdQuartile - quartileData.firstQuartile;\n            const ratio: number = firstAndThirdQuartileGap / quartileData.median;\n\n            if (quartileData.median <= MIN_MEDIAN_TIME || ratio < TIME_MINOR_ISSUE_THRESHOLD)\n                continue;\n\n            // length + 1 , to handle the case that timeConsumingsCopy is empty (in the first iterations)\n            for (let i: number = 0; i <= timeConsumingsCopy.length + 1; ++i) {\n\n                // if element[i] has a better ratio that the current step we're checking, pass to the next element\n                // if element[i] is undefined -> we'll not enter into this if (handle empty array and end of the array)\n                if (ratio <= timeConsumingsCopy[i]?.firstAndThirdQuartileGap / timeConsumingsCopy[i]?.medianTime)\n                    continue;\n\n                // insert element at the index if ratio is superior,\n                timeConsumingsCopy.splice(i, 0, {\n                    worldID,\n                    sequenceID,\n                    stepID,\n                    firstAndThirdQuartileGap: firstAndThirdQuartileGap,\n                    medianTime: quartileData.median,\n                    severity: ratio > TIME_MAJOR_ISSUE_THRESHOLD ? Severity.MAJOR : Severity.MINOR,\n                })\n\n                if (timeConsumingsCopy.length > numberOfStepsToDisplay)\n                    timeConsumingsCopy.pop();\n\n                break;\n            }\n        }\n        return timeConsumingsCopy;\n    }\n\n    export function handleWorstSkippedSteps(quartilesPerSteps: Map<bigint, QuartileData>,\n                                            skippedSteps: SkippedStepsInfo[],\n                                            worldID: bigint,\n                                            sequenceID: bigint,\n                                            numberOfStepsToDisplay: number): SkippedStepsInfo[] {\n        let skippedStepsCopied: SkippedStepsInfo[] = [...skippedSteps];\n\n        for (const [stepID, quartileData] of quartilesPerSteps){\n            if (quartileData.thirdQuartile > SKIPPED_MINOR_ISSUE_THRESHOLD)\n                continue;\n\n            // length + 1 , to handle the case that skippedStepsCopied is empty (in the first iterations)\n            for (let i: number = 0; i <= skippedStepsCopied.length + 1; ++i) {\n\n                if (quartileData.thirdQuartile >= skippedStepsCopied[i]?.thirdQuartileTime)\n                    continue;\n\n                // insert element at the index if ratio is superior,\n                skippedStepsCopied.splice(i, 0, {\n                    worldID,\n                    sequenceID,\n                    stepID,\n                    thirdQuartileTime: quartileData.thirdQuartile,\n                    severity: quartileData.thirdQuartile < SKIPPED_MAJOR_ISSUE_THRESHOLD ? Severity.MAJOR\n                                                                                         : Severity.MINOR,\n                });\n\n                if (skippedStepsCopied.length > numberOfStepsToDisplay)\n                    skippedStepsCopied.pop();\n\n                break;\n            }\n        }\n        return skippedStepsCopied;\n    }\n}", "import React, {useEffect, useState} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {primaryFontLarge, secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport { Button } from \"@root/react-components/src/buttons/Button\";\nimport i18next from \"i18next\";\nimport {lightWhite, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {NavLink} from \"react-router-dom\";\nimport {World} from \"@backend/Types/World\";\nimport {DataSourceWorlds} from \"@root/Frontend/DataSources/DataSourceWorlds\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {DataSourceSequences} from \"@root/Frontend/DataSources/DataSourceSequence\";\nimport {DataSourceSteps, StepData} from \"@root/Frontend/DataSources/DataSourceSteps\";\nimport {Analytics} from \"@root/Frontend/Console/Views/Analytics/Analytics\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {ProblematicStepInfo} from \"@backend/Types/ProblematicStepInfo\";\nimport {Severity} from \"@backend/Types/Severity\";\nimport {DataSourceText, TextData} from \"@root/Frontend/DataSources/DataSourceText\";\n\nconst ItemWrapper = styled(Box)({\n    display: \"flex\",\n    gap: \"10px\",\n    padding: \"20px\",\n    font: secondaryFontLarge,\n    [theme.breakpoints.up('xs')]: {\n        flexWrap: \"wrap\",\n        justifyContent: \"center\",\n    },\n    [theme.breakpoints.up('md')]: {\n        flexWrap: \"nowrap\",\n        justifyContent: \"space-between\",\n    }\n});\n\nconst ContentWrapper = styled(Box)({\n    display: \"flex\",\n    flexWrap: \"nowrap\",\n    [theme.breakpoints.down('sm')]: {\n        justifyContent: \"center\",\n        flexWrap: \"wrap\",\n        gap: \"5px\",\n    }\n});\n\nconst ImgWrapper = styled(\"img\")({\n    height: \"70px\",\n    width: \"85px\",\n    borderRadius: \"6px\",\n    objectFit: \"cover\",\n    marginRight: \"12px\",\n});\n\nconst InfoContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"space-between\"\n});\n\nconst RightContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    minWidth: \"max-content\"\n});\n\nexport interface StepInfoToDisplay {\n    stepID: bigint,\n    worldTitle: string,\n    sequenceTitle: string,\n    stepTitle: string,\n    severity: Severity,\n    thumbnail: string,\n    link: string,\n}\n\ninterface ProblematicStepItemProps {\n    children: JSX.Element\n    problematicStepInfo: ProblematicStepInfo\n    worldSequenceStepTitles?: string[]\n}\n\nexport default function ProblematicStepItem(props: ProblematicStepItemProps) {\n\n    const dataSourceWorlds: DataSourceWorlds = AppConsole.getInstance().dataSourceWorlds;\n    const dataSourceSequences: DataSourceSequences = AppConsole.getInstance().dataSourceSequences;\n    const dataSourceSteps: DataSourceSteps = AppConsole.getInstance().dataSourceSteps;\n    const dataSourceText: DataSourceText = AppConsole.getInstance().dataSourceText;\n\n    const [infoToDisplay, setInfo] = useState<StepInfoToDisplay | null>(null);\n\n    useEffect(() => {\n        if (props.problematicStepInfo)\n            getStepInfo().then((infos: StepInfoToDisplay) => setInfo(infos));\n\n    }, [props.problematicStepInfo]);\n\n    async function getStepInfo(): Promise<StepInfoToDisplay> {\n        const world: World = await dataSourceWorlds.getWorld(props.problematicStepInfo.worldID);\n        const sequenceTitle: string =\n            (await dataSourceSequences.getSequence(props.problematicStepInfo.worldID,\n                                                   props.problematicStepInfo.sequenceID)).Title.value;\n\n        const step: StepData = await dataSourceSteps.getStep(props.problematicStepInfo.worldID,\n                                                             props.problematicStepInfo.sequenceID,\n                                                             props.problematicStepInfo.stepID);\n        const text: TextData = await dataSourceText.getText(step.Text.value);\n\n        return {\n            stepID: props.problematicStepInfo.stepID,\n            worldTitle: world.Title.value,\n            sequenceTitle: sequenceTitle,\n            stepTitle: text.OriginalText.value,\n            severity: props.problematicStepInfo.severity,\n            thumbnail: world.Thumbnail.value,\n            link: `${Analytics.BASE_PATH}/Worlds/${props.problematicStepInfo.worldID}/Sequences/\n                   ${props.problematicStepInfo.sequenceID}`,\n        };\n    }\n\n    if (!props.problematicStepInfo || !infoToDisplay)\n        return <CenteredLoading/>\n\n    return (\n        <ItemWrapper key={props.problematicStepInfo.stepID.toString()}>\n            <ContentWrapper>\n                {infoToDisplay.thumbnail && <ImgWrapper src={infoToDisplay.thumbnail} alt={\"\"}\n                                                        crossOrigin=\"anonymous\"/>}\n                <InfoContainer>\n                    <Box sx={{font: primaryFontLarge}}>\n                        {`${infoToDisplay.worldTitle} > ${infoToDisplay.sequenceTitle} > ${infoToDisplay.stepTitle}`}\n                    </Box>\n                    <Box>\n                        <Box sx={{font: primaryFontLarge, color: primary}}> {i18next.t(\"Data & Metrics\")}: </Box>\n                        {props.children}\n                    </Box>\n                </InfoContainer>\n            </ContentWrapper>\n\n            <RightContainer>\n                <Box> {i18next.t(\"Severity\")}:\n                    <span style={{font:primaryFontLarge}}> {i18next.t(infoToDisplay.severity.toString())} </span>\n                </Box>\n                <Button size={\"small\"}>\n                    <NavLink to={infoToDisplay.link} style={{textDecoration: \"None\", color: lightWhite}}>\n                        {i18next.t(\"Visualize step analytics\")}\n                    </NavLink>\n                </Button>\n            </RightContainer>\n        </ItemWrapper>\n    );\n}\n", "import {UtilsInsights} from \"@backend/Utils/UtilsInsights\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport React, {Fragment, useEffect, useState} from \"react\";\nimport InsightTypeItem from \"@root/Frontend/Console/Views/Insights/InsightsTypeItem\";\nimport i18next from \"i18next\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {InsightType} from \"@root/Frontend/Console/Types/InsightType\";\nimport ProblematicStepItem from \"@root/Frontend/Console/Views/Insights/ProblematicStepItem\";\nimport {AccordionWrapper, LineSeparator} from \"@root/Frontend/Console/Views/Insights/UnclearSteps\";\nimport {TimeAmount, TimeUnit} from \"@utils/utils\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {DataSourceAttemptLogs, WorldSequenceAttempts} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {QuartileData, UtilsStats} from \"@backend/Utils/UtilsStats\";\nimport {TimeConsumingStepsInfo} from \"@backend/Types/ProblematicStepInfo\";\n\ninterface TimeConsumingStepsProps {\n    worldSequenceAttemptIDs: WorldSequenceAttempts\n}\n\nexport default function TimeConsumingSteps(props: TimeConsumingStepsProps) {\n    const timeConsumingProblem: string = `${i18next.t(\"The time spent on this step varies greatly between the \" +\n        \"users\")}. ${i18next.t(\"We noticed some users are taking much more time to complete this step compared \" +\n        \"to your team\u2019s average\")}`;\n    const timeConsumingSolution: string[] = [\n        i18next.t(\"In the sequence analysis (under the Analytics tab), verify the breakdown of your employees to\" +\n            \" better understand their respective performances\"),\n        `${i18next.t(\"Use this graph to identify the users who are performing well and the users who are slower \" +\n            \"than others\")}.${i18next.t(\"Talk to your best employees to collect their tips and tricks then share\" +\n            \" it with the rest of the team\")}`,\n        i18next.t(\"Offer additional coaching and support to the slower employees while congratulating the high \" +\n            \"performers\"),\n        `${i18next.t(\"Your step might contain too much or too little information which causes incomprehension \" +\n            \"from workers\")}. ${i18next.t(\"Make sure to focus on the essential elements\")}`\n    ];\n\n    const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n\n    const [stepsToDisplay, setStepsToDisplay] = useState<TimeConsumingStepsInfo[] | null>(null);\n\n    useEffect(() => {\n        if (props.worldSequenceAttemptIDs)\n            getDisplayedTimeConsumingSteps().then((worstTimeConsumingSteps: TimeConsumingStepsInfo[]) =>\n                setStepsToDisplay(worstTimeConsumingSteps)\n            );\n    }, [props.worldSequenceAttemptIDs]);\n\n    async function getDisplayedTimeConsumingSteps(): Promise<TimeConsumingStepsInfo[]> {\n        let timeConsumingSteps: TimeConsumingStepsInfo[] = [];\n\n        for (const [worldID, sequenceIDs] of props.worldSequenceAttemptIDs) {\n\n            for (const [sequenceID, attemptIDs] of sequenceIDs) {\n                //  attemptLogs.length === number of the sequence's visualization (nb of attempts for this sequence)\n                if (attemptIDs.length < UtilsInsights.MIN_NB_SEQUENCE_VISUALIZATION)\n                    continue;\n                \n                const attemptLogs: AttemptLogs[] = [];\n                for (const attemptID of attemptIDs)\n                    attemptLogs.push(await dataSourceAttemptLogs.getAttemptLogs(worldID, sequenceID, attemptID));\n\n                const timeSpentPerStep: Map<bigint, number[]> = UtilsStats.getTimesSpentPerStep(attemptLogs);\n\n                const quartilesPerStep: Map<bigint, QuartileData> =\n                    UtilsStats.computeQuartilesPerStep(timeSpentPerStep);\n\n                timeConsumingSteps =\n                    UtilsInsights.handleWorstTimeConsumingSteps(quartilesPerStep,\n                                                                timeConsumingSteps,\n                                                                worldID,\n                                                                sequenceID,\n                                                                UtilsInsights.NB_DISPLAYED_STEPS_PER_INSIGHT);\n            }\n        }\n\n        return timeConsumingSteps;\n    }\n\n    return (\n        <AccordionWrapper>\n            {!stepsToDisplay ?\n                <CenteredLoading/>\n            :\n                <InsightTypeItem\n                    title={i18next.t(InsightType.TIME_CONSUMING_STEPS)}\n                    problem={timeConsumingProblem}\n                    solution={timeConsumingSolution}\n                >\n                    {stepsToDisplay.map((step: TimeConsumingStepsInfo, index: number) =>\n                        <Fragment key={`${step.sequenceID}-${step.stepID}`}>\n                            <ProblematicStepItem problematicStepInfo={step}>\n                                <>\n                                    {i18next.t(\"Median time\")} :&nbsp;\n                                    {new TimeAmount(step.medianTime, TimeUnit.SECONDS).toPrettyHumanTime()}\n                                    <br/>\n                                    {i18next.t(\"1st and 3rd quartile gap\")} :&nbsp;\n                                    {\n                                        new TimeAmount(step.firstAndThirdQuartileGap, TimeUnit.SECONDS)\n                                                    .toPrettyHumanTime()\n                                    }\n                                </>\n                            </ProblematicStepItem>\n                            { index < stepsToDisplay.length - 1 && <LineSeparator/> }\n                        </Fragment>\n                    )}\n                </InsightTypeItem>\n            }\n        </AccordionWrapper>\n    );\n}", "import React, {useEffect, useState} from \"react\";\nimport {DataSourceAttemptLogs, WorldSequenceAttempts} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {Box, styled} from \"@mui/material\";\nimport {lightWhite, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {\n    primaryFontLarge,\n    primaryFontMedium,\n    secondaryFontLarge,\n} from \"@root/react-components/src/values/fonts/fonts\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {UtilsInsights} from \"@backend/Utils/UtilsInsights\";\nimport i18next from \"i18next\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {QuartileData, UtilsStats} from \"@backend/Utils/UtilsStats\";\nimport {theme} from \"@root/Frontend/theme\";\nimport {Severity} from \"@backend/Types/Severity\";\nimport {SkippedStepsInfo, TimeConsumingStepsInfo, UnclearStepsInfo} from \"@backend/Types/ProblematicStepInfo\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\n\nconst SummaryWrapper = styled(Box)({\n    display: \"flex\",\n    gap: \"20px\",\n    backgroundColor: lightWhite,\n    padding: \"25px 50px\",\n    border: `3px solid ${primary}`,\n    borderRadius: \"11px\",\n    font: primaryFontLarge,\n    [theme.breakpoints.down('md')]: {\n        font: primaryFontMedium,\n        padding: \"15px 20px\",\n    },\n    [theme.breakpoints.down('lg')]: {\n        gap: \"20px\",\n        padding: \"10px 20px\",\n    },\n    [theme.breakpoints.up('lg')]: {\n        gap: \"50px\",\n        padding: \"25px 50px\",\n    }\n});\n\nconst LineSeparator = styled(Box)({\n    borderLeft: `3px solid ${primary}`\n});\n\nconst BigNumberContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    textAlign: \"center\",\n    [theme.breakpoints.down('md')]: {\n        \"span\": {\n            fontSize: \"30px\"\n        }\n    },\n    [theme.breakpoints.up('md')]: {\n        \"span\": {\n            fontSize: \"40px\"\n        }\n    }\n});\n\nconst DetailsContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"space-around\",\n    gap: \"5px\"\n});\n\nconst MessageWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"right\",\n    gap: \"5px\",\n    font: secondaryFontLarge,\n    paddingTop: \"5px\",\n    [theme.breakpoints.down('md')]: {\n        font: primaryFontMedium\n    }\n});\n\ninterface InsightsSummaryProps {\n    worldSequenceAttemptIDs: WorldSequenceAttempts\n}\n\nexport default function InsightsSummary(props: InsightsSummaryProps) {\n    const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n\n    const [potentialImprovements, setPotentialImprovements] = useState<Map<Severity, number>>(new Map());\n\n    useEffect(() => {\n        fetchSummaryData().then((nbIssuesBySeverity: Map<Severity, number>) =>\n            setPotentialImprovements(nbIssuesBySeverity)\n        );\n\n    }, [props.worldSequenceAttemptIDs]);\n\n    async function fetchSummaryData(): Promise<Map<Severity, number>> {\n        let unclearSteps: UnclearStepsInfo[] = [];\n        let timeConsumingSteps: TimeConsumingStepsInfo[] = [];\n        let skippedSteps: SkippedStepsInfo[] = [];\n\n        for (const [worldID, sequenceIDs] of props.worldSequenceAttemptIDs) {\n\n            for (const [sequenceID, attemptIDs] of sequenceIDs) {\n                // the step is not considered if it was visualized less than 5 times\n                if (attemptIDs.length < UtilsInsights.MIN_NB_SEQUENCE_VISUALIZATION)\n                    continue;\n\n                const attemptLogs: AttemptLogs[] = [];\n                for (const attemptID of attemptIDs)\n                    attemptLogs.push(await dataSourceAttemptLogs.getAttemptLogs(worldID, sequenceID, attemptID));\n\n                const timeSpentPerStep: Map<bigint, number[]> = UtilsStats.getTimesSpentPerStep(attemptLogs);\n                const quartilesPerStep: Map<bigint, QuartileData> =\n                    UtilsStats.computeQuartilesPerStep(timeSpentPerStep);\n\n                /******* Time-consuming steps ********/\n                timeConsumingSteps =\n                    UtilsInsights.handleWorstTimeConsumingSteps(quartilesPerStep,\n                                                                timeConsumingSteps,\n                                                                worldID,\n                                                                sequenceID,\n                                                                UtilsInsights.NB_DISPLAYED_STEPS_PER_INSIGHT);\n\n                /******* Skipped steps ********/\n                skippedSteps = UtilsInsights.handleWorstSkippedSteps(quartilesPerStep,\n                                                                     skippedSteps,\n                                                                     worldID,\n                                                                     sequenceID,\n                                                                     UtilsInsights.NB_DISPLAYED_STEPS_PER_INSIGHT);\n\n                /******* Unclear steps ********/\n                // Map<stepID, visualizationCounter>\n                const nbVisualizationPerSteps: Map<bigint, number> =\n                    UtilsInsights.getNBStepVisualizationPerStepIDs(attemptLogs);\n                unclearSteps = UtilsInsights.handleWorstUnclearSteps(nbVisualizationPerSteps,\n                                                                     unclearSteps,\n                                                                     attemptLogs.length,\n                                                                     worldID,\n                                                                     sequenceID,\n                                                                     UtilsInsights.NB_DISPLAYED_STEPS_PER_INSIGHT);\n            }\n        }\n\n        const nbIssuePerSeverity: Map<Severity, number> = new Map();\n        nbIssuePerSeverity.set(Severity.MAJOR, 0);\n        nbIssuePerSeverity.set(Severity.MINOR, 0);\n\n        // for each Insight, we populate the map nbIssuePerSeverity (it's a counter per severity)\n        for (const step of unclearSteps)\n            nbIssuePerSeverity.set(step.severity, nbIssuePerSeverity.get(step.severity) + 1);\n\n        for (const step of timeConsumingSteps)\n            nbIssuePerSeverity.set(step.severity, nbIssuePerSeverity.get(step.severity) + 1);\n\n        for (const step of skippedSteps)\n            nbIssuePerSeverity.set(step.severity, nbIssuePerSeverity.get(step.severity) + 1);\n\n        return nbIssuePerSeverity;\n    }\n\n    return (\n        <Box>\n            <SummaryWrapper>\n                <BigNumberContainer>\n                    <span>\n                        {((potentialImprovements.get(Severity.MINOR) ?? 0) +\n                            (potentialImprovements.get(Severity.MAJOR) ?? 0)).toString()}\n                    </span>\n                    <Box> {i18next.t(\"potentially improvable step(s)\")} </Box>\n                </BigNumberContainer>\n                <LineSeparator/>\n                <DetailsContainer>\n                    <Box>\n                        {potentialImprovements.get(Severity.MAJOR)}&nbsp;\n                        {i18next.t(\"Major issue(s) - need improvement, optimization and understanding problem\")}\n                    </Box>\n                    <Box>\n                        {potentialImprovements.get(Severity.MINOR)}&nbsp;\n                        {i18next.t(\"Minor issue(s) - efficiency could be optimized\")}\n                    </Box>\n                </DetailsContainer>\n            </SummaryWrapper>\n            <MessageWrapper>\n                <InfoIcon style={{height: \"14px\", width: \"14px\"}}><Info/></InfoIcon>\n                <Box>\n                    {i18next.t(\"Only steps that have been viewed 5 times or more are considered in this page\")}\n                </Box>\n            </MessageWrapper>\n        </Box>\n    );\n}", "import React, {Fragment, useEffect, useState} from \"react\";\nimport {AccordionWrapper, LineSeparator} from \"@root/Frontend/Console/Views/Insights/UnclearSteps\";\nimport InsightTypeItem from \"@root/Frontend/Console/Views/Insights/InsightsTypeItem\";\nimport {InsightType} from \"@root/Frontend/Console/Types/InsightType\";\nimport i18next from \"i18next\";\nimport {TimeAmount, TimeUnit} from \"@utils/utils\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {DataSourceAttemptLogs, WorldSequenceAttempts} from \"@root/Frontend/DataSources/DataSourceAttemptLogs\";\nimport {UtilsInsights} from \"@backend/Utils/UtilsInsights\";\nimport {SkippedStepsInfo} from \"@backend/Types/ProblematicStepInfo\";\nimport ProblematicStepItem from \"@root/Frontend/Console/Views/Insights/ProblematicStepItem\";\nimport {AttemptLogs} from \"@backend/Types/AttemptLogs\";\nimport {QuartileData, UtilsStats} from \"@root/../Backend/Utils/UtilsStats\";\n\ninterface SkippedStepsProps {\n    worldSequenceAttemptIDs: WorldSequenceAttempts\n}\n\nexport default function SkippedSteps(props: SkippedStepsProps) {\n    const skippedStepProblem: string = `${i18next.t(\"The time spent on this step is less than 3 seconds on \" +\n        \"average\")}. ${i18next.t(\"This step is likely unnecessary because users have a tendency to skip it\")}`;\n    const skippedStepSolution: string[] = [\n        `${i18next.t(\"Verify the previous steps and make sure this step is not redundant\")}. \n        ${i18next.t(\"You can combine or delete the step if it does not add much value to keep your sequence \" +\n            \"lean and easy to consume\")}.`,\n        i18next.t(\"If it is a crucial step, you might want to transform it to a Step Question or Step Photo that\" +\n            \" the user cannot skip\"),\n        i18next.t(\"You can add content like images or videos that increase the value of this step\")\n    ];\n\n    const dataSourceAttemptLogs: DataSourceAttemptLogs = AppConsole.getInstance().dataSourceAttemptLogs;\n\n    const [stepsToDisplay, setStepsToDisplay] = useState<SkippedStepsInfo[] | null>(null);\n\n    useEffect(() => {\n        if (props.worldSequenceAttemptIDs)\n            getDisplayedSkippedSteps().then((worstSkippedSteps: SkippedStepsInfo[]) =>\n                setStepsToDisplay(worstSkippedSteps)\n            );\n    }, [props.worldSequenceAttemptIDs]);\n\n    async function getDisplayedSkippedSteps(): Promise<SkippedStepsInfo[]> {\n        let skippedSteps: SkippedStepsInfo[] = [];\n\n        for (const [worldID, sequenceIDs] of props.worldSequenceAttemptIDs) {\n\n            for (const [sequenceID, attemptIDs] of sequenceIDs) {\n                //  attemptLogs.length === number of the sequence's visualization (nb of attempts for this sequence)\n                if (attemptIDs.length < UtilsInsights.MIN_NB_SEQUENCE_VISUALIZATION)\n                    continue;\n                \n                const attemptLogs: AttemptLogs[] = [];\n                for (const attemptID of attemptIDs) \n                    attemptLogs.push(await dataSourceAttemptLogs.getAttemptLogs(worldID, sequenceID, attemptID));\n\n                const timeSpentPerStep: Map<bigint, number[]> = UtilsStats.getTimesSpentPerStep(attemptLogs);\n                const quartilesPerStep: Map<bigint, QuartileData> =\n                    UtilsStats.computeQuartilesPerStep(timeSpentPerStep);\n\n                skippedSteps = UtilsInsights.handleWorstSkippedSteps(quartilesPerStep,\n                                                                     skippedSteps,\n                                                                     worldID,\n                                                                     sequenceID,\n                                                                     UtilsInsights.NB_DISPLAYED_STEPS_PER_INSIGHT);\n            }\n        }\n\n        return skippedSteps;\n    }\n\n    return(\n        <AccordionWrapper>\n            {!stepsToDisplay ?\n                <CenteredLoading/>\n            :\n                <InsightTypeItem\n                    title={i18next.t(InsightType.SKIPPED_STEPS)}\n                    problem={skippedStepProblem}\n                    solution={skippedStepSolution}\n                >\n                    {stepsToDisplay.map((step, index) =>\n                        <Fragment key={`${step.sequenceID}-${step.stepID}`}>\n                            <ProblematicStepItem problematicStepInfo={step}>\n                                <>\n                                    {i18next.t(\"In 75% of cases, this stage is completed in less than\")} : &nbsp;\n                                    {new TimeAmount(step.thirdQuartileTime, TimeUnit.SECONDS).toPrettyHumanTime()}\n                                </>\n                            </ProblematicStepItem>\n                            { index < stepsToDisplay.length - 1 && <LineSeparator/> }\n                        </Fragment>\n                    )}\n                </InsightTypeItem>\n            }\n        </AccordionWrapper>\n    );\n}", "import * as React from 'react';\n\nexport function Bulb() {\n    return (\n        <svg width=\"16\" height=\"24\" viewBox=\"0 0 16 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n                d=\"M15.9967 7.9074C15.911 10.1039 15.0703 12.2058 13.6132 13.8664C13.1818 14.3416 12.8527 14.8986 12.646 15.5035V17.2012C12.646 17.6137 12.4802 18.0092 12.1851 18.3009C11.89 18.5926 11.4898 18.7564 11.0725 18.7564H4.92753C4.51021 18.7564 4.10999 18.5926 3.8149 18.3009C3.51981 18.0092 3.35403 17.6137 3.35403 17.2012V15.5035C3.14724 14.8986 2.81815 14.3417 2.38675 13.8664C0.928525 12.2063 0.0866187 10.1043 2.8499e-09 7.9074C-4.92585e-05 6.08251 0.638525 4.31377 1.80742 2.90118C2.97631 1.48858 4.60357 0.519084 6.4132 0.157117C8.22282 -0.204849 10.1034 0.0629972 11.736 0.915229C13.3686 1.76746 14.6528 3.15161 15.3706 4.83293C15.7879 5.80649 16.002 6.85333 16 7.91067L15.9967 7.9074ZM14.4232 7.9074C14.4232 6.22363 13.7464 4.60882 12.5419 3.41822C11.3373 2.22761 9.70353 1.55874 7.99999 1.55874C6.29646 1.55874 4.6627 2.22761 3.45812 3.41822C2.25354 4.60882 1.57681 6.22363 1.57681 7.9074C1.57681 11.7759 4.92753 13.4883 4.92753 15.5035V17.2012H11.0725V15.5035C11.0725 13.4883 14.4232 11.7759 14.4232 7.9074ZM11.8592 20.5818C11.8594 20.684 11.8392 20.7853 11.7998 20.8799C11.7604 20.9744 11.7024 21.0603 11.6294 21.1327C11.5563 21.2051 11.4695 21.2625 11.3739 21.3017C11.2784 21.3409 11.1759 21.3611 11.0725 21.3611H4.92753C4.71887 21.3611 4.51876 21.2791 4.37122 21.1333C4.22367 20.9875 4.14078 20.7897 4.14078 20.5834C4.14078 20.3772 4.22367 20.1794 4.37122 20.0336C4.51876 19.8877 4.71887 19.8058 4.92753 19.8058H11.0725C11.2808 19.8058 11.4807 19.8875 11.6282 20.033C11.7757 20.1785 11.8588 20.3758 11.8592 20.5818ZM10.7992 22.6478C10.826 22.7244 10.8279 22.8074 10.8048 22.8851C10.7816 22.9629 10.7345 23.0316 10.67 23.0816C9.89444 23.6769 8.94049 24 7.95859 24C6.97668 24 6.02273 23.6769 5.2472 23.0816C5.18206 23.0322 5.13425 22.9639 5.11048 22.8862C5.08671 22.8085 5.08819 22.7254 5.1147 22.6486C5.14121 22.5718 5.19143 22.5051 5.25828 22.458C5.32513 22.4109 5.40525 22.3856 5.48737 22.3859H10.4281C10.5101 22.3858 10.59 22.411 10.6568 22.458C10.7236 22.5049 10.7723 22.5713 10.7992 22.6478Z\"\n                fill=\"currentColor\"/>\n            <circle cx=\"8\" cy=\"8\" r=\"7\" fill=\"currentColor\"/>\n            <rect x=\"4\" y=\"14\" width=\"8\" height=\"4\" fill=\"currentColor\"/>\n        </svg>\n    )\n}", "import {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {serialize} from \"bson\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Entity, EntityAttribute} from \"@backend/Types/Entity\";\nimport {Authentication} from \"@utils/Authentication\";\n\nexport class DataSourceEntities {\n    constructor(private readonly authentication: Authentication) {}\n\n    private entities: Map<bigint, Promise<Entity>> = new Map();\n    private static readonly ENTITY_ERROR: Entity = {\n        Name: { value: \"Error\", timestamp: BigInt(0) },\n        Owner: { value: BigInt(0), timestamp: BigInt(0) },\n        OwnerType: { value: OwnerType.PEER, timestamp: BigInt(0) },\n        ArchivedBy: { value: BigInt(0), timestamp: BigInt(0) }\n    };\n\n    public async createEntity(name: string, ownerID: bigint, ownerType: OwnerType): Promise<bigint> {\n        const response: Response = await fetch(\"/api/Entity/Create\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({name, ownerID, ownerType})\n        });\n\n        if (response.status !== 200)\n            return BigInt(0);\n\n        const responseData: {entityID: bigint} = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        return responseData.entityID;\n    }\n\n    public getEntityByID(entityID: bigint): Promise<Entity> {\n        let entity: Promise<Entity> | undefined = this.entities.get(entityID);\n        if (!entity) {\n            entity = this.fetchEntity(entityID);\n            this.entities.set(entityID, entity);\n        }\n        return entity;\n    }\n\n    private async fetchEntity(entityID: bigint): Promise<Entity> {\n        // Get entity data\n        const response: Response = await fetch(`/api/Entity/${entityID}/${Object.values(EntityAttribute).join(',')}`, {\n            method: \"GET\",\n            headers: await this.authentication.getDefaultHeaders()\n        });\n\n        if (response.status !== 200)\n            return DataSourceEntities.ENTITY_ERROR;\n\n        return UtilsBSON.deserializeBSON(await response.arrayBuffer());\n    }\n\n    async archiveEntity(entityID: bigint): Promise<boolean> {\n        const response: Response = await fetch(`/api/Entity/${entityID}`, {\n            method: \"DELETE\",\n            headers: await this.authentication.getDefaultHeaders()\n        });\n\n       const success: boolean = response.status === 200;\n       if (!success)\n           return success;\n\n       this.invalidateEntity(entityID);\n       return success;\n    }\n\n    async updateEntityAttribute(entityID: bigint,\n                                attributeName: EntityAttribute,\n                                attributeValue: string | bigint\n    ): Promise<boolean> {\n        const updatableAttributes: EntityAttribute[] = [EntityAttribute.NAME];\n\n        if (!updatableAttributes.includes(attributeName))\n            return false;\n\n        const response: Response = await fetch(`/api/Entity/${entityID}/${attributeName}`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ value: attributeValue, timestamp: BigInt(Math.floor(Date.now() / 1000)) }),\n        });\n\n        const success: boolean = response.status === 200;\n        if (!success)\n           return success;\n\n        this.invalidateEntity(entityID);\n        return success;\n    }\n\n    invalidateEntity(entityID: bigint): void {\n        if (this.entities.has(entityID))\n            this.entities.delete(entityID);\n    }\n}\n", "import {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {Authentication} from \"@utils/Authentication\";\n\nexport class DataSourceSpeech {\n    constructor(private readonly authentication: Authentication) {}\n\n    public async transcribeSpeech(audioBlob: Blob): Promise<Blob | null> {\n        if (audioBlob.type !== \"audio/m4a\") {\n            AdapterLog.ERROR(\"Only m4a files are currently supported for transcription\");\n            return null;\n        }\n\n        const response: Response | null = await fetch(\"/api/Speech/Transcribe\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: await audioBlob.arrayBuffer()\n        }).catch(() => null);\n\n        if (!response?.ok) {\n            AdapterLog.ERROR(\"Received malformed response from speech transcription service\");\n            return null;\n        }\n\n        const contentType: string | null = response.headers.get(\"content-type\");\n        if (response.status === 204)\n            return null;\n        else if (response.status !== 201 || contentType !== \"text/vtt\") {\n            AdapterLog.ERROR(\"Received malformed response from speech transcription service\");\n            return null;\n        }\n\n        const subtitlesBuffer: ArrayBuffer = await response.arrayBuffer();\n        if (!subtitlesBuffer.byteLength) {\n            AdapterLog.ERROR(\"Received invalid buffer from speech transcription service\");\n            return null;\n        }\n\n        return new Blob([subtitlesBuffer], { type: contentType });\n    }\n}\n", "import React from \"react\";\nimport {overlay} from \"@root/react-components/src/values/colors/colors\";\nimport {Box, styled} from \"@mui/material\";\nimport {AppLogin} from \"@root/Frontend/Login/AppLogin\";\nimport {Language} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {Authentication} from \"@utils/Authentication\";\n\nconst Wrapper = styled(Box)({\n     height: \"100%\",\n     width: \"100%\",\n     position: \"fixed\",\n     top:0,\n     right:0,\n     zIndex: 2000,\n     backgroundColor: overlay,\n     display: \"flex\",\n     alignItems: \"center\",\n     justifyContent: \"center\",\n});\n\ninterface AppLoginDialogProps {\n    getAuthentication?: () => Authentication;\n    language?: Language;\n    setLanguage?: (language: Language) => void;\n    onTokenUpdated: (token: string) => void;\n}\n\ninterface AppLoginDialogState {\n    isOpen: boolean;\n}\n\nexport class AppLoginDialog extends React.Component {\n    props: AppLoginDialogProps;\n    state: AppLoginDialogState = {\n        isOpen: false,\n    };\n\n    public setLoginDialogOpened(isOpen: boolean) { this.setState({ isOpen }); }\n\n    private onTokenUpdated(token: string) {\n        if (token) {\n            this.setState({ isOpen: false });\n\n            // Token was edited via the dialog, remove it from the url if any\n            const url = new URL(window.location.href);\n            url.searchParams.delete(\"token\");\n            window.history.replaceState({}, \"\", url.toString());\n        }\n\n        this.props.onTokenUpdated(token);\n    }\n\n    render() {\n        if (this.state.isOpen)\n            return (\n                <Wrapper>\n                    <AppLogin\n                        getAuthentication={this.props.getAuthentication}\n                        language={this.props.language}\n                        setLanguage={(language: Language) => this.props.setLanguage?.(language)}\n                        onTokenUpdated={(token: string) => this.onTokenUpdated(token)}\n                        closeLogin={() => this.setState({ isOpen: false })}\n                    />\n                </Wrapper>\n            );\n\n        return <></>;\n    }\n}\n", "import {Session, SessionAttribute} from \"@backend/Types/Session\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {Authentication} from \"@utils/Authentication\";\n\nexport class DataSourceSessions {\n    constructor(private readonly authentication: Authentication) {}\n\n    private sessions: Map<bigint, Promise<Session>> = new Map<bigint, Promise<Session>>();\n    // Map SessionID => PeerID => ConnectedPeer\n    private static SESSION_ERROR: Session = { Host: BigInt(0), Peers: {} };\n\n    /****************************************** Public ******************************************/\n    public getSession(sessionID: bigint): Promise<Session> {\n        let session: Promise<Session> | undefined = this.sessions.get(sessionID);\n        if (!session) {\n            session = this.fetchSession(sessionID);\n            this.sessions.set(sessionID, session);\n        }\n\n        return session;\n    }\n\n    /****************************************** Private ******************************************/\n    private constructPath(sessionID: bigint, attributes: SessionAttribute[]): string {\n        const attributesStr: string = attributes.map((attribute: SessionAttribute) => attribute.toString()).join(\",\");\n        return `/api/Session/${sessionID}/${attributesStr}`;\n    }\n\n    private async fetchSession(sessionID: bigint): Promise<Session> {\n        const attributes: SessionAttribute[] = [SessionAttribute.PEERS, SessionAttribute.HOST];\n        const response: Response = await fetch(this.constructPath(sessionID, attributes), {\n            method: \"GET\",\n            headers: await this.authentication.getDefaultHeaders()\n        });\n\n        if (!response.ok) {\n            AdapterLog.ERROR(`Couldn't fetch session ${sessionID}`);\n            return DataSourceSessions.SESSION_ERROR;\n        }\n\n        return UtilsBSON.deserializeBSON(await response.arrayBuffer());\n    }\n}\n", "import {Text, TextAttribute} from \"@backend/Types/Text\";\nimport {Authentication} from \"@utils/Authentication\";\nimport {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\n\nconst TEXT_ATTRIBUTES = [ TextAttribute.ORIGINAL_TEXT, TextAttribute.TRANSLATIONS ] as const;\nexport type TextData = Pick<Text, typeof TEXT_ATTRIBUTES[number]>;\n\nexport class DataSourceText {\n    constructor(private readonly authentication: Authentication) {}\n\n    private texts: Map<bigint, Promise<TextData>> = new Map();\n\n    static readonly TEXT_ERROR: TextData = {\n        OriginalText: { value: \"Error\", timestamp: BigInt(0) },\n        Translations: { value: {}, timestamp: BigInt(0) }\n    };\n\n    public getText(textID: bigint): Promise<TextData> {\n        let cachedText: Promise<TextData> | undefined = this.texts.get(textID);\n        if (!cachedText) {\n            cachedText = this.fetchText(textID);\n            this.texts.set(textID, cachedText);\n        }\n        return cachedText;\n    }\n\n    private async fetchText(textID: bigint): Promise<TextData> {\n        if (!textID)\n            return DataSourceText.TEXT_ERROR;\n\n        const textAttributesURL: string = `/api/Text/${textID}/${TEXT_ATTRIBUTES.join(\",\")}`;\n        const response: Response | null = await fetch(textAttributesURL, {\n            method: \"GET\",\n            headers: await this.authentication.getDefaultHeaders()\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return DataSourceText.TEXT_ERROR;\n\n        return UtilsBSON.deserializeBSON(await response.arrayBuffer());\n    }\n}\n", "import React from \"react\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, styled} from \"@mui/material\";\nimport {Announcement} from \"@backend/Types/Announcement\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {marked} from \"marked\";\nimport {MarkdownCustomStyle} from \"./MarkdownCustomStyle\";\nimport {Logo} from \"@root/react-components/src/logo/Logo\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {darkenGrey, darkenPrimary, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {App} from \"@root/Frontend/Studio/App\";\n\nconst Wrapper = styled(Box)({\n    minHeight: \"300px\"\n});\n\nconst HeaderContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n});\n\nconst Title = styled(Box)({\n    flex: 1,\n    textAlign: \"center\",\n    font: primaryFontXLarge,\n    fontSize: \"22px\",\n});\n\nconst CloseWrapper = styled(Box)({\n    display: \"flex\",\n    width: \"100px\",\n    color: primary,\n    alignSelf: \"flex-start\",\n    cursor: \"pointer\",\n    justifyContent: \"flex-end\",\n    \":hover\": {\n        color: darkenPrimary\n    },\n    \"& svg\":{\n        width: \"24px\"\n    }\n});\n\nconst ContentWrapper = styled(MarkdownCustomStyle)({\n    maxWidth: \"800px\",\n    maxHeight: \"60vh\",\n    overflow: \"auto\",\n    padding: \"20px\",\n\n    scrollbarColor: primary ,\n    scrollbarWidth: \"thin\",\n    \"&\":{\n        /* width */\n        \"&::-webkit-scrollbar\": {\n            width: \"6px\",\n            height: \"10px\",\n        },\n        /* Track */\n        \"&::-webkit-scrollbar-track\": {\n            width: 0,\n            backgroundColor: white,\n            borderRadius: \"10px\",\n            marginBlockEnd: \"1.3em\",\n        },\n        /* Handle */\n        \"&::-webkit-scrollbar-thumb\": {\n            background: darkenGrey,\n            borderRadius: \"10px\",\n        },\n    }\n});\n\nconst FooterWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    paddingTop: \"20px\",\n    font: primaryFontLarge\n});\n\nconst ButtonContainer = styled(Box)({\n    display: \"flex\",\n    gap: \"3px\",\n    flex: \"1\",\n    justifyContent: \"flex-start\"\n});\n\nconst DotContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection:\"row-reverse\",\n    gap: \"5px\"\n})\n\nconst Dot = styled(Box)((props: {selected: number}) => ({\n    width: \"10px\",\n    height: \"10px\",\n    borderRadius: \"10px\",\n    backgroundColor: props.selected ? primary : \"transparent\",\n    border: `2px solid ${primary}`\n}));\n\ninterface AnnouncementDialogProps {\n    getApp: () => AppConsole | App;\n}\n\ninterface AnnouncementDialogState {\n    openDialog: boolean,\n    lastAnnouncementIDs: bigint[],\n    titles: string[],\n    markdownContents: string[],\n    currentIndex: number\n}\n\nexport class AnnouncementDialog extends React.Component {\n    private readonly LAST_PUBLISHED_ANNOUNCEMENT_REQUIRED_NB: number = 5;\n    props: AnnouncementDialogProps;\n    state: AnnouncementDialogState = {\n        openDialog: false,\n        lastAnnouncementIDs: [],\n        titles: [],\n        markdownContents: [],\n        currentIndex: 0\n    };\n\n    public async handleDialogAnnouncements() {\n        if (await this.unSeenAnnouncement())\n            await this.openDialog();\n    }\n\n    public async openDialog(){\n        if (!this.state.lastAnnouncementIDs.length)\n            return;\n        const lastAnnouncementTitles: string[] = [];\n        const lastAnnouncementContent: string[] = [];\n\n        for (let i = 0; i < this.state.lastAnnouncementIDs.length; i++) {\n            const announcement: Announcement | null =\n                await this.props.getApp().dataSourceAnnouncements.getAttributes(this.state.lastAnnouncementIDs[i]);\n\n            lastAnnouncementTitles[i] = announcement?.Title ?? \"\";\n            lastAnnouncementContent[i] = announcement?.Content ?? \"\";\n        }\n\n        this.setState({\n            titles: lastAnnouncementTitles,\n            markdownContents: lastAnnouncementContent,\n            currentIndex: 0,\n            openDialog: true\n        });\n    }\n\n    private async unSeenAnnouncement(): Promise<boolean>{\n        const lastLoginTimestamp = window.localStorage.getItem(\"lastLoginTimestamp\") || BigInt(0);\n\n        const lastPublishedAnnouncementsIDs : bigint[] =\n            await this.props.getApp().dataSourceAnnouncements.getLastPublishedIDs(\n                this.LAST_PUBLISHED_ANNOUNCEMENT_REQUIRED_NB);\n        const lastAnnouncementID: bigint = lastPublishedAnnouncementsIDs[0];\n\n        if (!lastAnnouncementID)\n            return false;\n\n        this.setState({ lastAnnouncementIDs: lastPublishedAnnouncementsIDs });\n\n        const announcement: Announcement | null =\n            await this.props.getApp().dataSourceAnnouncements.getAttributes(lastAnnouncementID);\n        const releaseTimestamp: bigint = announcement?.ReleaseTimestamp ?? BigInt(0);\n\n        window.localStorage.setItem(\"lastLoginTimestamp\", (BigInt(Date.now()) / BigInt(1000)).toString());\n        return Boolean(releaseTimestamp && BigInt(lastLoginTimestamp) < releaseTimestamp);\n    }\n\n    //on next, we display the next announcement (next by releaseDate)\n    private onNext(): void {\n        // next when index > 0 because lastAnnouncementIDs is sorted in descending order by releaseDate\n        if (this.state.currentIndex > 0)\n            this.setState((prevState: AnnouncementDialogState) => ({\n                currentIndex: prevState.currentIndex - 1\n            }));\n    }\n\n    //on previous, we display the previous announcement (previous by releaseDate)\n    private onPrevious(): void {\n        // previous when index < 5 because lastAnnouncementIDs is sorted in descending order by releaseDate\n        if(this.state.currentIndex < this.state.lastAnnouncementIDs.length - 1)\n            this.setState((prevState: AnnouncementDialogState) => ({\n                currentIndex: prevState.currentIndex + 1\n            }));\n    }\n\n    render() {\n        if (!this.state.openDialog)\n            return <></>;\n\n        if(!this.state.titles.length || !this.state.markdownContents.length)\n            return <CenteredLoading />;\n\n        return (\n            <Dialog id=\"announcement-dialog\"\n                    size={DialogSize.md}\n                    onClose={() => this.setState({ openDialog: false })}\n                    closeOnClickOutside\n            >\n                <Wrapper>\n                    <HeaderContainer>\n                        <Box sx={{width: \"100px\"}}>\n                            <Logo dark />\n                        </Box>\n                        <Title>{this.state.titles[this.state.currentIndex]}</Title>\n                        <CloseWrapper onClick={() => this.setState({ openDialog: false })}>\n                            <Close/>\n                        </CloseWrapper>\n                    </HeaderContainer>\n                    <ContentWrapper dangerouslySetInnerHTML={{\n                            __html: marked.parse(this.state.markdownContents[this.state.currentIndex])\n                        }}\n                    />\n                    <FooterWrapper>\n                        <ButtonContainer>\n                            <Button\n                                sx={{borderRadius: \"25px\"}}\n                                variant={\"outlined\"}\n                                onClick={() => this.onPrevious()}\n                                disabled={this.state.currentIndex === this.state.lastAnnouncementIDs.length - 1}\n                            >\n                                {i18next.t(\"Previous\")}\n                            </Button>\n                            <Button sx={{borderRadius: \"25px\"}}  variant={\"outlined\"}\n                                    onClick={() => this.onNext()}\n                                    disabled={this.state.currentIndex === 0}\n                            >\n                                {i18next.t(\"Next\")}\n                            </Button>\n                        </ButtonContainer>\n                        <DotContainer>\n                        {this.state.lastAnnouncementIDs.map((element, index) =>\n                            <Dot\n                                key={element.toString()}\n                                selected={Number(index === this.state.currentIndex)}\n                                onClick={() => this.setState({currentIndex: index})}\n                            />\n                        )}\n                        </DotContainer>\n                        <span style={{display: \"flex\", flex: \"1\", justifyContent: \"flex-end\"}}>\n                            {i18next.t(\"DeepSight Team\")}\n                        </span>\n                    </FooterWrapper>\n                </Wrapper>\n            </Dialog>\n        )\n    }\n}", "/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n    return {\n        async: false,\n        baseUrl: null,\n        breaks: false,\n        extensions: null,\n        gfm: true,\n        headerIds: false,\n        headerPrefix: '',\n        highlight: null,\n        hooks: null,\n        langPrefix: 'language-',\n        mangle: false,\n        pedantic: false,\n        renderer: null,\n        sanitize: false,\n        sanitizer: null,\n        silent: false,\n        smartypants: false,\n        tokenizer: null,\n        walkTokens: null,\n        xhtml: false\n    };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n    _defaults = newDefaults;\n}\n", "/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n    if (encode) {\n        if (escapeTest.test(html)) {\n            return html.replace(escapeReplace, getEscapeReplacement);\n        }\n    }\n    else {\n        if (escapeTestNoEncode.test(html)) {\n            return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n        }\n    }\n    return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n    // explicitly match decimal, hex, and named HTML entities\n    return html.replace(unescapeTest, (_, n) => {\n        n = n.toLowerCase();\n        if (n === 'colon')\n            return ':';\n        if (n.charAt(0) === '#') {\n            return n.charAt(1) === 'x'\n                ? String.fromCharCode(parseInt(n.substring(2), 16))\n                : String.fromCharCode(+n.substring(1));\n        }\n        return '';\n    });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n    regex = typeof regex === 'string' ? regex : regex.source;\n    opt = opt || '';\n    const obj = {\n        replace: (name, val) => {\n            val = typeof val === 'object' && 'source' in val ? val.source : val;\n            val = val.replace(caret, '$1');\n            regex = regex.replace(name, val);\n            return obj;\n        },\n        getRegex: () => {\n            return new RegExp(regex, opt);\n        }\n    };\n    return obj;\n}\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nexport function cleanUrl(sanitize, base, href) {\n    if (sanitize) {\n        let prot;\n        try {\n            prot = decodeURIComponent(unescape(href))\n                .replace(nonWordAndColonTest, '')\n                .toLowerCase();\n        }\n        catch (e) {\n            return null;\n        }\n        if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n            return null;\n        }\n    }\n    if (base && !originIndependentUrl.test(href)) {\n        href = resolveUrl(base, href);\n    }\n    try {\n        href = encodeURI(href).replace(/%25/g, '%');\n    }\n    catch (e) {\n        return null;\n    }\n    return href;\n}\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\nexport function resolveUrl(base, href) {\n    if (!baseUrls[' ' + base]) {\n        // we can ignore everything in base after the last slash of its path component,\n        // but we might need to add _that_\n        // https://tools.ietf.org/html/rfc3986#section-3\n        if (justDomain.test(base)) {\n            baseUrls[' ' + base] = base + '/';\n        }\n        else {\n            baseUrls[' ' + base] = rtrim(base, '/', true);\n        }\n    }\n    base = baseUrls[' ' + base];\n    const relativeBase = base.indexOf(':') === -1;\n    if (href.substring(0, 2) === '//') {\n        if (relativeBase) {\n            return href;\n        }\n        return base.replace(protocol, '$1') + href;\n    }\n    else if (href.charAt(0) === '/') {\n        if (relativeBase) {\n            return href;\n        }\n        return base.replace(domain, '$1') + href;\n    }\n    else {\n        return base + href;\n    }\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n    // ensure that every cell-delimiting pipe has a space\n    // before it to distinguish it from an escaped pipe\n    const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n        let escaped = false;\n        let curr = offset;\n        while (--curr >= 0 && str[curr] === '\\\\')\n            escaped = !escaped;\n        if (escaped) {\n            // odd number of slashes means | is escaped\n            // so we leave it alone\n            return '|';\n        }\n        else {\n            // add space before unescaped |\n            return ' |';\n        }\n    }), cells = row.split(/ \\|/);\n    let i = 0;\n    // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n    if (!cells[0].trim()) {\n        cells.shift();\n    }\n    if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n        cells.pop();\n    }\n    if (count) {\n        if (cells.length > count) {\n            cells.splice(count);\n        }\n        else {\n            while (cells.length < count)\n                cells.push('');\n        }\n    }\n    for (; i < cells.length; i++) {\n        // leading or trailing whitespace is ignored per the gfm spec\n        cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n    }\n    return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n    const l = str.length;\n    if (l === 0) {\n        return '';\n    }\n    // Length of suffix matching the invert condition.\n    let suffLen = 0;\n    // Step left until we fail to match the invert condition.\n    while (suffLen < l) {\n        const currChar = str.charAt(l - suffLen - 1);\n        if (currChar === c && !invert) {\n            suffLen++;\n        }\n        else if (currChar !== c && invert) {\n            suffLen++;\n        }\n        else {\n            break;\n        }\n    }\n    return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n    if (str.indexOf(b[1]) === -1) {\n        return -1;\n    }\n    let level = 0;\n    for (let i = 0; i < str.length; i++) {\n        if (str[i] === '\\\\') {\n            i++;\n        }\n        else if (str[i] === b[0]) {\n            level++;\n        }\n        else if (str[i] === b[1]) {\n            level--;\n            if (level < 0) {\n                return i;\n            }\n        }\n    }\n    return -1;\n}\nexport function checkDeprecations(opt, callback) {\n    if (!opt || opt.silent) {\n        return;\n    }\n    if (callback) {\n        console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n    }\n    if (opt.sanitize || opt.sanitizer) {\n        console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n    }\n    if (opt.highlight || opt.langPrefix !== 'language-') {\n        console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n    }\n    if (opt.mangle) {\n        console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n    }\n    if (opt.baseUrl) {\n        console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n    }\n    if (opt.smartypants) {\n        console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n    }\n    if (opt.xhtml) {\n        console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n    }\n    if (opt.headerIds || opt.headerPrefix) {\n        console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install  https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n    }\n}\n", "import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n    const href = link.href;\n    const title = link.title ? escape(link.title) : null;\n    const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n    if (cap[0].charAt(0) !== '!') {\n        lexer.state.inLink = true;\n        const token = {\n            type: 'link',\n            raw,\n            href,\n            title,\n            text,\n            tokens: lexer.inlineTokens(text)\n        };\n        lexer.state.inLink = false;\n        return token;\n    }\n    return {\n        type: 'image',\n        raw,\n        href,\n        title,\n        text: escape(text)\n    };\n}\nfunction indentCodeCompensation(raw, text) {\n    const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n    if (matchIndentToCode === null) {\n        return text;\n    }\n    const indentToCode = matchIndentToCode[1];\n    return text\n        .split('\\n')\n        .map(node => {\n        const matchIndentInNode = node.match(/^\\s+/);\n        if (matchIndentInNode === null) {\n            return node;\n        }\n        const [indentInNode] = matchIndentInNode;\n        if (indentInNode.length >= indentToCode.length) {\n            return node.slice(indentToCode.length);\n        }\n        return node;\n    })\n        .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n    options;\n    // TODO: Fix this rules type\n    rules;\n    lexer;\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    space(src) {\n        const cap = this.rules.block.newline.exec(src);\n        if (cap && cap[0].length > 0) {\n            return {\n                type: 'space',\n                raw: cap[0]\n            };\n        }\n    }\n    code(src) {\n        const cap = this.rules.block.code.exec(src);\n        if (cap) {\n            const text = cap[0].replace(/^ {1,4}/gm, '');\n            return {\n                type: 'code',\n                raw: cap[0],\n                codeBlockStyle: 'indented',\n                text: !this.options.pedantic\n                    ? rtrim(text, '\\n')\n                    : text\n            };\n        }\n    }\n    fences(src) {\n        const cap = this.rules.block.fences.exec(src);\n        if (cap) {\n            const raw = cap[0];\n            const text = indentCodeCompensation(raw, cap[3] || '');\n            return {\n                type: 'code',\n                raw,\n                lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n                text\n            };\n        }\n    }\n    heading(src) {\n        const cap = this.rules.block.heading.exec(src);\n        if (cap) {\n            let text = cap[2].trim();\n            // remove trailing #s\n            if (/#$/.test(text)) {\n                const trimmed = rtrim(text, '#');\n                if (this.options.pedantic) {\n                    text = trimmed.trim();\n                }\n                else if (!trimmed || / $/.test(trimmed)) {\n                    // CommonMark requires space before trailing #s\n                    text = trimmed.trim();\n                }\n            }\n            return {\n                type: 'heading',\n                raw: cap[0],\n                depth: cap[1].length,\n                text,\n                tokens: this.lexer.inline(text)\n            };\n        }\n    }\n    hr(src) {\n        const cap = this.rules.block.hr.exec(src);\n        if (cap) {\n            return {\n                type: 'hr',\n                raw: cap[0]\n            };\n        }\n    }\n    blockquote(src) {\n        const cap = this.rules.block.blockquote.exec(src);\n        if (cap) {\n            const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n            const top = this.lexer.state.top;\n            this.lexer.state.top = true;\n            const tokens = this.lexer.blockTokens(text);\n            this.lexer.state.top = top;\n            return {\n                type: 'blockquote',\n                raw: cap[0],\n                tokens,\n                text\n            };\n        }\n    }\n    list(src) {\n        let cap = this.rules.block.list.exec(src);\n        if (cap) {\n            let bull = cap[1].trim();\n            const isordered = bull.length > 1;\n            const list = {\n                type: 'list',\n                raw: '',\n                ordered: isordered,\n                start: isordered ? +bull.slice(0, -1) : '',\n                loose: false,\n                items: []\n            };\n            bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n            if (this.options.pedantic) {\n                bull = isordered ? bull : '[*+-]';\n            }\n            // Get next list item\n            const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n            let raw = '';\n            let itemContents = '';\n            let endsWithBlankLine = false;\n            // Check if current bullet point can start a new List Item\n            while (src) {\n                let endEarly = false;\n                if (!(cap = itemRegex.exec(src))) {\n                    break;\n                }\n                if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n                    break;\n                }\n                raw = cap[0];\n                src = src.substring(raw.length);\n                let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n                let nextLine = src.split('\\n', 1)[0];\n                let indent = 0;\n                if (this.options.pedantic) {\n                    indent = 2;\n                    itemContents = line.trimLeft();\n                }\n                else {\n                    indent = cap[2].search(/[^ ]/); // Find first non-space char\n                    indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n                    itemContents = line.slice(indent);\n                    indent += cap[1].length;\n                }\n                let blankLine = false;\n                if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n                    raw += nextLine + '\\n';\n                    src = src.substring(nextLine.length + 1);\n                    endEarly = true;\n                }\n                if (!endEarly) {\n                    const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n                    const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n                    const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n                    const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n                    // Check if following lines should be included in List Item\n                    while (src) {\n                        const rawLine = src.split('\\n', 1)[0];\n                        nextLine = rawLine;\n                        // Re-align to follow commonmark nesting rules\n                        if (this.options.pedantic) {\n                            nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, '  ');\n                        }\n                        // End list item if found code fences\n                        if (fencesBeginRegex.test(nextLine)) {\n                            break;\n                        }\n                        // End list item if found start of new heading\n                        if (headingBeginRegex.test(nextLine)) {\n                            break;\n                        }\n                        // End list item if found start of new bullet\n                        if (nextBulletRegex.test(nextLine)) {\n                            break;\n                        }\n                        // Horizontal rule found\n                        if (hrRegex.test(src)) {\n                            break;\n                        }\n                        if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n                            itemContents += '\\n' + nextLine.slice(indent);\n                        }\n                        else {\n                            // not enough indentation\n                            if (blankLine) {\n                                break;\n                            }\n                            // paragraph continuation unless last line was a different block level element\n                            if (line.search(/[^ ]/) >= 4) { // indented code block\n                                break;\n                            }\n                            if (fencesBeginRegex.test(line)) {\n                                break;\n                            }\n                            if (headingBeginRegex.test(line)) {\n                                break;\n                            }\n                            if (hrRegex.test(line)) {\n                                break;\n                            }\n                            itemContents += '\\n' + nextLine;\n                        }\n                        if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n                            blankLine = true;\n                        }\n                        raw += rawLine + '\\n';\n                        src = src.substring(rawLine.length + 1);\n                        line = nextLine.slice(indent);\n                    }\n                }\n                if (!list.loose) {\n                    // If the previous item ended with a blank line, the list is loose\n                    if (endsWithBlankLine) {\n                        list.loose = true;\n                    }\n                    else if (/\\n *\\n *$/.test(raw)) {\n                        endsWithBlankLine = true;\n                    }\n                }\n                let istask = null;\n                let ischecked;\n                // Check for task list items\n                if (this.options.gfm) {\n                    istask = /^\\[[ xX]\\] /.exec(itemContents);\n                    if (istask) {\n                        ischecked = istask[0] !== '[ ] ';\n                        itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n                    }\n                }\n                list.items.push({\n                    type: 'list_item',\n                    raw,\n                    task: !!istask,\n                    checked: ischecked,\n                    loose: false,\n                    text: itemContents,\n                    tokens: []\n                });\n                list.raw += raw;\n            }\n            // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n            list.items[list.items.length - 1].raw = raw.trimRight();\n            list.items[list.items.length - 1].text = itemContents.trimRight();\n            list.raw = list.raw.trimRight();\n            // Item child tokens handled here at end because we needed to have the final item to trim it first\n            for (let i = 0; i < list.items.length; i++) {\n                this.lexer.state.top = false;\n                list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n                if (!list.loose) {\n                    // Check if list should be loose\n                    const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n                    const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n                    list.loose = hasMultipleLineBreaks;\n                }\n            }\n            // Set all items to loose if list is loose\n            if (list.loose) {\n                for (let i = 0; i < list.items.length; i++) {\n                    list.items[i].loose = true;\n                }\n            }\n            return list;\n        }\n    }\n    html(src) {\n        const cap = this.rules.block.html.exec(src);\n        if (cap) {\n            const token = {\n                type: 'html',\n                block: true,\n                raw: cap[0],\n                pre: !this.options.sanitizer\n                    && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n                text: cap[0]\n            };\n            if (this.options.sanitize) {\n                const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n                const paragraph = token;\n                paragraph.type = 'paragraph';\n                paragraph.text = text;\n                paragraph.tokens = this.lexer.inline(text);\n            }\n            return token;\n        }\n    }\n    def(src) {\n        const cap = this.rules.block.def.exec(src);\n        if (cap) {\n            const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n            const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n            const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n            return {\n                type: 'def',\n                tag,\n                raw: cap[0],\n                href,\n                title\n            };\n        }\n    }\n    table(src) {\n        const cap = this.rules.block.table.exec(src);\n        if (cap) {\n            const item = {\n                type: 'table',\n                raw: cap[0],\n                header: splitCells(cap[1]).map(c => {\n                    return { text: c, tokens: [] };\n                }),\n                align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n                rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n            };\n            if (item.header.length === item.align.length) {\n                let l = item.align.length;\n                let i, j, k, row;\n                for (i = 0; i < l; i++) {\n                    const align = item.align[i];\n                    if (align) {\n                        if (/^ *-+: *$/.test(align)) {\n                            item.align[i] = 'right';\n                        }\n                        else if (/^ *:-+: *$/.test(align)) {\n                            item.align[i] = 'center';\n                        }\n                        else if (/^ *:-+ *$/.test(align)) {\n                            item.align[i] = 'left';\n                        }\n                        else {\n                            item.align[i] = null;\n                        }\n                    }\n                }\n                l = item.rows.length;\n                for (i = 0; i < l; i++) {\n                    item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => {\n                        return { text: c, tokens: [] };\n                    });\n                }\n                // parse child tokens inside headers and cells\n                // header child tokens\n                l = item.header.length;\n                for (j = 0; j < l; j++) {\n                    item.header[j].tokens = this.lexer.inline(item.header[j].text);\n                }\n                // cell child tokens\n                l = item.rows.length;\n                for (j = 0; j < l; j++) {\n                    row = item.rows[j];\n                    for (k = 0; k < row.length; k++) {\n                        row[k].tokens = this.lexer.inline(row[k].text);\n                    }\n                }\n                return item;\n            }\n        }\n    }\n    lheading(src) {\n        const cap = this.rules.block.lheading.exec(src);\n        if (cap) {\n            return {\n                type: 'heading',\n                raw: cap[0],\n                depth: cap[2].charAt(0) === '=' ? 1 : 2,\n                text: cap[1],\n                tokens: this.lexer.inline(cap[1])\n            };\n        }\n    }\n    paragraph(src) {\n        const cap = this.rules.block.paragraph.exec(src);\n        if (cap) {\n            const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n                ? cap[1].slice(0, -1)\n                : cap[1];\n            return {\n                type: 'paragraph',\n                raw: cap[0],\n                text,\n                tokens: this.lexer.inline(text)\n            };\n        }\n    }\n    text(src) {\n        const cap = this.rules.block.text.exec(src);\n        if (cap) {\n            return {\n                type: 'text',\n                raw: cap[0],\n                text: cap[0],\n                tokens: this.lexer.inline(cap[0])\n            };\n        }\n    }\n    escape(src) {\n        const cap = this.rules.inline.escape.exec(src);\n        if (cap) {\n            return {\n                type: 'escape',\n                raw: cap[0],\n                text: escape(cap[1])\n            };\n        }\n    }\n    tag(src) {\n        const cap = this.rules.inline.tag.exec(src);\n        if (cap) {\n            if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n                this.lexer.state.inLink = true;\n            }\n            else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n                this.lexer.state.inLink = false;\n            }\n            if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n                this.lexer.state.inRawBlock = true;\n            }\n            else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n                this.lexer.state.inRawBlock = false;\n            }\n            return {\n                type: this.options.sanitize\n                    ? 'text'\n                    : 'html',\n                raw: cap[0],\n                inLink: this.lexer.state.inLink,\n                inRawBlock: this.lexer.state.inRawBlock,\n                block: false,\n                text: this.options.sanitize\n                    ? (this.options.sanitizer\n                        ? this.options.sanitizer(cap[0])\n                        : escape(cap[0]))\n                    : cap[0]\n            };\n        }\n    }\n    link(src) {\n        const cap = this.rules.inline.link.exec(src);\n        if (cap) {\n            const trimmedUrl = cap[2].trim();\n            if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n                // commonmark requires matching angle brackets\n                if (!(/>$/.test(trimmedUrl))) {\n                    return;\n                }\n                // ending angle bracket cannot be escaped\n                const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n                if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n                    return;\n                }\n            }\n            else {\n                // find closing parenthesis\n                const lastParenIndex = findClosingBracket(cap[2], '()');\n                if (lastParenIndex > -1) {\n                    const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n                    const linkLen = start + cap[1].length + lastParenIndex;\n                    cap[2] = cap[2].substring(0, lastParenIndex);\n                    cap[0] = cap[0].substring(0, linkLen).trim();\n                    cap[3] = '';\n                }\n            }\n            let href = cap[2];\n            let title = '';\n            if (this.options.pedantic) {\n                // split pedantic href and title\n                const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n                if (link) {\n                    href = link[1];\n                    title = link[3];\n                }\n            }\n            else {\n                title = cap[3] ? cap[3].slice(1, -1) : '';\n            }\n            href = href.trim();\n            if (/^</.test(href)) {\n                if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n                    // pedantic allows starting angle bracket without ending angle bracket\n                    href = href.slice(1);\n                }\n                else {\n                    href = href.slice(1, -1);\n                }\n            }\n            return outputLink(cap, {\n                href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n                title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n            }, cap[0], this.lexer);\n        }\n    }\n    reflink(src, links) {\n        let cap;\n        if ((cap = this.rules.inline.reflink.exec(src))\n            || (cap = this.rules.inline.nolink.exec(src))) {\n            let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n            link = links[link.toLowerCase()];\n            if (!link) {\n                const text = cap[0].charAt(0);\n                return {\n                    type: 'text',\n                    raw: text,\n                    text\n                };\n            }\n            return outputLink(cap, link, cap[0], this.lexer);\n        }\n    }\n    emStrong(src, maskedSrc, prevChar = '') {\n        let match = this.rules.inline.emStrong.lDelim.exec(src);\n        if (!match)\n            return;\n        // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n        if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n            return;\n        const nextChar = match[1] || match[2] || '';\n        if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n            // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n            const lLength = [...match[0]].length - 1;\n            let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n            const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n            endReg.lastIndex = 0;\n            // Clip maskedSrc to same section of string as src (move to lexer?)\n            maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n            while ((match = endReg.exec(maskedSrc)) != null) {\n                rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n                if (!rDelim)\n                    continue; // skip single * in __abc*abc__\n                rLength = [...rDelim].length;\n                if (match[3] || match[4]) { // found another Left Delim\n                    delimTotal += rLength;\n                    continue;\n                }\n                else if (match[5] || match[6]) { // either Left or Right Delim\n                    if (lLength % 3 && !((lLength + rLength) % 3)) {\n                        midDelimTotal += rLength;\n                        continue; // CommonMark Emphasis Rules 9-10\n                    }\n                }\n                delimTotal -= rLength;\n                if (delimTotal > 0)\n                    continue; // Haven't found enough closing delimiters\n                // Remove extra characters. *a*** -> *a*\n                rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n                const raw = [...src].slice(0, lLength + match.index + rLength + 1).join('');\n                // Create `em` if smallest delimiter has odd char count. *a***\n                if (Math.min(lLength, rLength) % 2) {\n                    const text = raw.slice(1, -1);\n                    return {\n                        type: 'em',\n                        raw,\n                        text,\n                        tokens: this.lexer.inlineTokens(text)\n                    };\n                }\n                // Create 'strong' if smallest delimiter has even char count. **a***\n                const text = raw.slice(2, -2);\n                return {\n                    type: 'strong',\n                    raw,\n                    text,\n                    tokens: this.lexer.inlineTokens(text)\n                };\n            }\n        }\n    }\n    codespan(src) {\n        const cap = this.rules.inline.code.exec(src);\n        if (cap) {\n            let text = cap[2].replace(/\\n/g, ' ');\n            const hasNonSpaceChars = /[^ ]/.test(text);\n            const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n            if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n                text = text.substring(1, text.length - 1);\n            }\n            text = escape(text, true);\n            return {\n                type: 'codespan',\n                raw: cap[0],\n                text\n            };\n        }\n    }\n    br(src) {\n        const cap = this.rules.inline.br.exec(src);\n        if (cap) {\n            return {\n                type: 'br',\n                raw: cap[0]\n            };\n        }\n    }\n    del(src) {\n        const cap = this.rules.inline.del.exec(src);\n        if (cap) {\n            return {\n                type: 'del',\n                raw: cap[0],\n                text: cap[2],\n                tokens: this.lexer.inlineTokens(cap[2])\n            };\n        }\n    }\n    autolink(src, mangle) {\n        const cap = this.rules.inline.autolink.exec(src);\n        if (cap) {\n            let text, href;\n            if (cap[2] === '@') {\n                text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n                href = 'mailto:' + text;\n            }\n            else {\n                text = escape(cap[1]);\n                href = text;\n            }\n            return {\n                type: 'link',\n                raw: cap[0],\n                text,\n                href,\n                tokens: [\n                    {\n                        type: 'text',\n                        raw: text,\n                        text\n                    }\n                ]\n            };\n        }\n    }\n    url(src, mangle) {\n        let cap;\n        if (cap = this.rules.inline.url.exec(src)) {\n            let text, href;\n            if (cap[2] === '@') {\n                text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n                href = 'mailto:' + text;\n            }\n            else {\n                // do extended autolink path validation\n                let prevCapZero;\n                do {\n                    prevCapZero = cap[0];\n                    cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n                } while (prevCapZero !== cap[0]);\n                text = escape(cap[0]);\n                if (cap[1] === 'www.') {\n                    href = 'http://' + cap[0];\n                }\n                else {\n                    href = cap[0];\n                }\n            }\n            return {\n                type: 'link',\n                raw: cap[0],\n                text,\n                href,\n                tokens: [\n                    {\n                        type: 'text',\n                        raw: text,\n                        text\n                    }\n                ]\n            };\n        }\n    }\n    inlineText(src, smartypants) {\n        const cap = this.rules.inline.text.exec(src);\n        if (cap) {\n            let text;\n            if (this.lexer.state.inRawBlock) {\n                text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n            }\n            else {\n                text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n            }\n            return {\n                type: 'text',\n                raw: cap[0],\n                text\n            };\n        }\n    }\n}\n", "import { noopTest, edit } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block = {\n    newline: /^(?: *(?:\\n|$))+/,\n    code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n    fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n    hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n    heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n    blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n    list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n    html: '^ {0,3}(?:' // optional indentation\n        + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n        + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n        + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n        + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n        + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n        + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n        + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n        + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n        + ')',\n    def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n    table: noopTest,\n    lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n    // regex template, placeholders will be replaced according to different paragraph\n    // interruption rules of commonmark and the original markdown spec:\n    _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n    text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n    .replace('label', block._label)\n    .replace('title', block._title)\n    .getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n    .replace('bull', block.bullet)\n    .getRegex();\nblock.list = edit(block.list)\n    .replace(/bull/g, block.bullet)\n    .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n    .replace('def', '\\\\n+(?=' + block.def.source + ')')\n    .getRegex();\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n    + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n    + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n    + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n    + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n    + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n    .replace('comment', block._comment)\n    .replace('tag', block._tag)\n    .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n    .getRegex();\nblock.lheading = edit(block.lheading)\n    .replace(/bull/g, block.bullet) // lists can interrupt\n    .getRegex();\nblock.paragraph = edit(block._paragraph)\n    .replace('hr', block.hr)\n    .replace('heading', ' {0,3}#{1,6} ')\n    .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n    .replace('|table', '')\n    .replace('blockquote', ' {0,3}>')\n    .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n    .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n    .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n    .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n    .getRegex();\nblock.blockquote = edit(block.blockquote)\n    .replace('paragraph', block.paragraph)\n    .getRegex();\n/**\n * Normal Block Grammar\n */\nblock.normal = { ...block };\n/**\n * GFM Block Grammar\n */\nblock.gfm = {\n    ...block.normal,\n    table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n        + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n        + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\nblock.gfm.table = edit(block.gfm.table)\n    .replace('hr', block.hr)\n    .replace('heading', ' {0,3}#{1,6} ')\n    .replace('blockquote', ' {0,3}>')\n    .replace('code', ' {4}[^\\\\n]')\n    .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n    .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n    .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n    .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n    .getRegex();\nblock.gfm.paragraph = edit(block._paragraph)\n    .replace('hr', block.hr)\n    .replace('heading', ' {0,3}#{1,6} ')\n    .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n    .replace('table', block.gfm.table) // interrupt paragraphs with table\n    .replace('blockquote', ' {0,3}>')\n    .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n    .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n    .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n    .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n    .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nblock.pedantic = {\n    ...block.normal,\n    html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n        + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n        + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n        .replace('comment', block._comment)\n        .replace(/tag/g, '(?!(?:'\n        + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n        + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n        + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n        .getRegex(),\n    def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n    heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n    fences: noopTest,\n    lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n    paragraph: edit(block.normal._paragraph)\n        .replace('hr', block.hr)\n        .replace('heading', ' *#{1,6} *[^\\n]')\n        .replace('lheading', block.lheading)\n        .replace('blockquote', ' {0,3}>')\n        .replace('|fences', '')\n        .replace('|list', '')\n        .replace('|html', '')\n        .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline = {\n    escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n    autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n    url: noopTest,\n    tag: '^comment'\n        + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n        + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n        + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n        + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n        + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n    link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n    reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n    nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n    reflinkSearch: 'reflink|nolink(?!\\\\()',\n    emStrong: {\n        lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n        //         (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left.  (5) and (6) can be either Left or Right.\n        //         | Skip orphan inside strong      | Consume to delim | (1) #***              | (2) a***#, a***                    | (3) #***a, ***a                  | (4) ***#                 | (5) #***#                         | (6) a***a\n        rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n        rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n    },\n    code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n    br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n    del: noopTest,\n    text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n    punctuation: /^((?![*_])[\\spunctuation])/\n};\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\ninline._punctuation = '\\\\p{P}$+<=>`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u')\n    .replace(/punct/g, inline._punctuation)\n    .getRegex();\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu')\n    .replace(/punct/g, inline._punctuation)\n    .getRegex();\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu')\n    .replace(/punct/g, inline._punctuation)\n    .getRegex();\ninline.anyPunctuation = edit(inline.anyPunctuation, 'gu')\n    .replace(/punct/g, inline._punctuation)\n    .getRegex();\ninline._escapes = edit(inline._escapes, 'gu')\n    .replace(/punct/g, inline._punctuation)\n    .getRegex();\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n    .replace('scheme', inline._scheme)\n    .replace('email', inline._email)\n    .getRegex();\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\ninline.tag = edit(inline.tag)\n    .replace('comment', inline._comment)\n    .replace('attribute', inline._attribute)\n    .getRegex();\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\ninline.link = edit(inline.link)\n    .replace('label', inline._label)\n    .replace('href', inline._href)\n    .replace('title', inline._title)\n    .getRegex();\ninline.reflink = edit(inline.reflink)\n    .replace('label', inline._label)\n    .replace('ref', block._label)\n    .getRegex();\ninline.nolink = edit(inline.nolink)\n    .replace('ref', block._label)\n    .getRegex();\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n    .replace('reflink', inline.reflink)\n    .replace('nolink', inline.nolink)\n    .getRegex();\n/**\n * Normal Inline Grammar\n */\ninline.normal = { ...inline };\n/**\n * Pedantic Inline Grammar\n */\ninline.pedantic = {\n    ...inline.normal,\n    strong: {\n        start: /^__|\\*\\*/,\n        middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n        endAst: /\\*\\*(?!\\*)/g,\n        endUnd: /__(?!_)/g\n    },\n    em: {\n        start: /^_|\\*/,\n        middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n        endAst: /\\*(?!\\*)/g,\n        endUnd: /_(?!_)/g\n    },\n    link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n        .replace('label', inline._label)\n        .getRegex(),\n    reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n        .replace('label', inline._label)\n        .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\ninline.gfm = {\n    ...inline.normal,\n    escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n    _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n    url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n    _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n    del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n    text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\ninline.gfm.url = edit(inline.gfm.url, 'i')\n    .replace('email', inline.gfm._extended_email)\n    .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\ninline.breaks = {\n    ...inline.gfm,\n    br: edit(inline.br).replace('{2,}', '*').getRegex(),\n    text: edit(inline.gfm.text)\n        .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n        .replace(/\\{2,\\}/g, '*')\n        .getRegex()\n};\n", "import { _Tokenizer } from './Tokenizer.ts';\nimport { _defaults } from './defaults.ts';\nimport { block, inline } from './rules.ts';\n/**\n * smartypants text replacement\n */\nfunction smartypants(text) {\n    return text\n        // em-dashes\n        .replace(/---/g, '\\u2014')\n        // en-dashes\n        .replace(/--/g, '\\u2013')\n        // opening singles\n        .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n        // closing singles & apostrophes\n        .replace(/'/g, '\\u2019')\n        // opening doubles\n        .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n        // closing doubles\n        .replace(/\"/g, '\\u201d')\n        // ellipses\n        .replace(/\\.{3}/g, '\\u2026');\n}\n/**\n * mangle email addresses\n */\nfunction mangle(text) {\n    let out = '';\n    for (let i = 0; i < text.length; i++) {\n        const ch = Math.random() > 0.5\n            ? 'x' + text.charCodeAt(i).toString(16)\n            : text.charCodeAt(i).toString();\n        out += '&#' + ch + ';';\n    }\n    return out;\n}\n/**\n * Block Lexer\n */\nexport class _Lexer {\n    tokens;\n    options;\n    state;\n    tokenizer;\n    inlineQueue;\n    constructor(options) {\n        // TokenList cannot be created in one go\n        // @ts-expect-error\n        this.tokens = [];\n        this.tokens.links = Object.create(null);\n        this.options = options || _defaults;\n        this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n        this.tokenizer = this.options.tokenizer;\n        this.tokenizer.options = this.options;\n        this.tokenizer.lexer = this;\n        this.inlineQueue = [];\n        this.state = {\n            inLink: false,\n            inRawBlock: false,\n            top: true\n        };\n        const rules = {\n            block: block.normal,\n            inline: inline.normal\n        };\n        if (this.options.pedantic) {\n            rules.block = block.pedantic;\n            rules.inline = inline.pedantic;\n        }\n        else if (this.options.gfm) {\n            rules.block = block.gfm;\n            if (this.options.breaks) {\n                rules.inline = inline.breaks;\n            }\n            else {\n                rules.inline = inline.gfm;\n            }\n        }\n        this.tokenizer.rules = rules;\n    }\n    /**\n     * Expose Rules\n     */\n    static get rules() {\n        return {\n            block,\n            inline\n        };\n    }\n    /**\n     * Static Lex Method\n     */\n    static lex(src, options) {\n        const lexer = new _Lexer(options);\n        return lexer.lex(src);\n    }\n    /**\n     * Static Lex Inline Method\n     */\n    static lexInline(src, options) {\n        const lexer = new _Lexer(options);\n        return lexer.inlineTokens(src);\n    }\n    /**\n     * Preprocessing\n     */\n    lex(src) {\n        src = src\n            .replace(/\\r\\n|\\r/g, '\\n');\n        this.blockTokens(src, this.tokens);\n        let next;\n        while (next = this.inlineQueue.shift()) {\n            this.inlineTokens(next.src, next.tokens);\n        }\n        return this.tokens;\n    }\n    blockTokens(src, tokens = []) {\n        if (this.options.pedantic) {\n            src = src.replace(/\\t/g, '    ').replace(/^ +$/gm, '');\n        }\n        else {\n            src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n                return leading + '    '.repeat(tabs.length);\n            });\n        }\n        let token;\n        let lastToken;\n        let cutSrc;\n        let lastParagraphClipped;\n        while (src) {\n            if (this.options.extensions\n                && this.options.extensions.block\n                && this.options.extensions.block.some((extTokenizer) => {\n                    if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n                        src = src.substring(token.raw.length);\n                        tokens.push(token);\n                        return true;\n                    }\n                    return false;\n                })) {\n                continue;\n            }\n            // newline\n            if (token = this.tokenizer.space(src)) {\n                src = src.substring(token.raw.length);\n                if (token.raw.length === 1 && tokens.length > 0) {\n                    // if there's a single \\n as a spacer, it's terminating the last line,\n                    // so move it there so that we don't get unecessary paragraph tags\n                    tokens[tokens.length - 1].raw += '\\n';\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // code\n            if (token = this.tokenizer.code(src)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                // An indented code block cannot interrupt a paragraph.\n                if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.text;\n                    this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // fences\n            if (token = this.tokenizer.fences(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // heading\n            if (token = this.tokenizer.heading(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // hr\n            if (token = this.tokenizer.hr(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // blockquote\n            if (token = this.tokenizer.blockquote(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // list\n            if (token = this.tokenizer.list(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // html\n            if (token = this.tokenizer.html(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // def\n            if (token = this.tokenizer.def(src)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.raw;\n                    this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n                }\n                else if (!this.tokens.links[token.tag]) {\n                    this.tokens.links[token.tag] = {\n                        href: token.href,\n                        title: token.title\n                    };\n                }\n                continue;\n            }\n            // table (gfm)\n            if (token = this.tokenizer.table(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // lheading\n            if (token = this.tokenizer.lheading(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // top-level paragraph\n            // prevent paragraph consuming extensions by clipping 'src' to extension start\n            cutSrc = src;\n            if (this.options.extensions && this.options.extensions.startBlock) {\n                let startIndex = Infinity;\n                const tempSrc = src.slice(1);\n                let tempStart;\n                this.options.extensions.startBlock.forEach((getStartIndex) => {\n                    tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n                    if (typeof tempStart === 'number' && tempStart >= 0) {\n                        startIndex = Math.min(startIndex, tempStart);\n                    }\n                });\n                if (startIndex < Infinity && startIndex >= 0) {\n                    cutSrc = src.substring(0, startIndex + 1);\n                }\n            }\n            if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n                lastToken = tokens[tokens.length - 1];\n                if (lastParagraphClipped && lastToken.type === 'paragraph') {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.text;\n                    this.inlineQueue.pop();\n                    this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                lastParagraphClipped = (cutSrc.length !== src.length);\n                src = src.substring(token.raw.length);\n                continue;\n            }\n            // text\n            if (token = this.tokenizer.text(src)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && lastToken.type === 'text') {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.text;\n                    this.inlineQueue.pop();\n                    this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            if (src) {\n                const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n                if (this.options.silent) {\n                    console.error(errMsg);\n                    break;\n                }\n                else {\n                    throw new Error(errMsg);\n                }\n            }\n        }\n        this.state.top = true;\n        return tokens;\n    }\n    inline(src, tokens = []) {\n        this.inlineQueue.push({ src, tokens });\n        return tokens;\n    }\n    /**\n     * Lexing/Compiling\n     */\n    inlineTokens(src, tokens = []) {\n        let token, lastToken, cutSrc;\n        // String with links masked to avoid interference with em and strong\n        let maskedSrc = src;\n        let match;\n        let keepPrevChar, prevChar;\n        // Mask out reflinks\n        if (this.tokens.links) {\n            const links = Object.keys(this.tokens.links);\n            if (links.length > 0) {\n                while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n                    if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n                        maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n                    }\n                }\n            }\n        }\n        // Mask out other blocks\n        while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n            maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n        }\n        // Mask out escaped characters\n        while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n            maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n        }\n        while (src) {\n            if (!keepPrevChar) {\n                prevChar = '';\n            }\n            keepPrevChar = false;\n            // extensions\n            if (this.options.extensions\n                && this.options.extensions.inline\n                && this.options.extensions.inline.some((extTokenizer) => {\n                    if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n                        src = src.substring(token.raw.length);\n                        tokens.push(token);\n                        return true;\n                    }\n                    return false;\n                })) {\n                continue;\n            }\n            // escape\n            if (token = this.tokenizer.escape(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // tag\n            if (token = this.tokenizer.tag(src)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n                    lastToken.raw += token.raw;\n                    lastToken.text += token.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // link\n            if (token = this.tokenizer.link(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // reflink, nolink\n            if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n                    lastToken.raw += token.raw;\n                    lastToken.text += token.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // em & strong\n            if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // code\n            if (token = this.tokenizer.codespan(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // br\n            if (token = this.tokenizer.br(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // del (gfm)\n            if (token = this.tokenizer.del(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // autolink\n            if (token = this.tokenizer.autolink(src, mangle)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // url (gfm)\n            if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // text\n            // prevent inlineText consuming extensions by clipping 'src' to extension start\n            cutSrc = src;\n            if (this.options.extensions && this.options.extensions.startInline) {\n                let startIndex = Infinity;\n                const tempSrc = src.slice(1);\n                let tempStart;\n                this.options.extensions.startInline.forEach((getStartIndex) => {\n                    tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n                    if (typeof tempStart === 'number' && tempStart >= 0) {\n                        startIndex = Math.min(startIndex, tempStart);\n                    }\n                });\n                if (startIndex < Infinity && startIndex >= 0) {\n                    cutSrc = src.substring(0, startIndex + 1);\n                }\n            }\n            if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n                src = src.substring(token.raw.length);\n                if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n                    prevChar = token.raw.slice(-1);\n                }\n                keepPrevChar = true;\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && lastToken.type === 'text') {\n                    lastToken.raw += token.raw;\n                    lastToken.text += token.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            if (src) {\n                const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n                if (this.options.silent) {\n                    console.error(errMsg);\n                    break;\n                }\n                else {\n                    throw new Error(errMsg);\n                }\n            }\n        }\n        return tokens;\n    }\n}\n", "import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n    options;\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    code(code, infostring, escaped) {\n        const lang = (infostring || '').match(/^\\S*/)?.[0];\n        if (this.options.highlight) {\n            const out = this.options.highlight(code, lang);\n            if (out != null && out !== code) {\n                escaped = true;\n                code = out;\n            }\n        }\n        code = code.replace(/\\n$/, '') + '\\n';\n        if (!lang) {\n            return '<pre><code>'\n                + (escaped ? code : escape(code, true))\n                + '</code></pre>\\n';\n        }\n        return '<pre><code class=\"'\n            + this.options.langPrefix\n            + escape(lang)\n            + '\">'\n            + (escaped ? code : escape(code, true))\n            + '</code></pre>\\n';\n    }\n    blockquote(quote) {\n        return `<blockquote>\\n${quote}</blockquote>\\n`;\n    }\n    html(html, block) {\n        return html;\n    }\n    heading(text, level, raw, slugger) {\n        if (this.options.headerIds) {\n            const id = this.options.headerPrefix + slugger.slug(raw);\n            return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n        }\n        // ignore IDs\n        return `<h${level}>${text}</h${level}>\\n`;\n    }\n    hr() {\n        return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n    }\n    list(body, ordered, start) {\n        const type = ordered ? 'ol' : 'ul';\n        const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n        return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n    }\n    listitem(text, task, checked) {\n        return `<li>${text}</li>\\n`;\n    }\n    checkbox(checked) {\n        return '<input '\n            + (checked ? 'checked=\"\" ' : '')\n            + 'disabled=\"\" type=\"checkbox\"'\n            + (this.options.xhtml ? ' /' : '')\n            + '> ';\n    }\n    paragraph(text) {\n        return `<p>${text}</p>\\n`;\n    }\n    table(header, body) {\n        if (body)\n            body = `<tbody>${body}</tbody>`;\n        return '<table>\\n'\n            + '<thead>\\n'\n            + header\n            + '</thead>\\n'\n            + body\n            + '</table>\\n';\n    }\n    tablerow(content) {\n        return `<tr>\\n${content}</tr>\\n`;\n    }\n    tablecell(content, flags) {\n        const type = flags.header ? 'th' : 'td';\n        const tag = flags.align\n            ? `<${type} align=\"${flags.align}\">`\n            : `<${type}>`;\n        return tag + content + `</${type}>\\n`;\n    }\n    /**\n     * span level renderer\n     */\n    strong(text) {\n        return `<strong>${text}</strong>`;\n    }\n    em(text) {\n        return `<em>${text}</em>`;\n    }\n    codespan(text) {\n        return `<code>${text}</code>`;\n    }\n    br() {\n        return this.options.xhtml ? '<br/>' : '<br>';\n    }\n    del(text) {\n        return `<del>${text}</del>`;\n    }\n    link(href, title, text) {\n        const cleanHref = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n        if (cleanHref === null) {\n            return text;\n        }\n        href = cleanHref;\n        let out = '<a href=\"' + href + '\"';\n        if (title) {\n            out += ' title=\"' + title + '\"';\n        }\n        out += '>' + text + '</a>';\n        return out;\n    }\n    image(href, title, text) {\n        const cleanHref = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n        if (cleanHref === null) {\n            return text;\n        }\n        href = cleanHref;\n        let out = `<img src=\"${href}\" alt=\"${text}\"`;\n        if (title) {\n            out += ` title=\"${title}\"`;\n        }\n        out += this.options.xhtml ? '/>' : '>';\n        return out;\n    }\n    text(text) {\n        return text;\n    }\n}\n", "/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n    // no need for block level renderers\n    strong(text) {\n        return text;\n    }\n    em(text) {\n        return text;\n    }\n    codespan(text) {\n        return text;\n    }\n    del(text) {\n        return text;\n    }\n    html(text) {\n        return text;\n    }\n    text(text) {\n        return text;\n    }\n    link(href, title, text) {\n        return '' + text;\n    }\n    image(href, title, text) {\n        return '' + text;\n    }\n    br() {\n        return '';\n    }\n}\n", "/**\n * Slugger generates header id\n */\nexport class _Slugger {\n    seen;\n    constructor() {\n        this.seen = {};\n    }\n    serialize(value) {\n        return value\n            .toLowerCase()\n            .trim()\n            // remove html tags\n            .replace(/<[!\\/a-z].*?>/ig, '')\n            // remove unwanted chars\n            .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n            .replace(/\\s/g, '-');\n    }\n    /**\n     * Finds the next safe (unique) slug to use\n     */\n    getNextSafeSlug(originalSlug, isDryRun) {\n        let slug = originalSlug;\n        let occurenceAccumulator = 0;\n        if (this.seen.hasOwnProperty(slug)) {\n            occurenceAccumulator = this.seen[originalSlug];\n            do {\n                occurenceAccumulator++;\n                slug = originalSlug + '-' + occurenceAccumulator;\n            } while (this.seen.hasOwnProperty(slug));\n        }\n        if (!isDryRun) {\n            this.seen[originalSlug] = occurenceAccumulator;\n            this.seen[slug] = 0;\n        }\n        return slug;\n    }\n    /**\n     * Convert string to unique id\n     */\n    slug(value, options = {}) {\n        const slug = this.serialize(value);\n        return this.getNextSafeSlug(slug, options.dryrun);\n    }\n}\n", "import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport { unescape } from './helpers.ts';\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n    options;\n    renderer;\n    textRenderer;\n    slugger;\n    constructor(options) {\n        this.options = options || _defaults;\n        this.options.renderer = this.options.renderer || new _Renderer();\n        this.renderer = this.options.renderer;\n        this.renderer.options = this.options;\n        this.textRenderer = new _TextRenderer();\n        this.slugger = new _Slugger();\n    }\n    /**\n     * Static Parse Method\n     */\n    static parse(tokens, options) {\n        const parser = new _Parser(options);\n        return parser.parse(tokens);\n    }\n    /**\n     * Static Parse Inline Method\n     */\n    static parseInline(tokens, options) {\n        const parser = new _Parser(options);\n        return parser.parseInline(tokens);\n    }\n    /**\n     * Parse Loop\n     */\n    parse(tokens, top = true) {\n        let out = '';\n        for (let i = 0; i < tokens.length; i++) {\n            const token = tokens[i];\n            // Run any renderer extensions\n            if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n                const genericToken = token;\n                const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n                if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n                    out += ret || '';\n                    continue;\n                }\n            }\n            switch (token.type) {\n                case 'space': {\n                    continue;\n                }\n                case 'hr': {\n                    out += this.renderer.hr();\n                    continue;\n                }\n                case 'heading': {\n                    const headingToken = token;\n                    out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)), this.slugger);\n                    continue;\n                }\n                case 'code': {\n                    const codeToken = token;\n                    out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n                    continue;\n                }\n                case 'table': {\n                    const tableToken = token;\n                    let header = '';\n                    // header\n                    let cell = '';\n                    for (let j = 0; j < tableToken.header.length; j++) {\n                        cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n                    }\n                    header += this.renderer.tablerow(cell);\n                    let body = '';\n                    for (let j = 0; j < tableToken.rows.length; j++) {\n                        const row = tableToken.rows[j];\n                        cell = '';\n                        for (let k = 0; k < row.length; k++) {\n                            cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n                        }\n                        body += this.renderer.tablerow(cell);\n                    }\n                    out += this.renderer.table(header, body);\n                    continue;\n                }\n                case 'blockquote': {\n                    const blockquoteToken = token;\n                    const body = this.parse(blockquoteToken.tokens);\n                    out += this.renderer.blockquote(body);\n                    continue;\n                }\n                case 'list': {\n                    const listToken = token;\n                    const ordered = listToken.ordered;\n                    const start = listToken.start;\n                    const loose = listToken.loose;\n                    let body = '';\n                    for (let j = 0; j < listToken.items.length; j++) {\n                        const item = listToken.items[j];\n                        const checked = item.checked;\n                        const task = item.task;\n                        let itemBody = '';\n                        if (item.task) {\n                            const checkbox = this.renderer.checkbox(!!checked);\n                            if (loose) {\n                                if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n                                    item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n                                    if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n                                        item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n                                    }\n                                }\n                                else {\n                                    item.tokens.unshift({\n                                        type: 'text',\n                                        text: checkbox\n                                    });\n                                }\n                            }\n                            else {\n                                itemBody += checkbox;\n                            }\n                        }\n                        itemBody += this.parse(item.tokens, loose);\n                        body += this.renderer.listitem(itemBody, task, !!checked);\n                    }\n                    out += this.renderer.list(body, ordered, start);\n                    continue;\n                }\n                case 'html': {\n                    const htmlToken = token;\n                    out += this.renderer.html(htmlToken.text, htmlToken.block);\n                    continue;\n                }\n                case 'paragraph': {\n                    const paragraphToken = token;\n                    out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n                    continue;\n                }\n                case 'text': {\n                    let textToken = token;\n                    let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n                    while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n                        textToken = tokens[++i];\n                        body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n                    }\n                    out += top ? this.renderer.paragraph(body) : body;\n                    continue;\n                }\n                default: {\n                    const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n                    if (this.options.silent) {\n                        console.error(errMsg);\n                        return '';\n                    }\n                    else {\n                        throw new Error(errMsg);\n                    }\n                }\n            }\n        }\n        return out;\n    }\n    /**\n     * Parse Inline Tokens\n     */\n    parseInline(tokens, renderer) {\n        renderer = renderer || this.renderer;\n        let out = '';\n        for (let i = 0; i < tokens.length; i++) {\n            const token = tokens[i];\n            // Run any renderer extensions\n            if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n                const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n                if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n                    out += ret || '';\n                    continue;\n                }\n            }\n            switch (token.type) {\n                case 'escape': {\n                    const escapeToken = token;\n                    out += renderer.text(escapeToken.text);\n                    break;\n                }\n                case 'html': {\n                    const tagToken = token;\n                    out += renderer.html(tagToken.text);\n                    break;\n                }\n                case 'link': {\n                    const linkToken = token;\n                    out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n                    break;\n                }\n                case 'image': {\n                    const imageToken = token;\n                    out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n                    break;\n                }\n                case 'strong': {\n                    const strongToken = token;\n                    out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n                    break;\n                }\n                case 'em': {\n                    const emToken = token;\n                    out += renderer.em(this.parseInline(emToken.tokens, renderer));\n                    break;\n                }\n                case 'codespan': {\n                    const codespanToken = token;\n                    out += renderer.codespan(codespanToken.text);\n                    break;\n                }\n                case 'br': {\n                    out += renderer.br();\n                    break;\n                }\n                case 'del': {\n                    const delToken = token;\n                    out += renderer.del(this.parseInline(delToken.tokens, renderer));\n                    break;\n                }\n                case 'text': {\n                    const textToken = token;\n                    out += renderer.text(textToken.text);\n                    break;\n                }\n                default: {\n                    const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n                    if (this.options.silent) {\n                        console.error(errMsg);\n                        return '';\n                    }\n                    else {\n                        throw new Error(errMsg);\n                    }\n                }\n            }\n        }\n        return out;\n    }\n}\n", "import { _defaults } from './defaults.ts';\nexport class _Hooks {\n    options;\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    static passThroughHooks = new Set([\n        'preprocess',\n        'postprocess'\n    ]);\n    /**\n     * Process markdown before marked\n     */\n    preprocess(markdown) {\n        return markdown;\n    }\n    /**\n     * Process HTML after marked is finished\n     */\n    postprocess(html) {\n        return html;\n    }\n}\n", "import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { checkDeprecations, escape } from './helpers.ts';\nexport class Marked {\n    defaults = _getDefaults();\n    options = this.setOptions;\n    parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n    parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n    Parser = _Parser;\n    parser = _Parser.parse;\n    Renderer = _Renderer;\n    TextRenderer = _TextRenderer;\n    Lexer = _Lexer;\n    lexer = _Lexer.lex;\n    Tokenizer = _Tokenizer;\n    Slugger = _Slugger;\n    Hooks = _Hooks;\n    constructor(...args) {\n        this.use(...args);\n    }\n    /**\n     * Run callback for every token\n     */\n    walkTokens(tokens, callback) {\n        let values = [];\n        for (const token of tokens) {\n            values = values.concat(callback.call(this, token));\n            switch (token.type) {\n                case 'table': {\n                    const tableToken = token;\n                    for (const cell of tableToken.header) {\n                        values = values.concat(this.walkTokens(cell.tokens, callback));\n                    }\n                    for (const row of tableToken.rows) {\n                        for (const cell of row) {\n                            values = values.concat(this.walkTokens(cell.tokens, callback));\n                        }\n                    }\n                    break;\n                }\n                case 'list': {\n                    const listToken = token;\n                    values = values.concat(this.walkTokens(listToken.items, callback));\n                    break;\n                }\n                default: {\n                    const genericToken = token;\n                    if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n                        this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n                            values = values.concat(this.walkTokens(genericToken[childTokens], callback));\n                        });\n                    }\n                    else if (genericToken.tokens) {\n                        values = values.concat(this.walkTokens(genericToken.tokens, callback));\n                    }\n                }\n            }\n        }\n        return values;\n    }\n    use(...args) {\n        const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n        args.forEach((pack) => {\n            // copy options to new object\n            const opts = { ...pack };\n            // set async to true if it was set to true before\n            opts.async = this.defaults.async || opts.async || false;\n            // ==-- Parse \"addon\" extensions --== //\n            if (pack.extensions) {\n                pack.extensions.forEach((ext) => {\n                    if (!ext.name) {\n                        throw new Error('extension name required');\n                    }\n                    if ('renderer' in ext) { // Renderer extensions\n                        const prevRenderer = extensions.renderers[ext.name];\n                        if (prevRenderer) {\n                            // Replace extension with func to run new extension but fall back if false\n                            extensions.renderers[ext.name] = function (...args) {\n                                let ret = ext.renderer.apply(this, args);\n                                if (ret === false) {\n                                    ret = prevRenderer.apply(this, args);\n                                }\n                                return ret;\n                            };\n                        }\n                        else {\n                            extensions.renderers[ext.name] = ext.renderer;\n                        }\n                    }\n                    if ('tokenizer' in ext) { // Tokenizer Extensions\n                        if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n                            throw new Error(\"extension level must be 'block' or 'inline'\");\n                        }\n                        const extLevel = extensions[ext.level];\n                        if (extLevel) {\n                            extLevel.unshift(ext.tokenizer);\n                        }\n                        else {\n                            extensions[ext.level] = [ext.tokenizer];\n                        }\n                        if (ext.start) { // Function to check for start of token\n                            if (ext.level === 'block') {\n                                if (extensions.startBlock) {\n                                    extensions.startBlock.push(ext.start);\n                                }\n                                else {\n                                    extensions.startBlock = [ext.start];\n                                }\n                            }\n                            else if (ext.level === 'inline') {\n                                if (extensions.startInline) {\n                                    extensions.startInline.push(ext.start);\n                                }\n                                else {\n                                    extensions.startInline = [ext.start];\n                                }\n                            }\n                        }\n                    }\n                    if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n                        extensions.childTokens[ext.name] = ext.childTokens;\n                    }\n                });\n                opts.extensions = extensions;\n            }\n            // ==-- Parse \"overwrite\" extensions --== //\n            if (pack.renderer) {\n                const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n                for (const prop in pack.renderer) {\n                    const rendererFunc = pack.renderer[prop];\n                    const rendererKey = prop;\n                    const prevRenderer = renderer[rendererKey];\n                    // Replace renderer with func to run extension, but fall back if false\n                    renderer[rendererKey] = (...args) => {\n                        let ret = rendererFunc.apply(renderer, args);\n                        if (ret === false) {\n                            ret = prevRenderer.apply(renderer, args);\n                        }\n                        return ret || '';\n                    };\n                }\n                opts.renderer = renderer;\n            }\n            if (pack.tokenizer) {\n                const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n                for (const prop in pack.tokenizer) {\n                    const tokenizerFunc = pack.tokenizer[prop];\n                    const tokenizerKey = prop;\n                    const prevTokenizer = tokenizer[tokenizerKey];\n                    // Replace tokenizer with func to run extension, but fall back if false\n                    tokenizer[tokenizerKey] = (...args) => {\n                        let ret = tokenizerFunc.apply(tokenizer, args);\n                        if (ret === false) {\n                            ret = prevTokenizer.apply(tokenizer, args);\n                        }\n                        return ret;\n                    };\n                }\n                opts.tokenizer = tokenizer;\n            }\n            // ==-- Parse Hooks extensions --== //\n            if (pack.hooks) {\n                const hooks = this.defaults.hooks || new _Hooks();\n                for (const prop in pack.hooks) {\n                    const hooksFunc = pack.hooks[prop];\n                    const hooksKey = prop;\n                    const prevHook = hooks[hooksKey];\n                    if (_Hooks.passThroughHooks.has(prop)) {\n                        hooks[hooksKey] = (arg) => {\n                            if (this.defaults.async) {\n                                return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n                                    return prevHook.call(hooks, ret);\n                                });\n                            }\n                            const ret = hooksFunc.call(hooks, arg);\n                            return prevHook.call(hooks, ret);\n                        };\n                    }\n                    else {\n                        hooks[hooksKey] = (...args) => {\n                            let ret = hooksFunc.apply(hooks, args);\n                            if (ret === false) {\n                                ret = prevHook.apply(hooks, args);\n                            }\n                            return ret;\n                        };\n                    }\n                }\n                opts.hooks = hooks;\n            }\n            // ==-- Parse WalkTokens extensions --== //\n            if (pack.walkTokens) {\n                const walkTokens = this.defaults.walkTokens;\n                const packWalktokens = pack.walkTokens;\n                opts.walkTokens = function (token) {\n                    let values = [];\n                    values.push(packWalktokens.call(this, token));\n                    if (walkTokens) {\n                        values = values.concat(walkTokens.call(this, token));\n                    }\n                    return values;\n                };\n            }\n            this.defaults = { ...this.defaults, ...opts };\n        });\n        return this;\n    }\n    setOptions(opt) {\n        this.defaults = { ...this.defaults, ...opt };\n        return this;\n    }\n    #parseMarkdown(lexer, parser) {\n        return (src, optOrCallback, callback) => {\n            if (typeof optOrCallback === 'function') {\n                callback = optOrCallback;\n                optOrCallback = null;\n            }\n            const origOpt = { ...optOrCallback };\n            const opt = { ...this.defaults, ...origOpt };\n            // Show warning if an extension set async to true but the parse was called with async: false\n            if (this.defaults.async === true && origOpt.async === false) {\n                if (!opt.silent) {\n                    console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n                }\n                opt.async = true;\n            }\n            const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n            // throw error in case of non string input\n            if (typeof src === 'undefined' || src === null) {\n                return throwError(new Error('marked(): input parameter is undefined or null'));\n            }\n            if (typeof src !== 'string') {\n                return throwError(new Error('marked(): input parameter is of type '\n                    + Object.prototype.toString.call(src) + ', string expected'));\n            }\n            checkDeprecations(opt, callback);\n            if (opt.hooks) {\n                opt.hooks.options = opt;\n            }\n            if (callback) {\n                const resultCallback = callback;\n                const highlight = opt.highlight;\n                let tokens;\n                try {\n                    if (opt.hooks) {\n                        src = opt.hooks.preprocess(src);\n                    }\n                    tokens = lexer(src, opt);\n                }\n                catch (e) {\n                    return throwError(e);\n                }\n                const done = (err) => {\n                    let out;\n                    if (!err) {\n                        try {\n                            if (opt.walkTokens) {\n                                this.walkTokens(tokens, opt.walkTokens);\n                            }\n                            out = parser(tokens, opt);\n                            if (opt.hooks) {\n                                out = opt.hooks.postprocess(out);\n                            }\n                        }\n                        catch (e) {\n                            err = e;\n                        }\n                    }\n                    opt.highlight = highlight;\n                    return err\n                        ? throwError(err)\n                        : resultCallback(null, out);\n                };\n                if (!highlight || highlight.length < 3) {\n                    return done();\n                }\n                delete opt.highlight;\n                if (!tokens.length)\n                    return done();\n                let pending = 0;\n                this.walkTokens(tokens, (token) => {\n                    if (token.type === 'code') {\n                        pending++;\n                        setTimeout(() => {\n                            highlight(token.text, token.lang, (err, code) => {\n                                if (err) {\n                                    return done(err);\n                                }\n                                if (code != null && code !== token.text) {\n                                    token.text = code;\n                                    token.escaped = true;\n                                }\n                                pending--;\n                                if (pending === 0) {\n                                    done();\n                                }\n                            });\n                        }, 0);\n                    }\n                });\n                if (pending === 0) {\n                    done();\n                }\n                return;\n            }\n            if (opt.async) {\n                return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n                    .then(src => lexer(src, opt))\n                    .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n                    .then(tokens => parser(tokens, opt))\n                    .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n                    .catch(throwError);\n            }\n            try {\n                if (opt.hooks) {\n                    src = opt.hooks.preprocess(src);\n                }\n                const tokens = lexer(src, opt);\n                if (opt.walkTokens) {\n                    this.walkTokens(tokens, opt.walkTokens);\n                }\n                let html = parser(tokens, opt);\n                if (opt.hooks) {\n                    html = opt.hooks.postprocess(html);\n                }\n                return html;\n            }\n            catch (e) {\n                return throwError(e);\n            }\n        };\n    }\n    #onError(silent, async, callback) {\n        return (e) => {\n            e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n            if (silent) {\n                const msg = '<p>An error occurred:</p><pre>'\n                    + escape(e.message + '', true)\n                    + '</pre>';\n                if (async) {\n                    return Promise.resolve(msg);\n                }\n                if (callback) {\n                    callback(null, msg);\n                    return;\n                }\n                return msg;\n            }\n            if (async) {\n                return Promise.reject(e);\n            }\n            if (callback) {\n                callback(e);\n                return;\n            }\n            throw e;\n        };\n    }\n}\n", "import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt, callback) {\n    return markedInstance.parse(src, opt, callback);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n    marked.setOptions = function (options) {\n        markedInstance.setOptions(options);\n        marked.defaults = markedInstance.defaults;\n        changeDefaults(marked.defaults);\n        return marked;\n    };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n    markedInstance.use(...args);\n    marked.defaults = markedInstance.defaults;\n    changeDefaults(marked.defaults);\n    return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n    return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n", "import {Box, styled} from \"@mui/material\";\nimport {dark, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\n\nexport const MarkdownCustomStyle = styled(Box)({\n    font: secondaryFontLarge,\n    \"h1\":{\n        color: dark,\n        textAlign: \"center\",\n        marginTop: \"0\"\n    },\n    \"h3\":{\n        color: white,\n        backgroundColor: primary,\n        padding: \"6px\",\n        borderRadius: \"10px\",\n        marginBottom: \"0\"\n    },\n    \"ul\":{\n        lineHeight: \"150%\",\n    }\n})", "export interface Announcement {\n    Title: string,\n    Content: string,\n    ReleaseTimestamp: bigint,\n    ModifiedTimestamp: bigint\n}\n\nexport enum AnnouncementAttribute {\n    TITLE = \"Title\",\n    CONTENT = \"Content\",\n    RELEASE_TIMESTAMP = \"ReleaseTimestamp\",\n    MODIFIED_TIMESTAMP = \"ModifiedTimestamp\"\n}\n", "import {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {serialize} from \"bson\";\nimport {Announcement, AnnouncementAttribute} from \"@backend/Types/Announcement\";\nimport {Authentication} from \"@utils/Authentication\";\n\nexport class DataSourceAnnouncements {\n\n    private allAnnouncements: Set<bigint> | null = null;\n    private latestAnnouncementIDs: bigint[] | null = null;\n    private announcementsInfo: Map<bigint, Promise<Announcement | null>> = new Map();\n\n    constructor(private readonly authentication: Authentication) {}\n\n    public async createAnnouncement(): Promise<bigint> {\n        const response: Response | null = await fetch(\"/api/Announcement/Create\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            }\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return BigInt(0);\n\n        const announcementData = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n\n        this.allAnnouncements?.add(announcementData.announcementID);\n        this.latestAnnouncementIDs?.unshift(announcementData.announcementID);\n        this.announcementsInfo.set(announcementData.announcementID, announcementData);\n\n        return announcementData.announcementID;\n    }\n\n    public async saveAnnouncementAttribute(\n        announcementID: bigint,\n        attributeName: string,\n        attributeValue: string | bigint): Promise<bigint> {\n        const response: Response | null = await fetch(`/api/Announcement/${announcementID}/${attributeName}`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({value: attributeValue})\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return BigInt(0);\n\n        const announcementData = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        this.invalidateAnnouncement(announcementID);\n\n        return announcementData.announcementID;\n    }\n\n    public getAttributes(announcementID: bigint): Promise<(Announcement | null)> {\n        let announcement: Promise<Announcement | null> | undefined = this.announcementsInfo.get(announcementID);\n        if (!announcement) {\n            announcement = this.fetchAnnouncement(announcementID);\n            this.announcementsInfo.set(announcementID, announcement);\n        }\n\n        return announcement;\n    }\n\n    private async fetchAnnouncement(announcementID: bigint): Promise<Announcement | null> {\n        const response: Response | null = await fetch(\n            `/api/Announcement/${announcementID}/${Object.values(AnnouncementAttribute).join(\",\")}`,\n            {\n                method: \"GET\",\n                headers: {\n                    ...await this.authentication.getDefaultHeaders(),\n                    \"content-type\": \"application/octet-stream\"\n                }\n            }\n        ).catch(() => null);\n\n        if (!response?.ok)\n            return null;\n\n        return UtilsBSON.deserializeBSON(await response.arrayBuffer());\n    }\n\n\n    public async getAllAnnouncementsIDs(): Promise<bigint[]> {\n        if (this.allAnnouncements)\n            return [...this.allAnnouncements];\n\n        const response: Response | null = await fetch(\"/api/Announcement/\", {\n            method: \"GET\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            }\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return [];\n\n        const announcementData = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        this.allAnnouncements = new Set(announcementData.announcementIDs);\n\n        return announcementData.announcementIDs;\n    }\n\n    public async getLastPublishedIDs(numberOfAnnouncements: number): Promise<bigint[]> {\n        if (numberOfAnnouncements <= 0)\n            return [];\n\n        if (this.latestAnnouncementIDs && this.latestAnnouncementIDs.length >= numberOfAnnouncements)\n            return this.latestAnnouncementIDs.slice(0, numberOfAnnouncements);\n\n        const response: Response | null = await fetch(\n            `/api/Announcement/LastPublished?numberOfAnnouncements=${numberOfAnnouncements}`,\n            {\n                method: \"GET\",\n                headers: {\n                    ...await this.authentication.getDefaultHeaders(),\n                    \"content-type\": \"application/octet-stream\"\n                }\n            }\n        ).catch(() => null);\n\n        if (!response?.ok)\n            return [];\n\n        const announcementData = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        this.latestAnnouncementIDs = announcementData.lastPublishedAnnouncementIDs;\n\n        return announcementData.lastPublishedAnnouncementIDs;\n    }\n\n    public async deleteAnnouncement(announcementID: bigint): Promise<bigint> {\n        const response: Response | null = await fetch(`/api/Announcement/${announcementID}`, {\n            method: \"DELETE\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            }\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return BigInt(0);\n\n        const announcementData = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        this.invalidateAnnouncement(announcementID);\n\n        if (this.allAnnouncements)\n            this.allAnnouncements.delete(announcementID);\n\n        if (this.latestAnnouncementIDs)\n            this.latestAnnouncementIDs = this.latestAnnouncementIDs.filter((id: bigint) => id !== announcementID);\n\n        return announcementData.announcementID;\n    }\n\n    public invalidateAnnouncement(announcementID: bigint): void {\n        this.announcementsInfo.delete(announcementID);\n    }\n}\n", "import {Peer, PeerAttribute, SortCriteriaPeers} from \"@backend/Types/Peer\";\nimport {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {serialize} from \"bson\";\nimport {Group} from \"@backend/Types/Group\";\nimport {AppConsole} from \"@root/Frontend/Console/AppConsole\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport safelyConvertStringToBigInt = UtilsShared.safelyConvertStringToBigInt;\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Authentication} from \"@utils/Authentication\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {RegionAWS} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {Role} from \"@backend/Types/Role\";\nimport {getConnectionPeer} from \"@root/Frontend/Console/utils/UtilsFilters\";\n\n// sort and filter object with default values\nexport class PeersSortObj {\n    year: number = (new Date()).getUTCFullYear()\n    monthIndex: number = (new Date()).getUTCMonth()\n    sortCriteria: SortCriteriaPeers = SortCriteriaPeers.LOGIN\n    ascending: boolean = false\n    domain: string = \"\"\n}\n\nexport class DataSourcePeers {\n    constructor(private readonly authentication: Authentication) {}\n\n    private peers: Map<bigint, Promise<Peer | null>> = new Map();\n    static readonly PEER_ERROR: Peer = {\n        archivedDate: BigInt(0),\n        audios: [],\n        documents: [],\n        entities: [],\n        email: \"Error\",\n        fullName: \"Error\",\n        group: {},\n        ID: BigInt(0),\n        plan: BigInt(0),\n        region: null,\n        storage: 0,\n        sessions: [],\n        timeStart: 0,\n        username: \"Error\",\n        verified: \"0\",\n        videos: [],\n        worlds: []\n    };\n\n    public async isUsernameExists(username: string): Promise<bigint> {\n        for (const [peerID, peerPromise] of this.peers){\n            const peer: Peer | null = await peerPromise;\n            if (peer?.username === username)\n                return peerID;\n        }\n\n        return this.fetchDoesPeerExist(username);\n    }\n\n    private async fetchDoesPeerExist(username: string): Promise<bigint> {\n        if (!username)\n            return BigInt(0);\n\n        const response: Response | null = await fetch(\"/api/Peer/Exists\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ username })\n        }).catch(() => null);\n        \n        return response?.ok ? UtilsBSON.deserializeBSON(await response.arrayBuffer()).peerID : BigInt(0);\n    }\n\n    ////////////// Peers List Getter //////////////\n\n    // get the peers list according to the sort supplied\n    public async getPeers(filter: PeersSortObj) : Promise<bigint[]> {\n        const url = new URL(\"/api/Peer\", window.location.href);\n\n        // set all query params\n        if(filter){\n            url.searchParams.set(\"sortBy\", SortCriteriaPeers[filter.sortCriteria]);\n            url.searchParams.set(\"ascending\", filter.ascending ? \"yes\" : \"no\")\n            url.searchParams.set(\"year\", filter.year.toString());\n\n            // monthIndex null means year values\n            if(filter.monthIndex !== null)\n                url.searchParams.set(\"month\", filter.monthIndex.toString());\n\n            // add domain if present\n            if(filter.domain)\n                url.searchParams.set(\"domain\", filter.domain);\n        }\n\n        // fetch\n        const response: Response | null = await fetch(url.toString(), {\n            method: \"GET\",\n            headers: await this.authentication.getDefaultHeaders()\n        }).catch(() => null);\n        \n        return response?.ok ? UtilsBSON.deserializeBSON(await response.arrayBuffer(), true).peerIDs : [];\n    }\n\n    // get a list of peers ID that contains string\n    public async getPeersContainingString(str: string): Promise<bigint[]> {\n        const url = new URL(\"/api/Peer/Search\", window.location.href);\n\n        // add query param search\n        url.searchParams.set(\"search\", str);\n\n        const response: Response | null = await fetch(url.toString(), {\n            method: \"GET\",\n            headers: await this.authentication.getDefaultHeaders()\n        }).catch(() => null);\n        \n        return response?.ok ? UtilsBSON.deserializeBSON(await response.arrayBuffer(), true).peerIDs : [];\n    }\n\n    //////////////////// Create Peer /////////////////////\n    public async createPeer(domain: string, fullName: string, username: string, region: RegionAWS): Promise<bigint> {\n        const response: Response | null = await fetch(\"/api/Peer/Create\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({\n                fullName,\n                username: `${username}@${domain}`,\n                region\n            })\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return BigInt(0);\n\n        const responseData: { peerID: bigint } = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        return responseData.peerID;\n    }\n\n    //////////////////// Peer attributes getters /////////////////////\n\n    // get peer (or PEER_ERROR if not found). TODO(@frank): This method should return null if the Peer doesn't exist!\n    public async getPeer(peerID: bigint): Promise<Peer> {\n        let promisePeer: Promise<Peer | null> | undefined = this.peers.get(peerID);\n        if (!promisePeer) {\n            promisePeer = this.fetchPeer(peerID);\n            this.peers.set(peerID, promisePeer);\n        }\n        const peer: Peer | null = await promisePeer;\n        return peer ? peer : DataSourcePeers.PEER_ERROR;\n    }\n\n    // reload all Peer attributes\n    private async fetchPeer(peerID: bigint) : Promise<Peer | null> {\n        if (!peerID)\n            return null;\n\n        // request\n        const url: string = `/api/Peer/${peerID}/${Object.values(PeerAttribute).join(\",\")}`;\n        const response: Response | null = await fetch(url, {\n            method: \"GET\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            }\n        }).catch(() => null);\n\n        // log error\n        if (!response?.ok) {\n            AdapterLog.ERROR(`Could not fetch peer ${peerID}`);\n            return null;\n        }\n\n        // deserialize bson\n        const responseData = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n\n        // add the peerID\n        responseData.ID = peerID;\n        return responseData;\n    }\n\n    // clear all data of peer\n    invalidatePeer(peerID: bigint): void {\n        if (peerID)\n            this.peers.delete(peerID);\n    }\n\n    async setPeerPlan(peerID: bigint, planID: bigint): Promise<boolean> {\n        if (!peerID || !planID)\n            return false;\n\n        const response: Response | null = await fetch(`/api/Peer/${peerID}/Plan`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ planID })\n        }).catch(() => null);\n\n        if (!response?.ok) {\n            AdapterLog.ERROR(`Could not set plan ${planID} for peer ${peerID}`);\n            return false;\n        }\n\n        // set the peer's new plan\n        const peer: Peer = await this.getPeer(peerID);\n        peer.plan = planID;\n        return true;\n    }\n\n    async resetPeerPlanTimeStart(peerID: bigint): Promise<boolean> {\n        const response: Response | null = await fetch(`/api/Peer/${peerID}/ResetTimeStart`, {\n            method: \"POST\",\n            headers: await this.authentication.getDefaultHeaders()\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return false;\n\n        // get the new time start from the response and update the peer object with it\n        const peer: Peer = await this.getPeer(peerID);\n        peer.timeStart = UtilsBSON.deserializeBSON(await response.arrayBuffer())?.timeStart ?? BigInt(0);\n        return true;\n    }\n\n    async getPeerGroupsWorlds(peerID: bigint): Promise<Set<bigint>> {\n        const peerGroupsWorldsID: Set<bigint> = new Set<bigint>();\n        const peer: Peer = await this.getPeer(peerID);\n\n        if (!peer.group)\n            return peerGroupsWorldsID;\n\n        const groupsIDs: bigint[] = Object.keys(peer.group).map((groupID: string) => safelyConvertStringToBigInt(groupID));\n\n        // get all peer groups at once\n        const peerGroups: Group[] = await Promise.all(groupsIDs.map((groupID: bigint) =>\n            AppConsole.getInstance().dataSourceGroups.getGroup(groupID)));\n\n        // combine worlds of all peer groups in one set\n        for(const peerGroup of peerGroups)\n            peerGroup.Worlds.forEach((world: bigint) => peerGroupsWorldsID.add(world));\n\n\n        return peerGroupsWorldsID;\n    }\n\n    async getPeerVideosIDs(peerID: bigint): Promise<bigint[]> {\n        const currentPeer: Peer = await this.getPeer(peerID);\n\n        if (!currentPeer.group)\n            return currentPeer.videos ?? [];\n\n        const peerGroupVideoIDs: bigint[] = [];\n        for (const groupID of Object.keys(currentPeer.group)) {\n            peerGroupVideoIDs.push(\n                ...(await App.getInstance().dataSourceGroups.getGroup(BigInt(groupID))).Videos\n            );\n        }\n        return [...new Set(currentPeer.videos.concat(peerGroupVideoIDs))];\n    }\n\n    async removeDocument(peerID: bigint, deleteDocumentID: bigint) {\n        const peer: Peer | null = await this.peers.get(peerID) ?? null;\n        if (!peer)\n            return;\n\n        peer.documents = peer.documents.filter((documentID: bigint) => deleteDocumentID !== documentID)\n    }\n\n    async setEmail(peerID: bigint, email: string): Promise<boolean> {\n        const peer: Peer = await this.getPeer(peerID);\n\n        if (!peer)\n            return false;\n\n        const response: Response = await fetch(`/api/Peer/${peerID}/Email`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ email })\n        });\n\n        if (response.ok)\n            peer.email = email;\n\n        return response.ok;\n    }\n\n    async setDomainManagedByDeepSight(domainName: string): Promise<boolean> {\n        if (!domainName.trim())\n            return false;\n\n        const response: Response = await fetch(\"/api/Peer/SetDomainManagedByDeepSight\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({domain: domainName})\n        });\n\n        return response.ok;\n    }\n\n    async deletePeer(peerID: bigint): Promise<boolean> {\n        if (!peerID)\n            return false;\n\n        const response: Response = await fetch(`/api/Peer/${peerID}`, {\n            method: \"DELETE\",\n            headers: await this.authentication.getDefaultHeaders(),\n        });\n\n        if (response.ok)\n            this.invalidatePeer(peerID);\n\n        return response.ok;\n    }\n\n    async archivePeer(peerID: bigint): Promise<boolean> {\n        if (!peerID)\n            return false;\n\n        const response: Response = await fetch(`/api/Peer/${peerID}/Archive`, {\n            method: \"POST\",\n            headers: await this.authentication.getDefaultHeaders(),\n        });\n        if (!response.ok)\n            return false;\n\n        this.invalidatePeer(peerID);\n        return true;\n    }\n\n    async updatePassword(peerID: bigint, newPassword: string): Promise<boolean> {\n        if (!peerID || !newPassword.trim() || newPassword.length < 8)\n            return false;\n\n        const response: Response = await fetch(`/api/Peer/${peerID}/Password`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({Password: newPassword})\n        });\n\n        return response.ok;\n    }\n\n    async restorePeer(peerID: bigint): Promise<boolean> {\n        if (!peerID)\n            return false;\n\n        const response: Response = await fetch(`/api/Peer/${peerID}/Restore`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n            }\n        });\n\n        if (!response.ok)\n            return false;\n\n        const responseData: {success: boolean} = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        return responseData.success;\n    }\n\n    public async renamePeer(peerID: bigint, fullName: string): Promise<boolean> {\n        if (!peerID || !UtilsShared.isValidFullName(fullName))\n            return false;\n\n        const response: Response | null = await fetch(`/api/Peer/${peerID}/FullName`, {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({\n                fullName\n            })\n        }).catch(() => null);\n\n        if (!response?.ok) {\n            AdapterLog.ERROR(`An error occurred when renaming peer ${peerID}`);\n            return false;\n        }\n\n        const peer: Peer = await this.getPeer(peerID);\n        peer.fullName = fullName;\n\n        return response.ok;\n    }\n\n    public async getActivePeers(): Promise<Record<Role, Map<bigint, bigint[]>>> {\n        const activePeers: Record<Role, Map<bigint, bigint[]>> = {\n            [Role.EDITOR]: new Map<bigint, bigint[]>(),\n            [Role.VIEWER]: new Map<bigint, bigint[]>()\n        };\n\n        const currentPeer: Peer = await this.getPeer(AppConsole.getInstance().currentPeerID);\n\n        for (const groupIdStr of Object.keys(currentPeer.group)) {\n\n            const group: Group =\n                await App.getInstance().dataSourceGroups.getGroup(UtilsShared.safelyConvertStringToBigInt(groupIdStr));\n\n            for (const peerID of Object.keys(group.Peers)) {\n                const peerIDBigInt: bigint = UtilsShared.safelyConvertStringToBigInt(peerID);\n                if (activePeers[Role.EDITOR].has(peerIDBigInt) || activePeers[Role.VIEWER].has(peerIDBigInt)) continue;\n\n                const peer: Peer = await this.getPeer(UtilsShared.safelyConvertStringToBigInt(peerID));\n                if (!peer.group || !Object.values(peer.group).length) continue;\n\n                if (Object.values(peer.group).includes(Role.EDITOR))\n                    activePeers[Role.EDITOR].set(peerIDBigInt, getConnectionPeer(peer.logins ?? {}));\n                else\n                    activePeers[Role.VIEWER].set(peerIDBigInt, getConnectionPeer(peer.logins ?? {}));\n\n            }\n        }\n\n        return activePeers;\n    }\n}\n", "import {Authentication} from \"@utils/Authentication\";\nimport {serialize} from \"bson\";\nimport {UtilsBSON} from \"@backend/Utils/UtilsBSON\";\nimport {AppLogin, MessageStatus} from \"@root/Frontend/Login/AppLogin\";\nimport i18next from \"i18next\";\n// @ts-ignore\nimport VERSION from \"../../../VERSION.txt\";\nimport {RegionAWS} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nexport class HelperLogin {\n    constructor(private readonly authentication: Authentication) {}\n\n    public async retrievePeerForCurrentToken(token: string): Promise<bigint> {\n        const normalizedToken: string = token.trim();\n        if (!token.length)\n            return BigInt(0);\n\n        const response: Response | null = await fetch(\"/api/Login/CheckToken\", {\n            method: \"POST\",\n            headers: {\n                // don't use the getDefaultHeaders function\n                \"Accept-Version\": (VERSION as string).replaceAll('\"', \"\"),\n                \"Authorization\": token,\n                \"Content-Type\": \"application/octet-stream\"\n            },\n            body: normalizedToken\n        }).catch(() => null);\n        if (!response?.ok)\n            return BigInt(0);\n\n        const responseJSON = UtilsBSON.deserializeBSON(await response.arrayBuffer());\n        if (!responseJSON.success)\n            return BigInt(0);\n\n        return responseJSON.peerID;\n    }\n\n    public async signUp(username: string, fullName: string, password: string, region: RegionAWS,\n                               acceptedTerms: boolean, acceptedEmails: boolean): Promise<string> {\n        const responseSignUp: Response = await fetch(\"/api/Login/signUp\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"Content-Type\": \"application/octet-stream\"\n            },\n            body: serialize({\n                username, fullName, password, region,\n                acceptedTerms, acceptedEmails,\n                lang: i18next.language\n            })\n        });\n\n        if (responseSignUp.status >= 400) {\n            await this.handleLoginProblem(responseSignUp);\n            return \"\";\n        }\n\n        const responseJSON: {success: boolean, msg: string, username: string} =\n            UtilsBSON.deserializeBSON(await responseSignUp.arrayBuffer());\n\n        if (!responseJSON.success) {\n            AppLogin.getInstance().setMessage(responseJSON.msg, MessageStatus.Error);\n            return \"\";\n        }\n        return responseJSON.username;\n    }\n\n    public async signUpFromMicrosoftJWT(token: string, newsletter: boolean, region: RegionAWS)\n        : Promise<{username: string, token: string}> {\n        const responseSignup: Response = await fetch(\"/api/Login/CreateAccountFromMicrosoftJWT\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ token, newsletter, region })\n        });\n\n        if (responseSignup.status >= 400) {\n            await this.handleLoginProblem(responseSignup);\n            return {username: \"\", token: \"\"};\n        }\n\n        const responseJSON: {success: boolean, msg: string, username: string, token: string} =\n            UtilsBSON.deserializeBSON(await responseSignup.arrayBuffer());\n\n        if (!responseJSON.success) {\n            AppLogin.getInstance().setMessage(responseJSON.msg, MessageStatus.Error);\n            return {username: \"\", token: \"\"};\n        }\n        return {username: responseJSON.username, token: responseJSON.token};\n    }\n\n    public async authenticateWithAADUserToken(token: string): Promise<{success: boolean, token: string}> {\n        const responseLogin: Response = await fetch(\"/api/Login/VerifyMicrosoftJWT\",{\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ token })\n        });\n\n        if (responseLogin.status >= 400) {\n            await this.handleLoginProblem(responseLogin);\n            return {success: false, token: \"\"};\n        }\n\n        return UtilsBSON.deserializeBSON(await responseLogin.arrayBuffer());\n    }\n\n    public async login(username: string, password: string): Promise<string> {\n        const responseLogin: Response = await fetch(\"/api/Login/attempt\", {\n            method:\"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/json;charset=UTF-8\"\n            },\n            body: JSON.stringify({ username, password })\n        });\n\n        const responseJSON: {success: boolean, msg: string, token: string} =\n            UtilsBSON.deserializeBSON(await responseLogin.arrayBuffer());\n\n        if (!responseJSON.success || !responseJSON.token) {\n            AppLogin.getInstance().setMessage(responseJSON.msg, MessageStatus.Error);\n            return \"\";\n        }\n\n        return responseJSON.token;\n    }\n\n    public async linkByPin(userPin: number): Promise<boolean> {\n        if (!Number.isFinite(userPin))\n            return false;\n\n        if (userPin < 100000 || userPin > 999999)\n            return false;\n\n        const response: Response | null = await fetch(\"/login/linkByPin\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: serialize({ userPin }) as BodyInit\n        }).catch(() => null);\n\n        if (!response?.ok)\n            return false;\n\n        return UtilsBSON.deserializeBSON(await response.arrayBuffer()).success === true;\n    }\n\n    public async generateAuthenticationQR(): Promise<Buffer | null> {\n        const responseAuthenticationQR: Response | null = await fetch(\"/api/Login/generateAuthenticationQR\", {\n            method: \"POST\",\n            headers: {\n                ...await this.authentication.getDefaultHeaders(),\n                \"content-type\": \"application/octet-stream\"\n            },\n            body: (new URL(window.location.href)).origin\n        }).catch(() => null);\n\n        if (!responseAuthenticationQR?.ok)\n            return null;\n\n        const responseJSON: { success: boolean, qrCodeData: string, qrCodeBuffer: Buffer } =\n            UtilsBSON.deserializeBSON(await responseAuthenticationQR.arrayBuffer());\n\n        if (!responseJSON.success)\n            return null;\n\n        return responseJSON.qrCodeBuffer;\n    }\n\n    private async handleLoginProblem(response: Response): Promise<void> {\n        switch (response.status) {\n            case 400 :\n            case 500 :\n            case 401 :\n                AppLogin.getInstance().setMessage(`${i18next.t(\"There was a problem. Please use the email login \" +\n                        \"or contact support\")}.`, MessageStatus.Error);\n                break;\n            case 402 :\n                AppLogin.getInstance().setMessage(`${i18next.t(\"Your licence is expired. Please contact \" +\n                        \"support@deepsight.ca\")}.`, MessageStatus.Warning);\n                break;\n            case 403 :\n                AppLogin.getInstance().setMessage(`${i18next.t(\"We could not verify your email\")}.`,\n                    MessageStatus.Error);\n                break;\n            default:\n                const errorMessage = UtilsBSON.deserializeBSON(await response.arrayBuffer()).error;\n                AppLogin.getInstance().setMessage(errorMessage ? errorMessage\n                    : i18next.t(\"There was a problem. Please use the email login or contact support\"),\n                    MessageStatus.Error);\n        }\n    }\n}\n", "import * as React from \"react\";\nimport {DeepSightConnectWidget} from \"@root/Frontend/Studio/Views/DeepSightConnect/DeepSightConnectWidget\";\nimport {Box} from \"@mui/material\";\nimport {TRANSITIONS_SECONDS} from \"@root/Frontend/Studio/App\";\n\n// This component is only used to isolate the video from the rest of the logic.\n// This ensures that the video does not get re-rendered. DON'T ADD ANY STATE\nexport class DeepSightConnect extends React.Component {\n    props: { currentPeerID: bigint };\n\n    private readonly DSConnectWidgetRef: React.RefObject<DeepSightConnectWidget> =\n        React.createRef<DeepSightConnectWidget>();\n\n    // call when the session is updated\n    public updateSession(sessionID: bigint) {\n        this.DSConnectWidgetRef.current?.updateSession(sessionID);\n    }\n\n    public updatePeer(peerID: bigint) {\n        this.DSConnectWidgetRef.current?.updatePeer(peerID);\n    }\n\n    // Call every time we received a packet\n    public updateReceivedPacketFromDataChannel(peerID: bigint, packetNumber: number, packetTotal: number) {\n        this.DSConnectWidgetRef.current?.updateReceivedPacketFromDataChannel(peerID, packetNumber, packetTotal);\n    }\n\n    render() {\n        return (\n            <Box id=\"world_sharing\"\n                 style={{ transform: `translateX(${this.props.currentPeerID ? \"0\" : \"100%\"})`,\n                          transition: `${TRANSITIONS_SECONDS}s all`, }}>\n                <DeepSightConnectWidget ref={this.DSConnectWidgetRef} />\n            </Box>\n        );\n    }\n}\n", "import * as React from 'react';\nimport {dark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {DeepSightConnect as DeepSightConnectIcon} from \"@root/react-components/src/icons/DeepSightConnect\";\nimport {Button} from '@root/react-components/src/buttons/Button';\nimport {ConnectDialog} from \"@root/Frontend/Studio/Views/DeepSightConnect/ConnectDialog\";\nimport {SessionCode} from \"@root/Frontend/Studio/Views/DeepSightConnect/SessionCode\";\nimport {ConnectedHeader} from \"@root/Frontend/Studio/Views/DeepSightConnect/ConnectedHeader\";\nimport {getAkaSessionID, getRemotePeerIDs} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSession\";\nimport {RemotePeerRow} from \"@root/Frontend/Studio/Views/DeepSightConnect/RemotePeerRow\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Plan} from \"@backend/Types/Plan\";\n\nconst Container = styled(Box)({\n    backgroundColor: dark,\n    borderBottomLeftRadius: \"24px\",\n    padding: \"6px 9px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n});\n\nconst ConnectWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"flex-end\",\n    gap: \"16px\",\n});\n\nconst DSConnectIconWrapper = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    paddingBottom: \"2.5px\",\n    \"& svg\": { width: \"18px\", height: \"18px\" }\n});\n\nconst ConnectedContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"12px\"\n});\n\nconst PeerListWrapper = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    borderTop: `solid 2px ${white}`,\n    padding: \"5px\"\n});\n\nconst TitleContainer = styled(Box)({\n    font: secondaryFontLarge,\n    paddingBottom: \"6px\",\n    color: white,\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: \"6px\"\n});\n\ninterface DeepSightConnectWidgetState {\n    openConnectDialog: boolean;\n    peerIDs: bigint[];\n    akaSessionID: number;\n    sessionID: bigint;\n}\n\nexport class DeepSightConnectWidget extends React.Component {\n    private readonly connectedHeaderRef: React.RefObject<ConnectedHeader> = React.createRef<ConnectedHeader>();\n    private remotePeerRowMapRef:  Map<bigint, React.RefObject<RemotePeerRow>> =\n        new Map<bigint, React.RefObject<RemotePeerRow>>();\n\n    state: DeepSightConnectWidgetState = {\n        openConnectDialog: false,\n        peerIDs: [],\n        akaSessionID: 0,\n        sessionID: BigInt(0),\n    };\n\n    componentDidMount() {\n        if (window.location.href.includes(\"session\"))\n            this.setState({ isConnected: true });\n    }\n\n    public updateSession(sessionID: bigint) {\n        if (this.state.sessionID !== sessionID) {\n            const akaSessionID: number = getAkaSessionID();\n            this.setState({ sessionID, akaSessionID });\n        }\n\n        const peerIDs: bigint[] = getRemotePeerIDs();\n        if (peerIDs.length > 1 && this.state.peerIDs !== peerIDs)\n            this.setState({ peerIDs });\n\n        this.connectedHeaderRef.current?.updateSession();\n    }\n\n    public updatePeer(peerID: bigint) {\n        this.remotePeerRowMapRef.get(peerID)?.current?.updatePeer();\n        this.connectedHeaderRef.current?.updateSession();\n    }\n\n    public updateReceivedPacketFromDataChannel(peerID: bigint, packetNumber: number, packetTotal: number) {\n        this.remotePeerRowMapRef.get(peerID)?.current?.updateReceivedPacketFromDataChannel(packetNumber, packetTotal);\n    }\n\n    private isConnected(): boolean { return this.state.peerIDs.length > 1; }\n\n    render(){\n        return (\n            <>\n                <Container>\n                    {this.isConnected() ?\n                        <ConnectedContainer>\n                            <ConnectedHeader ref={this.connectedHeaderRef} akaSessionID={this.state.akaSessionID} />\n                            {this.state.peerIDs.length > 1 &&\n                                <PeerListWrapper>\n                                    {this.state.peerIDs.map((peerID: bigint) => {\n                                        if (peerID === getCurrentPeerID())\n                                            return null;\n\n                                        const peerRef: React.RefObject<RemotePeerRow> =\n                                            React.createRef<RemotePeerRow>();\n                                        this.remotePeerRowMapRef.set(peerID, peerRef);\n\n                                        return <RemotePeerRow key={peerID.toString()} ref={peerRef} peerID={peerID} />;\n                                    })}\n                                </PeerListWrapper>\n                            }\n                        </ConnectedContainer>\n                        :\n                        <>\n                            <TitleContainer>\n                                <DSConnectIconWrapper> <DeepSightConnectIcon color={white} /> </DSConnectIconWrapper>\n                                DeepSight Connect\n                            </TitleContainer>\n                            <ConnectWrapper>\n                                <SessionCode akaSessionID={this.state.akaSessionID} />\n                                <Button\n                                    id=\"deepsight-connect-connect-btn\"\n                                    color=\"white\"\n                                    onClick={() => this.setState({ openConnectDialog: true })}\n                                    size=\"small\"\n                                >\n                                    {i18next.t(\"Connect\")}\n                                </Button>\n                            </ConnectWrapper>\n                        </>\n                    }\n                </Container>\n                {this.state.openConnectDialog &&\n                    <ConnectDialog onClose={() => this.setState({ openConnectDialog: false })} />\n                }\n            </>\n        )\n    }\n}\n", "import React from \"react\";\nimport {ReactElement} from \"react\";\nimport {dark} from \"../values/colors/colors\";\n\nexport function DeepSightConnect(props: {color?: string}): ReactElement {\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <rect fill={props.color ?? dark} width=\"2\" height=\"24\" rx=\"1\" />\n                <rect fill={props.color ?? dark} x=\"24\" y=\"24\" width=\"2\" height=\"9\" rx=\"1\" transform=\"rotate(-180 24 24)\" />\n                <rect fill={props.color ?? dark} y=\"2\" width=\"2\" height=\"9\" rx=\"1\" transform=\"rotate(-90 0 2)\" />\n                <rect fill={props.color ?? dark} x=\"24\" y=\"22\" width=\"2\" height=\"24\" rx=\"1\" transform=\"rotate(90 24 22)\" />\n                <path stroke={props.color ?? dark} d=\"M12 1L13.4939 1.00014C13.4939 1.00014 18.0184 0.971933 20.4654 3.50024C22.9123 6.02855 22.9552 11.0002 22.9552 11.0002L22.9552 12M12 5.50023C12 5.50023 15.0841 5.09703 16.9796 7.00016C18.8751 8.90329 18.4735 12.0003 18.4735 12.0003\" strokeWidth=\"2\" strokeLinecap=\"round\"/>\n                <path fill={props.color ?? dark} d=\"M13.3991 13.3165C12.5229 13.3165 11.8136 12.6043 11.8136 11.7244C11.8136 11.1401 12.1276 10.6307 12.5954 10.3529C12.0969 10.1258 11.5434 10.0001 10.9593 10.0001C8.75881 10.0001 6.97559 11.7906 6.97559 14.0001C6.97559 16.2095 8.75881 18.0001 10.9593 18.0001C13.1598 18.0001 14.943 16.2095 14.943 14.0001C14.943 13.5194 14.8595 13.0585 14.7036 12.6329C14.4159 13.0453 13.9394 13.3165 13.3991 13.3165Z\" />\n                <path fill={props.color ?? dark} d=\"M16.9348 22.5001C16.9348 21.3066 16.3052 20.162 15.1846 19.3181C14.064 18.4742 12.5441 18.0001 10.9592 18.0001C9.37443 18.0001 7.85453 18.4742 6.7339 19.3181C5.61327 20.162 4.9837 21.3066 4.9837 22.5001L10.9592 22.5001H16.9348Z\" />\n        </svg>\n    );\n}\n", "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {dark, grey, white} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Dialog} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box} from \"@mui/material\";\nimport { Button } from \"@root/react-components/src/buttons/Button\";\n\nconst Wrapper = styled(Box)({\n    width: \"300px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"space-around\",\n    gap: \"24px\"\n});\n\nconst InputsContainer = styled(\"form\")({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    maxWidth: \"300px\",\n    width: \"100%\"\n});\n\nconst InputWrapper = styled(\"input\")({\n    height: \"38px\",\n    width: \"26px\",\n    border: `1px solid ${ grey }`,\n    borderRadius: \"3px\",\n    outline: \"0\",\n    textAlign: \"center\",\n    font: secondaryFontMedium,\n    color: dark\n});\n\nconst Text = styled(Box)({\n    font: secondaryFontMedium,\n    color: dark,\n    textAlign: \"center\"\n});\n\nconst ACCEPTED_CHARS: string[] = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"Backspace\", \"Enter\", \"Escape\"];\n\ninterface ConnectDialogState { sessionCode: string[]; }\ninterface ConnectDialogProps { onClose: () => void; }\n\nexport class ConnectDialog extends React.Component {\n    props: ConnectDialogProps;\n    state: ConnectDialogState = { sessionCode: [\"\", \"\", \"\", \"\", \"\", \"\"] };\n    private readonly inputs: React.RefObject<HTMLInputElement>[] = [\n        React.createRef<HTMLInputElement>(),\n        React.createRef<HTMLInputElement>(),\n        React.createRef<HTMLInputElement>(),\n        React.createRef<HTMLInputElement>(),\n        React.createRef<HTMLInputElement>(),\n        React.createRef<HTMLInputElement>(),\n    ];\n\n    componentDidMount() { this.inputs[0].current?.focus(); }\n\n    private updateValue(event: React.KeyboardEvent, index: number) {\n        event.preventDefault();\n\n        let key: string = event.key;\n        if (!ACCEPTED_CHARS.includes(key))\n            return;\n\n        if (key === \"Backspace\") {\n            key = \"\";\n\n            if (index - 1 >= 0)\n                this.inputs[index - 1].current?.focus();\n        }\n        else if (key === \"Enter\"){\n            this.submitCode();\n            return;\n        }\n\n        if (key && index + 1 !== this.inputs.length)\n            this.inputs[index + 1].current?.focus();\n\n        this.setState((prevState: ConnectDialogState) => ({\n                sessionCode: prevState.sessionCode.map((input: string, i: number) => {\n                    return index === i ? key : input;\n                })\n            }));\n    }\n\n    private submitCode() {\n        for (let i: number = 0; i < this.state.sessionCode.length; i++)\n            if (!this.state.sessionCode[i])\n                return;\n\n        window.location.href = `/session/${this.state.sessionCode.join(\"\")}`;\n    }\n\n    render() {\n        return (\n            <Dialog backgroundColor={white} closeOnClickOutside onClose={() => this.props.onClose()}>\n                <Wrapper>\n                    <Text> {i18next.t(\"Enter the six numbers session code\")} </Text>\n                    <InputsContainer>\n                        {this.state.sessionCode.map((input: string, index: number) => {\n                            return (\n                                <InputWrapper\n                                    value={this.state.sessionCode[index]}\n                                    key={index}\n                                    id={`session-${index}`}\n                                    ref={this.inputs[index]}\n                                    onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => this.updateValue(e, index)}\n                                    onChange={() => {}}\n                                />\n                            )\n                        })}\n                    </InputsContainer>\n                    <Button\n                        id=\"DS-connect-confirm-btn\"\n                        onClick={() => this.submitCode()} style={{ width: \"fit-content\", margin: \"auto\" }}\n                    >\n                        {i18next.t(\"Connect\")}\n                    </Button>\n                </Wrapper>\n            </Dialog>\n        )\n    }\n}\n", "import React from \"react\"\nimport {Loading} from \"@root/react-components/src/logo/Loading\";\nimport {Box, styled} from \"@mui/material\";\nimport {white} from \"@root/react-components/src/values/colors/colors\";\nimport {secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {copyToClipBoard} from \"@utils/utils\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    font: secondaryFontMedium,\n    gap: \"2px\",\n    border: `solid 2px ${white}`,\n    color: white,\n    width: \"75px\",\n    height: \"30px\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderRadius: \"16px\",\n});\n\nconst LoadingWrapper = styled(Box)({\n    display: \"flex\",\n    width: \"16px\",\n    height: \"16px\",\n    alignItems: \"center\",\n    margin: \"auto\",\n});\n\nconst SessionCodeContainer = styled(Box)({\n    cursor: \"pointer\",\n    display: \"flex\",\n    justifyContent: \"left\",\n    gap: \"2px\",\n    \"&:hover > div\": { display: \"block\" }\n});\n\ninterface SessionCodeProps { akaSessionID: number; }\nexport class SessionCode extends React.Component {\n    props: SessionCodeProps;\n\n    private handleCopyToClipBoard() {\n        if (!this.props.akaSessionID)\n            return;\n\n        // construct URL of the session\n        const akaSessionID: string = this.props.akaSessionID.toString().padStart(6, \"0\");\n        const url: URL = new URL(window.location.href);\n        const sessionURL: string = `${url.protocol}//${url.host}/session/${akaSessionID}`;\n\n        copyToClipBoard(sessionURL);\n    }\n\n    render() {\n        return (\n            <Container>\n                { this.props.akaSessionID ?\n                    <SessionCodeContainer id=\"akaSessionID\" onClick={() => this.handleCopyToClipBoard()}>\n                        {this.props.akaSessionID}\n                    </SessionCodeContainer>\n                    :\n                    <LoadingWrapper> <Loading /> </LoadingWrapper>\n                }\n            </Container>\n        )\n    }\n}\n", "import React from \"react\"\nimport {Box, IconButton, Input, styled} from \"@mui/material\";\nimport {SessionCode} from \"@root/Frontend/Studio/Views/DeepSightConnect/SessionCode\";\nimport {Logout} from \"@root/react-components/src/icons/Logout\";\nimport {white, red, primary, lightGrey} from \"@root/react-components/src/values/colors/colors\";\nimport {Pointer} from \"@root/react-components/src/icons/Pointer\";\nimport {AddImage} from \"@root/react-components/src/icons/AddImage\";\nimport {\n    addImageToSession,\n    dismissPointer,\n    getFollowedPeer,\n    isPointerVisible\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSession\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Dialog} from \"@root/Frontend/Studio/DialogContainer\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {isInputFileAnImage} from \"@utils/utils\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n});\n\nconst ButtonWrapper = styled(Box)((props: { backgroundcolor: string }) => ({\n    backgroundColor: props.backgroundcolor,\n    borderRadius: \"30px\",\n    height: \"30px\",\n    width: \"30px\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n}));\n\nconst IconButtonWrapper = styled(IconButton)({\n    \"& svg\": { width: \"20px\", height: \"20px\" }\n});\n\nconst DialogButtonsContainer = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"end\",\n    gap: \"8px\"\n});\n\ninterface ConnectedHeaderProps { akaSessionID: number; }\ninterface ConnectedHeaderState {\n    followPeerID: bigint;\n    isClosingSessionDialog: boolean;\n    isPointerDismissible: boolean;\n}\n\nexport class ConnectedHeader extends React.Component {\n    props: ConnectedHeaderProps;\n    state: ConnectedHeaderState = {\n        followPeerID: BigInt(0),\n        isClosingSessionDialog: false,\n        isPointerDismissible: false\n    }\n\n    private readonly inputImageRef: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n\n    public updateSession() {\n        const followPeerID: bigint = getFollowedPeer();\n        if (this.state.followPeerID !== followPeerID)\n            this.setState({ followPeerID });\n\n        const isPointerDismissible: boolean = isPointerVisible();\n        if (isPointerDismissible !== this.state.isPointerDismissible) {\n            this.setState({ isPointerDismissible });\n        }\n    }\n\n    private dismissPointer() {\n        this.setState({ isPointerDismissible: false }, () => dismissPointer());\n    }\n\n    private showTooltipPointer(): string {\n        if (!this.state.followPeerID)\n            return i18next.t(\"You must be in first-person view to activate the pointer\");\n        else if (this.state.isPointerDismissible)\n            return i18next.t(\"Dismiss the pointer\");\n\n        return i18next.t(\"Click to place a pointer\");\n    }\n    private handleChangeImageFile(e: React.ChangeEvent<HTMLInputElement>) {\n        if (!e.target.files?.length)\n            return;\n\n        const file: File = e.target.files[0];\n\n        // Verify file extension\n        if (!isInputFileAnImage(file)) {\n            const alertMessage: string = `${i18next.t(\"Could not load image\")} ${file.name} \n                                          ${i18next.t(\"because we do not support this file format\")}.`\n            Prompt.alert(alertMessage);\n            return;\n        }\n\n        // Verify file size is smaller than 10MB\n        const oneMegabit: number = 1000000;\n        if (file.size / oneMegabit > 10) {\n            const alertMessage: string = `${i18next.t(\"Could not load image\")} ${file.name} \n                                          ${i18next.t(\"because it is bigger than 10MB\")}.`;\n            Prompt.alert(alertMessage);\n            return;\n        }\n\n        // Verify image resolution\n        const image: HTMLImageElement = new Image();\n        image.src = window.URL.createObjectURL(file);\n        image.onload = async () => {\n            if (Math.max(image.naturalWidth, image.naturalHeight) > 4096) {\n                const alertMessage: string =\n                    `${i18next.t(\"Could not load image\")} ${file.name} \n                     ${i18next.t(\"because it is over the max supported resolution of 4096 x 4096\")}.`;\n                Prompt.alert(alertMessage);\n                return;\n            }\n\n            const imageFilePath: string = await AdapterUtils.saveFileToCore(file);\n            if (!addImageToSession(imageFilePath)) {\n                const alertMessage: string = `${i18next.t(\"Could not load image\")} ${file.name}.`\n                Prompt.alert(alertMessage);\n            }\n            window.URL.revokeObjectURL(image.src);\n        };\n    }\n\n    // clear input file on each click, otherwise onChange event is not triggered if the same file is put twice in a row\n    private clearInputFile(e: React.MouseEvent<HTMLInputElement>): void{\n        const input: HTMLInputElement = e.target as HTMLInputElement;\n        input.value = \"\";\n    }\n\n    render() {\n        return (\n            <Container>\n                <SessionCode akaSessionID={this.props.akaSessionID} />\n                <Box style={{ display: \"flex\", gap: \"4px\" }}>\n                    <Input type=\"file\" inputRef={this.inputImageRef} sx={{display: \"none\"}}\n                           id=\"input-session-image-file\"\n                           onClick={(e: React.MouseEvent<HTMLInputElement>) => this.clearInputFile(e)}\n                           onChange={(e: React.ChangeEvent<HTMLInputElement>) => this.handleChangeImageFile(e)}/>\n                    <Tooltip\n                        title={i18next.t(\"Add image to the session\")}\n                        placement=\"bottom-end\"\n                        enterDelay={1000}\n                        enterNextDelay={1000}\n                    >\n                        <ButtonWrapper backgroundcolor={Boolean(this.state.followPeerID) ? lightGrey : primary}>\n                            <IconButtonWrapper\n                                disabled={Boolean(this.state.followPeerID)}\n                                onClick={() => this.inputImageRef.current?.click() }\n                                sx={{ \"& svg\": { width: \"21px\", height: \"21px\" } }}\n                            >\n                                <AddImage fill={white} />\n                            </IconButtonWrapper>\n                        </ButtonWrapper>\n                    </Tooltip>\n                    <Tooltip\n                        title={this.showTooltipPointer()}\n                        placement=\"bottom-end\"\n                        enterDelay={1000}\n                        enterNextDelay={1000}\n                    >\n                        <ButtonWrapper backgroundcolor={this.state.isPointerDismissible ? primary : lightGrey}>\n                            <IconButtonWrapper\n                                onClick={() => this.dismissPointer()}\n                                disabled={!this.state.isPointerDismissible}\n                                sx={{ \"& svg\": { width: \"24px\", height: \"24px\" } }}\n                            >\n                                <Pointer fill={white} />\n                            </IconButtonWrapper>\n                        </ButtonWrapper>\n                    </Tooltip>\n                    <Tooltip\n                        title={i18next.t(\"Quit session\")}\n                        placement=\"bottom-end\"\n                        enterDelay={1000}\n                        enterNextDelay={1000}\n                    >\n                        <ButtonWrapper backgroundcolor={red}>\n                            <IconButtonWrapper onClick={() => this.setState({ isClosingSessionDialog: true })}>\n                                <Logout fill={white} />\n                            </IconButtonWrapper>\n                        </ButtonWrapper>\n                    </Tooltip>\n                </Box>\n                {this.state.isClosingSessionDialog &&\n                    <Dialog>\n                        <Box style={{ font: primaryFontXLarge }}>{i18next.t(\"Warning\")}</Box>\n                        <Box style={{ padding: \"8px 0px 12px 0px\" }}>\n                            {i18next.t(\"Are you sure you want to exit DeepSight Connect\")}\n                        </Box>\n                        <DialogButtonsContainer>\n                            <Button variant=\"outlined\" onClick={() => this.setState({ isClosingSessionDialog: false })}>\n                                {i18next.t(\"Cancel\")}\n                            </Button>\n                            <Button onClick={() => window.location.href = \"/\"}>{i18next.t(\"Confirm\")}</Button>\n                        </DialogButtonsContainer>\n                    </Dialog>\n                }\n            </Container>\n        )\n    }\n}\n", "import React from \"react\";\nimport {dark} from \"../values/colors/colors\";\n\nexport function Logout (props: {fill?:string}) {\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path fill={props.fill ?? dark} d=\"M4.5 22.5H7.5C8.32969 22.5 9 21.8297 9 21C9 20.1703 8.32969 19.5 7.5 19.5H4.5C3.67172 19.5 3 18.8283 3 18V6C3 5.17172 3.67172 4.5 4.5 4.5H7.5C8.32969 4.5 9 3.82828 9 3C9 2.17172 8.32969 1.5 7.5 1.5H4.5C2.01469 1.5 0 3.51469 0 6V18C0 20.4844 2.01469 22.5 4.5 22.5ZM23.6625 11.1797L16.9078 4.80469C16.5809 4.49634 16.1016 4.41211 15.6891 4.58934C15.2764 4.76733 15.0089 5.17388 15.0089 5.62294L15.0046 8.99794L9.0046 8.99789C8.17538 8.99789 7.50367 9.66961 7.50367 10.4979V13.4979C7.50367 14.3262 8.17585 14.9979 9.0046 14.9979L15.0046 14.9979L15.0089 18.3307C15.0089 18.7797 15.2764 19.1862 15.6891 19.3643C16.1017 19.5416 16.5811 19.4573 16.9078 19.149L23.6625 12.774C24.1125 12.3937 24.1125 11.6062 23.6625 11.1797Z\"/>\n        </svg>\n    )\n}\n", "import React from \"react\";\nimport {dark} from \"../values/colors/colors\";\n\nexport function Pointer (props: {fill?:string}) {\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <circle cx=\"12\" cy=\"12\" r=\"11\" stroke={props.fill ?? dark} strokeWidth=\"2\"/>\n            <path d=\"M4.5 4.5L19.6332 19.9511\" stroke={props.fill ?? dark} strokeWidth=\"2\"/>\n            <path fill={props.fill ?? dark} fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M14.4961 4C14.8684 4 15.1702 4.3018 15.1702 4.67408V7.33911C15.1702 7.7114 14.8684 8.01319 14.4961 8.01319C14.1239 8.01319 13.8221 7.7114 13.8221 7.33911V4.67408C13.8221 4.3018 14.1239 4 14.4961 4Z\"/>\n            <path fill={props.fill ?? dark} fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10.4965 5.81993C10.7614 5.55794 11.1907 5.55752 11.4552 5.819L13.4775 7.81778C13.742 8.07926 13.7417 8.50362 13.4768 8.76561C13.2118 9.02761 12.7826 9.02802 12.518 8.76654L10.4958 6.76776C10.2313 6.50628 10.2316 6.08192 10.4965 5.81993Z\"/>\n            <path fill={props.fill ?? dark} fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M18.7182 5.13477C18.9956 5.38297 19.0167 5.80677 18.7653 6.08135L16.6299 8.41325C16.3785 8.68783 15.9498 8.70922 15.6723 8.46102C15.3949 8.21281 15.3738 7.78902 15.6252 7.51444L17.7606 5.18253C18.012 4.90795 18.4408 4.88657 18.7182 5.13477Z\"/>\n            <path fill={props.fill ?? dark} fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M15.9519 9.41037C15.9519 9.03809 16.2538 8.73627 16.626 8.73625L19.3224 8.73608C19.6947 8.73606 19.9964 9.03784 19.9964 9.41012C19.9964 9.7824 19.6946 10.0842 19.3223 10.0842L16.626 10.0844C16.2537 10.0844 15.9519 9.78265 15.9519 9.41037Z\"/>\n            <path fill={props.fill ?? dark} fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M15.5025 10.5671C15.7425 10.2825 16.17 10.2437 16.4574 10.4805L18.4796 12.1461C18.7671 12.3829 18.8055 12.8054 18.5656 13.09C18.3257 13.3746 17.8982 13.4133 17.6107 13.1766L15.5885 11.511C15.3011 11.2742 15.2626 10.8516 15.5025 10.5671Z\"/>\n            <path fill={props.fill ?? dark} fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M6.4884 17.6475C6.05892 17.2303 5.92364 16.6782 6.18623 16.4143L13.94 8.62217C14.2026 8.35828 14.7636 8.48254 15.1931 8.89973C15.6226 9.31692 15.7579 9.86905 15.4953 10.1329L7.74152 17.9251C7.47892 18.189 6.91788 18.0647 6.4884 17.6475Z\"/>\n            <path fill={props.fill ?? dark}  d=\"M8.28706 13.4199C8.55184 13.1582 8.98216 13.1592 9.24822 13.4222L10.6389 14.7967C10.9049 15.0597 10.906 15.485 10.6412 15.7467L7.52556 18.8262C6.87861 19.4656 5.82717 19.4631 5.17709 18.8206V18.8206C4.52701 18.1781 4.52446 17.1388 5.17141 16.4994L8.28706 13.4199Z\"/>\n        </svg>\n    )\n}\n", "import React from 'react';\nimport {dark} from \"../values/colors/colors\";\n\nexport function AddImage (props: {fill?:string}) {\n    return (<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g clipPath=\"url(#clip0_2878_292)\">\n            <path fill={props.fill} d=\"M6.63988 13.5585C6.78956 13.4377 6.99513 13.4461 7.13629 13.5787L10.6552 16.8853V23.0984H2.28C1.83817 23.0984 1.48 22.7044 1.48 22.2184V17.7223L2 17.3027L6.63988 13.5585Z\"/>\n            <path fill={props.fill} d=\"M15.7857 11.9007C15.9303 11.7603 16.1453 11.7533 16.2971 11.884L20 15.073L20.48 15.4864V22.2184C20.48 22.7044 20.1218 23.0984 19.68 23.0984L10.6552 23.0984V16.8853L15.7857 11.9007Z\"/>\n            <path fill={props.fill} d=\"M8.6 8.97439C8.6 10.1894 7.70457 11.1744 6.6 11.1744C5.49543 11.1744 4.6 10.1894 4.6 8.97439C4.6 7.75937 5.49543 6.77439 6.6 6.77439C7.70457 6.77439 8.6 7.75937 8.6 8.97439Z\"/>\n            <path fill={props.fill} d=\"M3 2C1.34315 2 0 3.47746 0 5.3V20.7C0 22.5225 1.34315 24 3 24H19C20.6569 24 22 22.5225 22 20.7V11C21.2543 11.5628 20.8158 11.7518 20 11.884V15.073L20.48 15.4864V22.2184C20.48 22.7044 20.1218 23.0984 19.68 23.0984L10.6552 23.0984H2.28C1.83817 23.0984 1.48 22.7044 1.48 22.2184V17.7223L2 17.3027V5.3C2 4.69249 2.44772 4.2 3 4.2H12C12.1003 3.40801 12.5 2.5 13 2H3Z\" />\n            <circle cx=\"18.5\" cy=\"5.5\" r=\"4.875\" stroke={props.fill} strokeWidth=\"1.25\"/>\n            <path fill={props.fill} d=\"M21.5 4.75H19.25V2.5C19.25 2.22391 19.0261 2 18.75 2H18.25C17.9739 2 17.75 2.22391 17.75 2.5V4.75H15.5C15.2239 4.75 15 4.97391 15 5.25V5.75C15 6.02609 15.2239 6.25 15.5 6.25H17.75V8.5C17.75 8.77609 17.9739 9 18.25 9H18.75C19.0261 9 19.25 8.77609 19.25 8.5V6.25H21.5C21.7761 6.25 22 6.02609 22 5.75V5.25C22 4.97391 21.7761 4.75 21.5 4.75Z\"/>\n        </g>\n        <defs>\n            <clipPath id=\"clip0_2878_292\">\n                <rect width=\"24\" height=\"24\" fill=\"white\"/>\n            </clipPath>\n        </defs>\n    </svg>)\n}", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {\n    getFollowedPeer,\n    getPeerConnectionStatus,\n    getPeerTypeOS,\n    isPeerAvatarHidden,\n    setTargetPeer\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSession\";\nimport {getPeerFullName} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {primaryFontXSmall, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {TypeOS} from \"@backend/Types/TypeOS\";\nimport {Hide} from \"@root/react-components/src/icons/Hide\";\nimport {Unhide} from \"@root/react-components/src/icons/Unhide\";\nimport {ConnectionLoading} from \"@root/Frontend/Studio/Views/DeepSightConnect/ConnectionLoading\";\nimport i18next from \"i18next\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {u8vec3} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nconst PeerContainer = styled(Box)({\n    display: \"flex\",\n    width: \"100%\",\n    height: \"45px\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    gap: \"8px\",\n    font: secondaryFontMedium,\n    color: white,\n});\n\nconst PeerName = styled(Box)({\n    textOverflow: \"ellipsis\",\n    overflow: \"hidden\",\n    width: \"100px\",\n    whiteSpace: \"normal\"\n})\n\nconst IconWrapper = styled(Box)((props: {disabled: number}) => ({\n    pointerEvents: props.disabled ? \"none\" : \"auto\",\n    opacity: props.disabled ? \"0.7\" : \"1\",\n    \"&:hover\": {\n        cursor: \"pointer\",\n        fill: primary,\n        color: primary\n    },\n    \"& svg\": {\n        width: \"20px\",\n        height: \"20px\",\n    }\n}));\n\nconst LoadingContainer = styled(Box)((props: {color: string})=> ({\n    color: props.color,\n    width: \"36px\",\n    height: \"36px\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n}));\n\nconst InformationContainer = styled(Box)({\n    display: \"flex\",\n    gap: \"6px\",\n    alignItems: \"center\",\n    position: \"relative\"\n});\n\ninterface RemotePeerRowProps { peerID: bigint; }\ninterface RemotePeerRowState {\n    fullName: string;\n    connectionStatus: RTCPeerConnectionState;\n    typeOS: TypeOS;\n    isFollowDisabled: boolean;\n    isFollowed: boolean;\n}\n\nexport class RemotePeerRow extends React.Component {\n    private readonly connectionLoadingRef: React.RefObject<ConnectionLoading> = React.createRef<ConnectionLoading>();\n    props: RemotePeerRowProps;\n    state: RemotePeerRowState = {\n        fullName: \"\",\n        connectionStatus: \"new\",\n        typeOS: TypeOS.UNKNOWN,\n        isFollowDisabled: false,\n        isFollowed: false,\n    }\n\n    componentDidMount() {\n        this.updatePeer();\n    }\n\n    public updatePeer() {\n        const fullName: string = getPeerFullName(this.props.peerID);\n        const connectionStatus: string = getPeerConnectionStatus(this.props.peerID);\n        const typeOS: TypeOS = getPeerTypeOS(this.props.peerID);\n        const isFollowDisabled: boolean = isPeerAvatarHidden(this.props.peerID);\n        const isFollowed: boolean = getFollowedPeer() === this.props.peerID;\n\n        if (fullName !== this.state.fullName)\n            this.setState({ fullName });\n\n        if (connectionStatus !== this.state.connectionStatus)\n            this.setState({ connectionStatus });\n\n        if (typeOS !== this.state.typeOS)\n            this.setState({ typeOS });\n\n        if (isFollowDisabled !== this.state.isFollowDisabled)\n            this.setState({ isFollowDisabled });\n\n        if (isFollowed !== this.state.isFollowed)\n            this.setState({ isFollowed });\n    }\n\n    public updateReceivedPacketFromDataChannel(packetNumber: number, packetTotal: number) {\n        this.connectionLoadingRef.current?.updateReceivedPacketFromDataChannel(packetNumber, packetTotal);\n    }\n\n    private toggleSetTargetPeer(peerID: bigint) {\n        const isFollowed: boolean = setTargetPeer(this.state.isFollowed ? BigInt(0) : peerID);\n        this.setState({ isFollowed });\n    }\n\n    render() {\n        const generatedColor: u8vec3 = App.getInstance().getEngine().getColorFromHash(this.props.peerID);\n        const color: string = `rgb(${generatedColor.r},${generatedColor.g},${generatedColor.b})`;\n        return (\n            <PeerContainer id=\"deepsight-connect-peer-row\">\n                <InformationContainer>\n                    <LoadingContainer color={color}>\n                        <ConnectionLoading ref={this.connectionLoadingRef} color={color} typeOS={this.state.typeOS} />\n                    </LoadingContainer>\n                    <Box>\n                        <PeerName> {this.state.fullName} </PeerName>\n                        <Box style={{ font: primaryFontXSmall }}>\n                            {i18next.t(\"Status\")}: {i18next.t(this.state.connectionStatus)}\n                        </Box>\n                    </Box>\n                </InformationContainer>\n                {this.state.typeOS !== TypeOS.WEB && this.state.typeOS !== TypeOS.UNKNOWN &&\n                    <Tooltip\n                        title={i18next.t(this.state.isFollowed ? \"Quit first-person\" : \"Enter first-person\")}\n                        placement=\"left-end\"\n                        enterDelay={1000}\n                        enterNextDelay={1000}\n                    >\n                        <IconWrapper\n                            disabled={Number(!this.state.isFollowed && this.state.isFollowDisabled)}\n                            onClick={() => this.toggleSetTargetPeer(this.props.peerID)}\n                        >\n                            {this.state.isFollowed ? <Unhide /> : <Hide />}\n                        </IconWrapper>\n                    </Tooltip>\n                }\n            </PeerContainer>\n        );\n    }\n}", "import {Box, styled} from \"@mui/material\";\nimport * as React from 'react';\nimport {TypeOS} from \"@backend/Types/TypeOS\";\nimport {Computer} from \"@root/react-components/src/icons/Computer\";\nimport {HoloGlasses} from \"@root/react-components/src/icons/HoloGlasses\";\nimport {AppleLogo} from \"@root/react-components/src/icons/AppleLogo\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    height: \"36px\",\n    width: \"36px\"\n});\n\nconst IconTypeOSContainer = styled(Box)({\n    width: \"20px\",\n    height: \"20px\",\n    \"& svg\": { width: \"20px\", height: \"20px\" }\n});\n\nconst STROKE_CIRCULAR_PROGRESS: number = 101;\nconst CircularLoading = styled(\"svg\")({\n    width: \"36px\",\n    height: \"36px\",\n    position: \"absolute\",\n    \"& #circular-loading-deepsight-connect\" : {\n        fill: \"none\",\n        strokeWidth: \"3px\",\n        transform: \"rotate(-90deg)\",\n        transformOrigin: \"50%\",\n        strokeDasharray: STROKE_CIRCULAR_PROGRESS.toString(),\n        strokeDashoffset: STROKE_CIRCULAR_PROGRESS.toString(),\n    }\n});\n\nexport class ConnectionLoading extends React.Component {\n    props: { typeOS: TypeOS; color: string };\n    private readonly circleRef: React.RefObject<SVGCircleElement> = React.createRef<SVGCircleElement>();\n\n    public updateReceivedPacketFromDataChannel(packetNumber: number, packetTotal: number) {\n        const strokeDashOffset: number = STROKE_CIRCULAR_PROGRESS * (packetTotal - packetNumber - 1) / packetTotal;\n        this.circleRef.current?.style.setProperty(\"stroke-dashoffset\", strokeDashOffset.toString());\n    }\n\n    private renderTypeOSIcon(typeOS: TypeOS) {\n        switch (typeOS) {\n            case TypeOS.APPLE: return <AppleLogo />;\n            case TypeOS.WEB: return <Computer />;\n            case TypeOS.HOLOLENS: return <HoloGlasses size={22} />;\n            default: return <Box style={{ width: \"24px\", height: \"24px\"}}></Box>;\n        }\n    }\n\n    render() {\n        return (\n            <Container>\n                <IconTypeOSContainer>{this.renderTypeOSIcon(this.props.typeOS)}</IconTypeOSContainer>\n                <CircularLoading>\n                    <circle\n                        id=\"circular-loading-deepsight-connect\"\n                        ref={this.circleRef} cx=\"18\" cy=\"18\" r=\"16\" stroke={this.props.color} />\n                </CircularLoading>\n            </Container>\n        )\n    }\n}\n", "import * as React from 'react';\n\nexport function Computer() {\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path d=\"M1.5 22H22.5\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\"/>\n            <rect x=\"2.5\" y=\"1.5\" width=\"19\" height=\"17\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"3\"/>\n            <line x1=\"4\" y1=\"20.5\" x2=\"20\" y2=\"20.5\" stroke=\"currentColor\"/>\n        </svg>\n\n    )\n}\n", "import React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function AppleLogo(): JSX.Element {\n    return <SvgIcon xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path d=\"M6.70671 23.5475C6.31317 23.2889 5.90389 22.9172 5.49461 22.4C5.21127 22.0606 4.86495 21.5758 4.45567 20.9455C3.74731 19.895 3.16487 18.6828 2.72411 17.3091C2.23612 15.8061 2 14.3677 2 12.9616C2 11.3939 2.33057 10.0202 2.97597 8.87273C3.4797 7.95152 4.15659 7.22424 5.02237 6.69091C5.88815 6.14141 6.80116 5.86667 7.79287 5.85051C8.13919 5.85051 8.50124 5.89899 8.89478 5.99596C9.17813 6.07677 9.52444 6.20606 9.93372 6.36768C10.4689 6.57778 10.768 6.70707 10.8625 6.73939C11.1773 6.85253 11.4449 6.90101 11.6495 6.90101C11.807 6.90101 12.0273 6.85253 12.2792 6.77172C12.4209 6.72323 12.6885 6.62626 13.0663 6.46465C13.4441 6.31919 13.7432 6.20606 13.9793 6.10909C14.3413 5.99596 14.6877 5.89899 15.0025 5.85051C15.3803 5.78586 15.7581 5.7697 16.1201 5.80202C16.8128 5.85051 17.4424 5.99596 18.0091 6.22222C19.0008 6.62626 19.8036 7.27273 20.4018 8.17778C20.15 8.33939 19.9138 8.51717 19.6935 8.72727C19.2055 9.1798 18.7962 9.68081 18.4971 10.2303C18.0721 11.0061 17.8674 11.8626 17.8674 12.7515C17.8832 13.8343 18.1508 14.7879 18.686 15.6121C19.0638 16.2101 19.5675 16.7273 20.1814 17.1475C20.4805 17.3576 20.7481 17.503 21 17.6C20.8741 18.0202 20.7324 18.3919 20.6065 18.699C20.2601 19.5394 19.8509 20.299 19.3944 21.0101C18.9693 21.6404 18.6388 22.1091 18.3869 22.4162C17.9934 22.901 17.6156 23.2566 17.2378 23.5152C16.797 23.8061 16.3248 23.9515 15.821 23.9515C15.4747 23.9677 15.1442 23.9192 14.8136 23.8222C14.6247 23.7576 14.3413 23.6606 13.9793 23.499C13.6172 23.3374 13.3181 23.2242 13.0978 23.1596C12.7357 23.0626 12.3579 23.0141 11.9644 23.0141C11.5708 23.0141 11.193 23.0626 10.831 23.1596C10.5791 23.2242 10.2958 23.3374 9.94946 23.4828C9.54018 23.6606 9.27258 23.7737 9.11516 23.8222C8.80033 23.9192 8.46976 23.9838 8.15493 24C7.6512 24 7.17896 23.8545 6.70671 23.5475ZM13.3811 5.09091C12.72 5.4303 12.0903 5.57576 11.4606 5.52727C11.3662 4.88081 11.4606 4.21818 11.7283 3.49091C11.9644 2.87677 12.2792 2.31111 12.7042 1.8101C13.1292 1.30909 13.6487 0.888889 14.2941 0.549495C14.9395 0.210101 15.5534 0.0323232 16.1359 0C16.2146 0.678788 16.1359 1.35758 15.8998 2.06869C15.6794 2.71515 15.3488 3.29697 14.9238 3.8303C14.4988 4.36364 13.9793 4.78384 13.3811 5.09091Z\" fill=\"currentColor\"/>\n    </SvgIcon>\n}\n", "import * as React from 'react';\nimport {PartsList} from \"@root/Frontend/Studio/Views/PartsList/PartsList\";\nimport {AddAssetButton} from \"@root/Frontend/Studio/Views/AssetsDialog/AddAssetButton\";\nimport {AnchorsButton} from \"@root/Frontend/Studio/Views/Anchors/AnchorsButton\";\nimport {Box, styled} from \"@mui/material\";\nimport {AssetDialog} from \"@root/Frontend/Studio/Views/AssetsDialog/AssetDialog\";\nimport {AssetType} from \"@backend/Types/AssetType\";\nimport {addAsset} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\n\nconst AssetPanelContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\"\n})\n\nexport class AssetPanel extends React.Component {\n    state: { openedDialogAssetID: bigint | null, worldID: bigint } = { openedDialogAssetID: null, worldID: BigInt(0) };\n\n    private assetDialogRef: React.RefObject<AssetDialog> = React.createRef<AssetDialog>();\n    private assetsButtonRef: React.RefObject<AddAssetButton> = React.createRef<AddAssetButton>();\n    private anchorsButtonRef: React.RefObject<AnchorsButton> = React.createRef<AnchorsButton>();\n    private partsListRef: React.RefObject<PartsList> = React.createRef();\n\n    public updatePanelButtons(): void {\n        this.assetsButtonRef.current?.updateButtonDisabledState();\n        this.anchorsButtonRef.current?.updateButtonDisabledState();\n    }\n\n    public updateWorld(worldID: bigint) { this.partsListRef.current?.updateWorld(worldID); }\n\n    public updateAsset(assetID: bigint) { this.partsListRef.current?.updateAsset(assetID); }\n\n    public updateNode(nodeID: bigint) { this.partsListRef.current?.updateNode(nodeID); }\n\n    public updateGroup(groupID: bigint) { this.assetDialogRef.current?.updateGroup(groupID); }\n\n    public updatePeer(peerID: bigint) { this.assetDialogRef.current?.updatePeer(peerID); }\n\n    public setSelectedNode(nodeID: bigint) { this.partsListRef.current?.setSelectedNode(nodeID); }\n\n    public updateDocument(documentID: bigint) { this.assetDialogRef.current?.updateDocument(documentID); }\n\n    public updateText(textID: bigint) { this.assetDialogRef.current?.updateText(textID); }\n\n    public updateVideoAsset(videoID: bigint) { this.assetDialogRef.current?.updateVideo(videoID); }\n\n    public openAnchorsDialog() { this.anchorsButtonRef.current?.openAnchorsDialog(); }\n\n    public closeAnchorsDialog() { this.anchorsButtonRef.current?.closeAnchorsDialog(); }\n\n    public isAssetDialogOpen(): boolean { return this.state.openedDialogAssetID !== null; }\n\n    /// Opens the Asset Dialog (0 means for creating a new Asset)\n    public openAssetsDialog(assetID: bigint = BigInt(0)): Promise<void> {\n        if (this.state.openedDialogAssetID !== assetID) {\n            return new Promise((resolve) => {\n                this.setState({openedDialogAssetID : assetID}, () => resolve());\n            });\n        }\n    }\n\n    public async importFile(file: File) : Promise<void> {\n\n        // if not open, open dialog\n        if(!this.assetDialogRef.current)\n            await this.openAssetsDialog();\n\n        await this.assetDialogRef.current?.importFile(file);\n    }\n\n    public stashRecentDocumentID(documentID: bigint) {\n        this.partsListRef.current?.stashRecentDocumentID(documentID);\n    }\n\n    public isDocumentRecent(documentID: bigint): boolean {\n        return this.partsListRef.current?.isDocumentRecent(documentID) ?? false;\n    }\n\n    private onCreateAsset(type: AssetType): bigint {\n\n        // verify we aren't attempting to create a new asset when we already have one!\n        if(this.state.openedDialogAssetID) {\n            AdapterLog.ERROR(\"Never create a new asset if already created!\");\n            return BigInt(0);\n        }\n\n        // unfortunately, AssetDocument cannot be created here. TODO(@frank): create Document, then inject into Asset!\n        if (type === AssetType.MODEL)\n            return BigInt(0);\n\n        // create the Asset with the correct type!\n        const assetID: bigint = addAsset(type, false);\n        this.setState({openedDialogAssetID: assetID});\n        return assetID;\n    }\n\n    public render() {\n        return (\n            <AssetPanelContainer>\n                <Box sx={{ display: \"flex\" }}>\n                    <AddAssetButton\n                        ref={this.assetsButtonRef}\n                        isTemporaryAsset={false}\n                        onClick={() => this.openAssetsDialog()}\n                    />\n                    <AnchorsButton ref={this.anchorsButtonRef} />\n                </Box>\n                <PartsList ref={this.partsListRef} />\n                {this.state.openedDialogAssetID !== null &&\n                    <AssetDialog ref={this.assetDialogRef}\n                                 assetID={this.state.openedDialogAssetID}\n                                 onCreateAsset={(type: AssetType) => this.onCreateAsset(type)}\n                                 onClose={() => this.setState({openedDialogAssetID: null})}\n                                 temporary={false} />\n                }\n            </AssetPanelContainer>\n        )\n    }\n}\n", "import * as React from \"react\";\nimport {\n    clickNodeID,\n    duplicateSelectedAssets,\n    getAssetID,\n    getAssetType,\n    getCurrentWorldID,\n    getNodeID,\n    getSelectedNodes,\n    isNodeActive,\n    isNodeModel,\n    removeDocument,\n    setHiddenRecursivelyNodeID\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {AssetType, getAssetTypeString} from \"@backend/Types/AssetType\";\nimport {\n    getStepsList,\n    getStepType,\n    isAssetForCurrentStep,\n    isStepAsset,\n    removeTemporaryAsset\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {darkenGrey, lightDark, lighterDark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {FixedSizeList as List, ListChildComponentProps} from \"react-window\";\nimport {Box, styled} from \"@mui/material\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Part} from \"@root/Frontend/Studio/Views/PartsList/PartsVirtualized/Part/Part\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {FilterStepAnimated, MainModule, Node} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport AutoSizer from \"react-virtualized-auto-sizer\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {isAssetForCurrentWorld, removeAssetFromWorld} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {isEqual} from \"lodash\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\n\nconst ListContainer = styled(Box)((props: {is_step: number})=> ({\n    height: props.is_step ? \"calc(100% - 55px)\" : \"100%\",\n    width: \"calc(100% - 24px)\",\n    padding: \"12px\",\n    \"& div\": {\n        outline: \"none\",\n        \"&::-webkit-scrollbar\": { width: \"10px\", height: \"10px\" },\n        /* Track */\n        \"&::-webkit-scrollbar-track\": { backgroundColor: props.is_step ? white : lighterDark },\n        /* Handle */\n        \"&::-webkit-scrollbar-thumb\": { background: props.is_step ? darkenGrey : lightDark },\n        /* Handle on hover */\n        \"&::-webkit-scrollbar-thumb:hover\": { background: props.is_step ? lightDark : lightDark },\n    },\n}));\n\nconst AssetTypeWrapper = styled(Box)(() => ({\n    color: white,\n    font: primaryFontLarge,\n}));\n\ntype AssetNode = { assetID: bigint, nodeID: bigint, depth: number };\n\ninterface PartsListState {\n    nodeListByType: Map<AssetType, AssetNode[]>;\n    nodesExpanded: Set<bigint>;\n    multiSelect: boolean;\n}\n\nexport interface PartsListProps {\n    stepID?: bigint;\n}\n\nexport class PartsList extends React.Component<PartsListProps, PartsListState> {\n    private readonly app: App = App.getInstance();\n    private mapNodesRef: Map<bigint, React.RefObject<Part>> = new Map();\n    private recentDocumentIDs: bigint[] = [];\n\n    // since are looking for the last depth of open nodes\n    private static readonly INITIAL_ASSET_DEPTH: number = 0;\n    private static readonly INITIAL_NODE_MODEL_DEPTH: number = 1;\n\n    state: PartsListState = {\n        nodeListByType: new Map(),\n        nodesExpanded: new Set<bigint>(),\n        multiSelect: false,\n    };\n\n    componentDidMount() {\n        window.addEventListener(\"keydown\", this.keyDownEvent);\n        window.addEventListener(\"keyup\", this.keyUpEvent);\n\n        if (this.props.stepID === BigInt(0))\n            return;\n\n        this.initializeList();\n    }\n\n    componentDidUpdate(prevProps: Readonly<PartsListProps>) {\n        if (prevProps.stepID !== this.props.stepID) {\n            if (this.props.stepID === BigInt(0) || getStepType(this.props.stepID ?? BigInt(0)) !== StepType.ANIMATED) {\n                this.setState({ nodeListByType: new Map(), nodesExpanded: new Set(), multiSelect: false });\n                return;\n            }\n\n            this.initializeList();\n        }\n    }\n\n    componentWillUnmount() {\n        window.removeEventListener(\"keydown\", this.keyDownEvent);\n        window.removeEventListener(\"keyup\", this.keyUpEvent);\n    }\n\n    public updateWorld(worldID: bigint) {\n        const currentWorldID: bigint = getCurrentWorldID();\n        if (worldID !== currentWorldID)\n            return;\n\n        this.initializeList();\n    }\n\n    public updateAsset(assetID: bigint) {\n        if (!isAssetForCurrentWorld(assetID) && !isAssetForCurrentStep(assetID))\n            return;\n\n        this.initializeList();\n    }\n\n    public updateNode(nodeID: bigint) {\n        const nodeRef: React.RefObject<Part> | undefined = this.getNodeRef(nodeID);\n        nodeRef?.current?.updateNode(nodeID);\n    }\n\n    public setSelectedNode(selectedNodeID: bigint) {\n        if (!selectedNodeID) {\n            for (const [nodeID, nodeRef] of this.mapNodesRef.entries())\n                nodeRef.current?.updateNode(nodeID);\n\n            return;\n        }\n\n        for (const nodeID of this.mapNodesRef.keys())\n            this.updateNode(nodeID);\n\n        this.openCaretsFromChildToRoot(selectedNodeID);\n    }\n\n    public stashRecentDocumentID(documentID: bigint) {\n        if (this.recentDocumentIDs.includes(documentID))\n            this.recentDocumentIDs.splice(this.recentDocumentIDs.indexOf(documentID), 1);\n\n        this.recentDocumentIDs.unshift(documentID);\n    }\n\n    public isDocumentRecent(documentID: bigint): boolean {\n        return this.recentDocumentIDs.includes(documentID);\n    }\n\n    private initializeList() {\n        const worldID: bigint = getCurrentWorldID();\n        if (!worldID)\n            return;\n\n        // build a map of asset nodes grouped by type, with the order defined in ASSET_TYPE_ORDER\n        const nodesExpanded: Set<bigint> = new Set();\n        const nodeListByType: Map<AssetType, AssetNode[]> = new Map();\n        const engine: MainModule = this.app.getEngine();\n        const filterStepAnimated: FilterStepAnimated = engine.getFilterStepAnimated();\n\n        // include temporary step assets if in step view, otherwise only world assets\n        const stepID: bigint = this.props.stepID ?? BigInt(0);\n        const worldAssetIDs: bigint[] = engine.getWorldAssetIDs(worldID);\n        const assetIDs: bigint[] = stepID ?\n            [...engine.getStepAssetIDs(stepID),\n             ...worldAssetIDs.filter((assetID: bigint) => filterStepAnimated.isWorldAssetDynamic(assetID))]\n            :\n            worldAssetIDs;\n\n        for (const assetID of assetIDs) {\n            // populate the assetNodes list with all the nodes associated with this asset\n            const assetType: AssetType = getAssetType(assetID);\n            const assetNodes: AssetNode[] = nodeListByType.get(assetType) ?? [];\n            const nodeID: bigint = getNodeID(assetID);\n            const assetNode: AssetNode = { assetID, nodeID, depth: PartsList.INITIAL_ASSET_DEPTH };\n\n            assetNodes.push(assetNode);\n\n            if (!nodeID || assetType !== AssetType.MODEL || isStepAsset(assetID)) {\n                nodeListByType.set(assetType, assetNodes);\n                continue;\n            }\n\n            // root model nodes are always expanded on initialization if we are not in step view\n            if (!this.props.stepID)\n                nodesExpanded.add(nodeID);\n\n            const childrenNodeIDs: bigint[] = this.collectNodeChildren(nodeID);\n            for (const childNodeID of childrenNodeIDs) {\n                const depth: number = this.getDepth(childNodeID, nodeID);\n                // push the nodes in the corresponding asset type key\n                const childAssetNode: AssetNode = { assetID, nodeID: childNodeID, depth };\n                assetNodes.push(childAssetNode);\n\n                if (!this.props.stepID && childAssetNode.depth <= PartsList.INITIAL_NODE_MODEL_DEPTH)\n                    nodesExpanded.add(childNodeID);\n            }\n\n            nodeListByType.set(assetType, assetNodes);\n        }\n\n        this.mapNodesRef.clear();\n        this.setState({ nodesExpanded, nodeListByType });\n    }\n\n    // DFS to get node children\n    private collectNodeChildren(rootNodeID: bigint): bigint[] {\n        if (getAssetType(getAssetID(rootNodeID)) !== AssetType.MODEL)\n            return [];\n\n        const children: bigint[] = [];\n        const stack: bigint[] = this.app.getEngine().getNodeChildrenIDs(rootNodeID);\n\n        while (stack.length > 0) {\n            const nodeID: bigint | undefined = stack.pop();\n            if (nodeID === undefined)\n                break;\n\n            children.push(nodeID);\n\n            // continue depth-first traversal by prioritizing the current node's children\n            stack.push(...this.app.getEngine().getNodeChildrenIDs(nodeID));\n        }\n\n        return children;\n    }\n\n    private getDepth(nodeID: bigint, rootNodeID: bigint): number {\n        if (!nodeID)\n            return 0;\n\n        const engine: MainModule = this.app.getEngine();\n        let depth: number = PartsList.INITIAL_NODE_MODEL_DEPTH;\n        let node: Node | null = engine.getNodeByID(nodeID)?.getParent() ?? null;\n\n        while (node) {\n            if (node.getID() === rootNodeID)\n                break;\n\n            depth++;\n\n            node = node.getParent();\n        }\n\n        return depth;\n    }\n\n    /************** Event functions **************/\n    private setNodeExpanded(nodeID: bigint, expanded: boolean) {\n        const nodesExpanded: Set<bigint> = new Set(this.state.nodesExpanded);\n\n        if (expanded && !nodesExpanded.has(nodeID)) {\n            nodesExpanded.add(nodeID);\n            this.setState({ nodesExpanded });\n            return;\n        }\n\n        if (!nodesExpanded.has(nodeID))\n            return;\n\n        const childrenNodeIDs: bigint[] = this.collectNodeChildren(nodeID);\n        for (const childNodeID of [nodeID, ...childrenNodeIDs])\n            nodesExpanded.delete(childNodeID);\n\n        this.setState({ nodesExpanded });\n    }\n\n    private openCaretsFromChildToRoot(childNodeID: bigint) {\n        const nodesExpanded: Set<bigint> = new Set(this.state.nodesExpanded);\n        const engine: MainModule = this.app.getEngine();\n        let currentNode: Node | null = engine.getNodeByID(childNodeID);\n        nodesExpanded.add(childNodeID);\n\n        while (currentNode) {\n            const parent: Node | null = currentNode.getParent();\n            if (!parent)\n                break;\n\n            if (!nodesExpanded.has(parent.getID()))\n                nodesExpanded.add(parent.getID());\n\n            currentNode = parent;\n        }\n\n        if (!isEqual(this.state.nodesExpanded, nodesExpanded))\n            this.setState({ nodesExpanded });\n    }\n\n    private setNodeHidden(nodeID: bigint, hidden: boolean) {\n        setHiddenRecursivelyNodeID(nodeID, hidden);\n\n        const childrenNodeIDs: bigint[] = this.collectNodeChildren(nodeID);\n        for (const childNodeID of childrenNodeIDs)\n            this.mapNodesRef.get(childNodeID)?.current?.updateNode(childNodeID);\n    }\n\n    private handleOnClick(nodeID: bigint, isMultiSelect: boolean) {\n        // get all previously active nodes to update them before clickNodeID changes them\n        const oldActiveNodeIDs: bigint[] =\n            [...this.mapNodesRef.keys()].filter((refNodeID: bigint) => isNodeActive(refNodeID));\n        clickNodeID(nodeID, isMultiSelect);\n\n        if (!this.props.stepID && getAssetType(getAssetID(nodeID)) === AssetType.MODEL &&\n            !this.state.nodesExpanded.has(nodeID)) {\n            this.setNodeExpanded(nodeID, true);\n        }\n\n        const allNodeIDs: Set<bigint> = new Set([nodeID, ...this.collectNodeChildren(nodeID), ...oldActiveNodeIDs]);\n        for (const updatedNodeID of allNodeIDs) {\n            const nodeRef: React.RefObject<Part> | undefined = this.getNodeRef(updatedNodeID);\n            if (!nodeRef?.current)\n                continue;\n\n            nodeRef.current.updateNode(updatedNodeID);\n        }\n    }\n\n    private handleRemoveAsset(removedAssetID: bigint) {\n        // deselect nodes before removing\n        clickNodeID(BigInt(0), false);\n        const assetType: AssetType = getAssetType(removedAssetID);\n\n        if (isStepAsset(removedAssetID))\n            removeTemporaryAsset(removedAssetID);\n        else if (isNodeModel(getNodeID(removedAssetID)))\n            removeDocument(removedAssetID);\n        else\n            removeAssetFromWorld(removedAssetID);\n\n        // remove the asset from the list\n        const nodeListByType: Map<AssetType, AssetNode[]> = new Map(this.state.nodeListByType);\n        const nodesExpanded: Set<bigint> = new Set(this.state.nodesExpanded);\n        const assetNodes: AssetNode[] = [];\n\n        for (const node of nodeListByType.get(assetType) ?? []) {\n            if (node.assetID === removedAssetID) {\n                nodesExpanded.delete(node.nodeID);\n                continue;\n            }\n\n            assetNodes.push(node);\n        }\n\n        nodeListByType.set(assetType, assetNodes);\n\n        this.setState({ nodeListByType, nodesExpanded }, () => App.getInstance().refreshToolbar());\n    }\n\n    private handleDuplicateAsset(nodeID: bigint) {\n        clickNodeID(nodeID, false);\n        duplicateSelectedAssets();\n    }\n\n    /************** Listener functions **************/\n    private keyDownEvent = (event: KeyboardEvent) => {\n        if (event.metaKey || event.ctrlKey) {\n            if (!this.state.multiSelect)\n                this.setState({ multiSelect: true });\n\n            if (event.code === 'KeyJ' && getSelectedNodes().length) {\n                event.preventDefault();\n                duplicateSelectedAssets();\n            }\n        }\n    }\n\n    private keyUpEvent = (event: KeyboardEvent) => {\n        if (event.key === \"Meta\" || event.key === \"Control\") {\n            if (this.state.multiSelect)\n                this.setState({ multiSelect: false });\n        }\n    }\n\n    /************** List functions **************/\n    private buildVisibleRows(): AssetNode[] {\n        const newRows: AssetNode[] = [];\n        if (this.state.nodeListByType.size === 0)\n            return [];\n\n        // iterate over ASSET_TYPE_ORDER to keep the order of the asset types\n        for (let i: number = 0; i < AssetType.COUNT; ++i) {\n            const assetType: AssetType = i as AssetType;\n            const rows: AssetNode[] = this.buildAssetVisibleRows(assetType);\n            if (!rows.length)\n                continue;\n\n            newRows.push({ assetID: BigInt(0), nodeID: BigInt(0), depth: 0 }, ...rows);\n        }\n\n        return newRows;\n    }\n\n    private buildAssetVisibleRows(assetType: AssetType): AssetNode[] {\n        const assetNodeList: AssetNode[] | undefined = this.state.nodeListByType.get(assetType);\n        if (!assetNodeList?.length)\n            return [];\n\n        const visibleAssetRows: AssetNode[] = [];\n        const engine: MainModule = this.app.getEngine();\n        for (const node of assetNodeList) {\n            if (!isAssetForCurrentStep(node.assetID) && !isAssetForCurrentWorld(node.assetID))\n                continue;\n\n            // node is visible if its parent is expanded\n            const parentNodeID: bigint = engine.getNodeByID(node.nodeID)?.getParent()?.getID() ?? BigInt(0);\n            if (node.depth === 0 || this.state.nodesExpanded.has(parentNodeID))\n                visibleAssetRows.push(node);\n        }\n\n        return visibleAssetRows;\n    }\n\n    private getNodeRef(nodeID: bigint): React.RefObject<Part> {\n        let ref: React.RefObject<Part> | undefined = this.mapNodesRef.get(nodeID);\n        if (!ref) {\n            ref = React.createRef<Part>();\n            this.mapNodesRef.set(nodeID, ref);\n        }\n        return ref;\n    }\n\n    private renderRow(row: AssetNode, style: React.CSSProperties, assetType: AssetType) {\n        if (!row.assetID && !row.nodeID)\n            return <AssetTypeWrapper style={style}> {getAssetTypeString(assetType)} </AssetTypeWrapper>;\n\n        const childrenCount: number = this.app.getEngine().getNodeByID(row.nodeID)?.getChildrensCount() ?? 0;\n        // check for model assets, since text assets can also have children\n        const isCaretShown: boolean = assetType === AssetType.MODEL &&\n            !isStepAsset(row.assetID) && Boolean(childrenCount);\n\n        return (\n            <Part\n                nodeID={row.nodeID}\n                assetID={row.assetID}\n                style={style}\n                ref={this.getNodeRef(row.nodeID)}\n                isCaretShown={isCaretShown}\n                depth={row.depth}\n                isCaretOpen={this.state.nodesExpanded.has(row.nodeID)}\n                onClick={() => this.handleOnClick(row.nodeID, this.state.multiSelect)}\n                setOpenNode={(open: boolean) => this.setNodeExpanded(row.nodeID, open)}\n                handleNodeHidden={(hidden: boolean) => this.setNodeHidden(row.nodeID, hidden)}\n                handleRemoveAsset={() => this.handleRemoveAsset(row.assetID)}\n                handleDuplicateAsset={() => this.handleDuplicateAsset(row.nodeID)}\n            />\n        );\n    }\n\n    render() {\n        const visibleRows: AssetNode[] = this.buildVisibleRows();\n        return (\n            <ListContainer id=\"node_list\" is_step={Number(this.props.stepID ?? 0)}>\n                <AutoSizer>\n                    {(props: { height: number; width: number }) => (\n                        <List\n                            width={props.width}\n                            height={props.height}\n                            itemCount={visibleRows.length}\n                            itemSize={20}\n                            overscanCount={15}\n                            itemKey={(index: number) => {\n                                const visibleRow: AssetNode = visibleRows[index];\n                                if (visibleRow === undefined)\n                                    return `row-${index}`;\n                                if (visibleRow.nodeID)\n                                    return `n-${visibleRow.nodeID.toString()}`;\n                                if (visibleRow.assetID)\n                                    return `a-${visibleRow.assetID.toString()}`;\n\n                                const assetType: AssetType = getAssetType(visibleRows[index + 1]?.assetID ?? BigInt(0));\n                                return `h-${assetType}`;\n                            }}\n                        >\n                            {({ index, style }: ListChildComponentProps) => {\n                                const visibleRow: AssetNode = visibleRows[index];\n                                if (!visibleRow)\n                                    return <></>;\n\n                                const assetID: bigint = visibleRow.assetID ?\n                                    visibleRow.assetID : visibleRows[index + 1]?.assetID;\n                                return this.renderRow(visibleRow, style, getAssetType(assetID ?? BigInt(0)));\n                            }}\n                        </List>\n                    )}\n                </AutoSizer>\n            </ListContainer>\n        );\n    }\n}\n", "import * as React from \"react\";\nimport {CSSProperties, PureComponent} from \"react\";\nimport {lightPrimary, red, white, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {Caret} from \"@root/react-components/src/icons/Caret\";\nimport {Duplicate} from \"@root/react-components/src/icons/Duplicate\";\nimport {\n    getAssetDocumentID,\n    getAssetTitle,\n    getAssetType,\n    getCurrentWorldID,\n    getNodeName,\n    isNodeActive,\n    isNodeAnnotation,\n    isNodeModel,\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {AssetType} from \"@backend/Types/AssetType\";\nimport {\n    canCurrentPeerEditAsset,\n    getAssetImageData,\n    getAssetVideoFilePath,\n    isWorldAssetLoaded,\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {Warning} from \"@root/react-components/src/icons/Warning\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Unhide} from \"@root/react-components/src/icons/Unhide\";\nimport {Hide} from \"@root/react-components/src/icons/Hide\";\nimport {Box, styled} from \"@mui/material\";\nimport {getCurrentStepID, isStepAsset} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {canCurrentPeerEditSequence} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\n\nconst LEFT_SPACING: number = 14;\n\nconst Container = styled(Box)((props: { depth: number }) => ({\n    display: \"flex\",\n    alignItems: \"center\",\n    boxSizing: \"border-box\",\n    overflow: \"hidden\",\n    paddingLeft: (props.depth + 1) * LEFT_SPACING,\n    \"&:hover\": {\n        cursor: \"pointer\",\n    },\n}));\n\nconst CaretContainer = styled(Box)((props: { opened: number, active: number, is_asset_model: number }) => ({\n    flexShrink: 0,\n    height: \"12px\",\n    width: \"12px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    marginRight: \"2px\",\n    transform: `rotate(${props.opened ? 90 : 0}deg)`,\n    color: props.active ? lightPrimary : props.is_asset_model ? yellow : white,\n    \"&:hover\": {\n        cursor: \"pointer\",\n    },\n    \"& > svg\": {\n        height: \"100%\",\n        width: \"100%\",\n    },\n}));\n\nconst WarningContainer = styled(Box)({\n    flexShrink: 0,\n    position: \"relative\",\n    top: \"-4px\",\n    width: \"15px\",\n    height: \"15px\",\n    marginRight: \"5px\",\n    color: yellow,\n    \"&:hover\": {\n        cursor: \"pointer\",\n        color: lightPrimary,\n    },\n    \"& > svg\": {\n        height: \"100%\",\n        width: \"100%\",\n    }\n});\n\nconst NameWrapper = styled(Box)((props: { active: number, is_asset_model: number }) => ({\n    minWidth: 0,\n    font: secondaryFontMedium,\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n    color: props.active ? lightPrimary : props.is_asset_model ? yellow : white,\n}));\n\nconst IconsContainer = styled(Box)({\n    display: \"flex\",\n    flexShrink: 0,\n    gap: \"3px\",\n    marginLeft: \"5px\",\n    color: white\n});\n\nconst IconWrapper = styled(Box)(() => ({\n    height: \"10px\",\n    width: \"10px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    \"&:hover\": {\n        cursor: \"pointer\",\n        color: lightPrimary,\n    },\n    \"& > svg\": {\n        height: \"100%\",\n        width: \"100%\",\n    },\n}));\n\ninterface PartProps {\n    nodeID: bigint;\n    assetID: bigint;\n    style: CSSProperties;\n    depth: number; // if depth is 1 we can consider it as an asset\n    isCaretOpen: boolean;\n    isCaretShown: boolean;\n    setOpenNode: (open: boolean) => void;\n    onClick: () => void;\n    handleDuplicateAsset: () => void;\n    handleNodeHidden: (hidden: boolean) => void;\n    handleRemoveAsset: () => void;\n}\n\ninterface PartState {\n    isActive: boolean;\n    isHidden: boolean;\n    showEditorIcon: boolean;\n}\n\nexport class Part extends PureComponent {\n    private readonly app: App = App.getInstance();\n    private static readonly MEDIA_MSG: string =\n        \"The media of this asset has been deleted or is invalid, update this asset with a new media\";\n    private static readonly ASSET_MSG: string = \"This asset is invalid\";\n\n    props: PartProps;\n    state: PartState = {\n        isActive: isNodeActive(this.props.nodeID),\n        isHidden: this.app.getEngine().getNodeByID(this.props.nodeID)?.isHidden() ?? false,\n        showEditorIcon: this.showEditorIcons(this.props.nodeID, this.props.assetID)\n    };\n\n    public updateNode(nodeID: bigint) {\n        if (this.props.nodeID !== nodeID)\n            return;\n\n        const isActive: boolean = isNodeActive(this.props.nodeID);\n        if (isActive !== this.state.isActive)\n            this.setState({ isActive });\n\n        const isHidden: boolean = this.app.getEngine().getNodeByID(this.props.nodeID)?.isHidden() ?? false;\n        if (this.state.isHidden !== isHidden)\n            this.setState({ isHidden });\n    }\n\n    private showEditorIcons(nodeID: bigint, assetID: bigint): boolean {\n        // only model root and annotation are removable\n        if (!isNodeModel(nodeID) && !isNodeAnnotation(nodeID))\n            return false;\n\n        // for temporary assets, check if peer can edit the sequence\n        const sequenceID: bigint = getCurrentSequenceID();\n        if (isStepAsset(assetID) && sequenceID)\n            return canCurrentPeerEditSequence(sequenceID);\n\n        // for permanent assets, always show editor icons\n        return true;\n    }\n\n    private getWarningMessage(assetID: bigint, assetType: AssetType, isAsset: boolean): string {\n        if (!isAsset)\n            return \"\";\n\n        // while world assets are still loading, do not show media warnings yet\n        if (!isStepAsset(assetID) && !isWorldAssetLoaded(getCurrentWorldID(), assetID))\n            return \"\";\n\n        switch (assetType) {\n            case AssetType.VIDEO:\n                return Boolean(getAssetVideoFilePath(assetID)) ? \"\" : Part.MEDIA_MSG;\n            case AssetType.IMAGE:\n                return Boolean(getAssetImageData(assetID).imageFilePath) ? \"\" : Part.MEDIA_MSG;\n            case AssetType.MODEL:\n                return this.isModelValid(assetID) ? \"\" : Part.ASSET_MSG;\n            default:\n                return \"\";\n        }\n    }\n\n    private isModelValid(assetID: bigint): boolean {\n        const documentID: bigint = getAssetDocumentID(assetID);\n        if (!documentID)\n            return true;\n\n        if (App.getInstance().getEngine()?.isAssetDocumentLoading(assetID))\n            return true;\n\n        return Boolean(this.props.nodeID);\n    }\n\n    private getAssetName(nodeID: bigint, assetID: bigint) {\n        if (isNodeModel(nodeID))\n            return getAssetTitle(assetID);\n        if (isNodeAnnotation(nodeID))\n            return getNodeName(nodeID);\n        return \"\";\n    }\n\n    private async handleOnRemove(e: React.MouseEvent, nodeID: bigint, assetID: bigint) {\n        e.stopPropagation();\n\n        const assetName: string = this.getAssetName(nodeID, assetID);\n        const confirmMessage: string = `${i18next.t(\"Are you sure you want to remove\")} ${assetName} ?`;\n\n        const hasConfirmed: boolean = await Prompt.confirm(confirmMessage, i18next.t(\"Remove\"), true);\n        if (hasConfirmed)\n            this.props.handleRemoveAsset();\n    }\n\n    private handleNodeHidden(e: React.MouseEvent) {\n        e.stopPropagation();\n        this.setState({ isHidden: !this.state.isHidden }, () => this.props.handleNodeHidden(this.state.isHidden));\n    }\n\n    render(): React.ReactNode {\n        const isAsset: boolean = this.props.depth === 0;\n        const name: string = isAsset && getAssetType(this.props.assetID) !== AssetType.MTCONNECT ?\n            getAssetTitle(this.props.assetID) : getNodeName(this.props.nodeID);\n        const assetType: AssetType = getAssetType(this.props.assetID);\n        const warningMessage: string = this.getWarningMessage(this.props.assetID, assetType, isAsset);\n\n        return (\n            <Container\n                id={this.props.nodeID.toString()}\n                className={`node ${this.state.isActive ? \"node-active\" : \"\"}`}\n                depth={this.props.depth}\n                style={this.props.style}\n            >\n                {warningMessage ?\n                    <Tooltip title={i18next.t(warningMessage)}>\n                        <WarningContainer> <Warning /> </WarningContainer>\n                    </Tooltip>\n                    :\n                    <CaretContainer\n                        opened={this.props.isCaretOpen ? 1 : 0}\n                        active={this.state.isActive ? 1 : 0}\n                        is_asset_model={Number(assetType === AssetType.MODEL && isAsset)}\n                        onMouseDown={() => this.props.setOpenNode(!this.props.isCaretOpen)}\n                    >\n                        {this.props.isCaretShown && <Caret />}\n                    </CaretContainer>\n                }\n                <Tooltip enterNextDelay={2000} title={isAsset ?\n                    <>{`${i18next.t(\"Select Full Model\")} (SHIFT+CLICK)`} <br />\n                        {`${i18next.t(\"Select Multiple Assets\")} (CMD/CTRL+CLICK)`}</> : \"\"}>\n                    <NameWrapper\n                        id={`node-${this.props.nodeID}`}\n                        active={this.state.isActive ? 1 : 0}\n                        is_asset_model={Number(assetType === AssetType.MODEL && isAsset)}\n                        className=\"node_name\"\n                        onClick={() => this.props.onClick()}\n                    >\n                        {name ? name : this.props.assetID.toString()}\n                    </NameWrapper>\n                </Tooltip>\n                {canCurrentPeerEditAsset() &&\n                    <IconsContainer>\n                        <IconWrapper onClick={(e: React.MouseEvent) => this.handleNodeHidden(e)}>\n                            {this.state.isHidden ? <Unhide/> : <Hide/>}\n                        </IconWrapper>\n\n                        {Boolean(getCurrentStepID()) === isStepAsset(this.props.assetID) &&\n                            <>\n                                {this.state.showEditorIcon && assetType !== AssetType.MTCONNECT &&\n                                    <IconWrapper onClick={() => this.props.handleDuplicateAsset()}>\n                                        <Duplicate/>\n                                    </IconWrapper>\n                                }\n                                {(this.state.showEditorIcon || Boolean(!this.props.nodeID && this.props.assetID)) &&\n                                    <IconWrapper\n                                        className=\"remove_action\"\n                                        style={{ color: red }}\n                                        onClick={(e: React.MouseEvent) =>\n                                            this.handleOnRemove(e, this.props.nodeID, this.props.assetID)}\n                                    >\n                                        <Close/>\n                                    </IconWrapper>\n                                }\n                            </>\n                        }\n                    </IconsContainer>\n                }\n            </Container>\n        );\n    }\n}\n", "import * as React from 'react';\nimport styled from 'styled-components';\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport i18next from \"i18next\";\nimport {\n    canUserEditCurrentWorld,\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\n\nconst Wrapper = styled(\"div\")`\n    width: fit-content;\n    margin: auto;\n`;\n\nexport class AddAssetButton extends React.Component {\n    props: { isTemporaryAsset: boolean, onClick: () => void };\n    state: { isDisabled: boolean } = { isDisabled: true };\n\n    componentDidMount() { this.updateButtonDisabledState(); }\n\n    // (@ebalthazard) Do not use : only used by onboarding\n    public selectModel(modelIndex: number) {\n        // this.addAssetDialogRef.current?.documentsLibraryRef.current?.documentsRef.current?.setSelectedDocument(getDocumentID(modelIndex));\n    }\n\n    public updateButtonDisabledState() {\n        const isDisabled: boolean = !canUserEditCurrentWorld() || Boolean(getCurrentSequenceID());\n\n        if (isDisabled !== this.state.isDisabled)\n            this.setState({ isDisabled });\n    }\n\n    public render(){\n        if(this.props.isTemporaryAsset)\n            return (\n                <Button\n                    id=\"temporary-asset-button\"\n                    variant=\"outlined\"\n                    size=\"small\"\n                    onClick={() => this.props.onClick()}\n                >\n                    {i18next.t('Add Asset')}\n                </Button>\n            )\n\n        return (\n            <Tooltip title={getCurrentSequenceID() !== BigInt(0) &&\n                i18next.t(\"You must exit the sequence to add an asset to the world\")} arrow>\n                <Wrapper>\n                    <Button\n                        id=\"model_library\"\n                        color=\"white\"\n                        size=\"large\"\n                        sx={{ padding: i18next.language === \"fr\" || i18next.language === \"es\" ?\n                                \"8px\" : \"8px 22px\"}}\n                        onClick={() => this.props.onClick()}\n                        disabled={this.state.isDisabled}\n                    >\n                        {i18next.t('Add Asset')}\n                    </Button>\n                </Wrapper>\n            </Tooltip>\n        )\n    }\n}\n", "import {Button} from \"@root/react-components/src/buttons/Button\";\nimport React from \"react\";\nimport {canUserEditCurrentWorld} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport i18next from \"i18next\";\nimport {AnchorsDialog} from \"@root/Frontend/Studio/Views/Anchors/AnchorsDialog\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\n\ninterface AnchorsButtonState {\n    isAnchorsDialogOpen: boolean;\n    isDisabled: boolean;\n}\n\nexport class AnchorsButton extends React.Component{\n    state: AnchorsButtonState = {\n        isAnchorsDialogOpen: false,\n        isDisabled: true\n    };\n\n    componentDidMount() { this.updateButtonDisabledState(); }\n\n    public openAnchorsDialog() {\n        this.setState({ isAnchorsDialogOpen: true });\n    }\n\n    public closeAnchorsDialog() {\n        this.setState({ isAnchorsDialogOpen: false });\n    }\n\n    public updateButtonDisabledState() {\n        const isDisabled: boolean = !canUserEditCurrentWorld() || Boolean(getCurrentSequenceID());\n\n        if (isDisabled !== this.state.isDisabled)\n            this.setState({ isDisabled });\n    }\n\n    render(){\n        return(\n            <>\n                <Tooltip title={getCurrentSequenceID() !== BigInt(0) &&\n                    i18next.t(\"You must exit the sequence to add an anchor to the world\")} arrow>\n                    <div style={{ width: \"fit-content\", margin: \"auto\" }}>\n                        <Button\n                            id={\"anchors_library\"}\n                            variant=\"outlined\"\n                            color=\"white\"\n                            size=\"large\"\n                            disabled={this.state.isDisabled}\n                            onClick={() => this.openAnchorsDialog()}\n                        >\n                            {i18next.t(\"Anchors\")}\n                        </Button>\n                    </div>\n                </Tooltip>\n                {this.state.isAnchorsDialogOpen && <AnchorsDialog onClose={() => this.closeAnchorsDialog()} />}\n            </>\n        )\n    }\n}\n", "import {Button} from \"@root/react-components/src/buttons/Button\";\nimport React from \"react\";\nimport {canUserEditCurrentWorld, clickNodeID, getCurrentWorldID, getEntityName,\n    getNodeID, getWorldEntitiesIDs, getWorldTitle, isEntityArchived\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport i18next from \"i18next\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {darkenPrimary, lightPrimary, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {AnchorsCollection} from \"@root/Frontend/Studio/Views/Anchors/AnchorsCollection\";\nimport {createNewAnchor, getUrlQR, printAnchor, generateBufferQR\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Anchors\";\nimport {Box, styled} from \"@mui/material\";\nimport { Select } from \"@root/react-components/src/inputs/Select\";\nimport { Label } from \"@root/react-components/src/misc/Label\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {AnchorSettings} from \"@root/Frontend/Studio/Views/Anchors/AnchorSettings\";\n\nconst ContentContainer = styled(Box)({\n    height: \"430px\",\n    display: \"flex\",\n    justifyContent: \"space-between\"\n});\n\nconst LeftContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"15px\"\n});\n\nconst RightContainer = styled(Box)({\n    alignSelf: \"center\",\n    textAlign: \"left\",\n    width: \"380px\"\n});\n\nconst CreationSection = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\"\n});\n\nconst CreationBox = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    backgroundColor: darkenPrimary,\n    padding: \"10px 20px 16px\",\n    borderRadius: \"12px\"\n});\n\nconst AnchorsCollectionWrapper = styled(Box)({\n    height: \"270px\",\n    width: \"340px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"column\",\n    backgroundColor: lightPrimary,\n    borderRadius: \"12px\",\n    padding: \"4px 10px\"\n});\n\nconst AnchorsDialogBottom = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    paddingTop: \"15px\"\n});\n\n// Vertical/Horizontal -> same in Eng, Fr and Esp\nenum AnchorOrientation {\n    VERTICAL = \"Vertical\",\n    HORIZONTAL = \"Horizontal\"\n}\n\ninterface AnchorsDialogState {\n    selectedAnchorID: bigint;\n    entities: Map<bigint, string>;\n    selectedEntityID: bigint | null;\n    isHorizontal: boolean;\n    qrDataString: string;\n}\n\nexport class AnchorsDialog extends React.Component {\n    anchorsCollection: React.RefObject<AnchorsCollection> = React.createRef<AnchorsCollection>();\n\n    props: { onClose: () => void }\n\n    state: AnchorsDialogState = {\n        selectedAnchorID: BigInt(0),\n        entities: new Map<bigint,string>(),\n        selectedEntityID: null,\n        isHorizontal: false,\n        qrDataString: \"\"\n    };\n\n    componentDidMount() {\n        const entities: bigint[] = getWorldEntitiesIDs(getCurrentWorldID());\n        const entityNameByID: Map<bigint, string> = new Map();\n        for (const entityID of entities) {\n            if (!isEntityArchived(entityID))\n                entityNameByID.set(entityID,getEntityName(entityID));\n        }\n\n        this.setState({entities: entityNameByID});\n\n        if (entityNameByID.size === 0)\n            this.setState({selectedEntityID: BigInt(0)});\n    }\n\n    private createNewAnchor(): void {\n        createNewAnchor(this.state.isHorizontal);\n        this.props.onClose();\n    }\n\n    private printAnchor(): void {\n        if (this.state.selectedEntityID === null || !this.state.selectedAnchorID)\n            return;\n\n        printAnchor(\n            this.state.selectedAnchorID ,\n            `${i18next.t(\"World\")}: ${getWorldTitle(getCurrentWorldID())}`,\n            `data:image/png;base64, ${this.state.qrDataString}`,\n            this.state.selectedEntityID\n        );\n    }\n\n    private onSelectAnchor(anchorID: bigint): void {\n        const nodeID: bigint = getNodeID(anchorID);\n        if (nodeID !== BigInt(0))\n            clickNodeID(nodeID, false);\n\n        const urlQR: string = getUrlQR(anchorID);\n        this.setState({\n            selectedAnchorID: anchorID,\n            qrDataString: window.btoa(String.fromCharCode.apply(null, generateBufferQR(urlQR))),\n            selectedEntityID: this.state.entities.size ? null : BigInt(0)\n        });\n    }\n\n    private onSelectEntity(index: number): void {\n        // index - 1, because of the None option\n        const entityID: bigint = index > 0 ? [...this.state.entities.keys()][index - 1]\n                                           : BigInt(0);\n\n        const urlQR: string = getUrlQR(this.state.selectedAnchorID, entityID);\n        const qrDataString: string = window.btoa(String.fromCharCode.apply(null, generateBufferQR(urlQR)));\n        this.setState({selectedEntityID: entityID, qrDataString });\n    }\n\n    render(){\n        return(\n            <Dialog onClose={() => this.props.onClose()} size={DialogSize.md}>\n                <Box style={{textAlign:\"left\", color: primary, font: primaryFontXLarge}}>\n                    {i18next.t(\"Anchors\")}\n                </Box>\n                <ContentContainer>\n                    <LeftContainer>\n                    <CreationSection>\n                        <Box style={{font: primaryFontLarge, color: darkenPrimary}}>\n                            {i18next.t(\"Create new anchor\")}\n                        </Box>\n                        <CreationBox>\n                            <Box>\n                                <Label>\n                                    <span> {`${i18next.t(\"Initial anchor orientation\")} :`} </span>\n                                </Label>\n                                <Select\n                                    style={{backgroundColor: white}}\n                                    options={[\n                                        i18next.t(AnchorOrientation.VERTICAL),\n                                        i18next.t(AnchorOrientation.HORIZONTAL)\n                                    ]}\n                                    onChange={(index: number) => this.setState({isHorizontal: Boolean(index)})}\n                                />\n                            </Box>\n                            <Button\n                                id=\"add-anchor\"\n                                style={{ backgroundColor: white, color: darkenPrimary, height: \"fit-content\"}}\n                                disabled={!canUserEditCurrentWorld() || getCurrentSequenceID() !== BigInt(0)}\n                                onClick={() => this.createNewAnchor()}\n                            >\n                                {i18next.t(\"New Anchor\")}\n                            </Button>\n                        </CreationBox>\n                    </CreationSection>\n                    <Box>\n                        <Box style={{font: primaryFontLarge, color: lightPrimary}}> {i18next.t(\"Anchors List\")} </Box>\n                        <AnchorsCollectionWrapper>\n                            <AnchorsCollection\n                                ref={this.anchorsCollection}\n                                selectedAnchorID={this.state.selectedAnchorID}\n                                setSelected={(anchorID: bigint) => this.onSelectAnchor(anchorID)}\n                            />\n                        </AnchorsCollectionWrapper>\n                    </Box>\n                    </LeftContainer>\n                    <RightContainer>\n                        <AnchorSettings\n                            updateAnchorCollection={() => this.anchorsCollection.current?.forceUpdate()}\n                            onSelectEntity={(index: number) => this.onSelectEntity(index)}\n                            entitiesNames={[...this.state.entities.values()]}\n                            selectedAnchorID={this.state.selectedAnchorID}\n                            selectedEntityID={this.state.selectedEntityID}\n                            qrCodeImage={this.state.qrDataString}\n                        />\n                    </RightContainer>\n                </ContentContainer>\n                <AnchorsDialogBottom>\n                    <Button variant=\"outlined\" onClick={() => this.props.onClose()}>{i18next.t(\"Close\")}</Button>\n                    <Button\n                        onClick={() => this.printAnchor()}\n                        disabled={this.state.selectedEntityID === null || !this.state.selectedAnchorID}\n                    >\n                        {i18next.t(\"Print\")}\n                    </Button>\n                </AnchorsDialogBottom>\n            </Dialog>\n        )\n    }\n}\n", "import React, {CSSProperties} from \"react\";\nimport {deleteAnchor, generateBufferQR, getAnchorsList, getAnchorTitle, getUrlQR} from \"Engine/AdapterWeb/Anchors\";\nimport {FixedSizeGrid as Grid} from \"react-window\";\nimport {primaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {dark, darkenPrimary, primary, red, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Item} from \"@root/react-components/src/misc/Item\";\nimport {Delete} from \"@root/react-components/src/icons/Delete\";\nimport AutoSizer from \"react-virtualized-auto-sizer\";\nimport styled from \"styled-components\";\nimport {canUserEditCurrentWorld} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Dialog} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\n\nconst Wrapper = styled(\"div\")`\n    height: 100%;\n    width: 100%;\n    & > div > div{\n        overflow-x: hidden!important;\n\n        /* width */\n        &::-webkit-scrollbar {\n          width: 10px;\n          height: 10px;\n        }\n\n        /* Track */\n        &::-webkit-scrollbar-track {\n          background-color: ${primary};\n        }\n\n        /* Handle */\n        &::-webkit-scrollbar-thumb {\n          background: ${darkenPrimary}; \n        }\n\n        /* Handle on hover */\n        &::-webkit-scrollbar-thumb:hover {\n          background: ${dark}; \n        }\n    }\n`\n\nexport class AnchorsCollection extends React.Component{\n    props: {\n        setSelected: (index: bigint) => void,\n        selectedAnchorID: bigint,\n    }\n    state: {\n        anchorList: bigint[],\n        toBeDeletedAnchorID: bigint\n    } = {\n        anchorList: [],\n        toBeDeletedAnchorID:  BigInt(0)\n    }\n\n    componentDidMount() {\n        this.setState({\n            anchorList: getAnchorsList()\n        });\n    }\n\n    private handleOnDelete(){\n        if (!this.state.toBeDeletedAnchorID)\n            return;\n\n        deleteAnchor(this.state.toBeDeletedAnchorID);\n        if (this.state.toBeDeletedAnchorID === this.props.selectedAnchorID)\n            this.props.setSelected(BigInt(0));\n        this.setState({ anchorList: getAnchorsList(), toBeDeletedAnchorID: BigInt(0) });\n    }\n\n    private getQRImage(anchorID: bigint): string {\n        const urlQR: string = getUrlQR(anchorID);\n        return window.btoa(String.fromCharCode.apply(null, generateBufferQR(urlQR)));\n    }\n\n    private anchorCell(props: { columnIndex:number, rowIndex:number, data: any, style:CSSProperties }) {\n        const index = props.data.getIndex(props.rowIndex, props.columnIndex);\n\n        if(index >= this.state.anchorList.length)\n            return <></>;\n\n        const anchorID: bigint = this.state.anchorList[index];\n\n        return(\n            <div style={{...props.style, font: primaryFontSmall, color: white}}>\n                <div id={anchorID.toString()} className=\"anchor-item\" style={{padding:\"3px\"}}>\n                    <Item\n                        thumbnail={\"data:image/png;base64, \" + this.getQRImage(anchorID)}\n                        title={getAnchorTitle(anchorID)}\n                        selected={anchorID === this.props.selectedAnchorID}\n                        onClick={() => this.props.setSelected(anchorID)}\n                        actions={[\n                            {\n                                id: \"delete-anchor-action\",\n                                icon: <Delete />,\n                                disabled: !canUserEditCurrentWorld(),\n                                onClick: () => this.setState({toBeDeletedAnchorID: anchorID}),\n                                color: red\n                            }\n                        ]}\n                    />\n                </div>\n            </div>\n        );\n    }\n\n    render(){\n        return(\n            <Wrapper>\n                <AutoSizer>\n                    {(props: {height:number,width:number}) =>\n                        <Grid\n                            height={props.height}\n                            width={props.width}\n                            columnCount={3}\n                            columnWidth={110}\n                            rowCount={Math.ceil(this.state.anchorList.length / 3)}\n                            rowHeight={132}\n                            itemData={{getIndex: (row: number, col: number) => row * 3 + col}}\n                        >\n                            {args => this.anchorCell(args)}\n                        </Grid>\n                    }\n                </AutoSizer>\n                {this.state.toBeDeletedAnchorID &&\n                    <Dialog closeOnClickOutside={false}>\n                        <Box>\n                            {i18next.t(\"Are you sure you want to delete the anchor\")}&nbsp;?\n                        </Box>\n                        <Box sx={{display: \"flex\", paddingTop: \"15px\", justifyContent:\"flex-end\", gap:\"10px\"}}>\n                            <Button\n                                variant=\"outlined\"\n                                onClick={() => this.setState({toBeDeletedAnchorID: BigInt(0)})}\n                            >\n                                {i18next.t(\"Cancel\")}\n                            </Button>\n                            <Button id=\"confirm-delete-anchor\" color=\"error\" onClick={() => this.handleOnDelete()}>\n                                {i18next.t(\"Delete\")}\n                            </Button>\n                        </Box>\n                    </Dialog>\n                }\n            </Wrapper>\n\n        )\n    }\n}", "import {App} from \"App\";\nimport {\n    allocateBufferStringUTF8,\n    countBytesUTF8,\n} from \"Engine/utils\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {getCurrentWorldID, getEntityName} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Logo} from \"@root/react-components/src/logo/Logo\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {renderToString} from \"react-dom/server\";\nimport {MainModule} from \"@backend/public/studio/WebAssembly.mjs\";\n\nfunction getEngine(): MainModule { return App.getInstance().getEngine(); }\n\nexport function getAnchorsList(): bigint[] {\n    const engine = getEngine();\n\n    if (!engine)\n        return [];\n\n    const buffer: BigUint64Array = engine.getCurrentWorldAnchorsList();\n    const anchorIDs: bigint[] = Array.from(buffer);\n    engine._free(buffer.byteOffset);\n\n    // return the list of anchors ID\n    return anchorIDs;\n}\n\nexport function getAnchorsCount(): number {\n    return getEngine()?.getAnchorsCount() ?? 0;\n}\n\nexport function getAnchorTitle(anchorID: bigint): string {\n    const engine = getEngine();\n    const title: string = engine ? engine.getAnchorTitle(anchorID) : \"\";\n    return title ? title : `${i18next.t(\"Anchor\")} ${anchorID}`;\n}\n\nexport function updateAnchorTitle(anchorID: bigint, title: string) {\n    getEngine()?.updateAnchorTitle(anchorID, title);\n}\n\nexport function getAnchorSize(anchorID: bigint): number {\n    return getEngine()?.getAnchorSize(anchorID) ?? 0;\n}\n\nexport function getUrlQR(qrID: bigint, entityID: bigint | null = null): string {\n    // add entity at the end if needed\n    const entityUrlPart: string = entityID ? `?entity=${entityID}` : \"\";\n\n    // app.deepsight.ca/ world / worldID / qr / qrID ?entity=entityID\n    return `${(new URL(window.location.href)).origin}/world/${getCurrentWorldID()}/qr/${qrID}${entityUrlPart}`;\n}\n\nexport function generateBufferQR(url: string): Buffer {\n    return Buffer.from(App.getInstance().getEngine().generatePNGCodeQR(url, 7, 0));\n}\n\nexport function createNewAnchor(isHorizontal: boolean) {\n    const engine = App.getInstance().getEngine();\n\n    // generate QR data\n    const qrID: bigint     = BigInt(Math.floor(Math.random() * 999999) + 100000);\n    const qrURL: string    = getUrlQR(qrID);\n    const filePath: string = `tmp/qr/${qrID}.png`;\n    const bufferQR: Buffer = generateBufferQR(qrURL);\n\n    // make directory and write buffer to file\n    AdapterUtils.ensureDirectoryExist(filePath);\n    const stream = engine.FS.open(filePath, 'w+',0o666);  // 0o666 = read / write mode\n    engine.FS.write(stream, bufferQR, 0, bufferQR.byteLength, BigInt(0), true);\n    engine.FS.close(stream);\n\n    // create buffers to send to core\n    const bytesLengthFilePath = countBytesUTF8(filePath);\n    let pathBuffer = engine._malloc(bytesLengthFilePath + 1);\n    engine.stringToUTF8(filePath, pathBuffer, bytesLengthFilePath + 1);\n    const dataURLBuffer = allocateBufferStringUTF8(qrURL);\n\n    // create anchor and update title\n    engine._createNewAnchor(qrID, pathBuffer, dataURLBuffer, Number(isHorizontal));\n    updateAnchorTitle(qrID, i18next.t(\"Anchor \") + getAnchorsCount());\n\n    engine._free(pathBuffer);\n    engine._free(dataURLBuffer);\n}\n\nexport const deleteAnchor = (anchorID: bigint) => {\n    App.getInstance().getEngine()._deleteAnchor(anchorID);\n};\n\nexport function saveAllAnchors() {\n    getEngine()?.saveAllAnchors();\n}\n\nexport function printAnchor(anchorID: bigint, subtitle: string, qrDataString: string,\n                            entityID?: bigint, size: number = 3.94) {\n    const ppi = 96 //pixel per inch\n    const margin = 0.4 // chrome margin https://stackoverflow.com/questions/25387866/what-are-the-default-margins-in-browser-print-settings\n\n    const canvas = document.createElement('canvas');\n    canvas.width = 8.5 * ppi - margin * 2;  // 8.5in\n    canvas.height = 11 * ppi - margin * 2;  // 11in\n\n    const ctx = canvas.getContext(\"2d\");\n    if (!ctx)\n        return;\n\n    ctx.fillStyle = \"#ffffff\";\n    ctx.fillRect(0,0, canvas.width, canvas.height);\n    ctx.fillStyle = dark;\n    ctx.textAlign = \"center\";\n\n    ctx.font = \"bold 24px sans-serif\";\n    ctx.fillText(i18next.t(\"DeepSight Anchors\"), canvas.width / 2, 50);\n\n    ctx.font = \"bold 20px sans-serif\";\n    const printInstructions: string =\n        `${i18next.t(\"Make sure to print with\")}: ` +\n        `${i18next.t(\"Paper size letter\")}, ` +\n        `${i18next.t(\"No margins\")}, ` +\n        `${i18next.t(\"Scale 100%\")}`;\n    let fontSize = 20;\n    while (fontSize > 12 && ctx.measureText(printInstructions).width > canvas.width - 40) {\n        fontSize -= 2;\n        ctx.font = `bold ${fontSize}px sans-serif`;\n    }\n    ctx.fillText(printInstructions, canvas.width / 2, 80);\n\n    const w = size * ppi; // 3.94inch (10cm)\n    const h = size * ppi; // 3.94inch (10cm)\n\n    const cutoutPadding = 0.19685 * ppi // 0.5cm;\n\n    // centering\n    const x = canvas.width / 2 - w / 2;\n    const y = canvas.height / 2 - w / 2;\n\n    ctx.font = \"20px sans-serif\";\n    ctx.fillText(subtitle, canvas.width / 2, 130 );\n    if (entityID) {\n        ctx.fillText(`${i18next.t(\"Entity\")}: ${getEntityName(entityID)}`, canvas.width / 2, 160);\n    }\n\n    const anchorTitle: string = getAnchorTitle(anchorID);\n    ctx.fillText(anchorTitle, canvas.width / 2, y - 100);\n\n    const img = new Image();\n    const newWindow = window.open(\"\", \"\", \"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=500,top=\"+(screen.height/2 - 250)+\",left=\"+(screen.width/2-390));\n    if (!newWindow)\n        return;\n\n    newWindow.document.title = subtitle;\n    newWindow.document.body.style.margin = \"0px\";\n    newWindow.document.body.style.padding = \"0px\";\n\n    img.onload = () => {\n        ctx.drawImage(img, x, y, w, h);\n        ctx.setLineDash([6]);\n        ctx.strokeRect(x - cutoutPadding, y - cutoutPadding, w + cutoutPadding*2, h + cutoutPadding*2);\n        ctx.setLineDash([]);\n        ctx.textAlign = \"left\";\n        ctx.font = \"12px sans-serif\";\n        ctx.fillText(i18next.t(\"Keep white border, cut here\"), x - cutoutPadding + 1, y - cutoutPadding - 2)\n        ctx.textAlign = \"center\";\n        ctx.font = \"20px sans-serif\";\n\n        const logoSVG = renderToString(Logo({dark: true}));\n        const svgFile = new Blob([logoSVG], {type:\"image/svg+xml\"})\n        const logoURL = URL.createObjectURL(svgFile)\n        const logoIMG = new Image();\n        const logoHeight = 95;\n        const logoWidth = 150;\n        logoIMG.onload = () => {\n            ctx.drawImage(logoIMG, canvas.width/2 - logoWidth/2, canvas.height - logoHeight - 30, logoWidth, logoHeight);\n            const dataUrl = canvas.toDataURL('image/jpeg', 1);\n            const printImage = newWindow.document.createElement(\"img\");\n\n            printImage.onload = () => {\n                newWindow.document.body.replaceChildren(printImage);\n                newWindow.print();\n                URL.revokeObjectURL(logoURL);\n            }\n            printImage.src = dataUrl;\n            printImage.alt = subtitle;\n        }\n        logoIMG.src = logoURL;\n    }\n    img.src = qrDataString;\n}\n", "import * as React  from \"react\";\nimport styled from \"styled-components\";\nimport {grey, lighterDark, white} from \"../values/colors/colors\";\nimport {primaryFontSmall} from \"../values/fonts/fonts\";\nimport {ReactElement} from \"react\";\nimport {Loading} from \"../logo/Loading\";\nimport {Tooltip} from \"./Tooltip\";\nimport i18next from \"i18next\";\nimport {Box} from \"@mui/material\";\n\nconst Wrapper = styled(\"div\")<{selected:boolean, is_invalid: number}>`\n    margin: 3px 0;\n    box-sizing: border-box;\n    height: calc(100% - 6px);\n    width: 100%;\n    display:inline-block;\n    border-radius: 12px;\n    padding-top: 12px;\n    background-color: ${props => props.selected ? lighterDark : \"unset\" };\n    &:hover{\n      cursor: ${props => props.is_invalid ? \"not-allowed\" : \"pointer\" };\n      background-color: ${ lighterDark };\n      & .action{\n        opacity: 1!important;\n      }\n    }\n`;\n\nconst Container = styled(\"div\")`\n    width:100%;\n    height: 100%;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: space-between;\n`;\n\nconst Thumb = styled(\"div\")<{is_invalid: number}>`\n    width:60px;\n    height:60px;\n    margin: 5px;\n    border-radius:8px;\n    overflow:hidden;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    & > img{\n      height:100%;\n      width:100%;\n      object-fit:cover;\n    };\n    opacity: ${props => props.is_invalid ? \"0.6\" : \"1!important\" };\n`;\n\nconst Title = styled(\"div\")<{is_invalid: number}>`\n    font:${primaryFontSmall};\n    color: ${white};\n    text-align:center;\n    padding: 0 2px;\n    box-sizing: border-box;\n    width: 100%;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    opacity: ${props => props.is_invalid ? \"0.6\" : \"1!important\" };\n`;\n\nconst Actions = styled(Box)<{\n    selected: boolean,\n    is_invalid: number\n}>`\n  display: flex;\n  width: 100%;\n  margin-top: 3px;\n  justify-content: ${props => props.is_invalid ? \"flex-end\" : \"space-between\"};\n  & > div{\n    height: 24px;\n    width: 24px;\n    padding: 6px;\n    box-sizing: border-box;\n    border-radius: 50%;\n    color: ${white};\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    opacity: ${props => props.selected ? 1 : 0};\n    transition: 0.1s opacity;\n    &:hover{\n      cursor: pointer;\n      filter: brightness(85%);\n    }\n    & > svg{\n      height: 100%;\n      width: 100%;\n    }\n  }\n`\ninterface ActionItem {\n    icon: ReactElement;\n    id?: string;\n    disabled: boolean;\n    color: string;\n    onClick: (e?: React.MouseEvent<HTMLDivElement>) => void;\n}\n\ninterface ItemProps {\n    id?: string,\n    onClick?: Function,\n    selected: boolean,\n    thumbnail: string,\n    title: string,\n    isInvalid?: boolean,\n    actions: ActionItem[], // TODO (@Gab): no object array in props/state, to be changed\n    invalidTooltip?: string\n}\n\nexport class Item extends React.Component {\n\n    props: ItemProps;\n\n    renderActionItem(action: ActionItem, index: number) {\n        return(\n            <Box\n                key={\"action-\" + index}\n                id={action.id}\n                className={\"action\"}\n                style={{\n                    backgroundColor: action.color,\n                    filter: action.disabled ? \"grayscale(1) brightness(0.7)\" : \"\"\n                }}\n                onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n                    e.stopPropagation();\n                    if (action.disabled)\n                        return;\n                    action.onClick(e);\n                }}\n            >\n                {action.icon}\n            </Box>\n        );\n    }\n\n    render() {\n        return (\n            <Wrapper\n                id={this.props.id}\n                className={this.props.selected ? \"selected\" : \"\"}\n                onClick={(event: React.MouseEvent<HTMLDivElement>) => this.props.onClick?.(event)}\n                selected={this.props.selected}\n                is_invalid={Number(this.props.isInvalid ?? false)}\n            >\n                <Tooltip\n                    title={this.props.isInvalid ? this.props.invalidTooltip : \"\"}\n                    white={1}\n                    placement={\"top\"}\n                >\n                    <Container>\n                        <Thumb is_invalid={Number(this.props.isInvalid ?? false)}>\n                            {\n                                this.props.thumbnail ?\n                                    <img draggable={\"false\"} src={this.props.thumbnail} alt=\"Thumb\"/>\n                                :\n                                    <Loading/>\n                            }\n                        </Thumb>\n                        <Title className=\"card-item-title\" is_invalid={Number(this.props.isInvalid ?? false)}>\n                            { this.props.title ? this.props.title :\n                                <div style={{\n                                        margin: \"0 auto\",\n                                        height: 12,\n                                        width: \"calc(100% - 24px)\",\n                                        backgroundColor: grey,\n                                    }}\n                                />\n                            }\n                        </Title>\n                        <Actions selected={this.props.selected} is_invalid={Number(this.props.isInvalid ?? false)}>\n                            {/* if item is invalid -> only delete action is enable */}\n                            { this.props.isInvalid ?\n                                this.props.actions\n                                    .filter((action: ActionItem) => action.id == \"delete-document\")\n                                    .map((action, index) =>\n                                        this.renderActionItem(action, index)\n                                    )\n                            :\n                                this.props.actions.map((action, index) =>\n                                    this.renderActionItem(action, index)\n                                )\n                            }\n                        </Actions>\n                    </Container>\n                </Tooltip>\n            </Wrapper>\n        );\n    }\n}", "import {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport React from \"react\";\nimport {primaryFontLarge, primaryFontMedium, secondaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {getAnchorTitle, getUrlQR, updateAnchorTitle} from \"Engine/AdapterWeb/Anchors\";\nimport {dark, green, lightDark, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {copyToClipBoard} from \"@utils/utils\";\nimport i18next from \"i18next\";\nimport {canUserEditCurrentWorld} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Box, styled} from \"@mui/material\";\nimport { Select } from \"@root/react-components/src/inputs/Select\";\nimport {Warning} from \"@root/react-components/src/icons/Warning\";\n\nconst NoAnchorWrapper = styled(Box)({\n    height: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n});\n\nconst InfoContainer = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    gap: \"20px\"\n});\n\nconst QRPreview = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    padding: \"14px\",\n    height: \"calc(100% - 140px)\",\n    flexDirection: \"column\",\n    font: secondaryFontSmall,\n    boxSizing: \"border-box\",\n    \"& img\": {\n        mixBlendMode: \"multiply\",\n        objectFit: \"contain\",\n        height: \"150px\",\n        width: \"150px\"\n    }\n});\n\nconst Cell = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    position: \"relative\",\n    border: \"1px dashed \" + dark,\n    padding: \"14px\"\n});\n\nconst ContainerRightLines = styled(Box)({\n    width: \"50px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"column\",\n    padding: \"16px 0px\",\n});\n\nconst ContainerBottomLines = styled(Box)({\n    height: \"50px\",\n    width: \"150px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    // this match the ContainerRightLines width\n    marginRight: \"49px\",\n});\n\nconst HorizontalLine = styled(Box)((props: {color: string}) => ({\n    width: \"50%\",\n    height: \"1px\",\n    backgroundColor: props.color,\n    flex: \"1 1 1px\", // for Firefox\n}));\n\nconst VerticalLine = styled(Box)((props: {color: string}) => ({\n    height: \"50%\",\n    width: \"1px\",\n    backgroundColor: props.color\n}));\n\nconst SizeTextWrapper = styled(Box)({\n    backgroundColor: white,\n    padding: \"0 3px\",\n    textWrap: \"nowrap\"\n});\n\nconst WarningMessageContainer = styled(Box)({\n    font: primaryFontMedium,\n    \"& div > svg\": {\n        width: \"24px\",\n        height: \"24px\"\n    }\n});\n\ninterface AnchorSettingsProps {\n    updateAnchorCollection: () => void;\n    onSelectEntity: (index: number) => void;\n    entitiesNames: string[];\n    selectedEntityID: bigint | null;\n    selectedAnchorID: bigint;\n    qrCodeImage: string;\n}\n\nexport class AnchorSettings extends React.Component {\n    props: AnchorSettingsProps;\n    private readonly titleRef: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n    private readonly selectEntityRef: React.RefObject<Select> = React.createRef<Select>();\n\n    componentDidUpdate(prevProps: Readonly<AnchorSettingsProps>) {\n        if (prevProps.selectedAnchorID !== this.props.selectedAnchorID) {\n            if (this.titleRef.current)\n                this.titleRef.current.value = getAnchorTitle(this.props.selectedAnchorID);\n            this.selectEntityRef.current?.setDefault(this.getDefaultOption());\n        }\n    }\n\n    // if there is no entities, \"None\" option is selected by default\n    private getDefaultOption(): number {\n        return this.props.entitiesNames.length ? -1 : 0;\n    }\n\n    render() {\n        return(\n            <>\n                {!this.props.selectedAnchorID ?\n                    <NoAnchorWrapper>\n                        {i18next.t(\"No Anchor Selected\")}\n                    </NoAnchorWrapper>\n                :\n                    <>\n                        <InfoContainer>\n                            <Box>\n                                <InputText\n                                    ref={this.titleRef}\n                                    label={i18next.t(\"Title\")}\n                                    dark\n                                    placeholder={i18next.t(\"Anchor Title\")}\n                                    defaultValue={getAnchorTitle(this.props.selectedAnchorID)}\n                                    readOnly={!canUserEditCurrentWorld()}\n                                    onChange={(title: string) => {\n                                        updateAnchorTitle(this.props.selectedAnchorID, title);\n                                        // update anchorCollection to display the new title\n                                        this.props.updateAnchorCollection();\n                                    }}\n                                />\n                            </Box>\n                            <Box onClick={() =>\n                                copyToClipBoard(getUrlQR(this.props.selectedAnchorID, this.props.selectedEntityID))}\n                            >\n                                <InputText\n                                    label={i18next.t(\"QR Code ID\")}\n                                    dark\n                                    value={this.props.selectedAnchorID.toString()}\n                                    readOnly={true}\n                                />\n                            </Box>\n                        </InfoContainer>\n                        <Label dark>{i18next.t(\"Preview\")}</Label>\n                        <QRPreview>\n                            <Box display={{ display: \"flex\" }}>\n                                <Cell style={{border: \"1px dashed \" + dark, padding: \"14px\"}}>\n                                    <img src={`data:image/png;base64, ${this.props.qrCodeImage}`} alt=\"QR code\"/>\n                                </Cell>\n                                <ContainerRightLines>\n                                    <HorizontalLine color={green} />\n                                    <VerticalLine color={green} />\n                                    <SizeTextWrapper>10 cm</SizeTextWrapper>\n                                    <VerticalLine color={green} />\n                                    <HorizontalLine color={green} />\n                                </ContainerRightLines>\n                            </Box>\n                            <ContainerBottomLines>\n                                <VerticalLine color={primary} />\n                                <HorizontalLine color={primary} />\n                                <SizeTextWrapper>10 cm</SizeTextWrapper>\n                                <HorizontalLine color={primary} />\n                                <VerticalLine color={primary} />\n                            </ContainerBottomLines>\n                        </QRPreview>\n                        <Box style={{display: \"flex\", justifyContent: \"space-around\"}}>\n                            <Box style={{display: \"flex\", flexDirection: \"column\"}}>\n                                <Box style={{font: primaryFontLarge}}> {i18next.t(\"Print Anchor\")} </Box>\n                                <Box style={{width: \"180px\"}}>\n                                    <Label style={{color: lightDark}}>\n                                        <span> {`${i18next.t(\"Associate with the entity\")} :`} </span>\n                                    </Label>\n                                    <Select\n                                        ref={this.selectEntityRef}\n                                        placeholder={i18next.t(\"Select an entity\")}\n                                        default={this.getDefaultOption()}\n                                        options={[i18next.t(\"None\"), ...this.props.entitiesNames]}\n                                        onChange={(index: number) => this.props.onSelectEntity(index)}\n                                    />\n                                </Box>\n                            </Box>\n                            <WarningMessageContainer>\n                                <Box style={{display: \"flex\", alignItems: \"center\", gap: \"3px\"}}>\n                                    <Warning/> {`${i18next.t(\"Make sure to print with\")} :`}\n                                </Box>\n                                <ul style={{margin: 0, paddingLeft: \"55px\"}}>\n                                    <li> {i18next.t(\"Paper size letter\")} </li>\n                                    <li> {i18next.t(\"No margins\")}  </li>\n                                    <li> {i18next.t(\"Scale 100%\")} </li>\n                                </ul>\n                            </WarningMessageContainer>\n                        </Box>\n                    </>\n                }\n            </>\n        )\n    }\n}", "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {SegmentedControl} from \"@root/react-components/src/inputs/SegmentedControl\";\nimport {DocumentsLibrary} from \"@root/Frontend/Studio/Views/AssetsDialog/DocumentsLibrary/DocumentsLibrary\";\nimport {AssetType, getAssetTypeString} from \"@backend/Types/AssetType\";\nimport {TextAssetCreator} from \"@root/Frontend/Studio/Views/AssetsDialog/TextAssetCreator\";\nimport {ImageAssetCreator} from \"@root/Frontend/Studio/Views/AssetsDialog/ImageAssetCreator\";\nimport {getAssetType} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {VideoAssetCreator} from \"@root/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoAssetCreator\";\nimport {MTConnectAssetCreator} from \"@root/Frontend/Studio/Views/AssetsDialog/MTConnectAssetCreator\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Box} from \"@mui/material\";\n\nconst Inner = styled(Box)({\n    height: \"75vh\",\n    maxHeight: \"500px\",\n    width: \"752px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    textAlign: \"left\"\n});\n\nconst MainTitle = styled(Box)({\n    color: dark,\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    font: primaryFontXLarge,\n    width: \"100%\"\n});\n\nconst DialogButtons = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"6px\",\n    gap: \"4px\"\n});\n\ninterface AssetDialogProps {\n    assetID: bigint\n    temporary: boolean,\n    onCreateAsset: (type: AssetType) => bigint,\n    onClose: () => void\n}\n\ninterface AssetDialogState {\n    type: AssetType;\n    savingEnabled: boolean;\n}\n\nexport class AssetDialog extends React.Component {\n    props: AssetDialogProps;\n    state: AssetDialogState = {\n        type: AssetType.MODEL,\n        savingEnabled: false\n    };\n\n    private assetCreator: InterfaceAssetCreator | null = null;\n    private assetTypes: AssetType[] = [];\n\n    componentDidMount() {\n\n        // push all asset creator types!\n        for(let i = 0; i < AssetType.COUNT; ++i)\n            this.assetTypes.push(i as AssetType);\n\n        // MTConnect asset is currently only supported as world assets\n        if(this.props.temporary)\n            this.assetTypes.splice(this.assetTypes.indexOf(AssetType.MTCONNECT), 1);\n\n        this.setState({ type: this.props.assetID ? getAssetType(this.props.assetID) : AssetType.MODEL });\n    }\n\n    public updateDocument(documentID: bigint): void { this.assetCreator?.updateDocument?.(documentID); }\n\n    public updateGroup(groupID: bigint) { this.assetCreator?.updateGroup?.(groupID); }\n\n    public updatePeer(peerID: bigint) { this.assetCreator?.updatePeer?.(peerID); }\n\n    public updateText(textID: bigint) { this.assetCreator?.updateText?.(textID); }\n\n    public updateVideo(videoID: bigint): void { this.assetCreator?.updateVideo?.(videoID); }\n\n    public updateImportDocumentButton(): void { this.assetCreator?.updateImportDocumentButton?.(); }\n\n    public async importFile(file: File) : Promise<void> { await this.assetCreator?.importFile?.(file); }\n\n    /// confirm modification\n    private async onConfirm(): Promise<void> {\n        if (!this.validate())\n            return;\n\n        // verify if we need to create a new assetID, and save the attributes before closing!\n        const assetID: bigint = this.props.assetID ? this.props.assetID : this.props.onCreateAsset(this.state.type);\n        await this.assetCreator?.onSave(this.props.temporary, assetID);\n        this.props.onClose();\n    }\n\n    /// true if assetCreator or validateData() are not defined (or are null)\n    private validate(): boolean { return this.assetCreator?.validateData?.() ?? true; }\n\n    private renderAssetImporter(): React.ReactElement {\n        switch(this.state.type) {\n            case AssetType.IMAGE:\n                return <ImageAssetCreator\n                    ref={(creator: ImageAssetCreator) => { this.assetCreator = creator }}\n                    assetID={this.props.assetID}\n                    onAssetModified={(isValid: boolean) => this.setState({savingEnabled: isValid})}\n                />;\n            case AssetType.MODEL:\n                return <DocumentsLibrary\n                    ref={(creator: DocumentsLibrary) => { this.assetCreator = creator }}\n                    onAssetModified={(isValid: boolean) => this.setState({savingEnabled: isValid})}\n                />;\n            case AssetType.MTCONNECT:\n                return <MTConnectAssetCreator\n                    ref={(creator: MTConnectAssetCreator) => { this.assetCreator = creator }}\n                    assetID={this.props.assetID}\n                    onCreateAsset={() => this.props.onCreateAsset(this.state.type)}\n                />;\n            case AssetType.TEXT:\n                return <TextAssetCreator\n                    ref={(creator: TextAssetCreator) => { this.assetCreator = creator }}\n                    assetID={this.props.assetID}\n                    onAssetModified={(isValid: boolean) => this.setState({savingEnabled: isValid})}\n                />;\n            case AssetType.VIDEO:\n                return <VideoAssetCreator\n                    ref={(creator: VideoAssetCreator) => { this.assetCreator = creator }}\n                    assetID={this.props.assetID}\n                    onAssetModified={(isValid: boolean) => this.setState({savingEnabled: isValid})}\n                />;\n            default:\n                return <div>{i18next.t(\"Not Implemented\")}</div>;\n        }\n    }\n\n    render(): React.ReactElement {\n\n        // figure out what buttons should be displayed at the bottom (Asset MTConnect behaves a bit differently!)\n        const closeLabel: string = this.props.assetID ? i18next.t(\"Close\") : i18next.t(\"Cancel\");\n        const confirmLabel: string = this.props.temporary ? i18next.t(\"Add to Step\") : i18next.t(\"Add to World\");\n        const showAddButton: boolean = this.state.type !== AssetType.MTCONNECT && !this.props.assetID;\n\n        return(<Dialog id=\"assets-dialog\" size={DialogSize.xs} onClose={() => this.props.onClose()}>\n            <Inner>\n                <MainTitle>\n                    {this.props.assetID ? i18next.t(\"Update an Asset\"): i18next.t(\"Add an Asset\")}\n                </MainTitle>\n                <SegmentedControl\n                    dark\n                    label={i18next.t(\"Type\")}\n                    disabled={this.props.assetID !== BigInt(0)}\n                    value={this.assetTypes.indexOf(this.state.type)}\n                    options={this.assetTypes.map((type: AssetType) => getAssetTypeString(type))}\n                    onChange={(index: number) => {\n                        this.setState({\n                            type: this.assetTypes[index],\n                            savingEnabled: false\n                        });\n                    }}\n                />\n                { this.renderAssetImporter() }\n            </Inner>\n            <DialogButtons>\n                {closeLabel && <Button variant=\"outlined\" onClick={() => this.props.onClose()}>{closeLabel}</Button>}\n                {showAddButton &&\n                    <Button\n                        id=\"importer-confirm\"\n                        disabled={!this.state.savingEnabled}\n                        onClick={async () => await this.onConfirm()}>\n                        {confirmLabel}\n                    </Button>\n                }\n            </DialogButtons>\n        </Dialog>);\n    }\n}\n", "import React, {ChangeEvent} from \"react\";\nimport {\n    addAssetDocumentToWorld,\n    deleteDocument,\n    getDocuments,\n    getDocumentTitleCloud,\n    isDocumentMetadataValid,\n    loadLibraryDocumentsMetaData,\n    updateDocumentThumbnail,\n    saveModelToCore,\n    getScale,\n    getModelDimensions,\n    createNodeModel,\n    deleteNodeModel, getOwnerID, getCurrentWorldID, getWorldOwnerType, getDocumentSize,\n    getDocumentUrlS3,\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport styled from \"styled-components\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport {DocumentsCollection} from \"@root/Frontend/Studio/Views/AssetsDialog/DocumentsLibrary/DocumentsCollection\";\nimport {TabsCategories} from \"@root/Frontend/Studio/Components/TabsCategories\";\nimport {addTemporaryAssetDocument} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {DocumentsFilters} from \"./DocumentsFilters\";\nimport {secondaryFontXSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {FilterType} from \"@root/Frontend/Studio/Components/Sorting\";\nimport {acceptedFormat} from \"@utils/utils\";\nimport {convertModelFileToGLB} from \"@root/Frontend/Studio/Engine/utils\";\nimport {LoadingOverlay} from \"@root/react-components/src/misc/LoadingOverlay\";\nimport {ErrorLabel} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/StepEditorDialog\";\nimport {RescaleForm} from \"@root/Frontend/Studio/Components/Toolbar/RescaleForm\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, Checkbox} from \"@mui/material\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport {Cloud, Document} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {Peer} from \"@backend/Types/Peer\";\nimport {Plan} from \"@backend/Types/Plan\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {Group} from \"@backend/Types/Group\";\nimport {createNewDocument} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {ImportDocumentButton} from \"@root/Frontend/Studio/Views/AssetsDialog/DocumentsLibrary/ImportDocumentButton\";\n\nconst HeaderContainer = styled(\"div\")`\n    display: flex;\n    justify-content: space-between;\n    align-items: flex-end;\n    padding: 4px;\n`;\n\nconst Title = styled(\"div\")`\n    font: ${secondaryFontXSmall};\n    width: 100%;\n`;\n\nconst Container = styled(\"div\")`\n    display: flex;\n    overflow: hidden;\n    height: 100%;\n    width: 100%;\n`;\n\nconst Content = styled(\"div\")`\n    background-color: ${ dark };\n    width: calc(100% - 100px);\n    border-top-right-radius: 12px;\n    border-bottom-right-radius: 12px;\n    padding: 12px;\n    display: flex;\n    flex-direction: column;\n`;\n\nexport enum CategoriesDefault {\n    RECENT = \"Recent\",\n    ALL = \"All\",\n    FREE = \"Free\",\n    UPLOAD = \"Upload\",\n}\n\ninterface DocumentsLibraryState {\n    documentIDs: bigint[];\n    selectedDocumentID: bigint;\n    filterType: FilterType;\n    isAscendant: boolean;\n    selectedCategory: string;\n    searchStr: string;\n    isLoadingModel: boolean;\n    errorDescription: string;\n    importModelScale: number;\n    importModelDimensions: {x: number, y: number, z: number};\n    importFilePath: string;\n    optimizeModel: boolean;\n}\n\nexport class DocumentsLibrary extends  React.Component implements InterfaceAssetCreator {\n    private documentsCollectionRef: React.RefObject<DocumentsCollection> = React.createRef<DocumentsCollection>();\n    private readonly tabsCategoriesRef: React.RefObject<TabsCategories> = React.createRef<TabsCategories>();\n    private importDocumentButtonRef: React.RefObject<ImportDocumentButton> = React.createRef<ImportDocumentButton>();\n\n    props: {onAssetModified: (isValid: boolean) => void}\n    state: DocumentsLibraryState = {\n        documentIDs: [],\n        selectedDocumentID: BigInt(0),\n        selectedCategory: CategoriesDefault.ALL,\n        filterType: FilterType.CREATION_DATE,\n        isAscendant: true,\n        searchStr: \"\",\n        isLoadingModel: false,\n        errorDescription: \"\",\n        importModelScale: 0,\n        importModelDimensions: {x: 0, y: 0, z: 0},\n        importFilePath: \"\",\n        optimizeModel: true\n    };\n\n    componentDidMount() {\n        this.updateCategories();\n        this.updateDocumentIDs();\n    }\n\n    componentDidUpdate(prevProps: Readonly<object>, prevState: Readonly<DocumentsLibraryState>) {\n        if (prevState.filterType !== this.state.filterType || prevState.isAscendant !== this.state.isAscendant ||\n            prevState.selectedCategory !== this.state.selectedCategory || prevState.searchStr !== this.state.searchStr)\n            this.updateDocumentIDs();\n    }\n\n    static async verifyOwnerPlanLimits(file: File | null = null): Promise<string> {\n        const app: App = App.getInstance();\n\n        const fileNameArr: string[] = file?.name?.split(\".\") ?? [];\n        const fileExtension: string = fileNameArr?.length ? fileNameArr[fileNameArr.length - 1] : \"\";\n        const fileSize: number = file?.size ?? 0;\n\n        let plan: Plan | null = null;\n        let storage, usageUploads, numberOfDocuments: number = 0;\n\n        const today: Date = new Date();\n        const epochTimeRange: {\n            from: bigint,\n            to: bigint\n        } = UtilsShared.getRangeTimestamps(today.getFullYear(), today.getMonth());\n        const epochDayFrom: bigint = UtilsShared.toEpochDay(epochTimeRange.from);\n        const epochDayTo: bigint = UtilsShared.toEpochDay(epochTimeRange.to);\n\n        const ownerID: bigint = getOwnerID(getCurrentWorldID());\n        if (getWorldOwnerType(getCurrentWorldID()) === OwnerType.GROUP) {\n            // we need the invalidation because the epochDay for usageUploads are set in the backend\n            const group: Group = await app.dataSourceGroups.getGroup(ownerID);\n            plan = await app.dataSourcePlans.getPlan(group.Plan);\n            usageUploads = UtilsShared.computePeerUsageData(\n                group.Uploads ?? {}, epochDayFrom, epochDayTo) + fileSize;\n            storage = await app.dataSourceStorage.getGroupStorageUsage(ownerID) + fileSize;\n            numberOfDocuments = group.Documents.length;\n        } else {\n            // we need the invalidation because the epochDay for usageUploads are set in the backend\n            const peer: Peer = await app.dataSourcePeers.getPeer(getCurrentPeerID());\n            plan = await app.dataSourcePlans.getPlan(peer.plan);\n            usageUploads = UtilsShared.computePeerUsageData(\n                peer.usageUploads ?? {}, epochDayFrom, epochDayTo) + fileSize;\n            storage = await app.dataSourceStorage.getPeerStorageUsage(getCurrentPeerID()) + fileSize;\n            numberOfDocuments = peer.documents?.length;\n        }\n\n        if (!plan)\n            return i18next.t(\"Your plan is invalid\");\n\n        // check if file extension in acceptedFormat\n        if (fileExtension && !acceptedFormat.includes(fileExtension.toUpperCase()))\n            return `${i18next.t(\"The extension\")} ${fileExtension} ${i18next.t(\"is unsupported\")}`\n\n        // check if busting document count\n        if (numberOfDocuments >= plan.documents)\n            return i18next.t(\"You have exceeded the limit of models for your plan\");\n\n        // check if busting storage limit and check if busting upload limit\n        if (storage >= plan.storage)\n            return i18next.t(\"You have exceeded the storage limit of your plan\");\n\n        if (usageUploads >= plan.uploads)\n            return i18next.t(\"You have exceeded the upload limit of your plan\");\n\n        return \"\";\n    }\n\n    private updateDocumentIDs() {\n        let documentIDs: bigint[] = [...getDocuments()];\n        loadLibraryDocumentsMetaData(documentIDs.filter((documentID: bigint) => !isDocumentMetadataValid(documentID)));\n\n        documentIDs = this.filterDocumentsByCategory(documentIDs);\n        documentIDs.sort((documentID1: bigint, documentID2: bigint) =>\n            this.filterDocuments(documentID1, documentID2));\n\n        documentIDs = documentIDs.filter((documentID: bigint) =>\n            getDocumentTitleCloud(documentID).toLowerCase().includes(this.state.searchStr.toLowerCase()));\n\n        this.setState({ documentIDs });\n        this.documentsCollectionRef.current?.clearDocumentsCollectionRefMap();\n    }\n\n    public updateDocument(documentID: bigint) {\n\n        // Wait for the document to be uploaded\n        if (this.state.selectedDocumentID === documentID && isDocumentMetadataValid(documentID) &&\n            getDocumentUrlS3(documentID))\n            this.props.onAssetModified(this.validateData());\n\n        this.updateCategories();\n        this.documentsCollectionRef.current?.updateDocument(documentID);\n    }\n\n    public async onSave(temporary: boolean, assetID: bigint): Promise<boolean> {\n        if(assetID){\n            AdapterLog.ERROR(\"AssetDocument currently doesn't support being created empty!\")\n            return false;\n        }\n\n        // import from an existing Document\n        if (this.state.selectedDocumentID) {\n            assetID = temporary ? addTemporaryAssetDocument(this.state.selectedDocumentID) :\n                                  await addAssetDocumentToWorld(this.state.selectedDocumentID);\n            return assetID !== BigInt(0);\n        }\n\n        return false; // should never happen!\n    }\n\n    public importFile = async(file: File) => {\n        const errorAlert: string = await DocumentsLibrary.verifyOwnerPlanLimits(file);\n        if (errorAlert) {\n            this.reportImportError(errorAlert, file.name);\n            return;\n        }\n\n        this.setState({isLoadingModel: true});\n\n        // try to load file to temp, convert it to GLB format and create a document\n        const filePath: string = await saveModelToCore(file);\n        if (!filePath) {\n            this.setState({isLoadingModel: false});\n            this.reportImportError(\"Failed to save model\", file.name);\n            return;\n        }\n\n        let modelID: bigint = BigInt(0);\n        try {\n            modelID = createNodeModel(filePath);\n        } catch(e) {\n            this.setState({isLoadingModel: false});\n            this.reportImportError(\"Failed to import file\", file.name);\n            AdapterLog.ERROR(e);\n            return;\n        }\n\n        if (modelID === BigInt(0)) {\n            this.setState({isLoadingModel: false});\n            this.reportImportError(\"Failed to import file\", file.name);\n            return;\n        }\n\n        this.setState({\n            importFilePath: filePath,\n            importModelScale: getScale(modelID),\n            importModelDimensions: getModelDimensions(modelID),\n            isLoadingModel: false,\n            optimizeModel: this.isFileOptimizable(filePath),\n            errorDescription: \"\",\n        }, () => deleteNodeModel(modelID));\n    }\n\n    public validateData(): boolean {\n        let errorDescription: string = \"\";\n\n        if (this.state.selectedDocumentID === BigInt(0))\n            errorDescription = i18next.t(\"You must choose a model\");\n        else if (!getDocumentUrlS3(this.state.selectedDocumentID))\n            errorDescription = i18next.t(\"The model is invalid\");\n\n        this.setState({ errorDescription });\n        return !errorDescription.length;\n    }\n\n    private filterDocumentsByCategory(documentIDs: Readonly<bigint[]>): bigint[] {\n        const filteredDocumentIDs: bigint[] = [];\n\n        if (this.state.selectedCategory === \"file\") {\n            this.setState({ selectedDocumentID: null });\n            return filteredDocumentIDs;\n        }\n\n        for (const documentID of documentIDs) {\n            switch (this.state.selectedCategory) {\n                // show only recently used documents\n                case CategoriesDefault.RECENT:\n                    if (App.getInstance().isDocumentRecent(documentID))\n                        filteredDocumentIDs.push(documentID);\n                    break;\n\n                // show all\n                case CategoriesDefault.ALL:\n                    filteredDocumentIDs.push(documentID);\n                    break;\n\n                // show document that has the tag\n                default: {\n                    const cloud: Cloud = App.getInstance().getEngine().Cloud.getInstance();\n                    using document: Document | null = documentID ? cloud.getDocumentByID(documentID) : null;\n                    const categories: string[] = document?.getCategories() ?? [];\n                    if (categories.includes(this.state.selectedCategory))\n                        filteredDocumentIDs.push(documentID);\n                    break;\n                }\n            }\n        }\n\n        return filteredDocumentIDs;\n    }\n\n    private filterDocuments(documentID1: bigint, documentID2: bigint): number {\n        switch (this.state.filterType) {\n            case FilterType.ALPHA : {\n                const title1: string = getDocumentTitleCloud(documentID1);\n                const title2: string = getDocumentTitleCloud(documentID2);\n                return this.state.isAscendant ? title1.localeCompare(title2) : title2.localeCompare(title1);\n            }\n            case FilterType.CREATION_DATE : {\n                const time1: bigint = UtilsShared.getTimestampOfRandomID(documentID1);\n                const time2: bigint = UtilsShared.getTimestampOfRandomID(documentID2);\n                return this.state.isAscendant ? Number(time2 - time1) : Number(time1 - time2);\n            }\n        }\n    }\n\n    private handleChangeFilter(filterType: FilterType) {\n        if (filterType === this.state.filterType) {\n            this.setState((prevState: DocumentsLibraryState) => ({\n                isAscendant: !prevState.isAscendant\n            }));\n            return;\n        }\n\n        this.setState({ filterType, isAscendant: true });\n    }\n\n    private async deleteDocument(deletedDocumentID: bigint) {\n        const app: App = App.getInstance();\n        const ownerID: bigint = getOwnerID(getCurrentWorldID());\n        if (getWorldOwnerType(getCurrentWorldID()) === OwnerType.GROUP) {\n            await app.dataSourceGroups.removeDocument(ownerID, deletedDocumentID);\n            await app.dataSourceStorage.removeGroupStorage(ownerID, Number(getDocumentSize(deletedDocumentID)));\n        } else {\n            await app.dataSourcePeers.removeDocument(ownerID, deletedDocumentID);\n            await app.dataSourceStorage.removePeerStorage(ownerID, Number(getDocumentSize(deletedDocumentID)));\n        }\n\n        // delete document in Core and Backend (for its owner too)\n        deleteDocument(deletedDocumentID);\n        this.setState((prevState: DocumentsLibraryState) => ({\n            documentIDs: prevState.documentIDs.filter((documentID: bigint): boolean => documentID !== deletedDocumentID)\n        }));\n    }\n\n    private handleChangeSelectedCategory(selectedCategory: string) {\n        if (selectedCategory !== this.state.selectedCategory)\n            this.setState({ selectedCategory });\n    }\n\n    private async createDocumentFromFile(filePath: string) {\n        if (this.state.optimizeModel) {\n            // try to convert model to glb format\n            let filePathGLB: string = \"\";\n            try {\n                filePathGLB = convertModelFileToGLB(filePath);\n            } catch(e) {\n                this.setState({isLoadingModel: false});\n                this.reportImportError(\"Failed to convert model to GLB format\", filePath);\n                AdapterLog.ERROR(e);\n                return;\n            }\n\n            if (!filePathGLB) {\n                this.setState({isLoadingModel: false});\n                this.reportImportError(\"Failed to convert model to GLB format\", filePath);\n                return;\n            }\n\n            filePath = filePathGLB;\n        }\n\n        // try to create document with model\n        try {\n            using newDocument: Document | null = await createNewDocument(filePath);\n            if (!newDocument) {\n                this.setState({isLoadingModel: false});\n                this.reportImportError(\"Failed to create document\", filePath);\n                return;\n            }\n\n            updateDocumentThumbnail(newDocument.getID());\n            newDocument.saveInitialScale(this.state.importModelScale);\n            newDocument.addCategory(CategoriesDefault.UPLOAD);\n            if (!(Object.values(CategoriesDefault) as string[]).includes(this.state.selectedCategory))\n                newDocument.addCategory(this.state.selectedCategory);\n\n            const ownerID: bigint = newDocument.getOwnerID();\n            if (newDocument.getOwnerType() === OwnerType.GROUP)\n                App.getInstance().dataSourceGroups.invalidateGroup(ownerID);\n            else\n                App.getInstance().dataSourcePeers.invalidatePeer(ownerID);\n\n            this.setState({\n                selectedDocumentID: newDocument.getID(),\n                isLoadingModel: false,\n                errorDescription: \"\",\n                importModelScale: 0,\n                importModelDimensions: {x: 0, y: 0, z: 0},\n                documentIDs: [newDocument.getID(), ...this.state.documentIDs],\n                optimizeModel: true}, () => this.props.onAssetModified(false));\n\n        } catch(e) {\n            this.setState({isLoadingModel: false});\n            this.reportImportError(\"Failed to create document\", filePath);\n            AdapterLog.ERROR(e);\n            return;\n        }\n    }\n\n    private reportImportError(error: string, documentName: string) {\n        const errorDescription: string = `${i18next.t(error)}: ${documentName}`;\n        this.setState({errorDescription});\n    }\n\n    private isFileOptimizable(importFile: string): boolean {\n        return importFile.split('.').at(-1) !== \"glb\";\n    }\n\n    private renderDialogImportDocument(): JSX.Element {\n        return (\n            <Dialog\n                size={DialogSize.xs}\n                onClose={() => this.setState({importFilePath: \"\"})}>\n                <Box sx={{display: \"flex\", flexDirection: \"column\", alignItems: \"center\"}}>\n                    <RescaleForm\n                        defaultValue={Math.floor((this.state.importModelScale + Number.EPSILON) * 100000000) / 100000000}\n                        onChange={(factor: number) => this.setState({importModelScale: factor})}\n                        dimensions={this.state.importModelDimensions}\n                    />\n                    {this.isFileOptimizable(this.state.importFilePath) &&\n                        <Box style={{display: \"flex\", flexDirection: \"row\", justifyContent: \"flex-end\", width: \"100%\"}}>\n                            <Box style={{display: \"flex\", alignItems: \"center\"}}>\n                                {i18next.t(\"Optimize model for faster loading\")}:\n                            </Box>\n                            <Checkbox\n                                checked={this.state.optimizeModel}\n                                onChange={(event: ChangeEvent<HTMLInputElement>) =>\n                                    this.setState({optimizeModel: event.target.checked})\n                                }\n                            />\n                        </Box>\n                    }\n                    <Box sx={{display: \"flex\", justifyContent: \"space-between\", width: \"100%\"}}>\n                        <Button variant=\"outlined\" onClick={() => this.setState({importFilePath: \"\"})}>\n                            {i18next.t(\"Cancel\")}\n                        </Button>\n                        <Button id=\"confirm-model-import-scale\"\n                                onClick={() => {\n                                    const importFilePath: string = this.state.importFilePath;\n                                    this.setState({isLoadingModel: true, importFilePath: \"\"}, async () => {\n                                        await UtilsShared.sleep(0);\n                                        await this.createDocumentFromFile(importFilePath)\n                                    });\n                                }}>\n                            {i18next.t(\"Apply\")}\n                        </Button>\n                    </Box>\n                </Box>\n            </Dialog>\n        )\n    }\n\n    // Look into each documents to gather categories\n    private updateCategories() {\n        const categories: Set<string> = new Set<string>();\n\n        const cloud: Cloud = App.getInstance().getEngine().Cloud.getInstance();\n        for (const documentID of getDocuments()) {\n            using document: Document | null = documentID ? cloud.getDocumentByID(documentID) : null;\n            for (const category of document?.getCategories() ?? []) {\n                if (category === CategoriesDefault.FREE)\n                    continue;\n                categories.add(category);\n             }\n        }\n\n        // We don't want to show the free category\n        const newCategories: string[] = [\n            CategoriesDefault.RECENT,\n            CategoriesDefault.ALL,\n            ...categories\n        ];\n\n        this.tabsCategoriesRef.current?.setCategories(new Set(newCategories));\n    }\n\n    private handleChangeModelFile = async (e: React.ChangeEvent<HTMLInputElement>) => {\n        if (e.target.files?.length)\n            await this.importFile(e.target.files[0]);\n    }\n\n    private changeSelectedDocumentID = (documentID: bigint) => {\n        this.setState({\n            errorDescription: \"\",\n            selectedDocumentID: this.state.selectedDocumentID === documentID ?\n                BigInt(0) : documentID\n        }, () => this.props.onAssetModified(this.validateData()));\n    }\n\n    render(){\n        return(\n            <>\n                {this.state.isLoadingModel && <LoadingOverlay />}\n                {this.state.importFilePath && this.renderDialogImportDocument()}\n                <HeaderContainer>\n                    <Title> { i18next.t(\"Model Library\") } </Title>\n                    <DocumentsFilters\n                        handleChangeSearch={(searchStr: string) => this.setState({ searchStr })}\n                        handleChangeFilter={(filterType: FilterType) => this.handleChangeFilter(filterType)}\n                        filterType={this.state.filterType}\n                        isAscendant={this.state.isAscendant}\n                    />\n                </HeaderContainer>\n                <Container>\n                    <TabsCategories\n                        ref={this.tabsCategoriesRef}\n                        selectedCategory={this.state.selectedCategory}\n                        defaultCategories={Object.values(CategoriesDefault)}\n                        changeSelectedCategory={\n                            (newSelectedCategory: string) => this.handleChangeSelectedCategory(newSelectedCategory)\n                        }\n                    />\n                    <Content>\n                        <DocumentsCollection\n                            ref={this.documentsCollectionRef}\n                            documentIDs={this.state.documentIDs}\n                            selectedDocumentID={this.state.selectedDocumentID}\n                            deleteDocument={(documentID: bigint) => this.deleteDocument(documentID)}\n                            changeSelectedDocumentID={this.changeSelectedDocumentID}\n                            handleChangeModelFile={this.handleChangeModelFile}\n                            importButton={\n                                <ImportDocumentButton\n                                    ref={this.importDocumentButtonRef}\n                                    handleChangeModelFile={(e: React.ChangeEvent<HTMLInputElement>) =>\n                                        this.handleChangeModelFile(e)}\n                                />\n                            }\n                        />\n                    </Content>\n                </Container>\n                <ErrorLabel style={{ marginTop: \"3px\" }}>\n                    {this.state.errorDescription}\n                </ErrorLabel>\n            </>\n        )\n    }\n}\n", "import React from \"react\";\nimport styled from \"styled-components\";\nimport {FixedSizeGrid, GridChildComponentProps} from \"react-window\";\nimport {\n    dark,\n    darkenPrimary,\n    lightDark,\n    lighterDark,\n    lightWhite,\n} from \"@root/react-components/src/values/colors/colors\";\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport {Loading} from \"@root/react-components/src/logo/Loading\";\nimport {DocumentItem} from \"@root/Frontend/Studio/Views/AssetsDialog/DocumentsLibrary/DocumentItem\";\nimport {Box} from \"@mui/material\";\nimport i18next from \"i18next\";\n\nconst Wrapper = styled(\"div\")`\n    overflow: hidden;\n    position: relative;\n    height: 100%;\n    width: 100%;\n    & > div > div{\n        overflow-x: hidden!important;\n        scrollbar-color: ${lighterDark} ${dark}; //supported by almost all browsers\n        \n        /* width */\n        &::-webkit-scrollbar {\n          width: 10px;\n          height: 10px;\n        }\n        \n        /* Track */\n        &::-webkit-scrollbar-track {\n          background-color: ${lighterDark};\n        }\n         \n        /* Handle */\n        &::-webkit-scrollbar-thumb {\n          background: ${lightDark}; \n        }\n        \n        /* Handle on hover */\n        &::-webkit-scrollbar-thumb:hover {\n          background: ${darkenPrimary}; \n        }\n    }\n`;\n\nconst LoadingWrap = styled('div')`\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 100%;\n    width: 100%;\n`;\n\nconst EmptyListMessage = styled(Box)({\n    position: \"absolute\",\n    color: lightWhite,\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n});\n\ninterface DocumentsCollectionProps {\n    documentIDs: bigint[];\n    selectedDocumentID: bigint;\n    changeSelectedDocumentID: (documentID: bigint) => void;\n    deleteDocument: (documentID: bigint) => void;\n    handleChangeModelFile: (e: React.ChangeEvent<HTMLInputElement>) => void;\n    importButton: React.ReactElement;\n}\n\nexport class DocumentsCollection extends React.PureComponent {\n    props: DocumentsCollectionProps;\n    private mapDocumentItemsRef: Map<bigint, React.RefObject<DocumentItem>> = new Map();\n\n    public updateDocument(documentID: bigint) {\n        this.mapDocumentItemsRef.get(documentID)?.current?.updateDocument();\n    }\n\n    public clearDocumentsCollectionRefMap() { this.mapDocumentItemsRef.clear(); }\n\n    private renderDocumentGrid({ columnIndex, rowIndex, style, data } : GridChildComponentProps) {\n        const index: number = rowIndex * 5 + columnIndex;\n\n        if (index === 0) {\n            return <Box style={style}>{this.props.importButton}</Box>;\n        }\n\n        if(index >= this.props.documentIDs.length + 1)\n            return <></>;\n\n        const documentID = data[index];\n        const documentRef: React.RefObject<DocumentItem> = React.createRef<DocumentItem>();\n        this.mapDocumentItemsRef.set(documentID, documentRef);\n\n        return (\n            <DocumentItem\n                ref={documentRef}\n                style={style}\n                changeSelectedDocumentID={() => this.props.changeSelectedDocumentID(documentID)}\n                isSelected={this.props.selectedDocumentID === documentID}\n                documentID={documentID}\n                deleteDocument={() => this.props.deleteDocument(documentID)}\n            />\n        )\n    }\n\n    render() {\n        return(\n            <div style={{ height: \"100%\", width: \"100%\" }}>\n                { !this.props.documentIDs ?\n                    <LoadingWrap>\n                        <Loading/>\n                    </LoadingWrap>\n                    :\n                    <Wrapper id={\"models_library\"}>\n                        {!this.props.documentIDs.length &&\n                            <EmptyListMessage>\n                                {i18next.t(\"No models, use the + button to import a new model\")}\n                            </EmptyListMessage>\n                        }\n                        <AutoSizer>\n                            {(props: { height: number, width: number }) =>\n                                <FixedSizeGrid\n                                    height={props.height}\n                                    width={props.width}\n                                    columnCount={5}\n                                    // scrollbar width : 10px divided in 5 cols\n                                    columnWidth={props.width / 5 - 2}\n                                    rowCount={Math.ceil((this.props.documentIDs.length + 1) / 5)}\n                                    rowHeight={132}\n                                    itemData={[BigInt(0)].concat(this.props.documentIDs)}\n                                >\n                                    {this.renderDocumentGrid.bind(this)}\n                                </FixedSizeGrid>\n                            }\n                        </AutoSizer>\n                    </Wrapper>\n                }\n            </div>\n        )\n    }\n}\n", "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {lightDark, primary, shadowBlue, shadowDark} from \"../values/colors/colors\";\nimport {isDescendant} from \"../utils\";\nimport {ThemeProvider} from \"@mui/material/styles\";\nimport {theme} from \"../../../Frontend/theme\";\nimport {createRoot, Root} from \"react-dom/client\";\n\nconst Wrapper = styled(\"div\")\n    <{\n        dark: boolean,\n        width: number,\n        small: boolean,\n        top: number,\n        flip: boolean,\n        left: number,\n        alignBottom: boolean,\n        alignTop: boolean\n    }>`\n    background-color: ${props => props.dark?lightDark:primary};\n    position:absolute;\n    z-index:99999;\n    box-sizing: border-box;\n    display: \"flex\";\n    flex-direction: column;\n    width: ${props => props.width}px;\n    border-radius: ${props => props.small ? 6 : 12}px;\n    top:${props => props.top + (props.alignTop ? 6 : -18)}px;\n    left:${props => props.flip ? props.left - 156 : props.left}px;\n    margin-left: ${props => props.alignBottom || props.alignTop ? -17 : 0}px;\n    box-shadow:${props => props.dark ? shadowDark : shadowBlue};\n    transform: ${props => props.alignBottom ? \"translateY(-100%)\"  : \"unset\"};\n    &:after{\n        content:\"\";\n        position:absolute;\n        z-index: 3990;\n        height:0;\n        width:0;\n        left:${props => props.flip ? \"100%\" : props.alignBottom || props.alignTop ? \"12px\" : \"-10px\"};\n        top: ${props => props.alignTop ? \"-10px\" : props.alignBottom ? \"100%\" : \"calc(50% - 5px)\"};\n        border-bottom:5px solid transparent;\n        border-top-color:${props => props.alignBottom ? props.dark ? lightDark : primary : \"transparent\"};\n        border-top-style:solid;\n        border-top-width:5px;\n        border-right-color:${props => !props.flip && !props.alignBottom && !props.alignTop ? props.dark ? lightDark : primary : \"transparent\"};\n        border-right-style:solid;\n        border-right-width:5px;\n        border-left-color:${props => props.flip ? props.dark ? lightDark : primary : \"transparent\"};\n        border-left-style:solid;\n        border-left-width:5px;\n        border-bottom-color:${props => props.alignTop ? props.dark ? lightDark : primary : \"transparent\"};\n        border-bottom-style:solid;\n        border-bottom-width:5px;\n    }\n`;\n\nconst Inner = styled(\"div\")`\n    height: 100%;\n    display: flex;\n    flex-direction: column;\n    padding: 6px;\n`;\n\nexport const ArrowPopup = (props: {\n    id?: string,\n    top: number,\n    left: number,\n    dark?: boolean,\n    flip?: boolean,\n    small?: boolean,\n    width?: number,\n    alignBottom?: boolean,\n    alignTop?: boolean,\n    closeOnEnter?:boolean,\n    onSubmit?: Function,\n    onClose?:Function,\n    children?: any\n} = {\n    id: \"arrowPopup\",\n    top: 50,\n    left: 50,\n    dark: true,\n    flip: false,\n    small: false,\n    width: 260,\n    alignBottom: false,\n    alignTop: false,\n    closeOnEnter: true,\n    onSubmit: () => {},\n    onClose: () => {},\n    children: \"This is a arrowPopup\"\n}) => {\n    let newDiv = document.createElement(\"div\");\n\n    newDiv.style.height = \"100%\";\n    newDiv.style.width = \"100%\";\n    newDiv.style.position = \"fixed\";\n    newDiv.style.top = \"0px\";\n    newDiv.style.left = \"0px\";\n    newDiv.style.zIndex = \"999\";\n\n    document.body.appendChild(newDiv);\n\n    // calculate proper offset\n\n    // key listener\n    let keyDownEvent = (event: KeyboardEvent) => {\n        event.stopPropagation();\n        // submit on enter\n        if (event.key === \"Enter\" && (props.closeOnEnter ?? true)) {\n            props.onSubmit();\n            removePopup();\n        } else if (event.key === \"Escape\") {\n            removePopup();\n        }\n    };\n    newDiv.addEventListener(\"keydown\", keyDownEvent);\n\n    // removes the popup\n    let removePopup = () => {\n        if(props.onClose)\n            props.onClose();\n        newDiv.remove();\n        newDiv.removeEventListener('keydown', keyDownEvent);\n    };\n\n    const root: Root = createRoot(newDiv);\n\n    root.render(\n            <ThemeProvider theme={theme}>\n                <Wrapper\n                    id={props.id}\n                    top={props.top}\n                    left={props.left}\n                    flip={props.flip}\n                    dark={props.dark}\n                    small={props.small}\n                    width={props.width ? props.width : 216}\n                    alignBottom={props.alignBottom}\n                    alignTop={props.alignTop}\n                >\n                    <Inner>\n                        {props.children}\n                    </Inner>\n                </Wrapper>\n            </ThemeProvider>\n    );\n\n    newDiv.addEventListener(\"click\", (e) => {\n        if(isDescendant(newDiv, (e.target as HTMLElement)))\n            return;\n        removePopup();\n    });\n\n    return {\n        element: newDiv,\n        remove: removePopup\n    };\n};", "// source : https://stackoverflow.com/a/2234986\nexport const isDescendant = (parent: HTMLElement, child: HTMLElement) => {\n    let node = child.parentNode;\n    while (node != null) {\n        if (node == parent) {\n            return true;\n        }\n        node = node.parentNode;\n    }\n    return false;\n}", "import {Item} from \"@root/react-components/src/misc/Item\";\nimport {\n    getDocuments,\n    getDocumentThumbnailLocalPath,\n    getDocumentThumbnailUrlS3,\n    getDocumentTitleCloud,\n    getDocumentUrlS3,\n    isDocumentMetadataValid,\n    isDocumentThumbnailLoaded,\n    loadDocumentThumbnail,\n    updateDocumentTitleCloud\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Rename} from \"@root/react-components/src/icons/Rename\";\nimport {ArrowPopup} from \"@root/react-components/src/misc/ArrowPopup\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {primary, red, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {Plus} from \"@root/react-components/src/icons/Plus\";\nimport {TagsPopup} from \"@root/Frontend/Studio/Components/TagsPopup\";\nimport {Delete} from \"@root/react-components/src/icons/Delete\";\nimport i18next from \"i18next\";\nimport React from \"react\";\nimport {Popover} from \"@mui/material\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {Cloud, Document} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {CategoriesDefault} from \"./DocumentsLibrary\";\n\nconst PLACEHOLDER_IMAGE = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAA1JREFUGFdjUG/Y/R8ABJYCYtJPB9cAAAAASUVORK5CYII=\";\n\ninterface DocumentItemProps {\n    documentID: bigint\n    isSelected: boolean\n    changeSelectedDocumentID: () => void\n    style: React.CSSProperties\n    deleteDocument: () => void\n}\n\ninterface DocumentItemState {\n    title: string\n    thumbnail: string\n    isDisabled: boolean\n    tagsAnchor: HTMLButtonElement | null\n    isInvalid: boolean\n}\n\nexport class DocumentItem extends React.Component {\n    props: DocumentItemProps;\n    state: DocumentItemState = {\n        title: \"\",\n        thumbnail: \"\",\n        isDisabled: false,\n        tagsAnchor: null,\n        isInvalid: false\n    };\n\n    componentDidMount() {\n        this.updateDocument();\n    }\n\n    public updateDocument() {\n        const title: string = getDocumentTitleCloud(this.props.documentID);\n        // TODO (@ebalthazard) : should handle if a peer doesn't have the permission to delete the document\n        const isDisabled: boolean = this.getCategories(this.props.documentID).includes(\"Free\");\n        const isInvalid: boolean = !getDocumentUrlS3(this.props.documentID);\n        let thumbnail: string = \"\";\n\n        if (isDocumentMetadataValid(this.props.documentID) && !isDocumentThumbnailLoaded(this.props.documentID) &&\n            getDocumentThumbnailUrlS3(this.props.documentID))\n            loadDocumentThumbnail(this.props.documentID);\n        else {\n            const localPath: string = getDocumentThumbnailLocalPath(this.props.documentID);\n            thumbnail = localPath ? AdapterUtils.createBlobUrlFromFilePath(localPath) : PLACEHOLDER_IMAGE;\n        }\n\n        if (title !== this.state.title || thumbnail !== this.state.thumbnail ||\n            isDisabled !== this.state.isDisabled || isInvalid !== this.state.isInvalid)\n            this.setState({ title, thumbnail, isDisabled, isInvalid });\n    }\n\n    private handleRename(e: React.MouseEvent<HTMLDivElement>) {\n        let title: string = getDocumentTitleCloud(this.props.documentID);\n        ArrowPopup({\n            left: e.clientX + 5,\n            top: e.clientY,\n            children: (\n                <InputText\n                    id=\"rename-document-input\"\n                    onChange={(value: string) => title = value}\n                    defaultValue={title}\n                />\n            ),\n            onSubmit: () => this.setState({ title }, () => updateDocumentTitleCloud(this.props.documentID, title))\n        });\n    }\n\n    private getAllDocumentsCategories(): Set<string> {\n        const tags: string[] = [];\n        for (const documentID of getDocuments())\n            tags.push(...this.getCategories(documentID));\n\n        return new Set<string>(tags);\n    }\n\n    private changeSelectedDocumentID() {\n        if (this.state.isInvalid)\n            return;\n        this.props.changeSelectedDocumentID();\n    }\n\n    private getCategories(documentID: bigint): string[] {\n        using document: Document | null = this.getDocument(documentID);\n        return document?.getCategories() ?? [];\n    }\n\n    private async handlePromptDeleteDocument() {\n        const confirmMessage: string =\n            `${i18next.t(\"Are you sure you want to delete the model\")} ${this.state.title} ?`;\n        const hasConfirmed: boolean = await Prompt.confirm(confirmMessage, i18next.t(\"Delete\"), true);\n        if (hasConfirmed)\n            this.props.deleteDocument();\n    }\n\n    private getDocument(documentID: bigint): Document | null {\n        const cloud: Cloud = App.getInstance().getEngine().Cloud.getInstance();\n        return documentID ? cloud.getDocumentByID(documentID) : null;\n    }\n\n    render() {\n        return (\n            <div className=\"model\" style={this.props.style}>\n                {!!this.props.documentID &&\n                   <>\n                    <Item\n                        id={this.props.documentID.toString()}\n                        title={this.state.title}\n                        thumbnail={this.state.thumbnail}\n                        onClick={() => this.changeSelectedDocumentID()}\n                        selected={this.props.isSelected}\n                        isInvalid={this.state.isInvalid}\n                        invalidTooltip={i18next.t(\"Invalid model\")}\n                        actions={[\n                            {\n                                icon: <Rename/>,\n                                id: \"rename-document\",\n                                disabled: this.state.isDisabled,\n                                onClick: (e: React.MouseEvent<HTMLDivElement>) => this.handleRename(e),\n                                color: primary\n                            },\n                            {\n                                icon: <Plus/>,\n                                id: \"open-document-tags\",\n                                disabled: this.state.isDisabled,\n                                onClick: (e: React.MouseEvent<HTMLDivElement>) =>\n                                    this.setState({ tagsAnchor: e.currentTarget }),\n                                color: yellow\n                            },\n                            {\n                                icon: <Delete/>,\n                                id: \"delete-document\",\n                                disabled: this.state.isDisabled,\n                                onClick: async () => await this.handlePromptDeleteDocument(),\n                                color: red\n                            }\n                        ]}\n                    />\n\n                   </>\n                }\n                <Popover\n                    open={Boolean(this.state.tagsAnchor)}\n                    onClose={() => this.setState({ tagsAnchor: null })}\n                    anchorEl={this.state.tagsAnchor}\n                    anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n                >\n                    <TagsPopup\n                        defaultTags={Object.values(CategoriesDefault)}\n                        allTags={new Set<string>(this.getAllDocumentsCategories())}\n                        selectedTags={this.getCategories(this.props.documentID)}\n                        addNewTag={(tag: string) => {\n                            using document: Document | null = this.getDocument(this.props.documentID);\n                            document?.addCategory(tag);\n                        }}\n                        removeTag={(tag: string) => {\n                            using document: Document | null = this.getDocument(this.props.documentID);\n                            document?.removeCategory(tag);\n                        }}\n                    />\n                </Popover>\n            </div>\n        )\n    }\n}\n", "import {Plus} from \"@root/react-components/src/icons/Plus\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport React from \"react\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport i18next from \"i18next\";\nimport {secondaryFontMedium, secondaryFontXSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {lightDark, lighterDark, primary, red, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Box, styled} from \"@mui/material\";\nimport {Check} from \"@root/react-components/src/icons/Check\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport isEqual from \"lodash/isEqual\";\n\nconst Wrapper = styled(Box)({\n    color: white,\n    font: secondaryFontMedium,\n    backgroundColor:lightDark,\n    padding: \"10px\",\n    width: \"fit-content\",\n    minWidth: \"190px\"\n});\n\nconst IconContainer = styled(Box)({\n    display: \"flex\",\n    gap: \"10px\",\n    \"div > svg\": {\n        width: \"12px\",\n        height: \"12px\"\n    },\n    \"&:hover\": {\n        cursor: \"pointer\"\n    }\n});\n\nconst TagsContainer = styled(Box)({\n    maxHeight: \"150px\",\n    overflowY: \"auto\",\n\n    // Supported by Chrome and Firefox\n    scrollbarWidth: \"thin\",\n    scrollbarColor: `${lighterDark} ${lightDark}`,\n\n    // Supported by Safari\n    /* width */\n    \"&::-webkit-scrollbar\": {\n        width: \"7px\",\n        height: \"10px\",\n    },\n\n    /* Track */\n    \"&::-webkit-scrollbar-track\": {\n        backgroundColor: lightDark,\n    },\n\n    /* Handle */\n    \"&::-webkit-scrollbar-thumb\": {\n        background: lighterDark,\n        cursor: \"pointer\",\n        borderRadius: \"6px\",\n    }\n});\n\nconst Tag = styled(Box)((props: {active: number}) => ({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    gap: \"15px\",\n    padding: \"4px\",\n    marginBottom: \"6px\",\n    borderRadius: \"3px\",\n    backgroundColor: props.active ? primary : \"inherit\",\n    \"& > .add\":{\n        transform: props.active ? \"rotate(45deg)\" : \"rotate(-0deg)\",\n        transition: \"transform 0.3s\",\n        display: \"flex\",\n    }\n}));\n\nconst IconWrapper = styled(Box)({\n    height: \"18px\",\n    width: \"18px\",\n    \"&:hover\": {\n        cursor: \"pointer\"\n    }\n});\n\ninterface tagPopupProps {\n    allTags: Set<string>;\n    selectedTags: string[]; // selected tags are those already associated with the element\n    defaultTags?: string[];\n    addNewTag: (tag: string) => void;\n    removeTag: (tag: string) => void;\n}\n\ninterface tagPopupState {\n    displayedTags: string[];\n    creatingNewTag: boolean;\n    newTagStr: string;\n    selectedTags: string[];\n}\n\nexport class TagsPopup extends React.Component{\n    private readonly tagPopupRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    private readonly tagInputRef: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n\n    private readonly notAllowedTags: Set<string> = this.getNotAllowedTags();\n\n    props: tagPopupProps;\n    state: tagPopupState = {\n        displayedTags: [],\n        creatingNewTag: false,\n        newTagStr: \"\",\n        selectedTags: []\n    };\n\n    componentDidMount() {\n        // selectedTags first to have them at the top\n        const displayedTags = [...new Set([...this.props.selectedTags, ...this.props.allTags])];\n        this.setState({displayedTags, selectedTags: this.props.selectedTags});\n    }\n\n    componentDidUpdate(prevProps: Readonly<tagPopupProps>, prevState: Readonly<tagPopupState>) {\n        if (prevState.newTagStr !== this.state.newTagStr ||\n            !isEqual(prevState.selectedTags, this.state.selectedTags))\n            this.updateDisplayedTags();\n    }\n\n    private handleOnKeyDown(keyEvent: React.KeyboardEvent){\n        if (keyEvent.key === \"Enter\")\n            this.addNewTag();\n    }\n\n    private getNotAllowedTags(): Set<string> {\n        if (!this.props.defaultTags?.length)\n            return new Set([\"free\", i18next.t(\"Free\").toLowerCase()]);\n\n        const translatedDefaultsTags: string [] =\n            this.props.defaultTags?.map((tag: string) => i18next.t(tag).toLowerCase()) ?? [];\n\n        translatedDefaultsTags.push(\"free\", i18next.t(\"Free\").toLowerCase())\n\n        const defaultTags: string [] = this.props.defaultTags?.map((tag: string) => tag.toLowerCase()) ?? [];\n        return new Set([...defaultTags, ...translatedDefaultsTags]);\n    }\n\n    private addNewTag(): void {\n        const newTag: string = this.state.newTagStr.trim();\n        if (!this.canAddTag(newTag))\n            return;\n\n        this.props.addNewTag(newTag);\n\n        const selectedTags: string[] = this.state.selectedTags;\n        selectedTags.push(newTag);\n        this.setState({creatingNewTag: false, newTagStr: \"\", selectedTags});\n    }\n\n    private updateDisplayedTags() {\n        // selectedTags first to have them at the top then defaultTranslatedTags to prioritize translations\n        const tags = new Set([\n            ...this.state.selectedTags,\n            ...this.props.allTags\n        ]);\n\n        // check also the translation for default tags\n        const newDisplayedTags: string[] = [...tags].filter((tag: string) => {\n            const isIncluded: boolean = tag.toLowerCase().includes(this.state.newTagStr.toLowerCase());\n\n            return !this.props.defaultTags?.includes(tag)\n                ? isIncluded \n                : isIncluded || i18next.t(tag).toLowerCase().includes(this.state.newTagStr.toLowerCase());\n        });\n\n        if (this.state.displayedTags !== newDisplayedTags)\n            this.setState({displayedTags: newDisplayedTags});\n    }\n\n    private clickOnTag(e: React.MouseEvent<HTMLDivElement>, tag: string) {\n        e.stopPropagation();\n        const selectedTags: string[] = this.state.selectedTags;\n        if (this.state.selectedTags.includes(tag)) {\n            selectedTags.splice(selectedTags.indexOf(tag), 1);\n            this.props.removeTag(tag);\n        } else {\n            selectedTags.push(tag);\n            this.props.addNewTag(tag);\n        }\n        this.setState({ selectedTags });\n    }\n\n    private canAddTag(newTag: string): boolean {\n       return !!newTag && !this.notAllowedTags.has(newTag.toLowerCase());\n    }\n\n    render() {\n        return (\n            <Wrapper>\n                <Box style={{textAlign: \"center\", paddingBottom: \"5px\"}}>\n                    {this.state.creatingNewTag &&\n                        <Box style={{minHeight: \"34px\"}}>\n                            <Box style={{paddingTop: \"5px\", display: \"flex\", gap: \"10px\"}}>\n                                <InputText\n                                    ref={this.tagInputRef}\n                                    id=\"new-tag-input\"\n                                    value={this.state.newTagStr}\n                                    onChange={(str: string) => this.setState({newTagStr: str})}\n                                    placeholder={i18next.t(\"Enter new tag name\")}\n                                    onKeyDown={(e: React.KeyboardEvent) => this.handleOnKeyDown(e)}\n                                />\n                                <IconContainer>\n                                    <Box\n                                        onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n                                            e.stopPropagation();\n                                            this.addNewTag();\n                                        }}\n                                        style={{ opacity: this.canAddTag(this.state.newTagStr) ? 1 : 0.6,\n                                                 width: \"12px\"\n                                        }}\n                                    >\n                                        <Check/>\n                                    </Box>\n                                    <Box\n                                        style={{height: \"12px\"}}\n                                        onClick={(e) => {\n                                            e.stopPropagation();\n                                            this.setState({newTagStr: \"\", creatingNewTag: false});\n                                        }}\n                                    >\n                                        <Close/>\n                                    </Box>\n                                </IconContainer>\n                            </Box>\n                            { this.state.newTagStr && !this.canAddTag(this.state.newTagStr) &&\n                                <Box style={{color: red, font: secondaryFontXSmall, padding: \"2px\"}}>\n                                    {i18next.t(\"Can not use this name, it's a default name\")}\n                                </Box>\n                            }\n                        </Box>\n                    }\n                    <Button\n                        size=\"small\"\n                        id=\"create-new-tag\"\n                        style={{display: this.state.creatingNewTag ? \"none\" : \"inline-flex\"}}\n                        onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n                            e.stopPropagation();\n                            this.setState({creatingNewTag: true},() => this.tagInputRef.current?.focus())\n                        }}\n                    >\n                        {i18next.t(\"New Tag\")}\n                    </Button>\n                </Box>\n                <TagsContainer ref={this.tagPopupRef} className={\"tags\"}>\n                    { this.state.displayedTags.map((tag: string) => {\n\n                        if (tag === \"Free\")\n                            return;\n\n                        return (\n                            <Tag key={\"tag-\" + tag}\n                                 active={Number(this.state.selectedTags.includes(tag))}\n                                 className=\"tag\"\n                            >\n                                {this.props.defaultTags?.includes(tag) ? i18next.t(tag) : tag}\n                                <IconWrapper onClick={(e: React.MouseEvent<HTMLDivElement>) => this.clickOnTag(e, tag)}\n                                             className={\"add\"}\n                                >\n                                    <Plus/>\n                                </IconWrapper>\n                            </Tag>\n                        )\n                    })}\n                </TagsContainer>\n            </Wrapper>\n        );\n    }\n}", "import React from \"react\";\nimport { lighterDark, lightGrey, primary, white } from \"@root/react-components/src/values/colors/colors\";\nimport {secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {Box, styled} from \"@mui/material\";\nimport isEqual from \"lodash/isEqual\";\n\nconst Tabs = styled(Box)({\n    width: \"120px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"flex-start\",\n    backgroundColor: primary,\n    overflowY: \"auto\",\n    scrollbarWidth: \"thin\",\n    scrollbarColor: `${white} ${primary}`,\n    borderTopLeftRadius: \"12px\",\n    borderBottomLeftRadius: \"12px\",\n    border: `1px solid ${primary}`,\n    borderRight: 0,\n\n    /* width */\n    \"&::-webkit-scrollbar\": {\n        width: \"10px\",\n        height: \"10px\",\n    },\n\n    /* Track */\n    \"&::-webkit-scrollbar-track\": {\n        backgroundColor: primary,\n    },\n\n    /* Handle */\n    \"&::-webkit-scrollbar-thumb\": {\n        background: white,\n        cursor: \"pointer\",\n        borderRadius: \"6px\",\n    },\n\n    /* Handle on hover */\n    \"&::-webkit-scrollbar-thumb:hover\": {\n        background: white,\n    }\n});\n\nconst Tab = styled(Box)((props: {active: number, disabled: boolean}) => ({\n    font: secondaryFontLarge,\n    padding: \"12px\",\n    color: changeColorTab(props.active, props.disabled, false),\n    backgroundColor: changeBackgroundColorTab(props.active, props.disabled, false),\n    fontWeight: props.active ? \"bolder\" : \"normal\",\n    overflowWrap: \"break-word\",\n    transition: \"ease 0.1s\",\n    \"&:hover\": {\n        color: changeColorTab(props.active, props.disabled, true),\n        backgroundColor: changeBackgroundColorTab(props.active, props.disabled, true),\n        fontWeight: props.disabled ? \"unset\" : \"bolder\",\n        cursor: props.disabled ? \"unset\" : \"pointer\",\n    }\n}));\n\nfunction changeColorTab(active: number, disabled: boolean, hover: boolean) {\n    if (disabled)\n        return lighterDark;\n    if (active || hover)\n        return primary;\n    return white;\n}\n\nfunction changeBackgroundColorTab(active: number, disabled: boolean, hover: boolean) {\n    if (disabled)\n        return lightGrey;\n    if (active || hover)\n        return white;\n    return primary;\n}\n\ninterface TabsCategoriesProps {\n    selectedCategory: string,\n    defaultCategories?: string[],\n    changeSelectedCategory: (selectedCategory: string) => void\n}\n\nexport class TabsCategories extends React.Component {\n    props: TabsCategoriesProps;\n    state: { categories: Set<string> } = { categories: new Set() }\n\n    public setCategories(categories: Set<string>) {\n        if (!isEqual(categories, this.state.categories))\n            this.setState({categories});\n    }\n\n    public getCategories(): Set<string> {\n        return this.state.categories;\n    }\n\n    render() {\n        return (\n            <Tabs>\n                {[...this.state.categories].map((tab: string) => {\n                    return (\n                        <Box key={tab}>\n                            <Tab\n                                className=\"category-tab\"\n                                disabled={false}\n                                active={Number(tab === this.props.selectedCategory)}\n                                onClick={() => this.props.changeSelectedCategory(tab)}\n                            >\n                                { this.props.defaultCategories?.includes(tab) ? i18next.t(tab) : tab }\n                            </Tab>\n                        </Box>\n                    )\n                })}\n            </Tabs>\n        )\n    }\n}", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {SearchBar, SearchBarSize} from \"@root/react-components/src/inputs/SearchBar\";\nimport {FilterType, Sorting} from \"@root/Frontend/Studio/Components/Sorting\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    height: \"28px\",\n    gap: \"8px\",\n    alignItems: \"center\",\n    justifyContent: \"flex-end\",\n    width: \"400px\"\n});\n\ninterface DocumentsFiltersProps {\n    handleChangeSearch: (searchStr: string) => void\n    handleChangeFilter: (filterType: FilterType) => void\n    filterType: FilterType\n    isAscendant: boolean\n}\n\ninterface DocumentsFiltersState { filtersAnchor: HTMLButtonElement | null }\n\nexport class DocumentsFilters extends React.Component {\n    private readonly filtersRefContainer: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    props: DocumentsFiltersProps\n    state: DocumentsFiltersState = { filtersAnchor: null }\n\n    render() {\n        return (\n            <Container ref={this.filtersRefContainer}>\n                <SearchBar\n                    onChange={(searchStr: string) => this.props.handleChangeSearch(searchStr)}\n                    size={SearchBarSize.SMALL}\n                />\n                <Sorting\n                    handleChangeFilter={(filterType: FilterType) => this.props.handleChangeFilter(filterType)}\n                    filterType={this.props.filterType}\n                    isAscendant={this.props.isAscendant}\n                />\n            </Container>\n        )\n    }\n}\n", "import React from \"react\";\nimport {SegmentedControl} from \"@root/react-components/src/inputs/SegmentedControl\";\nimport {primaryFontXLarge, secondaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {StepAnimatedEditor} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/StepAnimatedEditor\";\nimport {StepBranchingEditor} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/StepBranchingEditor\";\nimport {StepQuestionEditor} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/StepQuestionEditor\";\nimport {convertStepTypeToString, StepType} from \"@backend/Types/Step\";\nimport {canProceedToNextStep, canProceedToPreviousStep, getStepType, selectStep} from \"Engine/AdapterWeb/Steps\";\nimport i18next from \"i18next\";\nimport {StepPhotoEditor} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/StepPhotoEditor\";\nimport {StepVideoEditor} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/StepVideoEditor\";\nimport {StepInputEditor} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/StepInputEditor\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, styled} from \"@mui/material\";\nimport {SelectedStepContext} from \"@root/Frontend/Studio/Contexts/SelectedStepContext\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {getStepTextID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequence\";\n\nexport const DESC_MAX_LENGTH: number = 140;\n\nexport const ErrorLabel = styled(Box)({\n    font: secondaryFontSmall,\n    color: \"red\",\n    height: \"14px\"\n});\n\nconst Wrapper = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    flex: 1,\n    minHeight: 0,\n    textAlign: \"left\",\n    minWidth: \"500px\",\n});\n\nconst Title = styled(Box)({\n    font: primaryFontXLarge\n});\n\nconst ButtonsContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"12px\",\n    gap: \"4px\"\n});\n\ninterface StepEditorDialogProps  {\n    stepID: bigint;\n    onCreateStep: (type: StepType) => bigint;\n    onClose: () => void;\n    index: number;\n}\n\ninterface StepEditorDialogState {\n    stepType: StepType;\n    stepTitleTextID: bigint;\n    savingEnabled: boolean;\n}\n\nexport class StepEditorDialog extends React.Component {\n    static contextType = SelectedStepContext;\n    context: React.ContextType<typeof SelectedStepContext>;\n    private stepEditor: InterfaceStepEditor | null = null;\n\n    props: StepEditorDialogProps;\n    state: StepEditorDialogState = {\n        stepType: getStepType(this.props.stepID) ?? StepType.ANIMATED,\n        stepTitleTextID: getStepTextID(this.props.stepID),\n        savingEnabled: false\n    };\n\n    componentDidMount() {\n        this.updateStep(this.props.stepID);\n        this.updateText(getStepTextID(this.props.stepID));\n    }\n\n    componentDidUpdate(prevProps: Readonly<StepEditorDialogProps>) {\n        if (this.props.stepID !== prevProps.stepID) {\n            this.updateStep(this.props.stepID);\n            this.updateText(getStepTextID(this.props.stepID));\n        }\n    }\n\n    public updateStep(stepID: bigint): void {\n        // should not receive an update Step event if not the active one!\n        if (stepID !== this.props.stepID){\n            AdapterLog.ERROR(\"Should not call updateStep \" + stepID + \" on StepEditor if not the active one!\")\n            return;\n        }\n\n        // if we have no step ID, reset to a default step animated\n        if (!stepID) {\n            this.setState({stepType: StepType.ANIMATED, stepTitleTextID: BigInt(0)});\n            return;\n        }\n\n        // check if we have the correct step Type\n        const stepType: StepType | null = getStepType(stepID);\n        if (stepType !== null && stepType !== this.state.stepType)\n            this.setState({ stepType });\n\n        // otherwise, forward update to underlying step\n        else\n            this.stepEditor?.update();\n    }\n\n    public updateVideo(videoID: bigint): void {\n        this.stepEditor?.updateVideo?.(videoID);\n    }\n\n    public updateText(textID: bigint) {\n        if (!this.props.stepID)\n            return;\n        // if Text is step title\n        if (getStepTextID(this.props.stepID) === textID) {\n            if (this.state.stepTitleTextID !== textID)\n                this.setState({ stepTitleTextID: textID });\n\n            this.stepEditor?.updateText(textID);\n            return;\n        }\n\n        // Update explanation or answer\n        if (getStepType(this.props.stepID) === StepType.QUESTION ||\n            getStepType(this.props.stepID) === StepType.INPUT)\n            this.stepEditor?.updateText(textID);\n    }\n\n    public static getStepTypes(): string[] {\n        const stepTypesString: string[] = [];\n        for (let i: number = 0; i < Object.keys(StepType).length / 2; i++)\n            stepTypesString.push(convertStepTypeToString(i));\n        return stepTypesString;\n    }\n\n    private async handleCreateStep() {\n        if (this.props.stepID){\n            AdapterLog.ERROR(\"Should never be called if already a valid Step:\" + this.props.stepID)\n            return;\n        }\n\n        if (!this.stepEditor?.validateData())\n            return;\n\n        // create the new Step of the correct type!\n        const newStepID: bigint = this.props.onCreateStep(this.state.stepType);\n        if (!newStepID) {\n            AdapterLog.ERROR(\"Unable to create a Step: \" + this.state.stepType);\n            return;\n        }\n\n        // save all of it before closing!\n        if ((await this.stepEditor?.saveNewStep(newStepID)) && selectStep(newStepID))\n            this.props.onClose();\n    }\n\n    private renderStepTypeEditorView(stepType: StepType): JSX.Element {\n        switch(stepType) {\n            case StepType.ANIMATED: {\n                return <StepAnimatedEditor\n                    ref={(stepEditor: StepAnimatedEditor) => { this.stepEditor = stepEditor }}\n                    stepID={this.props.stepID}\n                    stepIndex={this.props.index}\n                    stepTitleTextID={this.state.stepTitleTextID}\n                    onStepModified={(isValid: boolean) => this.setState({ savingEnabled: isValid })}\n                />\n            }\n            case StepType.BRANCHING: {\n                return <StepBranchingEditor\n                    ref={(stepEditor: StepBranchingEditor) => { this.stepEditor = stepEditor }}\n                    stepID={this.props.stepID}\n                    stepIndex={this.props.index}\n                    stepTitleTextID={this.state.stepTitleTextID}\n                    onStepModified={(isValid: boolean) => this.setState({ savingEnabled: isValid })}\n                />\n            }\n            case StepType.QUESTION: {\n                return <StepQuestionEditor\n                    ref={(stepEditor: StepQuestionEditor) => { this.stepEditor = stepEditor }}\n                    stepID={this.props.stepID}\n                    stepIndex={this.props.index}\n                    stepTitleTextID={this.state.stepTitleTextID}\n                    onStepModified={(isValid: boolean) => this.setState({ savingEnabled: isValid })}\n                />\n            }\n            case StepType.PHOTO: {\n                return <StepPhotoEditor\n                    ref={(stepEditor: StepPhotoEditor) => { this.stepEditor = stepEditor }}\n                    stepID={this.props.stepID}\n                    stepIndex={this.props.index}\n                    stepTitleTextID={this.state.stepTitleTextID}\n                    onStepModified={(isValid: boolean) => this.setState({ savingEnabled: isValid })}\n                />\n            }\n            case StepType.VIDEO: {\n                return <StepVideoEditor\n                    ref={(stepEditor: StepVideoEditor) => { this.stepEditor = stepEditor }}\n                    stepID={this.props.stepID}\n                    stepIndex={this.props.index}\n                    stepTitleTextID={this.state.stepTitleTextID}\n                    onStepModified={(isValid: boolean) => this.setState({ savingEnabled: isValid })}\n                />\n            }\n            case StepType.INPUT: {\n                return <StepInputEditor\n                    ref={(stepEditor: StepInputEditor) => { this.stepEditor = stepEditor }}\n                    stepID={this.props.stepID}\n                    stepIndex={this.props.index}\n                    stepTitleTextID={this.state.stepTitleTextID}\n                    onStepModified={(isValid: boolean) => this.setState({ savingEnabled: isValid })}\n                />\n            }\n            default:\n                return <></>;\n        }\n    }\n\n    render() {\n        return (\n            <Dialog\n                id=\"step-editor-dialog\"\n                size={DialogSize.md}\n                onClose={() => this.props.onClose()}\n                centerEngine={this.props.stepID !== BigInt(0)}\n                innerStyle={{\n                    height: \"max-content\",\n                    overflow: \"auto\",\n                    maxHeight: \"700px\",\n                    width: \"800px\"\n                }}\n            >\n                <Wrapper>\n                    <Title>{i18next.t(\"Step Editor\")}</Title>\n                    <Box id=\"step-editor-segmented-control\">\n                        {/* this.props.stepID !== BigInt(0) to prevent compilation error*/}\n                        <SegmentedControl\n                            disabled={this.props.stepID !== BigInt(0)}\n                            onChange={(index: number) => this.setState({ stepType: index, savingEnabled: false })}\n                            label={i18next.t(\"Type\")}\n                            dark\n                            defaultIndex={this.state.stepType ?? StepType.ANIMATED}\n                            value={this.state.stepType ?? StepType.ANIMATED}\n                            options={StepEditorDialog.getStepTypes()}\n                        />\n                    </Box>\n                    {this.renderStepTypeEditorView(getStepType(this.props.stepID) ?? this.state.stepType)}\n                </Wrapper>\n\n                <ButtonsContainer>\n                    {(this.props.stepID && this.state.stepType !== StepType.ANIMATED) ?\n                        <>\n                            {canProceedToPreviousStep() &&\n                                <Button id=\"previous-step-button\" variant=\"outlined\"\n                                        onClick={() => this.context.previousStep()}\n                                >\n                                    {i18next.t(\"Previous\")}\n                                </Button>\n                            }\n                            {canProceedToNextStep() &&\n                                <Button id=\"next-step-button\" onClick={() => this.context.nextStep()}>\n                                    {i18next.t(\"Next\")}\n                                </Button>\n                            }\n                        </>\n                        :\n                        <>\n                            <Button\n                                id=\"step-editor-close-button\"\n                                variant=\"outlined\"\n                                onClick={() => this.props.onClose()}\n                            >\n                                {i18next.t(\"Close\")}\n                            </Button>\n                            {!this.props.stepID &&\n                                <Button\n                                    id=\"step-editor-confirm\"\n                                    disabled={!this.state.savingEnabled}\n                                    onClick={() => this.handleCreateStep()}\n                                    variant={\"contained\"}\n                                >\n                                    {i18next.t(\"Save\")}\n                                </Button>\n                            }\n                        </>\n                    }\n                </ButtonsContainer>\n            </Dialog>\n        )\n    }\n}\n", "import React from \"react\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport {Switch} from \"@root/react-components/src/inputs/Switch\";\nimport i18next from \"i18next\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\nimport {\n    getStepAnimatedBackAndForth,\n    getStepAnimatedDuration,\n    getStepAnimatedReferenceImageFilePath,\n    getStepAnimatedReferenceVideoID,\n    getStepType,\n    saveFileToCore,\n    updateStepAnimatedVideoID,\n    updateStepBackAndForth,\n    updateStepDuration,\n    updateStepImageFilePath\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {DESC_MAX_LENGTH, ErrorLabel} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/StepEditorDialog\";\nimport {Box, styled} from \"@mui/material\";\nimport {SelectedStepContext} from \"@root/Frontend/Studio/Contexts/SelectedStepContext\";\nimport {SUPPORTED_IMAGE_EXTENSIONS} from \"@utils/utils\";\nimport {VideoLibrary} from \"@root/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoLibrary\";\nimport {SegmentedControl} from \"@root/react-components/src/inputs/SegmentedControl\";\nimport {MediaPreview} from \"@root/Frontend/Studio/Components/MediaPreview\";\nimport {secondaryFontXSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {saveStepInitializeAssetIDs} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequence\";\nimport {InputTextTranslation} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/InputTextTranslation\";\nimport {Sequence, Step, StepAnimated, Text} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {getCurrentWorldID, getOwnerID, getWorldOwnerType} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {createNewText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterCloud\";\n\nexport const InputRow = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    gap: \"10px\"\n});\n\nconst AnimatedContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    flex: 1,\n    minHeight: 0\n});\n\nconst MediaWrapper = styled(Box)({\n    height: \"300px\",\n    marginTop: \"10px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n});\n\nexport interface StepDataAnimated {\n    title: string;\n    duration: number;\n    backAndForth: boolean;\n    imageFilePath: string;\n    videoID: bigint;\n}\n\ninterface AnimatedProps {\n    stepID: bigint;\n    stepIndex: number;\n    stepTitleTextID: bigint;\n    onStepModified: (isValid: boolean) => void;\n}\n\nenum ReferenceMediaIndex {\n    IMAGE,\n    VIDEO\n}\n\ninterface AnimatedState extends StepDataAnimated {\n    errorDescription: string;\n    errorFile: string;\n    referenceMediaIndex: ReferenceMediaIndex;\n}\n\nexport class StepAnimatedEditor extends React.Component implements InterfaceStepEditor {\n    private readonly segmentedControlMedia: string[] = [i18next.t(\"Image\"), i18next.t(\"Video\")];\n    static contextType = SelectedStepContext;\n    private titleInputsRef: React.RefObject<InputTextTranslation> = React.createRef<InputTextTranslation>();\n    private videoLibraryRef: React.RefObject<VideoLibrary> = React.createRef<VideoLibrary>();\n\n    context: React.ContextType<typeof SelectedStepContext>;\n    props : AnimatedProps;\n    state: AnimatedState = StepAnimatedEditor.DEFAULT_STEP_ANIMATED_DATA;\n\n    static readonly DEFAULT_STEP_ANIMATED_DATA: AnimatedState = {\n        errorDescription: \"\",\n        errorFile: \"\",\n        title: \"\",\n        duration: 3,\n        backAndForth: false,\n        imageFilePath: \"\",\n        videoID: BigInt(0),\n        referenceMediaIndex: ReferenceMediaIndex.IMAGE,\n    };\n\n    componentDidMount() {\n        this.update();\n        this.setState({\n            referenceMediaIndex: this.props.stepID && getStepAnimatedReferenceVideoID(this.props.stepID) ?\n                ReferenceMediaIndex.VIDEO : ReferenceMediaIndex.IMAGE\n        });\n    }\n\n    override componentDidUpdate(prevProps: Readonly<AnimatedProps>) {\n        if (this.props.stepID !== prevProps.stepID)\n            this.update();\n    }\n\n    public update() {\n\n        // if no step ID, we are creating a new Step, reset to DEFAULT state!\n        const stepID: bigint = this.props.stepID;\n        if (!stepID)\n            return this.setState(StepAnimatedEditor.DEFAULT_STEP_ANIMATED_DATA);\n\n        // check if we now have a video\n        const videoID: bigint = getStepAnimatedReferenceVideoID(stepID);\n        if (videoID !== this.state.videoID)\n            this.setState({ videoID });\n\n        // check if we have an image\n        const imageFilePath: string = getStepAnimatedReferenceImageFilePath(stepID);\n        if (imageFilePath !== this.state.imageFilePath)\n            this.setState({ imageFilePath });\n\n        // check if we now have a duration\n        const duration: number = getStepAnimatedDuration(stepID);\n        if (duration !== this.state.duration)\n            this.setState({ duration });\n\n        // check if we have a back and forth\n        const backAndForth: boolean = getStepAnimatedBackAndForth(stepID);\n        if (backAndForth !== this.state.backAndForth)\n            this.setState({ backAndForth });\n    }\n\n    private getStepAnimated(stepID: bigint): StepAnimated | null {\n        if (!stepID)\n            return null;\n\n        using sequence: Sequence | null = App.getInstance().getSequence(getCurrentSequenceID());\n        const step: Step | null = sequence?.getStepByID(stepID) ?? null;\n        return step && getStepType(stepID) === StepType.ANIMATED ? step as StepAnimated : null;\n    }\n\n    public updateText(textID: bigint) {\n        using stepAnimated: StepAnimated | null = this.getStepAnimated(this.props.stepID);\n        if (!textID || !stepAnimated)\n            return;\n\n        using text: Text | null = stepAnimated.getText();\n        if (!text || textID !== text.getID())\n            return;\n\n        const title: string = text.getOriginalText();\n        if (title !== this.state.title)\n            this.setState({title});\n        this.titleInputsRef.current?.updateText(textID);\n    }\n\n\n    private setTitle(title: string): void {\n        if (this.state.title !== title)\n            this.setState({ title }, () => this.props.onStepModified(this.validateData()));\n    }\n\n    private setDuration(durationStr: string): void {\n        const duration: number = durationStr.length ? parseInt(durationStr) : 0;\n        if (this.state.duration === duration)\n            return;\n\n        this.setState({ duration }, () => {\n            if (this.props.stepID && duration !== 0)\n                updateStepDuration(this.props.stepID, duration);\n            this.props.onStepModified(this.validateData());\n        });\n    }\n\n    private setBackAndForth(backAndForth: boolean): void {\n        if (this.state.backAndForth === backAndForth)\n            return;\n\n        this.setState({ backAndForth }, () => {\n            if (this.props.stepID)\n                updateStepBackAndForth(this.props.stepID, backAndForth);\n            this.props.onStepModified(this.validateData());\n        });\n    }\n\n    private setImageFilePath(imageFilePath: string): void {\n        if (this.state.imageFilePath === imageFilePath)\n            return;\n\n        this.setState({ imageFilePath }, () => {\n            if (this.props.stepID)\n                updateStepImageFilePath(this.props.stepID, imageFilePath)\n            this.props.onStepModified(this.validateData());\n        });\n    }\n\n    private setVideoReference = (videoID: bigint) => {\n        this.setState({errorFile: \"\"});\n\n        if (this.state.imageFilePath)\n            this.setImageFilePath(\"\");\n\n        if (videoID === this.state.videoID) {\n            this.setState({ videoID: BigInt(0) },\n                () => updateStepAnimatedVideoID(this.props.stepID, this.state.videoID));\n            return;\n        }\n\n        this.setState({ videoID }, () => updateStepAnimatedVideoID(this.props.stepID, this.state.videoID));\n    }\n\n    private onVideoLibraryError = (errorFile: string) => {\n        this.setState({errorFile});\n    }\n\n    public updateVideo(videoID: bigint){\n        if (!videoID)\n            return;\n\n        // update sent to video library component (will handle itself if the library needs to be updated)\n        this.videoLibraryRef.current?.updateVideo(videoID);\n    }\n\n    public validateData(): boolean {\n        let errorDescription: string = \"\";\n\n        if (!this.state.title.trim())\n            errorDescription = i18next.t(\"The description is required\");\n        else if (this.state.title.length > DESC_MAX_LENGTH)\n            errorDescription =\n                `${i18next.t(\"The description is too long\")}: ${this.state.title.length}/${DESC_MAX_LENGTH}`;\n\n        this.setState({ errorDescription });\n\n        // If there's no error, just return true.\n        return !errorDescription.length;\n    }\n\n    public async saveNewStep(stepID: bigint): Promise<boolean> {\n        if (!this.validateData())\n            return false;\n\n        using stepAnimated: StepAnimated | null = this.getStepAnimated(stepID);\n        if (!stepAnimated)\n            return false;\n\n        const worldID: bigint = getCurrentWorldID();\n        const ownerID: bigint = getOwnerID(worldID);\n        const ownerType: OwnerType = getWorldOwnerType(worldID);\n\n        using text: Text | null = await createNewText(ownerID, ownerType);\n        if (!text)\n            return false;\n\n        text.saveAudioEnabled(true);\n        text.saveOriginalText(this.state.title);\n        stepAnimated.saveText(text);\n\n        updateStepDuration(stepID, this.state.duration);\n        updateStepBackAndForth(stepID,this.state.backAndForth);\n        updateStepImageFilePath(stepID, this.state.imageFilePath);\n        updateStepAnimatedVideoID(stepID, this.state.videoID);\n        saveStepInitializeAssetIDs(stepID);\n        return true;\n    }\n\n    private onConfirmTitle() {\n        using stepAnimated: StepAnimated | null = this.getStepAnimated(this.props.stepID);\n        using text: Text | null = stepAnimated?.getText() ?? null;\n        if (text && !this.state.errorDescription)\n            text.saveOriginalText(this.state.title);\n    }\n\n    private async handleImageFileUpload(file: File | null) {\n        if (!file) {\n            this.setImageFilePath(\"\");\n            return;\n        }\n\n        const fileExtension: string = file.name.split(\".\").pop() ?? \"\";\n        if (!SUPPORTED_IMAGE_EXTENSIONS.includes(fileExtension.toLowerCase())) {\n            this.setState({errorFile: i18next.t(\"Unsupported file format\") + \" \\\"\" + fileExtension + \"\\\"\"});\n            return;\n        }\n\n        this.setVideoReference(BigInt(0));\n        const imageFilePath: string = await saveFileToCore(file);\n        this.setImageFilePath(imageFilePath);\n    }\n\n    render() {\n        return(\n            <AnimatedContainer>\n                <InputTextTranslation\n                    id={\"step-animated-textArea\"}\n                    ref={this.titleInputsRef}\n                    label={i18next.t(\"Description\")}\n                    translationLanguage={this.context.translationLanguage}\n                    sourceLanguage={this.context.defaultLanguage}\n                    readonly={!this.context.canEditStep}\n                    textID={this.props.stepTitleTextID}\n                    originalText={this.state.title}\n                    rows={3}\n                    required\n                    placeholder={i18next.t(\"How we achieve this step\")}\n                    errorMessage={this.state.errorDescription}\n                    onChangeValue={(text: string) => this.setTitle(text)}\n                    onConfirmValue={() => this.onConfirmTitle()}\n                    counter={DESC_MAX_LENGTH}\n                />\n                <Box style={{ display: \"flex\",  gap: \"10px\", paddingBottom: \"10px\" }}>\n                    <InputRow>\n                        <Box style={{ paddingTop: \"7px\" }}>\n                            <InputText\n                                id=\"duration-input\"\n                                onChange={(duration: string) => this.setDuration(duration)}\n                                onBlur={() => {\n                                    if (this.state.duration === 0)\n                                        this.setDuration(\"3\");\n                                }}\n                                dark\n                                label={`${i18next.t(\"Duration\")} (${i18next.t(\"Seconds\")})`}\n                                placeholder={\"3\"}\n                                value={this.state.duration ? this.state.duration.toString() : \"\"}\n                            />\n                        </Box>\n                        <Box style={{ paddingTop: \"3px\" }}>\n                            <Box sx={{ display: \"flex\", alignItems: \"center\", flex: 1 }}>\n                                <Label dark>{i18next.t(\"Alternate animation\")}</Label>\n                                <Tooltip\n                                    placement=\"right-start\"\n                                    title={i18next.t(\"Play the step animation loop back and forth\")}>\n                                    <InfoIcon style={{ marginTop: \"6px\", marginLeft: \"6px\", cursor: \"pointer\" }}>\n                                        <Info />\n                                    </InfoIcon>\n                                </Tooltip>\n                            </Box>\n                            <Box style={{ flex: 1, width: \"fit-content\" }}>\n                                <Switch\n                                    initialValue={this.state.backAndForth}\n                                    onChange={(backAndForth: boolean) => this.setBackAndForth(backAndForth)}\n                                />\n                            </Box>\n                        </Box>\n                    </InputRow>\n                </Box>\n                <Box style={{ marginTop: \"10px\" }}>\n                    <Box style={{ font: secondaryFontXSmall, paddingBottom: \"4px\" }}>\n                        {`${i18next.t(\"Add reference media\")} (${i18next.t(\"Optional\")})`}\n                    </Box>\n                    <SegmentedControl\n                        optionsID=\"reference-\"\n                        value={Number(this.state.referenceMediaIndex)}\n                        options={this.segmentedControlMedia}\n                        onChange={(referenceMediaIndex: number) => this.setState({referenceMediaIndex, errorFile: \"\"})}\n                        dark\n                    />\n                </Box>\n                <MediaWrapper>\n                    {this.state.referenceMediaIndex === ReferenceMediaIndex.VIDEO ?\n                        <VideoLibrary\n                            ref={this.videoLibraryRef}\n                            title=\"\"\n                            onSelectedVideo={this.setVideoReference}\n                            onError={this.onVideoLibraryError}\n                            selectedVideo={this.state.videoID}\n                            disabled={false}\n                        />\n                    :\n                        <MediaPreview\n                            filePath={this.state.imageFilePath}\n                            title={this.state.imageFilePath}\n                            onFileChange={(file: File | null) => this.handleImageFileUpload(file)}\n                            allowDelete\n                            allowEdit\n                        />\n                    }\n                </MediaWrapper>\n                <ErrorLabel>{this.state.errorFile}</ErrorLabel>\n            </AnimatedContainer>\n        )\n    }\n}\n", "import React, {ReactElement} from \"react\";\nimport {\n    addStep,\n    canProceedToNextStep,\n    canProceedToPreviousStep,\n    deleteStep, getStepType, isPlaying,\n    nextStep, playStep,\n    previousStep,\n    selectStep, toEnd\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {canCurrentPeerEditSequence} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {DEFAULT_LANGUAGE} from \"@backend/Types/Language\";\nimport {Language} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {getLanguage} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\n\ninterface SelectedStep {\n    selectedStepID: bigint;\n    canEditStep: boolean;\n    defaultLanguage: Language | undefined;\n    translationLanguage: Language;\n    selectStep: (stepID: bigint) => void;\n    updateCanEditStep: () => void;\n    nextStep: () => void;\n    previousStep: () => void;\n    setTranslationLanguage: (translationLanguage: Language) => void;\n    setDefaultLanguage: (defaultLanguage: Language | undefined) => void;\n    addStep: (stepIndex: number, stepType: StepType) => bigint;\n    deleteStep: (stepID: bigint) => void;\n}\n\nexport const SelectedStepContext: React.Context<SelectedStep> = React.createContext<SelectedStep>({\n    selectedStepID: BigInt(0),\n    canEditStep: false,\n    defaultLanguage: undefined,\n    translationLanguage: DEFAULT_LANGUAGE,\n    selectStep: (stepID: bigint) => {},\n    updateCanEditStep: () => {},\n    nextStep: () => {},\n    previousStep: () => {},\n    setTranslationLanguage: (translationLanguage: Language) => {},\n    setDefaultLanguage: (defaultLanguage: Language | undefined) => {},\n    addStep: (stepIndex: number, stepType: StepType) => BigInt(0),\n    deleteStep: (stepID: bigint) => {}\n});\n\nexport class SelectedStepProvider extends React.Component {\n    props: { children: ReactElement };\n    state: SelectedStep = {\n        selectedStepID: BigInt(0),\n        canEditStep: false,\n        defaultLanguage: undefined,\n        translationLanguage: DEFAULT_LANGUAGE,\n        selectStep: (stepID: bigint) => this.selectStep(stepID),\n        updateCanEditStep: () => this.updateCanEditStep(),\n        nextStep: () => this.nextStep(),\n        previousStep: () => this.previousStep(),\n        setTranslationLanguage: (language: Language) => this.setTranslationLanguage(language),\n        setDefaultLanguage: (language: Language | undefined) => this.setDefaultLanguage(language),\n        addStep: (stepIndex: number, stepType: StepType) => this.addStep(stepIndex, stepType),\n        deleteStep: (stepID: bigint) => this.deleteStep(stepID),\n    }\n\n    public selectStep(stepID: bigint) {\n        if(stepID === this.state.selectedStepID)\n            return;\n\n        // attempt to switch stepID\n        const newStepID: bigint = selectStep(stepID);\n        if (newStepID !== this.state.selectedStepID)\n            this.setState({ selectedStepID: newStepID });\n    }\n\n    public updateCanEditStep() {\n        // if a sequence has no sequenceChild, it's the draft sequence (and can be edited)\n        this.setState({ canEditStep: canCurrentPeerEditSequence(getCurrentSequenceID()) });\n    }\n\n    public setTranslationLanguage(translationLanguage: Language) {\n        if(translationLanguage !== this.state.translationLanguage)\n            this.setState({translationLanguage});\n    }\n\n    public setDefaultLanguage(defaultLanguage: Language | undefined) {\n        if(defaultLanguage !== this.state.defaultLanguage)\n            this.setState({defaultLanguage, translationLanguage: defaultLanguage ?? getLanguage()});\n    }\n\n    public nextStep() {\n        if(canProceedToNextStep()) {\n            const isStepPlaying: boolean = isPlaying();\n            const selectedStepID: bigint = nextStep();\n\n            if (getStepType(selectedStepID) === StepType.ANIMATED && isStepPlaying)\n                playStep();\n\n            this.setState({ selectedStepID });\n        }\n    }\n\n    public previousStep() {\n        if(canProceedToPreviousStep()) {\n            const isStepPlaying: boolean = isPlaying();\n            const selectedStepID: bigint = previousStep();\n\n            if (getStepType(selectedStepID) === StepType.ANIMATED && isStepPlaying) {\n                toEnd();\n                playStep();\n            }\n\n            this.setState({ selectedStepID });\n        }\n    }\n\n    public addStep(stepIndex: number, stepType: StepType): bigint {\n        const selectedStepID: bigint = addStep(stepIndex, stepType);\n        this.setState({ selectedStepID });\n        return selectedStepID;\n    }\n\n    public deleteStep(stepID: bigint) {\n        this.setState({ selectedStepID: deleteStep(stepID) });\n    }\n\n    render() {\n        return (\n            <SelectedStepContext.Provider value={this.state}>\n                {this.props.children}\n            </SelectedStepContext.Provider>\n        )\n    }\n}\n", "import * as React from \"react\";\nimport {CSSProperties} from \"react\";\nimport {Box, Input, Popover, styled} from \"@mui/material\";\nimport {dark, lighterDark, lightWhite, white} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {\n    addVideoTag, getVideoFileSize, getVideoTags,\n    getVideoThumbnailLocalPath, isVideoMetadataValid, queryLibraryVideos,\n    removeVideoTag, updateVideoFilePath, updateVideoTitle\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {FixedSizeGrid} from \"react-window\";\nimport {\n    ThumbnailWrapper,\n    VideoContainer,\n    VideoItem\n} from \"@root/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoItem\";\nimport {primaryFontSmall, secondaryFontXSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {CreateWorld} from \"@root/react-components/src/icons/CreateWorld\";\nimport {DeleteVideoWarning} from \"@root/Frontend/Studio/Views/AssetsDialog/VideoAsset/DeleteVideoWarning\";\nimport {VideoFilters} from \"@root/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoFilters\";\nimport {TabsCategories} from \"@root/Frontend/Studio/Components/TabsCategories\";\nimport {TagsPopup} from \"@root/Frontend/Studio/Components/TagsPopup\";\nimport {PLACEHOLDER_IMAGE} from \"@utils/utils\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport AutoSizer from \"react-virtualized-auto-sizer\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {isEqual} from \"lodash\";\nimport {getPeerGroupRole} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport {Role} from \"@backend/Types/Role\";\nimport {\n    getVideoFileDuration,\n    getVideoResolution,\n    isVideoPixelFormatSupported\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {createNewVideo} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterCloud\";\nimport {SUPPORTED_VIDEO_EXTENSIONS} from \"@utils/utils\";\nimport {App} from \"@root/Frontend/Studio/App\";\n\nconst VideoLibraryContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    flex: 1,\n    minHeight: 0,\n    width: \"100%\",\n});\n\nconst HeaderContainer = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"flex-end\",\n    padding: \"4px\",\n    gap: \"5px\"\n});\n\nconst Title = styled(Box)({\n    font: secondaryFontXSmall,\n    width: \"100%\"\n});\n\nconst GridContainer = styled(Box)({\n    flex: \"1 1 0%\",\n    height: \"100%\",\n    minHeight: 0,\n    minWidth: 0,\n    backgroundColor: dark,\n    borderRadius: \"0px 12px 12px 0px\",\n    overflow: \"hidden\",\n});\n\nconst CustomSizeGrid = styled(FixedSizeGrid)({\n    overflowX: \"hidden\",\n    scrollbarWidth: \"thin\",\n    scrollbarColor: `${lighterDark} ${dark}`, //supported by almost all browsers\n\n    \"&::-webkit-scrollbar\": {\n        height: \"10px\"\n    },\n    \"&::-webkit-scrollbar-thumb\": {\n        backgroundColor: lighterDark,\n        borderRadius: \"6px\",\n        border: `2px solid ${dark}`\n    }\n});\n\nconst EmptyListMessage = styled(Box)({\n    color: lightWhite,\n    margin: \"auto\",\n    width: \"fit-content\",\n    padding: \"32px 0 0 15px\"\n});\n\nexport const VideoItemWrapper = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n});\n\ninterface VideoLibraryProps {\n    onSelectedVideo: (videoID: bigint) => void;\n    onError: (error: string) => void;\n    selectedVideo: bigint;\n    disabled: boolean;\n    title?: string;\n}\n\ninterface VideoLibraryState {\n    toBeDeletedVideoID: bigint;\n    displayDeletedVideo: boolean;\n    popUpPosition: {left: number, top: number};\n    tagPopupVideoID: bigint;\n    filteredVideoIDs: bigint[];\n    selectedTag: string;\n    selectedOwnerID: bigint;\n}\n\nexport const ALL_TAG = \"All\"\nexport enum DefaultVideoTags {\n    ATTEMPT = \"Attempt\",\n    CAPTURE = \"Capture\",\n    CLIP = \"Clip\",\n    UPLOAD = \"Upload\",\n}\n\nexport class VideoLibrary extends React.PureComponent {\n\n    private thumbnailsCache: Map<bigint, string> = new Map();\n    private videoItemMapRef: Map<bigint, React.RefObject<VideoItem>> = new Map();\n    private readonly inputVideoRef: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n    private readonly videoFiltersRef: React.RefObject<VideoFilters> = React.createRef<VideoFilters>();\n    private readonly tabsCategoriesRef: React.RefObject<TabsCategories> = React.createRef<TabsCategories>();\n\n    private readonly NB_VIDEO_PER_ROW: number = 5;\n\n    props: VideoLibraryProps;\n    state: VideoLibraryState = {\n        toBeDeletedVideoID: BigInt(0),\n        displayDeletedVideo: true,\n        popUpPosition: {left: 0, top: 0},\n        tagPopupVideoID: BigInt(0),\n        filteredVideoIDs: [],\n        selectedTag: ALL_TAG,\n        selectedOwnerID: BigInt(0),\n    }\n\n     componentWillUnmount() {\n        for (const [videoID, blob] of this.thumbnailsCache)\n            URL.revokeObjectURL(blob);\n        this.thumbnailsCache.clear();\n     }\n\n    public updateVideo(videoID: bigint) {\n\n        if (this.videoItemMapRef.has(videoID))\n            this.videoItemMapRef.get(videoID)?.current?.updateItem();\n\n        this.videoFiltersRef.current?.updateVideoIDs();\n        this.gatherAllTags(this.getOwnerVideoIDs(this.state.selectedOwnerID));\n    }\n\n    public updateGroup(groupID: bigint) {\n        this.videoFiltersRef.current?.updateGroup(groupID);\n        if (this.state.selectedOwnerID !== groupID)\n            return;\n\n        const allVideoIDs: bigint[] = this.getOwnerVideoIDs(groupID);\n        queryLibraryVideos(allVideoIDs.filter((videoID: bigint) => !isVideoMetadataValid(videoID)));\n    }\n\n    public updatePeer(peerID: bigint) {\n        this.videoFiltersRef.current?.updatePeer(peerID);\n        if (this.state.selectedOwnerID !== peerID)\n            return;\n\n        const allVideoIDs: bigint[] = this.getOwnerVideoIDs(peerID);\n        queryLibraryVideos(allVideoIDs.filter((videoID: bigint) => !isVideoMetadataValid(videoID)));\n    }\n\n    private getThumbnail(videoID: bigint): string {\n        if (this.thumbnailsCache.has(videoID))\n            return this.thumbnailsCache.get(videoID) ?? PLACEHOLDER_IMAGE;\n\n        const thumbnailPath: string = getVideoThumbnailLocalPath(videoID);\n        let thumbnail: string = AdapterUtils.createBlobUrlFromFilePath(thumbnailPath);\n\n        if (thumbnail)\n            this.thumbnailsCache.set(videoID, thumbnail);\n        else\n            thumbnail = PLACEHOLDER_IMAGE;\n\n        return thumbnail;\n    }\n\n    private gatherAllTags(videos: bigint[]): void {\n        const allTags: Set<string> = new Set([ALL_TAG]);\n        for (const videoID of videos) {\n            if (isVideoMetadataValid(videoID) && Boolean(getVideoFileSize(videoID))) {\n                for (const tag of getVideoTags(videoID))\n                    allTags.add(tag);\n            }\n        }\n\n        if (!allTags.has(this.state.selectedTag))\n            this.setState({selectedTag: ALL_TAG});\n\n        this.tabsCategoriesRef.current?.setCategories(allTags);\n    }\n\n    private getOwnerVideoIDs(selectedOwnerID: bigint): bigint[] {\n        const currentPeerID: bigint = getCurrentPeerID();\n        return selectedOwnerID === currentPeerID ?\n            App.getInstance().getEngine().getPeerVideos(currentPeerID) :\n            App.getInstance().getEngine().getGroupVideos(selectedOwnerID);\n    }\n\n    private onVideoDeleted() {\n        if (this.props.selectedVideo === this.state.toBeDeletedVideoID)\n            this.props.onSelectedVideo(BigInt(0));\n\n        if (!this.state.displayDeletedVideo && this.state.filteredVideoIDs?.length) {\n            const filteredVideoIDs: bigint[] = this.state.filteredVideoIDs?.filter((videoID: bigint) =>\n                videoID !== this.state.toBeDeletedVideoID);\n            this.setState({filteredVideoIDs});\n        }\n\n        this.setState({ toBeDeletedVideoID: BigInt(0) });\n    }\n\n    private addVideoTag(tag: string) {\n        addVideoTag(this.state.tagPopupVideoID, tag);\n\n        if (this.tabsCategoriesRef.current?.getCategories().has(tag))\n            return;\n\n        const currentCategories: Set<string> = this.tabsCategoriesRef.current?.getCategories() ?? new Set();\n        this.tabsCategoriesRef.current?.setCategories(new Set([...currentCategories, tag]));\n    }\n\n    private async removeVideoTag(removeTag: string): Promise<void> {\n        removeVideoTag(this.state.tagPopupVideoID, removeTag);\n\n        const allVideoIDs: bigint[] = this.getOwnerVideoIDs(this.state.selectedOwnerID);\n        if (allVideoIDs.some((videoID: bigint) => getVideoTags(videoID).includes(removeTag)))\n            return;\n\n        const currentCategories: Set<string> = new Set(this.tabsCategoriesRef.current?.getCategories());\n        currentCategories.delete(removeTag);\n        this.tabsCategoriesRef.current?.setCategories(currentCategories);\n    }\n\n    private onFilteredVideosChange(filteredVideoIDs: bigint[]) {\n        if (!isEqual(this.state.filteredVideoIDs, filteredVideoIDs))\n            this.setState({filteredVideoIDs});\n    }\n\n    private onSelectedOwnerChange(selectedOwnerID: bigint) {\n        if (this.state.selectedOwnerID === selectedOwnerID)\n            return;\n\n        this.setState({selectedOwnerID}, () =>  {\n            const allVideoIDs: bigint[] = this.getOwnerVideoIDs(selectedOwnerID);\n            queryLibraryVideos(allVideoIDs.filter((videoID: bigint) => !isVideoMetadataValid(videoID)));\n            this.gatherAllTags(allVideoIDs);\n        });\n    }\n\n    // validates if the given file is a video\n    private isInputFileAVideo(file: File): boolean {\n        const fileNameElements: string[] = file.name.split('.');\n        if (fileNameElements.length <= 1)\n            return false;\n        const fileExtension: string = fileNameElements.at(-1) ?? \"\";\n        return SUPPORTED_VIDEO_EXTENSIONS.includes(fileExtension.toLowerCase());\n    }\n\n    private getVideoMetadataError(videoFilePath: string, videoName: string): string {\n        const videoDuration: number = getVideoFileDuration(videoFilePath);\n        const [videoWidth, videoHeight] = getVideoResolution(videoFilePath);\n\n        if (videoDuration === 0 || videoWidth === 0 || videoHeight === 0)\n            return `${i18next.t(\"Failed to load video\")} ${videoName}.`;\n\n        if (videoDuration > 20)\n            return `${i18next.t(\"Could not load video\")} ${videoName} ` +\n                `${i18next.t(\"because it is over 20 seconds\")}.`;\n\n        if (Math.max(videoWidth, videoHeight) > 1920 || Math.min(videoWidth, videoHeight) > 1080)\n            return `${i18next.t(\"Could not load video\")} ${videoName} ` +\n                `${i18next.t(\"because it is over the max supported resolution of 1920 x 1080\")}.`;\n\n        if (!isVideoPixelFormatSupported(videoFilePath))\n            return `${i18next.t(\"Could not load video\")} ${videoName} ` +\n                `${i18next.t(\"because the pixel format is not supported\")}.`;\n\n        return \"\";\n    }\n\n    private async onChangeVideoFile(video: File | null) {\n        if (!video)\n            return;\n\n        if (!this.isInputFileAVideo(video)) {\n            this.props.onError(`${i18next.t(\"Could not load video\")} ${video.name} ` +\n                               `${i18next.t(\"because only mp4 files are supported\")}.`);\n            return;\n        }\n\n        // Save video to core and validate its metadata\n        const videoFilePath: string = await AdapterUtils.saveFileToCore(video);\n        const videoMetadataError: string = this.getVideoMetadataError(videoFilePath, video.name);\n        if (videoMetadataError) {\n            this.props.onError(videoMetadataError);\n            return;\n        }\n\n        // TODO(Marco): Check the selected owner plan\n        const videoID: bigint = await createNewVideo(this.state.selectedOwnerID, this.getSelectedOwnerType());\n        if (!videoID) {\n            this.props.onError(i18next.t(\"Could not load video\"));\n            return;\n        }\n        addVideoTag(videoID, DefaultVideoTags.UPLOAD);\n        updateVideoTitle(videoID, video.name.slice(0, video.name.lastIndexOf(\".\")));\n        updateVideoFilePath(videoID, videoFilePath);\n        this.props.onSelectedVideo(videoID);\n    }\n\n    private getSelectedOwnerType(): OwnerType {\n        return this.state.selectedOwnerID === getCurrentPeerID() ? OwnerType.PEER : OwnerType.GROUP;\n    }\n\n    private shouldDisplayAddVideoButton(): boolean {\n        if (this.getSelectedOwnerType() === OwnerType.GROUP &&\n            getPeerGroupRole(getCurrentPeerID(), this.state.selectedOwnerID) !== Role.EDITOR)\n            return false;\n\n        return !this.props.disabled && (this.state.selectedTag === ALL_TAG ||\n                this.state.selectedTag === DefaultVideoTags.UPLOAD);\n    }\n\n    private renderVideosGrid(columnIndex: number, rowIndex: number, style: CSSProperties): JSX.Element {\n        const displayedVideoIDs: bigint[] = this.state.filteredVideoIDs;\n        const index: number = rowIndex * this.NB_VIDEO_PER_ROW + columnIndex;\n        const importButtonDisplayed: boolean = this.shouldDisplayAddVideoButton();\n\n        const outOfIndexThreshold: number = importButtonDisplayed ? displayedVideoIDs.length + 1\n                                                                  : displayedVideoIDs.length;\n\n        // if the index is greater than 0, as index 0 is reserved for displaying the message and import button\n        if (index >= outOfIndexThreshold && index > 0)\n            return <></>;\n\n        // import button only displayed for ALL and UPLOADED_VIDEO tabs\n        if (index === 0 && importButtonDisplayed)\n            return (\n                <>\n                    <VideoItemWrapper\n                        key=\"import-video-button\"\n                        id={\"import-video-button\"}\n                        style={{...style}}\n                        onClick={() => this.inputVideoRef.current?.click()}\n                    >\n                        <VideoContainer is_selected={0}>\n                            <ThumbnailWrapper style={{height: \"60px\", width: \"60px\", paddingTop: \"8px\"}}>\n                                <CreateWorld fill={white}/>\n                            </ThumbnailWrapper>\n                            <Box sx={{color: lightWhite, textAlign: \"center\", font: primaryFontSmall}}>\n                                {i18next.t(\"Import a video\")}\n                            </Box>\n                            <Input\n                                id=\"input-video-file\"\n                                type=\"file\"\n                                inputRef={this.inputVideoRef}\n                                sx={{display: \"none\"}}\n                                onChange={async (e: React.ChangeEvent<HTMLInputElement>) =>\n                                    await this.onChangeVideoFile(e.target.files?.[0] ?? null)}\n                            />\n                        </VideoContainer>\n                    </VideoItemWrapper>\n                    {!displayedVideoIDs.length &&\n                        <EmptyListMessage>\n                            {i18next.t(\"No videos, use the + button to import a new video\")}\n                        </EmptyListMessage>\n                    }\n                </>\n            );\n\n        if (!displayedVideoIDs.length)\n            return (\n                <EmptyListMessage>\n                    {i18next.t(\"No videos, use the + button to import a new video\")}\n                </EmptyListMessage>\n            );\n\n        const videoID: bigint = displayedVideoIDs[importButtonDisplayed ? index - 1 : index] ?? BigInt(0);\n        const videoItemRef: React.RefObject<VideoItem> = React.createRef();\n        this.videoItemMapRef.set(videoID, videoItemRef);\n\n        return (\n            <VideoItem\n                key={videoID.toString()}\n                ref={videoItemRef}\n                isSelected={this.props.selectedVideo === videoID}\n                videoID={videoID}\n                getClipThumbnail={(id: bigint) => this.getThumbnail(id)}\n                onClick={(videoID: bigint) => this.props.onSelectedVideo(videoID)}\n                onDelete={(toBeDeletedVideoID: bigint) => this.setState({ toBeDeletedVideoID })}\n                onRename={() => this.videoFiltersRef.current?.updateVideoIDs()}\n                openTagPopup={(videoID, popUpPosition) => this.setState({tagPopupVideoID: videoID, popUpPosition})}\n                style={style}\n                disabled={this.props.disabled}\n            />\n        )\n    }\n\n    render() {\n        this.videoItemMapRef.clear();\n\n        // removing ALL tag from tags choices (ALL can not be added to a video)\n        const defaultTags: Set<string> = new Set(Object.values(DefaultVideoTags));\n        defaultTags.delete(ALL_TAG);\n\n        const allTags: Set<string> = new Set(this.tabsCategoriesRef.current?.getCategories());\n        allTags.delete(ALL_TAG);\n\n        return (\n            <VideoLibraryContainer id=\"video-library\">\n                <HeaderContainer>\n                    <Title>{i18next.t(this.props.title ? this.props.title : \"Video Library\")}</Title>\n                    <VideoFilters\n                        ref={this.videoFiltersRef}\n                        selectedTag={this.state.selectedTag}\n                        displayDeletedVideo={this.state.displayDeletedVideo}\n                        selectedOwnerID={this.state.selectedOwnerID}\n                        onSelectedOwnerChange={(ownerID: bigint) => this.onSelectedOwnerChange(ownerID)}\n                        onFilteredVideosChange={(videoIDs: bigint[]) => this.onFilteredVideosChange(videoIDs)}\n                        onChangeDisplayDeletedVideo={\n                            (displayDeletedVideo: boolean) => this.setState({displayDeletedVideo})\n                        }\n                    />\n                </HeaderContainer>\n                { this.state.toBeDeletedVideoID ?\n                   <DeleteVideoWarning\n                       toBeDeletedVideoID={this.state.toBeDeletedVideoID}\n                       thumbnail={this.thumbnailsCache.get(this.state.toBeDeletedVideoID) ?? PLACEHOLDER_IMAGE}\n                       onDeletedVideo={() => this.onVideoDeleted()}\n                       onCancel={() => this.setState({toBeDeletedVideoID: BigInt(0)})}\n                   />\n                :\n                    <Box style={{display: \"flex\", flex: 1, minHeight: 0, minWidth: 0}}>\n                        <TabsCategories\n                            ref={this.tabsCategoriesRef}\n                            selectedCategory={this.state.selectedTag}\n                            defaultCategories={[ALL_TAG, ...Object.values(DefaultVideoTags)]}\n                            changeSelectedCategory={(selectedTag: string) => this.setState({selectedTag})}\n                        />\n                        <GridContainer>\n                            <AutoSizer style={{width: \"100%\", height: \"100%\"}}>\n                                {({height, width}: { height: number, width: number }) =>\n                                    <CustomSizeGrid\n                                        height={height}\n                                        width={width}\n                                        columnCount={this.NB_VIDEO_PER_ROW}\n                                        rowCount={Math.ceil(((this.state.filteredVideoIDs?.length ?? 0) + 1) /\n                                            this.NB_VIDEO_PER_ROW)}\n                                        rowHeight={120}\n                                        columnWidth={width / this.NB_VIDEO_PER_ROW - 2}\n                                    >\n                                        {({columnIndex, rowIndex, style}) =>\n                                            this.renderVideosGrid(columnIndex, rowIndex, style)}\n                                    </CustomSizeGrid>\n                                }\n                            </AutoSizer>\n                        </GridContainer>\n                    </Box>\n                }\n                <Popover\n                    open={Boolean(this.state.popUpPosition.left)}\n                    onClose={() => this.setState({popUpPosition: {left: 0, top: 0}, tagPopupVideoID: BigInt(0)}, () =>\n                            this.videoFiltersRef.current?.updateVideoIDs()\n                    )}\n                    anchorPosition={this.state.popUpPosition}\n                    anchorReference={\"anchorPosition\"}\n                >\n                    <TagsPopup\n                        allTags={allTags}\n                        selectedTags={getVideoTags(this.state.tagPopupVideoID)}\n                        defaultTags={[...defaultTags]}\n                        addNewTag={(tag: string) => this.addVideoTag(tag)}\n                        removeTag={(tag: string) => this.removeVideoTag(tag)}\n                    />\n                </Popover>\n            </VideoLibraryContainer>\n        );\n    }\n}\n", "import React from \"react\";\nimport {Box, Popover, styled} from \"@mui/material\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {primaryFontSmall, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {dark, green, lighterDark, lightWhite,\n    primary,red, white, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {\n    getVideoDuration, getVideoFileSize, getVideoThumbnailUrlS3, getVideoTitle, getVideoUrlS3,\n    isVideoMetadataValid, isVideoThumbnailLoaded, loadVideoThumbnail, updateVideoTitle\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport { Tooltip } from \"@root/react-components/src/misc/Tooltip\";\nimport i18next from \"i18next\";\nimport {VideoItemWrapper} from \"@root/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoLibrary\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {Check} from \"@root/react-components/src/icons/Check\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {formatDate} from \"@utils/utils\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {DataSourceStorage} from \"@root/Frontend/DataSources/DataSourceStorage\";\nimport {ObjectTypeS3} from \"@backend/Types/ObjectTypeS3\";\nimport {ThreeDotsV} from \"@root/react-components/src/icons/ThreeDotsV\";\nimport {Tag} from \"@root/react-components/src/icons/Tag\";\n\nconst THUMBNAIL_HEIGHT: number = 75;\nconst THUMBNAIL_WIDTH: number = 75;\nexport const VideoContainer = styled(Box)((props: {\n    is_selected: number,\n    is_disable?: number,\n    is_options_opened?: number\n}) => ({\n    height: `calc(${THUMBNAIL_HEIGHT}px + 25px)`,\n    width: `calc(${THUMBNAIL_WIDTH}px + 25px)`,\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"3px\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    borderRadius: \"12px\",\n    padding: \"8px\",\n    \":hover\": {\n        backgroundColor: props.is_disable ? \"transparent\" : lighterDark,\n        cursor: props.is_disable ? \"auto\" : \"pointer\",\n        \"& .video_icon_container\": {\n            opacity: 1,\n            cursor: \"pointer\",\n        }\n    },\n    backgroundColor: props.is_selected ? lighterDark : \"transparent\",\n}));\n\nexport const ThumbnailWrapper = styled(Box)((props: { is_disable?: number }) => ({\n    width: `${THUMBNAIL_WIDTH}px`,\n    height: `${THUMBNAIL_HEIGHT}px`,\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    borderRadius: \"8px\",\n    overflow: \"hidden\",\n    opacity: props.is_disable ? 0.5 : 1,\n}));\n\nconst VideoIconContainer = styled(Box)({\n    position: \"absolute\",\n    right: \"21px\",\n    bottom: \"35px\",\n    display: \"flex\",\n    height: \"20px\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    gap: \"37px\"\n});\n\nconst VideoIcon = styled(Box)((props: { is_selected: number, svg_has_size?: number }) => ({\n    width: \"20px\",\n    height: \"20px\",\n    display: \"flex\",\n    pointerEvents: \"auto\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderRadius: \"16px\",\n    \"& svg\": {\n        width: props.svg_has_size ? \"inherit\" : \"12px\",\n        height: props.svg_has_size ? \"inherit\" :\"12px\",\n        color: lightWhite,\n    },\n    opacity: props.is_selected ? \"1\" : \"0\",\n}));\n\nconst TitleWrapper = styled(Box)((props: { is_disable: number }) => ({\n    color: lightWhite,\n    font: primaryFontSmall,\n    textWrap: \"nowrap\",\n    whiteSpace: \"nowrap\", // needed for Firefox that doesn't support the textWrap property\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    width: \"100px\",\n    height: \"15px\",\n    textAlign: \"center\",\n    opacity: props.is_disable ? 0.5 : 1,\n}));\n\nconst OptionsContainer = styled(Box)({\n    backgroundColor: white,\n    font: secondaryFontMedium,\n    padding: \"2px\",\n});\n\nconst OptionItem = styled(Box)({\n    color: dark,\n    padding:\"2px 5px\",\n    \":hover\": {\n        cursor: \"pointer\",\n        backgroundColor:`${lighterDark}55`,\n        color: dark,\n        borderRadius: \"2px\",\n    }\n});\n\nenum ViewStateType {\n    REGULAR,\n    EDIT,\n    DISABLED,\n}\n\ninterface VideoItemProps {\n    videoID: bigint;\n    isSelected: boolean;\n    getClipThumbnail: (videoID: bigint) => string;\n    onClick: (videoID: bigint) => void;\n    onDelete: (videoID: bigint) => void;\n    onRename: () => void;\n    openTagPopup: (videoID: bigint, position : {left: number, top: number}) => void;\n    style: React.CSSProperties;\n    disabled: boolean;\n}\n\ninterface VideoItemState {\n    thumbnail: string\n    title: string\n    newTitle: string\n    viewState: ViewStateType\n    videoUrl: string\n    optionsAnchor: HTMLButtonElement | null\n}\n\nexport class VideoItem extends React.Component {\n\n    private readonly wrapperRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    private readonly MAX_VIDEO_DURATION: number = 20;\n\n    props: VideoItemProps;\n    state: VideoItemState = {\n        thumbnail: \"\",\n        title: \"\",\n        newTitle: \"\",\n        viewState: ViewStateType.REGULAR,\n        videoUrl: \"\",\n        optionsAnchor: null\n    };\n\n    override async componentDidMount(): Promise<void> {\n        await this.updateItem();\n        window.addEventListener(\"keydown\",  this.handleKeydown);\n    }\n\n    componentWillUnmount() {\n       window.removeEventListener(\"keydown\", this.handleKeydown);\n    }\n\n    public updateItem() {\n        // updateItem will be called when metadata will be loaded, so if metadata are not valid, return\n        if (!isVideoMetadataValid(this.props.videoID))\n            return;\n\n        // if video has no thumbnail, we don't need to load it (for example: deleted video)\n        if (!isVideoThumbnailLoaded(this.props.videoID) && getVideoThumbnailUrlS3(this.props.videoID)) {\n            loadVideoThumbnail(this.props.videoID);\n            return;\n        }\n\n        let viewState: ViewStateType = ViewStateType.REGULAR;\n        if (!getVideoFileSize(this.props.videoID) || getVideoDuration(this.props.videoID) > this.MAX_VIDEO_DURATION)\n            viewState = ViewStateType.DISABLED;\n\n        const thumbnail: string = this.props.getClipThumbnail(this.props.videoID);\n\n        let title: string = getVideoTitle(this.props.videoID);\n        if (!title)\n            title = formatDate(new Date(Number(UtilsShared.getTimestampOfRandomID(this.props.videoID)) * 1000));\n\n        // check the ref.current just before setting the state to avoid the error: update on an unmounted component\n        if ((thumbnail !== this.state.thumbnail || title !== this.state.title || viewState !== this.state.viewState) &&\n            Boolean(this.wrapperRef.current))\n            this.setState({ title, thumbnail, viewState });\n    }\n\n    private isVideoDisabled(): boolean {\n        return this.state.viewState === ViewStateType.DISABLED || !getVideoFileSize(this.props.videoID) || this.props.disabled;\n    }\n\n    private updateTitle(): void {\n        if (!this.state.newTitle.trim() || this.state.title === this.state.newTitle)\n            return;\n\n        updateVideoTitle(this.props.videoID, this.state.newTitle);\n        this.setState({ viewState: ViewStateType.REGULAR, title: this.state.newTitle, optionsAnchor: null });\n        this.props.onRename();\n    }\n\n    private handleKeydown = (event: KeyboardEvent) => {\n        if (event.key === \"Enter\" && this.state.viewState === ViewStateType.EDIT &&\n            this.state.title !== this.state.newTitle)\n            this.updateTitle();\n    }\n\n    private handleTooltip(): string {\n        if (!this.isVideoDisabled())\n            return \"\";\n        if (this.props.disabled)\n            return i18next.t(\"You cannot modify an existing video asset\");\n        if (getVideoFileSize(this.props.videoID))\n            return i18next.t(\"Video is longer than 20 seconds\");\n        return i18next.t(\"Deleted video\");\n    }\n\n    private onSelect() {\n        // deleted video and video > 20s can not be selected\n        if (this.isVideoDisabled())\n            return\n\n        this.props.onClick(this.props.videoID);\n    }\n\n    private async openVideo() {\n        this.setState({ optionsAnchor: null })\n\n        const dataSourceStorage: DataSourceStorage = App.getInstance().dataSourceStorage;\n        const videoURlS3: string = getVideoUrlS3(this.props.videoID);\n        if (!videoURlS3)\n            return;\n\n        const videoUrl: string =\n            await dataSourceStorage.getPreSignedUrl(videoURlS3, ObjectTypeS3.VIDEO, this.props.videoID);\n        window.open(videoUrl, '_blank');\n    }\n\n    renderIcons(): JSX.Element {\n        if (!getVideoFileSize(this.props.videoID))\n             return <></>;\n\n        switch (this.state.viewState) {\n            case ViewStateType.EDIT:\n                return (\n                    <Box style={{display: \"flex\", flexDirection: \"row\", gap: \"2px\"}}>\n                        <VideoIcon\n                            id=\"cancel-video-icon-button\"\n                            style={{ backgroundColor: red }}\n                            className=\"video_icon_container\"\n                            is_selected={Number(true)}\n                            onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n                                e.stopPropagation();\n                                this.setState({viewState: ViewStateType.REGULAR, optionsAnchor: null});\n                            }}\n                        >\n                            <Close/>\n                        </VideoIcon>\n                        <VideoIcon\n                            id=\"validate-video-icon-button\"\n                            style={{ backgroundColor: green }}\n                            className=\"video_icon_container\"\n                            is_selected={Number(true)}\n                            onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n                                e.stopPropagation();\n                                this.updateTitle();\n                            }}\n                        >\n                            <Check/>\n                        </VideoIcon>\n                    </Box>\n                );\n            case ViewStateType.DISABLED: // fallthrough!\n            case ViewStateType.REGULAR:\n                return (\n                    <>\n                        <VideoIcon\n                            id=\"video-tags-icon\"\n                            className=\"video_icon_container\"\n                            style={{ backgroundColor: yellow }}\n                            is_selected={Number(this.props.isSelected)}\n                            onClick={(e: React.MouseEvent) => {\n                                e.stopPropagation();\n                                this.props.openTagPopup(this.props.videoID, {left: e.clientX, top: e.clientY})\n                            }}\n                        >\n                            <Tag/>\n                        </VideoIcon>\n\n                        <VideoIcon\n                            id=\"video-item-three-dots-icon\"\n                            className=\"video_icon_container\"\n                            style={{ backgroundColor: primary }}\n                            is_selected={Number(this.props.isSelected)}\n                            onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n                                e.stopPropagation();\n                                this.setState({ optionsAnchor: e.currentTarget })\n                            }}\n                        >\n                            <ThreeDotsV/>\n                        </VideoIcon>\n                        <Popover\n                            open={Boolean(this.state.optionsAnchor)}\n                            onClose={() => this.setState({optionsAnchor: null})}\n                            anchorEl={this.state.optionsAnchor}\n                            anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n                        >\n                            <OptionsContainer>\n                                <OptionItem id=\"download-video-option\" onClick={() => this.openVideo()}>\n                                    {i18next.t(\"Download\")}\n                                </OptionItem>\n                                {this.state.viewState === ViewStateType.REGULAR &&\n                                    <>\n                                        <OptionItem\n                                            id=\"rename-video-option\"\n                                            onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n                                                e.stopPropagation();\n                                                this.setState({\n                                                    viewState: ViewStateType.EDIT,\n                                                    newTitle: this.state.title\n                                                });\n                                            }}\n                                        >\n                                            {i18next.t(\"Rename\")}\n                                        </OptionItem>\n                                        <OptionItem\n                                            id=\"delete-video-option\"\n                                            onClick={() => this.props.onDelete(this.props.videoID)}\n                                            style={{ color: red }}\n                                        >\n                                            {i18next.t(\"Delete\")}\n                                        </OptionItem>\n                                    </>\n                                }\n                            </OptionsContainer>\n                        </Popover>\n                    </>\n                );\n        }\n        return <></>;\n    }\n\n    render() {\n        return (\n            <VideoItemWrapper\n                className={!getVideoFileSize(this.props.videoID) ? \"video-library-item deleted-video-item\"\n                                         : this.props.isSelected ? \"video-library-item selected-video-item\"\n                                                                 : \"video-library-item\"\n                }\n                id={this.props.videoID.toString()}\n                onClick={() => this.onSelect()}\n                style={this.props.style}\n            >\n                <Tooltip title={this.handleTooltip()} placement=\"top\" white={1}>\n                    <VideoContainer ref={this.wrapperRef}\n                                    is_selected={Number(this.props.isSelected)}\n                                    is_disable={Number(this.isVideoDisabled())}\n                                    is_options_opened={Number(Boolean(this.state.optionsAnchor))}\n                    >\n                        { this.state.thumbnail ?\n                            <>\n                                <ThumbnailWrapper is_disable={Number(this.isVideoDisabled())}>\n                                    <img alt=\"thumbnail\" src={this.state.thumbnail}\n                                         style={{width: \"100%\", minHeight: \"75px\", objectFit: \"cover\"}}\n                                    />\n                                </ThumbnailWrapper>\n                                <VideoIconContainer> {this.renderIcons()} </VideoIconContainer>\n                                { this.state.viewState === ViewStateType.EDIT ?\n                                    <InputText\n                                        id=\"renaming-video-text-input\"\n                                        value={this.state.newTitle}\n                                        onChange={(newTitle: string) => this.setState({ newTitle })}\n                                    />\n                                    :\n                                    <Tooltip title={this.state.title.length >= 20 ? this.state.title : \"\"}\n                                             enterNextDelay={2000}\n                                    >\n                                        <TitleWrapper\n                                            className=\"video-item-title\"\n                                            is_disable={Number(this.isVideoDisabled())}\n                                        >\n                                            {this.state.title}\n                                        </TitleWrapper>\n                                    </Tooltip>\n                                }\n                            </>\n                        :\n                            <CenteredLoading customID=\"video-item-loading\"/>\n                        }\n                    </VideoContainer>\n                </Tooltip>\n            </VideoItemWrapper>\n        );\n    }\n}\n", "import React from \"react\";\n\nexport const Tag = () =>\n<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path fill={\"currentColor\"} d=\"M0 11.818V2.25C0 1.00734 1.00734 0 2.25 0H11.818C12.4148 3.12036e-06 12.9871 0.237058 13.409 0.659016L23.341 10.591C24.2197 11.4697 24.2197 12.8943 23.341 13.773L13.773 23.341C12.8943 24.2197 11.4697 24.2197 10.591 23.341L0.659016 13.409C0.237058 12.9871 3.12036e-06 12.4148 0 11.818ZM5.25 3C4.00734 3 3 4.00734 3 5.25C3 6.49266 4.00734 7.5 5.25 7.5C6.49266 7.5 7.5 6.49266 7.5 5.25C7.5 4.00734 6.49266 3 5.25 3Z\"/>\n</svg>\n;\n", "import * as React from \"react\";\nimport {ThumbnailWrapper} from \"@root/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoItem\";\nimport {Box, styled} from \"@mui/material\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {dark, lightWhite} from \"@root/react-components/src/values/colors/colors\";\nimport {getVideoTitle} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {deleteVideo} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\n\nconst DeleteWarningContainer = styled(Box)({\n    width: \"100% !important\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"space-around\",\n    backgroundColor: dark,\n    color: lightWhite,\n    borderRadius: \"11px\",\n});\n\nconst DeleteVideoWrapper = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    gap: \"5px\"\n});\n\ninterface DeleteVideoWarningProps {\n    toBeDeletedVideoID: bigint,\n    thumbnail: string,\n    onDeletedVideo: () => void,\n    onCancel: () => void\n}\nexport class DeleteVideoWarning extends React.PureComponent {\n    props: DeleteVideoWarningProps;\n\n    private async onConfirm(): Promise<void> {\n        deleteVideo(this.props.toBeDeletedVideoID);\n        this.props.onDeletedVideo();\n    }\n\n    render() {\n\n        return (\n            <DeleteWarningContainer>\n                <DeleteVideoWrapper>\n                    <>\n                        <ThumbnailWrapper>\n                            <img alt=\"thumbnail\" src={this.props.thumbnail}\n                                style={{width: \"100%\", minHeight: \"75px\", objectFit: \"cover\"}}\n                            />\n                        </ThumbnailWrapper>\n                        <Box style={{font: primaryFontLarge}}> {getVideoTitle(this.props.toBeDeletedVideoID)} </Box>\n                    </>\n                </DeleteVideoWrapper>\n                <Box style={{fontSize: \"13px\"}}>\n                    <Box> {i18next.t(\"Be careful, this will permanently delete the video, \" +\n                        \"following points may be affected\")}:\n                    </Box>\n                    <ul style={{marginTop: \"5px\"}}>\n                        <li>  {i18next.t(\"Video assets (in a world or a step)\")} </li>\n                        <li>  {i18next.t(\"Videos from step attempts\")} </li>\n                        <li>  {i18next.t(\"Knowledge capture and clipped videos\")} </li>\n                    </ul>\n                    <Box style={{textAlign:\"center\", font: primaryFontLarge}}>\n                        {`${i18next.t(\"Are you sure you want to delete this video\")} ?`}\n                    </Box>\n                </Box>\n                <Box style={{display: \"flex\", gap: \"50px\"}}>\n                    <Button variant=\"outlined\" color=\"white\" onClick={() => this.props.onCancel()}>\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                    <Button id=\"delete-video-confirm-button\" color=\"error\" onClick={() => this.onConfirm()}>\n                        {i18next.t(\"Delete\")}\n                    </Button>\n                </Box>\n            </DeleteWarningContainer>\n        );\n    }\n}", "import * as React from \"react\";\nimport {ChangeEvent} from \"react\";\nimport {FilterType, Sorting} from \"@root/Frontend/Studio/Components/Sorting\";\nimport {\n    getVideoDuration,\n    getVideoFileSize,\n    getVideoTags,\n    getVideoTitle\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {SearchBar, SearchBarSize} from \"@root/react-components/src/inputs/SearchBar\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Box, Checkbox, Popover, styled} from \"@mui/material\";\nimport {Filter} from \"@root/react-components/src/icons/Filter\";\nimport i18next from \"i18next\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {lightGrey, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\nimport {compareTitles, sortMapByValueAlpha} from \"@utils/utils\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport {MainModule} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {ALL_TAG} from \"@root/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoLibrary\";\nimport {getCurrentWorldID, getOwnerID, getUsername} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\n\nconst PopoverTitle = styled(Box)({\n    font: primaryFontLarge,\n    padding: \"4px\",\n    margin: \"8px 8px 4px 8px\",\n    borderBottom: `1px solid ${lightGrey}`,\n    userSelect: \"none\"\n});\n\nconst CheckboxWrapper = styled(Box)({\n    height: \"28px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    gap: \"8px\",\n    padding: \"8px 16px\",\n    \"&:hover\": {\n        cursor: \"pointer\",\n        backgroundColor: primary,\n        \"span, div\": { // span is the checkbox icon, div is the title\n            color: white\n        }\n    },\n});\n\ninterface VideoFiltersState {\n    filterType: FilterType;\n    isAscendant: boolean;\n    searchStr: string;\n    displayLongerVideos: boolean;\n    filtersAnchor: HTMLButtonElement | null;\n    groupNames: Map<bigint, string>;\n    currentPeerName: string;\n}\n\ninterface VideoFiltersProps {\n    selectedTag: string,\n    displayDeletedVideo: boolean,\n    selectedOwnerID: bigint,\n    onFilteredVideosChange: (videoIDs: bigint[]) => void,\n    onSelectedOwnerChange: (selectedOwnerID: bigint) => void,\n    onChangeDisplayDeletedVideo: (displayDeletedVideo: boolean) => void,\n}\n\nexport class VideoFilters extends React.Component {\n    private readonly filtersRefContainer: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n\n    props: VideoFiltersProps;\n    state: VideoFiltersState = {\n        filterType: FilterType.CREATION_DATE,\n        isAscendant: true,\n        searchStr: \"\",\n        displayLongerVideos: true,\n        filtersAnchor: null,\n        groupNames: new Map<bigint, string>(),\n        currentPeerName: getUsername(getCurrentPeerID()),\n    }\n\n    componentDidMount() {\n        const groups: bigint[] = App.getInstance().getFilterViewer().getAllAvailableGroupIDs();\n        this.setState({groupNames: this.sortGroupsAlphabetically(groups)});\n        this.props.onSelectedOwnerChange(getOwnerID(getCurrentWorldID()));\n    }\n\n    override async componentDidUpdate(prevProps: Readonly<VideoFiltersProps>, prevState: Readonly<VideoFiltersState>) {\n        if (prevState.filterType !== this.state.filterType\n            || prevState.isAscendant !== this.state.isAscendant\n            || prevState.searchStr !== this.state.searchStr\n            || prevState.displayLongerVideos !== this.state.displayLongerVideos\n            || prevProps.displayDeletedVideo !== this.props.displayDeletedVideo\n            || prevProps.selectedTag !== this.props.selectedTag\n            || prevProps.selectedOwnerID !== this.props.selectedOwnerID)\n            this.updateVideoIDs();\n\n    }\n\n    public updateVideoIDs(): void {\n        const currentPeerID: bigint = getCurrentPeerID();\n        let videoIDs: bigint[] = this.props.selectedOwnerID === currentPeerID ?\n            App.getInstance().getEngine().getPeerVideos(currentPeerID) :\n            App.getInstance().getEngine().getGroupVideos(this.props.selectedOwnerID);\n\n        if (!this.state.displayLongerVideos)\n            videoIDs = videoIDs.filter((videoID: bigint) => getVideoDuration(videoID) <= 20);\n\n        if (!this.props.displayDeletedVideo)\n            videoIDs = videoIDs.filter((videoID: bigint) => !!getVideoFileSize(videoID));\n\n        if (!!this.state.searchStr)\n            videoIDs = videoIDs.filter((videoID: bigint) =>\n                getVideoTitle(videoID).toLowerCase().includes(this.state.searchStr.toLowerCase())\n            );\n\n        if (this.props.selectedTag !== ALL_TAG)\n            videoIDs = videoIDs.filter((videoID: bigint) => getVideoTags(videoID).includes(this.props.selectedTag));\n\n        videoIDs.sort((videoID1: bigint, videoID2: bigint) => this.compareVideos(videoID1, videoID2));\n\n        this.props.onFilteredVideosChange(videoIDs);\n    }\n\n    public updateGroup(groupID: bigint) {\n        if (!this.state.groupNames.has(groupID))\n            return;\n\n        // re-sort alphabetically the groups\n        const groupIDs: bigint[] = Array.from(this.state.groupNames.keys());\n        this.setState({groupNames: this.sortGroupsAlphabetically(groupIDs)});\n    }\n\n    public updatePeer(peerID: bigint) {\n        if (peerID !== getCurrentPeerID())\n            return;\n\n        const currentPeerName: string = getUsername(peerID);\n        if (this.state.currentPeerName !== currentPeerName)\n            this.setState({currentPeerName});\n    }\n\n    // returns the group name or the groupID if the string is empty\n    private getGroupName(groupID: bigint): string {\n        const engine: MainModule | null = App.getInstance().getEngine();\n        const groupName: string = engine?.getGroupName(groupID) ?? \"\";\n        return groupName.length ? groupName : groupID.toString() ;\n    }\n\n    private handleChangeSorting(filterType: FilterType) {\n        if (filterType === this.state.filterType) {\n            return this.setState((prevState: VideoFiltersState) => ({\n                isAscendant: !prevState.isAscendant\n            }));\n        }\n        this.setState({ filterType, isAscendant: true });\n    }\n\n    private handleChangeGroupFilter(index: number) {\n        const selectedOwnerID: bigint = index === 0 ? getCurrentPeerID() :\n                                        Array.from(this.state.groupNames.keys())[index - 1];\n        if (selectedOwnerID === this.props.selectedOwnerID)\n            return;\n\n        this.props.onSelectedOwnerChange(selectedOwnerID);\n    }\n\n    private sortGroupsAlphabetically(groups: bigint[]): Map<bigint, string> {\n        const groupMap: Map<bigint, string> =\n            new Map(groups.map((groupID: bigint) => [groupID, this.getGroupName(groupID)]));\n        return sortMapByValueAlpha(groupMap);\n    }\n\n    private compareVideos(videoID1: bigint, videoID2: bigint): number {\n        switch (this.state.filterType) {\n            case FilterType.ALPHA: {\n                const title1: string = getVideoTitle(videoID1).toLowerCase();\n                const title2: string = getVideoTitle(videoID2).toLowerCase();\n                return compareTitles(title1, title2, this.state.isAscendant);\n            }\n            case FilterType.CREATION_DATE: {\n                const time1: bigint = UtilsShared.getTimestampOfRandomID(videoID1);\n                const time2: bigint = UtilsShared.getTimestampOfRandomID(videoID2);\n                return this.state.isAscendant ? Number(time2 - time1) : Number(time1 - time2);\n            }\n            default:\n                return 0;\n        }\n    }\n\n    render() {\n        const ownerSelectOptions: string[] = [this.state.currentPeerName, ...this.state.groupNames.values()];\n        const ownerName: string = this.props.selectedOwnerID === getCurrentPeerID() ? ownerSelectOptions[0] :\n                                  this.getGroupName(this.props.selectedOwnerID);\n        return (\n            <>\n                <Select\n                    options={ownerSelectOptions}\n                    default={ownerSelectOptions.indexOf(ownerName)}\n                    onChange={(index: number) => this.handleChangeGroupFilter(index)}\n                    style={{ backgroundColor: white, width: \"250px\" }}\n                    styleOptionsWrapper={{ maxHeight: \"400px\", overflow: \"auto\" }}\n                />\n                <SearchBar\n                    id=\"video-library-search-bar\"\n                    onChange={(searchStr: string) => this.setState({searchStr})}\n                    size={SearchBarSize.SMALL}\n                    style={{width: \"400px\"}}\n                />\n                <Button\n                    id=\"video-library-filters-button\"\n                    variant=\"outlined\"\n                    color={\"dark\"}\n                    sx={{ minWidth: \"unset\", minHeight: \"unset\", padding: \"6px\" }}\n                    onClick={(event: React.MouseEvent<HTMLButtonElement>) =>\n                        this.setState({ filtersAnchor: event.currentTarget })\n                    }\n                >\n                    <Box style={{ width: \"14px\", height: \"14px\", color: \"dark\" }}> <Filter /> </Box>\n                </Button>\n                <Popover\n                    container={this.filtersRefContainer.current ?? null}\n                    open={Boolean(this.state.filtersAnchor)}\n                    onClose={() => this.setState({ filtersAnchor: null })}\n                    anchorEl={this.state.filtersAnchor}\n                    anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n                >\n                    <Box style={{display: \"flex\", flexDirection: \"column\"}}>\n                        <PopoverTitle> {i18next.t(\"Filters\")} </PopoverTitle>\n                        <CheckboxWrapper onClick={() =>  this.setState(((prevState: VideoFiltersState) => ({\n                            displayLongerVideos: !prevState.displayLongerVideos\n                        })))}\n                        >\n                            <Label dark medium\n                                   style={{marginTop: \"0px\", whiteSpace:\"nowrap\", userSelect: \"none\"}}\n                            >\n                                {i18next.t(\"Over 20s\")}\n                            </Label>\n                            <Checkbox\n                                id=\"over-20s-checkbox\"\n                                style={{padding: \"0px\"}}\n                                checked={this.state.displayLongerVideos}\n                                onChange={(event: ChangeEvent<HTMLInputElement>) =>\n                                    this.setState({displayLongerVideos: event.target.checked})\n                                }\n                            />\n                        </CheckboxWrapper>\n                        <CheckboxWrapper\n                            id=\"deleted-videos-filter\"\n                            onClick={() => this.props.onChangeDisplayDeletedVideo(!this.props.displayDeletedVideo)}\n                        >\n                            <Label dark medium\n                                   style={{marginTop: \"0px\", whiteSpace:\"nowrap\", userSelect: \"none\"}}\n                            >\n                                {i18next.t(\"Deleted videos\")}\n                            </Label>\n                            <Checkbox\n                                id=\"deleted-videos-checkbox\"\n                                style={{padding: \"0px\"}}\n                                checked={this.props.displayDeletedVideo}\n                                onChange={(event: ChangeEvent<HTMLInputElement>) =>\n                                    this.props.onChangeDisplayDeletedVideo(event.target.checked)\n                                }\n                            />\n                        </CheckboxWrapper>\n                    </Box>\n                </Popover>\n                <Sorting\n                    filterType={this.state.filterType}\n                    isAscendant={this.state.isAscendant}\n                    handleChangeFilter={(filterType: FilterType) => this.handleChangeSorting(filterType)}\n                />\n            </>\n        );\n    }\n}", "import * as React from \"react\";\nimport {Box, Input, styled} from \"@mui/material\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {primaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Rename} from \"@root/react-components/src/icons/Rename\";\nimport {Undo} from \"@root/react-components/src/icons/Undo\";\nimport {Delete} from \"@root/react-components/src/icons/Delete\";\nimport {getImageResolution} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport i18next from \"i18next\";\n\nconst previewHeaderHeight: number = 30;\nconst previewHeaderPadding: number = 5;\nconst previewHeaderTotalHeight: number = previewHeaderPadding + previewHeaderHeight;\n\nexport const DropBox = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: \"100%\",\n    border: `1px solid ${dark}`,\n    borderRadius: \"16px\",\n    position: \"relative\",\n    cursor: 'pointer'\n});\n\nconst PreviewContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    minHeight: 0\n});\n\nconst PreviewHeaderContainer = styled(Box)({\n    display: \"flex\",\n    width: \"100%\",\n    justifyContent: \"space-between\",\n    height: `${previewHeaderHeight}px`,\n    paddingBottom: `${previewHeaderPadding}px`\n});\n\nconst PreviewImageWrapper = styled(Box)({\n    display: \"flex\",\n    flex: 1,\n    minHeight: 0,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    width: \"100%\",\n    userSelect: \"none\",\n});\n\nconst FileTitle = styled(Box)({\n    font: primaryFontMedium,\n    userSelect: \"none\"\n});\n\nconst Options = styled(Box)({\n    display: 'flex',\n    alignItems: 'center',\n});\n\nconst OptionButton = styled(Box)({\n    width: `${previewHeaderHeight}px`,\n    cursor: 'pointer',\n    marginLeft: '8px',\n    \"& svg\": {\n        height: \"24px\",\n        width: \"24px\"\n    }\n});\n\nconst ImgWrapper = styled(\"img\")((props: {height: string, width: string, transform: string}) => ({\n    height: props.height,\n    width: props.width,\n    transform: props.transform,\n    objectFit: \"contain\",\n    imageOrientation: \"none\",\n}));\n\ninterface ImageDimensions {\n    width: number;\n    height: number;\n}\n\nexport interface MediaPreviewProps {\n    filePath: string;\n    title: string;\n    onFileChange: (file: File | null) => void;\n    allowEdit?: boolean;\n    allowDelete?: boolean;\n    updateRotationCallBack?: (rotation: number) => void;\n    defaultRotation?: number;\n}\n\nexport interface MediaPreviewState {\n    imagePreviewSrc: string;\n    realDimension: ImageDimensions;\n    previewDimensions: ImageDimensions;\n}\n\nexport class MediaPreview extends React.Component {\n    private static readonly MIN_ROTATION: number = 0;\n    private static readonly MAX_ROTATION: number = 270;\n    private static readonly INCREMENT_ROTATION: number = 90;\n    private readonly previewRef: React.RefObject<HTMLElement> = React.createRef<HTMLElement>();\n    private readonly inputImageRef: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n\n    props: MediaPreviewProps;\n    state: MediaPreviewState = {\n        imagePreviewSrc: \"\",\n        realDimension: { width: 0, height: 0 },\n        previewDimensions: { width: 0, height: 0 }\n    };\n\n    componentDidMount() {\n        this.loadFile();\n    }\n\n    componentDidUpdate(prevProps: Readonly<MediaPreviewProps>) {\n        if (prevProps.filePath !== this.props.filePath) {\n            URL.revokeObjectURL(this.state.imagePreviewSrc);\n            this.loadFile();\n            return;\n        }\n\n        if (prevProps.defaultRotation !== this.props.defaultRotation)\n            this.updatePreviewDimensions();\n    }\n\n    componentWillUnmount() {\n        URL.revokeObjectURL(this.state.imagePreviewSrc);\n    }\n\n    private onClickRotate() {\n        let nextRotation: number = (this.props.defaultRotation ?? 0) + MediaPreview.INCREMENT_ROTATION;\n        if (nextRotation > MediaPreview.MAX_ROTATION)\n            nextRotation = MediaPreview.MIN_ROTATION;\n        this.props.updateRotationCallBack?.(nextRotation);\n    }\n\n    private loadFile() {\n        if (!this.props.filePath) {\n            this.setState(\n                { imagePreviewSrc: \"\", realDimension: { width: 0, height: 0 } }, () => this.updatePreviewDimensions());\n            return;\n        }\n\n        const imageBinary: Uint8Array = AdapterUtils.getCoreFileBinary(this.props.filePath, \"\");\n        const imagePreviewSrc: string = URL.createObjectURL(new Blob([imageBinary]));\n        const [width, height] = getImageResolution(this.props.filePath);\n        this.setState({ imagePreviewSrc, realDimension: { width, height } }, () => this.updatePreviewDimensions());\n    }\n\n    private computeDimensions(realDimension: ImageDimensions, maxDimension: ImageDimensions): ImageDimensions {\n        const { width: realWidth, height: realHeight } = realDimension;\n        const { width: maxWidth, height: maxHeight } = maxDimension;\n\n        if (!realWidth || !realHeight || !maxWidth || !maxHeight)\n            return { width: 0, height: 0 };\n\n        const aspectRatio: number = realWidth / realHeight;\n        // if the value is 90 or 270 the image is vertical\n        const isVertical: boolean = this.props.defaultRotation === MediaPreview.INCREMENT_ROTATION ||\n                                    this.props.defaultRotation === MediaPreview.MAX_ROTATION;\n\n        if (!isVertical) {\n            const height: number = maxHeight * aspectRatio > maxWidth ? maxWidth / aspectRatio : maxHeight;\n            const width: number = maxHeight * aspectRatio > maxWidth ? maxWidth : maxHeight * aspectRatio;\n            return { width, height };\n        }\n\n        // If the image was rotated, we need to take into account that the CSS will rotate it again with\n        // transform: rotate, so we treat the width as the height and the height as the width\n        const width: number = maxHeight / aspectRatio > maxWidth ? maxWidth * aspectRatio : maxHeight;\n        const height: number = maxHeight / aspectRatio > maxWidth ? maxWidth : maxHeight / aspectRatio;\n        return { width, height };\n    }\n\n    private updatePreviewDimensions() {\n        const maxDimension: ImageDimensions = {\n            height: Math.max((this.previewRef.current?.clientHeight ?? 0) - previewHeaderTotalHeight, 0),\n            width: Math.max(this.previewRef.current?.clientWidth ?? 0, 0)\n        };\n\n        const previewDimensions: ImageDimensions = this.computeDimensions(this.state.realDimension, maxDimension);\n        if (previewDimensions.width !== this.state.previewDimensions.width ||\n            previewDimensions.height !== this.state.previewDimensions.height)\n            this.setState({ previewDimensions });\n    }\n\n    private getFileTitle(): string {\n        const filePath: string = this.props.filePath?.trim();\n        if (!filePath) return '';\n        return filePath.split('/').at(-1) ?? '';\n    }\n\n    render(): JSX.Element {\n        const transform: string = this.props.defaultRotation !== undefined ?\n            `rotate(-${this.props.defaultRotation}deg)` : \"unset\";\n\n        return <Box style={{ height: \"100%\" }}>\n            <Input type=\"file\" inputRef={this.inputImageRef} sx={{display: \"none\"}}\n                   id=\"input-media-preview\"\n                   onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n                       this.props.onFileChange(e.target.files?.[0] ?? null)}/>\n\n            <PreviewContainer ref={this.previewRef}>\n                {this.state.imagePreviewSrc ? (\n                    <>\n                        <PreviewHeaderContainer>\n                            <FileTitle>\n                                {this.getFileTitle()}\n                            </FileTitle>\n                            <Options>\n                                {Boolean(this.props.allowDelete) &&\n                                    <OptionButton id=\"delete-media-preview\"\n                                                  onClick={() => this.props.onFileChange(null)}>\n                                        <Delete />\n                                    </OptionButton>\n                                }\n                                {Boolean(this.props.allowEdit) &&\n                                    <OptionButton onClick={() => this.inputImageRef.current?.click()}>\n                                        <Rename/>\n                                    </OptionButton>\n                                }\n                                {this.props.defaultRotation !== undefined &&\n                                    <OptionButton onClick={() => this.onClickRotate()}>\n                                        <Undo/>\n                                    </OptionButton>\n                                }\n                            </Options>\n                        </PreviewHeaderContainer>\n                        <PreviewImageWrapper>\n                            <ImgWrapper\n                                src={this.state.imagePreviewSrc}\n                                transform={transform}\n                                height={`${this.state.previewDimensions.height}px`}\n                                width={`${this.state.previewDimensions.width}px`}\n                                alt=\"image preview\"\n                            />\n                        </PreviewImageWrapper>\n                    </>\n                ) : (\n                    <DropBox onClick={() => this.inputImageRef.current?.click()}>\n                        <Button>\n                            {i18next.t(\"Click to add an image\")}\n                        </Button>\n                    </DropBox>\n                )}\n            </PreviewContainer>\n        </Box>\n    }\n}", "import React from \"react\";\nimport i18next from \"i18next\";\nimport {Box, styled} from \"@mui/material\";\nimport {Regenerate} from \"@root/react-components/src/icons/Regenerate\";\nimport {contrastRed, darkGrey, white, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport {InputTextarea} from \"@root/react-components/src/inputs/InputTextarea\";\nimport {resetAllTranslations} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterText\";\nimport {secondaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Text, Language, Cloud} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nconst SubLabel = styled(Box)((props: {is_error: number}) => ({\n    font: secondaryFontSmall,\n    color: props.is_error ? contrastRed : darkGrey,\n    height: \"14px\",\n    marginTop: \"3px\"\n}));\n\nconst InputWrapper = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    gap: \"10px\"\n});\n\nconst TranslationWrapper = styled(Box)({\n    display: \"flex\",\n    alignItems: \"end\",\n    justifyContent: \"space-between\"\n});\n\nconst IconWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"center\",\n    width: \"20px\",\n    height: \"20px\",\n    paddingBottom: \"4px\"\n});\n\ninterface InputTextTranslationProps {\n    label: string;\n    textID: bigint;\n    originalText: string;\n    translationLanguage: Language;\n    readonly: boolean;\n    errorMessage: string;\n    required: boolean;\n    id: string;\n    onChangeValue: (text: string) => void;\n    onConfirmValue: () => void;\n    onTabDown?: () => void;\n    placeholder?: string;\n    rows?: number;\n    counter?: number;\n    sourceLanguage?: Language;\n}\n\ninterface InputTextTranslationState {\n    isGeneratingTranslations: boolean;\n    isAudioEmpty: boolean;\n    translationFailed: boolean;\n    isFocused: boolean;\n    translation: string;\n}\n\nexport class InputTextTranslation extends React.Component {\n    props: InputTextTranslationProps;\n    state: InputTextTranslationState = {\n        isGeneratingTranslations: false,\n        isAudioEmpty: false,\n        translationFailed: false,\n        isFocused: false,\n        translation: \"\"\n    }\n\n    private answerInputsRef: React.RefObject<HTMLTextAreaElement> = React.createRef<HTMLTextAreaElement>();\n\n    componentDidMount() { this.updateText(this.props.textID); }\n\n    componentDidUpdate(prevProps: Readonly<InputTextTranslationProps>,\n                       prevState: Readonly<InputTextTranslationState>) {\n        if (this.props.textID !== prevProps.textID ||\n            this.props.originalText !== prevProps.originalText ||\n            this.props.translationLanguage !== prevProps.translationLanguage ||\n            this.state.isFocused !== prevState.isFocused)\n            this.updateText(this.props.textID);\n    }\n\n    public updateText(textID: bigint) {\n        if (!textID || textID !== this.props.textID)\n            return;\n\n        const cloud: Cloud = App.getInstance().getEngine().Cloud.getInstance();\n        using text: Text | null = textID ? cloud.getTextByID(textID) : null;\n        if (!text) {\n            this.setState({translation: \"\", translationFailed: false, canGenerateAudio: false,\n                isGeneratingTranslations: false, isAudioEmpty: false});\n            return;\n        }\n\n        const translationFailed: boolean = text.hasTranslationFailed(this.props.translationLanguage);\n        if (translationFailed !== this.state.translationFailed)\n            this.setState({ translationFailed });\n\n        // if not focused, attempt to retrieve the translation\n        if (!this.state.isFocused) {\n            const translation: string = text.fetchTranslation(this.props.translationLanguage,\n                this.props.sourceLanguage);\n            if (translation !== this.state.translation)\n                this.setState({ translation });\n        }\n\n        const isAudioEmpty: boolean = text.isAudioEmpty(this.props.translationLanguage);\n        if (isAudioEmpty !== this.state.isAudioEmpty)\n            this.setState({ isAudioEmpty });\n\n        const isGenerating: boolean = text.isGeneratingTranslations();\n        if (isGenerating !== this.state.isGeneratingTranslations)\n            this.setState({isGeneratingTranslations: isGenerating});\n    }\n\n    public focus() { this.answerInputsRef.current?.focus(); }\n\n    private handleConfirmTextValue() {\n        if (this.props.readonly)\n            return;\n        this.props.onConfirmValue();\n    }\n\n    private handleChangeTextValue(textValue: string) {\n        if (this.props.readonly)\n            return;\n\n        if (this.props.textID)\n            resetAllTranslations(this.props.textID);\n\n        this.props.onChangeValue(UtilsShared.cleanStringForASCIIExtended(textValue));\n    }\n\n    private handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {\n        if (event.key !== \"Tab\")\n            return;\n\n        event.preventDefault();\n\n        // Trigger the blur event\n        this.answerInputsRef.current?.blur();\n        this.props.onTabDown?.();\n    }\n\n    private onGenerateTranslation() {\n        if (!this.props.textID)\n            return;\n\n        using text: Text | null = App.getInstance().getEngine().Cloud.getInstance().getTextByID(this.props.textID);\n        if (this.state.translationFailed)\n            text?.generateTranslation(this.props.translationLanguage, this.props.sourceLanguage);\n        else\n            text?.generateAudio(this.props.translationLanguage);\n    }\n\n    render(): JSX.Element {\n        const shouldShowIcons: boolean =\n            this.state.isGeneratingTranslations || this.state.translationFailed || this.state.isAudioEmpty;\n\n        return (<Box>\n            <InputWrapper>\n                <Box style={{width: \"100%\"}}>\n                    <InputTextarea\n                        ref={this.answerInputsRef}\n                        label={this.props.label}\n                        id={this.props.id}\n                        dark\n                        readOnly={this.props.readonly || this.state.isGeneratingTranslations}\n                        value={this.props.originalText}\n                        rows={this.props.rows ?? 1}\n                        placeholder={this.props.placeholder ?? \"\"}\n                        onChange={(textValue: string) => this.handleChangeTextValue(textValue)}\n                        onBlur={() => this.setState({isFocused: false}, () => this.handleConfirmTextValue())}\n                        onFocus={() => this.setState({isFocused: true})}\n                        onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => this.handleKeyDown(e)}\n                    />\n                </Box>\n                { Boolean(this.props.textID) &&\n                    <TranslationWrapper style={{width: \"100%\"}}>\n                        <Box style={{width: shouldShowIcons ? \"90%\" : \"100%\"}}>\n                            <InputTextarea\n                                label={i18next.t(\"Translation\")}\n                                readOnly\n                                dark\n                                rows={this.props.rows ?? 1}\n                                value={this.state.translationFailed ?\n                                    i18next.t(\"Translations missing\") : this.state.translation}\n                            />\n                        </Box>\n                        {shouldShowIcons &&\n                            <Box>\n                                { this.state.isGeneratingTranslations ?\n                                    <IconWrapper>\n                                        <CenteredLoading/>\n                                    </IconWrapper> :\n                                    <IconWrapper\n                                        style={{ cursor: \"pointer\" }}\n                                        onClick={() => this.onGenerateTranslation()}>\n                                        <Regenerate color={white} fillColor={yellow}/>\n                                    </IconWrapper>\n                                }\n                            </Box>\n                        }\n                    </TranslationWrapper>\n                }\n            </InputWrapper>\n            <SubLabel is_error={this.props.errorMessage ? 1 : 0}>\n                {this.props.errorMessage ? this.props.errorMessage :\n                (this.props.counter ? `${this.props.originalText.length}/${this.props.counter} ${i18next.t(\"characters\")}` : \"\")}\n            </SubLabel>\n        </Box>);\n    }\n}\n", "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {dark, lighterDark, lightGrey, white} from \"../values/colors/colors\";\nimport {Label} from \"../misc/Label\";\nimport {secondaryFontMedium, secondaryFontSmall} from \"../values/fonts/fonts\";\nimport i18next from \"i18next\";\n\nconst Wrapper = styled(\"div\")`\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n`;\n\nconst Input = styled(\"textarea\")\n    <{\n        color: string,\n        hasLabel: boolean,\n        center: boolean,\n        right: boolean,\n        no_wrap: boolean,\n        scroll_bar: boolean\n    }>`\n    background: none;\n    border-top: 0;\n    border-right: 0;\n    border-left: 0;\n    border-bottom: 1px solid ${props => props.color};\n    outline: none;\n    color: ${props => props.color};\n    margin: ${props => props.hasLabel ? 0 : \"3px 0px\"};\n    font-size: 14px;\n    box-sizing: border-box;\n    padding: 0px 2px 3px;\n    font: ${secondaryFontMedium};\n    width: 100%;\n    text-align: ${props => props.center?\"center\":(props.right)?\"right\":\"left\"};\n    -webkit-appearance: none;\n    border-radius: 0;\n    resize: none;\n    white-space: ${props => props.no_wrap ? \"pre\" : \"pre-wrap\"};\n    overflow: auto;\n    scrollbar-width: ${props => props.scroll_bar ? \"auto\" : \"none\"}; /* Firefox */\n    -ms-overflow-style: ${props => props.scroll_bar ? \"auto\" : \"none\"}; /* IE/Edge Legacy */\n\n    &:hover{\n        cursor:${props => props.readOnly?\"default\":\"text\"}\n    }\n    &::placeholder{\n        color: ${props => props.color};\n        opacity: 0.5\n    }\n    &::-webkit-scrollbar {\n            width: 10px;\n            height: 10px;\n        }\n\n        /* Track */\n        &::-webkit-scrollbar-track {\n            opacity: 0\n        }\n\n        /* Handle */\n        &::-webkit-scrollbar-thumb {\n            background: ${lightGrey}; \n            border-radius: 10px;\n        }\n`;\n\nconst Counter = styled(\"div\")\n    <{\n        color: string\n    }>`\n    margin-top: 3px;\n    font: ${secondaryFontSmall};\n    color: ${props => props.color};\n    & > div.error{\n        color: red\n    }\n`;\n\nexport const InputTextarea = React.forwardRef(\n    (props : {\n        id?: string,\n        label?: string,\n        defaultValue?: string,\n        dark?: boolean,\n        center?: boolean,\n        right?: boolean,\n        readOnly?: boolean,\n        onChange?: Function,\n        placeholder?: string,\n        type?: string,\n        name?:string,\n        onFocus?: Function,\n        onBlur?: Function,\n        onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void,\n        rows?: number,\n        cols?: number,\n        resize?: string,\n        counter?: number,\n        value?: string\n    } = {\n        label: \"InputTextarea\",\n        defaultValue: \"\",\n        dark: true,\n        center: false,\n        right: false,\n        readOnly: false,\n        onChange: () => {},\n        placeholder: \"Enter text here\",\n        type: \"text\",\n        name: \"\",\n        onFocus: () => {},\n        onBlur: () => {},\n        rows: 8,\n        cols: 50,\n        resize: \"none\",\n        counter: 140,\n    }, ref: React.RefObject<HTMLTextAreaElement>) => {\n        let counterRef = React.createRef<HTMLDivElement>();\n        const color: string = props.readOnly ?\n                lighterDark :\n                props.dark ?\n                    dark :\n                    white;\n        return(\n            <Wrapper>\n                {\n                    (props.label) ?\n                        <div style={{marginBottom: 2}}><Label style={{color: color}}>\n                            <span>{props.label}</span>\n                        </Label></div>\n                        :\n                        <></>\n                }\n                <Input\n                    id={props.id}\n                    ref={ref}\n                    name={props.name ? props.name : null}\n                    center={props.center}\n                    right={props.right}\n                    readOnly={props.readOnly}\n                    hasLabel={props.label !== \"\"}\n                    onKeyDown={(event: React.KeyboardEvent<HTMLInputElement>) => props.onKeyDown?.(event)}\n                    onChange={e => {\n                        if(props.counter) {\n                            let valueLength = e.target.value.length;\n\n                            counterRef.current.innerText =\n                                valueLength + \"/\" + props.counter + \" \" + i18next.t(\"characters\");\n\n                            if(valueLength > props.counter)\n                                counterRef.current.classList.add(\"error\");\n                            else\n                                counterRef.current.classList.remove(\"error\");\n                        }\n\n                        props.onChange(e.target.value)\n                    }}\n                    placeholder={props.placeholder}\n                    color={color}\n                    rows={props.rows}\n                    cols={props.cols}\n                    wrap={props.rows === 1 ? \"off\" : \"soft\"}\n                    no_wrap={props.rows === 1}\n                    scroll_bar={props.rows > 1}\n                    onFocus={e => {\n                        if(props.onFocus)\n                            props.onFocus(e.target.value);\n                    }}\n                    onBlur={e => {\n                        if(props.onBlur)\n                            props.onBlur(e)\n                    }}\n                    onClick={e => {\n                        if(props.readOnly)\n                            return false;\n                        e.stopPropagation();\n                    }}\n                    defaultValue={props.defaultValue}\n                    value={props.value}\n                />\n                {\n                    props.counter ?\n                        <Counter color={color}>\n                            <div className={props.defaultValue && props.defaultValue.length > props.counter ? \"error\" : \"\"} ref={counterRef}>\n                                {props.defaultValue ? props.defaultValue.length\n                                    : props.value ? props.value.length\n                                    : 0 }/{props.counter} {i18next.t(\"characters\")}\n                            </div>\n                        </Counter> :\n                        <></>\n                }\n            </Wrapper>\n        )\n    });\n", "import React from \"react\";\nimport i18next from \"i18next\";\nimport {DESC_MAX_LENGTH} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/StepEditorDialog\";\nimport {getStepType} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {SelectedStepContext} from \"@root/Frontend/Studio/Contexts/SelectedStepContext\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport {\n    JumpDestinationSelection\n} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/Branching/JumpDestinationSelection\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\nimport {Box, styled} from \"@mui/material\";\nimport {InputTextTranslation} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/InputTextTranslation\";\nimport {Sequence, Step, StepBranching, Text, JumpDestination} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {getCurrentWorldID, getOwnerID, getWorldOwnerType} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {createNewText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterCloud\";\n\nconst LabelWrapper = styled(Box)({\n    marginBottom: \"2px\",\n    marginTop: \"6px\",\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\"\n});\n\ninterface BranchingProps {\n    stepID: bigint;\n    stepIndex: number;\n    stepTitleTextID: bigint;\n    onStepModified: (isValid: boolean) => void;\n}\n\ninterface BranchingState {\n    title: string;\n    errorDescription: string;\n}\n\nexport class StepBranchingEditor extends React.Component implements InterfaceStepEditor {\n    static contextType = SelectedStepContext;\n    private titleInputsRef: React.RefObject<InputTextTranslation> = React.createRef<InputTextTranslation>();\n\n    context: React.ContextType<typeof SelectedStepContext>;\n    props: BranchingProps;\n    state: BranchingState = {\n        title: \"\",\n        errorDescription: \"\"\n    };\n    private readonly jumpDestinationYes: React.RefObject<JumpDestinationSelection> =\n        React.createRef<JumpDestinationSelection>();\n    private readonly jumpDestinationNo: React.RefObject<JumpDestinationSelection> =\n        React.createRef<JumpDestinationSelection>();\n\n    componentDidMount() {\n        this.update();\n    }\n\n    override async componentDidUpdate(prevProps: Readonly<BranchingProps>) {\n        if (this.props.stepID !== prevProps.stepID)\n            this.update();\n    }\n\n    public update(){\n        if (!this.props.stepID)\n            return;\n\n        // allow the jump destinations to update themselves\n        this.jumpDestinationYes.current?.update();\n        this.jumpDestinationNo.current?.update();\n    }\n\n    private getStepBranching(stepID: bigint): StepBranching | null {\n        if (!stepID)\n            return null;\n\n        using sequence: Sequence | null = App.getInstance().getSequence(getCurrentSequenceID());\n        const step: Step | null = sequence?.getStepByID(stepID) ?? null;\n        return step && getStepType(stepID) === StepType.BRANCHING ? step as StepBranching : null;\n    }\n\n    public updateText(textID: bigint) {\n        using stepBranching: StepBranching | null = this.getStepBranching(this.props.stepID);\n        if (!textID || !stepBranching)\n            return;\n\n        using text: Text | null = stepBranching.getText();\n        if (!text || textID !== text.getID())\n            return;\n\n        const title: string = text.getOriginalText();\n        if (title !== this.state.title)\n            this.setState({title});\n        this.titleInputsRef.current?.updateText(textID);\n    }\n\n    private setTitle(title: string): void {\n        if (this.state.title !== title)\n            this.setState({ title }, () => this.props.onStepModified(this.validateData()));\n    }\n\n    public validateData(): boolean {\n        let errorDescription: string = \"\";\n\n        if (!this.state.title.trim())\n            errorDescription = i18next.t(\"The description is required\");\n        else if(this.state.title.length > DESC_MAX_LENGTH)\n            errorDescription =\n                `${i18next.t(\"The description is too long\")}: ${this.state.title.length}/${DESC_MAX_LENGTH}`;\n\n        // check for any errors with either jump destinations\n        if(!this.jumpDestinationYes.current?.isValid() || !this.jumpDestinationNo.current?.isValid())\n            errorDescription = i18next.t(\"Please provide a valid destination\");\n\n        if (this.state.errorDescription !== errorDescription)\n            this.setState({ errorDescription });\n\n        // If there's no error, just return true.\n        return !errorDescription.length;\n    }\n\n    public async saveNewStep(stepID: bigint): Promise<boolean> {\n        if(!this.validateData())\n            return false;\n\n        using stepBranching: StepBranching | null = this.getStepBranching(stepID);\n        if (!stepBranching)\n            return false;\n\n        const worldID: bigint = getCurrentWorldID();\n        const ownerID: bigint = getOwnerID(worldID);\n        const ownerType: OwnerType = getWorldOwnerType(worldID);\n\n        using text: Text | null = await createNewText(ownerID, ownerType);\n        if (!text)\n            return false;\n\n        text.saveAudioEnabled(true);\n        text.saveOriginalText(this.state.title);\n        stepBranching.saveText(text);\n\n        const jumpDestYes: JumpDestination | undefined = this.jumpDestinationYes.current?.getJumpDestination();\n        const jumpDestNo: JumpDestination | undefined  = this.jumpDestinationNo.current?.getJumpDestination();\n        stepBranching.saveJumpDestinationYes(jumpDestYes);\n        stepBranching.saveJumpDestinationNo(jumpDestNo);\n        return true;\n    }\n\n    private onConfirmTitle() {\n        using stepBranching: StepBranching | null = this.getStepBranching(this.props.stepID);\n        using text: Text | null = stepBranching?.getText() ?? null;\n        if (text && !this.state.errorDescription)\n            text.saveOriginalText(this.state.title);\n    }\n\n    private getTooltipInfo(): JSX.Element {\n        return <Box>\n            {`${i18next.t(\"You can choose a destination for each answer\")}:`}\n            <ul style={{ paddingLeft: \"1.2em\" }}>\n                <li>{`${i18next.t(\"Continue takes the user to the next step\")}.`}</li>\n                <li>{`${i18next.t(\"Step enables you to jump to a step in this sequence\")}.`}</li>\n                <li>{`${i18next.t(\"Sequence enables you to jump to a published sequence in this world\")}. \n                    ${i18next.t(\"The resume button enables the user to resume this sequence after \" +\n                    \"finishing the other one\")}.`}</li>\n            </ul>\n        </Box>\n    }\n\n    render(){\n        return (\n            <>\n                <InputTextTranslation\n                    id={\"step-branching-textArea\"}\n                    ref={this.titleInputsRef}\n                    label={i18next.t(\"Description\")}\n                    translationLanguage={this.context.translationLanguage}\n                    sourceLanguage={this.context.defaultLanguage}\n                    readonly={!this.context.canEditStep}\n                    textID={this.props.stepTitleTextID}\n                    originalText={this.state.title}\n                    rows={3}\n                    required\n                    placeholder={i18next.t(\"What would you like to confirm?\")}\n                    errorMessage={this.state.errorDescription}\n                    onChangeValue={(text: string) => this.setTitle(text)}\n                    onConfirmValue={() => this.onConfirmTitle()}\n                    counter={DESC_MAX_LENGTH}\n                />\n                <LabelWrapper style={{paddingTop:\"10px\"}}>\n                    <Label large={true} dark={true} style={{ marginTop: \"0px\"}}>\n                        <span>{i18next.t(\"Destinations\")}</span>\n                    </Label>\n                    <Tooltip title={this.getTooltipInfo()}>\n                        <InfoIcon style={{cursor: \"pointer\"}}>\n                            <Info />\n                        </InfoIcon>\n                    </Tooltip>\n                </LabelWrapper>\n                <JumpDestinationSelection\n                    ref={this.jumpDestinationYes}\n                    label={i18next.t(\"Yes\")}\n                    stepID={this.props.stepID}\n                    onDestinationChange={(destination: JumpDestination | undefined) => {\n                        using stepBranching: StepBranching | null = this.getStepBranching(this.props.stepID);\n                        stepBranching?.saveJumpDestinationYes(destination);\n                        this.props.onStepModified(this.validateData());\n                    }}\n                    getJumpDestination={() => {\n                        using stepBranching: StepBranching | null = this.getStepBranching(this.props.stepID);\n                        return stepBranching?.getJumpDestinationYes() ?? undefined;\n                    }}\n                />\n                <JumpDestinationSelection\n                    ref={this.jumpDestinationNo}\n                    label={i18next.t(\"No\")}\n                    stepID={this.props.stepID}\n                    onDestinationChange={(destination: JumpDestination | undefined) => {\n                        using stepBranching: StepBranching | null = this.getStepBranching(this.props.stepID);\n                        stepBranching?.saveJumpDestinationNo(destination);\n                        this.props.onStepModified(this.validateData());\n                    }}\n                    getJumpDestination={() => {\n                        using stepBranching: StepBranching | null = this.getStepBranching(this.props.stepID);\n                        return stepBranching?.getJumpDestinationNo();\n                    }}\n                />\n            </>\n        )\n    }\n}\n", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport {Switch} from \"@root/react-components/src/inputs/Switch\";\nimport {isCurrentSequenceInEvaluationMode} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {\n    getChildSequenceID,\n    getCurrentSequenceID,\n    getCurrentWorldSequencesList,\n    getParentSequenceID,\n    getSequenceTitle\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {getStepsList} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {DestinationType} from \"@backend/Types/Step\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport i18next from \"i18next\";\nimport {ArrowRight} from \"@root/react-components/src/icons/ArrowRight\";\nimport {primary, yellow, dark, contrastRed} from \"@root/react-components/src/values/colors/colors\";\nimport {Warning} from \"@root/react-components/src/icons/Warning\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {SelectedStepContext} from \"@root/Frontend/Studio/Contexts/SelectedStepContext\";\nimport { Prompt } from \"@root/react-components/src/prompts/Prompt\";\nimport {getOriginalText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterText\";\nimport {getStepTextID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequence\";\nimport {JumpDestination} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nconst Wrapper = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    gap: \"16px\"\n});\n\nconst Container = styled(Box)({\n    width: \"430px\",\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    gap: \"8px\",\n    minWidth: 0\n});\n\nconst DropdownBox = styled(Box)({\n    flex: 2,\n    minWidth: 0\n});\n\nconst ArrowWrapper = styled(Box)({\n    paddingRight: \"10px\",\n    paddingLeft: \"10px\",\n    color: primary\n});\n\nconst WarningWrapper = styled(Box)({\n    width: \"24px\",\n    paddingTop: \"5px\",\n    color: yellow\n});\n\nconst DESTINATION_VALUES: DestinationType[] = Object.values(DestinationType);\n\ninterface JumpDestinationSelectionProps {\n    label: string,\n    stepID: bigint,\n    onDestinationChange: (destination: JumpDestination | undefined) => void,\n    getJumpDestination: () => JumpDestination | undefined\n}\n\ninterface JumpDestinationSelectionState {\n    destinationID: bigint,\n    isStep: boolean | null,\n    resumeSequence: boolean,\n    warningMessage: string,\n    evaluationWarningShown: boolean;\n}\n\nconst DEFAULT_JUMP_DESTINATION: JumpDestinationSelectionState = {\n    destinationID: BigInt(0),\n    isStep: null,\n    resumeSequence: false,\n    warningMessage: \"\",\n    evaluationWarningShown: false\n}\n\nexport class JumpDestinationSelection extends React.Component {\n    static contextType = SelectedStepContext;\n    context: React.ContextType<typeof SelectedStepContext>;\n\n    props: JumpDestinationSelectionProps;\n    state: JumpDestinationSelectionState = DEFAULT_JUMP_DESTINATION;\n    private readonly destinationTypeRef: React.RefObject<Select> = React.createRef<Select>();\n    private readonly destinationIdRef: React.RefObject<Select> = React.createRef<Select>();\n\n    componentDidMount() {\n        this.update();\n    }\n\n    override componentDidUpdate(prevProps: Readonly<JumpDestinationSelectionProps>) {\n        if (this.props.stepID !== prevProps.stepID) {\n            const jumpDestination: JumpDestination | undefined = this.props.getJumpDestination();\n            if (!jumpDestination) {\n                this.setState((prevState: JumpDestinationSelectionState) => ({\n                    ...DEFAULT_JUMP_DESTINATION, evaluationWarningShown: prevState.evaluationWarningShown\n                }), () => this.setDropdownsCurrentSelection());\n                return;\n            }\n\n            this.update();\n        }\n    }\n\n    public getJumpDestination(): JumpDestination | undefined {\n        if (!this.isValid() || !this.state.destinationID)\n            return undefined;\n\n        return {\n            ID: this.state.destinationID,\n            isStep: Boolean(this.state.isStep),\n            resumeSequence: this.state.resumeSequence\n        };\n    }\n\n    public update() {\n        // ask our parent to provide the current jump destination, otherwise use default\n        const jumpDestination: JumpDestination | undefined = this.props.getJumpDestination();\n        if (!jumpDestination)\n            return;\n\n        // update the jump destination if not equivalent\n        if (this.state.destinationID !== jumpDestination.ID ||\n            this.state.isStep !== jumpDestination.isStep ||\n            this.state.resumeSequence !== jumpDestination.resumeSequence){\n            this.setState({\n                destinationID: jumpDestination.ID,\n                isStep: jumpDestination.isStep,\n                resumeSequence: jumpDestination.resumeSequence\n            },\n            () => this.setDropdownsCurrentSelection());\n        }\n    }\n\n    public isValid(): boolean { return !this.state.warningMessage; }\n\n    private handleChangeDestinationType(index: number) {\n        const isContinue: boolean = index === DESTINATION_VALUES.indexOf(DestinationType.Continue);\n\n        const resumeSequence: boolean = index === DESTINATION_VALUES.indexOf(DestinationType.Sequence);\n        const isStep: boolean | null = isContinue ? null : !resumeSequence;\n\n        let evaluationWarningShown: boolean = this.state.evaluationWarningShown;\n        if (!isContinue && isCurrentSequenceInEvaluationMode() && !this.state.evaluationWarningShown) {\n            Prompt.alert(`${i18next.t(\"Branching is not recommended in evaluation mode\")}.`);\n            evaluationWarningShown = true;\n        }\n\n        this.setState({ destinationID: BigInt(0), isStep, resumeSequence, evaluationWarningShown }, () => {\n            this.props.onDestinationChange(this.getJumpDestination());\n            this.setDropdownsCurrentSelection();\n        });\n    }\n\n    private setDropdownsCurrentSelection() {\n        if (this.state.isStep === null) {\n            this.destinationTypeRef.current?.setDefault(DESTINATION_VALUES.indexOf(DestinationType.Continue));\n            return;\n        }\n\n        let listIndex: number = this.state.isStep ? this.getStepsList().indexOf(this.state.destinationID) :\n                                                    this.getSequenceListIndex(this.state.destinationID);\n        this.destinationIdRef.current?.setDefault(listIndex);\n        this.destinationTypeRef.current?.setDefault(DESTINATION_VALUES.indexOf(\n            this.state.isStep ? DestinationType.Step : DestinationType.Sequence));\n\n        let warningMessage: string = \"\";\n        if (listIndex === -1) {\n            if (this.state.destinationID !== BigInt(0))\n                warningMessage = `${i18next.t(\"This destination does not exist\")}. ` +\n                                 `${i18next.t(\"It may have been deleted\")}.`;\n            else if (!this.state.isStep && this.getSequencesList().length === 0)\n                warningMessage = `${i18next.t(\"You have no published sequence\")}.`;\n            else if (this.state.isStep && this.getStepsList().length === 0)\n                warningMessage = `${i18next.t(\"You have no step in this sequence\")}.`;\n        }\n        this.setState({warningMessage});\n    }\n\n    private getSequenceListIndex(sequenceID: bigint): number {\n        const sequences: bigint[] = this.getSequencesList();\n        let index: number = sequences.indexOf(sequenceID);\n        if (index !== -1)\n            return index;\n\n        // the selected version could be an older one. we always show the latest published version,\n        // since this is the one that will be executed during the jump\n        let childSequenceID: bigint = getChildSequenceID(sequenceID);\n        while (childSequenceID && sequences.indexOf(childSequenceID) === -1)\n            childSequenceID = getChildSequenceID(childSequenceID);\n\n        return sequences.indexOf(childSequenceID);\n    }\n\n    private getSequencesList(): bigint[] {\n        return getCurrentWorldSequencesList()\n            .map((id: bigint) => getParentSequenceID(id))\n            .filter((id: bigint) => id !== BigInt(0) && getParentSequenceID(getCurrentSequenceID()) !== id);\n    }\n\n    private getStepsList(): bigint[] {\n        return getStepsList().filter((id: bigint) => this.props.stepID !== id);\n    }\n\n    render() {\n        return (\n            <Wrapper>\n                <Container style={{width: \"300px\"}}>\n                    <Label style={{marginTop: \"0px\", width: \"24px\"}} dark large>\n                        <span style={{lineHeight: \"50px\"}}>{this.props.label}</span>\n                    </Label>\n                    <ArrowWrapper>\n                        <ArrowRight />\n                    </ArrowWrapper>\n                    <DropdownBox>\n                        <Select\n                            ref={this.destinationTypeRef}\n                            id={`${this.props.label.toLowerCase()}-destination-dropdown`}\n                            readonly={!this.context.canEditStep}\n                            options={Object.values(DestinationType).map(value => i18next.t(value))}\n                            default={0}\n                            onChange={(index: number) => this.handleChangeDestinationType(index)}\n                            styleOptionsWrapper={{ maxHeight: \"200px\", overflow: \"auto\" }}\n                        />\n                    </DropdownBox>\n                </Container>\n                {this.state.isStep !== null ?\n                    <Container>\n                        <ArrowWrapper>\n                            <ArrowRight />\n                        </ArrowWrapper>\n                        <DropdownBox>\n                            <Select\n                                ref={this.destinationIdRef}\n                                id={`${this.props.label.toLowerCase()}-options-dropdown`}\n                                readonly={!this.context.canEditStep}\n                                options={this.state.isStep ?\n                                    getStepsList().flatMap((id, index) => {\n                                        if (id === this.props.stepID)\n                                            return [];\n                                        return [`${index + 1}. ${getOriginalText(getStepTextID(id))}`];\n                                    }) :\n                                    this.getSequencesList().map(id => getSequenceTitle(id))}\n                                default={-1}\n                                onChange={(index: number) => {\n                                    const destinationID: bigint = this.state.isStep ?\n                                        this.getStepsList()[index] : this.getSequencesList()[index];\n                                        this.setState({ destinationID, warningMessage: \"\" },\n                                            () => this.props.onDestinationChange(this.getJumpDestination()));\n                                }}\n                                styleOptionsWrapper={{ maxHeight: \"200px\", overflow: \"auto\" }}\n                                placeholder={this.state.warningMessage ? `[${i18next.t(\"No destination\")}]` : \"\"}\n                                styleValueLabel={{color: this.state.warningMessage ? contrastRed : dark}}\n                            />\n                        </DropdownBox>\n                        <Tooltip title={this.state.warningMessage} placement={\"top-end\"}>\n                            <WarningWrapper style={{ visibility: this.state.warningMessage ? \"visible\" : \"hidden\"}}>\n                                <Warning />\n                            </WarningWrapper>\n                        </Tooltip>\n                        <Box style={{ visibility: this.state.isStep ? \"hidden\" : \"visible\", marginBottom: \"5px\"}}>\n                            <Label style={{marginTop: \"0px\"}} dark><span> {i18next.t(\"Resume\")} </span></Label>\n                            <Switch\n                                id={\"resume-sequence-switch\"}\n                                initialValue={this.state.resumeSequence}\n                                disabled={!this.context.canEditStep}\n                                onChange={(resumeSequence: boolean) =>\n                                    this.setState({ resumeSequence },\n                                        () => this.props.onDestinationChange(this.getJumpDestination()))\n                                }\n                            />\n                        </Box>\n                    </Container>\n                    :\n                    <Container />\n                }\n            </Wrapper>\n        )\n    }\n}\n", "import React from \"react\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {Delete} from \"@root/react-components/src/icons/Delete\";\nimport {darkenGrey, darkenRed, primary, red,} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {DESC_MAX_LENGTH} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/StepEditorDialog\";\nimport {Box, styled} from \"@mui/material\";\nimport {CircleAnswer} from \"@root/react-components/src/icons/CorrectAnswer\";\nimport {CheckAnswer} from \"@root/react-components/src/icons/EmptyAnswer\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {updateStepQuestionCorrectAnswer} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {SelectedStepContext} from \"@root/Frontend/Studio/Contexts/SelectedStepContext\";\nimport {\n    containsTextAnswer,\n    getStepQuestionAnswerTexts,\n    getStepQuestionCorrectAnswer,\n    getStepQuestionTextExplanationID,\n    getStepTextID,\n    removeAnswer,\n    updateAnswerOriginalText,\n    updateQuestionExplanationOriginalText,\n    updateStepOriginalText\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequence\";\nimport {getOriginalText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterText\";\nimport {STEP_QUESTION_ANSWERS_LIMIT} from \"@backend/Types/Step\";\nimport {Text} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {InputTextTranslation} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/InputTextTranslation\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"8px\",\n    paddingBottom: \"8px\"\n});\n\nconst CorrectAnswerWrapper = styled(Box)((props: {iscorrect: number, isdisabled: number}) => ({\n    display: \"flex\",\n    cursor: \"pointer\",\n    transition: \"0.2s\",\n    pointerEvents: props.isdisabled ? \"none\" : \"unset\",\n    \"& > svg\": {\n        stroke: `${props.iscorrect ? primary : darkenGrey} !important`,\n        transition: \"0.2s\",\n    },\n    \"&:hover > svg\": {\n        stroke: `${primary} !important`,\n        transition: \"0.2s\",\n    }\n}))\n\nconst DeleteIconWrapper = styled(Box)({\n    height: \"100%\",\n    color: red,\n    \"&:hover\": {\n        color: darkenRed,\n        cursor: \"pointer\"\n    },\n    \"& > svg\": {\n        height: \"18px\",\n        width: \"18px\"\n    }\n});\n\nconst AnswerWrapper = styled(Box)({\n    padding: \"0 5px\"\n})\n\nconst AnswerRow = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n\n    gap: \"0px 8px\"\n});\n\nconst InputContainer = styled(Box)({\n    display: \"flex\",\n    width: \"100%\",\n    alignItems: \"center\",\n});\n\nconst CreateNewAnswerContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"0px 28px 0px 38px\",\n    opacity: 0.75,\n    cursor: \"pointer\",\n    \"& div input\": { cursor: \"pointer !important\" }\n})\n\ninterface QuestionProps {\n    stepID: bigint;\n    stepIndex: number;\n    stepTitleTextID: bigint;\n    onStepModified: (isValid: boolean) => void;\n}\n\ninterface TextItem {\n    id: bigint;\n    originalText: string;\n}\n\ninterface QuestionState {\n    title: string;\n    explanation: TextItem;\n    answers: TextItem[];\n    correctAnswerIndex: number | null;\n    questionError: string;\n    explanationError: string;\n    answerErrors: string[];\n}\n\nexport class StepQuestionEditor extends React.Component implements InterfaceStepEditor {\n    static contextType = SelectedStepContext;\n\n    context: React.ContextType<typeof SelectedStepContext>;\n    props : QuestionProps;\n    state: QuestionState =  {\n        questionError: \"\",\n        explanationError: \"\",\n        answerErrors: [],\n        title: \"\",\n        answers: [{id: BigInt(0), originalText: \"\"}],\n        explanation: {id: BigInt(0), originalText: \"\"},\n        correctAnswerIndex: null\n    };\n\n    private answerInputsRef: React.RefObject<InputTextTranslation>[] = [];\n    private titleInputsRef: React.RefObject<InputTextTranslation> = React.createRef<InputTextTranslation>();\n    private explanationInputsRef: React.RefObject<InputTextTranslation> = React.createRef<InputTextTranslation>();\n    private readonly ANSWER_MAX_LENGTH: number = 48;\n\n    componentDidMount() { this.update(); }\n\n    componentDidUpdate(prevProps: Readonly<QuestionProps>) {\n        if (this.props.stepID !== prevProps.stepID ) {\n            this.update();\n            this.setState({ questionError: \"\", explanationError: \"\" });\n        }\n    }\n\n    public update() {\n        const stepID: bigint = this.props.stepID;\n        if (!stepID)\n            return;\n\n        // Reset the answers list\n        const textIDs: bigint[] = getStepQuestionAnswerTexts(stepID);\n        const answers: TextItem[] = textIDs.map((textID: bigint) => ({id: textID, originalText: getOriginalText(textID)}));\n        const answerErrors: string[] = new Array(textIDs.length).fill(\"\");\n        this.setState({ answers, answerErrors });\n\n        // check for the correct answer (if any)\n        const correctAnswer: string = getStepQuestionCorrectAnswer(stepID);\n        const correctAnswerIndex: number = correctAnswer ?\n            answers.findIndex((text: TextItem) => text.originalText === correctAnswer) : -1;\n        const correct : number | null = correctAnswerIndex === -1 ? null : correctAnswerIndex;\n        if (correct !== this.state.correctAnswerIndex)\n            this.setState({ correctAnswerIndex: correct });\n\n        // check for updated explanation (if any)\n        const explanationTextID: bigint = getStepQuestionTextExplanationID(stepID);\n        const explanation: TextItem = {id: explanationTextID, originalText: getOriginalText(explanationTextID)};\n        if (this.state.explanation !== explanation)\n            this.setState({ explanation });\n    }\n\n    public updateText(textID: bigint) {\n        if (!textID)\n            return;\n        const originalText: string = getOriginalText(textID);\n\n        // Update the title\n        if (textID === getStepTextID(this.props.stepID)) {\n\n            // check for updated title\n            if(this.state.title !== originalText) {\n                this.setState({ title: originalText });\n                return;\n            }\n            this.titleInputsRef.current?.updateText(textID);\n            return;\n        }\n\n        // Update the explanation\n        if (textID === getStepQuestionTextExplanationID(this.props.stepID)) {\n            if (this.state.explanation.id !== textID ||\n                this.state.explanation.originalText !== originalText) {\n                this.setState({ explanation: {originalText, id: textID}});\n                return;\n            }\n            this.explanationInputsRef.current?.updateText(textID);\n            return;\n        }\n\n        // Not our text answer\n        if (!containsTextAnswer(this.props.stepID, textID))\n            return;\n\n        this.setState((prevState: QuestionState) => {\n            const answers: TextItem[] = prevState.answers;\n\n            // Check if this ID already exists\n            const indexByID: number = answers.findIndex((answer: TextItem) => answer.id === textID);\n            if (indexByID !== -1) {\n                if (answers[indexByID].originalText === originalText)\n                    this.answerInputsRef[indexByID].current?.updateText(this.state.answers[indexByID].id);\n                else\n                    answers[indexByID] = { originalText, id: textID };\n                return {answers};\n            }\n\n            // The answer was just created\n            const indexByOriginalText: number = answers.findIndex(\n                (answer: TextItem) => answer.originalText === originalText);\n            if (indexByOriginalText === -1 || answers[indexByOriginalText].id)\n                return {answers};\n\n            answers[indexByOriginalText] = { originalText, id: textID };\n            return {answers};\n        });\n    }\n\n    private setTitle(title: string): void {\n        if (this.state.title !== title)\n            this.setState({ title }, () => this.props.onStepModified(this.validateData()));\n    }\n\n    private handleChangeExplanation(value: string) {\n        const explanation: TextItem = {...this.state.explanation};\n        explanation.originalText = value;\n        this.setState({explanation}, () => this.props.onStepModified(this.validateData()));\n    }\n\n    private handleConfirmExplanation() {\n        if (!this.state.explanationError)\n            updateQuestionExplanationOriginalText(this.props.stepID, this.state.explanation.originalText);\n    }\n\n    private setCorrectAnswer(correctAnswerIndex: number | null): void {\n        if (this.state.correctAnswerIndex === correctAnswerIndex)\n            return;\n\n        this.setState({ correctAnswerIndex }, () => {\n            const valid = this.validateData();\n            this.props.onStepModified(valid);\n            if (!valid)\n                return;\n\n            let correctAnswer: string = \"\";\n            if (correctAnswerIndex !== null)\n                correctAnswer = this.state.answers[correctAnswerIndex].originalText;\n            updateStepQuestionCorrectAnswer(this.props.stepID, correctAnswer);\n        });\n    }\n\n    public validateData(): boolean {\n        let questionError: string = \"\";\n        let explanationError: string = \"\";\n    \n        if (!this.state.title.trim())\n            questionError = i18next.t(\"The question is required\");\n    \n        if (this.state.title.length > DESC_MAX_LENGTH)\n            questionError = `${i18next.t(\"The question is too long\")}: ${this.state.title.length}/${DESC_MAX_LENGTH}`;\n\n        const explanation: string = this.state.explanation.originalText;\n        if (this.state.correctAnswerIndex !== null && explanation.length > DESC_MAX_LENGTH)\n            explanationError =\n                `${i18next.t(\"The explanation is too long\")}: ${explanation.length}/${DESC_MAX_LENGTH}`;\n\n        const answerErrors: string[] = this.validateAllAnswers();\n        this.setState({ questionError, explanationError, answerErrors });\n        return !questionError && !explanationError && !answerErrors.some((error: string) => error.length);\n    }\n\n    private validateAllAnswers(): string[] {\n        const answerErrors: string[] = [];\n        for (let i: number = 0; i < this.state.answers.length; ++i)\n            answerErrors[i] = this.validateAnswer(i);\n        return answerErrors;\n    }\n\n    private validateAnswer(index: number): string {\n        if (index >= this.state.answers.length)\n            return \"Invalid answer\";\n\n        let errorMessage: string = \"\";\n        const text: string = this.state.answers[index].originalText;\n        const otherValues: TextItem[] = this.state.answers.filter((answer: TextItem, i: number) => index !== i);\n\n        if (!text.length)\n            errorMessage = i18next.t(\"The answer cannot be empty\");\n        else if (text.length > this.ANSWER_MAX_LENGTH)\n            errorMessage = `${i18next.t(\"This answer is too long\")}: ${text.length}/${this.ANSWER_MAX_LENGTH}`;\n        else if (otherValues.findIndex((answer: TextItem) => answer.originalText === text) !== -1)\n            errorMessage = i18next.t(\"This response is duplicated\");\n\n        return errorMessage;\n    }\n\n\n    private handleChangeAnswer(text: string, index: number) {\n        if (index >= this.state.answers.length)\n            return;\n\n        const answers: TextItem[] = this.state.answers.map((answer: TextItem) => ({ ...answer }));\n        answers[index].originalText = text;\n        this.setState({answers}, () => this.props.onStepModified(this.validateData()));\n    }\n\n    private handleConfirmAnswer(index: number) {\n        if (index >= this.state.answers.length)\n            return;\n\n        const answerErrors: string[] = [...this.state.answerErrors];\n        answerErrors[index] = this.validateAnswer(index);\n        this.setState({answerErrors});\n        if (answerErrors[index]) {\n            this.props.onStepModified(false);\n            return;\n        }\n        updateAnswerOriginalText(this.props.stepID, this.state.answers[index].originalText, index);\n        if (index === this.state.correctAnswerIndex)\n            updateStepQuestionCorrectAnswer(this.props.stepID, this.state.answers[index].originalText);\n    }\n\n    private handleDeleteAnswer(index: number) {\n        if (this.state.answers.length === 1) {\n            this.setState({answerErrors: [i18next.t(\"At least one answer is required\")]});\n            return;\n        }\n\n        const textID: bigint = this.state.answers[index].id;\n        using text: Text|null = textID ? App.getInstance().getEngine().Cloud.getInstance().getTextByID(textID) : null;\n        if (!text || text.isGeneratingTranslations())\n            return;\n\n        const answerErrors: string[] = this.state.answerErrors.filter((error, i: number) => index !== i);\n        const answers: TextItem[] = this.state.answers.filter((answer, i: number) => index !== i);\n        this.setState({ answers, answerErrors }, () => {\n            if (index < getStepQuestionAnswerTexts(this.props.stepID).length)\n                removeAnswer(this.props.stepID, index);\n\n            if (this.state.correctAnswerIndex && index < this.state.correctAnswerIndex)\n                this.setCorrectAnswer(this.state.correctAnswerIndex - 1);\n            else if (index === this.state.correctAnswerIndex)\n                this.setCorrectAnswer(null);\n\n            this.props.onStepModified(this.validateData());\n        });\n    }\n\n    private handleAddNewAnswer() {\n        if (!this.canAddAnswer())\n            return;\n\n        const newText: TextItem = {id: BigInt(0), originalText: \"\"};\n        this.setState((prevState: QuestionState) => ({\n            answers: [...prevState.answers, newText], answerErrors: [...prevState.answerErrors, \"\"]}), () => {\n            this.answerInputsRef[this.state.answers.length - 1].current?.focus();\n            this.props.onStepModified(false);\n        });\n    }\n\n    public saveNewStep(stepID: bigint): boolean {\n        if (!this.validateData())\n            return false;\n\n        const correctAnswer: string = this.state.correctAnswerIndex === null ?\n            \"\" : this.state.answers[this.state.correctAnswerIndex].originalText;\n\n        for (let i: number = 0; i < this.state.answers.length; ++i)\n            updateAnswerOriginalText(stepID, this.state.answers[i].originalText, i);\n\n        updateQuestionExplanationOriginalText(stepID, this.state.explanation.originalText);\n        updateStepQuestionCorrectAnswer(stepID, correctAnswer);\n        updateStepOriginalText(stepID, this.state.title);\n\n        return true;\n    }\n\n    private onConfirmTitle() {\n        if (!this.props.stepID)\n            return;\n        if (this.props.stepTitleTextID && !this.state.questionError)\n            updateStepOriginalText(this.props.stepID, this.state.title);\n    }\n\n    private canAddAnswer(): boolean {\n        return this.context.canEditStep &&\n               this.state.answers.length < STEP_QUESTION_ANSWERS_LIMIT &&\n               this.state.answerErrors.every((error: string): boolean => error.length === 0) &&\n               this.state.answers.every((answer: TextItem) => answer.originalText.length);\n    }\n\n    render() {\n        this.answerInputsRef = [];\n\n        return (\n            <Container>\n                <Box>\n                    <InputTextTranslation\n                        id={\"step-question-textArea\"}\n                        ref={this.titleInputsRef}\n                        label={i18next.t(\"Question\")}\n                        translationLanguage={this.context.translationLanguage}\n                        sourceLanguage={this.context.defaultLanguage}\n                        readonly={!this.context.canEditStep}\n                        textID={this.props.stepTitleTextID}\n                        originalText={this.state.title}\n                        rows={3}\n                        required\n                        placeholder={`${i18next.t(\"What would you like to ask\")} ?`}\n                        errorMessage={this.state.questionError}\n                        onChangeValue={(text: string) => this.setTitle(text)}\n                        onConfirmValue={() => this.onConfirmTitle()}\n                        counter={DESC_MAX_LENGTH}\n                    />\n                </Box>\n                <Box>\n                    {this.state.answers.map((answer: TextItem, index: number) => {\n                        this.answerInputsRef[index] = React.createRef<InputTextTranslation>();\n                        return (\n                            <AnswerWrapper key={index} id={`AnswerRow${index}`}>\n                                <AnswerRow>\n                                    <Tooltip\n                                        title={i18next.t(\"Select as correct answer\")}\n                                        placement=\"left-start\"\n                                        enterDelay={500}\n                                        enterNextDelay={500}\n                                    >\n                                        <CorrectAnswerWrapper\n                                            isdisabled={Number(!this.context.canEditStep)}\n                                            iscorrect={Number(this.state.correctAnswerIndex === index)}\n                                            onClick={() => this.setCorrectAnswer(\n                                                this.state.correctAnswerIndex === index ? null : index)\n                                            }\n                                        >\n                                            <CircleAnswer />\n                                            {this.state.correctAnswerIndex === index && <CheckAnswer />}\n                                        </CorrectAnswerWrapper>\n                                    </Tooltip>\n\n                                    <InputContainer>\n                                        <Box flex={1}>\n                                            <InputTextTranslation\n                                                id={\"step-question-answer-input\"}\n                                                onTabDown={() => this.handleAddNewAnswer()}\n                                                ref={this.answerInputsRef[index]}\n                                                label={`${i18next.t(\"Answer\")} ${index + 1}/6`}\n                                                sourceLanguage={this.context.defaultLanguage}\n                                                translationLanguage={this.context.translationLanguage}\n                                                readonly={!this.context.canEditStep}\n                                                textID={answer.id}\n                                                originalText={answer.originalText}\n                                                required\n                                                errorMessage={this.state.answerErrors[index]}\n                                                onChangeValue={(text: string) => this.handleChangeAnswer(text, index)}\n                                                onConfirmValue={() => this.handleConfirmAnswer(index)}\n                                            />\n                                        </Box>\n                                    </InputContainer>\n\n                                    {Boolean(this.context.canEditStep) &&\n                                        <DeleteIconWrapper\n                                            className={\"deleteIcon\"}\n                                            onClick={() => this.handleDeleteAnswer(index)}\n                                        >\n                                            <Delete />\n                                        </DeleteIconWrapper>\n                                    }\n                                </AnswerRow>\n                            </AnswerWrapper>\n                        )}\n                    )}\n                    {this.canAddAnswer() &&\n                        <CreateNewAnswerContainer\n                            id=\"step-question-add-new-answer\"\n                            onClick={() => this.handleAddNewAnswer()}>\n                            <InputText\n                                label= {`${i18next.t(\"Create answer\")}`}\n                                dark\n                                readOnly\n                                placeholder={`+ ${i18next.t(\"Click to create a new answer\")}`}\n                            />\n                        </CreateNewAnswerContainer>\n                    }\n                </Box>\n                {this.state.correctAnswerIndex !== null &&\n                    <Box>\n                        <InputTextTranslation\n                            id={\"step-question-explanation-input\"}\n                            ref={this.explanationInputsRef}\n                            label={`${i18next.t(\"Explanation\")} (${i18next.t(\"Optional\")})`}\n                            sourceLanguage={this.context.defaultLanguage}\n                            translationLanguage={this.context.translationLanguage}\n                            readonly={!this.context.canEditStep}\n                            textID={this.state.explanation.id}\n                            originalText={this.state.explanation.originalText}\n                            rows={2}\n                            required={false}\n                            placeholder={i18next.t(\"Explanation displayed when an answer is selected\")}\n                            errorMessage={this.state.explanationError}\n                            onChangeValue={(text: string) => this.handleChangeExplanation(text)}\n                            onConfirmValue={() => this.handleConfirmExplanation()}\n                        />\n                    </Box>\n                }\n            </Container>\n        )\n    }\n}\n", "import React from \"react\";\nimport i18next from \"i18next\";\nimport {DESC_MAX_LENGTH, ErrorLabel} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/StepEditorDialog\";\nimport {SelectedStepContext} from \"@root/Frontend/Studio/Contexts/SelectedStepContext\";\nimport {InputTextTranslation} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/InputTextTranslation\";\nimport {Box, Input, styled} from \"@mui/material\";\nimport {isProductionEnvironment, SUPPORTED_IMAGE_EXTENSIONS} from \"@utils/utils\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {\n    MainModule,\n    Sequence,\n    SpanConstByte,\n    Step,\n    StepPhoto,\n    Text,\n    uvec4\n} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Delete} from \"@root/react-components/src/icons/Delete\";\nimport {Rename} from \"@root/react-components/src/icons/Rename\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {getStepType} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {isEqual} from \"lodash\";\nimport {PercentCrop, PixelCrop, ReactCrop} from 'react-image-crop'\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport 'react-image-crop/dist/ReactCrop.css';\nimport {getImageResolution} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {DropBox} from \"@root/Frontend/Studio/Components/MediaPreview\";\nimport {getCurrentWorldID, getOwnerID, getWorldOwnerType} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {createNewText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterCloud\";\n\nconst MediaWrapper = styled(Box)({\n    height: \"320px\",\n    marginTop: \"10px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n});\n\nconst PreviewWrapper = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n});\n\nconst PreviewHeader = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n});\n\nconst PreviewBody = styled(Box)((props: {size: number}) => ({\n    position: \"relative\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    display: \"flex\",\n    width: `${props.size}px`,\n    height: `${props.size}px`,\n    margin: \"auto\",\n}));\n\nconst PreviewText = styled(Box)({\n    fontSize: \"12px\",\n    paddingBottom: \"12px\"\n});\n\nconst DropBoxSquare = styled(DropBox)((props: {size: number}) => ({\n    width: `${props.size}px`,\n    height: `${props.size}px`,\n    margin: \"auto\"\n}));\n\nconst OptionButton = styled(Box)({\n    cursor: 'pointer',\n    marginLeft: '12px',\n    \"& svg\": {\n        height: \"24px\",\n        width: \"24px\"\n    }\n});\n\nconst defaultCrop: PercentCrop = { x: 0, y: 0, width: 40, height: 40, unit: \"%\" };\n\ninterface PhotoProps {\n    stepID: bigint;\n    stepIndex: number;\n    stepTitleTextID: bigint;\n    onStepModified: (isValid: boolean) => void;\n}\n\ninterface PhotoState {\n    title: string;\n    errorDescription: string;\n    referenceImagePath: string;\n    referenceImageData: string;\n    errorReferenceImage: string;\n    crop: PercentCrop;\n}\n\nexport class StepPhotoEditor extends React.Component implements InterfaceStepEditor {\n    static contextType = SelectedStepContext;\n    private titleInputsRef: React.RefObject<InputTextTranslation> = React.createRef<InputTextTranslation>();\n    private readonly inputImageRef: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n\n    private static readonly REF_IMG_SIZE: number = 290;\n\n    context: React.ContextType<typeof SelectedStepContext>;\n    props: PhotoProps;\n    state: PhotoState = {\n        title: \"\",\n        errorDescription: \"\",\n        referenceImagePath: \"\",\n        referenceImageData: \"\",\n        errorReferenceImage: \"\",\n        crop: defaultCrop\n    };\n\n    componentDidMount() {\n        this.update();\n    }\n\n    componentDidUpdate(prevProps: Readonly<PhotoProps>) {\n        if (this.props.stepID !== prevProps.stepID) {\n            this.update();\n            this.setState({errorReferenceImage: \"\", errorDescription: \"\"});\n        }\n    }\n\n    componentWillUnmount() {\n        URL.revokeObjectURL(this.state.referenceImageData);\n    }\n\n    public update(): void {\n        using stepPhoto: StepPhoto | null = this.getStepPhoto(this.props.stepID);\n        if (!stepPhoto)\n            return;\n\n        const referenceImagePath: string = stepPhoto.getReferenceImageLocalPath();\n        if (this.state.referenceImagePath !== referenceImagePath)\n            this.setState({ referenceImagePath }, () => this.updateReferenceImageData());\n\n        if (!referenceImagePath)\n            return;\n\n        // convert pixel bounds into percentage\n        const bounds: uvec4 = stepPhoto.getReferenceImageBounds();\n        const [width, height]: [number, number] = getImageResolution(referenceImagePath);\n        const crop: PercentCrop = {\n            x: bounds.x / width * 100,\n            y: bounds.y / height * 100,\n            width: bounds.w / width * 100,\n            height: bounds.h / height * 100,\n            unit: \"%\"\n        };\n\n        if (!isEqual(this.state.crop, crop))\n            this.setState({ crop });\n    }\n\n    public updateText(textID: bigint) {\n        using stepPhoto: StepPhoto | null = this.getStepPhoto(this.props.stepID);\n        if (!textID || !stepPhoto)\n            return;\n\n        using text: Text | null = stepPhoto.getText();\n        if (!text || textID !== text.getID())\n            return;\n\n        // check for updated title\n        const title: string = text.getOriginalText();\n        if (this.state.title !== title)\n            this.setState({ title });\n        this.titleInputsRef.current?.updateText(textID);\n    }\n\n    private setTitle(title: string): void {\n        if (this.state.title !== title)\n            this.setState({ title }, () => this.props.onStepModified(this.validateData()));\n    }\n\n    public validateData(): boolean {\n        let errorDescription: string = \"\";\n\n        if (!this.state.title.trim())\n            errorDescription = i18next.t(\"The description is required\");\n        else if(this.state.title.length > DESC_MAX_LENGTH)\n            errorDescription =\n                `${i18next.t(\"The description is too long\")}: ${this.state.title.length}/${DESC_MAX_LENGTH}`;\n\n        this.setState({ errorDescription });\n\n        // If there's no error, just return true.\n        return !errorDescription.length;\n    }\n\n    public async saveNewStep(stepID: bigint): Promise<boolean> {\n        if(!this.validateData())\n            return false;\n\n        using stepPhoto: StepPhoto | null = this.getStepPhoto(stepID);\n        if (!stepPhoto)\n            return false;\n\n        stepPhoto.saveReferenceImage(this.state.referenceImagePath);\n        stepPhoto.saveReferenceImageBounds(this.convertCropToBounds(this.state.crop));\n\n        // use the world owner to create the Texts\n        const worldID: bigint = getCurrentWorldID();\n        const ownerID: bigint = getOwnerID(worldID);\n        const ownerType: OwnerType = getWorldOwnerType(worldID);\n\n        using text: Text | null = await createNewText(ownerID, ownerType);\n        if (!text)\n            return false;\n\n        text.saveAudioEnabled(true);\n        text.saveOriginalText(this.state.title);\n        stepPhoto.saveText(text);\n        return true;\n    }\n\n    private getStepPhoto(stepID: bigint): StepPhoto | null {\n        if (!stepID)\n            return null;\n\n        using sequence: Sequence | null = App.getInstance().getSequence(getCurrentSequenceID());\n        const step: Step | null = sequence?.getStepByID(stepID) ?? null;\n        return step && getStepType(stepID) === StepType.PHOTO ? step as StepPhoto : null;\n    }\n\n    private onConfirmTitle() {\n        using stepPhoto: StepPhoto | null = this.getStepPhoto(this.props.stepID);\n        using text: Text | null = stepPhoto?.getText() ?? null;\n        if (text && !this.state.errorDescription)\n            text.saveOriginalText(this.state.title);\n    }\n\n    private saveReferenceImagePath(referenceImagePath: string): void {\n        if (this.state.referenceImagePath === referenceImagePath)\n            return;\n\n        this.setState({\n            referenceImagePath,\n            crop: defaultCrop,\n            errorReferenceImage: \"\",\n        }, () => {\n            this.updateReferenceImageData();\n\n            using stepPhoto: StepPhoto | null = this.getStepPhoto(this.props.stepID);\n            stepPhoto?.saveReferenceImageBounds(this.convertCropToBounds(this.state.crop));\n            stepPhoto?.saveReferenceImage(referenceImagePath);\n            this.props.onStepModified(this.validateData());\n        });\n    }\n\n    private updateReferenceImageData() {\n        URL.revokeObjectURL(this.state.referenceImageData);\n\n        this.setState({\n            referenceImageData: this.state.referenceImagePath ?\n                AdapterUtils.createBlobUrlFromFilePath(this.state.referenceImagePath) : \"\"\n        });\n    }\n\n    private convertCropToBounds(crop: PercentCrop): uvec4 {\n        // Convert percentage crop into pixel bounds with original image size\n        const [width, height]: [number, number] = this.state.referenceImagePath ?\n            getImageResolution(this.state.referenceImagePath) : [0, 0];\n\n        return {\n            x: crop.x * width / 100,\n            y: crop.y * height / 100,\n            w: crop.width * width / 100,\n            h: crop.height * height / 100\n        };\n    }\n\n    private async handleImageFileUpload(event: React.ChangeEvent<HTMLInputElement>) {\n        const imageFile: File | undefined = event.target.files?.[0];\n        if (!imageFile)\n            return;\n\n        const fileExtension: string = imageFile.name.split(\".\").pop() ?? \"\";\n        if (!SUPPORTED_IMAGE_EXTENSIONS.includes(fileExtension.toLowerCase())) {\n            this.setState({errorReferenceImage: i18next.t(\"Unsupported file format\") + \" \\\"\" + fileExtension + \"\\\"\"});\n            return;\n        }\n\n        const engine: MainModule = App.getInstance().getEngine();\n        const imageData: Uint8Array = new Uint8Array(await imageFile.arrayBuffer());\n        const imageDataPtr: number = engine._malloc(imageData.byteLength);\n        engine.HEAPU8.set(imageData, imageDataPtr);\n\n        const dataSpan: SpanConstByte = { data: imageDataPtr, size: imageData.byteLength };\n        const path: string =\n            engine.Core.getInstance().getFacadeOS().getTempPath() + \"/\" + UtilsShared.generateRandomString(10) + \".png\";\n        engine.writeSquareImageToFilePNG(dataSpan, path);\n        engine._free(imageDataPtr);\n\n        const [width, height]: [number, number] = getImageResolution(path);\n        if (Math.max(width, height) > 1440) {\n            this.setState({\n                errorReferenceImage: `${i18next.t(\"Could not load image\")} \n                    ${i18next.t(\"because it is over the max supported resolution of 1440 x 1440\")}.`\n            });\n            return;\n        }\n\n        this.saveReferenceImagePath(path);\n    }\n\n    render() {\n        return (\n            <Box style={{display: \"flex\", flexDirection: \"column\"}}>\n                <InputTextTranslation\n                    id={\"step-photo-textArea\"}\n                    ref={this.titleInputsRef}\n                    label={i18next.t(\"Description\")}\n                    translationLanguage={this.context.translationLanguage}\n                    sourceLanguage={this.context.defaultLanguage}\n                    readonly={!this.context.canEditStep}\n                    textID={this.props.stepTitleTextID}\n                    originalText={this.state.title}\n                    rows={3}\n                    required\n                    placeholder={i18next.t(\"Explain what should be in the picture\")}\n                    errorMessage={this.state.errorDescription}\n                    onChangeValue={(text: string) => this.setTitle(text)}\n                    onConfirmValue={() => this.onConfirmTitle()}\n                    counter={DESC_MAX_LENGTH}\n                />\n\n                {/* TODO(@olicool) remove feature flag when image validation feature is complete */}\n                {!isProductionEnvironment() &&\n                    <MediaWrapper>\n                        <Input\n                            type=\"file\"\n                            inputRef={this.inputImageRef}\n                            style={{display: \"none\"}}\n                            id=\"reference-image-file\"\n                            onChange={(e: React.ChangeEvent<HTMLInputElement>) => this.handleImageFileUpload(e)}\n                        />\n                        {this.state.referenceImagePath ?\n                            <PreviewWrapper>\n                                <PreviewHeader>\n                                    <PreviewText>\n                                        {i18next.t(\"Select a specific region for the AI to analyse\")}\n                                    </PreviewText>\n                                    {this.context.canEditStep &&\n                                        <Box style={{display: \"flex\"}}>\n                                            <OptionButton onClick={() => this.saveReferenceImagePath(\"\")}>\n                                                <Delete />\n                                            </OptionButton>\n                                            <OptionButton onClick={() => this.inputImageRef.current?.click()}>\n                                                <Rename />\n                                            </OptionButton>\n                                        </Box>}\n                                </PreviewHeader>\n                                <PreviewBody size={StepPhotoEditor.REF_IMG_SIZE}>\n                                    <ReactCrop\n                                        crop={this.state.crop}\n                                        keepSelection\n                                        disabled={!this.context.canEditStep}\n                                        minWidth={StepPhotoEditor.REF_IMG_SIZE * defaultCrop.width / 200}\n                                        minHeight={StepPhotoEditor.REF_IMG_SIZE * defaultCrop.height / 200}\n                                        onChange={(_: PixelCrop, crop: PercentCrop) => this.setState({ crop })}\n                                        onComplete={(_: PixelCrop, crop: PercentCrop) => {\n                                            using stepPhoto: StepPhoto | null = this.getStepPhoto(this.props.stepID);\n                                            stepPhoto?.saveReferenceImageBounds(this.convertCropToBounds(crop));\n                                        }}>\n                                        <img\n                                            src={this.state.referenceImageData}\n                                            style={{width: \"100%\"}}\n                                            alt=\"StepPhoto Ref Image\"/>\n                                    </ReactCrop>\n                                </PreviewBody>\n                            </PreviewWrapper> :\n                            <PreviewWrapper>\n                                <PreviewText>\n                                    {i18next.t(\"Select an image for AI validation (optional)\")}\n                                </PreviewText>\n                                <DropBoxSquare\n                                    onClick={() => this.context.canEditStep && this.inputImageRef.current?.click()}\n                                    size={StepPhotoEditor.REF_IMG_SIZE}>\n                                    <Button disabled={!this.context.canEditStep}>\n                                        {i18next.t(\"Click to add an image\")}\n                                    </Button>\n                                </DropBoxSquare>\n                            </PreviewWrapper>\n                        }\n                    </MediaWrapper>\n                }\n                <ErrorLabel>{this.state.errorReferenceImage}</ErrorLabel>\n            </Box>\n        );\n    }\n}\n", "import e, { PureComponent as t, createRef as n } from \"react\";\n//#region src/utils.ts\nvar r = {\n\tx: 0,\n\ty: 0,\n\twidth: 0,\n\theight: 0,\n\tunit: \"px\"\n}, i = (e, t, n) => Math.min(Math.max(e, t), n), a = (...e) => e.filter((e) => e && typeof e == \"string\").join(\" \"), o = (e, t) => e === t || e.width === t.width && e.height === t.height && e.x === t.x && e.y === t.y && e.unit === t.unit;\nfunction s(e, t, n, r) {\n\tlet i = u(e, n, r);\n\treturn e.width && (i.height = i.width / t), e.height && (i.width = i.height * t), i.y + i.height > r && (i.height = r - i.y, i.width = i.height * t), i.x + i.width > n && (i.width = n - i.x, i.height = i.width / t), e.unit === \"%\" ? l(i, n, r) : i;\n}\nfunction c(e, t, n) {\n\tlet r = u(e, t, n);\n\treturn r.x = (t - r.width) / 2, r.y = (n - r.height) / 2, e.unit === \"%\" ? l(r, t, n) : r;\n}\nfunction l(e, t, n) {\n\treturn e.unit === \"%\" ? {\n\t\t...r,\n\t\t...e,\n\t\tunit: \"%\"\n\t} : {\n\t\tunit: \"%\",\n\t\tx: e.x ? e.x / t * 100 : 0,\n\t\ty: e.y ? e.y / n * 100 : 0,\n\t\twidth: e.width ? e.width / t * 100 : 0,\n\t\theight: e.height ? e.height / n * 100 : 0\n\t};\n}\nfunction u(e, t, n) {\n\treturn !e.unit || e.unit === \"px\" ? {\n\t\t...r,\n\t\t...e,\n\t\tunit: \"px\"\n\t} : {\n\t\tunit: \"px\",\n\t\tx: e.x ? e.x * t / 100 : 0,\n\t\ty: e.y ? e.y * n / 100 : 0,\n\t\twidth: e.width ? e.width * t / 100 : 0,\n\t\theight: e.height ? e.height * n / 100 : 0\n\t};\n}\nfunction d(e, t, n, r, i, a = 0, o = 0, s = r, c = i) {\n\tlet l = { ...e }, u = Math.min(a, r), d = Math.min(o, i), f = Math.min(s, r), p = Math.min(c, i);\n\tt && (t > 1 ? (u = o ? o * t : u, d = u / t, f = s * t) : (d = a ? a / t : d, u = d * t, p = c / t)), l.y < 0 && (l.height = Math.max(l.height + l.y, d), l.y = 0), l.x < 0 && (l.width = Math.max(l.width + l.x, u), l.x = 0);\n\tlet m = r - (l.x + l.width);\n\tm < 0 && (l.x = Math.min(l.x, r - u), l.width += m);\n\tlet h = i - (l.y + l.height);\n\tif (h < 0 && (l.y = Math.min(l.y, i - d), l.height += h), l.width < u && ((n === \"sw\" || n == \"nw\") && (l.x -= u - l.width), l.width = u), l.height < d && ((n === \"nw\" || n == \"ne\") && (l.y -= d - l.height), l.height = d), l.width > f && ((n === \"sw\" || n == \"nw\") && (l.x -= f - l.width), l.width = f), l.height > p && ((n === \"nw\" || n == \"ne\") && (l.y -= p - l.height), l.height = p), t) {\n\t\tlet e = l.width / l.height;\n\t\tif (e < t) {\n\t\t\tlet e = Math.max(l.width / t, d);\n\t\t\t(n === \"nw\" || n == \"ne\") && (l.y -= e - l.height), l.height = e;\n\t\t} else if (e > t) {\n\t\t\tlet e = Math.max(l.height * t, u);\n\t\t\t(n === \"sw\" || n == \"nw\") && (l.x -= e - l.width), l.width = e;\n\t\t}\n\t}\n\treturn l;\n}\nfunction f(e, t, n, r) {\n\tlet i = { ...e };\n\treturn t === \"ArrowLeft\" ? r === \"nw\" ? (i.x -= n, i.y -= n, i.width += n, i.height += n) : r === \"w\" ? (i.x -= n, i.width += n) : r === \"sw\" ? (i.x -= n, i.width += n, i.height += n) : r === \"ne\" ? (i.y += n, i.width -= n, i.height -= n) : r === \"e\" ? i.width -= n : r === \"se\" && (i.width -= n, i.height -= n) : t === \"ArrowRight\" && (r === \"nw\" ? (i.x += n, i.y += n, i.width -= n, i.height -= n) : r === \"w\" ? (i.x += n, i.width -= n) : r === \"sw\" ? (i.x += n, i.width -= n, i.height -= n) : r === \"ne\" ? (i.y -= n, i.width += n, i.height += n) : r === \"e\" ? i.width += n : r === \"se\" && (i.width += n, i.height += n)), t === \"ArrowUp\" ? r === \"nw\" ? (i.x -= n, i.y -= n, i.width += n, i.height += n) : r === \"n\" ? (i.y -= n, i.height += n) : r === \"ne\" ? (i.y -= n, i.width += n, i.height += n) : r === \"sw\" ? (i.x += n, i.width -= n, i.height -= n) : r === \"s\" ? i.height -= n : r === \"se\" && (i.width -= n, i.height -= n) : t === \"ArrowDown\" && (r === \"nw\" ? (i.x += n, i.y += n, i.width -= n, i.height -= n) : r === \"n\" ? (i.y += n, i.height -= n) : r === \"ne\" ? (i.y += n, i.width -= n, i.height -= n) : r === \"sw\" ? (i.x -= n, i.width += n, i.height += n) : r === \"s\" ? i.height += n : r === \"se\" && (i.width += n, i.height += n)), i;\n}\n//#endregion\n//#region src/ReactCrop.tsx\nvar p = {\n\tcapture: !0,\n\tpassive: !1\n}, m = 0, h = class s extends t {\n\tstatic xOrds = [\"e\", \"w\"];\n\tstatic yOrds = [\"n\", \"s\"];\n\tstatic xyOrds = [\n\t\t\"nw\",\n\t\t\"ne\",\n\t\t\"se\",\n\t\t\"sw\"\n\t];\n\tstatic nudgeStep = 1;\n\tstatic nudgeStepMedium = 10;\n\tstatic nudgeStepLarge = 100;\n\tstatic defaultProps = { ariaLabels: {\n\t\tcropArea: \"Use the arrow keys to move the crop selection area\",\n\t\tnwDragHandle: \"Use the arrow keys to move the north west drag handle to change the crop selection area\",\n\t\tnDragHandle: \"Use the up and down arrow keys to move the north drag handle to change the crop selection area\",\n\t\tneDragHandle: \"Use the arrow keys to move the north east drag handle to change the crop selection area\",\n\t\teDragHandle: \"Use the up and down arrow keys to move the east drag handle to change the crop selection area\",\n\t\tseDragHandle: \"Use the arrow keys to move the south east drag handle to change the crop selection area\",\n\t\tsDragHandle: \"Use the up and down arrow keys to move the south drag handle to change the crop selection area\",\n\t\tswDragHandle: \"Use the arrow keys to move the south west drag handle to change the crop selection area\",\n\t\twDragHandle: \"Use the up and down arrow keys to move the west drag handle to change the crop selection area\"\n\t} };\n\tget document() {\n\t\treturn document;\n\t}\n\tdocMoveBound = !1;\n\tmouseDownOnCrop = !1;\n\tdragStarted = !1;\n\tevData = {\n\t\tstartClientX: 0,\n\t\tstartClientY: 0,\n\t\tstartCropX: 0,\n\t\tstartCropY: 0,\n\t\tclientX: 0,\n\t\tclientY: 0,\n\t\tisResize: !0\n\t};\n\tcomponentRef = n();\n\tmediaRef = n();\n\tresizeObserver;\n\tinitChangeCalled = !1;\n\tinstanceId = `rc-${m++}`;\n\tstate = {\n\t\tcropIsActive: !1,\n\t\tnewCropIsBeingDrawn: !1\n\t};\n\tgetBox() {\n\t\tlet e = this.mediaRef.current;\n\t\tif (!e) return {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t\tlet { x: t, y: n, width: r, height: i } = e.getBoundingClientRect();\n\t\treturn {\n\t\t\tx: t,\n\t\t\ty: n,\n\t\t\twidth: r,\n\t\t\theight: i\n\t\t};\n\t}\n\tcomponentDidUpdate(e) {\n\t\tlet { crop: t, onComplete: n } = this.props;\n\t\tif (n && !e.crop && t) {\n\t\t\tlet { width: e, height: r } = this.getBox();\n\t\t\te && r && n(u(t, e, r), l(t, e, r));\n\t\t}\n\t}\n\tcomponentWillUnmount() {\n\t\tthis.resizeObserver && this.resizeObserver.disconnect(), this.unbindDocMove();\n\t}\n\tbindDocMove() {\n\t\tthis.docMoveBound ||= (this.document.addEventListener(\"pointermove\", this.onDocPointerMove, p), this.document.addEventListener(\"pointerup\", this.onDocPointerDone, p), this.document.addEventListener(\"pointercancel\", this.onDocPointerDone, p), !0);\n\t}\n\tunbindDocMove() {\n\t\tthis.docMoveBound &&= (this.document.removeEventListener(\"pointermove\", this.onDocPointerMove, p), this.document.removeEventListener(\"pointerup\", this.onDocPointerDone, p), this.document.removeEventListener(\"pointercancel\", this.onDocPointerDone, p), !1);\n\t}\n\tonCropPointerDown = (e) => {\n\t\tlet { crop: t, disabled: n } = this.props, r = this.getBox();\n\t\tif (!t) return;\n\t\tlet i = u(t, r.width, r.height);\n\t\tif (n) return;\n\t\te.cancelable && e.preventDefault(), this.bindDocMove(), this.componentRef.current.focus({ preventScroll: !0 });\n\t\tlet a = e.target.dataset.ord, o = !!a, s = e.clientX, c = e.clientY, l = i.x, d = i.y;\n\t\tif (a) {\n\t\t\tlet t = e.clientX - r.x, n = e.clientY - r.y, o = 0, u = 0;\n\t\t\ta === \"ne\" || a == \"e\" ? (o = t - (i.x + i.width), u = n - i.y, l = i.x, d = i.y + i.height) : a === \"se\" || a === \"s\" ? (o = t - (i.x + i.width), u = n - (i.y + i.height), l = i.x, d = i.y) : a === \"sw\" || a == \"w\" ? (o = t - i.x, u = n - (i.y + i.height), l = i.x + i.width, d = i.y) : (a === \"nw\" || a == \"n\") && (o = t - i.x, u = n - i.y, l = i.x + i.width, d = i.y + i.height), s = l + r.x + o, c = d + r.y + u;\n\t\t}\n\t\tthis.evData = {\n\t\t\tstartClientX: s,\n\t\t\tstartClientY: c,\n\t\t\tstartCropX: l,\n\t\t\tstartCropY: d,\n\t\t\tclientX: e.clientX,\n\t\t\tclientY: e.clientY,\n\t\t\tisResize: o,\n\t\t\tord: a\n\t\t}, this.mouseDownOnCrop = !0, this.setState({ cropIsActive: !0 });\n\t};\n\tonComponentPointerDown = (e) => {\n\t\tlet { crop: t, disabled: n, locked: r, keepSelection: i, onChange: a } = this.props, o = this.getBox();\n\t\tif (n || r || i && t) return;\n\t\te.cancelable && e.preventDefault(), this.bindDocMove(), this.componentRef.current.focus({ preventScroll: !0 });\n\t\tlet s = e.clientX - o.x, c = e.clientY - o.y, d = {\n\t\t\tunit: \"px\",\n\t\t\tx: s,\n\t\t\ty: c,\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t\tthis.evData = {\n\t\t\tstartClientX: e.clientX,\n\t\t\tstartClientY: e.clientY,\n\t\t\tstartCropX: s,\n\t\t\tstartCropY: c,\n\t\t\tclientX: e.clientX,\n\t\t\tclientY: e.clientY,\n\t\t\tisResize: !0\n\t\t}, this.mouseDownOnCrop = !0, a(u(d, o.width, o.height), l(d, o.width, o.height)), this.setState({\n\t\t\tcropIsActive: !0,\n\t\t\tnewCropIsBeingDrawn: !0\n\t\t});\n\t};\n\tonDocPointerMove = (e) => {\n\t\tlet { crop: t, disabled: n, onChange: r, onDragStart: i } = this.props, a = this.getBox();\n\t\tif (n || !t || !this.mouseDownOnCrop) return;\n\t\te.cancelable && e.preventDefault(), this.dragStarted || (this.dragStarted = !0, i && i(e));\n\t\tlet { evData: s } = this;\n\t\ts.clientX = e.clientX, s.clientY = e.clientY;\n\t\tlet c;\n\t\tc = s.isResize ? this.resizeCrop() : this.dragCrop(), o(t, c) || r(u(c, a.width, a.height), l(c, a.width, a.height));\n\t};\n\tonComponentKeyDown = (e) => {\n\t\tlet { crop: t, disabled: n, onChange: r, onComplete: a } = this.props;\n\t\tif (n) return;\n\t\tlet o = e.key, c = !1;\n\t\tif (!t) return;\n\t\tlet d = this.getBox(), f = this.makePixelCrop(d), p = (navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) ? s.nudgeStepLarge : e.shiftKey ? s.nudgeStepMedium : s.nudgeStep;\n\t\tif (o === \"ArrowLeft\" ? (f.x -= p, c = !0) : o === \"ArrowRight\" ? (f.x += p, c = !0) : o === \"ArrowUp\" ? (f.y -= p, c = !0) : o === \"ArrowDown\" && (f.y += p, c = !0), c) {\n\t\t\te.cancelable && e.preventDefault(), f.x = i(f.x, 0, d.width - f.width), f.y = i(f.y, 0, d.height - f.height);\n\t\t\tlet t = u(f, d.width, d.height), n = l(f, d.width, d.height);\n\t\t\tr(t, n), a && a(t, n);\n\t\t}\n\t};\n\tonHandlerKeyDown = (e, t) => {\n\t\tlet { aspect: n = 0, crop: r, disabled: i, minWidth: a = 0, minHeight: c = 0, maxWidth: p, maxHeight: m, onChange: h, onComplete: g } = this.props, _ = this.getBox();\n\t\tif (i || !r) return;\n\t\tif (e.key === \"ArrowUp\" || e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" || e.key === \"ArrowRight\") e.stopPropagation(), e.preventDefault();\n\t\telse return;\n\t\tlet v = (navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) ? s.nudgeStepLarge : e.shiftKey ? s.nudgeStepMedium : s.nudgeStep, y = d(f(u(r, _.width, _.height), e.key, v, t), n, t, _.width, _.height, a, c, p, m);\n\t\tif (!o(r, y)) {\n\t\t\tlet e = l(y, _.width, _.height);\n\t\t\th(y, e), g && g(y, e);\n\t\t}\n\t};\n\tonDocPointerDone = (e) => {\n\t\tlet { crop: t, disabled: n, onComplete: r, onDragEnd: i } = this.props, a = this.getBox();\n\t\tthis.unbindDocMove(), !(n || !t) && this.mouseDownOnCrop && (this.mouseDownOnCrop = !1, this.dragStarted = !1, i && i(e), r && r(u(t, a.width, a.height), l(t, a.width, a.height)), this.setState({\n\t\t\tcropIsActive: !1,\n\t\t\tnewCropIsBeingDrawn: !1\n\t\t}));\n\t};\n\tonDragFocus = () => {\n\t\tthis.componentRef.current?.scrollTo(0, 0);\n\t};\n\tgetCropStyle() {\n\t\tlet { crop: e } = this.props;\n\t\tif (e) return {\n\t\t\ttop: `${e.y}${e.unit}`,\n\t\t\tleft: `${e.x}${e.unit}`,\n\t\t\twidth: `${e.width}${e.unit}`,\n\t\t\theight: `${e.height}${e.unit}`\n\t\t};\n\t}\n\tdragCrop() {\n\t\tlet { evData: e } = this, t = this.getBox(), n = this.makePixelCrop(t), r = e.clientX - e.startClientX, a = e.clientY - e.startClientY;\n\t\treturn n.x = i(e.startCropX + r, 0, t.width - n.width), n.y = i(e.startCropY + a, 0, t.height - n.height), n;\n\t}\n\tgetPointRegion(e, t, n, r) {\n\t\tlet { evData: i } = this, a = i.clientX - e.x, o = i.clientY - e.y, s;\n\t\ts = r && t ? t === \"nw\" || t === \"n\" || t === \"ne\" : o < i.startCropY;\n\t\tlet c;\n\t\treturn c = n && t ? t === \"nw\" || t === \"w\" || t === \"sw\" : a < i.startCropX, c ? s ? \"nw\" : \"sw\" : s ? \"ne\" : \"se\";\n\t}\n\tresolveMinDimensions(e, t, n = 0, r = 0) {\n\t\tlet i = Math.min(n, e.width), a = Math.min(r, e.height);\n\t\treturn !t || !i && !a ? [i, a] : t > 1 ? i ? [i, i / t] : [a * t, a] : a ? [a * t, a] : [i, i / t];\n\t}\n\tresizeCrop() {\n\t\tlet { evData: e } = this, { aspect: t = 0, maxWidth: n, maxHeight: r } = this.props, a = this.getBox(), [o, c] = this.resolveMinDimensions(a, t, this.props.minWidth, this.props.minHeight), l = this.makePixelCrop(a), u = this.getPointRegion(a, e.ord, o, c), f = e.ord || u, p = e.clientX - e.startClientX, m = e.clientY - e.startClientY;\n\t\t(o && f === \"nw\" || f === \"w\" || f === \"sw\") && (p = Math.min(p, -o)), (c && f === \"nw\" || f === \"n\" || f === \"ne\") && (m = Math.min(m, -c));\n\t\tlet h = {\n\t\t\tunit: \"px\",\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t\tu === \"ne\" ? (h.x = e.startCropX, h.width = p, t ? (h.height = h.width / t, h.y = e.startCropY - h.height) : (h.height = Math.abs(m), h.y = e.startCropY - h.height)) : u === \"se\" ? (h.x = e.startCropX, h.y = e.startCropY, h.width = p, t ? h.height = h.width / t : h.height = m) : u === \"sw\" ? (h.x = e.startCropX + p, h.y = e.startCropY, h.width = Math.abs(p), t ? h.height = h.width / t : h.height = m) : u === \"nw\" && (h.x = e.startCropX + p, h.width = Math.abs(p), t ? (h.height = h.width / t, h.y = e.startCropY - h.height) : (h.height = Math.abs(m), h.y = e.startCropY + m));\n\t\tlet g = d(h, t, u, a.width, a.height, o, c, n, r);\n\t\treturn t || s.xyOrds.indexOf(f) > -1 ? l = g : s.xOrds.indexOf(f) > -1 ? (l.x = g.x, l.width = g.width) : s.yOrds.indexOf(f) > -1 && (l.y = g.y, l.height = g.height), l.x = i(l.x, 0, a.width - l.width), l.y = i(l.y, 0, a.height - l.height), l;\n\t}\n\trenderCropSelection() {\n\t\tlet { ariaLabels: t = s.defaultProps.ariaLabels, disabled: n, locked: r, renderSelectionAddon: i, ruleOfThirds: a, crop: o } = this.props, c = this.getCropStyle();\n\t\tif (o) return /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tstyle: c,\n\t\t\tclassName: \"ReactCrop__crop-selection\",\n\t\t\tonPointerDown: this.onCropPointerDown,\n\t\t\t\"aria-label\": t.cropArea,\n\t\t\ttabIndex: 0,\n\t\t\tonKeyDown: this.onComponentKeyDown,\n\t\t\trole: \"group\"\n\t\t}, !n && !r && /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-elements\",\n\t\t\tonFocus: this.onDragFocus\n\t\t}, /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-bar ord-n\",\n\t\t\t\"data-ord\": \"n\"\n\t\t}), /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-bar ord-e\",\n\t\t\t\"data-ord\": \"e\"\n\t\t}), /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-bar ord-s\",\n\t\t\t\"data-ord\": \"s\"\n\t\t}), /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-bar ord-w\",\n\t\t\t\"data-ord\": \"w\"\n\t\t}), /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-handle ord-nw\",\n\t\t\t\"data-ord\": \"nw\",\n\t\t\ttabIndex: 0,\n\t\t\t\"aria-label\": t.nwDragHandle,\n\t\t\tonKeyDown: (e) => this.onHandlerKeyDown(e, \"nw\"),\n\t\t\trole: \"button\"\n\t\t}), /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-handle ord-n\",\n\t\t\t\"data-ord\": \"n\",\n\t\t\ttabIndex: 0,\n\t\t\t\"aria-label\": t.nDragHandle,\n\t\t\tonKeyDown: (e) => this.onHandlerKeyDown(e, \"n\"),\n\t\t\trole: \"button\"\n\t\t}), /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-handle ord-ne\",\n\t\t\t\"data-ord\": \"ne\",\n\t\t\ttabIndex: 0,\n\t\t\t\"aria-label\": t.neDragHandle,\n\t\t\tonKeyDown: (e) => this.onHandlerKeyDown(e, \"ne\"),\n\t\t\trole: \"button\"\n\t\t}), /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-handle ord-e\",\n\t\t\t\"data-ord\": \"e\",\n\t\t\ttabIndex: 0,\n\t\t\t\"aria-label\": t.eDragHandle,\n\t\t\tonKeyDown: (e) => this.onHandlerKeyDown(e, \"e\"),\n\t\t\trole: \"button\"\n\t\t}), /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-handle ord-se\",\n\t\t\t\"data-ord\": \"se\",\n\t\t\ttabIndex: 0,\n\t\t\t\"aria-label\": t.seDragHandle,\n\t\t\tonKeyDown: (e) => this.onHandlerKeyDown(e, \"se\"),\n\t\t\trole: \"button\"\n\t\t}), /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-handle ord-s\",\n\t\t\t\"data-ord\": \"s\",\n\t\t\ttabIndex: 0,\n\t\t\t\"aria-label\": t.sDragHandle,\n\t\t\tonKeyDown: (e) => this.onHandlerKeyDown(e, \"s\"),\n\t\t\trole: \"button\"\n\t\t}), /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-handle ord-sw\",\n\t\t\t\"data-ord\": \"sw\",\n\t\t\ttabIndex: 0,\n\t\t\t\"aria-label\": t.swDragHandle,\n\t\t\tonKeyDown: (e) => this.onHandlerKeyDown(e, \"sw\"),\n\t\t\trole: \"button\"\n\t\t}), /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__drag-handle ord-w\",\n\t\t\t\"data-ord\": \"w\",\n\t\t\ttabIndex: 0,\n\t\t\t\"aria-label\": t.wDragHandle,\n\t\t\tonKeyDown: (e) => this.onHandlerKeyDown(e, \"w\"),\n\t\t\trole: \"button\"\n\t\t})), i && /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tclassName: \"ReactCrop__selection-addon\",\n\t\t\tonPointerDown: (e) => e.stopPropagation()\n\t\t}, i(this.state)), a && /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"div\", { className: \"ReactCrop__rule-of-thirds-hz\" }), /* @__PURE__ */ e.createElement(\"div\", { className: \"ReactCrop__rule-of-thirds-vt\" })));\n\t}\n\tmakePixelCrop(e) {\n\t\treturn u({\n\t\t\t...r,\n\t\t\t...this.props.crop || {}\n\t\t}, e.width, e.height);\n\t}\n\trender() {\n\t\tlet { aspect: t, children: n, circularCrop: r, className: i, crop: o, disabled: s, locked: c, style: l, ruleOfThirds: u } = this.props, { cropIsActive: d, newCropIsBeingDrawn: f } = this.state, p = o ? this.renderCropSelection() : null, m = a(\"ReactCrop\", i, d && \"ReactCrop--active\", s && \"ReactCrop--disabled\", c && \"ReactCrop--locked\", f && \"ReactCrop--new-crop\", o && t && \"ReactCrop--fixed-aspect\", o && r && \"ReactCrop--circular-crop\", o && u && \"ReactCrop--rule-of-thirds\", !this.dragStarted && o && !o.width && !o.height && \"ReactCrop--invisible-crop\", r && \"ReactCrop--no-animate\");\n\t\treturn /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tref: this.componentRef,\n\t\t\tclassName: m,\n\t\t\tstyle: l\n\t\t}, /* @__PURE__ */ e.createElement(\"div\", {\n\t\t\tref: this.mediaRef,\n\t\t\tclassName: \"ReactCrop__child-wrapper\",\n\t\t\tonPointerDown: this.onComponentPointerDown\n\t\t}, n), o ? /* @__PURE__ */ e.createElement(\"svg\", {\n\t\t\tclassName: \"ReactCrop__crop-mask\",\n\t\t\twidth: \"100%\",\n\t\t\theight: \"100%\"\n\t\t}, /* @__PURE__ */ e.createElement(\"defs\", null, /* @__PURE__ */ e.createElement(\"mask\", { id: `hole-${this.instanceId}` }, /* @__PURE__ */ e.createElement(\"rect\", {\n\t\t\twidth: \"100%\",\n\t\t\theight: \"100%\",\n\t\t\tfill: \"white\"\n\t\t}), r ? /* @__PURE__ */ e.createElement(\"ellipse\", {\n\t\t\tcx: `${o.x + o.width / 2}${o.unit}`,\n\t\t\tcy: `${o.y + o.height / 2}${o.unit}`,\n\t\t\trx: `${o.width / 2}${o.unit}`,\n\t\t\try: `${o.height / 2}${o.unit}`,\n\t\t\tfill: \"black\"\n\t\t}) : /* @__PURE__ */ e.createElement(\"rect\", {\n\t\t\tx: `${o.x}${o.unit}`,\n\t\t\ty: `${o.y}${o.unit}`,\n\t\t\twidth: `${o.width}${o.unit}`,\n\t\t\theight: `${o.height}${o.unit}`,\n\t\t\tfill: \"black\"\n\t\t}))), /* @__PURE__ */ e.createElement(\"rect\", {\n\t\t\tfill: \"black\",\n\t\t\tfillOpacity: .5,\n\t\t\twidth: \"100%\",\n\t\t\theight: \"100%\",\n\t\t\tmask: `url(#hole-${this.instanceId})`\n\t\t})) : void 0, p);\n\t}\n}, g = Math.PI / 180;\nasync function _(e, t, n, r = 1, i = 0) {\n\tlet a = t.getContext(\"2d\");\n\tif (!a) throw Error(\"No 2d context\");\n\tlet o = e.naturalWidth / e.width, s = e.naturalHeight / e.height, c = window.devicePixelRatio;\n\tt.width = Math.floor(n.width * o * c), t.height = Math.floor(n.height * s * c), a.scale(c, c), a.imageSmoothingQuality = \"high\";\n\tlet l = n.x * o, u = n.y * s, d = i * g, f = e.naturalWidth / 2, p = e.naturalHeight / 2;\n\ta.save(), a.translate(-l, -u), a.translate(f, p), a.rotate(d), a.scale(r, r), a.translate(-f, -p), a.drawImage(e, 0, 0, e.naturalWidth, e.naturalHeight, 0, 0, e.naturalWidth, e.naturalHeight), a.restore();\n}\nfunction v(e) {\n\treturn new Promise((t) => {\n\t\te.toBlob(t);\n\t});\n}\nvar y = \"\";\nasync function b(e, t, n = 1, r = 0) {\n\tlet i = document.createElement(\"canvas\");\n\t_(e, i, t, n, r);\n\tlet a = await v(i);\n\treturn a ? (y && URL.revokeObjectURL(y), y = URL.createObjectURL(a), y) : (console.error(\"Failed to create blob\"), \"\");\n}\n//#endregion\nexport { h as Component, h as ReactCrop, h as default, o as areCropsEqual, c as centerCrop, i as clamp, a as cls, d as containCrop, l as convertToPercentCrop, u as convertToPixelCrop, _ as cropToCanvas, b as cropToImg, r as defaultCrop, s as makeAspectCrop, f as nudgeCrop };\n", "import React from \"react\";\nimport i18next from \"i18next\";\nimport {DESC_MAX_LENGTH} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/StepEditorDialog\";\nimport {SelectedStepContext} from \"@root/Frontend/Studio/Contexts/SelectedStepContext\";\nimport {InputTextTranslation} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/InputTextTranslation\";\nimport {Sequence, Step, StepVideo, Text} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {getStepType} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {getCurrentWorldID, getOwnerID, getWorldOwnerType} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {createNewText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterCloud\";\n\ninterface VideoProps {\n    stepID: bigint;\n    stepIndex: number;\n    stepTitleTextID: bigint;\n    onStepModified: (isValid: boolean) => void;\n}\n\ninterface VideoState {\n    title: string;\n    errorDescription: string;\n}\n\nexport class StepVideoEditor extends React.Component implements InterfaceStepEditor {\n    static contextType = SelectedStepContext;\n    context: React.ContextType<typeof SelectedStepContext>;\n    private titleInputsRef: React.RefObject<InputTextTranslation> = React.createRef<InputTextTranslation>();\n\n    props: VideoProps;\n    state: VideoState = {\n        title: \"\",\n        errorDescription: \"\"\n    };\n\n    public update(): void {}\n\n    private getStepVideo(stepID: bigint): StepVideo | null {\n        if (!stepID)\n            return null;\n\n        using sequence: Sequence | null = App.getInstance().getSequence(getCurrentSequenceID());\n        const step: Step | null = sequence?.getStepByID(stepID) ?? null;\n        return step && getStepType(stepID) === StepType.VIDEO ? step as StepVideo : null;\n    }\n\n    public updateText(textID: bigint) {\n        using stepVideo: StepVideo | null = this.getStepVideo(this.props.stepID);\n        if (!textID || !stepVideo)\n            return;\n\n        using text: Text | null = stepVideo.getText();\n        if (!text || textID !== text.getID())\n            return;\n\n        const title: string = text.getOriginalText();\n        if (title !== this.state.title)\n            this.setState({title});\n        this.titleInputsRef.current?.updateText(textID);\n    }\n\n\n    private setTitle(title: string): void {\n        if (this.state.title !== title)\n            this.setState({ title }, () => this.props.onStepModified(this.validateData()));\n    }\n\n    public validateData(): boolean {\n        let errorDescription: string = \"\";\n\n        if (!this.state.title.trim())\n            errorDescription = i18next.t(\"The description is required\");\n        else if(this.state.title.length > DESC_MAX_LENGTH)\n            errorDescription =\n                `${i18next.t(\"The description is too long\")}: ${this.state.title.length}/${DESC_MAX_LENGTH}`;\n\n        this.setState({ errorDescription });\n\n        // If there's no error, just return true.\n        return !errorDescription.length;\n    }\n\n    public async saveNewStep(stepID: bigint): Promise<boolean> {\n        if (!this.validateData())\n            return false;\n\n        using stepVideo: StepVideo | null = this.getStepVideo(stepID);\n        if (!stepVideo)\n            return false;\n\n        const worldID: bigint = getCurrentWorldID();\n        const ownerID: bigint = getOwnerID(worldID);\n        const ownerType: OwnerType = getWorldOwnerType(worldID);\n\n        using text: Text | null = await createNewText(ownerID, ownerType);\n        if (!text)\n            return false;\n\n        text.saveAudioEnabled(true);\n        text.saveOriginalText(this.state.title);\n        stepVideo.saveText(text);\n        return true;\n    }\n\n    private onConfirmTitle() {\n        using stepVideo: StepVideo | null = this.getStepVideo(this.props.stepID);\n        using text: Text | null = stepVideo?.getText() ?? null;\n        if (text && !this.state.errorDescription)\n            text.saveOriginalText(this.state.title);\n    }\n\n    render() {\n        return <InputTextTranslation\n            id={\"step-video-textArea\"}\n            ref={this.titleInputsRef}\n            label={i18next.t(\"Description\")}\n            translationLanguage={this.context.translationLanguage}\n            sourceLanguage={this.context.defaultLanguage}\n            readonly={!this.context.canEditStep}\n            textID={this.props.stepTitleTextID}\n            originalText={this.state.title}\n            rows={3}\n            required\n            placeholder={i18next.t(\"What do you want the user to take a video of?\")}\n            errorMessage={this.state.errorDescription}\n            onChangeValue={(text: string) => this.setTitle(text)}\n            onConfirmValue={() => this.onConfirmTitle()}\n            counter={DESC_MAX_LENGTH}\n        />;\n    }\n}\n", "import React from \"react\";\nimport i18next from \"i18next\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport {Box, styled} from \"@mui/material\";\nimport {SelectedStepContext} from \"@root/Frontend/Studio/Contexts/SelectedStepContext\";\nimport {createNewText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterCloud\";\nimport { MainModule, Sequence, Step, StepInput, Text} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {DESC_MAX_LENGTH} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/StepEditorDialog\";\nimport {InputTextTranslation} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/InputTextTranslation\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {getStepType} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {getCurrentWorldID, getOwnerID, getWorldOwnerType} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {secondaryFontMedium, secondaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {contrastRed, dark} from \"@root/react-components/src/values/colors/colors\";\n\nconst RangeInput = styled(\"input\")({\n    background: \"none\",\n    borderWidth: \"0 0 1px 0\",\n    borderColor: dark,\n    outline: \"none\",\n    fontSize: \"14px\",\n    padding: \"0px 2px 3px\",\n    font: secondaryFontMedium\n});\n\nconst LabelWrapper = styled(Box)({\n    marginBottom: \"2px\",\n    marginTop: \"6px\",\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\"\n});\n\nexport const InputRow = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    gap: \"10px\"\n});\n\nconst ErrorLabel = styled(Box)({\n    font: secondaryFontSmall,\n    color: contrastRed,\n    height: \"14px\",\n    marginTop: \"3px\"\n});\n\ninterface StepInputProps {\n    stepID: bigint;\n    stepIndex: number;\n    stepTitleTextID: bigint;\n    onStepModified: (isValid: boolean) => void;\n}\n\ninterface StepInputState {\n    title: string;\n    titleError: string;\n    minimum?: number ;\n    maximum?: number;\n    rangeError: string;\n    explanation: string;\n    explanationID: bigint;\n    explanationError: string;\n}\n\nexport class StepInputEditor extends React.Component implements InterfaceStepEditor {\n    static contextType = SelectedStepContext;\n    private titleInputRef: React.RefObject<InputTextTranslation> = React.createRef<InputTextTranslation>();\n    private explanationInputRef: React.RefObject<InputTextTranslation> = React.createRef<InputTextTranslation>();\n\n    context: React.ContextType<typeof SelectedStepContext>;\n    props: StepInputProps;\n    state: StepInputState = {\n        title: \"\",\n        titleError: \"\",\n        rangeError: \"\",\n        explanation: \"\",\n        explanationID: BigInt(0),\n        explanationError: \"\"\n    };\n\n    componentDidMount() { this.update(); }\n\n    componentDidUpdate(prevProps: Readonly<StepInputProps>) {\n        if (this.props.stepID !== prevProps.stepID ) {\n            this.update();\n            this.setState({titleError: \"\", rangeError: \"\", explanationError: \"\"});\n        }\n    }\n\n    private getStepInput(stepID: bigint): StepInput | null {\n        if (!stepID)\n            return null;\n\n        using sequence: Sequence | null = App.getInstance().getSequence(getCurrentSequenceID());\n        const step: Step | null = sequence?.getStepByID(stepID) ?? null;\n        return step && getStepType(stepID) === StepType.INPUT ? step as StepInput : null;\n    }\n\n    public update(): void {\n        using stepInput: StepInput | null = this.getStepInput(this.props.stepID);\n        if (!stepInput)\n            return;\n\n        const minimum: number | undefined = stepInput.getMinimum();\n        const maximum: number | undefined = stepInput.getMaximum();\n        if (this.state.maximum !== maximum || this.state.minimum !== minimum)\n            this.setState({minimum, maximum});\n\n        using textExplanation: Text | null = stepInput.getTextExplanation();\n        const explanationID: bigint = textExplanation?.getID() ?? BigInt(0);\n        const explanation: string = textExplanation?.getOriginalText() ?? \"\";\n        if (explanation !== this.state.explanation || this.state.explanationID !== explanationID)\n            this.setState({explanation, explanationID});\n    }\n\n    public updateText(textID: bigint) {\n        using stepInput: StepInput | null = this.getStepInput(this.props.stepID);\n        if (!textID || !stepInput)\n            return;\n\n        using text: Text | null = stepInput.getText();\n        if (text && textID === text.getID()) {\n            const title: string = text.getOriginalText();\n            if (title !== this.state.title)\n                this.setState({title});\n            this.titleInputRef.current?.updateText(textID);\n        }\n\n        using textExplanation: Text | null = stepInput.getTextExplanation();\n        if (textExplanation && textExplanation.getID() === textID) {\n            const explanation: string = textExplanation.getOriginalText();\n            if (explanation !== this.state.explanation)\n                this.setState({explanation});\n            this.explanationInputRef.current?.updateText(textID);\n        }\n    }\n\n    public validateData(): boolean {\n        let errorDescription: string = \"\";\n        if (!this.state.title.trim())\n            errorDescription = i18next.t(\"The description is required\");\n        else if (this.state.title.length > DESC_MAX_LENGTH)\n            errorDescription =\n                `${i18next.t(\"The description is too long\")}: ${this.state.title.length}/${DESC_MAX_LENGTH}`;\n\n        let errorExplanation: string = \"\";\n        if (this.state.explanation.length > DESC_MAX_LENGTH)\n            errorExplanation =\n                `${i18next.t(\"The explanation is too long\")}: ${this.state.explanation.length}/${DESC_MAX_LENGTH}`;\n\n        let errorInvalidRange: string = \"\";\n\n        const engine: MainModule = App.getInstance().getEngine();\n        const inputMin: number = engine.StepInput.MIN_NUMPAD_INPUT;\n        const inputMax: number = engine.StepInput.MAX_NUMPAD_INPUT;\n\n        if (!engine.StepInput.isInNumpadRange(this.state.minimum) || !engine.StepInput.isInNumpadRange(this.state.maximum))\n            errorInvalidRange = `${i18next.t(\"Values must be in range\")} [${inputMin}, ${inputMax}]`;\n        else if ((this.state.minimum ?? inputMin) > (this.state.maximum ?? inputMax))\n            errorInvalidRange = `${i18next.t(\"Range error: the minimum is larger than the maximum\")}`;\n\n        this.setState({\n            titleError: errorDescription,\n            explanationError: errorExplanation,\n            rangeError: errorInvalidRange\n        });\n\n        return !errorDescription.length && !errorExplanation.length && !errorInvalidRange.length;\n    }\n\n    public async saveNewStep(stepID: bigint): Promise<boolean> {\n        if (!this.validateData())\n            return false;\n\n        using stepInput: StepInput | null = this.getStepInput(stepID);\n        if (!stepInput)\n            return false;\n\n        stepInput.saveRange(this.state.minimum, this.state.maximum);\n\n        // use the world owner to create the Texts\n        const worldID: bigint = getCurrentWorldID();\n        const ownerID: bigint = getOwnerID(worldID);\n        const ownerType: OwnerType = getWorldOwnerType(worldID);\n\n        using text: Text | null = await createNewText(ownerID, ownerType);\n        using explanationText: Text | null = await createNewText(ownerID, ownerType);\n\n        if (!text || !explanationText)\n            return false;\n\n        text.saveAudioEnabled(true);\n        text.saveOriginalText(this.state.title);\n        stepInput.saveText(text);\n\n        explanationText.saveAudioEnabled(false);\n        explanationText.saveOriginalText(this.state.explanation);\n        stepInput.saveTextExplanation(explanationText);\n        return true;\n    }\n\n    private onChangeTitle(title: string): void {\n        if (this.state.title !== title)\n            this.setState({title}, () => this.props.onStepModified(this.validateData()));\n    }\n\n    private onConfirmTitle(): void {\n        using stepInput: StepInput | null = this.getStepInput(this.props.stepID);\n        using text: Text | null = stepInput?.getText() ?? null;\n        if (text && !this.state.titleError)\n            text.saveOriginalText(this.state.title);\n    }\n\n    private onChangeBounds(minimumInput: string, maximumInput: string): void {\n        const minimum: number | undefined = minimumInput.length ? Number(minimumInput) : undefined;\n        const maximum: number | undefined = maximumInput.length ? Number(maximumInput) : undefined;\n        this.setState({minimum, maximum}, () => this.props.onStepModified(this.validateData()));\n    }\n\n    private onConfirmBound(): void {\n        using stepInput: StepInput | null = this.getStepInput(this.props.stepID);\n        if (stepInput && !this.state.rangeError)\n            stepInput.saveRange(this.state.minimum, this.state.maximum);\n    }\n\n    private onChangeExplanation(explanation: string): void {\n        if (this.state.explanation !== explanation)\n            this.setState({explanation}, () => this.props.onStepModified(this.validateData()));\n    }\n\n    private async onConfirmExplanation(): Promise<void> {\n        using stepInput: StepInput | null = this.getStepInput(this.props.stepID);\n        if (!stepInput || this.state.explanationError)\n            return;\n\n        // Step already has an explanation, update it\n        using explanationInputText: Text | null  = stepInput.getTextExplanation();\n        if (explanationInputText) {\n            explanationInputText?.saveOriginalText(this.state.explanation);\n            return;\n        }\n\n        // Step doesn't have an explanation, we need to create a new one\n        const worldID: bigint = getCurrentWorldID();\n        const ownerID: bigint = getOwnerID(worldID);\n        const ownerType: OwnerType = getWorldOwnerType(worldID);\n\n        using explanationText: Text | null = await createNewText(ownerID, ownerType);\n        if (!explanationText)\n            return;\n\n        explanationText.saveAudioEnabled(false);\n        explanationText.saveOriginalText(this.state.explanation);\n        stepInput.saveTextExplanation(explanationText);\n        this.setState({explanationID: explanationText.getID()});\n    }\n\n    render() {\n        return (<>\n            <InputTextTranslation\n                id={\"step-input-description-textArea\"}\n                rows={3}\n                counter={DESC_MAX_LENGTH}\n                label={i18next.t(\"Description\")}\n                placeholder={i18next.t(\"What do you want the user to input?\")}\n                errorMessage={this.state.titleError}\n                ref={this.titleInputRef}\n                readonly={!this.context.canEditStep}\n                textID={this.props.stepTitleTextID}\n                originalText={this.state.title}\n                translationLanguage={this.context.translationLanguage}\n                sourceLanguage={this.context.defaultLanguage}\n                onChangeValue={(text: string) => this.onChangeTitle(text)}\n                onConfirmValue={() => this.onConfirmTitle()}\n                required\n            />\n            <LabelWrapper style={{ paddingTop: \"10px\", opacity: this.context.canEditStep ? 1 : 0.7 }}>\n                <span style={{ font: secondaryFontSmall }}>{i18next.t(\"Validation\")}</span>\n            </LabelWrapper>\n\n            <InputRow style={{ opacity: this.context.canEditStep ? 1 : 0.7, paddingTop: \"7px\" }}>\n                <Box>\n                    <Label dark style={{marginBottom: 2}}>\n                        <span>{`${i18next.t(\"Minimum (Optional)\")}`}</span>\n                    </Label>\n                    <RangeInput\n                        type=\"number\"\n                        id=\"step-input-minimum\"\n                        disabled={!this.context.canEditStep}\n                        onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n                            this.onChangeBounds(event.target.value, this.state.maximum?.toString() ?? \"\")}\n                        onBlur={() => this.onConfirmBound()}\n                        onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\n                            if (e.key.toLowerCase() === \"e\" || e.key.toLowerCase() === \"+\" || e.key.toLowerCase() === \"-\")\n                                e.preventDefault();\n                        }}\n                        value={this.state.minimum?.toString() ?? \"\"}\n                    />\n                </Box>\n                <Box>\n                    <Label dark style={{marginBottom: 2}}>\n                        <span>{`${i18next.t(\"Maximum (Optional)\")}`}</span>\n                    </Label>\n                    <RangeInput\n                        type=\"number\"\n                        id=\"step-input-maximum\"\n                        disabled={!this.context.canEditStep}\n                        onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n                            this.onChangeBounds(this.state.minimum?.toString() ?? \"\", event.target.value)}\n                        onBlur={() => this.onConfirmBound()}\n                        onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\n                            if (e.key.toLowerCase() === \"e\" || e.key.toLowerCase() === \"+\" || e.key.toLowerCase() === \"-\")\n                                e.preventDefault();\n                        }}\n                        value={this.state.maximum?.toString() ?? \"\"}\n                    />\n                </Box>\n            </InputRow>\n            <ErrorLabel>{this.state.rangeError}</ErrorLabel>\n            {(this.state.maximum !== undefined || this.state.minimum !== undefined) &&\n                <InputTextTranslation\n                    id={\"step-input-explanation-textArea\"}\n                    rows={3}\n                    counter={DESC_MAX_LENGTH}\n                    label={i18next.t(\"Explanation (Optional)\")}\n                    placeholder={i18next.t(\"What message should the user see after their input?\")}\n                    errorMessage={this.state.explanationError}\n                    ref={this.explanationInputRef}\n                    readonly={!this.context.canEditStep}\n                    textID={this.state.explanationID}\n                    originalText={this.state.explanation}\n                    translationLanguage={this.context.translationLanguage}\n                    sourceLanguage={this.context.defaultLanguage}\n                    onChangeValue={(text: string) => this.onChangeExplanation(text)}\n                    onConfirmValue={() => this.onConfirmExplanation()}\n                    required={false}\n                />\n            }\n        </>)\n    }\n}\n", "import * as React from \"react\";\nimport {App} from \"App\";\nimport i18next from \"i18next\";\nimport {lighterDark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Box, Input, styled} from \"@mui/material\";\nimport {CreateWorld} from \"@root/react-components/src/icons/CreateWorld\";\nimport {primaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {Account} from \"@root/Frontend/Studio/Interface/Account\";\nimport {CSSProperties} from \"react\";\nimport {DocumentsLibrary} from \"@root/Frontend/Studio/Views/AssetsDialog/DocumentsLibrary/DocumentsLibrary\";\n\nconst ButtonImportDocument = styled(Box)((props: {enabled: number}) => ({\n    width: \"100%\",\n    height: \"calc(100% - 6px)\",\n    borderRadius: \"12px\",\n    opacity: props.enabled ? 1 : 0.6,\n    \"&:hover\": {\n        backgroundColor: props.enabled && lighterDark,\n        cursor: props.enabled ? \"pointer\" : \"default\",\n    }\n}));\n\nconst TitleImportDocument = styled(Box)({\n    font: primaryFontSmall,\n    color: white,\n    textAlign: \"center\"\n});\n\nconst IconButtonContainer = styled(Box)({\n    width: \"60px\",\n    height: \"60px\",\n    margin: \"5px\"\n});\n\nconst ThumbnailWrapper = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    paddingTop: \"12px\",\n    margin: \"3px 0\"\n});\n\ninterface ImportDocumentButtonProps {\n    handleChangeModelFile: (e: React.ChangeEvent<HTMLInputElement>) => void\n}\n\ninterface ImportDocumentButtonState {\n    errorMessage: string\n}\n\nexport class ImportDocumentButton extends React.Component {\n    props: ImportDocumentButtonProps;\n    private isMount: boolean = false;\n    private readonly inputModelRef: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n\n    state: ImportDocumentButtonState = {\n        errorMessage: \"\"\n    }\n\n    async componentDidMount() {\n        this.isMount = true;\n        await this.updateImportDocumentButton();\n    }\n\n    componentWillUnmount() { this.isMount = false; }\n\n    async updateImportDocumentButton() {\n        const errorMessage: string = await DocumentsLibrary.verifyOwnerPlanLimits();\n        if (this.isMount && errorMessage !== this.state.errorMessage)\n            this.setState({ errorMessage });\n    }\n\n    render() {\n        return (\n            <ButtonImportDocument\n                id=\"import-model-button\"\n                onClick={() => !this.state.errorMessage && this.inputModelRef.current?.click()}\n                enabled={Number(!this.state.errorMessage)}\n            >\n                <Tooltip title={this.state.errorMessage} placement=\"top\">\n                    <ThumbnailWrapper>\n                        <IconButtonContainer> <CreateWorld fill={white} /> </IconButtonContainer>\n                        <TitleImportDocument> {i18next.t(\"Import model\")} </TitleImportDocument>\n                    </ThumbnailWrapper>\n                </Tooltip>\n                <Input\n                    id=\"input-model-file\"\n                    type=\"file\"\n                    inputRef={this.inputModelRef}\n                    sx={{display: \"none\"}}\n                    onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n                        this.props.handleChangeModelFile(e)\n                    }\n                />\n            </ButtonImportDocument>\n        )\n    }\n}\n", "import i18next from \"i18next\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport * as React from \"react\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\nimport {Switch} from \"@root/react-components/src/inputs/Switch\";\nimport {\n    canCurrentPeerEditAsset,\n    isAssetAlwaysFacingCamera,\n    updateAssetAlwaysFaceCamera\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {getOriginalText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterText\";\nimport {createNewText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterCloud\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {getCurrentWorldID,\n        getOwnerID,\n        getWorldOwnerType} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {InputTextTranslation} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/Views/InputTextTranslation\";\nimport {Cloud, Language, Text} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {Box} from \"@mui/material\";\n\ninterface TextAssetProps {\n    assetID: bigint;\n    onAssetModified: (isValid: boolean) => void;\n}\n\ninterface TextAssetState {\n    bodyTextID: bigint,\n    bodyOriginalText: string,\n    headerTextID: bigint,\n    headerOriginalText: string,\n    alwaysFaceCamera: boolean,\n    errorHeader: string,\n    errorBody: string\n}\n\nconst BODY_MAX_LENGTH: number = 256;\nconst HEADER_MAX_LENGTH: number = 128;\n\nexport class TextAssetCreator extends React.Component implements InterfaceAssetCreator {\n    props: TextAssetProps;\n    state: TextAssetState = {\n        bodyTextID: BigInt(0),\n        bodyOriginalText: \"\",\n        headerTextID: BigInt(0),\n        headerOriginalText: \"\",\n        alwaysFaceCamera: true,\n        errorHeader: \"\",\n        errorBody: \"\"\n    }\n\n    private bodyInputRef: React.RefObject<InputTextTranslation> = React.createRef<InputTextTranslation>();\n    private headerInputRef: React.RefObject<InputTextTranslation> = React.createRef<InputTextTranslation>();\n\n    componentDidMount() {\n        if (!this.props.assetID)\n            return;\n        \n        const alwaysFaceCamera: boolean = isAssetAlwaysFacingCamera(this.props.assetID);\n\n        const bodyTextID: bigint = App.getInstance().getEngine().getAssetTextBody(this.props.assetID);\n        const bodyOriginalText: string = bodyTextID ? getOriginalText(bodyTextID) : \"\";\n\n        const headerTextID: bigint = App.getInstance().getEngine().getAssetTextHeader(this.props.assetID);\n        const headerOriginalText: string = headerTextID ? getOriginalText(headerTextID) : \"\";\n\n        this.setState({alwaysFaceCamera, bodyTextID, bodyOriginalText, headerTextID, headerOriginalText});\n    }\n\n    public updateText(textID: bigint) {\n        this.bodyInputRef.current?.updateText(textID);\n        this.headerInputRef.current?.updateText(textID);\n    }\n\n    public validateData(): boolean {\n        let errorBody: string = \"\";\n        const body: string = this.state.bodyOriginalText;\n        const preambleErrorBody: string = `${i18next.t(\"The field\")} ${i18next.t(\"Text\")}`;\n        if (!body)\n            errorBody = `${preambleErrorBody} ${i18next.t(\"cannot be empty\")}.`\n        else if (body.length > BODY_MAX_LENGTH)\n            errorBody = `${preambleErrorBody} ${i18next.t(\"is too long\")}: ` +\n                        `${body.length}/${BODY_MAX_LENGTH} ${i18next.t(\"characters\")}.`\n\n        let errorHeader: string = \"\";\n        const header: string = this.state.headerOriginalText;\n        const preambleErrorHeader: string = `${i18next.t(\"The field\")} ${i18next.t(\"Header\")}`;\n        if (!header)\n            errorHeader = `${preambleErrorHeader} ${i18next.t(\"cannot be empty\")}.`;\n        else if (header.length > HEADER_MAX_LENGTH)\n            errorHeader = `${preambleErrorHeader} ${i18next.t(\"is too long\")}: ` +\n                `${header.length}/${HEADER_MAX_LENGTH} ${i18next.t(\"characters\")}.`\n\n        this.setState({errorBody, errorHeader});\n        return !errorBody.length && !errorHeader.length;\n    }\n\n    public async onSave(temporary: boolean, assetID: bigint): Promise<boolean> {\n        if (!assetID)\n            return false;\n\n        // use the world owner to create the Texts\n        const worldID: bigint = getCurrentWorldID();\n        const ownerID: bigint = getOwnerID(worldID);\n        const ownerType: OwnerType = getWorldOwnerType(worldID);\n\n        // create the texts and the attributes\n        using bodyText: Text | null = await createNewText(ownerID, ownerType);\n        if (bodyText) {\n            bodyText.saveAudioEnabled(false);\n            bodyText.saveOriginalText(this.state.bodyOriginalText);\n            App.getInstance().getEngine().setAssetTextBody(assetID, bodyText.getID());\n        }\n\n        using headerText: Text | null = await createNewText(ownerID, ownerType);\n        if (headerText) {\n            headerText.saveAudioEnabled(false);\n            headerText.saveOriginalText(this.state.headerOriginalText);\n            App.getInstance().getEngine().setAssetTextHeader(assetID, headerText.getID());\n        }\n\n        // save the always face camera attribute\n        updateAssetAlwaysFaceCamera(assetID, this.state.alwaysFaceCamera);\n        return true;\n    }\n\n    private onChangeBody(originalText: string) {\n        this.setState({bodyOriginalText: originalText}, () => this.props.onAssetModified(this.validateData()));\n    }\n\n    private onChangeHeader(originalText: string) {\n        this.setState({headerOriginalText: originalText}, () => this.props.onAssetModified(this.validateData()));\n    }\n\n    private onConfirmBody() {\n        if (!this.props.assetID || !this.state.bodyTextID || this.state.errorBody)\n            return;\n\n        const cloud: Cloud = App.getInstance().getEngine().Cloud.getInstance();\n        using text: Text | null = cloud.getTextByID(this.state.bodyTextID);\n        text?.saveOriginalText(this.state.bodyOriginalText);\n    }\n\n    private onConfirmHeader() {\n        if (!this.props.assetID || !this.state.headerTextID || this.state.errorHeader)\n            return;\n\n        const cloud: Cloud = App.getInstance().getEngine().Cloud.getInstance();\n        using text: Text | null = cloud.getTextByID(this.state.headerTextID);\n        text?.saveOriginalText(this.state.headerOriginalText);\n    }\n\n    render() {\n        const readOnly: boolean = !canCurrentPeerEditAsset();\n        const language: Language = App.getInstance().getEngine().getLanguage();\n        return (\n            <Box style={{ display: \"flex\", flexDirection: \"column\", paddingTop: \"8px\", gap: \"16px\" }}>\n                <InputTextTranslation\n                    id=\"asset-text-textArea-header\"\n                    ref={this.headerInputRef}\n                    label={i18next.t(\"Header\")}\n                    translationLanguage={language}\n                    readonly={readOnly}\n                    textID={this.state.headerTextID}\n                    originalText={this.state.headerOriginalText}\n                    rows={4}\n                    required\n                    placeholder={i18next.t(\"Annotation\")}\n                    errorMessage={this.state.errorHeader}\n                    onChangeValue={(originalText: string) => this.onChangeHeader(originalText)}\n                    onConfirmValue={() => this.onConfirmHeader()}\n                    counter={HEADER_MAX_LENGTH}\n                />\n                <InputTextTranslation\n                    id=\"asset-text-textArea\"\n                    ref={this.bodyInputRef}\n                    label={i18next.t(\"Text\")}\n                    translationLanguage={language}\n                    readonly={readOnly}\n                    textID={this.state.bodyTextID}\n                    originalText={this.state.bodyOriginalText}\n                    rows={6}\n                    required\n                    placeholder={i18next.t(\"Annotation\")}\n                    errorMessage={this.state.errorBody}\n                    onChangeValue={(originalText: string) => this.onChangeBody(originalText)}\n                    onConfirmValue={() => this.onConfirmBody()}\n                    counter={BODY_MAX_LENGTH}\n                />\n                <Box>\n                    <Box style={{display: \"flex\", alignItems: \"center\"}}>\n                        <Label dark>{i18next.t(\"Always face the user\")}</Label>\n                        <Tooltip\n                            placement=\"right-start\"\n                            title={i18next.t(\"When enabled, the text asset will always face the user.\")}>\n                            <InfoIcon style={{marginTop: 6, marginLeft: 6, cursor: \"pointer\"}}>\n                                <Info />\n                            </InfoIcon>\n                        </Tooltip>\n                    </Box>\n                    <Box id=\"text-always-face-camera-switch\">\n                        <Switch\n                            initialValue={this.state.alwaysFaceCamera}\n                            onChange={(alwaysFaceCamera: boolean) => {this.setState({alwaysFaceCamera}, () => {\n                                if (this.props.assetID)\n                                    updateAssetAlwaysFaceCamera(this.props.assetID, this.state.alwaysFaceCamera);\n                            })}}\n                        />\n                    </Box>\n                </Box>\n            </Box>\n        )\n\n    }\n}\n", "import i18next from \"i18next\";\nimport * as React from \"react\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {Info} from \"@root/react-components/src/icons/Info\";\nimport {Switch} from \"@root/react-components/src/inputs/Switch\";\nimport {\n    getAssetImageData,\n    updateAssetAlwaysFaceCamera,\n    updateAssetImageFile,\n    updateAssetDefaultOrientationZ\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {isInputFileAnImage} from \"@utils/utils\";\nimport {Box, styled} from \"@mui/material\";\nimport {dark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {ErrorLabel} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/StepEditorDialog\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {AssetDataImage} from \"@root/Frontend/Studio/Types/Asset\";\nimport {MediaPreview} from \"@root/Frontend/Studio/Components/MediaPreview\";\nimport {updateAssetTitle} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    flex: 1,\n    minHeight: 0\n});\n\nconst InfoIcon = styled(Box)({\n    height: \"8px\",\n    width: \"8px\",\n    display: \"inline-flex\",\n    backgroundColor: dark,\n    borderRadius: \"50px\",\n    color: white,\n    padding: \"3px\",\n    marginLeft: \"6px\",\n    \"& svg\": { width: \"100%\" }\n});\n\ninterface AssetDataImageState extends AssetDataImage {\n    errorDescription: string;\n    imageName: string;\n}\n\nexport class ImageAssetCreator extends React.Component implements InterfaceAssetCreator {\n\n    props: {\n        assetID: bigint,\n        onAssetModified: (isValid: boolean) => void;\n    };\n    state: AssetDataImageState = {\n        imageFilePath: \"\",\n        title: \"\",\n        alwaysFaceCamera: true,\n        defaultOrientationZ: 0,\n        errorDescription: \"\",\n        imageName: \"\"\n    };\n\n    componentDidMount() {\n        if(this.props.assetID)\n            this.setState({ ...getAssetImageData(this.props.assetID) });\n    }\n\n    public async onSave(temporary: boolean, assetID: bigint): Promise<boolean>  {\n        if (!assetID)\n            return false;\n\n        // save image file only on creation\n        if (!this.props.assetID && this.state.imageFilePath)\n            updateAssetImageFile(assetID, this.state.imageFilePath);\n        if (this.state.title)\n            updateAssetTitle(assetID, this.state.title);\n        updateAssetDefaultOrientationZ(assetID, this.state.defaultOrientationZ);\n        updateAssetAlwaysFaceCamera(assetID, this.state.alwaysFaceCamera);\n        return true;\n    }\n\n    public validateData(): boolean {\n        let errorDescription: string = \"\";\n\n        // If there's no error, just return true.\n        if (!this.state.imageFilePath)\n            errorDescription = i18next.t(\"You must choose a file\");\n\n        this.setState({ errorDescription });\n        return !errorDescription.length;\n    }\n\n    private saveImageFilePath(assetID: bigint, imageFilePath: string) {\n        this.setState({ imageFilePath }, () => {\n            const isValid: boolean = this.validateData();\n            this.props.onAssetModified(isValid);\n            if (isValid && assetID)\n                updateAssetImageFile(assetID, this.state.imageFilePath);\n        });\n    }\n\n    private handleChangeImageFile(file: File | null) {\n        if (!file)\n            return;\n\n        // Verify file extension\n        if (!isInputFileAnImage(file)) {\n            const errorDescription: string = `${i18next.t(\"Could not load image\")} ${file.name} \n                                              ${i18next.t(\"because we do not support this file format\")}.`\n            this.setState({errorDescription});\n            return;\n        }\n\n        // Verify file size is smaller than 10MB\n        const oneMegabit: number = 1000000;\n        if (file.size / oneMegabit > 10) {\n            const errorDescription: string = `${i18next.t(\"Could not load image\")} ${file.name} \n                                          ${i18next.t(\"because it is bigger than 10MB\")}.`\n            this.setState({errorDescription});\n            return;\n        }\n\n        // Verify image resolution\n        const image: HTMLImageElement = new Image();\n        image.src = window.URL.createObjectURL(file);\n        image.onload = async () => {\n            if (Math.max(image.naturalWidth, image.naturalHeight) > 4096) {\n                const errorDescription: string = `${i18next.t(\"Could not load image\")} ${file.name} \n                                        ${i18next.t(\"because it is over the max supported resolution of 4096 x 4096\")}.`\n                this.setState({errorDescription});\n                return;\n            }\n\n            const imageFilePath: string = await AdapterUtils.saveFileToCore(file);\n            this.saveImageFilePath(this.props.assetID, imageFilePath);\n            window.URL.revokeObjectURL(image.src);\n        };\n    }\n\n    private handleRotation(defaultOrientationZ: number) {\n        this.setState({ defaultOrientationZ }, () => {\n            // if this is not a new asset, update the default rotation immediately\n            if(this.props.assetID)\n                updateAssetDefaultOrientationZ(this.props.assetID, defaultOrientationZ);\n        });\n    }\n\n    render() {\n        return (\n            <Container>\n                <Box sx={{padding: '10px 0px', display: 'flex', justifyContent: 'space-between'}}>\n                    <Box sx={{width: '72%'}}>\n                        <InputText\n                            dark\n                            value={this.state.title}\n                            placeholder={i18next.t(\"Image Title\")}\n                            name={\"titleTextArea\"}\n                            label={i18next.t(\"Title\")}\n                            onChange={(title: string) => this.setState({title})}\n                            onBlur={() => {\n                                if (this.props.assetID)\n                                    updateAssetTitle(this.props.assetID, this.state.title);\n                            }}\n                        />\n                    </Box>\n                    <Box>\n                        <Box sx={{display: \"flex\", alignItems: \"center\", marginTop: \"6px\"}}>\n                            <Label dark style={{marginTop: \"0px\"}}>{i18next.t(\"Always face the user\")}</Label>\n                            <Tooltip\n                                placement=\"right-start\"\n                                title={i18next.t(\"When enabled, the image asset will always face the user.\")}>\n                                <InfoIcon><Info /></InfoIcon>\n                            </Tooltip>\n                        </Box>\n                        <Box id={\"image-always-face-camera-switch\"}>\n                            <Switch\n                                initialValue={this.state.alwaysFaceCamera}\n                                onChange={(alwaysFaceCamera: boolean) => this.setState({ alwaysFaceCamera }, () => {\n                                    if (this.props.assetID)\n                                        updateAssetAlwaysFaceCamera(this.props.assetID, this.state.alwaysFaceCamera);\n                                })}\n                            />\n                        </Box>\n                    </Box>\n                </Box>\n                <Box style={{ flex: 1, minHeight: 0 }}>\n                    <MediaPreview\n                        defaultRotation={this.props.assetID ? undefined : this.state.defaultOrientationZ}\n                        filePath={this.state.imageFilePath}\n                        title={this.state.imageName}\n                        onFileChange={(file: File | null) => this.handleChangeImageFile(file)}\n                        updateRotationCallBack={this.props.assetID ? undefined :\n                            (defaultOrientationZ: number) => this.handleRotation(defaultOrientationZ)}\n                        allowEdit={!this.props.assetID}\n                    />\n                </Box>\n                <ErrorLabel style={{ marginTop: \"3px\" }}>\n                    {this.state.errorDescription}\n                </ErrorLabel>\n            </Container>\n        );\n    }\n}\n", "import i18next from \"i18next\";\nimport * as React from \"react\";\nimport {\n    getAssetVideoID,\n    isAssetAlwaysFacingCamera,\n    updateAssetAlwaysFaceCamera,\n    updateAssetVideoID\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {Box, styled} from \"@mui/material\";\nimport {\n    getVideoFileSize,\n    getVideoTitle,\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {ErrorLabel} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/StepEditorDialog\";\nimport {VideoLibrary} from \"@root/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoLibrary\";\nimport {getAssetTitle, updateAssetTitle} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {VideoAssetForm} from \"@root/Frontend/Studio/Views/AssetsDialog/VideoAsset/VideoAssetForm\";\n\nconst VideoLibraryWrapper = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    flex: 1,\n    minHeight: 0\n});\n\nconst VideoAssetContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    flex: 1,\n    minHeight: 0\n});\n\ninterface VideoAssetCreatorState {\n    errorDescription: string\n    selectedVideoID: bigint\n    title: string\n    alwaysFaceCamera: boolean\n}\n\nexport class VideoAssetCreator extends React.Component {\n    private videoLibraryRef: React.RefObject<VideoLibrary> = React.createRef<VideoLibrary>();\n\n    props: {\n        assetID: bigint,\n        onAssetModified: (isValid: boolean) => void;\n    };\n    state: VideoAssetCreatorState = {\n        errorDescription: \"\",\n        selectedVideoID: BigInt(0), // Should never be null for the handleChangeVideoFile function\n        title: \"\",\n        alwaysFaceCamera: true\n    }\n\n    componentDidMount() {\n        if (!this.props.assetID)\n            return;\n\n        this.setState({\n            selectedVideoID: getAssetVideoID(this.props.assetID),\n            title: getAssetTitle(this.props.assetID),\n            alwaysFaceCamera: isAssetAlwaysFacingCamera(this.props.assetID)\n        });\n    }\n\n    public async onSave(temporary: boolean, assetID: bigint): Promise<boolean> {\n        if ((!getVideoFileSize(this.state.selectedVideoID) && !this.state.selectedVideoID) || !assetID)\n            return false;\n\n        // only save video id on creation\n        if (!this.props.assetID)\n            updateAssetVideoID(assetID, this.state.selectedVideoID);\n\n        // we will update the attributes of the asset and return the assetID\n        updateAssetTitle(assetID, this.state.title ? this.state.title : getVideoTitle(this.state.selectedVideoID));\n        updateAssetAlwaysFaceCamera(assetID, this.state.alwaysFaceCamera);\n        return true;\n    }\n\n    // used function, via InterfaceAssetCreator\n    public updateVideo(videoID: bigint) { this.videoLibraryRef.current?.updateVideo(videoID); }\n\n    public updateGroup(groupID: bigint) { this.videoLibraryRef.current?.updateGroup(groupID); }\n\n    public updatePeer(peerID: bigint) { this.videoLibraryRef.current?.updatePeer(peerID); }\n\n    private onSelectedVideo = (selectedVideoID: bigint) => {\n        this.setState({ selectedVideoID, errorDescription: \"\" });\n        this.props.onAssetModified(Boolean(selectedVideoID));\n    }\n\n    private onVideoLibraryError = (errorDescription: string) => {\n        this.setState({errorDescription});\n    }\n\n    render() {\n        return (\n            <VideoAssetContainer>\n                <VideoAssetForm assetID={this.props.assetID}\n                                title={this.state.title}\n                                alwaysFaceCamera={this.state.alwaysFaceCamera}\n                                onTitleChanged={(title: string) => this.setState({ title })}\n                                onTitleBlur={() => {\n                                    if (this.props.assetID)\n                                        updateAssetTitle(this.props.assetID, this.state.title);\n                                }}\n                                onAlwaysFaceCameraChanged={(alwaysFaceCamera: boolean) => {\n                                    this.setState({alwaysFaceCamera}, () => {\n                                        if (this.props.assetID)\n                                            updateAssetAlwaysFaceCamera(this.props.assetID, alwaysFaceCamera);\n                                    });\n                                }}\n                />\n                <VideoLibraryWrapper>\n                    <VideoLibrary\n                        ref={this.videoLibraryRef}\n                        onError={this.onVideoLibraryError}\n                        onSelectedVideo={this.onSelectedVideo}\n                        selectedVideo={this.state.selectedVideoID}\n                        disabled={Boolean(this.props.assetID)}\n                    />\n                </VideoLibraryWrapper>\n                <ErrorLabel style={{ marginTop: \"3px\" }}>\n                    {this.state.errorDescription}\n                </ErrorLabel>\n            </VideoAssetContainer>\n        );\n    }\n}\n", "import * as React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Info} from \"@root/react-components/src/icons/Info\";\nimport {Switch} from \"@root/react-components/src/inputs/Switch\";\nimport {dark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\n\nconst FormContainer = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"flex-end\",\n    gap: \"100px\"\n});\n\nconst SwitchWrapper = styled(Box)({\n    display: \"flex\",\n    alignItems: \"flex-start\",\n    justifyContent: \"space-between\",\n    flex: 1,\n    paddingRight: \"4px\"\n});\n\nconst InfoIcon = styled(Box)({\n    height: \"8px\",\n    width: \"8px\",\n    display: \"inline-flex\",\n    backgroundColor: dark,\n    borderRadius: \"50px\",\n    color: white,\n    padding: \"3px\",\n    marginLeft: \"6px\",\n    \"& svg\": { width: \"100%\" }\n});\n\nconst TooltipWrapper = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    marginTop: \"6px\"\n});\n\ninterface VideoAssetFormProps {\n    assetID: bigint | null\n    alwaysFaceCamera: boolean\n    title: string\n    onTitleChanged: (title: string) => void\n    onTitleBlur: () => void\n    onAlwaysFaceCameraChanged: (alwaysFaceCamera: boolean) => void\n}\nexport class VideoAssetForm extends React.Component {\n    props: VideoAssetFormProps;\n\n    render() {\n        return (\n            <FormContainer>\n                <Box sx={{flex: 3}}>\n                    <InputText\n                        id=\"video-title-area\"\n                        dark\n                        value={this.props.title}\n                        placeholder={i18next.t(\"Asset Video Title\")}\n                        label={i18next.t(\"Title\")}\n                        onChange={(title: string) => this.props.onTitleChanged(title)}\n                        onBlur={this.props.onTitleBlur}\n                    />\n                </Box>\n                <SwitchWrapper>\n                    <TooltipWrapper>\n                        <Label dark style={{marginTop: \"0px\"}}>{i18next.t(\"Face the user\")}</Label>\n                        <Tooltip\n                            placement=\"right-start\"\n                            title={i18next.t(\"When enabled, the video asset will always face the user\")}>\n                            <InfoIcon><Info /></InfoIcon>\n                        </Tooltip>\n                    </TooltipWrapper>\n                    <Box id={\"video-always-face-camera-switch\"}>\n                        <Switch\n                            initialValue={this.props.alwaysFaceCamera}\n                            onChange={(alwaysFaceCamera: boolean) =>\n                                this.props.onAlwaysFaceCameraChanged(alwaysFaceCamera)\n                            }\n                        />\n                    </Box>\n                </SwitchWrapper>\n            </FormContainer>\n        );\n    }\n}", "import * as React from \"react\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {\n    getAssetMTConnectAgentURL,\n    addObservedMTConnectDataItem,\n    getAssetMTConnectAvailableDataItems,\n    getAssetMTConnectObservedDataItems,\n    removeObservedMTConnectDataItem,\n    updateAssetMTConnectAgentURL\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {AvailableDataItemsList} from \"@root/Frontend/Studio/Views/AssetsDialog/MTConnect/AvailableDataItemsList\";\nimport {ObservedDataItemsList} from \"@root/Frontend/Studio/Views/AssetsDialog/MTConnect/ObservedDataItemsList\";\nimport {Box, styled} from \"@mui/material\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport i18next from \"i18next\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {red, grey, green} from \"@root/react-components/src/values/colors/colors\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Check} from \"@root/react-components/src/icons/Check\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Mobile} from \"@root/react-components/src/icons/Mobile\";\nimport {HoloGlasses} from \"@root/react-components/src/icons/HoloGlasses\";\nimport {getCurrentWorldID, getWorldTitle} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\n\nconst AssetCreatorWrapper = styled(Box)({\n    height: \"100%\",\n    minHeight: 0,\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginBottom: \"10px\"\n});\n\nconst DataItemListsWrapper = styled(Box)({\n    height: '100%',\n    minHeight: 0,\n    display: 'flex',\n    flexDirection: 'column'\n});\n\nconst IconWrapper = styled(Box)({\n    display: \"flex\",\n    \"& > svg\": {\n        width: \"24px\",\n        height: \"24px\"\n    }\n});\n\nconst MessageWrapper = styled(Box)({\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\"\n});\n\nconst DeviceWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"center\",\n    gap: \"64px\",\n    \"& > svg\": {\n        width: \"48px\",\n        height: \"48px\"\n    }\n});\n\nenum RenderType { EDIT_AGENT_URL, AWAIT_DATA_ITEM, EDIT_DATA_ITEM }\n\ninterface StateAssetMTConnect {\n    agentURL: string,\n    errorAgentURL: string | null,\n    availableDataItems: Set<string>,\n    observedDataItems: string[];\n}\n\nexport class MTConnectAssetCreator extends React.Component implements InterfaceAssetCreator {\n    props: {\n        assetID: bigint,\n        onCreateAsset: () => bigint\n    };\n    state: StateAssetMTConnect = {\n        agentURL: \"\",\n        errorAgentURL: null,\n        availableDataItems: new Set<string>(),\n        observedDataItems: []\n    };\n\n    /// This HTMLObjectElement allows us to test loading of MTConnect URL (which are basic XML)\n    private latestResourceURL: string  = \"\";\n    private currentPromiseURL: Promise<string> | null = null;\n\n    componentDidMount() {\n\n        // if this is an existing Asset MTConnect, we fetch the data from the Core!\n        if(this.props.assetID){\n            const agentURL: string = getAssetMTConnectAgentURL(this.props.assetID);\n            const availableDataItems: Set<string> = getAssetMTConnectAvailableDataItems(this.props.assetID);\n            const observedDataItems: string[] = getAssetMTConnectObservedDataItems(this.props.assetID);\n            this.setState({agentURL, availableDataItems, observedDataItems});\n        }\n\n    }\n\n    /// create asset if needed and update the MTConnect agent URL\n    private onCreateAssetMTConnect(){\n        const assetID: bigint = this.props.assetID ? this.props.assetID : this.props.onCreateAsset();\n        if(assetID)\n            updateAssetMTConnectAgentURL(assetID, this.removeTrailingSlash(this.state.agentURL));\n    }\n\n    public async onSave(temporary: boolean, assetID: bigint): Promise<boolean>  {\n        if(temporary){\n            AdapterLog.ERROR(\"Cannot save temporary assetMT connect for now\");\n            return false;\n        }\n\n        AdapterLog.DEBUG(\"MTConnect onSave!\");\n        return true;\n    }\n\n    private onDataItemListChange(dataItemID: string, observed: boolean){\n        if(observed) {\n            this.setState((prevState: StateAssetMTConnect) =>\n                ({ observedDataItems: [...prevState.observedDataItems, dataItemID] }));\n            addObservedMTConnectDataItem(this.props.assetID, dataItemID);\n        } else {\n            this.setState((prevState: StateAssetMTConnect) =>\n                ({ observedDataItems: prevState.observedDataItems.filter(id => id !== dataItemID) }));\n            removeObservedMTConnectDataItem(this.props.assetID, dataItemID);\n        }\n    }\n\n    /// Verifies if resource URL can be loaded (ie. XML file), returns error (if any)\n    private async isValidResourceURL(resourceURL: string): Promise<string>{\n\n        // verify we can create URL from it, and make sure they're not starting with baseURL\n        try{\n            const url: URL = new URL(\"\", resourceURL);\n            resourceURL = url.toString();\n        }\n        catch (ex) { return \"Invalid URL\"; }\n\n        // verify nothing is already waiting after a request\n        this.latestResourceURL = resourceURL;\n        while(this.currentPromiseURL) {\n            await this.currentPromiseURL;\n\n            // verify if a newer query was made, we can abort...\n            if(this.latestResourceURL !== resourceURL)\n                return \"...\";\n        }\n\n        AdapterLog.INFO(\"Testing agent URL: \" + resourceURL.toString());\n\n        // create the Promise that will wait after our request\n        this.currentPromiseURL = new Promise(async (res) => {\n            try {\n                await fetch(resourceURL, { mode: \"no-cors\", signal: AbortSignal.timeout(2000) });\n                res(\"\");\n            } catch(e) {\n                res(e?.name === \"AbortError\" ? \"URL timeout\" : \"Unreachable URL\");\n            }\n        });\n\n        // wait for it to resolve and then wipe it!\n        const error: string = await this.currentPromiseURL;\n        this.currentPromiseURL = null;\n        return error;\n    }\n\n    /// verify if ends with '/', remove it\n    private removeTrailingSlash(url: string): string{\n        return url && url.at(-1) === \"/\" ? url.slice(0, -1) : url;\n    }\n\n    private async tryAgentURL(agentURL: string): Promise<string> {\n        agentURL = this.removeTrailingSlash(agentURL);\n\n        // verify if the '/current' URL is valid\n        const errorCurrent: string = await this.isValidResourceURL(agentURL + \"/current\");\n        if(errorCurrent)\n            return errorCurrent;\n\n        // verify if the '/probe' URL is valid\n        const errorProbe: string = await this.isValidResourceURL(agentURL + \"/probe\");\n        if(errorProbe)\n            return errorProbe;\n\n        return \"\"; // return no error!\n    }\n\n    /// returns the current render type\n    private getRenderType(): RenderType {\n        if (!this.props.assetID)\n            return RenderType.EDIT_AGENT_URL;\n        if (!this.state.availableDataItems.size)\n            return RenderType.AWAIT_DATA_ITEM;\n        return RenderType.EDIT_DATA_ITEM;\n    }\n\n    /// returns the agent status icon color\n    private getIconColor(): string {\n        if(this.state.errorAgentURL === null)\n            return grey;\n        if(this.state.errorAgentURL)\n            return red;\n        return green;\n    }\n\n    private renderAgentUrlInput(renderType: RenderType): React.ReactElement {\n        const validURL: boolean = renderType !== RenderType.EDIT_AGENT_URL || this.state.errorAgentURL === \"\";\n        return <div style={{display: 'flex', alignItems: 'center', height: '40px'}}>\n            <InputText\n                value={this.state.agentURL}\n                dark\n                readOnly={renderType !== RenderType.EDIT_AGENT_URL}\n                placeholder=\"https://demo.mtconnect.org\"\n                label={i18next.t(\"Agent URL\")}\n                onChange={async (agentURL: string) => {\n\n                    // assign agentURL and wipe error until re-checked!\n                    this.setState({agentURL, errorAgentURL: null});\n                    const error: string = await this.tryAgentURL(agentURL);\n\n                    // verify if the agent URL we just tested is the same\n                    if(this.state.agentURL === agentURL)\n                        this.setState({errorAgentURL: error});\n                }}\n            />\n            <Tooltip placement=\"bottom-end\" title={i18next.t(this.state.errorAgentURL ?? \"\")}>\n                <IconWrapper style={{color: this.getIconColor()}}>\n                    {validURL ? <Check/> : <Close/>}\n                </IconWrapper>\n            </Tooltip>\n\n            {renderType == RenderType.EDIT_AGENT_URL && <Button\n                disabled={this.state.errorAgentURL !== \"\"}\n                onClick={() => this.onCreateAssetMTConnect()}\n                variant=\"outlined\">{i18next.t(\"Confirm\")}\n            </Button>}\n        </div>;\n    }\n\n    private renderBottomSection(renderType: RenderType): React.ReactElement | null {\n        switch (renderType) {\n            case RenderType.EDIT_AGENT_URL: return null;\n            case RenderType.AWAIT_DATA_ITEM:\n                return (<MessageWrapper>\n                    <Box style={{font: primaryFontXLarge, textAlign: \"center\", padding: \"6px\"}}>\n                        {i18next.t(\"In order to verify connectivity with MTConnect Agent, please open World\")}<br/>\n                        <em>{getWorldTitle(getCurrentWorldID())}</em><br/>\n                        {i18next.t(\"using an iOS device or Hololens glasses\")}\n                    </Box>\n                    <DeviceWrapper>\n                        <Mobile/><HoloGlasses size={48}/>\n                    </DeviceWrapper>\n                    <Box style={{font: primaryFontLarge, textAlign: \"center\", padding: \"6px\"}}>\n                        {i18next.t(\"Make sure the device is on the same network as the Agent MTConnect\")}&nbsp;\n                    </Box>\n                </MessageWrapper>);\n            case RenderType.EDIT_DATA_ITEM:\n                return (<DataItemListsWrapper>\n                    <AvailableDataItemsList\n                        assetID={this.props.assetID}\n                        availableDataItemIDs={Array.from(this.state.availableDataItems)}\n                        isDataItemObserved={(dataItemID: string) =>\n                            this.state.observedDataItems.includes(dataItemID)}\n                        onDataItemListChange={(dataItemID: string, observed: boolean) =>\n                            this.onDataItemListChange(dataItemID, observed)}\n                    />\n                    <ObservedDataItemsList assetID={this.props.assetID} dataItems={this.state.observedDataItems}/>\n                </DataItemListsWrapper>);\n        }\n    }\n\n    render(): React.ReactElement {\n        if(UtilsShared.isSafariUserAgent(navigator.userAgent))\n            return (\n                <Box style={{width: \"100%\", paddingTop: \"50px\", textAlign: \"center\"}}>\n                    {`${i18next.t(\n                        \"This feature is currently not supported on Safari, please use a different browser\"\n                    )}`}\n                </Box>\n            )\n\n        const renderType: RenderType = this.getRenderType();\n        return (\n            <AssetCreatorWrapper>\n                {this.renderAgentUrlInput(renderType)}\n                {this.renderBottomSection(renderType)}\n            </AssetCreatorWrapper>\n        );\n    }\n}\n", "import React from \"react\";\nimport styled from \"styled-components\";\nimport {Box, Grid} from \"@mui/material\";\nimport {AvailableDataItem} from \"@root/Frontend/Studio/Views/AssetsDialog/MTConnect/AvailableDataItem\";\nimport {darkenPrimary, darkenWhite, white} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst GridItemWrapper = styled(Grid)({\n    display: 'flex',\n    justifyContent: 'center',\n    fontSize: '1rem'\n});\nGridItemWrapper.defaultProps = {\n    ...GridItemWrapper.defaultProps,\n    xs: 3,\n    item: true,\n};\n\nconst AvailableDataItemsContainer = styled(Box)({\n    paddingTop: '5px',\n    flex: 1,\n    overflowY: 'auto',\n    display: 'flex',\n    flexDirection: 'column'\n});\n\nconst DataItemListWrapper = styled(Box)({\n    flexGrow: '1',\n    overflowY: 'auto',\n    /* width */\n    \"&::-webkit-scrollbar\": {\n        width: \"10px\",\n        height: \"10px\"\n    },\n    /* Track */\n    \"&::-webkit-scrollbar-track\": {\n        width: 0,\n        backgroundColor: white,\n        borderRadius: \"10px\",\n        marginBlock: \"5px\"\n    },\n    /* Handle */\n    \"&::-webkit-scrollbar-thumb\": {\n        background: darkenPrimary,\n        borderRadius: \"10px\",\n    },\n    /* Handle on hover */\n    \"&::-webkit-scrollbar-thumb:hover\": {\n        background: darkenPrimary\n    }\n});\n\nconst GridContainerWrapper = styled(Grid)({\n    paddingY: \"5px\",\n    borderBottom: `1px solid ${darkenWhite}`\n});\n\nexport class AvailableDataItemsList extends React.Component {\n    props: {\n        assetID: bigint,\n        availableDataItemIDs: string[],\n        isDataItemObserved: (dataItemID: string) => boolean,\n        onDataItemListChange: (dataItemID: string, observed: boolean) => void\n    };\n\n    render() {\n        return (\n            <AvailableDataItemsContainer>\n                <Box sx={{font: primaryFontLarge}}>{i18next.t(\"Available DataItems\")}</Box>\n                <DataItemListWrapper>\n                <GridContainerWrapper container columns={12}>\n                    <GridItemWrapper>{i18next.t(\"DataItemID\")}</GridItemWrapper>\n                    <GridItemWrapper>{i18next.t(\"Unit\")}</GridItemWrapper>\n                    <GridItemWrapper>{i18next.t(\"Category\")}</GridItemWrapper>\n                    <GridItemWrapper>{i18next.t(\"Observed\")}</GridItemWrapper>\n                </GridContainerWrapper>\n                    {this.props.availableDataItemIDs.map((dataItemID: string) =>\n                        <AvailableDataItem key={dataItemID}\n                                           assetID={this.props.assetID}\n                                           dataItemID={dataItemID}\n                                           isDataItemObserved={this.props.isDataItemObserved(dataItemID)}\n                                           onDataItemObservedChange={(observed: boolean) =>\n                                               this.props.onDataItemListChange(dataItemID, observed)}/>\n                    )\n                }\n                </DataItemListWrapper>\n            </AvailableDataItemsContainer>\n        )\n    }\n}\n", "import * as React from \"react\";\nimport { getMTConnectDataItem} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {Grid, styled} from \"@mui/material\";\nimport {Checkbox} from \"@root/react-components/src/inputs/Checkbox\";\nimport {darkenWhite} from \"@root/react-components/src/values/colors/colors\";\nimport {MTConnect} from \"@root/Frontend/Studio/Types/MTConnect\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\nimport i18next from \"i18next\";\n\nconst GridItemWrapper = styled(Grid)({\n    display: 'flex',\n    justifyContent: 'center'\n});\nGridItemWrapper.defaultProps = {\n    ...GridItemWrapper.defaultProps,\n    xs: 3,\n    item: true,\n};\n\nconst GridContainerWrapper = styled(Grid)({\n    padding: \"5px 0\",\n    borderBottom: `1px solid ${darkenWhite}`\n});\n\nexport class AvailableDataItem extends React.Component {\n    props: {\n        assetID: bigint,\n        dataItemID: string,\n        isDataItemObserved: boolean,\n        onDataItemObservedChange: (observed: boolean) => void;\n    };\n\n    state: { dataItem: MTConnect.DataItem } = { dataItem: null };\n\n    componentDidMount() {\n        this.setState({\n            dataItem: getMTConnectDataItem(this.props.assetID, this.props.dataItemID)\n        });\n    }\n\n    render() {\n        if(!this.state.dataItem)\n            return <CenteredLoading/>\n\n        return (\n            <GridContainerWrapper container spacing={0} columns={12}>\n                    <GridItemWrapper>{this.props.dataItemID}</GridItemWrapper>\n                    <GridItemWrapper>{this.state.dataItem.unit}</GridItemWrapper>\n                    <GridItemWrapper>{i18next.t(this.state.dataItem.category)}</GridItemWrapper>\n                    <GridItemWrapper>\n                        <Checkbox style={{margin: \"auto\"}}\n                                  checked={this.props.isDataItemObserved}\n                                  onClick={(checked: boolean) => this.props.onDataItemObservedChange(!checked)}\n                            />\n                    </GridItemWrapper>\n\n            </GridContainerWrapper>\n        );\n    }\n}\n", "import React from \"react\";\nimport {ObservedDataItem} from \"@root/Frontend/Studio/Views/AssetsDialog/MTConnect/ObservedDataItem\";\nimport {Box, Grid, styled} from \"@mui/material\";\nimport {darkenPrimary, darkenWhite, white} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst GridItemWrapper = styled(Grid)({\n    display: 'flex',\n    justifyContent: 'center',\n    color: white,\n    font: primaryFontLarge\n});\nGridItemWrapper.defaultProps = {\n    ...GridItemWrapper.defaultProps,\n    xs: 2,\n    item: true,\n};\n\nconst GridContainerWrapper = styled(Grid)({\n    padding: \"0 8px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    boxSizing: \"border-box\",\n    margin: \"5px 0\"\n});\n\nconst ObservedDataItemsContainer = styled(Box)({\n  paddingTop: '5px',\n  height: '163px',\n  overflowY: 'auto',\n  display: 'flex',\n  flexDirection: 'column'\n});\n\nconst DataItemListWrapper = styled(Box)({\n    flexGrow: '1',\n    overflowY: 'auto',\n    background: darkenPrimary,\n    padding: '0 10px 10px 10px',\n    borderRadius: '10px',\n    /* width */\n    \"&::-webkit-scrollbar\": {\n        width: \"10px\",\n        height: \"10px\"\n    },\n    /* Track */\n    \"&::-webkit-scrollbar-track\": {\n        width: 0,\n        backgroundColor: darkenPrimary,\n        borderRadius: \"10px\",\n        marginBlock: \"5px\"\n    },\n    /* Handle */\n    \"&::-webkit-scrollbar-thumb\": {\n        background: darkenWhite,\n        borderRadius: \"10px\",\n    },\n    /* Handle on hover */\n    \"&::-webkit-scrollbar-thumb:hover\": {\n        background: darkenWhite\n    }\n});\n\nexport class ObservedDataItemsList extends React.Component {\n    props: {\n        assetID: bigint,\n        dataItems: string[],\n    };\n\n    render() {\n        return (\n            <ObservedDataItemsContainer>\n                <Box sx={{font: primaryFontLarge}}>{i18next.t(\"Observed DataItems\")}</Box>\n                <DataItemListWrapper>\n                    <GridContainerWrapper container columns={11}>\n                        <GridItemWrapper>{i18next.t(\"DataItemID\")}</GridItemWrapper>\n                        <GridItemWrapper>{i18next.t(\"Unit\")}</GridItemWrapper>\n                        <GridItemWrapper>{i18next.t(\"Category\")}</GridItemWrapper>\n                        <GridItemWrapper>{i18next.t(\"Representation\")}</GridItemWrapper>\n                        <GridItemWrapper xs={3}>{i18next.t(\"Label\")}</GridItemWrapper>\n                    </GridContainerWrapper>\n                    {this.props.dataItems.map((dataItemID: string) =>\n                        <ObservedDataItem key={dataItemID} dataItemID={dataItemID} assetID={this.props.assetID} />\n                    )}\n                </DataItemListWrapper>\n            </ObservedDataItemsContainer>\n        )\n    }\n}\n", "import * as React from \"react\";\nimport {\n    getMTConnectDataItem,\n    getObservedMTConnectDataItemLabel,\n    getObservedMTConnectDataItemRepresentation,\n    updateMTConnectDataItemLabel,\n    updateMTConnectDataItemRepresentation\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {Grid, styled} from \"@mui/material\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport i18next from \"i18next\";\nimport {white} from \"@root/react-components/src/values/colors/colors\";\nimport {MTConnect} from \"@root/Frontend/Studio/Types/MTConnect\";\nimport {CenteredLoading} from \"@root/react-components/src/misc/CenteredLoading\";\n\nconst GridItemWrapper = styled(Grid)({\n    display: 'flex',\n    justifyContent: 'center'\n});\nGridItemWrapper.defaultProps = {\n    ...GridItemWrapper.defaultProps,\n    xs: 2,\n    item: true,\n};\n\nconst GridContainerWrapper = styled(Grid)({\n    minHeight: \"36px\",\n    padding: \"8px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    backgroundColor: white,\n    borderRadius: \"10px\",\n    boxSizing: \"border-box\",\n    margin: \"5px 0\"\n});\n\ninterface ObservedDataItemState{\n    dataItem: MTConnect.DataItem,\n    label: string,\n    representation: MTConnect.Representation,\n}\n\nexport class ObservedDataItem extends React.Component {\n    props: {\n        assetID: bigint,\n        dataItemID: string,\n    };\n    state: ObservedDataItemState = {\n        dataItem: null,\n        label: \"\",\n        representation: MTConnect.Representation.TEXT,\n    };\n\n    componentDidMount() {\n        // get observedDataItem data\n        this.setState({\n            dataItem: getMTConnectDataItem(this.props.assetID, this.props.dataItemID),\n            label: getObservedMTConnectDataItemLabel(this.props.assetID, this.props.dataItemID),\n            representation: getObservedMTConnectDataItemRepresentation(this.props.assetID, this.props.dataItemID)\n        });\n    }\n\n    render() {\n        if(!this.state.dataItem)\n            return <CenteredLoading/>\n\n        return (\n            <GridContainerWrapper container columns={11}>\n                <GridItemWrapper>{this.props.dataItemID}</GridItemWrapper>\n                <GridItemWrapper>{this.state.dataItem.unit}</GridItemWrapper>\n                <GridItemWrapper>{i18next.t(this.state.dataItem.category)}</GridItemWrapper>\n                <GridItemWrapper>\n                    {this.state.dataItem.category === MTConnect.Category.SAMPLE &&\n                        <Select\n                            options={Object.values(MTConnect.Representation).map((value: MTConnect.Representation) =>\n                                i18next.t(value))}\n                            default={Object.values(MTConnect.Representation).indexOf(this.state.representation)}\n                            onChange={(value: number) => updateMTConnectDataItemRepresentation(this.props.assetID,\n                                this.props.dataItemID, value)}\n                        />\n                    }\n                </GridItemWrapper>\n                <Grid item xs={3} sx={{padding: '0 20px'}}>\n                    <InputText defaultValue={this.state.label}\n                               placeholder={i18next.t(\"Enter Label\")}\n                               dark\n                               onBlur={() => updateMTConnectDataItemLabel(this.props.assetID,\n                                                                          this.props.dataItemID, this.state.label)}\n                               onChange={(label: string) => this.setState({ label })}\n                    />\n                </Grid>\n            </GridContainerWrapper>\n        );\n    }\n}\n", "import React from \"react\";\n\nexport const Mobile = () =>\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n    <path style={{fill: \"currentColor\"}} d=\"M19 2c0-1.104-.896-2-2-2h-10c-1.104 0-2 .896-2 2v20c0 1.104.896 2 2 2h10c1.104 0 2-.896 2-2v-20zm-8.5 0h3c.276 0 .5.224.5.5s-.224.5-.5.5h-3c-.276 0-.5-.224-.5-.5s.224-.5.5-.5zm1.5 20c-.553 0-1-.448-1-1s.447-1 1-1c.552 0 .999.448.999 1s-.447 1-.999 1zm5-3h-10v-14.024h10v14.024z\"/>\n</svg>;\n", "import React from \"react\";\nimport {secondaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {getCurrentWorldID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {StepsContainer} from \"@root/Frontend/Studio/Views/StepsList/StepsContainer\";\nimport {Box, styled} from \"@mui/material\";\nimport {getCurrentStepID, getStepIDAtIndex, getStepsCount} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {SelectedStepContext} from \"Contexts/SelectedStepContext\";\n\nconst StepsPanelContainer = styled(Box)({\n    height: \"100%\",\n    width: \"100%\",\n    position: \"relative\",\n});\n\nconst UnselectMessage = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    font: secondaryFontXLarge,\n    textAlign: \"center\",\n    paddingTop: \"20px\",\n    justifyContent: \"center\"\n});\n\ninterface StepsPanelState { isSequenceVideoSelected: boolean; }\n\nexport class StepsPanel extends React.Component {\n    static contextType = SelectedStepContext;\n    private stepsContainerRef: React.RefObject<StepsContainer> = React.createRef<StepsContainer>();\n\n    context: React.ContextType<typeof SelectedStepContext>;\n    state: StepsPanelState = { isSequenceVideoSelected: false };\n\n    componentDidMount() {\n        if (!getCurrentSequenceID())\n            return;\n\n        if (getStepsCount())\n            this.context.selectStep( getCurrentStepID() ? getCurrentStepID() : getStepIDAtIndex(0));\n\n        // Update the user's status to indicate whether they have permission to edit the step or not.\n        this.context.updateCanEditStep();\n    }\n\n    public updateStepList() {\n        this.stepsContainerRef.current?.updateStepsList();\n    }\n\n    public updateStep(stepID: bigint) {\n        // update the steps controls\n        this.stepsContainerRef.current?.updateStep(stepID);\n\n        // update our context if the core changed the step\n        if (getCurrentStepID() !== this.context.selectedStepID)\n            this.context.selectStep(getCurrentStepID());\n    }\n\n    public updateSequence(sequenceID: bigint) {\n        if (sequenceID !== getCurrentSequenceID())\n            return;\n\n        this.stepsContainerRef.current?.updateSequence();\n    }\n\n    public updateText(textID: bigint) {\n        this.stepsContainerRef.current?.updateText(textID);\n    }\n\n    public updateAudio(audioID: bigint) {\n        if (audioID)\n            this.stepsContainerRef.current?.updateAudio(audioID);\n    }\n\n    public updateAsset(assetID: bigint) { this.stepsContainerRef.current?.updateAsset(assetID); }\n\n    public updateNode(nodeID: bigint) { this.stepsContainerRef.current?.updateNode(nodeID); }\n\n    public setSelectedNode(nodeID: bigint) { this.stepsContainerRef.current?.setSelectedNode(nodeID); }\n\n    public updateDocument(documentID: bigint) { this.stepsContainerRef.current?.updateDocument(documentID); }\n\n    public updateGroup(groupID: bigint) { this.stepsContainerRef.current?.updateGroup(groupID); }\n\n    public updatePeer(peerID: bigint) { this.stepsContainerRef.current?.updatePeer(peerID); }\n\n    public async openAssetsDialog(assetID: bigint): Promise<void> {\n        await this.stepsContainerRef.current?.openAssetsDialog(assetID);\n    }\n\n    public async importFile(file: File): Promise<void> {\n        await this.stepsContainerRef.current?.importFile(file);\n    }\n\n    public updateImportDocumentButton() { this.stepsContainerRef.current?.updateImportDocumentButton(); }\n\n    public isDocumentRecent(documentID: bigint): boolean {\n        return Boolean(this.stepsContainerRef.current?.isDocumentRecent(documentID));\n    }\n\n    public updateVideo(videoID: bigint): void { this.stepsContainerRef.current?.updateVideo(videoID); }\n\n    render(){\n        if (!getCurrentWorldID())\n            return <UnselectMessage> {i18next.t(\"Select a World first\")} </UnselectMessage>;\n\n        if (!getCurrentSequenceID())\n            return <UnselectMessage> {i18next.t(\"Select a Sequence first\")} </UnselectMessage>;\n\n        return (\n            <StepsPanelContainer>\n                <StepsContainer ref={this.stepsContainerRef} />\n            </StepsPanelContainer>\n        )\n    }\n}\n", "import React from \"react\"\nimport {StepsList} from \"@root/Frontend/Studio/Views/StepsList/StepsList/StepsList\";\nimport {StepsPlayer} from \"@root/Frontend/Studio/Views/StepsList/StepsPlayer\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {darkenWhite, lighterDark, white, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {Star} from \"@root/react-components/src/icons/Star\";\nimport {getCurrentStepID} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport styled from \"styled-components\";\nimport {PartsList} from \"@root/Frontend/Studio/Views/PartsList/PartsList\";\nimport {SelectedStepContext} from \"@root/Frontend/Studio/Contexts/SelectedStepContext\";\n\nconst HEIGHT_PLAYER: number = 50;\nconst MIN_HEIGHT_DYNAMIC_PARTS_LIST: number = 225;\n\nconst ListViewContainer = styled(\"div\")<{ heightPartsList: number }>`\n    height: calc(100% - ${props =>  props.heightPartsList + HEIGHT_PLAYER}px);\n    width: 100%;\n    position: relative;\n    box-sizing: border-box;\n`;\n\nconst DynamicPartsListContainer = styled(\"div\")`\n    width: calc(100% + 50px);\n    margin-left: -50px;\n    padding-left: 50px;\n    box-sizing: border-box;\n    background-color: ${lighterDark};\n    border-radius: 0 0 48px 0;\n    z-index: 9;\n    position: relative;\n    display: flex;\n    overflow: hidden;\n    & .section-title svg{\n        transform: rotate(35deg);\n        color: ${yellow};\n        height: 18px;\n        width: 18px;\n        margin-bottom: 3px;\n    }\n    & div {\n        /* Track */\n        &::-webkit-scrollbar-track {\n            background-color: ${darkenWhite}!important;\n        }\n    }\n`;\n\nexport class StepsContainer extends React.Component {\n    static contextType = SelectedStepContext;\n    private stepsContainerRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    private stepsListViewContainerRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    private containerRefDynamicPartsList: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    private dynamicPartsList: React.RefObject<PartsList> = React.createRef<PartsList>();\n    private stepsListRef: React.RefObject<StepsList> = React.createRef<StepsList>();\n    private stepPlayer: React.RefObject<StepsPlayer> = React.createRef<StepsPlayer>();\n\n    private heightPartsList: number = MIN_HEIGHT_DYNAMIC_PARTS_LIST;\n\n    context: React.ContextType<typeof SelectedStepContext>;\n\n    public updateStepsList() {\n        this.stepsListRef.current?.updateStepsList();\n        this.stepPlayer.current?.update();\n    }\n\n    public updateSequence() {\n        this.stepsListRef.current?.updateSequence();\n    }\n\n    public updateStep(stepID: bigint) {\n        this.stepsListRef.current?.updateStep(stepID);\n\n        if (stepID === getCurrentStepID())\n            this.stepPlayer.current?.forceUpdate();\n    }\n\n    public updateText(textID: bigint) {\n        this.stepsListRef.current?.updateText(textID);\n    }\n\n    public updateAudio(audioID: bigint) {\n        if (audioID)\n            this.stepsListRef.current?.updateAudio(audioID);\n    }\n\n    public updateGroup(groupID: bigint) { this.stepsListRef.current?.updateGroup(groupID); }\n\n    public updatePeer(peerID: bigint) { this.stepsListRef.current?.updatePeer(peerID); }\n\n    public updateAsset(assetID: bigint) { this.dynamicPartsList.current?.updateAsset(assetID); }\n\n    public updateNode(nodeID: bigint) {  this.dynamicPartsList.current?.updateNode(nodeID); }\n\n    public setSelectedNode(nodeID: bigint) {  this.dynamicPartsList.current?.setSelectedNode(nodeID); }\n\n    public updateDocument(documentID: bigint) {  this.stepsListRef.current?.updateDocument(documentID); }\n\n    public isDocumentRecent(documentID: bigint): boolean {\n        return this.dynamicPartsList.current?.isDocumentRecent(documentID) ?? false;\n    }\n\n    public async openAssetsDialog(assetID: bigint): Promise<void> {\n        await this.stepsListRef.current?.openAssetsDialog(assetID);\n    }\n\n    public async importFile(file: File): Promise<void> {\n        await this.stepsListRef.current?.importFile(file);\n    }\n\n    public updateImportDocumentButton() { this.stepsListRef.current?.updateImportDocumentButton(); }\n\n    public updateVideo(videoID: bigint): void {  this.stepsListRef.current?.updateVideo(videoID); }\n\n    private resizeLists(deltaY: number) {\n        // calculate new dynamic parts list height\n        this.heightPartsList -= deltaY;\n\n        // dont let dynamic parts list height go under minimum\n        if (this.heightPartsList < MIN_HEIGHT_DYNAMIC_PARTS_LIST)\n            this.heightPartsList = MIN_HEIGHT_DYNAMIC_PARTS_LIST;\n\n        // get container height as maximum height available\n        const heightMax: number = this.stepsContainerRef.current?.getBoundingClientRect().height ?? 0;\n        const heightSum: number =\n            this.heightPartsList + HEIGHT_PLAYER;\n\n        // check to not go over maximum height\n        if (heightSum >= heightMax)\n            this.heightPartsList = heightMax - HEIGHT_PLAYER;\n\n        if (this.stepsListViewContainerRef.current)\n            // apply new heights to resizable elements\n            this.stepsListViewContainerRef.current.style.height = \"calc(100% - \" + (heightSum) + \"px)\";\n\n        if (this.containerRefDynamicPartsList.current)\n            this.containerRefDynamicPartsList.current.style.height = this.heightPartsList + \"px\";\n    }\n\n    render() {\n        return (\n            <div ref={this.stepsContainerRef} style={{height: \"100%\"}}>\n                <ListViewContainer\n                    ref={this.stepsListViewContainerRef}\n                    heightPartsList={this.heightPartsList}\n                >\n                    <StepsList ref={this.stepsListRef} selectedStepID={this.context.selectedStepID} />\n                </ListViewContainer>\n\n                <div style={{\n                    height: HEIGHT_PLAYER,\n                    zIndex: 9,\n                    position: \"relative\"\n                }}>\n                    <StepsPlayer\n                        ref={this.stepPlayer}\n                        onResize={this.resizeLists.bind(this)}/>\n                </div>\n\n                <DynamicPartsListContainer\n                    ref={this.containerRefDynamicPartsList}\n                    style={{ height: this.heightPartsList }}\n                >\n                    <div style={{height: \"100%\", width: \"calc(100% - 40px)\"}}>\n                        <PartsList ref={this.dynamicPartsList} stepID={this.context.selectedStepID} />\n                    </div>\n                    <div style={{\n                        font: primaryFontXLarge,\n                        color: white,\n                        height: \"100%\",\n                        width: 40,\n                        display: \"flex\",\n                        justifyContent: \"center\",\n                        alignItems: \"flex-start\",\n                        padding: 6,\n                        boxSizing: \"border-box\"\n                    }}>\n                        <div className=\"section-title\"\n                             style={{transform: \"rotate(180deg)\", writingMode: \"vertical-rl\"}}>\n                            <span style={{marginBottom: 3}}>{i18next.t(\"Dynamic Assets\")}</span>\n                            <Star color={yellow} fillColor={yellow}/>\n                        </div>\n                    </div>\n                </DynamicPartsListContainer>\n            </div>\n        )\n    }\n}\n", "import * as React from \"react\";\nimport {CSSProperties, DragEvent} from \"react\";\nimport {FixedSizeList as List} from \"react-window\";\nimport {\n    getCurrentStepID,\n    getCurrentStepIndex,\n    getStepsCount,\n    getStepsList,\n    getStepType,\n} from \"Engine/AdapterWeb/Steps\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport i18next from \"i18next\";\nimport styled from \"styled-components\";\nimport {secondaryFontLarge, secondaryFontSmall,} from \"@root/react-components/src/values/fonts/fonts\";\nimport AutoSizer from \"react-virtualized-auto-sizer\";\nimport {\n    contrastRed,\n    dark,\n    darkenPrimary,\n    darkenWhite,\n    lightPrimary,\n    white\n} from \"@root/react-components/src/values/colors/colors\";\nimport {findLanguageForCurrentSequence} from \"Engine/AdapterWeb/Sequences\";\nimport {getCurrentSequenceID, getSequenceVideoID} from \"Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {getVideoSubtitlesUrlS3} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {StepEditorDialog} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/StepEditorDialog\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {StepItem} from \"@root/Frontend/Studio/Views/StepsList/StepsList/Step/StepItem\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Box} from \"@mui/material\";\nimport {Dialog} from \"@root/Frontend/Studio/DialogContainer\";\nimport isEqual from \"lodash/isEqual\";\nimport {SelectedStepContext} from \"Contexts/SelectedStepContext\";\nimport {LANGUAGE_VALUES} from \"@backend/Types/Language\";\nimport {Language} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport {GenerateStepsDialog} from \"@root/Frontend/Studio/Views/StepsList/StepsList/GenerateStepsDialog\";\nimport {getOriginalText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterText\";\nimport {getStepTextID, reorderStepList} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequence\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\n\nexport const FIRST_STEP_OFFSET = 10;\nconst HEIGHT_TRANSLATION_SELECT: number = 30;\n\nconst Wrapper = styled(\"div\")`\n    height: calc(100% - ${HEIGHT_TRANSLATION_SELECT}px);\n    width: 100%;\n`;\n\nconst TranslationLanguageSelectContainer = styled(\"div\")`\n    align-items: center;\n    display: flex;\n    color: ${dark};\n    font: ${secondaryFontLarge};\n    gap: 5px;\n    height: ${HEIGHT_TRANSLATION_SELECT}px;\n    margin: 0 15px;\n`;\n\nconst NoStep = styled(\"div\")`\n    font: ${secondaryFontLarge};\n    width: 100%;\n    text-align: center;\n    padding-top: 15px;\n    & > div:first-child{\n        margin-bottom: 6px;\n    }\n`;\n\nconst CreateFirstStepContainer = styled(\"div\")`\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 10px;\n`;\n\nconst ListWrapper = styled(\"div\")`\n    overflow: hidden;\n    height: 100%;\n    width: 100%;\n    & > div > div{\n        overflow-x: hidden!important;\n        \n        /* width */\n        &::-webkit-scrollbar {\n          width: 10px;\n          height: 10px;\n        }\n        \n        /* Track */\n        &::-webkit-scrollbar-track {\n          background-color: ${darkenWhite};\n        }\n         \n        /* Handle */\n        &::-webkit-scrollbar-thumb {\n          background: ${lightPrimary}; \n        }\n        \n        /* Handle on hover */\n        &::-webkit-scrollbar-thumb:hover {\n          background: ${darkenPrimary}; \n        }\n    }\n`;\n\nconst GEN_STEPS_DISABLED_1: string = \"Steps generation requires subtitles from the sequence video\";\nconst GEN_STEPS_DISABLED_2: string = \"Subtitles are currently unavailable, please try again later\";\n\ninterface StepsListProps {\n    selectedStepID: bigint\n}\n\ninterface StepsListState {\n    stepsIDs: bigint[];\n    stepEditorOpen: boolean;\n    stepEditorStepID: bigint;\n    stepEditorIndex: number;\n    draggedItem: bigint;\n    openDeleteDialog: boolean;\n    stepGeneratorDialogActive: boolean;\n    addStepTooltipTitle: string;\n}\n\nexport class StepsList extends React.Component {\n    static contextType = SelectedStepContext;\n    private stepsMapRef: Map<bigint, React.RefObject<StepItem>> = new Map();\n    private stepEditorDialogRef: React.RefObject<StepEditorDialog> = React.createRef();\n    private generateStepsDialogRef: React.RefObject<GenerateStepsDialog> = React.createRef();\n\n    context: React.ContextType<typeof SelectedStepContext>;\n    props: StepsListProps;\n    state: StepsListState = {\n        stepsIDs: [],\n        stepEditorOpen: false,\n        stepEditorStepID: BigInt(0),\n        stepEditorIndex: 0,\n        draggedItem: BigInt(0),\n        openDeleteDialog: false,\n        stepGeneratorDialogActive: false,\n        addStepTooltipTitle: \"\"\n    };\n\n    componentDidMount() {\n        this.updateStepsList();\n        this.updateSequence();\n    }\n\n    componentDidUpdate(prevProps: Readonly<StepsListProps>) {\n\n        if (this.props.selectedStepID && prevProps.selectedStepID !== this.props.selectedStepID) {\n            // If the current step title is loaded we can show the dialog\n            if (getOriginalText(getStepTextID(this.props.selectedStepID)))\n                this.setStateForCurrentStep();\n        }\n    }\n\n    // Updating the stepList to render the component\n    public updateStepsList() {\n        // verify if new steps list before assigning into state\n        const stepsIDs: bigint[] = getStepsList();\n        if (!isEqual(stepsIDs, this.state.stepsIDs))\n            this.setState({ stepsIDs });\n\n        if (!stepsIDs.length)\n            this.setState({ stepEditorOpen: false });\n    }\n\n    public updateSequence() {\n        this.setDefaultLanguage();\n\n        this.setState({ addStepTooltipTitle: this.getAddStepTooltipMessage() });\n    }\n\n    public updateStep(stepID: bigint) {\n        // The step need to be in the list\n        if (!this.state.stepsIDs.includes(stepID))\n            return;\n\n        this.stepsMapRef.get(stepID)?.current?.updateStep();\n\n        // The last condition refers to stopping the setState if the user opens the stepEditor to create a new step\n        if (stepID === getCurrentStepID() && this.state.stepEditorStepID !== stepID &&\n            !(this.state.stepEditorOpen && this.state.stepEditorStepID === BigInt(0)))\n            this.setStateForCurrentStep();\n\n        if (this.state.stepEditorStepID === stepID)\n            this.stepEditorDialogRef.current?.updateStep(stepID);\n    }\n\n    public updateText(textID: bigint) {\n        this.stepEditorDialogRef.current?.updateText(textID);\n        for (const stepRef of this.stepsMapRef.values())\n            stepRef.current?.updateText(textID);\n\n        this.setDefaultLanguage();\n    }\n\n    public updateAudio(audioID: bigint) {\n        for (const stepRef of this.stepsMapRef.values())\n            stepRef.current?.updateAudio(audioID);\n    }\n\n    public updateDocument(documentID: bigint) {\n        this.stepsMapRef.get(this.props.selectedStepID)?.current?.updateDocument(documentID);\n    }\n\n    public updateGroup(groupID: bigint) {\n        this.stepsMapRef.get(this.props.selectedStepID)?.current?.updateGroup(groupID);\n    }\n\n    public updatePeer(peerID: bigint) {\n        this.stepsMapRef.get(this.props.selectedStepID)?.current?.updatePeer(peerID);\n    }\n\n    public async openAssetsDialog(assetID: bigint): Promise<void> {\n        await this.stepsMapRef.get(this.props.selectedStepID)?.current?.openAssetsDialog(assetID);\n    }\n\n    public async importFile(file: File): Promise<void> {\n        await this.stepsMapRef.get(this.props.selectedStepID)?.current?.importFile(file);\n    }\n\n    public updateImportDocumentButton() {\n        this.stepsMapRef.get(this.props.selectedStepID)?.current?.updateImportDocumentButton();\n    }\n\n    public updateVideo(videoID: bigint): void {\n        this.stepEditorDialogRef.current?.updateVideo(videoID);\n        for (const stepID of this.state.stepsIDs) {\n            // if the step is animated, we should forward the update to the step\n            // it could be an update for a reference video or for the video library (adding temporary asset)\n            if (getStepType(stepID) === StepType.ANIMATED)\n                this.stepsMapRef.get(stepID)?.current?.updateVideo(videoID);\n        }\n\n        if (videoID === getSequenceVideoID(getCurrentSequenceID()))\n            this.setState({ addStepTooltipTitle: this.getAddStepTooltipMessage() });\n\n        this.generateStepsDialogRef.current?.updateVideo(videoID);\n    }\n\n    private getAddStepTooltipMessage(): string {\n        const sequenceVideoID: bigint = getSequenceVideoID(getCurrentSequenceID());\n\n        if (!sequenceVideoID)\n            return `${i18next.t(GEN_STEPS_DISABLED_1)}.`;\n\n        if (!getVideoSubtitlesUrlS3(sequenceVideoID))\n            return `${i18next.t(GEN_STEPS_DISABLED_1)}. ${i18next.t(GEN_STEPS_DISABLED_2)}.`;\n\n        return \"\";\n    }\n\n    private setDefaultLanguage() {\n        const defaultLanguage: Language | undefined = findLanguageForCurrentSequence();\n        this.context.setDefaultLanguage(defaultLanguage);\n    }\n\n    private setStepEditorState(stepEditorOpen: boolean, stepEditorStepID: bigint, stepEditorIndex: number) {\n        this.setState({ stepEditorOpen, stepEditorStepID, stepEditorIndex });\n    }\n\n    private setStateForCurrentStep() {\n        if (!this.props.selectedStepID) {\n            this.setStepEditorState(false, BigInt(0), 0);\n            return;\n        }\n\n        // Display editor at the current step\n        this.setStepEditorState(getStepType(this.props.selectedStepID) !== StepType.ANIMATED,\n                                        this.props.selectedStepID, getCurrentStepIndex());\n    }\n\n    private onDragStart(e: React.DragEvent<HTMLDivElement>, index: number) {\n        if (e.dataTransfer.types.includes('Files'))\n            return;\n\n        const target = e.target as HTMLElement;\n\n        // Creating the image that we will drag\n        e.dataTransfer.effectAllowed = \"move\";\n        target.style.backgroundColor = white;\n        target.style.zIndex = \"1000\";\n        target.addEventListener('dragend', () => this.onDragEnd());\n\n        // The setTimeout allows the draggable image to create before the draggable div is removed by rendering\n        setTimeout(() => this.setState({ draggedItem: this.state.stepsIDs[index] }));\n    }\n\n    private onDragOver(event: DragEvent<HTMLDivElement>, index: number) {\n       event.stopPropagation(); \n       event.preventDefault();\n\n       if (event.dataTransfer.types.includes('Files'))\n            return;\n\n        const draggedOverItem: bigint = this.state.stepsIDs[index];\n        // if the item is dragged over itself or to the same step, ignore\n        if (!this.state.draggedItem || this.state.draggedItem === draggedOverItem)\n            return;\n\n        // filter out the currently dragged item\n        let stepsIDs: bigint[] =\n            this.state.stepsIDs.filter((stepID: bigint) => stepID !== this.state.draggedItem);\n\n        // add the dragged item after the dragged over item\n        stepsIDs.splice(index, 0, this.state.draggedItem);\n\n        // Set the stepIDs render\n        this.setState({ stepsIDs });\n    }\n\n    private onDrop() {\n        const orderHasChanged: boolean = getStepsList().some((stepID: bigint, index: number) =>\n            stepID !== this.state.stepsIDs[index]\n        );\n        // call reorderStepList in the core with the new stepIDs\n        if (orderHasChanged)\n            reorderStepList(this.state.stepsIDs);\n\n        this.setState({ draggedItem: BigInt(0) });\n    }\n\n    private onDragEnd() {\n        if (this.state.draggedItem !== BigInt(0))\n            this.setState({\n                stepsIDs: getStepsList(),\n                draggedItem: BigInt(0)\n            });\n    }\n\n    private handleCreateStep(newStepIndex: number, stepType: StepType): bigint {\n        const newStepID: bigint = this.context.addStep(newStepIndex, stepType);\n        // TODO: this is where we should add the stepID at index inside => this.state.stepsIDs\n        return newStepID;\n    }\n\n    private handleDeleteStep() {\n        this.setState({ openDeleteDialog: false }, () => {\n            this.context.deleteStep(this.props.selectedStepID);\n            this.updateStepsList();\n        });\n    }\n\n    private rowRenderer = (props : { index: number, style: CSSProperties }) => {\n        const stepID: bigint = this.state.stepsIDs[props.index];\n        const stepRef: React.RefObject<StepItem> = React.createRef<StepItem>();\n        const currentStepIndex: number = this.state.stepsIDs.findIndex(\n            (stepID:bigint) => stepID === this.props.selectedStepID\n        );\n        const isBeforeCurrent: boolean = Boolean(currentStepIndex) && props.index < currentStepIndex;\n\n        this.stepsMapRef.set(stepID, stepRef);\n\n        return (\n            <div\n                key={\"Step-\" + stepID}\n                style={props.style}\n                onDragOver={(event: DragEvent<HTMLDivElement>) => {this.onDragOver(event, props.index)}}\n                onDrop={() => this.onDrop()}\n            >\n                <StepItem\n                    ref={stepRef}\n                    stepID={stepID}\n                    index={props.index}\n                    active={this.props.selectedStepID === stepID}\n                    isBeforeCurrent={isBeforeCurrent}\n                    type={getStepType(stepID)}\n                    editable={this.context.canEditStep && !this.state.draggedItem}\n                    isDraggable={\n                        this.context.canEditStep && this.props.selectedStepID === stepID && this.state.stepsIDs.length > 1\n                    }\n                    removeRef={() => {\n                        if(this.stepsMapRef.get(stepID) === stepRef)\n                            this.stepsMapRef.delete(stepID);\n                    }}\n                    handleOpenDialog={(stepID: bigint, index: number) => this.setStepEditorState(true, stepID, index)}\n                    draggedItem={this.state.draggedItem}\n                    onDragStart={(e: React.DragEvent<HTMLDivElement>, index: number) => this.onDragStart(e, index)}\n                    onDelete={() => this.setState({openDeleteDialog: true})}\n                    defaultLanguage={this.context.defaultLanguage}\n                    translationLanguage={this.context.translationLanguage}\n                />\n            </div>\n        );\n    };\n\n    render() {\n        if (!getCurrentSequenceID())\n            return <NoStep> {i18next.t(\"You need to select a sequence\")} </NoStep>\n\n        return (\n            <Wrapper>\n                {getStepsCount() ?\n                    <>\n                        <TranslationLanguageSelectContainer>\n                            {this.context.defaultLanguage ?\n                                <>\n                                    {i18next.t(\"Translation\")}\n                                    <Select\n                                        id={\"translation-language-select\"}\n                                        style={{flex: 1, color: dark}}\n                                        default={LANGUAGE_VALUES.indexOf(this.context.translationLanguage)}\n                                        options={LANGUAGE_VALUES.map((language: string) => i18next.t(language))}\n                                        onChange={(index: number) =>\n                                            this.context.setTranslationLanguage(LANGUAGE_VALUES[index])}\n                                    />\n                                </>\n                                :\n                                <div style={{font: secondaryFontSmall, color: contrastRed}}>\n                                    {i18next.t(\n                                        \"No default language found, language services may not function correctly\")}.\n                                </div>\n                            }\n                        </TranslationLanguageSelectContainer>\n                        <Box id=\"steps-list\" style={{ height: \"100%\", width: \"100%\" }}>\n                            <ListWrapper>\n                                <AutoSizer>\n                                    {(props: { height: number, width: number }) =>\n                                        <List\n                                            height={props.height}\n                                            width={props.width}\n                                            itemCount={this.state.stepsIDs.length}\n                                            itemSize={135}>\n                                            {this.rowRenderer.bind(this)}\n                                        </List>\n                                    }\n                                </AutoSizer>\n                            </ListWrapper>\n                        </Box>\n                    </>\n                    :\n                    <NoStep id=\"empty-step-list\">\n                        {this.context.canEditStep ?\n                            <CreateFirstStepContainer>\n                                {i18next.t(\"Create Your First Step\")}\n                                <Button\n                                    style={{ width: \"fit-content\" }}\n                                    id=\"add-step-button\"\n                                    onClick={() => this.setStepEditorState(true, BigInt(0), 0)}\n                                >\n                                    {i18next.t(\"Add Step\")}\n                                </Button>\n                                {i18next.t(\"or\")}\n                                <Tooltip\n                                    placement={\"right-end\"}\n                                    title={this.state.addStepTooltipTitle ?\n                                        <Box style={{textAlign: \"justify\"}}>\n                                            {this.state.addStepTooltipTitle}\n                                        </Box> : \"\"}\n                                >\n                                    <Box component={\"span\"} style={{display: \"inline-block\"}}>\n                                        <Button\n                                            style={{ width: \"fit-content\" }}\n                                            disabled={Boolean(this.state.addStepTooltipTitle)}\n                                            id=\"generate_steps\"\n                                            onClick={() => this.setState({ stepGeneratorDialogActive: true })}\n                                        >\n                                            {i18next.t(\"Generate Steps\")}\n                                        </Button>\n                                    </Box>\n                                </Tooltip>\n                            </CreateFirstStepContainer>\n                            :\n                            i18next.t(\"Sequence contains no steps\")\n                        }\n                    </NoStep>\n                }\n\n                {this.state.stepEditorOpen && App.getInstance().isEditing() &&\n                    <StepEditorDialog\n                        ref={this.stepEditorDialogRef}\n                        stepID={this.state.stepEditorStepID}\n                        index={this.state.stepEditorIndex}\n                        onClose={() => this.setStateForCurrentStep()}\n                        onCreateStep={(stepType: StepType) =>\n                            this.handleCreateStep(this.state.stepEditorIndex, stepType)}\n                    />\n                }\n\n                {this.state.openDeleteDialog &&\n                    <Dialog>\n                        <Box>\n                            {i18next.t(\"Are you sure you want to delete the step\")}\n                            &nbsp;{getOriginalText(getStepTextID(this.props.selectedStepID))} ?\n                        </Box>\n                        <Box sx={{display: \"flex\", paddingTop: \"15px\", justifyContent:\"flex-end\", gap:\"10px\"}}>\n                            <Button variant=\"outlined\" onClick={() => this.setState({openDeleteDialog: false})}>\n                                {i18next.t(\"Close\")}\n                            </Button>\n                            <Button id=\"delete-confirmation-btn\" color=\"error\" onClick={() => this.handleDeleteStep()}>\n                                {i18next.t(\"Delete\")}\n                            </Button>\n                        </Box>\n                    </Dialog>\n                }\n\n                {this.state.stepGeneratorDialogActive &&\n                    <GenerateStepsDialog\n                        ref={this.generateStepsDialogRef}\n                        sequenceID={getCurrentSequenceID()}\n                        onCreateStep={(index: number, type: StepType) => this.handleCreateStep(index, type)}\n                        onClose={() => this.setState({ stepGeneratorDialogActive: false })}\n                    />\n                }\n            </Wrapper>\n        )\n    }\n}\n", "import * as React from \"react\";\nimport {DragEvent} from \"react\";\nimport {\n    Audio,\n    Cloud,\n    Language,\n    MainModule,\n    Sequence,\n    Step,\n    StepBranching,\n    JumpDestination\n} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {\n    duplicateStep,\n    getCurrentStepID,\n    getProgress,\n    getStepAnimatedReferenceImageFilePath,\n    getStepAnimatedReferenceVideoID,\n    getStepsCount,\n    getStepsList,\n    getStepType,\n    isAtStart,\n    isPlaying,\n    reverseStepAnimated\n} from \"Engine/AdapterWeb/Steps\";\nimport styled from \"styled-components\";\nimport {\n    dark,\n    grey,\n    lightDark,\n    lighterDark,\n    lightGrey,\n    lightPrimary,\n    red,\n    white,\n    yellow\n} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge, primaryFontXLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {FIRST_STEP_OFFSET} from \"@root/Frontend/Studio/Views/StepsList/StepsList/StepsList\";\nimport {UtilsStepRenderer} from \"./UtilsStepRenderer\"\nimport {IconMenu} from \"@root/react-components/src/misc/IconMenu\";\nimport i18next from \"i18next\";\nimport {ThreeDotsV} from \"@root/react-components/src/icons/ThreeDotsV\";\nimport {DragIcon} from \"@root/react-components/src/icons/DragIcon\";\nimport {ImageIcon} from \"@root/react-components/src/icons/ImageIcon\";\nimport {VideoAutoPlayer} from \"@root/react-components/src/icons/VideoAutoPlayer\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {attemptPlayAudio} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\"\nimport {SelectedStepContext} from \"@root/Frontend/Studio/Contexts/SelectedStepContext\";\nimport {Volume} from \"@root/react-components/src/icons/Volume\";\nimport {AddAssetButton} from \"@root/Frontend/Studio/Views/AssetsDialog/AddAssetButton\";\nimport {AssetDialog} from \"@root/Frontend/Studio/Views/AssetsDialog/AssetDialog\";\nimport {\n    findLanguageForCurrentSequence,\n    isCurrentSequenceInEvaluationMode\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {\n    getChildSequenceID,\n    getCurrentSequenceID,\n    getCurrentWorldSequencesList,\n    getParentSequenceID\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {Warning} from \"@root/react-components/src/icons/Warning\";\nimport {AssetType} from \"@backend/Types/AssetType\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {addAsset} from \"@root/Frontend/Studio/Engine/AdapterWeb/Assets\";\nimport {Box, Skeleton} from \"@mui/material\";\nimport isEqual from \"lodash/isEqual\";\nimport {\n    getVideoLocalPath,\n    getVideoTitle,\n    getVideoUrlS3,\n    isVideoLoaded,\n    loadVideo\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {Loading} from \"@root/react-components/src/logo/Loading\";\nimport {MenuOption} from \"@root/react-components/src/misc/MenuOption\";\nimport {AddStep} from \"@root/Frontend/Studio/Views/StepsList/StepsList/Step/AddStep\";\nimport {\n    getStepQuestionAnswerTexts,\n    getStepQuestionTextExplanationID,\n    getStepTextID\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequence\"\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Text} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nconst HEIGHT_STEP_TITLE = 72;\nconst WIDTH_STEP_INDEX_AND_OPTIONS = 28;\nconst WIDTH_STEP_TIMELINE = 32;\n\nconst StepWrapper = styled(\"div\")<{\n    isActive: boolean\n    isDragging: boolean\n    index: number\n}>`\n    display: flex;\n    color: ${dark};\n    border-bottom: 1px solid ${grey};\n    position: relative;\n\n    // first step has a small offset gap to display the add step at index 0\n    margin-top: ${props => props.index === 0 ? `${FIRST_STEP_OFFSET}px` : \"unset\"};\n    height: ${props => props.index === 0 ? `calc(100% - ${FIRST_STEP_OFFSET}px)` : \"100%\"};\n    border-top: ${props => props.index === 0 ? `1px solid ${grey}` : \"unset\"};\n\n    & > div {\n        transition: 0.1s opacity;\n    }\n\n    &:hover {\n        & .highlight-on-hover {\n            opacity: ${props => !props.isDragging ? 1 : 0.6};\n        }\n    }\n\n    & .highlight-on-hover {\n        opacity: ${props => props.isActive && !props.isDragging ? 1 : 0.6};\n    }\n`;\n\nconst StepIndexAndOptions = styled(\"div\")`\n    width: ${WIDTH_STEP_INDEX_AND_OPTIONS}px;\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n    align-items: center;\n    padding-bottom: 3px;\n    box-sizing: border-box;\n    & svg{\n        height: 18px;\n        width: 18px;\n    }\n`;\n\nconst StepIndex = styled(\"div\")`\n    background-color: ${dark};\n    font: ${primaryFontXLarge};\n    color: ${white};\n    border-bottom-right-radius: 6px;\n    height: 28px;\n    width: ${WIDTH_STEP_INDEX_AND_OPTIONS}px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    & svg {\n        width: 20px;\n        height: 20px;\n    }\n`;\n\nconst StepData = styled(\"div\")`\n    width: calc(100% - ${WIDTH_STEP_INDEX_AND_OPTIONS + WIDTH_STEP_TIMELINE}px);\n    box-sizing: border-box;\n    display: flex;\n    justify-content: space-between;\n    flex-direction: column;\n    padding: 6px 6px 12px 6px;\n`;\n\nconst StepOptions = styled(\"div\")`\n    position: absolute;\n    bottom: 5px;\n    left: 2.5px;\n    height: 20px; \n    display: flex;\n    \n    & svg {\n        width: 20px;\n        height: 20px;   \n    }\n`;\n\nconst StepTitle = styled(\"div\")`\n    font: ${secondaryFontMedium};\n    color: ${dark};\n    height: ${HEIGHT_STEP_TITLE}px;\n    word-break: break-word;\n    overflow: hidden;\n    \n    & svg {\n        opacity: 0;\n        transition: 0.1s opacity;\n        height: 12px;\n        width: 12px;\n        margin-left: 3px;\n        vertical-align: middle;\n    }\n    &:hover{\n        & svg{\n            opacity: 1;\n        }\n        overflow-y: auto;\n    }\n    &::-webkit-scrollbar { width: 5px; },\n        /* Track */\n    &::-webkit-scrollbar-track { backgroundColor: \"transparent\"; }\n        /* Handle */\n    &::-webkit-scrollbar-thumb {\n        borderRadius: 10px;\n        background: ${lightGrey};\n    }\n        /* Handle on hover */\n    \"&::-webkit-scrollbar-thumb:hover\": { background: ${lighterDark}; }\n`;\n\nconst StepTimeline = styled(\"div\")`\n    height: 100%;\n    width: ${WIDTH_STEP_TIMELINE}px;\n    position: relative;\n    & .step-icon{\n        height: 100%;\n        position: relative;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        justify-content: space-around;\n    }\n    & .dash-line{\n        position: absolute;\n        top: 0;\n        left: 50%;\n        height: 100%;\n        width: 0;\n        border-left: 1px dashed ${dark};\n    }\n    & .progress{\n        position: absolute;\n        top: 0;\n        left: calc(50% - 1px);\n        height: 0;\n        width: 0;\n        border-left: 3px solid ${lightPrimary};\n        transition: 0.1s height;\n    }\n`;\n\nconst DragOverStep = styled(\"div\")`\n    margin: 10px;\n    height: calc(100% - 20px);\n    width: calc(100% - 20px);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border: 2px dotted ${lightPrimary};\n    border-radius: 10px;\n`;\n\nconst DragOverStepText = styled(\"span\")`\n    font: ${primaryFontLarge};\n`;\n\nconst ImagePreview = styled(\"img\")`\n    max-height: 400px;\n    border: 5px solid ${lightDark}\n`;\n\nconst WarningMessage = styled(\"div\")`\n    position: absolute;\n    right: 30px;\n    bottom: 0;\n    display: flex;\n`;\n\nconst WarningWrapper = styled(\"div\")<{ isActive: boolean }>`\n    width: 22px;\n    color: ${props => props.isActive ? yellow : lighterDark};\n`;\n\nconst IconButton = styled(\"div\")<{ isActive: boolean }>`\n    color: ${white};\n    height: 24px;\n    opacity: ${props => props.isActive ? 1 : 0.5 };\n    cursor: ${props => props.isActive ? \"pointer\" : \"default\" };\n    display: flex;\n    align-items: center;\n    &:hover{\n        color: ${props => props.isActive ? lightPrimary : white };\n`;\n\ninterface StepProps {\n    index: number;\n    stepID: bigint;\n    type: StepType | null;\n    active: boolean;\n    editable: boolean;\n    isBeforeCurrent: boolean;\n    handleOpenDialog: (stepID: bigint, index: number) => void;\n    removeRef: () => void;\n    draggedItem: bigint;\n    onDragStart: (e: React.DragEvent<HTMLDivElement>, index: number) => void;\n    isDraggable: boolean;\n    onDelete: () => void;\n    defaultLanguage: Language | undefined;\n    translationLanguage: Language;\n}\n\ninterface StepState {\n    imageFilePath: string;\n    imageBlobURL: \"\",\n    videoID: bigint;\n    videoBlobURL: string;\n    title: string;\n    titleAudioID: bigint;\n    stepType: StepType | null;\n    isPlaying: boolean;\n    progress: number;\n    openedDialogAssetID: bigint | null;\n    warningMessage: string;\n}\n\nexport const MAX_NUMBER_STEPS: number = 80;\n\nexport class StepItem extends React.Component {\n    static contextType = SelectedStepContext;\n    private assetDialogRef: React.RefObject<AssetDialog> = React.createRef<AssetDialog>();\n\n    context: React.ContextType<typeof SelectedStepContext>;\n    props: StepProps;\n    state: StepState = {\n        imageFilePath: \"\",\n        imageBlobURL: \"\",\n        videoID: BigInt(0),\n        videoBlobURL: \"\",\n        title: \"\",\n        titleAudioID: BigInt(0),\n        stepType: null,\n        isPlaying: false,\n        progress: 0,\n        openedDialogAssetID: null,\n        warningMessage: \"\"\n    };\n\n    componentDidMount() {\n        this.updateStep();\n\n        // Only fetch the title audio if the step is the current step\n        if (getCurrentStepID() !== this.props.stepID)\n            return;\n\n        const cloud: Cloud = App.getInstance().getEngine().Cloud.getInstance();\n        const textID: bigint = getStepTextID(this.props.stepID);\n        using text: Text | null = textID ? cloud.getTextByID(textID) : null;\n        using textAudio: Audio | null = text?.fetchAudio(this.props.translationLanguage) ?? null;\n        const titleAudioID: bigint = textAudio?.getID() ?? BigInt(0);\n        if (this.state.titleAudioID !== titleAudioID)\n            this.setState({titleAudioID});\n    }\n\n    componentDidUpdate(prevProps: Readonly<StepProps>) {\n        if(prevProps.stepID !== this.props.stepID)\n            this.updateStep();\n    }\n\n    componentWillUnmount() {\n        // remove the ref from stepListRef\n        this.props.removeRef();\n    }\n\n    public updateText(textID: bigint) {\n        const titleTextID: bigint = getStepTextID(this.props.stepID);\n        if (titleTextID !== textID) {\n            this.assetDialogRef.current?.updateText(textID);\n            return;\n        }\n        this.checkAttributesAreValid();\n        using text: Text|null = textID ? App.getInstance().getEngine().Cloud.getInstance().getTextByID(textID) : null;\n        const title: string = text?.fetchTranslation(this.props.translationLanguage,\n            findLanguageForCurrentSequence()) ?? \"\";\n        if (this.state.title === title)\n            return;\n\n        this.setState({title});\n\n        // TODO(Marco): Remove this once all the step creation is asynchronous\n        // If the step is the current step, fetch the title audio\n        if (getCurrentStepID() !== this.props.stepID)\n            return;\n\n        using textAudio: Audio | null = text?.fetchAudio(this.props.translationLanguage) ?? null;\n        const titleAudioID: bigint = textAudio?.getID() ?? BigInt(0);\n        if (titleAudioID !== this.state.titleAudioID)\n            this.setState({titleAudioID});\n    }\n\n    public updateAudio(audioID: bigint) {\n        this.checkAttributesAreValid();\n\n        // check if the updated audio is related to the step title audio\n        const textID: bigint = getStepTextID(this.props.stepID);\n        using text: Text|null = textID ? App.getInstance().getEngine().Cloud.getInstance().getTextByID(textID) : null;\n        if (!text || !text.containsAudio(audioID))\n            return;\n\n        using textAudio: Audio | null = text.fetchAudio(this.props.translationLanguage) ?? null;\n        const titleAudioID: bigint = textAudio?.getID() ?? BigInt(0);\n        if (audioID === titleAudioID && titleAudioID !== this.state.titleAudioID)\n            this.setState({titleAudioID});\n    }\n\n    public updateStep(){\n        this.checkAttributesAreValid();\n        const engine : MainModule = App.getInstance().getEngine();\n\n        const textID: bigint = getStepTextID(this.props.stepID);\n        using text: Text | null = textID ? engine.Cloud.getInstance().getTextByID(textID) : null;\n        const title: string  = text?.fetchTranslation(this.props.translationLanguage,\n            findLanguageForCurrentSequence()) ?? \"\";\n        if (this.state.title !== title)\n            this.setState({ title });\n\n        const stepType: StepType | null = getStepType(this.props.stepID);\n        if (this.state.stepType !== stepType)\n            this.setState({ stepType });\n\n        // check if we need to update isPlaying\n        const playing: boolean = stepType === StepType.ANIMATED ? isPlaying() : false;\n        if (playing !== this.state.isPlaying)\n            this.setState({ isPlaying: playing });\n\n        // check if we need to update the progress. TODO(@frank): please avoid chaining ternary like this...\n        const progress: number = stepType === StepType.ANIMATED && playing ? getProgress() : (isAtStart() ? 0 : 1);\n        if (this.state.progress !== progress)\n            this.setState({ progress });\n\n        // check if we need to update the reference video ID (if animated Step)\n        const videoID = stepType === StepType.ANIMATED ? getStepAnimatedReferenceVideoID(this.props.stepID) : BigInt(0);\n        if (this.state.videoID !== videoID){\n            const videoBlobURL: string = AdapterUtils.createBlobUrlFromFilePath(getVideoLocalPath(videoID));\n            this.setState({ videoID, videoBlobURL });\n        }\n\n        // check if we need to update the reference image (if animated step)\n        const imgPath = stepType === StepType.ANIMATED ? getStepAnimatedReferenceImageFilePath(this.props.stepID) : \"\";\n        if (this.state.imageFilePath !== imgPath) {\n            const imageBlobURL: string = AdapterUtils.createBlobUrlFromFilePath(imgPath);\n            this.setState({ imageFilePath: imgPath, imageBlobURL });\n        }\n    }\n\n    public updateDocument(documentID: bigint) {  this.assetDialogRef?.current?.updateDocument(documentID); }\n\n    public updateGroup(groupID: bigint) {  this.assetDialogRef?.current?.updateGroup(groupID); }\n\n    public updatePeer(peerID: bigint) {  this.assetDialogRef?.current?.updatePeer(peerID); }\n\n    public updateVideo(videoID: bigint): void {\n        this.assetDialogRef?.current?.updateVideo(videoID);\n\n        // if this is not our Video, or we already have created a Video Blob URL for that Video, we ignore!\n        if (this.state.videoID !== videoID || this.state.videoBlobURL.length)\n            return;\n\n        const videoBlobURL: string = AdapterUtils.createBlobUrlFromFilePath(getVideoLocalPath(videoID));\n        if (videoBlobURL)\n            this.setState({ videoBlobURL });\n    }\n\n    public updateImportDocumentButton() { this.assetDialogRef?.current?.updateImportDocumentButton(); }\n\n    // play title audio button\n    private handleAudioClick(e: React.MouseEvent) {\n        e.stopPropagation();\n        if(this.props.stepID === getCurrentStepID())\n            attemptPlayAudio(this.state.titleAudioID);\n    }\n\n    // options (edit, duplicate, delete, reverse)\n    private renderOptions(): JSX.Element {\n        return (\n            <IconMenu id=\"three-dots-menu\" icon={<ThreeDotsV/>}>\n                {this.state.stepType === StepType.ANIMATED &&\n                    <>\n                        <MenuOption\n                            id=\"edit-step-option\"\n                            onClick={() => this.props.handleOpenDialog(this.props.stepID, this.props.index)}\n                        >\n                            {i18next.t(\"Edit\")}\n                        </MenuOption>\n                        <MenuOption id=\"reverse-step-option\" onClick={() => reverseStepAnimated(this.props.stepID)}>\n                            {i18next.t(\"Reverse A and B\")}\n                        </MenuOption>\n                    </>\n                }\n                <MenuOption\n                    id=\"duplicate-step-option\"\n                    onClick={() => duplicateStep(this.props.stepID)}\n                    disabled={getStepsList().length >= MAX_NUMBER_STEPS}\n                    tooltipText={getStepsList().length >= MAX_NUMBER_STEPS ?\n                       i18next.t(\"You have reached the maximum number of steps (80 steps)\") : \"\"}\n                >\n                    {i18next.t(\"Duplicate\")}\n                </MenuOption>\n                <MenuOption id=\"delete-step-option\" onClick={() => this.props.onDelete()}>\n                    <span style={{color: red}}>{i18next.t(\"Delete\")}</span>\n                </MenuOption>\n            </IconMenu>\n        );\n    }\n\n    /*\n    * rendering the step icons, the dashed line and the progress line\n    *\n    * ---------\n    *   |\n    *   |   <- hide this part of line if first\n    *   |\n    *   o   <- and start from here\n    *   |\n    *   |\n    *   |\n    *   o   <- end here if last\n    *   |\n    *   |   <- and hide this part of line\n    *   |\n    * ---------\n    */\n    private renderTimeline(){\n        const isFirst = this.props.index === 0;\n        const isLast = this.props.index === getStepsCount() - 1;\n\n        // get step icons according to step\n        const stepIcons = UtilsStepRenderer.iconsByStepType(\n            this.props.stepID,\n            this.props.type,\n            this.props.active,\n            this.state.isPlaying,\n            this.props.isBeforeCurrent,\n            () => this.context.selectStep(this.props.stepID)\n        );\n\n        return <StepTimeline>\n            <div className={\"dash-line\"}\n                 style={UtilsStepRenderer.styleStepDashLine(isFirst, isLast, stepIcons.length)} />\n            <div className={\"progress\"}\n                 style={UtilsStepRenderer.styleStepProgress(this.props.active, this.state.progress,\n                     this.props.isBeforeCurrent, isFirst, isLast, stepIcons.length)}\n            />\n            <div className={\"step-icon\"}>{UtilsStepRenderer.renderStepIcons(stepIcons)}</div>\n        </StepTimeline>\n    }\n\n    public async openAssetsDialog(assetID: bigint = BigInt(0)): Promise<void> {\n        if (this.state.openedDialogAssetID !== assetID) {\n            return new Promise((resolve) => {\n                this.setState({openedDialogAssetID: assetID}, () => resolve());\n            });\n        }\n    }\n\n    public async importFile(file: File): Promise<void> {\n        //if not open, open asset dialog\n        if (!this.assetDialogRef.current)\n            await this.openAssetsDialog();\n        await this.assetDialogRef.current?.importFile(file);\n    }\n\n    private getSequencesList(): bigint[] {\n        return getCurrentWorldSequencesList()\n            .map((id: bigint) => getParentSequenceID(id))\n            .filter((id: bigint) => id !== BigInt(0) && getParentSequenceID(getCurrentSequenceID()) !== id);\n    }\n\n    private getSequenceListIndex(sequenceID: bigint): number {\n        const sequences: bigint[] = this.getSequencesList();\n        const index: number = sequences.indexOf(sequenceID);\n        if (index !== -1)\n            return index;\n\n        // the selected version could be an older one. we always show the latest published version,\n        // since this is the one that will be executed during the jump\n        let childSequenceID: bigint = getChildSequenceID(sequenceID);\n        while (childSequenceID && sequences.indexOf(childSequenceID) === -1)\n            childSequenceID = getChildSequenceID(childSequenceID);\n\n        return sequences.indexOf(childSequenceID);\n    }\n\n    private getCurrentStep(): Step | null {\n        if (!this.props.stepID)\n            return null;\n\n        using sequence: Sequence | null = App.getInstance().getSequence(getCurrentSequenceID());\n        return sequence?.getStepByID(this.props.stepID) ?? null;\n    }\n\n    private checkAttributesAreValid() {\n        const warningMessages: string[] = [];\n        const cloud: Cloud = App.getInstance().getEngine().Cloud.getInstance();\n        using step: Step | null = this.getCurrentStep();\n        if (!step)\n            return;\n\n        // check if any of the translations or title audios are not available\n        using text: Text | null = step.getText();\n        if (text) {\n            const translationFailed: boolean = text.hasTranslationFailed(this.props.translationLanguage);\n            const isAudioEmpty: boolean = getCurrentStepID() === this.props.stepID &&\n                text.isAudioEmpty(this.props.translationLanguage);\n            const isGeneratingTranslation: boolean = text.isGeneratingTranslations();\n            if (!isGeneratingTranslation && (translationFailed || isAudioEmpty))\n                warningMessages.push(`${i18next.t(\"Translations or audios are missing for this step\")}.`);\n        }\n\n        if (getStepType(this.props.stepID) === StepType.QUESTION) {\n\n            // check if any of the translations for answers are not available\n            const answers: bigint[] = getStepQuestionAnswerTexts(this.props.stepID);\n            if(answers.some((textAnswerID: bigint) => {\n                    using textAnswer: Text | null = textAnswerID ? cloud.getTextByID(textAnswerID) : null;\n                    return textAnswer?.hasTranslationFailed(this.props.translationLanguage) ?? false;}))\n                warningMessages.push(`${i18next.t(\"Translations or audios are missing for this step\")}.`);\n\n            // check if any of the translations for explanation are not available\n            const explanationID: bigint = getStepQuestionTextExplanationID(this.props.stepID);\n            using textExplanation: Text | null = explanationID ? cloud.getTextByID(explanationID) : null;\n            if (textExplanation?.hasTranslationFailed(this.props.translationLanguage))\n                warningMessages.push(`${i18next.t(\"Translations or audios are missing for this step\")}.`);\n        }\n\n        if (getStepType(this.props.stepID) === StepType.BRANCHING) {\n            const stepBranching: StepBranching = step as StepBranching;\n            const jumpDestinationYes: JumpDestination | undefined = stepBranching.getJumpDestinationYes();\n            const jumpDestinationNo: JumpDestination | undefined = stepBranching.getJumpDestinationNo();\n            const stepIds: bigint[] = getStepsList().filter((id: bigint) => this.props.stepID !== id);\n\n            if (isCurrentSequenceInEvaluationMode() && (jumpDestinationYes || jumpDestinationNo))\n                warningMessages.push(`${i18next.t(\"Branching is not recommended in evaluation mode\")}.`);\n\n            if (jumpDestinationYes && jumpDestinationYes.ID !== BigInt(0)) {\n                const listIndex: number = jumpDestinationYes.isStep ? stepIds.indexOf(jumpDestinationYes.ID) :\n                                                                      this.getSequenceListIndex(jumpDestinationYes.ID);\n                if (listIndex === -1)\n                    warningMessages.push(`${i18next.t(\"There is a branching problem with this step\")}.`);\n            }\n            else if (jumpDestinationNo && jumpDestinationNo.ID !== BigInt(0)) {\n                const listIndex: number = jumpDestinationNo.isStep ? stepIds.indexOf(jumpDestinationNo.ID) :\n                                                                     this.getSequenceListIndex(jumpDestinationNo.ID);\n                if (listIndex === -1)\n                    warningMessages.push(`${i18next.t(\"There is a branching problem with this step\")}.`);\n            }\n        }\n\n        if (getStepType(this.props.stepID) === StepType.ANIMATED) {\n            // check if the video reference has been deleted\n            const videoID: bigint = getStepAnimatedReferenceVideoID(this.props.stepID);\n            if (videoID && isVideoLoaded(videoID) && !getVideoUrlS3(videoID))\n                warningMessages.push(`${i18next.t(\"The reference video associated with this step has been deleted\")}.`);\n        }\n\n        let warningMessage: string = \"\";\n        if (warningMessages.length) {\n            const warningList: string = warningMessages.length === 1 ? warningMessages[0] : warningMessages.map(\n                (warning: string, index: number): string => `${index + 1}. ${warning}`).join(\"\\n\");\n            warningMessage = warningList.concat(`\\n${i18next.t(\"Edit the step to fix all problems\")}.`);\n        }\n        if (!isEqual(this.state.warningMessage, warningMessage))\n            this.setState({ warningMessage });\n    }\n\n    private onCreateAsset(type: AssetType): bigint {\n\n        // verify we aren't attempting to create a new asset when we already have one!\n        if(this.state.openedDialogAssetID) {\n            AdapterLog.ERROR(\"Never create a new asset if already created!\");\n            return BigInt(0);\n        }\n\n        // unfortunately, AssetDocument cannot be created here. TODO(@frank): create Document, then inject into Asset!\n        if(type === AssetType.MODEL)\n            return BigInt(0);\n\n        // create the Asset with the correct type!\n        const assetID: bigint = addAsset(type, true);\n        this.setState({ openedDialogAssetID: assetID });\n        return assetID;\n    }\n\n    render() {\n\n        if (this.props.stepID === this.props.draggedItem)\n            return (\n                <DragOverStep>\n                    <DragOverStepText>{i18next.t(\"Drop here\")}</DragOverStepText>\n                </DragOverStep>\n            );\n\n        return (\n            <>\n                {/* add area for step index 0 */}\n                {this.props.index === 0 && this.context.canEditStep &&\n                    <AddStep\n                        index={0}\n                        handleOpenDialog={() => this.props.handleOpenDialog(BigInt(0), 0)}\n                        maxNumberOfSteps={MAX_NUMBER_STEPS}\n                    />\n                }\n                <StepWrapper\n                    id={this.props.stepID.toString()}\n                    className=\"step-item\"\n                    data-index={this.props.index}\n                    data-is-selected={Number(this.props.active)}\n                    draggable={this.props.isDraggable}\n                    onDragStart={(e: DragEvent<HTMLDivElement>) => this.props.onDragStart(e, this.props.index)}\n                    onClick={() => this.context.selectStep(this.props.stepID)}\n                    // CSS styled props\n                    index={this.props.index}\n                    isDragging={this.props.draggedItem !== BigInt(0)}\n                    isActive={this.props.active}\n                >\n                    {/* The opacity CSS is in StepWrapper*/}\n                    <StepIndexAndOptions className={\"highlight-on-hover\"}>\n\n                        {/* dont show 0, 1, 2, ... , but instead 1, 2, 3, ... */}\n                        <StepIndex id=\"step-index\">\n                            {Boolean(this.state.titleAudioID) &&\n                            this.props.stepID === getCurrentStepID() ?\n                                <Tooltip\n                                    title={i18next.t(\"Play Title Audio\")}\n                                    enterDelay={1000}\n                                    enterNextDelay={1000}\n                                    placement=\"right\"\n                                >\n                                    <IconButton\n                                        onClick={(e: React.MouseEvent) => this.handleAudioClick(e)}\n                                        isActive>\n                                        <Volume/>\n                                    </IconButton>\n                                </Tooltip>\n                                :\n                                (this.props.index + 1)}\n                        </StepIndex>\n                        {this.props.isDraggable && <DragIcon />}\n                        <div style={{ height: \"24px\" }} />\n                    </StepIndexAndOptions>\n\n                    <StepOptions className={\"highlight-on-hover\"}>\n                        {/* show options only on active step */}\n                        {this.props.active && this.props.editable && this.renderOptions()}\n                        {Boolean(this.state.videoID) &&\n                            <Tooltip id=\"step-animated-video-player\"\n                                placement=\"right\"\n                                onMouseEnter={() => loadVideo(this.state.videoID)}\n                                title={this.state.videoBlobURL ?\n                                    <Box style={{textAlign: \"center\"}}>\n                                        {getVideoTitle(this.state.videoID)}\n                                        <video\n                                            width=\"100%\"\n                                            style={{objectFit: \"cover\"}}\n                                            src={this.state.videoBlobURL}\n                                            muted\n                                            autoPlay\n                                            disablePictureInPicture\n                                            loop\n                                        />\n                                    </Box>\n                                    : <Loading/>\n                                }\n                                sx={{backgroundColor: \"transparent\"}}>\n                                <Box id=\"step-animated-video-icon\" style={{marginLeft: \"2px\"}}>\n                                    <VideoAutoPlayer/>\n                                </Box>\n                            </Tooltip>\n                        }\n                        {Boolean(this.state.imageFilePath) &&\n                            <Tooltip\n                                title={Boolean(this.state.imageBlobURL) &&\n                                    <ImagePreview\n                                        id=\"step-animated-image-player\"\n                                        src={this.state.imageBlobURL}\n                                        alt=\"Can't display the image\"\n                                        style={{imageOrientation: \"none\"}}\n                                    />\n                                }\n                                slotProps={{tooltip: {sx: {backgroundColor: \"transparent\"}}}}\n                            >\n                                <div id=\"step-animated-image-icon\" style={{marginLeft: \"2px\"}}>\n                                    <ImageIcon />\n                                </div>\n                            </Tooltip>\n                        }\n                    </StepOptions>\n\n                    <StepData className={\"highlight-on-hover\"}>\n                        {Boolean(!this.state.title) ?\n                            <Skeleton sx={{ bgcolor: lightPrimary, fontSize: \"1rem\" }}/>\n                         :\n                            <StepTitle className=\"step-title\" id={\"t-\"+ this.props.stepID}>\n                                {this.state.title}\n                            </StepTitle>\n                        }\n\n                        {/* show extra actions when step is current */}\n                        {this.props.active && this.props.editable && StepType.ANIMATED === this.state.stepType &&\n                            <div style={{textAlign: \"center\"}}>\n                                <AddAssetButton isTemporaryAsset onClick={() => this.openAssetsDialog()} />\n                            </div>\n                        }\n                        {this.state.openedDialogAssetID !== null &&\n                            <AssetDialog\n                                ref={this.assetDialogRef}\n                                assetID={this.state.openedDialogAssetID}\n                                onCreateAsset={(type: AssetType) => this.onCreateAsset(type)}\n                                onClose={() => this.setState({ openedDialogAssetID: null })}\n                                temporary\n                            />\n                        }\n                    </StepData>\n\n                    {Boolean(this.state.warningMessage.length) &&\n                        <WarningMessage>\n                            <Tooltip\n                                title={this.state.warningMessage}\n                                placement={\"top\"}\n                                sx={{ whiteSpace: \"pre-line\" }}\n                            >\n                                <WarningWrapper isActive={this.props.active}>\n                                    <Warning />\n                                </WarningWrapper>\n                            </Tooltip>\n                        </WarningMessage>\n                    }\n\n                    {/* render right end part with the timeline */}\n                    {this.renderTimeline()}\n\n                </StepWrapper>\n                {this.context.canEditStep &&\n                    <AddStep\n                        index={this.props.index + 1}\n                        active={this.props.active}\n                        handleOpenDialog={() => this.props.handleOpenDialog(BigInt(0), this.props.index + 1)}\n                        maxNumberOfSteps={MAX_NUMBER_STEPS}\n                    />\n                }\n            </>\n        )\n    }\n}\n", "import {dark, lightPrimary, primary, white, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport React, {ReactElement} from \"react\";\nimport styled from \"styled-components\";\nimport {primaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {\n    isAtStart,\n    toEnd,\n    toStart\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {QuestionMark} from \"@root/react-components/src/icons/QuestionMark\";\nimport {Camera} from \"@root/react-components/src/icons/Camera\";\nimport {Video} from \"@root/react-components/src/icons/Video\";\nimport {StepInputIcon} from \"@root/react-components/src/icons/StepInputIcon\";\nimport {Branching} from \"@root/react-components/src/icons/Branching\";\n\nconst WrapperIcons = styled(\"div\")`\n    height: 100%;\n    & > div{\n        width: 100%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n    }\n`;\n\nconst LightBlueCircle = styled(\"div\")<{\n    filled: boolean,\n    active: boolean,\n    iconSize?: number\n}>`\n    height: 22px;\n    width: 22px;\n    color: ${props => props.filled || props.active ? white : primary};\n    background-color: ${props => props.active ? yellow : props.filled ? lightPrimary : white};\n    border: ${props => props.active ? \"1px solid \" + yellow : props.filled ? \"1px solid \" + lightPrimary : \n        \"1px dashed \" + dark};\n    border-radius: 50%;\n    font: ${primaryFontSmall};\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    &:hover{\n        background-color: ${props => !props.active ? primary : null};\n        color: ${props => !props.active ? white : null};\n        border: 1px solid ${props => !props.active ? primary : yellow};\n    }\n    & svg{\n        height: ${props => props.iconSize ?? 10}px;\n        width: ${props => props.iconSize ?? 10}px;\n    }\n`;\n\nexport namespace UtilsStepRenderer{\n    // calc increment gap\n    // ie : iconsCount = 2, increment = 0.25\n    /*\n    *\n    * -----\n    *   | <- 0.25\n    *   o\n    *   | <- 0.25\n    *   | <- 0.25\n    *   o\n    *   | <- 0.25\n    * -----\n    *\n     */\n    function calcIncrementFactor(iconsCount: number){\n        return 1 / iconsCount / 2;\n    }\n\n    // TODO @ebalthazard : refactor into component\n    export function iconsByStepType(\n        stepID: bigint,\n        stepType: StepType | null,\n        isActive: boolean,\n        isPlaying: boolean,\n        isBeforeCurrent: boolean,\n        onSelectStep: () => void\n    ): {\n        children: ReactElement | string,\n        active: boolean,\n        filled: boolean,\n        iconSize?: number,\n        onClick?:(e: React.MouseEvent) => void\n    }[]\n    {\n\n        switch (stepType) {\n\n            case StepType.ANIMATED :\n\n                // Todo: fetch keyframe on core!\n                const keyframeCount = 2;\n\n                return new Array(keyframeCount).fill(null)\n                    .map((keyframeLabel, index) => ({\n                        children: (\n                            <span id={`animated-label-${index === 0 ? \"A\" : \"B\"}`}>\n                                {index === 0 ? \"A\" : \"B\"}\n                            </span>\n                        ),\n                        // Todo: change sketchy index === 0 logic to getters on Core (getKeyframeIndex/ID)\n                        active: !isPlaying && isActive && (index === 0 ? isAtStart() : !isAtStart()),\n                        filled: isBeforeCurrent || (isActive && index === 0),\n                        onClick: (e) => {\n                            onSelectStep();\n                            if(index === 0)\n                                toStart()\n                            else\n                                toEnd()\n                        }\n                    }));\n\n            case StepType.BRANCHING :\n                return [{\n                    children: <Branching />,\n                    filled: isBeforeCurrent || isActive,\n                    active: !isPlaying && isActive,\n                    iconSize: 14\n                }];\n            case StepType.QUESTION :\n                return [{\n                    children: <QuestionMark />,\n                    filled: isBeforeCurrent || isActive,\n                    active: !isPlaying && isActive\n                }];\n            case StepType.PHOTO :\n                return [{\n                    children: <Camera />,\n                    filled: isBeforeCurrent || isActive,\n                    active: !isPlaying && isActive\n                }];\n            case StepType.VIDEO :\n                return [{\n                    children: <Video />,\n                    filled: isBeforeCurrent || isActive,\n                    active: !isPlaying && isActive\n                }];\n            case StepType.INPUT :\n                return [{\n                    children: <StepInputIcon color={isBeforeCurrent || isActive ? white : primary} />,\n                    filled: isBeforeCurrent || isActive,\n                    active: !isPlaying && isActive\n                }];\n            default :\n                return [{\n                    children: \"x\",\n                    filled: false,\n                    active: false\n                }]\n        }\n    }\n\n    export function renderStepIcons(icons: ReturnType<typeof iconsByStepType>) {\n        return <WrapperIcons>\n            {icons.map((icon, index) =>\n                <div\n                    key={\"step-icon-\" + index}\n                    // split into sections\n                    /*\n                    * ie: iconsCount = 2\n                    *\n                    * -------\n                    *   ||\n                    *   || <- div 50%, render in middle\n                    *   ||\n                    *   --\n                    *   ||\n                    *   || <- div 50%, render in middle\n                    *   ||\n                    * --------\n                     */\n                    style={{height: calcIncrementFactor(icons.length) * 2 * 100 + \"%\"}}>\n                    <LightBlueCircle\n                        onClick={(e) => {\n                            if(icon.onClick)\n                                icon.onClick(e)\n                        }}\n                        filled={icon.filled}\n                        active={icon.active}\n                        iconSize={icon.iconSize}\n                    >\n                        <div style={{lineHeight: \"9px\"}}>{icon.children}</div>\n                    </LightBlueCircle>\n                </div>)}\n        </WrapperIcons>\n    }\n\n    // calc the offset top and bottom if first or last\n    function calcCSSTopBottom(isFirst: boolean, isLast: boolean, iconsCount: number){\n        const offsetPosition = calcIncrementFactor(iconsCount);\n\n        let top = 0;\n        let bottom = 0;\n\n        if(isFirst)\n            top += offsetPosition;\n\n        if (isLast)\n            bottom += offsetPosition;\n\n        return {\n            top: top * 100 + \"%\",\n            bottom: bottom * 100 + \"%\"\n        };\n    }\n\n    export function styleStepDashLine(isFirst: boolean, isLast: boolean, iconsCount: number):\n        {height?: string, top?: string, bottom?: string} {\n\n        if (!isFirst && !isLast)\n            return {};\n\n        const increment = calcIncrementFactor(iconsCount);\n\n        let height = 1;\n\n        // remove one increment for first\n        if(isFirst)\n            height -= increment;\n\n        // remove one increment for last\n        if (isLast)\n            height -= increment;\n\n        return {\n            height: height * 100 + \"%\",\n            // add same top and bottom style as progress\n            ...calcCSSTopBottom(isFirst, isLast, iconsCount)\n        };\n    }\n\n    export function styleStepProgress(isActive: boolean, progress: number, isBeforeCurrent: boolean, isFirst: boolean,\n                                      isLast: boolean, iconsCount: number):\n        {height: string, top?: string, bottom?: string} {\n\n        let height = 0;\n\n        const increment = calcIncrementFactor(iconsCount);\n\n        // getProgress on Core if playing and adjust to keyframes position\n        if(isActive)\n            height = 2 * increment * progress + increment\n        // fill or empty if before or after\n        else\n            height = isBeforeCurrent ? 1 : 0;\n\n        // adjust height if first step\n        if(isFirst && height != 0)\n            height -= increment;\n\n        return {\n            height: height * 100 + \"%\",\n            // add top and bottom style\n            ...calcCSSTopBottom(isFirst, isLast, iconsCount)\n        }\n    }\n}\n", "import React from \"react\";\n\nexport const QuestionMark = () =>\n    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"question\"\n         className=\"svg-inline--fa fa-question fa-w-12\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n         viewBox=\"0 0 384 512\">\n        <path fill=\"currentColor\"\n              d=\"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\" />\n    </svg>\n", "import React from \"react\";\nimport {SvgIcon} from \"@mui/material\";\n\nexport function Camera(): JSX.Element {\n    return (\n        <SvgIcon xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 448\">\n            <path fill=\"currentColor\"\n                  d=\"M512,112V400a48,48,0,0,1-48,48H48A48,48,0,0,1,0,400V112A48,48,0,0,1,48,64h88l12.3-32.9A47.93,47.93,0,0,1,193.2,0H318.7a47.93,47.93,0,0,1,44.9,31.1L376,64h88A48,48,0,0,1,512,112ZM376,256A120,120,0,1,0,256,376,120.1,120.1,0,0,0,376,256Zm-32,0a88,88,0,1,1-88-88A88.13,88.13,0,0,1,344,256Z\"/>\n        </SvgIcon>\n    );\n}\n", "import React from \"react\";\nimport {dark} from \"../values/colors/colors\";\n\nexport function StepInputIcon(props: {color?: string } = { color: dark}) {\n    return <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill={props.color} xmlns=\"http://www.w3.org/2000/svg\">\n        <g clipPath=\"url(#clip0_2858_307)\">\n            <circle cx=\"12\" cy=\"12\" r=\"3\" fill={props.color}/>\n            <circle cx=\"21\" cy=\"21\" r=\"3\" fill={props.color}/>\n            <circle cx=\"12\" cy=\"21\" r=\"3\" fill={props.color}/>\n            <circle cx=\"3\" cy=\"21\" r=\"3\" fill={props.color}/>\n            <circle cx=\"3\" cy=\"12\" r=\"3\" fill={props.color}/>\n            <circle cx=\"3\" cy=\"3\" r=\"3\" fill={props.color}/>\n            <circle cx=\"12\" cy=\"3\" r=\"3\" fill={props.color}/>\n            <circle cx=\"21\" cy=\"3\" r=\"3\" fill={props.color}/>\n            <circle cx=\"21\" cy=\"12\" r=\"3\" fill={props.color}/>\n        </g>\n        <defs>\n            <clipPath id=\"clip0_2858_307\">\n                <rect width=\"24\" height=\"24\" fill={props.color}/>\n            </clipPath>\n        </defs>\n    </svg>\n}\n", "import * as React from 'react';\n\nexport function Branching() {\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n                d=\"M5.86603 23.5C5.48113 24.1667 4.51887 24.1667 4.13397 23.5L1.10289 18.25C0.717986 17.5833 1.19911 16.75 1.96891 16.75H8.03109C8.80089 16.75 9.28201 17.5833 8.89711 18.25L5.86603 23.5Z\"\n                fill=\"currentColor\"/>\n            <path\n                d=\"M19.866 23.5C19.4811 24.1667 18.5189 24.1667 18.134 23.5L15.1029 18.25C14.718 17.5833 15.1991 16.75 15.9689 16.75H22.0311C22.8009 16.75 23.282 17.5833 22.8971 18.25L19.866 23.5Z\"\n                fill=\"currentColor\"/>\n            <path d=\"M12 7V8\" stroke=\"currentColor\" strokeWidth=\"3\"/>\n            <circle cx=\"12\" cy=\"4\" r=\"4\" fill=\"currentColor\"/>\n            <path d=\"M5 17C5 13 12 13 12 8C12 13 19 13 19 17\" stroke=\"currentColor\" strokeWidth=\"3\"/>\n        </svg>\n    )\n}\n", "import * as React from \"react\";\n\nexport function DragIcon (props: {size?:{width:number, height:number},  fill?:string, style?:React.CSSProperties}) {\n    return (\n        <svg style={props.style}\n            aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"bars\"\n            className=\"svg-inline--fa fa-bars fa-w-14\"\n            role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n            <path fill={props.fill}\n                d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/>\n        </svg>\n    )\n};", "import React from 'react';\n\nexport function ImageIcon (props: {size?:{width:number, height:number},  fill?:string, style?:React.CSSProperties}) {\n    // if no size is provided, default to 550x500 and check the props exist\n    return (\n        <svg fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" width={props.size?.width || 550} height={props.size?.height || 500} viewBox=\"0 0 550 500\" style={props.style}>\n            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M0 75C0 33.5786 33.5786 0 75 0H475C516.421 0 550 33.5786 550 75V425C550 466.421 516.421 500 475 500H75C33.5787 500 0 466.421 0 425V75ZM75 50C61.1929 50 50 61.1929 50 75V425C50 438.807 61.1929 450 75 450H475C488.807 450 500 438.807 500 425V75C500 61.1929 488.807 50 475 50H75Z\" fill=\"black\"/>\n            <path d=\"M165.997 265.184C169.739 262.439 174.878 262.629 178.407 265.644L266.379 340.792V481.999H57C45.9543 481.999 37 473.045 37 461.999V359.817L165.997 265.184Z\" fill=\"black\"/>\n            <path d=\"M394.643 227.507C398.256 224.315 403.632 224.156 407.428 227.128L512 309V462C512 473.046 503.046 482 492 482L266.379 481.999V340.792L394.643 227.507Z\" fill=\"black\"/>\n            <path d=\"M215 161C215 188.614 192.614 211 165 211C137.386 211 115 188.614 115 161C115 133.386 137.386 111 165 111C192.614 111 215 133.386 215 161Z\" fill=\"black\"/>\n        </svg>\n    )\n};", "import * as React from 'react';\nimport {SvgIcon} from \"@mui/material\";\nexport function VideoAutoPlayer() {\n    return <SvgIcon>\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <rect x=\"1\" y=\"2\" width=\"22\" height=\"20\" rx=\"2\" stroke=\"#23292F\" strokeWidth=\"2\"/>\n            <path\n                d=\"M16.1377 14.47L10.1714 17.9912C10.0056 18.089 9.79601 17.9706 9.79433 17.778L9.76387 14.2932L9.77599 10.7607C9.77665 10.5681 9.98567 10.4486 10.152 10.5456L16.1367 14.0387C16.3015 14.135 16.3021 14.3729 16.1377 14.47Z\"\n                fill=\"#23292F\" stroke=\"#23292F\" strokeWidth=\"1.5\"/>\n            <line x1=\"2\" y1=\"7\" x2=\"22\" y2=\"7\" stroke=\"#23292F\" strokeWidth=\"2\"/>\n            <path d=\"M6 2L2 7\" stroke=\"#23292F\" strokeWidth=\"1.5\"/>\n            <path d=\"M10 2L6 7\" stroke=\"#23292F\" strokeWidth=\"1.5\"/>\n            <path d=\"M14 2L10 7\" stroke=\"#23292F\" strokeWidth=\"1.5\"/>\n            <path d=\"M18 2L14 7\" stroke=\"#23292F\" strokeWidth=\"1.5\"/>\n            <path d=\"M22 2L18 7\" stroke=\"#23292F\" strokeWidth=\"1.5\"/>\n        </svg>\n    </SvgIcon>;\n}\n", "import React from \"react\"\nimport {FIRST_STEP_OFFSET} from \"@root/Frontend/Studio/Views/StepsList/StepsList/StepsList\";\nimport {getStepsCount, getStepsList} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {Add} from \"@root/react-components/src/icons/Add\";\nimport i18next from \"i18next\";\nimport {lightGrey, primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {Box, styled} from \"@mui/material\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\n\nconst StepAddArea = styled(Box)({\n    width: \"100%\",\n    position: \"absolute\",\n    height: \"3px\",\n    marginTop: \"-2px\",\n    backgroundColor: white,\n    zIndex: 9,\n    transition: \"0.1s opacity\",\n    \"&:hover\": {\n        opacity: \"1!important\"\n    }\n});\n\nconst Line = styled(Box)((props: { disabled: number }) => ({\n    height: \"1px\",\n    width: \"100%\",\n    backgroundColor: props.disabled ? lightGrey : primary\n}));\n\nconst AddIconWrapper = styled(Box)((props: { disabled: number }) => ({\n    color: white,\n    backgroundColor: props.disabled ? lightGrey : primary,\n    height: \"16px\",\n    width: \"16px\",\n    borderRadius: \"50%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    position: \"absolute\",\n    top: \"calc(50% - 8px)\",\n    left: \"calc(50% - 8px)\",\n    \"& svg\": {\n        height: \"8px\",\n        width: \"8px\"\n    },\n}));\n\nexport class AddStep extends React.Component {\n    props: {\n        index: number,\n        active?: boolean,\n        handleOpenDialog: () => void,\n        maxNumberOfSteps: number\n    }\n\n    render() {\n        return (\n            <Tooltip\n                title={getStepsList().length >= this.props.maxNumberOfSteps ?\n                    i18next.t(\"You have reached the maximum number of steps (80 steps)\") : \"\"}\n                enterDelay={500}\n                enterNextDelay={500}\n            >\n                <StepAddArea\n                    id={`add-step-icon-${this.props.index}`}\n                    onClick={() => Number(getStepsList().length >= this.props.maxNumberOfSteps) ?\n                        () => {} : this.props.handleOpenDialog()}\n                    style={{\n                        top: this.props.index === 0 ? FIRST_STEP_OFFSET : \"100%\",\n\n                        // always show on hover, current step and last step\n                        opacity: this.props.active || this.props.index === getStepsCount() ? 1 : 0\n                    }}\n                >\n                    <Line\n                        style={{ marginBottom: \"1px\" }}\n                        disabled={Number(getStepsList().length >= this.props.maxNumberOfSteps)}\n                    />\n                    <Line disabled={Number(getStepsList().length >= this.props.maxNumberOfSteps)} />\n                    <AddIconWrapper disabled={Number(getStepsList().length >= this.props.maxNumberOfSteps)}>\n                        <Add />\n                    </AddIconWrapper>\n                </StepAddArea>\n            </Tooltip>\n        );\n    }\n}\n", "import React from \"react\";\n\nexport const Add = () =>\n    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"plus\"\n         className=\"svg-inline--fa fa-plus fa-w-14\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n        <path fill=\"currentColor\"\n              d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"/>\n    </svg>;\n", "import * as React from \"react\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {clipSequenceVideo} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {\n    getSequenceStepsCount,\n    getSequenceVideoID,\n    isSequenceLoaded\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {dark, primary, red} from \"@root/react-components/src/values/colors/colors\";\nimport {\n    primaryFontXLarge,\n    secondaryFontMedium,\n    secondaryFontSmall\n} from \"@root/react-components/src/values/fonts/fonts\";\nimport {updateStepAnimatedVideoID} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {getVideoDuration, getVideoSubtitlesUrlS3,} from \"@root/Frontend/Studio/Engine/AdapterWeb/Video\";\nimport {StepGenerated} from \"@backend/Types/Sequence\";\nimport {getCurrentWorldID, getOwnerID, getWorldOwnerType} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {DESC_MAX_LENGTH} from \"@root/Frontend/Studio/Views/StepsList/StepEditor/StepEditorDialog\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, Checkbox, LinearProgress, styled} from \"@mui/material\";\nimport {OwnerType} from \"@backend/Types/OwnerType\";\nimport {VideoClipper} from \"@root/Frontend/Studio/Components/Video/VideoClipper\";\nimport {\n    generateVideoAnnotatedTimeline, getAnnotatedTimelineDescription,\n    getAnnotatedTimelineTimestamps, getAnnotatedTimelineProgress,\n    updateStepOriginalText\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequence\";\nimport {AdapterUtils} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterUtils\";\nimport {createNewVideo} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterCloud\";\nimport {isProductionEnvironment, isStagingEnvironment} from \"@utils/utils\";\nimport {Label} from \"@root/react-components/src/misc/Label\";\nimport {App} from \"@root/Frontend/Studio/App\";\n\nconst InnerContent = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"5px\",\n    maxWidth: \"600px\"\n});\n\nconst Title = styled(Box)({\n    color: dark,\n    font: primaryFontXLarge\n});\n\nconst ProgressSubtitle = styled(Box)((props: {color: string}) => ({\n    display: \"flex\",\n    justifyContent: \"center\",\n    font: secondaryFontMedium,\n    color: props.color\n}));\n\nconst CheckboxWrapper = styled(Box)({\n    marginTop: \"4px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: \"4px\",\n    font: secondaryFontSmall,\n    \"&:hover\": { cursor: \"pointer\" }\n});\n\ninterface GenerateStepsDialogProps {\n    sequenceID: bigint;\n    onCreateStep: (index: number, type: StepType) => bigint;\n    onClose(): void;\n}\n\ninterface GenerateStepsDialogState {\n    numberOfStepsGenerated: number;\n    totalStepsToGenerate: number;\n    numberOfImagesAnalyzed: number;\n    totalImagesToAnalyze: number;\n    errorMessage: string;\n    analyzeImages: boolean;\n    analysisStarted: boolean;\n}\n\nexport class GenerateStepsDialog extends React.Component {\n    props: GenerateStepsDialogProps;\n    state: GenerateStepsDialogState = {\n        numberOfStepsGenerated: 0,\n        totalStepsToGenerate: 0,\n        numberOfImagesAnalyzed: 0,\n        totalImagesToAnalyze: 0,\n        errorMessage: \"\",\n        analyzeImages: true,\n        analysisStarted: false\n    };\n\n    private readonly IMAGE_ANALYSIS_OPTIONAL: boolean = !isProductionEnvironment() && !isStagingEnvironment();\n    private static readonly ERROR_MESSAGE: string = \"Cannot generate steps\";\n\n    public async updateVideo(videoID: bigint) {\n        const sequenceVideoID: bigint = getSequenceVideoID(this.props.sequenceID);\n        if (sequenceVideoID !== videoID)\n            return;\n\n        const currentProgress: number = getAnnotatedTimelineProgress(sequenceVideoID);\n        const completed: boolean = currentProgress === this.state.totalImagesToAnalyze;\n        this.setState((prevState: GenerateStepsDialogState) => ({\n            numberOfImagesAnalyzed: completed ? 0 : currentProgress,\n            totalImagesToAnalyze: completed ? 0 : prevState.totalImagesToAnalyze\n        }));\n        if (completed)\n            await this.generateSteps(sequenceVideoID);\n    }\n\n    private async startGeneration() {\n        const sequenceVideoID: bigint = getSequenceVideoID(this.props.sequenceID);\n        if (!sequenceVideoID) {\n            AdapterLog.ERROR(\"Sequence does not have a video to generate annotated timeline\");\n            return;\n        }\n\n        this.setState({analysisStarted: true});\n\n        if (!this.state.analyzeImages) {\n            await this.generateSteps(sequenceVideoID);\n            return;\n        }\n\n        const totalImagesToAnalyze: number = generateVideoAnnotatedTimeline(sequenceVideoID);\n        if (!totalImagesToAnalyze) {\n            this.setState({ errorMessage: GenerateStepsDialog.ERROR_MESSAGE });\n            return;\n        }\n\n        this.setState({ totalImagesToAnalyze });\n    }\n\n    private static canGenerateStepsForSequence(sequenceID: bigint): string {\n        if (!isSequenceLoaded(sequenceID)) {\n            AdapterLog.ERROR(\"Cannot generate steps for a sequence that's not loaded yet\");\n            return GenerateStepsDialog.ERROR_MESSAGE;\n        }\n\n        if (getSequenceStepsCount(sequenceID) !== 0) {\n            AdapterLog.ERROR(\"Cannot generate steps for a sequence that already has steps\");\n            return GenerateStepsDialog.ERROR_MESSAGE;\n        }\n\n        const sequenceVideoID: bigint = getSequenceVideoID(sequenceID);\n        if (!sequenceVideoID) {\n            AdapterLog.ERROR(\"Cannot generate steps without a video associated with the sequence\");\n            return GenerateStepsDialog.ERROR_MESSAGE;\n        }\n\n        if (!getVideoSubtitlesUrlS3(sequenceVideoID)) {\n            AdapterLog.ERROR(\"Cannot generate steps with a video that does not have subtitles\");\n            return GenerateStepsDialog.ERROR_MESSAGE;\n        }\n\n        return \"\";\n    }\n\n    private getCompleteAnnotatedTimeline(sequenceVideoID: bigint): string {\n        if (!sequenceVideoID) {\n            AdapterLog.ERROR(\"Sequence does not have a video to get annotated timeline\");\n            return \"\";\n        }\n\n        const annotatedTimelineTimestamps: bigint[] = getAnnotatedTimelineTimestamps(sequenceVideoID);\n        if (annotatedTimelineTimestamps.length === 0) {\n            AdapterLog.ERROR(\"Sequence does not have annotated timeline to get complete timeline\");\n            return \"\";\n        }\n\n        // format annotated timeline as \"hh:mm:ss.sss\\n description\"\n        const annotatedTimeline: string[] = annotatedTimelineTimestamps.map(timestamp =>\n            `${AdapterUtils.formatSeconds(timestamp)}\\n` +\n            `${getAnnotatedTimelineDescription(sequenceVideoID, timestamp)}`);\n\n        return annotatedTimeline.join(\"\\n\");\n    }\n\n    private async generateSteps(sequenceVideoID: bigint): Promise<void> {\n        const errorMessage: string = GenerateStepsDialog.canGenerateStepsForSequence(this.props.sequenceID);\n        if (errorMessage) {\n            this.setState({ errorMessage });\n            return;\n        }\n\n        const videoDescription: string =\n            this.state.analyzeImages ? this.getCompleteAnnotatedTimeline(sequenceVideoID) : \"\";\n\n        const stepsGenerated: StepGenerated[] =\n            await App.getInstance().dataSourceSequences.generateSequenceSteps(\n                getCurrentWorldID(), this.props.sequenceID, videoDescription);\n        if (stepsGenerated.length === 0) {\n            AdapterLog.ERROR(\"Received empty steps list from step generator\");\n            this.setState({ errorMessage: \"Failed to generate steps\" });\n            return;\n        }\n\n        this.setState({ totalStepsToGenerate: stepsGenerated.length });\n        let newStepIndex: number = 0;\n        const sequenceVideoDurationMs: number = Number(getVideoDuration(sequenceVideoID)) * 1000;\n        const currentWorldID: bigint = getCurrentWorldID();\n        const ownerID: bigint = getOwnerID(currentWorldID);\n        const ownerType: OwnerType = getWorldOwnerType(currentWorldID);\n        for (const step of stepsGenerated) {\n\n            // this is just in case, to avoid calling other APIs using titles with 0 or 141+ characters\n            let stepTitle: string = step.step_description;\n            if (!stepTitle.length)\n                continue;\n\n            // longer titles get clipped by 4 characters to account for 0-indexing and the ellipsis (...)\n            if (stepTitle.length > DESC_MAX_LENGTH)\n                stepTitle = `${stepTitle.substring(0, DESC_MAX_LENGTH - 4)}...`;\n\n            const stepID: bigint = this.props.onCreateStep(newStepIndex, StepType.ANIMATED);\n            updateStepOriginalText(stepID, stepTitle);\n\n            let startTimestamp: number = Date.parse(`1970T${step.timestamp_start}Z`);\n            let endTimestamp: number = Date.parse(`1970T${step.timestamp_end}Z`);\n            if (isNaN(startTimestamp) || isNaN(endTimestamp)) {\n                this.setState({ numberOfStepsGenerated: ++newStepIndex });\n                continue;\n            }\n\n            // clipped video should be maximum 15 seconds\n            const totalTime: number = endTimestamp - startTimestamp;\n            if (totalTime > VideoClipper.MAX_CLIP_MS) {\n\n                // Cut VideoClipper.MAX_CLIP_MS in the middle of the video\n                const timeToAdvanceTimestamps: number = Math.ceil((totalTime - VideoClipper.MAX_CLIP_MS) / 2);\n                startTimestamp += timeToAdvanceTimestamps;\n                endTimestamp -= timeToAdvanceTimestamps;\n            }\n\n            if (startTimestamp >= sequenceVideoDurationMs)\n                startTimestamp = sequenceVideoDurationMs - Math.min(VideoClipper.DEFAULT_CLIP_MS, sequenceVideoDurationMs);\n\n            if (endTimestamp > sequenceVideoDurationMs)\n                endTimestamp = sequenceVideoDurationMs;\n\n            const videoID: bigint = await createNewVideo(ownerID, ownerType);\n            if (!videoID) {\n                this.setState({ numberOfStepsGenerated: ++newStepIndex });\n                continue;\n            }\n\n            clipSequenceVideo(videoID, startTimestamp, endTimestamp);\n            updateStepAnimatedVideoID(stepID, videoID);\n            this.setState({ numberOfStepsGenerated: ++newStepIndex });\n        }\n\n        if (stepsGenerated.length !== newStepIndex)\n            this.setState({ errorMessage: i18next.t(\"Could not generate all steps\") });\n        else if (!this.state.errorMessage)\n            this.props.onClose();\n    }\n\n    private createProgressSubtitleText(): string {\n        if (this.state.errorMessage)\n            return i18next.t(this.state.errorMessage);\n\n        if (this.state.totalImagesToAnalyze)\n            return `${i18next.t(\"Analyzing video\")} ${this.state.numberOfImagesAnalyzed} / ${this.state.totalImagesToAnalyze}`;\n\n        if (this.state.totalStepsToGenerate)\n            return `${i18next.t(\"Created Step\")} ${this.state.numberOfStepsGenerated} / ${this.state.totalStepsToGenerate}`;\n\n        return i18next.t(\"Processing your request\");\n    }\n\n    private isDialogCloseable(): boolean {\n        if (!this.state.analysisStarted)\n            return true;\n\n        return Boolean(this.state.errorMessage) || Boolean(this.state.numberOfStepsGenerated) &&\n            this.state.numberOfStepsGenerated === this.state.totalStepsToGenerate;\n    }\n\n    private getCurrentProgress(): number {\n        if (this.state.totalImagesToAnalyze)\n            return this.state.numberOfImagesAnalyzed / this.state.totalImagesToAnalyze * 100;\n        if (this.state.totalStepsToGenerate)\n            return this.state.numberOfStepsGenerated / this.state.totalStepsToGenerate * 100;\n        return 0;\n    }\n\n    render(): JSX.Element {\n        const showProgress: boolean =\n            Boolean(this.state.totalStepsToGenerate || this.state.totalImagesToAnalyze || this.state.errorMessage);\n\n        return (<Dialog size={DialogSize.sm}>\n            <InnerContent>\n                <Title>\n                    {i18next.t(\"Generate Steps\")}\n                </Title>\n                { this.state.analysisStarted ?\n                        <Box>\n                        <LinearProgress\n                            variant={showProgress ? \"determinate\" : \"indeterminate\"}\n                            value={this.getCurrentProgress()}\n                        />\n                        <ProgressSubtitle color={this.state.errorMessage ? red : dark}>\n                            {this.createProgressSubtitleText()}\n                        </ProgressSubtitle>\n                    </Box> :\n                    <Box>\n                        <Box>\n                            {i18next.t(\"Generate a sequence of steps automatically from the captured \" +\n                                \"recording. Your recording will be analyzed using AI. Please review the \" +\n                                \"results carefully.\")}\n                        </Box>\n                            { this.IMAGE_ANALYSIS_OPTIONAL &&\n                                <CheckboxWrapper onClick={() =>\n                                    this.setState({analyzeImages: !this.state.analyzeImages})\n                                }>\n                                    <Checkbox\n                                        style={{padding: \"0px\"}}\n                                        checked={this.state.analyzeImages}\n                                    />\n                                    <Label medium style={{color:`${primary}`, marginTop:`0px`}}>\n                                        {i18next.t(\"Visual analysis\")}\n                                    </Label>\n                                </CheckboxWrapper>\n                            }\n                    </Box>\n                }\n                <Box style={{display: \"flex\", gap:\"4px\", justifyContent: \"flex-end\"}}>\n                    <Button\n                        variant=\"outlined\"\n                        disabled={!this.isDialogCloseable()}\n                        onClick={() => this.props.onClose()}\n                    >\n                        {i18next.t(\"Close\")}\n                    </Button>\n                    <Button\n                        variant=\"outlined\"\n                        disabled={this.state.analysisStarted}\n                        onClick={() => this.startGeneration()}\n                    >\n                        {i18next.t(\"Start\")}\n                    </Button>\n                </Box>\n            </InnerContent>\n        </Dialog>\n        );\n    }\n}\n", "import {dark, darkenWhite, lighterDark, white} from \"@root/react-components/src/values/colors/colors\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Play} from \"@root/react-components/src/icons/Play\";\nimport {Chevron} from \"@root/react-components/src/icons/Chevron\";\nimport {ChevronBar} from \"@root/react-components/src/icons/ChevronBar\";\nimport {\n    canProceedToNextStep,\n    canProceedToPreviousStep,\n    getCurrentStepID,\n    getStepType,\n    isAtStart,\n    isPlaying,\n    playStep,\n    stopStep,\n    toEnd,\n    toStart\n} from \"Engine/AdapterWeb/Steps\";\nimport {Stop} from \"@root/react-components/src/icons/Stop\";\nimport {Caret} from \"@root/react-components/src/icons/Caret\";\nimport {getCurrentSequenceID} from \"Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {SelectedStepContext} from \"@root/Frontend/Studio/Contexts/SelectedStepContext\";\n\nconst DISABLED_OPACITY = 0.6;\n\nconst Wrapper = styled(\"div\")`\n    height: 100%;\n    width: calc(100% + 20px);\n    margin-left: -20px;\n    padding-left: 20px;\n    box-sizing: border-box;\n    background-color: ${dark};\n    display: flex;\n    align-items: center;\n`;\n\nconst Controls = styled(\"div\")`\n    color: ${white};\n    width: calc(100% - 15px);\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 0 12px;\n    box-sizing: border-box;\n    & > div{\n        height: 24px;\n        width: 24px;\n        & > svg{\n            height: 100%;\n            width: 100%;\n        }\n    }\n`;\n\nconst Handle = styled(\"div\")`\n    margin-right: 6px;\n    width: 15px;\n    height: 24px;\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n    align-items: center;\n    padding: 6px 0;\n    color: ${lighterDark};\n    & > div:first-child,\n    & > div:last-child {\n        height: 10px;\n        width: 10px;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        & svg{\n            height:100%;\n            width: 100%;\n        }\n    }\n    & > div:nth-child(2),\n    & > div:nth-child(3) {\n        width: 100%;\n        height: 2px;\n        background-color: ${lighterDark};\n    }\n    & > div:nth-child(2){\n        margin-top: 1px;\n    }\n    & > div:nth-child(3){\n        margin-bottom: 1px;\n    }\n    &:hover{\n        cursor: row-resize\n    }\n`;\n\nconst IconBtn = styled(\"div\")`\n    color: ${white};\n    &:hover{\n        color: ${darkenWhite}\n    }\n`;\n\nexport class StepsPlayer extends React.Component{\n    static contextType = SelectedStepContext;\n\n    context: React.ContextType<typeof SelectedStepContext>;\n    props: { onResize: (deltaY: number) => void };\n    cursorY: number = 0;\n\n    public update() {\n        if (this.context.selectedStepID === getCurrentStepID())\n            this.forceUpdate();\n    }\n\n    // find the y position of a mouse or touch event\n    private getPositionY(event: TouchEvent | MouseEvent) : number {\n        return event instanceof MouseEvent ? event.clientY :\n            event.touches[0].clientY\n    }\n\n    // on down, save the start Y position (touch or cursor)\n    // TODO : change from arrow function to function\n    onDown = (e: React.TouchEvent | React.MouseEvent) => {\n        this.cursorY = this.getPositionY(e.nativeEvent);\n\n        // add 'move' listener to the window\n        window.addEventListener(\"touchmove\", this.onMove);\n        window.addEventListener(\"mousemove\", this.onMove);\n\n        // add 'up' listener\n        window.addEventListener(\"touchend\", this.onUp);\n        window.addEventListener(\"mouseup\", this.onUp);\n    };\n\n    // when moving, update the component Y position\n    // TODO : change from arrow function to function\n    onMove = (e: TouchEvent | MouseEvent) => {\n        const y = this.getPositionY(e);\n        this.props.onResize(y - this.cursorY);\n        this.cursorY = y;\n    };\n\n    // remove all event listeners when gesture completed\n    // TODO : change from arrow function to function\n    onUp = () => {\n        // remove 'move' listener to the window\n        window.removeEventListener(\"mousemove\", this.onMove);\n        window.removeEventListener(\"touchmove\", this.onMove);\n\n        // remove 'up' listener\n        window.removeEventListener(\"mouseup\", this.onUp);\n        window.removeEventListener(\"touchend\", this.onUp);\n    };\n\n    private canProceedToStart(sequence: bigint, step: bigint, type: StepType | null){\n        if(!sequence || !step || type !== StepType.ANIMATED)\n            return false;\n\n        if(isPlaying() || !isAtStart())\n            return true;\n    }\n\n    private canProceedToEnd(sequence: bigint, step: bigint, type: StepType | null){\n        if(!sequence || !step || type !== StepType.ANIMATED)\n            return false;\n\n        if(isPlaying() || isAtStart())\n            return true;\n    }\n\n    render(){\n        const currentSequenceID = getCurrentSequenceID();\n        const currentStep = currentSequenceID ? getCurrentStepID() : BigInt(0);\n        const currentStepType = currentStep ? getStepType(currentStep) : null;\n        return <Wrapper>\n            <Controls>\n                <IconBtn\n                    style={{\n                        transform: \"rotate(180deg)\",\n                        opacity: currentSequenceID && currentStep && canProceedToPreviousStep() ? 1 : DISABLED_OPACITY\n                    }}\n                    onClick={() => this.context.previousStep()}\n                >\n                    <ChevronBar />\n                </IconBtn>\n                <IconBtn\n                    style={{\n                        transform: \"rotate(180deg)\",\n                        opacity: this.canProceedToStart(currentSequenceID, currentStep, currentStepType) ? 1 :\n                            DISABLED_OPACITY\n                    }}\n                    onClick={() => {\n                        if(!this.canProceedToStart(currentSequenceID, currentStep, currentStepType))\n                            return;\n\n                        toStart();\n                    }}\n                >\n                    <Chevron />\n                </IconBtn>\n                <IconBtn\n                    id=\"play-stop-step-button\"\n                    style={{\n                        marginLeft: 3,\n                        opacity: currentSequenceID && currentStep && currentStepType === StepType.ANIMATED\n                            ? 1 : DISABLED_OPACITY\n                    }}\n                    onClick={() => {\n                        if(!currentSequenceID || !currentStep || currentStepType !== StepType.ANIMATED)\n                            return;\n\n                        if(isPlaying())\n                            stopStep();\n                        else\n                            playStep();\n                    }}\n                >\n                    {isPlaying() ? <Stop /> : <Play />}\n                </IconBtn>\n                <IconBtn\n                    style={{\n                        opacity: this.canProceedToEnd(currentSequenceID, currentStep, currentStepType) ? 1 :\n                            DISABLED_OPACITY\n                    }}\n                    onClick={() => {\n                        if(!this.canProceedToEnd(currentSequenceID, currentStep, currentStepType))\n                            return;\n\n                        toEnd();\n                    }}\n                >\n                    <Chevron />\n                </IconBtn>\n                <IconBtn\n                    id=\"next-step-arrow\"\n                    style={{\n                        opacity: currentSequenceID && currentStep && canProceedToNextStep() ? 1 : DISABLED_OPACITY\n                    }}\n                    onClick={() => this.context.nextStep()}\n                >\n                    <ChevronBar />\n                </IconBtn>\n            </Controls>\n            <Handle\n                onMouseDown={this.onDown}\n                onTouchStart={this.onDown}\n            >\n                <div style={{\n                    transform: \"rotate(-90deg)\",\n                    marginBottom: -4\n                }}><Caret /></div>\n                <div />\n                <div />\n                <div style={{\n                    transform: \"rotate(90deg)\",\n                     marginTop: -4\n                }}><Caret /></div>\n            </Handle>\n        </Wrapper>\n    }\n}", "import React from \"react\";\n\nexport const ChevronBar = () =>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n        <path fill={\"currentColor\"} d=\"M368.3,37.7h-46.8c-6.4,0-11.7,5.3-11.7,11.7v170.9v2.6L131.7,44.7c-9.4-9.4-24.6-9.4-33.9,0L75.1,67.4 c-9.4,9.4-9.4,24.5,0,33.9l154,154.7L75,410.7c-9.3,9.4-9.3,24.5,0,33.9l22.7,22.7c9.4,9.4,24.6,9.4,33.9,0l178.1-178.1v1.5v171.9\n    c0,6.4,5.3,11.7,11.7,11.7h46.8c6.4,0,11.7-5.3,11.7-11.7V49.4C380,42.9,374.7,37.7,368.3,37.7z\"/>\n    </svg>;\n", "import React from \"react\";\n\nexport const Stop = () =>\n    <svg focusable=\"false\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n        <path fill=\"currentColor\"\n              d=\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"/>\n    </svg>;\n", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {SequenceList} from \"@root/Frontend/Studio/Views/SequencesPanel/SequenceList\";\nimport {\n    cloneSequence,\n    deleteSequence,\n    getCurrentSequenceID,\n    getSequenceTitle,\n    restoreSequence\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {isCurrentSequenceInEvaluationMode} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {PanelOrder} from \"@root/Frontend/Studio/layouts/LeftPanels\";\nimport {SequenceInformation} from \"@root/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceInformation\";\nimport {SequenceActions} from \"@root/Frontend/Studio/Views/SequencesPanel/SequenceActions\";\nimport {duplicateToast} from \"@utils/utils\";\nimport {canUserEditCurrentWorld, getCurrentWorldID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport i18next from \"i18next\";\nimport { Button } from \"@root/react-components/src/buttons/Button\";\nimport {VersioningSequence} from \"@root/Frontend/Studio/Views/SequencesPanel/VersioningSequence\";\nimport {darkenPrimary, primary} from \"@root/react-components/src/values/colors/colors\";\nimport { AdapterLog } from \"Engine/AdapterWeb/AdapterLog\";\nimport {CloneSequenceLoading} from \"@root/Frontend/Studio/Views/SequencesPanel/CloneSequenceLoading\";\nimport {getStepsList} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {Toast} from \"@root/react-components/src/misc/Toast\";\n\nconst SequencePanelContainer = styled(Box)({\n    height: \"calc(100% - 40px)\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"space-between\",\n    gap: \"8px\"\n});\n\nconst SequenceContainer = styled(Box)({\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"space-between\",\n    gap: \"16px\"\n});\n\nconst SequenceSectionContainer = styled(Box)({\n    height: \"100%\",\n    display: \"flex\",\n    padding: \"0px 12px\",\n    flexDirection: \"column\",\n    gap: \"16px\",\n    overflow: \"auto\",\n    /* width */\n    \"&::-webkit-scrollbar\": {\n        width: \"10px\",\n        height: \"10px\",\n    },\n    /* Track */\n    \"&::-webkit-scrollbar-track\": {\n        width: 0,\n        backgroundColor: primary,\n        borderRadius: \"10px\",\n    },\n    /* Handle */\n    \"&::-webkit-scrollbar-thumb\": {\n        background: darkenPrimary,\n    },\n});\n\nconst ExitSequenceButton = styled(Button)({\n    width: \"fit-content\",\n    margin: \"0px auto\",\n    paddingX: \"10px\"\n});\n\ninterface SequencePanelState {\n    currentSequenceID: bigint;\n    stepsToClone: bigint[];\n    isEvaluation: boolean;\n}\n\nexport class SequencesPanel extends React.Component {\n    private readonly sequenceInformationRef: React.RefObject<SequenceInformation> =\n        React.createRef<SequenceInformation>();\n    private readonly sequenceListRef: React.RefObject<SequenceList> = React.createRef<SequenceList>();\n    private readonly sequenceActionRef: React.RefObject<SequenceActions> = React.createRef<SequenceActions>();\n    private readonly cloneSequenceLoadingRef: React.RefObject<CloneSequenceLoading> =\n        React.createRef<CloneSequenceLoading>();\n    state: SequencePanelState = {\n        currentSequenceID: BigInt(0),\n        isEvaluation: isCurrentSequenceInEvaluationMode(),\n        stepsToClone: []\n    };\n\n    componentDidMount() {\n        if (getCurrentWorldID())\n            this.setState({ currentSequenceID: getCurrentSequenceID() });\n    }\n\n    public updateSequence() {\n        this.sequenceInformationRef.current?.updateSequence();\n        this.sequenceActionRef.current?.updateSequence();\n\n        // update the current sequence if the core changed it\n        if (getCurrentSequenceID() !== this.state.currentSequenceID)\n            this.setState({ currentSequenceID: getCurrentSequenceID() });\n\n        const isEvaluation: boolean = isCurrentSequenceInEvaluationMode();\n        if (isEvaluation !== this.state.isEvaluation)\n            this.setState({ isEvaluation });\n    }\n\n    public updateSequencesList() { this.sequenceListRef.current?.updateSequenceList(); }\n\n    public updateStep(stepID: bigint) {\n        this.cloneSequenceLoadingRef.current?.updateStep(stepID);\n    }\n\n    private changeSelectedSequenceID(currentSequenceID: bigint, openPanelSteps: boolean) {\n        if (this.state.currentSequenceID === currentSequenceID)\n            return;\n\n        // don't open the steps panel if we don't have a valid sequence!\n        if(!currentSequenceID && openPanelSteps) {\n            AdapterLog.ERROR(\"Cannot open steps panel if no Sequence was provided!\");\n            openPanelSteps = false;\n        }\n\n        this.setState({ currentSequenceID }, () => {\n            App.getInstance().getEngine()?.setCurrentSequence(currentSequenceID);\n            if (openPanelSteps)\n                App.getInstance()?.openPanel(PanelOrder.STEPS);\n        });\n    }\n\n    private deleteSequence(sequenceID: bigint) {\n        this.changeSelectedSequenceID(BigInt(0), false);\n        const sequenceTitle: string = getSequenceTitle(sequenceID);\n        if (!deleteSequence(sequenceID))\n            return;\n\n        this.sequenceListRef.current?.updateSequenceList();\n        const toastContent: JSX.Element = (\n            <Box>\n                {i18next.t(\"The sequence\")}&nbsp;\n                <span style={{fontWeight: \"bold\"}}>{sequenceTitle}</span>\n                &nbsp;{i18next.t(\"has been deleted\")}\n            </Box>\n        );\n        Toast.showToast(toastContent);\n    }\n\n    private cloneSequence(sequenceID: bigint) {\n        this.setState({ stepsToClone: getStepsList() });\n        const newTitle: string = `${getSequenceTitle(sequenceID)} ${i18next.t(\"copy\")}`;\n        const newSequenceID: bigint = cloneSequence(sequenceID, newTitle);\n\n        if (newSequenceID !== BigInt(0)) {\n            this.sequenceListRef.current?.updateSequenceList();\n            duplicateToast(newTitle);\n        }\n    }\n\n    private publishSequence(sequenceID: bigint, isMajor: boolean) {\n        this.setState({ stepsToClone: getStepsList() });\n\n        const newSequenceID: bigint = App.getInstance().getFilterSequenceList().publishSequence(sequenceID, isMajor);\n        this.changeSelectedSequenceID(newSequenceID, false);\n    }\n\n    private restoreSequence(sequenceID: bigint) {\n        this.setState({ stepsToClone: getStepsList() });\n        const newSequenceID: bigint = restoreSequence(sequenceID);\n        this.changeSelectedSequenceID(newSequenceID, false);\n    }\n\n    render() {\n        return (\n            <SequencePanelContainer\n                id={this.state.currentSequenceID.toString()}\n                className=\"sequence-container\"\n            >\n                { !this.state.currentSequenceID ?\n                    <SequenceList\n                        ref={this.sequenceListRef}\n                        changeSelectedSequenceID={(sequence: bigint) => this.changeSelectedSequenceID(sequence, true)}\n                    />\n                    :\n                    <SequenceContainer>\n                        <SequenceSectionContainer>\n                            <SequenceInformation\n                                ref={this.sequenceInformationRef}\n                                currentSequenceID={this.state.currentSequenceID}\n                                onSequenceEvaluationChange={(isEvaluation: boolean) =>\n                                    this.setState({ isEvaluation })}\n                            />\n                            {canUserEditCurrentWorld() &&\n                                <SequenceActions\n                                    ref={this.sequenceActionRef}\n                                    currentSequenceID={this.state.currentSequenceID}\n                                    isEvaluation={this.state.isEvaluation}\n                                    deleteSequence={() => this.deleteSequence(this.state.currentSequenceID)}\n                                    cloneSequence={() => this.cloneSequence(this.state.currentSequenceID)}\n                                    publishSequence={(isMajor: boolean) => this.publishSequence(this.state.currentSequenceID, isMajor)}\n                                    restoreSequence={() => this.restoreSequence(this.state.currentSequenceID)}\n                                />\n                            }\n                            <VersioningSequence\n                                selectSequenceVersion={(seqID: bigint) => this.changeSelectedSequenceID(seqID, true)}\n                                currentSequenceID={this.state.currentSequenceID}\n                            />\n                        </SequenceSectionContainer>\n                        <ExitSequenceButton\n                            id=\"exit-sequence-btn\"\n                            size=\"large\"\n                            color=\"white\"\n                            onClick={() => this.changeSelectedSequenceID(BigInt(0), false)}\n                        >\n                            {i18next.t(\"Exit sequence\")}\n                        </ExitSequenceButton>\n                    </SequenceContainer>\n                }\n                { Boolean(this.state.stepsToClone.length) &&\n                    <CloneSequenceLoading\n                        ref={this.cloneSequenceLoadingRef}\n                        stepsToClone={this.state.stepsToClone}\n                        onClose={() => this.setState({ stepsToClone: [] })}\n                    />\n                }\n            </SequencePanelContainer>\n        )\n    }\n}\n", "import React, {CSSProperties} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {\n    getCurrentWorldSequencesList,\n    getSequenceTitle\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {FixedSizeList} from \"react-window\";\nimport {SequenceItem} from \"./SequenceItem\";\nimport AutoSizer from \"react-virtualized-auto-sizer\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {darkenPrimary, primary} from \"@root/react-components/src/values/colors/colors\";\nimport {canUserEditCurrentWorld, getCurrentWorldID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {FilterType, Sorting} from \"@root/Frontend/Studio/Components/Sorting\";\nimport {SearchBar} from \"@root/react-components/src/inputs/SearchBar\";\nimport isEqual from \"lodash/isEqual\";\nimport {NewSequenceDialog} from \"@root/Frontend/Studio/Views/SequencesPanel/NewSequenceDialog\";\nimport {setSequencesSorting} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {SequenceTagsFilter} from \"@root/Frontend/Studio/Views/SequencesPanel/Tags/SequenceTagsFilter\";\n\nconst List = styled(FixedSizeList)({\n    \"&::-webkit-scrollbar\": { height: \"6px\", width: \"12px\" },\n    \"&::-webkit-scrollbar-track\": { background: primary },\n    \"&::-webkit-scrollbar-thumb\": {\n        backgroundColor: darkenPrimary,\n        borderRadius: \"6px\",\n        border: `3px solid ${primary}`\n    }\n});\n\nconst CreateSequenceButton = styled(Button)({\n    width: \"fit-content\",\n    margin: \"0px auto\",\n    paddingX: \"10px\"\n});\n\nconst FiltersContainer = styled(Box)({\n    display: \"flex\",\n    gap: \"10px\",\n    alignItems: \"center\",\n    padding: \"0px 12px\",\n});\n\ninterface SequenceListProps { changeSelectedSequenceID: (sequenceID: bigint) => void; }\n\ninterface SequenceListState {\n    sequenceIDs: bigint[];\n    isCreateNewSequenceDialogOpen: boolean;\n    filterType: FilterType;\n    isAscendant: boolean;\n    searchStr: string;\n}\n\nexport class SequenceList extends React.Component {\n    private readonly sequencesMapRef: Map<bigint, React.RefObject<SequenceItem>> =\n        new Map<bigint, React.RefObject<SequenceItem>>();\n    props: SequenceListProps;\n    state: SequenceListState = {\n        sequenceIDs: [],\n        isCreateNewSequenceDialogOpen: false,\n        filterType: FilterType.ALPHA,\n        isAscendant: true,\n        searchStr: \"\",\n    };\n\n    componentDidMount() {\n        if (!getCurrentWorldID())\n            return;\n\n        setSequencesSorting(Object.values(FilterType).indexOf(this.state.filterType), this.state.isAscendant);\n        this.updateSequenceList();\n    }\n\n    componentDidUpdate(prevProps: Readonly<{}>, prevState: Readonly<SequenceListState>) {\n        if (!getCurrentWorldID())\n            return;\n\n        if (prevState.filterType !== this.state.filterType || prevState.isAscendant !== this.state.isAscendant ||\n            prevState.searchStr !== this.state.searchStr) {\n            setSequencesSorting(Object.values(FilterType).indexOf(this.state.filterType), this.state.isAscendant);\n            this.updateSequenceList();\n        }\n    }\n\n    public updateSequenceList() {\n        if (!getCurrentWorldID())\n            return;\n\n        const sequenceIDs: bigint[] = getCurrentWorldSequencesList().filter((sequenceID: bigint): boolean => {\n            const title: string = getSequenceTitle(sequenceID).toLowerCase();\n            return title.includes(this.state.searchStr.toLowerCase());\n        });\n\n        if (!isEqual(sequenceIDs, this.state.sequenceIDs))\n            this.setState({ sequenceIDs });\n    }\n\n    private handleChangeFilter(filterType: FilterType) {\n        if (filterType === this.state.filterType) {\n            return this.setState((prevState: SequenceListState) => ({\n                isAscendant: !prevState.isAscendant\n            }));\n        }\n        this.setState({ filterType, isAscendant: true });\n    }\n\n    private renderSequenceItem(index: number, style: CSSProperties): JSX.Element {\n        const sequenceID: bigint = this.state.sequenceIDs[index];\n        const sequenceRef: React.RefObject<SequenceItem> = React.createRef<SequenceItem>();\n\n        this.sequencesMapRef.set(sequenceID, sequenceRef);\n\n        return (\n            <SequenceItem\n                ref={sequenceRef}\n                sequenceID={sequenceID}\n                style={style}\n                changeSelectedSequenceID={() => this.props.changeSelectedSequenceID(sequenceID)}\n            />\n        )\n    }\n\n    render() {\n        return (\n            <>\n                <FiltersContainer>\n                    <SearchBar onChange={(searchStr: string) => this.setState({ searchStr })}/>\n                    <SequenceTagsFilter onChange={() => this.updateSequenceList()} />\n                    <Sorting\n                        white\n                        isAscendant={this.state.isAscendant}\n                        filterType={this.state.filterType}\n                        handleChangeFilter={(type: FilterType) => this.handleChangeFilter(type)}\n                    />\n                </FiltersContainer>\n\n                <Box id=\"sequences-list\" style={{ flex: 1, height: \"100%\", padding: \"0px 12px\",}}>\n                    <AutoSizer>\n                        {(props: { height: number, width: number }) =>\n                            <List\n                                height={props.height}\n                                width={props.width}\n                                itemCount={this.state.sequenceIDs.length}\n                                itemSize={70}>\n                                {({index, style}) => this.renderSequenceItem(index, style)}\n                            </List>\n                        }\n                    </AutoSizer>\n                </Box>\n                {canUserEditCurrentWorld() &&\n                    <CreateSequenceButton\n                        id=\"create-new-sequence-button\"\n                        size=\"large\"\n                        color=\"white\"\n                        onClick={() => this.setState({ isCreateNewSequenceDialogOpen: true })}>\n                        {i18next.t(\"Create sequence\")}\n                    </CreateSequenceButton>\n                }\n                {this.state.isCreateNewSequenceDialogOpen &&\n                    <NewSequenceDialog\n                        onClose={() => this.setState({ isCreateNewSequenceDialogOpen: false })}\n                        onNewSequence={(sequenceID: bigint) => this.props.changeSelectedSequenceID(sequenceID)}\n                    />\n                }\n            </>\n        )\n    }\n}\n", "import React, {CSSProperties} from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {getSequenceTitle} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {Arrow} from \"@root/react-components/src/icons/Arrow\";\nimport {secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {white, darkenPrimary, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {Star} from \"@root/react-components/src/icons/Star\";\nimport {isSequenceCritical} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {Sequence} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {SequenceTagsContainer} from \"@root/Frontend/Studio/Views/SequencesPanel/Tags/SequenceTagsContainer\";\nimport {isEqual} from \"lodash\";\nimport {SequenceTag} from \"@root/Frontend/Studio/Views/SequencesPanel/Tags/SequenceTag\";\n\nconst VirtualizedStyling = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"100%\",\n    borderBottom: `solid 1px ${white}`\n});\n\nconst HorizontalContainer = styled(Box)({\n    width: \"100%\",\n    minWidth: \"0\",\n    // This creates space between the lines and the background when hovering.\n    height: \"62px\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    padding: \"0px 10px 0px 8px\",\n    gap: \"8px\",\n    transition: \"0.2s\",\n    borderRadius: \"4px\",\n    \"&:hover\": {backgroundColor: darkenPrimary}\n});\n\nconst VerticalContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    width: \"100%\",\n    minWidth: \"0\",\n    flexGrow: \"1\",\n    justifyContent: \"space-between\",\n    gap: \"5px\"\n});\n\nconst SequenceTitle = styled(Box)({\n    flexGrow: \"1\",\n    font: secondaryFontLarge,\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    flexDirection: \"column\",\n    wordWrap: \"break-word\"\n});\n\nconst IconsContainer = styled(Box)({\n    display: \"flex\",\n    gap: \"5px\",\n    \"& svg\": {\n        width: \"12px\",\n        height: \"12px\",\n        fill: white\n    }\n});\n\ninterface SequenceItemProps {\n    sequenceID: bigint;\n    style: CSSProperties;\n    changeSelectedSequenceID: () => void;\n}\n\ninterface SequenceItemState {\n    title: string;\n    isCritical: boolean;\n    tags: string[];\n}\n\nexport class SequenceItem extends React.Component {\n    props: SequenceItemProps;\n    state: SequenceItemState = { title: \"\", isCritical: false, tags: [] };\n\n    componentDidMount() { this.updateSequence(); }\n\n    public updateSequence() {\n        const title: string = getSequenceTitle(this.props.sequenceID);\n        const isCritical: boolean = isSequenceCritical(this.props.sequenceID);\n        using sequence: Sequence | null = App.getInstance().getSequence(this.props.sequenceID);\n        const tags: string[] = sequence?.getTags().sort() ?? [];\n\n        if (title !== this.state.title)\n            this.setState({ title });\n\n        if (isCritical !== this.state.isCritical)\n            this.setState({ isCritical });\n\n        if (!isEqual(tags, this.state.tags))\n            this.setState({ tags });\n    }\n\n    render() {\n        return (\n            <VirtualizedStyling style={this.props.style}>\n                <HorizontalContainer\n                    id={this.props.sequenceID.toString()}\n                    className=\"sequence-item\"\n                    onClick={() => this.props.changeSelectedSequenceID()}\n                >\n                    <VerticalContainer>\n                        <SequenceTitle className=\"sequence-item-title\"\n                                       style={{alignContent: this.state.tags?.length > 0 ? \"end\" : \"center\"}}>\n                            {this.state.title}\n                        </SequenceTitle>\n                        {this.state.tags?.length > 0 &&\n                            <Box style={{paddingBottom: \"4px\"}}>\n                                <SequenceTagsContainer tags={this.state.tags}/>\n                            </Box>\n                        }\n                    </VerticalContainer>\n                    <IconsContainer>\n                        {this.state.isCritical &&\n                            <IconsContainer> <Star color={yellow} fillColor={yellow}/> </IconsContainer>\n                        }\n                        <Arrow/>\n                    </IconsContainer>\n                </HorizontalContainer>\n            </VirtualizedStyling>\n        )\n    }\n}\n", "import React from \"react\";\n\nexport function Arrow() {\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"#23292F\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path d=\"M15 12L6 21L9.054 24L21 12L9.054 0L6 3L15 12Z\" />\n        </svg>\n    )\n}\n", "import React, {RefObject} from \"react\";\nimport {SequenceTag} from \"@root/Frontend/Studio/Views/SequencesPanel/Tags/SequenceTag\";\nimport {Box, styled} from \"@mui/material\";\nimport {isEqual} from \"lodash\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\n\nconst Wrapper = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\"\n});\n\nconst TagList = styled(Box)({\n    display: \"flex\",\n    flexGrow: \"1\",\n    gap: \"4px\",\n    minWidth: \"0px\",\n    overflowX: \"hidden\",\n});\n\nconst TooltipContent = styled(Box)({\n    display: \"flex\",\n    gap: \"4px\",\n    flexDirection: \"column\"\n});\n\nconst TextRemainingTags = styled(Box)({\n    font: secondaryFontMedium,\n    marginLeft: \"5px\"\n});\n\ninterface SequenceTagsContainerState {\n    visibleCount: number;\n}\n\ninterface SequenceTagsContainerProps {\n    tags: string[];\n}\n\nexport class SequenceTagsContainer extends React.Component {\n    state: SequenceTagsContainerState = {\n        visibleCount: 0\n    };\n    props: SequenceTagsContainerProps;\n\n    private tagListRef: RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n\n    componentDidMount() { this.updateVisibleCount(); }\n\n    componentDidUpdate(prevProps: SequenceTagsContainerProps) {\n        if (!isEqual(prevProps.tags, this.props.tags))\n            this.updateVisibleCount();\n    }\n\n    private updateVisibleCount() {\n        if (!this.tagListRef.current)\n            return;\n\n        // Get all tags elements that are within the parent (compare right side)\n        const tagListRect: DOMRect = this.tagListRef.current.getBoundingClientRect();\n        const tags: Element[] = Array.from(this.tagListRef.current.children);\n        const visibleCount: number = tags.filter(tag => tag.getBoundingClientRect().right <= tagListRect.right).length;\n\n        this.setState({ visibleCount });\n    }\n\n    render(): JSX.Element {\n        const visibleTags: string[] = this.props.tags.slice(0, this.state.visibleCount);\n        const hiddenTags: string[] = this.props.tags.slice(this.state.visibleCount);\n        return (\n            <Wrapper>\n                <TagList ref={this.tagListRef}>\n                    {this.props.tags.map((tag: string, index: number) =>\n                        <Box key={index} style={{visibility: visibleTags.includes(tag) ? \"visible\": \"hidden\"}}>\n                            <SequenceTag text={tag}/>\n                        </Box>\n                    )}\n                </TagList>\n                {Boolean(hiddenTags.length) &&\n                    <Tooltip\n                        placement={\"right\"}\n                        title={\n                            <TooltipContent>\n                                {hiddenTags.map((tag: string, index: number) =>\n                                    <SequenceTag key={index} text={tag} />\n                                )}\n                            </TooltipContent>\n                        }\n                    >\n                        <TextRemainingTags>\n                            {\"+\" + hiddenTags.length}\n                        </TextRemainingTags>\n                    </Tooltip>\n                }\n            </Wrapper>\n        );\n    }\n}\n", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport {secondaryFontSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {u8vec3} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {App} from \"@root/Frontend/Studio/App\";\n\nconst TagLabel = styled(Box)({\n    display: \"flex\",\n    gap: \"4px\",\n    padding: \"2px 8px\",\n    height: \"12px\",\n    width: \"max-content\",\n    borderRadius: \"8px\",\n    font: secondaryFontSmall,\n    color: \"black\"\n});\n\nconst IconContainer = styled(Box)({\n    width: \"fit-content\",\n    opacity : \"0.6\",\n    \"& svg\": {\n        cursor: \"pointer\",\n        fill: dark,\n        width: \"12px\",\n        height: \"12px\"\n    },\n    \"&:hover\": {\n        opacity : \"1\"\n    }\n});\n\ninterface TagSequenceProps {\n    text: string;\n    onTagRemoved?: (tag: string) => void;\n}\n\ninterface TagSequenceState {\n    backgroundColor: string;\n}\n\nexport class SequenceTag extends React.Component {\n    props: TagSequenceProps;\n    state: TagSequenceState = { backgroundColor : \"\" };\n\n    componentDidMount() {\n        this.setState({ backgroundColor: this.getBackgroundColor(this.props.text) });\n    }\n\n    componentDidUpdate(prevProps: TagSequenceProps) {\n        if (this.props.text !== prevProps.text)\n            this.setState({ backgroundColor: this.getBackgroundColor(this.props.text) });\n    }\n\n    private getBackgroundColor(text: string): string {\n        const generatedColor: u8vec3 = App.getInstance().getEngine().getColorFromString(text);\n        return `rgb(${generatedColor.r},${generatedColor.g},${generatedColor.b})`;\n    }\n\n    render() {\n        return (\n            <TagLabel style={{\n                backgroundColor: this.state.backgroundColor,\n                color: `contrast-color(${this.state.backgroundColor})`\n            }}>\n                {this.props.text}\n                {this.props.onTagRemoved &&\n                    <IconContainer onClick={() => this.props.onTagRemoved?.(this.props.text)}>\n                        <Close/>\n                    </IconContainer>\n                }\n            </TagLabel>\n        )\n    }\n}\n", "import React from \"react\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport i18next from \"i18next\";\nimport {primaryFontXLarge, secondaryFontXSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport {addNewSequence} from \"Engine/AdapterWeb/Sequences\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box} from \"@mui/material\";\nimport {dark, red} from \"@root/react-components/src/values/colors/colors\";\n\ninterface NewSequenceDialogProps {\n    onClose: () => void,\n    onNewSequence: (sequenceID: bigint) => void\n}\n\ninterface NewSequenceDialogState {\n    newSequenceTitle: string;\n}\n\nexport const MAX_SEQUENCE_TITLE_CHARACTERS = 50;\n\nexport class NewSequenceDialog extends React.Component{\n    props: NewSequenceDialogProps;\n    state: NewSequenceDialogState = { newSequenceTitle: \"\" };\n\n    componentDidMount() { window.addEventListener(\"keydown\",  this.handleKeydown); }\n\n    componentWillUnmount() { window.removeEventListener(\"keydown\", this.handleKeydown); }\n\n    private handleKeydown = (event: KeyboardEvent)=> {\n        if (event.key === \"Enter\")\n            this.handleSave()\n    }\n\n    private handleSave() {\n        if (!this.state.newSequenceTitle.length)\n            return;\n        const sequenceID: bigint = addNewSequence(this.state.newSequenceTitle);\n        this.props.onNewSequence(sequenceID);\n    }\n\n    render() {\n        return (\n            <Dialog size={DialogSize.xs} onClose={() => this.props.onClose()} closeOnClickOutside>\n                <Box style={{ font: primaryFontXLarge }}> {i18next.t(\"Create a new sequence\")} </Box>\n                <Box style={{ marginTop: \"20px\", marginBottom: \"20px\" }}>\n                    <InputText\n                        id=\"create-sequence-title-input\"\n                        dark\n                        placeholder={i18next.t(\"New Sequence\")}\n                        onChange={(newSequenceTitle: string) => this.setState({ newSequenceTitle })}\n                    />\n                    <Box style={{\n                        font: secondaryFontXSmall,\n                        color: this.state.newSequenceTitle.length > MAX_SEQUENCE_TITLE_CHARACTERS ? red : dark }}>\n                        {this.state.newSequenceTitle.length}/{MAX_SEQUENCE_TITLE_CHARACTERS} {i18next.t(\"characters\")}\n                    </Box>\n                </Box>\n\n                <Box style={{ display: \"flex\", flex: 1, justifyContent: \"flex-end\" }}>\n                    <Button variant=\"outlined\" onClick={() => this.props.onClose()}>\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                    <Box style={{width:\"5px\"}}/>\n                    <Button\n                        id=\"save_new_sequence\"\n                        onClick={() => this.handleSave()}\n                        disabled={!this.state.newSequenceTitle.length ||\n                                  this.state.newSequenceTitle.length > MAX_SEQUENCE_TITLE_CHARACTERS}>\n                        {i18next.t(\"Save\")}\n                    </Button>\n                </Box>\n            </Dialog>\n        )\n    }\n}\n", "import React from \"react\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Box, Checkbox, Popover, styled} from \"@mui/material\";\nimport {lightGrey, primary, white, dark, darkGrey} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {primaryFontLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {Filter} from \"@root/react-components/src/icons/Filter\";\nimport {SequenceTag} from \"@root/Frontend/Studio/Views/SequencesPanel/Tags/SequenceTag\";\nimport {Regenerate} from \"@root/react-components/src/icons/Regenerate\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport isEqual from \"lodash/isEqual\";\n\nconst FilterContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"200px\"\n});\n\nconst PopoverTitle = styled(Box)({\n    font: primaryFontLarge,\n    padding: \"4px\",\n    margin: \"8px 12px 4px 8px\",\n    borderBottom: `1px solid ${lightGrey}`,\n    userSelect: \"none\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n});\n\nconst ClearFilters = styled(Box)({\n    opacity : \"0.6\",\n    cursor: \"pointer\",\n    height: \"21px\",\n    \"&:hover\": {\n        opacity : \"1\"\n    },\n    \"& svg\": {\n        width: \"21px\",\n        height: \"21px\"\n    }\n});\n\nconst CheckboxWrapper = styled(Box)({\n    height: \"25px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    gap: \"8px\",\n    padding: \"4px 16px\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n        backgroundColor: primary,\n        \"span\": { // span is the checkbox icon\n            color: white\n        }\n    }\n});\n\nconst NotTagText = styled(Box)({\n    textAlign: \"center\",\n    padding: \"10px\",\n    font: secondaryFontMedium,\n    color: darkGrey\n});\n\ninterface SequenceTagsFilterProps {\n    onChange: () => void;\n}\n\ninterface SequenceTagsFilterState {\n    filterOpen: boolean;\n    selectedTags: Set<string>;\n}\n\nexport class SequenceTagsFilter extends React.Component{\n    readonly popOverAnchorRef: React.RefObject<HTMLDivElement> = React.createRef();\n\n    props: SequenceTagsFilterProps;\n\n    state: SequenceTagsFilterState = {\n        filterOpen : false,\n        selectedTags : new Set<string>()\n    }\n\n    componentDidMount() {\n        this.setState({ selectedTags : new Set(App.getInstance().getFilterSequenceTags().getSelectedTags()) });\n    }\n\n    componentDidUpdate() {\n        const selectedTags: Set<string> = new Set(App.getInstance().getFilterSequenceTags().getSelectedTags());\n        if (!isEqual(selectedTags, this.state.selectedTags))\n            this.setState({ selectedTags }, () => this.props.onChange());\n    }\n\n    private setSelectedTag(tag: string, selected: boolean) {\n        App.getInstance().getFilterSequenceTags().setSelectedTag(tag, selected);\n        this.setState({selectedTags: new Set(App.getInstance().getFilterSequenceTags().getSelectedTags())}, () => this.props.onChange());\n    }\n\n    private clearSelectedTags() {\n        App.getInstance().getFilterSequenceTags().clearSelectedTags();\n        this.setState({ selectedTags: new Set() }, () => this.props.onChange());\n    }\n\n    render() {\n        const allTags: string[] = App.getInstance().getFilterSequenceTags().getTags();\n\n        return (\n            <>\n                <Box ref={this.popOverAnchorRef}>\n                    <Button\n                        variant=\"outlined\"\n                        color={ \"white\" }\n                        sx={{ minWidth: \"unset\", minHeight: \"unset\", padding: \"6px\" }}\n                        onClick={() =>\n                            this.setState({ filterOpen: true })\n                        }\n                    >\n                        <Box style={{ width: \"15px\", height: \"15px\", color: \"white\" }}>\n                            <Filter />\n                        </Box>\n                    </Button>\n                </Box>\n                {this.state.filterOpen &&\n                    <Popover\n                        open={ this.state.filterOpen }\n                        anchorEl={ this.popOverAnchorRef.current }\n                        onClose={() => this.setState({ filterOpen: false })}\n                        anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n                    >\n                        <FilterContainer>\n                            <PopoverTitle>\n                                { i18next.t(\"Filter Tags\") }\n                                { this.state.selectedTags.size > 0 &&\n                                    <ClearFilters onClick={() => this.clearSelectedTags()}>\n                                        <Regenerate color={dark} fillColor={white}/>\n                                    </ClearFilters>\n                                }\n                            </PopoverTitle>\n                            <Box>\n                                { allTags.map((tag: string) => {\n                                    const checked : boolean = this.state.selectedTags.has(tag);\n                                    return (\n                                        <CheckboxWrapper key={tag} onClick={() => this.setSelectedTag(tag, !checked)}>\n                                            <SequenceTag text={tag}/>\n                                            <Checkbox\n                                                style={{padding: \"0px\"}}\n                                                checked={checked}\n                                            />\n                                        </CheckboxWrapper>\n                                    );\n                                })}\n                                { allTags.length === 0 &&\n                                    <NotTagText>\n                                        { i18next.t(\"No tags in sequences\") }\n                                    </NotTagText>\n                                }\n                            </Box>\n                        </FilterContainer>\n                    </Popover>\n                }\n            </>\n        )\n    }\n}\n", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {primaryFontLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {dark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {canCurrentPeerEditSequence} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {\n    getChildSequenceID,\n    getParentSequenceID,\n    getSequenceTitle,\n    updateSequenceTitle\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {Rename} from \"@root/react-components/src/icons/Rename\";\nimport {getStepsCount} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {timestampToString, copyToClipBoard} from \"@utils/utils\";\nimport {Check} from \"@root/react-components/src/icons/Check\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {canUserEditCurrentWorld, getCurrentWorldID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {InputTextarea} from \"@root/react-components/src/inputs/InputTextarea\";\nimport {SequenceLanguageSelect} from \"@root/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceLanguageSelect\";\nimport {SequenceObjectives} from \"@root/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceObjectives\";\nimport {MAX_SEQUENCE_TITLE_CHARACTERS} from \"@root/Frontend/Studio/Views/SequencesPanel/NewSequenceDialog\";\nimport {SequenceNotes} from \"@root/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceNotes\";\nimport {SequenceCritical} from \"@root/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceCritical\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\nimport {SequenceLevel} from \"@root/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceLevel\";\nimport {Share} from \"@root/react-components/src/icons/Share\";\nimport {SequenceExpiration} from \"@root/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceExpiration\";\nimport {getUrlAPI} from \"@root/Frontend/Studio/Engine/utils\";\nimport {SequenceTagsInformation} from \"@root/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceTagsInformation\";\n\nconst InfoContainer = styled(Box)({\n    display: \"flex\",\n    padding: \"8px\",\n    flexDirection: \"column\",\n    borderRadius: \"8px\",\n    backgroundColor: white\n});\n\nconst Header = styled(Box)({\n    font: primaryFontLarge,\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    paddingTop: \"5px\",\n    paddingBottom: \"5px\",\n    borderBottom: `1px solid ${dark}`,\n    color: dark,\n    \"& svg\": {\n        fill: dark,\n        width: \"15px\",\n        height: \"15px\"\n    }\n});\n\nconst Row = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"100%\",\n    gap: \"12px\",\n    font: secondaryFontMedium,\n    color: dark,\n    padding: \"8px 0px\"\n});\n\nconst RowTitle = styled(Box)({\n    flex: 1,\n    minHeight: \"16px\"\n});\n\nconst RowValue = styled(Box)({\n    width: \"fit-content\",\n    \"& svg\": {\n        fill: dark,\n        width: \"12px\",\n        height: \"12px\"\n    }\n});\n\nconst IconContainer = styled(Box)((props: { is_disabled?: number }) => ({\n    pointerEvents: props.is_disabled ? \"none\" : \"unset\",\n    opacity: props.is_disabled ? 0.6 : 1\n}));\n\nconst CRITICAL_TOOLTIP_1: string = \"If a sequence is critical then it is important for users to master it\";\nconst CRITICAL_TOOLTIP_2: string = \"They will always appear at the top of the sequence list\";\n\ninterface SequenceInformationProps {\n    currentSequenceID: bigint;\n    onSequenceEvaluationChange: (isEvaluation: boolean) => void;\n}\ninterface SequenceInformationState {\n    newSequenceTitle: string | null;\n    creationDate: bigint;\n    stepCount: number;\n    level: string;\n    canShareSequence: boolean;\n}\nexport class SequenceInformation extends React.Component {\n    private readonly sequenceLanguageSelectRef: React.RefObject<SequenceLanguageSelect> = React.createRef();\n    private readonly sequenceObjectiveRef: React.RefObject<SequenceObjectives> = React.createRef();\n    private readonly sequenceCriticalRef: React.RefObject<SequenceCritical> = React.createRef();\n    private readonly sequenceExpirationRef: React.RefObject<SequenceExpiration> = React.createRef();\n    private readonly sequenceLevelRef: React.RefObject<SequenceLevel> = React.createRef();\n    private readonly sequenceNotesRef: React.RefObject<SequenceNotes> = React.createRef();\n    private readonly sequenceTagsRef: React.RefObject<SequenceTagsInformation> = React.createRef();\n    props: SequenceInformationProps;\n    state: SequenceInformationState = {\n        newSequenceTitle: null,\n        creationDate: BigInt(0),\n        stepCount: 0,\n        level: \"0\",\n        canShareSequence: false,\n    }\n\n    componentDidMount() {\n        window.addEventListener(\"keydown\",  this.handleKeydown);\n        this.updateSequence();\n    }\n\n    componentWillUnmount() {\n        window.removeEventListener(\"keydown\", this.handleKeydown);\n    }\n\n    public updateSequence() {\n        this.sequenceLanguageSelectRef.current?.updateSequence();\n        this.sequenceObjectiveRef.current?.updateSequence();\n        this.sequenceCriticalRef.current?.updateSequence();\n        this.sequenceExpirationRef.current?.updateSequence();\n        this.sequenceLevelRef.current?.updateSequence();\n        this.sequenceNotesRef.current?.updateSequence();\n        this.sequenceTagsRef.current?.updateSequence();\n\n        const stepCount: number = getStepsCount();\n        if (this.state.stepCount !== stepCount)\n            this.setState({ stepCount });\n\n        const canShareSequence: boolean = Boolean(getChildSequenceID(this.props.currentSequenceID) ||\n                                                  getParentSequenceID(this.props.currentSequenceID));\n        if (canShareSequence !== this.state.canShareSequence)\n            this.setState({ canShareSequence });\n    }\n\n    private handleKeydown = (event: KeyboardEvent) => {\n        if (event.key === \"Enter\" && this.state.newSequenceTitle &&\n            this.state.newSequenceTitle !== getSequenceTitle(this.props.currentSequenceID))\n            this.updateTitle();\n    }\n\n    private getCreationDate(): string {\n        return timestampToString(UtilsShared.getTimestampOfRandomID(this.props.currentSequenceID), false);\n    }\n\n    private invalidNewTitle() {\n        return !this.state.newSequenceTitle?.trim() ||\n               getSequenceTitle(this.props.currentSequenceID) === this.state.newSequenceTitle ||\n               this.state.newSequenceTitle.length > MAX_SEQUENCE_TITLE_CHARACTERS;\n    }\n\n    private updateTitle() {\n        if (this.invalidNewTitle())\n            return;\n        updateSequenceTitle(this.props.currentSequenceID, this.state.newSequenceTitle ?? \"Undefined\");\n        this.setState({ newSequenceTitle: null });\n    }\n\n    private copySequenceURL() {\n        const url: URL = new URL(window.location.href);\n        const sequencePath: string =\n            `${getUrlAPI()}/world/${getCurrentWorldID()}/sequence/${this.props.currentSequenceID}`;\n        copyToClipBoard(sequencePath);\n    }\n\n    render(): JSX.Element {\n        return (\n            <InfoContainer>\n                <Header>\n                    <Box>{i18next.t(\"Information\")}</Box>\n                    { this.state.canShareSequence &&\n                        <Box id=\"share-sequence-btn\" onClick={() => this.copySequenceURL()}> <Share/> </Box>\n                    }\n                </Header>\n                <Row>\n                    <RowTitle id={\"sequence-title\"}>\n                        {this.state.newSequenceTitle === null ?\n                            getSequenceTitle(this.props.currentSequenceID)\n                            :\n                            <InputTextarea\n                                dark\n                                onChange={(newSequenceTitle: string) => this.setState({ newSequenceTitle })}\n                                value={this.state.newSequenceTitle ?? \"\"}\n                                counter={MAX_SEQUENCE_TITLE_CHARACTERS}\n                            />\n                        }\n                    </RowTitle>\n                    {(canUserEditCurrentWorld() && canCurrentPeerEditSequence(this.props.currentSequenceID)) &&\n                        <RowValue>\n                            {!this.state.newSequenceTitle ?\n                                <Box\n                                    onClick={() =>\n                                        this.setState({ newSequenceTitle: getSequenceTitle(this.props.currentSequenceID) })}\n                                >\n                                    <Rename />\n                                </Box>\n                                :\n                                <Box style={{ display: \"flex\", gap: \"5px\" }}>\n                                    <IconContainer\n                                        is_disabled={Number(this.invalidNewTitle())}\n                                        onClick={() => this.updateTitle()}>\n                                        <Check />\n                                    </IconContainer>\n                                    <IconContainer onClick={() => this.setState({ newSequenceTitle: null })}>\n                                        <Close />\n                                    </IconContainer>\n                                </Box>\n                            }\n                        </RowValue>\n                    }\n                </Row>\n                <Row>\n                    <RowTitle>\n                        {i18next.t(\"Critical\")}\n                        <Tooltip title={`${i18next.t(CRITICAL_TOOLTIP_1)}. ${i18next.t(CRITICAL_TOOLTIP_2)}.`}>\n                            <InfoIcon style={{cursor: \"pointer\"}}> <Info/> </InfoIcon>\n                        </Tooltip>\n                    </RowTitle>\n                    <RowValue> <SequenceCritical ref={this.sequenceCriticalRef} /> </RowValue>\n                </Row>\n                <Row>\n                    <RowTitle> {i18next.t(\"Creation Date\")} </RowTitle>\n                    <RowValue> {this.getCreationDate()} </RowValue>\n                </Row>\n                <Row>\n                    <RowTitle> {i18next.t(\"Number of steps\")} </RowTitle>\n                    <RowValue> {this.state.stepCount} </RowValue>\n                </Row>\n                <Row> <SequenceLanguageSelect ref={this.sequenceLanguageSelectRef} /> </Row>\n                <Row>\n                    <SequenceObjectives\n                        ref={this.sequenceObjectiveRef}\n                        onSequenceEvaluationChange={(isEvaluation: boolean) =>\n                            this.props.onSequenceEvaluationChange(isEvaluation)}\n                    />\n                </Row>\n                <Row> <SequenceExpiration ref={this.sequenceExpirationRef} /> </Row>\n                <Row> <SequenceLevel  ref={this.sequenceLevelRef}/> </Row>\n                <Row> <SequenceNotes ref={this.sequenceNotesRef} /> </Row>\n                <Row> <SequenceTagsInformation ref={this.sequenceTagsRef} /> </Row>\n            </InfoContainer>\n        );\n    }\n}\n", "import React from \"react\";\nimport {App} from \"App\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {\n    canCurrentPeerEditSequence,\n    findLanguageForCurrentSequence\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {\n    getCurrentSequenceID,\n    setSequenceLanguage\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {Language, World, Sequence} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {Select} from \"@root/react-components/src/inputs/Select\";\nimport i18next from \"i18next\";\nimport {Dialog} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, styled} from \"@mui/material\";\nimport {primaryFontMedium, secondaryFontSmall, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {canUserEditCurrentWorld} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {LANGUAGE_VALUES} from \"@backend/Types/Language\";\n\nconst RowContainer = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"4px\"\n});\n\nconst SequenceSelectContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"50%\"\n});\n\nconst UpdateLanguageWarning = styled(Box)({\n    display: \"flex\",\n    padding: \"8px 0px 12px 0px\",\n    whiteSpace: \"pre-line\",\n    maxWidth: \"400px\"\n});\n\nconst UPDATE_LANGUAGE_DIALOG_1: string = \"When selecting a new sequence language, you\u2019ll need to manually update \" +\n    \"step titles, and this will regenerate the corresponding audio\";\nconst UPDATE_LANGUAGE_DIALOG_2: string = \"If you are sure you want to change the sequence language, then press Confirm\";\n\ninterface SequenceLanguageSelectState {\n    isWarningLanguageDialogOpen: boolean;\n    detectedLanguage: Language | undefined;\n    sequenceLanguage: Language | undefined;\n}\n\nexport class SequenceLanguageSelect extends React.Component {\n    state: SequenceLanguageSelectState = {\n        isWarningLanguageDialogOpen: false,\n        detectedLanguage: undefined,\n        sequenceLanguage: undefined,\n    };\n\n    componentDidMount() {\n        const sequenceLanguage: Language | undefined = this.getSequenceLanguage(getCurrentSequenceID());\n        if (sequenceLanguage)\n            this.setState({ sequenceLanguage });\n        else {\n            const detectedLanguage: Language | undefined = findLanguageForCurrentSequence();\n            this.setState({ detectedLanguage });\n        }\n    }\n\n    public updateSequence() {\n        const sequenceLanguage: Language | undefined = this.getSequenceLanguage(getCurrentSequenceID());\n        if (sequenceLanguage !== this.state.sequenceLanguage)\n            this.setState({ sequenceLanguage });\n\n        if (!sequenceLanguage)\n            this.setState({ detectedLanguage: findLanguageForCurrentSequence() });\n    }\n\n    private saveNewSequenceLanguage() {\n        const newSequenceLanguage: Language | undefined = this.state.sequenceLanguage;\n        if (!newSequenceLanguage) {\n            AdapterLog.ERROR(\"You have to provide a Sequence language!\");\n            return;\n        }\n\n        // update the sequence language in the core and our state! (It will never be null)\n        this.setState({\n            isWarningLanguageDialogOpen: false\n        }, () => setSequenceLanguage(getCurrentSequenceID(), newSequenceLanguage));\n    }\n\n    private getSequenceLanguage(sequenceID: bigint): Language | undefined {\n        using currentSequence: Sequence | null = App.getInstance().getSequence(sequenceID);\n        return currentSequence?.getLanguage() ?? undefined;\n    }\n\n    private changeSequenceLanguage(sequenceLanguage: Language) {\n        const selectedLanguage: Language | undefined = this.state.sequenceLanguage ?? this.state.detectedLanguage;\n        if (sequenceLanguage !== selectedLanguage)\n            this.setState({ sequenceLanguage, isWarningLanguageDialogOpen: true });\n    }\n\n    render(): JSX.Element {\n        const selectedLanguage: Language | undefined = this.state.sequenceLanguage ?? this.state.detectedLanguage;\n        return (\n            <RowContainer>\n                <Box style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"flex-start\" }}>\n                    <Box style={{ marginTop: \"4px\" }}> {i18next.t(\"Language\")} </Box>\n                    <SequenceSelectContainer>\n                        <Select\n                            default={LANGUAGE_VALUES.indexOf(selectedLanguage)}\n                            disable={!canUserEditCurrentWorld() || !canCurrentPeerEditSequence(getCurrentSequenceID())}\n                            options={LANGUAGE_VALUES.map((language: Language) => i18next.t(language))}\n                            onChange={(index: number) => this.changeSequenceLanguage(LANGUAGE_VALUES[index])}\n                            fullWidth\n                            styleWrapper={{\n                                height: \"24px\",\n                                lineHeight: \"24px\",\n                                padding: \"0px 6px\",\n                                borderRadius: \"6px\",\n                                border: `1px solid ${dark}`,\n                                font: primaryFontMedium\n                            }}\n                            styleOptionsWrapper={{\n                                font: primaryFontMedium,\n                                lineHeight: \"24px\",\n                                borderRadius: \"6px\"\n                            }}\n                        />\n                        {!this.state.sequenceLanguage &&\n                            <Box style={{ font: secondaryFontSmall, marginTop: \"2px\", whiteSpace: \"nowrap\", alignSelf: \"flex-end\" }}>\n                                {`(${i18next.t(\"Auto-Detected\")})`}\n                            </Box>\n                        }\n                    </SequenceSelectContainer>\n                </Box>\n                {this.state.isWarningLanguageDialogOpen &&\n                    <Dialog\n                        onClose={() => this.setState({\n                            sequenceLanguage: this.getSequenceLanguage(getCurrentSequenceID()),\n                            isWarningLanguageDialogOpen: false\n                        })}\n                    >\n                        <Box style={{ font: primaryFontXLarge }}> {i18next.t(\"Warning\")} !</Box>\n                        <UpdateLanguageWarning>\n                            {`${i18next.t(UPDATE_LANGUAGE_DIALOG_1)}.\\n\\n${i18next.t(UPDATE_LANGUAGE_DIALOG_2)}.`}\n                        </UpdateLanguageWarning>\n                        <Box style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"6px\" }}>\n                            <Button\n                                variant=\"outlined\"\n                                onClick={() => this.setState({\n                                    sequenceLanguage: this.getSequenceLanguage(getCurrentSequenceID()),\n                                    isWarningLanguageDialogOpen: false\n                                })}\n                            >\n                                {i18next.t(\"Cancel\")}\n                            </Button>\n                            <Button\n                                id=\"confirm-update-sequence-language-btn\"\n                                color=\"primary\"\n                                onClick={() => this.saveNewSequenceLanguage()}\n                            >\n                                {i18next.t(\"Confirm\")}\n                            </Button>\n                        </Box>\n                    </Dialog>\n                }\n            </RowContainer>\n        )\n    }\n}\n", "import {App} from \"@root/Frontend/Studio/App\";\nimport {InputTextarea} from \"@root/react-components/src/inputs/InputTextarea\";\nimport {\n    canCurrentPeerEditSequence,\n    getCurrentSequenceObjectiveGrade, getCurrentSequenceObjectiveVisualizations,\n    saveCurrentSequenceObjectiveGrade, saveCurrentSequenceObjectiveVisualizations\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {getStepType} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {Box, styled} from \"@mui/material\";\nimport {Rename} from \"@root/react-components/src/icons/Rename\";\nimport {Check} from \"@root/react-components/src/icons/Check\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport React from \"react\";\nimport {SegmentedControl} from \"@root/react-components/src/inputs/SegmentedControl\";\nimport i18next from \"i18next\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\nimport {Prompt} from \"@root/react-components/src/prompts/Prompt\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {SequenceObjectiveGradeDialog} from \"@root/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceObjectiveGradeDialog\";\nimport {JumpDestination, StepBranching, Step, Sequence} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\nconst RowContainer = styled(Box)({\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"4px\"\n});\n\nconst FieldWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    \":hover\": {\n        \"& .percentage\": {\n            display: \"none\"\n        }\n    },\n    \":not(:hover)\": {\n        \"& .rename-icon\": {\n            display: \"none\"\n        }\n    }\n});\n\nconst InputTextWrapper = styled(Box)({\n    display: \"flex\",\n    height: \"15px\",\n    gap: \"4px\",\n    padding: \"2px 0px\",\n    \"& textarea\": {\n        width: \"35px\",\n        overflow: \"hidden\"\n    },\n    \"& svg\": {\n        fill: dark,\n        width: \"12px\",\n        height: \"12px\"\n    }\n});\n\nconst OBJECTIVE_VISUALIZATION_TOOLTIP: string =\n    \"In visualization mode, you can set the required attempts for mastery (1 by default) and users freely navigate steps\";\nconst OBJECTIVE_GRADE_TOOLTIP: string =\n    \"In evaluation the objective grade ranges from 1% to 100% and users cannot revisit previous step\";\nconst VISUALISATION_PROMPT: string =\n    \"Are you sure you want to set the sequence to visualization mode? This will erase the sequence's objective grade\";\nconst EVALUATION_WARNING_PROMPT: string = \"Are you sure you want to set the sequence to evaluation mode? \" +\n    \"This will erase the sequence's objective visualizations\";\n\nenum SequenceMode {\n    VISUALIZATION,\n    EVALUATION\n}\n\ninterface SequenceObjectivesState {\n    isEditing: boolean;\n    objectiveGrade: string;\n    sequenceEvaluationProblemStepIndices: number[];\n    objectiveVisualizations: string;\n    activeSequenceType: SequenceMode;\n}\n\nexport class SequenceObjectives extends React.Component {\n    props : { onSequenceEvaluationChange: (isEvaluation: boolean) => void; }\n    state: SequenceObjectivesState = {\n        isEditing: false,\n        objectiveGrade: \"0\",\n        sequenceEvaluationProblemStepIndices: [],\n        objectiveVisualizations: \"1\",\n        activeSequenceType: SequenceMode.VISUALIZATION\n    }\n\n    componentDidMount() {\n        const objectiveGrade: number = getCurrentSequenceObjectiveGrade();\n        if (objectiveGrade) {\n            this.setState({\n                objectiveGrade: Math.round(objectiveGrade * 100).toString(),\n                activeSequenceType: SequenceMode.EVALUATION\n            });\n            return;\n        }\n\n        this.setState({ objectiveVisualizations: getCurrentSequenceObjectiveVisualizations().toString() });\n    }\n\n    public updateSequence() {\n        const objectiveGrade: string = Math.round(getCurrentSequenceObjectiveGrade() * 100).toString();\n        if (this.state.objectiveGrade !== objectiveGrade)\n            this.setState({ objectiveGrade });\n\n        const objectiveVisualizations: string = getCurrentSequenceObjectiveVisualizations().toString();\n        if (this.state.objectiveVisualizations !== objectiveVisualizations)\n            this.setState({ objectiveVisualizations });\n\n        if (objectiveGrade === \"0\")\n            this.setState({ activeSequenceType: SequenceMode.VISUALIZATION });\n        else\n            this.setState({ activeSequenceType: SequenceMode.EVALUATION });\n    }\n\n    private handleKeydown(event: React.KeyboardEvent<HTMLInputElement>) {\n        if (!this.state.isEditing)\n            return;\n\n        if (event.key === \"Enter\" && this.state.isEditing) {\n            if (this.state.activeSequenceType === SequenceMode.VISUALIZATION)\n                this.handleSaveObjectiveVisualizations();\n            else\n                this.handleSaveObjectiveGrade();\n        }\n        else if (event.key === \"Escape\" && this.state.isEditing) {\n            event.preventDefault();\n            if (this.state.activeSequenceType === SequenceMode.VISUALIZATION)\n                this.setState({\n                    isEditing: false,\n                    objectiveVisualizations: getCurrentSequenceObjectiveVisualizations().toString()\n                });\n            else\n                this.setState({\n                    isEditing: false,\n                    objectiveGrade: Math.round(getCurrentSequenceObjectiveGrade() * 100).toString()\n                });\n        }\n    }\n\n    private getStepIndicesThatJumpToSequences(): number[] {\n        using sequence: Sequence | null = App.getInstance().getSequence(getCurrentSequenceID());\n        if (!sequence)\n            return [];\n\n        // get the indices of steps that branch to other sequences\n        const stepIDs: bigint[] = sequence.getStepsIDs();\n        const sequenceBranchingStepIndices: number[] = [];\n        for (let i: number = 0; i < stepIDs.length; ++i) {\n            using step: Step | null = sequence.getStepByID(stepIDs[i]);\n            if (!step || getStepType(stepIDs[i]) !== StepType.BRANCHING)\n                continue;\n\n            const stepBranching: StepBranching = step as StepBranching;\n            const jumpDestinationYes: JumpDestination | undefined = stepBranching.getJumpDestinationYes();\n            if (jumpDestinationYes && !jumpDestinationYes.isStep) {\n                sequenceBranchingStepIndices.push(i);\n                continue;\n            }\n\n            const jumpDestinationNo: JumpDestination | undefined = stepBranching.getJumpDestinationNo();\n            if (jumpDestinationNo && !jumpDestinationNo.isStep)\n                sequenceBranchingStepIndices.push(i);\n        }\n        return sequenceBranchingStepIndices;\n    }\n\n    private handleSequenceTypeChange(index: number): void {\n        // if it's the same as the current value return\n        if (this.state.activeSequenceType === index)\n            return;\n\n        // switching to visualization\n        if (index === 0) {\n            this.switchToVisualizationType();\n            return;\n        }\n\n        // switching to evaluation\n        const sequenceEvaluationProblemStepIndices: number[] = this.getStepIndicesThatJumpToSequences();\n        if (sequenceEvaluationProblemStepIndices.length)\n            this.setState({ sequenceEvaluationProblemStepIndices });\n        else\n            this.switchToEvaluationType();\n    }\n\n    private async switchToEvaluationType(){\n        const showEvaluationWarning: boolean = await Prompt.confirm(\n            `${i18next.t(EVALUATION_WARNING_PROMPT)}.`,\n            i18next.t(\"Erase\"),\n            true\n        );\n        \n        if (this.state.activeSequenceType === SequenceMode.VISUALIZATION && showEvaluationWarning) {\n            this.setState({\n                objectiveGrade: \"60\",\n                objectiveVisualizations: \"0\",\n                activeSequenceType: SequenceMode.EVALUATION,\n                isEditing: false\n            }, () => {\n                saveCurrentSequenceObjectiveGrade(0.6);\n                saveCurrentSequenceObjectiveVisualizations(BigInt(0));\n                this.props.onSequenceEvaluationChange(true);\n            });\n        }\n    }\n\n    private async switchToVisualizationType(){\n        const visualizationConfirmed: boolean = await Prompt.confirm(\n            `${i18next.t(VISUALISATION_PROMPT)}.`,\n            i18next.t(\"Erase\"),\n            true\n        );\n\n        if (visualizationConfirmed)\n            this.setState({\n                objectiveGrade: \"0\",\n                objectiveVisualizations: \"1\",\n                activeSequenceType: SequenceMode.VISUALIZATION,\n                isEditing: false\n            }, () => {\n                saveCurrentSequenceObjectiveGrade(0);\n                saveCurrentSequenceObjectiveVisualizations(BigInt(1));\n                this.props.onSequenceEvaluationChange(false);\n            });\n    }\n\n    private extractValidPercentage(value: string): string {\n        // Convert input to a number, filtering invalid characters\n        let numericValue: number = parseInt(value);\n\n        // Handle invalid or NaN cases\n        if (isNaN(numericValue) || numericValue === 0)\n            return \"\"; // Return empty string for invalid input\n\n        // Clamp the value between 1 and 100\n        numericValue = Math.min(Math.max(numericValue, 1), 100);\n\n        // Remove leading zeros and format properly\n        return numericValue.toString();\n    }\n\n    private handleSaveObjectiveGrade() {\n        const objectiveGrade: number = this.state.objectiveGrade.length ? parseInt(this.state.objectiveGrade) : 60;\n        this.setState({\n            isEditing: false,\n            objectiveGrade: objectiveGrade.toString()\n        }, () => saveCurrentSequenceObjectiveGrade(objectiveGrade / 100));\n    }\n\n    private handleSaveObjectiveVisualizations() {\n        if (this.state.objectiveVisualizations === getCurrentSequenceObjectiveVisualizations().toString()) {\n            this.setState({ isEditing: false });\n            return;\n        }\n\n        let objective: bigint = UtilsShared.safelyConvertStringToBigInt(this.state.objectiveVisualizations);\n        // if user enter 0 (or empty string), we set the value to 1\n        if (!objective)\n            objective = BigInt(1);\n\n        this.setState({\n            isEditing: false,\n            objectiveVisualizations: objective.toString()\n        }, () => saveCurrentSequenceObjectiveVisualizations(objective));\n    }\n\n    private filterObjectiveVisualizationValue(value: string): string {\n        const filteredValue: string =  value.replace(/[^0-9]/gu, \"\"); // allow numbers only\n        return filteredValue.length > 5 ? filteredValue.slice(0, 5) : filteredValue;\n    }\n\n    render(): JSX.Element {\n        return <RowContainer>\n            <Box>\n                {i18next.t(\"Type\")}\n                <Tooltip title={\n                    <ul style={{margin: \"0 2px 2px\", paddingLeft: 10}}>\n                        <li>{`${i18next.t(OBJECTIVE_VISUALIZATION_TOOLTIP)}.`}</li>\n                        <li>{`${i18next.t(OBJECTIVE_GRADE_TOOLTIP)}.`}</li>\n                    </ul>\n                }>\n                    <InfoIcon style={{cursor: \"pointer\"}}> <Info/> </InfoIcon>\n                </Tooltip>\n            </Box>\n            <SegmentedControl\n                dark\n                disabled={!canCurrentPeerEditSequence(getCurrentSequenceID())}\n                options={[i18next.t(\"Visualization\"), i18next.t(\"Evaluation\")]}\n                value={this.state.activeSequenceType}\n                onChange={(index: number) => this.handleSequenceTypeChange(index)}\n            />\n            {this.state.activeSequenceType === SequenceMode.VISUALIZATION ?\n                <FieldWrapper>\n                    {i18next.t(\"Objective\")}\n                    <InputTextWrapper>\n                        {this.state.isEditing ?\n                            <>\n                                <InputTextarea\n                                    onKeyDown={(event: React.KeyboardEvent<HTMLInputElement>) =>\n                                        this.handleKeydown(event)}\n                                    right\n                                    dark\n                                    rows={1}\n                                    value={this.state.objectiveVisualizations}\n                                    onChange={(value: string) => this.setState({\n                                        objectiveVisualizations: this.filterObjectiveVisualizationValue(value)\n                                    })}\n                                />\n                                <Box onClick={() => this.handleSaveObjectiveVisualizations()}>\n                                    <Check />\n                                </Box>\n                                <Box onClick={() => this.setState({\n                                        isEditing: false,\n                                        objectiveVisualizations: getCurrentSequenceObjectiveVisualizations().toString()\n                                     })}\n                                >\n                                    <Close />\n                                </Box>\n                            </>\n                            :\n                            <Box\n                                style={{display: \"flex\", gap: \"3px\"}}\n                                onClick={() => {\n                                    if (canCurrentPeerEditSequence(getCurrentSequenceID()))\n                                        this.setState({isEditing: true});\n                                }}\n                            >\n                                {this.state.objectiveVisualizations}\n                                {canCurrentPeerEditSequence(getCurrentSequenceID()) &&\n                                    <Box className=\"rename-icon\"> <Rename /> </Box>\n                                }\n                            </Box>\n                        }\n                    </InputTextWrapper>\n                </FieldWrapper>\n            :\n                <FieldWrapper>\n                    {i18next.t(\"Objective Grade\")}\n                    <InputTextWrapper>\n                        {this.state.isEditing ?\n                            <>\n                                <InputTextarea\n                                    right\n                                    dark\n                                    rows={1}\n                                    value={this.state.objectiveGrade}\n                                    onChange={(value: string) =>\n                                        this.setState({ objectiveGrade: this.extractValidPercentage(value) })\n                                    }\n                                />\n                                <Box onClick={() => this.handleSaveObjectiveGrade()}>\n                                    <Check />\n                                </Box>\n                                <Box onClick={() => this.setState({\n                                    isEditing: false,\n                                    objectiveGrade: Math.round(getCurrentSequenceObjectiveGrade() * 100).toString()\n                                })}>\n                                    <Close />\n                                </Box>\n                            </>\n                            :\n                            <>\n                                {this.state.objectiveGrade}\n                                {canCurrentPeerEditSequence(getCurrentSequenceID()) ?\n                                    <>\n                                        <Box\n                                            className=\"rename-icon\"\n                                            onClick={() => this.setState({ isEditing: true })}\n                                        >\n                                            <Rename />\n                                        </Box>\n                                        <Box className=\"percentage\"> % </Box>\n                                    </>\n                                    :\n                                    <Box> % </Box>\n                                }\n                            </>\n                        }\n                    </InputTextWrapper>\n                </FieldWrapper>\n            }\n            {Boolean(this.state.sequenceEvaluationProblemStepIndices.length) &&\n                <SequenceObjectiveGradeDialog\n                    sequenceEvaluationProblemStepIndices={this.state.sequenceEvaluationProblemStepIndices}\n                    onConfirm={() => this.setState({ sequenceEvaluationProblemStepIndices: [] }, () =>\n                            this.switchToEvaluationType()\n                    )}\n                    onCancel={() => this.setState({ sequenceEvaluationProblemStepIndices: [] })}\n                />\n            }\n        </RowContainer>;\n    }\n}\n", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {primaryFontXLarge, secondaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {getStepIDAtIndex} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Dialog} from \"@root/Frontend/Studio/DialogContainer\";\nimport {getOriginalText} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterText\";\nimport {getStepTextID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequence\";\n\nconst TextBox = styled(Box)({\n    font: secondaryFontLarge,\n    maxWidth: \"400px\",\n    whiteSpace: \"pre-line\"\n});\n\ninterface SequenceObjectiveGradeDialogProps {\n    sequenceEvaluationProblemStepIndices: number[];\n    onConfirm: () => void;\n    onCancel: () => void;\n}\n\nexport class SequenceObjectiveGradeDialog extends React.Component {\n    props: SequenceObjectiveGradeDialogProps;\n\n    render(): JSX.Element {\n        return (\n            <Dialog innerStyle={{display: \"flex\", gap: 10}}>\n                <Box style={{display: \"flex\", justifyContent: \"center\", font: primaryFontXLarge}}>\n                    {i18next.t(\"Warning\")}\n                </Box>\n                <TextBox>\n                    <b>{`${i18next.t(\"This sequence has some branching steps\")}, `}</b>\n                    {i18next.t(\"which could allow for\")}&nbsp;\n                    <b>{`${i18next.t(\"skipping questions or exiting evaluation mode\")}.`}</b>\n                </TextBox>\n                <TextBox style={{paddingTop: \"7px\"}}>\n                    {`${i18next.t(\"If you are sure you want to allow branching in evaluation mode, click Confirm\")}.`}\n                </TextBox>\n                <TextBox style={{paddingTop: \"7px\"}}>\n                    {`${i18next.t(\"Below are the problematic branching steps\")}:`}\n                    <ul style={{margin: \"0 2px 2px\", paddingLeft: 10}}>\n                        {this.props.sequenceEvaluationProblemStepIndices.map((index: number): JSX.Element =>\n                            <li key={index}>\n                                {`(${index + 1}) ${getOriginalText(getStepTextID(getStepIDAtIndex(index)))}`}\n                            </li>\n                        )}\n                    </ul>\n                </TextBox>\n                <Box style={{display: \"flex\", justifyContent: \"flex-end\", gap: \"10px\"}}>\n                    <Button variant=\"outlined\" onClick={() => this.props.onCancel()}>\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                    <Button color=\"primary\" onClick={() => this.props.onConfirm()}>\n                        {i18next.t(\"Confirm\")}\n                    </Button>\n                </Box>\n            </Dialog>\n        );\n    }\n}\n", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {Rename} from \"@root/react-components/src/icons/Rename\";\nimport {dark, lightGrey, white} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {InputTextarea} from \"@root/react-components/src/inputs/InputTextarea\";\nimport {canCurrentPeerEditSequence} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {\n    getCurrentSequenceID,\n    getSequenceNotes,\n    saveSequenceNotes\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {TextSnippet} from \"@root/react-components/src/icons/TextSnippet\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {NOTES_CHARACTER_LIMIT} from \"@backend/Types/Sequence\";\n\nconst WhiteAnchor = styled(\"a\")({\n    color: white,\n    \"&:hover\": {\n        color: white\n    }\n});\n\nconst TooltipContent = styled(Box)({\n    whiteSpace: \"pre-line\",\n    maxHeight: 400,\n    overflow: \"auto\",\n\n    \"& > div > p\": {\n        marginBottom: 0,\n        \"&:first-child\": {\n            marginTop: 0\n        },\n        \"&:not(:first-child)\": {\n            marginTop: \"1em\"\n        }\n    },\n\n    \"&::-webkit-scrollbar-track\": {\n        backgroundColor: \"unset\",\n        width: 0\n    },\n    \"&::-webkit-scrollbar\": {\n        width: \"15px\",\n        height: \"15px\",\n    },\n    \"&::-webkit-scrollbar-thumb\": {\n        // the border (transparent) is causing the padding/margin effect\n        border: \"4px solid rgba(0, 0, 0, 0)\",\n        borderRadius: \"10px\",\n        backgroundClip: \"padding-box\",\n        backgroundColor: lightGrey\n    },\n    \"::-webkit-scrollbar-corner\": { // little corner between the 2 scrollbars\n        backgroundColor: \"unset\"\n    }\n});\n\nconst Icon = styled(Box)({\n    width: \"fit-content\",\n    \"& svg\": {\n        fill: dark,\n        width: \"12px\",\n        height: \"12px\"\n    }\n});\n\ninterface SequenceNotesState {\n    notes: string;\n    isNotesEditorOpen: boolean;\n}\n\nexport class SequenceNotes extends React.Component {\n    state: SequenceNotesState = {\n        notes: \"\",\n        isNotesEditorOpen: false\n    }\n\n    componentDidMount() {\n        this.setState({ notes: getSequenceNotes(getCurrentSequenceID()) });\n    }\n\n    public updateSequence() {\n        const notes: string = getSequenceNotes(getCurrentSequenceID());\n        if (this.state.notes !== notes)\n            this.setState({ notes });\n    }\n\n    private handleSaveSequenceNotes(notes: string) {\n        this.setState({ notes }, () => {\n            if (notes.length > NOTES_CHARACTER_LIMIT)\n                return;\n            saveSequenceNotes(getCurrentSequenceID(), notes);\n        });\n    }\n\n    private makeLinksClickable(segment: string): JSX.Element {\n        if (this.state.isNotesEditorOpen)\n            return <></>;\n\n        const paragraphs: string[] = segment.split(\"\\n\");\n        return (\n            <Box>\n                {paragraphs.map((paragraph: string, index: number) => {\n                    const words: string[] = paragraph.split(\" \");\n\n                    return (\n                        <Box key={index} component=\"p\">\n                            {words.map((word: string, indexWords: number) => {\n                                if (!word.startsWith(\"https://\"))\n                                    return <React.Fragment key={indexWords}>{word}{\" \"}</React.Fragment>;\n\n                                let ending: string = \"\";\n                                const lastChar: string = word[word.length - 1];\n                                if ([\",\", \".\", \"!\", \"?\", \":\", \";\"].includes(lastChar)) {\n                                    ending = lastChar;\n                                    word = word.slice(0, -1);\n                                }\n\n                                return (\n                                    <React.Fragment key={indexWords}>\n                                        <WhiteAnchor href={word} target=\"_blank\">{word}</WhiteAnchor>\n                                        {ending}{\" \"}\n                                    </React.Fragment>\n                                );\n                            })}\n                        </Box>\n                    );\n                })}\n            </Box>\n        );\n    }\n\n    render(): JSX.Element {\n        return (\n            <Box style={{display: \"flex\", justifyContent: \"space-between\", width: \"100%\"}}>\n                <Box style={{display: \"flex\", flexDirection: \"row\", gap: \"5px\"}}>\n                    {i18next.t(\"Notes\")}\n                    {Boolean(this.state.notes) &&\n                        <Tooltip\n                            placement={\"right\"}\n                            title={<TooltipContent>{this.makeLinksClickable(this.state.notes)}</TooltipContent>}\n                        >\n                            <Icon> <TextSnippet/> </Icon>\n                        </Tooltip>\n                    }\n                </Box>\n                {canCurrentPeerEditSequence(getCurrentSequenceID()) &&\n                    <Icon onClick={() => this.setState({ isNotesEditorOpen: true })}>\n                        <Rename />\n                    </Icon>\n                }\n                {this.state.isNotesEditorOpen &&\n                    <Dialog\n                        size={DialogSize.sm}\n                        innerStyle={{display: \"flex\", flexDirection: \"column\", gap: 5}}\n                        closeOnClickOutside\n                        onClose={() => this.setState({ isNotesEditorOpen: false })}\n                    >\n                        <Box style={{ font: primaryFontXLarge }}> {i18next.t(\"Notes\")} </Box>\n                        <InputTextarea\n                            counter={NOTES_CHARACTER_LIMIT}\n                            dark\n                            onChange={(notes: string) => this.setState({ notes })}\n                            onBlur={() => this.handleSaveSequenceNotes(this.state.notes)}\n                            placeholder={`- ${i18next.t(\"Enter your notes here\")}.\\n\\n` +\n                                         `- ${i18next.t(\"Text and links are supported\")}.\\n\\n` +\n                                         `- ${i18next.t(\"These notes only appear in the Skills Matrix in Console\")}.`}\n                            rows={20}\n                            value={this.state.notes}\n                        />\n                        <Box style={{display: \"flex\", justifyContent: \"flex-end\"}}>\n                            <Button\n                                variant=\"outlined\"\n                                onClick={() => this.setState({ isNotesEditorOpen: false })}\n                            >\n                                {i18next.t(\"Close\")}\n                            </Button>\n                        </Box>\n                    </Dialog>\n                }\n            </Box>\n        );\n    }\n}\n", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {canCurrentPeerEditSequence} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {dark, lightWhite, yellow} from \"@root/react-components/src/values/colors/colors\";\nimport {Star} from \"@root/react-components/src/icons/Star\";\nimport {\n    getCurrentSequenceID,\n    isSequenceCritical,\n    saveSequenceCritical\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\n\nconst CriticalButton = styled(Box)((props: {disabled: boolean}) => ({\n    cursor: props.disabled ? \"not-allowed\" : \"pointer\",\n    pointerEvents: props.disabled ? \"none\" : \"auto\",\n    \"& svg\": {\n        width: \"17px\",\n        height: \"16px\"\n    }\n}));\n\ninterface SequenceCriticalState {\n    isCritical: boolean;\n}\n\nexport class SequenceCritical extends React.Component {\n    state: SequenceCriticalState = {\n        isCritical: false\n    };\n\n    override componentDidMount() {\n        this.setState({ isCritical: isSequenceCritical(getCurrentSequenceID()) });\n    }\n\n    public updateSequence() {\n        const isCritical: boolean = isSequenceCritical(getCurrentSequenceID());\n        if (this.state.isCritical !== isCritical)\n            this.setState({ isCritical });\n    }\n\n    private handleClick() {\n        this.setState((prevState: SequenceCriticalState) => ({\n            isCritical: !prevState.isCritical\n        }), () => saveSequenceCritical(getCurrentSequenceID(), this.state.isCritical));\n    }\n\n    render(): JSX.Element {\n        return (\n            <CriticalButton\n                disabled={!canCurrentPeerEditSequence(getCurrentSequenceID())}\n                onClick={() => this.handleClick()}\n            >\n                <Star\n                    color={this.state.isCritical ? yellow : dark}\n                    fillColor={this.state.isCritical ? yellow : lightWhite}\n                />\n            </CriticalButton>\n        );\n    }\n}\n", "import React from \"react\";\nimport i18next from \"i18next\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\nimport {InputTextarea} from \"@root/react-components/src/inputs/InputTextarea\";\nimport {\n    getCurrentSequenceID,\n    getSequenceLevel, saveSequenceLevel\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Box, styled} from \"@mui/material\";\nimport {Check} from \"@root/react-components/src/icons/Check\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {Rename} from \"@root/react-components/src/icons/Rename\";\nimport {dark, red} from \"@root/react-components/src/values/colors/colors\";\nimport {canCurrentPeerEditSequence} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {isNumericString} from \"@utils/utils\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    height: \"30px\"\n});\n\nconst LevelContainer = styled(Box)({\n    width: \"fit-content\",\n    display: \"flex\",\n    gap: \"4px\",\n    \"& svg\": {\n        fill: dark,\n        width: \"12px\",\n        height: \"12px\"\n    },\n    \":not(:hover)\": {\n        \"& .rename-icon\": {\n            display: \"none\"\n        }\n    }\n});\n\nconst IconContainer = styled(Box)({\n    display: \"flex\",\n    gap: \"4px\",\n    \"& svg\": {\n        fill: dark,\n        width: \"12px\",\n        height: \"12px\"\n    }\n});\n\ninterface SequenceLevelState {\n    level: string;\n    isEditing: boolean;\n    errorMessage: string;\n}\n\nconst MAX_LEVEL: bigint = BigInt(10);\nconst MIN_LEVEL: bigint = BigInt(0);\nconst MAX_DIGITS: number = 2;\n\nexport class SequenceLevel extends React.Component {\n    state: SequenceLevelState = { level: \"\", isEditing: false, errorMessage: \"\" }\n\n    componentDidMount() {\n        const level: bigint = getSequenceLevel(getCurrentSequenceID());\n        if (!this.state.level || level !== UtilsShared.safelyConvertStringToBigInt(this.state.level))\n            this.setState({ level: level.toString() });\n    }\n\n    public updateSequence() {\n        const level: string = getSequenceLevel(getCurrentSequenceID()).toString();\n        if (!this.state.level.localeCompare(level))\n            this.setState({ level });\n    }\n\n    private handleKeydown(event: KeyboardEvent) {\n        if (!this.state.isEditing)\n            return;\n\n        if (event.key === \"Enter\") {\n            this.saveSequenceLevel();\n            return;\n        }\n\n        if (event.key === \"Escape\") {\n            event.preventDefault();\n            this.setState({\n                isEditing: false,\n                errorMessage: \"\",\n                level: getSequenceLevel(getCurrentSequenceID()).toString()\n            });\n        }\n    }\n\n    private saveSequenceLevel() {\n        const level: bigint = UtilsShared.safelyConvertStringToBigInt(this.state.level);\n        if (!this.state.level.trim() || this.state.errorMessage)\n            return;\n\n        this.setState({ isEditing: false, errorMessage: \"\" }, () => saveSequenceLevel(getCurrentSequenceID(), level));\n    }\n\n    private handleChangeLevel(levelStr: string) {\n        if (levelStr.length > MAX_DIGITS)\n            return;\n\n        let errorMessage: string = \"\";\n        if (!isNumericString(levelStr) && levelStr.length)\n            errorMessage = i18next.t(\"Sequence level need to be a number\");\n\n        const level: bigint = UtilsShared.safelyConvertStringToBigInt(levelStr);\n        if (level < BigInt(MIN_LEVEL) || level > BigInt(MAX_LEVEL))\n            errorMessage = i18next.t(\"Sequence level should be above 0 and below 10\");\n\n        this.setState({ level: levelStr.trim(), errorMessage });\n    }\n\n    render() {\n        return (\n            <Box style={{ display: \"flex\", flexDirection: \"column\", width: \"100%\" }}>\n                <Container>\n                    <Box>\n                        {i18next.t(\"Level\")}\n                        <Tooltip title={`${i18next.t(\"You can assign a complexity level to the sequence\")}.`}>\n                            <InfoIcon style={{cursor: \"pointer\"}}> <Info/> </InfoIcon>\n                        </Tooltip>\n                    </Box>\n                    {this.state.isEditing ?\n                        <Box style={{ display: \"flex\", gap: \"4px\", width: \"67px\" }}>\n                            <InputTextarea\n                                onKeyDown={(event: KeyboardEvent) => this.handleKeydown(event)}\n                                right\n                                dark\n                                rows={1}\n                                value={this.state.level}\n                                onChange={(level: string) => this.handleChangeLevel(level)}\n                            />\n                            <IconContainer>\n                                <Box onClick={() => this.saveSequenceLevel()}> <Check /> </Box>\n                                <Box onClick={() => this.setState({\n                                    isEditing: false,\n                                    level: getSequenceLevel(getCurrentSequenceID()).toString(),\n                                    errorMessage: \"\"\n                                })}>\n                                    <Close />\n                                </Box>\n                            </IconContainer>\n                        </Box>\n                        :\n                        <LevelContainer>\n                            {this.state.level}\n                            {canCurrentPeerEditSequence(getCurrentSequenceID()) &&\n                                <Box className=\"rename-icon\" onClick={() => this.setState({ isEditing: true })}>\n                                    <Rename />\n                                </Box>\n                            }\n                        </LevelContainer>\n                    }\n                </Container>\n                {this.state.errorMessage && <Box style={{ color: red }}> {this.state.errorMessage} </Box>}\n            </Box>\n        )\n    }\n}", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {InputTextarea} from \"@root/react-components/src/inputs/InputTextarea\";\nimport {Check} from \"@root/react-components/src/icons/Check\";\nimport {canCurrentPeerEditSequence} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {Close} from \"@root/react-components/src/icons/Close\";\nimport {\n    getCurrentSequenceID,\n    getSequenceExpirationDays,\n    saveSequenceExpiration\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {Rename} from \"@root/react-components/src/icons/Rename\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\n\nconst EXPIRATION_TOOLTIP_1: string =\n    \"Time after which completed attempts or successful evaluations are no longer valid\";\nconst EXPIRATION_TOOLTIP_2: string = \"An expiration set to 0 means they never expire\";\n\nconst FieldWrapper = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    \":not(:hover)\": {\n        \"& .rename-icon\": {\n            display: \"none\"\n        }\n    }\n});\n\nconst InputTextWrapper = styled(Box)({\n    display: \"flex\",\n    height: \"15px\",\n    gap: \"4px\",\n    padding: \"2px 0px\",\n    \"& textarea\": {\n        width: \"35px\",\n        overflow: \"hidden\"\n    },\n    \"& svg\": {\n        fill: dark,\n        width: \"12px\",\n        height: \"12px\"\n    }\n});\n\ninterface SequenceExpirationState {\n    isEditing: boolean;\n    expiration: string;\n}\n\nexport class SequenceExpiration extends React.Component {\n    state: SequenceExpirationState = {\n        isEditing: false,\n        expiration: \"0\"\n    };\n\n    componentDidMount() {\n        this.setState({ expiration: getSequenceExpirationDays(getCurrentSequenceID()).toString() });\n    }\n\n    public updateSequence() {\n        const expiration: bigint = getSequenceExpirationDays(getCurrentSequenceID());\n        if (UtilsShared.safelyConvertStringToBigInt(this.state.expiration) !== expiration)\n            this.setState({ expiration: expiration.toString() });\n    }\n\n    private handleSaveExpiration(newExpirationDays: string) {\n        if (!newExpirationDays) {\n            this.setState({\n                isEditing: false,\n                expiration: getSequenceExpirationDays(getCurrentSequenceID()).toString()\n            });\n            return;\n        }\n\n        const sequenceID: bigint = getCurrentSequenceID();\n        const newExpiration: bigint = UtilsShared.safelyConvertStringToBigInt(newExpirationDays);\n        if (newExpiration !== getSequenceExpirationDays(sequenceID))\n            saveSequenceExpiration(sequenceID, newExpiration)\n\n        this.setState({ isEditing: false });\n    }\n\n    private handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {\n        if (!this.state.isEditing)\n            return;\n\n        if (event.key === \"Enter\" && this.state.isEditing)\n            this.handleSaveExpiration(this.state.expiration);\n        else if (event.key === \"Escape\" && this.state.isEditing) {\n            event.preventDefault();\n            this.setState({\n                isEditing: false,\n                expiration: getSequenceExpirationDays(getCurrentSequenceID()).toString()\n            });\n        }\n    }\n\n    private filterExpirationValue(value: string): string {\n        const filteredValue: string =  value.replace(/[^0-9]/gu, \"\"); // allow numbers only\n        return filteredValue.length > 5 ? filteredValue.slice(0, 5) : filteredValue;\n    }\n\n    render(): JSX.Element {\n        return (\n            <FieldWrapper>\n                <Box>\n                    {i18next.t(\"Expiration (Days)\")}\n                    <Tooltip title={`${i18next.t(EXPIRATION_TOOLTIP_1)}. ${i18next.t(EXPIRATION_TOOLTIP_2)}.`}>\n                        <InfoIcon style={{cursor: \"pointer\"}}> <Info/> </InfoIcon>\n                    </Tooltip>\n                </Box>\n                <InputTextWrapper>\n                    {this.state.isEditing ?\n                        <>\n                            <InputTextarea\n                                onKeyDown={(event: React.KeyboardEvent<HTMLInputElement>) => this.handleKeyDown(event)}\n                                right\n                                dark\n                                rows={1}\n                                value={this.state.expiration}\n                                onChange={(value: string) => this.setState({\n                                    expiration: this.filterExpirationValue(value)\n                                })}\n                            />\n                            <Box onClick={() => this.handleSaveExpiration(this.state.expiration)}>\n                                <Check />\n                            </Box>\n                            <Box onClick={() => this.setState({\n                                isEditing: false,\n                                expiration: (getSequenceExpirationDays(getCurrentSequenceID())).toString()\n                            })}\n                            >\n                                <Close />\n                            </Box>\n                        </>\n                        :\n                        <Box\n                            style={{display: \"flex\", gap: \"3px\"}}\n                            onClick={() => {\n                                if (canCurrentPeerEditSequence(getCurrentSequenceID()))\n                                    this.setState({isEditing: true});\n                            }}\n                        >\n                            {this.state.expiration}\n                            {canCurrentPeerEditSequence(getCurrentSequenceID()) &&\n                                <Box className=\"rename-icon\"> <Rename /> </Box>\n                            }\n                        </Box>\n                    }\n                </InputTextWrapper>\n            </FieldWrapper>\n        );\n    }\n}\n", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport {Rename} from \"@root/react-components/src/icons/Rename\";\nimport {dark} from \"@root/react-components/src/values/colors/colors\";\nimport i18next from \"i18next\";\nimport {canCurrentPeerEditSequence} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {getCurrentSequenceID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Sequence} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\nimport {SequenceTagsEditorDialog} from \"@root/Frontend/Studio/Views/SequencesPanel/SequenceInformation/SequenceTagsEditorDialog\";\nimport {isEqual} from \"lodash\";\nimport {SequenceTagsContainer} from \"@root/Frontend/Studio/Views/SequencesPanel/Tags/SequenceTagsContainer\";\n\nconst Wrapper = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    gap: \"8px\"\n});\n\nconst Title = styled(Box)({\n    display: \"flex\",\n    justifyContent:\"space-between\",\n    width: \"100%\"\n});\n\nconst EditIconContainer = styled(Box)({\n    width: \"fit-content\",\n    \"& svg\": {\n        fill: dark,\n        width: \"12px\",\n        height: \"12px\"\n    }\n});\n\ninterface SequenceTagsInformationState {\n    tags: string[];\n    isTagsEditorOpen: boolean;\n}\n\nexport class SequenceTagsInformation extends React.Component {\n    state: SequenceTagsInformationState = {\n        tags: [],\n        isTagsEditorOpen: false\n    }\n\n    componentDidMount() {\n        this.updateSequence();\n    }\n\n    public updateSequence() {\n        using sequence: Sequence | null = App.getInstance().getSequence(getCurrentSequenceID());\n\n        if (!sequence)\n            return;\n\n        const tags: string[] = sequence.getTags().sort();\n\n        if (!isEqual(tags, this.state.tags))\n            this.setState({tags});\n    }\n\n    private addNewTag(newTag: string) {\n        using sequence: Sequence | null = App.getInstance().getSequence(getCurrentSequenceID());\n        sequence?.addTag(newTag);\n        this.setState((prevState: SequenceTagsInformationState) => ({ tags: [...prevState.tags, newTag].sort() }));\n    }\n\n    private removeTag(tagToRemove : string) {\n        using sequence: Sequence | null = App.getInstance().getSequence(getCurrentSequenceID());\n        sequence?.removeTag(tagToRemove);\n        this.setState((prevState: SequenceTagsInformationState) => ({ tags: prevState.tags.filter(tag => tag !== tagToRemove) }));\n    }\n\n    render(): JSX.Element {\n        return (\n            <Wrapper>\n                <Title>\n                    {i18next.t(\"Tags\")}\n                    {canCurrentPeerEditSequence(getCurrentSequenceID()) &&\n                        <EditIconContainer onClick={() => this.setState({isTagsEditorOpen: true})}>\n                            <Rename/>\n                        </EditIconContainer>\n                    }\n                </Title>\n\n                {this.state.tags.length > 0 &&\n                    <SequenceTagsContainer tags={this.state.tags}/>\n                }\n\n                {this.state.isTagsEditorOpen &&\n                    <SequenceTagsEditorDialog\n                        tags={this.state.tags}\n                        onClose={() => this.setState({isTagsEditorOpen: false})}\n                        onTagAdded={(newTag: string) => this.addNewTag(newTag)}\n                        onTagRemoved={(tag: string) => this.removeTag(tag)}\n                    />\n                }\n            </Wrapper>\n        );\n    }\n}\n", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {SequenceTag} from \"@root/Frontend/Studio/Views/SequencesPanel/Tags/SequenceTag\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {InputTextarea} from \"@root/react-components/src/inputs/InputTextarea\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {UtilsShared} from \"@backend/Utils/UtilsShared\";\nimport {contrastRed, dark} from \"@root/react-components/src/values/colors/colors\";\n\nexport const TAG_CHARACTER_LIMIT = 10;\n\nconst TagEditionContainer = styled(Box)({\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    alignContent: \"baseline\",\n    contain: \"size\",\n    gap: \"4px\",\n    height: \"100px\",\n    border: \"1px solid black\",\n    borderRadius: \"16px\",\n    padding: \"10px 16px\",\n    overflowY: \"auto\"\n});\n\ninterface SequenceTagsEditorDialogProps {\n    tags: string[];\n    onClose: () => void;\n    onTagAdded: (newTag: string) => void;\n    onTagRemoved: (tag: string) => void;\n}\n\ninterface SequenceTagsEditorDialogState {\n    newTag: string;\n    errorMessage: string;\n}\n\nexport class SequenceTagsEditorDialog extends React.Component {\n    props : SequenceTagsEditorDialogProps;\n    state : SequenceTagsEditorDialogState = {\n        newTag: \"\",\n        errorMessage: \"\"\n    };\n\n    private getErrorMessage(tag: string): string {\n        if (!tag.length)\n            return \"\";\n\n        const firstChar: string = tag.charAt(0);\n        if (!UtilsShared.UPPER_CASE_ALPHA.includes(firstChar) &&\n            !UtilsShared.LOWER_CASE_ALPHA.includes(firstChar))\n            return \"Tag names must start with a letter\";\n\n        const allowedChars: Set<string> =\n            new Set(UtilsShared.UPPER_CASE_ALPHA + UtilsShared.LOWER_CASE_ALPHA + UtilsShared.DIGITS + \"_-.\");\n        if ([...tag].some(char => !allowedChars.has(char)))\n            return \"Please use only letters, numbers, or \\\"-_.\\\"\";\n\n        if (tag.length > TAG_CHARACTER_LIMIT)\n            return `Tag cannot exceed ${TAG_CHARACTER_LIMIT} characters`;\n\n        if (this.props.tags.includes(tag))\n            return \"Tag already exists\";\n\n        return \"\";\n    }\n\n    private handleTagChange(newTag: string) {\n        const camelCaseTag: string = newTag.length ? newTag.charAt(0).toUpperCase() + newTag.slice(1) : \"\";\n        this.setState({\n            newTag: camelCaseTag,\n            errorMessage: this.getErrorMessage(camelCaseTag)\n        });\n    }\n\n    private addNewTag(newTag: string) {\n        this.setState({newTag: \"\"});\n        this.props.onTagAdded(newTag);\n    }\n\n    private handleKeydown(event: React.KeyboardEvent<HTMLInputElement>) {\n        if (event.key !== \"Enter\")\n            return;\n\n        event.preventDefault();\n        event.stopPropagation();\n        if (this.state.newTag.length && this.state.errorMessage === \"\")\n            this.addNewTag(this.state.newTag);\n    }\n\n    render(): JSX.Element {\n        return (\n            <Dialog\n                size={DialogSize.xs}\n                innerStyle={{display: \"flex\", flexDirection: \"column\", gap: 5}}\n                closeOnClickOutside\n                onClose={() => this.props.onClose()}\n            >\n                <Box style={{font: primaryFontXLarge}}> {i18next.t(\"Edit Tags\")} </Box>\n                <Box style={{display: \"flex\"}}>\n                    <Box style={{alignSelf: \"self-end\", flexGrow: \"1\"}}>\n                        <InputTextarea\n                            rows={1}\n                            dark={true}\n                            onChange={(newTag: string) => this.handleTagChange(newTag)}\n                            onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => this.handleKeydown(e)}\n                            placeholder={i18next.t(\"Add new tag\")}\n                            value={this.state.newTag}\n                        />\n                    </Box>\n                    <Button\n                        style={{alignSelf: \"self-start\", marginLeft: \"10px\"}}\n                        disabled={this.state.newTag.length === 0 || this.state.errorMessage !== \"\"}\n                        onClick={() => this.addNewTag(this.state.newTag)}\n                        size={\"small\"}\n                    >\n                        {i18next.t(\"Add\")}\n                    </Button>\n                </Box>\n                {Boolean(this.state.errorMessage) ?\n                    <Box style={{color: contrastRed , height: \"14px\"}}>\n                        {i18next.t(this.state.errorMessage)}\n                    </Box>\n                    :<Box style={{color: dark, height: \"14px\"}}>\n                        {this.state.newTag.length}/{TAG_CHARACTER_LIMIT} {\n                            i18next.t(\"character\" + (this.state.newTag.length > 1 ? \"s\" : \"\"))\n                        }\n                    </Box>\n                }\n                <TagEditionContainer>\n                    {this.props.tags.map((tag: string, index: number) => {\n                        return (\n                            <SequenceTag\n                                key={index}\n                                text={tag}\n                                onTagRemoved={(tag: string) => this.props.onTagRemoved(tag)}\n                            />\n                        );\n                    })}\n                </TagEditionContainer>\n                <Box style={{display: \"flex\", justifyContent: \"flex-end\"}}>\n                    <Button\n                        variant=\"outlined\"\n                        onClick={() => this.props.onClose()}\n                    >\n                        {i18next.t(\"Close\")}\n                    </Button>\n                </Box>\n            </Dialog>\n        );\n    }\n}\n", "import React from \"react\";\nimport {Box, styled} from \"@mui/material\";\nimport i18next from \"i18next\";\nimport {primaryFontLarge, primaryFontXLarge, secondaryFontMedium} from \"@root/react-components/src/values/fonts/fonts\";\nimport {dark, white} from \"@root/react-components/src/values/colors/colors\";\nimport {\n    canCurrentPeerEditSequence,\n    isCurrentSequenceLoaded,\n    isCurrentSequenceShowOnlyDynamics,\n    setCurrentSequenceShowOnlyDynamics\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/Sequences\";\nimport {\n    getChildSequenceID,\n    getParentSequenceID\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {getStepsList, getStepType, reverseSteps} from \"@root/Frontend/Studio/Engine/AdapterWeb/Steps\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Info, InfoIcon} from \"@root/react-components/src/icons/Info\";\nimport {Tooltip} from \"@root/react-components/src/misc/Tooltip\";\nimport {Switch} from \"@root/react-components/src/inputs/Switch\";\nimport {Dialog, DialogSize} from \"@root/Frontend/Studio/DialogContainer\";\nimport {InputText} from \"@root/react-components/src/inputs/InputText\";\nimport isEqual from \"lodash/isEqual\";\nimport {Toast} from \"@root/react-components/src/misc/Toast\";\nimport {AdapterLog} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterLog\";\nimport {\n    canCurrentPeerEditWorld,\n    getCurrentWorldID,\n    getWorldGroups\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {GroupsExclusiveDialog} from \"@root/Frontend/Studio/Views/SequencesPanel/GroupsExclusiveDialog\";\nimport {StepType} from \"@backend/Types/Step\";\nimport {PublishDialog} from \"@root/Frontend/Studio/Views/SequencesPanel/PublishDialog\";\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"space-between\",\n});\n\nconst InfoContainer = styled(Box)({\n    display: \"flex\",\n    padding: \"8px\",\n    flexDirection: \"column\",\n    borderRadius: \"8px\",\n    backgroundColor: white\n});\n\nconst Header = styled(Box)({\n    font: primaryFontLarge,\n    paddingTop: \"5px\",\n    paddingBottom: \"5px\",\n    borderBottom: `1px solid ${dark}`,\n    color: dark\n});\n\nconst Row = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"100%\",\n    gap: \"12px\",\n    font: secondaryFontMedium,\n    color: dark,\n    padding: \"8px 0px\"\n});\n\nconst RowTitle = styled(Box)({\n    flex: 1\n});\n\nconst RowValue = styled(Box)({\n    width: \"fit-content\",\n    \"& svg\": {\n        fill: dark,\n        width: \"12px\",\n        height: \"12px\"\n    }\n});\n\nconst SHOW_ONLY_DYNAMIC_TOOLTIP_1: string = \"To limit the overload of holographic information\";\nconst SHOW_ONLY_DYNAMIC_TOOLTIP_2: string = \"this toggle allows a sequence to only show the assets that are moving or \" +\n    \"highlighted\";\nconst SHOW_ONLY_DYNAMIC_TOOLTIP_3: string =  \"The user will only see \" +\n    \"these assets overlaid over the physical objects that are already present during the animation\";\n\nconst REVERSE_ORDER_TOOLTIP_1: string = \"Your sequence will reorder all your steps in the reversed order\"\nconst REVERSE_ORDER_TOOLTIP_2: string = \"A good example is to animate a disassembly guide\"\nconst REVERSE_ORDER_TOOLTIP_3: string = \"Then reverse the order and you now have an assembly guide\";\n\nconst GROUPS_EXCLUSIVE_TOOLTIP: string = \"Only assigned groups will have access to this sequence in the skills matrix\";\n\nconst INVALID_EVALUATION_PUBLISH: string = \"Unable to publish an evaluation sequence without a step question or input\";\n\nenum ActionDialogState {\n    CLONE,\n    DELETE,\n    PUBLISH,\n    REVERSE,\n    RESTORE,\n    GROUPS_EXCLUSIVE,\n    HIDDEN\n}\n\ninterface SequenceActionsProps {\n    currentSequenceID: bigint;\n    deleteSequence: () => void;\n    cloneSequence: () => void;\n    publishSequence: (isMajor: boolean) => void;\n    restoreSequence: () => void;\n    isEvaluation: boolean;\n}\n\ninterface SequenceActionsState {\n    showOnlyDynamics: boolean;\n    isSequenceLoaded: boolean;\n    dialogState: ActionDialogState;\n    inputDelete: string;\n}\n\nexport class SequenceActions extends React.Component {\n    props: SequenceActionsProps;\n    state: SequenceActionsState = {\n        showOnlyDynamics: isCurrentSequenceShowOnlyDynamics(),\n        isSequenceLoaded: isCurrentSequenceLoaded(),\n        dialogState: ActionDialogState.HIDDEN,\n        inputDelete: \"\"\n    }\n\n    componentDidUpdate() {\n        this.updateSequence();\n    }\n\n    /// Update the SequenceActions state using information from Core (if out of sync!)\n    public updateSequence() {\n        const showOnlyDynamics: boolean = isCurrentSequenceShowOnlyDynamics();\n        if (this.state.showOnlyDynamics !== showOnlyDynamics)\n            this.setState({ showOnlyDynamics });\n\n        const isSequenceLoaded: boolean = isCurrentSequenceLoaded();\n        if (isSequenceLoaded !== this.state.isSequenceLoaded)\n            this.setState({ isSequenceLoaded });\n    }\n\n    private cloneSequence() {\n        this.props.cloneSequence();\n        this.closeDialog();\n    }\n\n    private restoreSequence() {\n        this.props.restoreSequence();\n        this.closeDialog();\n    }\n\n    private reverseSteps() {\n        if (reverseSteps(this.props.currentSequenceID))\n            Toast.showToast(<Box>{i18next.t(\"The steps of the sequence have been reversed\")}</Box>);\n        else\n            AdapterLog.ERROR(\"Unable to reverse Sequence!\");\n        this.closeDialog();\n    }\n\n    private allowPublishing(): boolean {\n        if (!this.props.isEvaluation)\n            return true;\n\n        return getStepsList().some((stepID: bigint) => {\n            const stepType: StepType | null = getStepType(stepID);\n            return stepType === StepType.QUESTION || stepType === StepType.INPUT\n        });\n    }\n\n    private closeDialog() {\n        if (this.state.dialogState === ActionDialogState.HIDDEN)\n            return;\n\n        // hide the dialog and wipe the input delete (just in case!)\n        this.setState({\n            dialogState: ActionDialogState.HIDDEN,\n            inputDelete: \"\"\n        });\n    }\n\n    private renderDialog(dialogType: ActionDialogState): null | JSX.Element {\n        switch (dialogType) {\n\n        case ActionDialogState.CLONE:\n            return (<Dialog size={DialogSize.xs} onClose={() => this.closeDialog()}>\n                <Box style={{ font: primaryFontXLarge }}> {i18next.t(\"Duplicate sequence\")} </Box>\n                <Box style={{ width: \"425px\", wordWrap: \"break-word\", padding: \"12px 0px\" }}>\n                    {`${i18next.t(\"Are you sure you want to create a new sequence from this sequence\")} ?`}\n                </Box>\n                <Box style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"6px\" }}>\n                    <Button variant=\"outlined\" onClick={() => this.closeDialog()}>\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                    <Button id=\"confirm-action-sequence-btn\" color={\"primary\"} onClick={() => this.cloneSequence()}>\n                        {i18next.t(\"Confirm\")}\n                    </Button>\n                </Box>\n            </Dialog>);\n\n        case ActionDialogState.DELETE:\n            return (<Dialog size={DialogSize.xs} onClose={() => this.closeDialog()}>\n                <Box style={{ font: primaryFontXLarge }}> {`${i18next.t(\"Warning\")} !`} </Box>\n                <Box style={{ width: \"425px\" }}>\n                    {i18next.t(\"You will delete\")}&nbsp;\n                    <span style={{ font: primaryFontLarge, fontWeight: 700, width: \"100%\" }}>\n                        {i18next.t(\"all versions\")}\n                    </span>\n                    &nbsp;{i18next.t(\"associated with this sequence\")}.\n                    &nbsp;{i18next.t(\"Are you sure you want to delete this sequence\")} ?\n                </Box>\n                <Box style={{ width: \"fit-content\", paddingBottom: \"6px\" }}>\n                    <Box>{i18next.t(\"Confirm by typing\")}&nbsp;\n                        <span style={{font: primaryFontLarge, fontWeight: 700, userSelect: \"all\"}}>\n                            {i18next.t(\"Delete\").toUpperCase()}\n                        </span>\n                    </Box>\n                    <InputText\n                        id=\"delete-sequence-input\"\n                        dark\n                        value={this.state.inputDelete}\n                        onChange={(inputDelete: string) => this.setState({ inputDelete })}\n                    />\n                </Box>\n                <Box style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"6px\" }}>\n                    <Button variant=\"outlined\" onClick={() => this.closeDialog()}>\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                    <Button\n                        id=\"confirm-action-sequence-btn\"\n                        color={\"error\"}\n                        disabled={!isEqual(this.state.inputDelete, i18next.t(\"Delete\").toString().toUpperCase())}\n                        onClick={() => this.props.deleteSequence()}\n                    >\n                        {i18next.t(\"Delete\")}\n                    </Button>\n                </Box>\n            </Dialog>);\n\n        case ActionDialogState.PUBLISH:\n            return <PublishDialog\n                        closeDialog={() => this.closeDialog()}\n                        publishSequence={(isMajor: boolean) => this.props.publishSequence(isMajor)}\n                        hasPreviousVersion={Boolean(getParentSequenceID(this.props.currentSequenceID))}\n            />;\n\n        case ActionDialogState.REVERSE:\n            return (<Dialog size={DialogSize.xs} onClose={() => this.closeDialog()}>\n                <Box style={{ font: primaryFontXLarge }}> {i18next.t(\"Reverse the Steps order\")} </Box>\n                <Box style={{ width: \"425px\", wordWrap: \"break-word\", padding: \"12px 0px\" }}>\n                    {`${i18next.t(\"Are you sure you want to reverse this sequence\")} ?`}\n                </Box>\n                <Box style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"6px\" }}>\n                    <Button variant=\"outlined\" onClick={() => this.closeDialog()}>\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                    <Button id=\"reverse-action-sequence-btn\" color={\"primary\"} onClick={() => this.reverseSteps()}>\n                        {i18next.t(\"Confirm\")}\n                    </Button>\n                </Box>\n            </Dialog>);\n\n        case ActionDialogState.RESTORE:\n            return (<Dialog size={DialogSize.xs} onClose={() => this.closeDialog()}>\n                <Box style={{ font: primaryFontXLarge }}> {i18next.t(\"Restore the version\")} </Box>\n                <Box style={{ width: \"425px\", wordWrap: \"break-word\", padding: \"12px 0px\" }}>\n                    {i18next.t(\"Are you sure you want to restore this version? This will overwrite your current draft\")}.\n                </Box>\n                <Box style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"6px\" }}>\n                    <Button variant=\"outlined\" onClick={() => this.closeDialog()}>\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                    <Button id=\"restore-action-sequence-btn\" color={\"primary\"} onClick={() => this.restoreSequence()}>\n                        {i18next.t(\"Restore\")}\n                    </Button>\n                </Box>\n            </Dialog>);\n        case ActionDialogState.GROUPS_EXCLUSIVE:\n            return <GroupsExclusiveDialog onClose={() => this.closeDialog()} />;\n\n\n        case ActionDialogState.HIDDEN:\n            return null;\n        }\n    }\n\n    render() {\n        const allowPublishing: boolean = this.allowPublishing();\n\n        return (\n                <Container>\n                    <InfoContainer>\n                        <Header> {i18next.t(\"Actions\")} </Header>\n                        <Row>\n                            <RowTitle>\n                                {i18next.t(\"Show only dynamics\")}\n                                <Tooltip title={`${i18next.t(SHOW_ONLY_DYNAMIC_TOOLTIP_1)},\n                                                 ${i18next.t(SHOW_ONLY_DYNAMIC_TOOLTIP_2)}.\n                                                 ${i18next.t(SHOW_ONLY_DYNAMIC_TOOLTIP_3)}`}>\n                                    <InfoIcon style={{cursor: \"pointer\"}}>\n                                        <Info />\n                                    </InfoIcon>\n                                </Tooltip>\n                            </RowTitle>\n                            <RowValue>\n                                <Switch\n                                    disabled={!canCurrentPeerEditSequence(this.props.currentSequenceID)}\n                                    initialValue={this.state.showOnlyDynamics}\n                                    onChange={(showOnlyDynamics: boolean) =>\n                                        this.setState({ showOnlyDynamics },\n                                            () => setCurrentSequenceShowOnlyDynamics(this.state.showOnlyDynamics))\n                                    }\n                                />\n                            </RowValue>\n                        </Row>\n                        <Row>\n                            <RowTitle>\n                                {i18next.t(\"Groups exclusive\")}\n                                <Tooltip title={`${i18next.t(GROUPS_EXCLUSIVE_TOOLTIP)}`}>\n                                    <InfoIcon style={{cursor: \"pointer\"}}> <Info /> </InfoIcon>\n                                </Tooltip>\n                            </RowTitle>\n                            <RowValue>\n                                <Tooltip\n                                    title={getWorldGroups(getCurrentWorldID()).size ?\n                                        \"\" : `${i18next.t(\"No group available\")}`}\n                                >\n                                    <Box>\n                                        <Button\n                                            id=\"group-exclusive-sequence-btn\"\n                                            color=\"dark\"\n                                            size=\"small\"\n                                            disabled={!canCurrentPeerEditSequence(this.props.currentSequenceID) ||\n                                                      !getWorldGroups(getCurrentWorldID()).size}\n                                            onClick={() =>\n                                                this.setState({ dialogState: ActionDialogState.GROUPS_EXCLUSIVE })}\n                                        >\n                                            {i18next.t(\"Assign\")}\n                                        </Button>\n                                    </Box>\n                                </Tooltip>\n                            </RowValue>\n                        </Row>\n                        <Row>\n                            <RowTitle>\n                                {i18next.t(\"Reverse the Steps order\")}\n                                <Tooltip title={`${i18next.t(REVERSE_ORDER_TOOLTIP_1)}.\n                                                 ${i18next.t(REVERSE_ORDER_TOOLTIP_2)}.\n                                                 ${i18next.t(REVERSE_ORDER_TOOLTIP_3)}`}>\n                                    <InfoIcon style={{cursor: \"pointer\"}}> <Info /> </InfoIcon>\n                                </Tooltip>\n                            </RowTitle>\n                            <RowValue>\n                                <Button\n                                    id=\"reverse-sequence-btn\"\n                                    color=\"dark\"\n                                    size=\"small\"\n                                    disabled={!canCurrentPeerEditSequence(this.props.currentSequenceID)}\n                                    onClick={() => this.setState({ dialogState: ActionDialogState.REVERSE })}\n                                >\n                                    {i18next.t(\"Reverse\")}\n                                </Button>\n                            </RowValue>\n                        </Row>\n                        <Row>\n                            <RowTitle> {i18next.t(\"Delete sequence\")} </RowTitle>\n                            <RowValue>\n                                <Button\n                                    id=\"delete-sequence-btn\"\n                                    color=\"error\"\n                                    size=\"small\"\n                                    disabled={!canCurrentPeerEditSequence(this.props.currentSequenceID)}\n                                    onClick={() => this.setState({ dialogState: ActionDialogState.DELETE })}\n                                >\n                                    {i18next.t(\"Delete\")}\n                                </Button>\n                            </RowValue>\n                        </Row>\n                        <Row>\n                            <RowTitle> {i18next.t(\"Duplicate sequence\")} </RowTitle>\n                            <RowValue>\n                                <Button\n                                    id=\"duplicate-sequence-btn\"\n                                    color=\"dark\"\n                                    size=\"small\"\n                                    disabled={!this.state.isSequenceLoaded}\n                                    onClick={() => this.setState({ dialogState: ActionDialogState.CLONE })}\n                                >\n                                    {i18next.t(\"Duplicate\")}\n                                </Button>\n                            </RowValue>\n                        </Row>\n                        {getChildSequenceID(this.props.currentSequenceID) ?\n                            <Row>\n                                <RowTitle> {i18next.t(\"Restore the version\")} </RowTitle>\n                                <RowValue>\n                                    <Button\n                                        id=\"restore-sequence-btn\"\n                                        size=\"small\"\n                                        color=\"warning\"\n                                        disabled={!canCurrentPeerEditWorld(getCurrentWorldID()) ||\n                                            !this.state.isSequenceLoaded}\n                                        onClick={() => this.setState({ dialogState: ActionDialogState.RESTORE })}\n                                    >\n                                        {i18next.t(\"Restore\")}\n                                    </Button>\n                                </RowValue>\n                            </Row>\n                            :\n                            <Row>\n                                <RowTitle> {i18next.t(\"Publish the draft\")} </RowTitle>\n                                <RowValue>\n                                    <Tooltip\n                                        title={allowPublishing ? \"\" : i18next.t(INVALID_EVALUATION_PUBLISH)}>\n                                        <Box>\n                                            <Button\n                                                id=\"publish-sequence-btn\"\n                                                size=\"small\"\n                                                disabled={!canCurrentPeerEditSequence(this.props.currentSequenceID) ||\n                                                          !this.state.isSequenceLoaded || !allowPublishing}\n                                                onClick={() =>\n                                                    this.setState({ dialogState: ActionDialogState.PUBLISH })}\n                                            >\n                                                {i18next.t(\"Publish\")}\n                                            </Button>\n                                        </Box>\n                                    </Tooltip>\n                                </RowValue>\n                            </Row>\n                        }\n                    </InfoContainer>\n                    {this.renderDialog(this.state.dialogState)}\n                </Container>\n        )\n    }\n}\n", "import React from \"react\";\nimport {Dialog} from \"DialogContainer\";\nimport i18next from \"i18next\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport {Box, styled} from \"@mui/material\";\nimport {primaryFontLarge, primaryFontXLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport {\n    getCurrentWorldID,\n    getGroupName,\n    getPeerGroups,\n    getWorldGroups\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport {Checkbox} from \"@root/react-components/src/inputs/Checkbox\";\nimport {primary, white} from \"@root/react-components/src/values/colors/colors\";\nimport {grey} from \"@mui/material/colors\";\nimport {\n    addGroupsExclusive,\n    getCurrentSequenceID,\n    getGroupsExclusive,\n    removeGroupsExclusive\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport {SearchBar} from \"@root/react-components/src/inputs/SearchBar\";\nimport {getCurrentPeerID} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterWebAssembly\";\n\nconst Header = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n    font: primaryFontXLarge,\n    flex: \"0 0 auto\"\n});\n\nconst DialogContainer = styled(Box)({\n    minHeight: \"100px\",\n    width: \"500px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n});\n\nconst Container = styled(Box)({\n    display: \"flex\",\n    marginTop: \"8px\",\n    marginBottom: \"8px\",\n    flex: 1,\n    backgroundColor: primary,\n    padding: \"6px\",\n    borderRadius: \"16px\",\n    overflow: \"auto\",\n});\n\nconst ListContainer = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    padding: \"12px\",\n    gap: \"12px\",\n    overflow: \"auto\",\n    flex: \"1 1 auto\",\n    \"&::-webkit-scrollbar\": {\n        width: \"8px\",\n        height: \"8px\",\n    },\n    \"&::-webkit-scrollbar-track\": {\n        background: \"transparent\",\n    },\n    \"&::-webkit-scrollbar-thumb\": {\n        backgroundColor: white,\n        borderRadius: \"10px\",\n    },\n});\n\nconst ListItem = styled(Box)({\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    padding: \"12px\",\n    borderRadius: \"12px\",\n    border: `1px solid ${grey}`,\n    backgroundColor: white,\n    font: primaryFontLarge,\n    cursor: \"pointer\"\n});\n\ninterface GroupsExclusiveDialogProps {\n    onClose: () => void;\n}\n\ninterface GroupsExclusiveDialogState {\n    groupsExclusiveSelected: Set<bigint>;\n    groupIDs: bigint[];\n    searchStr: string;\n}\n\nexport class GroupsExclusiveDialog extends React.Component {\n    props: GroupsExclusiveDialogProps;\n    state: GroupsExclusiveDialogState = {\n        groupsExclusiveSelected: new Set<bigint>(),\n        groupIDs: [],\n        searchStr: \"\"\n    }\n\n    componentDidMount() {\n        this.setGroupIDs();\n    }\n\n    componentDidUpdate(_: GroupsExclusiveDialogProps, prevState: GroupsExclusiveDialogState) {\n        if (prevState.searchStr !== this.state.searchStr)\n            this.setGroupIDs();\n    }\n\n    private setGroupIDs() {\n        const groups: Set<bigint> = getWorldGroups(getCurrentWorldID());\n        if (!groups.size)\n            return;\n\n        const groupsExclusive: Set<bigint> = getGroupsExclusive(getCurrentSequenceID());\n        const currentPeerGroups: Set<bigint> = getPeerGroups(getCurrentPeerID());\n        const groupIDs: bigint[] =\n            [...groups].filter((groupID: bigint) =>\n                            getGroupName(groupID).toLowerCase().includes(this.state.searchStr.toLowerCase()) &&\n                            (currentPeerGroups.has(groupID) || groupsExclusive.has(groupID)))\n                       .sort((groupA: bigint, groupB: bigint) =>\n                            getGroupName(groupA).localeCompare(getGroupName(groupB)));\n\n        this.setState({\n            groupIDs,\n            groupsExclusiveSelected: groupsExclusive\n        });\n    }\n\n    private toggleGroupSelected(groupID: bigint) {\n        const groupsExclusiveSelected: Set<bigint> = this.state.groupsExclusiveSelected;\n\n        if (this.state.groupsExclusiveSelected.has(groupID))\n            groupsExclusiveSelected.delete(groupID);\n        else\n            groupsExclusiveSelected.add(groupID);\n\n        this.setState({ groupsExclusiveSelected }, () => {\n            if (this.state.groupsExclusiveSelected.has(groupID))\n                addGroupsExclusive(getCurrentSequenceID(), groupID);\n            else\n                removeGroupsExclusive(getCurrentSequenceID(), groupID);\n        });\n    }\n\n    render() {\n        return (\n            <Dialog>\n                <DialogContainer>\n                    <Box style={{ display: \"flex\", justifyContent: \"space-between\", paddingBottom: \"16px\" }}>\n                        <Header> {i18next.t(\"Groups exclusive to the sequence\")} </Header>\n                        <SearchBar\n                            style={{ maxWidth: \"200px\" }}\n                            onChange={(searchStr: string) => this.setState({ searchStr })}\n                        />\n                    </Box>\n\n                    {Boolean(!this.state.groupsExclusiveSelected.size && getWorldGroups(getCurrentWorldID()).size) &&\n                        <Box>\n                               {i18next.t(\"IMPORTANT\")}:&nbsp;\n                            <b>{i18next.t(\"Currently no groups are selected\")}</b>.&nbsp;\n                               {i18next.t(\"If no group is exclusive to the sequence\")},&nbsp;\n                            <b>{i18next.t(\"the sequence is accessible to all groups\")}.</b>\n                        </Box>\n                    }\n                    <Container>\n                        <ListContainer>\n                            {!this.state.groupIDs.length &&\n                                <Box style={{ color: white, margin: \"auto\" }}> {i18next.t(\"No group available\")} </Box>\n                            }\n                            {Array.from(this.state.groupIDs).map((groupID: bigint) => {\n                                const disabled: boolean = !getPeerGroups(getCurrentPeerID()).has(groupID);\n                                const groupName: string = getGroupName(groupID);\n                                return (\n                                    <ListItem\n                                        key={groupID.toString()}\n                                        onClick={() => !disabled && this.toggleGroupSelected(groupID)}\n                                    >\n                                        <Box style={{ opacity: disabled ? 0.7 : 1}}>\n                                            {groupName ? groupName : `[${i18next.t(\"Unknown group\")}]`}\n                                        </Box>\n                                        <Checkbox\n                                            disabled={disabled}\n                                            checked={this.state.groupsExclusiveSelected.has(groupID)} />\n                                    </ListItem>\n                                )\n                            })}\n                        </ListContainer>\n                    </Container>\n                    <Box style={{ display: \"flex\", justifyContent: \"end\" }}>\n                        <Button onClick={() => this.props.onClose()}>{i18next.t(\"Close\")}</Button>\n                    </Box>\n                </DialogContainer>\n            </Dialog>\n        )\n    }\n}", "import { Box, styled } from \"@mui/material\";\nimport {Button} from \"@root/react-components/src/buttons/Button\";\nimport { Dialog, DialogSize } from \"DialogContainer\";\nimport React from \"react\";\nimport { primaryFontXLarge } from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\nimport { darkenPrimary } from \"@root/react-components/src/values/colors/colors\";\nimport {RadioButton} from \"@root/Frontend/Console/components/RadioButton\";\n\nconst WrapperButtons = styled(Box)({\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"12px\",\n    padding: \"20px 0 12px\",\n    width: \"600px\"\n});\n\nconst WrapperButton = styled(Box)((props: {checked: boolean}) => ({\n    display: \"flex\",\n    gap: \"25px\",\n    padding: \"10px\",\n    height: \"40px\",\n    alignItems: \"center\",\n    borderRadius: \"10px\",\n    border: `2px solid ${props.checked ? darkenPrimary: \"transparent\"}`,\n    background: props.checked ? `color-mix(in srgb, ${darkenPrimary} 24%, transparent)` : \"transparent\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n        border: `2px solid ${props.checked ? darkenPrimary: `color-mix(in srgb, ${darkenPrimary} 18%, transparent)`}`,\n    }\n}));\n\ninterface PublishDialogProps  {\n    closeDialog:() => void;\n    publishSequence:(isMajor: boolean) => void;\n    hasPreviousVersion: boolean;\n}\n\nenum PublishType {\n    MINOR= 'Minor',\n    MAJOR= 'Major'\n}\n\ninterface PublishDialogState {\n    publishType: PublishType;\n}\n\nconst PUBLISH_OPTIONS: Map<PublishType, string> = new Map([\n    [PublishType.MINOR, \"User progress is unaffected. Ideal for minor corrections or improvements to the content.\"],\n    [PublishType.MAJOR, \"User progress is reset. Use this for major structural changes.\"],\n]);\n\nexport class PublishDialog extends React.Component {\n\n    props: PublishDialogProps;\n    state: PublishDialogState = {\n        publishType: this.props.hasPreviousVersion ? PublishType.MINOR : PublishType.MAJOR,\n    };\n\n    private publishSequence() {\n        this.props.publishSequence(this.state.publishType === PublishType.MAJOR);\n        this.props.closeDialog();\n    }\n\n    render() {\n        return(<Dialog size={DialogSize.xs} onClose={() => this.props.closeDialog()}>\n                <Box style={{ font: primaryFontXLarge }}> {`${i18next.t(\"Warning\")} !`} </Box>\n                <Box style={{ paddingBottom: \"8px\", width: \"600px\" }}>\n                    {i18next.t(\"By publishing the draft, you archive the current version used in \" +\n                        \"glasses and on tablets and replace it with this version\")}.\n                </Box>\n                <b>{i18next.t(\"You will no longer be able to change this version\")}.</b>\n                <WrapperButtons>\n                    {this.props.hasPreviousVersion && [...PUBLISH_OPTIONS.keys()].map((type: PublishType) => {\n                        const isSelected: boolean = type === this.state.publishType;\n                        return (\n                            <WrapperButton key={type}\n                                           checked={isSelected}\n                                           onClick={() => !isSelected && this.setState({ publishType: type })}>\n                                <RadioButton checked={isSelected}\n                                             label={i18next.t(type)}\n                                             groupKey={\"minor-major-button\"}/>\n                                <span> {i18next.t(PUBLISH_OPTIONS.get(type) ?? \"\")} </span>\n                            </WrapperButton>\n                        )\n                    })}\n                </WrapperButtons>\n                <Box style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"6px\" }}>\n                    <Button variant=\"outlined\" onClick={() => this.props.closeDialog()}>\n                        {i18next.t(\"Cancel\")}\n                    </Button>\n                    <Button\n                        id=\"confirm-action-sequence-btn\"\n                        color={\"primary\"}\n                        onClick={() => this.publishSequence()}\n                    >\n                        {i18next.t(\"Publish\")}\n                    </Button>\n                </Box>\n            </Dialog>\n        )\n    }\n}", "import React from \"react\"\nimport {Box, styled} from \"@mui/material\";\nimport {dark, darkenWhite, primary, white, orange} from \"@root/react-components/src/values/colors/colors\";\nimport {primaryFontLarge, primaryFontMedium, secondaryFontXSmall} from \"@root/react-components/src/values/fonts/fonts\";\nimport {\n    getChildSequenceID,\n    getParentSequenceID,\n    getPeerPublisherID,\n    getPublishedTimestamp\n} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterFilterSequenceList\";\nimport i18next from \"i18next\";\nimport {timestampToShortString} from \"@utils/utils\";\nimport {Draft} from \"@root/react-components/src/icons/Draft\";\nimport {CurrentVersion} from \"@root/react-components/src/icons/CurrentVersion\";\nimport {OldVersion} from \"@root/react-components/src/icons/OldVersion\";\nimport {getPeerFullName} from \"@root/Frontend/Studio/Engine/AdapterWeb/AdapterStudio\";\nimport isEqual from \"lodash/isEqual\";\nimport {App} from \"@root/Frontend/Studio/App\";\nimport {Sequence} from \"@root/Frontend/Studio/Engine/WebAssembly.mjs\";\n\n\nconst Container = styled(Box)({\n    flex: 2,\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"space-between\",\n    height: \"100%\",\n    maxHeight: \"400px\"\n});\n\nconst VersionsContainer = styled(Box)({\n    display: \"flex\",\n    padding: \"8px\",\n    flexDirection: \"column\",\n    borderRadius: \"8px\",\n    backgroundColor: white,\n    minHeight: 0,\n});\n\nconst Header = styled(Box)({\n    font: primaryFontLarge,\n    paddingTop: \"5px\",\n    paddingBottom: \"5px\",\n    borderBottom: `1px solid ${dark}`,\n    color: dark\n});\n\nconst VersionItemContainer = styled(Box)((props: {is_current_sequence: number}) => ({\n    height: \"32px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    padding: \"1px 4px\",\n    margin: \"1px 0px\",\n    borderBottomLeftRadius: \"16px\",\n    borderTopLeftRadius: \"16px\",\n    borderBottomRightRadius: \"4px\",\n    borderTopRightRadius: \"4px\",\n    backgroundColor: props.is_current_sequence ? darkenWhite : white,\n    \"&:hover\": {\n        backgroundColor: darkenWhite\n    },\n}));\n\nconst VersionItemLeftContainer = styled(Box)({\n    display: \"flex\",\n    alignItems: \"center\",\n})\n\nconst VersionsList = styled(Box)({\n    overflow: \"auto\",\n    height: \"100%\",\n\n    /* width */\n    \"&::-webkit-scrollbar\": {\n        width: \"10px\",\n        height: \"10px\",\n    },\n    /* Track */\n    \"&::-webkit-scrollbar-track\": {\n        width: 0,\n        backgroundColor: white,\n        borderRadius: \"10px\",\n    },\n    /* Handle */\n    \"&::-webkit-scrollbar-thumb\": {\n        background: primary,\n        borderRadius: \"10px\",\n    },\n});\n\nconst CircleIndex = styled(Box)({\n    color: white,\n    backgroundColor: dark,\n    width: \"26px\",\n    height: \"22px\",\n    borderRadius: \"16px\",\n    font: primaryFontMedium,\n    textAlign: \"center\",\n    paddingTop: \"4px\"\n});\n\nconst TitlesContainer = styled(Box)({\n    color: dark,\n    paddingLeft: \"4px\"\n});\n\nconst VersioningTimestamp = styled(Box)({\n    font: primaryFontMedium,\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignContent: \"center\",\n    gap: \"10px\"\n});\n\nconst Major = styled(Box)({\n    background: orange,\n    padding: \"0 4px\",\n    borderRadius: \"10px\",\n    color: white,\n    fontSize: \"smaller\",\n    alignSelf: \"center\",\n});\n\nconst PublisherName = styled(Box)({ font: secondaryFontXSmall });\n\nconst Timeline = styled(Box)({\n    height: \"16px\",\n    backgroundColor: dark,\n    width: \"2px\",\n    marginLeft: \"16px\",\n    borderRadius: \"10px\"\n});\n\ninterface VersioningSequenceProps {\n    currentSequenceID: bigint,\n    selectSequenceVersion: (sequenceID: bigint) => void\n}\n\ninterface VersioningSequenceState { versions: bigint[] }\n\nexport class VersioningSequence extends React.Component {\n    private readonly containerRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n    props: VersioningSequenceProps;\n    state: VersioningSequenceState = { versions: [] }\n\n    override async componentDidMount() {\n        this.setState({ versions: this.getVersions(this.props.currentSequenceID) });\n    }\n\n    override async componentDidUpdate(prevProps: Readonly<VersioningSequenceProps>) {\n\n        // fetch new versions and re-assign state if different\n        const versions: bigint[] = this.getVersions(this.props.currentSequenceID);\n        if (!isEqual(this.state.versions, versions))\n            this.setState({ versions });\n    }\n\n    private getVersions(sequenceID: bigint): bigint[] {\n        if(!sequenceID)\n            return [];\n\n        // create list with only the current sequence ID\n        const versions: bigint[] = [sequenceID];\n\n        // push child sequence ID in front\n        for(let childID = getChildSequenceID(sequenceID); childID; childID = getChildSequenceID(childID))\n            versions.unshift(childID);\n\n        // push parent sequence ID in the back\n        for(let parentID = getParentSequenceID(sequenceID); parentID; parentID = getParentSequenceID(parentID))\n            versions.push(parentID);\n\n        return versions;\n    }\n\n    private getVersionIcon(sequenceID: bigint) {\n        const childSequenceID: bigint = getChildSequenceID(sequenceID);\n        if (!childSequenceID)\n            return <Draft />;\n        else if (!getPeerPublisherID(childSequenceID))\n            return <Box style={{ paddingRight: \"6px\" }}><CurrentVersion /></Box>;\n        else\n            return <Box style={{ paddingRight: \"6px\" }}><OldVersion /></Box>;\n    }\n\n    render(){\n        return (\n            <Container ref={this.containerRef}>\n                <VersionsContainer>\n                    <Header> {i18next.t(\"Sequence versions\")} </Header>\n                    <VersionsList>\n                        {this.state.versions.map((sequenceID: bigint, index: number) => {\n                            using sequence: Sequence | null = App.getInstance()?.getSequence(sequenceID);\n                            const isMajorVersion: boolean = sequence?.isMajorVersion() ?? false;\n                            const publishedTimestamp: bigint = getPublishedTimestamp(sequenceID);\n                            return (<Box key={sequenceID.toString()}>\n                                <VersionItemContainer\n                                    onClick={() => this.props.selectSequenceVersion(sequenceID)}\n                                    id={\"v-\" + sequenceID.toString()}\n                                    is_current_sequence={Number(this.props.currentSequenceID === sequenceID)}\n                                >\n                                    <VersionItemLeftContainer>\n                                        <CircleIndex> {this.state.versions.length - index}</CircleIndex>\n                                        <TitlesContainer>\n                                            <VersioningTimestamp>\n                                                {Boolean(publishedTimestamp) ?\n                                                    <>\n                                                        {timestampToShortString(publishedTimestamp)}\n                                                        {isMajorVersion &&\n                                                            <Major>{i18next.t(\"Major\")}</Major>}\n                                                    </> :\n                                                    i18next.t(\"Draft\")}\n                                            </VersioningTimestamp>\n                                            <PublisherName>\n                                                {getPeerFullName(getPeerPublisherID(sequenceID)) ?? \"Unknown\"}\n                                            </PublisherName>\n                                        </TitlesContainer>\n                                    </VersionItemLeftContainer>\n                                    {this.getVersionIcon(sequenceID)}\n                                </VersionItemContainer>\n                                {(index !== this.state.versions.length - 1) && <Timeline/>}\n                            </Box>)\n                        })}\n                    </VersionsList>\n                </VersionsContainer>\n            </Container>\n        )\n    }\n}\n", "import React, {ReactElement} from \"react\";\n\nexport function Draft(): ReactElement {\n    return (\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <g clipPath=\"url(#clip0_3135_325)\">\n                <path d=\"M17 8.5V3C17 1.89543 16.1046 1 15 1H3C1.89543 1 1 1.89543 1 3V21C1 22.1046 1.89543 23 3 23H15C16.1046 23 17 22.1046 17 21V13\" stroke=\"#23292F\" strokeWidth=\"2\"/>\n                <line x1=\"19.1438\" y1=\"6.09825\" x2=\"21.533\" y2=\"8.48745\" stroke=\"#23292F\" strokeWidth=\"2\"/>\n                <path d=\"M12.597 12.9356L14.8323 15.1709L11.4797 16.2889L12.597 12.9356Z\" fill=\"#23292F\" stroke=\"#23292F\"/>\n                <path d=\"M13.7931 12.0103L20.6819 5.12149C21.0724 4.73096 21.7056 4.73097 22.0961 5.12149L22.6465 5.67184C23.037 6.06237 23.037 6.69553 22.6465 7.08606L15.7577 13.9748L13.7931 12.0103Z\" stroke=\"#23292F\" strokeWidth=\"2\"/>\n                <path d=\"M5 7H13\" stroke=\"#23292F\" strokeWidth=\"2\" strokeLinecap=\"round\"/>\n                <path d=\"M5 12H11\" stroke=\"#23292F\" strokeWidth=\"2\" strokeLinecap=\"round\"/>\n                <path d=\"M5 17H10\" stroke=\"#23292F\" strokeWidth=\"2\" strokeLinecap=\"round\"/>\n            </g>\n            <defs> <clipPath id=\"clip0_3135_325\"> <rect width=\"24\" height=\"24\" fill=\"white\"/> </clipPath> </defs>\n        </svg>\n    );\n}\n", "import React, {ReactElement} from \"react\";\n\nexport function CurrentVersion(): ReactElement {\n    return (\n        <svg width=\"18\" height=\"24\" viewBox=\"0 0 18 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <g clipPath=\"url(#clip0_3135_338)\">\n                <rect x=\"1\" y=\"1\" width=\"16\" height=\"22\" rx=\"2\" stroke=\"#23292F\" strokeWidth=\"2\"/>\n                <path d=\"M3.99997 13.369L6.99994 15.869\" stroke=\"#23292F\" strokeWidth=\"3\" strokeLinecap=\"round\"/>\n                <path d=\"M14 8.36901L6.99994 15.869\" stroke=\"#23292F\" strokeWidth=\"3\" strokeLinecap=\"round\"/>\n            </g>\n            <defs> <clipPath id=\"clip0_3135_338\"> <rect width=\"18\" height=\"24\" fill=\"white\"/> </clipPath> </defs>\n        </svg>\n    );\n}\n", "import React from \"react\";\nimport {Dialog} from \"@root/Frontend/Studio/DialogContainer\";\nimport {Box, LinearProgress} from \"@mui/material\";\nimport {primaryFontLarge} from \"@root/react-components/src/values/fonts/fonts\";\nimport i18next from \"i18next\";\n\ninterface CloneSequenceLoadingProps {\n    stepsToClone: bigint[];\n    onClose: () => void;\n}\n\ninterface CloneSequenceLoadingState {\n    copiedStepIDs: bigint[];\n}\n\nexport class CloneSequenceLoading extends React.Component {\n    props: CloneSequenceLoadingProps;\n    state: CloneSequenceLoadingState = { copiedStepIDs: [] };\n\n    public updateStep(stepID: bigint) {\n        if (!this.props.stepsToClone.includes(stepID))\n            return;\n\n        this.setState((prevState: CloneSequenceLoadingState) => {\n            const copiedStepIDs: bigint[] = prevState.copiedStepIDs;\n            if (!this.state.copiedStepIDs.includes(stepID))\n                copiedStepIDs.push(stepID);\n\n            return { copiedStepIDs };\n        }, () => {\n            if (this.props.stepsToClone.length !== this.state.copiedStepIDs.length)\n                return;\n\n            const copiedStepIDs: Set<bigint> = new Set(this.state.copiedStepIDs);\n            if (this.props.stepsToClone.every((id: bigint) => copiedStepIDs.has(id)))\n                this.props.onClose();\n        });\n    }\n\n    render() {\n        return (\n            <Dialog id=\"cloning-sequence-dialog\">\n                <Box style={{ font: primaryFontLarge, paddingBottom: \"12px\" }}>\n                    {i18next.t(\"Wait a few moments for the Sequence to be saved\")}...\n                </Box>\n                <LinearProgress\n                    variant=\"determinate\"\n                    value={((this.state.copiedStepIDs.length * 100) / this.props.stepsToClone.length)}\n                />\n                <Box style={{ paddingTop: \"2px\"}}>\n                    {this.state.copiedStepIDs.length} / {this.props.stepsToClone.length} {i18next.t(\"steps\")}\n                </Box>\n            </Dialog>\n        )\n    }\n}\n"],
  "mappings": "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,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,IAAI,IAAI,IAAI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W,qBAAqB,iBAAiB,CAAC;AAAA;AAAA;;;ACL/K;AAAA;AAEA;AAAA;AAAA;;;ACFA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAUA;AACA,IAAAC;AACA,IAAAC;AACA,IAAAA;AAEA;AACA,IAAAC;AACA,IAAAA;AACA,IAAAC;AACA,IAAAA;AAEA;AAEA;AAEA;AACA,IAAAC;AACA,IAAAA;AAEA;AAEA;AAEA,IAAAC;AAEA;AAEA;AAEA;AACA,IAAAC;AACA,IAAAA;AAEA;AACA,IAAAC;AACA,IAAAA;AAEA,IAAAC;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA,IAAAC;AACA,IAAAA;AACA,IAAAC;AACA,IAAAA;AACA,IAAAC;AACA,IAAAA;AAEA,IAAAC;AACA,IAAAC;AACA,IAAAA;AAEA,IAAAC;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA,IAAAC;AACA,IAAAA;AAEA;AAEA;AAEA,IAAAC;AAEA,IAAAC;AAEA,IAAAC;AAEA;AAEA;AAEA,IAAAC;AAEA,IAAAC;AACA,IAAAC;AACA,IAAAA;AAEA;AAEA,IAAAC;AAEA;AAEA;AACA,IAAAC;AACA,IAAAA;AAEA;AAEA;AAEA;AACA,IAAAC;AACA,IAAAA;AAEA;AAEA,IAAAC;AAEA,IAAAC;AACA,IAAAC;AACA,IAAAA;AAEA;AAEA,IAAAC;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA,IAAAC;AAEA,IAAAC;AAEA;AAEA,IAAAC;AAEA;AAEA,IAAAC;AAEA;AAEA;AAEA,IAAAC;AACA,IAAAC;AACA,IAAAA;AAEA,IAAAC;AAEA,IAAAC;AACA,IAAAC;AACA,IAAAA;AACA,IAAAC;AACA,IAAAA;AAEA,IAAAC;AAEA;AAEA;AAEA;AAEA;AAEA,IAAAC;AACA,IAAAC;AACA,IAAAA;AAEA;AACA,IAAAC;AACA,IAAAA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA,IAAAC;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA,IAAAC;AACA,IAAAA;AAEA;AAEA;AAEA;AAEA,IAAAC;AAEA,IAAAC;AAEA,IAAAC;AACA,IAAAC;AACA,IAAAA;AAEA;AAEA,IAAAC;AAEA;AAEA,IAAAC;AAEA;AAEA;AAEA;AACA,IAAAC;AACA,IAAAA;AAEA,IAAAC;AAEA;AAEA;AAEA;AACA,IAAAC;AACA,IAAAA;AAEA,IAAAC;AACA,IAAAC;AACA,IAAAA;AAEA,IAAAC;AAEA;AAEA;AAKA,IAAAC;AAIA,IAAAC;AAAA;AAAA;;;AC5RA;AAAA;AAAA,uBAAC,SAAU,EAAC,UAAW,EAAC,UAAW,KAAI,UAAW,KAAI,UAAW,KAAI,UAAW,KAAI,UAAW,KAAI,OAAM,KAAI,KAAM,KAAI,UAAW,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,MAAK,GAAE,QAAS,EAAC,iBAAgB,KAAI,oBAAqB,KAAI,oBAAqB,KAAI,oBAAqB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,MAAK,GAAE,OAAQ,EAAC,UAAW,KAAI,OAAM,KAAI,YAAW,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,YAAW,KAAI,OAAM,KAAI,OAAM,KAAI,YAAW,MAAK,UAAW,MAAK,UAAW,MAAK,YAAW,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,YAAW,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,eAAgB,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,YAAW,MAAK,YAAW,MAAK,OAAM,MAAK,UAAW,MAAK,YAAW,MAAK,KAAM,MAAK,YAAW,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,eAAgB,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,YAAW,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,YAAW,MAAK,YAAW,MAAK,YAAW,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,YAAW,MAAK,KAAM,MAAK,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,eAAgB,OAAM,OAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,YAAW,OAAM,UAAW,OAAM,YAAW,OAAM,eAAgB,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,YAAW,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,YAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,YAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,eAAgB,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,YAAW,OAAM,YAAW,OAAM,YAAW,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,YAAW,OAAM,YAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,aAAgB,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,SAAU,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,sBAAqB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,sBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,YAAW,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,YAAW,MAAK,oBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,YAAW,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,oBAAqB,OAAM,OAAM,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,MAAK,GAAE,WAAY,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,YAAW,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,YAAW,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,YAAW,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,YAAW,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,MAAK,GAAE,SAAU,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,MAAK,GAAE,UAAW,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,YAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,MAAK,GAAE,OAAQ,EAAC,OAAM,KAAI,OAAM,KAAI,UAAW,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,YAAW,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,YAAW,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,eAAgB,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,eAAgB,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,YAAW,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,YAAW,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,eAAgB,OAAM,UAAW,OAAM,eAAgB,OAAM,eAAgB,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,MAAK,GAAE,QAAS,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,OAAQ,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,SAAU,EAAC,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,UAAW,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,eAAgB,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,eAAgB,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,GAAE,OAAQ,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,YAAW,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,MAAK,GAAE,SAAU,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,eAAgB,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,eAAgB,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,eAAgB,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,aAAgB,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,eAAgB,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,eAAgB,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,QAAS,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,MAAK,GAAE,QAAS,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,KAAM,KAAI,KAAM,KAAI,KAAM,KAAI,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,OAAQ,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,UAAW,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,MAAK,GAAE,OAAQ,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,MAAK,GAAE,WAAY,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,eAAgB,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,eAAgB,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,WAAY,EAAC,UAAW,KAAI,OAAM,KAAI,UAAW,KAAI,OAAM,KAAI,UAAW,KAAI,OAAM,KAAI,OAAM,KAAI,UAAW,KAAI,OAAM,KAAI,UAAW,KAAI,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,eAAgB,OAAM,eAAgB,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,aAAgB,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,eAAgB,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,eAAgB,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,YAAa,EAAC,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,SAAU,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,QAAS,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,MAAK,GAAE,QAAS,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,MAAK,GAAE,OAAQ,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,MAAK,GAAE,SAAU,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,YAAW,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,YAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,YAAW,OAAM,YAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,YAAW,OAAM,YAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,eAAgB,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,YAAW,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,YAAW,OAAM,eAAgB,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,MAAK,GAAE,YAAa,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,YAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,MAAK,GAAE,YAAa,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,YAAW,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,YAAW,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,YAAW,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,MAAK,GAAE,WAAY,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,oBAAqB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,YAAW,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,eAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,eAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,UAAW,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,YAAW,OAAM,iBAAgB,OAAM,eAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,YAAW,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,eAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,YAAW,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,eAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,YAAW,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,eAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,eAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,YAAW,OAAM,YAAW,OAAM,iBAAgB,OAAM,YAAW,OAAM,oBAAqB,OAAM,eAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,UAAW,OAAM,oBAAqB,OAAM,oBAAqB,MAAK,GAAE,QAAS,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,oBAAqB,KAAI,sBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,YAAW,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,YAAW,MAAK,oBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,sBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,sBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,MAAK,GAAE,WAAY,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,QAAS,EAAC,YAAW,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,MAAK,GAAE,QAAS,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,GAAE,QAAS,EAAC,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,YAAW,KAAI,KAAM,KAAI,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,YAAW,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,eAAgB,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,eAAgB,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,YAAW,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,iBAAgB,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,MAAK,GAAE,YAAa,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,UAAW,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,eAAgB,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,eAAgB,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,eAAgB,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,UAAW,EAAC,OAAM,KAAI,UAAW,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,UAAW,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,YAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,iBAAgB,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,MAAK,GAAE,SAAU,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,YAAW,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,MAAK,YAAW,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,YAAW,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,YAAW,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,MAAK,GAAE,SAAU,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,YAAW,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,YAAW,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,YAAW,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,MAAK,GAAE,QAAS,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,UAAW,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,YAAW,MAAK,OAAM,MAAK,UAAW,MAAK,YAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,eAAgB,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,eAAgB,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,SAAU,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,QAAS,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,GAAE,SAAU,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,SAAU,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,SAAU,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,UAAW,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,MAAK,GAAE,SAAU,EAAC,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,MAAK,GAAE,SAAU,EAAC,KAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,eAAgB,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,YAAW,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,UAAW,MAAK,oBAAqB,MAAK,KAAM,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,KAAM,MAAK,YAAW,OAAM,UAAW,OAAM,iBAAgB,OAAM,KAAM,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,YAAW,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,YAAW,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,eAAgB,OAAM,YAAW,OAAM,eAAgB,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,eAAgB,OAAM,KAAM,OAAM,KAAM,OAAM,eAAgB,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,YAAW,OAAM,UAAW,OAAM,eAAgB,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,YAAW,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,eAAgB,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,eAAgB,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,eAAgB,OAAM,UAAW,MAAK,GAAE,WAAY,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,YAAW,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,YAAW,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,YAAW,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,YAAW,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,YAAW,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,YAAW,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,MAAK,GAAE,MAAO,EAAC,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,MAAK,GAAE,OAAQ,EAAC,iBAAgB,KAAI,oBAAqB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,oBAAqB,KAAI,iBAAgB,KAAI,iBAAgB,KAAI,oBAAqB,KAAI,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,iBAAgB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,oBAAqB,MAAK,iBAAgB,MAAK,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,iBAAgB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,OAAM,oBAAqB,MAAK,GAAE,YAAa,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,UAAW,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,UAAW,KAAI,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,iBAAgB,MAAK,OAAM,MAAK,YAAW,MAAK,UAAW,MAAK,UAAW,MAAK,UAAW,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,UAAW,MAAK,OAAM,MAAK,eAAgB,MAAK,YAAW,MAAK,UAAW,MAAK,UAAW,MAAK,UAAW,MAAK,UAAW,MAAK,UAAW,MAAK,UAAW,MAAK,YAAW,MAAK,UAAW,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,UAAW,MAAK,oBAAqB,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,UAAW,MAAK,OAAM,MAAK,YAAW,MAAK,UAAW,MAAK,UAAW,MAAK,YAAW,MAAK,OAAM,MAAK,KAAM,MAAK,UAAW,MAAK,YAAW,MAAK,UAAW,MAAK,UAAW,MAAK,YAAW,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,UAAW,MAAK,UAAW,MAAK,YAAW,MAAK,YAAW,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,YAAW,MAAK,OAAM,MAAK,YAAW,MAAK,YAAW,MAAK,YAAW,MAAK,UAAW,MAAK,KAAM,MAAK,OAAM,MAAK,YAAW,MAAK,YAAW,MAAK,YAAW,MAAK,YAAW,MAAK,OAAM,MAAK,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,YAAW,OAAM,UAAW,OAAM,YAAW,OAAM,YAAW,OAAM,YAAW,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,YAAW,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,eAAgB,OAAM,iBAAgB,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,eAAgB,OAAM,eAAgB,OAAM,eAAgB,OAAM,YAAW,OAAM,UAAW,OAAM,YAAW,OAAM,UAAW,OAAM,YAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,eAAgB,OAAM,YAAW,OAAM,YAAW,OAAM,YAAW,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,YAAW,OAAM,YAAW,OAAM,YAAW,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,YAAW,OAAM,UAAW,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,YAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,YAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,YAAW,OAAM,YAAW,OAAM,YAAW,OAAM,UAAW,OAAM,iBAAgB,OAAM,OAAM,OAAM,OAAM,OAAM,eAAgB,OAAM,OAAM,OAAM,KAAM,OAAM,UAAW,OAAM,KAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,OAAM,OAAM,YAAW,OAAM,YAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,YAAW,OAAM,eAAgB,OAAM,iBAAgB,OAAM,eAAgB,OAAM,YAAW,OAAM,YAAW,OAAM,YAAW,OAAM,UAAW,OAAM,YAAW,OAAM,YAAW,OAAM,YAAW,OAAM,YAAW,OAAM,YAAW,OAAM,OAAM,OAAM,YAAW,OAAM,YAAW,OAAM,YAAW,OAAM,UAAW,OAAM,YAAW,OAAM,iBAAgB,OAAM,YAAW,OAAM,KAAM,OAAM,YAAW,OAAM,OAAM,OAAM,KAAM,OAAM,eAAgB,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,OAAM,KAAM,OAAM,YAAW,OAAM,KAAM,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,UAAW,OAAM,YAAW,OAAM,OAAM,OAAM,UAAW,OAAM,UAAW,OAAM,YAAW,OAAM,YAAW,OAAM,YAAW,OAAM,UAAW,OAAM,YAAW,OAAM,YAAW,OAAM,UAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,YAAW,OAAM,OAAM,OAAM,OAAM,OAAM,UAAW,MAAK,GAAE,OAAQ,EAAC,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,KAAI,KAAM,KAAI,OAAM,KAAI,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,MAAK,KAAM,MAAK,KAAM,MAAK,KAAM,MAAK,OAAM,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM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G,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,oTAAqD;AAAA,MAC7D,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,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AAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,s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;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IAAK,CACG;AAEV,IAAasB,QAAMtB,OAAO;MACxB;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IAAO,CACC;AAEV,IAAauB,aAAavB,OAAO;MAC/B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IAAc,CACN;AAMV,IAAaiN,gBAAgBjN,OAAO;MAClC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IAAK,CACG;AAEV,IAAawB,WAASxB,OAAO;MAC3B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IAAa,CACL;AAIV,IAAakN,mBAAmBlN,OAAO;MACrC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IAAM,CACE;AAEV,IAAa8I,OAAO9I,OAAO,CAAC,OAAO,CAAU;AC1R7C,IAAahF,OAAOgF,OAAO;MACzB;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IAAO,CACC;AAEV,IAAasB,MAAMtB,OAAO;MACxB;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IAAY,CACJ;AAEV,IAAawB,SAASxB,OAAO;MAC3B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IAAO,CACR;AAED,IAAamN,MAAMnN,OAAO;MACxB;MACA;MACA;MACA;MACA;IAAa,CACL;AC3XV,IAAahE,gBAAgBiB,KAAK,uBAAuB;AACzD,IAAaf,WAAWe,KAAK,uBAAuB;AACpD,IAAad,cAAcc,KAAK,aAAa;AAC7C,IAAab,YAAYa,KAAK,8BAA8B;AAC5D,IAAaZ,YAAYY,KAAK,gBAAgB;AAC9C,IAAaR,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AK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AACzwC,IAAI,WAAW,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT,GAAG;AAAA,QACD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,KAAU,IAAI11C,MAAM,EAAA,GACpB21C,KAAU,IAAI31C,MAAM,EAAA,GACpB41C,KAAW,IAAI51C,MAAM,EAAA,GAMrB61C,KAAU,IAAI71C,MAAM,KAAA,GACpB81C,KAAW,IAAI91C,MAAM,KAAA,GACrB+1C,KAAkB,IAAI/1C,MAAM,EAAA,GAC5Bg2C,KAAK,IAAIh2C,MAAM,EAAA,GACfi2C,KAAU,CAAA,GACVC,KAAU,GACVC,KAAU,GAEVC,KAAM,IAAIp2C,MAAM,EAAA,GAChBq2C,KAAM,IAAIr2C,MAAM,EAAA,GAChBs2C,KAAM,IAAIt2C,MAAM,EAAA,GAChBu2C,KAAM,IAAIv2C,MAAM,GAChBw2C,GAAAA,KAAgB,IAAIx2C,MAAM,IAG1By2C,GAAAA,KAAS,CACX,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EAAA,GAGEC,KAA2B,CAC7B,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,CAEEC,GAAAA,KAA0B,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAC7DC,GAAAA,KAA2B,CAC7B,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GAAA,GAEEC,KAA0B,CAC5B,GACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,KACA,IACA,IACA,KACA,KACA,KACA,GACA,IACA,IACA,KACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,GAGEC,GAAAA,KAA6B,CAC/B,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,CAAA,GAEEC,KAA4B,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAC/DC,GAAAA,KAA6B,CAC/B,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GAAA,GAEEC,KAA4B,CAC9B,GACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,KACA,IACA,IACA,IACA,KACA,GACA,IACA,IACA,KACA,KACA,KACA,KACA,GACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,GAAA;AAuKF,WAASC,GAAkBC,IAASC,IAAAA;AAIlC,aAHIC,KAAY,GACZC,KAAe,GACfC,KAAK,IAAIv3C,SACJpC,KAAI,GAAGA,MAAK,IAAIA,MAAK;AAC5B,eAASuB,KAAI,GAAGA,MAAKg4C,GAAQv5C,EAAAA,GAAIuB,KAC/Bo4C,CAAAA,GAAGH,GAAUE,EAAAA,CAAAA,IAAiB,CAC9BC,GAAAA,GAAGH,GAAUE,EAAAA,CAAAA,EAAe,CAAKD,IAAAA,IACjCE,GAAGH,GAAUE,EAAe,CAAA,EAAA,CAAA,IAAK15C,IACjC05C,MACAD;AAEFA,MAAAA,MAAa;IACf;AACA,WAAOE;EACT;AA0DA,WAASC,GAAUC,IAAAA;AAGjB,aAFI1xC,KAAQ0xC,GAAG,CACXC,GAAAA,KAASD,GAAG,CAAA,IAAK,GACdC,MAAU,IACX3xC,CAAAA,KAAS,KAAK2xC,OAChBxB,MAAW,KAAKC,KAElBuB,MACAvB,EAAAA,KACc,MACG,OAAXD,MACFyB,GAAU,GACVA,GAAAA,GAAU,CAEVA,KAAAA,GAAUzB,EAEZC,GAAAA,KAAU,GACVD,KAA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C1CX,CAAAA,CAAAA,GAAAA,GAAU3B,GAAQsC,EAAAA,CAAAA,GAClBv7C;IACF;AAIA,WAjDU,MA8CN4+C,MACFhE,GAAUY,EAAAA,GAELJ;EACT;AA6HA,WAAS6D,GAAW3G,IAClBA;AAAAA,IAAAA,KAAU3yC,KAAKyZ,IAAIzZ,KAAK8mC,IAAI6L,IAAS,CAAA,GAAI,GAErCK,GAAAA,MAAkBL,QA1qBxB,SAAyB4G,IAoEvB;AAAA,eAnEIC,KAAM,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,EAAA,GAGOn/C,KAAI,GAAGA,KAAI,IAAIA,MAAK;AAC3B,YAAI2B,KAAIi3C,IAAQuG,GAAIn/C,EAAKk/C,IAAAA,KAAK,MAAM,GAAA;AACpCv9C,QAAAA,KAAIgE,KAAKyZ,IAAIzZ,KAAK8mC,IAAI9qC,IAAG,CAAI,GAAA,GAAA,GAC7Bk3C,GAAOgB,GAAO75C,EAAM2B,CAAAA,IAAAA;MACtB;AAmEA,eAlEIy9C,KAAO,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EAAA,GAEO78C,KAAI,GAAGA,KAAI,IAAIA,MAAK;AAC3B,YAAI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B,CAAAA,KAAI;AACTpM,UAAAA,KAAIoM,KAAI,IAAI;QACd;MACF;AACA,aAAI,KAAKpM,MACT,QAAQ+M,MAAKA,GAAEimD,OAAOhzD,KAAI28D,GAAG3vD,EAAAA,IADVhN;IAGrB;AACA,QAAIkuD,KAAK,IACPqB,KAAK,CACH,GACA,GACA,GACA,GACA,IACA,IACA,IACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,SACA,QAAA,GAEFF,KAAK,IACLF,KAAK,IACLO,KAAK,GACLC,KAAK,CACH,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GA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N,IACAf,KACA7I,IACA5D,KACAqO,IACApO,IACAqO,IACAL,IACAzB,IACAnH,IACAsH,IACAU,IACAC,IAIA7H,IACA+B,IACApC,IACA0G,IAz5BApH,KAAKhzB,GAAE,GAAA,GACPizB,KAAKjzB,GAAE,IAAA,GACPw7B,KAAKx7B,GAAE,GAAA,GACPs8B,KAAKt8B,GAAE,GAAA,GACP67B,KAAK,GACLjO,KAAKqF,IACLyG,KAAK8B,IACL3C,KAAIyD,IACJ7rD,KAAIuiD,IACJ/E,KAAK,GACLgG,KAAK,GACLiD,KAAK,GACLhD,KAAK,GACLL,KAAK,GACLxB,KAAK,GACLgF,KAAK,GACL3F,KAAK,GACLC,KAAK,GACLC,KAAK,GACLC,KAAK,IACL+H,KAAK,CAAC,GAAG,GAAG,CAAA,GACZD,KAAK,CAAC,GAAG,GAAG,EACZtE,GAAAA,KAAK,CAAC,KAAK,KAAK,KAAK,KAAK,EAC1ByE,GAAAA,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA,GAClBV,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAA,GACpE3D,KAAK,CACH,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,GACA,KACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,KACA,GACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KACA,IACA,IACA,GACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,IACA,GAEFqD,GAAAA,KAAK,CACH,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IAEFZ,GAAAA,KAAK,GACLyC,KAAK,CACH,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,GAAA,GAEF3K,KAAK,CACH,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IA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,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAErD,CAAA,GAAA,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAErD,CAAA,GAAA,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAGvD,CAAA,CAAA,GAAA,CACE,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAErD,CAAA,GAAA,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAErD,CAAA,GAAA,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAErD,CAAA,GAAA,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAErD,CAAA,GAAA,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAGvD,CAAA,CAAA,GAAA,CACE,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAErD,CAAA,GAAA,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAErD,CAAA,GAAA,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAErD,CAAA,GAAA,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,CAAA,GAGvD,CACE,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAErD,CAAA,GAAA,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAErD,CAAA,GAAA,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,GAErD,CACE,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,GACnD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACnD,GAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,CAAA,CAAA,CAAA,GAIzDE,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA,GAEtDlE,KAAI,CAAA,GACJ1G,KAAI,CACJiB,GAAAA,KAAK,CAAA,GAkBLhoD,KAAK,GACL+sD,MAAK,GACLZ,KAAK,CAKLrnD,GAAAA,KAAI,CAAA;AACNymD,OAAG,uBAAuBkD,IAAI,CAC9BlD,GAAAA,GAAG,uBAAuBqE,IAAI,CAAA,GAC9BrE,GAAG,wBAAwBiB,KAAI,CAC/BjB,GAAAA,GAAG,wBAAwBuE,IAAI,CAAA,GAC/BvE,GAAG,wBAAwBvG,IAAI,CAC/BuG,GAAAA,GAAG,4BAA4ByD,IAAI,CAAA,GACnCzD,GAAG,0BAA0BnE,IAAI,CAAA;AACjC,QAAI4N,MAAKnjE,GAAKilE,qBACZ7B,KAAKpjE,GAAKklE,qBACVxU,KAAK1wD,GAAKmlE,sBACVjH,KAAKl+D,GAAKolE,sBACVzU,KAAK3wD,GAAKqlE,sBACVjL,KAAKp6D,GAAKslE,0BACVjC,KAAKrjE,GAAKulE,wBACV/N,KAAK,IACLD,KAAK,KAAMC,KAAK,GAChBI,KAAAA,MACAC,KAAK,KACLwC,KAAK,GACLiJ,MAAM,OAAOjJ,MAAM,GACnB9J,KAAK,GACL+G,KAAK10B,GAAE,GAAA,GACP+0B,KAAK/0B,GAAE,GAAA,GACP80B,KAAK90B,GAAE,GAAA,GACP60B,KAAK70B,GAAE,GAAA,GACPk1B,KAAKl1B,GAAEi1B,KAAKD,EACZI,GAAAA,KAAKp1B,GAAEi1B,KAAKD,EAAAA;AACdiE,OAAG,eAAee,IAAI,CACtBf,GAAAA,GAAG,eAAekC,IAAI,CAAA,GACtBlC,GAAG,gBAAgBlB,KAAI,CAAA,GACvBkB,GAAG,gBAAgBoC,IAAI,CAAA,GACvBpC,GAAG,gBAAgB1I,IAAI,CACvB0I,GAAAA,GAAG,oBAAoBsB,IAAI,CAAA,GAC3BtB,GAAG,kBAAkBtG,IAAI,CACzB;AAAA,QAAIyI,KAAK,CACL,GACA,GACA,GACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,GAEFpF,GAAAA,KAAK,CAAC,GAAG,GAAG,CAAA,GACZ4M,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CACvCC,GAAAA,KAAK;AACPxlE,SAAKylE,iBAAiB,SAAShjE,IAAGoM,IAAGW,IAAGC,IAAGjO,IAAAA;AACzC,UAAImiB,KAAIizC,IACJhoD,KAAI,IAAI4zD,MACVv9C,KAAI,IAAIiwC;AACVtmD,MAAAA,GAAEqnD,KAAKhxC,IACPA,GAAEkwC,IAAIxxC,IACNsB,GAAEoF,QAAQ,CAACpF,GAAEoF,KACbpF,GAAAA,GAAEqF,SAAS,CAACrF,GAAEqF,MACd;AAAA,UAAI/a,KAAI0V,GAAEoF,OACNoC,KAAIxH,GAAEqF,QACRyH,KAAI,IAAIwjC;AACV,UAAI,QAAQxjC,MAAK,QAAQtvB,GAAG,KAAI2N,KAAI;UAElCd,CAAAA,GAAE,QAAQyiB,EACP3hB,GAAAA,KAAIsuD,GAAGj8D,IAAGoM,IAAGW,IAAGuiB,GAAE1H,OAAO0H,GAAEzH,QAAQyH,GAAEiiC,IAAIjiC,GAAEkiC,IAAIliC,GAAExb,QAAQ,IAM9D;AAAA,UALA,KAAKnG,KACAb,KAAI,KACJ,QAAQA,OAAMA,GAAE,CAAA,IAAKwiB,GAAE1H,MAAM,CAAA,IAC9B,QAAQoC,OAAMA,GAAE,CAAA,IAAKsF,GAAEzH,OAAO,CAAA,IAC7B/a,KAAI,IACLA,IAAG;AACL0V,QAAAA,GAAEoF,QAAQpF,GAAEoF,MAAM,CAAA,GAClBpF,GAAEqF,SAASrF,GAAEqF,OAAO,CAAA,GACpB,QAAQ7a,OAAMA,GAAE,CAAKwV,IAAAA,GAAEoF,QACvB,QAAQ7oB,OAAMA,GAAE,CAAKyjB,IAAAA,GAAEqF;AACvBzb,WAAG;AAYD,cAXAY,KAAI,IAAIynD,QACR11D,KAAI,IAAIk3D,MACNnnD,OAAO9O,IACTjB,GAAEwjB,IAAInW,IACNrN,GAAE+2D,KAAK/oD,IACPhO,GAAEqgE,KAAK,GACPhzD,KAAI,CAAC,CAAA,GACLS,GAAE,QAAQ9N,EAAAA,IAET,MADDiB,KAAIi8D,GAAGl9D,GAAE+P,MAAM/P,GAAEwjB,GAAGxjB,GAAE+2D,IAAI,MAAM,MAAM,MAAM1pD,IAAG,MAAMrN,EAC1C,MAAA,KAAKiB,OAAMoM,GAAE,CAAA,MAAOpM,KAAI,IAE/B,MADJoM,KAAIpM,KACQ;AASV,gBARA6M,GAAE,QAAQV,EAAAA,GACVa,GAAE8B,OAAO/P,GAAE+P,MACX9B,GAAEuV,IAAIxjB,GAAEwjB,IAAIxjB,GAAEopB,QACdnb,GAAE8oD,KAAK/2D,GAAE+2D,KAAK/2D,GAAEopB,QAChBnb,GAAE+vD,MAAMrzB,KACR18B,GAAEqjD,KAAK6D,KACPlnD,GAAEsjD,KAAKkF,KACPxoD,GAAEwgD,KAAKrhD,IACHpN,GAAEwxD,IAAI;AAER,kBAAI,SADJvwD,KAAIs4D,IAAAA,IACW;AACbnsD,gBAAAA,KAAI;AACJ,sBAAMC;cACR;AACA,mBA1mHV,SAAYpM,IAAGoM,IAAAA;AACb,oBAAIW,KAAI,CAAC,CAAA,GACPC,KAAI,CAAC,CAAA,GACLjO,KAAI,CAAC,CACPiB;AAAAA,kBAAG,YAAS;AACV,sBAAI,QAAQA,GAAG,QAAO;AACtB,sBAAI,QAAQoM,GAAG,QAAQpM,GAAEA,IAAI,GAAI;AAIjC,sBAHAA,GAAEgqB,IAAI5d,IACNpM,GAAEA,IAAI,GACN8uD,GAAG9uD,GAAEsvB,GAAGljB,GAAE0C,MAAM1C,GAAEmW,GAAGnW,GAAE0pD,EAClBL,GAAAA,CAAAA,IAAGz1D,GAAEsvB,GAAGviB,IAAGC,IAAGjO,EAAI,GAAA;AACrBiB,oBAAAA,GAAEA,IAAI;AACN,0BAAMA;kBACR;AAIA,sBAHAA,GAAEkuD,KAAKsK,KACPpsD,GAAEwb,QAAQ7a,GAAE,CAAA,GACZX,GAAEyb,SAAS7a,GAAE,CACR6rD,GAAAA,CAAAA,IAAG9rD,GAAE,CAAIC,GAAAA,GAAE,CAAA,GAAI,GAAGhN,IAAG,IAAO,EAAA,OAAMA;AACvC,yBAAO;gBACT;AAEA,uBADA6M,GAAE,KAAK7M,GAAEA,CACF,GAAA;cACT,GAolHiBA,IAAGgN,EAAAA,GAAI;AAEZ,oBAAKA,KAAI,MADTZ,KAAIimD,GAAGrlD,GAAE4a,OAAO5a,GAAE6a,QAAQ1b,GAAEsoD,IAAItoD,GAAEqnD,EAAAA,IAChB;AAChBzmD,qBAAG;AACDC,oBAAAA,KAAIhN;AACJgN,sBAAG,YAAS;AACV,0BAAI,QAAQA,IAAG;AACbA,wBAAAA,KAAI;AACJ,8BAAMD;sBACR;AAQA,0BAPAF,GAAE,QAAQG,GAAEQ,EAAEgqD,EAAAA,GACd3qD,GAAE,QAAQG,GAAEQ,EAAE0oD,EAAAA,GACdrpD,GAAE,IAAIG,GAAEQ,EAAEgiD,EAEV3iD,GAAAA,GAAE,SADFE,KAAIC,GAAEgd,EAGNnd,GAAAA,GAAE,SADF9N,KAAIgO,GAAEygD,GAAAA,GAEF,KAAKxgD,GAAEkhD,IAAI;AAIb,4BAHAlhD,GAAE6hD,KAAK9vD,GAAEy0D,IACTxmD,GAAE6qD,KAAK94D,GAAE84D,IACThrD,GAAE,QAAQG,GAAE6hD,EACP2F,GAAAA,CAAAA,GAAGz1D,GAAE01D,IAAI1nD,IAAGqnD,EAAK,GAAA;AACpBpnD,0BAAAA,GAAEhN,IAAI;AACN,gCAAMgN;wBACR;AACA,4BAAKotD,CAAAA,IAAGptD,IAAGD,GAAE6a,KAAAA,EAAQ,OAAM5a;AAC3B,4BAAID,GAAE0jB,GAAI,OAAMzjB;AAKhB,6BAJCD,GAAE0jB,MAAMkhC,IAAG3kD,GAAE6hD,GAAG6D,CAAOiC,MAAAA,GAAAA,GACxB,KAAK3nD,GAAE6hD,GAAG6D,MACPnjC,MAAM,+BAAA,GACP,QAAQviB,GAAE6hD,GAAG3tC,EAAE0xC,GAAG3tB,KAAK0vB,GAAAA,IAEvB3nD,GAAEgrD,MACF,IAAIhrD,GAAEQ,EAAEooD,MACR,QAAQ5oD,GAAEQ,EAAE2qD,GAAGlI,KAAAA,CACdD,GAAGhjD,GAAEQ,EAAE2qD,IAAInrD,GAAEQ,EAAEsnD,GAAG3E,EAAAA,GACnB;AACAnjD,0BAAAA,GAAEhN,IAAI;AACN,gCAAMgN;wBACR;AACAA,wBAAAA,GAAEkhD,KAAK;sBACT;AACA,0BAAA,CAAKqG,IAAGvnD,IAAGA,GAAEkzB,GAAGlzB,GAAE6nD,IAAI7nD,GAAED,GAAGC,GAAElB,GAAGiB,GAAEw+C,GAAGwL,GAAAA,EAAK,OAAM/pD;AAChDjO,sBAAAA,GAAEw2D,KAAKvoD,GAAEiqD,IACTjqD,KAAI;AACJ,4BAAMD;oBACR;AACAF,oBAAAA,GAAE,KAAKG,GAAEhN,CAAAA,GACTgN,KAAI;kBACN;AACAA,kBAAAA,KAAAA,CAAKA;gBACP;AACAA,gBAAAA,OAAMZ,KAAIpM,GAAEA;cACd,MAAOoM,CAAAA,KAAIpM,GAAEA;YACf,OAAO;AAEL,kBAAI,SADJA,KAAI,IAAIg9D,QACO;AACb7wD,gBAAAA,KAAI;AACJ,sBAAMC;cACR;AAIA,kBAHApM,GAAEq5D,KAAKt6D,GAAE4vD,IACT3uD,GAAEuQ,IAAIxR,GAAEwR,GACRvQ,GAAE42D,KAAK73D,GAAE0wD,IACL8M,IAAGv8D,IAAGgN,EAAAA,GAAAA;AACR,oBAA8C,MAAxCZ,KAAIimD,GAAGrlD,GAAE4a,OAAO5a,GAAE6a,QAAQ1b,GAAEsoD,IAAItoD,GAAEqnD,EAAAA,IAAe;AAKrD,sBAJAxzD,GAAE20D,KAAK,GACP5nD,KAAIZ,GAAEsoD,IAEN5nD,GAAE,SADF9N,KAAIiB,GAEA,GAAA,QAAQ+M,IAAG;AAGb,wBAAI,KADJD,KAAI,KADJA,KAAIC,GAAEqkD,MACM,IAAI,MAAMtkD,KAAI,MAAO,MAAMA,KAAK,MACjC;AACT,2BAAKkd,KAAIsF,KAAI,GAAG,IAAItF,IAAKA,EAAAA,GAErB,OADDrc,KAAI5O,GAAEuwD,GAAGtlC,EAAAA,GACDwrC,OACJ7nD,GAAEiqD,KAAM9qD,KAAIg2D,GAAG,IAAIn1D,GAAE6nD,KAAK,IAAI7nD,GAAE6nD,EAAAA,KAAQ,IAC1ClmC,MAAK3hB,GAAEiqD;AACZtoC,sBAAAA,OAAMC,MAAM,oBAAwBxwB,GAAAA,GAAE64D,KAAK;oBAC7C;AACA74D,oBAAAA,GAAEm7D,KAAKntD,GAAE4iD,IACT,MAAM5wD,GAAEm7D,KAAMn7D,GAAEm7D,KAAK,MAAO,IAAIn7D,GAAEm7D,OAAOn7D,GAAEm7D,KAAK;kBAClD;AAAA,mBAplGd,SAAYl6D,IAAGoM,IACb;AAAA,wBAAI,QAAQpM,GAAG,QAAO;AACtB,wBAAI,QAAQoM,GAAG,QAAOknD,IAAEtzD,IAAG,GAAG,sCAAA;AAC9B,wBAAKA,CAAAA,GAAE8uD,MAAOyN,CAAAA,IAAGv8D,IAAGoM,EAAI,EAAA,QAAO;AAE/B,wBADAS,GAAE7M,GAAE8uD,EAAAA,GACA,QAAQ1iD,GAAEikD,MAAMjkD,GAAEikD,GAAGjkD,EAAAA,GAAI;AAC3BA,sBAAAA,GAAE+iD,OAAOnvD,GAAEgtD,IAAI;AACf,0BAAIjgD,KAAImpD,GAAGl2D,GAAEgtD,CAAAA;AAWb,0BAVA,KAAKhtD,GAAEgtD,KACDhtD,GAAEwwD,KAAK,GAAKxwD,GAAE4xD,KAAK,MACnB5xD,GAAEwwD,KAAMpkD,GAAEyD,IAAI9C,MAAM,GACrB/M,GAAE4xD,KAAMxlD,GAAEiC,IAAItB,MAAM,GACrB,IAAI/M,GAAEwwD,OAAOxwD,GAAEwwD,KAAK,IACpB,IAAIxwD,GAAE4xD,OAAO5xD,GAAE4xD,KAAK,KACxB5xD,GAAEo0D,KAAMhoD,GAAEm/C,IAAI,KAAKx+C,MAAM,GACzB/M,GAAEs3D,KAAMlrD,GAAE4qD,KAAK,KAAKjqD,MAAM,GAC1B/M,GAAEs3D,KAAKt3D,GAAEi0D,OAAOj0D,GAAEs3D,KAAKt3D,GAAEi0D,KACzBj0D,GAAEo0D,KAAKp0D,GAAE2tD,OAAO3tD,GAAEo0D,KAAKp0D,GAAE2tD,KACrB,IAAI3tD,GAAEgtD,GAAG;AACX,4BAAIhgD,KAAIhN,GAAEw8D;AACV,6BAAKzvD,KAAI,GAAG,IAAIA,IAAAA,EAAKA,IAAG;AACtB,8BAAIhO;AACJ,8BAAIiB,GAAE0uD,GAAG+D,IAAI;AACX,gCAAIvxC,KAAIlhB,GAAE0uD,GAAGmM,GAAG9tD,EAChB/M;AAAAA,4BAAAA,GAAE0uD,GAAGmI,OAAO31C,MAAKlU,GAAEquD;0BACrB,MAAOn6C,CAAAA,KAAIlU,GAAEquD;AACb,+BAAKt8D,KAAI,GAAG,KAAKA,IAAKA,EAAAA,IAAG;AACvB,gCAAIoN,KAAInM,GAAE48D,GAAG7vD,EAAAA,EAAGhO,EAAAA,GACdyjB,KAAItB;AAGN,gCAFAlU,GAAEmuD,OAAQ34C,MAAKxV,GAAEuuD,GAAG,CAAKx8D,GAAAA,OAAMyjB,MAAKxV,GAAEwuD,GAAG,CAErC,KAAA,KADJh5C,KAAI,IAAIA,KAAI,IAAI,KAAKA,KAAI,KAAKA,KACnB;AACT,kCAAI1V,KAAI0V;AACR,kCAAIxV,GAAEouD,OACFtuD,KAAI,IAAIE,GAAEouD,KAAKtuD,MAAK,IAAIA,MAAK,KAC3B,IAAIE,GAAEouD,OAAOtuD,KAAI,IAAIE,GAAEouD,KAC7B,IAAItuD,OAAMA,KAAI,IACdX,GAAEuvD,KAAK5uD,IACPX,GAAEirD,KAAK,IAAI50C,KAAI1V,IACfX,GAAEsvD,KAAK,MAAMj5C,KAAI,IAAI,MAAMA,KAAI,IAAI;4BACrC,MAAOrW,CAAAA,GAAEirD,KAAK;AACdjrD,4BAAAA,GAAEqtD,KAAKz6D;0BACT;wBACF;sBACF;AACAgO,sBAAAA,KAAI;oBACN,MAAOumD,CAAAA,IAAEtzD,IAAG,GAAG,oBAAA,GAAwB+M,KAAI/M,GAAEA;AAC7C,wBAAK+M,KAAI,KAAKA,IAAI;AAChB,0BAAIA,IAAG;AACL/M,wBAAAA,GAAEy8D,KAAK,GACP,IAAIz8D,GAAE20D,OAAO30D,GAAEq8D,KAAK0G;AACpB32D,2BAAG;AACDW,0BAAAA,KAAI/M,GAAEq8D,IAEJrvD,KAAI,KADFF,KAAI9M,GAAEi0D;AAAV,8BAEEjqC,KAAI,KAAKld,IACTwiB,KAAIxiB,KAAI,GACRa,KAAI,IAAI3N,GAAEgtD,IAAIlgD,MAAK,IAAI9M,GAAE20D,KAAK,IAAI,KAAK,GACvCzoD,MAAK,KAAKlM,GAAE20D,KAAK,IAAI,KAAK7nD;AAI5B,+BADAX,KAAIa,KAAI,OAFRjO,KAAM,KAAK,KAAKgO,KAAImpD,GAAGl2D,GAAEgtD,CAAO,KAAA,IAAKhjC,OACrC9I,KAAI,QAAQlhB,GAAEq5D,MAAM,IAAIr5D,GAAEq5D,GAAGttD,SAAS/L,GAAEu8D,GAAGxvD,IAAI/M,GAAEu8D,GAAGzwD,IAAI,OAE/CK,GAAGY,CAAAA,KAAI;+BACX;AACH,gCAAIZ,KAAInM,GAAEkvD,IAAI;AAIZ,kCAHAlvD,GAAEkvD,KAAK,GACPlvD,GAAEo6D,KAAKl6B,GAAE/zB,EAAAA,GACTnM,GAAEs6D,KAAK,GACH,QAAQt6D,GAAEo6D,IAAI;AAChBrtD,gCAAAA,KAAIumD,IAAEtzD,IAAG,GAAG,wCACZ;AAAA,sCAAMoM;8BACR;AACApM,8BAAAA,GAAEkvD,KAAK/iD;4BACT;AACAA,4BAAAA,KAAInM,GAAEo6D,IACN53C,KAAIxiB,GAAEs6D,IACNt6D,GAAEq4D,KAAKlsD,IACPnM,GAAEs4D,KAAK91C,IACPA,MAAKxV,IACLhN,GAAEqvD,KAAK/B,GAAGtjC,IAAGqyC,GACbr8D,GAAAA,GAAEuvD,KAAK,GACPvvD,GAAE64D,KAAKvL,GAAGh+B,KAAI,GAAGqsC,GAAAA,GACjB37D,GAAEu5D,KAAK,GACPv5D,GAAEstD,KAAK3/C,KAAI2/C,GAAG3/C,IAAGwiD,GAAAA,IAAM,MACvBnwD,GAAEk5D,IAAI,GACNl5D,GAAEkpC,EAAEkzB,KAAK,GACTp8D,GAAEkpC,EAAEokB,KAAKttD,GAAEstD,IACXttD,GAAEkpC,EAAEgwB,IAAIl5D,GAAEk5D,GACV,IAAIl5D,GAAE20D,OAAO30D,GAAEkpC,EAAEgwB,KAAKpsD,KACtBD,GAAAA,IAAE,GACF7M,GAAEm2D,KAAKhqD,IACPnM,GAAEq2D,KAAK7zC,IACPA,MAAK,KACLxiB,GAAE+zD,KAAKzG,GAAGphD,IAAG8nD,GAAAA,GACbh0D,GAAE4wD,KAAK,GACP5wD,GAAEkpC,EAAE6qB,KAAK/zD,GAAE+zD,IACX/zD,GAAEkpC,EAAE0nB,KAAK5wD,GAAE4wD,IACX,KAAK5wD,GAAE20D,OAAO30D,GAAEkpC,EAAE0nB,MAAM9jD,KACxB9M,GAAE+4D,IAAI,KAAKjsD,IACX9M,GAAEw2D,IAAI,IAAI1pD,IAEVA,MADAkd,KAAIksC,GAAGl2D,GAAEgtD,CAAAA,KACDhtD,GAAE+4D,GACV/uC,KAAKA,KAAI,IAAKhqB,GAAEw2D,GAChBx2D,GAAEyxB,KAAKtlB,IACPnM,GAAEk1D,KAAK1yC,KAAI1V,IACX9M,GAAEi5D,KAAKj5D,GAAEyxB,IACTzxB,GAAE4vD,KAAK5vD,GAAEk1D,KAAK,KAAKnoD,KAAI/M,GAAE+4D,IAAI/uC,IAC7BhqB,GAAE+vD,KAAK/vD,GAAEi5D,IACTj5D,GAAE8wD,KAAK9wD,GAAE4vD,KAAK,IAAI7iD,KAAI/M,GAAEw2D,IAAIxsC,IAC5BhqB,GAAEy8D,KAAK,GACPj6C,MAAKzjB,IACLiB,GAAE45D,KAAK14C,KAAI/U,KAAI,MACfnM,GAAE+5D,KAAK74C,KAAIsB,KAAI,MACf3V,GAAE2V,KAAItB,MAAKlhB,GAAEs6D,KAAKt6D,GAAEkvD,EACpBqO,GAAAA,IAAGv9D,EAAAA,GACHqtD,GAAErtD,GAAEq4D,IAAIr4D,GAAEs4D,IAAI,GAAGtrD,EAAAA,GACjBD,KAAI;0BACN;wBACF;AACA,4BAAIA,IAAG;AAYL,8BAXAX,GAAEqnD,KAAK,GACPrnD,GAAEmN,IAAIvZ,GAAEyxB,IACRrlB,GAAEiE,IAAIrQ,GAAEk1D,IACR9oD,GAAE8U,IAAIlhB,GAAEi5D,IACR7sD,GAAE28B,IAAI/oC,GAAE4vD,IACRxjD,GAAE+lD,KAAKnyD,GAAE+vD,IACT3jD,GAAEinD,KAAKrzD,GAAE8wD,IACT1kD,GAAE2gD,KAAK/sD,GAAE+4D,GACT3sD,GAAEynD,KAAK7zD,GAAEw2D,GACTpqD,GAAE64B,IAAI,MACN74B,GAAE6gD,IAAI,GAAA,CACD8O,IAAI;AACP,iCAAKhvD,KAAK,MAAK,OAAOA,IAAKA,EAAAA,GAAGmmD,IAAG,MAAMnmD,EAAAA,IAAK,IAAIA,KAAAA,CAAKA,KAAIA;AACzD,iCAAKA,KAAAA,OAAW,QAAQA,IAAAA,EAAKA,GAC3BomD,IAAG,OAAOpmD,EAAAA,IAAAA,OAAYA,KAAK,OAAM,MAAMA,KAAI,MAAMA;AACnD,iCAAKA,KAAK,MAAK,OAAOA,IAAKA,EAAAA,GACzB2uD,IAAG,MAAM3uD,EAAAA,IAAAA,MAAWA,KAAK,MAAK,KAAKA,KAAI,KAAKA;AAC9C,iCAAKA,KAAAA,MAAU,OAAOA,IAAAA,EAAKA,GACzByvD,IAAG,MAAMzvD,EAAAA,IAAK,IAAIA,KAAI,IAAI,MAAMA,KAAI,MAAMA;AAC5CgvD,iCAAK;0BACP;AACApI,+BAAKkK,KACLpE,KAAKgE,KACLrB,KAAKsB,KACLpP,KAAKqP,KACL3B,KAAK4B,KACL5K,KAAKwK,KACLvC,MAAKsE,IACLnN,KAAKoN,IACLhR,MAAKmR,IACL9C,KAAK+C,IACLnR,KAAKgR,IACL3C,KAAK4C,IACLjD,KAAKoD,IACL7E,KAAK8E,IACLjM,KAAK+I,IACLzB,KAAKzK,IACLmL,KAAKwD,IACLvD,KAAKwD,IACL9M,GAAE,CAAK+L,IAAAA,KACP/L,GAAE,CAAKsL,IAAAA,KACPtL,GAAE,CAAA,IAAKvlD,KACPulD,GAAE,CAAA,IAAK8L,KACP9L,GAAE,CAAA,IAAKgM,KACPhM,GAAE,CAAKkM,IAAAA,KACPlM,GAAE,CAAKiM,IAAAA,KACPjM,GAAE,CAAKmM,IAAAA,KACPnM,GAAE,CAAKqM,IAAAA,KACPrM,GAAE,CAAA,IAAKoM,KACP1F,GAAE,CAAA,IAAKiF,KACPjF,GAAE,CAAA,IAAK8E,KACP9E,GAAE,CAAA,IAAK+E,KACP/E,GAAE,CAAA,IAAKgF,KACPhF,GAAE,CAAA,IAAKlO,KACPkO,GAAE,CAAA,IAAKkF,KACPlF,GAAE,CAAKmF,IAAAA,KACP5K,GAAG,CAAKuL,IAAAA,IACRvL,GAAG,CAAA,IAAKsK,KACRtK,GAAG,CAAA,IAAKqL,KACRrL,GAAG,CAAA,IAAKsL,KACRtL,GAAG,CAAA,IAAKyL,IACRzL,GAAG,CAAA,IAAKwL,IACRxL,GAAG,CAAK0L,IAAAA,IACRpyD,KAAI;wBAAA,MACCA,CAAAA,KAAI;sBACb;AACAA,sBAAAA,OAAMA,MA5bV,SAAY/M,IAAGoM,IAAAA;AACb,6BAAKpM,GAAEqtD,IAAI,GAAGrtD,GAAEqtD,IAAIrtD,GAAEo0D,IAAMp0D,EAAAA,GAAEqtD,GAAG;AAC/B,8BAGEnsC,IAHEnU,KAAI/M,GAAE08D,GAAG18D,GAAEqtD,IAAIrtD,GAAE0vD,EACnB1iD,GAAAA,KAAIhN,GAAEsvB,GACNvwB,KAAIiB;AAEN,+BAAKkhB,KAAI,GAAGA,KAAIniB,GAAEk1D,IAAM/yC,EAAAA,IAAG;AACzB,gCAAI/U,KAAIa,IACJwV,KAAIzjB,IACJ+N,KAAI0V,GAAE61C,IACRruC,KAAIxH,GAAE81C,KAAK,IAAIp3C,IACfoO,KAAI9M,GAAEi1C,IACN9pD,KAAI6U,GAAEuxC,GAAGvxC,GAAEouC,KAAK1vC,EAQlB;AAAA,gCAPAsB,GAAEksC,GAAGqD,KACApkD,GAAEyiD,KAAKxB,GAAEziD,IAAGqW,GAAEy3C,GAAGN,GAAG,CAAA,CAAA,IACjB,IAAI/K,GAAEziD,IAAGqW,GAAEy3C,GAAGN,GAAG,CAAA,CAAA,IACjB/K,GAAEziD,IAAGqW,GAAEy3C,GAAGN,GAAG,CAAA,CAAA,IAChBhsD,GAAEyiD,KAAK,GACZ5tC,GAAEknB,OAAO/7B,GAAEsuD,KAAKrN,GAAEziD,IAAGqW,GAAEm6C,EAAAA,IACvBhvD,GAAE8rD,KAAM7K,CAAAA,GAAEziD,IAAG,GAAA,IAAO,GAChBwB,GAAE8rD,IAAI;AACR,kCAAIvtD,KAAIyB,GAAEquD,IACRzuD,KAAI;AACN,mCAAKiV,KAAI,GAAG,IAAIA,IAAKA,EAAAA,IAAG;AACtB,oCACI3S,IADApC,KAAI6hB,GAAE,IAAI9M,EAEd;AAAA,qCAAK3S,KAAI,GAAG,IAAIA,IAAAA,EAAKA,IAAG;AACtBpC,kCAAAA,KAAI60D,GAAGx1D,GAAEkd,KAAIna,EAAAA,CAAAA,EAAIpC,EAAAA;AACjB,2CAASgF,KAAIihD,GAAG9E,GAAEziD,IAAGsB,GAAE,CAAA,CAAA,CAAA,GAAM,IAAIgF,KAC/BA,CAAAA,KAAIihD,GAAG,IAAIjhD,KAAIm8C,GAAEziD,IAAGsB,GAAEgF,EAAAA,CAAAA,CAAAA;AACxBhF,kCAAAA,KAAKgF,CAAAA,IACL3F,GAAEkd,KAAIna,EAAAA,IAAKpC;gCACb;AACA0/C,gCAAAA,GAAEjhD,IAAGqB,IAAGT,IAAGkd,IAAG,CAAA,GACdzc,MAAK,GACL+hB,GAAE,IAAI9M,EAAK/U,IAAAA;8BACb;4BACF,MACGA,CAAAA,KAAImhD,GAAEziD,IAAG,GAAA,IAAQyiD,GAAEziD,IAAG,GAAA,IAAO,IAAI,IAAKyiD,GAAEziD,IAAG,GAAA,IAAO,IAAI,GACpDwB,GAAEquD,GAAG,CAAA,IAAKvuD,IACX4/C,GAAEvgD,IAAGkd,IAAGvc,IAAG,CACX4/C,GAAAA,GAAE/9B,IAAG,GAAG7hB,IAAG,CAAA;AACfE,4BAAAA,GAAEuuD,KAAKtN,GAAEziD,IAAG,GAAA,IAAQyiD,GAAEziD,IAAG,GAAA,IAAQyiD,GAAEziD,IAAG,GAAA,IAAO,IAAI,IAAK,IAAK;0BAC7D;AACA,8BAAIpN,GAAEuwB,EAAE8+B,GAAI,QAAOkF,IAAEtzD,IAAG,GAAG,0CAC3B;AAAA,iCAAOA,GAAEo5D,KAAKp5D,GAAEi0D,IAAMj0D,EAAAA,GAAEo5D,IAAI;AAM1B,gCAJAr6D,KAAIgO,IACJZ,MAFAa,KAAIhN,IAEE64D,GAAG7rD,GAAEusD,KAAK,CAAA,GAChBzsD,KAAIE,GAAE6rD,GAAG7rD,GAAEusD,KAAKvsD,GAAEosD,EAAAA,GAClBl4C,KAAIlU,GAAE+mD,GAAG/mD,GAAE4jD,KAAK5jD,GAAEosD,EACbpvC,GAAAA,KAAIhd,GAAE08B,KAAKxoB,GAAE+6C,KAAK,EACpB9vD,CAAAA,GAAEgtD,KAAKrsD,GAAEqsD,KAAK,GACbj4C,GAAEu4C,OAAOttD,GAAEguD,KAAKrtD,GAAEqtD,KAAK,IACtBj5C,GAAEy6C,KAAK,GACPz6C,GAAE45C,KAAK,GACP55C,GAAE02C,KAAK;iCACP;AACH,kCAAIzM,IACF5oC;AAWF,kCAVEpW,KAAIW,IACJA,KAAI/N,IACJirB,KAAIhd,GAAEitD,GAAGgB,IACT3rC,KAAItiB,GAAE+mD,GAAG/mD,GAAE4jD,KAAK5jD,GAAEosD,EAAAA,GAClBzrD,KAAIX,GAAEsiD,GAAGhgC,GAAE8gC,EACb5tC,GAAAA,KAAI8M,GAAEysC,IACN7vD,KAAI,GACJqB,KAAIP,GAAE6rD,GAAG7rD,GAAEusD,KAAK,CAAA,GAChB9rD,KAAIoC,KAAI,GACRw9C,GAAE7qC,IAAGtW,IAAG,GAAG,GAAA,GACPojB,GAAEmqC,GACJ,KAAIlgD,KAAI,GACJ04C,KAAIjoC,GAAE,CAAA;mCACL;AACLvX,gCAAAA,KAAIytB,GAAE,EAAA;AACN,oCAAIq2B,KAAIpqD,GAAEguD,KAAK5sD,GAAE4sD;AAGjB,oCAFA5D,KAAIlI,GAAGvhD,IAAGkd,GAAE,CAAIusC,GAAAA,IAAG5oD,GAAEwnD,IAAI,GAAG1iD,IAAG,CAAA,GAC/BtG,GAAEguD,KAAK5sD,GAAE4sD,MAAM,IAAI5D,MAAK,GACpB,IAAIA,GAAG5C,IAAGlhD,IAAG,GAAG+P,IAAGtW,EAAAA;qCAClB;AACH,sCAAIsqD,KAAK/jD,GAAE,CAAA,IAAK,KAAM;AACtB,uCAAKA,KAAI,GAAG,MAAMA,IAAGA,MAAK,GAAI+P,CAAAA,GAAEtW,KAAIuG,EAAAA,IAAK+jD;gCAC3C;AACAj9C,gCAAAA,KAAI,GACJ04C,KAAIjoC,GAAE,CACR;8BAAA;AACA,kCAAIosC,KAAW,KAAPjqD,GAAEgtD,IACNpwB,KAAW,KAAPx7B,GAAE4rD;AACV,mCAAK1mD,KAAI,GAAG,IAAIA,IAAAA,EAAKA,IAAG;AACtB,oCAAIgkD,KAAQ,IAAJ1tB;AACR,qCAAKytB,KAAIj0C,KAAI,GAAG,IAAIi0C,IAAKA,EAAAA,GAIpBJ,CAAAA,KAAKA,MAAK,KADVK,MADAF,KAAIlI,GAAGvhD,IAAGmlD,IADZsE,KAAIE,MAAS,IAAJL,KACSzoD,GAAEkuD,IAAItiD,IAAGiJ,IAAGtW,EAAAA,KACpBqN,OACa,GACrBgJ,KAAKA,MAAK,KAAM,IAAIg0C,KAAI,IAAI,IAAIA,KAAI,IAAI,KAAK/zC,GAAEtW,KAAI,CAAA,IACnDA,MAAK;AACVkqD,gCAAAA,OAAM,GACNrtB,KAAKA,MAAK,IAAM0tB,MAAK,GACrB5mD,MAAMA,MAAK,IAAK0S,QAAO;8BACzB;AAGA,mCAFA0vC,KAAImE,IACJ78C,KAAIwvB,MAAK,GACJoiB,KAAI,GAAG,IAAIA,IAAGA,MAAK,GAAG;AAIzB,qCAHA5oC,KAAI,GACJ6zC,KAAIjqD,GAAEgtD,MAAO,IAAIhO,IACjBpiB,KAAIx7B,GAAE4rD,MAAO,IAAIhO,IACZ14C,KAAI,GAAG,IAAIA,IAAKA,EAAAA,IAAG;AAEtB,uCADAgkD,KAAQ,IAAJ1tB,IACCytB,KAAI,GAAG,IAAIA,IAAAA,EAAKA,GAClBD,CAAAA,KAAIE,MAAS,IAAJL,KAGPA,KAAKA,MAAK,KADVK,KAAI,KADJF,KAAIlI,GAAGvhD,IAAGkd,GAAE,CAAA,GAAIusC,IAAG5oD,GAAEmuD,IAAI,GAAGt5C,IAAGtW,EAAAA,OAEV,GACrBqW,KAAKA,MAAK,KAAM,IAAIg0C,KAAI,IAAI,IAAIA,KAAI,IAAI,KAAK/zC,GAAEtW,KAAI,CACnDA,IAAAA,MAAK;AACVkqD,kCAAAA,OAAM,GACNrtB,KAAKA,MAAK,IAAM0tB,MAAK;gCACvB;AACAhpD,gCAAAA,MAAK8U,MAAM,IAAI4oC,IACf8G,MAAMmE,MAAK,KAAMjL,IACjB5xC,OAAU,MAAJwvB,OAAYoiB;8BACpB;AACAh/C,8BAAAA,GAAEgtD,KAAKlH,IACP1kD,GAAE4rD,KAAK5/C,IACP+V,GAAEqsC,KAAK9rD,IACPyf,GAAEwrC,KAAKrtD,IACP6hB,GAAEsoC,KAAS,QAAJnqD,KAAY,IAAIE,GAAEiqD,IACzB5tC,KAAMna,EAAAA,KAAIpC;4BACZ;AAIA,gCAHA,IAAIT,GAAEggD,MACFhgD,GAAEsgD,GAAGtgD,GAAEksD,IAAIlsD,GAAEosD,EAAAA,IAAMpsD,GAAE4vD,GAAG17C,GAAEkvC,EAAIlvC,EAAAA,GAAEu4C,EAAAA,GACjCzsD,GAAEsgD,GAAGtgD,GAAEksD,IAAIlsD,GAAEosD,EAAII,EAAAA,MAAAA,CAAOxvC,KACvBjrB,GAAEqvD,GAAI,QAAOkF,IAAEtzD,IAAG,GAAG,oCAAA;0BAC3B;AAOA,8BANAu9D,IAAGv9D,EAEHgN,GAAAA,KAAIZ,IACJrN,KAAI,GACJmiB,MAHAnU,KAAI/M,IAGEkpC,GACN/8B,KAAI,IAAIY,GAAEigD,KAAKjgD,GAAEsgD,KAAKtgD,GAAE6kD,MAAM7kD,GAAEsgD,KAAKtgD,GAAEqnD,IACnC,KAAKrnD,GAAE4nD,GACT30D,IAAG;AAmBD,gCAlBCkhB,GAAEmsC,IAAItgD,GAAEsgD,GAAKnsC,GAAEm2C,KAAKlrD,IAAI2sD,GAAG/rD,IAAGmU,EAAAA,GAAKniB,KAAI,GAExCmiB,MADAqB,KAAIxV,GAAEm8B,GACAkzB,IAENjwD,MADAsB,KAAIyoD,GAAGnpD,GAAEigD,CACDjgD,KAAAA,GAAEgsD,GACVjsD,KAAKW,KAAI,IAAKV,GAAEypD,GAChB/jD,KAAI,KAAKyO,KAAInU,GAAEgsD,GACfvC,KAAI,IAAIt1C,KAAInU,GAAEypD,GACdxsC,KAAIjd,GAAE0kB,IACNnC,KAAIviB,GAAEmoD,KAAK/oD,KAAIsG,IACf9E,KAAIZ,GAAEksD,IACNz2C,KAAIzV,GAAE6iD,KAAK9iD,KAAI0pD,IACftqD,KAAIa,GAAEgjD,IACNxiD,KAAIR,GAAE+jD,KAAKhkD,KAAI0pD,IAEfztB,KAAI,MADJqtB,KAAI7zC,GAAE8qC,IAENx9C,KAAIumD,MAAKrpD,GAAEqnD,KAAK,GAChB,KAAKrnD,GAAE4nD,MAAMmE,GAAG/rD,IAAGwV,EAAAA,GACfA,GAAE80C,GACJ,MAAYZ,MAAPF,KAAIxpD,IAASm8B,EAAEmkB,GAAGxgD,GAAE0pD,GAAErtB,EAAEmuB,EAAK90C,GAAAA,KAAIg0C,GAAE/F,IAAIjuC,KAAIg0C,GAAEe,IAAAA,EAAM/0C,IAAG;AAEzDhJ,8BAAAA,KAAIgJ,IACJ0vC,KAAIwE;AACJ,kCACEvtB,MADEwpB,MAHAgE,KAAIH,IAGErtB,GACFkzB;AACRjR,8BAAAA,KAAIuL,GAAEqC;AACN,kCAAIrG,KAAIA,GAAEpF,GAAGoF,GAAEwG,IAAI3/C,EAAAA,GACjB0rB,KAAIyxB,GAAEjlC,IACNy7B,KAAIwJ,GAAExB,KAAK,KAAKhsB,KAAIiiB,KAAI,KAAK5xC,IAC7B0zC,KAAIyF,GAAEgJ,IACN9N,KAAI8E,GAAE0E;AACR,kCAAI,KAAKxJ,GACP,KAAK/gD,GAAE,KAAK+gD,EAAAA,GAAI,KAAK8I,GAAE1J,EACrB,KAAIzzC,MAAK4hD,GAAGl2B,IAAGioB,IAAG/B,IAAGyC,KAAI,CAAA,GACvB8E,GAAE8G,MAAMsC,GAAG72B,IAAGioB,IAAG/B,IAAGyC,EAAAA,GACpB,IAAIqE,MAAK4B,GAAG5uB,IAAGioB,IAAG/B,IAAGyC,KAAI,CACzB8E,GAAAA,GAAE8G,MAAMqC,GAAG52B,IAAGioB,IAAG/B,IAAGyC,EACnB;mCAAA;AACH,oCAAIZ,KAAI0J,GAAEF,GACRnmD,KAAIqmD,GAAEuC,IACN1oD,KAAImmD,GAAE9G,KAAK,IAAI1mB,KAAI8jB,KAAI,IAAIzzC,IAC3Bw/C,KAAIrC,GAAE3G,IACN2G,KAAIA,GAAE5F,KAAK,IAAI5nB,KAAI8jB,KAAI,IAAIzzC;AAC3B2vB,gCAAAA,KAAIwpB,GAAE+I,IACR,IAAIliD,OACD64C,GAAGntB,IAAGioB,IAAG/B,IAAGyC,KAAI,GAAGX,IAAG/jB,EAAAA,GACvB2zB,GAAGxsD,IAAGE,IAAGwoD,IAAGrC,IAAG1J,IAAGY,KAAI,GAAGX,IAAG/jB,EAAAA,IAC9BwpB,GAAE8G,OAAOsD,GAAG73B,IAAGioB,IAAG/B,IAAGyC,IAAGX,IAAG/jB,EAAI8xB,GAAAA,GAAG3qD,IAAGE,IAAGwoD,IAAGrC,IAAG1J,IAAGY,IAAGX,IAAG/jB,EACvD,IAAA,IAAI+oB,OACDgJ,IAAGh2B,IAAGioB,IAAG/B,IAAGyC,KAAI,GAAGX,IAAG/jB,EAAAA,GACvBslB,IAAGn+C,IAAGE,IAAGwoD,IAAGrC,IAAG1J,IAAGY,KAAI,GAAGX,IAAG/jB,EAAAA,IAC9BwpB,GAAE8G,OAAO/K,GAAGxpB,IAAGioB,IAAG/B,IAAGyC,IAAGX,IAAG/jB,EAAIuzB,GAAAA,GAAGpsD,IAAGE,IAAGwoD,IAAGrC,IAAG1J,IAAGY,IAAGX,IAAG/jB,EAAAA;8BACzD;4BACJ;AAEF,gCADAn8B,GAAE6qD,MAAMroC,MAAM,gBACV,GAAA,QAAQviB,GAAE+vD,KAAK;AAqBjB,kCApBAx6C,KAAI,KAAK6zC,IACTA,KAAI,MAAMA,KAAI,IACdrtB,MACM/7B,GAAEuM,IAAIxM,GAAE0kB,IACTzkB,GAAEqD,IAAItD,GAAEmoD,KAAKziD,IACbzF,GAAEkU,IAAInU,GAAEksD,IACRjsD,GAAE+7B,IAAIh8B,GAAE6iD,KAAK4G,IACbxpD,GAAEmlD,KAAKplD,GAAEgjD,IACT/iD,GAAEwlD,IAAIzlD,GAAE+jD,KAAK0F,OACZj0C,MAAK9U,IACNT,GAAEuM,IAAIyQ,IACNhd,GAAEqD,IAAIif,IACNtiB,GAAEkU,IAAIvT,IACNX,GAAE+7B,IAAIvmB,IACNxV,GAAEmlD,KAAKjmD,IACPc,GAAEwlD,IAAIjlD,KACXsC,OAAMumD,MAAK3oD,KACX2oD,KAAIppD,GAAEu+C,MAAM6K,KAAIppD,GAAEu+C,IAClBv+C,GAAEi4B,IAAI,MACNj4B,GAAEigD,IAAI,MAEJ,QAAQlgD,GAAEssD,MACV,IAAItsD,GAAEssD,GAAGttD,UACTwW,KAAI6zC,OACFppD,GAAEigD,IAAImT,GAAGrzD,IAAGC,IAAGuV,IAAG6zC,KAAI7zC,EACvBvV,GAAAA,GAAEi4B,IAAIl4B,GAAE6sD,IACT,QAAQ5sD,GAAEi4B,KAAK,KAAKj4B,GAAEi4B,EAAEl5B,SACxB;AACAhN,gCAAAA,KAAIu0D,IAAEvmD,IAAG,GAAG,8BAAA;AACZ,sCAAM/M;8BACR;AACAuiB,8BAAAA,KAAIvV,GAAEqB,MACFZ,KAAIT,GAAEqB,IAAIkU,IACXA,KAAIvV,GAAEqB,GACPxB,GAAAA,EAAQ,IAAJY,GAAAA,GACHT,GAAEqD,KAAKtD,GAAEgsD,IAAItrD,IACbT,GAAE+7B,KAAKh8B,GAAEypD,KAAK/oD,MAAK,IACnBT,GAAEwlD,KAAKzlD,GAAEypD,KAAK/oD,MAAK,IACpB,QAAQT,GAAEi4B,MAAMj4B,GAAEigD,KAAKjgD,GAAE4a,QAAQna,MACnC8U,KAAI6zC,OACAppD,GAAEqD,KAAKrD,GAAE6C,GACV7C,GAAE+7B,KAAK/7B,GAAE6C,KAAK,GACd7C,GAAEwlD,KAAKxlD,GAAE6C,KAAK,GACf,QAAQ7C,GAAEi4B,MAAMj4B,GAAEigD,KAAKjgD,GAAE6C,IACxB7C,GAAEymD,KAAKlxC,KAAIvV,GAAEqB,GACbrB,GAAE2D,IAAI3D,GAAEgqD,KAAKhqD,GAAE6C,GACf7C,GAAEsmD,IAAI8C,KAAI7zC,IACVxjB,KAAIiO,GAAE+vD,IAAI/vD,EAAAA;4BACf;AACAkU,4BAAAA,KAAI,KAAKnU,GAAEsvD,MACTxsD,OACCs9C,GAAEpgD,GAAE0kB,IAAI1kB,GAAEmoD,KAAK/oD,IAAG6d,IAAGsF,KAAI,KAAKviB,GAAEgsD,GAAG5sD,EACpCghD,GAAAA,GAAEpgD,GAAEksD,IAAIlsD,GAAE6iD,KAAK9iD,IAAGa,IAAG6U,KAAI,IAAIzV,GAAEypD,GAAG1pD,EAAAA,GAClCqgD,GAAEpgD,GAAEgjD,IAAIhjD,GAAE+jD,KAAKhkD,IAAGZ,IAAGqB,KAAI,IAAIR,GAAEypD,GAAG1pD,EACtC;0BAAA;AACF,8BAAK/N,CAAAA,GAAG,QAAOu0D,IAAEtzD,IAAG,GAAG,iBACzB;wBAAA;AACA,+BAAO;sBACT,GA2LiBA,IAAGoM,EAAAA,IAChB,QAAQA,GAAEkkD,MAAMlkD,GAAEkkD,GAAGlkD,EAAAA,GACrBW,MAAK;oBACP;AACA,2BAAKA,MACL/M,GAAE8uD,KAAK,GACA/hD,MAFQ;kBAGjB,GAo5FiB/M,IAAGgN,EAAOZ,MAAAA,KAAIpM,GAAEA;gBACrB;cAAA,MACKoM,CAAAA,KAAIpM,GAAEA;YACf;AACA,iBAAKoM,MAAK,QAAQD,GAAEsoD,MAAMtoD,GAAEsoD,GAAGzB,OAAO5mD,KAAIuwD,GAAGxwD,GAAEqnD,EAAAA;UACjD;AACArnD,UAAAA,KAAIC;QACN;AACA8U,QAAAA,KAAI,KAAK/U,KAAI,OAAO,KAAK+U,KAAIsB,GAAEtB,EAAEyxC,KAAK9B,KAAKruC,GAAEtB,EAAE0xC,GAAGr5C;MAAAA,MAC7C2H,CAAAA,KAAI;AACX,aAAOA;IAAAA;AAET,QAAIg7C,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;EAAA;AAuBhD,WAAS+G,GAAOn0D,IAAMo0D,IAAAA;AAEpB,aADIplE,KAAM,IACDgO,KAAI,GAAGA,KAAI,GAAGA,KAAKhO,CAAAA,MAAOkD,OAAOC,aAAa6N,GAAKo0D,IAAAA,CAAAA;AAC5D,WAAOplE;EACT;AAEA,WAASqlE,GAAQr0D,IAAMo0D,IACrB;AAAA,WAAQp0D,GAAKo0D,KAAW,CAAA,IAAYp0D,GAAKo0D,KAAW,CAAA,KAAM;EAC5D;AAEA,WAASE,GAAQt0D,IAAMo0D,IACrB;AAAA,YACIp0D,GAAKo0D,KAAW,CAAA,IACfp0D,GAAKo0D,KAAW,CAAA,KAAM,IACtBp0D,GAAKo0D,KAAW,CAAM,KAAA,QACzB;EAEJ;AAEA,WAASG,GAAQv0D,IAAMo0D,IAAAA;AACrB,YACIp0D,GAAKo0D,KAAW,CACfp0D,IAAAA,GAAKo0D,KAAW,CAAM,KAAA,IACtBp0D,GAAKo0D,KAAW,CAAA,KAAM,KACtBp0D,GAAKo0D,KAAW,CAAM,KAAA,QACzB;EAEJ;AAhDA,MAAIzV;AAgJJ,MAAI5lC,KAAS,CAAC,CAAA,GACVD,KAAQ,CAAC,CAAA,GACTu6B,KAAS,CAAA,GACTmhB,KAAc,IAAI7V,MAElB9uD,KAAW8sC,IACX83B,MApGJ,SAAwBl1C,IAAKm1C,IAAAA;AAC3B,QAAID,KAAa,CAAA,GACbz3D,KAAI,GACJ23D,KAAAA,OACAC,KAAa,GACbC,KAAe;AAEnB,QADAJ,GAAmB,SAAI,CAAA,GAAA;;;;;;;;KAzCzB,SAAgBz0D,IAAMo0D,IACpB;AAAA,eAASp3D,KAAI,GAAGA,KAyCiB,GAzCPA,KACxB,KAAIgD,GAAKo0D,KAAWp3D,EAAAA,KAwCG,OAxCOkC,WAAWlC,EAAAA,EAAI,QAAO;AACtD,aAAO;IACT,GAsCauiB,IAAKm1C,EAAhB,GAAA;AAKA,WAHgBH,GAAQh1C,IADxBm1C,MAAW,CAAA,GAEXA,MAAW,GAEJA,KAAUn1C,GAAItiB,UAAQ;AAC3B,YAAI63D,KAASX,GAAO50C,IAAKm1C,EAAAA,GAGrBK,KAAeR,GAAQh1C,IAF3Bm1C,MAAW,CAAA;AAGXA,QAAAA,MAAW;AACX,YAAIM,KAAsBD,MAA+B,IAAfA;AAE1C,gBAAQD,IACN;UAAA,KAAK;UACL,KAAK;AAAA,uBACQL,GAAmB,OAAEz3D,EAC9By3D,MAAAA,GAAmB,OAAEz3D,EAAAA,IAAK,CAAA,KACxBkY,KAAMu/C,GAAmB,OAAEz3D,EAAAA,GAGlB,UAAI23D,KAAcE,KAAeH,KAAU,GACxDx/C,GAAc,WAAI0/C,KAAaG,KAAe,GAG9C/3D,MACI23D,OACFA,KAAAA,OACAC,KAAa,GACbC,KAAe;AAEjB;UACF,KAAK;AAAA,aACC3/C,KAAOu/C,GAAmB,SAAI,CAAA,GACM,gBAAIl1C,GAAIm1C,EAChD;AAAA,gBAAIO,KAAWP,KAAU;AACLx/C,YAAAA,GAAkB,eAAI,IAAIo/C,GAAQ/0C,IAAK01C,EAC3DA,GAAAA,MAAY,GACS//C,GAAmB,gBACtC,IAAIo/C,GAAQ/0C,IAAK01C,EAAAA,GACnBA,MAAY;AACZ;UACF,KAAK;AACHN,YAAAA,KAAc,MACdC,KAAaI,KAAsB,GACnCH,KAAeH,KAAU;AACzB;UAEF,KAAK;AACCx/C,aAAAA,KAAMu/C,GAAmB,QACD,UAAIF,GAAQh1C,IAAKm1C,EAC7CO,GAAAA,KAAWP,KAAU,GAEHx/C,GAAgB,aAAIm/C,GAAQ90C,IAAK01C,EACnDA,GAAAA,MAAY;AACZ;UACF,KAAK;AACCC,gBAOFC,IACEjgD;AAAOu/C,aAAAA,KAAAA,GAAmB,OAAEz3D,EAAK,IAAA,CAAA,GACvB,WAAe,IAAIs3D,GAAQ/0C,IAAKm1C,EAC9CA,GAAAA,MAAW,GACXx/C,GAAc,WAAe,IAAIo/C,GAAQ/0C,IAAKm1C,EAC9CA,GAAAA,MAAW,GACXx/C,GAAW,QAAY,IAAIo/C,GAAQ/0C,IAAKm1C,EAAAA,GACxCA,MAAW,GACXx/C,GAAY,SAAa,IAAIo/C,GAAQ/0C,IAAKm1C,EAAAA,GAC1CA,MAAW,GACXx/C,GAAc,WAAeo/C,GAAQ/0C,IAAKm1C,EAC1CA,GAAAA,MAAW,GACXS,KAAO51C,GAAIm1C,IACXx/C,GAAAA,GAAa,UAAqB,IAAPigD,IAC3BjgD,GAAW,QAAaigD,MAAQ,IAAK;QAAA;AAI3B,kBAAVL,OAAkBJ,MAAWM;MACnC;AACA,aAAOP;IApF8B;EAqFvC,GAQgC5kE,IAAU,CAAA;AAC1C4kE,EAAAA,GAAqB,WAAI5kE,IACzB4kE,GAAuB,aAAA,MACvBA,GAAoB,UAAA;AAEpB,MAAIxpB,KAASwpB,GAAmB,SAAIA,GAAmB,SAAI,MACvDziB,KAASyiB,GAAmB,SAAIA,GAAmB,SAAI;AAE3D,MAAIxpB,IAAQ;AACVA,IAAAA,GAAqB,eAAIA,GAAmB,YAC5ClyB,KAAS,CAACkyB,GAAsB,aAChCnyB,GAAAA,KAAQ,CAACmyB,GAAqB,YAAA;AAG9B,aAAS74B,KAAI,GAAGA,KAAI4/B,GAAO/0C,UACC,KAAtB+0C,GAAO5/B,EAAAA,EAAU,OADYA,KAAAA;EAKrC;AAEA,MAAIkhC,KAAQtB,GAAO,CAAA,GACfojB,KAAOZ,GAAYN,eACrBrkE,IACAyjD,GAAe,SACfA,GAAgB,UAChBx6B,IACAC,EAEFu6B;AAAAA,EAAAA,GAAY,OAAI8hB,IAChB9hB,GAAgB,WAAIx6B,GAAM,CAC1Bw6B,GAAAA,GAAiB,YAAIv6B,GAAO,CAAA;AAE5B,WAAS/b,KAAI,GAAGA,KAAI8b,GAAM,CAAKC,IAAAA,GAAO,CAAA,IAAK,GAAG/b,KAC5Cq2C,CAAAA,GAAOr2C,EAAAA,IAAKo4D,GAAKp4D,EAMnB;AAAA,SAHAvO,KAAKqqB,QAAQA,IACbrqB,KAAKsqB,SAASA,IACdtqB,KAAKuR,OAAOqzC,IACL5kD;AACT;ACtyKA,SAAS4mE,KAAAA;AACP,MAIItoD,IAJE8N,KAAWpsB,KAAKqX,SAASwvD,aAAaz6C,UACtC06C,KAAex2C,SAASC,mBAAmBnE,EAAAA,CAAAA;AAK/C9N,EAAAA,KAHate,KAAKqX,SAASwvD,aAAaE,SAG9BD,KAEe,qJAGvB9mE,KAAKqX,SAASwvD,aAAaG,eAC3B,uBAOUF,GAyBXriE,QAAQ,MAAM,OAAA,EACdA,QAAQ,MAAM,MAAA,EACdA,QAAQ,MAAM,MAAA,EACdA,QAAQ,MAAM,QAAA,EACdA,QAAQ,MAAM,QAAA,IA/BbwiE,6DAOJjnE,KAAKqX,SAASwvD,aAAaK,uBAAuBlnE,KAAKqX,SAAS8O,UAAAA,GAChEnmB,KAAKqX,SAAS4H,MACZ,8CAA8CX,GAAQ9P,SAAS,KAEjExO,GAAAA,KAAKqX,SAAS4H,MAAM,QAAA,GACpBjf,KAAKqX,SAAS4H,MAAMX,EAAAA,GACpBte,KAAKqX,SAAS4H,MAAM,WACpBjf,GAAAA,KAAKqX,SAAS4H,MAAM,QAAA;AACtB;AAEA,SAAS0P,KAAAA;AACH3uB,OAAKqX,SAASwvD,aAAaK,wBAC7BlnE,KAAKqX,SAAS4H,MACZ,eAAejf,KAAKqX,SAASwvD,aAAaK,uBAAuB,MAAA;AAGvE;AC3CA,EAAA,SAAUtmC,IAAAA;AAER,MAoCIhlB,IACFmgB,IACAC,IACApF,IACAC,IACAlS,IACAO,IACA1K,IACA2sD,IA5CEC,KAAe,SAASC,IAAAA;AAgC1B,WA/BAA,KAAMA,MAAO,CAAA,GACbrnE,KAAKsnE,sBAAsBD,GAAIC,uBAAAA,OAC/BtnE,KAAKunE,gBAAgBF,GAAIE,iBAAiB,GAC1CvnE,KAAKwnE,cAAcH,GAAIG,eAAe,WACtCxnE,KAAKynE,YAAYJ,GAAII,aAAa,WAClCznE,KAAK0nE,oBAAoBL,GAAIK,qBAAqB,OAClD1nE,KAAK2nE,cAAcN,GAAIM,eAAe,GACtC3nE,KAAK+pB,OAAOs9C,GAAIt9C,QAAQ,mBACxB/pB,KAAK4nE,eAAeP,GAAIO,gBAAgB,cACxC5nE,KAAKskC,YAAY+iC,GAAI/iC,aAAa,QAClCtkC,KAAK6tB,YAAYw5C,GAAIx5C,aAAa,GAClC7tB,KAAK6nE,WAAWR,GAAIQ,YAAY,SAChC7nE,KAAK8nE,UAAUT,GAAIS,WAAW,QAC9B9nE,KAAKu6B,OAAO8sC,GAAI9sC,QAAQ,CACxBv6B,GAAAA,KAAKgzB,YAAAA,WACIq0C,GAAIr0C,YACPq0C,GAAIr0C,UAAU7N,MAAAA,IACd,IAAI3K,MACVxa,KAAK+nE,2BAA2BV,GAAIU,4BAA4B,UAChE/nE,KAAKgoE,cAAcX,GAAIW,eAAe,GACtChoE,KAAKioE,YAAYZ,GAAIY,aAAa,CAAA,GAClCjoE,KAAKkoE,eAAeb,GAAIa,gBAAgB,IAAIvjD,MAC5C3kB,KAAKmoE,aAAad,GAAIc,cAAc,IACpCnoE,KAAKooE,YAAYf,GAAIe,aAAa,IAAIzjD,MACtC3kB,KAAKqoE,iBAAiBhB,GAAIgB,kBAAkB,GAC5CroE,KAAKsoE,WAAWjB,GAAIiB,YAAY,CAAA,GAChCtoE,KAAKuoE,SAASlB,GAAIkB,UAAU,CAAC,GAAG,GAAG,GAAG,CACtCvoE,GAAAA,KAAKwoE,yBAAyBnB,GAAImB,0BAA0B,GAE5DxoE,KAAKyoE,kBAC4B,aAAA,OAAxBpB,GAAIoB,mBAAgCpB,GAAIoB,iBAC1CzoE;EAAAA;AAaT4gC,EAAAA,GAASpe,OAAO3N,KAAK,CACnB,eACA,WAAA;AACE7U,SAAKw5C,YAAY,IAAIkvB,GAAU1oE,IAAAA,GAE/B4b,KAAK5b,KAAKqX,SAASuE,IACnBmgB,KAAgC/7B,KAAKqX,SAASqoB,qBAC9C1D,KAA8Bh8B,KAAKqX,SAAS2kB,6BAC5CpF,KAA0B52B,KAAKqX,SAASuf,yBACxCC,KAAwB72B,KAAKqX,SAASwf,uBACtClS,KAAQ3kB,KAAKqX,SAASsN,OACtBO,KAAYllB,KAAKqX,SAAS6N,WAC1B1K,KAASxa,KAAKqX,SAASmD,QACvB2sD,KAAO,IAAIC;EACZ,CAAA,CAAA;AAGH,MAAIsB,KAAY,SAASnvB,IACvBllC;AAAAA,WAAO+O,eAAepjB,MAAM,UAAU,EACpCqjB,KAAK,WAAA;AACH,aAAO,EAAEslD,YAAAA,OAAmBj5C,OAAO,MAAA;IACrC,EAAA,CAAA;AAGF,QAAIk5C,KAAOrvB;AACXllC,WAAO+O,eAAepjB,MAAM,OAAO,EACjCqjB,KAAK,WACH;AAAA,aAAOulD;IACT,EAGF,CAAA;AAAA,QAAIC,KAAoB;AAMxBx0D,WAAO+O,eAAepjB,MAAM,oBAAoB,EAC9CqjB,KAAK,WAAA;AACH,aAAOwlD;IACR,GACDvlD,KAAK,SAAS5L,IAAAA;AACZmxD,MAAAA,KAAoBphC,QAAQ/vB,EAAAA;IAC9B,EAGF,CAAA;AAAA,QAAIoxD,KAAAA;AAMJz0D,WAAO+O,eAAepjB,MAAM,oBAAoB,EAC9CqjB,KAAK,WAAA;AACH,aAAOylD;IACR,GACDxlD,KAAK,SAAS5L,IAAAA;AACZoxD,MAAAA,KAAoBrhC,QAAQ/vB,EAAAA;IAC9B,EAAA,CAAA;AAGF,QAAIqxD,KAAQ;AAMZ10D,WAAO+O,eAAepjB,MAAM,QAAQ,EAClCqjB,KAAK,WAAA;AACH,aAAO0lD;IACR,GACDzlD,KAAK,SAAS5L,IAAAA;AACP5I,YAAM4I,EACTqxD,MAAAA,KAAQrxD;IAEZ,EAGF,CAAA;AAAA,QAAIsxD,KAAQ;AAMZ30D,WAAO+O,eAAepjB,MAAM,QAAQ,EAClCqjB,KAAK,WAAA;AACH,aAAO2lD;IACR,GACD1lD,KAAK,SAAS5L,IAAAA;AACP5I,YAAM4I,EACTsxD,MAAAA,KAAQtxD;IAEZ,EASFrD,CAAAA,GAAAA,OAAO+O,eAAepjB,MAAM,UAAU,EACpCqjB,KAAK,WAAA;AACH,aAAO8jD,GAAKoB;IACb,GACDjlD,KAAK,SAAS5L,IACZ;AAAA,UAAI6wD;AACiB,kBAAV7wD,OAAAA,KACT6wD,KAAS,CAAC7wD,IAAOA,IAAOA,IAAOA,EAAAA,MAE/B6wD,KAAS,IAAI52D,MAAM,CAAA,GACZ,CAAK+F,IAAAA,GAAM,CAAA,GAClB6wD,GAAO,CAAA,IAAK7wD,GAAMlJ,UAAU,IAAIkJ,GAAM,CAAK6wD,IAAAA,GAAO,CAAA,GAClDA,GAAO,CAAA,IAAK7wD,GAAMlJ,UAAU,IAAIkJ,GAAM,CAAK6wD,IAAAA,GAAO,CAAA,GAClDA,GAAO,CAAA,IAAK7wD,GAAMlJ,UAAU,IAAIkJ,GAAM,CAAK6wD,IAAAA,GAAO,CAAA,IAEpDpB,GAAKoB,SAASA;IAChB,EAAA,CAAA;AAGF,QAAIU,KAAc;AAwBlB50D,WAAO+O,eAAepjB,MAAM,cAAc,EACxCqjB,KAAK,WAAA;AACH,aAAO4lD;IACR,GACD3lD,KAAK,SAAS5L,IAAAA;AACZuxD,MAAAA,KAAcvxD;IAChB,EAAA,CAAA;AAGF,QAAIwxD,KAAY;AAMhB70D,WAAO+O,eAAepjB,MAAM,aAAa,EACvCqjB,KAAK,WACH;AAAA,aAAO6lD;IACR,GACD5lD,KAAK,SAAS5L,IACZwxD;AAAAA,MAAAA,KAAYxxD;IACd,EAGF,CAAA;AAAA,QAAIyxD,KAAa,CAOjB90D;AAAAA,WAAO+O,eAAepjB,MAAM,cAAc,EACxCqjB,KAAK,WAAA;AACH,aAAO8lD;IACR,GACD7lD,KAAK,SAAS5L,IAAAA;AACZyxD,MAAAA,KAAazxD;IACf,EAAA,CAAA,GAQFrD,OAAO+O,eAAepjB,MAAM,OAAO,EACjCqjB,KAAK,WACH;AAAA,aAAO8jD;IACR,GACD7jD,KAAK,SAAS5L,IACRA;AAAAA,MAAAA,cAAiB0vD,OACnBD,KAAOzvD;IAEX,EAAA,CAAA,GAQFrD,OAAO+O,eAAepjB,MAAM,QAAQ,EAClCqjB,KAAK,WACH;AAAA,aAAO8jD,GAAK5sC;IACb,GACDjX,KAAK,SAAS5L,IAAAA;AACZyvD,MAAAA,GAAK5sC,OAAO7iB;IACd,EAQF,CAAA;AAAA,QAAI0xD,KAAY,CAChB/0D;AAAAA,WAAO+O,eAAepjB,MAAM,YAAY,EACtCqjB,KAAK,WAAA;AACH,aAAO+lD;IACR,GACD9lD,KAAK,SAAS5L,IAAAA;AACZ0xD,MAAAA,KAAY1xD;IACd,EAAA,CAAA,GAYFrD,OAAO+O,eAAepjB,MAAM,aAAa,EACvCqjB,KAAK,WAAA;AACH,aAAOrjB,KAAKqnE,IAAII;IACjB,GACDnkD,KAAK,SAAS5L,IAAAA;AACZ,UAAIivD;AACJA,MAAAA,KAAO0C,GAAQ3xD,EAEf1X,GAAAA,KAAKqnE,IAAII,YAAYd,GAAKj3C,OAC1B1vB,KAAKqnE,IAAIK,oBAA+B,MAAXf,GAAKlkE,GAClCzC,KAAKqnE,IAAIM,cAAchB,GAAKlkE,GAE5BzC,KAAKu5C,IAAIhd,aAAaoqC,GAAKh4D,GAAGg4D,GAAK/3D,GAAG+3D,GAAK93D,GAAG,EAAEpM,GAAGkkE,GAAKlkE,EACxDzC,CAAAA,GAAAA,KAAKu5C,IAAI9c,aAAakqC,GAAKh4D,GAAGg4D,GAAK/3D,GAAG+3D,GAAK93D,GAAG,EAAEpM,GAAGkkE,GAAKlkE,EAAAA,CAAAA;IAC1D,EAAA,CAAA,GAYF4R,OAAO+O,eAAepjB,MAAM,eAAe,EACzCqjB,KAAK,WACH;AAAA,aAAOrjB,KAAKqnE,IAAIG;IACjB,GACDlkD,KAAK,SAAS5L,IACZ;AAAA,UAAIivD,KAAO0C,GAAQ3xD,EAAAA;AAEnB1X,WAAKqnE,IAAIG,cAAcb,GAAKj3C,OAC5B1vB,KAAKqnE,IAAIC,sBAAiC,MAAXX,GAAKlkE,GACpCzC,KAAKqnE,IAAIE,gBAAgBZ,GAAKlkE,GAEf,MAAXkkE,GAAKlkE,IACPzC,KAAKu5C,IAAInd,aAAa,KAAK,KAAK,GAAA,KACvBuqC,GAAKlkE,GACdzC,KAAKu5C,IAAInd,aAAauqC,GAAKh4D,GAAGg4D,GAAK/3D,GAAG+3D,GAAK93D,CAAAA;IAI/C,EAAA,CAAA,GAYFwF,OAAO+O,eAAepjB,MAAM,WAAW,EACrCqjB,KAAK,WACH;AAAA,aAAOrjB,KAAKqnE,IAAIS;IACjB,GACDxkD,KAAK,SAAS5L,IAAAA;AAAAA,aACR,CAAC,QAAQ,SAAS,QAAA,EAAUvC,QAAQuC,EACtC1X,MAAAA,KAAKqnE,IAAIS,UAAUpwD,IACnB1X,KAAKu5C,IAAIpc,WAAWzlB,EAAAA;IAExB,EAUFrD,CAAAA,GAAAA,OAAO+O,eAAepjB,MAAM,aAAa,EACvCqjB,KAAK,WAAA;AACH,aAAOrjB,KAAKqnE,IAAIx5C;IACjB,GACDvK,KAAK,SAAS5L,IACP5I;AAAAA,YAAM4I,EAAAA,MACT1X,KAAKqnE,IAAIx5C,YAAYnW,IACrB1X,KAAKu5C,IAAI3rB,aAAalW,EAAAA;IAE1B,EAMFrD,CAAAA,GAAAA,OAAO+O,eAAepjB,MAAM,YAAY,EACtCqjB,KAAK,WAAA;AACH,aAAOrjB,KAAKqnE,IAAIQ;IACjB,GACDvkD,KAAK,SAAS5L,IACwC;AAAA,aAAhD,CAAC,SAAS,SAAS,OAAA,EAASvC,QAAQuC,EAAAA,MACtC1X,KAAKqnE,IAAIQ,WAAWnwD,IACpB1X,KAAKu5C,IAAInc,YAAY1lB,EAEzB;IAAA,EAAA,CAAA,GASFrD,OAAO+O,eAAepjB,MAAM,cAAc,EACxCqjB,KAAK,WAAA;AACH,aAAOrjB,KAAKqnE,IAAIc;IACjB,GACD7kD,KAAK,SAAS5L,IAAAA;AACP5I,YAAM4I,EAAAA,MACT1X,KAAKqnE,IAAIc,aAAazwD,IACtB1X,KAAKu5C,IAAIjc,cAAc5lB,EAE3B;IAAA,EAAA,CAAA,GAGFrD,OAAO+O,eAAepjB,MAAM,gBAAgB,EAC1CqjB,KAAK,WAAA;AACH,aAAOrjB,KAAKqnE,IAAIO;IACjB,GACDtkD,KAAK,SAAS5L,IAAAA;AACZ1X,WAAKqnE,IAAIO,eAAelwD;IAC1B,EAGFrD,CAAAA,GAAAA,OAAO+O,eAAepjB,MAAM,aAAa,EACvCqjB,KAAK,WAAA;AACH,aAAOrjB,KAAKqnE,IAAI/iC;IACjB,GACDhhB,KAAK,SAAS5L,IAAAA;AAAAA,aACR,CAAC,SAAS,OAAO,UAAU,QAAQ,OAAA,EAASvC,QAAQuC,EAAAA,MACtD1X,KAAKqnE,IAAI/iC,YAAY5sB;IAEzB,EAGF,CAAA;AAAA,QAAI4xD,KAAe,MACfC,KAAkB;AA0EtB,QAAIC,KAAa;AAQjBn1D,WAAO+O,eAAepjB,MAAM,aAAa,EACvCqjB,KAAK,WACH;AAAA,aAAOmmD;IACR,GACDlmD,KAAK,SAAS5L,IACZ4xD;AAAAA,MAAAA,KAAe,MACfC,KAAkB,MAClBC,KAAa9xD;IACf,EAAA,CAAA,GAGFrD,OAAO+O,eAAepjB,MAAM,QAAQ,EAClCqjB,KAAK,WACH;AAAA,aAAOrjB,KAAKqnE,IAAIt9C;IACjB,GACDzG,KAAK,SAAS5L,IAAAA;AAEZ,UAAQuxB;AAMR,UAPAjpC,KAAKqnE,IAAIt9C,OAAOrS,IAOA,UADhBuxB,KADK,uVACQv6B,KAAKgJ,EAAAA,IAClB;AACE,YAAIsD,KAAYiuB,GAAQ,CAAA;AACNA,QAAAA,GAAQ,CAC1B;AAAA,YAAIhuB,KAAaguB,GAAQ,CAAA,GACrBtpB,KAAWspB,GAAQ,CAAA;AACNA,QAAAA,GAAQ,CACzB;AAAA,YAAIwgC,KAAaxgC,GAAQ,CAAA,GAKvBygC,KADa,yCACah7D,KAAKiR,EAAU,EAAA,CAAA;AAG3CA,QAAAA,KADE,SAAS+pD,KACAx1D,KAAKoI,MACd2K,WAAWtH,EAAAA,IAAY3f,KAAKu5C,IAAIliC,SAASoD,WAElC,IAAA,SAASivD,KACPx1D,KAAKoI,MAAM2K,WAAWtH,EAAY3f,IAAAA,KAAKu5C,IAAI3+B,YAE3C1G,CAAAA,IAAAA,KAAKoI,MACd2K,WAAWtH,EAAAA,IAAY3f,KAAKu5C,IAAIliC,SAASoD,WAAAA,GAI7Cza,KAAKu5C,IAAI5+B,YAAYgF,EACrB;AAAA,YAAIwgB,Md5OL,SAAyByf,IAAAA;AAC9B,cACI7yB,IAAI48C,IADJnlE,KAAS,CAETolE,GAAAA,KAAYhqB,GAAM10B,KAAAA;AAEtB,cAAkB,OAAd0+C,GACF,QAAOxpB;AAGT,cAAIwpB,MAAarqB,GACf,QAAO,CAACA,GAAYqqB,EAAAA,CAAAA;AAGtB,iBAAqB,OAAdA,MAAkB;AAKvB,oBAJAD,KAAS,MAET58C,MADA68C,KAAYjqB,GAAciqB,EACX7kE,GAAAA,OAAO,CAAA,GAAA;cAGpB,KAAK;cACL,KAAK;AACH4kE,gBAAAA,KAAS7pB,GAAsB8pB,GAAUr5D,UAAU,CAAA,GAAIwc,EACvD;AAAA;cAEF;AACE48C,gBAAAA,KAAS3pB,GAAyB4pB,EAAAA;YAAAA;AAItC,gBAAe,SAAXD,GACF,QAAOvpB;AAQT,gBALA57C,GAAOqQ,KAAK80D,GAAO,CAAA,CAAA,GAKD,QAHlBC,KAAYjqB,GAAcgqB,GAAO,CAGe,CAAA,MAAA,QAAxBC,GAAU7kE,OAAO,CAAA,EACvC,QAAOq7C;AAGTwpB,YAAAA,KAAYA,GAAUnlE,QAAQ,MAAM,EAAA;UACtC;AAEA,iBAAOD;QACT,Gc8LoCilE,EAAAA;AAE5B,YAAIzpE,KAAK6pE,WAAT;AACE,cAAIC,MApIV,SAAwBvwB,IAAKswB,IAAAA;AAC3B,gBAAIE,KAAiBxwB,GAAIne,YAGrB4uC,GAAAA,KAAuB1kC,KAAKE,UAAUukC,EAAAA;AAE1C,gBAAqB,SAAjBT,MAAyBC,OAAoBS,IAAsB;AACrE,kBAAIC,MASR,SAA4BC,IAAAA;AAC1B,oBAAIL,KAAY,CAAA;AAoDhB,uBAlDAx1D,OAAOC,KAAK41D,EAAS13D,EAAAA,QAAQ,SAAS+rC,KACvB2rB;AAAAA,kBAAAA,GAAQ3rB,GAAAA,EAEd/rC,QAAQ,SAASkd,IAAAA;AACtB,wBAAI4uB,KAAW;AAEf,4BAAQ5uB,IAAAA;sBACN,KAAK;AACH4uB,wBAAAA,KAAW,EACTC,QAAQA,KACRC,QAAQ,OAEV;AAAA;sBAEF,KAAK;AACHF,wBAAAA,KAAW,EACTC,QAAQA,KACR7uB,OAAO,SAET;AAAA;sBAEF,KAAK;AACH4uB,wBAAAA,KAAW,EACTC,QAAQA,KACRC,QAAQ,QACR9uB,OAAO,SAET;AAAA;sBAEF,KAAK;sBACL,KAAK;AACH4uB,wBAAAA,KAAW,EACTC,QAAQA,IAOG;oBAAA;AAAA,6BAAbD,OACFA,GAASI,MAAM,EACb99C,MAAM29C,KACN7uB,OAAOA,GAGTm6C,GAAAA,GAAUh1D,KAAKypC,EAEnB;kBAAA,CAAA;gBACF,CAAA,GAEOurB;cACT,GA/DgDE,EAE5CT;AAAAA,cAAAA,Md9WD,SAA0BO,IAG/B;AAAA,yBAFI54D,KAAM,CAAA,GAED1C,MAAI,GAAGA,MAAIs7D,GAAUr7D,QAAAA,EAAUD,KAAG;AACzC,sBAAI47D,KAAa9rB,GAAkBwrB,GAAUt7D,GAEzC3N,CAAAA,GAAAA,KAAOupE,GAAW5rB,QAClBE,KAAU0rB,GAAW1rB,SACrB/uB,KAAQy6C,GAAWz6C,OACnB8uB,KAAS2rB,GAAW3rB;AAExBvtC,kBAAAA,GAAIrQ,EAAAA,IAAQqQ,GAAIrQ,EAAAA,KAAS,CAAA,GAEzBqQ,GAAIrQ,EAAAA,EAAM69C,EAAWxtC,IAAAA,GAAIrQ,EAAAA,EAAM69C,EAAY,KAAA,CAAA,GAC3CxtC,GAAIrQ,EAAAA,EAAM69C,EAAAA,EAAS/uB,EAASze,IAAAA,GAAIrQ,EAAAA,EAAM69C,EAAS/uB,EAAAA,EAAAA,KAAU,CAAA,GACzDze,GAAIrQ,EAAAA,EAAM69C,EAAS/uB,EAAAA,EAAAA,EAAO8uB,EAAU2rB,IAAAA;gBACtC;AAEA,uBAAOl5D;cACT,Gc2VwCg5D,GAAmB91C,OAAO01C,EAC1DN,CAAAA,GAAAA,KAAkBS;YACpB;AAEA,mBAAOV;UACT,GAsHuCtpE,KAAKu5C,KAAKv5C,KAAK6pE,SAAAA,GAE5CO,KAAQjqC,GAAMlvB,IAAI,SAASvB,IAAAA;AAC7B,mBAAO,EACL6uC,QAAQ7uC,IACR+uC,SAAS,UACTD,QAAQvjC,IACRyU,OAAO1U,GAAAA;UAEX,CAEI+O,GAAAA,MdrWP,SAAyB+/C,IAAaM,IAAOvpE,IAAAA;AAalD,qBAVIwpE,MAFJxpE,KAAOA,MAAQ,CAAA,GAEcwpE,qBAAqB,SAC9CC,KAAsBj2D,OAAO+hB,OAC/B,CAAA,GACA4oB,IACAn+C,GAAKypE,uBAAuB,CAAA,CAAA,GAG1BryC,KAAO,MACPgR,KAAU,MAEL16B,KAAI,GAAGA,KAAI67D,GAAM57D,QAAAA,EAAUD,GAOlC,KAJI+7D,IAFJryC,KAAOomB,GAAkB+rB,GAAM77D,EAAAA,CAAAA,GAEFgwC,MAC3BtmB,MAAAA,GAAKsmB,SAAS+rB,GAAoBryC,GAAKsmB,MAAAA,IAGrCurB,GAAY91D,eAAeikB,GAAKsmB,MAAS,GAAA;AAC3CtV,cAAAA,KAAU6gC,GAAY7xC,GAAKsmB,MAAAA;AAE3B;YACF;AAMF,gBAFAtV,EAAAA,KAAUA,MAAW6gC,GAAYO,EAAAA,GAK/B,OAAM,IAAI33D,MACR,gDACEgtC,GAAaznB,EAAAA,IACb,2BACAoyC,KACA,IAAA;AAQN,gBAJAphC,MAzIF,SAA4BwV,IAASG,IACnC;AAAA,kBAAIA,GAAYH,EACd,EAAA,QAAOG,GAAYH,EAGrB;AAAA,kBAAIK,MAAQZ,GAAkBO,EAAAA,GAI1BM,KAAMD,OAASZ,GAA0B,SAAA,KAAS,GAClDxpB,KAAQiqB,GAAgBC,IAAaX,IAAkBa,KAAOC,EAAAA;AAElE,kBAAA,CAAKrqB,GAGH,OAAM,IAAIhiB,MACR,sDAAsD+rC,EAI1D;AAAA,qBAAO/pB;YACT,GAoH+BuD,GAAKwmB,SAASxV,EAAAA,GAC3CA,MAnHF,SAA0BjuB,IAAW4jC,IAAAA;AACnC,kBAAIA,GAAY5jC,EAAAA,EACd,QAAO4jC,GAAY5jC,EAAAA;AAKrB,uBAFIuvD,MAAW1sB,GAAe7iC,EAAAA,GAErBzM,KAAI,GAAGA,KAAIg8D,IAAS/7D,QAAUD,EAAAA,GACrC,KAAIqwC,GAAY2rB,IAASh8D,EAAAA,CAAAA,EACvB,QAAOqwC,GAAY2rB,IAASh8D,EAMhC,CAAA;AAAA,oBAAM,IAAImE,MAAM,8CAA8CsI,EAAAA;YAChE,GAmG6Bid,GAAKvI,OAAOuZ,EAAAA,GAAAA,EACvCA,MAlGF,SAA2BuV,IAAQI,IACjC;AAAA,kBAAIA,GAAYJ,EACd,EAAA,QAAOI,GAAYJ,EAGrB;AAAA,kBAAe,QAAXA,MAAkBI,GAAY,GAAA,EAChC,QAAOA,GAAY,GAAA;AAGrB,kBAAe,QAAXJ,MAAkBI,GAAY,GAAA,EAChC,QAAOA,GAAY,GAAA;AAGrB,kBAAIE,MAAQV,GAAkBI,EAAAA,GAK1B9pB,KAAQiqB,GAAgBC,IAAaT,IAAaW,KAD5CN,KAAS,MAAO,KAAI,CAAA;AAG9B,kBAAK9pB,CAAAA,GAGH,OAAM,IAAIhiB,MACR,qDAAqD8rC,EAIzD;AAAA,qBAAO9pB;YACT,GAqE8BuD,GAAKumB,QAAQvV,EAAAA,GAIvC,OAAM,IAAIv2B,MACR,4CAA4CgtC,GAAaznB,EAAAA,IAAQ,IAAA;AAIrE,mBAAOgR;UACT,Gc+SqC6gC,IAAaM,EAAAA;AACxCpqE,eAAKu5C,IAAIre,QAAQnR,GAAK20B,IAAI99C,MAAMmpB,GAAK20B,IAAIhvB,KAAAA;QAE3C,OAfA;AAiBA,cAAIA,KAAQ;AAAA,WAEK,WAAfzU,MACA3M,SAAS2M,IAAY,EAAO,KAAA,OACd,WAAdD,QAEA0U,KAAQ,SAGQ,aAAd1U,OACF0U,MAAS,WAGU,MAAjBA,GAAMlhB,WACRkhB,KAAQ;AAoBV,mBAlBI86C,KAAgB,IAEhBC,KAAgB,EAClBC,OAAO,aACPC,OAAO,aACPC,SAAS,aACTC,SAAS,aACTC,WAAW,aACXC,WAAW,aACX,cAAc,aACd9rB,OAAO,WACPC,WAAW,WACXC,UAAU,WACVC,SAAS,SACTC,SAAS,SACTC,OAAO,QAAA,GAGA/wC,KAAI,GAAGA,KAAI4xB,GAAM3xB,QAAQD,MAAK;AACrC,gBAAA,WACEvO,KAAKu5C,IAAIliC,SAASgX,QAAQ8R,GAAM5xB,EAAImhB,GAAAA,IAAO,EACzClB,YAAY,MACZD,gBAAAA,KAEF,CAAA,GAAA;AACAi8C,cAAAA,KAAgBrqC,GAAM5xB,EAAAA;AACtB;YACD;AAAM,gBACK,iBAAVmhB,MAIOlP,WAHPxgB,KAAKu5C,IAAIliC,SAASgX,QAAQ8R,GAAM5xB,EAAAA,GAAI,QAAQ,EAC1CigB,YAAAA,MACAD,gBAAgB,KAAA,CAAA,EAGlBi8C,CAAAA,KAAgBrqC,GAAM5xB,EAAAA,GACtBmhB,KAAQ;qBACH,WACL1vB,KAAKu5C,IAAIliC,SAASgX,QAAQ8R,GAAM5xB,EAAAA,GAAI,UAAU,EAC5CigB,YAAY,MACZD,gBAAAA,KAEF,CAAA,GAAA;AACAi8C,cAAAA,KAAgBrqC,GAAM5xB,EAAAA,GACtBmhB,KAAQ;AACR;YACF;UACF;AACA,cAAsB,OAAlB86C;AACF,qBAAS15D,KAAI,GAAGA,KAAIqvB,GAAM3xB,QAAQsC,KAChC,KAAI25D,GAActqC,GAAMrvB,EAAK,CAAA,GAAA;AAC3B05D,cAAAA,KAAgBC,GAActqC,GAAMrvB,EAAAA,CAAAA;AACpC;YACF;;AAGJ05D,UAAAA,KAAkC,OAAlBA,KAAuB,UAAUA,IACjDxqE,KAAKu5C,IAAIre,QAAQsvC,IAAe96C,EAAAA;QA1EhC;MAlCA;IA6GF,EAGFrb,CAAAA,GAAAA,OAAO+O,eAAepjB,MAAM,4BAA4B,EACtDqjB,KAAK,WAAA;AACH,aAAOrjB,KAAKqnE,IAAIU;IACjB,GACDzkD,KAAK,SAAS5L,IACZ1X;AAAAA,WAAKqnE,IAAIU,2BAA2BrwD;IACtC,EAAA,CAAA,GAGFrD,OAAO+O,eAAepjB,MAAM,eAAe,EACzCqjB,KAAK,WACH;AAAA,aAAOrjB,KAAKqnE,IAAIW;IACjB,GACD1kD,KAAK,SAAS5L,IAAAA;AACZ1X,WAAKqnE,IAAIW,cAActwD;IACzB,EAAA,CAAA,GASFrD,OAAO+O,eAAepjB,MAAM,kBAAkB,EAC5CqjB,KAAK,WACH;AAAA,aAAOrjB,KAAKqnE,IAAIgB;IACjB,GACD/kD,KAAK,SAAS5L,IAAAA;AACZ1X,WAAKqnE,IAAIgB,iBAAiB3wD,IAC1B8jB,GAAYh7B,KAAKR,IACnB;IAAA,EAAA,CAAA,GAIFqU,OAAO+O,eAAepjB,MAAM,YAAY,EACtCqjB,KAAK,WAAA;AACH,aAAOrjB,KAAKqnE,IAAIiB;IACjB,GACDhlD,KAAK,SAAS5L,IAAAA;AACZ1X,WAAKqnE,IAAIiB,WAAW5wD,IACpB8jB,GAAYh7B,KAAKR,IAAAA;IACnB,EAIFqU,CAAAA,GAAAA,OAAO+O,eAAepjB,MAAM,mBAAmB,EAC7CqjB,KAAK,WAAA;AACH,aAAOrjB,KAAKqnE,IAAIoB;IACjB,GACDnlD,KAAK,SAAS5L,IAAAA;AACZ1X,WAAKqnE,IAAIoB,kBAAkBhhC,QAAQ/vB,EACrC;IAAA,EAAA,CAAA;EAAA;AAUJgxD,EAAAA,GAAUrmE,UAAUm5B,cAAc,SAASE,IAAAA;AACzC17B,SAAKsoE,WAAW5sC;EAAAA,GASlBgtC,GAAUrmE,UAAU2oE,cAAc,WAChC;AAAA,WAAIhrE,KAAKsoE,SAAS95D,SAAS,IAElBxO,KAAKsoE,SAASn0C,OAAOn0B,KAAKsoE,QAAAA,IAG1BtoE,KAAKsoE,SAAS90D,MAAAA;EAAAA,GAIzBk1D,GAAUrmE,UAAUq2B,OAAO,WACzBuyC;AAAAA,IAAAA,GAAezqE,KAAKR,MAAM,QAAA,KAAQ;EAAA,GAUpC0oE,GAAUrmE,UAAUuzB,SAAS,WAAA;AAC3Bq1C,IAAAA,GAAezqE,KAAKR,MAAM,UAAU,KAAA;EAAA,GAUtC0oE,GAAUrmE,UAAU6oE,YAAY,WAC9BlrE;AAAAA,SAAKu6B,OAAO,CACV,EACEh3B,MAAM,QAAA,CAAA;EAAA,GAaZmlE,GAAUrmE,UAAUi3B,SAAS,SAAShqB,IAAG0M,IAAAA;AACvC,QAAIlN,MAAMQ,EAAAA,KAAMR,MAAMkN,EAEpB,EAAA,OADA9b,GAAQO,MAAM,6CAA6CJ,SAAAA,GACrD,IAAIqS,MAAM,oDAAA;AAGlB,QAAIgS,KAAK1kB,KAAKqnE,IAAIr0C,UAAUvO,aAAa,IAAIE,GAAMrV,IAAG0M,EAEtDhc,CAAAA;AAAAA,SAAKu6B,KAAK1lB,KAAK,EACbtR,MAAM,MACN+L,GAAGoV,GAAGpV,GACN0M,GAAG0I,GAAG1I,EAERhc,CAAAA,GAAAA,KAAKqnE,IAAIe,YAAY,IAAIzjD,GAAMrV,IAAG0M,EAAAA;EAAAA,GAUpC0sD,GAAUrmE,UAAU8oE,YAAY,WAC9B;AAAA,QAAIC,KAAY,IAAIzmD,GAAM,GAAG,CACzBpW,GAAAA,KAAI;AACR,SAAKA,KAAIvO,KAAKu6B,KAAK/rB,SAAS,GAAA,OAAGD,IAAUA,KACvC,KAA0B,YAAtBvO,KAAKu6B,KAAKhsB,EAAAA,EAAGhL,QAEe,aAA5BpB,SAAOnC,KAAKu6B,KAAKhsB,KAAI,CACS,CAAA,KAAA,YAAA,OAAvBvO,KAAKu6B,KAAKhsB,KAAI,CAAA,EAAGe,GACxB;AACA87D,MAAAA,KAAY,IAAIzmD,GAAM3kB,KAAKu6B,KAAKhsB,KAAI,CAAA,EAAGe,GAAGtP,KAAKu6B,KAAKhsB,KAAI,CAAA,EAAGyN,CAAAA;AAC3D;IACF;AAGJhc,SAAKu6B,KAAK1lB,KAAK,EACbtR,MAAM,QAAA,CAAA,GAERvD,KAAKqnE,IAAIe,YAAY,IAAIzjD,GAAMymD,GAAU97D,GAAG87D,GAAUpvD,CAAAA;EAAAA,GAYxD0sD,GAAUrmE,UAAUk3B,SAAS,SAASjqB,IAAG0M,IACvC;AAAA,QAAIlN,MAAMQ,EAAMR,KAAAA,MAAMkN,EAAAA,EAEpB,OADA9b,GAAQO,MAAM,6CAA6CJ,SAAAA,GACrD,IAAIqS,MAAM,oDAAA;AAGlB,QAAIgS,KAAK1kB,KAAKqnE,IAAIr0C,UAAUvO,aAAa,IAAIE,GAAMrV,IAAG0M,EAAAA,CAAAA;AAEtDhc,SAAKu6B,KAAK1lB,KAAK,EACbtR,MAAM,MACN+L,GAAGoV,GAAGpV,GACN0M,GAAG0I,GAAG1I,EAAAA,CAAAA,GAERhc,KAAKqnE,IAAIe,YAAY,IAAIzjD,GAAMD,GAAGpV,GAAGoV,GAAG1I,CAAAA;EAAAA,GAU1C0sD,GAAUrmE,UAAU21B,OAAO,WAAA;AACzBh4B,SAAKqnE,IAAIY,YAAY3iC,KAAKC,MAAMD,KAAKE,UAAUxlC,KAAKu6B,IAAAA,CAAAA,GACpD0wC,GAAezqE,KAAKR,MAAM,MAAM,IAAA;EAAA,GAclC0oE,GAAUrmE,UAAUgpE,mBAAmB,SAASC,IAAKC,IAAKj8D,IAAG0M,IAAAA;AAC3D,QAAIlN,MAAMQ,EAAAA,KAAMR,MAAMkN,EAAMlN,KAAAA,MAAMw8D,EAAAA,KAAQx8D,MAAMy8D,EAAAA,EAK9C,OAJArrE,GAAQO,MACN,uDACAJ,SAAAA,GAEI,IAAIqS,MACR,8DAAA;AAIJ,QAAI84D,KAAMxrE,KAAKqnE,IAAIr0C,UAAUvO,aAAa,IAAIE,GAAMrV,IAAG0M,EAAAA,CAAAA,GACnD8I,KAAM9kB,KAAKqnE,IAAIr0C,UAAUvO,aAAa,IAAIE,GAAM2mD,IAAKC,EAAAA,CAAAA;AAEzDvrE,SAAKu6B,KAAK1lB,KAAK,EACbtR,MAAM,OACNk2B,IAAI3U,GAAIxV,GACRoqB,IAAI5U,GAAI9I,GACR1M,GAAGk8D,GAAIl8D,GACP0M,GAAGwvD,GAAIxvD,EAAAA,CAAAA,GAEThc,KAAKqnE,IAAIe,YAAY,IAAIzjD,GAAM6mD,GAAIl8D,GAAGk8D,GAAIxvD,CAAAA;EAAAA,GAgB5C0sD,GAAUrmE,UAAUopE,gBAAgB,SAASC,IAAMC,IAAMC,IAAMC,IAAMv8D,IAAG0M,IAAAA;AACtE,QACElN,MAAMQ,EAAAA,KACNR,MAAMkN,EAAAA,KACNlN,MAAM48D,EACN58D,KAAAA,MAAM68D,EAAAA,KACN78D,MAAM88D,EAAAA,KACN98D,MAAM+8D,EAMN,EAAA,OAJA3rE,GAAQO,MACN,oDACAJ,SAAAA,GAEI,IAAIqS,MACR,2DAAA;AAGJ,QAAI84D,KAAMxrE,KAAKqnE,IAAIr0C,UAAUvO,aAAa,IAAIE,GAAMrV,IAAG0M,EACnD8I,CAAAA,GAAAA,KAAM9kB,KAAKqnE,IAAIr0C,UAAUvO,aAAa,IAAIE,GAAM+mD,IAAMC,EAAAA,CAAAA,GACtD5mD,KAAM/kB,KAAKqnE,IAAIr0C,UAAUvO,aAAa,IAAIE,GAAMinD,IAAMC,EAAAA,CAAAA;AAE1D7rE,SAAKu6B,KAAK1lB,KAAK,EACbtR,MAAM,OACNk2B,IAAI3U,GAAIxV,GACRoqB,IAAI5U,GAAI9I,GACR2d,IAAI5U,GAAIzV,GACRsqB,IAAI7U,GAAI/I,GACR1M,GAAGk8D,GAAIl8D,GACP0M,GAAGwvD,GAAIxvD,EAAAA,CAAAA,GAEThc,KAAKqnE,IAAIe,YAAY,IAAIzjD,GAAM6mD,GAAIl8D,GAAGk8D,GAAIxvD,CAAAA;EAAAA,GAgB5C0sD,GAAUrmE,UAAUypE,MAAM,SACxBx8D,IACA0M,IACA+vD,IACAC,IACAC,IACAC,IAAAA;AAEA,QACEp9D,MAAMQ,EAAAA,KACNR,MAAMkN,EACNlN,KAAAA,MAAMi9D,EAAAA,KACNj9D,MAAMk9D,EAAAA,KACNl9D,MAAMm9D,EAGN,EAAA,OADA/rE,GAAQO,MAAM,0CAA0CJ,SAAAA,GAClD,IAAIqS,MAAM,iDAAA;AAIlB,QAFAw5D,KAAmBzkC,QAAQykC,EAEtBlsE,GAAAA,CAAAA,KAAKqnE,IAAIr0C,UAAUm5C,YAAY;AAClC,UAAIC,KAAMpsE,KAAKqnE,IAAIr0C,UAAUvO,aAAa,IAAIE,GAAMrV,IAAG0M,EACvD1M,CAAAA;AAAAA,MAAAA,KAAI88D,GAAI98D,GACR0M,KAAIowD,GAAIpwD;AAER,UAAIqwD,KAAUrsE,KAAKqnE,IAAIr0C,UAAUvO,aAAa,IAAIE,GAAM,GAAGonD,EAAAA,CAAAA,GACvDO,KAAWtsE,KAAKqnE,IAAIr0C,UAAUvO,aAAa,IAAIE,GAAM,GAAG,CAAA,CAAA;AAC5DonD,MAAAA,KAAS73D,KAAK2P,KACZ3P,KAAKq4D,IAAIF,GAAQ/8D,IAAIg9D,GAASh9D,GAAG,CAAA,IAC/B4E,KAAKq4D,IAAIF,GAAQrwD,IAAIswD,GAAStwD,GAAG,CAEvC,CAAA;IAAA;AACI9H,SAAK+C,IAAIg1D,KAAWD,EAAe,KAAA,IAAI93D,KAAKghB,OAC9C82C,KAAa,GACbC,KAAW,IAAI/3D,KAAKghB,KAGtBl1B,KAAKu6B,KAAK1lB,KAAK,EACbtR,MAAM,OACN+L,GAAGA,IACH0M,GAAGA,IACH+vD,QAAQA,IACRC,YAAYA,IACZC,UAAUA,IACVC,kBAAkBA,GAAAA,CAAAA;EAAAA,GAkBtBxD,GAAUrmE,UAAUmqE,QAAQ,SAAS/yC,IAAIC,IAAIC,IAAIC,IAAImyC,IAAAA;AACnD,UAAM,IAAIr5D,MAAM,wBAAA;EAAA,GAclBg2D,GAAUrmE,UAAUwiB,OAAO,SAASvV,IAAG0M,IAAGgJ,IAAGC,IAC3C;AAAA,QAAInW,MAAMQ,EAAMR,KAAAA,MAAMkN,EAAAA,KAAMlN,MAAMkW,EAAAA,KAAMlW,MAAMmW,EAE5C,EAAA,OADA/kB,GAAQO,MAAM,2CAA2CJ,SAAAA,GACnD,IAAIqS,MAAM,kDAAA;AAElB1S,SAAKs5B,OAAOhqB,IAAG0M,EACfhc,GAAAA,KAAKu5B,OAAOjqB,KAAI0V,IAAGhJ,EAAAA,GACnBhc,KAAKu5B,OAAOjqB,KAAI0V,IAAGhJ,KAAIiJ,EAAAA,GACvBjlB,KAAKu5B,OAAOjqB,IAAG0M,KAAIiJ,EAAAA,GACnBjlB,KAAKu5B,OAAOjqB,IAAG0M,EACfhc,GAAAA,KAAKu5B,OAAOjqB,KAAI0V,IAAGhJ,EAAAA,GACnBhc,KAAKu5B,OAAOjqB,IAAG0M,EAAAA;EAAAA,GAcjB0sD,GAAUrmE,UAAUoqE,WAAW,SAASn9D,IAAG0M,IAAGgJ,IAAGC,IAC/C;AAAA,QAAInW,MAAMQ,EAAMR,KAAAA,MAAMkN,EAAAA,KAAMlN,MAAMkW,EAAAA,KAAMlW,MAAMmW,EAE5C,EAAA,OADA/kB,GAAQO,MAAM,+CAA+CJ,SAAAA,GACvD,IAAIqS,MAAM,sDAAA;AAElB,QAAIg1D,CAAAA,GAAkBlnE,KAAKR,IAA3B,GAAA;AAGA,UAAIyzB,KAAM,CAAA;AACW,iBAAjBzzB,KAAK8nE,YACPr0C,GAAIq0C,UAAU9nE,KAAK8nE,SACnB9nE,KAAK8nE,UAAU,SAEK,YAAlB9nE,KAAK6nE,aACPp0C,GAAIo0C,WAAW7nE,KAAK6nE,UACpB7nE,KAAK6nE,WAAW,UAGlB7nE,KAAKkrE,UAAAA,GACLlrE,KAAK6kB,KAAKvV,IAAG0M,IAAGgJ,IAAGC,EAAAA,GACnBjlB,KAAK04B,KAEDjF,GAAAA,GAAIzf,eAAe,SACrBhU,MAAAA,KAAK8nE,UAAUr0C,GAAIq0C,UAEjBr0C,GAAIzf,eAAe,UAAA,MACrBhU,KAAK6nE,WAAWp0C,GAAIo0C;IAnBtB;EAAA,GAkCFa,GAAUrmE,UAAUqqE,aAAa,SAAoBp9D,IAAG0M,IAAGgJ,IAAGC,IAAAA;AAC5D,QAAInW,MAAMQ,EAAAA,KAAMR,MAAMkN,EAAMlN,KAAAA,MAAMkW,EAAAA,KAAMlW,MAAMmW,EAAAA,EAE5C,OADA/kB,GAAQO,MAAM,iDAAiDJ,SACzD,GAAA,IAAIqS,MAAM,wDAEd40D;AAAAA,IAAAA,GAAoB9mE,KAAKR,IAG7BA,MAAAA,KAAKkrE,UAAAA,GACLlrE,KAAK6kB,KAAKvV,IAAG0M,IAAGgJ,IAAGC,EAAAA,GACnBjlB,KAAK41B,OAAAA;EAAAA,GAkBP8yC,GAAUrmE,UAAUsqE,YAAY,SAASr9D,IAAG0M,IAAGgJ,IAAGC,IAAAA;AAChD,QAAInW,MAAMQ,EAAAA,KAAMR,MAAMkN,EAAAA,KAAMlN,MAAMkW,EAAMlW,KAAAA,MAAMmW,EAAAA,EAE5C,OADA/kB,GAAQO,MAAM,gDAAgDJ,SAAAA,GACxD,IAAIqS,MAAM,uDAAA;AAEd1S,SAAKyoE,oBAITzoE,KAAKynE,YAAY,WACjBznE,KAAKysE,SAASn9D,IAAG0M,IAAGgJ,IAAGC,EAAAA;EAAAA,GASzByjD,GAAUrmE,UAAU8tB,OAAO,SAASy8C,IAClCA;AAAAA,IAAAA,KAAqC,aAAA,OAAhBA,MAA4BA;AAEjD,aADIC,KAAgB7sE,KAAKu5C,IAAIliC,SAASkb,mBAAAA,EAAqB3J,YAClDra,KAAI,GAAGA,KAAIvO,KAAKu5C,IAAIliC,SAAS+W,iBAAAA,GAAoB7f,KACxDvO,MAAKu5C,IAAIprB,QAAQ5f,KAAI,CAAA,GACrBvO,KAAKu5C,IAAIliC,SAASzF,IAAI,GAAA;AAIxB,QAFA5R,KAAKu5C,IAAIprB,QAAQ0+C,EAEbD,GAAAA,IAAa;AACf5sE,WAAKqnE,IAAI1nD,WAAW3f,KAAKu5C,IAAIliC,SAASuD,YACtC;AAAA,UAAIysD,KAAM,IAAID,GAAapnE,KAAKqnE,GAChCrnE;AAAAA,WAAK8sE,SAASj4D,KAAK7U,KAAKqnE,GAAAA,GACxBrnE,KAAKqnE,MAAMA;IACb;EAAA,GASFqB,GAAUrmE,UAAU4jB,UAAU,SAAS8mD,IACrCA;AAAAA,IAAAA,KAAmC,aAAA,OAAfA,MAA2BA;AAE/C,aADIF,KAAgB7sE,KAAKu5C,IAAIliC,SAASkb,mBAAAA,EAAqB3J,YAClDra,KAAI,GAAGA,KAAIvO,KAAKu5C,IAAIliC,SAAS+W,iBAAAA,GAAoB7f,KACxDvO,MAAKu5C,IAAIprB,QAAQ5f,KAAI,CAAA,GACrBvO,KAAKu5C,IAAIliC,SAASzF,IAAI,GAExB5R;AAAAA,SAAKu5C,IAAIprB,QAAQ0+C,EAAAA,GAEbE,MAAuC,MAAzB/sE,KAAK8sE,SAASt+D,WAC9BxO,KAAKqnE,MAAMrnE,KAAK8sE,SAAS9mD,IAAAA,GACzBhmB,KAAKynE,YAAYznE,KAAKqnE,IAAII,WAC1BznE,KAAKwnE,cAAcxnE,KAAKqnE,IAAIG,aAC5BxnE,KAAK+pB,OAAO/pB,KAAKqnE,IAAIt9C,MACrB/pB,KAAK8nE,UAAU9nE,KAAKqnE,IAAIS,SACxB9nE,KAAK6tB,YAAY7tB,KAAKqnE,IAAIx5C,WAC1B7tB,KAAK6nE,WAAW7nE,KAAKqnE,IAAIQ,UACzB7nE,KAAKsoE,WAAWtoE,KAAKqnE,IAAIiB,UACzBtoE,KAAKqoE,iBAAiBroE,KAAKqnE,IAAIgB;EAAAA,GAQnCK,GAAUrmE,UAAUouC,YAAY,WAC9B;AAAA,UAAM,IAAI/9B,MAAM,4BAAA;EAAA;AAalB,MAAI22D,KAAU,SAAS35C,IAAAA;AACrB,QAII/gB,IAAGC,IAAGC,IAAGpM;AAMb,QAAA,SAJIitB,GAAMs9C,qBACRt9C,KAAQA,GAAMu9C,SAAAA,IAAAA,CAGXv9C,GACH,QAAO,EAAE/gB,GAAG,GAAGC,GAAG,GAAGC,GAAG,GAAGpM,GAAG,GAAGitB,OAAOA,GAAAA;AAG1C,QAZoB,sEAYFpsB,KAAKosB,EACrB/gB,EAAAA,CAAAA,KAAI,GACJC,KAAI,GACJC,KAAI,GACJpM,KAAI;SACC;AACL,UAAIwmC,KApBM,gDAoBUv6B,KAAKghB,EACzB;AAAA,UAAgB,SAAZuZ,GACFt6B,CAAAA,KAAIL,SAAS26B,GAAQ,CAAA,CAAA,GACrBr6B,KAAIN,SAAS26B,GAAQ,CAAA,CAAA,GACrBp6B,KAAIP,SAAS26B,GAAQ,CACrBxmC,CAAAA,GAAAA,KAAI;eAGY,UADhBwmC,KA1BS,gEA0BQv6B,KAAKghB,EAAAA,GAEpB/gB,CAAAA,KAAIL,SAAS26B,GAAQ,CACrBr6B,CAAAA,GAAAA,KAAIN,SAAS26B,GAAQ,CAAA,CAAA,GACrBp6B,KAAIP,SAAS26B,GAAQ,CAAA,CAAA,GACrBxmC,KAAIwkB,WAAWgiB,GAAQ,CAClB,CAAA;WAAA;AAGL,YAFAxmC,KAAI,GAEiB,YAAA,OAAVitB,MAA0C,QAApBA,GAAM3qB,OAAO,CAAA,GAAY;AACxD,cAAI2iB,KAAW,IAAI/iB,GAAS+qB,EAAAA;AAE1BA,UAAAA,KADEhI,GAAS5iB,KACH4iB,GAAS1Y,MAAAA,IAET;QAEZ;AAEqB,cAAjB0gB,GAAMlhB,UACRG,KAAI+gB,GAAMnf,UAAU,GAAG,CAAA,GACvB5B,MAAKA,IACLC,KAAI8gB,GAAMnf,UAAU,GAAG,CACvB3B,GAAAA,MAAKA,IACLC,KAAI6gB,GAAMnf,UAAU,GAAG,CAAA,GACvB1B,MAAKA,OAELF,KAAI+gB,GAAMnf,UAAU,GAAG,CAAA,GACvB3B,KAAI8gB,GAAMnf,UAAU,GAAG,CAAA,GACvB1B,KAAI6gB,GAAMnf,UAAU,GAAG,CAAA,IAEzB5B,KAAIL,SAASK,IAAG,EAAA,GAChBC,KAAIN,SAASM,IAAG,EAChBC,GAAAA,KAAIP,SAASO,IAAG,EAAA;MAClB;IAEJ;AACA,WAAO,EAAEF,GAAGA,IAAGC,GAAGA,IAAGC,GAAGA,IAAGpM,GAAGA,IAAGitB,OAAOA,GAAAA;EAAAA,GAUtCg4C,KAAoB,WACtB;AAAA,WAAO1nE,KAAKqnE,IAAIK,qBAAyC,KAApB1nE,KAAKgoE;EAAAA,GAUxCV,KAAsB,WAAA;AACxB,WAAO7/B,QAAQznC,KAAKqnE,IAAIC,uBAA2C,KAApBtnE,KAAKgoE,WAAAA;EAAAA;AActDU,EAAAA,GAAUrmE,UAAU6qE,WAAW,SAAS3gD,IAAMjd,IAAG0M,IAAGsX,IAAAA;AAClD,QAAIxkB,MAAMQ,EAAAA,KAAMR,MAAMkN,EAAsB,KAAA,YAAA,OAATuQ,GAEjC,OADArsB,GAAQO,MAAM,+CAA+CJ,SAAAA,GACvD,IAAIqS,MAAM,sDAAA;AAGlB,QADA4gB,KAAWxkB,MAAMwkB,EAAAA,IAAAA,SAAwBA,IAAAA,CACrCo0C,GAAkBlnE,KAAKR,IAAAA,GAA3B;AAIA,UAAImtE,KAAOC,GAAQptE,KAAKqnE,IAAIr0C,UAAU8d,QAAAA,GAGlCh1B,KAAQ9b,KAAKqnE,IAAIr0C,UAAUpP;AAE/BypD,MAAAA,GAAQ7sE,KAAKR,MAAM,EACjBusB,MAAMA,IACNjd,GAAGA,IACH0M,GAAGA,IACHF,OAAOA,IACPqX,OAAOg6C,IACP/5C,OAAOpzB,KAAKskC,WACZhR,UAAUA,GAAAA,CAAAA;IAdZ;EAAA,GA6BFo1C,GAAUrmE,UAAUirE,aAAa,SAAS/gD,IAAMjd,IAAG0M,IAAGsX,IAAAA;AACpD,QAAIxkB,MAAMQ,EAAAA,KAAMR,MAAMkN,EAAAA,KAAsB,YAAA,OAATuQ,GAEjC,OADArsB,GAAQO,MAAM,iDAAiDJ,SAAAA,GACzD,IAAIqS,MAAM,wDAAA;AAElB,QAAI40D,CAAAA,GAAoB9mE,KAAKR,IAA7B,GAAA;AAIAszB,MAAAA,KAAWxkB,MAAMwkB,EAAAA,IAAAA,SAAwBA;AAEzC,UAAI65C,KAAOC,GAAQptE,KAAKqnE,IAAIr0C,UAAU8d,QAAAA,GAClCh1B,KAAQ9b,KAAKqnE,IAAIr0C,UAAUpP;AAE/BypD,MAAAA,GAAQ7sE,KAAKR,MAAM,EACjBusB,MAAMA,IACNjd,GAAGA,IACH0M,GAAGA,IACHF,OAAOA,IACP4Z,eAAe,UACfvC,OAAOg6C,IACP/5C,OAAOpzB,KAAKskC,WACZhR,UAAUA,GAfZ,CAAA;IAAA;EAAA,GA4BFo1C,GAAUrmE,UAAUkrE,cAAc,SAAShhD,IAAAA;AACzC,QAAoB,YAAA,OAATA,GAKT,OAJArsB,GAAQO,MACN,kDACAJ,SAAAA,GAEI,IAAIqS,MACR,yDAAA;AAGJ,QAAI6mC,KAAMv5C,KAAKu5C,KACXhqC,KAAIvP,KAAKu5C,IAAIliC,SAASoD,aAEtBkF,KAAW45B,GAAIliC,SAASuD,YAAAA,GACxB4yD,KACDj0B,GAAIhjB,mBAAmBhK,EAAQ5M,IAAAA,KAAY45B,GAAIliC,SAASoD;AAa3D,WAAO,IAVW,SAAStE,IAAAA;AAEzB,UAAIyiC,MADJziC,KAAUA,MAAW,CAAA,GACAkU,SAAS;AAM9B,aALAhW,OAAO+O,eAAepjB,MAAM,SAAS,EACnCqjB,KAAK,WAAA;AACH,eAAOu1B;MACT,EAAA,CAAA,GAEK54C;IAAAA,EAEc,EAAEqqB,OAZzBmjD,MAAYt5D,KAAK+W,MAAY,KAAJ1b,KAAU,KAAM,GAAA,IAAS,IAAA,CAAA;EAAA,GA0BpDm5D,GAAUrmE,UAAUyZ,QAAQ,SAAS2xD,IAAYC,IAC/C;AAAA,QAAI5+D,MAAM2+D,EAAe3+D,KAAAA,MAAM4+D,EAAAA,EAE7B,OADAxtE,GAAQO,MAAM,4CAA4CJ,SAAAA,GACpD,IAAIqS,MAAM,mDAAA;AAElB,QAAI8C,KAAS,IAAIgF,GAAOizD,IAAY,GAAK,GAAKC,IAAa,GAAK,CAChE1tE;AAAAA,SAAKqnE,IAAIr0C,YAAYhzB,KAAKqnE,IAAIr0C,UAAUtP,SAASlO,EAAAA;EAAAA,GAYnDkzD,GAAUrmE,UAAU4hB,SAAS,SAASkP,IAAAA;AACpC,QAAIrkB,MAAMqkB,EAAAA,EAER,OADAjzB,GAAQO,MAAM,6CAA6CJ,SAAAA,GACrD,IAAIqS,MAAM,oDAAA;AAElB,QAAI8C,KAAS,IAAIgF,GACftG,KAAKkhB,IAAIjC,EAAAA,GACTjf,KAAKmhB,IAAIlC,EAAAA,GAAAA,CACRjf,KAAKmhB,IAAIlC,EACVjf,GAAAA,KAAKkhB,IAAIjC,EACT,GAAA,GACA,CAAA;AAEFnzB,SAAKqnE,IAAIr0C,YAAYhzB,KAAKqnE,IAAIr0C,UAAUtP,SAASlO,EAAAA;EAAAA,GAYnDkzD,GAAUrmE,UAAU2hB,YAAY,SAAS1U,IAAG0M,IAAAA;AAC1C,QAAIlN,MAAMQ,EAAAA,KAAMR,MAAMkN,EAAAA,EAEpB,OADA9b,GAAQO,MAAM,gDAAgDJ,SACxD,GAAA,IAAIqS,MAAM,uDAElB;AAAA,QAAI8C,KAAS,IAAIgF,GAAO,GAAK,GAAK,GAAK,GAAKlL,IAAG0M,EAAAA;AAC/Chc,SAAKqnE,IAAIr0C,YAAYhzB,KAAKqnE,IAAIr0C,UAAUtP,SAASlO,EAAAA;EAAAA,GAgBnDkzD,GAAUrmE,UAAU2wB,YAAY,SAASvwB,IAAGoM,IAAGW,IAAGC,IAAGjO,IAAGmiB,IACtD;AAAA,QAAI7U,MAAMrM,EAAMqM,KAAAA,MAAMD,EAAAA,KAAMC,MAAMU,EAAAA,KAAMV,MAAMW,EAAMX,KAAAA,MAAMtN,EAAAA,KAAMsN,MAAM6U,EAAAA,EAEpE,OADAzjB,GAAQO,MAAM,gDAAgDJ,SACxD,GAAA,IAAIqS,MAAM,uDAElB;AAAA,QAAI8C,KAAS,IAAIgF,GAAO/X,IAAGoM,IAAGW,IAAGC,IAAGjO,IAAGmiB,EAAAA;AACvC3jB,SAAKqnE,IAAIr0C,YAAYhzB,KAAKqnE,IAAIr0C,UAAUtP,SAASlO,EAAAA;EAAAA,GAgBnDkzD,GAAUrmE,UAAUsrE,eAAe,SAASlrE,IAAGoM,IAAGW,IAAGC,IAAGjO,IAAGmiB,IACzDlhB;AAAAA,IAAAA,KAAIqM,MAAMrM,EAAK,IAAA,IAAIA,IACnBoM,KAAIC,MAAMD,EAAAA,IAAK,IAAIA,IACnBW,KAAIV,MAAMU,EAAAA,IAAK,IAAIA,IACnBC,KAAIX,MAAMW,EAAK,IAAA,IAAIA,IACnBjO,KAAIsN,MAAMtN,EAAAA,IAAK,IAAIA,IACnBmiB,KAAI7U,MAAM6U,EAAAA,IAAK,IAAIA,IACnB3jB,KAAKqnE,IAAIr0C,YAAY,IAAIxY,GAAO/X,IAAGoM,IAAGW,IAAGC,IAAGjO,IAAGmiB,EAAAA;EAAAA;AAyCjD,MAAIiqD,KAAa,WAAA;AACf,WACE5tE,KAAKuoE,OAAO,CAAA,IAAK,KACjBvoE,KAAKuoE,OAAO,CAAK,IAAA,KACjBvoE,KAAKuoE,OAAO,CAAA,IAAK,KACjBvoE,KAAKuoE,OAAO,CAAA,IAAK;EAAA;AAkBrBG,EAAAA,GAAUrmE,UAAUwrE,YAAY,SAC9BC,IACAjrD,IACAG,IACA+qD,IACAC,IACA1+D,IACA0M,IACAqO,IACAC,IAEA;AAAA,QAAI2jD,KAAkBjuE,KAAKu5C,IAAI3E,mBAAmBk5B,EAC9CI,GAAAA,KAAU,GACVC,KAAU,GAGVC,KAAc,GACdC,KAAc;AAAA,eAEPN,MAAAA,WAAiC1jD,OAE1C+jD,KAAc/jD,KAAQ0jD,IACtBM,KAAc/jD,KAAS0jD,IACvBE,KAAYD,GAAgB5jD,QAAQ0jD,KAAU1jD,KAAS0jD,IACvDI,KAAYF,GAAgB3jD,SAAS0jD,KAAW1jD,KAAU0jD,KAI3C,WAAN1+D,OACTA,KAAIuT,IACJ7G,KAAIgH,IACJH,KAAK,GACLG,KAAK,IAAA,WAGI+qD,MAAAA,WAAiC1jD,OAC1CA,KAAQ0jD,IACRzjD,KAAS0jD,KAAAA,WAEAD,MAA2C,WAAV1jD,OAC1CA,KAAQ4jD,GAAgB5jD,OACxBC,KAAS2jD,GAAgB3jD;AAG3B,QAAIgkD,KAAiCtuE,KAAKqnE,IAAIr0C,UAAUxP,UAAAA,GACpD2P,KAAQi6C,GAAQkB,GAA+BrqD,OAAOlB,GAAAA,GACtDvN,KAAS,IAAIgF,MAIb+zD,MADJ/4D,MADAA,MADAA,KAASA,GAAOkO,SAAS4qD,GAA+BtqD,SACxCN,GAAAA,SAAS4qD,GAA+BpqD,IACxCR,GAAAA,SAAS4qD,GAA+BxyD,KACrC8I,GAAAA,iBACjB,IAAIM,GACF5V,KAAIuT,KAAKurD,IACTpyD,KAAIgH,KAAKqrD,IACTN,KAASG,IACTF,KAAUG,EAAAA,CAAAA;AAId,QAAInuE,KAAKwuE,YAAY;AAGnB,eAQIC,IAVAC,KAAYC,GAAenuE,KAAKR,MAAMuuE,EAAAA,GACtC9vD,KAAQ,CAAA,GACH5O,KAAK,GAAGA,KAAK6+D,GAAUlgE,QAAQqB,MAAM,EAAA,QACxC4O,GAAMtJ,QAAQu5D,GAAU7+D,EAAAA,CAAAA,KAC1B4O,GAAM5J,KAAK65D,GAAU7+D,EAAAA,CAAAA;AAIzB++D,MAAAA,GAAUnwD,EAAAA;AAKV,eAFIkP,KAAMlP,GAAM,CAAA,GACZu8B,KAAMv8B,GAAMA,GAAMjQ,SAAS,CACtBD,GAAAA,KAAIof,IAAKpf,KAAIysC,KAAM,GAAGzsC,MAAK;AAClCvO,aAAKu5C,IAAIprB,QAAQ5f,EAAAA;AAEjB,YAAIsgE,KACF7uE,KAAKu5C,IAAIliC,SAAS4e,SAAS5L,QAAQrqB,KAAKuoE,OAAO,CAAKvoE,IAAAA,KAAKuoE,OAAO,CAC9DuG,GAAAA,KAAkB,MAANvgE,KAAUvO,KAAKo3B,OAAOp3B,KAAKuoE,OAAO,CAAA,IAAKvoE,KAAKuoE,OAAO,CAAA,GAC/DwG,KACF/uE,KAAKu5C,IAAIliC,SAAS4e,SAAS3L,SAC3BtqB,KAAKo3B,OACLp3B,KAAKuoE,OAAO,CAAA,IACZvoE,KAAKuoE,OAAO,CAAA,GACVyG,KACFhvE,KAAKu5C,IAAIliC,SAAS4e,SAAS3L,SAAStqB,KAAKuoE,OAAO,CAAA,IAAKvoE,KAAKuoE,OAAO,CAAA,GAC/D0G,KACI,MAAN1gE,KAAU,IAAIwgE,MAAmBxgE,KAAI,KAAKygE;AAE5C,YAAkC,MAA9BhvE,KAAKqnE,IAAIY,UAAUz5D,QAAc;AACnC,cAAI0gE,KAAWlvE,KAAKu6B;AACpBk0C,UAAAA,KAAWnpC,KAAKC,MAAMD,KAAKE,UAAUxlC,KAAKqnE,IAAIY,SAC9CjoE,CAAAA,GAAAA,KAAKu6B,OAAO40C,GACVV,IACAzuE,KAAKm3B,OAAOn3B,KAAKuoE,OAAO,CACvB0G,GAAAA,CAAAA,KAAwBH,KAAY9uE,KAAKqnE,IAAImB,sBAAAA,GAEhD4G,GAAU5uE,KAAKR,MAAM,QAAQ,IAAA,GAC7BA,KAAKu6B,OAAO20C;QACd;AACA,YAAIG,KAAU/pC,KAAKC,MAAMD,KAAKE,UAAU+oC,EACxCc,CAAAA;AAAAA,QAAAA,KAAUF,GACR,CAACE,EAAAA,GACDrvE,KAAKm3B,OAAOn3B,KAAKuoE,OAAO,CACvB0G,GAAAA,CAAAA,KAAwBH,KAAY9uE,KAAKqnE,IAAImB,sBAAAA,EAC9C,CAEF;AAAA,YAAM8G,MAAiB/gE,KAAIof,MAAOpf,KAAIysC,OAAQ4yB,GAAWptE,KAAKR,IAAAA;AAE1DsvE,QAAAA,OACFtvE,KAAKu5C,IAAIh/B,kBAAAA,GACTva,KAAKu5C,IACF10B,KACC7kB,KAAKuoE,OAAO,CAAA,GACZvoE,KAAKuoE,OAAO,CAAA,GACZsG,IACAG,IACA,IAAA,EAEDh3C,KACAG,EAAAA,YAAAA,IAELn4B,KAAKu5C,IAAIpF,SACP25B,IACA,QACAuB,GAAQ//D,GACR+/D,GAAQrzD,GACRqzD,GAAQrqD,GACRqqD,GAAQpqD,GACR,MACA,MACAkO,EAAAA,GAEEm8C,MACFtvE,KAAKu5C,IAAIz+B,qBAEb;MAAA;IACF,MACE9a,MAAKu5C,IAAIpF,SACP25B,IACA,QACAS,GAAMj/D,GACNi/D,GAAMvyD,GACNuyD,GAAMvpD,GACNupD,GAAMtpD,GACN,MACA,MACAkO,EAAAA;EAAAA;AAKN,MAAIw7C,KAAiB,SAASp0C,IAAMwe,IAAWG,IAAAA;AAC7C,QAAI10C,KAAS,CAAA;AACbu0C,IAAAA,KAAYA,MAAa/4C,KAAKu5C,IAAIliC,SAAS4e,SAAS5L,OACpD6uB,KACEA,MACAl5C,KAAKu5C,IAAIliC,SAAS4e,SAAS3L,SAAStqB,KAAKuoE,OAAO,CAAA,IAAKvoE,KAAKuoE,OAAO,CAAA;AACnE,QAAIgH,KAAUvvE,KAAKo3B,OAAOp3B,KAAKqnE,IAAImB;AAEnC,YAAQjuC,GAAKh3B,MAAAA;MACX;MACA,KAAK;MACL,KAAK;AACHiB,QAAAA,GAAOqQ,KAAKX,KAAKoI,OAAOie,GAAKve,IAAIuzD,MAAWr2B,EAAa,IAAA,CAAA;AACzD;MACF,KAAK;AACH10C,QAAAA,GAAOqQ,KACLX,KAAKoI,OAAOie,GAAKve,IAAIuzD,KAAUh1C,GAAKwxC,UAAU7yB,EAAAA,IAAa,CAE7D10C,GAAAA,GAAOqQ,KACLX,KAAKoI,OAAOie,GAAKve,IAAIuzD,KAAUh1C,GAAKwxC,UAAU7yB,EAAAA,IAAa,CAE7D;AAAA;MACF,KAAK;AACH,YAAIs2B,KAAuBC,GACzBzvE,KAAKqnE,IAAIe,UAAU94D,GACnBtP,KAAKqnE,IAAIe,UAAUpsD,GACnBue,GAAKd,IACLc,GAAKb,IACLa,GAAKjrB,GACLirB,GAAKve,CAAAA;AAEPxX,QAAAA,GAAOqQ,KACLX,KAAKoI,OAAOkzD,GAAqBxzD,IAAIuzD,MAAWr2B,EAAa,IAAA,CAAA,GAE/D10C,GAAOqQ,KACLX,KAAKoI,OACFkzD,GAAqBxzD,IAAIwzD,GAAqBvqD,IAAIsqD,MACjDr2B,EAAAA,IACA,CAEN;AAAA;MACF,KAAK;AACH,YAAIw2B,KAAoBC,GACtB3vE,KAAKqnE,IAAIe,UAAU94D,GACnBtP,KAAKqnE,IAAIe,UAAUpsD,GACnBue,GAAKd,IACLc,GAAKb,IACLa,GAAKZ,IACLY,GAAKX,IACLW,GAAKjrB,GACLirB,GAAKve,CAEPxX;AAAAA,QAAAA,GAAOqQ,KACLX,KAAKoI,OAAOozD,GAAkB1zD,IAAIuzD,MAAWr2B,EAAAA,IAAa,CAE5D10C,GAAAA,GAAOqQ,KACLX,KAAKoI,OACFozD,GAAkB1zD,IAAI0zD,GAAkBzqD,IAAIsqD,MAAWr2B,EAAAA,IACtD,CAAA;AAEN;MACF,KAAK;AACH10C,QAAAA,GAAOqQ,KAAKX,KAAKoI,OAAOie,GAAKve,IAAIuzD,MAAWr2B,EAAAA,IAAa,CACzD10C,GAAAA,GAAOqQ,KAAKX,KAAKoI,OAAOie,GAAKve,IAAIue,GAAKtV,IAAIsqD,MAAWr2B,EAAAA,IAAa,CAAA;IAAA;AAGtE,aAAS3qC,KAAI,GAAGA,KAAI/J,GAAOgK,QAAQD,MAAK,EACtC,QAAOvO,KAAKu5C,IAAIliC,SAAS+W,iBAAAA,IAAqB5pB,GAAO+J,EACnDikB,IAAAA,CAAAA,GAAQhyB,KAAKR,IAGjB;AAAA,WAAOwE;EAAAA,GAGLguB,KAAU,WAAA;AACZ,QAAIi1C,KAAYznE,KAAKynE,WACjBD,KAAcxnE,KAAKwnE,aACnBz9C,KAAO/pB,KAAK+pB,MACZ+9C,KAAU9nE,KAAK8nE,SACfj6C,KAAY7tB,KAAK6tB,WACjBg6C,KAAW7nE,KAAK6nE;AACpB7nE,SAAKu5C,IAAI/mB,QAAAA,GACTxyB,KAAKynE,YAAYA,IACjBznE,KAAKwnE,cAAcA,IACnBxnE,KAAK+pB,OAAOA,IACZ/pB,KAAK8nE,UAAUA,IACf9nE,KAAK6tB,YAAYA,IACjB7tB,KAAK6nE,WAAWA;EAAAA,GAGdsH,KAAmB,SAASS,IAAOtgE,IAAG0M,IAAAA;AACxC,aAASzN,KAAI,GAAGA,KAAIqhE,GAAMphE,QAAQD,KAChC,SAAQqhE,GAAMrhE,EAAAA,EAAGhL,MAAAA;MACf,KAAK;AACHqsE,QAAAA,GAAMrhE,EAAGorB,EAAAA,MAAMrqB,IACfsgE,GAAMrhE,EAAAA,EAAGqrB,MAAM5d;MACjB,KAAK;AACH4zD,QAAAA,GAAMrhE,EAAAA,EAAGkrB,MAAMnqB,IACfsgE,GAAMrhE,EAAAA,EAAGmrB,MAAM1d;MAIjB;AACE4zD,QAAAA,GAAMrhE,EAAAA,EAAGe,KAAKA,IACdsgE,GAAMrhE,EAAAA,EAAGyN,KAAKA;IAAAA;AAGpB,WAAO4zD;EAAAA,GAGLhB,KAAY,SAASnwD,IAAAA;AACvB,WAAOA,GAAM2qB,KAAK,SAAS3mC,IAAGoM,IAAAA;AAC5B,aAAOpM,KAAIoM;IACb,CAAA;EAAA,GAGEo8D,KAAiB,SAAShzC,IAAM43C,IAAAA;AAClC,QAAIpI,KAAYznE,KAAKynE,WACjBD,KAAcxnE,KAAKwnE,aACnBM,KAAU9nE,KAAK8nE,SACfgI,KAAe9vE,KAAK6tB,WACpBA,KAAY3Z,KAAK+C,IAAI64D,KAAe9vE,KAAKqnE,IAAIr0C,UAAUpP,MAAAA,GACvDikD,KAAW7nE,KAAK6nE;AAEpB,QAAI7nE,KAAKwuE,YAAY;AAOnB,eAJIC,IACAsB,IAHAC,KAAW1qC,KAAKC,MAAMD,KAAKE,UAAUxlC,KAAKu6B,IAC1C01C,CAAAA,GAAAA,KAAQ3qC,KAAKC,MAAMD,KAAKE,UAAUxlC,KAAKu6B,IAAAA,CAAAA,GAGvC9b,KAAQ,CAEHlQ,GAAAA,KAAI,GAAGA,KAAI0hE,GAAMzhE,QAAQD,KAChC,KAAA,WAAW0hE,GAAM1hE,EAAAA,EAAGe,EAGlB,UAFIgT,KAAOqsD,GAAenuE,KAAKR,MAAMiwE,GAAM1hE,EAAAA,CAAAA,GAElCsB,KAAK,GAAGA,KAAKyS,GAAK9T,QAAQqB,MAAM,EAAA,QACnC4O,GAAMtJ,QAAQmN,GAAKzS,EAAAA,CAAAA,KACrB4O,GAAM5J,KAAKyN,GAAKzS,EAAAA,CAAAA;AAMxB,eAASiB,KAAI,GAAGA,KAAI2N,GAAMjQ,QAAQsC,KAChC,QAAO9Q,KAAKu5C,IAAIliC,SAAS+W,iBAAqB3P,IAAAA,GAAM3N,EAAAA,IAClD0hB,CAAAA,GAAQhyB,KAAKR,IAAAA;AAGjB4uE,MAAAA,GAAUnwD,EAAAA;AAIV,eAFIkP,KAAMlP,GAAM,CACZu8B,GAAAA,KAAMv8B,GAAMA,GAAMjQ,SAAS,CAAA,GACtBe,KAAIoe,IAAKpe,KAAIyrC,KAAM,GAAGzrC,MAAK;AAClCvP,aAAKu5C,IAAIprB,QAAQ5e,EAAAA,GAEjBvP,KAAKynE,YAAYA,IACjBznE,KAAKwnE,cAAcA,IACnBxnE,KAAK8nE,UAAUA,IACf9nE,KAAK6tB,YAAYA,IACjB7tB,KAAK6nE,WAAWA;AAEhB,YAAIgH,KACF7uE,KAAKu5C,IAAIliC,SAAS4e,SAAS5L,QAAQrqB,KAAKuoE,OAAO,CAAKvoE,IAAAA,KAAKuoE,OAAO,CAC9DuG,GAAAA,KAAkB,MAANv/D,KAAUvP,KAAKo3B,OAAOp3B,KAAKuoE,OAAO,CAAA,IAAKvoE,KAAKuoE,OAAO,CAAA,GAC/DwG,KACF/uE,KAAKu5C,IAAIliC,SAAS4e,SAAS3L,SAC3BtqB,KAAKo3B,OACLp3B,KAAKuoE,OAAO,CAAA,IACZvoE,KAAKuoE,OAAO,CAAA,GACVyG,KACFhvE,KAAKu5C,IAAIliC,SAAS4e,SAAS3L,SAAStqB,KAAKuoE,OAAO,CAAA,IAAKvoE,KAAKuoE,OAAO,CAAA,GAC/D0G,KACI,MAAN1/D,KAAU,IAAIw/D,MAAmBx/D,KAAI,KAAKy/D;AAE5C,YAAkC,MAA9BhvE,KAAKqnE,IAAIY,UAAUz5D,QAAc;AACnC,cAAI0gE,KAAWlvE,KAAKu6B;AACpBk0C,UAAAA,KAAWnpC,KAAKC,MAAMD,KAAKE,UAAUxlC,KAAKqnE,IAAIY,SAAAA,CAAAA,GAC9CjoE,KAAKu6B,OAAO40C,GACVV,IACAzuE,KAAKm3B,OAAOn3B,KAAKuoE,OAAO,CAAA,GAAA,CACvB0G,KAAwBH,KAAY9uE,KAAKqnE,IAAImB,sBAAAA,GAEhD4G,GAAU5uE,KAAKR,MAAMi4B,IAAM,IAAA,GAC3Bj4B,KAAKu6B,OAAO20C;QACd;AAOA,YANAa,KAAUzqC,KAAKC,MAAMD,KAAKE,UAAUwqC,EACpChwE,CAAAA,GAAAA,KAAKu6B,OAAO40C,GACVY,IACA/vE,KAAKm3B,OAAOn3B,KAAKuoE,OAAO,CACvB0G,GAAAA,CAAAA,KAAwBH,KAAY9uE,KAAKqnE,IAAImB,sBAAAA,GAAAA,UAE5CqH,MAA0B,MAANtgE,IAAS;AAC/B,cAAM+/D,MAAiB//D,KAAIoe,MAAOpe,KAAIyrC,OAAQ4yB,GAAWptE,KAAKR,IAAAA;AAC1DsvE,UAAAA,OACFtvE,KAAKu5C,IAAIh/B,kBACTva,GAAAA,KAAKu5C,IACF10B,KACC7kB,KAAKuoE,OAAO,CACZvoE,GAAAA,KAAKuoE,OAAO,CACZsG,GAAAA,IACAG,IACA,IAEDh3C,EAAAA,KAAAA,EACAG,YAAAA,IAELi3C,GAAU5uE,KAAKR,MAAMi4B,IAAM43C,EAAAA,GACvBP,MACFtvE,KAAKu5C,IAAIz+B,qBAAAA;QAEb;AACA9a,aAAK6tB,YAAYiiD;MACnB;AACA9vE,WAAKu6B,OAAOy1C;IACd,MACEhwE,MAAK6tB,YAAYA,IACjBuhD,GAAU5uE,KAAKR,MAAMi4B,IAAM43C,EAAAA,GAC3B7vE,KAAK6tB,YAAYiiD;EAAAA,GAajBV,KAAY,SAASn3C,IAAM43C,IAAAA;AAC7B,SAAa,aAAT53C,MAAsB43C,MAAAA,CAAUvI,GAAoB9mE,KAAKR,IAAAA,OAIhD,aAATi4B,MAAsB43C,MAAAA,CAAUnI,GAAkBlnE,KAAKR,IAAAA,IAA3D;AASA,eAFIkwE,IAwFAxgD,IA3FAygD,KAAQ,CAIRF,GAAAA,KAAQjwE,KAAKu6B,MACRhsB,KAAI,GAAGA,KAAI0hE,GAAMzhE,QAAQD,MAAK;AACrC,YAAImW,KAAKurD,GAAM1hE,EAAAA;AAEf,gBAAQmW,GAAGnhB,MAAAA;UACT,KAAK;AACH4sE,YAAAA,GAAMt7D,KAAK,EACTu7D,OAAO,KAAA,CAAA;AAET;UAEF,KAAK;AACHD,YAAAA,GAAMt7D,KAAK,EACT4jB,OAAAA,KAEF,CAAA;AAAA;UAEF,KAAK;AACH03C,YAAAA,GAAMt7D,KAAK,EACTy5C,OAAO5pC,IACP2rD,QAAQ,CAAA,GACRp5D,KAAK,CAEP,EAAA,CAAA;AAAA;UAEF,KAAK;AACH,gBAAIq5D,KAAMH,GAAM3hE;AAChB,gBAAIyhE,GAAM1hE,KAAI,CAAA,KAAA,CAAOO,MAAMmhE,GAAM1hE,KAAI,CAAGe,EAAAA,CAAAA,MACtC4gE,KAAQ,CAACxrD,GAAGpV,IAAI2gE,GAAM1hE,KAAI,CAAA,EAAGe,GAAGoV,GAAG1I,IAAIi0D,GAAM1hE,KAAI,CAAGyN,EAAAA,CAAAA,GAChDs0D,KAAM;AACR,qBAAUA,MAAO,GAAGA,KAClB,KAAA,SACEH,GAAMG,KAAM,CAAG73C,EAAAA,SAAAA,SACf03C,GAAMG,KAAM,CAAA,EAAGF,OACf;AACAD,gBAAAA,GAAMG,KAAM,CAAA,EAAGD,OAAOx7D,KAAKq7D,EAAAA,GAC3BC,GAAMG,KAAM,CAAA,EAAGr5D,IAAIpC,KAAK6P,EAAAA;AACxB;cACF;;AAIN;UAEF,KAAK;AACHwrD,YAAAA,KAAQ,CACNxrD,GAAG+U,KAAKw2C,GAAM1hE,KAAI,CAAA,EAAGe,GACrBoV,GAAGgV,KAAKu2C,GAAM1hE,KAAI,CAAA,EAAGyN,GACrB0I,GAAGiV,KAAKs2C,GAAM1hE,KAAI,CAAA,EAAGe,GACrBoV,GAAGkV,KAAKq2C,GAAM1hE,KAAI,CAAA,EAAGyN,GACrB0I,GAAGpV,IAAI2gE,GAAM1hE,KAAI,CAAA,EAAGe,GACpBoV,GAAG1I,IAAIi0D,GAAM1hE,KAAI,CAAA,EAAGyN,CAAAA,GAEtBm0D,GAAMA,GAAM3hE,SAAS,CAAG6hE,EAAAA,OAAOx7D,KAAKq7D,EACpC;AAAA;UAEF,KAAK;AACH,gBAAIz2C,KAAKw2C,GAAM1hE,KAAI,CAAA,EAAGe,IAAK,IAAM,KAAQoV,GAAG+U,KAAKw2C,GAAM1hE,KAAI,CAAA,EAAGe,IAC1DoqB,KAAKu2C,GAAM1hE,KAAI,CAAA,EAAGyN,IAAK,IAAM,KAAQ0I,GAAGgV,KAAKu2C,GAAM1hE,KAAI,CAAGyN,EAAAA,IAC1D2d,KAAKjV,GAAGpV,IAAK,IAAM,KAAQoV,GAAG+U,KAAK/U,GAAGpV,IACtCsqB,KAAKlV,GAAG1I,IAAK,IAAM,KAAQ0I,GAAGgV,KAAKhV,GAAG1I,IACtC6d,KAAKnV,GAAGpV,GACRwqB,KAAKpV,GAAG1I;AACZk0D,YAAAA,KAAQ,CACNz2C,KAAKw2C,GAAM1hE,KAAI,CAAA,EAAGe,GAClBoqB,KAAKu2C,GAAM1hE,KAAI,CAAA,EAAGyN,GAClB2d,KAAKs2C,GAAM1hE,KAAI,CAAGe,EAAAA,GAClBsqB,KAAKq2C,GAAM1hE,KAAI,CAAA,EAAGyN,GAClB6d,KAAKo2C,GAAM1hE,KAAI,CAAA,EAAGe,GAClBwqB,KAAKm2C,GAAM1hE,KAAI,CAAGyN,EAAAA,CAAAA,GAEpBm0D,GAAMA,GAAM3hE,SAAS,CAAA,EAAG6hE,OAAOx7D,KAAKq7D,EAAAA;AACpC;UAEF,KAAK;AACHC,YAAAA,GAAMt7D,KAAK,EACTw7D,QAAQ,CAAA,GACRp5D,KAAK,CACL60D,GAAAA,KAAAA,KAGEn6D,CAAAA,GAAAA,MAAM8W,QAAQ0nD,GAAMA,GAAM3hE,SAAS,CAAGyI,EAAAA,GAAAA,KACxCk5D,GAAMA,GAAM3hE,SAAS,CAAA,EAAGyI,IAAIpC,KAAK6P,EAAAA;QAAAA;MAIzC;AASEgL,MAAAA,KAPGmgD,KAOK,OANK,aAAT53C,KACM,WAEA;AAOZ,eADIs4C,KAAAA,OACKhhE,KAAI,GAAGA,KAAI4gE,GAAM3hE,QAAQe,KAChC,KAAI4gE,GAAM5gE,EAAAA,EAAGu8D,IAGX,UAFI0E,KAAOL,GAAM5gE,EAAAA,EAAG0H,KAEXpH,KAAK,GAAGA,KAAK2gE,GAAKhiE,QAAQqB,MAAM;AACvC,YAAIi8D,KAAM0E,GAAK3gE,EAEE;AAAA,kBAAbi8D,GAAIvoE,OACNktE,GAAQjwE,KACNR,MACA8rE,GAAIx8D,GACJw8D,GAAI9vD,GACJ8vD,GAAIC,QACJD,GAAIE,YACJF,GAAIG,UACJH,GAAII,kBACJ1rD,QACAqvD,IAAAA,CACCU,EAGHG,IAAAA,GAASlwE,KAAKR,MAAM8rE,GAAIx8D,GAAGw8D,GAAI9vD,CAAAA,GAEjCu0D,KAAAA;MACF;eACK,SAAIJ,GAAM5gE,EAAAA,EAAGkpB,MAClBz4B,MAAKu5C,IAAIliC,SAASzF,IAAI,GACtB2+D,GAAAA,KAAAA;eAC4B,SAAnBJ,GAAM5gE,EAAG6gE,EAAAA,OAAgB;AAClC,YAAI9gE,KAAI6gE,GAAM5gE,EAAG++C,EAAAA,MAAMh/C,GACnB0M,KAAIm0D,GAAM5gE,EAAAA,EAAG++C,MAAMtyC;AACvB20D,QAAAA,GAAUnwE,KAAKR,MAAMmwE,GAAM5gE,EAAG8gE,EAAAA,QAAQ/gE,IAAG0M,EACzCu0D,GAAAA,KAAAA;MACF;AAGE7gD,MAAAA,MACFsJ,GAASx4B,KAAKR,MAAM0vB,EAAAA,GAElBmgD,MACFe,GAAOpwE,KAAKR,IAjJd;IAAA;EAAA,GAqJE6wE,KAAc,SAAS70D,IAAAA;AACzB,QAAIsO,KACFtqB,KAAKu5C,IAAIliC,SAASuD,YAAgB5a,IAAAA,KAAKu5C,IAAIliC,SAASoD,aAClDka,KAAUrK,MAAUtqB,KAAKu5C,IAAIliC,SAASykB,oBAAAA,IAAwB;AAClE,YAAQ97B,KAAKqnE,IAAIO,cACf;MAAA,KAAK;AACH,eAAO5rD,KAAI2Y;MACb,KAAK;AACH,eAAO3Y,KAAIsO,KAASqK;MACtB,KAAK;AACH,eAAO3Y,KAAIsO,KAAS,IAAIqK;MAC1B,KAAK;AACH,eAAO3Y,KAAIsO,KAAS,IAAIqK;MAK1B;AACE,eAAO3Y;IAAAA;EAAAA,GAIT80D,KAAgB,SAASC,IAI3B;AAAA,WAAOA,KAFL/wE,KAAKu5C,IAAIliC,SAASuD,YAAgB5a,IAAAA,KAAKu5C,IAAIliC,SAASoD,eAC9Bza,KAAKu5C,IAAIliC,SAASykB,oBAAAA,IAAwB;EAAA;AAIpE4sC,EAAAA,GAAUrmE,UAAU2uE,uBAAuB,WAAA;AACzC,QAAIC,KAAiB,WAAA;IAAA;AAgBrB,WAdAA,GAAeC,aAAa,CAAA,GAC5BD,GAAeE,eAAe,SAASvmD,IAAQ9D,IAC7C9mB;AAAAA,WAAKkxE,WAAWr8D,KAAK,CAAC+V,IAAQ9D,EAAAA,CAAAA;IAAAA,GAGhCmqD,GAAehE,WAAW,WAAA;AACxB,aAA+B,MAA3BjtE,KAAKkxE,WAAW1iE,SACX,YAGFxO,KAAKkxE,WAAW,CAAA,EAAG,CAAA;IAAA,GAG5BD,GAAejE,mBAAAA,MACRiE;EAAAA,GAETvI,GAAUrmE,UAAU+uE,gBAAgB,WAClC;AAAA,WAAOpxE,KAAKgxE,qBAAAA;EAAAA,GAEdtI,GAAUrmE,UAAUgvE,uBAAuB,WAAA;AACzC,WAAOrxE,KAAKgxE,qBAAAA;EAAAA;AAcd,MAAIP,KAAU,SACZnhE,IACA0M,IACArN,IACAkJ,IACAC,IACAo0D,IACAx8C,IACAmgD,IACAyB,IAKA;AAAA,aAFIC,KAASC,GAAUhxE,KAAKR,MAAM2O,IAAGkJ,IAAIC,IAAIo0D,EAAAA,GAEpC39D,KAAI,GAAGA,KAAIgjE,GAAO/iE,QAAQD,MAAK;AACtC,UAAIkjE,KAAQF,GAAOhjE,EAAAA;AACT,YAANA,OACE+iE,KACFI,GAAOlxE,KAAKR,MAAMyxE,GAAMh4C,KAAKnqB,IAAGmiE,GAAM/3C,KAAK1d,EAAAA,IAE3C00D,GAASlwE,KAAKR,MAAMyxE,GAAMh4C,KAAKnqB,IAAGmiE,GAAM/3C,KAAK1d,EAAAA,IAGjD21D,GAAUnxE,KACRR,MACAsP,IACA0M,IACAy1D,GAAM93C,IACN83C,GAAM73C,IACN63C,GAAM53C,IACN43C,GAAM33C,IACN23C,GAAMp3C,IACNo3C,GAAMn3C,EAAAA;IAEV;AAEKu1C,IAAAA,KAGHe,GAAOpwE,KAAKR,IAFZg5B,IAAAA,GAASx4B,KAAKR,MAAM0vB,EAAAA;EAAAA,GAMpBsJ,KAAW,SAAStJ,IAAAA;AACtB,YAAQA,IAAAA;MACN,KAAK;AACH1vB,aAAKu5C,IAAIliC,SAASzF,IAAI,GAAA;AACtB;MACF,KAAK;AACH5R,aAAKu5C,IAAIliC,SAASzF,IAAI,GAAA;IAAA;EAAA,GAKxBg/D,KAAS,WAAA;AACX5wE,SAAKu5C,IAAIvhB,KAAAA,GACTh4B,KAAKu5C,IAAIphB,YAAAA;EAAAA,GAGPu5C,KAAS,SAASpiE,IAAG0M,IAAAA;AACvBhc,SAAKu5C,IAAIliC,SAASzF,IAChBmqB,GAA8BzsB,EAAAA,IAC5B,MACA0sB,GAA4BhgB,EAAAA,IAC5B,IAAA;EAAA,GAIFqxD,KAAU,SAASl3D,IACrB;AAAA,QAAImuB;AACJ,YAAQnuB,GAAQid,OAAAA;MACd,KAAK;MACL,KAAK;AACHkR,QAAAA,KAAY;AACZ;MACF,KAAK;AACHA,QAAAA,KAAY;AACZ;MAGF;AACEA,QAAAA,KAAY;IAAA;AAIhB,QAOImqC,IAAUmD,IAAS9B,IAPnB+B,KAAiB7xE,KAAKu5C,IAAIsB,kBAAkB1kC,GAAQoW,IAAAA,GACpDwkD,KAAYF,GAAYrwE,KAAKR,MAAMmW,GAAQ6F,CAAAA,GAE3C81D,KADUhB,GAActwE,KAAKR,MAAM+wE,EAClBc,IAAAA,GAAe5sD,GAEhCP,KAAK1kB,KAAKqnE,IAAIr0C,UAAUvO,aAAa,IAAIE,GAAMxO,GAAQ7G,GAAGyhE,EAI9D,CAAA;AAAA,QAAI/wE,KAAKwuE,YAAY;AACnB,UAAIF,KAAiCtuE,KAAKqnE,IAAIr0C,UAAUxP,UAAAA,GACpDhO,KAAS,IAAIgF;AAGjBhF,MAAAA,MADAA,MADAA,KAASA,GAAOkO,SAAS4qD,GAA+BtqD,SAAAA,GACxCN,SAAS4qD,GAA+BpqD,IACxCR,GAAAA,SAAS4qD,GAA+BxyD,KAUxD;AAAA,eARIi2D,KAAe/xE,KAAKqnE,IAAIr0C,UAAUpO,iBACpC,IAAIM,GAAU/O,GAAQ7G,GAAGyhE,IAAWc,GAAe7sD,GAAG6sD,GAAe5sD,CAAAA,CAAAA,GAEnE+sD,KAAax8D,GAAOoP,iBACtB,IAAIM,GAAU/O,GAAQ7G,GAAGwiE,IAAMD,GAAe7sD,GAAG6sD,GAAe5sD,CAAAA,CAAAA,GAE9DypD,KAAYC,GAAenuE,KAAKR,MAAMgyE,EACtCvzD,GAAAA,KAAQ,CAAA,GACH5O,KAAK,GAAGA,KAAK6+D,GAAUlgE,QAAQqB,MAAM,EACN,QAAlC4O,GAAMtJ,QAAQu5D,GAAU7+D,EAC1B4O,CAAAA,KAAAA,GAAM5J,KAAK65D,GAAU7+D,EAAAA,CAAAA;AAIzB++D,MAAAA,GAAUnwD,EAIV;AAAA,eAFIkP,KAAMlP,GAAM,CAAA,GACZu8B,KAAMv8B,GAAMA,GAAMjQ,SAAS,CAAA,GACtBD,KAAIof,IAAKpf,KAAIysC,KAAM,GAAGzsC,MAAK;AAClCvO,aAAKu5C,IAAIprB,QAAQ5f,EAEjB;AAAA,YAAIugE,KAAkB,MAANvgE,KAAUvO,KAAKo3B,OAAOp3B,KAAKuoE,OAAO,CAAKvoE,IAAAA,KAAKuoE,OAAO,CAC/DwG,GAAAA,KACF/uE,KAAKu5C,IAAIliC,SAAS4e,SAAS3L,SAC3BtqB,KAAKo3B,OACLp3B,KAAKuoE,OAAO,CACZvoE,IAAAA,KAAKuoE,OAAO,CACV0J,GAAAA,KACFjyE,KAAKu5C,IAAIliC,SAAS4e,SAAS3L,SAAStqB,KAAKuoE,OAAO,CAC9CyG,GAAAA,KACFiD,KAA8BjyE,KAAKuoE,OAAO,CAAA,GACxC2J,KACFlyE,KAAKu5C,IAAIliC,SAAS4e,SAAS5L,QAAQrqB,KAAKuoE,OAAO,CAAA,GAC7CsG,KAAwBqD,KAA4BlyE,KAAKuoE,OAAO,CAAA,GAChE0G,KACI,MAAN1gE,KAAU,IAAIwgE,MAAmBxgE,KAAI,KAAKygE;AAE5C,YAAkC,MAA9BhvE,KAAKqnE,IAAIY,UAAUz5D,QAAc;AACnC,cAAI0gE,KAAWlvE,KAAKu6B;AACpBk0C,UAAAA,KAAWnpC,KAAKC,MAAMD,KAAKE,UAAUxlC,KAAKqnE,IAAIY,SAAAA,CAAAA,GAC9CjoE,KAAKu6B,OAAO40C,GACVV,IACAzuE,KAAKm3B,OAAOn3B,KAAKuoE,OAAO,CAAA,GAAA,KACnB0G,KAAwBH,EAAAA,GAE/BM,GAAU5uE,KAAKR,MAAM,QAAA,IACrBA,GAAAA,KAAKu6B,OAAO20C;QACd;AACA,YAAIiD,KAAmBhD,GACrB,CAAC7pC,KAAKC,MAAMD,KAAKE,UAAUwsC,EAAAA,CAAAA,CAAAA,GAC3BhyE,KAAKm3B,OAAOn3B,KAAKuoE,OAAO,CAAA,GAAA,CACvB0G,KAAwBH,KAAY9uE,KAAKqnE,IAAImB,sBAC9C,EAAA,CAAA;AAEEryD,QAAAA,GAAQ2F,SAAS,SACnB81D,KAAU5xE,KAAKu5C,IAAIliC,SAASuD,YAC5B5a,GAAAA,KAAKu5C,IAAI5+B,YAAYi3D,KAAUz7D,GAAQ2F,KACvCg0D,GAAAA,KAAe9vE,KAAK6tB,WACpB7tB,KAAK6tB,YAAYiiD,KAAe35D,GAAQ2F;AAG1C,YAAIs2D,KAA8B,WAApBpyE,KAAKwuE;AAEnB,YACE4D,MACAD,GAAiBn2D,IAAIm2D,GAAiBltD,KAAKgtD,IAAAA;AAE3C,cACEG,MACCD,GAAiBn2D,KAAK8yD,MACrBqD,GAAiB7iE,KAAK4iE,IACxB;AACA,gBAAIG,KAAcD,KACdj8D,GAAQoW,OACRvsB,KAAKu5C,IAAI1kB,gBACP1e,GAAQoW,MACRpW,GAAQmd,YACN4+C,KAA4BC,GAAiB7iE,CAC/C,EAAA,CAAA,GACFgjE,KAAqBnD,GACvB,CAAC7pC,KAAKC,MAAMD,KAAKE,UAAUusC,EAC3B/xE,CAAAA,CAAAA,GAAAA,KAAKm3B,OAAOn3B,KAAKuoE,OAAO,CAAA,GAAA,CACvB0G,KACCH,KACA9uE,KAAKqnE,IAAImB,sBAAAA,EACX,CAAA,GAEI8G,KACJ8C,OAAY7jE,KAAIof,MAAOpf,KAAIysC,OAAQ4yB,GAAWptE,KAAKR,IAEjDsvE;AAAAA,YAAAA,OACFtvE,KAAKu5C,IAAIh/B,kBAAAA,GACTva,KAAKu5C,IACF10B,KACC7kB,KAAKuoE,OAAO,CAAA,GACZvoE,KAAKuoE,OAAO,CAAA,GACZsG,IACAG,IACA,IAAA,EAEDh3C,KAAAA,EACAG,YAGLn4B,IAAAA,KAAKu5C,IAAIhtB,KACP8lD,IACAC,GAAmBhjE,GACnBgjE,GAAmBt2D,GACnB,EACEmX,OAAOhd,GAAQgd,OACfC,OAAOkR,IACP5O,eAAevf,GAAQuf,cAAAA,CAAAA,GAIvB45C,MACFtvE,KAAKu5C,IAAIz+B,qBAEb;UAAA;QAAA,MAKIq3D,CAAAA,GAAiBn2D,IAAIi2D,OAEvBjyE,KAAKqnE,IAAImB,0BACPyJ,KAA8BE,GAAiBn2D;AAIjD7F,QAAAA,GAAQ2F,SAAS,SACnB9b,KAAKu5C,IAAI5+B,YAAYi3D,EACrB5xE,GAAAA,KAAK6tB,YAAYiiD;MAErB;IACF,MACM35D,CAAAA,GAAQ2F,SAAS,SACnB81D,KAAU5xE,KAAKu5C,IAAIliC,SAASuD,YAAAA,GAC5B5a,KAAKu5C,IAAI5+B,YAAYi3D,KAAUz7D,GAAQ2F,KAAAA,GACvCg0D,KAAe9vE,KAAK6tB,WACpB7tB,KAAK6tB,YAAYiiD,KAAe35D,GAAQ2F,QAE1C9b,KAAKu5C,IAAIhtB,KAAKpW,GAAQoW,MAAM7H,GAAGpV,IAAItP,KAAKm3B,MAAMzS,GAAG1I,IAAIhc,KAAKo3B,MAAM,EAC9DjE,OAAOhd,GAAQgd,OACfC,OAAOkR,IACP5O,eAAevf,GAAQuf,eACvBpC,UAAUnd,GAAQmd,SAAAA,CAAAA,GAGhBnd,GAAQ2F,SAAS,SACnB9b,KAAKu5C,IAAI5+B,YAAYi3D,EACrB5xE,GAAAA,KAAK6tB,YAAYiiD;EAAAA,GAKnBY,KAAW,SAASphE,IAAG0M,IAAGu2D,IAAOC,IAAAA;AACnCD,IAAAA,KAAQA,MAAS,GACjBC,KAAQA,MAAS,GAEjBxyE,KAAKu5C,IAAIliC,SAASzF,IAChBmqB,GAA8BzsB,KAAIijE,EAChC,IAAA,MACAv2C,GAA4BhgB,KAAIw2D,EAAAA,IAChC,IAAA;EAAA,GAIF7B,KAAY,SAAS32C,IAAO1qB,IAAG0M,IAAAA;AACjC,WAAOhc,KAAKu5C,IAAIvf,MAAMA,IAAO1qB,IAAG0M,IAAG,MAAM,IAAA;EAAA,GAGvC21D,KAAY,SAASriE,IAAG0M,IAAGyd,IAAIC,IAAIC,IAAIC,IAAIC,IAAIC,IAAAA;AACjD95B,SAAKu5C,IAAIliC,SAASzF,IAChB,CACEgK,GAAGgb,GAAwB6C,KAAKnqB,EAAAA,CAAAA,GAChCsM,GAAGib,GAAsB6C,KAAK1d,EAAAA,CAAAA,GAC9BJ,GAAGgb,GAAwB+C,KAAKrqB,EAAAA,CAAAA,GAChCsM,GAAGib,GAAsB+C,KAAK5d,EAAAA,CAAAA,GAC9BJ,GAAGgb,GAAwBiD,KAAKvqB,EAChCsM,CAAAA,GAAAA,GAAGib,GAAsBiD,KAAK9d,EAAAA,CAAAA,GAC9B,GAAA,EACA9K,KAAK,GAAA,CAAA;EAAA,GAUPsgE,KAAY,SAASzF,IAAQC,IAAYC,IAAUwG,IAAAA;AAKrD,aAHIC,KAAkB,IAAVx+D,KAAKghB,IACby9C,KAASz+D,KAAKghB,KAAK,GAEhB82C,KAAaC,KAClBD,CAAAA,MAA0B0G;AAE5B,QAAIE,KAAa1+D,KAAK+C,IAAIg1D,KAAWD,EAAAA;AACjC4G,IAAAA,KAAaF,MACXD,OACFG,KAAaF,KAAQE;AAWzB,aANIrB,KAAS,CAAA,GAGTsB,KAAMJ,KAAAA,KAAqB,GAE3B56D,KAAKm0D,IACF4G,KArBO,QAqBiB;AAC7B,UACI96D,KAAKD,KADIg7D,KAAM3+D,KAAKyZ,IAAIilD,IAAYD,EAAAA;AAExCpB,MAAAA,GAAO18D,KAAKi+D,GAAetyE,KAAKR,MAAM+rE,IAAQl0D,IAAIC,EAClD86D,CAAAA,GAAAA,MAAc1+D,KAAK+C,IAAIa,KAAKD,EAAAA,GAC5BA,KAAKC;IACP;AAEA,WAAOy5D;EAAAA,GAULuB,KAAiB,SAASnkE,IAAGkJ,IAAIC,IAAAA;AACnC,QAAIrV,MAAKqV,KAAKD,MAAM,GAEhBwiB,KAAK1rB,KAAIuF,KAAKkhB,IAAI3yB,EAClB63B,GAAAA,KAAK3rB,KAAIuF,KAAKmhB,IAAI5yB,EAAAA,GAClBg3B,KAAKY,IACLX,KAAAA,CAAMY,IAENy4C,KAAKt5C,KAAKA,KAAKC,KAAKA,IACpBs5C,KAAKD,KAAKt5C,KAAKY,KAAKX,KAAKY,IACzB24C,KAAO,IAAI,KAAM/+D,KAAK2P,KAAK,IAAIkvD,KAAKC,EAAAA,IAAMA,OAAQv5C,KAAKa,KAAKZ,KAAKW,KAEjEV,KAAKF,KAAKw5C,KAAKv5C,IACfE,KAAKF,KAAKu5C,KAAKx5C,IACfI,KAAKF,IACLG,KAAMF,CAAAA,IAENs5C,KAAKzwE,KAAIoV,IACTs7D,KAASj/D,KAAKkhB,IAAI89C,EAAAA,GAClBE,KAASl/D,KAAKmhB,IAAI69C,EAEtB;AAAA,WAAO,EACLz5C,IAAI9qB,KAAIuF,KAAKkhB,IAAIvd,EAAAA,GACjB6hB,IAAI/qB,KAAIuF,KAAKmhB,IAAIxd,EACjB8hB,GAAAA,IAAIA,KAAKw5C,KAASv5C,KAAKw5C,IACvBx5C,IAAID,KAAKy5C,KAASx5C,KAAKu5C,IACvBt5C,IAAIA,KAAKs5C,KAASr5C,KAAKs5C,IACvBt5C,IAAID,KAAKu5C,KAASt5C,KAAKq5C,IACvB94C,IAAI1rB,KAAIuF,KAAKkhB,IAAItd,EAAAA,GACjBwiB,IAAI3rB,KAAIuF,KAAKmhB,IAAIvd,EAAAA,EAAAA;EAAAA,GAIjBs1D,KAAU,SAAS11D,IAAAA;AACrB,WAAgB,MAARA,KAAexD,KAAKghB;EAAAA,GAG1Bu6C,KAA4B,SAAS5sD,IAAIG,IAAIsoD,IAAKC,IAAK52D,IAAI0+D,IAAAA;AAC7D,QAAIC,KAAQzwD,KAAkB,OAAZyoD,KAAMzoD,KACpB0wD,KAAQvwD,KAAkB,OAAZuoD,KAAMvoD,KACpBwwD,KAAQ7+D,KAAkB,OAAZ22D,KAAM32D,KACpB8+D,KAAQJ,KAAkB,OAAZ9H,KAAM8H,KACpBK,KAAWx/D,KAAKyZ,IAAI9K,IAAIlO,IAAI2+D,IAAOE,EACnCG,GAAAA,KAAWz/D,KAAK8mC,IAAIn4B,IAAIlO,IAAI2+D,IAAOE,EAAAA,GACnCI,KAAW1/D,KAAKyZ,IAAI3K,IAAIqwD,IAAIE,IAAOE,EAAAA,GACnCI,KAAW3/D,KAAK8mC,IAAIh4B,IAAIqwD,IAAIE,IAAOE,EACvC;AAAA,WAAO,IAAIvuD,GACTwuD,IACAE,IACAD,KAAWD,IACXG,KAAWD,EAAAA;EAAAA,GAKXjE,KAAyB,SAASmE,IAAIC,IAAIC,IAAIC,IAAIC,IAAIC,IAAIC,IAAIC,IAChE;AAAA,QAOI5kE,IACFlB,IACA+lE,IACAC,IACAC,IACAC,IAKA5xD,IACAG,IACA1T,IACA0M,IACA04D,IACAC,IACAC,IACAC,IAxBEC,KAAOd,KAAKF,IACZiB,KAAOd,KAAKF,IACZiB,KAAOd,KAAKF,IACZiB,KAAOd,KAAKF,IACZiB,KAAOd,KAAKF,IACZiB,KAAOd,KAAKF;AA0BhB,SAAK5lE,KAAI,GAAGA,KAAI6H,IAAe7H,KAoB7Be,CAAAA,MAPAuT,MAXAyxD,KAAKR,MADLrkE,KAAIlB,KA1BU,MA2BAumE,MAWJrlE,OATV+kE,KAAKR,KAAKvkE,KAAIulE,MAIFV,OAYH7kE,MALJ+kE,KAAK/kE,MATLykE,KAAKzkE,KAAIylE,KAIFV,MAOA3xD,KAIZ7G,MAPAgH,MAXAuxD,KAAKR,KAAKtkE,KAAIslE,MAWJtlE,OATVglE,KAAKR,KAAKxkE,KAAIwlE,MAIFV,OAYH9kE,MALJglE,KAAKhlE,MATL0kE,KAAK1kE,KAAI0lE,KAIFV,MAOAzxD,KAIH,KAALzU,MACFmmE,KAAOplE,IACPqlE,KAAO34D,IACP44D,KAAOtlE,IACPulE,KAAO74D,OAEP04D,KAAOxgE,KAAKyZ,IAAI+mD,IAAMplE,EAAAA,GACtBqlE,KAAOzgE,KAAKyZ,IAAIgnD,IAAM34D,EAAAA,GACtB44D,KAAO1gE,KAAK8mC,IAAI45B,IAAMtlE,EACtBulE,GAAAA,KAAO3gE,KAAK8mC,IAAI65B,IAAM74D,EAAAA;AAG1B,WAAO,IAAIkJ,GACThR,KAAK+W,MAAMypD,EAAAA,GACXxgE,KAAK+W,MAAM0pD,EAAAA,GACXzgE,KAAK+W,MAAM2pD,KAAOF,EAClBxgE,GAAAA,KAAK+W,MAAM4pD,KAAOF,EAAAA,CAAAA;EAAAA,GAWlBn5C,KAAc,WAAA;AAEhB,QACGx7B,KAAKo1E,gBACLp1E,KAAKqnE,IAAIiB,SAAS95D,UAClBxO,KAAKqnE,IAAIgB,gBAHZ;AASA,UAlBkCC,IAAUD,IAkBtCgN,MAlB4B/M,KAmBhCtoE,KAAKqnE,IAAIiB,UAnBiCD,KAoB1CroE,KAAKqnE,IAAIgB,gBAnBJ/iC,KAAKE,UAAU,EACpB8iC,UAAUA,IACVD,gBAAgBA,GAAAA,CAAAA;AAmBdroE,WAAKo1E,iBAAiBC,OACxBr1E,KAAKu5C,IAAI/d,YAAYx7B,KAAKqnE,IAAIiB,UAAUtoE,KAAKqnE,IAAIgB,cAAAA,GACjDroE,KAAKo1E,eAAeC;IATtB;EAAA;AAYH,GAAEn/D,EAAMkB,GAAAA;;;;;;;;CCtnFT,SAAUwpB,IAAAA;AAGR,MAAI00C,KAAgB,SAAS7yE,IAAAA;AAC3B,QAAIoM,IAAGW,IAAGC,IAAGjO,IAAGmiB,IAAG/U,IAAGqW,IAAG1W,IAAGuC,IAAGvB;AAE/B,SACG,eAAejM,KAAKb,EAGnB+M,GAAAA,KAAI,CACJC,GAAAA,KAAI,GACJjO,MAHAiB,MADAoM,KAAI,WAAmB2E,MAAM/Q,GAAE+L,SAAS,KAAK,CAIvCA,GAAAA,QACRhN,KAAIiO,IACJA,MAAK,EAOH,QALDkU,MACElhB,GAAEgO,WAAWhB,EAAM,KAAA,OACnBhN,GAAEgO,WAAWhB,KAAI,CAAA,KAAM,OACvBhN,GAAEgO,WAAWhB,KAAI,CAAM,KAAA,KACxBhN,GAAEgO,WAAWhB,KAAI,CAUZb,MAAAA,MADA+U,OAFAA,OAFAA,OAFAA,MAAKA,MADJpU,KAAIoU,KAAI,OACK,OACd7S,KAAI6S,KAAI,OACM,OACdpV,KAAIoV,KAAI,OACM,OACdsB,KAAItB,KAAI,OACM,MACN,IACTnU,GAAEqF,KAAKjG,KAAI,IAAIqW,KAAI,IAAI1W,KAAI,IAAIuC,KAAI,IAAIvB,KAAI,EAAA,KAC3CC,GAAEqF,KAAK,GACf;AAAA,YACG,SAASpS,IAAGoM,IAAAA;AACX,eAASW,KAAIX,IAAGW,KAAI,GAAGA,KAAK/M,CAAAA,GAAEujB,IAC/B;IAAA,GAAExW,IAAGX,GAAEL,MAAAA,GACR/K,OAAOC,aAAatD,MAAMqD,QAAQ+L,EAAAA,IAAK;EAAA,GAIvC+lE,KAAgB,SAAS9yE,IAAAA;AAC3B,QAAI+M,IACFC,IACAjO,IACAmiB,IACA/U,IACAqW,KAAIxhB,QACJgpB,KAAI,UACJzH,KAAI,KACJ1V,KAAI,cACJ0M,KAAI,SACJk9C,KAAI;AACN,SACWz2D,GAAEuZ,EAAI,EAAA,EAAA,GACbvZ,KAAIA,GAAEuZ,EAAG,EAAA,GAAA,EAAI,EACVk9C,EAAG,EAAA,OAAO,EACVA,EAAAA,EAAAA,EAAG,KAAK,OAAA,GAGX13D,KAAI,CACJmiB,GAAAA,KAAI,GACJ/U,MAHAnM,MADA+M,KAAI,QAAQwM,EAAAA,EAAGvZ,GAAEgqB,EAAAA,IAAK,KAAK,CAAA,GAIrBA,EACR7d,GAAAA,KAAI+U,IACJA,MAAK,EAEJlU,CAAAA,KACC,YAAYhN,GAAE6M,EAAAA,EAAGqU,EAAAA,IAAK,MACtB,UAAUlhB,GAAE6M,EAAAA,EAAGqU,KAAI,CAAA,IAAK,MACxB,QAAQlhB,GAAE6M,EAAGqU,EAAAA,KAAI,CAAK,IAAA,MACtB,MAAMlhB,GAAE6M,EAAGqU,EAAAA,KAAI,CAAK,IAAA,OACnBlhB,GAAE6M,EAAAA,EAAGqU,KAAI,CAAK,IAAA,KACfniB,GAAEqT,KAAKmQ,KAAKvV,MAAK,IAAKuV,KAAKvV,MAAK,IAAKuV,KAAKvV,MAAK,GAAIuV,KAAIvV,EAAAA;AAC3D,YACG,SAAShN,IAAGoM,IAAAA;AACX,eAASW,KAAIX,IAAGW,KAAI,GAAGA,KAAK/M,CAAAA,GAAEujB,IAChC;IAAA,GAAGxkB,IAAGgO,GAAEid,EACRxH,CAAAA,GAAAA,GAAEvhB,aAAatD,MAAM6kB,IAAGzjB,EAAAA;EAAAA,GAIxBg0E,KAAiB,SAAS99D,IAC5B;AAAA,WACEA,GACG9G,MAAM,EAAA,EACNK,IAAI,SAASyG,IACZ;AAAA,cAAQ,MAAMA,GAAMjH,WAAaxB,EAAAA,SAAS,EAAKuE,GAAAA,MAAAA,EAChD;IAAA,CAAA,EACAtC,KAAK,EAAM,IAAA;EAAA,GAIdukE,KAAiB,SAAS/9D,IAAAA;AAC5B,QAAIg+D,KAAkB,IAAIC,OAAO,qBAAA;AAQjC,QAN4B,QAD5Bj+D,KAAQA,GAAMjT,QAAQ,OAAO,EAAA,GACnB0Q,QAAQ,GAAA,MAChBuC,KAAQA,GAAM1S,OAAO,GAAG0S,GAAMvC,QAAQ,GAEpCuC,CAAAA,IAAAA,GAAMlJ,SAAS,MACjBkJ,MAAS,MAEyB,UAAhCg+D,GAAgBpyE,KAAKoU,EAAAA,EACvB,QAAO;AAGT,aADIlT,KAAS,IACJ+J,KAAI,GAAGA,KAAImJ,GAAMlJ,QAAQD,MAAK,EACrC/J,CAAAA,MAAUf,OAAOC,aAAa,QAAQgU,GAAMnJ,EAAAA,IAAKmJ,GAAMnJ,KAAI,CAAA,EAAA;AAE7D,WAAO/J;EAAAA,GAeLoxE,KAAc,SAASrkE,IAAAA;AAGzB,aAFI47B,KAAM,IAAI5tB,WAAWhO,GAAK/C,MAC1BD,GAAAA,KAAIgD,GAAK/C,QACND,OACL4+B,CAAAA,GAAI5+B,EAAAA,IAAKgD,GAAKd,WAAWlC,EAM3B;AAAA,YAJA4+B,KAAMkU,SAASlU,EACJrY,GAAAA,OAAO,SAASvjB,IAAM+uB,IAAAA;AAC/B,aAAO/uB,KAAO9N,OAAOC,aAAa48B,EACnC;IAAA,GAAE,EAAA;EAAA;AAILM,EAAAA,GAASrY,uBAAuB,SAASstD,IAAUC,IAAAA;AAEjD,QAAIvnE,KAAI,GACJgD,KAAOskE,MAAY,IACnBrtD,KAAe,CAOnB;AAAA,SAJ2B,YAF3BstD,QAAAA,KAAcA,MAAe,CAAA,OAG3BA,KAAc,CAACA,EAAAA,IAGZvnE,KAAI,GAAGA,KAAIunE,GAAYtnE,QAAQD,MAAK,EACvC,SAAQunE,GAAYvnE,EAClB,GAAA;MAAA,KAAK;MACL,KAAK;AACHgD,QAAAA,KAAOgkE,GAAchkE,EACrBiX,GAAAA,GAAa3T,KAAK,gBAAA;AAClB;MACF,KAAK;MACL,KAAK;AACHtD,QAAAA,KAAO+jE,GAAc/jE,EAAAA,GACrBiX,GAAa3T,KAAK,gBAAA;AAClB;MACF,KAAK;MACL,KAAK;AACHtD,QAAAA,KAAOkkE,GAAelkE,EACtBiX,GAAAA,GAAa3T,KAAK,iBAAA;AAClB;MACF,KAAK;MACL,KAAK;AACHtD,QAAAA,KAAOikE,GAAejkE,EACtBiX,GAAAA,GAAa3T,KAAK,iBAAA;AAClB;MACF,KAAK;MACL,KAAK;AACHtD,QAAAA,KAAOqkE,GAAYrkE,EACnBiX,GAAAA,GAAa3T,KAAK,cAAA;AAClB;MACF;AACE,cAAM,IAAInC,MACR,kBAAkBojE,GAAYvnE,EAAAA,IAAK,sBAAA;IAAA;AAK3C,WAAO,EAAEgD,MAAMA,IAAMiX,cAAcA,GAAa6O,QAAUnmB,EAAAA,KAAK,GAAA,EAAA;EAAA;AAElE,GAAEgF,EAAMkB,GAAAA;;;;;;;;CCpLT,SAAUwpB,IASRA;AAAAA,EAAAA,GAAS2P,WAAW,SAAS5vC,IAAKo1E,IAAMjiE,IAAAA;AACtC,YA8CF,SAAwBnT,IAAKo1E,IAAMjiE,IAAAA;AACjCiiE,MAAAA,KAAgB,UAATA,IACPjiE,KAA+B,cAAA,OAAbA,KAA0BA,KAAW,WAAW;MAAA;AAClE,UAAItP,KAAAA;AAqCJ,UACEA;AAAAA,QAAAA,MApCQ,SAAS7D,IAAKo1E,IAAMjiE,IAC5B;AAAA,cAAIkiE,KAAU,IAAIj1E,kBACdwN,KAAI,GAEJ0nE,KAAkB,SAAS1kE,IAC7B;AAAA,gBAAI2kE,KAAa3kE,GAAK/C,QAClB2nE,KAAY,CAAA,GACZC,KAAqB3yE,OAAOC;AAGhC,iBAAK6K,KAAI,GAAGA,KAAI2nE,IAAY3nE,MAAK,EAC/B4nE,CAAAA,GAAUthE,KAAKuhE,GAAwC,MAArB7kE,GAAKd,WAAWlC,EAAAA,CAAAA,CAAAA;AAEpD,mBAAO4nE,GAAUjlE,KAAK,EAAA;UAAA;AAkBxB,cAfA8kE,GAAQh1E,KAAK,OAAOL,IAAAA,CAAMo1E,EAAAA,GAE1BC,GAAQK,iBAAiB,oCAEZ,GAAA,UAATN,OACFC,GAAQ90E,SAAS,WAAA;AACQ,oBAAnB80E,GAAQv0E,SACVqS,GAASmiE,GAAgBj2E,KAAKs2E,YAE9BxiE,CAAAA,IAAAA,GAAAA,MAAS0M;UAAAA,IAIfw1D,GAAQ10E,KAAK,IAAA,GAETy0E,MAA2B,QAAnBC,GAAQv0E,OAClB,QAAOw0E,GAAgBD,GAAQM,YAAAA;QAAAA,GAIpB31E,IAAKo1E,IAAMjiE,EAE1B;MAAA,SAAStS,IAAAA;MAAI;AACb,aAAOgD;IACT,GA3FwB7D,IAAKo1E,IAAMjiE,EAAAA;EAAAA,GAmCnC8sB,GAAS21C,cAAc/1D,QASvBogB,GAAS41C,gBAAgB51C,GAAS2P;AAsHnC,GAAEr6B,EAAMkB,GAAAA,ICxKT,SAAUwpB,IAAAA;AAGR,WAAS61C,KAAAA;AACP,YACM72E,GAA0B,cACrBq/B,QAAQC,QAAQt/B,GAA0B,WAG5C82E,IAAAA,8DAGNC,MAAM,SAASn1E,IACd;AAAA,aAAOy9B,QAAQE,OAAO,IAAIzsB,MAAM,iCAAiClR,EACnE,CAAA;IAAA,CAAA,EACCo1E,KAAK,SAASC,IACb;AAAA,aAAOA,GAAYC,UAAUD,GAAYC,UAAUD;IACrD,CAAA;EACJ;AAEA,WAASE,KACP;AAAA,YACMn3E,GAAwB,YACnBq/B,QAAQC,QAAQt/B,GAAwB,SAG1C82E,IAAAA,qEAGNC,MAAM,SAASn1E,IACd;AAAA,aAAOy9B,QAAQE,OAAO,IAAIzsB,MAAM,+BAA+BlR,EACjE,CAAA;IAAA,CAAA,EACCo1E,KAAK,SAASI,IAAAA;AACb,aAAOA,GAAUF,UAAUE,GAAUF,UAAUE;IACjD,CAAA;EACJ;AAQA,MAAIC,KAAU,SAASxwD,IAAAA;AACrB,QAAIljB,KAAIpB,SAAUskB,EAAAA;AAClB,WAAa,gBAATljB,KAA6B,cACf,aAATA,MAAqBkjB,cAAehjB,SAAe,WAC1C,aAATF,MAAqBkjB,cAAe4G,SAAe,WAC1C,eAAT9pB,MAAuBkjB,cAAey2B,WAAiB,aACrDz2B,MAAOA,GAAI4a,gBAAgB1vB,QAAc,UAC3C8U,MAAwB,MAAjBA,GAAIupB,WAAuB,YACzB,aAATzsC,KAA0B,WACvB;EAAA,GASVb,KAAgB,SAASw0E,IAASC,IACpC;AAAA,QAAIC,KAAKr1E,SAASW,cAAcw0E,EAKhC;AAAA,aAAS5lE,MAJL6lE,GAAIE,cAAWD,GAAGC,YAAYF,GAAIE,YAClCF,GAAIG,aAAaH,GAAIH,cACvBI,GAAGE,YAAYH,GAAIH,UAAUO,SAASJ,GAAIG,SAAAA,IAE5BH,GAAIznD,MAClB0nD,CAAAA,GAAG1nD,MAAMpe,EAAAA,IAAO6lE,GAAIznD,MAAMpe,EAE5B;AAAA,WAAO8lE;EAAAA,GASLI,KAAY,SAAZA,GAAqB71E,IAAM81E,IAM7B;AAAA,aAJItyD,KACgB,MAAlBxjB,GAAKquC,WACDjuC,SAASiuB,eAAeruB,GAAK+1E,SAC7B/1E,IAAAA,GAAK61E,UAAU,KAAA,GACZt2C,KAAQv/B,GAAK4tB,YAAY2R,IAAOA,KAAQA,GAAMy2C,YAE7B,UAAtBF,MACmB,MAAnBv2C,GAAM8O,YACa,aAAnB9O,GAAMiP,YAENhrB,GAAM4K,YAAYynD,GAAUt2C,IAAOu2C,EAAAA,CAAAA;AA0BvC,WAtBsB,MAAlB91E,GAAKquC,aAEe,aAAlBruC,GAAKwuC,YACPhrB,GAAMkF,QAAQ1oB,GAAK0oB,OACnBlF,GAAMmF,SAAS3oB,GAAK2oB,QACpBnF,GAAM0zB,WAAW,IAAA,EAAMg1B,UAAUlsE,IAAM,GAAG,CACf,KAAA,eAAlBA,GAAKwuC,YAA6C,aAAlBxuC,GAAKwuC,aAC9ChrB,GAAMzN,QAAQ/V,GAAK+V,QAIrByN,GAAMyyD,iBACJ,QACA,WACEzyD;AAAAA,MAAAA,GAAM0yD,YAAYl2E,GAAKk2E,WACvB1yD,GAAM2yD,aAAan2E,GAAKm2E;IACzB,GAAA,IAME3yD,IAAAA;EAAAA,GAKL4yD,KAAS,SAASA,GAAOZ,IAAAA;AAE3B,QAAIa,KAAO3jE,OAAO+hB,OAChB2hD,GAAOE,QAAQh5C,QAAQC,QAAAA,CAAAA,GACvBoG,KAAKC,MAAMD,KAAKE,UAAUuyC,GAAOG,QAE/Bn4E,CAAAA,CAAAA,GAAAA,KAAOg4E,GAAOE,QAAQh5C,QAAQC,QAAAA,GAAW84C,EAAAA;AAK7C,YAFAj4E,KAAOA,GAAKo4E,YAAY,GAAGJ,IAAQ,GAAG,CAACA,EAAAA,CAAAA,GAC3Bz0D,IAAI6zD,EAAAA;EAAAA;AAAAA,GAKlBY,GAAO11E,YAAYgS,OAAO+sB,OAAOnC,QAAQ58B,SAAAA,GACxBg/B,cAAc02C,IAG/BA,GAAOE,UAAU,SAAiBG,IAASn3C,IAGzC;AAAA,WADAm3C,GAAQC,YAAYp3C,MAAW82C,GAAO11E,WAC/B+1E;EAAAA,GAGTL,GAAOG,WAAW,EAChBI,MAAM,EACJxnD,KAAK,MACLynD,WAAW,MACXC,SAAS,MACT9+B,QAAQ,MACRo0B,KAAK,MACLv0B,KAAK,MACLtjB,UAAU,MACVniB,UAAU,WAAY;EAAA,EAAA,GAExB2kE,UAAU,EACRC,KAAK,GACLroE,OAAO,MACPD,GAAG,GACH0hB,OAAO,CAAA,EAAA,GAETqlD,KAAK,EACHjnD,UAAU,YACVq4C,QAAQ,CAAC,GAAG,GAAG,GAAG,CAClBoQ,GAAAA,aAAAA,MACArpE,GAAG,GACH0M,GAAG,GACH66D,aAAa,CAAE,GACf3gE,OAAO,CAAE,GACT0iE,iBAAiB,cAAA,EAAA,GAMrBb,GAAO11E,UAAUw2E,OAAO,SAAc/nD,IAAKvtB,IAAAA;AAYzC,WAAOvD,KAAK42E,KAAK,WAEf;AAAA,cADArzE,KAAOA,OAZT,SAAiButB,IACf;AAAA,gBAAQmmD,GAAQnmD,EACd,GAAA;UAAA,KAAK;AACH,mBAAO;UACT,KAAK;AACH,mBAAsC,aAA/BA,GAAIqf,SAASniC,YAA6B,IAAA,WAAW;UAC9D;AACE,mBAAO;QAEb;MAAA,GAGyB8iB,EACfvtB,GAAAA,IAAAA;QACN,KAAK;AACH,iBAAOvD,KAAK42E,KAAKG,EAAeH,EAAAA,KAAK,SAASI,IAC5C;AAAA,mBAAOh3E,KAAKsjB,IAAI,EACdwN,KAAKpuB,GAAc,OAAO,EACxB40E,WAAWxmD,IACXkmD,WAAWA,GAGjB,CAAA,EAAA,CAAA;UAAA,CAAA;QACF,KAAK;AACH,iBAAOh3E,KAAKsjB,IAAI,EAAEwN,KAAKA,GACzB,CAAA;QAAA,KAAK;AACH,iBAAO9wB,KAAKsjB,IAAI,EAAEo2B,QAAQ5oB,GAC5B,CAAA;QAAA,KAAK;AACH,iBAAO9wB,KAAKsjB,IAAI,EAAEwqD,KAAKh9C,GAAAA,CAAAA;QACzB;AACE,iBAAO9wB,KAAKS,MAAM,sBAAA;MAAA;IAExB,CAAA;EAAA,GAGFs3E,GAAO11E,UAAUy2E,KAAK,SAAY/1E,IAAAA;AAEhC,YAAQA,IAAAA;MACN,KAAK;AACH,eAAO/C,KAAK+4E,YAAAA;MACd,KAAK;AACH,eAAO/4E,KAAKg5E,SAAAA;MACd,KAAK;AACH,eAAOh5E,KAAKi5E,MAAAA;MACd,KAAK;AACH,eAAOj5E,KAAKk5E,MAAAA;MACd;AACE,eAAOl5E,KAAKS,MAAM,iBAAA;IAAA;EAAA,GAIxBs3E,GAAO11E,UAAU02E,cAAc,WAAA;AAY7B,WAAO/4E,KAAKm5E,SAVE,CACZ,WAAA;AACE,aACEn5E,KAAKs4E,KAAKxnD,OAAO9wB,KAAKS,MAAM,oCAE/B;IAAA,GACD,WAAA;AACE,aAAOT,KAAKs4E,KAAKriD,YAAYj2B,KAAKo5E,YACpC;IAAA,CAAA,CAAA,EAE4BxC,KAAK,WAAA;AAEjC,UASIyC,KAAe,EACjBxhD,UAAU,YACVyhD,SAAS,gBACTjvD,QAC6B,YAAA,OAAnBrqB,KAAKm3E,IAAI9sD,SAChBvb,MAAM9O,KAAKm3E,IAAI9sD,KACgB,KAAA,YAAA,OAAzBrqB,KAAKm3E,IAAIoC,eACfzqE,MAAM9O,KAAKm3E,IAAIoC,WAAAA,IAEZrlE,KAAK8mC,IACHh7C,KAAKs4E,KAAKxnD,IAAI0oD,aACdx5E,KAAKs4E,KAAKxnD,IAAI2oD,aACdz5E,KAAKs4E,KAAKxnD,IAAI4oD,WAAAA,IAJhB15E,KAAKm3E,IAAIoC,eAKJ,MACXvjC,MAAM,GACN6D,OAAO,GACPhE,KAAK,GACL0yB,QAAQ,QACRqQ,iBAAiB54E,KAAKm3E,IAAIyB,gBAAAA,GAGxBe,KAASnC,GACXx3E,KAAKs4E,KAAKxnD,KACV9wB,KAAKm3E,IAAIN,YAAYY,iBAAAA;AAGA,iBAAnBkC,GAAOzC,YACTmC,GAAa/uD,SACXpW,KAAK8mC,IACHj5C,SAAS8B,KAAK+1E,cACd73E,SAAS8B,KAAKg2E,cACd93E,SAAS8tB,gBAAgBiqD,cACzB/3E,SAAS8tB,gBAAgB+pD,cACzB73E,SAAS8tB,gBAAgBgqD,YACvB,IAAA,OAGR75E,KAAKs4E,KAAKE,UAAU91E,GAAc,OAAO,EACvC20E,WAAW,qBACX3nD,OAhDe,EACfmI,UAAU,SACVkiD,UAAU,UACVC,QAAQ,KACRhkC,MAAM,aACN6D,OAAO,GACPD,QAAQ,GACR/D,KAAK,EAAA,EAAA,CAAA,GA2CP71C,KAAKs4E,KAAKC,YAAY71E,GAAc,OAAO,EACzC20E,WAAW,uBACX3nD,OAAO2pD,GAAAA,CAAAA,GAETr5E,KAAKs4E,KAAKC,UAAUxoD,YAAY4pD,EAAAA,GAChC35E,KAAKs4E,KAAKC,UAAUhpD,WAAWQ,YAC7BrtB,GAAc,OAAO,EACnBgtB,OAAO,EACLuqD,OAAO,QACPC,QAAQ,sBACR3R,QAAQ,GACR51D,SAAS,GACT2X,QAAQ,EAAA,EAAA,CAAA,CAAA,GAIdtqB,KAAKs4E,KAAKC,UAAU7oD,MAAMyqD,QAAQ,QAClCn6E,KAAKs4E,KAAKE,QAAQzoD,YAAY/vB,KAAKs4E,KAAKC,SACxCx2E,GAAAA,SAAS8B,KAAKksB,YAAY/vB,KAAKs4E,KAAKE,OAAAA,GACpCx4E,KAAKs4E,KAAKC,UAAUhpD,WAAWG,MAAMmI,WAAW,YAChD73B,KAAKs4E,KAAKC,UAAUjuD,SAClBpW,KAAK8mC,IACHh7C,KAAKs4E,KAAKC,UAAUhpD,WAAWuqD,cAC/B95E,KAAKs4E,KAAKC,UAAUhpD,WAAWqqD,cAC/B55E,KAAKs4E,KAAKC,UAAUhpD,WAAWsqD,YAAAA,IAC7B;IACR,CAAA;EAAA,GAGF9B,GAAO11E,UAAU22E,WAAW,WAE1B;AAAA,QAAIoB,KAAU,CACZ,WAAA;AACE,aACEr4E,SAAS8B,KAAKw2E,SAASr6E,KAAKs4E,KAAKC,SAAAA,KAAcv4E,KAAK+4E,YAAAA;IAExD,CAAA;AAIF,WAAO/4E,KAAKm5E,SAASiB,EAAAA,EAClBxD,KAAKH,EAAAA,EACLG,KAAK,SAAuBC,IAAAA;AAE3B,UAAI1gE,KAAU9B,OAAO+hB,OAAO,CAAE,GAAEp2B,KAAKm3E,IAAIN,WAAAA;AAGzC,aAAA,OAFO1gE,GAAQmkE,YAERzD,GAAY72E,KAAKs4E,KAAKC,WAAWpiE,EACzC;IAAA,CAAA,EACAygE,KAAK,SAAuBl9B,IAAAA;AAAAA,OAEV15C,KAAKm3E,IAAIN,YAAYyD,cAAc,WAAA;MAAA,GACzC5gC,EAAAA,GAEX15C,KAAKs4E,KAAK5+B,SAASA,IACnB33C,SAAS8B,KAAK2rB,YAAYxvB,KAAKs4E,KAAKE,OAAAA;IACtC,CAAA;EAAA,GAGJT,GAAO11E,UAAUk4E,cAAc,WAE7B;AAAA,QAAIH,KAAU,CACZ,WAAA;AACE,aACEr4E,SAAS8B,KAAKw2E,SAASr6E,KAAKs4E,KAAKC,SAAAA,KAAcv4E,KAAK+4E,YAAAA;IAExD,CAAA;AAIF,WAAO/4E,KAAKm5E,SAASiB,EAAAA,EAClBxD,KAAKH,EACLG,EAAAA,KAAK,SAA0BC,IAAAA;AAG9B,UAAIt9B,KAAMv5C,KAAKm3E,IAAIjhE,OACf2zD,KAAY7pE,KAAKm3E,IAAItN,WAErB/tD,KACwB,YAAnB9b,OAAAA,KAAKm3E,IAAI9sD,SACfvb,MAAM9O,KAAKm3E,IAAI9sD,KACgB,KAAA,YAAA,OAAzBrqB,KAAKm3E,IAAIoC,eACfzqE,MAAM9O,KAAKm3E,IAAIoC,WAAAA,IAEZ,IADAv5E,KAAKm3E,IAAI9sD,QAAQrqB,KAAKm3E,IAAIoC,aAG5BpjE,KAAU9B,OAAO+hB,OACnB,EACEokD,OAAAA,MACAC,YAAY,MACZ3+D,OAAOA,IACP4+D,SAAS16E,KAAKm3E,IAAIuD,WAAW,GAC7BC,SAAS36E,KAAKm3E,IAAIwD,WAAW,GAC7B/B,iBAAiB,WACjBgC,cAAc,MACdC,SAAAA,MACAC,OAAO,MACPC,iBAAAA,MACAC,wBAAwB,OACxBC,SAAS,MAAA,GAEXj7E,KAAKm3E,IAAIN,WAAAA;AAaX,UAXO1gE,OAAAA,GAAQmkE,YAEf/gC,GAAIC,UAAUg1B,aACmB,WAAxBxuE,KAAKm3E,IAAI3I,cAEZxuE,KAAKm3E,IAAI3I,YACfj1B,GAAIC,UAAUriB,OAAOn3B,KAAKm3E,IAAI7nE,GAC9BiqC,GAAIC,UAAUpiB,OAAOp3B,KAAKm3E,IAAIn7D,GAC9Bu9B,GAAIC,UAAU+uB,SAASvoE,KAAKm3E,IAAI5O,QAChChvB,GAAIC,UAAUqwB,YAAYA,IAEtBA,GACF,UAASt7D,KAAI,GAAGA,KAAIs7D,GAAUr7D,QAAAA,EAAUD,IAAG;AACzC,YAAIwb,KAAO8/C,GAAUt7D,EACjBuiB,GAAAA,KAAM/G,GAAK+G,IAAIkU,KAAK,SAASlU,IAAAA;AAC/B,iBAAsB,eAAfA,GAAIva;QACb,CAAA;AAEIua,QAAAA,MACFyoB,GAAIrtB,QAAQ4E,GAAInwB,KAAKopB,GAAK20B,IAAI99C,MAAMmpB,GAAK20B,IAAIhvB,KAEjD;MAAA;AAcF,aAXAvZ,GAAQ+kE,eAAe/kE,GAAQ+kE,gBAAgB,GAC/C/kE,GAAQ+kE,eACkB,KAAxB/kE,GAAQ+kE,eACJhnE,KAAK8mC,IACHh7C,KAAKs4E,KAAKC,UAAUuB,cACpB95E,KAAKs4E,KAAKC,UAAUqB,cACpB55E,KAAKs4E,KAAKC,UAAUsB,YAEtB1jE,IAAAA,GAAQ+kE,cAEd3hC,GAAIC,UAAUrpB,KAAK,IAAA,GACZ0mD,GAAY72E,KAAKs4E,KAAKC,WAAWpiE,EAAAA;IACzC,CACAygE,EAAAA,KAAK,SAA0Bl9B,IAAAA;AAC9B15C,WAAKm3E,IAAIjhE,MAAMsjC,UAAUvzB,QAAAA,IAAQ,IAGhBjmB,KAAKm3E,IAAIN,YAAYyD,cAAc,WAAA;MAAA,GACzC5gC,EAAAA,GAEX15C,KAAKs4E,KAAK5+B,SAASA,IACnB33C,SAAS8B,KAAK2rB,YAAYxvB,KAAKs4E,KAAKE,OACtC;IAAA,CAAA;EAAA,GAGJT,GAAO11E,UAAU42E,QAAQ,WAAA;AASvB,WAAOj5E,KAAKm5E,SAPE,CACZ,WAAA;AACE,aAAOn5E,KAAKs4E,KAAK5+B,UAAU15C,KAAKg5E,SAAAA;IAClC,CAI4BpC,CAAAA,EAAAA,KAAK,WACjC;AAAA,UAAIuE,KAAUn7E,KAAKs4E,KAAK5+B,OAAOjJ,UAC7B,WAAWzwC,KAAKm3E,IAAIzoC,MAAMnrC,MAC1BvD,KAAKm3E,IAAIzoC,MAAMmY,OAAAA;AAEjB7mD,WAAKs4E,KAAKxK,MAAM/rE,SAASW,cAAc,KAAA,GACvC1C,KAAKs4E,KAAKxK,IAAIh9C,MAAMqqD;IACtB,CAAA;EAAA,GAGFpD,GAAO11E,UAAU62E,QAAQ,WAAA;AAUvB,WAAOl5E,KAAKm5E,SARE,CACZ,WAAA;AACE,aAAOn5E,KAAKu6E,YAAAA;IACd,CAK4B3D,CAAAA,EAAAA,KAAK,WAEjC52E;AAAAA,WAAKs4E,KAAK/+B,MAAMv5C,KAAKs4E,KAAK/+B,OAAOv5C,KAAKm3E,IAAIjhE;IAC5C,CAAA;EAAA,GAKF6hE,GAAO11E,UAAU4tB,SAAS,SAAgB1sB,IAAM4S,IAAS2a,IAAAA;AAGvD,WAA0B,WAD1BA,KAAMA,MAAO,OACL9iB,YAAiD,KAAA,YAAtB8iB,GAAI9iB,YAC9BhO,IAAAA,KAAKo7E,UAAU73E,IAAM4S,EAAAA,IAErBnW,KAAKq7E,UAAU93E,IAAM4S,EAAAA;EAAAA,GAIhC4hE,GAAO11E,UAAUg5E,YAAY,SAAmB93E,IAAM4S,IASpD;AAAA,WAAOnW,KAAKm5E,SAPE,CACZ,WAAA;AACE,aAAOn5E,KAAKs4E,KAAK/+B,OAAOv5C,KAAKk5E,MAC/B;IAAA,CAAA,CAAA,EAI4BtC,KAAK,WAMjC;AAAA,aAAO52E,KAAKs4E,KAAK/+B,IAAItpB,OAAO1sB,IAAM4S,EACpC;IAAA,CAAA;EAAA,GAGF4hE,GAAO11E,UAAU+4E,YAAY,SAAmB73E,IAS9C;AAAA,WAAOvD,KAAKm5E,SAPE,CACZ,WACE;AAAA,aAAOn5E,KAAKs4E,KAAKxK,OAAO9tE,KAAKi5E,MAAAA;IAC/B,CAI4BrC,CAAAA,EAAAA,KAAK,WACjC;AAAA,cAAQrzE,IACN;QAAA,KAAA;QACA,KAAK;AACH,iBAAOvD,KAAKs4E,KAAKxK;QACnB,KAAK;QACL,KAAK;AACH,iBAAO9tE,KAAKs4E,KAAKxK,IAAIh9C;QACvB,KAAK;QACL,KAAK;AACH,iBAAQ/uB,SAASe,SAASF,OAAO5C,KAAKs4E,KAAKxK,IAAIh9C;QACjD;AACE,gBAAM,wBAAwBvtB,KAAO;MAAA;IAE3C,CAAA;EAAA,GAGFw0E,GAAO11E,UAAU8tB,OAAO,SAAcD,IAAAA;AASpC,WAAOlwB,KAAKm5E,SAPE,CACZ,WAAA;AACE,aAAOn5E,KAAKs4E,KAAK/+B,OAAOv5C,KAAKk5E,MAC/B;IAAA,CAAA,CAAA,EAKC51D,IAAI4M,KAAW,EAAEA,UAAUA,GAAa,IAAA,IAAA,EACxC0mD,KAAK,WACJ52E;AAAAA,WAAKs4E,KAAK/+B,IAAIppB,KAAKnwB,KAAKm3E,IAAIjnD,QAC9B;IAAA,CAAA;EAAA,GAGJ6nD,GAAO11E,UAAUi5E,aAAa,WAAA;AAS5B,WAAOt7E,KAAKm5E,SAPE,CACZ,WAAA;AACE,aAAOn5E,KAAKs4E,KAAK/+B,OAAOv5C,KAAKk5E,MAC/B;IAAA,CAAA,CAAA,EAI4BtC,KAAK,WAAA;AACjC52E,WAAKs4E,KAAKxkE,SAAS9T,KAAKs4E,KAAK/+B,GAAAA;IAC/B,CAAA;EAAA,GAKFw+B,GAAO11E,UAAUihB,MAAM,SAAa6zD,IAAAA;AAIlC,QAAqB,aAAjBF,GAAQE,EACV,EAAA,QAAOn3E;AAIT,QAAIu7E,KAAMlnE,OAAOC,KAAK6iE,MAAO,CAAA,CAAIlmE,EAAAA,IAAI,SAASK,IAAAA;AAC5C,UAAIA,MAAOymE,GAAOG,SAASI,KAEzB,QAAO,WACLt4E;AAAAA,aAAKs4E,KAAKhnE,EAAAA,IAAO6lE,GAAI7lE,EAAAA;MAAAA;AAGvB,cAAQA,IAAAA;QACN,KAAK;AACH,iBAAOtR,KAAKw7E,UAAUrsE,KAAKnP,MAAMm3E,GAAI5O,MAAAA;QACvC,KAAK;AACH,iBAAO,WAEL;AAAA,mBADAvoE,KAAKm3E,IAAIjhE,QAAQihE,GAAIjhE,OACdlW,KAAKo5E,YAAAA;UAAAA;QAEhB,KAAK;AACH,iBAAOp5E,KAAKo5E,YAAYjqE,KAAKnP,MAAMm3E,GAAIlhD,QAAAA;QACzC;AAEE,iBAAO,WAAA;AACLj2B,iBAAKm3E,IAAI7lE,EAAO6lE,IAAAA,GAAI7lE,EAAAA;UAAAA;MAI7B;IAAA,GAAEtR,IAGH;AAAA,WAAOA,KAAK42E,KAAK,WAAA;AACf,aAAO52E,KAAKm5E,SAASoC,EACvB;IAAA,CAAA;EAAA,GAGFxD,GAAO11E,UAAUghB,MAAM,SAAa/R,IAAKmqE,IAAAA;AACvC,WAAOz7E,KAAK42E,KAAK,WAAA;AAEf,UAAI8B,KAAMpnE,MAAOymE,GAAOG,SAASI,OAAOt4E,KAAKs4E,KAAKhnE,EAAOtR,IAAAA,KAAKm3E,IAAI7lE,EAClE;AAAA,aAAOmqE,KAAMA,GAAI/C,EAAOA,IAAAA;IAC1B,CAAA;EAAA,GAGFX,GAAO11E,UAAUm5E,YAAY,SAAmBjT,IAAAA;AAC9C,WAAOvoE,KAAK42E,KAAK,WAEf;AAAA,cAAQK,GAAQ1O,EACd,GAAA;QAAA,KAAK;AACHA,UAAAA,KAAS,CAACA,IAAQA,IAAQA,IAAQA,EAAAA;QAEpC,KAAK;AAIH,cAHsB,MAAlBA,GAAO/5D,WACT+5D,KAAS,CAACA,GAAO,CAAA,GAAIA,GAAO,CAAA,GAAIA,GAAO,CAAA,GAAIA,GAAO,CAE9B,CAAA,IAAA,MAAlBA,GAAO/5D,OACT;QAGJ;AACE,iBAAOxO,KAAKS,MAAM,uBAAA;MAAA;AAItBT,WAAKm3E,IAAI5O,SAASA;IACnB,CAAA,EAAEqO,KAAK52E,KAAKo5E,WAAAA;EAAAA,GAGfrB,GAAO11E,UAAU+2E,cAAc,SAAqBnjD,IAAAA;AAClD,aAASylD,GAAKhD,IAAKnpE,IAAAA;AACjB,aAAO2E,KAAKoI,MAAQo8D,KAAMnpE,KAAK,KAAM,EACvC;IAAA;AAEA,WAAOvP,KAAK42E,KAAK,WAAA;AAAA,OAEf3gD,KAAWA,MAAY/f,EAAMylE,YAAY37E,KAAKm3E,IAAIjhE,KAAAA,GAGpClC,eAAe,OAC3BiiB,MAAAA,GAAS2lD,QAAQ,EACfvxD,OAAO4L,GAAS5L,QAAQrqB,KAAKm3E,IAAI5O,OAAO,CAAA,IAAKvoE,KAAKm3E,IAAI5O,OAAO,CAC7Dj+C,GAAAA,QAAQ2L,GAAS3L,SAAStqB,KAAKm3E,IAAI5O,OAAO,CAAKvoE,IAAAA,KAAKm3E,IAAI5O,OAAO,CAAA,EAAA,GAEjEtyC,GAAS2lD,MAAMtH,KAAK,EAClBjqD,OAAOqxD,GAAKzlD,GAAS2lD,MAAMvxD,OAAO4L,GAAS1mB,CAC3C+a,GAAAA,QAAQoxD,GAAKzlD,GAAS2lD,MAAMtxD,QAAQ2L,GAAS1mB,CAAAA,EAAAA,GAE/C0mB,GAAS2lD,MAAMC,QAAQ5lD,GAAS2lD,MAAMtxD,SAAS2L,GAAS2lD,MAAMvxD,QAIhErqB,KAAKs4E,KAAKriD,WAAWA;IACvB,CAAA;EAAA,GAGF8hD,GAAO11E,UAAU81E,cAAc,SAAqBO,IAAKroE,IAAOD,IAAG0hB,IAAAA;AASjE,WAPW,QAAP4mD,OAAa14E,KAAKy4E,SAASC,MAAMA,KACxB,QAATroE,OAAerQ,KAAKy4E,SAASpoE,QAAQA,KAChC,QAALD,OAAWpQ,KAAKy4E,SAASroE,IAAIA,KACpB,QAAT0hB,OAAe9xB,KAAKy4E,SAAS3mD,QAAQA,KACzC9xB,KAAKy4E,SAASoD,QAAQ77E,KAAKy4E,SAASC,MAAM14E,KAAKy4E,SAASpoE,OAGjDrQ;EAAAA,GAGT+3E,GAAO11E,UAAUy5E,iBAAiB,SAChCpD,IACAroE,IACAD,IACA0hB,IAAAA;AAGA,WAAO9xB,KAAKm4E,YACVO,KAAM14E,KAAKy4E,SAASC,MAAMA,KAAM,MAChCroE,MAAgB,MAChBD,KAAIpQ,KAAKy4E,SAASroE,IAAIA,KAAI,MAC1B0hB,KAAQ9xB,KAAKy4E,SAAS3mD,MAAMqC,OAAOrC,EAAAA,IAAS,IAAA;EAAA,GAMhDimD,GAAO11E,UAAUu0E,OAAO,SAAcmF,IAAaC,IAAAA;AAEjD,QAAIj8E,KAAOC;AAEX,WAAOA,KAAKi8E,SAASF,IAAaC,IAAY,SAC5CD,IACAC,IAAAA;AAIA,aADAj8E,GAAK+7E,eAAe,MAAM,MAAM,GAAG,CAACC,EAAAA,CAAAA,GAC7B98C,QAAQ58B,UAAUu0E,KACtBp2E,KAAKR,MAAM,SAAkB04E,IAAAA;AAE5B,eADA34E,GAAK+7E,eAAe,MAAMC,EAAAA,GACnBrD;MACT,CAAA,EACC9B,KAAKmF,IAAaC,EAAAA,EAClBpF,KAAK,SAAmB8B,IAEvB;AAAA,eADA34E,GAAK+7E,eAAe,CAAA,GACbpD;MACT,CAAA;IACJ,CAAA;EAAA,GAGFX,GAAO11E,UAAU45E,WAAW,SAC1BF,IACAC,IACAE,IAGAA;AAAAA,IAAAA,KAAWA,MAAYj9C,QAAQ58B,UAAUu0E;AAGzC,QAAI72E,KAAOC;AACP+7E,IAAAA,OACFA,KAAcA,GAAY5sE,KAAKpP,EAAAA,IAE7Bi8E,OACFA,KAAaA,GAAW7sE,KAAKpP,EAAAA;AAI/B,QAGIo8E,KAAAA,OAFFl9C,QAAQhwB,SAAAA,EAAWkG,QAAQ,eAAA,KACV,cAAjB8pB,QAAQr+B,OAENb,KACAg4E,GAAOE,QAAQ5jE,OAAO+hB,OAAO,CAAE,GAAEr2B,EAAOk/B,GAAAA,QAAQ58B,SAGhD+5E,GAAAA,KAAYF,GAAS17E,KAAK27E,IAAaJ,IAAaC,EAAAA;AACxD,WAAOjE,GAAOE,QAAQmE,IAAWr8E,GAAKs4E,SAAAA;EAAAA,GAGxCN,GAAO11E,UAAUg6E,eAAe,SAC9BN,IACAC,IAGA;AAAA,WAAO/8C,QAAQ58B,UAAUu0E,KAAKp2E,KAAKR,MAAM+7E,IAAaC,EAAAA;EAAAA,GAGxDjE,GAAO11E,UAAU82E,WAAW,SAAkBoC,IAAAA;AAE5C,QAAIx7E,KAAOC;AAIX,WAHAu7E,GAAI/oE,QAAQ,SAA0B0T,IAAAA;AACpCnmB,MAAAA,KAAOA,GAAKk8E,SAAS/1D,EAAAA;IACvB,CACOnmB,GAAAA;EAAAA,GAGTg4E,GAAO11E,UAAiB,QAAI,SAAS25E,IAE/BA;AAAAA,IAAAA,OACFA,KAAaA,GAAW7sE,KAAKnP,IAE/B;AAAA,QAAIo8E,KAAYn9C,QAAQ58B,UAAiB,MAAE7B,KAAKR,MAAMg8E,EAAAA;AACtD,WAAOjE,GAAOE,QAAQmE,IAAWp8E,IAAAA;EAAAA,GAGnC+3E,GAAO11E,UAAUi6E,gBAAgB,SAAuBN,IAEtD;AAAA,WAAO/8C,QAAQ58B,UAAiB,MAAE7B,KAAKR,MAAMg8E,EAAAA;EAAAA,GAG/CjE,GAAO11E,UAAU5B,QAAQ,SAAe87E,IAAAA;AAEtC,WAAOv8E,KAAK42E,KAAK,WACf;AAAA,YAAM,IAAIlkE,MAAM6pE,EAAAA;IAClB,CAAA;EAAA,GAKFxE,GAAO11E,UAAUm6E,QAAQzE,GAAO11E,UAAUihB,KAC1Cy0D,GAAO11E,UAAUlB,SAAS42E,GAAO11E,UAAU8tB,MAC3C4nD,GAAO11E,UAAUo6E,SAAS1E,GAAO11E,UAAU4tB,QAC3C8nD,GAAO11E,UAAUq6E,MAAM3E,GAAO11E,UAAUu0E,MAGxC1gE,EAAMylE,cAAc,SAAStlE,IAAaC,IAAMC,IAE9C;AAAA,QAA2B,aAAvBpU,SAAOkU,EAAAA,GAA0B;AACnC,UAAIF,KAAUE;AACdA,MAAAA,KAAcF,GAAQE,aACtBC,KAAOH,GAAQG,QAAQA,IACvBC,KAASJ,GAAQI,UAAUA;IAC7B;AAGAD,IAAAA,KAAOA,MAAQ,MACfC,KAASA,MAAU,MACnBF,MAAe,MAAMA,MAAe,MAAMrI,YAC1C;AAAA,QA+CIuB,IA/CAotE,MAAoB,KAAKpmE,IAAQvI,YAAAA,GAGjC2J,KAAc,EAChBC,IAAI,CAAC,SAAS,OACdC,GAAAA,IAAI,CAAC,SAAS,OAAA,GACdC,IAAI,CAAC,SAAS,OACdC,GAAAA,IAAI,CAAC,QAAQ,OAAA,GACbC,IAAI,CAAC,QAAQ,MAAA,GACbC,IAAI,CAAC,QAAQ,MACbC,GAAAA,IAAI,CAAC,QAAQ,MAAA,GACbC,IAAI,CAAC,QAAQ,MAAA,GACbC,IAAI,CAAC,OAAO,MACZC,GAAAA,IAAI,CAAC,QAAQ,KAAA,GACbC,KAAK,CAAC,MAAM,MAAA,GACZC,IAAI,CAAC,SAAS,OACdC,GAAAA,IAAI,CAAC,SAAS,OACdC,GAAAA,IAAI,CAAC,SAAS,OAAA,GACdC,IAAI,CAAC,SAAS,OACdC,GAAAA,IAAI,CAAC,QAAQ,OAAA,GACbC,IAAI,CAAC,OAAO,MAAA,GACZC,IAAI,CAAC,QAAQ,KAAA,GACbC,IAAI,CAAC,QAAQ,MACbC,GAAAA,IAAI,CAAC,QAAQ,MAAA,GACbC,IAAI,CAAC,QAAQ,MACbC,GAAAA,KAAK,CAAC,OAAO,MAAA,GACbC,IAAI,CAAC,SAAS,OAAA,GACdC,IAAI,CAAC,SAAS,OACdC,GAAAA,IAAI,CAAC,SAAS,OAAA,GACdC,IAAI,CAAC,QAAQ,OACbC,GAAAA,IAAI,CAAC,QAAQ,MACbC,GAAAA,IAAI,CAAC,QAAQ,MAAA,GACbC,IAAI,CAAC,QAAQ,MAAA,GACbC,IAAI,CAAC,QAAQ,MACbC,GAAAA,IAAI,CAAC,QAAQ,MAAA,GACbC,IAAI,CAAC,QAAQ,MAAA,GACbC,KAAK,CAAC,OAAO,MACbC,GAAAA,IAAI,CAAC,QAAQ,MAAA,GACbC,QAAQ,CAAC,KAAK,GAAA,GACd,qBAAqB,CAAC,KAAK,GAC3BC,GAAAA,OAAO,CAAC,KAAK,IACb,GAAA,gBAAgB,CAAC,KAAK,GAAA,GACtBC,QAAQ,CAAC,MAAM,GACfC,GAAAA,SAAS,CAAC,KAAK,IAAA,GACf,eAAe,CAAC,KAAK,GAAA,EAAA;AAKvB,YAAQ3D,IACN;MAAA,KAAK;AACH/G,QAAAA,KAAI;AACJ;MACF,KAAK;AACHA,QAAAA,KAAI,KAAK;AACT;MACF,KAAK;AACHA,QAAAA,KAAI,KAAK;AACT;MACF,KAAK;AACHA,QAAAA,KAAI;AACJ;MACF,KAAK;AACHA,QAAAA,KAAI;AACJ;MACF,KAAK;MAGL,KAAK;AACHA,QAAAA,KAAI;AACJ;MACF,KAAK;AACHA,QAAAA,KAAI;AACJ;MACF;AACE,cAAM,mBAAmB+G;IAE7B;AAAA,QAgBImd,IAhBAmpD,KAAa,GACb5mD,KAAY;AAGhB,QAAIre,GAAY3D,eAAe2oE,EAC7BC,EAAAA,CAAAA,KAAajlE,GAAYglE,EAAAA,EAAkB,CAAKptE,IAAAA,IAChDymB,KAAYre,GAAYglE,EAAAA,EAAkB,CAAKptE,IAAAA;QAE/C,KACEqtE;AAAAA,MAAAA,KAAarmE,GAAO,CACpByf,GAAAA,KAAYzf,GAAO,CAAA;IACpB,SAAQsmE,IAAAA;AACP,YAAM,IAAInqE,MAAM,qBAAqB6D,EAAAA;IACvC;AAKF,QAAoB,QAAhBF,MAAuC,eAAhBA,GACzBA,CAAAA,KAAc,KACV2f,KAAY4mD,OACdnpD,KAAMuC,IACNA,KAAY4mD,IACZA,KAAanpD;SAEV;AAAA,UAAoB,QAAhBpd,MAAuC,gBAAhBA,GAQhC,OAAM,0BAA0BA;AAPhCA,MAAAA,KAAc,KACVumE,KAAa5mD,OACfvC,KAAMuC,IACNA,KAAY4mD,IACZA,KAAanpD;IAIjB;AAUA,WAPW,EACTpJ,OAAO2L,IACP1L,QAAQsyD,IACRtmE,MAAMA,IACN/G,GAAGA,IACH8G,aAAaA,GAAAA;EAAAA,GA0EjBuqB,GAAShR,OAAO,SAASkB,IAAK3a,IAAAA;AAAAA,KAG5BA,KAAUA,MAAW,CAAA,GACbrC,WAAWqC,GAAQrC,YAAY,WAAW;IAAA,GAClDqC,GAAQ0gE,cAAc1gE,GAAQ0gE,eAAe,CAAA,GAC7C1gE,GAAQ0gE,YAAYn9B,SAASvjC,GAAQ0gE,YAAYn9B,UAAU15C,KAAK05C,QAChEvjC,GAAQD,QAAQC,GAAQD,SAASlW,MACjCmW,GAAQ0zD,YAAY1zD,GAAQ0zD,YACxB1zD,GAAQ0zD,UAAU54D,IAAIotC,EAAAA,IACtB;AAGJ,QAAIy+B,KAAS,IAAI/E,GAAO5hE,EAExB;AAAA,WAAKA,GAAQ2mE,SAKJA,KAHAA,GAAOjE,KAAK/nD,EAAKwqD,EAAAA,WAAAA;EAAAA;AAM7B,GAAEplE,EAAMkB,GAAAA,GC17BNlB,EAAMkB,IAlDEqhC,QAAQ,SAASskC,IAAAA;AACxB,MAAIC,IACAC,IAuBE1wD,MArBN,SAAsBhsB,IAEpB;AAAA,aADIqR,KAAM,IACDrD,KAAI,GAAGA,KAAIhO,GAAIiO,QAAQD,MAAK;AACnC,UAAMwe,KAAKxsB,GAAIgO,EAAAA;AACf,UAAW,QAAPwe,MAAqB,QAAPA,IAAY;AAG5B,iBADIq8B,KAAK,GACAt4C,KAAIvC,KAAI,GAAGuC,MAAK,KAAgB,SAAXvQ,GAAIuQ,EAAAA,GAAaA,KAC7Cs4C,CAAAA;AAGAx3C,QAAAA,MADEw3C,KAAK,KAAM,IACN,OAAOr8B,KAEPA;MAEX,MACEnb,CAAAA,MAAOmb;IAEX;AACA,WAAOnb;EACT,GAC0BmrE,EAuB1B;AAAA,SArBA/8E,KAAKqX,SAASmL,OAAO5O,UAAU,oBAAoB,WACjDopE;AAAAA,IAAAA,KAAah9E,KAAKqX,SAAS8O,UAAAA,GAC3BnmB,KAAKqX,SAASzF,IAAI,IAAA,GAClB5R,KAAKqX,SAASzF,IAAI,2BAA2BorE,KAAa,KAAK,OAAA,GAC/Dh9E,KAAKqX,SAASzF,IAAI,IAClB5R,GAAAA,KAAKqX,SAASzF,IAAI,QAAA,GAElBqrE,KAAUj9E,KAAKqX,SAAS8O,UAAAA,GACxBnmB,KAAKqX,SAASzF,IAAI,IAClB5R,GAAAA,KAAKqX,SAASzF,IAAI,gBAElB5R,GAAAA,KAAKqX,SAASzF,IAAI,UAAU2a,KAAO,GAAA,GACnCvsB,KAAKqX,SAASzF,IAAI,IAClB5R,GAAAA,KAAKqX,SAASzF,IAAI,QAAA;EACpB,CAEA5R,GAAAA,KAAKqX,SAASmL,OAAO5O,UAAU,cAAc,WAAA;AAAA,eACvCopE,MAAwCx8D,WAAZy8D,MAC9Bj9E,KAAKqX,SAASzF,IAAI,0BAA0BorE,KAAa,QAAA;EAE7D,CAAA,GACOh9E;AAAAA;;;;;;;CCzEX,SAAU4gC,IAGR;AAAA,MAAIs8C;AAGJt8C,EAAAA,GAASpe,OAAO3N,KAAK,CACnB,oBACA,WAAA;AACE,QAAI0kC,KAAMv5C,MACN06B,KAAK;AAgBT,QAAI16B,KAAKm9E,QAAQnF,KAAKoF,SAAS5uE,SAAS,EAEtC,UADIwrB,KAAQuf,GAAI4jC,QAAQE,OAAAA,EAASzsE,MAAM,MAAA,GAC9BrC,KAAI,GAAGA,KAAIyrB,GAAMxrB,QAAQD,MAAK;AACrC,UAAIwrB,KAAOC,GAAMzrB,EAAAA,GACbwjB,KAAI2I,GAAGhsB,KAAKqrB,EAChB;AAAA,UAAS,QAALhI,IAAW;AACb,YAAI3L,KAAM2L,GAAE,CAAA;AACZwnB,QAAAA,GAAIliC,SAASiP,uBAAuBF,IAAAA,KACtC;MAAA;AACAmzB,MAAAA,GAAIliC,SAAS4H,MAAM8a,EACrB;IAAA;AAKF,QAAI/5B,KAAKm9E,QAAQG,yBAAyB;AACxC,UAAIC,KAAav9E,KAAKqX,SAASoH,MAAMjQ,QAIjCgvE,KAAQ,CAAA;AACZ,WAASjvE,KAAI,GAAGA,KAAIgvE,IAAYhvE,MAAK;AACnC,YAAI6G,KAAKmkC,GAAIliC,SAAS8O,UAAAA;AACtBq3D,QAAAA,GAAM3oE,KAAKO,EACX;AAAA,YAAIqoE,KAAOlkC,GAAIliC,SAAS+a,YAAY7jB,KAAI,CACxCgrC;AAAAA,QAAAA,GAAIliC,SAAS4H,MACX,WAAWw+D,GAAK/2D,QAAQ,oCAE5B;MAAA;AAGA,UAAIg3D,KAAYnkC,GAAIliC,SAAS8O,UAE7B;AAAA,WADAozB,GAAIliC,SAAS4H,MAAM,cACV1Q,GAAAA,KAAI,GAAGA,KAAIivE,GAAMhvE,QAAQD,KAChCgrC,CAAAA,GAAIliC,SAAS4H,MAAM,YAAY1Q,KAAI,KAAK,MAAMivE,GAAMjvE,EAAAA,IAAK,MAE3DgrC;AAAAA,MAAAA,GAAIliC,SAAS4H,MAAM,SAAS,QAAA,GAM5Bi+D,KAAW3jC,GAAIliC,SAAS8O,UACxBozB,GAAAA,GAAIliC,SAAS4H,MAAM,eAAey+D,KAAY,MAC9CnkC,GAAAA,GAAIliC,SAAS4H,MAAM,MAAM,QAC3B;IAAA;EACD,CAGH2hB,CAAAA,GAAAA,GAASpe,OAAO3N,KAAK,CACnB,cACA,WAAA;AACE,QAAI0kC,KAAMv5C;AACNu5C,IAAAA,GAAI4jC,QAAQnF,KAAKoF,SAAS5uE,SAAS,MACrC+qC,GAAIliC,SAAS4H,MACX,aACAjf,KAAKm9E,QAAQQ,QAAQ39E,KAAKm9E,QAAQnF,IAEhCh4E,CAAAA,GAAAA,KAAKm9E,QAAQG,2BACf/jC,GAAIliC,SAAS4H,MAAM,YAAYi+D,KAAW,MAK/C;EAAA,CAAA,CAAA,GAGHt8C,GAASpe,OAAO3N,KAAK,CACnB,eACA,WACE;AAAA,QAAI0kC,KAAMv5C;AAEVu5C,IAAAA,GAAI4jC,UAAU,EACZG,yBAAAA,OACAtF,MAAM,EACJoF,UAAU,CAAA,EAAA,EAAA,GAOd7jC,GAAI4jC,QAAQS,MAAM,SAASz8C,IAAQv9B,IAAOuS,IAAAA;AACxC,UAAI0nE,KAAO,EACTj6E,OAAOA,IACPuS,SAASA,IACTinE,UAAU,CAAA,EAAA;AAMZ,aAJc,QAAVj8C,OACFA,KAASnhC,KAAKg4E,OAEhB72C,GAAOi8C,SAASvoE,KAAKgpE,EACdA,GAAAA;IAAAA,GAGTtkC,GAAI4jC,QAAQE,SAAS,WAAA;AASnB,aARAr9E,KAAKqnE,MAAM,CAAA,GACXrnE,KAAKqnE,IAAIqR,MAAM,IACf14E,KAAKqnE,IAAI9tB,MAAMA,IAEfv5C,KAAK89E,SAAS99E,KAAKg4E,IAAAA,GACnBh4E,KAAK+9E,WAAW/9E,KAAKg4E,IACrBh4E,GAAAA,KAAKg+E,YAAYh+E,KAAKg4E,IAEfh4E,GAAAA,KAAKqnE,IAAIqR;IAAAA,GAGlBn/B,GAAI4jC,QAAQW,WAAW,SAASn8E,IAC9BA;AAAAA,MAAAA,GAAKyT,KAAKmkC,GAAIliC,SAASgP,kBACvB;AAAA,eAAS9X,KAAI,GAAGA,KAAI5M,GAAKy7E,SAAS5uE,QAAQD,KACxCvO,MAAK89E,SAASn8E,GAAKy7E,SAAS7uE,EAAAA,CAAAA;IAAAA,GAIhCgrC,GAAI4jC,QAAQY,aAAa,SAASp8E,IAAAA;AAChC3B,WAAKi+E,SAASt8E,EACd3B,GAAAA,KAAK+5B,KAAK,iBACNp4B,GAAAA,GAAKy7E,SAAS5uE,SAAS,MACzBxO,KAAK+5B,KAAK,YAAY/5B,KAAK29E,QAAQh8E,GAAKy7E,SAAS,CAAA,CAAA,CAAA,GACjDp9E,KAAK+5B,KACH,WAAW/5B,KAAK29E,QAAQh8E,GAAKy7E,SAASz7E,GAAKy7E,SAAS5uE,SAAS,CAAA,CAAA,CAAA,IAGjExO,KAAK+5B,KACH,YACE/5B,KAAKk+E,QACH,EACEv9C,OAAO,EAETh/B,GAAAA,EAAAA,CAAAA,GAGN3B,KAAKm+E,OAAAA;IAAAA,GAGP5kC,GAAI4jC,QAAQa,cAAc,SAASr8E,IAGjC;AAAA,eAFIq6B,KAA8Bh8B,KAAKqnE,IAAI9tB,IAAIliC,SAC5C2kB,6BACMztB,KAAI,GAAGA,KAAI5M,GAAKy7E,SAAS5uE,QAAQD,MAAK;AAC7C,YAAIsvE,KAAOl8E,GAAKy7E,SAAS7uE,EAAAA;AACzBvO,aAAKi+E,SAASJ,EAAAA,GAEd79E,KAAK+5B,KAAK,YAAY/5B,KAAKo+E,WAAWP,GAAKj6E,KAAAA,CAAAA,GAE3C5D,KAAK+5B,KAAK,aAAa/5B,KAAK29E,QAAQh8E,EAAAA,CAAAA,GAChC4M,KAAI,KACNvO,KAAK+5B,KAAK,WAAW/5B,KAAK29E,QAAQh8E,GAAKy7E,SAAS7uE,KAAI,CAAA,CAAA,CAAA,GAElDA,KAAI5M,GAAKy7E,SAAS5uE,SAAS,KAC7BxO,KAAK+5B,KAAK,WAAW/5B,KAAK29E,QAAQh8E,GAAKy7E,SAAS7uE,KAAI,CAAA,CAAA,CAAA,GAElDsvE,GAAKT,SAAS5uE,SAAS,MACzBxO,KAAK+5B,KAAK,YAAY/5B,KAAK29E,QAAQE,GAAKT,SAAS,CACjDp9E,CAAAA,CAAAA,GAAAA,KAAK+5B,KACH,WAAW/5B,KAAK29E,QAAQE,GAAKT,SAASS,GAAKT,SAAS5uE,SAAS,CAAA,CAAA,CAAA;AAIjE,YAAImyB,KAAS3gC,KAAK2gC,QAAQ3gC,KAAKk+E,QAC7B,EACEv9C,OAAO,EAAA,GAETk9C,EAMF;AAAA,YAJIl9C,KAAQ,KACV3gC,KAAK+5B,KAAK,YAAY4G,EAAAA,GAGpBk9C,GAAK1nE,WACH0nE,GAAK1nE,QAAQyS,YAAY;AAG3B,cAAI60D,KAAOlkC,GAAIliC,SAAS+a,YAAYyrD,GAAK1nE,QAAQyS,UAAAA;AACjD5oB,eAAK+5B,KACH,YAEE0jD,GAAK/2D,QACL,iBACAsV,GAA4B,CAC5B,IAAA,KAAA;QAYN;AAEFh8B,aAAKm+E,OACP;MAAA;AACA,eAASjlB,KAAI,GAAGA,KAAIv3D,GAAKy7E,SAAS5uE,QAAQ0qD,KACxCl5D,MAAKg+E,YAAYr8E,GAAKy7E,SAASlkB,EAAAA,CAAAA;IAAAA,GAInC3f,GAAI4jC,QAAQpjD,OAAO,SAASxN,IAC1BvsB;AAAAA,WAAKqnE,IAAIqR,OAAOnsD,KAAO;IAAA,GAGzBgtB,GAAI4jC,QAAQQ,UAAU,SAASh8E,IAC7B;AAAA,aAAOA,GAAKyT,KAAK;IAAA,GAGnBmkC,GAAI4jC,QAAQiB,aAAa,SAAS1F,IAAAA;AAChC,aAAO,MAAMn/B,GAAIliC,SAASiV,UAAUosD,EAAO,IAAA;IAAA,GAG7Cn/B,GAAI4jC,QAAQc,WAAW,SAASt8E,IAAAA;AAC9B3B,WAAKqnE,IAAIqR,OAAO,SAAS/2E,GAAKyT,KAAd;IAAA,GAGlBmkC,GAAI4jC,QAAQgB,SAAS,WAAA;AACnBn+E,WAAKqnE,IAAIqR,OAAO;IAAA,GAGlBn/B,GAAI4jC,QAAQe,UAAU,SAAS7W,IAAK1lE,IAAAA;AAClC,eAAS4M,KAAI,GAAGA,KAAI5M,GAAKy7E,SAAS5uE,QAAQD,KACxC84D,CAAAA,GAAI1mC,SACJ3gC,KAAKk+E,QAAQ7W,IAAK1lE,GAAKy7E,SAAS7uE,EAElC,CAAA;AAAA,aAAO84D,GAAI1mC;IAAAA;EAEd,CAIJ,CAAA;AAAA,GAAEzqB,EAAMkB,GAAAA;;;;;;CCnQT,SAAUwpB,IAAAA;AAaR,MAAIy9C,KAAU,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAA;AA6BzDz9C,EAAAA,GAAS09C,cAAc,SACrB/sE,IACAuZ,IACA6lB,IACAyD,IACAE,IACA3F,IAAAA;AAEA,QAEEoC,IAFE7J,KAASlnC,KAAK6xC,OAAOC,YAGvBttC,KAAS;AAEX,QACkB,YAAT+M,OAAAA,MACPvR,KAAKstC,aAAagG,cAAc/hC,EAAAA,KAChCvR,KAAKstC,aAAakB,kBAAkBj9B,EAAAA,GACpC;AAWA,cATAA,KAAO+iC,MAAsB/iC,IAC7BA,KAAOvR,KAAKstC,aAAagG,cAAc/hC,EACnC,IAAA,IAAIgO,WAAWhO,EAAAA,IACfA,IAKJw/B,MAnDc,SAASoqC,IAAAA;AAKzB,iBAJW7wD,IACPi0D,KAAsC,MAAxBpD,GAAQ1qE,WAAW,CAAW0qE,IAAAA,GAAQ1qE,WAAW,CAAA,GAC/D0O,KAAMg8D,GAAQ3sE,QACdhK,KAAS,EAAE6lB,OAAO,GAAGC,QAAQ,GAAGk0D,eAAe,EAAA,GAC1CjwE,KAAI,GAAGA,KAAI4Q,IAAK5Q,MAAK,GAAG;AAE/B,cADAA,MAAKgwE,IAC+C,OAAhDF,GAAQlpE,QAAQgmE,GAAQ1qE,WAAWlC,KAAI,CAAA,CAAA,GAAY;AACrD+b,YAAAA,KAAqC,MAA5B6wD,GAAQ1qE,WAAWlC,KAAI,CAAA,IAAW4sE,GAAQ1qE,WAAWlC,KAAI,CAAA,GAGlE/J,KAAS,EAAE6lB,OAFyB,MAA5B8wD,GAAQ1qE,WAAWlC,KAAI,CAAA,IAAW4sE,GAAQ1qE,WAAWlC,KAAI,CAExC+b,GAAAA,QAAQA,IAAQk0D,eADzBrD,GAAQ1qE,WAAWlC,KAAI,CAEvC,EAAA;AAAA;UACF;AACEgwE,UAAAA,KAC8B,MAA5BpD,GAAQ1qE,WAAWlC,KAAI,CAAA,IAAW4sE,GAAQ1qE,WAAWlC,KAAI,CAAA;QAE/D;AACA,eAAO/J;MAAAA,GA6BL+M,KAAOvR,KAAKstC,aAAakB,kBAAkBj9B,EACvCvR,IAAAA,KAAKstC,aAAaiC,0BAA0Bh+B,EAC5CA,IAAAA,EAAAA,GAGIw/B,GAAKytC,eAAAA;QACX,KAAK;AACH7vC,UAAAA,KAAa3uC,KAAK4uC,aAAayC;AAC/B;QACF,KAAK;AACH1C,UAAAA,KAAa3uC,KAAK4uC,aAAaI;AAC/B;QACF,KAAK;AACHL,UAAAA,KAAa3uC,KAAK4uC,aAAawC;MAInC5sC;AAAAA,MAAAA,KAAS,EACP+M,MAAMA,IACN8Y,OAAO0mB,GAAK1mB,OACZC,QAAQymB,GAAKzmB,QACbqkB,YAAYA,IACZM,kBApCI,GAqCJ/H,QAAQA,IACRpc,OAAOA,IACP6lB,OAAOA,GAEX;IAAA;AACA,WAAOnsC;EAAAA;AAEV,GAAE0R,EAAMkB,GZxDTlB,GAAAA,EAAMkB,IAAIqnE,aAAa,SAASvwC,IAAWpjB,IAAO6lB,IAAOyD,IAAAA;AAIvD,MAHIp0C,KAAKstC,aAAagG,cAAcpF,EAClCA,MAAAA,KAAY,IAAI3uB,WAAW2uB,EAExBluC,IAAAA,KAAKstC,aAAakB,kBAAkBN,EAAAA,GAAzC;AAIA,QASI1pC,IATEk6E,KAAaC,UAAUzwC,IAAW,EAAE0wC,UAAAA,KAExCv0D,CAAAA,GAAAA,KAKEq0D,GALFr0D,OACAC,KAIEo0D,GAJFp0D,QACAzlB,KAGE65E,GAHF75E,UACSg6E,KAEPH,GAFF5vC,SACOG,KACLyvC,GADFv8B;AAKA39C,IAAAA,KADEq6E,MAA+B,MAAbh6E,MA+SxB,SAA2B65E,IAWzB;AAAA,eAVQr0D,KAAwDq0D,GAAxDr0D,OAAOC,KAAiDo0D,GAAjDp0D,QAAQ/Y,KAAyCmtE,GAAzCntE,MAAestE,KAA0BH,GAAnC5vC,SAAyBqT,KAAUu8B,GAAVv8B,OAClD28B,KAAAA,OACAhwC,KAAU,CACViwC,GAAAA,KAAO,CACPC,GAAAA,KAAAA,QACAC,KAAAA,OAGAC,KAAa,GAER3wE,KAAI,GAAGA,KAAIswE,GAAerwE,QAAQD,MAAK;AAAA,YAAA4wE,KAAAC,iBACzBP,GAAetwE,EAAAA,GAAE,CAAA,GAA/BI,KAACwwE,GAAA,CAAEvwE,GAAAA,KAACuwE,GAAA,CAAA,GAAEtwE,KAACswE,GAAA,CAAE18E,GAAAA,KAAC08E,GAAA,CAAA;AACjBrwC,QAAAA,GAAQj6B,KAAKlG,IAAGC,IAAGC,EAAAA,GACV,QAALpM,OACQ,MAANA,MACFy8E,MACIH,GAAKvwE,SATO,KAUduwE,GAAKlqE,KAAKtG,EAEH9L,KAAAA,KAAI,QACbw8E,KAAsB;MAG5B;AAEA,UAAIA,MAAuBC,KAlBL,GAkBiC;AACrDJ,QAAAA,KAAY,MACZC,KAAOv+D;AAEP,YAAM6+D,KAAch1D,KAAQC;AAE5B00D,QAAAA,KAAa,IAAIz/D,WAAW8/D,EAE5B;AAAA,iBADMC,KAAW,IAAIpwB,SAAS39C,GAAKyiC,MAAAA,GAC1B9+B,KAAI,GAAGA,KAAImqE,IAAanqE,MAAK;AACpC,cAAMqqE,KAAev9B,GAAWs9B,IAAUpqE,IAAGitC,EAChCq9B,GAAAA,KADuCJ,iBAC9BP,GAAeU,EAAa,GAAA,CAAA,EAAhC,CAAA;AAClBP,UAAAA,GAAW9pE,EAAAA,IAAKsqE;QAClB;MACF,MAA0B,OAAfN,OACTH,KAAAA;AAGF,aAAO,EACLpwC,YAAY,WACZ2S,gBAAgB,GAChBjS,uBAAuByvC,KAAY,IAAIt+D,QACvCi/D,YAAYluE,IACZytE,YAAAA,IACAF,WAAAA,IACAhwC,SAAAA,IACAiwC,MAAAA,GAAAA;IAEJ,GAnW+BL,EAAAA,IACL,MAAb75E,MAA+B,MAAbA,MAuW/B,SAAyB65E,IAAAA;AAsBvB,eArBQntE,KAAyCmtE,GAAzCntE,MAAM8Y,KAAmCq0D,GAAnCr0D,OAAOC,KAA4Bo0D,GAA5Bp0D,QAAQzlB,KAAoB65E,GAApB75E,UAAUs9C,KAAUu8B,GAAVv8B,OAEjCxT,KAA0B,MAAb9pC,KAAiB,eAAe,aAC7Cy8C,KAAiBz8C,KAAW,GAE5Bw6E,KAAch1D,KAAQC,IACtBo1D,KAAgBp+B,IAEhBq+B,KAAoBN,KAAcK,IAClCE,KAFgB,IAEIP,IAEpBQ,KAAe3rE,KAAKuiC,KAAMkpC,KAAoBx9B,KAAS,CACvD29B,GAAAA,KAAe5rE,KAAKuiC,KAAMmpC,KAAoBz9B,KAAS,CACvDs9B,GAAAA,KAAa,IAAIlgE,WAAWsgE,EAAAA,GAC5Bb,KAAa,IAAIz/D,WAAWugE,EAAAA,GAE5BR,KAAW,IAAIpwB,SAAS39C,GAAKyiC,MAC7B+rC,GAAAA,KAAY,IAAI7wB,SAASuwB,GAAWzrC,MAAAA,GACpCgsC,KAAY,IAAI9wB,SAAS8vB,GAAWhrC,MAAAA,GAEtC8qC,KAAY,OACP5pE,KAAI,GAAGA,KAAImqE,IAAanqE,MAAK;AAEpC,iBADM+qE,KAAkB/qE,KAAIrQ,IACnBoL,KAAI,GAAGA,KAAIyvE,IAAezvE,KAGjCwyC,CAAAA,IAAYs9B,IADO/9B,GAAWs9B,IADVW,KAAkBhwE,IACekyC,EAAAA,GAClBjtC,KAAIwqE,KAAgBzvE,IAAGkyC,EAAAA;AAE5D,YACM+9B,KAAal+B,GAAWs9B,IADVW,KAAkBP,IACev9B,EACjD+9B;AAAAA,QAAAA,MAAc,KAAK/9B,MAAS,MAC9B28B,KAAY,OAEdr8B,IAAYu9B,IAAWE,IA1BH,IA0BehrE,IAAmBitC,EAAAA;MACxD;AAEA,aAAO,EACLxT,YAAAA,IACA2S,gBAAAA,IACAjS,uBAAuByvC,KAAY38B,KAAQ3hC,QAC3Ci/D,YAAAA,IACAT,YAAAA,IACAF,WAAAA,GAAAA;IAEJ,GAnZ6BJ,EAqZ7B,KAAA,SAA0BA,IAAAA;AAAY,UAC5BntE,KAAmBmtE,GAAnBntE,MACFo9B,KAA0B,MADL+vC,GAAb75E,WACsB,eAAe;AAUnD,aAAO,EAAE8pC,YAAAA,IAAY2S,gBATiB,iBAAf3S,KAA8B,IAAI,GASpB8wC,YANjCluE,cAAgBkiC,eAStB,SAAwCliC,IAQtC;AAAA,iBAJM4uE,KAAc5uE,GAAK/C,QACnBoD,KAAM,IAAI2N,WAAyB,IAAd4gE,EAAAA,GACrBC,KAAU,IAAIlxB,SAASt9C,GAAIoiC,QAAQpiC,GAAIyuE,YAAYzuE,GAAIkhC,UAEpDvkC,GAAAA,KAAI,GAAGA,KAAI4xE,IAAa5xE,KAC/B6xE,CAAAA,GAAQz9B,UAAc,IAAJp0C,IAAOgD,GAAKhD,EAAI,GAAA,KAAA;AAEpC,eAAOqD;MACT,GApBgDL,EAAAA,IAE/BA,IAGkCutE,WAAAA,MACnD;IAAA,GAha8BJ,EAAAA;AAC3B,QAeGx3C,IAAQgI,IAAkBH,IAf7BuxC,KAWG97E,IARFmqC,KAAU2xC,GAAV3xC,YACA2S,KAAcg/B,GAAdh/B,gBACAjS,KAAqBixC,GAArBjxC,uBACAowC,KAAUa,GAAVb,YACAT,KAAUsB,GAAVtB,YACAF,KAASwB,GAATxB,WACAhwC,KAAOwxC,GAAPxxC,SACAiwC,KAAIuB,GAAJvB,MAGEzvC,KAAY;AAkDhB,WA/CgB8E,OAoFCl+B,EAAMkB,IAAIm7B,kBAAkBC,QAIlB,cAAA,OAAb6O,YAvFZ/R,MAiQJ,SAAqC8E,IAAAA;AACnC,UAAI9E;AACJ,cAAQ8E,IAAAA;QACN,KAAKl+B,EAAMkB,IAAIm7B,kBAAkBE;AAC/BnD,UAAAA,KAAY;AACZ;QAEF,KAAKp5B,EAAMkB,IAAIm7B,kBAAkBG;AAC/BpD,UAAAA,KAAY;AACZ;QAEF,KAAKp5B,EAAMkB,IAAIm7B,kBAAkBI;AAC/BrD,UAAAA,KAAY;AACZ;QAEF;AACEA,UAAAA,KAAY;MAGhB;AAAA,aAAOA;IACT,GArR4C8E,EAAAA,GACxClN,KAASlnC,KAAK6xC,OAAOE,cACrB7C,KAAAA,cAAgB/a,OAAiBmb,IAAS,WAAA,EAAAnb,OAAYmtB,IAAcntB,qBAAAA,EAAAA,OAAsB8a,IAAgB,YAAA,EAAA9a,OAAa9J,EAAAA,GAMvH6jB,KAAYmS,GACVo/B,IALoBvrE,KAAKuiC,KACxBpsB,KAAQi3B,KAAiBrS,KAAoB,CAAA,GAM9CqS,IACArS,IACAmF,EAAAA,GAEE0qC,OAEF/vC,KAAQsR,GACN2+B,IAFyB9qE,KAAKuiC,KAAMpsB,KAAQglB,KAAyB,CAAA,GAIrE,GACAA,IACA+E,EAIJlN,OAAAA,KAAAA,QACAgI,KAAAA,QACAhB,KAAYuxC,IACRX,OAAW/vC,KAAQiwC,OAIvBh/E,KAAKstC,aAAagG,cAAcpF,EAChCluC,KAAAA,KAAKstC,aAAakB,kBAAkBN,EAEpCA,OAAAA,KAAYluC,KAAKstC,aAAaiC,0BAA0BrB,EAAAA,KAIvDa,MAAS/uC,KAAKstC,aAAagG,cAAcvE,EAAAA,KAC1C/uC,KAAKstC,aAAakB,kBAAkBO,EAAAA,OAEpCA,KAAQ/uC,KAAKstC,aAAaiC,0BAA0BR,EAG/C,IAAA,EACL4B,OAAAA,IACAp/B,MAAM28B,IACNpjB,OAAAA,IACAoc,QAAAA,IACAgI,kBAAAA,IACAC,cAAc4vC,IACdjwC,SAAAA,IACAC,OAAAA,IACAO,WAAAA,IACAjlB,OAAAA,IACAC,QAAAA,IACA2kB,kBAAAA,IACAI,uBAAAA,IACAV,YAAAA,GAAAA;EA/FF;AAiGF,Ia3IA,SAAU/N,IAGRA;AAAAA,EAAAA,GAAS2/C,gBAAgB,SAASryC,IAAWpjB,IAAO6lB,IAAOyD,IAAAA;AACzD,QAAI9vC,KAAS,IAAI0+C,GAAU9U,EACvB7jB,GAAAA,KAAQ/lB,GAAO+lB,OACjBC,KAAShmB,GAAOgmB,QAEds6B,KAAS,CAAA;AAEbtgD,IAAAA,GAAOohD,uBAAuB,GAAGd,EAAAA;AACjC,QAAI47B,KAAe,EACjBjvE,MAAMqzC,IACNv6B,OAAOA,IACPC,QAAQA,GAAAA,GAIN/Y,KADU,IAAIq1C,GAVT,GAAA,EAWUkH,OAAO0yB,IAXjB,GAYT;AAAA,WAAO5/C,GAAS09C,YAAY99E,KAAKR,MAAMuR,IAAMuZ,IAAO6lB,IAAOyD,EAAAA;EAAAA,GAG7DxT,GAAS6/C,gBAAgB7/C,GAAS2/C;AACnC,GAAErqE,EAAMkB,GAAAA,GVjBT23C,GAAW1sD,UAAUgtD,cAAc,WAiCjC;AAAA,MAhCArvD,KAAK0gF,WAAW1gF,KAAKivD,MAAM0xB,UAAU3gF,KAAK8pD,KAAK,IAAA,GAC/C9pD,KAAK8pD,OAAO,GACZ9pD,KAAK4gF,WAAW5gF,KAAKivD,MAAM0xB,UAAU3gF,KAAK8pD,KAAK,IAAA,GAC/C9pD,KAAK8pD,OAAO,GACZ9pD,KAAK4qB,SAAS5qB,KAAKivD,MAAM0xB,UAAU3gF,KAAK8pD,KAAK,IAAA,GAC7C9pD,KAAK8pD,OAAO,GACZ9pD,KAAK6gF,aAAa7gF,KAAKivD,MAAM0xB,UAAU3gF,KAAK8pD,KAAAA,IAAK,GACjD9pD,KAAK8pD,OAAO,GACZ9pD,KAAKqqB,QAAQrqB,KAAKivD,MAAM0xB,UAAU3gF,KAAK8pD,KAAAA,IACvC9pD,GAAAA,KAAK8pD,OAAO,GACZ9pD,KAAKsqB,SAAStqB,KAAKivD,MAAM6xB,SAAS9gF,KAAK8pD,KAAAA,IACvC9pD,GAAAA,KAAK8pD,OAAO,GACZ9pD,KAAK+gF,SAAS/gF,KAAKivD,MAAMnM,UAAU9iD,KAAK8pD,KAAAA,IACxC9pD,GAAAA,KAAK8pD,OAAO,GACZ9pD,KAAKghF,QAAQhhF,KAAKivD,MAAMnM,UAAU9iD,KAAK8pD,KAAK,IAAA,GAC5C9pD,KAAK8pD,OAAO,GACZ9pD,KAAK8W,WAAW9W,KAAKivD,MAAM0xB,UAAU3gF,KAAK8pD,KAAAA,IAC1C9pD,GAAAA,KAAK8pD,OAAO,GACZ9pD,KAAKihF,UAAUjhF,KAAKivD,MAAM0xB,UAAU3gF,KAAK8pD,KAAAA,IACzC9pD,GAAAA,KAAK8pD,OAAO,GACZ9pD,KAAKkhF,KAAKlhF,KAAKivD,MAAM0xB,UAAU3gF,KAAK8pD,KAAAA,IACpC9pD,GAAAA,KAAK8pD,OAAO,GACZ9pD,KAAKmhF,KAAKnhF,KAAKivD,MAAM0xB,UAAU3gF,KAAK8pD,KAAK,IAAA,GACzC9pD,KAAK8pD,OAAO,GACZ9pD,KAAK2V,SAAS3V,KAAKivD,MAAM0xB,UAAU3gF,KAAK8pD,KAAK,IAAA,GAC7C9pD,KAAK8pD,OAAO,GACZ9pD,KAAKohF,kBAAkBphF,KAAKivD,MAAM0xB,UAAU3gF,KAAK8pD,KAAK,IAAA,GACtD9pD,KAAK8pD,OAAO,GAEO,OAAf9pD,KAAKghF,SAAgBhhF,KAAKgvD,kBAC5BhvD,KAAKghF,QAAQ,KAEXhhF,KAAKghF,QAAQ,IAAI;AACnB,QAAI7hE,KAAsB,MAAhBnf,KAAK2V,SAAe,KAAK3V,KAAKghF,QAAQhhF,KAAK2V;AACrD3V,SAAK8uC,UAAU,IAAIn9B,MAAMwN,EAAAA;AACzB,aAAS5Q,KAAI,GAAGA,KAAI4Q,IAAK5Q,MAAK;AAC5B,UAAI7I,KAAO1F,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAAA,IAChCzhD,GAAAA,KAAQrI,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAO,IAAA,GACxC19C,KAAMpM,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAO,IAAA,GACtCu3B,KAAOrhF,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAO,IAAA;AAC3C9pD,WAAK8uC,QAAQvgC,EAAAA,IAAK,EAChBnC,KAAKA,IACL/D,OAAOA,IACP3C,MAAMA,IACN27E,MAAMA,GAEV;IAAA;EACF;AACIrhF,OAAKsqB,SAAS,MAChBtqB,KAAKsqB,UAAW,IAChBtqB,KAAKmvD,YAAAA;AAET,GAEAJ,GAAW1sD,UAAUitD,WAAW,WAAA;AAC9BtvD,OAAK8pD,MAAM9pD,KAAK4qB;AAChB,MAAI02D,KAAO,QAAQthF,KAAKghF,OACpB7hE,KAAMnf,KAAKqqB,QAAQrqB,KAAKsqB,SAAS;AAErC,MAAInL,KAAM,UACR,OAAM,IAAIzM,MAAM,oDAAA;AAGlB1S,OAAKuR,OAAO,IAAIgO,WAAWJ,EAE3B;AAAA,MAAA;AACEnf,SAAKshF,EAAAA,EAAAA;EACN,SAAQ9/E,IAAAA;AACPtB,IAAAA,GAAQC,IAAI,sBAAsBqB,EAAAA;EACpC;AACF,GAEAutD,GAAW1sD,UAAUk/E,OAAO,WAAA;AAC1B,MAEIvlE,IAFAwlE,KAAOttE,KAAKuiC,KAAKz2C,KAAKqqB,QAAQ,CAC9Bo3D,GAAAA,KAAOD,KAAO;AAElB,OAAKxlE,KAAIhc,KAAKsqB,SAAS,GAAGtO,MAAK,GAAGA,MAAK;AAErC,aADI+d,KAAO/5B,KAAKmvD,YAAYnzC,KAAIhc,KAAKsqB,SAAS,IAAItO,IACzC1M,KAAI,GAAGA,KAAIkyE,IAAMlyE,KAGxB,UAFIT,KAAI7O,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAO,IAAA,GACpChnD,KAAWi3B,KAAO/5B,KAAKqqB,QAAQ,IAAQ,IAAJ/a,KAAQ,GACtCf,KAAI,GAAGA,KAAI,KACV,IAAJe,KAAQf,KAAIvO,KAAKqqB,OADA9b,MAAK;AAExB,UAAImzE,KAAM1hF,KAAK8uC,QAASjgC,MAAM,IAAIN,KAAM,CACxCvO;AAAAA,WAAKuR,KAAKzO,KAAe,IAAJyL,EAAAA,IAASmzE,GAAIh8E,MAClC1F,KAAKuR,KAAKzO,KAAe,IAAJyL,KAAQ,CAAKmzE,IAAAA,GAAIr5E,OACtCrI,KAAKuR,KAAKzO,KAAe,IAAJyL,KAAQ,CAAKmzE,IAAAA,GAAIt1E,KACtCpM,KAAKuR,KAAKzO,KAAe,IAAJyL,KAAQ,CAAA,IAAK;IAItC;AAGW,UAATkzE,OACFzhF,KAAK8pD,OAAO,IAAI23B;EAEpB;AACF,GAEA1yB,GAAW1sD,UAAUs/E,OAAO,WAG1B;AAAA,WAFIH,KAAOttE,KAAKuiC,KAAKz2C,KAAKqqB,QAAQ,CAC9Bo3D,GAAAA,KAAOD,KAAO,GACTxlE,KAAIhc,KAAKsqB,SAAS,GAAGtO,MAAK,GAAGA,MAAK;AAEzC,aADI+d,KAAO/5B,KAAKmvD,YAAYnzC,KAAIhc,KAAKsqB,SAAS,IAAItO,IACzC1M,KAAI,GAAGA,KAAIkyE,IAAMlyE,MAAK;AAC7B,UAAIT,KAAI7O,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAAA,IAC7BhnD,GAAAA,KAAWi3B,KAAO/5B,KAAKqqB,QAAQ,IAAQ,IAAJ/a,KAAQ,GAE3CsyE,KAAS/yE,MAAK,GACdgzE,KAAY,KAAJhzE,IAER6yE,KAAM1hF,KAAK8uC,QAAQ8yC,EAAAA;AAMvB,UALA5hF,KAAKuR,KAAKzO,EAAAA,IAAY4+E,GAAIh8E,MAC1B1F,KAAKuR,KAAKzO,KAAW,CAAK4+E,IAAAA,GAAIr5E,OAC9BrI,KAAKuR,KAAKzO,KAAW,CAAK4+E,IAAAA,GAAIt1E,KAC9BpM,KAAKuR,KAAKzO,KAAW,CAAK,IAAA,KAElB,IAAJwM,KAAQ,KAAKtP,KAAKqqB,MAAO;AAE7Bq3D,MAAAA,KAAM1hF,KAAK8uC,QAAQ+yC,EACnB7hF,GAAAA,KAAKuR,KAAKzO,KAAW,CAAK4+E,IAAAA,GAAIh8E,MAC9B1F,KAAKuR,KAAKzO,KAAW,IAAI,CAAK4+E,IAAAA,GAAIr5E,OAClCrI,KAAKuR,KAAKzO,KAAW,IAAI,CAAA,IAAK4+E,GAAIt1E,KAClCpM,KAAKuR,KAAKzO,KAAW,IAAI,CAAA,IAAK;IAChC;AAEa,UAAT2+E,OACFzhF,KAAK8pD,OAAO,IAAI23B;EAEpB;AACF,GAEA1yB,GAAW1sD,UAAUy/E,OAAO,WAE1B;AAAA,WADIL,KAAOzhF,KAAKqqB,QAAQ,GACfrO,KAAIhc,KAAKsqB,SAAS,GAAGtO,MAAK,GAAGA,MAAK;AAEzC,aADI+d,KAAO/5B,KAAKmvD,YAAYnzC,KAAIhc,KAAKsqB,SAAS,IAAItO,IACzC1M,KAAI,GAAGA,KAAItP,KAAKqqB,OAAO/a,MAAK;AACnC,UAAIT,KAAI7O,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAAA,IAC7BhnD,GAAAA,KAAWi3B,KAAO/5B,KAAKqqB,QAAQ,IAAQ,IAAJ/a;AACvC,UAAIT,KAAI7O,KAAK8uC,QAAQtgC,QAAQ;AAC3B,YAAIkzE,KAAM1hF,KAAK8uC,QAAQjgC,EACvB7O;AAAAA,aAAKuR,KAAKzO,EAAAA,IAAY4+E,GAAIt1E,KAC1BpM,KAAKuR,KAAKzO,KAAW,CAAA,IAAK4+E,GAAIr5E,OAC9BrI,KAAKuR,KAAKzO,KAAW,CAAK4+E,IAAAA,GAAIh8E,MAC9B1F,KAAKuR,KAAKzO,KAAW,CAAK,IAAA;MAC5B,MACE9C,MAAKuR,KAAKzO,EAAAA,IAAY,KACtB9C,KAAKuR,KAAKzO,KAAW,CAAA,IAAK,KAC1B9C,KAAKuR,KAAKzO,KAAW,CAAK,IAAA,KAC1B9C,KAAKuR,KAAKzO,KAAW,CAAA,IAAK;IAE9B;AACa,UAAT2+E,OACFzhF,KAAK8pD,OAAO,IAAI23B;EAEpB;AACF,GAEA1yB,GAAW1sD,UAAU0/E,QAAQ,WAI3B;AAAA,WAHIC,KAAQhiF,KAAKqqB,QAAQ,GAEvB43D,KADW3zE,SAAS,SAAS,CAAA,GAEtB0N,KAAIhc,KAAKsqB,SAAS,GAAGtO,MAAK,GAAGA,MAAK;AAEzC,aADI+d,KAAO/5B,KAAKmvD,YAAYnzC,KAAIhc,KAAKsqB,SAAS,IAAItO,IACzC1M,KAAI,GAAGA,KAAItP,KAAKqqB,OAAO/a,MAAK;AACnC,UAAI2pD,KAAIj5D,KAAKivD,MAAMnM,UAAU9iD,KAAK8pD,KAAAA,IAClC9pD;AAAAA,WAAK8pD,OAAO;AACZ,UAAIpkD,MAAUuzD,KAAIgpB,MAAQA,KAAQ,MAAO,GACrC55E,MAAY4wD,MAAK,IAAKgpB,MAAQA,KAAQ,MAAO,GAC7C71E,MAAU6sD,MAAK,KAAMgpB,MAAQA,KAAQ,MAAO,GAC5CzC,KAAQvmB,MAAK,KAAK,MAAO,GAEzBn2D,KAAWi3B,KAAO/5B,KAAKqqB,QAAQ,IAAQ,IAAJ/a;AACvCtP,WAAKuR,KAAKzO,EAAYsJ,IAAAA,IACtBpM,KAAKuR,KAAKzO,KAAW,CAAA,IAAKuF,IAC1BrI,KAAKuR,KAAKzO,KAAW,CAAK4C,IAAAA,IAC1B1F,KAAKuR,KAAKzO,KAAW,CAAK08E,IAAAA;IAC5B;AAEAx/E,SAAK8pD,OAAOk4B;EACd;AACF,GAEAjzB,GAAW1sD,UAAU6/E,QAAQ,WAAA;AAM3B,WALIF,KAAQhiF,KAAKqqB,QAAQ,GAEvB43D,KADW3zE,SAAS,SAAS,CAG7B6zE,GAAAA,KADY7zE,SAAS,UAAU,CAExB0N,GAAAA,KAAIhc,KAAKsqB,SAAS,GAAGtO,MAAK,GAAGA,MAAK;AAEzC,aADI+d,KAAO/5B,KAAKmvD,YAAYnzC,KAAIhc,KAAKsqB,SAAS,IAAItO,IACzC1M,KAAI,GAAGA,KAAItP,KAAKqqB,OAAO/a,MAAK;AACnC,UAAI2pD,KAAIj5D,KAAKivD,MAAMnM,UAAU9iD,KAAK8pD,KAAAA,IAClC9pD;AAAAA,WAAK8pD,OAAO;AACZ,UACIpkD,MAAUuzD,KAAIgpB,MAAQA,KAAQ,MAAO,GACrC55E,MAAY4wD,MAAK,IAAKkpB,MAAQA,KAAQ,MAAO,GAC7C/1E,MAAS6sD,MAAK,MAAMgpB,KAAQ,MAAO,GAEnCn/E,KAAWi3B,KAAO/5B,KAAKqqB,QAAQ,IAAQ,IAAJ/a;AACvCtP,WAAKuR,KAAKzO,EAAYsJ,IAAAA,IACtBpM,KAAKuR,KAAKzO,KAAW,CAAA,IAAKuF,IAC1BrI,KAAKuR,KAAKzO,KAAW,CAAA,IAAK4C,IAC1B1F,KAAKuR,KAAKzO,KAAW,CATT,IAAA;IAUd;AAEA9C,SAAK8pD,OAAOk4B;EACd;AACF,GAEAjzB,GAAW1sD,UAAU+/E,QAAQ,WAE3B;AAAA,WAASpmE,KAAIhc,KAAKsqB,SAAS,GAAGtO,MAAK,GAAGA,MAAK;AAEzC,aADI+d,KAAO/5B,KAAKmvD,YAAYnzC,KAAIhc,KAAKsqB,SAAS,IAAItO,IACzC1M,KAAI,GAAGA,KAAItP,KAAKqqB,OAAO/a,MAAK;AACnC,UAAI5J,KAAO1F,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAO,IAAA,GACvCzhD,KAAQrI,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAAA,IACjC19C,GAAAA,KAAMpM,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAAA,IAC/BhnD,GAAAA,KAAWi3B,KAAO/5B,KAAKqqB,QAAQ,IAAQ,IAAJ/a;AACvCtP,WAAKuR,KAAKzO,EAAAA,IAAYsJ,IACtBpM,KAAKuR,KAAKzO,KAAW,CAAKuF,IAAAA,IAC1BrI,KAAKuR,KAAKzO,KAAW,CAAA,IAAK4C,IAC1B1F,KAAKuR,KAAKzO,KAAW,CAAA,IAAK;IAC5B;AAEA9C,SAAK8pD,OAAO9pD,KAAKqqB,QAAQ;EAC3B;AACF,GAMA0kC,GAAW1sD,UAAUggF,QAAQ,WAE3B;AAAA,WAASrmE,KAAIhc,KAAKsqB,SAAS,GAAGtO,MAAK,GAAGA,KAEpC,UADI+d,KAAO/5B,KAAKmvD,YAAYnzC,KAAIhc,KAAKsqB,SAAS,IAAItO,IACzC1M,KAAI,GAAGA,KAAItP,KAAKqqB,OAAO/a,MAAK;AACnC,QAAI5J,KAAO1F,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAO,IAAA,GACvCzhD,KAAQrI,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAAA,IACjC19C,GAAAA,KAAMpM,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAAA,IAC/B01B,GAAAA,KAAQx/E,KAAKivD,MAAMlM,SAAS/iD,KAAK8pD,OAAO,IAAA,GACxChnD,KAAWi3B,KAAO/5B,KAAKqqB,QAAQ,IAAQ,IAAJ/a;AACvCtP,SAAKuR,KAAKzO,EAAYsJ,IAAAA,IACtBpM,KAAKuR,KAAKzO,KAAW,CAAA,IAAKuF,IAC1BrI,KAAKuR,KAAKzO,KAAW,CAAK4C,IAAAA,IAC1B1F,KAAKuR,KAAKzO,KAAW,CAAK08E,IAAAA;EAC5B;AAIJ,GAEAzwB,GAAW1sD,UAAUigF,UAAU,WAAA;AAC7B,SAAOtiF,KAAKuR;AACd;;;;;;;CWxQA,SAAUqvB,IAAAA;AAGRA,EAAAA,GAAS2hD,aAAa,SAASr0C,IAAWpjB,IAAO6lB,IAAOyD,IACtD;AAAA,QAAI9vC,KAAS,IAAIyqD,GAAW7gB,IAAAA,KAAW,GACnC7jB,KAAQ/lB,GAAO+lB,OACjBC,KAAShmB,GAAOgmB,QAIdk2D,KAAe,EACjBjvE,MAHWjN,GAAOg+E,QAIlBj4D,GAAAA,OAAOA,IACPC,QAAQA,GAAAA,GAIN/Y,KADU,IAAIq1C,GATT,GAAA,EAUUkH,OAAO0yB,IAVjB,GAWT;AAAA,WAAO5/C,GAAS09C,YAAY99E,KAAKR,MAAMuR,IAAMuZ,IAAO6lB,IAAOyD,EAAAA;EAAAA;AAE9D,GAAEl+B,EAAMkB,GAAAA,GV+xKTm4C,GAAYltD,UAAUigF,UAAU,WAAA;AAC9B,SAAOtiF,KAAKuR;AACd;;;;;;;CWpzKA,SAAUqvB,IAAAA;AAGRA,EAAAA,GAAS4hD,cAAc,SAASt0C,IAAWpjB,IAAO6lB,IAAOyD,IACvD;AAAA,QAAI9vC,KAAS,IAAIirD,GAAYrhB,EACzB7jB,GAAAA,KAAQ/lB,GAAO+lB,OACjBC,KAAShmB,GAAOgmB,QAIdk2D,KAAe,EACjBjvE,MAHWjN,GAAOg+E,QAAAA,GAIlBj4D,OAAOA,IACPC,QAAQA,GAAAA,GAIN/Y,KADU,IAAIq1C,GATT,GAUUkH,EAAAA,OAAO0yB,IAVjB,GAAA;AAWT,WAAO5/C,GAAS09C,YAAY99E,KAAKR,MAAMuR,IAAMuZ,IAAO6lB,IAAOyD,EAAAA;EAAAA;AAE9D,GAAEl+B,EAAMkB,GC0CNlB,GAAAA,EAAMkB,IApCEqrE,cAAc,SAASv0C,IAAWpjB,IAAO6lB,IAAAA;AAWhD,WARI+xC,KAAcx0C,GAAU38B,MACxB/C,KAASk0E,GAAYl0E,QAErBm0E,KAAS,IAAIpjE,WAAY/Q,KAAS,IAAK,CAAA,GACvCo0E,KAAW,IAAIrjE,WAAW/Q,KAAS,CACnCq0E,GAAAA,KAAW,GACXC,KAAa,GAERv0E,KAAI,GAAGA,KAAIC,IAAQD,MAAK,GAAG;AAClC,QAAII,KAAI+zE,GAAYn0E,EAAAA,GAChBK,KAAI8zE,GAAYn0E,KAAI,CACpBM,GAAAA,KAAI6zE,GAAYn0E,KAAI,CAAA,GACpBixE,KAAQkD,GAAYn0E,KAAI,CAAA;AAC5Bo0E,IAAAA,GAAOE,IAAcl0E,IAAAA,IACrBg0E,GAAOE,IAAcj0E,IAAAA,IACrB+zE,GAAOE,IAAch0E,IAAAA,IACrB+zE,GAASE,IAAAA,IAAgBtD;EAC3B;AAEA,MAAIuD,KAAU/iF,KAAKstC,aAAaiC,0BAA0BozC,EAAAA;AAG1D,SAAO,EACLnD,OAHcx/E,KAAKstC,aAAaiC,0BAA0BqzC,EAAAA,GAI1DrxE,MAAMwxE,IACNj4D,OAAOA,IACP6lB,OAAOA,IACPhC,YAAY,aACZM,kBAAkB,GAClB5kB,OAAO6jB,GAAU7jB,OACjBC,QAAQ4jB,GAAU5jB,OAAAA;AAAAA,GC6KrBpU,EAAMkB,IA5NE4rE,cAAc,SAASC,IAAAA;AA0N9B,SAhBuCziE,WAAnCxgB,KAAKqX,SAAS6rE,qBAChBljF,KAAKqX,SAAS6rE,mBAAmB,CAAA,GACjCljF,KAAKqX,SAAS6rE,iBAAiBC,eAAe,QAAA,WAzMhC,EACd5gB,IAAI,aACJ6gB,IAAI,YACJlQ,IAAI,qBACJ,SAAS,oBACT,SAAS,oBACT,SAAS,kBACT,SAAS,iBACT,SAAS,mBACT,SAAS,mBACT,SAAS,oBACT,SAAS,kBACT,SAAS,oBACT,SAAS,iBACT,SAAS,kBACT,SAAS,yBACT,SAAS,kBACT,SAAS,oBACT,SAAS,mBACT,SAAS,kBACTmQ,IAAI,aACJC,IAAI,YACJC,IAAI,YACJC,KAAK,YACLC,IAAI,eACJC,IAAI,UACJ7rB,IAAI,cACJ8rB,IAAI,WACJv6B,IAAI,WACJw6B,IAAI,UACJC,IAAI,aACJC,IAAI,WACJxyB,IAAI,WACJvkC,IAAI,YACJgrC,IAAI,WACJgsB,IAAI,WACJ,SAAS,uBACT,SAAS,iBACT,SAAS,uBACT,SAAS,oBACT/mC,IAAI,WACJgnC,IAAI,YACJC,IAAI,QACJ/C,IAAI,YACJgD,IAAI,SACJhxD,IAAI,UACJixD,IAAI,oBACJ,SAAS,mBACTC,IAAI,WACJ,SAAS,uBACT,SAAS,oBACT,SAAS,oBACT,SAAS,qBACT,SAAS,qBACT,SAAS,yBACT,SAAS,yBACT,SAAS,0BACT,SAAS,+BACT,SAAS,4BACT,SAAS,2BACT,SAAS,sBACTC,IAAI,aACJC,IAAI,YACJC,IAAI,YACJC,IAAI,UACJC,IAAI,WACJC,IAAI,qBACJ,SAAS,oBACT,SAAS,mBACT,SAAS,mBACT,SAAS,uBACT,SAAS,mBACT,SAAS,wBACTC,IAAI,WACJC,KAAK,YACLvlB,IAAI,kBACJ,SAAS,kBACTwlB,IAAI,YACJ3uB,IAAI,YACJkC,IAAI,qBACJ,SAAS,oBACT,SAAS,oBACT,SAAS,0BACT,SAAS,uBACT,SAAS,wBACTgf,IAAI,SACJ0N,IAAI,YACJC,IAAI,WACJxqB,IAAI,UACJyqB,IAAI,SACJC,IAAI,aACJC,IAAI,aACJ9vE,IAAI,cACJ+vE,IAAI,aACJrtB,IAAI,SACJstB,IAAI,sBACJ,SAAS,yBACTvpB,IAAI,YACJwpB,IAAI,WACJC,IAAI,YACJC,IAAI,UACJC,IAAI,SACJC,IAAI,WACJC,KAAK,WACLC,IAAI,UACJ,SAAS,wBACT,SAAS,wBACT/pB,IAAI,SACJgqB,IAAI,WACJC,IAAI,cACJ9wB,IAAI,iBACJ+wB,IAAI,mBACJC,IAAI,SACJC,IAAI,aACJC,IAAI,WACJC,IAAI,SACJC,IAAI,WACJC,IAAI,aACJC,IAAI,UACJC,IAAI,UACJvqB,IAAI,UACJwqB,IAAI,aACJ/pB,IAAI,sBACJgqB,IAAI,uBACJ5tB,IAAI,WACJ6tB,IAAI,SACJC,IAAI,SACJl3B,IAAI,WACJ,SAAS,gBACTm3B,IAAI,UACJjiE,IAAI,cACJ,SAAS,uBACTqsC,IAAI,WACJ,SAAS,mBACT,SAAS,sBACT61B,IAAI,WACJC,IAAI,kBACJC,IAAI,YACJ,SAAS,uBACTC,IAAI,WACJ,SAAS,sBACTC,IAAI,kBACJC,IAAI,SACJ/yD,IAAI,YACJylC,IAAI,aACJrE,IAAI,UACJ4xB,IAAI,cACJC,IAAI,WACJC,IAAI,UACJC,IAAI,aACJC,IAAI,UACJtrB,IAAI,WACJurB,IAAI,WACJ,SAAS,uBACT,SAAS,qBACT,SAAS,mBACT,SAAS,sBACT,SAAS,wBACT,SAAS,gCACT,SAAS,qBACT,SAAS,yBACT,SAAS,uBACT,SAAS,sBACT,SAAS,oBACT,SAAS,uBACT,SAAS,oBACT,SAAS,sBACT,SAAS,kBACT,SAAS,yBACT,SAAS,mBACT,SAAS,qBACT,SAAS,uBACT1kE,IAAI,QACJ2kE,IAAI,WACJC,IAAI,WACJ,SAAS,qBACT,SAAS,oBACT9vB,IAAI,SACJ+vB,IAAI,SACJC,IAAI,UACJC,IAAI,QACJC,KAAK,SACLC,IAAI,UACJC,IAAI,UACJC,IAAI,WACJC,IAAI,WACJC,IAAI,aACJC,KAAK,iBACLC,IAAI,QACJhrB,IAAI,SACJirB,IAAI,cACJC,IAAI,WACJv4B,IAAI,WACJokB,IAAI,SACJoU,IAAI,SACJC,IAAI,WACJC,IAAI,OAAA,EAQQxF,EAAAA,MACZjjF,KAAKqX,SAAS6rE,iBAAiBwF,eAAezF,IAAAA,UAC1CjjF,KAAKqX,SAAS6rE,iBAAiBC,iBACjCnjF,KAAKqX,SAASmL,OAAO5O,UAAU,cAAc,WAAA;AAC3C5T,SAAKqX,SAAS4H,MACZ,YAAYjf,KAAKqX,SAAS6rE,iBAAiBwF,eAAe,GAAA;EAE9D,CAAA,GACA1oF,KAAKqX,SAAS6rE,iBAAiBC,eAAe,QAG3CnjF;AAAAA,GlBtNDoX,KAwWPlB,EAAMkB,KA5VH6oC,KAAsB7oC,GAAI6oC,qBAAqB,SAAS1zB,IAAMpW,IAAAA;AAGhE,MAeI5H,IAEAo6E,IAjBAxyD,MAFJhgB,KAAUA,MAAW,CAAA,GAEI4T,QAAQ/pB,KAAKqX,SAASgX,QAAAA,GAC3C1O,KAAWxJ,GAAQwJ,YAAY3f,KAAKqX,SAASuD,YAC7CyY,GAAAA,KAAYld,GAAQkd,aAAarzB,KAAKqX,SAASme,aAAAA,GAE/CozD,KAASzyE,GAAQyyE,SACjBzyE,GAAQyyE,SACRzyD,GAAW/J,SAASy8D,QAAQD,QAC5BE,KAAmBF,GAAOG,MAAMH,GAAOG,MAAM,GAC7CC,KAAU7yE,GAAQ6yE,UAClB7yE,GAAQ6yE,UACR7yD,GAAW/J,SAASy8D,QAAQG,SAC5BC,KAAoBD,GAAQD,MAAMC,GAAQD,MAAM,GAChDvyD,KAAAA,UAAYrgB,GAAQqgB,WACpB0yD,KAAe,GAGf16E,KAAS+d,GAAK/d,QAEd26E,KAAkB,GAClBC,KAAqBR,GAAO,CAAA,KAAME,IAClC74D,KAAS,CAAA;AAEb,OAAK1hB,KAAI,GAAGA,KAAIC,IAAQD,KACtBo6E,CAAAA,KAAYp8D,GAAK9b,WAAWlC,EAAAA,GAEqB,cAAA,OAAtC4nB,GAAW/J,SAASi9D,gBAC7Bp5D,GAAOpb,MACJshB,GAAW/J,SAASk9D,aACnBnzD,GAAW/J,SAASm9D,iBAAiBZ,EAAAA,CAAAA,IAErCt1D,MAAa,MAAO1T,OAAa,KAAK,GAAA,KAQxCupE,KAJA1yD,MAC8B,aAA9Br0B,SAAO6mF,GAAQL,EAAAA,CAAAA,KAAAA,CACd75E,MAAMR,SAAS06E,GAAQL,EAAWQ,EAAAA,EAAAA,GAAkB,EAGnDH,CAAAA,IAAAA,GAAQL,EAAWQ,EAAAA,EAAAA,IAAmBF,KAEzB,GAEjBh5D,GAAOpb,MACJ+zE,GAAOD,EAAcS,KAAAA,MAAsBN,KAC1CI,EAGNC,IAAAA,KAAkBR;AAGpB,SAAO14D;AAAAA,GAmBLsG,KAAsBnf,GAAImf,qBAAqB,SAAShK,IAAMpW,IAAAA;AAGhE,MAAIwJ,MAFJxJ,KAAUA,MAAW,CAAA,GAEEwJ,YAAY3f,KAAKqX,SAASuD,YAAAA,GAC7CmP,KAAO5T,GAAQ4T,QAAQ/pB,KAAKqX,SAASgX,QAAAA,GACrCgF,KAAYld,GAAQkd,aAAarzB,KAAKqX,SAASme,aAiBnD;AAAA,SAdIpe,GAAIihC,kBACN9rB,KAAOnV,GAAIihC,cAAc9rB,EAAAA,IAGgB,cAAhCxC,OAAAA,GAAKqC,SAASi9D,gBAErBt/D,GAAKqC,SAASi9D,cAAc98D,IAAM5M,IAAU0T,EAAAA,IAAa1T,KAElDsgC,GACN7/C,MAAMJ,MAAMK,SAAAA,EACZy0B,OAAO,SAASioB,IAAIC,IACnB;AAAA,WAAOD,KAAKC;EACb,GAAE,CAAA;AAAA,GAQLkD,KAAgB,SAAS9c,IAAMomD,IAAcC,IAAiBC,IAAAA;AAOhE,WANIC,KAAS,CAGTp7E,GAAAA,KAAI,GACNke,KAAI2W,GAAK50B,QACTo7E,KAAa,GACRr7E,OAAMke,MAAKm9D,KAAaJ,GAAaj7E,EAAAA,IAAKk7E,KAC/CG,CAAAA,MAAcJ,GAAaj7E,EAC3BA,GAAAA;AAGFo7E,EAAAA,GAAO90E,KAAKuuB,GAAK5vB,MAAM,GAAGjF,EAG1B,CAAA;AAAA,MAAIs7E,KAAct7E;AAElB,OADAq7E,KAAa,GACNr7E,OAAMke,KACPm9D,CAAAA,KAAaJ,GAAaj7E,EAAKm7E,IAAAA,OACjCC,GAAO90E,KAAKuuB,GAAK5vB,MAAMq2E,IAAat7E,EAAAA,CAAAA,GACpCq7E,KAAa,GACbC,KAAct7E,KAEhBq7E,MAAcJ,GAAaj7E,EAAAA,GAC3BA;AAMF,SAJIs7E,OAAgBt7E,MAClBo7E,GAAO90E,KAAKuuB,GAAK5vB,MAAMq2E,IAAat7E,EAG/Bo7E,CAAAA,GAAAA;AAAAA,GAKLxpC,KAA0B,SAAS5zB,IAAMu9D,IAAQ3zE,IAAAA;AAI9CA,EAAAA,OACHA,KAAU,CAAA;AAGZ,MAKEitB,IACAomD,IAGAj7E,IACAke,IACAgH,IACAs2D,IAkFEC,IA9FAjwD,KAAO,CACTC,GAAAA,KAAQ,CAACD,EACTkwD,GAAAA,KAAc9zE,GAAQ+zE,cAAc,GACpCC,KAAmB,GACnBC,KAAsB,GAGtBpzD,KAAQzK,GAAK3b,MAAM,GAAA,GACnBy5E,KAAiBpqC,GAAmB7/C,MAAMJ,MAAM,CAAC,KAAKmW,EAAAA,CAAAA,EAAU,CAWlE;AAAA,MAJE4zE,KAAAA,OADE5zE,GAAQ4zE,aACG/yD,GAAM,CAAA,EAAGxoB,SAAS,IAElB2H,GAAQ4zE,cAAc,GAErB;AACd,QAAIO,KAAM34E,MAAMo4E,EAAAA,EAAY74E,KAAK,GAC/Bq5E,GAAAA,KAAO,CACTvzD;AAAAA,IAAAA,GAAM/lB,IAAI,SAASu5E,IAAAA;AAAAA,OACjBA,KAAMA,GAAI55E,MAAM,OACRpC,GAAAA,SAAS,IACf+7E,KAAOA,GAAKp2D,OACVq2D,GAAIv5E,IAAI,SAASu5E,IAAKC,IACpB;AAAA,gBAAQA,MAAOD,GAAIh8E,SAAS,OAAO,MAAMg8E;MAC1C,CAGHD,CAAAA,IAAAA,GAAK11E,KAAK21E,GAAI,CAAA,CAAA;IAElB,CACAxzD,GAAAA,KAAQuzD,IACRR,KAAaxzD,GAAmBn2B,MAAMJ,MAAM,CAACsqF,IAAKn0E,EAAAA,CAAAA;EACpD;AAEA,OAAK5H,KAAI,GAAGke,KAAIuK,GAAMxoB,QAAQD,KAAIke,IAAGle,MAAK;AACxC,QAAIxK,KAAQ;AAYZ,QAVAq/B,KAAOpM,GAAMzoB,EAAAA,GACTw7E,MAAyB,QAAX3mD,GAAK,CAAA,MACrBA,KAAOA,GAAKp+B,OAAO,CAAA,GACnBjB,KAAQ,IAQRkmF,KAAcE,MALhBC,MADAZ,KAAevpC,GAAmB7/C,MAAMJ,MAAM,CAACojC,IAAMjtB,EAClB2e,CAAAA,GAAAA,OAAO,SAASioB,IAAIC,IAAAA;AACrD,aAAOD,KAAKC;IACb,GAAE,CAAA,KAGsD8sC,MACvD/lF,IACA;AACA,UAAIqmF,KAAsBN,IAAQ;AAchC,aAXAr2D,KAAMysB,GAAc9/C,MAAMJ,MAAM,CAC9BojC,IACAomD,IACAM,MAAUG,KAAcE,KACxBL,EAGF/vD,CAAAA,GAAAA,GAAKllB,KAAK4e,GAAIW,MAAAA,CAAAA,GAEd2F,KAAO,CAACtG,GAAIzN,IAAAA,CAAAA,GAELyN,GAAIjlB,SACTwrB,CAAAA,GAAMnlB,KAAK,CAAC4e,GAAIW,MAAAA,CAAAA,CAAAA;AAElBg2D,QAAAA,KAAsBZ,GACnBh2E,MAAM4vB,GAAK50B,UAAUurB,GAAK,CAAA,IAAKA,GAAK,CAAA,EAAGvrB,SAAS,EAAA,EAChDsmB,OAAO,SAASioB,IAAIC,IACnB;AAAA,iBAAOD,KAAKC;QACb,GAAE,CAAA;MACP,MAEEjjB,CAAAA,KAAO,CAACqJ,EAAAA;AAIVpJ,MAAAA,GAAMnlB,KAAKklB,EAAAA,GACXkwD,KAAcG,KAAsBL,IACpCI,KAAmBE;IACrB,MACEtwD,CAAAA,GAAKllB,KAAKuuB,EAEV6mD,GAAAA,MAAeE,KAAmBC,IAClCD,KAAmBE;EAEvB;AAaA,SATEL,KADED,KACY,SAASW,IAAID,IAAAA;AACzB,YAAQA,KAAMH,KAAM,MAAMI,GAAGx5E,KAAK,GAAA;EAAA,IAGtB,SAASw5E,IAAAA;AACrB,WAAOA,GAAGx5E,KAAK,GAAA;EAAA,GAIZ8oB,GAAM/oB,IAAI+4E,EAAAA;AAAAA,GAoBnB5yE,GAAIyd,kBAAkB,SAAStI,IAAMu9D,IAAQ3zE,IAK3C;AAAA,MAmCIw0E,IAnCAC,MAFJz0E,KAAUA,MAAW,CAAA,GAEDwJ,YAAY3f,KAAKqX,SAASuD,YAAAA,GAC5CiwE,KAAa,SAAS10E,IAAAA;AAMpB,QAAKA,GAAQyyE,UAAWzyE,GAAQ6yE,QAoB9B,QAAO,EACLJ,QAAQzyE,GAAQyyE,QAChBI,SAAS7yE,GAAQ6yE,QArBnB;AAAA,QAAIrlE,KAAI3jB,KAAKqX,SAASgX,QAAQlY,GAAQ8V,UAAU9V,GAAQ6E,SAAAA,GACtDkP,KAAW;AAKb,WAAIvG,GAAEyI,SAASlC,EACN,IAAA,EACL0+D,QAAQjlE,GAAEyI,SAASlC,EAAU0+D,EAAAA,UAdtB,EACT,GAAG,EAAA,GAcDI,SAASrlE,GAAEyI,SAASlC,EAAU8+D,EAAAA,WAZxB,CAAA,EAAA,IAeD,EACLj/D,MAAMpG,GAAEyI,UACRzM,UAAU3f,KAAKqX,SAASuD,YACxByY,GAAAA,WAAWrzB,KAAKqX,SAASme,aASjC,EAAA;EAAA,EAAEh1B,KAAKR,MAAMmW,EAAAA;AAKbw0E,EAAAA,KADEh5E,MAAM8W,QAAQ8D,EAAAA,IACHA,KAEA9oB,OAAO8oB,EAAM3b,EAAAA,MAAM,OAMlC;AAAA,MAAIk6E,KAAmB,IAAM9qF,KAAKqX,SAASoD,cAAcqvE,KAAUc;AASnEC,EAAAA,GAAWX,aAAa/zE,GAAQ+zE,aACN,IAArB/zE,GAAQ+zE,aAAmBlqF,KAAKqX,SAASoD,cAAemwE,KACzD,GACJC,GAAWd,aAAa5zE,GAAQ4zE;AAEhC,MAAIx7E,IACFke,IACAwD,KAAS,CACX;AAAA,OAAK1hB,KAAI,GAAGke,KAAIk+D,GAAWn8E,QAAQD,KAAIke,IAAGle,KACxC0hB,CAAAA,KAASA,GAAOkE,OACdgsB,GAAwB//C,MAAMJ,MAAM,CAClC2qF,GAAWp8E,EAAAA,GACXu8E,IACAD,EAKN,CAAA,CAAA;AAAA,SAAO56D;AAAAA,ImBzVX,SAAU7Y,IAAAA;AAERA,EAAAA,GAAI2zE,kBAAkB3zE,GAAI2zE,mBAAmB,CAAA;AAO7C,WALIC,KAAU,oBACZC,KAAU,oBACVC,KAAoB,CAAE,GACtBC,KAAkB,CAAA,GAEX58E,KAAI,GAAGA,KAAI08E,IAAgB18E,KAClC28E,CAAAA,GAAkBD,GAAQ18E,EAAAA,CAAAA,IAAMy8E,GAAQz8E,EACxC48E,GAAAA,GAAgBH,GAAQz8E,EAAM08E,CAAAA,IAAAA,GAAQ18E,EAAAA;AAGxC,MAAIoZ,KAAM,SAASjQ,IAAAA;AACjB,WAAO,OAAOpJ,SAASoJ,IAAO,EAAA,EAAIzI,SAAS,EAAA;EAAA,GAGzC6H,KAAYM,GAAI2zE,gBAAgBj0E,WAAW,SAASvF,IACtD;AAAA,QACImG,IAAO0zE,IAAWC,IAAaC,IAD/BC,KAAO,CAAC,GAAA;AAGZ,aAASj6E,MAAOC,IAAM;AAYpB,UAXAmG,KAAQnG,GAAKD,EAAAA,GAERxC,MAAMR,SAASgD,IAAK,EAAA,CAAA,IAMvB85E,KAAY,MAAM95E,KAAM,OALxBA,KAAMhD,SAASgD,IAAK,EAEpB85E,GAAAA,MADAA,KAAYzjE,GAAIrW,EAAAA,EAAKkC,MAAM,CAEfA,GAAAA,MAAM,GAAI,EAAA,IAAK23E,GAAgBC,GAAU53E,MAAAA,EAKnC,CAAA,IAAA,YAAA,OAATkE,GACLA,CAAAA,KAAQ,KACV2zE,KAAc1jE,GAAIjQ,EAAAA,EAAOlE,MAAM,CAAA,GAC/B83E,KAAe,QAEfD,KAAc1jE,GAAIjQ,EAAAA,EAAOlE,MAAM,CAC/B83E,GAAAA,KAAe,KAEjBD,KACEC,KACAD,GAAY73E,MAAM,GAAI,EAAA,IACtB23E,GAAgBE,GAAY73E,MAAAA,EAAO,CAAA;WAChC;AACL,YAAqB,aAAjBrR,SAAOuV,EAAAA,EAGT,OAAM,IAAIhF,MACR,2CAAwCvQ,SAAUuV,EAAQ,IAAA,GAAA;AAH5D2zE,QAAAA,KAAcv0E,GAASY,EAAAA;MAM3B;AACA6zE,MAAAA,GAAK12E,KAAKu2E,KAAYC,EAAAA;IACxB;AAEA,WADAE,GAAK12E,KAAK,GAAA,GACH02E,GAAKr6E,KAAK,EAAA;EAAA,GAWfs6E,KAAcp0E,GAAI2zE,gBAAgBS,aAAa,SAASj6E,IAAAA;AAC1D,QAAoB,YAATA,OAAAA,GACT,OAAM,IAAImB,MAAM,wCAAA;AAelB,aAVE+4E,IAGAC,IAGAp6E,IAEAyb,IAVEkD,KAAS,CAAE,GACb07D,KAAO,GAEPC,KAAe37D,IACf47D,KAAc,CAAA,GAEdC,KAAW,IACXC,KAAa,IAEbC,KAAUz6E,GAAK/C,SAAS,GAGjBD,KAAI,GAAGA,KAAIy9E,IAASz9E,MAAK,EAKtB,SAFVwe,KAAKxb,GAAKhD,EAAAA,KAGJk9E,MAEFn6E,KAAMm6E,GAAYv6E,KAAK,EACvBu6E,GAAAA,KAAAA,UAGAA,KAAc,CAAA,IAEPA,KACTA,GAAY52E,KAAKkY,EAAAA,IACF,OAANA,MAET8+D,GAAYh3E,KAAK,CAAC+2E,IAAct6E,EAAAA,CAAAA,GAChCs6E,KAAe,CAAA,GACft6E,KAAAA,UACe,OAANyb,OAET2+D,KAAkBG,GAAY7lE,IAAAA,GACd,CAAG0lE,EAAAA,GAAgB,CAAA,CAAA,IAAME,IACzCt6E,KAAAA,QACAs6E,KAAeF,GAAgB,CAAA,KAChB,OAAN3+D,KACT4+D,KAAAA,KAAQ,WAGJr6E,KACE45E,GAAkBl3E,eAAe+Y,EAAAA,KACnC++D,MAAYZ,GAAkBn+D,EAC9Bzb,GAAAA,KAAMhD,SAASw9E,IAAU,EAAA,IAAMH,IAC/BA,KAAO,GACPG,KAAW,MAEXA,MAAY/+D,KAGVm+D,GAAkBl3E,eAAe+Y,EAAAA,KACnCg/D,MAAcb,GAAkBn+D,EAAAA,GAChC6+D,GAAat6E,EAAOhD,IAAAA,SAASy9E,IAAY,EAAMJ,IAAAA,IAC/CA,KAAO,GACPr6E,KAAMkP,QACNurE,KAAa,MAEbA,MAAch/D;AAKtB,WAAOkD;EAAAA,GAgBLtD,KAAgB,EAClBO,WAAW,CAAC,iBACZ++D,GAAAA,iBAAiBT,GACf,4JAGAU,EAAAA,GAAAA,KAAY,EACdrD,SAAS,EACPsD,SAASx/D,IACT,gBAAgBA,IAChB,uBAAuBA,IACvB,mBAAmBA,IACnBo+C,WAAWp+C,IACX,kBAAkBA,IAClB,yBAAyBA,IACzB,qBAAqBA,IACrB,eAAeA,IACf,cAAcA,IACd,oBAAoBA,IACpB,gBAAgBA,GAAAA,EAAAA,GAMhBy/D,KAAc,EAChBvD,SAAS,EASP,mBAAmB2C,GACjB,2CAEF,GAAA,oBAAoBA,GAClB,gxDAAA,GAEF,kBAAkBA,GAChB,8mDAAA,GAEFW,SAASX,GAAW,2CAAA,GACpB,uBAAuBA,GACrB,2CAAA,GAEF,cAAcA,GACZ,uzDAEFa,GAAAA,QAAQb,GACN,oNAEFzgB,GAAAA,WAAWygB,GACT,8qDAEF,GAAA,yBAAyBA,GACvB,8mDAEFc,GAAAA,cAAcd,GAAW,+CAAA,GACzB,gBAAgBA,GAAW,2CAAA,GAC3B,gBAAgBA,GACd,mrDAAA,GAEF,eAAeA,GACb,w2DAAA,GAEF,qBAAqBA,GACnB,8qDAgBNp0E,EAAAA,EAAAA;AAAAA,EAAAA,GAAIoL,OAAO3N,KAAK,CACd,WACA,SAAStD,IAAAA;AACP,QAAIwY,KAAOxY,GAAKwY,MAEZwiE,KAAUH,GAAqB,QAAEriE,GAAKE,cAAAA;AACtCsiE,IAAAA,OACFxiE,GAAKqC,SAAkB,UAAI,CAAA,GAC3BrC,GAAKqC,SAAkB,QAAEw8D,SAAS2D,GAAQ3D,QAC1C7+D,GAAKqC,SAAkB,QAAE48D,UAAUuD,GAAQvD;AAG7C,QAAIr8D,KAAgBu/D,GAAmB,QAAEniE,GAAKE,cAAAA;AAC1C0C,IAAAA,OACF5C,GAAKqC,SAAkB,QAAElC,WAAWyC,IACpC5C,GAAKG,WAAWyC,GAAcO,UAAU,CAE3C;EAAA,CAAA,CAAA;AAEJ,GAAEhX,EAAMkB,GAAAA;;;;;CCrST,SAAUlB,IAAAA;AAGR,MAAI49B,KAA2B,SAASC,IAAAA;AAGtC,aAFI50B,KAAM40B,GAAcvlC,QACpB+xB,KAAQ,IAAIhhB,WAAWJ,EAClB5Q,GAAAA,KAAI,GAAGA,KAAI4Q,IAAK5Q,KACvBgyB,CAAAA,GAAMhyB,EAAAA,IAAKwlC,GAActjC,WAAWlC,EAEtC;AAAA,WAAOgyB;EAAAA;AAmBTrqB,EAAAA,GAAMkB,IAAIoL,OAAO3N,KAAK,CACpB,WACA,SAAStD,IACP;AAAA,QAAIi7E,KAAOhsE,QACPuJ,KAAOxY,GAAKwY,MACZsC,KAAW9a,GAAK8a;AACpB,QAAA,CAAItC,GAAKoC,gBAAT;AAGA,UAAA,WAAWE,GAeT,OAAM,IAAI3Z,MACR,iFACEqX,GAAKE,iBACL,KAAA;AAZJ,UAAoB,YAAA,QAJlBuiE,KADoD,UAAlDngE,GAASogE,gBAAgB1iE,GAAKE,cAAAA,IACzBoC,GAASkkB,SAASxmB,GAAKE,cAAAA,IAEvBoC,GAASqgE,eAAe3iE,GAAKE,cAGpC,GAAA,OAAM,IAAIvX,MACR,+FACEqX,GAAKE,iBACL,KAAA;AAAA,QAnCE,SAASF,IAAMyiE,IAGzBA;AAAAA,QAAAA,KADE,oBAAoBlpF,KAAKkpF,EAAAA,IACpB14C,GAAyB04C,EAAAA,IAEzB14C,GAAyB5kC,GAAKs9E,EAEvCziE,CAAAA,GAAAA,GAAKqC,WAAWlW,GAAMkB,IAAIu1E,QAAQ3rF,KAAKwrF,EAAAA,GACvCziE,GAAKqC,SAASy8D,UAAU9+D,GAAKqC,SAASy8D,WAAW,EAC/C3+D,UAAU,CAAE,GACZ8+D,SAAS,CAAE,GACXJ,QAAQ,CAAA,EAAA,GAEV7+D,GAAKqC,SAASwgE,aAAa,CAAC,CAAA;MAAA,GAyBhB7iE,IAAMyiE,EAAAA;IAdhB;EAsBD,CAAA,CAAA;AAEJ,GAAEt2E,CC2DAA,GAAAA,EAAMkB,IA3DEy1E,gBAAgB,SACvBC,IACAx9E,IACA0M,IACAgJ,IACAC,IACA0rB,IACAyD,IACAtD,IAAAA;AAEA,MAAIhiC,MAAMQ,EAAMR,KAAAA,MAAMkN,EAEpB,EAAA,OADA9b,GAAQO,MAAM,4CAA4CJ,SACpD,GAAA,IAAIqS,MAAM,mDAAA;AAGlB,MAAI5D,MAAMkW,EAAMlW,KAAAA,MAAMmW,EAEpB,EAAA,OADA/kB,GAAQO,MAAM,6CAA6CJ,SACrD,GAAA,IAAIqS,MACR,0EAAA;AAIJ,MAAIgnC,KAAS33C,SAASW,cAAc,QACpCg3C;AAAAA,EAAAA,GAAOrvB,QAAQrF,IACf00B,GAAOpvB,SAASrF;AAChB,MAAIoiD,KAAM3tB,GAAOb,WAAW,IAC5BwuB;AAAAA,EAAAA,GAAII,YAAY,QAChBJ,GAAIoF,SAAS,GAAG,GAAG/yB,GAAOrvB,OAAOqvB,GAAOpvB,MAExC;AAAA,MAAInU,KAAU,EACZ42E,aAAa,MACbC,iBAAiB,MACjBC,kBAAkB,KAAA,GAEhBC,KAAMltF;AACV,UArEMJ,GAAoB,QACfq/B,QAAQC,QAAQt/B,GAAoB,KAAA,IAGtC82E,mEAGNC,MAAM,SAASn1E,IACd;AAAA,WAAOy9B,QAAQE,OAAO,IAAIzsB,MAAM,2BAA2BlR,EAC7D,CAAA;EAAA,CAAA,EACCo1E,KAAK,SAASuW,IACb;AAAA,WAAOA,GAAMrW,UAAUqW,GAAMrW,UAAUqW;EACzC,CAAA,EA0DCvW,KACC,SAASuW,IAAAA;AACP,WAAOA,GAAMC,WAAW/lB,IAAKylB,IAAK32E,EAAAA;EACpC,GACA,WACE;AAAA,WAAO8oB,QAAQE,OAAO,IAAIzsB,MAAM,uBAAA,CAAA;EAClC,CAEDkkE,EAAAA,KAAK,SAASvqD,IAAAA;AACb,WAAOA,GAASgxD,OAAOlnE,EAAAA;EACzB,CACCygE,EAAAA,KAAK,WACJsW;AAAAA,IAAAA,GAAI/4C,SACFuF,GAAOjJ,UAAU,cAAc,CAAA,GAC/BnhC,IACA0M,IACAgJ,IACAC,IACAmvB,IACAtD,EAAAA;EAEJ,CAAA;AAAA,GC1DH56B,EAAMkB,IA9BEi2E,gBAAgB,SAASC,IAAAA;AAGhC,MAAIC,IACAC,KAAqB;AACrBl/E,WAAStO,KAAKqX,SAASgX,QAAAA,EAAUjZ,GAAGpQ,OAAO,CAAI,GAAA,EAAA,IAAM,MACvDuoF,KAAoB,IAAI5X,OAAO2X,IAAgB,GAC/CE,GAAAA,KAAqBxtF,KAAKqX,SAAS+W,iBAEnCm/D,MAAAA,KAAoB,IAAI5X,OACtB31E,KAAKytF,YAAYH,IAAgBttF,KAAKqX,SAASgX,QAC/C,CAAA,GAAA,GAAA,GAEFm/D,KAAqBxtF,KAAKytF,YACxBztF,KAAKqX,SAAS+W,iBAAAA,IAAqB,IACnCpuB,KAAKqX,SAASgX,QAAAA,CAAAA;AAIlB,WAASje,KAAI,GAAGA,MAAKpQ,KAAKqX,SAAS+W,iBAAoBhe,GAAAA,KACrD,UAAS7B,KAAI,GAAGA,KAAIvO,KAAKqX,SAASoH,MAAMrO,EAAAA,EAAG5B,QAAQD,KACjDvO,MAAKqX,SAASoH,MAAMrO,EAAAA,EAAG7B,EAAKvO,IAAAA,KAAKqX,SAASoH,MAAMrO,EAAG7B,EAAAA,EAAAA,EAAG9J,QACpD8oF,IACAC,EAAAA;AAKN,SAAOxtF;AAAAA,GC8SRkW,EAAMkB,IAxQEs2E,oBAAoB,SAASv3E,IAASw3E,IAI7C;AAAA,MAAIC;AAHJz3E,EAAAA,KAAUA,MAAW,CAAA,GACrBw3E,KAAUA,MAAAA;AAGV,MAsJIE,IAEAC,IACAp2E,IAzJAq2E,KAAwB,EAC1BC,aAAa,EACXC,cAAAA,OACAv2E,OAAAA,OACAnU,MAAM,WACN2qF,aAAa,OACbC,UAAU,CAAA,MAAO,KAAA,GACjB52E,YAAY,IAAA,GAEd62E,aAAa,EACXH,cAAc,OACdv2E,OAAAA,OACAnU,MAAM,WACN2qF,aAAAA,OACAC,UAAU,CAAC,MAAA,KACX52E,GAAAA,YAAY,IAEd82E,GAAAA,cAAc,EACZJ,cAAAA,OACAv2E,OAAO,OACPnU,MAAM,WACN2qF,aAAa,OACbC,UAAU,CAAA,MAAO,KAAA,GACjB52E,YAAY,IAAA,GAEd+2E,WAAW,EACTL,cAAAA,OACAv2E,OAAAA,OACAnU,MAAM,WACN2qF,aAAAA,OACAC,UAAU,CAAC,MAAA,KACX52E,GAAAA,YAAY,IAEdg3E,GAAAA,cAAc,EACZN,cAAc,OACdv2E,OAAO,OACPnU,MAAM,WACN2qF,aAAa,OACbC,UAAU,CAAA,MAAO,KAAA,GACjB52E,YAAY,IAAA,GAEdi3E,iBAAiB,EACfP,cAAAA,OACAv2E,OAAAA,OACAnU,MAAM,WACN2qF,aAAAA,OACAC,UAAU,CAAC,MAAA,KACX52E,GAAAA,YAAY,IAAA,GAEdk3E,uBAAuB,EACrBR,cAAc,WACdv2E,OAAO,WACPnU,MAAM,QACN2qF,aAAAA,OACAC,UAAU,CAAC,WAAW,eAAe,aAAa,OAAA,GAClD52E,YAAY,IAAA,GAEdm3E,WAAW,EACTT,cAAc,OACdv2E,OAAO,OACPnU,MAAM,QACN2qF,aAAa,OACbC,UAAU,CAAC,OAAO,KAClB52E,GAAAA,YAAY,IAEdo3E,GAAAA,UAAU,EACRV,cAAc,WACdv2E,OAAO,WACPnU,MAAM,QACN2qF,aAAAA,OACAC,UAAU,CAAC,YAAY,WAAW,WAAW,YAAY,QACzD52E,GAAAA,YAAY,IAEdq3E,GAAAA,UAAU,EACRX,cAAc,WACdv2E,OAAO,WACPnU,MAAM,QACN2qF,aAAa,OACbC,UAAU,CAAC,YAAY,WAAW,WAAW,YAAY,QACzD52E,GAAAA,YAAY,IAEds3E,GAAAA,WAAW,EACTZ,cAAc,WACdv2E,OAAO,WACPnU,MAAM,QACN2qF,aAAa,OACbC,UAAU,CAAC,YAAY,WAAW,WAAW,YAAY,QAAA,GACzD52E,YAAY,IAAA,GAEdu3E,WAAW,EACTb,cAAc,WACdv2E,OAAO,WACPnU,MAAM,QACN2qF,aAAa,OACbC,UAAU,CAAC,YAAY,WAAW,WAAW,YAAY,QAAA,GACzD52E,YAAY,IAAA,GAEdw3E,cAAc,EACZd,cAAc,cACdv2E,OAAO,cACPnU,MAAM,QACN2qF,aAAAA,OACAC,UAAU,CAAC,cAAc,MACzB52E,GAAAA,YAAY,IAEdy3E,GAAAA,QAAQ,EACNf,cAAc,IACdv2E,OAAO,QACPnU,MAAM,QACN2qF,aAAa,OACbC,UAAU,CACR,WACA,uBACA,sBACA,MAAA,GAEF52E,YAAY,IAAA,GAEd03E,mBAAmB,EACjBhB,cAAc,OACdv2E,OAAAA,OACAnU,MAAM,WACN2qF,aAAAA,OACAC,UAAU,CAAC,MAAA,KACX52E,GAAAA,YAAY,IAEd23E,GAAAA,gBAAgB,EACdjB,cAAc,IACdv2E,OAAO,IACPnU,MAAM,SACN2qF,aAAa,OACbC,UAAU,MACV52E,YAAY,IAAA,GAEd43E,WAAW,EACTlB,cAAc,GACdv2E,OAAO,GACPnU,MAAM,WACN2qF,aAAAA,OACAC,UAAU,MACV52E,YAAY,IAIZ63E,EAAAA,GAAAA,KAAoB/6E,OAAOC,KAAKy5E,EAEhCsB,GAAAA,KAAa,CAAA,GACb9gF,KAAI,GACJuC,KAAI,GACJvB,KAAI;AAMR,WAAS+/E,GAAqB3oD,IAAOuJ,IAAAA;AACnC,QAAIq/C,IACA/qF,KAAS;AAEb,SAAK+qF,KAAW,GAAGA,KAAW5oD,GAAMn4B,QAAQ+gF,MAAY,EAClD5oD,CAAAA,GAAM4oD,EAAcr/C,MAAAA,OACtB1rC,KAAS;AAGb,WAAOA;EACT;AAWA,MATwCgc,WAApCxgB,KAAKqX,SAASm4E,sBAChBxvF,KAAKqX,SAASm4E,oBAAoB,CAAA,GAClCxvF,KAAKqX,SAASm4E,kBAAkB5B,gBAAgBtoD,KAAKC,MACnDD,KAAKE,UAAUuoD,EAAAA,CAAAA,GAEjB/tF,KAAKqX,SAASm4E,kBAAkBrM,eAAe,QAEjDyK,KAAgB5tF,KAAKqX,SAASm4E,kBAAkB5B,eAEhC,YAAZz3E,MAAAA,SAAuBw3E,IAAkB;AAC3C,QAAIxuE,KAAMiwE,GAAkB5gF;AAE5B,SAAKe,KAAI,GAAGA,KAAI4P,IAAK5P,MAAK,EACxBq+E,CAAAA,GAAcwB,GAAkB7/E,EAAAA,CAAAA,EAAImI,QAClCk2E,GAAcwB,GAAkB7/E,EAAAA,CAAAA,EAAI0+E,cACtCL,GAAcwB,GAAkB7/E,EAAAA,CAAAA,EAAI2+E,cAAc;EAEtD;AAEA,MAAuB,aAAnB/rF,SAAOgU,EAAAA;AACT,SAAK23E,MAAU33E,GAEb,KADAuB,KAAQvB,GAAQ23E,EAEdwB,GAAAA,GAAqBF,IAAmBtB,EAAAA,KAAAA,WACxCp2E,IACA;AACA,UACiC,cAA/Bk2E,GAAcE,EAAAA,EAAQvqF,QACL,aAAA,OAAVmU,GAEPk2E,CAAAA,GAAcE,EAAQp2E,EAAAA,QAAQA;eAEC,WAA/Bk2E,GAAcE,EAAAA,EAAQvqF,QACtB+rF,GAAqB1B,GAAcE,EAAAA,EAAQK,UAAUz2E,EAAAA,EAErDk2E,CAAAA,GAAcE,EAAAA,EAAQp2E,QAAQA;eAEC,cAA/Bk2E,GAAcE,EAAQvqF,EAAAA,QACtB8pB,OAAOge,UAAU3zB,EAEjBk2E,EAAAA,CAAAA,GAAcE,EAAQp2E,EAAAA,QAAQA;eACU,YAA/Bk2E,GAAcE,EAAQvqF,EAAAA,MAAkB;AACjD,aAAKgL,KAAI,GAAGA,KAAImJ,GAAMlJ,QAAQD,MAAK,EAEjC,KADAs/E,KAAAA,MACwB,MAApBn2E,GAAMnJ,EAAAA,EAAGC,UAAuC,YAAhBkJ,OAAAA,GAAMnJ,EAAG,EAAA,CAAA,EAC3C8gF,CAAAA,GAAWx6E,KAAKpR,OAAOiU,GAAMnJ,EAAK,IAAA,CAAA,CAAA;iBACzBmJ,GAAMnJ,EAAGC,EAAAA,SAAS,GAAG;AAC9B,eAAKsC,KAAI,GAAGA,KAAI4G,GAAMnJ,EAAGC,EAAAA,QAAQsC,MAAK,EACT,aAAhB4G,OAAAA,GAAMnJ,EAAGuC,EAAAA,EAAAA,MAClB+8E,KAAAA;AAGY,mBAAZA,MACFwB,GAAWx6E,KAAK,CAAC6C,GAAMnJ,EAAAA,EAAG,CAAK,IAAA,GAAGmJ,GAAMnJ,EAAAA,EAAG,CAAK,IAAA,CAAA,EAAG2C,KAAK,GAE5D,CAAA;QAAA;AAEF08E,QAAAA,GAAcE,EAAAA,EAAQp2E,QAAQ,MAAM23E,GAAWn+E,KAAK,GAAO,IAAA;MAC7D,MACE08E,CAAAA,GAAcE,EAAQp2E,EAAAA,QAAQk2E,GAAcE,EAAQG,EAAAA;AAGtDL,MAAAA,GAAcE,EAAAA,EAAQI,cAAc;IACtC;;AA2BJ,SAAA,UAvBIluF,KAAKqX,SAASm4E,kBAAkBrM,iBAClCnjF,KAAKqX,SAASmL,OAAO5O,UAAU,cAAc,WAAA;AAC3C,QACI67E,IADAC,KAAU,CAAA;AAEd,SAAKD,MAAS7B,GAC6B,UAArCA,GAAc6B,EAAAA,EAAOvB,gBACW,WAA9BN,GAAc6B,EAAOlsF,EAAAA,OACvBmsF,GAAQ76E,KAAK,MAAM46E,KAAQ,OAAO7B,GAAc6B,EAAO/3E,EAAAA,KAAAA,IAEvDg4E,GAAQ76E,KAAK,MAAM46E,KAAQ,MAAM7B,GAAc6B,EAAAA,EAAO/3E,KAIrC;AAAA,UAAnBg4E,GAAQlhF,UACVxO,KAAKqX,SAAS4H,MACZ,6BAA6BywE,GAAQx+E,KAAK,IAAA,IAAQ,MAGxD;EAAA,CAAA,GACAlR,KAAKqX,SAASm4E,kBAAkBrM,eAAAA,OAGlCnjF,KAAKqX,SAASm4E,kBAAkB5B,gBAAgBA,IACzC5tF;AAAAA,GjBhRXkW,EAAMkB,IAAIu4E,cAAc,SAASvjE,IAAUwjE,IAAAA;AAazC,SAZ0C,WAA/B5vF,KAAKqX,SAASwvD,iBACvB7mE,KAAKqX,SAASwvD,eAAe,EAC3Bz6C,UAAUA,IACV46C,cACE4oB,QAAAA,KAAAA,KAAwB,sCAC1B7oB,QACkC,aAAA,OAAzB6oB,MAAqCA,GAAAA,GAEhD5vF,KAAKqX,SAASmL,OAAO5O,UAAU,cAAc+a,EAE7C3uB,GAAAA,KAAKqX,SAASmL,OAAO5O,UAAU,oBAAoBgzD,EAE9C5mE,IAAAA;AACT,IkBzGA,SAAUkW,IAER;AAAA,MAAI0qB,KAAW1qB,GAAMkB,KAOjBq2E,KAAe7sD,GAAS6sD,cAAc,SAASlhE,IAAMxC,IAAAA;AAIvD,aAAiC7Z,IAH7B04E,KAAS7+D,GAAKqC,SAASy8D,QAAQD,QAC/BiH,KAAO,CAAC,IAAI,KAAK,MAAM,OAAO,MAAA,GAC9B3c,KAAK,CAAC,EACD3kE,GAAAA,KAAI,GAAGke,KAAIF,GAAK/d,QAAWD,KAAIke,IAAKle,EAAAA,IAAG;AAQ9C,UAPA2B,KAAI6Z,GAAKqC,SAASm9D,iBAAiBh9D,GAAK9b,WAAWlC,EACnDwb,CAAAA,GAAAA,GAAKqC,SAASwgE,WAAW/3E,KAAK3E,EAC9B6Z,GAAAA,GAAKqC,SAAS0jE,UAAU5/E,EAAKqc,IAAAA,GAAK9b,WAAWlC,EAAAA,GAAAA,MACzCq6E,GAAOzzE,QAAQjF,EAAAA,MACjB04E,GAAO/zE,KAAK3E,EAAAA,GACZ04E,GAAO/zE,KAAK,CAACvG,SAASyb,GAAKqC,SAASk9D,aAAap5E,EAAAA,GAAI,EAE9C,CAAA,CAAA,IAAA,OAALA,GAEF,QAAOgjE,GAAGhiE,KAAK,EAAA;AAEfhB,MAAAA,KAAIA,GAAEjB,SAAS,EAAA,GACfikE,GAAGr+D,KAAKg7E,GAAK,IAAI3/E,GAAE1B,MAAAA,GAAS0B,EAEhC;IAAA;AACA,WAAOgjE,GAAGhiE,KAAK,EAAA;EAAA,GAGb6+E,KAAgB,SAAS9+E,IAC3B;AAAA,QAAIu1C,IAAMwpC,IAAOC,IAAOC,IAASC,IAAYC,IAAIC;AAQjD,SAPAF,KACE,kQAKFF,KAAQ,CACHG,GAAAA,KAAK,GAAGC,MALbL,KAAQ37E,OAAOC,KAAKrD,EAAAA,EAAKm4B,KAAK,SAAS3mC,IAAGoM,IAAAA;AACxC,aAAOpM,KAAIoM;IACb,CAG0BL,GAAAA,QAAQ4hF,KAAKC,IAAMD,KAC3C5pC,CAAAA,KAAOwpC,GAAMI,EAAAA,GACTH,GAAMzhF,UAAU,QAClB2hF,MACE,OACAF,GAAMzhF,SACN,mBACAyhF,GAAM/+E,KAAK,IAAA,IACX,eACF++E,KAAQ,CAIMzvE,IAAAA,WAAdvP,GAAIu1C,EAAAA,KACU,SAAdv1C,GAAIu1C,EAAAA,KAC0B,cAAvBv1C,OAAAA,GAAIu1C,EAAMv3C,EAAAA,aAEjBihF,MAAW,SAASj/E,GAAIu1C,EAAAA,EAAMv3C,SAAS,EAAA,GAAKuE,MAAO,EAAA,GACnDgzC,MAAQ,UAAA,CAAWA,IAAMv3C,SAAS,EAAA,GAAKuE,MAAO,EAAA,GAC9Cy8E,GAAMp7E,KAAK,MAAM2xC,KAAO,OAAO0pC,KAAU,GAc7C;AAAA,WAVID,GAAMzhF,WACR2hF,MACE,OACAF,GAAMzhF,SACN,mBACAyhF,GAAM/+E,KAAK,IAAA,IACX,kBAEJi/E,KACE;EAAA;AA+EJvvD,EAAAA,GAASpe,OAAO3N,KAAK,CACnB,WACA,SAASL,IAAAA;AAAAA,MA7Ea,SAAS2B,IAAAA;AAC/B,UAAI4T,KAAO5T,GAAQ4T,MACfnY,KAAMuE,GAAQvE,KACduU,KAAYhQ,GAAQgQ,WACpB0B,KAAY1R,GAAQ0R;AAExB,UACEkC,GAAKqC,oBAAoBlW,GAAMkB,IAAIu1E,WACjB,iBAAlB5iE,GAAKG,UACL;AAMA,iBAJI0+D,KAAS7+D,GAAKqC,SAASy8D,QAAQD,QAE/B0H,KADOvmE,GAAKqC,SAASmkE,OAAOziC,OAAO/jC,GAAKqC,SAASwgE,YAAY,CAAA,GAE7D4D,KAAa,IACRjiF,KAAI,GAAGA,KAAI+hF,GAAU9hF,QAAQD,KACpCiiF,CAAAA,MAAc/sF,OAAOC,aAAa4sF,GAAU/hF,EAE9C,CAAA;AAAA,YAAIkiF,KAAYtqE,GAChB0B;AAAAA,QAAAA,GAAU,EAAEtW,MAAMi/E,IAAYzoE,YAAAA,MAAkBE,UAAUwoE,GAC1D7+E,CAAAA,GAAAA,GAAI,QAEJ;AAAA,YAAI8+E,KAAOvqE,GAAAA;AAEX0B,QAAAA,GAAU,EAAEtW,MADGw+E,GAAchmE,GAAKqC,SAAS0jE,SAAAA,GACf/nE,YAAY,MAAME,UAAUyoE,GAAAA,CAAAA,GACxD9+E,GAAI,QAAA;AAEJ,YAAI++E,KAAiBxqE,GAAAA;AACrBvU,QAAAA,GAAI,IAAA,GACJA,GAAI,uBAAA,GACJA,GAAI,gBAAgByB,EAAU0W,GAAKkC,QACnCra,CAAAA,GAAAA,GAAI,gBAAgB6+E,KAAY,MAChC7+E,GAAAA,GAAI,eAAesE,GAAMkB,IAAI6Z,UAAUgnD,QAAQluD,GAAKqC,SAASwkE,IAC7Dh/E,CAAAA,GAAAA,GAAI,YAAYmY,GAAKqC,SAASI,KAAAA,GAC9B5a,GAAI,YAAYmY,GAAKqC,SAASykE,KAAAA,GAC9Bj/E,GAAI,kBAAkBmY,GAAKqC,SAAS0kE,WACpCl/E,GAAAA,GAAI,aAAamY,GAAKqC,SAAS2kE,QAAAA,GAC/Bn/E,GAAI,cAAcmY,GAAKqC,SAAS4kE,QAAAA,GAChCp/E,GAAI,gBAAgBmY,GAAKqC,SAAS6kE,SAClCr/E,GAAAA,GAAI,IACJA,GAAAA,GAAI,QAEJ;AAAA,YAAIs/E,KAAiB/qE,GAAAA;AACrBvU,QAAAA,GAAI,IACJA,GAAAA,GAAI,aACJA,GAAAA,GAAI,gBAAgByB,EAAU0W,GAAKkC,QAAAA,CAAAA,GACnCra,GAAI,qBAAqB++E,KAAiB,MAAA,GAC1C/+E,GAAI,QAAQsE,GAAMkB,IAAI6Z,UAAUgnD,QAAQ2Q,EAAAA,CAAAA,GACxCh3E,GAAI,wBAAA,GACJA,GAAI,UAAA,GACJA,GAAI,wBAAA,GACJA,GAAI,gBAAA,GACJA,GAAI,IAAA,GACJA,GAAI,eACJA,GAAAA,GAAI,mBACJA,GAAAA,GAAI,gBAAgBmY,GAAKG,WAAW,GAAA,GACpCtY,GAAI,IAAA,GACJA,GAAI,IAAA,GACJA,GAAI,QAAA,GAEJmY,GAAK1U,eAAe8Q,GAAAA,GACpBvU,GAAI,IAAA,GACJA,GAAI,aAAA,GACJA,GAAI,iBAAA,GACJA,GAAI,gBAAgB8+E,KAAO,MAAA,GAC3B9+E,GAAI,gBAAgByB,EAAU0W,GAAKkC,QAAAA,CAAAA,GACnCra,GAAI,gBAAgBmY,GAAKG,QAAAA,GACzBtY,GAAI,uBAAuBs/E,KAAiB,OAAA,GAC5Ct/E,GAAI,IAAA,GACJA,GAAI,QAAA,GAEJmY,GAAKC,kBAAkB;MACzB;IAAA,GAMoBxV,EAAAA;EACnB,CAAA,CAAA,GAoEHosB,GAASpe,OAAO3N,KAAK,CACnB,WACA,SAASL,IAAAA;AAAAA,MAnEmB,SAAS2B,IAAAA;AACrC,UAAI4T,KAAO5T,GAAQ4T,MACfnY,KAAMuE,GAAQvE,KACduU,KAAYhQ,GAAQgQ,WACpB0B,KAAY1R,GAAQ0R;AAExB,UACEkC,GAAKqC,oBAAoBlW,GAAMkB,IAAIu1E,WACjB,sBAAlB5iE,GAAKG,UACL;AAKA,iBAFIomE,KADOvmE,GAAKqC,SAASsoB,SAErB87C,KAAa,IACRjiF,KAAI,GAAGA,KAAI+hF,GAAU9hF,QAAQD,KACpCiiF,CAAAA,MAAc/sF,OAAOC,aAAa4sF,GAAU/hF,EAAAA,CAAAA;AAE9C,YAAIkiF,KAAYtqE,GAAAA;AAChB0B,QAAAA,GAAU,EAAEtW,MAAMi/E,IAAYzoE,YAAY,MAAME,UAAUwoE,GAAAA,CAAAA,GAC1D7+E,GAAI,QAAA;AAEJ,YAAI8+E,KAAOvqE,GAAAA;AAEX0B,QAAAA,GAAU,EAAEtW,MADGw+E,GAAchmE,GAAKqC,SAAS0jE,SACf/nE,GAAAA,YAAAA,MAAkBE,UAAUyoE,GACxD9+E,CAAAA,GAAAA,GAAI,QAEJ;AAAA,YAAI++E,KAAiBxqE,GACrBvU;AAAAA,QAAAA,GAAI,IACJA,GAAAA,GAAI,cAAcmY,GAAKqC,SAAS4kE,QAAAA,GAChCp/E,GAAI,gBAAgBmY,GAAKqC,SAAS6kE,SAClCr/E,GAAAA,GAAI,YAAYmY,GAAKqC,SAASykE,KAC9Bj/E,GAAAA,GAAI,uBACJA,GAAAA,GAAI,gBAAgB6+E,KAAY,MAChC7+E,GAAAA,GAAI,WACJA,GAAAA,GAAI,eAAesE,GAAMkB,IAAI6Z,UAAUgnD,QAAQluD,GAAKqC,SAASwkE,IAC7Dh/E,CAAAA,GAAAA,GAAI,gBAAgByB,EAAU0W,GAAKkC,QAAAA,CAAAA,GACnCra,GAAI,kBAAkBmY,GAAKqC,SAAS0kE,WAAAA,GACpCl/E,GAAI,aAAamY,GAAKqC,SAAS2kE,QAC/Bn/E,GAAAA,GAAI,IACJA,GAAAA,GAAI,QACJmY,GAAAA,GAAK1U,eAAe8Q,GAAAA;AACpB,iBAASrV,KAAI,GAAGA,KAAIiZ,GAAKqC,SAAS+kE,KAAKvI,OAAOp6E,QAAQsC,KACpDiZ,CAAAA,GAAKqC,SAAS+kE,KAAKvI,OAAO93E,EAAKxC,IAAAA,SAC7Byb,GAAKqC,SAAS+kE,KAAKvI,OAAO93E,EAAAA,KAAM,MAAOiZ,GAAKqC,SAAS0D,KAAKshE,WAG9Dx/E;AAAAA,QAAAA,GACE,6CACE8+E,KACA,mBACAr9E,EAAU0W,GAAKkC,QACf,IAAA,qBACA0kE,KALF,mBAQE5mE,GAAKG,WACL,0CACAhU,GAAMkB,IAAI6Z,UAAUgnD,QAAQluD,GAAKqC,SAAS+kE,KAAKvI,MAAAA,IAC/C,IAEJh3E,GAAAA,GAAI,QACJmY,GAAAA,GAAKC,kBAAkB;MACzB;IAAA,GAM0BxV,EAAAA;EACzB,CAGH,CAAA;AAAA,MAAI68E,KAAmB,SAAS78E,IAAAA;AAC9B,QAaE88E,IAbE/kE,KAAO/X,GAAK+X,QAAQ,IACpBjd,KAAIkF,GAAKlF,GACT0M,KAAIxH,GAAKwH,GACT7F,KAAU3B,GAAK2B,WAAW,CAAA,GAC1B8e,KAAQzgB,GAAKygB,SAAS,CAAA,GAEtB3I,KAAY2I,GAAM3I,WAClB5K,KAAgBuT,GAAMvT,eACtBI,KAAQmT,GAAMnT,OACdxQ,KAAMoQ,IAENnhB,KAAM,IACR0P,KAAI,GAEFshF,KAAU,IACVrnE,KAAWpI,GAAMxQ,EAAAA,EAAK4Y;AAE1B,QAA4B,iBAAxBpI,GAAMxQ,EAAAA,EAAK4Y,SACb,QAAO,EACLqC,MAAMA,IACNjd,GAAGA,IACH0M,GAAGA,IACH7F,SAASA,IACT8e,OAAOA,GAAAA;AASX,SANAs8D,KAAUhlE,IAEVjb,KAAMoQ,IACF/P,MAAM8W,QAAQ8D,EAAAA,MAChBglE,KAAUhlE,GAAK,CAEZtc,IAAAA,KAAI,GAAGA,KAAIshF,GAAQ/iF,QAAQyB,MAAK,EAC/B6R,CAAAA,GAAMxQ,EAAK8a,EAAAA,SAASpY,eAAe,MAAA,MACrCs9E,KACExvE,GAAMxQ,EAAK8a,EAAAA,SAASskE,KAAKR,QAAQsB,QAAQD,GAAQthF,EAAAA,EAAGQ,WAAW,CAAA,CAAA,IAgB9D6gF,MAEDC,GAAQthF,EAAGQ,EAAAA,WAAW,CAAK,IAAA,OAC3BqR,GAAMxQ,EAAAA,EAAK8a,SAASpY,eAAe,SAAA,IAOrCzT,MAAOgxF,GAAQthF,EAHb1P,IAAAA,MAAO;AAMb,QAAIiE,KAAS;AAcb,WAbI8J,SAASgD,GAAIkC,MAAM,CAAM,CAAA,IAAA,MAAmB,sBAAb0W,KAEjC1lB,KAAS8nB,GAAU/rB,IAAK+Q,EACrBV,EAAAA,MAAM,EACNK,EAAAA,IAAI,SAAS+rC,IAAAA;AACZ,aAAOA,GAAGvsC,WAAW,CAAA,EAAGxB,SAAS,EACnC;IAAA,CAAA,EACCiC,KAAK,EAAA,IACc,iBAAbgZ,OACT1lB,KAASipF,GAAYltF,IAAKuhB,GAAMxQ,EAElC2jB,CAAAA,IAAAA,GAAMvB,QAAQ,MAEP,EACLnH,MAAM/nB,IACN8K,GAAGA,IACH0M,GAAGA,IACH7F,SAASA,IACT8e,OAAOA,GAAAA;EAAAA;AAiDX2L,EAAAA,GAASpe,OAAO3N,KAAK,CAAC,mBA7CG,SAAS48E,IAChC;AAAA,QAAIllE,KAAOklE,GAAMllE,QAAQ,IAKrB+rB,KAAU,CAAA,GACV9jC,KAAO,EACT+X,MAAMA,IACNjd,GAPImiF,GAAMniF,GAQV0M,GAPIy1E,GAAMz1E,GAQV7F,SAPUs7E,GAAMt7E,SAQhB8e,OAPQw8D,GAAMx8D,MAUhB;AAAA,QAAItjB,MAAM8W,QAAQ8D,EAAAA,GAAO;AACvB,UAAIhe,KAAI;AACR,WAAKA,KAAI,GAAGA,KAAIge,GAAK/d,QAAQD,MAAK,EAC5BoD,OAAM8W,QAAQ8D,GAAKhe,EACE,CAAA,KAAA,MAAnBge,GAAKhe,EAAAA,EAAGC,SACV8pC,GAAQzjC,KAAK,CACXw8E,GAAiBh9E,OAAO+hB,OAAO,CAAE,GAAE5hB,IAAM,EAAE+X,MAAMA,GAAKhe,EAAG,EAAA,CAAA,EAAA,CAAA,CAAA,EACtDge,MACHA,GAAKhe,EAAG,EAAA,CAAA,GACRge,GAAKhe,EAAAA,EAAG,CAQZ+pC,CAAAA,CAAAA,IAAAA,GAAQzjC,KACNw8E,GAAiBh9E,OAAO+hB,OAAO,CAAE,GAAE5hB,IAAM,EAAE+X,MAAMA,GAAKhe,EAAAA,EAAAA,CAAAA,CAAAA,EAAOge,IAInEklE;AAAAA,MAAAA,GAAMllE,OAAO+rB;IACf,MACEm5C,CAAAA,GAAMllE,OAAO8kE,GACXh9E,OAAO+hB,OAAO,CAAE,GAAE5hB,IAAM,EAAE+X,MAAMA,GAChCA,CAAAA,CAAAA,EAAAA;EAAAA,CAKP,CAAA;AAAA,GAAErW,CAAAA;;;;;;;CCpWH,SAAU0qB,IAGR;AAAA,MAAI8wD,KAAiB,WAAA;AAInB,WAHiC,WAAtB1xF,KAAKqX,SAASs6E,QACvB3xF,KAAKqX,SAASs6E,MAAM,CAAA,IAEf;EAAA;AAaT/wD,EAAAA,GAAS6rD,kBAAkB,SAASv8D,IAElC;AAAA,WADAwhE,GAAelxF,KAAKR,IAAAA,GAAAA,WACNA,KAAKqX,SAASs6E,IAAIzhE,EAAAA;EAAAA,GAclC0Q,GAASgxD,eAAe,SAAS1hE,IAAU2hE,IAAAA;AAGzC,WAFAH,GAAelxF,KAAKR,IAAAA,GACpBA,KAAKqX,SAASs6E,IAAIzhE,EAAY2hE,IAAAA,IACvB7xF;EAAAA,GAaT4gC,GAAS8rD,iBAAiB,SAASx8D,IAGjC;AAAA,WAFAwhE,GAAelxF,KAAKR,IAEuB,GAAA,WAAhCA,KAAKqX,SAASs6E,IAAIzhE,EACpBlwB,IAAAA,KAAKqX,SAASs6E,IAAIzhE,EAEpB,IAAA;EAAA;AAEV,GAAEha,EAAMkB,GAAAA;;;;;CCpET,SAAUlB,IAAAA;AAojERA,EAAAA,GAAM47E,iBAAiB57E,GAAM7T,UAAUyvF,iBAAiB,SAAS37E,IAC/D;AAAA,QAqFE47E,IACAC,IAGAC,IACAC,IACAC,IACAC,IACAC,IA7FEC,KAAiBC,IAEjBC,KAAmB,CACrB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA,GACnB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CACnB,GAAA,CAAC,GAAG,GAAG,GAAG,IAAM,GAAG,GAAG,CACtB,GAAA,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CACnB,GAAA,CAAC,GAAG,GAAG,IAAM,IAAM,GAAG,GAAG,CAAA,GACzB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA,CAAA,GAGjBC,KAAmB,CACrB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CACnB,GAAA,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CACnB,GAAA,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA,GACnB,CAAC,GAAG,GAAG,GAAG,IAAM,GAAG,GAAG,CAAA,CAAA,GAGpBC,KAAkB,EAAEjjC,GAAG,GAAG+L,GAAG,GAAGm3B,IAAI,GAAGC,IAAI,GAAGpnD,GAAG,GAAGytB,GAAG,GAAG9D,GAAG,EAAA,GAE7D09B,KAAsB,EACxB,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,IAAM,GACN,KAAM,GACN,KAAM,GACN,KAAM,EAAA,GAGJC,KAAc,CAChB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,QACA,QACA,QACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,QAGEC,GAAAA,KAAuB,IAAIpd,OAC7B,mGAGEqd,GAAAA,KAAAA,OAWFC,KAPU;AASZjzF,SAAK8xF,iBAAiB,CAAA;AAEtB,QAgBIoB,KAAe,SAASnmE,IAAAA;AAC1B,UAAIxZ,KAAWwZ,GAAGtc,WAAAA,GAChBw/E,KAAQ18E,MAAY,GACpB4/E,KAAWN,GAAoB5C,EAAAA;AAEjC,aAAiBzvE,WAAb2yE,KACKb,GAA0B,MAAXa,MAA6B,MAAX5/E,GACrB,IAAA,QAAV08E,MAA4B,QAAVA,KACpB,OACE8C,GAAqBzvF,KAAK2sF,EAE5B,IAAA,MACY,MAAVA,KAEF,MAEF;IAAA,GAGLmD,KAAsB,SAAS7mE,IAAAA;AACjC,eAAgB8mE,IAAP9kF,KAAI,GAAaA,KAAIge,GAAK/d,QAAQD,MAAK;AAE9C,YAAiB,SADjB8kF,KAAWH,GAAa3mE,GAAKxnB,OAAOwJ,EAAAA,CAAAA,GAElC,QAAO;AACF,YAAiB,QAAb8kF,GACT,QAAA;MAEJ;AACA,aAAA;IAAO,GAKLC,KAAmB,SAASC,IAAOC,IAAOC,IAAe3oE,IAAAA;AAC3D,UACE4oE,IACAC,IACAplF,IACA4Q,IAJEy0E,KAAQJ,GAAM1oE,EAKlB;AAAA,cAAQ8oE,IACN;QAAA,KAAK;QACL,KAAK;QAuGL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;AACHZ,UAAAA,KAAAA;AACA;QA1GF,KAAK;QACL,KAAK;AACH;QAEF,KAAK;AACCA,UAAAA,OACFY,KAAQ;AAEV;QAEF,KAAK;AACHZ,UAAAA,KAAc,MAEdY,KAAQ;AACR;QAEF,KAAK;QA2FL,KAAK;AACHA,UAAAA,KAAQ;AACR;QAzFF,KAAK;AAED9oE,UAAAA,KAAQ,KACRA,KAAQ,KAAK0oE,GAAMhlF,UACqB,UAAtCklF,KAAQD,GAAc3oE,KAAQ,CAAA,MAA0B,SAAV4oE,MAChB,UAA9BC,KAAQH,GAAM1oE,KAAQ,CAAA,MAA0B,SAAV6oE,KAExCC,KAAQ,MACCZ,OACTW,KAAQ,OAEVC,KAAQD,OAAUD,KAAQC,KAAQ;AAClC;QAEF,KAAK;AAEHC,UAAAA,KACY,UAFZF,KAAQ5oE,KAAQ,IAAI2oE,GAAc3oE,KAAQ,CAAK,IAAA,QAG7CA,KAAQ,IAAI0oE,GAAMhlF,UACG,SAArBglF,GAAM1oE,KAAQ,CACV,IAAA,OACA;AACN;QAEF,KAAK;AACH,cAAIA,KAAQ,KAAkC,SAA7B2oE,GAAc3oE,KAAQ,CAAA,GAAa;AAClD8oE,YAAAA,KAAQ;AACR;UACD;AAAM,cAAIZ,IAAa;AACtBY,YAAAA,KAAQ;AACR;UACF;AAGA,eAFArlF,KAAIuc,KAAQ,GACZ3L,KAAMq0E,GAAMhlF,QACLD,KAAI4Q,MAAoB,SAAbq0E,GAAMjlF,EACtBA,IAAAA,CAAAA;AAGAqlF,UAAAA,KADErlF,KAAI4Q,MAAoB,SAAbq0E,GAAMjlF,EAAAA,IACX,OAEA;AAEV;QAEF,KAAK;AACH,cAAI0jF,MAAgBC,CAAAA,IAAU;AAI5B,iBAFA/yE,KAAMq0E,GAAMhlF,QACZD,KAAIuc,KAAQ,GACLvc,KAAI4Q,MAAoB,UAAbq0E,GAAMjlF,EAAAA,IACtBA,CAAAA;AAEF,gBAAIA,KAAI4Q,IAAK;AACX,kBAAI3P,KAAI+jF,GAAMzoE,EAAAA,GACV+oE,KAAgBrkF,MAAK,QAAUA,MAAK,QAAiB,UAANA;AAEnD,kBADAkkF,KAAQF,GAAMjlF,EAAAA,GACVslF,OAA2B,QAAVH,MAA2B,SAAVA,KAAiB;AACrDE,gBAAAA,KAAQ;AACR;cACF;YACF;UACF;AAEEA,UAAAA,KADE9oE,KAAQ,KAAoC,SAA9B4oE,KAAQF,GAAM1oE,KAAQ,CAAA,KAC9B,MAEA2oE,GAAc3oE,KAAQ,CAAA;AAEhC;QAEF,KAAK;AACHkoE,UAAAA,KAAAA,OACAjB,KAAAA,MACA6B,KAAQX;AACR;QAEF,KAAK;AACHjB,UAAAA,KAAAA,MACA4B,KAAQ;MAcZ;AAAA,aAAOA;IAAAA,GAkBLE,KAAgB,SAASvnE,IAAMwnE,IAAmBC,IAAAA;AACpD,UAAI7d,KAAY5pD,GAAK3b,MAAM,EAM3B;AAAA,aALIojF,MACFC,GAAe9d,IAAW6d,IAAQ,EAAEE,SAASjB,GAAAA,CAAAA,GAE/C9c,GAAU9+C,QAAAA,GACV08D,MAAqBA,GAAkB18D,QAChC8+C,GAAAA,GAAUjlE,KAAK,EAAA;IAAA,GAKpB+iF,KAAiB,SAASV,IAAOS,IAAQG,IAAAA;AAC3C,UAAIC,IAEF7lF,IACAuc,IACAupE,IACAC,IACAC,KAAW,IACXp1E,KAAMo0E,GAAM/kF,QACZgmF,KAAW,GACXf,KAAgB,CAChBgB,GAAAA,KAAaxB,KAAOR,KAAmBD,IACvCgB,KAAQ,CAAA;AAMV,WAJAR,KAAAA,OAEAjB,KAAAA,OACAC,KAAAA,OACKzjF,KAAI,GAAGA,KAAI4Q,IAAK5Q,KACnBilF,CAAAA,GAAMjlF,EAAK2kF,IAAAA,GAAaK,GAAMhlF,EAAAA,CAAAA;AAEhC,WAAKuc,KAAQ,GAAGA,KAAQ3L,IAAK2L,MAAS;AAYpC,YAXAwpE,KAAYE,IACZf,GAAc3oE,EAASwoE,IAAAA,GACrBC,IACAC,IACAC,IACA3oE,EAAAA,GAGFspE,KAAoB,OADpBI,KAAWC,GAAWH,EAAW5B,EAAAA,GAAgBe,GAAc3oE,EAAAA,CAAAA,CAAAA,IAE/D0pE,MAAY,IACZR,GAAOlpE,EAAAA,IAASupE,KAAWI,GAAWD,EAAU,EAAA,CAAA,GAC5CJ,KAAS,EACX,KAAe,OAAXA,IAAiB;AACnB,eAAK7lF,KAAIgmF,IAAShmF,KAAIuc,IAAOvc,KAC3BylF,CAAAA,GAAOzlF,EAAK,IAAA;AAEdgmF,UAAAA,KAAW;QACb,MACEA,CAAAA,KAAAA;AAIJ,YADYE,GAAWD,EAAU,EAAA,CAAA,EAAA,QAE3BD,OACFA,KAAUzpE;iBAGRypE,KAAAA,IAAc;AAChB,eAAKhmF,KAAIgmF,IAAShmF,KAAIuc,IAAOvc,KAC3BylF,CAAAA,GAAOzlF,EAAK8lF,IAAAA;AAEdE,UAAAA,KAAW;QACb;AAEmB,gBAAjBf,GAAM1oE,EAAAA,MACRkpE,GAAOlpE,EAAAA,IAAS,IAElBqpE,GAAOD,WAAWG;MACpB;AACIrC,MAAAA,OAxFa,SAASwB,IAAOQ,IAAQxlF,IAAAA;AACzC,iBAASD,KAAI,GAAGA,KAAIC,IAAQD,KAC1B,KAAiB,QAAbilF,GAAMjlF,EAAAA,GAAY;AACpBylF,UAAAA,GAAOzlF,EAAK0kF,IAAAA;AACZ,mBAASniF,KAAIvC,KAAI,GAAGuC,MAAK,KACN,SAAb0iF,GAAM1iF,EADgBA,GAAAA,KAExBkjF,CAAAA,GAAOljF,EAAAA,IAAKmiF;QAKlB;MAAA,GA8EaO,IAAOQ,IAAQ70E,EAAAA;IAAAA,GAM5Bu1E,KAAiB,SACnBn0C,IACA41B,IACA4d,IACAC,IACAG,IAAAA;AAEA,UAAIA,EAAAA,GAAOD,UAAU3zC,KAArB;AAGA,YAAc,MAAVA,MAjSM,MAiSS0yC,MAAAA,CAAqBlB,GAGtC,QAFA5b,GAAU9+C,QAAAA,GAAAA,MACV08D,MAAqBA,GAAkB18D,QAUzC;AAAA,iBAPItK,IACF4nE,IACAC,IACAC,IACA11E,KAAMg3D,GAAU3nE,QAChB8/C,KAAQ,GAEHA,KAAQnvC,MAAK;AAClB,cAAI60E,GAAO1lC,EAAU/N,KAAAA,IAAO;AAE1B,iBADAq0C,KAAMtmC,KAAQ,GACPsmC,KAAMz1E,MAAO60E,GAAOY,EAAAA,KAAQr0C,KACjCq0C,CAAAA;AAEF,iBAAKC,KAAMvmC,IAAOqmC,KAAOC,KAAM,GAAGC,KAAMF,IAAME,MAAOF,KACnD5nE,CAAAA,KAAKopD,GAAU0e,EAAAA,GACf1e,GAAU0e,EAAAA,IAAO1e,GAAUwe,EAAAA,GAC3Bxe,GAAUwe,EAAAA,IAAQ5nE,IACdgnE,OACFhnE,KAAKgnE,GAAkBc,EACvBd,GAAAA,GAAkBc,EAAOd,IAAAA,GAAkBY,EAC3CZ,GAAAA,GAAkBY,EAAQ5nE,IAAAA;AAG9BuhC,YAAAA,KAAQsmC;UACV;AACAtmC,UAAAA;QACF;MAhCA;IAAA,GAkDEwmC,KAAW,SAASvoE,IAAMwnE,IAAmBC,IAC/C;AAAA,UAAI7d,KAAY5pD,GAAK3b,MAAM,EAAA,GACzBujF,KAAS,EAAED,SAASjB,GAAAA;AAStB,aAPKe,OACHA,KAAS,CAAA,IAEXC,GAAe9d,IAAW6d,IAAQG,EApBf,IAAA,SAAShe,IAAW6d,IAAQG,IAC/C;AAAA,YAAuB,MAAnBA,GAAOD,WAAiB7B,GAC1B,UAAgBvnE,IAAPvc,KAAI,GAAUA,KAAI4nE,GAAU3nE,QAAQD,KACzB,OAAdylF,GAAOzlF,EACTuc,MAAAA,KAAQgoE,GAAY39E,QAAQghE,GAAU5nE,EAAAA,CAAAA,MACzB,MACX4nE,GAAU5nE,EAAKukF,IAAAA,GAAYhoE,KAAQ,CAAA;MAAA,GAe5BqrD,IAAW6d,IAAQG,EAClCO,GAAAA,GAAeK,GAAa5e,IAAW4d,IAAmBC,IAAQG,EAAAA,GAClEO,GA5VU,GA4Vcve,IAAW4d,IAAmBC,IAAQG,EAAAA,GACvDhe,GAAUjlE,KAAK,EAAA;IAAA;AAqGxB,WAzFAlR,KAAK8xF,eAAekD,gBAAgB,SAClCzoE,IACAwnE,IACAC,IAGA;AAAA,WArWU,SAASznE,IAAMwnE,IACzB;AAAA,YAAIA,GACF,UAASxlF,KAAI,GAAGA,KAAIge,GAAK/d,QAAQD,KAC/BwlF,CAAAA,GAAkBxlF,EAAAA,IAAKA;AAGViS,mBAAb0xE,OACFA,KAAWkB,GAAoB7mE,EAAAA,IAAAA,WAE7B6lE,OACFA,KAAYgB,GAAoB7mE,EAAAA;MAAAA,GA0V5BA,IAAMwnE,EACP9B,GAAAA,MAAAA,CAAeE,MAAiBC,GAI9B,KAAIH,MAAeE,MAAgBD,KAAWE,GAEnDa,CAAAA,KAAOf,KArXC,IADA,GAuXR3lE,KAAOunE,GAAcvnE,IAAMwnE,IAAmBC,EACzC;eAAA,CAAK/B,MAAeE,MAAgBC,GAEzCa,CAAAA,KAAOf,KAzXC,IADA,GA2XR3lE,KAAOuoE,GAASvoE,IAAMwnE,IAAmBC,EACzCznE,GAAAA,KAAOunE,GAAcvnE,IAAMwnE,EACtB;eAAA,CAAI9B,MAAgBC,MAAaC,MAAiBC,IAAAA;AAIlD,YAAIH,MAAAA,CAAgBE,MAAgBD,KAAWE,GAEpD7lE,CAAAA,KAAOunE,GAAcvnE,IAAMwnE,EAAAA,GACvB7B,MAEFe,KAtYM,GAuYN1mE,KAAOuoE,GAASvoE,IAAMwnE,IAAmBC,EAAAA,MAGzCf,KAzYM,GA0YN1mE,KAAOuoE,GAASvoE,IAAMwnE,IAAmBC,EACzCznE,GAAAA,KAAOunE,GAAcvnE,IAAMwnE,EAExB;iBAAI9B,MAAeC,MAAAA,CAAaC,MAAgBC,GAErDa,CAAAA,KA/YQ,GAgZR1mE,KAAOuoE,GAASvoE,IAAMwnE,IAAmBC,EAAAA,GACzCznE,KAAOunE,GAAcvnE,IAAMwnE,EAAAA;iBACjB9B,CAAAA,MAAAA,CAAgBE,MAAgBD,KAAWE,IAAW;AAEhE,cAAI6C,KAA0B5C;AAC1BH,UAAAA,MAEFe,KAvZM,GAwZN1mE,KAAOuoE,GAASvoE,IAAMwnE,IAAmBC,EAAAA,GACzCf,KA1ZM,GA2ZNZ,KAAAA,OACA9lE,KAAOuoE,GAASvoE,IAAMwnE,IAAmBC,EAAAA,GACzC3B,KAAuB4C,OAGvBhC,KAhaM,GAiaN1mE,KAAOuoE,GAASvoE,IAAMwnE,IAAmBC,EACzCznE,GAAAA,KAAOunE,GAAcvnE,IAAMwnE,EAC3Bd,GAAAA,KAlaM,GAmaNZ,KAAAA,OACA9lE,KAAOuoE,GAASvoE,IAAMwnE,IAAmBC,EAAAA,GACzC3B,KAAuB4C,IACvB1oE,KAAOunE,GAAcvnE,IAAMwnE,EAE/B;QAAA;MAAA,MA1CEd,CAAAA,KA/XQ,GAgYR1mE,KAAOuoE,GAASvoE,IAAMwnE,IAAmBC,EAdzCf;UAAAA,CAAAA,KAAOf,KAjXC,IADA,GAmXR3lE,KAAOuoE,GAASvoE,IAAMwnE,IAAmBC,EAuD3C;AAAA,aAAOznE;IAAAA,GAcTvsB,KAAK8xF,eAAe3oD,aAAa,SAAShzB,IACpCA;AAAAA,MAAAA,OACF87E,KAAc97E,GAAQ++E,eACtB/C,KAAeh8E,GAAQg/E,gBACvBjD,KAAW/7E,GAAQi/E,YACnBhD,KAAYj8E,GAAQk/E,aACpBhD,KAAuBl8E,GAAQm/E;IAAAA,GAInCt1F,KAAK8xF,eAAe3oD,WAAWhzB,EACxBnW,GAAAA,KAAK8xF;EAAAA;AAGd,MAAIS,KA5jFmB,CACrB,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,OACA,KACA,OACA,OACA,KACA,OACA,OACA,KACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,OACA,OACA,KACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,GAAA,GA8jBEgD,KAAa,IAAIr/E,GAAM47E,eAAe,EAAEoD,eAAe,KAAA,CAAA;AAoC3Dh/E,EAAAA,GAAMkB,IAAIoL,OAAO3N,KAAK,CAAC,mBAlCE,SAASL,IAAAA;AAChC,QAAI+X,KAAO/X,GAAK+X;AACR/X,IAAAA,GAAKlF,GACLkF,GAAKwH;AACb,QAAI7F,KAAU3B,GAAK2B,WAAW,CAAA;AAClB3B,IAAAA,GAAKygB,OACN9e,GAAQsf;AACnB,QAAI6iB,KAAU,CAAA;AAMd,QAJAniC,GAAQ++E,gBAC2B,aAAA,OAA1B/+E,GAAQ++E,iBAA8B/+E,GAAQ++E,eACvDK,GAAWpsD,WAAWhzB,EAAAA,GAEuB,qBAAzC9B,OAAOhS,UAAU4M,SAASzO,KAAK+rB,EAAAA,GAA4B;AAC7D,UAAIhe,KAAI;AAER,WADA+pC,KAAU,CACL/pC,GAAAA,KAAI,GAAGA,KAAIge,GAAK/d,QAAQD,MAAK,EACgB,sBAA5C8F,OAAOhS,UAAU4M,SAASzO,KAAK+rB,GAAKhe,EAAAA,CAAAA,IACtC+pC,GAAQzjC,KAAK,CACX0gF,G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",
  "names": ["i", "len", "uint8", "start", "end", "len2", "buffer", "offset", "e", "m", "i", "d", "s", "c", "rt", "Buffer", "e", "length", "from", "valueOf", "b", "size", "alloc", "fill", "encoding", "i", "copy", "a", "x", "y", "buffer", "start", "end", "swap", "n", "m", "swap16", "toString", "max", "dir", "read", "j", "offset", "write", "slice", "byteLength", "min", "E", "name", "range", "c", "fn", "warn", "format", "ReactDebugCurrentFrame", "assign", "Component", "context", "PureComponent", "createRef", "isArray", "a", "e", "getWrappedName", "init", "x", "hasOwnProperty", "ReactElement", "self", "createElement", "i", "defaultProps", "cloneElement", "isValidElement", "escape", "escapeRegex", "match", "text", "index", "c", "n", "toArray", "onlyChild", "createContext", "moduleObject", "error", "forwardRef", "name", "isValidElementType", "memo", "useContext", "Context", "useState", "initialState", "useReducer", "useRef", "useEffect", "create", "useInsertionEffect", "useLayoutEffect", "useCallback", "useMemo", "useImperativeHandle", "useDebugValue", "useId", "useSyncExternalStore", "prefix", "fn", "construct", "s", "values", "location", "err", "node", "keys", "options", "returnValue", "Children", "a", "s", "t", "m", "path", "k", "e", "p", "c", "r", "i", "next", "j", "options", "prefix", "_ref", "index", "n", "v", "keys", "copy", "l", "rules", "set", "err", "number", "match", "f", "fn", "cache", "name", "format", "q", "append", "clone", "factory", "exports", "module", "define", "window", "options", "nullptn", "formatptn", "colonptn", "cursorptn", "transformptn", "animationptn", "propertiesptn", "elementptn", "selectorptn", "andptn", "escapeptn", "invalidptn", "keyframeptn", "plcholdrptn", "readonlyptn", "beforeptn", "afterptn", "tailptn", "whiteptn", "pseudoptn", "writingptn", "supportsptn", "propertyptn", "selfptn", "pseudofmt", "dimensionptn", "imgsrcptn", "webkit", "moz", "ms", "SEMICOLON", "CLOSEBRACES", "OPENBRACES", "OPENPARENTHESES", "CLOSEPARENTHESES", "OPENBRACKET", "CLOSEBRACKET", "NEWLINE", "CARRIAGE", "TAB", "AT", "SPACE", "AND", "DASH", "UNDERSCORE", "STAR", "COMMA", "COLON", "SINGLEQUOTE", "DOUBLEQUOTE", "FOWARDSLASH", "GREATERTHAN", "PLUS", "TILDE", "NULL", "FORMFEED", "VERTICALTAB", "KEYFRAME", "MEDIA", "SUPPORTS", "PLACEHOLDER", "READONLY", "IMPORT", "CHARSET", "DOCUMENT", "PAGE", "column", "line", "pattern", "cascade", "prefix", "escape", "compress", "semicolon", "preserve", "array", "plugins", "plugged", "should", "POSTS", "PREPS", "UNKWN", "PROPS", "BLCKS", "ATRUL", "unkwn", "keyed", "key", "nscopealt", "nscope", "compile", "parent", "current", "body", "id", "depth", "selector", "result", "bracket", "comment", "parentheses", "quote", "first", "second", "code", "tail", "trail", "peak", "counter", "context", "atrule", "pseudo", "caret", "format", "insert", "invert", "length", "eof", "eol", "char", "chars", "child", "out", "children", "flat", "charCodeAt", "replace", "trim", "charAt", "delimited", "substring", "select", "proxy", "join", "supports", "vendor", "property", "padding", "element", "i", "Array", "elements", "split", "j", "size", "l", "indexOf", "selectors", "scope", "k", "level", "input", "third", "cache", "index", "hash", "declare", "list", "value", "items", "isNaN", "parseFloat", "test", "content", "match", "group", "parents", "at", "next", "call", "stylis", "set", "name", "this", "constructor", "ns", "output", "use", "plugin", "delimiter", "block", "e", "context", "line", "column", "length", "at", "hasSymbol", "isValidElementType", "Element", "ForwardRef", "Fragment", "Memo", "Portal", "isElement", "isFragment", "second", "i", "isEqual", "lastResult", "require_react_is_development", "hasSymbol", "isValidElementType", "Element", "ForwardRef", "Fragment", "Memo", "Portal", "isElement", "isFragment", "require_react_is", "getOwnPropertySymbols", "hasOwnProperty", "i", "order2", "n", "err", "from", "symbols", "s", "text", "x", "values", "location", "err", "assign", "text", "x", "isValidElement", "y", "location", "err", "i", "checker", "isNode", "isSymbol", "fn", "cache", "a", "b", "c", "d", "e", "s", "i", "r", "k", "a", "j", "extend", "symbols", "init_index_esm", "makeTextMarker", "i", "red", "green", "orange", "grey", "init_colors", "init_chainPropTypes", "_extends", "n", "e", "t", "r", "isPlainObject", "options", "_extends", "React", "init_deepmerge", "location", "import_prop_types", "init_chainPropTypes", "PropTypes", "init_elementAcceptingRef", "isClassComponent", "location", "import_prop_types", "init_chainPropTypes", "PropTypes", "init_elementTypeAcceptingRef", "_extends", "init_exactProp", "require_react_is_development", "require_react_is", "fn", "match", "name", "Component", "import_react_is", "init_getDisplayName", "location", "init_HTMLElementType", "import_prop_types", "PropTypes", "init_refType", "capitalize", "init_capitalize", "init_createChainedFunction", "timeout", "init_debounce", "React", "init_isMuiElement", "node", "init_ownerDocument", "node", "init_ownerDocument", "init_ownerWindow", "Component", "_extends", "location", "init_requirePropFactory", "init_setRef", "React", "init_useEnhancedEffect", "React", "init_useId", "location", "init_unsupportedProp", "name", "React", "init_useControlled", "fn", "React", "init_useEnhancedEffect", "init_useEventCallback", "instance", "React", "init_setRef", "init_useForkRef", "fn", "node", "React", "init_useIsFocusVisible", "init_getScrollbarSize", "React", "init_usePreviousProps", "init_visuallyHidden", "x", "location", "init_integerPropType", "defaultProps", "_extends", "init_resolveProps", "init_composeClasses", "init_ClassNameGenerator", "init_ClassNameGenerator", "init_generateUtilityClass", "init_generateUtilityClass", "init_generateUtilityClasses", "min", "max", "init_clamp", "r", "e", "t", "n", "init_chainPropTypes", "init_deepmerge", "init_elementAcceptingRef", "init_elementTypeAcceptingRef", "init_exactProp", "init_HTMLElementType", "init_refType", "init_capitalize", "init_createChainedFunction", "init_debounce", "init_isMuiElement", "init_ownerDocument", "init_ownerWindow", "init_requirePropFactory", "init_setRef", "init_useEnhancedEffect", "init_useId", "init_unsupportedProp", "init_useControlled", "init_useEventCallback", "init_useForkRef", "init_useIsFocusVisible", "init_getScrollbarSize", "init_usePreviousProps", "init_visuallyHidden", "init_integerPropType", "init_resolveProps", "init_composeClasses", "init_generateUtilityClass", "init_generateUtilityClasses", "init_ClassNameGenerator", "memoize", "fn", "cache", "reactPropsRegex", "memoize", "sheetForTag", "i", "options", "StyleSheet", "nodes", "e", "flush", "length", "index", "end", "root", "length", "copy", "end", "index", "root", "rules", "index", "offset", "length", "character", "reference", "characters", "size", "i", "j", "k", "x", "y", "z", "length", "i", "index", "length", "index", "i", "length", "identifierWithPointTracking", "index", "character", "toRules", "getRules", "compat", "rules", "i", "k", "j", "removeLabel", "prefixer", "copy", "createCache", "options", "node", "stylis", "styles", "cache", "StyleSheet", "init_emotion_weak_memoize_esm", "require_react_is_development", "hasSymbol", "isValidElementType", "Element", "ForwardRef", "Fragment", "Memo", "Portal", "isElement", "isFragment", "require_react_is", "REACT_STATICS", "KNOWN_STATICS", "TYPE_STATICS", "getOwnPropertyNames", "getOwnPropertySymbols", "getOwnPropertyDescriptor", "getPrototypeOf", "objectPrototype", "hoistNonReactStatics", "keys", "i", "e", "classNames", "registerStyles", "cache", "isStringTag", "insertStyles", "h", "k", "i", "unitlessKeys", "keyframes", "next", "styles", "i", "isDevelopment", "strings", "match", "name", "isCustomProperty", "isProcessableValue", "memoize", "processStyleValue", "p2", "unitlessKeys", "React", "useInsertionEffect", "syncFallback", "create", "import_react", "ThemeContext", "init_emotion_weak_memoize_esm", "withEmotionCache", "cache", "Insertion", "_ref", "isStringTag", "rules", "css", "merge", "import_react", "keyframes", "Insertion", "isBrowser", "init_emotion_weak_memoize_esm", "cache", "styles", "ThemeContext", "node", "name", "toString", "classnames", "i", "k", "_ref", "rules", "cx", "import_react", "Insertion", "testOmitPropsOnComponent", "getDefaultShouldForwardProp", "composeShouldForwardProps", "options", "shouldForwardProp", "_ref", "cache", "isStringTag", "rules", "createStyled", "styles", "i", "ThemeContext", "_extends", "import_react", "React", "format", "ReactDebugCurrentFrame", "isValidElementType", "getWrappedName", "context", "init", "x", "assign", "prefix", "name", "match", "fn", "construct", "s", "c", "Component", "hasOwnProperty", "values", "location", "err", "isArray", "a", "e", "self", "ReactElement", "defaultProps", "isValidElement", "node", "i", "keys", "styles", "defaultTheme", "_jsx", "React", "import_prop_types", "PropTypes", "init_GlobalStyles", "styled", "options", "styles", "style", "init_GlobalStyles", "values", "unit", "keys", "start", "end", "_extends", "import_prop_types", "PropTypes", "merge", "init_deepmerge", "theme", "index", "style", "i", "keys", "getPath", "path", "options", "fn", "theme", "capitalize", "init_capitalize", "memoize", "fn", "cache", "theme", "getPath", "abs", "transformer", "keys", "style", "memoize", "a", "b", "dir", "spacing", "styles", "handlers", "style", "fn", "transformer", "transformer", "keys", "theme", "options", "style", "getPath", "capitalize", "styleFunctionSx", "css", "x", "init_capitalize", "styles", "theme", "options", "_excluded", "spacing", "_extends", "init_deepmerge", "init_createTheme", "useTheme", "defaultTheme", "ThemeContext", "React", "useTheme", "defaultTheme", "init_createTheme", "styles", "GlobalStyles", "defaultTheme", "styleArg", "_jsx", "React", "import_prop_types", "import_jsx_runtime", "init_GlobalStyles", "PropTypes", "init_GlobalStyles", "position", "fontSize", "_excluded", "isPlainObject", "_extends", "init_deepmerge", "init_styleFunctionSx", "e", "t", "f", "n", "o", "options", "defaultTheme", "styled", "Box", "theme", "_excluded", "_jsx", "_extends", "React", "import_jsx_runtime", "init_styleFunctionSx", "isEmpty", "defaultTheme", "theme", "styles", "_ref", "_excluded", "_extends", "_excluded2", "createStyled", "systemDefaultTheme", "rootShouldForwardProp", "slotShouldForwardProp", "style", "overridesResolver", "options", "_excluded3", "styled", "isPlainObject", "styleArg", "Component", "capitalize", "init_deepmerge", "init_capitalize", "init_getDisplayName", "init_createTheme", "init_styleFunctionSx", "theme", "name", "init_resolveProps", "name", "defaultTheme", "theme", "init_useThemeProps", "min", "max", "color", "re", "n", "index", "values", "i", "h", "s", "l", "a", "f", "k", "rgb", "warning", "init_clamp", "React", "ThemeContext", "useTheme", "theme", "React", "init_useTheme", "init_useTheme", "_extends", "ThemeProvider", "useTheme", "theme", "_jsx", "React", "import_prop_types", "import_jsx_runtime", "init_useTheme", "PropTypes", "init_ThemeProvider", "init_ThemeProvider", "init_useTheme", "_ref", "_excluded", "_jsx", "_extends", "React", "import_prop_types", "import_jsx_runtime", "PropTypes", "_jsx", "React", "import_prop_types", "import_jsx_runtime", "PropTypes", "init_DefaultPropsProvider", "theme", "_jsx", "React", "import_jsx_runtime", "init_useEnhancedEffect", "init_useId", "init_GlobalStyles", "_extends", "ThemeProvider", "useTheme", "_jsx", "ThemeContext", "_jsxs", "React", "import_prop_types", "import_jsx_runtime", "ThemeProvider_default", "init_ThemeProvider", "init_exactProp", "init_DefaultPropsProvider", "PropTypes", "init_ThemeProvider", "options", "_jsx", "React", "import_jsx_runtime", "e", "options", "_extends", "React", "options", "defaultTheme", "resolveTheme", "excludeVariablesFromRoot", "useColorScheme", "CssVarsProvider", "useTheme", "_ref", "_excluded", "defaultLightColorScheme", "defaultDarkColorScheme", "theme", "_extends", "css", "_jsxs", "_jsx", "ThemeProvider_default", "PropTypes", "getInitColorSchemeScript", "React", "import_prop_types", "import_jsx_runtime", "init_deepmerge", "init_ThemeProvider", "prefix", "_typeof", "o", "t", "r", "_typeof", "e", "i", "t", "i", "_typeof", "init_generateUtilityClasses", "init_generateUtilityClasses", "spacing", "wrap", "size", "init_generateUtilityClasses", "init_esm", "init_GlobalStyles", "init_styleFunctionSx", "init_createTheme", "init_useThemeProps", "init_ThemeProvider", "init_generateUtilityClass", "_extends", "palette", "_excluded", "primary", "warning", "dark", "color", "name", "_extends", "init_esm", "palette", "typography", "_ref", "fontFamily", "fontSize", "_excluded", "size", "fontWeight", "lineHeight", "letterSpacing", "_extends", "milliseconds", "height", "_extends", "create", "options", "_excluded", "isString", "isNumber", "zIndex", "createTheme", "options", "_excluded", "palette", "_extends", "node", "createTheme_default", "init_createTheme", "init_esm", "init_generateUtilityClass", "length", "init_createTheme", "createTheme_default", "useTheme", "theme", "React", "init_useTheme", "init_esm", "useThemeProps", "name", "init_useThemeProps", "init_esm", "styled", "init_esm", "createStyled", "init_ThemeProvider", "init_esm", "keys", "k", "options", "_excluded", "createGetCssVar", "createTheme_default", "_extends", "_excluded2", "theme", "palette", "color", "init_esm", "init_createTheme", "_", "index", "overlay", "fn", "_", "index", "defaultTheme", "init_esm", "keys", "theme", "_extends", "init_esm", "init_createTheme", "init_useTheme", "init_useThemeProps", "init_ThemeProvider", "init_capitalize", "capitalize", "r", "e", "t", "f", "n", "clsx", "_extends", "joinedClasses", "mergedStyle", "_extends", "props", "_excluded", "_extends", "init_types", "init_types", "stringify", "trim", "options", "i", "value", "open", "index", "prev", "node", "isTouch", "handleKeyDown", "warn", "_extends", "React", "init_composeClasses", "init_generateUtilityClasses", "init_generateUtilityClass", "init_generateUtilityClasses", "_jsx", "React", "import_prop_types", "import_jsx_runtime", "PropTypes", "init_ClickAwayListener", "node", "root", "i", "a", "b", "open", "_jsxs", "_jsx", "React", "import_prop_types", "import_jsx_runtime", "PropTypes", "init_FocusTrap", "init_generateUtilityClasses", "init_generateUtilityClasses", "ActionTypes", "React", "init_generateUtilityClasses", "top", "bottom", "right", "left", "node", "ownerDocument", "isElement", "node", "applyStyles", "_ref", "name", "style", "init_applyStyles", "round", "round", "_ref", "isElement", "x", "y", "width", "height", "width", "height", "next", "getComputedStyle", "isElement", "getComputedStyle", "css", "window", "min", "max", "v", "keys", "_ref", "name", "options", "popperOffsets", "left", "right", "top", "bottom", "min", "max", "offset", "effect", "toPaddingObject", "padding", "_ref", "x", "y", "round", "popper", "position", "left", "top", "getComputedStyle", "right", "bottom", "options", "effect", "_ref", "instance", "options", "window", "hash", "hash", "node", "html", "width", "height", "x", "y", "html", "width", "height", "x", "y", "getComputedStyle", "getComputedStyle", "node", "isElement", "clippingParents", "getComputedStyle", "_ref", "reference", "top", "bottom", "right", "left", "options", "padding", "isElement", "popperOffsets", "offset", "right", "bottom", "top", "options", "padding", "placements", "placement", "a", "b", "_ref", "options", "name", "padding", "placements", "placement", "i", "top", "bottom", "right", "left", "_loop", "_i", "checks", "top", "right", "bottom", "left", "_ref", "name", "offset", "left", "top", "_ref", "right", "options", "name", "x", "y", "_ref", "name", "_ref", "options", "name", "padding", "popperOffsets", "top", "left", "bottom", "right", "offset", "min", "max", "_min", "_max", "node", "round", "order", "map", "debounce", "fn", "init_debounce", "merged", "defaultModifiers", "createPopper", "reference", "popper", "options", "instance", "setOptions", "isElement", "m", "index", "fn", "name", "debounce", "state", "_ref", "effect", "noopFn", "init_debounce", "init_applyStyles", "node", "index", "peek", "i", "length", "left", "right", "a", "b", "localDate", "initialTime", "options", "startTime", "timeout", "fps", "React", "warn", "format", "ReactDebugCurrentFrame", "Fragment", "ForwardRef", "i", "canUseDOM", "hasOwnProperty", "e", "name", "prefix", "properties", "sanitizeURL", "_ref", "capitalize", "token", "node", "assign", "x", "match", "fn", "construct", "s", "c", "Component", "init", "workInProgress", "getWrappedName", "context", "toString", "get", "set", "isHydrating", "validateProps", "isArray", "a", "options", "html", "text", "prefixes", "isCustomProperty", "isEmpty", "uppercasePattern", "msPattern", "hyphenateStyleName", "_", "character", "styles", "delimiter", "style", "registrationNameDependencies", "possibleRegistrationNames", "getEventTarget", "b", "d", "f", "error", "callCallback", "current", "instance", "now", "err", "root", "map", "index", "log", "renderLanes", "queuedEvent", "passive", "start", "end", "Interface", "normalize", "chars", "from", "y", "objectIs", "shallowEqual", "offset", "ownerDocument", "length", "next", "range", "getSelection", "common", "noop", "createElement", "createInstance", "cancelTimeout", "values", "location", "has", "cursor", "defaultProps", "clone", "effect", "number", "updateFragment", "child", "reconcileChildFibers", "didSuspend", "Insertion", "version", "initialState", "create", "now$1", "error$1", "render", "subtreeRenderLanes", "hasContextChanged", "commitTime", "_root", "flushSync", "shouldFireAfterActiveInstanceBlur", "elements", "hydrate", "createPortal", "keys", "path", "currentHook", "ReactCurrentDispatcher", "createRoot", "findDOMNode", "protocol", "React", "import_prop_types", "import_jsx_runtime", "Portal", "_jsx", "PropTypes", "init_Portal", "init_generateUtilityClass", "init_generateUtilityClasses", "isHTMLElement", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "_excluded2", "init_composeClasses", "init_Portal", "PopperTooltip", "_ref", "open", "popper", "_extends", "Root", "_jsx", "PopperUnstyled", "style", "PropTypes", "init_PopperUnstyled", "init_generateUtilityClasses", "index", "fixedElements", "init_generateUtilityClasses", "init_generateUtilityClass", "getContainer", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_composeClasses", "init_Portal", "init_FocusTrap", "open", "ModalUnstyled", "_ref", "node", "_extends", "handleKeyDown", "Root", "_jsx", "_jsxs", "PropTypes", "init_ModalUnstyled", "React", "init_utils", "React", "init_generateUtilityClasses", "init_generateUtilityClasses", "init_generateUtilityClasses", "init_utils", "init_generateUtilityClasses", "a", "b", "clamp", "min", "max", "values", "index", "i", "name", "open", "range", "_", "width", "height", "bottom", "left", "_extends", "React", "x", "init_generateUtilityClasses", "init_generateUtilityClasses", "init_generateUtilityClasses", "init_generateUtilityClasses", "init_generateUtilityClasses", "React", "React", "init_generateUtilityClasses", "require_react_is_development", "isValidElementType", "Element", "ForwardRef", "Fragment", "Memo", "Portal", "isElement", "isFragment", "require_react_is", "init_generateUtilityClasses", "getStyleValue", "isEmpty", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "TextareaAutosize", "style", "boxSizing", "padding", "border", "_jsxs", "_jsx", "_extends", "PropTypes", "init_TextareaAutosize", "init_composeClasses", "init_ModalUnstyled", "init_TextareaAutosize", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_capitalize", "init_useThemeProps", "color", "fontSize", "styles", "theme", "SvgIcon", "useThemeProps", "_extends", "_jsxs", "_jsx", "PropTypes", "init_SvgIcon", "path", "Component", "_jsx", "_extends", "React", "import_jsx_runtime", "init_SvgIcon", "init_debounce", "init_isMuiElement", "init_ownerDocument", "init_ownerWindow", "init_requirePropFactory", "useEnhancedEffect_default", "init_useEnhancedEffect", "init_useId", "init_unsupportedProp", "init_useControlled", "useEventCallback_default", "init_useEventCallback", "init_useForkRef", "init_useIsFocusVisible", "init_utils", "init_useForkRef", "t", "e", "t", "o", "import_prop_types", "PropTypes", "import_react", "React", "forceReflow", "node", "noop", "import_prop_types", "import_react", "import_react_dom", "Transition", "context", "_ref", "timeout", "node", "ReactDOM", "React", "PropTypes", "location", "pt", "import_prop_types", "import_react", "removeClass", "addClass", "node", "c", "CSSTransition", "classNames", "prefix", "_", "React", "_extends", "PropTypes", "e", "mapper", "c", "prev", "next", "i", "import_react", "import_prop_types", "import_react", "values", "k", "TransitionGroup", "context", "_ref", "node", "_extends", "Component", "childFactory", "React", "PropTypes", "init_esm", "options", "timeout", "easing", "style", "init_utils", "node", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_useThemeProps", "init_utils", "init_useTheme", "styles", "theme", "_extends", "Collapse", "useThemeProps", "easing", "style", "timeout", "useTheme", "size", "node", "next", "_jsx", "PropTypes", "init_Collapse", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_useThemeProps", "init_useTheme", "square", "styles", "theme", "_extends", "Paper", "useThemeProps", "useTheme", "_jsx", "PropTypes", "init_Paper", "React", "init_generateUtilityClass", "React", "import_react_is", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_useThemeProps", "init_Collapse", "init_Paper", "init_useControlled", "square", "styles", "theme", "_extends", "Accordion", "useThemeProps", "_jsxs", "_jsx", "PropTypes", "init_Accordion", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_useThemeProps", "styles", "theme", "AccordionDetails", "useThemeProps", "_jsx", "_extends", "PropTypes", "init_AccordionDetails", "timeout", "_jsx", "React", "import_prop_types", "import_jsx_runtime", "PropTypes", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "init_esm", "init_useThemeProps", "t", "keyframes", "theme", "TouchRipple", "useThemeProps", "pulsate", "_jsx", "start", "options", "_extends", "PropTypes", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_composeClasses", "init_useThemeProps", "init_useForkRef", "init_useEventCallback", "init_useIsFocusVisible", "styles", "ButtonBase", "useThemeProps", "useEventCallback_default", "handleKeyDown", "_extends", "_jsxs", "_jsx", "PropTypes", "init_ButtonBase", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_useThemeProps", "init_ButtonBase", "styles", "theme", "_extends", "AccordionSummary", "useThemeProps", "_jsxs", "_jsx", "PropTypes", "init_AccordionSummary", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_useThemeProps", "init_ButtonBase", "init_capitalize", "color", "size", "styles", "theme", "_extends", "palette", "IconButton", "useThemeProps", "_jsx", "PropTypes", "init_IconButton", "React", "import_jsx_runtime", "_jsx", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_useThemeProps", "init_capitalize", "styles", "theme", "_extends", "color", "Typography", "useThemeProps", "Component", "_jsx", "PropTypes", "init_Typography", "import_prop_types", "React", "import_jsx_runtime", "_excluded", "init_PopperUnstyled", "init_esm", "styles", "Popper", "theme", "useThemeProps", "_jsx", "_extends", "PropTypes", "init_Popper", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_useThemeProps", "init_capitalize", "color", "styles", "theme", "_extends", "ListSubheader", "useThemeProps", "_jsx", "PropTypes", "init_ListSubheader", "React", "import_jsx_runtime", "_jsx", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_useForkRef", "init_unsupportedProp", "init_capitalize", "init_ButtonBase", "init_useThemeProps", "size", "color", "styles", "theme", "_extends", "Chip", "useThemeProps", "handleKeyDown", "_jsx", "_jsxs", "PropTypes", "init_Chip", "React", "React", "GlobalStyles", "_jsx", "_extends", "React", "import_prop_types", "import_jsx_runtime", "GlobalStyles_default", "init_GlobalStyles", "init_esm", "PropTypes", "init_GlobalStyles", "init_utils", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_useThemeProps", "init_capitalize", "init_useForkRef", "init_useEnhancedEffect", "init_GlobalStyles", "init_utils", "styles", "color", "size", "theme", "_extends", "light", "_jsx", "GlobalStyles_default", "InputBase", "useThemeProps", "name", "instance", "useEnhancedEffect_default", "Root", "Input", "_jsxs", "PropTypes", "init_InputBase", "init_generateUtilityClass", "init_InputBase", "_extends", "init_generateUtilityClass", "init_InputBase", "_extends", "init_generateUtilityClass", "init_InputBase", "_extends", "React", "import_jsx_runtime", "_jsx", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_Popper", "init_ListSubheader", "init_Paper", "init_IconButton", "init_Chip", "init_useThemeProps", "init_capitalize", "size", "styles", "_extends", "theme", "Autocomplete", "useThemeProps", "_jsx", "index", "_jsxs", "index2", "PropTypes", "init_Autocomplete", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "styles", "init_esm", "init_useTheme", "init_utils", "init_useForkRef", "Fade", "theme", "useTheme", "easing", "style", "timeout", "node", "next", "_jsx", "_extends", "PropTypes", "init_Fade", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_useThemeProps", "init_Fade", "styles", "_extends", "Backdrop", "_ref", "useThemeProps", "open", "_jsx", "PropTypes", "init_Backdrop", "import_prop_types", "defaultTheme", "init_esm", "createTheme_default", "PropTypes", "init_Box", "init_generateUtilityClass", "React", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_useThemeProps", "init_ButtonBase", "init_capitalize", "color", "size", "_extends", "styles", "theme", "Button", "useThemeProps", "_jsx", "_jsxs", "PropTypes", "init_Button", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_capitalize", "init_useControlled", "init_ButtonBase", "_extends", "SwitchBase", "name", "_jsxs", "_jsx", "PropTypes", "React", "import_jsx_runtime", "_jsx", "React", "import_jsx_runtime", "_jsx", "React", "import_jsx_runtime", "_jsx", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_capitalize", "init_useThemeProps", "color", "_extends", "styles", "theme", "_jsx", "Checkbox", "useThemeProps", "size", "PropTypes", "init_Checkbox", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "_", "_t", "_t2", "_t3", "_t4", "useUtilityClasses", "init_esm", "init_capitalize", "init_useThemeProps", "t", "keyframes", "color", "styles", "theme", "_extends", "css", "CircularProgress", "useThemeProps", "size", "style", "_jsx", "PropTypes", "init_CircularProgress", "init_ClickAwayListener", "containerClasses", "init_containerClasses", "init_Container", "init_containerClasses", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "init_ModalUnstyled", "init_useThemeProps", "init_Backdrop", "styles", "theme", "_extends", "Modal", "_ref", "_ref2", "useThemeProps", "_jsx", "PropTypes", "init_Modal", "init_ModalUnstyled", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_useThemeProps", "light", "textAlign", "styles", "theme", "_extends", "Divider", "useThemeProps", "_jsx", "PropTypes", "init_Divider", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_InputBase", "init_useThemeProps", "_extends", "styles", "theme", "light", "backgroundColor", "FilledInput", "_ref", "_ref2", "useThemeProps", "_jsx", "PropTypes", "init_FilledInput", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_useThemeProps", "init_utils", "init_capitalize", "init_isMuiElement", "margin", "styles", "_extends", "FormControl", "useThemeProps", "color", "size", "_jsx", "PropTypes", "init_FormControl", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_capitalize", "init_useThemeProps", "size", "styles", "theme", "_extends", "FormHelperText", "useThemeProps", "_jsx", "PropTypes", "init_FormHelperText", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_capitalize", "init_useThemeProps", "color", "styles", "_extends", "theme", "FormLabel", "useThemeProps", "_jsxs", "PropTypes", "init_FormLabel", "React", "SPACINGS", "DIRECTIONS", "WRAPS", "GRID_SIZES", "gridClasses", "init_gridClasses", "init_generateUtilityClass", "spacing", "wrap", "size", "parse", "theme", "size", "styles", "width", "_extends", "values", "a", "b", "spacing", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_requirePropFactory", "init_useThemeProps", "init_useTheme", "init_gridClasses", "wrap", "Grid", "useThemeProps", "useTheme", "_jsx", "PropTypes", "init_Grid", "init_gridClasses", "SPACINGS", "DIRECTIONS", "WRAPS", "GRID_SIZES", "spacing", "wrap", "size", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "styles", "init_esm", "init_useTheme", "init_utils", "init_useForkRef", "Grow", "easing", "style", "timeout", "theme", "useTheme", "node", "duration", "next", "_jsx", "_extends", "PropTypes", "init_Grow", "match", "useEnhancedEffect_default", "options", "theme", "React", "init_esm", "init_useEnhancedEffect", "init_useMediaQuery", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_InputBase", "init_useThemeProps", "_extends", "styles", "theme", "light", "Input", "_ref", "_ref2", "useThemeProps", "_jsx", "PropTypes", "init_Input", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_FormLabel", "init_useThemeProps", "size", "_extends", "styles", "theme", "InputLabel", "useThemeProps", "_jsx", "PropTypes", "init_InputLabel", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "_", "_t", "_t2", "_t3", "_t4", "_t5", "_t6", "useUtilityClasses", "init_esm", "init_capitalize", "init_useTheme", "init_useThemeProps", "t", "keyframes", "color", "theme", "styles", "_extends", "backgroundColor", "css", "LinearProgress", "useThemeProps", "useTheme", "_jsxs", "_jsx", "PropTypes", "init_LinearProgress", "React", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_useThemeProps", "styles", "_extends", "List", "useThemeProps", "context", "_jsx", "_jsxs", "PropTypes", "init_List", "init_getScrollbarSize", "text", "React", "import_react_is", "import_prop_types", "import_jsx_runtime", "_excluded", "init_ownerDocument", "init_List", "init_getScrollbarSize", "init_useForkRef", "init_useEnhancedEffect", "MenuList", "useEnhancedEffect_default", "theme", "handleKeyDown", "index", "_jsx", "_extends", "PropTypes", "init_MenuList", "init_generateUtilityClass", "offset", "n", "resolveAnchorEl", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "_excluded2", "useUtilityClasses", "init_useThemeProps", "init_debounce", "init_ownerDocument", "init_ownerWindow", "init_useForkRef", "init_Grow", "init_Modal", "init_Paper", "styles", "Popover", "useThemeProps", "open", "_extends", "top", "left", "bottom", "right", "_jsx", "PropTypes", "init_Popover", "init_generateUtilityClass", "React", "import_react_is", "import_prop_types", "import_jsx_runtime", "_excluded", "_excluded2", "useUtilityClasses", "init_MenuList", "init_Paper", "init_Popover", "init_useTheme", "init_useThemeProps", "styles", "Menu", "useThemeProps", "open", "theme", "useTheme", "_extends", "index", "_jsx", "PropTypes", "init_Menu", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_capitalize", "open", "theme", "_extends", "styles", "NativeSelectInput", "_jsxs", "_jsx", "PropTypes", "_excluded", "_extends", "_jsx", "_span", "React", "import_prop_types", "import_jsx_runtime", "theme", "PropTypes", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "NotchedOutlineRoot", "init_useThemeProps", "_extends", "theme", "borderColor", "styles", "OutlinedInput", "_ref", "_ref2", "useThemeProps", "_jsx", "_jsxs", "PropTypes", "init_OutlinedInput", "init_generateUtilityClass", "_excluded", "range", "start", "end", "length", "_", "i", "_extends", "init_usePagination", "init_generateUtilityClass", "React", "import_jsx_runtime", "_jsx", "React", "import_jsx_runtime", "_jsx", "React", "import_jsx_runtime", "_jsx", "React", "import_jsx_runtime", "_jsx", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_useThemeProps", "init_useTheme", "init_ButtonBase", "init_capitalize", "styles", "color", "size", "shape", "theme", "_extends", "PaginationItem", "useThemeProps", "useTheme", "Icon", "_jsx", "_jsxs", "PropTypes", "init_PaginationItem", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_useThemeProps", "init_usePagination", "init_PaginationItem", "styles", "Pagination", "useThemeProps", "color", "_jsx", "_extends", "shape", "size", "index", "PropTypes", "init_Pagination", "init_Portal", "init_generateUtilityClass", "a", "b", "isEmpty", "React", "import_react_is", "import_prop_types", "import_jsx_runtime", "_span", "_excluded", "useUtilityClasses", "init_ownerDocument", "init_capitalize", "init_utils", "init_useForkRef", "init_useControlled", "styles", "open", "SelectInput", "name", "node", "index", "child", "handleKeyDown", "v", "values", "x", "_extends", "_jsxs", "_jsx", "PropTypes", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_Input", "init_FilledInput", "init_OutlinedInput", "init_useThemeProps", "init_useForkRef", "styles", "Select", "useThemeProps", "open", "_jsx", "_extends", "PropTypes", "init_Select", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "_", "_t", "_t2", "_t3", "_t4", "useUtilityClasses", "init_esm", "init_useThemeProps", "t", "width", "height", "keyframes", "styles", "theme", "_extends", "css", "Skeleton", "useThemeProps", "style", "_jsx", "PropTypes", "init_Skeleton", "init_generateUtilityClass", "_jsxs", "_jsx", "React", "import_prop_types", "import_jsx_runtime", "open", "PropTypes", "Identity", "x", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "valueToPercent", "useUtilityClasses", "init_esm", "init_useThemeProps", "init_useTheme", "init_capitalize", "min", "max", "styles", "theme", "_extends", "PropTypes", "color", "marked", "size", "Slider", "_ref", "_ref2", "useThemeProps", "useTheme", "axisProps", "open", "range", "values", "_jsxs", "_jsx", "index", "style", "init_Slider", "init_generateUtilityClass", "round", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_useTheme", "init_useThemeProps", "init_capitalize", "init_Grow", "init_Popper", "init_useEventCallback", "init_useForkRef", "init_useId", "init_useIsFocusVisible", "init_useControlled", "arrow", "styles", "theme", "open", "_extends", "Tooltip", "_ref", "_ref2", "useThemeProps", "useTheme", "useEventCallback_default", "childrenProps", "handleKeyDown", "_jsxs", "_jsx", "PropTypes", "init_Tooltip", "init_Stack", "React", "React", "React", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_useThemeProps", "styles", "theme", "_extends", "Table", "useThemeProps", "padding", "size", "_jsx", "PropTypes", "init_Table", "React", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "defaultComponent", "init_useThemeProps", "styles", "TableBody", "useThemeProps", "_extends", "_jsx", "PropTypes", "init_TableBody", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_esm", "init_capitalize", "init_useThemeProps", "padding", "size", "styles", "theme", "_extends", "TableCell", "useThemeProps", "tablelvl2", "_jsx", "PropTypes", "init_TableCell", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_useThemeProps", "styles", "TableContainer", "useThemeProps", "_extends", "_jsx", "PropTypes", "init_TableContainer", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "tablelvl2", "defaultComponent", "init_useThemeProps", "styles", "TableHead", "useThemeProps", "_extends", "_jsx", "PropTypes", "init_TableHead", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "defaultComponent", "init_esm", "init_useThemeProps", "styles", "theme", "TableRow", "useThemeProps", "tablelvl2", "_extends", "_jsx", "PropTypes", "init_TableRow", "init_generateUtilityClass", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "useUtilityClasses", "init_useThemeProps", "init_Input", "init_FilledInput", "init_OutlinedInput", "init_InputLabel", "init_FormControl", "init_FormHelperText", "init_Select", "styles", "TextField", "useThemeProps", "color", "name", "_extends", "_jsx", "_jsxs", "PropTypes", "init_TextField", "init_TextareaAutosize", "init_utils", "init_Accordion", "init_AccordionDetails", "init_AccordionSummary", "init_Autocomplete", "init_Backdrop", "init_Box", "init_Button", "init_ButtonBase", "init_Checkbox", "init_Chip", "init_CircularProgress", "init_ClickAwayListener", "init_Collapse", "init_Container", "init_Divider", "init_Fade", "init_FilledInput", "init_FormControl", "init_FormHelperText", "init_FormLabel", "init_Grid", "init_Grow", "init_IconButton", "init_Input", "init_InputBase", "init_InputLabel", "init_LinearProgress", "init_List", "init_ListSubheader", "init_Menu", "init_MenuList", "init_Modal", "init_OutlinedInput", "init_Pagination", "init_PaginationItem", "init_Paper", "init_Popover", "init_Popper", "init_Portal", "init_Select", "init_Skeleton", "init_Slider", "init_Stack", "init_SvgIcon", "init_Table", "init_TableBody", "init_TableCell", "init_TableContainer", "init_TableHead", "init_TableRow", "init_TextField", "init_TextareaAutosize", "init_Tooltip", "init_Typography", "init_useMediaQuery", "init_usePagination", "init_GlobalStyles", "init_generateUtilityClass", "Parser", "a", "b", "c", "keys", "i", "length", "rank", "Parser", "LanguageDetect", "me", "keys", "i", "a", "b", "n", "Gettext", "locale", "options", "i", "domain", "index", "buffer", "Buffer", "length", "size", "fill", "encoding", "e", "encoder", "options", "buffer", "Buffer", "length", "size", "fill", "encoding", "Buffer", "encoding", "r", "i", "self", "j", "p", "end", "c", "n", "Buffer", "options", "i", "Buffer", "options", "offset", "i", "encoding", "b", "j", "Buffer", "i", "j", "options", "encoding", "b", "Buffer", "options", "i", "Buffer", "i", "options", "Buffer", "i", "j", "k", "l", "node", "m", "prefix", "options", "r", "i", "Buffer", "Transform", "options", "encoding", "e", "Buffer", "encode", "encoding", "options", "encoder", "decode", "e", "stream_module", "from", "E", "name", "AggregateError", "i", "self", "fn", "start", "end", "instance", "name", "err", "format", "format", "AggregateError", "assert", "i", "start", "E", "fn", "err", "options", "name", "a", "range", "AbortController", "AbortSignal", "R", "ReflectApply", "ReflectOwnKeys", "warning", "NumberIsNaN", "EventEmitter", "once", "n", "i", "err", "m", "w", "position", "spliceOne", "keys", "copy", "index", "name", "format", "AggregateError", "AbortSignal", "AbortController", "Blob", "isBlob", "b", "name", "fn", "err", "String", "name", "min", "max", "v", "options", "i", "buffer", "encoding", "length", "require_browser", "process", "e", "timeout", "i", "Item", "noop", "name", "dir", "stream", "_ref", "_ref2", "process", "once", "Promise", "stream", "options", "err", "process", "Symbol", "err", "w", "r", "s", "self", "stream", "construct", "options", "fn", "name", "stream", "Uint8Array", "Buffer", "v", "s", "p", "n", "i", "slice", "c", "_", "options", "options", "name", "process", "Buffer", "from", "next", "close", "e", "err", "process", "Promise", "Symbol", "Buffer", "fn", "from", "options", "stream", "err", "encoding", "buffer", "n", "s", "i", "index", "self", "j", "next", "r", "_ref", "process", "Error", "Symbol", "Buffer", "options", "stream", "encoding", "err", "afterWrite", "n", "i", "state", "w", "process", "from", "Blob", "isBlob", "b", "AbortController", "options", "name", "write", "then", "d", "err", "fn", "encoding", "r", "w", "keys", "i", "options", "Symbol", "Transform", "options", "encoding", "length", "err", "Transform", "options", "encoding", "process", "Promise", "once", "AbortController", "stream", "err", "end", "fn", "i", "onError", "pt", "endFn", "compose", "n", "d", "err", "encoding", "writable", "readable", "AbortController", "Boolean", "Number", "Promise", "Symbol", "compose", "stream", "options", "map", "fn", "next", "err", "asIndexedPairs", "index", "toArray", "values", "flatMap", "number", "drop", "take", "Promise", "end", "options", "err", "require_stream", "Buffer", "compose", "fn", "isUint8Array", "require_browser", "_", "require_shams", "isNaN", "a", "sign", "number", "e", "e", "max", "concatty", "a", "b", "i", "j", "slicy", "offset", "Empty", "e", "O", "undefined", "abs", "max", "min", "pow", "round", "sign", "e", "doEval", "name", "fn", "hasOwn", "stringToPath", "match", "number", "getBaseIntrinsic", "i", "name", "hasOwn", "fn", "isRegex", "e", "isRegex", "s", "fn", "_", "e", "hasOwnProperty", "forEachArray", "i", "forEachString", "forEachObject", "k", "isArray", "x", "g", "i", "hasPropertyDescriptors", "e", "define", "fn", "length", "g", "typedArrays", "i", "cache", "fn", "e", "name", "f", "e", "isUint8Array", "isMap", "isAnyArrayBuffer", "inherits", "require_util", "getOwnPropertyDescriptors", "keys", "i", "f", "isString", "x", "_", "isNull", "isObject", "fn", "set", "isUndefined", "style", "hash", "isFunction", "isError", "name", "isRegExp", "isDate", "isArray", "n", "isNumber", "l", "hasOwnProperty", "line", "length", "prev", "isNullOrUndefined", "isSymbol", "re", "objectToString", "d", "e", "isPrimitive", "o", "pad", "months", "time", "err", "self", "format", "parse", "i", "index", "match", "arrify", "undefined", "FUNC_ERROR_TEXT", "NAN", "nullTag", "setTag", "symbolTag", "undefinedTag", "reTrimStart", "reWhitespace", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "freeGlobal", "freeSelf", "root", "e", "apply", "index", "length", "arrayPush", "values", "offset", "collection", "n", "baseTrim", "trimmedEndIndex", "cache", "getValue", "map", "set", "runInContext", "context", "_", "Array", "Date", "Error", "Function", "Math", "Object", "RegExp", "String", "TypeError", "objectProto", "hasOwnProperty", "idCounter", "nativeObjectToString", "Buffer", "Symbol", "Uint8Array", "symToStringTag", "nativeMax", "nativeMin", "DataView", "Map", "Promise", "Set", "WeakMap", "symbolToString", "isObjectLike", "isArray", "isObject", "result", "dir", "start", "end", "iteratee", "entries", "size", "keys", "get", "number", "isMap", "key", "setTimeout", "includes", "isSymbol", "isFunction", "path", "baseGetTag", "getRawTag", "objectToString", "object", "identity", "isPlainObject", "indexOf", "toString", "clearTimeout", "buffer", "regexp", "order", "wrapper", "fn", "deburr", "ary", "chars", "charsLength", "toNumber", "noop", "othValue", "flatten", "match", "memoize", "transform", "reference", "fill", "findIndex", "intersection", "reverse", "slice", "toArray", "parent", "clone", "isString", "shuffle", "now", "curry", "debounce", "options", "time", "flush", "defer", "flip", "once", "throttle", "wrap", "gt", "isDate", "isElement", "isEmpty", "isEqual", "isError", "isFinite", "isInteger", "isNaN", "isNumber", "isNull", "isRegExp", "isUndefined", "lt", "sign", "assign", "at", "create", "properties", "merge", "clamp", "capitalize", "position", "escape", "pad", "parseInt", "replace", "trim", "truncate", "unescape", "chain", "range", "uniqueId", "prefix", "max", "min", "round", "value", "window", "undefined", "NAME", "TYPE", "extend", "regexes", "i", "version", "trim", "j", "k", "p", "q", "match", "map", "ua", "$", "parser", "require_lib", "React", "setUa", "parseUserAgent", "setUserAgent", "ownKeys", "keys", "symbols", "_objectSpread2", "i", "_defineProperty", "_typeof", "obj", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_extends", "_inherits", "_setPrototypeOf", "_getPrototypeOf", "o", "p", "_objectWithoutPropertiesLoose", "_objectWithoutProperties", "_assertThisInitialized", "self", "_possibleConstructorReturn", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "_e", "err", "_arrayLikeToArray", "n", "checkDeviceType", "setDefaults", "d", "getNavigatorInstance", "isIOS13Check", "browserPayload", "isBrowser", "browser", "engine", "os", "ua", "mobilePayload", "device", "smartTvPayload", "isSmartTV", "consolePayload", "isConsole", "wearablePayload", "isWearable", "embeddedPayload", "isEmbedded", "_ref", "isMobile", "isTablet", "isMobileType", "isTabletType", "isMobileAndTabletType", "isSmartTVType", "isBrowserType", "isWearableType", "isConsoleType", "isEmbeddedType", "getMobileVendor", "getMobileModel", "getDeviceType", "isAndroidType", "name", "isWindowsType", "isMacOsType", "isWinPhoneType", "isIOSType", "getOsVersion", "version", "getOsName", "isChromeType", "isFirefoxType", "isChromiumType", "isEdgeType", "isYandexType", "isSafariType", "isMobileSafariType", "isOperaType", "isIEType", "isMIUIType", "isSamsungBrowserType", "getBrowserFullVersion", "getBrowserVersion", "major", "getBrowserName", "getEngineName", "getEngineVersion", "isElectronType", "isEdgeChromiumType", "getIOS13", "getIPad13", "getIphone13", "getIPod13", "getUseragent", "options", "isMobileOnly", "osVersion", "osName", "fullBrowserVersion", "browserVersion", "browserName", "engineName", "getSelectorsByUserAgent", "AndroidView", "BrowserView", "IEView", "IOSView", "MobileView", "TabletView", "WinPhoneView", "MobileOnlyView", "style", "SmartTVView", "ConsoleView", "WearableView", "CustomView", "next", "m", "i", "c", "o", "h", "Button", "React", "import_react", "init_Button", "Tooltip", "React", "import_react", "init_Tooltip", "import_react", "init_Close", "React", "React", "Content", "init_Button", "init_Close", "init_Tooltip", "index", "Tooltip", "Button", "React", "React", "import_react_dom", "OnBoardingStage", "ReactDOM", "e", "index", "i", "j", "length", "index", "index", "index", "entries", "index", "length", "freeGlobal", "freeGlobal", "freeSelf", "root", "root", "Symbol", "Symbol", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "getRawTag", "e", "objectProto", "nativeObjectToString", "objectToString", "Symbol", "getRawTag", "objectToString", "nullTag", "undefinedTag", "symToStringTag", "baseGetTag", "isObject", "baseGetTag", "isObject", "isFunction", "root", "e", "isFunction", "isObject", "objectProto", "hasOwnProperty", "getValue", "getValue", "root", "Map", "objectProto", "hasOwnProperty", "objectProto", "hasOwnProperty", "entries", "index", "length", "Map", "map", "size", "entries", "index", "length", "Map", "entries", "values", "index", "length", "index", "length", "cache", "index", "othValue", "root", "Uint8Array", "map", "index", "set", "index", "Symbol", "Uint8Array", "setTag", "symbolTag", "arrayPush", "values", "index", "length", "offset", "isArray", "arrayPush", "isArray", "index", "length", "objectProto", "n", "index", "isObjectLike", "baseGetTag", "isObjectLike", "isObjectLike", "objectProto", "hasOwnProperty", "root", "Buffer", "length", "baseGetTag", "isObjectLike", "setTag", "freeGlobal", "e", "isArray", "objectProto", "hasOwnProperty", "length", "objectProto", "objectProto", "hasOwnProperty", "isFunction", "keys", "keys", "objectProto", "hasOwnProperty", "index", "root", "DataView", "root", "Promise", "root", "Set", "root", "WeakMap", "DataView", "Map", "Promise", "Set", "WeakMap", "baseGetTag", "setTag", "isArray", "objectProto", "hasOwnProperty", "isObjectLike", "isEqual", "pathToRegexp", "parse", "compile", "options", "index", "path", "m", "offset", "next", "prefix", "name", "delimiter", "c", "i", "encode", "token", "j", "re", "keys", "regexp", "end", "require_react_is_development", "hasSymbol", "isValidElementType", "Element", "ForwardRef", "Fragment", "Memo", "Portal", "isElement", "isFragment", "require_react_is", "t", "e", "n", "r", "i", "s", "u", "a", "o", "c", "f", "h", "d", "l", "$", "y", "M", "m", "v", "g", "D", "p", "S", "_", "w", "O", "b", "k", "e", "t", "i", "n", "r", "f", "s", "a", "o", "e", "t", "n", "r", "i", "o", "s", "a", "f", "h", "u", "d", "c", "l", "m", "M", "Y", "p", "v", "D", "g", "e", "t", "o", "n", "r", "i", "e", "i", "t", "s", "f", "n", "o", "r", "u", "e", "n", "t", "i", "e", "o", "s", "d", "hasOwn", "classNames", "i", "index", "length", "isObject", "keys", "length", "baseGetTag", "isObjectLike", "symbolTag", "isSymbol", "isArray", "isSymbol", "FUNC_ERROR_TEXT", "memoize", "cache", "memoize", "cache", "match", "number", "index", "length", "Symbol", "isArray", "isSymbol", "symbolToString", "toString", "isArray", "toString", "isSymbol", "path", "index", "length", "require_get", "get", "path", "isArray", "path", "index", "length", "path", "get", "path", "identity", "path", "path", "identity", "isArray", "length", "index", "index", "length", "length", "index", "length", "noop", "Set", "noop", "values", "index", "length", "set", "start", "end", "index", "length", "start", "end", "length", "toString", "baseGetTag", "isObjectLike", "isNumber", "require_isNaN", "isNumber", "isNaN", "baseGetTag", "isArray", "isObjectLike", "isString", "e", "hasClass", "addClass", "replaceClassName", "removeClass", "Component", "timeoutsShape", "classNamesShape", "PropTypes", "_objectWithoutPropertiesLoose", "i", "_inheritsLoose", "UNMOUNTED", "EXITED", "ENTERING", "ENTERED", "EXITING", "Transition", "context", "_ref", "timeout", "node", "pt", "noop", "PropTypes", "_addClass", "_extends", "i", "_inheritsLoose", "addClass", "node", "c", "removeClass", "CSSTransition", "classNames", "prefix", "getChildMapping", "mergeChildMappings", "getInitialChildMapping", "getNextChildMapping", "mapper", "c", "prev", "next", "i", "getProp", "_objectWithoutPropertiesLoose", "i", "_extends", "_inheritsLoose", "_assertThisInitialized", "self", "values", "k", "defaultProps", "childFactory", "TransitionGroup", "context", "_ref", "node", "Component", "_objectWithoutPropertiesLoose", "i", "_inheritsLoose", "ReplaceTransition", "second", "Symbol", "isArray", "arrayPush", "index", "length", "index", "length", "keys", "length", "index", "index", "collection", "length", "isSymbol", "index", "length", "order", "identity", "isArray", "index", "collection", "apply", "apply", "nativeMax", "start", "index", "length", "e", "identity", "identity", "start", "isObject", "index", "length", "root", "now", "reWhitespace", "trimmedEndIndex", "index", "trimmedEndIndex", "reTrimStart", "baseTrim", "baseTrim", "isObject", "isSymbol", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "isObject", "now", "toNumber", "FUNC_ERROR_TEXT", "nativeMax", "nativeMin", "debounce", "options", "time", "flush", "next", "prev", "token", "escape", "max", "name", "nodes", "i", "max", "node", "node", "stringify", "nodes", "i", "length", "require_lib", "parse", "stringify", "parser", "hash", "s", "p", "r", "i", "l", "d", "g", "j", "bt", "y", "t", "a", "m", "n", "q", "z", "c", "u", "e", "prev", "parse", "self", "lexer", "k", "expected", "symbol", "token", "rules", "next", "line", "index", "rv", "offset", "l2", "c2", "r2", "match", "Parser", "left", "right", "flip", "node", "isEqual", "left", "right", "nodes", "node", "stringify", "order", "round", "left", "right", "node", "require_react_is_development", "hasSymbol", "isValidElementType", "Element", "ForwardRef", "Fragment", "Memo", "Portal", "isElement", "isFragment", "require_react_is", "isSymbol", "index", "length", "require_max", "identity", "max", "require_min", "identity", "min", "isArray", "map", "map", "globalScope", "MAX_DIGITS", "Decimal", "P", "x", "y", "i", "j", "w", "round", "r", "ln", "q", "z", "e", "n", "s", "t", "k", "toString", "sign", "truncate", "d", "min", "max", "a", "b", "subtract", "pow", "c", "x2", "xe", "clone", "p", "v", "length", "baseGetTag", "isObjectLike", "objectProto", "hasOwnProperty", "isPlainObject", "nativeMax", "start", "end", "index", "length", "toNumber", "sign", "start", "end", "require_range", "range", "index", "collection", "isArray", "index", "length", "index", "collection", "isArray", "object", "keys", "index", "nativeMax", "findIndex", "length", "index", "findIndex", "debounce", "isObject", "FUNC_ERROR_TEXT", "throttle", "options", "baseGetTag", "isObjectLike", "prefix", "fn", "context", "once", "EventEmitter", "name", "handlers", "i", "l", "ee", "a2", "a3", "a4", "length", "j", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "getConfiguration", "setConfiguration", "get", "require_utils", "_slicedToArray", "i", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "o", "_arrayLikeToArray", "n", "_e", "err", "getViewPort", "useScreenClass", "getScreenClass", "viewport", "handleWindowResized", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "hasWidth", "getWidth", "width", "_default", "_ref", "offset", "order", "styles", "size", "index", "require_style", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "_default", "_ref", "wrap", "alignItems", "justifyContent", "flexDirection", "flexWrap", "styles", "_excluded", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "Row", "_ref", "style", "wrap", "_typeof", "obj", "_getRequireWildcardCache", "nodeInterop", "cache", "_slicedToArray", "i", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "o", "_arrayLikeToArray", "n", "_e", "err", "ScreenClassProvider", "_ref", "_typeof", "obj", "_getRequireWildcardCache", "nodeInterop", "cache", "ScreenClassResolver", "_ref", "_typeof", "obj", "_excluded", "_getRequireWildcardCache", "nodeInterop", "cache", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "Col", "_ref", "offset", "order", "style", "width", "require_style", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "_default", "_ref", "styles", "_typeof", "obj", "_excluded", "_getRequireWildcardCache", "nodeInterop", "cache", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "Container", "_ref", "style", "require_style", "hidden", "_ref", "_typeof", "obj", "style", "_getRequireWildcardCache", "nodeInterop", "cache", "Hidden", "_ref", "require_style", "visible", "_ref", "_typeof", "obj", "style", "_getRequireWildcardCache", "nodeInterop", "cache", "Visible", "_ref", "ScreenClassRender", "_ref", "_typeof", "obj", "get", "_getRequireWildcardCache", "nodeInterop", "cache", "React", "warn", "format", "ReactDebugCurrentFrame", "close", "error", "e", "hasOwnProperty", "name", "prefix", "properties", "sanitizeURL", "_ref", "capitalize", "token", "prefixes", "msPattern", "_", "character", "match", "escape", "html", "index", "text", "uppercasePattern", "hyphenateStyleName", "isArray", "a", "i", "processStyleName", "style", "isCustomProperty", "v", "assign", "getWrappedName", "context", "init", "x", "fn", "construct", "s", "c", "Component", "values", "location", "err", "instance", "prev", "next", "get", "set", "initialState", "length", "number", "log", "y", "objectIs", "useContext", "useState", "useReducer", "useMemo", "useRef", "useLayoutEffect", "create", "useCallback", "useSyncExternalStore", "useId", "noop", "node", "onError", "defaultProps", "r", "options", "fatalError", "renderToString", "renderToStaticMarkup", "React", "warn", "format", "ReactDebugCurrentFrame", "close", "error", "e", "hasOwnProperty", "name", "prefix", "properties", "sanitizeURL", "_ref", "capitalize", "token", "prefixes", "msPattern", "_", "character", "match", "escape", "html", "index", "text", "uppercasePattern", "hyphenateStyleName", "isArray", "a", "i", "processStyleName", "style", "isCustomProperty", "v", "assign", "getWrappedName", "context", "init", "x", "fn", "construct", "s", "c", "Component", "values", "location", "err", "instance", "prev", "next", "get", "set", "initialState", "length", "number", "log", "y", "objectIs", "useContext", "useState", "useReducer", "useMemo", "useRef", "useLayoutEffect", "create", "useCallback", "useSyncExternalStore", "useId", "noop", "node", "defaultProps", "r", "options", "stream", "l", "s", "extendStatics", "d", "b", "p", "__extends", "__assign", "t", "s", "i", "n", "__awaiter", "P", "e", "__generator", "_", "f", "y", "g", "v", "from", "pack", "l", "Bounds", "left", "top", "width", "height", "x", "w", "h", "context", "node", "document", "toCodePoints", "length", "fromCodePoint", "index", "chars", "lookup", "decode", "base64", "buffer", "polyUint16Array", "polyUint32Array", "UTRIE2_SHIFT_2", "UTRIE2_SHIFT_1", "UTRIE2_INDEX_SHIFT", "UTRIE2_SHIFT_1_2", "UTRIE2_LSCP_INDEX_2_OFFSET", "UTRIE2_DATA_BLOCK_LENGTH", "UTRIE2_DATA_MASK", "UTRIE2_LSCP_INDEX_2_LENGTH", "UTRIE2_INDEX_2_BMP_LENGTH", "UTRIE2_UTF8_2B_INDEX_2_OFFSET", "UTRIE2_UTF8_2B_INDEX_2_LENGTH", "UTRIE2_INDEX_1_OFFSET", "UTRIE2_OMITTED_BMP_INDEX_1_LENGTH", "UTRIE2_INDEX_2_BLOCK_LENGTH", "UTRIE2_INDEX_2_MASK", "slice16", "start", "end", "slice32", "createTrieFromBase64", "Trie", "CR", "LF", "ZWJ", "RI", "BREAK_NOT_ALLOWED", "BREAK_ALLOWED", "UnicodeTrie", "SPACE", "lineBreak", "prev", "a", "next", "options", "_a", "Break", "NULL", "u", "z", "A", "E", "F", "U", "Z", "isDigit", "c2", "c3", "c", "sign", "Tokenizer", "token", "e2", "e3", "a2", "a3", "u2", "number", "unit", "hex", "Parser", "values", "block", "deg", "color", "r", "alpha", "blue", "green", "red", "max", "rgb", "_b", "t1", "t2", "hsl", "parseColor", "backgroundColor", "colorType", "angle", "angleType", "shape", "size", "position", "BACKGROUND_SIZE", "borderTopColor", "borderRightColor", "borderBottomColor", "borderLeftColor", "style", "direction", "display", "float", "letterSpacing", "LINE_BREAK", "lineHeight", "fontSize", "overflow", "textAlign", "textTransform", "transform", "a4", "visibility", "WORD_BREAK", "wordBreak", "zIndex", "time", "line", "fontFamily", "fontWeight", "fontStyle", "contains", "duration", "quotes", "open", "DEFAULT_VALUE", "CSSParsedDeclaration", "declaration", "parse", "CSSParsedPseudoDeclaration", "CSSParsedCounterDeclaration", "parser", "ElementContainer", "L", "V", "T", "range", "offset", "text", "svg", "loadSerializedSVG", "img", "TextBounds", "styles", "ownerDocument", "wrapper", "TextContainer", "capitalize", "m", "p2", "ImageElementContainer", "CanvasElementContainer", "SVGElementContainer", "LIElementContainer", "OLElementContainer", "InputElementContainer", "SelectElementContainer", "TextareaElementContainer", "IFrameElementContainer", "root", "childNode", "isHTMLElement", "CounterState", "name", "counterIncrement", "counterReset", "min", "symbols", "numbers", "DocumentCloner", "clone", "css", "window", "value", "PseudoElementType", "CacheStorage", "Cache", "Vector", "BezierCurve", "path", "BoundCurves", "borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "CORNER", "r2", "TransformEffect", "matrix", "ClipEffect", "OpacityEffect", "opacity", "effect", "point", "StackingContext", "ElementPaint", "paddingBox", "createsStackingContext", "elements", "backgroundOrigin", "backgroundClip", "sizeWidth", "sizeHeight", "second", "FontMetrics", "Renderer", "CanvasRenderer", "fontVariant", "paintOrder", "textShadow", "textDecorationLine", "image", "_e", "backgroundImage", "borders", "border", "ForeignObjectRenderer", "Logger", "Context", "_t", "unapply", "func", "thisArg", "RegExp", "lastIndex", "_len3", "arguments", "length", "args", "Array", "_key3", "apply", "unconstruct", "Func", "_len4", "_key4", "construct", "addToSet", "set", "array", "transformCaseFunc", "undefined", "stringToLowerCase", "setPrototypeOf", "arrayIsArray", "l", "element", "lcElement", "isFrozen", "cleanArray", "index", "objectHasOwnProperty", "isPropertyExist", "clone", "object", "newObject", "create", "_ref2", "entries", "_ref3", "_slicedToArray", "property", "value", "constructor", "Object", "stringifyValue", "numberToString", "booleanToString", "bigintToString", "symbolToString", "objectToString", "valueAsRecord", "valueToString", "lookupGetter", "stringified", "prop", "desc", "getOwnPropertyDescriptor", "get", "getPrototypeOf", "fallbackValue", "isRegex", "regExpTest", "_unused", "createDOMPurify", "window", "getGlobal", "DOMPurify", "root", "version", "removed", "document", "nodeType", "NODE_TYPE", "Element", "isSupported", "originalDocument", "currentScript", "DocumentFragment", "HTMLTemplateElement", "Node", "NodeFilter", "_window$NamedNodeMap", "NamedNodeMap", "MozNamedAttrMap", "HTMLFormElement", "DOMParser", "trustedTypes", "ElementPrototype", "prototype", "cloneNode", "remove", "removeAttributeNode", "getNextSibling", "getChildNodes", "getParentNode", "getShadowRoot", "getAttributes", "getNodeType", "getNodeName", "getOwnerDocument", "_readNodeType", "node", "_readNodeName", "nodeName", "template", "createElement", "content", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "defaultTrustedTypesPolicy", "defaultTrustedTypesPolicyResolved", "IN_TRUSTED_TYPES_POLICY", "_assertNotInTrustedTypesPolicy", "typeErrorCreate", "_createTrustedHTML", "html", "createHTML", "_createTrustedScriptURL", "scriptUrl", "createScriptURL", "_getDefaultTrustedTypesPolicy", "_createTrustedTypesPolicy", "_document", "implementation", "createNodeIterator", "createDocumentFragment", "getElementsByTagName", "importNode", "hooks", "_createHooksMap", "createHTMLDocument", "MUSTACHE_EXPR", "EXPRESSIONS", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "CUSTOM_ELEMENT", "IS_ALLOWED_URI", "ALLOWED_TAGS", "DEFAULT_ALLOWED_TAGS", "TAGS", "ALLOWED_ATTR", "DEFAULT_ALLOWED_ATTR", "ATTRS", "CUSTOM_ELEMENT_HANDLING", "seal", "tagNameCheck", "writable", "configurable", "enumerable", "attributeNameCheck", "allowCustomizedBuiltInElements", "FORBID_TAGS", "FORBID_ATTR", "EXTRA_ELEMENT_HANDLING", "tagCheck", "attributeCheck", "ALLOW_ARIA_ATTR", "ALLOW_DATA_ATTR", "ALLOW_UNKNOWN_PROTOCOLS", "ALLOW_SELF_CLOSE_IN_ATTR", "SAFE_FOR_TEMPLATES", "SAFE_FOR_XML", "WHOLE_DOCUMENT", "SET_CONFIG", "SET_CONFIG_ALLOWED_TAGS", "SET_CONFIG_ALLOWED_ATTR", "FORCE_BODY", "RETURN_DOM", "RETURN_DOM_FRAGMENT", "RETURN_TRUSTED_TYPE", "SANITIZE_DOM", "SANITIZE_NAMED_PROPS", "SANITIZE_NAMED_PROPS_PREFIX", "KEEP_CONTENT", "IN_PLACE", "USE_PROFILES", "FORBID_CONTENTS", "DEFAULT_FORBID_CONTENTS", "DATA_URI_TAGS", "DEFAULT_DATA_URI_TAGS", "URI_SAFE_ATTRIBUTES", "DEFAULT_URI_SAFE_ATTRIBUTES", "MATHML_NAMESPACE", "SVG_NAMESPACE", "HTML_NAMESPACE", "NAMESPACE", "IS_EMPTY_INPUT", "ALLOWED_NAMESPACES", "DEFAULT_ALLOWED_NAMESPACES", "stringToString", "DEFAULT_MATHML_TEXT_INTEGRATION_POINTS", "freeze", "MATHML_TEXT_INTEGRATION_POINTS", "DEFAULT_HTML_INTEGRATION_POINTS", "HTML_INTEGRATION_POINTS", "COMMON_SVG_AND_HTML_ELEMENTS", "PARSER_MEDIA_TYPE", "SUPPORTED_PARSER_MEDIA_TYPES", "DEFAULT_PARSER_MEDIA_TYPE", "CONFIG", "formElement", "isRegexOrFunction", "testValue", "Function", "_parseConfig", "cfg", "indexOf", "_resolveSetOption", "transform", "base", "ALLOWED_URI_REGEXP", "_resolveObjectOption", "customElementHandling", "svg", "svgFilters", "mathMl", "ADD_TAGS", "ADD_ATTR", "ADD_FORBID_CONTENTS", "table", "tbody", "TRUSTED_TYPES_POLICY", "previousTrustedTypesPolicy", "error", "ALL_SVG_TAGS", "ALL_MATHML_TAGS", "_checkSvgNamespace", "tagName", "parent", "parentTagName", "namespaceURI", "Boolean", "_checkMathMlNamespace", "_checkHtmlNamespace", "_checkValidNamespace", "_forceRemove", "arrayPush", "removeChild", "_", "_stripAttributeNode", "attribute", "name", "removeAttribute", "_neutralizeRoot", "_neutralizeSubtree", "childNodes", "snapshot", "arrayForEach", "child", "attributes", "i", "_removeAttribute", "attr", "getAttributeNode", "from", "setAttribute", "_stripDisallowedAttributes", "stack", "pop", "push", "_isPatchLinkageAttribute", "lcName", "lcTag", "_neutralizePatchLinkage", "processingInstruction", "comment", "data", "hasAttribute", "_initDocument", "dirty", "doc", "leadingWhitespace", "matches", "stringMatch", "dirtyPayload", "parseFromString", "documentElement", "createDocument", "innerHTML", "body", "insertBefore", "createTextNode", "call", "_createNodeIterator", "SHOW_ELEMENT", "SHOW_COMMENT", "SHOW_TEXT", "SHOW_PROCESSING_INSTRUCTION", "SHOW_CDATA_SECTION", "_stripTemplateExpressions", "stringReplace", "_scrubTemplateExpressions", "_node$querySelectorAl", "normalize", "walker", "currentNode", "nextNode", "templates", "querySelectorAll", "tmpl", "_isDocumentFragment", "_isClobbered", "realTagName", "textContent", "hasChildNodes", "documentFragment", "_isNode", "_executeHooks", "hook", "_isUnsafeNode", "firstElementChild", "LITERAL_TEXT_ELEMENTS", "LITERAL_TEXT_CLOSE", "_matchesNameCheck", "check", "_len", "_key", "_sanitizeDisallowedNode", "_isBasicCustomElement", "parentNode", "childCount", "hoisted", "_forkSharedAllowlist", "hookList", "defaultSet", "setConfigSet", "_handleHookDetachedNode", "_sanitizeElements", "beforeSanitizeElements", "uponSanitizeElement", "allowedTags", "afterSanitizeElements", "nt", "text", "_isValidAttribute", "nameIsPermitted", "stringIndexOf", "RESERVED_CUSTOM_ELEMENT_NAMES", "_applyTrustedTypesToAttribute", "getAttributeType", "_setAttributeValue", "setAttributeNS", "_sanitizeAttributes", "beforeSanitizeAttributes", "uponSanitizeAttribute", "hookEvent", "attrName", "attrValue", "keepAttr", "allowedAttributes", "forceKeepAttr", "initValue", "stringTrim", "recreatedNamedProp", "cleanWrite", "arrayPop", "afterSanitizeAttributes", "_sanitizeShadowDOM", "fragment", "shadowNode", "shadowIterator", "beforeSanitizeShadowDOM", "uponSanitizeShadowNode", "innerSr", "_sanitizeAttachedShadowRoots", "afterSanitizeShadowDOM", "shadow", "item", "isElement", "rootName", "sr", "sanitize", "importedNode", "returnNode", "inPlace", "nn", "appendChild", "firstChild", "walkRoot", "nodeIterator", "entry", "rootWasRemoved", "shadowroot", "shadowrootmode", "serializedHTML", "outerHTML", "doctype", "setConfig", "clearConfig", "isValidAttribute", "tag", "addHook", "entryPoint", "hookFunction", "removeHook", "arrayLastIndexOf", "arraySplice", "removeHooks", "removeAllHooks", "_ref", "svgDisallowed", "mathMlDisallowed", "xml", "DOCTYPE_NAME", "ELEMENT_MARKUP_PROBE", "COMMENT_MARKUP_PROBE", "FALLBACK_TAG_CLOSE", "SELF_CLOSING_TAG", "LITERAL_TEXT_ELEMENT_NAMES", "Reflect", "x", "_len2", "_key2", "forEach", "lastIndexOf", "slice", "splice", "isArray", "String", "toLowerCase", "toString", "match", "replace", "trim", "Number", "BigInt", "Symbol", "hasOwnProperty", "test", "TypeError", "cdataSection", "entityReference", "entityNode", "documentType", "notation", "map", "purifyHostElement", "createPolicy", "suffix", "ATTR_NAME", "getAttribute", "policyName", "console", "warn", "key", "fallback", "options", "makeFallback", "it", "getOwnPropertyDescriptor", "V", "fn", "toString", "it", "it", "it", "isNullOrUndefined", "it", "it", "require_is_callable", "it", "globalThis", "globalThis", "navigator", "globalThis", "process", "Deno", "match", "version", "globalThis", "it", "isNullOrUndefined", "V", "P", "isObject", "fn", "globalThis", "globalThis", "hasOwnProperty", "hasOwn", "it", "toString", "globalThis", "hasOwn", "Symbol", "name", "isObject", "isSymbol", "toPrimitive", "isSymbol", "globalThis", "isObject", "document", "it", "createElement", "toPropertyKey", "hasOwn", "getOwnPropertyDescriptor", "O", "P", "isObject", "toPropertyKey", "O", "P", "hasOwn", "it", "globalThis", "WeakMap", "keys", "globalThis", "isObject", "hasOwn", "TypeError", "WeakMap", "set", "get", "it", "TYPE", "hasOwn", "replace", "name", "options", "toString", "O", "options", "name", "x", "n", "number", "max", "min", "index", "length", "min", "O", "length", "index", "hasOwn", "O", "i", "getOwnPropertyNames", "O", "ownKeys", "it", "keys", "getOwnPropertySymbols", "hasOwn", "ownKeys", "keys", "getOwnPropertyDescriptor", "i", "normalize", "globalThis", "getOwnPropertyDescriptor", "options", "globalThis", "globalThis", "isObject", "isObject", "setPrototypeOf", "O", "hasOwn", "name", "it", "it", "O", "noop", "construct", "isNullOrUndefined", "O", "C", "S", "apply", "fn", "fn", "globalThis", "apply", "hasOwn", "html", "createElement", "set", "process", "Function", "MessageChannel", "String", "defer", "fn", "setImmediate", "clearImmediate", "globalThis", "getOwnPropertyDescriptor", "name", "next", "globalThis", "document", "process", "Promise", "node", "flush", "fn", "a", "b", "globalThis", "globalThis", "C", "$", "globalThis", "path", "setPrototypeOf", "isObject", "TypeError", "document", "process", "isThenable", "it", "domain", "name", "fn", "wrapper", "Promise", "C", "it", "isNullOrUndefined", "it", "options", "fn", "index", "length", "next", "value", "$", "C", "values", "index", "$", "$", "C", "$", "r", "isObject", "C", "x", "$", "x", "n", "t", "e", "r", "o", "a", "c", "i", "u", "globalThis", "re", "keys", "O", "O", "keys", "length", "index", "html", "activeXDocument", "length", "create", "O", "globalThis", "re", "globalThis", "re", "toString", "create", "replace", "re2", "re", "i", "match", "$", "O", "re", "regexp", "toString", "S", "position", "size", "second", "S", "index", "globalThis", "RegExp", "O", "key", "hasOwn", "it", "R", "S", "isObject", "toString", "stringIndexOf", "MATCH", "match", "regexp", "O", "S", "A", "n", "replace", "position", "m", "symbols", "match", "n", "f", "apply", "isObject", "toString", "max", "min", "stringIndexOf", "it", "re", "_", "replace", "O", "S", "global", "i", "position", "j", "isObject", "MATCH", "it", "isRegExp", "isRegExp", "it", "MATCH", "regexp", "$", "getOwnPropertyDescriptor", "toString", "min", "index", "create", "F", "hasOwn", "O", "isObject", "create", "getPrototypeOf", "create", "NAME", "next", "$", "getPrototypeOf", "setPrototypeOf", "NAME", "next", "keys", "values", "entries", "index", "values", "globalThis", "COLLECTION_NAME", "_defineProperty", "e", "r", "t", "memo", "O", "self", "length", "index", "i", "$", "length", "$", "getOwnPropertyDescriptor", "toString", "slice", "min", "end", "isObject", "toString", "min", "stringIndexOf", "re", "O", "S", "C", "p", "q", "A", "z", "e", "i", "now", "root", "i", "next", "e", "fn", "toString", "replace", "rtrim", "TYPE", "$", "trim", "bits", "i", "re", "r", "g", "b", "j", "xml", "e", "$", "$", "toString", "stringIndexOf", "isArray", "$", "isArray", "reverse", "__extends", "d", "b", "TypeError", "String", "__", "this", "constructor", "extendStatics", "prototype", "Object", "create", "encodeSVGPath", "commands", "str", "Array", "isArray", "i", "length", "command", "type", "SVGPathData", "CLOSE_PATH", "HORIZ_LINE_TO", "relative", "x", "VERT_LINE_TO", "y", "MOVE_TO", "LINE_TO", "CURVE_TO", "x1", "y1", "x2", "y2", "SMOOTH_CURVE_TO", "QUAD_TO", "SMOOTH_QUAD_TO", "ARC", "Error", "rX", "rY", "xRot", "lArcFlag", "sweepFlag", "rotate", "_a", "rad", "Math", "cos", "sin", "assertNumbers", "t", "r", "_i", "numbers", "PI", "annotateArcCommand", "c", "abs", "x1_", "y1_", "testValue", "pow", "sqrt", "c_ScaleTemp", "c_Scale", "max", "cx_", "cy_", "cRot", "cX", "cY", "phi1", "atan2", "phi2", "intersectionUnitCircleLine", "a", "termSqr", "term", "lerp", "arcAt", "phiDeg", "bezierRoot", "x0", "x3", "EPS", "x01", "x12", "p", "q", "PRECISION", "discriminantX4", "root", "bezierAt", "s", "SVGPathDataTransformer", "DEG", "isWhiteSpace", "isDigit", "TransformableSVG", "COMMAND_ARG_COUNTS", "setPrototypeOf", "__proto__", "hasOwnProperty", "call", "TO_ABS", "INFO", "prevX", "prevY", "NORMALIZE_ST", "prevCurveC2X", "NaN", "prevCurveC2Y", "prevQuadCX", "prevQuadCY", "isNaN", "QT_TO_C", "prevQuadX1", "prevQuadY1", "f", "prevXAbs", "prevYAbs", "pathStartXAbs", "pathStartYAbs", "result", "MATRIX", "e", "pathStartX", "origX1", "origX2", "comRel", "sqr", "det", "sinRot", "cosRot", "xCurve", "yCurve", "A", "B", "C", "A1", "B1", "C1", "newXRot", "newSinRot", "newCosRot", "CLONE", "key", "roundVal", "rf", "val", "round", "normalizeZ", "normalizeH", "normalizeV", "pathStartY", "skip", "x1Rel", "y1Rel", "LINE_COMMANDS", "xRel", "yRel", "x2Rel", "y2Rel", "dX", "dY", "atan", "xOffset", "yOffset", "arc", "y0", "phiMin", "min", "deltaPhi", "partCount", "ceil", "phiStart", "phiEnd", "deltaPhi_1", "tan", "_e", "_f", "_g", "transform", "xTemp", "yTemp", "_b", "_c", "_d", "clone", "toAbs", "qtToC", "normST", "fixX", "absX", "maxX", "minX", "fixY", "absY", "maxY", "minY", "DRAWING_COMMANDS", "T", "xDerivRoots_1", "derivRoot", "yDerivRoots_1", "xRotRad", "x90", "y90", "phiMin_1", "phiMax", "normalizeXiEta", "xi", "eta", "phi", "xDerivRoots_2", "map", "H", "yDerivRoots_2", "Infinity", "ROUND", "TO_REL", "NORMALIZE_HVZ", "A_TO_C", "eps", "SANITIZE", "TRANSLATE", "SCALE", "ROTATE", "SKEW_X", "SKEW_Y", "X_AXIS_SYMMETRY", "Y_AXIS_SYMMETRY", "ANNOTATE_ARCS", "charCodeAt", "_super", "_this", "SVGPathDataParser", "parse", "curArgs", "canParseCommandOrComma", "SyntaxError", "finishCommand", "push", "isAArcFlag", "curCommandType", "curNumber", "isEndingDigit", "curNumberHasExp", "curNumberHasExpDigits", "curNumberHasDecimal", "Number", "curCommandRelative", "value", "chunk", "parsedCommands_1", "getPrototypeOf", "cT", "content", "encode", "boundsTransform", "CALCULATE_BOUNDS", "transformFunction", "newCommands", "transformedCommand", "path", "parser", "finish", "toString", "R", "_typeof", "obj", "_classCallCheck", "instance", "width", "height", "context", "e", "i", "y", "p", "r", "g", "b", "a", "x", "_a2", "_b", "_a", "BlurStack", "Element", "Parser", "Transform", "index", "width", "height", "node", "_ref", "DOMParser", "fetch", "name", "color", "v", "u", "t", "fontFamily", "fontStyle", "fontWeight", "keys", "symbols", "i", "_defineProperty", "x", "y", "rgba", "m", "c", "a", "m2", "m3", "ownKeys", "_objectSpread", "noop", "document", "regexp", "n", "RGBColor", "d", "point", "path", "screen", "style", "window", "_", "now", "requestAnimationFrame", "shouldUpdate", "xml", "parser", "err", "numbers", "b", "e", "f", "g", "h", "transform", "styles", "toRestore", "fontSize", "set", "x2", "y2", "p2", "p3", "t1", "t2", "from", "j", "offset", "l", "s", "dir", "r", "text", "char", "fill", "values", "p", "to", "chars", "letterSpacing", "start", "end", "pt", "length", "match", "svg", "fonts", "css", "createCanvas", "createImage", "options", "React", "React", "React", "import_react", "React", "Symbol", "dark", "React", "React", "Wrapper", "line", "keys", "match", "left", "right", "parse", "options", "parser", "stream", "options", "transformOptions", "match", "encoding", "i", "err", "node", "comment", "line", "options", "transformOptions", "util", "import_encoding", "options", "options", "line", "block", "msgstr", "i", "ct", "contentType", "r", "encoding", "import_encoding", "Parser", "position", "length", "i", "encoding", "match", "import_safe_buffer", "import_encoding", "import_content_type", "Compiler", "context", "result", "ct", "contentType", "encoding", "size", "i", "parse", "stream", "import_encoding", "import_content_type", "import_encoding", "sets", "set", "l", "getPlurals", "options", "sets", "rules", "set", "l", "_typeof", "o", "e", "r", "t", "i", "isFuzzy", "isUnsafeKey", "toArrayIfNeeded", "_ref", "emptyOrObject", "options", "getI18nextPluralExtension", "getGettextValues", "locale", "values", "keys", "x", "a", "c", "k", "m", "context", "fn", "locale", "options", "gt", "Gettext", "domain", "Role", "d", "size", "a", "b", "buffer", "hex", "text", "start", "end", "navigator", "crypto", "console", "i", "c", "offset", "position", "length", "encoding", "options", "o", "copy", "cache", "p", "le", "left", "right", "index", "stringMatch", "e", "match", "j", "k", "time", "options", "i", "t", "start", "end", "constants.JS_INT_MAX", "constants.JS_INT_MIN", "buffer", "isArray", "index", "size", "name", "constants.BSON_DATA_STRING", "constants.BSON_DATA_OID", "constants.BSON_DATA_INT", "constants.BSON_DATA_NUMBER", "constants.BSON_DATA_DATE", "constants.BSON_DATA_BOOLEAN", "constants.BSON_DATA_OBJECT", "constants.BSON_DATA_ARRAY", "constants.BSON_DATA_UNDEFINED", "constants.BSON_DATA_NULL", "constants.BSON_DATA_LONG", "dataview", "constants.BSON_DATA_DECIMAL128", "constants.BSON_DATA_BINARY", "constants.BSON_BINARY_SUBTYPE_UUID_NEW", "constants.BSON_DATA_REGEXP", "constants.BSON_DATA_SYMBOL", "constants.BSON_DATA_TIMESTAMP", "constants.BSON_DATA_MIN_KEY", "constants.BSON_DATA_MAX_KEY", "constants.BSON_DATA_CODE", "constants.BSON_DATA_CODE_W_SCOPE", "constants.BSON_DATA_DBPOINTER", "copy", "constants.BSON_INT32_MAX", "constants.BSON_INT32_MIN", "_", "constants.BSON_BINARY_SUBTYPE_DEFAULT", "path", "constants.BSON_MAJOR_VERSION", "keys", "k", "c", "d", "date", "v", "match", "o", "parse", "text", "stringify", "serialize", "options", "buffer", "options", "OwnerType", "VideoAttribute", "DocumentAttribute", "UtilsShared", "char", "from", "year", "getTimestampOfRandomID", "length", "i", "character", "n", "j", "s", "x", "y", "l", "m", "c", "q", "a", "b", "t", "d", "safelyConvertStringToBigInt", "e", "value", "domain", "isProduction", "sleep", "isValidEmail", "characters", "isValidFullName", "token", "document", "padding", "width", "height", "g", "node", "x", "y", "z", "index", "p2", "date", "year", "month", "day", "hours", "minutes", "seconds", "DataUnit", "toString", "unit", "TimeUnit", "i", "changeLanguage", "i", "seconds", "date", "format", "minutes", "seconds", "LanguageDetect", "e", "char", "character", "map", "a", "b", "length", "chars", "Wrapper", "React", "version", "changeLanguage", "import_client", "React", "React", "React", "import_react", "React", "React", "React", "Wrapper", "import_react", "Wrapper", "Input", "index", "e", "i", "React", "React", "init_Button", "Wrapper", "Button", "e", "React", "isString", "isPlainObject", "isElement", "isRegExp", "isNaN", "_e", "max", "delimiter", "i", "e", "isString", "isRegExp", "parser", "i", "name", "options", "height", "i", "isString", "getComponentName", "i", "console", "logger", "name", "protocol", "path", "match", "from", "name", "isElement", "keys", "isPlainObject", "e", "a", "b", "p", "i", "line", "parser", "getFunctionName", "fn", "e", "e", "getFunctionName", "log", "crypto", "_", "c", "values", "err", "WINDOW", "options", "handlers", "e", "name", "WINDOW", "WINDOW", "e", "err", "options", "line", "column", "e", "WINDOW", "WINDOW", "from", "WINDOW", "isString", "e", "e2", "memoize", "i", "err", "memo", "memoize", "isNaN", "getFunctionName", "States", "_", "e", "buffer", "timeout", "parseUrl", "match", "performance", "performance", "threshold", "append", "next", "e", "offset", "buffer", "buffer", "name", "version", "now", "DEBUG_BUILD", "index", "DEBUG_BUILD", "context", "duration", "tags", "options", "i", "e", "b", "context", "context", "end", "options", "tags", "tags", "name", "context", "isPlainObject", "_span", "version", "top", "e", "tags", "name", "context", "DEBUG_BUILD", "endSession", "options", "protocol", "name", "k", "options", "defaultIntegrations", "findIndex", "DEBUG_BUILD", "findIndex", "i", "name", "fn", "options", "DEBUG_BUILD", "timeout", "trace", "isError", "isErrorEvent", "isPlainObject", "e", "options", "DEBUG_BUILD", "top", "options", "buffer", "flush", "timeout", "DEBUG_BUILD", "options", "name", "options", "DEBUG_BUILD", "name", "e", "i", "INTEGRATION_NAME", "context", "e", "INTEGRATION_NAME", "options", "INTEGRATIONS", "WINDOW", "fn", "options", "wrapper", "e", "DEBUG_BUILD", "exceptionFromError", "parseStackFrames", "e", "eventFromUnknownInput", "eventFromMessage", "name", "isPlainObject", "keys", "options", "WINDOW", "eventFromMessage", "DEBUG_BUILD", "WINDOW", "document", "e", "DEBUG_BUILD", "options", "e", "options", "line", "INTEGRATION_NAME", "options", "DEBUG_BUILD", "getComponentName", "e", "from", "parseUrl", "WINDOW", "INTEGRATION_NAME", "_shouldDropEvent", "DEBUG_BUILD", "i", "INTEGRATION_NAME", "options", "line", "column", "isString", "eventFromUnknownInput", "e", "e2", "name", "DEBUG_BUILD", "INTEGRATION_NAME", "WINDOW", "DEFAULT_KEY", "DEFAULT_LIMIT", "INTEGRATION_NAME", "_linkedErrorsIntegration", "options", "exceptionFromError", "linkedErrorsIntegration", "LinkedErrors", "INTEGRATION_NAME", "options", "WINDOW", "getFunctionName", "fn", "err", "e", "linkedErrorsIntegration", "init", "options", "WINDOW", "WINDOW", "DEBUG_BUILD", "from", "WINDOW", "CoreIntegrations", "BrowserIntegrations", "init", "options", "browserInit", "AdapterLog", "buffer", "StepType", "StepAttribute", "DestinationType", "React", "index", "i", "duration", "path", "name", "e", "stream", "path", "seconds", "buffer", "index", "path", "e", "stream", "buffer", "x", "y", "z", "UtilsBSON", "index", "options", "AssetType", "token", "size", "buffer", "buffer", "size", "buffer", "path", "file", "index", "i", "getScale", "buffer", "x", "y", "z", "width", "height", "getScale", "path", "context", "size", "line", "getNodeName", "i", "offset", "buffer", "React", "import_react", "import_react_dom", "Wrapper", "e", "ReactDOM", "Wrapper", "init_Button", "i", "index", "Button", "init_Tooltip", "import_react", "React", "React", "init_Close", "Wrapper", "Row", "e", "Tooltip", "getNodeName", "React", "init_Button", "import_react", "import_react", "Wrapper", "Inner", "Slider", "valueToPercent", "percentToValue", "range", "e", "React", "Wrapper", "Row", "React", "Slider", "React", "React", "init_Button", "import_react", "Wrapper", "React", "ButtonsContainer", "document", "_", "getScale", "Button", "import_react", "import_react", "import_react", "React", "Wrapper", "Row", "Metric", "Unit", "SubLabel", "React", "Slider", "React", "Wrapper", "Input", "e", "createTheme_default", "React", "index", "values", "i", "Wrapper", "Row", "width", "position", "getScale", "index", "Wrapper", "Row", "_", "Button", "React", "import_react", "init_Button", "ButtonWrapper", "React", "Button", "init_Tooltip", "React", "React", "import_react", "React", "Title", "Content", "e", "Wrapper", "index", "Wrapper", "init_Button", "Wrapper", "ButtonWrapper", "PREFIX", "Tooltip", "Button", "import_react", "import_react", "React", "isPlaying", "_", "React", "range", "duration", "React", "Overlay", "import_react", "init_Tooltip", "import_react", "React", "MTConnect", "Representation", "Category", "getEngine", "size", "buffer", "buffer", "size", "React", "now", "options", "Tooltip", "e", "import_react", "React", "import_react", "hasNativePerformanceNow", "performance", "now", "Date", "cancelTimeout", "timeoutID", "cancelAnimationFrame", "id", "requestTimeout", "callback", "delay", "start", "tick", "call", "requestAnimationFrame", "size", "getScrollbarSize", "recalculate", "div", "document", "createElement", "style", "width", "height", "overflow", "body", "appendChild", "offsetWidth", "clientWidth", "removeChild", "cachedRTLResult", "getRTLOffsetType", "outerDiv", "outerStyle", "direction", "innerDiv", "innerStyle", "scrollLeft", "IS_SCROLLING_DEBOUNCE_INTERVAL", "defaultItemKey", "_ref", "columnIndex", "data", "rowIndex", "devWarningsOverscanCount", "devWarningsOverscanRowsColumnsCount", "devWarningsTagName", "process", "window", "WeakSet", "createGridComponent", "getColumnOffset", "getColumnStartIndexForOffset", "getColumnStopIndexForStartIndex", "getColumnWidth", "getEstimatedTotalHeight", "getEstimatedTotalWidth", "getOffsetForColumnAndAlignment", "getOffsetForRowAndAlignment", "getRowHeight", "getRowOffset", "getRowStartIndexForOffset", "getRowStopIndexForStartIndex", "initInstanceProps", "shouldResetStyleCacheOnItemSizeChange", "validateProps", "Grid", "props", "_instanceProps", "_resetIsScrollingTimeoutId", "_outerRef", "state", "instance", "isScrolling", "horizontalScrollDirection", "initialScrollLeft", "scrollTop", "initialScrollTop", "scrollUpdateWasRequested", "verticalScrollDirection", "_callOnItemsRendered", "memoizeOne", "overscanColumnStartIndex", "overscanColumnStopIndex", "overscanRowStartIndex", "overscanRowStopIndex", "visibleColumnStartIndex", "visibleColumnStopIndex", "visibleRowStartIndex", "visibleRowStopIndex", "onItemsRendered", "_callOnScroll", "onScroll", "_getItemStyle", "columnWidth", "rowHeight", "itemStyleCache", "_getItemStyleCache", "key", "hasOwnProperty", "offset", "isRtl", "position", "left", "undefined", "right", "top", "_", "__", "___", "_onScroll", "event", "currentTarget", "clientHeight", "scrollHeight", "scrollWidth", "setState", "prevState", "calculatedScrollLeft", "Math", "max", "min", "calculatedScrollTop", "_resetIsScrollingDebounced", "_outerRefSetter", "ref", "outerRef", "current", "_resetIsScrolling", "getDerivedStateFromProps", "nextProps", "validateSharedProps", "scrollTo", "scrollToItem", "align", "columnCount", "rowCount", "scrollbarSize", "estimatedTotalHeight", "estimatedTotalWidth", "horizontalScrollbarSize", "verticalScrollbarSize", "componentDidMount", "_callPropsCallbacks", "componentDidUpdate", "componentWillUnmount", "render", "children", "className", "innerRef", "innerElementType", "innerTagName", "itemData", "itemKey", "outerElementType", "outerTagName", "useIsScrolling", "_getHorizontalRangeToRender", "columnStartIndex", "columnStopIndex", "_getVerticalRangeToRender", "rowStartIndex", "rowStopIndex", "items", "push", "_extends", "WebkitOverflowScrolling", "willChange", "pointerEvents", "overscanColumnCount", "overscanColumnsCount", "overscanCount", "overscanCountResolved", "startIndex", "stopIndex", "overscanBackward", "overscanForward", "overscanRowCount", "overscanRowsCount", "PureComponent", "defaultProps", "has", "add", "console", "warn", "Error", "DEFAULT_ESTIMATED_ITEM_SIZE", "_ref2", "rowMetadataMap", "estimatedRowHeight", "lastMeasuredRowIndex", "totalSizeOfMeasuredRows", "itemMetadata", "numUnmeasuredItems", "totalSizeOfUnmeasuredItems", "columnMetadataMap", "estimatedColumnWidth", "lastMeasuredColumnIndex", "getItemMetadata", "itemType", "index", "instanceProps", "itemMetadataMap", "itemSize", "lastMeasuredIndex", "i", "findNearestItem", "lastMeasuredItemOffset", "findNearestItemBinarySearch", "findNearestItemExponentialSearch", "high", "low", "middle", "floor", "currentOffset", "itemCount", "interval", "getOffsetForIndexAndAlignment", "scrollOffset", "estimatedTotalSize", "maxOffset", "minOffset", "round", "VariableSizeGrid", "resetAfterColumnIndex", "shouldForceUpdate", "resetAfterIndices", "resetAfterRowIndex", "forceUpdate", "devWarningsDirection", "createListComponent", "getItemOffset", "getEstimatedTotalSize", "getItemSize", "getStartIndexForOffset", "getStopIndexForStartIndex", "List", "scrollDirection", "initialScrollOffset", "overscanStartIndex", "overscanStopIndex", "visibleStartIndex", "visibleStopIndex", "layout", "isHorizontal", "offsetHorizontal", "_onScrollHorizontal", "_onScrollVertical", "_getRangeToRender", "estimatedItemSize", "totalSizeOfMeasuredItems", "VariableSizeList", "resetAfterIndex", "FixedSizeGrid", "lastColumnOffset", "middleOffset", "ceil", "lastRowOffset", "numVisibleColumns", "numVisibleRows", "FixedSizeList", "lastItemOffset", "numVisibleItems", "React", "index", "style", "text", "React", "a", "b", "import_react", "init_Tooltip", "import_react", "React", "import_react", "React", "import_react", "React", "import_react", "React", "React", "import_react", "React", "i", "import_react", "Wrapper", "React", "offset", "left", "maxWidth", "minWidth", "Wrapper", "import_react", "import_react", "React", "List", "React", "width", "height", "index", "style", "timeMS", "min", "React", "React", "import_react", "React", "import_react", "React", "init_Tooltip", "Checkbox", "left", "right", "index", "i", "Tooltip", "React", "LAYER", "React", "isEqual", "index", "React", "Video", "init_Close", "import_react", "import_react", "React", "React", "import_isEqual", "Wrapper", "React", "isEqual", "Wrapper", "EditorWrapper", "Icon", "Divider", "React", "duration", "Tooltip", "Video", "_", "index", "Wrapper", "Row", "Col", "position", "React", "React", "init_Tooltip", "Icon", "name", "Tooltip", "import_react", "React", "import_react", "React", "import_react", "React", "import_react", "React", "React", "init_Button", "import_react", "React", "React", "Wrapper", "Input", "Option", "index", "React", "import_react", "React", "Wrapper", "Select", "Icon", "e", "index", "React", "import_react", "import_react", "Wrapper", "React", "init_Button", "import_react", "Wrapper", "React", "index", "React", "index", "Button", "import_react", "init_Button", "React", "index", "canPeerEditWorld", "Button", "import_react", "init_Button", "import_isEqual", "React", "isEqual", "groupID", "index", "Button", "import_react", "init_Button", "ButtonsContainer", "React", "Button", "import_lodash", "ListContainer", "List", "sharedGroups", "sharedPeers", "role", "index", "Button", "import_react", "React", "React", "React", "import_react", "React", "import_react", "React", "import_react", "React", "import_react", "color", "width", "height", "React", "import_react", "React", "init_Tooltip", "React", "React", "init_Tooltip", "Wrapper", "defaultState", "Tooltip", "e", "import_react", "React", "import_react", "React", "import_react", "React", "React", "import_isEqual", "Wrapper", "IconContainer", "QuickActionEnum", "Video", "isEqual", "open", "name", "e", "Tooltip", "import_isEqual", "React", "stream", "format", "width", "height", "import_react_device_detect", "buffer", "options", "isEqual", "index", "buffer", "size", "n", "i", "assert", "require", "isPthread", "isNode", "e", "c", "a", "b", "offset", "Module", "name", "file", "path", "stringify", "err", "text", "max", "utils", "fs", "t", "f", "instance", "result", "implicit", "d", "handlers", "u2", "end", "count", "size", "replace", "rtn", "module", "body", "start", "init", "needed", "isAbsolute", "p", "root", "dir", "l", "r", "u", "from", "trim", "length", "buffer", "exists", "fd", "stream", "position", "entries", "s", "line", "global", "handle", "properties", "typeConverters", "dt", "fieldTypes", "o", "options", "width", "v", "wt", "ClassHandle", "left", "right", "clone", "visit", "throwBindingError", "rv", "getFunctionName", "fn", "desc", "context", "argTypes", "time", "date", "year", "sign", "hours", "minutes", "index", "create", "slice", "now", "column", "x", "y", "h", "getBoundingClientRect", "et", "fetch", "reportError", "xhr", "GLctx", "strings", "w", "z", "node", "out", "family", "type", "proto", "addr", "port", "ai", "x2", "red", "green", "blue", "alpha", "log", "values", "j", "height", "format", "border", "location", "v2", "encoder", "wasmExports", "import_react_device_detect", "path", "e", "React", "React", "React", "init_Button", "Overlay", "Inner", "Title", "ButtonsContainer", "instance", "e", "line", "index", "Button", "Wrapper", "Circle", "Wrapper", "width", "height", "e", "React", "import_react", "React", "init_Tooltip", "import_react", "React", "import_react", "React", "import_react", "React", "PLACEHOLDER_IMAGE", "Container", "e", "Tooltip", "import_react", "cancelFrame", "e", "fn", "i", "css", "style", "height", "width", "List", "React", "index", "worldID", "import_react", "React", "import_react", "React", "Wrapper", "Input", "Wrapper", "Input", "e", "React", "SelectWrapper", "OptionsWrapper", "Option", "ArrowWrapper", "Select", "left", "right", "i", "import_react", "init_Button", "React", "color", "style", "width", "height", "import_react", "React", "FilterType", "React", "Button", "import_react", "init_Button", "React", "PopoverTitle", "React", "Button", "import_isEqual", "Container", "React", "isEqual", "index", "Select", "import_react", "init_Button", "import_react", "Overlay", "MainTitle", "ButtonsContainer", "React", "Content", "WarningWrapper", "CreateWorld", "React", "index", "worldsCount", "planWarningMessage", "MainTitle", "Select", "ButtonsContainer", "Button", "React", "init_Button", "init_Tooltip", "React", "Option", "Autocomplete", "import_react", "React", "width", "height", "init_Close", "Wrapper", "IconContainer", "MainTitle", "e", "Tooltip", "Autocomplete", "_", "ButtonsContainer", "Button", "import_react", "init_Button", "React", "MainTitle", "ButtonsContainer", "Button", "import_isEqual", "Title", "isEqual", "CreateWorld", "Title", "React", "React", "name", "style", "height", "width", "React", "Wrapper", "ItemsWrapper", "Title", "Inner", "Hide", "index", "ProgressBar", "offset", "e", "index", "buffer", "import_react", "init_Button", "import_react_device_detect", "React", "Button", "React", "import_react", "init_Button", "import_react", "React", "d", "b", "p", "__assign", "t", "s", "i", "n", "P", "e", "_", "f", "y", "g", "v", "o", "m", "r", "extendStatics", "d", "b", "p", "__extends", "__assign", "t", "s", "i", "n", "__awaiter", "P", "e", "__generator", "_", "f", "y", "g", "v", "__spreadArrays", "r", "k", "a", "j", "__spreadArrays", "HeaderNames", "PersistentCacheKeys", "AADAuthorityConstants", "AADServerParamKeys", "ClaimsRequestKeys", "SSOTypes", "ResponseMode", "GrantType", "CacheAccountType", "Separators", "CredentialType", "CacheSchemaType", "CacheType", "AuthorityMetadataSource", "AuthenticationScheme", "PasswordGrantConstants", "ResponseCodes", "RegionDiscoverySources", "RegionDiscoveryOutcomes", "CacheOutcome", "JsonTypes", "__extends", "AuthError", "__extends", "ClientAuthError", "StringUtils", "e", "decode", "s", "_a", "LogLevel", "Logger", "options", "log", "AzureCloudInstance", "CredentialEntity", "__extends", "ClientConfigurationError", "ScopeSet", "__spreadArrays", "e", "crypto", "e", "AuthorityType", "AccountEntity", "_a", "_b", "_e", "logger", "e", "AuthToken", "crypto", "err", "CacheManager", "_a", "__extends", "DefaultStorageClass", "_a", "__assign", "__extends", "ServerError", "ThrottlingUtils", "_a", "time", "NetworkManager", "options", "_a", "CcsCredentialType", "BaseClient", "Logger", "e", "_a", "RequestValidator", "e", "RequestParameterBuilder", "__spreadArrays", "e", "__extends", "IdTokenEntity", "TimeUtils", "offset", "t", "__extends", "AccessTokenEntity", "_a", "_b", "__extends", "RefreshTokenEntity", "__extends", "InteractionRequiredAuthError", "CacheRecord", "ProtocolUtils", "e", "UrlString", "e", "match", "hash", "KeyLocation", "PopTokenGenerator", "_b", "_a", "__assign", "AppMetadataEntity", "TokenCacheContext", "ResponseHandler", "logger", "_a", "_e", "_b", "__extends", "AuthorizationCodeClient", "_a", "__assign", "e", "_b", "__spreadArrays", "BaseClient", "__extends", "RefreshTokenClient", "_a", "e", "__assign", "BaseClient", "__extends", "SilentFlowClient", "_a", "_b", "_e", "BaseClient", "ProtocolMode", "AuthorityMetadataEntity", "RegionDiscovery", "options", "_a", "version", "Authority", "index", "_a", "_b", "e", "options", "match", "i", "__assign", "AuthorityFactory", "_a", "ServerTelemetryEntity", "ThrottlingEntity", "ServerTelemetryManager", "i", "BrowserCacheLocation", "HTTP_REQUEST_TYPE", "TemporaryCacheKeys", "InMemoryCacheKeys", "ApiId", "InteractionType", "InteractionStatus", "WrapperSKU", "MathUtils", "hex", "GuidGenerator", "buffer", "err", "hex", "r", "i", "BrowserStringUtils", "i", "Base64Encode", "Base64Decode", "BrowserAuthError", "PkceGenerator", "_a", "buffer", "e", "BrowserCrypto", "logger", "e", "DatabaseStorage", "e", "_a", "MemoryStorage", "AsyncMemoryStorage", "logger", "_a", "CryptoOps", "logger", "_a", "_b", "BrowserConfigurationAuthError", "BrowserStorage", "BrowserProtocolUtils", "e", "BrowserCacheManager", "logger", "e", "values", "index", "version", "_a", "name", "i", "FetchClient", "options", "_b", "_a", "XhrClient", "options", "e", "BrowserUtils", "NavigationClient", "options", "_a", "name", "version", "EventType", "EventHandler", "logger", "e", "BaseInteractionClient", "logger", "version", "_a", "_b", "StandardInteractionClient", "logger", "_a", "version", "hash", "_b", "PopupUtils", "logger", "e", "width", "_a", "height", "_b", "top", "left", "InteractionHandler", "_a", "e", "PopupHandler", "PopupClient", "e", "_a", "hash", "RedirectHandler", "_a", "RedirectClient", "_a", "hash", "e", "SilentHandler", "_a", "_b", "timeout", "e", "SilentIframeClient", "logger", "_a", "hash", "SilentRefreshClient", "_a", "_b", "e", "TokenCache", "logger", "options", "HybridSpaAuthorizationCodeClient", "SilentAuthCodeClient", "logger", "_a", "ClientApplication", "Logger", "name", "version", "hash", "e", "_a", "logger", "SilentCacheClient", "_a", "_b", "PublicClientApplication", "_a", "React", "Wrapper", "import_react", "init_Button", "Overlay", "Inner", "ButtonWrapper", "React", "e", "Button", "import_react", "React", "import_react", "Hide", "React", "import_react", "import_react", "init_Tooltip", "Wrapper", "InfoIcon", "React", "Tooltip", "import_react", "React", "Wrapper", "React", "InfoIcon", "Hide", "React", "index", "options", "Select", "ButtonsContainer", "React", "token", "e", "Button", "import_react", "init_Button", "SwitchContainer", "React", "InfoIcon", "Button", "import_react", "import_react", "Container", "Wrap", "React", "index", "prev", "digits", "offset", "init_Button", "React", "Button", "import_react", "init_Button", "init_Tooltip", "import_react", "init_Button", "init_Close", "Overlay", "LoadingWrapper", "buffer", "React", "index", "Button", "import_react", "React", "import_react", "React", "Info", "React", "token", "Tooltip", "e", "Button", "import_react", "init_Button", "React", "e", "Button", "SortCriteriaPeers", "PeerAttribute", "import_react", "index", "i", "k", "n", "from", "a", "b", "index", "text", "x", "isProduction", "prefix", "path", "prefix", "hash", "location", "_extends", "e", "a", "b", "fn", "supportsHistory", "_ref", "state", "replace", "n", "block", "encodePath", "decodePath", "encodedPath", "clamp", "index", "entries", "MAX_SIGNED_31_BIT_INT", "commonjsGlobal", "globalThis", "window", "global", "getUniqueId", "key", "objectIs", "x", "y", "createEventEmitter", "value", "handlers", "on", "handler", "push", "off", "filter", "h", "get", "set", "newValue", "changedBits", "forEach", "onlyChild", "children", "Array", "isArray", "createReactContext", "defaultValue", "calculateChangedBits", "contextProp", "Provider", "emitter", "props", "getChildContext", "_ref", "componentWillReceiveProps", "nextProps", "oldValue", "process", "warning", "render", "React", "Component", "childContextTypes", "PropTypes", "object", "isRequired", "Consumer", "observedBits", "state", "getValue", "onUpdate", "setState", "undefined", "componentDidMount", "context", "componentWillUnmount", "contextTypes", "createContext", "createNamedContext", "name", "displayName", "historyContext", "Router", "computeRootMatch", "pathname", "path", "url", "params", "isExact", "location", "history", "_isMounted", "_pendingLocation", "staticContext", "unlisten", "listen", "RouterContext", "match", "HistoryContext", "propTypes", "node", "prototype", "componentDidUpdate", "prevProps", "MemoryRouter", "createHistory", "initialEntries", "array", "initialIndex", "number", "getUserConfirmation", "func", "keyLength", "Lifecycle", "onMount", "call", "onUnmount", "Prompt", "message", "when", "invariant", "method", "block", "self", "release", "messageType", "oneOfType", "string", "bool", "cache", "cacheLimit", "cacheCount", "compilePath", "generator", "pathToRegexp", "compile", "generatePath", "pretty", "Redirect", "computedMatch", "to", "replace", "createLocation", "_extends", "prevLocation", "locationsAreEqual", "from", "options", "cacheKey", "end", "strict", "sensitive", "pathCache", "keys", "regexp", "result", "matchPath", "exact", "paths", "concat", "reduce", "matched", "exec", "values", "memo", "index", "isEmptyChildren", "Children", "count", "evalChildrenDev", "Route", "component", "createElement", "propName", "isValidElementType", "Error", "arrayOf", "addLeadingSlash", "charAt", "addBasename", "basename", "stripBasename", "base", "indexOf", "substr", "length", "createURL", "createPath", "staticHandler", "methodName", "noop", "StaticRouter", "handlePush", "navigateTo", "handleReplace", "handleListen", "handleBlock", "action", "rest", "createHref", "go", "goBack", "goForward", "Switch", "element", "child", "isValidElement", "cloneElement", "withRouter", "C", "wrappedComponentRef", "remainingProps", "WrappedComponent", "hoistStatics", "useContext", "useHistory", "useLocation", "useParams", "window", "global", "key", "buildNames", "cjs", "esm", "umd", "process", "initialBuildName", "secondaryBuildName", "Error", "BrowserRouter", "history", "createHistory", "props", "render", "React", "children", "Component", "propTypes", "basename", "PropTypes", "string", "node", "forceRefresh", "bool", "getUserConfirmation", "func", "keyLength", "number", "prototype", "componentDidMount", "warning", "HashRouter", "hashType", "oneOf", "resolveToLocation", "to", "currentLocation", "normalizeToLocation", "createLocation", "forwardRefShim", "C", "forwardRef", "isModifiedEvent", "event", "metaKey", "altKey", "ctrlKey", "shiftKey", "LinkAnchor", "_ref", "forwardedRef", "innerRef", "navigate", "onClick", "rest", "target", "_extends", "ex", "preventDefault", "defaultPrevented", "button", "ref", "displayName", "Link", "component", "replace", "RouterContext", "context", "invariant", "location", "href", "createHref", "isDuplicateNavigation", "createPath", "method", "push", "createElement", "toType", "oneOfType", "object", "refType", "shape", "current", "any", "isRequired", "joinClassnames", "classnames", "filter", "i", "join", "NavLink", "ariaCurrent", "activeClassName", "activeStyle", "classNameProp", "className", "exact", "isActiveProp", "isActive", "locationProp", "sensitive", "strict", "styleProp", "style", "toLocation", "path", "pathname", "escapedPath", "match", "matchPath", "ariaCurrentType", "import_react", "React", "Wrapper", "Select", "index", "e", "Menu", "LogoWrapper", "import_react", "import_react", "React", "import_react", "React", "import_react", "TypeOS", "FilterDateOptions", "date", "i", "defaultDayjs", "customParseFormatPlugin", "localizedFormatPlugin", "isBetweenPlugin", "dayjs", "locale", "instance", "format", "t", "_", "a", "b", "B", "unit", "start", "end", "year", "month", "date", "hours", "minutes", "seconds", "milliseconds", "years", "_extends", "weekOfYear", "r", "e", "t", "f", "n", "o", "clsx", "clsx_default", "React", "React", "import_prop_types", "import_jsx_runtime", "_excluded", "LocalizationProvider", "useThemeProps", "_extends", "_jsx", "PropTypes", "_extends", "time", "hours", "minutes", "seconds", "_extends", "now", "React", "init_Typography", "isHostComponent", "appendOwnerState", "isHostComponent", "extractEventHandlers", "resolveComponentProps", "React", "useForkRef", "instance", "omitEventHandlers", "mergeSlotProps", "joinedClasses", "clsx_default", "mergedStyle", "props", "extractEventHandlers", "omitEventHandlers", "useSlotProps", "resolveComponentProps", "mergeSlotProps", "useForkRef", "appendOwnerState", "init_IconButton", "init_utils", "React", "import_jsx_runtime", "_jsx", "_jsxs", "import_jsx_runtime", "_excluded", "_excluded2", "_excluded3", "styles", "theme", "_extends", "useUtilityClasses", "PickersArrowSwitcher", "useTheme", "useThemeProps", "useSlotProps", "_jsxs", "clsx_default", "_jsx", "date", "React", "init_useEventCallback", "previousView", "React", "month", "now", "date", "a", "b", "year", "months", "date", "start", "React", "init_useEventCallback", "init_useControlled", "_ref", "_ref2", "name", "date", "_excluded", "_ref", "a", "b", "React", "import_prop_types", "init_ButtonBase", "import_jsx_runtime", "_excluded", "useUtilityClasses", "theme", "_extends", "overridesResolver", "styles", "noop", "useThemeProps", "day", "_jsx", "clsx_default", "PropTypes", "PickersDay", "now", "init_useMediaQuery", "React", "init_useEventCallback", "init_Typography", "React", "init_composeClasses", "init_esm", "import_jsx_runtime", "_excluded", "useUtilityClasses", "_", "styles", "theme", "useThemeProps", "useTheme", "_jsx", "clsx_default", "_extends", "React", "day", "import_jsx_runtime", "_excluded", "_excluded2", "useUtilityClasses", "_", "styles", "theme", "_extends", "_ref", "_ref2", "day", "now", "Day", "PickersDay", "useSlotProps", "_jsx", "useThemeProps", "useTheme", "date", "handleKeyDown", "_jsxs", "weekday", "i", "clsx_default", "index", "React", "init_useEventCallback", "_extends", "newDate", "React", "import_prop_types", "React", "init_esm", "init_Fade", "init_composeClasses", "import_jsx_runtime", "useUtilityClasses", "_", "styles", "useThemeProps", "theme", "useTheme", "_jsx", "clsx_default", "React", "import_prop_types", "init_esm", "React", "import_jsx_runtime", "_excluded", "useUtilityClasses", "_", "styles", "theme", "_extends", "PickersMonth", "useThemeProps", "_jsx", "import_jsx_runtime", "_excluded", "useUtilityClasses", "name", "useThemeProps", "_extends", "styles", "MonthCalendar", "now", "theme", "month", "newDate", "handleKeyDown", "_jsx", "clsx_default", "PropTypes", "React", "import_prop_types", "init_esm", "React", "import_jsx_runtime", "_excluded", "useUtilityClasses", "_", "styles", "theme", "_extends", "PickersYear", "useThemeProps", "_jsx", "clsx_default", "import_jsx_runtime", "_excluded", "useUtilityClasses", "name", "useThemeProps", "_extends", "styles", "YearCalendar", "now", "theme", "year", "newDate", "handleKeyDown", "_jsx", "clsx_default", "PropTypes", "React", "import_prop_types", "init_Fade", "init_IconButton", "import_jsx_runtime", "_excluded", "_excluded2", "useUtilityClasses", "_", "styles", "theme", "_extends", "PickersCalendarHeader", "_ref", "_ref2", "useThemeProps", "month", "useSlotProps", "_jsxs", "clsx_default", "_jsx", "PropTypes", "import_jsx_runtime", "_excluded", "useUtilityClasses", "name", "useThemeProps", "_extends", "_jsx", "styles", "DateCalendar", "_ref", "useSlotProps", "newDate", "day", "_jsxs", "clsx_default", "PropTypes", "import_react", "import_dayjs", "import_isBetween", "dayjs", "isBetweenPlugin", "PickersDay", "day", "React", "date", "UtilsStats", "time", "getMedian", "start", "end", "getPeerWorldIDs", "getWorldGroups", "end", "start", "date", "dayOfTheWeek", "i", "a", "b", "index", "import_react_device_detect", "entityByName", "groupNameByID", "peerNameByID", "index", "selectedGroupID", "React", "Select", "import_react", "import_react", "import_react", "_typeof", "obj", "filterProps", "_isObject", "adaptEventHandlers", "e", "getEventHandlerOfChild", "index", "adaptEventsOfChild", "_extends", "i", "_objectWithoutPropertiesLoose", "width", "height", "style", "classNames", "React", "import_react", "import_classnames", "_extends", "i", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "React", "classNames", "import_react", "import_react", "import_classnames", "import_react", "x", "y", "x2", "y2", "r", "l", "w", "h", "x", "pi", "tau", "slice", "x", "context", "x", "y", "p", "x", "y", "defined", "context", "line", "i", "n", "d", "buffer", "_", "defined", "context", "i", "j", "k", "n", "d", "buffer", "_", "context", "size", "r", "pi", "tau", "context", "size", "r", "context", "size", "y", "x", "pi", "tau", "context", "size", "r", "x", "y", "i", "a", "c", "s", "context", "size", "w", "x", "context", "size", "y", "context", "size", "r", "x2", "y2", "size", "context", "buffer", "_", "x", "y", "context", "context", "x", "y", "context", "x", "y", "context", "x", "y", "x", "x2", "y2", "p", "t", "h", "point", "t0", "t1", "context", "y", "context", "x", "y", "n", "i", "m", "a", "b", "r", "context", "t", "x", "y", "order", "n", "i", "j", "m", "none_default", "n", "o", "d", "keys", "order", "none_default", "offset", "i", "n", "j", "_", "order", "n", "i", "j", "m", "y", "order", "n", "j", "m", "i", "y", "order", "n", "m", "y", "j", "i", "s2", "s3", "k", "import_classnames", "_typeof", "obj", "_extends", "i", "instance", "_setPrototypeOf", "o", "p", "self", "_assertThisInitialized", "e", "_getPrototypeOf", "getSymbolFactory", "name", "_upperFirst", "calculateAreaSize", "size", "Symbols", "getPath", "React", "classNames", "_typeof", "obj", "_extends", "i", "keys", "symbols", "_defineProperty", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "SIZE", "DefaultLegendContent", "color", "React", "classNames", "mathSign", "isPercent", "_isString", "isNumber", "_isNumber", "_isNaN", "isNumOrStr", "uniqueId", "prefix", "getPercentValue", "index", "getAnyElementOfObject", "keys", "hasDuplicate", "_isArray", "cache", "i", "interpolateNumber", "t", "_get", "_typeof", "obj", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "_uniqBy", "_isFunction", "React", "Legend", "style", "margin", "width", "height", "node", "import_isNil", "import_isFunction", "import_uniqBy", "import_react", "import_react", "import_prop_types", "getOwnPropertyNames", "getOwnPropertySymbols", "hasOwnProperty", "isEqual", "a", "b", "cache", "getOwnPropertyDescriptor", "index", "areDatesEqual", "size", "properties", "areArrayBuffersEqual", "areArraysEqual", "areDataViewsEqual", "areErrorsEqual", "areFunctionsEqual", "areMapsEqual", "areNumbersEqual", "areObjectsEqual", "arePrimitiveWrappersEqual", "areRegExpsEqual", "areSetsEqual", "areTypedArraysEqual", "areUrlsEqual", "areObjectsEqualStrictDefault", "areArraysEqualDefault", "areDatesEqualDefault", "areMapsEqualDefault", "areObjectsEqualDefault", "areSetsEqualDefault", "areTypedArraysEqualDefault", "options", "timeout", "shouldUpdate", "now", "_typeof", "obj", "o", "n", "i", "handleChange", "setStyle", "styles", "start", "style", "_typeof", "obj", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "_toPropertyKey", "_toPrimitive", "getIntersectionKeys", "a", "b", "c", "identity", "getDashCase", "name", "v", "generatePrefixStyle", "mapObject", "fn", "_objectSpread", "_defineProperty", "translateStyle", "style", "getTransitionVal", "duration", "easing", "warn", "format", "a", "b", "c", "d", "e", "f", "i", "_arrayWithHoles", "_unsupportedIterableToArray", "_nonIterableRest", "_e", "err", "_iterableToArray", "o", "_arrayLikeToArray", "n", "cubicBezierFactor", "c2", "multyTime", "t", "cubicBezier", "derivativeCubicBezier", "configBezier", "x2", "y2", "easing", "x", "rangeValue", "bezier", "_t", "configSpring", "dt", "stepper", "configEasing", "_typeof", "obj", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "_arrayLikeToArray", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "_toPropertyKey", "_toPrimitive", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_nonIterableRest", "o", "n", "_e", "err", "alpha", "end", "k", "needContinue", "_ref", "from", "calStepperVals", "easing", "duration", "update", "getCurrStyle", "shouldStopAnimation", "stepperUpdate", "now", "timingUpdate", "t", "_typeof", "obj", "_excluded", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "i", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_toPropertyKey", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_toPrimitive", "_inherits", "_setPrototypeOf", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "Animate", "context", "from", "duration", "style", "onAnimationEnd", "easing", "onAnimationStart", "finalStartAnimation", "addStyle", "nextItem", "index", "properties", "cloneContainer", "React", "PropTypes", "import_react", "import_react_transition_group", "import_prop_types", "import_react", "import_react_transition_group", "import_prop_types", "_excluded", "_typeof", "obj", "_extends", "i", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_classCallCheck", "instance", "_defineProperties", "_toPropertyKey", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "_toPrimitive", "parseDurationOfSingleTransition", "options", "duration", "AnimateGroupChild", "node", "style", "onAnimationEnd", "React", "PropTypes", "React", "index", "PropTypes", "import_classnames", "import_isArray", "import_react", "import_classnames", "_typeof", "obj", "_slicedToArray", "i", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "o", "_arrayLikeToArray", "n", "_e", "err", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "_isArray", "DefaultTooltipContent", "renderContent", "_sortBy", "name", "_ref", "_ref2", "React", "_isNil", "classNames", "parseIsSsrByDefault", "Global", "get", "keys", "k", "_typeof", "obj", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "EPS", "defaultUniqBy", "getUniqPayload", "_uniqBy", "_isFunction", "renderContent", "React", "Tooltip", "_ref", "offset", "position", "_isNil", "classNames", "node", "Global", "import_debounce", "import_classnames", "import_react", "extendStatics", "d", "b", "p", "__extends", "s", "e", "t", "p", "i", "commonjsGlobal", "isObject", "freeGlobal", "global", "require$$0", "root", "now", "trimmedEndIndex", "index", "baseTrim", "Symbol", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "getRawTag", "objectToString", "require$$1", "require$$2", "baseGetTag", "isObjectLike", "isSymbol", "toNumber", "FUNC_ERROR_TEXT", "debounce", "options", "time", "flush", "throttle", "isFunction", "fn", "_a", "width", "height", "prev", "__extends", "ResizeDetector", "entries", "_b", "useEnhancedEffect", "isDev", "warn", "format", "_extends", "i", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "o", "_arrayLikeToArray", "n", "_e", "err", "_ref", "width", "height", "minWidth", "minHeight", "maxHeight", "debounce", "getContainerSize", "updateDimensionsImmediate", "_debounce", "renderChart", "warn", "size", "style", "React", "classNames", "Cell", "import_isNil", "import_react", "import_classnames", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "name", "text", "getStyleString", "style", "s", "getStringSize", "Global", "e", "getOffset", "html", "calculateChartCoordinate", "offset", "_typeof", "obj", "_extends", "i", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "_arrayLikeToArray", "n", "_e", "err", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "calculateWordWidths", "_isNil", "calculateWordsByLines", "text", "calculate", "result", "_ref", "width", "findLongestLine", "a", "b", "checkOverflow", "index", "start", "end", "prev", "getWordsWithoutCalculate", "getWordsByLines", "Global", "Text", "lineHeight", "x", "y", "reduceCSSCalc", "React", "classNames", "line", "import_isObject", "import_isFunction", "import_isNil", "import_react", "import_classnames", "import_isString", "import_get", "import_isNil", "import_isArray", "import_react", "import_react_is", "shallowEqual", "a", "b", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "i", "getDisplayName", "toArray", "_isArray", "_isNil", "findAllByType", "t", "_get", "findChildByType", "validateWidthHeight", "width", "height", "isSvgElement", "_isString", "isChildrenEqual", "_isArray", "i", "isSingleChildEqual", "_isNil", "_ref", "_objectWithoutProperties", "_ref2", "shallowEqual", "renderByOrder", "elements", "index", "getDisplayName", "once", "getReactEventByType", "e", "parseChildIndex", "import_isNil", "import_isEqual", "import_sortBy", "import_isNaN", "import_upperFirst", "import_isString", "import_isArray", "import_max", "import_min", "import_isFunction", "import_get", "import_isNil", "import_decimal", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "i", "identity", "isPlaceHolder", "curry0", "fn", "curryN", "curry", "range", "end", "compose", "reverse", "memoize", "lastResult", "Decimal", "start", "end", "i", "interpolateNumber", "a", "b", "t", "x", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "_arrayLikeToArray", "_slicedToArray", "i", "_arrayWithHoles", "_iterableToArrayLimit", "_nonIterableRest", "o", "n", "_e", "err", "_ref", "_ref2", "min", "max", "Decimal", "fn", "compose", "values", "memoize", "identity", "linear", "point", "quantile", "a", "b", "f", "d", "x", "left", "a", "right", "i", "x", "values", "index", "start", "reverse", "i", "n", "max", "values", "index", "min", "values", "index", "k", "left", "right", "n", "m", "z", "s", "t", "i", "j", "values", "p", "n", "min", "max", "i", "start", "n", "i", "range", "domain", "range", "index", "domain", "range", "d", "i", "_", "domain", "round", "n", "reverse", "start", "values", "i", "_", "copy", "point", "color", "format", "m", "l", "n", "r", "g", "b", "a", "o", "k", "h", "s", "min", "max", "m2", "t1", "v2", "t2", "t3", "basis_default", "values", "n", "t", "i", "basisClosed_default", "values", "n", "t", "i", "v2", "constant_default", "x", "a", "d", "t", "b", "y", "y", "a", "b", "constant_default", "d", "y", "color", "rgb", "start", "end", "r", "g", "b", "t", "n", "i", "basis_default", "basisClosed_default", "a", "b", "n", "c", "i", "t", "x", "a", "b", "x", "c", "i", "t", "a", "b", "d", "t", "number_default", "a", "b", "t", "a", "b", "i", "c", "k", "t", "b", "t", "a", "i", "s", "q", "number_default", "o", "a", "b", "t", "c", "constant_default", "number_default", "color", "a", "b", "t", "values", "i", "n", "v", "I", "t", "x", "x", "identity", "x", "normalize", "a", "b", "t", "domain", "range", "j", "d", "r", "i", "copy", "clamp", "piecewise", "n", "y", "number_default", "_", "u", "x", "p", "i", "x", "width", "i", "t", "j", "g", "length", "i", "match", "s", "n", "i", "x", "p", "d", "i", "n", "x", "p", "d", "x", "p", "x", "map", "locale", "fill", "sign", "zero", "width", "trim", "prefix", "format", "i", "n", "c", "length", "padding", "formatPrefix", "f", "e", "k", "value", "format", "max", "start", "format", "domain", "d", "start", "linear", "copy", "identity", "domain", "x", "_", "domain", "t", "x", "f", "domain", "_", "d", "u", "v", "r", "i", "j", "p", "k", "t", "n", "z", "format", "copy", "c", "x", "_", "copy", "x", "identity", "_", "copy", "x", "range", "round", "y", "_", "quantile", "domain", "range", "i", "n", "x", "y", "_", "d", "n", "domain", "range", "x", "i", "_", "y", "domain", "range", "n", "x", "_", "y", "i", "date", "start", "range", "end", "d", "date", "start", "end", "k", "date", "start", "end", "date", "start", "end", "date", "start", "end", "date", "start", "end", "i", "date", "start", "end", "date", "start", "end", "months", "date", "start", "end", "k", "date", "start", "end", "date", "start", "end", "date", "start", "end", "i", "date", "start", "end", "date", "start", "end", "date", "start", "end", "k", "year", "month", "day", "hour", "minute", "start", "reverse", "ticks", "i", "step", "t", "d", "date", "y", "m", "locale", "formats", "i", "j", "n", "c", "pad", "format", "Z", "day", "parse", "f", "p", "fill", "width", "sign", "length", "s", "name", "z", "locale", "defaultLocale", "t", "number", "year", "month", "day", "hour", "minute", "second", "format", "domain", "formatYear", "tickFormat", "date", "y", "_", "d", "copy", "transformer", "t0", "t1", "identity", "clamp", "x", "_", "range", "t", "copy", "domain", "identity", "x", "_", "d", "i", "n", "transformer", "x2", "s", "t0", "t1", "t2", "identity", "clamp", "x", "_", "range", "r2", "t", "copy", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "i", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_isNil", "_get", "_isFunction", "_flatMap", "domain", "_min", "_max", "calculateActiveTickIndex", "index", "range", "min", "max", "getMainColorOfGraphicItem", "_ref", "fill", "getLegendProps", "name", "hide", "getBarSizeList", "j", "getDisplayName", "getBarPosition", "offset", "prev", "size", "appendOffsetOfLegend", "width", "margin", "isErrorBarRelevantForAxis", "getDomainOfErrorBars", "_isArray", "k", "parseErrorBarsOfAxis", "getDomainOfItemsWithSameAxis", "isCategoricalAxis", "getCoordinatesOfGrid", "values", "getTicksOfAxis", "combineEventHandlers", "parseScale", "linear", "point", "_isString", "_upperFirst", "EPS", "checkDomainOfScale", "findPositionOfBar", "truncateByDomain", "offsetSign", "m", "_isNaN", "offsetPositive", "getStackedData", "d", "none_default", "getStackGroupsByAxisId", "g", "calculateDomainOfTicks", "getTicksOfScale", "getCateCoordinateOfLine", "getCateCoordinateOfBar", "getBaseValueOfBar", "getStackedDataOfItem", "getDomainOfSingle", "getDomainOfStackGroups", "s", "parseSpecifiedDomain", "getBandSizeOfAxis", "_sortBy", "parseDomainOfCategoryAxis", "_isEqual", "getTooltipItem", "unit", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "o", "_arrayLikeToArray", "n", "_e", "err", "RADIAN", "radianToDegree", "polarToCartesian", "RADIAN", "getMaxRadius", "width", "height", "offset", "formatAxisMap", "domain", "range", "_isNil", "_range", "_range2", "_slicedToArray", "_objectSpread", "_defineProperty", "distanceBetweenPoints", "point", "x2", "y2", "getAngleOfPoint", "_ref", "_ref2", "x", "y", "formatAngleOfSector", "min", "reverseFormatAngleOfSetor", "inRangeOfSector", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "i", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_extends", "getLabel", "_isNil", "_isFunction", "getDeltaAngle", "sign", "renderRadialLabel", "position", "offset", "_ref", "path", "React", "classNames", "getAttrsOfPolarLabel", "r", "x", "y", "getAttrsOfCartesianLabel", "width", "height", "_isObject", "isPolar", "Label", "parseViewBox", "top", "left", "parseLabel", "renderCallByParent", "index", "import_isObject", "import_isFunction", "import_isNil", "import_isArray", "import_react", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "i", "_extends", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "defaultProps", "_isArray", "_last", "valueAccessor", "React", "index", "_isNil", "Label", "_isFunction", "_isObject", "renderCallByParent", "import_react", "import_classnames", "_typeof", "obj", "_extends", "i", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "getDeltaAngle", "sign", "getTangentCircle", "_ref", "RADIAN", "getSectorPath", "path", "getSectorWithCorner", "Sector", "classNames", "React", "import_isArray", "import_upperFirst", "import_isFunction", "import_react", "import_classnames", "_typeof", "obj", "_extends", "i", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "defined", "getX", "getY", "getCurveFactory", "_isFunction", "name", "_upperFirst", "Curve", "getPath", "_isArray", "index", "d", "path", "React", "classNames", "import_react", "import_classnames", "_typeof", "obj", "_extends", "i", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "getRectanglePath", "x", "y", "width", "height", "path", "isInRectangle", "point", "Rectangle", "err", "classNames", "React", "_ref", "node", "import_react", "import_classnames", "_typeof", "obj", "_extends", "i", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "_arrayLikeToArray", "n", "isValidatePoint", "point", "getParsedPoints", "getSinglePolygonPath", "path", "index", "getRanglePath", "Polygon", "classNames", "React", "import_react", "import_classnames", "_typeof", "obj", "_extends", "i", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "Dot", "r", "classNames", "React", "import_react", "import_classnames", "_typeof", "obj", "_extends", "i", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "Cross", "x", "y", "width", "height", "top", "left", "React", "classNames", "getPath", "import_isFunction", "import_react", "_typeof", "obj", "_extends", "i", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "PolarRadiusAxis", "_ref", "_maxBy", "_minBy", "React", "axisProps", "Label", "_isFunction", "import_isFunction", "import_react", "_typeof", "obj", "_extends", "i", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "RADIAN", "PolarAngleAxis", "p2", "React", "Dot", "axisProps", "_isFunction", "import_isEqual", "import_get", "import_isFunction", "import_isNil", "import_react", "import_classnames", "_typeof", "obj", "_extends", "i", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "Pie", "onAnimationEnd", "_isFunction", "onAnimationStart", "_isNil", "React", "_ref", "t", "index", "prev", "_get", "_isEqual", "hide", "classNames", "Label", "x", "_isPlainObject", "Global", "sign", "offset", "top", "left", "width", "height", "warn", "name", "import_isFunction", "import_range", "import_react", "import_classnames", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "PREFIX_LIST", "generatePrefixStyle", "name", "v", "_typeof", "obj", "_extends", "i", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "createScale", "_ref", "x", "width", "point", "_range", "isTouch", "Brush", "gap", "min", "max", "index", "text", "_isFunction", "isFullGap", "y", "height", "fill", "React", "padding", "offset", "classNames", "style", "generatePrefixStyle", "range", "start", "end", "import_isFunction", "import_react", "import_classnames", "ifOverflowMatches", "_classCallCheck", "instance", "_defineProperties", "i", "_createClass", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "formatAxisMap", "offset", "width", "height", "domain", "padding", "range", "x", "y", "index", "gap", "rectWithPoints", "_ref", "_ref2", "x2", "y2", "rectWithCoords", "ScaleHelper", "get", "apply", "position", "create", "createLabeledScales", "options", "_mapValues", "_every", "ownKeys", "keys", "symbols", "_objectSpread", "i", "_defineProperty", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "o", "_arrayLikeToArray", "n", "_e", "err", "_extends", "renderLine", "line", "React", "_isFunction", "getEndPoints", "x", "y", "width", "height", "position", "p", "_some", "shape", "warn", "x2", "y2", "classNames", "Label", "import_isFunction", "import_react", "import_classnames", "_extends", "i", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "getCoordinate", "x", "y", "r", "warn", "shape", "React", "classNames", "Label", "_isFunction", "Dot", "import_isFunction", "import_react", "import_classnames", "_extends", "i", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "getRect", "p2", "x2", "y2", "warn", "shape", "React", "classNames", "Label", "_isFunction", "import_get", "import_isFunction", "import_react", "import_classnames", "_typeof", "obj", "_extends", "i", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "CartesianAxis", "_ref", "shallowEqual", "x", "y", "width", "height", "x2", "y2", "sign", "React", "classNames", "_get", "fontSize", "letterSpacing", "unit", "axisProps", "_isFunction", "hide", "Label", "Global", "start", "end", "size", "gap", "entry", "import_isFunction", "import_react", "_typeof", "obj", "_extends", "i", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "CartesianGrid", "x", "width", "React", "y", "height", "a", "b", "lineHeight", "fill", "offset", "_isFunction", "x2", "y2", "import_isEqual", "import_isFunction", "import_isNil", "import_react", "import_classnames", "import_react", "_extends", "i", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "o", "_arrayLikeToArray", "n", "_e", "err", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "offset", "width", "x", "y", "React", "index", "_typeof", "obj", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "i", "_extends", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "Line", "length", "next", "line", "node", "err", "React", "width", "height", "_ref", "t", "index", "prev", "_isEqual", "hide", "top", "left", "classNames", "_isNil", "_isFunction", "Dot", "Global", "offset", "import_isNil", "import_isEqual", "import_isFunction", "import_isArray", "import_react", "import_classnames", "_typeof", "obj", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "i", "_extends", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "Bar", "onAnimationEnd", "onAnimationStart", "shape", "React", "_ref", "t", "index", "prev", "h", "w", "_isEqual", "offset", "hide", "left", "top", "width", "height", "classNames", "_isNil", "_isFunction", "Global", "x", "y", "_isArray", "XAxis", "YAxis", "import_every", "import_isFunction", "import_sortBy", "import_get", "import_range", "import_isNil", "import_isArray", "import_react", "import_classnames", "detectReferenceElementsDomain", "domain", "elements", "EventEmitter", "_typeof", "obj", "_slicedToArray", "i", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "_e", "err", "_extends", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "_classCallCheck", "instance", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_nonIterableSpread", "_arrayLikeToArray", "n", "ownKeys", "keys", "symbols", "_objectSpread", "_defineProperty", "defer", "calculateTooltipPos", "getActiveCoordinate", "getDisplayedData", "_ref", "getTooltipContent", "hide", "entries", "getTooltipData", "getAxisMapByAxes", "domain", "_range", "_isNil", "getAxisMapByItems", "index", "_get", "getAxisMap", "tooltipTicksGenerator", "_sortBy", "createDefaultState", "hasGraphicalBarItem", "name", "getDisplayName", "getAxisNameByLayout", "calculateOffset", "width", "height", "margin", "offset", "generateCategoricalChart", "formatAxisMap", "defaultProps", "getFormatItems", "_objectSpread6", "_objectSpread7", "updateStateOfAxisMapsOffsetAndStackGroups", "_isFunction", "_find", "_every", "_isArray", "Tooltip", "_throttle", "_isBoolean", "getOffset", "x2", "y2", "x", "y", "React", "left", "top", "axisProps", "style", "map", "classNames", "node", "defaultState", "shallowEqual", "Dot", "formatAxisMap", "formatAxisMap", "import_react", "Wrapper", "React", "Wrapper", "React", "Label", "Tooltip", "import_react", "import_isEqual", "import_react", "import_react", "Wrapper", "React", "index", "import_react", "import_react", "init_Tooltip", "import_react", "init_Button", "import_react", "import_react", "React", "Wrapper", "IconButton", "React", "init_Tooltip", "React", "init_Button", "HeaderRow", "WarningWrapper", "Button", "ButtonsContainer", "LabelWithTooltip", "SelectRegionWrapper", "name", "React", "Tooltip", "Button", "import_react", "React", "import_react", "init_Button", "React", "import_react", "Wrapper", "e", "import_react", "React", "React", "init_Tooltip", "Tooltip", "init_Tooltip", "Container", "useTheme", "React", "canPeerEditGroup", "e", "Button", "Tooltip", "import_react", "React", "Wrapper", "theme", "ContentWrapper", "React", "Tooltip", "GroupItem", "import_react", "React", "spacing", "style", "index", "import_react", "init_Button", "import_lodash", "i", "text", "sequenceID", "getPeerWorldIDs", "import_lodash", "a", "prev", "React", "Button", "i", "metrics", "init_Button", "Header", "React", "Button", "index", "GroupItem", "groupID", "import_react", "init_Button", "import_react", "init_Button", "React", "init_Button", "import_react", "fullName", "username", "React", "Button", "init_Button", "init_Tooltip", "import_react", "InfoIcon", "char", "index", "domain", "separator", "React", "Button", "Tooltip", "InfoIcon", "init_Tooltip", "SectionTitle", "ListContainer", "ListItem", "React", "name", "Tooltip", "Button", "import_react", "import_react", "width", "height", "React", "init_Button", "import_react", "React", "import_react", "init_Tooltip", "Wrapper", "React", "Tooltip", "init_Tooltip", "import_react", "React", "import_react", "React", "import_react", "init_Button", "ButtonsContainer", "domain", "React", "Button", "init_Button", "import_react", "ButtonsContainer", "React", "error", "Button", "import_react", "init_Button", "Wrapper", "useTheme", "React", "e", "Button", "import_react", "init_Button", "ButtonsContainer", "React", "Button", "Wrapper", "PeerAttribute", "PeerItem", "React", "e", "Tooltip", "Button", "import_react", "init_Button", "SwitchContainer", "ButtonsContainer", "React", "Button", "import_isEqual", "React", "Wrapper", "Checkbox", "style", "import_react", "DialogContainer", "domain", "React", "import_react", "width", "height", "React", "getTimestampOfRandomID", "HeaderContainer", "SearchBarWrapper", "isEqual", "domain", "index", "_", "React", "PeerItem", "Select", "Button", "Checkbox", "import_react", "init_Tooltip", "Wrapper", "location", "React", "Tooltip", "index", "import_react_grid_system", "import_react", "import_react_grid_system", "init_Button", "import_react", "import_isEqual", "init_Tooltip", "Wrapper", "isEqual", "index", "React", "Tooltip", "Label", "name", "e", "import_react", "WorldItem", "React", "import_react", "init_Button", "import_react", "React", "import_react", "React", "init_Tooltip", "PeerAttributes", "PeerAttribute", "PeerItem", "React", "Tooltip", "Button", "import_react", "import_react_grid_system", "import_react", "import_react", "init_Button", "import_react", "React", "Button", "HeaderContainer", "worldTitlesByID", "React", "index", "WorldItem", "import_react", "import_react", "Container", "Title", "React", "sequenceCount", "React", "import_isEqual", "TitleWrapper", "isEqual", "React", "import_react", "init_Button", "import_react", "init_Tooltip", "import_react", "React", "import_react", "React", "SubtitleWrapper", "React", "Tooltip", "import_react", "import_isEqual", "init_Tooltip", "Wrapper", "TickText", "isEqual", "version", "index", "React", "Tooltip", "Label", "e", "import_react", "init_Button", "import_react", "import_react", "init_Button", "EntityAttribute", "ButtonsContainer", "React", "Button", "React", "Button", "e", "React", "import_react", "init_Button", "getPeerWorldIDs", "Container", "Header", "DialogContent", "allEntities", "React", "index", "Button", "import_isEqual", "import_react", "import_react", "init_Button", "import_react", "init_Button", "FormContainer", "WorldItem", "ActionButtons", "name", "peerGroups", "ownerWorlds", "getPeerWorldIDs", "index", "ownerType", "React", "Select", "Button", "React", "Button", "index", "import_react", "import_react", "init_Button", "import_react", "init_Button", "Container", "Header", "DialogContent", "getPeerWorldIDs", "React", "index", "WorldItem", "Button", "Section", "React", "Button", "index", "WorldItem", "init_Button", "import_react", "import_react", "import_react_device_detect", "Timestamp", "React", "Section", "SectionHeader", "ListCount", "ItemsCount", "attempts", "React", "Button", "index", "Header", "ownerName", "React", "import_react", "attempts", "React", "filters", "index", "Entities", "React", "Switch", "import_react", "React", "FiltersWrapper", "ListCount", "ItemsCount", "SectionHeader", "getWorldGroups", "isEqual", "React", "TitleWrapper", "Button", "index", "PeerItem", "import_react", "React", "index", "import_react", "import_react", "import_isEqual", "Container", "isEqual", "React", "import_react", "import_react", "React", "import_react", "React", "import_react", "React", "import_react", "React", "import_isEqual", "init_Tooltip", "Wrapper", "TitleWrapper", "TitleContainer", "isEqual", "text", "React", "index", "Tooltip", "seconds", "offset", "Checkbox", "import_react", "init_Button", "import_react", "text", "React", "start", "b", "i", "r", "j", "x", "s", "l", "le", "v", "m", "p", "v", "s", "e", "d", "p", "v", "o", "t", "i", "s", "t2", "a", "b", "l", "r", "i2", "dt", "n", "c", "w", "_a", "_b", "_e", "it", "st", "prev", "j", "e", "a", "b", "d", "n", "m", "l", "i", "e", "st", "d", "b", "v", "c", "o", "fl", "h", "a", "d", "e", "_arrayWithHoles", "r", "_iterableToArrayLimit", "r", "l", "t", "e", "n", "i", "u", "a", "f", "o", "_arrayLikeToArray", "r", "a", "e", "n", "_unsupportedIterableToArray", "r", "a", "_arrayLikeToArray", "t", "_nonIterableRest", "_slicedToArray", "r", "e", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "encoding", "options", "offset", "n", "size", "slice", "returnArray", "i", "encoding", "s", "w", "length", "c", "h", "n", "m", "f", "k", "v", "j", "lc", "node", "rank", "adler", "s2", "crc", "t", "end", "i", "zero", "p", "prev", "b", "start", "size", "match", "flush", "left", "wrap", "copy", "next", "assign", "l", "common", "q", "c2", "max", "options", "from", "min", "root", "fill", "COMMENT", "order", "toString", "constants", "crcTable", "n", "c", "k", "length", "buffer", "i", "a", "b", "c", "p", "width", "height", "offset", "y", "x", "i", "k", "uint16", "uint8", "osIsLittleEndian", "width", "height", "offset", "i", "k", "swap16", "buffer", "i", "text", "buffer", "length", "buffer", "end", "length", "options", "checkCrc", "length", "offset", "l", "palette", "i", "alpha", "name", "index", "ResolutionUnitSpecifier", "options", "globalObject", "window", "global", "self", "this", "consoleLog", "console", "log", "apply", "arguments", "warn", "str", "call", "error", "download", "url", "name", "opts", "xhr", "XMLHttpRequest", "open", "responseType", "onload", "saveAs", "response", "onerror", "send", "corsEnabled", "e", "status", "click", "node", "dispatchEvent", "MouseEvent", "evt", "document", "createEvent", "initMouseEvent", "_global", "_typeof", "HTMLAnchorElement", "prototype", "blob", "URL", "webkitURL", "a", "createElement", "rel", "href", "origin", "location", "target", "createObjectURL", "setTimeout", "revokeObjectURL", "navigator", "msSaveOrOpenBlob", "autoBom", "test", "type", "Blob", "String", "fromCharCode", "popup", "title", "body", "innerText", "force", "isSafari", "HTMLElement", "safari", "isChromeIOS", "userAgent", "FileReader", "reader", "onloadend", "result", "replace", "readAsDataURL", "RGBColor", "color_string", "channels", "ok", "charAt", "substr", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "feldspar", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgrey", "lightgreen", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslateblue", "lightslategray", "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", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "violetred", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", "toLowerCase", "color_defs", "re", "example", "process", "bits", "parseInt", "i", "length", "processor", "exec", "r", "g", "b", "isNaN", "toRGB", "toHex", "toString", "atob", "bind", "btoa", "md5cycle", "x", "k", "c", "d", "ff", "gg", "hh", "ii", "add32", "cmn", "q", "s", "t", "md51", "n", "state", "md5blk", "substring", "tail", "charCodeAt", "md5blks", "hex_chr", "split", "rhex", "j", "singleToByteString", "md5Bin", "map", "join", "md5Check", "lsw", "rc4", "key", "data", "lastKey", "lastState", "num", "Array", "out", "permissionOptions", "print", "modify", "copy", "PDFSecurity", "permissions", "userPassword", "ownerPassword", "fileId", "v", "protection", "forEach", "perm", "Error", "padding", "paddedUserPassword", "paddedOwnerPassword", "O", "processOwnerPassword", "P", "encryptionKey", "lsbFirstWord", "hexToBytes", "U", "toPDFName", "strLength", "charCode", "slice", "PubSub", "context", "topics", "subscribe", "topic", "callback", "once", "hasOwnProperty", "token", "Math", "random", "unsubscribe", "Object", "keys", "publish", "args", "tokens", "sub", "ex", "message", "push", "getTopics", "GState", "parameters", "supported", "p", "indexOf", "id", "objectNumber", "Pattern", "gState", "matrix", "ShadingPattern", "coords", "colors", "TilingPattern", "boundingBox", "xStep", "yStep", "stream", "cloneIndex", "jsPDF", "options", "precision", "orientation", "unit", "format", "compressPdf", "filters", "userUnit", "floatPrecision", "defaultPathOperation", "encryptionOptions", "compress", "encryption", "userPermissions", "abs", "putOnlyUsedFonts", "usedFonts", "API", "internal", "__private__", "pdfVersion", "getPdfVersion", "setPdfVersion", "value", "pageFormats", "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "dl", "letter", "legal", "ledger", "tabloid", "getPageFormats", "getPageFormat", "ApiMode", "apiMode", "advancedAPI", "saveGraphicsState", "Matrix", "scaleFactor", "getPageHeight", "setFontSize", "getFontSize", "compatAPI", "restoreGraphicsState", "combineFontStyleAndFontWeight", "fontStyle", "fontWeight", "doSwitch", "isAdvancedAPI", "hpf", "advancedApiModeTrap", "methodName", "roundToPrecision", "number", "parmPrecision", "tmpPrecision", "toFixed", "f2", "f3", "scale", "transformScaleY", "y", "setPrecision", "creationDate", "getFileId", "setFileId", "toUpperCase", "floor", "convertDateToPDFDate", "parmDate", "tzoffset", "getTimezoneOffset", "tzsign", "tzhour", "tzmin", "timeZoneString", "padd2", "getFullYear", "getMonth", "getDate", "getHours", "getMinutes", "getSeconds", "convertPDFDateToDate", "parmPDFDate", "year", "month", "date", "hour", "minutes", "seconds", "Date", "setCreationDate", "tmpCreationDateString", "getCreationDate", "currentPage", "padd2Hex", "hexString", "offsets", "content", "contentLength", "additionalObjects", "pages", "hasCustomDestination", "outputDestination", "setCustomOutputDestination", "destination", "setOutputDestination", "resetCustomOutputDestination", "string", "write", "getArrayBuffer", "len", "ab", "ArrayBuffer", "u8", "Uint8Array", "standardFonts", "getStandardFonts", "activeFontSize", "fontSize", "size", "zoomMode", "R2L", "setR2L", "getR2L", "pageMode", "setZoomMode", "zoom", "getZoomMode", "layoutMode", "setPageMode", "pmode", "undefined", "getPageMode", "setLayoutMode", "layout", "getLayoutMode", "setDisplayMode", "documentProperties", "subject", "author", "keywords", "creator", "getDocumentProperty", "getDocumentProperties", "setDocumentProperties", "setProperties", "properties", "property", "setDocumentProperty", "activeFontKey", "pageX", "pageY", "pageMatrix", "fonts", "fontmap", "fontStateStack", "patterns", "patternMap", "gStates", "gStatesMap", "activeGState", "page", "pagesContext", "events", "hotfixes", "renderTargets", "renderTargetMap", "renderTargetStack", "sx", "shy", "shx", "sy", "tx", "ty", "_matrix", "defineProperty", "get", "set", "atan2", "decompose", "separator", "multiply", "f", "scaleX", "sqrt", "shear", "scaleY", "translate", "rotate", "skew", "inversed", "quot", "aInv", "bInv", "cInv", "dInv", "applyToPoint", "pt", "Point", "applyToRectangle", "rect", "pt1", "pt2", "w", "h", "Rectangle", "clone", "matrixMult", "m1", "m2", "identityMatrix", "unitMatrix", "addPattern", "pattern", "patternKey", "addShadingPattern", "beginTilingPattern", "beginNewRenderTarget", "endTilingPattern", "pop", "restore", "fn", "newObject", "oid", "newObjectDeferred", "newObjectDeferredBegin", "doOutput", "newAdditionalObject", "obj", "objId", "rootDictionaryObjId", "resourceDictionaryObjId", "decodeColorString", "color", "colorEncoded", "floatVal", "parseFloat", "colorAsRGB", "encodeColorString", "ch1", "ch2", "ch3", "ch4", "letterArray", "pdfColorType", "rgbColor", "hex", "getFilters", "putStream", "alreadyAppliedFilters", "addLength1", "valueOfLength1", "objectId", "encryptor", "processedData", "keyValues", "additionalKeyValues", "filterAsString", "processDataByFilters", "reverseChain", "isArray", "decodeParmsArray", "putPage", "pageNumber", "pageObjectNumber", "pageContentsObjId", "contentsObjId", "mediaBox", "bottomLeftX", "bottomLeftY", "topRightX", "topRightY", "cropBox", "bleedBox", "trimBox", "artBox", "pageContext", "pageContent", "putPages", "pageObjectNumbers", "kids", "putFont", "font", "isAlreadyPutted", "postScriptName", "encoding", "putXObject", "xObject", "width", "height", "putShadingPattern", "numberSamples", "funcObjectNumber", "tValues", "dT", "offset", "unshift", "index", "aColor", "bColor", "round", "trim", "putTilingPattern", "deferredResourceDictionaryIds", "resourcesObjectId", "patternObjectId", "resourcesOid", "objectOid", "putGState", "putResourceDictionary", "objectIds", "fontKey", "gStateKey", "xObjectKey", "putXobjectDict", "addFontToFontDictionary", "fontName", "addFont", "isStandardFont", "metadata", "instance", "pdfEscape", "text", "flags", "l", "sourceEncoding", "encodingBlock", "outputEncoding", "newtext", "isUnicode", "ch", "bch", "autoencode", "codePages", "noBOM", "beginPage", "Number", "_setPage", "_addPage", "parmFormat", "parmOrientation", "dimensions", "min", "setLineWidth", "lineWidth", "strokeColor", "lineCapID", "lineJoinID", "_deletePage", "splice", "setPage", "getNumberOfPages", "getFont", "fontNameLowerCase", "disableWarning", "noFallback", "putInfo", "version", "putCatalog", "tmpRootDictionaryObjId", "pcn", "putTrailer", "putHeader", "putXRef", "buildDocument", "MAX_SAFE_INTEGER", "toHexString", "offsetOfXRef", "getBlob", "clearDomNode", "firstChild", "removeChild", "initializeNewWindow", "style", "targetDocument", "html", "documentElement", "head", "appendChild", "createTextNode", "output", "filename", "save", "dataURI", "pdfDocument", "unescape", "encodeURIComponent", "pdfObjectUrl", "useDefaultPdfObjectUrl", "nW", "initializedPdfObjectWindow", "pdfObjectScript", "scope", "src", "integrity", "crossOrigin", "PDFObject", "embed", "pdfJsUrl", "PDFjsNewWindow", "initializedPdfJsWindow", "pdfViewer", "pdfJsQueryChar", "contentWindow", "PDFViewerApplication", "dataURLNewWindow", "initializedDataUrlWindow", "dataUrlFrame", "foo", "stack", "m", "alert", "bar", "hasHotfix", "hotfixName", "getPageInfo", "pageNumberOneBased", "getPageInfoByObjId", "getCurrentPageInfo", "addPage", "insertPage", "beforePage", "movePage", "targetPage", "tmpPages", "tmpPagesContext", "deletePage", "transform", "payload", "da", "angle", "align", "charSpace", "maxWidth", "horizontalScale", "transformationMatrix", "tmp", "isHex", "xtra", "lineHeight", "lineHeightFactor", "ESC", "TabLen", "transformTextToSpecialArray", "curDa", "sa", "concat", "shift", "processTextByFunction", "processingFunction", "tmpResult", "textIsOfTypeString", "tmpTextIsOfTypeString", "match", "descent", "baseline", "splitTextToSize", "reduce", "acc", "textLine", "mutex", "PI", "rotationDirection", "cos", "sin", "activeCharSpace", "setCharSpace", "getCharSpace", "lang", "renderingMode", "parmRenderingMode", "stroke", "usedRenderingMode", "lineWidths", "leading", "pageWidth", "pageSize", "getWidth", "activeFont", "assign", "wordSpacingPerLine", "findWidth", "getStringUnitWidth", "doKerning", "newY", "newX", "prevWidth", "getHorizontalCoordinate", "getVerticalCoordinate", "backToStartX", "spacing", "words", "shiftAmount", "numSpaces", "posX", "posY", "reverse", "activeFontEncoding", "variant", "wordSpacing", "generatePosition", "parmPosX", "parmPosY", "parmTransformationMatrix", "position", "lineIndex", "textColor", "clip", "rule", "clipEvenOdd", "discardPath", "isValidStyle", "setDefaultPathOperation", "operator", "getStyle", "op", "close", "fill", "fillWithOptionalPattern", "fillEvenOdd", "fillStroke", "fillStrokeEvenOdd", "fillWithPattern", "putStyle", "cloneTilingPattern", "patternData", "patternId", "clipRuleFromStyle", "setGState", "moveTo", "lineTo", "curveTo", "x1", "y1", "x2", "y2", "x3", "y3", "line", "lines", "closed", "scalex", "scaley", "leg", "x4", "y4", "path", "triangle", "roundedRect", "rx", "ry", "MyArc", "SQRT2", "ellipse", "lx", "ly", "circle", "setFont", "getFontEntry", "getFontList", "list", "encodingOptions", "getLineWidth", "setLineDash", "setLineDashPattern", "dashArray", "dashPhase", "getLineHeight", "setLineHeightFactor", "getLineHeightFactor", "getHorizontalCoordinateString", "getVerticalCoordinateString", "getStrokeColor", "getDrawColor", "setStrokeColor", "setDrawColor", "fillColor", "getFillColor", "setFillColor", "getTextColor", "setTextColor", "CapJoinStyles", "butt", "but", "miter", "rounded", "projecting", "project", "square", "bevel", "setLineCap", "setLineJoin", "setLineMiterLimit", "setMiterLimit", "addGState", "equals", "duplicate", "fontState", "setCurrentTransformationMatrix", "comment", "_x", "enumerable", "_y", "_type", "_w", "_h", "RenderTarget", "getUnscaledPageWidth", "getUnscaledPageHeight", "setPageWidthWithoutScaling", "setPageHeightWithoutScaling", "plugin", "beginFormObject", "endFormObject", "newXObject", "xObjectId", "doFormObject", "getFormObject", "returnPromise", "unload", "Promise", "resolve", "reject", "newEvents", "eventname", "handler_and_args", "getPageWidth", "setPageWidth", "setPageHeight", "getCoordinateString", "collections", "setWidth", "getHeight", "setHeight", "getEncryptor", "getPDFVersion", "configurable", "arrayOfFonts", "parts", "dictionary", "byteString", "byte", "bytes", "generation", "other", "ignore", "count", "jsPDFAPI", "pdfUnescape", "pdfEscapeName", "f5", "__acroform__", "inherit", "child", "parent", "create", "constructor", "createFormXObject", "formObject", "xobj", "AcroFormXObject", "AcroFormAppearance", "BBox", "setBit", "bitPosition", "clearBit", "getBit", "getBitForPdf", "setBitForPdf", "clearBitForPdf", "calculateCoordinates", "coordinates", "lowerLeft_X", "lowerLeft_Y", "upperRight_X", "upperRight_Y", "calculateAppearanceStream", "appearanceStreamContent", "V", "DV", "_V", "calcRes", "calculateX", "maxFontSize", "returnValue", "textSplit", "multiline", "word", "isSmallerThanWidth", "lastLine", "calculateFontSpace", "FontSize", "startX", "lastLength", "textHeight", "startY", "lastY", "firstWordInLine", "lastWordInLine", "currWord", "lineCount", "isWithNewLine", "nextLineIsSmaller", "isLastWord", "currLine", "textAlign", "acroformPluginTemplate", "fields", "xForms", "acroFormDictionaryRoot", "printedOut", "isInitialized", "createAnnotationReference", "object", "annotations", "find", "entry", "initializeAcroForm", "acroformPlugin", "AcroFormField", "FieldNum", "JSON", "parse", "stringify", "AcroFormDictionary", "_eventID", "Fields", "hasAnnotation", "fieldArray", "standardFields", "Kids", "fieldObject", "keyValueList", "oldRect", "Rect", "DA", "createDefaultAppearanceStream", "getKeyValueListForStream", "hasAppearanceStream", "appearance", "appearanceStreamString", "arrayToPdfArray", "array", "toPdfString", "AcroFormPDFObject", "_objId", "_scope", "writable", "getOwnPropertyNames", "filter", "getOwnPropertyDescriptor", "_stream", "_BBox", "_DA", "_Kids", "_F", "Boolean", "F", "_Ff", "_Rect", "_FT", "_T", "AcroFormChildClass", "_fontName", "_fontStyle", "_fontSize", "_maxFontSize", "_color", "AcroFormTextField", "_DV", "AcroFormButton", "_page", "_hasAppearanceStream", "Ff", "_Q", "AcroFormChoiceField", "FT", "_TI", "_Opt", "regex", "matches", "getOptions", "setOptions", "sort", "addOption", "removeOption", "allEntries", "combo", "AcroFormListBox", "AcroFormComboBox", "AcroFormEditBox", "edit", "_AS", "_MK", "CA", "AcroFormPushButton", "pushButton", "AcroFormRadioButton", "radio", "_parent", "_optionName", "caption", "appearanceState", "_AppearanceType", "RadioButton", "Circle", "createAppearanceStream", "optionName", "setAppearance", "getCA", "createOption", "Parent", "addField", "AcroFormCheckBox", "CheckBox", "_MaxLen", "isInteger", "AcroFormPasswordField", "password", "N", "On", "YesNormal", "D", "YesPushDown", "Off", "OffPushDown", "encodedColor", "DotRadius", "Bezier_C", "DotRadiusBezier", "kc", "dc", "Cross", "cross", "calculateCross", "AcroForm", "ChoiceField", "ListBox", "ComboBox", "EditBox", "Button", "PushButton", "TextField", "PasswordField", "Appearance", "toLookup", "arr", "lookup", "namespace", "__addimage__", "UNKNOWN", "imageFileTypeHeaders", "PNG", "TIFF", "JPEG", "JPEG2000", "GIF87a", "GIF89a", "WEBP", "BMP", "getImageFileTypeByImageData", "imageData", "fallbackFormat", "headerSchemata", "compareResult", "fileType", "Uint8ClampedArray", "isArrayBufferView", "putImage", "image", "colorSpace", "color_spaces", "INDEXED", "palette", "sMask", "DEVICE_CMYK", "bitsPerComponent", "decodeParameters", "transparency", "_image$sMaskBitsPerCo", "sMaskBitsPerComponent", "predictor", "arrayBufferToBinaryString", "putResourcesCallback", "images", "putXObjectsDictCallback", "initialize", "getImages", "getImageIndex", "isImageTypeSupported", "isDOMElement", "nodeType", "getImageDataFromElement", "element", "nodeName", "hasAttribute", "getAttribute", "tmpImageData", "loadFile", "mimeType", "toDataURL", "checkImagesForAlias", "alias", "determineWidthAndHeight", "writeImageToPDF", "rotation", "dims", "coord", "vcoord", "f4", "rotationTransformationMatrix", "DEVICE_RGB", "DEVICE_GRAY", "CAL_GREY", "CAL_RGB", "LAB", "ICC_BASED", "PATTERN", "SEPARATION", "DEVICE_N", "decode", "DCT_DECODE", "FLATE_DECODE", "LZW_DECODE", "JPX_DECODE", "JBIG2_DECODE", "ASCII85_DECODE", "ASCII_HEX_DECODE", "RUN_LENGTH_DECODE", "CCITT_FAX_DECODE", "image_compression", "NONE", "FAST", "MEDIUM", "SLOW", "sHashCode", "hash", "byteLength", "validateStringAsBase64", "possibleBase64String", "extractImageFromDataUrl", "dataUrl", "startsWith", "commaIndex", "endsWith", "isArrayBuffer", "Int8Array", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "Float32Array", "Float64Array", "binaryStringToUint8Array", "binary_string", "buffer", "buf", "subarray", "addImage", "compression", "processImageData", "dataAsBinaryString", "convertBase64ToBinaryString", "stringData", "throwError", "rawData", "_extractImageFromData", "getImageProperties", "notEmpty", "addPageData", "putPageData", "anno", "pageInfo", "pageAnnos", "found", "escape", "objText", "objPopup", "encryptorText", "bounds", "contents", "defaultStyle", "loc", "_nameMap", "top", "finalBounds", "magFactor", "left", "createAnnotation", "link", "textWithLink", "linkHeight", "linkWidth", "totalLineWidth", "getTextWidth", "numOfLines", "ceil", "arabicSubstitionA", "ligatures", "arabic_diacritics", "alfletter", "__arabicParser__", "isInArabicSubstitutionA", "isArabicLetter", "isArabicEndLetter", "isArabicAlfLetter", "arabicLetterHasIsolatedForm", "arabicLetterHasFinalForm", "arabicLetterHasInitialForm", "arabicLetterHasMedialForm", "resolveLigatures", "letters", "tmpLigatures", "effectedLetters", "isArabicDiacritic", "getCorrectForm", "currentChar", "beforeChar", "nextChar", "parseArabic", "currentLetter", "prevLetter", "nextLetter", "newWords", "processArabic", "tmpText", "autoPrint", "refAutoPrintTag", "addJS", "Canvas", "jsPdfInstance", "_width", "getContext", "pageWrapXEnabled", "pageWrapX", "_height", "pageWrapYEnabled", "pageWrapY", "_childNodes", "_style", "contextType", "contextAttributes", "pdf", "context2d", "_canvas", "canvas", "NO_MARGINS", "bottom", "right", "printingHeaderRow", "_initialize", "__cell__", "headerFunction", "margins", "_reset", "lastCell", "Cell", "_text", "_lineNumber", "_align", "lineNumber", "toArray", "setHeaderFunction", "func", "getTextDimensions", "amountOfLines", "tempWidth", "max", "cellAddPage", "cell", "currentCell", "tableHeaderRow", "printHeaders", "printHeaderRow", "table", "headers", "config", "column", "headerName", "headerNames", "headerLabels", "headerAligns", "columnMatrix", "columnWidths", "columnMinWidths", "tableHeaderConfigs", "autoSize", "css", "headerBackgroundColor", "headerTextColor", "table_font_size", "header", "prompt", "rec", "row", "rowHeight", "calculateLineHeight", "setTableHeaderRow", "pv", "cv", "rowStart", "Function", "cellData", "cellStart", "col", "table_x", "table_y", "model", "new_page", "tableHeaderCell", "tempHeaderConf", "currentTextColor", "fontStyleOrder", "italic", "oblique", "normal", "fontStretchOrder", "fontStretchLookup", "fontWeights", "fontWeightsLookup", "normalizeFontFace", "fontFace", "family", "weight", "stretch", "ref", "searchFromPivot", "matchingSet", "order", "pivot", "dir", "defaultGenericFontFamilies", "fixed", "monospace", "terminal", "cursive", "fantasy", "serif", "systemFonts", "icon", "menu", "ruleToString", "eatWhiteSpace", "input", "trimLeft", "parseQuotedFontFamily", "quote", "parseNonQuotedFontFamily", "getCharWidthsArray", "splitLongWord", "splitParagraphIntoLines", "defaultFont", "compressBytes", "lineByteLength", "level", "filter_method", "filterUp", "filterSub", "filterAverage", "filterPaeth", "bytesPerPixel", "prevLine", "filter_methods", "filterNone", "results", "ind", "getIndexOfSmallestSum", "dat", "zlibSync", "colorsPerPixel", "up", "paeth", "paethPredictor", "upLeft", "pLeft", "pUp", "pUpLeft", "arrays", "sum", "readSample", "view", "sampleIndex", "depth", "bitIndex", "byteIndex", "bitOffset", "bitMask", "safeGetUint16", "writeSample", "writeValue", "setUint16", "byteToWrite", "setUint8", "getUint16", "getUint8", "GifReader", "pf0", "global_palette_flag", "num_global_colors", "global_palette_offset", "global_palette_size", "no_eof", "frames", "delay", "transparent_index", "disposal", "loop_count", "block_size", "pf1", "pf2", "interlace_flag", "num_local_colors", "palette_offset", "palette_size", "has_local_palette", "data_offset", "data_length", "interlaced", "numFrames", "loopCount", "frameInfo", "frame_num", "decodeAndBlitFrameBGRA", "pixels", "frame", "num_pixels", "index_stream", "GifReaderLZWOutputIndexStream", "trans", "framewidth", "framestride", "xleft", "opbeg", "opend", "scanstride", "interlaceskip", "il", "decodeAndBlitFrameRGBA", "code_stream", "output_length", "min_code_size", "clear_code", "eoi_code", "next_code", "cur_code_size", "code_mask", "cur_shift", "cur", "subblock_size", "code_table", "prev_code", "code", "chase_code", "chase_length", "chase", "JPEGEncoder", "quality", "YDC_HT", "UVDC_HT", "YAC_HT", "UVAC_HT", "currentQuality", "ffloor", "YTable", "UVTable", "fdtbl_Y", "fdtbl_UV", "bitcode", "category", "outputfDCTQuant", "DU", "byteout", "bytenew", "bytepos", "YDU", "UDU", "VDU", "clt", "RGB_YUV_TABLE", "ZigZag", "std_dc_luminance_nrcodes", "std_dc_luminance_values", "std_ac_luminance_nrcodes", "std_ac_luminance_values", "std_dc_chrominance_nrcodes", "std_dc_chrominance_values", "std_ac_chrominance_nrcodes", "std_ac_chrominance_values", "computeHuffmanTbl", "nrcodes", "std_table", "codevalue", "pos_in_table", "HT", "writeBits", "bs", "posval", "writeByte", "writeWord", "processDU", "CDU", "fdtbl", "DC", "HTDC", "HTAC", "pos", "EOB", "M16zeroes", "DU_DCT", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "fDCTQuant", "dataOff", "tmp0", "tmp7", "tmp1", "tmp6", "tmp2", "tmp5", "tmp3", "tmp4", "tmp10", "tmp13", "tmp11", "tmp12", "z1", "z5", "z2", "z4", "z3", "z11", "z13", "tmp0p2", "tmp7p2", "tmp1p2", "tmp6p2", "tmp2p2", "tmp5p2", "tmp3p2", "tmp4p2", "tmp10p2", "tmp13p2", "tmp11p2", "tmp12p2", "z1p2", "z5p2", "z2p2", "z4p2", "z3p2", "z11p2", "z13p2", "Diff", "end0pos", "lng", "startpos", "nrzeroes", "nrmarker", "setQuality", "sf", "YQT", "UVQT", "u", "aasf", "encode", "writeDQT", "o", "writeDHT", "DCY", "DCU", "DCV", "displayName", "start", "quadWidth", "fillbits", "sfcc", "nrlower", "nrupper", "cat", "nr", "nrneg", "BmpDecoder", "is_with_alpha", "datav", "DataView", "bottom_up", "flag", "parseHeader", "parseBGR", "WebPDecoder", "fa", "L", "J", "H", "I", "Z", "M", "wa", "Ed", "ma", "_WebPDecoder", "Fd", "Ub", "G", "jc", "Qb", "qb", "nd", "pd", "xb", "Ca", "Ka", "oa", "pa", "Jd", "Yc", "Zc", "Qa", "na", "K", "ca", "cb", "Sb", "Ra", "bb", "Vb", "ob", "db", "Gd", "pb", "Hd", "Wb", "Sa", "Xb", "Id", "ra", "Ta", "Yb", "Ha", "Zb", "X", "Mb", "Xa", "$b", "ac", "bc", "xa", "yb", "ud", "hd", "jd", "aa", "eb", "Ia", "cc", "Kd", "Ld", "ec", "Ea", "Md", "Nd", "Od", "Pd", "Qd", "fb", "gb", "hb", "zb", "Ab", "Ja", "Bb", "Rd", "A", "Sd", "ea", "Tc", "Cd", "lb", "Db", "W", "Cb", "S", "RGBA", "kb", "sd", "Td", "Ud", "fd", "ib", "bd", "cd", "Da", "Vd", "T", "Wd", "ba", "ka", "Mc", "Nc", "fc", "Rc", "Xd", "ya", "Kb", "za", "gc", "Ua", "Va", "memory", "Ib", "Jb", "hc", "Oa", "ic", "Aa", "Yd", "Ba", "Wa", "Zd", "$d", "ae", "ta", "Eb", "be", "ga", "ce", "Dc", "lc", "mc", "nc", "de", "ua", "ub", "ha", "xc", "vc", "md", "Ya", "oc", "C", "pc", "ee", "E", "B", "z", "Q", "fe", "qc", "Fb", "rc", "ge", "va", "Ma", "sc", "Gb", "tc", "uc", "Hb", "wc", "yc", "zc", "qd", "rd", "ia", "tb", "he", "$", "Pb", "wd", "xd", "vb", "ie", "Ac", "Bc", "je", "Cc", "VP8LMapColor32b", "ke", "VP8LMapColor8b", "le", "rb", "Oc", "R", "me", "qa", "Y", "la", "ja", "Fa", "ne", "sb", "La", "Za", "$a", "jb", "mb", "oe", "pe", "nb", "qe", "Pa", "Ga", "Na", "Ec", "se", "Fc", "ue", "yd", "td", "Rb", "ve", "we", "Lb", "Gc", "xe", "Wc", "Xc", "ye", "Pc", "wb", "Tb", "zd", "vd", "od", "ld", "dd", "Hc", "ze", "Sc", "Qc", "ad", "Ob", "Ad", "Dd", "Ae", "Nb", "Ic", "Be", "Kc", "ed", "$c", "Jc", "Bd", "gd", "Uc", "Vc", "put", "Ce", "De", "Ee", "Fe", "Ge", "He", "Ie", "Lc", "Te", "Pe", "Qe", "Re", "Se", "Oe", "ef", "wf", "pf", "qf", "rf", "of", "tf", "uf", "gf", "df", "hf", "kf", "jf", "lf", "nf", "mf", "xf", "yf", "vf", "Af", "zf", "Bf", "kd", "bf", "cf", "Ue", "Ve", "Ye", "Ze", "We", "Xe", "$e", "af", "Cf", "Df", "Ef", "Gf", "Hf", "Le", "If", "Jf", "Kf", "Lf", "Mf", "Nf", "Of", "Pf", "Predictor0", "Predictor1", "Predictor2", "Predictor3", "Predictor4", "Predictor5", "Predictor6", "Predictor7", "Predictor8", "Predictor9", "Predictor10", "Predictor11", "Predictor12", "Predictor13", "PredictorAdd0", "PredictorAdd1", "PredictorAdd2", "ColorIndexInverseTransform", "MapARGB", "VP8LColorIndexInverseTransformAlpha", "MapAlpha", "VP8LPredictorsAdd", "VP8LPredictors", "VP8LPredictorsAdd_C", "VP8LPredictors_C", "Ke", "UpsampleRgbLinePair", "UpsampleBgrLinePair", "UpsampleRgbaLinePair", "UpsampleBgraLinePair", "UpsampleArgbLinePair", "UpsampleRgba4444LinePair", "UpsampleRgb565LinePair", "Qf", "Ne", "WebPDecodeRGBA", "GetTag", "data_off", "GetLE16", "GetLE24", "GetLE32", "webpdecoder", "imagearray", "src_off", "alpha_chunk", "alpha_size", "alpha_offset", "fourcc", "payload_size", "payload_size_padded", "src_off_", "offset_x", "temp", "rgba", "postPutResources", "__metadata__", "utf8Metadata", "rawXml", "namespaceUri", "xmpmetaBeginning", "metadataObjectNumber", "_ctx", "ContextLayer", "ctx", "isStrokeTransparent", "strokeOpacity", "strokeStyle", "fillStyle", "isFillTransparent", "fillOpacity", "textBaseline", "lineJoin", "lineCap", "globalCompositeOperation", "globalAlpha", "clip_path", "currentPoint", "miterLimit", "lastPoint", "lineDashOffset", "lineDash", "margin", "prevPageLastElemOffset", "ignoreClearRect", "Context2D", "parentNode", "_pdf", "_pageWrapXEnabled", "_pageWrapYEnabled", "_posX", "_posY", "_autoPaging", "lastBreak", "pageBreaks", "_ctxStack", "getRGBA", "_fontFaceMap", "_cachedFontList", "_fontFaces", "fontFamily", "fontSizeUnit", "parsed", "remaining", "fontFaces", "fontFaceMap", "currentFontMap", "currentFontMapString", "convertedFontFaces", "fontMap", "normalized", "rules", "defaultFontFamily", "genericFontFamilies", "ordering", "jsPdfFontName", "fallbackFonts", "arial", "Arial", "verdana", "Verdana", "helvetica", "Helvetica", "getLineDash", "pathPreProcess", "beginPath", "closePath", "pathBegin", "quadraticCurveTo", "cpx", "cpy", "pt0", "bezierCurveTo", "cp1x", "cp1y", "cp2x", "cp2y", "arc", "radius", "startAngle", "endAngle", "counterclockwise", "isIdentity", "xpt", "x_radPt", "x_radPt0", "pow", "arcTo", "fillRect", "strokeRect", "clearRect", "doStackPush", "tmpPageNumber", "ctxStack", "doStackPop", "isCanvasGradient", "getColor", "fillText", "degs", "rad2deg", "putText", "strokeText", "measureText", "txtWidth", "scalewidth", "scaleheight", "setTransform", "hasMargins", "drawImage", "img", "swidth", "sheight", "imageProperties", "factorX", "factorY", "clipFactorX", "clipFactorY", "decomposedTransformationMatrix", "xRect", "autoPaging", "clipPath", "pageArray", "getPagesByPath", "sortPages", "pageWidthMinusMargins", "topMargin", "firstPageHeight", "pageHeightMinusMargins", "previousPageHeightSum", "tmpPaths", "pathPositionRedo", "drawPaths", "tmpRect", "needsClipping", "yOffset", "rectOfQuadraticCurve", "getQuadraticCurveBoundary", "rectOfBezierCurve", "getBezierCurveBoundary", "paths", "isClip", "oldLineWidth", "tmpPath", "origPath", "xPath", "delta", "moves", "begin", "deltas", "iii", "began", "arcs", "drawArc", "drawLine", "drawLines", "doClip", "getBaseline", "getTextBottom", "yBaseLine", "createLinearGradient", "canvasGradient", "colorStops", "addColorStop", "createPattern", "createRadialGradient", "includeMove", "curves", "createArc", "curve", "doMove", "drawCurve", "oldSize", "textDimensions", "yTop", "baselineRect", "textBounds", "pageHeightMinusBottomMargin", "pageWidthMinusRightMargin", "textBoundsOnPage", "doSlice", "croppedText", "baseLineRectOnPage", "prevX", "prevY", "anticlockwise", "twoPi", "halfPi", "totalAngle", "sgn", "createSmallArc", "q1", "q2", "k2", "ar", "cos_ar", "sin_ar", "ey", "midX1", "midY1", "midX2", "midY2", "resultX1", "resultX2", "resultY1", "resultY2", "ax", "ay", "bx", "by", "cx", "cy", "dx", "dy", "px", "py", "qx", "qy", "minx", "miny", "maxx", "maxy", "tobx", "toby", "tocx", "tocy", "todx", "tody", "prevLineDash", "nextLineDash", "ASCII85Encode", "ASCII85Decode", "ASCIIHexEncode", "ASCIIHexDecode", "regexCheckIfHex", "RegExp", "FlateEncode", "origData", "filterChain", "sync", "request", "sanitizeUnicode", "dataLength", "charArray", "StringFromCharCode", "overrideMimeType", "responseText", "allowFsRead", "loadImageFile", "loadHtml2Canvas", "import", "catch", "then", "html2canvas", "default", "loadDomPurify", "dompurify", "objType", "tagName", "opt", "el", "className", "innerHTML", "sanitize", "cloneNode", "javascriptEnabled", "nodeValue", "nextSibling", "addEventListener", "scrollTop", "scrollLeft", "Worker", "root", "convert", "template", "setProgress", "promise", "__proto__", "prop", "container", "overlay", "progress", "val", "enableLinks", "backgroundColor", "from", "to", "toContainer", "toCanvas", "toImg", "toPdf", "thenList", "setPageSize", "containerCSS", "display", "windowWidth", "clientWidth", "scrollWidth", "offsetWidth", "source", "scrollHeight", "offsetHeight", "clientHeight", "overflow", "zIndex", "clear", "border", "float", "prereqs", "contains", "onrendered", "toContext2d", "async", "allowTaint", "scrollX", "scrollY", "imageTimeout", "logging", "proxy", "removeContainer", "foreignObjectRendering", "useCORS", "windowHeight", "imgData", "outputImg", "outputPdf", "doCallback", "fns", "setMargin", "cbk", "toPx", "getPageSize", "inner", "ratio", "updateProgress", "onFulfilled", "onRejected", "thenCore", "thenBase", "selfPromise", "returnVal", "thenExternal", "catchExternal", "msg", "using", "export", "run", "format_as_string", "pageHeight", "err", "worker", "javascript", "jsNamesObj", "jsJsObj", "namesOid", "outline", "children", "render", "createNamedDestinations", "totalPages", "dests", "info", "names2Oid", "makeRef", "add", "item", "genIds_r", "renderRoot", "renderItems", "objStart", "count_r", "objEnd", "makeString", "markers", "processJPEG", "blockLength", "numcomponents", "processPNG", "decodedPng", "decodePng", "checkCrc", "decodedPalette", "needSMask", "mask", "alphaBytes", "hasSemiTransparency", "maskLength", "_decodedPalette$i", "_slicedToArray", "totalPixels", "dataView", "paletteIndex", "alpha", "colorBytes", "colorChannels", "totalColorSamples", "totalAlphaSamples", "colorByteLen", "alphaByteLen", "colorView", "alphaView", "pixelStartIndex", "alphaValue", "sampleCount", "outView", "byteOffset", "_result", "processGIF89A", "rawImageData", "processGIF87A", "fileSize", "getUint32", "reserved", "headerSize", "getInt32", "planes", "bitPP", "rawSize", "hr", "vr", "importantColors", "quad", "bitn", "bit1", "xlen", "mode", "rgb", "bit4", "before", "after", "bit8", "bit15", "dif_w", "_1_5", "bit16", "_1_6", "bit24", "bit32", "getData", "processBMP", "processWEBP", "processRGBA", "imagePixels", "rgbOut", "alphaOut", "outIndex", "alphaIndex", "rgbData", "setLanguage", "langCode", "languageSettings", "isSubscribed", "sq", "an", "hy", "as", "ast", "az", "eu", "bn", "br", "bg", "my", "zh", "co", "cr", "cs", "nl", "en", "eo", "et", "fo", "fj", "fi", "fr", "fy", "fur", "gl", "gu", "ht", "hi", "hu", "is", "iu", "it", "kn", "ks", "kk", "km", "ky", "tlh", "ko", "lv", "lt", "mk", "ms", "ml", "mt", "mi", "mr", "mo", "nv", "ng", "no", "nn", "or", "om", "pl", "qu", "rm", "ro", "ru", "sz", "sg", "si", "sr", "sk", "sl", "so", "es", "sw", "sv", "tt", "te", "th", "tig", "ts", "tn", "tr", "tk", "uk", "hsb", "ur", "vi", "vo", "xh", "ji", "zu", "languageCode", "char_code", "widths", "Unicode", "widthsFractionOf", "fof", "kerning", "kerningFractionOf", "kerningValue", "prior_char_code", "default_char_width", "widthOfString", "widthOfGlyph", "characterToGlyph", "widths_array", "firstLineMaxLen", "maxLen", "answer", "workingLen", "startOfLine", "maxlen", "lineIndent", "postProcess", "line_length", "textIndent", "separator_length", "current_word_length", "spaceCharWidth", "pad", "wrds", "wrd", "idx", "ln", "paragraphs", "fsize", "newOptions", "fontUnit_maxLen", "__fontmetrics__", "decoded", "encoded", "mappingUncompress", "mappingCompress", "keystring", "valuestring", "numberprefix", "vals", "uncompress", "stringparts", "parent_key_pair", "sign", "activeobject", "parentchain", "keyparts", "valueparts", "datalen", "WinAnsiEncoding", "encodings", "Courier", "fontMetrics", "Symbol", "ZapfDingbats", "metrics", "file", "existsFileInVFS", "getFileFromVFS", "TTFFont", "glyIdsUsed", "addSvgAsImage", "svg", "ignoreMouse", "ignoreAnimation", "ignoreDimensions", "doc", "canvg", "fromString", "putTotalPages", "pageExpression", "replaceExpression", "totalNumberOfPages", "pdfEscape16", "viewerPreferences", "doReset", "configuration", "isValid", "method", "configurationTemplate", "HideToolbar", "defaultValue", "explicitSet", "valueSet", "HideMenubar", "HideWindowUI", "FitWindow", "CenterWindow", "DisplayDocTitle", "NonFullScreenPageMode", "Direction", "ViewArea", "ViewClip", "PrintArea", "PrintClip", "PrintScaling", "Duplex", "PickTrayByPDFSize", "PrintPageRange", "NumCopies", "configurationKeys", "rangeArray", "arrayContainsElement", "iterator", "viewerpreferences", "vPref", "pdfDict", "addMetadata", "rawXmlOrNamespaceUri", "padz", "toUnicode", "toUnicodeCmap", "codes", "range", "unicode", "unicodeMap", "_i", "_len", "pdfOutput", "subset", "pdfOutput2", "fontTable", "cmap", "fontDescriptor", "bbox", "stemV", "italicAngle", "ascender", "decender", "capHeight", "DescendantFont", "hmtx", "unitsPerEm", "utf8TextFunction", "cmapConfirm", "strText", "codeMap", "parms", "_initializeVFS", "vFS", "addFileToVFS", "filecontent", "__bidiEngine__", "_hasUbatB", "_hasUbatS", "_isInVisual", "_isInRtl", "_isOutVisual", "_isOutRtl", "_isSymmetricSwapping", "_UNICODE_TYPES", "_bidiUnicodeTypes", "_STATE_TABLE_LTR", "_STATE_TABLE_RTL", "_TYPE_NAMES_MAP", "EN", "AN", "_UNICODE_RANGES_MAP", "_SWAP_TABLE", "_LTR_RANGES_REG_EXPR", "_lastArabic", "_dir", "_getCharType", "rangeIdx", "_isContextualDirRtl", "charType", "_resolveCharType", "chars", "types", "resolvedTypes", "wType", "nType", "cType", "rtlCandidate", "_invertString", "sourceToTargetMap", "levels", "_computeLevels", "hiLevel", "params", "action", "newLevel", "prevState", "condPos", "newState", "stateTable", "_invertByLevel", "high", "end", "low", "_reorder", "DIR_RTL", "doBidiReorder", "isSymmetricSwappingOrig", "isInputVisual", "isOutputVisual", "isInputRtl", "isOutputRtl", "isSymmetricSwapping", "bidiEngine", "Data", "readString", "Subset", "registerTTF", "directory", "Directory", "HeadTable", "NameTable", "CmapTable", "hhea", "HheaTable", "maxp", "MaxpTable", "HmtxTable", "post", "PostTable", "os2", "OS2Table", "loca", "LocaTable", "glyf", "GlyfTable", "exists", "lineGap", "xMin", "yMin", "xMax", "yMax", "raw", "_ref", "_results", "italic_angle", "xHeight", "familyClass", "isSerif", "isScript", "isFixedPitch", "character", "glyph", "forGlyph", "advance", "includeGap", "gap", "Table", "readByte", "readUInt32", "writeUInt32", "readInt32", "int", "writeInt32", "readUInt16", "writeUInt16", "readInt16", "writeInt16", "ret", "writeString", "readShort", "writeShort", "readLongLong", "writeLongLong", "readInt", "writeInt", "read", "checksum", "scalarType", "tableCount", "searchRange", "entrySelector", "rangeShift", "tables", "tag", "adjustment", "directoryLength", "headOffset", "log2", "tableData", "__slice", "__hasProp", "__extends", "ctor", "__super__", "revision", "checkSumAdjustment", "magicNumber", "created", "modified", "macStyle", "lowestRecPPEM", "fontDirectionHint", "indexToLocFormat", "glyphDataFormat", "CmapEntry", "endCode", "glyphId", "glyphIds", "idDelta", "idRangeOffset", "saveOffset", "segCount", "segCountX2", "startCode", "_j", "_k", "platformID", "encodingID", "language", "charmap", "charMap", "diff", "endCodes", "glyphIDs", "indexes", "last", "nextID", "old", "rangeOffsets", "startCodes", "startGlyph", "subtable", "_l", "_len1", "_len2", "_len3", "_len4", "_len5", "_len6", "_len7", "_m", "_n", "_name", "_o", "_p", "_q", "new", "maxGlyphID", "LN2", "advanceWidthMax", "minLeftSideBearing", "minRightSideBearing", "xMaxExtent", "caretSlopeRise", "caretSlopeRun", "caretOffset", "metricDataFormat", "numberOfMetrics", "averageCharWidth", "weightClass", "widthClass", "ySubscriptXSize", "ySubscriptYSize", "ySubscriptXOffset", "ySubscriptYOffset", "ySuperscriptXSize", "ySuperscriptYSize", "ySuperscriptXOffset", "ySuperscriptYOffset", "yStrikeoutSize", "yStrikeoutPosition", "panose", "charRange", "vendorID", "selection", "firstCharIndex", "lastCharIndex", "ascent", "winAscent", "winDescent", "codePageRange", "defaultChar", "breakChar", "maxContext", "numberOfGlyphs", "underlinePosition", "underlineThickness", "minMemType42", "maxMemType42", "minMemType1", "maxMemType1", "glyphNameIndex", "names", "_results1", "numGlyphs", "NameEntry", "languageID", "entries", "stringOffset", "strings", "nameID", "copyright", "fontSubfamily", "uniqueSubfamily", "postscriptName", "trademark", "manufacturer", "designer", "description", "vendorUrl", "designerUrl", "license", "licenseUrl", "preferredFamily", "preferredSubfamily", "compatibleFull", "sampleText", "maxPoints", "maxContours", "maxCompositePoints", "maxComponentContours", "maxZones", "maxTwilightPoints", "maxStorage", "maxFunctionDefs", "maxInstructionDefs", "maxStackElements", "maxSizeOfInstructions", "maxComponentElements", "maxComponentDepth", "lsbCount", "lsb", "leftSideBearings", "_ref1", "cache", "glyphFor", "numberOfContours", "lengthOf", "CompoundGlyph", "SimpleGlyph", "glyphs", "mapping", "old2new", "compound", "glyphOffsets", "activeGlyphs", "glyfPtr", "listGlyf", "newLocaTable", "unicodes", "next", "generateCmap", "roman", "unicodeCmap", "glyphsFor", "additionalIDs", "glyID", "ids", "new2old", "newIDs", "nextGlyphID", "oldID", "oldIDs", "isString", "getUTCFullYear", "getUTCMonth", "getUTCDate", "getUTCHours", "getUTCMinutes", "getUTCSeconds", "width", "height", "context", "text", "color", "fontStyle", "O", "fontSize", "import_react", "text", "x", "y", "styles", "k", "fontSize", "lineHeight", "DocHandler", "c", "_a", "_b", "fontStyle", "color", "size", "width", "height", "pageSize", "extendStatics", "d", "b", "p", "__extends", "__extends", "HtmlRowInput", "name", "text", "styles", "a", "b", "cursor", "_a", "_b", "style", "window", "backgroundColor", "padding", "borderColor", "fontStyle", "rgba", "color", "alpha", "n", "i", "cellStyles", "global", "document", "options", "assign", "s", "s2", "s3", "index", "d", "prop", "_e", "margin", "theme", "HookData", "CellHookData", "column", "Table", "handlers", "Row", "height", "lineHeight", "Cell", "y", "x", "Column", "max", "minWidth", "left", "width", "x2", "y2", "x1", "y1", "jsPDF", "c", "jsPDF", "_a", "React", "fill", "React", "i", "index", "text", "prefix", "name", "ListContainer", "TitleWrapper", "ListCount", "React", "Button", "index", "import_react", "init_Button", "import_react", "import_isEqual", "isEqual", "React", "index", "ListContainer", "TitleWrapper", "RightHeaderContainer", "React", "Button", "import_react", "versionIDs", "index", "getOptions", "React", "Select", "FiltersWrapper", "getWorldGroups", "React", "import_react", "init_Button", "React", "Button", "index", "import_react", "import_react", "init_Close", "import_react", "React", "Grid", "Wrapper", "text", "React", "i", "import_react", "import_react", "init_Tooltip", "import_react", "React", "import_react", "React", "Wrapper", "TooltipWrapper", "React", "i", "Tooltip", "height", "Label", "import_react", "import_react", "init_Tooltip", "React", "Tooltip", "ContentWrapper", "HeaderContainer", "Header", "ListWrapper", "timestampsList", "React", "index", "style", "SubTitle", "text", "React", "import_react", "import_react", "import_react", "import_react", "init_Close", "ExitButton", "React", "Video", "i", "bottom", "React", "Wrapper", "VideoWrapper", "React", "Grid", "SubTitle", "text", "React", "i", "videoID", "import_react", "import_react", "import_react", "BarContainer", "Bar", "second", "React", "Row", "Title", "Cell", "React", "e", "time", "b", "a", "import_isEqual", "isEqual", "React", "Checkbox", "import_react", "import_react", "FilledBox", "TooltipWrapper", "LegendText", "LegendWrapper", "React", "height", "i", "Tooltip", "SubTitle", "text", "React", "import_react", "SubTitle", "text", "React", "text", "React", "import_react", "import_react", "HeaderContainer", "Cell", "Header", "date", "name", "React", "import_react", "import_react", "import_react", "init_Tooltip", "Container", "React", "Tooltip", "answers", "React", "index", "import_react", "AnswersContainer", "AnswerWrapper", "React", "import_react", "import_react", "React", "import_react", "Image", "FullScreenImage", "React", "e", "Container", "ImageThumbnail", "IconWrapper", "React", "FullScreenImage", "import_react", "import_react_device_detect", "dimensionsPhotoContainer", "Container", "ImageThumbnail", "IconContainer", "IconWrapper", "TimerWrapper", "OverlayContainer", "duration", "text", "thumbnailURL", "subtitlesURL", "i", "React", "import_react", "AnswersContainer", "AnswerWrapper", "React", "TitleWrapper", "DividerWrapper", "description", "totalTimeSpent", "timestamp", "text", "prev", "step", "React", "import_react", "FiltersWrapper", "React", "init_Button", "import_react_device_detect", "React", "Header", "date", "index", "Button", "React", "Switch", "import_react", "import_react", "init_Button", "init_Tooltip", "Container", "ErrorWrapper", "InfoWrapper", "React", "Container", "e", "text", "Tooltip", "InfoWrapper", "Button", "ErrorWrapper", "init_Button", "import_react", "React", "groupNameByID", "Select", "index", "import_react", "open", "options", "React", "Autocomplete", "_", "import_react", "Container", "React", "Container", "Header", "Title", "React", "Button", "import_react", "import_react", "init_Tooltip", "import_react_device_detect", "Container", "Divider", "Title", "date", "duration", "time", "hours", "minutes", "React", "name", "Tooltip", "import_react_device_detect", "React", "index", "import_react", "import_react", "React", "import_react", "React", "import_react", "React", "import_react", "React", "import_react", "React", "RegionContainer", "InformationContainer", "InformationContent", "Row", "InformationValue", "React", "ListCount", "CountContainer", "React", "Button", "TitleWrapper", "index", "PeerItem", "WorldItem", "import_react", "init_Button", "HeaderContainer", "React", "index", "PeerItem", "Checkbox", "Button", "import_react", "import_react", "init_Close", "import_react", "Container", "TitleContainer", "Divider", "Title", "InformationContainer", "InformationValue", "WrapperRenameIcon", "HoverableValue", "React", "Container", "TitleContainer", "Divider", "Title", "InformationContainer", "InformationValue", "HoverableValue", "WrapperRenameIcon", "init_Button", "import_lodash", "init_Tooltip", "Header", "InformationContainer", "LabelWithTooltip", "React", "_", "domain", "DataSourcePeers", "Button", "Header", "InformationContainer", "LabelWithTooltip", "Tooltip", "import_react", "import_react", "import_react", "Title", "React", "Container", "Header", "Wrapper", "React", "index", "style", "getPeerGroups", "groups", "React", "import_react", "init_Table", "init_TableBody", "init_TableCell", "init_TableHead", "init_TableRow", "import_react", "init_TableRow", "init_TableCell", "import_react", "React", "time", "Tooltip", "getTimestampOfRandomID", "React", "e", "TitleContainer", "React", "filters", "page", "import_react", "React", "RightSection", "React", "DataSourcePeers", "import_react", "import_react", "React", "import_react", "init_Tooltip", "React", "import_react", "init_Tooltip", "import_react", "React", "init_Button", "Cell", "SubTitleWrapper", "Icon", "index", "Tooltip", "Button", "Cell", "Tooltip", "init_Tooltip", "React", "import_react", "React", "import_react", "init_Button", "init_Tooltip", "React", "init_Close", "Container", "e", "x", "y", "context", "width", "height", "i", "r", "g", "b", "a", "buffer", "import_react", "init_Button", "date", "signature", "signatory", "index", "React", "Button", "HeaderContainer", "Cell", "TitleContainer", "ValueWrapper", "signatureAttempt", "newSignature", "Tooltip", "Button", "import_react", "Content", "size", "React", "Cell", "Tooltip", "Cell", "HeaderContainer", "React", "getRowHeight", "index", "cursor", "width", "i", "HeaderContainer", "style", "worldID", "sequenceID", "peerID", "init_Button", "import_react", "React", "import_lodash", "SelectWrapper", "ContentWrapper", "Option", "CheckboxWrapper", "ArrowWrapper", "Line", "TextWrapper", "_", "index", "left", "right", "i", "FiltersContainer", "worldOptions", "sequenceOptions", "options", "index", "i", "React", "import_react", "import_react", "import_react", "Menu", "React", "Container", "Title", "sequenceTitle", "React", "e", "Menu", "init_Button", "Header", "Wrapper", "Container", "i", "e", "React", "index", "Button", "SkillsMatrixViewType", "Container", "name2", "index", "React", "Button", "React", "Switch", "React", "isEqual", "a", "b", "import_react", "import_isEqual", "React", "isEqual", "import_react", "import_isEqual", "React", "isEqual", "a", "b", "import_react", "import_isEqual", "import_react", "init_Tooltip", "React", "Tooltip", "Container", "ContainerTitle", "React", "isEqual", "Header", "Row", "FiltersWrapper", "Container", "Body", "React", "import_react", "React", "a", "b", "name", "serialize", "serialize", "i", "WorldAttribute", "serialize", "length", "i", "i", "attempt", "sequenceID", "index", "keys", "log", "i", "log", "serialize", "buffer", "keys", "step", "serialize", "serialize", "import_react", "import_react", "import_react", "React", "Accordion", "Wrapper", "Title", "ListWrapper", "React", "Accordion", "index", "UtilsInsights", "i", "import_react", "init_Button", "ContentWrapper", "text", "React", "Button", "React", "index", "import_react", "React", "index", "import_react", "LineSeparator", "MessageWrapper", "React", "import_react", "React", "index", "Header", "Title", "ContentContainer", "FiltersWrapper", "getPeerWorldIDs", "worldSequenceAttemptIDs", "React", "React", "name", "serialize", "contentType", "import_react", "Wrapper", "React", "token", "import_react", "escape", "html", "encode", "unescape", "_", "n", "caret", "name", "e", "match", "offset", "i", "c", "l", "b", "lexer", "text", "token", "node", "options", "top", "line", "t", "j", "k", "start", "mangle", "smartypants", "rules", "next", "block", "parser", "values", "args", "ret", "walkTokens", "err", "src", "silent", "use", "init_Close", "init_Button", "Wrapper", "HeaderContainer", "Title", "CloseWrapper", "ContentWrapper", "Dot", "React", "i", "Button", "index", "AnnouncementAttribute", "serialize", "Wrapper", "React", "React", "DataSourcePeers", "init", "_", "token", "changeLanguage", "ThemeProvider_default", "Wrapper", "Switch", "DataSourcePeers", "serialize", "domain", "DIALOG_WIDTH", "Wrapper", "Inner", "LangSwitcher", "LogoWrapper", "Content", "SelectLanguageContainer", "DataSourcePeers", "changeLanguage", "token", "text", "ThemeProvider_default", "Wrapper", "Inner", "LangSwitcher", "SelectLanguageContainer", "Select", "index", "LogoWrapper", "Content", "e", "token", "serialize", "React", "React", "import_react", "React", "init_Button", "React", "init_Button", "Wrapper", "Text", "index", "i", "e", "Button", "import_react", "Container", "LoadingWrapper", "React", "import_react", "import_react", "React", "import_react", "React", "import_react", "React", "init_Tooltip", "init_Button", "Container", "ButtonWrapper", "React", "e", "Tooltip", "Button", "import_react", "React", "React", "import_react", "React", "Container", "init_Tooltip", "IconWrapper", "InformationContainer", "React", "color", "Tooltip", "Hide", "Container", "TitleContainer", "Button", "DeepSightConnect", "React", "React", "React", "import_react", "init_Close", "init_Tooltip", "Container", "IconsContainer", "IconWrapper", "getNodeName", "e", "name", "Tooltip", "Hide", "import_lodash", "ListContainer", "node", "i", "style", "open", "index", "React", "init_Button", "init_Tooltip", "Wrapper", "Button", "Tooltip", "init_Button", "import_react", "init_Button", "import_react", "import_react", "import_server", "getEngine", "buffer", "stream", "size", "margin", "fontSize", "w", "h", "x", "y", "React", "init_Tooltip", "Wrapper", "Container", "Title", "index", "e", "Tooltip", "init_Button", "Wrapper", "React", "index", "Button", "import_react", "InfoContainer", "Cell", "React", "Select", "index", "ContentContainer", "RightContainer", "React", "index", "ContentContainer", "Select", "Button", "RightContainer", "init_Tooltip", "React", "Tooltip", "Button", "React", "import_react", "import_react", "React", "node", "import_client", "Wrapper", "Inner", "root", "ThemeProvider_default", "e", "init_Button", "import_react", "init_Close", "import_isEqual", "Wrapper", "IconContainer", "IconWrapper", "React", "isEqual", "tags", "e", "Button", "import_react", "PLACEHOLDER_IMAGE", "React", "e", "tags", "document", "_", "Wrapper", "React", "style", "index", "import_react", "import_isEqual", "React", "isEqual", "import_react", "Container", "React", "import_react", "import_react", "init_Tooltip", "import_react", "React", "React", "import_react", "init_Tooltip", "init_Close", "import_react", "Tag", "React", "ThumbnailWrapper", "TitleWrapper", "OptionsContainer", "React", "e", "Tag", "OptionsContainer", "Tooltip", "ThumbnailWrapper", "TitleWrapper", "React", "init_Button", "ThumbnailWrapper", "Button", "React", "init_Button", "PopoverTitle", "CheckboxWrapper", "index", "Select", "Button", "import_lodash", "HeaderContainer", "Title", "EmptyListMessage", "DefaultVideoTags", "style", "index", "ThumbnailWrapper", "e", "videoID", "height", "width", "React", "init_Button", "ImgWrapper", "width", "height", "maxWidth", "maxHeight", "e", "Button", "import_react", "React", "Wrapper", "Input", "color", "e", "SubLabel", "InputWrapper", "IconWrapper", "React", "text", "_", "e", "React", "duration", "_", "text", "Tooltip", "import_react", "import_react", "init_Tooltip", "Wrapper", "Container", "ArrowWrapper", "WarningWrapper", "React", "index", "Select", "Tooltip", "init_Tooltip", "React", "_", "text", "Tooltip", "import_react", "init_Tooltip", "Container", "AnswerWrapper", "InputContainer", "React", "text", "i", "index", "_", "Tooltip", "import_react", "init_Button", "import_lodash", "import_react", "r", "i", "e", "t", "n", "a", "o", "l", "e", "t", "n", "r", "u", "d", "i", "a", "o", "s", "c", "f", "p", "m", "h", "g", "_", "v", "y", "MediaWrapper", "OptionButton", "React", "width", "height", "_", "text", "path", "e", "h", "Button", "import_react", "React", "_", "text", "import_react", "LabelWrapper", "InputRow", "ErrorLabel", "React", "_", "text", "e", "init_Button", "Wrapper", "Title", "ButtonsContainer", "React", "i", "index", "Button", "init_Button", "React", "init_Tooltip", "IconButtonContainer", "ThumbnailWrapper", "Tooltip", "e", "HeaderContainer", "Title", "Container", "Content", "CategoriesDefault", "React", "e", "getScale", "document", "_", "Button", "React", "init_Tooltip", "_", "text", "Tooltip", "React", "init_Tooltip", "Container", "InfoIcon", "Tooltip", "React", "React", "init_Tooltip", "FormContainer", "InfoIcon", "TooltipWrapper", "Tooltip", "React", "init_Button", "import_react", "React", "Checkbox", "GridItemWrapper", "GridContainerWrapper", "React", "import_react", "React", "GridItemWrapper", "GridContainerWrapper", "Select", "GridItemWrapper", "GridContainerWrapper", "DataItemListWrapper", "React", "init_Close", "init_Tooltip", "import_react", "React", "IconWrapper", "MessageWrapper", "e", "Tooltip", "IconWrapper", "Button", "MessageWrapper", "init_Button", "Inner", "MainTitle", "DialogButtons", "i", "index", "Button", "import_react", "import_react", "React", "init_Button", "React", "import_react", "import_react", "React", "import_react", "React", "import_react", "React", "React", "UtilsStepRenderer", "isPlaying", "index", "React", "e", "Video", "top", "bottom", "height", "React", "import_react", "React", "React", "init_Tooltip", "import_isEqual", "import_react", "import_react", "React", "init_Tooltip", "Line", "AddIconWrapper", "React", "Tooltip", "WarningWrapper", "IconButton", "StepItem", "text", "_", "e", "index", "_stack", "_error", "_hasError", "warning", "isEqual", "Tooltip", "import_isEqual", "React", "init_Button", "Title", "ProgressSubtitle", "CheckboxWrapper", "Button", "init_Tooltip", "Wrapper", "ListWrapper", "stepID", "StepItem", "index", "e", "isEqual", "Select", "Button", "Tooltip", "React", "import_react", "React", "import_react", "React", "Wrapper", "Handle", "e", "y", "React", "React", "import_react", "import_react", "import_react", "import_react", "React", "import_react", "import_react", "init_Close", "IconContainer", "React", "text", "import_lodash", "init_Tooltip", "Wrapper", "React", "tags", "index", "Tooltip", "import_lodash", "IconsContainer", "SequenceItem", "React", "tags", "_", "init_Button", "import_isEqual", "import_react", "init_Button", "React", "Button", "import_react", "init_Button", "import_isEqual", "FilterContainer", "PopoverTitle", "CheckboxWrapper", "React", "isEqual", "Button", "List", "Button", "FiltersContainer", "React", "isEqual", "index", "style", "SequenceItem", "import_react", "init_Close", "import_react", "init_Button", "React", "_", "Select", "index", "Button", "init_Close", "import_react", "init_Tooltip", "import_react", "init_Button", "React", "index", "Button", "RowContainer", "React", "_stack", "i", "_", "_error", "_hasError", "index", "RowContainer", "Tooltip", "import_react", "init_Button", "init_Tooltip", "TooltipContent", "Icon", "React", "index", "Tooltip", "Button", "import_react", "React", "init_Tooltip", "import_react", "init_Tooltip", "init_Close", "Container", "LevelContainer", "IconContainer", "MAX_LEVEL", "MAX_DIGITS", "React", "Tooltip", "import_react", "init_Close", "init_Tooltip", "FieldWrapper", "InputTextWrapper", "React", "Tooltip", "import_react", "import_react", "init_Button", "React", "char", "e", "Button", "index", "tag", "import_lodash", "Wrapper", "Title", "React", "tags", "_", "InfoContainer", "Header", "Row", "IconContainer", "React", "Tooltip", "import_react", "init_Button", "init_Tooltip", "import_isEqual", "import_react", "init_Button", "init_colors", "Header", "DialogContainer", "Container", "ListContainer", "ListItem", "React", "_", "Checkbox", "Button", "init_Button", "import_react", "React", "Button", "Container", "InfoContainer", "Header", "Row", "RowTitle", "RowValue", "React", "isSequenceLoaded", "Button", "isEqual", "Container", "InfoContainer", "Header", "Row", "RowTitle", "Tooltip", "RowValue", "init_Button", "import_react", "import_react", "React", "import_react", "React", "import_isEqual", "Container", "Header", "TitlesContainer", "Major", "React", "isEqual", "index", "_", "import_react", "React", "Button", "React", "import_react_device_detect", "DataSourcePeers", "ProgressBar", "changeLanguage", "_", "token", "getScale", "getNodeName", "ThemeProvider_default", "DeepSightConnect", "root"]
}
